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

; 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.__gnu_cxx::__normal_iterator" = type { ptr }
%"class.std::__cxx11::basic_string" = type { %"struct.std::__cxx11::basic_string<char>::_Alloc_hider", i64, %union.anon }
%"struct.std::__cxx11::basic_string<char>::_Alloc_hider" = type { ptr }
%union.anon = type { i64, [8 x i8] }
%"class.benchmark::internal::BenchmarkInstance" = type { %"struct.benchmark::BenchmarkName", ptr, i32, i32, i32, ptr, i32, i8, i8, i8, i32, ptr, %"class.std::map", ptr, i32, double, double, i64, i32, %"class.std::function", %"class.std::function" }
%"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" }
%"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 }
%"class.std::function" = type { %"class.std::_Function_base", ptr }
%"class.std::_Function_base" = type { %"union.std::_Any_data", ptr }
%"union.std::_Any_data" = type { %"union.std::_Nocopy_types" }
%"union.std::_Nocopy_types" = type { { i64, i64 } }
%"class.benchmark::internal::Benchmark" = type { ptr, %"class.std::__cxx11::basic_string", i32, %"class.std::vector", %"class.std::vector.6", i32, i8, i32, double, double, i64, i32, i8, i8, i8, i32, ptr, %"class.std::vector.11", %"class.std::vector.16", %"class.std::function", %"class.std::function", %"class.std::function.21" }
%"class.std::vector" = type { %"struct.std::_Vector_base" }
%"struct.std::_Vector_base" = type { %"struct.std::_Vector_base<std::__cxx11::basic_string<char>, std::allocator<std::__cxx11::basic_string<char>>>::_Vector_impl" }
%"struct.std::_Vector_base<std::__cxx11::basic_string<char>, std::allocator<std::__cxx11::basic_string<char>>>::_Vector_impl" = type { %"struct.std::_Vector_base<std::__cxx11::basic_string<char>, std::allocator<std::__cxx11::basic_string<char>>>::_Vector_impl_data" }
%"struct.std::_Vector_base<std::__cxx11::basic_string<char>, std::allocator<std::__cxx11::basic_string<char>>>::_Vector_impl_data" = type { ptr, ptr, ptr }
%"class.std::vector.6" = type { %"struct.std::_Vector_base.7" }
%"struct.std::_Vector_base.7" = type { %"struct.std::_Vector_base<std::vector<long>, std::allocator<std::vector<long>>>::_Vector_impl" }
%"struct.std::_Vector_base<std::vector<long>, std::allocator<std::vector<long>>>::_Vector_impl" = type { %"struct.std::_Vector_base<std::vector<long>, std::allocator<std::vector<long>>>::_Vector_impl_data" }
%"struct.std::_Vector_base<std::vector<long>, std::allocator<std::vector<long>>>::_Vector_impl_data" = type { ptr, ptr, ptr }
%"class.std::vector.11" = type { %"struct.std::_Vector_base.12" }
%"struct.std::_Vector_base.12" = type { %"struct.std::_Vector_base<benchmark::internal::Statistics, std::allocator<benchmark::internal::Statistics>>::_Vector_impl" }
%"struct.std::_Vector_base<benchmark::internal::Statistics, std::allocator<benchmark::internal::Statistics>>::_Vector_impl" = type { %"struct.std::_Vector_base<benchmark::internal::Statistics, std::allocator<benchmark::internal::Statistics>>::_Vector_impl_data" }
%"struct.std::_Vector_base<benchmark::internal::Statistics, std::allocator<benchmark::internal::Statistics>>::_Vector_impl_data" = type { ptr, ptr, ptr }
%"class.std::vector.16" = type { %"struct.std::_Vector_base.17" }
%"struct.std::_Vector_base.17" = type { %"struct.std::_Vector_base<int, std::allocator<int>>::_Vector_impl" }
%"struct.std::_Vector_base<int, std::allocator<int>>::_Vector_impl" = type { %"struct.std::_Vector_base<int, std::allocator<int>>::_Vector_impl_data" }
%"struct.std::_Vector_base<int, std::allocator<int>>::_Vector_impl_data" = type { ptr, ptr, ptr }
%"class.std::function.21" = type { %"class.std::_Function_base", ptr }

@.str = external hidden unnamed_addr constant [4 x i8], align 1
@.str.2 = external hidden unnamed_addr constant [4 x i8], align 1
@.str.3 = external hidden unnamed_addr constant [15 x i8], align 1
@.str.4 = external hidden unnamed_addr constant [22 x i8], align 1
@.str.5 = external hidden unnamed_addr constant [15 x i8], align 1
@.str.6 = external hidden unnamed_addr constant [11 x i8], align 1
@.str.7 = external hidden unnamed_addr constant [13 x i8], align 1
@.str.8 = external hidden unnamed_addr constant [12 x i8], align 1
@.str.9 = external hidden unnamed_addr constant [10 x i8], align 1
@.str.10 = external hidden unnamed_addr constant [11 x i8], align 1

; Function Attrs: mustprogress uwtable
define dso_local void @_ZN9benchmark8internal17BenchmarkInstanceC2EPNS0_9BenchmarkEiiRKSt6vectorIlSaIlEEi(ptr noundef nonnull align 8 dereferenceable(472) %0, ptr noundef %1, i32 noundef %2, i32 noundef %3, ptr noundef nonnull align 8 dereferenceable(24) %4, i32 noundef %5) unnamed_addr #0 align 2 personality ptr @__gxx_personality_v0 {
  %7 = alloca ptr, align 8
  %8 = alloca ptr, align 8
  %9 = alloca i32, align 4
  %10 = alloca i32, align 4
  %11 = alloca ptr, align 8
  %12 = alloca i32, align 4
  %13 = alloca ptr, align 8
  %14 = alloca i32, align 4
  %15 = alloca i64, align 8
  %16 = alloca ptr, align 8
  %17 = alloca %"class.__gnu_cxx::__normal_iterator", align 8
  %18 = alloca %"class.__gnu_cxx::__normal_iterator", align 8
  %19 = alloca ptr, align 8
  %20 = alloca ptr, align 8
  %21 = alloca %"class.std::__cxx11::basic_string", align 8
  %22 = alloca %"class.std::__cxx11::basic_string", align 8
  %23 = alloca %"class.std::__cxx11::basic_string", align 8
  %24 = alloca %"class.std::__cxx11::basic_string", align 8
  %25 = alloca %"class.std::__cxx11::basic_string", align 8
  %26 = alloca %"class.std::__cxx11::basic_string", align 8
  %27 = alloca %"class.std::__cxx11::basic_string", align 8
  store ptr %0, ptr %7, align 8, !tbaa !5
  store ptr %1, ptr %8, align 8, !tbaa !5
  store i32 %2, ptr %9, align 4, !tbaa !9
  store i32 %3, ptr %10, align 4, !tbaa !9
  store ptr %4, ptr %11, align 8, !tbaa !5
  store i32 %5, ptr %12, align 4, !tbaa !9
  %28 = load ptr, ptr %7, align 8
  %29 = getelementptr inbounds %"class.benchmark::internal::BenchmarkInstance", ptr %28, i32 0, i32 0
  call void @_ZN9benchmark13BenchmarkNameC2Ev(ptr noundef nonnull align 8 dereferenceable(256) %29) #5
  %30 = getelementptr inbounds %"class.benchmark::internal::BenchmarkInstance", ptr %28, i32 0, i32 1
  %31 = load ptr, ptr %8, align 8, !tbaa !5
  store ptr %31, ptr %30, align 8, !tbaa !5
  %32 = getelementptr inbounds %"class.benchmark::internal::BenchmarkInstance", ptr %28, i32 0, i32 2
  %33 = load i32, ptr %9, align 4, !tbaa !9
  store i32 %33, ptr %32, align 8, !tbaa !11
  %34 = getelementptr inbounds %"class.benchmark::internal::BenchmarkInstance", ptr %28, i32 0, i32 3
  %35 = load i32, ptr %10, align 4, !tbaa !9
  store i32 %35, ptr %34, align 4, !tbaa !32
  %36 = getelementptr inbounds %"class.benchmark::internal::BenchmarkInstance", ptr %28, i32 0, i32 4
  %37 = getelementptr inbounds %"class.benchmark::internal::BenchmarkInstance", ptr %28, i32 0, i32 1
  %38 = load ptr, ptr %37, align 8, !tbaa !33
  %39 = getelementptr inbounds %"class.benchmark::internal::Benchmark", ptr %38, i32 0, i32 2
  %40 = load i32, ptr %39, align 8, !tbaa !34
  store i32 %40, ptr %36, align 8, !tbaa !53
  %41 = getelementptr inbounds %"class.benchmark::internal::BenchmarkInstance", ptr %28, i32 0, i32 5
  %42 = load ptr, ptr %11, align 8, !tbaa !5
  store ptr %42, ptr %41, align 8, !tbaa !5
  %43 = getelementptr inbounds %"class.benchmark::internal::BenchmarkInstance", ptr %28, i32 0, i32 6
  %44 = getelementptr inbounds %"class.benchmark::internal::BenchmarkInstance", ptr %28, i32 0, i32 1
  %45 = load ptr, ptr %44, align 8, !tbaa !33
  %46 = invoke noundef i32 @_ZNK9benchmark8internal9Benchmark11GetTimeUnitEv(ptr noundef nonnull align 8 dereferenceable(304) %45)
          to label %47 unwind label %133

