; LLVM IR from DanEngelbrecht/longtail :: test/test.ll/ZN44Longtail_MemMappedChunkerLargeFile (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.Longtail_Chunker_ChunkRange = type { ptr, i64, i32 }
%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_ChunkerAPI = type { %struct.Longtail_API, ptr, ptr, ptr, ptr, ptr }
%struct.Longtail_API = type { ptr }

@.str.3 = external hidden unnamed_addr constant [71 x i8], align 1
@.str.46 = external hidden unnamed_addr constant [2 x i8], align 1
@.str.74 = external hidden unnamed_addr constant [3 x i8], align 1
@.str.545 = external hidden unnamed_addr constant [23 x i8], align 1
@.str.548 = external hidden unnamed_addr constant [11 x i8], align 1
@.str.549 = external hidden unnamed_addr constant [114 x i8], align 1
@.str.550 = external hidden unnamed_addr constant [32 x i8], align 1
@.str.551 = external hidden unnamed_addr constant [8 x i8], align 1
@.str.553 = external hidden unnamed_addr constant [26 x i8], align 1
@.str.555 = external hidden unnamed_addr constant [23 x i8], align 1
@.str.562 = external hidden unnamed_addr constant [61 x i8], align 1
@.str.563 = external hidden unnamed_addr constant [22 x i8], align 1
@.str.564 = external hidden unnamed_addr constant [40 x i8], align 1
@__const._ZN44Longtail_MemMappedChunkerLargeFile__TestCase8TestBodyEv.expected_chunks = external hidden unnamed_addr constant [20 x %struct.Longtail_Chunker_ChunkRange], align 16
@.str.565 = external hidden unnamed_addr constant [75 x i8], align 1
@.str.566 = external hidden unnamed_addr constant [96 x i8], align 1
@.str.567 = external hidden unnamed_addr constant [19 x i8], align 1
@.str.568 = external hidden unnamed_addr constant [17 x i8], align 1
@.str.569 = external hidden unnamed_addr constant [10 x i8], align 1

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

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

declare void @_Z28jc_test_increment_assertionsv() #2

declare void @_Z21jc_test_set_test_faili(i32 noundef) #2

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

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

declare void @Longtail_DisposeAPI(ptr noundef) #2

; Function Attrs: 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

declare ptr @Longtail_CreateHPCDCChunkerAPI() #2

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

; Function Attrs: mustprogress uwtable
define dso_local void @_ZN44Longtail_MemMappedChunkerLargeFile__TestCase8TestBodyEv(ptr noundef nonnull align 8 dereferenceable(8) %0) unnamed_addr #3 align 2 {
  %2 = alloca ptr, align 8
  %3 = alloca ptr, align 8
  %4 = alloca i32, align 4
  %5 = alloca i32, align 4
  %6 = alloca i32, align 4
  %7 = alloca i64, align 8
  %8 = alloca i32, align 4
  %9 = alloca i32, align 4
  %10 = alloca ptr, align 8
  %11 = alloca i64, align 8
  %12 = alloca i64, align 8
  %13 = alloca i64, align 8
  %14 = alloca ptr, align 8
  %15 = alloca i32, align 4
  %16 = alloca i32, align 4
  %17 = alloca i32, align 4
  %18 = alloca [20 x %struct.Longtail_Chunker_ChunkRange], align 16
  %19 = alloca ptr, align 8
  %20 = alloca ptr, align 8
  %21 = alloca i32, align 4
  %22 = alloca i32, align 4
  %23 = alloca ptr, align 8
  %24 = alloca i32, align 4
  %25 = alloca ptr, align 8
  %26 = alloca i64, align 8
  %27 = alloca i32, align 4
  %28 = alloca i32, align 4
  %29 = alloca i64, align 8
  %30 = alloca i64, align 8
  %31 = alloca i64, align 8
  %32 = alloca i32, align 4
  store ptr %0, ptr %2, align 8, !tbaa !5
  %33 = load ptr, ptr %2, align 8
  call void @llvm.lifetime.start.p0(i64 8, ptr %3) #5
  br label %34

34:                                               ; preds = %1
  %35 = call noundef ptr @_ZL19jc_test_get_fixturev()
  %36 = getelementptr inbounds %struct.jc_test_fixture, ptr %35, i32 0, i32 11
  %37 = load i32, ptr %36, align 8
  %38 = and i32 %37, -16776961
  %39 = or i32 %38, 886784
  store i32 %39, ptr %36, align 8
  %40 = call noundef ptr @_ZL19jc_test_get_fixturev()
  %41 = getelementptr inbounds %struct.jc_test_fixture, ptr %40, i32 0, i32 4
  store ptr @.str.3, ptr %41, align 8, !tbaa !9
  call void @_Z28jc_test_increment_assertionsv()
  call void @llvm.lifetime.start.p0(i64 4, ptr %4) #5
  store i32 0, ptr %4, align 4, !tbaa !14
  call void @llvm.lifetime.start.p0(i64 4, ptr %5) #5
  %42 = call i32 @Longtail_OpenReadFile(ptr noundef @.str.545, ptr noundef %3)
  store i32 %42, ptr %5, align 4, !tbaa !14
  %43 = 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) %4, ptr noundef nonnull align 4 dereferenceable(4) %5, ptr noundef @.str.46, ptr noundef @.str.562, ptr noundef null)
  %44 = icmp eq i32 %43, 0
  call void @llvm.lifetime.end.p0(i64 4, ptr %5) #5
  call void @llvm.lifetime.end.p0(i64 4, ptr %4) #5
  br i1 %44, label %45, label %46

45:                                               ; preds = %34
  call void @_Z21jc_test_set_test_faili(i32 noundef 1)
  store i32 1, ptr %6, align 4
  br label %263

46:                                               ; preds = %34
  br label %47

47:                                               ; preds = %46
  br label %48

48:                                               ; preds = %47
  br label %49

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

60:                                               ; preds = %49
  call void @_Z21jc_test_set_test_faili(i32 noundef 1)
  store i32 1, ptr %6, align 4
  br label %263

61:                                               ; preds = %49
  br label %62

62:                                               ; preds = %61
  br label %63

63:                                               ; preds = %62
  call void @llvm.lifetime.start.p0(i64 8, ptr %7) #5
  br label %64

