; LLVM IR from ermig1979/Simd :: src/Test/Test.ll (ZN4Test13MakeAutoTestsERSt6vectorINS_5GroupESaIS1_EERKNS_7OptionsE)

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

%"class.Test::Log" = type { %"class.std::mutex", %"class.std::basic_ofstream", i32, i8, i8, %"class.std::map", %"class.std::map" }
%"class.std::mutex" = type { %"class.std::__mutex_base" }
%"class.std::__mutex_base" = type { %union.pthread_mutex_t }
%union.pthread_mutex_t = type { %struct.__pthread_mutex_s }
%struct.__pthread_mutex_s = type { i32, i32, i32, i32, i32, i16, i16, %struct.__pthread_internal_list }
%struct.__pthread_internal_list = type { ptr, ptr }
%"class.std::basic_ofstream" = type { %"class.std::basic_ostream.base", %"class.std::basic_filebuf", %"class.std::basic_ios" }
%"class.std::basic_ostream.base" = type { ptr }
%"class.std::basic_filebuf" = type { %"class.std::basic_streambuf", %union.pthread_mutex_t, %"class.std::__basic_file", i32, %struct.__mbstate_t, %struct.__mbstate_t, %struct.__mbstate_t, ptr, i64, i8, i8, i8, i8, ptr, ptr, i8, ptr, ptr, i64, ptr, ptr }
%"class.std::basic_streambuf" = type { ptr, ptr, ptr, ptr, ptr, ptr, ptr, %"class.std::locale" }
%"class.std::locale" = type { ptr }
%"class.std::__basic_file" = type <{ ptr, i8, [7 x i8] }>
%struct.__mbstate_t = type { i32, %union.anon.3 }
%union.anon.3 = type { i32 }
%"class.std::basic_ios" = type { %"class.std::ios_base", ptr, i8, i8, ptr, ptr, ptr, ptr }
%"class.std::ios_base" = type { ptr, i64, i64, i32, i32, i32, ptr, %"struct.std::ios_base::_Words", [8 x %"struct.std::ios_base::_Words"], i32, ptr, %"class.std::locale" }
%"struct.std::ios_base::_Words" = type { ptr, i64 }
%"class.std::map" = type { %"class.std::_Rb_tree" }
%"class.std::_Rb_tree" = type { %"struct.std::_Rb_tree<std::thread::id, std::pair<const std::thread::id, std::__cxx11::basic_string<char>>, std::_Select1st<std::pair<const std::thread::id, std::__cxx11::basic_string<char>>>, std::less<std::thread::id>>::_Rb_tree_impl" }
%"struct.std::_Rb_tree<std::thread::id, std::pair<const std::thread::id, std::__cxx11::basic_string<char>>, std::_Select1st<std::pair<const std::thread::id, std::__cxx11::basic_string<char>>>, std::less<std::thread::id>>::_Rb_tree_impl" = type { [8 x i8], %"struct.std::_Rb_tree_header" }
%"struct.std::_Rb_tree_header" = type { %"struct.std::_Rb_tree_node_base", i64 }
%"struct.std::_Rb_tree_node_base" = type { i32, ptr, ptr, ptr }
%"class.std::basic_ostream" = type { ptr, %"class.std::basic_ios" }
%"class.std::__cxx11::basic_string" = type { %"struct.std::__cxx11::basic_string<char>::_Alloc_hider", i64, %union.anon }
%"struct.std::__cxx11::basic_string<char>::_Alloc_hider" = type { ptr }
%union.anon = type { i64, [8 x i8] }
%"class.std::__cxx11::basic_stringstream" = type { %"class.std::basic_iostream.base", %"class.std::__cxx11::basic_stringbuf", %"class.std::basic_ios" }
%"class.std::basic_iostream.base" = type { %"class.std::basic_istream.base", %"class.std::basic_ostream.base" }
%"class.std::basic_istream.base" = type { ptr, i64 }
%"class.std::__cxx11::basic_stringbuf" = type { %"class.std::basic_streambuf", i32, %"class.std::__cxx11::basic_string" }
%"class.std::vector.19" = type { %"struct.std::_Vector_base.20" }
%"struct.std::_Vector_base.20" = type { %"struct.std::_Vector_base<std::shared_ptr<Test::Task>, std::allocator<std::shared_ptr<Test::Task>>>::_Vector_impl" }
%"struct.std::_Vector_base<std::shared_ptr<Test::Task>, std::allocator<std::shared_ptr<Test::Task>>>::_Vector_impl" = type { %"struct.std::_Vector_base<std::shared_ptr<Test::Task>, std::allocator<std::shared_ptr<Test::Task>>>::_Vector_impl_data" }
%"struct.std::_Vector_base<std::shared_ptr<Test::Task>, std::allocator<std::shared_ptr<Test::Task>>>::_Vector_impl_data" = type { ptr, ptr, ptr }
%"class.std::shared_ptr" = type { %"class.std::__shared_ptr" }
%"class.std::__shared_ptr" = type { ptr, %"class.std::__shared_count" }
%"class.std::__shared_count" = type { ptr }
%"struct.std::_Setprecision" = type { i32 }
%"class.Test::Task" = type { ptr, ptr, i64, i64, %"class.std::thread", double }
%"class.std::thread" = type { %"class.std::thread::id" }
%"class.std::thread::id" = type { i64 }
%"class.__gnu_cxx::__normal_iterator" = type { ptr }
%class.anon = type { i8 }
%"struct.Test::Options" = type { %"struct.Test::ArgsParser.base", i32, i8, %"class.std::vector.14", %"class.std::vector.14", %"class.std::__cxx11::basic_string", %"class.std::__cxx11::basic_string", %"class.std::__cxx11::basic_string", %"class.std::__cxx11::basic_string", i64, i64, i64, i64, i8, i8, i8, i8, double }
%"struct.Test::ArgsParser.base" = type <{ i32, [4 x i8], ptr, i8 }>
%"class.std::vector.14" = type { %"struct.std::_Vector_base.15" }
%"struct.std::_Vector_base.15" = type { %"struct.std::_Vector_base<std::__cxx11::basic_string<char>, std::allocator<std::__cxx11::basic_string<char>>>::_Vector_impl" }
%"struct.std::_Vector_base<std::__cxx11::basic_string<char>, std::allocator<std::__cxx11::basic_string<char>>>::_Vector_impl" = type { %"struct.std::_Vector_base<std::__cxx11::basic_string<char>, std::allocator<std::__cxx11::basic_string<char>>>::_Vector_impl_data" }
%"struct.std::_Vector_base<std::__cxx11::basic_string<char>, std::allocator<std::__cxx11::basic_string<char>>>::_Vector_impl_data" = type { ptr, ptr, ptr }
%"struct.Test::Group" = type { %"class.std::__cxx11::basic_string", ptr, ptr, double }

@_ZN4Test3Log5s_logE = external global %"class.Test::Log", align 8
@_ZN4Test4Task9s_stoppedE = external dso_local global i8, align 1
@.str.656 = external hidden unnamed_addr constant [22 x i8], align 1
@_ZSt4cout = external global %"class.std::basic_ostream", align 8
@.str.657 = external hidden unnamed_addr constant [17 x i8], align 1
@.str.658 = external hidden unnamed_addr constant [2 x i8], align 1
@.str.659 = external hidden unnamed_addr constant [37 x i8], align 1
@.str.660 = external hidden unnamed_addr constant [6 x i8], align 1
@.str.661 = external hidden unnamed_addr constant [10 x i8], align 1
@.str.662 = 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

declare i32 @__gxx_personality_v0(...)

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

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

; Function Attrs: mustprogress uwtable
declare void @_ZNSt7__cxx1118basic_stringstreamIcSt11char_traitsIcESaIcEEC1Ev(ptr noundef nonnull align 8 dereferenceable(128)) unnamed_addr #2 align 2

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

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

declare i64 @SimdCpuInfo(i32 noundef) #4

declare void @_ZN4Test3Log5WriteENS0_5LevelERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE(ptr noundef nonnull align 8 dereferenceable(656), i32 noundef, ptr noundef nonnull align 8 dereferenceable(32)) #4

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

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

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

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

; Function Attrs: mustprogress uwtable
define dso_local noundef i32 @_ZN4Test13MakeAutoTestsERSt6vectorINS_5GroupESaIS1_EERKNS_7OptionsE(ptr noundef nonnull align 8 dereferenceable(24) %0, ptr noundef nonnull align 8 dereferenceable(256) %1) #2 personality ptr @__gxx_personality_v0 {
  %3 = alloca i32, align 4
  %4 = alloca ptr, align 8
  %5 = alloca ptr, align 8
  %6 = alloca i64, align 8
  %7 = alloca i64, align 8
  %8 = alloca i64, align 8
  %9 = alloca %"class.std::__cxx11::basic_stringstream", align 8
  %10 = alloca ptr, align 8
  %11 = alloca i32, align 4
  %12 = alloca %"class.std::__cxx11::basic_string", align 8
  %13 = alloca %"class.std::vector.19", align 8
  %14 = alloca i64, align 8
  %15 = alloca i64, align 8
  %16 = alloca i64, align 8
  %17 = alloca i64, align 8
  %18 = alloca %"class.std::shared_ptr", align 8
  %19 = alloca double, align 8
  %20 = alloca double, align 8
  %21 = alloca i64, align 8
  %22 = alloca %"struct.std::_Setprecision", align 4
  %23 = alloca %"class.Test::Task", align 8
  %24 = alloca %"class.std::__cxx11::basic_stringstream", align 8
  %25 = alloca %"class.std::__cxx11::basic_string", align 8
  %26 = alloca %"class.__gnu_cxx::__normal_iterator", align 8
  %27 = alloca %"class.__gnu_cxx::__normal_iterator", align 8
  %28 = alloca %class.anon, align 1
  %29 = alloca i64, align 8
  %30 = alloca %"class.std::__cxx11::basic_stringstream", align 8
  %31 = alloca %"class.std::__cxx11::basic_string", align 8
  %32 = alloca %"class.std::__cxx11::basic_string", align 8
  store ptr %0, ptr %4, align 8, !tbaa !5
  store ptr %1, ptr %5, align 8, !tbaa !5
  %33 = load ptr, ptr %5, align 8, !tbaa !5
  %34 = getelementptr inbounds %"struct.Test::Options", ptr %33, i32 0, i32 12
  %35 = load i64, ptr %34, align 8, !tbaa !9
  %36 = icmp ugt i64 %35, 0
  br i1 %36, label %37, label %220

37:                                               ; preds = %2
  %38 = load ptr, ptr %5, align 8, !tbaa !5
  %39 = getelementptr inbounds %"struct.Test::Options", ptr %38, i32 0, i32 16
  %40 = load i8, ptr %39, align 1, !tbaa !23, !range !24, !noundef !25
  %41 = trunc i8 %40 to i1
  br i1 %41, label %42, label %46

42:                                               ; preds = %37
  %43 = call i64 @SimdCpuInfo(i32 noundef 2)
  %44 = sub i64 %43, 1
  %45 = call noundef zeroext i1 @_ZN4TestL9PinThreadEm(i64 noundef %44)
  br label %46

