; LLVM IR from DanEngelbrecht/longtail :: test/test.ll/ZN54Longtail_Longtail_ReadWriteStoredBlockBuffer (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
@__const._ZN54Longtail_Longtail_ReadWriteStoredBlockBuffer__TestCase8TestBodyEv.chunk_hashes = external hidden unnamed_addr constant [4 x i64], align 16
@__const._ZN54Longtail_Longtail_ReadWriteStoredBlockBuffer__TestCase8TestBodyEv.chunk_sizes = external hidden unnamed_addr constant [4 x i32], align 16
@.str.101 = external hidden unnamed_addr constant [117 x i8], align 1
@.str.102 = external hidden unnamed_addr constant [109 x i8], align 1
@.str.103 = external hidden unnamed_addr constant [84 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

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

declare ptr @Longtail_Alloc(ptr noundef, i64 noundef) #1

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

declare void @_Z28jc_test_increment_assertionsv() #1

declare void @_Z21jc_test_set_test_faili(i32 noundef) #1

declare void @Longtail_Free(ptr noundef) #1

; 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_WriteBlockIndexToBuffer(ptr noundef, ptr noundef, ptr noundef) #1

; Function Attrs: mustprogress uwtable
define dso_local void @_ZN54Longtail_Longtail_ReadWriteStoredBlockBuffer__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 ptr, align 8
  %17 = alloca i64, align 8
  %18 = alloca i32, align 4
  %19 = alloca i32, align 4
  %20 = alloca i64, align 8
  %21 = alloca ptr, align 8
  %22 = alloca i64, align 8
  %23 = alloca ptr, align 8
  %24 = alloca i32, align 4
  %25 = alloca i32, align 4
  %26 = alloca i32, align 4
  %27 = alloca i32, align 4
  %28 = alloca i32, align 4
  %29 = alloca i32, align 4
  %30 = alloca i32, align 4
  store ptr %0, ptr %2, align 8, !tbaa !5
  %31 = 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._ZN54Longtail_Longtail_ReadWriteStoredBlockBuffer__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._ZN54Longtail_Longtail_ReadWriteStoredBlockBuffer__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 %32

32:                                               ; preds = %43, %1
  %33 = load i32, ptr %8, align 4, !tbaa !11
  %34 = icmp ult i32 %33, 4
  br i1 %34, label %36, label %35

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

36:                                               ; preds = %32
  %37 = load i32, ptr %8, align 4, !tbaa !11
  %38 = zext i32 %37 to i64
  %39 = getelementptr inbounds [4 x i32], ptr %6, i64 0, i64 %38
  %40 = load i32, ptr %39, align 4, !tbaa !11
  %41 = load i32, ptr %7, align 4, !tbaa !11
  %42 = add i32 %41, %40
  store i32 %42, ptr %7, align 4, !tbaa !11
  br label %43

43:                                               ; preds = %36
  %44 = load i32, ptr %8, align 4, !tbaa !11
  %45 = add i32 %44, 1
  store i32 %45, ptr %8, align 4, !tbaa !11
  br label %32, !llvm.loop !13

46:                                               ; preds = %35
  call void @llvm.lifetime.start.p0(i64 8, ptr %9) #5
  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, 146944
  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 !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
  %55 = load i64, ptr %3, align 8, !tbaa !9
  %56 = getelementptr inbounds [4 x i64], ptr %5, i64 0, i64 0
  %57 = getelementptr inbounds [4 x i32], ptr %6, i64 0, i64 0
  %58 = load i32, ptr %7, align 4, !tbaa !11
  %59 = call i32 @Longtail_CreateStoredBlock(i64 noundef %55, i32 noundef -559038737, i32 noundef 4, i32 noundef 0, ptr noundef %56, ptr noundef %57, i32 noundef %58, ptr noundef %9)
  store i32 %59, ptr %11, align 4, !tbaa !11
  %60 = 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)
  %61 = icmp eq i32 %60, 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 %61, label %62, label %63

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

63:                                               ; preds = %47
  br label %64

64:                                               ; preds = %63
  br label %65

65:                                               ; preds = %64
  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 %66

66:                                               ; preds = %101, %65
  %67 = load i32, ptr %14, align 4, !tbaa !11
  %68 = icmp ult i32 %67, 4
  br i1 %68, label %70, label %69

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

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

71:                                               ; preds = %91, %70
  %72 = load i32, ptr %15, align 4, !tbaa !11
  %73 = load i32, ptr %14, align 4, !tbaa !11
  %74 = zext i32 %73 to i64
  %75 = getelementptr inbounds [4 x i32], ptr %6, i64 0, i64 %74
  %76 = load i32, ptr %75, align 4, !tbaa !11
  %77 = icmp ult i32 %72, %76
  br i1 %77, label %79, label %78

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

79:                                               ; preds = %71
  %80 = load i32, ptr %14, align 4, !tbaa !11
  %81 = add i32 %80, 1
  %82 = trunc i32 %81 to i8
  %83 = load ptr, ptr %9, align 8, !tbaa !5
  %84 = getelementptr inbounds %struct.Longtail_StoredBlock, ptr %83, i32 0, i32 2
  %85 = load ptr, ptr %84, align 8, !tbaa !18
  %86 = load i32, ptr %13, align 4, !tbaa !11
  %87 = load i32, ptr %15, align 4, !tbaa !11
  %88 = add i32 %86, %87
  %89 = zext i32 %88 to i64
  %90 = getelementptr inbounds i8, ptr %85, i64 %89
  store i8 %82, ptr %90, align 1, !tbaa !20
  br label %91

91:                                               ; preds = %79
  %92 = load i32, ptr %15, align 4, !tbaa !11
  %93 = add i32 %92, 1
  store i32 %93, ptr %15, align 4, !tbaa !11
  br label %71, !llvm.loop !21

94:                                               ; preds = %78
  %95 = load i32, ptr %14, align 4, !tbaa !11
  %96 = zext i32 %95 to i64
  %97 = getelementptr inbounds [4 x i32], ptr %6, i64 0, i64 %96
  %98 = load i32, ptr %97, align 4, !tbaa !11
  %99 = load i32, ptr %13, align 4, !tbaa !11
  %100 = add i32 %99, %98
  store i32 %100, ptr %13, align 4, !tbaa !11
  br label %101

101:                                              ; preds = %94
  %102 = load i32, ptr %14, align 4, !tbaa !11
  %103 = add i32 %102, 1
  store i32 %103, ptr %14, align 4, !tbaa !11
  br label %66, !llvm.loop !22

104:                                              ; preds = %69
  call void @llvm.lifetime.start.p0(i64 8, ptr %16) #5
  call void @llvm.lifetime.start.p0(i64 8, ptr %17) #5
  br label %105

105:                                              ; preds = %104
  %106 = call noundef ptr @_ZL19jc_test_get_fixturev()
  %107 = getelementptr inbounds %struct.jc_test_fixture, ptr %106, i32 0, i32 11
  %108 = load i32, ptr %107, align 8
  %109 = and i32 %108, -16776961
  %110 = or i32 %109, 151040
  store i32 %110, ptr %107, align 8
  %111 = call noundef ptr @_ZL19jc_test_get_fixturev()
  %112 = getelementptr inbounds %struct.jc_test_fixture, ptr %111, i32 0, i32 4
  store ptr @.str.3, ptr %112, align 8, !tbaa !15
  call void @_Z28jc_test_increment_assertionsv()
  call void @llvm.lifetime.start.p0(i64 4, ptr %18) #5
  store i32 0, ptr %18, align 4, !tbaa !11
  call void @llvm.lifetime.start.p0(i64 4, ptr %19) #5
  %113 = load ptr, ptr %9, align 8, !tbaa !5
  %114 = getelementptr inbounds %struct.Longtail_StoredBlock, ptr %113, i32 0, i32 1
  %115 = load ptr, ptr %114, align 8, !tbaa !23
  %116 = call i32 @Longtail_WriteBlockIndexToBuffer(ptr noundef %115, ptr noundef %16, ptr noundef %17)
  store i32 %116, ptr %19, align 4, !tbaa !11
  %117 = 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) %18, ptr noundef nonnull align 4 dereferenceable(4) %19, ptr noundef @.str.46, ptr noundef @.str.102, ptr noundef null)
  %118 = icmp eq i32 %117, 0
  call void @llvm.lifetime.end.p0(i64 4, ptr %19) #5
  call void @llvm.lifetime.end.p0(i64 4, ptr %18) #5
  br i1 %118, label %119, label %120

119:                                              ; preds = %105
  call void @_Z21jc_test_set_test_faili(i32 noundef 1)
  store i32 1, ptr %12, align 4
  br label %383

