; LLVM IR from DanEngelbrecht/longtail :: test/test.ll/ZN45Longtail_Longtail_PruneFSBlockStore (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.TestAsyncPutBlockComplete = type <{ %struct.Longtail_AsyncPutStoredBlockAPI, ptr, i32, [4 x i8] }>
%struct.Longtail_AsyncPutStoredBlockAPI = type { %struct.Longtail_API, ptr }
%struct.Longtail_API = type { ptr }
%struct.TestAsyncPruneBlocksComplete = type { %struct.Longtail_AsyncPruneBlocksAPI, ptr, i32, i32 }
%struct.Longtail_AsyncPruneBlocksAPI = type { %struct.Longtail_API, ptr }
%struct.TestAsyncGetBlockComplete = type { %struct.Longtail_AsyncGetStoredBlockAPI, ptr, i32, ptr }
%struct.Longtail_AsyncGetStoredBlockAPI = 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_BlockStoreAPI = type { %struct.Longtail_API, ptr, ptr, ptr, ptr, ptr, ptr, ptr }
%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_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_HashAPI = type { %struct.Longtail_API, 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.138 = external hidden unnamed_addr constant [2 x i8], align 1
@.str.232 = external hidden unnamed_addr constant [2 x i8], align 1
@.str.273 = external hidden unnamed_addr constant [12 x i8], align 1
@.str.323 = external hidden unnamed_addr constant [13 x i8], align 1
@.str.823 = external hidden unnamed_addr constant [13 x i8], align 1
@_ZZN45Longtail_Longtail_PruneFSBlockStore__TestCase8TestBodyEvE17BLOCK_CHUNK_SIZES = external hidden constant [4 x i32], align 16
@_ZZN45Longtail_Longtail_PruneFSBlockStore__TestCase8TestBodyEvE5block = external hidden global ptr, align 8
@_ZGVZN45Longtail_Longtail_PruneFSBlockStore__TestCase8TestBodyEvE5block = external hidden global i64, align 8
@.str.866 = external hidden unnamed_addr constant [70 x i8], align 1
@_ZZN45Longtail_Longtail_PruneFSBlockStore__TestCase8TestBodyEvE17BLOCK_CHUNK_SIZES_0 = external hidden constant [3 x i32], align 4
@_ZZN45Longtail_Longtail_PruneFSBlockStore__TestCase8TestBodyEvE5block_0 = external hidden global ptr, align 8
@_ZGVZN45Longtail_Longtail_PruneFSBlockStore__TestCase8TestBodyEvE5block_0 = external hidden global i64, align 8
@_ZZN45Longtail_Longtail_PruneFSBlockStore__TestCase8TestBodyEvE17BLOCK_CHUNK_SIZES_1 = external hidden constant [5 x i32], align 16
@_ZZN45Longtail_Longtail_PruneFSBlockStore__TestCase8TestBodyEvE5block_1 = external hidden global ptr, align 8
@_ZGVZN45Longtail_Longtail_PruneFSBlockStore__TestCase8TestBodyEvE5block_1 = external hidden global i64, align 8
@.str.867 = external hidden unnamed_addr constant [81 x i8], align 1
@.str.868 = external hidden unnamed_addr constant [14 x i8], align 1
@.str.869 = external hidden unnamed_addr constant [21 x i8], align 1
@.str.870 = external hidden unnamed_addr constant [81 x i8], align 1
@.str.871 = external hidden unnamed_addr constant [13 x i8], align 1
@.str.872 = external hidden unnamed_addr constant [81 x i8], align 1
@.str.873 = external hidden unnamed_addr constant [81 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

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

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

declare ptr @Longtail_CreateInMemStorageAPI() #2

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

; Function Attrs: mustprogress uwtable
declare dso_local void @_ZN25TestAsyncGetBlockCompleteC2Ev(ptr noundef nonnull align 8 dereferenceable(40)) unnamed_addr #3 align 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 uwtable
declare dso_local void @_ZN25TestAsyncGetBlockComplete4WaitEv(ptr noundef nonnull align 8 dereferenceable(40)) #3 align 2

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

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

; Function Attrs: nounwind
declare i32 @__cxa_guard_acquire(ptr) #5

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

; Function Attrs: nounwind
declare void @__cxa_guard_abort(ptr) #5

; Function Attrs: nounwind
declare void @__cxa_guard_release(ptr) #5

; Function Attrs: mustprogress uwtable
define dso_local void @_ZN45Longtail_Longtail_PruneFSBlockStore__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 [3 x i64], align 16
  %8 = alloca ptr, align 8
  %9 = alloca i32, align 4
  %10 = alloca %struct.TestAsyncPutBlockComplete, align 8
  %11 = alloca i32, align 4
  %12 = alloca i32, align 4
  %13 = alloca i32, align 4
  %14 = alloca i32, align 4
  %15 = alloca %struct.TestAsyncPutBlockComplete, align 8
  %16 = alloca i32, align 4
  %17 = alloca i32, align 4
  %18 = alloca i32, align 4
  %19 = alloca %struct.TestAsyncPutBlockComplete, align 8
  %20 = alloca i32, align 4
  %21 = alloca i32, align 4
  %22 = alloca i32, align 4
  %23 = alloca [2 x i64], align 16
  %24 = alloca %struct.TestAsyncPruneBlocksComplete, align 8
  %25 = alloca i32, align 4
  %26 = alloca i32, align 4
  %27 = alloca i32, align 4
  %28 = alloca i32, align 4
  %29 = alloca %struct.TestAsyncGetBlockComplete, align 8
  %30 = alloca i32, align 4
  %31 = alloca i32, align 4
  %32 = alloca i32, align 4
  %33 = alloca %struct.TestAsyncGetBlockComplete, align 8
  %34 = alloca i32, align 4
  %35 = alloca i32, align 4
  %36 = alloca %struct.TestAsyncGetBlockComplete, align 8
  %37 = alloca i32, align 4
  %38 = alloca i32, align 4
  %39 = alloca i32, align 4
  store ptr %0, ptr %2, align 8, !tbaa !5
  %40 = load ptr, ptr %2, align 8
  call void @llvm.lifetime.start.p0(i64 8, ptr %3) #5
  %41 = call ptr @Longtail_CreateBlake3HashAPI()
  store ptr %41, ptr %3, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %4) #5
  %42 = call ptr @Longtail_CreateInMemStorageAPI()
  store ptr %42, ptr %4, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %5) #5
  %43 = call ptr @Longtail_CreateBikeshedJobAPI(i32 noundef 0, i32 noundef 0)
  store ptr %43, ptr %5, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %6) #5
  %44 = load ptr, ptr %5, align 8, !tbaa !5
  %45 = load ptr, ptr %4, align 8, !tbaa !5
  %46 = call ptr @Longtail_CreateFSBlockStoreAPI(ptr noundef %44, ptr noundef %45, ptr noundef @.str.823, ptr noundef null, i32 noundef 0)
  store ptr %46, ptr %6, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 24, ptr %7) #5
  %47 = load atomic i8, ptr @_ZGVZN45Longtail_Longtail_PruneFSBlockStore__TestCase8TestBodyEvE5block acquire, align 8
  %48 = icmp eq i8 %47, 0
  br i1 %48, label %49, label %56, !prof !9

49:                                               ; preds = %1
  %50 = call i32 @__cxa_guard_acquire(ptr @_ZGVZN45Longtail_Longtail_PruneFSBlockStore__TestCase8TestBodyEvE5block) #5
  %51 = icmp ne i32 %50, 0
  br i1 %51, label %52, label %56

52:                                               ; preds = %49
  %53 = load ptr, ptr %3, align 8, !tbaa !5
  %54 = invoke noundef ptr @_ZL19GenerateStoredBlockP16Longtail_HashAPIjPKj(ptr noundef %53, i32 noundef 4, ptr noundef @_ZZN45Longtail_Longtail_PruneFSBlockStore__TestCase8TestBodyEvE17BLOCK_CHUNK_SIZES)
          to label %55 unwind label %81

55:                                               ; preds = %52
  store ptr %54, ptr @_ZZN45Longtail_Longtail_PruneFSBlockStore__TestCase8TestBodyEvE5block, align 8, !tbaa !5
  call void @__cxa_guard_release(ptr @_ZGVZN45Longtail_Longtail_PruneFSBlockStore__TestCase8TestBodyEvE5block) #5
  br label %56

56:                                               ; preds = %55, %49, %1
  call void @llvm.lifetime.start.p0(i64 32, ptr %10) #5
  call void @_ZN25TestAsyncPutBlockCompleteC2Ev(ptr noundef nonnull align 8 dereferenceable(28) %10)
  br label %57

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

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, 1836544
  store i32 %63, ptr %60, align 8
  %64 = invoke noundef ptr @_ZL19jc_test_get_fixturev()
          to label %65 unwind label %85

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 !10
  invoke void @_Z28jc_test_increment_assertionsv()
          to label %67 unwind label %85

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

75:                                               ; preds = %67
  store i32 %74, ptr %12, align 4, !tbaa !15
  %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) %11, ptr noundef nonnull align 4 dereferenceable(4) %12, ptr noundef @.str.46, ptr noundef @.str.866, ptr noundef null)
          to label %77 unwind label %89

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

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

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

81:                                               ; preds = %52
  %82 = landingpad { ptr, i32 }
          cleanup
  %83 = extractvalue { ptr, i32 } %82, 0
  store ptr %83, ptr %8, align 8
  %84 = extractvalue { ptr, i32 } %82, 1
  store i32 %84, ptr %9, align 4
  call void @__cxa_guard_abort(ptr @_ZGVZN45Longtail_Longtail_PruneFSBlockStore__TestCase8TestBodyEvE5block) #5
  br label %646

85:                                               ; preds = %120, %112, %105, %99, %97, %95, %79, %65, %59, %57
  %86 = landingpad { ptr, i32 }
          cleanup
  %87 = extractvalue { ptr, i32 } %86, 0
  store ptr %87, ptr %8, align 8
  %88 = extractvalue { ptr, i32 } %86, 1
  store i32 %88, ptr %9, align 4
  br label %171

89:                                               ; preds = %75, %67
  %90 = landingpad { ptr, i32 }
          cleanup
  %91 = extractvalue { ptr, i32 } %90, 0
  store ptr %91, ptr %8, align 8
  %92 = extractvalue { ptr, i32 } %90, 1
  store i32 %92, ptr %9, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %12) #5
  call void @llvm.lifetime.end.p0(i64 4, ptr %11) #5
  br label %171

93:                                               ; preds = %77
  br label %94

94:                                               ; preds = %93
  br label %95

95:                                               ; preds = %94
  invoke void @_ZN25TestAsyncPutBlockComplete4WaitEv(ptr noundef nonnull align 8 dereferenceable(28) %10)
          to label %96 unwind label %85

96:                                               ; preds = %95
  br label %97

97:                                               ; preds = %96
  %98 = invoke noundef ptr @_ZL19jc_test_get_fixturev()
          to label %99 unwind label %85

99:                                               ; preds = %97
  %100 = getelementptr inbounds %struct.jc_test_fixture, ptr %98, i32 0, i32 11
  %101 = load i32, ptr %100, align 8
  %102 = and i32 %101, -16776961
  %103 = or i32 %102, 1837056
  store i32 %103, ptr %100, align 8
  %104 = invoke noundef ptr @_ZL19jc_test_get_fixturev()
          to label %105 unwind label %85

105:                                              ; preds = %99
  %106 = getelementptr inbounds %struct.jc_test_fixture, ptr %104, i32 0, i32 4
  store ptr @.str.3, ptr %106, align 8, !tbaa !10
  invoke void @_Z28jc_test_increment_assertionsv()
          to label %107 unwind label %85

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

110:                                              ; preds = %107
  %111 = icmp eq i32 %109, 0
  call void @llvm.lifetime.end.p0(i64 4, ptr %14) #5
  br i1 %111, label %112, label %118

112:                                              ; preds = %110
  invoke void @_Z21jc_test_set_test_faili(i32 noundef 1)
          to label %113 unwind label %85

113:                                              ; preds = %112
  store i32 1, ptr %13, align 4
  br label %134

114:                                              ; preds = %107
  %115 = landingpad { ptr, i32 }
          cleanup
  %116 = extractvalue { ptr, i32 } %115, 0
  store ptr %116, ptr %8, align 8
  %117 = extractvalue { ptr, i32 } %115, 1
  store i32 %117, ptr %9, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %14) #5
  br label %171

118:                                              ; preds = %110
  br label %119

119:                                              ; preds = %118
  br label %120

120:                                              ; preds = %119
  %121 = load ptr, ptr @_ZZN45Longtail_Longtail_PruneFSBlockStore__TestCase8TestBodyEvE5block, align 8, !tbaa !5
  %122 = getelementptr inbounds %struct.Longtail_StoredBlock, ptr %121, i32 0, i32 1
  %123 = load ptr, ptr %122, align 8, !tbaa !19
  %124 = getelementptr inbounds %struct.Longtail_BlockIndex, ptr %123, i32 0, i32 0
  %125 = load ptr, ptr %124, align 8, !tbaa !21
  %126 = load i64, ptr %125, align 8, !tbaa !23
  %127 = getelementptr inbounds [3 x i64], ptr %7, i64 0, i64 0
  store i64 %126, ptr %127, align 16, !tbaa !23
  %128 = load ptr, ptr @_ZZN45Longtail_Longtail_PruneFSBlockStore__TestCase8TestBodyEvE5block, align 8, !tbaa !5
  %129 = getelementptr inbounds %struct.Longtail_StoredBlock, ptr %128, i32 0, i32 0
  %130 = load ptr, ptr %129, align 8, !tbaa !24
  %131 = load ptr, ptr @_ZZN45Longtail_Longtail_PruneFSBlockStore__TestCase8TestBodyEvE5block, align 8, !tbaa !5
  %132 = invoke noundef i32 %130(ptr noundef %131)
          to label %133 unwind label %85

133:                                              ; preds = %120
  store i32 0, ptr %13, align 4
  br label %134

134:                                              ; preds = %133, %113, %80
  call void @_ZN25TestAsyncPutBlockCompleteD2Ev(ptr noundef nonnull align 8 dereferenceable(28) %10) #5
  call void @llvm.lifetime.end.p0(i64 32, ptr %10) #5
  %135 = load i32, ptr %13, align 4
  switch i32 %135, label %642 [
    i32 0, label %136
  ]

136:                                              ; preds = %134
  %137 = load atomic i8, ptr @_ZGVZN45Longtail_Longtail_PruneFSBlockStore__TestCase8TestBodyEvE5block_0 acquire, align 8
  %138 = icmp eq i8 %137, 0
  br i1 %138, label %139, label %146, !prof !9

139:                                              ; preds = %136
  %140 = call i32 @__cxa_guard_acquire(ptr @_ZGVZN45Longtail_Longtail_PruneFSBlockStore__TestCase8TestBodyEvE5block_0) #5
  %141 = icmp ne i32 %140, 0
  br i1 %141, label %142, label %146

142:                                              ; preds = %139
  %143 = load ptr, ptr %3, align 8, !tbaa !5
  %144 = invoke noundef ptr @_ZL19GenerateStoredBlockP16Longtail_HashAPIjPKj(ptr noundef %143, i32 noundef 3, ptr noundef @_ZZN45Longtail_Longtail_PruneFSBlockStore__TestCase8TestBodyEvE17BLOCK_CHUNK_SIZES_0)
          to label %145 unwind label %172