46:                                               ; preds = %42, %37
  call void @_ZN4Test3Log8SetLevelENS0_5LevelE(ptr noundef nonnull align 8 dereferenceable(656) @_ZN4Test3Log5s_logE, i32 noundef 0)
  call void @llvm.lifetime.start.p0(i64 8, ptr %6) #10
  %47 = load ptr, ptr %5, align 8, !tbaa !5
  %48 = getelementptr inbounds %"struct.Test::Options", ptr %47, i32 0, i32 12
  %49 = load i64, ptr %48, align 8, !tbaa !9
  %50 = load ptr, ptr %4, align 8, !tbaa !5
  %51 = call noundef i64 @_ZNKSt6vectorIN4Test5GroupESaIS1_EE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24) %50) #10
  %52 = call noundef i64 @_ZN4Simd3MinImEET_S1_S1_(i64 noundef %49, i64 noundef %51)
  store i64 %52, ptr %6, align 8, !tbaa !26
  call void @llvm.lifetime.start.p0(i64 8, ptr %7) #10
  %53 = load ptr, ptr %4, align 8, !tbaa !5
  %54 = call noundef i64 @_ZNKSt6vectorIN4Test5GroupESaIS1_EE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24) %53) #10
  store i64 %54, ptr %7, align 8, !tbaa !26
  call void @llvm.lifetime.start.p0(i64 8, ptr %8) #10
  %55 = load i64, ptr %7, align 8, !tbaa !26
  %56 = load i64, ptr %6, align 8, !tbaa !26
  %57 = call noundef i64 @_ZN4Simd5DivHiEmm(i64 noundef %55, i64 noundef %56)
  store i64 %57, ptr %8, align 8, !tbaa !26
  %58 = load i64, ptr %6, align 8, !tbaa !26
  %59 = load i64, ptr %7, align 8, !tbaa !26
  %60 = load i64, ptr %8, align 8, !tbaa !26
  %61 = call noundef i64 @_ZN4Simd5DivHiEmm(i64 noundef %59, i64 noundef %60)
  %62 = call noundef i64 @_ZN4Simd3MinImEET_S1_S1_(i64 noundef %58, i64 noundef %61)
  store i64 %62, ptr %6, align 8, !tbaa !26
  call void @llvm.lifetime.start.p0(i64 392, ptr %9) #10
  call void @_ZNSt7__cxx1118basic_stringstreamIcSt11char_traitsIcESaIcEEC1Ev(ptr noundef nonnull align 8 dereferenceable(128) %9)
  %63 = getelementptr inbounds i8, ptr %9, i64 16
  %64 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) %63, ptr noundef @.str.656)
          to label %65 unwind label %76

65:                                               ; preds = %46
  %66 = load i64, ptr %6, align 8, !tbaa !26
  %67 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEm(ptr noundef nonnull align 8 dereferenceable(8) %64, i64 noundef %66)
          to label %68 unwind label %76

68:                                               ; preds = %65
  call void @llvm.lifetime.start.p0(i64 32, ptr %12) #10
  invoke void @_ZNKSt7__cxx1118basic_stringstreamIcSt11char_traitsIcESaIcEE3strEv(ptr dead_on_unwind writable sret(%"class.std::__cxx11::basic_string") align 8 %12, ptr noundef nonnull align 8 dereferenceable(128) %9)
          to label %69 unwind label %80

69:                                               ; preds = %68
  invoke void @_ZN4Test3Log5WriteENS0_5LevelERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE(ptr noundef nonnull align 8 dereferenceable(656) @_ZN4Test3Log5s_logE, i32 noundef 2, ptr noundef nonnull align 8 dereferenceable(32) %12)
          to label %70 unwind label %84

70:                                               ; preds = %69
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %12) #10
  call void @llvm.lifetime.end.p0(i64 32, ptr %12) #10
  call void @_ZNSt7__cxx1118basic_stringstreamIcSt11char_traitsIcESaIcEED1Ev(ptr noundef nonnull align 8 dereferenceable(128) %9) #10
  call void @llvm.lifetime.end.p0(i64 392, ptr %9) #10
  call void @llvm.lifetime.start.p0(i64 24, ptr %13) #10
  call void @_ZNSt6vectorISt10shared_ptrIN4Test4TaskEESaIS3_EEC2Ev(ptr noundef nonnull align 8 dereferenceable(24) %13) #10
  call void @llvm.lifetime.start.p0(i64 8, ptr %14) #10
  store i64 0, ptr %14, align 8, !tbaa !26
  br label %71

71:                                               ; preds = %114, %70
  %72 = load i64, ptr %14, align 8, !tbaa !26
  %73 = load i64, ptr %6, align 8, !tbaa !26
  %74 = icmp ult i64 %72, %73
  br i1 %74, label %90, label %75

75:                                               ; preds = %71
  call void @llvm.lifetime.end.p0(i64 8, ptr %14) #10
  br label %135

76:                                               ; preds = %65, %46
  %77 = landingpad { ptr, i32 }
          cleanup
  %78 = extractvalue { ptr, i32 } %77, 0
  store ptr %78, ptr %10, align 8
  %79 = extractvalue { ptr, i32 } %77, 1
  store i32 %79, ptr %11, align 4
  br label %89

80:                                               ; preds = %68
  %81 = landingpad { ptr, i32 }
          cleanup
  %82 = extractvalue { ptr, i32 } %81, 0
  store ptr %82, ptr %10, align 8
  %83 = extractvalue { ptr, i32 } %81, 1
  store i32 %83, ptr %11, align 4
  br label %88

84:                                               ; preds = %69
  %85 = landingpad { ptr, i32 }
          cleanup
  %86 = extractvalue { ptr, i32 } %85, 0
  store ptr %86, ptr %10, align 8
  %87 = extractvalue { ptr, i32 } %85, 1
  store i32 %87, ptr %11, align 4
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %12) #10
  br label %88

88:                                               ; preds = %84, %80
  call void @llvm.lifetime.end.p0(i64 32, ptr %12) #10
  br label %89

89:                                               ; preds = %88, %76
  call void @_ZNSt7__cxx1118basic_stringstreamIcSt11char_traitsIcESaIcEED1Ev(ptr noundef nonnull align 8 dereferenceable(128) %9) #10
  call void @llvm.lifetime.end.p0(i64 392, ptr %9) #10
  br label %219

90:                                               ; preds = %71
  call void @llvm.lifetime.start.p0(i64 8, ptr %15) #10
  %91 = load i64, ptr %14, align 8, !tbaa !26
  %92 = load i64, ptr %8, align 8, !tbaa !26
  %93 = mul i64 %91, %92
  store i64 %93, ptr %15, align 8, !tbaa !26
  call void @llvm.lifetime.start.p0(i64 8, ptr %16) #10
  call void @llvm.lifetime.start.p0(i64 8, ptr %17) #10
  %94 = load i64, ptr %15, align 8, !tbaa !26
  %95 = load i64, ptr %8, align 8, !tbaa !26
  %96 = add i64 %94, %95
  store i64 %96, ptr %17, align 8, !tbaa !26
  %97 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZSt3minImERKT_S2_S2_(ptr noundef nonnull align 8 dereferenceable(8) %7, ptr noundef nonnull align 8 dereferenceable(8) %17)
          to label %98 unwind label %117

98:                                               ; preds = %90
  %99 = load i64, ptr %97, align 8, !tbaa !26
  call void @llvm.lifetime.end.p0(i64 8, ptr %17) #10
  store i64 %99, ptr %16, align 8, !tbaa !26
  call void @llvm.lifetime.start.p0(i64 16, ptr %18) #10
  %100 = invoke noalias noundef nonnull ptr @_Znwm(i64 noundef 48) #11
          to label %101 unwind label %121

101:                                              ; preds = %98
  %102 = load ptr, ptr %5, align 8, !tbaa !5
  %103 = load i64, ptr %14, align 8, !tbaa !26
  %104 = load ptr, ptr %4, align 8, !tbaa !5
  %105 = call noundef ptr @_ZNSt6vectorIN4Test5GroupESaIS1_EE4dataEv(ptr noundef nonnull align 8 dereferenceable(24) %104) #10
  %106 = load i64, ptr %15, align 8, !tbaa !26
  %107 = getelementptr inbounds %"struct.Test::Group", ptr %105, i64 %106
  %108 = load i64, ptr %16, align 8, !tbaa !26
  %109 = load i64, ptr %15, align 8, !tbaa !26
  %110 = sub i64 %108, %109
  invoke void @_ZN4Test4TaskC2ERKNS_7OptionsEmPNS_5GroupEmb(ptr noundef nonnull align 8 dereferenceable(48) %100, ptr noundef nonnull align 8 dereferenceable(256) %102, i64 noundef %103, ptr noundef %107, i64 noundef %110, i1 noundef zeroext true)
          to label %111 unwind label %125

111:                                              ; preds = %101
  invoke void @_ZNSt10shared_ptrIN4Test4TaskEEC2IS1_vEEPT_(ptr noundef nonnull align 8 dereferenceable(16) %18, ptr noundef %100)
          to label %112 unwind label %121

112:                                              ; preds = %111
  invoke void @_ZNSt6vectorISt10shared_ptrIN4Test4TaskEESaIS3_EE9push_backEOS3_(ptr noundef nonnull align 8 dereferenceable(24) %13, ptr noundef nonnull align 8 dereferenceable(16) %18)
          to label %113 unwind label %129

113:                                              ; preds = %112
  call void @_ZNSt12__shared_ptrIN4Test4TaskELN9__gnu_cxx12_Lock_policyE2EED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %18) #10
  call void @llvm.lifetime.end.p0(i64 16, ptr %18) #10
  call void @llvm.lifetime.end.p0(i64 8, ptr %16) #10
  call void @llvm.lifetime.end.p0(i64 8, ptr %15) #10
  br label %114

114:                                              ; preds = %113
  %115 = load i64, ptr %14, align 8, !tbaa !26
  %116 = add i64 %115, 1
  store i64 %116, ptr %14, align 8, !tbaa !26
  br label %71, !llvm.loop !27

117:                                              ; preds = %90
  %118 = landingpad { ptr, i32 }
          cleanup
  %119 = extractvalue { ptr, i32 } %118, 0
  store ptr %119, ptr %10, align 8
  %120 = extractvalue { ptr, i32 } %118, 1
  store i32 %120, ptr %11, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %17) #10
  br label %134

121:                                              ; preds = %111, %98
  %122 = landingpad { ptr, i32 }
          cleanup
  %123 = extractvalue { ptr, i32 } %122, 0
  store ptr %123, ptr %10, align 8
  %124 = extractvalue { ptr, i32 } %122, 1
  store i32 %124, ptr %11, align 4
  br label %133

125:                                              ; preds = %101
  %126 = landingpad { ptr, i32 }
          cleanup
  %127 = extractvalue { ptr, i32 } %126, 0
  store ptr %127, ptr %10, align 8
  %128 = extractvalue { ptr, i32 } %126, 1
  store i32 %128, ptr %11, align 4
  call void @_ZdlPvm(ptr noundef %100, i64 noundef 48) #12
  br label %133

129:                                              ; preds = %112
  %130 = landingpad { ptr, i32 }
          cleanup
  %131 = extractvalue { ptr, i32 } %130, 0
  store ptr %131, ptr %10, align 8
  %132 = extractvalue { ptr, i32 } %130, 1
  store i32 %132, ptr %11, align 4
  call void @_ZNSt12__shared_ptrIN4Test4TaskELN9__gnu_cxx12_Lock_policyE2EED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %18) #10
  br label %133

133:                                              ; preds = %129, %125, %121
  call void @llvm.lifetime.end.p0(i64 16, ptr %18) #10
  br label %134

134:                                              ; preds = %133, %117
  call void @llvm.lifetime.end.p0(i64 8, ptr %16) #10
  call void @llvm.lifetime.end.p0(i64 8, ptr %15) #10
  call void @llvm.lifetime.end.p0(i64 8, ptr %14) #10
  br label %218

135:                                              ; preds = %75
  %136 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEPFRSoS_E(ptr noundef nonnull align 8 dereferenceable(8) @_ZSt4cout, ptr noundef @_ZSt4endlIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_)
          to label %137 unwind label %144

