; LLVM IR from DanEngelbrecht/longtail :: test/test.ll/ZN45Longtail_Longtail_CreateStoredBlock (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_StoredBlock = type { ptr, ptr, ptr, i32 }
%struct.Longtail_BlockIndex = type { 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.101 = external hidden unnamed_addr constant [117 x i8], align 1
@.str.104 = external hidden unnamed_addr constant [16 x i8], align 1
@.str.105 = external hidden unnamed_addr constant [36 x i8], align 1
@.str.106 = external hidden unnamed_addr constant [11 x i8], align 1
@.str.107 = external hidden unnamed_addr constant [41 x i8], align 1
@.str.108 = external hidden unnamed_addr constant [11 x i8], align 1
@.str.109 = external hidden unnamed_addr constant [46 x i8], align 1
@.str.110 = external hidden unnamed_addr constant [12 x i8], align 1
@.str.111 = external hidden unnamed_addr constant [42 x i8], align 1
@.str.112 = external hidden unnamed_addr constant [35 x i8], align 1
@.str.113 = external hidden unnamed_addr constant [16 x i8], align 1
@.str.114 = external hidden unnamed_addr constant [45 x i8], align 1
@.str.115 = external hidden unnamed_addr constant [15 x i8], align 1
@.str.116 = external hidden unnamed_addr constant [44 x i8], align 1
@.str.117 = external hidden unnamed_addr constant [49 x i8], align 1
@.str.118 = external hidden unnamed_addr constant [6 x i8], align 1
@__const._ZN45Longtail_Longtail_CreateStoredBlock__TestCase8TestBodyEv.chunk_hashes = external hidden unnamed_addr constant [4 x i64], align 16
@__const._ZN45Longtail_Longtail_CreateStoredBlock__TestCase8TestBodyEv.chunk_sizes = external hidden unnamed_addr constant [4 x i32], align 16

; 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

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

; Function Attrs: nocallback nofree nounwind willreturn memory(argmem: readwrite)
declare void @llvm.memcpy.p0.p0.i64(ptr noalias nocapture writeonly, ptr noalias nocapture readonly, i64, i1 immarg) #4

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

declare i32 @Longtail_CreateStoredBlock(i64 noundef, i32 noundef, i32 noundef, i32 noundef, ptr noundef, ptr noundef, i32 noundef, ptr noundef) #2

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

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

; Function Attrs: mustprogress uwtable
define dso_local void @_ZN45Longtail_Longtail_CreateStoredBlock__TestCase8TestBodyEv(ptr noundef nonnull align 8 dereferenceable(8) %0) unnamed_addr #3 align 2 {
  %2 = alloca ptr, align 8
  %3 = alloca i64, align 8
  %4 = alloca i32, align 4
  %5 = alloca [4 x i64], align 16
  %6 = alloca [4 x i32], align 16
  %7 = alloca i32, align 4
  %8 = alloca i32, align 4
  %9 = alloca ptr, align 8
  %10 = alloca i32, align 4
  %11 = alloca i32, align 4
  %12 = alloca i32, align 4
  %13 = alloca i32, align 4
  %14 = alloca i32, align 4
  %15 = alloca i32, align 4
  %16 = alloca i32, align 4
  %17 = alloca i32, align 4
  %18 = alloca i32, align 4
  %19 = alloca i32, align 4
  %20 = alloca i32, align 4
  store ptr %0, ptr %2, align 8, !tbaa !5
  %21 = load ptr, ptr %2, align 8
  call void @llvm.lifetime.start.p0(i64 8, ptr %3) #5
  store i64 8622816662333882385, ptr %3, align 8, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 4, ptr %4) #5
  store i32 4, ptr %4, align 4, !tbaa !11
  call void @llvm.lifetime.start.p0(i64 32, ptr %5) #5
  call void @llvm.memcpy.p0.p0.i64(ptr align 16 %5, ptr align 16 @__const._ZN45Longtail_Longtail_CreateStoredBlock__TestCase8TestBodyEv.chunk_hashes, i64 32, i1 false)
  call void @llvm.lifetime.start.p0(i64 16, ptr %6) #5
  call void @llvm.memcpy.p0.p0.i64(ptr align 16 %6, ptr align 16 @__const._ZN45Longtail_Longtail_CreateStoredBlock__TestCase8TestBodyEv.chunk_sizes, i64 16, i1 false)
  call void @llvm.lifetime.start.p0(i64 4, ptr %7) #5
  store i32 0, ptr %7, align 4, !tbaa !11
  call void @llvm.lifetime.start.p0(i64 4, ptr %8) #5
  store i32 0, ptr %8, align 4, !tbaa !11
  br label %22

22:                                               ; preds = %33, %1
  %23 = load i32, ptr %8, align 4, !tbaa !11
  %24 = icmp ult i32 %23, 4
  br i1 %24, label %26, label %25

25:                                               ; preds = %22
  call void @llvm.lifetime.end.p0(i64 4, ptr %8) #5
  br label %36

26:                                               ; preds = %22
  %27 = load i32, ptr %8, align 4, !tbaa !11
  %28 = zext i32 %27 to i64
  %29 = getelementptr inbounds [4 x i32], ptr %6, i64 0, i64 %28
  %30 = load i32, ptr %29, align 4, !tbaa !11
  %31 = load i32, ptr %7, align 4, !tbaa !11
  %32 = add i32 %31, %30
  store i32 %32, ptr %7, align 4, !tbaa !11
  br label %33

33:                                               ; preds = %26
  %34 = load i32, ptr %8, align 4, !tbaa !11
  %35 = add i32 %34, 1
  store i32 %35, ptr %8, align 4, !tbaa !11
  br label %22, !llvm.loop !13

36:                                               ; preds = %25
  call void @llvm.lifetime.start.p0(i64 8, ptr %9) #5
  br label %37

37:                                               ; preds = %36
  %38 = call noundef ptr @_ZL19jc_test_get_fixturev()
  %39 = getelementptr inbounds %struct.jc_test_fixture, ptr %38, i32 0, i32 11
  %40 = load i32, ptr %39, align 8
  %41 = and i32 %40, -16776961
  %42 = or i32 %41, 342784
  store i32 %42, ptr %39, align 8
  %43 = call noundef ptr @_ZL19jc_test_get_fixturev()
  %44 = getelementptr inbounds %struct.jc_test_fixture, ptr %43, i32 0, i32 4
  store ptr @.str.3, ptr %44, align 8, !tbaa !15
  call void @_Z28jc_test_increment_assertionsv()
  call void @llvm.lifetime.start.p0(i64 4, ptr %10) #5
  store i32 0, ptr %10, align 4, !tbaa !11
  call void @llvm.lifetime.start.p0(i64 4, ptr %11) #5
  %45 = load i64, ptr %3, align 8, !tbaa !9
  %46 = getelementptr inbounds [4 x i64], ptr %5, i64 0, i64 0
  %47 = getelementptr inbounds [4 x i32], ptr %6, i64 0, i64 0
  %48 = load i32, ptr %7, align 4, !tbaa !11
  %49 = call i32 @Longtail_CreateStoredBlock(i64 noundef %45, i32 noundef -559038737, i32 noundef 4, i32 noundef 0, ptr noundef %46, ptr noundef %47, i32 noundef %48, ptr noundef %9)
  store i32 %49, ptr %11, align 4, !tbaa !11
  %50 = call noundef i32 @_ZN21jc_test_cmp_eq_helperILb1EE7compareIiiEEiRKT_RKT0_PKcS9_PN23jc_test_enable_argumentIXntsr18jc_test_is_pointerIS5_EE5valueEE4typeE(ptr noundef nonnull align 4 dereferenceable(4) %10, ptr noundef nonnull align 4 dereferenceable(4) %11, ptr noundef @.str.46, ptr noundef @.str.101, ptr noundef null)
  %51 = icmp eq i32 %50, 0
  call void @llvm.lifetime.end.p0(i64 4, ptr %11) #5
  call void @llvm.lifetime.end.p0(i64 4, ptr %10) #5
  br i1 %51, label %52, label %53

52:                                               ; preds = %37
  call void @_Z21jc_test_set_test_faili(i32 noundef 1)
  store i32 1, ptr %12, align 4
  br label %299

53:                                               ; preds = %37
  br label %54

54:                                               ; preds = %53
  br label %55

55:                                               ; preds = %54
  call void @llvm.lifetime.start.p0(i64 4, ptr %13) #5
  store i32 0, ptr %13, align 4, !tbaa !11
  call void @llvm.lifetime.start.p0(i64 4, ptr %14) #5
  store i32 0, ptr %14, align 4, !tbaa !11
  br label %56

56:                                               ; preds = %91, %55
  %57 = load i32, ptr %14, align 4, !tbaa !11
  %58 = icmp ult i32 %57, 4
  br i1 %58, label %60, label %59

59:                                               ; preds = %56
  store i32 7, ptr %12, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %14) #5
  br label %94

60:                                               ; preds = %56
  call void @llvm.lifetime.start.p0(i64 4, ptr %15) #5
  store i32 0, ptr %15, align 4, !tbaa !11
  br label %61

61:                                               ; preds = %81, %60
  %62 = load i32, ptr %15, align 4, !tbaa !11
  %63 = load i32, ptr %14, align 4, !tbaa !11
  %64 = zext i32 %63 to i64
  %65 = getelementptr inbounds [4 x i32], ptr %6, i64 0, i64 %64
  %66 = load i32, ptr %65, align 4, !tbaa !11
  %67 = icmp ult i32 %62, %66
  br i1 %67, label %69, label %68

