; LLVM IR from DanEngelbrecht/longtail :: test/test.ll/ZN39Longtail_TestFullHashRegistry (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.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_HashRegistryAPI = type { %struct.Longtail_API, ptr }
%struct.Longtail_API = type { 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.65 = external hidden unnamed_addr constant [28 x i8], align 1
@.str.138 = external hidden unnamed_addr constant [2 x i8], align 1
@.str.613 = external hidden unnamed_addr constant [36 x i8], align 1
@.str.614 = external hidden unnamed_addr constant [14 x i8], align 1
@.str.615 = external hidden unnamed_addr constant [16 x i8], align 1
@.str.616 = external hidden unnamed_addr constant [4 x i8], align 1
@.str.617 = external hidden unnamed_addr constant [16 x i8], align 1
@.str.618 = external hidden unnamed_addr constant [14 x i8], align 1
@.str.619 = external hidden unnamed_addr constant [71 x i8], align 1
@.str.620 = external hidden unnamed_addr constant [15 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

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

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

; Function Attrs: mustprogress uwtable
define dso_local void @_ZN39Longtail_TestFullHashRegistry__TestCase8TestBodyEv(ptr noundef nonnull align 8 dereferenceable(8) %0) unnamed_addr #3 align 2 {
  %2 = alloca ptr, align 8
  %3 = alloca ptr, align 8
  %4 = alloca i32, align 4
  %5 = alloca ptr, align 8
  %6 = alloca i32, align 4
  %7 = alloca ptr, align 8
  %8 = alloca ptr, align 8
  %9 = alloca i32, align 4
  %10 = alloca ptr, align 8
  %11 = alloca ptr, align 8
  %12 = alloca ptr, align 8
  %13 = alloca i32, align 4
  %14 = alloca ptr, align 8
  %15 = alloca ptr, align 8
  %16 = alloca ptr, align 8
  %17 = alloca i32, align 4
  %18 = alloca ptr, align 8
  %19 = alloca i32, align 4
  %20 = alloca i32, align 4
  %21 = alloca ptr, align 8
  store ptr %0, ptr %2, align 8, !tbaa !5
  %22 = load ptr, ptr %2, align 8
  call void @llvm.lifetime.start.p0(i64 8, ptr %3) #4
  %23 = call ptr @Longtail_CreateFullHashRegistry()
  store ptr %23, ptr %3, align 8, !tbaa !5
  br label %24

24:                                               ; preds = %1
  %25 = call noundef ptr @_ZL19jc_test_get_fixturev()
  %26 = getelementptr inbounds %struct.jc_test_fixture, ptr %25, i32 0, i32 11
  %27 = load i32, ptr %26, align 8
  %28 = and i32 %27, -16776961
  %29 = or i32 %28, 1181184
  store i32 %29, ptr %26, align 8
  %30 = call noundef ptr @_ZL19jc_test_get_fixturev()
  %31 = getelementptr inbounds %struct.jc_test_fixture, ptr %30, i32 0, i32 4
  store ptr @.str.3, ptr %31, align 8, !tbaa !9
  call void @_Z28jc_test_increment_assertionsv()
  %32 = load ptr, ptr %3, align 8, !tbaa !5
  %33 = call noundef i32 @_Z14jc_test_cmp_NEIP24Longtail_HashRegistryAPIS1_EiT_T0_PKcS5_(ptr noundef null, ptr noundef %32, ptr noundef @.str.613, ptr noundef @.str.614)
  %34 = icmp eq i32 %33, 0
  br i1 %34, label %35, label %36

35:                                               ; preds = %24
  call void @_Z21jc_test_set_test_faili(i32 noundef 1)
  store i32 1, ptr %4, align 4
  br label %286

36:                                               ; preds = %24
  br label %37

37:                                               ; preds = %36
  br label %38

38:                                               ; preds = %37
  call void @llvm.lifetime.start.p0(i64 8, ptr %5) #4
  store ptr null, ptr %5, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 4, ptr %6) #4
  %39 = load ptr, ptr %3, align 8, !tbaa !5
  %40 = getelementptr inbounds %struct.Longtail_HashRegistryAPI, ptr %39, i32 0, i32 1
  %41 = load ptr, ptr %40, align 8, !tbaa !14
  %42 = load ptr, ptr %3, align 8, !tbaa !5
  %43 = call i32 @Longtail_GetBlake2HashType()
  %44 = call noundef i32 %41(ptr noundef %42, i32 noundef %43, ptr noundef %5)
  store i32 %44, ptr %6, align 4, !tbaa !17
  %45 = load i32, ptr %6, align 4, !tbaa !17
  switch i32 %45, label %77 [
    i32 0, label %46
    i32 95, label %62
  ]

46:                                               ; preds = %38
  br label %47

47:                                               ; preds = %46
  %48 = call noundef ptr @_ZL19jc_test_get_fixturev()
  %49 = getelementptr inbounds %struct.jc_test_fixture, ptr %48, i32 0, i32 11
  %50 = load i32, ptr %49, align 8
  %51 = and i32 %50, -16776961
  %52 = or i32 %51, 1182720
  store i32 %52, ptr %49, align 8
  %53 = call noundef ptr @_ZL19jc_test_get_fixturev()
  %54 = getelementptr inbounds %struct.jc_test_fixture, ptr %53, i32 0, i32 4
  store ptr @.str.3, ptr %54, align 8, !tbaa !9
  call void @_Z28jc_test_increment_assertionsv()
  %55 = load ptr, ptr %5, align 8, !tbaa !5
  %56 = call noundef i32 @_Z14jc_test_cmp_NEIP16Longtail_HashAPIS1_EiT_T0_PKcS5_(ptr noundef null, ptr noundef %55, ptr noundef @.str.65, ptr noundef @.str.615)
  %57 = icmp eq i32 %56, 0
  br i1 %57, label %58, label %59

58:                                               ; preds = %47
  call void @_Z21jc_test_set_test_faili(i32 noundef 1)
  store i32 1, ptr %4, align 4
  br label %285

59:                                               ; preds = %47
  br label %60

60:                                               ; preds = %59
  br label %61

61:                                               ; preds = %60
  br label %106

62:                                               ; preds = %38
  br label %63

63:                                               ; preds = %62
  %64 = call noundef ptr @_ZL19jc_test_get_fixturev()
  %65 = getelementptr inbounds %struct.jc_test_fixture, ptr %64, i32 0, i32 11
  %66 = load i32, ptr %65, align 8
  %67 = and i32 %66, -16776961
  %68 = or i32 %67, 1183488
  store i32 %68, ptr %65, align 8
  %69 = call noundef ptr @_ZL19jc_test_get_fixturev()
  %70 = getelementptr inbounds %struct.jc_test_fixture, ptr %69, i32 0, i32 4
  store ptr @.str.3, ptr %70, align 8, !tbaa !9
  call void @_Z28jc_test_increment_assertionsv()
  call void @llvm.lifetime.start.p0(i64 8, ptr %7) #4
  store ptr null, ptr %7, align 8, !tbaa !5
  %71 = call noundef i32 @_ZN21jc_test_cmp_eq_helperILb0EE7compareIP16Longtail_HashAPIS3_EEiRKT_RKT0_PKcSB_(ptr noundef nonnull align 8 dereferenceable(8) %7, ptr noundef nonnull align 8 dereferenceable(8) %5, ptr noundef @.str.65, ptr noundef @.str.615)
  %72 = icmp eq i32 %71, 0
  call void @llvm.lifetime.end.p0(i64 8, ptr %7) #4
  br i1 %72, label %73, label %74

73:                                               ; preds = %63
  call void @_Z21jc_test_set_test_faili(i32 noundef 1)
  store i32 1, ptr %4, align 4
  br label %285

74:                                               ; preds = %63
  br label %75

75:                                               ; preds = %74
  br label %76

76:                                               ; preds = %75
  br label %106

77:                                               ; preds = %38
  br label %78

78:                                               ; preds = %77
  %79 = call noundef ptr @_ZL19jc_test_get_fixturev()
  %80 = getelementptr inbounds %struct.jc_test_fixture, ptr %79, i32 0, i32 11
  %81 = load i32, ptr %80, align 8
  %82 = and i32 %81, -16776961
  %83 = or i32 %82, 1184256
  store i32 %83, ptr %80, align 8
  %84 = call noundef ptr @_ZL19jc_test_get_fixturev()
  %85 = getelementptr inbounds %struct.jc_test_fixture, ptr %84, i32 0, i32 4
  store ptr @.str.3, ptr %85, align 8, !tbaa !9
  call void @_Z28jc_test_increment_assertionsv()
  call void @llvm.lifetime.start.p0(i64 8, ptr %8) #4
  store ptr null, ptr %8, align 8, !tbaa !5
  %86 = call noundef i32 @_ZN21jc_test_cmp_eq_helperILb0EE7compareIP16Longtail_HashAPIS3_EEiRKT_RKT0_PKcSB_(ptr noundef nonnull align 8 dereferenceable(8) %8, ptr noundef nonnull align 8 dereferenceable(8) %5, ptr noundef @.str.65, ptr noundef @.str.615)
  %87 = icmp eq i32 %86, 0
  call void @llvm.lifetime.end.p0(i64 8, ptr %8) #4
  br i1 %87, label %88, label %89

88:                                               ; preds = %78
  call void @_Z21jc_test_set_test_faili(i32 noundef 1)
  store i32 1, ptr %4, align 4
  br label %285

89:                                               ; preds = %78
  br label %90

90:                                               ; preds = %89
  br label %91

91:                                               ; preds = %90
  br label %92

92:                                               ; preds = %91
  %93 = call noundef ptr @_ZL19jc_test_get_fixturev()
  %94 = getelementptr inbounds %struct.jc_test_fixture, ptr %93, i32 0, i32 11
  %95 = load i32, ptr %94, align 8
  %96 = and i32 %95, -16776961
  %97 = or i32 %96, 1184512
  store i32 %97, ptr %94, align 8
  %98 = call noundef ptr @_ZL19jc_test_get_fixturev()
  %99 = getelementptr inbounds %struct.jc_test_fixture, ptr %98, i32 0, i32 4
  store ptr @.str.3, ptr %99, align 8, !tbaa !9
  call void @_Z28jc_test_increment_assertionsv()
  call void @llvm.lifetime.start.p0(i64 4, ptr %9) #4
  store i32 0, ptr %9, align 4, !tbaa !17
  %100 = call noundef i32 @_ZN21jc_test_cmp_eq_helperILb1EE7compareIiiEEiRKT_RKT0_PKcS9_PN23jc_test_enable_argumentIXntsr18jc_test_is_pointerIS5_EE5valueEE4typeE(ptr noundef nonnull align 4 dereferenceable(4) %9, ptr noundef nonnull align 4 dereferenceable(4) %6, ptr noundef @.str.46, ptr noundef @.str.616, ptr noundef null)
  %101 = icmp eq i32 %100, 0
  call void @llvm.lifetime.end.p0(i64 4, ptr %9) #4
  br i1 %101, label %102, label %103

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

103:                                              ; preds = %92
  br label %104

104:                                              ; preds = %103
  br label %105

105:                                              ; preds = %104
  br label %106

106:                                              ; preds = %105, %76, %61
  call void @llvm.lifetime.start.p0(i64 8, ptr %10) #4
  store ptr null, ptr %10, align 8, !tbaa !5
  %107 = load ptr, ptr %3, align 8, !tbaa !5
  %108 = getelementptr inbounds %struct.Longtail_HashRegistryAPI, ptr %107, i32 0, i32 1
  %109 = load ptr, ptr %108, align 8, !tbaa !14
  %110 = load ptr, ptr %3, align 8, !tbaa !5
  %111 = call i32 @Longtail_GetBlake3HashType()
  %112 = call noundef i32 %109(ptr noundef %110, i32 noundef %111, ptr noundef %10)
  store i32 %112, ptr %6, align 4, !tbaa !17
  %113 = load i32, ptr %6, align 4, !tbaa !17
  switch i32 %113, label %145 [
    i32 0, label %114
    i32 95, label %130
  ]

114:                                              ; preds = %106
  br label %115

115:                                              ; preds = %114
  %116 = call noundef ptr @_ZL19jc_test_get_fixturev()
  %117 = getelementptr inbounds %struct.jc_test_fixture, ptr %116, i32 0, i32 11
  %118 = load i32, ptr %117, align 8
  %119 = and i32 %118, -16776961
  %120 = or i32 %119, 1186816
  store i32 %120, ptr %117, align 8
  %121 = call noundef ptr @_ZL19jc_test_get_fixturev()
  %122 = getelementptr inbounds %struct.jc_test_fixture, ptr %121, i32 0, i32 4
  store ptr @.str.3, ptr %122, align 8, !tbaa !9
  call void @_Z28jc_test_increment_assertionsv()
  %123 = load ptr, ptr %10, align 8, !tbaa !5
  %124 = call noundef i32 @_Z14jc_test_cmp_NEIP16Longtail_HashAPIS1_EiT_T0_PKcS5_(ptr noundef null, ptr noundef %123, ptr noundef @.str.65, ptr noundef @.str.617)
  %125 = icmp eq i32 %124, 0
  br i1 %125, label %126, label %127

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

127:                                              ; preds = %115
  br label %128

128:                                              ; preds = %127
  br label %129

129:                                              ; preds = %128
  br label %174

130:                                              ; preds = %106
  br label %131

131:                                              ; preds = %130
  %132 = call noundef ptr @_ZL19jc_test_get_fixturev()
  %133 = getelementptr inbounds %struct.jc_test_fixture, ptr %132, i32 0, i32 11
  %134 = load i32, ptr %133, align 8
  %135 = and i32 %134, -16776961
  %136 = or i32 %135, 1187584
  store i32 %136, ptr %133, align 8
  %137 = call noundef ptr @_ZL19jc_test_get_fixturev()
  %138 = getelementptr inbounds %struct.jc_test_fixture, ptr %137, i32 0, i32 4
  store ptr @.str.3, ptr %138, align 8, !tbaa !9
  call void @_Z28jc_test_increment_assertionsv()
  call void @llvm.lifetime.start.p0(i64 8, ptr %11) #4
  store ptr null, ptr %11, align 8, !tbaa !5
  %139 = call noundef i32 @_ZN21jc_test_cmp_eq_helperILb0EE7compareIP16Longtail_HashAPIS3_EEiRKT_RKT0_PKcSB_(ptr noundef nonnull align 8 dereferenceable(8) %11, ptr noundef nonnull align 8 dereferenceable(8) %10, ptr noundef @.str.65, ptr noundef @.str.617)
  %140 = icmp eq i32 %139, 0
  call void @llvm.lifetime.end.p0(i64 8, ptr %11) #4
  br i1 %140, label %141, label %142

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

142:                                              ; preds = %131
  br label %143

143:                                              ; preds = %142
  br label %144

144:                                              ; preds = %143
  br label %174

145:                                              ; preds = %106
  br label %146

146:                                              ; preds = %145
  %147 = call noundef ptr @_ZL19jc_test_get_fixturev()
  %148 = getelementptr inbounds %struct.jc_test_fixture, ptr %147, i32 0, i32 11
  %149 = load i32, ptr %148, align 8
  %150 = and i32 %149, -16776961
  %151 = or i32 %150, 1188352
  store i32 %151, ptr %148, align 8
  %152 = call noundef ptr @_ZL19jc_test_get_fixturev()
  %153 = getelementptr inbounds %struct.jc_test_fixture, ptr %152, i32 0, i32 4
  store ptr @.str.3, ptr %153, align 8, !tbaa !9
  call void @_Z28jc_test_increment_assertionsv()
  call void @llvm.lifetime.start.p0(i64 8, ptr %12) #4
  store ptr null, ptr %12, align 8, !tbaa !5
  %154 = call noundef i32 @_ZN21jc_test_cmp_eq_helperILb0EE7compareIP16Longtail_HashAPIS3_EEiRKT_RKT0_PKcSB_(ptr noundef nonnull align 8 dereferenceable(8) %12, ptr noundef nonnull align 8 dereferenceable(8) %10, ptr noundef @.str.65, ptr noundef @.str.617)
  %155 = icmp eq i32 %154, 0
  call void @llvm.lifetime.end.p0(i64 8, ptr %12) #4
  br i1 %155, label %156, label %157

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

157:                                              ; preds = %146
  br label %158

158:                                              ; preds = %157
  br label %159

159:                                              ; preds = %158
  br label %160

160:                                              ; preds = %159
  %161 = call noundef ptr @_ZL19jc_test_get_fixturev()
  %162 = getelementptr inbounds %struct.jc_test_fixture, ptr %161, i32 0, i32 11
  %163 = load i32, ptr %162, align 8
  %164 = and i32 %163, -16776961
  %165 = or i32 %164, 1188608
  store i32 %165, ptr %162, align 8
  %166 = call noundef ptr @_ZL19jc_test_get_fixturev()
  %167 = getelementptr inbounds %struct.jc_test_fixture, ptr %166, i32 0, i32 4
  store ptr @.str.3, ptr %167, align 8, !tbaa !9
  call void @_Z28jc_test_increment_assertionsv()
  call void @llvm.lifetime.start.p0(i64 4, ptr %13) #4
  store i32 0, ptr %13, align 4, !tbaa !17
  %168 = call noundef i32 @_ZN21jc_test_cmp_eq_helperILb1EE7compareIiiEEiRKT_RKT0_PKcS9_PN23jc_test_enable_argumentIXntsr18jc_test_is_pointerIS5_EE5valueEE4typeE(ptr noundef nonnull align 4 dereferenceable(4) %13, ptr noundef nonnull align 4 dereferenceable(4) %6, ptr noundef @.str.46, ptr noundef @.str.616, ptr noundef null)
  %169 = icmp eq i32 %168, 0
  call void @llvm.lifetime.end.p0(i64 4, ptr %13) #4
  br i1 %169, label %170, label %171

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

171:                                              ; preds = %160
  br label %172

172:                                              ; preds = %171
  br label %173

173:                                              ; preds = %172
  br label %174

174:                                              ; preds = %173, %144, %129
  call void @llvm.lifetime.start.p0(i64 8, ptr %14) #4
  store ptr null, ptr %14, align 8, !tbaa !5
  %175 = load ptr, ptr %3, align 8, !tbaa !5
  %176 = getelementptr inbounds %struct.Longtail_HashRegistryAPI, ptr %175, i32 0, i32 1
  %177 = load ptr, ptr %176, align 8, !tbaa !14
  %178 = load ptr, ptr %3, align 8, !tbaa !5
  %179 = call i32 @Longtail_GetMeowHashType()
  %180 = call noundef i32 %177(ptr noundef %178, i32 noundef %179, ptr noundef %14)
  store i32 %180, ptr %6, align 4, !tbaa !17
  %181 = load i32, ptr %6, align 4, !tbaa !17
  switch i32 %181, label %213 [
    i32 0, label %182
    i32 95, label %198
  ]

182:                                              ; preds = %174
  br label %183

183:                                              ; preds = %182
  %184 = call noundef ptr @_ZL19jc_test_get_fixturev()
  %185 = getelementptr inbounds %struct.jc_test_fixture, ptr %184, i32 0, i32 11
  %186 = load i32, ptr %185, align 8
  %187 = and i32 %186, -16776961
  %188 = or i32 %187, 1190912
  store i32 %188, ptr %185, align 8
  %189 = call noundef ptr @_ZL19jc_test_get_fixturev()
  %190 = getelementptr inbounds %struct.jc_test_fixture, ptr %189, i32 0, i32 4
  store ptr @.str.3, ptr %190, align 8, !tbaa !9
  call void @_Z28jc_test_increment_assertionsv()
  %191 = load ptr, ptr %14, align 8, !tbaa !5
  %192 = call noundef i32 @_Z14jc_test_cmp_NEIP16Longtail_HashAPIS1_EiT_T0_PKcS5_(ptr noundef null, ptr noundef %191, ptr noundef @.str.65, ptr noundef @.str.618)
  %193 = icmp eq i32 %192, 0
  br i1 %193, label %194, label %195

194:                                              ; preds = %183
  call void @_Z21jc_test_set_test_faili(i32 noundef 1)
  store i32 1, ptr %4, align 4
  br label %283

195:                                              ; preds = %183
  br label %196

196:                                              ; preds = %195
  br label %197

197:                                              ; preds = %196
  br label %242

198:                                              ; preds = %174
  br label %199

199:                                              ; preds = %198
  %200 = call noundef ptr @_ZL19jc_test_get_fixturev()
  %201 = getelementptr inbounds %struct.jc_test_fixture, ptr %200, i32 0, i32 11
  %202 = load i32, ptr %201, align 8
  %203 = and i32 %202, -16776961
  %204 = or i32 %203, 1191680
  store i32 %204, ptr %201, align 8
  %205 = call noundef ptr @_ZL19jc_test_get_fixturev()
  %206 = getelementptr inbounds %struct.jc_test_fixture, ptr %205, i32 0, i32 4
  store ptr @.str.3, ptr %206, align 8, !tbaa !9
  call void @_Z28jc_test_increment_assertionsv()
  call void @llvm.lifetime.start.p0(i64 8, ptr %15) #4
  store ptr null, ptr %15, align 8, !tbaa !5
  %207 = call noundef i32 @_ZN21jc_test_cmp_eq_helperILb0EE7compareIP16Longtail_HashAPIS3_EEiRKT_RKT0_PKcSB_(ptr noundef nonnull align 8 dereferenceable(8) %15, ptr noundef nonnull align 8 dereferenceable(8) %14, ptr noundef @.str.65, ptr noundef @.str.618)
  %208 = icmp eq i32 %207, 0
  call void @llvm.lifetime.end.p0(i64 8, ptr %15) #4
  br i1 %208, label %209, label %210

209:                                              ; preds = %199
  call void @_Z21jc_test_set_test_faili(i32 noundef 1)
  store i32 1, ptr %4, align 4
  br label %283

210:                                              ; preds = %199
  br label %211

211:                                              ; preds = %210
  br label %212

212:                                              ; preds = %211
  br label %242

213:                                              ; preds = %174
  br label %214

214:                                              ; preds = %213
  %215 = call noundef ptr @_ZL19jc_test_get_fixturev()
  %216 = getelementptr inbounds %struct.jc_test_fixture, ptr %215, i32 0, i32 11
  %217 = load i32, ptr %216, align 8
  %218 = and i32 %217, -16776961
  %219 = or i32 %218, 1192448
  store i32 %219, ptr %216, align 8
  %220 = call noundef ptr @_ZL19jc_test_get_fixturev()
  %221 = getelementptr inbounds %struct.jc_test_fixture, ptr %220, i32 0, i32 4
  store ptr @.str.3, ptr %221, align 8, !tbaa !9
  call void @_Z28jc_test_increment_assertionsv()
  call void @llvm.lifetime.start.p0(i64 8, ptr %16) #4
  store ptr null, ptr %16, align 8, !tbaa !5
  %222 = call noundef i32 @_ZN21jc_test_cmp_eq_helperILb0EE7compareIP16Longtail_HashAPIS3_EEiRKT_RKT0_PKcSB_(ptr noundef nonnull align 8 dereferenceable(8) %16, ptr noundef nonnull align 8 dereferenceable(8) %14, ptr noundef @.str.65, ptr noundef @.str.618)
  %223 = icmp eq i32 %222, 0
  call void @llvm.lifetime.end.p0(i64 8, ptr %16) #4
  br i1 %223, label %224, label %225

224:                                              ; preds = %214
  call void @_Z21jc_test_set_test_faili(i32 noundef 1)
  store i32 1, ptr %4, align 4
  br label %283

225:                                              ; preds = %214
  br label %226

226:                                              ; preds = %225
  br label %227

227:                                              ; preds = %226
  br label %228

228:                                              ; preds = %227
  %229 = call noundef ptr @_ZL19jc_test_get_fixturev()
  %230 = getelementptr inbounds %struct.jc_test_fixture, ptr %229, i32 0, i32 11
  %231 = load i32, ptr %230, align 8
  %232 = and i32 %231, -16776961
  %233 = or i32 %232, 1192704
  store i32 %233, ptr %230, align 8
  %234 = call noundef ptr @_ZL19jc_test_get_fixturev()
  %235 = getelementptr inbounds %struct.jc_test_fixture, ptr %234, i32 0, i32 4
  store ptr @.str.3, ptr %235, align 8, !tbaa !9
  call void @_Z28jc_test_increment_assertionsv()
  call void @llvm.lifetime.start.p0(i64 4, ptr %17) #4
  store i32 0, ptr %17, align 4, !tbaa !17
  %236 = call noundef i32 @_ZN21jc_test_cmp_eq_helperILb1EE7compareIiiEEiRKT_RKT0_PKcS9_PN23jc_test_enable_argumentIXntsr18jc_test_is_pointerIS5_EE5valueEE4typeE(ptr noundef nonnull align 4 dereferenceable(4) %17, ptr noundef nonnull align 4 dereferenceable(4) %6, ptr noundef @.str.46, ptr noundef @.str.616, ptr noundef null)
  %237 = icmp eq i32 %236, 0
  call void @llvm.lifetime.end.p0(i64 4, ptr %17) #4
  br i1 %237, label %238, label %239

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

239:                                              ; preds = %228
  br label %240

240:                                              ; preds = %239
  br label %241

241:                                              ; preds = %240
  br label %242

242:                                              ; preds = %241, %212, %197
  call void @llvm.lifetime.start.p0(i64 8, ptr %18) #4
  store ptr null, ptr %18, align 8, !tbaa !5
  br label %243

243:                                              ; preds = %242
  %244 = call noundef ptr @_ZL19jc_test_get_fixturev()
  %245 = getelementptr inbounds %struct.jc_test_fixture, ptr %244, i32 0, i32 11
  %246 = load i32, ptr %245, align 8
  %247 = and i32 %246, -16776961
  %248 = or i32 %247, 1193984
  store i32 %248, ptr %245, align 8
  %249 = call noundef ptr @_ZL19jc_test_get_fixturev()
  %250 = getelementptr inbounds %struct.jc_test_fixture, ptr %249, i32 0, i32 4
  store ptr @.str.3, ptr %250, align 8, !tbaa !9
  call void @_Z28jc_test_increment_assertionsv()
  call void @llvm.lifetime.start.p0(i64 4, ptr %19) #4
  store i32 2, ptr %19, align 4, !tbaa !17
  call void @llvm.lifetime.start.p0(i64 4, ptr %20) #4
  %251 = load ptr, ptr %3, align 8, !tbaa !5
  %252 = getelementptr inbounds %struct.Longtail_HashRegistryAPI, ptr %251, i32 0, i32 1
  %253 = load ptr, ptr %252, align 8, !tbaa !14
  %254 = load ptr, ptr %3, align 8, !tbaa !5
  %255 = call noundef i32 %253(ptr noundef %254, i32 noundef -559038737, ptr noundef %18)
  store i32 %255, ptr %20, align 4, !tbaa !17
  %256 = call noundef i32 @_ZN21jc_test_cmp_eq_helperILb0EE7compareIiiEEiRKT_RKT0_PKcS9_(ptr noundef nonnull align 4 dereferenceable(4) %19, ptr noundef nonnull align 4 dereferenceable(4) %20, ptr noundef @.str.138, ptr noundef @.str.619)
  %257 = icmp eq i32 %256, 0
  call void @llvm.lifetime.end.p0(i64 4, ptr %20) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %19) #4
  br i1 %257, label %258, label %259

258:                                              ; preds = %243
  call void @_Z21jc_test_set_test_faili(i32 noundef 1)
  store i32 1, ptr %4, align 4
  br label %282

259:                                              ; preds = %243
  br label %260

260:                                              ; preds = %259
  br label %261

261:                                              ; preds = %260
  br label %262

262:                                              ; preds = %261
  %263 = call noundef ptr @_ZL19jc_test_get_fixturev()
  %264 = getelementptr inbounds %struct.jc_test_fixture, ptr %263, i32 0, i32 11
  %265 = load i32, ptr %264, align 8
  %266 = and i32 %265, -16776961
  %267 = or i32 %266, 1194240
  store i32 %267, ptr %264, align 8
  %268 = call noundef ptr @_ZL19jc_test_get_fixturev()
  %269 = getelementptr inbounds %struct.jc_test_fixture, ptr %268, i32 0, i32 4
  store ptr @.str.3, ptr %269, align 8, !tbaa !9
  call void @_Z28jc_test_increment_assertionsv()
  call void @llvm.lifetime.start.p0(i64 8, ptr %21) #4
  store ptr null, ptr %21, align 8, !tbaa !5
  %270 = call noundef i32 @_ZN21jc_test_cmp_eq_helperILb0EE7compareIP16Longtail_HashAPIS3_EEiRKT_RKT0_PKcSB_(ptr noundef nonnull align 8 dereferenceable(8) %21, ptr noundef nonnull align 8 dereferenceable(8) %18, ptr noundef @.str.65, ptr noundef @.str.620)
  %271 = icmp eq i32 %270, 0
  call void @llvm.lifetime.end.p0(i64 8, ptr %21) #4
  br i1 %271, label %272, label %273

272:                                              ; preds = %262
  call void @_Z21jc_test_set_test_faili(i32 noundef 1)
  store i32 1, ptr %4, align 4
  br label %282

273:                                              ; preds = %262
  br label %274

274:                                              ; preds = %273
  br label %275

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

278:                                              ; preds = %275
  %279 = load ptr, ptr %3, align 8, !tbaa !5
  %280 = getelementptr inbounds %struct.Longtail_HashRegistryAPI, ptr %279, i32 0, i32 0
  call void @Longtail_DisposeAPI(ptr noundef %280)
  br label %281

281:                                              ; preds = %278, %275
  store i32 0, ptr %4, align 4
  br label %282

282:                                              ; preds = %281, %272, %258
  call void @llvm.lifetime.end.p0(i64 8, ptr %18) #4
  br label %283

283:                                              ; preds = %282, %238, %224, %209, %194
  call void @llvm.lifetime.end.p0(i64 8, ptr %14) #4
  br label %284

284:                                              ; preds = %283, %170, %156, %141, %126
  call void @llvm.lifetime.end.p0(i64 8, ptr %10) #4
  br label %285

285:                                              ; preds = %284, %102, %88, %73, %58
  call void @llvm.lifetime.end.p0(i64 4, ptr %6) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %5) #4
  br label %286

