; LLVM IR from google/benchmark :: src (console_reporter)

; 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::__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] }
%"struct.std::_Rb_tree_const_iterator" = type { ptr }
%"class.benchmark::ConsoleReporter" = type <{ %"class.benchmark::BenchmarkReporter", i32, [4 x i8], i64, %"class.std::map", i8, [7 x i8] }>
%"class.benchmark::BenchmarkReporter" = type { ptr, ptr, ptr }
%"class.std::map" = type { %"class.std::_Rb_tree" }
%"class.std::_Rb_tree" = type { %"struct.std::_Rb_tree<std::__cxx11::basic_string<char>, std::pair<const std::__cxx11::basic_string<char>, benchmark::Counter>, std::_Select1st<std::pair<const std::__cxx11::basic_string<char>, benchmark::Counter>>, std::less<std::__cxx11::basic_string<char>>>::_Rb_tree_impl" }
%"struct.std::_Rb_tree<std::__cxx11::basic_string<char>, std::pair<const std::__cxx11::basic_string<char>, benchmark::Counter>, std::_Select1st<std::pair<const std::__cxx11::basic_string<char>, benchmark::Counter>>, std::less<std::__cxx11::basic_string<char>>>::_Rb_tree_impl" = type { [8 x i8], %"struct.std::_Rb_tree_header" }
%"struct.std::_Rb_tree_header" = type { %"struct.std::_Rb_tree_node_base", i64 }
%"struct.std::_Rb_tree_node_base" = type { i32, ptr, ptr, ptr }
%"struct.benchmark::BenchmarkReporter::Run" = type { %"struct.benchmark::BenchmarkName", i64, i64, i32, %"class.std::__cxx11::basic_string", i32, %"class.std::__cxx11::basic_string", i32, %"class.std::__cxx11::basic_string", i64, i64, i64, i64, i32, double, double, double, i8, i32, ptr, i64, ptr, i8, i8, %"class.std::map", %"struct.benchmark::MemoryManager::Result", double }
%"struct.benchmark::BenchmarkName" = type { %"class.std::__cxx11::basic_string", %"class.std::__cxx11::basic_string", %"class.std::__cxx11::basic_string", %"class.std::__cxx11::basic_string", %"class.std::__cxx11::basic_string", %"class.std::__cxx11::basic_string", %"class.std::__cxx11::basic_string", %"class.std::__cxx11::basic_string" }
%"struct.benchmark::MemoryManager::Result" = type { i64, i64, i64, i64, i64 }
%"struct.std::pair" = type { %"class.std::__cxx11::basic_string", %"class.benchmark::Counter" }
%"class.benchmark::Counter" = type { double, i32, i32 }

@.str.8 = external hidden unnamed_addr constant [2 x i8], align 1
@.str.9 = external hidden unnamed_addr constant [6 x i8], align 1
@.str.10 = external hidden unnamed_addr constant [21 x i8], align 1
@.str.11 = external hidden unnamed_addr constant [14 x i8], align 1
@.str.12 = external hidden unnamed_addr constant [25 x i8], align 1
@.str.13 = external hidden unnamed_addr constant [25 x i8], align 1
@.str.14 = external hidden unnamed_addr constant [2 x i8], align 1
@.str.15 = external hidden unnamed_addr constant [17 x i8], align 1
@.str.16 = external hidden unnamed_addr constant [52 x i8], align 1
@.str.17 = external hidden unnamed_addr constant [74 x i8], align 1
@__PRETTY_FUNCTION__._ZN9benchmark15ConsoleReporter12PrintRunDataERKNS_17BenchmarkReporter3RunE = external hidden unnamed_addr constant [67 x i8], align 1
@.str.18 = external hidden unnamed_addr constant [7 x i8], align 1
@.str.19 = external hidden unnamed_addr constant [1 x i8], align 1
@.str.20 = external hidden unnamed_addr constant [5 x i8], align 1
@.str.21 = external hidden unnamed_addr constant [2 x i8], align 1
@.str.22 = external hidden unnamed_addr constant [3 x i8], align 1
@.str.23 = external hidden unnamed_addr constant [7 x i8], align 1
@.str.24 = external hidden unnamed_addr constant [9 x i8], align 1
@.str.25 = external hidden unnamed_addr constant [4 x i8], align 1

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

; Function Attrs: mustprogress nounwind uwtable
declare dso_local ptr @_ZNKSt3mapINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEN9benchmark7CounterESt4lessIS5_ESaISt4pairIKS5_S7_EEE5beginEv(ptr noundef nonnull align 8 dereferenceable(48)) #1 align 2

; Function Attrs: mustprogress nounwind uwtable
declare dso_local ptr @_ZNKSt3mapINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEN9benchmark7CounterESt4lessIS5_ESaISt4pairIKS5_S7_EEE3endEv(ptr noundef nonnull align 8 dereferenceable(48)) #1 align 2

; Function Attrs: mustprogress nounwind uwtable
declare dso_local noundef zeroext i1 @_ZStneRKSt23_Rb_tree_const_iteratorISt4pairIKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEN9benchmark7CounterEEESD_(ptr noundef nonnull align 8 dereferenceable(8), ptr noundef nonnull align 8 dereferenceable(8)) #1

; Function Attrs: mustprogress nounwind uwtable
declare dso_local noundef nonnull align 8 dereferenceable(48) ptr @_ZNKSt23_Rb_tree_const_iteratorISt4pairIKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEN9benchmark7CounterEEEdeEv(ptr noundef nonnull align 8 dereferenceable(8)) #1 align 2

; Function Attrs: mustprogress nounwind uwtable
declare noundef ptr @_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE5c_strEv(ptr noundef nonnull align 8 dereferenceable(32)) #1 align 2

declare i32 @__gxx_personality_v0(...)

; Function Attrs: mustprogress nounwind uwtable
declare void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32)) unnamed_addr #1 align 2

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

; Function Attrs: mustprogress nounwind uwtable
declare dso_local noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt23_Rb_tree_const_iteratorISt4pairIKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEN9benchmark7CounterEEEppEv(ptr noundef nonnull align 8 dereferenceable(8)) #1 align 2

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

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

; Function Attrs: mustprogress uwtable
define dso_local void @_ZN9benchmark15ConsoleReporter12PrintRunDataERKNS_17BenchmarkReporter3RunE(ptr noundef nonnull align 8 dereferenceable(89) %0, ptr noundef nonnull align 8 dereferenceable(592) %1) unnamed_addr #2 align 2 personality ptr @__gxx_personality_v0 {
  %3 = alloca ptr, align 8
  %4 = alloca ptr, align 8
  %5 = alloca ptr, align 8
  %6 = alloca ptr, align 8
  %7 = alloca i32, align 4
  %8 = alloca %"class.std::__cxx11::basic_string", align 8
  %9 = alloca ptr, align 8
  %10 = alloca i32, align 4
  %11 = alloca i32, align 4
  %12 = alloca double, align 8
  %13 = alloca double, align 8
  %14 = alloca %"class.std::__cxx11::basic_string", align 8
  %15 = alloca %"class.std::__cxx11::basic_string", align 8
  %16 = alloca %"class.std::__cxx11::basic_string", align 8
  %17 = alloca ptr, align 8
  %18 = alloca ptr, align 8
  %19 = alloca %"struct.std::_Rb_tree_const_iterator", align 8
  %20 = alloca %"struct.std::_Rb_tree_const_iterator", align 8
  %21 = alloca ptr, align 8
  %22 = alloca i64, align 8
  %23 = alloca i64, align 8
  %24 = alloca i64, align 8
  %25 = alloca %"class.std::__cxx11::basic_string", align 8
  %26 = alloca ptr, align 8
  %27 = alloca %"class.std::__cxx11::basic_string", align 8
  %28 = alloca %"class.std::__cxx11::basic_string", align 8
  store ptr %0, ptr %3, align 8, !tbaa !5
  store ptr %1, ptr %4, align 8, !tbaa !5
  %29 = load ptr, ptr %3, align 8
  call void @llvm.lifetime.start.p0(i64 8, ptr %5) #7
  %30 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNK9benchmark17BenchmarkReporter15GetOutputStreamEv(ptr noundef nonnull align 8 dereferenceable(24) %29)
  store ptr %30, ptr %5, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %6) #7
  %31 = getelementptr inbounds %"class.benchmark::ConsoleReporter", ptr %29, i32 0, i32 1
  %32 = load i32, ptr %31, align 8, !tbaa !9
  %33 = and i32 %32, 1
  %34 = icmp ne i32 %33, 0
  %35 = zext i1 %34 to i64
  %36 = select i1 %34, ptr @_ZN9benchmark11ColorPrintfERSoNS_8LogColorEPKcz, ptr @_ZN9benchmarkL16IgnoreColorPrintERSoNS_8LogColorEPKcz
  store ptr %36, ptr %6, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 4, ptr %7) #7
  %37 = load ptr, ptr %4, align 8, !tbaa !5
  %38 = getelementptr inbounds %"struct.benchmark::BenchmarkReporter::Run", ptr %37, i32 0, i32 22
  %39 = load i8, ptr %38, align 8, !tbaa !23, !range !35, !noundef !36
  %40 = trunc i8 %39 to i1
  br i1 %40, label %46, label %41

41:                                               ; preds = %2
  %42 = load ptr, ptr %4, align 8, !tbaa !5
  %43 = getelementptr inbounds %"struct.benchmark::BenchmarkReporter::Run", ptr %42, i32 0, i32 23
  %44 = load i8, ptr %43, align 1, !tbaa !37, !range !35, !noundef !36
  %45 = trunc i8 %44 to i1
  br label %46

46:                                               ; preds = %41, %2
  %47 = phi i1 [ true, %2 ], [ %45, %41 ]
  %48 = zext i1 %47 to i64
  %49 = select i1 %47, i32 4, i32 2
  store i32 %49, ptr %7, align 4, !tbaa !38
  %50 = load ptr, ptr %6, align 8, !tbaa !5
  %51 = load ptr, ptr %5, align 8, !tbaa !5
  %52 = load i32, ptr %7, align 4, !tbaa !38
  %53 = getelementptr inbounds %"class.benchmark::ConsoleReporter", ptr %29, i32 0, i32 3
  %54 = load i64, ptr %53, align 8, !tbaa !40
  call void @llvm.lifetime.start.p0(i64 32, ptr %8) #7
  %55 = load ptr, ptr %4, align 8, !tbaa !5
  call void @_ZNK9benchmark17BenchmarkReporter3Run14benchmark_nameB5cxx11Ev(ptr dead_on_unwind writable sret(%"class.std::__cxx11::basic_string") align 8 %8, ptr noundef nonnull align 8 dereferenceable(592) %55)
  %56 = call noundef ptr @_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE5c_strEv(ptr noundef nonnull align 8 dereferenceable(32) %8) #7
  invoke void (ptr, i32, ptr, ...) %50(ptr noundef nonnull align 8 dereferenceable(8) %51, i32 noundef %52, ptr noundef @.str.9, i64 noundef %54, ptr noundef %56)
          to label %57 unwind label %70