68:                                               ; preds = %61
  store i32 10, ptr %12, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %15) #5
  br label %84

69:                                               ; preds = %61
  %70 = load i32, ptr %14, align 4, !tbaa !11
  %71 = add i32 %70, 1
  %72 = trunc i32 %71 to i8
  %73 = load ptr, ptr %9, align 8, !tbaa !5
  %74 = getelementptr inbounds %struct.Longtail_StoredBlock, ptr %73, i32 0, i32 2
  %75 = load ptr, ptr %74, align 8, !tbaa !18
  %76 = load i32, ptr %13, align 4, !tbaa !11
  %77 = load i32, ptr %15, align 4, !tbaa !11
  %78 = add i32 %76, %77
  %79 = zext i32 %78 to i64
  %80 = getelementptr inbounds i8, ptr %75, i64 %79
  store i8 %72, ptr %80, align 1, !tbaa !20
  br label %81

81:                                               ; preds = %69
  %82 = load i32, ptr %15, align 4, !tbaa !11
  %83 = add i32 %82, 1
  store i32 %83, ptr %15, align 4, !tbaa !11
  br label %61, !llvm.loop !21

84:                                               ; preds = %68
  %85 = load i32, ptr %14, align 4, !tbaa !11
  %86 = zext i32 %85 to i64
  %87 = getelementptr inbounds [4 x i32], ptr %6, i64 0, i64 %86
  %88 = load i32, ptr %87, align 4, !tbaa !11
  %89 = load i32, ptr %13, align 4, !tbaa !11
  %90 = add i32 %89, %88
  store i32 %90, ptr %13, align 4, !tbaa !11
  br label %91

91:                                               ; preds = %84
  %92 = load i32, ptr %14, align 4, !tbaa !11
  %93 = add i32 %92, 1
  store i32 %93, ptr %14, align 4, !tbaa !11
  br label %56, !llvm.loop !22

94:                                               ; preds = %59
  br label %95

95:                                               ; preds = %94
  %96 = call noundef ptr @_ZL19jc_test_get_fixturev()
  %97 = getelementptr inbounds %struct.jc_test_fixture, ptr %96, i32 0, i32 11
  %98 = load i32, ptr %97, align 8
  %99 = and i32 %98, -16776961
  %100 = or i32 %99, 345600
  store i32 %100, ptr %97, align 8
  %101 = call noundef ptr @_ZL19jc_test_get_fixturev()
  %102 = getelementptr inbounds %struct.jc_test_fixture, ptr %101, i32 0, i32 4
  store ptr @.str.3, ptr %102, align 8, !tbaa !15
  call void @_Z28jc_test_increment_assertionsv()
  %103 = load ptr, ptr %9, align 8, !tbaa !5
  %104 = getelementptr inbounds %struct.Longtail_StoredBlock, ptr %103, i32 0, i32 3
  %105 = call noundef i32 @_ZN21jc_test_cmp_eq_helperILb0EE7compareIjjEEiRKT_RKT0_PKcS9_(ptr noundef nonnull align 4 dereferenceable(4) %7, ptr noundef nonnull align 4 dereferenceable(4) %104, ptr noundef @.str.104, ptr noundef @.str.105)
  %106 = icmp eq i32 %105, 0
  br i1 %106, label %107, label %108

107:                                              ; preds = %95
  call void @_Z21jc_test_set_test_faili(i32 noundef 1)
  store i32 1, ptr %12, align 4
  br label %298

108:                                              ; preds = %95
  br label %109

109:                                              ; preds = %108
  br label %110

110:                                              ; preds = %109
  br label %111

111:                                              ; preds = %110
  %112 = call noundef ptr @_ZL19jc_test_get_fixturev()
  %113 = getelementptr inbounds %struct.jc_test_fixture, ptr %112, i32 0, i32 11
  %114 = load i32, ptr %113, align 8
  %115 = and i32 %114, -16776961
  %116 = or i32 %115, 345856
  store i32 %116, ptr %113, align 8
  %117 = call noundef ptr @_ZL19jc_test_get_fixturev()
  %118 = getelementptr inbounds %struct.jc_test_fixture, ptr %117, i32 0, i32 4
  store ptr @.str.3, ptr %118, align 8, !tbaa !15
  call void @_Z28jc_test_increment_assertionsv()
  %119 = load ptr, ptr %9, align 8, !tbaa !5
  %120 = getelementptr inbounds %struct.Longtail_StoredBlock, ptr %119, i32 0, i32 1
  %121 = load ptr, ptr %120, align 8, !tbaa !23
  %122 = getelementptr inbounds %struct.Longtail_BlockIndex, ptr %121, i32 0, i32 0
  %123 = load ptr, ptr %122, align 8, !tbaa !24
  %124 = call noundef i32 @_ZN21jc_test_cmp_eq_helperILb0EE7compareImmEEiRKT_RKT0_PKcS9_(ptr noundef nonnull align 8 dereferenceable(8) %3, ptr noundef nonnull align 8 dereferenceable(8) %123, ptr noundef @.str.106, ptr noundef @.str.107)
  %125 = icmp eq i32 %124, 0
  br i1 %125, label %126, label %127

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

127:                                              ; preds = %111
  br label %128

128:                                              ; preds = %127
  br label %129

129:                                              ; preds = %128
  br label %130

130:                                              ; preds = %129
  %131 = call noundef ptr @_ZL19jc_test_get_fixturev()
  %132 = getelementptr inbounds %struct.jc_test_fixture, ptr %131, i32 0, i32 11
  %133 = load i32, ptr %132, align 8
  %134 = and i32 %133, -16776961
  %135 = or i32 %134, 346112
  store i32 %135, ptr %132, align 8
  %136 = call noundef ptr @_ZL19jc_test_get_fixturev()
  %137 = getelementptr inbounds %struct.jc_test_fixture, ptr %136, i32 0, i32 4
  store ptr @.str.3, ptr %137, align 8, !tbaa !15
  call void @_Z28jc_test_increment_assertionsv()
  call void @llvm.lifetime.start.p0(i64 4, ptr %16) #5
  store i32 -559038737, ptr %16, align 4, !tbaa !11
  %138 = load ptr, ptr %9, align 8, !tbaa !5
  %139 = getelementptr inbounds %struct.Longtail_StoredBlock, ptr %138, i32 0, i32 1
  %140 = load ptr, ptr %139, align 8, !tbaa !23
  %141 = getelementptr inbounds %struct.Longtail_BlockIndex, ptr %140, i32 0, i32 1
  %142 = load ptr, ptr %141, align 8, !tbaa !26
  %143 = call noundef i32 @_ZN21jc_test_cmp_eq_helperILb0EE7compareIjjEEiRKT_RKT0_PKcS9_(ptr noundef nonnull align 4 dereferenceable(4) %16, ptr noundef nonnull align 4 dereferenceable(4) %142, ptr noundef @.str.108, ptr noundef @.str.109)
  %144 = icmp eq i32 %143, 0
  call void @llvm.lifetime.end.p0(i64 4, ptr %16) #5
  br i1 %144, label %145, label %146

145:                                              ; preds = %130
  call void @_Z21jc_test_set_test_faili(i32 noundef 1)
  store i32 1, ptr %12, align 4
  br label %298

146:                                              ; preds = %130
  br label %147

147:                                              ; preds = %146
  br label %148

148:                                              ; preds = %147
  br label %149

149:                                              ; preds = %148
  %150 = call noundef ptr @_ZL19jc_test_get_fixturev()
  %151 = getelementptr inbounds %struct.jc_test_fixture, ptr %150, i32 0, i32 11
  %152 = load i32, ptr %151, align 8
  %153 = and i32 %152, -16776961
  %154 = or i32 %153, 346368
  store i32 %154, ptr %151, align 8
  %155 = call noundef ptr @_ZL19jc_test_get_fixturev()
  %156 = getelementptr inbounds %struct.jc_test_fixture, ptr %155, i32 0, i32 4
  store ptr @.str.3, ptr %156, align 8, !tbaa !15
  call void @_Z28jc_test_increment_assertionsv()
  %157 = load ptr, ptr %9, align 8, !tbaa !5
  %158 = getelementptr inbounds %struct.Longtail_StoredBlock, ptr %157, i32 0, i32 1
  %159 = load ptr, ptr %158, align 8, !tbaa !23
  %160 = getelementptr inbounds %struct.Longtail_BlockIndex, ptr %159, i32 0, i32 2
  %161 = load ptr, ptr %160, align 8, !tbaa !27
  %162 = call noundef i32 @_ZN21jc_test_cmp_eq_helperILb0EE7compareIjjEEiRKT_RKT0_PKcS9_(ptr noundef nonnull align 4 dereferenceable(4) %4, ptr noundef nonnull align 4 dereferenceable(4) %161, ptr noundef @.str.110, ptr noundef @.str.111)
  %163 = icmp eq i32 %162, 0
  br i1 %163, label %164, label %165

164:                                              ; preds = %149
  call void @_Z21jc_test_set_test_faili(i32 noundef 1)
  store i32 1, ptr %12, align 4
  br label %298

165:                                              ; preds = %149
  br label %166

166:                                              ; preds = %165
  br label %167

167:                                              ; preds = %166
  br label %168

