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

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

%struct.CancelStore = type { %struct.Longtail_BlockStoreAPI }
%struct.Longtail_BlockStoreAPI = type { %struct.Longtail_API, ptr, ptr, ptr, ptr, ptr, ptr, ptr }
%struct.Longtail_API = type { ptr }
%struct.TestAsyncPutBlockComplete = type <{ %struct.Longtail_AsyncPutStoredBlockAPI, ptr, i32, [4 x i8] }>
%struct.Longtail_AsyncPutStoredBlockAPI = type { %struct.Longtail_API, ptr }
%struct.TestAsyncGetExistingContentComplete = type { %struct.Longtail_AsyncGetExistingContentAPI, ptr, i32, ptr }
%struct.Longtail_AsyncGetExistingContentAPI = 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_StoredBlock = type { ptr, ptr, ptr, i32 }
%struct.Longtail_BlockIndex = type { ptr, ptr, ptr, ptr, ptr, ptr }
%struct.Longtail_JobAPI = type { %struct.Longtail_API, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr }
%struct.Longtail_ChunkerAPI = type { %struct.Longtail_API, ptr, ptr, ptr, ptr, ptr }
%struct.Longtail_HashAPI = type { %struct.Longtail_API, ptr, ptr, ptr, ptr, ptr }
%struct.Longtail_CompressionRegistryAPI = type { %struct.Longtail_API, ptr }
%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 }

@.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.273 = external hidden unnamed_addr constant [12 x i8], align 1
@.str.635 = external hidden unnamed_addr constant [4 x i8], align 1
@.str.823 = external hidden unnamed_addr constant [13 x i8], align 1
@_ZZN36Longtail_NestedStoreCancel__TestCase8TestBodyEvE17BLOCK_CHUNK_SIZES = external hidden constant [2 x i32], align 4
@.str.824 = external hidden unnamed_addr constant [79 x i8], align 1
@.str.825 = external hidden unnamed_addr constant [125 x i8], align 1
@.str.826 = external hidden unnamed_addr constant [50 x i8], align 1

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

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

declare void @_Z28jc_test_increment_assertionsv() #2

declare void @_Z21jc_test_set_test_faili(i32 noundef) #2

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

; 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) #3 align 2

declare void @Longtail_DisposeAPI(ptr noundef) #2

declare ptr @Longtail_CreateBlake3HashAPI() #2

declare ptr @Longtail_CreateHPCDCChunkerAPI() #2

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

declare ptr @Longtail_CreateInMemStorageAPI() #2

declare ptr @Longtail_CreateFullCompressionRegistry() #2

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

declare i32 @__gxx_personality_v0(...)

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

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

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

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

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

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

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

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

declare ptr @Longtail_CreateShareBlockStoreAPI(ptr noundef) #2

; Function Attrs: mustprogress uwtable
declare dso_local noundef ptr @_Z15CancelStoreInitP11CancelStore(ptr noundef) #3

; Function Attrs: mustprogress uwtable
define dso_local void @_ZN36Longtail_NestedStoreCancel__TestCase8TestBodyEv(ptr noundef nonnull align 8 dereferenceable(8) %0) unnamed_addr #3 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 %struct.CancelStore, align 8
  %9 = alloca ptr, align 8
  %10 = alloca ptr, align 8
  %11 = alloca ptr, align 8
  %12 = alloca ptr, align 8
  %13 = alloca ptr, align 8
  %14 = alloca ptr, align 8
  %15 = alloca ptr, align 8
  %16 = alloca ptr, align 8
  %17 = alloca ptr, align 8
  %18 = alloca %struct.TestAsyncPutBlockComplete, align 8
  %19 = alloca ptr, align 8
  %20 = alloca i32, align 4
  %21 = alloca i32, align 4
  %22 = alloca i32, align 4
  %23 = alloca i32, align 4
  %24 = alloca i32, align 4
  %25 = alloca [6 x i64], align 16
  %26 = alloca %struct.TestAsyncGetExistingContentComplete, align 8
  %27 = alloca i32, align 4
  %28 = alloca i32, align 4
  %29 = alloca i32, align 4
  store ptr %0, ptr %2, align 8, !tbaa !5
  %30 = load ptr, ptr %2, align 8
  call void @llvm.lifetime.start.p0(i64 8, ptr %3) #5
  %31 = call ptr @Longtail_CreateInMemStorageAPI()
  store ptr %31, ptr %3, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %4) #5
  %32 = call ptr @Longtail_CreateFullCompressionRegistry()
  store ptr %32, ptr %4, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %5) #5
  %33 = call ptr @Longtail_CreateBlake3HashAPI()
  store ptr %33, ptr %5, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %6) #5
  %34 = call ptr @Longtail_CreateHPCDCChunkerAPI()
  store ptr %34, ptr %6, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %7) #5
  %35 = call ptr @Longtail_CreateBikeshedJobAPI(i32 noundef 0, i32 noundef 0)
  store ptr %35, ptr %7, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 64, ptr %8) #5
  call void @llvm.lifetime.start.p0(i64 8, ptr %9) #5
  %36 = call noundef ptr @_Z15CancelStoreInitP11CancelStore(ptr noundef %8)
  store ptr %36, ptr %9, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %10) #5
  %37 = load ptr, ptr %7, align 8, !tbaa !5
  %38 = load ptr, ptr %3, align 8, !tbaa !5
  %39 = call ptr @Longtail_CreateFSBlockStoreAPI(ptr noundef %37, ptr noundef %38, ptr noundef @.str.823, ptr noundef null, i32 noundef 0)
  store ptr %39, ptr %10, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %11) #5
  %40 = load ptr, ptr %7, align 8, !tbaa !5
  %41 = load ptr, ptr %10, align 8, !tbaa !5
  %42 = load ptr, ptr %9, align 8, !tbaa !5
  %43 = call ptr @Longtail_CreateCacheBlockStoreAPI(ptr noundef %40, ptr noundef %41, ptr noundef %42)
  store ptr %43, ptr %11, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %12) #5
  %44 = load ptr, ptr %11, align 8, !tbaa !5
  %45 = load ptr, ptr %4, align 8, !tbaa !5
  %46 = call ptr @Longtail_CreateCompressBlockStoreAPI(ptr noundef %44, ptr noundef %45)
  store ptr %46, ptr %12, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %13) #5
  %47 = load ptr, ptr %12, align 8, !tbaa !5
  %48 = call ptr @Longtail_CreateLRUBlockStoreAPI(ptr noundef %47, i32 noundef 3)
  store ptr %48, ptr %13, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %14) #5
  %49 = load ptr, ptr %13, align 8, !tbaa !5
  %50 = call ptr @Longtail_CreateShareBlockStoreAPI(ptr noundef %49)
  store ptr %50, ptr %14, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %15) #5
  %51 = load ptr, ptr %5, align 8, !tbaa !5
  %52 = call noundef ptr @_ZL19GenerateStoredBlockP16Longtail_HashAPIjPKj(ptr noundef %51, i32 noundef 2, ptr noundef @_ZZN36Longtail_NestedStoreCancel__TestCase8TestBodyEvE17BLOCK_CHUNK_SIZES)
  store ptr %52, ptr %15, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %16) #5
  %53 = load ptr, ptr %5, align 8, !tbaa !5
  %54 = call noundef ptr @_ZL19GenerateStoredBlockP16Longtail_HashAPIjPKj(ptr noundef %53, i32 noundef 2, ptr noundef @_ZZN36Longtail_NestedStoreCancel__TestCase8TestBodyEvE17BLOCK_CHUNK_SIZES)
  store ptr %54, ptr %16, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %17) #5
  %55 = load ptr, ptr %5, align 8, !tbaa !5
  %56 = call noundef ptr @_ZL19GenerateStoredBlockP16Longtail_HashAPIjPKj(ptr noundef %55, i32 noundef 2, ptr noundef @_ZZN36Longtail_NestedStoreCancel__TestCase8TestBodyEvE17BLOCK_CHUNK_SIZES)
  store ptr %56, ptr %17, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 32, ptr %18) #5
  call void @_ZN25TestAsyncPutBlockCompleteC2Ev(ptr noundef nonnull align 8 dereferenceable(28) %18)
  br label %57