57:                                               ; preds = %46
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %8) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr %8) #7
  %58 = load ptr, ptr %4, align 8, !tbaa !5
  %59 = getelementptr inbounds %"struct.benchmark::BenchmarkReporter::Run", ptr %58, i32 0, i32 7
  %60 = load i32, ptr %59, align 8, !tbaa !41
  %61 = icmp eq i32 2, %60
  br i1 %61, label %62, label %74

62:                                               ; preds = %57
  %63 = load ptr, ptr %6, align 8, !tbaa !5
  %64 = load ptr, ptr %5, align 8, !tbaa !5
  %65 = load ptr, ptr %4, align 8, !tbaa !5
  %66 = getelementptr inbounds %"struct.benchmark::BenchmarkReporter::Run", ptr %65, i32 0, i32 8
  %67 = call noundef ptr @_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE5c_strEv(ptr noundef nonnull align 8 dereferenceable(32) %66) #7
  call void (ptr, i32, ptr, ...) %63(ptr noundef nonnull align 8 dereferenceable(8) %64, i32 noundef 1, ptr noundef @.str.10, ptr noundef %67)
  %68 = load ptr, ptr %6, align 8, !tbaa !5
  %69 = load ptr, ptr %5, align 8, !tbaa !5
  call void (ptr, i32, ptr, ...) %68(ptr noundef nonnull align 8 dereferenceable(8) %69, i32 noundef 0, ptr noundef @.str.8)
  store i32 1, ptr %11, align 4
  br label %331

70:                                               ; preds = %46
  %71 = landingpad { ptr, i32 }
          cleanup
  %72 = extractvalue { ptr, i32 } %71, 0
  store ptr %72, ptr %9, align 8
  %73 = extractvalue { ptr, i32 } %71, 1
  store i32 %73, ptr %10, align 4
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %8) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr %8) #7
  br label %336

74:                                               ; preds = %57
  %75 = load ptr, ptr %4, align 8, !tbaa !5
  %76 = getelementptr inbounds %"struct.benchmark::BenchmarkReporter::Run", ptr %75, i32 0, i32 7
  %77 = load i32, ptr %76, align 8, !tbaa !41
  %78 = icmp eq i32 1, %77
  br i1 %78, label %79, label %87

79:                                               ; preds = %74
  %80 = load ptr, ptr %6, align 8, !tbaa !5
  %81 = load ptr, ptr %5, align 8, !tbaa !5
  %82 = load ptr, ptr %4, align 8, !tbaa !5
  %83 = getelementptr inbounds %"struct.benchmark::BenchmarkReporter::Run", ptr %82, i32 0, i32 8
  %84 = call noundef ptr @_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE5c_strEv(ptr noundef nonnull align 8 dereferenceable(32) %83) #7
  call void (ptr, i32, ptr, ...) %80(ptr noundef nonnull align 8 dereferenceable(8) %81, i32 noundef 7, ptr noundef @.str.11, ptr noundef %84)
  %85 = load ptr, ptr %6, align 8, !tbaa !5
  %86 = load ptr, ptr %5, align 8, !tbaa !5
  call void (ptr, i32, ptr, ...) %85(ptr noundef nonnull align 8 dereferenceable(8) %86, i32 noundef 0, ptr noundef @.str.8)
  store i32 1, ptr %11, align 4
  br label %331

87:                                               ; preds = %74
  call void @llvm.lifetime.start.p0(i64 8, ptr %12) #7
  %88 = load ptr, ptr %4, align 8, !tbaa !5
  %89 = call noundef double @_ZNK9benchmark17BenchmarkReporter3Run19GetAdjustedRealTimeEv(ptr noundef nonnull align 8 dereferenceable(592) %88)
  store double %89, ptr %12, align 8, !tbaa !42
  call void @llvm.lifetime.start.p0(i64 8, ptr %13) #7
  %90 = load ptr, ptr %4, align 8, !tbaa !5
  %91 = call noundef double @_ZNK9benchmark17BenchmarkReporter3Run18GetAdjustedCPUTimeEv(ptr noundef nonnull align 8 dereferenceable(592) %90)
  store double %91, ptr %13, align 8, !tbaa !42
  call void @llvm.lifetime.start.p0(i64 32, ptr %14) #7
  %92 = load double, ptr %12, align 8, !tbaa !42
  call void @_ZN9benchmarkL10FormatTimeB5cxx11Ed(ptr dead_on_unwind writable sret(%"class.std::__cxx11::basic_string") align 8 %14, double noundef %92)
  call void @llvm.lifetime.start.p0(i64 32, ptr %15) #7
  %93 = load double, ptr %13, align 8, !tbaa !42
  invoke void @_ZN9benchmarkL10FormatTimeB5cxx11Ed(ptr dead_on_unwind writable sret(%"class.std::__cxx11::basic_string") align 8 %15, double noundef %93)
          to label %94 unwind label %111

94:                                               ; preds = %87
  %95 = load ptr, ptr %4, align 8, !tbaa !5
  %96 = getelementptr inbounds %"struct.benchmark::BenchmarkReporter::Run", ptr %95, i32 0, i32 22
  %97 = load i8, ptr %96, align 8, !tbaa !23, !range !35, !noundef !36
  %98 = trunc i8 %97 to i1
  br i1 %98, label %99, label %124

99:                                               ; preds = %94
  call void @llvm.lifetime.start.p0(i64 32, ptr %16) #7
  %100 = load ptr, ptr %4, align 8, !tbaa !5
  %101 = getelementptr inbounds %"struct.benchmark::BenchmarkReporter::Run", ptr %100, i32 0, i32 18
  %102 = load i32, ptr %101, align 4, !tbaa !43
  invoke void @_ZN9benchmark13GetBigOStringB5cxx11ENS_4BigOE(ptr dead_on_unwind writable sret(%"class.std::__cxx11::basic_string") align 8 %16, i32 noundef %102)
          to label %103 unwind label %115

103:                                              ; preds = %99
  %104 = load ptr, ptr %6, align 8, !tbaa !5
  %105 = load ptr, ptr %5, align 8, !tbaa !5
  %106 = load double, ptr %12, align 8, !tbaa !42
  %107 = call noundef ptr @_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE5c_strEv(ptr noundef nonnull align 8 dereferenceable(32) %16) #7
  %108 = load double, ptr %13, align 8, !tbaa !42
  %109 = call noundef ptr @_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE5c_strEv(ptr noundef nonnull align 8 dereferenceable(32) %16) #7
  invoke void (ptr, i32, ptr, ...) %104(ptr noundef nonnull align 8 dereferenceable(8) %105, i32 noundef 3, ptr noundef @.str.12, double noundef %106, ptr noundef %107, double noundef %108, ptr noundef %109)
          to label %110 unwind label %119

110:                                              ; preds = %103
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %16) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr %16) #7
  br label %190

111:                                              ; preds = %87
  %112 = landingpad { ptr, i32 }
          cleanup
  %113 = extractvalue { ptr, i32 } %112, 0
  store ptr %113, ptr %9, align 8
  %114 = extractvalue { ptr, i32 } %112, 1
  store i32 %114, ptr %10, align 4
  br label %335

115:                                              ; preds = %99
  %116 = landingpad { ptr, i32 }
          cleanup
  %117 = extractvalue { ptr, i32 } %116, 0
  store ptr %117, ptr %9, align 8
  %118 = extractvalue { ptr, i32 } %116, 1
  store i32 %118, ptr %10, align 4
  br label %123

119:                                              ; preds = %103
  %120 = landingpad { ptr, i32 }
          cleanup
  %121 = extractvalue { ptr, i32 } %120, 0
  store ptr %121, ptr %9, align 8
  %122 = extractvalue { ptr, i32 } %120, 1
  store i32 %122, ptr %10, align 4
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %16) #7
  br label %123

123:                                              ; preds = %119, %115
  call void @llvm.lifetime.end.p0(i64 32, ptr %16) #7
  br label %334

124:                                              ; preds = %94
  %125 = load ptr, ptr %4, align 8, !tbaa !5
  %126 = getelementptr inbounds %"struct.benchmark::BenchmarkReporter::Run", ptr %125, i32 0, i32 23
  %127 = load i8, ptr %126, align 1, !tbaa !37, !range !35, !noundef !36
  %128 = trunc i8 %127 to i1
  br i1 %128, label %129, label %141

129:                                              ; preds = %124
  %130 = load ptr, ptr %6, align 8, !tbaa !5
  %131 = load ptr, ptr %5, align 8, !tbaa !5
  %132 = load double, ptr %12, align 8, !tbaa !42
  %133 = fmul double %132, 1.000000e+02
  %134 = load double, ptr %13, align 8, !tbaa !42
  %135 = fmul double %134, 1.000000e+02
  invoke void (ptr, i32, ptr, ...) %130(ptr noundef nonnull align 8 dereferenceable(8) %131, i32 noundef 3, ptr noundef @.str.13, double noundef %133, ptr noundef @.str.14, double noundef %135, ptr noundef @.str.14)
          to label %136 unwind label %137

136:                                              ; preds = %129
  br label %189

137:                                              ; preds = %327, %320, %200, %176, %129
  %138 = landingpad { ptr, i32 }
          cleanup
  %139 = extractvalue { ptr, i32 } %138, 0
  store ptr %139, ptr %9, align 8
  %140 = extractvalue { ptr, i32 } %138, 1
  store i32 %140, ptr %10, align 4
  br label %334

141:                                              ; preds = %124
  %142 = load ptr, ptr %4, align 8, !tbaa !5
  %143 = getelementptr inbounds %"struct.benchmark::BenchmarkReporter::Run", ptr %142, i32 0, i32 3
  %144 = load i32, ptr %143, align 8, !tbaa !44
  %145 = icmp ne i32 %144, 1
  br i1 %145, label %151, label %146