168:                                              ; preds = %167
  %169 = call noundef ptr @_ZL19jc_test_get_fixturev()
  %170 = getelementptr inbounds %struct.jc_test_fixture, ptr %169, i32 0, i32 11
  %171 = load i32, ptr %170, align 8
  %172 = and i32 %171, -16776961
  %173 = or i32 %172, 346624
  store i32 %173, ptr %170, align 8
  %174 = call noundef ptr @_ZL19jc_test_get_fixturev()
  %175 = getelementptr inbounds %struct.jc_test_fixture, ptr %174, i32 0, i32 4
  store ptr @.str.3, ptr %175, align 8, !tbaa !15
  call void @_Z28jc_test_increment_assertionsv()
  call void @llvm.lifetime.start.p0(i64 4, ptr %17) #5
  store i32 0, ptr %17, align 4, !tbaa !11
  %176 = load ptr, ptr %9, align 8, !tbaa !5
  %177 = getelementptr inbounds %struct.Longtail_StoredBlock, ptr %176, i32 0, i32 1
  %178 = load ptr, ptr %177, align 8, !tbaa !23
  %179 = getelementptr inbounds %struct.Longtail_BlockIndex, ptr %178, i32 0, i32 3
  %180 = load ptr, ptr %179, align 8, !tbaa !28
  %181 = call noundef i32 @_ZN21jc_test_cmp_eq_helperILb1EE7compareIijEEiRKT_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) %180, ptr noundef @.str.46, ptr noundef @.str.112, ptr noundef null)
  %182 = icmp eq i32 %181, 0
  call void @llvm.lifetime.end.p0(i64 4, ptr %17) #5
  br i1 %182, label %183, label %184

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

184:                                              ; preds = %168
  br label %185

185:                                              ; preds = %184
  br label %186

186:                                              ; preds = %185
  store i32 0, ptr %13, align 4, !tbaa !11
  call void @llvm.lifetime.start.p0(i64 4, ptr %18) #5
  store i32 0, ptr %18, align 4, !tbaa !11
  br label %187

187:                                              ; preds = %287, %186
  %188 = load i32, ptr %18, align 4, !tbaa !11
  %189 = icmp ult i32 %188, 4
  br i1 %189, label %191, label %190

190:                                              ; preds = %187
  store i32 23, ptr %12, align 4
  br label %290

191:                                              ; preds = %187
  br label %192

192:                                              ; preds = %191
  %193 = call noundef ptr @_ZL19jc_test_get_fixturev()
  %194 = getelementptr inbounds %struct.jc_test_fixture, ptr %193, i32 0, i32 11
  %195 = load i32, ptr %194, align 8
  %196 = and i32 %195, -16776961
  %197 = or i32 %196, 347648
  store i32 %197, ptr %194, align 8
  %198 = call noundef ptr @_ZL19jc_test_get_fixturev()
  %199 = getelementptr inbounds %struct.jc_test_fixture, ptr %198, i32 0, i32 4
  store ptr @.str.3, ptr %199, align 8, !tbaa !15
  call void @_Z28jc_test_increment_assertionsv()
  %200 = load i32, ptr %18, align 4, !tbaa !11
  %201 = zext i32 %200 to i64
  %202 = getelementptr inbounds [4 x i64], ptr %5, i64 0, i64 %201
  %203 = load ptr, ptr %9, align 8, !tbaa !5
  %204 = getelementptr inbounds %struct.Longtail_StoredBlock, ptr %203, i32 0, i32 1
  %205 = load ptr, ptr %204, align 8, !tbaa !23
  %206 = getelementptr inbounds %struct.Longtail_BlockIndex, ptr %205, i32 0, i32 4
  %207 = load ptr, ptr %206, align 8, !tbaa !29
  %208 = load i32, ptr %18, align 4, !tbaa !11
  %209 = zext i32 %208 to i64
  %210 = getelementptr inbounds i64, ptr %207, i64 %209
  %211 = call noundef i32 @_ZN21jc_test_cmp_eq_helperILb0EE7compareImmEEiRKT_RKT0_PKcS9_(ptr noundef nonnull align 8 dereferenceable(8) %202, ptr noundef nonnull align 8 dereferenceable(8) %210, ptr noundef @.str.113, ptr noundef @.str.114)
  %212 = icmp eq i32 %211, 0
  br i1 %212, label %213, label %214

213:                                              ; preds = %192
  call void @_Z21jc_test_set_test_faili(i32 noundef 1)
  store i32 1, ptr %12, align 4
  br label %290

214:                                              ; preds = %192
  br label %215

215:                                              ; preds = %214
  br label %216

216:                                              ; preds = %215
  br label %217

217:                                              ; preds = %216
  %218 = call noundef ptr @_ZL19jc_test_get_fixturev()
  %219 = getelementptr inbounds %struct.jc_test_fixture, ptr %218, i32 0, i32 11
  %220 = load i32, ptr %219, align 8
  %221 = and i32 %220, -16776961
  %222 = or i32 %221, 347904
  store i32 %222, ptr %219, align 8
  %223 = call noundef ptr @_ZL19jc_test_get_fixturev()
  %224 = getelementptr inbounds %struct.jc_test_fixture, ptr %223, i32 0, i32 4
  store ptr @.str.3, ptr %224, align 8, !tbaa !15
  call void @_Z28jc_test_increment_assertionsv()
  %225 = load i32, ptr %18, align 4, !tbaa !11
  %226 = zext i32 %225 to i64
  %227 = getelementptr inbounds [4 x i32], ptr %6, i64 0, i64 %226
  %228 = load ptr, ptr %9, align 8, !tbaa !5
  %229 = getelementptr inbounds %struct.Longtail_StoredBlock, ptr %228, i32 0, i32 1
  %230 = load ptr, ptr %229, align 8, !tbaa !23
  %231 = getelementptr inbounds %struct.Longtail_BlockIndex, ptr %230, i32 0, i32 5
  %232 = load ptr, ptr %231, align 8, !tbaa !30
  %233 = load i32, ptr %18, align 4, !tbaa !11
  %234 = zext i32 %233 to i64
  %235 = getelementptr inbounds i32, ptr %232, i64 %234
  %236 = call noundef i32 @_ZN21jc_test_cmp_eq_helperILb0EE7compareIjjEEiRKT_RKT0_PKcS9_(ptr noundef nonnull align 4 dereferenceable(4) %227, ptr noundef nonnull align 4 dereferenceable(4) %235, ptr noundef @.str.115, ptr noundef @.str.116)
  %237 = icmp eq i32 %236, 0
  br i1 %237, label %238, label %239

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

239:                                              ; preds = %217
  br label %240

240:                                              ; preds = %239
  br label %241

241:                                              ; preds = %240
  call void @llvm.lifetime.start.p0(i64 4, ptr %19) #5
  store i32 0, ptr %19, align 4, !tbaa !11
  br label %242

242:                                              ; preds = %275, %241
  %243 = load i32, ptr %19, align 4, !tbaa !11
  %244 = load i32, ptr %18, align 4, !tbaa !11
  %245 = zext i32 %244 to i64
  %246 = getelementptr inbounds [4 x i32], ptr %6, i64 0, i64 %245
  %247 = load i32, ptr %246, align 4, !tbaa !11
  %248 = icmp ult i32 %243, %247
  br i1 %248, label %250, label %249

249:                                              ; preds = %242
  store i32 30, ptr %12, align 4
  br label %278

250:                                              ; preds = %242
  br label %251

251:                                              ; preds = %250
  %252 = call noundef ptr @_ZL19jc_test_get_fixturev()
  %253 = getelementptr inbounds %struct.jc_test_fixture, ptr %252, i32 0, i32 11
  %254 = load i32, ptr %253, align 8
  %255 = and i32 %254, -16776961
  %256 = or i32 %255, 348672
  store i32 %256, ptr %253, align 8
  %257 = call noundef ptr @_ZL19jc_test_get_fixturev()
  %258 = getelementptr inbounds %struct.jc_test_fixture, ptr %257, i32 0, i32 4
  store ptr @.str.3, ptr %258, align 8, !tbaa !15
  call void @_Z28jc_test_increment_assertionsv()
  %259 = load ptr, ptr %9, align 8, !tbaa !5
  %260 = getelementptr inbounds %struct.Longtail_StoredBlock, ptr %259, i32 0, i32 2
  %261 = load ptr, ptr %260, align 8, !tbaa !18
  %262 = load i32, ptr %13, align 4, !tbaa !11
  %263 = load i32, ptr %19, align 4, !tbaa !11
  %264 = add i32 %262, %263
  %265 = zext i32 %264 to i64
  %266 = getelementptr inbounds i8, ptr %261, i64 %265
  call void @llvm.lifetime.start.p0(i64 4, ptr %20) #5
  %267 = load i32, ptr %18, align 4, !tbaa !11
  %268 = add i32 %267, 1
  store i32 %268, ptr %20, align 4, !tbaa !11
  %269 = call noundef i32 @_ZN21jc_test_cmp_eq_helperILb0EE7compareIhjEEiRKT_RKT0_PKcS9_(ptr noundef nonnull align 1 dereferenceable(1) %266, ptr noundef nonnull align 4 dereferenceable(4) %20, ptr noundef @.str.117, ptr noundef @.str.118)
  %270 = icmp eq i32 %269, 0
  call void @llvm.lifetime.end.p0(i64 4, ptr %20) #5
  br i1 %270, label %271, label %272

271:                                              ; preds = %251
  call void @_Z21jc_test_set_test_faili(i32 noundef 1)
  store i32 1, ptr %12, align 4
  br label %278

272:                                              ; preds = %251
  br label %273

273:                                              ; preds = %272
  br label %274

274:                                              ; preds = %273
  br label %275