137:                                              ; preds = %135
  call void @llvm.lifetime.start.p0(i64 8, ptr %19) #10
  call void @llvm.lifetime.start.p0(i64 8, ptr %20) #10
  store double -1.000000e+00, ptr %20, align 8, !tbaa !29
  br label %138

138:                                              ; preds = %205, %137
  store double 0.000000e+00, ptr %19, align 8, !tbaa !29
  call void @llvm.lifetime.start.p0(i64 8, ptr %21) #10
  store i64 0, ptr %21, align 8, !tbaa !26
  br label %139

139:                                              ; preds = %156, %138
  %140 = load i64, ptr %21, align 8, !tbaa !26
  %141 = call noundef i64 @_ZNKSt6vectorISt10shared_ptrIN4Test4TaskEESaIS3_EE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24) %13) #10
  %142 = icmp ult i64 %140, %141
  br i1 %142, label %148, label %143

143:                                              ; preds = %139
  call void @llvm.lifetime.end.p0(i64 8, ptr %21) #10
  br label %163

144:                                              ; preds = %135
  %145 = landingpad { ptr, i32 }
          cleanup
  %146 = extractvalue { ptr, i32 } %145, 0
  store ptr %146, ptr %10, align 8
  %147 = extractvalue { ptr, i32 } %145, 1
  store i32 %147, ptr %11, align 4
  br label %218

148:                                              ; preds = %139
  %149 = load i64, ptr %21, align 8, !tbaa !26
  %150 = call noundef nonnull align 8 dereferenceable(16) ptr @_ZNSt6vectorISt10shared_ptrIN4Test4TaskEESaIS3_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %13, i64 noundef %149) #10
  %151 = call noundef ptr @_ZNKSt19__shared_ptr_accessIN4Test4TaskELN9__gnu_cxx12_Lock_policyE2ELb0ELb0EEptEv(ptr noundef nonnull align 1 dereferenceable(1) %150) #10
  %152 = invoke noundef double @_ZNK4Test4Task8ProgressEv(ptr noundef nonnull align 8 dereferenceable(48) %151)
          to label %153 unwind label %159

153:                                              ; preds = %148
  %154 = load double, ptr %19, align 8, !tbaa !29
  %155 = fadd double %154, %152
  store double %155, ptr %19, align 8, !tbaa !29
  br label %156

156:                                              ; preds = %153
  %157 = load i64, ptr %21, align 8, !tbaa !26
  %158 = add i64 %157, 1
  store i64 %158, ptr %21, align 8, !tbaa !26
  br label %139, !llvm.loop !30

159:                                              ; preds = %148
  %160 = landingpad { ptr, i32 }
          cleanup
  %161 = extractvalue { ptr, i32 } %160, 0
  store ptr %161, ptr %10, align 8
  %162 = extractvalue { ptr, i32 } %160, 1
  store i32 %162, ptr %11, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %21) #10
  br label %217

163:                                              ; preds = %143
  %164 = call noundef i64 @_ZNKSt6vectorISt10shared_ptrIN4Test4TaskEESaIS3_EE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24) %13) #10
  %165 = uitofp i64 %164 to double
  %166 = load double, ptr %19, align 8, !tbaa !29
  %167 = fdiv double %166, %165
  store double %167, ptr %19, align 8, !tbaa !29
  %168 = load double, ptr %19, align 8, !tbaa !29
  %169 = load double, ptr %20, align 8, !tbaa !29
  %170 = fcmp ogt double %168, %169
  br i1 %170, label %171, label %196

171:                                              ; preds = %163
  %172 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) @_ZSt4cout, ptr noundef @.str.657)
          to label %173 unwind label %192

173:                                              ; preds = %171
  %174 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEPFRSt8ios_baseS0_E(ptr noundef nonnull align 8 dereferenceable(8) %172, ptr noundef @_ZSt5fixedRSt8ios_base)
          to label %175 unwind label %192

175:                                              ; preds = %173
  %176 = invoke i32 @_ZSt12setprecisioni(i32 noundef 1)
          to label %177 unwind label %192

177:                                              ; preds = %175
  %178 = getelementptr inbounds %"struct.std::_Setprecision", ptr %22, i32 0, i32 0
  store i32 %176, ptr %178, align 4
  %179 = getelementptr inbounds %"struct.std::_Setprecision", ptr %22, i32 0, i32 0
  %180 = load i32, ptr %179, align 4
  %181 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_St13_Setprecision(ptr noundef nonnull align 8 dereferenceable(8) %174, i32 %180)
          to label %182 unwind label %192

182:                                              ; preds = %177
  %183 = load double, ptr %19, align 8, !tbaa !29
  %184 = fmul double %183, 1.000000e+02
  %185 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEd(ptr noundef nonnull align 8 dereferenceable(8) %181, double noundef %184)
          to label %186 unwind label %192

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

188:                                              ; preds = %186
  %189 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEPFRSoS_E(ptr noundef nonnull align 8 dereferenceable(8) %187, ptr noundef @_ZSt5flushIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_)
          to label %190 unwind label %192

190:                                              ; preds = %188
  %191 = load double, ptr %19, align 8, !tbaa !29
  store double %191, ptr %20, align 8, !tbaa !29
  br label %196

192:                                              ; preds = %214, %209, %207, %196, %188, %186, %182, %177, %175, %173, %171
  %193 = landingpad { ptr, i32 }
          cleanup
  %194 = extractvalue { ptr, i32 } %193, 0
  store ptr %194, ptr %10, align 8
  %195 = extractvalue { ptr, i32 } %193, 1
  store i32 %195, ptr %11, align 4
  br label %217

196:                                              ; preds = %190, %163
  invoke void @_ZN4Test5SleepEj(i32 noundef 40)
          to label %197 unwind label %192

197:                                              ; preds = %196
  br label %198

198:                                              ; preds = %197
  %199 = load double, ptr %19, align 8, !tbaa !29
  %200 = fcmp olt double %199, 1.000000e+00
  br i1 %200, label %201, label %205

201:                                              ; preds = %198
  %202 = load volatile i8, ptr @_ZN4Test4Task9s_stoppedE, align 1, !tbaa !31, !range !24, !noundef !25
  %203 = trunc i8 %202 to i1
  %204 = xor i1 %203, true
  br label %205

205:                                              ; preds = %201, %198
  %206 = phi i1 [ false, %198 ], [ %204, %201 ]
  br i1 %206, label %138, label %207, !llvm.loop !32

207:                                              ; preds = %205
  %208 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEPFRSoS_E(ptr noundef nonnull align 8 dereferenceable(8) @_ZSt4cout, ptr noundef @_ZSt4endlIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_)
          to label %209 unwind label %192

209:                                              ; preds = %207
  %210 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEPFRSoS_E(ptr noundef nonnull align 8 dereferenceable(8) %208, ptr noundef @_ZSt4endlIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_)
          to label %211 unwind label %192

211:                                              ; preds = %209
  %212 = load volatile i8, ptr @_ZN4Test4Task9s_stoppedE, align 1, !tbaa !31, !range !24, !noundef !25
  %213 = trunc i8 %212 to i1
  br i1 %213, label %216, label %214

214:                                              ; preds = %211
  invoke void @_ZN4Test3Log8SetLevelENS0_5LevelE(ptr noundef nonnull align 8 dereferenceable(656) @_ZN4Test3Log5s_logE, i32 noundef 2)
          to label %215 unwind label %192

215:                                              ; preds = %214
  br label %216

216:                                              ; preds = %215, %211
  call void @llvm.lifetime.end.p0(i64 8, ptr %20) #10
  call void @llvm.lifetime.end.p0(i64 8, ptr %19) #10
  call void @_ZNSt6vectorISt10shared_ptrIN4Test4TaskEESaIS3_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %13) #10
  call void @llvm.lifetime.end.p0(i64 24, ptr %13) #10
  call void @llvm.lifetime.end.p0(i64 8, ptr %8) #10
  call void @llvm.lifetime.end.p0(i64 8, ptr %7) #10
  call void @llvm.lifetime.end.p0(i64 8, ptr %6) #10
  br label %231

217:                                              ; preds = %192, %159
  call void @llvm.lifetime.end.p0(i64 8, ptr %20) #10
  call void @llvm.lifetime.end.p0(i64 8, ptr %19) #10
  br label %218

218:                                              ; preds = %217, %144, %134
  call void @_ZNSt6vectorISt10shared_ptrIN4Test4TaskEESaIS3_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %13) #10
  call void @llvm.lifetime.end.p0(i64 24, ptr %13) #10
  br label %219

219:                                              ; preds = %218, %89
  call void @llvm.lifetime.end.p0(i64 8, ptr %8) #10
  call void @llvm.lifetime.end.p0(i64 8, ptr %7) #10
  call void @llvm.lifetime.end.p0(i64 8, ptr %6) #10
  br label %344

220:                                              ; preds = %2
  call void @llvm.lifetime.start.p0(i64 48, ptr %23) #10
  %221 = load ptr, ptr %5, align 8, !tbaa !5
  %222 = load ptr, ptr %4, align 8, !tbaa !5
  %223 = call noundef ptr @_ZNSt6vectorIN4Test5GroupESaIS1_EE4dataEv(ptr noundef nonnull align 8 dereferenceable(24) %222) #10
  %224 = load ptr, ptr %4, align 8, !tbaa !5
  %225 = call noundef i64 @_ZNKSt6vectorIN4Test5GroupESaIS1_EE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24) %224) #10
  call void @_ZN4Test4TaskC2ERKNS_7OptionsEmPNS_5GroupEmb(ptr noundef nonnull align 8 dereferenceable(48) %23, ptr noundef nonnull align 8 dereferenceable(256) %221, i64 noundef 0, ptr noundef %223, i64 noundef %225, i1 noundef zeroext false)
  invoke void @_ZN4Test4Task3RunEv(ptr noundef nonnull align 8 dereferenceable(48) %23)
          to label %226 unwind label %227

226:                                              ; preds = %220
  call void @_ZN4Test4TaskD2Ev(ptr noundef nonnull align 8 dereferenceable(48) %23) #10
  call void @llvm.lifetime.end.p0(i64 48, ptr %23) #10
  br label %231

227:                                              ; preds = %220
  %228 = landingpad { ptr, i32 }
          cleanup
  %229 = extractvalue { ptr, i32 } %228, 0
  store ptr %229, ptr %10, align 8
  %230 = extractvalue { ptr, i32 } %228, 1
  store i32 %230, ptr %11, align 4
  call void @_ZN4Test4TaskD2Ev(ptr noundef nonnull align 8 dereferenceable(48) %23) #10
  call void @llvm.lifetime.end.p0(i64 48, ptr %23) #10
  br label %344

231:                                              ; preds = %226, %216
  %232 = load volatile i8, ptr @_ZN4Test4Task9s_stoppedE, align 1, !tbaa !31, !range !24, !noundef !25
  %233 = trunc i8 %232 to i1
  br i1 %233, label %234, label %235

234:                                              ; preds = %231
  store i32 1, ptr %3, align 4
  br label %342

235:                                              ; preds = %231
  call void @llvm.lifetime.start.p0(i64 392, ptr %24) #10
  call void @_ZNSt7__cxx1118basic_stringstreamIcSt11char_traitsIcESaIcEEC1Ev(ptr noundef nonnull align 8 dereferenceable(128) %24)
  %236 = getelementptr inbounds i8, ptr %24, i64 16
  %237 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) %236, ptr noundef @.str.659)
          to label %238 unwind label %264

238:                                              ; preds = %235
  %239 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEPFRSoS_E(ptr noundef nonnull align 8 dereferenceable(8) %237, ptr noundef @_ZSt4endlIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_)
          to label %240 unwind label %264

