; LLVM IR from DanEngelbrecht/longtail :: test/test.ll/ZN45Longtail_Longtail_TestLRUBlockStore (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.TestAsyncGetBlockComplete = type { %struct.Longtail_AsyncGetStoredBlockAPI, ptr, i32, ptr }
%struct.Longtail_AsyncGetStoredBlockAPI = type { %struct.Longtail_API, ptr }
%struct.Longtail_BlockStore_Stats = type { [22 x i64] }
%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_HashAPI = type { %struct.Longtail_API, 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 }

@.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.270 = external hidden unnamed_addr constant [7 x i8], align 1
@.str.273 = external hidden unnamed_addr constant [12 x i8], align 1
@.str.275 = external hidden unnamed_addr constant [13 x i8], align 1
@_ZZN45Longtail_Longtail_TestLRUBlockStore__TestCase8TestBodyEvE11BLOCK_COUNT = external hidden constant i32, align 4
@_ZZN45Longtail_Longtail_TestLRUBlockStore__TestCase8TestBodyEvE17BLOCK_CHUNK_SIZES = external hidden constant [2 x i32], align 4
@_ZZN45Longtail_Longtail_TestLRUBlockStore__TestCase8TestBodyEvE5block = external hidden global ptr, align 8
@_ZGVZN45Longtail_Longtail_TestLRUBlockStore__TestCase8TestBodyEvE5block = external hidden global i64, align 8
@.str.307 = external hidden unnamed_addr constant [78 x i8], align 1
@_ZZN45Longtail_Longtail_TestLRUBlockStore__TestCase8TestBodyEvE17BLOCK_CHUNK_SIZES_0 = external hidden constant [1 x i32], align 4
@_ZZN45Longtail_Longtail_TestLRUBlockStore__TestCase8TestBodyEvE5block_0 = external hidden global ptr, align 8
@_ZGVZN45Longtail_Longtail_TestLRUBlockStore__TestCase8TestBodyEvE5block_0 = external hidden global i64, align 8
@_ZZN45Longtail_Longtail_TestLRUBlockStore__TestCase8TestBodyEvE17BLOCK_CHUNK_SIZES_1 = external hidden constant [3 x i32], align 4
@_ZZN45Longtail_Longtail_TestLRUBlockStore__TestCase8TestBodyEvE5block_1 = external hidden global ptr, align 8
@_ZGVZN45Longtail_Longtail_TestLRUBlockStore__TestCase8TestBodyEvE5block_1 = external hidden global i64, align 8
@_ZZN45Longtail_Longtail_TestLRUBlockStore__TestCase8TestBodyEvE17BLOCK_CHUNK_SIZES_2 = external hidden constant [3 x i32], align 4
@_ZZN45Longtail_Longtail_TestLRUBlockStore__TestCase8TestBodyEvE5block_2 = external hidden global ptr, align 8
@_ZGVZN45Longtail_Longtail_TestLRUBlockStore__TestCase8TestBodyEvE5block_2 = external hidden global i64, align 8
@_ZZN45Longtail_Longtail_TestLRUBlockStore__TestCase8TestBodyEvE17BLOCK_CHUNK_SIZES_3 = external hidden constant [1 x i32], align 4
@_ZZN45Longtail_Longtail_TestLRUBlockStore__TestCase8TestBodyEvE5block_3 = external hidden global ptr, align 8
@_ZGVZN45Longtail_Longtail_TestLRUBlockStore__TestCase8TestBodyEvE5block_3 = external hidden global i64, align 8
@_ZZN45Longtail_Longtail_TestLRUBlockStore__TestCase8TestBodyEvE17BLOCK_CHUNK_SIZES_4 = external hidden constant [2 x i32], align 4
@_ZZN45Longtail_Longtail_TestLRUBlockStore__TestCase8TestBodyEvE5block_4 = external hidden global ptr, align 8
@_ZGVZN45Longtail_Longtail_TestLRUBlockStore__TestCase8TestBodyEvE5block_4 = external hidden global i64, align 8
@_ZZN45Longtail_Longtail_TestLRUBlockStore__TestCase8TestBodyEvE17BLOCK_CHUNK_SIZES_5 = external hidden constant [4 x i32], align 16
@_ZZN45Longtail_Longtail_TestLRUBlockStore__TestCase8TestBodyEvE5block_5 = external hidden global ptr, align 8
@_ZGVZN45Longtail_Longtail_TestLRUBlockStore__TestCase8TestBodyEvE5block_5 = external hidden global i64, align 8
@.str.308 = external hidden unnamed_addr constant [89 x i8], align 1
@.str.309 = external hidden unnamed_addr constant [12 x i8], align 1
@.str.310 = external hidden unnamed_addr constant [73 x i8], align 1
@.str.311 = external hidden unnamed_addr constant [75 x i8], align 1
@.str.312 = external hidden unnamed_addr constant [89 x i8], align 1
@.str.313 = external hidden unnamed_addr constant [89 x i8], align 1
@.str.314 = external hidden unnamed_addr constant [89 x i8], align 1
@.str.315 = external hidden unnamed_addr constant [89 x i8], align 1
@.str.316 = external hidden unnamed_addr constant [16 x i8], align 1
@.str.317 = external hidden unnamed_addr constant [16 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_helperILb0EE7compareIjmEEiRKT_RKT0_PKcS9_(ptr noundef nonnull align 4 dereferenceable(4), ptr noundef nonnull align 8 dereferenceable(8), 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 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: mustprogress uwtable
define dso_local void @_ZN45Longtail_Longtail_TestLRUBlockStore__TestCase8TestBodyEv(ptr noundef nonnull align 8 dereferenceable(8) %0) unnamed_addr #3 align 2 personality ptr @__gxx_personality_v0 {
  %2 = alloca ptr, align 8
  %3 = alloca ptr, align 8
  %4 = alloca ptr, align 8
  %5 = alloca ptr, align 8
  %6 = alloca ptr, align 8
  %7 = alloca ptr, align 8
  %8 = alloca [7 x i64], align 16
  %9 = alloca ptr, align 8
  %10 = alloca i32, align 4
  %11 = alloca %struct.TestAsyncPutBlockComplete, align 8
  %12 = alloca i32, align 4
  %13 = alloca i32, align 4
  %14 = alloca i32, align 4
  %15 = alloca i32, align 4
  %16 = alloca %struct.TestAsyncPutBlockComplete, align 8
  %17 = alloca i32, align 4
  %18 = alloca i32, align 4
  %19 = alloca i32, align 4
  %20 = alloca %struct.TestAsyncPutBlockComplete, align 8
  %21 = alloca i32, align 4
  %22 = alloca i32, align 4
  %23 = alloca i32, align 4
  %24 = alloca %struct.TestAsyncPutBlockComplete, align 8
  %25 = alloca i32, align 4
  %26 = alloca i32, align 4
  %27 = alloca i32, align 4
  %28 = alloca %struct.TestAsyncPutBlockComplete, align 8
  %29 = alloca i32, align 4
  %30 = alloca i32, align 4
  %31 = alloca i32, align 4
  %32 = alloca %struct.TestAsyncPutBlockComplete, align 8
  %33 = alloca i32, align 4
  %34 = alloca i32, align 4
  %35 = alloca i32, align 4
  %36 = alloca %struct.TestAsyncPutBlockComplete, align 8
  %37 = alloca i32, align 4
  %38 = alloca i32, align 4
  %39 = alloca i32, align 4
  %40 = alloca i32, align 4
  %41 = alloca %struct.TestAsyncGetBlockComplete, align 8
  %42 = alloca i32, align 4
  %43 = alloca i32, align 4
  %44 = alloca ptr, align 8
  %45 = alloca i32, align 4
  %46 = alloca %struct.Longtail_BlockStore_Stats, align 8
  %47 = alloca %struct.Longtail_BlockStore_Stats, align 8
  %48 = alloca %struct.TestAsyncGetBlockComplete, align 8
  %49 = alloca i32, align 4
  %50 = alloca i32, align 4
  %51 = alloca ptr, align 8
  %52 = alloca i32, align 4
  %53 = alloca %struct.TestAsyncGetBlockComplete, align 8
  %54 = alloca i32, align 4
  %55 = alloca i32, align 4
  %56 = alloca ptr, align 8
  %57 = alloca i32, align 4
  %58 = alloca %struct.TestAsyncGetBlockComplete, align 8
  %59 = alloca i32, align 4
  %60 = alloca i32, align 4
  %61 = alloca ptr, align 8
  %62 = alloca i32, align 4
  %63 = alloca %struct.TestAsyncGetBlockComplete, align 8
  %64 = alloca i32, align 4
  %65 = alloca i32, align 4
  %66 = alloca ptr, align 8
  %67 = alloca i32, align 4
  %68 = alloca %struct.TestAsyncGetBlockComplete, align 8
  %69 = alloca i32, align 4
  %70 = alloca i32, align 4
  %71 = alloca ptr, align 8
  %72 = alloca i32, align 4
  %73 = alloca %struct.TestAsyncGetBlockComplete, align 8
  %74 = alloca i32, align 4
  %75 = alloca i32, align 4
  %76 = alloca ptr, align 8
  %77 = alloca i32, align 4
  %78 = alloca i32, align 4
  %79 = alloca i32, align 4
  store ptr %0, ptr %2, align 8, !tbaa !5
  %80 = load ptr, ptr %2, align 8
  call void @llvm.lifetime.start.p0(i64 8, ptr %3) #5
  %81 = call ptr @Longtail_CreateInMemStorageAPI()
  store ptr %81, ptr %3, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %4) #5
  %82 = call ptr @Longtail_CreateBlake3HashAPI()
  store ptr %82, ptr %4, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %5) #5
  %83 = call ptr @Longtail_CreateBikeshedJobAPI(i32 noundef 0, i32 noundef 0)
  store ptr %83, ptr %5, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %6) #5
  %84 = load ptr, ptr %5, align 8, !tbaa !5
  %85 = load ptr, ptr %3, align 8, !tbaa !5
  %86 = call ptr @Longtail_CreateFSBlockStoreAPI(ptr noundef %84, ptr noundef %85, ptr noundef @.str.270, ptr noundef null, i32 noundef 0)
  store ptr %86, ptr %6, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %7) #5
  %87 = load ptr, ptr %6, align 8, !tbaa !5
  %88 = call ptr @Longtail_CreateLRUBlockStoreAPI(ptr noundef %87, i32 noundef 3)
  store ptr %88, ptr %7, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 56, ptr %8) #5
  %89 = load atomic i8, ptr @_ZGVZN45Longtail_Longtail_TestLRUBlockStore__TestCase8TestBodyEvE5block acquire, align 8
  %90 = icmp eq i8 %89, 0
  br i1 %90, label %91, label %98, !prof !9

91:                                               ; preds = %1
  %92 = call i32 @__cxa_guard_acquire(ptr @_ZGVZN45Longtail_Longtail_TestLRUBlockStore__TestCase8TestBodyEvE5block) #5
  %93 = icmp ne i32 %92, 0
  br i1 %93, label %94, label %98

94:                                               ; preds = %91
  %95 = load ptr, ptr %4, align 8, !tbaa !5
  %96 = invoke noundef ptr @_ZL19GenerateStoredBlockP16Longtail_HashAPIjPKj(ptr noundef %95, i32 noundef 2, ptr noundef @_ZZN45Longtail_Longtail_TestLRUBlockStore__TestCase8TestBodyEvE17BLOCK_CHUNK_SIZES)
          to label %97 unwind label %123

97:                                               ; preds = %94
  store ptr %96, ptr @_ZZN45Longtail_Longtail_TestLRUBlockStore__TestCase8TestBodyEvE5block, align 8, !tbaa !5
  call void @__cxa_guard_release(ptr @_ZGVZN45Longtail_Longtail_TestLRUBlockStore__TestCase8TestBodyEvE5block) #5
  br label %98

98:                                               ; preds = %97, %91, %1
  call void @llvm.lifetime.start.p0(i64 32, ptr %11) #5
  call void @_ZN25TestAsyncPutBlockCompleteC2Ev(ptr noundef nonnull align 8 dereferenceable(28) %11)
  br label %99

99:                                               ; preds = %98
  %100 = invoke noundef ptr @_ZL19jc_test_get_fixturev()
          to label %101 unwind label %127

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

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

109:                                              ; preds = %107
  call void @llvm.lifetime.start.p0(i64 4, ptr %12) #5
  store i32 0, ptr %12, align 4, !tbaa !15
  call void @llvm.lifetime.start.p0(i64 4, ptr %13) #5
  %110 = load ptr, ptr %7, align 8, !tbaa !5
  %111 = getelementptr inbounds %struct.Longtail_BlockStoreAPI, ptr %110, i32 0, i32 1
  %112 = load ptr, ptr %111, align 8, !tbaa !16
  %113 = load ptr, ptr %7, align 8, !tbaa !5
  %114 = load ptr, ptr @_ZZN45Longtail_Longtail_TestLRUBlockStore__TestCase8TestBodyEvE5block, align 8, !tbaa !5
  %115 = getelementptr inbounds %struct.TestAsyncPutBlockComplete, ptr %11, i32 0, i32 0
  %116 = invoke noundef i32 %112(ptr noundef %113, ptr noundef %114, ptr noundef %115)
          to label %117 unwind label %131

117:                                              ; preds = %109
  store i32 %116, ptr %13, align 4, !tbaa !15
  %118 = 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) %12, ptr noundef nonnull align 4 dereferenceable(4) %13, ptr noundef @.str.46, ptr noundef @.str.307, ptr noundef null)
          to label %119 unwind label %131

119:                                              ; preds = %117
  %120 = icmp eq i32 %118, 0
  call void @llvm.lifetime.end.p0(i64 4, ptr %13) #5
  call void @llvm.lifetime.end.p0(i64 4, ptr %12) #5
  br i1 %120, label %121, label %135

121:                                              ; preds = %119
  invoke void @_Z21jc_test_set_test_faili(i32 noundef 1)
          to label %122 unwind label %127

122:                                              ; preds = %121
  store i32 1, ptr %14, align 4
  br label %176

123:                                              ; preds = %94
  %124 = landingpad { ptr, i32 }
          cleanup
  %125 = extractvalue { ptr, i32 } %124, 0
  store ptr %125, ptr %9, align 8
  %126 = extractvalue { ptr, i32 } %124, 1
  store i32 %126, ptr %10, align 4
  call void @__cxa_guard_abort(ptr @_ZGVZN45Longtail_Longtail_TestLRUBlockStore__TestCase8TestBodyEvE5block) #5
  br label %1453

127:                                              ; preds = %162, %154, %147, %141, %139, %137, %121, %107, %101, %99
  %128 = landingpad { ptr, i32 }
          cleanup
  %129 = extractvalue { ptr, i32 } %128, 0
  store ptr %129, ptr %9, align 8
  %130 = extractvalue { ptr, i32 } %128, 1
  store i32 %130, ptr %10, align 4
  br label %213

131:                                              ; preds = %117, %109
  %132 = landingpad { ptr, i32 }
          cleanup
  %133 = extractvalue { ptr, i32 } %132, 0
  store ptr %133, ptr %9, align 8
  %134 = extractvalue { ptr, i32 } %132, 1
  store i32 %134, ptr %10, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %13) #5
  call void @llvm.lifetime.end.p0(i64 4, ptr %12) #5
  br label %213

135:                                              ; preds = %119
  br label %136

136:                                              ; preds = %135
  br label %137

137:                                              ; preds = %136
  invoke void @_ZN25TestAsyncPutBlockComplete4WaitEv(ptr noundef nonnull align 8 dereferenceable(28) %11)
          to label %138 unwind label %127

138:                                              ; preds = %137
  br label %139

139:                                              ; preds = %138
  %140 = invoke noundef ptr @_ZL19jc_test_get_fixturev()
          to label %141 unwind label %127

141:                                              ; preds = %139
  %142 = getelementptr inbounds %struct.jc_test_fixture, ptr %140, i32 0, i32 11
  %143 = load i32, ptr %142, align 8
  %144 = and i32 %143, -16776961
  %145 = or i32 %144, 453376
  store i32 %145, ptr %142, align 8
  %146 = invoke noundef ptr @_ZL19jc_test_get_fixturev()
          to label %147 unwind label %127

147:                                              ; preds = %141
  %148 = getelementptr inbounds %struct.jc_test_fixture, ptr %146, i32 0, i32 4
  store ptr @.str.3, ptr %148, align 8, !tbaa !10
  invoke void @_Z28jc_test_increment_assertionsv()
          to label %149 unwind label %127

149:                                              ; preds = %147
  call void @llvm.lifetime.start.p0(i64 4, ptr %15) #5
  store i32 0, ptr %15, align 4, !tbaa !15
  %150 = getelementptr inbounds %struct.TestAsyncPutBlockComplete, ptr %11, i32 0, i32 2
  %151 = 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) %15, ptr noundef nonnull align 4 dereferenceable(4) %150, ptr noundef @.str.46, ptr noundef @.str.273, ptr noundef null)
          to label %152 unwind label %156

152:                                              ; preds = %149
  %153 = icmp eq i32 %151, 0
  call void @llvm.lifetime.end.p0(i64 4, ptr %15) #5
  br i1 %153, label %154, label %160

154:                                              ; preds = %152
  invoke void @_Z21jc_test_set_test_faili(i32 noundef 1)
          to label %155 unwind label %127

155:                                              ; preds = %154
  store i32 1, ptr %14, align 4
  br label %176

156:                                              ; preds = %149
  %157 = landingpad { ptr, i32 }
          cleanup
  %158 = extractvalue { ptr, i32 } %157, 0
  store ptr %158, ptr %9, align 8
  %159 = extractvalue { ptr, i32 } %157, 1
  store i32 %159, ptr %10, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %15) #5
  br label %213

160:                                              ; preds = %152
  br label %161

161:                                              ; preds = %160
  br label %162

162:                                              ; preds = %161
  %163 = load ptr, ptr @_ZZN45Longtail_Longtail_TestLRUBlockStore__TestCase8TestBodyEvE5block, align 8, !tbaa !5
  %164 = getelementptr inbounds %struct.Longtail_StoredBlock, ptr %163, i32 0, i32 1
  %165 = load ptr, ptr %164, align 8, !tbaa !19
  %166 = getelementptr inbounds %struct.Longtail_BlockIndex, ptr %165, i32 0, i32 0
  %167 = load ptr, ptr %166, align 8, !tbaa !21
  %168 = load i64, ptr %167, align 8, !tbaa !23
  %169 = getelementptr inbounds [7 x i64], ptr %8, i64 0, i64 0
  store i64 %168, ptr %169, align 16, !tbaa !23
  %170 = load ptr, ptr @_ZZN45Longtail_Longtail_TestLRUBlockStore__TestCase8TestBodyEvE5block, align 8, !tbaa !5
  %171 = getelementptr inbounds %struct.Longtail_StoredBlock, ptr %170, i32 0, i32 0
  %172 = load ptr, ptr %171, align 8, !tbaa !24
  %173 = load ptr, ptr @_ZZN45Longtail_Longtail_TestLRUBlockStore__TestCase8TestBodyEvE5block, align 8, !tbaa !5
  %174 = invoke noundef i32 %172(ptr noundef %173)
          to label %175 unwind label %127

175:                                              ; preds = %162
  store i32 0, ptr %14, align 4
  br label %176

176:                                              ; preds = %175, %155, %122
  call void @_ZN25TestAsyncPutBlockCompleteD2Ev(ptr noundef nonnull align 8 dereferenceable(28) %11) #5
  call void @llvm.lifetime.end.p0(i64 32, ptr %11) #5
  %177 = load i32, ptr %14, align 4
  switch i32 %177, label %1449 [
    i32 0, label %178
  ]

178:                                              ; preds = %176
  %179 = load atomic i8, ptr @_ZGVZN45Longtail_Longtail_TestLRUBlockStore__TestCase8TestBodyEvE5block_0 acquire, align 8
  %180 = icmp eq i8 %179, 0
  br i1 %180, label %181, label %188, !prof !9

181:                                              ; preds = %178
  %182 = call i32 @__cxa_guard_acquire(ptr @_ZGVZN45Longtail_Longtail_TestLRUBlockStore__TestCase8TestBodyEvE5block_0) #5
  %183 = icmp ne i32 %182, 0
  br i1 %183, label %184, label %188

184:                                              ; preds = %181
  %185 = load ptr, ptr %4, align 8, !tbaa !5
  %186 = invoke noundef ptr @_ZL19GenerateStoredBlockP16Longtail_HashAPIjPKj(ptr noundef %185, i32 noundef 1, ptr noundef @_ZZN45Longtail_Longtail_TestLRUBlockStore__TestCase8TestBodyEvE17BLOCK_CHUNK_SIZES_0)
          to label %187 unwind label %214

187:                                              ; preds = %184
  store ptr %186, ptr @_ZZN45Longtail_Longtail_TestLRUBlockStore__TestCase8TestBodyEvE5block_0, align 8, !tbaa !5
  call void @__cxa_guard_release(ptr @_ZGVZN45Longtail_Longtail_TestLRUBlockStore__TestCase8TestBodyEvE5block_0) #5
  br label %188

188:                                              ; preds = %187, %181, %178
  call void @llvm.lifetime.start.p0(i64 32, ptr %16) #5
  call void @_ZN25TestAsyncPutBlockCompleteC2Ev(ptr noundef nonnull align 8 dereferenceable(28) %16)
  br label %189

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

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

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

199:                                              ; preds = %197
  call void @llvm.lifetime.start.p0(i64 4, ptr %17) #5
  store i32 0, ptr %17, align 4, !tbaa !15
  call void @llvm.lifetime.start.p0(i64 4, ptr %18) #5
  %200 = load ptr, ptr %7, align 8, !tbaa !5
  %201 = getelementptr inbounds %struct.Longtail_BlockStoreAPI, ptr %200, i32 0, i32 1
  %202 = load ptr, ptr %201, align 8, !tbaa !16
  %203 = load ptr, ptr %7, align 8, !tbaa !5
  %204 = load ptr, ptr @_ZZN45Longtail_Longtail_TestLRUBlockStore__TestCase8TestBodyEvE5block_0, align 8, !tbaa !5
  %205 = getelementptr inbounds %struct.TestAsyncPutBlockComplete, ptr %16, i32 0, i32 0
  %206 = invoke noundef i32 %202(ptr noundef %203, ptr noundef %204, ptr noundef %205)
          to label %207 unwind label %222

207:                                              ; preds = %199
  store i32 %206, ptr %18, align 4, !tbaa !15
  %208 = 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) %17, ptr noundef nonnull align 4 dereferenceable(4) %18, ptr noundef @.str.46, ptr noundef @.str.307, ptr noundef null)
          to label %209 unwind label %222

209:                                              ; preds = %207
  %210 = icmp eq i32 %208, 0
  call void @llvm.lifetime.end.p0(i64 4, ptr %18) #5
  call void @llvm.lifetime.end.p0(i64 4, ptr %17) #5
  br i1 %210, label %211, label %226

211:                                              ; preds = %209
  invoke void @_Z21jc_test_set_test_faili(i32 noundef 1)
          to label %212 unwind label %218

212:                                              ; preds = %211
  store i32 1, ptr %14, align 4
  br label %267

213:                                              ; preds = %156, %131, %127
  call void @_ZN25TestAsyncPutBlockCompleteD2Ev(ptr noundef nonnull align 8 dereferenceable(28) %11) #5
  call void @llvm.lifetime.end.p0(i64 32, ptr %11) #5
  br label %1453

214:                                              ; preds = %184
  %215 = landingpad { ptr, i32 }
          cleanup
  %216 = extractvalue { ptr, i32 } %215, 0
  store ptr %216, ptr %9, align 8
  %217 = extractvalue { ptr, i32 } %215, 1
  store i32 %217, ptr %10, align 4
  call void @__cxa_guard_abort(ptr @_ZGVZN45Longtail_Longtail_TestLRUBlockStore__TestCase8TestBodyEvE5block_0) #5
  br label %1453

218:                                              ; preds = %253, %245, %238, %232, %230, %228, %211, %197, %191, %189
  %219 = landingpad { ptr, i32 }
          cleanup
  %220 = extractvalue { ptr, i32 } %219, 0
  store ptr %220, ptr %9, align 8
  %221 = extractvalue { ptr, i32 } %219, 1
  store i32 %221, ptr %10, align 4
  br label %304

222:                                              ; preds = %207, %199
  %223 = landingpad { ptr, i32 }
          cleanup
  %224 = extractvalue { ptr, i32 } %223, 0
  store ptr %224, ptr %9, align 8
  %225 = extractvalue { ptr, i32 } %223, 1
  store i32 %225, ptr %10, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %18) #5
  call void @llvm.lifetime.end.p0(i64 4, ptr %17) #5
  br label %304

226:                                              ; preds = %209
  br label %227

227:                                              ; preds = %226
  br label %228

228:                                              ; preds = %227
  invoke void @_ZN25TestAsyncPutBlockComplete4WaitEv(ptr noundef nonnull align 8 dereferenceable(28) %16)
          to label %229 unwind label %218

229:                                              ; preds = %228
  br label %230

230:                                              ; preds = %229
  %231 = invoke noundef ptr @_ZL19jc_test_get_fixturev()
          to label %232 unwind label %218

232:                                              ; preds = %230
  %233 = getelementptr inbounds %struct.jc_test_fixture, ptr %231, i32 0, i32 11
  %234 = load i32, ptr %233, align 8
  %235 = and i32 %234, -16776961
  %236 = or i32 %235, 456448
  store i32 %236, ptr %233, align 8
  %237 = invoke noundef ptr @_ZL19jc_test_get_fixturev()
          to label %238 unwind label %218

238:                                              ; preds = %232
  %239 = getelementptr inbounds %struct.jc_test_fixture, ptr %237, i32 0, i32 4
  store ptr @.str.3, ptr %239, align 8, !tbaa !10
  invoke void @_Z28jc_test_increment_assertionsv()
          to label %240 unwind label %218

240:                                              ; preds = %238
  call void @llvm.lifetime.start.p0(i64 4, ptr %19) #5
  store i32 0, ptr %19, align 4, !tbaa !15
  %241 = getelementptr inbounds %struct.TestAsyncPutBlockComplete, ptr %16, i32 0, i32 2
  %242 = 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) %19, ptr noundef nonnull align 4 dereferenceable(4) %241, ptr noundef @.str.46, ptr noundef @.str.273, ptr noundef null)
          to label %243 unwind label %247

243:                                              ; preds = %240
  %244 = icmp eq i32 %242, 0
  call void @llvm.lifetime.end.p0(i64 4, ptr %19) #5
  br i1 %244, label %245, label %251

245:                                              ; preds = %243
  invoke void @_Z21jc_test_set_test_faili(i32 noundef 1)
          to label %246 unwind label %218

246:                                              ; preds = %245
  store i32 1, ptr %14, align 4
  br label %267

247:                                              ; preds = %240
  %248 = landingpad { ptr, i32 }
          cleanup
  %249 = extractvalue { ptr, i32 } %248, 0
  store ptr %249, ptr %9, align 8
  %250 = extractvalue { ptr, i32 } %248, 1
  store i32 %250, ptr %10, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %19) #5
  br label %304

251:                                              ; preds = %243
  br label %252

252:                                              ; preds = %251
  br label %253

253:                                              ; preds = %252
  %254 = load ptr, ptr @_ZZN45Longtail_Longtail_TestLRUBlockStore__TestCase8TestBodyEvE5block_0, align 8, !tbaa !5
  %255 = getelementptr inbounds %struct.Longtail_StoredBlock, ptr %254, i32 0, i32 1
  %256 = load ptr, ptr %255, align 8, !tbaa !19
  %257 = getelementptr inbounds %struct.Longtail_BlockIndex, ptr %256, i32 0, i32 0
  %258 = load ptr, ptr %257, align 8, !tbaa !21
  %259 = load i64, ptr %258, align 8, !tbaa !23
  %260 = getelementptr inbounds [7 x i64], ptr %8, i64 0, i64 1
  store i64 %259, ptr %260, align 8, !tbaa !23
  %261 = load ptr, ptr @_ZZN45Longtail_Longtail_TestLRUBlockStore__TestCase8TestBodyEvE5block_0, align 8, !tbaa !5
  %262 = getelementptr inbounds %struct.Longtail_StoredBlock, ptr %261, i32 0, i32 0
  %263 = load ptr, ptr %262, align 8, !tbaa !24
  %264 = load ptr, ptr @_ZZN45Longtail_Longtail_TestLRUBlockStore__TestCase8TestBodyEvE5block_0, align 8, !tbaa !5
  %265 = invoke noundef i32 %263(ptr noundef %264)
          to label %266 unwind label %218

266:                                              ; preds = %253
  store i32 0, ptr %14, align 4
  br label %267

267:                                              ; preds = %266, %246, %212
  call void @_ZN25TestAsyncPutBlockCompleteD2Ev(ptr noundef nonnull align 8 dereferenceable(28) %16) #5
  call void @llvm.lifetime.end.p0(i64 32, ptr %16) #5
  %268 = load i32, ptr %14, align 4
  switch i32 %268, label %1449 [
    i32 0, label %269
  ]

269:                                              ; preds = %267
  %270 = load atomic i8, ptr @_ZGVZN45Longtail_Longtail_TestLRUBlockStore__TestCase8TestBodyEvE5block_1 acquire, align 8
  %271 = icmp eq i8 %270, 0
  br i1 %271, label %272, label %279, !prof !9

272:                                              ; preds = %269
  %273 = call i32 @__cxa_guard_acquire(ptr @_ZGVZN45Longtail_Longtail_TestLRUBlockStore__TestCase8TestBodyEvE5block_1) #5
  %274 = icmp ne i32 %273, 0
  br i1 %274, label %275, label %279

275:                                              ; preds = %272
  %276 = load ptr, ptr %4, align 8, !tbaa !5
  %277 = invoke noundef ptr @_ZL19GenerateStoredBlockP16Longtail_HashAPIjPKj(ptr noundef %276, i32 noundef 3, ptr noundef @_ZZN45Longtail_Longtail_TestLRUBlockStore__TestCase8TestBodyEvE17BLOCK_CHUNK_SIZES_1)
          to label %278 unwind label %305

278:                                              ; preds = %275
  store ptr %277, ptr @_ZZN45Longtail_Longtail_TestLRUBlockStore__TestCase8TestBodyEvE5block_1, align 8, !tbaa !5
  call void @__cxa_guard_release(ptr @_ZGVZN45Longtail_Longtail_TestLRUBlockStore__TestCase8TestBodyEvE5block_1) #5
  br label %279

279:                                              ; preds = %278, %272, %269
  call void @llvm.lifetime.start.p0(i64 32, ptr %20) #5
  call void @_ZN25TestAsyncPutBlockCompleteC2Ev(ptr noundef nonnull align 8 dereferenceable(28) %20)
  br label %280

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

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

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

290:                                              ; preds = %288
  call void @llvm.lifetime.start.p0(i64 4, ptr %21) #5
  store i32 0, ptr %21, align 4, !tbaa !15
  call void @llvm.lifetime.start.p0(i64 4, ptr %22) #5
  %291 = load ptr, ptr %7, align 8, !tbaa !5
  %292 = getelementptr inbounds %struct.Longtail_BlockStoreAPI, ptr %291, i32 0, i32 1
  %293 = load ptr, ptr %292, align 8, !tbaa !16
  %294 = load ptr, ptr %7, align 8, !tbaa !5
  %295 = load ptr, ptr @_ZZN45Longtail_Longtail_TestLRUBlockStore__TestCase8TestBodyEvE5block_1, align 8, !tbaa !5
  %296 = getelementptr inbounds %struct.TestAsyncPutBlockComplete, ptr %20, i32 0, i32 0
  %297 = invoke noundef i32 %293(ptr noundef %294, ptr noundef %295, ptr noundef %296)
          to label %298 unwind label %313

298:                                              ; preds = %290
  store i32 %297, ptr %22, align 4, !tbaa !15
  %299 = invoke noundef i32 @_ZN21jc_test_cmp_eq_helperILb1EE7compareIiiEEiRKT_RKT0_PKcS9_PN23jc_test_enable_argumentIXntsr18jc_test_is_pointerIS5_EE5valueEE4typeE(ptr noundef nonnull align 4 dereferenceable(4) %21, ptr noundef nonnull align 4 dereferenceable(4) %22, ptr noundef @.str.46, ptr noundef @.str.307, ptr noundef null)
          to label %300 unwind label %313

300:                                              ; preds = %298
  %301 = icmp eq i32 %299, 0
  call void @llvm.lifetime.end.p0(i64 4, ptr %22) #5
  call void @llvm.lifetime.end.p0(i64 4, ptr %21) #5
  br i1 %301, label %302, label %317

302:                                              ; preds = %300
  invoke void @_Z21jc_test_set_test_faili(i32 noundef 1)
          to label %303 unwind label %309

303:                                              ; preds = %302
  store i32 1, ptr %14, align 4
  br label %358

304:                                              ; preds = %247, %222, %218
  call void @_ZN25TestAsyncPutBlockCompleteD2Ev(ptr noundef nonnull align 8 dereferenceable(28) %16) #5
  call void @llvm.lifetime.end.p0(i64 32, ptr %16) #5
  br label %1453