275:                                              ; preds = %274
  %276 = load i32, ptr %19, align 4, !tbaa !11
  %277 = add i32 %276, 1
  store i32 %277, ptr %19, align 4, !tbaa !11
  br label %242, !llvm.loop !31

278:                                              ; preds = %271, %249
  call void @llvm.lifetime.end.p0(i64 4, ptr %19) #5
  %279 = load i32, ptr %12, align 4
  switch i32 %279, label %290 [
    i32 30, label %280
  ]

280:                                              ; preds = %278
  %281 = load i32, ptr %18, align 4, !tbaa !11
  %282 = zext i32 %281 to i64
  %283 = getelementptr inbounds [4 x i32], ptr %6, i64 0, i64 %282
  %284 = load i32, ptr %283, align 4, !tbaa !11
  %285 = load i32, ptr %13, align 4, !tbaa !11
  %286 = add i32 %285, %284
  store i32 %286, ptr %13, align 4, !tbaa !11
  br label %287

287:                                              ; preds = %280
  %288 = load i32, ptr %18, align 4, !tbaa !11
  %289 = add i32 %288, 1
  store i32 %289, ptr %18, align 4, !tbaa !11
  br label %187, !llvm.loop !32

290:                                              ; preds = %278, %238, %213, %190
  call void @llvm.lifetime.end.p0(i64 4, ptr %18) #5
  %291 = load i32, ptr %12, align 4
  switch i32 %291, label %298 [
    i32 23, label %292
  ]

292:                                              ; preds = %290
  %293 = load ptr, ptr %9, align 8, !tbaa !5
  %294 = getelementptr inbounds %struct.Longtail_StoredBlock, ptr %293, i32 0, i32 0
  %295 = load ptr, ptr %294, align 8, !tbaa !33
  %296 = load ptr, ptr %9, align 8, !tbaa !5
  %297 = call noundef i32 %295(ptr noundef %296)
  store i32 0, ptr %12, align 4
  br label %298

298:                                              ; preds = %292, %290, %183, %164, %145, %126, %107
  call void @llvm.lifetime.end.p0(i64 4, ptr %13) #5
  br label %299

299:                                              ; preds = %298, %52
  call void @llvm.lifetime.end.p0(i64 8, ptr %9) #5
  call void @llvm.lifetime.end.p0(i64 4, ptr %7) #5
  call void @llvm.lifetime.end.p0(i64 16, ptr %6) #5
  call void @llvm.lifetime.end.p0(i64 32, ptr %5) #5
  call void @llvm.lifetime.end.p0(i64 4, ptr %4) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %3) #5
  %300 = load i32, ptr %12, align 4
  switch i32 %300, label %302 [
    i32 0, label %301
    i32 1, label %301
  ]

301:                                              ; preds = %299, %299
  ret void

302:                                              ; preds = %299
  unreachable
}

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 = { nocallback nofree nounwind willreturn memory(argmem: readwrite) }
attributes #5 = { nounwind }

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

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


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

@.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.101 = external hidden unnamed_addr constant [117 x i8], align 1
@.str.104 = external hidden unnamed_addr constant [16 x i8], align 1
@.str.105 = external hidden unnamed_addr constant [36 x i8], align 1
@.str.106 = external hidden unnamed_addr constant [11 x i8], align 1
@.str.107 = external hidden unnamed_addr constant [41 x i8], align 1
@.str.108 = external hidden unnamed_addr constant [11 x i8], align 1
@.str.109 = external hidden unnamed_addr constant [46 x i8], align 1
@.str.110 = external hidden unnamed_addr constant [12 x i8], align 1
@.str.111 = external hidden unnamed_addr constant [42 x i8], align 1
@.str.112 = external hidden unnamed_addr constant [35 x i8], align 1
@.str.113 = external hidden unnamed_addr constant [16 x i8], align 1
@.str.114 = external hidden unnamed_addr constant [45 x i8], align 1
@.str.115 = external hidden unnamed_addr constant [15 x i8], align 1
@.str.116 = external hidden unnamed_addr constant [44 x i8], align 1
@.str.117 = external hidden unnamed_addr constant [49 x i8], align 1
@.str.118 = external hidden unnamed_addr constant [6 x i8], align 1
@__const._ZN45Longtail_Longtail_CreateStoredBlock__TestCase8TestBodyEv.chunk_hashes = external hidden unnamed_addr constant [4 x i64], align 16
@__const._ZN45Longtail_Longtail_CreateStoredBlock__TestCase8TestBodyEv.chunk_sizes = external hidden unnamed_addr constant [4 x i32], align 16

; 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

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

; Function Attrs: mustprogress nocallback nofree nounwind willreturn memory(argmem: readwrite)
declare void @llvm.memcpy.p0.p0.i64(ptr noalias nocapture writeonly, ptr noalias nocapture readonly, i64, i1 immarg) #4

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

declare i32 @Longtail_CreateStoredBlock(i64 noundef, i32 noundef, i32 noundef, i32 noundef, ptr noundef, ptr noundef, i32 noundef, ptr noundef) local_unnamed_addr #2

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

; Function Attrs: mustprogress uwtable
declare dso_local noundef i32 @_ZN21jc_test_cmp_eq_helperILb0EE7compareIhjEEiRKT_RKT0_PKcS9_(ptr noundef nonnull align 1 dereferenceable(1), 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 @_ZN45Longtail_Longtail_CreateStoredBlock__TestCase8TestBodyEv(ptr nocapture noundef nonnull readnone align 8 dereferenceable(8) %0) unnamed_addr #3 align 2 {
  %2 = alloca i64, align 8
  %3 = alloca i32, align 4
  %4 = alloca [4 x i64], align 16
  %5 = alloca [4 x i32], align 16
  %6 = alloca i32, align 4
  %7 = alloca ptr, align 8
  %8 = alloca i32, align 4
  %9 = alloca i32, align 4
  %10 = alloca i32, align 4
  %11 = alloca i32, align 4
  %12 = alloca i32, align 4
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %2) #6
  store i64 8622816662333882385, ptr %2, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %3) #6
  store i32 4, ptr %3, align 4, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %4) #6
  call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 16 dereferenceable(32) %4, ptr noundef nonnull align 16 dereferenceable(32) @__const._ZN45Longtail_Longtail_CreateStoredBlock__TestCase8TestBodyEv.chunk_hashes, i64 32, i1 false)
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %5) #6
  call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 16 dereferenceable(16) %5, ptr noundef nonnull align 16 dereferenceable(16) @__const._ZN45Longtail_Longtail_CreateStoredBlock__TestCase8TestBodyEv.chunk_sizes, i64 16, i1 false)
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %6) #6
  %13 = getelementptr inbounds i8, ptr %5, i64 4
  %14 = getelementptr inbounds i8, ptr %5, i64 8
  %15 = getelementptr inbounds i8, ptr %5, i64 12
  %16 = load <4 x i32>, ptr %5, align 16, !tbaa !9
  %17 = tail call i32 @llvm.vector.reduce.add.v4i32(<4 x i32> %16)
  store i32 %17, ptr %6, align 4, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %7) #6
  %18 = tail call noundef ptr @_ZL19jc_test_get_fixturev()
  %19 = getelementptr inbounds i8, ptr %18, i64 96
  %20 = load i32, ptr %19, align 8
  %21 = and i32 %20, -16776961
  %22 = or disjoint i32 %21, 342784
  store i32 %22, ptr %19, align 8
  %23 = tail call noundef ptr @_ZL19jc_test_get_fixturev()
  %24 = getelementptr inbounds i8, ptr %23, i64 32
  store ptr @.str.3, ptr %24, align 8, !tbaa !11
  tail call void @_Z28jc_test_increment_assertionsv()
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %8) #6
  store i32 0, ptr %8, align 4, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %9) #6
  %25 = call i32 @Longtail_CreateStoredBlock(i64 noundef 8622816662333882385, i32 noundef -559038737, i32 noundef 4, i32 noundef 0, ptr noundef nonnull %4, ptr noundef nonnull %5, i32 noundef %17, ptr noundef nonnull %7)
  store i32 %25, ptr %9, align 4, !tbaa !9
  %26 = 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) %8, ptr noundef nonnull align 4 dereferenceable(4) %9, ptr noundef nonnull @.str.46, ptr noundef nonnull @.str.101, ptr noundef null)
  %27 = icmp eq i32 %26, 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 %27, label %29, label %.preheader41.preheader

.preheader41.preheader:                           ; preds = %1
  %28 = load i32, ptr %5, align 16, !tbaa !9
  %.not53 = icmp eq i32 %28, 0
  br i1 %.not53, label %._crit_edge, label %.lr.ph

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

._crit_edge:                                      ; preds = %.lr.ph, %.preheader41.preheader
  %.lcssa = phi i32 [ 0, %.preheader41.preheader ], [ %80, %.lr.ph ]
  %30 = load i32, ptr %13, align 4, !tbaa !9
  %.not53.1 = icmp eq i32 %30, 0
  br i1 %.not53.1, label %._crit_edge.1, label %.lr.ph.1

.lr.ph.1:                                         ; preds = %._crit_edge, %.lr.ph.1
  %indvars.iv.1 = phi i64 [ %indvars.iv.next.1, %.lr.ph.1 ], [ 0, %._crit_edge ]
  %31 = load ptr, ptr %7, align 8, !tbaa !15
  %32 = getelementptr inbounds i8, ptr %31, i64 16
  %33 = load ptr, ptr %32, align 8, !tbaa !16
  %34 = trunc nuw i64 %indvars.iv.1 to i32
  %35 = add i32 %.lcssa, %34
  %36 = zext i32 %35 to i64
  %37 = getelementptr inbounds i8, ptr %33, i64 %36
  store i8 2, ptr %37, align 1, !tbaa !18
  %indvars.iv.next.1 = add nuw nsw i64 %indvars.iv.1, 1
  %38 = load i32, ptr %13, align 4, !tbaa !9
  %39 = zext i32 %38 to i64
  %40 = icmp ult i64 %indvars.iv.next.1, %39
  br i1 %40, label %.lr.ph.1, label %._crit_edge.1, !llvm.loop !19