64:                                               ; preds = %63
  %65 = call noundef ptr @_ZL19jc_test_get_fixturev()
  %66 = getelementptr inbounds %struct.jc_test_fixture, ptr %65, i32 0, i32 11
  %67 = load i32, ptr %66, align 8
  %68 = and i32 %67, -16776961
  %69 = or i32 %68, 887808
  store i32 %69, ptr %66, align 8
  %70 = call noundef ptr @_ZL19jc_test_get_fixturev()
  %71 = getelementptr inbounds %struct.jc_test_fixture, ptr %70, i32 0, i32 4
  store ptr @.str.3, ptr %71, align 8, !tbaa !9
  call void @_Z28jc_test_increment_assertionsv()
  call void @llvm.lifetime.start.p0(i64 4, ptr %8) #5
  store i32 0, ptr %8, align 4, !tbaa !14
  call void @llvm.lifetime.start.p0(i64 4, ptr %9) #5
  %72 = load ptr, ptr %3, align 8, !tbaa !5
  %73 = call i32 @Longtail_GetFileSize(ptr noundef %72, ptr noundef %7)
  store i32 %73, ptr %9, align 4, !tbaa !14
  %74 = 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 @.str.46, ptr noundef @.str.564, ptr noundef null)
  %75 = icmp eq i32 %74, 0
  call void @llvm.lifetime.end.p0(i64 4, ptr %9) #5
  call void @llvm.lifetime.end.p0(i64 4, ptr %8) #5
  br i1 %75, label %76, label %77

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

77:                                               ; preds = %64
  br label %78

78:                                               ; preds = %77
  br label %79

79:                                               ; preds = %78
  call void @llvm.lifetime.start.p0(i64 8, ptr %10) #5
  %80 = call ptr @Longtail_CreateHPCDCChunkerAPI()
  store ptr %80, ptr %10, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %11) #5
  store i64 65536, ptr %11, align 8, !tbaa !15
  call void @llvm.lifetime.start.p0(i64 8, ptr %12) #5
  store i64 16384, ptr %12, align 8, !tbaa !15
  call void @llvm.lifetime.start.p0(i64 8, ptr %13) #5
  store i64 262144, ptr %13, align 8, !tbaa !15
  call void @llvm.lifetime.start.p0(i64 8, ptr %14) #5
  br label %81

81:                                               ; preds = %79
  %82 = call noundef ptr @_ZL19jc_test_get_fixturev()
  %83 = getelementptr inbounds %struct.jc_test_fixture, ptr %82, i32 0, i32 11
  %84 = load i32, ptr %83, align 8
  %85 = and i32 %84, -16776961
  %86 = or i32 %85, 891392
  store i32 %86, ptr %83, align 8
  %87 = call noundef ptr @_ZL19jc_test_get_fixturev()
  %88 = getelementptr inbounds %struct.jc_test_fixture, ptr %87, i32 0, i32 4
  store ptr @.str.3, ptr %88, align 8, !tbaa !9
  call void @_Z28jc_test_increment_assertionsv()
  call void @llvm.lifetime.start.p0(i64 4, ptr %15) #5
  store i32 0, ptr %15, align 4, !tbaa !14
  call void @llvm.lifetime.start.p0(i64 4, ptr %16) #5
  %89 = load ptr, ptr %10, align 8, !tbaa !5
  %90 = getelementptr inbounds %struct.Longtail_ChunkerAPI, ptr %89, i32 0, i32 2
  %91 = load ptr, ptr %90, align 8, !tbaa !16
  %92 = load ptr, ptr %10, align 8, !tbaa !5
  %93 = call noundef i32 %91(ptr noundef %92, i32 noundef 16384, i32 noundef 65536, i32 noundef 262144, ptr noundef %14)
  store i32 %93, ptr %16, align 4, !tbaa !14
  %94 = 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) %15, ptr noundef nonnull align 4 dereferenceable(4) %16, ptr noundef @.str.46, ptr noundef @.str.549, ptr noundef null)
  %95 = icmp eq i32 %94, 0
  call void @llvm.lifetime.end.p0(i64 4, ptr %16) #5
  call void @llvm.lifetime.end.p0(i64 4, ptr %15) #5
  br i1 %95, label %96, label %97

96:                                               ; preds = %81
  call void @_Z21jc_test_set_test_faili(i32 noundef 1)
  store i32 1, ptr %6, align 4
  br label %261

97:                                               ; preds = %81
  br label %98

98:                                               ; preds = %97
  br label %99

99:                                               ; preds = %98
  br label %100

100:                                              ; preds = %99
  %101 = call noundef ptr @_ZL19jc_test_get_fixturev()
  %102 = getelementptr inbounds %struct.jc_test_fixture, ptr %101, i32 0, i32 11
  %103 = load i32, ptr %102, align 8
  %104 = and i32 %103, -16776961
  %105 = or i32 %104, 891648
  store i32 %105, ptr %102, align 8
  %106 = call noundef ptr @_ZL19jc_test_get_fixturev()
  %107 = getelementptr inbounds %struct.jc_test_fixture, ptr %106, i32 0, i32 4
  store ptr @.str.3, ptr %107, align 8, !tbaa !9
  call void @_Z28jc_test_increment_assertionsv()
  %108 = load ptr, ptr %14, align 8, !tbaa !5
  %109 = call noundef i32 @_Z14jc_test_cmp_NEIP27Longtail_ChunkerAPI_ChunkerS1_EiT_T0_PKcS5_(ptr noundef null, ptr noundef %108, ptr noundef @.str.550, ptr noundef @.str.551)
  %110 = icmp eq i32 %109, 0
  br i1 %110, label %111, label %112

111:                                              ; preds = %100
  call void @_Z21jc_test_set_test_faili(i32 noundef 1)
  store i32 1, ptr %6, align 4
  br label %261

112:                                              ; preds = %100
  br label %113

113:                                              ; preds = %112
  br label %114

114:                                              ; preds = %113
  call void @llvm.lifetime.start.p0(i64 4, ptr %17) #5
  store i32 20, ptr %17, align 4, !tbaa !14
  call void @llvm.lifetime.start.p0(i64 480, ptr %18) #5
  call void @llvm.memcpy.p0.p0.i64(ptr align 16 %18, ptr align 16 @__const._ZN44Longtail_MemMappedChunkerLargeFile__TestCase8TestBodyEv.expected_chunks, i64 480, i1 false)
  call void @llvm.lifetime.start.p0(i64 8, ptr %19) #5
  store ptr null, ptr %19, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %20) #5
  store ptr null, ptr %20, align 8, !tbaa !5
  br label %115

