; LLVM IR from google/benchmark :: src/complexity.ll (ZN9benchmark11ComputeBigOERKSt6vectorINS_17BenchmarkReporter3RunESaIS2_EE)

; Unoptimized IR (clang -disable-llvm-passes):
target datalayout = "e-m:e-p270:32:32-p271:32:32-p272:64:64-i64:64-i128:128-f80:128-n8:16:32:64-S128"
target triple = "x86_64-unknown-linux-gnu"

%"struct.benchmark::LeastSq" = type <{ double, double, i32, [4 x i8] }>
%"class.std::basic_string_view" = type { i64, ptr }
%"class.std::vector.23" = type { %"struct.std::_Vector_base.24" }
%"struct.std::_Vector_base.24" = type { %"struct.std::_Vector_base<benchmark::BenchmarkReporter::Run, std::allocator<benchmark::BenchmarkReporter::Run>>::_Vector_impl" }
%"struct.std::_Vector_base<benchmark::BenchmarkReporter::Run, std::allocator<benchmark::BenchmarkReporter::Run>>::_Vector_impl" = type { %"struct.std::_Vector_base<benchmark::BenchmarkReporter::Run, std::allocator<benchmark::BenchmarkReporter::Run>>::_Vector_impl_data" }
%"struct.std::_Vector_base<benchmark::BenchmarkReporter::Run, std::allocator<benchmark::BenchmarkReporter::Run>>::_Vector_impl_data" = type { ptr, ptr, ptr }
%"class.std::vector" = type { %"struct.std::_Vector_base" }
%"struct.std::_Vector_base" = type { %"struct.std::_Vector_base<long, std::allocator<long>>::_Vector_impl" }
%"struct.std::_Vector_base<long, std::allocator<long>>::_Vector_impl" = type { %"struct.std::_Vector_base<long, std::allocator<long>>::_Vector_impl_data" }
%"struct.std::_Vector_base<long, std::allocator<long>>::_Vector_impl_data" = type { ptr, ptr, ptr }
%"class.std::vector.13" = type { %"struct.std::_Vector_base.14" }
%"struct.std::_Vector_base.14" = type { %"struct.std::_Vector_base<double, std::allocator<double>>::_Vector_impl" }
%"struct.std::_Vector_base<double, std::allocator<double>>::_Vector_impl" = type { %"struct.std::_Vector_base<double, std::allocator<double>>::_Vector_impl_data" }
%"struct.std::_Vector_base<double, std::allocator<double>>::_Vector_impl_data" = type { ptr, ptr, ptr }
%"class.__gnu_cxx::__normal_iterator.28" = type { ptr }
%"class.benchmark::internal::CheckHandler" = type { ptr }
%"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::__cxx11::basic_string" = type { %"struct.std::__cxx11::basic_string<char>::_Alloc_hider", i64, %union.anon }
%"struct.std::__cxx11::basic_string<char>::_Alloc_hider" = type { ptr }
%union.anon = type { i64, [8 x i8] }
%"struct.benchmark::BenchmarkReporter::Run" = type { %"struct.benchmark::BenchmarkName", i64, i64, i32, %"class.std::__cxx11::basic_string", i32, %"class.std::__cxx11::basic_string", i32, %"class.std::__cxx11::basic_string", i64, i64, i64, i64, i32, double, double, double, i8, i32, ptr, i64, ptr, i8, i8, %"class.std::map", %"struct.benchmark::MemoryManager::Result", double }
%"class.std::map" = type { %"class.std::_Rb_tree" }
%"class.std::_Rb_tree" = type { %"struct.std::_Rb_tree<std::__cxx11::basic_string<char>, std::pair<const std::__cxx11::basic_string<char>, benchmark::Counter>, std::_Select1st<std::pair<const std::__cxx11::basic_string<char>, benchmark::Counter>>, std::less<std::__cxx11::basic_string<char>>>::_Rb_tree_impl" }
%"struct.std::_Rb_tree<std::__cxx11::basic_string<char>, std::pair<const std::__cxx11::basic_string<char>, benchmark::Counter>, std::_Select1st<std::pair<const std::__cxx11::basic_string<char>, benchmark::Counter>>, std::less<std::__cxx11::basic_string<char>>>::_Rb_tree_impl" = type { [8 x i8], %"struct.std::_Rb_tree_header" }
%"struct.std::_Rb_tree_header" = type { %"struct.std::_Rb_tree_node_base", i64 }
%"struct.std::_Rb_tree_node_base" = type { i32, ptr, ptr, ptr }
%"struct.benchmark::MemoryManager::Result" = type { i64, i64, i64, i64, i64 }

@.str.9 = external hidden unnamed_addr constant [68 x i8], align 1
@.str.12 = external hidden unnamed_addr constant [25 x i8], align 1
@__func__._ZN9benchmark11ComputeBigOERKSt6vectorINS_17BenchmarkReporter3RunESaIS2_EE = external hidden unnamed_addr constant [12 x i8], align 1
@.str.13 = external hidden unnamed_addr constant [39 x i8], align 1
@.str.14 = external hidden unnamed_addr constant [5 x i8], align 1
@.str.15 = external hidden unnamed_addr constant [4 x i8], align 1

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

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

declare i32 @__gxx_personality_v0(...)

; Function Attrs: mustprogress uwtable
declare dso_local void @_ZN9benchmark14MinimalLeastSqERKSt6vectorIlSaIlEERKS0_IdSaIdEEPFdlE(ptr dead_on_unwind noalias writable sret(%"struct.benchmark::LeastSq") align 8, ptr noundef nonnull align 8 dereferenceable(24), ptr noundef nonnull align 8 dereferenceable(24), ptr noundef) #1

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

; Function Attrs: mustprogress uwtable
declare dso_local void @_ZN9benchmark14MinimalLeastSqERKSt6vectorIlSaIlEERKS0_IdSaIdEENS_4BigOE(ptr dead_on_unwind noalias writable sret(%"struct.benchmark::LeastSq") align 8, ptr noundef nonnull align 8 dereferenceable(24), ptr noundef nonnull align 8 dereferenceable(24), i32 noundef) #1

; Function Attrs: inlinehint mustprogress uwtable
declare dso_local noundef nonnull align 8 dereferenceable(8) ptr @_ZN9benchmark8internal18GetNullLogInstanceEv() #3

; Function Attrs: mustprogress nounwind uwtable
declare dso_local void @_ZNSt17basic_string_viewIcSt11char_traitsIcEEC2EPKc(ptr noundef nonnull align 8 dereferenceable(16), ptr noundef nonnull) unnamed_addr #2 align 2

; Function Attrs: mustprogress uwtable
declare dso_local void @_ZN9benchmark8internal12CheckHandlerC2ESt17basic_string_viewIcSt11char_traitsIcEES5_S5_i(ptr noundef nonnull align 8 dereferenceable(8), i64, ptr, i64, ptr, ptr noundef byval(%"class.std::basic_string_view") align 8, i32 noundef) unnamed_addr #1 align 2

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

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

; Function Attrs: noinline noreturn nounwind uwtable
declare hidden void @__clang_call_terminate(ptr noundef) #5

; Function Attrs: nocallback nofree nounwind willreturn memory(argmem: readwrite)
declare void @llvm.memcpy.p0.p0.i64(ptr noalias nocapture writeonly, ptr noalias nocapture readonly, i64, i1 immarg) #6

; Function Attrs: mustprogress uwtable
define dso_local void @_ZN9benchmark11ComputeBigOERKSt6vectorINS_17BenchmarkReporter3RunESaIS2_EE(ptr dead_on_unwind noalias writable sret(%"class.std::vector.23") align 8 %0, ptr noundef nonnull align 8 dereferenceable(24) %1) #1 personality ptr @__gxx_personality_v0 {
  %3 = alloca ptr, align 8
  %4 = alloca ptr, align 8
  %5 = alloca i1, align 1
  %6 = alloca i32, align 4
  %7 = alloca %"class.std::vector", align 8
  %8 = alloca %"class.std::vector.13", align 8
  %9 = alloca %"class.std::vector.13", align 8
  %10 = alloca ptr, align 8
  %11 = alloca %"class.__gnu_cxx::__normal_iterator.28", align 8
  %12 = alloca %"class.__gnu_cxx::__normal_iterator.28", align 8
  %13 = alloca ptr, align 8
  %14 = alloca ptr, align 8
  %15 = alloca i32, align 4
  %16 = alloca %"class.benchmark::internal::CheckHandler", align 8
  %17 = alloca i1, align 1
  %18 = alloca %"class.std::basic_string_view", align 8
  %19 = alloca %"class.std::basic_string_view", align 8
  %20 = alloca %"class.std::basic_string_view", align 8
  %21 = alloca i1, align 1
  %22 = alloca double, align 8
  %23 = alloca double, align 8
  %24 = alloca %"struct.benchmark::LeastSq", align 8
  %25 = alloca %"struct.benchmark::LeastSq", align 8
  %26 = alloca %"struct.benchmark::LeastSq", align 8
  %27 = alloca %"struct.benchmark::LeastSq", align 8
  %28 = alloca ptr, align 8
  %29 = alloca i8, align 1
  %30 = alloca %"struct.benchmark::LeastSq", align 8
  %31 = alloca %"struct.benchmark::LeastSq", align 8
  %32 = alloca %"struct.benchmark::LeastSq", align 8
  %33 = alloca %"struct.benchmark::BenchmarkName", align 8
  %34 = alloca %"struct.benchmark::BenchmarkReporter::Run", align 8
  %35 = alloca double, align 8
  %36 = alloca %"struct.benchmark::BenchmarkReporter::Run", align 8
  store ptr %0, ptr %3, align 8
  store ptr %1, ptr %4, align 8, !tbaa !5
  store i1 false, ptr %5, align 1
  call void @_ZNSt6vectorIN9benchmark17BenchmarkReporter3RunESaIS2_EEC2Ev(ptr noundef nonnull align 8 dereferenceable(24) %0) #8
  %37 = load ptr, ptr %4, align 8, !tbaa !5
  %38 = call noundef i64 @_ZNKSt6vectorIN9benchmark17BenchmarkReporter3RunESaIS2_EE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24) %37) #8
  %39 = icmp ult i64 %38, 2
  br i1 %39, label %40, label %41

40:                                               ; preds = %2
  store i1 true, ptr %5, align 1
  store i32 1, ptr %6, align 4
  br label %362

41:                                               ; preds = %2
  call void @llvm.lifetime.start.p0(i64 24, ptr %7) #8
  call void @_ZNSt6vectorIlSaIlEEC2Ev(ptr noundef nonnull align 8 dereferenceable(24) %7) #8
  call void @llvm.lifetime.start.p0(i64 24, ptr %8) #8
  call void @_ZNSt6vectorIdSaIdEEC2Ev(ptr noundef nonnull align 8 dereferenceable(24) %8) #8
  call void @llvm.lifetime.start.p0(i64 24, ptr %9) #8
  call void @_ZNSt6vectorIdSaIdEEC2Ev(ptr noundef nonnull align 8 dereferenceable(24) %9) #8
  call void @llvm.lifetime.start.p0(i64 8, ptr %10) #8
  %42 = load ptr, ptr %4, align 8, !tbaa !5
  store ptr %42, ptr %10, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %11) #8
  %43 = load ptr, ptr %10, align 8, !tbaa !5
  %44 = call ptr @_ZNKSt6vectorIN9benchmark17BenchmarkReporter3RunESaIS2_EE5beginEv(ptr noundef nonnull align 8 dereferenceable(24) %43) #8
  %45 = getelementptr inbounds %"class.__gnu_cxx::__normal_iterator.28", ptr %11, i32 0, i32 0
  store ptr %44, ptr %45, align 8
  call void @llvm.lifetime.start.p0(i64 8, ptr %12) #8
  %46 = load ptr, ptr %10, align 8, !tbaa !5
  %47 = call ptr @_ZNKSt6vectorIN9benchmark17BenchmarkReporter3RunESaIS2_EE3endEv(ptr noundef nonnull align 8 dereferenceable(24) %46) #8
  %48 = getelementptr inbounds %"class.__gnu_cxx::__normal_iterator.28", ptr %12, i32 0, i32 0
  store ptr %47, ptr %48, align 8
  br label %49

49:                                               ; preds = %119, %41
  %50 = call noundef zeroext i1 @_ZN9__gnu_cxxneIPKN9benchmark17BenchmarkReporter3RunESt6vectorIS3_SaIS3_EEEEbRKNS_17__normal_iteratorIT_T0_EESE_(ptr noundef nonnull align 8 dereferenceable(8) %11, ptr noundef nonnull align 8 dereferenceable(8) %12) #8
  br i1 %50, label %52, label %51

51:                                               ; preds = %49
  store i32 2, ptr %6, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %12) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %11) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %10) #8
  br label %138

52:                                               ; preds = %49
  call void @llvm.lifetime.start.p0(i64 8, ptr %13) #8
  %53 = call noundef nonnull align 8 dereferenceable(592) ptr @_ZNK9__gnu_cxx17__normal_iteratorIPKN9benchmark17BenchmarkReporter3RunESt6vectorIS3_SaIS3_EEEdeEv(ptr noundef nonnull align 8 dereferenceable(8) %11) #8
  store ptr %53, ptr %13, align 8, !tbaa !5
  %54 = load ptr, ptr %13, align 8, !tbaa !5
  %55 = getelementptr inbounds %"struct.benchmark::BenchmarkReporter::Run", ptr %54, i32 0, i32 20
  %56 = load i64, ptr %55, align 8, !tbaa !9
  %57 = icmp sgt i64 %56, 0
  store i1 false, ptr %17, align 1
  store i1 false, ptr %21, align 1
  br i1 %57, label %58, label %61