145:                                              ; preds = %142
  store ptr %144, ptr @_ZZN45Longtail_Longtail_PruneFSBlockStore__TestCase8TestBodyEvE5block_0, align 8, !tbaa !5
  call void @__cxa_guard_release(ptr @_ZGVZN45Longtail_Longtail_PruneFSBlockStore__TestCase8TestBodyEvE5block_0) #5
  br label %146

146:                                              ; preds = %145, %139, %136
  call void @llvm.lifetime.start.p0(i64 32, ptr %15) #5
  call void @_ZN25TestAsyncPutBlockCompleteC2Ev(ptr noundef nonnull align 8 dereferenceable(28) %15)
  br label %147

147:                                              ; preds = %146
  %148 = invoke noundef ptr @_ZL19jc_test_get_fixturev()
          to label %149 unwind label %176

149:                                              ; preds = %147
  %150 = getelementptr inbounds %struct.jc_test_fixture, ptr %148, i32 0, i32 11
  %151 = load i32, ptr %150, align 8
  %152 = and i32 %151, -16776961
  %153 = or i32 %152, 1839616
  store i32 %153, ptr %150, align 8
  %154 = invoke noundef ptr @_ZL19jc_test_get_fixturev()
          to label %155 unwind label %176

155:                                              ; preds = %149
  %156 = getelementptr inbounds %struct.jc_test_fixture, ptr %154, i32 0, i32 4
  store ptr @.str.3, ptr %156, align 8, !tbaa !10
  invoke void @_Z28jc_test_increment_assertionsv()
          to label %157 unwind label %176

157:                                              ; preds = %155
  call void @llvm.lifetime.start.p0(i64 4, ptr %16) #5
  store i32 0, ptr %16, align 4, !tbaa !15
  call void @llvm.lifetime.start.p0(i64 4, ptr %17) #5
  %158 = load ptr, ptr %6, align 8, !tbaa !5
  %159 = getelementptr inbounds %struct.Longtail_BlockStoreAPI, ptr %158, i32 0, i32 1
  %160 = load ptr, ptr %159, align 8, !tbaa !16
  %161 = load ptr, ptr %6, align 8, !tbaa !5
  %162 = load ptr, ptr @_ZZN45Longtail_Longtail_PruneFSBlockStore__TestCase8TestBodyEvE5block_0, align 8, !tbaa !5
  %163 = getelementptr inbounds %struct.TestAsyncPutBlockComplete, ptr %15, i32 0, i32 0
  %164 = invoke noundef i32 %160(ptr noundef %161, ptr noundef %162, ptr noundef %163)
          to label %165 unwind label %180

165:                                              ; preds = %157
  store i32 %164, ptr %17, align 4, !tbaa !15
  %166 = 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) %16, ptr noundef nonnull align 4 dereferenceable(4) %17, ptr noundef @.str.46, ptr noundef @.str.866, ptr noundef null)
          to label %167 unwind label %180

167:                                              ; preds = %165
  %168 = icmp eq i32 %166, 0
  call void @llvm.lifetime.end.p0(i64 4, ptr %17) #5
  call void @llvm.lifetime.end.p0(i64 4, ptr %16) #5
  br i1 %168, label %169, label %184

169:                                              ; preds = %167
  invoke void @_Z21jc_test_set_test_faili(i32 noundef 1)
          to label %170 unwind label %176

170:                                              ; preds = %169
  store i32 1, ptr %13, align 4
  br label %225

171:                                              ; preds = %114, %89, %85
  call void @_ZN25TestAsyncPutBlockCompleteD2Ev(ptr noundef nonnull align 8 dereferenceable(28) %10) #5
  call void @llvm.lifetime.end.p0(i64 32, ptr %10) #5
  br label %646

172:                                              ; preds = %142
  %173 = landingpad { ptr, i32 }
          cleanup
  %174 = extractvalue { ptr, i32 } %173, 0
  store ptr %174, ptr %8, align 8
  %175 = extractvalue { ptr, i32 } %173, 1
  store i32 %175, ptr %9, align 4
  call void @__cxa_guard_abort(ptr @_ZGVZN45Longtail_Longtail_PruneFSBlockStore__TestCase8TestBodyEvE5block_0) #5
  br label %646

176:                                              ; preds = %211, %203, %196, %190, %188, %186, %169, %155, %149, %147
  %177 = landingpad { ptr, i32 }
          cleanup
  %178 = extractvalue { ptr, i32 } %177, 0
  store ptr %178, ptr %8, align 8
  %179 = extractvalue { ptr, i32 } %177, 1
  store i32 %179, ptr %9, align 4
  br label %262

180:                                              ; preds = %165, %157
  %181 = landingpad { ptr, i32 }
          cleanup
  %182 = extractvalue { ptr, i32 } %181, 0
  store ptr %182, ptr %8, align 8
  %183 = extractvalue { ptr, i32 } %181, 1
  store i32 %183, ptr %9, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %17) #5
  call void @llvm.lifetime.end.p0(i64 4, ptr %16) #5
  br label %262

184:                                              ; preds = %167
  br label %185

185:                                              ; preds = %184
  br label %186

186:                                              ; preds = %185
  invoke void @_ZN25TestAsyncPutBlockComplete4WaitEv(ptr noundef nonnull align 8 dereferenceable(28) %15)
          to label %187 unwind label %176

187:                                              ; preds = %186
  br label %188

188:                                              ; preds = %187
  %189 = invoke noundef ptr @_ZL19jc_test_get_fixturev()
          to label %190 unwind label %176

190:                                              ; preds = %188
  %191 = getelementptr inbounds %struct.jc_test_fixture, ptr %189, i32 0, i32 11
  %192 = load i32, ptr %191, align 8
  %193 = and i32 %192, -16776961
  %194 = or i32 %193, 1840128
  store i32 %194, ptr %191, align 8
  %195 = invoke noundef ptr @_ZL19jc_test_get_fixturev()
          to label %196 unwind label %176

196:                                              ; preds = %190
  %197 = getelementptr inbounds %struct.jc_test_fixture, ptr %195, i32 0, i32 4
  store ptr @.str.3, ptr %197, align 8, !tbaa !10
  invoke void @_Z28jc_test_increment_assertionsv()
          to label %198 unwind label %176

198:                                              ; preds = %196
  call void @llvm.lifetime.start.p0(i64 4, ptr %18) #5
  store i32 0, ptr %18, align 4, !tbaa !15
  %199 = getelementptr inbounds %struct.TestAsyncPutBlockComplete, ptr %15, i32 0, i32 2
  %200 = 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) %18, ptr noundef nonnull align 4 dereferenceable(4) %199, ptr noundef @.str.46, ptr noundef @.str.273, ptr noundef null)
          to label %201 unwind label %205

201:                                              ; preds = %198
  %202 = icmp eq i32 %200, 0
  call void @llvm.lifetime.end.p0(i64 4, ptr %18) #5
  br i1 %202, label %203, label %209

203:                                              ; preds = %201
  invoke void @_Z21jc_test_set_test_faili(i32 noundef 1)
          to label %204 unwind label %176

204:                                              ; preds = %203
  store i32 1, ptr %13, align 4
  br label %225

205:                                              ; preds = %198
  %206 = landingpad { ptr, i32 }
          cleanup
  %207 = extractvalue { ptr, i32 } %206, 0
  store ptr %207, ptr %8, align 8
  %208 = extractvalue { ptr, i32 } %206, 1
  store i32 %208, ptr %9, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %18) #5
  br label %262

209:                                              ; preds = %201
  br label %210

210:                                              ; preds = %209
  br label %211

211:                                              ; preds = %210
  %212 = load ptr, ptr @_ZZN45Longtail_Longtail_PruneFSBlockStore__TestCase8TestBodyEvE5block_0, align 8, !tbaa !5
  %213 = getelementptr inbounds %struct.Longtail_StoredBlock, ptr %212, i32 0, i32 1
  %214 = load ptr, ptr %213, align 8, !tbaa !19
  %215 = getelementptr inbounds %struct.Longtail_BlockIndex, ptr %214, i32 0, i32 0
  %216 = load ptr, ptr %215, align 8, !tbaa !21
  %217 = load i64, ptr %216, align 8, !tbaa !23
  %218 = getelementptr inbounds [3 x i64], ptr %7, i64 0, i64 1
  store i64 %217, ptr %218, align 8, !tbaa !23
  %219 = load ptr, ptr @_ZZN45Longtail_Longtail_PruneFSBlockStore__TestCase8TestBodyEvE5block_0, align 8, !tbaa !5
  %220 = getelementptr inbounds %struct.Longtail_StoredBlock, ptr %219, i32 0, i32 0
  %221 = load ptr, ptr %220, align 8, !tbaa !24
  %222 = load ptr, ptr @_ZZN45Longtail_Longtail_PruneFSBlockStore__TestCase8TestBodyEvE5block_0, align 8, !tbaa !5
  %223 = invoke noundef i32 %221(ptr noundef %222)
          to label %224 unwind label %176

224:                                              ; preds = %211
  store i32 0, ptr %13, align 4
  br label %225

225:                                              ; preds = %224, %204, %170
  call void @_ZN25TestAsyncPutBlockCompleteD2Ev(ptr noundef nonnull align 8 dereferenceable(28) %15) #5
  call void @llvm.lifetime.end.p0(i64 32, ptr %15) #5
  %226 = load i32, ptr %13, align 4
  switch i32 %226, label %642 [
    i32 0, label %227
  ]

227:                                              ; preds = %225
  %228 = load atomic i8, ptr @_ZGVZN45Longtail_Longtail_PruneFSBlockStore__TestCase8TestBodyEvE5block_1 acquire, align 8
  %229 = icmp eq i8 %228, 0
  br i1 %229, label %230, label %237, !prof !9

230:                                              ; preds = %227
  %231 = call i32 @__cxa_guard_acquire(ptr @_ZGVZN45Longtail_Longtail_PruneFSBlockStore__TestCase8TestBodyEvE5block_1) #5
  %232 = icmp ne i32 %231, 0
  br i1 %232, label %233, label %237

233:                                              ; preds = %230
  %234 = load ptr, ptr %3, align 8, !tbaa !5
  %235 = invoke noundef ptr @_ZL19GenerateStoredBlockP16Longtail_HashAPIjPKj(ptr noundef %234, i32 noundef 5, ptr noundef @_ZZN45Longtail_Longtail_PruneFSBlockStore__TestCase8TestBodyEvE17BLOCK_CHUNK_SIZES_1)
          to label %236 unwind label %263

236:                                              ; preds = %233
  store ptr %235, ptr @_ZZN45Longtail_Longtail_PruneFSBlockStore__TestCase8TestBodyEvE5block_1, align 8, !tbaa !5
  call void @__cxa_guard_release(ptr @_ZGVZN45Longtail_Longtail_PruneFSBlockStore__TestCase8TestBodyEvE5block_1) #5
  br label %237

237:                                              ; preds = %236, %230, %227
  call void @llvm.lifetime.start.p0(i64 32, ptr %19) #5
  call void @_ZN25TestAsyncPutBlockCompleteC2Ev(ptr noundef nonnull align 8 dereferenceable(28) %19)
  br label %238

238:                                              ; preds = %237
  %239 = invoke noundef ptr @_ZL19jc_test_get_fixturev()
          to label %240 unwind label %267

240:                                              ; preds = %238
  %241 = getelementptr inbounds %struct.jc_test_fixture, ptr %239, i32 0, i32 11
  %242 = load i32, ptr %241, align 8
  %243 = and i32 %242, -16776961
  %244 = or i32 %243, 1842688
  store i32 %244, ptr %241, align 8
  %245 = invoke noundef ptr @_ZL19jc_test_get_fixturev()
          to label %246 unwind label %267

246:                                              ; preds = %240
  %247 = getelementptr inbounds %struct.jc_test_fixture, ptr %245, i32 0, i32 4
  store ptr @.str.3, ptr %247, align 8, !tbaa !10
  invoke void @_Z28jc_test_increment_assertionsv()
          to label %248 unwind label %267

248:                                              ; preds = %246
  call void @llvm.lifetime.start.p0(i64 4, ptr %20) #5
  store i32 0, ptr %20, align 4, !tbaa !15
  call void @llvm.lifetime.start.p0(i64 4, ptr %21) #5
  %249 = load ptr, ptr %6, align 8, !tbaa !5
  %250 = getelementptr inbounds %struct.Longtail_BlockStoreAPI, ptr %249, i32 0, i32 1
  %251 = load ptr, ptr %250, align 8, !tbaa !16
  %252 = load ptr, ptr %6, align 8, !tbaa !5
  %253 = load ptr, ptr @_ZZN45Longtail_Longtail_PruneFSBlockStore__TestCase8TestBodyEvE5block_1, align 8, !tbaa !5
  %254 = getelementptr inbounds %struct.TestAsyncPutBlockComplete, ptr %19, i32 0, i32 0
  %255 = invoke noundef i32 %251(ptr noundef %252, ptr noundef %253, ptr noundef %254)
          to label %256 unwind label %271

256:                                              ; preds = %248
  store i32 %255, ptr %21, align 4, !tbaa !15
  %257 = 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) %20, ptr noundef nonnull align 4 dereferenceable(4) %21, ptr noundef @.str.46, ptr noundef @.str.866, ptr noundef null)
          to label %258 unwind label %271

258:                                              ; preds = %256
  %259 = icmp eq i32 %257, 0
  call void @llvm.lifetime.end.p0(i64 4, ptr %21) #5
  call void @llvm.lifetime.end.p0(i64 4, ptr %20) #5
  br i1 %259, label %260, label %275

260:                                              ; preds = %258
  invoke void @_Z21jc_test_set_test_faili(i32 noundef 1)
          to label %261 unwind label %267

261:                                              ; preds = %260
  store i32 1, ptr %13, align 4
  br label %316

262:                                              ; preds = %205, %180, %176
  call void @_ZN25TestAsyncPutBlockCompleteD2Ev(ptr noundef nonnull align 8 dereferenceable(28) %15) #5
  call void @llvm.lifetime.end.p0(i64 32, ptr %15) #5
  br label %646

263:                                              ; preds = %233
  %264 = landingpad { ptr, i32 }
          cleanup
  %265 = extractvalue { ptr, i32 } %264, 0
  store ptr %265, ptr %8, align 8
  %266 = extractvalue { ptr, i32 } %264, 1
  store i32 %266, ptr %9, align 4
  call void @__cxa_guard_abort(ptr @_ZGVZN45Longtail_Longtail_PruneFSBlockStore__TestCase8TestBodyEvE5block_1) #5
  br label %646

267:                                              ; preds = %302, %294, %287, %281, %279, %277, %260, %246, %240, %238
  %268 = landingpad { ptr, i32 }
          cleanup
  %269 = extractvalue { ptr, i32 } %268, 0
  store ptr %269, ptr %8, align 8
  %270 = extractvalue { ptr, i32 } %268, 1
  store i32 %270, ptr %9, align 4
  br label %348

271:                                              ; preds = %256, %248
  %272 = landingpad { ptr, i32 }
          cleanup
  %273 = extractvalue { ptr, i32 } %272, 0
  store ptr %273, ptr %8, align 8
  %274 = extractvalue { ptr, i32 } %272, 1
  store i32 %274, ptr %9, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %21) #5
  call void @llvm.lifetime.end.p0(i64 4, ptr %20) #5
  br label %348

275:                                              ; preds = %258
  br label %276

276:                                              ; preds = %275
  br label %277

277:                                              ; preds = %276
  invoke void @_ZN25TestAsyncPutBlockComplete4WaitEv(ptr noundef nonnull align 8 dereferenceable(28) %19)
          to label %278 unwind label %267