._crit_edge.1:                                    ; preds = %.lr.ph.1, %._crit_edge
  %.lcssa.1 = phi i32 [ 0, %._crit_edge ], [ %38, %.lr.ph.1 ]
  %41 = add i32 %.lcssa.1, %.lcssa
  %42 = load i32, ptr %14, align 8, !tbaa !9
  %.not53.2 = icmp eq i32 %42, 0
  br i1 %.not53.2, label %._crit_edge.2, label %.lr.ph.2

.lr.ph.2:                                         ; preds = %._crit_edge.1, %.lr.ph.2
  %indvars.iv.2 = phi i64 [ %indvars.iv.next.2, %.lr.ph.2 ], [ 0, %._crit_edge.1 ]
  %43 = load ptr, ptr %7, align 8, !tbaa !15
  %44 = getelementptr inbounds i8, ptr %43, i64 16
  %45 = load ptr, ptr %44, align 8, !tbaa !16
  %46 = trunc nuw i64 %indvars.iv.2 to i32
  %47 = add i32 %41, %46
  %48 = zext i32 %47 to i64
  %49 = getelementptr inbounds i8, ptr %45, i64 %48
  store i8 3, ptr %49, align 1, !tbaa !18
  %indvars.iv.next.2 = add nuw nsw i64 %indvars.iv.2, 1
  %50 = load i32, ptr %14, align 8, !tbaa !9
  %51 = zext i32 %50 to i64
  %52 = icmp ult i64 %indvars.iv.next.2, %51
  br i1 %52, label %.lr.ph.2, label %._crit_edge.2, !llvm.loop !19

._crit_edge.2:                                    ; preds = %.lr.ph.2, %._crit_edge.1
  %.lcssa.2 = phi i32 [ 0, %._crit_edge.1 ], [ %50, %.lr.ph.2 ]
  %53 = add i32 %.lcssa.2, %41
  %54 = load i32, ptr %15, align 4, !tbaa !9
  %.not53.3 = icmp eq i32 %54, 0
  br i1 %.not53.3, label %._crit_edge.3, label %.lr.ph.3

.lr.ph.3:                                         ; preds = %._crit_edge.2, %.lr.ph.3
  %indvars.iv.3 = phi i64 [ %indvars.iv.next.3, %.lr.ph.3 ], [ 0, %._crit_edge.2 ]
  %55 = load ptr, ptr %7, align 8, !tbaa !15
  %56 = getelementptr inbounds i8, ptr %55, i64 16
  %57 = load ptr, ptr %56, align 8, !tbaa !16
  %58 = trunc nuw i64 %indvars.iv.3 to i32
  %59 = add i32 %53, %58
  %60 = zext i32 %59 to i64
  %61 = getelementptr inbounds i8, ptr %57, i64 %60
  store i8 4, ptr %61, align 1, !tbaa !18
  %indvars.iv.next.3 = add nuw nsw i64 %indvars.iv.3, 1
  %62 = load i32, ptr %15, align 4, !tbaa !9
  %63 = zext i32 %62 to i64
  %64 = icmp ult i64 %indvars.iv.next.3, %63
  br i1 %64, label %.lr.ph.3, label %._crit_edge.3, !llvm.loop !19

._crit_edge.3:                                    ; preds = %.lr.ph.3, %._crit_edge.2
  %65 = call noundef ptr @_ZL19jc_test_get_fixturev()
  %66 = getelementptr inbounds i8, ptr %65, i64 96
  %67 = load i32, ptr %66, align 8
  %68 = and i32 %67, -16776961
  %69 = or disjoint i32 %68, 345600
  store i32 %69, ptr %66, align 8
  %70 = call noundef ptr @_ZL19jc_test_get_fixturev()
  %71 = getelementptr inbounds i8, ptr %70, i64 32
  store ptr @.str.3, ptr %71, align 8, !tbaa !11
  call void @_Z28jc_test_increment_assertionsv()
  %72 = load ptr, ptr %7, align 8, !tbaa !15
  %73 = getelementptr inbounds i8, ptr %72, i64 24
  %74 = call noundef i32 @_ZN21jc_test_cmp_eq_helperILb0EE7compareIjjEEiRKT_RKT0_PKcS9_(ptr noundef nonnull align 4 dereferenceable(4) %6, ptr noundef nonnull align 4 dereferenceable(4) %73, ptr noundef nonnull @.str.104, ptr noundef nonnull @.str.105)
  %75 = icmp eq i32 %74, 0
  br i1 %75, label %83, label %84

.lr.ph:                                           ; preds = %.preheader41.preheader, %.lr.ph
  %indvars.iv = phi i64 [ %indvars.iv.next, %.lr.ph ], [ 0, %.preheader41.preheader ]
  %76 = load ptr, ptr %7, align 8, !tbaa !15
  %77 = getelementptr inbounds i8, ptr %76, i64 16
  %78 = load ptr, ptr %77, align 8, !tbaa !16
  %79 = getelementptr inbounds i8, ptr %78, i64 %indvars.iv
  store i8 1, ptr %79, align 1, !tbaa !18
  %indvars.iv.next = add nuw nsw i64 %indvars.iv, 1
  %80 = load i32, ptr %5, align 16, !tbaa !9
  %81 = zext i32 %80 to i64
  %82 = icmp ult i64 %indvars.iv.next, %81
  br i1 %82, label %.lr.ph, label %._crit_edge, !llvm.loop !19

83:                                               ; preds = %._crit_edge.3
  call void @_Z21jc_test_set_test_faili(i32 noundef 1)
  br label %359

84:                                               ; preds = %._crit_edge.3
  %85 = call noundef ptr @_ZL19jc_test_get_fixturev()
  %86 = getelementptr inbounds i8, ptr %85, i64 96
  %87 = load i32, ptr %86, align 8
  %88 = and i32 %87, -16776961
  %89 = or disjoint i32 %88, 345856
  store i32 %89, ptr %86, 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 !11
  call void @_Z28jc_test_increment_assertionsv()
  %92 = load ptr, ptr %7, align 8, !tbaa !15
  %93 = getelementptr inbounds i8, ptr %92, i64 8
  %94 = load ptr, ptr %93, align 8, !tbaa !21
  %95 = load ptr, ptr %94, align 8, !tbaa !22
  %96 = call noundef i32 @_ZN21jc_test_cmp_eq_helperILb0EE7compareImmEEiRKT_RKT0_PKcS9_(ptr noundef nonnull align 8 dereferenceable(8) %2, ptr noundef nonnull align 8 dereferenceable(8) %95, ptr noundef nonnull @.str.106, ptr noundef nonnull @.str.107)
  %97 = icmp eq i32 %96, 0
  br i1 %97, label %98, label %99

98:                                               ; preds = %84
  call void @_Z21jc_test_set_test_faili(i32 noundef 1)
  br label %359

99:                                               ; preds = %84
  %100 = call noundef ptr @_ZL19jc_test_get_fixturev()
  %101 = getelementptr inbounds i8, ptr %100, i64 96
  %102 = load i32, ptr %101, align 8
  %103 = and i32 %102, -16776961
  %104 = or disjoint i32 %103, 346112
  store i32 %104, ptr %101, align 8
  %105 = call noundef ptr @_ZL19jc_test_get_fixturev()
  %106 = getelementptr inbounds i8, ptr %105, i64 32
  store ptr @.str.3, ptr %106, align 8, !tbaa !11
  call void @_Z28jc_test_increment_assertionsv()
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %10) #6
  store i32 -559038737, ptr %10, align 4, !tbaa !9
  %107 = load ptr, ptr %7, align 8, !tbaa !15
  %108 = getelementptr inbounds i8, ptr %107, i64 8
  %109 = load ptr, ptr %108, align 8, !tbaa !21
  %110 = getelementptr inbounds i8, ptr %109, i64 8
  %111 = load ptr, ptr %110, align 8, !tbaa !24
  %112 = call noundef i32 @_ZN21jc_test_cmp_eq_helperILb0EE7compareIjjEEiRKT_RKT0_PKcS9_(ptr noundef nonnull align 4 dereferenceable(4) %10, ptr noundef nonnull align 4 dereferenceable(4) %111, ptr noundef nonnull @.str.108, ptr noundef nonnull @.str.109)
  %113 = icmp eq i32 %112, 0
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %10) #6
  br i1 %113, label %114, label %115

114:                                              ; preds = %99
  call void @_Z21jc_test_set_test_faili(i32 noundef 1)
  br label %359