58:                                               ; preds = %52
  %59 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZN9benchmark8internal18GetNullLogInstanceEv()
          to label %60 unwind label %80

60:                                               ; preds = %58
  br label %73

61:                                               ; preds = %52
  call void @llvm.lifetime.start.p0(i64 8, ptr %16) #8
  store i1 true, ptr %17, align 1
  call void @_ZNSt17basic_string_viewIcSt11char_traitsIcEEC2EPKc(ptr noundef nonnull align 8 dereferenceable(16) %18, ptr noundef @.str.12) #8
  call void @_ZNSt17basic_string_viewIcSt11char_traitsIcEEC2EPKc(ptr noundef nonnull align 8 dereferenceable(16) %19, ptr noundef @.str.9) #8
  call void @_ZNSt17basic_string_viewIcSt11char_traitsIcEEC2EPKc(ptr noundef nonnull align 8 dereferenceable(16) %20, ptr noundef @__func__._ZN9benchmark11ComputeBigOERKSt6vectorINS_17BenchmarkReporter3RunESaIS2_EE) #8
  %62 = getelementptr inbounds { i64, ptr }, ptr %18, i32 0, i32 0
  %63 = load i64, ptr %62, align 8
  %64 = getelementptr inbounds { i64, ptr }, ptr %18, i32 0, i32 1
  %65 = load ptr, ptr %64, align 8
  %66 = getelementptr inbounds { i64, ptr }, ptr %19, i32 0, i32 0
  %67 = load i64, ptr %66, align 8
  %68 = getelementptr inbounds { i64, ptr }, ptr %19, i32 0, i32 1
  %69 = load ptr, ptr %68, align 8
  invoke void @_ZN9benchmark8internal12CheckHandlerC2ESt17basic_string_viewIcSt11char_traitsIcEES5_S5_i(ptr noundef nonnull align 8 dereferenceable(8) %16, i64 %63, ptr %65, i64 %67, ptr %69, ptr noundef byval(%"class.std::basic_string_view") align 8 %20, i32 noundef 171)
          to label %70 unwind label %84

70:                                               ; preds = %61
  store i1 true, ptr %21, align 1
  %71 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZN9benchmark8internal12CheckHandler6GetLogEv(ptr noundef nonnull align 8 dereferenceable(8) %16)
          to label %72 unwind label %88

72:                                               ; preds = %70
  br label %73

73:                                               ; preds = %72, %60
  %74 = phi ptr [ %59, %60 ], [ %71, %72 ]
  %75 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZN9benchmark8internallsIA39_cEERNS0_7LogTypeES4_RKT_(ptr noundef nonnull align 8 dereferenceable(8) %74, ptr noundef nonnull align 1 dereferenceable(39) @.str.13)
          to label %76 unwind label %88

76:                                               ; preds = %73
  %77 = load i1, ptr %21, align 1
  br i1 %77, label %78, label %94

78:                                               ; preds = %76
  invoke void @_ZN9benchmark8internal12CheckHandlerD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %16) #9
          to label %79 unwind label %84

79:                                               ; preds = %78
  unreachable

80:                                               ; preds = %97, %58
  %81 = landingpad { ptr, i32 }
          cleanup
  %82 = extractvalue { ptr, i32 } %81, 0
  store ptr %82, ptr %14, align 8
  %83 = extractvalue { ptr, i32 } %81, 1
  store i32 %83, ptr %15, align 4
  br label %137

84:                                               ; preds = %78, %61
  %85 = landingpad { ptr, i32 }
          cleanup
  %86 = extractvalue { ptr, i32 } %85, 0
  store ptr %86, ptr %14, align 8
  %87 = extractvalue { ptr, i32 } %85, 1
  store i32 %87, ptr %15, align 4
  br label %125

88:                                               ; preds = %73, %70
  %89 = landingpad { ptr, i32 }
          cleanup
  %90 = extractvalue { ptr, i32 } %89, 0
  store ptr %90, ptr %14, align 8
  %91 = extractvalue { ptr, i32 } %89, 1
  store i32 %91, ptr %15, align 4
  %92 = load i1, ptr %21, align 1
  br i1 %92, label %121, label %124

93:                                               ; No predecessors!
  br label %94

94:                                               ; preds = %93, %76
  %95 = load i1, ptr %17, align 1
  br i1 %95, label %96, label %97

96:                                               ; preds = %94
  call void @llvm.lifetime.end.p0(i64 8, ptr %16) #8
  br label %97

97:                                               ; preds = %96, %94
  %98 = load ptr, ptr %13, align 8, !tbaa !5
  %99 = getelementptr inbounds %"struct.benchmark::BenchmarkReporter::Run", ptr %98, i32 0, i32 20
  invoke void @_ZNSt6vectorIlSaIlEE9push_backERKl(ptr noundef nonnull align 8 dereferenceable(24) %7, ptr noundef nonnull align 8 dereferenceable(8) %99)
          to label %100 unwind label %80

100:                                              ; preds = %97
  call void @llvm.lifetime.start.p0(i64 8, ptr %22) #8
  %101 = load ptr, ptr %13, align 8, !tbaa !5
  %102 = getelementptr inbounds %"struct.benchmark::BenchmarkReporter::Run", ptr %101, i32 0, i32 14
  %103 = load double, ptr %102, align 8, !tbaa !31
  %104 = load ptr, ptr %13, align 8, !tbaa !5
  %105 = getelementptr inbounds %"struct.benchmark::BenchmarkReporter::Run", ptr %104, i32 0, i32 9
  %106 = load i64, ptr %105, align 8, !tbaa !32
  %107 = sitofp i64 %106 to double
  %108 = fdiv double %103, %107
  store double %108, ptr %22, align 8, !tbaa !33
  invoke void @_ZNSt6vectorIdSaIdEE9push_backEOd(ptr noundef nonnull align 8 dereferenceable(24) %8, ptr noundef nonnull align 8 dereferenceable(8) %22)
          to label %109 unwind label %129

109:                                              ; preds = %100
  call void @llvm.lifetime.end.p0(i64 8, ptr %22) #8
  call void @llvm.lifetime.start.p0(i64 8, ptr %23) #8
  %110 = load ptr, ptr %13, align 8, !tbaa !5
  %111 = getelementptr inbounds %"struct.benchmark::BenchmarkReporter::Run", ptr %110, i32 0, i32 15
  %112 = load double, ptr %111, align 8, !tbaa !34
  %113 = load ptr, ptr %13, align 8, !tbaa !5
  %114 = getelementptr inbounds %"struct.benchmark::BenchmarkReporter::Run", ptr %113, i32 0, i32 9
  %115 = load i64, ptr %114, align 8, !tbaa !32
  %116 = sitofp i64 %115 to double
  %117 = fdiv double %112, %116
  store double %117, ptr %23, align 8, !tbaa !33
  invoke void @_ZNSt6vectorIdSaIdEE9push_backEOd(ptr noundef nonnull align 8 dereferenceable(24) %9, ptr noundef nonnull align 8 dereferenceable(8) %23)
          to label %118 unwind label %133

118:                                              ; preds = %109
  call void @llvm.lifetime.end.p0(i64 8, ptr %23) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %13) #8
  br label %119

119:                                              ; preds = %118
  %120 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZN9__gnu_cxx17__normal_iteratorIPKN9benchmark17BenchmarkReporter3RunESt6vectorIS3_SaIS3_EEEppEv(ptr noundef nonnull align 8 dereferenceable(8) %11) #8
  br label %49

121:                                              ; preds = %88
  invoke void @_ZN9benchmark8internal12CheckHandlerD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %16) #9
          to label %122 unwind label %371

122:                                              ; preds = %121
  unreachable

123:                                              ; No predecessors!
  br label %124

124:                                              ; preds = %123, %88
  br label %125

125:                                              ; preds = %124, %84
  %126 = load i1, ptr %17, align 1
  br i1 %126, label %127, label %128

127:                                              ; preds = %125
  call void @llvm.lifetime.end.p0(i64 8, ptr %16) #8
  br label %128

128:                                              ; preds = %127, %125
  br label %137

129:                                              ; preds = %100
  %130 = landingpad { ptr, i32 }
          cleanup
  %131 = extractvalue { ptr, i32 } %130, 0
  store ptr %131, ptr %14, align 8
  %132 = extractvalue { ptr, i32 } %130, 1
  store i32 %132, ptr %15, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %22) #8
  br label %137

133:                                              ; preds = %109
  %134 = landingpad { ptr, i32 }
          cleanup
  %135 = extractvalue { ptr, i32 } %134, 0
  store ptr %135, ptr %14, align 8
  %136 = extractvalue { ptr, i32 } %134, 1
  store i32 %136, ptr %15, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %23) #8
  br label %137

137:                                              ; preds = %133, %129, %128, %80
  call void @llvm.lifetime.end.p0(i64 8, ptr %13) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %12) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %11) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %10) #8
  br label %361

138:                                              ; preds = %51
  call void @llvm.lifetime.start.p0(i64 24, ptr %24) #8
  invoke void @_ZN9benchmark7LeastSqC2Ev(ptr noundef nonnull align 8 dereferenceable(20) %24)
          to label %139 unwind label %157

139:                                              ; preds = %138
  call void @llvm.lifetime.start.p0(i64 24, ptr %25) #8
  invoke void @_ZN9benchmark7LeastSqC2Ev(ptr noundef nonnull align 8 dereferenceable(20) %25)
          to label %140 unwind label %161

140:                                              ; preds = %139
  %141 = load ptr, ptr %4, align 8, !tbaa !5
  %142 = call noundef nonnull align 8 dereferenceable(592) ptr @_ZNKSt6vectorIN9benchmark17BenchmarkReporter3RunESaIS2_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %141, i64 noundef 0) #8
  %143 = getelementptr inbounds %"struct.benchmark::BenchmarkReporter::Run", ptr %142, i32 0, i32 18
  %144 = load i32, ptr %143, align 4, !tbaa !35
  %145 = icmp eq i32 %144, 8
  br i1 %145, label %146, label %173

146:                                              ; preds = %140
  call void @llvm.lifetime.start.p0(i64 24, ptr %26) #8
  %147 = load ptr, ptr %4, align 8, !tbaa !5
  %148 = call noundef nonnull align 8 dereferenceable(592) ptr @_ZNKSt6vectorIN9benchmark17BenchmarkReporter3RunESaIS2_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %147, i64 noundef 0) #8
  %149 = getelementptr inbounds %"struct.benchmark::BenchmarkReporter::Run", ptr %148, i32 0, i32 19
  %150 = load ptr, ptr %149, align 8, !tbaa !36
  invoke void @_ZN9benchmark14MinimalLeastSqERKSt6vectorIlSaIlEERKS0_IdSaIdEEPFdlE(ptr dead_on_unwind writable sret(%"struct.benchmark::LeastSq") align 8 %26, ptr noundef nonnull align 8 dereferenceable(24) %7, ptr noundef nonnull align 8 dereferenceable(24) %9, ptr noundef %150)
          to label %151 unwind label %165

151:                                              ; preds = %146
  call void @llvm.memcpy.p0.p0.i64(ptr align 8 %24, ptr align 8 %26, i64 20, i1 false), !tbaa.struct !37
  call void @llvm.lifetime.end.p0(i64 24, ptr %26) #8
  call void @llvm.lifetime.start.p0(i64 24, ptr %27) #8
  %152 = load ptr, ptr %4, align 8, !tbaa !5
  %153 = call noundef nonnull align 8 dereferenceable(592) ptr @_ZNKSt6vectorIN9benchmark17BenchmarkReporter3RunESaIS2_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %152, i64 noundef 0) #8
  %154 = getelementptr inbounds %"struct.benchmark::BenchmarkReporter::Run", ptr %153, i32 0, i32 19
  %155 = load ptr, ptr %154, align 8, !tbaa !36
  invoke void @_ZN9benchmark14MinimalLeastSqERKSt6vectorIlSaIlEERKS0_IdSaIdEEPFdlE(ptr dead_on_unwind writable sret(%"struct.benchmark::LeastSq") align 8 %27, ptr noundef nonnull align 8 dereferenceable(24) %7, ptr noundef nonnull align 8 dereferenceable(24) %8, ptr noundef %155)
          to label %156 unwind label %169

156:                                              ; preds = %151
  call void @llvm.memcpy.p0.p0.i64(ptr align 8 %25, ptr align 8 %27, i64 20, i1 false), !tbaa.struct !37
  call void @llvm.lifetime.end.p0(i64 24, ptr %27) #8
  br label %215

157:                                              ; preds = %138
  %158 = landingpad { ptr, i32 }
          cleanup
  %159 = extractvalue { ptr, i32 } %158, 0
  store ptr %159, ptr %14, align 8
  %160 = extractvalue { ptr, i32 } %158, 1
  store i32 %160, ptr %15, align 4
  br label %360

161:                                              ; preds = %139
  %162 = landingpad { ptr, i32 }
          cleanup
  %163 = extractvalue { ptr, i32 } %162, 0
  store ptr %163, ptr %14, align 8
  %164 = extractvalue { ptr, i32 } %162, 1
  store i32 %164, ptr %15, align 4
  br label %359

165:                                              ; preds = %146
  %166 = landingpad { ptr, i32 }
          cleanup
  %167 = extractvalue { ptr, i32 } %166, 0
  store ptr %167, ptr %14, align 8
  %168 = extractvalue { ptr, i32 } %166, 1
  store i32 %168, ptr %15, align 4
  call void @llvm.lifetime.end.p0(i64 24, ptr %26) #8
  br label %359