115:                                              ; preds = %114
  %116 = call noundef ptr @_ZL19jc_test_get_fixturev()
  %117 = getelementptr inbounds %struct.jc_test_fixture, ptr %116, i32 0, i32 11
  %118 = load i32, ptr %117, align 8
  %119 = and i32 %118, -16776961
  %120 = or i32 %119, 899072
  store i32 %120, ptr %117, align 8
  %121 = call noundef ptr @_ZL19jc_test_get_fixturev()
  %122 = getelementptr inbounds %struct.jc_test_fixture, ptr %121, i32 0, i32 4
  store ptr @.str.3, ptr %122, align 8, !tbaa !9
  call void @_Z28jc_test_increment_assertionsv()
  call void @llvm.lifetime.start.p0(i64 4, ptr %21) #5
  store i32 0, ptr %21, align 4, !tbaa !14
  call void @llvm.lifetime.start.p0(i64 4, ptr %22) #5
  %123 = load ptr, ptr %3, align 8, !tbaa !5
  %124 = load i64, ptr %7, align 8, !tbaa !15
  %125 = call i32 @Longtail_MapFile(ptr noundef %123, i64 noundef 0, i64 noundef %124, ptr noundef %20, ptr noundef %19)
  store i32 %125, ptr %22, align 4, !tbaa !14
  %126 = 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) %21, ptr noundef nonnull align 4 dereferenceable(4) %22, ptr noundef @.str.46, ptr noundef @.str.565, ptr noundef null)
  %127 = icmp eq i32 %126, 0
  call void @llvm.lifetime.end.p0(i64 4, ptr %22) #5
  call void @llvm.lifetime.end.p0(i64 4, ptr %21) #5
  br i1 %127, label %128, label %129

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

129:                                              ; preds = %115
  br label %130

130:                                              ; preds = %129
  br label %131

131:                                              ; preds = %130
  call void @llvm.lifetime.start.p0(i64 8, ptr %23) #5
  %132 = load ptr, ptr %19, align 8, !tbaa !5
  store ptr %132, ptr %23, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 4, ptr %24) #5
  store i32 0, ptr %24, align 4, !tbaa !14
  br label %133

133:                                              ; preds = %217, %131
  %134 = load i32, ptr %24, align 4, !tbaa !14
  %135 = icmp ult i32 %134, 20
  br i1 %135, label %137, label %136

136:                                              ; preds = %133
  store i32 14, ptr %6, align 4
  br label %220

137:                                              ; preds = %133
  call void @llvm.lifetime.start.p0(i64 8, ptr %25) #5
  call void @llvm.lifetime.start.p0(i64 8, ptr %26) #5
  %138 = load i64, ptr %7, align 8, !tbaa !15
  %139 = load ptr, ptr %23, align 8, !tbaa !5
  %140 = load ptr, ptr %19, align 8, !tbaa !5
  %141 = ptrtoint ptr %139 to i64
  %142 = ptrtoint ptr %140 to i64
  %143 = sub i64 %141, %142
  %144 = sub i64 %138, %143
  store i64 %144, ptr %26, align 8, !tbaa !15
  br label %145

145:                                              ; preds = %137
  %146 = call noundef ptr @_ZL19jc_test_get_fixturev()
  %147 = getelementptr inbounds %struct.jc_test_fixture, ptr %146, i32 0, i32 11
  %148 = load i32, ptr %147, align 8
  %149 = and i32 %148, -16776961
  %150 = or i32 %149, 900608
  store i32 %150, ptr %147, align 8
  %151 = call noundef ptr @_ZL19jc_test_get_fixturev()
  %152 = getelementptr inbounds %struct.jc_test_fixture, ptr %151, i32 0, i32 4
  store ptr @.str.3, ptr %152, align 8, !tbaa !9
  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 !14
  call void @llvm.lifetime.start.p0(i64 4, ptr %28) #5
  %153 = load ptr, ptr %10, align 8, !tbaa !5
  %154 = getelementptr inbounds %struct.Longtail_ChunkerAPI, ptr %153, i32 0, i32 5
  %155 = load ptr, ptr %154, align 8, !tbaa !19
  %156 = load ptr, ptr %10, align 8, !tbaa !5
  %157 = load ptr, ptr %14, align 8, !tbaa !5
  %158 = load ptr, ptr %23, align 8, !tbaa !5
  %159 = load i64, ptr %26, align 8, !tbaa !15
  %160 = call noundef i32 %155(ptr noundef %156, ptr noundef %157, ptr noundef %158, i64 noundef %159, ptr noundef %25)
  store i32 %160, ptr %28, align 4, !tbaa !14
  %161 = 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) %27, ptr noundef nonnull align 4 dereferenceable(4) %28, ptr noundef @.str.46, ptr noundef @.str.566, ptr noundef null)
  %162 = icmp eq i32 %161, 0
  call void @llvm.lifetime.end.p0(i64 4, ptr %28) #5
  call void @llvm.lifetime.end.p0(i64 4, ptr %27) #5
  br i1 %162, label %163, label %164

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

164:                                              ; preds = %145
  br label %165

165:                                              ; preds = %164
  br label %166

166:                                              ; preds = %165
  br label %167

167:                                              ; preds = %166
  %168 = call noundef ptr @_ZL19jc_test_get_fixturev()
  %169 = getelementptr inbounds %struct.jc_test_fixture, ptr %168, i32 0, i32 11
  %170 = load i32, ptr %169, align 8
  %171 = and i32 %170, -16776961
  %172 = or i32 %171, 900864
  store i32 %172, ptr %169, align 8
  %173 = call noundef ptr @_ZL19jc_test_get_fixturev()
  %174 = getelementptr inbounds %struct.jc_test_fixture, ptr %173, i32 0, i32 4
  store ptr @.str.3, ptr %174, align 8, !tbaa !9
  call void @_Z28jc_test_increment_assertionsv()
  %175 = load i32, ptr %24, align 4, !tbaa !14
  %176 = zext i32 %175 to i64
  %177 = getelementptr inbounds [20 x %struct.Longtail_Chunker_ChunkRange], ptr %18, i64 0, i64 %176
  %178 = getelementptr inbounds %struct.Longtail_Chunker_ChunkRange, ptr %177, i32 0, i32 1
  call void @llvm.lifetime.start.p0(i64 8, ptr %29) #5
  %179 = load ptr, ptr %23, align 8, !tbaa !5
  %180 = load ptr, ptr %19, align 8, !tbaa !5
  %181 = ptrtoint ptr %179 to i64
  %182 = ptrtoint ptr %180 to i64
  %183 = sub i64 %181, %182
  store i64 %183, ptr %29, align 8, !tbaa !15
  %184 = call noundef i32 @_ZN21jc_test_cmp_eq_helperILb0EE7compareImlEEiRKT_RKT0_PKcS9_(ptr noundef nonnull align 8 dereferenceable(8) %178, ptr noundef nonnull align 8 dereferenceable(8) %29, ptr noundef @.str.553, ptr noundef @.str.567)
  %185 = icmp eq i32 %184, 0
  call void @llvm.lifetime.end.p0(i64 8, ptr %29) #5
  br i1 %185, label %186, label %187

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

187:                                              ; preds = %167
  br label %188

188:                                              ; preds = %187
  br label %189

189:                                              ; preds = %188
  br label %190