120:                                              ; preds = %105
  br label %121

121:                                              ; preds = %120
  br label %122

122:                                              ; preds = %121
  call void @llvm.lifetime.start.p0(i64 8, ptr %20) #5
  %123 = load i64, ptr %17, align 8, !tbaa !9
  %124 = load ptr, ptr %9, align 8, !tbaa !5
  %125 = getelementptr inbounds %struct.Longtail_StoredBlock, ptr %124, i32 0, i32 3
  %126 = load i32, ptr %125, align 8, !tbaa !24
  %127 = zext i32 %126 to i64
  %128 = add i64 %123, %127
  store i64 %128, ptr %20, align 8, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 8, ptr %21) #5
  %129 = load i64, ptr %20, align 8, !tbaa !9
  %130 = call ptr @Longtail_Alloc(ptr noundef null, i64 noundef %129)
  store ptr %130, ptr %21, align 8, !tbaa !5
  %131 = load ptr, ptr %21, align 8, !tbaa !5
  %132 = load ptr, ptr %16, align 8, !tbaa !5
  %133 = load i64, ptr %17, align 8, !tbaa !9
  call void @llvm.memcpy.p0.p0.i64(ptr align 1 %131, ptr align 1 %132, i64 %133, i1 false)
  %134 = load ptr, ptr %21, align 8, !tbaa !5
  %135 = load i64, ptr %17, align 8, !tbaa !9
  %136 = getelementptr inbounds i8, ptr %134, i64 %135
  %137 = load ptr, ptr %9, align 8, !tbaa !5
  %138 = getelementptr inbounds %struct.Longtail_StoredBlock, ptr %137, i32 0, i32 2
  %139 = load ptr, ptr %138, align 8, !tbaa !18
  %140 = load ptr, ptr %9, align 8, !tbaa !5
  %141 = getelementptr inbounds %struct.Longtail_StoredBlock, ptr %140, i32 0, i32 3
  %142 = load i32, ptr %141, align 8, !tbaa !24
  %143 = zext i32 %142 to i64
  call void @llvm.memcpy.p0.p0.i64(ptr align 1 %136, ptr align 1 %139, i64 %143, i1 false)
  %144 = load ptr, ptr %16, align 8, !tbaa !5
  call void @Longtail_Free(ptr noundef %144)
  store ptr null, ptr %16, align 8, !tbaa !5
  %145 = load ptr, ptr %9, align 8, !tbaa !5
  call void @Longtail_Free(ptr noundef %145)
  store ptr null, ptr %9, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %22) #5
  %146 = load i64, ptr %20, align 8, !tbaa !9
  %147 = call i64 @Longtail_GetStoredBlockSize(i64 noundef %146)
  store i64 %147, ptr %22, align 8, !tbaa !9
  %148 = load i64, ptr %22, align 8, !tbaa !9
  %149 = call ptr @Longtail_Alloc(ptr noundef null, i64 noundef %148)
  store ptr %149, ptr %9, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %23) #5
  %150 = load ptr, ptr %9, align 8, !tbaa !5
  %151 = load i64, ptr %22, align 8, !tbaa !9
  %152 = load i64, ptr %20, align 8, !tbaa !9
  %153 = sub i64 %151, %152
  %154 = getelementptr inbounds i8, ptr %150, i64 %153
  store ptr %154, ptr %23, align 8, !tbaa !5
  %155 = load ptr, ptr %23, align 8, !tbaa !5
  %156 = load ptr, ptr %21, align 8, !tbaa !5
  %157 = load i64, ptr %20, align 8, !tbaa !9
  call void @llvm.memcpy.p0.p0.i64(ptr align 1 %155, ptr align 1 %156, i64 %157, i1 false)
  %158 = load ptr, ptr %21, align 8, !tbaa !5
  call void @Longtail_Free(ptr noundef %158)
  store ptr null, ptr %21, align 8, !tbaa !5
  br label %159

159:                                              ; preds = %122
  %160 = call noundef ptr @_ZL19jc_test_get_fixturev()
  %161 = getelementptr inbounds %struct.jc_test_fixture, ptr %160, i32 0, i32 11
  %162 = load i32, ptr %161, align 8
  %163 = and i32 %162, -16776961
  %164 = or i32 %163, 156672
  store i32 %164, ptr %161, align 8
  %165 = call noundef ptr @_ZL19jc_test_get_fixturev()
  %166 = getelementptr inbounds %struct.jc_test_fixture, ptr %165, i32 0, i32 4
  store ptr @.str.3, ptr %166, align 8, !tbaa !15
  call void @_Z28jc_test_increment_assertionsv()
  call void @llvm.lifetime.start.p0(i64 4, ptr %24) #5
  store i32 0, ptr %24, align 4, !tbaa !11
  call void @llvm.lifetime.start.p0(i64 4, ptr %25) #5
  %167 = load ptr, ptr %9, align 8, !tbaa !5
  %168 = load ptr, ptr %23, align 8, !tbaa !5
  %169 = load i64, ptr %20, align 8, !tbaa !9
  %170 = call i32 @Longtail_InitStoredBlockFromData(ptr noundef %167, ptr noundef %168, i64 noundef %169)
  store i32 %170, ptr %25, align 4, !tbaa !11
  %171 = 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) %24, ptr noundef nonnull align 4 dereferenceable(4) %25, ptr noundef @.str.46, ptr noundef @.str.103, ptr noundef null)
  %172 = icmp eq i32 %171, 0
  call void @llvm.lifetime.end.p0(i64 4, ptr %25) #5
  call void @llvm.lifetime.end.p0(i64 4, ptr %24) #5
  br i1 %172, label %173, label %174

173:                                              ; preds = %159
  call void @_Z21jc_test_set_test_faili(i32 noundef 1)
  store i32 1, ptr %12, align 4
  br label %382

174:                                              ; preds = %159
  br label %175

175:                                              ; preds = %174
  br label %176

176:                                              ; preds = %175
  %177 = load ptr, ptr %9, align 8, !tbaa !5
  %178 = getelementptr inbounds %struct.Longtail_StoredBlock, ptr %177, i32 0, i32 0
  store ptr @Longtail_Free, ptr %178, align 8, !tbaa !25
  br label %179

179:                                              ; preds = %176
  %180 = call noundef ptr @_ZL19jc_test_get_fixturev()
  %181 = getelementptr inbounds %struct.jc_test_fixture, ptr %180, i32 0, i32 11
  %182 = load i32, ptr %181, align 8
  %183 = and i32 %182, -16776961
  %184 = or i32 %183, 157696
  store i32 %184, ptr %181, align 8
  %185 = call noundef ptr @_ZL19jc_test_get_fixturev()
  %186 = getelementptr inbounds %struct.jc_test_fixture, ptr %185, i32 0, i32 4
  store ptr @.str.3, ptr %186, align 8, !tbaa !15
  call void @_Z28jc_test_increment_assertionsv()
  %187 = load ptr, ptr %9, align 8, !tbaa !5
  %188 = getelementptr inbounds %struct.Longtail_StoredBlock, ptr %187, i32 0, i32 3
  %189 = 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) %188, ptr noundef @.str.104, ptr noundef @.str.105)
  %190 = icmp eq i32 %189, 0
  br i1 %190, label %191, label %192

191:                                              ; preds = %179
  call void @_Z21jc_test_set_test_faili(i32 noundef 1)
  store i32 1, ptr %12, align 4
  br label %382

192:                                              ; preds = %179
  br label %193

193:                                              ; preds = %192
  br label %194

194:                                              ; preds = %193
  br label %195

195:                                              ; preds = %194
  %196 = call noundef ptr @_ZL19jc_test_get_fixturev()
  %197 = getelementptr inbounds %struct.jc_test_fixture, ptr %196, i32 0, i32 11
  %198 = load i32, ptr %197, align 8
  %199 = and i32 %198, -16776961
  %200 = or i32 %199, 157952
  store i32 %200, ptr %197, align 8
  %201 = call noundef ptr @_ZL19jc_test_get_fixturev()
  %202 = getelementptr inbounds %struct.jc_test_fixture, ptr %201, i32 0, i32 4
  store ptr @.str.3, ptr %202, align 8, !tbaa !15
  call void @_Z28jc_test_increment_assertionsv()
  %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 0
  %207 = load ptr, ptr %206, align 8, !tbaa !26
  %208 = 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) %207, ptr noundef @.str.106, ptr noundef @.str.107)
  %209 = icmp eq i32 %208, 0
  br i1 %209, label %210, label %211