169:                                              ; preds = %151
  %170 = landingpad { ptr, i32 }
          cleanup
  %171 = extractvalue { ptr, i32 } %170, 0
  store ptr %171, ptr %14, align 8
  %172 = extractvalue { ptr, i32 } %170, 1
  store i32 %172, ptr %15, align 4
  call void @llvm.lifetime.end.p0(i64 24, ptr %27) #8
  br label %359

173:                                              ; preds = %140
  call void @llvm.lifetime.start.p0(i64 8, ptr %28) #8
  %174 = load ptr, ptr %4, align 8, !tbaa !5
  %175 = call noundef nonnull align 8 dereferenceable(592) ptr @_ZNKSt6vectorIN9benchmark17BenchmarkReporter3RunESaIS2_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %174, i64 noundef 0) #8
  %176 = getelementptr inbounds %"struct.benchmark::BenchmarkReporter::Run", ptr %175, i32 0, i32 18
  store ptr %176, ptr %28, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 1, ptr %29) #8
  %177 = load ptr, ptr %4, align 8, !tbaa !5
  %178 = call noundef nonnull align 8 dereferenceable(592) ptr @_ZNKSt6vectorIN9benchmark17BenchmarkReporter3RunESaIS2_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %177, i64 noundef 0) #8
  %179 = getelementptr inbounds %"struct.benchmark::BenchmarkReporter::Run", ptr %178, i32 0, i32 17
  %180 = load i8, ptr %179, align 8, !tbaa !39, !range !40, !noundef !41
  %181 = trunc i8 %180 to i1
  %182 = zext i1 %181 to i8
  store i8 %182, ptr %29, align 1, !tbaa !42
  %183 = load i8, ptr %29, align 1, !tbaa !42, !range !40, !noundef !41
  %184 = trunc i8 %183 to i1
  br i1 %184, label %185, label %194

185:                                              ; preds = %173
  call void @llvm.lifetime.start.p0(i64 24, ptr %30) #8
  %186 = load ptr, ptr %28, align 8, !tbaa !5
  %187 = load i32, ptr %186, align 4, !tbaa !38
  invoke void @_ZN9benchmark14MinimalLeastSqERKSt6vectorIlSaIlEERKS0_IdSaIdEENS_4BigOE(ptr dead_on_unwind writable sret(%"struct.benchmark::LeastSq") align 8 %30, ptr noundef nonnull align 8 dereferenceable(24) %7, ptr noundef nonnull align 8 dereferenceable(24) %8, i32 noundef %187)
          to label %188 unwind label %190

188:                                              ; preds = %185
  call void @llvm.memcpy.p0.p0.i64(ptr align 8 %25, ptr align 8 %30, i64 20, i1 false), !tbaa.struct !37
  call void @llvm.lifetime.end.p0(i64 24, ptr %30) #8
  %189 = getelementptr inbounds %"struct.benchmark::LeastSq", ptr %25, i32 0, i32 2
  store ptr %189, ptr %28, align 8, !tbaa !5
  br label %194

190:                                              ; preds = %185
  %191 = landingpad { ptr, i32 }
          cleanup
  %192 = extractvalue { ptr, i32 } %191, 0
  store ptr %192, ptr %14, align 8
  %193 = extractvalue { ptr, i32 } %191, 1
  store i32 %193, ptr %15, align 4
  call void @llvm.lifetime.end.p0(i64 24, ptr %30) #8
  br label %214

194:                                              ; preds = %188, %173
  call void @llvm.lifetime.start.p0(i64 24, ptr %31) #8
  %195 = load ptr, ptr %28, align 8, !tbaa !5
  %196 = load i32, ptr %195, align 4, !tbaa !38
  invoke void @_ZN9benchmark14MinimalLeastSqERKSt6vectorIlSaIlEERKS0_IdSaIdEENS_4BigOE(ptr dead_on_unwind writable sret(%"struct.benchmark::LeastSq") align 8 %31, ptr noundef nonnull align 8 dereferenceable(24) %7, ptr noundef nonnull align 8 dereferenceable(24) %9, i32 noundef %196)
          to label %197 unwind label %205

197:                                              ; preds = %194
  call void @llvm.memcpy.p0.p0.i64(ptr align 8 %24, ptr align 8 %31, i64 20, i1 false), !tbaa.struct !37
  call void @llvm.lifetime.end.p0(i64 24, ptr %31) #8
  %198 = getelementptr inbounds %"struct.benchmark::LeastSq", ptr %24, i32 0, i32 2
  store ptr %198, ptr %28, align 8, !tbaa !5
  %199 = load i8, ptr %29, align 1, !tbaa !42, !range !40, !noundef !41
  %200 = trunc i8 %199 to i1
  br i1 %200, label %213, label %201

201:                                              ; preds = %197
  call void @llvm.lifetime.start.p0(i64 24, ptr %32) #8
  %202 = load ptr, ptr %28, align 8, !tbaa !5
  %203 = load i32, ptr %202, align 4, !tbaa !38
  invoke void @_ZN9benchmark14MinimalLeastSqERKSt6vectorIlSaIlEERKS0_IdSaIdEENS_4BigOE(ptr dead_on_unwind writable sret(%"struct.benchmark::LeastSq") align 8 %32, ptr noundef nonnull align 8 dereferenceable(24) %7, ptr noundef nonnull align 8 dereferenceable(24) %8, i32 noundef %203)
          to label %204 unwind label %209

204:                                              ; preds = %201
  call void @llvm.memcpy.p0.p0.i64(ptr align 8 %25, ptr align 8 %32, i64 20, i1 false), !tbaa.struct !37
  call void @llvm.lifetime.end.p0(i64 24, ptr %32) #8
  br label %213

205:                                              ; preds = %194
  %206 = landingpad { ptr, i32 }
          cleanup
  %207 = extractvalue { ptr, i32 } %206, 0
  store ptr %207, ptr %14, align 8
  %208 = extractvalue { ptr, i32 } %206, 1
  store i32 %208, ptr %15, align 4
  call void @llvm.lifetime.end.p0(i64 24, ptr %31) #8
  br label %214

209:                                              ; preds = %201
  %210 = landingpad { ptr, i32 }
          cleanup
  %211 = extractvalue { ptr, i32 } %210, 0
  store ptr %211, ptr %14, align 8
  %212 = extractvalue { ptr, i32 } %210, 1
  store i32 %212, ptr %15, align 4
  call void @llvm.lifetime.end.p0(i64 24, ptr %32) #8
  br label %214

213:                                              ; preds = %204, %197
  call void @llvm.lifetime.end.p0(i64 1, ptr %29) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %28) #8
  br label %215

214:                                              ; preds = %209, %205, %190
  call void @llvm.lifetime.end.p0(i64 1, ptr %29) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %28) #8
  br label %359

215:                                              ; preds = %213, %156
  call void @llvm.lifetime.start.p0(i64 256, ptr %33) #8
  %216 = load ptr, ptr %4, align 8, !tbaa !5
  %217 = call noundef nonnull align 8 dereferenceable(592) ptr @_ZNKSt6vectorIN9benchmark17BenchmarkReporter3RunESaIS2_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %216, i64 noundef 0) #8
  %218 = getelementptr inbounds %"struct.benchmark::BenchmarkReporter::Run", ptr %217, i32 0, i32 0
  invoke void @_ZN9benchmark13BenchmarkNameC2ERKS0_(ptr noundef nonnull align 8 dereferenceable(256) %33, ptr noundef nonnull align 8 dereferenceable(256) %218)
          to label %219 unwind label %330

219:                                              ; preds = %215
  %220 = getelementptr inbounds %"struct.benchmark::BenchmarkName", ptr %33, i32 0, i32 1
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE5clearEv(ptr noundef nonnull align 8 dereferenceable(32) %220) #8
  call void @llvm.lifetime.start.p0(i64 592, ptr %34) #8
  invoke void @_ZN9benchmark17BenchmarkReporter3RunC2Ev(ptr noundef nonnull align 8 dereferenceable(592) %34)
          to label %221 unwind label %334

221:                                              ; preds = %219
  %222 = getelementptr inbounds %"struct.benchmark::BenchmarkReporter::Run", ptr %34, i32 0, i32 0
  %223 = invoke noundef nonnull align 8 dereferenceable(256) ptr @_ZN9benchmark13BenchmarkNameaSERKS0_(ptr noundef nonnull align 8 dereferenceable(256) %222, ptr noundef nonnull align 8 dereferenceable(256) %33)
          to label %224 unwind label %338

224:                                              ; preds = %221
  %225 = load ptr, ptr %4, align 8, !tbaa !5
  %226 = call noundef nonnull align 8 dereferenceable(592) ptr @_ZNKSt6vectorIN9benchmark17BenchmarkReporter3RunESaIS2_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %225, i64 noundef 0) #8
  %227 = getelementptr inbounds %"struct.benchmark::BenchmarkReporter::Run", ptr %226, i32 0, i32 1
  %228 = load i64, ptr %227, align 8, !tbaa !43
  %229 = getelementptr inbounds %"struct.benchmark::BenchmarkReporter::Run", ptr %34, i32 0, i32 1
  store i64 %228, ptr %229, align 8, !tbaa !43
  %230 = load ptr, ptr %4, align 8, !tbaa !5
  %231 = call noundef nonnull align 8 dereferenceable(592) ptr @_ZNKSt6vectorIN9benchmark17BenchmarkReporter3RunESaIS2_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %230, i64 noundef 0) #8
  %232 = getelementptr inbounds %"struct.benchmark::BenchmarkReporter::Run", ptr %231, i32 0, i32 2
  %233 = load i64, ptr %232, align 8, !tbaa !44
  %234 = getelementptr inbounds %"struct.benchmark::BenchmarkReporter::Run", ptr %34, i32 0, i32 2
  store i64 %233, ptr %234, align 8, !tbaa !44
  %235 = getelementptr inbounds %"struct.benchmark::BenchmarkReporter::Run", ptr %34, i32 0, i32 3
  store i32 1, ptr %235, align 8, !tbaa !45
  %236 = load ptr, ptr %4, align 8, !tbaa !5
  %237 = call noundef nonnull align 8 dereferenceable(592) ptr @_ZNKSt6vectorIN9benchmark17BenchmarkReporter3RunESaIS2_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %236, i64 noundef 0) #8
  %238 = getelementptr inbounds %"struct.benchmark::BenchmarkReporter::Run", ptr %237, i32 0, i32 12
  %239 = load i64, ptr %238, align 8, !tbaa !46
  %240 = getelementptr inbounds %"struct.benchmark::BenchmarkReporter::Run", ptr %34, i32 0, i32 12
  store i64 %239, ptr %240, align 8, !tbaa !46
  %241 = getelementptr inbounds %"struct.benchmark::BenchmarkReporter::Run", ptr %34, i32 0, i32 11
  store i64 -1, ptr %241, align 8, !tbaa !47
  %242 = load ptr, ptr %4, align 8, !tbaa !5
  %243 = call noundef nonnull align 8 dereferenceable(592) ptr @_ZNKSt6vectorIN9benchmark17BenchmarkReporter3RunESaIS2_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %242, i64 noundef 0) #8
  %244 = getelementptr inbounds %"struct.benchmark::BenchmarkReporter::Run", ptr %243, i32 0, i32 10
  %245 = load i64, ptr %244, align 8, !tbaa !48
  %246 = getelementptr inbounds %"struct.benchmark::BenchmarkReporter::Run", ptr %34, i32 0, i32 10
  store i64 %245, ptr %246, align 8, !tbaa !48
  %247 = getelementptr inbounds %"struct.benchmark::BenchmarkReporter::Run", ptr %34, i32 0, i32 4
  %248 = invoke noundef nonnull align 8 dereferenceable(32) ptr @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEaSEPKc(ptr noundef nonnull align 8 dereferenceable(32) %247, ptr noundef @.str.14)
          to label %249 unwind label %338

249:                                              ; preds = %224
  %250 = getelementptr inbounds %"struct.benchmark::BenchmarkReporter::Run", ptr %34, i32 0, i32 5
  store i32 0, ptr %250, align 8, !tbaa !49
  %251 = load ptr, ptr %4, align 8, !tbaa !5
  %252 = call noundef nonnull align 8 dereferenceable(592) ptr @_ZNKSt6vectorIN9benchmark17BenchmarkReporter3RunESaIS2_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %251, i64 noundef 0) #8
  %253 = getelementptr inbounds %"struct.benchmark::BenchmarkReporter::Run", ptr %252, i32 0, i32 6
  %254 = getelementptr inbounds %"struct.benchmark::BenchmarkReporter::Run", ptr %34, i32 0, i32 6
  %255 = invoke noundef nonnull align 8 dereferenceable(32) ptr @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEaSERKS4_(ptr noundef nonnull align 8 dereferenceable(32) %254, ptr noundef nonnull align 8 dereferenceable(32) %253)
          to label %256 unwind label %338