190:                                              ; preds = %189
  %191 = call noundef ptr @_ZL19jc_test_get_fixturev()
  %192 = getelementptr inbounds %struct.jc_test_fixture, ptr %191, i32 0, i32 11
  %193 = load i32, ptr %192, align 8
  %194 = and i32 %193, -16776961
  %195 = or i32 %194, 901120
  store i32 %195, ptr %192, align 8
  %196 = call noundef ptr @_ZL19jc_test_get_fixturev()
  %197 = getelementptr inbounds %struct.jc_test_fixture, ptr %196, i32 0, i32 4
  store ptr @.str.3, ptr %197, align 8, !tbaa !9
  call void @_Z28jc_test_increment_assertionsv()
  %198 = load i32, ptr %24, align 4, !tbaa !14
  %199 = zext i32 %198 to i64
  %200 = getelementptr inbounds [20 x %struct.Longtail_Chunker_ChunkRange], ptr %18, i64 0, i64 %199
  %201 = getelementptr inbounds %struct.Longtail_Chunker_ChunkRange, ptr %200, i32 0, i32 2
  call void @llvm.lifetime.start.p0(i64 8, ptr %30) #5
  %202 = load ptr, ptr %25, align 8, !tbaa !5
  %203 = load ptr, ptr %23, align 8, !tbaa !5
  %204 = ptrtoint ptr %202 to i64
  %205 = ptrtoint ptr %203 to i64
  %206 = sub i64 %204, %205
  store i64 %206, ptr %30, align 8, !tbaa !15
  %207 = call noundef i32 @_ZN21jc_test_cmp_eq_helperILb0EE7compareIjlEEiRKT_RKT0_PKcS9_(ptr noundef nonnull align 4 dereferenceable(4) %201, ptr noundef nonnull align 8 dereferenceable(8) %30, ptr noundef @.str.555, ptr noundef @.str.568)
  %208 = icmp eq i32 %207, 0
  call void @llvm.lifetime.end.p0(i64 8, ptr %30) #5
  br i1 %208, label %209, label %210

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

210:                                              ; preds = %190
  br label %211

211:                                              ; preds = %210
  br label %212

212:                                              ; preds = %211
  %213 = load ptr, ptr %25, align 8, !tbaa !5
  store ptr %213, ptr %23, align 8, !tbaa !5
  store i32 0, ptr %6, align 4
  br label %214

214:                                              ; preds = %212, %209, %186, %163
  call void @llvm.lifetime.end.p0(i64 8, ptr %26) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %25) #5
  %215 = load i32, ptr %6, align 4
  switch i32 %215, label %220 [
    i32 0, label %216
  ]

216:                                              ; preds = %214
  br label %217

217:                                              ; preds = %216
  %218 = load i32, ptr %24, align 4, !tbaa !14
  %219 = add i32 %218, 1
  store i32 %219, ptr %24, align 4, !tbaa !14
  br label %133, !llvm.loop !20

220:                                              ; preds = %214, %136
  call void @llvm.lifetime.end.p0(i64 4, ptr %24) #5
  %221 = load i32, ptr %6, align 4
  switch i32 %221, label %259 [
    i32 14, label %222
  ]

222:                                              ; preds = %220
  call void @llvm.lifetime.start.p0(i64 8, ptr %31) #5
  %223 = load i64, ptr %7, align 8, !tbaa !15
  %224 = load ptr, ptr %23, align 8, !tbaa !5
  %225 = load ptr, ptr %19, align 8, !tbaa !5
  %226 = ptrtoint ptr %224 to i64
  %227 = ptrtoint ptr %225 to i64
  %228 = sub i64 %226, %227
  %229 = sub i64 %223, %228
  store i64 %229, ptr %31, align 8, !tbaa !15
  br label %230

230:                                              ; preds = %222
  %231 = call noundef ptr @_ZL19jc_test_get_fixturev()
  %232 = getelementptr inbounds %struct.jc_test_fixture, ptr %231, i32 0, i32 11
  %233 = load i32, ptr %232, align 8
  %234 = and i32 %233, -16776961
  %235 = or i32 %234, 902144
  store i32 %235, ptr %232, align 8
  %236 = call noundef ptr @_ZL19jc_test_get_fixturev()
  %237 = getelementptr inbounds %struct.jc_test_fixture, ptr %236, i32 0, i32 4
  store ptr @.str.3, ptr %237, align 8, !tbaa !9
  call void @_Z28jc_test_increment_assertionsv()
  call void @llvm.lifetime.start.p0(i64 4, ptr %32) #5
  store i32 0, ptr %32, align 4, !tbaa !14
  %238 = call noundef i32 @_ZN21jc_test_cmp_eq_helperILb1EE7compareIjmEEiRKT_RKT0_PKcS9_PN23jc_test_enable_argumentIXntsr18jc_test_is_pointerIS5_EE5valueEE4typeE(ptr noundef nonnull align 4 dereferenceable(4) %32, ptr noundef nonnull align 8 dereferenceable(8) %31, ptr noundef @.str.74, ptr noundef @.str.569, ptr noundef null)
  %239 = icmp eq i32 %238, 0
  call void @llvm.lifetime.end.p0(i64 4, ptr %32) #5
  br i1 %239, label %240, label %241

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

241:                                              ; preds = %230
  br label %242

242:                                              ; preds = %241
  br label %243

243:                                              ; preds = %242
  %244 = load ptr, ptr %10, align 8, !tbaa !5
  %245 = getelementptr inbounds %struct.Longtail_ChunkerAPI, ptr %244, i32 0, i32 4
  %246 = load ptr, ptr %245, align 8, !tbaa !22
  %247 = load ptr, ptr %10, align 8, !tbaa !5
  %248 = load ptr, ptr %14, align 8, !tbaa !5
  %249 = call noundef i32 %246(ptr noundef %247, ptr noundef %248)
  store ptr null, ptr %14, align 8, !tbaa !5
  %250 = load ptr, ptr %20, align 8, !tbaa !5
  call void @Longtail_UnmapFile(ptr noundef %250)
  %251 = load ptr, ptr %3, align 8, !tbaa !5
  call void @Longtail_CloseFile(ptr noundef %251)
  %252 = load ptr, ptr %10, align 8, !tbaa !5
  %253 = icmp ne ptr %252, null
  br i1 %253, label %254, label %257

254:                                              ; preds = %243
  %255 = load ptr, ptr %10, align 8, !tbaa !5
  %256 = getelementptr inbounds %struct.Longtail_ChunkerAPI, ptr %255, i32 0, i32 0
  call void @Longtail_DisposeAPI(ptr noundef %256)
  br label %257

257:                                              ; preds = %254, %243
  store i32 0, ptr %6, align 4
  br label %258

