; LLVM IR from codee-com/open-catalog :: Benchmark/external/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, i32, ptr, i64, ptr, i8, i8, %"class.std::map", ptr, 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.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 [116 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(560) %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 21
  %39 = load i8, ptr %38, align 8, !tbaa !23, !range !34, !noundef !35
  %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 22
  %44 = load i8, ptr %43, align 1, !tbaa !36, !range !34, !noundef !35
  %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 !37
  %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 !37
  %53 = getelementptr inbounds %"class.benchmark::ConsoleReporter", ptr %29, i32 0, i32 3
  %54 = load i64, ptr %53, align 8, !tbaa !39
  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(560) %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 !40
  %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 %332

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 %337

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 !40
  %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 %332

87:                                               ; preds = %74
  br label %88

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

95:                                               ; preds = %88
  %96 = load ptr, ptr %4, align 8, !tbaa !5
  %97 = getelementptr inbounds %"struct.benchmark::BenchmarkReporter::Run", ptr %96, i32 0, i32 21
  %98 = load i8, ptr %97, align 8, !tbaa !23, !range !34, !noundef !35
  %99 = trunc i8 %98 to i1
  br i1 %99, label %100, label %125

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

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

111:                                              ; preds = %104
  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 %191

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

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

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

124:                                              ; preds = %120, %116
  call void @llvm.lifetime.end.p0(i64 32, ptr %16) #7
  br label %335

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

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

137:                                              ; preds = %130
  br label %190

138:                                              ; preds = %328, %321, %201, %177, %130
  %139 = landingpad { ptr, i32 }
          cleanup
  %140 = extractvalue { ptr, i32 } %139, 0
  store ptr %140, ptr %9, align 8
  %141 = extractvalue { ptr, i32 } %139, 1
  store i32 %141, ptr %10, align 4
  br label %335

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

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

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

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

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

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

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

174:                                              ; preds = %169
  br label %177

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

176:                                              ; No predecessors!
  br label %177

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

188:                                              ; preds = %177
  br label %189

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

190:                                              ; preds = %189, %137
  br label %191

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

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

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

207:                                              ; preds = %201
  br label %208

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

217:                                              ; preds = %313, %208
  %218 = 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 %218, label %220, label %219

219:                                              ; preds = %217
  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 %317

220:                                              ; preds = %217
  call void @llvm.lifetime.start.p0(i64 8, ptr %21) #7
  %221 = 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 %221, 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 !49
  call void @llvm.lifetime.start.p0(i64 8, ptr %24) #7
  %222 = load ptr, ptr %21, align 8, !tbaa !5
  %223 = getelementptr inbounds %"struct.std::pair", ptr %222, i32 0, i32 0
  %224 = call noundef i64 @_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE6lengthEv(ptr noundef nonnull align 8 dereferenceable(32) %223) #7
  store i64 %224, ptr %24, align 8, !tbaa !49
  %225 = 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 %226 unwind label %245

226:                                              ; preds = %220
  %227 = load i64, ptr %225, align 8, !tbaa !49
  call void @llvm.lifetime.end.p0(i64 8, ptr %24) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %23) #7
  store i64 %227, ptr %22, align 8, !tbaa !49
  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
  %228 = load ptr, ptr %4, align 8, !tbaa !5
  %229 = getelementptr inbounds %"struct.benchmark::BenchmarkReporter::Run", ptr %228, i32 0, i32 3
  %230 = load i32, ptr %229, align 8, !tbaa !43
  %231 = icmp eq i32 %230, 1
  br i1 %231, label %232, label %253

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

237:                                              ; preds = %232
  call void @llvm.lifetime.start.p0(i64 32, ptr %27) #7
  %238 = load ptr, ptr %21, align 8, !tbaa !5
  %239 = getelementptr inbounds %"struct.std::pair", ptr %238, i32 0, i32 1
  %240 = getelementptr inbounds %"class.benchmark::Counter", ptr %239, i32 0, i32 0
  %241 = load double, ptr %240, align 8, !tbaa !50
  %242 = fmul double 1.000000e+02, %241
  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 %242)
          to label %243 unwind label %249