278:                                              ; preds = %277
  br label %279

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

281:                                              ; preds = %279
  %282 = getelementptr inbounds %struct.jc_test_fixture, ptr %280, i32 0, i32 11
  %283 = load i32, ptr %282, align 8
  %284 = and i32 %283, -16776961
  %285 = or i32 %284, 1843200
  store i32 %285, ptr %282, align 8
  %286 = invoke noundef ptr @_ZL19jc_test_get_fixturev()
          to label %287 unwind label %267

287:                                              ; preds = %281
  %288 = getelementptr inbounds %struct.jc_test_fixture, ptr %286, i32 0, i32 4
  store ptr @.str.3, ptr %288, align 8, !tbaa !10
  invoke void @_Z28jc_test_increment_assertionsv()
          to label %289 unwind label %267

289:                                              ; preds = %287
  call void @llvm.lifetime.start.p0(i64 4, ptr %22) #5
  store i32 0, ptr %22, align 4, !tbaa !15
  %290 = getelementptr inbounds %struct.TestAsyncPutBlockComplete, ptr %19, i32 0, i32 2
  %291 = 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) %22, ptr noundef nonnull align 4 dereferenceable(4) %290, ptr noundef @.str.46, ptr noundef @.str.273, ptr noundef null)
          to label %292 unwind label %296

292:                                              ; preds = %289
  %293 = icmp eq i32 %291, 0
  call void @llvm.lifetime.end.p0(i64 4, ptr %22) #5
  br i1 %293, label %294, label %300

294:                                              ; preds = %292
  invoke void @_Z21jc_test_set_test_faili(i32 noundef 1)
          to label %295 unwind label %267

295:                                              ; preds = %294
  store i32 1, ptr %13, align 4
  br label %316

296:                                              ; preds = %289
  %297 = landingpad { ptr, i32 }
          cleanup
  %298 = extractvalue { ptr, i32 } %297, 0
  store ptr %298, ptr %8, align 8
  %299 = extractvalue { ptr, i32 } %297, 1
  store i32 %299, ptr %9, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %22) #5
  br label %348

300:                                              ; preds = %292
  br label %301

301:                                              ; preds = %300
  br label %302

302:                                              ; preds = %301
  %303 = load ptr, ptr @_ZZN45Longtail_Longtail_PruneFSBlockStore__TestCase8TestBodyEvE5block_1, align 8, !tbaa !5
  %304 = getelementptr inbounds %struct.Longtail_StoredBlock, ptr %303, i32 0, i32 1
  %305 = load ptr, ptr %304, align 8, !tbaa !19
  %306 = getelementptr inbounds %struct.Longtail_BlockIndex, ptr %305, i32 0, i32 0
  %307 = load ptr, ptr %306, align 8, !tbaa !21
  %308 = load i64, ptr %307, align 8, !tbaa !23
  %309 = getelementptr inbounds [3 x i64], ptr %7, i64 0, i64 2
  store i64 %308, ptr %309, align 16, !tbaa !23
  %310 = load ptr, ptr @_ZZN45Longtail_Longtail_PruneFSBlockStore__TestCase8TestBodyEvE5block_1, align 8, !tbaa !5
  %311 = getelementptr inbounds %struct.Longtail_StoredBlock, ptr %310, i32 0, i32 0
  %312 = load ptr, ptr %311, align 8, !tbaa !24
  %313 = load ptr, ptr @_ZZN45Longtail_Longtail_PruneFSBlockStore__TestCase8TestBodyEvE5block_1, align 8, !tbaa !5
  %314 = invoke noundef i32 %312(ptr noundef %313)
          to label %315 unwind label %267

315:                                              ; preds = %302
  store i32 0, ptr %13, align 4
  br label %316

316:                                              ; preds = %315, %295, %261
  call void @_ZN25TestAsyncPutBlockCompleteD2Ev(ptr noundef nonnull align 8 dereferenceable(28) %19) #5
  call void @llvm.lifetime.end.p0(i64 32, ptr %19) #5
  %317 = load i32, ptr %13, align 4
  switch i32 %317, label %642 [
    i32 0, label %318
  ]

318:                                              ; preds = %316
  call void @llvm.lifetime.start.p0(i64 16, ptr %23) #5
  %319 = getelementptr inbounds [3 x i64], ptr %7, i64 0, i64 0
  %320 = load i64, ptr %319, align 16, !tbaa !23
  store i64 %320, ptr %23, align 8, !tbaa !23
  %321 = getelementptr inbounds i64, ptr %23, i64 1
  %322 = getelementptr inbounds [3 x i64], ptr %7, i64 0, i64 2
  %323 = load i64, ptr %322, align 16, !tbaa !23
  store i64 %323, ptr %321, align 8, !tbaa !23
  call void @llvm.lifetime.start.p0(i64 32, ptr %24) #5
  call void @_ZN28TestAsyncPruneBlocksCompleteC2Ev(ptr noundef nonnull align 8 dereferenceable(32) %24)
  br label %324

324:                                              ; preds = %318
  %325 = invoke noundef ptr @_ZL19jc_test_get_fixturev()
          to label %326 unwind label %349

326:                                              ; preds = %324
  %327 = getelementptr inbounds %struct.jc_test_fixture, ptr %325, i32 0, i32 11
  %328 = load i32, ptr %327, align 8
  %329 = and i32 %328, -16776961
  %330 = or i32 %329, 1844992
  store i32 %330, ptr %327, align 8
  %331 = invoke noundef ptr @_ZL19jc_test_get_fixturev()
          to label %332 unwind label %349

332:                                              ; preds = %326
  %333 = getelementptr inbounds %struct.jc_test_fixture, ptr %331, i32 0, i32 4
  store ptr @.str.3, ptr %333, align 8, !tbaa !10
  invoke void @_Z28jc_test_increment_assertionsv()
          to label %334 unwind label %349

334:                                              ; preds = %332
  call void @llvm.lifetime.start.p0(i64 4, ptr %25) #5
  store i32 0, ptr %25, align 4, !tbaa !15
  call void @llvm.lifetime.start.p0(i64 4, ptr %26) #5
  %335 = load ptr, ptr %6, align 8, !tbaa !5
  %336 = getelementptr inbounds %struct.Longtail_BlockStoreAPI, ptr %335, i32 0, i32 5
  %337 = load ptr, ptr %336, align 8, !tbaa !25
  %338 = load ptr, ptr %6, align 8, !tbaa !5
  %339 = getelementptr inbounds [2 x i64], ptr %23, i64 0, i64 0
  %340 = getelementptr inbounds %struct.TestAsyncPruneBlocksComplete, ptr %24, i32 0, i32 0
  %341 = invoke noundef i32 %337(ptr noundef %338, i32 noundef 2, ptr noundef %339, ptr noundef %340)
          to label %342 unwind label %353

342:                                              ; preds = %334
  store i32 %341, ptr %26, align 4, !tbaa !15
  %343 = 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) %25, ptr noundef nonnull align 4 dereferenceable(4) %26, ptr noundef @.str.46, ptr noundef @.str.867, ptr noundef null)
          to label %344 unwind label %353

344:                                              ; preds = %342
  %345 = icmp eq i32 %343, 0
  call void @llvm.lifetime.end.p0(i64 4, ptr %26) #5
  call void @llvm.lifetime.end.p0(i64 4, ptr %25) #5
  br i1 %345, label %346, label %357

346:                                              ; preds = %344
  invoke void @_Z21jc_test_set_test_faili(i32 noundef 1)
          to label %347 unwind label %349

347:                                              ; preds = %346
  store i32 1, ptr %13, align 4
  br label %641

348:                                              ; preds = %296, %271, %267
  call void @_ZN25TestAsyncPutBlockCompleteD2Ev(ptr noundef nonnull align 8 dereferenceable(28) %19) #5
  call void @llvm.lifetime.end.p0(i64 32, ptr %19) #5
  br label %646

349:                                              ; preds = %636, %629, %622, %613, %400, %393, %387, %385, %376, %369, %363, %361, %359, %346, %332, %326, %324
  %350 = landingpad { ptr, i32 }
          cleanup
  %351 = extractvalue { ptr, i32 } %350, 0
  store ptr %351, ptr %8, align 8
  %352 = extractvalue { ptr, i32 } %350, 1
  store i32 %352, ptr %9, align 4
  br label %645

353:                                              ; preds = %342, %334
  %354 = landingpad { ptr, i32 }
          cleanup
  %355 = extractvalue { ptr, i32 } %354, 0
  store ptr %355, ptr %8, align 8
  %356 = extractvalue { ptr, i32 } %354, 1
  store i32 %356, ptr %9, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %26) #5
  call void @llvm.lifetime.end.p0(i64 4, ptr %25) #5
  br label %645

357:                                              ; preds = %344
  br label %358

358:                                              ; preds = %357
  br label %359

359:                                              ; preds = %358
  invoke void @_ZN28TestAsyncPruneBlocksComplete4WaitEv(ptr noundef nonnull align 8 dereferenceable(32) %24)
          to label %360 unwind label %349

360:                                              ; preds = %359
  br label %361

361:                                              ; preds = %360
  %362 = invoke noundef ptr @_ZL19jc_test_get_fixturev()
          to label %363 unwind label %349

363:                                              ; preds = %361
  %364 = getelementptr inbounds %struct.jc_test_fixture, ptr %362, i32 0, i32 11
  %365 = load i32, ptr %364, align 8
  %366 = and i32 %365, -16776961
  %367 = or i32 %366, 1845504
  store i32 %367, ptr %364, align 8
  %368 = invoke noundef ptr @_ZL19jc_test_get_fixturev()
          to label %369 unwind label %349

369:                                              ; preds = %363
  %370 = getelementptr inbounds %struct.jc_test_fixture, ptr %368, i32 0, i32 4
  store ptr @.str.3, ptr %370, align 8, !tbaa !10
  invoke void @_Z28jc_test_increment_assertionsv()
          to label %371 unwind label %349

371:                                              ; preds = %369
  call void @llvm.lifetime.start.p0(i64 4, ptr %27) #5
  store i32 0, ptr %27, align 4, !tbaa !15
  %372 = getelementptr inbounds %struct.TestAsyncPruneBlocksComplete, ptr %24, i32 0, i32 3
  %373 = 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) %372, ptr noundef @.str.46, ptr noundef @.str.868, ptr noundef null)
          to label %374 unwind label %378

374:                                              ; preds = %371
  %375 = icmp eq i32 %373, 0
  call void @llvm.lifetime.end.p0(i64 4, ptr %27) #5
  br i1 %375, label %376, label %382

376:                                              ; preds = %374
  invoke void @_Z21jc_test_set_test_faili(i32 noundef 1)
          to label %377 unwind label %349

377:                                              ; preds = %376
  store i32 1, ptr %13, align 4
  br label %641

378:                                              ; preds = %371
  %379 = landingpad { ptr, i32 }
          cleanup
  %380 = extractvalue { ptr, i32 } %379, 0
  store ptr %380, ptr %8, align 8
  %381 = extractvalue { ptr, i32 } %379, 1
  store i32 %381, ptr %9, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %27) #5
  br label %645

382:                                              ; preds = %374
  br label %383

383:                                              ; preds = %382
  br label %384

384:                                              ; preds = %383
  br label %385

385:                                              ; preds = %384
  %386 = invoke noundef ptr @_ZL19jc_test_get_fixturev()
          to label %387 unwind label %349

387:                                              ; preds = %385
  %388 = getelementptr inbounds %struct.jc_test_fixture, ptr %386, i32 0, i32 11
  %389 = load i32, ptr %388, align 8
  %390 = and i32 %389, -16776961
  %391 = or i32 %390, 1845760
  store i32 %391, ptr %388, align 8
  %392 = invoke noundef ptr @_ZL19jc_test_get_fixturev()
          to label %393 unwind label %349

393:                                              ; preds = %387
  %394 = getelementptr inbounds %struct.jc_test_fixture, ptr %392, i32 0, i32 4
  store ptr @.str.3, ptr %394, align 8, !tbaa !10
  invoke void @_Z28jc_test_increment_assertionsv()
          to label %395 unwind label %349

395:                                              ; preds = %393
  call void @llvm.lifetime.start.p0(i64 4, ptr %28) #5
  store i32 1, ptr %28, align 4, !tbaa !15
  %396 = getelementptr inbounds %struct.TestAsyncPruneBlocksComplete, ptr %24, i32 0, i32 2
  %397 = invoke noundef i32 @_ZN21jc_test_cmp_eq_helperILb0EE7compareIijEEiRKT_RKT0_PKcS9_(ptr noundef nonnull align 4 dereferenceable(4) %28, ptr noundef nonnull align 4 dereferenceable(4) %396, ptr noundef @.str.232, ptr noundef @.str.869)
          to label %398 unwind label %402

398:                                              ; preds = %395
  %399 = icmp eq i32 %397, 0
  call void @llvm.lifetime.end.p0(i64 4, ptr %28) #5
  br i1 %399, label %400, label %406

400:                                              ; preds = %398
  invoke void @_Z21jc_test_set_test_faili(i32 noundef 1)
          to label %401 unwind label %349

401:                                              ; preds = %400
  store i32 1, ptr %13, align 4
  br label %641

402:                                              ; preds = %395
  %403 = landingpad { ptr, i32 }
          cleanup
  %404 = extractvalue { ptr, i32 } %403, 0
  store ptr %404, ptr %8, align 8
  %405 = extractvalue { ptr, i32 } %403, 1
  store i32 %405, ptr %9, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %28) #5
  br label %645

406:                                              ; preds = %398
  br label %407

407:                                              ; preds = %406
  br label %408

408:                                              ; preds = %407
  call void @llvm.lifetime.start.p0(i64 40, ptr %29) #5
  invoke void @_ZN25TestAsyncGetBlockCompleteC2Ev(ptr noundef nonnull align 8 dereferenceable(40) %29)
          to label %409 unwind label %435

409:                                              ; preds = %408
  br label %410

410:                                              ; preds = %409
  %411 = invoke noundef ptr @_ZL19jc_test_get_fixturev()
          to label %412 unwind label %439

412:                                              ; preds = %410
  %413 = getelementptr inbounds %struct.jc_test_fixture, ptr %411, i32 0, i32 11
  %414 = load i32, ptr %413, align 8
  %415 = and i32 %414, -16776961
  %416 = or i32 %415, 1846784
  store i32 %416, ptr %413, align 8
  %417 = invoke noundef ptr @_ZL19jc_test_get_fixturev()
          to label %418 unwind label %439

418:                                              ; preds = %412
  %419 = getelementptr inbounds %struct.jc_test_fixture, ptr %417, i32 0, i32 4
  store ptr @.str.3, ptr %419, align 8, !tbaa !10
  invoke void @_Z28jc_test_increment_assertionsv()
          to label %420 unwind label %439

420:                                              ; preds = %418
  call void @llvm.lifetime.start.p0(i64 4, ptr %30) #5
  store i32 0, ptr %30, align 4, !tbaa !15
  call void @llvm.lifetime.start.p0(i64 4, ptr %31) #5
  %421 = load ptr, ptr %6, align 8, !tbaa !5
  %422 = getelementptr inbounds %struct.Longtail_BlockStoreAPI, ptr %421, i32 0, i32 3
  %423 = load ptr, ptr %422, align 8, !tbaa !26
  %424 = load ptr, ptr %6, align 8, !tbaa !5
  %425 = getelementptr inbounds [3 x i64], ptr %7, i64 0, i64 0
  %426 = load i64, ptr %425, align 16, !tbaa !23
  %427 = getelementptr inbounds %struct.TestAsyncGetBlockComplete, ptr %29, i32 0, i32 0
  %428 = invoke noundef i32 %423(ptr noundef %424, i64 noundef %426, ptr noundef %427)
          to label %429 unwind label %443