146:                                              ; preds = %141
  %147 = load ptr, ptr %4, align 8, !tbaa !5
  %148 = getelementptr inbounds %"struct.benchmark::BenchmarkReporter::Run", ptr %147, i32 0, i32 5
  %149 = load i32, ptr %148, align 8, !tbaa !45
  %150 = icmp eq i32 %149, 0
  br i1 %150, label %151, label %168

151:                                              ; preds = %146, %141
  call void @llvm.lifetime.start.p0(i64 8, ptr %17) #7
  %152 = load ptr, ptr %4, align 8, !tbaa !5
  %153 = getelementptr inbounds %"struct.benchmark::BenchmarkReporter::Run", ptr %152, i32 0, i32 13
  %154 = load i32, ptr %153, align 8, !tbaa !46
  %155 = invoke noundef ptr @_ZN9benchmark17GetTimeUnitStringENS_8TimeUnitE(i32 noundef %154)
          to label %156 unwind label %164

156:                                              ; preds = %151
  store ptr %155, ptr %17, align 8, !tbaa !5
  %157 = load ptr, ptr %6, align 8, !tbaa !5
  %158 = load ptr, ptr %5, align 8, !tbaa !5
  %159 = call noundef ptr @_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE5c_strEv(ptr noundef nonnull align 8 dereferenceable(32) %14) #7
  %160 = load ptr, ptr %17, align 8, !tbaa !5
  %161 = call noundef ptr @_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE5c_strEv(ptr noundef nonnull align 8 dereferenceable(32) %15) #7
  %162 = load ptr, ptr %17, align 8, !tbaa !5
  invoke void (ptr, i32, ptr, ...) %157(ptr noundef nonnull align 8 dereferenceable(8) %158, i32 noundef 3, ptr noundef @.str.15, ptr noundef %159, ptr noundef %160, ptr noundef %161, ptr noundef %162)
          to label %163 unwind label %164

163:                                              ; preds = %156
  call void @llvm.lifetime.end.p0(i64 8, ptr %17) #7
  br label %188

164:                                              ; preds = %156, %151
  %165 = landingpad { ptr, i32 }
          cleanup
  %166 = extractvalue { ptr, i32 } %165, 0
  store ptr %166, ptr %9, align 8
  %167 = extractvalue { ptr, i32 } %165, 1
  store i32 %167, ptr %10, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %17) #7
  br label %334

168:                                              ; preds = %146
  %169 = load ptr, ptr %4, align 8, !tbaa !5
  %170 = getelementptr inbounds %"struct.benchmark::BenchmarkReporter::Run", ptr %169, i32 0, i32 5
  %171 = load i32, ptr %170, align 8, !tbaa !45
  %172 = icmp eq i32 %171, 1
  br i1 %172, label %173, label %174

173:                                              ; preds = %168
  br label %176

174:                                              ; preds = %168
  call void @__assert_fail(ptr noundef @.str.16, ptr noundef @.str.17, i32 noundef 172, ptr noundef @__PRETTY_FUNCTION__._ZN9benchmark15ConsoleReporter12PrintRunDataERKNS_17BenchmarkReporter3RunE) #8
  unreachable

175:                                              ; No predecessors!
  br label %176

176:                                              ; preds = %175, %173
  %177 = load ptr, ptr %6, align 8, !tbaa !5
  %178 = load ptr, ptr %5, align 8, !tbaa !5
  %179 = load ptr, ptr %4, align 8, !tbaa !5
  %180 = getelementptr inbounds %"struct.benchmark::BenchmarkReporter::Run", ptr %179, i32 0, i32 14
  %181 = load double, ptr %180, align 8, !tbaa !47
  %182 = fmul double 1.000000e+02, %181
  %183 = load ptr, ptr %4, align 8, !tbaa !5
  %184 = getelementptr inbounds %"struct.benchmark::BenchmarkReporter::Run", ptr %183, i32 0, i32 15
  %185 = load double, ptr %184, align 8, !tbaa !48
  %186 = fmul double 1.000000e+02, %185
  invoke void (ptr, i32, ptr, ...) %177(ptr noundef nonnull align 8 dereferenceable(8) %178, i32 noundef 3, ptr noundef @.str.12, double noundef %182, ptr noundef @.str.14, double noundef %186, ptr noundef @.str.14)
          to label %187 unwind label %137

187:                                              ; preds = %176
  br label %188

188:                                              ; preds = %187, %163
  br label %189

189:                                              ; preds = %188, %136
  br label %190

190:                                              ; preds = %189, %110
  %191 = load ptr, ptr %4, align 8, !tbaa !5
  %192 = getelementptr inbounds %"struct.benchmark::BenchmarkReporter::Run", ptr %191, i32 0, i32 22
  %193 = load i8, ptr %192, align 8, !tbaa !23, !range !35, !noundef !36
  %194 = trunc i8 %193 to i1
  br i1 %194, label %207, label %195

195:                                              ; preds = %190
  %196 = load ptr, ptr %4, align 8, !tbaa !5
  %197 = getelementptr inbounds %"struct.benchmark::BenchmarkReporter::Run", ptr %196, i32 0, i32 23
  %198 = load i8, ptr %197, align 1, !tbaa !37, !range !35, !noundef !36
  %199 = trunc i8 %198 to i1
  br i1 %199, label %207, label %200

200:                                              ; preds = %195
  %201 = load ptr, ptr %6, align 8, !tbaa !5
  %202 = load ptr, ptr %5, align 8, !tbaa !5
  %203 = load ptr, ptr %4, align 8, !tbaa !5
  %204 = getelementptr inbounds %"struct.benchmark::BenchmarkReporter::Run", ptr %203, i32 0, i32 9
  %205 = load i64, ptr %204, align 8, !tbaa !49
  invoke void (ptr, i32, ptr, ...) %201(ptr noundef nonnull align 8 dereferenceable(8) %202, i32 noundef 6, ptr noundef @.str.18, i64 noundef %205)
          to label %206 unwind label %137

206:                                              ; preds = %200
  br label %207

207:                                              ; preds = %206, %195, %190
  call void @llvm.lifetime.start.p0(i64 8, ptr %18) #7
  %208 = load ptr, ptr %4, align 8, !tbaa !5
  %209 = getelementptr inbounds %"struct.benchmark::BenchmarkReporter::Run", ptr %208, i32 0, i32 24
  store ptr %209, ptr %18, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %19) #7
  %210 = load ptr, ptr %18, align 8, !tbaa !5
  %211 = call ptr @_ZNKSt3mapINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEN9benchmark7CounterESt4lessIS5_ESaISt4pairIKS5_S7_EEE5beginEv(ptr noundef nonnull align 8 dereferenceable(48) %210) #7
  %212 = getelementptr inbounds %"struct.std::_Rb_tree_const_iterator", ptr %19, i32 0, i32 0
  store ptr %211, ptr %212, align 8
  call void @llvm.lifetime.start.p0(i64 8, ptr %20) #7
  %213 = load ptr, ptr %18, align 8, !tbaa !5
  %214 = call ptr @_ZNKSt3mapINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEN9benchmark7CounterESt4lessIS5_ESaISt4pairIKS5_S7_EEE3endEv(ptr noundef nonnull align 8 dereferenceable(48) %213) #7
  %215 = getelementptr inbounds %"struct.std::_Rb_tree_const_iterator", ptr %20, i32 0, i32 0
  store ptr %214, ptr %215, align 8
  br label %216

216:                                              ; preds = %312, %207
  %217 = call noundef zeroext i1 @_ZStneRKSt23_Rb_tree_const_iteratorISt4pairIKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEN9benchmark7CounterEEESD_(ptr noundef nonnull align 8 dereferenceable(8) %19, ptr noundef nonnull align 8 dereferenceable(8) %20) #7
  br i1 %217, label %219, label %218

218:                                              ; preds = %216
  store i32 2, ptr %11, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %20) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %19) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %18) #7
  br label %316

219:                                              ; preds = %216
  call void @llvm.lifetime.start.p0(i64 8, ptr %21) #7
  %220 = call noundef nonnull align 8 dereferenceable(48) ptr @_ZNKSt23_Rb_tree_const_iteratorISt4pairIKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEN9benchmark7CounterEEEdeEv(ptr noundef nonnull align 8 dereferenceable(8) %19) #7
  store ptr %220, ptr %21, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %22) #7
  call void @llvm.lifetime.start.p0(i64 8, ptr %23) #7
  store i64 10, ptr %23, align 8, !tbaa !50
  call void @llvm.lifetime.start.p0(i64 8, ptr %24) #7
  %221 = load ptr, ptr %21, align 8, !tbaa !5
  %222 = getelementptr inbounds %"struct.std::pair", ptr %221, i32 0, i32 0
  %223 = call noundef i64 @_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE6lengthEv(ptr noundef nonnull align 8 dereferenceable(32) %222) #7
  store i64 %223, ptr %24, align 8, !tbaa !50
  %224 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZSt3maxImERKT_S2_S2_(ptr noundef nonnull align 8 dereferenceable(8) %23, ptr noundef nonnull align 8 dereferenceable(8) %24)
          to label %225 unwind label %244

225:                                              ; preds = %219
  %226 = load i64, ptr %224, align 8, !tbaa !50
  call void @llvm.lifetime.end.p0(i64 8, ptr %24) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %23) #7
  store i64 %226, ptr %22, align 8, !tbaa !50
  call void @llvm.lifetime.start.p0(i64 32, ptr %25) #7
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2Ev(ptr noundef nonnull align 8 dereferenceable(32) %25) #7
  call void @llvm.lifetime.start.p0(i64 8, ptr %26) #7
  store ptr @.str.19, ptr %26, align 8, !tbaa !5
  %227 = load ptr, ptr %4, align 8, !tbaa !5
  %228 = getelementptr inbounds %"struct.benchmark::BenchmarkReporter::Run", ptr %227, i32 0, i32 3
  %229 = load i32, ptr %228, align 8, !tbaa !44
  %230 = icmp eq i32 %229, 1
  br i1 %230, label %231, label %252

231:                                              ; preds = %225
  %232 = load ptr, ptr %4, align 8, !tbaa !5
  %233 = getelementptr inbounds %"struct.benchmark::BenchmarkReporter::Run", ptr %232, i32 0, i32 5
  %234 = load i32, ptr %233, align 8, !tbaa !45
  %235 = icmp eq i32 %234, 1
  br i1 %235, label %236, label %252