305:                                              ; preds = %275
  %306 = landingpad { ptr, i32 }
          cleanup
  %307 = extractvalue { ptr, i32 } %306, 0
  store ptr %307, ptr %9, align 8
  %308 = extractvalue { ptr, i32 } %306, 1
  store i32 %308, ptr %10, align 4
  call void @__cxa_guard_abort(ptr @_ZGVZN45Longtail_Longtail_TestLRUBlockStore__TestCase8TestBodyEvE5block_1) #5
  br label %1453

309:                                              ; preds = %344, %336, %329, %323, %321, %319, %302, %288, %282, %280
  %310 = landingpad { ptr, i32 }
          cleanup
  %311 = extractvalue { ptr, i32 } %310, 0
  store ptr %311, ptr %9, align 8
  %312 = extractvalue { ptr, i32 } %310, 1
  store i32 %312, ptr %10, align 4
  br label %395

313:                                              ; preds = %298, %290
  %314 = landingpad { ptr, i32 }
          cleanup
  %315 = extractvalue { ptr, i32 } %314, 0
  store ptr %315, ptr %9, align 8
  %316 = extractvalue { ptr, i32 } %314, 1
  store i32 %316, ptr %10, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %22) #5
  call void @llvm.lifetime.end.p0(i64 4, ptr %21) #5
  br label %395

317:                                              ; preds = %300
  br label %318

318:                                              ; preds = %317
  br label %319

319:                                              ; preds = %318
  invoke void @_ZN25TestAsyncPutBlockComplete4WaitEv(ptr noundef nonnull align 8 dereferenceable(28) %20)
          to label %320 unwind label %309

320:                                              ; preds = %319
  br label %321

321:                                              ; preds = %320
  %322 = invoke noundef ptr @_ZL19jc_test_get_fixturev()
          to label %323 unwind label %309

323:                                              ; preds = %321
  %324 = getelementptr inbounds %struct.jc_test_fixture, ptr %322, i32 0, i32 11
  %325 = load i32, ptr %324, align 8
  %326 = and i32 %325, -16776961
  %327 = or i32 %326, 459520
  store i32 %327, ptr %324, align 8
  %328 = invoke noundef ptr @_ZL19jc_test_get_fixturev()
          to label %329 unwind label %309

329:                                              ; preds = %323
  %330 = getelementptr inbounds %struct.jc_test_fixture, ptr %328, i32 0, i32 4
  store ptr @.str.3, ptr %330, align 8, !tbaa !10
  invoke void @_Z28jc_test_increment_assertionsv()
          to label %331 unwind label %309

331:                                              ; preds = %329
  call void @llvm.lifetime.start.p0(i64 4, ptr %23) #5
  store i32 0, ptr %23, align 4, !tbaa !15
  %332 = getelementptr inbounds %struct.TestAsyncPutBlockComplete, ptr %20, i32 0, i32 2
  %333 = 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) %332, ptr noundef @.str.46, ptr noundef @.str.273, ptr noundef null)
          to label %334 unwind label %338

334:                                              ; preds = %331
  %335 = icmp eq i32 %333, 0
  call void @llvm.lifetime.end.p0(i64 4, ptr %23) #5
  br i1 %335, label %336, label %342

336:                                              ; preds = %334
  invoke void @_Z21jc_test_set_test_faili(i32 noundef 1)
          to label %337 unwind label %309

337:                                              ; preds = %336
  store i32 1, ptr %14, align 4
  br label %358

338:                                              ; preds = %331
  %339 = landingpad { ptr, i32 }
          cleanup
  %340 = extractvalue { ptr, i32 } %339, 0
  store ptr %340, ptr %9, align 8
  %341 = extractvalue { ptr, i32 } %339, 1
  store i32 %341, ptr %10, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %23) #5
  br label %395

342:                                              ; preds = %334
  br label %343

343:                                              ; preds = %342
  br label %344

344:                                              ; preds = %343
  %345 = load ptr, ptr @_ZZN45Longtail_Longtail_TestLRUBlockStore__TestCase8TestBodyEvE5block_1, align 8, !tbaa !5
  %346 = getelementptr inbounds %struct.Longtail_StoredBlock, ptr %345, i32 0, i32 1
  %347 = load ptr, ptr %346, align 8, !tbaa !19
  %348 = getelementptr inbounds %struct.Longtail_BlockIndex, ptr %347, i32 0, i32 0
  %349 = load ptr, ptr %348, align 8, !tbaa !21
  %350 = load i64, ptr %349, align 8, !tbaa !23
  %351 = getelementptr inbounds [7 x i64], ptr %8, i64 0, i64 2
  store i64 %350, ptr %351, align 16, !tbaa !23
  %352 = load ptr, ptr @_ZZN45Longtail_Longtail_TestLRUBlockStore__TestCase8TestBodyEvE5block_1, align 8, !tbaa !5
  %353 = getelementptr inbounds %struct.Longtail_StoredBlock, ptr %352, i32 0, i32 0
  %354 = load ptr, ptr %353, align 8, !tbaa !24
  %355 = load ptr, ptr @_ZZN45Longtail_Longtail_TestLRUBlockStore__TestCase8TestBodyEvE5block_1, align 8, !tbaa !5
  %356 = invoke noundef i32 %354(ptr noundef %355)
          to label %357 unwind label %309

357:                                              ; preds = %344
  store i32 0, ptr %14, align 4
  br label %358

358:                                              ; preds = %357, %337, %303
  call void @_ZN25TestAsyncPutBlockCompleteD2Ev(ptr noundef nonnull align 8 dereferenceable(28) %20) #5
  call void @llvm.lifetime.end.p0(i64 32, ptr %20) #5
  %359 = load i32, ptr %14, align 4
  switch i32 %359, label %1449 [
    i32 0, label %360
  ]

360:                                              ; preds = %358
  %361 = load atomic i8, ptr @_ZGVZN45Longtail_Longtail_TestLRUBlockStore__TestCase8TestBodyEvE5block_2 acquire, align 8
  %362 = icmp eq i8 %361, 0
  br i1 %362, label %363, label %370, !prof !9

363:                                              ; preds = %360
  %364 = call i32 @__cxa_guard_acquire(ptr @_ZGVZN45Longtail_Longtail_TestLRUBlockStore__TestCase8TestBodyEvE5block_2) #5
  %365 = icmp ne i32 %364, 0
  br i1 %365, label %366, label %370

366:                                              ; preds = %363
  %367 = load ptr, ptr %4, align 8, !tbaa !5
  %368 = invoke noundef ptr @_ZL19GenerateStoredBlockP16Longtail_HashAPIjPKj(ptr noundef %367, i32 noundef 3, ptr noundef @_ZZN45Longtail_Longtail_TestLRUBlockStore__TestCase8TestBodyEvE17BLOCK_CHUNK_SIZES_2)
          to label %369 unwind label %396

369:                                              ; preds = %366
  store ptr %368, ptr @_ZZN45Longtail_Longtail_TestLRUBlockStore__TestCase8TestBodyEvE5block_2, align 8, !tbaa !5
  call void @__cxa_guard_release(ptr @_ZGVZN45Longtail_Longtail_TestLRUBlockStore__TestCase8TestBodyEvE5block_2) #5
  br label %370

370:                                              ; preds = %369, %363, %360
  call void @llvm.lifetime.start.p0(i64 32, ptr %24) #5
  call void @_ZN25TestAsyncPutBlockCompleteC2Ev(ptr noundef nonnull align 8 dereferenceable(28) %24)
  br label %371

371:                                              ; preds = %370
  %372 = invoke noundef ptr @_ZL19jc_test_get_fixturev()
          to label %373 unwind label %400

373:                                              ; preds = %371
  %374 = getelementptr inbounds %struct.jc_test_fixture, ptr %372, i32 0, i32 11
  %375 = load i32, ptr %374, align 8
  %376 = and i32 %375, -16776961
  %377 = or i32 %376, 462080
  store i32 %377, ptr %374, align 8
  %378 = invoke noundef ptr @_ZL19jc_test_get_fixturev()
          to label %379 unwind label %400

379:                                              ; preds = %373
  %380 = getelementptr inbounds %struct.jc_test_fixture, ptr %378, i32 0, i32 4
  store ptr @.str.3, ptr %380, align 8, !tbaa !10
  invoke void @_Z28jc_test_increment_assertionsv()
          to label %381 unwind label %400

381:                                              ; preds = %379
  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
  %382 = load ptr, ptr %7, align 8, !tbaa !5
  %383 = getelementptr inbounds %struct.Longtail_BlockStoreAPI, ptr %382, i32 0, i32 1
  %384 = load ptr, ptr %383, align 8, !tbaa !16
  %385 = load ptr, ptr %7, align 8, !tbaa !5
  %386 = load ptr, ptr @_ZZN45Longtail_Longtail_TestLRUBlockStore__TestCase8TestBodyEvE5block_2, align 8, !tbaa !5
  %387 = getelementptr inbounds %struct.TestAsyncPutBlockComplete, ptr %24, i32 0, i32 0
  %388 = invoke noundef i32 %384(ptr noundef %385, ptr noundef %386, ptr noundef %387)
          to label %389 unwind label %404

389:                                              ; preds = %381
  store i32 %388, ptr %26, align 4, !tbaa !15
  %390 = 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.307, ptr noundef null)
          to label %391 unwind label %404

391:                                              ; preds = %389
  %392 = icmp eq i32 %390, 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 %392, label %393, label %408

393:                                              ; preds = %391
  invoke void @_Z21jc_test_set_test_faili(i32 noundef 1)
          to label %394 unwind label %400

394:                                              ; preds = %393
  store i32 1, ptr %14, align 4
  br label %449

395:                                              ; preds = %338, %313, %309
  call void @_ZN25TestAsyncPutBlockCompleteD2Ev(ptr noundef nonnull align 8 dereferenceable(28) %20) #5
  call void @llvm.lifetime.end.p0(i64 32, ptr %20) #5
  br label %1453

396:                                              ; preds = %366
  %397 = landingpad { ptr, i32 }
          cleanup
  %398 = extractvalue { ptr, i32 } %397, 0
  store ptr %398, ptr %9, align 8
  %399 = extractvalue { ptr, i32 } %397, 1
  store i32 %399, ptr %10, align 4
  call void @__cxa_guard_abort(ptr @_ZGVZN45Longtail_Longtail_TestLRUBlockStore__TestCase8TestBodyEvE5block_2) #5
  br label %1453

400:                                              ; preds = %435, %427, %420, %414, %412, %410, %393, %379, %373, %371
  %401 = landingpad { ptr, i32 }
          cleanup
  %402 = extractvalue { ptr, i32 } %401, 0
  store ptr %402, ptr %9, align 8
  %403 = extractvalue { ptr, i32 } %401, 1
  store i32 %403, ptr %10, align 4
  br label %486

404:                                              ; preds = %389, %381
  %405 = landingpad { ptr, i32 }
          cleanup
  %406 = extractvalue { ptr, i32 } %405, 0
  store ptr %406, ptr %9, align 8
  %407 = extractvalue { ptr, i32 } %405, 1
  store i32 %407, ptr %10, 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 %486

408:                                              ; preds = %391
  br label %409

409:                                              ; preds = %408
  br label %410

410:                                              ; preds = %409
  invoke void @_ZN25TestAsyncPutBlockComplete4WaitEv(ptr noundef nonnull align 8 dereferenceable(28) %24)
          to label %411 unwind label %400

411:                                              ; preds = %410
  br label %412

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

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

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

422:                                              ; preds = %420
  call void @llvm.lifetime.start.p0(i64 4, ptr %27) #5
  store i32 0, ptr %27, align 4, !tbaa !15
  %423 = getelementptr inbounds %struct.TestAsyncPutBlockComplete, ptr %24, i32 0, i32 2
  %424 = 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) %423, ptr noundef @.str.46, ptr noundef @.str.273, ptr noundef null)
          to label %425 unwind label %429

425:                                              ; preds = %422
  %426 = icmp eq i32 %424, 0
  call void @llvm.lifetime.end.p0(i64 4, ptr %27) #5
  br i1 %426, label %427, label %433

427:                                              ; preds = %425
  invoke void @_Z21jc_test_set_test_faili(i32 noundef 1)
          to label %428 unwind label %400

428:                                              ; preds = %427
  store i32 1, ptr %14, align 4
  br label %449

429:                                              ; preds = %422
  %430 = landingpad { ptr, i32 }
          cleanup
  %431 = extractvalue { ptr, i32 } %430, 0
  store ptr %431, ptr %9, align 8
  %432 = extractvalue { ptr, i32 } %430, 1
  store i32 %432, ptr %10, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %27) #5
  br label %486

433:                                              ; preds = %425
  br label %434

434:                                              ; preds = %433
  br label %435

435:                                              ; preds = %434
  %436 = load ptr, ptr @_ZZN45Longtail_Longtail_TestLRUBlockStore__TestCase8TestBodyEvE5block_2, align 8, !tbaa !5
  %437 = getelementptr inbounds %struct.Longtail_StoredBlock, ptr %436, i32 0, i32 1
  %438 = load ptr, ptr %437, align 8, !tbaa !19
  %439 = getelementptr inbounds %struct.Longtail_BlockIndex, ptr %438, i32 0, i32 0
  %440 = load ptr, ptr %439, align 8, !tbaa !21
  %441 = load i64, ptr %440, align 8, !tbaa !23
  %442 = getelementptr inbounds [7 x i64], ptr %8, i64 0, i64 3
  store i64 %441, ptr %442, align 8, !tbaa !23
  %443 = load ptr, ptr @_ZZN45Longtail_Longtail_TestLRUBlockStore__TestCase8TestBodyEvE5block_2, align 8, !tbaa !5
  %444 = getelementptr inbounds %struct.Longtail_StoredBlock, ptr %443, i32 0, i32 0
  %445 = load ptr, ptr %444, align 8, !tbaa !24
  %446 = load ptr, ptr @_ZZN45Longtail_Longtail_TestLRUBlockStore__TestCase8TestBodyEvE5block_2, align 8, !tbaa !5
  %447 = invoke noundef i32 %445(ptr noundef %446)
          to label %448 unwind label %400

448:                                              ; preds = %435
  store i32 0, ptr %14, align 4
  br label %449

449:                                              ; preds = %448, %428, %394
  call void @_ZN25TestAsyncPutBlockCompleteD2Ev(ptr noundef nonnull align 8 dereferenceable(28) %24) #5
  call void @llvm.lifetime.end.p0(i64 32, ptr %24) #5
  %450 = load i32, ptr %14, align 4
  switch i32 %450, label %1449 [
    i32 0, label %451
  ]

451:                                              ; preds = %449
  %452 = load atomic i8, ptr @_ZGVZN45Longtail_Longtail_TestLRUBlockStore__TestCase8TestBodyEvE5block_3 acquire, align 8
  %453 = icmp eq i8 %452, 0
  br i1 %453, label %454, label %461, !prof !9

454:                                              ; preds = %451
  %455 = call i32 @__cxa_guard_acquire(ptr @_ZGVZN45Longtail_Longtail_TestLRUBlockStore__TestCase8TestBodyEvE5block_3) #5
  %456 = icmp ne i32 %455, 0
  br i1 %456, label %457, label %461

457:                                              ; preds = %454
  %458 = load ptr, ptr %4, align 8, !tbaa !5
  %459 = invoke noundef ptr @_ZL19GenerateStoredBlockP16Longtail_HashAPIjPKj(ptr noundef %458, i32 noundef 1, ptr noundef @_ZZN45Longtail_Longtail_TestLRUBlockStore__TestCase8TestBodyEvE17BLOCK_CHUNK_SIZES_3)
          to label %460 unwind label %487

460:                                              ; preds = %457
  store ptr %459, ptr @_ZZN45Longtail_Longtail_TestLRUBlockStore__TestCase8TestBodyEvE5block_3, align 8, !tbaa !5
  call void @__cxa_guard_release(ptr @_ZGVZN45Longtail_Longtail_TestLRUBlockStore__TestCase8TestBodyEvE5block_3) #5
  br label %461

461:                                              ; preds = %460, %454, %451
  call void @llvm.lifetime.start.p0(i64 32, ptr %28) #5
  call void @_ZN25TestAsyncPutBlockCompleteC2Ev(ptr noundef nonnull align 8 dereferenceable(28) %28)
  br label %462

462:                                              ; preds = %461
  %463 = invoke noundef ptr @_ZL19jc_test_get_fixturev()
          to label %464 unwind label %491

464:                                              ; preds = %462
  %465 = getelementptr inbounds %struct.jc_test_fixture, ptr %463, i32 0, i32 11
  %466 = load i32, ptr %465, align 8
  %467 = and i32 %466, -16776961
  %468 = or i32 %467, 465152
  store i32 %468, ptr %465, align 8
  %469 = invoke noundef ptr @_ZL19jc_test_get_fixturev()
          to label %470 unwind label %491

470:                                              ; preds = %464
  %471 = getelementptr inbounds %struct.jc_test_fixture, ptr %469, i32 0, i32 4
  store ptr @.str.3, ptr %471, align 8, !tbaa !10
  invoke void @_Z28jc_test_increment_assertionsv()
          to label %472 unwind label %491

472:                                              ; preds = %470
  call void @llvm.lifetime.start.p0(i64 4, ptr %29) #5
  store i32 0, ptr %29, align 4, !tbaa !15
  call void @llvm.lifetime.start.p0(i64 4, ptr %30) #5
  %473 = load ptr, ptr %7, align 8, !tbaa !5
  %474 = getelementptr inbounds %struct.Longtail_BlockStoreAPI, ptr %473, i32 0, i32 1
  %475 = load ptr, ptr %474, align 8, !tbaa !16
  %476 = load ptr, ptr %7, align 8, !tbaa !5
  %477 = load ptr, ptr @_ZZN45Longtail_Longtail_TestLRUBlockStore__TestCase8TestBodyEvE5block_3, align 8, !tbaa !5
  %478 = getelementptr inbounds %struct.TestAsyncPutBlockComplete, ptr %28, i32 0, i32 0
  %479 = invoke noundef i32 %475(ptr noundef %476, ptr noundef %477, ptr noundef %478)
          to label %480 unwind label %495

480:                                              ; preds = %472
  store i32 %479, ptr %30, align 4, !tbaa !15
  %481 = invoke noundef i32 @_ZN21jc_test_cmp_eq_helperILb1EE7compareIiiEEiRKT_RKT0_PKcS9_PN23jc_test_enable_argumentIXntsr18jc_test_is_pointerIS5_EE5valueEE4typeE(ptr noundef nonnull align 4 dereferenceable(4) %29, ptr noundef nonnull align 4 dereferenceable(4) %30, ptr noundef @.str.46, ptr noundef @.str.307, ptr noundef null)
          to label %482 unwind label %495

482:                                              ; preds = %480
  %483 = icmp eq i32 %481, 0
  call void @llvm.lifetime.end.p0(i64 4, ptr %30) #5
  call void @llvm.lifetime.end.p0(i64 4, ptr %29) #5
  br i1 %483, label %484, label %499

484:                                              ; preds = %482
  invoke void @_Z21jc_test_set_test_faili(i32 noundef 1)
          to label %485 unwind label %491

485:                                              ; preds = %484
  store i32 1, ptr %14, align 4
  br label %540

486:                                              ; preds = %429, %404, %400
  call void @_ZN25TestAsyncPutBlockCompleteD2Ev(ptr noundef nonnull align 8 dereferenceable(28) %24) #5
  call void @llvm.lifetime.end.p0(i64 32, ptr %24) #5
  br label %1453

487:                                              ; preds = %457
  %488 = landingpad { ptr, i32 }
          cleanup
  %489 = extractvalue { ptr, i32 } %488, 0
  store ptr %489, ptr %9, align 8
  %490 = extractvalue { ptr, i32 } %488, 1
  store i32 %490, ptr %10, align 4
  call void @__cxa_guard_abort(ptr @_ZGVZN45Longtail_Longtail_TestLRUBlockStore__TestCase8TestBodyEvE5block_3) #5
  br label %1453

491:                                              ; preds = %526, %518, %511, %505, %503, %501, %484, %470, %464, %462
  %492 = landingpad { ptr, i32 }
          cleanup
  %493 = extractvalue { ptr, i32 } %492, 0
  store ptr %493, ptr %9, align 8
  %494 = extractvalue { ptr, i32 } %492, 1
  store i32 %494, ptr %10, align 4
  br label %577

495:                                              ; preds = %480, %472
  %496 = landingpad { ptr, i32 }
          cleanup
  %497 = extractvalue { ptr, i32 } %496, 0
  store ptr %497, ptr %9, align 8
  %498 = extractvalue { ptr, i32 } %496, 1
  store i32 %498, ptr %10, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %30) #5
  call void @llvm.lifetime.end.p0(i64 4, ptr %29) #5
  br label %577

499:                                              ; preds = %482
  br label %500

500:                                              ; preds = %499
  br label %501

501:                                              ; preds = %500
  invoke void @_ZN25TestAsyncPutBlockComplete4WaitEv(ptr noundef nonnull align 8 dereferenceable(28) %28)
          to label %502 unwind label %491

502:                                              ; preds = %501
  br label %503

503:                                              ; preds = %502
  %504 = invoke noundef ptr @_ZL19jc_test_get_fixturev()
          to label %505 unwind label %491

505:                                              ; preds = %503
  %506 = getelementptr inbounds %struct.jc_test_fixture, ptr %504, i32 0, i32 11
  %507 = load i32, ptr %506, align 8
  %508 = and i32 %507, -16776961
  %509 = or i32 %508, 465664
  store i32 %509, ptr %506, align 8
  %510 = invoke noundef ptr @_ZL19jc_test_get_fixturev()
          to label %511 unwind label %491

511:                                              ; preds = %505
  %512 = getelementptr inbounds %struct.jc_test_fixture, ptr %510, i32 0, i32 4
  store ptr @.str.3, ptr %512, align 8, !tbaa !10
  invoke void @_Z28jc_test_increment_assertionsv()
          to label %513 unwind label %491

513:                                              ; preds = %511
  call void @llvm.lifetime.start.p0(i64 4, ptr %31) #5
  store i32 0, ptr %31, align 4, !tbaa !15
  %514 = getelementptr inbounds %struct.TestAsyncPutBlockComplete, ptr %28, i32 0, i32 2
  %515 = invoke noundef i32 @_ZN21jc_test_cmp_eq_helperILb1EE7compareIiiEEiRKT_RKT0_PKcS9_PN23jc_test_enable_argumentIXntsr18jc_test_is_pointerIS5_EE5valueEE4typeE(ptr noundef nonnull align 4 dereferenceable(4) %31, ptr noundef nonnull align 4 dereferenceable(4) %514, ptr noundef @.str.46, ptr noundef @.str.273, ptr noundef null)
          to label %516 unwind label %520

516:                                              ; preds = %513
  %517 = icmp eq i32 %515, 0
  call void @llvm.lifetime.end.p0(i64 4, ptr %31) #5
  br i1 %517, label %518, label %524

518:                                              ; preds = %516
  invoke void @_Z21jc_test_set_test_faili(i32 noundef 1)
          to label %519 unwind label %491

519:                                              ; preds = %518
  store i32 1, ptr %14, align 4
  br label %540

520:                                              ; preds = %513
  %521 = landingpad { ptr, i32 }
          cleanup
  %522 = extractvalue { ptr, i32 } %521, 0
  store ptr %522, ptr %9, align 8
  %523 = extractvalue { ptr, i32 } %521, 1
  store i32 %523, ptr %10, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %31) #5
  br label %577

524:                                              ; preds = %516
  br label %525

525:                                              ; preds = %524
  br label %526

526:                                              ; preds = %525
  %527 = load ptr, ptr @_ZZN45Longtail_Longtail_TestLRUBlockStore__TestCase8TestBodyEvE5block_3, align 8, !tbaa !5
  %528 = getelementptr inbounds %struct.Longtail_StoredBlock, ptr %527, i32 0, i32 1
  %529 = load ptr, ptr %528, align 8, !tbaa !19
  %530 = getelementptr inbounds %struct.Longtail_BlockIndex, ptr %529, i32 0, i32 0
  %531 = load ptr, ptr %530, align 8, !tbaa !21
  %532 = load i64, ptr %531, align 8, !tbaa !23
  %533 = getelementptr inbounds [7 x i64], ptr %8, i64 0, i64 4
  store i64 %532, ptr %533, align 16, !tbaa !23
  %534 = load ptr, ptr @_ZZN45Longtail_Longtail_TestLRUBlockStore__TestCase8TestBodyEvE5block_3, align 8, !tbaa !5
  %535 = getelementptr inbounds %struct.Longtail_StoredBlock, ptr %534, i32 0, i32 0
  %536 = load ptr, ptr %535, align 8, !tbaa !24
  %537 = load ptr, ptr @_ZZN45Longtail_Longtail_TestLRUBlockStore__TestCase8TestBodyEvE5block_3, align 8, !tbaa !5
  %538 = invoke noundef i32 %536(ptr noundef %537)
          to label %539 unwind label %491

539:                                              ; preds = %526
  store i32 0, ptr %14, align 4
  br label %540

540:                                              ; preds = %539, %519, %485
  call void @_ZN25TestAsyncPutBlockCompleteD2Ev(ptr noundef nonnull align 8 dereferenceable(28) %28) #5
  call void @llvm.lifetime.end.p0(i64 32, ptr %28) #5
  %541 = load i32, ptr %14, align 4
  switch i32 %541, label %1449 [
    i32 0, label %542
  ]

542:                                              ; preds = %540
  %543 = load atomic i8, ptr @_ZGVZN45Longtail_Longtail_TestLRUBlockStore__TestCase8TestBodyEvE5block_4 acquire, align 8
  %544 = icmp eq i8 %543, 0
  br i1 %544, label %545, label %552, !prof !9

545:                                              ; preds = %542
  %546 = call i32 @__cxa_guard_acquire(ptr @_ZGVZN45Longtail_Longtail_TestLRUBlockStore__TestCase8TestBodyEvE5block_4) #5
  %547 = icmp ne i32 %546, 0
  br i1 %547, label %548, label %552

548:                                              ; preds = %545
  %549 = load ptr, ptr %4, align 8, !tbaa !5
  %550 = invoke noundef ptr @_ZL19GenerateStoredBlockP16Longtail_HashAPIjPKj(ptr noundef %549, i32 noundef 2, ptr noundef @_ZZN45Longtail_Longtail_TestLRUBlockStore__TestCase8TestBodyEvE17BLOCK_CHUNK_SIZES_4)
          to label %551 unwind label %578

551:                                              ; preds = %548
  store ptr %550, ptr @_ZZN45Longtail_Longtail_TestLRUBlockStore__TestCase8TestBodyEvE5block_4, align 8, !tbaa !5
  call void @__cxa_guard_release(ptr @_ZGVZN45Longtail_Longtail_TestLRUBlockStore__TestCase8TestBodyEvE5block_4) #5
  br label %552

552:                                              ; preds = %551, %545, %542
  call void @llvm.lifetime.start.p0(i64 32, ptr %32) #5
  call void @_ZN25TestAsyncPutBlockCompleteC2Ev(ptr noundef nonnull align 8 dereferenceable(28) %32)
  br label %553

553:                                              ; preds = %552
  %554 = invoke noundef ptr @_ZL19jc_test_get_fixturev()
          to label %555 unwind label %582

555:                                              ; preds = %553
  %556 = getelementptr inbounds %struct.jc_test_fixture, ptr %554, i32 0, i32 11
  %557 = load i32, ptr %556, align 8
  %558 = and i32 %557, -16776961
  %559 = or i32 %558, 468224
  store i32 %559, ptr %556, align 8
  %560 = invoke noundef ptr @_ZL19jc_test_get_fixturev()
          to label %561 unwind label %582

561:                                              ; preds = %555
  %562 = getelementptr inbounds %struct.jc_test_fixture, ptr %560, i32 0, i32 4
  store ptr @.str.3, ptr %562, align 8, !tbaa !10
  invoke void @_Z28jc_test_increment_assertionsv()
          to label %563 unwind label %582

563:                                              ; preds = %561
  call void @llvm.lifetime.start.p0(i64 4, ptr %33) #5
  store i32 0, ptr %33, align 4, !tbaa !15
  call void @llvm.lifetime.start.p0(i64 4, ptr %34) #5
  %564 = load ptr, ptr %7, align 8, !tbaa !5
  %565 = getelementptr inbounds %struct.Longtail_BlockStoreAPI, ptr %564, i32 0, i32 1
  %566 = load ptr, ptr %565, align 8, !tbaa !16
  %567 = load ptr, ptr %7, align 8, !tbaa !5
  %568 = load ptr, ptr @_ZZN45Longtail_Longtail_TestLRUBlockStore__TestCase8TestBodyEvE5block_4, align 8, !tbaa !5
  %569 = getelementptr inbounds %struct.TestAsyncPutBlockComplete, ptr %32, i32 0, i32 0
  %570 = invoke noundef i32 %566(ptr noundef %567, ptr noundef %568, ptr noundef %569)
          to label %571 unwind label %586

571:                                              ; preds = %563
  store i32 %570, ptr %34, align 4, !tbaa !15
  %572 = invoke noundef i32 @_ZN21jc_test_cmp_eq_helperILb1EE7compareIiiEEiRKT_RKT0_PKcS9_PN23jc_test_enable_argumentIXntsr18jc_test_is_pointerIS5_EE5valueEE4typeE(ptr noundef nonnull align 4 dereferenceable(4) %33, ptr noundef nonnull align 4 dereferenceable(4) %34, ptr noundef @.str.46, ptr noundef @.str.307, ptr noundef null)
          to label %573 unwind label %586

573:                                              ; preds = %571
  %574 = icmp eq i32 %572, 0
  call void @llvm.lifetime.end.p0(i64 4, ptr %34) #5
  call void @llvm.lifetime.end.p0(i64 4, ptr %33) #5
  br i1 %574, label %575, label %590

575:                                              ; preds = %573
  invoke void @_Z21jc_test_set_test_faili(i32 noundef 1)
          to label %576 unwind label %582

576:                                              ; preds = %575
  store i32 1, ptr %14, align 4
  br label %631

577:                                              ; preds = %520, %495, %491
  call void @_ZN25TestAsyncPutBlockCompleteD2Ev(ptr noundef nonnull align 8 dereferenceable(28) %28) #5
  call void @llvm.lifetime.end.p0(i64 32, ptr %28) #5
  br label %1453

578:                                              ; preds = %548
  %579 = landingpad { ptr, i32 }
          cleanup
  %580 = extractvalue { ptr, i32 } %579, 0
  store ptr %580, ptr %9, align 8
  %581 = extractvalue { ptr, i32 } %579, 1
  store i32 %581, ptr %10, align 4
  call void @__cxa_guard_abort(ptr @_ZGVZN45Longtail_Longtail_TestLRUBlockStore__TestCase8TestBodyEvE5block_4) #5
  br label %1453

582:                                              ; preds = %617, %609, %602, %596, %594, %592, %575, %561, %555, %553
  %583 = landingpad { ptr, i32 }
          cleanup
  %584 = extractvalue { ptr, i32 } %583, 0
  store ptr %584, ptr %9, align 8
  %585 = extractvalue { ptr, i32 } %583, 1
  store i32 %585, ptr %10, align 4
  br label %668

586:                                              ; preds = %571, %563
  %587 = landingpad { ptr, i32 }
          cleanup
  %588 = extractvalue { ptr, i32 } %587, 0
  store ptr %588, ptr %9, align 8
  %589 = extractvalue { ptr, i32 } %587, 1
  store i32 %589, ptr %10, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %34) #5
  call void @llvm.lifetime.end.p0(i64 4, ptr %33) #5
  br label %668

590:                                              ; preds = %573
  br label %591

591:                                              ; preds = %590
  br label %592

592:                                              ; preds = %591
  invoke void @_ZN25TestAsyncPutBlockComplete4WaitEv(ptr noundef nonnull align 8 dereferenceable(28) %32)
          to label %593 unwind label %582

593:                                              ; preds = %592
  br label %594

594:                                              ; preds = %593
  %595 = invoke noundef ptr @_ZL19jc_test_get_fixturev()
          to label %596 unwind label %582

596:                                              ; preds = %594
  %597 = getelementptr inbounds %struct.jc_test_fixture, ptr %595, i32 0, i32 11
  %598 = load i32, ptr %597, align 8
  %599 = and i32 %598, -16776961
  %600 = or i32 %599, 468736
  store i32 %600, ptr %597, align 8
  %601 = invoke noundef ptr @_ZL19jc_test_get_fixturev()
          to label %602 unwind label %582

602:                                              ; preds = %596
  %603 = getelementptr inbounds %struct.jc_test_fixture, ptr %601, i32 0, i32 4
  store ptr @.str.3, ptr %603, align 8, !tbaa !10
  invoke void @_Z28jc_test_increment_assertionsv()
          to label %604 unwind label %582

604:                                              ; preds = %602
  call void @llvm.lifetime.start.p0(i64 4, ptr %35) #5
  store i32 0, ptr %35, align 4, !tbaa !15
  %605 = getelementptr inbounds %struct.TestAsyncPutBlockComplete, ptr %32, i32 0, i32 2
  %606 = invoke noundef i32 @_ZN21jc_test_cmp_eq_helperILb1EE7compareIiiEEiRKT_RKT0_PKcS9_PN23jc_test_enable_argumentIXntsr18jc_test_is_pointerIS5_EE5valueEE4typeE(ptr noundef nonnull align 4 dereferenceable(4) %35, ptr noundef nonnull align 4 dereferenceable(4) %605, ptr noundef @.str.46, ptr noundef @.str.273, ptr noundef null)
          to label %607 unwind label %611