429:                                              ; preds = %420
  store i32 %428, ptr %31, align 4, !tbaa !15
  %430 = 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) %30, ptr noundef nonnull align 4 dereferenceable(4) %31, ptr noundef @.str.46, ptr noundef @.str.870, ptr noundef null)
          to label %431 unwind label %443

431:                                              ; preds = %429
  %432 = icmp eq i32 %430, 0
  call void @llvm.lifetime.end.p0(i64 4, ptr %31) #5
  call void @llvm.lifetime.end.p0(i64 4, ptr %30) #5
  br i1 %432, label %433, label %447

433:                                              ; preds = %431
  invoke void @_Z21jc_test_set_test_faili(i32 noundef 1)
          to label %434 unwind label %439

434:                                              ; preds = %433
  store i32 1, ptr %13, align 4
  br label %483

435:                                              ; preds = %408
  %436 = landingpad { ptr, i32 }
          cleanup
  %437 = extractvalue { ptr, i32 } %436, 0
  store ptr %437, ptr %8, align 8
  %438 = extractvalue { ptr, i32 } %436, 1
  store i32 %438, ptr %9, align 4
  br label %513

439:                                              ; preds = %474, %467, %461, %459, %450, %449, %433, %418, %412, %410
  %440 = landingpad { ptr, i32 }
          cleanup
  %441 = extractvalue { ptr, i32 } %440, 0
  store ptr %441, ptr %8, align 8
  %442 = extractvalue { ptr, i32 } %440, 1
  store i32 %442, ptr %9, align 4
  br label %512

443:                                              ; preds = %429, %420
  %444 = landingpad { ptr, i32 }
          cleanup
  %445 = extractvalue { ptr, i32 } %444, 0
  store ptr %445, ptr %8, align 8
  %446 = extractvalue { ptr, i32 } %444, 1
  store i32 %446, ptr %9, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %31) #5
  call void @llvm.lifetime.end.p0(i64 4, ptr %30) #5
  br label %512

447:                                              ; preds = %431
  br label %448

448:                                              ; preds = %447
  br label %449

449:                                              ; preds = %448
  invoke void @_ZN25TestAsyncGetBlockComplete4WaitEv(ptr noundef nonnull align 8 dereferenceable(40) %29)
          to label %450 unwind label %439

450:                                              ; preds = %449
  %451 = getelementptr inbounds %struct.TestAsyncGetBlockComplete, ptr %29, i32 0, i32 3
  %452 = load ptr, ptr %451, align 8, !tbaa !27
  %453 = getelementptr inbounds %struct.Longtail_StoredBlock, ptr %452, i32 0, i32 0
  %454 = load ptr, ptr %453, align 8, !tbaa !24
  %455 = getelementptr inbounds %struct.TestAsyncGetBlockComplete, ptr %29, i32 0, i32 3
  %456 = load ptr, ptr %455, align 8, !tbaa !27
  %457 = invoke noundef i32 %454(ptr noundef %456)
          to label %458 unwind label %439

458:                                              ; preds = %450
  br label %459

459:                                              ; preds = %458
  %460 = invoke noundef ptr @_ZL19jc_test_get_fixturev()
          to label %461 unwind label %439

461:                                              ; preds = %459
  %462 = getelementptr inbounds %struct.jc_test_fixture, ptr %460, i32 0, i32 11
  %463 = load i32, ptr %462, align 8
  %464 = and i32 %463, -16776961
  %465 = or i32 %464, 1847552
  store i32 %465, ptr %462, align 8
  %466 = invoke noundef ptr @_ZL19jc_test_get_fixturev()
          to label %467 unwind label %439

467:                                              ; preds = %461
  %468 = getelementptr inbounds %struct.jc_test_fixture, ptr %466, i32 0, i32 4
  store ptr @.str.3, ptr %468, align 8, !tbaa !10
  invoke void @_Z28jc_test_increment_assertionsv()
          to label %469 unwind label %439

469:                                              ; preds = %467
  call void @llvm.lifetime.start.p0(i64 4, ptr %32) #5
  store i32 0, ptr %32, align 4, !tbaa !15
  %470 = getelementptr inbounds %struct.TestAsyncGetBlockComplete, ptr %29, i32 0, i32 2
  %471 = 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) %470, ptr noundef @.str.46, ptr noundef @.str.871, ptr noundef null)
          to label %472 unwind label %476

472:                                              ; preds = %469
  %473 = icmp eq i32 %471, 0
  call void @llvm.lifetime.end.p0(i64 4, ptr %32) #5
  br i1 %473, label %474, label %480

474:                                              ; preds = %472
  invoke void @_Z21jc_test_set_test_faili(i32 noundef 1)
          to label %475 unwind label %439

475:                                              ; preds = %474
  store i32 1, ptr %13, align 4
  br label %483

476:                                              ; preds = %469
  %477 = landingpad { ptr, i32 }
          cleanup
  %478 = extractvalue { ptr, i32 } %477, 0
  store ptr %478, ptr %8, align 8
  %479 = extractvalue { ptr, i32 } %477, 1
  store i32 %479, ptr %9, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %32) #5
  br label %512

480:                                              ; preds = %472
  br label %481

481:                                              ; preds = %480
  br label %482

482:                                              ; preds = %481
  store i32 0, ptr %13, align 4
  br label %483

483:                                              ; preds = %482, %475, %434
  call void @_ZN25TestAsyncGetBlockCompleteD2Ev(ptr noundef nonnull align 8 dereferenceable(40) %29) #5
  call void @llvm.lifetime.end.p0(i64 40, ptr %29) #5
  %484 = load i32, ptr %13, align 4
  switch i32 %484, label %641 [
    i32 0, label %485
  ]

485:                                              ; preds = %483
  call void @llvm.lifetime.start.p0(i64 40, ptr %33) #5
  invoke void @_ZN25TestAsyncGetBlockCompleteC2Ev(ptr noundef nonnull align 8 dereferenceable(40) %33)
          to label %486 unwind label %514

486:                                              ; preds = %485
  br label %487

487:                                              ; preds = %486
  %488 = invoke noundef ptr @_ZL19jc_test_get_fixturev()
          to label %489 unwind label %518

489:                                              ; preds = %487
  %490 = getelementptr inbounds %struct.jc_test_fixture, ptr %488, i32 0, i32 11
  %491 = load i32, ptr %490, align 8
  %492 = and i32 %491, -16776961
  %493 = or i32 %492, 1848832
  store i32 %493, ptr %490, align 8
  %494 = invoke noundef ptr @_ZL19jc_test_get_fixturev()
          to label %495 unwind label %518

495:                                              ; preds = %489
  %496 = getelementptr inbounds %struct.jc_test_fixture, ptr %494, i32 0, i32 4
  store ptr @.str.3, ptr %496, align 8, !tbaa !10
  invoke void @_Z28jc_test_increment_assertionsv()
          to label %497 unwind label %518

497:                                              ; preds = %495
  call void @llvm.lifetime.start.p0(i64 4, ptr %34) #5
  store i32 2, ptr %34, align 4, !tbaa !15
  call void @llvm.lifetime.start.p0(i64 4, ptr %35) #5
  %498 = load ptr, ptr %6, align 8, !tbaa !5
  %499 = getelementptr inbounds %struct.Longtail_BlockStoreAPI, ptr %498, i32 0, i32 3
  %500 = load ptr, ptr %499, align 8, !tbaa !26
  %501 = load ptr, ptr %6, align 8, !tbaa !5
  %502 = getelementptr inbounds [3 x i64], ptr %7, i64 0, i64 1
  %503 = load i64, ptr %502, align 8, !tbaa !23
  %504 = getelementptr inbounds %struct.TestAsyncGetBlockComplete, ptr %33, i32 0, i32 0
  %505 = invoke noundef i32 %500(ptr noundef %501, i64 noundef %503, ptr noundef %504)
          to label %506 unwind label %522

506:                                              ; preds = %497
  store i32 %505, ptr %35, align 4, !tbaa !15
  %507 = invoke noundef i32 @_ZN21jc_test_cmp_eq_helperILb0EE7compareIiiEEiRKT_RKT0_PKcS9_(ptr noundef nonnull align 4 dereferenceable(4) %34, ptr noundef nonnull align 4 dereferenceable(4) %35, ptr noundef @.str.138, ptr noundef @.str.872)
          to label %508 unwind label %522

508:                                              ; preds = %506
  %509 = icmp eq i32 %507, 0
  call void @llvm.lifetime.end.p0(i64 4, ptr %35) #5
  call void @llvm.lifetime.end.p0(i64 4, ptr %34) #5
  br i1 %509, label %510, label %526

510:                                              ; preds = %508
  invoke void @_Z21jc_test_set_test_faili(i32 noundef 1)
          to label %511 unwind label %518

511:                                              ; preds = %510
  store i32 1, ptr %13, align 4
  br label %529

512:                                              ; preds = %476, %443, %439
  call void @_ZN25TestAsyncGetBlockCompleteD2Ev(ptr noundef nonnull align 8 dereferenceable(40) %29) #5
  br label %513

513:                                              ; preds = %512, %435
  call void @llvm.lifetime.end.p0(i64 40, ptr %29) #5
  br label %645

514:                                              ; preds = %485
  %515 = landingpad { ptr, i32 }
          cleanup
  %516 = extractvalue { ptr, i32 } %515, 0
  store ptr %516, ptr %8, align 8
  %517 = extractvalue { ptr, i32 } %515, 1
  store i32 %517, ptr %9, align 4
  br label %559

518:                                              ; preds = %510, %495, %489, %487
  %519 = landingpad { ptr, i32 }
          cleanup
  %520 = extractvalue { ptr, i32 } %519, 0
  store ptr %520, ptr %8, align 8
  %521 = extractvalue { ptr, i32 } %519, 1
  store i32 %521, ptr %9, align 4
  br label %558

522:                                              ; preds = %506, %497
  %523 = landingpad { ptr, i32 }
          cleanup
  %524 = extractvalue { ptr, i32 } %523, 0
  store ptr %524, ptr %8, align 8
  %525 = extractvalue { ptr, i32 } %523, 1
  store i32 %525, ptr %9, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %35) #5
  call void @llvm.lifetime.end.p0(i64 4, ptr %34) #5
  br label %558

526:                                              ; preds = %508
  br label %527

527:                                              ; preds = %526
  br label %528

528:                                              ; preds = %527
  store i32 0, ptr %13, align 4
  br label %529

529:                                              ; preds = %528, %511
  call void @_ZN25TestAsyncGetBlockCompleteD2Ev(ptr noundef nonnull align 8 dereferenceable(40) %33) #5
  call void @llvm.lifetime.end.p0(i64 40, ptr %33) #5
  %530 = load i32, ptr %13, align 4
  switch i32 %530, label %641 [
    i32 0, label %531
  ]

531:                                              ; preds = %529
  call void @llvm.lifetime.start.p0(i64 40, ptr %36) #5
  invoke void @_ZN25TestAsyncGetBlockCompleteC2Ev(ptr noundef nonnull align 8 dereferenceable(40) %36)
          to label %532 unwind label %560

532:                                              ; preds = %531
  br label %533

533:                                              ; preds = %532
  %534 = invoke noundef ptr @_ZL19jc_test_get_fixturev()
          to label %535 unwind label %564

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

541:                                              ; preds = %535
  %542 = getelementptr inbounds %struct.jc_test_fixture, ptr %540, i32 0, i32 4
  store ptr @.str.3, ptr %542, align 8, !tbaa !10
  invoke void @_Z28jc_test_increment_assertionsv()
          to label %543 unwind label %564

543:                                              ; preds = %541
  call void @llvm.lifetime.start.p0(i64 4, ptr %37) #5
  store i32 0, ptr %37, align 4, !tbaa !15
  call void @llvm.lifetime.start.p0(i64 4, ptr %38) #5
  %544 = load ptr, ptr %6, align 8, !tbaa !5
  %545 = getelementptr inbounds %struct.Longtail_BlockStoreAPI, ptr %544, i32 0, i32 3
  %546 = load ptr, ptr %545, align 8, !tbaa !26
  %547 = load ptr, ptr %6, align 8, !tbaa !5
  %548 = getelementptr inbounds [3 x i64], ptr %7, i64 0, i64 2
  %549 = load i64, ptr %548, align 16, !tbaa !23
  %550 = getelementptr inbounds %struct.TestAsyncGetBlockComplete, ptr %36, i32 0, i32 0
  %551 = invoke noundef i32 %546(ptr noundef %547, i64 noundef %549, ptr noundef %550)
          to label %552 unwind label %568

552:                                              ; preds = %543
  store i32 %551, ptr %38, align 4, !tbaa !15
  %553 = 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 @.str.46, ptr noundef @.str.873, ptr noundef null)
          to label %554 unwind label %568

554:                                              ; preds = %552
  %555 = icmp eq i32 %553, 0
  call void @llvm.lifetime.end.p0(i64 4, ptr %38) #5
  call void @llvm.lifetime.end.p0(i64 4, ptr %37) #5
  br i1 %555, label %556, label %572

556:                                              ; preds = %554
  invoke void @_Z21jc_test_set_test_faili(i32 noundef 1)
          to label %557 unwind label %564

557:                                              ; preds = %556
  store i32 1, ptr %13, align 4
  br label %608

558:                                              ; preds = %522, %518
  call void @_ZN25TestAsyncGetBlockCompleteD2Ev(ptr noundef nonnull align 8 dereferenceable(40) %33) #5
  br label %559

559:                                              ; preds = %558, %514
  call void @llvm.lifetime.end.p0(i64 40, ptr %33) #5
  br label %645

560:                                              ; preds = %531
  %561 = landingpad { ptr, i32 }
          cleanup
  %562 = extractvalue { ptr, i32 } %561, 0
  store ptr %562, ptr %8, align 8
  %563 = extractvalue { ptr, i32 } %561, 1
  store i32 %563, ptr %9, align 4
  br label %618

564:                                              ; preds = %599, %592, %586, %584, %575, %574, %556, %541, %535, %533
  %565 = landingpad { ptr, i32 }
          cleanup
  %566 = extractvalue { ptr, i32 } %565, 0
  store ptr %566, ptr %8, align 8
  %567 = extractvalue { ptr, i32 } %565, 1
  store i32 %567, ptr %9, align 4
  br label %617

568:                                              ; preds = %552, %543
  %569 = landingpad { ptr, i32 }
          cleanup
  %570 = extractvalue { ptr, i32 } %569, 0
  store ptr %570, ptr %8, align 8
  %571 = extractvalue { ptr, i32 } %569, 1
  store i32 %571, ptr %9, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %38) #5
  call void @llvm.lifetime.end.p0(i64 4, ptr %37) #5
  br label %617

572:                                              ; preds = %554
  br label %573

573:                                              ; preds = %572
  br label %574

574:                                              ; preds = %573
  invoke void @_ZN25TestAsyncGetBlockComplete4WaitEv(ptr noundef nonnull align 8 dereferenceable(40) %36)
          to label %575 unwind label %564