210:                                              ; preds = %195
  call void @_Z21jc_test_set_test_faili(i32 noundef 1)
  store i32 1, ptr %12, align 4
  br label %382

211:                                              ; preds = %195
  br label %212

212:                                              ; preds = %211
  br label %213

213:                                              ; preds = %212
  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, 158208
  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 !15
  call void @_Z28jc_test_increment_assertionsv()
  call void @llvm.lifetime.start.p0(i64 4, ptr %26) #5
  store i32 -559038737, ptr %26, align 4, !tbaa !11
  %222 = load ptr, ptr %9, align 8, !tbaa !5
  %223 = getelementptr inbounds %struct.Longtail_StoredBlock, ptr %222, i32 0, i32 1
  %224 = load ptr, ptr %223, align 8, !tbaa !23
  %225 = getelementptr inbounds %struct.Longtail_BlockIndex, ptr %224, i32 0, i32 1
  %226 = load ptr, ptr %225, align 8, !tbaa !28
  %227 = call noundef i32 @_ZN21jc_test_cmp_eq_helperILb0EE7compareIjjEEiRKT_RKT0_PKcS9_(ptr noundef nonnull align 4 dereferenceable(4) %26, ptr noundef nonnull align 4 dereferenceable(4) %226, ptr noundef @.str.108, ptr noundef @.str.109)
  %228 = icmp eq i32 %227, 0
  call void @llvm.lifetime.end.p0(i64 4, ptr %26) #5
  br i1 %228, label %229, label %230

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

230:                                              ; preds = %214
  br label %231

231:                                              ; preds = %230
  br label %232

232:                                              ; preds = %231
  br label %233

233:                                              ; preds = %232
  %234 = call noundef ptr @_ZL19jc_test_get_fixturev()
  %235 = getelementptr inbounds %struct.jc_test_fixture, ptr %234, i32 0, i32 11
  %236 = load i32, ptr %235, align 8
  %237 = and i32 %236, -16776961
  %238 = or i32 %237, 158464
  store i32 %238, ptr %235, align 8
  %239 = call noundef ptr @_ZL19jc_test_get_fixturev()
  %240 = getelementptr inbounds %struct.jc_test_fixture, ptr %239, i32 0, i32 4
  store ptr @.str.3, ptr %240, align 8, !tbaa !15
  call void @_Z28jc_test_increment_assertionsv()
  %241 = load ptr, ptr %9, align 8, !tbaa !5
  %242 = getelementptr inbounds %struct.Longtail_StoredBlock, ptr %241, i32 0, i32 1
  %243 = load ptr, ptr %242, align 8, !tbaa !23
  %244 = getelementptr inbounds %struct.Longtail_BlockIndex, ptr %243, i32 0, i32 2
  %245 = load ptr, ptr %244, align 8, !tbaa !29
  %246 = 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) %245, ptr noundef @.str.110, ptr noundef @.str.111)
  %247 = icmp eq i32 %246, 0
  br i1 %247, label %248, label %249

248:                                              ; preds = %233
  call void @_Z21jc_test_set_test_faili(i32 noundef 1)
  store i32 1, ptr %12, align 4
  br label %382

249:                                              ; preds = %233
  br label %250

250:                                              ; preds = %249
  br label %251

251:                                              ; preds = %250
  br label %252

252:                                              ; preds = %251
  %253 = call noundef ptr @_ZL19jc_test_get_fixturev()
  %254 = getelementptr inbounds %struct.jc_test_fixture, ptr %253, i32 0, i32 11
  %255 = load i32, ptr %254, align 8
  %256 = and i32 %255, -16776961
  %257 = or i32 %256, 158720
  store i32 %257, ptr %254, align 8
  %258 = call noundef ptr @_ZL19jc_test_get_fixturev()
  %259 = getelementptr inbounds %struct.jc_test_fixture, ptr %258, i32 0, i32 4
  store ptr @.str.3, ptr %259, align 8, !tbaa !15
  call void @_Z28jc_test_increment_assertionsv()
  call void @llvm.lifetime.start.p0(i64 4, ptr %27) #5
  store i32 0, ptr %27, align 4, !tbaa !11
  %260 = load ptr, ptr %9, align 8, !tbaa !5
  %261 = getelementptr inbounds %struct.Longtail_StoredBlock, ptr %260, i32 0, i32 1
  %262 = load ptr, ptr %261, align 8, !tbaa !23
  %263 = getelementptr inbounds %struct.Longtail_BlockIndex, ptr %262, i32 0, i32 3
  %264 = load ptr, ptr %263, align 8, !tbaa !30
  %265 = 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) %27, ptr noundef nonnull align 4 dereferenceable(4) %264, ptr noundef @.str.46, ptr noundef @.str.112, ptr noundef null)
  %266 = icmp eq i32 %265, 0
  call void @llvm.lifetime.end.p0(i64 4, ptr %27) #5
  br i1 %266, label %267, label %268

267:                                              ; preds = %252
  call void @_Z21jc_test_set_test_faili(i32 noundef 1)
  store i32 1, ptr %12, align 4
  br label %382

268:                                              ; preds = %252
  br label %269

269:                                              ; preds = %268
  br label %270

270:                                              ; preds = %269
  store i32 0, ptr %13, align 4, !tbaa !11
  call void @llvm.lifetime.start.p0(i64 4, ptr %28) #5
  store i32 0, ptr %28, align 4, !tbaa !11
  br label %271

271:                                              ; preds = %371, %270
  %272 = load i32, ptr %28, align 4, !tbaa !11
  %273 = icmp ult i32 %272, 4
  br i1 %273, label %275, label %274

274:                                              ; preds = %271
  store i32 27, ptr %12, align 4
  br label %374

275:                                              ; preds = %271
  br label %276

276:                                              ; preds = %275
  %277 = call noundef ptr @_ZL19jc_test_get_fixturev()
  %278 = getelementptr inbounds %struct.jc_test_fixture, ptr %277, i32 0, i32 11
  %279 = load i32, ptr %278, align 8
  %280 = and i32 %279, -16776961
  %281 = or i32 %280, 159744
  store i32 %281, ptr %278, align 8
  %282 = call noundef ptr @_ZL19jc_test_get_fixturev()
  %283 = getelementptr inbounds %struct.jc_test_fixture, ptr %282, i32 0, i32 4
  store ptr @.str.3, ptr %283, align 8, !tbaa !15
  call void @_Z28jc_test_increment_assertionsv()
  %284 = load i32, ptr %28, align 4, !tbaa !11
  %285 = zext i32 %284 to i64
  %286 = getelementptr inbounds [4 x i64], ptr %5, i64 0, i64 %285
  %287 = load ptr, ptr %9, align 8, !tbaa !5
  %288 = getelementptr inbounds %struct.Longtail_StoredBlock, ptr %287, i32 0, i32 1
  %289 = load ptr, ptr %288, align 8, !tbaa !23
  %290 = getelementptr inbounds %struct.Longtail_BlockIndex, ptr %289, i32 0, i32 4
  %291 = load ptr, ptr %290, align 8, !tbaa !31
  %292 = load i32, ptr %28, align 4, !tbaa !11
  %293 = zext i32 %292 to i64
  %294 = getelementptr inbounds i64, ptr %291, i64 %293
  %295 = call noundef i32 @_ZN21jc_test_cmp_eq_helperILb0EE7compareImmEEiRKT_RKT0_PKcS9_(ptr noundef nonnull align 8 dereferenceable(8) %286, ptr noundef nonnull align 8 dereferenceable(8) %294, ptr noundef @.str.113, ptr noundef @.str.114)
  %296 = icmp eq i32 %295, 0
  br i1 %296, label %297, label %298

297:                                              ; preds = %276
  call void @_Z21jc_test_set_test_faili(i32 noundef 1)
  store i32 1, ptr %12, align 4
  br label %374

298:                                              ; preds = %276
  br label %299

299:                                              ; preds = %298
  br label %300

300:                                              ; preds = %299
  br label %301