607:                                              ; preds = %604
  %608 = icmp eq i32 %606, 0
  call void @llvm.lifetime.end.p0(i64 4, ptr %35) #5
  br i1 %608, label %609, label %615

609:                                              ; preds = %607
  invoke void @_Z21jc_test_set_test_faili(i32 noundef 1)
          to label %610 unwind label %582

610:                                              ; preds = %609
  store i32 1, ptr %14, align 4
  br label %631

611:                                              ; preds = %604
  %612 = landingpad { ptr, i32 }
          cleanup
  %613 = extractvalue { ptr, i32 } %612, 0
  store ptr %613, ptr %9, align 8
  %614 = extractvalue { ptr, i32 } %612, 1
  store i32 %614, ptr %10, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %35) #5
  br label %668

615:                                              ; preds = %607
  br label %616

616:                                              ; preds = %615
  br label %617

617:                                              ; preds = %616
  %618 = load ptr, ptr @_ZZN45Longtail_Longtail_TestLRUBlockStore__TestCase8TestBodyEvE5block_4, align 8, !tbaa !5
  %619 = getelementptr inbounds %struct.Longtail_StoredBlock, ptr %618, i32 0, i32 1
  %620 = load ptr, ptr %619, align 8, !tbaa !19
  %621 = getelementptr inbounds %struct.Longtail_BlockIndex, ptr %620, i32 0, i32 0
  %622 = load ptr, ptr %621, align 8, !tbaa !21
  %623 = load i64, ptr %622, align 8, !tbaa !23
  %624 = getelementptr inbounds [7 x i64], ptr %8, i64 0, i64 5
  store i64 %623, ptr %624, align 8, !tbaa !23
  %625 = load ptr, ptr @_ZZN45Longtail_Longtail_TestLRUBlockStore__TestCase8TestBodyEvE5block_4, align 8, !tbaa !5
  %626 = getelementptr inbounds %struct.Longtail_StoredBlock, ptr %625, i32 0, i32 0
  %627 = load ptr, ptr %626, align 8, !tbaa !24
  %628 = load ptr, ptr @_ZZN45Longtail_Longtail_TestLRUBlockStore__TestCase8TestBodyEvE5block_4, align 8, !tbaa !5
  %629 = invoke noundef i32 %627(ptr noundef %628)
          to label %630 unwind label %582

630:                                              ; preds = %617
  store i32 0, ptr %14, align 4
  br label %631

631:                                              ; preds = %630, %610, %576
  call void @_ZN25TestAsyncPutBlockCompleteD2Ev(ptr noundef nonnull align 8 dereferenceable(28) %32) #5
  call void @llvm.lifetime.end.p0(i64 32, ptr %32) #5
  %632 = load i32, ptr %14, align 4
  switch i32 %632, label %1449 [
    i32 0, label %633
  ]

633:                                              ; preds = %631
  %634 = load atomic i8, ptr @_ZGVZN45Longtail_Longtail_TestLRUBlockStore__TestCase8TestBodyEvE5block_5 acquire, align 8
  %635 = icmp eq i8 %634, 0
  br i1 %635, label %636, label %643, !prof !9

636:                                              ; preds = %633
  %637 = call i32 @__cxa_guard_acquire(ptr @_ZGVZN45Longtail_Longtail_TestLRUBlockStore__TestCase8TestBodyEvE5block_5) #5
  %638 = icmp ne i32 %637, 0
  br i1 %638, label %639, label %643

639:                                              ; preds = %636
  %640 = load ptr, ptr %4, align 8, !tbaa !5
  %641 = invoke noundef ptr @_ZL19GenerateStoredBlockP16Longtail_HashAPIjPKj(ptr noundef %640, i32 noundef 4, ptr noundef @_ZZN45Longtail_Longtail_TestLRUBlockStore__TestCase8TestBodyEvE17BLOCK_CHUNK_SIZES_5)
          to label %642 unwind label %669

642:                                              ; preds = %639
  store ptr %641, ptr @_ZZN45Longtail_Longtail_TestLRUBlockStore__TestCase8TestBodyEvE5block_5, align 8, !tbaa !5
  call void @__cxa_guard_release(ptr @_ZGVZN45Longtail_Longtail_TestLRUBlockStore__TestCase8TestBodyEvE5block_5) #5
  br label %643

643:                                              ; preds = %642, %636, %633
  call void @llvm.lifetime.start.p0(i64 32, ptr %36) #5
  call void @_ZN25TestAsyncPutBlockCompleteC2Ev(ptr noundef nonnull align 8 dereferenceable(28) %36)
  br label %644

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

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

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

654:                                              ; preds = %652
  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
  %655 = load ptr, ptr %7, align 8, !tbaa !5
  %656 = getelementptr inbounds %struct.Longtail_BlockStoreAPI, ptr %655, i32 0, i32 1
  %657 = load ptr, ptr %656, align 8, !tbaa !16
  %658 = load ptr, ptr %7, align 8, !tbaa !5
  %659 = load ptr, ptr @_ZZN45Longtail_Longtail_TestLRUBlockStore__TestCase8TestBodyEvE5block_5, align 8, !tbaa !5
  %660 = getelementptr inbounds %struct.TestAsyncPutBlockComplete, ptr %36, i32 0, i32 0
  %661 = invoke noundef i32 %657(ptr noundef %658, ptr noundef %659, ptr noundef %660)
          to label %662 unwind label %677

662:                                              ; preds = %654
  store i32 %661, ptr %38, align 4, !tbaa !15
  %663 = 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.307, ptr noundef null)
          to label %664 unwind label %677

664:                                              ; preds = %662
  %665 = icmp eq i32 %663, 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 %665, label %666, label %681

666:                                              ; preds = %664
  invoke void @_Z21jc_test_set_test_faili(i32 noundef 1)
          to label %667 unwind label %673

667:                                              ; preds = %666
  store i32 1, ptr %14, align 4
  br label %722

668:                                              ; preds = %611, %586, %582
  call void @_ZN25TestAsyncPutBlockCompleteD2Ev(ptr noundef nonnull align 8 dereferenceable(28) %32) #5
  call void @llvm.lifetime.end.p0(i64 32, ptr %32) #5
  br label %1453

669:                                              ; preds = %639
  %670 = landingpad { ptr, i32 }
          cleanup
  %671 = extractvalue { ptr, i32 } %670, 0
  store ptr %671, ptr %9, align 8
  %672 = extractvalue { ptr, i32 } %670, 1
  store i32 %672, ptr %10, align 4
  call void @__cxa_guard_abort(ptr @_ZGVZN45Longtail_Longtail_TestLRUBlockStore__TestCase8TestBodyEvE5block_5) #5
  br label %1453

673:                                              ; preds = %708, %700, %693, %687, %685, %683, %666, %652, %646, %644
  %674 = landingpad { ptr, i32 }
          cleanup
  %675 = extractvalue { ptr, i32 } %674, 0
  store ptr %675, ptr %9, align 8
  %676 = extractvalue { ptr, i32 } %674, 1
  store i32 %676, ptr %10, align 4
  br label %729

677:                                              ; preds = %662, %654
  %678 = landingpad { ptr, i32 }
          cleanup
  %679 = extractvalue { ptr, i32 } %678, 0
  store ptr %679, ptr %9, align 8
  %680 = extractvalue { ptr, i32 } %678, 1
  store i32 %680, ptr %10, 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 %729

681:                                              ; preds = %664
  br label %682

682:                                              ; preds = %681
  br label %683

683:                                              ; preds = %682
  invoke void @_ZN25TestAsyncPutBlockComplete4WaitEv(ptr noundef nonnull align 8 dereferenceable(28) %36)
          to label %684 unwind label %673

684:                                              ; preds = %683
  br label %685

685:                                              ; preds = %684
  %686 = invoke noundef ptr @_ZL19jc_test_get_fixturev()
          to label %687 unwind label %673

687:                                              ; preds = %685
  %688 = getelementptr inbounds %struct.jc_test_fixture, ptr %686, i32 0, i32 11
  %689 = load i32, ptr %688, align 8
  %690 = and i32 %689, -16776961
  %691 = or i32 %690, 471808
  store i32 %691, ptr %688, align 8
  %692 = invoke noundef ptr @_ZL19jc_test_get_fixturev()
          to label %693 unwind label %673

693:                                              ; preds = %687
  %694 = getelementptr inbounds %struct.jc_test_fixture, ptr %692, i32 0, i32 4
  store ptr @.str.3, ptr %694, align 8, !tbaa !10
  invoke void @_Z28jc_test_increment_assertionsv()
          to label %695 unwind label %673

695:                                              ; preds = %693
  call void @llvm.lifetime.start.p0(i64 4, ptr %39) #5
  store i32 0, ptr %39, align 4, !tbaa !15
  %696 = getelementptr inbounds %struct.TestAsyncPutBlockComplete, ptr %36, i32 0, i32 2
  %697 = 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) %696, ptr noundef @.str.46, ptr noundef @.str.273, ptr noundef null)
          to label %698 unwind label %702

698:                                              ; preds = %695
  %699 = icmp eq i32 %697, 0
  call void @llvm.lifetime.end.p0(i64 4, ptr %39) #5
  br i1 %699, label %700, label %706

700:                                              ; preds = %698
  invoke void @_Z21jc_test_set_test_faili(i32 noundef 1)
          to label %701 unwind label %673

701:                                              ; preds = %700
  store i32 1, ptr %14, align 4
  br label %722

702:                                              ; preds = %695
  %703 = landingpad { ptr, i32 }
          cleanup
  %704 = extractvalue { ptr, i32 } %703, 0
  store ptr %704, ptr %9, align 8
  %705 = extractvalue { ptr, i32 } %703, 1
  store i32 %705, ptr %10, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %39) #5
  br label %729

706:                                              ; preds = %698
  br label %707

707:                                              ; preds = %706
  br label %708

708:                                              ; preds = %707
  %709 = load ptr, ptr @_ZZN45Longtail_Longtail_TestLRUBlockStore__TestCase8TestBodyEvE5block_5, align 8, !tbaa !5
  %710 = getelementptr inbounds %struct.Longtail_StoredBlock, ptr %709, i32 0, i32 1
  %711 = load ptr, ptr %710, align 8, !tbaa !19
  %712 = getelementptr inbounds %struct.Longtail_BlockIndex, ptr %711, i32 0, i32 0
  %713 = load ptr, ptr %712, align 8, !tbaa !21
  %714 = load i64, ptr %713, align 8, !tbaa !23
  %715 = getelementptr inbounds [7 x i64], ptr %8, i64 0, i64 6
  store i64 %714, ptr %715, align 16, !tbaa !23
  %716 = load ptr, ptr @_ZZN45Longtail_Longtail_TestLRUBlockStore__TestCase8TestBodyEvE5block_5, align 8, !tbaa !5
  %717 = getelementptr inbounds %struct.Longtail_StoredBlock, ptr %716, i32 0, i32 0
  %718 = load ptr, ptr %717, align 8, !tbaa !24
  %719 = load ptr, ptr @_ZZN45Longtail_Longtail_TestLRUBlockStore__TestCase8TestBodyEvE5block_5, align 8, !tbaa !5
  %720 = invoke noundef i32 %718(ptr noundef %719)
          to label %721 unwind label %673

721:                                              ; preds = %708
  store i32 0, ptr %14, align 4
  br label %722

722:                                              ; preds = %721, %701, %667
  call void @_ZN25TestAsyncPutBlockCompleteD2Ev(ptr noundef nonnull align 8 dereferenceable(28) %36) #5
  call void @llvm.lifetime.end.p0(i64 32, ptr %36) #5
  %723 = load i32, ptr %14, align 4
  switch i32 %723, label %1449 [
    i32 0, label %724
  ]

724:                                              ; preds = %722
  call void @llvm.lifetime.start.p0(i64 4, ptr %40) #5
  store i32 0, ptr %40, align 4, !tbaa !15
  br label %725

725:                                              ; preds = %816, %724
  %726 = load i32, ptr %40, align 4, !tbaa !15
  %727 = icmp ult i32 %726, 7
  br i1 %727, label %730, label %728

728:                                              ; preds = %725
  store i32 30, ptr %14, align 4
  br label %821

729:                                              ; preds = %702, %677, %673
  call void @_ZN25TestAsyncPutBlockCompleteD2Ev(ptr noundef nonnull align 8 dereferenceable(28) %36) #5
  call void @llvm.lifetime.end.p0(i64 32, ptr %36) #5
  br label %1453

730:                                              ; preds = %725
  call void @llvm.lifetime.start.p0(i64 40, ptr %41) #5
  call void @_ZN25TestAsyncGetBlockCompleteC2Ev(ptr noundef nonnull align 8 dereferenceable(40) %41)
  br label %731

731:                                              ; preds = %730
  %732 = invoke noundef ptr @_ZL19jc_test_get_fixturev()
          to label %733 unwind label %758

733:                                              ; preds = %731
  %734 = getelementptr inbounds %struct.jc_test_fixture, ptr %732, i32 0, i32 11
  %735 = load i32, ptr %734, align 8
  %736 = and i32 %735, -16776961
  %737 = or i32 %736, 473856
  store i32 %737, ptr %734, align 8
  %738 = invoke noundef ptr @_ZL19jc_test_get_fixturev()
          to label %739 unwind label %758

739:                                              ; preds = %733
  %740 = getelementptr inbounds %struct.jc_test_fixture, ptr %738, i32 0, i32 4
  store ptr @.str.3, ptr %740, align 8, !tbaa !10
  invoke void @_Z28jc_test_increment_assertionsv()
          to label %741 unwind label %758

741:                                              ; preds = %739
  call void @llvm.lifetime.start.p0(i64 4, ptr %42) #5
  store i32 0, ptr %42, align 4, !tbaa !15
  call void @llvm.lifetime.start.p0(i64 4, ptr %43) #5
  %742 = load ptr, ptr %7, align 8, !tbaa !5
  %743 = getelementptr inbounds %struct.Longtail_BlockStoreAPI, ptr %742, i32 0, i32 3
  %744 = load ptr, ptr %743, align 8, !tbaa !25
  %745 = load ptr, ptr %7, align 8, !tbaa !5
  %746 = load i32, ptr %40, align 4, !tbaa !15
  %747 = zext i32 %746 to i64
  %748 = getelementptr inbounds [7 x i64], ptr %8, i64 0, i64 %747
  %749 = load i64, ptr %748, align 8, !tbaa !23
  %750 = getelementptr inbounds %struct.TestAsyncGetBlockComplete, ptr %41, i32 0, i32 0
  %751 = invoke noundef i32 %744(ptr noundef %745, i64 noundef %749, ptr noundef %750)
          to label %752 unwind label %762

752:                                              ; preds = %741
  store i32 %751, ptr %43, align 4, !tbaa !15
  %753 = 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) %42, ptr noundef nonnull align 4 dereferenceable(4) %43, ptr noundef @.str.46, ptr noundef @.str.308, ptr noundef null)
          to label %754 unwind label %762

754:                                              ; preds = %752
  %755 = icmp eq i32 %753, 0
  call void @llvm.lifetime.end.p0(i64 4, ptr %43) #5
  call void @llvm.lifetime.end.p0(i64 4, ptr %42) #5
  br i1 %755, label %756, label %766

756:                                              ; preds = %754
  invoke void @_Z21jc_test_set_test_faili(i32 noundef 1)
          to label %757 unwind label %758

757:                                              ; preds = %756
  store i32 1, ptr %14, align 4
  br label %813

758:                                              ; preds = %768, %756, %739, %733, %731
  %759 = landingpad { ptr, i32 }
          cleanup
  %760 = extractvalue { ptr, i32 } %759, 0
  store ptr %760, ptr %9, align 8
  %761 = extractvalue { ptr, i32 } %759, 1
  store i32 %761, ptr %10, align 4
  br label %820

762:                                              ; preds = %752, %741
  %763 = landingpad { ptr, i32 }
          cleanup
  %764 = extractvalue { ptr, i32 } %763, 0
  store ptr %764, ptr %9, align 8
  %765 = extractvalue { ptr, i32 } %763, 1
  store i32 %765, ptr %10, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %43) #5
  call void @llvm.lifetime.end.p0(i64 4, ptr %42) #5
  br label %820

766:                                              ; preds = %754
  br label %767

767:                                              ; preds = %766
  br label %768

768:                                              ; preds = %767
  invoke void @_ZN25TestAsyncGetBlockComplete4WaitEv(ptr noundef nonnull align 8 dereferenceable(40) %41)
          to label %769 unwind label %758

769:                                              ; preds = %768
  call void @llvm.lifetime.start.p0(i64 8, ptr %44) #5
  %770 = getelementptr inbounds %struct.TestAsyncGetBlockComplete, ptr %41, i32 0, i32 3
  %771 = load ptr, ptr %770, align 8, !tbaa !26
  store ptr %771, ptr %44, align 8, !tbaa !5
  br label %772

772:                                              ; preds = %769
  %773 = invoke noundef ptr @_ZL19jc_test_get_fixturev()
          to label %774 unwind label %789

774:                                              ; preds = %772
  %775 = getelementptr inbounds %struct.jc_test_fixture, ptr %773, i32 0, i32 11
  %776 = load i32, ptr %775, align 8
  %777 = and i32 %776, -16776961
  %778 = or i32 %777, 474624
  store i32 %778, ptr %775, align 8
  %779 = invoke noundef ptr @_ZL19jc_test_get_fixturev()
          to label %780 unwind label %789

780:                                              ; preds = %774
  %781 = getelementptr inbounds %struct.jc_test_fixture, ptr %779, i32 0, i32 4
  store ptr @.str.3, ptr %781, align 8, !tbaa !10
  invoke void @_Z28jc_test_increment_assertionsv()
          to label %782 unwind label %789

782:                                              ; preds = %780
  call void @llvm.lifetime.start.p0(i64 4, ptr %45) #5
  store i32 0, ptr %45, align 4, !tbaa !15
  %783 = getelementptr inbounds %struct.TestAsyncGetBlockComplete, ptr %41, i32 0, i32 2
  %784 = invoke noundef i32 @_ZN21jc_test_cmp_eq_helperILb1EE7compareIiiEEiRKT_RKT0_PKcS9_PN23jc_test_enable_argumentIXntsr18jc_test_is_pointerIS5_EE5valueEE4typeE(ptr noundef nonnull align 4 dereferenceable(4) %45, ptr noundef nonnull align 4 dereferenceable(4) %783, ptr noundef @.str.46, ptr noundef @.str.275, ptr noundef null)
          to label %785 unwind label %793

785:                                              ; preds = %782
  %786 = icmp eq i32 %784, 0
  call void @llvm.lifetime.end.p0(i64 4, ptr %45) #5
  br i1 %786, label %787, label %797

787:                                              ; preds = %785
  invoke void @_Z21jc_test_set_test_faili(i32 noundef 1)
          to label %788 unwind label %789

788:                                              ; preds = %787
  store i32 1, ptr %14, align 4
  br label %812

789:                                              ; preds = %804, %787, %780, %774, %772
  %790 = landingpad { ptr, i32 }
          cleanup
  %791 = extractvalue { ptr, i32 } %790, 0
  store ptr %791, ptr %9, align 8
  %792 = extractvalue { ptr, i32 } %790, 1
  store i32 %792, ptr %10, align 4
  br label %819

793:                                              ; preds = %782
  %794 = landingpad { ptr, i32 }
          cleanup
  %795 = extractvalue { ptr, i32 } %794, 0
  store ptr %795, ptr %9, align 8
  %796 = extractvalue { ptr, i32 } %794, 1
  store i32 %796, ptr %10, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %45) #5
  br label %819

797:                                              ; preds = %785
  br label %798

798:                                              ; preds = %797
  br label %799

799:                                              ; preds = %798
  %800 = load ptr, ptr %44, align 8, !tbaa !5
  %801 = getelementptr inbounds %struct.Longtail_StoredBlock, ptr %800, i32 0, i32 0
  %802 = load ptr, ptr %801, align 8, !tbaa !24
  %803 = icmp ne ptr %802, null
  br i1 %803, label %804, label %811

804:                                              ; preds = %799
  %805 = load ptr, ptr %44, align 8, !tbaa !5
  %806 = getelementptr inbounds %struct.Longtail_StoredBlock, ptr %805, i32 0, i32 0
  %807 = load ptr, ptr %806, align 8, !tbaa !24
  %808 = load ptr, ptr %44, align 8, !tbaa !5
  %809 = invoke noundef i32 %807(ptr noundef %808)
          to label %810 unwind label %789

810:                                              ; preds = %804
  br label %811

811:                                              ; preds = %810, %799
  store i32 0, ptr %14, align 4
  br label %812

812:                                              ; preds = %811, %788
  call void @llvm.lifetime.end.p0(i64 8, ptr %44) #5
  br label %813

813:                                              ; preds = %812, %757
  call void @_ZN25TestAsyncGetBlockCompleteD2Ev(ptr noundef nonnull align 8 dereferenceable(40) %41) #5
  call void @llvm.lifetime.end.p0(i64 40, ptr %41) #5
  %814 = load i32, ptr %14, align 4
  switch i32 %814, label %821 [
    i32 0, label %815
  ]

815:                                              ; preds = %813
  br label %816

816:                                              ; preds = %815
  %817 = load i32, ptr %40, align 4, !tbaa !15
  %818 = add i32 %817, 1
  store i32 %818, ptr %40, align 4, !tbaa !15
  br label %725, !llvm.loop !29

819:                                              ; preds = %793, %789
  call void @llvm.lifetime.end.p0(i64 8, ptr %44) #5
  br label %820

820:                                              ; preds = %819, %762, %758
  call void @_ZN25TestAsyncGetBlockCompleteD2Ev(ptr noundef nonnull align 8 dereferenceable(40) %41) #5
  call void @llvm.lifetime.end.p0(i64 40, ptr %41) #5
  call void @llvm.lifetime.end.p0(i64 4, ptr %40) #5
  br label %1453

821:                                              ; preds = %813, %728
  call void @llvm.lifetime.end.p0(i64 4, ptr %40) #5
  %822 = load i32, ptr %14, align 4
  switch i32 %822, label %1449 [
    i32 30, label %823
  ]

823:                                              ; preds = %821
  call void @llvm.lifetime.start.p0(i64 176, ptr %46) #5
  %824 = load ptr, ptr %7, align 8, !tbaa !5
  %825 = getelementptr inbounds %struct.Longtail_BlockStoreAPI, ptr %824, i32 0, i32 6
  %826 = load ptr, ptr %825, align 8, !tbaa !31
  %827 = load ptr, ptr %7, align 8, !tbaa !5
  %828 = call noundef i32 %826(ptr noundef %827, ptr noundef %46)
  call void @llvm.lifetime.start.p0(i64 176, ptr %47) #5
  %829 = load ptr, ptr %6, align 8, !tbaa !5
  %830 = getelementptr inbounds %struct.Longtail_BlockStoreAPI, ptr %829, i32 0, i32 6
  %831 = load ptr, ptr %830, align 8, !tbaa !31
  %832 = load ptr, ptr %6, align 8, !tbaa !5
  %833 = call noundef i32 %831(ptr noundef %832, ptr noundef %47)
  br label %834

834:                                              ; preds = %823
  %835 = call noundef ptr @_ZL19jc_test_get_fixturev()
  %836 = getelementptr inbounds %struct.jc_test_fixture, ptr %835, i32 0, i32 11
  %837 = load i32, ptr %836, align 8
  %838 = and i32 %837, -16776961
  %839 = or i32 %838, 477696
  store i32 %839, ptr %836, align 8
  %840 = call noundef ptr @_ZL19jc_test_get_fixturev()
  %841 = getelementptr inbounds %struct.jc_test_fixture, ptr %840, i32 0, i32 4
  store ptr @.str.3, ptr %841, align 8, !tbaa !10
  call void @_Z28jc_test_increment_assertionsv()
  %842 = getelementptr inbounds %struct.Longtail_BlockStore_Stats, ptr %46, i32 0, i32 0
  %843 = getelementptr inbounds [22 x i64], ptr %842, i64 0, i64 0
  %844 = call noundef i32 @_ZN21jc_test_cmp_eq_helperILb0EE7compareIjmEEiRKT_RKT0_PKcS9_(ptr noundef nonnull align 4 dereferenceable(4) @_ZZN45Longtail_Longtail_TestLRUBlockStore__TestCase8TestBodyEvE11BLOCK_COUNT, ptr noundef nonnull align 8 dereferenceable(8) %843, ptr noundef @.str.309, ptr noundef @.str.310)
  %845 = icmp eq i32 %844, 0
  br i1 %845, label %846, label %847

846:                                              ; preds = %834
  call void @_Z21jc_test_set_test_faili(i32 noundef 1)
  store i32 1, ptr %14, align 4
  br label %1448

847:                                              ; preds = %834
  br label %848

848:                                              ; preds = %847
  br label %849

849:                                              ; preds = %848
  br label %850

850:                                              ; preds = %849
  %851 = call noundef ptr @_ZL19jc_test_get_fixturev()
  %852 = getelementptr inbounds %struct.jc_test_fixture, ptr %851, i32 0, i32 11
  %853 = load i32, ptr %852, align 8
  %854 = and i32 %853, -16776961
  %855 = or i32 %854, 477952
  store i32 %855, ptr %852, align 8
  %856 = call noundef ptr @_ZL19jc_test_get_fixturev()
  %857 = getelementptr inbounds %struct.jc_test_fixture, ptr %856, i32 0, i32 4
  store ptr @.str.3, ptr %857, align 8, !tbaa !10
  call void @_Z28jc_test_increment_assertionsv()
  %858 = getelementptr inbounds %struct.Longtail_BlockStore_Stats, ptr %47, i32 0, i32 0
  %859 = getelementptr inbounds [22 x i64], ptr %858, i64 0, i64 0
  %860 = call noundef i32 @_ZN21jc_test_cmp_eq_helperILb0EE7compareIjmEEiRKT_RKT0_PKcS9_(ptr noundef nonnull align 4 dereferenceable(4) @_ZZN45Longtail_Longtail_TestLRUBlockStore__TestCase8TestBodyEvE11BLOCK_COUNT, ptr noundef nonnull align 8 dereferenceable(8) %859, ptr noundef @.str.309, ptr noundef @.str.311)
  %861 = icmp eq i32 %860, 0
  br i1 %861, label %862, label %863

862:                                              ; preds = %850
  call void @_Z21jc_test_set_test_faili(i32 noundef 1)
  store i32 1, ptr %14, align 4
  br label %1448

863:                                              ; preds = %850
  br label %864

864:                                              ; preds = %863
  br label %865

865:                                              ; preds = %864
  call void @llvm.lifetime.start.p0(i64 40, ptr %48) #5
  call void @_ZN25TestAsyncGetBlockCompleteC2Ev(ptr noundef nonnull align 8 dereferenceable(40) %48)
  br label %866

866:                                              ; preds = %865
  %867 = invoke noundef ptr @_ZL19jc_test_get_fixturev()
          to label %868 unwind label %891

868:                                              ; preds = %866
  %869 = getelementptr inbounds %struct.jc_test_fixture, ptr %867, i32 0, i32 11
  %870 = load i32, ptr %869, align 8
  %871 = and i32 %870, -16776961
  %872 = or i32 %871, 478976
  store i32 %872, ptr %869, align 8
  %873 = invoke noundef ptr @_ZL19jc_test_get_fixturev()
          to label %874 unwind label %891

874:                                              ; preds = %868
  %875 = getelementptr inbounds %struct.jc_test_fixture, ptr %873, i32 0, i32 4
  store ptr @.str.3, ptr %875, align 8, !tbaa !10
  invoke void @_Z28jc_test_increment_assertionsv()
          to label %876 unwind label %891

876:                                              ; preds = %874
  call void @llvm.lifetime.start.p0(i64 4, ptr %49) #5
  store i32 0, ptr %49, align 4, !tbaa !15
  call void @llvm.lifetime.start.p0(i64 4, ptr %50) #5
  %877 = load ptr, ptr %7, align 8, !tbaa !5
  %878 = getelementptr inbounds %struct.Longtail_BlockStoreAPI, ptr %877, i32 0, i32 3
  %879 = load ptr, ptr %878, align 8, !tbaa !25
  %880 = load ptr, ptr %7, align 8, !tbaa !5
  %881 = getelementptr inbounds [7 x i64], ptr %8, i64 0, i64 0
  %882 = load i64, ptr %881, align 16, !tbaa !23
  %883 = getelementptr inbounds %struct.TestAsyncGetBlockComplete, ptr %48, i32 0, i32 0
  %884 = invoke noundef i32 %879(ptr noundef %880, i64 noundef %882, ptr noundef %883)
          to label %885 unwind label %895

885:                                              ; preds = %876
  store i32 %884, ptr %50, align 4, !tbaa !15
  %886 = invoke noundef i32 @_ZN21jc_test_cmp_eq_helperILb1EE7compareIiiEEiRKT_RKT0_PKcS9_PN23jc_test_enable_argumentIXntsr18jc_test_is_pointerIS5_EE5valueEE4typeE(ptr noundef nonnull align 4 dereferenceable(4) %49, ptr noundef nonnull align 4 dereferenceable(4) %50, ptr noundef @.str.46, ptr noundef @.str.312, ptr noundef null)
          to label %887 unwind label %895

887:                                              ; preds = %885
  %888 = icmp eq i32 %886, 0
  call void @llvm.lifetime.end.p0(i64 4, ptr %50) #5
  call void @llvm.lifetime.end.p0(i64 4, ptr %49) #5
  br i1 %888, label %889, label %899

889:                                              ; preds = %887
  invoke void @_Z21jc_test_set_test_faili(i32 noundef 1)
          to label %890 unwind label %891

890:                                              ; preds = %889
  store i32 1, ptr %14, align 4
  br label %946

891:                                              ; preds = %901, %889, %874, %868, %866
  %892 = landingpad { ptr, i32 }
          cleanup
  %893 = extractvalue { ptr, i32 } %892, 0
  store ptr %893, ptr %9, align 8
  %894 = extractvalue { ptr, i32 } %892, 1
  store i32 %894, ptr %10, align 4
  br label %975

895:                                              ; preds = %885, %876
  %896 = landingpad { ptr, i32 }
          cleanup
  %897 = extractvalue { ptr, i32 } %896, 0
  store ptr %897, ptr %9, align 8
  %898 = extractvalue { ptr, i32 } %896, 1
  store i32 %898, ptr %10, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %50) #5
  call void @llvm.lifetime.end.p0(i64 4, ptr %49) #5
  br label %975

899:                                              ; preds = %887
  br label %900

900:                                              ; preds = %899
  br label %901

901:                                              ; preds = %900
  invoke void @_ZN25TestAsyncGetBlockComplete4WaitEv(ptr noundef nonnull align 8 dereferenceable(40) %48)
          to label %902 unwind label %891

902:                                              ; preds = %901
  call void @llvm.lifetime.start.p0(i64 8, ptr %51) #5
  %903 = getelementptr inbounds %struct.TestAsyncGetBlockComplete, ptr %48, i32 0, i32 3
  %904 = load ptr, ptr %903, align 8, !tbaa !26
  store ptr %904, ptr %51, align 8, !tbaa !5
  br label %905

905:                                              ; preds = %902
  %906 = invoke noundef ptr @_ZL19jc_test_get_fixturev()
          to label %907 unwind label %922

907:                                              ; preds = %905
  %908 = getelementptr inbounds %struct.jc_test_fixture, ptr %906, i32 0, i32 11
  %909 = load i32, ptr %908, align 8
  %910 = and i32 %909, -16776961
  %911 = or i32 %910, 479744
  store i32 %911, ptr %908, align 8
  %912 = invoke noundef ptr @_ZL19jc_test_get_fixturev()
          to label %913 unwind label %922

913:                                              ; preds = %907
  %914 = getelementptr inbounds %struct.jc_test_fixture, ptr %912, i32 0, i32 4
  store ptr @.str.3, ptr %914, align 8, !tbaa !10
  invoke void @_Z28jc_test_increment_assertionsv()
          to label %915 unwind label %922

915:                                              ; preds = %913
  call void @llvm.lifetime.start.p0(i64 4, ptr %52) #5
  store i32 0, ptr %52, align 4, !tbaa !15
  %916 = getelementptr inbounds %struct.TestAsyncGetBlockComplete, ptr %48, i32 0, i32 2
  %917 = invoke noundef i32 @_ZN21jc_test_cmp_eq_helperILb1EE7compareIiiEEiRKT_RKT0_PKcS9_PN23jc_test_enable_argumentIXntsr18jc_test_is_pointerIS5_EE5valueEE4typeE(ptr noundef nonnull align 4 dereferenceable(4) %52, ptr noundef nonnull align 4 dereferenceable(4) %916, ptr noundef @.str.46, ptr noundef @.str.275, ptr noundef null)
          to label %918 unwind label %926

918:                                              ; preds = %915
  %919 = icmp eq i32 %917, 0
  call void @llvm.lifetime.end.p0(i64 4, ptr %52) #5
  br i1 %919, label %920, label %930