256:                                              ; preds = %249
  %257 = getelementptr inbounds %"struct.benchmark::BenchmarkReporter::Run", ptr %34, i32 0, i32 9
  store i64 0, ptr %257, align 8, !tbaa !32
  %258 = getelementptr inbounds %"struct.benchmark::LeastSq", ptr %25, i32 0, i32 0
  %259 = load double, ptr %258, align 8, !tbaa !50
  %260 = getelementptr inbounds %"struct.benchmark::BenchmarkReporter::Run", ptr %34, i32 0, i32 14
  store double %259, ptr %260, align 8, !tbaa !31
  %261 = getelementptr inbounds %"struct.benchmark::LeastSq", ptr %24, i32 0, i32 0
  %262 = load double, ptr %261, align 8, !tbaa !50
  %263 = getelementptr inbounds %"struct.benchmark::BenchmarkReporter::Run", ptr %34, i32 0, i32 15
  store double %262, ptr %263, align 8, !tbaa !34
  %264 = getelementptr inbounds %"struct.benchmark::BenchmarkReporter::Run", ptr %34, i32 0, i32 22
  store i8 1, ptr %264, align 8, !tbaa !52
  %265 = getelementptr inbounds %"struct.benchmark::LeastSq", ptr %24, i32 0, i32 2
  %266 = load i32, ptr %265, align 8, !tbaa !53
  %267 = getelementptr inbounds %"struct.benchmark::BenchmarkReporter::Run", ptr %34, i32 0, i32 18
  store i32 %266, ptr %267, align 4, !tbaa !35
  call void @llvm.lifetime.start.p0(i64 8, ptr %35) #8
  %268 = load ptr, ptr %4, align 8, !tbaa !5
  %269 = call noundef nonnull align 8 dereferenceable(592) ptr @_ZNKSt6vectorIN9benchmark17BenchmarkReporter3RunESaIS2_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %268, i64 noundef 0) #8
  %270 = getelementptr inbounds %"struct.benchmark::BenchmarkReporter::Run", ptr %269, i32 0, i32 13
  %271 = load i32, ptr %270, align 8, !tbaa !54
  %272 = invoke noundef double @_ZN9benchmark21GetTimeUnitMultiplierENS_8TimeUnitE(i32 noundef %271)
          to label %273 unwind label %342

273:                                              ; preds = %256
  store double %272, ptr %35, align 8, !tbaa !33
  call void @llvm.lifetime.start.p0(i64 592, ptr %36) #8
  invoke void @_ZN9benchmark17BenchmarkReporter3RunC2Ev(ptr noundef nonnull align 8 dereferenceable(592) %36)
          to label %274 unwind label %346

274:                                              ; preds = %273
  %275 = getelementptr inbounds %"struct.benchmark::BenchmarkReporter::Run", ptr %36, i32 0, i32 0
  %276 = invoke noundef nonnull align 8 dereferenceable(256) ptr @_ZN9benchmark13BenchmarkNameaSERKS0_(ptr noundef nonnull align 8 dereferenceable(256) %275, ptr noundef nonnull align 8 dereferenceable(256) %33)
          to label %277 unwind label %350

277:                                              ; preds = %274
  %278 = load ptr, ptr %4, align 8, !tbaa !5
  %279 = call noundef nonnull align 8 dereferenceable(592) ptr @_ZNKSt6vectorIN9benchmark17BenchmarkReporter3RunESaIS2_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %278, i64 noundef 0) #8
  %280 = getelementptr inbounds %"struct.benchmark::BenchmarkReporter::Run", ptr %279, i32 0, i32 1
  %281 = load i64, ptr %280, align 8, !tbaa !43
  %282 = getelementptr inbounds %"struct.benchmark::BenchmarkReporter::Run", ptr %36, i32 0, i32 1
  store i64 %281, ptr %282, align 8, !tbaa !43
  %283 = load ptr, ptr %4, align 8, !tbaa !5
  %284 = call noundef nonnull align 8 dereferenceable(592) ptr @_ZNKSt6vectorIN9benchmark17BenchmarkReporter3RunESaIS2_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %283, i64 noundef 0) #8
  %285 = getelementptr inbounds %"struct.benchmark::BenchmarkReporter::Run", ptr %284, i32 0, i32 2
  %286 = load i64, ptr %285, align 8, !tbaa !44
  %287 = getelementptr inbounds %"struct.benchmark::BenchmarkReporter::Run", ptr %36, i32 0, i32 2
  store i64 %286, ptr %287, align 8, !tbaa !44
  %288 = getelementptr inbounds %"struct.benchmark::BenchmarkReporter::Run", ptr %36, i32 0, i32 3
  store i32 1, ptr %288, align 8, !tbaa !45
  %289 = getelementptr inbounds %"struct.benchmark::BenchmarkReporter::Run", ptr %36, i32 0, i32 4
  %290 = invoke noundef nonnull align 8 dereferenceable(32) ptr @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEaSEPKc(ptr noundef nonnull align 8 dereferenceable(32) %289, ptr noundef @.str.15)
          to label %291 unwind label %350

291:                                              ; preds = %277
  %292 = getelementptr inbounds %"struct.benchmark::BenchmarkReporter::Run", ptr %36, i32 0, i32 5
  store i32 1, ptr %292, align 8, !tbaa !49
  %293 = getelementptr inbounds %"struct.benchmark::BenchmarkReporter::Run", ptr %34, i32 0, i32 6
  %294 = getelementptr inbounds %"struct.benchmark::BenchmarkReporter::Run", ptr %36, i32 0, i32 6
  %295 = invoke noundef nonnull align 8 dereferenceable(32) ptr @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEaSERKS4_(ptr noundef nonnull align 8 dereferenceable(32) %294, ptr noundef nonnull align 8 dereferenceable(32) %293)
          to label %296 unwind label %350

296:                                              ; preds = %291
  %297 = getelementptr inbounds %"struct.benchmark::BenchmarkReporter::Run", ptr %36, i32 0, i32 9
  store i64 0, ptr %297, align 8, !tbaa !32
  %298 = getelementptr inbounds %"struct.benchmark::BenchmarkReporter::Run", ptr %36, i32 0, i32 11
  store i64 -1, ptr %298, align 8, !tbaa !47
  %299 = load ptr, ptr %4, align 8, !tbaa !5
  %300 = call noundef nonnull align 8 dereferenceable(592) ptr @_ZNKSt6vectorIN9benchmark17BenchmarkReporter3RunESaIS2_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %299, i64 noundef 0) #8
  %301 = getelementptr inbounds %"struct.benchmark::BenchmarkReporter::Run", ptr %300, i32 0, i32 12
  %302 = load i64, ptr %301, align 8, !tbaa !46
  %303 = getelementptr inbounds %"struct.benchmark::BenchmarkReporter::Run", ptr %36, i32 0, i32 12
  store i64 %302, ptr %303, align 8, !tbaa !46
  %304 = load ptr, ptr %4, align 8, !tbaa !5
  %305 = call noundef nonnull align 8 dereferenceable(592) ptr @_ZNKSt6vectorIN9benchmark17BenchmarkReporter3RunESaIS2_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %304, i64 noundef 0) #8
  %306 = getelementptr inbounds %"struct.benchmark::BenchmarkReporter::Run", ptr %305, i32 0, i32 10
  %307 = load i64, ptr %306, align 8, !tbaa !48
  %308 = getelementptr inbounds %"struct.benchmark::BenchmarkReporter::Run", ptr %36, i32 0, i32 10
  store i64 %307, ptr %308, align 8, !tbaa !48
  %309 = getelementptr inbounds %"struct.benchmark::LeastSq", ptr %25, i32 0, i32 1
  %310 = load double, ptr %309, align 8, !tbaa !55
  %311 = load double, ptr %35, align 8, !tbaa !33
  %312 = fdiv double %310, %311
  %313 = getelementptr inbounds %"struct.benchmark::BenchmarkReporter::Run", ptr %36, i32 0, i32 14
  store double %312, ptr %313, align 8, !tbaa !31
  %314 = getelementptr inbounds %"struct.benchmark::LeastSq", ptr %24, i32 0, i32 1
  %315 = load double, ptr %314, align 8, !tbaa !55
  %316 = load double, ptr %35, align 8, !tbaa !33
  %317 = fdiv double %315, %316
  %318 = getelementptr inbounds %"struct.benchmark::BenchmarkReporter::Run", ptr %36, i32 0, i32 15
  store double %317, ptr %318, align 8, !tbaa !34
  %319 = getelementptr inbounds %"struct.benchmark::BenchmarkReporter::Run", ptr %36, i32 0, i32 23
  store i8 1, ptr %319, align 1, !tbaa !56
  %320 = getelementptr inbounds %"struct.benchmark::LeastSq", ptr %24, i32 0, i32 2
  %321 = load i32, ptr %320, align 8, !tbaa !53
  %322 = getelementptr inbounds %"struct.benchmark::BenchmarkReporter::Run", ptr %36, i32 0, i32 18
  store i32 %321, ptr %322, align 4, !tbaa !35
  %323 = load ptr, ptr %4, align 8, !tbaa !5
  %324 = call noundef nonnull align 8 dereferenceable(592) ptr @_ZNKSt6vectorIN9benchmark17BenchmarkReporter3RunESaIS2_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %323, i64 noundef 0) #8
  %325 = getelementptr inbounds %"struct.benchmark::BenchmarkReporter::Run", ptr %324, i32 0, i32 13
  %326 = load i32, ptr %325, align 8, !tbaa !54
  %327 = getelementptr inbounds %"struct.benchmark::BenchmarkReporter::Run", ptr %36, i32 0, i32 13
  store i32 %326, ptr %327, align 8, !tbaa !54
  invoke void @_ZNSt6vectorIN9benchmark17BenchmarkReporter3RunESaIS2_EE9push_backERKS2_(ptr noundef nonnull align 8 dereferenceable(24) %0, ptr noundef nonnull align 8 dereferenceable(592) %34)
          to label %328 unwind label %350

328:                                              ; preds = %296
  invoke void @_ZNSt6vectorIN9benchmark17BenchmarkReporter3RunESaIS2_EE9push_backERKS2_(ptr noundef nonnull align 8 dereferenceable(24) %0, ptr noundef nonnull align 8 dereferenceable(592) %36)
          to label %329 unwind label %350

329:                                              ; preds = %328
  store i1 true, ptr %5, align 1
  store i32 1, ptr %6, align 4
  call void @_ZN9benchmark17BenchmarkReporter3RunD2Ev(ptr noundef nonnull align 8 dereferenceable(592) %36) #8
  call void @llvm.lifetime.end.p0(i64 592, ptr %36) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %35) #8
  call void @_ZN9benchmark17BenchmarkReporter3RunD2Ev(ptr noundef nonnull align 8 dereferenceable(592) %34) #8
  call void @llvm.lifetime.end.p0(i64 592, ptr %34) #8
  call void @_ZN9benchmark13BenchmarkNameD2Ev(ptr noundef nonnull align 8 dereferenceable(256) %33) #8
  call void @llvm.lifetime.end.p0(i64 256, ptr %33) #8
  call void @llvm.lifetime.end.p0(i64 24, ptr %25) #8
  call void @llvm.lifetime.end.p0(i64 24, ptr %24) #8
  call void @_ZNSt6vectorIdSaIdEED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %9) #8
  call void @llvm.lifetime.end.p0(i64 24, ptr %9) #8
  call void @_ZNSt6vectorIdSaIdEED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %8) #8
  call void @llvm.lifetime.end.p0(i64 24, ptr %8) #8
  call void @_ZNSt6vectorIlSaIlEED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %7) #8
  call void @llvm.lifetime.end.p0(i64 24, ptr %7) #8
  br label %362

330:                                              ; preds = %215
  %331 = landingpad { ptr, i32 }
          cleanup
  %332 = extractvalue { ptr, i32 } %331, 0
  store ptr %332, ptr %14, align 8
  %333 = extractvalue { ptr, i32 } %331, 1
  store i32 %333, ptr %15, align 4
  br label %358

334:                                              ; preds = %219
  %335 = landingpad { ptr, i32 }
          cleanup
  %336 = extractvalue { ptr, i32 } %335, 0
  store ptr %336, ptr %14, align 8
  %337 = extractvalue { ptr, i32 } %335, 1
  store i32 %337, ptr %15, align 4
  br label %357

338:                                              ; preds = %249, %224, %221
  %339 = landingpad { ptr, i32 }
          cleanup
  %340 = extractvalue { ptr, i32 } %339, 0
  store ptr %340, ptr %14, align 8
  %341 = extractvalue { ptr, i32 } %339, 1
  store i32 %341, ptr %15, align 4
  br label %356

342:                                              ; preds = %256
  %343 = landingpad { ptr, i32 }
          cleanup
  %344 = extractvalue { ptr, i32 } %343, 0
  store ptr %344, ptr %14, align 8
  %345 = extractvalue { ptr, i32 } %343, 1
  store i32 %345, ptr %15, align 4
  br label %355

346:                                              ; preds = %273
  %347 = landingpad { ptr, i32 }
          cleanup
  %348 = extractvalue { ptr, i32 } %347, 0
  store ptr %348, ptr %14, align 8
  %349 = extractvalue { ptr, i32 } %347, 1
  store i32 %349, ptr %15, align 4
  br label %354

350:                                              ; preds = %328, %296, %291, %277, %274
  %351 = landingpad { ptr, i32 }
          cleanup
  %352 = extractvalue { ptr, i32 } %351, 0
  store ptr %352, ptr %14, align 8
  %353 = extractvalue { ptr, i32 } %351, 1
  store i32 %353, ptr %15, align 4
  call void @_ZN9benchmark17BenchmarkReporter3RunD2Ev(ptr noundef nonnull align 8 dereferenceable(592) %36) #8
  br label %354

354:                                              ; preds = %350, %346
  call void @llvm.lifetime.end.p0(i64 592, ptr %36) #8
  br label %355

355:                                              ; preds = %354, %342
  call void @llvm.lifetime.end.p0(i64 8, ptr %35) #8
  br label %356

356:                                              ; preds = %355, %338
  call void @_ZN9benchmark17BenchmarkReporter3RunD2Ev(ptr noundef nonnull align 8 dereferenceable(592) %34) #8
  br label %357

357:                                              ; preds = %356, %334
  call void @llvm.lifetime.end.p0(i64 592, ptr %34) #8
  call void @_ZN9benchmark13BenchmarkNameD2Ev(ptr noundef nonnull align 8 dereferenceable(256) %33) #8
  br label %358

358:                                              ; preds = %357, %330
  call void @llvm.lifetime.end.p0(i64 256, ptr %33) #8
  br label %359