575:                                              ; preds = %574
  %576 = getelementptr inbounds %struct.TestAsyncGetBlockComplete, ptr %36, i32 0, i32 3
  %577 = load ptr, ptr %576, align 8, !tbaa !27
  %578 = getelementptr inbounds %struct.Longtail_StoredBlock, ptr %577, i32 0, i32 0
  %579 = load ptr, ptr %578, align 8, !tbaa !24
  %580 = getelementptr inbounds %struct.TestAsyncGetBlockComplete, ptr %36, i32 0, i32 3
  %581 = load ptr, ptr %580, align 8, !tbaa !27
  %582 = invoke noundef i32 %579(ptr noundef %581)
          to label %583 unwind label %564

583:                                              ; preds = %575
  br label %584

584:                                              ; preds = %583
  %585 = invoke noundef ptr @_ZL19jc_test_get_fixturev()
          to label %586 unwind label %564

586:                                              ; preds = %584
  %587 = getelementptr inbounds %struct.jc_test_fixture, ptr %585, i32 0, i32 11
  %588 = load i32, ptr %587, align 8
  %589 = and i32 %588, -16776961
  %590 = or i32 %589, 1850880
  store i32 %590, ptr %587, align 8
  %591 = invoke noundef ptr @_ZL19jc_test_get_fixturev()
          to label %592 unwind label %564

592:                                              ; preds = %586
  %593 = getelementptr inbounds %struct.jc_test_fixture, ptr %591, i32 0, i32 4
  store ptr @.str.3, ptr %593, align 8, !tbaa !10
  invoke void @_Z28jc_test_increment_assertionsv()
          to label %594 unwind label %564

594:                                              ; preds = %592
  call void @llvm.lifetime.start.p0(i64 4, ptr %39) #5
  store i32 0, ptr %39, align 4, !tbaa !15
  %595 = getelementptr inbounds %struct.TestAsyncGetBlockComplete, ptr %36, i32 0, i32 2
  %596 = 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) %39, ptr noundef nonnull align 4 dereferenceable(4) %595, ptr noundef @.str.46, ptr noundef @.str.323, ptr noundef null)
          to label %597 unwind label %601

597:                                              ; preds = %594
  %598 = icmp eq i32 %596, 0
  call void @llvm.lifetime.end.p0(i64 4, ptr %39) #5
  br i1 %598, label %599, label %605

599:                                              ; preds = %597
  invoke void @_Z21jc_test_set_test_faili(i32 noundef 1)
          to label %600 unwind label %564

600:                                              ; preds = %599
  store i32 1, ptr %13, align 4
  br label %608

601:                                              ; preds = %594
  %602 = landingpad { ptr, i32 }
          cleanup
  %603 = extractvalue { ptr, i32 } %602, 0
  store ptr %603, ptr %8, align 8
  %604 = extractvalue { ptr, i32 } %602, 1
  store i32 %604, ptr %9, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %39) #5
  br label %617

605:                                              ; preds = %597
  br label %606

606:                                              ; preds = %605
  br label %607

607:                                              ; preds = %606
  store i32 0, ptr %13, align 4
  br label %608

608:                                              ; preds = %607, %600, %557
  call void @_ZN25TestAsyncGetBlockCompleteD2Ev(ptr noundef nonnull align 8 dereferenceable(40) %36) #5
  call void @llvm.lifetime.end.p0(i64 40, ptr %36) #5
  %609 = load i32, ptr %13, align 4
  switch i32 %609, label %641 [
    i32 0, label %610
  ]

610:                                              ; preds = %608
  %611 = load ptr, ptr %6, align 8, !tbaa !5
  %612 = icmp ne ptr %611, null
  br i1 %612, label %613, label %619

613:                                              ; preds = %610
  %614 = load ptr, ptr %6, align 8, !tbaa !5
  %615 = getelementptr inbounds %struct.Longtail_BlockStoreAPI, ptr %614, i32 0, i32 0
  invoke void @Longtail_DisposeAPI(ptr noundef %615)
          to label %616 unwind label %349

616:                                              ; preds = %613
  br label %619

617:                                              ; preds = %601, %568, %564
  call void @_ZN25TestAsyncGetBlockCompleteD2Ev(ptr noundef nonnull align 8 dereferenceable(40) %36) #5
  br label %618

618:                                              ; preds = %617, %560
  call void @llvm.lifetime.end.p0(i64 40, ptr %36) #5
  br label %645

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

622:                                              ; preds = %619
  %623 = load ptr, ptr %5, align 8, !tbaa !5
  %624 = getelementptr inbounds %struct.Longtail_JobAPI, ptr %623, i32 0, i32 0
  invoke void @Longtail_DisposeAPI(ptr noundef %624)
          to label %625 unwind label %349

625:                                              ; preds = %622
  br label %626

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

629:                                              ; preds = %626
  %630 = load ptr, ptr %4, align 8, !tbaa !5
  %631 = getelementptr inbounds %struct.Longtail_StorageAPI, ptr %630, i32 0, i32 0
  invoke void @Longtail_DisposeAPI(ptr noundef %631)
          to label %632 unwind label %349

632:                                              ; preds = %629
  br label %633

633:                                              ; preds = %632, %626
  %634 = load ptr, ptr %3, align 8, !tbaa !5
  %635 = icmp ne ptr %634, null
  br i1 %635, label %636, label %640

636:                                              ; preds = %633
  %637 = load ptr, ptr %3, align 8, !tbaa !5
  %638 = getelementptr inbounds %struct.Longtail_HashAPI, ptr %637, i32 0, i32 0
  invoke void @Longtail_DisposeAPI(ptr noundef %638)
          to label %639 unwind label %349

639:                                              ; preds = %636
  br label %640

640:                                              ; preds = %639, %633
  store i32 0, ptr %13, align 4
  br label %641

641:                                              ; preds = %640, %608, %529, %483, %401, %377, %347
  call void @_ZN28TestAsyncPruneBlocksCompleteD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %24) #5
  call void @llvm.lifetime.end.p0(i64 32, ptr %24) #5
  call void @llvm.lifetime.end.p0(i64 16, ptr %23) #5
  br label %642

642:                                              ; preds = %641, %316, %225, %134
  call void @llvm.lifetime.end.p0(i64 24, 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
  %643 = load i32, ptr %13, align 4
  switch i32 %643, label %652 [
    i32 0, label %644
    i32 1, label %644
  ]

644:                                              ; preds = %642, %642
  ret void

645:                                              ; preds = %618, %559, %513, %402, %378, %353, %349
  call void @_ZN28TestAsyncPruneBlocksCompleteD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %24) #5
  call void @llvm.lifetime.end.p0(i64 32, ptr %24) #5
  call void @llvm.lifetime.end.p0(i64 16, ptr %23) #5
  br label %646

646:                                              ; preds = %645, %348, %263, %262, %172, %171, %81
  call void @llvm.lifetime.end.p0(i64 24, 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 %647

647:                                              ; preds = %646
  %648 = load ptr, ptr %8, align 8
  %649 = load i32, ptr %9, align 4
  %650 = insertvalue { ptr, i32 } poison, ptr %648, 0
  %651 = insertvalue { ptr, i32 } %650, i32 %649, 1
  resume { ptr, i32 } %651

652:                                              ; preds = %642
  unreachable
}

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

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

; Function Attrs: mustprogress nounwind uwtable
declare dso_local void @_ZN28TestAsyncPruneBlocksCompleteD2Ev(ptr noundef nonnull align 8 dereferenceable(32)) 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 = !{!"branch_weights", i32 1, i32 1048575}
!10 = !{!11, !6, i64 32}
!11 = !{!"_ZTS15jc_test_fixture", !6, i64 8, !6, i64 16, !6, i64 24, !6, i64 32, !6, i64 40, !6, i64 48, !6, i64 56, !12, i64 64, !13, i64 88, !13, i64 91, !13, i64 91, !13, i64 91, !13, i64 91, !13, i64 92, !13, i64 96, !13, i64 97, !13, i64 99, !13, i64 100}
!12 = !{!"_ZTS13jc_test_stats", !13, i64 0, !13, i64 4, !13, i64 6, !13, i64 8, !13, i64 12, !14, i64 16}
!13 = !{!"int", !7, i64 0}
!14 = !{!"long", !7, i64 0}
!15 = !{!13, !13, i64 0}
!16 = !{!17, !6, i64 8}
!17 = !{!"_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}
!18 = !{!"_ZTS12Longtail_API", !6, i64 0}
!19 = !{!20, !6, i64 8}
!20 = !{!"_ZTS20Longtail_StoredBlock", !6, i64 0, !6, i64 8, !6, i64 16, !13, i64 24}
!21 = !{!22, !6, i64 0}
!22 = !{!"_ZTS19Longtail_BlockIndex", !6, i64 0, !6, i64 8, !6, i64 16, !6, i64 24, !6, i64 32, !6, i64 40}
!23 = !{!14, !14, i64 0}
!24 = !{!20, !6, i64 0}
!25 = !{!17, !6, i64 40}
!26 = !{!17, !6, i64 24}
!27 = !{!28, !6, i64 32}
!28 = !{!"_ZTS25TestAsyncGetBlockComplete", !29, i64 0, !6, i64 16, !13, i64 24, !6, i64 32}
!29 = !{!"_ZTS31Longtail_AsyncGetStoredBlockAPI", !18, i64 0, !6, i64 8}


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

%struct.TestAsyncPutBlockComplete = type <{ %struct.Longtail_AsyncPutStoredBlockAPI, ptr, i32, [4 x i8] }>
%struct.Longtail_AsyncPutStoredBlockAPI = type { %struct.Longtail_API, ptr }
%struct.Longtail_API = type { ptr }
%struct.TestAsyncPruneBlocksComplete = type { %struct.Longtail_AsyncPruneBlocksAPI, ptr, i32, i32 }
%struct.Longtail_AsyncPruneBlocksAPI = type { %struct.Longtail_API, ptr }
%struct.TestAsyncGetBlockComplete = type { %struct.Longtail_AsyncGetStoredBlockAPI, ptr, i32, ptr }
%struct.Longtail_AsyncGetStoredBlockAPI = 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.138 = external hidden unnamed_addr constant [2 x i8], align 1
@.str.232 = external hidden unnamed_addr constant [2 x i8], align 1
@.str.273 = external hidden unnamed_addr constant [12 x i8], align 1
@.str.323 = external hidden unnamed_addr constant [13 x i8], align 1
@.str.823 = external hidden unnamed_addr constant [13 x i8], align 1
@_ZZN45Longtail_Longtail_PruneFSBlockStore__TestCase8TestBodyEvE17BLOCK_CHUNK_SIZES = external hidden constant [4 x i32], align 16
@_ZZN45Longtail_Longtail_PruneFSBlockStore__TestCase8TestBodyEvE5block = external hidden local_unnamed_addr global ptr, align 8
@_ZGVZN45Longtail_Longtail_PruneFSBlockStore__TestCase8TestBodyEvE5block = external hidden global i64, align 8
@.str.866 = external hidden unnamed_addr constant [70 x i8], align 1
@_ZZN45Longtail_Longtail_PruneFSBlockStore__TestCase8TestBodyEvE17BLOCK_CHUNK_SIZES_0 = external hidden constant [3 x i32], align 4
@_ZZN45Longtail_Longtail_PruneFSBlockStore__TestCase8TestBodyEvE5block_0 = external hidden local_unnamed_addr global ptr, align 8
@_ZGVZN45Longtail_Longtail_PruneFSBlockStore__TestCase8TestBodyEvE5block_0 = external hidden global i64, align 8
@_ZZN45Longtail_Longtail_PruneFSBlockStore__TestCase8TestBodyEvE17BLOCK_CHUNK_SIZES_1 = external hidden constant [5 x i32], align 16
@_ZZN45Longtail_Longtail_PruneFSBlockStore__TestCase8TestBodyEvE5block_1 = external hidden local_unnamed_addr global ptr, align 8
@_ZGVZN45Longtail_Longtail_PruneFSBlockStore__TestCase8TestBodyEvE5block_1 = external hidden global i64, align 8
@.str.867 = external hidden unnamed_addr constant [81 x i8], align 1
@.str.868 = external hidden unnamed_addr constant [14 x i8], align 1
@.str.869 = external hidden unnamed_addr constant [21 x i8], align 1
@.str.870 = external hidden unnamed_addr constant [81 x i8], align 1
@.str.871 = external hidden unnamed_addr constant [13 x i8], align 1
@.str.872 = external hidden unnamed_addr constant [81 x i8], align 1
@.str.873 = external hidden unnamed_addr constant [81 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

; Function Attrs: mustprogress uwtable
declare dso_local noundef i32 @_ZN21jc_test_cmp_eq_helperILb0EE7compareIijEEiRKT_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

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

declare ptr @Longtail_CreateInMemStorageAPI() local_unnamed_addr #2

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

; Function Attrs: mustprogress uwtable
declare dso_local void @_ZN25TestAsyncGetBlockCompleteC2Ev(ptr noundef nonnull align 8 dereferenceable(40)) unnamed_addr #3 align 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 uwtable
declare dso_local void @_ZN25TestAsyncGetBlockComplete4WaitEv(ptr noundef nonnull align 8 dereferenceable(40)) local_unnamed_addr #3 align 2

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

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

; Function Attrs: nofree nounwind
declare i32 @__cxa_guard_acquire(ptr) local_unnamed_addr #5

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

; Function Attrs: nofree nounwind
declare void @__cxa_guard_abort(ptr) local_unnamed_addr #5

; Function Attrs: nofree nounwind
declare void @__cxa_guard_release(ptr) local_unnamed_addr #5

; Function Attrs: mustprogress uwtable
define dso_local void @_ZN45Longtail_Longtail_PruneFSBlockStore__TestCase8TestBodyEv(ptr nocapture noundef nonnull readnone align 8 dereferenceable(8) %0) unnamed_addr #3 align 2 personality ptr @__gxx_personality_v0 {
  %2 = alloca %struct.TestAsyncPutBlockComplete, align 8
  %3 = alloca i32, align 4
  %4 = alloca i32, align 4
  %5 = alloca i32, align 4
  %6 = alloca %struct.TestAsyncPutBlockComplete, align 8
  %7 = alloca i32, align 4
  %8 = alloca i32, align 4
  %9 = alloca i32, align 4
  %10 = alloca %struct.TestAsyncPutBlockComplete, align 8
  %11 = alloca i32, align 4
  %12 = alloca i32, align 4
  %13 = alloca i32, align 4
  %14 = alloca [2 x i64], align 16
  %15 = alloca %struct.TestAsyncPruneBlocksComplete, align 8
  %16 = alloca i32, align 4
  %17 = alloca i32, align 4
  %18 = alloca i32, align 4
  %19 = alloca i32, align 4
  %20 = alloca %struct.TestAsyncGetBlockComplete, align 8
  %21 = alloca i32, align 4
  %22 = alloca i32, align 4
  %23 = alloca i32, align 4
  %24 = alloca %struct.TestAsyncGetBlockComplete, align 8
  %25 = alloca i32, align 4
  %26 = alloca i32, align 4
  %27 = alloca %struct.TestAsyncGetBlockComplete, align 8
  %28 = alloca i32, align 4
  %29 = alloca i32, align 4
  %30 = alloca i32, align 4
  %31 = tail call ptr @Longtail_CreateBlake3HashAPI()
  %32 = tail call ptr @Longtail_CreateInMemStorageAPI()
  %33 = tail call ptr @Longtail_CreateBikeshedJobAPI(i32 noundef 0, i32 noundef 0)
  %34 = tail call ptr @Longtail_CreateFSBlockStoreAPI(ptr noundef %33, ptr noundef %32, ptr noundef nonnull @.str.823, ptr noundef null, i32 noundef 0)
  %35 = load atomic i8, ptr @_ZGVZN45Longtail_Longtail_PruneFSBlockStore__TestCase8TestBodyEvE5block acquire, align 8
  %36 = icmp eq i8 %35, 0
  br i1 %36, label %37, label %42, !prof !5

37:                                               ; preds = %1
  %38 = tail call i32 @__cxa_guard_acquire(ptr nonnull @_ZGVZN45Longtail_Longtail_PruneFSBlockStore__TestCase8TestBodyEvE5block) #6
  %.not = icmp eq i32 %38, 0
  br i1 %.not, label %42, label %39

39:                                               ; preds = %37
  %40 = invoke noundef ptr @_ZL19GenerateStoredBlockP16Longtail_HashAPIjPKj(ptr noundef %31, i32 noundef 4, ptr noundef nonnull @_ZZN45Longtail_Longtail_PruneFSBlockStore__TestCase8TestBodyEvE17BLOCK_CHUNK_SIZES)
          to label %41 unwind label %61

41:                                               ; preds = %39
  store ptr %40, ptr @_ZZN45Longtail_Longtail_PruneFSBlockStore__TestCase8TestBodyEvE5block, align 8, !tbaa !6
  tail call void @__cxa_guard_release(ptr nonnull @_ZGVZN45Longtail_Longtail_PruneFSBlockStore__TestCase8TestBodyEvE5block) #6
  br label %42

42:                                               ; preds = %41, %37, %1
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %2) #6
  call void @_ZN25TestAsyncPutBlockCompleteC2Ev(ptr noundef nonnull align 8 dereferenceable(28) %2)
  %43 = invoke noundef ptr @_ZL19jc_test_get_fixturev()
          to label %44 unwind label %63

44:                                               ; preds = %42
  %45 = getelementptr inbounds i8, ptr %43, i64 96
  %46 = load i32, ptr %45, align 8
  %47 = and i32 %46, -16776961
  %48 = or disjoint i32 %47, 1836544
  store i32 %48, ptr %45, align 8
  %49 = invoke noundef ptr @_ZL19jc_test_get_fixturev()
          to label %50 unwind label %63

50:                                               ; preds = %44
  %51 = getelementptr inbounds i8, ptr %49, i64 32
  store ptr @.str.3, ptr %51, align 8, !tbaa !10
  invoke void @_Z28jc_test_increment_assertionsv()
          to label %52 unwind label %63

52:                                               ; preds = %50
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %3) #6
  store i32 0, ptr %3, align 4, !tbaa !15
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %4) #6
  %53 = getelementptr inbounds i8, ptr %34, i64 8
  %54 = load ptr, ptr %53, align 8, !tbaa !16
  %55 = load ptr, ptr @_ZZN45Longtail_Longtail_PruneFSBlockStore__TestCase8TestBodyEvE5block, align 8, !tbaa !6
  %56 = invoke noundef i32 %54(ptr noundef nonnull %34, ptr noundef %55, ptr noundef nonnull %2)
          to label %57 unwind label %65