236:                                              ; preds = %231
  call void @llvm.lifetime.start.p0(i64 32, ptr %27) #7
  %237 = load ptr, ptr %21, align 8, !tbaa !5
  %238 = getelementptr inbounds %"struct.std::pair", ptr %237, i32 0, i32 1
  %239 = getelementptr inbounds %"class.benchmark::Counter", ptr %238, i32 0, i32 0
  %240 = load double, ptr %239, align 8, !tbaa !51
  %241 = fmul double 1.000000e+02, %240
  invoke void (ptr, ptr, ...) @_ZN9benchmark9StrFormatB5cxx11EPKcz(ptr dead_on_unwind writable sret(%"class.std::__cxx11::basic_string") align 8 %27, ptr noundef @.str.20, double noundef %241)
          to label %242 unwind label %248

242:                                              ; preds = %236
  %243 = call noundef nonnull align 8 dereferenceable(32) ptr @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEaSEOS4_(ptr noundef nonnull align 8 dereferenceable(32) %25, ptr noundef nonnull align 8 dereferenceable(32) %27) #7
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %27) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr %27) #7
  store ptr @.str.14, ptr %26, align 8, !tbaa !5
  br label %283

244:                                              ; preds = %219
  %245 = landingpad { ptr, i32 }
          cleanup
  %246 = extractvalue { ptr, i32 } %245, 0
  store ptr %246, ptr %9, align 8
  %247 = extractvalue { ptr, i32 } %245, 1
  store i32 %247, ptr %10, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %24) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %23) #7
  br label %315

248:                                              ; preds = %236
  %249 = landingpad { ptr, i32 }
          cleanup
  %250 = extractvalue { ptr, i32 } %249, 0
  store ptr %250, ptr %9, align 8
  %251 = extractvalue { ptr, i32 } %249, 1
  store i32 %251, ptr %10, align 4
  call void @llvm.lifetime.end.p0(i64 32, ptr %27) #7
  br label %314

252:                                              ; preds = %231, %225
  call void @llvm.lifetime.start.p0(i64 32, ptr %28) #7
  %253 = load ptr, ptr %21, align 8, !tbaa !5
  %254 = getelementptr inbounds %"struct.std::pair", ptr %253, i32 0, i32 1
  %255 = getelementptr inbounds %"class.benchmark::Counter", ptr %254, i32 0, i32 0
  %256 = load double, ptr %255, align 8, !tbaa !51
  %257 = load ptr, ptr %21, align 8, !tbaa !5
  %258 = getelementptr inbounds %"struct.std::pair", ptr %257, i32 0, i32 1
  %259 = getelementptr inbounds %"class.benchmark::Counter", ptr %258, i32 0, i32 2
  %260 = load i32, ptr %259, align 4, !tbaa !56
  invoke void @_ZN9benchmark19HumanReadableNumberB5cxx11EdNS_7Counter4OneKE(ptr dead_on_unwind writable sret(%"class.std::__cxx11::basic_string") align 8 %28, double noundef %256, i32 noundef %260)
          to label %261 unwind label %278

261:                                              ; preds = %252
  %262 = call noundef nonnull align 8 dereferenceable(32) ptr @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEaSEOS4_(ptr noundef nonnull align 8 dereferenceable(32) %25, ptr noundef nonnull align 8 dereferenceable(32) %28) #7
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %28) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr %28) #7
  %263 = load ptr, ptr %21, align 8, !tbaa !5
  %264 = getelementptr inbounds %"struct.std::pair", ptr %263, i32 0, i32 1
  %265 = getelementptr inbounds %"class.benchmark::Counter", ptr %264, i32 0, i32 1
  %266 = load i32, ptr %265, align 8, !tbaa !57
  %267 = and i32 %266, 1
  %268 = icmp ne i32 %267, 0
  br i1 %268, label %269, label %282

269:                                              ; preds = %261
  %270 = load ptr, ptr %21, align 8, !tbaa !5
  %271 = getelementptr inbounds %"struct.std::pair", ptr %270, i32 0, i32 1
  %272 = getelementptr inbounds %"class.benchmark::Counter", ptr %271, i32 0, i32 1
  %273 = load i32, ptr %272, align 8, !tbaa !57
  %274 = and i32 %273, -2147483648
  %275 = icmp ne i32 %274, 0
  %276 = zext i1 %275 to i64
  %277 = select i1 %275, ptr @.str.21, ptr @.str.22
  store ptr %277, ptr %26, align 8, !tbaa !5
  br label %282

278:                                              ; preds = %252
  %279 = landingpad { ptr, i32 }
          cleanup
  %280 = extractvalue { ptr, i32 } %279, 0
  store ptr %280, ptr %9, align 8
  %281 = extractvalue { ptr, i32 } %279, 1
  store i32 %281, ptr %10, align 4
  call void @llvm.lifetime.end.p0(i64 32, ptr %28) #7
  br label %314

282:                                              ; preds = %269, %261
  br label %283

283:                                              ; preds = %282, %242
  %284 = getelementptr inbounds %"class.benchmark::ConsoleReporter", ptr %29, i32 0, i32 1
  %285 = load i32, ptr %284, align 8, !tbaa !9
  %286 = and i32 %285, 2
  %287 = icmp ne i32 %286, 0
  br i1 %287, label %288, label %302

288:                                              ; preds = %283
  %289 = load ptr, ptr %6, align 8, !tbaa !5
  %290 = load ptr, ptr %5, align 8, !tbaa !5
  %291 = load i64, ptr %22, align 8, !tbaa !50
  %292 = load ptr, ptr %26, align 8, !tbaa !5
  %293 = call i64 @strlen(ptr noundef %292) #9
  %294 = sub i64 %291, %293
  %295 = call noundef ptr @_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE5c_strEv(ptr noundef nonnull align 8 dereferenceable(32) %25) #7
  %296 = load ptr, ptr %26, align 8, !tbaa !5
  invoke void (ptr, i32, ptr, ...) %289(ptr noundef nonnull align 8 dereferenceable(8) %290, i32 noundef 0, ptr noundef @.str.23, i64 noundef %294, ptr noundef %295, ptr noundef %296)
          to label %297 unwind label %298

297:                                              ; preds = %288
  br label %311

298:                                              ; preds = %302, %288
  %299 = landingpad { ptr, i32 }
          cleanup
  %300 = extractvalue { ptr, i32 } %299, 0
  store ptr %300, ptr %9, align 8
  %301 = extractvalue { ptr, i32 } %299, 1
  store i32 %301, ptr %10, align 4
  br label %314

302:                                              ; preds = %283
  %303 = load ptr, ptr %6, align 8, !tbaa !5
  %304 = load ptr, ptr %5, align 8, !tbaa !5
  %305 = load ptr, ptr %21, align 8, !tbaa !5
  %306 = getelementptr inbounds %"struct.std::pair", ptr %305, i32 0, i32 0
  %307 = call noundef ptr @_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE5c_strEv(ptr noundef nonnull align 8 dereferenceable(32) %306) #7
  %308 = call noundef ptr @_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE5c_strEv(ptr noundef nonnull align 8 dereferenceable(32) %25) #7
  %309 = load ptr, ptr %26, align 8, !tbaa !5
  invoke void (ptr, i32, ptr, ...) %303(ptr noundef nonnull align 8 dereferenceable(8) %304, i32 noundef 0, ptr noundef @.str.24, ptr noundef %307, ptr noundef %308, ptr noundef %309)
          to label %310 unwind label %298

310:                                              ; preds = %302
  br label %311

311:                                              ; preds = %310, %297
  call void @llvm.lifetime.end.p0(i64 8, ptr %26) #7
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %25) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr %25) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %22) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %21) #7
  br label %312

312:                                              ; preds = %311
  %313 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt23_Rb_tree_const_iteratorISt4pairIKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEN9benchmark7CounterEEEppEv(ptr noundef nonnull align 8 dereferenceable(8) %19) #7
  br label %216

314:                                              ; preds = %298, %278, %248
  call void @llvm.lifetime.end.p0(i64 8, ptr %26) #7
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %25) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr %25) #7
  br label %315

315:                                              ; preds = %314, %244
  call void @llvm.lifetime.end.p0(i64 8, ptr %22) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %21) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %20) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %19) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %18) #7
  br label %334

316:                                              ; preds = %218
  %317 = load ptr, ptr %4, align 8, !tbaa !5
  %318 = getelementptr inbounds %"struct.benchmark::BenchmarkReporter::Run", ptr %317, i32 0, i32 6
  %319 = call noundef zeroext i1 @_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE5emptyEv(ptr noundef nonnull align 8 dereferenceable(32) %318) #7
  br i1 %319, label %327, label %320

320:                                              ; preds = %316
  %321 = load ptr, ptr %6, align 8, !tbaa !5
  %322 = load ptr, ptr %5, align 8, !tbaa !5
  %323 = load ptr, ptr %4, align 8, !tbaa !5
  %324 = getelementptr inbounds %"struct.benchmark::BenchmarkReporter::Run", ptr %323, i32 0, i32 6
  %325 = call noundef ptr @_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE5c_strEv(ptr noundef nonnull align 8 dereferenceable(32) %324) #7
  invoke void (ptr, i32, ptr, ...) %321(ptr noundef nonnull align 8 dereferenceable(8) %322, i32 noundef 0, ptr noundef @.str.25, ptr noundef %325)
          to label %326 unwind label %137

326:                                              ; preds = %320
  br label %327

327:                                              ; preds = %326, %316
  %328 = load ptr, ptr %6, align 8, !tbaa !5
  %329 = load ptr, ptr %5, align 8, !tbaa !5
  invoke void (ptr, i32, ptr, ...) %328(ptr noundef nonnull align 8 dereferenceable(8) %329, i32 noundef 0, ptr noundef @.str.8)
          to label %330 unwind label %137

330:                                              ; preds = %327
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %15) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr %15) #7
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %14) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr %14) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %13) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %12) #7
  store i32 0, ptr %11, align 4
  br label %331

331:                                              ; preds = %330, %79, %62
  call void @llvm.lifetime.end.p0(i64 4, ptr %7) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %6) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %5) #7
  %332 = load i32, ptr %11, align 4
  switch i32 %332, label %342 [
    i32 0, label %333
    i32 1, label %333
  ]

333:                                              ; preds = %331, %331
  ret void

334:                                              ; preds = %315, %164, %137, %123
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %15) #7
  br label %335

335:                                              ; preds = %334, %111
  call void @llvm.lifetime.end.p0(i64 32, ptr %15) #7
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %14) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr %14) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %13) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %12) #7
  br label %336