47:                                               ; preds = %6
  store i32 %46, ptr %43, align 8, !tbaa !54
  %48 = getelementptr inbounds %"class.benchmark::internal::BenchmarkInstance", ptr %28, i32 0, i32 7
  %49 = getelementptr inbounds %"class.benchmark::internal::BenchmarkInstance", ptr %28, i32 0, i32 1
  %50 = load ptr, ptr %49, align 8, !tbaa !33
  %51 = getelementptr inbounds %"class.benchmark::internal::Benchmark", ptr %50, i32 0, i32 12
  %52 = load i8, ptr %51, align 4, !tbaa !55, !range !56, !noundef !57
  %53 = trunc i8 %52 to i1
  %54 = zext i1 %53 to i8
  store i8 %54, ptr %48, align 4, !tbaa !58
  %55 = getelementptr inbounds %"class.benchmark::internal::BenchmarkInstance", ptr %28, i32 0, i32 8
  %56 = getelementptr inbounds %"class.benchmark::internal::BenchmarkInstance", ptr %28, i32 0, i32 1
  %57 = load ptr, ptr %56, align 8, !tbaa !33
  %58 = getelementptr inbounds %"class.benchmark::internal::Benchmark", ptr %57, i32 0, i32 13
  %59 = load i8, ptr %58, align 1, !tbaa !59, !range !56, !noundef !57
  %60 = trunc i8 %59 to i1
  %61 = zext i1 %60 to i8
  store i8 %61, ptr %55, align 1, !tbaa !60
  %62 = getelementptr inbounds %"class.benchmark::internal::BenchmarkInstance", ptr %28, i32 0, i32 9
  %63 = getelementptr inbounds %"class.benchmark::internal::BenchmarkInstance", ptr %28, i32 0, i32 1
  %64 = load ptr, ptr %63, align 8, !tbaa !33
  %65 = getelementptr inbounds %"class.benchmark::internal::Benchmark", ptr %64, i32 0, i32 14
  %66 = load i8, ptr %65, align 2, !tbaa !61, !range !56, !noundef !57
  %67 = trunc i8 %66 to i1
  %68 = zext i1 %67 to i8
  store i8 %68, ptr %62, align 2, !tbaa !62
  %69 = getelementptr inbounds %"class.benchmark::internal::BenchmarkInstance", ptr %28, i32 0, i32 10
  %70 = getelementptr inbounds %"class.benchmark::internal::BenchmarkInstance", ptr %28, i32 0, i32 1
  %71 = load ptr, ptr %70, align 8, !tbaa !33
  %72 = getelementptr inbounds %"class.benchmark::internal::Benchmark", ptr %71, i32 0, i32 15
  %73 = load i32, ptr %72, align 8, !tbaa !63
  store i32 %73, ptr %69, align 8, !tbaa !64
  %74 = getelementptr inbounds %"class.benchmark::internal::BenchmarkInstance", ptr %28, i32 0, i32 11
  %75 = getelementptr inbounds %"class.benchmark::internal::BenchmarkInstance", ptr %28, i32 0, i32 1
  %76 = load ptr, ptr %75, align 8, !tbaa !33
  %77 = getelementptr inbounds %"class.benchmark::internal::Benchmark", ptr %76, i32 0, i32 16
  %78 = load ptr, ptr %77, align 8, !tbaa !65
  store ptr %78, ptr %74, align 8, !tbaa !66
  %79 = getelementptr inbounds %"class.benchmark::internal::BenchmarkInstance", ptr %28, i32 0, i32 12
  call void @_ZNSt3mapINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEN9benchmark7CounterESt4lessIS5_ESaISt4pairIKS5_S7_EEEC2Ev(ptr noundef nonnull align 8 dereferenceable(48) %79) #5
  %80 = getelementptr inbounds %"class.benchmark::internal::BenchmarkInstance", ptr %28, i32 0, i32 13
  %81 = getelementptr inbounds %"class.benchmark::internal::BenchmarkInstance", ptr %28, i32 0, i32 1
  %82 = load ptr, ptr %81, align 8, !tbaa !33
  %83 = getelementptr inbounds %"class.benchmark::internal::Benchmark", ptr %82, i32 0, i32 17
  store ptr %83, ptr %80, align 8, !tbaa !5
  %84 = getelementptr inbounds %"class.benchmark::internal::BenchmarkInstance", ptr %28, i32 0, i32 14
  %85 = getelementptr inbounds %"class.benchmark::internal::BenchmarkInstance", ptr %28, i32 0, i32 1
  %86 = load ptr, ptr %85, align 8, !tbaa !33
  %87 = getelementptr inbounds %"class.benchmark::internal::Benchmark", ptr %86, i32 0, i32 11
  %88 = load i32, ptr %87, align 8, !tbaa !67
  store i32 %88, ptr %84, align 8, !tbaa !68
  %89 = getelementptr inbounds %"class.benchmark::internal::BenchmarkInstance", ptr %28, i32 0, i32 15
  %90 = getelementptr inbounds %"class.benchmark::internal::BenchmarkInstance", ptr %28, i32 0, i32 1
  %91 = load ptr, ptr %90, align 8, !tbaa !33
  %92 = getelementptr inbounds %"class.benchmark::internal::Benchmark", ptr %91, i32 0, i32 8
  %93 = load double, ptr %92, align 8, !tbaa !69
  store double %93, ptr %89, align 8, !tbaa !70
  %94 = getelementptr inbounds %"class.benchmark::internal::BenchmarkInstance", ptr %28, i32 0, i32 16
  %95 = getelementptr inbounds %"class.benchmark::internal::BenchmarkInstance", ptr %28, i32 0, i32 1
  %96 = load ptr, ptr %95, align 8, !tbaa !33
  %97 = getelementptr inbounds %"class.benchmark::internal::Benchmark", ptr %96, i32 0, i32 9
  %98 = load double, ptr %97, align 8, !tbaa !71
  store double %98, ptr %94, align 8, !tbaa !72
  %99 = getelementptr inbounds %"class.benchmark::internal::BenchmarkInstance", ptr %28, i32 0, i32 17
  %100 = getelementptr inbounds %"class.benchmark::internal::BenchmarkInstance", ptr %28, i32 0, i32 1
  %101 = load ptr, ptr %100, align 8, !tbaa !33
  %102 = getelementptr inbounds %"class.benchmark::internal::Benchmark", ptr %101, i32 0, i32 10
  %103 = load i64, ptr %102, align 8, !tbaa !73
  store i64 %103, ptr %99, align 8, !tbaa !74
  %104 = getelementptr inbounds %"class.benchmark::internal::BenchmarkInstance", ptr %28, i32 0, i32 18
  %105 = load i32, ptr %12, align 4, !tbaa !9
  store i32 %105, ptr %104, align 8, !tbaa !75
  %106 = getelementptr inbounds %"class.benchmark::internal::BenchmarkInstance", ptr %28, i32 0, i32 19
  %107 = getelementptr inbounds %"class.benchmark::internal::BenchmarkInstance", ptr %28, i32 0, i32 1
  %108 = load ptr, ptr %107, align 8, !tbaa !33
  %109 = getelementptr inbounds %"class.benchmark::internal::Benchmark", ptr %108, i32 0, i32 19
  invoke void @_ZNSt8functionIFvRKN9benchmark5StateEEEC2ERKS5_(ptr noundef nonnull align 8 dereferenceable(32) %106, ptr noundef nonnull align 8 dereferenceable(32) %109)
          to label %110 unwind label %137

110:                                              ; preds = %47
  %111 = getelementptr inbounds %"class.benchmark::internal::BenchmarkInstance", ptr %28, i32 0, i32 20
  %112 = getelementptr inbounds %"class.benchmark::internal::BenchmarkInstance", ptr %28, i32 0, i32 1
  %113 = load ptr, ptr %112, align 8, !tbaa !33
  %114 = getelementptr inbounds %"class.benchmark::internal::Benchmark", ptr %113, i32 0, i32 20
  invoke void @_ZNSt8functionIFvRKN9benchmark5StateEEEC2ERKS5_(ptr noundef nonnull align 8 dereferenceable(32) %111, ptr noundef nonnull align 8 dereferenceable(32) %114)
          to label %115 unwind label %141

115:                                              ; preds = %110
  %116 = getelementptr inbounds %"class.benchmark::internal::BenchmarkInstance", ptr %28, i32 0, i32 1
  %117 = load ptr, ptr %116, align 8, !tbaa !33
  %118 = getelementptr inbounds %"class.benchmark::internal::Benchmark", ptr %117, i32 0, i32 1
  %119 = getelementptr inbounds %"class.benchmark::internal::BenchmarkInstance", ptr %28, i32 0, i32 0
  %120 = getelementptr inbounds %"struct.benchmark::BenchmarkName", ptr %119, i32 0, i32 0
  %121 = invoke noundef nonnull align 8 dereferenceable(32) ptr @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEaSERKS4_(ptr noundef nonnull align 8 dereferenceable(32) %120, ptr noundef nonnull align 8 dereferenceable(32) %118)
          to label %122 unwind label %145

122:                                              ; preds = %115
  call void @llvm.lifetime.start.p0(i64 8, ptr %15) #5
  store i64 0, ptr %15, align 8, !tbaa !76
  call void @llvm.lifetime.start.p0(i64 8, ptr %16) #5
  %123 = load ptr, ptr %11, align 8, !tbaa !5
  store ptr %123, ptr %16, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %17) #5
  %124 = load ptr, ptr %16, align 8, !tbaa !5
  %125 = call ptr @_ZNKSt6vectorIlSaIlEE5beginEv(ptr noundef nonnull align 8 dereferenceable(24) %124) #5
  %126 = getelementptr inbounds %"class.__gnu_cxx::__normal_iterator", ptr %17, i32 0, i32 0
  store ptr %125, ptr %126, align 8
  call void @llvm.lifetime.start.p0(i64 8, ptr %18) #5
  %127 = load ptr, ptr %16, align 8, !tbaa !5
  %128 = call ptr @_ZNKSt6vectorIlSaIlEE3endEv(ptr noundef nonnull align 8 dereferenceable(24) %127) #5
  %129 = getelementptr inbounds %"class.__gnu_cxx::__normal_iterator", ptr %18, i32 0, i32 0
  store ptr %128, ptr %129, align 8
  br label %130

130:                                              ; preds = %205, %122
  %131 = call noundef zeroext i1 @_ZN9__gnu_cxxneIPKlSt6vectorIlSaIlEEEEbRKNS_17__normal_iteratorIT_T0_EESB_(ptr noundef nonnull align 8 dereferenceable(8) %17, ptr noundef nonnull align 8 dereferenceable(8) %18) #5
  br i1 %131, label %149, label %132

132:                                              ; preds = %130
  call void @llvm.lifetime.end.p0(i64 8, ptr %18) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %17) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %16) #5
  br label %217

133:                                              ; preds = %6
  %134 = landingpad { ptr, i32 }
          cleanup
  %135 = extractvalue { ptr, i32 } %134, 0
  store ptr %135, ptr %13, align 8
  %136 = extractvalue { ptr, i32 } %134, 1
  store i32 %136, ptr %14, align 4
  br label %370

137:                                              ; preds = %47
  %138 = landingpad { ptr, i32 }
          cleanup
  %139 = extractvalue { ptr, i32 } %138, 0
  store ptr %139, ptr %13, align 8
  %140 = extractvalue { ptr, i32 } %138, 1
  store i32 %140, ptr %14, align 4
  br label %369

141:                                              ; preds = %110
  %142 = landingpad { ptr, i32 }
          cleanup
  %143 = extractvalue { ptr, i32 } %142, 0
  store ptr %143, ptr %13, align 8
  %144 = extractvalue { ptr, i32 } %142, 1
  store i32 %144, ptr %14, align 4
  br label %368

145:                                              ; preds = %115
  %146 = landingpad { ptr, i32 }
          cleanup
  %147 = extractvalue { ptr, i32 } %146, 0
  store ptr %147, ptr %13, align 8
  %148 = extractvalue { ptr, i32 } %146, 1
  store i32 %148, ptr %14, align 4
  br label %367

149:                                              ; preds = %130
  call void @llvm.lifetime.start.p0(i64 8, ptr %19) #5
  %150 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNK9__gnu_cxx17__normal_iteratorIPKlSt6vectorIlSaIlEEEdeEv(ptr noundef nonnull align 8 dereferenceable(8) %17) #5
  store ptr %150, ptr %19, align 8, !tbaa !5
  %151 = getelementptr inbounds %"class.benchmark::internal::BenchmarkInstance", ptr %28, i32 0, i32 0
  %152 = getelementptr inbounds %"struct.benchmark::BenchmarkName", ptr %151, i32 0, i32 1
  %153 = call noundef zeroext i1 @_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE5emptyEv(ptr noundef nonnull align 8 dereferenceable(32) %152) #5
  br i1 %153, label %163, label %154

154:                                              ; preds = %149
  %155 = getelementptr inbounds %"class.benchmark::internal::BenchmarkInstance", ptr %28, i32 0, i32 0
  %156 = getelementptr inbounds %"struct.benchmark::BenchmarkName", ptr %155, i32 0, i32 1
  %157 = invoke noundef nonnull align 8 dereferenceable(32) ptr @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEpLEc(ptr noundef nonnull align 8 dereferenceable(32) %156, i8 noundef signext 47)
          to label %158 unwind label %159

158:                                              ; preds = %154
  br label %163

159:                                              ; preds = %154
  %160 = landingpad { ptr, i32 }
          cleanup
  %161 = extractvalue { ptr, i32 } %160, 0
  store ptr %161, ptr %13, align 8
  %162 = extractvalue { ptr, i32 } %160, 1
  store i32 %162, ptr %14, align 4
  br label %216

163:                                              ; preds = %158, %149
  %164 = load i64, ptr %15, align 8, !tbaa !76
  %165 = load ptr, ptr %8, align 8, !tbaa !5
  %166 = getelementptr inbounds %"class.benchmark::internal::Benchmark", ptr %165, i32 0, i32 3
  %167 = call noundef i64 @_ZNKSt6vectorINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESaIS5_EE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24) %166) #5
  %168 = icmp ult i64 %164, %167
  br i1 %168, label %169, label %195