240:                                              ; preds = %238
  call void @llvm.lifetime.start.p0(i64 32, ptr %25) #10
  invoke void @_ZNKSt7__cxx1118basic_stringstreamIcSt11char_traitsIcESaIcEE3strEv(ptr dead_on_unwind writable sret(%"class.std::__cxx11::basic_string") align 8 %25, ptr noundef nonnull align 8 dereferenceable(128) %24)
          to label %241 unwind label %268

241:                                              ; preds = %240
  invoke void @_ZN4Test3Log5WriteENS0_5LevelERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE(ptr noundef nonnull align 8 dereferenceable(656) @_ZN4Test3Log5s_logE, i32 noundef 2, ptr noundef nonnull align 8 dereferenceable(32) %25)
          to label %242 unwind label %272

242:                                              ; preds = %241
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %25) #10
  call void @llvm.lifetime.end.p0(i64 32, ptr %25) #10
  call void @_ZNSt7__cxx1118basic_stringstreamIcSt11char_traitsIcESaIcEED1Ev(ptr noundef nonnull align 8 dereferenceable(128) %24) #10
  call void @llvm.lifetime.end.p0(i64 392, ptr %24) #10
  %243 = load ptr, ptr %5, align 8, !tbaa !5
  %244 = getelementptr inbounds %"struct.Test::Options", ptr %243, i32 0, i32 11
  %245 = load i64, ptr %244, align 8, !tbaa !33
  %246 = icmp ne i64 %245, 0
  br i1 %246, label %247, label %341

247:                                              ; preds = %242
  %248 = load ptr, ptr %4, align 8, !tbaa !5
  %249 = call ptr @_ZNSt6vectorIN4Test5GroupESaIS1_EE5beginEv(ptr noundef nonnull align 8 dereferenceable(24) %248) #10
  %250 = getelementptr inbounds %"class.__gnu_cxx::__normal_iterator", ptr %26, i32 0, i32 0
  store ptr %249, ptr %250, align 8
  %251 = load ptr, ptr %4, align 8, !tbaa !5
  %252 = call ptr @_ZNSt6vectorIN4Test5GroupESaIS1_EE3endEv(ptr noundef nonnull align 8 dereferenceable(24) %251) #10
  %253 = getelementptr inbounds %"class.__gnu_cxx::__normal_iterator", ptr %27, i32 0, i32 0
  store ptr %252, ptr %253, align 8
  %254 = getelementptr inbounds %"class.__gnu_cxx::__normal_iterator", ptr %26, i32 0, i32 0
  %255 = load ptr, ptr %254, align 8
  %256 = getelementptr inbounds %"class.__gnu_cxx::__normal_iterator", ptr %27, i32 0, i32 0
  %257 = load ptr, ptr %256, align 8
  call void @"_ZSt4sortIN9__gnu_cxx17__normal_iteratorIPN4Test5GroupESt6vectorIS3_SaIS3_EEEEZNS2_13MakeAutoTestsERS7_RKNS2_7OptionsEE3$_0EvT_SE_T0_"(ptr %255, ptr %257)
  call void @llvm.lifetime.start.p0(i64 8, ptr %29) #10
  store i64 0, ptr %29, align 8, !tbaa !26
  br label %258

258:                                              ; preds = %337, %247
  %259 = load i64, ptr %29, align 8, !tbaa !26
  %260 = load ptr, ptr %4, align 8, !tbaa !5
  %261 = call noundef i64 @_ZNKSt6vectorIN4Test5GroupESaIS1_EE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24) %260) #10
  %262 = icmp ult i64 %259, %261
  br i1 %262, label %278, label %263

263:                                              ; preds = %258
  call void @llvm.lifetime.end.p0(i64 8, ptr %29) #10
  br label %340

264:                                              ; preds = %238, %235
  %265 = landingpad { ptr, i32 }
          cleanup
  %266 = extractvalue { ptr, i32 } %265, 0
  store ptr %266, ptr %10, align 8
  %267 = extractvalue { ptr, i32 } %265, 1
  store i32 %267, ptr %11, align 4
  br label %277

268:                                              ; preds = %240
  %269 = landingpad { ptr, i32 }
          cleanup
  %270 = extractvalue { ptr, i32 } %269, 0
  store ptr %270, ptr %10, align 8
  %271 = extractvalue { ptr, i32 } %269, 1
  store i32 %271, ptr %11, align 4
  br label %276

272:                                              ; preds = %241
  %273 = landingpad { ptr, i32 }
          cleanup
  %274 = extractvalue { ptr, i32 } %273, 0
  store ptr %274, ptr %10, align 8
  %275 = extractvalue { ptr, i32 } %273, 1
  store i32 %275, ptr %11, align 4
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %25) #10
  br label %276

276:                                              ; preds = %272, %268
  call void @llvm.lifetime.end.p0(i64 32, ptr %25) #10
  br label %277

277:                                              ; preds = %276, %264
  call void @_ZNSt7__cxx1118basic_stringstreamIcSt11char_traitsIcESaIcEED1Ev(ptr noundef nonnull align 8 dereferenceable(128) %24) #10
  call void @llvm.lifetime.end.p0(i64 392, ptr %24) #10
  br label %344

278:                                              ; preds = %258
  %279 = load ptr, ptr %4, align 8, !tbaa !5
  %280 = load i64, ptr %29, align 8, !tbaa !26
  %281 = call noundef nonnull align 8 dereferenceable(56) ptr @_ZNSt6vectorIN4Test5GroupESaIS1_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %279, i64 noundef %280) #10
  %282 = getelementptr inbounds %"struct.Test::Group", ptr %281, i32 0, i32 3
  %283 = load double, ptr %282, align 8, !tbaa !34
  %284 = load ptr, ptr %5, align 8, !tbaa !5
  %285 = getelementptr inbounds %"struct.Test::Options", ptr %284, i32 0, i32 11
  %286 = load i64, ptr %285, align 8, !tbaa !33
  %287 = uitofp i64 %286 to double
  %288 = fcmp oge double %283, %287
  br i1 %288, label %289, label %336

289:                                              ; preds = %278
  call void @llvm.lifetime.start.p0(i64 392, ptr %30) #10
  call void @_ZNSt7__cxx1118basic_stringstreamIcSt11char_traitsIcESaIcEEC1Ev(ptr noundef nonnull align 8 dereferenceable(128) %30)
  %290 = getelementptr inbounds i8, ptr %30, i64 16
  %291 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) %290, ptr noundef @.str.660)
          to label %292 unwind label %313

292:                                              ; preds = %289
  %293 = load ptr, ptr %4, align 8, !tbaa !5
  %294 = load i64, ptr %29, align 8, !tbaa !26
  %295 = call noundef nonnull align 8 dereferenceable(56) ptr @_ZNSt6vectorIN4Test5GroupESaIS1_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %293, i64 noundef %294) #10
  %296 = getelementptr inbounds %"struct.Test::Group", ptr %295, i32 0, i32 0
  %297 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsIcSt11char_traitsIcESaIcEERSt13basic_ostreamIT_T0_ES7_RKNSt7__cxx1112basic_stringIS4_S5_T1_EE(ptr noundef nonnull align 8 dereferenceable(8) %291, ptr noundef nonnull align 8 dereferenceable(32) %296)
          to label %298 unwind label %313

298:                                              ; preds = %292
  %299 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) %297, ptr noundef @.str.661)
          to label %300 unwind label %313

300:                                              ; preds = %298
  call void @llvm.lifetime.start.p0(i64 32, ptr %31) #10
  %301 = load ptr, ptr %4, align 8, !tbaa !5
  %302 = load i64, ptr %29, align 8, !tbaa !26
  %303 = call noundef nonnull align 8 dereferenceable(56) ptr @_ZNSt6vectorIN4Test5GroupESaIS1_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %301, i64 noundef %302) #10
  %304 = getelementptr inbounds %"struct.Test::Group", ptr %303, i32 0, i32 3
  %305 = load double, ptr %304, align 8, !tbaa !34
  invoke void @_ZN4Test8ToStringB5cxx11Edib(ptr dead_on_unwind writable sret(%"class.std::__cxx11::basic_string") align 8 %31, double noundef %305, i32 noundef 1, i1 noundef zeroext false)
          to label %306 unwind label %317

306:                                              ; preds = %300
  %307 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsIcSt11char_traitsIcESaIcEERSt13basic_ostreamIT_T0_ES7_RKNSt7__cxx1112basic_stringIS4_S5_T1_EE(ptr noundef nonnull align 8 dereferenceable(8) %299, ptr noundef nonnull align 8 dereferenceable(32) %31)
          to label %308 unwind label %321

308:                                              ; preds = %306
  %309 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) %307, ptr noundef @.str.662)
          to label %310 unwind label %321

310:                                              ; preds = %308
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %31) #10
  call void @llvm.lifetime.end.p0(i64 32, ptr %31) #10
  call void @llvm.lifetime.start.p0(i64 32, ptr %32) #10
  invoke void @_ZNKSt7__cxx1118basic_stringstreamIcSt11char_traitsIcESaIcEE3strEv(ptr dead_on_unwind writable sret(%"class.std::__cxx11::basic_string") align 8 %32, ptr noundef nonnull align 8 dereferenceable(128) %30)
          to label %311 unwind label %326

311:                                              ; preds = %310
  invoke void @_ZN4Test3Log5WriteENS0_5LevelERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE(ptr noundef nonnull align 8 dereferenceable(656) @_ZN4Test3Log5s_logE, i32 noundef 2, ptr noundef nonnull align 8 dereferenceable(32) %32)
          to label %312 unwind label %330

312:                                              ; preds = %311
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %32) #10
  call void @llvm.lifetime.end.p0(i64 32, ptr %32) #10
  call void @_ZNSt7__cxx1118basic_stringstreamIcSt11char_traitsIcESaIcEED1Ev(ptr noundef nonnull align 8 dereferenceable(128) %30) #10
  call void @llvm.lifetime.end.p0(i64 392, ptr %30) #10
  br label %336

313:                                              ; preds = %298, %292, %289
  %314 = landingpad { ptr, i32 }
          cleanup
  %315 = extractvalue { ptr, i32 } %314, 0
  store ptr %315, ptr %10, align 8
  %316 = extractvalue { ptr, i32 } %314, 1
  store i32 %316, ptr %11, align 4
  br label %335

317:                                              ; preds = %300
  %318 = landingpad { ptr, i32 }
          cleanup
  %319 = extractvalue { ptr, i32 } %318, 0
  store ptr %319, ptr %10, align 8
  %320 = extractvalue { ptr, i32 } %318, 1
  store i32 %320, ptr %11, align 4
  br label %325

321:                                              ; preds = %308, %306
  %322 = landingpad { ptr, i32 }
          cleanup
  %323 = extractvalue { ptr, i32 } %322, 0
  store ptr %323, ptr %10, align 8
  %324 = extractvalue { ptr, i32 } %322, 1
  store i32 %324, ptr %11, align 4
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %31) #10
  br label %325

325:                                              ; preds = %321, %317
  call void @llvm.lifetime.end.p0(i64 32, ptr %31) #10
  br label %335

326:                                              ; preds = %310
  %327 = landingpad { ptr, i32 }
          cleanup
  %328 = extractvalue { ptr, i32 } %327, 0
  store ptr %328, ptr %10, align 8
  %329 = extractvalue { ptr, i32 } %327, 1
  store i32 %329, ptr %11, align 4
  br label %334

330:                                              ; preds = %311
  %331 = landingpad { ptr, i32 }
          cleanup
  %332 = extractvalue { ptr, i32 } %331, 0
  store ptr %332, ptr %10, align 8
  %333 = extractvalue { ptr, i32 } %331, 1
  store i32 %333, ptr %11, align 4
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %32) #10
  br label %334