336:                                              ; preds = %335, %70
  call void @llvm.lifetime.end.p0(i64 4, ptr %7) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %6) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %5) #7
  br label %337

337:                                              ; preds = %336
  %338 = load ptr, ptr %9, align 8
  %339 = load i32, ptr %10, align 4
  %340 = insertvalue { ptr, i32 } poison, ptr %338, 0
  %341 = insertvalue { ptr, i32 } %340, i32 %339, 1
  resume { ptr, i32 } %341

342:                                              ; preds = %331
  unreachable
}

declare void @_ZN9benchmark11ColorPrintfERSoNS_8LogColorEPKcz(ptr noundef nonnull align 8 dereferenceable(8), i32 noundef, ptr noundef, ...) #3

; Function Attrs: mustprogress uwtable
declare hidden void @_ZN9benchmarkL16IgnoreColorPrintERSoNS_8LogColorEPKcz(ptr noundef nonnull align 8 dereferenceable(8), i32 noundef, ptr noundef, ...) #2

declare void @_ZNK9benchmark17BenchmarkReporter3Run14benchmark_nameB5cxx11Ev(ptr dead_on_unwind writable sret(%"class.std::__cxx11::basic_string") align 8, ptr noundef nonnull align 8 dereferenceable(592)) #3

declare noundef double @_ZNK9benchmark17BenchmarkReporter3Run19GetAdjustedRealTimeEv(ptr noundef nonnull align 8 dereferenceable(592)) #3

declare noundef double @_ZNK9benchmark17BenchmarkReporter3Run18GetAdjustedCPUTimeEv(ptr noundef nonnull align 8 dereferenceable(592)) #3

; Function Attrs: mustprogress uwtable
declare hidden void @_ZN9benchmarkL10FormatTimeB5cxx11Ed(ptr dead_on_unwind noalias writable sret(%"class.std::__cxx11::basic_string") align 8, double noundef) #2

declare void @_ZN9benchmark13GetBigOStringB5cxx11ENS_4BigOE(ptr dead_on_unwind writable sret(%"class.std::__cxx11::basic_string") align 8, i32 noundef) #3

; Function Attrs: inlinehint mustprogress nounwind uwtable
declare dso_local noundef ptr @_ZN9benchmark17GetTimeUnitStringENS_8TimeUnitE(i32 noundef) #4

; Function Attrs: noreturn nounwind
declare void @__assert_fail(ptr noundef, ptr noundef, i32 noundef, ptr noundef) #5

; Function Attrs: inlinehint mustprogress nounwind uwtable
declare dso_local noundef nonnull align 8 dereferenceable(8) ptr @_ZSt3maxImERKT_S2_S2_(ptr noundef nonnull align 8 dereferenceable(8), ptr noundef nonnull align 8 dereferenceable(8)) #4

; Function Attrs: mustprogress nounwind uwtable
declare void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2Ev(ptr noundef nonnull align 8 dereferenceable(32)) unnamed_addr #1 align 2

declare void @_ZN9benchmark9StrFormatB5cxx11EPKcz(ptr dead_on_unwind writable sret(%"class.std::__cxx11::basic_string") align 8, ptr noundef, ...) #3

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

declare void @_ZN9benchmark19HumanReadableNumberB5cxx11EdNS_7Counter4OneKE(ptr dead_on_unwind writable sret(%"class.std::__cxx11::basic_string") align 8, double noundef, i32 noundef) #3

; Function Attrs: nounwind willreturn memory(read)
declare i64 @strlen(ptr noundef) #6

; Function Attrs: mustprogress nounwind uwtable
declare noundef zeroext i1 @_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE5emptyEv(ptr noundef nonnull align 8 dereferenceable(32)) #1 align 2

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

!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, !12, i64 24}
!10 = !{!"_ZTSN9benchmark15ConsoleReporterE", !11, i64 0, !12, i64 24, !13, i64 32, !14, i64 40, !22, i64 88}
!11 = !{!"_ZTSN9benchmark17BenchmarkReporterE", !6, i64 8, !6, i64 16}
!12 = !{!"_ZTSN9benchmark15ConsoleReporter13OutputOptionsE", !7, i64 0}
!13 = !{!"long", !7, i64 0}
!14 = !{!"_ZTSSt3mapINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEN9benchmark7CounterESt4lessIS5_ESaISt4pairIKS5_S7_EEE", !15, i64 0}
!15 = !{!"_ZTSSt8_Rb_treeINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESt4pairIKS5_N9benchmark7CounterEESt10_Select1stISA_ESt4lessIS5_ESaISA_EE", !16, i64 0}
!16 = !{!"_ZTSNSt8_Rb_treeINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESt4pairIKS5_N9benchmark7CounterEESt10_Select1stISA_ESt4lessIS5_ESaISA_EE13_Rb_tree_implISE_Lb1EEE", !17, i64 0, !19, i64 8}
!17 = !{!"_ZTSSt20_Rb_tree_key_compareISt4lessINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEEE", !18, i64 0}
!18 = !{!"_ZTSSt4lessINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEE"}
!19 = !{!"_ZTSSt15_Rb_tree_header", !20, i64 0, !13, i64 32}
!20 = !{!"_ZTSSt18_Rb_tree_node_base", !21, i64 0, !6, i64 8, !6, i64 16, !6, i64 24}
!21 = !{!"_ZTSSt14_Rb_tree_color", !7, i64 0}
!22 = !{!"bool", !7, i64 0}
!23 = !{!24, !22, i64 488}
!24 = !{!"_ZTSN9benchmark17BenchmarkReporter3RunE", !25, i64 0, !13, i64 256, !13, i64 264, !28, i64 272, !26, i64 280, !29, i64 312, !26, i64 320, !30, i64 352, !26, i64 360, !13, i64 392, !13, i64 400, !13, i64 408, !13, i64 416, !31, i64 424, !32, i64 432, !32, i64 440, !32, i64 448, !22, i64 456, !33, i64 460, !6, i64 464, !13, i64 472, !6, i64 480, !22, i64 488, !22, i64 489, !14, i64 496, !34, i64 544, !32, i64 584}
!25 = !{!"_ZTSN9benchmark13BenchmarkNameE", !26, i64 0, !26, i64 32, !26, i64 64, !26, i64 96, !26, i64 128, !26, i64 160, !26, i64 192, !26, i64 224}
!26 = !{!"_ZTSNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE", !27, i64 0, !13, i64 8, !7, i64 16}
!27 = !{!"_ZTSNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE12_Alloc_hiderE", !6, i64 0}
!28 = !{!"_ZTSN9benchmark17BenchmarkReporter3Run7RunTypeE", !7, i64 0}
!29 = !{!"_ZTSN9benchmark13StatisticUnitE", !7, i64 0}
!30 = !{!"_ZTSN9benchmark8internal7SkippedE", !7, i64 0}
!31 = !{!"_ZTSN9benchmark8TimeUnitE", !7, i64 0}
!32 = !{!"double", !7, i64 0}
!33 = !{!"_ZTSN9benchmark4BigOE", !7, i64 0}
!34 = !{!"_ZTSN9benchmark13MemoryManager6ResultE", !13, i64 0, !13, i64 8, !13, i64 16, !13, i64 24, !13, i64 32}
!35 = !{i8 0, i8 2}
!36 = !{}
!37 = !{!24, !22, i64 489}
!38 = !{!39, !39, i64 0}
!39 = !{!"_ZTSN9benchmark8LogColorE", !7, i64 0}
!40 = !{!10, !13, i64 32}
!41 = !{!24, !30, i64 352}
!42 = !{!32, !32, i64 0}
!43 = !{!24, !33, i64 460}
!44 = !{!24, !28, i64 272}
!45 = !{!24, !29, i64 312}
!46 = !{!24, !31, i64 424}
!47 = !{!24, !32, i64 432}
!48 = !{!24, !32, i64 440}
!49 = !{!24, !13, i64 392}
!50 = !{!13, !13, i64 0}
!51 = !{!52, !32, i64 32}
!52 = !{!"_ZTSSt4pairIKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEN9benchmark7CounterEE", !26, i64 0, !53, i64 32}
!53 = !{!"_ZTSN9benchmark7CounterE", !32, i64 0, !54, i64 8, !55, i64 12}
!54 = !{!"_ZTSN9benchmark7Counter5FlagsE", !7, i64 0}
!55 = !{!"_ZTSN9benchmark7Counter4OneKE", !7, i64 0}
!56 = !{!52, !55, i64 44}
!57 = !{!52, !54, i64 40}


; 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::__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] }
%"struct.std::_Rb_tree_const_iterator" = type { ptr }

@.str.8 = external hidden unnamed_addr constant [2 x i8], align 1
@.str.9 = external hidden unnamed_addr constant [6 x i8], align 1
@.str.10 = external hidden unnamed_addr constant [21 x i8], align 1
@.str.11 = external hidden unnamed_addr constant [14 x i8], align 1
@.str.12 = external hidden unnamed_addr constant [25 x i8], align 1
@.str.13 = external hidden unnamed_addr constant [25 x i8], align 1
@.str.14 = external hidden unnamed_addr constant [2 x i8], align 1
@.str.15 = external hidden unnamed_addr constant [17 x i8], align 1
@.str.16 = external hidden unnamed_addr constant [52 x i8], align 1
@.str.17 = external hidden unnamed_addr constant [74 x i8], align 1
@__PRETTY_FUNCTION__._ZN9benchmark15ConsoleReporter12PrintRunDataERKNS_17BenchmarkReporter3RunE = external hidden unnamed_addr constant [67 x i8], align 1
@.str.18 = external hidden unnamed_addr constant [7 x i8], align 1
@.str.19 = external hidden unnamed_addr constant [1 x i8], align 1
@.str.20 = external hidden unnamed_addr constant [5 x i8], align 1
@.str.21 = external hidden unnamed_addr constant [2 x i8], align 1
@.str.22 = external hidden unnamed_addr constant [3 x i8], align 1
@.str.23 = external hidden unnamed_addr constant [7 x i8], align 1
@.str.24 = external hidden unnamed_addr constant [9 x i8], align 1
@.str.25 = external hidden unnamed_addr constant [4 x i8], align 1

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

; Function Attrs: mustprogress nounwind uwtable
declare dso_local ptr @_ZNKSt3mapINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEN9benchmark7CounterESt4lessIS5_ESaISt4pairIKS5_S7_EEE5beginEv(ptr noundef nonnull align 8 dereferenceable(48)) local_unnamed_addr #1 align 2