169:                                              ; preds = %163
  call void @llvm.lifetime.start.p0(i64 8, ptr %20) #5
  %170 = getelementptr inbounds %"class.benchmark::internal::BenchmarkInstance", ptr %28, i32 0, i32 1
  %171 = load ptr, ptr %170, align 8, !tbaa !33
  %172 = getelementptr inbounds %"class.benchmark::internal::Benchmark", ptr %171, i32 0, i32 3
  %173 = load i64, ptr %15, align 8, !tbaa !76
  %174 = call noundef nonnull align 8 dereferenceable(32) ptr @_ZNSt6vectorINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESaIS5_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %172, i64 noundef %173) #5
  store ptr %174, ptr %20, align 8, !tbaa !5
  %175 = load ptr, ptr %20, align 8, !tbaa !5
  %176 = call noundef zeroext i1 @_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE5emptyEv(ptr noundef nonnull align 8 dereferenceable(32) %175) #5
  br i1 %176, label %194, label %177

177:                                              ; preds = %169
  call void @llvm.lifetime.start.p0(i64 32, ptr %21) #5
  %178 = load ptr, ptr %20, align 8, !tbaa !5
  %179 = call noundef ptr @_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE5c_strEv(ptr noundef nonnull align 8 dereferenceable(32) %178) #5
  invoke void (ptr, ptr, ...) @_ZN9benchmark9StrFormatB5cxx11EPKcz(ptr dead_on_unwind writable sret(%"class.std::__cxx11::basic_string") align 8 %21, ptr noundef @.str, ptr noundef %179)
          to label %180 unwind label %185

180:                                              ; preds = %177
  %181 = getelementptr inbounds %"class.benchmark::internal::BenchmarkInstance", ptr %28, i32 0, i32 0
  %182 = getelementptr inbounds %"struct.benchmark::BenchmarkName", ptr %181, i32 0, i32 1
  %183 = invoke noundef nonnull align 8 dereferenceable(32) ptr @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEpLERKS4_(ptr noundef nonnull align 8 dereferenceable(32) %182, ptr noundef nonnull align 8 dereferenceable(32) %21)
          to label %184 unwind label %189

184:                                              ; preds = %180
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %21) #5
  call void @llvm.lifetime.end.p0(i64 32, ptr %21) #5
  br label %194

185:                                              ; preds = %177
  %186 = landingpad { ptr, i32 }
          cleanup
  %187 = extractvalue { ptr, i32 } %186, 0
  store ptr %187, ptr %13, align 8
  %188 = extractvalue { ptr, i32 } %186, 1
  store i32 %188, ptr %14, align 4
  br label %193

189:                                              ; preds = %180
  %190 = landingpad { ptr, i32 }
          cleanup
  %191 = extractvalue { ptr, i32 } %190, 0
  store ptr %191, ptr %13, align 8
  %192 = extractvalue { ptr, i32 } %190, 1
  store i32 %192, ptr %14, align 4
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %21) #5
  br label %193

193:                                              ; preds = %189, %185
  call void @llvm.lifetime.end.p0(i64 32, ptr %21) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %20) #5
  br label %216

194:                                              ; preds = %184, %169
  call void @llvm.lifetime.end.p0(i64 8, ptr %20) #5
  br label %195

195:                                              ; preds = %194, %163
  call void @llvm.lifetime.start.p0(i64 32, ptr %22) #5
  %196 = load ptr, ptr %19, align 8, !tbaa !5
  %197 = load i64, ptr %196, align 8, !tbaa !76
  invoke void (ptr, ptr, ...) @_ZN9benchmark9StrFormatB5cxx11EPKcz(ptr dead_on_unwind writable sret(%"class.std::__cxx11::basic_string") align 8 %22, ptr noundef @.str.2, i64 noundef %197)
          to label %198 unwind label %207

198:                                              ; preds = %195
  %199 = getelementptr inbounds %"class.benchmark::internal::BenchmarkInstance", ptr %28, i32 0, i32 0
  %200 = getelementptr inbounds %"struct.benchmark::BenchmarkName", ptr %199, i32 0, i32 1
  %201 = invoke noundef nonnull align 8 dereferenceable(32) ptr @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEpLERKS4_(ptr noundef nonnull align 8 dereferenceable(32) %200, ptr noundef nonnull align 8 dereferenceable(32) %22)
          to label %202 unwind label %211

202:                                              ; preds = %198
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %22) #5
  call void @llvm.lifetime.end.p0(i64 32, ptr %22) #5
  %203 = load i64, ptr %15, align 8, !tbaa !76
  %204 = add i64 %203, 1
  store i64 %204, ptr %15, align 8, !tbaa !76
  call void @llvm.lifetime.end.p0(i64 8, ptr %19) #5
  br label %205

205:                                              ; preds = %202
  %206 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZN9__gnu_cxx17__normal_iteratorIPKlSt6vectorIlSaIlEEEppEv(ptr noundef nonnull align 8 dereferenceable(8) %17) #5
  br label %130

207:                                              ; preds = %195
  %208 = landingpad { ptr, i32 }
          cleanup
  %209 = extractvalue { ptr, i32 } %208, 0
  store ptr %209, ptr %13, align 8
  %210 = extractvalue { ptr, i32 } %208, 1
  store i32 %210, ptr %14, align 4
  br label %215

211:                                              ; preds = %198
  %212 = landingpad { ptr, i32 }
          cleanup
  %213 = extractvalue { ptr, i32 } %212, 0
  store ptr %213, ptr %13, align 8
  %214 = extractvalue { ptr, i32 } %212, 1
  store i32 %214, ptr %14, align 4
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %22) #5
  br label %215

215:                                              ; preds = %211, %207
  call void @llvm.lifetime.end.p0(i64 32, ptr %22) #5
  br label %216

216:                                              ; preds = %215, %193, %159
  call void @llvm.lifetime.end.p0(i64 8, ptr %19) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %18) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %17) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %16) #5
  br label %366

217:                                              ; preds = %132
  %218 = load ptr, ptr %8, align 8, !tbaa !5
  %219 = getelementptr inbounds %"class.benchmark::internal::Benchmark", ptr %218, i32 0, i32 8
  %220 = load double, ptr %219, align 8, !tbaa !69
  %221 = invoke noundef zeroext i1 @_ZN9benchmark8internal6IsZeroEd(double noundef %220)
          to label %222 unwind label %232

222:                                              ; preds = %217
  br i1 %221, label %240, label %223

223:                                              ; preds = %222
  call void @llvm.lifetime.start.p0(i64 32, ptr %23) #5
  %224 = getelementptr inbounds %"class.benchmark::internal::BenchmarkInstance", ptr %28, i32 0, i32 1
  %225 = load ptr, ptr %224, align 8, !tbaa !33
  %226 = getelementptr inbounds %"class.benchmark::internal::Benchmark", ptr %225, i32 0, i32 8
  %227 = load double, ptr %226, align 8, !tbaa !69
  invoke void (ptr, ptr, ...) @_ZN9benchmark9StrFormatB5cxx11EPKcz(ptr dead_on_unwind writable sret(%"class.std::__cxx11::basic_string") align 8 %23, ptr noundef @.str.3, double noundef %227)
          to label %228 unwind label %236

228:                                              ; preds = %223
  %229 = getelementptr inbounds %"class.benchmark::internal::BenchmarkInstance", ptr %28, i32 0, i32 0
  %230 = getelementptr inbounds %"struct.benchmark::BenchmarkName", ptr %229, i32 0, i32 2
  %231 = call noundef nonnull align 8 dereferenceable(32) ptr @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEaSEOS4_(ptr noundef nonnull align 8 dereferenceable(32) %230, ptr noundef nonnull align 8 dereferenceable(32) %23) #5
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %23) #5
  call void @llvm.lifetime.end.p0(i64 32, ptr %23) #5
  br label %240

232:                                              ; preds = %343, %338, %323, %318, %303, %240, %217
  %233 = landingpad { ptr, i32 }
          cleanup
  %234 = extractvalue { ptr, i32 } %233, 0
  store ptr %234, ptr %13, align 8
  %235 = extractvalue { ptr, i32 } %233, 1
  store i32 %235, ptr %14, align 4
  br label %366

236:                                              ; preds = %223
  %237 = landingpad { ptr, i32 }
          cleanup
  %238 = extractvalue { ptr, i32 } %237, 0
  store ptr %238, ptr %13, align 8
  %239 = extractvalue { ptr, i32 } %237, 1
  store i32 %239, ptr %14, align 4
  call void @llvm.lifetime.end.p0(i64 32, ptr %23) #5
  br label %366

240:                                              ; preds = %228, %222
  %241 = load ptr, ptr %8, align 8, !tbaa !5
  %242 = getelementptr inbounds %"class.benchmark::internal::Benchmark", ptr %241, i32 0, i32 9
  %243 = load double, ptr %242, align 8, !tbaa !71
  %244 = invoke noundef zeroext i1 @_ZN9benchmark8internal6IsZeroEd(double noundef %243)
          to label %245 unwind label %232

245:                                              ; preds = %240
  br i1 %244, label %259, label %246

246:                                              ; preds = %245
  call void @llvm.lifetime.start.p0(i64 32, ptr %24) #5
  %247 = getelementptr inbounds %"class.benchmark::internal::BenchmarkInstance", ptr %28, i32 0, i32 1
  %248 = load ptr, ptr %247, align 8, !tbaa !33
  %249 = getelementptr inbounds %"class.benchmark::internal::Benchmark", ptr %248, i32 0, i32 9
  %250 = load double, ptr %249, align 8, !tbaa !71
  invoke void (ptr, ptr, ...) @_ZN9benchmark9StrFormatB5cxx11EPKcz(ptr dead_on_unwind writable sret(%"class.std::__cxx11::basic_string") align 8 %24, ptr noundef @.str.4, double noundef %250)
          to label %251 unwind label %255

251:                                              ; preds = %246
  %252 = getelementptr inbounds %"class.benchmark::internal::BenchmarkInstance", ptr %28, i32 0, i32 0
  %253 = getelementptr inbounds %"struct.benchmark::BenchmarkName", ptr %252, i32 0, i32 3
  %254 = call noundef nonnull align 8 dereferenceable(32) ptr @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEaSEOS4_(ptr noundef nonnull align 8 dereferenceable(32) %253, ptr noundef nonnull align 8 dereferenceable(32) %24) #5
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %24) #5
  call void @llvm.lifetime.end.p0(i64 32, ptr %24) #5
  br label %259

255:                                              ; preds = %246
  %256 = landingpad { ptr, i32 }
          cleanup
  %257 = extractvalue { ptr, i32 } %256, 0
  store ptr %257, ptr %13, align 8
  %258 = extractvalue { ptr, i32 } %256, 1
  store i32 %258, ptr %14, align 4
  call void @llvm.lifetime.end.p0(i64 32, ptr %24) #5
  br label %366

259:                                              ; preds = %251, %245
  %260 = getelementptr inbounds %"class.benchmark::internal::BenchmarkInstance", ptr %28, i32 0, i32 1
  %261 = load ptr, ptr %260, align 8, !tbaa !33
  %262 = getelementptr inbounds %"class.benchmark::internal::Benchmark", ptr %261, i32 0, i32 10
  %263 = load i64, ptr %262, align 8, !tbaa !73
  %264 = icmp ne i64 %263, 0
  br i1 %264, label %265, label %278

265:                                              ; preds = %259
  call void @llvm.lifetime.start.p0(i64 32, ptr %25) #5
  %266 = getelementptr inbounds %"class.benchmark::internal::BenchmarkInstance", ptr %28, i32 0, i32 1
  %267 = load ptr, ptr %266, align 8, !tbaa !33
  %268 = getelementptr inbounds %"class.benchmark::internal::Benchmark", ptr %267, i32 0, i32 10
  %269 = load i64, ptr %268, align 8, !tbaa !73
  invoke void (ptr, ptr, ...) @_ZN9benchmark9StrFormatB5cxx11EPKcz(ptr dead_on_unwind writable sret(%"class.std::__cxx11::basic_string") align 8 %25, ptr noundef @.str.5, i64 noundef %269)
          to label %270 unwind label %274