286:                                              ; preds = %285, %35
  call void @llvm.lifetime.end.p0(i64 8, ptr %3) #4
  %287 = load i32, ptr %4, align 4
  switch i32 %287, label %289 [
    i32 0, label %288
    i32 1, label %288
  ]

288:                                              ; preds = %286, %286
  ret void

289:                                              ; preds = %286
  unreachable
}

declare ptr @Longtail_CreateFullHashRegistry() #2

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

declare i32 @Longtail_GetBlake2HashType() #2

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

declare i32 @Longtail_GetBlake3HashType() #2

declare i32 @Longtail_GetMeowHashType() #2

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

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

!0 = !{i32 1, !"wchar_size", i32 4}
!1 = !{i32 8, !"PIC Level", i32 2}
!2 = !{i32 7, !"PIE Level", i32 2}
!3 = !{i32 7, !"uwtable", i32 2}
!4 = !{!"clang version 19.1.0 (git@github.com:llvm/llvm-project.git a4bf6cd7cfb1a1421ba92bca9d017b49936c55e4)"}
!5 = !{!6, !6, i64 0}
!6 = !{!"any pointer", !7, i64 0}
!7 = !{!"omnipotent char", !8, i64 0}
!8 = !{!"Simple C++ TBAA"}
!9 = !{!10, !6, i64 32}
!10 = !{!"_ZTS15jc_test_fixture", !6, i64 8, !6, i64 16, !6, i64 24, !6, i64 32, !6, i64 40, !6, i64 48, !6, i64 56, !11, i64 64, !12, i64 88, !12, i64 91, !12, i64 91, !12, i64 91, !12, i64 91, !12, i64 92, !12, i64 96, !12, i64 97, !12, i64 99, !12, i64 100}
!11 = !{!"_ZTS13jc_test_stats", !12, i64 0, !12, i64 4, !12, i64 6, !12, i64 8, !12, i64 12, !13, i64 16}
!12 = !{!"int", !7, i64 0}
!13 = !{!"long", !7, i64 0}
!14 = !{!15, !6, i64 8}
!15 = !{!"_ZTS24Longtail_HashRegistryAPI", !16, i64 0, !6, i64 8}
!16 = !{!"_ZTS12Longtail_API", !6, i64 0}
!17 = !{!12, !12, i64 0}


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