920:                                              ; preds = %918
  invoke void @_Z21jc_test_set_test_faili(i32 noundef 1)
          to label %921 unwind label %922

921:                                              ; preds = %920
  store i32 1, ptr %14, align 4
  br label %945

922:                                              ; preds = %937, %920, %913, %907, %905
  %923 = landingpad { ptr, i32 }
          cleanup
  %924 = extractvalue { ptr, i32 } %923, 0
  store ptr %924, ptr %9, align 8
  %925 = extractvalue { ptr, i32 } %923, 1
  store i32 %925, ptr %10, align 4
  br label %974

926:                                              ; preds = %915
  %927 = landingpad { ptr, i32 }
          cleanup
  %928 = extractvalue { ptr, i32 } %927, 0
  store ptr %928, ptr %9, align 8
  %929 = extractvalue { ptr, i32 } %927, 1
  store i32 %929, ptr %10, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %52) #5
  br label %974

930:                                              ; preds = %918
  br label %931

931:                                              ; preds = %930
  br label %932

932:                                              ; preds = %931
  %933 = load ptr, ptr %51, align 8, !tbaa !5
  %934 = getelementptr inbounds %struct.Longtail_StoredBlock, ptr %933, i32 0, i32 0
  %935 = load ptr, ptr %934, align 8, !tbaa !24
  %936 = icmp ne ptr %935, null
  br i1 %936, label %937, label %944

937:                                              ; preds = %932
  %938 = load ptr, ptr %51, align 8, !tbaa !5
  %939 = getelementptr inbounds %struct.Longtail_StoredBlock, ptr %938, i32 0, i32 0
  %940 = load ptr, ptr %939, align 8, !tbaa !24
  %941 = load ptr, ptr %51, align 8, !tbaa !5
  %942 = invoke noundef i32 %940(ptr noundef %941)
          to label %943 unwind label %922

943:                                              ; preds = %937
  br label %944

944:                                              ; preds = %943, %932
  store i32 0, ptr %14, align 4
  br label %945

945:                                              ; preds = %944, %921
  call void @llvm.lifetime.end.p0(i64 8, ptr %51) #5
  br label %946

946:                                              ; preds = %945, %890
  call void @_ZN25TestAsyncGetBlockCompleteD2Ev(ptr noundef nonnull align 8 dereferenceable(40) %48) #5
  call void @llvm.lifetime.end.p0(i64 40, ptr %48) #5
  %947 = load i32, ptr %14, align 4
  switch i32 %947, label %1448 [
    i32 0, label %948
  ]

948:                                              ; preds = %946
  call void @llvm.lifetime.start.p0(i64 40, ptr %53) #5
  call void @_ZN25TestAsyncGetBlockCompleteC2Ev(ptr noundef nonnull align 8 dereferenceable(40) %53)
  br label %949

949:                                              ; preds = %948
  %950 = invoke noundef ptr @_ZL19jc_test_get_fixturev()
          to label %951 unwind label %976

951:                                              ; preds = %949
  %952 = getelementptr inbounds %struct.jc_test_fixture, ptr %950, i32 0, i32 11
  %953 = load i32, ptr %952, align 8
  %954 = and i32 %953, -16776961
  %955 = or i32 %954, 481792
  store i32 %955, ptr %952, align 8
  %956 = invoke noundef ptr @_ZL19jc_test_get_fixturev()
          to label %957 unwind label %976

957:                                              ; preds = %951
  %958 = getelementptr inbounds %struct.jc_test_fixture, ptr %956, i32 0, i32 4
  store ptr @.str.3, ptr %958, align 8, !tbaa !10
  invoke void @_Z28jc_test_increment_assertionsv()
          to label %959 unwind label %976

959:                                              ; preds = %957
  call void @llvm.lifetime.start.p0(i64 4, ptr %54) #5
  store i32 0, ptr %54, align 4, !tbaa !15
  call void @llvm.lifetime.start.p0(i64 4, ptr %55) #5
  %960 = load ptr, ptr %7, align 8, !tbaa !5
  %961 = getelementptr inbounds %struct.Longtail_BlockStoreAPI, ptr %960, i32 0, i32 3
  %962 = load ptr, ptr %961, align 8, !tbaa !25
  %963 = load ptr, ptr %7, align 8, !tbaa !5
  %964 = getelementptr inbounds [7 x i64], ptr %8, i64 0, i64 6
  %965 = load i64, ptr %964, align 16, !tbaa !23
  %966 = getelementptr inbounds %struct.TestAsyncGetBlockComplete, ptr %53, i32 0, i32 0
  %967 = invoke noundef i32 %962(ptr noundef %963, i64 noundef %965, ptr noundef %966)
          to label %968 unwind label %980

968:                                              ; preds = %959
  store i32 %967, ptr %55, align 4, !tbaa !15
  %969 = 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) %54, ptr noundef nonnull align 4 dereferenceable(4) %55, ptr noundef @.str.46, ptr noundef @.str.313, ptr noundef null)
          to label %970 unwind label %980

970:                                              ; preds = %968
  %971 = icmp eq i32 %969, 0
  call void @llvm.lifetime.end.p0(i64 4, ptr %55) #5
  call void @llvm.lifetime.end.p0(i64 4, ptr %54) #5
  br i1 %971, label %972, label %984

972:                                              ; preds = %970
  invoke void @_Z21jc_test_set_test_faili(i32 noundef 1)
          to label %973 unwind label %976

973:                                              ; preds = %972
  store i32 1, ptr %14, align 4
  br label %1031

974:                                              ; preds = %926, %922
  call void @llvm.lifetime.end.p0(i64 8, ptr %51) #5
  br label %975

975:                                              ; preds = %974, %895, %891
  call void @_ZN25TestAsyncGetBlockCompleteD2Ev(ptr noundef nonnull align 8 dereferenceable(40) %48) #5
  call void @llvm.lifetime.end.p0(i64 40, ptr %48) #5
  br label %1452

976:                                              ; preds = %986, %972, %957, %951, %949
  %977 = landingpad { ptr, i32 }
          cleanup
  %978 = extractvalue { ptr, i32 } %977, 0
  store ptr %978, ptr %9, align 8
  %979 = extractvalue { ptr, i32 } %977, 1
  store i32 %979, ptr %10, align 4
  br label %1060

980:                                              ; preds = %968, %959
  %981 = landingpad { ptr, i32 }
          cleanup
  %982 = extractvalue { ptr, i32 } %981, 0
  store ptr %982, ptr %9, align 8
  %983 = extractvalue { ptr, i32 } %981, 1
  store i32 %983, ptr %10, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %55) #5
  call void @llvm.lifetime.end.p0(i64 4, ptr %54) #5
  br label %1060

984:                                              ; preds = %970
  br label %985

985:                                              ; preds = %984
  br label %986

986:                                              ; preds = %985
  invoke void @_ZN25TestAsyncGetBlockComplete4WaitEv(ptr noundef nonnull align 8 dereferenceable(40) %53)
          to label %987 unwind label %976

987:                                              ; preds = %986
  call void @llvm.lifetime.start.p0(i64 8, ptr %56) #5
  %988 = getelementptr inbounds %struct.TestAsyncGetBlockComplete, ptr %53, i32 0, i32 3
  %989 = load ptr, ptr %988, align 8, !tbaa !26
  store ptr %989, ptr %56, align 8, !tbaa !5
  br label %990

990:                                              ; preds = %987
  %991 = invoke noundef ptr @_ZL19jc_test_get_fixturev()
          to label %992 unwind label %1007

992:                                              ; preds = %990
  %993 = getelementptr inbounds %struct.jc_test_fixture, ptr %991, i32 0, i32 11
  %994 = load i32, ptr %993, align 8
  %995 = and i32 %994, -16776961
  %996 = or i32 %995, 482560
  store i32 %996, ptr %993, align 8
  %997 = invoke noundef ptr @_ZL19jc_test_get_fixturev()
          to label %998 unwind label %1007

998:                                              ; preds = %992
  %999 = getelementptr inbounds %struct.jc_test_fixture, ptr %997, i32 0, i32 4
  store ptr @.str.3, ptr %999, align 8, !tbaa !10
  invoke void @_Z28jc_test_increment_assertionsv()
          to label %1000 unwind label %1007

1000:                                             ; preds = %998
  call void @llvm.lifetime.start.p0(i64 4, ptr %57) #5
  store i32 0, ptr %57, align 4, !tbaa !15
  %1001 = getelementptr inbounds %struct.TestAsyncGetBlockComplete, ptr %53, i32 0, i32 2
  %1002 = invoke noundef i32 @_ZN21jc_test_cmp_eq_helperILb1EE7compareIiiEEiRKT_RKT0_PKcS9_PN23jc_test_enable_argumentIXntsr18jc_test_is_pointerIS5_EE5valueEE4typeE(ptr noundef nonnull align 4 dereferenceable(4) %57, ptr noundef nonnull align 4 dereferenceable(4) %1001, ptr noundef @.str.46, ptr noundef @.str.275, ptr noundef null)
          to label %1003 unwind label %1011

1003:                                             ; preds = %1000
  %1004 = icmp eq i32 %1002, 0
  call void @llvm.lifetime.end.p0(i64 4, ptr %57) #5
  br i1 %1004, label %1005, label %1015

1005:                                             ; preds = %1003
  invoke void @_Z21jc_test_set_test_faili(i32 noundef 1)
          to label %1006 unwind label %1007

1006:                                             ; preds = %1005
  store i32 1, ptr %14, align 4
  br label %1030

1007:                                             ; preds = %1022, %1005, %998, %992, %990
  %1008 = landingpad { ptr, i32 }
          cleanup
  %1009 = extractvalue { ptr, i32 } %1008, 0
  store ptr %1009, ptr %9, align 8
  %1010 = extractvalue { ptr, i32 } %1008, 1
  store i32 %1010, ptr %10, align 4
  br label %1059

1011:                                             ; preds = %1000
  %1012 = landingpad { ptr, i32 }
          cleanup
  %1013 = extractvalue { ptr, i32 } %1012, 0
  store ptr %1013, ptr %9, align 8
  %1014 = extractvalue { ptr, i32 } %1012, 1
  store i32 %1014, ptr %10, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %57) #5
  br label %1059

1015:                                             ; preds = %1003
  br label %1016

1016:                                             ; preds = %1015
  br label %1017

1017:                                             ; preds = %1016
  %1018 = load ptr, ptr %56, align 8, !tbaa !5
  %1019 = getelementptr inbounds %struct.Longtail_StoredBlock, ptr %1018, i32 0, i32 0
  %1020 = load ptr, ptr %1019, align 8, !tbaa !24
  %1021 = icmp ne ptr %1020, null
  br i1 %1021, label %1022, label %1029

1022:                                             ; preds = %1017
  %1023 = load ptr, ptr %56, align 8, !tbaa !5
  %1024 = getelementptr inbounds %struct.Longtail_StoredBlock, ptr %1023, i32 0, i32 0
  %1025 = load ptr, ptr %1024, align 8, !tbaa !24
  %1026 = load ptr, ptr %56, align 8, !tbaa !5
  %1027 = invoke noundef i32 %1025(ptr noundef %1026)
          to label %1028 unwind label %1007

1028:                                             ; preds = %1022
  br label %1029

1029:                                             ; preds = %1028, %1017
  store i32 0, ptr %14, align 4
  br label %1030

1030:                                             ; preds = %1029, %1006
  call void @llvm.lifetime.end.p0(i64 8, ptr %56) #5
  br label %1031

1031:                                             ; preds = %1030, %973
  call void @_ZN25TestAsyncGetBlockCompleteD2Ev(ptr noundef nonnull align 8 dereferenceable(40) %53) #5
  call void @llvm.lifetime.end.p0(i64 40, ptr %53) #5
  %1032 = load i32, ptr %14, align 4
  switch i32 %1032, label %1448 [
    i32 0, label %1033
  ]

1033:                                             ; preds = %1031
  call void @llvm.lifetime.start.p0(i64 40, ptr %58) #5
  call void @_ZN25TestAsyncGetBlockCompleteC2Ev(ptr noundef nonnull align 8 dereferenceable(40) %58)
  br label %1034

1034:                                             ; preds = %1033
  %1035 = invoke noundef ptr @_ZL19jc_test_get_fixturev()
          to label %1036 unwind label %1061

1036:                                             ; preds = %1034
  %1037 = getelementptr inbounds %struct.jc_test_fixture, ptr %1035, i32 0, i32 11
  %1038 = load i32, ptr %1037, align 8
  %1039 = and i32 %1038, -16776961
  %1040 = or i32 %1039, 484608
  store i32 %1040, ptr %1037, align 8
  %1041 = invoke noundef ptr @_ZL19jc_test_get_fixturev()
          to label %1042 unwind label %1061

1042:                                             ; preds = %1036
  %1043 = getelementptr inbounds %struct.jc_test_fixture, ptr %1041, i32 0, i32 4
  store ptr @.str.3, ptr %1043, align 8, !tbaa !10
  invoke void @_Z28jc_test_increment_assertionsv()
          to label %1044 unwind label %1061

1044:                                             ; preds = %1042
  call void @llvm.lifetime.start.p0(i64 4, ptr %59) #5
  store i32 0, ptr %59, align 4, !tbaa !15
  call void @llvm.lifetime.start.p0(i64 4, ptr %60) #5
  %1045 = load ptr, ptr %7, align 8, !tbaa !5
  %1046 = getelementptr inbounds %struct.Longtail_BlockStoreAPI, ptr %1045, i32 0, i32 3
  %1047 = load ptr, ptr %1046, align 8, !tbaa !25
  %1048 = load ptr, ptr %7, align 8, !tbaa !5
  %1049 = getelementptr inbounds [7 x i64], ptr %8, i64 0, i64 5
  %1050 = load i64, ptr %1049, align 8, !tbaa !23
  %1051 = getelementptr inbounds %struct.TestAsyncGetBlockComplete, ptr %58, i32 0, i32 0
  %1052 = invoke noundef i32 %1047(ptr noundef %1048, i64 noundef %1050, ptr noundef %1051)
          to label %1053 unwind label %1065

1053:                                             ; preds = %1044
  store i32 %1052, ptr %60, align 4, !tbaa !15
  %1054 = 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) %59, ptr noundef nonnull align 4 dereferenceable(4) %60, ptr noundef @.str.46, ptr noundef @.str.314, ptr noundef null)
          to label %1055 unwind label %1065

1055:                                             ; preds = %1053
  %1056 = icmp eq i32 %1054, 0
  call void @llvm.lifetime.end.p0(i64 4, ptr %60) #5
  call void @llvm.lifetime.end.p0(i64 4, ptr %59) #5
  br i1 %1056, label %1057, label %1069

1057:                                             ; preds = %1055
  invoke void @_Z21jc_test_set_test_faili(i32 noundef 1)
          to label %1058 unwind label %1061

1058:                                             ; preds = %1057
  store i32 1, ptr %14, align 4
  br label %1116

1059:                                             ; preds = %1011, %1007
  call void @llvm.lifetime.end.p0(i64 8, ptr %56) #5
  br label %1060

1060:                                             ; preds = %1059, %980, %976
  call void @_ZN25TestAsyncGetBlockCompleteD2Ev(ptr noundef nonnull align 8 dereferenceable(40) %53) #5
  call void @llvm.lifetime.end.p0(i64 40, ptr %53) #5
  br label %1452

1061:                                             ; preds = %1071, %1057, %1042, %1036, %1034
  %1062 = landingpad { ptr, i32 }
          cleanup
  %1063 = extractvalue { ptr, i32 } %1062, 0
  store ptr %1063, ptr %9, align 8
  %1064 = extractvalue { ptr, i32 } %1062, 1
  store i32 %1064, ptr %10, align 4
  br label %1145

1065:                                             ; preds = %1053, %1044
  %1066 = landingpad { ptr, i32 }
          cleanup
  %1067 = extractvalue { ptr, i32 } %1066, 0
  store ptr %1067, ptr %9, align 8
  %1068 = extractvalue { ptr, i32 } %1066, 1
  store i32 %1068, ptr %10, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %60) #5
  call void @llvm.lifetime.end.p0(i64 4, ptr %59) #5
  br label %1145

1069:                                             ; preds = %1055
  br label %1070

1070:                                             ; preds = %1069
  br label %1071

1071:                                             ; preds = %1070
  invoke void @_ZN25TestAsyncGetBlockComplete4WaitEv(ptr noundef nonnull align 8 dereferenceable(40) %58)
          to label %1072 unwind label %1061

1072:                                             ; preds = %1071
  call void @llvm.lifetime.start.p0(i64 8, ptr %61) #5
  %1073 = getelementptr inbounds %struct.TestAsyncGetBlockComplete, ptr %58, i32 0, i32 3
  %1074 = load ptr, ptr %1073, align 8, !tbaa !26
  store ptr %1074, ptr %61, align 8, !tbaa !5
  br label %1075

1075:                                             ; preds = %1072
  %1076 = invoke noundef ptr @_ZL19jc_test_get_fixturev()
          to label %1077 unwind label %1092

1077:                                             ; preds = %1075
  %1078 = getelementptr inbounds %struct.jc_test_fixture, ptr %1076, i32 0, i32 11
  %1079 = load i32, ptr %1078, align 8
  %1080 = and i32 %1079, -16776961
  %1081 = or i32 %1080, 485376
  store i32 %1081, ptr %1078, align 8
  %1082 = invoke noundef ptr @_ZL19jc_test_get_fixturev()
          to label %1083 unwind label %1092

1083:                                             ; preds = %1077
  %1084 = getelementptr inbounds %struct.jc_test_fixture, ptr %1082, i32 0, i32 4
  store ptr @.str.3, ptr %1084, align 8, !tbaa !10
  invoke void @_Z28jc_test_increment_assertionsv()
          to label %1085 unwind label %1092

1085:                                             ; preds = %1083
  call void @llvm.lifetime.start.p0(i64 4, ptr %62) #5
  store i32 0, ptr %62, align 4, !tbaa !15
  %1086 = getelementptr inbounds %struct.TestAsyncGetBlockComplete, ptr %58, i32 0, i32 2
  %1087 = invoke noundef i32 @_ZN21jc_test_cmp_eq_helperILb1EE7compareIiiEEiRKT_RKT0_PKcS9_PN23jc_test_enable_argumentIXntsr18jc_test_is_pointerIS5_EE5valueEE4typeE(ptr noundef nonnull align 4 dereferenceable(4) %62, ptr noundef nonnull align 4 dereferenceable(4) %1086, ptr noundef @.str.46, ptr noundef @.str.275, ptr noundef null)
          to label %1088 unwind label %1096

1088:                                             ; preds = %1085
  %1089 = icmp eq i32 %1087, 0
  call void @llvm.lifetime.end.p0(i64 4, ptr %62) #5
  br i1 %1089, label %1090, label %1100

1090:                                             ; preds = %1088
  invoke void @_Z21jc_test_set_test_faili(i32 noundef 1)
          to label %1091 unwind label %1092

1091:                                             ; preds = %1090
  store i32 1, ptr %14, align 4
  br label %1115

1092:                                             ; preds = %1107, %1090, %1083, %1077, %1075
  %1093 = landingpad { ptr, i32 }
          cleanup
  %1094 = extractvalue { ptr, i32 } %1093, 0
  store ptr %1094, ptr %9, align 8
  %1095 = extractvalue { ptr, i32 } %1093, 1
  store i32 %1095, ptr %10, align 4
  br label %1144

1096:                                             ; preds = %1085
  %1097 = landingpad { ptr, i32 }
          cleanup
  %1098 = extractvalue { ptr, i32 } %1097, 0
  store ptr %1098, ptr %9, align 8
  %1099 = extractvalue { ptr, i32 } %1097, 1
  store i32 %1099, ptr %10, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %62) #5
  br label %1144

1100:                                             ; preds = %1088
  br label %1101

1101:                                             ; preds = %1100
  br label %1102

1102:                                             ; preds = %1101
  %1103 = load ptr, ptr %61, align 8, !tbaa !5
  %1104 = getelementptr inbounds %struct.Longtail_StoredBlock, ptr %1103, i32 0, i32 0
  %1105 = load ptr, ptr %1104, align 8, !tbaa !24
  %1106 = icmp ne ptr %1105, null
  br i1 %1106, label %1107, label %1114

1107:                                             ; preds = %1102
  %1108 = load ptr, ptr %61, align 8, !tbaa !5
  %1109 = getelementptr inbounds %struct.Longtail_StoredBlock, ptr %1108, i32 0, i32 0
  %1110 = load ptr, ptr %1109, align 8, !tbaa !24
  %1111 = load ptr, ptr %61, align 8, !tbaa !5
  %1112 = invoke noundef i32 %1110(ptr noundef %1111)
          to label %1113 unwind label %1092

1113:                                             ; preds = %1107
  br label %1114

1114:                                             ; preds = %1113, %1102
  store i32 0, ptr %14, align 4
  br label %1115

1115:                                             ; preds = %1114, %1091
  call void @llvm.lifetime.end.p0(i64 8, ptr %61) #5
  br label %1116

1116:                                             ; preds = %1115, %1058
  call void @_ZN25TestAsyncGetBlockCompleteD2Ev(ptr noundef nonnull align 8 dereferenceable(40) %58) #5
  call void @llvm.lifetime.end.p0(i64 40, ptr %58) #5
  %1117 = load i32, ptr %14, align 4
  switch i32 %1117, label %1448 [
    i32 0, label %1118
  ]

1118:                                             ; preds = %1116
  call void @llvm.lifetime.start.p0(i64 40, ptr %63) #5
  call void @_ZN25TestAsyncGetBlockCompleteC2Ev(ptr noundef nonnull align 8 dereferenceable(40) %63)
  br label %1119

1119:                                             ; preds = %1118
  %1120 = invoke noundef ptr @_ZL19jc_test_get_fixturev()
          to label %1121 unwind label %1146

1121:                                             ; preds = %1119
  %1122 = getelementptr inbounds %struct.jc_test_fixture, ptr %1120, i32 0, i32 11
  %1123 = load i32, ptr %1122, align 8
  %1124 = and i32 %1123, -16776961
  %1125 = or i32 %1124, 487424
  store i32 %1125, ptr %1122, align 8
  %1126 = invoke noundef ptr @_ZL19jc_test_get_fixturev()
          to label %1127 unwind label %1146

1127:                                             ; preds = %1121
  %1128 = getelementptr inbounds %struct.jc_test_fixture, ptr %1126, i32 0, i32 4
  store ptr @.str.3, ptr %1128, align 8, !tbaa !10
  invoke void @_Z28jc_test_increment_assertionsv()
          to label %1129 unwind label %1146

1129:                                             ; preds = %1127
  call void @llvm.lifetime.start.p0(i64 4, ptr %64) #5
  store i32 0, ptr %64, align 4, !tbaa !15
  call void @llvm.lifetime.start.p0(i64 4, ptr %65) #5
  %1130 = load ptr, ptr %7, align 8, !tbaa !5
  %1131 = getelementptr inbounds %struct.Longtail_BlockStoreAPI, ptr %1130, i32 0, i32 3
  %1132 = load ptr, ptr %1131, align 8, !tbaa !25
  %1133 = load ptr, ptr %7, align 8, !tbaa !5
  %1134 = getelementptr inbounds [7 x i64], ptr %8, i64 0, i64 3
  %1135 = load i64, ptr %1134, align 8, !tbaa !23
  %1136 = getelementptr inbounds %struct.TestAsyncGetBlockComplete, ptr %63, i32 0, i32 0
  %1137 = invoke noundef i32 %1132(ptr noundef %1133, i64 noundef %1135, ptr noundef %1136)
          to label %1138 unwind label %1150

1138:                                             ; preds = %1129
  store i32 %1137, ptr %65, align 4, !tbaa !15
  %1139 = 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) %64, ptr noundef nonnull align 4 dereferenceable(4) %65, ptr noundef @.str.46, ptr noundef @.str.315, ptr noundef null)
          to label %1140 unwind label %1150

1140:                                             ; preds = %1138
  %1141 = icmp eq i32 %1139, 0
  call void @llvm.lifetime.end.p0(i64 4, ptr %65) #5
  call void @llvm.lifetime.end.p0(i64 4, ptr %64) #5
  br i1 %1141, label %1142, label %1154

1142:                                             ; preds = %1140
  invoke void @_Z21jc_test_set_test_faili(i32 noundef 1)
          to label %1143 unwind label %1146

1143:                                             ; preds = %1142
  store i32 1, ptr %14, align 4
  br label %1201

1144:                                             ; preds = %1096, %1092
  call void @llvm.lifetime.end.p0(i64 8, ptr %61) #5
  br label %1145

1145:                                             ; preds = %1144, %1065, %1061
  call void @_ZN25TestAsyncGetBlockCompleteD2Ev(ptr noundef nonnull align 8 dereferenceable(40) %58) #5
  call void @llvm.lifetime.end.p0(i64 40, ptr %58) #5
  br label %1452

1146:                                             ; preds = %1156, %1142, %1127, %1121, %1119
  %1147 = landingpad { ptr, i32 }
          cleanup
  %1148 = extractvalue { ptr, i32 } %1147, 0
  store ptr %1148, ptr %9, align 8
  %1149 = extractvalue { ptr, i32 } %1147, 1
  store i32 %1149, ptr %10, align 4
  br label %1230

1150:                                             ; preds = %1138, %1129
  %1151 = landingpad { ptr, i32 }
          cleanup
  %1152 = extractvalue { ptr, i32 } %1151, 0
  store ptr %1152, ptr %9, align 8
  %1153 = extractvalue { ptr, i32 } %1151, 1
  store i32 %1153, ptr %10, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %65) #5
  call void @llvm.lifetime.end.p0(i64 4, ptr %64) #5
  br label %1230

1154:                                             ; preds = %1140
  br label %1155

1155:                                             ; preds = %1154
  br label %1156

1156:                                             ; preds = %1155
  invoke void @_ZN25TestAsyncGetBlockComplete4WaitEv(ptr noundef nonnull align 8 dereferenceable(40) %63)
          to label %1157 unwind label %1146

1157:                                             ; preds = %1156
  call void @llvm.lifetime.start.p0(i64 8, ptr %66) #5
  %1158 = getelementptr inbounds %struct.TestAsyncGetBlockComplete, ptr %63, i32 0, i32 3
  %1159 = load ptr, ptr %1158, align 8, !tbaa !26
  store ptr %1159, ptr %66, align 8, !tbaa !5
  br label %1160

1160:                                             ; preds = %1157
  %1161 = invoke noundef ptr @_ZL19jc_test_get_fixturev()
          to label %1162 unwind label %1177

1162:                                             ; preds = %1160
  %1163 = getelementptr inbounds %struct.jc_test_fixture, ptr %1161, i32 0, i32 11
  %1164 = load i32, ptr %1163, align 8
  %1165 = and i32 %1164, -16776961
  %1166 = or i32 %1165, 488192
  store i32 %1166, ptr %1163, align 8
  %1167 = invoke noundef ptr @_ZL19jc_test_get_fixturev()
          to label %1168 unwind label %1177

1168:                                             ; preds = %1162
  %1169 = getelementptr inbounds %struct.jc_test_fixture, ptr %1167, i32 0, i32 4
  store ptr @.str.3, ptr %1169, align 8, !tbaa !10
  invoke void @_Z28jc_test_increment_assertionsv()
          to label %1170 unwind label %1177

1170:                                             ; preds = %1168
  call void @llvm.lifetime.start.p0(i64 4, ptr %67) #5
  store i32 0, ptr %67, align 4, !tbaa !15
  %1171 = getelementptr inbounds %struct.TestAsyncGetBlockComplete, ptr %63, i32 0, i32 2
  %1172 = 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) %67, ptr noundef nonnull align 4 dereferenceable(4) %1171, ptr noundef @.str.46, ptr noundef @.str.275, ptr noundef null)
          to label %1173 unwind label %1181

1173:                                             ; preds = %1170
  %1174 = icmp eq i32 %1172, 0
  call void @llvm.lifetime.end.p0(i64 4, ptr %67) #5
  br i1 %1174, label %1175, label %1185

1175:                                             ; preds = %1173
  invoke void @_Z21jc_test_set_test_faili(i32 noundef 1)
          to label %1176 unwind label %1177

1176:                                             ; preds = %1175
  store i32 1, ptr %14, align 4
  br label %1200

1177:                                             ; preds = %1192, %1175, %1168, %1162, %1160
  %1178 = landingpad { ptr, i32 }
          cleanup
  %1179 = extractvalue { ptr, i32 } %1178, 0
  store ptr %1179, ptr %9, align 8
  %1180 = extractvalue { ptr, i32 } %1178, 1
  store i32 %1180, ptr %10, align 4
  br label %1229

1181:                                             ; preds = %1170
  %1182 = landingpad { ptr, i32 }
          cleanup
  %1183 = extractvalue { ptr, i32 } %1182, 0
  store ptr %1183, ptr %9, align 8
  %1184 = extractvalue { ptr, i32 } %1182, 1
  store i32 %1184, ptr %10, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %67) #5
  br label %1229

1185:                                             ; preds = %1173
  br label %1186

1186:                                             ; preds = %1185
  br label %1187

1187:                                             ; preds = %1186
  %1188 = load ptr, ptr %66, align 8, !tbaa !5
  %1189 = getelementptr inbounds %struct.Longtail_StoredBlock, ptr %1188, i32 0, i32 0
  %1190 = load ptr, ptr %1189, align 8, !tbaa !24
  %1191 = icmp ne ptr %1190, null
  br i1 %1191, label %1192, label %1199

1192:                                             ; preds = %1187
  %1193 = load ptr, ptr %66, align 8, !tbaa !5
  %1194 = getelementptr inbounds %struct.Longtail_StoredBlock, ptr %1193, i32 0, i32 0
  %1195 = load ptr, ptr %1194, align 8, !tbaa !24
  %1196 = load ptr, ptr %66, align 8, !tbaa !5
  %1197 = invoke noundef i32 %1195(ptr noundef %1196)
          to label %1198 unwind label %1177

1198:                                             ; preds = %1192
  br label %1199

1199:                                             ; preds = %1198, %1187
  store i32 0, ptr %14, align 4
  br label %1200

1200:                                             ; preds = %1199, %1176
  call void @llvm.lifetime.end.p0(i64 8, ptr %66) #5
  br label %1201

1201:                                             ; preds = %1200, %1143
  call void @_ZN25TestAsyncGetBlockCompleteD2Ev(ptr noundef nonnull align 8 dereferenceable(40) %63) #5
  call void @llvm.lifetime.end.p0(i64 40, ptr %63) #5
  %1202 = load i32, ptr %14, align 4
  switch i32 %1202, label %1448 [
    i32 0, label %1203
  ]

1203:                                             ; preds = %1201
  call void @llvm.lifetime.start.p0(i64 40, ptr %68) #5
  call void @_ZN25TestAsyncGetBlockCompleteC2Ev(ptr noundef nonnull align 8 dereferenceable(40) %68)
  br label %1204

1204:                                             ; preds = %1203
  %1205 = invoke noundef ptr @_ZL19jc_test_get_fixturev()
          to label %1206 unwind label %1231

1206:                                             ; preds = %1204
  %1207 = getelementptr inbounds %struct.jc_test_fixture, ptr %1205, i32 0, i32 11
  %1208 = load i32, ptr %1207, align 8
  %1209 = and i32 %1208, -16776961
  %1210 = or i32 %1209, 490240
  store i32 %1210, ptr %1207, align 8
  %1211 = invoke noundef ptr @_ZL19jc_test_get_fixturev()
          to label %1212 unwind label %1231

1212:                                             ; preds = %1206
  %1213 = getelementptr inbounds %struct.jc_test_fixture, ptr %1211, i32 0, i32 4
  store ptr @.str.3, ptr %1213, align 8, !tbaa !10
  invoke void @_Z28jc_test_increment_assertionsv()
          to label %1214 unwind label %1231

1214:                                             ; preds = %1212
  call void @llvm.lifetime.start.p0(i64 4, ptr %69) #5
  store i32 0, ptr %69, align 4, !tbaa !15
  call void @llvm.lifetime.start.p0(i64 4, ptr %70) #5
  %1215 = load ptr, ptr %7, align 8, !tbaa !5
  %1216 = getelementptr inbounds %struct.Longtail_BlockStoreAPI, ptr %1215, i32 0, i32 3
  %1217 = load ptr, ptr %1216, align 8, !tbaa !25
  %1218 = load ptr, ptr %7, align 8, !tbaa !5
  %1219 = getelementptr inbounds [7 x i64], ptr %8, i64 0, i64 0
  %1220 = load i64, ptr %1219, align 16, !tbaa !23
  %1221 = getelementptr inbounds %struct.TestAsyncGetBlockComplete, ptr %68, i32 0, i32 0
  %1222 = invoke noundef i32 %1217(ptr noundef %1218, i64 noundef %1220, ptr noundef %1221)
          to label %1223 unwind label %1235

1223:                                             ; preds = %1214
  store i32 %1222, ptr %70, align 4, !tbaa !15
  %1224 = 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) %69, ptr noundef nonnull align 4 dereferenceable(4) %70, ptr noundef @.str.46, ptr noundef @.str.312, ptr noundef null)
          to label %1225 unwind label %1235