57:                                               ; preds = %1
  %58 = invoke noundef ptr @_ZL19jc_test_get_fixturev()
          to label %59 unwind label %81

59:                                               ; preds = %57
  %60 = getelementptr inbounds %struct.jc_test_fixture, ptr %58, i32 0, i32 11
  %61 = load i32, ptr %60, align 8
  %62 = and i32 %61, -16776961
  %63 = or i32 %62, 1795840
  store i32 %63, ptr %60, align 8
  %64 = invoke noundef ptr @_ZL19jc_test_get_fixturev()
          to label %65 unwind label %81

65:                                               ; preds = %59
  %66 = getelementptr inbounds %struct.jc_test_fixture, ptr %64, i32 0, i32 4
  store ptr @.str.3, ptr %66, align 8, !tbaa !9
  invoke void @_Z28jc_test_increment_assertionsv()
          to label %67 unwind label %81

67:                                               ; preds = %65
  call void @llvm.lifetime.start.p0(i64 4, ptr %21) #5
  store i32 0, ptr %21, align 4, !tbaa !14
  call void @llvm.lifetime.start.p0(i64 4, ptr %22) #5
  %68 = load ptr, ptr %10, align 8, !tbaa !5
  %69 = getelementptr inbounds %struct.Longtail_BlockStoreAPI, ptr %68, i32 0, i32 1
  %70 = load ptr, ptr %69, align 8, !tbaa !15
  %71 = load ptr, ptr %10, align 8, !tbaa !5
  %72 = load ptr, ptr %15, align 8, !tbaa !5
  %73 = getelementptr inbounds %struct.TestAsyncPutBlockComplete, ptr %18, i32 0, i32 0
  %74 = invoke noundef i32 %70(ptr noundef %71, ptr noundef %72, ptr noundef %73)
          to label %75 unwind label %85

75:                                               ; preds = %67
  store i32 %74, ptr %22, align 4, !tbaa !14
  %76 = 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) %21, ptr noundef nonnull align 4 dereferenceable(4) %22, ptr noundef @.str.46, ptr noundef @.str.824, ptr noundef null)
          to label %77 unwind label %85

77:                                               ; preds = %75
  %78 = icmp eq i32 %76, 0
  call void @llvm.lifetime.end.p0(i64 4, ptr %22) #5
  call void @llvm.lifetime.end.p0(i64 4, ptr %21) #5
  br i1 %78, label %79, label %89

79:                                               ; preds = %77
  invoke void @_Z21jc_test_set_test_faili(i32 noundef 1)
          to label %80 unwind label %81

80:                                               ; preds = %79
  store i32 1, ptr %23, align 4
  br label %325

81:                                               ; preds = %108, %101, %95, %93, %91, %79, %65, %59, %57
  %82 = landingpad { ptr, i32 }
          cleanup
  %83 = extractvalue { ptr, i32 } %82, 0
  store ptr %83, ptr %19, align 8
  %84 = extractvalue { ptr, i32 } %82, 1
  store i32 %84, ptr %20, align 4
  br label %330

85:                                               ; preds = %75, %67
  %86 = landingpad { ptr, i32 }
          cleanup
  %87 = extractvalue { ptr, i32 } %86, 0
  store ptr %87, ptr %19, align 8
  %88 = extractvalue { ptr, i32 } %86, 1
  store i32 %88, ptr %20, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %22) #5
  call void @llvm.lifetime.end.p0(i64 4, ptr %21) #5
  br label %330

89:                                               ; preds = %77
  br label %90

90:                                               ; preds = %89
  br label %91

91:                                               ; preds = %90
  invoke void @_ZN25TestAsyncPutBlockComplete4WaitEv(ptr noundef nonnull align 8 dereferenceable(28) %18)
          to label %92 unwind label %81

92:                                               ; preds = %91
  br label %93

93:                                               ; preds = %92
  %94 = invoke noundef ptr @_ZL19jc_test_get_fixturev()
          to label %95 unwind label %81

95:                                               ; preds = %93
  %96 = getelementptr inbounds %struct.jc_test_fixture, ptr %94, i32 0, i32 11
  %97 = load i32, ptr %96, align 8
  %98 = and i32 %97, -16776961
  %99 = or i32 %98, 1796352
  store i32 %99, ptr %96, align 8
  %100 = invoke noundef ptr @_ZL19jc_test_get_fixturev()
          to label %101 unwind label %81

101:                                              ; preds = %95
  %102 = getelementptr inbounds %struct.jc_test_fixture, ptr %100, i32 0, i32 4
  store ptr @.str.3, ptr %102, align 8, !tbaa !9
  invoke void @_Z28jc_test_increment_assertionsv()
          to label %103 unwind label %81

103:                                              ; preds = %101
  call void @llvm.lifetime.start.p0(i64 4, ptr %24) #5
  store i32 0, ptr %24, align 4, !tbaa !14
  %104 = getelementptr inbounds %struct.TestAsyncPutBlockComplete, ptr %18, i32 0, i32 2
  %105 = 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) %24, ptr noundef nonnull align 4 dereferenceable(4) %104, ptr noundef @.str.46, ptr noundef @.str.273, ptr noundef null)
          to label %106 unwind label %110

106:                                              ; preds = %103
  %107 = icmp eq i32 %105, 0
  call void @llvm.lifetime.end.p0(i64 4, ptr %24) #5
  br i1 %107, label %108, label %114

108:                                              ; preds = %106
  invoke void @_Z21jc_test_set_test_faili(i32 noundef 1)
          to label %109 unwind label %81

109:                                              ; preds = %108
  store i32 1, ptr %23, align 4
  br label %325

110:                                              ; preds = %103
  %111 = landingpad { ptr, i32 }
          cleanup
  %112 = extractvalue { ptr, i32 } %111, 0
  store ptr %112, ptr %19, align 8
  %113 = extractvalue { ptr, i32 } %111, 1
  store i32 %113, ptr %20, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %24) #5
  br label %330

114:                                              ; preds = %106
  br label %115

115:                                              ; preds = %114
  br label %116