@.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.65 = external hidden unnamed_addr constant [28 x i8], align 1
@.str.138 = external hidden unnamed_addr constant [2 x i8], align 1
@.str.613 = external hidden unnamed_addr constant [36 x i8], align 1
@.str.614 = external hidden unnamed_addr constant [14 x i8], align 1
@.str.615 = external hidden unnamed_addr constant [16 x i8], align 1
@.str.616 = external hidden unnamed_addr constant [4 x i8], align 1
@.str.617 = external hidden unnamed_addr constant [16 x i8], align 1
@.str.618 = external hidden unnamed_addr constant [14 x i8], align 1
@.str.619 = external hidden unnamed_addr constant [71 x i8], align 1
@.str.620 = external hidden unnamed_addr constant [15 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

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

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

; Function Attrs: mustprogress uwtable
define dso_local void @_ZN39Longtail_TestFullHashRegistry__TestCase8TestBodyEv(ptr nocapture noundef nonnull readnone align 8 dereferenceable(8) %0) unnamed_addr #3 align 2 {
  %2 = alloca ptr, align 8
  %3 = alloca i32, align 4
  %4 = alloca ptr, align 8
  %5 = alloca ptr, align 8
  %6 = alloca i32, align 4
  %7 = alloca ptr, align 8
  %8 = alloca ptr, align 8
  %9 = alloca ptr, align 8
  %10 = alloca i32, align 4
  %11 = alloca ptr, align 8
  %12 = alloca ptr, align 8
  %13 = alloca ptr, align 8
  %14 = alloca i32, align 4
  %15 = alloca ptr, align 8
  %16 = alloca i32, align 4
  %17 = alloca i32, align 4
  %18 = alloca ptr, align 8
  %19 = tail call ptr @Longtail_CreateFullHashRegistry()
  %20 = tail call noundef ptr @_ZL19jc_test_get_fixturev()
  %21 = getelementptr inbounds i8, ptr %20, i64 96
  %22 = load i32, ptr %21, align 8
  %23 = and i32 %22, -16776961
  %24 = or disjoint i32 %23, 1181184
  store i32 %24, ptr %21, align 8
  %25 = tail call noundef ptr @_ZL19jc_test_get_fixturev()
  %26 = getelementptr inbounds i8, ptr %25, i64 32
  store ptr @.str.3, ptr %26, align 8, !tbaa !5
  tail call void @_Z28jc_test_increment_assertionsv()
  %27 = tail call noundef i32 @_Z14jc_test_cmp_NEIP24Longtail_HashRegistryAPIS1_EiT_T0_PKcS5_(ptr noundef null, ptr noundef %19, ptr noundef nonnull @.str.613, ptr noundef nonnull @.str.614)
  %28 = icmp eq i32 %27, 0
  br i1 %28, label %29, label %30

29:                                               ; preds = %1
  tail call void @_Z21jc_test_set_test_faili(i32 noundef 1)
  br label %183

30:                                               ; preds = %1
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %2) #4
  store ptr null, ptr %2, align 8, !tbaa !13
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %3) #4
  %31 = getelementptr inbounds i8, ptr %19, i64 8
  %32 = load ptr, ptr %31, align 8, !tbaa !14
  %33 = tail call i32 @Longtail_GetBlake2HashType()
  %34 = call noundef i32 %32(ptr noundef %19, i32 noundef %33, ptr noundef nonnull %2)
  store i32 %34, ptr %3, align 4, !tbaa !17
  %35 = call noundef ptr @_ZL19jc_test_get_fixturev()
  %36 = getelementptr inbounds i8, ptr %35, i64 96
  %37 = load i32, ptr %36, align 8
  %38 = and i32 %37, -16776961
  switch i32 %34, label %54 [
    i32 0, label %39
    i32 95, label %47
  ]