1225:                                             ; preds = %1223
  %1226 = icmp eq i32 %1224, 0
  call void @llvm.lifetime.end.p0(i64 4, ptr %70) #5
  call void @llvm.lifetime.end.p0(i64 4, ptr %69) #5
  br i1 %1226, label %1227, label %1239

1227:                                             ; preds = %1225
  invoke void @_Z21jc_test_set_test_faili(i32 noundef 1)
          to label %1228 unwind label %1231

1228:                                             ; preds = %1227
  store i32 1, ptr %14, align 4
  br label %1286

1229:                                             ; preds = %1181, %1177
  call void @llvm.lifetime.end.p0(i64 8, ptr %66) #5
  br label %1230

1230:                                             ; preds = %1229, %1150, %1146
  call void @_ZN25TestAsyncGetBlockCompleteD2Ev(ptr noundef nonnull align 8 dereferenceable(40) %63) #5
  call void @llvm.lifetime.end.p0(i64 40, ptr %63) #5
  br label %1452

1231:                                             ; preds = %1241, %1227, %1212, %1206, %1204
  %1232 = landingpad { ptr, i32 }
          cleanup
  %1233 = extractvalue { ptr, i32 } %1232, 0
  store ptr %1233, ptr %9, align 8
  %1234 = extractvalue { ptr, i32 } %1232, 1
  store i32 %1234, ptr %10, align 4
  br label %1315

1235:                                             ; preds = %1223, %1214
  %1236 = landingpad { ptr, i32 }
          cleanup
  %1237 = extractvalue { ptr, i32 } %1236, 0
  store ptr %1237, ptr %9, align 8
  %1238 = extractvalue { ptr, i32 } %1236, 1
  store i32 %1238, ptr %10, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %70) #5
  call void @llvm.lifetime.end.p0(i64 4, ptr %69) #5
  br label %1315

1239:                                             ; preds = %1225
  br label %1240

1240:                                             ; preds = %1239
  br label %1241

1241:                                             ; preds = %1240
  invoke void @_ZN25TestAsyncGetBlockComplete4WaitEv(ptr noundef nonnull align 8 dereferenceable(40) %68)
          to label %1242 unwind label %1231

1242:                                             ; preds = %1241
  call void @llvm.lifetime.start.p0(i64 8, ptr %71) #5
  %1243 = getelementptr inbounds %struct.TestAsyncGetBlockComplete, ptr %68, i32 0, i32 3
  %1244 = load ptr, ptr %1243, align 8, !tbaa !26
  store ptr %1244, ptr %71, align 8, !tbaa !5
  br label %1245

1245:                                             ; preds = %1242
  %1246 = invoke noundef ptr @_ZL19jc_test_get_fixturev()
          to label %1247 unwind label %1262

1247:                                             ; preds = %1245
  %1248 = getelementptr inbounds %struct.jc_test_fixture, ptr %1246, i32 0, i32 11
  %1249 = load i32, ptr %1248, align 8
  %1250 = and i32 %1249, -16776961
  %1251 = or i32 %1250, 491008
  store i32 %1251, ptr %1248, align 8
  %1252 = invoke noundef ptr @_ZL19jc_test_get_fixturev()
          to label %1253 unwind label %1262

1253:                                             ; preds = %1247
  %1254 = getelementptr inbounds %struct.jc_test_fixture, ptr %1252, i32 0, i32 4
  store ptr @.str.3, ptr %1254, align 8, !tbaa !10
  invoke void @_Z28jc_test_increment_assertionsv()
          to label %1255 unwind label %1262

1255:                                             ; preds = %1253
  call void @llvm.lifetime.start.p0(i64 4, ptr %72) #5
  store i32 0, ptr %72, align 4, !tbaa !15
  %1256 = getelementptr inbounds %struct.TestAsyncGetBlockComplete, ptr %68, i32 0, i32 2
  %1257 = 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) %72, ptr noundef nonnull align 4 dereferenceable(4) %1256, ptr noundef @.str.46, ptr noundef @.str.275, ptr noundef null)
          to label %1258 unwind label %1266

1258:                                             ; preds = %1255
  %1259 = icmp eq i32 %1257, 0
  call void @llvm.lifetime.end.p0(i64 4, ptr %72) #5
  br i1 %1259, label %1260, label %1270

1260:                                             ; preds = %1258
  invoke void @_Z21jc_test_set_test_faili(i32 noundef 1)
          to label %1261 unwind label %1262

1261:                                             ; preds = %1260
  store i32 1, ptr %14, align 4
  br label %1285

1262:                                             ; preds = %1277, %1260, %1253, %1247, %1245
  %1263 = landingpad { ptr, i32 }
          cleanup
  %1264 = extractvalue { ptr, i32 } %1263, 0
  store ptr %1264, ptr %9, align 8
  %1265 = extractvalue { ptr, i32 } %1263, 1
  store i32 %1265, ptr %10, align 4
  br label %1314

1266:                                             ; preds = %1255
  %1267 = landingpad { ptr, i32 }
          cleanup
  %1268 = extractvalue { ptr, i32 } %1267, 0
  store ptr %1268, ptr %9, align 8
  %1269 = extractvalue { ptr, i32 } %1267, 1
  store i32 %1269, ptr %10, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %72) #5
  br label %1314

1270:                                             ; preds = %1258
  br label %1271

1271:                                             ; preds = %1270
  br label %1272

1272:                                             ; preds = %1271
  %1273 = load ptr, ptr %71, align 8, !tbaa !5
  %1274 = getelementptr inbounds %struct.Longtail_StoredBlock, ptr %1273, i32 0, i32 0
  %1275 = load ptr, ptr %1274, align 8, !tbaa !24
  %1276 = icmp ne ptr %1275, null
  br i1 %1276, label %1277, label %1284

1277:                                             ; preds = %1272
  %1278 = load ptr, ptr %71, align 8, !tbaa !5
  %1279 = getelementptr inbounds %struct.Longtail_StoredBlock, ptr %1278, i32 0, i32 0
  %1280 = load ptr, ptr %1279, align 8, !tbaa !24
  %1281 = load ptr, ptr %71, align 8, !tbaa !5
  %1282 = invoke noundef i32 %1280(ptr noundef %1281)
          to label %1283 unwind label %1262

1283:                                             ; preds = %1277
  br label %1284

1284:                                             ; preds = %1283, %1272
  store i32 0, ptr %14, align 4
  br label %1285

1285:                                             ; preds = %1284, %1261
  call void @llvm.lifetime.end.p0(i64 8, ptr %71) #5
  br label %1286

1286:                                             ; preds = %1285, %1228
  call void @_ZN25TestAsyncGetBlockCompleteD2Ev(ptr noundef nonnull align 8 dereferenceable(40) %68) #5
  call void @llvm.lifetime.end.p0(i64 40, ptr %68) #5
  %1287 = load i32, ptr %14, align 4
  switch i32 %1287, label %1448 [
    i32 0, label %1288
  ]

1288:                                             ; preds = %1286
  call void @llvm.lifetime.start.p0(i64 40, ptr %73) #5
  call void @_ZN25TestAsyncGetBlockCompleteC2Ev(ptr noundef nonnull align 8 dereferenceable(40) %73)
  br label %1289

1289:                                             ; preds = %1288
  %1290 = invoke noundef ptr @_ZL19jc_test_get_fixturev()
          to label %1291 unwind label %1316

1291:                                             ; preds = %1289
  %1292 = getelementptr inbounds %struct.jc_test_fixture, ptr %1290, i32 0, i32 11
  %1293 = load i32, ptr %1292, align 8
  %1294 = and i32 %1293, -16776961
  %1295 = or i32 %1294, 493056
  store i32 %1295, ptr %1292, align 8
  %1296 = invoke noundef ptr @_ZL19jc_test_get_fixturev()
          to label %1297 unwind label %1316

1297:                                             ; preds = %1291
  %1298 = getelementptr inbounds %struct.jc_test_fixture, ptr %1296, i32 0, i32 4
  store ptr @.str.3, ptr %1298, align 8, !tbaa !10
  invoke void @_Z28jc_test_increment_assertionsv()
          to label %1299 unwind label %1316

1299:                                             ; preds = %1297
  call void @llvm.lifetime.start.p0(i64 4, ptr %74) #5
  store i32 0, ptr %74, align 4, !tbaa !15
  call void @llvm.lifetime.start.p0(i64 4, ptr %75) #5
  %1300 = load ptr, ptr %7, align 8, !tbaa !5
  %1301 = getelementptr inbounds %struct.Longtail_BlockStoreAPI, ptr %1300, i32 0, i32 3
  %1302 = load ptr, ptr %1301, align 8, !tbaa !25
  %1303 = load ptr, ptr %7, align 8, !tbaa !5
  %1304 = getelementptr inbounds [7 x i64], ptr %8, i64 0, i64 3
  %1305 = load i64, ptr %1304, align 8, !tbaa !23
  %1306 = getelementptr inbounds %struct.TestAsyncGetBlockComplete, ptr %73, i32 0, i32 0
  %1307 = invoke noundef i32 %1302(ptr noundef %1303, i64 noundef %1305, ptr noundef %1306)
          to label %1308 unwind label %1320

1308:                                             ; preds = %1299
  store i32 %1307, ptr %75, align 4, !tbaa !15
  %1309 = 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) %74, ptr noundef nonnull align 4 dereferenceable(4) %75, ptr noundef @.str.46, ptr noundef @.str.315, ptr noundef null)
          to label %1310 unwind label %1320

1310:                                             ; preds = %1308
  %1311 = icmp eq i32 %1309, 0
  call void @llvm.lifetime.end.p0(i64 4, ptr %75) #5
  call void @llvm.lifetime.end.p0(i64 4, ptr %74) #5
  br i1 %1311, label %1312, label %1324

1312:                                             ; preds = %1310
  invoke void @_Z21jc_test_set_test_faili(i32 noundef 1)
          to label %1313 unwind label %1316

1313:                                             ; preds = %1312
  store i32 1, ptr %14, align 4
  br label %1371

1314:                                             ; preds = %1266, %1262
  call void @llvm.lifetime.end.p0(i64 8, ptr %71) #5
  br label %1315

1315:                                             ; preds = %1314, %1235, %1231
  call void @_ZN25TestAsyncGetBlockCompleteD2Ev(ptr noundef nonnull align 8 dereferenceable(40) %68) #5
  call void @llvm.lifetime.end.p0(i64 40, ptr %68) #5
  br label %1452

1316:                                             ; preds = %1326, %1312, %1297, %1291, %1289
  %1317 = landingpad { ptr, i32 }
          cleanup
  %1318 = extractvalue { ptr, i32 } %1317, 0
  store ptr %1318, ptr %9, align 8
  %1319 = extractvalue { ptr, i32 } %1317, 1
  store i32 %1319, ptr %10, align 4
  br label %1398

1320:                                             ; preds = %1308, %1299
  %1321 = landingpad { ptr, i32 }
          cleanup
  %1322 = extractvalue { ptr, i32 } %1321, 0
  store ptr %1322, ptr %9, align 8
  %1323 = extractvalue { ptr, i32 } %1321, 1
  store i32 %1323, ptr %10, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %75) #5
  call void @llvm.lifetime.end.p0(i64 4, ptr %74) #5
  br label %1398

1324:                                             ; preds = %1310
  br label %1325

1325:                                             ; preds = %1324
  br label %1326

1326:                                             ; preds = %1325
  invoke void @_ZN25TestAsyncGetBlockComplete4WaitEv(ptr noundef nonnull align 8 dereferenceable(40) %73)
          to label %1327 unwind label %1316

1327:                                             ; preds = %1326
  call void @llvm.lifetime.start.p0(i64 8, ptr %76) #5
  %1328 = getelementptr inbounds %struct.TestAsyncGetBlockComplete, ptr %73, i32 0, i32 3
  %1329 = load ptr, ptr %1328, align 8, !tbaa !26
  store ptr %1329, ptr %76, align 8, !tbaa !5
  br label %1330

1330:                                             ; preds = %1327
  %1331 = invoke noundef ptr @_ZL19jc_test_get_fixturev()
          to label %1332 unwind label %1347

1332:                                             ; preds = %1330
  %1333 = getelementptr inbounds %struct.jc_test_fixture, ptr %1331, i32 0, i32 11
  %1334 = load i32, ptr %1333, align 8
  %1335 = and i32 %1334, -16776961
  %1336 = or i32 %1335, 493824
  store i32 %1336, ptr %1333, align 8
  %1337 = invoke noundef ptr @_ZL19jc_test_get_fixturev()
          to label %1338 unwind label %1347

1338:                                             ; preds = %1332
  %1339 = getelementptr inbounds %struct.jc_test_fixture, ptr %1337, i32 0, i32 4
  store ptr @.str.3, ptr %1339, align 8, !tbaa !10
  invoke void @_Z28jc_test_increment_assertionsv()
          to label %1340 unwind label %1347

1340:                                             ; preds = %1338
  call void @llvm.lifetime.start.p0(i64 4, ptr %77) #5
  store i32 0, ptr %77, align 4, !tbaa !15
  %1341 = getelementptr inbounds %struct.TestAsyncGetBlockComplete, ptr %73, i32 0, i32 2
  %1342 = 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) %77, ptr noundef nonnull align 4 dereferenceable(4) %1341, ptr noundef @.str.46, ptr noundef @.str.275, ptr noundef null)
          to label %1343 unwind label %1351

1343:                                             ; preds = %1340
  %1344 = icmp eq i32 %1342, 0
  call void @llvm.lifetime.end.p0(i64 4, ptr %77) #5
  br i1 %1344, label %1345, label %1355

1345:                                             ; preds = %1343
  invoke void @_Z21jc_test_set_test_faili(i32 noundef 1)
          to label %1346 unwind label %1347

1346:                                             ; preds = %1345
  store i32 1, ptr %14, align 4
  br label %1370

1347:                                             ; preds = %1362, %1345, %1338, %1332, %1330
  %1348 = landingpad { ptr, i32 }
          cleanup
  %1349 = extractvalue { ptr, i32 } %1348, 0
  store ptr %1349, ptr %9, align 8
  %1350 = extractvalue { ptr, i32 } %1348, 1
  store i32 %1350, ptr %10, align 4
  br label %1397

1351:                                             ; preds = %1340
  %1352 = landingpad { ptr, i32 }
          cleanup
  %1353 = extractvalue { ptr, i32 } %1352, 0
  store ptr %1353, ptr %9, align 8
  %1354 = extractvalue { ptr, i32 } %1352, 1
  store i32 %1354, ptr %10, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %77) #5
  br label %1397

1355:                                             ; preds = %1343
  br label %1356

1356:                                             ; preds = %1355
  br label %1357

1357:                                             ; preds = %1356
  %1358 = load ptr, ptr %76, align 8, !tbaa !5
  %1359 = getelementptr inbounds %struct.Longtail_StoredBlock, ptr %1358, i32 0, i32 0
  %1360 = load ptr, ptr %1359, align 8, !tbaa !24
  %1361 = icmp ne ptr %1360, null
  br i1 %1361, label %1362, label %1369

1362:                                             ; preds = %1357
  %1363 = load ptr, ptr %76, align 8, !tbaa !5
  %1364 = getelementptr inbounds %struct.Longtail_StoredBlock, ptr %1363, i32 0, i32 0
  %1365 = load ptr, ptr %1364, align 8, !tbaa !24
  %1366 = load ptr, ptr %76, align 8, !tbaa !5
  %1367 = invoke noundef i32 %1365(ptr noundef %1366)
          to label %1368 unwind label %1347

1368:                                             ; preds = %1362
  br label %1369

1369:                                             ; preds = %1368, %1357
  store i32 0, ptr %14, align 4
  br label %1370

1370:                                             ; preds = %1369, %1346
  call void @llvm.lifetime.end.p0(i64 8, ptr %76) #5
  br label %1371

1371:                                             ; preds = %1370, %1313
  call void @_ZN25TestAsyncGetBlockCompleteD2Ev(ptr noundef nonnull align 8 dereferenceable(40) %73) #5
  call void @llvm.lifetime.end.p0(i64 40, ptr %73) #5
  %1372 = load i32, ptr %14, align 4
  switch i32 %1372, label %1448 [
    i32 0, label %1373
  ]

1373:                                             ; preds = %1371
  %1374 = load ptr, ptr %7, align 8, !tbaa !5
  %1375 = getelementptr inbounds %struct.Longtail_BlockStoreAPI, ptr %1374, i32 0, i32 6
  %1376 = load ptr, ptr %1375, align 8, !tbaa !31
  %1377 = load ptr, ptr %7, align 8, !tbaa !5
  %1378 = call noundef i32 %1376(ptr noundef %1377, ptr noundef %46)
  %1379 = load ptr, ptr %6, align 8, !tbaa !5
  %1380 = getelementptr inbounds %struct.Longtail_BlockStoreAPI, ptr %1379, i32 0, i32 6
  %1381 = load ptr, ptr %1380, align 8, !tbaa !31
  %1382 = load ptr, ptr %6, align 8, !tbaa !5
  %1383 = call noundef i32 %1381(ptr noundef %1382, ptr noundef %47)
  br label %1384

1384:                                             ; preds = %1373
  %1385 = call noundef ptr @_ZL19jc_test_get_fixturev()
  %1386 = getelementptr inbounds %struct.jc_test_fixture, ptr %1385, i32 0, i32 11
  %1387 = load i32, ptr %1386, align 8
  %1388 = and i32 %1387, -16776961
  %1389 = or i32 %1388, 495872
  store i32 %1389, ptr %1386, align 8
  %1390 = call noundef ptr @_ZL19jc_test_get_fixturev()
  %1391 = getelementptr inbounds %struct.jc_test_fixture, ptr %1390, i32 0, i32 4
  store ptr @.str.3, ptr %1391, align 8, !tbaa !10
  call void @_Z28jc_test_increment_assertionsv()
  call void @llvm.lifetime.start.p0(i64 4, ptr %78) #5
  store i32 13, ptr %78, align 4, !tbaa !15
  %1392 = getelementptr inbounds %struct.Longtail_BlockStore_Stats, ptr %46, i32 0, i32 0
  %1393 = getelementptr inbounds [22 x i64], ptr %1392, i64 0, i64 0
  %1394 = call noundef i32 @_ZN21jc_test_cmp_eq_helperILb0EE7compareIjmEEiRKT_RKT0_PKcS9_(ptr noundef nonnull align 4 dereferenceable(4) %78, ptr noundef nonnull align 8 dereferenceable(8) %1393, ptr noundef @.str.316, ptr noundef @.str.310)
  %1395 = icmp eq i32 %1394, 0
  call void @llvm.lifetime.end.p0(i64 4, ptr %78) #5
  br i1 %1395, label %1396, label %1399

1396:                                             ; preds = %1384
  call void @_Z21jc_test_set_test_faili(i32 noundef 1)
  store i32 1, ptr %14, align 4
  br label %1448

1397:                                             ; preds = %1351, %1347
  call void @llvm.lifetime.end.p0(i64 8, ptr %76) #5
  br label %1398

1398:                                             ; preds = %1397, %1320, %1316
  call void @_ZN25TestAsyncGetBlockCompleteD2Ev(ptr noundef nonnull align 8 dereferenceable(40) %73) #5
  call void @llvm.lifetime.end.p0(i64 40, ptr %73) #5
  br label %1452

1399:                                             ; preds = %1384
  br label %1400

1400:                                             ; preds = %1399
  br label %1401

1401:                                             ; preds = %1400
  br label %1402

1402:                                             ; preds = %1401
  %1403 = call noundef ptr @_ZL19jc_test_get_fixturev()
  %1404 = getelementptr inbounds %struct.jc_test_fixture, ptr %1403, i32 0, i32 11
  %1405 = load i32, ptr %1404, align 8
  %1406 = and i32 %1405, -16776961
  %1407 = or i32 %1406, 496128
  store i32 %1407, ptr %1404, align 8
  %1408 = call noundef ptr @_ZL19jc_test_get_fixturev()
  %1409 = getelementptr inbounds %struct.jc_test_fixture, ptr %1408, i32 0, i32 4
  store ptr @.str.3, ptr %1409, align 8, !tbaa !10
  call void @_Z28jc_test_increment_assertionsv()
  call void @llvm.lifetime.start.p0(i64 4, ptr %79) #5
  store i32 10, ptr %79, align 4, !tbaa !15
  %1410 = getelementptr inbounds %struct.Longtail_BlockStore_Stats, ptr %47, i32 0, i32 0
  %1411 = getelementptr inbounds [22 x i64], ptr %1410, i64 0, i64 0
  %1412 = call noundef i32 @_ZN21jc_test_cmp_eq_helperILb0EE7compareIjmEEiRKT_RKT0_PKcS9_(ptr noundef nonnull align 4 dereferenceable(4) %79, ptr noundef nonnull align 8 dereferenceable(8) %1411, ptr noundef @.str.317, ptr noundef @.str.311)
  %1413 = icmp eq i32 %1412, 0
  call void @llvm.lifetime.end.p0(i64 4, ptr %79) #5
  br i1 %1413, label %1414, label %1415

1414:                                             ; preds = %1402
  call void @_Z21jc_test_set_test_faili(i32 noundef 1)
  store i32 1, ptr %14, align 4
  br label %1448

1415:                                             ; preds = %1402
  br label %1416

1416:                                             ; preds = %1415
  br label %1417

1417:                                             ; preds = %1416
  %1418 = load ptr, ptr %7, align 8, !tbaa !5
  %1419 = icmp ne ptr %1418, null
  br i1 %1419, label %1420, label %1423

1420:                                             ; preds = %1417
  %1421 = load ptr, ptr %7, align 8, !tbaa !5
  %1422 = getelementptr inbounds %struct.Longtail_BlockStoreAPI, ptr %1421, i32 0, i32 0
  call void @Longtail_DisposeAPI(ptr noundef %1422)
  br label %1423

1423:                                             ; preds = %1420, %1417
  %1424 = load ptr, ptr %6, align 8, !tbaa !5
  %1425 = icmp ne ptr %1424, null
  br i1 %1425, label %1426, label %1429

1426:                                             ; preds = %1423
  %1427 = load ptr, ptr %6, align 8, !tbaa !5
  %1428 = getelementptr inbounds %struct.Longtail_BlockStoreAPI, ptr %1427, i32 0, i32 0
  call void @Longtail_DisposeAPI(ptr noundef %1428)
  br label %1429

1429:                                             ; preds = %1426, %1423
  %1430 = load ptr, ptr %5, align 8, !tbaa !5
  %1431 = icmp ne ptr %1430, null
  br i1 %1431, label %1432, label %1435

1432:                                             ; preds = %1429
  %1433 = load ptr, ptr %5, align 8, !tbaa !5
  %1434 = getelementptr inbounds %struct.Longtail_JobAPI, ptr %1433, i32 0, i32 0
  call void @Longtail_DisposeAPI(ptr noundef %1434)
  br label %1435

1435:                                             ; preds = %1432, %1429
  %1436 = load ptr, ptr %4, align 8, !tbaa !5
  %1437 = icmp ne ptr %1436, null
  br i1 %1437, label %1438, label %1441

1438:                                             ; preds = %1435
  %1439 = load ptr, ptr %4, align 8, !tbaa !5
  %1440 = getelementptr inbounds %struct.Longtail_HashAPI, ptr %1439, i32 0, i32 0
  call void @Longtail_DisposeAPI(ptr noundef %1440)
  br label %1441

1441:                                             ; preds = %1438, %1435
  %1442 = load ptr, ptr %3, align 8, !tbaa !5
  %1443 = icmp ne ptr %1442, null
  br i1 %1443, label %1444, label %1447

1444:                                             ; preds = %1441
  %1445 = load ptr, ptr %3, align 8, !tbaa !5
  %1446 = getelementptr inbounds %struct.Longtail_StorageAPI, ptr %1445, i32 0, i32 0
  call void @Longtail_DisposeAPI(ptr noundef %1446)
  br label %1447

1447:                                             ; preds = %1444, %1441
  store i32 0, ptr %14, align 4
  br label %1448

1448:                                             ; preds = %1447, %1414, %1396, %1371, %1286, %1201, %1116, %1031, %946, %862, %846
  call void @llvm.lifetime.end.p0(i64 176, ptr %47) #5
  call void @llvm.lifetime.end.p0(i64 176, ptr %46) #5
  br label %1449

1449:                                             ; preds = %1448, %821, %722, %631, %540, %449, %358, %267, %176
  call void @llvm.lifetime.end.p0(i64 56, ptr %8) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %7) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %6) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %5) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %4) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %3) #5
  %1450 = load i32, ptr %14, align 4
  switch i32 %1450, label %1459 [
    i32 0, label %1451
    i32 1, label %1451
  ]

1451:                                             ; preds = %1449, %1449
  ret void

1452:                                             ; preds = %1398, %1315, %1230, %1145, %1060, %975
  call void @llvm.lifetime.end.p0(i64 176, ptr %47) #5
  call void @llvm.lifetime.end.p0(i64 176, ptr %46) #5
  br label %1453

1453:                                             ; preds = %1452, %820, %729, %669, %668, %578, %577, %487, %486, %396, %395, %305, %304, %214, %213, %123
  call void @llvm.lifetime.end.p0(i64 56, ptr %8) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %7) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %6) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %5) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %4) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %3) #5
  br label %1454

1454:                                             ; preds = %1453
  %1455 = load ptr, ptr %9, align 8
  %1456 = load i32, ptr %10, align 4
  %1457 = insertvalue { ptr, i32 } poison, ptr %1455, 0
  %1458 = insertvalue { ptr, i32 } %1457, i32 %1456, 1
  resume { ptr, i32 } %1458

1459:                                             ; preds = %1449
  unreachable
}

declare ptr @Longtail_CreateLRUBlockStoreAPI(ptr noundef, i32 noundef) #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

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 24}
!26 = !{!27, !6, i64 32}
!27 = !{!"_ZTS25TestAsyncGetBlockComplete", !28, i64 0, !6, i64 16, !13, i64 24, !6, i64 32}
!28 = !{!"_ZTS31Longtail_AsyncGetStoredBlockAPI", !18, i64 0, !6, i64 8}
!29 = distinct !{!29, !30}
!30 = !{!"llvm.loop.mustprogress"}
!31 = !{!17, !6, i64 48}


; 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.TestAsyncGetBlockComplete = type { %struct.Longtail_AsyncGetStoredBlockAPI, ptr, i32, ptr }
%struct.Longtail_AsyncGetStoredBlockAPI = type { %struct.Longtail_API, ptr }
%struct.Longtail_BlockStore_Stats = type { [22 x i64] }

@.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.270 = external hidden unnamed_addr constant [7 x i8], align 1
@.str.273 = external hidden unnamed_addr constant [12 x i8], align 1
@.str.275 = external hidden unnamed_addr constant [13 x i8], align 1
@_ZZN45Longtail_Longtail_TestLRUBlockStore__TestCase8TestBodyEvE11BLOCK_COUNT = external hidden constant i32, align 4
@_ZZN45Longtail_Longtail_TestLRUBlockStore__TestCase8TestBodyEvE17BLOCK_CHUNK_SIZES = external hidden constant [2 x i32], align 4
@_ZZN45Longtail_Longtail_TestLRUBlockStore__TestCase8TestBodyEvE5block = external hidden local_unnamed_addr global ptr, align 8
@_ZGVZN45Longtail_Longtail_TestLRUBlockStore__TestCase8TestBodyEvE5block = external hidden global i64, align 8
@.str.307 = external hidden unnamed_addr constant [78 x i8], align 1
@_ZZN45Longtail_Longtail_TestLRUBlockStore__TestCase8TestBodyEvE17BLOCK_CHUNK_SIZES_0 = external hidden constant [1 x i32], align 4
@_ZZN45Longtail_Longtail_TestLRUBlockStore__TestCase8TestBodyEvE5block_0 = external hidden local_unnamed_addr global ptr, align 8
@_ZGVZN45Longtail_Longtail_TestLRUBlockStore__TestCase8TestBodyEvE5block_0 = external hidden global i64, align 8
@_ZZN45Longtail_Longtail_TestLRUBlockStore__TestCase8TestBodyEvE17BLOCK_CHUNK_SIZES_1 = external hidden constant [3 x i32], align 4
@_ZZN45Longtail_Longtail_TestLRUBlockStore__TestCase8TestBodyEvE5block_1 = external hidden local_unnamed_addr global ptr, align 8
@_ZGVZN45Longtail_Longtail_TestLRUBlockStore__TestCase8TestBodyEvE5block_1 = external hidden global i64, align 8
@_ZZN45Longtail_Longtail_TestLRUBlockStore__TestCase8TestBodyEvE17BLOCK_CHUNK_SIZES_2 = external hidden constant [3 x i32], align 4
@_ZZN45Longtail_Longtail_TestLRUBlockStore__TestCase8TestBodyEvE5block_2 = external hidden local_unnamed_addr global ptr, align 8
@_ZGVZN45Longtail_Longtail_TestLRUBlockStore__TestCase8TestBodyEvE5block_2 = external hidden global i64, align 8
@_ZZN45Longtail_Longtail_TestLRUBlockStore__TestCase8TestBodyEvE17BLOCK_CHUNK_SIZES_3 = external hidden constant [1 x i32], align 4
@_ZZN45Longtail_Longtail_TestLRUBlockStore__TestCase8TestBodyEvE5block_3 = external hidden local_unnamed_addr global ptr, align 8
@_ZGVZN45Longtail_Longtail_TestLRUBlockStore__TestCase8TestBodyEvE5block_3 = external hidden global i64, align 8
@_ZZN45Longtail_Longtail_TestLRUBlockStore__TestCase8TestBodyEvE17BLOCK_CHUNK_SIZES_4 = external hidden constant [2 x i32], align 4
@_ZZN45Longtail_Longtail_TestLRUBlockStore__TestCase8TestBodyEvE5block_4 = external hidden local_unnamed_addr global ptr, align 8
@_ZGVZN45Longtail_Longtail_TestLRUBlockStore__TestCase8TestBodyEvE5block_4 = external hidden global i64, align 8
@_ZZN45Longtail_Longtail_TestLRUBlockStore__TestCase8TestBodyEvE17BLOCK_CHUNK_SIZES_5 = external hidden constant [4 x i32], align 16
@_ZZN45Longtail_Longtail_TestLRUBlockStore__TestCase8TestBodyEvE5block_5 = external hidden local_unnamed_addr global ptr, align 8
@_ZGVZN45Longtail_Longtail_TestLRUBlockStore__TestCase8TestBodyEvE5block_5 = external hidden global i64, align 8
@.str.308 = external hidden unnamed_addr constant [89 x i8], align 1
@.str.309 = external hidden unnamed_addr constant [12 x i8], align 1
@.str.310 = external hidden unnamed_addr constant [73 x i8], align 1
@.str.311 = external hidden unnamed_addr constant [75 x i8], align 1
@.str.312 = external hidden unnamed_addr constant [89 x i8], align 1
@.str.313 = external hidden unnamed_addr constant [89 x i8], align 1
@.str.314 = external hidden unnamed_addr constant [89 x i8], align 1
@.str.315 = external hidden unnamed_addr constant [89 x i8], align 1
@.str.316 = external hidden unnamed_addr constant [16 x i8], align 1
@.str.317 = external hidden unnamed_addr constant [16 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_helperILb0EE7compareIjmEEiRKT_RKT0_PKcS9_(ptr noundef nonnull align 4 dereferenceable(4), ptr noundef nonnull align 8 dereferenceable(8), 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 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: mustprogress uwtable
define dso_local void @_ZN45Longtail_Longtail_TestLRUBlockStore__TestCase8TestBodyEv(ptr nocapture noundef nonnull readnone align 8 dereferenceable(8) %0) unnamed_addr #3 align 2 personality ptr @__gxx_personality_v0 {
  %2 = alloca [7 x i64], align 16
  %3 = alloca %struct.TestAsyncPutBlockComplete, align 8
  %4 = alloca i32, align 4
  %5 = alloca i32, align 4
  %6 = alloca i32, align 4
  %7 = alloca %struct.TestAsyncPutBlockComplete, align 8
  %8 = alloca i32, align 4
  %9 = alloca i32, align 4
  %10 = alloca i32, align 4
  %11 = alloca %struct.TestAsyncPutBlockComplete, align 8
  %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 %struct.TestAsyncPutBlockComplete, align 8
  %24 = alloca i32, align 4
  %25 = alloca i32, align 4
  %26 = alloca i32, align 4
  %27 = alloca %struct.TestAsyncPutBlockComplete, align 8
  %28 = alloca i32, align 4
  %29 = alloca i32, align 4
  %30 = alloca i32, align 4
  %31 = alloca %struct.TestAsyncGetBlockComplete, align 8
  %32 = alloca i32, align 4
  %33 = alloca i32, align 4
  %34 = alloca i32, align 4
  %35 = alloca %struct.Longtail_BlockStore_Stats, align 8
  %36 = alloca %struct.Longtail_BlockStore_Stats, align 8
  %37 = alloca %struct.TestAsyncGetBlockComplete, align 8
  %38 = alloca i32, align 4
  %39 = alloca i32, align 4
  %40 = alloca i32, align 4
  %41 = alloca %struct.TestAsyncGetBlockComplete, align 8
  %42 = alloca i32, align 4
  %43 = alloca i32, align 4
  %44 = alloca i32, align 4
  %45 = alloca %struct.TestAsyncGetBlockComplete, align 8
  %46 = alloca i32, align 4
  %47 = alloca i32, align 4
  %48 = alloca i32, align 4
  %49 = alloca %struct.TestAsyncGetBlockComplete, align 8
  %50 = alloca i32, align 4
  %51 = alloca i32, align 4
  %52 = alloca i32, align 4
  %53 = alloca %struct.TestAsyncGetBlockComplete, align 8
  %54 = alloca i32, align 4
  %55 = alloca i32, align 4
  %56 = alloca i32, align 4
  %57 = alloca %struct.TestAsyncGetBlockComplete, align 8
  %58 = alloca i32, align 4
  %59 = alloca i32, align 4
  %60 = alloca i32, align 4
  %61 = alloca i32, align 4
  %62 = alloca i32, align 4
  %63 = tail call ptr @Longtail_CreateInMemStorageAPI()
  %64 = tail call ptr @Longtail_CreateBlake3HashAPI()
  %65 = tail call ptr @Longtail_CreateBikeshedJobAPI(i32 noundef 0, i32 noundef 0)
  %66 = tail call ptr @Longtail_CreateFSBlockStoreAPI(ptr noundef %65, ptr noundef %63, ptr noundef nonnull @.str.270, ptr noundef null, i32 noundef 0)
  %67 = tail call ptr @Longtail_CreateLRUBlockStoreAPI(ptr noundef %66, i32 noundef 3)
  call void @llvm.lifetime.start.p0(i64 56, ptr nonnull %2) #6
  %68 = load atomic i8, ptr @_ZGVZN45Longtail_Longtail_TestLRUBlockStore__TestCase8TestBodyEvE5block acquire, align 8
  %69 = icmp eq i8 %68, 0
  br i1 %69, label %70, label %75, !prof !5

70:                                               ; preds = %1
  %71 = tail call i32 @__cxa_guard_acquire(ptr nonnull @_ZGVZN45Longtail_Longtail_TestLRUBlockStore__TestCase8TestBodyEvE5block) #6
  %.not = icmp eq i32 %71, 0
  br i1 %.not, label %75, label %72

72:                                               ; preds = %70
  %73 = invoke noundef ptr @_ZL19GenerateStoredBlockP16Longtail_HashAPIjPKj(ptr noundef %64, i32 noundef 2, ptr noundef nonnull @_ZZN45Longtail_Longtail_TestLRUBlockStore__TestCase8TestBodyEvE17BLOCK_CHUNK_SIZES)
          to label %74 unwind label %94

74:                                               ; preds = %72
  store ptr %73, ptr @_ZZN45Longtail_Longtail_TestLRUBlockStore__TestCase8TestBodyEvE5block, align 8, !tbaa !6
  tail call void @__cxa_guard_release(ptr nonnull @_ZGVZN45Longtail_Longtail_TestLRUBlockStore__TestCase8TestBodyEvE5block) #6
  br label %75

75:                                               ; preds = %74, %70, %1
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %3) #6
  call void @_ZN25TestAsyncPutBlockCompleteC2Ev(ptr noundef nonnull align 8 dereferenceable(28) %3)
  %76 = invoke noundef ptr @_ZL19jc_test_get_fixturev()
          to label %77 unwind label %96

77:                                               ; preds = %75
  %78 = getelementptr inbounds i8, ptr %76, i64 96
  %79 = load i32, ptr %78, align 8
  %80 = and i32 %79, -16776961
  %81 = or disjoint i32 %80, 452864
  store i32 %81, ptr %78, align 8
  %82 = invoke noundef ptr @_ZL19jc_test_get_fixturev()
          to label %83 unwind label %96

83:                                               ; preds = %77
  %84 = getelementptr inbounds i8, ptr %82, i64 32
  store ptr @.str.3, ptr %84, align 8, !tbaa !10
  invoke void @_Z28jc_test_increment_assertionsv()
          to label %85 unwind label %96

85:                                               ; preds = %83
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %4) #6
  store i32 0, ptr %4, align 4, !tbaa !15
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %5) #6
  %86 = getelementptr inbounds i8, ptr %67, i64 8
  %87 = load ptr, ptr %86, align 8, !tbaa !16
  %88 = load ptr, ptr @_ZZN45Longtail_Longtail_TestLRUBlockStore__TestCase8TestBodyEvE5block, align 8, !tbaa !6
  %89 = invoke noundef i32 %87(ptr noundef nonnull %67, ptr noundef %88, ptr noundef nonnull %3)
          to label %90 unwind label %98