116:                                              ; preds = %115
  call void @llvm.lifetime.start.p0(i64 48, ptr %25) #5
  %117 = load ptr, ptr %15, align 8, !tbaa !5
  %118 = getelementptr inbounds %struct.Longtail_StoredBlock, ptr %117, i32 0, i32 1
  %119 = load ptr, ptr %118, align 8, !tbaa !18
  %120 = getelementptr inbounds %struct.Longtail_BlockIndex, ptr %119, i32 0, i32 4
  %121 = load ptr, ptr %120, align 8, !tbaa !20
  %122 = getelementptr inbounds i64, ptr %121, i64 0
  %123 = load i64, ptr %122, align 8, !tbaa !22
  store i64 %123, ptr %25, align 8, !tbaa !22
  %124 = getelementptr inbounds i64, ptr %25, i64 1
  %125 = load ptr, ptr %15, align 8, !tbaa !5
  %126 = getelementptr inbounds %struct.Longtail_StoredBlock, ptr %125, i32 0, i32 1
  %127 = load ptr, ptr %126, align 8, !tbaa !18
  %128 = getelementptr inbounds %struct.Longtail_BlockIndex, ptr %127, i32 0, i32 4
  %129 = load ptr, ptr %128, align 8, !tbaa !20
  %130 = getelementptr inbounds i64, ptr %129, i64 1
  %131 = load i64, ptr %130, align 8, !tbaa !22
  store i64 %131, ptr %124, align 8, !tbaa !22
  %132 = getelementptr inbounds i64, ptr %25, i64 2
  %133 = load ptr, ptr %16, align 8, !tbaa !5
  %134 = getelementptr inbounds %struct.Longtail_StoredBlock, ptr %133, i32 0, i32 1
  %135 = load ptr, ptr %134, align 8, !tbaa !18
  %136 = getelementptr inbounds %struct.Longtail_BlockIndex, ptr %135, i32 0, i32 4
  %137 = load ptr, ptr %136, align 8, !tbaa !20
  %138 = getelementptr inbounds i64, ptr %137, i64 0
  %139 = load i64, ptr %138, align 8, !tbaa !22
  store i64 %139, ptr %132, align 8, !tbaa !22
  %140 = getelementptr inbounds i64, ptr %25, i64 3
  %141 = load ptr, ptr %16, align 8, !tbaa !5
  %142 = getelementptr inbounds %struct.Longtail_StoredBlock, ptr %141, i32 0, i32 1
  %143 = load ptr, ptr %142, align 8, !tbaa !18
  %144 = getelementptr inbounds %struct.Longtail_BlockIndex, ptr %143, i32 0, i32 4
  %145 = load ptr, ptr %144, align 8, !tbaa !20
  %146 = getelementptr inbounds i64, ptr %145, i64 1
  %147 = load i64, ptr %146, align 8, !tbaa !22
  store i64 %147, ptr %140, align 8, !tbaa !22
  %148 = getelementptr inbounds i64, ptr %25, i64 4
  %149 = load ptr, ptr %17, align 8, !tbaa !5
  %150 = getelementptr inbounds %struct.Longtail_StoredBlock, ptr %149, i32 0, i32 1
  %151 = load ptr, ptr %150, align 8, !tbaa !18
  %152 = getelementptr inbounds %struct.Longtail_BlockIndex, ptr %151, i32 0, i32 4
  %153 = load ptr, ptr %152, align 8, !tbaa !20
  %154 = getelementptr inbounds i64, ptr %153, i64 0
  %155 = load i64, ptr %154, align 8, !tbaa !22
  store i64 %155, ptr %148, align 8, !tbaa !22
  %156 = getelementptr inbounds i64, ptr %25, i64 5
  %157 = load ptr, ptr %17, align 8, !tbaa !5
  %158 = getelementptr inbounds %struct.Longtail_StoredBlock, ptr %157, i32 0, i32 1
  %159 = load ptr, ptr %158, align 8, !tbaa !18
  %160 = getelementptr inbounds %struct.Longtail_BlockIndex, ptr %159, i32 0, i32 4
  %161 = load ptr, ptr %160, align 8, !tbaa !20
  %162 = getelementptr inbounds i64, ptr %161, i64 1
  %163 = load i64, ptr %162, align 8, !tbaa !22
  store i64 %163, ptr %156, align 8, !tbaa !22
  call void @llvm.lifetime.start.p0(i64 40, ptr %26) #5
  invoke void @_ZN35TestAsyncGetExistingContentCompleteC2Ev(ptr noundef nonnull align 8 dereferenceable(40) %26)
          to label %164 unwind label %189

164:                                              ; preds = %116
  br label %165

165:                                              ; preds = %164
  %166 = invoke noundef ptr @_ZL19jc_test_get_fixturev()
          to label %167 unwind label %193

167:                                              ; preds = %165
  %168 = getelementptr inbounds %struct.jc_test_fixture, ptr %166, i32 0, i32 11
  %169 = load i32, ptr %168, align 8
  %170 = and i32 %169, -16776961
  %171 = or i32 %170, 1798656
  store i32 %171, ptr %168, align 8
  %172 = invoke noundef ptr @_ZL19jc_test_get_fixturev()
          to label %173 unwind label %193

173:                                              ; preds = %167
  %174 = getelementptr inbounds %struct.jc_test_fixture, ptr %172, i32 0, i32 4
  store ptr @.str.3, ptr %174, align 8, !tbaa !9
  invoke void @_Z28jc_test_increment_assertionsv()
          to label %175 unwind label %193

175:                                              ; preds = %173
  call void @llvm.lifetime.start.p0(i64 4, ptr %27) #5
  store i32 0, ptr %27, align 4, !tbaa !14
  call void @llvm.lifetime.start.p0(i64 4, ptr %28) #5
  %176 = load ptr, ptr %14, align 8, !tbaa !5
  %177 = getelementptr inbounds %struct.Longtail_BlockStoreAPI, ptr %176, i32 0, i32 4
  %178 = load ptr, ptr %177, align 8, !tbaa !23
  %179 = load ptr, ptr %14, align 8, !tbaa !5
  %180 = getelementptr inbounds [6 x i64], ptr %25, i64 0, i64 0
  %181 = getelementptr inbounds %struct.TestAsyncGetExistingContentComplete, ptr %26, i32 0, i32 0
  %182 = invoke noundef i32 %178(ptr noundef %179, i32 noundef 6, ptr noundef %180, i32 noundef 0, ptr noundef %181)
          to label %183 unwind label %197

183:                                              ; preds = %175
  store i32 %182, ptr %28, align 4, !tbaa !14
  %184 = 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) %27, ptr noundef nonnull align 4 dereferenceable(4) %28, ptr noundef @.str.46, ptr noundef @.str.825, ptr noundef null)
          to label %185 unwind label %197

185:                                              ; preds = %183
  %186 = icmp eq i32 %184, 0
  call void @llvm.lifetime.end.p0(i64 4, ptr %28) #5
  call void @llvm.lifetime.end.p0(i64 4, ptr %27) #5
  br i1 %186, label %187, label %201

187:                                              ; preds = %185
  invoke void @_Z21jc_test_set_test_faili(i32 noundef 1)
          to label %188 unwind label %193

188:                                              ; preds = %187
  store i32 1, ptr %23, align 4
  br label %324

189:                                              ; preds = %116
  %190 = landingpad { ptr, i32 }
          cleanup
  %191 = extractvalue { ptr, i32 } %190, 0
  store ptr %191, ptr %19, align 8
  %192 = extractvalue { ptr, i32 } %190, 1
  store i32 %192, ptr %20, align 4
  br label %329

193:                                              ; preds = %319, %312, %305, %298, %291, %284, %277, %270, %263, %256, %249, %240, %234, %228, %220, %213, %207, %205, %203, %187, %173, %167, %165
  %194 = landingpad { ptr, i32 }
          cleanup
  %195 = extractvalue { ptr, i32 } %194, 0
  store ptr %195, ptr %19, align 8
  %196 = extractvalue { ptr, i32 } %194, 1
  store i32 %196, ptr %20, align 4
  br label %328

197:                                              ; preds = %183, %175
  %198 = landingpad { ptr, i32 }
          cleanup
  %199 = extractvalue { ptr, i32 } %198, 0
  store ptr %199, ptr %19, align 8
  %200 = extractvalue { ptr, i32 } %198, 1
  store i32 %200, ptr %20, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %28) #5
  call void @llvm.lifetime.end.p0(i64 4, ptr %27) #5
  br label %328

201:                                              ; preds = %185
  br label %202

202:                                              ; preds = %201
  br label %203