258:                                              ; preds = %257, %240
  call void @llvm.lifetime.end.p0(i64 8, ptr %31) #5
  br label %259

259:                                              ; preds = %258, %220
  call void @llvm.lifetime.end.p0(i64 8, ptr %23) #5
  br label %260

260:                                              ; preds = %259, %128
  call void @llvm.lifetime.end.p0(i64 8, ptr %20) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %19) #5
  call void @llvm.lifetime.end.p0(i64 480, ptr %18) #5
  call void @llvm.lifetime.end.p0(i64 4, ptr %17) #5
  br label %261

261:                                              ; preds = %260, %111, %96
  call void @llvm.lifetime.end.p0(i64 8, ptr %14) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %13) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %12) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %11) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %10) #5
  br label %262

262:                                              ; preds = %261, %76
  call void @llvm.lifetime.end.p0(i64 8, ptr %7) #5
  br label %263

263:                                              ; preds = %262, %60, %45
  call void @llvm.lifetime.end.p0(i64 8, ptr %3) #5
  %264 = load i32, ptr %6, align 4
  switch i32 %264, label %266 [
    i32 0, label %265
    i32 1, label %265
  ]

265:                                              ; preds = %263, %263
  ret void

266:                                              ; preds = %263
  unreachable
}

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

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

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

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

; Function Attrs: mustprogress uwtable
declare dso_local noundef i32 @_ZN21jc_test_cmp_eq_helperILb0EE7compareImlEEiRKT_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: mustprogress uwtable
declare dso_local noundef i32 @_ZN21jc_test_cmp_eq_helperILb0EE7compareIjlEEiRKT_RKT0_PKcS9_(ptr noundef nonnull align 4 dereferenceable(4), ptr noundef nonnull align 8 dereferenceable(8), ptr noundef, ptr noundef) #3 align 2

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

declare void @Longtail_UnmapFile(ptr noundef) #2

declare void @Longtail_CloseFile(ptr noundef) #2

attributes #0 = { nocallback nofree nosync nounwind willreturn memory(argmem: readwrite) }
attributes #1 = { inlinehint mustprogress uwtable "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }
attributes #2 = { "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }
attributes #3 = { mustprogress uwtable "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }
attributes #4 = { 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, !6, i64 32}
!10 = !{!"_ZTS15jc_test_fixture", !6, i64 8, !6, i64 16, !6, i64 24, !6, i64 32, !6, i64 40, !6, i64 48, !6, i64 56, !11, i64 64, !12, i64 88, !12, i64 91, !12, i64 91, !12, i64 91, !12, i64 91, !12, i64 92, !12, i64 96, !12, i64 97, !12, i64 99, !12, i64 100}
!11 = !{!"_ZTS13jc_test_stats", !12, i64 0, !12, i64 4, !12, i64 6, !12, i64 8, !12, i64 12, !13, i64 16}
!12 = !{!"int", !7, i64 0}
!13 = !{!"long", !7, i64 0}
!14 = !{!12, !12, i64 0}
!15 = !{!13, !13, i64 0}
!16 = !{!17, !6, i64 16}
!17 = !{!"_ZTS19Longtail_ChunkerAPI", !18, i64 0, !6, i64 8, !6, i64 16, !6, i64 24, !6, i64 32, !6, i64 40}
!18 = !{!"_ZTS12Longtail_API", !6, i64 0}
!19 = !{!17, !6, i64 40}
!20 = distinct !{!20, !21}
!21 = !{!"llvm.loop.mustprogress"}
!22 = !{!17, !6, i64 32}


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

%struct.Longtail_Chunker_ChunkRange = type { ptr, i64, i32 }

@.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.74 = external hidden unnamed_addr constant [3 x i8], align 1
@.str.545 = external hidden unnamed_addr constant [23 x i8], align 1
@.str.548 = external hidden unnamed_addr constant [11 x i8], align 1
@.str.549 = external hidden unnamed_addr constant [114 x i8], align 1
@.str.550 = external hidden unnamed_addr constant [32 x i8], align 1
@.str.551 = external hidden unnamed_addr constant [8 x i8], align 1
@.str.553 = external hidden unnamed_addr constant [26 x i8], align 1
@.str.555 = external hidden unnamed_addr constant [23 x i8], align 1
@.str.562 = external hidden unnamed_addr constant [61 x i8], align 1
@.str.563 = external hidden unnamed_addr constant [22 x i8], align 1
@.str.564 = external hidden unnamed_addr constant [40 x i8], align 1
@__const._ZN44Longtail_MemMappedChunkerLargeFile__TestCase8TestBodyEv.expected_chunks = external hidden unnamed_addr constant [20 x %struct.Longtail_Chunker_ChunkRange], align 16
@.str.565 = external hidden unnamed_addr constant [75 x i8], align 1
@.str.566 = external hidden unnamed_addr constant [96 x i8], align 1
@.str.567 = external hidden unnamed_addr constant [19 x i8], align 1
@.str.568 = external hidden unnamed_addr constant [17 x i8], align 1
@.str.569 = external hidden unnamed_addr constant [10 x i8], align 1

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

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

declare void @_Z28jc_test_increment_assertionsv() local_unnamed_addr #2

declare void @_Z21jc_test_set_test_faili(i32 noundef) local_unnamed_addr #2

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

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

declare void @Longtail_DisposeAPI(ptr noundef) local_unnamed_addr #2

; Function Attrs: mustprogress 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

declare ptr @Longtail_CreateHPCDCChunkerAPI() local_unnamed_addr #2

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

; Function Attrs: mustprogress uwtable
define dso_local void @_ZN44Longtail_MemMappedChunkerLargeFile__TestCase8TestBodyEv(ptr nocapture noundef nonnull readnone align 8 dereferenceable(8) %0) unnamed_addr #3 align 2 {
  %2 = alloca ptr, align 8
  %3 = alloca i32, align 4
  %4 = alloca i32, align 4
  %5 = alloca i64, align 8
  %6 = alloca i32, align 4
  %7 = alloca i32, align 4
  %8 = alloca ptr, align 8
  %9 = alloca i32, align 4
  %10 = alloca i32, align 4
  %11 = alloca [20 x %struct.Longtail_Chunker_ChunkRange], align 16
  %12 = alloca ptr, align 8
  %13 = alloca ptr, align 8
  %14 = alloca i32, align 4
  %15 = alloca i32, align 4
  %16 = alloca ptr, align 8
  %17 = alloca i32, align 4
  %18 = alloca i32, align 4
  %19 = alloca i64, align 8
  %20 = alloca i64, align 8
  %21 = alloca i64, align 8
  %22 = alloca i32, align 4
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %2) #5
  %23 = tail call noundef ptr @_ZL19jc_test_get_fixturev()
  %24 = getelementptr inbounds i8, ptr %23, i64 96
  %25 = load i32, ptr %24, align 8
  %26 = and i32 %25, -16776961
  %27 = or disjoint i32 %26, 886784
  store i32 %27, ptr %24, align 8
  %28 = tail call noundef ptr @_ZL19jc_test_get_fixturev()
  %29 = getelementptr inbounds i8, ptr %28, i64 32
  store ptr @.str.3, ptr %29, align 8, !tbaa !5
  tail call void @_Z28jc_test_increment_assertionsv()
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %3) #5
  store i32 0, ptr %3, align 4, !tbaa !13
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %4) #5
  %30 = call i32 @Longtail_OpenReadFile(ptr noundef nonnull @.str.545, ptr noundef nonnull %2)
  store i32 %30, ptr %4, align 4, !tbaa !13
  %31 = 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) %3, ptr noundef nonnull align 4 dereferenceable(4) %4, ptr noundef nonnull @.str.46, ptr noundef nonnull @.str.562, ptr noundef null)
  %32 = icmp eq i32 %31, 0
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %4) #5
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %3) #5
  br i1 %32, label %33, label %34

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