301:                                              ; preds = %300
  %302 = call noundef ptr @_ZL19jc_test_get_fixturev()
  %303 = getelementptr inbounds %struct.jc_test_fixture, ptr %302, i32 0, i32 11
  %304 = load i32, ptr %303, align 8
  %305 = and i32 %304, -16776961
  %306 = or i32 %305, 160000
  store i32 %306, ptr %303, align 8
  %307 = call noundef ptr @_ZL19jc_test_get_fixturev()
  %308 = getelementptr inbounds %struct.jc_test_fixture, ptr %307, i32 0, i32 4
  store ptr @.str.3, ptr %308, align 8, !tbaa !15
  call void @_Z28jc_test_increment_assertionsv()
  %309 = load i32, ptr %28, align 4, !tbaa !11
  %310 = zext i32 %309 to i64
  %311 = getelementptr inbounds [4 x i32], ptr %6, i64 0, i64 %310
  %312 = load ptr, ptr %9, align 8, !tbaa !5
  %313 = getelementptr inbounds %struct.Longtail_StoredBlock, ptr %312, i32 0, i32 1
  %314 = load ptr, ptr %313, align 8, !tbaa !23
  %315 = getelementptr inbounds %struct.Longtail_BlockIndex, ptr %314, i32 0, i32 5
  %316 = load ptr, ptr %315, align 8, !tbaa !32
  %317 = load i32, ptr %28, align 4, !tbaa !11
  %318 = zext i32 %317 to i64
  %319 = getelementptr inbounds i32, ptr %316, i64 %318
  %320 = call noundef i32 @_ZN21jc_test_cmp_eq_helperILb0EE7compareIjjEEiRKT_RKT0_PKcS9_(ptr noundef nonnull align 4 dereferenceable(4) %311, ptr noundef nonnull align 4 dereferenceable(4) %319, ptr noundef @.str.115, ptr noundef @.str.116)
  %321 = icmp eq i32 %320, 0
  br i1 %321, label %322, label %323

322:                                              ; preds = %301
  call void @_Z21jc_test_set_test_faili(i32 noundef 1)
  store i32 1, ptr %12, align 4
  br label %374

323:                                              ; preds = %301
  br label %324

324:                                              ; preds = %323
  br label %325

325:                                              ; preds = %324
  call void @llvm.lifetime.start.p0(i64 4, ptr %29) #5
  store i32 0, ptr %29, align 4, !tbaa !11
  br label %326

326:                                              ; preds = %359, %325
  %327 = load i32, ptr %29, align 4, !tbaa !11
  %328 = load i32, ptr %28, align 4, !tbaa !11
  %329 = zext i32 %328 to i64
  %330 = getelementptr inbounds [4 x i32], ptr %6, i64 0, i64 %329
  %331 = load i32, ptr %330, align 4, !tbaa !11
  %332 = icmp ult i32 %327, %331
  br i1 %332, label %334, label %333

333:                                              ; preds = %326
  store i32 34, ptr %12, align 4
  br label %362

334:                                              ; preds = %326
  br label %335

335:                                              ; preds = %334
  %336 = call noundef ptr @_ZL19jc_test_get_fixturev()
  %337 = getelementptr inbounds %struct.jc_test_fixture, ptr %336, i32 0, i32 11
  %338 = load i32, ptr %337, align 8
  %339 = and i32 %338, -16776961
  %340 = or i32 %339, 160768
  store i32 %340, ptr %337, align 8
  %341 = call noundef ptr @_ZL19jc_test_get_fixturev()
  %342 = getelementptr inbounds %struct.jc_test_fixture, ptr %341, i32 0, i32 4
  store ptr @.str.3, ptr %342, align 8, !tbaa !15
  call void @_Z28jc_test_increment_assertionsv()
  %343 = load ptr, ptr %9, align 8, !tbaa !5
  %344 = getelementptr inbounds %struct.Longtail_StoredBlock, ptr %343, i32 0, i32 2
  %345 = load ptr, ptr %344, align 8, !tbaa !18
  %346 = load i32, ptr %13, align 4, !tbaa !11
  %347 = load i32, ptr %29, align 4, !tbaa !11
  %348 = add i32 %346, %347
  %349 = zext i32 %348 to i64
  %350 = getelementptr inbounds i8, ptr %345, i64 %349
  call void @llvm.lifetime.start.p0(i64 4, ptr %30) #5
  %351 = load i32, ptr %28, align 4, !tbaa !11
  %352 = add i32 %351, 1
  store i32 %352, ptr %30, align 4, !tbaa !11
  %353 = 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) %30, ptr noundef @.str.117, ptr noundef @.str.118)
  %354 = icmp eq i32 %353, 0
  call void @llvm.lifetime.end.p0(i64 4, ptr %30) #5
  br i1 %354, label %355, label %356

355:                                              ; preds = %335
  call void @_Z21jc_test_set_test_faili(i32 noundef 1)
  store i32 1, ptr %12, align 4
  br label %362

356:                                              ; preds = %335
  br label %357

357:                                              ; preds = %356
  br label %358

358:                                              ; preds = %357
  br label %359

359:                                              ; preds = %358
  %360 = load i32, ptr %29, align 4, !tbaa !11
  %361 = add i32 %360, 1
  store i32 %361, ptr %29, align 4, !tbaa !11
  br label %326, !llvm.loop !33

362:                                              ; preds = %355, %333
  call void @llvm.lifetime.end.p0(i64 4, ptr %29) #5
  %363 = load i32, ptr %12, align 4
  switch i32 %363, label %374 [
    i32 34, label %364
  ]

364:                                              ; preds = %362
  %365 = load i32, ptr %28, align 4, !tbaa !11
  %366 = zext i32 %365 to i64
  %367 = getelementptr inbounds [4 x i32], ptr %6, i64 0, i64 %366
  %368 = load i32, ptr %367, align 4, !tbaa !11
  %369 = load i32, ptr %13, align 4, !tbaa !11
  %370 = add i32 %369, %368
  store i32 %370, ptr %13, align 4, !tbaa !11
  br label %371

371:                                              ; preds = %364
  %372 = load i32, ptr %28, align 4, !tbaa !11
  %373 = add i32 %372, 1
  store i32 %373, ptr %28, align 4, !tbaa !11
  br label %271, !llvm.loop !34

374:                                              ; preds = %362, %322, %297, %274
  call void @llvm.lifetime.end.p0(i64 4, ptr %28) #5
  %375 = load i32, ptr %12, align 4
  switch i32 %375, label %382 [
    i32 27, label %376
  ]

376:                                              ; preds = %374
  %377 = load ptr, ptr %9, align 8, !tbaa !5
  %378 = getelementptr inbounds %struct.Longtail_StoredBlock, ptr %377, i32 0, i32 0
  %379 = load ptr, ptr %378, align 8, !tbaa !25
  %380 = load ptr, ptr %9, align 8, !tbaa !5
  %381 = call noundef i32 %379(ptr noundef %380)
  store i32 0, ptr %12, align 4
  br label %382

382:                                              ; preds = %376, %374, %267, %248, %229, %210, %191, %173
  call void @llvm.lifetime.end.p0(i64 8, ptr %23) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %22) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %21) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %20) #5
  br label %383

383:                                              ; preds = %382, %119
  call void @llvm.lifetime.end.p0(i64 8, ptr %17) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %16) #5
  call void @llvm.lifetime.end.p0(i64 4, ptr %13) #5
  br label %384

384:                                              ; preds = %383, %62
  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
  %385 = load i32, ptr %12, align 4
  switch i32 %385, label %387 [
    i32 0, label %386
    i32 1, label %386
  ]

386:                                              ; preds = %384, %384
  ret void

387:                                              ; preds = %384
  unreachable
}

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

declare i64 @Longtail_GetStoredBlockSize(i64 noundef) #1

declare i32 @Longtail_InitStoredBlockFromData(ptr noundef, ptr noundef, i64 noundef) #1

; 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

attributes #0 = { nocallback nofree nosync nounwind willreturn memory(argmem: readwrite) }
attributes #1 = { "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 = { 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 #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 = !{!19, !12, i64 24}
!25 = !{!19, !6, i64 0}
!26 = !{!27, !6, i64 0}
!27 = !{!"_ZTS19Longtail_BlockIndex", !6, i64 0, !6, i64 8, !6, i64 16, !6, i64 24, !6, i64 32, !6, i64 40}
!28 = !{!27, !6, i64 8}
!29 = !{!27, !6, i64 16}
!30 = !{!27, !6, i64 24}
!31 = !{!27, !6, i64 32}
!32 = !{!27, !6, i64 40}
!33 = distinct !{!33, !14}
!34 = distinct !{!34, !14}