203:                                              ; preds = %202
  invoke void @_ZN35TestAsyncGetExistingContentComplete4WaitEv(ptr noundef nonnull align 8 dereferenceable(40) %26)
          to label %204 unwind label %193

204:                                              ; preds = %203
  br label %205

205:                                              ; preds = %204
  %206 = invoke noundef ptr @_ZL19jc_test_get_fixturev()
          to label %207 unwind label %193

207:                                              ; preds = %205
  %208 = getelementptr inbounds %struct.jc_test_fixture, ptr %206, i32 0, i32 11
  %209 = load i32, ptr %208, align 8
  %210 = and i32 %209, -16776961
  %211 = or i32 %210, 1799168
  store i32 %211, ptr %208, align 8
  %212 = invoke noundef ptr @_ZL19jc_test_get_fixturev()
          to label %213 unwind label %193

213:                                              ; preds = %207
  %214 = getelementptr inbounds %struct.jc_test_fixture, ptr %212, i32 0, i32 4
  store ptr @.str.3, ptr %214, align 8, !tbaa !9
  invoke void @_Z28jc_test_increment_assertionsv()
          to label %215 unwind label %193

215:                                              ; preds = %213
  call void @llvm.lifetime.start.p0(i64 4, ptr %29) #5
  store i32 125, ptr %29, align 4, !tbaa !14
  %216 = getelementptr inbounds %struct.TestAsyncGetExistingContentComplete, ptr %26, i32 0, i32 2
  %217 = invoke noundef i32 @_ZN21jc_test_cmp_eq_helperILb0EE7compareIiiEEiRKT_RKT0_PKcS9_(ptr noundef nonnull align 4 dereferenceable(4) %29, ptr noundef nonnull align 4 dereferenceable(4) %216, ptr noundef @.str.635, ptr noundef @.str.826)
          to label %218 unwind label %222

218:                                              ; preds = %215
  %219 = icmp eq i32 %217, 0
  call void @llvm.lifetime.end.p0(i64 4, ptr %29) #5
  br i1 %219, label %220, label %226

220:                                              ; preds = %218
  invoke void @_Z21jc_test_set_test_faili(i32 noundef 1)
          to label %221 unwind label %193

221:                                              ; preds = %220
  store i32 1, ptr %23, align 4
  br label %324

222:                                              ; preds = %215
  %223 = landingpad { ptr, i32 }
          cleanup
  %224 = extractvalue { ptr, i32 } %223, 0
  store ptr %224, ptr %19, align 8
  %225 = extractvalue { ptr, i32 } %223, 1
  store i32 %225, ptr %20, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %29) #5
  br label %328

226:                                              ; preds = %218
  br label %227

227:                                              ; preds = %226
  br label %228

228:                                              ; preds = %227
  %229 = load ptr, ptr %15, align 8, !tbaa !5
  %230 = getelementptr inbounds %struct.Longtail_StoredBlock, ptr %229, i32 0, i32 0
  %231 = load ptr, ptr %230, align 8, !tbaa !24
  %232 = load ptr, ptr %15, align 8, !tbaa !5
  %233 = invoke noundef i32 %231(ptr noundef %232)
          to label %234 unwind label %193

234:                                              ; preds = %228
  %235 = load ptr, ptr %16, align 8, !tbaa !5
  %236 = getelementptr inbounds %struct.Longtail_StoredBlock, ptr %235, i32 0, i32 0
  %237 = load ptr, ptr %236, align 8, !tbaa !24
  %238 = load ptr, ptr %16, align 8, !tbaa !5
  %239 = invoke noundef i32 %237(ptr noundef %238)
          to label %240 unwind label %193

240:                                              ; preds = %234
  %241 = load ptr, ptr %17, align 8, !tbaa !5
  %242 = getelementptr inbounds %struct.Longtail_StoredBlock, ptr %241, i32 0, i32 0
  %243 = load ptr, ptr %242, align 8, !tbaa !24
  %244 = load ptr, ptr %17, align 8, !tbaa !5
  %245 = invoke noundef i32 %243(ptr noundef %244)
          to label %246 unwind label %193

246:                                              ; preds = %240
  %247 = load ptr, ptr %14, align 8, !tbaa !5
  %248 = icmp ne ptr %247, null
  br i1 %248, label %249, label %253

249:                                              ; preds = %246
  %250 = load ptr, ptr %14, align 8, !tbaa !5
  %251 = getelementptr inbounds %struct.Longtail_BlockStoreAPI, ptr %250, i32 0, i32 0
  invoke void @Longtail_DisposeAPI(ptr noundef %251)
          to label %252 unwind label %193

252:                                              ; preds = %249
  br label %253

253:                                              ; preds = %252, %246
  %254 = load ptr, ptr %13, align 8, !tbaa !5
  %255 = icmp ne ptr %254, null
  br i1 %255, label %256, label %260

256:                                              ; preds = %253
  %257 = load ptr, ptr %13, align 8, !tbaa !5
  %258 = getelementptr inbounds %struct.Longtail_BlockStoreAPI, ptr %257, i32 0, i32 0
  invoke void @Longtail_DisposeAPI(ptr noundef %258)
          to label %259 unwind label %193

259:                                              ; preds = %256
  br label %260

260:                                              ; preds = %259, %253
  %261 = load ptr, ptr %12, align 8, !tbaa !5
  %262 = icmp ne ptr %261, null
  br i1 %262, label %263, label %267

263:                                              ; preds = %260
  %264 = load ptr, ptr %12, align 8, !tbaa !5
  %265 = getelementptr inbounds %struct.Longtail_BlockStoreAPI, ptr %264, i32 0, i32 0
  invoke void @Longtail_DisposeAPI(ptr noundef %265)
          to label %266 unwind label %193

266:                                              ; preds = %263
  br label %267

267:                                              ; preds = %266, %260
  %268 = load ptr, ptr %11, align 8, !tbaa !5
  %269 = icmp ne ptr %268, null
  br i1 %269, label %270, label %274

270:                                              ; preds = %267
  %271 = load ptr, ptr %11, align 8, !tbaa !5
  %272 = getelementptr inbounds %struct.Longtail_BlockStoreAPI, ptr %271, i32 0, i32 0
  invoke void @Longtail_DisposeAPI(ptr noundef %272)
          to label %273 unwind label %193

273:                                              ; preds = %270
  br label %274

274:                                              ; preds = %273, %267
  %275 = load ptr, ptr %10, align 8, !tbaa !5
  %276 = icmp ne ptr %275, null
  br i1 %276, label %277, label %281

277:                                              ; preds = %274
  %278 = load ptr, ptr %10, align 8, !tbaa !5
  %279 = getelementptr inbounds %struct.Longtail_BlockStoreAPI, ptr %278, i32 0, i32 0
  invoke void @Longtail_DisposeAPI(ptr noundef %279)
          to label %280 unwind label %193

280:                                              ; preds = %277
  br label %281

281:                                              ; preds = %280, %274
  %282 = load ptr, ptr %9, align 8, !tbaa !5
  %283 = icmp ne ptr %282, null
  br i1 %283, label %284, label %288

284:                                              ; preds = %281
  %285 = load ptr, ptr %9, align 8, !tbaa !5
  %286 = getelementptr inbounds %struct.Longtail_BlockStoreAPI, ptr %285, i32 0, i32 0
  invoke void @Longtail_DisposeAPI(ptr noundef %286)
          to label %287 unwind label %193

287:                                              ; preds = %284
  br label %288

288:                                              ; preds = %287, %281
  %289 = load ptr, ptr %7, align 8, !tbaa !5
  %290 = icmp ne ptr %289, null
  br i1 %290, label %291, label %295