34:                                               ; preds = %1
  %35 = call noundef ptr @_ZL19jc_test_get_fixturev()
  %36 = getelementptr inbounds i8, ptr %35, i64 96
  %37 = load i32, ptr %36, align 8
  %38 = and i32 %37, -16776961
  %39 = or disjoint i32 %38, 887040
  store i32 %39, ptr %36, align 8
  %40 = call noundef ptr @_ZL19jc_test_get_fixturev()
  %41 = getelementptr inbounds i8, ptr %40, i64 32
  store ptr @.str.3, ptr %41, align 8, !tbaa !5
  call void @_Z28jc_test_increment_assertionsv()
  %42 = load ptr, ptr %2, align 8, !tbaa !14
  %43 = call noundef i32 @_Z14jc_test_cmp_NEIP25Longtail_OpenFile_privateS1_EiT_T0_PKcS5_(ptr noundef null, ptr noundef %42, ptr noundef nonnull @.str.563, ptr noundef nonnull @.str.548)
  %44 = icmp eq i32 %43, 0
  br i1 %44, label %45, label %46

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

46:                                               ; preds = %34
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %5) #5
  %47 = call noundef ptr @_ZL19jc_test_get_fixturev()
  %48 = getelementptr inbounds i8, ptr %47, i64 96
  %49 = load i32, ptr %48, align 8
  %50 = and i32 %49, -16776961
  %51 = or disjoint i32 %50, 887808
  store i32 %51, ptr %48, align 8
  %52 = call noundef ptr @_ZL19jc_test_get_fixturev()
  %53 = getelementptr inbounds i8, ptr %52, i64 32
  store ptr @.str.3, ptr %53, align 8, !tbaa !5
  call void @_Z28jc_test_increment_assertionsv()
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %6) #5
  store i32 0, ptr %6, align 4, !tbaa !13
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %7) #5
  %54 = load ptr, ptr %2, align 8, !tbaa !14
  %55 = call i32 @Longtail_GetFileSize(ptr noundef %54, ptr noundef nonnull %5)
  store i32 %55, ptr %7, align 4, !tbaa !13
  %56 = call noundef i32 @_ZN21jc_test_cmp_eq_helperILb1EE7compareIiiEEiRKT_RKT0_PKcS9_PN23jc_test_enable_argumentIXntsr18jc_test_is_pointerIS5_EE5valueEE4typeE(ptr noundef nonnull align 4 dereferenceable(4) %6, ptr noundef nonnull align 4 dereferenceable(4) %7, ptr noundef nonnull @.str.46, ptr noundef nonnull @.str.564, ptr noundef null)
  %57 = icmp eq i32 %56, 0
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %7) #5
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %6) #5
  br i1 %57, label %58, label %59

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

59:                                               ; preds = %46
  %60 = call ptr @Longtail_CreateHPCDCChunkerAPI()
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %8) #5
  %61 = call noundef ptr @_ZL19jc_test_get_fixturev()
  %62 = getelementptr inbounds i8, ptr %61, i64 96
  %63 = load i32, ptr %62, align 8
  %64 = and i32 %63, -16776961
  %65 = or disjoint i32 %64, 891392
  store i32 %65, ptr %62, align 8
  %66 = call noundef ptr @_ZL19jc_test_get_fixturev()
  %67 = getelementptr inbounds i8, ptr %66, i64 32
  store ptr @.str.3, ptr %67, align 8, !tbaa !5
  call void @_Z28jc_test_increment_assertionsv()
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %9) #5
  store i32 0, ptr %9, align 4, !tbaa !13
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %10) #5
  %68 = getelementptr inbounds i8, ptr %60, i64 16
  %69 = load ptr, ptr %68, align 8, !tbaa !15
  %70 = call noundef i32 %69(ptr noundef %60, i32 noundef 16384, i32 noundef 65536, i32 noundef 262144, ptr noundef nonnull %8)
  store i32 %70, ptr %10, align 4, !tbaa !13
  %71 = call noundef i32 @_ZN21jc_test_cmp_eq_helperILb1EE7compareIiiEEiRKT_RKT0_PKcS9_PN23jc_test_enable_argumentIXntsr18jc_test_is_pointerIS5_EE5valueEE4typeE(ptr noundef nonnull align 4 dereferenceable(4) %9, ptr noundef nonnull align 4 dereferenceable(4) %10, ptr noundef nonnull @.str.46, ptr noundef nonnull @.str.549, ptr noundef null)
  %72 = icmp eq i32 %71, 0
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %10) #5
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %9) #5
  br i1 %72, label %73, label %74

73:                                               ; preds = %59
  call void @_Z21jc_test_set_test_faili(i32 noundef 1)
  br label %178

74:                                               ; preds = %59
  %75 = call noundef ptr @_ZL19jc_test_get_fixturev()
  %76 = getelementptr inbounds i8, ptr %75, i64 96
  %77 = load i32, ptr %76, align 8
  %78 = and i32 %77, -16776961
  %79 = or disjoint i32 %78, 891648
  store i32 %79, ptr %76, align 8
  %80 = call noundef ptr @_ZL19jc_test_get_fixturev()
  %81 = getelementptr inbounds i8, ptr %80, i64 32
  store ptr @.str.3, ptr %81, align 8, !tbaa !5
  call void @_Z28jc_test_increment_assertionsv()
  %82 = load ptr, ptr %8, align 8, !tbaa !14
  %83 = call noundef i32 @_Z14jc_test_cmp_NEIP27Longtail_ChunkerAPI_ChunkerS1_EiT_T0_PKcS5_(ptr noundef null, ptr noundef %82, ptr noundef nonnull @.str.550, ptr noundef nonnull @.str.551)
  %84 = icmp eq i32 %83, 0
  br i1 %84, label %85, label %86