334:                                              ; preds = %330, %326
  call void @llvm.lifetime.end.p0(i64 32, ptr %32) #10
  br label %335

335:                                              ; preds = %334, %325, %313
  call void @_ZNSt7__cxx1118basic_stringstreamIcSt11char_traitsIcESaIcEED1Ev(ptr noundef nonnull align 8 dereferenceable(128) %30) #10
  call void @llvm.lifetime.end.p0(i64 392, ptr %30) #10
  call void @llvm.lifetime.end.p0(i64 8, ptr %29) #10
  br label %344

336:                                              ; preds = %312, %278
  br label %337

337:                                              ; preds = %336
  %338 = load i64, ptr %29, align 8, !tbaa !26
  %339 = add i64 %338, 1
  store i64 %339, ptr %29, align 8, !tbaa !26
  br label %258, !llvm.loop !36

340:                                              ; preds = %263
  br label %341

341:                                              ; preds = %340, %242
  store i32 0, ptr %3, align 4
  br label %342

342:                                              ; preds = %341, %234
  %343 = load i32, ptr %3, align 4
  ret i32 %343

344:                                              ; preds = %335, %277, %227, %219
  %345 = load ptr, ptr %10, align 8
  %346 = load i32, ptr %11, align 4
  %347 = insertvalue { ptr, i32 } poison, ptr %345, 0
  %348 = insertvalue { ptr, i32 } %347, i32 %346, 1
  resume { ptr, i32 } %348
}

; Function Attrs: mustprogress uwtable
declare hidden noundef zeroext i1 @_ZN4TestL9PinThreadEm(i64 noundef) #2

declare void @_ZN4Test3Log8SetLevelENS0_5LevelE(ptr noundef nonnull align 8 dereferenceable(656), i32 noundef) #4

; Function Attrs: alwaysinline mustprogress nounwind uwtable
declare dso_local noundef i64 @_ZN4Simd3MinImEET_S1_S1_(i64 noundef, i64 noundef) #5

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

; Function Attrs: alwaysinline mustprogress nounwind uwtable
declare dso_local noundef i64 @_ZN4Simd5DivHiEmm(i64 noundef, i64 noundef) #5

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

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

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

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

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

; Function Attrs: mustprogress uwtable
declare dso_local void @_ZN4Test4TaskC2ERKNS_7OptionsEmPNS_5GroupEmb(ptr noundef nonnull align 8 dereferenceable(48), ptr noundef nonnull align 8 dereferenceable(256), i64 noundef, ptr noundef, i64 noundef, i1 noundef zeroext) unnamed_addr #2 align 2

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

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

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

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

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

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

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

; Function Attrs: inlinehint mustprogress uwtable
declare noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_St13_Setprecision(ptr noundef nonnull align 8 dereferenceable(8), i32) #3

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

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

; Function Attrs: inlinehint mustprogress nounwind uwtable
declare dso_local i32 @_ZSt12setprecisioni(i32 noundef) #6

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

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

; Function Attrs: inlinehint mustprogress uwtable
declare dso_local void @_ZN4Test5SleepEj(i32 noundef) #3

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

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

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

; Function Attrs: inlinehint mustprogress uwtable
declare hidden void @"_ZSt4sortIN9__gnu_cxx17__normal_iteratorIPN4Test5GroupESt6vectorIS3_SaIS3_EEEEZNS2_13MakeAutoTestsERS7_RKNS2_7OptionsEE3$_0EvT_SE_T0_"(ptr, ptr) #3

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

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

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

; Function Attrs: inlinehint mustprogress uwtable
declare noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsIcSt11char_traitsIcESaIcEERSt13basic_ostreamIT_T0_ES7_RKNSt7__cxx1112basic_stringIS4_S5_T1_EE(ptr noundef nonnull align 8 dereferenceable(8), ptr noundef nonnull align 8 dereferenceable(32)) #3

; Function Attrs: alwaysinline mustprogress uwtable
declare dso_local void @_ZN4Test8ToStringB5cxx11Edib(ptr dead_on_unwind noalias writable sret(%"class.std::__cxx11::basic_string") align 8, double noundef, i32 noundef, i1 noundef zeroext) #9

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

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

!0 = !{i32 1, !"wchar_size", i32 4}
!1 = !{i32 8, !"PIC Level", i32 2}
!2 = !{i32 7, !"PIE Level", i32 2}
!3 = !{i32 7, !"uwtable", i32 2}
!4 = !{!"clang version 19.1.0 (git@github.com:llvm/llvm-project.git a4bf6cd7cfb1a1421ba92bca9d017b49936c55e4)"}
!5 = !{!6, !6, i64 0}
!6 = !{!"any pointer", !7, i64 0}
!7 = !{!"omnipotent char", !8, i64 0}
!8 = !{!"Simple C++ TBAA"}
!9 = !{!10, !21, i64 232}
!10 = !{!"_ZTSN4Test7OptionsE", !11, i64 0, !14, i64 20, !13, i64 24, !15, i64 32, !15, i64 56, !19, i64 80, !19, i64 112, !19, i64 144, !19, i64 176, !21, i64 208, !21, i64 216, !21, i64 224, !21, i64 232, !13, i64 240, !13, i64 241, !13, i64 242, !13, i64 243, !22, i64 248}
!11 = !{!"_ZTSN4Test10ArgsParserE", !12, i64 0, !6, i64 8, !13, i64 16}
!12 = !{!"int", !7, i64 0}
!13 = !{!"bool", !7, i64 0}
!14 = !{!"_ZTSN4Test7Options4ModeE", !7, i64 0}
!15 = !{!"_ZTSSt6vectorINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESaIS5_EE", !16, i64 0}
!16 = !{!"_ZTSSt12_Vector_baseINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESaIS5_EE", !17, i64 0}
!17 = !{!"_ZTSNSt12_Vector_baseINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESaIS5_EE12_Vector_implE", !18, i64 0}
!18 = !{!"_ZTSNSt12_Vector_baseINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESaIS5_EE17_Vector_impl_dataE", !6, i64 0, !6, i64 8, !6, i64 16}
!19 = !{!"_ZTSNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE", !20, i64 0, !21, i64 8, !7, i64 16}
!20 = !{!"_ZTSNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE12_Alloc_hiderE", !6, i64 0}
!21 = !{!"long", !7, i64 0}
!22 = !{!"double", !7, i64 0}
!23 = !{!10, !13, i64 243}
!24 = !{i8 0, i8 2}
!25 = !{}
!26 = !{!21, !21, i64 0}
!27 = distinct !{!27, !28}
!28 = !{!"llvm.loop.mustprogress"}
!29 = !{!22, !22, i64 0}
!30 = distinct !{!30, !28}
!31 = !{!13, !13, i64 0}
!32 = distinct !{!32, !28}
!33 = !{!10, !21, i64 224}
!34 = !{!35, !22, i64 48}
!35 = !{!"_ZTSN4Test5GroupE", !19, i64 0, !6, i64 32, !6, i64 40, !22, i64 48}
!36 = distinct !{!36, !28}


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

%"class.Test::Log" = type { %"class.std::mutex", %"class.std::basic_ofstream", i32, i8, i8, %"class.std::map", %"class.std::map" }
%"class.std::mutex" = type { %"class.std::__mutex_base" }
%"class.std::__mutex_base" = type { %union.pthread_mutex_t }
%union.pthread_mutex_t = type { %struct.__pthread_mutex_s }
%struct.__pthread_mutex_s = type { i32, i32, i32, i32, i32, i16, i16, %struct.__pthread_internal_list }
%struct.__pthread_internal_list = type { ptr, ptr }
%"class.std::basic_ofstream" = type { %"class.std::basic_ostream.base", %"class.std::basic_filebuf", %"class.std::basic_ios" }
%"class.std::basic_ostream.base" = type { ptr }
%"class.std::basic_filebuf" = type { %"class.std::basic_streambuf", %union.pthread_mutex_t, %"class.std::__basic_file", i32, %struct.__mbstate_t, %struct.__mbstate_t, %struct.__mbstate_t, ptr, i64, i8, i8, i8, i8, ptr, ptr, i8, ptr, ptr, i64, ptr, ptr }
%"class.std::basic_streambuf" = type { ptr, ptr, ptr, ptr, ptr, ptr, ptr, %"class.std::locale" }
%"class.std::locale" = type { ptr }
%"class.std::__basic_file" = type <{ ptr, i8, [7 x i8] }>
%struct.__mbstate_t = type { i32, %union.anon.3 }
%union.anon.3 = type { i32 }
%"class.std::basic_ios" = type { %"class.std::ios_base", ptr, i8, i8, ptr, ptr, ptr, ptr }
%"class.std::ios_base" = type { ptr, i64, i64, i32, i32, i32, ptr, %"struct.std::ios_base::_Words", [8 x %"struct.std::ios_base::_Words"], i32, ptr, %"class.std::locale" }
%"struct.std::ios_base::_Words" = type { ptr, i64 }
%"class.std::map" = type { %"class.std::_Rb_tree" }
%"class.std::_Rb_tree" = type { %"struct.std::_Rb_tree<std::thread::id, std::pair<const std::thread::id, std::__cxx11::basic_string<char>>, std::_Select1st<std::pair<const std::thread::id, std::__cxx11::basic_string<char>>>, std::less<std::thread::id>>::_Rb_tree_impl" }
%"struct.std::_Rb_tree<std::thread::id, std::pair<const std::thread::id, std::__cxx11::basic_string<char>>, std::_Select1st<std::pair<const std::thread::id, std::__cxx11::basic_string<char>>>, std::less<std::thread::id>>::_Rb_tree_impl" = type { [8 x i8], %"struct.std::_Rb_tree_header" }
%"struct.std::_Rb_tree_header" = type { %"struct.std::_Rb_tree_node_base", i64 }
%"struct.std::_Rb_tree_node_base" = type { i32, ptr, ptr, ptr }
%"class.std::basic_ostream" = type { ptr, %"class.std::basic_ios" }
%"class.std::__cxx11::basic_string" = type { %"struct.std::__cxx11::basic_string<char>::_Alloc_hider", i64, %union.anon }
%"struct.std::__cxx11::basic_string<char>::_Alloc_hider" = type { ptr }
%union.anon = type { i64, [8 x i8] }
%"class.std::__cxx11::basic_stringstream" = type { %"class.std::basic_iostream.base", %"class.std::__cxx11::basic_stringbuf", %"class.std::basic_ios" }
%"class.std::basic_iostream.base" = type { %"class.std::basic_istream.base", %"class.std::basic_ostream.base" }
%"class.std::basic_istream.base" = type { ptr, i64 }
%"class.std::__cxx11::basic_stringbuf" = type { %"class.std::basic_streambuf", i32, %"class.std::__cxx11::basic_string" }
%"class.std::vector.19" = type { %"struct.std::_Vector_base.20" }
%"struct.std::_Vector_base.20" = type { %"struct.std::_Vector_base<std::shared_ptr<Test::Task>, std::allocator<std::shared_ptr<Test::Task>>>::_Vector_impl" }
%"struct.std::_Vector_base<std::shared_ptr<Test::Task>, std::allocator<std::shared_ptr<Test::Task>>>::_Vector_impl" = type { %"struct.std::_Vector_base<std::shared_ptr<Test::Task>, std::allocator<std::shared_ptr<Test::Task>>>::_Vector_impl_data" }
%"struct.std::_Vector_base<std::shared_ptr<Test::Task>, std::allocator<std::shared_ptr<Test::Task>>>::_Vector_impl_data" = type { ptr, ptr, ptr }
%"class.std::shared_ptr" = type { %"class.std::__shared_ptr" }
%"class.std::__shared_ptr" = type { ptr, %"class.std::__shared_count" }
%"class.std::__shared_count" = type { ptr }
%"class.Test::Task" = type { ptr, ptr, i64, i64, %"class.std::thread", double }
%"class.std::thread" = type { %"class.std::thread::id" }
%"class.std::thread::id" = type { i64 }
%"struct.Test::Group" = type { %"class.std::__cxx11::basic_string", ptr, ptr, double }