57:                                               ; preds = %52
  store i32 %56, ptr %4, align 4, !tbaa !15
  %58 = 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) %3, ptr noundef nonnull align 4 dereferenceable(4) %4, ptr noundef nonnull @.str.46, ptr noundef nonnull @.str.866, ptr noundef null)
          to label %59 unwind label %65

59:                                               ; preds = %57
  %60 = icmp eq i32 %58, 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 %60, label %.invoke, label %67

61:                                               ; preds = %39
  %62 = landingpad { ptr, i32 }
          cleanup
  tail call void @__cxa_guard_abort(ptr nonnull @_ZGVZN45Longtail_Longtail_PruneFSBlockStore__TestCase8TestBodyEvE5block) #6
  br label %406

63:                                               ; preds = %.invoke, %85, %76, %70, %68, %67, %50, %44, %42
  %64 = landingpad { ptr, i32 }
          cleanup
  br label %119

65:                                               ; preds = %57, %52
  %66 = landingpad { ptr, i32 }
          cleanup
  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 label %119

67:                                               ; preds = %59
  invoke void @_ZN25TestAsyncPutBlockComplete4WaitEv(ptr noundef nonnull align 8 dereferenceable(28) %2)
          to label %68 unwind label %63

68:                                               ; preds = %67
  %69 = invoke noundef ptr @_ZL19jc_test_get_fixturev()
          to label %70 unwind label %63

70:                                               ; preds = %68
  %71 = getelementptr inbounds i8, ptr %69, i64 96
  %72 = load i32, ptr %71, align 8
  %73 = and i32 %72, -16776961
  %74 = or disjoint i32 %73, 1837056
  store i32 %74, ptr %71, align 8
  %75 = invoke noundef ptr @_ZL19jc_test_get_fixturev()
          to label %76 unwind label %63

76:                                               ; preds = %70
  %77 = getelementptr inbounds i8, ptr %75, i64 32
  store ptr @.str.3, ptr %77, align 8, !tbaa !10
  invoke void @_Z28jc_test_increment_assertionsv()
          to label %78 unwind label %63

78:                                               ; preds = %76
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %5) #6
  store i32 0, ptr %5, align 4, !tbaa !15
  %79 = getelementptr inbounds i8, ptr %2, i64 24
  %80 = 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) %5, ptr noundef nonnull align 4 dereferenceable(4) %79, ptr noundef nonnull @.str.46, ptr noundef nonnull @.str.273, ptr noundef null)
          to label %81 unwind label %83

81:                                               ; preds = %78
  %82 = icmp eq i32 %80, 0
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %5) #6
  br i1 %82, label %.invoke, label %85

.invoke:                                          ; preds = %59, %81
  invoke void @_Z21jc_test_set_test_faili(i32 noundef 1)
          to label %.thread unwind label %63

83:                                               ; preds = %78
  %84 = landingpad { ptr, i32 }
          cleanup
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %5) #6
  br label %119

85:                                               ; preds = %81
  %86 = load ptr, ptr @_ZZN45Longtail_Longtail_PruneFSBlockStore__TestCase8TestBodyEvE5block, align 8, !tbaa !6
  %87 = getelementptr inbounds i8, ptr %86, i64 8
  %88 = load ptr, ptr %87, align 8, !tbaa !19
  %89 = load ptr, ptr %88, align 8, !tbaa !21
  %90 = load i64, ptr %89, align 8, !tbaa !23
  %91 = load ptr, ptr %86, align 8, !tbaa !24
  %92 = invoke noundef i32 %91(ptr noundef nonnull %86)
          to label %93 unwind label %63

.thread:                                          ; preds = %.invoke
  call void @_ZN25TestAsyncPutBlockCompleteD2Ev(ptr noundef nonnull align 8 dereferenceable(28) %2) #6
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %2) #6
  br label %404

93:                                               ; preds = %85
  call void @_ZN25TestAsyncPutBlockCompleteD2Ev(ptr noundef nonnull align 8 dereferenceable(28) %2) #6
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %2) #6
  %94 = load atomic i8, ptr @_ZGVZN45Longtail_Longtail_PruneFSBlockStore__TestCase8TestBodyEvE5block_0 acquire, align 8
  %95 = icmp eq i8 %94, 0
  br i1 %95, label %96, label %101, !prof !5

96:                                               ; preds = %93
  %97 = call i32 @__cxa_guard_acquire(ptr nonnull @_ZGVZN45Longtail_Longtail_PruneFSBlockStore__TestCase8TestBodyEvE5block_0) #6
  %.not64 = icmp eq i32 %97, 0
  br i1 %.not64, label %101, label %98

98:                                               ; preds = %96
  %99 = invoke noundef ptr @_ZL19GenerateStoredBlockP16Longtail_HashAPIjPKj(ptr noundef %31, i32 noundef 3, ptr noundef nonnull @_ZZN45Longtail_Longtail_PruneFSBlockStore__TestCase8TestBodyEvE17BLOCK_CHUNK_SIZES_0)
          to label %100 unwind label %120

100:                                              ; preds = %98
  store ptr %99, ptr @_ZZN45Longtail_Longtail_PruneFSBlockStore__TestCase8TestBodyEvE5block_0, align 8, !tbaa !6
  call void @__cxa_guard_release(ptr nonnull @_ZGVZN45Longtail_Longtail_PruneFSBlockStore__TestCase8TestBodyEvE5block_0) #6
  br label %101

101:                                              ; preds = %100, %96, %93
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %6) #6
  call void @_ZN25TestAsyncPutBlockCompleteC2Ev(ptr noundef nonnull align 8 dereferenceable(28) %6)
  %102 = invoke noundef ptr @_ZL19jc_test_get_fixturev()
          to label %103 unwind label %122

103:                                              ; preds = %101
  %104 = getelementptr inbounds i8, ptr %102, i64 96
  %105 = load i32, ptr %104, align 8
  %106 = and i32 %105, -16776961
  %107 = or disjoint i32 %106, 1839616
  store i32 %107, ptr %104, align 8
  %108 = invoke noundef ptr @_ZL19jc_test_get_fixturev()
          to label %109 unwind label %122

109:                                              ; preds = %103
  %110 = getelementptr inbounds i8, ptr %108, i64 32
  store ptr @.str.3, ptr %110, align 8, !tbaa !10
  invoke void @_Z28jc_test_increment_assertionsv()
          to label %111 unwind label %122

111:                                              ; preds = %109
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %7) #6
  store i32 0, ptr %7, align 4, !tbaa !15
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %8) #6
  %112 = load ptr, ptr %53, align 8, !tbaa !16
  %113 = load ptr, ptr @_ZZN45Longtail_Longtail_PruneFSBlockStore__TestCase8TestBodyEvE5block_0, align 8, !tbaa !6
  %114 = invoke noundef i32 %112(ptr noundef nonnull %34, ptr noundef %113, ptr noundef nonnull %6)
          to label %115 unwind label %124

115:                                              ; preds = %111
  store i32 %114, ptr %8, align 4, !tbaa !15
  %116 = 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) %7, ptr noundef nonnull align 4 dereferenceable(4) %8, ptr noundef nonnull @.str.46, ptr noundef nonnull @.str.866, ptr noundef null)
          to label %117 unwind label %124

117:                                              ; preds = %115
  %118 = icmp eq i32 %116, 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 %118, label %.invoke101, label %126

119:                                              ; preds = %83, %65, %63
  %.pn = phi { ptr, i32 } [ %64, %63 ], [ %84, %83 ], [ %66, %65 ]
  call void @_ZN25TestAsyncPutBlockCompleteD2Ev(ptr noundef nonnull align 8 dereferenceable(28) %2) #6
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %2) #6
  br label %406

120:                                              ; preds = %98
  %121 = landingpad { ptr, i32 }
          cleanup
  call void @__cxa_guard_abort(ptr nonnull @_ZGVZN45Longtail_Longtail_PruneFSBlockStore__TestCase8TestBodyEvE5block_0) #6
  br label %406

122:                                              ; preds = %.invoke101, %144, %135, %129, %127, %126, %109, %103, %101
  %123 = landingpad { ptr, i32 }
          cleanup
  br label %178

124:                                              ; preds = %115, %111
  %125 = landingpad { ptr, i32 }
          cleanup
  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 label %178

126:                                              ; preds = %117
  invoke void @_ZN25TestAsyncPutBlockComplete4WaitEv(ptr noundef nonnull align 8 dereferenceable(28) %6)
          to label %127 unwind label %122

127:                                              ; preds = %126
  %128 = invoke noundef ptr @_ZL19jc_test_get_fixturev()
          to label %129 unwind label %122

129:                                              ; preds = %127
  %130 = getelementptr inbounds i8, ptr %128, i64 96
  %131 = load i32, ptr %130, align 8
  %132 = and i32 %131, -16776961
  %133 = or disjoint i32 %132, 1840128
  store i32 %133, ptr %130, align 8
  %134 = invoke noundef ptr @_ZL19jc_test_get_fixturev()
          to label %135 unwind label %122

135:                                              ; preds = %129
  %136 = getelementptr inbounds i8, ptr %134, i64 32
  store ptr @.str.3, ptr %136, align 8, !tbaa !10
  invoke void @_Z28jc_test_increment_assertionsv()
          to label %137 unwind label %122

137:                                              ; preds = %135
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %9) #6
  store i32 0, ptr %9, align 4, !tbaa !15
  %138 = getelementptr inbounds i8, ptr %6, i64 24
  %139 = 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) %138, ptr noundef nonnull @.str.46, ptr noundef nonnull @.str.273, ptr noundef null)
          to label %140 unwind label %142

140:                                              ; preds = %137
  %141 = icmp eq i32 %139, 0
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %9) #6
  br i1 %141, label %.invoke101, label %144

.invoke101:                                       ; preds = %117, %140
  invoke void @_Z21jc_test_set_test_faili(i32 noundef 1)
          to label %.thread94 unwind label %122

142:                                              ; preds = %137
  %143 = landingpad { ptr, i32 }
          cleanup
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %9) #6
  br label %178

144:                                              ; preds = %140
  %145 = load ptr, ptr @_ZZN45Longtail_Longtail_PruneFSBlockStore__TestCase8TestBodyEvE5block_0, align 8, !tbaa !6
  %146 = getelementptr inbounds i8, ptr %145, i64 8
  %147 = load ptr, ptr %146, align 8, !tbaa !19
  %148 = load ptr, ptr %147, align 8, !tbaa !21
  %149 = load i64, ptr %148, align 8, !tbaa !23
  %150 = load ptr, ptr %145, align 8, !tbaa !24
  %151 = invoke noundef i32 %150(ptr noundef nonnull %145)
          to label %152 unwind label %122

.thread94:                                        ; preds = %.invoke101
  call void @_ZN25TestAsyncPutBlockCompleteD2Ev(ptr noundef nonnull align 8 dereferenceable(28) %6) #6
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %6) #6
  br label %404

152:                                              ; preds = %144
  call void @_ZN25TestAsyncPutBlockCompleteD2Ev(ptr noundef nonnull align 8 dereferenceable(28) %6) #6
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %6) #6
  %153 = load atomic i8, ptr @_ZGVZN45Longtail_Longtail_PruneFSBlockStore__TestCase8TestBodyEvE5block_1 acquire, align 8
  %154 = icmp eq i8 %153, 0
  br i1 %154, label %155, label %160, !prof !5

155:                                              ; preds = %152
  %156 = call i32 @__cxa_guard_acquire(ptr nonnull @_ZGVZN45Longtail_Longtail_PruneFSBlockStore__TestCase8TestBodyEvE5block_1) #6
  %.not67 = icmp eq i32 %156, 0
  br i1 %.not67, label %160, label %157

157:                                              ; preds = %155
  %158 = invoke noundef ptr @_ZL19GenerateStoredBlockP16Longtail_HashAPIjPKj(ptr noundef %31, i32 noundef 5, ptr noundef nonnull @_ZZN45Longtail_Longtail_PruneFSBlockStore__TestCase8TestBodyEvE17BLOCK_CHUNK_SIZES_1)
          to label %159 unwind label %179

159:                                              ; preds = %157
  store ptr %158, ptr @_ZZN45Longtail_Longtail_PruneFSBlockStore__TestCase8TestBodyEvE5block_1, align 8, !tbaa !6
  call void @__cxa_guard_release(ptr nonnull @_ZGVZN45Longtail_Longtail_PruneFSBlockStore__TestCase8TestBodyEvE5block_1) #6
  br label %160

160:                                              ; preds = %159, %155, %152
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %10) #6
  call void @_ZN25TestAsyncPutBlockCompleteC2Ev(ptr noundef nonnull align 8 dereferenceable(28) %10)
  %161 = invoke noundef ptr @_ZL19jc_test_get_fixturev()
          to label %162 unwind label %181