85:                                               ; preds = %74
  call void @_Z21jc_test_set_test_faili(i32 noundef 1)
  br label %178

86:                                               ; preds = %74
  call void @llvm.lifetime.start.p0(i64 480, ptr nonnull %11) #5
  call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 16 dereferenceable(480) %11, ptr noundef nonnull align 16 dereferenceable(480) @__const._ZN44Longtail_MemMappedChunkerLargeFile__TestCase8TestBodyEv.expected_chunks, i64 480, i1 false)
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %12) #5
  store ptr null, ptr %12, align 8, !tbaa !14
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %13) #5
  store ptr null, ptr %13, align 8, !tbaa !14
  %87 = call noundef ptr @_ZL19jc_test_get_fixturev()
  %88 = getelementptr inbounds i8, ptr %87, i64 96
  %89 = load i32, ptr %88, align 8
  %90 = and i32 %89, -16776961
  %91 = or disjoint i32 %90, 899072
  store i32 %91, ptr %88, align 8
  %92 = call noundef ptr @_ZL19jc_test_get_fixturev()
  %93 = getelementptr inbounds i8, ptr %92, i64 32
  store ptr @.str.3, ptr %93, align 8, !tbaa !5
  call void @_Z28jc_test_increment_assertionsv()
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %14) #5
  store i32 0, ptr %14, align 4, !tbaa !13
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %15) #5
  %94 = load ptr, ptr %2, align 8, !tbaa !14
  %95 = load i64, ptr %5, align 8, !tbaa !18
  %96 = call i32 @Longtail_MapFile(ptr noundef %94, i64 noundef 0, i64 noundef %95, ptr noundef nonnull %13, ptr noundef nonnull %12)
  store i32 %96, ptr %15, align 4, !tbaa !13
  %97 = 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.565, ptr noundef null)
  %98 = icmp eq i32 %97, 0
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %15) #5
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %14) #5
  br i1 %98, label %99, label %100

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

100:                                              ; preds = %86
  %101 = load ptr, ptr %12, align 8, !tbaa !14
  %102 = getelementptr inbounds i8, ptr %60, i64 40
  br label %103

103:                                              ; preds = %100, %150
  %indvars.iv = phi i64 [ 0, %100 ], [ %indvars.iv.next, %150 ]
  %.02234 = phi ptr [ %101, %100 ], [ %151, %150 ]
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %16) #5
  %104 = load i64, ptr %5, align 8, !tbaa !18
  %105 = load ptr, ptr %12, align 8, !tbaa !14
  %106 = ptrtoint ptr %.02234 to i64
  %107 = ptrtoint ptr %105 to i64
  %.neg = sub i64 %104, %106
  %108 = add i64 %.neg, %107
  %109 = call noundef ptr @_ZL19jc_test_get_fixturev()
  %110 = getelementptr inbounds i8, ptr %109, i64 96
  %111 = load i32, ptr %110, align 8
  %112 = and i32 %111, -16776961
  %113 = or disjoint i32 %112, 900608
  store i32 %113, ptr %110, align 8
  %114 = call noundef ptr @_ZL19jc_test_get_fixturev()
  %115 = getelementptr inbounds i8, ptr %114, i64 32
  store ptr @.str.3, ptr %115, align 8, !tbaa !5
  call void @_Z28jc_test_increment_assertionsv()
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %17) #5
  store i32 0, ptr %17, align 4, !tbaa !13
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %18) #5
  %116 = load ptr, ptr %102, align 8, !tbaa !19
  %117 = load ptr, ptr %8, align 8, !tbaa !14
  %118 = call noundef i32 %116(ptr noundef nonnull %60, ptr noundef %117, ptr noundef %.02234, i64 noundef %108, ptr noundef nonnull %16)
  store i32 %118, ptr %18, align 4, !tbaa !13
  %119 = call noundef i32 @_ZN21jc_test_cmp_eq_helperILb1EE7compareIiiEEiRKT_RKT0_PKcS9_PN23jc_test_enable_argumentIXntsr18jc_test_is_pointerIS5_EE5valueEE4typeE(ptr noundef nonnull align 4 dereferenceable(4) %17, ptr noundef nonnull align 4 dereferenceable(4) %18, ptr noundef nonnull @.str.46, ptr noundef nonnull @.str.566, ptr noundef null)
  %120 = icmp eq i32 %119, 0
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %18) #5
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %17) #5
  br i1 %120, label %152, label %121

121:                                              ; preds = %103
  %122 = call noundef ptr @_ZL19jc_test_get_fixturev()
  %123 = getelementptr inbounds i8, ptr %122, i64 96
  %124 = load i32, ptr %123, align 8
  %125 = and i32 %124, -16776961
  %126 = or disjoint i32 %125, 900864
  store i32 %126, ptr %123, align 8
  %127 = call noundef ptr @_ZL19jc_test_get_fixturev()
  %128 = getelementptr inbounds i8, ptr %127, i64 32
  store ptr @.str.3, ptr %128, align 8, !tbaa !5
  call void @_Z28jc_test_increment_assertionsv()
  %129 = getelementptr inbounds [20 x %struct.Longtail_Chunker_ChunkRange], ptr %11, i64 0, i64 %indvars.iv
  %130 = getelementptr inbounds i8, ptr %129, i64 8
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %19) #5
  %131 = load ptr, ptr %12, align 8, !tbaa !14
  %132 = ptrtoint ptr %131 to i64
  %133 = sub i64 %106, %132
  store i64 %133, ptr %19, align 8, !tbaa !18
  %134 = call noundef i32 @_ZN21jc_test_cmp_eq_helperILb0EE7compareImlEEiRKT_RKT0_PKcS9_(ptr noundef nonnull align 8 dereferenceable(8) %130, ptr noundef nonnull align 8 dereferenceable(8) %19, ptr noundef nonnull @.str.553, ptr noundef nonnull @.str.567)
  %135 = icmp eq i32 %134, 0
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %19) #5
  br i1 %135, label %152, label %136