291:                                              ; preds = %288
  %292 = load ptr, ptr %7, align 8, !tbaa !5
  %293 = getelementptr inbounds %struct.Longtail_JobAPI, ptr %292, i32 0, i32 0
  invoke void @Longtail_DisposeAPI(ptr noundef %293)
          to label %294 unwind label %193

294:                                              ; preds = %291
  br label %295

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

298:                                              ; preds = %295
  %299 = load ptr, ptr %6, align 8, !tbaa !5
  %300 = getelementptr inbounds %struct.Longtail_ChunkerAPI, ptr %299, i32 0, i32 0
  invoke void @Longtail_DisposeAPI(ptr noundef %300)
          to label %301 unwind label %193

301:                                              ; preds = %298
  br label %302

302:                                              ; preds = %301, %295
  %303 = load ptr, ptr %5, align 8, !tbaa !5
  %304 = icmp ne ptr %303, null
  br i1 %304, label %305, label %309

305:                                              ; preds = %302
  %306 = load ptr, ptr %5, align 8, !tbaa !5
  %307 = getelementptr inbounds %struct.Longtail_HashAPI, ptr %306, i32 0, i32 0
  invoke void @Longtail_DisposeAPI(ptr noundef %307)
          to label %308 unwind label %193

308:                                              ; preds = %305
  br label %309

309:                                              ; preds = %308, %302
  %310 = load ptr, ptr %4, align 8, !tbaa !5
  %311 = icmp ne ptr %310, null
  br i1 %311, label %312, label %316

312:                                              ; preds = %309
  %313 = load ptr, ptr %4, align 8, !tbaa !5
  %314 = getelementptr inbounds %struct.Longtail_CompressionRegistryAPI, ptr %313, i32 0, i32 0
  invoke void @Longtail_DisposeAPI(ptr noundef %314)
          to label %315 unwind label %193

315:                                              ; preds = %312
  br label %316

316:                                              ; preds = %315, %309
  %317 = load ptr, ptr %3, align 8, !tbaa !5
  %318 = icmp ne ptr %317, null
  br i1 %318, label %319, label %323

319:                                              ; preds = %316
  %320 = load ptr, ptr %3, align 8, !tbaa !5
  %321 = getelementptr inbounds %struct.Longtail_StorageAPI, ptr %320, i32 0, i32 0
  invoke void @Longtail_DisposeAPI(ptr noundef %321)
          to label %322 unwind label %193

322:                                              ; preds = %319
  br label %323

323:                                              ; preds = %322, %316
  store i32 0, ptr %23, align 4
  br label %324

324:                                              ; preds = %323, %221, %188
  call void @_ZN35TestAsyncGetExistingContentCompleteD2Ev(ptr noundef nonnull align 8 dereferenceable(40) %26) #5
  call void @llvm.lifetime.end.p0(i64 40, ptr %26) #5
  call void @llvm.lifetime.end.p0(i64 48, ptr %25) #5
  br label %325

325:                                              ; preds = %324, %109, %80
  call void @_ZN25TestAsyncPutBlockCompleteD2Ev(ptr noundef nonnull align 8 dereferenceable(28) %18) #5
  call void @llvm.lifetime.end.p0(i64 32, ptr %18) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %17) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %16) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %15) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %14) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %13) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %12) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %11) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %10) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %9) #5
  call void @llvm.lifetime.end.p0(i64 64, ptr %8) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %7) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %6) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %5) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %4) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %3) #5
  %326 = load i32, ptr %23, align 4
  switch i32 %326, label %336 [
    i32 0, label %327
    i32 1, label %327
  ]

327:                                              ; preds = %325, %325
  ret void

328:                                              ; preds = %222, %197, %193
  call void @_ZN35TestAsyncGetExistingContentCompleteD2Ev(ptr noundef nonnull align 8 dereferenceable(40) %26) #5
  br label %329

329:                                              ; preds = %328, %189
  call void @llvm.lifetime.end.p0(i64 40, ptr %26) #5
  call void @llvm.lifetime.end.p0(i64 48, ptr %25) #5
  br label %330

330:                                              ; preds = %329, %110, %85, %81
  call void @_ZN25TestAsyncPutBlockCompleteD2Ev(ptr noundef nonnull align 8 dereferenceable(28) %18) #5
  call void @llvm.lifetime.end.p0(i64 32, ptr %18) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %17) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %16) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %15) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %14) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %13) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %12) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %11) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %10) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %9) #5
  call void @llvm.lifetime.end.p0(i64 64, ptr %8) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %7) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %6) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %5) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %4) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %3) #5
  br label %331

331:                                              ; preds = %330
  %332 = load ptr, ptr %19, align 8
  %333 = load i32, ptr %20, align 4
  %334 = insertvalue { ptr, i32 } poison, ptr %332, 0
  %335 = insertvalue { ptr, i32 } %334, i32 %333, 1
  resume { ptr, i32 } %335

336:                                              ; preds = %325
  unreachable
}

; Function Attrs: mustprogress uwtable
declare dso_local void @_ZN35TestAsyncGetExistingContentCompleteC2Ev(ptr noundef nonnull align 8 dereferenceable(40)) unnamed_addr #3 align 2

; Function Attrs: mustprogress uwtable
declare dso_local void @_ZN35TestAsyncGetExistingContentComplete4WaitEv(ptr noundef nonnull align 8 dereferenceable(40)) #3 align 2

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

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

!llvm.module.flags = !{!0, !1, !2, !3}
!llvm.ident = !{!4}