162:                                              ; preds = %160
  %163 = getelementptr inbounds i8, ptr %161, i64 96
  %164 = load i32, ptr %163, align 8
  %165 = and i32 %164, -16776961
  %166 = or disjoint i32 %165, 1842688
  store i32 %166, ptr %163, align 8
  %167 = invoke noundef ptr @_ZL19jc_test_get_fixturev()
          to label %168 unwind label %181

168:                                              ; preds = %162
  %169 = getelementptr inbounds i8, ptr %167, i64 32
  store ptr @.str.3, ptr %169, align 8, !tbaa !10
  invoke void @_Z28jc_test_increment_assertionsv()
          to label %170 unwind label %181

170:                                              ; preds = %168
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %11) #6
  store i32 0, ptr %11, align 4, !tbaa !15
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %12) #6
  %171 = load ptr, ptr %53, align 8, !tbaa !16
  %172 = load ptr, ptr @_ZZN45Longtail_Longtail_PruneFSBlockStore__TestCase8TestBodyEvE5block_1, align 8, !tbaa !6
  %173 = invoke noundef i32 %171(ptr noundef nonnull %34, ptr noundef %172, ptr noundef nonnull %10)
          to label %174 unwind label %183

174:                                              ; preds = %170
  store i32 %173, ptr %12, align 4, !tbaa !15
  %175 = 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) %11, ptr noundef nonnull align 4 dereferenceable(4) %12, ptr noundef nonnull @.str.46, ptr noundef nonnull @.str.866, ptr noundef null)
          to label %176 unwind label %183

176:                                              ; preds = %174
  %177 = icmp eq i32 %175, 0
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %12) #6
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %11) #6
  br i1 %177, label %.invoke102, label %185

178:                                              ; preds = %142, %124, %122
  %.pn65 = phi { ptr, i32 } [ %123, %122 ], [ %143, %142 ], [ %125, %124 ]
  call void @_ZN25TestAsyncPutBlockCompleteD2Ev(ptr noundef nonnull align 8 dereferenceable(28) %6) #6
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %6) #6
  br label %406

179:                                              ; preds = %157
  %180 = landingpad { ptr, i32 }
          cleanup
  call void @__cxa_guard_abort(ptr nonnull @_ZGVZN45Longtail_Longtail_PruneFSBlockStore__TestCase8TestBodyEvE5block_1) #6
  br label %406

181:                                              ; preds = %.invoke102, %203, %194, %188, %186, %185, %168, %162, %160
  %182 = landingpad { ptr, i32 }
          cleanup
  br label %230

183:                                              ; preds = %174, %170
  %184 = landingpad { ptr, i32 }
          cleanup
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %12) #6
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %11) #6
  br label %230

185:                                              ; preds = %176
  invoke void @_ZN25TestAsyncPutBlockComplete4WaitEv(ptr noundef nonnull align 8 dereferenceable(28) %10)
          to label %186 unwind label %181

186:                                              ; preds = %185
  %187 = invoke noundef ptr @_ZL19jc_test_get_fixturev()
          to label %188 unwind label %181

188:                                              ; preds = %186
  %189 = getelementptr inbounds i8, ptr %187, i64 96
  %190 = load i32, ptr %189, align 8
  %191 = and i32 %190, -16776961
  %192 = or disjoint i32 %191, 1843200
  store i32 %192, ptr %189, align 8
  %193 = invoke noundef ptr @_ZL19jc_test_get_fixturev()
          to label %194 unwind label %181

194:                                              ; preds = %188
  %195 = getelementptr inbounds i8, ptr %193, i64 32
  store ptr @.str.3, ptr %195, align 8, !tbaa !10
  invoke void @_Z28jc_test_increment_assertionsv()
          to label %196 unwind label %181

196:                                              ; preds = %194
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %13) #6
  store i32 0, ptr %13, align 4, !tbaa !15
  %197 = getelementptr inbounds i8, ptr %10, i64 24
  %198 = 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) %13, ptr noundef nonnull align 4 dereferenceable(4) %197, ptr noundef nonnull @.str.46, ptr noundef nonnull @.str.273, ptr noundef null)
          to label %199 unwind label %201

199:                                              ; preds = %196
  %200 = icmp eq i32 %198, 0
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %13) #6
  br i1 %200, label %.invoke102, label %203

.invoke102:                                       ; preds = %176, %199
  invoke void @_Z21jc_test_set_test_faili(i32 noundef 1)
          to label %.thread98 unwind label %181

201:                                              ; preds = %196
  %202 = landingpad { ptr, i32 }
          cleanup
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %13) #6
  br label %230

203:                                              ; preds = %199
  %204 = load ptr, ptr @_ZZN45Longtail_Longtail_PruneFSBlockStore__TestCase8TestBodyEvE5block_1, align 8, !tbaa !6
  %205 = getelementptr inbounds i8, ptr %204, i64 8
  %206 = load ptr, ptr %205, align 8, !tbaa !19
  %207 = load ptr, ptr %206, align 8, !tbaa !21
  %208 = load i64, ptr %207, align 8, !tbaa !23
  %209 = load ptr, ptr %204, align 8, !tbaa !24
  %210 = invoke noundef i32 %209(ptr noundef nonnull %204)
          to label %211 unwind label %181

.thread98:                                        ; preds = %.invoke102
  call void @_ZN25TestAsyncPutBlockCompleteD2Ev(ptr noundef nonnull align 8 dereferenceable(28) %10) #6
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %10) #6
  br label %404

211:                                              ; preds = %203
  call void @_ZN25TestAsyncPutBlockCompleteD2Ev(ptr noundef nonnull align 8 dereferenceable(28) %10) #6
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %10) #6
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %14) #6
  store i64 %90, ptr %14, align 16, !tbaa !23
  %212 = getelementptr inbounds i8, ptr %14, i64 8
  store i64 %208, ptr %212, align 8, !tbaa !23
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %15) #6
  call void @_ZN28TestAsyncPruneBlocksCompleteC2Ev(ptr noundef nonnull align 8 dereferenceable(32) %15)
  %213 = invoke noundef ptr @_ZL19jc_test_get_fixturev()
          to label %214 unwind label %231

214:                                              ; preds = %211
  %215 = getelementptr inbounds i8, ptr %213, i64 96
  %216 = load i32, ptr %215, align 8
  %217 = and i32 %216, -16776961
  %218 = or disjoint i32 %217, 1844992
  store i32 %218, ptr %215, align 8
  %219 = invoke noundef ptr @_ZL19jc_test_get_fixturev()
          to label %220 unwind label %231

220:                                              ; preds = %214
  %221 = getelementptr inbounds i8, ptr %219, i64 32
  store ptr @.str.3, ptr %221, align 8, !tbaa !10
  invoke void @_Z28jc_test_increment_assertionsv()
          to label %222 unwind label %231

222:                                              ; preds = %220
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %16) #6
  store i32 0, ptr %16, align 4, !tbaa !15
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %17) #6
  %223 = getelementptr inbounds i8, ptr %34, i64 40
  %224 = load ptr, ptr %223, align 8, !tbaa !25
  %225 = invoke noundef i32 %224(ptr noundef nonnull %34, i32 noundef 2, ptr noundef nonnull %14, ptr noundef nonnull %15)
          to label %226 unwind label %233

226:                                              ; preds = %222
  store i32 %225, ptr %17, align 4, !tbaa !15
  %227 = 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) %16, ptr noundef nonnull align 4 dereferenceable(4) %17, ptr noundef nonnull @.str.46, ptr noundef nonnull @.str.867, ptr noundef null)
          to label %228 unwind label %233

228:                                              ; preds = %226
  %229 = icmp eq i32 %227, 0
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %17) #6
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %16) #6
  br i1 %229, label %.invoke103, label %235

230:                                              ; preds = %201, %183, %181
  %.pn68 = phi { ptr, i32 } [ %182, %181 ], [ %202, %201 ], [ %184, %183 ]
  call void @_ZN25TestAsyncPutBlockCompleteD2Ev(ptr noundef nonnull align 8 dereferenceable(28) %10) #6
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %10) #6
  br label %406

231:                                              ; preds = %.invoke103, %402, %400, %398, %394, %261, %255, %253, %244, %238, %236, %235, %220, %214, %211
  %232 = landingpad { ptr, i32 }
          cleanup
  br label %405

233:                                              ; preds = %226, %222
  %234 = landingpad { ptr, i32 }
          cleanup
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %17) #6
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %16) #6
  br label %405

235:                                              ; preds = %228
  invoke void @_ZN28TestAsyncPruneBlocksComplete4WaitEv(ptr noundef nonnull align 8 dereferenceable(32) %15)
          to label %236 unwind label %231

236:                                              ; preds = %235
  %237 = invoke noundef ptr @_ZL19jc_test_get_fixturev()
          to label %238 unwind label %231

238:                                              ; preds = %236
  %239 = getelementptr inbounds i8, ptr %237, i64 96
  %240 = load i32, ptr %239, align 8
  %241 = and i32 %240, -16776961
  %242 = or disjoint i32 %241, 1845504
  store i32 %242, ptr %239, align 8
  %243 = invoke noundef ptr @_ZL19jc_test_get_fixturev()
          to label %244 unwind label %231

244:                                              ; preds = %238
  %245 = getelementptr inbounds i8, ptr %243, i64 32
  store ptr @.str.3, ptr %245, align 8, !tbaa !10
  invoke void @_Z28jc_test_increment_assertionsv()
          to label %246 unwind label %231

246:                                              ; preds = %244
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %18) #6
  store i32 0, ptr %18, align 4, !tbaa !15
  %247 = getelementptr inbounds i8, ptr %15, i64 28
  %248 = 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) %18, ptr noundef nonnull align 4 dereferenceable(4) %247, ptr noundef nonnull @.str.46, ptr noundef nonnull @.str.868, ptr noundef null)
          to label %249 unwind label %251

249:                                              ; preds = %246
  %250 = icmp eq i32 %248, 0
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %18) #6
  br i1 %250, label %.invoke103, label %253

251:                                              ; preds = %246
  %252 = landingpad { ptr, i32 }
          cleanup
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %18) #6
  br label %405

253:                                              ; preds = %249
  %254 = invoke noundef ptr @_ZL19jc_test_get_fixturev()
          to label %255 unwind label %231

255:                                              ; preds = %253
  %256 = getelementptr inbounds i8, ptr %254, i64 96
  %257 = load i32, ptr %256, align 8
  %258 = and i32 %257, -16776961
  %259 = or disjoint i32 %258, 1845760
  store i32 %259, ptr %256, align 8
  %260 = invoke noundef ptr @_ZL19jc_test_get_fixturev()
          to label %261 unwind label %231

261:                                              ; preds = %255
  %262 = getelementptr inbounds i8, ptr %260, i64 32
  store ptr @.str.3, ptr %262, align 8, !tbaa !10
  invoke void @_Z28jc_test_increment_assertionsv()
          to label %263 unwind label %231

263:                                              ; preds = %261
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %19) #6
  store i32 1, ptr %19, align 4, !tbaa !15
  %264 = getelementptr inbounds i8, ptr %15, i64 24
  %265 = invoke noundef i32 @_ZN21jc_test_cmp_eq_helperILb0EE7compareIijEEiRKT_RKT0_PKcS9_(ptr noundef nonnull align 4 dereferenceable(4) %19, ptr noundef nonnull align 4 dereferenceable(4) %264, ptr noundef nonnull @.str.232, ptr noundef nonnull @.str.869)
          to label %266 unwind label %268

266:                                              ; preds = %263
  %267 = icmp eq i32 %265, 0
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %19) #6
  br i1 %267, label %.invoke103, label %270

.invoke103:                                       ; preds = %228, %266, %249
  invoke void @_Z21jc_test_set_test_faili(i32 noundef 1)
          to label %403 unwind label %231

268:                                              ; preds = %263
  %269 = landingpad { ptr, i32 }
          cleanup
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %19) #6
  br label %405

270:                                              ; preds = %266
  call void @llvm.lifetime.start.p0(i64 40, ptr nonnull %20) #6
  invoke void @_ZN25TestAsyncGetBlockCompleteC2Ev(ptr noundef nonnull align 8 dereferenceable(40) %20)
          to label %271 unwind label %289

271:                                              ; preds = %270
  %272 = invoke noundef ptr @_ZL19jc_test_get_fixturev()
          to label %273 unwind label %291

273:                                              ; preds = %271
  %274 = getelementptr inbounds i8, ptr %272, i64 96
  %275 = load i32, ptr %274, align 8
  %276 = and i32 %275, -16776961
  %277 = or disjoint i32 %276, 1846784
  store i32 %277, ptr %274, align 8
  %278 = invoke noundef ptr @_ZL19jc_test_get_fixturev()
          to label %279 unwind label %291

279:                                              ; preds = %273
  %280 = getelementptr inbounds i8, ptr %278, i64 32
  store ptr @.str.3, ptr %280, align 8, !tbaa !10
  invoke void @_Z28jc_test_increment_assertionsv()
          to label %281 unwind label %291

281:                                              ; preds = %279
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %21) #6
  store i32 0, ptr %21, align 4, !tbaa !15
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %22) #6
  %282 = getelementptr inbounds i8, ptr %34, i64 24
  %283 = load ptr, ptr %282, align 8, !tbaa !26
  %284 = invoke noundef i32 %283(ptr noundef nonnull %34, i64 noundef %90, ptr noundef nonnull %20)
          to label %285 unwind label %293

285:                                              ; preds = %281
  store i32 %284, ptr %22, align 4, !tbaa !15
  %286 = 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 nonnull @.str.46, ptr noundef nonnull @.str.870, ptr noundef null)
          to label %287 unwind label %293

287:                                              ; preds = %285
  %288 = icmp eq i32 %286, 0
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %22) #6
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %21) #6
  br i1 %288, label %.invoke104, label %295

289:                                              ; preds = %270
  %290 = landingpad { ptr, i32 }
          cleanup
  br label %337

291:                                              ; preds = %.invoke104, %309, %303, %301, %296, %295, %279, %273, %271
  %292 = landingpad { ptr, i32 }
          cleanup
  br label %336

293:                                              ; preds = %285, %281
  %294 = landingpad { ptr, i32 }
          cleanup
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %22) #6
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %21) #6
  br label %336

295:                                              ; preds = %287
  invoke void @_ZN25TestAsyncGetBlockComplete4WaitEv(ptr noundef nonnull align 8 dereferenceable(40) %20)
          to label %296 unwind label %291

296:                                              ; preds = %295
  %297 = getelementptr inbounds i8, ptr %20, i64 32
  %298 = load ptr, ptr %297, align 8, !tbaa !27
  %299 = load ptr, ptr %298, align 8, !tbaa !24
  %300 = invoke noundef i32 %299(ptr noundef nonnull %298)
          to label %301 unwind label %291

301:                                              ; preds = %296
  %302 = invoke noundef ptr @_ZL19jc_test_get_fixturev()
          to label %303 unwind label %291

303:                                              ; preds = %301
  %304 = getelementptr inbounds i8, ptr %302, i64 96
  %305 = load i32, ptr %304, align 8
  %306 = and i32 %305, -16776961
  %307 = or disjoint i32 %306, 1847552
  store i32 %307, ptr %304, align 8
  %308 = invoke noundef ptr @_ZL19jc_test_get_fixturev()
          to label %309 unwind label %291

309:                                              ; preds = %303
  %310 = getelementptr inbounds i8, ptr %308, i64 32
  store ptr @.str.3, ptr %310, align 8, !tbaa !10
  invoke void @_Z28jc_test_increment_assertionsv()
          to label %311 unwind label %291

