; LLVM IR from microsoft/X-Mem :: src/ext/DelayInjectedLoadedLatencyBenchmark (DelayInjectedLoadedLatencyBenchmark)

; 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"

%"class.std::basic_ostream" = type { ptr, %"class.std::basic_ios" }
%"class.std::basic_ios" = type { %"class.std::ios_base", ptr, i8, i8, ptr, ptr, ptr, ptr }
%"class.std::ios_base" = type { ptr, i64, i64, i32, i32, i32, ptr, %"struct.std::ios_base::_Words", [8 x %"struct.std::ios_base::_Words"], i32, ptr, %"class.std::locale" }
%"struct.std::ios_base::_Words" = type { ptr, i64 }
%"class.std::locale" = type { ptr }
%"class.std::vector.13" = type { %"struct.std::_Vector_base.14" }
%"struct.std::_Vector_base.14" = type { %"struct.std::_Vector_base<xmem::MemoryWorker *, std::allocator<xmem::MemoryWorker *>>::_Vector_impl" }
%"struct.std::_Vector_base<xmem::MemoryWorker *, std::allocator<xmem::MemoryWorker *>>::_Vector_impl" = type { %"struct.std::_Vector_base<xmem::MemoryWorker *, std::allocator<xmem::MemoryWorker *>>::_Vector_impl_data" }
%"struct.std::_Vector_base<xmem::MemoryWorker *, std::allocator<xmem::MemoryWorker *>>::_Vector_impl_data" = type { ptr, ptr, ptr }
%"class.std::vector.3" = type { %"struct.std::_Vector_base.4" }
%"struct.std::_Vector_base.4" = type { %"struct.std::_Vector_base<xmem::Thread *, std::allocator<xmem::Thread *>>::_Vector_impl" }
%"struct.std::_Vector_base<xmem::Thread *, std::allocator<xmem::Thread *>>::_Vector_impl" = type { %"struct.std::_Vector_base<xmem::Thread *, std::allocator<xmem::Thread *>>::_Vector_impl_data" }
%"struct.std::_Vector_base<xmem::Thread *, std::allocator<xmem::Thread *>>::_Vector_impl_data" = type { ptr, ptr, ptr }
%"class.xmem::Benchmark" = type <{ ptr, ptr, i64, i32, i32, i32, i32, i32, i32, i32, i32, %"class.std::vector", %"class.std::vector.3", %"class.std::vector.8", double, double, double, double, double, double, double, double, double, %"class.std::__cxx11::basic_string", %"class.std::vector.8", %"class.std::vector.8", %"class.std::__cxx11::basic_string", i8, i8, i8, [5 x i8] }>
%"class.std::vector" = type { %"struct.std::_Vector_base" }
%"struct.std::_Vector_base" = type { %"struct.std::_Vector_base<xmem::PowerReader *, std::allocator<xmem::PowerReader *>>::_Vector_impl" }
%"struct.std::_Vector_base<xmem::PowerReader *, std::allocator<xmem::PowerReader *>>::_Vector_impl" = type { %"struct.std::_Vector_base<xmem::PowerReader *, std::allocator<xmem::PowerReader *>>::_Vector_impl_data" }
%"struct.std::_Vector_base<xmem::PowerReader *, std::allocator<xmem::PowerReader *>>::_Vector_impl_data" = type { ptr, ptr, ptr }
%"class.std::vector.8" = type { %"struct.std::_Vector_base.9" }
%"struct.std::_Vector_base.9" = type { %"struct.std::_Vector_base<double, std::allocator<double>>::_Vector_impl" }
%"struct.std::_Vector_base<double, std::allocator<double>>::_Vector_impl" = type { %"struct.std::_Vector_base<double, std::allocator<double>>::_Vector_impl_data" }
%"struct.std::_Vector_base<double, std::allocator<double>>::_Vector_impl_data" = type { ptr, ptr, ptr }
%"class.std::__cxx11::basic_string" = type { %"struct.std::__cxx11::basic_string<char>::_Alloc_hider", i64, %union.anon }
%"struct.std::__cxx11::basic_string<char>::_Alloc_hider" = type { ptr }
%union.anon = type { i64, [8 x i8] }
%"class.xmem::DelayInjectedLoadedLatencyBenchmark" = type <{ %"class.xmem::LatencyBenchmark", i32, [4 x i8] }>
%"class.xmem::LatencyBenchmark" = type { %"class.xmem::Benchmark.base", %"class.std::vector.8", double }
%"class.xmem::Benchmark.base" = type <{ ptr, ptr, i64, i32, i32, i32, i32, i32, i32, i32, i32, %"class.std::vector", %"class.std::vector.3", %"class.std::vector.8", double, double, double, double, double, double, double, double, double, %"class.std::__cxx11::basic_string", %"class.std::vector.8", %"class.std::vector.8", %"class.std::__cxx11::basic_string", i8, i8, i8 }>

@_ZSt4cout = external global %"class.std::basic_ostream", align 8
@_ZSt4cerr = external global %"class.std::basic_ostream", align 8
@.str.1 = external hidden unnamed_addr constant [88 x i8], align 1
@.str.2 = external hidden unnamed_addr constant [52 x i8], align 1
@.str.3 = external hidden unnamed_addr constant [99 x i8], align 1
@_ZN4xmem9g_verboseE = external global i8, align 1
@.str.4 = external hidden unnamed_addr constant [38 x i8], align 1
@.str.5 = external hidden unnamed_addr constant [5 x i8], align 1
@.str.6 = external hidden unnamed_addr constant [40 x i8], align 1
@.str.7 = external hidden unnamed_addr constant [5 x i8], align 1
@.str.8 = external hidden unnamed_addr constant [19 x i8], align 1
@.str.9 = external hidden unnamed_addr constant [37 x i8], align 1
@.str.10 = external hidden unnamed_addr constant [15 x i8], align 1
@.str.11 = external hidden unnamed_addr constant [55 x i8], align 1
@_ZN4xmem13g_ns_per_tickE = external global float, align 4
@.str.12 = external hidden unnamed_addr constant [6 x i8], align 1
@.str.13 = external hidden unnamed_addr constant [6 x i8], align 1
@.str.14 = external hidden unnamed_addr constant [35 x i8], align 1
@.str.15 = external hidden unnamed_addr constant [20 x i8], align 1
@.str.16 = external hidden unnamed_addr constant [12 x i8], align 1
@.str.17 = external hidden unnamed_addr constant [23 x i8], align 1
@.str.18 = external hidden unnamed_addr constant [16 x i8], align 1
@.str.19 = external hidden unnamed_addr constant [2 x i8], align 1
@.str.20 = external hidden unnamed_addr constant [14 x i8], align 1
@.str.21 = external hidden unnamed_addr constant [15 x i8], align 1
@.str.22 = external hidden unnamed_addr constant [37 x i8], align 1
@.str.23 = external hidden unnamed_addr constant [17 x i8], align 1
@.str.24 = external hidden unnamed_addr constant [34 x i8], align 1
@.str.25 = external hidden unnamed_addr constant [13 x i8], align 1
@.str.26 = external hidden unnamed_addr constant [25 x i8], align 1
@.str.27 = external hidden unnamed_addr constant [26 x i8], align 1
@.str.28 = external hidden unnamed_addr constant [38 x i8], align 1
@.str.29 = external hidden unnamed_addr constant [51 x i8], align 1

declare i32 @__gxx_personality_v0(...)

; Function Attrs: inlinehint mustprogress uwtable
declare noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8), ptr noundef) #0

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

; Function Attrs: mustprogress uwtable
declare noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEPFRSoS_E(ptr noundef nonnull align 8 dereferenceable(8), ptr noundef) #1 align 2

; Function Attrs: inlinehint mustprogress uwtable
declare noundef nonnull align 8 dereferenceable(8) ptr @_ZSt4endlIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_(ptr noundef nonnull align 8 dereferenceable(8)) #0

; Function Attrs: mustprogress uwtable
define dso_local noundef zeroext i1 @_ZN4xmem35DelayInjectedLoadedLatencyBenchmark7runCoreEv(ptr noundef nonnull align 8 dereferenceable(356) %0) unnamed_addr #1 align 2 personality ptr @__gxx_personality_v0 {
  %2 = alloca i1, align 1
  %3 = alloca ptr, align 8
  %4 = alloca i64, align 8
  %5 = alloca ptr, align 8
  %6 = alloca ptr, align 8
  %7 = alloca i32, align 4
  %8 = alloca ptr, align 8
  %9 = alloca ptr, align 8
  %10 = alloca %"class.std::vector.13", align 8
  %11 = alloca %"class.std::vector.3", align 8
  %12 = alloca ptr, align 8
  %13 = alloca i32, align 4
  %14 = alloca i32, align 4
  %15 = alloca i32, align 4
  %16 = alloca ptr, align 8
  %17 = alloca i32, align 4
  %18 = alloca ptr, align 8
  %19 = alloca ptr, align 8
  %20 = alloca ptr, align 8
  %21 = alloca i32, align 4
  %22 = alloca i32, align 4
  %23 = alloca i8, align 1
  %24 = alloca i32, align 4
  %25 = alloca i64, align 8
  %26 = alloca i64, align 8
  %27 = alloca i32, align 4
  %28 = alloca i32, align 4
  %29 = alloca i32, align 4
  %30 = alloca i64, align 8
  %31 = alloca i64, align 8
  %32 = alloca i32, align 4
  %33 = alloca double, align 8
  %34 = alloca i32, align 4
  %35 = alloca i32, align 4
  %36 = alloca i32, align 4
  store ptr %0, ptr %3, align 8, !tbaa !5
  %37 = load ptr, ptr %3, align 8
  call void @llvm.lifetime.start.p0(i64 8, ptr %4) #8
  %38 = getelementptr inbounds %"class.xmem::Benchmark", ptr %37, i32 0, i32 2
  %39 = load i64, ptr %38, align 8, !tbaa !9
  %40 = getelementptr inbounds %"class.xmem::Benchmark", ptr %37, i32 0, i32 4
  %41 = load i32, ptr %40, align 4, !tbaa !32
  %42 = zext i32 %41 to i64
  %43 = udiv i64 %39, %42
  store i64 %43, ptr %4, align 8, !tbaa !33
  call void @llvm.lifetime.start.p0(i64 8, ptr %5) #8
  store ptr @_ZN4xmem13chasePointersEPmPS0_m, ptr %5, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %6) #8
  store ptr @_ZN4xmem19dummy_chasePointersEPmPS0_m, ptr %6, align 8, !tbaa !5
  %44 = getelementptr inbounds %"class.xmem::Benchmark", ptr %37, i32 0, i32 1
  %45 = load ptr, ptr %44, align 8, !tbaa !34
  %46 = getelementptr inbounds %"class.xmem::Benchmark", ptr %37, i32 0, i32 1
  %47 = load ptr, ptr %46, align 8, !tbaa !34
  %48 = getelementptr inbounds %"class.xmem::Benchmark", ptr %37, i32 0, i32 2
  %49 = load i64, ptr %48, align 8, !tbaa !9
  %50 = getelementptr inbounds i8, ptr %47, i64 %49
  %51 = call noundef i32 @_ZN4xmem26forwSequentialWrite_Word32EPvS0_(ptr noundef %45, ptr noundef %50)
  %52 = getelementptr inbounds %"class.xmem::Benchmark", ptr %37, i32 0, i32 1
  %53 = load ptr, ptr %52, align 8, !tbaa !34
  %54 = getelementptr inbounds %"class.xmem::Benchmark", ptr %37, i32 0, i32 1
  %55 = load ptr, ptr %54, align 8, !tbaa !34
  %56 = load i64, ptr %4, align 8, !tbaa !33
  %57 = getelementptr inbounds i8, ptr %55, i64 %56
  %58 = call noundef zeroext i1 @_ZN4xmem32build_random_pointer_permutationEPvS0_NS_12chunk_size_tE(ptr noundef %53, ptr noundef %57, i32 noundef 1)
  br i1 %58, label %62, label %59

59:                                               ; preds = %1
  %60 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) @_ZSt4cerr, ptr noundef @.str.1)
  %61 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEPFRSoS_E(ptr noundef nonnull align 8 dereferenceable(8) %60, ptr noundef @_ZSt4endlIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_)
  store i1 false, ptr %2, align 1
  store i32 1, ptr %7, align 4
  br label %808

62:                                               ; preds = %1
  call void @llvm.lifetime.start.p0(i64 8, ptr %8) #8
  store ptr null, ptr %8, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %9) #8
  store ptr null, ptr %9, align 8, !tbaa !5
  %63 = getelementptr inbounds %"class.xmem::Benchmark", ptr %37, i32 0, i32 4
  %64 = load i32, ptr %63, align 4, !tbaa !32
  %65 = icmp ugt i32 %64, 1
  br i1 %65, label %66, label %111

66:                                               ; preds = %62
  %67 = getelementptr inbounds %"class.xmem::Benchmark", ptr %37, i32 0, i32 9
  %68 = load i32, ptr %67, align 8, !tbaa !35
  switch i32 %68, label %107 [
    i32 0, label %69
    i32 1, label %88
  ]

69:                                               ; preds = %66
  %70 = getelementptr inbounds %"class.xmem::DelayInjectedLoadedLatencyBenchmark", ptr %37, i32 0, i32 1
  %71 = load i32, ptr %70, align 8, !tbaa !36
  switch i32 %71, label %84 [
    i32 0, label %72
    i32 1, label %73
    i32 2, label %74
    i32 4, label %75
    i32 8, label %76
    i32 16, label %77
    i32 32, label %78
    i32 64, label %79
    i32 128, label %80
    i32 256, label %81
    i32 512, label %82
    i32 1024, label %83
  ]

72:                                               ; preds = %69
  store ptr @_ZN4xmem25forwSequentialRead_Word32EPvS0_, ptr %8, align 8, !tbaa !5
  store ptr @_ZN4xmem31dummy_forwSequentialLoop_Word32EPvS0_, ptr %9, align 8, !tbaa !5
  br label %87

73:                                               ; preds = %69
  store ptr @_ZN4xmem32forwSequentialRead_Word32_Delay1EPvS0_, ptr %8, align 8, !tbaa !5
  store ptr @_ZN4xmem38dummy_forwSequentialLoop_Word32_Delay1EPvS0_, ptr %9, align 8, !tbaa !5
  br label %87

74:                                               ; preds = %69
  store ptr @_ZN4xmem32forwSequentialRead_Word32_Delay2EPvS0_, ptr %8, align 8, !tbaa !5
  store ptr @_ZN4xmem38dummy_forwSequentialLoop_Word32_Delay2EPvS0_, ptr %9, align 8, !tbaa !5
  br label %87

75:                                               ; preds = %69
  store ptr @_ZN4xmem32forwSequentialRead_Word32_Delay4EPvS0_, ptr %8, align 8, !tbaa !5
  store ptr @_ZN4xmem38dummy_forwSequentialLoop_Word32_Delay4EPvS0_, ptr %9, align 8, !tbaa !5
  br label %87

76:                                               ; preds = %69
  store ptr @_ZN4xmem32forwSequentialRead_Word32_Delay8EPvS0_, ptr %8, align 8, !tbaa !5
  store ptr @_ZN4xmem38dummy_forwSequentialLoop_Word32_Delay8EPvS0_, ptr %9, align 8, !tbaa !5
  br label %87

77:                                               ; preds = %69
  store ptr @_ZN4xmem33forwSequentialRead_Word32_Delay16EPvS0_, ptr %8, align 8, !tbaa !5
  store ptr @_ZN4xmem39dummy_forwSequentialLoop_Word32_Delay16EPvS0_, ptr %9, align 8, !tbaa !5
  br label %87

78:                                               ; preds = %69
  store ptr @_ZN4xmem33forwSequentialRead_Word32_Delay32EPvS0_, ptr %8, align 8, !tbaa !5
  store ptr @_ZN4xmem39dummy_forwSequentialLoop_Word32_Delay32EPvS0_, ptr %9, align 8, !tbaa !5
  br label %87

79:                                               ; preds = %69
  store ptr @_ZN4xmem33forwSequentialRead_Word32_Delay64EPvS0_, ptr %8, align 8, !tbaa !5
  store ptr @_ZN4xmem39dummy_forwSequentialLoop_Word32_Delay64EPvS0_, ptr %9, align 8, !tbaa !5
  br label %87

80:                                               ; preds = %69
  store ptr @_ZN4xmem34forwSequentialRead_Word32_Delay128EPvS0_, ptr %8, align 8, !tbaa !5
  store ptr @_ZN4xmem40dummy_forwSequentialLoop_Word32_Delay128EPvS0_, ptr %9, align 8, !tbaa !5
  br label %87

81:                                               ; preds = %69
  store ptr @_ZN4xmem34forwSequentialRead_Word32_Delay256EPvS0_, ptr %8, align 8, !tbaa !5
  store ptr @_ZN4xmem40dummy_forwSequentialLoop_Word32_Delay256EPvS0_, ptr %9, align 8, !tbaa !5
  br label %87

82:                                               ; preds = %69
  store ptr @_ZN4xmem34forwSequentialRead_Word32_Delay512EPvS0_, ptr %8, align 8, !tbaa !5
  store ptr @_ZN4xmem44dummy_forwSequentialLoop_Word32_Delay512plusEPvS0_, ptr %9, align 8, !tbaa !5
  br label %87

83:                                               ; preds = %69
  store ptr @_ZN4xmem35forwSequentialRead_Word32_Delay1024EPvS0_, ptr %8, align 8, !tbaa !5
  store ptr @_ZN4xmem44dummy_forwSequentialLoop_Word32_Delay512plusEPvS0_, ptr %9, align 8, !tbaa !5
  br label %87

84:                                               ; preds = %69
  %85 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) @_ZSt4cerr, ptr noundef @.str.2)
  %86 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEPFRSoS_E(ptr noundef nonnull align 8 dereferenceable(8) %85, ptr noundef @_ZSt4endlIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_)
  store i1 false, ptr %2, align 1
  store i32 1, ptr %7, align 4
  br label %807

87:                                               ; preds = %83, %82, %81, %80, %79, %78, %77, %76, %75, %74, %73, %72
  br label %110

88:                                               ; preds = %66
  %89 = getelementptr inbounds %"class.xmem::DelayInjectedLoadedLatencyBenchmark", ptr %37, i32 0, i32 1
  %90 = load i32, ptr %89, align 8, !tbaa !36
  switch i32 %90, label %103 [
    i32 0, label %91
    i32 1, label %92
    i32 2, label %93
    i32 4, label %94
    i32 8, label %95
    i32 16, label %96
    i32 32, label %97
    i32 64, label %98
    i32 128, label %99
    i32 256, label %100
    i32 512, label %101
    i32 1024, label %102
  ]

91:                                               ; preds = %88
  store ptr @_ZN4xmem25forwSequentialRead_Word64EPvS0_, ptr %8, align 8, !tbaa !5
  store ptr @_ZN4xmem31dummy_forwSequentialLoop_Word64EPvS0_, ptr %9, align 8, !tbaa !5
  br label %106

92:                                               ; preds = %88
  store ptr @_ZN4xmem32forwSequentialRead_Word64_Delay1EPvS0_, ptr %8, align 8, !tbaa !5
  store ptr @_ZN4xmem38dummy_forwSequentialLoop_Word64_Delay1EPvS0_, ptr %9, align 8, !tbaa !5
  br label %106

93:                                               ; preds = %88
  store ptr @_ZN4xmem32forwSequentialRead_Word64_Delay2EPvS0_, ptr %8, align 8, !tbaa !5
  store ptr @_ZN4xmem38dummy_forwSequentialLoop_Word64_Delay2EPvS0_, ptr %9, align 8, !tbaa !5
  br label %106

94:                                               ; preds = %88
  store ptr @_ZN4xmem32forwSequentialRead_Word64_Delay4EPvS0_, ptr %8, align 8, !tbaa !5
  store ptr @_ZN4xmem38dummy_forwSequentialLoop_Word64_Delay4EPvS0_, ptr %9, align 8, !tbaa !5
  br label %106

95:                                               ; preds = %88
  store ptr @_ZN4xmem32forwSequentialRead_Word64_Delay8EPvS0_, ptr %8, align 8, !tbaa !5
  store ptr @_ZN4xmem38dummy_forwSequentialLoop_Word64_Delay8EPvS0_, ptr %9, align 8, !tbaa !5
  br label %106

96:                                               ; preds = %88
  store ptr @_ZN4xmem33forwSequentialRead_Word64_Delay16EPvS0_, ptr %8, align 8, !tbaa !5
  store ptr @_ZN4xmem39dummy_forwSequentialLoop_Word64_Delay16EPvS0_, ptr %9, align 8, !tbaa !5
  br label %106

97:                                               ; preds = %88
  store ptr @_ZN4xmem33forwSequentialRead_Word64_Delay32EPvS0_, ptr %8, align 8, !tbaa !5
  store ptr @_ZN4xmem39dummy_forwSequentialLoop_Word64_Delay32EPvS0_, ptr %9, align 8, !tbaa !5
  br label %106

98:                                               ; preds = %88
  store ptr @_ZN4xmem33forwSequentialRead_Word64_Delay64EPvS0_, ptr %8, align 8, !tbaa !5
  store ptr @_ZN4xmem39dummy_forwSequentialLoop_Word64_Delay64EPvS0_, ptr %9, align 8, !tbaa !5
  br label %106

99:                                               ; preds = %88
  store ptr @_ZN4xmem34forwSequentialRead_Word64_Delay128EPvS0_, ptr %8, align 8, !tbaa !5
  store ptr @_ZN4xmem40dummy_forwSequentialLoop_Word64_Delay128EPvS0_, ptr %9, align 8, !tbaa !5
  br label %106

100:                                              ; preds = %88
  store ptr @_ZN4xmem34forwSequentialRead_Word64_Delay256EPvS0_, ptr %8, align 8, !tbaa !5
  store ptr @_ZN4xmem44dummy_forwSequentialLoop_Word64_Delay256plusEPvS0_, ptr %9, align 8, !tbaa !5
  br label %106

101:                                              ; preds = %88
  store ptr @_ZN4xmem34forwSequentialRead_Word64_Delay512EPvS0_, ptr %8, align 8, !tbaa !5
  store ptr @_ZN4xmem44dummy_forwSequentialLoop_Word64_Delay256plusEPvS0_, ptr %9, align 8, !tbaa !5
  br label %106

102:                                              ; preds = %88
  store ptr @_ZN4xmem35forwSequentialRead_Word64_Delay1024EPvS0_, ptr %8, align 8, !tbaa !5
  store ptr @_ZN4xmem44dummy_forwSequentialLoop_Word64_Delay256plusEPvS0_, ptr %9, align 8, !tbaa !5
  br label %106

103:                                              ; preds = %88
  %104 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) @_ZSt4cerr, ptr noundef @.str.2)
  %105 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEPFRSoS_E(ptr noundef nonnull align 8 dereferenceable(8) %104, ptr noundef @_ZSt4endlIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_)
  store i1 false, ptr %2, align 1
  store i32 1, ptr %7, align 4
  br label %807

106:                                              ; preds = %102, %101, %100, %99, %98, %97, %96, %95, %94, %93, %92, %91
  br label %110

107:                                              ; preds = %66
  %108 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) @_ZSt4cerr, ptr noundef @.str.3)
  %109 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEPFRSoS_E(ptr noundef nonnull align 8 dereferenceable(8) %108, ptr noundef @_ZSt4endlIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_)
  store i1 false, ptr %2, align 1
  store i32 1, ptr %7, align 4
  br label %807

110:                                              ; preds = %106, %87
  br label %111