270:                                              ; preds = %265
  %271 = getelementptr inbounds %"class.benchmark::internal::BenchmarkInstance", ptr %28, i32 0, i32 0
  %272 = getelementptr inbounds %"struct.benchmark::BenchmarkName", ptr %271, i32 0, i32 4
  %273 = call noundef nonnull align 8 dereferenceable(32) ptr @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEaSEOS4_(ptr noundef nonnull align 8 dereferenceable(32) %272, ptr noundef nonnull align 8 dereferenceable(32) %25) #5
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %25) #5
  call void @llvm.lifetime.end.p0(i64 32, ptr %25) #5
  br label %278

274:                                              ; preds = %265
  %275 = landingpad { ptr, i32 }
          cleanup
  %276 = extractvalue { ptr, i32 } %275, 0
  store ptr %276, ptr %13, align 8
  %277 = extractvalue { ptr, i32 } %275, 1
  store i32 %277, ptr %14, align 4
  call void @llvm.lifetime.end.p0(i64 32, ptr %25) #5
  br label %366

278:                                              ; preds = %270, %259
  %279 = getelementptr inbounds %"class.benchmark::internal::BenchmarkInstance", ptr %28, i32 0, i32 1
  %280 = load ptr, ptr %279, align 8, !tbaa !33
  %281 = getelementptr inbounds %"class.benchmark::internal::Benchmark", ptr %280, i32 0, i32 11
  %282 = load i32, ptr %281, align 8, !tbaa !67
  %283 = icmp ne i32 %282, 0
  br i1 %283, label %284, label %297

284:                                              ; preds = %278
  call void @llvm.lifetime.start.p0(i64 32, ptr %26) #5
  %285 = getelementptr inbounds %"class.benchmark::internal::BenchmarkInstance", ptr %28, i32 0, i32 1
  %286 = load ptr, ptr %285, align 8, !tbaa !33
  %287 = getelementptr inbounds %"class.benchmark::internal::Benchmark", ptr %286, i32 0, i32 11
  %288 = load i32, ptr %287, align 8, !tbaa !67
  invoke void (ptr, ptr, ...) @_ZN9benchmark9StrFormatB5cxx11EPKcz(ptr dead_on_unwind writable sret(%"class.std::__cxx11::basic_string") align 8 %26, ptr noundef @.str.6, i32 noundef %288)
          to label %289 unwind label %293

289:                                              ; preds = %284
  %290 = getelementptr inbounds %"class.benchmark::internal::BenchmarkInstance", ptr %28, i32 0, i32 0
  %291 = getelementptr inbounds %"struct.benchmark::BenchmarkName", ptr %290, i32 0, i32 5
  %292 = call noundef nonnull align 8 dereferenceable(32) ptr @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEaSEOS4_(ptr noundef nonnull align 8 dereferenceable(32) %291, ptr noundef nonnull align 8 dereferenceable(32) %26) #5
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %26) #5
  call void @llvm.lifetime.end.p0(i64 32, ptr %26) #5
  br label %297

293:                                              ; preds = %284
  %294 = landingpad { ptr, i32 }
          cleanup
  %295 = extractvalue { ptr, i32 } %294, 0
  store ptr %295, ptr %13, align 8
  %296 = extractvalue { ptr, i32 } %294, 1
  store i32 %296, ptr %14, align 4
  call void @llvm.lifetime.end.p0(i64 32, ptr %26) #5
  br label %366

297:                                              ; preds = %289, %278
  %298 = getelementptr inbounds %"class.benchmark::internal::BenchmarkInstance", ptr %28, i32 0, i32 1
  %299 = load ptr, ptr %298, align 8, !tbaa !33
  %300 = getelementptr inbounds %"class.benchmark::internal::Benchmark", ptr %299, i32 0, i32 12
  %301 = load i8, ptr %300, align 4, !tbaa !55, !range !56, !noundef !57
  %302 = trunc i8 %301 to i1
  br i1 %302, label %303, label %308

303:                                              ; preds = %297
  %304 = getelementptr inbounds %"class.benchmark::internal::BenchmarkInstance", ptr %28, i32 0, i32 0
  %305 = getelementptr inbounds %"struct.benchmark::BenchmarkName", ptr %304, i32 0, i32 6
  %306 = invoke noundef nonnull align 8 dereferenceable(32) ptr @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEaSEPKc(ptr noundef nonnull align 8 dereferenceable(32) %305, ptr noundef @.str.7)
          to label %307 unwind label %232

307:                                              ; preds = %303
  br label %308

308:                                              ; preds = %307, %297
  %309 = getelementptr inbounds %"class.benchmark::internal::BenchmarkInstance", ptr %28, i32 0, i32 1
  %310 = load ptr, ptr %309, align 8, !tbaa !33
  %311 = getelementptr inbounds %"class.benchmark::internal::Benchmark", ptr %310, i32 0, i32 14
  %312 = load i8, ptr %311, align 2, !tbaa !61, !range !56, !noundef !57
  %313 = trunc i8 %312 to i1
  br i1 %313, label %314, label %328

314:                                              ; preds = %308
  %315 = getelementptr inbounds %"class.benchmark::internal::BenchmarkInstance", ptr %28, i32 0, i32 0
  %316 = getelementptr inbounds %"struct.benchmark::BenchmarkName", ptr %315, i32 0, i32 6
  %317 = call noundef zeroext i1 @_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE5emptyEv(ptr noundef nonnull align 8 dereferenceable(32) %316) #5
  br i1 %317, label %323, label %318

318:                                              ; preds = %314
  %319 = getelementptr inbounds %"class.benchmark::internal::BenchmarkInstance", ptr %28, i32 0, i32 0
  %320 = getelementptr inbounds %"struct.benchmark::BenchmarkName", ptr %319, i32 0, i32 6
  %321 = invoke noundef nonnull align 8 dereferenceable(32) ptr @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEpLEc(ptr noundef nonnull align 8 dereferenceable(32) %320, i8 noundef signext 47)
          to label %322 unwind label %232

322:                                              ; preds = %318
  br label %323

323:                                              ; preds = %322, %314
  %324 = getelementptr inbounds %"class.benchmark::internal::BenchmarkInstance", ptr %28, i32 0, i32 0
  %325 = getelementptr inbounds %"struct.benchmark::BenchmarkName", ptr %324, i32 0, i32 6
  %326 = invoke noundef nonnull align 8 dereferenceable(32) ptr @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEpLEPKc(ptr noundef nonnull align 8 dereferenceable(32) %325, ptr noundef @.str.8)
          to label %327 unwind label %232

327:                                              ; preds = %323
  br label %349

328:                                              ; preds = %308
  %329 = getelementptr inbounds %"class.benchmark::internal::BenchmarkInstance", ptr %28, i32 0, i32 1
  %330 = load ptr, ptr %329, align 8, !tbaa !33
  %331 = getelementptr inbounds %"class.benchmark::internal::Benchmark", ptr %330, i32 0, i32 13
  %332 = load i8, ptr %331, align 1, !tbaa !59, !range !56, !noundef !57
  %333 = trunc i8 %332 to i1
  br i1 %333, label %334, label %348

334:                                              ; preds = %328
  %335 = getelementptr inbounds %"class.benchmark::internal::BenchmarkInstance", ptr %28, i32 0, i32 0
  %336 = getelementptr inbounds %"struct.benchmark::BenchmarkName", ptr %335, i32 0, i32 6
  %337 = call noundef zeroext i1 @_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE5emptyEv(ptr noundef nonnull align 8 dereferenceable(32) %336) #5
  br i1 %337, label %343, label %338

338:                                              ; preds = %334
  %339 = getelementptr inbounds %"class.benchmark::internal::BenchmarkInstance", ptr %28, i32 0, i32 0
  %340 = getelementptr inbounds %"struct.benchmark::BenchmarkName", ptr %339, i32 0, i32 6
  %341 = invoke noundef nonnull align 8 dereferenceable(32) ptr @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEpLEc(ptr noundef nonnull align 8 dereferenceable(32) %340, i8 noundef signext 47)
          to label %342 unwind label %232

342:                                              ; preds = %338
  br label %343

343:                                              ; preds = %342, %334
  %344 = getelementptr inbounds %"class.benchmark::internal::BenchmarkInstance", ptr %28, i32 0, i32 0
  %345 = getelementptr inbounds %"struct.benchmark::BenchmarkName", ptr %344, i32 0, i32 6
  %346 = invoke noundef nonnull align 8 dereferenceable(32) ptr @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEpLEPKc(ptr noundef nonnull align 8 dereferenceable(32) %345, ptr noundef @.str.9)
          to label %347 unwind label %232

347:                                              ; preds = %343
  br label %348

348:                                              ; preds = %347, %328
  br label %349

349:                                              ; preds = %348, %327
  %350 = getelementptr inbounds %"class.benchmark::internal::BenchmarkInstance", ptr %28, i32 0, i32 1
  %351 = load ptr, ptr %350, align 8, !tbaa !33
  %352 = getelementptr inbounds %"class.benchmark::internal::Benchmark", ptr %351, i32 0, i32 18
  %353 = call noundef zeroext i1 @_ZNKSt6vectorIiSaIiEE5emptyEv(ptr noundef nonnull align 8 dereferenceable(24) %352) #5
  br i1 %353, label %365, label %354

354:                                              ; preds = %349
  call void @llvm.lifetime.start.p0(i64 32, ptr %27) #5
  %355 = getelementptr inbounds %"class.benchmark::internal::BenchmarkInstance", ptr %28, i32 0, i32 18
  %356 = load i32, ptr %355, align 8, !tbaa !75
  invoke void (ptr, ptr, ...) @_ZN9benchmark9StrFormatB5cxx11EPKcz(ptr dead_on_unwind writable sret(%"class.std::__cxx11::basic_string") align 8 %27, ptr noundef @.str.10, i32 noundef %356)
          to label %357 unwind label %361

357:                                              ; preds = %354
  %358 = getelementptr inbounds %"class.benchmark::internal::BenchmarkInstance", ptr %28, i32 0, i32 0
  %359 = getelementptr inbounds %"struct.benchmark::BenchmarkName", ptr %358, i32 0, i32 7
  %360 = call noundef nonnull align 8 dereferenceable(32) ptr @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEaSEOS4_(ptr noundef nonnull align 8 dereferenceable(32) %359, ptr noundef nonnull align 8 dereferenceable(32) %27) #5
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %27) #5
  call void @llvm.lifetime.end.p0(i64 32, ptr %27) #5
  br label %365

361:                                              ; preds = %354
  %362 = landingpad { ptr, i32 }
          cleanup
  %363 = extractvalue { ptr, i32 } %362, 0
  store ptr %363, ptr %13, align 8
  %364 = extractvalue { ptr, i32 } %362, 1
  store i32 %364, ptr %14, align 4
  call void @llvm.lifetime.end.p0(i64 32, ptr %27) #5
  br label %366

365:                                              ; preds = %357, %349
  call void @llvm.lifetime.end.p0(i64 8, ptr %15) #5
  ret void

366:                                              ; preds = %361, %293, %274, %255, %236, %232, %216
  call void @llvm.lifetime.end.p0(i64 8, ptr %15) #5
  br label %367

367:                                              ; preds = %366, %145
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %111) #5
  br label %368

368:                                              ; preds = %367, %141
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %106) #5
  br label %369

369:                                              ; preds = %368, %137
  call void @_ZNSt3mapINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEN9benchmark7CounterESt4lessIS5_ESaISt4pairIKS5_S7_EEED2Ev(ptr noundef nonnull align 8 dereferenceable(48) %79) #5
  br label %370