243:                                              ; preds = %237
  %244 = 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 %284

245:                                              ; preds = %220
  %246 = landingpad { ptr, i32 }
          cleanup
  %247 = extractvalue { ptr, i32 } %246, 0
  store ptr %247, ptr %9, align 8
  %248 = extractvalue { ptr, i32 } %246, 1
  store i32 %248, 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 %316

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

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

262:                                              ; preds = %253
  %263 = 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
  %264 = load ptr, ptr %21, align 8, !tbaa !5
  %265 = getelementptr inbounds %"struct.std::pair", ptr %264, i32 0, i32 1
  %266 = getelementptr inbounds %"class.benchmark::Counter", ptr %265, i32 0, i32 1
  %267 = load i32, ptr %266, align 8, !tbaa !56
  %268 = and i32 %267, 1
  %269 = icmp ne i32 %268, 0
  br i1 %269, label %270, label %283

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

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

283:                                              ; preds = %270, %262
  br label %284

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

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

298:                                              ; preds = %289
  br label %312

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

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

311:                                              ; preds = %303
  br label %312

312:                                              ; preds = %311, %298
  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 %313

313:                                              ; preds = %312
  %314 = 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 %217

315:                                              ; preds = %299, %279, %249
  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 %316

316:                                              ; preds = %315, %245
  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 %335

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

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

327:                                              ; preds = %321
  br label %328

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

331:                                              ; preds = %328
  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 %332

332:                                              ; preds = %331, %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
  %333 = load i32, ptr %11, align 4
  switch i32 %333, label %343 [
    i32 0, label %334
    i32 1, label %334
  ]

334:                                              ; preds = %332, %332
  ret void

335:                                              ; preds = %316, %165, %138, %124
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %15) #7
  br label %336

336:                                              ; preds = %335, %112
  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 %337

337:                                              ; preds = %336, %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 %338

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

343:                                              ; preds = %332
  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(560)) #3

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