115:                                              ; preds = %99
  %116 = call noundef ptr @_ZL19jc_test_get_fixturev()
  %117 = getelementptr inbounds i8, ptr %116, i64 96
  %118 = load i32, ptr %117, align 8
  %119 = and i32 %118, -16776961
  %120 = or disjoint i32 %119, 346368
  store i32 %120, ptr %117, align 8
  %121 = call noundef ptr @_ZL19jc_test_get_fixturev()
  %122 = getelementptr inbounds i8, ptr %121, i64 32
  store ptr @.str.3, ptr %122, align 8, !tbaa !11
  call void @_Z28jc_test_increment_assertionsv()
  %123 = load ptr, ptr %7, align 8, !tbaa !15
  %124 = getelementptr inbounds i8, ptr %123, i64 8
  %125 = load ptr, ptr %124, align 8, !tbaa !21
  %126 = getelementptr inbounds i8, ptr %125, i64 16
  %127 = load ptr, ptr %126, align 8, !tbaa !25
  %128 = call noundef i32 @_ZN21jc_test_cmp_eq_helperILb0EE7compareIjjEEiRKT_RKT0_PKcS9_(ptr noundef nonnull align 4 dereferenceable(4) %3, ptr noundef nonnull align 4 dereferenceable(4) %127, ptr noundef nonnull @.str.110, ptr noundef nonnull @.str.111)
  %129 = icmp eq i32 %128, 0
  br i1 %129, label %130, label %131

130:                                              ; preds = %115
  call void @_Z21jc_test_set_test_faili(i32 noundef 1)
  br label %359

131:                                              ; preds = %115
  %132 = call noundef ptr @_ZL19jc_test_get_fixturev()
  %133 = getelementptr inbounds i8, ptr %132, i64 96
  %134 = load i32, ptr %133, align 8
  %135 = and i32 %134, -16776961
  %136 = or disjoint i32 %135, 346624
  store i32 %136, ptr %133, align 8
  %137 = call noundef ptr @_ZL19jc_test_get_fixturev()
  %138 = getelementptr inbounds i8, ptr %137, i64 32
  store ptr @.str.3, ptr %138, align 8, !tbaa !11
  call void @_Z28jc_test_increment_assertionsv()
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %11) #6
  store i32 0, ptr %11, align 4, !tbaa !9
  %139 = load ptr, ptr %7, align 8, !tbaa !15
  %140 = getelementptr inbounds i8, ptr %139, i64 8
  %141 = load ptr, ptr %140, align 8, !tbaa !21
  %142 = getelementptr inbounds i8, ptr %141, i64 24
  %143 = load ptr, ptr %142, align 8, !tbaa !26
  %144 = call noundef i32 @_ZN21jc_test_cmp_eq_helperILb1EE7compareIijEEiRKT_RKT0_PKcS9_PN23jc_test_enable_argumentIXntsr18jc_test_is_pointerIS5_EE5valueEE4typeE(ptr noundef nonnull align 4 dereferenceable(4) %11, ptr noundef nonnull align 4 dereferenceable(4) %143, ptr noundef nonnull @.str.46, ptr noundef nonnull @.str.112, ptr noundef null)
  %145 = icmp eq i32 %144, 0
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %11) #6
  br i1 %145, label %160, label %.preheader40.preheader

.preheader40.preheader:                           ; preds = %131
  %146 = call noundef ptr @_ZL19jc_test_get_fixturev()
  %147 = getelementptr inbounds i8, ptr %146, i64 96
  %148 = load i32, ptr %147, align 8
  %149 = and i32 %148, -16776961
  %150 = or disjoint i32 %149, 347648
  store i32 %150, ptr %147, align 8
  %151 = call noundef ptr @_ZL19jc_test_get_fixturev()
  %152 = getelementptr inbounds i8, ptr %151, i64 32
  store ptr @.str.3, ptr %152, align 8, !tbaa !11
  call void @_Z28jc_test_increment_assertionsv()
  %153 = load ptr, ptr %7, align 8, !tbaa !15
  %154 = getelementptr inbounds i8, ptr %153, i64 8
  %155 = load ptr, ptr %154, align 8, !tbaa !21
  %156 = getelementptr inbounds i8, ptr %155, i64 32
  %157 = load ptr, ptr %156, align 8, !tbaa !27
  %158 = call noundef i32 @_ZN21jc_test_cmp_eq_helperILb0EE7compareImmEEiRKT_RKT0_PKcS9_(ptr noundef nonnull align 8 dereferenceable(8) %4, ptr noundef nonnull align 8 dereferenceable(8) %157, ptr noundef nonnull @.str.113, ptr noundef nonnull @.str.114)
  %159 = icmp eq i32 %158, 0
  br i1 %159, label %161, label %162

160:                                              ; preds = %131
  call void @_Z21jc_test_set_test_faili(i32 noundef 1)
  br label %359

161:                                              ; preds = %.critedge.2, %.critedge.1, %.critedge, %.preheader40.preheader
  call void @_Z21jc_test_set_test_faili(i32 noundef 1)
  br label %359

162:                                              ; preds = %.preheader40.preheader
  %163 = call noundef ptr @_ZL19jc_test_get_fixturev()
  %164 = getelementptr inbounds i8, ptr %163, i64 96
  %165 = load i32, ptr %164, align 8
  %166 = and i32 %165, -16776961
  %167 = or disjoint i32 %166, 347904
  store i32 %167, ptr %164, align 8
  %168 = call noundef ptr @_ZL19jc_test_get_fixturev()
  %169 = getelementptr inbounds i8, ptr %168, i64 32
  store ptr @.str.3, ptr %169, align 8, !tbaa !11
  call void @_Z28jc_test_increment_assertionsv()
  %170 = load ptr, ptr %7, align 8, !tbaa !15
  %171 = getelementptr inbounds i8, ptr %170, i64 8
  %172 = load ptr, ptr %171, align 8, !tbaa !21
  %173 = getelementptr inbounds i8, ptr %172, i64 40
  %174 = load ptr, ptr %173, align 8, !tbaa !28
  %175 = call noundef i32 @_ZN21jc_test_cmp_eq_helperILb0EE7compareIjjEEiRKT_RKT0_PKcS9_(ptr noundef nonnull align 4 dereferenceable(4) %5, ptr noundef nonnull align 4 dereferenceable(4) %174, ptr noundef nonnull @.str.115, ptr noundef nonnull @.str.116)
  %176 = icmp eq i32 %175, 0
  br i1 %176, label %178, label %.preheader

.preheader:                                       ; preds = %162
  %177 = load i32, ptr %5, align 16, !tbaa !9
  %.not48.not = icmp eq i32 %177, 0
  br i1 %.not48.not, label %.critedge, label %.lr.ph50

178:                                              ; preds = %320, %266, %212, %162
  call void @_Z21jc_test_set_test_faili(i32 noundef 1)
  br label %359

179:                                              ; preds = %.lr.ph50
  %indvars.iv.next62 = add nuw nsw i64 %indvars.iv61, 1
  %180 = load i32, ptr %5, align 16, !tbaa !9
  %181 = zext i32 %180 to i64
  %.not = icmp ult i64 %indvars.iv.next62, %181
  br i1 %.not, label %.lr.ph50, label %.critedge, !llvm.loop !29

.lr.ph50:                                         ; preds = %.preheader, %179
  %indvars.iv61 = phi i64 [ %indvars.iv.next62, %179 ], [ 0, %.preheader ]
  %182 = call noundef ptr @_ZL19jc_test_get_fixturev()
  %183 = getelementptr inbounds i8, ptr %182, i64 96
  %184 = load i32, ptr %183, align 8
  %185 = and i32 %184, -16776961
  %186 = or disjoint i32 %185, 348672
  store i32 %186, ptr %183, align 8
  %187 = call noundef ptr @_ZL19jc_test_get_fixturev()
  %188 = getelementptr inbounds i8, ptr %187, i64 32
  store ptr @.str.3, ptr %188, align 8, !tbaa !11
  call void @_Z28jc_test_increment_assertionsv()
  %189 = load ptr, ptr %7, align 8, !tbaa !15
  %190 = getelementptr inbounds i8, ptr %189, i64 16
  %191 = load ptr, ptr %190, align 8, !tbaa !16
  %192 = getelementptr inbounds i8, ptr %191, i64 %indvars.iv61
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %12) #6
  store i32 1, ptr %12, align 4, !tbaa !9
  %193 = call noundef i32 @_ZN21jc_test_cmp_eq_helperILb0EE7compareIhjEEiRKT_RKT0_PKcS9_(ptr noundef nonnull align 1 dereferenceable(1) %192, ptr noundef nonnull align 4 dereferenceable(4) %12, ptr noundef nonnull @.str.117, ptr noundef nonnull @.str.118)
  %194 = icmp eq i32 %193, 0
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %12) #6
  br i1 %194, label %.loopexit, label %179

.loopexit:                                        ; preds = %.lr.ph50, %.lr.ph50.1, %.lr.ph50.2, %.lr.ph50.3
  call void @_Z21jc_test_set_test_faili(i32 noundef 1)
  br label %359

.critedge:                                        ; preds = %179, %.preheader
  %195 = phi i32 [ 0, %.preheader ], [ %180, %179 ]
  %196 = call noundef ptr @_ZL19jc_test_get_fixturev()
  %197 = getelementptr inbounds i8, ptr %196, i64 96
  %198 = load i32, ptr %197, align 8
  %199 = and i32 %198, -16776961
  %200 = or disjoint i32 %199, 347648
  store i32 %200, ptr %197, align 8
  %201 = call noundef ptr @_ZL19jc_test_get_fixturev()
  %202 = getelementptr inbounds i8, ptr %201, i64 32
  store ptr @.str.3, ptr %202, align 8, !tbaa !11
  call void @_Z28jc_test_increment_assertionsv()
  %203 = getelementptr inbounds i8, ptr %4, i64 8
  %204 = load ptr, ptr %7, align 8, !tbaa !15
  %205 = getelementptr inbounds i8, ptr %204, i64 8
  %206 = load ptr, ptr %205, align 8, !tbaa !21
  %207 = getelementptr inbounds i8, ptr %206, i64 32
  %208 = load ptr, ptr %207, align 8, !tbaa !27
  %209 = getelementptr inbounds i8, ptr %208, i64 8
  %210 = call noundef i32 @_ZN21jc_test_cmp_eq_helperILb0EE7compareImmEEiRKT_RKT0_PKcS9_(ptr noundef nonnull align 8 dereferenceable(8) %203, ptr noundef nonnull align 8 dereferenceable(8) %209, ptr noundef nonnull @.str.113, ptr noundef nonnull @.str.114)
  %211 = icmp eq i32 %210, 0
  br i1 %211, label %161, label %212