370:                                              ; preds = %369, %133
  call void @_ZN9benchmark13BenchmarkNameD2Ev(ptr noundef nonnull align 8 dereferenceable(256) %29) #5
  br label %371

371:                                              ; preds = %370
  %372 = load ptr, ptr %13, align 8
  %373 = load i32, ptr %14, align 4
  %374 = insertvalue { ptr, i32 } poison, ptr %372, 0
  %375 = insertvalue { ptr, i32 } %374, i32 %373, 1
  resume { ptr, i32 } %375
}

; Function Attrs: inlinehint mustprogress nounwind uwtable
declare dso_local void @_ZN9benchmark13BenchmarkNameC2Ev(ptr noundef nonnull align 8 dereferenceable(256)) unnamed_addr #1 align 2

declare noundef i32 @_ZNK9benchmark8internal9Benchmark11GetTimeUnitEv(ptr noundef nonnull align 8 dereferenceable(304)) #2

declare i32 @__gxx_personality_v0(...)

; Function Attrs: mustprogress nounwind uwtable
declare dso_local void @_ZNSt3mapINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEN9benchmark7CounterESt4lessIS5_ESaISt4pairIKS5_S7_EEEC2Ev(ptr noundef nonnull align 8 dereferenceable(48)) unnamed_addr #3 align 2

; Function Attrs: mustprogress uwtable
declare dso_local void @_ZNSt8functionIFvRKN9benchmark5StateEEEC2ERKS5_(ptr noundef nonnull align 8 dereferenceable(32), ptr noundef nonnull align 8 dereferenceable(32)) unnamed_addr #0 align 2

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

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

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

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

; Function Attrs: inlinehint mustprogress nounwind uwtable
declare dso_local noundef zeroext i1 @_ZN9__gnu_cxxneIPKlSt6vectorIlSaIlEEEEbRKNS_17__normal_iteratorIT_T0_EESB_(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(8) ptr @_ZNK9__gnu_cxx17__normal_iteratorIPKlSt6vectorIlSaIlEEEdeEv(ptr noundef nonnull align 8 dereferenceable(8)) #3 align 2

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

; Function Attrs: mustprogress uwtable
declare noundef nonnull align 8 dereferenceable(32) ptr @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEpLEc(ptr noundef nonnull align 8 dereferenceable(32), i8 noundef signext) #0 align 2

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

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

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

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

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

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

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

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

declare noundef zeroext i1 @_ZN9benchmark8internal6IsZeroEd(double noundef) #2

; 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)) #3 align 2

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

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

; Function Attrs: mustprogress nounwind uwtable
declare dso_local noundef zeroext i1 @_ZNKSt6vectorIiSaIiEE5emptyEv(ptr noundef nonnull align 8 dereferenceable(24)) #3 align 2

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

; Function Attrs: mustprogress nounwind uwtable
declare dso_local void @_ZNSt3mapINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEN9benchmark7CounterESt4lessIS5_ESaISt4pairIKS5_S7_EEED2Ev(ptr noundef nonnull align 8 dereferenceable(48)) unnamed_addr #3 align 2

; Function Attrs: inlinehint mustprogress nounwind uwtable
declare dso_local void @_ZN9benchmark13BenchmarkNameD2Ev(ptr noundef nonnull align 8 dereferenceable(256)) unnamed_addr #1 align 2

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

!llvm.module.flags = !{!0, !1, !2, !3}
!llvm.ident = !{!4}

!0 = !{i32 1, !"wchar_size", i32 4}
!1 = !{i32 8, !"PIC Level", i32 2}
!2 = !{i32 7, !"PIE Level", i32 2}
!3 = !{i32 7, !"uwtable", i32 2}
!4 = !{!"clang version 19.1.0 (git@github.com:llvm/llvm-project.git a4bf6cd7cfb1a1421ba92bca9d017b49936c55e4)"}
!5 = !{!6, !6, i64 0}
!6 = !{!"any pointer", !7, i64 0}
!7 = !{!"omnipotent char", !8, i64 0}
!8 = !{!"Simple C++ TBAA"}
!9 = !{!10, !10, i64 0}
!10 = !{!"int", !7, i64 0}
!11 = !{!12, !10, i64 264}
!12 = !{!"_ZTSN9benchmark8internal17BenchmarkInstanceE", !13, i64 0, !6, i64 256, !10, i64 264, !10, i64 268, !17, i64 272, !6, i64 280, !18, i64 288, !19, i64 292, !19, i64 293, !19, i64 294, !20, i64 296, !6, i64 304, !21, i64 312, !6, i64 360, !10, i64 368, !29, i64 376, !29, i64 384, !16, i64 392, !10, i64 400, !30, i64 408, !30, i64 440}
!13 = !{!"_ZTSN9benchmark13BenchmarkNameE", !14, i64 0, !14, i64 32, !14, i64 64, !14, i64 96, !14, i64 128, !14, i64 160, !14, i64 192, !14, i64 224}
!14 = !{!"_ZTSNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE", !15, i64 0, !16, i64 8, !7, i64 16}
!15 = !{!"_ZTSNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE12_Alloc_hiderE", !6, i64 0}
!16 = !{!"long", !7, i64 0}
!17 = !{!"_ZTSN9benchmark8internal21AggregationReportModeE", !7, i64 0}
!18 = !{!"_ZTSN9benchmark8TimeUnitE", !7, i64 0}
!19 = !{!"bool", !7, i64 0}
!20 = !{!"_ZTSN9benchmark4BigOE", !7, i64 0}
!21 = !{!"_ZTSSt3mapINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEN9benchmark7CounterESt4lessIS5_ESaISt4pairIKS5_S7_EEE", !22, i64 0}
!22 = !{!"_ZTSSt8_Rb_treeINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESt4pairIKS5_N9benchmark7CounterEESt10_Select1stISA_ESt4lessIS5_ESaISA_EE", !23, i64 0}
!23 = !{!"_ZTSNSt8_Rb_treeINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESt4pairIKS5_N9benchmark7CounterEESt10_Select1stISA_ESt4lessIS5_ESaISA_EE13_Rb_tree_implISE_Lb1EEE", !24, i64 0, !26, i64 8}
!24 = !{!"_ZTSSt20_Rb_tree_key_compareISt4lessINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEEE", !25, i64 0}
!25 = !{!"_ZTSSt4lessINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEE"}
!26 = !{!"_ZTSSt15_Rb_tree_header", !27, i64 0, !16, i64 32}
!27 = !{!"_ZTSSt18_Rb_tree_node_base", !28, i64 0, !6, i64 8, !6, i64 16, !6, i64 24}
!28 = !{!"_ZTSSt14_Rb_tree_color", !7, i64 0}
!29 = !{!"double", !7, i64 0}
!30 = !{!"_ZTSSt8functionIFvRKN9benchmark5StateEEE", !31, i64 0, !6, i64 24}
!31 = !{!"_ZTSSt14_Function_base", !7, i64 0, !6, i64 16}
!32 = !{!12, !10, i64 268}
!33 = !{!12, !6, i64 256}
!34 = !{!35, !17, i64 40}
!35 = !{!"_ZTSN9benchmark8internal9BenchmarkE", !14, i64 8, !17, i64 40, !36, i64 48, !40, i64 72, !18, i64 96, !19, i64 100, !10, i64 104, !29, i64 112, !29, i64 120, !16, i64 128, !10, i64 136, !19, i64 140, !19, i64 141, !19, i64 142, !20, i64 144, !6, i64 152, !44, i64 160, !48, i64 184, !30, i64 208, !30, i64 240, !52, i64 272}
!36 = !{!"_ZTSSt6vectorINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESaIS5_EE", !37, i64 0}
!37 = !{!"_ZTSSt12_Vector_baseINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESaIS5_EE", !38, i64 0}
!38 = !{!"_ZTSNSt12_Vector_baseINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESaIS5_EE12_Vector_implE", !39, i64 0}
!39 = !{!"_ZTSNSt12_Vector_baseINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESaIS5_EE17_Vector_impl_dataE", !6, i64 0, !6, i64 8, !6, i64 16}
!40 = !{!"_ZTSSt6vectorIS_IlSaIlEESaIS1_EE", !41, i64 0}
!41 = !{!"_ZTSSt12_Vector_baseISt6vectorIlSaIlEESaIS2_EE", !42, i64 0}
!42 = !{!"_ZTSNSt12_Vector_baseISt6vectorIlSaIlEESaIS2_EE12_Vector_implE", !43, i64 0}
!43 = !{!"_ZTSNSt12_Vector_baseISt6vectorIlSaIlEESaIS2_EE17_Vector_impl_dataE", !6, i64 0, !6, i64 8, !6, i64 16}
!44 = !{!"_ZTSSt6vectorIN9benchmark8internal10StatisticsESaIS2_EE", !45, i64 0}
!45 = !{!"_ZTSSt12_Vector_baseIN9benchmark8internal10StatisticsESaIS2_EE", !46, i64 0}
!46 = !{!"_ZTSNSt12_Vector_baseIN9benchmark8internal10StatisticsESaIS2_EE12_Vector_implE", !47, i64 0}
!47 = !{!"_ZTSNSt12_Vector_baseIN9benchmark8internal10StatisticsESaIS2_EE17_Vector_impl_dataE", !6, i64 0, !6, i64 8, !6, i64 16}
!48 = !{!"_ZTSSt6vectorIiSaIiEE", !49, i64 0}
!49 = !{!"_ZTSSt12_Vector_baseIiSaIiEE", !50, i64 0}
!50 = !{!"_ZTSNSt12_Vector_baseIiSaIiEE12_Vector_implE", !51, i64 0}
!51 = !{!"_ZTSNSt12_Vector_baseIiSaIiEE17_Vector_impl_dataE", !6, i64 0, !6, i64 8, !6, i64 16}
!52 = !{!"_ZTSSt8functionIFSt10unique_ptrIN9benchmark16ThreadRunnerBaseESt14default_deleteIS2_EEiEE", !31, i64 0, !6, i64 24}
!53 = !{!12, !17, i64 272}
!54 = !{!12, !18, i64 288}
!55 = !{!35, !19, i64 140}
!56 = !{i8 0, i8 2}
!57 = !{}
!58 = !{!12, !19, i64 292}
!59 = !{!35, !19, i64 141}
!60 = !{!12, !19, i64 293}
!61 = !{!35, !19, i64 142}
!62 = !{!12, !19, i64 294}
!63 = !{!35, !20, i64 144}
!64 = !{!12, !20, i64 296}
!65 = !{!35, !6, i64 152}
!66 = !{!12, !6, i64 304}
!67 = !{!35, !10, i64 136}
!68 = !{!12, !10, i64 368}
!69 = !{!35, !29, i64 112}
!70 = !{!12, !29, i64 376}
!71 = !{!35, !29, i64 120}
!72 = !{!12, !29, i64 384}
!73 = !{!35, !16, i64 128}
!74 = !{!12, !16, i64 392}
!75 = !{!12, !10, i64 400}
!76 = !{!16, !16, i64 0}


; 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.__gnu_cxx::__normal_iterator" = type { ptr }
%"class.std::__cxx11::basic_string" = type { %"struct.std::__cxx11::basic_string<char>::_Alloc_hider", i64, %union.anon }
%"struct.std::__cxx11::basic_string<char>::_Alloc_hider" = type { ptr }
%union.anon = type { i64, [8 x i8] }

@.str = external hidden unnamed_addr constant [4 x i8], align 1
@.str.2 = external hidden unnamed_addr constant [4 x i8], align 1
@.str.3 = external hidden unnamed_addr constant [15 x i8], align 1
@.str.4 = external hidden unnamed_addr constant [22 x i8], align 1
@.str.5 = external hidden unnamed_addr constant [15 x i8], align 1
@.str.6 = external hidden unnamed_addr constant [11 x i8], align 1
@.str.7 = external hidden unnamed_addr constant [13 x i8], align 1
@.str.8 = external hidden unnamed_addr constant [12 x i8], align 1
@.str.9 = external hidden unnamed_addr constant [10 x i8], align 1
@.str.10 = external hidden unnamed_addr constant [11 x i8], align 1