136:                                              ; preds = %121
  %137 = call noundef ptr @_ZL19jc_test_get_fixturev()
  %138 = getelementptr inbounds i8, ptr %137, i64 96
  %139 = load i32, ptr %138, align 8
  %140 = and i32 %139, -16776961
  %141 = or disjoint i32 %140, 901120
  store i32 %141, ptr %138, align 8
  %142 = call noundef ptr @_ZL19jc_test_get_fixturev()
  %143 = getelementptr inbounds i8, ptr %142, i64 32
  store ptr @.str.3, ptr %143, align 8, !tbaa !5
  call void @_Z28jc_test_increment_assertionsv()
  %144 = getelementptr inbounds i8, ptr %129, i64 16
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %20) #5
  %145 = load ptr, ptr %16, align 8, !tbaa !14
  %146 = ptrtoint ptr %145 to i64
  %147 = sub i64 %146, %106
  store i64 %147, ptr %20, align 8, !tbaa !18
  %148 = call noundef i32 @_ZN21jc_test_cmp_eq_helperILb0EE7compareIjlEEiRKT_RKT0_PKcS9_(ptr noundef nonnull align 4 dereferenceable(4) %144, ptr noundef nonnull align 8 dereferenceable(8) %20, ptr noundef nonnull @.str.555, ptr noundef nonnull @.str.568)
  %149 = icmp eq i32 %148, 0
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %20) #5
  br i1 %149, label %152, label %150

150:                                              ; preds = %136
  %151 = load ptr, ptr %16, align 8, !tbaa !14
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %16) #5
  %indvars.iv.next = add nuw nsw i64 %indvars.iv, 1
  %exitcond = icmp eq i64 %indvars.iv.next, 20
  br i1 %exitcond, label %153, label %103, !llvm.loop !20

152:                                              ; preds = %136, %121, %103
  call void @_Z21jc_test_set_test_faili(i32 noundef 1)
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %16) #5
  br label %177

153:                                              ; preds = %150
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %21) #5
  %154 = load i64, ptr %5, align 8, !tbaa !18
  %155 = load ptr, ptr %12, align 8, !tbaa !14
  %156 = ptrtoint ptr %151 to i64
  %157 = ptrtoint ptr %155 to i64
  %.neg25 = sub i64 %154, %156
  %158 = add i64 %.neg25, %157
  store i64 %158, ptr %21, align 8, !tbaa !18
  %159 = call noundef ptr @_ZL19jc_test_get_fixturev()
  %160 = getelementptr inbounds i8, ptr %159, i64 96
  %161 = load i32, ptr %160, align 8
  %162 = and i32 %161, -16776961
  %163 = or disjoint i32 %162, 902144
  store i32 %163, ptr %160, align 8
  %164 = call noundef ptr @_ZL19jc_test_get_fixturev()
  %165 = getelementptr inbounds i8, ptr %164, i64 32
  store ptr @.str.3, ptr %165, align 8, !tbaa !5
  call void @_Z28jc_test_increment_assertionsv()
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %22) #5
  store i32 0, ptr %22, align 4, !tbaa !13
  %166 = call noundef i32 @_ZN21jc_test_cmp_eq_helperILb1EE7compareIjmEEiRKT_RKT0_PKcS9_PN23jc_test_enable_argumentIXntsr18jc_test_is_pointerIS5_EE5valueEE4typeE(ptr noundef nonnull align 4 dereferenceable(4) %22, ptr noundef nonnull align 8 dereferenceable(8) %21, ptr noundef nonnull @.str.74, ptr noundef nonnull @.str.569, ptr noundef null)
  %167 = icmp eq i32 %166, 0
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %22) #5
  br i1 %167, label %168, label %169

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

169:                                              ; preds = %153
  %170 = getelementptr inbounds i8, ptr %60, i64 32
  %171 = load ptr, ptr %170, align 8, !tbaa !22
  %172 = load ptr, ptr %8, align 8, !tbaa !14
  %173 = call noundef i32 %171(ptr noundef nonnull %60, ptr noundef %172)
  store ptr null, ptr %8, align 8, !tbaa !14
  %174 = load ptr, ptr %13, align 8, !tbaa !14
  call void @Longtail_UnmapFile(ptr noundef %174)
  %175 = load ptr, ptr %2, align 8, !tbaa !14
  call void @Longtail_CloseFile(ptr noundef %175)
  call void @Longtail_DisposeAPI(ptr noundef nonnull %60)
  br label %176

176:                                              ; preds = %169, %168
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %21) #5
  br label %177

177:                                              ; preds = %152, %176, %99
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %13) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %12) #5
  call void @llvm.lifetime.end.p0(i64 480, ptr nonnull %11) #5
  br label %178

178:                                              ; preds = %177, %85, %73
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %8) #5
  br label %179

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

180:                                              ; preds = %179, %45, %33
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %2) #5
  ret void
}

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

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

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

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

; Function Attrs: mustprogress uwtable
declare dso_local noundef i32 @_ZN21jc_test_cmp_eq_helperILb0EE7compareImlEEiRKT_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 uwtable
declare dso_local noundef i32 @_ZN21jc_test_cmp_eq_helperILb0EE7compareIjlEEiRKT_RKT0_PKcS9_(ptr noundef nonnull align 4 dereferenceable(4), ptr noundef nonnull align 8 dereferenceable(8), ptr noundef, ptr noundef) local_unnamed_addr #3 align 2

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

declare void @Longtail_UnmapFile(ptr noundef) local_unnamed_addr #2

declare void @Longtail_CloseFile(ptr noundef) local_unnamed_addr #2

attributes #0 = { mustprogress nocallback nofree nosync nounwind willreturn memory(argmem: readwrite) }
attributes #1 = { inlinehint mustprogress uwtable "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }
attributes #2 = { "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }
attributes #3 = { mustprogress uwtable "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }
attributes #4 = { mustprogress 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, !7, i64 32}
!6 = !{!"_ZTS15jc_test_fixture", !7, i64 8, !7, i64 16, !7, i64 24, !7, i64 32, !7, i64 40, !7, i64 48, !7, i64 56, !10, i64 64, !11, i64 88, !11, i64 91, !11, i64 91, !11, i64 91, !11, i64 91, !11, i64 92, !11, i64 96, !11, i64 97, !11, i64 99, !11, i64 100}
!7 = !{!"any pointer", !8, i64 0}
!8 = !{!"omnipotent char", !9, i64 0}
!9 = !{!"Simple C++ TBAA"}
!10 = !{!"_ZTS13jc_test_stats", !11, i64 0, !11, i64 4, !11, i64 6, !11, i64 8, !11, i64 12, !12, i64 16}
!11 = !{!"int", !8, i64 0}
!12 = !{!"long", !8, i64 0}
!13 = !{!11, !11, i64 0}
!14 = !{!7, !7, i64 0}
!15 = !{!16, !7, i64 16}
!16 = !{!"_ZTS19Longtail_ChunkerAPI", !17, i64 0, !7, i64 8, !7, i64 16, !7, i64 24, !7, i64 32, !7, i64 40}
!17 = !{!"_ZTS12Longtail_API", !7, i64 0}
!18 = !{!12, !12, i64 0}
!19 = !{!16, !7, i64 40}
!20 = distinct !{!20, !21}
!21 = !{!"llvm.loop.mustprogress"}
!22 = !{!16, !7, i64 32}


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