@_ZN4Test3Log5s_logE = external global %"class.Test::Log", align 8
@_ZN4Test4Task9s_stoppedE = external dso_local global i8, align 1
@.str.656 = external hidden unnamed_addr constant [22 x i8], align 1
@_ZSt4cout = external global %"class.std::basic_ostream", align 8
@.str.657 = external hidden unnamed_addr constant [17 x i8], align 1
@.str.658 = external hidden unnamed_addr constant [2 x i8], align 1
@.str.659 = external hidden unnamed_addr constant [37 x i8], align 1
@.str.660 = external hidden unnamed_addr constant [6 x i8], align 1
@.str.661 = external hidden unnamed_addr constant [10 x i8], align 1
@.str.662 = 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

declare i32 @__gxx_personality_v0(...)

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

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

; Function Attrs: mustprogress uwtable
declare void @_ZNSt7__cxx1118basic_stringstreamIcSt11char_traitsIcESaIcEEC1Ev(ptr noundef nonnull align 8 dereferenceable(128)) unnamed_addr #2 align 2

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

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

declare i64 @SimdCpuInfo(i32 noundef) local_unnamed_addr #4

declare void @_ZN4Test3Log5WriteENS0_5LevelERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE(ptr noundef nonnull align 8 dereferenceable(656), i32 noundef, ptr noundef nonnull align 8 dereferenceable(32)) local_unnamed_addr #4

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

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

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

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

; Function Attrs: mustprogress uwtable
define dso_local noundef range(i32 0, 2) i32 @_ZN4Test13MakeAutoTestsERSt6vectorINS_5GroupESaIS1_EERKNS_7OptionsE(ptr noundef nonnull align 8 dereferenceable(24) %0, ptr noundef nonnull align 8 dereferenceable(256) %1) local_unnamed_addr #2 personality ptr @__gxx_personality_v0 {
  %3 = alloca i64, align 8
  %4 = alloca %"class.std::__cxx11::basic_stringstream", align 8
  %5 = alloca %"class.std::__cxx11::basic_string", align 8
  %6 = alloca %"class.std::vector.19", align 8
  %7 = alloca i64, align 8
  %8 = alloca %"class.std::shared_ptr", align 8
  %9 = alloca %"class.Test::Task", align 8
  %10 = alloca %"class.std::__cxx11::basic_stringstream", align 8
  %11 = alloca %"class.std::__cxx11::basic_string", align 8
  %12 = alloca %"class.std::__cxx11::basic_stringstream", align 8
  %13 = alloca %"class.std::__cxx11::basic_string", align 8
  %14 = alloca %"class.std::__cxx11::basic_string", align 8
  %15 = getelementptr inbounds i8, ptr %1, i64 232
  %16 = load i64, ptr %15, align 8, !tbaa !5
  %.not = icmp eq i64 %16, 0
  br i1 %.not, label %113, label %17

17:                                               ; preds = %2
  %18 = getelementptr inbounds i8, ptr %1, i64 243
  %19 = load i8, ptr %18, align 1, !tbaa !22, !range !23, !noundef !24
  %20 = trunc nuw i8 %19 to i1
  br i1 %20, label %21, label %25

21:                                               ; preds = %17
  %22 = tail call i64 @SimdCpuInfo(i32 noundef 2)
  %23 = add i64 %22, -1
  %24 = tail call noundef zeroext i1 @_ZN4TestL9PinThreadEm(i64 noundef %23)
  br label %25

25:                                               ; preds = %21, %17
  tail call void @_ZN4Test3Log8SetLevelENS0_5LevelE(ptr noundef nonnull align 8 dereferenceable(656) @_ZN4Test3Log5s_logE, i32 noundef 0)
  %26 = load i64, ptr %15, align 8, !tbaa !5
  %27 = tail call noundef i64 @_ZNKSt6vectorIN4Test5GroupESaIS1_EE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24) %0) #10
  %28 = tail call noundef i64 @_ZN4Simd3MinImEET_S1_S1_(i64 noundef %26, i64 noundef %27)
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %3) #10
  %29 = tail call noundef i64 @_ZNKSt6vectorIN4Test5GroupESaIS1_EE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24) %0) #10
  store i64 %29, ptr %3, align 8, !tbaa !25
  %30 = tail call noundef i64 @_ZN4Simd5DivHiEmm(i64 noundef %29, i64 noundef %28)
  %31 = tail call noundef i64 @_ZN4Simd5DivHiEmm(i64 noundef %29, i64 noundef %30)
  %32 = tail call noundef i64 @_ZN4Simd3MinImEET_S1_S1_(i64 noundef %28, i64 noundef %31)
  call void @llvm.lifetime.start.p0(i64 392, ptr nonnull %4) #10
  call void @_ZNSt7__cxx1118basic_stringstreamIcSt11char_traitsIcESaIcEEC1Ev(ptr noundef nonnull align 8 dereferenceable(128) %4)
  %33 = getelementptr inbounds i8, ptr %4, i64 16
  %34 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) %33, ptr noundef nonnull @.str.656)
          to label %35 unwind label %41

35:                                               ; preds = %25
  %36 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEm(ptr noundef nonnull align 8 dereferenceable(8) %34, i64 noundef %32)
          to label %37 unwind label %41

37:                                               ; preds = %35
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %5) #10
  invoke void @_ZNKSt7__cxx1118basic_stringstreamIcSt11char_traitsIcESaIcEE3strEv(ptr dead_on_unwind nonnull writable sret(%"class.std::__cxx11::basic_string") align 8 %5, ptr noundef nonnull align 8 dereferenceable(128) %4)
          to label %38 unwind label %43

38:                                               ; preds = %37
  invoke void @_ZN4Test3Log5WriteENS0_5LevelERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE(ptr noundef nonnull align 8 dereferenceable(656) @_ZN4Test3Log5s_logE, i32 noundef 2, ptr noundef nonnull align 8 dereferenceable(32) %5)
          to label %39 unwind label %45

39:                                               ; preds = %38
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %5) #10
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %5) #10
  call void @_ZNSt7__cxx1118basic_stringstreamIcSt11char_traitsIcESaIcEED1Ev(ptr noundef nonnull align 8 dereferenceable(128) %4) #10
  call void @llvm.lifetime.end.p0(i64 392, ptr nonnull %4) #10
  call void @llvm.lifetime.start.p0(i64 24, ptr nonnull %6) #10
  call void @_ZNSt6vectorISt10shared_ptrIN4Test4TaskEESaIS3_EEC2Ev(ptr noundef nonnull align 8 dereferenceable(24) %6) #10
  %.not98 = icmp eq i64 %32, 0
  br i1 %.not98, label %._crit_edge, label %.lr.ph

._crit_edge:                                      ; preds = %60, %39
  %40 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEPFRSoS_E(ptr noundef nonnull align 8 dereferenceable(8) @_ZSt4cout, ptr noundef nonnull @_ZSt4endlIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_)
          to label %.preheader unwind label %74

41:                                               ; preds = %35, %25
  %42 = landingpad { ptr, i32 }
          cleanup
  br label %48

43:                                               ; preds = %37
  %44 = landingpad { ptr, i32 }
          cleanup
  br label %47

45:                                               ; preds = %38
  %46 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %5) #10
  br label %47

47:                                               ; preds = %45, %43
  %.pn = phi { ptr, i32 } [ %46, %45 ], [ %44, %43 ]
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %5) #10
  br label %48

48:                                               ; preds = %47, %41
  %.pn.pn = phi { ptr, i32 } [ %.pn, %47 ], [ %42, %41 ]
  call void @_ZNSt7__cxx1118basic_stringstreamIcSt11char_traitsIcESaIcEED1Ev(ptr noundef nonnull align 8 dereferenceable(128) %4) #10
  call void @llvm.lifetime.end.p0(i64 392, ptr nonnull %4) #10
  br label %112

.lr.ph:                                           ; preds = %39, %60
  %.06989 = phi i64 [ %61, %60 ], [ 0, %39 ]
  %49 = mul i64 %.06989, %30
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %7) #10
  %50 = add i64 %49, %30
  store i64 %50, ptr %7, align 8, !tbaa !25
  %51 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZSt3minImERKT_S2_S2_(ptr noundef nonnull align 8 dereferenceable(8) %3, ptr noundef nonnull align 8 dereferenceable(8) %7)
  %52 = load i64, ptr %51, align 8, !tbaa !25
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %7) #10
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %8) #10
  %53 = invoke noalias noundef nonnull dereferenceable(48) ptr @_Znwm(i64 noundef 48) #11
          to label %54 unwind label %62

54:                                               ; preds = %.lr.ph
  %55 = call noundef ptr @_ZNSt6vectorIN4Test5GroupESaIS1_EE4dataEv(ptr noundef nonnull align 8 dereferenceable(24) %0) #10
  %56 = getelementptr inbounds %"struct.Test::Group", ptr %55, i64 %49
  %57 = sub i64 %52, %49
  invoke void @_ZN4Test4TaskC2ERKNS_7OptionsEmPNS_5GroupEmb(ptr noundef nonnull align 8 dereferenceable(48) %53, ptr noundef nonnull align 8 dereferenceable(256) %1, i64 noundef %.06989, ptr noundef %56, i64 noundef %57, i1 noundef zeroext true)
          to label %58 unwind label %64

58:                                               ; preds = %54
  invoke void @_ZNSt10shared_ptrIN4Test4TaskEEC2IS1_vEEPT_(ptr noundef nonnull align 8 dereferenceable(16) %8, ptr noundef nonnull %53)
          to label %59 unwind label %62

59:                                               ; preds = %58
  invoke void @_ZNSt6vectorISt10shared_ptrIN4Test4TaskEESaIS3_EE9push_backEOS3_(ptr noundef nonnull align 8 dereferenceable(24) %6, ptr noundef nonnull align 8 dereferenceable(16) %8)
          to label %60 unwind label %66

60:                                               ; preds = %59
  call void @_ZNSt12__shared_ptrIN4Test4TaskELN9__gnu_cxx12_Lock_policyE2EED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %8) #10
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %8) #10
  %61 = add nuw i64 %.06989, 1
  %exitcond.not = icmp eq i64 %61, %32
  br i1 %exitcond.not, label %._crit_edge, label %.lr.ph, !llvm.loop !26

62:                                               ; preds = %58, %.lr.ph
  %63 = landingpad { ptr, i32 }
          cleanup
  br label %68

64:                                               ; preds = %54
  %65 = landingpad { ptr, i32 }
          cleanup
  call void @_ZdlPvm(ptr noundef nonnull %53, i64 noundef 48) #12
  br label %68

66:                                               ; preds = %59
  %67 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt12__shared_ptrIN4Test4TaskELN9__gnu_cxx12_Lock_policyE2EED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %8) #10
  br label %68

68:                                               ; preds = %66, %64, %62
  %.pn82 = phi { ptr, i32 } [ %67, %66 ], [ %63, %62 ], [ %65, %64 ]
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %8) #10
  br label %111

.preheader:                                       ; preds = %._crit_edge, %100
  %.055 = phi double [ %.156, %100 ], [ -1.000000e+00, %._crit_edge ]
  %69 = call noundef i64 @_ZNKSt6vectorISt10shared_ptrIN4Test4TaskEESaIS3_EE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24) %6) #10
  %.not99 = icmp eq i64 %69, 0
  br i1 %.not99, label %._crit_edge94, label %.lr.ph93