; Function Attrs: mustprogress uwtable
define dso_local void @_ZN9benchmark8internal17BenchmarkInstanceC2EPNS0_9BenchmarkEiiRKSt6vectorIlSaIlEEi(ptr noundef nonnull align 8 dereferenceable(472) %0, ptr noundef %1, i32 noundef %2, i32 noundef %3, ptr noundef nonnull align 8 dereferenceable(24) %4, i32 noundef %5) unnamed_addr #0 align 2 personality ptr @__gxx_personality_v0 {
  %7 = alloca %"class.__gnu_cxx::__normal_iterator", align 8
  %8 = alloca %"class.__gnu_cxx::__normal_iterator", align 8
  %9 = alloca %"class.std::__cxx11::basic_string", align 8
  %10 = alloca %"class.std::__cxx11::basic_string", 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 = alloca %"class.std::__cxx11::basic_string", align 8
  %15 = alloca %"class.std::__cxx11::basic_string", align 8
  tail call void @_ZN9benchmark13BenchmarkNameC2Ev(ptr noundef nonnull align 8 dereferenceable(256) %0) #5
  %16 = getelementptr inbounds i8, ptr %0, i64 256
  store ptr %1, ptr %16, align 8, !tbaa !5
  %17 = getelementptr inbounds i8, ptr %0, i64 264
  store i32 %2, ptr %17, align 8, !tbaa !9
  %18 = getelementptr inbounds i8, ptr %0, i64 268
  store i32 %3, ptr %18, align 4, !tbaa !31
  %19 = getelementptr inbounds i8, ptr %0, i64 272
  %20 = getelementptr inbounds i8, ptr %1, i64 40
  %21 = load i32, ptr %20, align 8, !tbaa !32
  store i32 %21, ptr %19, align 8, !tbaa !51
  %22 = getelementptr inbounds i8, ptr %0, i64 280
  store ptr %4, ptr %22, align 8, !tbaa !5
  %23 = invoke noundef i32 @_ZNK9benchmark8internal9Benchmark11GetTimeUnitEv(ptr noundef nonnull align 8 dereferenceable(304) %1)
          to label %24 unwind label %75

24:                                               ; preds = %6
  %25 = getelementptr inbounds i8, ptr %0, i64 288
  store i32 %23, ptr %25, align 8, !tbaa !52
  %26 = getelementptr inbounds i8, ptr %0, i64 292
  %27 = load ptr, ptr %16, align 8, !tbaa !53
  %28 = getelementptr inbounds i8, ptr %27, i64 140
  %29 = load i8, ptr %28, align 4, !tbaa !54, !range !55, !noundef !56
  store i8 %29, ptr %26, align 4, !tbaa !57
  %30 = getelementptr inbounds i8, ptr %0, i64 293
  %31 = getelementptr inbounds i8, ptr %27, i64 141
  %32 = load i8, ptr %31, align 1, !tbaa !58, !range !55, !noundef !56
  store i8 %32, ptr %30, align 1, !tbaa !59
  %33 = getelementptr inbounds i8, ptr %0, i64 294
  %34 = getelementptr inbounds i8, ptr %27, i64 142
  %35 = load i8, ptr %34, align 2, !tbaa !60, !range !55, !noundef !56
  store i8 %35, ptr %33, align 2, !tbaa !61
  %36 = getelementptr inbounds i8, ptr %0, i64 296
  %37 = getelementptr inbounds i8, ptr %27, i64 144
  %38 = load i32, ptr %37, align 8, !tbaa !62
  store i32 %38, ptr %36, align 8, !tbaa !63
  %39 = getelementptr inbounds i8, ptr %0, i64 304
  %40 = getelementptr inbounds i8, ptr %27, i64 152
  %41 = load ptr, ptr %40, align 8, !tbaa !64
  store ptr %41, ptr %39, align 8, !tbaa !65
  %42 = getelementptr inbounds i8, ptr %0, i64 312
  tail call void @_ZNSt3mapINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEN9benchmark7CounterESt4lessIS5_ESaISt4pairIKS5_S7_EEEC2Ev(ptr noundef nonnull align 8 dereferenceable(48) %42) #5
  %43 = getelementptr inbounds i8, ptr %0, i64 360
  %44 = load ptr, ptr %16, align 8, !tbaa !53
  %45 = getelementptr inbounds i8, ptr %44, i64 160
  store ptr %45, ptr %43, align 8, !tbaa !5
  %46 = getelementptr inbounds i8, ptr %0, i64 368
  %47 = getelementptr inbounds i8, ptr %44, i64 136
  %48 = load i32, ptr %47, align 8, !tbaa !66
  store i32 %48, ptr %46, align 8, !tbaa !67
  %49 = getelementptr inbounds i8, ptr %0, i64 376
  %50 = getelementptr inbounds i8, ptr %44, i64 112
  %51 = load <2 x double>, ptr %50, align 8, !tbaa !68
  store <2 x double> %51, ptr %49, align 8, !tbaa !68
  %52 = getelementptr inbounds i8, ptr %0, i64 392
  %53 = getelementptr inbounds i8, ptr %44, i64 128
  %54 = load i64, ptr %53, align 8, !tbaa !69
  store i64 %54, ptr %52, align 8, !tbaa !70
  %55 = getelementptr inbounds i8, ptr %0, i64 400
  store i32 %5, ptr %55, align 8, !tbaa !71
  %56 = getelementptr inbounds i8, ptr %0, i64 408
  %57 = getelementptr inbounds i8, ptr %44, i64 208
  invoke void @_ZNSt8functionIFvRKN9benchmark5StateEEEC2ERKS5_(ptr noundef nonnull align 8 dereferenceable(32) %56, ptr noundef nonnull align 8 dereferenceable(32) %57)
          to label %58 unwind label %77

58:                                               ; preds = %24
  %59 = getelementptr inbounds i8, ptr %0, i64 440
  %60 = load ptr, ptr %16, align 8, !tbaa !53
  %61 = getelementptr inbounds i8, ptr %60, i64 240
  invoke void @_ZNSt8functionIFvRKN9benchmark5StateEEEC2ERKS5_(ptr noundef nonnull align 8 dereferenceable(32) %59, ptr noundef nonnull align 8 dereferenceable(32) %61)
          to label %62 unwind label %79

62:                                               ; preds = %58
  %63 = load ptr, ptr %16, align 8, !tbaa !53
  %64 = getelementptr inbounds i8, ptr %63, i64 8
  %65 = invoke noundef nonnull align 8 dereferenceable(32) ptr @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEaSERKS4_(ptr noundef nonnull align 8 dereferenceable(32) %0, ptr noundef nonnull align 8 dereferenceable(32) %64)
          to label %66 unwind label %81

66:                                               ; preds = %62
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %7) #5
  %67 = tail call ptr @_ZNKSt6vectorIlSaIlEE5beginEv(ptr noundef nonnull align 8 dereferenceable(24) %4) #5
  store ptr %67, ptr %7, align 8
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %8) #5
  %68 = tail call ptr @_ZNKSt6vectorIlSaIlEE3endEv(ptr noundef nonnull align 8 dereferenceable(24) %4) #5
  store ptr %68, ptr %8, align 8
  %69 = call noundef zeroext i1 @_ZN9__gnu_cxxneIPKlSt6vectorIlSaIlEEEEbRKNS_17__normal_iteratorIT_T0_EESB_(ptr noundef nonnull align 8 dereferenceable(8) %7, ptr noundef nonnull align 8 dereferenceable(8) %8) #5
  br i1 %69, label %.lr.ph, label %._crit_edge

.lr.ph:                                           ; preds = %66
  %70 = getelementptr inbounds i8, ptr %0, i64 32
  %71 = getelementptr inbounds i8, ptr %1, i64 48
  br label %83

._crit_edge:                                      ; preds = %112, %66
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %8) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %7) #5
  %72 = getelementptr inbounds i8, ptr %1, i64 112
  %73 = load double, ptr %72, align 8, !tbaa !72
  %74 = invoke noundef zeroext i1 @_ZN9benchmark8internal6IsZeroEd(double noundef %73)
          to label %122 unwind label %130

75:                                               ; preds = %6
  %76 = landingpad { ptr, i32 }
          cleanup
  br label %213

77:                                               ; preds = %24
  %78 = landingpad { ptr, i32 }
          cleanup
  br label %212

79:                                               ; preds = %58
  %80 = landingpad { ptr, i32 }
          cleanup
  br label %211

81:                                               ; preds = %62
  %82 = landingpad { ptr, i32 }
          cleanup
  br label %210

83:                                               ; preds = %.lr.ph, %112
  %.02738 = phi i64 [ 0, %.lr.ph ], [ %113, %112 ]
  %84 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNK9__gnu_cxx17__normal_iteratorIPKlSt6vectorIlSaIlEEEdeEv(ptr noundef nonnull align 8 dereferenceable(8) %7) #5
  %85 = call noundef zeroext i1 @_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE5emptyEv(ptr noundef nonnull align 8 dereferenceable(32) %70) #5
  br i1 %85, label %90, label %86

86:                                               ; preds = %83
  %87 = invoke noundef nonnull align 8 dereferenceable(32) ptr @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEpLEc(ptr noundef nonnull align 8 dereferenceable(32) %70, i8 noundef signext 47)
          to label %90 unwind label %88

88:                                               ; preds = %86
  %89 = landingpad { ptr, i32 }
          cleanup
  br label %121

90:                                               ; preds = %86, %83
  %91 = call noundef i64 @_ZNKSt6vectorINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESaIS5_EE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24) %71) #5
  %92 = icmp ult i64 %.02738, %91
  br i1 %92, label %93, label %108

93:                                               ; preds = %90
  %94 = load ptr, ptr %16, align 8, !tbaa !53
  %95 = getelementptr inbounds i8, ptr %94, i64 48
  %96 = call noundef nonnull align 8 dereferenceable(32) ptr @_ZNSt6vectorINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESaIS5_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %95, i64 noundef %.02738) #5
  %97 = call noundef zeroext i1 @_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE5emptyEv(ptr noundef nonnull align 8 dereferenceable(32) %96) #5
  br i1 %97, label %108, label %98

98:                                               ; preds = %93
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %9) #5
  %99 = call noundef ptr @_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE5c_strEv(ptr noundef nonnull align 8 dereferenceable(32) %96) #5
  invoke void (ptr, ptr, ...) @_ZN9benchmark9StrFormatB5cxx11EPKcz(ptr dead_on_unwind nonnull writable sret(%"class.std::__cxx11::basic_string") align 8 %9, ptr noundef nonnull @.str, ptr noundef %99)
          to label %100 unwind label %103

100:                                              ; preds = %98
  %101 = invoke noundef nonnull align 8 dereferenceable(32) ptr @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEpLERKS4_(ptr noundef nonnull align 8 dereferenceable(32) %70, ptr noundef nonnull align 8 dereferenceable(32) %9)
          to label %102 unwind label %105

102:                                              ; preds = %100
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %9) #5
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %9) #5
  br label %108

103:                                              ; preds = %98
  %104 = landingpad { ptr, i32 }
          cleanup
  br label %107

105:                                              ; preds = %100
  %106 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %9) #5
  br label %107

107:                                              ; preds = %105, %103
  %.pn = phi { ptr, i32 } [ %106, %105 ], [ %104, %103 ]
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %9) #5
  br label %121

108:                                              ; preds = %93, %102, %90
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %10) #5
  %109 = load i64, ptr %84, align 8, !tbaa !73
  invoke void (ptr, ptr, ...) @_ZN9benchmark9StrFormatB5cxx11EPKcz(ptr dead_on_unwind nonnull writable sret(%"class.std::__cxx11::basic_string") align 8 %10, ptr noundef nonnull @.str.2, i64 noundef %109)
          to label %110 unwind label %116