39:                                               ; preds = %30
  %40 = or disjoint i32 %38, 1182720
  store i32 %40, ptr %36, align 8
  %41 = call noundef ptr @_ZL19jc_test_get_fixturev()
  %42 = getelementptr inbounds i8, ptr %41, i64 32
  store ptr @.str.3, ptr %42, align 8, !tbaa !5
  call void @_Z28jc_test_increment_assertionsv()
  %43 = load ptr, ptr %2, align 8, !tbaa !13
  %44 = call noundef i32 @_Z14jc_test_cmp_NEIP16Longtail_HashAPIS1_EiT_T0_PKcS5_(ptr noundef null, ptr noundef %43, ptr noundef nonnull @.str.65, ptr noundef nonnull @.str.615)
  %45 = icmp eq i32 %44, 0
  br i1 %45, label %46, label %72

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

47:                                               ; preds = %30
  %48 = or disjoint i32 %38, 1183488
  store i32 %48, ptr %36, align 8
  %49 = call noundef ptr @_ZL19jc_test_get_fixturev()
  %50 = getelementptr inbounds i8, ptr %49, i64 32
  store ptr @.str.3, ptr %50, align 8, !tbaa !5
  call void @_Z28jc_test_increment_assertionsv()
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %4) #4
  store ptr null, ptr %4, align 8, !tbaa !13
  %51 = call noundef i32 @_ZN21jc_test_cmp_eq_helperILb0EE7compareIP16Longtail_HashAPIS3_EEiRKT_RKT0_PKcSB_(ptr noundef nonnull align 8 dereferenceable(8) %4, ptr noundef nonnull align 8 dereferenceable(8) %2, ptr noundef nonnull @.str.65, ptr noundef nonnull @.str.615)
  %52 = icmp eq i32 %51, 0
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %4) #4
  br i1 %52, label %53, label %72

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