; Function Attrs: mustprogress nounwind uwtable
declare dso_local ptr @_ZNKSt3mapINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEN9benchmark7CounterESt4lessIS5_ESaISt4pairIKS5_S7_EEE3endEv(ptr noundef nonnull align 8 dereferenceable(48)) local_unnamed_addr #1 align 2

; Function Attrs: mustprogress nounwind uwtable
declare dso_local noundef zeroext i1 @_ZStneRKSt23_Rb_tree_const_iteratorISt4pairIKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEN9benchmark7CounterEEESD_(ptr noundef nonnull align 8 dereferenceable(8), ptr noundef nonnull align 8 dereferenceable(8)) local_unnamed_addr #1

; Function Attrs: mustprogress nounwind uwtable
declare dso_local noundef nonnull align 8 dereferenceable(48) ptr @_ZNKSt23_Rb_tree_const_iteratorISt4pairIKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEN9benchmark7CounterEEEdeEv(ptr noundef nonnull align 8 dereferenceable(8)) local_unnamed_addr #1 align 2

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

declare i32 @__gxx_personality_v0(...)

; Function Attrs: mustprogress nounwind uwtable
declare void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32)) unnamed_addr #1 align 2

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

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

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

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

; Function Attrs: mustprogress uwtable
define dso_local void @_ZN9benchmark15ConsoleReporter12PrintRunDataERKNS_17BenchmarkReporter3RunE(ptr noundef nonnull align 8 dereferenceable(89) %0, ptr noundef nonnull align 8 dereferenceable(592) %1) unnamed_addr #2 align 2 personality ptr @__gxx_personality_v0 {
  %3 = alloca %"class.std::__cxx11::basic_string", align 8
  %4 = alloca %"class.std::__cxx11::basic_string", align 8
  %5 = alloca %"class.std::__cxx11::basic_string", align 8
  %6 = alloca %"class.std::__cxx11::basic_string", align 8
  %7 = alloca %"struct.std::_Rb_tree_const_iterator", align 8
  %8 = alloca %"struct.std::_Rb_tree_const_iterator", align 8
  %9 = alloca i64, align 8
  %10 = alloca i64, align 8
  %11 = alloca %"class.std::__cxx11::basic_string", align 8
  %12 = alloca %"class.std::__cxx11::basic_string", align 8
  %13 = alloca %"class.std::__cxx11::basic_string", align 8
  %14 = tail call noundef nonnull align 8 dereferenceable(8) ptr @_ZNK9benchmark17BenchmarkReporter15GetOutputStreamEv(ptr noundef nonnull align 8 dereferenceable(24) %0)
  %15 = getelementptr inbounds i8, ptr %0, i64 24
  %16 = load i32, ptr %15, align 8, !tbaa !5
  %17 = and i32 %16, 1
  %.not = icmp eq i32 %17, 0
  %18 = select i1 %.not, ptr @_ZN9benchmarkL16IgnoreColorPrintERSoNS_8LogColorEPKcz, ptr @_ZN9benchmark11ColorPrintfERSoNS_8LogColorEPKcz
  %19 = getelementptr inbounds i8, ptr %1, i64 488
  %20 = load i8, ptr %19, align 8, !tbaa !22, !range !34, !noundef !35
  %21 = trunc nuw i8 %20 to i1
  %22 = getelementptr inbounds i8, ptr %1, i64 489
  %23 = load i8, ptr %22, align 1, !range !34
  %24 = trunc nuw i8 %23 to i1
  %25 = select i1 %21, i1 true, i1 %24
  %26 = select i1 %25, i32 4, i32 2
  %27 = getelementptr inbounds i8, ptr %0, i64 32
  %28 = load i64, ptr %27, align 8, !tbaa !36
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %3) #7
  call void @_ZNK9benchmark17BenchmarkReporter3Run14benchmark_nameB5cxx11Ev(ptr dead_on_unwind nonnull writable sret(%"class.std::__cxx11::basic_string") align 8 %3, ptr noundef nonnull align 8 dereferenceable(592) %1)
  %29 = call noundef ptr @_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE5c_strEv(ptr noundef nonnull align 8 dereferenceable(32) %3) #7
  invoke void (ptr, i32, ptr, ...) %18(ptr noundef nonnull align 8 dereferenceable(8) %14, i32 noundef %26, ptr noundef nonnull @.str.9, i64 noundef %28, ptr noundef %29)
          to label %30 unwind label %36, !callees !37

30:                                               ; preds = %2
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %3) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %3) #7
  %31 = getelementptr inbounds i8, ptr %1, i64 352
  %32 = load i32, ptr %31, align 8, !tbaa !38
  switch i32 %32, label %41 [
    i32 2, label %33
    i32 1, label %38
  ]

33:                                               ; preds = %30
  %34 = getelementptr inbounds i8, ptr %1, i64 360
  %35 = call noundef ptr @_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE5c_strEv(ptr noundef nonnull align 8 dereferenceable(32) %34) #7
  call void (ptr, i32, ptr, ...) %18(ptr noundef nonnull align 8 dereferenceable(8) %14, i32 noundef 1, ptr noundef nonnull @.str.10, ptr noundef %35), !callees !37
  call void (ptr, i32, ptr, ...) %18(ptr noundef nonnull align 8 dereferenceable(8) %14, i32 noundef 0, ptr noundef nonnull @.str.8), !callees !37
  br label %157

36:                                               ; preds = %2
  %37 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %3) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %3) #7
  br label %160

38:                                               ; preds = %30
  %39 = getelementptr inbounds i8, ptr %1, i64 360
  %40 = call noundef ptr @_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE5c_strEv(ptr noundef nonnull align 8 dereferenceable(32) %39) #7
  call void (ptr, i32, ptr, ...) %18(ptr noundef nonnull align 8 dereferenceable(8) %14, i32 noundef 7, ptr noundef nonnull @.str.11, ptr noundef %40), !callees !37
  call void (ptr, i32, ptr, ...) %18(ptr noundef nonnull align 8 dereferenceable(8) %14, i32 noundef 0, ptr noundef nonnull @.str.8), !callees !37
  br label %157

41:                                               ; preds = %30
  %42 = call noundef double @_ZNK9benchmark17BenchmarkReporter3Run19GetAdjustedRealTimeEv(ptr noundef nonnull align 8 dereferenceable(592) %1)
  %43 = call noundef double @_ZNK9benchmark17BenchmarkReporter3Run18GetAdjustedCPUTimeEv(ptr noundef nonnull align 8 dereferenceable(592) %1)
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %4) #7
  call void @_ZN9benchmarkL10FormatTimeB5cxx11Ed(ptr dead_on_unwind nonnull writable sret(%"class.std::__cxx11::basic_string") align 8 %4, double noundef %42)
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %5) #7
  invoke void @_ZN9benchmarkL10FormatTimeB5cxx11Ed(ptr dead_on_unwind nonnull writable sret(%"class.std::__cxx11::basic_string") align 8 %5, double noundef %43)
          to label %44 unwind label %54

44:                                               ; preds = %41
  %45 = load i8, ptr %19, align 8, !tbaa !22, !range !34, !noundef !35
  %46 = trunc nuw i8 %45 to i1
  br i1 %46, label %47, label %61

47:                                               ; preds = %44
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %6) #7
  %48 = getelementptr inbounds i8, ptr %1, i64 460
  %49 = load i32, ptr %48, align 4, !tbaa !39
  invoke void @_ZN9benchmark13GetBigOStringB5cxx11ENS_4BigOE(ptr dead_on_unwind nonnull writable sret(%"class.std::__cxx11::basic_string") align 8 %6, i32 noundef %49)
          to label %50 unwind label %56

50:                                               ; preds = %47
  %51 = call noundef ptr @_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE5c_strEv(ptr noundef nonnull align 8 dereferenceable(32) %6) #7
  %52 = call noundef ptr @_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE5c_strEv(ptr noundef nonnull align 8 dereferenceable(32) %6) #7
  invoke void (ptr, i32, ptr, ...) %18(ptr noundef nonnull align 8 dereferenceable(8) %14, i32 noundef 3, ptr noundef nonnull @.str.12, double noundef %42, ptr noundef %51, double noundef %43, ptr noundef %52)
          to label %53 unwind label %58, !callees !37

53:                                               ; preds = %50
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %6) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %6) #7
  br label %89

54:                                               ; preds = %41
  %55 = landingpad { ptr, i32 }
          cleanup
  br label %159

56:                                               ; preds = %47
  %57 = landingpad { ptr, i32 }
          cleanup
  br label %60

58:                                               ; preds = %50
  %59 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %6) #7
  br label %60

60:                                               ; preds = %58, %56
  %.pn = phi { ptr, i32 } [ %59, %58 ], [ %57, %56 ]
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %6) #7
  br label %158

61:                                               ; preds = %44
  %62 = load i8, ptr %22, align 1, !tbaa !40, !range !34, !noundef !35
  %63 = trunc nuw i8 %62 to i1
  br i1 %63, label %.invoke, label %66

64:                                               ; preds = %.invoke, %155, %153, %95
  %65 = landingpad { ptr, i32 }
          cleanup
  br label %158

66:                                               ; preds = %61
  %67 = getelementptr inbounds i8, ptr %1, i64 272
  %68 = load i32, ptr %67, align 8, !tbaa !41
  %.not86 = icmp eq i32 %68, 1
  br i1 %.not86, label %69, label %72

69:                                               ; preds = %66
  %70 = getelementptr inbounds i8, ptr %1, i64 312
  %71 = load i32, ptr %70, align 8, !tbaa !42
  switch i32 %71, label %80 [
    i32 0, label %72
    i32 1, label %81
  ]

72:                                               ; preds = %69, %66
  %73 = getelementptr inbounds i8, ptr %1, i64 424
  %74 = load i32, ptr %73, align 8, !tbaa !43
  %75 = call noundef ptr @_ZN9benchmark17GetTimeUnitStringENS_8TimeUnitE(i32 noundef %74)
  %76 = call noundef ptr @_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE5c_strEv(ptr noundef nonnull align 8 dereferenceable(32) %4) #7
  %77 = call noundef ptr @_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE5c_strEv(ptr noundef nonnull align 8 dereferenceable(32) %5) #7
  invoke void (ptr, i32, ptr, ...) %18(ptr noundef nonnull align 8 dereferenceable(8) %14, i32 noundef 3, ptr noundef nonnull @.str.15, ptr noundef %76, ptr noundef %75, ptr noundef %77, ptr noundef %75)
          to label %89 unwind label %78, !callees !37