90:                                               ; preds = %85
  store i32 %89, ptr %5, align 4, !tbaa !15
  %91 = invoke noundef i32 @_ZN21jc_test_cmp_eq_helperILb1EE7compareIiiEEiRKT_RKT0_PKcS9_PN23jc_test_enable_argumentIXntsr18jc_test_is_pointerIS5_EE5valueEE4typeE(ptr noundef nonnull align 4 dereferenceable(4) %4, ptr noundef nonnull align 4 dereferenceable(4) %5, ptr noundef nonnull @.str.46, ptr noundef nonnull @.str.307, ptr noundef null)
          to label %92 unwind label %98

92:                                               ; preds = %90
  %93 = icmp eq i32 %91, 0
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %5) #6
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %4) #6
  br i1 %93, label %.invoke, label %100

94:                                               ; preds = %72
  %95 = landingpad { ptr, i32 }
          cleanup
  tail call void @__cxa_guard_abort(ptr nonnull @_ZGVZN45Longtail_Longtail_TestLRUBlockStore__TestCase8TestBodyEvE5block) #6
  br label %909

96:                                               ; preds = %.invoke, %118, %109, %103, %101, %100, %83, %77, %75
  %97 = landingpad { ptr, i32 }
          cleanup
  br label %152

98:                                               ; preds = %90, %85
  %99 = landingpad { ptr, i32 }
          cleanup
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %5) #6
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %4) #6
  br label %152

100:                                              ; preds = %92
  invoke void @_ZN25TestAsyncPutBlockComplete4WaitEv(ptr noundef nonnull align 8 dereferenceable(28) %3)
          to label %101 unwind label %96

101:                                              ; preds = %100
  %102 = invoke noundef ptr @_ZL19jc_test_get_fixturev()
          to label %103 unwind label %96

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, 453376
  store i32 %107, ptr %104, align 8
  %108 = invoke noundef ptr @_ZL19jc_test_get_fixturev()
          to label %109 unwind label %96

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 %96

111:                                              ; preds = %109
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %6) #6
  store i32 0, ptr %6, align 4, !tbaa !15
  %112 = getelementptr inbounds i8, ptr %3, i64 24
  %113 = invoke noundef i32 @_ZN21jc_test_cmp_eq_helperILb1EE7compareIiiEEiRKT_RKT0_PKcS9_PN23jc_test_enable_argumentIXntsr18jc_test_is_pointerIS5_EE5valueEE4typeE(ptr noundef nonnull align 4 dereferenceable(4) %6, ptr noundef nonnull align 4 dereferenceable(4) %112, ptr noundef nonnull @.str.46, ptr noundef nonnull @.str.273, ptr noundef null)
          to label %114 unwind label %116

114:                                              ; preds = %111
  %115 = icmp eq i32 %113, 0
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %6) #6
  br i1 %115, label %.invoke, label %118

.invoke:                                          ; preds = %92, %114
  invoke void @_Z21jc_test_set_test_faili(i32 noundef 1)
          to label %.critedge unwind label %96

116:                                              ; preds = %111
  %117 = landingpad { ptr, i32 }
          cleanup
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %6) #6
  br label %152

118:                                              ; preds = %114
  %119 = load ptr, ptr @_ZZN45Longtail_Longtail_TestLRUBlockStore__TestCase8TestBodyEvE5block, align 8, !tbaa !6
  %120 = getelementptr inbounds i8, ptr %119, i64 8
  %121 = load ptr, ptr %120, align 8, !tbaa !19
  %122 = load ptr, ptr %121, align 8, !tbaa !21
  %123 = load i64, ptr %122, align 8, !tbaa !23
  store i64 %123, ptr %2, align 16, !tbaa !23
  %124 = load ptr, ptr %119, align 8, !tbaa !24
  %125 = invoke noundef i32 %124(ptr noundef nonnull %119)
          to label %126 unwind label %96

126:                                              ; preds = %118
  call void @_ZN25TestAsyncPutBlockCompleteD2Ev(ptr noundef nonnull align 8 dereferenceable(28) %3) #6
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %3) #6
  %127 = load atomic i8, ptr @_ZGVZN45Longtail_Longtail_TestLRUBlockStore__TestCase8TestBodyEvE5block_0 acquire, align 8
  %128 = icmp eq i8 %127, 0
  br i1 %128, label %129, label %134, !prof !5

129:                                              ; preds = %126
  %130 = call i32 @__cxa_guard_acquire(ptr nonnull @_ZGVZN45Longtail_Longtail_TestLRUBlockStore__TestCase8TestBodyEvE5block_0) #6
  %.not170 = icmp eq i32 %130, 0
  br i1 %.not170, label %134, label %131

131:                                              ; preds = %129
  %132 = invoke noundef ptr @_ZL19GenerateStoredBlockP16Longtail_HashAPIjPKj(ptr noundef %64, i32 noundef 1, ptr noundef nonnull @_ZZN45Longtail_Longtail_TestLRUBlockStore__TestCase8TestBodyEvE17BLOCK_CHUNK_SIZES_0)
          to label %133 unwind label %153

133:                                              ; preds = %131
  store ptr %132, ptr @_ZZN45Longtail_Longtail_TestLRUBlockStore__TestCase8TestBodyEvE5block_0, align 8, !tbaa !6
  call void @__cxa_guard_release(ptr nonnull @_ZGVZN45Longtail_Longtail_TestLRUBlockStore__TestCase8TestBodyEvE5block_0) #6
  br label %134

134:                                              ; preds = %133, %129, %126
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %7) #6
  call void @_ZN25TestAsyncPutBlockCompleteC2Ev(ptr noundef nonnull align 8 dereferenceable(28) %7)
  %135 = invoke noundef ptr @_ZL19jc_test_get_fixturev()
          to label %136 unwind label %155

136:                                              ; preds = %134
  %137 = getelementptr inbounds i8, ptr %135, i64 96
  %138 = load i32, ptr %137, align 8
  %139 = and i32 %138, -16776961
  %140 = or disjoint i32 %139, 455936
  store i32 %140, ptr %137, align 8
  %141 = invoke noundef ptr @_ZL19jc_test_get_fixturev()
          to label %142 unwind label %155

142:                                              ; preds = %136
  %143 = getelementptr inbounds i8, ptr %141, i64 32
  store ptr @.str.3, ptr %143, align 8, !tbaa !10
  invoke void @_Z28jc_test_increment_assertionsv()
          to label %144 unwind label %155

144:                                              ; preds = %142
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %8) #6
  store i32 0, ptr %8, align 4, !tbaa !15
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %9) #6
  %145 = load ptr, ptr %86, align 8, !tbaa !16
  %146 = load ptr, ptr @_ZZN45Longtail_Longtail_TestLRUBlockStore__TestCase8TestBodyEvE5block_0, align 8, !tbaa !6
  %147 = invoke noundef i32 %145(ptr noundef nonnull %67, ptr noundef %146, ptr noundef nonnull %7)
          to label %148 unwind label %157

148:                                              ; preds = %144
  store i32 %147, ptr %9, align 4, !tbaa !15
  %149 = 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) %8, ptr noundef nonnull align 4 dereferenceable(4) %9, ptr noundef nonnull @.str.46, ptr noundef nonnull @.str.307, ptr noundef null)
          to label %150 unwind label %157

150:                                              ; preds = %148
  %151 = icmp eq i32 %149, 0
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %9) #6
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %8) #6
  br i1 %151, label %.invoke278, label %159

152:                                              ; preds = %116, %98, %96
  %.pn = phi { ptr, i32 } [ %97, %96 ], [ %117, %116 ], [ %99, %98 ]
  call void @_ZN25TestAsyncPutBlockCompleteD2Ev(ptr noundef nonnull align 8 dereferenceable(28) %3) #6
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %3) #6
  br label %909

153:                                              ; preds = %131
  %154 = landingpad { ptr, i32 }
          cleanup
  call void @__cxa_guard_abort(ptr nonnull @_ZGVZN45Longtail_Longtail_TestLRUBlockStore__TestCase8TestBodyEvE5block_0) #6
  br label %909

155:                                              ; preds = %.invoke278, %177, %168, %162, %160, %159, %142, %136, %134
  %156 = landingpad { ptr, i32 }
          cleanup
  br label %212

157:                                              ; preds = %148, %144
  %158 = landingpad { ptr, i32 }
          cleanup
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %9) #6
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %8) #6
  br label %212

159:                                              ; preds = %150
  invoke void @_ZN25TestAsyncPutBlockComplete4WaitEv(ptr noundef nonnull align 8 dereferenceable(28) %7)
          to label %160 unwind label %155

160:                                              ; preds = %159
  %161 = invoke noundef ptr @_ZL19jc_test_get_fixturev()
          to label %162 unwind label %155

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, 456448
  store i32 %166, ptr %163, align 8
  %167 = invoke noundef ptr @_ZL19jc_test_get_fixturev()
          to label %168 unwind label %155

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 %155

170:                                              ; preds = %168
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %10) #6
  store i32 0, ptr %10, align 4, !tbaa !15
  %171 = getelementptr inbounds i8, ptr %7, i64 24
  %172 = 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) %10, ptr noundef nonnull align 4 dereferenceable(4) %171, ptr noundef nonnull @.str.46, ptr noundef nonnull @.str.273, ptr noundef null)
          to label %173 unwind label %175

173:                                              ; preds = %170
  %174 = icmp eq i32 %172, 0
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %10) #6
  br i1 %174, label %.invoke278, label %177

.invoke278:                                       ; preds = %150, %173
  invoke void @_Z21jc_test_set_test_faili(i32 noundef 1)
          to label %.critedge231 unwind label %155

175:                                              ; preds = %170
  %176 = landingpad { ptr, i32 }
          cleanup
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %10) #6
  br label %212

177:                                              ; preds = %173
  %178 = load ptr, ptr @_ZZN45Longtail_Longtail_TestLRUBlockStore__TestCase8TestBodyEvE5block_0, align 8, !tbaa !6
  %179 = getelementptr inbounds i8, ptr %178, i64 8
  %180 = load ptr, ptr %179, align 8, !tbaa !19
  %181 = load ptr, ptr %180, align 8, !tbaa !21
  %182 = load i64, ptr %181, align 8, !tbaa !23
  %183 = getelementptr inbounds i8, ptr %2, i64 8
  store i64 %182, ptr %183, align 8, !tbaa !23
  %184 = load ptr, ptr %178, align 8, !tbaa !24
  %185 = invoke noundef i32 %184(ptr noundef nonnull %178)
          to label %186 unwind label %155

186:                                              ; preds = %177
  call void @_ZN25TestAsyncPutBlockCompleteD2Ev(ptr noundef nonnull align 8 dereferenceable(28) %7) #6
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %7) #6
  %187 = load atomic i8, ptr @_ZGVZN45Longtail_Longtail_TestLRUBlockStore__TestCase8TestBodyEvE5block_1 acquire, align 8
  %188 = icmp eq i8 %187, 0
  br i1 %188, label %189, label %194, !prof !5

189:                                              ; preds = %186
  %190 = call i32 @__cxa_guard_acquire(ptr nonnull @_ZGVZN45Longtail_Longtail_TestLRUBlockStore__TestCase8TestBodyEvE5block_1) #6
  %.not173 = icmp eq i32 %190, 0
  br i1 %.not173, label %194, label %191

191:                                              ; preds = %189
  %192 = invoke noundef ptr @_ZL19GenerateStoredBlockP16Longtail_HashAPIjPKj(ptr noundef %64, i32 noundef 3, ptr noundef nonnull @_ZZN45Longtail_Longtail_TestLRUBlockStore__TestCase8TestBodyEvE17BLOCK_CHUNK_SIZES_1)
          to label %193 unwind label %213

193:                                              ; preds = %191
  store ptr %192, ptr @_ZZN45Longtail_Longtail_TestLRUBlockStore__TestCase8TestBodyEvE5block_1, align 8, !tbaa !6
  call void @__cxa_guard_release(ptr nonnull @_ZGVZN45Longtail_Longtail_TestLRUBlockStore__TestCase8TestBodyEvE5block_1) #6
  br label %194

194:                                              ; preds = %193, %189, %186
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %11) #6
  call void @_ZN25TestAsyncPutBlockCompleteC2Ev(ptr noundef nonnull align 8 dereferenceable(28) %11)
  %195 = invoke noundef ptr @_ZL19jc_test_get_fixturev()
          to label %196 unwind label %215

196:                                              ; preds = %194
  %197 = getelementptr inbounds i8, ptr %195, i64 96
  %198 = load i32, ptr %197, align 8
  %199 = and i32 %198, -16776961
  %200 = or disjoint i32 %199, 459008
  store i32 %200, ptr %197, align 8
  %201 = invoke noundef ptr @_ZL19jc_test_get_fixturev()
          to label %202 unwind label %215

202:                                              ; preds = %196
  %203 = getelementptr inbounds i8, ptr %201, i64 32
  store ptr @.str.3, ptr %203, align 8, !tbaa !10
  invoke void @_Z28jc_test_increment_assertionsv()
          to label %204 unwind label %215

204:                                              ; preds = %202
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %12) #6
  store i32 0, ptr %12, align 4, !tbaa !15
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %13) #6
  %205 = load ptr, ptr %86, align 8, !tbaa !16
  %206 = load ptr, ptr @_ZZN45Longtail_Longtail_TestLRUBlockStore__TestCase8TestBodyEvE5block_1, align 8, !tbaa !6
  %207 = invoke noundef i32 %205(ptr noundef nonnull %67, ptr noundef %206, ptr noundef nonnull %11)
          to label %208 unwind label %217

208:                                              ; preds = %204
  store i32 %207, ptr %13, align 4, !tbaa !15
  %209 = 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) %12, ptr noundef nonnull align 4 dereferenceable(4) %13, ptr noundef nonnull @.str.46, ptr noundef nonnull @.str.307, ptr noundef null)
          to label %210 unwind label %217

210:                                              ; preds = %208
  %211 = icmp eq i32 %209, 0
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %13) #6
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %12) #6
  br i1 %211, label %.invoke279, label %219

212:                                              ; preds = %175, %157, %155
  %.pn171 = phi { ptr, i32 } [ %156, %155 ], [ %176, %175 ], [ %158, %157 ]
  call void @_ZN25TestAsyncPutBlockCompleteD2Ev(ptr noundef nonnull align 8 dereferenceable(28) %7) #6
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %7) #6
  br label %909

213:                                              ; preds = %191
  %214 = landingpad { ptr, i32 }
          cleanup
  call void @__cxa_guard_abort(ptr nonnull @_ZGVZN45Longtail_Longtail_TestLRUBlockStore__TestCase8TestBodyEvE5block_1) #6
  br label %909

215:                                              ; preds = %.invoke279, %237, %228, %222, %220, %219, %202, %196, %194
  %216 = landingpad { ptr, i32 }
          cleanup
  br label %272

217:                                              ; preds = %208, %204
  %218 = landingpad { ptr, i32 }
          cleanup
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %13) #6
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %12) #6
  br label %272

219:                                              ; preds = %210
  invoke void @_ZN25TestAsyncPutBlockComplete4WaitEv(ptr noundef nonnull align 8 dereferenceable(28) %11)
          to label %220 unwind label %215

220:                                              ; preds = %219
  %221 = invoke noundef ptr @_ZL19jc_test_get_fixturev()
          to label %222 unwind label %215

222:                                              ; preds = %220
  %223 = getelementptr inbounds i8, ptr %221, i64 96
  %224 = load i32, ptr %223, align 8
  %225 = and i32 %224, -16776961
  %226 = or disjoint i32 %225, 459520
  store i32 %226, ptr %223, align 8
  %227 = invoke noundef ptr @_ZL19jc_test_get_fixturev()
          to label %228 unwind label %215

228:                                              ; preds = %222
  %229 = getelementptr inbounds i8, ptr %227, i64 32
  store ptr @.str.3, ptr %229, align 8, !tbaa !10
  invoke void @_Z28jc_test_increment_assertionsv()
          to label %230 unwind label %215

230:                                              ; preds = %228
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %14) #6
  store i32 0, ptr %14, align 4, !tbaa !15
  %231 = getelementptr inbounds i8, ptr %11, i64 24
  %232 = 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) %231, ptr noundef nonnull @.str.46, ptr noundef nonnull @.str.273, ptr noundef null)
          to label %233 unwind label %235

233:                                              ; preds = %230
  %234 = icmp eq i32 %232, 0
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %14) #6
  br i1 %234, label %.invoke279, label %237

.invoke279:                                       ; preds = %210, %233
  invoke void @_Z21jc_test_set_test_faili(i32 noundef 1)
          to label %.critedge233 unwind label %215

235:                                              ; preds = %230
  %236 = landingpad { ptr, i32 }
          cleanup
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %14) #6
  br label %272

237:                                              ; preds = %233
  %238 = load ptr, ptr @_ZZN45Longtail_Longtail_TestLRUBlockStore__TestCase8TestBodyEvE5block_1, align 8, !tbaa !6
  %239 = getelementptr inbounds i8, ptr %238, i64 8
  %240 = load ptr, ptr %239, align 8, !tbaa !19
  %241 = load ptr, ptr %240, align 8, !tbaa !21
  %242 = load i64, ptr %241, align 8, !tbaa !23
  %243 = getelementptr inbounds i8, ptr %2, i64 16
  store i64 %242, ptr %243, align 16, !tbaa !23
  %244 = load ptr, ptr %238, align 8, !tbaa !24
  %245 = invoke noundef i32 %244(ptr noundef nonnull %238)
          to label %246 unwind label %215

246:                                              ; preds = %237
  call void @_ZN25TestAsyncPutBlockCompleteD2Ev(ptr noundef nonnull align 8 dereferenceable(28) %11) #6
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %11) #6
  %247 = load atomic i8, ptr @_ZGVZN45Longtail_Longtail_TestLRUBlockStore__TestCase8TestBodyEvE5block_2 acquire, align 8
  %248 = icmp eq i8 %247, 0
  br i1 %248, label %249, label %254, !prof !5

249:                                              ; preds = %246
  %250 = call i32 @__cxa_guard_acquire(ptr nonnull @_ZGVZN45Longtail_Longtail_TestLRUBlockStore__TestCase8TestBodyEvE5block_2) #6
  %.not176 = icmp eq i32 %250, 0
  br i1 %.not176, label %254, label %251

251:                                              ; preds = %249
  %252 = invoke noundef ptr @_ZL19GenerateStoredBlockP16Longtail_HashAPIjPKj(ptr noundef %64, i32 noundef 3, ptr noundef nonnull @_ZZN45Longtail_Longtail_TestLRUBlockStore__TestCase8TestBodyEvE17BLOCK_CHUNK_SIZES_2)
          to label %253 unwind label %273

253:                                              ; preds = %251
  store ptr %252, ptr @_ZZN45Longtail_Longtail_TestLRUBlockStore__TestCase8TestBodyEvE5block_2, align 8, !tbaa !6
  call void @__cxa_guard_release(ptr nonnull @_ZGVZN45Longtail_Longtail_TestLRUBlockStore__TestCase8TestBodyEvE5block_2) #6
  br label %254

254:                                              ; preds = %253, %249, %246
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %15) #6
  call void @_ZN25TestAsyncPutBlockCompleteC2Ev(ptr noundef nonnull align 8 dereferenceable(28) %15)
  %255 = invoke noundef ptr @_ZL19jc_test_get_fixturev()
          to label %256 unwind label %275

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

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

264:                                              ; preds = %262
  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
  %265 = load ptr, ptr %86, align 8, !tbaa !16
  %266 = load ptr, ptr @_ZZN45Longtail_Longtail_TestLRUBlockStore__TestCase8TestBodyEvE5block_2, align 8, !tbaa !6
  %267 = invoke noundef i32 %265(ptr noundef nonnull %67, ptr noundef %266, ptr noundef nonnull %15)
          to label %268 unwind label %277

268:                                              ; preds = %264
  store i32 %267, ptr %17, align 4, !tbaa !15
  %269 = 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.307, ptr noundef null)
          to label %270 unwind label %277

270:                                              ; preds = %268
  %271 = icmp eq i32 %269, 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 %271, label %.invoke280, label %279

272:                                              ; preds = %235, %217, %215
  %.pn174 = phi { ptr, i32 } [ %216, %215 ], [ %236, %235 ], [ %218, %217 ]
  call void @_ZN25TestAsyncPutBlockCompleteD2Ev(ptr noundef nonnull align 8 dereferenceable(28) %11) #6
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %11) #6
  br label %909

273:                                              ; preds = %251
  %274 = landingpad { ptr, i32 }
          cleanup
  call void @__cxa_guard_abort(ptr nonnull @_ZGVZN45Longtail_Longtail_TestLRUBlockStore__TestCase8TestBodyEvE5block_2) #6
  br label %909

275:                                              ; preds = %.invoke280, %297, %288, %282, %280, %279, %262, %256, %254
  %276 = landingpad { ptr, i32 }
          cleanup
  br label %332

277:                                              ; preds = %268, %264
  %278 = 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 %332

279:                                              ; preds = %270
  invoke void @_ZN25TestAsyncPutBlockComplete4WaitEv(ptr noundef nonnull align 8 dereferenceable(28) %15)
          to label %280 unwind label %275

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

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

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

290:                                              ; preds = %288
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %18) #6
  store i32 0, ptr %18, align 4, !tbaa !15
  %291 = getelementptr inbounds i8, ptr %15, i64 24
  %292 = 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) %291, ptr noundef nonnull @.str.46, ptr noundef nonnull @.str.273, ptr noundef null)
          to label %293 unwind label %295

293:                                              ; preds = %290
  %294 = icmp eq i32 %292, 0
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %18) #6
  br i1 %294, label %.invoke280, label %297

.invoke280:                                       ; preds = %270, %293
  invoke void @_Z21jc_test_set_test_faili(i32 noundef 1)
          to label %.critedge235 unwind label %275

295:                                              ; preds = %290
  %296 = landingpad { ptr, i32 }
          cleanup
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %18) #6
  br label %332

297:                                              ; preds = %293
  %298 = load ptr, ptr @_ZZN45Longtail_Longtail_TestLRUBlockStore__TestCase8TestBodyEvE5block_2, align 8, !tbaa !6
  %299 = getelementptr inbounds i8, ptr %298, i64 8
  %300 = load ptr, ptr %299, align 8, !tbaa !19
  %301 = load ptr, ptr %300, align 8, !tbaa !21
  %302 = load i64, ptr %301, align 8, !tbaa !23
  %303 = getelementptr inbounds i8, ptr %2, i64 24
  store i64 %302, ptr %303, align 8, !tbaa !23
  %304 = load ptr, ptr %298, align 8, !tbaa !24
  %305 = invoke noundef i32 %304(ptr noundef nonnull %298)
          to label %306 unwind label %275

306:                                              ; preds = %297
  call void @_ZN25TestAsyncPutBlockCompleteD2Ev(ptr noundef nonnull align 8 dereferenceable(28) %15) #6
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %15) #6
  %307 = load atomic i8, ptr @_ZGVZN45Longtail_Longtail_TestLRUBlockStore__TestCase8TestBodyEvE5block_3 acquire, align 8
  %308 = icmp eq i8 %307, 0
  br i1 %308, label %309, label %314, !prof !5

309:                                              ; preds = %306
  %310 = call i32 @__cxa_guard_acquire(ptr nonnull @_ZGVZN45Longtail_Longtail_TestLRUBlockStore__TestCase8TestBodyEvE5block_3) #6
  %.not179 = icmp eq i32 %310, 0
  br i1 %.not179, label %314, label %311

311:                                              ; preds = %309
  %312 = invoke noundef ptr @_ZL19GenerateStoredBlockP16Longtail_HashAPIjPKj(ptr noundef %64, i32 noundef 1, ptr noundef nonnull @_ZZN45Longtail_Longtail_TestLRUBlockStore__TestCase8TestBodyEvE17BLOCK_CHUNK_SIZES_3)
          to label %313 unwind label %333

313:                                              ; preds = %311
  store ptr %312, ptr @_ZZN45Longtail_Longtail_TestLRUBlockStore__TestCase8TestBodyEvE5block_3, align 8, !tbaa !6
  call void @__cxa_guard_release(ptr nonnull @_ZGVZN45Longtail_Longtail_TestLRUBlockStore__TestCase8TestBodyEvE5block_3) #6
  br label %314

314:                                              ; preds = %313, %309, %306
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %19) #6
  call void @_ZN25TestAsyncPutBlockCompleteC2Ev(ptr noundef nonnull align 8 dereferenceable(28) %19)
  %315 = invoke noundef ptr @_ZL19jc_test_get_fixturev()
          to label %316 unwind label %335

316:                                              ; preds = %314
  %317 = getelementptr inbounds i8, ptr %315, i64 96
  %318 = load i32, ptr %317, align 8
  %319 = and i32 %318, -16776961
  %320 = or disjoint i32 %319, 465152
  store i32 %320, ptr %317, align 8
  %321 = invoke noundef ptr @_ZL19jc_test_get_fixturev()
          to label %322 unwind label %335

322:                                              ; preds = %316
  %323 = getelementptr inbounds i8, ptr %321, i64 32
  store ptr @.str.3, ptr %323, align 8, !tbaa !10
  invoke void @_Z28jc_test_increment_assertionsv()
          to label %324 unwind label %335

324:                                              ; preds = %322
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %20) #6
  store i32 0, ptr %20, align 4, !tbaa !15
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %21) #6
  %325 = load ptr, ptr %86, align 8, !tbaa !16
  %326 = load ptr, ptr @_ZZN45Longtail_Longtail_TestLRUBlockStore__TestCase8TestBodyEvE5block_3, align 8, !tbaa !6
  %327 = invoke noundef i32 %325(ptr noundef nonnull %67, ptr noundef %326, ptr noundef nonnull %19)
          to label %328 unwind label %337

328:                                              ; preds = %324
  store i32 %327, ptr %21, align 4, !tbaa !15
  %329 = 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 nonnull @.str.46, ptr noundef nonnull @.str.307, ptr noundef null)
          to label %330 unwind label %337

330:                                              ; preds = %328
  %331 = icmp eq i32 %329, 0
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %21) #6
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %20) #6
  br i1 %331, label %.invoke281, label %339

332:                                              ; preds = %295, %277, %275
  %.pn177 = phi { ptr, i32 } [ %276, %275 ], [ %296, %295 ], [ %278, %277 ]
  call void @_ZN25TestAsyncPutBlockCompleteD2Ev(ptr noundef nonnull align 8 dereferenceable(28) %15) #6
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %15) #6
  br label %909

333:                                              ; preds = %311
  %334 = landingpad { ptr, i32 }
          cleanup
  call void @__cxa_guard_abort(ptr nonnull @_ZGVZN45Longtail_Longtail_TestLRUBlockStore__TestCase8TestBodyEvE5block_3) #6
  br label %909

335:                                              ; preds = %.invoke281, %357, %348, %342, %340, %339, %322, %316, %314
  %336 = landingpad { ptr, i32 }
          cleanup
  br label %392

337:                                              ; preds = %328, %324
  %338 = landingpad { ptr, i32 }
          cleanup
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %21) #6
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %20) #6
  br label %392

339:                                              ; preds = %330
  invoke void @_ZN25TestAsyncPutBlockComplete4WaitEv(ptr noundef nonnull align 8 dereferenceable(28) %19)
          to label %340 unwind label %335

340:                                              ; preds = %339
  %341 = invoke noundef ptr @_ZL19jc_test_get_fixturev()
          to label %342 unwind label %335

342:                                              ; preds = %340
  %343 = getelementptr inbounds i8, ptr %341, i64 96
  %344 = load i32, ptr %343, align 8
  %345 = and i32 %344, -16776961
  %346 = or disjoint i32 %345, 465664
  store i32 %346, ptr %343, align 8
  %347 = invoke noundef ptr @_ZL19jc_test_get_fixturev()
          to label %348 unwind label %335

348:                                              ; preds = %342
  %349 = getelementptr inbounds i8, ptr %347, i64 32
  store ptr @.str.3, ptr %349, align 8, !tbaa !10
  invoke void @_Z28jc_test_increment_assertionsv()
          to label %350 unwind label %335

350:                                              ; preds = %348
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %22) #6
  store i32 0, ptr %22, align 4, !tbaa !15
  %351 = getelementptr inbounds i8, ptr %19, i64 24
  %352 = 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) %351, ptr noundef nonnull @.str.46, ptr noundef nonnull @.str.273, ptr noundef null)
          to label %353 unwind label %355

353:                                              ; preds = %350
  %354 = icmp eq i32 %352, 0
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %22) #6
  br i1 %354, label %.invoke281, label %357

.invoke281:                                       ; preds = %330, %353
  invoke void @_Z21jc_test_set_test_faili(i32 noundef 1)
          to label %.critedge237 unwind label %335

355:                                              ; preds = %350
  %356 = landingpad { ptr, i32 }
          cleanup
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %22) #6
  br label %392