54:                                               ; preds = %30
  %55 = or disjoint i32 %38, 1184256
  store i32 %55, ptr %36, align 8
  %56 = call noundef ptr @_ZL19jc_test_get_fixturev()
  %57 = getelementptr inbounds i8, ptr %56, i64 32
  store ptr @.str.3, ptr %57, align 8, !tbaa !5
  call void @_Z28jc_test_increment_assertionsv()
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %5) #4
  store ptr null, ptr %5, align 8, !tbaa !13
  %58 = call noundef i32 @_ZN21jc_test_cmp_eq_helperILb0EE7compareIP16Longtail_HashAPIS3_EEiRKT_RKT0_PKcSB_(ptr noundef nonnull align 8 dereferenceable(8) %5, ptr noundef nonnull align 8 dereferenceable(8) %2, ptr noundef nonnull @.str.65, ptr noundef nonnull @.str.615)
  %59 = icmp eq i32 %58, 0
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %5) #4
  br i1 %59, label %60, label %61

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

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

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

72:                                               ; preds = %61, %47, %39
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %7) #4
  store ptr null, ptr %7, align 8, !tbaa !13
  %73 = load ptr, ptr %31, align 8, !tbaa !14
  %74 = call i32 @Longtail_GetBlake3HashType()
  %75 = call noundef i32 %73(ptr noundef nonnull %19, i32 noundef %74, ptr noundef nonnull %7)
  store i32 %75, ptr %3, align 4, !tbaa !17
  %76 = call noundef ptr @_ZL19jc_test_get_fixturev()
  %77 = getelementptr inbounds i8, ptr %76, i64 96
  %78 = load i32, ptr %77, align 8
  %79 = and i32 %78, -16776961
  switch i32 %75, label %95 [
    i32 0, label %80
    i32 95, label %88
  ]