359:                                              ; preds = %358, %214, %169, %165, %161
  call void @llvm.lifetime.end.p0(i64 24, ptr %25) #8
  br label %360

360:                                              ; preds = %359, %157
  call void @llvm.lifetime.end.p0(i64 24, ptr %24) #8
  br label %361

361:                                              ; preds = %360, %137
  call void @_ZNSt6vectorIdSaIdEED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %9) #8
  call void @llvm.lifetime.end.p0(i64 24, ptr %9) #8
  call void @_ZNSt6vectorIdSaIdEED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %8) #8
  call void @llvm.lifetime.end.p0(i64 24, ptr %8) #8
  call void @_ZNSt6vectorIlSaIlEED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %7) #8
  call void @llvm.lifetime.end.p0(i64 24, ptr %7) #8
  call void @_ZNSt6vectorIN9benchmark17BenchmarkReporter3RunESaIS2_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %0) #8
  br label %366

362:                                              ; preds = %329, %40
  %363 = load i1, ptr %5, align 1
  br i1 %363, label %365, label %364

364:                                              ; preds = %362
  call void @_ZNSt6vectorIN9benchmark17BenchmarkReporter3RunESaIS2_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %0) #8
  br label %365

365:                                              ; preds = %364, %362
  ret void

366:                                              ; preds = %361
  %367 = load ptr, ptr %14, align 8
  %368 = load i32, ptr %15, align 4
  %369 = insertvalue { ptr, i32 } poison, ptr %367, 0
  %370 = insertvalue { ptr, i32 } %369, i32 %368, 1
  resume { ptr, i32 } %370

371:                                              ; preds = %121
  %372 = landingpad { ptr, i32 }
          catch ptr null
  %373 = extractvalue { ptr, i32 } %372, 0
  call void @__clang_call_terminate(ptr %373) #10
  unreachable
}

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

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

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

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

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

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

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

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

; Function Attrs: mustprogress uwtable
declare dso_local noundef nonnull align 8 dereferenceable(8) ptr @_ZN9benchmark8internallsIA39_cEERNS0_7LogTypeES4_RKT_(ptr noundef nonnull align 8 dereferenceable(8), ptr noundef nonnull align 1 dereferenceable(39)) #1

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

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

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

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

; Function Attrs: inlinehint mustprogress uwtable
declare dso_local void @_ZN9benchmark13BenchmarkNameC2ERKS0_(ptr noundef nonnull align 8 dereferenceable(256), ptr noundef nonnull align 8 dereferenceable(256)) unnamed_addr #3 align 2

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

; Function Attrs: mustprogress uwtable
declare dso_local void @_ZN9benchmark17BenchmarkReporter3RunC2Ev(ptr noundef nonnull align 8 dereferenceable(592)) unnamed_addr #1 align 2

; Function Attrs: inlinehint mustprogress uwtable
declare dso_local noundef nonnull align 8 dereferenceable(256) ptr @_ZN9benchmark13BenchmarkNameaSERKS0_(ptr noundef nonnull align 8 dereferenceable(256), ptr noundef nonnull align 8 dereferenceable(256)) #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) #1 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)) #1 align 2

; Function Attrs: inlinehint mustprogress nounwind uwtable
declare dso_local noundef double @_ZN9benchmark21GetTimeUnitMultiplierENS_8TimeUnitE(i32 noundef) #7

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

; Function Attrs: inlinehint mustprogress nounwind uwtable
declare dso_local void @_ZN9benchmark17BenchmarkReporter3RunD2Ev(ptr noundef nonnull align 8 dereferenceable(592)) unnamed_addr #7 align 2

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

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

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

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

attributes #0 = { nocallback nofree nosync nounwind willreturn memory(argmem: readwrite) }
attributes #1 = { mustprogress uwtable "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }
attributes #2 = { mustprogress 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 #3 = { inlinehint mustprogress uwtable "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }
attributes #4 = { mustprogress noreturn uwtable "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }
attributes #5 = { noinline noreturn nounwind uwtable "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }
attributes #6 = { nocallback nofree nounwind willreturn memory(argmem: readwrite) }
attributes #7 = { 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 #8 = { nounwind }
attributes #9 = { noreturn }
attributes #10 = { noreturn 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, !14, i64 472}
!10 = !{!"_ZTSN9benchmark17BenchmarkReporter3RunE", !11, i64 0, !14, i64 256, !14, i64 264, !15, i64 272, !12, i64 280, !16, i64 312, !12, i64 320, !17, i64 352, !12, i64 360, !14, i64 392, !14, i64 400, !14, i64 408, !14, i64 416, !18, i64 424, !19, i64 432, !19, i64 440, !19, i64 448, !20, i64 456, !21, i64 460, !6, i64 464, !14, i64 472, !6, i64 480, !20, i64 488, !20, i64 489, !22, i64 496, !30, i64 544, !19, i64 584}
!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 = !{!"_ZTSN9benchmark17BenchmarkReporter3Run7RunTypeE", !7, i64 0}
!16 = !{!"_ZTSN9benchmark13StatisticUnitE", !7, i64 0}
!17 = !{!"_ZTSN9benchmark8internal7SkippedE", !7, i64 0}
!18 = !{!"_ZTSN9benchmark8TimeUnitE", !7, i64 0}
!19 = !{!"double", !7, i64 0}
!20 = !{!"bool", !7, i64 0}
!21 = !{!"_ZTSN9benchmark4BigOE", !7, i64 0}
!22 = !{!"_ZTSSt3mapINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEN9benchmark7CounterESt4lessIS5_ESaISt4pairIKS5_S7_EEE", !23, i64 0}
!23 = !{!"_ZTSSt8_Rb_treeINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESt4pairIKS5_N9benchmark7CounterEESt10_Select1stISA_ESt4lessIS5_ESaISA_EE", !24, i64 0}
!24 = !{!"_ZTSNSt8_Rb_treeINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESt4pairIKS5_N9benchmark7CounterEESt10_Select1stISA_ESt4lessIS5_ESaISA_EE13_Rb_tree_implISE_Lb1EEE", !25, i64 0, !27, i64 8}
!25 = !{!"_ZTSSt20_Rb_tree_key_compareISt4lessINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEEE", !26, i64 0}
!26 = !{!"_ZTSSt4lessINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEE"}
!27 = !{!"_ZTSSt15_Rb_tree_header", !28, i64 0, !14, i64 32}
!28 = !{!"_ZTSSt18_Rb_tree_node_base", !29, i64 0, !6, i64 8, !6, i64 16, !6, i64 24}
!29 = !{!"_ZTSSt14_Rb_tree_color", !7, i64 0}
!30 = !{!"_ZTSN9benchmark13MemoryManager6ResultE", !14, i64 0, !14, i64 8, !14, i64 16, !14, i64 24, !14, i64 32}
!31 = !{!10, !19, i64 432}
!32 = !{!10, !14, i64 392}
!33 = !{!19, !19, i64 0}
!34 = !{!10, !19, i64 440}
!35 = !{!10, !21, i64 460}
!36 = !{!10, !6, i64 464}
!37 = !{i64 0, i64 8, !33, i64 8, i64 8, !33, i64 16, i64 4, !38}
!38 = !{!21, !21, i64 0}
!39 = !{!10, !20, i64 456}
!40 = !{i8 0, i8 2}
!41 = !{}
!42 = !{!20, !20, i64 0}
!43 = !{!10, !14, i64 256}
!44 = !{!10, !14, i64 264}
!45 = !{!10, !15, i64 272}
!46 = !{!10, !14, i64 416}
!47 = !{!10, !14, i64 408}
!48 = !{!10, !14, i64 400}
!49 = !{!10, !16, i64 312}
!50 = !{!51, !19, i64 0}
!51 = !{!"_ZTSN9benchmark7LeastSqE", !19, i64 0, !19, i64 8, !21, i64 16}
!52 = !{!10, !20, i64 488}
!53 = !{!51, !21, i64 16}
!54 = !{!10, !18, i64 424}
!55 = !{!51, !19, i64 8}
!56 = !{!10, !20, i64 489}


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

%"struct.benchmark::LeastSq" = type <{ double, double, i32, [4 x i8] }>
%"class.std::basic_string_view" = type { i64, ptr }
%"class.std::vector.23" = type { %"struct.std::_Vector_base.24" }
%"struct.std::_Vector_base.24" = type { %"struct.std::_Vector_base<benchmark::BenchmarkReporter::Run, std::allocator<benchmark::BenchmarkReporter::Run>>::_Vector_impl" }
%"struct.std::_Vector_base<benchmark::BenchmarkReporter::Run, std::allocator<benchmark::BenchmarkReporter::Run>>::_Vector_impl" = type { %"struct.std::_Vector_base<benchmark::BenchmarkReporter::Run, std::allocator<benchmark::BenchmarkReporter::Run>>::_Vector_impl_data" }
%"struct.std::_Vector_base<benchmark::BenchmarkReporter::Run, std::allocator<benchmark::BenchmarkReporter::Run>>::_Vector_impl_data" = type { ptr, ptr, ptr }
%"class.std::vector" = type { %"struct.std::_Vector_base" }
%"struct.std::_Vector_base" = type { %"struct.std::_Vector_base<long, std::allocator<long>>::_Vector_impl" }
%"struct.std::_Vector_base<long, std::allocator<long>>::_Vector_impl" = type { %"struct.std::_Vector_base<long, std::allocator<long>>::_Vector_impl_data" }
%"struct.std::_Vector_base<long, std::allocator<long>>::_Vector_impl_data" = type { ptr, ptr, ptr }
%"class.std::vector.13" = type { %"struct.std::_Vector_base.14" }
%"struct.std::_Vector_base.14" = type { %"struct.std::_Vector_base<double, std::allocator<double>>::_Vector_impl" }
%"struct.std::_Vector_base<double, std::allocator<double>>::_Vector_impl" = type { %"struct.std::_Vector_base<double, std::allocator<double>>::_Vector_impl_data" }
%"struct.std::_Vector_base<double, std::allocator<double>>::_Vector_impl_data" = type { ptr, ptr, ptr }
%"class.__gnu_cxx::__normal_iterator.28" = type { ptr }
%"class.benchmark::internal::CheckHandler" = type { ptr }
%"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::__cxx11::basic_string" = type { %"struct.std::__cxx11::basic_string<char>::_Alloc_hider", i64, %union.anon }
%"struct.std::__cxx11::basic_string<char>::_Alloc_hider" = type { ptr }
%union.anon = type { i64, [8 x i8] }
%"struct.benchmark::BenchmarkReporter::Run" = type { %"struct.benchmark::BenchmarkName", i64, i64, i32, %"class.std::__cxx11::basic_string", i32, %"class.std::__cxx11::basic_string", i32, %"class.std::__cxx11::basic_string", i64, i64, i64, i64, i32, double, double, double, i8, i32, ptr, i64, ptr, i8, i8, %"class.std::map", %"struct.benchmark::MemoryManager::Result", double }
%"class.std::map" = type { %"class.std::_Rb_tree" }
%"class.std::_Rb_tree" = type { %"struct.std::_Rb_tree<std::__cxx11::basic_string<char>, std::pair<const std::__cxx11::basic_string<char>, benchmark::Counter>, std::_Select1st<std::pair<const std::__cxx11::basic_string<char>, benchmark::Counter>>, std::less<std::__cxx11::basic_string<char>>>::_Rb_tree_impl" }
%"struct.std::_Rb_tree<std::__cxx11::basic_string<char>, std::pair<const std::__cxx11::basic_string<char>, benchmark::Counter>, std::_Select1st<std::pair<const std::__cxx11::basic_string<char>, benchmark::Counter>>, std::less<std::__cxx11::basic_string<char>>>::_Rb_tree_impl" = type { [8 x i8], %"struct.std::_Rb_tree_header" }
%"struct.std::_Rb_tree_header" = type { %"struct.std::_Rb_tree_node_base", i64 }
%"struct.std::_Rb_tree_node_base" = type { i32, ptr, ptr, ptr }
%"struct.benchmark::MemoryManager::Result" = type { i64, i64, i64, i64, i64 }

@.str.9 = external hidden unnamed_addr constant [68 x i8], align 1
@.str.12 = external hidden unnamed_addr constant [25 x i8], align 1
@__func__._ZN9benchmark11ComputeBigOERKSt6vectorINS_17BenchmarkReporter3RunESaIS2_EE = external hidden unnamed_addr constant [12 x i8], align 1
@.str.13 = external hidden unnamed_addr constant [39 x i8], align 1
@.str.14 = external hidden unnamed_addr constant [5 x i8], align 1
@.str.15 = external hidden unnamed_addr constant [4 x i8], align 1

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

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

declare i32 @__gxx_personality_v0(...)

; Function Attrs: mustprogress uwtable
declare dso_local void @_ZN9benchmark14MinimalLeastSqERKSt6vectorIlSaIlEERKS0_IdSaIdEEPFdlE(ptr dead_on_unwind noalias writable sret(%"struct.benchmark::LeastSq") align 8, ptr noundef nonnull align 8 dereferenceable(24), ptr noundef nonnull align 8 dereferenceable(24), ptr noundef) local_unnamed_addr #1

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

; Function Attrs: mustprogress uwtable
declare dso_local void @_ZN9benchmark14MinimalLeastSqERKSt6vectorIlSaIlEERKS0_IdSaIdEENS_4BigOE(ptr dead_on_unwind noalias writable sret(%"struct.benchmark::LeastSq") align 8, ptr noundef nonnull align 8 dereferenceable(24), ptr noundef nonnull align 8 dereferenceable(24), i32 noundef) local_unnamed_addr #1

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