111:                                              ; preds = %110, %62
  call void @llvm.lifetime.start.p0(i64 24, ptr %10) #8
  call void @_ZNSt6vectorIPN4xmem12MemoryWorkerESaIS2_EEC2Ev(ptr noundef nonnull align 8 dereferenceable(24) %10) #8
  call void @llvm.lifetime.start.p0(i64 24, ptr %11) #8
  call void @_ZNSt6vectorIPN4xmem6ThreadESaIS2_EEC2Ev(ptr noundef nonnull align 8 dereferenceable(24) %11) #8
  %112 = load i8, ptr @_ZN4xmem9g_verboseE, align 1, !tbaa !39, !range !40, !noundef !41
  %113 = trunc i8 %112 to i1
  br i1 %113, label %114, label %121

114:                                              ; preds = %111
  %115 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) @_ZSt4cout, ptr noundef @.str.4)
          to label %116 unwind label %117

116:                                              ; preds = %114
  br label %121

117:                                              ; preds = %778, %774, %772, %766, %764, %761, %759, %753, %750, %748, %153, %151, %149, %142, %140, %134, %132, %129, %127, %121, %114
  %118 = landingpad { ptr, i32 }
          cleanup
  %119 = extractvalue { ptr, i32 } %118, 0
  store ptr %119, ptr %12, align 8
  %120 = extractvalue { ptr, i32 } %118, 1
  store i32 %120, ptr %13, align 4
  br label %806

121:                                              ; preds = %116, %111
  %122 = invoke noundef zeroext i1 @_ZN4xmem9Benchmark17startPowerThreadsEv(ptr noundef nonnull align 8 dereferenceable(315) %37)
          to label %123 unwind label %117

123:                                              ; preds = %121
  br i1 %122, label %137, label %124

124:                                              ; preds = %123
  %125 = load i8, ptr @_ZN4xmem9g_verboseE, align 1, !tbaa !39, !range !40, !noundef !41
  %126 = trunc i8 %125 to i1
  br i1 %126, label %127, label %132

127:                                              ; preds = %124
  %128 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) @_ZSt4cout, ptr noundef @.str.5)
          to label %129 unwind label %117

129:                                              ; preds = %127
  %130 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEPFRSoS_E(ptr noundef nonnull align 8 dereferenceable(8) %128, ptr noundef @_ZSt4endlIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_)
          to label %131 unwind label %117

131:                                              ; preds = %129
  br label %132

132:                                              ; preds = %131, %124
  %133 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) @_ZSt4cerr, ptr noundef @.str.6)
          to label %134 unwind label %117

134:                                              ; preds = %132
  %135 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEPFRSoS_E(ptr noundef nonnull align 8 dereferenceable(8) %133, ptr noundef @_ZSt4endlIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_)
          to label %136 unwind label %117

136:                                              ; preds = %134
  br label %146

137:                                              ; preds = %123
  %138 = load i8, ptr @_ZN4xmem9g_verboseE, align 1, !tbaa !39, !range !40, !noundef !41
  %139 = trunc i8 %138 to i1
  br i1 %139, label %140, label %145

140:                                              ; preds = %137
  %141 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) @_ZSt4cout, ptr noundef @.str.7)
          to label %142 unwind label %117

142:                                              ; preds = %140
  %143 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEPFRSoS_E(ptr noundef nonnull align 8 dereferenceable(8) %141, ptr noundef @_ZSt4endlIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_)
          to label %144 unwind label %117

144:                                              ; preds = %142
  br label %145

145:                                              ; preds = %144, %137
  br label %146

146:                                              ; preds = %145, %136
  %147 = load i8, ptr @_ZN4xmem9g_verboseE, align 1, !tbaa !39, !range !40, !noundef !41
  %148 = trunc i8 %147 to i1
  br i1 %148, label %149, label %156

149:                                              ; preds = %146
  %150 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) @_ZSt4cout, ptr noundef @.str.8)
          to label %151 unwind label %117

151:                                              ; preds = %149
  %152 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEPFRSoS_E(ptr noundef nonnull align 8 dereferenceable(8) %150, ptr noundef @_ZSt4endlIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_)
          to label %153 unwind label %117

153:                                              ; preds = %151
  %154 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEPFRSoS_E(ptr noundef nonnull align 8 dereferenceable(8) %152, ptr noundef @_ZSt4endlIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_)
          to label %155 unwind label %117

155:                                              ; preds = %153
  br label %156

156:                                              ; preds = %155, %146
  call void @llvm.lifetime.start.p0(i64 4, ptr %14) #8
  store i32 0, ptr %14, align 4, !tbaa !42
  br label %157

157:                                              ; preds = %735, %156
  %158 = load i32, ptr %14, align 4, !tbaa !42
  %159 = getelementptr inbounds %"class.xmem::Benchmark", ptr %37, i32 0, i32 3
  %160 = load i32, ptr %159, align 8, !tbaa !43
  %161 = icmp ult i32 %158, %160
  br i1 %161, label %163, label %162

162:                                              ; preds = %157
  store i32 5, ptr %7, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %14) #8
  br label %745

163:                                              ; preds = %157
  call void @llvm.lifetime.start.p0(i64 4, ptr %15) #8
  store i32 0, ptr %15, align 4, !tbaa !42
  br label %164

164:                                              ; preds = %253, %163
  %165 = load i32, ptr %15, align 4, !tbaa !42
  %166 = getelementptr inbounds %"class.xmem::Benchmark", ptr %37, i32 0, i32 4
  %167 = load i32, ptr %166, align 4, !tbaa !32
  %168 = icmp ult i32 %165, %167
  br i1 %168, label %170, label %169

169:                                              ; preds = %164
  store i32 8, ptr %7, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %15) #8
  br label %266

170:                                              ; preds = %164
  call void @llvm.lifetime.start.p0(i64 8, ptr %16) #8
  %171 = getelementptr inbounds %"class.xmem::Benchmark", ptr %37, i32 0, i32 1
  %172 = load ptr, ptr %171, align 8, !tbaa !34
  %173 = load i32, ptr %15, align 4, !tbaa !42
  %174 = zext i32 %173 to i64
  %175 = load i64, ptr %4, align 8, !tbaa !33
  %176 = mul i64 %174, %175
  %177 = getelementptr inbounds i8, ptr %172, i64 %176
  store ptr %177, ptr %16, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 4, ptr %17) #8
  %178 = getelementptr inbounds %"class.xmem::Benchmark", ptr %37, i32 0, i32 6
  %179 = load i32, ptr %178, align 4, !tbaa !44
  %180 = load i32, ptr %15, align 4, !tbaa !42
  %181 = invoke noundef i32 @_ZN4xmem19cpu_id_in_numa_nodeEjj(i32 noundef %179, i32 noundef %180)
          to label %182 unwind label %199

182:                                              ; preds = %170
  store i32 %181, ptr %17, align 4, !tbaa !42
  %183 = load i32, ptr %17, align 4, !tbaa !42
  %184 = icmp slt i32 %183, 0
  br i1 %184, label %185, label %203

185:                                              ; preds = %182
  %186 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) @_ZSt4cerr, ptr noundef @.str.9)
          to label %187 unwind label %199

187:                                              ; preds = %185
  %188 = load i32, ptr %15, align 4, !tbaa !42
  %189 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEj(ptr noundef nonnull align 8 dereferenceable(8) %186, i32 noundef %188)
          to label %190 unwind label %199

190:                                              ; preds = %187
  %191 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) %189, ptr noundef @.str.10)
          to label %192 unwind label %199

192:                                              ; preds = %190
  %193 = getelementptr inbounds %"class.xmem::Benchmark", ptr %37, i32 0, i32 6
  %194 = load i32, ptr %193, align 4, !tbaa !44
  %195 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEj(ptr noundef nonnull align 8 dereferenceable(8) %191, i32 noundef %194)
          to label %196 unwind label %199

196:                                              ; preds = %192
  %197 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEPFRSoS_E(ptr noundef nonnull align 8 dereferenceable(8) %195, ptr noundef @_ZSt4endlIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_)
          to label %198 unwind label %199

198:                                              ; preds = %196
  br label %203

199:                                              ; preds = %196, %192, %190, %187, %185, %170
  %200 = landingpad { ptr, i32 }
          cleanup
  %201 = extractvalue { ptr, i32 } %200, 0
  store ptr %201, ptr %12, align 8
  %202 = extractvalue { ptr, i32 } %200, 1
  store i32 %202, ptr %13, align 4
  br label %265

203:                                              ; preds = %198, %182
  %204 = load i32, ptr %15, align 4, !tbaa !42
  %205 = icmp eq i32 %204, 0
  br i1 %205, label %206, label %225

206:                                              ; preds = %203
  call void @llvm.lifetime.start.p0(i64 8, ptr %18) #8
  %207 = invoke noalias noundef nonnull ptr @_Znwm(i64 noundef 128) #9
          to label %208 unwind label %216

208:                                              ; preds = %206
  %209 = load ptr, ptr %16, align 8, !tbaa !5
  %210 = load i64, ptr %4, align 8, !tbaa !33
  %211 = load ptr, ptr %5, align 8, !tbaa !5
  %212 = load ptr, ptr %6, align 8, !tbaa !5
  %213 = load i32, ptr %17, align 4, !tbaa !42
  invoke void @_ZN4xmem13LatencyWorkerC1EPvmPFiPmPS2_mES5_i(ptr noundef nonnull align 8 dereferenceable(128) %207, ptr noundef %209, i64 noundef %210, ptr noundef %211, ptr noundef %212, i32 noundef %213)
          to label %214 unwind label %220

214:                                              ; preds = %208
  store ptr %207, ptr %18, align 8, !tbaa !5
  invoke void @_ZNSt6vectorIPN4xmem12MemoryWorkerESaIS2_EE9push_backEOS2_(ptr noundef nonnull align 8 dereferenceable(24) %10, ptr noundef nonnull align 8 dereferenceable(8) %18)
          to label %215 unwind label %216

215:                                              ; preds = %214
  call void @llvm.lifetime.end.p0(i64 8, ptr %18) #8
  br label %244

216:                                              ; preds = %214, %206
  %217 = landingpad { ptr, i32 }
          cleanup
  %218 = extractvalue { ptr, i32 } %217, 0
  store ptr %218, ptr %12, align 8
  %219 = extractvalue { ptr, i32 } %217, 1
  store i32 %219, ptr %13, align 4
  br label %224

220:                                              ; preds = %208
  %221 = landingpad { ptr, i32 }
          cleanup
  %222 = extractvalue { ptr, i32 } %221, 0
  store ptr %222, ptr %12, align 8
  %223 = extractvalue { ptr, i32 } %221, 1
  store i32 %223, ptr %13, align 4
  call void @_ZdlPvm(ptr noundef %207, i64 noundef 128) #10
  br label %224

224:                                              ; preds = %220, %216
  call void @llvm.lifetime.end.p0(i64 8, ptr %18) #8
  br label %265

225:                                              ; preds = %203
  call void @llvm.lifetime.start.p0(i64 8, ptr %19) #8
  %226 = invoke noalias noundef nonnull ptr @_Znwm(i64 noundef 144) #9
          to label %227 unwind label %235

227:                                              ; preds = %225
  %228 = load ptr, ptr %16, align 8, !tbaa !5
  %229 = load i64, ptr %4, align 8, !tbaa !33
  %230 = load ptr, ptr %8, align 8, !tbaa !5
  %231 = load ptr, ptr %9, align 8, !tbaa !5
  %232 = load i32, ptr %17, align 4, !tbaa !42
  invoke void @_ZN4xmem10LoadWorkerC1EPvmPFiS1_S1_ES3_i(ptr noundef nonnull align 8 dereferenceable(144) %226, ptr noundef %228, i64 noundef %229, ptr noundef %230, ptr noundef %231, i32 noundef %232)
          to label %233 unwind label %239

233:                                              ; preds = %227
  store ptr %226, ptr %19, align 8, !tbaa !5
  invoke void @_ZNSt6vectorIPN4xmem12MemoryWorkerESaIS2_EE9push_backEOS2_(ptr noundef nonnull align 8 dereferenceable(24) %10, ptr noundef nonnull align 8 dereferenceable(8) %19)
          to label %234 unwind label %235

234:                                              ; preds = %233
  call void @llvm.lifetime.end.p0(i64 8, ptr %19) #8
  br label %244

235:                                              ; preds = %233, %225
  %236 = landingpad { ptr, i32 }
          cleanup
  %237 = extractvalue { ptr, i32 } %236, 0
  store ptr %237, ptr %12, align 8
  %238 = extractvalue { ptr, i32 } %236, 1
  store i32 %238, ptr %13, align 4
  br label %243

239:                                              ; preds = %227
  %240 = landingpad { ptr, i32 }
          cleanup
  %241 = extractvalue { ptr, i32 } %240, 0
  store ptr %241, ptr %12, align 8
  %242 = extractvalue { ptr, i32 } %240, 1
  store i32 %242, ptr %13, align 4
  call void @_ZdlPvm(ptr noundef %226, i64 noundef 144) #10
  br label %243

243:                                              ; preds = %239, %235
  call void @llvm.lifetime.end.p0(i64 8, ptr %19) #8
  br label %265

244:                                              ; preds = %234, %215
  call void @llvm.lifetime.start.p0(i64 8, ptr %20) #8
  %245 = invoke noalias noundef nonnull ptr @_Znwm(i64 noundef 32) #9
          to label %246 unwind label %256

246:                                              ; preds = %244
  %247 = load i32, ptr %15, align 4, !tbaa !42
  %248 = zext i32 %247 to i64
  %249 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt6vectorIPN4xmem12MemoryWorkerESaIS2_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %10, i64 noundef %248) #8
  %250 = load ptr, ptr %249, align 8, !tbaa !5
  invoke void @_ZN4xmem6ThreadC1EPNS_8RunnableE(ptr noundef nonnull align 8 dereferenceable(32) %245, ptr noundef %250)
          to label %251 unwind label %260

251:                                              ; preds = %246
  store ptr %245, ptr %20, align 8, !tbaa !5
  invoke void @_ZNSt6vectorIPN4xmem6ThreadESaIS2_EE9push_backEOS2_(ptr noundef nonnull align 8 dereferenceable(24) %11, ptr noundef nonnull align 8 dereferenceable(8) %20)
          to label %252 unwind label %256

252:                                              ; preds = %251
  call void @llvm.lifetime.end.p0(i64 8, ptr %20) #8
  call void @llvm.lifetime.end.p0(i64 4, ptr %17) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %16) #8
  br label %253

253:                                              ; preds = %252
  %254 = load i32, ptr %15, align 4, !tbaa !42
  %255 = add i32 %254, 1
  store i32 %255, ptr %15, align 4, !tbaa !42
  br label %164, !llvm.loop !45

256:                                              ; preds = %251, %244
  %257 = landingpad { ptr, i32 }
          cleanup
  %258 = extractvalue { ptr, i32 } %257, 0
  store ptr %258, ptr %12, align 8
  %259 = extractvalue { ptr, i32 } %257, 1
  store i32 %259, ptr %13, align 4
  br label %264

260:                                              ; preds = %246
  %261 = landingpad { ptr, i32 }
          cleanup
  %262 = extractvalue { ptr, i32 } %261, 0
  store ptr %262, ptr %12, align 8
  %263 = extractvalue { ptr, i32 } %261, 1
  store i32 %263, ptr %13, align 4
  call void @_ZdlPvm(ptr noundef %245, i64 noundef 32) #10
  br label %264

264:                                              ; preds = %260, %256
  call void @llvm.lifetime.end.p0(i64 8, ptr %20) #8
  br label %265

265:                                              ; preds = %264, %243, %224, %199
  call void @llvm.lifetime.end.p0(i64 4, ptr %17) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %16) #8
  call void @llvm.lifetime.end.p0(i64 4, ptr %15) #8
  br label %744

266:                                              ; preds = %169
  call void @llvm.lifetime.start.p0(i64 4, ptr %21) #8
  store i32 0, ptr %21, align 4, !tbaa !42
  br label %267

267:                                              ; preds = %280, %266
  %268 = load i32, ptr %21, align 4, !tbaa !42
  %269 = getelementptr inbounds %"class.xmem::Benchmark", ptr %37, i32 0, i32 4
  %270 = load i32, ptr %269, align 4, !tbaa !32
  %271 = icmp ult i32 %268, %270
  br i1 %271, label %273, label %272

272:                                              ; preds = %267
  store i32 11, ptr %7, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %21) #8
  br label %287

273:                                              ; preds = %267
  %274 = load i32, ptr %21, align 4, !tbaa !42
  %275 = zext i32 %274 to i64
  %276 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt6vectorIPN4xmem6ThreadESaIS2_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %11, i64 noundef %275) #8
  %277 = load ptr, ptr %276, align 8, !tbaa !5
  %278 = invoke noundef zeroext i1 @_ZN4xmem6Thread16create_and_startEv(ptr noundef nonnull align 8 dereferenceable(32) %277)
          to label %279 unwind label %283

279:                                              ; preds = %273
  br label %280

280:                                              ; preds = %279
  %281 = load i32, ptr %21, align 4, !tbaa !42
  %282 = add i32 %281, 1
  store i32 %282, ptr %21, align 4, !tbaa !42
  br label %267, !llvm.loop !47

283:                                              ; preds = %273
  %284 = landingpad { ptr, i32 }
          cleanup
  %285 = extractvalue { ptr, i32 } %284, 0
  store ptr %285, ptr %12, align 8
  %286 = extractvalue { ptr, i32 } %284, 1
  store i32 %286, ptr %13, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %21) #8
  br label %744

287:                                              ; preds = %272
  call void @llvm.lifetime.start.p0(i64 4, ptr %22) #8
  store i32 0, ptr %22, align 4, !tbaa !42
  br label %288

288:                                              ; preds = %311, %287
  %289 = load i32, ptr %22, align 4, !tbaa !42
  %290 = getelementptr inbounds %"class.xmem::Benchmark", ptr %37, i32 0, i32 4
  %291 = load i32, ptr %290, align 4, !tbaa !32
  %292 = icmp ult i32 %289, %291
  br i1 %292, label %294, label %293

293:                                              ; preds = %288
  store i32 14, ptr %7, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %22) #8
  br label %314

294:                                              ; preds = %288
  %295 = load i32, ptr %22, align 4, !tbaa !42
  %296 = zext i32 %295 to i64
  %297 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt6vectorIPN4xmem6ThreadESaIS2_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %11, i64 noundef %296) #8
  %298 = load ptr, ptr %297, align 8, !tbaa !5
  %299 = invoke noundef zeroext i1 @_ZN4xmem6Thread4joinEv(ptr noundef nonnull align 8 dereferenceable(32) %298)
          to label %300 unwind label %306

300:                                              ; preds = %294
  br i1 %299, label %310, label %301

301:                                              ; preds = %300
  %302 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) @_ZSt4cerr, ptr noundef @.str.11)
          to label %303 unwind label %306

303:                                              ; preds = %301
  %304 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEPFRSoS_E(ptr noundef nonnull align 8 dereferenceable(8) %302, ptr noundef @_ZSt4endlIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_)
          to label %305 unwind label %306

305:                                              ; preds = %303
  br label %310

306:                                              ; preds = %303, %301, %294
  %307 = landingpad { ptr, i32 }
          cleanup
  %308 = extractvalue { ptr, i32 } %307, 0
  store ptr %308, ptr %12, align 8
  %309 = extractvalue { ptr, i32 } %307, 1
  store i32 %309, ptr %13, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %22) #8
  br label %744

310:                                              ; preds = %305, %300
  br label %311

311:                                              ; preds = %310
  %312 = load i32, ptr %22, align 4, !tbaa !42
  %313 = add i32 %312, 1
  store i32 %313, ptr %22, align 4, !tbaa !42
  br label %288, !llvm.loop !48

314:                                              ; preds = %293
  call void @llvm.lifetime.start.p0(i64 1, ptr %23) #8
  store i8 0, ptr %23, align 1, !tbaa !39
  call void @llvm.lifetime.start.p0(i64 4, ptr %24) #8
  %315 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt6vectorIPN4xmem12MemoryWorkerESaIS2_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %10, i64 noundef 0) #8
  %316 = load ptr, ptr %315, align 8, !tbaa !5
  %317 = invoke noundef i32 @_ZN4xmem12MemoryWorker9getPassesEv(ptr noundef nonnull align 8 dereferenceable(106) %316)
          to label %318 unwind label %350

318:                                              ; preds = %314
  store i32 %317, ptr %24, align 4, !tbaa !42
  call void @llvm.lifetime.start.p0(i64 8, ptr %25) #8
  %319 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt6vectorIPN4xmem12MemoryWorkerESaIS2_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %10, i64 noundef 0) #8
  %320 = load ptr, ptr %319, align 8, !tbaa !5
  %321 = invoke noundef i64 @_ZN4xmem12MemoryWorker16getAdjustedTicksEv(ptr noundef nonnull align 8 dereferenceable(106) %320)
          to label %322 unwind label %354

322:                                              ; preds = %318
  store i64 %321, ptr %25, align 8, !tbaa !33
  call void @llvm.lifetime.start.p0(i64 8, ptr %26) #8
  %323 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt6vectorIPN4xmem12MemoryWorkerESaIS2_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %10, i64 noundef 0) #8
  %324 = load ptr, ptr %323, align 8, !tbaa !5
  %325 = invoke noundef i64 @_ZN4xmem12MemoryWorker20getElapsedDummyTicksEv(ptr noundef nonnull align 8 dereferenceable(106) %324)
          to label %326 unwind label %358

326:                                              ; preds = %322
  store i64 %325, ptr %26, align 8, !tbaa !33
  call void @llvm.lifetime.start.p0(i64 4, ptr %27) #8
  %327 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt6vectorIPN4xmem12MemoryWorkerESaIS2_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %10, i64 noundef 0) #8
  %328 = load ptr, ptr %327, align 8, !tbaa !5
  %329 = invoke noundef i32 @_ZN4xmem12MemoryWorker15getBytesPerPassEv(ptr noundef nonnull align 8 dereferenceable(106) %328)
          to label %330 unwind label %362

330:                                              ; preds = %326
  store i32 %329, ptr %27, align 4, !tbaa !42
  call void @llvm.lifetime.start.p0(i64 4, ptr %28) #8
  %331 = load i32, ptr %27, align 4, !tbaa !42
  %332 = udiv i32 %331, 8
  store i32 %332, ptr %28, align 4, !tbaa !42
  %333 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt6vectorIPN4xmem12MemoryWorkerESaIS2_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %10, i64 noundef 0) #8
  %334 = load ptr, ptr %333, align 8, !tbaa !5
  %335 = invoke noundef zeroext i1 @_ZN4xmem12MemoryWorker10hadWarningEv(ptr noundef nonnull align 8 dereferenceable(106) %334)
          to label %336 unwind label %366

336:                                              ; preds = %330
  %337 = zext i1 %335 to i32
  %338 = load i8, ptr %23, align 1, !tbaa !39, !range !40, !noundef !41
  %339 = trunc i8 %338 to i1
  %340 = zext i1 %339 to i32
  %341 = or i32 %340, %337
  %342 = icmp ne i32 %341, 0
  %343 = zext i1 %342 to i8
  store i8 %343, ptr %23, align 1, !tbaa !39
  call void @llvm.lifetime.start.p0(i64 4, ptr %29) #8
  store i32 0, ptr %29, align 4, !tbaa !42
  call void @llvm.lifetime.start.p0(i64 8, ptr %30) #8
  store i64 0, ptr %30, align 8, !tbaa !33
  call void @llvm.lifetime.start.p0(i64 8, ptr %31) #8
  store i64 0, ptr %31, align 8, !tbaa !33
  call void @llvm.lifetime.start.p0(i64 4, ptr %32) #8
  store i32 0, ptr %32, align 4, !tbaa !42
  call void @llvm.lifetime.start.p0(i64 8, ptr %33) #8
  store double 0.000000e+00, ptr %33, align 8, !tbaa !49
  call void @llvm.lifetime.start.p0(i64 4, ptr %34) #8
  store i32 1, ptr %34, align 4, !tbaa !42
  br label %344