78:                                               ; preds = %72
  %79 = landingpad { ptr, i32 }
          cleanup
  br label %158

80:                                               ; preds = %69
  call void @__assert_fail(ptr noundef nonnull @.str.16, ptr noundef nonnull @.str.17, i32 noundef 172, ptr noundef nonnull @__PRETTY_FUNCTION__._ZN9benchmark15ConsoleReporter12PrintRunDataERKNS_17BenchmarkReporter3RunE) #8
  unreachable

81:                                               ; preds = %69
  %82 = getelementptr inbounds i8, ptr %1, i64 432
  %83 = load double, ptr %82, align 8, !tbaa !44
  %84 = getelementptr inbounds i8, ptr %1, i64 440
  %85 = load double, ptr %84, align 8, !tbaa !45
  br label %.invoke

.invoke:                                          ; preds = %61, %81
  %.sink = phi double [ %85, %81 ], [ %43, %61 ]
  %86 = phi ptr [ @.str.12, %81 ], [ @.str.13, %61 ]
  %.in = phi double [ %83, %81 ], [ %42, %61 ]
  %87 = fmul double %.in, 1.000000e+02
  %88 = fmul double %.sink, 1.000000e+02
  invoke void (ptr, i32, ptr, ...) %18(ptr noundef nonnull align 8 dereferenceable(8) %14, i32 noundef 3, ptr noundef nonnull %86, double noundef %87, ptr noundef nonnull @.str.14, double noundef %88, ptr noundef nonnull @.str.14)
          to label %89 unwind label %64, !callees !37

89:                                               ; preds = %.invoke, %72, %53
  %90 = load i8, ptr %19, align 8, !tbaa !22, !range !34, !noundef !35
  %91 = trunc nuw i8 %90 to i1
  br i1 %91, label %98, label %92

92:                                               ; preds = %89
  %93 = load i8, ptr %22, align 1, !tbaa !40, !range !34, !noundef !35
  %94 = trunc nuw i8 %93 to i1
  br i1 %94, label %98, label %95

95:                                               ; preds = %92
  %96 = getelementptr inbounds i8, ptr %1, i64 392
  %97 = load i64, ptr %96, align 8, !tbaa !46
  invoke void (ptr, i32, ptr, ...) %18(ptr noundef nonnull align 8 dereferenceable(8) %14, i32 noundef 6, ptr noundef nonnull @.str.18, i64 noundef %97)
          to label %98 unwind label %64, !callees !37

98:                                               ; preds = %95, %92, %89
  %99 = getelementptr inbounds i8, ptr %1, i64 496
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %7) #7
  %100 = call ptr @_ZNKSt3mapINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEN9benchmark7CounterESt4lessIS5_ESaISt4pairIKS5_S7_EEE5beginEv(ptr noundef nonnull align 8 dereferenceable(48) %99) #7
  store ptr %100, ptr %7, align 8
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %8) #7
  %101 = call ptr @_ZNKSt3mapINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEN9benchmark7CounterESt4lessIS5_ESaISt4pairIKS5_S7_EEE3endEv(ptr noundef nonnull align 8 dereferenceable(48) %99) #7
  store ptr %101, ptr %8, align 8
  %102 = call noundef zeroext i1 @_ZStneRKSt23_Rb_tree_const_iteratorISt4pairIKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEN9benchmark7CounterEEESD_(ptr noundef nonnull align 8 dereferenceable(8) %7, ptr noundef nonnull align 8 dereferenceable(8) %8) #7
  br i1 %102, label %.lr.ph, label %._crit_edge

.lr.ph:                                           ; preds = %98
  %103 = getelementptr inbounds i8, ptr %1, i64 272
  %104 = getelementptr inbounds i8, ptr %1, i64 312
  br label %107

._crit_edge:                                      ; preds = %149, %98
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %8) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %7) #7
  %105 = getelementptr inbounds i8, ptr %1, i64 320
  %106 = call noundef zeroext i1 @_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE5emptyEv(ptr noundef nonnull align 8 dereferenceable(32) %105) #7
  br i1 %106, label %155, label %153

107:                                              ; preds = %.lr.ph, %149
  %108 = call noundef nonnull align 8 dereferenceable(48) ptr @_ZNKSt23_Rb_tree_const_iteratorISt4pairIKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEN9benchmark7CounterEEEdeEv(ptr noundef nonnull align 8 dereferenceable(8) %7) #7
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %9) #7
  store i64 10, ptr %9, align 8, !tbaa !47
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %10) #7
  %109 = call noundef i64 @_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE6lengthEv(ptr noundef nonnull align 8 dereferenceable(32) %108) #7
  store i64 %109, ptr %10, align 8, !tbaa !47
  %110 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZSt3maxImERKT_S2_S2_(ptr noundef nonnull align 8 dereferenceable(8) %9, ptr noundef nonnull align 8 dereferenceable(8) %10)
  %111 = load i64, ptr %110, align 8, !tbaa !47
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %10) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %9) #7
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %11) #7
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2Ev(ptr noundef nonnull align 8 dereferenceable(32) %11) #7
  %112 = load i32, ptr %103, align 8, !tbaa !41
  %113 = icmp eq i32 %112, 1
  %114 = load i32, ptr %104, align 8
  %115 = icmp eq i32 %114, 1
  %or.cond = select i1 %113, i1 %115, i1 false
  %116 = getelementptr inbounds i8, ptr %108, i64 32
  br i1 %or.cond, label %117, label %124

117:                                              ; preds = %107
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %12) #7
  %118 = load double, ptr %116, align 8, !tbaa !48
  %119 = fmul double %118, 1.000000e+02
  invoke void (ptr, ptr, ...) @_ZN9benchmark9StrFormatB5cxx11EPKcz(ptr dead_on_unwind nonnull writable sret(%"class.std::__cxx11::basic_string") align 8 %12, ptr noundef nonnull @.str.20, double noundef %119)
          to label %120 unwind label %122

120:                                              ; preds = %117
  %121 = call noundef nonnull align 8 dereferenceable(32) ptr @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEaSEOS4_(ptr noundef nonnull align 8 dereferenceable(32) %11, ptr noundef nonnull align 8 dereferenceable(32) %12) #7
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %12) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %12) #7
  br label %137

122:                                              ; preds = %117
  %123 = landingpad { ptr, i32 }
          cleanup
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %12) #7
  br label %152

124:                                              ; preds = %107
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %13) #7
  %125 = load double, ptr %116, align 8, !tbaa !48
  %126 = getelementptr inbounds i8, ptr %108, i64 44
  %127 = load i32, ptr %126, align 4, !tbaa !53
  invoke void @_ZN9benchmark19HumanReadableNumberB5cxx11EdNS_7Counter4OneKE(ptr dead_on_unwind nonnull writable sret(%"class.std::__cxx11::basic_string") align 8 %13, double noundef %125, i32 noundef %127)
          to label %128 unwind label %135

128:                                              ; preds = %124
  %129 = call noundef nonnull align 8 dereferenceable(32) ptr @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEaSEOS4_(ptr noundef nonnull align 8 dereferenceable(32) %11, ptr noundef nonnull align 8 dereferenceable(32) %13) #7
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %13) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %13) #7
  %130 = getelementptr inbounds i8, ptr %108, i64 40
  %131 = load i32, ptr %130, align 8, !tbaa !54
  %132 = and i32 %131, 1
  %.not88 = icmp eq i32 %132, 0
  br i1 %.not88, label %137, label %133

133:                                              ; preds = %128
  %.not89 = icmp sgt i32 %131, -1
  %134 = select i1 %.not89, ptr @.str.22, ptr @.str.21
  br label %137

135:                                              ; preds = %124
  %136 = landingpad { ptr, i32 }
          cleanup
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %13) #7
  br label %152

137:                                              ; preds = %128, %133, %120
  %.0 = phi ptr [ @.str.14, %120 ], [ %134, %133 ], [ @.str.19, %128 ]
  %138 = load i32, ptr %15, align 8, !tbaa !5
  %139 = and i32 %138, 2
  %.not90 = icmp eq i32 %139, 0
  br i1 %.not90, label %146, label %140

140:                                              ; preds = %137
  %141 = call i64 @strlen(ptr noundef nonnull dereferenceable(1) %.0) #9
  %142 = sub i64 %111, %141
  %143 = call noundef ptr @_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE5c_strEv(ptr noundef nonnull align 8 dereferenceable(32) %11) #7
  invoke void (ptr, i32, ptr, ...) %18(ptr noundef nonnull align 8 dereferenceable(8) %14, i32 noundef 0, ptr noundef nonnull @.str.23, i64 noundef %142, ptr noundef %143, ptr noundef nonnull %.0)
          to label %149 unwind label %144, !callees !37

144:                                              ; preds = %146, %140
  %145 = landingpad { ptr, i32 }
          cleanup
  br label %152

146:                                              ; preds = %137
  %147 = call noundef ptr @_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE5c_strEv(ptr noundef nonnull align 8 dereferenceable(32) %108) #7
  %148 = call noundef ptr @_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE5c_strEv(ptr noundef nonnull align 8 dereferenceable(32) %11) #7
  invoke void (ptr, i32, ptr, ...) %18(ptr noundef nonnull align 8 dereferenceable(8) %14, i32 noundef 0, ptr noundef nonnull @.str.24, ptr noundef %147, ptr noundef %148, ptr noundef nonnull %.0)
          to label %149 unwind label %144, !callees !37

149:                                              ; preds = %146, %140
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %11) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %11) #7
  %150 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt23_Rb_tree_const_iteratorISt4pairIKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEN9benchmark7CounterEEEppEv(ptr noundef nonnull align 8 dereferenceable(8) %7) #7
  %151 = call noundef zeroext i1 @_ZStneRKSt23_Rb_tree_const_iteratorISt4pairIKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEN9benchmark7CounterEEESD_(ptr noundef nonnull align 8 dereferenceable(8) %7, ptr noundef nonnull align 8 dereferenceable(8) %8) #7
  br i1 %151, label %107, label %._crit_edge

152:                                              ; preds = %144, %135, %122
  %.pn91 = phi { ptr, i32 } [ %145, %144 ], [ %123, %122 ], [ %136, %135 ]
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %11) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %11) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %8) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %7) #7
  br label %158