; Function Attrs: mustprogress nounwind uwtable
declare dso_local void @_ZNSt17basic_string_viewIcSt11char_traitsIcEEC2EPKc(ptr noundef nonnull align 8 dereferenceable(16), ptr noundef nonnull) unnamed_addr #2 align 2

; Function Attrs: mustprogress uwtable
declare dso_local void @_ZN9benchmark8internal12CheckHandlerC2ESt17basic_string_viewIcSt11char_traitsIcEES5_S5_i(ptr noundef nonnull align 8 dereferenceable(8), i64, ptr, i64, ptr, ptr noundef byval(%"class.std::basic_string_view") align 8, i32 noundef) unnamed_addr #1 align 2

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

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

; Function Attrs: noinline noreturn nounwind uwtable
declare hidden void @__clang_call_terminate(ptr noundef) local_unnamed_addr #5

; Function Attrs: mustprogress nocallback nofree nounwind willreturn memory(argmem: readwrite)
declare void @llvm.memcpy.p0.p0.i64(ptr noalias nocapture writeonly, ptr noalias nocapture readonly, i64, i1 immarg) #6

; Function Attrs: mustprogress uwtable
define dso_local void @_ZN9benchmark11ComputeBigOERKSt6vectorINS_17BenchmarkReporter3RunESaIS2_EE(ptr dead_on_unwind noalias nonnull writable sret(%"class.std::vector.23") align 8 %0, ptr noundef nonnull align 8 dereferenceable(24) %1) local_unnamed_addr #1 personality ptr @__gxx_personality_v0 {
  %3 = alloca %"class.std::vector", align 8
  %4 = alloca %"class.std::vector.13", align 8
  %5 = alloca %"class.std::vector.13", align 8
  %6 = alloca %"class.__gnu_cxx::__normal_iterator.28", align 8
  %7 = alloca %"class.__gnu_cxx::__normal_iterator.28", align 8
  %8 = alloca %"class.benchmark::internal::CheckHandler", align 8
  %9 = alloca %"class.std::basic_string_view", align 8
  %10 = alloca %"class.std::basic_string_view", align 8
  %11 = alloca %"class.std::basic_string_view", align 8
  %12 = alloca double, align 8
  %13 = alloca double, align 8
  %14 = alloca %"struct.benchmark::LeastSq", align 8
  %15 = alloca %"struct.benchmark::LeastSq", align 8
  %16 = alloca %"struct.benchmark::LeastSq", align 8
  %17 = alloca %"struct.benchmark::LeastSq", align 8
  %18 = alloca %"struct.benchmark::LeastSq", align 8
  %19 = alloca %"struct.benchmark::LeastSq", align 8
  %20 = alloca %"struct.benchmark::LeastSq", align 8
  %21 = alloca %"struct.benchmark::BenchmarkName", align 8
  %22 = alloca %"struct.benchmark::BenchmarkReporter::Run", align 8
  %23 = alloca %"struct.benchmark::BenchmarkReporter::Run", align 8
  tail call void @_ZNSt6vectorIN9benchmark17BenchmarkReporter3RunESaIS2_EEC2Ev(ptr noundef nonnull align 8 dereferenceable(24) %0) #8
  %24 = tail call noundef i64 @_ZNKSt6vectorIN9benchmark17BenchmarkReporter3RunESaIS2_EE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24) %1) #8
  %25 = icmp ult i64 %24, 2
  br i1 %25, label %232, label %26

26:                                               ; preds = %2
  call void @llvm.lifetime.start.p0(i64 24, ptr nonnull %3) #8
  call void @_ZNSt6vectorIlSaIlEEC2Ev(ptr noundef nonnull align 8 dereferenceable(24) %3) #8
  call void @llvm.lifetime.start.p0(i64 24, ptr nonnull %4) #8
  call void @_ZNSt6vectorIdSaIdEEC2Ev(ptr noundef nonnull align 8 dereferenceable(24) %4) #8
  call void @llvm.lifetime.start.p0(i64 24, ptr nonnull %5) #8
  call void @_ZNSt6vectorIdSaIdEEC2Ev(ptr noundef nonnull align 8 dereferenceable(24) %5) #8
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %6) #8
  %27 = call ptr @_ZNKSt6vectorIN9benchmark17BenchmarkReporter3RunESaIS2_EE5beginEv(ptr noundef nonnull align 8 dereferenceable(24) %1) #8
  store ptr %27, ptr %6, align 8
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %7) #8
  %28 = call ptr @_ZNKSt6vectorIN9benchmark17BenchmarkReporter3RunESaIS2_EE3endEv(ptr noundef nonnull align 8 dereferenceable(24) %1) #8
  store ptr %28, ptr %7, align 8
  %29 = call noundef zeroext i1 @_ZN9__gnu_cxxneIPKN9benchmark17BenchmarkReporter3RunESt6vectorIS3_SaIS3_EEEEbRKNS_17__normal_iteratorIT_T0_EESE_(ptr noundef nonnull align 8 dereferenceable(8) %6, ptr noundef nonnull align 8 dereferenceable(8) %7) #8
  br i1 %29, label %.lr.ph, label %._crit_edge

.lr.ph:                                           ; preds = %26
  %30 = getelementptr inbounds i8, ptr %9, i64 8
  %31 = getelementptr inbounds i8, ptr %10, i64 8
  br label %36

._crit_edge:                                      ; preds = %74, %26
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %7) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %6) #8
  call void @llvm.lifetime.start.p0(i64 24, ptr nonnull %14) #8
  call void @_ZN9benchmark7LeastSqC2Ev(ptr noundef nonnull align 8 dereferenceable(20) %14)
  call void @llvm.lifetime.start.p0(i64 24, ptr nonnull %15) #8
  call void @_ZN9benchmark7LeastSqC2Ev(ptr noundef nonnull align 8 dereferenceable(20) %15)
  %32 = call noundef nonnull align 8 dereferenceable(592) ptr @_ZNKSt6vectorIN9benchmark17BenchmarkReporter3RunESaIS2_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %1, i64 noundef 0) #8
  %33 = getelementptr inbounds i8, ptr %32, i64 460
  %34 = load i32, ptr %33, align 4, !tbaa !5
  %35 = icmp eq i32 %34, 8
  br i1 %35, label %85, label %98

36:                                               ; preds = %.lr.ph, %74
  %37 = call noundef nonnull align 8 dereferenceable(592) ptr @_ZNK9__gnu_cxx17__normal_iteratorIPKN9benchmark17BenchmarkReporter3RunESt6vectorIS3_SaIS3_EEEdeEv(ptr noundef nonnull align 8 dereferenceable(8) %6) #8
  %38 = getelementptr inbounds i8, ptr %37, i64 472
  %39 = load i64, ptr %38, align 8, !tbaa !30
  %40 = icmp slt i64 %39, 1
  br i1 %40, label %43, label %41

41:                                               ; preds = %36
  %42 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZN9benchmark8internal18GetNullLogInstanceEv()
          to label %50 unwind label %56

43:                                               ; preds = %36
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %8) #8
  call void @_ZNSt17basic_string_viewIcSt11char_traitsIcEEC2EPKc(ptr noundef nonnull align 8 dereferenceable(16) %9, ptr noundef @.str.12) #8
  call void @_ZNSt17basic_string_viewIcSt11char_traitsIcEEC2EPKc(ptr noundef nonnull align 8 dereferenceable(16) %10, ptr noundef @.str.9) #8
  call void @_ZNSt17basic_string_viewIcSt11char_traitsIcEEC2EPKc(ptr noundef nonnull align 8 dereferenceable(16) %11, ptr noundef @__func__._ZN9benchmark11ComputeBigOERKSt6vectorINS_17BenchmarkReporter3RunESaIS2_EE) #8
  %44 = load i64, ptr %9, align 8
  %45 = load ptr, ptr %30, align 8
  %46 = load i64, ptr %10, align 8
  %47 = load ptr, ptr %31, align 8
  invoke void @_ZN9benchmark8internal12CheckHandlerC2ESt17basic_string_viewIcSt11char_traitsIcEES5_S5_i(ptr noundef nonnull align 8 dereferenceable(8) %8, i64 %44, ptr %45, i64 %46, ptr %47, ptr noundef nonnull byval(%"class.std::basic_string_view") align 8 %11, i32 noundef 171)
          to label %48 unwind label %.loopexit

48:                                               ; preds = %43
  %49 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZN9benchmark8internal12CheckHandler6GetLogEv(ptr noundef nonnull align 8 dereferenceable(8) %8)
  br label %50

50:                                               ; preds = %41, %48
  %51 = phi ptr [ %42, %41 ], [ %49, %48 ]
  %52 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZN9benchmark8internallsIA39_cEERNS0_7LogTypeES4_RKT_(ptr noundef nonnull align 8 dereferenceable(8) %51, ptr noundef nonnull align 1 dereferenceable(39) @.str.13)
          to label %53 unwind label %58

53:                                               ; preds = %50
  br i1 %40, label %54, label %60

54:                                               ; preds = %53
  invoke void @_ZN9benchmark8internal12CheckHandlerD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %8) #9
          to label %55 unwind label %.loopexit.split-lp

55:                                               ; preds = %54
  unreachable

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

58:                                               ; preds = %50
  %59 = landingpad { ptr, i32 }
          cleanup
  br i1 %40, label %77, label %84

60:                                               ; preds = %53
  invoke void @_ZNSt6vectorIlSaIlEE9push_backERKl(ptr noundef nonnull align 8 dereferenceable(24) %3, ptr noundef nonnull align 8 dereferenceable(8) %38)
          to label %61 unwind label %56

61:                                               ; preds = %60
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %12) #8
  %62 = getelementptr inbounds i8, ptr %37, i64 432
  %63 = load double, ptr %62, align 8, !tbaa !31
  %64 = getelementptr inbounds i8, ptr %37, i64 392
  %65 = load i64, ptr %64, align 8, !tbaa !32
  %66 = sitofp i64 %65 to double
  %67 = fdiv double %63, %66
  store double %67, ptr %12, align 8, !tbaa !33
  invoke void @_ZNSt6vectorIdSaIdEE9push_backEOd(ptr noundef nonnull align 8 dereferenceable(24) %4, ptr noundef nonnull align 8 dereferenceable(8) %12)
          to label %68 unwind label %80

68:                                               ; preds = %61
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %12) #8
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %13) #8
  %69 = getelementptr inbounds i8, ptr %37, i64 440
  %70 = load double, ptr %69, align 8, !tbaa !34
  %71 = load i64, ptr %64, align 8, !tbaa !32
  %72 = sitofp i64 %71 to double
  %73 = fdiv double %70, %72
  store double %73, ptr %13, align 8, !tbaa !33
  invoke void @_ZNSt6vectorIdSaIdEE9push_backEOd(ptr noundef nonnull align 8 dereferenceable(24) %5, ptr noundef nonnull align 8 dereferenceable(8) %13)
          to label %74 unwind label %82

74:                                               ; preds = %68
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %13) #8
  %75 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZN9__gnu_cxx17__normal_iteratorIPKN9benchmark17BenchmarkReporter3RunESt6vectorIS3_SaIS3_EEEppEv(ptr noundef nonnull align 8 dereferenceable(8) %6) #8
  %76 = call noundef zeroext i1 @_ZN9__gnu_cxxneIPKN9benchmark17BenchmarkReporter3RunESt6vectorIS3_SaIS3_EEEEbRKNS_17__normal_iteratorIT_T0_EESE_(ptr noundef nonnull align 8 dereferenceable(8) %6, ptr noundef nonnull align 8 dereferenceable(8) %7) #8
  br i1 %76, label %36, label %._crit_edge

77:                                               ; preds = %58
  invoke void @_ZN9benchmark8internal12CheckHandlerD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %8) #9
          to label %78 unwind label %233

78:                                               ; preds = %77
  unreachable

.loopexit:                                        ; preds = %43
  %lpad.loopexit = landingpad { ptr, i32 }
          cleanup
  br label %79

.loopexit.split-lp:                               ; preds = %54
  %lpad.loopexit.split-lp = landingpad { ptr, i32 }
          cleanup
  br label %79

79:                                               ; preds = %.loopexit.split-lp, %.loopexit
  %lpad.phi = phi { ptr, i32 } [ %lpad.loopexit, %.loopexit ], [ %lpad.loopexit.split-lp, %.loopexit.split-lp ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %8) #8
  br label %84

80:                                               ; preds = %61
  %81 = landingpad { ptr, i32 }
          cleanup
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %12) #8
  br label %84

82:                                               ; preds = %68
  %83 = landingpad { ptr, i32 }
          cleanup
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %13) #8
  br label %84

84:                                               ; preds = %58, %79, %82, %80, %56
  %.pn62.pn = phi { ptr, i32 } [ %lpad.phi, %79 ], [ %83, %82 ], [ %81, %80 ], [ %57, %56 ], [ %59, %58 ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %7) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %6) #8
  br label %231

85:                                               ; preds = %._crit_edge
  call void @llvm.lifetime.start.p0(i64 24, ptr nonnull %16) #8
  %86 = call noundef nonnull align 8 dereferenceable(592) ptr @_ZNKSt6vectorIN9benchmark17BenchmarkReporter3RunESaIS2_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %1, i64 noundef 0) #8
  %87 = getelementptr inbounds i8, ptr %86, i64 464
  %88 = load ptr, ptr %87, align 8, !tbaa !35
  invoke void @_ZN9benchmark14MinimalLeastSqERKSt6vectorIlSaIlEERKS0_IdSaIdEEPFdlE(ptr dead_on_unwind nonnull writable sret(%"struct.benchmark::LeastSq") align 8 %16, ptr noundef nonnull align 8 dereferenceable(24) %3, ptr noundef nonnull align 8 dereferenceable(24) %5, ptr noundef %88)
          to label %89 unwind label %94