212:                                              ; preds = %.critedge
  %213 = call noundef ptr @_ZL19jc_test_get_fixturev()
  %214 = getelementptr inbounds i8, ptr %213, i64 96
  %215 = load i32, ptr %214, align 8
  %216 = and i32 %215, -16776961
  %217 = or disjoint i32 %216, 347904
  store i32 %217, ptr %214, align 8
  %218 = call noundef ptr @_ZL19jc_test_get_fixturev()
  %219 = getelementptr inbounds i8, ptr %218, i64 32
  store ptr @.str.3, ptr %219, align 8, !tbaa !11
  call void @_Z28jc_test_increment_assertionsv()
  %220 = load ptr, ptr %7, align 8, !tbaa !15
  %221 = getelementptr inbounds i8, ptr %220, i64 8
  %222 = load ptr, ptr %221, align 8, !tbaa !21
  %223 = getelementptr inbounds i8, ptr %222, i64 40
  %224 = load ptr, ptr %223, align 8, !tbaa !28
  %225 = getelementptr inbounds i8, ptr %224, i64 4
  %226 = call noundef i32 @_ZN21jc_test_cmp_eq_helperILb0EE7compareIjjEEiRKT_RKT0_PKcS9_(ptr noundef nonnull align 4 dereferenceable(4) %13, ptr noundef nonnull align 4 dereferenceable(4) %225, ptr noundef nonnull @.str.115, ptr noundef nonnull @.str.116)
  %227 = icmp eq i32 %226, 0
  br i1 %227, label %178, label %.preheader.1

.preheader.1:                                     ; preds = %212
  %228 = load i32, ptr %13, align 4, !tbaa !9
  %.not48.not.1 = icmp eq i32 %228, 0
  br i1 %.not48.not.1, label %.critedge.1, label %.lr.ph50.1

.lr.ph50.1:                                       ; preds = %.preheader.1, %245
  %indvars.iv61.1 = phi i64 [ %indvars.iv.next62.1, %245 ], [ 0, %.preheader.1 ]
  %229 = call noundef ptr @_ZL19jc_test_get_fixturev()
  %230 = getelementptr inbounds i8, ptr %229, i64 96
  %231 = load i32, ptr %230, align 8
  %232 = and i32 %231, -16776961
  %233 = or disjoint i32 %232, 348672
  store i32 %233, ptr %230, align 8
  %234 = call noundef ptr @_ZL19jc_test_get_fixturev()
  %235 = getelementptr inbounds i8, ptr %234, i64 32
  store ptr @.str.3, ptr %235, align 8, !tbaa !11
  call void @_Z28jc_test_increment_assertionsv()
  %236 = load ptr, ptr %7, align 8, !tbaa !15
  %237 = getelementptr inbounds i8, ptr %236, i64 16
  %238 = load ptr, ptr %237, align 8, !tbaa !16
  %239 = trunc nuw i64 %indvars.iv61.1 to i32
  %240 = add i32 %195, %239
  %241 = zext i32 %240 to i64
  %242 = getelementptr inbounds i8, ptr %238, i64 %241
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %12) #6
  store i32 2, ptr %12, align 4, !tbaa !9
  %243 = call noundef i32 @_ZN21jc_test_cmp_eq_helperILb0EE7compareIhjEEiRKT_RKT0_PKcS9_(ptr noundef nonnull align 1 dereferenceable(1) %242, ptr noundef nonnull align 4 dereferenceable(4) %12, ptr noundef nonnull @.str.117, ptr noundef nonnull @.str.118)
  %244 = icmp eq i32 %243, 0
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %12) #6
  br i1 %244, label %.loopexit, label %245

245:                                              ; preds = %.lr.ph50.1
  %indvars.iv.next62.1 = add nuw nsw i64 %indvars.iv61.1, 1
  %246 = load i32, ptr %13, align 4, !tbaa !9
  %247 = zext i32 %246 to i64
  %.not.1 = icmp ult i64 %indvars.iv.next62.1, %247
  br i1 %.not.1, label %.lr.ph50.1, label %.critedge.1, !llvm.loop !29

.critedge.1:                                      ; preds = %245, %.preheader.1
  %248 = phi i32 [ 0, %.preheader.1 ], [ %246, %245 ]
  %249 = add i32 %248, %195
  %250 = call noundef ptr @_ZL19jc_test_get_fixturev()
  %251 = getelementptr inbounds i8, ptr %250, i64 96
  %252 = load i32, ptr %251, align 8
  %253 = and i32 %252, -16776961
  %254 = or disjoint i32 %253, 347648
  store i32 %254, ptr %251, align 8
  %255 = call noundef ptr @_ZL19jc_test_get_fixturev()
  %256 = getelementptr inbounds i8, ptr %255, i64 32
  store ptr @.str.3, ptr %256, align 8, !tbaa !11
  call void @_Z28jc_test_increment_assertionsv()
  %257 = getelementptr inbounds i8, ptr %4, i64 16
  %258 = load ptr, ptr %7, align 8, !tbaa !15
  %259 = getelementptr inbounds i8, ptr %258, i64 8
  %260 = load ptr, ptr %259, align 8, !tbaa !21
  %261 = getelementptr inbounds i8, ptr %260, i64 32
  %262 = load ptr, ptr %261, align 8, !tbaa !27
  %263 = getelementptr inbounds i8, ptr %262, i64 16
  %264 = call noundef i32 @_ZN21jc_test_cmp_eq_helperILb0EE7compareImmEEiRKT_RKT0_PKcS9_(ptr noundef nonnull align 8 dereferenceable(8) %257, ptr noundef nonnull align 8 dereferenceable(8) %263, ptr noundef nonnull @.str.113, ptr noundef nonnull @.str.114)
  %265 = icmp eq i32 %264, 0
  br i1 %265, label %161, label %266

266:                                              ; preds = %.critedge.1
  %267 = call noundef ptr @_ZL19jc_test_get_fixturev()
  %268 = getelementptr inbounds i8, ptr %267, i64 96
  %269 = load i32, ptr %268, align 8
  %270 = and i32 %269, -16776961
  %271 = or disjoint i32 %270, 347904
  store i32 %271, ptr %268, align 8
  %272 = call noundef ptr @_ZL19jc_test_get_fixturev()
  %273 = getelementptr inbounds i8, ptr %272, i64 32
  store ptr @.str.3, ptr %273, align 8, !tbaa !11
  call void @_Z28jc_test_increment_assertionsv()
  %274 = load ptr, ptr %7, align 8, !tbaa !15
  %275 = getelementptr inbounds i8, ptr %274, i64 8
  %276 = load ptr, ptr %275, align 8, !tbaa !21
  %277 = getelementptr inbounds i8, ptr %276, i64 40
  %278 = load ptr, ptr %277, align 8, !tbaa !28
  %279 = getelementptr inbounds i8, ptr %278, i64 8
  %280 = call noundef i32 @_ZN21jc_test_cmp_eq_helperILb0EE7compareIjjEEiRKT_RKT0_PKcS9_(ptr noundef nonnull align 4 dereferenceable(4) %14, ptr noundef nonnull align 4 dereferenceable(4) %279, ptr noundef nonnull @.str.115, ptr noundef nonnull @.str.116)
  %281 = icmp eq i32 %280, 0
  br i1 %281, label %178, label %.preheader.2

.preheader.2:                                     ; preds = %266
  %282 = load i32, ptr %14, align 8, !tbaa !9
  %.not48.not.2 = icmp eq i32 %282, 0
  br i1 %.not48.not.2, label %.critedge.2, label %.lr.ph50.2

.lr.ph50.2:                                       ; preds = %.preheader.2, %299
  %indvars.iv61.2 = phi i64 [ %indvars.iv.next62.2, %299 ], [ 0, %.preheader.2 ]
  %283 = call noundef ptr @_ZL19jc_test_get_fixturev()
  %284 = getelementptr inbounds i8, ptr %283, i64 96
  %285 = load i32, ptr %284, align 8
  %286 = and i32 %285, -16776961
  %287 = or disjoint i32 %286, 348672
  store i32 %287, ptr %284, align 8
  %288 = call noundef ptr @_ZL19jc_test_get_fixturev()
  %289 = getelementptr inbounds i8, ptr %288, i64 32
  store ptr @.str.3, ptr %289, align 8, !tbaa !11
  call void @_Z28jc_test_increment_assertionsv()
  %290 = load ptr, ptr %7, align 8, !tbaa !15
  %291 = getelementptr inbounds i8, ptr %290, i64 16
  %292 = load ptr, ptr %291, align 8, !tbaa !16
  %293 = trunc nuw i64 %indvars.iv61.2 to i32
  %294 = add i32 %249, %293
  %295 = zext i32 %294 to i64
  %296 = getelementptr inbounds i8, ptr %292, i64 %295
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %12) #6
  store i32 3, ptr %12, align 4, !tbaa !9
  %297 = call noundef i32 @_ZN21jc_test_cmp_eq_helperILb0EE7compareIhjEEiRKT_RKT0_PKcS9_(ptr noundef nonnull align 1 dereferenceable(1) %296, ptr noundef nonnull align 4 dereferenceable(4) %12, ptr noundef nonnull @.str.117, ptr noundef nonnull @.str.118)
  %298 = icmp eq i32 %297, 0
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %12) #6
  br i1 %298, label %.loopexit, label %299