311:                                              ; preds = %309
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %23) #6
  store i32 0, ptr %23, align 4, !tbaa !15
  %312 = getelementptr inbounds i8, ptr %20, i64 24
  %313 = 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) %312, ptr noundef nonnull @.str.46, ptr noundef nonnull @.str.871, ptr noundef null)
          to label %314 unwind label %316

314:                                              ; preds = %311
  %315 = icmp eq i32 %313, 0
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %23) #6
  br i1 %315, label %.invoke104, label %318

.invoke104:                                       ; preds = %287, %314
  invoke void @_Z21jc_test_set_test_faili(i32 noundef 1)
          to label %.critedge unwind label %291

316:                                              ; preds = %311
  %317 = landingpad { ptr, i32 }
          cleanup
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %23) #6
  br label %336

318:                                              ; preds = %314
  call void @_ZN25TestAsyncGetBlockCompleteD2Ev(ptr noundef nonnull align 8 dereferenceable(40) %20) #6
  call void @llvm.lifetime.end.p0(i64 40, ptr nonnull %20) #6
  call void @llvm.lifetime.start.p0(i64 40, ptr nonnull %24) #6
  invoke void @_ZN25TestAsyncGetBlockCompleteC2Ev(ptr noundef nonnull align 8 dereferenceable(40) %24)
          to label %319 unwind label %338

319:                                              ; preds = %318
  %320 = invoke noundef ptr @_ZL19jc_test_get_fixturev()
          to label %321 unwind label %340

321:                                              ; preds = %319
  %322 = getelementptr inbounds i8, ptr %320, i64 96
  %323 = load i32, ptr %322, align 8
  %324 = and i32 %323, -16776961
  %325 = or disjoint i32 %324, 1848832
  store i32 %325, ptr %322, align 8
  %326 = invoke noundef ptr @_ZL19jc_test_get_fixturev()
          to label %327 unwind label %340

327:                                              ; preds = %321
  %328 = getelementptr inbounds i8, ptr %326, i64 32
  store ptr @.str.3, ptr %328, align 8, !tbaa !10
  invoke void @_Z28jc_test_increment_assertionsv()
          to label %329 unwind label %340

329:                                              ; preds = %327
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %25) #6
  store i32 2, ptr %25, align 4, !tbaa !15
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %26) #6
  %330 = load ptr, ptr %282, align 8, !tbaa !26
  %331 = invoke noundef i32 %330(ptr noundef nonnull %34, i64 noundef %149, ptr noundef nonnull %24)
          to label %332 unwind label %342

332:                                              ; preds = %329
  store i32 %331, ptr %26, align 4, !tbaa !15
  %333 = invoke noundef i32 @_ZN21jc_test_cmp_eq_helperILb0EE7compareIiiEEiRKT_RKT0_PKcS9_(ptr noundef nonnull align 4 dereferenceable(4) %25, ptr noundef nonnull align 4 dereferenceable(4) %26, ptr noundef nonnull @.str.138, ptr noundef nonnull @.str.872)
          to label %334 unwind label %342

334:                                              ; preds = %332
  %.not76 = icmp eq i32 %333, 0
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %26) #6
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %25) #6
  br i1 %.not76, label %335, label %345

335:                                              ; preds = %334
  invoke void @_Z21jc_test_set_test_faili(i32 noundef 1)
          to label %344 unwind label %340

336:                                              ; preds = %316, %293, %291
  %.pn70 = phi { ptr, i32 } [ %292, %291 ], [ %317, %316 ], [ %294, %293 ]
  call void @_ZN25TestAsyncGetBlockCompleteD2Ev(ptr noundef nonnull align 8 dereferenceable(40) %20) #6
  br label %337

337:                                              ; preds = %336, %289
  %.pn70.pn = phi { ptr, i32 } [ %.pn70, %336 ], [ %290, %289 ]
  call void @llvm.lifetime.end.p0(i64 40, ptr nonnull %20) #6
  br label %405

338:                                              ; preds = %318
  %339 = landingpad { ptr, i32 }
          cleanup
  br label %364

340:                                              ; preds = %335, %327, %321, %319
  %341 = landingpad { ptr, i32 }
          cleanup
  br label %363

342:                                              ; preds = %332, %329
  %343 = landingpad { ptr, i32 }
          cleanup
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %26) #6
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %25) #6
  br label %363

344:                                              ; preds = %335
  call void @_ZN25TestAsyncGetBlockCompleteD2Ev(ptr noundef nonnull align 8 dereferenceable(40) %24) #6
  call void @llvm.lifetime.end.p0(i64 40, ptr nonnull %24) #6
  br label %403

345:                                              ; preds = %334
  call void @_ZN25TestAsyncGetBlockCompleteD2Ev(ptr noundef nonnull align 8 dereferenceable(40) %24) #6
  call void @llvm.lifetime.end.p0(i64 40, ptr nonnull %24) #6
  call void @llvm.lifetime.start.p0(i64 40, ptr nonnull %27) #6
  invoke void @_ZN25TestAsyncGetBlockCompleteC2Ev(ptr noundef nonnull align 8 dereferenceable(40) %27)
          to label %346 unwind label %365

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

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

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

356:                                              ; preds = %354
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %28) #6
  store i32 0, ptr %28, align 4, !tbaa !15
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %29) #6
  %357 = load ptr, ptr %282, align 8, !tbaa !26
  %358 = invoke noundef i32 %357(ptr noundef nonnull %34, i64 noundef %208, ptr noundef nonnull %27)
          to label %359 unwind label %369

359:                                              ; preds = %356
  store i32 %358, ptr %29, align 4, !tbaa !15
  %360 = 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) %28, ptr noundef nonnull align 4 dereferenceable(4) %29, ptr noundef nonnull @.str.46, ptr noundef nonnull @.str.873, ptr noundef null)
          to label %361 unwind label %369

361:                                              ; preds = %359
  %362 = icmp eq i32 %360, 0
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %29) #6
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %28) #6
  br i1 %362, label %.invoke105, label %371

363:                                              ; preds = %342, %340
  %.pn73 = phi { ptr, i32 } [ %341, %340 ], [ %343, %342 ]
  call void @_ZN25TestAsyncGetBlockCompleteD2Ev(ptr noundef nonnull align 8 dereferenceable(40) %24) #6
  br label %364

364:                                              ; preds = %363, %338
  %.pn73.pn = phi { ptr, i32 } [ %.pn73, %363 ], [ %339, %338 ]
  call void @llvm.lifetime.end.p0(i64 40, ptr nonnull %24) #6
  br label %405

365:                                              ; preds = %345
  %366 = landingpad { ptr, i32 }
          cleanup
  br label %396

367:                                              ; preds = %.invoke105, %385, %379, %377, %372, %371, %354, %348, %346
  %368 = landingpad { ptr, i32 }
          cleanup
  br label %395

369:                                              ; preds = %359, %356
  %370 = landingpad { ptr, i32 }
          cleanup
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %29) #6
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %28) #6
  br label %395

371:                                              ; preds = %361
  invoke void @_ZN25TestAsyncGetBlockComplete4WaitEv(ptr noundef nonnull align 8 dereferenceable(40) %27)
          to label %372 unwind label %367

372:                                              ; preds = %371
  %373 = getelementptr inbounds i8, ptr %27, i64 32
  %374 = load ptr, ptr %373, align 8, !tbaa !27
  %375 = load ptr, ptr %374, align 8, !tbaa !24
  %376 = invoke noundef i32 %375(ptr noundef nonnull %374)
          to label %377 unwind label %367

377:                                              ; preds = %372
  %378 = invoke noundef ptr @_ZL19jc_test_get_fixturev()
          to label %379 unwind label %367

379:                                              ; preds = %377
  %380 = getelementptr inbounds i8, ptr %378, i64 96
  %381 = load i32, ptr %380, align 8
  %382 = and i32 %381, -16776961
  %383 = or disjoint i32 %382, 1850880
  store i32 %383, ptr %380, align 8
  %384 = invoke noundef ptr @_ZL19jc_test_get_fixturev()
          to label %385 unwind label %367

385:                                              ; preds = %379
  %386 = getelementptr inbounds i8, ptr %384, i64 32
  store ptr @.str.3, ptr %386, align 8, !tbaa !10
  invoke void @_Z28jc_test_increment_assertionsv()
          to label %387 unwind label %367

387:                                              ; preds = %385
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %30) #6
  store i32 0, ptr %30, align 4, !tbaa !15
  %388 = getelementptr inbounds i8, ptr %27, i64 24
  %389 = 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) %30, ptr noundef nonnull align 4 dereferenceable(4) %388, ptr noundef nonnull @.str.46, ptr noundef nonnull @.str.323, ptr noundef null)
          to label %390 unwind label %392

390:                                              ; preds = %387
  %391 = icmp eq i32 %389, 0
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %30) #6
  br i1 %391, label %.invoke105, label %394

.invoke105:                                       ; preds = %361, %390
  invoke void @_Z21jc_test_set_test_faili(i32 noundef 1)
          to label %.critedge90 unwind label %367

392:                                              ; preds = %387
  %393 = landingpad { ptr, i32 }
          cleanup
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %30) #6
  br label %395

394:                                              ; preds = %390
  call void @_ZN25TestAsyncGetBlockCompleteD2Ev(ptr noundef nonnull align 8 dereferenceable(40) %27) #6
  call void @llvm.lifetime.end.p0(i64 40, ptr nonnull %27) #6
  invoke void @Longtail_DisposeAPI(ptr noundef nonnull %34)
          to label %397 unwind label %231

395:                                              ; preds = %392, %369, %367
  %.pn77 = phi { ptr, i32 } [ %368, %367 ], [ %393, %392 ], [ %370, %369 ]
  call void @_ZN25TestAsyncGetBlockCompleteD2Ev(ptr noundef nonnull align 8 dereferenceable(40) %27) #6
  br label %396

396:                                              ; preds = %395, %365
  %.pn77.pn = phi { ptr, i32 } [ %.pn77, %395 ], [ %366, %365 ]
  call void @llvm.lifetime.end.p0(i64 40, ptr nonnull %27) #6
  br label %405

397:                                              ; preds = %394
  %.not81 = icmp eq ptr %33, null
  br i1 %.not81, label %399, label %398

398:                                              ; preds = %397
  invoke void @Longtail_DisposeAPI(ptr noundef nonnull %33)
          to label %399 unwind label %231

399:                                              ; preds = %398, %397
  %.not82 = icmp eq ptr %32, null
  br i1 %.not82, label %401, label %400

400:                                              ; preds = %399
  invoke void @Longtail_DisposeAPI(ptr noundef nonnull %32)
          to label %401 unwind label %231

401:                                              ; preds = %400, %399
  %.not83 = icmp eq ptr %31, null
  br i1 %.not83, label %403, label %402

402:                                              ; preds = %401
  invoke void @Longtail_DisposeAPI(ptr noundef nonnull %31)
          to label %403 unwind label %231

.critedge:                                        ; preds = %.invoke104
  call void @_ZN25TestAsyncGetBlockCompleteD2Ev(ptr noundef nonnull align 8 dereferenceable(40) %20) #6
  call void @llvm.lifetime.end.p0(i64 40, ptr nonnull %20) #6
  br label %403

.critedge90:                                      ; preds = %.invoke105
  call void @_ZN25TestAsyncGetBlockCompleteD2Ev(ptr noundef nonnull align 8 dereferenceable(40) %27) #6
  call void @llvm.lifetime.end.p0(i64 40, ptr nonnull %27) #6
  br label %403

403:                                              ; preds = %.invoke103, %344, %401, %402, %.critedge90, %.critedge
  call void @_ZN28TestAsyncPruneBlocksCompleteD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %15) #6
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %15) #6
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %14) #6
  br label %404

404:                                              ; preds = %.thread98, %.thread94, %.thread, %403
  ret void

405:                                              ; preds = %396, %364, %337, %268, %251, %233, %231
  %.pn84 = phi { ptr, i32 } [ %232, %231 ], [ %.pn77.pn, %396 ], [ %.pn73.pn, %364 ], [ %.pn70.pn, %337 ], [ %269, %268 ], [ %252, %251 ], [ %234, %233 ]
  call void @_ZN28TestAsyncPruneBlocksCompleteD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %15) #6
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %15) #6
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %14) #6
  br label %406

406:                                              ; preds = %405, %230, %179, %178, %120, %119, %61
  %.pn84.pn = phi { ptr, i32 } [ %.pn84, %405 ], [ %.pn68, %230 ], [ %180, %179 ], [ %.pn65, %178 ], [ %121, %120 ], [ %.pn, %119 ], [ %62, %61 ]
  resume { ptr, i32 } %.pn84.pn
}

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

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

; Function Attrs: mustprogress nounwind uwtable
declare dso_local void @_ZN28TestAsyncPruneBlocksCompleteD2Ev(ptr noundef nonnull align 8 dereferenceable(32)) 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 = { nofree nounwind }
attributes #6 = { nounwind }

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

!0 = !{i32 1, !"wchar_size", i32 4}
!1 = !{i32 8, !"PIC Level", i32 2}
!2 = !{i32 7, !"PIE Level", i32 2}
!3 = !{i32 7, !"uwtable", i32 2}
!4 = !{!"clang version 19.1.0 (git@github.com:llvm/llvm-project.git a4bf6cd7cfb1a1421ba92bca9d017b49936c55e4)"}
!5 = !{!"branch_weights", i32 1, i32 1048575}
!6 = !{!7, !7, i64 0}
!7 = !{!"any pointer", !8, i64 0}
!8 = !{!"omnipotent char", !9, i64 0}
!9 = !{!"Simple C++ TBAA"}
!10 = !{!11, !7, i64 32}
!11 = !{!"_ZTS15jc_test_fixture", !7, i64 8, !7, i64 16, !7, i64 24, !7, i64 32, !7, i64 40, !7, i64 48, !7, i64 56, !12, i64 64, !13, i64 88, !13, i64 91, !13, i64 91, !13, i64 91, !13, i64 91, !13, i64 92, !13, i64 96, !13, i64 97, !13, i64 99, !13, i64 100}
!12 = !{!"_ZTS13jc_test_stats", !13, i64 0, !13, i64 4, !13, i64 6, !13, i64 8, !13, i64 12, !14, i64 16}
!13 = !{!"int", !8, i64 0}
!14 = !{!"long", !8, i64 0}
!15 = !{!13, !13, i64 0}
!16 = !{!17, !7, i64 8}
!17 = !{!"_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}
!18 = !{!"_ZTS12Longtail_API", !7, i64 0}
!19 = !{!20, !7, i64 8}
!20 = !{!"_ZTS20Longtail_StoredBlock", !7, i64 0, !7, i64 8, !7, i64 16, !13, i64 24}
!21 = !{!22, !7, i64 0}
!22 = !{!"_ZTS19Longtail_BlockIndex", !7, i64 0, !7, i64 8, !7, i64 16, !7, i64 24, !7, i64 32, !7, i64 40}
!23 = !{!14, !14, i64 0}
!24 = !{!20, !7, i64 0}
!25 = !{!17, !7, i64 40}
!26 = !{!17, !7, i64 24}
!27 = !{!28, !7, i64 32}
!28 = !{!"_ZTS25TestAsyncGetBlockComplete", !29, i64 0, !7, i64 16, !13, i64 24, !7, i64 32}
!29 = !{!"_ZTS31Longtail_AsyncGetStoredBlockAPI", !18, i64 0, !7, i64 8}


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