._crit_edge94:                                    ; preds = %.lr.ph93, %.preheader
  %.057.lcssa = phi double [ 0.000000e+00, %.preheader ], [ %79, %.lr.ph93 ]
  %70 = call noundef i64 @_ZNKSt6vectorISt10shared_ptrIN4Test4TaskEESaIS3_EE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24) %6) #10
  %71 = uitofp i64 %70 to double
  %72 = fdiv double %.057.lcssa, %71
  %73 = fcmp ogt double %72, %.055
  br i1 %73, label %83, label %97

74:                                               ; preds = %._crit_edge
  %75 = landingpad { ptr, i32 }
          cleanup
  br label %111

.lr.ph93:                                         ; preds = %.preheader, %.lr.ph93
  %.05491 = phi i64 [ %80, %.lr.ph93 ], [ 0, %.preheader ]
  %.05790 = phi double [ %79, %.lr.ph93 ], [ 0.000000e+00, %.preheader ]
  %76 = call noundef nonnull align 8 dereferenceable(16) ptr @_ZNSt6vectorISt10shared_ptrIN4Test4TaskEESaIS3_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %6, i64 noundef %.05491) #10
  %77 = call noundef ptr @_ZNKSt19__shared_ptr_accessIN4Test4TaskELN9__gnu_cxx12_Lock_policyE2ELb0ELb0EEptEv(ptr noundef nonnull align 1 dereferenceable(1) %76) #10
  %78 = call noundef double @_ZNK4Test4Task8ProgressEv(ptr noundef nonnull align 8 dereferenceable(48) %77)
  %79 = fadd double %.05790, %78
  %80 = add nuw i64 %.05491, 1
  %81 = call noundef i64 @_ZNKSt6vectorISt10shared_ptrIN4Test4TaskEESaIS3_EE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24) %6) #10
  %82 = icmp ult i64 %80, %81
  br i1 %82, label %.lr.ph93, label %._crit_edge94, !llvm.loop !28

83:                                               ; preds = %._crit_edge94
  %84 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) @_ZSt4cout, ptr noundef nonnull @.str.657)
          to label %85 unwind label %.loopexit87

85:                                               ; preds = %83
  %86 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEPFRSt8ios_baseS0_E(ptr noundef nonnull align 8 dereferenceable(8) %84, ptr noundef nonnull @_ZSt5fixedRSt8ios_base)
          to label %87 unwind label %.loopexit87

87:                                               ; preds = %85
  %88 = call i32 @_ZSt12setprecisioni(i32 noundef 1)
  %89 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_St13_Setprecision(ptr noundef nonnull align 8 dereferenceable(8) %86, i32 %88)
          to label %90 unwind label %.loopexit87

90:                                               ; preds = %87
  %91 = fmul double %72, 1.000000e+02
  %92 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEd(ptr noundef nonnull align 8 dereferenceable(8) %89, double noundef %91)
          to label %93 unwind label %.loopexit87

93:                                               ; preds = %90
  %94 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) %92, ptr noundef nonnull @.str.658)
          to label %95 unwind label %.loopexit87

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

.loopexit87:                                      ; preds = %83, %85, %87, %90, %93, %95, %97
  %lpad.loopexit = landingpad { ptr, i32 }
          cleanup
  br label %111

.loopexit.split-lp:                               ; preds = %.critedge, %104, %109
  %lpad.loopexit.split-lp = landingpad { ptr, i32 }
          cleanup
  br label %111

97:                                               ; preds = %95, %._crit_edge94
  %.156 = phi double [ %.055, %._crit_edge94 ], [ %72, %95 ]
  invoke void @_ZN4Test5SleepEj(i32 noundef 40)
          to label %98 unwind label %.loopexit87

98:                                               ; preds = %97
  %99 = fcmp olt double %72, 1.000000e+00
  br i1 %99, label %100, label %.critedge

100:                                              ; preds = %98
  %101 = load volatile i8, ptr @_ZN4Test4Task9s_stoppedE, align 1, !tbaa !29, !range !23, !noundef !24
  %102 = trunc nuw i8 %101 to i1
  br i1 %102, label %.critedge, label %.preheader, !llvm.loop !30

.critedge:                                        ; preds = %98, %100
  %103 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEPFRSoS_E(ptr noundef nonnull align 8 dereferenceable(8) @_ZSt4cout, ptr noundef nonnull @_ZSt4endlIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_)
          to label %104 unwind label %.loopexit.split-lp

104:                                              ; preds = %.critedge
  %105 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEPFRSoS_E(ptr noundef nonnull align 8 dereferenceable(8) %103, ptr noundef nonnull @_ZSt4endlIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_)
          to label %106 unwind label %.loopexit.split-lp

106:                                              ; preds = %104
  %107 = load volatile i8, ptr @_ZN4Test4Task9s_stoppedE, align 1, !tbaa !29, !range !23, !noundef !24
  %108 = trunc nuw i8 %107 to i1
  br i1 %108, label %110, label %109

109:                                              ; preds = %106
  invoke void @_ZN4Test3Log8SetLevelENS0_5LevelE(ptr noundef nonnull align 8 dereferenceable(656) @_ZN4Test3Log5s_logE, i32 noundef 2)
          to label %110 unwind label %.loopexit.split-lp

110:                                              ; preds = %109, %106
  call void @_ZNSt6vectorISt10shared_ptrIN4Test4TaskEESaIS3_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %6) #10
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %6) #10
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %3) #10
  br label %119

111:                                              ; preds = %.loopexit87, %.loopexit.split-lp, %74, %68
  %.pn82.pn = phi { ptr, i32 } [ %.pn82, %68 ], [ %75, %74 ], [ %lpad.loopexit, %.loopexit87 ], [ %lpad.loopexit.split-lp, %.loopexit.split-lp ]
  call void @_ZNSt6vectorISt10shared_ptrIN4Test4TaskEESaIS3_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %6) #10
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %6) #10
  br label %112

112:                                              ; preds = %111, %48
  %.pn82.pn.pn = phi { ptr, i32 } [ %.pn82.pn, %111 ], [ %.pn.pn, %48 ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %3) #10
  br label %187

113:                                              ; preds = %2
  call void @llvm.lifetime.start.p0(i64 48, ptr nonnull %9) #10
  %114 = tail call noundef ptr @_ZNSt6vectorIN4Test5GroupESaIS1_EE4dataEv(ptr noundef nonnull align 8 dereferenceable(24) %0) #10
  %115 = tail call noundef i64 @_ZNKSt6vectorIN4Test5GroupESaIS1_EE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24) %0) #10
  call void @_ZN4Test4TaskC2ERKNS_7OptionsEmPNS_5GroupEmb(ptr noundef nonnull align 8 dereferenceable(48) %9, ptr noundef nonnull align 8 dereferenceable(256) %1, i64 noundef 0, ptr noundef %114, i64 noundef %115, i1 noundef zeroext false)
  invoke void @_ZN4Test4Task3RunEv(ptr noundef nonnull align 8 dereferenceable(48) %9)
          to label %116 unwind label %117

116:                                              ; preds = %113
  call void @_ZN4Test4TaskD2Ev(ptr noundef nonnull align 8 dereferenceable(48) %9) #10
  call void @llvm.lifetime.end.p0(i64 48, ptr nonnull %9) #10
  br label %119

117:                                              ; preds = %113
  %118 = landingpad { ptr, i32 }
          cleanup
  call void @_ZN4Test4TaskD2Ev(ptr noundef nonnull align 8 dereferenceable(48) %9) #10
  call void @llvm.lifetime.end.p0(i64 48, ptr nonnull %9) #10
  br label %187

119:                                              ; preds = %116, %110
  %120 = load volatile i8, ptr @_ZN4Test4Task9s_stoppedE, align 1, !tbaa !29, !range !23, !noundef !24
  %121 = trunc nuw i8 %120 to i1
  br i1 %121, label %.loopexit, label %122

122:                                              ; preds = %119
  call void @llvm.lifetime.start.p0(i64 392, ptr nonnull %10) #10
  call void @_ZNSt7__cxx1118basic_stringstreamIcSt11char_traitsIcESaIcEEC1Ev(ptr noundef nonnull align 8 dereferenceable(128) %10)
  %123 = getelementptr inbounds i8, ptr %10, i64 16
  %124 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) %123, ptr noundef nonnull @.str.659)
          to label %125 unwind label %137

125:                                              ; preds = %122
  %126 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEPFRSoS_E(ptr noundef nonnull align 8 dereferenceable(8) %124, ptr noundef nonnull @_ZSt4endlIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_)
          to label %127 unwind label %137

127:                                              ; preds = %125
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %11) #10
  invoke void @_ZNKSt7__cxx1118basic_stringstreamIcSt11char_traitsIcESaIcEE3strEv(ptr dead_on_unwind nonnull writable sret(%"class.std::__cxx11::basic_string") align 8 %11, ptr noundef nonnull align 8 dereferenceable(128) %10)
          to label %128 unwind label %139

128:                                              ; preds = %127
  invoke void @_ZN4Test3Log5WriteENS0_5LevelERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE(ptr noundef nonnull align 8 dereferenceable(656) @_ZN4Test3Log5s_logE, i32 noundef 2, ptr noundef nonnull align 8 dereferenceable(32) %11)
          to label %129 unwind label %141

129:                                              ; preds = %128
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %11) #10
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %11) #10
  call void @_ZNSt7__cxx1118basic_stringstreamIcSt11char_traitsIcESaIcEED1Ev(ptr noundef nonnull align 8 dereferenceable(128) %10) #10
  call void @llvm.lifetime.end.p0(i64 392, ptr nonnull %10) #10
  %130 = getelementptr inbounds i8, ptr %1, i64 224
  %131 = load i64, ptr %130, align 8, !tbaa !31
  %.not76 = icmp eq i64 %131, 0
  br i1 %.not76, label %.loopexit, label %132

132:                                              ; preds = %129
  %133 = call ptr @_ZNSt6vectorIN4Test5GroupESaIS1_EE5beginEv(ptr noundef nonnull align 8 dereferenceable(24) %0) #10
  %134 = call ptr @_ZNSt6vectorIN4Test5GroupESaIS1_EE3endEv(ptr noundef nonnull align 8 dereferenceable(24) %0) #10
  call void @"_ZSt4sortIN9__gnu_cxx17__normal_iteratorIPN4Test5GroupESt6vectorIS3_SaIS3_EEEEZNS2_13MakeAutoTestsERS7_RKNS2_7OptionsEE3$_0EvT_SE_T0_"(ptr %133, ptr %134)
  %135 = call noundef i64 @_ZNKSt6vectorIN4Test5GroupESaIS1_EE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24) %0) #10
  %.not100 = icmp eq i64 %135, 0
  br i1 %.not100, label %.loopexit, label %.lr.ph97

.lr.ph97:                                         ; preds = %132
  %136 = getelementptr inbounds i8, ptr %12, i64 16
  br label %145

137:                                              ; preds = %125, %122
  %138 = landingpad { ptr, i32 }
          cleanup
  br label %144

139:                                              ; preds = %127
  %140 = landingpad { ptr, i32 }
          cleanup
  br label %143

141:                                              ; preds = %128
  %142 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %11) #10
  br label %143

143:                                              ; preds = %141, %139
  %.pn73 = phi { ptr, i32 } [ %142, %141 ], [ %140, %139 ]
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %11) #10
  br label %144