; 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
@__const._ZN54Longtail_Longtail_ReadWriteStoredBlockBuffer__TestCase8TestBodyEv.chunk_hashes = external hidden unnamed_addr constant [4 x i64], align 16
@__const._ZN54Longtail_Longtail_ReadWriteStoredBlockBuffer__TestCase8TestBodyEv.chunk_sizes = external hidden unnamed_addr constant [4 x i32], align 16
@.str.101 = external hidden unnamed_addr constant [117 x i8], align 1
@.str.102 = external hidden unnamed_addr constant [109 x i8], align 1
@.str.103 = external hidden unnamed_addr constant [84 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

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

declare ptr @Longtail_Alloc(ptr noundef, i64 noundef) local_unnamed_addr #1

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

declare void @_Z28jc_test_increment_assertionsv() local_unnamed_addr #1

declare void @_Z21jc_test_set_test_faili(i32 noundef) local_unnamed_addr #1

declare void @Longtail_Free(ptr noundef) #1

; 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_WriteBlockIndexToBuffer(ptr noundef, ptr noundef, ptr noundef) local_unnamed_addr #1

; Function Attrs: mustprogress uwtable
define dso_local void @_ZN54Longtail_Longtail_ReadWriteStoredBlockBuffer__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 ptr, align 8
  %11 = alloca i64, align 8
  %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
  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._ZN54Longtail_Longtail_ReadWriteStoredBlockBuffer__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._ZN54Longtail_Longtail_ReadWriteStoredBlockBuffer__TestCase8TestBodyEv.chunk_sizes, i64 16, i1 false)
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %6) #6
  %19 = getelementptr inbounds i8, ptr %5, i64 4
  %20 = getelementptr inbounds i8, ptr %5, i64 8
  %21 = getelementptr inbounds i8, ptr %5, i64 12
  %22 = load <4 x i32>, ptr %5, align 16, !tbaa !9
  %23 = tail call i32 @llvm.vector.reduce.add.v4i32(<4 x i32> %22)
  store i32 %23, ptr %6, align 4, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %7) #6
  %24 = tail call noundef ptr @_ZL19jc_test_get_fixturev()
  %25 = getelementptr inbounds i8, ptr %24, i64 96
  %26 = load i32, ptr %25, align 8
  %27 = and i32 %26, -16776961
  %28 = or disjoint i32 %27, 146944
  store i32 %28, ptr %25, align 8
  %29 = tail call noundef ptr @_ZL19jc_test_get_fixturev()
  %30 = getelementptr inbounds i8, ptr %29, i64 32
  store ptr @.str.3, ptr %30, 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
  %31 = 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 %23, ptr noundef nonnull %7)
  store i32 %31, ptr %9, align 4, !tbaa !9
  %32 = 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)
  %33 = icmp eq i32 %32, 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 %33, label %35, label %.preheader54.preheader

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

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

._crit_edge:                                      ; preds = %.lr.ph, %.preheader54.preheader
  %.lcssa = phi i32 [ 0, %.preheader54.preheader ], [ %88, %.lr.ph ]
  %36 = load i32, ptr %19, align 4, !tbaa !9
  %.not66.1 = icmp eq i32 %36, 0
  br i1 %.not66.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 ]
  %37 = load ptr, ptr %7, align 8, !tbaa !15
  %38 = getelementptr inbounds i8, ptr %37, i64 16
  %39 = load ptr, ptr %38, align 8, !tbaa !16
  %40 = trunc nuw i64 %indvars.iv.1 to i32
  %41 = add i32 %.lcssa, %40
  %42 = zext i32 %41 to i64
  %43 = getelementptr inbounds i8, ptr %39, i64 %42
  store i8 2, ptr %43, align 1, !tbaa !18
  %indvars.iv.next.1 = add nuw nsw i64 %indvars.iv.1, 1
  %44 = load i32, ptr %19, align 4, !tbaa !9
  %45 = zext i32 %44 to i64
  %46 = icmp ult i64 %indvars.iv.next.1, %45
  br i1 %46, 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 ], [ %44, %.lr.ph.1 ]
  %47 = add i32 %.lcssa.1, %.lcssa
  %48 = load i32, ptr %20, align 8, !tbaa !9
  %.not66.2 = icmp eq i32 %48, 0
  br i1 %.not66.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 ]
  %49 = load ptr, ptr %7, align 8, !tbaa !15
  %50 = getelementptr inbounds i8, ptr %49, i64 16
  %51 = load ptr, ptr %50, align 8, !tbaa !16
  %52 = trunc nuw i64 %indvars.iv.2 to i32
  %53 = add i32 %47, %52
  %54 = zext i32 %53 to i64
  %55 = getelementptr inbounds i8, ptr %51, i64 %54
  store i8 3, ptr %55, align 1, !tbaa !18
  %indvars.iv.next.2 = add nuw nsw i64 %indvars.iv.2, 1
  %56 = load i32, ptr %20, align 8, !tbaa !9
  %57 = zext i32 %56 to i64
  %58 = icmp ult i64 %indvars.iv.next.2, %57
  br i1 %58, 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 ], [ %56, %.lr.ph.2 ]
  %59 = add i32 %.lcssa.2, %47
  %60 = load i32, ptr %21, align 4, !tbaa !9
  %.not66.3 = icmp eq i32 %60, 0
  br i1 %.not66.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 ]
  %61 = load ptr, ptr %7, align 8, !tbaa !15
  %62 = getelementptr inbounds i8, ptr %61, i64 16
  %63 = load ptr, ptr %62, align 8, !tbaa !16
  %64 = trunc nuw i64 %indvars.iv.3 to i32
  %65 = add i32 %59, %64
  %66 = zext i32 %65 to i64
  %67 = getelementptr inbounds i8, ptr %63, i64 %66
  store i8 4, ptr %67, align 1, !tbaa !18
  %indvars.iv.next.3 = add nuw nsw i64 %indvars.iv.3, 1
  %68 = load i32, ptr %21, align 4, !tbaa !9
  %69 = zext i32 %68 to i64
  %70 = icmp ult i64 %indvars.iv.next.3, %69
  br i1 %70, label %.lr.ph.3, label %._crit_edge.3, !llvm.loop !19

._crit_edge.3:                                    ; preds = %.lr.ph.3, %._crit_edge.2
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %10) #6
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %11) #6
  %71 = call noundef ptr @_ZL19jc_test_get_fixturev()
  %72 = getelementptr inbounds i8, ptr %71, i64 96
  %73 = load i32, ptr %72, align 8
  %74 = and i32 %73, -16776961
  %75 = or disjoint i32 %74, 151040
  store i32 %75, ptr %72, align 8
  %76 = call noundef ptr @_ZL19jc_test_get_fixturev()
  %77 = getelementptr inbounds i8, ptr %76, i64 32
  store ptr @.str.3, ptr %77, align 8, !tbaa !11
  call void @_Z28jc_test_increment_assertionsv()
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %12) #6
  store i32 0, ptr %12, align 4, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %13) #6
  %78 = load ptr, ptr %7, align 8, !tbaa !15
  %79 = getelementptr inbounds i8, ptr %78, i64 8
  %80 = load ptr, ptr %79, align 8, !tbaa !21
  %81 = call i32 @Longtail_WriteBlockIndexToBuffer(ptr noundef %80, ptr noundef nonnull %10, ptr noundef nonnull %11)
  store i32 %81, ptr %13, align 4, !tbaa !9
  %82 = 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) %12, ptr noundef nonnull align 4 dereferenceable(4) %13, ptr noundef nonnull @.str.46, ptr noundef nonnull @.str.102, ptr noundef null)
  %83 = icmp eq i32 %82, 0
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %13) #6
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %12) #6
  br i1 %83, label %91, label %92

.lr.ph:                                           ; preds = %.preheader54.preheader, %.lr.ph
  %indvars.iv = phi i64 [ %indvars.iv.next, %.lr.ph ], [ 0, %.preheader54.preheader ]
  %84 = load ptr, ptr %7, align 8, !tbaa !15
  %85 = getelementptr inbounds i8, ptr %84, i64 16
  %86 = load ptr, ptr %85, align 8, !tbaa !16
  %87 = getelementptr inbounds i8, ptr %86, i64 %indvars.iv
  store i8 1, ptr %87, align 1, !tbaa !18
  %indvars.iv.next = add nuw nsw i64 %indvars.iv, 1
  %88 = load i32, ptr %5, align 16, !tbaa !9
  %89 = zext i32 %88 to i64
  %90 = icmp ult i64 %indvars.iv.next, %89
  br i1 %90, label %.lr.ph, label %._crit_edge, !llvm.loop !19

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