80:                                               ; preds = %72
  %81 = or disjoint i32 %79, 1186816
  store i32 %81, ptr %77, align 8
  %82 = call noundef ptr @_ZL19jc_test_get_fixturev()
  %83 = getelementptr inbounds i8, ptr %82, i64 32
  store ptr @.str.3, ptr %83, align 8, !tbaa !5
  call void @_Z28jc_test_increment_assertionsv()
  %84 = load ptr, ptr %7, align 8, !tbaa !13
  %85 = call noundef i32 @_Z14jc_test_cmp_NEIP16Longtail_HashAPIS1_EiT_T0_PKcS5_(ptr noundef null, ptr noundef %84, ptr noundef nonnull @.str.65, ptr noundef nonnull @.str.617)
  %86 = icmp eq i32 %85, 0
  br i1 %86, label %87, label %113

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

88:                                               ; preds = %72
  %89 = or disjoint i32 %79, 1187584
  store i32 %89, ptr %77, align 8
  %90 = call noundef ptr @_ZL19jc_test_get_fixturev()
  %91 = getelementptr inbounds i8, ptr %90, i64 32
  store ptr @.str.3, ptr %91, align 8, !tbaa !5
  call void @_Z28jc_test_increment_assertionsv()
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %8) #4
  store ptr null, ptr %8, align 8, !tbaa !13
  %92 = call noundef i32 @_ZN21jc_test_cmp_eq_helperILb0EE7compareIP16Longtail_HashAPIS3_EEiRKT_RKT0_PKcSB_(ptr noundef nonnull align 8 dereferenceable(8) %8, ptr noundef nonnull align 8 dereferenceable(8) %7, ptr noundef nonnull @.str.65, ptr noundef nonnull @.str.617)
  %93 = icmp eq i32 %92, 0
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %8) #4
  br i1 %93, label %94, label %113

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