357:                                              ; preds = %353
  %358 = load ptr, ptr @_ZZN45Longtail_Longtail_TestLRUBlockStore__TestCase8TestBodyEvE5block_3, align 8, !tbaa !6
  %359 = getelementptr inbounds i8, ptr %358, i64 8
  %360 = load ptr, ptr %359, align 8, !tbaa !19
  %361 = load ptr, ptr %360, align 8, !tbaa !21
  %362 = load i64, ptr %361, align 8, !tbaa !23
  %363 = getelementptr inbounds i8, ptr %2, i64 32
  store i64 %362, ptr %363, align 16, !tbaa !23
  %364 = load ptr, ptr %358, align 8, !tbaa !24
  %365 = invoke noundef i32 %364(ptr noundef nonnull %358)
          to label %366 unwind label %335

366:                                              ; preds = %357
  call void @_ZN25TestAsyncPutBlockCompleteD2Ev(ptr noundef nonnull align 8 dereferenceable(28) %19) #6
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %19) #6
  %367 = load atomic i8, ptr @_ZGVZN45Longtail_Longtail_TestLRUBlockStore__TestCase8TestBodyEvE5block_4 acquire, align 8
  %368 = icmp eq i8 %367, 0
  br i1 %368, label %369, label %374, !prof !5

369:                                              ; preds = %366
  %370 = call i32 @__cxa_guard_acquire(ptr nonnull @_ZGVZN45Longtail_Longtail_TestLRUBlockStore__TestCase8TestBodyEvE5block_4) #6
  %.not182 = icmp eq i32 %370, 0
  br i1 %.not182, label %374, label %371

371:                                              ; preds = %369
  %372 = invoke noundef ptr @_ZL19GenerateStoredBlockP16Longtail_HashAPIjPKj(ptr noundef %64, i32 noundef 2, ptr noundef nonnull @_ZZN45Longtail_Longtail_TestLRUBlockStore__TestCase8TestBodyEvE17BLOCK_CHUNK_SIZES_4)
          to label %373 unwind label %393

373:                                              ; preds = %371
  store ptr %372, ptr @_ZZN45Longtail_Longtail_TestLRUBlockStore__TestCase8TestBodyEvE5block_4, align 8, !tbaa !6
  call void @__cxa_guard_release(ptr nonnull @_ZGVZN45Longtail_Longtail_TestLRUBlockStore__TestCase8TestBodyEvE5block_4) #6
  br label %374

374:                                              ; preds = %373, %369, %366
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %23) #6
  call void @_ZN25TestAsyncPutBlockCompleteC2Ev(ptr noundef nonnull align 8 dereferenceable(28) %23)
  %375 = invoke noundef ptr @_ZL19jc_test_get_fixturev()
          to label %376 unwind label %395

376:                                              ; preds = %374
  %377 = getelementptr inbounds i8, ptr %375, i64 96
  %378 = load i32, ptr %377, align 8
  %379 = and i32 %378, -16776961
  %380 = or disjoint i32 %379, 468224
  store i32 %380, ptr %377, align 8
  %381 = invoke noundef ptr @_ZL19jc_test_get_fixturev()
          to label %382 unwind label %395

382:                                              ; preds = %376
  %383 = getelementptr inbounds i8, ptr %381, i64 32
  store ptr @.str.3, ptr %383, align 8, !tbaa !10
  invoke void @_Z28jc_test_increment_assertionsv()
          to label %384 unwind label %395

384:                                              ; preds = %382
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %24) #6
  store i32 0, ptr %24, align 4, !tbaa !15
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %25) #6
  %385 = load ptr, ptr %86, align 8, !tbaa !16
  %386 = load ptr, ptr @_ZZN45Longtail_Longtail_TestLRUBlockStore__TestCase8TestBodyEvE5block_4, align 8, !tbaa !6
  %387 = invoke noundef i32 %385(ptr noundef nonnull %67, ptr noundef %386, ptr noundef nonnull %23)
          to label %388 unwind label %397

388:                                              ; preds = %384
  store i32 %387, ptr %25, align 4, !tbaa !15
  %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) %24, ptr noundef nonnull align 4 dereferenceable(4) %25, ptr noundef nonnull @.str.46, ptr noundef nonnull @.str.307, ptr noundef null)
          to label %390 unwind label %397

390:                                              ; preds = %388
  %391 = icmp eq i32 %389, 0
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %25) #6
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %24) #6
  br i1 %391, label %.invoke282, label %399

392:                                              ; preds = %355, %337, %335
  %.pn180 = phi { ptr, i32 } [ %336, %335 ], [ %356, %355 ], [ %338, %337 ]
  call void @_ZN25TestAsyncPutBlockCompleteD2Ev(ptr noundef nonnull align 8 dereferenceable(28) %19) #6
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %19) #6
  br label %909

393:                                              ; preds = %371
  %394 = landingpad { ptr, i32 }
          cleanup
  call void @__cxa_guard_abort(ptr nonnull @_ZGVZN45Longtail_Longtail_TestLRUBlockStore__TestCase8TestBodyEvE5block_4) #6
  br label %909

395:                                              ; preds = %.invoke282, %417, %408, %402, %400, %399, %382, %376, %374
  %396 = landingpad { ptr, i32 }
          cleanup
  br label %452

397:                                              ; preds = %388, %384
  %398 = landingpad { ptr, i32 }
          cleanup
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %25) #6
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %24) #6
  br label %452

399:                                              ; preds = %390
  invoke void @_ZN25TestAsyncPutBlockComplete4WaitEv(ptr noundef nonnull align 8 dereferenceable(28) %23)
          to label %400 unwind label %395

400:                                              ; preds = %399
  %401 = invoke noundef ptr @_ZL19jc_test_get_fixturev()
          to label %402 unwind label %395

402:                                              ; preds = %400
  %403 = getelementptr inbounds i8, ptr %401, i64 96
  %404 = load i32, ptr %403, align 8
  %405 = and i32 %404, -16776961
  %406 = or disjoint i32 %405, 468736
  store i32 %406, ptr %403, align 8
  %407 = invoke noundef ptr @_ZL19jc_test_get_fixturev()
          to label %408 unwind label %395

408:                                              ; preds = %402
  %409 = getelementptr inbounds i8, ptr %407, i64 32
  store ptr @.str.3, ptr %409, align 8, !tbaa !10
  invoke void @_Z28jc_test_increment_assertionsv()
          to label %410 unwind label %395

410:                                              ; preds = %408
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %26) #6
  store i32 0, ptr %26, align 4, !tbaa !15
  %411 = getelementptr inbounds i8, ptr %23, i64 24
  %412 = invoke noundef i32 @_ZN21jc_test_cmp_eq_helperILb1EE7compareIiiEEiRKT_RKT0_PKcS9_PN23jc_test_enable_argumentIXntsr18jc_test_is_pointerIS5_EE5valueEE4typeE(ptr noundef nonnull align 4 dereferenceable(4) %26, ptr noundef nonnull align 4 dereferenceable(4) %411, ptr noundef nonnull @.str.46, ptr noundef nonnull @.str.273, ptr noundef null)
          to label %413 unwind label %415

413:                                              ; preds = %410
  %414 = icmp eq i32 %412, 0
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %26) #6
  br i1 %414, label %.invoke282, label %417

.invoke282:                                       ; preds = %390, %413
  invoke void @_Z21jc_test_set_test_faili(i32 noundef 1)
          to label %.critedge239 unwind label %395

415:                                              ; preds = %410
  %416 = landingpad { ptr, i32 }
          cleanup
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %26) #6
  br label %452

417:                                              ; preds = %413
  %418 = load ptr, ptr @_ZZN45Longtail_Longtail_TestLRUBlockStore__TestCase8TestBodyEvE5block_4, align 8, !tbaa !6
  %419 = getelementptr inbounds i8, ptr %418, i64 8
  %420 = load ptr, ptr %419, align 8, !tbaa !19
  %421 = load ptr, ptr %420, align 8, !tbaa !21
  %422 = load i64, ptr %421, align 8, !tbaa !23
  %423 = getelementptr inbounds i8, ptr %2, i64 40
  store i64 %422, ptr %423, align 8, !tbaa !23
  %424 = load ptr, ptr %418, align 8, !tbaa !24
  %425 = invoke noundef i32 %424(ptr noundef nonnull %418)
          to label %426 unwind label %395

426:                                              ; preds = %417
  call void @_ZN25TestAsyncPutBlockCompleteD2Ev(ptr noundef nonnull align 8 dereferenceable(28) %23) #6
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %23) #6
  %427 = load atomic i8, ptr @_ZGVZN45Longtail_Longtail_TestLRUBlockStore__TestCase8TestBodyEvE5block_5 acquire, align 8
  %428 = icmp eq i8 %427, 0
  br i1 %428, label %429, label %434, !prof !5

429:                                              ; preds = %426
  %430 = call i32 @__cxa_guard_acquire(ptr nonnull @_ZGVZN45Longtail_Longtail_TestLRUBlockStore__TestCase8TestBodyEvE5block_5) #6
  %.not185 = icmp eq i32 %430, 0
  br i1 %.not185, label %434, label %431

431:                                              ; preds = %429
  %432 = invoke noundef ptr @_ZL19GenerateStoredBlockP16Longtail_HashAPIjPKj(ptr noundef %64, i32 noundef 4, ptr noundef nonnull @_ZZN45Longtail_Longtail_TestLRUBlockStore__TestCase8TestBodyEvE17BLOCK_CHUNK_SIZES_5)
          to label %433 unwind label %453

433:                                              ; preds = %431
  store ptr %432, ptr @_ZZN45Longtail_Longtail_TestLRUBlockStore__TestCase8TestBodyEvE5block_5, align 8, !tbaa !6
  call void @__cxa_guard_release(ptr nonnull @_ZGVZN45Longtail_Longtail_TestLRUBlockStore__TestCase8TestBodyEvE5block_5) #6
  br label %434

434:                                              ; preds = %433, %429, %426
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %27) #6
  call void @_ZN25TestAsyncPutBlockCompleteC2Ev(ptr noundef nonnull align 8 dereferenceable(28) %27)
  %435 = invoke noundef ptr @_ZL19jc_test_get_fixturev()
          to label %436 unwind label %455

436:                                              ; preds = %434
  %437 = getelementptr inbounds i8, ptr %435, i64 96
  %438 = load i32, ptr %437, align 8
  %439 = and i32 %438, -16776961
  %440 = or disjoint i32 %439, 471296
  store i32 %440, ptr %437, align 8
  %441 = invoke noundef ptr @_ZL19jc_test_get_fixturev()
          to label %442 unwind label %455

442:                                              ; preds = %436
  %443 = getelementptr inbounds i8, ptr %441, i64 32
  store ptr @.str.3, ptr %443, align 8, !tbaa !10
  invoke void @_Z28jc_test_increment_assertionsv()
          to label %444 unwind label %455

444:                                              ; preds = %442
  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
  %445 = load ptr, ptr %86, align 8, !tbaa !16
  %446 = load ptr, ptr @_ZZN45Longtail_Longtail_TestLRUBlockStore__TestCase8TestBodyEvE5block_5, align 8, !tbaa !6
  %447 = invoke noundef i32 %445(ptr noundef nonnull %67, ptr noundef %446, ptr noundef nonnull %27)
          to label %448 unwind label %457

448:                                              ; preds = %444
  store i32 %447, ptr %29, align 4, !tbaa !15
  %449 = 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.307, ptr noundef null)
          to label %450 unwind label %457

450:                                              ; preds = %448
  %451 = icmp eq i32 %449, 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 %451, label %.invoke283, label %459

452:                                              ; preds = %415, %397, %395
  %.pn183 = phi { ptr, i32 } [ %396, %395 ], [ %416, %415 ], [ %398, %397 ]
  call void @_ZN25TestAsyncPutBlockCompleteD2Ev(ptr noundef nonnull align 8 dereferenceable(28) %23) #6
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %23) #6
  br label %909

453:                                              ; preds = %431
  %454 = landingpad { ptr, i32 }
          cleanup
  call void @__cxa_guard_abort(ptr nonnull @_ZGVZN45Longtail_Longtail_TestLRUBlockStore__TestCase8TestBodyEvE5block_5) #6
  br label %909

455:                                              ; preds = %.invoke283, %477, %468, %462, %460, %459, %442, %436, %434
  %456 = landingpad { ptr, i32 }
          cleanup
  br label %490

457:                                              ; preds = %448, %444
  %458 = 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 %490

459:                                              ; preds = %450
  invoke void @_ZN25TestAsyncPutBlockComplete4WaitEv(ptr noundef nonnull align 8 dereferenceable(28) %27)
          to label %460 unwind label %455

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

462:                                              ; preds = %460
  %463 = getelementptr inbounds i8, ptr %461, i64 96
  %464 = load i32, ptr %463, align 8
  %465 = and i32 %464, -16776961
  %466 = or disjoint i32 %465, 471808
  store i32 %466, ptr %463, align 8
  %467 = invoke noundef ptr @_ZL19jc_test_get_fixturev()
          to label %468 unwind label %455

468:                                              ; preds = %462
  %469 = getelementptr inbounds i8, ptr %467, i64 32
  store ptr @.str.3, ptr %469, align 8, !tbaa !10
  invoke void @_Z28jc_test_increment_assertionsv()
          to label %470 unwind label %455

470:                                              ; preds = %468
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %30) #6
  store i32 0, ptr %30, align 4, !tbaa !15
  %471 = getelementptr inbounds i8, ptr %27, i64 24
  %472 = 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) %471, ptr noundef nonnull @.str.46, ptr noundef nonnull @.str.273, ptr noundef null)
          to label %473 unwind label %475

473:                                              ; preds = %470
  %474 = icmp eq i32 %472, 0
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %30) #6
  br i1 %474, label %.invoke283, label %477

.invoke283:                                       ; preds = %450, %473
  invoke void @_Z21jc_test_set_test_faili(i32 noundef 1)
          to label %.critedge241 unwind label %455

475:                                              ; preds = %470
  %476 = landingpad { ptr, i32 }
          cleanup
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %30) #6
  br label %490

477:                                              ; preds = %473
  %478 = load ptr, ptr @_ZZN45Longtail_Longtail_TestLRUBlockStore__TestCase8TestBodyEvE5block_5, align 8, !tbaa !6
  %479 = getelementptr inbounds i8, ptr %478, i64 8
  %480 = load ptr, ptr %479, align 8, !tbaa !19
  %481 = load ptr, ptr %480, align 8, !tbaa !21
  %482 = load i64, ptr %481, align 8, !tbaa !23
  %483 = getelementptr inbounds i8, ptr %2, i64 48
  store i64 %482, ptr %483, align 16, !tbaa !23
  %484 = load ptr, ptr %478, align 8, !tbaa !24
  %485 = invoke noundef i32 %484(ptr noundef nonnull %478)
          to label %486 unwind label %455

486:                                              ; preds = %477
  call void @_ZN25TestAsyncPutBlockCompleteD2Ev(ptr noundef nonnull align 8 dereferenceable(28) %27) #6
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %27) #6
  %487 = getelementptr inbounds i8, ptr %67, i64 24
  %488 = getelementptr inbounds i8, ptr %31, i64 32
  %489 = getelementptr inbounds i8, ptr %31, i64 24
  br label %491

490:                                              ; preds = %475, %457, %455
  %.pn186 = phi { ptr, i32 } [ %456, %455 ], [ %476, %475 ], [ %458, %457 ]
  call void @_ZN25TestAsyncPutBlockCompleteD2Ev(ptr noundef nonnull align 8 dereferenceable(28) %27) #6
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %27) #6
  br label %909

491:                                              ; preds = %486, %536
  %indvars.iv = phi i64 [ 0, %486 ], [ %indvars.iv.next, %536 ]
  call void @llvm.lifetime.start.p0(i64 40, ptr nonnull %31) #6
  call void @_ZN25TestAsyncGetBlockCompleteC2Ev(ptr noundef nonnull align 8 dereferenceable(40) %31)
  %492 = invoke noundef ptr @_ZL19jc_test_get_fixturev()
          to label %493 unwind label %.loopexit

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

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

501:                                              ; preds = %499
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %32) #6
  store i32 0, ptr %32, align 4, !tbaa !15
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %33) #6
  %502 = load ptr, ptr %487, align 8, !tbaa !25
  %503 = getelementptr inbounds [7 x i64], ptr %2, i64 0, i64 %indvars.iv
  %504 = load i64, ptr %503, align 8, !tbaa !23
  %505 = invoke noundef i32 %502(ptr noundef nonnull %67, i64 noundef %504, ptr noundef nonnull %31)
          to label %506 unwind label %511

506:                                              ; preds = %501
  store i32 %505, ptr %33, align 4, !tbaa !15
  %507 = invoke noundef i32 @_ZN21jc_test_cmp_eq_helperILb1EE7compareIiiEEiRKT_RKT0_PKcS9_PN23jc_test_enable_argumentIXntsr18jc_test_is_pointerIS5_EE5valueEE4typeE(ptr noundef nonnull align 4 dereferenceable(4) %32, ptr noundef nonnull align 4 dereferenceable(4) %33, ptr noundef nonnull @.str.46, ptr noundef nonnull @.str.308, ptr noundef null)
          to label %508 unwind label %511

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

510:                                              ; preds = %508
  invoke void @_Z21jc_test_set_test_faili(i32 noundef 1)
          to label %538 unwind label %.loopexit.split-lp

.loopexit:                                        ; preds = %491, %493, %499, %513
  %lpad.loopexit = landingpad { ptr, i32 }
          cleanup
  br label %537

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

511:                                              ; preds = %506, %501
  %512 = landingpad { ptr, i32 }
          cleanup
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %33) #6
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %32) #6
  br label %537

513:                                              ; preds = %508
  invoke void @_ZN25TestAsyncGetBlockComplete4WaitEv(ptr noundef nonnull align 8 dereferenceable(40) %31)
          to label %514 unwind label %.loopexit

514:                                              ; preds = %513
  %515 = load ptr, ptr %488, align 8, !tbaa !26
  %516 = invoke noundef ptr @_ZL19jc_test_get_fixturev()
          to label %517 unwind label %.loopexit271

517:                                              ; preds = %514
  %518 = getelementptr inbounds i8, ptr %516, i64 96
  %519 = load i32, ptr %518, align 8
  %520 = and i32 %519, -16776961
  %521 = or disjoint i32 %520, 474624
  store i32 %521, ptr %518, align 8
  %522 = invoke noundef ptr @_ZL19jc_test_get_fixturev()
          to label %523 unwind label %.loopexit271

523:                                              ; preds = %517
  %524 = getelementptr inbounds i8, ptr %522, i64 32
  store ptr @.str.3, ptr %524, align 8, !tbaa !10
  invoke void @_Z28jc_test_increment_assertionsv()
          to label %525 unwind label %.loopexit271

525:                                              ; preds = %523
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %34) #6
  store i32 0, ptr %34, align 4, !tbaa !15
  %526 = 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) %34, ptr noundef nonnull align 4 dereferenceable(4) %489, ptr noundef nonnull @.str.46, ptr noundef nonnull @.str.275, ptr noundef null)
          to label %527 unwind label %530

527:                                              ; preds = %525
  %528 = icmp eq i32 %526, 0
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %34) #6
  br i1 %528, label %529, label %532

529:                                              ; preds = %527
  invoke void @_Z21jc_test_set_test_faili(i32 noundef 1)
          to label %538 unwind label %.loopexit.split-lp272

.loopexit271:                                     ; preds = %514, %517, %523, %534
  %lpad.loopexit273 = landingpad { ptr, i32 }
          cleanup
  br label %537

.loopexit.split-lp272:                            ; preds = %529
  %lpad.loopexit.split-lp274 = landingpad { ptr, i32 }
          cleanup
  br label %537

530:                                              ; preds = %525
  %531 = landingpad { ptr, i32 }
          cleanup
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %34) #6
  br label %537

532:                                              ; preds = %527
  %533 = load ptr, ptr %515, align 8, !tbaa !24
  %.not188 = icmp eq ptr %533, null
  br i1 %.not188, label %536, label %534

534:                                              ; preds = %532
  %535 = invoke noundef i32 %533(ptr noundef nonnull %515)
          to label %536 unwind label %.loopexit271

536:                                              ; preds = %534, %532
  call void @_ZN25TestAsyncGetBlockCompleteD2Ev(ptr noundef nonnull align 8 dereferenceable(40) %31) #6
  call void @llvm.lifetime.end.p0(i64 40, ptr nonnull %31) #6
  %indvars.iv.next = add nuw nsw i64 %indvars.iv, 1
  %exitcond = icmp eq i64 %indvars.iv.next, 7
  br i1 %exitcond, label %.critedge243, label %491, !llvm.loop !29

537:                                              ; preds = %.loopexit271, %.loopexit.split-lp272, %.loopexit, %.loopexit.split-lp, %530, %511
  %.pn191 = phi { ptr, i32 } [ %512, %511 ], [ %531, %530 ], [ %lpad.loopexit, %.loopexit ], [ %lpad.loopexit.split-lp, %.loopexit.split-lp ], [ %lpad.loopexit273, %.loopexit271 ], [ %lpad.loopexit.split-lp274, %.loopexit.split-lp272 ]
  call void @_ZN25TestAsyncGetBlockCompleteD2Ev(ptr noundef nonnull align 8 dereferenceable(40) %31) #6
  call void @llvm.lifetime.end.p0(i64 40, ptr nonnull %31) #6
  br label %909

538:                                              ; preds = %510, %529
  call void @_ZN25TestAsyncGetBlockCompleteD2Ev(ptr noundef nonnull align 8 dereferenceable(40) %31) #6
  call void @llvm.lifetime.end.p0(i64 40, ptr nonnull %31) #6
  br label %907

.critedge243:                                     ; preds = %536
  call void @llvm.lifetime.start.p0(i64 176, ptr nonnull %35) #6
  %539 = getelementptr inbounds i8, ptr %67, i64 48
  %540 = load ptr, ptr %539, align 8, !tbaa !31
  %541 = call noundef i32 %540(ptr noundef nonnull %67, ptr noundef nonnull %35)
  call void @llvm.lifetime.start.p0(i64 176, ptr nonnull %36) #6
  %542 = getelementptr inbounds i8, ptr %66, i64 48
  %543 = load ptr, ptr %542, align 8, !tbaa !31
  %544 = call noundef i32 %543(ptr noundef %66, ptr noundef nonnull %36)
  %545 = call noundef ptr @_ZL19jc_test_get_fixturev()
  %546 = getelementptr inbounds i8, ptr %545, i64 96
  %547 = load i32, ptr %546, align 8
  %548 = and i32 %547, -16776961
  %549 = or disjoint i32 %548, 477696
  store i32 %549, ptr %546, align 8
  %550 = call noundef ptr @_ZL19jc_test_get_fixturev()
  %551 = getelementptr inbounds i8, ptr %550, i64 32
  store ptr @.str.3, ptr %551, align 8, !tbaa !10
  call void @_Z28jc_test_increment_assertionsv()
  %552 = call noundef i32 @_ZN21jc_test_cmp_eq_helperILb0EE7compareIjmEEiRKT_RKT0_PKcS9_(ptr noundef nonnull align 4 dereferenceable(4) @_ZZN45Longtail_Longtail_TestLRUBlockStore__TestCase8TestBodyEvE11BLOCK_COUNT, ptr noundef nonnull align 8 dereferenceable(8) %35, ptr noundef nonnull @.str.309, ptr noundef nonnull @.str.310)
  %553 = icmp eq i32 %552, 0
  br i1 %553, label %554, label %555

554:                                              ; preds = %.critedge243
  call void @_Z21jc_test_set_test_faili(i32 noundef 1)
  br label %906

555:                                              ; preds = %.critedge243
  %556 = call noundef ptr @_ZL19jc_test_get_fixturev()
  %557 = getelementptr inbounds i8, ptr %556, i64 96
  %558 = load i32, ptr %557, align 8
  %559 = and i32 %558, -16776961
  %560 = or disjoint i32 %559, 477952
  store i32 %560, ptr %557, align 8
  %561 = call noundef ptr @_ZL19jc_test_get_fixturev()
  %562 = getelementptr inbounds i8, ptr %561, i64 32
  store ptr @.str.3, ptr %562, align 8, !tbaa !10
  call void @_Z28jc_test_increment_assertionsv()
  %563 = call noundef i32 @_ZN21jc_test_cmp_eq_helperILb0EE7compareIjmEEiRKT_RKT0_PKcS9_(ptr noundef nonnull align 4 dereferenceable(4) @_ZZN45Longtail_Longtail_TestLRUBlockStore__TestCase8TestBodyEvE11BLOCK_COUNT, ptr noundef nonnull align 8 dereferenceable(8) %36, ptr noundef nonnull @.str.309, ptr noundef nonnull @.str.311)
  %564 = icmp eq i32 %563, 0
  br i1 %564, label %565, label %566

565:                                              ; preds = %555
  call void @_Z21jc_test_set_test_faili(i32 noundef 1)
  br label %906

566:                                              ; preds = %555
  call void @llvm.lifetime.start.p0(i64 40, ptr nonnull %37) #6
  call void @_ZN25TestAsyncGetBlockCompleteC2Ev(ptr noundef nonnull align 8 dereferenceable(40) %37)
  %567 = invoke noundef ptr @_ZL19jc_test_get_fixturev()
          to label %568 unwind label %585

568:                                              ; preds = %566
  %569 = getelementptr inbounds i8, ptr %567, i64 96
  %570 = load i32, ptr %569, align 8
  %571 = and i32 %570, -16776961
  %572 = or disjoint i32 %571, 478976
  store i32 %572, ptr %569, align 8
  %573 = invoke noundef ptr @_ZL19jc_test_get_fixturev()
          to label %574 unwind label %585

574:                                              ; preds = %568
  %575 = getelementptr inbounds i8, ptr %573, i64 32
  store ptr @.str.3, ptr %575, align 8, !tbaa !10
  invoke void @_Z28jc_test_increment_assertionsv()
          to label %576 unwind label %585

576:                                              ; preds = %574
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %38) #6
  store i32 0, ptr %38, align 4, !tbaa !15
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %39) #6
  %577 = load ptr, ptr %487, align 8, !tbaa !25
  %578 = load i64, ptr %2, align 16, !tbaa !23
  %579 = invoke noundef i32 %577(ptr noundef nonnull %67, i64 noundef %578, ptr noundef nonnull %37)
          to label %580 unwind label %587

580:                                              ; preds = %576
  store i32 %579, ptr %39, align 4, !tbaa !15
  %581 = 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) %38, ptr noundef nonnull align 4 dereferenceable(4) %39, ptr noundef nonnull @.str.46, ptr noundef nonnull @.str.312, ptr noundef null)
          to label %582 unwind label %587

582:                                              ; preds = %580
  %583 = icmp eq i32 %581, 0
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %39) #6
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %38) #6
  br i1 %583, label %584, label %589

584:                                              ; preds = %582
  invoke void @_Z21jc_test_set_test_faili(i32 noundef 1)
          to label %616 unwind label %585

585:                                              ; preds = %589, %584, %574, %568, %566
  %586 = landingpad { ptr, i32 }
          cleanup
  br label %635

587:                                              ; preds = %580, %576
  %588 = landingpad { ptr, i32 }
          cleanup
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %39) #6
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %38) #6
  br label %635

589:                                              ; preds = %582
  invoke void @_ZN25TestAsyncGetBlockComplete4WaitEv(ptr noundef nonnull align 8 dereferenceable(40) %37)
          to label %590 unwind label %585

590:                                              ; preds = %589
  %591 = getelementptr inbounds i8, ptr %37, i64 32
  %592 = load ptr, ptr %591, align 8, !tbaa !26
  %593 = invoke noundef ptr @_ZL19jc_test_get_fixturev()
          to label %594 unwind label %608

594:                                              ; preds = %590
  %595 = getelementptr inbounds i8, ptr %593, i64 96
  %596 = load i32, ptr %595, align 8
  %597 = and i32 %596, -16776961
  %598 = or disjoint i32 %597, 479744
  store i32 %598, ptr %595, align 8
  %599 = invoke noundef ptr @_ZL19jc_test_get_fixturev()
          to label %600 unwind label %608

600:                                              ; preds = %594
  %601 = getelementptr inbounds i8, ptr %599, i64 32
  store ptr @.str.3, ptr %601, align 8, !tbaa !10
  invoke void @_Z28jc_test_increment_assertionsv()
          to label %602 unwind label %608

602:                                              ; preds = %600
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %40) #6
  store i32 0, ptr %40, align 4, !tbaa !15
  %603 = getelementptr inbounds i8, ptr %37, i64 24
  %604 = invoke noundef i32 @_ZN21jc_test_cmp_eq_helperILb1EE7compareIiiEEiRKT_RKT0_PKcS9_PN23jc_test_enable_argumentIXntsr18jc_test_is_pointerIS5_EE5valueEE4typeE(ptr noundef nonnull align 4 dereferenceable(4) %40, ptr noundef nonnull align 4 dereferenceable(4) %603, ptr noundef nonnull @.str.46, ptr noundef nonnull @.str.275, ptr noundef null)
          to label %605 unwind label %610

605:                                              ; preds = %602
  %606 = icmp eq i32 %604, 0
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %40) #6
  br i1 %606, label %607, label %612

607:                                              ; preds = %605
  invoke void @_Z21jc_test_set_test_faili(i32 noundef 1)
          to label %616 unwind label %608

608:                                              ; preds = %614, %607, %600, %594, %590
  %609 = landingpad { ptr, i32 }
          cleanup
  br label %635

610:                                              ; preds = %602
  %611 = landingpad { ptr, i32 }
          cleanup
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %40) #6
  br label %635

612:                                              ; preds = %605
  %613 = load ptr, ptr %592, align 8, !tbaa !24
  %.not193 = icmp eq ptr %613, null
  br i1 %.not193, label %617, label %614

614:                                              ; preds = %612
  %615 = invoke noundef i32 %613(ptr noundef nonnull %592)
          to label %617 unwind label %608

616:                                              ; preds = %607, %584
  call void @_ZN25TestAsyncGetBlockCompleteD2Ev(ptr noundef nonnull align 8 dereferenceable(40) %37) #6
  call void @llvm.lifetime.end.p0(i64 40, ptr nonnull %37) #6
  br label %906

617:                                              ; preds = %614, %612
  call void @_ZN25TestAsyncGetBlockCompleteD2Ev(ptr noundef nonnull align 8 dereferenceable(40) %37) #6
  call void @llvm.lifetime.end.p0(i64 40, ptr nonnull %37) #6
  call void @llvm.lifetime.start.p0(i64 40, ptr nonnull %41) #6
  call void @_ZN25TestAsyncGetBlockCompleteC2Ev(ptr noundef nonnull align 8 dereferenceable(40) %41)
  %618 = invoke noundef ptr @_ZL19jc_test_get_fixturev()
          to label %619 unwind label %636

619:                                              ; preds = %617
  %620 = getelementptr inbounds i8, ptr %618, i64 96
  %621 = load i32, ptr %620, align 8
  %622 = and i32 %621, -16776961
  %623 = or disjoint i32 %622, 481792
  store i32 %623, ptr %620, align 8
  %624 = invoke noundef ptr @_ZL19jc_test_get_fixturev()
          to label %625 unwind label %636

625:                                              ; preds = %619
  %626 = getelementptr inbounds i8, ptr %624, i64 32
  store ptr @.str.3, ptr %626, align 8, !tbaa !10
  invoke void @_Z28jc_test_increment_assertionsv()
          to label %627 unwind label %636

627:                                              ; preds = %625
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %42) #6
  store i32 0, ptr %42, align 4, !tbaa !15
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %43) #6
  %628 = load ptr, ptr %487, align 8, !tbaa !25
  %629 = invoke noundef i32 %628(ptr noundef nonnull %67, i64 noundef %482, ptr noundef nonnull %41)
          to label %630 unwind label %638

630:                                              ; preds = %627
  store i32 %629, ptr %43, align 4, !tbaa !15
  %631 = 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) %42, ptr noundef nonnull align 4 dereferenceable(4) %43, ptr noundef nonnull @.str.46, ptr noundef nonnull @.str.313, ptr noundef null)
          to label %632 unwind label %638

632:                                              ; preds = %630
  %633 = icmp eq i32 %631, 0
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %43) #6
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %42) #6
  br i1 %633, label %634, label %640

634:                                              ; preds = %632
  invoke void @_Z21jc_test_set_test_faili(i32 noundef 1)
          to label %667 unwind label %636

635:                                              ; preds = %608, %610, %587, %585
  %.pn196 = phi { ptr, i32 } [ %586, %585 ], [ %588, %587 ], [ %609, %608 ], [ %611, %610 ]
  call void @_ZN25TestAsyncGetBlockCompleteD2Ev(ptr noundef nonnull align 8 dereferenceable(40) %37) #6
  call void @llvm.lifetime.end.p0(i64 40, ptr nonnull %37) #6
  br label %908

636:                                              ; preds = %640, %634, %625, %619, %617
  %637 = landingpad { ptr, i32 }
          cleanup
  br label %687

638:                                              ; preds = %630, %627
  %639 = landingpad { ptr, i32 }
          cleanup
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %43) #6
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %42) #6
  br label %687