!0 = !{i32 1, !"wchar_size", i32 4}
!1 = !{i32 8, !"PIC Level", i32 2}
!2 = !{i32 7, !"PIE Level", i32 2}
!3 = !{i32 7, !"uwtable", i32 2}
!4 = !{!"clang version 19.1.0 (git@github.com:llvm/llvm-project.git a4bf6cd7cfb1a1421ba92bca9d017b49936c55e4)"}
!5 = !{!6, !6, i64 0}
!6 = !{!"any pointer", !7, i64 0}
!7 = !{!"omnipotent char", !8, i64 0}
!8 = !{!"Simple C++ TBAA"}
!9 = !{!10, !6, i64 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 = !{!16, !6, i64 8}
!16 = !{!"_ZTS22Longtail_BlockStoreAPI", !17, i64 0, !6, i64 8, !6, i64 16, !6, i64 24, !6, i64 32, !6, i64 40, !6, i64 48, !6, i64 56}
!17 = !{!"_ZTS12Longtail_API", !6, i64 0}
!18 = !{!19, !6, i64 8}
!19 = !{!"_ZTS20Longtail_StoredBlock", !6, i64 0, !6, i64 8, !6, i64 16, !12, i64 24}
!20 = !{!21, !6, i64 32}
!21 = !{!"_ZTS19Longtail_BlockIndex", !6, i64 0, !6, i64 8, !6, i64 16, !6, i64 24, !6, i64 32, !6, i64 40}
!22 = !{!13, !13, i64 0}
!23 = !{!16, !6, i64 32}
!24 = !{!19, !6, i64 0}


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

%struct.CancelStore = type { %struct.Longtail_BlockStoreAPI }
%struct.Longtail_BlockStoreAPI = type { %struct.Longtail_API, ptr, ptr, ptr, ptr, ptr, ptr, ptr }
%struct.Longtail_API = type { ptr }
%struct.TestAsyncPutBlockComplete = type <{ %struct.Longtail_AsyncPutStoredBlockAPI, ptr, i32, [4 x i8] }>
%struct.Longtail_AsyncPutStoredBlockAPI = type { %struct.Longtail_API, ptr }
%struct.TestAsyncGetExistingContentComplete = type { %struct.Longtail_AsyncGetExistingContentAPI, ptr, i32, ptr }
%struct.Longtail_AsyncGetExistingContentAPI = 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.273 = external hidden unnamed_addr constant [12 x i8], align 1
@.str.635 = external hidden unnamed_addr constant [4 x i8], align 1
@.str.823 = external hidden unnamed_addr constant [13 x i8], align 1
@_ZZN36Longtail_NestedStoreCancel__TestCase8TestBodyEvE17BLOCK_CHUNK_SIZES = external hidden constant [2 x i32], align 4
@.str.824 = external hidden unnamed_addr constant [79 x i8], align 1
@.str.825 = external hidden unnamed_addr constant [125 x i8], align 1
@.str.826 = external hidden unnamed_addr constant [50 x i8], align 1

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

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

declare void @_Z28jc_test_increment_assertionsv() local_unnamed_addr #2

declare void @_Z21jc_test_set_test_faili(i32 noundef) local_unnamed_addr #2

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

; Function Attrs: mustprogress 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 #3 align 2

declare void @Longtail_DisposeAPI(ptr noundef) local_unnamed_addr #2

declare ptr @Longtail_CreateBlake3HashAPI() local_unnamed_addr #2

declare ptr @Longtail_CreateHPCDCChunkerAPI() local_unnamed_addr #2

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

declare ptr @Longtail_CreateInMemStorageAPI() local_unnamed_addr #2

declare ptr @Longtail_CreateFullCompressionRegistry() local_unnamed_addr #2

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

declare i32 @__gxx_personality_v0(...)

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

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

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

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

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

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

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

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

declare ptr @Longtail_CreateShareBlockStoreAPI(ptr noundef) local_unnamed_addr #2

; Function Attrs: mustprogress uwtable
declare dso_local noundef ptr @_Z15CancelStoreInitP11CancelStore(ptr noundef) local_unnamed_addr #3

; Function Attrs: mustprogress uwtable
define dso_local void @_ZN36Longtail_NestedStoreCancel__TestCase8TestBodyEv(ptr nocapture noundef nonnull readnone align 8 dereferenceable(8) %0) unnamed_addr #3 align 2 personality ptr @__gxx_personality_v0 {
  %2 = alloca %struct.CancelStore, align 8
  %3 = alloca %struct.TestAsyncPutBlockComplete, align 8
  %4 = alloca i32, align 4
  %5 = alloca i32, align 4
  %6 = alloca i32, align 4
  %7 = alloca [6 x i64], align 16
  %8 = alloca %struct.TestAsyncGetExistingContentComplete, align 8
  %9 = alloca i32, align 4
  %10 = alloca i32, align 4
  %11 = alloca i32, align 4
  %12 = tail call ptr @Longtail_CreateInMemStorageAPI()
  %13 = tail call ptr @Longtail_CreateFullCompressionRegistry()
  %14 = tail call ptr @Longtail_CreateBlake3HashAPI()
  %15 = tail call ptr @Longtail_CreateHPCDCChunkerAPI()
  %16 = tail call ptr @Longtail_CreateBikeshedJobAPI(i32 noundef 0, i32 noundef 0)
  call void @llvm.lifetime.start.p0(i64 64, ptr nonnull %2) #5
  %17 = call noundef ptr @_Z15CancelStoreInitP11CancelStore(ptr noundef nonnull %2)
  %18 = call ptr @Longtail_CreateFSBlockStoreAPI(ptr noundef %16, ptr noundef %12, ptr noundef nonnull @.str.823, ptr noundef null, i32 noundef 0)
  %19 = call ptr @Longtail_CreateCacheBlockStoreAPI(ptr noundef %16, ptr noundef %18, ptr noundef %17)
  %20 = call ptr @Longtail_CreateCompressBlockStoreAPI(ptr noundef %19, ptr noundef %13)
  %21 = call ptr @Longtail_CreateLRUBlockStoreAPI(ptr noundef %20, i32 noundef 3)
  %22 = call ptr @Longtail_CreateShareBlockStoreAPI(ptr noundef %21)
  %23 = call noundef ptr @_ZL19GenerateStoredBlockP16Longtail_HashAPIjPKj(ptr noundef %14, i32 noundef 2, ptr noundef nonnull @_ZZN36Longtail_NestedStoreCancel__TestCase8TestBodyEvE17BLOCK_CHUNK_SIZES)
  %24 = call noundef ptr @_ZL19GenerateStoredBlockP16Longtail_HashAPIjPKj(ptr noundef %14, i32 noundef 2, ptr noundef nonnull @_ZZN36Longtail_NestedStoreCancel__TestCase8TestBodyEvE17BLOCK_CHUNK_SIZES)
  %25 = call noundef ptr @_ZL19GenerateStoredBlockP16Longtail_HashAPIjPKj(ptr noundef %14, i32 noundef 2, ptr noundef nonnull @_ZZN36Longtail_NestedStoreCancel__TestCase8TestBodyEvE17BLOCK_CHUNK_SIZES)
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %3) #5
  call void @_ZN25TestAsyncPutBlockCompleteC2Ev(ptr noundef nonnull align 8 dereferenceable(28) %3)
  %26 = invoke noundef ptr @_ZL19jc_test_get_fixturev()
          to label %27 unwind label %43

27:                                               ; preds = %1
  %28 = getelementptr inbounds i8, ptr %26, i64 96
  %29 = load i32, ptr %28, align 8
  %30 = and i32 %29, -16776961
  %31 = or disjoint i32 %30, 1795840
  store i32 %31, ptr %28, align 8
  %32 = invoke noundef ptr @_ZL19jc_test_get_fixturev()
          to label %33 unwind label %43

33:                                               ; preds = %27
  %34 = getelementptr inbounds i8, ptr %32, i64 32
  store ptr @.str.3, ptr %34, align 8, !tbaa !5
  invoke void @_Z28jc_test_increment_assertionsv()
          to label %35 unwind label %43

35:                                               ; preds = %33
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %4) #5
  store i32 0, ptr %4, align 4, !tbaa !13
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %5) #5
  %36 = getelementptr inbounds i8, ptr %18, i64 8
  %37 = load ptr, ptr %36, align 8, !tbaa !14
  %38 = invoke noundef i32 %37(ptr noundef nonnull %18, ptr noundef %23, ptr noundef nonnull %3)
          to label %39 unwind label %45

39:                                               ; preds = %35
  store i32 %38, ptr %5, align 4, !tbaa !13
  %40 = 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) %4, ptr noundef nonnull align 4 dereferenceable(4) %5, ptr noundef nonnull @.str.46, ptr noundef nonnull @.str.824, ptr noundef null)
          to label %41 unwind label %45

41:                                               ; preds = %39
  %42 = icmp eq i32 %40, 0
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %5) #5
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %4) #5
  br i1 %42, label %.invoke, label %47

43:                                               ; preds = %.invoke, %56, %50, %48, %47, %33, %27, %1
  %44 = landingpad { ptr, i32 }
          cleanup
  br label %164

45:                                               ; preds = %39, %35
  %46 = landingpad { ptr, i32 }
          cleanup
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %5) #5
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %4) #5
  br label %164

47:                                               ; preds = %41
  invoke void @_ZN25TestAsyncPutBlockComplete4WaitEv(ptr noundef nonnull align 8 dereferenceable(28) %3)
          to label %48 unwind label %43

48:                                               ; preds = %47
  %49 = invoke noundef ptr @_ZL19jc_test_get_fixturev()
          to label %50 unwind label %43