92:                                               ; preds = %._crit_edge.3
  %93 = load i64, ptr %11, align 8, !tbaa !5
  %94 = load ptr, ptr %7, align 8, !tbaa !15
  %95 = getelementptr inbounds i8, ptr %94, i64 24
  %96 = load i32, ptr %95, align 8, !tbaa !22
  %97 = zext i32 %96 to i64
  %98 = add i64 %93, %97
  %99 = call ptr @Longtail_Alloc(ptr noundef null, i64 noundef %98)
  %100 = load ptr, ptr %10, align 8, !tbaa !15
  %101 = load i64, ptr %11, align 8, !tbaa !5
  call void @llvm.memcpy.p0.p0.i64(ptr align 1 %99, ptr align 1 %100, i64 %101, i1 false)
  %102 = load i64, ptr %11, align 8, !tbaa !5
  %103 = getelementptr inbounds i8, ptr %99, i64 %102
  %104 = load ptr, ptr %7, align 8, !tbaa !15
  %105 = getelementptr inbounds i8, ptr %104, i64 16
  %106 = load ptr, ptr %105, align 8, !tbaa !16
  %107 = getelementptr inbounds i8, ptr %104, i64 24
  %108 = load i32, ptr %107, align 8, !tbaa !22
  %109 = zext i32 %108 to i64
  call void @llvm.memcpy.p0.p0.i64(ptr align 1 %103, ptr align 1 %106, i64 %109, i1 false)
  %110 = load ptr, ptr %10, align 8, !tbaa !15
  call void @Longtail_Free(ptr noundef %110)
  store ptr null, ptr %10, align 8, !tbaa !15
  %111 = load ptr, ptr %7, align 8, !tbaa !15
  call void @Longtail_Free(ptr noundef %111)
  store ptr null, ptr %7, align 8, !tbaa !15
  %112 = call i64 @Longtail_GetStoredBlockSize(i64 noundef %98)
  %113 = call ptr @Longtail_Alloc(ptr noundef null, i64 noundef %112)
  store ptr %113, ptr %7, align 8, !tbaa !15
  %114 = sub i64 %112, %98
  %115 = getelementptr inbounds i8, ptr %113, i64 %114
  call void @llvm.memcpy.p0.p0.i64(ptr align 1 %115, ptr align 1 %99, i64 %98, i1 false)
  call void @Longtail_Free(ptr noundef %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, 156672
  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()
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %14) #6
  store i32 0, ptr %14, align 4, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %15) #6
  %123 = load ptr, ptr %7, align 8, !tbaa !15
  %124 = call i32 @Longtail_InitStoredBlockFromData(ptr noundef %123, ptr noundef %115, i64 noundef %98)
  store i32 %124, ptr %15, align 4, !tbaa !9
  %125 = 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) %15, ptr noundef nonnull @.str.46, ptr noundef nonnull @.str.103, ptr noundef null)
  %126 = icmp eq i32 %125, 0
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %15) #6
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %14) #6
  br i1 %126, label %127, label %128

127:                                              ; preds = %92
  call void @_Z21jc_test_set_test_faili(i32 noundef 1)
  br label %417

128:                                              ; preds = %92
  %129 = load ptr, ptr %7, align 8, !tbaa !15
  store ptr @Longtail_Free, ptr %129, align 8, !tbaa !23
  %130 = call noundef ptr @_ZL19jc_test_get_fixturev()
  %131 = getelementptr inbounds i8, ptr %130, i64 96
  %132 = load i32, ptr %131, align 8
  %133 = and i32 %132, -16776961
  %134 = or disjoint i32 %133, 157696
  store i32 %134, ptr %131, align 8
  %135 = call noundef ptr @_ZL19jc_test_get_fixturev()
  %136 = getelementptr inbounds i8, ptr %135, i64 32
  store ptr @.str.3, ptr %136, align 8, !tbaa !11
  call void @_Z28jc_test_increment_assertionsv()
  %137 = load ptr, ptr %7, align 8, !tbaa !15
  %138 = getelementptr inbounds i8, ptr %137, i64 24
  %139 = 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) %138, ptr noundef nonnull @.str.104, ptr noundef nonnull @.str.105)
  %140 = icmp eq i32 %139, 0
  br i1 %140, label %141, label %142

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

142:                                              ; preds = %128
  %143 = call noundef ptr @_ZL19jc_test_get_fixturev()
  %144 = getelementptr inbounds i8, ptr %143, i64 96
  %145 = load i32, ptr %144, align 8
  %146 = and i32 %145, -16776961
  %147 = or disjoint i32 %146, 157952
  store i32 %147, ptr %144, align 8
  %148 = call noundef ptr @_ZL19jc_test_get_fixturev()
  %149 = getelementptr inbounds i8, ptr %148, i64 32
  store ptr @.str.3, ptr %149, align 8, !tbaa !11
  call void @_Z28jc_test_increment_assertionsv()
  %150 = load ptr, ptr %7, align 8, !tbaa !15
  %151 = getelementptr inbounds i8, ptr %150, i64 8
  %152 = load ptr, ptr %151, align 8, !tbaa !21
  %153 = load ptr, ptr %152, align 8, !tbaa !24
  %154 = 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) %153, ptr noundef nonnull @.str.106, ptr noundef nonnull @.str.107)
  %155 = icmp eq i32 %154, 0
  br i1 %155, label %156, label %157

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

157:                                              ; preds = %142
  %158 = call noundef ptr @_ZL19jc_test_get_fixturev()
  %159 = getelementptr inbounds i8, ptr %158, i64 96
  %160 = load i32, ptr %159, align 8
  %161 = and i32 %160, -16776961
  %162 = or disjoint i32 %161, 158208
  store i32 %162, ptr %159, align 8
  %163 = call noundef ptr @_ZL19jc_test_get_fixturev()
  %164 = getelementptr inbounds i8, ptr %163, i64 32
  store ptr @.str.3, ptr %164, align 8, !tbaa !11
  call void @_Z28jc_test_increment_assertionsv()
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %16) #6
  store i32 -559038737, ptr %16, align 4, !tbaa !9
  %165 = load ptr, ptr %7, align 8, !tbaa !15
  %166 = getelementptr inbounds i8, ptr %165, i64 8
  %167 = load ptr, ptr %166, align 8, !tbaa !21
  %168 = getelementptr inbounds i8, ptr %167, i64 8
  %169 = load ptr, ptr %168, align 8, !tbaa !26
  %170 = 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) %169, ptr noundef nonnull @.str.108, ptr noundef nonnull @.str.109)
  %171 = icmp eq i32 %170, 0
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %16) #6
  br i1 %171, label %172, label %173

172:                                              ; preds = %157
  call void @_Z21jc_test_set_test_faili(i32 noundef 1)
  br label %417

173:                                              ; preds = %157
  %174 = call noundef ptr @_ZL19jc_test_get_fixturev()
  %175 = getelementptr inbounds i8, ptr %174, i64 96
  %176 = load i32, ptr %175, align 8
  %177 = and i32 %176, -16776961
  %178 = or disjoint i32 %177, 158464
  store i32 %178, ptr %175, align 8
  %179 = call noundef ptr @_ZL19jc_test_get_fixturev()
  %180 = getelementptr inbounds i8, ptr %179, i64 32
  store ptr @.str.3, ptr %180, align 8, !tbaa !11
  call void @_Z28jc_test_increment_assertionsv()
  %181 = load ptr, ptr %7, align 8, !tbaa !15
  %182 = getelementptr inbounds i8, ptr %181, i64 8
  %183 = load ptr, ptr %182, align 8, !tbaa !21
  %184 = getelementptr inbounds i8, ptr %183, i64 16
  %185 = load ptr, ptr %184, align 8, !tbaa !27
  %186 = 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) %185, ptr noundef nonnull @.str.110, ptr noundef nonnull @.str.111)
  %187 = icmp eq i32 %186, 0
  br i1 %187, label %188, label %189

188:                                              ; preds = %173
  call void @_Z21jc_test_set_test_faili(i32 noundef 1)
  br label %417

189:                                              ; preds = %173
  %190 = call noundef ptr @_ZL19jc_test_get_fixturev()
  %191 = getelementptr inbounds i8, ptr %190, i64 96
  %192 = load i32, ptr %191, align 8
  %193 = and i32 %192, -16776961
  %194 = or disjoint i32 %193, 158720
  store i32 %194, ptr %191, align 8
  %195 = call noundef ptr @_ZL19jc_test_get_fixturev()
  %196 = getelementptr inbounds i8, ptr %195, i64 32
  store ptr @.str.3, ptr %196, align 8, !tbaa !11
  call void @_Z28jc_test_increment_assertionsv()
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %17) #6
  store i32 0, ptr %17, align 4, !tbaa !9
  %197 = load ptr, ptr %7, align 8, !tbaa !15
  %198 = getelementptr inbounds i8, ptr %197, i64 8
  %199 = load ptr, ptr %198, align 8, !tbaa !21
  %200 = getelementptr inbounds i8, ptr %199, i64 24
  %201 = load ptr, ptr %200, align 8, !tbaa !28
  %202 = 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) %201, ptr noundef nonnull @.str.46, ptr noundef nonnull @.str.112, ptr noundef null)
  %203 = icmp eq i32 %202, 0
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %17) #6
  br i1 %203, label %218, label %.preheader53.preheader