344:                                              ; preds = %414, %336
  %345 = load i32, ptr %34, align 4, !tbaa !42
  %346 = getelementptr inbounds %"class.xmem::Benchmark", ptr %37, i32 0, i32 4
  %347 = load i32, ptr %346, align 4, !tbaa !32
  %348 = icmp ult i32 %345, %347
  br i1 %348, label %370, label %349

349:                                              ; preds = %344
  store i32 17, ptr %7, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %34) #8
  br label %421

350:                                              ; preds = %314
  %351 = landingpad { ptr, i32 }
          cleanup
  %352 = extractvalue { ptr, i32 } %351, 0
  store ptr %352, ptr %12, align 8
  %353 = extractvalue { ptr, i32 } %351, 1
  store i32 %353, ptr %13, align 4
  br label %743

354:                                              ; preds = %318
  %355 = landingpad { ptr, i32 }
          cleanup
  %356 = extractvalue { ptr, i32 } %355, 0
  store ptr %356, ptr %12, align 8
  %357 = extractvalue { ptr, i32 } %355, 1
  store i32 %357, ptr %13, align 4
  br label %742

358:                                              ; preds = %322
  %359 = landingpad { ptr, i32 }
          cleanup
  %360 = extractvalue { ptr, i32 } %359, 0
  store ptr %360, ptr %12, align 8
  %361 = extractvalue { ptr, i32 } %359, 1
  store i32 %361, ptr %13, align 4
  br label %741

362:                                              ; preds = %326
  %363 = landingpad { ptr, i32 }
          cleanup
  %364 = extractvalue { ptr, i32 } %363, 0
  store ptr %364, ptr %12, align 8
  %365 = extractvalue { ptr, i32 } %363, 1
  store i32 %365, ptr %13, align 4
  br label %740

366:                                              ; preds = %330
  %367 = landingpad { ptr, i32 }
          cleanup
  %368 = extractvalue { ptr, i32 } %367, 0
  store ptr %368, ptr %12, align 8
  %369 = extractvalue { ptr, i32 } %367, 1
  store i32 %369, ptr %13, align 4
  br label %739

370:                                              ; preds = %344
  %371 = load i32, ptr %34, align 4, !tbaa !42
  %372 = zext i32 %371 to i64
  %373 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt6vectorIPN4xmem12MemoryWorkerESaIS2_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %10, i64 noundef %372) #8
  %374 = load ptr, ptr %373, align 8, !tbaa !5
  %375 = invoke noundef i32 @_ZN4xmem12MemoryWorker9getPassesEv(ptr noundef nonnull align 8 dereferenceable(106) %374)
          to label %376 unwind label %417

376:                                              ; preds = %370
  %377 = load i32, ptr %29, align 4, !tbaa !42
  %378 = add i32 %377, %375
  store i32 %378, ptr %29, align 4, !tbaa !42
  %379 = load i32, ptr %34, align 4, !tbaa !42
  %380 = zext i32 %379 to i64
  %381 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt6vectorIPN4xmem12MemoryWorkerESaIS2_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %10, i64 noundef %380) #8
  %382 = load ptr, ptr %381, align 8, !tbaa !5
  %383 = invoke noundef i64 @_ZN4xmem12MemoryWorker16getAdjustedTicksEv(ptr noundef nonnull align 8 dereferenceable(106) %382)
          to label %384 unwind label %417

384:                                              ; preds = %376
  %385 = load i64, ptr %30, align 8, !tbaa !33
  %386 = add i64 %385, %383
  store i64 %386, ptr %30, align 8, !tbaa !33
  %387 = load i32, ptr %34, align 4, !tbaa !42
  %388 = zext i32 %387 to i64
  %389 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt6vectorIPN4xmem12MemoryWorkerESaIS2_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %10, i64 noundef %388) #8
  %390 = load ptr, ptr %389, align 8, !tbaa !5
  %391 = invoke noundef i64 @_ZN4xmem12MemoryWorker20getElapsedDummyTicksEv(ptr noundef nonnull align 8 dereferenceable(106) %390)
          to label %392 unwind label %417

392:                                              ; preds = %384
  %393 = load i64, ptr %31, align 8, !tbaa !33
  %394 = add i64 %393, %391
  store i64 %394, ptr %31, align 8, !tbaa !33
  %395 = load i32, ptr %34, align 4, !tbaa !42
  %396 = zext i32 %395 to i64
  %397 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt6vectorIPN4xmem12MemoryWorkerESaIS2_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %10, i64 noundef %396) #8
  %398 = load ptr, ptr %397, align 8, !tbaa !5
  %399 = invoke noundef i32 @_ZN4xmem12MemoryWorker15getBytesPerPassEv(ptr noundef nonnull align 8 dereferenceable(106) %398)
          to label %400 unwind label %417

400:                                              ; preds = %392
  store i32 %399, ptr %32, align 4, !tbaa !42
  %401 = load i32, ptr %34, align 4, !tbaa !42
  %402 = zext i32 %401 to i64
  %403 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt6vectorIPN4xmem12MemoryWorkerESaIS2_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %10, i64 noundef %402) #8
  %404 = load ptr, ptr %403, align 8, !tbaa !5
  %405 = invoke noundef zeroext i1 @_ZN4xmem12MemoryWorker10hadWarningEv(ptr noundef nonnull align 8 dereferenceable(106) %404)
          to label %406 unwind label %417

406:                                              ; preds = %400
  %407 = zext i1 %405 to i32
  %408 = load i8, ptr %23, align 1, !tbaa !39, !range !40, !noundef !41
  %409 = trunc i8 %408 to i1
  %410 = zext i1 %409 to i32
  %411 = or i32 %410, %407
  %412 = icmp ne i32 %411, 0
  %413 = zext i1 %412 to i8
  store i8 %413, ptr %23, align 1, !tbaa !39
  br label %414

414:                                              ; preds = %406
  %415 = load i32, ptr %34, align 4, !tbaa !42
  %416 = add i32 %415, 1
  store i32 %416, ptr %34, align 4, !tbaa !42
  br label %344, !llvm.loop !50

417:                                              ; preds = %400, %392, %384, %376, %370
  %418 = landingpad { ptr, i32 }
          cleanup
  %419 = extractvalue { ptr, i32 } %418, 0
  store ptr %419, ptr %12, align 8
  %420 = extractvalue { ptr, i32 } %418, 1
  store i32 %420, ptr %13, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %34) #8
  br label %738

421:                                              ; preds = %349
  %422 = load i64, ptr %30, align 8, !tbaa !33
  %423 = uitofp i64 %422 to double
  %424 = getelementptr inbounds %"class.xmem::Benchmark", ptr %37, i32 0, i32 4
  %425 = load i32, ptr %424, align 4, !tbaa !32
  %426 = sub i32 %425, 1
  %427 = uitofp i32 %426 to double
  %428 = fdiv double %423, %427
  store double %428, ptr %33, align 8, !tbaa !49
  %429 = getelementptr inbounds %"class.xmem::Benchmark", ptr %37, i32 0, i32 4
  %430 = load i32, ptr %429, align 4, !tbaa !32
  %431 = icmp ugt i32 %430, 1
  br i1 %431, label %432, label %449

432:                                              ; preds = %421
  %433 = load i32, ptr %29, align 4, !tbaa !42
  %434 = uitofp i32 %433 to double
  %435 = load i32, ptr %32, align 4, !tbaa !42
  %436 = uitofp i32 %435 to double
  %437 = fmul double %434, %436
  %438 = fdiv double %437, 0x4130000000000000
  %439 = load double, ptr %33, align 8, !tbaa !49
  %440 = load float, ptr @_ZN4xmem13g_ns_per_tickE, align 4, !tbaa !51
  %441 = fpext float %440 to double
  %442 = fmul double %439, %441
  %443 = fdiv double %442, 1.000000e+09
  %444 = fdiv double %438, %443
  %445 = getelementptr inbounds %"class.xmem::LatencyBenchmark", ptr %37, i32 0, i32 1
  %446 = load i32, ptr %14, align 4, !tbaa !42
  %447 = zext i32 %446 to i64
  %448 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt6vectorIdSaIdEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %445, i64 noundef %447) #8
  store double %444, ptr %448, align 8, !tbaa !49
  br label %449

449:                                              ; preds = %432, %421
  %450 = load i8, ptr %23, align 1, !tbaa !39, !range !40, !noundef !41
  %451 = trunc i8 %450 to i1
  br i1 %451, label %452, label %454

452:                                              ; preds = %449
  %453 = getelementptr inbounds %"class.xmem::Benchmark", ptr %37, i32 0, i32 29
  store i8 1, ptr %453, align 2, !tbaa !53
  br label %454

454:                                              ; preds = %452, %449
  %455 = load i8, ptr @_ZN4xmem9g_verboseE, align 1, !tbaa !39, !range !40, !noundef !41
  %456 = trunc i8 %455 to i1
  br i1 %456, label %457, label %692

457:                                              ; preds = %454
  %458 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) @_ZSt4cout, ptr noundef @.str.12)
          to label %459 unwind label %481

459:                                              ; preds = %457
  %460 = load i32, ptr %14, align 4, !tbaa !42
  %461 = add i32 %460, 1
  %462 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEj(ptr noundef nonnull align 8 dereferenceable(8) %458, i32 noundef %461)
          to label %463 unwind label %481

463:                                              ; preds = %459
  %464 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) %462, ptr noundef @.str.13)
          to label %465 unwind label %481

465:                                              ; preds = %463
  %466 = load i32, ptr %24, align 4, !tbaa !42
  %467 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEj(ptr noundef nonnull align 8 dereferenceable(8) %464, i32 noundef %466)
          to label %468 unwind label %481

468:                                              ; preds = %465
  %469 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) %467, ptr noundef @.str.14)
          to label %470 unwind label %481

470:                                              ; preds = %468
  %471 = load i32, ptr %28, align 4, !tbaa !42
  %472 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEj(ptr noundef nonnull align 8 dereferenceable(8) %469, i32 noundef %471)
          to label %473 unwind label %481

473:                                              ; preds = %470
  %474 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) %472, ptr noundef @.str.15)
          to label %475 unwind label %481

475:                                              ; preds = %473
  %476 = load i8, ptr %23, align 1, !tbaa !39, !range !40, !noundef !41
  %477 = trunc i8 %476 to i1
  br i1 %477, label %478, label %485

478:                                              ; preds = %475
  %479 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) @_ZSt4cout, ptr noundef @.str.16)
          to label %480 unwind label %481

480:                                              ; preds = %478
  br label %485

481:                                              ; preds = %688, %685, %680, %672, %670, %662, %660, %655, %653, %651, %648, %643, %637, %635, %629, %627, %622, %620, %618, %615, %610, %607, %605, %602, %600, %595, %593, %591, %588, %583, %580, %578, %575, %573, %569, %567, %561, %558, %553, %545, %543, %535, %533, %531, %528, %523, %517, %515, %509, %507, %505, %502, %497, %494, %492, %489, %487, %485, %478, %473, %470, %468, %465, %463, %459, %457
  %482 = landingpad { ptr, i32 }
          cleanup
  %483 = extractvalue { ptr, i32 } %482, 0
  store ptr %483, ptr %12, align 8
  %484 = extractvalue { ptr, i32 } %482, 1
  store i32 %484, ptr %13, align 4
  br label %738

485:                                              ; preds = %480, %475
  %486 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEPFRSoS_E(ptr noundef nonnull align 8 dereferenceable(8) @_ZSt4cout, ptr noundef @_ZSt4endlIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_)
          to label %487 unwind label %481

487:                                              ; preds = %485
  %488 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) @_ZSt4cout, ptr noundef @.str.17)
          to label %489 unwind label %481

489:                                              ; preds = %487
  %490 = load i64, ptr %25, align 8, !tbaa !33
  %491 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEm(ptr noundef nonnull align 8 dereferenceable(8) %488, i64 noundef %490)
          to label %492 unwind label %481

492:                                              ; preds = %489
  %493 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) %491, ptr noundef @.str.18)
          to label %494 unwind label %481

494:                                              ; preds = %492
  %495 = load i64, ptr %26, align 8, !tbaa !33
  %496 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEm(ptr noundef nonnull align 8 dereferenceable(8) %493, i64 noundef %495)
          to label %497 unwind label %481

497:                                              ; preds = %494
  %498 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) %496, ptr noundef @.str.19)
          to label %499 unwind label %481

499:                                              ; preds = %497
  %500 = load i8, ptr %23, align 1, !tbaa !39, !range !40, !noundef !41
  %501 = trunc i8 %500 to i1
  br i1 %501, label %502, label %505

502:                                              ; preds = %499
  %503 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) @_ZSt4cout, ptr noundef @.str.16)
          to label %504 unwind label %481

504:                                              ; preds = %502
  br label %505

505:                                              ; preds = %504, %499
  %506 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEPFRSoS_E(ptr noundef nonnull align 8 dereferenceable(8) @_ZSt4cout, ptr noundef @_ZSt4endlIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_)
          to label %507 unwind label %481

507:                                              ; preds = %505
  %508 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) @_ZSt4cout, ptr noundef @.str.20)
          to label %509 unwind label %481

509:                                              ; preds = %507
  %510 = load i64, ptr %25, align 8, !tbaa !33
  %511 = uitofp i64 %510 to float
  %512 = load float, ptr @_ZN4xmem13g_ns_per_tickE, align 4, !tbaa !51
  %513 = fmul float %511, %512
  %514 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEf(ptr noundef nonnull align 8 dereferenceable(8) %508, float noundef %513)
          to label %515 unwind label %481

515:                                              ; preds = %509
  %516 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) %514, ptr noundef @.str.18)
          to label %517 unwind label %481

517:                                              ; preds = %515
  %518 = load i64, ptr %26, align 8, !tbaa !33
  %519 = uitofp i64 %518 to float
  %520 = load float, ptr @_ZN4xmem13g_ns_per_tickE, align 4, !tbaa !51
  %521 = fmul float %519, %520
  %522 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEf(ptr noundef nonnull align 8 dereferenceable(8) %516, float noundef %521)
          to label %523 unwind label %481

523:                                              ; preds = %517
  %524 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) %522, ptr noundef @.str.19)
          to label %525 unwind label %481

525:                                              ; preds = %523
  %526 = load i8, ptr %23, align 1, !tbaa !39, !range !40, !noundef !41
  %527 = trunc i8 %526 to i1
  br i1 %527, label %528, label %531

528:                                              ; preds = %525
  %529 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) @_ZSt4cout, ptr noundef @.str.16)
          to label %530 unwind label %481

530:                                              ; preds = %528
  br label %531

531:                                              ; preds = %530, %525
  %532 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEPFRSoS_E(ptr noundef nonnull align 8 dereferenceable(8) @_ZSt4cout, ptr noundef @_ZSt4endlIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_)
          to label %533 unwind label %481

533:                                              ; preds = %531
  %534 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) @_ZSt4cout, ptr noundef @.str.21)
          to label %535 unwind label %481

535:                                              ; preds = %533
  %536 = load i64, ptr %25, align 8, !tbaa !33
  %537 = uitofp i64 %536 to float
  %538 = load float, ptr @_ZN4xmem13g_ns_per_tickE, align 4, !tbaa !51
  %539 = fmul float %537, %538
  %540 = fpext float %539 to double
  %541 = fdiv double %540, 1.000000e+09
  %542 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEd(ptr noundef nonnull align 8 dereferenceable(8) %534, double noundef %541)
          to label %543 unwind label %481

543:                                              ; preds = %535
  %544 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) %542, ptr noundef @.str.18)
          to label %545 unwind label %481

545:                                              ; preds = %543
  %546 = load i64, ptr %26, align 8, !tbaa !33
  %547 = uitofp i64 %546 to float
  %548 = load float, ptr @_ZN4xmem13g_ns_per_tickE, align 4, !tbaa !51
  %549 = fmul float %547, %548
  %550 = fpext float %549 to double
  %551 = fdiv double %550, 1.000000e+09
  %552 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEd(ptr noundef nonnull align 8 dereferenceable(8) %544, double noundef %551)
          to label %553 unwind label %481

553:                                              ; preds = %545
  %554 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) %552, ptr noundef @.str.19)
          to label %555 unwind label %481

555:                                              ; preds = %553
  %556 = load i8, ptr %23, align 1, !tbaa !39, !range !40, !noundef !41
  %557 = trunc i8 %556 to i1
  br i1 %557, label %558, label %561

558:                                              ; preds = %555
  %559 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) @_ZSt4cout, ptr noundef @.str.16)
          to label %560 unwind label %481

560:                                              ; preds = %558
  br label %561

561:                                              ; preds = %560, %555
  %562 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEPFRSoS_E(ptr noundef nonnull align 8 dereferenceable(8) @_ZSt4cout, ptr noundef @_ZSt4endlIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_)
          to label %563 unwind label %481

563:                                              ; preds = %561
  %564 = getelementptr inbounds %"class.xmem::Benchmark", ptr %37, i32 0, i32 4
  %565 = load i32, ptr %564, align 4, !tbaa !32
  %566 = icmp ugt i32 %565, 1
  br i1 %566, label %567, label %691

567:                                              ; preds = %563
  %568 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) @_ZSt4cout, ptr noundef @.str.12)
          to label %569 unwind label %481

569:                                              ; preds = %567
  %570 = load i32, ptr %14, align 4, !tbaa !42
  %571 = add i32 %570, 1
  %572 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEj(ptr noundef nonnull align 8 dereferenceable(8) %568, i32 noundef %571)
          to label %573 unwind label %481

573:                                              ; preds = %569
  %574 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) %572, ptr noundef @.str.13)
          to label %575 unwind label %481

575:                                              ; preds = %573
  %576 = load i32, ptr %29, align 4, !tbaa !42
  %577 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEj(ptr noundef nonnull align 8 dereferenceable(8) %574, i32 noundef %576)
          to label %578 unwind label %481

578:                                              ; preds = %575
  %579 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) %577, ptr noundef @.str.22)
          to label %580 unwind label %481

580:                                              ; preds = %578
  %581 = load i32, ptr %32, align 4, !tbaa !42
  %582 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEj(ptr noundef nonnull align 8 dereferenceable(8) %579, i32 noundef %581)
          to label %583 unwind label %481

583:                                              ; preds = %580
  %584 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) %582, ptr noundef @.str.23)
          to label %585 unwind label %481

585:                                              ; preds = %583
  %586 = load i8, ptr %23, align 1, !tbaa !39, !range !40, !noundef !41
  %587 = trunc i8 %586 to i1
  br i1 %587, label %588, label %591

588:                                              ; preds = %585
  %589 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) @_ZSt4cout, ptr noundef @.str.16)
          to label %590 unwind label %481

590:                                              ; preds = %588
  br label %591

591:                                              ; preds = %590, %585
  %592 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEPFRSoS_E(ptr noundef nonnull align 8 dereferenceable(8) @_ZSt4cout, ptr noundef @_ZSt4endlIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_)
          to label %593 unwind label %481

593:                                              ; preds = %591
  %594 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) @_ZSt4cout, ptr noundef @.str.24)
          to label %595 unwind label %481

595:                                              ; preds = %593
  %596 = getelementptr inbounds %"class.xmem::Benchmark", ptr %37, i32 0, i32 4
  %597 = load i32, ptr %596, align 4, !tbaa !32
  %598 = sub i32 %597, 1
  %599 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEj(ptr noundef nonnull align 8 dereferenceable(8) %594, i32 noundef %598)
          to label %600 unwind label %481

600:                                              ; preds = %595
  %601 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) %599, ptr noundef @.str.25)
          to label %602 unwind label %481

602:                                              ; preds = %600
  %603 = load i64, ptr %30, align 8, !tbaa !33
  %604 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEm(ptr noundef nonnull align 8 dereferenceable(8) %601, i64 noundef %603)
          to label %605 unwind label %481

605:                                              ; preds = %602
  %606 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) %604, ptr noundef @.str.18)
          to label %607 unwind label %481

607:                                              ; preds = %605
  %608 = load i64, ptr %31, align 8, !tbaa !33
  %609 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEm(ptr noundef nonnull align 8 dereferenceable(8) %606, i64 noundef %608)
          to label %610 unwind label %481

610:                                              ; preds = %607
  %611 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) %609, ptr noundef @.str.19)
          to label %612 unwind label %481

612:                                              ; preds = %610
  %613 = load i8, ptr %23, align 1, !tbaa !39, !range !40, !noundef !41
  %614 = trunc i8 %613 to i1
  br i1 %614, label %615, label %618

615:                                              ; preds = %612
  %616 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) @_ZSt4cout, ptr noundef @.str.16)
          to label %617 unwind label %481

617:                                              ; preds = %615
  br label %618

618:                                              ; preds = %617, %612
  %619 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEPFRSoS_E(ptr noundef nonnull align 8 dereferenceable(8) @_ZSt4cout, ptr noundef @_ZSt4endlIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_)
          to label %620 unwind label %481

620:                                              ; preds = %618
  %621 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) @_ZSt4cout, ptr noundef @.str.26)
          to label %622 unwind label %481

622:                                              ; preds = %620
  %623 = getelementptr inbounds %"class.xmem::Benchmark", ptr %37, i32 0, i32 4
  %624 = load i32, ptr %623, align 4, !tbaa !32
  %625 = sub i32 %624, 1
  %626 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEj(ptr noundef nonnull align 8 dereferenceable(8) %621, i32 noundef %625)
          to label %627 unwind label %481

627:                                              ; preds = %622
  %628 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) %626, ptr noundef @.str.25)
          to label %629 unwind label %481

629:                                              ; preds = %627
  %630 = load i64, ptr %30, align 8, !tbaa !33
  %631 = uitofp i64 %630 to float
  %632 = load float, ptr @_ZN4xmem13g_ns_per_tickE, align 4, !tbaa !51
  %633 = fmul float %631, %632
  %634 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEf(ptr noundef nonnull align 8 dereferenceable(8) %628, float noundef %633)
          to label %635 unwind label %481

635:                                              ; preds = %629
  %636 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) %634, ptr noundef @.str.18)
          to label %637 unwind label %481

637:                                              ; preds = %635
  %638 = load i64, ptr %31, align 8, !tbaa !33
  %639 = uitofp i64 %638 to float
  %640 = load float, ptr @_ZN4xmem13g_ns_per_tickE, align 4, !tbaa !51
  %641 = fmul float %639, %640
  %642 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEf(ptr noundef nonnull align 8 dereferenceable(8) %636, float noundef %641)
          to label %643 unwind label %481

643:                                              ; preds = %637
  %644 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) %642, ptr noundef @.str.19)
          to label %645 unwind label %481

645:                                              ; preds = %643
  %646 = load i8, ptr %23, align 1, !tbaa !39, !range !40, !noundef !41
  %647 = trunc i8 %646 to i1
  br i1 %647, label %648, label %651

648:                                              ; preds = %645
  %649 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) @_ZSt4cout, ptr noundef @.str.16)
          to label %650 unwind label %481

650:                                              ; preds = %648
  br label %651

651:                                              ; preds = %650, %645
  %652 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEPFRSoS_E(ptr noundef nonnull align 8 dereferenceable(8) @_ZSt4cout, ptr noundef @_ZSt4endlIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_)
          to label %653 unwind label %481

653:                                              ; preds = %651
  %654 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) @_ZSt4cout, ptr noundef @.str.27)
          to label %655 unwind label %481

655:                                              ; preds = %653
  %656 = getelementptr inbounds %"class.xmem::Benchmark", ptr %37, i32 0, i32 4
  %657 = load i32, ptr %656, align 4, !tbaa !32
  %658 = sub i32 %657, 1
  %659 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEj(ptr noundef nonnull align 8 dereferenceable(8) %654, i32 noundef %658)
          to label %660 unwind label %481

660:                                              ; preds = %655
  %661 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) %659, ptr noundef @.str.25)
          to label %662 unwind label %481