640:                                              ; preds = %632
  invoke void @_ZN25TestAsyncGetBlockComplete4WaitEv(ptr noundef nonnull align 8 dereferenceable(40) %41)
          to label %641 unwind label %636

641:                                              ; preds = %640
  %642 = getelementptr inbounds i8, ptr %41, i64 32
  %643 = load ptr, ptr %642, align 8, !tbaa !26
  %644 = invoke noundef ptr @_ZL19jc_test_get_fixturev()
          to label %645 unwind label %659

645:                                              ; preds = %641
  %646 = getelementptr inbounds i8, ptr %644, i64 96
  %647 = load i32, ptr %646, align 8
  %648 = and i32 %647, -16776961
  %649 = or disjoint i32 %648, 482560
  store i32 %649, ptr %646, align 8
  %650 = invoke noundef ptr @_ZL19jc_test_get_fixturev()
          to label %651 unwind label %659

651:                                              ; preds = %645
  %652 = getelementptr inbounds i8, ptr %650, i64 32
  store ptr @.str.3, ptr %652, align 8, !tbaa !10
  invoke void @_Z28jc_test_increment_assertionsv()
          to label %653 unwind label %659

653:                                              ; preds = %651
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %44) #6
  store i32 0, ptr %44, align 4, !tbaa !15
  %654 = getelementptr inbounds i8, ptr %41, i64 24
  %655 = 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) %44, ptr noundef nonnull align 4 dereferenceable(4) %654, ptr noundef nonnull @.str.46, ptr noundef nonnull @.str.275, ptr noundef null)
          to label %656 unwind label %661

656:                                              ; preds = %653
  %657 = icmp eq i32 %655, 0
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %44) #6
  br i1 %657, label %658, label %663

658:                                              ; preds = %656
  invoke void @_Z21jc_test_set_test_faili(i32 noundef 1)
          to label %667 unwind label %659

659:                                              ; preds = %665, %658, %651, %645, %641
  %660 = landingpad { ptr, i32 }
          cleanup
  br label %687

661:                                              ; preds = %653
  %662 = landingpad { ptr, i32 }
          cleanup
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %44) #6
  br label %687

663:                                              ; preds = %656
  %664 = load ptr, ptr %643, align 8, !tbaa !24
  %.not198 = icmp eq ptr %664, null
  br i1 %.not198, label %668, label %665

665:                                              ; preds = %663
  %666 = invoke noundef i32 %664(ptr noundef nonnull %643)
          to label %668 unwind label %659

667:                                              ; preds = %658, %634
  call void @_ZN25TestAsyncGetBlockCompleteD2Ev(ptr noundef nonnull align 8 dereferenceable(40) %41) #6
  call void @llvm.lifetime.end.p0(i64 40, ptr nonnull %41) #6
  br label %906

668:                                              ; preds = %665, %663
  call void @_ZN25TestAsyncGetBlockCompleteD2Ev(ptr noundef nonnull align 8 dereferenceable(40) %41) #6
  call void @llvm.lifetime.end.p0(i64 40, ptr nonnull %41) #6
  call void @llvm.lifetime.start.p0(i64 40, ptr nonnull %45) #6
  call void @_ZN25TestAsyncGetBlockCompleteC2Ev(ptr noundef nonnull align 8 dereferenceable(40) %45)
  %669 = invoke noundef ptr @_ZL19jc_test_get_fixturev()
          to label %670 unwind label %688

670:                                              ; preds = %668
  %671 = getelementptr inbounds i8, ptr %669, i64 96
  %672 = load i32, ptr %671, align 8
  %673 = and i32 %672, -16776961
  %674 = or disjoint i32 %673, 484608
  store i32 %674, ptr %671, align 8
  %675 = invoke noundef ptr @_ZL19jc_test_get_fixturev()
          to label %676 unwind label %688

676:                                              ; preds = %670
  %677 = getelementptr inbounds i8, ptr %675, i64 32
  store ptr @.str.3, ptr %677, align 8, !tbaa !10
  invoke void @_Z28jc_test_increment_assertionsv()
          to label %678 unwind label %688

678:                                              ; preds = %676
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %46) #6
  store i32 0, ptr %46, align 4, !tbaa !15
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %47) #6
  %679 = load ptr, ptr %487, align 8, !tbaa !25
  %680 = load i64, ptr %423, align 8, !tbaa !23
  %681 = invoke noundef i32 %679(ptr noundef nonnull %67, i64 noundef %680, ptr noundef nonnull %45)
          to label %682 unwind label %690

682:                                              ; preds = %678
  store i32 %681, ptr %47, align 4, !tbaa !15
  %683 = invoke noundef i32 @_ZN21jc_test_cmp_eq_helperILb1EE7compareIiiEEiRKT_RKT0_PKcS9_PN23jc_test_enable_argumentIXntsr18jc_test_is_pointerIS5_EE5valueEE4typeE(ptr noundef nonnull align 4 dereferenceable(4) %46, ptr noundef nonnull align 4 dereferenceable(4) %47, ptr noundef nonnull @.str.46, ptr noundef nonnull @.str.314, ptr noundef null)
          to label %684 unwind label %690

684:                                              ; preds = %682
  %685 = icmp eq i32 %683, 0
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %47) #6
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %46) #6
  br i1 %685, label %686, label %692

686:                                              ; preds = %684
  invoke void @_Z21jc_test_set_test_faili(i32 noundef 1)
          to label %719 unwind label %688

687:                                              ; preds = %659, %661, %638, %636
  %.pn201 = phi { ptr, i32 } [ %637, %636 ], [ %639, %638 ], [ %660, %659 ], [ %662, %661 ]
  call void @_ZN25TestAsyncGetBlockCompleteD2Ev(ptr noundef nonnull align 8 dereferenceable(40) %41) #6
  call void @llvm.lifetime.end.p0(i64 40, ptr nonnull %41) #6
  br label %908

688:                                              ; preds = %692, %686, %676, %670, %668
  %689 = landingpad { ptr, i32 }
          cleanup
  br label %739

690:                                              ; preds = %682, %678
  %691 = landingpad { ptr, i32 }
          cleanup
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %47) #6
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %46) #6
  br label %739

692:                                              ; preds = %684
  invoke void @_ZN25TestAsyncGetBlockComplete4WaitEv(ptr noundef nonnull align 8 dereferenceable(40) %45)
          to label %693 unwind label %688

693:                                              ; preds = %692
  %694 = getelementptr inbounds i8, ptr %45, i64 32
  %695 = load ptr, ptr %694, align 8, !tbaa !26
  %696 = invoke noundef ptr @_ZL19jc_test_get_fixturev()
          to label %697 unwind label %711

697:                                              ; preds = %693
  %698 = getelementptr inbounds i8, ptr %696, i64 96
  %699 = load i32, ptr %698, align 8
  %700 = and i32 %699, -16776961
  %701 = or disjoint i32 %700, 485376
  store i32 %701, ptr %698, align 8
  %702 = invoke noundef ptr @_ZL19jc_test_get_fixturev()
          to label %703 unwind label %711

703:                                              ; preds = %697
  %704 = getelementptr inbounds i8, ptr %702, i64 32
  store ptr @.str.3, ptr %704, align 8, !tbaa !10
  invoke void @_Z28jc_test_increment_assertionsv()
          to label %705 unwind label %711

705:                                              ; preds = %703
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %48) #6
  store i32 0, ptr %48, align 4, !tbaa !15
  %706 = getelementptr inbounds i8, ptr %45, i64 24
  %707 = 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) %48, ptr noundef nonnull align 4 dereferenceable(4) %706, ptr noundef nonnull @.str.46, ptr noundef nonnull @.str.275, ptr noundef null)
          to label %708 unwind label %713

708:                                              ; preds = %705
  %709 = icmp eq i32 %707, 0
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %48) #6
  br i1 %709, label %710, label %715

710:                                              ; preds = %708
  invoke void @_Z21jc_test_set_test_faili(i32 noundef 1)
          to label %719 unwind label %711

711:                                              ; preds = %717, %710, %703, %697, %693
  %712 = landingpad { ptr, i32 }
          cleanup
  br label %739

713:                                              ; preds = %705
  %714 = landingpad { ptr, i32 }
          cleanup
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %48) #6
  br label %739

715:                                              ; preds = %708
  %716 = load ptr, ptr %695, align 8, !tbaa !24
  %.not203 = icmp eq ptr %716, null
  br i1 %.not203, label %720, label %717

717:                                              ; preds = %715
  %718 = invoke noundef i32 %716(ptr noundef nonnull %695)
          to label %720 unwind label %711

719:                                              ; preds = %710, %686
  call void @_ZN25TestAsyncGetBlockCompleteD2Ev(ptr noundef nonnull align 8 dereferenceable(40) %45) #6
  call void @llvm.lifetime.end.p0(i64 40, ptr nonnull %45) #6
  br label %906

720:                                              ; preds = %717, %715
  call void @_ZN25TestAsyncGetBlockCompleteD2Ev(ptr noundef nonnull align 8 dereferenceable(40) %45) #6
  call void @llvm.lifetime.end.p0(i64 40, ptr nonnull %45) #6
  call void @llvm.lifetime.start.p0(i64 40, ptr nonnull %49) #6
  call void @_ZN25TestAsyncGetBlockCompleteC2Ev(ptr noundef nonnull align 8 dereferenceable(40) %49)
  %721 = invoke noundef ptr @_ZL19jc_test_get_fixturev()
          to label %722 unwind label %740

722:                                              ; preds = %720
  %723 = getelementptr inbounds i8, ptr %721, i64 96
  %724 = load i32, ptr %723, align 8
  %725 = and i32 %724, -16776961
  %726 = or disjoint i32 %725, 487424
  store i32 %726, ptr %723, align 8
  %727 = invoke noundef ptr @_ZL19jc_test_get_fixturev()
          to label %728 unwind label %740

728:                                              ; preds = %722
  %729 = getelementptr inbounds i8, ptr %727, i64 32
  store ptr @.str.3, ptr %729, align 8, !tbaa !10
  invoke void @_Z28jc_test_increment_assertionsv()
          to label %730 unwind label %740

730:                                              ; preds = %728
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %50) #6
  store i32 0, ptr %50, align 4, !tbaa !15
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %51) #6
  %731 = load ptr, ptr %487, align 8, !tbaa !25
  %732 = load i64, ptr %303, align 8, !tbaa !23
  %733 = invoke noundef i32 %731(ptr noundef nonnull %67, i64 noundef %732, ptr noundef nonnull %49)
          to label %734 unwind label %742

734:                                              ; preds = %730
  store i32 %733, ptr %51, align 4, !tbaa !15
  %735 = 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) %50, ptr noundef nonnull align 4 dereferenceable(4) %51, ptr noundef nonnull @.str.46, ptr noundef nonnull @.str.315, ptr noundef null)
          to label %736 unwind label %742

736:                                              ; preds = %734
  %737 = icmp eq i32 %735, 0
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %51) #6
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %50) #6
  br i1 %737, label %738, label %744

738:                                              ; preds = %736
  invoke void @_Z21jc_test_set_test_faili(i32 noundef 1)
          to label %771 unwind label %740

739:                                              ; preds = %711, %713, %690, %688
  %.pn206 = phi { ptr, i32 } [ %689, %688 ], [ %691, %690 ], [ %712, %711 ], [ %714, %713 ]
  call void @_ZN25TestAsyncGetBlockCompleteD2Ev(ptr noundef nonnull align 8 dereferenceable(40) %45) #6
  call void @llvm.lifetime.end.p0(i64 40, ptr nonnull %45) #6
  br label %908

740:                                              ; preds = %744, %738, %728, %722, %720
  %741 = landingpad { ptr, i32 }
          cleanup
  br label %790

742:                                              ; preds = %734, %730
  %743 = landingpad { ptr, i32 }
          cleanup
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %51) #6
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %50) #6
  br label %790

744:                                              ; preds = %736
  invoke void @_ZN25TestAsyncGetBlockComplete4WaitEv(ptr noundef nonnull align 8 dereferenceable(40) %49)
          to label %745 unwind label %740

745:                                              ; preds = %744
  %746 = getelementptr inbounds i8, ptr %49, i64 32
  %747 = load ptr, ptr %746, align 8, !tbaa !26
  %748 = invoke noundef ptr @_ZL19jc_test_get_fixturev()
          to label %749 unwind label %763

749:                                              ; preds = %745
  %750 = getelementptr inbounds i8, ptr %748, i64 96
  %751 = load i32, ptr %750, align 8
  %752 = and i32 %751, -16776961
  %753 = or disjoint i32 %752, 488192
  store i32 %753, ptr %750, align 8
  %754 = invoke noundef ptr @_ZL19jc_test_get_fixturev()
          to label %755 unwind label %763

755:                                              ; preds = %749
  %756 = getelementptr inbounds i8, ptr %754, i64 32
  store ptr @.str.3, ptr %756, align 8, !tbaa !10
  invoke void @_Z28jc_test_increment_assertionsv()
          to label %757 unwind label %763

757:                                              ; preds = %755
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %52) #6
  store i32 0, ptr %52, align 4, !tbaa !15
  %758 = getelementptr inbounds i8, ptr %49, i64 24
  %759 = invoke noundef i32 @_ZN21jc_test_cmp_eq_helperILb1EE7compareIiiEEiRKT_RKT0_PKcS9_PN23jc_test_enable_argumentIXntsr18jc_test_is_pointerIS5_EE5valueEE4typeE(ptr noundef nonnull align 4 dereferenceable(4) %52, ptr noundef nonnull align 4 dereferenceable(4) %758, ptr noundef nonnull @.str.46, ptr noundef nonnull @.str.275, ptr noundef null)
          to label %760 unwind label %765

760:                                              ; preds = %757
  %761 = icmp eq i32 %759, 0
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %52) #6
  br i1 %761, label %762, label %767

762:                                              ; preds = %760
  invoke void @_Z21jc_test_set_test_faili(i32 noundef 1)
          to label %771 unwind label %763

763:                                              ; preds = %769, %762, %755, %749, %745
  %764 = landingpad { ptr, i32 }
          cleanup
  br label %790

765:                                              ; preds = %757
  %766 = landingpad { ptr, i32 }
          cleanup
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %52) #6
  br label %790

767:                                              ; preds = %760
  %768 = load ptr, ptr %747, align 8, !tbaa !24
  %.not208 = icmp eq ptr %768, null
  br i1 %.not208, label %772, label %769

769:                                              ; preds = %767
  %770 = invoke noundef i32 %768(ptr noundef nonnull %747)
          to label %772 unwind label %763

771:                                              ; preds = %762, %738
  call void @_ZN25TestAsyncGetBlockCompleteD2Ev(ptr noundef nonnull align 8 dereferenceable(40) %49) #6
  call void @llvm.lifetime.end.p0(i64 40, ptr nonnull %49) #6
  br label %906

772:                                              ; preds = %769, %767
  call void @_ZN25TestAsyncGetBlockCompleteD2Ev(ptr noundef nonnull align 8 dereferenceable(40) %49) #6
  call void @llvm.lifetime.end.p0(i64 40, ptr nonnull %49) #6
  call void @llvm.lifetime.start.p0(i64 40, ptr nonnull %53) #6
  call void @_ZN25TestAsyncGetBlockCompleteC2Ev(ptr noundef nonnull align 8 dereferenceable(40) %53)
  %773 = invoke noundef ptr @_ZL19jc_test_get_fixturev()
          to label %774 unwind label %791

774:                                              ; preds = %772
  %775 = getelementptr inbounds i8, ptr %773, i64 96
  %776 = load i32, ptr %775, align 8
  %777 = and i32 %776, -16776961
  %778 = or disjoint i32 %777, 490240
  store i32 %778, ptr %775, align 8
  %779 = invoke noundef ptr @_ZL19jc_test_get_fixturev()
          to label %780 unwind label %791

780:                                              ; preds = %774
  %781 = getelementptr inbounds i8, ptr %779, i64 32
  store ptr @.str.3, ptr %781, align 8, !tbaa !10
  invoke void @_Z28jc_test_increment_assertionsv()
          to label %782 unwind label %791

782:                                              ; preds = %780
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %54) #6
  store i32 0, ptr %54, align 4, !tbaa !15
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %55) #6
  %783 = load ptr, ptr %487, align 8, !tbaa !25
  %784 = invoke noundef i32 %783(ptr noundef nonnull %67, i64 noundef %578, ptr noundef nonnull %53)
          to label %785 unwind label %793

785:                                              ; preds = %782
  store i32 %784, ptr %55, align 4, !tbaa !15
  %786 = 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) %54, ptr noundef nonnull align 4 dereferenceable(4) %55, ptr noundef nonnull @.str.46, ptr noundef nonnull @.str.312, ptr noundef null)
          to label %787 unwind label %793

787:                                              ; preds = %785
  %788 = icmp eq i32 %786, 0
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %55) #6
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %54) #6
  br i1 %788, label %789, label %795

789:                                              ; preds = %787
  invoke void @_Z21jc_test_set_test_faili(i32 noundef 1)
          to label %822 unwind label %791

790:                                              ; preds = %763, %765, %742, %740
  %.pn211 = phi { ptr, i32 } [ %741, %740 ], [ %743, %742 ], [ %764, %763 ], [ %766, %765 ]
  call void @_ZN25TestAsyncGetBlockCompleteD2Ev(ptr noundef nonnull align 8 dereferenceable(40) %49) #6
  call void @llvm.lifetime.end.p0(i64 40, ptr nonnull %49) #6
  br label %908

791:                                              ; preds = %795, %789, %780, %774, %772
  %792 = landingpad { ptr, i32 }
          cleanup
  br label %841

793:                                              ; preds = %785, %782
  %794 = landingpad { ptr, i32 }
          cleanup
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %55) #6
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %54) #6
  br label %841

795:                                              ; preds = %787
  invoke void @_ZN25TestAsyncGetBlockComplete4WaitEv(ptr noundef nonnull align 8 dereferenceable(40) %53)
          to label %796 unwind label %791

796:                                              ; preds = %795
  %797 = getelementptr inbounds i8, ptr %53, i64 32
  %798 = load ptr, ptr %797, align 8, !tbaa !26
  %799 = invoke noundef ptr @_ZL19jc_test_get_fixturev()
          to label %800 unwind label %814

800:                                              ; preds = %796
  %801 = getelementptr inbounds i8, ptr %799, i64 96
  %802 = load i32, ptr %801, align 8
  %803 = and i32 %802, -16776961
  %804 = or disjoint i32 %803, 491008
  store i32 %804, ptr %801, align 8
  %805 = invoke noundef ptr @_ZL19jc_test_get_fixturev()
          to label %806 unwind label %814

806:                                              ; preds = %800
  %807 = getelementptr inbounds i8, ptr %805, i64 32
  store ptr @.str.3, ptr %807, align 8, !tbaa !10
  invoke void @_Z28jc_test_increment_assertionsv()
          to label %808 unwind label %814

808:                                              ; preds = %806
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %56) #6
  store i32 0, ptr %56, align 4, !tbaa !15
  %809 = getelementptr inbounds i8, ptr %53, i64 24
  %810 = 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) %56, ptr noundef nonnull align 4 dereferenceable(4) %809, ptr noundef nonnull @.str.46, ptr noundef nonnull @.str.275, ptr noundef null)
          to label %811 unwind label %816

811:                                              ; preds = %808
  %812 = icmp eq i32 %810, 0
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %56) #6
  br i1 %812, label %813, label %818

813:                                              ; preds = %811
  invoke void @_Z21jc_test_set_test_faili(i32 noundef 1)
          to label %822 unwind label %814

814:                                              ; preds = %820, %813, %806, %800, %796
  %815 = landingpad { ptr, i32 }
          cleanup
  br label %841

816:                                              ; preds = %808
  %817 = landingpad { ptr, i32 }
          cleanup
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %56) #6
  br label %841

818:                                              ; preds = %811
  %819 = load ptr, ptr %798, align 8, !tbaa !24
  %.not213 = icmp eq ptr %819, null
  br i1 %.not213, label %823, label %820

820:                                              ; preds = %818
  %821 = invoke noundef i32 %819(ptr noundef nonnull %798)
          to label %823 unwind label %814

822:                                              ; preds = %813, %789
  call void @_ZN25TestAsyncGetBlockCompleteD2Ev(ptr noundef nonnull align 8 dereferenceable(40) %53) #6
  call void @llvm.lifetime.end.p0(i64 40, ptr nonnull %53) #6
  br label %906

823:                                              ; preds = %820, %818
  call void @_ZN25TestAsyncGetBlockCompleteD2Ev(ptr noundef nonnull align 8 dereferenceable(40) %53) #6
  call void @llvm.lifetime.end.p0(i64 40, ptr nonnull %53) #6
  call void @llvm.lifetime.start.p0(i64 40, ptr nonnull %57) #6
  call void @_ZN25TestAsyncGetBlockCompleteC2Ev(ptr noundef nonnull align 8 dereferenceable(40) %57)
  %824 = invoke noundef ptr @_ZL19jc_test_get_fixturev()
          to label %825 unwind label %842

825:                                              ; preds = %823
  %826 = getelementptr inbounds i8, ptr %824, i64 96
  %827 = load i32, ptr %826, align 8
  %828 = and i32 %827, -16776961
  %829 = or disjoint i32 %828, 493056
  store i32 %829, ptr %826, align 8
  %830 = invoke noundef ptr @_ZL19jc_test_get_fixturev()
          to label %831 unwind label %842

831:                                              ; preds = %825
  %832 = getelementptr inbounds i8, ptr %830, i64 32
  store ptr @.str.3, ptr %832, align 8, !tbaa !10
  invoke void @_Z28jc_test_increment_assertionsv()
          to label %833 unwind label %842

833:                                              ; preds = %831
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %58) #6
  store i32 0, ptr %58, align 4, !tbaa !15
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %59) #6
  %834 = load ptr, ptr %487, align 8, !tbaa !25
  %835 = invoke noundef i32 %834(ptr noundef nonnull %67, i64 noundef %732, ptr noundef nonnull %57)
          to label %836 unwind label %844

836:                                              ; preds = %833
  store i32 %835, ptr %59, align 4, !tbaa !15
  %837 = 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) %58, ptr noundef nonnull align 4 dereferenceable(4) %59, ptr noundef nonnull @.str.46, ptr noundef nonnull @.str.315, ptr noundef null)
          to label %838 unwind label %844

838:                                              ; preds = %836
  %839 = icmp eq i32 %837, 0
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %59) #6
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %58) #6
  br i1 %839, label %840, label %846

840:                                              ; preds = %838
  invoke void @_Z21jc_test_set_test_faili(i32 noundef 1)
          to label %.critedge245 unwind label %842

841:                                              ; preds = %814, %816, %793, %791
  %.pn216 = phi { ptr, i32 } [ %792, %791 ], [ %794, %793 ], [ %815, %814 ], [ %817, %816 ]
  call void @_ZN25TestAsyncGetBlockCompleteD2Ev(ptr noundef nonnull align 8 dereferenceable(40) %53) #6
  call void @llvm.lifetime.end.p0(i64 40, ptr nonnull %53) #6
  br label %908

842:                                              ; preds = %846, %840, %831, %825, %823
  %843 = landingpad { ptr, i32 }
          cleanup
  br label %888

844:                                              ; preds = %836, %833
  %845 = landingpad { ptr, i32 }
          cleanup
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %59) #6
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %58) #6
  br label %888

846:                                              ; preds = %838
  invoke void @_ZN25TestAsyncGetBlockComplete4WaitEv(ptr noundef nonnull align 8 dereferenceable(40) %57)
          to label %847 unwind label %842

847:                                              ; preds = %846
  %848 = getelementptr inbounds i8, ptr %57, i64 32
  %849 = load ptr, ptr %848, align 8, !tbaa !26
  %850 = invoke noundef ptr @_ZL19jc_test_get_fixturev()
          to label %851 unwind label %864

851:                                              ; preds = %847
  %852 = getelementptr inbounds i8, ptr %850, i64 96
  %853 = load i32, ptr %852, align 8
  %854 = and i32 %853, -16776961
  %855 = or disjoint i32 %854, 493824
  store i32 %855, ptr %852, align 8
  %856 = invoke noundef ptr @_ZL19jc_test_get_fixturev()
          to label %857 unwind label %864

857:                                              ; preds = %851
  %858 = getelementptr inbounds i8, ptr %856, i64 32
  store ptr @.str.3, ptr %858, align 8, !tbaa !10
  invoke void @_Z28jc_test_increment_assertionsv()
          to label %859 unwind label %864

859:                                              ; preds = %857
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %60) #6
  store i32 0, ptr %60, align 4, !tbaa !15
  %860 = getelementptr inbounds i8, ptr %57, i64 24
  %861 = 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) %60, ptr noundef nonnull align 4 dereferenceable(4) %860, ptr noundef nonnull @.str.46, ptr noundef nonnull @.str.275, ptr noundef null)
          to label %862 unwind label %866

862:                                              ; preds = %859
  %.not270 = icmp eq i32 %861, 0
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %60) #6
  br i1 %.not270, label %863, label %868

863:                                              ; preds = %862
  invoke void @_Z21jc_test_set_test_faili(i32 noundef 1)
          to label %872 unwind label %864

864:                                              ; preds = %870, %863, %857, %851, %847
  %865 = landingpad { ptr, i32 }
          cleanup
  br label %888

866:                                              ; preds = %859
  %867 = landingpad { ptr, i32 }
          cleanup
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %60) #6
  br label %888

868:                                              ; preds = %862
  %869 = load ptr, ptr %849, align 8, !tbaa !24
  %.not218 = icmp eq ptr %869, null
  br i1 %.not218, label %873, label %870

870:                                              ; preds = %868
  %871 = invoke noundef i32 %869(ptr noundef nonnull %849)
          to label %873 unwind label %864

872:                                              ; preds = %863
  call void @_ZN25TestAsyncGetBlockCompleteD2Ev(ptr noundef nonnull align 8 dereferenceable(40) %57) #6
  call void @llvm.lifetime.end.p0(i64 40, ptr nonnull %57) #6
  br label %906

873:                                              ; preds = %870, %868
  call void @_ZN25TestAsyncGetBlockCompleteD2Ev(ptr noundef nonnull align 8 dereferenceable(40) %57) #6
  call void @llvm.lifetime.end.p0(i64 40, ptr nonnull %57) #6
  %874 = load ptr, ptr %539, align 8, !tbaa !31
  %875 = call noundef i32 %874(ptr noundef nonnull %67, ptr noundef nonnull %35)
  %876 = load ptr, ptr %542, align 8, !tbaa !31
  %877 = call noundef i32 %876(ptr noundef nonnull %66, ptr noundef nonnull %36)
  %878 = call noundef ptr @_ZL19jc_test_get_fixturev()
  %879 = getelementptr inbounds i8, ptr %878, i64 96
  %880 = load i32, ptr %879, align 8
  %881 = and i32 %880, -16776961
  %882 = or disjoint i32 %881, 495872
  store i32 %882, ptr %879, align 8
  %883 = call noundef ptr @_ZL19jc_test_get_fixturev()
  %884 = getelementptr inbounds i8, ptr %883, i64 32
  store ptr @.str.3, ptr %884, align 8, !tbaa !10
  call void @_Z28jc_test_increment_assertionsv()
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %61) #6
  store i32 13, ptr %61, align 4, !tbaa !15
  %885 = call noundef i32 @_ZN21jc_test_cmp_eq_helperILb0EE7compareIjmEEiRKT_RKT0_PKcS9_(ptr noundef nonnull align 4 dereferenceable(4) %61, ptr noundef nonnull align 8 dereferenceable(8) %35, ptr noundef nonnull @.str.316, ptr noundef nonnull @.str.310)
  %886 = icmp eq i32 %885, 0
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %61) #6
  br i1 %886, label %887, label %889

887:                                              ; preds = %873
  call void @_Z21jc_test_set_test_faili(i32 noundef 1)
  br label %906

888:                                              ; preds = %864, %866, %844, %842
  %.pn221 = phi { ptr, i32 } [ %843, %842 ], [ %845, %844 ], [ %865, %864 ], [ %867, %866 ]
  call void @_ZN25TestAsyncGetBlockCompleteD2Ev(ptr noundef nonnull align 8 dereferenceable(40) %57) #6
  call void @llvm.lifetime.end.p0(i64 40, ptr nonnull %57) #6
  br label %908

889:                                              ; preds = %873
  %890 = call noundef ptr @_ZL19jc_test_get_fixturev()
  %891 = getelementptr inbounds i8, ptr %890, i64 96
  %892 = load i32, ptr %891, align 8
  %893 = and i32 %892, -16776961
  %894 = or disjoint i32 %893, 496128
  store i32 %894, ptr %891, align 8
  %895 = call noundef ptr @_ZL19jc_test_get_fixturev()
  %896 = getelementptr inbounds i8, ptr %895, i64 32
  store ptr @.str.3, ptr %896, align 8, !tbaa !10
  call void @_Z28jc_test_increment_assertionsv()
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %62) #6
  store i32 10, ptr %62, align 4, !tbaa !15
  %897 = call noundef i32 @_ZN21jc_test_cmp_eq_helperILb0EE7compareIjmEEiRKT_RKT0_PKcS9_(ptr noundef nonnull align 4 dereferenceable(4) %62, ptr noundef nonnull align 8 dereferenceable(8) %36, ptr noundef nonnull @.str.317, ptr noundef nonnull @.str.311)
  %898 = icmp eq i32 %897, 0
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %62) #6
  br i1 %898, label %899, label %900

899:                                              ; preds = %889
  call void @_Z21jc_test_set_test_faili(i32 noundef 1)
  br label %906

900:                                              ; preds = %889
  call void @Longtail_DisposeAPI(ptr noundef nonnull %67)
  call void @Longtail_DisposeAPI(ptr noundef nonnull %66)
  %.not227 = icmp eq ptr %65, null
  br i1 %.not227, label %902, label %901

901:                                              ; preds = %900
  call void @Longtail_DisposeAPI(ptr noundef nonnull %65)
  br label %902

902:                                              ; preds = %901, %900
  %.not228 = icmp eq ptr %64, null
  br i1 %.not228, label %904, label %903

903:                                              ; preds = %902
  call void @Longtail_DisposeAPI(ptr noundef nonnull %64)
  br label %904

904:                                              ; preds = %903, %902
  %.not229 = icmp eq ptr %63, null
  br i1 %.not229, label %906, label %905

905:                                              ; preds = %904
  call void @Longtail_DisposeAPI(ptr noundef nonnull %63)
  br label %906

.critedge245:                                     ; preds = %840
  call void @_ZN25TestAsyncGetBlockCompleteD2Ev(ptr noundef nonnull align 8 dereferenceable(40) %57) #6
  call void @llvm.lifetime.end.p0(i64 40, ptr nonnull %57) #6
  br label %906

906:                                              ; preds = %872, %822, %771, %719, %667, %616, %904, %905, %.critedge245, %899, %887, %565, %554
  call void @llvm.lifetime.end.p0(i64 176, ptr nonnull %36) #6
  call void @llvm.lifetime.end.p0(i64 176, ptr nonnull %35) #6
  br label %907

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

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

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

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

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

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

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

907:                                              ; preds = %538, %.critedge241, %.critedge239, %.critedge237, %.critedge235, %.critedge233, %.critedge231, %.critedge, %906
  call void @llvm.lifetime.end.p0(i64 56, ptr nonnull %2) #6
  ret void

908:                                              ; preds = %888, %841, %790, %739, %687, %635
  %.pn221.pn = phi { ptr, i32 } [ %.pn221, %888 ], [ %.pn216, %841 ], [ %.pn211, %790 ], [ %.pn206, %739 ], [ %.pn201, %687 ], [ %.pn196, %635 ]
  call void @llvm.lifetime.end.p0(i64 176, ptr nonnull %36) #6
  call void @llvm.lifetime.end.p0(i64 176, ptr nonnull %35) #6
  br label %909

909:                                              ; preds = %908, %537, %490, %453, %452, %393, %392, %333, %332, %273, %272, %213, %212, %153, %152, %94
  %.pn221.pn.pn = phi { ptr, i32 } [ %.pn221.pn, %908 ], [ %.pn191, %537 ], [ %.pn186, %490 ], [ %454, %453 ], [ %.pn183, %452 ], [ %394, %393 ], [ %.pn180, %392 ], [ %334, %333 ], [ %.pn177, %332 ], [ %274, %273 ], [ %.pn174, %272 ], [ %214, %213 ], [ %.pn171, %212 ], [ %154, %153 ], [ %.pn, %152 ], [ %95, %94 ]
  call void @llvm.lifetime.end.p0(i64 56, ptr nonnull %2) #6
  resume { ptr, i32 } %.pn221.pn.pn
}

declare ptr @Longtail_CreateLRUBlockStoreAPI(ptr noundef, i32 noundef) local_unnamed_addr #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

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 24}
!26 = !{!27, !7, i64 32}
!27 = !{!"_ZTS25TestAsyncGetBlockComplete", !28, i64 0, !7, i64 16, !13, i64 24, !7, i64 32}
!28 = !{!"_ZTS31Longtail_AsyncGetStoredBlockAPI", !18, i64 0, !7, i64 8}
!29 = distinct !{!29, !30}
!30 = !{!"llvm.loop.mustprogress"}
!31 = !{!17, !7, i64 48}


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