.preheader53.preheader:                           ; preds = %189
  %204 = call noundef ptr @_ZL19jc_test_get_fixturev()
  %205 = getelementptr inbounds i8, ptr %204, i64 96
  %206 = load i32, ptr %205, align 8
  %207 = and i32 %206, -16776961
  %208 = or disjoint i32 %207, 159744
  store i32 %208, ptr %205, align 8
  %209 = call noundef ptr @_ZL19jc_test_get_fixturev()
  %210 = getelementptr inbounds i8, ptr %209, i64 32
  store ptr @.str.3, ptr %210, align 8, !tbaa !11
  call void @_Z28jc_test_increment_assertionsv()
  %211 = load ptr, ptr %7, align 8, !tbaa !15
  %212 = getelementptr inbounds i8, ptr %211, i64 8
  %213 = load ptr, ptr %212, align 8, !tbaa !21
  %214 = getelementptr inbounds i8, ptr %213, i64 32
  %215 = load ptr, ptr %214, align 8, !tbaa !29
  %216 = 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) %215, ptr noundef nonnull @.str.113, ptr noundef nonnull @.str.114)
  %217 = icmp eq i32 %216, 0
  br i1 %217, label %219, label %220

218:                                              ; preds = %189
  call void @_Z21jc_test_set_test_faili(i32 noundef 1)
  br label %417

219:                                              ; preds = %.critedge.2, %.critedge.1, %.critedge, %.preheader53.preheader
  call void @_Z21jc_test_set_test_faili(i32 noundef 1)
  br label %417

220:                                              ; preds = %.preheader53.preheader
  %221 = call noundef ptr @_ZL19jc_test_get_fixturev()
  %222 = getelementptr inbounds i8, ptr %221, i64 96
  %223 = load i32, ptr %222, align 8
  %224 = and i32 %223, -16776961
  %225 = or disjoint i32 %224, 160000
  store i32 %225, ptr %222, align 8
  %226 = call noundef ptr @_ZL19jc_test_get_fixturev()
  %227 = getelementptr inbounds i8, ptr %226, i64 32
  store ptr @.str.3, ptr %227, align 8, !tbaa !11
  call void @_Z28jc_test_increment_assertionsv()
  %228 = load ptr, ptr %7, align 8, !tbaa !15
  %229 = getelementptr inbounds i8, ptr %228, i64 8
  %230 = load ptr, ptr %229, align 8, !tbaa !21
  %231 = getelementptr inbounds i8, ptr %230, i64 40
  %232 = load ptr, ptr %231, align 8, !tbaa !30
  %233 = 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) %232, ptr noundef nonnull @.str.115, ptr noundef nonnull @.str.116)
  %234 = icmp eq i32 %233, 0
  br i1 %234, label %236, label %.preheader

.preheader:                                       ; preds = %220
  %235 = load i32, ptr %5, align 16, !tbaa !9
  %.not61.not = icmp eq i32 %235, 0
  br i1 %.not61.not, label %.critedge, label %.lr.ph63

236:                                              ; preds = %378, %324, %270, %220
  call void @_Z21jc_test_set_test_faili(i32 noundef 1)
  br label %417

237:                                              ; preds = %.lr.ph63
  %indvars.iv.next75 = add nuw nsw i64 %indvars.iv74, 1
  %238 = load i32, ptr %5, align 16, !tbaa !9
  %239 = zext i32 %238 to i64
  %.not = icmp ult i64 %indvars.iv.next75, %239
  br i1 %.not, label %.lr.ph63, label %.critedge, !llvm.loop !31

.lr.ph63:                                         ; preds = %.preheader, %237
  %indvars.iv74 = phi i64 [ %indvars.iv.next75, %237 ], [ 0, %.preheader ]
  %240 = call noundef ptr @_ZL19jc_test_get_fixturev()
  %241 = getelementptr inbounds i8, ptr %240, i64 96
  %242 = load i32, ptr %241, align 8
  %243 = and i32 %242, -16776961
  %244 = or disjoint i32 %243, 160768
  store i32 %244, ptr %241, align 8
  %245 = call noundef ptr @_ZL19jc_test_get_fixturev()
  %246 = getelementptr inbounds i8, ptr %245, i64 32
  store ptr @.str.3, ptr %246, align 8, !tbaa !11
  call void @_Z28jc_test_increment_assertionsv()
  %247 = load ptr, ptr %7, align 8, !tbaa !15
  %248 = getelementptr inbounds i8, ptr %247, i64 16
  %249 = load ptr, ptr %248, align 8, !tbaa !16
  %250 = getelementptr inbounds i8, ptr %249, i64 %indvars.iv74
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %18) #6
  store i32 1, ptr %18, align 4, !tbaa !9
  %251 = call noundef i32 @_ZN21jc_test_cmp_eq_helperILb0EE7compareIhjEEiRKT_RKT0_PKcS9_(ptr noundef nonnull align 1 dereferenceable(1) %250, ptr noundef nonnull align 4 dereferenceable(4) %18, ptr noundef nonnull @.str.117, ptr noundef nonnull @.str.118)
  %252 = icmp eq i32 %251, 0
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %18) #6
  br i1 %252, label %.loopexit, label %237

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

.critedge:                                        ; preds = %237, %.preheader
  %253 = phi i32 [ 0, %.preheader ], [ %238, %237 ]
  %254 = call noundef ptr @_ZL19jc_test_get_fixturev()
  %255 = getelementptr inbounds i8, ptr %254, i64 96
  %256 = load i32, ptr %255, align 8
  %257 = and i32 %256, -16776961
  %258 = or disjoint i32 %257, 159744
  store i32 %258, ptr %255, align 8
  %259 = call noundef ptr @_ZL19jc_test_get_fixturev()
  %260 = getelementptr inbounds i8, ptr %259, i64 32
  store ptr @.str.3, ptr %260, align 8, !tbaa !11
  call void @_Z28jc_test_increment_assertionsv()
  %261 = getelementptr inbounds i8, ptr %4, i64 8
  %262 = load ptr, ptr %7, align 8, !tbaa !15
  %263 = getelementptr inbounds i8, ptr %262, i64 8
  %264 = load ptr, ptr %263, align 8, !tbaa !21
  %265 = getelementptr inbounds i8, ptr %264, i64 32
  %266 = load ptr, ptr %265, align 8, !tbaa !29
  %267 = getelementptr inbounds i8, ptr %266, i64 8
  %268 = call noundef i32 @_ZN21jc_test_cmp_eq_helperILb0EE7compareImmEEiRKT_RKT0_PKcS9_(ptr noundef nonnull align 8 dereferenceable(8) %261, ptr noundef nonnull align 8 dereferenceable(8) %267, ptr noundef nonnull @.str.113, ptr noundef nonnull @.str.114)
  %269 = icmp eq i32 %268, 0
  br i1 %269, label %219, label %270

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

.preheader.1:                                     ; preds = %270
  %286 = load i32, ptr %19, align 4, !tbaa !9
  %.not61.not.1 = icmp eq i32 %286, 0
  br i1 %.not61.not.1, label %.critedge.1, label %.lr.ph63.1

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

303:                                              ; preds = %.lr.ph63.1
  %indvars.iv.next75.1 = add nuw nsw i64 %indvars.iv74.1, 1
  %304 = load i32, ptr %19, align 4, !tbaa !9
  %305 = zext i32 %304 to i64
  %.not.1 = icmp ult i64 %indvars.iv.next75.1, %305
  br i1 %.not.1, label %.lr.ph63.1, label %.critedge.1, !llvm.loop !31

.critedge.1:                                      ; preds = %303, %.preheader.1
  %306 = phi i32 [ 0, %.preheader.1 ], [ %304, %303 ]
  %307 = add i32 %306, %253
  %308 = call noundef ptr @_ZL19jc_test_get_fixturev()
  %309 = getelementptr inbounds i8, ptr %308, i64 96
  %310 = load i32, ptr %309, align 8
  %311 = and i32 %310, -16776961
  %312 = or disjoint i32 %311, 159744
  store i32 %312, ptr %309, align 8
  %313 = call noundef ptr @_ZL19jc_test_get_fixturev()
  %314 = getelementptr inbounds i8, ptr %313, i64 32
  store ptr @.str.3, ptr %314, align 8, !tbaa !11
  call void @_Z28jc_test_increment_assertionsv()
  %315 = getelementptr inbounds i8, ptr %4, i64 16
  %316 = load ptr, ptr %7, align 8, !tbaa !15
  %317 = getelementptr inbounds i8, ptr %316, i64 8
  %318 = load ptr, ptr %317, align 8, !tbaa !21
  %319 = getelementptr inbounds i8, ptr %318, i64 32
  %320 = load ptr, ptr %319, align 8, !tbaa !29
  %321 = getelementptr inbounds i8, ptr %320, i64 16
  %322 = call noundef i32 @_ZN21jc_test_cmp_eq_helperILb0EE7compareImmEEiRKT_RKT0_PKcS9_(ptr noundef nonnull align 8 dereferenceable(8) %315, ptr noundef nonnull align 8 dereferenceable(8) %321, ptr noundef nonnull @.str.113, ptr noundef nonnull @.str.114)
  %323 = icmp eq i32 %322, 0
  br i1 %323, label %219, label %324

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