110:                                              ; preds = %108
  %111 = invoke noundef nonnull align 8 dereferenceable(32) ptr @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEpLERKS4_(ptr noundef nonnull align 8 dereferenceable(32) %70, ptr noundef nonnull align 8 dereferenceable(32) %10)
          to label %112 unwind label %118

112:                                              ; preds = %110
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %10) #5
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %10) #5
  %113 = add i64 %.02738, 1
  %114 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZN9__gnu_cxx17__normal_iteratorIPKlSt6vectorIlSaIlEEEppEv(ptr noundef nonnull align 8 dereferenceable(8) %7) #5
  %115 = call noundef zeroext i1 @_ZN9__gnu_cxxneIPKlSt6vectorIlSaIlEEEEbRKNS_17__normal_iteratorIT_T0_EESB_(ptr noundef nonnull align 8 dereferenceable(8) %7, ptr noundef nonnull align 8 dereferenceable(8) %8) #5
  br i1 %115, label %83, label %._crit_edge

116:                                              ; preds = %108
  %117 = landingpad { ptr, i32 }
          cleanup
  br label %120

118:                                              ; preds = %110
  %119 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %10) #5
  br label %120

120:                                              ; preds = %118, %116
  %.pn30 = phi { ptr, i32 } [ %119, %118 ], [ %117, %116 ]
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %10) #5
  br label %121

121:                                              ; preds = %120, %107, %88
  %.pn30.pn = phi { ptr, i32 } [ %.pn30, %120 ], [ %.pn, %107 ], [ %89, %88 ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %8) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %7) #5
  br label %210

122:                                              ; preds = %._crit_edge
  br i1 %74, label %134, label %123

123:                                              ; preds = %122
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %11) #5
  %124 = load ptr, ptr %16, align 8, !tbaa !53
  %125 = getelementptr inbounds i8, ptr %124, i64 112
  %126 = load double, ptr %125, align 8, !tbaa !72
  invoke void (ptr, ptr, ...) @_ZN9benchmark9StrFormatB5cxx11EPKcz(ptr dead_on_unwind nonnull writable sret(%"class.std::__cxx11::basic_string") align 8 %11, ptr noundef nonnull @.str.3, double noundef %126)
          to label %127 unwind label %132

127:                                              ; preds = %123
  %128 = getelementptr inbounds i8, ptr %0, i64 64
  %129 = call noundef nonnull align 8 dereferenceable(32) ptr @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEaSEOS4_(ptr noundef nonnull align 8 dereferenceable(32) %128, ptr noundef nonnull align 8 dereferenceable(32) %11) #5
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %11) #5
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %11) #5
  br label %134

130:                                              ; preds = %.invoke, %193, %184, %173, %134, %._crit_edge
  %131 = landingpad { ptr, i32 }
          cleanup
  br label %210

132:                                              ; preds = %123
  %133 = landingpad { ptr, i32 }
          cleanup
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %11) #5
  br label %210

134:                                              ; preds = %127, %122
  %135 = getelementptr inbounds i8, ptr %1, i64 120
  %136 = load double, ptr %135, align 8, !tbaa !74
  %137 = invoke noundef zeroext i1 @_ZN9benchmark8internal6IsZeroEd(double noundef %136)
          to label %138 unwind label %130

138:                                              ; preds = %134
  br i1 %137, label %148, label %139

139:                                              ; preds = %138
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %12) #5
  %140 = load ptr, ptr %16, align 8, !tbaa !53
  %141 = getelementptr inbounds i8, ptr %140, i64 120
  %142 = load double, ptr %141, align 8, !tbaa !74
  invoke void (ptr, ptr, ...) @_ZN9benchmark9StrFormatB5cxx11EPKcz(ptr dead_on_unwind nonnull writable sret(%"class.std::__cxx11::basic_string") align 8 %12, ptr noundef nonnull @.str.4, double noundef %142)
          to label %143 unwind label %146

143:                                              ; preds = %139
  %144 = getelementptr inbounds i8, ptr %0, i64 96
  %145 = call noundef nonnull align 8 dereferenceable(32) ptr @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEaSEOS4_(ptr noundef nonnull align 8 dereferenceable(32) %144, ptr noundef nonnull align 8 dereferenceable(32) %12) #5
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %12) #5
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %12) #5
  br label %148

146:                                              ; preds = %139
  %147 = landingpad { ptr, i32 }
          cleanup
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %12) #5
  br label %210

148:                                              ; preds = %143, %138
  %149 = load ptr, ptr %16, align 8, !tbaa !53
  %150 = getelementptr inbounds i8, ptr %149, i64 128
  %151 = load i64, ptr %150, align 8, !tbaa !69
  %.not = icmp eq i64 %151, 0
  br i1 %.not, label %158, label %152

152:                                              ; preds = %148
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %13) #5
  invoke void (ptr, ptr, ...) @_ZN9benchmark9StrFormatB5cxx11EPKcz(ptr dead_on_unwind nonnull writable sret(%"class.std::__cxx11::basic_string") align 8 %13, ptr noundef nonnull @.str.5, i64 noundef %151)
          to label %153 unwind label %156

153:                                              ; preds = %152
  %154 = getelementptr inbounds i8, ptr %0, i64 128
  %155 = call noundef nonnull align 8 dereferenceable(32) ptr @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEaSEOS4_(ptr noundef nonnull align 8 dereferenceable(32) %154, ptr noundef nonnull align 8 dereferenceable(32) %13) #5
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %13) #5
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %13) #5
  %.pre = load ptr, ptr %16, align 8, !tbaa !53
  br label %158

156:                                              ; preds = %152
  %157 = landingpad { ptr, i32 }
          cleanup
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %13) #5
  br label %210

158:                                              ; preds = %153, %148
  %159 = phi ptr [ %.pre, %153 ], [ %149, %148 ]
  %160 = getelementptr inbounds i8, ptr %159, i64 136
  %161 = load i32, ptr %160, align 8, !tbaa !66
  %.not28 = icmp eq i32 %161, 0
  br i1 %.not28, label %168, label %162

162:                                              ; preds = %158
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %14) #5
  invoke void (ptr, ptr, ...) @_ZN9benchmark9StrFormatB5cxx11EPKcz(ptr dead_on_unwind nonnull writable sret(%"class.std::__cxx11::basic_string") align 8 %14, ptr noundef nonnull @.str.6, i32 noundef %161)
          to label %163 unwind label %166

163:                                              ; preds = %162
  %164 = getelementptr inbounds i8, ptr %0, i64 160
  %165 = call noundef nonnull align 8 dereferenceable(32) ptr @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEaSEOS4_(ptr noundef nonnull align 8 dereferenceable(32) %164, ptr noundef nonnull align 8 dereferenceable(32) %14) #5
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %14) #5
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %14) #5
  %.pre39 = load ptr, ptr %16, align 8, !tbaa !53
  br label %168

166:                                              ; preds = %162
  %167 = landingpad { ptr, i32 }
          cleanup
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %14) #5
  br label %210

168:                                              ; preds = %163, %158
  %169 = phi ptr [ %.pre39, %163 ], [ %159, %158 ]
  %170 = getelementptr inbounds i8, ptr %169, i64 140
  %171 = load i8, ptr %170, align 4, !tbaa !54, !range !55, !noundef !56
  %172 = trunc nuw i8 %171 to i1
  br i1 %172, label %173, label %176

173:                                              ; preds = %168
  %174 = getelementptr inbounds i8, ptr %0, i64 192
  %175 = invoke noundef nonnull align 8 dereferenceable(32) ptr @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEaSEPKc(ptr noundef nonnull align 8 dereferenceable(32) %174, ptr noundef nonnull @.str.7)
          to label %._crit_edge40 unwind label %130

._crit_edge40:                                    ; preds = %173
  %.pre41 = load ptr, ptr %16, align 8, !tbaa !53
  br label %176

176:                                              ; preds = %._crit_edge40, %168
  %177 = phi ptr [ %.pre41, %._crit_edge40 ], [ %169, %168 ]
  %178 = getelementptr inbounds i8, ptr %177, i64 142
  %179 = load i8, ptr %178, align 2, !tbaa !60, !range !55, !noundef !56
  %180 = trunc nuw i8 %179 to i1
  br i1 %180, label %181, label %186

181:                                              ; preds = %176
  %182 = getelementptr inbounds i8, ptr %0, i64 192
  %183 = call noundef zeroext i1 @_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE5emptyEv(ptr noundef nonnull align 8 dereferenceable(32) %182) #5
  br i1 %183, label %.invoke, label %184

184:                                              ; preds = %181
  %185 = invoke noundef nonnull align 8 dereferenceable(32) ptr @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEpLEc(ptr noundef nonnull align 8 dereferenceable(32) %182, i8 noundef signext 47)
          to label %.invoke unwind label %130

186:                                              ; preds = %176
  %187 = getelementptr inbounds i8, ptr %177, i64 141
  %188 = load i8, ptr %187, align 1, !tbaa !58, !range !55, !noundef !56
  %189 = trunc nuw i8 %188 to i1
  br i1 %189, label %190, label %198

190:                                              ; preds = %186
  %191 = getelementptr inbounds i8, ptr %0, i64 192
  %192 = call noundef zeroext i1 @_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE5emptyEv(ptr noundef nonnull align 8 dereferenceable(32) %191) #5
  br i1 %192, label %.invoke, label %193

193:                                              ; preds = %190
  %194 = invoke noundef nonnull align 8 dereferenceable(32) ptr @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEpLEc(ptr noundef nonnull align 8 dereferenceable(32) %191, i8 noundef signext 47)
          to label %.invoke unwind label %130

.invoke:                                          ; preds = %190, %193, %181, %184
  %195 = phi ptr [ %182, %184 ], [ %182, %181 ], [ %191, %193 ], [ %191, %190 ]
  %196 = phi ptr [ @.str.8, %184 ], [ @.str.8, %181 ], [ @.str.9, %193 ], [ @.str.9, %190 ]
  %197 = invoke noundef nonnull align 8 dereferenceable(32) ptr @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEpLEPKc(ptr noundef nonnull align 8 dereferenceable(32) %195, ptr noundef nonnull %196)
          to label %198 unwind label %130

198:                                              ; preds = %.invoke, %186
  %199 = load ptr, ptr %16, align 8, !tbaa !53
  %200 = getelementptr inbounds i8, ptr %199, i64 184
  %201 = call noundef zeroext i1 @_ZNKSt6vectorIiSaIiEE5emptyEv(ptr noundef nonnull align 8 dereferenceable(24) %200) #5
  br i1 %201, label %209, label %202

202:                                              ; preds = %198
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %15) #5
  %203 = load i32, ptr %55, align 8, !tbaa !71
  invoke void (ptr, ptr, ...) @_ZN9benchmark9StrFormatB5cxx11EPKcz(ptr dead_on_unwind nonnull writable sret(%"class.std::__cxx11::basic_string") align 8 %15, ptr noundef nonnull @.str.10, i32 noundef %203)
          to label %204 unwind label %207

204:                                              ; preds = %202
  %205 = getelementptr inbounds i8, ptr %0, i64 224
  %206 = call noundef nonnull align 8 dereferenceable(32) ptr @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEaSEOS4_(ptr noundef nonnull align 8 dereferenceable(32) %205, ptr noundef nonnull align 8 dereferenceable(32) %15) #5
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %15) #5
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %15) #5
  br label %209

207:                                              ; preds = %202
  %208 = landingpad { ptr, i32 }
          cleanup
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %15) #5
  br label %210

209:                                              ; preds = %204, %198
  ret void

210:                                              ; preds = %121, %130, %132, %146, %156, %166, %207, %81
  %.pn30.pn.pn.pn = phi { ptr, i32 } [ %82, %81 ], [ %.pn30.pn, %121 ], [ %208, %207 ], [ %131, %130 ], [ %167, %166 ], [ %157, %156 ], [ %147, %146 ], [ %133, %132 ]
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %59) #5
  br label %211