144:                                              ; preds = %143, %137
  %.pn73.pn = phi { ptr, i32 } [ %.pn73, %143 ], [ %138, %137 ]
  call void @_ZNSt7__cxx1118basic_stringstreamIcSt11char_traitsIcESaIcEED1Ev(ptr noundef nonnull align 8 dereferenceable(128) %10) #10
  call void @llvm.lifetime.end.p0(i64 392, ptr nonnull %10) #10
  br label %187

145:                                              ; preds = %.lr.ph97, %183
  %.095 = phi i64 [ 0, %.lr.ph97 ], [ %184, %183 ]
  %146 = call noundef nonnull align 8 dereferenceable(56) ptr @_ZNSt6vectorIN4Test5GroupESaIS1_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %0, i64 noundef %.095) #10
  %147 = getelementptr inbounds i8, ptr %146, i64 48
  %148 = load double, ptr %147, align 8, !tbaa !32
  %149 = load i64, ptr %130, align 8, !tbaa !31
  %150 = uitofp i64 %149 to double
  %151 = fcmp ult double %148, %150
  br i1 %151, label %183, label %152

152:                                              ; preds = %145
  call void @llvm.lifetime.start.p0(i64 392, ptr nonnull %12) #10
  call void @_ZNSt7__cxx1118basic_stringstreamIcSt11char_traitsIcESaIcEEC1Ev(ptr noundef nonnull align 8 dereferenceable(128) %12)
  %153 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) %136, ptr noundef nonnull @.str.660)
          to label %154 unwind label %170

154:                                              ; preds = %152
  %155 = call noundef nonnull align 8 dereferenceable(56) ptr @_ZNSt6vectorIN4Test5GroupESaIS1_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %0, i64 noundef %.095) #10
  %156 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsIcSt11char_traitsIcESaIcEERSt13basic_ostreamIT_T0_ES7_RKNSt7__cxx1112basic_stringIS4_S5_T1_EE(ptr noundef nonnull align 8 dereferenceable(8) %153, ptr noundef nonnull align 8 dereferenceable(32) %155)
          to label %157 unwind label %170

157:                                              ; preds = %154
  %158 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) %156, ptr noundef nonnull @.str.661)
          to label %159 unwind label %170

159:                                              ; preds = %157
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %13) #10
  %160 = call noundef nonnull align 8 dereferenceable(56) ptr @_ZNSt6vectorIN4Test5GroupESaIS1_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %0, i64 noundef %.095) #10
  %161 = getelementptr inbounds i8, ptr %160, i64 48
  %162 = load double, ptr %161, align 8, !tbaa !32
  invoke void @_ZN4Test8ToStringB5cxx11Edib(ptr dead_on_unwind nonnull writable sret(%"class.std::__cxx11::basic_string") align 8 %13, double noundef %162, i32 noundef 1, i1 noundef zeroext false)
          to label %163 unwind label %172

163:                                              ; preds = %159
  %164 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsIcSt11char_traitsIcESaIcEERSt13basic_ostreamIT_T0_ES7_RKNSt7__cxx1112basic_stringIS4_S5_T1_EE(ptr noundef nonnull align 8 dereferenceable(8) %158, ptr noundef nonnull align 8 dereferenceable(32) %13)
          to label %165 unwind label %174

165:                                              ; preds = %163
  %166 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) %164, ptr noundef nonnull @.str.662)
          to label %167 unwind label %174

167:                                              ; preds = %165
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %13) #10
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %13) #10
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %14) #10
  invoke void @_ZNKSt7__cxx1118basic_stringstreamIcSt11char_traitsIcESaIcEE3strEv(ptr dead_on_unwind nonnull writable sret(%"class.std::__cxx11::basic_string") align 8 %14, ptr noundef nonnull align 8 dereferenceable(128) %12)
          to label %168 unwind label %177

168:                                              ; preds = %167
  invoke void @_ZN4Test3Log5WriteENS0_5LevelERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE(ptr noundef nonnull align 8 dereferenceable(656) @_ZN4Test3Log5s_logE, i32 noundef 2, ptr noundef nonnull align 8 dereferenceable(32) %14)
          to label %169 unwind label %179

169:                                              ; preds = %168
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %14) #10
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %14) #10
  call void @_ZNSt7__cxx1118basic_stringstreamIcSt11char_traitsIcESaIcEED1Ev(ptr noundef nonnull align 8 dereferenceable(128) %12) #10
  call void @llvm.lifetime.end.p0(i64 392, ptr nonnull %12) #10
  br label %183

170:                                              ; preds = %157, %154, %152
  %171 = landingpad { ptr, i32 }
          cleanup
  br label %182

172:                                              ; preds = %159
  %173 = landingpad { ptr, i32 }
          cleanup
  br label %176

174:                                              ; preds = %165, %163
  %175 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %13) #10
  br label %176

176:                                              ; preds = %174, %172
  %.pn77 = phi { ptr, i32 } [ %175, %174 ], [ %173, %172 ]
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %13) #10
  br label %182

177:                                              ; preds = %167
  %178 = landingpad { ptr, i32 }
          cleanup
  br label %181

179:                                              ; preds = %168
  %180 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %14) #10
  br label %181

181:                                              ; preds = %179, %177
  %.pn79 = phi { ptr, i32 } [ %180, %179 ], [ %178, %177 ]
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %14) #10
  br label %182

182:                                              ; preds = %181, %176, %170
  %.pn79.pn = phi { ptr, i32 } [ %.pn79, %181 ], [ %.pn77, %176 ], [ %171, %170 ]
  call void @_ZNSt7__cxx1118basic_stringstreamIcSt11char_traitsIcESaIcEED1Ev(ptr noundef nonnull align 8 dereferenceable(128) %12) #10
  call void @llvm.lifetime.end.p0(i64 392, ptr nonnull %12) #10
  br label %187

183:                                              ; preds = %145, %169
  %184 = add nuw i64 %.095, 1
  %185 = call noundef i64 @_ZNKSt6vectorIN4Test5GroupESaIS1_EE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24) %0) #10
  %186 = icmp ult i64 %184, %185
  br i1 %186, label %145, label %.loopexit, !llvm.loop !34

.loopexit:                                        ; preds = %183, %132, %129, %119
  %.052 = phi i32 [ 1, %119 ], [ 0, %129 ], [ 0, %132 ], [ 0, %183 ]
  ret i32 %.052

187:                                              ; preds = %182, %144, %117, %112
  %.pn82.pn.pn.pn = phi { ptr, i32 } [ %.pn82.pn.pn, %112 ], [ %.pn79.pn, %182 ], [ %.pn73.pn, %144 ], [ %118, %117 ]
  resume { ptr, i32 } %.pn82.pn.pn.pn
}

; Function Attrs: mustprogress uwtable
declare hidden noundef zeroext i1 @_ZN4TestL9PinThreadEm(i64 noundef) local_unnamed_addr #2

declare void @_ZN4Test3Log8SetLevelENS0_5LevelE(ptr noundef nonnull align 8 dereferenceable(656), i32 noundef) local_unnamed_addr #4

; Function Attrs: alwaysinline mustprogress nounwind uwtable
declare dso_local noundef i64 @_ZN4Simd3MinImEET_S1_S1_(i64 noundef, i64 noundef) local_unnamed_addr #5

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

; Function Attrs: alwaysinline mustprogress nounwind uwtable
declare dso_local noundef i64 @_ZN4Simd5DivHiEmm(i64 noundef, i64 noundef) local_unnamed_addr #5

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

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

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

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

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

; Function Attrs: mustprogress uwtable
declare dso_local void @_ZN4Test4TaskC2ERKNS_7OptionsEmPNS_5GroupEmb(ptr noundef nonnull align 8 dereferenceable(48), ptr noundef nonnull align 8 dereferenceable(256), i64 noundef, ptr noundef, i64 noundef, i1 noundef zeroext) unnamed_addr #2 align 2

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

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

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

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

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

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

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

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

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

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

; Function Attrs: inlinehint mustprogress nounwind uwtable
declare dso_local i32 @_ZSt12setprecisioni(i32 noundef) local_unnamed_addr #6

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

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

; Function Attrs: inlinehint mustprogress uwtable
declare dso_local void @_ZN4Test5SleepEj(i32 noundef) local_unnamed_addr #3

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

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

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

; Function Attrs: inlinehint mustprogress uwtable
declare hidden void @"_ZSt4sortIN9__gnu_cxx17__normal_iteratorIPN4Test5GroupESt6vectorIS3_SaIS3_EEEEZNS2_13MakeAutoTestsERS7_RKNS2_7OptionsEE3$_0EvT_SE_T0_"(ptr, ptr) local_unnamed_addr #3

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

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

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

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

; Function Attrs: alwaysinline mustprogress uwtable
declare dso_local void @_ZN4Test8ToStringB5cxx11Edib(ptr dead_on_unwind noalias writable sret(%"class.std::__cxx11::basic_string") align 8, double noundef, i32 noundef, i1 noundef zeroext) local_unnamed_addr #9

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

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

!0 = !{i32 1, !"wchar_size", i32 4}
!1 = !{i32 8, !"PIC Level", i32 2}
!2 = !{i32 7, !"PIE Level", i32 2}
!3 = !{i32 7, !"uwtable", i32 2}
!4 = !{!"clang version 19.1.0 (git@github.com:llvm/llvm-project.git a4bf6cd7cfb1a1421ba92bca9d017b49936c55e4)"}
!5 = !{!6, !20, i64 232}
!6 = !{!"_ZTSN4Test7OptionsE", !7, i64 0, !13, i64 20, !12, i64 24, !14, i64 32, !14, i64 56, !18, i64 80, !18, i64 112, !18, i64 144, !18, i64 176, !20, i64 208, !20, i64 216, !20, i64 224, !20, i64 232, !12, i64 240, !12, i64 241, !12, i64 242, !12, i64 243, !21, i64 248}
!7 = !{!"_ZTSN4Test10ArgsParserE", !8, i64 0, !11, i64 8, !12, i64 16}
!8 = !{!"int", !9, i64 0}
!9 = !{!"omnipotent char", !10, i64 0}
!10 = !{!"Simple C++ TBAA"}
!11 = !{!"any pointer", !9, i64 0}
!12 = !{!"bool", !9, i64 0}
!13 = !{!"_ZTSN4Test7Options4ModeE", !9, i64 0}
!14 = !{!"_ZTSSt6vectorINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESaIS5_EE", !15, i64 0}
!15 = !{!"_ZTSSt12_Vector_baseINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESaIS5_EE", !16, i64 0}
!16 = !{!"_ZTSNSt12_Vector_baseINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESaIS5_EE12_Vector_implE", !17, i64 0}
!17 = !{!"_ZTSNSt12_Vector_baseINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESaIS5_EE17_Vector_impl_dataE", !11, i64 0, !11, i64 8, !11, i64 16}
!18 = !{!"_ZTSNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE", !19, i64 0, !20, i64 8, !9, i64 16}
!19 = !{!"_ZTSNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE12_Alloc_hiderE", !11, i64 0}
!20 = !{!"long", !9, i64 0}
!21 = !{!"double", !9, i64 0}
!22 = !{!6, !12, i64 243}
!23 = !{i8 0, i8 2}
!24 = !{}
!25 = !{!20, !20, i64 0}
!26 = distinct !{!26, !27}
!27 = !{!"llvm.loop.mustprogress"}
!28 = distinct !{!28, !27}
!29 = !{!12, !12, i64 0}
!30 = distinct !{!30, !27}
!31 = !{!6, !20, i64 224}
!32 = !{!33, !21, i64 48}
!33 = !{!"_ZTSN4Test5GroupE", !18, i64 0, !11, i64 32, !11, i64 40, !21, i64 48}
!34 = distinct !{!34, !27}


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