.preheader.2:                                     ; preds = %324
  %340 = load i32, ptr %20, align 8, !tbaa !9
  %.not61.not.2 = icmp eq i32 %340, 0
  br i1 %.not61.not.2, label %.critedge.2, label %.lr.ph63.2

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

357:                                              ; preds = %.lr.ph63.2
  %indvars.iv.next75.2 = add nuw nsw i64 %indvars.iv74.2, 1
  %358 = load i32, ptr %20, align 8, !tbaa !9
  %359 = zext i32 %358 to i64
  %.not.2 = icmp ult i64 %indvars.iv.next75.2, %359
  br i1 %.not.2, label %.lr.ph63.2, label %.critedge.2, !llvm.loop !31

.critedge.2:                                      ; preds = %357, %.preheader.2
  %360 = phi i32 [ 0, %.preheader.2 ], [ %358, %357 ]
  %361 = add i32 %360, %307
  %362 = call noundef ptr @_ZL19jc_test_get_fixturev()
  %363 = getelementptr inbounds i8, ptr %362, i64 96
  %364 = load i32, ptr %363, align 8
  %365 = and i32 %364, -16776961
  %366 = or disjoint i32 %365, 159744
  store i32 %366, ptr %363, align 8
  %367 = call noundef ptr @_ZL19jc_test_get_fixturev()
  %368 = getelementptr inbounds i8, ptr %367, i64 32
  store ptr @.str.3, ptr %368, align 8, !tbaa !11
  call void @_Z28jc_test_increment_assertionsv()
  %369 = getelementptr inbounds i8, ptr %4, i64 24
  %370 = load ptr, ptr %7, align 8, !tbaa !15
  %371 = getelementptr inbounds i8, ptr %370, i64 8
  %372 = load ptr, ptr %371, align 8, !tbaa !21
  %373 = getelementptr inbounds i8, ptr %372, i64 32
  %374 = load ptr, ptr %373, align 8, !tbaa !29
  %375 = getelementptr inbounds i8, ptr %374, i64 24
  %376 = call noundef i32 @_ZN21jc_test_cmp_eq_helperILb0EE7compareImmEEiRKT_RKT0_PKcS9_(ptr noundef nonnull align 8 dereferenceable(8) %369, ptr noundef nonnull align 8 dereferenceable(8) %375, ptr noundef nonnull @.str.113, ptr noundef nonnull @.str.114)
  %377 = icmp eq i32 %376, 0
  br i1 %377, label %219, label %378

378:                                              ; preds = %.critedge.2
  %379 = call noundef ptr @_ZL19jc_test_get_fixturev()
  %380 = getelementptr inbounds i8, ptr %379, i64 96
  %381 = load i32, ptr %380, align 8
  %382 = and i32 %381, -16776961
  %383 = or disjoint i32 %382, 160000
  store i32 %383, ptr %380, align 8
  %384 = call noundef ptr @_ZL19jc_test_get_fixturev()
  %385 = getelementptr inbounds i8, ptr %384, i64 32
  store ptr @.str.3, ptr %385, align 8, !tbaa !11
  call void @_Z28jc_test_increment_assertionsv()
  %386 = load ptr, ptr %7, align 8, !tbaa !15
  %387 = getelementptr inbounds i8, ptr %386, i64 8
  %388 = load ptr, ptr %387, align 8, !tbaa !21
  %389 = getelementptr inbounds i8, ptr %388, i64 40
  %390 = load ptr, ptr %389, align 8, !tbaa !30
  %391 = getelementptr inbounds i8, ptr %390, i64 12
  %392 = call noundef i32 @_ZN21jc_test_cmp_eq_helperILb0EE7compareIjjEEiRKT_RKT0_PKcS9_(ptr noundef nonnull align 4 dereferenceable(4) %21, ptr noundef nonnull align 4 dereferenceable(4) %391, ptr noundef nonnull @.str.115, ptr noundef nonnull @.str.116)
  %393 = icmp eq i32 %392, 0
  br i1 %393, label %236, label %.preheader.3

.preheader.3:                                     ; preds = %378
  %394 = load i32, ptr %21, align 4, !tbaa !9
  %.not61.not.3 = icmp eq i32 %394, 0
  br i1 %.not61.not.3, label %.critedge.3, label %.lr.ph63.3

.lr.ph63.3:                                       ; preds = %.preheader.3, %411
  %indvars.iv74.3 = phi i64 [ %indvars.iv.next75.3, %411 ], [ 0, %.preheader.3 ]
  %395 = call noundef ptr @_ZL19jc_test_get_fixturev()
  %396 = getelementptr inbounds i8, ptr %395, i64 96
  %397 = load i32, ptr %396, align 8
  %398 = and i32 %397, -16776961
  %399 = or disjoint i32 %398, 160768
  store i32 %399, ptr %396, align 8
  %400 = call noundef ptr @_ZL19jc_test_get_fixturev()
  %401 = getelementptr inbounds i8, ptr %400, i64 32
  store ptr @.str.3, ptr %401, align 8, !tbaa !11
  call void @_Z28jc_test_increment_assertionsv()
  %402 = load ptr, ptr %7, align 8, !tbaa !15
  %403 = getelementptr inbounds i8, ptr %402, i64 16
  %404 = load ptr, ptr %403, align 8, !tbaa !16
  %405 = trunc nuw i64 %indvars.iv74.3 to i32
  %406 = add i32 %361, %405
  %407 = zext i32 %406 to i64
  %408 = getelementptr inbounds i8, ptr %404, i64 %407
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %18) #6
  store i32 4, ptr %18, align 4, !tbaa !9
  %409 = call noundef i32 @_ZN21jc_test_cmp_eq_helperILb0EE7compareIhjEEiRKT_RKT0_PKcS9_(ptr noundef nonnull align 1 dereferenceable(1) %408, ptr noundef nonnull align 4 dereferenceable(4) %18, ptr noundef nonnull @.str.117, ptr noundef nonnull @.str.118)
  %410 = icmp eq i32 %409, 0
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %18) #6
  br i1 %410, label %.loopexit, label %411

411:                                              ; preds = %.lr.ph63.3
  %indvars.iv.next75.3 = add nuw nsw i64 %indvars.iv74.3, 1
  %412 = load i32, ptr %21, align 4, !tbaa !9
  %413 = zext i32 %412 to i64
  %.not.3 = icmp ult i64 %indvars.iv.next75.3, %413
  br i1 %.not.3, label %.lr.ph63.3, label %.critedge.3, !llvm.loop !31

.critedge.3:                                      ; preds = %411, %.preheader.3
  %414 = load ptr, ptr %7, align 8, !tbaa !15
  %415 = load ptr, ptr %414, align 8, !tbaa !23
  %416 = call noundef i32 %415(ptr noundef nonnull %414)
  br label %417

417:                                              ; preds = %219, %236, %.loopexit, %127, %141, %156, %172, %188, %218, %.critedge.3, %91
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %11) #6
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %10) #6
  br label %418

418:                                              ; preds = %417, %35
  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
}

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

declare i64 @Longtail_GetStoredBlockSize(i64 noundef) local_unnamed_addr #1

declare i32 @Longtail_InitStoredBlockFromData(ptr noundef, ptr noundef, i64 noundef) local_unnamed_addr #1

; 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: 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 = { "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 = { 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 #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 = !{!17, !10, i64 24}
!23 = !{!17, !13, i64 0}
!24 = !{!25, !13, i64 0}
!25 = !{!"_ZTS19Longtail_BlockIndex", !13, i64 0, !13, i64 8, !13, i64 16, !13, i64 24, !13, i64 32, !13, i64 40}
!26 = !{!25, !13, i64 8}
!27 = !{!25, !13, i64 16}
!28 = !{!25, !13, i64 24}
!29 = !{!25, !13, i64 32}
!30 = !{!25, !13, i64 40}
!31 = distinct !{!31, !20}


; 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