211:                                              ; preds = %210, %79
  %.pn30.pn.pn.pn.pn = phi { ptr, i32 } [ %.pn30.pn.pn.pn, %210 ], [ %80, %79 ]
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %56) #5
  br label %212

212:                                              ; preds = %211, %77
  %.pn30.pn.pn.pn.pn.pn = phi { ptr, i32 } [ %.pn30.pn.pn.pn.pn, %211 ], [ %78, %77 ]
  call void @_ZNSt3mapINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEN9benchmark7CounterESt4lessIS5_ESaISt4pairIKS5_S7_EEED2Ev(ptr noundef nonnull align 8 dereferenceable(48) %42) #5
  br label %213

213:                                              ; preds = %212, %75
  %.pn30.pn.pn.pn.pn.pn.pn = phi { ptr, i32 } [ %.pn30.pn.pn.pn.pn.pn, %212 ], [ %76, %75 ]
  call void @_ZN9benchmark13BenchmarkNameD2Ev(ptr noundef nonnull align 8 dereferenceable(256) %0) #5
  resume { ptr, i32 } %.pn30.pn.pn.pn.pn.pn.pn
}

; Function Attrs: inlinehint mustprogress nounwind uwtable
declare dso_local void @_ZN9benchmark13BenchmarkNameC2Ev(ptr noundef nonnull align 8 dereferenceable(256)) unnamed_addr #1 align 2

declare noundef i32 @_ZNK9benchmark8internal9Benchmark11GetTimeUnitEv(ptr noundef nonnull align 8 dereferenceable(304)) local_unnamed_addr #2

declare i32 @__gxx_personality_v0(...)

; Function Attrs: mustprogress nounwind uwtable
declare dso_local void @_ZNSt3mapINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEN9benchmark7CounterESt4lessIS5_ESaISt4pairIKS5_S7_EEEC2Ev(ptr noundef nonnull align 8 dereferenceable(48)) unnamed_addr #3 align 2

; Function Attrs: mustprogress uwtable
declare dso_local void @_ZNSt8functionIFvRKN9benchmark5StateEEEC2ERKS5_(ptr noundef nonnull align 8 dereferenceable(32), ptr noundef nonnull align 8 dereferenceable(32)) unnamed_addr #0 align 2

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

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

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

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

; Function Attrs: inlinehint mustprogress nounwind uwtable
declare dso_local noundef zeroext i1 @_ZN9__gnu_cxxneIPKlSt6vectorIlSaIlEEEEbRKNS_17__normal_iteratorIT_T0_EESB_(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(8) ptr @_ZNK9__gnu_cxx17__normal_iteratorIPKlSt6vectorIlSaIlEEEdeEv(ptr noundef nonnull align 8 dereferenceable(8)) local_unnamed_addr #3 align 2

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

; Function Attrs: mustprogress uwtable
declare noundef nonnull align 8 dereferenceable(32) ptr @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEpLEc(ptr noundef nonnull align 8 dereferenceable(32), i8 noundef signext) local_unnamed_addr #0 align 2

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

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

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

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

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

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

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

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

declare noundef zeroext i1 @_ZN9benchmark8internal6IsZeroEd(double noundef) local_unnamed_addr #2

; 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 #3 align 2

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

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

; Function Attrs: mustprogress nounwind uwtable
declare dso_local noundef zeroext i1 @_ZNKSt6vectorIiSaIiEE5emptyEv(ptr noundef nonnull align 8 dereferenceable(24)) local_unnamed_addr #3 align 2

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

; Function Attrs: mustprogress nounwind uwtable
declare dso_local void @_ZNSt3mapINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEN9benchmark7CounterESt4lessIS5_ESaISt4pairIKS5_S7_EEED2Ev(ptr noundef nonnull align 8 dereferenceable(48)) unnamed_addr #3 align 2

; Function Attrs: inlinehint mustprogress nounwind uwtable
declare dso_local void @_ZN9benchmark13BenchmarkNameD2Ev(ptr noundef nonnull align 8 dereferenceable(256)) unnamed_addr #1 align 2

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

!llvm.module.flags = !{!0, !1, !2, !3}
!llvm.ident = !{!4}

!0 = !{i32 1, !"wchar_size", i32 4}
!1 = !{i32 8, !"PIC Level", i32 2}
!2 = !{i32 7, !"PIE Level", i32 2}
!3 = !{i32 7, !"uwtable", i32 2}
!4 = !{!"clang version 19.1.0 (git@github.com:llvm/llvm-project.git a4bf6cd7cfb1a1421ba92bca9d017b49936c55e4)"}
!5 = !{!6, !6, i64 0}
!6 = !{!"any pointer", !7, i64 0}
!7 = !{!"omnipotent char", !8, i64 0}
!8 = !{!"Simple C++ TBAA"}
!9 = !{!10, !15, i64 264}
!10 = !{!"_ZTSN9benchmark8internal17BenchmarkInstanceE", !11, i64 0, !6, i64 256, !15, i64 264, !15, i64 268, !16, i64 272, !6, i64 280, !17, i64 288, !18, i64 292, !18, i64 293, !18, i64 294, !19, i64 296, !6, i64 304, !20, i64 312, !6, i64 360, !15, i64 368, !28, i64 376, !28, i64 384, !14, i64 392, !15, i64 400, !29, i64 408, !29, i64 440}
!11 = !{!"_ZTSN9benchmark13BenchmarkNameE", !12, i64 0, !12, i64 32, !12, i64 64, !12, i64 96, !12, i64 128, !12, i64 160, !12, i64 192, !12, i64 224}
!12 = !{!"_ZTSNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE", !13, i64 0, !14, i64 8, !7, i64 16}
!13 = !{!"_ZTSNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE12_Alloc_hiderE", !6, i64 0}
!14 = !{!"long", !7, i64 0}
!15 = !{!"int", !7, i64 0}
!16 = !{!"_ZTSN9benchmark8internal21AggregationReportModeE", !7, i64 0}
!17 = !{!"_ZTSN9benchmark8TimeUnitE", !7, i64 0}
!18 = !{!"bool", !7, i64 0}
!19 = !{!"_ZTSN9benchmark4BigOE", !7, i64 0}
!20 = !{!"_ZTSSt3mapINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEN9benchmark7CounterESt4lessIS5_ESaISt4pairIKS5_S7_EEE", !21, i64 0}
!21 = !{!"_ZTSSt8_Rb_treeINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESt4pairIKS5_N9benchmark7CounterEESt10_Select1stISA_ESt4lessIS5_ESaISA_EE", !22, i64 0}
!22 = !{!"_ZTSNSt8_Rb_treeINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESt4pairIKS5_N9benchmark7CounterEESt10_Select1stISA_ESt4lessIS5_ESaISA_EE13_Rb_tree_implISE_Lb1EEE", !23, i64 0, !25, i64 8}
!23 = !{!"_ZTSSt20_Rb_tree_key_compareISt4lessINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEEE", !24, i64 0}
!24 = !{!"_ZTSSt4lessINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEE"}
!25 = !{!"_ZTSSt15_Rb_tree_header", !26, i64 0, !14, i64 32}
!26 = !{!"_ZTSSt18_Rb_tree_node_base", !27, i64 0, !6, i64 8, !6, i64 16, !6, i64 24}
!27 = !{!"_ZTSSt14_Rb_tree_color", !7, i64 0}
!28 = !{!"double", !7, i64 0}
!29 = !{!"_ZTSSt8functionIFvRKN9benchmark5StateEEE", !30, i64 0, !6, i64 24}
!30 = !{!"_ZTSSt14_Function_base", !7, i64 0, !6, i64 16}
!31 = !{!10, !15, i64 268}
!32 = !{!33, !16, i64 40}
!33 = !{!"_ZTSN9benchmark8internal9BenchmarkE", !12, i64 8, !16, i64 40, !34, i64 48, !38, i64 72, !17, i64 96, !18, i64 100, !15, i64 104, !28, i64 112, !28, i64 120, !14, i64 128, !15, i64 136, !18, i64 140, !18, i64 141, !18, i64 142, !19, i64 144, !6, i64 152, !42, i64 160, !46, i64 184, !29, i64 208, !29, i64 240, !50, i64 272}
!34 = !{!"_ZTSSt6vectorINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESaIS5_EE", !35, i64 0}
!35 = !{!"_ZTSSt12_Vector_baseINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESaIS5_EE", !36, i64 0}
!36 = !{!"_ZTSNSt12_Vector_baseINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESaIS5_EE12_Vector_implE", !37, i64 0}
!37 = !{!"_ZTSNSt12_Vector_baseINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESaIS5_EE17_Vector_impl_dataE", !6, i64 0, !6, i64 8, !6, i64 16}
!38 = !{!"_ZTSSt6vectorIS_IlSaIlEESaIS1_EE", !39, i64 0}
!39 = !{!"_ZTSSt12_Vector_baseISt6vectorIlSaIlEESaIS2_EE", !40, i64 0}
!40 = !{!"_ZTSNSt12_Vector_baseISt6vectorIlSaIlEESaIS2_EE12_Vector_implE", !41, i64 0}
!41 = !{!"_ZTSNSt12_Vector_baseISt6vectorIlSaIlEESaIS2_EE17_Vector_impl_dataE", !6, i64 0, !6, i64 8, !6, i64 16}
!42 = !{!"_ZTSSt6vectorIN9benchmark8internal10StatisticsESaIS2_EE", !43, i64 0}
!43 = !{!"_ZTSSt12_Vector_baseIN9benchmark8internal10StatisticsESaIS2_EE", !44, i64 0}
!44 = !{!"_ZTSNSt12_Vector_baseIN9benchmark8internal10StatisticsESaIS2_EE12_Vector_implE", !45, i64 0}
!45 = !{!"_ZTSNSt12_Vector_baseIN9benchmark8internal10StatisticsESaIS2_EE17_Vector_impl_dataE", !6, i64 0, !6, i64 8, !6, i64 16}
!46 = !{!"_ZTSSt6vectorIiSaIiEE", !47, i64 0}
!47 = !{!"_ZTSSt12_Vector_baseIiSaIiEE", !48, i64 0}
!48 = !{!"_ZTSNSt12_Vector_baseIiSaIiEE12_Vector_implE", !49, i64 0}
!49 = !{!"_ZTSNSt12_Vector_baseIiSaIiEE17_Vector_impl_dataE", !6, i64 0, !6, i64 8, !6, i64 16}
!50 = !{!"_ZTSSt8functionIFSt10unique_ptrIN9benchmark16ThreadRunnerBaseESt14default_deleteIS2_EEiEE", !30, i64 0, !6, i64 24}
!51 = !{!10, !16, i64 272}
!52 = !{!10, !17, i64 288}
!53 = !{!10, !6, i64 256}
!54 = !{!33, !18, i64 140}
!55 = !{i8 0, i8 2}
!56 = !{}
!57 = !{!10, !18, i64 292}
!58 = !{!33, !18, i64 141}
!59 = !{!10, !18, i64 293}
!60 = !{!33, !18, i64 142}
!61 = !{!10, !18, i64 294}
!62 = !{!33, !19, i64 144}
!63 = !{!10, !19, i64 296}
!64 = !{!33, !6, i64 152}
!65 = !{!10, !6, i64 304}
!66 = !{!33, !15, i64 136}
!67 = !{!10, !15, i64 368}
!68 = !{!28, !28, i64 0}
!69 = !{!33, !14, i64 128}
!70 = !{!10, !14, i64 392}
!71 = !{!10, !15, i64 400}
!72 = !{!33, !28, i64 112}
!73 = !{!14, !14, i64 0}
!74 = !{!33, !28, i64 120}


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