50:                                               ; preds = %48
  %51 = getelementptr inbounds i8, ptr %49, i64 96
  %52 = load i32, ptr %51, align 8
  %53 = and i32 %52, -16776961
  %54 = or disjoint i32 %53, 1796352
  store i32 %54, ptr %51, align 8
  %55 = invoke noundef ptr @_ZL19jc_test_get_fixturev()
          to label %56 unwind label %43

56:                                               ; preds = %50
  %57 = getelementptr inbounds i8, ptr %55, i64 32
  store ptr @.str.3, ptr %57, align 8, !tbaa !5
  invoke void @_Z28jc_test_increment_assertionsv()
          to label %58 unwind label %43

58:                                               ; preds = %56
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %6) #5
  store i32 0, ptr %6, align 4, !tbaa !13
  %59 = getelementptr inbounds i8, ptr %3, i64 24
  %60 = 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) %6, ptr noundef nonnull align 4 dereferenceable(4) %59, ptr noundef nonnull @.str.46, ptr noundef nonnull @.str.273, ptr noundef null)
          to label %61 unwind label %63

61:                                               ; preds = %58
  %62 = icmp eq i32 %60, 0
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %6) #5
  br i1 %62, label %.invoke, label %65

.invoke:                                          ; preds = %41, %61
  invoke void @_Z21jc_test_set_test_faili(i32 noundef 1)
          to label %161 unwind label %43

63:                                               ; preds = %58
  %64 = landingpad { ptr, i32 }
          cleanup
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %6) #5
  br label %164

65:                                               ; preds = %61
  call void @llvm.lifetime.start.p0(i64 48, ptr nonnull %7) #5
  %66 = getelementptr inbounds i8, ptr %23, i64 8
  %67 = load ptr, ptr %66, align 8, !tbaa !17
  %68 = getelementptr inbounds i8, ptr %67, i64 32
  %69 = load ptr, ptr %68, align 8, !tbaa !19
  %70 = load <2 x i64>, ptr %69, align 8, !tbaa !21
  store <2 x i64> %70, ptr %7, align 16, !tbaa !21
  %71 = getelementptr inbounds i8, ptr %7, i64 16
  %72 = getelementptr inbounds i8, ptr %24, i64 8
  %73 = load ptr, ptr %72, align 8, !tbaa !17
  %74 = getelementptr inbounds i8, ptr %73, i64 32
  %75 = load ptr, ptr %74, align 8, !tbaa !19
  %76 = load i64, ptr %75, align 8, !tbaa !21
  store i64 %76, ptr %71, align 16, !tbaa !21
  %77 = getelementptr inbounds i8, ptr %7, i64 24
  %78 = getelementptr inbounds i8, ptr %75, i64 8
  %79 = load i64, ptr %78, align 8, !tbaa !21
  store i64 %79, ptr %77, align 8, !tbaa !21
  %80 = getelementptr inbounds i8, ptr %7, i64 32
  %81 = getelementptr inbounds i8, ptr %25, i64 8
  %82 = load ptr, ptr %81, align 8, !tbaa !17
  %83 = getelementptr inbounds i8, ptr %82, i64 32
  %84 = load ptr, ptr %83, align 8, !tbaa !19
  %85 = load i64, ptr %84, align 8, !tbaa !21
  store i64 %85, ptr %80, align 16, !tbaa !21
  %86 = getelementptr inbounds i8, ptr %7, i64 40
  %87 = getelementptr inbounds i8, ptr %84, i64 8
  %88 = load i64, ptr %87, align 8, !tbaa !21
  store i64 %88, ptr %86, align 8, !tbaa !21
  call void @llvm.lifetime.start.p0(i64 40, ptr nonnull %8) #5
  invoke void @_ZN35TestAsyncGetExistingContentCompleteC2Ev(ptr noundef nonnull align 8 dereferenceable(40) %8)
          to label %89 unwind label %107

89:                                               ; preds = %65
  %90 = invoke noundef ptr @_ZL19jc_test_get_fixturev()
          to label %91 unwind label %109

91:                                               ; preds = %89
  %92 = getelementptr inbounds i8, ptr %90, i64 96
  %93 = load i32, ptr %92, align 8
  %94 = and i32 %93, -16776961
  %95 = or disjoint i32 %94, 1798656
  store i32 %95, ptr %92, align 8
  %96 = invoke noundef ptr @_ZL19jc_test_get_fixturev()
          to label %97 unwind label %109

97:                                               ; preds = %91
  %98 = getelementptr inbounds i8, ptr %96, i64 32
  store ptr @.str.3, ptr %98, align 8, !tbaa !5
  invoke void @_Z28jc_test_increment_assertionsv()
          to label %99 unwind label %109

99:                                               ; preds = %97
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %9) #5
  store i32 0, ptr %9, align 4, !tbaa !13
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %10) #5
  %100 = getelementptr inbounds i8, ptr %22, i64 32
  %101 = load ptr, ptr %100, align 8, !tbaa !22
  %102 = invoke noundef i32 %101(ptr noundef nonnull %22, i32 noundef 6, ptr noundef nonnull %7, i32 noundef 0, ptr noundef nonnull %8)
          to label %103 unwind label %111

103:                                              ; preds = %99
  store i32 %102, ptr %10, align 4, !tbaa !13
  %104 = 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) %9, ptr noundef nonnull align 4 dereferenceable(4) %10, ptr noundef nonnull @.str.46, ptr noundef nonnull @.str.825, ptr noundef null)
          to label %105 unwind label %111

105:                                              ; preds = %103
  %106 = icmp eq i32 %104, 0
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %10) #5
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %9) #5
  br i1 %106, label %.invoke81, label %113

107:                                              ; preds = %65
  %108 = landingpad { ptr, i32 }
          cleanup
  br label %163

109:                                              ; preds = %.invoke81, %159, %157, %155, %153, %151, %149, %147, %146, %144, %142, %140, %137, %134, %131, %122, %116, %114, %113, %97, %91, %89
  %110 = landingpad { ptr, i32 }
          cleanup
  br label %162

111:                                              ; preds = %103, %99
  %112 = landingpad { ptr, i32 }
          cleanup
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %10) #5
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %9) #5
  br label %162

113:                                              ; preds = %105
  invoke void @_ZN35TestAsyncGetExistingContentComplete4WaitEv(ptr noundef nonnull align 8 dereferenceable(40) %8)
          to label %114 unwind label %109

114:                                              ; preds = %113
  %115 = invoke noundef ptr @_ZL19jc_test_get_fixturev()
          to label %116 unwind label %109

116:                                              ; preds = %114
  %117 = getelementptr inbounds i8, ptr %115, i64 96
  %118 = load i32, ptr %117, align 8
  %119 = and i32 %118, -16776961
  %120 = or disjoint i32 %119, 1799168
  store i32 %120, ptr %117, align 8
  %121 = invoke noundef ptr @_ZL19jc_test_get_fixturev()
          to label %122 unwind label %109

122:                                              ; preds = %116
  %123 = getelementptr inbounds i8, ptr %121, i64 32
  store ptr @.str.3, ptr %123, align 8, !tbaa !5
  invoke void @_Z28jc_test_increment_assertionsv()
          to label %124 unwind label %109

124:                                              ; preds = %122
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %11) #5
  store i32 125, ptr %11, align 4, !tbaa !13
  %125 = getelementptr inbounds i8, ptr %8, i64 24
  %126 = invoke noundef i32 @_ZN21jc_test_cmp_eq_helperILb0EE7compareIiiEEiRKT_RKT0_PKcS9_(ptr noundef nonnull align 4 dereferenceable(4) %11, ptr noundef nonnull align 4 dereferenceable(4) %125, ptr noundef nonnull @.str.635, ptr noundef nonnull @.str.826)
          to label %127 unwind label %129