662:                                              ; preds = %660
  %663 = load i64, ptr %30, align 8, !tbaa !33
  %664 = uitofp i64 %663 to float
  %665 = load float, ptr @_ZN4xmem13g_ns_per_tickE, align 4, !tbaa !51
  %666 = fmul float %664, %665
  %667 = fpext float %666 to double
  %668 = fdiv double %667, 1.000000e+09
  %669 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEd(ptr noundef nonnull align 8 dereferenceable(8) %661, double noundef %668)
          to label %670 unwind label %481

670:                                              ; preds = %662
  %671 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) %669, ptr noundef @.str.18)
          to label %672 unwind label %481

672:                                              ; preds = %670
  %673 = load i64, ptr %31, align 8, !tbaa !33
  %674 = uitofp i64 %673 to float
  %675 = load float, ptr @_ZN4xmem13g_ns_per_tickE, align 4, !tbaa !51
  %676 = fmul float %674, %675
  %677 = fpext float %676 to double
  %678 = fdiv double %677, 1.000000e+09
  %679 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEd(ptr noundef nonnull align 8 dereferenceable(8) %671, double noundef %678)
          to label %680 unwind label %481

680:                                              ; preds = %672
  %681 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) %679, ptr noundef @.str.19)
          to label %682 unwind label %481

682:                                              ; preds = %680
  %683 = load i8, ptr %23, align 1, !tbaa !39, !range !40, !noundef !41
  %684 = trunc i8 %683 to i1
  br i1 %684, label %685, label %688

685:                                              ; preds = %682
  %686 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) @_ZSt4cout, ptr noundef @.str.16)
          to label %687 unwind label %481

687:                                              ; preds = %685
  br label %688

688:                                              ; preds = %687, %682
  %689 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEPFRSoS_E(ptr noundef nonnull align 8 dereferenceable(8) @_ZSt4cout, ptr noundef @_ZSt4endlIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_)
          to label %690 unwind label %481

690:                                              ; preds = %688
  br label %691

691:                                              ; preds = %690, %563
  br label %692

692:                                              ; preds = %691, %454
  %693 = load i64, ptr %25, align 8, !tbaa !33
  %694 = uitofp i64 %693 to float
  %695 = load float, ptr @_ZN4xmem13g_ns_per_tickE, align 4, !tbaa !51
  %696 = fmul float %694, %695
  %697 = fpext float %696 to double
  %698 = load i32, ptr %28, align 4, !tbaa !42
  %699 = load i32, ptr %24, align 4, !tbaa !42
  %700 = mul i32 %698, %699
  %701 = uitofp i32 %700 to double
  %702 = fdiv double %697, %701
  %703 = getelementptr inbounds %"class.xmem::Benchmark", ptr %37, i32 0, i32 13
  %704 = load i32, ptr %14, align 4, !tbaa !42
  %705 = zext i32 %704 to i64
  %706 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt6vectorIdSaIdEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %703, i64 noundef %705) #8
  store double %702, ptr %706, align 8, !tbaa !49
  call void @llvm.lifetime.start.p0(i64 4, ptr %35) #8
  store i32 0, ptr %35, align 4, !tbaa !42
  br label %707

707:                                              ; preds = %731, %692
  %708 = load i32, ptr %35, align 4, !tbaa !42
  %709 = getelementptr inbounds %"class.xmem::Benchmark", ptr %37, i32 0, i32 4
  %710 = load i32, ptr %709, align 4, !tbaa !32
  %711 = icmp ult i32 %708, %710
  br i1 %711, label %713, label %712

712:                                              ; preds = %707
  store i32 20, ptr %7, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %35) #8
  br label %734

713:                                              ; preds = %707
  %714 = load i32, ptr %35, align 4, !tbaa !42
  %715 = zext i32 %714 to i64
  %716 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt6vectorIPN4xmem6ThreadESaIS2_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %11, i64 noundef %715) #8
  %717 = load ptr, ptr %716, align 8, !tbaa !5
  %718 = icmp eq ptr %717, null
  br i1 %718, label %720, label %719

719:                                              ; preds = %713
  call void @_ZN4xmem6ThreadD1Ev(ptr noundef nonnull align 8 dereferenceable(32) %717) #8
  call void @_ZdlPvm(ptr noundef %717, i64 noundef 32) #10
  br label %720

720:                                              ; preds = %719, %713
  %721 = load i32, ptr %35, align 4, !tbaa !42
  %722 = zext i32 %721 to i64
  %723 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt6vectorIPN4xmem12MemoryWorkerESaIS2_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %10, i64 noundef %722) #8
  %724 = load ptr, ptr %723, align 8, !tbaa !5
  %725 = icmp eq ptr %724, null
  br i1 %725, label %730, label %726

726:                                              ; preds = %720
  %727 = load ptr, ptr %724, align 8, !tbaa !54
  %728 = getelementptr inbounds ptr, ptr %727, i64 2
  %729 = load ptr, ptr %728, align 8
  call void %729(ptr noundef nonnull align 8 dereferenceable(106) %724) #8
  br label %730

730:                                              ; preds = %726, %720
  br label %731

731:                                              ; preds = %730
  %732 = load i32, ptr %35, align 4, !tbaa !42
  %733 = add i32 %732, 1
  store i32 %733, ptr %35, align 4, !tbaa !42
  br label %707, !llvm.loop !56

734:                                              ; preds = %712
  call void @_ZNSt6vectorIPN4xmem6ThreadESaIS2_EE5clearEv(ptr noundef nonnull align 8 dereferenceable(24) %11) #8
  call void @_ZNSt6vectorIPN4xmem12MemoryWorkerESaIS2_EE5clearEv(ptr noundef nonnull align 8 dereferenceable(24) %10) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %33) #8
  call void @llvm.lifetime.end.p0(i64 4, ptr %32) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %31) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %30) #8
  call void @llvm.lifetime.end.p0(i64 4, ptr %29) #8
  call void @llvm.lifetime.end.p0(i64 4, ptr %28) #8
  call void @llvm.lifetime.end.p0(i64 4, ptr %27) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %26) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %25) #8
  call void @llvm.lifetime.end.p0(i64 4, ptr %24) #8
  call void @llvm.lifetime.end.p0(i64 1, ptr %23) #8
  br label %735

735:                                              ; preds = %734
  %736 = load i32, ptr %14, align 4, !tbaa !42
  %737 = add i32 %736, 1
  store i32 %737, ptr %14, align 4, !tbaa !42
  br label %157, !llvm.loop !57

738:                                              ; preds = %481, %417
  call void @llvm.lifetime.end.p0(i64 8, ptr %33) #8
  call void @llvm.lifetime.end.p0(i64 4, ptr %32) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %31) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %30) #8
  call void @llvm.lifetime.end.p0(i64 4, ptr %29) #8
  br label %739

739:                                              ; preds = %738, %366
  call void @llvm.lifetime.end.p0(i64 4, ptr %28) #8
  br label %740

740:                                              ; preds = %739, %362
  call void @llvm.lifetime.end.p0(i64 4, ptr %27) #8
  br label %741

741:                                              ; preds = %740, %358
  call void @llvm.lifetime.end.p0(i64 8, ptr %26) #8
  br label %742

742:                                              ; preds = %741, %354
  call void @llvm.lifetime.end.p0(i64 8, ptr %25) #8
  br label %743

743:                                              ; preds = %742, %350
  call void @llvm.lifetime.end.p0(i64 4, ptr %24) #8
  call void @llvm.lifetime.end.p0(i64 1, ptr %23) #8
  br label %744

744:                                              ; preds = %743, %306, %283, %265
  call void @llvm.lifetime.end.p0(i64 4, ptr %14) #8
  br label %806

745:                                              ; preds = %162
  %746 = load i8, ptr @_ZN4xmem9g_verboseE, align 1, !tbaa !39, !range !40, !noundef !41
  %747 = trunc i8 %746 to i1
  br i1 %747, label %748, label %753

748:                                              ; preds = %745
  %749 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEPFRSoS_E(ptr noundef nonnull align 8 dereferenceable(8) @_ZSt4cout, ptr noundef @_ZSt4endlIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_)
          to label %750 unwind label %117

750:                                              ; preds = %748
  %751 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) @_ZSt4cout, ptr noundef @.str.28)
          to label %752 unwind label %117

752:                                              ; preds = %750
  br label %753

753:                                              ; preds = %752, %745
  %754 = invoke noundef zeroext i1 @_ZN4xmem9Benchmark16stopPowerThreadsEv(ptr noundef nonnull align 8 dereferenceable(315) %37)
          to label %755 unwind label %117

755:                                              ; preds = %753
  br i1 %754, label %769, label %756

756:                                              ; preds = %755
  %757 = load i8, ptr @_ZN4xmem9g_verboseE, align 1, !tbaa !39, !range !40, !noundef !41
  %758 = trunc i8 %757 to i1
  br i1 %758, label %759, label %764

759:                                              ; preds = %756
  %760 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) @_ZSt4cout, ptr noundef @.str.5)
          to label %761 unwind label %117

761:                                              ; preds = %759
  %762 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEPFRSoS_E(ptr noundef nonnull align 8 dereferenceable(8) %760, ptr noundef @_ZSt4endlIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_)
          to label %763 unwind label %117

763:                                              ; preds = %761
  br label %764

764:                                              ; preds = %763, %756
  %765 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) @_ZSt4cerr, ptr noundef @.str.29)
          to label %766 unwind label %117

766:                                              ; preds = %764
  %767 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEPFRSoS_E(ptr noundef nonnull align 8 dereferenceable(8) %765, ptr noundef @_ZSt4endlIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_)
          to label %768 unwind label %117

768:                                              ; preds = %766
  br label %778

769:                                              ; preds = %755
  %770 = load i8, ptr @_ZN4xmem9g_verboseE, align 1, !tbaa !39, !range !40, !noundef !41
  %771 = trunc i8 %770 to i1
  br i1 %771, label %772, label %777

772:                                              ; preds = %769
  %773 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) @_ZSt4cout, ptr noundef @.str.7)
          to label %774 unwind label %117

774:                                              ; preds = %772
  %775 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEPFRSoS_E(ptr noundef nonnull align 8 dereferenceable(8) %773, ptr noundef @_ZSt4endlIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_)
          to label %776 unwind label %117

776:                                              ; preds = %774
  br label %777

777:                                              ; preds = %776, %769
  br label %778

778:                                              ; preds = %777, %768
  %779 = getelementptr inbounds %"class.xmem::Benchmark", ptr %37, i32 0, i32 28
  store i8 1, ptr %779, align 1, !tbaa !58
  invoke void @_ZN4xmem9Benchmark14computeMetricsEv(ptr noundef nonnull align 8 dereferenceable(315) %37)
          to label %780 unwind label %117

780:                                              ; preds = %778
  call void @llvm.lifetime.start.p0(i64 4, ptr %36) #8
  store i32 0, ptr %36, align 4, !tbaa !42
  br label %781

781:                                              ; preds = %796, %780
  %782 = load i32, ptr %36, align 4, !tbaa !42
  %783 = getelementptr inbounds %"class.xmem::Benchmark", ptr %37, i32 0, i32 3
  %784 = load i32, ptr %783, align 8, !tbaa !43
  %785 = icmp ult i32 %782, %784
  br i1 %785, label %787, label %786

786:                                              ; preds = %781
  store i32 23, ptr %7, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %36) #8
  br label %799

787:                                              ; preds = %781
  %788 = getelementptr inbounds %"class.xmem::LatencyBenchmark", ptr %37, i32 0, i32 1
  %789 = load i32, ptr %36, align 4, !tbaa !42
  %790 = zext i32 %789 to i64
  %791 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt6vectorIdSaIdEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %788, i64 noundef %790) #8
  %792 = load double, ptr %791, align 8, !tbaa !49
  %793 = getelementptr inbounds %"class.xmem::LatencyBenchmark", ptr %37, i32 0, i32 2
  %794 = load double, ptr %793, align 8, !tbaa !59
  %795 = fadd double %794, %792
  store double %795, ptr %793, align 8, !tbaa !59
  br label %796

796:                                              ; preds = %787
  %797 = load i32, ptr %36, align 4, !tbaa !42
  %798 = add i32 %797, 1
  store i32 %798, ptr %36, align 4, !tbaa !42
  br label %781, !llvm.loop !60

799:                                              ; preds = %786
  %800 = getelementptr inbounds %"class.xmem::Benchmark", ptr %37, i32 0, i32 3
  %801 = load i32, ptr %800, align 8, !tbaa !43
  %802 = uitofp i32 %801 to double
  %803 = getelementptr inbounds %"class.xmem::LatencyBenchmark", ptr %37, i32 0, i32 2
  %804 = load double, ptr %803, align 8, !tbaa !59
  %805 = fdiv double %804, %802
  store double %805, ptr %803, align 8, !tbaa !59
  store i1 true, ptr %2, align 1
  store i32 1, ptr %7, align 4
  call void @_ZNSt6vectorIPN4xmem6ThreadESaIS2_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %11) #8
  call void @llvm.lifetime.end.p0(i64 24, ptr %11) #8
  call void @_ZNSt6vectorIPN4xmem12MemoryWorkerESaIS2_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %10) #8
  call void @llvm.lifetime.end.p0(i64 24, ptr %10) #8
  br label %807

806:                                              ; preds = %744, %117
  call void @_ZNSt6vectorIPN4xmem6ThreadESaIS2_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %11) #8
  call void @llvm.lifetime.end.p0(i64 24, ptr %11) #8
  call void @_ZNSt6vectorIPN4xmem12MemoryWorkerESaIS2_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %10) #8
  call void @llvm.lifetime.end.p0(i64 24, ptr %10) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %9) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %8) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %6) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %5) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %4) #8
  br label %810

807:                                              ; preds = %799, %107, %103, %84
  call void @llvm.lifetime.end.p0(i64 8, ptr %9) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %8) #8
  br label %808

808:                                              ; preds = %807, %59
  call void @llvm.lifetime.end.p0(i64 8, ptr %6) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %5) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %4) #8
  %809 = load i1, ptr %2, align 1
  ret i1 %809

810:                                              ; preds = %806
  %811 = load ptr, ptr %12, align 8
  %812 = load i32, ptr %13, align 4
  %813 = insertvalue { ptr, i32 } poison, ptr %811, 0
  %814 = insertvalue { ptr, i32 } %813, i32 %812, 1
  resume { ptr, i32 } %814
}

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

declare noundef i32 @_ZN4xmem13chasePointersEPmPS0_m(ptr noundef, ptr noundef, i64 noundef) #3

declare noundef i32 @_ZN4xmem19dummy_chasePointersEPmPS0_m(ptr noundef, ptr noundef, i64 noundef) #3

declare noundef i32 @_ZN4xmem26forwSequentialWrite_Word32EPvS0_(ptr noundef, ptr noundef) #3

declare noundef zeroext i1 @_ZN4xmem32build_random_pointer_permutationEPvS0_NS_12chunk_size_tE(ptr noundef, ptr noundef, i32 noundef) #3

declare noundef i32 @_ZN4xmem25forwSequentialRead_Word32EPvS0_(ptr noundef, ptr noundef) #3

declare noundef i32 @_ZN4xmem31dummy_forwSequentialLoop_Word32EPvS0_(ptr noundef, ptr noundef) #3

declare noundef i32 @_ZN4xmem32forwSequentialRead_Word32_Delay1EPvS0_(ptr noundef, ptr noundef) #3

declare noundef i32 @_ZN4xmem38dummy_forwSequentialLoop_Word32_Delay1EPvS0_(ptr noundef, ptr noundef) #3

declare noundef i32 @_ZN4xmem32forwSequentialRead_Word32_Delay2EPvS0_(ptr noundef, ptr noundef) #3

declare noundef i32 @_ZN4xmem38dummy_forwSequentialLoop_Word32_Delay2EPvS0_(ptr noundef, ptr noundef) #3

declare noundef i32 @_ZN4xmem32forwSequentialRead_Word32_Delay4EPvS0_(ptr noundef, ptr noundef) #3

declare noundef i32 @_ZN4xmem38dummy_forwSequentialLoop_Word32_Delay4EPvS0_(ptr noundef, ptr noundef) #3

declare noundef i32 @_ZN4xmem32forwSequentialRead_Word32_Delay8EPvS0_(ptr noundef, ptr noundef) #3

declare noundef i32 @_ZN4xmem38dummy_forwSequentialLoop_Word32_Delay8EPvS0_(ptr noundef, ptr noundef) #3

declare noundef i32 @_ZN4xmem33forwSequentialRead_Word32_Delay16EPvS0_(ptr noundef, ptr noundef) #3

declare noundef i32 @_ZN4xmem39dummy_forwSequentialLoop_Word32_Delay16EPvS0_(ptr noundef, ptr noundef) #3

declare noundef i32 @_ZN4xmem33forwSequentialRead_Word32_Delay32EPvS0_(ptr noundef, ptr noundef) #3

declare noundef i32 @_ZN4xmem39dummy_forwSequentialLoop_Word32_Delay32EPvS0_(ptr noundef, ptr noundef) #3

declare noundef i32 @_ZN4xmem33forwSequentialRead_Word32_Delay64EPvS0_(ptr noundef, ptr noundef) #3

declare noundef i32 @_ZN4xmem39dummy_forwSequentialLoop_Word32_Delay64EPvS0_(ptr noundef, ptr noundef) #3

declare noundef i32 @_ZN4xmem34forwSequentialRead_Word32_Delay128EPvS0_(ptr noundef, ptr noundef) #3

declare noundef i32 @_ZN4xmem40dummy_forwSequentialLoop_Word32_Delay128EPvS0_(ptr noundef, ptr noundef) #3

declare noundef i32 @_ZN4xmem34forwSequentialRead_Word32_Delay256EPvS0_(ptr noundef, ptr noundef) #3

declare noundef i32 @_ZN4xmem40dummy_forwSequentialLoop_Word32_Delay256EPvS0_(ptr noundef, ptr noundef) #3

declare noundef i32 @_ZN4xmem34forwSequentialRead_Word32_Delay512EPvS0_(ptr noundef, ptr noundef) #3

declare noundef i32 @_ZN4xmem44dummy_forwSequentialLoop_Word32_Delay512plusEPvS0_(ptr noundef, ptr noundef) #3

declare noundef i32 @_ZN4xmem35forwSequentialRead_Word32_Delay1024EPvS0_(ptr noundef, ptr noundef) #3

declare noundef i32 @_ZN4xmem25forwSequentialRead_Word64EPvS0_(ptr noundef, ptr noundef) #3

declare noundef i32 @_ZN4xmem31dummy_forwSequentialLoop_Word64EPvS0_(ptr noundef, ptr noundef) #3

declare noundef i32 @_ZN4xmem32forwSequentialRead_Word64_Delay1EPvS0_(ptr noundef, ptr noundef) #3

declare noundef i32 @_ZN4xmem38dummy_forwSequentialLoop_Word64_Delay1EPvS0_(ptr noundef, ptr noundef) #3

declare noundef i32 @_ZN4xmem32forwSequentialRead_Word64_Delay2EPvS0_(ptr noundef, ptr noundef) #3

declare noundef i32 @_ZN4xmem38dummy_forwSequentialLoop_Word64_Delay2EPvS0_(ptr noundef, ptr noundef) #3

declare noundef i32 @_ZN4xmem32forwSequentialRead_Word64_Delay4EPvS0_(ptr noundef, ptr noundef) #3

declare noundef i32 @_ZN4xmem38dummy_forwSequentialLoop_Word64_Delay4EPvS0_(ptr noundef, ptr noundef) #3

declare noundef i32 @_ZN4xmem32forwSequentialRead_Word64_Delay8EPvS0_(ptr noundef, ptr noundef) #3

declare noundef i32 @_ZN4xmem38dummy_forwSequentialLoop_Word64_Delay8EPvS0_(ptr noundef, ptr noundef) #3

declare noundef i32 @_ZN4xmem33forwSequentialRead_Word64_Delay16EPvS0_(ptr noundef, ptr noundef) #3

declare noundef i32 @_ZN4xmem39dummy_forwSequentialLoop_Word64_Delay16EPvS0_(ptr noundef, ptr noundef) #3

declare noundef i32 @_ZN4xmem33forwSequentialRead_Word64_Delay32EPvS0_(ptr noundef, ptr noundef) #3

declare noundef i32 @_ZN4xmem39dummy_forwSequentialLoop_Word64_Delay32EPvS0_(ptr noundef, ptr noundef) #3

declare noundef i32 @_ZN4xmem33forwSequentialRead_Word64_Delay64EPvS0_(ptr noundef, ptr noundef) #3

declare noundef i32 @_ZN4xmem39dummy_forwSequentialLoop_Word64_Delay64EPvS0_(ptr noundef, ptr noundef) #3

declare noundef i32 @_ZN4xmem34forwSequentialRead_Word64_Delay128EPvS0_(ptr noundef, ptr noundef) #3

declare noundef i32 @_ZN4xmem40dummy_forwSequentialLoop_Word64_Delay128EPvS0_(ptr noundef, ptr noundef) #3

declare noundef i32 @_ZN4xmem34forwSequentialRead_Word64_Delay256EPvS0_(ptr noundef, ptr noundef) #3

declare noundef i32 @_ZN4xmem44dummy_forwSequentialLoop_Word64_Delay256plusEPvS0_(ptr noundef, ptr noundef) #3

declare noundef i32 @_ZN4xmem34forwSequentialRead_Word64_Delay512EPvS0_(ptr noundef, ptr noundef) #3

declare noundef i32 @_ZN4xmem35forwSequentialRead_Word64_Delay1024EPvS0_(ptr noundef, ptr noundef) #3

; Function Attrs: mustprogress nounwind uwtable
declare dso_local void @_ZNSt6vectorIPN4xmem12MemoryWorkerESaIS2_EEC2Ev(ptr noundef nonnull align 8 dereferenceable(24)) unnamed_addr #4 align 2

; Function Attrs: mustprogress nounwind uwtable
declare dso_local void @_ZNSt6vectorIPN4xmem6ThreadESaIS2_EEC2Ev(ptr noundef nonnull align 8 dereferenceable(24)) unnamed_addr #4 align 2

declare noundef zeroext i1 @_ZN4xmem9Benchmark17startPowerThreadsEv(ptr noundef nonnull align 8 dereferenceable(315)) #3

declare noundef i32 @_ZN4xmem19cpu_id_in_numa_nodeEjj(i32 noundef, i32 noundef) #3

; Function Attrs: mustprogress uwtable
declare dso_local void @_ZNSt6vectorIPN4xmem12MemoryWorkerESaIS2_EE9push_backEOS2_(ptr noundef nonnull align 8 dereferenceable(24), ptr noundef nonnull align 8 dereferenceable(8)) #1 align 2

; Function Attrs: nobuiltin allocsize(0)
declare noundef nonnull ptr @_Znwm(i64 noundef) #5

declare void @_ZN4xmem13LatencyWorkerC1EPvmPFiPmPS2_mES5_i(ptr noundef nonnull align 8 dereferenceable(128), ptr noundef, i64 noundef, ptr noundef, ptr noundef, i32 noundef) unnamed_addr #3

; Function Attrs: nobuiltin nounwind
declare void @_ZdlPvm(ptr noundef, i64 noundef) #6

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

declare void @_ZN4xmem10LoadWorkerC1EPvmPFiS1_S1_ES3_i(ptr noundef nonnull align 8 dereferenceable(144), ptr noundef, i64 noundef, ptr noundef, ptr noundef, i32 noundef) unnamed_addr #3

; Function Attrs: mustprogress uwtable
declare dso_local void @_ZNSt6vectorIPN4xmem6ThreadESaIS2_EE9push_backEOS2_(ptr noundef nonnull align 8 dereferenceable(24), ptr noundef nonnull align 8 dereferenceable(8)) #1 align 2

; Function Attrs: mustprogress nounwind uwtable
declare dso_local noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt6vectorIPN4xmem12MemoryWorkerESaIS2_EEixEm(ptr noundef nonnull align 8 dereferenceable(24), i64 noundef) #4 align 2