95:                                               ; preds = %72
  %96 = or disjoint i32 %79, 1188352
  store i32 %96, ptr %77, align 8
  %97 = call noundef ptr @_ZL19jc_test_get_fixturev()
  %98 = getelementptr inbounds i8, ptr %97, i64 32
  store ptr @.str.3, ptr %98, align 8, !tbaa !5
  call void @_Z28jc_test_increment_assertionsv()
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %9) #4
  store ptr null, ptr %9, align 8, !tbaa !13
  %99 = call noundef i32 @_ZN21jc_test_cmp_eq_helperILb0EE7compareIP16Longtail_HashAPIS3_EEiRKT_RKT0_PKcSB_(ptr noundef nonnull align 8 dereferenceable(8) %9, ptr noundef nonnull align 8 dereferenceable(8) %7, ptr noundef nonnull @.str.65, ptr noundef nonnull @.str.617)
  %100 = icmp eq i32 %99, 0
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %9) #4
  br i1 %100, label %101, label %102

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

102:                                              ; preds = %95
  %103 = call noundef ptr @_ZL19jc_test_get_fixturev()
  %104 = getelementptr inbounds i8, ptr %103, i64 96
  %105 = load i32, ptr %104, align 8
  %106 = and i32 %105, -16776961
  %107 = or disjoint i32 %106, 1188608
  store i32 %107, ptr %104, align 8
  %108 = call noundef ptr @_ZL19jc_test_get_fixturev()
  %109 = getelementptr inbounds i8, ptr %108, i64 32
  store ptr @.str.3, ptr %109, align 8, !tbaa !5
  call void @_Z28jc_test_increment_assertionsv()
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %10) #4
  store i32 0, ptr %10, align 4, !tbaa !17
  %110 = call noundef i32 @_ZN21jc_test_cmp_eq_helperILb1EE7compareIiiEEiRKT_RKT0_PKcS9_PN23jc_test_enable_argumentIXntsr18jc_test_is_pointerIS5_EE5valueEE4typeE(ptr noundef nonnull align 4 dereferenceable(4) %10, ptr noundef nonnull align 4 dereferenceable(4) %3, ptr noundef nonnull @.str.46, ptr noundef nonnull @.str.616, ptr noundef null)
  %111 = icmp eq i32 %110, 0
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %10) #4
  br i1 %111, label %112, label %113

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

113:                                              ; preds = %102, %88, %80
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %11) #4
  store ptr null, ptr %11, align 8, !tbaa !13
  %114 = load ptr, ptr %31, align 8, !tbaa !14
  %115 = call i32 @Longtail_GetMeowHashType()
  %116 = call noundef i32 %114(ptr noundef nonnull %19, i32 noundef %115, ptr noundef nonnull %11)
  store i32 %116, ptr %3, align 4, !tbaa !17
  %117 = call noundef ptr @_ZL19jc_test_get_fixturev()
  %118 = getelementptr inbounds i8, ptr %117, i64 96
  %119 = load i32, ptr %118, align 8
  %120 = and i32 %119, -16776961
  switch i32 %116, label %136 [
    i32 0, label %121
    i32 95, label %129
  ]

121:                                              ; preds = %113
  %122 = or disjoint i32 %120, 1190912
  store i32 %122, ptr %118, align 8
  %123 = call noundef ptr @_ZL19jc_test_get_fixturev()
  %124 = getelementptr inbounds i8, ptr %123, i64 32
  store ptr @.str.3, ptr %124, align 8, !tbaa !5
  call void @_Z28jc_test_increment_assertionsv()
  %125 = load ptr, ptr %11, align 8, !tbaa !13
  %126 = call noundef i32 @_Z14jc_test_cmp_NEIP16Longtail_HashAPIS1_EiT_T0_PKcS5_(ptr noundef null, ptr noundef %125, ptr noundef nonnull @.str.65, ptr noundef nonnull @.str.618)
  %127 = icmp eq i32 %126, 0
  br i1 %127, label %128, label %154

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

129:                                              ; preds = %113
  %130 = or disjoint i32 %120, 1191680
  store i32 %130, ptr %118, align 8
  %131 = call noundef ptr @_ZL19jc_test_get_fixturev()
  %132 = getelementptr inbounds i8, ptr %131, i64 32
  store ptr @.str.3, ptr %132, align 8, !tbaa !5
  call void @_Z28jc_test_increment_assertionsv()
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %12) #4
  store ptr null, ptr %12, align 8, !tbaa !13
  %133 = call noundef i32 @_ZN21jc_test_cmp_eq_helperILb0EE7compareIP16Longtail_HashAPIS3_EEiRKT_RKT0_PKcSB_(ptr noundef nonnull align 8 dereferenceable(8) %12, ptr noundef nonnull align 8 dereferenceable(8) %11, ptr noundef nonnull @.str.65, ptr noundef nonnull @.str.618)
  %134 = icmp eq i32 %133, 0
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %12) #4
  br i1 %134, label %135, label %154

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

136:                                              ; preds = %113
  %137 = or disjoint i32 %120, 1192448
  store i32 %137, ptr %118, align 8
  %138 = call noundef ptr @_ZL19jc_test_get_fixturev()
  %139 = getelementptr inbounds i8, ptr %138, i64 32
  store ptr @.str.3, ptr %139, align 8, !tbaa !5
  call void @_Z28jc_test_increment_assertionsv()
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %13) #4
  store ptr null, ptr %13, align 8, !tbaa !13
  %140 = call noundef i32 @_ZN21jc_test_cmp_eq_helperILb0EE7compareIP16Longtail_HashAPIS3_EEiRKT_RKT0_PKcSB_(ptr noundef nonnull align 8 dereferenceable(8) %13, ptr noundef nonnull align 8 dereferenceable(8) %11, ptr noundef nonnull @.str.65, ptr noundef nonnull @.str.618)
  %141 = icmp eq i32 %140, 0
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %13) #4
  br i1 %141, label %142, label %143

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