89:                                               ; preds = %85
  call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(20) %14, ptr noundef nonnull align 8 dereferenceable(20) %16, i64 20, i1 false), !tbaa.struct !36
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %16) #8
  call void @llvm.lifetime.start.p0(i64 24, ptr nonnull %17) #8
  %90 = call noundef nonnull align 8 dereferenceable(592) ptr @_ZNKSt6vectorIN9benchmark17BenchmarkReporter3RunESaIS2_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %1, i64 noundef 0) #8
  %91 = getelementptr inbounds i8, ptr %90, i64 464
  %92 = load ptr, ptr %91, align 8, !tbaa !35
  invoke void @_ZN9benchmark14MinimalLeastSqERKSt6vectorIlSaIlEERKS0_IdSaIdEEPFdlE(ptr dead_on_unwind nonnull writable sret(%"struct.benchmark::LeastSq") align 8 %17, ptr noundef nonnull align 8 dereferenceable(24) %3, ptr noundef nonnull align 8 dereferenceable(24) %4, ptr noundef %92)
          to label %93 unwind label %96

93:                                               ; preds = %89
  call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(20) %15, ptr noundef nonnull align 8 dereferenceable(20) %17, i64 20, i1 false), !tbaa.struct !36
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %17) #8
  br label %122

94:                                               ; preds = %85
  %95 = landingpad { ptr, i32 }
          cleanup
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %16) #8
  br label %230

96:                                               ; preds = %89
  %97 = landingpad { ptr, i32 }
          cleanup
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %17) #8
  br label %230

98:                                               ; preds = %._crit_edge
  %99 = call noundef nonnull align 8 dereferenceable(592) ptr @_ZNKSt6vectorIN9benchmark17BenchmarkReporter3RunESaIS2_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %1, i64 noundef 0) #8
  %100 = getelementptr inbounds i8, ptr %99, i64 460
  %101 = call noundef nonnull align 8 dereferenceable(592) ptr @_ZNKSt6vectorIN9benchmark17BenchmarkReporter3RunESaIS2_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %1, i64 noundef 0) #8
  %102 = getelementptr inbounds i8, ptr %101, i64 456
  %103 = load i8, ptr %102, align 8, !tbaa !38, !range !39, !noundef !40
  %104 = trunc nuw i8 %103 to i1
  br i1 %104, label %105, label %111

105:                                              ; preds = %98
  call void @llvm.lifetime.start.p0(i64 24, ptr nonnull %18) #8
  %106 = load i32, ptr %100, align 4, !tbaa !37
  invoke void @_ZN9benchmark14MinimalLeastSqERKSt6vectorIlSaIlEERKS0_IdSaIdEENS_4BigOE(ptr dead_on_unwind nonnull writable sret(%"struct.benchmark::LeastSq") align 8 %18, ptr noundef nonnull align 8 dereferenceable(24) %3, ptr noundef nonnull align 8 dereferenceable(24) %4, i32 noundef %106)
          to label %107 unwind label %109

107:                                              ; preds = %105
  call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(20) %15, ptr noundef nonnull align 8 dereferenceable(20) %18, i64 20, i1 false), !tbaa.struct !36
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %18) #8
  %108 = getelementptr inbounds i8, ptr %15, i64 16
  br label %111

109:                                              ; preds = %105
  %110 = landingpad { ptr, i32 }
          cleanup
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %18) #8
  br label %230

111:                                              ; preds = %107, %98
  %.040 = phi ptr [ %108, %107 ], [ %100, %98 ]
  call void @llvm.lifetime.start.p0(i64 24, ptr nonnull %19) #8
  %112 = load i32, ptr %.040, align 4, !tbaa !37
  invoke void @_ZN9benchmark14MinimalLeastSqERKSt6vectorIlSaIlEERKS0_IdSaIdEENS_4BigOE(ptr dead_on_unwind nonnull writable sret(%"struct.benchmark::LeastSq") align 8 %19, ptr noundef nonnull align 8 dereferenceable(24) %3, ptr noundef nonnull align 8 dereferenceable(24) %5, i32 noundef %112)
          to label %113 unwind label %118

113:                                              ; preds = %111
  call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(20) %14, ptr noundef nonnull align 8 dereferenceable(20) %19, i64 20, i1 false), !tbaa.struct !36
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %19) #8
  br i1 %104, label %122, label %114

114:                                              ; preds = %113
  %115 = getelementptr inbounds i8, ptr %14, i64 16
  call void @llvm.lifetime.start.p0(i64 24, ptr nonnull %20) #8
  %116 = load i32, ptr %115, align 8, !tbaa !37
  invoke void @_ZN9benchmark14MinimalLeastSqERKSt6vectorIlSaIlEERKS0_IdSaIdEENS_4BigOE(ptr dead_on_unwind nonnull writable sret(%"struct.benchmark::LeastSq") align 8 %20, ptr noundef nonnull align 8 dereferenceable(24) %3, ptr noundef nonnull align 8 dereferenceable(24) %4, i32 noundef %116)
          to label %117 unwind label %120

117:                                              ; preds = %114
  call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(20) %15, ptr noundef nonnull align 8 dereferenceable(20) %20, i64 20, i1 false), !tbaa.struct !36
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %20) #8
  br label %122

118:                                              ; preds = %111
  %119 = landingpad { ptr, i32 }
          cleanup
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %19) #8
  br label %230

120:                                              ; preds = %114
  %121 = landingpad { ptr, i32 }
          cleanup
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %20) #8
  br label %230

122:                                              ; preds = %113, %117, %93
  call void @llvm.lifetime.start.p0(i64 256, ptr nonnull %21) #8
  %123 = call noundef nonnull align 8 dereferenceable(592) ptr @_ZNKSt6vectorIN9benchmark17BenchmarkReporter3RunESaIS2_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %1, i64 noundef 0) #8
  invoke void @_ZN9benchmark13BenchmarkNameC2ERKS0_(ptr noundef nonnull align 8 dereferenceable(256) %21, ptr noundef nonnull align 8 dereferenceable(256) %123)
          to label %124 unwind label %216

124:                                              ; preds = %122
  %125 = getelementptr inbounds i8, ptr %21, i64 32
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE5clearEv(ptr noundef nonnull align 8 dereferenceable(32) %125) #8
  call void @llvm.lifetime.start.p0(i64 592, ptr nonnull %22) #8
  invoke void @_ZN9benchmark17BenchmarkReporter3RunC2Ev(ptr noundef nonnull align 8 dereferenceable(592) %22)
          to label %126 unwind label %218

126:                                              ; preds = %124
  %127 = invoke noundef nonnull align 8 dereferenceable(256) ptr @_ZN9benchmark13BenchmarkNameaSERKS0_(ptr noundef nonnull align 8 dereferenceable(256) %22, ptr noundef nonnull align 8 dereferenceable(256) %21)
          to label %128 unwind label %220

128:                                              ; preds = %126
  %129 = call noundef nonnull align 8 dereferenceable(592) ptr @_ZNKSt6vectorIN9benchmark17BenchmarkReporter3RunESaIS2_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %1, i64 noundef 0) #8
  %130 = getelementptr inbounds i8, ptr %129, i64 256
  %131 = load i64, ptr %130, align 8, !tbaa !41
  %132 = getelementptr inbounds i8, ptr %22, i64 256
  store i64 %131, ptr %132, align 8, !tbaa !41
  %133 = call noundef nonnull align 8 dereferenceable(592) ptr @_ZNKSt6vectorIN9benchmark17BenchmarkReporter3RunESaIS2_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %1, i64 noundef 0) #8
  %134 = getelementptr inbounds i8, ptr %133, i64 264
  %135 = load i64, ptr %134, align 8, !tbaa !42
  %136 = getelementptr inbounds i8, ptr %22, i64 264
  store i64 %135, ptr %136, align 8, !tbaa !42
  %137 = getelementptr inbounds i8, ptr %22, i64 272
  store i32 1, ptr %137, align 8, !tbaa !43
  %138 = call noundef nonnull align 8 dereferenceable(592) ptr @_ZNKSt6vectorIN9benchmark17BenchmarkReporter3RunESaIS2_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %1, i64 noundef 0) #8
  %139 = getelementptr inbounds i8, ptr %138, i64 416
  %140 = load i64, ptr %139, align 8, !tbaa !44
  %141 = getelementptr inbounds i8, ptr %22, i64 416
  store i64 %140, ptr %141, align 8, !tbaa !44
  %142 = getelementptr inbounds i8, ptr %22, i64 408
  store i64 -1, ptr %142, align 8, !tbaa !45
  %143 = call noundef nonnull align 8 dereferenceable(592) ptr @_ZNKSt6vectorIN9benchmark17BenchmarkReporter3RunESaIS2_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %1, i64 noundef 0) #8
  %144 = getelementptr inbounds i8, ptr %143, i64 400
  %145 = load i64, ptr %144, align 8, !tbaa !46
  %146 = getelementptr inbounds i8, ptr %22, i64 400
  store i64 %145, ptr %146, align 8, !tbaa !46
  %147 = getelementptr inbounds i8, ptr %22, i64 280
  %148 = invoke noundef nonnull align 8 dereferenceable(32) ptr @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEaSEPKc(ptr noundef nonnull align 8 dereferenceable(32) %147, ptr noundef nonnull @.str.14)
          to label %149 unwind label %220

149:                                              ; preds = %128
  %150 = getelementptr inbounds i8, ptr %22, i64 312
  store i32 0, ptr %150, align 8, !tbaa !47
  %151 = call noundef nonnull align 8 dereferenceable(592) ptr @_ZNKSt6vectorIN9benchmark17BenchmarkReporter3RunESaIS2_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %1, i64 noundef 0) #8
  %152 = getelementptr inbounds i8, ptr %151, i64 320
  %153 = getelementptr inbounds i8, ptr %22, i64 320
  %154 = invoke noundef nonnull align 8 dereferenceable(32) ptr @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEaSERKS4_(ptr noundef nonnull align 8 dereferenceable(32) %153, ptr noundef nonnull align 8 dereferenceable(32) %152)
          to label %155 unwind label %220

155:                                              ; preds = %149
  %156 = getelementptr inbounds i8, ptr %22, i64 392
  store i64 0, ptr %156, align 8, !tbaa !32
  %157 = load double, ptr %15, align 8, !tbaa !48
  %158 = getelementptr inbounds i8, ptr %22, i64 432
  store double %157, ptr %158, align 8, !tbaa !31
  %159 = load double, ptr %14, align 8, !tbaa !48
  %160 = getelementptr inbounds i8, ptr %22, i64 440
  store double %159, ptr %160, align 8, !tbaa !34
  %161 = getelementptr inbounds i8, ptr %22, i64 488
  store i8 1, ptr %161, align 8, !tbaa !50
  %162 = getelementptr inbounds i8, ptr %14, i64 16
  %163 = load i32, ptr %162, align 8, !tbaa !51
  %164 = getelementptr inbounds i8, ptr %22, i64 460
  store i32 %163, ptr %164, align 4, !tbaa !5
  %165 = call noundef nonnull align 8 dereferenceable(592) ptr @_ZNKSt6vectorIN9benchmark17BenchmarkReporter3RunESaIS2_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %1, i64 noundef 0) #8
  %166 = getelementptr inbounds i8, ptr %165, i64 424
  %167 = load i32, ptr %166, align 8, !tbaa !52
  %168 = call noundef double @_ZN9benchmark21GetTimeUnitMultiplierENS_8TimeUnitE(i32 noundef %167)
  call void @llvm.lifetime.start.p0(i64 592, ptr nonnull %23) #8
  invoke void @_ZN9benchmark17BenchmarkReporter3RunC2Ev(ptr noundef nonnull align 8 dereferenceable(592) %23)
          to label %169 unwind label %222

169:                                              ; preds = %155
  %170 = invoke noundef nonnull align 8 dereferenceable(256) ptr @_ZN9benchmark13BenchmarkNameaSERKS0_(ptr noundef nonnull align 8 dereferenceable(256) %23, ptr noundef nonnull align 8 dereferenceable(256) %21)
          to label %171 unwind label %224

171:                                              ; preds = %169
  %172 = call noundef nonnull align 8 dereferenceable(592) ptr @_ZNKSt6vectorIN9benchmark17BenchmarkReporter3RunESaIS2_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %1, i64 noundef 0) #8
  %173 = getelementptr inbounds i8, ptr %172, i64 256
  %174 = load i64, ptr %173, align 8, !tbaa !41
  %175 = getelementptr inbounds i8, ptr %23, i64 256
  store i64 %174, ptr %175, align 8, !tbaa !41
  %176 = call noundef nonnull align 8 dereferenceable(592) ptr @_ZNKSt6vectorIN9benchmark17BenchmarkReporter3RunESaIS2_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %1, i64 noundef 0) #8
  %177 = getelementptr inbounds i8, ptr %176, i64 264
  %178 = load i64, ptr %177, align 8, !tbaa !42
  %179 = getelementptr inbounds i8, ptr %23, i64 264
  store i64 %178, ptr %179, align 8, !tbaa !42
  %180 = getelementptr inbounds i8, ptr %23, i64 272
  store i32 1, ptr %180, align 8, !tbaa !43
  %181 = getelementptr inbounds i8, ptr %23, i64 280
  %182 = invoke noundef nonnull align 8 dereferenceable(32) ptr @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEaSEPKc(ptr noundef nonnull align 8 dereferenceable(32) %181, ptr noundef nonnull @.str.15)
          to label %183 unwind label %224