declare void @_ZN4xmem6ThreadC1EPNS_8RunnableE(ptr noundef nonnull align 8 dereferenceable(32), ptr noundef) unnamed_addr #3

; Function Attrs: mustprogress nounwind uwtable
declare dso_local noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt6vectorIPN4xmem6ThreadESaIS2_EEixEm(ptr noundef nonnull align 8 dereferenceable(24), i64 noundef) #4 align 2

declare noundef zeroext i1 @_ZN4xmem6Thread16create_and_startEv(ptr noundef nonnull align 8 dereferenceable(32)) #3

declare noundef zeroext i1 @_ZN4xmem6Thread4joinEv(ptr noundef nonnull align 8 dereferenceable(32)) #3

declare noundef i32 @_ZN4xmem12MemoryWorker9getPassesEv(ptr noundef nonnull align 8 dereferenceable(106)) #3

declare noundef i64 @_ZN4xmem12MemoryWorker16getAdjustedTicksEv(ptr noundef nonnull align 8 dereferenceable(106)) #3

declare noundef i64 @_ZN4xmem12MemoryWorker20getElapsedDummyTicksEv(ptr noundef nonnull align 8 dereferenceable(106)) #3

declare noundef i32 @_ZN4xmem12MemoryWorker15getBytesPerPassEv(ptr noundef nonnull align 8 dereferenceable(106)) #3

declare noundef zeroext i1 @_ZN4xmem12MemoryWorker10hadWarningEv(ptr noundef nonnull align 8 dereferenceable(106)) #3

; Function Attrs: mustprogress nounwind uwtable
declare dso_local noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt6vectorIdSaIdEEixEm(ptr noundef nonnull align 8 dereferenceable(24), i64 noundef) #4 align 2

; Function Attrs: mustprogress uwtable
declare noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEm(ptr noundef nonnull align 8 dereferenceable(8), i64 noundef) #1 align 2

; Function Attrs: mustprogress uwtable
declare noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEf(ptr noundef nonnull align 8 dereferenceable(8), float noundef) #1 align 2

; Function Attrs: mustprogress uwtable
declare noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEd(ptr noundef nonnull align 8 dereferenceable(8), double noundef) #1 align 2

; Function Attrs: nounwind
declare void @_ZN4xmem6ThreadD1Ev(ptr noundef nonnull align 8 dereferenceable(32)) unnamed_addr #7

; Function Attrs: mustprogress nounwind uwtable
declare dso_local void @_ZNSt6vectorIPN4xmem6ThreadESaIS2_EE5clearEv(ptr noundef nonnull align 8 dereferenceable(24)) #4 align 2

; Function Attrs: mustprogress nounwind uwtable
declare dso_local void @_ZNSt6vectorIPN4xmem12MemoryWorkerESaIS2_EE5clearEv(ptr noundef nonnull align 8 dereferenceable(24)) #4 align 2

declare noundef zeroext i1 @_ZN4xmem9Benchmark16stopPowerThreadsEv(ptr noundef nonnull align 8 dereferenceable(315)) #3

declare void @_ZN4xmem9Benchmark14computeMetricsEv(ptr noundef nonnull align 8 dereferenceable(315)) #3

; Function Attrs: mustprogress nounwind uwtable
declare dso_local void @_ZNSt6vectorIPN4xmem6ThreadESaIS2_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24)) unnamed_addr #4 align 2

; Function Attrs: mustprogress nounwind uwtable
declare dso_local void @_ZNSt6vectorIPN4xmem12MemoryWorkerESaIS2_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24)) unnamed_addr #4 align 2

attributes #0 = { 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 #1 = { 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 = { nocallback nofree nosync nounwind willreturn memory(argmem: readwrite) }
attributes #3 = { "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }
attributes #4 = { mustprogress nounwind uwtable "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }
attributes #5 = { nobuiltin allocsize(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 #6 = { nobuiltin nounwind "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 #7 = { nounwind "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 #8 = { nounwind }
attributes #9 = { builtin allocsize(0) }
attributes #10 = { builtin 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, !11, i64 16}
!10 = !{!"_ZTSN4xmem9BenchmarkE", !6, i64 8, !11, i64 16, !12, i64 24, !12, i64 28, !12, i64 32, !12, i64 36, !13, i64 40, !14, i64 44, !15, i64 48, !12, i64 52, !16, i64 56, !20, i64 80, !24, i64 104, !28, i64 128, !28, i64 136, !28, i64 144, !28, i64 152, !28, i64 160, !28, i64 168, !28, i64 176, !28, i64 184, !28, i64 192, !29, i64 200, !24, i64 232, !24, i64 256, !29, i64 280, !31, i64 312, !31, i64 313, !31, i64 314}
!11 = !{!"long", !7, i64 0}
!12 = !{!"int", !7, i64 0}
!13 = !{!"_ZTSN4xmem14pattern_mode_tE", !7, i64 0}
!14 = !{!"_ZTSN4xmem9rw_mode_tE", !7, i64 0}
!15 = !{!"_ZTSN4xmem12chunk_size_tE", !7, i64 0}
!16 = !{!"_ZTSSt6vectorIPN4xmem11PowerReaderESaIS2_EE", !17, i64 0}
!17 = !{!"_ZTSSt12_Vector_baseIPN4xmem11PowerReaderESaIS2_EE", !18, i64 0}
!18 = !{!"_ZTSNSt12_Vector_baseIPN4xmem11PowerReaderESaIS2_EE12_Vector_implE", !19, i64 0}
!19 = !{!"_ZTSNSt12_Vector_baseIPN4xmem11PowerReaderESaIS2_EE17_Vector_impl_dataE", !6, i64 0, !6, i64 8, !6, i64 16}
!20 = !{!"_ZTSSt6vectorIPN4xmem6ThreadESaIS2_EE", !21, i64 0}
!21 = !{!"_ZTSSt12_Vector_baseIPN4xmem6ThreadESaIS2_EE", !22, i64 0}
!22 = !{!"_ZTSNSt12_Vector_baseIPN4xmem6ThreadESaIS2_EE12_Vector_implE", !23, i64 0}
!23 = !{!"_ZTSNSt12_Vector_baseIPN4xmem6ThreadESaIS2_EE17_Vector_impl_dataE", !6, i64 0, !6, i64 8, !6, i64 16}
!24 = !{!"_ZTSSt6vectorIdSaIdEE", !25, i64 0}
!25 = !{!"_ZTSSt12_Vector_baseIdSaIdEE", !26, i64 0}
!26 = !{!"_ZTSNSt12_Vector_baseIdSaIdEE12_Vector_implE", !27, i64 0}
!27 = !{!"_ZTSNSt12_Vector_baseIdSaIdEE17_Vector_impl_dataE", !6, i64 0, !6, i64 8, !6, i64 16}
!28 = !{!"double", !7, i64 0}
!29 = !{!"_ZTSNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE", !30, i64 0, !11, i64 8, !7, i64 16}
!30 = !{!"_ZTSNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE12_Alloc_hiderE", !6, i64 0}
!31 = !{!"bool", !7, i64 0}
!32 = !{!10, !12, i64 28}
!33 = !{!11, !11, i64 0}
!34 = !{!10, !6, i64 8}
!35 = !{!10, !15, i64 48}
!36 = !{!37, !12, i64 352}
!37 = !{!"_ZTSN4xmem35DelayInjectedLoadedLatencyBenchmarkE", !38, i64 0, !12, i64 352}
!38 = !{!"_ZTSN4xmem16LatencyBenchmarkE", !10, i64 0, !24, i64 320, !28, i64 344}
!39 = !{!31, !31, i64 0}
!40 = !{i8 0, i8 2}
!41 = !{}
!42 = !{!12, !12, i64 0}
!43 = !{!10, !12, i64 24}
!44 = !{!10, !12, i64 36}
!45 = distinct !{!45, !46}
!46 = !{!"llvm.loop.mustprogress"}
!47 = distinct !{!47, !46}
!48 = distinct !{!48, !46}
!49 = !{!28, !28, i64 0}
!50 = distinct !{!50, !46}
!51 = !{!52, !52, i64 0}
!52 = !{!"float", !7, i64 0}
!53 = !{!10, !31, i64 314}
!54 = !{!55, !55, i64 0}
!55 = !{!"vtable pointer", !8, i64 0}
!56 = distinct !{!56, !46}
!57 = distinct !{!57, !46}
!58 = !{!10, !31, i64 313}
!59 = !{!38, !28, i64 344}
!60 = distinct !{!60, !46}


; 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"

%"class.std::basic_ostream" = type { ptr, %"class.std::basic_ios" }
%"class.std::basic_ios" = type { %"class.std::ios_base", ptr, i8, i8, ptr, ptr, ptr, ptr }
%"class.std::ios_base" = type { ptr, i64, i64, i32, i32, i32, ptr, %"struct.std::ios_base::_Words", [8 x %"struct.std::ios_base::_Words"], i32, ptr, %"class.std::locale" }
%"struct.std::ios_base::_Words" = type { ptr, i64 }
%"class.std::locale" = type { ptr }
%"class.std::vector.13" = type { %"struct.std::_Vector_base.14" }
%"struct.std::_Vector_base.14" = type { %"struct.std::_Vector_base<xmem::MemoryWorker *, std::allocator<xmem::MemoryWorker *>>::_Vector_impl" }
%"struct.std::_Vector_base<xmem::MemoryWorker *, std::allocator<xmem::MemoryWorker *>>::_Vector_impl" = type { %"struct.std::_Vector_base<xmem::MemoryWorker *, std::allocator<xmem::MemoryWorker *>>::_Vector_impl_data" }
%"struct.std::_Vector_base<xmem::MemoryWorker *, std::allocator<xmem::MemoryWorker *>>::_Vector_impl_data" = type { ptr, ptr, ptr }
%"class.std::vector.3" = type { %"struct.std::_Vector_base.4" }
%"struct.std::_Vector_base.4" = type { %"struct.std::_Vector_base<xmem::Thread *, std::allocator<xmem::Thread *>>::_Vector_impl" }
%"struct.std::_Vector_base<xmem::Thread *, std::allocator<xmem::Thread *>>::_Vector_impl" = type { %"struct.std::_Vector_base<xmem::Thread *, std::allocator<xmem::Thread *>>::_Vector_impl_data" }
%"struct.std::_Vector_base<xmem::Thread *, std::allocator<xmem::Thread *>>::_Vector_impl_data" = type { ptr, ptr, ptr }

@_ZSt4cout = external global %"class.std::basic_ostream", align 8
@_ZSt4cerr = external global %"class.std::basic_ostream", align 8
@.str.1 = external hidden unnamed_addr constant [88 x i8], align 1
@.str.2 = external hidden unnamed_addr constant [52 x i8], align 1
@.str.3 = external hidden unnamed_addr constant [99 x i8], align 1
@_ZN4xmem9g_verboseE = external local_unnamed_addr global i8, align 1
@.str.4 = external hidden unnamed_addr constant [38 x i8], align 1
@.str.5 = external hidden unnamed_addr constant [5 x i8], align 1
@.str.6 = external hidden unnamed_addr constant [40 x i8], align 1
@.str.7 = external hidden unnamed_addr constant [5 x i8], align 1
@.str.8 = external hidden unnamed_addr constant [19 x i8], align 1
@.str.9 = external hidden unnamed_addr constant [37 x i8], align 1
@.str.10 = external hidden unnamed_addr constant [15 x i8], align 1
@.str.11 = external hidden unnamed_addr constant [55 x i8], align 1
@_ZN4xmem13g_ns_per_tickE = external local_unnamed_addr global float, align 4
@.str.12 = external hidden unnamed_addr constant [6 x i8], align 1
@.str.13 = external hidden unnamed_addr constant [6 x i8], align 1
@.str.14 = external hidden unnamed_addr constant [35 x i8], align 1
@.str.15 = external hidden unnamed_addr constant [20 x i8], align 1
@.str.16 = external hidden unnamed_addr constant [12 x i8], align 1
@.str.17 = external hidden unnamed_addr constant [23 x i8], align 1
@.str.18 = external hidden unnamed_addr constant [16 x i8], align 1
@.str.19 = external hidden unnamed_addr constant [2 x i8], align 1
@.str.20 = external hidden unnamed_addr constant [14 x i8], align 1
@.str.21 = external hidden unnamed_addr constant [15 x i8], align 1
@.str.22 = external hidden unnamed_addr constant [37 x i8], align 1
@.str.23 = external hidden unnamed_addr constant [17 x i8], align 1
@.str.24 = external hidden unnamed_addr constant [34 x i8], align 1
@.str.25 = external hidden unnamed_addr constant [13 x i8], align 1
@.str.26 = external hidden unnamed_addr constant [25 x i8], align 1
@.str.27 = external hidden unnamed_addr constant [26 x i8], align 1
@.str.28 = external hidden unnamed_addr constant [38 x i8], align 1
@.str.29 = external hidden unnamed_addr constant [51 x i8], align 1

declare i32 @__gxx_personality_v0(...)

; Function Attrs: inlinehint mustprogress uwtable
declare noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8), ptr noundef) local_unnamed_addr #0

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

; Function Attrs: mustprogress uwtable
declare noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEPFRSoS_E(ptr noundef nonnull align 8 dereferenceable(8), ptr noundef) local_unnamed_addr #1 align 2

; Function Attrs: inlinehint mustprogress uwtable
declare noundef nonnull align 8 dereferenceable(8) ptr @_ZSt4endlIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_(ptr noundef nonnull align 8 dereferenceable(8)) #0

; Function Attrs: mustprogress uwtable
define dso_local noundef zeroext i1 @_ZN4xmem35DelayInjectedLoadedLatencyBenchmark7runCoreEv(ptr noundef nonnull align 8 dereferenceable(356) %0) unnamed_addr #1 align 2 personality ptr @__gxx_personality_v0 {
  %2 = alloca %"class.std::vector.13", align 8
  %3 = alloca %"class.std::vector.3", align 8
  %4 = alloca ptr, align 8
  %5 = alloca ptr, align 8
  %6 = alloca ptr, align 8
  %7 = getelementptr inbounds i8, ptr %0, i64 16
  %8 = load i64, ptr %7, align 8, !tbaa !5
  %9 = getelementptr inbounds i8, ptr %0, i64 28
  %10 = load i32, ptr %9, align 4, !tbaa !31
  %11 = zext i32 %10 to i64
  %12 = udiv i64 %8, %11
  %13 = getelementptr inbounds i8, ptr %0, i64 8
  %14 = load ptr, ptr %13, align 8, !tbaa !32
  %15 = getelementptr inbounds i8, ptr %14, i64 %8
  %16 = tail call noundef i32 @_ZN4xmem26forwSequentialWrite_Word32EPvS0_(ptr noundef %14, ptr noundef %15)
  %17 = load ptr, ptr %13, align 8, !tbaa !32
  %18 = getelementptr inbounds i8, ptr %17, i64 %12
  %19 = tail call noundef zeroext i1 @_ZN4xmem32build_random_pointer_permutationEPvS0_NS_12chunk_size_tE(ptr noundef %17, ptr noundef %18, i32 noundef 1)
  br i1 %19, label %23, label %20

20:                                               ; preds = %1
  %21 = tail call noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) @_ZSt4cerr, ptr noundef nonnull @.str.1)
  %22 = tail call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEPFRSoS_E(ptr noundef nonnull align 8 dereferenceable(8) %21, ptr noundef nonnull @_ZSt4endlIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_)
  br label %529

23:                                               ; preds = %1
  %24 = load i32, ptr %9, align 4, !tbaa !31
  %25 = icmp ugt i32 %24, 1
  br i1 %25, label %26, label %66

26:                                               ; preds = %23
  %27 = getelementptr inbounds i8, ptr %0, i64 48
  %28 = load i32, ptr %27, align 8, !tbaa !33
  switch i32 %28, label %63 [
    i32 0, label %29
    i32 1, label %46
  ]

29:                                               ; preds = %26
  %30 = getelementptr inbounds i8, ptr %0, i64 352
  %31 = load i32, ptr %30, align 8, !tbaa !34
  switch i32 %31, label %43 [
    i32 0, label %66
    i32 1, label %32
    i32 2, label %33
    i32 4, label %34
    i32 8, label %35
    i32 16, label %36
    i32 32, label %37
    i32 64, label %38
    i32 128, label %39
    i32 256, label %40
    i32 512, label %41
    i32 1024, label %42
  ]

32:                                               ; preds = %29
  br label %66

33:                                               ; preds = %29
  br label %66

34:                                               ; preds = %29
  br label %66

35:                                               ; preds = %29
  br label %66

36:                                               ; preds = %29
  br label %66

37:                                               ; preds = %29
  br label %66

38:                                               ; preds = %29
  br label %66

39:                                               ; preds = %29
  br label %66

40:                                               ; preds = %29
  br label %66

41:                                               ; preds = %29
  br label %66

42:                                               ; preds = %29
  br label %66

43:                                               ; preds = %29
  %44 = tail call noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) @_ZSt4cerr, ptr noundef nonnull @.str.2)
  %45 = tail call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEPFRSoS_E(ptr noundef nonnull align 8 dereferenceable(8) %44, ptr noundef nonnull @_ZSt4endlIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_)
  br label %529

46:                                               ; preds = %26
  %47 = getelementptr inbounds i8, ptr %0, i64 352
  %48 = load i32, ptr %47, align 8, !tbaa !34
  switch i32 %48, label %60 [
    i32 0, label %66
    i32 1, label %49
    i32 2, label %50
    i32 4, label %51
    i32 8, label %52
    i32 16, label %53
    i32 32, label %54
    i32 64, label %55
    i32 128, label %56
    i32 256, label %57
    i32 512, label %58
    i32 1024, label %59
  ]

49:                                               ; preds = %46
  br label %66

50:                                               ; preds = %46
  br label %66

51:                                               ; preds = %46
  br label %66

52:                                               ; preds = %46
  br label %66

53:                                               ; preds = %46
  br label %66

54:                                               ; preds = %46
  br label %66

55:                                               ; preds = %46
  br label %66

56:                                               ; preds = %46
  br label %66

57:                                               ; preds = %46
  br label %66

58:                                               ; preds = %46
  br label %66

59:                                               ; preds = %46
  br label %66

60:                                               ; preds = %46
  %61 = tail call noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) @_ZSt4cerr, ptr noundef nonnull @.str.2)
  %62 = tail call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEPFRSoS_E(ptr noundef nonnull align 8 dereferenceable(8) %61, ptr noundef nonnull @_ZSt4endlIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_)
  br label %529

63:                                               ; preds = %26
  %64 = tail call noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) @_ZSt4cerr, ptr noundef nonnull @.str.3)
  %65 = tail call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEPFRSoS_E(ptr noundef nonnull align 8 dereferenceable(8) %64, ptr noundef nonnull @_ZSt4endlIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_)
  br label %529

66:                                               ; preds = %46, %29, %42, %41, %40, %39, %38, %37, %36, %35, %34, %33, %32, %59, %58, %57, %56, %55, %54, %53, %52, %51, %50, %49, %23
  %.095 = phi ptr [ @_ZN4xmem44dummy_forwSequentialLoop_Word64_Delay256plusEPvS0_, %59 ], [ @_ZN4xmem44dummy_forwSequentialLoop_Word64_Delay256plusEPvS0_, %58 ], [ @_ZN4xmem44dummy_forwSequentialLoop_Word64_Delay256plusEPvS0_, %57 ], [ @_ZN4xmem40dummy_forwSequentialLoop_Word64_Delay128EPvS0_, %56 ], [ @_ZN4xmem39dummy_forwSequentialLoop_Word64_Delay64EPvS0_, %55 ], [ @_ZN4xmem39dummy_forwSequentialLoop_Word64_Delay32EPvS0_, %54 ], [ @_ZN4xmem39dummy_forwSequentialLoop_Word64_Delay16EPvS0_, %53 ], [ @_ZN4xmem38dummy_forwSequentialLoop_Word64_Delay8EPvS0_, %52 ], [ @_ZN4xmem38dummy_forwSequentialLoop_Word64_Delay4EPvS0_, %51 ], [ @_ZN4xmem38dummy_forwSequentialLoop_Word64_Delay2EPvS0_, %50 ], [ @_ZN4xmem38dummy_forwSequentialLoop_Word64_Delay1EPvS0_, %49 ], [ @_ZN4xmem44dummy_forwSequentialLoop_Word32_Delay512plusEPvS0_, %42 ], [ @_ZN4xmem44dummy_forwSequentialLoop_Word32_Delay512plusEPvS0_, %41 ], [ @_ZN4xmem40dummy_forwSequentialLoop_Word32_Delay256EPvS0_, %40 ], [ @_ZN4xmem40dummy_forwSequentialLoop_Word32_Delay128EPvS0_, %39 ], [ @_ZN4xmem39dummy_forwSequentialLoop_Word32_Delay64EPvS0_, %38 ], [ @_ZN4xmem39dummy_forwSequentialLoop_Word32_Delay32EPvS0_, %37 ], [ @_ZN4xmem39dummy_forwSequentialLoop_Word32_Delay16EPvS0_, %36 ], [ @_ZN4xmem38dummy_forwSequentialLoop_Word32_Delay8EPvS0_, %35 ], [ @_ZN4xmem38dummy_forwSequentialLoop_Word32_Delay4EPvS0_, %34 ], [ @_ZN4xmem38dummy_forwSequentialLoop_Word32_Delay2EPvS0_, %33 ], [ @_ZN4xmem38dummy_forwSequentialLoop_Word32_Delay1EPvS0_, %32 ], [ null, %23 ], [ @_ZN4xmem31dummy_forwSequentialLoop_Word32EPvS0_, %29 ], [ @_ZN4xmem31dummy_forwSequentialLoop_Word64EPvS0_, %46 ]
  %.094 = phi ptr [ @_ZN4xmem35forwSequentialRead_Word64_Delay1024EPvS0_, %59 ], [ @_ZN4xmem34forwSequentialRead_Word64_Delay512EPvS0_, %58 ], [ @_ZN4xmem34forwSequentialRead_Word64_Delay256EPvS0_, %57 ], [ @_ZN4xmem34forwSequentialRead_Word64_Delay128EPvS0_, %56 ], [ @_ZN4xmem33forwSequentialRead_Word64_Delay64EPvS0_, %55 ], [ @_ZN4xmem33forwSequentialRead_Word64_Delay32EPvS0_, %54 ], [ @_ZN4xmem33forwSequentialRead_Word64_Delay16EPvS0_, %53 ], [ @_ZN4xmem32forwSequentialRead_Word64_Delay8EPvS0_, %52 ], [ @_ZN4xmem32forwSequentialRead_Word64_Delay4EPvS0_, %51 ], [ @_ZN4xmem32forwSequentialRead_Word64_Delay2EPvS0_, %50 ], [ @_ZN4xmem32forwSequentialRead_Word64_Delay1EPvS0_, %49 ], [ @_ZN4xmem35forwSequentialRead_Word32_Delay1024EPvS0_, %42 ], [ @_ZN4xmem34forwSequentialRead_Word32_Delay512EPvS0_, %41 ], [ @_ZN4xmem34forwSequentialRead_Word32_Delay256EPvS0_, %40 ], [ @_ZN4xmem34forwSequentialRead_Word32_Delay128EPvS0_, %39 ], [ @_ZN4xmem33forwSequentialRead_Word32_Delay64EPvS0_, %38 ], [ @_ZN4xmem33forwSequentialRead_Word32_Delay32EPvS0_, %37 ], [ @_ZN4xmem33forwSequentialRead_Word32_Delay16EPvS0_, %36 ], [ @_ZN4xmem32forwSequentialRead_Word32_Delay8EPvS0_, %35 ], [ @_ZN4xmem32forwSequentialRead_Word32_Delay4EPvS0_, %34 ], [ @_ZN4xmem32forwSequentialRead_Word32_Delay2EPvS0_, %33 ], [ @_ZN4xmem32forwSequentialRead_Word32_Delay1EPvS0_, %32 ], [ null, %23 ], [ @_ZN4xmem25forwSequentialRead_Word32EPvS0_, %29 ], [ @_ZN4xmem25forwSequentialRead_Word64EPvS0_, %46 ]
  call void @llvm.lifetime.start.p0(i64 24, ptr nonnull %2) #8
  call void @_ZNSt6vectorIPN4xmem12MemoryWorkerESaIS2_EEC2Ev(ptr noundef nonnull align 8 dereferenceable(24) %2) #8
  call void @llvm.lifetime.start.p0(i64 24, ptr nonnull %3) #8
  call void @_ZNSt6vectorIPN4xmem6ThreadESaIS2_EEC2Ev(ptr noundef nonnull align 8 dereferenceable(24) %3) #8
  %67 = load i8, ptr @_ZN4xmem9g_verboseE, align 1, !tbaa !37, !range !38, !noundef !39
  %68 = trunc nuw i8 %67 to i1
  br i1 %68, label %69, label %73