127:                                              ; preds = %124
  %128 = icmp eq i32 %126, 0
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %11) #5
  br i1 %128, label %.invoke81, label %131

.invoke81:                                        ; preds = %105, %127
  invoke void @_Z21jc_test_set_test_faili(i32 noundef 1)
          to label %160 unwind label %109

129:                                              ; preds = %124
  %130 = landingpad { ptr, i32 }
          cleanup
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %11) #5
  br label %162

131:                                              ; preds = %127
  %132 = load ptr, ptr %23, align 8, !tbaa !23
  %133 = invoke noundef i32 %132(ptr noundef nonnull %23)
          to label %134 unwind label %109

134:                                              ; preds = %131
  %135 = load ptr, ptr %24, align 8, !tbaa !23
  %136 = invoke noundef i32 %135(ptr noundef nonnull %24)
          to label %137 unwind label %109

137:                                              ; preds = %134
  %138 = load ptr, ptr %25, align 8, !tbaa !23
  %139 = invoke noundef i32 %138(ptr noundef nonnull %25)
          to label %140 unwind label %109

140:                                              ; preds = %137
  invoke void @Longtail_DisposeAPI(ptr noundef nonnull %22)
          to label %141 unwind label %109

141:                                              ; preds = %140
  %.not67 = icmp eq ptr %21, null
  br i1 %.not67, label %143, label %142

142:                                              ; preds = %141
  invoke void @Longtail_DisposeAPI(ptr noundef nonnull %21)
          to label %143 unwind label %109

143:                                              ; preds = %142, %141
  %.not68 = icmp eq ptr %20, null
  br i1 %.not68, label %145, label %144

144:                                              ; preds = %143
  invoke void @Longtail_DisposeAPI(ptr noundef nonnull %20)
          to label %145 unwind label %109

145:                                              ; preds = %144, %143
  %.not69 = icmp eq ptr %19, null
  br i1 %.not69, label %147, label %146

146:                                              ; preds = %145
  invoke void @Longtail_DisposeAPI(ptr noundef nonnull %19)
          to label %147 unwind label %109

147:                                              ; preds = %145, %146
  invoke void @Longtail_DisposeAPI(ptr noundef nonnull %18)
          to label %148 unwind label %109

148:                                              ; preds = %147
  %.not71 = icmp eq ptr %17, null
  br i1 %.not71, label %150, label %149

149:                                              ; preds = %148
  invoke void @Longtail_DisposeAPI(ptr noundef nonnull %17)
          to label %150 unwind label %109

150:                                              ; preds = %149, %148
  %.not72 = icmp eq ptr %16, null
  br i1 %.not72, label %152, label %151

151:                                              ; preds = %150
  invoke void @Longtail_DisposeAPI(ptr noundef nonnull %16)
          to label %152 unwind label %109

152:                                              ; preds = %151, %150
  %.not73 = icmp eq ptr %15, null
  br i1 %.not73, label %154, label %153

153:                                              ; preds = %152
  invoke void @Longtail_DisposeAPI(ptr noundef nonnull %15)
          to label %154 unwind label %109

154:                                              ; preds = %153, %152
  %.not74 = icmp eq ptr %14, null
  br i1 %.not74, label %156, label %155

155:                                              ; preds = %154
  invoke void @Longtail_DisposeAPI(ptr noundef nonnull %14)
          to label %156 unwind label %109

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

157:                                              ; preds = %156
  invoke void @Longtail_DisposeAPI(ptr noundef nonnull %13)
          to label %158 unwind label %109

158:                                              ; preds = %157, %156
  %.not76 = icmp eq ptr %12, null
  br i1 %.not76, label %160, label %159

159:                                              ; preds = %158
  invoke void @Longtail_DisposeAPI(ptr noundef nonnull %12)
          to label %160 unwind label %109

160:                                              ; preds = %.invoke81, %158, %159
  call void @_ZN35TestAsyncGetExistingContentCompleteD2Ev(ptr noundef nonnull align 8 dereferenceable(40) %8) #5
  call void @llvm.lifetime.end.p0(i64 40, ptr nonnull %8) #5
  call void @llvm.lifetime.end.p0(i64 48, ptr nonnull %7) #5
  br label %161

161:                                              ; preds = %.invoke, %160
  call void @_ZN25TestAsyncPutBlockCompleteD2Ev(ptr noundef nonnull align 8 dereferenceable(28) %3) #5
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %3) #5
  call void @llvm.lifetime.end.p0(i64 64, ptr nonnull %2) #5
  ret void

162:                                              ; preds = %129, %111, %109
  %.pn = phi { ptr, i32 } [ %110, %109 ], [ %130, %129 ], [ %112, %111 ]
  call void @_ZN35TestAsyncGetExistingContentCompleteD2Ev(ptr noundef nonnull align 8 dereferenceable(40) %8) #5
  br label %163

163:                                              ; preds = %162, %107
  %.pn.pn = phi { ptr, i32 } [ %.pn, %162 ], [ %108, %107 ]
  call void @llvm.lifetime.end.p0(i64 40, ptr nonnull %8) #5
  call void @llvm.lifetime.end.p0(i64 48, ptr nonnull %7) #5
  br label %164

164:                                              ; preds = %163, %63, %45, %43
  %.pn79 = phi { ptr, i32 } [ %44, %43 ], [ %.pn.pn, %163 ], [ %64, %63 ], [ %46, %45 ]
  call void @_ZN25TestAsyncPutBlockCompleteD2Ev(ptr noundef nonnull align 8 dereferenceable(28) %3) #5
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %3) #5
  call void @llvm.lifetime.end.p0(i64 64, ptr nonnull %2) #5
  resume { ptr, i32 } %.pn79
}

; Function Attrs: mustprogress uwtable
declare dso_local void @_ZN35TestAsyncGetExistingContentCompleteC2Ev(ptr noundef nonnull align 8 dereferenceable(40)) unnamed_addr #3 align 2

; Function Attrs: mustprogress uwtable
declare dso_local void @_ZN35TestAsyncGetExistingContentComplete4WaitEv(ptr noundef nonnull align 8 dereferenceable(40)) local_unnamed_addr #3 align 2

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

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

!llvm.module.flags = !{!0, !1, !2, !3}
!llvm.ident = !{!4}

!0 = !{i32 1, !"wchar_size", i32 4}
!1 = !{i32 8, !"PIC Level", i32 2}
!2 = !{i32 7, !"PIE Level", i32 2}
!3 = !{i32 7, !"uwtable", i32 2}
!4 = !{!"clang version 19.1.0 (git@github.com:llvm/llvm-project.git a4bf6cd7cfb1a1421ba92bca9d017b49936c55e4)"}
!5 = !{!6, !7, i64 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 = !{!15, !7, i64 8}
!15 = !{!"_ZTS22Longtail_BlockStoreAPI", !16, i64 0, !7, i64 8, !7, i64 16, !7, i64 24, !7, i64 32, !7, i64 40, !7, i64 48, !7, i64 56}
!16 = !{!"_ZTS12Longtail_API", !7, i64 0}
!17 = !{!18, !7, i64 8}
!18 = !{!"_ZTS20Longtail_StoredBlock", !7, i64 0, !7, i64 8, !7, i64 16, !11, i64 24}
!19 = !{!20, !7, i64 32}
!20 = !{!"_ZTS19Longtail_BlockIndex", !7, i64 0, !7, i64 8, !7, i64 16, !7, i64 24, !7, i64 32, !7, i64 40}
!21 = !{!12, !12, i64 0}
!22 = !{!15, !7, i64 32}
!23 = !{!18, !7, i64 0}


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