143:                                              ; preds = %136
  %144 = call noundef ptr @_ZL19jc_test_get_fixturev()
  %145 = getelementptr inbounds i8, ptr %144, i64 96
  %146 = load i32, ptr %145, align 8
  %147 = and i32 %146, -16776961
  %148 = or disjoint i32 %147, 1192704
  store i32 %148, ptr %145, align 8
  %149 = call noundef ptr @_ZL19jc_test_get_fixturev()
  %150 = getelementptr inbounds i8, ptr %149, i64 32
  store ptr @.str.3, ptr %150, align 8, !tbaa !5
  call void @_Z28jc_test_increment_assertionsv()
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %14) #4
  store i32 0, ptr %14, align 4, !tbaa !17
  %151 = call noundef i32 @_ZN21jc_test_cmp_eq_helperILb1EE7compareIiiEEiRKT_RKT0_PKcS9_PN23jc_test_enable_argumentIXntsr18jc_test_is_pointerIS5_EE5valueEE4typeE(ptr noundef nonnull align 4 dereferenceable(4) %14, ptr noundef nonnull align 4 dereferenceable(4) %3, ptr noundef nonnull @.str.46, ptr noundef nonnull @.str.616, ptr noundef null)
  %152 = icmp eq i32 %151, 0
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %14) #4
  br i1 %152, label %153, label %154

153:                                              ; preds = %143
  call void @_Z21jc_test_set_test_faili(i32 noundef 1)
  br label %180

154:                                              ; preds = %143, %129, %121
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %15) #4
  store ptr null, ptr %15, align 8, !tbaa !13
  %155 = call noundef ptr @_ZL19jc_test_get_fixturev()
  %156 = getelementptr inbounds i8, ptr %155, i64 96
  %157 = load i32, ptr %156, align 8
  %158 = and i32 %157, -16776961
  %159 = or disjoint i32 %158, 1193984
  store i32 %159, ptr %156, align 8
  %160 = call noundef ptr @_ZL19jc_test_get_fixturev()
  %161 = getelementptr inbounds i8, ptr %160, i64 32
  store ptr @.str.3, ptr %161, align 8, !tbaa !5
  call void @_Z28jc_test_increment_assertionsv()
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %16) #4
  store i32 2, ptr %16, align 4, !tbaa !17
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %17) #4
  %162 = load ptr, ptr %31, align 8, !tbaa !14
  %163 = call noundef i32 %162(ptr noundef nonnull %19, i32 noundef -559038737, ptr noundef nonnull %15)
  store i32 %163, ptr %17, align 4, !tbaa !17
  %164 = call noundef i32 @_ZN21jc_test_cmp_eq_helperILb0EE7compareIiiEEiRKT_RKT0_PKcS9_(ptr noundef nonnull align 4 dereferenceable(4) %16, ptr noundef nonnull align 4 dereferenceable(4) %17, ptr noundef nonnull @.str.138, ptr noundef nonnull @.str.619)
  %165 = icmp eq i32 %164, 0
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %17) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %16) #4
  br i1 %165, label %166, label %167

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

167:                                              ; preds = %154
  %168 = call noundef ptr @_ZL19jc_test_get_fixturev()
  %169 = getelementptr inbounds i8, ptr %168, i64 96
  %170 = load i32, ptr %169, align 8
  %171 = and i32 %170, -16776961
  %172 = or disjoint i32 %171, 1194240
  store i32 %172, ptr %169, align 8
  %173 = call noundef ptr @_ZL19jc_test_get_fixturev()
  %174 = getelementptr inbounds i8, ptr %173, i64 32
  store ptr @.str.3, ptr %174, align 8, !tbaa !5
  call void @_Z28jc_test_increment_assertionsv()
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %18) #4
  store ptr null, ptr %18, align 8, !tbaa !13
  %175 = call noundef i32 @_ZN21jc_test_cmp_eq_helperILb0EE7compareIP16Longtail_HashAPIS3_EEiRKT_RKT0_PKcSB_(ptr noundef nonnull align 8 dereferenceable(8) %18, ptr noundef nonnull align 8 dereferenceable(8) %15, ptr noundef nonnull @.str.65, ptr noundef nonnull @.str.620)
  %176 = icmp eq i32 %175, 0
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %18) #4
  br i1 %176, label %177, label %178

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

178:                                              ; preds = %167
  call void @Longtail_DisposeAPI(ptr noundef nonnull %19)
  br label %179

179:                                              ; preds = %178, %177, %166
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %15) #4
  br label %180

180:                                              ; preds = %179, %153, %142, %135, %128
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %11) #4
  br label %181

181:                                              ; preds = %180, %112, %101, %94, %87
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %7) #4
  br label %182

182:                                              ; preds = %181, %71, %60, %53, %46
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %3) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %2) #4
  br label %183

183:                                              ; preds = %182, %29
  ret void
}

declare ptr @Longtail_CreateFullHashRegistry() local_unnamed_addr #2

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

declare i32 @Longtail_GetBlake2HashType() local_unnamed_addr #2

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

declare i32 @Longtail_GetBlake3HashType() local_unnamed_addr #2

declare i32 @Longtail_GetMeowHashType() local_unnamed_addr #2

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

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

!0 = !{i32 1, !"wchar_size", i32 4}
!1 = !{i32 8, !"PIC Level", i32 2}
!2 = !{i32 7, !"PIE Level", i32 2}
!3 = !{i32 7, !"uwtable", i32 2}
!4 = !{!"clang version 19.1.0 (git@github.com:llvm/llvm-project.git a4bf6cd7cfb1a1421ba92bca9d017b49936c55e4)"}
!5 = !{!6, !7, i64 32}
!6 = !{!"_ZTS15jc_test_fixture", !7, i64 8, !7, i64 16, !7, i64 24, !7, i64 32, !7, i64 40, !7, i64 48, !7, i64 56, !10, i64 64, !11, i64 88, !11, i64 91, !11, i64 91, !11, i64 91, !11, i64 91, !11, i64 92, !11, i64 96, !11, i64 97, !11, i64 99, !11, i64 100}
!7 = !{!"any pointer", !8, i64 0}
!8 = !{!"omnipotent char", !9, i64 0}
!9 = !{!"Simple C++ TBAA"}
!10 = !{!"_ZTS13jc_test_stats", !11, i64 0, !11, i64 4, !11, i64 6, !11, i64 8, !11, i64 12, !12, i64 16}
!11 = !{!"int", !8, i64 0}
!12 = !{!"long", !8, i64 0}
!13 = !{!7, !7, i64 0}
!14 = !{!15, !7, i64 8}
!15 = !{!"_ZTS24Longtail_HashRegistryAPI", !16, i64 0, !7, i64 8}
!16 = !{!"_ZTS12Longtail_API", !7, i64 0}
!17 = !{!11, !11, i64 0}


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