69:                                               ; preds = %66
  %70 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) @_ZSt4cout, ptr noundef nonnull @.str.4)
          to label %73 unwind label %71

71:                                               ; preds = %.invoke321, %.invoke320, %.invoke319, %.invoke, %511, %504, %502, %496, %494, %492, %95, %93, %91, %81, %79, %73, %69
  %72 = landingpad { ptr, i32 }
          cleanup
  br label %528

73:                                               ; preds = %69, %66
  %74 = invoke noundef zeroext i1 @_ZN4xmem9Benchmark17startPowerThreadsEv(ptr noundef nonnull align 8 dereferenceable(315) %0)
          to label %75 unwind label %71

75:                                               ; preds = %73
  %76 = load i8, ptr @_ZN4xmem9g_verboseE, align 1, !tbaa !37, !range !38, !noundef !39
  %77 = trunc nuw i8 %76 to i1
  br i1 %74, label %83, label %78

78:                                               ; preds = %75
  br i1 %77, label %79, label %.invoke321

79:                                               ; preds = %78
  %80 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) @_ZSt4cout, ptr noundef nonnull @.str.5)
          to label %81 unwind label %71

81:                                               ; preds = %79
  %82 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEPFRSoS_E(ptr noundef nonnull align 8 dereferenceable(8) %80, ptr noundef nonnull @_ZSt4endlIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_)
          to label %.invoke321 unwind label %71

83:                                               ; preds = %75
  br i1 %77, label %.invoke321, label %88

.invoke321:                                       ; preds = %83, %78, %81
  %84 = phi ptr [ @_ZSt4cerr, %81 ], [ @_ZSt4cerr, %78 ], [ @_ZSt4cout, %83 ]
  %85 = phi ptr [ @.str.6, %81 ], [ @.str.6, %78 ], [ @.str.7, %83 ]
  %86 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) %84, ptr noundef nonnull %85)
          to label %.invoke319 unwind label %71

.invoke319:                                       ; preds = %.invoke321
  %87 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEPFRSoS_E(ptr noundef nonnull align 8 dereferenceable(8) %86, ptr noundef nonnull @_ZSt4endlIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_)
          to label %88 unwind label %71

88:                                               ; preds = %.invoke319, %83
  %89 = load i8, ptr @_ZN4xmem9g_verboseE, align 1, !tbaa !37, !range !38, !noundef !39
  %90 = trunc nuw i8 %89 to i1
  br i1 %90, label %91, label %97

91:                                               ; preds = %88
  %92 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) @_ZSt4cout, ptr noundef nonnull @.str.8)
          to label %93 unwind label %71

93:                                               ; preds = %91
  %94 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEPFRSoS_E(ptr noundef nonnull align 8 dereferenceable(8) %92, ptr noundef nonnull @_ZSt4endlIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_)
          to label %95 unwind label %71

95:                                               ; preds = %93
  %96 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEPFRSoS_E(ptr noundef nonnull align 8 dereferenceable(8) %94, ptr noundef nonnull @_ZSt4endlIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_)
          to label %97 unwind label %71

97:                                               ; preds = %95, %88
  %98 = getelementptr inbounds i8, ptr %0, i64 24
  %99 = load i32, ptr %98, align 8, !tbaa !40
  %.not = icmp eq i32 %99, 0
  br i1 %.not, label %._crit_edge187, label %.preheader137.lr.ph

.preheader137.lr.ph:                              ; preds = %97
  %100 = getelementptr inbounds i8, ptr %0, i64 36
  %101 = getelementptr inbounds i8, ptr %0, i64 320
  %102 = getelementptr inbounds i8, ptr %0, i64 314
  %103 = getelementptr inbounds i8, ptr %0, i64 104
  br label %.preheader137

.preheader137:                                    ; preds = %.preheader137.lr.ph, %._crit_edge185
  %indvars.iv254 = phi i64 [ 0, %.preheader137.lr.ph ], [ %indvars.iv.next255, %._crit_edge185 ]
  %104 = load i32, ptr %9, align 4, !tbaa !31
  %.not192 = icmp eq i32 %104, 0
  br i1 %.not192, label %._crit_edge, label %.lr.ph.preheader

.lr.ph.preheader:                                 ; preds = %.preheader137
  %105 = load ptr, ptr %13, align 8, !tbaa !32
  %106 = load i32, ptr %100, align 4, !tbaa !41
  %107 = invoke noundef i32 @_ZN4xmem19cpu_id_in_numa_nodeEjj(i32 noundef %106, i32 noundef 0)
          to label %108 unwind label %.loopexit.split-lp

108:                                              ; preds = %.lr.ph.preheader
  %109 = icmp slt i32 %107, 0
  br i1 %109, label %110, label %121

110:                                              ; preds = %108
  %111 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) @_ZSt4cerr, ptr noundef nonnull @.str.9)
          to label %112 unwind label %.loopexit.split-lp

112:                                              ; preds = %110
  %113 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEj(ptr noundef nonnull align 8 dereferenceable(8) %111, i32 noundef 0)
          to label %114 unwind label %.loopexit.split-lp

114:                                              ; preds = %112
  %115 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) %113, ptr noundef nonnull @.str.10)
          to label %116 unwind label %.loopexit.split-lp

116:                                              ; preds = %114
  %117 = load i32, ptr %100, align 4, !tbaa !41
  %118 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEj(ptr noundef nonnull align 8 dereferenceable(8) %115, i32 noundef %117)
          to label %119 unwind label %.loopexit.split-lp

119:                                              ; preds = %116
  %120 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEPFRSoS_E(ptr noundef nonnull align 8 dereferenceable(8) %118, ptr noundef nonnull @_ZSt4endlIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_)
          to label %121 unwind label %.loopexit.split-lp

121:                                              ; preds = %108, %119
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %4) #8
  %122 = invoke noalias noundef nonnull dereferenceable(128) ptr @_Znwm(i64 noundef 128) #9
          to label %123 unwind label %156

123:                                              ; preds = %121
  invoke void @_ZN4xmem13LatencyWorkerC1EPvmPFiPmPS2_mES5_i(ptr noundef nonnull align 8 dereferenceable(128) %122, ptr noundef %105, i64 noundef %12, ptr noundef nonnull @_ZN4xmem13chasePointersEPmPS0_m, ptr noundef nonnull @_ZN4xmem19dummy_chasePointersEPmPS0_m, i32 noundef %107)
          to label %124 unwind label %157

124:                                              ; preds = %123
  store ptr %122, ptr %4, align 8, !tbaa !42
  invoke void @_ZNSt6vectorIPN4xmem12MemoryWorkerESaIS2_EE9push_backEOS2_(ptr noundef nonnull align 8 dereferenceable(24) %2, ptr noundef nonnull align 8 dereferenceable(8) %4)
          to label %125 unwind label %156

125:                                              ; preds = %124
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %4) #8
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %6) #8
  %126 = invoke noalias noundef nonnull dereferenceable(32) ptr @_Znwm(i64 noundef 32) #9
          to label %127 unwind label %.loopexit.split-lp233

127:                                              ; preds = %125
  %128 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt6vectorIPN4xmem12MemoryWorkerESaIS2_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %2, i64 noundef 0) #8
  %129 = load ptr, ptr %128, align 8, !tbaa !42
  invoke void @_ZN4xmem6ThreadC1EPNS_8RunnableE(ptr noundef nonnull align 8 dereferenceable(32) %126, ptr noundef %129)
          to label %130 unwind label %.loopexit.split-lp238

130:                                              ; preds = %127
  store ptr %126, ptr %6, align 8, !tbaa !42
  invoke void @_ZNSt6vectorIPN4xmem6ThreadESaIS2_EE9push_backEOS2_(ptr noundef nonnull align 8 dereferenceable(24) %3, ptr noundef nonnull align 8 dereferenceable(8) %6)
          to label %131 unwind label %.loopexit.split-lp233

131:                                              ; preds = %130
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %6) #8
  %132 = load i32, ptr %9, align 4, !tbaa !31
  %133 = icmp ugt i32 %132, 1
  br i1 %133, label %.lr.ph, label %.preheader136

._crit_edge187:                                   ; preds = %._crit_edge185, %97
  %134 = load i8, ptr @_ZN4xmem9g_verboseE, align 1, !tbaa !37, !range !38, !noundef !39
  %135 = trunc nuw i8 %134 to i1
  br i1 %135, label %492, label %496

.preheader136:                                    ; preds = %172, %131
  %136 = phi i32 [ %132, %131 ], [ %173, %172 ]
  %.not193 = icmp eq i32 %136, 0
  br i1 %.not193, label %._crit_edge, label %.lr.ph167

.lr.ph:                                           ; preds = %131, %172
  %indvars.iv = phi i64 [ %indvars.iv.next, %172 ], [ 1, %131 ]
  %137 = load ptr, ptr %13, align 8, !tbaa !32
  %138 = mul i64 %12, %indvars.iv
  %139 = getelementptr inbounds i8, ptr %137, i64 %138
  %140 = load i32, ptr %100, align 4, !tbaa !41
  %141 = trunc nuw i64 %indvars.iv to i32
  %142 = invoke noundef i32 @_ZN4xmem19cpu_id_in_numa_nodeEjj(i32 noundef %140, i32 noundef %141)
          to label %143 unwind label %.loopexit

143:                                              ; preds = %.lr.ph
  %144 = icmp slt i32 %142, 0
  br i1 %144, label %145, label %159

145:                                              ; preds = %143
  %146 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) @_ZSt4cerr, ptr noundef nonnull @.str.9)
          to label %147 unwind label %.loopexit

147:                                              ; preds = %145
  %148 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEj(ptr noundef nonnull align 8 dereferenceable(8) %146, i32 noundef %141)
          to label %149 unwind label %.loopexit

149:                                              ; preds = %147
  %150 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) %148, ptr noundef nonnull @.str.10)
          to label %151 unwind label %.loopexit

151:                                              ; preds = %149
  %152 = load i32, ptr %100, align 4, !tbaa !41
  %153 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEj(ptr noundef nonnull align 8 dereferenceable(8) %150, i32 noundef %152)
          to label %154 unwind label %.loopexit

154:                                              ; preds = %151
  %155 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEPFRSoS_E(ptr noundef nonnull align 8 dereferenceable(8) %153, ptr noundef nonnull @_ZSt4endlIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_)
          to label %159 unwind label %.loopexit

.loopexit:                                        ; preds = %.lr.ph, %145, %147, %149, %151, %154
  %lpad.loopexit = landingpad { ptr, i32 }
          cleanup
  br label %528

.loopexit.split-lp:                               ; preds = %.lr.ph.preheader, %110, %112, %114, %116, %119
  %lpad.loopexit.split-lp = landingpad { ptr, i32 }
          cleanup
  br label %528

156:                                              ; preds = %124, %121
  %lpad.loopexit.split-lp224 = landingpad { ptr, i32 }
          cleanup
  br label %158

157:                                              ; preds = %123
  %lpad.loopexit.split-lp230 = landingpad { ptr, i32 }
          cleanup
  call void @_ZdlPvm(ptr noundef nonnull %122, i64 noundef 128) #10
  br label %158

158:                                              ; preds = %157, %156
  %.pn127 = phi { ptr, i32 } [ %lpad.loopexit.split-lp224, %156 ], [ %lpad.loopexit.split-lp230, %157 ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %4) #8
  br label %528

159:                                              ; preds = %143, %154
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %5) #8
  %160 = invoke noalias noundef nonnull dereferenceable(144) ptr @_Znwm(i64 noundef 144) #9
          to label %161 unwind label %163

161:                                              ; preds = %159
  invoke void @_ZN4xmem10LoadWorkerC1EPvmPFiS1_S1_ES3_i(ptr noundef nonnull align 8 dereferenceable(144) %160, ptr noundef %139, i64 noundef %12, ptr noundef %.094, ptr noundef %.095, i32 noundef %142)
          to label %162 unwind label %164

162:                                              ; preds = %161
  store ptr %160, ptr %5, align 8, !tbaa !42
  invoke void @_ZNSt6vectorIPN4xmem12MemoryWorkerESaIS2_EE9push_backEOS2_(ptr noundef nonnull align 8 dereferenceable(24) %2, ptr noundef nonnull align 8 dereferenceable(8) %5)
          to label %166 unwind label %163

163:                                              ; preds = %162, %159
  %lpad.loopexit212 = landingpad { ptr, i32 }
          cleanup
  br label %165

164:                                              ; preds = %161
  %lpad.loopexit218 = landingpad { ptr, i32 }
          cleanup
  call void @_ZdlPvm(ptr noundef nonnull %160, i64 noundef 144) #10
  br label %165

165:                                              ; preds = %164, %163
  %.pn125 = phi { ptr, i32 } [ %lpad.loopexit212, %163 ], [ %lpad.loopexit218, %164 ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %5) #8
  br label %528

166:                                              ; preds = %162
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %5) #8
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %6) #8
  %167 = invoke noalias noundef nonnull dereferenceable(32) ptr @_Znwm(i64 noundef 32) #9
          to label %168 unwind label %.loopexit232

168:                                              ; preds = %166
  %169 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt6vectorIPN4xmem12MemoryWorkerESaIS2_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %2, i64 noundef %indvars.iv) #8
  %170 = load ptr, ptr %169, align 8, !tbaa !42
  invoke void @_ZN4xmem6ThreadC1EPNS_8RunnableE(ptr noundef nonnull align 8 dereferenceable(32) %167, ptr noundef %170)
          to label %171 unwind label %.loopexit237

171:                                              ; preds = %168
  store ptr %167, ptr %6, align 8, !tbaa !42
  invoke void @_ZNSt6vectorIPN4xmem6ThreadESaIS2_EE9push_backEOS2_(ptr noundef nonnull align 8 dereferenceable(24) %3, ptr noundef nonnull align 8 dereferenceable(8) %6)
          to label %172 unwind label %.loopexit232

172:                                              ; preds = %171
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %6) #8
  %indvars.iv.next = add nuw nsw i64 %indvars.iv, 1
  %173 = load i32, ptr %9, align 4, !tbaa !31
  %174 = zext i32 %173 to i64
  %175 = icmp ult i64 %indvars.iv.next, %174
  br i1 %175, label %.lr.ph, label %.preheader136, !llvm.loop !43

.loopexit232:                                     ; preds = %166, %171
  %lpad.loopexit234 = landingpad { ptr, i32 }
          cleanup
  br label %177

.loopexit.split-lp233:                            ; preds = %125, %130
  %lpad.loopexit.split-lp235 = landingpad { ptr, i32 }
          cleanup
  br label %177

.loopexit237:                                     ; preds = %168
  %lpad.loopexit240 = landingpad { ptr, i32 }
          cleanup
  br label %176

.loopexit.split-lp238:                            ; preds = %127
  %lpad.loopexit.split-lp241 = landingpad { ptr, i32 }
          cleanup
  br label %176

176:                                              ; preds = %.loopexit.split-lp238, %.loopexit237
  %.lcssa200 = phi ptr [ %167, %.loopexit237 ], [ %126, %.loopexit.split-lp238 ]
  %lpad.phi242 = phi { ptr, i32 } [ %lpad.loopexit240, %.loopexit237 ], [ %lpad.loopexit.split-lp241, %.loopexit.split-lp238 ]
  call void @_ZdlPvm(ptr noundef nonnull %.lcssa200, i64 noundef 32) #10
  br label %177

177:                                              ; preds = %.loopexit232, %.loopexit.split-lp233, %176
  %.pn129 = phi { ptr, i32 } [ %lpad.phi242, %176 ], [ %lpad.loopexit234, %.loopexit232 ], [ %lpad.loopexit.split-lp235, %.loopexit.split-lp233 ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %6) #8
  br label %528

.preheader135:                                    ; preds = %181
  %.not194 = icmp eq i32 %182, 0
  br i1 %.not194, label %._crit_edge, label %.lr.ph169

.lr.ph167:                                        ; preds = %.preheader136, %181
  %indvars.iv243 = phi i64 [ %indvars.iv.next244, %181 ], [ 0, %.preheader136 ]
  %178 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt6vectorIPN4xmem6ThreadESaIS2_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %3, i64 noundef %indvars.iv243) #8
  %179 = load ptr, ptr %178, align 8, !tbaa !42
  %180 = invoke noundef zeroext i1 @_ZN4xmem6Thread16create_and_startEv(ptr noundef nonnull align 8 dereferenceable(32) %179)
          to label %181 unwind label %185

181:                                              ; preds = %.lr.ph167
  %indvars.iv.next244 = add nuw nsw i64 %indvars.iv243, 1
  %182 = load i32, ptr %9, align 4, !tbaa !31
  %183 = zext i32 %182 to i64
  %184 = icmp ult i64 %indvars.iv.next244, %183
  br i1 %184, label %.lr.ph167, label %.preheader135, !llvm.loop !46

185:                                              ; preds = %.lr.ph167
  %186 = landingpad { ptr, i32 }
          cleanup
  br label %528

._crit_edge:                                      ; preds = %200, %.preheader137, %.preheader136, %.preheader135
  %187 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt6vectorIPN4xmem12MemoryWorkerESaIS2_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %2, i64 noundef 0) #8
  %188 = load ptr, ptr %187, align 8, !tbaa !42
  %189 = invoke noundef i32 @_ZN4xmem12MemoryWorker9getPassesEv(ptr noundef nonnull align 8 dereferenceable(106) %188)
          to label %204 unwind label %224

.lr.ph169:                                        ; preds = %.preheader135, %200
  %indvars.iv246 = phi i64 [ %indvars.iv.next247, %200 ], [ 0, %.preheader135 ]
  %190 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt6vectorIPN4xmem6ThreadESaIS2_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %3, i64 noundef %indvars.iv246) #8
  %191 = load ptr, ptr %190, align 8, !tbaa !42
  %192 = invoke noundef zeroext i1 @_ZN4xmem6Thread4joinEv(ptr noundef nonnull align 8 dereferenceable(32) %191)
          to label %193 unwind label %198

193:                                              ; preds = %.lr.ph169
  br i1 %192, label %200, label %194

194:                                              ; preds = %193
  %195 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) @_ZSt4cerr, ptr noundef nonnull @.str.11)
          to label %196 unwind label %198

196:                                              ; preds = %194
  %197 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEPFRSoS_E(ptr noundef nonnull align 8 dereferenceable(8) %195, ptr noundef nonnull @_ZSt4endlIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_)
          to label %200 unwind label %198

198:                                              ; preds = %196, %194, %.lr.ph169
  %199 = landingpad { ptr, i32 }
          cleanup
  br label %528

200:                                              ; preds = %193, %196
  %indvars.iv.next247 = add nuw nsw i64 %indvars.iv246, 1
  %201 = load i32, ptr %9, align 4, !tbaa !31
  %202 = zext i32 %201 to i64
  %203 = icmp ult i64 %indvars.iv.next247, %202
  br i1 %203, label %.lr.ph169, label %._crit_edge, !llvm.loop !47

204:                                              ; preds = %._crit_edge
  %205 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt6vectorIPN4xmem12MemoryWorkerESaIS2_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %2, i64 noundef 0) #8
  %206 = load ptr, ptr %205, align 8, !tbaa !42
  %207 = invoke noundef i64 @_ZN4xmem12MemoryWorker16getAdjustedTicksEv(ptr noundef nonnull align 8 dereferenceable(106) %206)
          to label %208 unwind label %226

208:                                              ; preds = %204
  %209 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt6vectorIPN4xmem12MemoryWorkerESaIS2_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %2, i64 noundef 0) #8
  %210 = load ptr, ptr %209, align 8, !tbaa !42
  %211 = invoke noundef i64 @_ZN4xmem12MemoryWorker20getElapsedDummyTicksEv(ptr noundef nonnull align 8 dereferenceable(106) %210)
          to label %212 unwind label %228

212:                                              ; preds = %208
  %213 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt6vectorIPN4xmem12MemoryWorkerESaIS2_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %2, i64 noundef 0) #8
  %214 = load ptr, ptr %213, align 8, !tbaa !42
  %215 = invoke noundef i32 @_ZN4xmem12MemoryWorker15getBytesPerPassEv(ptr noundef nonnull align 8 dereferenceable(106) %214)
          to label %216 unwind label %230

216:                                              ; preds = %212
  %217 = lshr i32 %215, 3
  %218 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt6vectorIPN4xmem12MemoryWorkerESaIS2_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %2, i64 noundef 0) #8
  %219 = load ptr, ptr %218, align 8, !tbaa !42
  %220 = invoke noundef zeroext i1 @_ZN4xmem12MemoryWorker10hadWarningEv(ptr noundef nonnull align 8 dereferenceable(106) %219)
          to label %.preheader134 unwind label %232

.preheader134:                                    ; preds = %216
  %221 = load i32, ptr %9, align 4, !tbaa !31
  %222 = icmp ugt i32 %221, 1
  br i1 %222, label %.lr.ph175, label %._crit_edge176.thread

._crit_edge176.thread:                            ; preds = %.preheader134
  br i1 %220, label %279, label %280

._crit_edge176:                                   ; preds = %256
  %223 = icmp ugt i32 %258, 1
  br i1 %223, label %263, label %278

224:                                              ; preds = %._crit_edge
  %225 = landingpad { ptr, i32 }
          cleanup
  br label %528

226:                                              ; preds = %204
  %227 = landingpad { ptr, i32 }
          cleanup
  br label %528

228:                                              ; preds = %208
  %229 = landingpad { ptr, i32 }
          cleanup
  br label %528

230:                                              ; preds = %212
  %231 = landingpad { ptr, i32 }
          cleanup
  br label %528

232:                                              ; preds = %216
  %233 = landingpad { ptr, i32 }
          cleanup
  br label %528

.lr.ph175:                                        ; preds = %.preheader134, %256
  %indvars.iv249 = phi i64 [ %indvars.iv.next250, %256 ], [ 1, %.preheader134 ]
  %.090173 = phi i64 [ %248, %256 ], [ 0, %.preheader134 ]
  %.091172 = phi i64 [ %243, %256 ], [ 0, %.preheader134 ]
  %.092171 = phi i32 [ %238, %256 ], [ 0, %.preheader134 ]
  %.098.in170 = phi i1 [ %257, %256 ], [ %220, %.preheader134 ]
  %234 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt6vectorIPN4xmem12MemoryWorkerESaIS2_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %2, i64 noundef %indvars.iv249) #8
  %235 = load ptr, ptr %234, align 8, !tbaa !42
  %236 = invoke noundef i32 @_ZN4xmem12MemoryWorker9getPassesEv(ptr noundef nonnull align 8 dereferenceable(106) %235)
          to label %237 unwind label %261

237:                                              ; preds = %.lr.ph175
  %238 = add i32 %236, %.092171
  %239 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt6vectorIPN4xmem12MemoryWorkerESaIS2_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %2, i64 noundef %indvars.iv249) #8
  %240 = load ptr, ptr %239, align 8, !tbaa !42
  %241 = invoke noundef i64 @_ZN4xmem12MemoryWorker16getAdjustedTicksEv(ptr noundef nonnull align 8 dereferenceable(106) %240)
          to label %242 unwind label %261