299:                                              ; preds = %.lr.ph50.2
  %indvars.iv.next62.2 = add nuw nsw i64 %indvars.iv61.2, 1
  %300 = load i32, ptr %14, align 8, !tbaa !9
  %301 = zext i32 %300 to i64
  %.not.2 = icmp ult i64 %indvars.iv.next62.2, %301
  br i1 %.not.2, label %.lr.ph50.2, label %.critedge.2, !llvm.loop !29

.critedge.2:                                      ; preds = %299, %.preheader.2
  %302 = phi i32 [ 0, %.preheader.2 ], [ %300, %299 ]
  %303 = add i32 %302, %249
  %304 = call noundef ptr @_ZL19jc_test_get_fixturev()
  %305 = getelementptr inbounds i8, ptr %304, i64 96
  %306 = load i32, ptr %305, align 8
  %307 = and i32 %306, -16776961
  %308 = or disjoint i32 %307, 347648
  store i32 %308, ptr %305, align 8
  %309 = call noundef ptr @_ZL19jc_test_get_fixturev()
  %310 = getelementptr inbounds i8, ptr %309, i64 32
  store ptr @.str.3, ptr %310, align 8, !tbaa !11
  call void @_Z28jc_test_increment_assertionsv()
  %311 = getelementptr inbounds i8, ptr %4, i64 24
  %312 = load ptr, ptr %7, align 8, !tbaa !15
  %313 = getelementptr inbounds i8, ptr %312, i64 8
  %314 = load ptr, ptr %313, align 8, !tbaa !21
  %315 = getelementptr inbounds i8, ptr %314, i64 32
  %316 = load ptr, ptr %315, align 8, !tbaa !27
  %317 = getelementptr inbounds i8, ptr %316, i64 24
  %318 = call noundef i32 @_ZN21jc_test_cmp_eq_helperILb0EE7compareImmEEiRKT_RKT0_PKcS9_(ptr noundef nonnull align 8 dereferenceable(8) %311, ptr noundef nonnull align 8 dereferenceable(8) %317, ptr noundef nonnull @.str.113, ptr noundef nonnull @.str.114)
  %319 = icmp eq i32 %318, 0
  br i1 %319, label %161, label %320

320:                                              ; preds = %.critedge.2
  %321 = call noundef ptr @_ZL19jc_test_get_fixturev()
  %322 = getelementptr inbounds i8, ptr %321, i64 96
  %323 = load i32, ptr %322, align 8
  %324 = and i32 %323, -16776961
  %325 = or disjoint i32 %324, 347904
  store i32 %325, ptr %322, align 8
  %326 = call noundef ptr @_ZL19jc_test_get_fixturev()
  %327 = getelementptr inbounds i8, ptr %326, i64 32
  store ptr @.str.3, ptr %327, align 8, !tbaa !11
  call void @_Z28jc_test_increment_assertionsv()
  %328 = load ptr, ptr %7, align 8, !tbaa !15
  %329 = getelementptr inbounds i8, ptr %328, i64 8
  %330 = load ptr, ptr %329, align 8, !tbaa !21
  %331 = getelementptr inbounds i8, ptr %330, i64 40
  %332 = load ptr, ptr %331, align 8, !tbaa !28
  %333 = getelementptr inbounds i8, ptr %332, i64 12
  %334 = call noundef i32 @_ZN21jc_test_cmp_eq_helperILb0EE7compareIjjEEiRKT_RKT0_PKcS9_(ptr noundef nonnull align 4 dereferenceable(4) %15, ptr noundef nonnull align 4 dereferenceable(4) %333, ptr noundef nonnull @.str.115, ptr noundef nonnull @.str.116)
  %335 = icmp eq i32 %334, 0
  br i1 %335, label %178, label %.preheader.3

.preheader.3:                                     ; preds = %320
  %336 = load i32, ptr %15, align 4, !tbaa !9
  %.not48.not.3 = icmp eq i32 %336, 0
  br i1 %.not48.not.3, label %.critedge.3, label %.lr.ph50.3

.lr.ph50.3:                                       ; preds = %.preheader.3, %353
  %indvars.iv61.3 = phi i64 [ %indvars.iv.next62.3, %353 ], [ 0, %.preheader.3 ]
  %337 = call noundef ptr @_ZL19jc_test_get_fixturev()
  %338 = getelementptr inbounds i8, ptr %337, i64 96
  %339 = load i32, ptr %338, align 8
  %340 = and i32 %339, -16776961
  %341 = or disjoint i32 %340, 348672
  store i32 %341, ptr %338, align 8
  %342 = call noundef ptr @_ZL19jc_test_get_fixturev()
  %343 = getelementptr inbounds i8, ptr %342, i64 32
  store ptr @.str.3, ptr %343, align 8, !tbaa !11
  call void @_Z28jc_test_increment_assertionsv()
  %344 = load ptr, ptr %7, align 8, !tbaa !15
  %345 = getelementptr inbounds i8, ptr %344, i64 16
  %346 = load ptr, ptr %345, align 8, !tbaa !16
  %347 = trunc nuw i64 %indvars.iv61.3 to i32
  %348 = add i32 %303, %347
  %349 = zext i32 %348 to i64
  %350 = getelementptr inbounds i8, ptr %346, i64 %349
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %12) #6
  store i32 4, ptr %12, align 4, !tbaa !9
  %351 = call noundef i32 @_ZN21jc_test_cmp_eq_helperILb0EE7compareIhjEEiRKT_RKT0_PKcS9_(ptr noundef nonnull align 1 dereferenceable(1) %350, ptr noundef nonnull align 4 dereferenceable(4) %12, ptr noundef nonnull @.str.117, ptr noundef nonnull @.str.118)
  %352 = icmp eq i32 %351, 0
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %12) #6
  br i1 %352, label %.loopexit, label %353

353:                                              ; preds = %.lr.ph50.3
  %indvars.iv.next62.3 = add nuw nsw i64 %indvars.iv61.3, 1
  %354 = load i32, ptr %15, align 4, !tbaa !9
  %355 = zext i32 %354 to i64
  %.not.3 = icmp ult i64 %indvars.iv.next62.3, %355
  br i1 %.not.3, label %.lr.ph50.3, label %.critedge.3, !llvm.loop !29

.critedge.3:                                      ; preds = %353, %.preheader.3
  %356 = load ptr, ptr %7, align 8, !tbaa !15
  %357 = load ptr, ptr %356, align 8, !tbaa !30
  %358 = call noundef i32 %357(ptr noundef nonnull %356)
  br label %359

359:                                              ; preds = %161, %178, %.loopexit, %83, %98, %114, %130, %160, %.critedge.3, %29
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %7) #6
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %6) #6
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %5) #6
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %4) #6
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %3) #6
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %2) #6
  ret void
}

; Function Attrs: nocallback nofree nosync nounwind speculatable willreturn memory(none)
declare i32 @llvm.vector.reduce.add.v4i32(<4 x i32>) #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 nocallback nofree nounwind willreturn memory(argmem: readwrite) }
attributes #5 = { nocallback nofree nosync nounwind speculatable willreturn memory(none) }
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 = !{!6, !6, i64 0}
!6 = !{!"long", !7, i64 0}
!7 = !{!"omnipotent char", !8, i64 0}
!8 = !{!"Simple C++ TBAA"}
!9 = !{!10, !10, i64 0}
!10 = !{!"int", !7, i64 0}
!11 = !{!12, !13, i64 32}
!12 = !{!"_ZTS15jc_test_fixture", !13, i64 8, !13, i64 16, !13, i64 24, !13, i64 32, !13, i64 40, !13, i64 48, !13, i64 56, !14, i64 64, !10, i64 88, !10, i64 91, !10, i64 91, !10, i64 91, !10, i64 91, !10, i64 92, !10, i64 96, !10, i64 97, !10, i64 99, !10, i64 100}
!13 = !{!"any pointer", !7, i64 0}
!14 = !{!"_ZTS13jc_test_stats", !10, i64 0, !10, i64 4, !10, i64 6, !10, i64 8, !10, i64 12, !6, i64 16}
!15 = !{!13, !13, i64 0}
!16 = !{!17, !13, i64 16}
!17 = !{!"_ZTS20Longtail_StoredBlock", !13, i64 0, !13, i64 8, !13, i64 16, !10, i64 24}
!18 = !{!7, !7, i64 0}
!19 = distinct !{!19, !20}
!20 = !{!"llvm.loop.mustprogress"}
!21 = !{!17, !13, i64 8}
!22 = !{!23, !13, i64 0}
!23 = !{!"_ZTS19Longtail_BlockIndex", !13, i64 0, !13, i64 8, !13, i64 16, !13, i64 24, !13, i64 32, !13, i64 40}
!24 = !{!23, !13, i64 8}
!25 = !{!23, !13, i64 16}
!26 = !{!23, !13, i64 24}
!27 = !{!23, !13, i64 32}
!28 = !{!23, !13, i64 40}
!29 = distinct !{!29, !20}
!30 = !{!17, !13, i64 0}


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