declare noundef double @_ZNK9benchmark17BenchmarkReporter3Run18GetAdjustedCPUTimeEv(ptr noundef nonnull align 8 dereferenceable(560)) #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, !33, i64 456, !6, i64 464, !13, i64 472, !6, i64 480, !22, i64 488, !22, i64 489, !14, i64 496, !6, i64 544, !32, i64 552}
!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 = !{i8 0, i8 2}
!35 = !{}
!36 = !{!24, !22, i64 489}
!37 = !{!38, !38, i64 0}
!38 = !{!"_ZTSN9benchmark8LogColorE", !7, i64 0}
!39 = !{!10, !13, i64 32}
!40 = !{!24, !30, i64 352}
!41 = !{!32, !32, i64 0}
!42 = !{!24, !33, i64 456}
!43 = !{!24, !28, i64 272}
!44 = !{!24, !29, i64 312}
!45 = !{!24, !31, i64 424}
!46 = !{!24, !32, i64 432}
!47 = !{!24, !32, i64 440}
!48 = !{!24, !13, i64 392}
!49 = !{!13, !13, i64 0}
!50 = !{!51, !32, i64 32}
!51 = !{!"_ZTSSt4pairIKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEN9benchmark7CounterEE", !26, i64 0, !52, i64 32}
!52 = !{!"_ZTSN9benchmark7CounterE", !32, i64 0, !53, i64 8, !54, i64 12}
!53 = !{!"_ZTSN9benchmark7Counter5FlagsE", !7, i64 0}
!54 = !{!"_ZTSN9benchmark7Counter4OneKE", !7, i64 0}
!55 = !{!51, !54, i64 44}
!56 = !{!51, !53, 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 [116 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(560) %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 !33, !noundef !34
  %21 = trunc nuw i8 %20 to i1
  %22 = getelementptr inbounds i8, ptr %1, i64 489
  %23 = load i8, ptr %22, align 1, !range !33
  %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 !35
  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(560) %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 !36

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 !37
  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 !36
  call void (ptr, i32, ptr, ...) %18(ptr noundef nonnull align 8 dereferenceable(8) %14, i32 noundef 0, ptr noundef nonnull @.str.8), !callees !36
  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 !36
  call void (ptr, i32, ptr, ...) %18(ptr noundef nonnull align 8 dereferenceable(8) %14, i32 noundef 0, ptr noundef nonnull @.str.8), !callees !36
  br label %157

41:                                               ; preds = %30
  %42 = call noundef double @_ZNK9benchmark17BenchmarkReporter3Run19GetAdjustedRealTimeEv(ptr noundef nonnull align 8 dereferenceable(560) %1)
  %43 = call noundef double @_ZNK9benchmark17BenchmarkReporter3Run18GetAdjustedCPUTimeEv(ptr noundef nonnull align 8 dereferenceable(560) %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 !33, !noundef !34
  %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 456
  %49 = load i32, ptr %48, align 8, !tbaa !38
  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 !36

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 !39, !range !33, !noundef !34
  %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 !40
  %.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 !41
  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 !42
  %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 !36

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 167, 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 !43
  %84 = getelementptr inbounds i8, ptr %1, i64 440
  %85 = load double, ptr %84, align 8, !tbaa !44
  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 !36

89:                                               ; preds = %.invoke, %72, %53
  %90 = load i8, ptr %19, align 8, !tbaa !22, !range !33, !noundef !34
  %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 !39, !range !33, !noundef !34
  %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 !45
  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 !36

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 !46
  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 !46
  %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 !46
  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 !40
  %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 !47
  %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 !47
  %126 = getelementptr inbounds i8, ptr %108, i64 44
  %127 = load i32, ptr %126, align 4, !tbaa !52
  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 !53
  %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 !36

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 !36

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 !36

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 !36

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(560)) local_unnamed_addr #3

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

declare noundef double @_ZNK9benchmark17BenchmarkReporter3Run18GetAdjustedCPUTimeEv(ptr noundef nonnull align 8 dereferenceable(560)) 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, !32, i64 456, !8, i64 464, !12, i64 472, !8, i64 480, !21, i64 488, !21, i64 489, !13, i64 496, !8, i64 544, !31, i64 552}
!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 = !{i8 0, i8 2}
!34 = !{}
!35 = !{!6, !12, i64 32}
!36 = !{ptr @_ZN9benchmark11ColorPrintfERSoNS_8LogColorEPKcz, ptr @_ZN9benchmarkL16IgnoreColorPrintERSoNS_8LogColorEPKcz}
!37 = !{!23, !29, i64 352}
!38 = !{!23, !32, i64 456}
!39 = !{!23, !21, i64 489}
!40 = !{!23, !27, i64 272}
!41 = !{!23, !28, i64 312}
!42 = !{!23, !30, i64 424}
!43 = !{!23, !31, i64 432}
!44 = !{!23, !31, i64 440}
!45 = !{!23, !12, i64 392}
!46 = !{!12, !12, i64 0}
!47 = !{!48, !31, i64 32}
!48 = !{!"_ZTSSt4pairIKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEN9benchmark7CounterEE", !25, i64 0, !49, i64 32}
!49 = !{!"_ZTSN9benchmark7CounterE", !31, i64 0, !50, i64 8, !51, i64 12}
!50 = !{!"_ZTSN9benchmark7Counter5FlagsE", !9, i64 0}
!51 = !{!"_ZTSN9benchmark7Counter4OneKE", !9, i64 0}
!52 = !{!48, !51, i64 44}
!53 = !{!48, !50, i64 40}


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