242:                                              ; preds = %237
  %243 = add i64 %241, %.091172
  %244 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt6vectorIPN4xmem12MemoryWorkerESaIS2_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %2, i64 noundef %indvars.iv249) #8
  %245 = load ptr, ptr %244, align 8, !tbaa !42
  %246 = invoke noundef i64 @_ZN4xmem12MemoryWorker20getElapsedDummyTicksEv(ptr noundef nonnull align 8 dereferenceable(106) %245)
          to label %247 unwind label %261

247:                                              ; preds = %242
  %248 = add i64 %246, %.090173
  %249 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt6vectorIPN4xmem12MemoryWorkerESaIS2_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %2, i64 noundef %indvars.iv249) #8
  %250 = load ptr, ptr %249, align 8, !tbaa !42
  %251 = invoke noundef i32 @_ZN4xmem12MemoryWorker15getBytesPerPassEv(ptr noundef nonnull align 8 dereferenceable(106) %250)
          to label %252 unwind label %261

252:                                              ; preds = %247
  %253 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt6vectorIPN4xmem12MemoryWorkerESaIS2_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %2, i64 noundef %indvars.iv249) #8
  %254 = load ptr, ptr %253, align 8, !tbaa !42
  %255 = invoke noundef zeroext i1 @_ZN4xmem12MemoryWorker10hadWarningEv(ptr noundef nonnull align 8 dereferenceable(106) %254)
          to label %256 unwind label %261

256:                                              ; preds = %252
  %257 = or i1 %.098.in170, %255
  %indvars.iv.next250 = add nuw nsw i64 %indvars.iv249, 1
  %258 = load i32, ptr %9, align 4, !tbaa !31
  %259 = zext i32 %258 to i64
  %260 = icmp ult i64 %indvars.iv.next250, %259
  br i1 %260, label %.lr.ph175, label %._crit_edge176, !llvm.loop !48

261:                                              ; preds = %252, %247, %242, %237, %.lr.ph175
  %262 = landingpad { ptr, i32 }
          cleanup
  br label %528

263:                                              ; preds = %._crit_edge176
  %264 = uitofp i64 %243 to double
  %265 = add i32 %258, -1
  %266 = uitofp i32 %265 to double
  %267 = fdiv double %264, %266
  %268 = uitofp i32 %238 to double
  %269 = uitofp i32 %251 to double
  %270 = fmul double %268, %269
  %271 = fmul double %270, 0x3EB0000000000000
  %272 = load float, ptr @_ZN4xmem13g_ns_per_tickE, align 4, !tbaa !49
  %273 = fpext float %272 to double
  %274 = fmul double %267, %273
  %275 = fdiv double %274, 1.000000e+09
  %276 = fdiv double %271, %275
  %277 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt6vectorIdSaIdEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %101, i64 noundef %indvars.iv254) #8
  store double %276, ptr %277, align 8, !tbaa !51
  br i1 %257, label %279, label %280

278:                                              ; preds = %._crit_edge176
  br i1 %257, label %279, label %280

279:                                              ; preds = %263, %._crit_edge176.thread, %278
  %.092.lcssa271282 = phi i32 [ 0, %._crit_edge176.thread ], [ %238, %278 ], [ %238, %263 ]
  %.091.lcssa272280 = phi i64 [ 0, %._crit_edge176.thread ], [ %243, %278 ], [ %243, %263 ]
  %.090.lcssa273278 = phi i64 [ 0, %._crit_edge176.thread ], [ %248, %278 ], [ %248, %263 ]
  %.089.lcssa274276 = phi i32 [ 0, %._crit_edge176.thread ], [ %251, %278 ], [ %251, %263 ]
  store i8 1, ptr %102, align 2, !tbaa !52
  br label %280

280:                                              ; preds = %263, %._crit_edge176.thread, %279, %278
  %.098.in.lcssa270283 = phi i1 [ false, %._crit_edge176.thread ], [ true, %279 ], [ false, %278 ], [ false, %263 ]
  %.092.lcssa271281 = phi i32 [ 0, %._crit_edge176.thread ], [ %.092.lcssa271282, %279 ], [ %238, %278 ], [ %238, %263 ]
  %.091.lcssa272279 = phi i64 [ 0, %._crit_edge176.thread ], [ %.091.lcssa272280, %279 ], [ %243, %278 ], [ %243, %263 ]
  %.090.lcssa273277 = phi i64 [ 0, %._crit_edge176.thread ], [ %.090.lcssa273278, %279 ], [ %248, %278 ], [ %248, %263 ]
  %.089.lcssa274275 = phi i32 [ 0, %._crit_edge176.thread ], [ %.089.lcssa274276, %279 ], [ %251, %278 ], [ %251, %263 ]
  %281 = load i8, ptr @_ZN4xmem9g_verboseE, align 1, !tbaa !37, !range !38, !noundef !39
  %282 = trunc nuw i8 %281 to i1
  br i1 %282, label %283, label %._crit_edge260

._crit_edge260:                                   ; preds = %280
  %.pre261 = uitofp i64 %207 to float
  br label %464

283:                                              ; preds = %280
  %284 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) @_ZSt4cout, ptr noundef nonnull @.str.12)
          to label %285 unwind label %302

285:                                              ; preds = %283
  %286 = trunc i64 %indvars.iv254 to i32
  %287 = add i32 %286, 1
  %288 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEj(ptr noundef nonnull align 8 dereferenceable(8) %284, i32 noundef %287)
          to label %289 unwind label %302

289:                                              ; preds = %285
  %290 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) %288, ptr noundef nonnull @.str.13)
          to label %291 unwind label %302

291:                                              ; preds = %289
  %292 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEj(ptr noundef nonnull align 8 dereferenceable(8) %290, i32 noundef %189)
          to label %293 unwind label %302

293:                                              ; preds = %291
  %294 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) %292, ptr noundef nonnull @.str.14)
          to label %295 unwind label %302

295:                                              ; preds = %293
  %296 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEj(ptr noundef nonnull align 8 dereferenceable(8) %294, i32 noundef %217)
          to label %297 unwind label %302

297:                                              ; preds = %295
  %298 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) %296, ptr noundef nonnull @.str.15)
          to label %299 unwind label %302

299:                                              ; preds = %297
  br i1 %.098.in.lcssa270283, label %300, label %304

300:                                              ; preds = %299
  %301 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) @_ZSt4cout, ptr noundef nonnull @.str.16)
          to label %304 unwind label %302

302:                                              ; preds = %462, %460, %457, %451, %449, %443, %441, %437, %435, %433, %431, %428, %423, %421, %416, %414, %410, %408, %406, %404, %401, %399, %397, %395, %393, %389, %387, %385, %383, %380, %378, %376, %374, %372, %370, %368, %363, %361, %358, %352, %350, %344, %342, %340, %338, %335, %330, %328, %323, %321, %319, %317, %314, %312, %310, %308, %306, %304, %300, %297, %295, %293, %291, %289, %285, %283
  %303 = landingpad { ptr, i32 }
          cleanup
  br label %528

304:                                              ; preds = %300, %299
  %305 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEPFRSoS_E(ptr noundef nonnull align 8 dereferenceable(8) @_ZSt4cout, ptr noundef nonnull @_ZSt4endlIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_)
          to label %306 unwind label %302

306:                                              ; preds = %304
  %307 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) @_ZSt4cout, ptr noundef nonnull @.str.17)
          to label %308 unwind label %302

308:                                              ; preds = %306
  %309 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEm(ptr noundef nonnull align 8 dereferenceable(8) %307, i64 noundef %207)
          to label %310 unwind label %302

310:                                              ; preds = %308
  %311 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) %309, ptr noundef nonnull @.str.18)
          to label %312 unwind label %302

312:                                              ; preds = %310
  %313 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEm(ptr noundef nonnull align 8 dereferenceable(8) %311, i64 noundef %211)
          to label %314 unwind label %302

314:                                              ; preds = %312
  %315 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) %313, ptr noundef nonnull @.str.19)
          to label %316 unwind label %302

316:                                              ; preds = %314
  br i1 %.098.in.lcssa270283, label %317, label %319

317:                                              ; preds = %316
  %318 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) @_ZSt4cout, ptr noundef nonnull @.str.16)
          to label %319 unwind label %302

319:                                              ; preds = %317, %316
  %320 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEPFRSoS_E(ptr noundef nonnull align 8 dereferenceable(8) @_ZSt4cout, ptr noundef nonnull @_ZSt4endlIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_)
          to label %321 unwind label %302

321:                                              ; preds = %319
  %322 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) @_ZSt4cout, ptr noundef nonnull @.str.20)
          to label %323 unwind label %302

323:                                              ; preds = %321
  %324 = uitofp i64 %207 to float
  %325 = load float, ptr @_ZN4xmem13g_ns_per_tickE, align 4, !tbaa !49
  %326 = fmul float %325, %324
  %327 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEf(ptr noundef nonnull align 8 dereferenceable(8) %322, float noundef %326)
          to label %328 unwind label %302

328:                                              ; preds = %323
  %329 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) %327, ptr noundef nonnull @.str.18)
          to label %330 unwind label %302

330:                                              ; preds = %328
  %331 = uitofp i64 %211 to float
  %332 = load float, ptr @_ZN4xmem13g_ns_per_tickE, align 4, !tbaa !49
  %333 = fmul float %332, %331
  %334 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEf(ptr noundef nonnull align 8 dereferenceable(8) %329, float noundef %333)
          to label %335 unwind label %302

335:                                              ; preds = %330
  %336 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) %334, ptr noundef nonnull @.str.19)
          to label %337 unwind label %302

337:                                              ; preds = %335
  br i1 %.098.in.lcssa270283, label %338, label %340

338:                                              ; preds = %337
  %339 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) @_ZSt4cout, ptr noundef nonnull @.str.16)
          to label %340 unwind label %302

340:                                              ; preds = %338, %337
  %341 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEPFRSoS_E(ptr noundef nonnull align 8 dereferenceable(8) @_ZSt4cout, ptr noundef nonnull @_ZSt4endlIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_)
          to label %342 unwind label %302

342:                                              ; preds = %340
  %343 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) @_ZSt4cout, ptr noundef nonnull @.str.21)
          to label %344 unwind label %302

344:                                              ; preds = %342
  %345 = load float, ptr @_ZN4xmem13g_ns_per_tickE, align 4, !tbaa !49
  %346 = fmul float %345, %324
  %347 = fpext float %346 to double
  %348 = fdiv double %347, 1.000000e+09
  %349 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEd(ptr noundef nonnull align 8 dereferenceable(8) %343, double noundef %348)
          to label %350 unwind label %302

350:                                              ; preds = %344
  %351 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) %349, ptr noundef nonnull @.str.18)
          to label %352 unwind label %302

352:                                              ; preds = %350
  %353 = load float, ptr @_ZN4xmem13g_ns_per_tickE, align 4, !tbaa !49
  %354 = fmul float %353, %331
  %355 = fpext float %354 to double
  %356 = fdiv double %355, 1.000000e+09
  %357 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEd(ptr noundef nonnull align 8 dereferenceable(8) %351, double noundef %356)
          to label %358 unwind label %302

358:                                              ; preds = %352
  %359 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) %357, ptr noundef nonnull @.str.19)
          to label %360 unwind label %302

360:                                              ; preds = %358
  br i1 %.098.in.lcssa270283, label %361, label %363

361:                                              ; preds = %360
  %362 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) @_ZSt4cout, ptr noundef nonnull @.str.16)
          to label %363 unwind label %302

363:                                              ; preds = %361, %360
  %364 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEPFRSoS_E(ptr noundef nonnull align 8 dereferenceable(8) @_ZSt4cout, ptr noundef nonnull @_ZSt4endlIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_)
          to label %365 unwind label %302

365:                                              ; preds = %363
  %366 = load i32, ptr %9, align 4, !tbaa !31
  %367 = icmp ugt i32 %366, 1
  br i1 %367, label %368, label %464

368:                                              ; preds = %365
  %369 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) @_ZSt4cout, ptr noundef nonnull @.str.12)
          to label %370 unwind label %302

370:                                              ; preds = %368
  %371 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEj(ptr noundef nonnull align 8 dereferenceable(8) %369, i32 noundef %287)
          to label %372 unwind label %302

372:                                              ; preds = %370
  %373 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) %371, ptr noundef nonnull @.str.13)
          to label %374 unwind label %302

374:                                              ; preds = %372
  %375 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEj(ptr noundef nonnull align 8 dereferenceable(8) %373, i32 noundef %.092.lcssa271281)
          to label %376 unwind label %302

376:                                              ; preds = %374
  %377 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) %375, ptr noundef nonnull @.str.22)
          to label %378 unwind label %302

378:                                              ; preds = %376
  %379 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEj(ptr noundef nonnull align 8 dereferenceable(8) %377, i32 noundef %.089.lcssa274275)
          to label %380 unwind label %302

380:                                              ; preds = %378
  %381 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) %379, ptr noundef nonnull @.str.23)
          to label %382 unwind label %302

382:                                              ; preds = %380
  br i1 %.098.in.lcssa270283, label %383, label %385

383:                                              ; preds = %382
  %384 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) @_ZSt4cout, ptr noundef nonnull @.str.16)
          to label %385 unwind label %302

385:                                              ; preds = %383, %382
  %386 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEPFRSoS_E(ptr noundef nonnull align 8 dereferenceable(8) @_ZSt4cout, ptr noundef nonnull @_ZSt4endlIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_)
          to label %387 unwind label %302

387:                                              ; preds = %385
  %388 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) @_ZSt4cout, ptr noundef nonnull @.str.24)
          to label %389 unwind label %302

389:                                              ; preds = %387
  %390 = load i32, ptr %9, align 4, !tbaa !31
  %391 = add i32 %390, -1
  %392 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEj(ptr noundef nonnull align 8 dereferenceable(8) %388, i32 noundef %391)
          to label %393 unwind label %302

393:                                              ; preds = %389
  %394 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) %392, ptr noundef nonnull @.str.25)
          to label %395 unwind label %302

395:                                              ; preds = %393
  %396 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEm(ptr noundef nonnull align 8 dereferenceable(8) %394, i64 noundef %.091.lcssa272279)
          to label %397 unwind label %302

397:                                              ; preds = %395
  %398 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) %396, ptr noundef nonnull @.str.18)
          to label %399 unwind label %302

399:                                              ; preds = %397
  %400 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEm(ptr noundef nonnull align 8 dereferenceable(8) %398, i64 noundef %.090.lcssa273277)
          to label %401 unwind label %302

401:                                              ; preds = %399
  %402 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) %400, ptr noundef nonnull @.str.19)
          to label %403 unwind label %302

403:                                              ; preds = %401
  br i1 %.098.in.lcssa270283, label %404, label %406

404:                                              ; preds = %403
  %405 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) @_ZSt4cout, ptr noundef nonnull @.str.16)
          to label %406 unwind label %302

406:                                              ; preds = %404, %403
  %407 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEPFRSoS_E(ptr noundef nonnull align 8 dereferenceable(8) @_ZSt4cout, ptr noundef nonnull @_ZSt4endlIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_)
          to label %408 unwind label %302

408:                                              ; preds = %406
  %409 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) @_ZSt4cout, ptr noundef nonnull @.str.26)
          to label %410 unwind label %302

410:                                              ; preds = %408
  %411 = load i32, ptr %9, align 4, !tbaa !31
  %412 = add i32 %411, -1
  %413 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEj(ptr noundef nonnull align 8 dereferenceable(8) %409, i32 noundef %412)
          to label %414 unwind label %302

414:                                              ; preds = %410
  %415 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) %413, ptr noundef nonnull @.str.25)
          to label %416 unwind label %302

416:                                              ; preds = %414
  %417 = uitofp i64 %.091.lcssa272279 to float
  %418 = load float, ptr @_ZN4xmem13g_ns_per_tickE, align 4, !tbaa !49
  %419 = fmul float %418, %417
  %420 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEf(ptr noundef nonnull align 8 dereferenceable(8) %415, float noundef %419)
          to label %421 unwind label %302

421:                                              ; preds = %416
  %422 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) %420, ptr noundef nonnull @.str.18)
          to label %423 unwind label %302

423:                                              ; preds = %421
  %424 = uitofp i64 %.090.lcssa273277 to float
  %425 = load float, ptr @_ZN4xmem13g_ns_per_tickE, align 4, !tbaa !49
  %426 = fmul float %425, %424
  %427 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEf(ptr noundef nonnull align 8 dereferenceable(8) %422, float noundef %426)
          to label %428 unwind label %302

428:                                              ; preds = %423
  %429 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) %427, ptr noundef nonnull @.str.19)
          to label %430 unwind label %302

430:                                              ; preds = %428
  br i1 %.098.in.lcssa270283, label %431, label %433

431:                                              ; preds = %430
  %432 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) @_ZSt4cout, ptr noundef nonnull @.str.16)
          to label %433 unwind label %302

433:                                              ; preds = %431, %430
  %434 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEPFRSoS_E(ptr noundef nonnull align 8 dereferenceable(8) @_ZSt4cout, ptr noundef nonnull @_ZSt4endlIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_)
          to label %435 unwind label %302

435:                                              ; preds = %433
  %436 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) @_ZSt4cout, ptr noundef nonnull @.str.27)
          to label %437 unwind label %302

437:                                              ; preds = %435
  %438 = load i32, ptr %9, align 4, !tbaa !31
  %439 = add i32 %438, -1
  %440 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEj(ptr noundef nonnull align 8 dereferenceable(8) %436, i32 noundef %439)
          to label %441 unwind label %302

441:                                              ; preds = %437
  %442 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) %440, ptr noundef nonnull @.str.25)
          to label %443 unwind label %302

443:                                              ; preds = %441
  %444 = load float, ptr @_ZN4xmem13g_ns_per_tickE, align 4, !tbaa !49
  %445 = fmul float %444, %417
  %446 = fpext float %445 to double
  %447 = fdiv double %446, 1.000000e+09
  %448 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEd(ptr noundef nonnull align 8 dereferenceable(8) %442, double noundef %447)
          to label %449 unwind label %302

449:                                              ; preds = %443
  %450 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) %448, ptr noundef nonnull @.str.18)
          to label %451 unwind label %302

451:                                              ; preds = %449
  %452 = load float, ptr @_ZN4xmem13g_ns_per_tickE, align 4, !tbaa !49
  %453 = fmul float %452, %424
  %454 = fpext float %453 to double
  %455 = fdiv double %454, 1.000000e+09
  %456 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEd(ptr noundef nonnull align 8 dereferenceable(8) %450, double noundef %455)
          to label %457 unwind label %302

457:                                              ; preds = %451
  %458 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) %456, ptr noundef nonnull @.str.19)
          to label %459 unwind label %302

459:                                              ; preds = %457
  br i1 %.098.in.lcssa270283, label %460, label %462

460:                                              ; preds = %459
  %461 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) @_ZSt4cout, ptr noundef nonnull @.str.16)
          to label %462 unwind label %302

462:                                              ; preds = %460, %459
  %463 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEPFRSoS_E(ptr noundef nonnull align 8 dereferenceable(8) @_ZSt4cout, ptr noundef nonnull @_ZSt4endlIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_)
          to label %464 unwind label %302

464:                                              ; preds = %._crit_edge260, %365, %462
  %.pre-phi = phi float [ %.pre261, %._crit_edge260 ], [ %324, %365 ], [ %324, %462 ]
  %465 = load float, ptr @_ZN4xmem13g_ns_per_tickE, align 4, !tbaa !49
  %466 = fmul float %465, %.pre-phi
  %467 = fpext float %466 to double
  %468 = mul i32 %217, %189
  %469 = uitofp i32 %468 to double
  %470 = fdiv double %467, %469
  %471 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt6vectorIdSaIdEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %103, i64 noundef %indvars.iv254) #8
  store double %470, ptr %471, align 8, !tbaa !51
  %472 = load i32, ptr %9, align 4, !tbaa !31
  %.not195 = icmp eq i32 %472, 0
  br i1 %.not195, label %._crit_edge185, label %.lr.ph184

._crit_edge185:                                   ; preds = %488, %464
  call void @_ZNSt6vectorIPN4xmem6ThreadESaIS2_EE5clearEv(ptr noundef nonnull align 8 dereferenceable(24) %3) #8
  call void @_ZNSt6vectorIPN4xmem12MemoryWorkerESaIS2_EE5clearEv(ptr noundef nonnull align 8 dereferenceable(24) %2) #8
  %indvars.iv.next255 = add nuw nsw i64 %indvars.iv254, 1
  %473 = load i32, ptr %98, align 8, !tbaa !40
  %474 = zext i32 %473 to i64
  %475 = icmp ult i64 %indvars.iv.next255, %474
  br i1 %475, label %.preheader137, label %._crit_edge187, !llvm.loop !53

.lr.ph184:                                        ; preds = %464, %488
  %indvars.iv251 = phi i64 [ %indvars.iv.next252, %488 ], [ 0, %464 ]
  %476 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt6vectorIPN4xmem6ThreadESaIS2_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %3, i64 noundef %indvars.iv251) #8
  %477 = load ptr, ptr %476, align 8, !tbaa !42
  %478 = icmp eq ptr %477, null
  br i1 %478, label %480, label %479

479:                                              ; preds = %.lr.ph184
  call void @_ZN4xmem6ThreadD1Ev(ptr noundef nonnull align 8 dereferenceable(32) %477) #8
  call void @_ZdlPvm(ptr noundef nonnull %477, i64 noundef 32) #10
  br label %480

480:                                              ; preds = %479, %.lr.ph184
  %481 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt6vectorIPN4xmem12MemoryWorkerESaIS2_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %2, i64 noundef %indvars.iv251) #8
  %482 = load ptr, ptr %481, align 8, !tbaa !42
  %483 = icmp eq ptr %482, null
  br i1 %483, label %488, label %484

484:                                              ; preds = %480
  %485 = load ptr, ptr %482, align 8, !tbaa !54
  %486 = getelementptr inbounds i8, ptr %485, i64 16
  %487 = load ptr, ptr %486, align 8
  call void %487(ptr noundef nonnull align 8 dereferenceable(106) %482) #8
  br label %488

488:                                              ; preds = %480, %484
  %indvars.iv.next252 = add nuw nsw i64 %indvars.iv251, 1
  %489 = load i32, ptr %9, align 4, !tbaa !31
  %490 = zext i32 %489 to i64
  %491 = icmp ult i64 %indvars.iv.next252, %490
  br i1 %491, label %.lr.ph184, label %._crit_edge185, !llvm.loop !56

492:                                              ; preds = %._crit_edge187
  %493 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEPFRSoS_E(ptr noundef nonnull align 8 dereferenceable(8) @_ZSt4cout, ptr noundef nonnull @_ZSt4endlIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_)
          to label %494 unwind label %71

494:                                              ; preds = %492
  %495 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) @_ZSt4cout, ptr noundef nonnull @.str.28)
          to label %496 unwind label %71

496:                                              ; preds = %494, %._crit_edge187
  %497 = invoke noundef zeroext i1 @_ZN4xmem9Benchmark16stopPowerThreadsEv(ptr noundef nonnull align 8 dereferenceable(315) %0)
          to label %498 unwind label %71

498:                                              ; preds = %496
  %499 = load i8, ptr @_ZN4xmem9g_verboseE, align 1, !tbaa !37, !range !38, !noundef !39
  %500 = trunc nuw i8 %499 to i1
  br i1 %497, label %506, label %501

501:                                              ; preds = %498
  br i1 %500, label %502, label %.invoke320

502:                                              ; preds = %501
  %503 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) @_ZSt4cout, ptr noundef nonnull @.str.5)
          to label %504 unwind label %71