183:                                              ; preds = %171
  %184 = getelementptr inbounds i8, ptr %23, i64 312
  store i32 1, ptr %184, align 8, !tbaa !47
  %185 = getelementptr inbounds i8, ptr %23, i64 320
  %186 = invoke noundef nonnull align 8 dereferenceable(32) ptr @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEaSERKS4_(ptr noundef nonnull align 8 dereferenceable(32) %185, ptr noundef nonnull align 8 dereferenceable(32) %153)
          to label %187 unwind label %224

187:                                              ; preds = %183
  %188 = getelementptr inbounds i8, ptr %23, i64 392
  store i64 0, ptr %188, align 8, !tbaa !32
  %189 = getelementptr inbounds i8, ptr %23, i64 408
  store i64 -1, ptr %189, align 8, !tbaa !45
  %190 = call noundef nonnull align 8 dereferenceable(592) ptr @_ZNKSt6vectorIN9benchmark17BenchmarkReporter3RunESaIS2_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %1, i64 noundef 0) #8
  %191 = getelementptr inbounds i8, ptr %190, i64 416
  %192 = load i64, ptr %191, align 8, !tbaa !44
  %193 = getelementptr inbounds i8, ptr %23, i64 416
  store i64 %192, ptr %193, align 8, !tbaa !44
  %194 = call noundef nonnull align 8 dereferenceable(592) ptr @_ZNKSt6vectorIN9benchmark17BenchmarkReporter3RunESaIS2_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %1, i64 noundef 0) #8
  %195 = getelementptr inbounds i8, ptr %194, i64 400
  %196 = load i64, ptr %195, align 8, !tbaa !46
  %197 = getelementptr inbounds i8, ptr %23, i64 400
  store i64 %196, ptr %197, align 8, !tbaa !46
  %198 = getelementptr inbounds i8, ptr %15, i64 8
  %199 = load <2 x double>, ptr %198, align 8
  %200 = getelementptr inbounds i8, ptr %23, i64 432
  %201 = getelementptr inbounds i8, ptr %14, i64 8
  %202 = load double, ptr %201, align 8, !tbaa !53
  %203 = insertelement <2 x double> %199, double %202, i64 1
  %204 = insertelement <2 x double> poison, double %168, i64 0
  %205 = shufflevector <2 x double> %204, <2 x double> poison, <2 x i32> zeroinitializer
  %206 = fdiv <2 x double> %203, %205
  store <2 x double> %206, ptr %200, align 8, !tbaa !33
  %207 = getelementptr inbounds i8, ptr %23, i64 489
  store i8 1, ptr %207, align 1, !tbaa !54
  %208 = load i32, ptr %162, align 8, !tbaa !51
  %209 = getelementptr inbounds i8, ptr %23, i64 460
  store i32 %208, ptr %209, align 4, !tbaa !5
  %210 = call noundef nonnull align 8 dereferenceable(592) ptr @_ZNKSt6vectorIN9benchmark17BenchmarkReporter3RunESaIS2_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %1, i64 noundef 0) #8
  %211 = getelementptr inbounds i8, ptr %210, i64 424
  %212 = load i32, ptr %211, align 8, !tbaa !52
  %213 = getelementptr inbounds i8, ptr %23, i64 424
  store i32 %212, ptr %213, align 8, !tbaa !52
  invoke void @_ZNSt6vectorIN9benchmark17BenchmarkReporter3RunESaIS2_EE9push_backERKS2_(ptr noundef nonnull align 8 dereferenceable(24) %0, ptr noundef nonnull align 8 dereferenceable(592) %22)
          to label %214 unwind label %224

214:                                              ; preds = %187
  invoke void @_ZNSt6vectorIN9benchmark17BenchmarkReporter3RunESaIS2_EE9push_backERKS2_(ptr noundef nonnull align 8 dereferenceable(24) %0, ptr noundef nonnull align 8 dereferenceable(592) %23)
          to label %215 unwind label %224

215:                                              ; preds = %214
  call void @_ZN9benchmark17BenchmarkReporter3RunD2Ev(ptr noundef nonnull align 8 dereferenceable(592) %23) #8
  call void @llvm.lifetime.end.p0(i64 592, ptr nonnull %23) #8
  call void @_ZN9benchmark17BenchmarkReporter3RunD2Ev(ptr noundef nonnull align 8 dereferenceable(592) %22) #8
  call void @llvm.lifetime.end.p0(i64 592, ptr nonnull %22) #8
  call void @_ZN9benchmark13BenchmarkNameD2Ev(ptr noundef nonnull align 8 dereferenceable(256) %21) #8
  call void @llvm.lifetime.end.p0(i64 256, ptr nonnull %21) #8
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %15) #8
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %14) #8
  call void @_ZNSt6vectorIdSaIdEED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %5) #8
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %5) #8
  call void @_ZNSt6vectorIdSaIdEED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %4) #8
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %4) #8
  call void @_ZNSt6vectorIlSaIlEED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %3) #8
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %3) #8
  br label %232

216:                                              ; preds = %122
  %217 = landingpad { ptr, i32 }
          cleanup
  br label %229

218:                                              ; preds = %124
  %219 = landingpad { ptr, i32 }
          cleanup
  br label %228

220:                                              ; preds = %149, %128, %126
  %221 = landingpad { ptr, i32 }
          cleanup
  br label %227

222:                                              ; preds = %155
  %223 = landingpad { ptr, i32 }
          cleanup
  br label %226

224:                                              ; preds = %214, %187, %183, %171, %169
  %225 = landingpad { ptr, i32 }
          cleanup
  call void @_ZN9benchmark17BenchmarkReporter3RunD2Ev(ptr noundef nonnull align 8 dereferenceable(592) %23) #8
  br label %226

226:                                              ; preds = %224, %222
  %.pn56 = phi { ptr, i32 } [ %225, %224 ], [ %223, %222 ]
  call void @llvm.lifetime.end.p0(i64 592, ptr nonnull %23) #8
  br label %227

227:                                              ; preds = %226, %220
  %.pn56.pn = phi { ptr, i32 } [ %.pn56, %226 ], [ %221, %220 ]
  call void @_ZN9benchmark17BenchmarkReporter3RunD2Ev(ptr noundef nonnull align 8 dereferenceable(592) %22) #8
  br label %228

228:                                              ; preds = %227, %218
  %.pn56.pn.pn = phi { ptr, i32 } [ %.pn56.pn, %227 ], [ %219, %218 ]
  call void @llvm.lifetime.end.p0(i64 592, ptr nonnull %22) #8
  call void @_ZN9benchmark13BenchmarkNameD2Ev(ptr noundef nonnull align 8 dereferenceable(256) %21) #8
  br label %229

229:                                              ; preds = %228, %216
  %.pn56.pn.pn.pn = phi { ptr, i32 } [ %.pn56.pn.pn, %228 ], [ %217, %216 ]
  call void @llvm.lifetime.end.p0(i64 256, ptr nonnull %21) #8
  br label %230

230:                                              ; preds = %109, %118, %120, %229, %96, %94
  %.pn56.pn.pn.pn.pn = phi { ptr, i32 } [ %.pn56.pn.pn.pn, %229 ], [ %97, %96 ], [ %95, %94 ], [ %121, %120 ], [ %119, %118 ], [ %110, %109 ]
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %15) #8
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %14) #8
  br label %231

231:                                              ; preds = %230, %84
  %.pn62.pn.pn = phi { ptr, i32 } [ %.pn62.pn, %84 ], [ %.pn56.pn.pn.pn.pn, %230 ]
  call void @_ZNSt6vectorIdSaIdEED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %5) #8
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %5) #8
  call void @_ZNSt6vectorIdSaIdEED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %4) #8
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %4) #8
  call void @_ZNSt6vectorIlSaIlEED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %3) #8
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %3) #8
  call void @_ZNSt6vectorIN9benchmark17BenchmarkReporter3RunESaIS2_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %0) #8
  resume { ptr, i32 } %.pn62.pn.pn

232:                                              ; preds = %215, %2
  ret void

233:                                              ; preds = %77
  %234 = landingpad { ptr, i32 }
          catch ptr null
  %235 = extractvalue { ptr, i32 } %234, 0
  call void @__clang_call_terminate(ptr %235) #10
  unreachable
}

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

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

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

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

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

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

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

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

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

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

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

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

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

; Function Attrs: inlinehint mustprogress uwtable
declare dso_local void @_ZN9benchmark13BenchmarkNameC2ERKS0_(ptr noundef nonnull align 8 dereferenceable(256), ptr noundef nonnull align 8 dereferenceable(256)) unnamed_addr #3 align 2

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

; Function Attrs: mustprogress uwtable
declare dso_local void @_ZN9benchmark17BenchmarkReporter3RunC2Ev(ptr noundef nonnull align 8 dereferenceable(592)) unnamed_addr #1 align 2

; Function Attrs: inlinehint mustprogress uwtable
declare dso_local noundef nonnull align 8 dereferenceable(256) ptr @_ZN9benchmark13BenchmarkNameaSERKS0_(ptr noundef nonnull align 8 dereferenceable(256), ptr noundef nonnull align 8 dereferenceable(256)) 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 #1 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 #1 align 2

; Function Attrs: inlinehint mustprogress nounwind uwtable
declare dso_local noundef double @_ZN9benchmark21GetTimeUnitMultiplierENS_8TimeUnitE(i32 noundef) local_unnamed_addr #7

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

; Function Attrs: inlinehint mustprogress nounwind uwtable
declare dso_local void @_ZN9benchmark17BenchmarkReporter3RunD2Ev(ptr noundef nonnull align 8 dereferenceable(592)) unnamed_addr #7 align 2

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

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

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

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

attributes #0 = { mustprogress nocallback nofree nosync nounwind willreturn memory(argmem: readwrite) }
attributes #1 = { mustprogress uwtable "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }
attributes #2 = { mustprogress 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 #3 = { inlinehint mustprogress uwtable "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }
attributes #4 = { mustprogress noreturn uwtable "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }
attributes #5 = { noinline noreturn nounwind uwtable "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }
attributes #6 = { mustprogress nocallback nofree nounwind willreturn memory(argmem: readwrite) }
attributes #7 = { 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 #8 = { nounwind }
attributes #9 = { noreturn }
attributes #10 = { noreturn 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, !20, i64 460}
!6 = !{!"_ZTSN9benchmark17BenchmarkReporter3RunE", !7, i64 0, !13, i64 256, !13, i64 264, !14, i64 272, !8, i64 280, !15, i64 312, !8, i64 320, !16, i64 352, !8, i64 360, !13, i64 392, !13, i64 400, !13, i64 408, !13, i64 416, !17, i64 424, !18, i64 432, !18, i64 440, !18, i64 448, !19, i64 456, !20, i64 460, !10, i64 464, !13, i64 472, !10, i64 480, !19, i64 488, !19, i64 489, !21, i64 496, !29, i64 544, !18, i64 584}
!7 = !{!"_ZTSN9benchmark13BenchmarkNameE", !8, i64 0, !8, i64 32, !8, i64 64, !8, i64 96, !8, i64 128, !8, i64 160, !8, i64 192, !8, i64 224}
!8 = !{!"_ZTSNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE", !9, i64 0, !13, i64 8, !11, i64 16}
!9 = !{!"_ZTSNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE12_Alloc_hiderE", !10, i64 0}
!10 = !{!"any pointer", !11, i64 0}
!11 = !{!"omnipotent char", !12, i64 0}
!12 = !{!"Simple C++ TBAA"}
!13 = !{!"long", !11, i64 0}
!14 = !{!"_ZTSN9benchmark17BenchmarkReporter3Run7RunTypeE", !11, i64 0}
!15 = !{!"_ZTSN9benchmark13StatisticUnitE", !11, i64 0}
!16 = !{!"_ZTSN9benchmark8internal7SkippedE", !11, i64 0}
!17 = !{!"_ZTSN9benchmark8TimeUnitE", !11, i64 0}
!18 = !{!"double", !11, i64 0}
!19 = !{!"bool", !11, i64 0}
!20 = !{!"_ZTSN9benchmark4BigOE", !11, 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, !13, i64 32}
!27 = !{!"_ZTSSt18_Rb_tree_node_base", !28, i64 0, !10, i64 8, !10, i64 16, !10, i64 24}
!28 = !{!"_ZTSSt14_Rb_tree_color", !11, i64 0}
!29 = !{!"_ZTSN9benchmark13MemoryManager6ResultE", !13, i64 0, !13, i64 8, !13, i64 16, !13, i64 24, !13, i64 32}
!30 = !{!6, !13, i64 472}
!31 = !{!6, !18, i64 432}
!32 = !{!6, !13, i64 392}
!33 = !{!18, !18, i64 0}
!34 = !{!6, !18, i64 440}
!35 = !{!6, !10, i64 464}
!36 = !{i64 0, i64 8, !33, i64 8, i64 8, !33, i64 16, i64 4, !37}
!37 = !{!20, !20, i64 0}
!38 = !{!6, !19, i64 456}
!39 = !{i8 0, i8 2}
!40 = !{}
!41 = !{!6, !13, i64 256}
!42 = !{!6, !13, i64 264}
!43 = !{!6, !14, i64 272}
!44 = !{!6, !13, i64 416}
!45 = !{!6, !13, i64 408}
!46 = !{!6, !13, i64 400}
!47 = !{!6, !15, i64 312}
!48 = !{!49, !18, i64 0}
!49 = !{!"_ZTSN9benchmark7LeastSqE", !18, i64 0, !18, i64 8, !20, i64 16}
!50 = !{!6, !19, i64 488}
!51 = !{!49, !20, i64 16}
!52 = !{!6, !17, i64 424}
!53 = !{!49, !18, i64 8}
!54 = !{!6, !19, i64 489}


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