153:                                              ; preds = %._crit_edge
  %154 = call noundef ptr @_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE5c_strEv(ptr noundef nonnull align 8 dereferenceable(32) %105) #7
  invoke void (ptr, i32, ptr, ...) %18(ptr noundef nonnull align 8 dereferenceable(8) %14, i32 noundef 0, ptr noundef nonnull @.str.25, ptr noundef %154)
          to label %155 unwind label %64, !callees !37

155:                                              ; preds = %153, %._crit_edge
  invoke void (ptr, i32, ptr, ...) %18(ptr noundef nonnull align 8 dereferenceable(8) %14, i32 noundef 0, ptr noundef nonnull @.str.8)
          to label %156 unwind label %64, !callees !37

156:                                              ; preds = %155
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %5) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %5) #7
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %4) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %4) #7
  br label %157

157:                                              ; preds = %156, %38, %33
  ret void

158:                                              ; preds = %152, %78, %64, %60
  %.pn91.pn = phi { ptr, i32 } [ %.pn91, %152 ], [ %65, %64 ], [ %.pn, %60 ], [ %79, %78 ]
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %5) #7
  br label %159

159:                                              ; preds = %158, %54
  %.pn91.pn.pn = phi { ptr, i32 } [ %.pn91.pn, %158 ], [ %55, %54 ]
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %5) #7
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %4) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %4) #7
  br label %160

160:                                              ; preds = %159, %36
  %.pn91.pn.pn.pn = phi { ptr, i32 } [ %.pn91.pn.pn, %159 ], [ %37, %36 ]
  resume { ptr, i32 } %.pn91.pn.pn.pn
}

declare void @_ZN9benchmark11ColorPrintfERSoNS_8LogColorEPKcz(ptr noundef nonnull align 8 dereferenceable(8), i32 noundef, ptr noundef, ...) local_unnamed_addr #3

; Function Attrs: mustprogress uwtable
declare hidden void @_ZN9benchmarkL16IgnoreColorPrintERSoNS_8LogColorEPKcz(ptr noundef nonnull align 8 dereferenceable(8), i32 noundef, ptr noundef, ...) local_unnamed_addr #2

declare void @_ZNK9benchmark17BenchmarkReporter3Run14benchmark_nameB5cxx11Ev(ptr dead_on_unwind writable sret(%"class.std::__cxx11::basic_string") align 8, ptr noundef nonnull align 8 dereferenceable(592)) local_unnamed_addr #3

declare noundef double @_ZNK9benchmark17BenchmarkReporter3Run19GetAdjustedRealTimeEv(ptr noundef nonnull align 8 dereferenceable(592)) local_unnamed_addr #3

declare noundef double @_ZNK9benchmark17BenchmarkReporter3Run18GetAdjustedCPUTimeEv(ptr noundef nonnull align 8 dereferenceable(592)) local_unnamed_addr #3

; Function Attrs: mustprogress uwtable
declare hidden void @_ZN9benchmarkL10FormatTimeB5cxx11Ed(ptr dead_on_unwind noalias writable sret(%"class.std::__cxx11::basic_string") align 8, double noundef) local_unnamed_addr #2

declare void @_ZN9benchmark13GetBigOStringB5cxx11ENS_4BigOE(ptr dead_on_unwind writable sret(%"class.std::__cxx11::basic_string") align 8, i32 noundef) local_unnamed_addr #3

; Function Attrs: inlinehint mustprogress nounwind uwtable
declare dso_local noundef ptr @_ZN9benchmark17GetTimeUnitStringENS_8TimeUnitE(i32 noundef) local_unnamed_addr #4

; Function Attrs: noreturn nounwind
declare void @__assert_fail(ptr noundef, ptr noundef, i32 noundef, ptr noundef) local_unnamed_addr #5

; Function Attrs: inlinehint mustprogress nounwind uwtable
declare dso_local noundef nonnull align 8 dereferenceable(8) ptr @_ZSt3maxImERKT_S2_S2_(ptr noundef nonnull align 8 dereferenceable(8), ptr noundef nonnull align 8 dereferenceable(8)) local_unnamed_addr #4

; Function Attrs: mustprogress nounwind uwtable
declare void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2Ev(ptr noundef nonnull align 8 dereferenceable(32)) unnamed_addr #1 align 2

declare void @_ZN9benchmark9StrFormatB5cxx11EPKcz(ptr dead_on_unwind writable sret(%"class.std::__cxx11::basic_string") align 8, ptr noundef, ...) local_unnamed_addr #3

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

declare void @_ZN9benchmark19HumanReadableNumberB5cxx11EdNS_7Counter4OneKE(ptr dead_on_unwind writable sret(%"class.std::__cxx11::basic_string") align 8, double noundef, i32 noundef) local_unnamed_addr #3

; Function Attrs: mustprogress nofree nounwind willreturn memory(argmem: read)
declare i64 @strlen(ptr nocapture noundef) local_unnamed_addr #6

; Function Attrs: mustprogress nounwind uwtable
declare noundef zeroext i1 @_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE5emptyEv(ptr noundef nonnull align 8 dereferenceable(32)) local_unnamed_addr #1 align 2

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

!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, !11, i64 24}
!6 = !{!"_ZTSN9benchmark15ConsoleReporterE", !7, i64 0, !11, i64 24, !12, i64 32, !13, i64 40, !21, i64 88}
!7 = !{!"_ZTSN9benchmark17BenchmarkReporterE", !8, i64 8, !8, i64 16}
!8 = !{!"any pointer", !9, i64 0}
!9 = !{!"omnipotent char", !10, i64 0}
!10 = !{!"Simple C++ TBAA"}
!11 = !{!"_ZTSN9benchmark15ConsoleReporter13OutputOptionsE", !9, i64 0}
!12 = !{!"long", !9, i64 0}
!13 = !{!"_ZTSSt3mapINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEN9benchmark7CounterESt4lessIS5_ESaISt4pairIKS5_S7_EEE", !14, i64 0}
!14 = !{!"_ZTSSt8_Rb_treeINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESt4pairIKS5_N9benchmark7CounterEESt10_Select1stISA_ESt4lessIS5_ESaISA_EE", !15, i64 0}
!15 = !{!"_ZTSNSt8_Rb_treeINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESt4pairIKS5_N9benchmark7CounterEESt10_Select1stISA_ESt4lessIS5_ESaISA_EE13_Rb_tree_implISE_Lb1EEE", !16, i64 0, !18, i64 8}
!16 = !{!"_ZTSSt20_Rb_tree_key_compareISt4lessINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEEE", !17, i64 0}
!17 = !{!"_ZTSSt4lessINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEE"}
!18 = !{!"_ZTSSt15_Rb_tree_header", !19, i64 0, !12, i64 32}
!19 = !{!"_ZTSSt18_Rb_tree_node_base", !20, i64 0, !8, i64 8, !8, i64 16, !8, i64 24}
!20 = !{!"_ZTSSt14_Rb_tree_color", !9, i64 0}
!21 = !{!"bool", !9, i64 0}
!22 = !{!23, !21, i64 488}
!23 = !{!"_ZTSN9benchmark17BenchmarkReporter3RunE", !24, i64 0, !12, i64 256, !12, i64 264, !27, i64 272, !25, i64 280, !28, i64 312, !25, i64 320, !29, i64 352, !25, i64 360, !12, i64 392, !12, i64 400, !12, i64 408, !12, i64 416, !30, i64 424, !31, i64 432, !31, i64 440, !31, i64 448, !21, i64 456, !32, i64 460, !8, i64 464, !12, i64 472, !8, i64 480, !21, i64 488, !21, i64 489, !13, i64 496, !33, i64 544, !31, i64 584}
!24 = !{!"_ZTSN9benchmark13BenchmarkNameE", !25, i64 0, !25, i64 32, !25, i64 64, !25, i64 96, !25, i64 128, !25, i64 160, !25, i64 192, !25, i64 224}
!25 = !{!"_ZTSNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE", !26, i64 0, !12, i64 8, !9, i64 16}
!26 = !{!"_ZTSNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE12_Alloc_hiderE", !8, i64 0}
!27 = !{!"_ZTSN9benchmark17BenchmarkReporter3Run7RunTypeE", !9, i64 0}
!28 = !{!"_ZTSN9benchmark13StatisticUnitE", !9, i64 0}
!29 = !{!"_ZTSN9benchmark8internal7SkippedE", !9, i64 0}
!30 = !{!"_ZTSN9benchmark8TimeUnitE", !9, i64 0}
!31 = !{!"double", !9, i64 0}
!32 = !{!"_ZTSN9benchmark4BigOE", !9, i64 0}
!33 = !{!"_ZTSN9benchmark13MemoryManager6ResultE", !12, i64 0, !12, i64 8, !12, i64 16, !12, i64 24, !12, i64 32}
!34 = !{i8 0, i8 2}
!35 = !{}
!36 = !{!6, !12, i64 32}
!37 = !{ptr @_ZN9benchmark11ColorPrintfERSoNS_8LogColorEPKcz, ptr @_ZN9benchmarkL16IgnoreColorPrintERSoNS_8LogColorEPKcz}
!38 = !{!23, !29, i64 352}
!39 = !{!23, !32, i64 460}
!40 = !{!23, !21, i64 489}
!41 = !{!23, !27, i64 272}
!42 = !{!23, !28, i64 312}
!43 = !{!23, !30, i64 424}
!44 = !{!23, !31, i64 432}
!45 = !{!23, !31, i64 440}
!46 = !{!23, !12, i64 392}
!47 = !{!12, !12, i64 0}
!48 = !{!49, !31, i64 32}
!49 = !{!"_ZTSSt4pairIKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEN9benchmark7CounterEE", !25, i64 0, !50, i64 32}
!50 = !{!"_ZTSN9benchmark7CounterE", !31, i64 0, !51, i64 8, !52, i64 12}
!51 = !{!"_ZTSN9benchmark7Counter5FlagsE", !9, i64 0}
!52 = !{!"_ZTSN9benchmark7Counter4OneKE", !9, i64 0}
!53 = !{!49, !52, i64 44}
!54 = !{!49, !51, i64 40}


; Effective O3 passes: CalledValuePropagationPass,EarlyCSEPass,GlobalOptPass,IPSCCPPass,InferFunctionAttrsPass,InstCombinePass,JumpThreadingPass,LICMPass,LoopRotatePass,LoopSimplifyPass,LoopUnrollPass,SROAPass,SimplifyCFGPass,TailCallElimPass