504:                                              ; preds = %502
  %505 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEPFRSoS_E(ptr noundef nonnull align 8 dereferenceable(8) %503, ptr noundef nonnull @_ZSt4endlIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_)
          to label %.invoke320 unwind label %71

506:                                              ; preds = %498
  br i1 %500, label %.invoke320, label %511

.invoke320:                                       ; preds = %506, %501, %504
  %507 = phi ptr [ @_ZSt4cerr, %504 ], [ @_ZSt4cerr, %501 ], [ @_ZSt4cout, %506 ]
  %508 = phi ptr [ @.str.29, %504 ], [ @.str.29, %501 ], [ @.str.7, %506 ]
  %509 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) %507, ptr noundef nonnull %508)
          to label %.invoke unwind label %71

.invoke:                                          ; preds = %.invoke320
  %510 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEPFRSoS_E(ptr noundef nonnull align 8 dereferenceable(8) %509, ptr noundef nonnull @_ZSt4endlIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_)
          to label %511 unwind label %71

511:                                              ; preds = %.invoke, %506
  %512 = getelementptr inbounds i8, ptr %0, i64 313
  store i8 1, ptr %512, align 1, !tbaa !57
  invoke void @_ZN4xmem9Benchmark14computeMetricsEv(ptr noundef nonnull align 8 dereferenceable(315) %0)
          to label %.preheader unwind label %71

.preheader:                                       ; preds = %511
  %513 = load i32, ptr %98, align 8, !tbaa !40
  %.not196 = icmp eq i32 %513, 0
  br i1 %.not196, label %.preheader.._crit_edge190_crit_edge, label %.lr.ph189

.preheader.._crit_edge190_crit_edge:              ; preds = %.preheader
  %.phi.trans.insert = getelementptr inbounds i8, ptr %0, i64 344
  %.pre = load double, ptr %.phi.trans.insert, align 8, !tbaa !58
  br label %._crit_edge190

.lr.ph189:                                        ; preds = %.preheader
  %514 = getelementptr inbounds i8, ptr %0, i64 320
  %515 = getelementptr inbounds i8, ptr %0, i64 344
  br label %520

._crit_edge190.loopexit:                          ; preds = %520
  %516 = uitofp i32 %525 to double
  br label %._crit_edge190

._crit_edge190:                                   ; preds = %.preheader.._crit_edge190_crit_edge, %._crit_edge190.loopexit
  %517 = phi double [ %.pre, %.preheader.._crit_edge190_crit_edge ], [ %524, %._crit_edge190.loopexit ]
  %.lcssa = phi double [ 0.000000e+00, %.preheader.._crit_edge190_crit_edge ], [ %516, %._crit_edge190.loopexit ]
  %518 = getelementptr inbounds i8, ptr %0, i64 344
  %519 = fdiv double %517, %.lcssa
  store double %519, ptr %518, align 8, !tbaa !58
  call void @_ZNSt6vectorIPN4xmem6ThreadESaIS2_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %3) #8
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %3) #8
  call void @_ZNSt6vectorIPN4xmem12MemoryWorkerESaIS2_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %2) #8
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %2) #8
  br label %529

520:                                              ; preds = %.lr.ph189, %520
  %indvars.iv257 = phi i64 [ 0, %.lr.ph189 ], [ %indvars.iv.next258, %520 ]
  %521 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt6vectorIdSaIdEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %514, i64 noundef %indvars.iv257) #8
  %522 = load double, ptr %521, align 8, !tbaa !51
  %523 = load double, ptr %515, align 8, !tbaa !58
  %524 = fadd double %522, %523
  store double %524, ptr %515, align 8, !tbaa !58
  %indvars.iv.next258 = add nuw nsw i64 %indvars.iv257, 1
  %525 = load i32, ptr %98, align 8, !tbaa !40
  %526 = zext i32 %525 to i64
  %527 = icmp ult i64 %indvars.iv.next258, %526
  br i1 %527, label %520, label %._crit_edge190.loopexit, !llvm.loop !59

528:                                              ; preds = %.loopexit, %.loopexit.split-lp, %185, %198, %177, %165, %158, %226, %230, %261, %302, %232, %228, %224, %71
  %.pn129.pn.pn.pn = phi { ptr, i32 } [ %72, %71 ], [ %186, %185 ], [ %199, %198 ], [ %.pn129, %177 ], [ %.pn127, %158 ], [ %.pn125, %165 ], [ %225, %224 ], [ %227, %226 ], [ %229, %228 ], [ %231, %230 ], [ %233, %232 ], [ %262, %261 ], [ %303, %302 ], [ %lpad.loopexit, %.loopexit ], [ %lpad.loopexit.split-lp, %.loopexit.split-lp ]
  call void @_ZNSt6vectorIPN4xmem6ThreadESaIS2_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %3) #8
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %3) #8
  call void @_ZNSt6vectorIPN4xmem12MemoryWorkerESaIS2_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %2) #8
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %2) #8
  resume { ptr, i32 } %.pn129.pn.pn.pn

529:                                              ; preds = %43, %60, %63, %._crit_edge190, %20
  %.1 = phi i1 [ false, %20 ], [ false, %63 ], [ false, %60 ], [ true, %._crit_edge190 ], [ false, %43 ]
  ret i1 %.1
}

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

declare noundef i32 @_ZN4xmem13chasePointersEPmPS0_m(ptr noundef, ptr noundef, i64 noundef) #3

declare noundef i32 @_ZN4xmem19dummy_chasePointersEPmPS0_m(ptr noundef, ptr noundef, i64 noundef) #3

declare noundef i32 @_ZN4xmem26forwSequentialWrite_Word32EPvS0_(ptr noundef, ptr noundef) local_unnamed_addr #3

declare noundef zeroext i1 @_ZN4xmem32build_random_pointer_permutationEPvS0_NS_12chunk_size_tE(ptr noundef, ptr noundef, i32 noundef) local_unnamed_addr #3

declare noundef i32 @_ZN4xmem25forwSequentialRead_Word32EPvS0_(ptr noundef, ptr noundef) #3

declare noundef i32 @_ZN4xmem31dummy_forwSequentialLoop_Word32EPvS0_(ptr noundef, ptr noundef) #3

declare noundef i32 @_ZN4xmem32forwSequentialRead_Word32_Delay1EPvS0_(ptr noundef, ptr noundef) #3

declare noundef i32 @_ZN4xmem38dummy_forwSequentialLoop_Word32_Delay1EPvS0_(ptr noundef, ptr noundef) #3

declare noundef i32 @_ZN4xmem32forwSequentialRead_Word32_Delay2EPvS0_(ptr noundef, ptr noundef) #3

declare noundef i32 @_ZN4xmem38dummy_forwSequentialLoop_Word32_Delay2EPvS0_(ptr noundef, ptr noundef) #3

declare noundef i32 @_ZN4xmem32forwSequentialRead_Word32_Delay4EPvS0_(ptr noundef, ptr noundef) #3

declare noundef i32 @_ZN4xmem38dummy_forwSequentialLoop_Word32_Delay4EPvS0_(ptr noundef, ptr noundef) #3

declare noundef i32 @_ZN4xmem32forwSequentialRead_Word32_Delay8EPvS0_(ptr noundef, ptr noundef) #3

declare noundef i32 @_ZN4xmem38dummy_forwSequentialLoop_Word32_Delay8EPvS0_(ptr noundef, ptr noundef) #3

declare noundef i32 @_ZN4xmem33forwSequentialRead_Word32_Delay16EPvS0_(ptr noundef, ptr noundef) #3

declare noundef i32 @_ZN4xmem39dummy_forwSequentialLoop_Word32_Delay16EPvS0_(ptr noundef, ptr noundef) #3

declare noundef i32 @_ZN4xmem33forwSequentialRead_Word32_Delay32EPvS0_(ptr noundef, ptr noundef) #3

declare noundef i32 @_ZN4xmem39dummy_forwSequentialLoop_Word32_Delay32EPvS0_(ptr noundef, ptr noundef) #3

declare noundef i32 @_ZN4xmem33forwSequentialRead_Word32_Delay64EPvS0_(ptr noundef, ptr noundef) #3

declare noundef i32 @_ZN4xmem39dummy_forwSequentialLoop_Word32_Delay64EPvS0_(ptr noundef, ptr noundef) #3

declare noundef i32 @_ZN4xmem34forwSequentialRead_Word32_Delay128EPvS0_(ptr noundef, ptr noundef) #3

declare noundef i32 @_ZN4xmem40dummy_forwSequentialLoop_Word32_Delay128EPvS0_(ptr noundef, ptr noundef) #3

declare noundef i32 @_ZN4xmem34forwSequentialRead_Word32_Delay256EPvS0_(ptr noundef, ptr noundef) #3

declare noundef i32 @_ZN4xmem40dummy_forwSequentialLoop_Word32_Delay256EPvS0_(ptr noundef, ptr noundef) #3

declare noundef i32 @_ZN4xmem34forwSequentialRead_Word32_Delay512EPvS0_(ptr noundef, ptr noundef) #3

declare noundef i32 @_ZN4xmem44dummy_forwSequentialLoop_Word32_Delay512plusEPvS0_(ptr noundef, ptr noundef) #3

declare noundef i32 @_ZN4xmem35forwSequentialRead_Word32_Delay1024EPvS0_(ptr noundef, ptr noundef) #3

declare noundef i32 @_ZN4xmem25forwSequentialRead_Word64EPvS0_(ptr noundef, ptr noundef) #3

declare noundef i32 @_ZN4xmem31dummy_forwSequentialLoop_Word64EPvS0_(ptr noundef, ptr noundef) #3

declare noundef i32 @_ZN4xmem32forwSequentialRead_Word64_Delay1EPvS0_(ptr noundef, ptr noundef) #3

declare noundef i32 @_ZN4xmem38dummy_forwSequentialLoop_Word64_Delay1EPvS0_(ptr noundef, ptr noundef) #3

declare noundef i32 @_ZN4xmem32forwSequentialRead_Word64_Delay2EPvS0_(ptr noundef, ptr noundef) #3

declare noundef i32 @_ZN4xmem38dummy_forwSequentialLoop_Word64_Delay2EPvS0_(ptr noundef, ptr noundef) #3

declare noundef i32 @_ZN4xmem32forwSequentialRead_Word64_Delay4EPvS0_(ptr noundef, ptr noundef) #3

declare noundef i32 @_ZN4xmem38dummy_forwSequentialLoop_Word64_Delay4EPvS0_(ptr noundef, ptr noundef) #3

declare noundef i32 @_ZN4xmem32forwSequentialRead_Word64_Delay8EPvS0_(ptr noundef, ptr noundef) #3

declare noundef i32 @_ZN4xmem38dummy_forwSequentialLoop_Word64_Delay8EPvS0_(ptr noundef, ptr noundef) #3

declare noundef i32 @_ZN4xmem33forwSequentialRead_Word64_Delay16EPvS0_(ptr noundef, ptr noundef) #3

declare noundef i32 @_ZN4xmem39dummy_forwSequentialLoop_Word64_Delay16EPvS0_(ptr noundef, ptr noundef) #3

declare noundef i32 @_ZN4xmem33forwSequentialRead_Word64_Delay32EPvS0_(ptr noundef, ptr noundef) #3

declare noundef i32 @_ZN4xmem39dummy_forwSequentialLoop_Word64_Delay32EPvS0_(ptr noundef, ptr noundef) #3

declare noundef i32 @_ZN4xmem33forwSequentialRead_Word64_Delay64EPvS0_(ptr noundef, ptr noundef) #3

declare noundef i32 @_ZN4xmem39dummy_forwSequentialLoop_Word64_Delay64EPvS0_(ptr noundef, ptr noundef) #3

declare noundef i32 @_ZN4xmem34forwSequentialRead_Word64_Delay128EPvS0_(ptr noundef, ptr noundef) #3

declare noundef i32 @_ZN4xmem40dummy_forwSequentialLoop_Word64_Delay128EPvS0_(ptr noundef, ptr noundef) #3

declare noundef i32 @_ZN4xmem34forwSequentialRead_Word64_Delay256EPvS0_(ptr noundef, ptr noundef) #3

declare noundef i32 @_ZN4xmem44dummy_forwSequentialLoop_Word64_Delay256plusEPvS0_(ptr noundef, ptr noundef) #3

declare noundef i32 @_ZN4xmem34forwSequentialRead_Word64_Delay512EPvS0_(ptr noundef, ptr noundef) #3

declare noundef i32 @_ZN4xmem35forwSequentialRead_Word64_Delay1024EPvS0_(ptr noundef, ptr noundef) #3

; Function Attrs: mustprogress nounwind uwtable
declare dso_local void @_ZNSt6vectorIPN4xmem12MemoryWorkerESaIS2_EEC2Ev(ptr noundef nonnull align 8 dereferenceable(24)) unnamed_addr #4 align 2

; Function Attrs: mustprogress nounwind uwtable
declare dso_local void @_ZNSt6vectorIPN4xmem6ThreadESaIS2_EEC2Ev(ptr noundef nonnull align 8 dereferenceable(24)) unnamed_addr #4 align 2

declare noundef zeroext i1 @_ZN4xmem9Benchmark17startPowerThreadsEv(ptr noundef nonnull align 8 dereferenceable(315)) local_unnamed_addr #3

declare noundef i32 @_ZN4xmem19cpu_id_in_numa_nodeEjj(i32 noundef, i32 noundef) local_unnamed_addr #3

; Function Attrs: mustprogress uwtable
declare dso_local void @_ZNSt6vectorIPN4xmem12MemoryWorkerESaIS2_EE9push_backEOS2_(ptr noundef nonnull align 8 dereferenceable(24), ptr noundef nonnull align 8 dereferenceable(8)) local_unnamed_addr #1 align 2

; Function Attrs: nobuiltin allocsize(0)
declare noundef nonnull ptr @_Znwm(i64 noundef) local_unnamed_addr #5

declare void @_ZN4xmem13LatencyWorkerC1EPvmPFiPmPS2_mES5_i(ptr noundef nonnull align 8 dereferenceable(128), ptr noundef, i64 noundef, ptr noundef, ptr noundef, i32 noundef) unnamed_addr #3

; Function Attrs: nobuiltin nounwind
declare void @_ZdlPvm(ptr noundef, i64 noundef) local_unnamed_addr #6

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

declare void @_ZN4xmem10LoadWorkerC1EPvmPFiS1_S1_ES3_i(ptr noundef nonnull align 8 dereferenceable(144), ptr noundef, i64 noundef, ptr noundef, ptr noundef, i32 noundef) unnamed_addr #3

; Function Attrs: mustprogress uwtable
declare dso_local void @_ZNSt6vectorIPN4xmem6ThreadESaIS2_EE9push_backEOS2_(ptr noundef nonnull align 8 dereferenceable(24), ptr noundef nonnull align 8 dereferenceable(8)) local_unnamed_addr #1 align 2

; Function Attrs: mustprogress nounwind uwtable
declare dso_local noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt6vectorIPN4xmem12MemoryWorkerESaIS2_EEixEm(ptr noundef nonnull align 8 dereferenceable(24), i64 noundef) local_unnamed_addr #4 align 2

declare void @_ZN4xmem6ThreadC1EPNS_8RunnableE(ptr noundef nonnull align 8 dereferenceable(32), ptr noundef) unnamed_addr #3

; Function Attrs: mustprogress nounwind uwtable
declare dso_local noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt6vectorIPN4xmem6ThreadESaIS2_EEixEm(ptr noundef nonnull align 8 dereferenceable(24), i64 noundef) local_unnamed_addr #4 align 2

declare noundef zeroext i1 @_ZN4xmem6Thread16create_and_startEv(ptr noundef nonnull align 8 dereferenceable(32)) local_unnamed_addr #3

declare noundef zeroext i1 @_ZN4xmem6Thread4joinEv(ptr noundef nonnull align 8 dereferenceable(32)) local_unnamed_addr #3

declare noundef i32 @_ZN4xmem12MemoryWorker9getPassesEv(ptr noundef nonnull align 8 dereferenceable(106)) local_unnamed_addr #3

declare noundef i64 @_ZN4xmem12MemoryWorker16getAdjustedTicksEv(ptr noundef nonnull align 8 dereferenceable(106)) local_unnamed_addr #3

declare noundef i64 @_ZN4xmem12MemoryWorker20getElapsedDummyTicksEv(ptr noundef nonnull align 8 dereferenceable(106)) local_unnamed_addr #3

declare noundef i32 @_ZN4xmem12MemoryWorker15getBytesPerPassEv(ptr noundef nonnull align 8 dereferenceable(106)) local_unnamed_addr #3

declare noundef zeroext i1 @_ZN4xmem12MemoryWorker10hadWarningEv(ptr noundef nonnull align 8 dereferenceable(106)) local_unnamed_addr #3

; Function Attrs: mustprogress nounwind uwtable
declare dso_local noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt6vectorIdSaIdEEixEm(ptr noundef nonnull align 8 dereferenceable(24), i64 noundef) local_unnamed_addr #4 align 2

; Function Attrs: mustprogress uwtable
declare noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEm(ptr noundef nonnull align 8 dereferenceable(8), i64 noundef) local_unnamed_addr #1 align 2

; Function Attrs: mustprogress uwtable
declare noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEf(ptr noundef nonnull align 8 dereferenceable(8), float noundef) local_unnamed_addr #1 align 2

; Function Attrs: mustprogress uwtable
declare noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEd(ptr noundef nonnull align 8 dereferenceable(8), double noundef) local_unnamed_addr #1 align 2

; Function Attrs: nounwind
declare void @_ZN4xmem6ThreadD1Ev(ptr noundef nonnull align 8 dereferenceable(32)) unnamed_addr #7

; Function Attrs: mustprogress nounwind uwtable
declare dso_local void @_ZNSt6vectorIPN4xmem6ThreadESaIS2_EE5clearEv(ptr noundef nonnull align 8 dereferenceable(24)) local_unnamed_addr #4 align 2

; Function Attrs: mustprogress nounwind uwtable
declare dso_local void @_ZNSt6vectorIPN4xmem12MemoryWorkerESaIS2_EE5clearEv(ptr noundef nonnull align 8 dereferenceable(24)) local_unnamed_addr #4 align 2

declare noundef zeroext i1 @_ZN4xmem9Benchmark16stopPowerThreadsEv(ptr noundef nonnull align 8 dereferenceable(315)) local_unnamed_addr #3

declare void @_ZN4xmem9Benchmark14computeMetricsEv(ptr noundef nonnull align 8 dereferenceable(315)) local_unnamed_addr #3

; Function Attrs: mustprogress nounwind uwtable
declare dso_local void @_ZNSt6vectorIPN4xmem6ThreadESaIS2_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24)) unnamed_addr #4 align 2

; Function Attrs: mustprogress nounwind uwtable
declare dso_local void @_ZNSt6vectorIPN4xmem12MemoryWorkerESaIS2_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24)) unnamed_addr #4 align 2

attributes #0 = { 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 #1 = { 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 = { mustprogress nocallback nofree nosync nounwind willreturn memory(argmem: readwrite) }
attributes #3 = { "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }
attributes #4 = { mustprogress nounwind uwtable "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }
attributes #5 = { nobuiltin allocsize(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 #6 = { nobuiltin nounwind "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 #7 = { nounwind "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 #8 = { nounwind }
attributes #9 = { builtin allocsize(0) }
attributes #10 = { builtin 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, !10, i64 16}
!6 = !{!"_ZTSN4xmem9BenchmarkE", !7, i64 8, !10, i64 16, !11, i64 24, !11, i64 28, !11, i64 32, !11, i64 36, !12, i64 40, !13, i64 44, !14, i64 48, !11, i64 52, !15, i64 56, !19, i64 80, !23, i64 104, !27, i64 128, !27, i64 136, !27, i64 144, !27, i64 152, !27, i64 160, !27, i64 168, !27, i64 176, !27, i64 184, !27, i64 192, !28, i64 200, !23, i64 232, !23, i64 256, !28, i64 280, !30, i64 312, !30, i64 313, !30, i64 314}
!7 = !{!"any pointer", !8, i64 0}
!8 = !{!"omnipotent char", !9, i64 0}
!9 = !{!"Simple C++ TBAA"}
!10 = !{!"long", !8, i64 0}
!11 = !{!"int", !8, i64 0}
!12 = !{!"_ZTSN4xmem14pattern_mode_tE", !8, i64 0}
!13 = !{!"_ZTSN4xmem9rw_mode_tE", !8, i64 0}
!14 = !{!"_ZTSN4xmem12chunk_size_tE", !8, i64 0}
!15 = !{!"_ZTSSt6vectorIPN4xmem11PowerReaderESaIS2_EE", !16, i64 0}
!16 = !{!"_ZTSSt12_Vector_baseIPN4xmem11PowerReaderESaIS2_EE", !17, i64 0}
!17 = !{!"_ZTSNSt12_Vector_baseIPN4xmem11PowerReaderESaIS2_EE12_Vector_implE", !18, i64 0}
!18 = !{!"_ZTSNSt12_Vector_baseIPN4xmem11PowerReaderESaIS2_EE17_Vector_impl_dataE", !7, i64 0, !7, i64 8, !7, i64 16}
!19 = !{!"_ZTSSt6vectorIPN4xmem6ThreadESaIS2_EE", !20, i64 0}
!20 = !{!"_ZTSSt12_Vector_baseIPN4xmem6ThreadESaIS2_EE", !21, i64 0}
!21 = !{!"_ZTSNSt12_Vector_baseIPN4xmem6ThreadESaIS2_EE12_Vector_implE", !22, i64 0}
!22 = !{!"_ZTSNSt12_Vector_baseIPN4xmem6ThreadESaIS2_EE17_Vector_impl_dataE", !7, i64 0, !7, i64 8, !7, i64 16}
!23 = !{!"_ZTSSt6vectorIdSaIdEE", !24, i64 0}
!24 = !{!"_ZTSSt12_Vector_baseIdSaIdEE", !25, i64 0}
!25 = !{!"_ZTSNSt12_Vector_baseIdSaIdEE12_Vector_implE", !26, i64 0}
!26 = !{!"_ZTSNSt12_Vector_baseIdSaIdEE17_Vector_impl_dataE", !7, i64 0, !7, i64 8, !7, i64 16}
!27 = !{!"double", !8, i64 0}
!28 = !{!"_ZTSNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE", !29, i64 0, !10, i64 8, !8, i64 16}
!29 = !{!"_ZTSNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE12_Alloc_hiderE", !7, i64 0}
!30 = !{!"bool", !8, i64 0}
!31 = !{!6, !11, i64 28}
!32 = !{!6, !7, i64 8}
!33 = !{!6, !14, i64 48}
!34 = !{!35, !11, i64 352}
!35 = !{!"_ZTSN4xmem35DelayInjectedLoadedLatencyBenchmarkE", !36, i64 0, !11, i64 352}
!36 = !{!"_ZTSN4xmem16LatencyBenchmarkE", !6, i64 0, !23, i64 320, !27, i64 344}
!37 = !{!30, !30, i64 0}
!38 = !{i8 0, i8 2}
!39 = !{}
!40 = !{!6, !11, i64 24}
!41 = !{!6, !11, i64 36}
!42 = !{!7, !7, i64 0}
!43 = distinct !{!43, !44, !45}
!44 = !{!"llvm.loop.mustprogress"}
!45 = !{!"llvm.loop.peeled.count", i32 1}
!46 = distinct !{!46, !44}
!47 = distinct !{!47, !44}
!48 = distinct !{!48, !44}
!49 = !{!50, !50, i64 0}
!50 = !{!"float", !8, i64 0}
!51 = !{!27, !27, i64 0}
!52 = !{!6, !30, i64 314}
!53 = distinct !{!53, !44}
!54 = !{!55, !55, i64 0}
!55 = !{!"vtable pointer", !9, i64 0}
!56 = distinct !{!56, !44}
!57 = !{!6, !30, i64 313}
!58 = !{!36, !27, i64 344}
!59 = distinct !{!59, !44}


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