; LLVM IR from buresjan/optim_lbm :: nomad/src/Eval/EvaluatorControl.ll (ZN9NOMAD_4_316EvaluatorControl3runEv)

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

%"class.std::__cxx11::basic_string" = type { %"struct.std::__cxx11::basic_string<char>::_Alloc_hider", i64, %union.anon }
%"struct.std::__cxx11::basic_string<char>::_Alloc_hider" = type { ptr }
%union.anon = type { i64, [8 x i8] }
%"class.std::shared_ptr.52" = type { %"class.std::__shared_ptr.53" }
%"class.std::__shared_ptr.53" = type { ptr, %"class.std::__shared_count" }
%"class.std::__shared_count" = type { ptr }
%"class.std::allocator" = type { i8 }
%"class.std::vector.143" = type { %"struct.std::_Vector_base.144" }
%"struct.std::_Vector_base.144" = type { %"struct.std::_Vector_base<std::__cxx11::basic_string<char>, std::allocator<std::__cxx11::basic_string<char>>>::_Vector_impl" }
%"struct.std::_Vector_base<std::__cxx11::basic_string<char>, std::allocator<std::__cxx11::basic_string<char>>>::_Vector_impl" = type { %"struct.std::_Vector_base<std::__cxx11::basic_string<char>, std::allocator<std::__cxx11::basic_string<char>>>::_Vector_impl_data" }
%"struct.std::_Vector_base<std::__cxx11::basic_string<char>, std::allocator<std::__cxx11::basic_string<char>>>::_Vector_impl_data" = type { ptr, ptr, ptr }
%"class.__gnu_cxx::__normal_iterator.148" = type { ptr }
%"class.std::vector" = type { %"struct.std::_Vector_base" }
%"struct.std::_Vector_base" = type { %"struct.std::_Vector_base<std::shared_ptr<NOMAD_4_3::EvalQueuePoint>, std::allocator<std::shared_ptr<NOMAD_4_3::EvalQueuePoint>>>::_Vector_impl" }
%"struct.std::_Vector_base<std::shared_ptr<NOMAD_4_3::EvalQueuePoint>, std::allocator<std::shared_ptr<NOMAD_4_3::EvalQueuePoint>>>::_Vector_impl" = type { %"struct.std::_Vector_base<std::shared_ptr<NOMAD_4_3::EvalQueuePoint>, std::allocator<std::shared_ptr<NOMAD_4_3::EvalQueuePoint>>>::_Vector_impl_data" }
%"struct.std::_Vector_base<std::shared_ptr<NOMAD_4_3::EvalQueuePoint>, std::allocator<std::shared_ptr<NOMAD_4_3::EvalQueuePoint>>>::_Vector_impl_data" = type { ptr, ptr, ptr }
%"class.__gnu_cxx::__normal_iterator.107" = type { ptr }
%"class.std::shared_ptr.108" = type { %"class.std::__shared_ptr.109" }
%"class.std::__shared_ptr.109" = type { ptr, %"class.std::__shared_count" }
%"class.NOMAD_4_3::EvaluatorControl" = type { ptr, %"class.std::shared_ptr.3", %"class.std::shared_ptr.6", %"class.std::set.9", %"class.std::map", %"class.std::vector", %"class.std::shared_ptr.22", %"struct.std::atomic", %"struct.std::atomic", %"struct.std::atomic", %"struct.std::atomic", %"struct.std::atomic", %"struct.std::atomic", %"struct.std::atomic", %"struct.std::atomic", %"struct.std::atomic", %"struct.std::atomic", %"struct.std::atomic", %"struct.std::atomic", %"struct.std::atomic", i8, %"class.NOMAD_4_3::SuccessStats" }
%"class.std::shared_ptr.3" = type { %"class.std::__shared_ptr.4" }
%"class.std::__shared_ptr.4" = type { ptr, %"class.std::__shared_count" }
%"class.std::shared_ptr.6" = type { %"class.std::__shared_ptr.7" }
%"class.std::__shared_ptr.7" = type { ptr, %"class.std::__shared_count" }
%"class.std::set.9" = type { %"class.std::_Rb_tree.10" }
%"class.std::_Rb_tree.10" = type { %"struct.std::_Rb_tree<int, int, std::_Identity<int>, std::less<int>>::_Rb_tree_impl" }
%"struct.std::_Rb_tree<int, int, std::_Identity<int>, std::less<int>>::_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::map" = type { %"class.std::_Rb_tree.15" }
%"class.std::_Rb_tree.15" = type { %"struct.std::_Rb_tree<int, std::pair<const int, NOMAD_4_3::EvcMainThreadInfo>, std::_Select1st<std::pair<const int, NOMAD_4_3::EvcMainThreadInfo>>, std::less<int>>::_Rb_tree_impl" }
%"struct.std::_Rb_tree<int, std::pair<const int, NOMAD_4_3::EvcMainThreadInfo>, std::_Select1st<std::pair<const int, NOMAD_4_3::EvcMainThreadInfo>>, std::less<int>>::_Rb_tree_impl" = type { [8 x i8], %"struct.std::_Rb_tree_header" }
%"class.std::shared_ptr.22" = type { %"class.std::__shared_ptr.23" }
%"class.std::__shared_ptr.23" = type { ptr, %"class.std::__shared_count" }
%"struct.std::atomic" = type { %"struct.std::__atomic_base" }
%"struct.std::__atomic_base" = type { i64 }
%"class.NOMAD_4_3::SuccessStats" = type { %"class.std::map.25", i64, i64 }
%"class.std::map.25" = type { %"class.std::_Rb_tree.26" }
%"class.std::_Rb_tree.26" = type { %"struct.std::_Rb_tree<std::pair<NOMAD_4_3::StepType, NOMAD_4_3::SuccessType>, std::pair<const std::pair<NOMAD_4_3::StepType, NOMAD_4_3::SuccessType>, unsigned long>, std::_Select1st<std::pair<const std::pair<NOMAD_4_3::StepType, NOMAD_4_3::SuccessType>, unsigned long>>, std::less<std::pair<NOMAD_4_3::StepType, NOMAD_4_3::SuccessType>>>::_Rb_tree_impl" }
%"struct.std::_Rb_tree<std::pair<NOMAD_4_3::StepType, NOMAD_4_3::SuccessType>, std::pair<const std::pair<NOMAD_4_3::StepType, NOMAD_4_3::SuccessType>, unsigned long>, std::_Select1st<std::pair<const std::pair<NOMAD_4_3::StepType, NOMAD_4_3::SuccessType>, unsigned long>>, std::less<std::pair<NOMAD_4_3::StepType, NOMAD_4_3::SuccessType>>>::_Rb_tree_impl" = type { [8 x i8], %"struct.std::_Rb_tree_header" }

@.str.16 = external hidden unnamed_addr constant [88 x i8], align 1
@_ZTIN9NOMAD_4_39ExceptionE = external constant ptr
@.str.36 = external hidden unnamed_addr constant [57 x i8], align 1
@.str.37 = external hidden unnamed_addr constant [57 x i8], align 1
@.str.38 = external hidden unnamed_addr constant [20 x i8], align 1
@.str.39 = external hidden unnamed_addr constant [8 x i8], align 1
@.str.40 = external hidden unnamed_addr constant [18 x i8], align 1
@.str.41 = external hidden unnamed_addr constant [16 x i8], align 1
@.str.42 = external hidden unnamed_addr constant [14 x i8], align 1
@.str.43 = external hidden unnamed_addr constant [10 x i8], align 1
@.str.44 = external hidden unnamed_addr constant [8 x i8], align 1
@.str.45 = external hidden unnamed_addr constant [49 x i8], align 1
@.str.46 = external hidden unnamed_addr constant [17 x i8], align 1
@.str.47 = external hidden unnamed_addr constant [13 x i8], align 1
@.str.48 = external hidden unnamed_addr constant [26 x i8], align 1
@.str.49 = external hidden unnamed_addr constant [38 x i8], align 1
@.str.50 = external hidden unnamed_addr constant [9 x i8], align 1
@.str.51 = external hidden unnamed_addr constant [45 x i8], align 1
@.str.52 = external hidden unnamed_addr constant [12 x i8], align 1

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

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

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

declare i32 @__gxx_personality_v0(...)

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

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

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

declare noundef i32 @_ZN9NOMAD_4_312getThreadNumEv() #3

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

; Function Attrs: mustprogress uwtable
declare dso_local noundef zeroext i1 @_ZN9NOMAD_4_311OutputQueue9GoodLevelERKNS_11OutputLevelE(ptr noundef nonnull align 4 dereferenceable(4)) #2 align 2

; Function Attrs: mustprogress uwtable
declare dso_local noundef i64 @_ZN9NOMAD_4_316EvaluatorControl10clearQueueEib(ptr noundef nonnull align 8 dereferenceable(352), i32 noundef, i1 noundef zeroext) #2 align 2

; Function Attrs: mustprogress uwtable
declare dso_local noundef nonnull align 8 dereferenceable(248) ptr @_ZNK9NOMAD_4_316EvaluatorControl17getMainThreadInfoEi(ptr noundef nonnull align 8 dereferenceable(352), i32 noundef) #2 align 2

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

declare void @_ZN9NOMAD_4_317EvcMainThreadInfo19decCurrentlyRunningEv(ptr noundef nonnull align 8 dereferenceable(248)) #3

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

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

; Function Attrs: mustprogress uwtable
declare dso_local noundef zeroext i1 @_ZNK9NOMAD_4_316EvaluatorControl12isMainThreadEi(ptr noundef nonnull align 8 dereferenceable(352), i32 noundef) #2 align 2

; Function Attrs: inlinehint mustprogress uwtable
declare dso_local void @_ZStplIcSt11char_traitsIcESaIcEENSt7__cxx1112basic_stringIT_T0_T1_EEPKS5_OS8_(ptr dead_on_unwind noalias writable sret(%"class.std::__cxx11::basic_string") align 8, ptr noundef, ptr noundef nonnull align 8 dereferenceable(32)) #4

declare ptr @__cxa_allocate_exception(i64)

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

declare void @__cxa_throw(ptr, ptr, ptr)

declare void @__cxa_free_exception(ptr)

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

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

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

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

; Function Attrs: mustprogress uwtable
declare dso_local void @_ZNK9NOMAD_4_316EvaluatorControl10getBarrierEi(ptr dead_on_unwind noalias writable sret(%"class.std::shared_ptr.52") align 8, ptr noundef nonnull align 8 dereferenceable(352), i32 noundef) #2 align 2

; Function Attrs: mustprogress uwtable
declare dso_local void @_ZN9NOMAD_4_316EvaluatorControl13setStopReasonEiRKNS_22EvalMainThreadStopTypeE(ptr noundef nonnull align 8 dereferenceable(352), i32 noundef, ptr noundef nonnull align 4 dereferenceable(4)) #2 align 2

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

; Function Attrs: mustprogress uwtable
declare dso_local noundef zeroext i1 @_ZNK9NOMAD_4_316EvaluatorControl18checkEvalTerminateEi(ptr noundef nonnull align 8 dereferenceable(352), i32 noundef) #2 align 2

; Function Attrs: mustprogress uwtable
declare dso_local noundef nonnull align 4 dereferenceable(4) ptr @_ZNK9NOMAD_4_316EvaluatorControl14getSuccessTypeEi(ptr noundef nonnull align 8 dereferenceable(352), i32 noundef) #2 align 2

; Function Attrs: mustprogress uwtable
declare dso_local void @_ZN9NOMAD_4_316EvaluatorControl14setSuccessTypeEiRKNS_11SuccessTypeE(ptr noundef nonnull align 8 dereferenceable(352), i32 noundef, ptr noundef nonnull align 4 dereferenceable(4)) #2 align 2

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

; Function Attrs: mustprogress uwtable
declare dso_local noundef zeroext i1 @_ZNK9NOMAD_4_316EvaluatorControl20getOpportunisticEvalEi(ptr noundef nonnull align 8 dereferenceable(352), i32 noundef) #2 align 2

; Function Attrs: mustprogress uwtable
declare dso_local noundef zeroext i1 @_ZNK9NOMAD_4_316EvaluatorControl11getUseCacheEi(ptr noundef nonnull align 8 dereferenceable(352), i32 noundef) #2 align 2

; Function Attrs: inlinehint mustprogress nounwind uwtable
declare dso_local void @_ZNSt7__cxx119to_stringEi(ptr dead_on_unwind noalias writable sret(%"class.std::__cxx11::basic_string") align 8, i32 noundef) #5

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

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

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

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

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

; Function Attrs: inlinehint mustprogress uwtable
declare dso_local void @_ZStplIcSt11char_traitsIcESaIcEENSt7__cxx1112basic_stringIT_T0_T1_EEOS8_PKS5_(ptr dead_on_unwind noalias writable sret(%"class.std::__cxx11::basic_string") align 8, ptr noundef nonnull align 8 dereferenceable(32), ptr noundef) #4

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

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

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

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

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

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

; Function Attrs: mustprogress uwtable
declare dso_local noundef zeroext i1 @_ZNK9NOMAD_4_316EvaluatorControl12stopMainEvalEi(ptr noundef nonnull align 8 dereferenceable(352), i32 noundef) #2 align 2

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

; Function Attrs: mustprogress uwtable
declare dso_local noundef zeroext i1 @_ZN9NOMAD_4_316EvaluatorControl8popBlockERSt6vectorISt10shared_ptrINS_14EvalQueuePointEESaIS4_EE(ptr noundef nonnull align 8 dereferenceable(352), ptr noundef nonnull align 8 dereferenceable(24)) #2 align 2

; Function Attrs: mustprogress uwtable
define dso_local noundef i32 @_ZN9NOMAD_4_316EvaluatorControl3runEv(ptr noundef nonnull align 8 dereferenceable(352) %0) #2 align 2 personality ptr @__gxx_personality_v0 {
  %2 = alloca ptr, align 8
  %3 = alloca i32, align 4
  %4 = alloca i8, align 1
  %5 = alloca %"class.std::__cxx11::basic_string", align 8
  %6 = alloca %"class.std::allocator", align 1
  %7 = alloca ptr, align 8
  %8 = alloca i32, align 4
  %9 = alloca %"class.std::__cxx11::basic_string", align 8
  %10 = alloca %"class.std::__cxx11::basic_string", align 8
  %11 = alloca %"class.std::allocator", align 1
  %12 = alloca i1, align 1
  %13 = alloca i32, align 4
  %14 = alloca i32, align 4
  %15 = alloca i32, align 4
  %16 = alloca %"class.std::__cxx11::basic_string", align 8
  %17 = alloca %"class.std::allocator", align 1
  %18 = alloca %"class.std::__cxx11::basic_string", align 8
  %19 = alloca %"class.std::__cxx11::basic_string", align 8
  %20 = alloca %"class.std::__cxx11::basic_string", align 8
  %21 = alloca %"class.std::__cxx11::basic_string", align 8
  %22 = alloca %"class.std::__cxx11::basic_string", align 8
  %23 = alloca i32, align 4
  %24 = alloca i32, align 4
  %25 = alloca %"class.std::__cxx11::basic_string", align 8
  %26 = alloca %"class.std::allocator", align 1
  %27 = alloca %"class.std::__cxx11::basic_string", align 8
  %28 = alloca %"class.std::__cxx11::basic_string", align 8
  %29 = alloca %"class.std::shared_ptr.52", align 8
  %30 = alloca %"class.std::vector.143", align 8
  %31 = alloca ptr, align 8
  %32 = alloca %"class.__gnu_cxx::__normal_iterator.148", align 8
  %33 = alloca %"class.__gnu_cxx::__normal_iterator.148", align 8
  %34 = alloca ptr, align 8
  %35 = alloca i8, align 1
  %36 = alloca i64, align 8
  %37 = alloca %"class.std::vector", align 8
  %38 = alloca %"class.__gnu_cxx::__normal_iterator.107", align 8
  %39 = alloca %"class.__gnu_cxx::__normal_iterator.107", align 8
  %40 = alloca %"class.std::shared_ptr.108", align 8
  %41 = alloca i32, align 4
  %42 = alloca i32, align 4
  %43 = alloca %"class.std::shared_ptr.108", align 8
  %44 = alloca i32, align 4
  %45 = alloca %"class.__gnu_cxx::__normal_iterator.107", align 8
  %46 = alloca i64, align 8
  %47 = alloca i32, align 4
  %48 = alloca %"class.std::__cxx11::basic_string", align 8
  %49 = alloca %"class.std::allocator", align 1
  %50 = alloca i32, align 4
  %51 = alloca i8, align 1
  %52 = alloca %"class.std::__cxx11::basic_string", align 8
  %53 = alloca %"class.std::allocator", align 1
  %54 = alloca i8, align 1
  %55 = alloca i32, align 4
  %56 = alloca %"class.std::__cxx11::basic_string", align 8
  %57 = alloca %"class.std::__cxx11::basic_string", align 8
  %58 = alloca i32, align 4
  %59 = alloca i64, align 8
  %60 = alloca i32, align 4
  %61 = alloca %"class.std::__cxx11::basic_string", align 8
  %62 = alloca %"class.std::__cxx11::basic_string", align 8
  %63 = alloca %"class.std::__cxx11::basic_string", align 8
  %64 = alloca i32, align 4
  %65 = alloca %"class.std::__cxx11::basic_string", align 8
  %66 = alloca %"class.std::__cxx11::basic_string", align 8
  %67 = alloca %"class.std::__cxx11::basic_string", align 8
  %68 = alloca %"class.std::__cxx11::basic_string", align 8
  store ptr %0, ptr %2, align 8, !tbaa !5
  %69 = load ptr, ptr %2, align 8
  call void @llvm.lifetime.start.p0(i64 4, ptr %3) #6
  %70 = call noundef i32 @_ZN9NOMAD_4_312getThreadNumEv()
  store i32 %70, ptr %3, align 4, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 1, ptr %4) #6
  %71 = load i32, ptr %3, align 4, !tbaa !9
  %72 = call noundef zeroext i1 @_ZNK9NOMAD_4_316EvaluatorControl12isMainThreadEi(ptr noundef nonnull align 8 dereferenceable(352) %69, i32 noundef %71)
  %73 = zext i1 %72 to i8
  store i8 %73, ptr %4, align 1, !tbaa !11
  %74 = load i8, ptr %4, align 1, !tbaa !11, !range !13, !noundef !14
  %75 = trunc i8 %74 to i1
  br i1 %75, label %76, label %305

76:                                               ; preds = %1
  %77 = load i32, ptr %3, align 4, !tbaa !9
  %78 = call noundef nonnull align 8 dereferenceable(248) ptr @_ZNK9NOMAD_4_316EvaluatorControl17getMainThreadInfoEi(ptr noundef nonnull align 8 dereferenceable(352) %69, i32 noundef %77)
  %79 = call noundef ptr @_ZN9NOMAD_4_317EvcMainThreadInfo19getCurrentEvaluatorEv(ptr noundef nonnull align 8 dereferenceable(248) %78)
  %80 = icmp eq ptr null, %79
  br i1 %80, label %81, label %111

81:                                               ; preds = %76
  call void @llvm.lifetime.start.p0(i64 32, ptr %5) #6
  call void @llvm.lifetime.start.p0(i64 1, ptr %6) #6
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %6) #6
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %5, ptr noundef @.str.36, ptr noundef nonnull align 1 dereferenceable(1) %6)
          to label %82 unwind label %89

82:                                               ; preds = %81
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %6) #6
  call void @llvm.lifetime.end.p0(i64 1, ptr %6) #6
  call void @llvm.lifetime.start.p0(i64 32, ptr %9) #6
  %83 = load i32, ptr %3, align 4, !tbaa !9
  call void @_ZNSt7__cxx119to_stringEi(ptr dead_on_unwind writable sret(%"class.std::__cxx11::basic_string") align 8 %9, i32 noundef %83) #6
  %84 = invoke noundef nonnull align 8 dereferenceable(32) ptr @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEpLERKS4_(ptr noundef nonnull align 8 dereferenceable(32) %5, ptr noundef nonnull align 8 dereferenceable(32) %9)
          to label %85 unwind label %93

85:                                               ; preds = %82
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %9) #6
  call void @llvm.lifetime.end.p0(i64 32, ptr %9) #6
  store i1 true, ptr %12, align 1
  %86 = call ptr @__cxa_allocate_exception(i64 112) #6
  call void @llvm.lifetime.start.p0(i64 32, ptr %10) #6
  call void @llvm.lifetime.start.p0(i64 1, ptr %11) #6
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %11) #6
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %10, ptr noundef @.str.16, ptr noundef nonnull align 1 dereferenceable(1) %11)
          to label %87 unwind label %97

87:                                               ; preds = %85
  invoke void @_ZN9NOMAD_4_39ExceptionC2ERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEmS8_(ptr noundef nonnull align 8 dereferenceable(112) %86, ptr noundef nonnull align 8 dereferenceable(32) %10, i64 noundef 1061, ptr noundef nonnull align 8 dereferenceable(32) %5)
          to label %88 unwind label %101

88:                                               ; preds = %87
  store i1 false, ptr %12, align 1
  invoke void @__cxa_throw(ptr %86, ptr @_ZTIN9NOMAD_4_39ExceptionE, ptr @_ZN9NOMAD_4_39ExceptionD2Ev) #7
          to label %654 unwind label %101

89:                                               ; preds = %81
  %90 = landingpad { ptr, i32 }
          cleanup
  %91 = extractvalue { ptr, i32 } %90, 0
  store ptr %91, ptr %7, align 8
  %92 = extractvalue { ptr, i32 } %90, 1
  store i32 %92, ptr %8, align 4
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %6) #6
  call void @llvm.lifetime.end.p0(i64 1, ptr %6) #6
  br label %110

93:                                               ; preds = %82
  %94 = landingpad { ptr, i32 }
          cleanup
  %95 = extractvalue { ptr, i32 } %94, 0
  store ptr %95, ptr %7, align 8
  %96 = extractvalue { ptr, i32 } %94, 1
  store i32 %96, ptr %8, align 4
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %9) #6
  call void @llvm.lifetime.end.p0(i64 32, ptr %9) #6
  br label %109

97:                                               ; preds = %85
  %98 = landingpad { ptr, i32 }
          cleanup
  %99 = extractvalue { ptr, i32 } %98, 0
  store ptr %99, ptr %7, align 8
  %100 = extractvalue { ptr, i32 } %98, 1
  store i32 %100, ptr %8, align 4
  br label %105

101:                                              ; preds = %88, %87
  %102 = landingpad { ptr, i32 }
          cleanup
  %103 = extractvalue { ptr, i32 } %102, 0
  store ptr %103, ptr %7, align 8
  %104 = extractvalue { ptr, i32 } %102, 1
  store i32 %104, ptr %8, align 4
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %10) #6
  br label %105

105:                                              ; preds = %101, %97
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %11) #6
  call void @llvm.lifetime.end.p0(i64 1, ptr %11) #6
  call void @llvm.lifetime.end.p0(i64 32, ptr %10) #6
  %106 = load i1, ptr %12, align 1
  br i1 %106, label %107, label %108

107:                                              ; preds = %105
  call void @__cxa_free_exception(ptr %86) #6
  br label %108

108:                                              ; preds = %107, %105
  br label %109

109:                                              ; preds = %108, %93
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %5) #6
  br label %110

110:                                              ; preds = %109, %89
  call void @llvm.lifetime.end.p0(i64 32, ptr %5) #6
  br label %648

111:                                              ; preds = %76
  %112 = load i32, ptr %3, align 4, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 4, ptr %13) #6
  store i32 2, ptr %13, align 4, !tbaa !15
  call void @_ZN9NOMAD_4_316EvaluatorControl14setSuccessTypeEiRKNS_11SuccessTypeE(ptr noundef nonnull align 8 dereferenceable(352) %69, i32 noundef %112, ptr noundef nonnull align 4 dereferenceable(4) %13)
  call void @llvm.lifetime.end.p0(i64 4, ptr %13) #6
  %113 = load i32, ptr %3, align 4, !tbaa !9
  %114 = call noundef i64 @_ZNK9NOMAD_4_316EvaluatorControl12getQueueSizeEi(ptr noundef nonnull align 8 dereferenceable(352) %69, i32 noundef %113)
  %115 = icmp eq i64 0, %114
  br i1 %115, label %116, label %118

116:                                              ; preds = %111
  %117 = load i32, ptr %3, align 4, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 4, ptr %14) #6
  store i32 4, ptr %14, align 4, !tbaa !17
  call void @_ZN9NOMAD_4_316EvaluatorControl13setStopReasonEiRKNS_22EvalMainThreadStopTypeE(ptr noundef nonnull align 8 dereferenceable(352) %69, i32 noundef %117, ptr noundef nonnull align 4 dereferenceable(4) %14)
  call void @llvm.lifetime.end.p0(i64 4, ptr %14) #6
  br label %118

118:                                              ; preds = %116, %111
  %119 = load i32, ptr %3, align 4, !tbaa !9
  %120 = call noundef zeroext i1 @_ZNK9NOMAD_4_316EvaluatorControl18checkEvalTerminateEi(ptr noundef nonnull align 8 dereferenceable(352) %69, i32 noundef %119)
  br i1 %120, label %125, label %121

121:                                              ; preds = %118
  %122 = call noundef zeroext i1 @_ZN9NOMAD_4_314AllStopReasons24checkEvalGlobalTerminateEv()
  br i1 %122, label %125, label %123

123:                                              ; preds = %121
  %124 = call noundef zeroext i1 @_ZN9NOMAD_4_314AllStopReasons18checkBaseTerminateEv()
  br i1 %124, label %125, label %202

125:                                              ; preds = %123, %121, %118
  call void @llvm.lifetime.start.p0(i64 4, ptr %15) #6
  store i32 9, ptr %15, align 4, !tbaa !19
  %126 = call noundef zeroext i1 @_ZN9NOMAD_4_311OutputQueue9GoodLevelERKNS_11OutputLevelE(ptr noundef nonnull align 4 dereferenceable(4) %15)
  call void @llvm.lifetime.end.p0(i64 4, ptr %15) #6
  br i1 %126, label %127, label %201

127:                                              ; preds = %125
  call void @llvm.lifetime.start.p0(i64 32, ptr %16) #6
  call void @llvm.lifetime.start.p0(i64 1, ptr %17) #6
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %17) #6
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %16, ptr noundef @.str.37, ptr noundef nonnull align 1 dereferenceable(1) %17)
          to label %128 unwind label %138

128:                                              ; preds = %127
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %17) #6
  call void @llvm.lifetime.end.p0(i64 1, ptr %17) #6
  %129 = load i32, ptr %3, align 4, !tbaa !9
  %130 = invoke noundef zeroext i1 @_ZNK9NOMAD_4_316EvaluatorControl18checkEvalTerminateEi(ptr noundef nonnull align 8 dereferenceable(352) %69, i32 noundef %129)
          to label %131 unwind label %142

131:                                              ; preds = %128
  br i1 %130, label %132, label %160

132:                                              ; preds = %131
  call void @llvm.lifetime.start.p0(i64 32, ptr %18) #6
  call void @llvm.lifetime.start.p0(i64 32, ptr %19) #6
  %133 = load i32, ptr %3, align 4, !tbaa !9
  invoke void @_ZNK9NOMAD_4_316EvaluatorControl21getStopReasonAsStringB5cxx11Ei(ptr dead_on_unwind writable sret(%"class.std::__cxx11::basic_string") align 8 %19, ptr noundef nonnull align 8 dereferenceable(352) %69, i32 noundef %133)
          to label %134 unwind label %146

134:                                              ; preds = %132
  invoke void @_ZStplIcSt11char_traitsIcESaIcEENSt7__cxx1112basic_stringIT_T0_T1_EEOS8_PKS5_(ptr dead_on_unwind writable sret(%"class.std::__cxx11::basic_string") align 8 %18, ptr noundef nonnull align 8 dereferenceable(32) %19, ptr noundef @.str.38)
          to label %135 unwind label %150

135:                                              ; preds = %134
  %136 = invoke noundef nonnull align 8 dereferenceable(32) ptr @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEpLERKS4_(ptr noundef nonnull align 8 dereferenceable(32) %16, ptr noundef nonnull align 8 dereferenceable(32) %18)
          to label %137 unwind label %154

137:                                              ; preds = %135
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %18) #6
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %19) #6
  call void @llvm.lifetime.end.p0(i64 32, ptr %19) #6
  call void @llvm.lifetime.end.p0(i64 32, ptr %18) #6
  br label %196

138:                                              ; preds = %127
  %139 = landingpad { ptr, i32 }
          cleanup
  %140 = extractvalue { ptr, i32 } %139, 0
  store ptr %140, ptr %7, align 8
  %141 = extractvalue { ptr, i32 } %139, 1
  store i32 %141, ptr %8, align 4
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %17) #6
  call void @llvm.lifetime.end.p0(i64 1, ptr %17) #6
  br label %200

142:                                              ; preds = %197, %196, %160, %128
  %143 = landingpad { ptr, i32 }
          cleanup
  %144 = extractvalue { ptr, i32 } %143, 0
  store ptr %144, ptr %7, align 8
  %145 = extractvalue { ptr, i32 } %143, 1
  store i32 %145, ptr %8, align 4
  br label %199

146:                                              ; preds = %132
  %147 = landingpad { ptr, i32 }
          cleanup
  %148 = extractvalue { ptr, i32 } %147, 0
  store ptr %148, ptr %7, align 8
  %149 = extractvalue { ptr, i32 } %147, 1
  store i32 %149, ptr %8, align 4
  br label %159

150:                                              ; preds = %134
  %151 = landingpad { ptr, i32 }
          cleanup
  %152 = extractvalue { ptr, i32 } %151, 0
  store ptr %152, ptr %7, align 8
  %153 = extractvalue { ptr, i32 } %151, 1
  store i32 %153, ptr %8, align 4
  br label %158

154:                                              ; preds = %135
  %155 = landingpad { ptr, i32 }
          cleanup
  %156 = extractvalue { ptr, i32 } %155, 0
  store ptr %156, ptr %7, align 8
  %157 = extractvalue { ptr, i32 } %155, 1
  store i32 %157, ptr %8, align 4
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %18) #6
  br label %158

158:                                              ; preds = %154, %150
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %19) #6
  br label %159

159:                                              ; preds = %158, %146
  call void @llvm.lifetime.end.p0(i64 32, ptr %19) #6
  call void @llvm.lifetime.end.p0(i64 32, ptr %18) #6
  br label %199

160:                                              ; preds = %131
  %161 = invoke noundef zeroext i1 @_ZN9NOMAD_4_314AllStopReasons24checkEvalGlobalTerminateEv()
          to label %162 unwind label %142

162:                                              ; preds = %160
  br i1 %161, label %163, label %176

163:                                              ; preds = %162
  call void @llvm.lifetime.start.p0(i64 32, ptr %20) #6
  invoke void @_ZN9NOMAD_4_314AllStopReasons31getEvalGlobalStopReasonAsStringB5cxx11Ev(ptr dead_on_unwind writable sret(%"class.std::__cxx11::basic_string") align 8 %20)
          to label %164 unwind label %167

164:                                              ; preds = %163
  %165 = invoke noundef nonnull align 8 dereferenceable(32) ptr @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEpLERKS4_(ptr noundef nonnull align 8 dereferenceable(32) %16, ptr noundef nonnull align 8 dereferenceable(32) %20)
          to label %166 unwind label %171

166:                                              ; preds = %164
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %20) #6
  call void @llvm.lifetime.end.p0(i64 32, ptr %20) #6
  br label %195

167:                                              ; preds = %163
  %168 = landingpad { ptr, i32 }
          cleanup
  %169 = extractvalue { ptr, i32 } %168, 0
  store ptr %169, ptr %7, align 8
  %170 = extractvalue { ptr, i32 } %168, 1
  store i32 %170, ptr %8, align 4
  br label %175

171:                                              ; preds = %164
  %172 = landingpad { ptr, i32 }
          cleanup
  %173 = extractvalue { ptr, i32 } %172, 0
  store ptr %173, ptr %7, align 8
  %174 = extractvalue { ptr, i32 } %172, 1
  store i32 %174, ptr %8, align 4
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %20) #6
  br label %175

175:                                              ; preds = %171, %167
  call void @llvm.lifetime.end.p0(i64 32, ptr %20) #6
  br label %199

176:                                              ; preds = %162
  call void @llvm.lifetime.start.p0(i64 32, ptr %21) #6
  call void @llvm.lifetime.start.p0(i64 32, ptr %22) #6
  invoke void @_ZN9NOMAD_4_314AllStopReasons25getBaseStopReasonAsStringB5cxx11Ev(ptr dead_on_unwind writable sret(%"class.std::__cxx11::basic_string") align 8 %22)
          to label %177 unwind label %181

177:                                              ; preds = %176
  invoke void @_ZStplIcSt11char_traitsIcESaIcEENSt7__cxx1112basic_stringIT_T0_T1_EEOS8_PKS5_(ptr dead_on_unwind writable sret(%"class.std::__cxx11::basic_string") align 8 %21, ptr noundef nonnull align 8 dereferenceable(32) %22, ptr noundef @.str.39)
          to label %178 unwind label %185

178:                                              ; preds = %177
  %179 = invoke noundef nonnull align 8 dereferenceable(32) ptr @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEpLERKS4_(ptr noundef nonnull align 8 dereferenceable(32) %16, ptr noundef nonnull align 8 dereferenceable(32) %21)
          to label %180 unwind label %189

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

181:                                              ; preds = %176
  %182 = landingpad { ptr, i32 }
          cleanup
  %183 = extractvalue { ptr, i32 } %182, 0
  store ptr %183, ptr %7, align 8
  %184 = extractvalue { ptr, i32 } %182, 1
  store i32 %184, ptr %8, align 4
  br label %194

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

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

193:                                              ; preds = %189, %185
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %22) #6
  br label %194

194:                                              ; preds = %193, %181
  call void @llvm.lifetime.end.p0(i64 32, ptr %22) #6
  call void @llvm.lifetime.end.p0(i64 32, ptr %21) #6
  br label %199

195:                                              ; preds = %180, %166
  br label %196

196:                                              ; preds = %195, %137
  invoke void @_ZN9NOMAD_4_311OutputQueue3AddERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEENS_11OutputLevelE(ptr noundef nonnull align 8 dereferenceable(32) %16, i32 noundef 9)
          to label %197 unwind label %142

197:                                              ; preds = %196
  invoke void @_ZN9NOMAD_4_311OutputQueue5FlushEv()
          to label %198 unwind label %142

198:                                              ; preds = %197
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %16) #6
  call void @llvm.lifetime.end.p0(i64 32, ptr %16) #6
  br label %201

199:                                              ; preds = %194, %175, %159, %142
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %16) #6
  br label %200

200:                                              ; preds = %199, %138
  call void @llvm.lifetime.end.p0(i64 32, ptr %16) #6
  br label %648

201:                                              ; preds = %198, %125
  br label %204

202:                                              ; preds = %123
  %203 = load i32, ptr %3, align 4, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 4, ptr %23) #6
  store i32 0, ptr %23, align 4, !tbaa !17
  call void @_ZN9NOMAD_4_316EvaluatorControl13setStopReasonEiRKNS_22EvalMainThreadStopTypeE(ptr noundef nonnull align 8 dereferenceable(352) %69, i32 noundef %203, ptr noundef nonnull align 4 dereferenceable(4) %23)
  call void @llvm.lifetime.end.p0(i64 4, ptr %23) #6
  br label %204

204:                                              ; preds = %202, %201
  call void @_ZN9NOMAD_4_316EvaluatorControl17resetSuccessStatsEv(ptr noundef nonnull align 8 dereferenceable(352) %69)
  call void @llvm.lifetime.start.p0(i64 4, ptr %24) #6
  store i32 9, ptr %24, align 4, !tbaa !19
  %205 = call noundef zeroext i1 @_ZN9NOMAD_4_311OutputQueue9GoodLevelERKNS_11OutputLevelE(ptr noundef nonnull align 4 dereferenceable(4) %24)
  call void @llvm.lifetime.end.p0(i64 4, ptr %24) #6
  br i1 %205, label %206, label %304

206:                                              ; preds = %204
  call void @llvm.lifetime.start.p0(i64 32, ptr %25) #6
  call void @llvm.lifetime.start.p0(i64 1, ptr %26) #6
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %26) #6
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %25, ptr noundef @.str.40, ptr noundef nonnull align 1 dereferenceable(1) %26)
          to label %207 unwind label %233

207:                                              ; preds = %206
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %26) #6
  call void @llvm.lifetime.end.p0(i64 1, ptr %26) #6
  %208 = invoke noundef nonnull align 8 dereferenceable(32) ptr @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEpLEPKc(ptr noundef nonnull align 8 dereferenceable(32) %25, ptr noundef @.str.41)
          to label %209 unwind label %237

209:                                              ; preds = %207
  call void @llvm.lifetime.start.p0(i64 32, ptr %27) #6
  %210 = load i32, ptr %3, align 4, !tbaa !9
  %211 = invoke noundef zeroext i1 @_ZNK9NOMAD_4_316EvaluatorControl20getOpportunisticEvalEi(ptr noundef nonnull align 8 dereferenceable(352) %69, i32 noundef %210)
          to label %212 unwind label %241

212:                                              ; preds = %209
  invoke void @_ZN9NOMAD_4_312boolToStringB5cxx11Eb(ptr dead_on_unwind writable sret(%"class.std::__cxx11::basic_string") align 8 %27, i1 noundef zeroext %211)
          to label %213 unwind label %241

213:                                              ; preds = %212
  %214 = invoke noundef nonnull align 8 dereferenceable(32) ptr @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEpLERKS4_(ptr noundef nonnull align 8 dereferenceable(32) %25, ptr noundef nonnull align 8 dereferenceable(32) %27)
          to label %215 unwind label %245

215:                                              ; preds = %213
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %27) #6
  call void @llvm.lifetime.end.p0(i64 32, ptr %27) #6
  %216 = invoke noundef nonnull align 8 dereferenceable(32) ptr @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEpLEPKc(ptr noundef nonnull align 8 dereferenceable(32) %25, ptr noundef @.str.42)
          to label %217 unwind label %237

217:                                              ; preds = %215
  call void @llvm.lifetime.start.p0(i64 32, ptr %28) #6
  %218 = load i32, ptr %3, align 4, !tbaa !9
  %219 = invoke noundef zeroext i1 @_ZNK9NOMAD_4_316EvaluatorControl11getUseCacheEi(ptr noundef nonnull align 8 dereferenceable(352) %69, i32 noundef %218)
          to label %220 unwind label %250

220:                                              ; preds = %217
  invoke void @_ZN9NOMAD_4_312boolToStringB5cxx11Eb(ptr dead_on_unwind writable sret(%"class.std::__cxx11::basic_string") align 8 %28, i1 noundef zeroext %219)
          to label %221 unwind label %250

221:                                              ; preds = %220
  %222 = invoke noundef nonnull align 8 dereferenceable(32) ptr @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEpLERKS4_(ptr noundef nonnull align 8 dereferenceable(32) %25, ptr noundef nonnull align 8 dereferenceable(32) %28)
          to label %223 unwind label %254

223:                                              ; preds = %221
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %28) #6
  call void @llvm.lifetime.end.p0(i64 32, ptr %28) #6
  %224 = invoke noundef nonnull align 8 dereferenceable(32) ptr @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEpLEPKc(ptr noundef nonnull align 8 dereferenceable(32) %25, ptr noundef @.str.43)
          to label %225 unwind label %237

225:                                              ; preds = %223
  call void @llvm.lifetime.start.p0(i64 16, ptr %29) #6
  %226 = load i32, ptr %3, align 4, !tbaa !9
  invoke void @_ZNK9NOMAD_4_316EvaluatorControl10getBarrierEi(ptr dead_on_unwind writable sret(%"class.std::shared_ptr.52") align 8 %29, ptr noundef nonnull align 8 dereferenceable(352) %69, i32 noundef %226)
          to label %227 unwind label %259

227:                                              ; preds = %225
  %228 = call noundef zeroext i1 @_ZSteqIN9NOMAD_4_311BarrierBaseEEbDnRKSt10shared_ptrIT_E(ptr null, ptr noundef nonnull align 8 dereferenceable(16) %29) #6
  br i1 %228, label %229, label %267

229:                                              ; preds = %227
  %230 = invoke noundef nonnull align 8 dereferenceable(32) ptr @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEpLEPKc(ptr noundef nonnull align 8 dereferenceable(32) %25, ptr noundef @.str.44)
          to label %231 unwind label %263

231:                                              ; preds = %229
  invoke void @_ZN9NOMAD_4_311OutputQueue3AddERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEENS_11OutputLevelE(ptr noundef nonnull align 8 dereferenceable(32) %25, i32 noundef 9)
          to label %232 unwind label %263

232:                                              ; preds = %231
  br label %299

233:                                              ; preds = %206
  %234 = landingpad { ptr, i32 }
          cleanup
  %235 = extractvalue { ptr, i32 } %234, 0
  store ptr %235, ptr %7, align 8
  %236 = extractvalue { ptr, i32 } %234, 1
  store i32 %236, ptr %8, align 4
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %26) #6
  call void @llvm.lifetime.end.p0(i64 1, ptr %26) #6
  br label %303

237:                                              ; preds = %223, %215, %207
  %238 = landingpad { ptr, i32 }
          cleanup
  %239 = extractvalue { ptr, i32 } %238, 0
  store ptr %239, ptr %7, align 8
  %240 = extractvalue { ptr, i32 } %238, 1
  store i32 %240, ptr %8, align 4
  br label %302

241:                                              ; preds = %212, %209
  %242 = landingpad { ptr, i32 }
          cleanup
  %243 = extractvalue { ptr, i32 } %242, 0
  store ptr %243, ptr %7, align 8
  %244 = extractvalue { ptr, i32 } %242, 1
  store i32 %244, ptr %8, align 4
  br label %249

245:                                              ; preds = %213
  %246 = landingpad { ptr, i32 }
          cleanup
  %247 = extractvalue { ptr, i32 } %246, 0
  store ptr %247, ptr %7, align 8
  %248 = extractvalue { ptr, i32 } %246, 1
  store i32 %248, ptr %8, align 4
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %27) #6
  br label %249

249:                                              ; preds = %245, %241
  call void @llvm.lifetime.end.p0(i64 32, ptr %27) #6
  br label %302

250:                                              ; preds = %220, %217
  %251 = landingpad { ptr, i32 }
          cleanup
  %252 = extractvalue { ptr, i32 } %251, 0
  store ptr %252, ptr %7, align 8
  %253 = extractvalue { ptr, i32 } %251, 1
  store i32 %253, ptr %8, align 4
  br label %258

254:                                              ; preds = %221
  %255 = landingpad { ptr, i32 }
          cleanup
  %256 = extractvalue { ptr, i32 } %255, 0
  store ptr %256, ptr %7, align 8
  %257 = extractvalue { ptr, i32 } %255, 1
  store i32 %257, ptr %8, align 4
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %28) #6
  br label %258

258:                                              ; preds = %254, %250
  call void @llvm.lifetime.end.p0(i64 32, ptr %28) #6
  br label %302

259:                                              ; preds = %225
  %260 = landingpad { ptr, i32 }
          cleanup
  %261 = extractvalue { ptr, i32 } %260, 0
  store ptr %261, ptr %7, align 8
  %262 = extractvalue { ptr, i32 } %260, 1
  store i32 %262, ptr %8, align 4
  br label %301

263:                                              ; preds = %267, %231, %229
  %264 = landingpad { ptr, i32 }
          cleanup
  %265 = extractvalue { ptr, i32 } %264, 0
  store ptr %265, ptr %7, align 8
  %266 = extractvalue { ptr, i32 } %264, 1
  store i32 %266, ptr %8, align 4
  br label %300

267:                                              ; preds = %227
  invoke void @_ZN9NOMAD_4_311OutputQueue3AddERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEENS_11OutputLevelE(ptr noundef nonnull align 8 dereferenceable(32) %25, i32 noundef 9)
          to label %268 unwind label %263

268:                                              ; preds = %267
  call void @llvm.lifetime.start.p0(i64 24, ptr %30) #6
  %269 = call noundef ptr @_ZNKSt19__shared_ptr_accessIN9NOMAD_4_311BarrierBaseELN9__gnu_cxx12_Lock_policyE2ELb0ELb0EEptEv(ptr noundef nonnull align 1 dereferenceable(1) %29) #6
  %270 = load ptr, ptr %269, align 8, !tbaa !21
  %271 = getelementptr inbounds ptr, ptr %270, i64 9
  %272 = load ptr, ptr %271, align 8
  invoke void %272(ptr dead_on_unwind writable sret(%"class.std::vector.143") align 8 %30, ptr noundef nonnull align 8 dereferenceable(120) %269, i64 noundef 4)
          to label %273 unwind label %283

273:                                              ; preds = %268
  call void @llvm.lifetime.start.p0(i64 8, ptr %31) #6
  store ptr %30, ptr %31, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %32) #6
  %274 = load ptr, ptr %31, align 8, !tbaa !5
  %275 = call ptr @_ZNSt6vectorINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESaIS5_EE5beginEv(ptr noundef nonnull align 8 dereferenceable(24) %274) #6
  %276 = getelementptr inbounds %"class.__gnu_cxx::__normal_iterator.148", ptr %32, i32 0, i32 0
  store ptr %275, ptr %276, align 8
  call void @llvm.lifetime.start.p0(i64 8, ptr %33) #6
  %277 = load ptr, ptr %31, align 8, !tbaa !5
  %278 = call ptr @_ZNSt6vectorINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESaIS5_EE3endEv(ptr noundef nonnull align 8 dereferenceable(24) %277) #6
  %279 = getelementptr inbounds %"class.__gnu_cxx::__normal_iterator.148", ptr %33, i32 0, i32 0
  store ptr %278, ptr %279, align 8
  br label %280

280:                                              ; preds = %291, %273
  %281 = call noundef zeroext i1 @_ZN9__gnu_cxxneIPNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESt6vectorIS6_SaIS6_EEEEbRKNS_17__normal_iteratorIT_T0_EESG_(ptr noundef nonnull align 8 dereferenceable(8) %32, ptr noundef nonnull align 8 dereferenceable(8) %33) #6
  br i1 %281, label %287, label %282

282:                                              ; preds = %280
  call void @llvm.lifetime.end.p0(i64 8, ptr %33) #6
  call void @llvm.lifetime.end.p0(i64 8, ptr %32) #6
  call void @llvm.lifetime.end.p0(i64 8, ptr %31) #6
  br label %297

283:                                              ; preds = %268
  %284 = landingpad { ptr, i32 }
          cleanup
  %285 = extractvalue { ptr, i32 } %284, 0
  store ptr %285, ptr %7, align 8
  %286 = extractvalue { ptr, i32 } %284, 1
  store i32 %286, ptr %8, align 4
  br label %298

287:                                              ; preds = %280
  call void @llvm.lifetime.start.p0(i64 8, ptr %34) #6
  %288 = call noundef nonnull align 8 dereferenceable(32) ptr @_ZNK9__gnu_cxx17__normal_iteratorIPNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESt6vectorIS6_SaIS6_EEEdeEv(ptr noundef nonnull align 8 dereferenceable(8) %32) #6
  store ptr %288, ptr %34, align 8, !tbaa !5
  %289 = load ptr, ptr %34, align 8, !tbaa !5
  invoke void @_ZN9NOMAD_4_311OutputQueue3AddERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEENS_11OutputLevelE(ptr noundef nonnull align 8 dereferenceable(32) %289, i32 noundef 9)
          to label %290 unwind label %293

290:                                              ; preds = %287
  call void @llvm.lifetime.end.p0(i64 8, ptr %34) #6
  br label %291

291:                                              ; preds = %290
  %292 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZN9__gnu_cxx17__normal_iteratorIPNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESt6vectorIS6_SaIS6_EEEppEv(ptr noundef nonnull align 8 dereferenceable(8) %32) #6
  br label %280

293:                                              ; preds = %287
  %294 = landingpad { ptr, i32 }
          cleanup
  %295 = extractvalue { ptr, i32 } %294, 0
  store ptr %295, ptr %7, align 8
  %296 = extractvalue { ptr, i32 } %294, 1
  store i32 %296, ptr %8, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %34) #6
  call void @llvm.lifetime.end.p0(i64 8, ptr %33) #6
  call void @llvm.lifetime.end.p0(i64 8, ptr %32) #6
  call void @llvm.lifetime.end.p0(i64 8, ptr %31) #6
  call void @_ZNSt6vectorINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESaIS5_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %30) #6
  br label %298

297:                                              ; preds = %282
  call void @_ZNSt6vectorINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESaIS5_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %30) #6
  call void @llvm.lifetime.end.p0(i64 24, ptr %30) #6
  br label %299

298:                                              ; preds = %293, %283
  call void @llvm.lifetime.end.p0(i64 24, ptr %30) #6
  br label %300

299:                                              ; preds = %297, %232
  call void @_ZNSt12__shared_ptrIN9NOMAD_4_311BarrierBaseELN9__gnu_cxx12_Lock_policyE2EED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %29) #6
  call void @llvm.lifetime.end.p0(i64 16, ptr %29) #6
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %25) #6
  call void @llvm.lifetime.end.p0(i64 32, ptr %25) #6
  br label %304

300:                                              ; preds = %298, %263
  call void @_ZNSt12__shared_ptrIN9NOMAD_4_311BarrierBaseELN9__gnu_cxx12_Lock_policyE2EED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %29) #6
  br label %301

301:                                              ; preds = %300, %259
  call void @llvm.lifetime.end.p0(i64 16, ptr %29) #6
  br label %302

302:                                              ; preds = %301, %258, %249, %237
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %25) #6
  br label %303

303:                                              ; preds = %302, %233
  call void @llvm.lifetime.end.p0(i64 32, ptr %25) #6
  br label %648

304:                                              ; preds = %299, %204
  br label %305

305:                                              ; preds = %304, %1
  call void @llvm.lifetime.start.p0(i64 1, ptr %35) #6
  store i8 0, ptr %35, align 1, !tbaa !11
  call void @llvm.lifetime.start.p0(i64 8, ptr %36) #6
  store i64 0, ptr %36, align 8, !tbaa !23
  br label %306

306:                                              ; preds = %507, %305
  %307 = load i8, ptr %35, align 1, !tbaa !11, !range !13, !noundef !14
  %308 = trunc i8 %307 to i1
  br i1 %308, label %314, label %309

309:                                              ; preds = %306
  %310 = getelementptr inbounds %"class.NOMAD_4_3::EvaluatorControl", ptr %69, i32 0, i32 20
  %311 = load i8, ptr %310, align 8, !tbaa !25, !range !13, !noundef !14
  %312 = trunc i8 %311 to i1
  %313 = xor i1 %312, true
  br label %314

314:                                              ; preds = %309, %306
  %315 = phi i1 [ false, %306 ], [ %313, %309 ]
  br i1 %315, label %316, label %509

316:                                              ; preds = %314
  %317 = load i8, ptr %4, align 1, !tbaa !11, !range !13, !noundef !14
  %318 = trunc i8 %317 to i1
  br i1 %318, label %319, label %323

319:                                              ; preds = %316
  %320 = load i32, ptr %3, align 4, !tbaa !9
  %321 = call noundef zeroext i1 @_ZNK9NOMAD_4_316EvaluatorControl12stopMainEvalEi(ptr noundef nonnull align 8 dereferenceable(352) %69, i32 noundef %320)
  %322 = zext i1 %321 to i8
  store i8 %322, ptr %35, align 1, !tbaa !11
  br label %323

323:                                              ; preds = %319, %316
  %324 = load i8, ptr %35, align 1, !tbaa !11, !range !13, !noundef !14
  %325 = trunc i8 %324 to i1
  br i1 %325, label %328, label %326

326:                                              ; preds = %323
  %327 = call noundef zeroext i1 @_ZNK9NOMAD_4_316EvaluatorControl14reachedMaxEvalEv(ptr noundef nonnull align 8 dereferenceable(352) %69)
  br label %328

328:                                              ; preds = %326, %323
  %329 = phi i1 [ true, %323 ], [ %327, %326 ]
  %330 = zext i1 %329 to i8
  store i8 %330, ptr %35, align 1, !tbaa !11
  call void @llvm.lifetime.start.p0(i64 24, ptr %37) #6
  call void @_ZNSt6vectorISt10shared_ptrIN9NOMAD_4_314EvalQueuePointEESaIS3_EEC2Ev(ptr noundef nonnull align 8 dereferenceable(24) %37) #6
  %331 = load i8, ptr %35, align 1, !tbaa !11, !range !13, !noundef !14
  %332 = trunc i8 %331 to i1
  br i1 %332, label %473, label %333

333:                                              ; preds = %328
  %334 = invoke noundef zeroext i1 @_ZN9NOMAD_4_316EvaluatorControl8popBlockERSt6vectorISt10shared_ptrINS_14EvalQueuePointEESaIS4_EE(ptr noundef nonnull align 8 dereferenceable(352) %69, ptr noundef nonnull align 8 dereferenceable(24) %37)
          to label %335 unwind label %347

335:                                              ; preds = %333
  br i1 %334, label %336, label %473

336:                                              ; preds = %335
  %337 = invoke noundef zeroext i1 @_ZN9NOMAD_4_316EvaluatorControl9evalBlockERSt6vectorISt10shared_ptrINS_14EvalQueuePointEESaIS4_EE(ptr noundef nonnull align 8 dereferenceable(352) %69, ptr noundef nonnull align 8 dereferenceable(24) %37)
          to label %338 unwind label %347

338:                                              ; preds = %336
  br i1 %337, label %339, label %450

339:                                              ; preds = %338
  call void @llvm.lifetime.start.p0(i64 8, ptr %38) #6
  %340 = call ptr @_ZNSt6vectorISt10shared_ptrIN9NOMAD_4_314EvalQueuePointEESaIS3_EE5beginEv(ptr noundef nonnull align 8 dereferenceable(24) %37) #6
  %341 = getelementptr inbounds %"class.__gnu_cxx::__normal_iterator.107", ptr %38, i32 0, i32 0
  store ptr %340, ptr %341, align 8
  br label %342

342:                                              ; preds = %443, %339
  call void @llvm.lifetime.start.p0(i64 8, ptr %39) #6
  %343 = call ptr @_ZNSt6vectorISt10shared_ptrIN9NOMAD_4_314EvalQueuePointEESaIS3_EE3endEv(ptr noundef nonnull align 8 dereferenceable(24) %37) #6
  %344 = getelementptr inbounds %"class.__gnu_cxx::__normal_iterator.107", ptr %39, i32 0, i32 0
  store ptr %343, ptr %344, align 8
  %345 = call noundef zeroext i1 @_ZN9__gnu_cxxltIPSt10shared_ptrIN9NOMAD_4_314EvalQueuePointEESt6vectorIS4_SaIS4_EEEEbRKNS_17__normal_iteratorIT_T0_EESE_(ptr noundef nonnull align 8 dereferenceable(8) %38, ptr noundef nonnull align 8 dereferenceable(8) %39) #6
  call void @llvm.lifetime.end.p0(i64 8, ptr %39) #6
  br i1 %345, label %351, label %346

346:                                              ; preds = %342
  call void @llvm.lifetime.end.p0(i64 8, ptr %38) #6
  br label %448

347:                                              ; preds = %477, %448, %336, %333
  %348 = landingpad { ptr, i32 }
          cleanup
  %349 = extractvalue { ptr, i32 } %348, 0
  store ptr %349, ptr %7, align 8
  %350 = extractvalue { ptr, i32 } %348, 1
  store i32 %350, ptr %8, align 4
  br label %508

351:                                              ; preds = %342
  call void @llvm.lifetime.start.p0(i64 16, ptr %40) #6
  %352 = call noundef nonnull align 8 dereferenceable(16) ptr @_ZNK9__gnu_cxx17__normal_iteratorIPSt10shared_ptrIN9NOMAD_4_314EvalQueuePointEESt6vectorIS4_SaIS4_EEEdeEv(ptr noundef nonnull align 8 dereferenceable(8) %38) #6
  call void @_ZNSt10shared_ptrIN9NOMAD_4_314EvalQueuePointEEC2ERKS2_(ptr noundef nonnull align 8 dereferenceable(16) %40, ptr noundef nonnull align 8 dereferenceable(16) %352) #6
  call void @llvm.lifetime.start.p0(i64 4, ptr %41) #6
  %353 = call noundef ptr @_ZNKSt19__shared_ptr_accessIN9NOMAD_4_314EvalQueuePointELN9__gnu_cxx12_Lock_policyE2ELb0ELb0EEptEv(ptr noundef nonnull align 1 dereferenceable(1) %40) #6
  %354 = invoke noundef i32 @_ZNK9NOMAD_4_39EvalPoint13getThreadAlgoEv(ptr noundef nonnull align 8 dereferenceable(160) %353)
          to label %355 unwind label %369

355:                                              ; preds = %351
  store i32 %354, ptr %41, align 4, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 4, ptr %42) #6
  %356 = call noundef ptr @_ZNKSt19__shared_ptr_accessIN9NOMAD_4_314EvalQueuePointELN9__gnu_cxx12_Lock_policyE2ELb0ELb0EEptEv(ptr noundef nonnull align 1 dereferenceable(1) %40) #6
  %357 = invoke noundef nonnull align 4 dereferenceable(4) ptr @_ZNK9NOMAD_4_314EvalQueuePoint10getSuccessEv(ptr noundef nonnull align 8 dereferenceable(184) %356)
          to label %358 unwind label %373

358:                                              ; preds = %355
  %359 = load i32, ptr %357, align 4, !tbaa !15
  store i32 %359, ptr %42, align 4, !tbaa !15
  %360 = load i32, ptr %42, align 4, !tbaa !15
  %361 = load i32, ptr %41, align 4, !tbaa !9
  %362 = invoke noundef nonnull align 4 dereferenceable(4) ptr @_ZNK9NOMAD_4_316EvaluatorControl14getSuccessTypeEi(ptr noundef nonnull align 8 dereferenceable(352) %69, i32 noundef %361)
          to label %363 unwind label %373

363:                                              ; preds = %358
  %364 = load i32, ptr %362, align 4, !tbaa !15
  %365 = icmp sgt i32 %360, %364
  br i1 %365, label %366, label %377

366:                                              ; preds = %363
  %367 = load i32, ptr %41, align 4, !tbaa !9
  invoke void @_ZN9NOMAD_4_316EvaluatorControl14setSuccessTypeEiRKNS_11SuccessTypeE(ptr noundef nonnull align 8 dereferenceable(352) %69, i32 noundef %367, ptr noundef nonnull align 4 dereferenceable(4) %42)
          to label %368 unwind label %373

368:                                              ; preds = %366
  br label %377

369:                                              ; preds = %351
  %370 = landingpad { ptr, i32 }
          cleanup
  %371 = extractvalue { ptr, i32 } %370, 0
  store ptr %371, ptr %7, align 8
  %372 = extractvalue { ptr, i32 } %370, 1
  store i32 %372, ptr %8, align 4
  br label %447

373:                                              ; preds = %425, %421, %413, %409, %405, %399, %395, %388, %383, %380, %366, %358, %355
  %374 = landingpad { ptr, i32 }
          cleanup
  %375 = extractvalue { ptr, i32 } %374, 0
  store ptr %375, ptr %7, align 8
  %376 = extractvalue { ptr, i32 } %374, 1
  store i32 %376, ptr %8, align 4
  br label %446

377:                                              ; preds = %368, %363
  %378 = load i32, ptr %42, align 4, !tbaa !15
  %379 = icmp eq i32 4, %378
  br i1 %379, label %380, label %405

380:                                              ; preds = %377
  %381 = call noundef ptr @_ZNKSt19__shared_ptr_accessIN9NOMAD_4_314EvalQueuePointELN9__gnu_cxx12_Lock_policyE2ELb0ELb0EEptEv(ptr noundef nonnull align 1 dereferenceable(1) %40) #6
  %382 = invoke noundef nonnull align 4 dereferenceable(4) ptr @_ZNK9NOMAD_4_314EvalQueuePoint11getEvalTypeEv(ptr noundef nonnull align 8 dereferenceable(184) %381)
          to label %383 unwind label %373

383:                                              ; preds = %380
  %384 = load i32, ptr %382, align 4, !tbaa !57
  %385 = load i32, ptr %41, align 4, !tbaa !9
  %386 = invoke noundef zeroext i1 @_ZNK9NOMAD_4_316EvaluatorControl12evalTypeAsBBENS_8EvalTypeEi(ptr noundef nonnull align 8 dereferenceable(352) %69, i32 noundef %384, i32 noundef %385)
          to label %387 unwind label %373

387:                                              ; preds = %383
  br i1 %386, label %388, label %405

388:                                              ; preds = %387
  %389 = call noundef ptr @_ZNKSt19__shared_ptr_accessIN9NOMAD_4_314EvalQueuePointELN9__gnu_cxx12_Lock_policyE2ELb0ELb0EEptEv(ptr noundef nonnull align 1 dereferenceable(1) %40) #6
  %390 = invoke noundef zeroext i1 @_ZNK9NOMAD_4_39EvalPoint16getGenByPhaseOneEv(ptr noundef nonnull align 8 dereferenceable(160) %389)
          to label %391 unwind label %373

391:                                              ; preds = %388
  br i1 %390, label %392, label %395

392:                                              ; preds = %391
  %393 = getelementptr inbounds %"class.NOMAD_4_3::EvaluatorControl", ptr %69, i32 0, i32 19
  %394 = call noundef i64 @_ZNSt13__atomic_baseImEppEi(ptr noundef nonnull align 8 dereferenceable(8) %393, i32 noundef 0) #6
  br label %395

395:                                              ; preds = %392, %391
  %396 = call noundef ptr @_ZNKSt19__shared_ptr_accessIN9NOMAD_4_314EvalQueuePointELN9__gnu_cxx12_Lock_policyE2ELb0ELb0EEptEv(ptr noundef nonnull align 1 dereferenceable(1) %40) #6
  %397 = invoke noundef zeroext i1 @_ZNK9NOMAD_4_314EvalQueuePoint18getRelativeSuccessEv(ptr noundef nonnull align 8 dereferenceable(184) %396)
          to label %398 unwind label %373

398:                                              ; preds = %395
  br i1 %397, label %404, label %399

399:                                              ; preds = %398
  %400 = invoke noundef i64 @_ZNK9NOMAD_4_316EvaluatorControl9getBbEvalEv(ptr noundef nonnull align 8 dereferenceable(352) %69)
          to label %401 unwind label %373

401:                                              ; preds = %399
  %402 = getelementptr inbounds %"class.NOMAD_4_3::EvaluatorControl", ptr %69, i32 0, i32 16
  %403 = call noundef i64 @_ZNSt13__atomic_baseImEaSEm(ptr noundef nonnull align 8 dereferenceable(8) %402, i64 noundef %400) #6
  br label %404

404:                                              ; preds = %401, %398
  br label %405

405:                                              ; preds = %404, %387, %377
  %406 = call noundef ptr @_ZNKSt19__shared_ptr_accessIN9NOMAD_4_314EvalQueuePointELN9__gnu_cxx12_Lock_policyE2ELb0ELb0EEptEv(ptr noundef nonnull align 1 dereferenceable(1) %40) #6
  %407 = invoke noundef zeroext i1 @_ZNK9NOMAD_4_314EvalQueuePoint18getRelativeSuccessEv(ptr noundef nonnull align 8 dereferenceable(184) %406)
          to label %408 unwind label %373

408:                                              ; preds = %405
  br i1 %407, label %409, label %420

409:                                              ; preds = %408
  %410 = getelementptr inbounds %"class.NOMAD_4_3::EvaluatorControl", ptr %69, i32 0, i32 18
  %411 = call noundef i64 @_ZNSt13__atomic_baseImEppEi(ptr noundef nonnull align 8 dereferenceable(8) %410, i32 noundef 0) #6
  %412 = invoke noundef i64 @_ZNK9NOMAD_4_316EvaluatorControl12getBlockEvalEv(ptr noundef nonnull align 8 dereferenceable(352) %69)
          to label %413 unwind label %373

413:                                              ; preds = %409
  %414 = getelementptr inbounds %"class.NOMAD_4_3::EvaluatorControl", ptr %69, i32 0, i32 14
  %415 = call noundef i64 @_ZNSt13__atomic_baseImEaSEm(ptr noundef nonnull align 8 dereferenceable(8) %414, i64 noundef %412) #6
  %416 = invoke noundef i64 @_ZNK9NOMAD_4_316EvaluatorControl9getBbEvalEv(ptr noundef nonnull align 8 dereferenceable(352) %69)
          to label %417 unwind label %373

417:                                              ; preds = %413
  %418 = getelementptr inbounds %"class.NOMAD_4_3::EvaluatorControl", ptr %69, i32 0, i32 15
  %419 = call noundef i64 @_ZNSt13__atomic_baseImEaSEm(ptr noundef nonnull align 8 dereferenceable(8) %418, i64 noundef %416) #6
  br label %420

420:                                              ; preds = %417, %408
  call void @_ZNSt10shared_ptrIN9NOMAD_4_314EvalQueuePointEEC2ERKS2_(ptr noundef nonnull align 8 dereferenceable(16) %43, ptr noundef nonnull align 8 dereferenceable(16) %40) #6
  invoke void @_ZNK9NOMAD_4_316EvaluatorControl19addDirectToFileInfoESt10shared_ptrINS_14EvalQueuePointEE(ptr noundef nonnull align 8 dereferenceable(352) %69, ptr noundef %43)
          to label %421 unwind label %434

421:                                              ; preds = %420
  call void @_ZNSt12__shared_ptrIN9NOMAD_4_314EvalQueuePointELN9__gnu_cxx12_Lock_policyE2EED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %43) #6
  %422 = load i32, ptr %41, align 4, !tbaa !9
  %423 = invoke noundef zeroext i1 @_ZNK9NOMAD_4_316EvaluatorControl20getOpportunisticEvalEi(ptr noundef nonnull align 8 dereferenceable(352) %69, i32 noundef %422)
          to label %424 unwind label %373

424:                                              ; preds = %421
  br i1 %423, label %425, label %442

425:                                              ; preds = %424
  %426 = load i32, ptr %41, align 4, !tbaa !9
  %427 = invoke noundef nonnull align 4 dereferenceable(4) ptr @_ZNK9NOMAD_4_316EvaluatorControl14getSuccessTypeEi(ptr noundef nonnull align 8 dereferenceable(352) %69, i32 noundef %426)
          to label %428 unwind label %373

428:                                              ; preds = %425
  %429 = load i32, ptr %427, align 4, !tbaa !15
  %430 = icmp sge i32 %429, 4
  br i1 %430, label %431, label %442

431:                                              ; preds = %428
  %432 = load i32, ptr %41, align 4, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 4, ptr %44) #6
  store i32 3, ptr %44, align 4, !tbaa !17
  invoke void @_ZN9NOMAD_4_316EvaluatorControl13setStopReasonEiRKNS_22EvalMainThreadStopTypeE(ptr noundef nonnull align 8 dereferenceable(352) %69, i32 noundef %432, ptr noundef nonnull align 4 dereferenceable(4) %44)
          to label %433 unwind label %438

433:                                              ; preds = %431
  call void @llvm.lifetime.end.p0(i64 4, ptr %44) #6
  br label %442

434:                                              ; preds = %420
  %435 = landingpad { ptr, i32 }
          cleanup
  %436 = extractvalue { ptr, i32 } %435, 0
  store ptr %436, ptr %7, align 8
  %437 = extractvalue { ptr, i32 } %435, 1
  store i32 %437, ptr %8, align 4
  call void @_ZNSt12__shared_ptrIN9NOMAD_4_314EvalQueuePointELN9__gnu_cxx12_Lock_policyE2EED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %43) #6
  br label %446

438:                                              ; preds = %431
  %439 = landingpad { ptr, i32 }
          cleanup
  %440 = extractvalue { ptr, i32 } %439, 0
  store ptr %440, ptr %7, align 8
  %441 = extractvalue { ptr, i32 } %439, 1
  store i32 %441, ptr %8, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %44) #6
  br label %446

442:                                              ; preds = %433, %428, %424
  call void @llvm.lifetime.end.p0(i64 4, ptr %42) #6
  call void @llvm.lifetime.end.p0(i64 4, ptr %41) #6
  call void @_ZNSt12__shared_ptrIN9NOMAD_4_314EvalQueuePointELN9__gnu_cxx12_Lock_policyE2EED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %40) #6
  call void @llvm.lifetime.end.p0(i64 16, ptr %40) #6
  br label %443

443:                                              ; preds = %442
  %444 = call ptr @_ZN9__gnu_cxx17__normal_iteratorIPSt10shared_ptrIN9NOMAD_4_314EvalQueuePointEESt6vectorIS4_SaIS4_EEEppEi(ptr noundef nonnull align 8 dereferenceable(8) %38, i32 noundef 0) #6
  %445 = getelementptr inbounds %"class.__gnu_cxx::__normal_iterator.107", ptr %45, i32 0, i32 0
  store ptr %444, ptr %445, align 8
  br label %342, !llvm.loop !59

446:                                              ; preds = %438, %434, %373
  call void @llvm.lifetime.end.p0(i64 4, ptr %42) #6
  br label %447

447:                                              ; preds = %446, %369
  call void @llvm.lifetime.end.p0(i64 4, ptr %41) #6
  call void @_ZNSt12__shared_ptrIN9NOMAD_4_314EvalQueuePointELN9__gnu_cxx12_Lock_policyE2EED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %40) #6
  call void @llvm.lifetime.end.p0(i64 16, ptr %40) #6
  call void @llvm.lifetime.end.p0(i64 8, ptr %38) #6
  br label %508

448:                                              ; preds = %346
  invoke void @_ZN9NOMAD_4_316EvaluatorControl12addStatsInfoERKSt6vectorISt10shared_ptrINS_14EvalQueuePointEESaIS4_EE(ptr noundef nonnull align 8 dereferenceable(352) %69, ptr noundef nonnull align 8 dereferenceable(24) %37)
          to label %449 unwind label %347

449:                                              ; preds = %448
  br label %450

450:                                              ; preds = %449, %338
  call void @llvm.lifetime.start.p0(i64 8, ptr %46) #6
  store i64 0, ptr %46, align 8, !tbaa !23
  br label %451

451:                                              ; preds = %465, %450
  %452 = load i64, ptr %46, align 8, !tbaa !23
  %453 = call noundef i64 @_ZNKSt6vectorISt10shared_ptrIN9NOMAD_4_314EvalQueuePointEESaIS3_EE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24) %37) #6
  %454 = icmp ult i64 %452, %453
  br i1 %454, label %456, label %455

455:                                              ; preds = %451
  call void @llvm.lifetime.end.p0(i64 8, ptr %46) #6
  br label %472

456:                                              ; preds = %451
  %457 = load i64, ptr %46, align 8, !tbaa !23
  %458 = call noundef nonnull align 8 dereferenceable(16) ptr @_ZNSt6vectorISt10shared_ptrIN9NOMAD_4_314EvalQueuePointEESaIS3_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %37, i64 noundef %457) #6
  %459 = call noundef ptr @_ZNKSt19__shared_ptr_accessIN9NOMAD_4_314EvalQueuePointELN9__gnu_cxx12_Lock_policyE2ELb0ELb0EEptEv(ptr noundef nonnull align 1 dereferenceable(1) %458) #6
  %460 = invoke noundef i32 @_ZNK9NOMAD_4_39EvalPoint13getThreadAlgoEv(ptr noundef nonnull align 8 dereferenceable(160) %459)
          to label %461 unwind label %468

461:                                              ; preds = %456
  %462 = invoke noundef nonnull align 8 dereferenceable(248) ptr @_ZNK9NOMAD_4_316EvaluatorControl17getMainThreadInfoEi(ptr noundef nonnull align 8 dereferenceable(352) %69, i32 noundef %460)
          to label %463 unwind label %468

463:                                              ; preds = %461
  invoke void @_ZN9NOMAD_4_317EvcMainThreadInfo19decCurrentlyRunningEv(ptr noundef nonnull align 8 dereferenceable(248) %462)
          to label %464 unwind label %468

464:                                              ; preds = %463
  br label %465

465:                                              ; preds = %464
  %466 = load i64, ptr %46, align 8, !tbaa !23
  %467 = add i64 %466, 1
  store i64 %467, ptr %46, align 8, !tbaa !23
  br label %451, !llvm.loop !61

468:                                              ; preds = %463, %461, %456
  %469 = landingpad { ptr, i32 }
          cleanup
  %470 = extractvalue { ptr, i32 } %469, 0
  store ptr %470, ptr %7, align 8
  %471 = extractvalue { ptr, i32 } %469, 1
  store i32 %471, ptr %8, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %46) #6
  br label %508

472:                                              ; preds = %455
  br label %504

473:                                              ; preds = %335, %328
  %474 = getelementptr inbounds %"class.NOMAD_4_3::EvaluatorControl", ptr %69, i32 0, i32 20
  %475 = load i8, ptr %474, align 8, !tbaa !25, !range !13, !noundef !14
  %476 = trunc i8 %475 to i1
  br i1 %476, label %479, label %477

477:                                              ; preds = %473
  invoke void @_ZNK9NOMAD_4_316EvaluatorControl23displayDebugWaitingInfoERl(ptr noundef nonnull align 8 dereferenceable(352) %69, ptr noundef nonnull align 8 dereferenceable(8) %36)
          to label %478 unwind label %347

478:                                              ; preds = %477
  br label %503

479:                                              ; preds = %473
  %480 = load i8, ptr %4, align 1, !tbaa !11, !range !13, !noundef !14
  %481 = trunc i8 %480 to i1
  br i1 %481, label %482, label %502

482:                                              ; preds = %479
  call void @llvm.lifetime.start.p0(i64 4, ptr %47) #6
  store i32 9, ptr %47, align 4, !tbaa !19
  %483 = invoke noundef zeroext i1 @_ZN9NOMAD_4_311OutputQueue9GoodLevelERKNS_11OutputLevelE(ptr noundef nonnull align 4 dereferenceable(4) %47)
          to label %484 unwind label %488

484:                                              ; preds = %482
  call void @llvm.lifetime.end.p0(i64 4, ptr %47) #6
  br i1 %483, label %485, label %501

485:                                              ; preds = %484
  call void @llvm.lifetime.start.p0(i64 32, ptr %48) #6
  call void @llvm.lifetime.start.p0(i64 1, ptr %49) #6
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %49) #6
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %48, ptr noundef @.str.45, ptr noundef nonnull align 1 dereferenceable(1) %49)
          to label %486 unwind label %492

486:                                              ; preds = %485
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %49) #6
  call void @llvm.lifetime.end.p0(i64 1, ptr %49) #6
  invoke void @_ZN9NOMAD_4_311OutputQueue3AddERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEENS_11OutputLevelE(ptr noundef nonnull align 8 dereferenceable(32) %48, i32 noundef 9)
          to label %487 unwind label %496

487:                                              ; preds = %486
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %48) #6
  call void @llvm.lifetime.end.p0(i64 32, ptr %48) #6
  br label %501

488:                                              ; preds = %482
  %489 = landingpad { ptr, i32 }
          cleanup
  %490 = extractvalue { ptr, i32 } %489, 0
  store ptr %490, ptr %7, align 8
  %491 = extractvalue { ptr, i32 } %489, 1
  store i32 %491, ptr %8, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %47) #6
  br label %508

492:                                              ; preds = %485
  %493 = landingpad { ptr, i32 }
          cleanup
  %494 = extractvalue { ptr, i32 } %493, 0
  store ptr %494, ptr %7, align 8
  %495 = extractvalue { ptr, i32 } %493, 1
  store i32 %495, ptr %8, align 4
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %49) #6
  call void @llvm.lifetime.end.p0(i64 1, ptr %49) #6
  br label %500

496:                                              ; preds = %486
  %497 = landingpad { ptr, i32 }
          cleanup
  %498 = extractvalue { ptr, i32 } %497, 0
  store ptr %498, ptr %7, align 8
  %499 = extractvalue { ptr, i32 } %497, 1
  store i32 %499, ptr %8, align 4
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %48) #6
  br label %500

500:                                              ; preds = %496, %492
  call void @llvm.lifetime.end.p0(i64 32, ptr %48) #6
  br label %508

501:                                              ; preds = %487, %484
  br label %502

502:                                              ; preds = %501, %479
  store i32 5, ptr %50, align 4
  br label %505

503:                                              ; preds = %478
  br label %504

504:                                              ; preds = %503, %472
  store i32 0, ptr %50, align 4
  br label %505

505:                                              ; preds = %504, %502
  call void @_ZNSt6vectorISt10shared_ptrIN9NOMAD_4_314EvalQueuePointEESaIS3_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %37) #6
  call void @llvm.lifetime.end.p0(i64 24, ptr %37) #6
  %506 = load i32, ptr %50, align 4
  switch i32 %506, label %654 [
    i32 0, label %507
    i32 5, label %509
  ]

507:                                              ; preds = %505
  br label %306, !llvm.loop !62

508:                                              ; preds = %500, %488, %468, %447, %347
  call void @_ZNSt6vectorISt10shared_ptrIN9NOMAD_4_314EvalQueuePointEESaIS3_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %37) #6
  call void @llvm.lifetime.end.p0(i64 24, ptr %37) #6
  br label %647

509:                                              ; preds = %505, %314
  call void @llvm.lifetime.start.p0(i64 1, ptr %51) #6
  %510 = getelementptr inbounds %"class.NOMAD_4_3::EvaluatorControl", ptr %69, i32 0, i32 1
  %511 = call noundef ptr @_ZNKSt19__shared_ptr_accessIN9NOMAD_4_332EvaluatorControlGlobalParametersELN9__gnu_cxx12_Lock_policyE2ELb0ELb0EEptEv(ptr noundef nonnull align 1 dereferenceable(1) %510) #6
  call void @llvm.lifetime.start.p0(i64 32, ptr %52) #6
  call void @llvm.lifetime.start.p0(i64 1, ptr %53) #6
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %53) #6
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %52, ptr noundef @.str.46, ptr noundef nonnull align 1 dereferenceable(1) %53)
          to label %512 unwind label %539

512:                                              ; preds = %509
  %513 = invoke noundef nonnull align 1 dereferenceable(1) ptr @_ZNK9NOMAD_4_310Parameters17getAttributeValueIbEERKT_RKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEb(ptr noundef nonnull align 8 dereferenceable(496) %511, ptr noundef nonnull align 8 dereferenceable(32) %52, i1 noundef zeroext false)
          to label %514 unwind label %543

514:                                              ; preds = %512
  %515 = load i8, ptr %513, align 1, !tbaa !11, !range !13, !noundef !14
  %516 = trunc i8 %515 to i1
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %52) #6
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %53) #6
  call void @llvm.lifetime.end.p0(i64 1, ptr %53) #6
  call void @llvm.lifetime.end.p0(i64 32, ptr %52) #6
  %517 = zext i1 %516 to i8
  store i8 %517, ptr %51, align 1, !tbaa !11
  %518 = load i8, ptr %4, align 1, !tbaa !11, !range !13, !noundef !14
  %519 = trunc i8 %518 to i1
  br i1 %519, label %520, label %636

520:                                              ; preds = %514
  call void @llvm.lifetime.start.p0(i64 1, ptr %54) #6
  store i8 0, ptr %54, align 1, !tbaa !11
  br label %521

521:                                              ; preds = %569, %520
  %522 = load i32, ptr %3, align 4, !tbaa !9
  %523 = call noundef nonnull align 8 dereferenceable(248) ptr @_ZNK9NOMAD_4_316EvaluatorControl17getMainThreadInfoEi(ptr noundef nonnull align 8 dereferenceable(352) %69, i32 noundef %522)
  %524 = call noundef i64 @_ZNK9NOMAD_4_317EvcMainThreadInfo19getCurrentlyRunningEv(ptr noundef nonnull align 8 dereferenceable(248) %523)
  %525 = icmp ugt i64 %524, 0
  br i1 %525, label %526, label %573

526:                                              ; preds = %521
  call void @llvm.lifetime.start.p0(i64 4, ptr %55) #6
  store i32 7, ptr %55, align 4, !tbaa !19
  %527 = call noundef zeroext i1 @_ZN9NOMAD_4_311OutputQueue9GoodLevelERKNS_11OutputLevelE(ptr noundef nonnull align 4 dereferenceable(4) %55)
  call void @llvm.lifetime.end.p0(i64 4, ptr %55) #6
  br i1 %527, label %528, label %558

528:                                              ; preds = %526
  %529 = load i8, ptr %54, align 1, !tbaa !11, !range !13, !noundef !14
  %530 = trunc i8 %529 to i1
  br i1 %530, label %557, label %531

531:                                              ; preds = %528
  call void @llvm.lifetime.start.p0(i64 32, ptr %56) #6
  call void @llvm.lifetime.start.p0(i64 32, ptr %57) #6
  %532 = load i32, ptr %3, align 4, !tbaa !9
  %533 = call noundef nonnull align 8 dereferenceable(248) ptr @_ZNK9NOMAD_4_316EvaluatorControl17getMainThreadInfoEi(ptr noundef nonnull align 8 dereferenceable(352) %69, i32 noundef %532)
  %534 = call noundef i64 @_ZNK9NOMAD_4_317EvcMainThreadInfo19getCurrentlyRunningEv(ptr noundef nonnull align 8 dereferenceable(248) %533)
  call void @_ZN9NOMAD_4_34itosB5cxx11Em(ptr dead_on_unwind writable sret(%"class.std::__cxx11::basic_string") align 8 %57, i64 noundef %534)
  invoke void @_ZStplIcSt11char_traitsIcESaIcEENSt7__cxx1112basic_stringIT_T0_T1_EEPKS5_OS8_(ptr dead_on_unwind writable sret(%"class.std::__cxx11::basic_string") align 8 %56, ptr noundef @.str.47, ptr noundef nonnull align 8 dereferenceable(32) %57)
          to label %535 unwind label %548

535:                                              ; preds = %531
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %57) #6
  call void @llvm.lifetime.end.p0(i64 32, ptr %57) #6
  %536 = invoke noundef nonnull align 8 dereferenceable(32) ptr @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEpLEPKc(ptr noundef nonnull align 8 dereferenceable(32) %56, ptr noundef @.str.48)
          to label %537 unwind label %552

537:                                              ; preds = %535
  invoke void @_ZN9NOMAD_4_311OutputQueue3AddERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEENS_11OutputLevelE(ptr noundef nonnull align 8 dereferenceable(32) %56, i32 noundef 7)
          to label %538 unwind label %552

538:                                              ; preds = %537
  store i8 1, ptr %54, align 1, !tbaa !11
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %56) #6
  call void @llvm.lifetime.end.p0(i64 32, ptr %56) #6
  br label %557

539:                                              ; preds = %509
  %540 = landingpad { ptr, i32 }
          cleanup
  %541 = extractvalue { ptr, i32 } %540, 0
  store ptr %541, ptr %7, align 8
  %542 = extractvalue { ptr, i32 } %540, 1
  store i32 %542, ptr %8, align 4
  br label %547

543:                                              ; preds = %512
  %544 = landingpad { ptr, i32 }
          cleanup
  %545 = extractvalue { ptr, i32 } %544, 0
  store ptr %545, ptr %7, align 8
  %546 = extractvalue { ptr, i32 } %544, 1
  store i32 %546, ptr %8, align 4
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %52) #6
  br label %547

547:                                              ; preds = %543, %539
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %53) #6
  call void @llvm.lifetime.end.p0(i64 1, ptr %53) #6
  call void @llvm.lifetime.end.p0(i64 32, ptr %52) #6
  br label %646

548:                                              ; preds = %531
  %549 = landingpad { ptr, i32 }
          cleanup
  %550 = extractvalue { ptr, i32 } %549, 0
  store ptr %550, ptr %7, align 8
  %551 = extractvalue { ptr, i32 } %549, 1
  store i32 %551, ptr %8, align 4
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %57) #6
  call void @llvm.lifetime.end.p0(i64 32, ptr %57) #6
  br label %556

552:                                              ; preds = %537, %535
  %553 = landingpad { ptr, i32 }
          cleanup
  %554 = extractvalue { ptr, i32 } %553, 0
  store ptr %554, ptr %7, align 8
  %555 = extractvalue { ptr, i32 } %553, 1
  store i32 %555, ptr %8, align 4
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %56) #6
  br label %556

556:                                              ; preds = %552, %548
  call void @llvm.lifetime.end.p0(i64 32, ptr %56) #6
  br label %635

557:                                              ; preds = %538, %528
  br label %558

558:                                              ; preds = %557, %526
  %559 = call i32 @usleep(i32 noundef 10)
  %560 = load i32, ptr %3, align 4, !tbaa !9
  %561 = call noundef zeroext i1 @_ZNK9NOMAD_4_316EvaluatorControl20getOpportunisticEvalEi(ptr noundef nonnull align 8 dereferenceable(352) %69, i32 noundef %560)
  br i1 %561, label %562, label %569

562:                                              ; preds = %558
  %563 = load i32, ptr %3, align 4, !tbaa !9
  %564 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNK9NOMAD_4_316EvaluatorControl14getSuccessTypeEi(ptr noundef nonnull align 8 dereferenceable(352) %69, i32 noundef %563)
  %565 = load i32, ptr %564, align 4, !tbaa !15
  %566 = icmp sge i32 %565, 4
  br i1 %566, label %567, label %569

567:                                              ; preds = %562
  %568 = load i32, ptr %3, align 4, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 4, ptr %58) #6
  store i32 3, ptr %58, align 4, !tbaa !17
  call void @_ZN9NOMAD_4_316EvaluatorControl13setStopReasonEiRKNS_22EvalMainThreadStopTypeE(ptr noundef nonnull align 8 dereferenceable(352) %69, i32 noundef %568, ptr noundef nonnull align 4 dereferenceable(4) %58)
  call void @llvm.lifetime.end.p0(i64 4, ptr %58) #6
  br label %569

569:                                              ; preds = %567, %562, %558
  %570 = call noundef zeroext i1 @_ZNK9NOMAD_4_316EvaluatorControl14reachedMaxEvalEv(ptr noundef nonnull align 8 dereferenceable(352) %69)
  %571 = load i32, ptr %3, align 4, !tbaa !9
  %572 = call noundef zeroext i1 @_ZNK9NOMAD_4_316EvaluatorControl18reachedMaxStepEvalEi(ptr noundef nonnull align 8 dereferenceable(352) %69, i32 noundef %571)
  br label %521, !llvm.loop !63

573:                                              ; preds = %521
  %574 = load i8, ptr %51, align 1, !tbaa !11, !range !13, !noundef !14
  %575 = trunc i8 %574 to i1
  br i1 %575, label %576, label %600

576:                                              ; preds = %573
  call void @llvm.lifetime.start.p0(i64 8, ptr %59) #6
  %577 = load i32, ptr %3, align 4, !tbaa !9
  %578 = call noundef i64 @_ZN9NOMAD_4_316EvaluatorControl10clearQueueEib(ptr noundef nonnull align 8 dereferenceable(352) %69, i32 noundef %577, i1 noundef zeroext false)
  store i64 %578, ptr %59, align 8, !tbaa !23
  call void @llvm.lifetime.start.p0(i64 4, ptr %60) #6
  store i32 9, ptr %60, align 4, !tbaa !19
  %579 = call noundef zeroext i1 @_ZN9NOMAD_4_311OutputQueue9GoodLevelERKNS_11OutputLevelE(ptr noundef nonnull align 4 dereferenceable(4) %60)
  call void @llvm.lifetime.end.p0(i64 4, ptr %60) #6
  br i1 %579, label %580, label %599

580:                                              ; preds = %576
  call void @llvm.lifetime.start.p0(i64 32, ptr %61) #6
  call void @llvm.lifetime.start.p0(i64 32, ptr %62) #6
  call void @llvm.lifetime.start.p0(i64 32, ptr %63) #6
  %581 = load i64, ptr %59, align 8, !tbaa !23
  call void @_ZN9NOMAD_4_34itosB5cxx11Em(ptr dead_on_unwind writable sret(%"class.std::__cxx11::basic_string") align 8 %63, i64 noundef %581)
  invoke void @_ZStplIcSt11char_traitsIcESaIcEENSt7__cxx1112basic_stringIT_T0_T1_EEPKS5_OS8_(ptr dead_on_unwind writable sret(%"class.std::__cxx11::basic_string") align 8 %62, ptr noundef @.str.49, ptr noundef nonnull align 8 dereferenceable(32) %63)
          to label %582 unwind label %585

582:                                              ; preds = %580
  invoke void @_ZStplIcSt11char_traitsIcESaIcEENSt7__cxx1112basic_stringIT_T0_T1_EEOS8_PKS5_(ptr dead_on_unwind writable sret(%"class.std::__cxx11::basic_string") align 8 %61, ptr noundef nonnull align 8 dereferenceable(32) %62, ptr noundef @.str.50)
          to label %583 unwind label %589

583:                                              ; preds = %582
  invoke void @_ZN9NOMAD_4_311OutputQueue3AddERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEENS_11OutputLevelE(ptr noundef nonnull align 8 dereferenceable(32) %61, i32 noundef 9)
          to label %584 unwind label %593

584:                                              ; preds = %583
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %61) #6
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %62) #6
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %63) #6
  call void @llvm.lifetime.end.p0(i64 32, ptr %63) #6
  call void @llvm.lifetime.end.p0(i64 32, ptr %62) #6
  call void @llvm.lifetime.end.p0(i64 32, ptr %61) #6
  br label %599

585:                                              ; preds = %580
  %586 = landingpad { ptr, i32 }
          cleanup
  %587 = extractvalue { ptr, i32 } %586, 0
  store ptr %587, ptr %7, align 8
  %588 = extractvalue { ptr, i32 } %586, 1
  store i32 %588, ptr %8, align 4
  br label %598

589:                                              ; preds = %582
  %590 = landingpad { ptr, i32 }
          cleanup
  %591 = extractvalue { ptr, i32 } %590, 0
  store ptr %591, ptr %7, align 8
  %592 = extractvalue { ptr, i32 } %590, 1
  store i32 %592, ptr %8, align 4
  br label %597

593:                                              ; preds = %583
  %594 = landingpad { ptr, i32 }
          cleanup
  %595 = extractvalue { ptr, i32 } %594, 0
  store ptr %595, ptr %7, align 8
  %596 = extractvalue { ptr, i32 } %594, 1
  store i32 %596, ptr %8, align 4
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %61) #6
  br label %597

597:                                              ; preds = %593, %589
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %62) #6
  br label %598

598:                                              ; preds = %597, %585
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %63) #6
  call void @llvm.lifetime.end.p0(i64 32, ptr %63) #6
  call void @llvm.lifetime.end.p0(i64 32, ptr %62) #6
  call void @llvm.lifetime.end.p0(i64 32, ptr %61) #6
  call void @llvm.lifetime.end.p0(i64 8, ptr %59) #6
  br label %635

599:                                              ; preds = %584, %576
  call void @llvm.lifetime.end.p0(i64 8, ptr %59) #6
  br label %600

600:                                              ; preds = %599, %573
  call void @llvm.lifetime.start.p0(i64 4, ptr %64) #6
  store i32 9, ptr %64, align 4, !tbaa !19
  %601 = call noundef zeroext i1 @_ZN9NOMAD_4_311OutputQueue9GoodLevelERKNS_11OutputLevelE(ptr noundef nonnull align 4 dereferenceable(4) %64)
  call void @llvm.lifetime.end.p0(i64 4, ptr %64) #6
  br i1 %601, label %602, label %634

602:                                              ; preds = %600
  call void @llvm.lifetime.start.p0(i64 32, ptr %65) #6
  call void @llvm.lifetime.start.p0(i64 32, ptr %66) #6
  %603 = load i32, ptr %3, align 4, !tbaa !9
  call void @_ZNK9NOMAD_4_316EvaluatorControl21getStopReasonAsStringB5cxx11Ei(ptr dead_on_unwind writable sret(%"class.std::__cxx11::basic_string") align 8 %66, ptr noundef nonnull align 8 dereferenceable(352) %69, i32 noundef %603)
  invoke void @_ZStplIcSt11char_traitsIcESaIcEENSt7__cxx1112basic_stringIT_T0_T1_EEPKS5_OS8_(ptr dead_on_unwind writable sret(%"class.std::__cxx11::basic_string") align 8 %65, ptr noundef @.str.51, ptr noundef nonnull align 8 dereferenceable(32) %66)
          to label %604 unwind label %610

604:                                              ; preds = %602
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %66) #6
  call void @llvm.lifetime.end.p0(i64 32, ptr %66) #6
  call void @llvm.lifetime.start.p0(i64 32, ptr %67) #6
  call void @llvm.lifetime.start.p0(i64 32, ptr %68) #6
  invoke void @_ZN9NOMAD_4_314AllStopReasons31getEvalGlobalStopReasonAsStringB5cxx11Ev(ptr dead_on_unwind writable sret(%"class.std::__cxx11::basic_string") align 8 %68)
          to label %605 unwind label %614

605:                                              ; preds = %604
  invoke void @_ZStplIcSt11char_traitsIcESaIcEENSt7__cxx1112basic_stringIT_T0_T1_EEPKS5_OS8_(ptr dead_on_unwind writable sret(%"class.std::__cxx11::basic_string") align 8 %67, ptr noundef @.str.52, ptr noundef nonnull align 8 dereferenceable(32) %68)
          to label %606 unwind label %618

606:                                              ; preds = %605
  %607 = invoke noundef nonnull align 8 dereferenceable(32) ptr @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEpLERKS4_(ptr noundef nonnull align 8 dereferenceable(32) %65, ptr noundef nonnull align 8 dereferenceable(32) %67)
          to label %608 unwind label %622

608:                                              ; preds = %606
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %67) #6
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %68) #6
  call void @llvm.lifetime.end.p0(i64 32, ptr %68) #6
  call void @llvm.lifetime.end.p0(i64 32, ptr %67) #6
  invoke void @_ZN9NOMAD_4_311OutputQueue3AddERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEENS_11OutputLevelE(ptr noundef nonnull align 8 dereferenceable(32) %65, i32 noundef 9)
          to label %609 unwind label %628

609:                                              ; preds = %608
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %65) #6
  call void @llvm.lifetime.end.p0(i64 32, ptr %65) #6
  br label %634

610:                                              ; preds = %602
  %611 = landingpad { ptr, i32 }
          cleanup
  %612 = extractvalue { ptr, i32 } %611, 0
  store ptr %612, ptr %7, align 8
  %613 = extractvalue { ptr, i32 } %611, 1
  store i32 %613, ptr %8, align 4
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %66) #6
  call void @llvm.lifetime.end.p0(i64 32, ptr %66) #6
  br label %633

614:                                              ; preds = %604
  %615 = landingpad { ptr, i32 }
          cleanup
  %616 = extractvalue { ptr, i32 } %615, 0
  store ptr %616, ptr %7, align 8
  %617 = extractvalue { ptr, i32 } %615, 1
  store i32 %617, ptr %8, align 4
  br label %627

618:                                              ; preds = %605
  %619 = landingpad { ptr, i32 }
          cleanup
  %620 = extractvalue { ptr, i32 } %619, 0
  store ptr %620, ptr %7, align 8
  %621 = extractvalue { ptr, i32 } %619, 1
  store i32 %621, ptr %8, align 4
  br label %626

622:                                              ; preds = %606
  %623 = landingpad { ptr, i32 }
          cleanup
  %624 = extractvalue { ptr, i32 } %623, 0
  store ptr %624, ptr %7, align 8
  %625 = extractvalue { ptr, i32 } %623, 1
  store i32 %625, ptr %8, align 4
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %67) #6
  br label %626

626:                                              ; preds = %622, %618
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %68) #6
  br label %627

627:                                              ; preds = %626, %614
  call void @llvm.lifetime.end.p0(i64 32, ptr %68) #6
  call void @llvm.lifetime.end.p0(i64 32, ptr %67) #6
  br label %632

628:                                              ; preds = %608
  %629 = landingpad { ptr, i32 }
          cleanup
  %630 = extractvalue { ptr, i32 } %629, 0
  store ptr %630, ptr %7, align 8
  %631 = extractvalue { ptr, i32 } %629, 1
  store i32 %631, ptr %8, align 4
  br label %632

632:                                              ; preds = %628, %627
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %65) #6
  br label %633

633:                                              ; preds = %632, %610
  call void @llvm.lifetime.end.p0(i64 32, ptr %65) #6
  br label %635

634:                                              ; preds = %609, %600
  call void @_ZN9NOMAD_4_311OutputQueue5FlushEv()
  call void @llvm.lifetime.end.p0(i64 1, ptr %54) #6
  br label %636

635:                                              ; preds = %633, %598, %556
  call void @llvm.lifetime.end.p0(i64 1, ptr %54) #6
  br label %646

636:                                              ; preds = %634, %514
  %637 = load i8, ptr %4, align 1, !tbaa !11, !range !13, !noundef !14
  %638 = trunc i8 %637 to i1
  br i1 %638, label %639, label %643

639:                                              ; preds = %636
  %640 = load i32, ptr %3, align 4, !tbaa !9
  %641 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNK9NOMAD_4_316EvaluatorControl14getSuccessTypeEi(ptr noundef nonnull align 8 dereferenceable(352) %69, i32 noundef %640)
  %642 = load i32, ptr %641, align 4, !tbaa !15
  br label %644

643:                                              ; preds = %636
  br label %644

644:                                              ; preds = %643, %639
  %645 = phi i32 [ %642, %639 ], [ 2, %643 ]
  store i32 1, ptr %50, align 4
  call void @llvm.lifetime.end.p0(i64 1, ptr %51) #6
  call void @llvm.lifetime.end.p0(i64 8, ptr %36) #6
  call void @llvm.lifetime.end.p0(i64 1, ptr %35) #6
  call void @llvm.lifetime.end.p0(i64 1, ptr %4) #6
  call void @llvm.lifetime.end.p0(i64 4, ptr %3) #6
  ret i32 %645

646:                                              ; preds = %635, %547
  call void @llvm.lifetime.end.p0(i64 1, ptr %51) #6
  br label %647

647:                                              ; preds = %646, %508
  call void @llvm.lifetime.end.p0(i64 8, ptr %36) #6
  call void @llvm.lifetime.end.p0(i64 1, ptr %35) #6
  br label %648

648:                                              ; preds = %647, %303, %200, %110
  call void @llvm.lifetime.end.p0(i64 1, ptr %4) #6
  call void @llvm.lifetime.end.p0(i64 4, ptr %3) #6
  br label %649

649:                                              ; preds = %648
  %650 = load ptr, ptr %7, align 8
  %651 = load i32, ptr %8, align 4
  %652 = insertvalue { ptr, i32 } poison, ptr %650, 0
  %653 = insertvalue { ptr, i32 } %652, i32 %651, 1
  resume { ptr, i32 } %653

654:                                              ; preds = %505, %88
  unreachable
}

; Function Attrs: mustprogress uwtable
declare dso_local noundef zeroext i1 @_ZN9NOMAD_4_314AllStopReasons24checkEvalGlobalTerminateEv() #2 align 2

; Function Attrs: mustprogress uwtable
declare dso_local noundef zeroext i1 @_ZN9NOMAD_4_314AllStopReasons18checkBaseTerminateEv() #2 align 2

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

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

; Function Attrs: mustprogress uwtable
declare dso_local void @_ZN9NOMAD_4_311OutputQueue5FlushEv() #2 align 2

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

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

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

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

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

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

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

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

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

; Function Attrs: mustprogress uwtable
declare dso_local noundef zeroext i1 @_ZNK9NOMAD_4_316EvaluatorControl14reachedMaxEvalEv(ptr noundef nonnull align 8 dereferenceable(352)) #2 align 2

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

; Function Attrs: mustprogress uwtable
declare dso_local noundef zeroext i1 @_ZN9NOMAD_4_316EvaluatorControl9evalBlockERSt6vectorISt10shared_ptrINS_14EvalQueuePointEESaIS4_EE(ptr noundef nonnull align 8 dereferenceable(352), ptr noundef nonnull align 8 dereferenceable(24)) #2 align 2

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

; Function Attrs: mustprogress uwtable
declare dso_local noundef zeroext i1 @_ZNK9NOMAD_4_316EvaluatorControl12evalTypeAsBBENS_8EvalTypeEi(ptr noundef nonnull align 8 dereferenceable(352), i32 noundef, i32 noundef) #2 align 2

declare noundef zeroext i1 @_ZNK9NOMAD_4_39EvalPoint16getGenByPhaseOneEv(ptr noundef nonnull align 8 dereferenceable(160)) #3

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

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

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

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

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

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

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

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

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

; Function Attrs: mustprogress uwtable
declare dso_local noundef nonnull align 1 dereferenceable(1) ptr @_ZNK9NOMAD_4_310Parameters17getAttributeValueIbEERKT_RKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEb(ptr noundef nonnull align 8 dereferenceable(496), ptr noundef nonnull align 8 dereferenceable(32), i1 noundef zeroext) #2 align 2

declare i32 @usleep(i32 noundef) #3

; Function Attrs: mustprogress uwtable
declare dso_local noundef zeroext i1 @_ZNK9NOMAD_4_316EvaluatorControl18reachedMaxStepEvalEi(ptr noundef nonnull align 8 dereferenceable(352), i32 noundef) #2 align 2

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

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

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

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

!0 = !{i32 1, !"wchar_size", i32 4}
!1 = !{i32 8, !"PIC Level", i32 2}
!2 = !{i32 7, !"PIE Level", i32 2}
!3 = !{i32 7, !"uwtable", i32 2}
!4 = !{!"clang version 19.1.0 (git@github.com:llvm/llvm-project.git a4bf6cd7cfb1a1421ba92bca9d017b49936c55e4)"}
!5 = !{!6, !6, i64 0}
!6 = !{!"any pointer", !7, i64 0}
!7 = !{!"omnipotent char", !8, i64 0}
!8 = !{!"Simple C++ TBAA"}
!9 = !{!10, !10, i64 0}
!10 = !{!"int", !7, i64 0}
!11 = !{!12, !12, i64 0}
!12 = !{!"bool", !7, i64 0}
!13 = !{i8 0, i8 2}
!14 = !{}
!15 = !{!16, !16, i64 0}
!16 = !{!"_ZTSN9NOMAD_4_311SuccessTypeE", !7, i64 0}
!17 = !{!18, !18, i64 0}
!18 = !{!"_ZTSN9NOMAD_4_322EvalMainThreadStopTypeE", !7, i64 0}
!19 = !{!20, !20, i64 0}
!20 = !{!"_ZTSN9NOMAD_4_311OutputLevelE", !7, i64 0}
!21 = !{!22, !22, i64 0}
!22 = !{!"vtable pointer", !8, i64 0}
!23 = !{!24, !24, i64 0}
!24 = !{!"long", !7, i64 0}
!25 = !{!26, !12, i64 280}
!26 = !{!"_ZTSN9NOMAD_4_316EvaluatorControlE", !27, i64 8, !30, i64 24, !32, i64 40, !40, i64 88, !43, i64 136, !47, i64 160, !49, i64 176, !49, i64 184, !49, i64 192, !49, i64 200, !49, i64 208, !49, i64 216, !49, i64 224, !49, i64 232, !49, i64 240, !49, i64 248, !49, i64 256, !49, i64 264, !49, i64 272, !12, i64 280, !51, i64 288}
!27 = !{!"_ZTSSt10shared_ptrIN9NOMAD_4_332EvaluatorControlGlobalParametersEE", !28, i64 0}
!28 = !{!"_ZTSSt12__shared_ptrIN9NOMAD_4_332EvaluatorControlGlobalParametersELN9__gnu_cxx12_Lock_policyE2EE", !6, i64 0, !29, i64 8}
!29 = !{!"_ZTSSt14__shared_countILN9__gnu_cxx12_Lock_policyE2EE", !6, i64 0}
!30 = !{!"_ZTSSt10shared_ptrIN9NOMAD_4_326EvaluatorControlParametersEE", !31, i64 0}
!31 = !{!"_ZTSSt12__shared_ptrIN9NOMAD_4_326EvaluatorControlParametersELN9__gnu_cxx12_Lock_policyE2EE", !6, i64 0, !29, i64 8}
!32 = !{!"_ZTSSt3setIiSt4lessIiESaIiEE", !33, i64 0}
!33 = !{!"_ZTSSt8_Rb_treeIiiSt9_IdentityIiESt4lessIiESaIiEE", !34, i64 0}
!34 = !{!"_ZTSNSt8_Rb_treeIiiSt9_IdentityIiESt4lessIiESaIiEE13_Rb_tree_implIS3_Lb1EEE", !35, i64 0, !37, i64 8}
!35 = !{!"_ZTSSt20_Rb_tree_key_compareISt4lessIiEE", !36, i64 0}
!36 = !{!"_ZTSSt4lessIiE"}
!37 = !{!"_ZTSSt15_Rb_tree_header", !38, i64 0, !24, i64 32}
!38 = !{!"_ZTSSt18_Rb_tree_node_base", !39, i64 0, !6, i64 8, !6, i64 16, !6, i64 24}
!39 = !{!"_ZTSSt14_Rb_tree_color", !7, i64 0}
!40 = !{!"_ZTSSt3mapIiN9NOMAD_4_317EvcMainThreadInfoESt4lessIiESaISt4pairIKiS1_EEE", !41, i64 0}
!41 = !{!"_ZTSSt8_Rb_treeIiSt4pairIKiN9NOMAD_4_317EvcMainThreadInfoEESt10_Select1stIS4_ESt4lessIiESaIS4_EE", !42, i64 0}
!42 = !{!"_ZTSNSt8_Rb_treeIiSt4pairIKiN9NOMAD_4_317EvcMainThreadInfoEESt10_Select1stIS4_ESt4lessIiESaIS4_EE13_Rb_tree_implIS8_Lb1EEE", !35, i64 0, !37, i64 8}
!43 = !{!"_ZTSSt6vectorISt10shared_ptrIN9NOMAD_4_314EvalQueuePointEESaIS3_EE", !44, i64 0}
!44 = !{!"_ZTSSt12_Vector_baseISt10shared_ptrIN9NOMAD_4_314EvalQueuePointEESaIS3_EE", !45, i64 0}
!45 = !{!"_ZTSNSt12_Vector_baseISt10shared_ptrIN9NOMAD_4_314EvalQueuePointEESaIS3_EE12_Vector_implE", !46, i64 0}
!46 = !{!"_ZTSNSt12_Vector_baseISt10shared_ptrIN9NOMAD_4_314EvalQueuePointEESaIS3_EE17_Vector_impl_dataE", !6, i64 0, !6, i64 8, !6, i64 16}
!47 = !{!"_ZTSSt10shared_ptrIN9NOMAD_4_321ComparePriorityMethodEE", !48, i64 0}
!48 = !{!"_ZTSSt12__shared_ptrIN9NOMAD_4_321ComparePriorityMethodELN9__gnu_cxx12_Lock_policyE2EE", !6, i64 0, !29, i64 8}
!49 = !{!"_ZTSSt6atomicImE", !50, i64 0}
!50 = !{!"_ZTSSt13__atomic_baseImE", !24, i64 0}
!51 = !{!"_ZTSN9NOMAD_4_312SuccessStatsE", !52, i64 0, !24, i64 48, !24, i64 56}
!52 = !{!"_ZTSSt3mapISt4pairIN9NOMAD_4_38StepTypeENS1_11SuccessTypeEEmSt4lessIS4_ESaIS0_IKS4_mEEE", !53, i64 0}
!53 = !{!"_ZTSSt8_Rb_treeISt4pairIN9NOMAD_4_38StepTypeENS1_11SuccessTypeEES0_IKS4_mESt10_Select1stIS6_ESt4lessIS4_ESaIS6_EE", !54, i64 0}
!54 = !{!"_ZTSNSt8_Rb_treeISt4pairIN9NOMAD_4_38StepTypeENS1_11SuccessTypeEES0_IKS4_mESt10_Select1stIS6_ESt4lessIS4_ESaIS6_EE13_Rb_tree_implISA_Lb1EEE", !55, i64 0, !37, i64 8}
!55 = !{!"_ZTSSt20_Rb_tree_key_compareISt4lessISt4pairIN9NOMAD_4_38StepTypeENS2_11SuccessTypeEEEE", !56, i64 0}
!56 = !{!"_ZTSSt4lessISt4pairIN9NOMAD_4_38StepTypeENS1_11SuccessTypeEEE"}
!57 = !{!58, !58, i64 0}
!58 = !{!"_ZTSN9NOMAD_4_38EvalTypeE", !7, i64 0}
!59 = distinct !{!59, !60}
!60 = !{!"llvm.loop.mustprogress"}
!61 = distinct !{!61, !60}
!62 = distinct !{!62, !60}
!63 = distinct !{!63, !60}


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

%"class.std::__cxx11::basic_string" = type { %"struct.std::__cxx11::basic_string<char>::_Alloc_hider", i64, %union.anon }
%"struct.std::__cxx11::basic_string<char>::_Alloc_hider" = type { ptr }
%union.anon = type { i64, [8 x i8] }
%"class.std::shared_ptr.52" = type { %"class.std::__shared_ptr.53" }
%"class.std::__shared_ptr.53" = type { ptr, %"class.std::__shared_count" }
%"class.std::__shared_count" = type { ptr }
%"class.std::allocator" = type { i8 }
%"class.std::vector.143" = type { %"struct.std::_Vector_base.144" }
%"struct.std::_Vector_base.144" = type { %"struct.std::_Vector_base<std::__cxx11::basic_string<char>, std::allocator<std::__cxx11::basic_string<char>>>::_Vector_impl" }
%"struct.std::_Vector_base<std::__cxx11::basic_string<char>, std::allocator<std::__cxx11::basic_string<char>>>::_Vector_impl" = type { %"struct.std::_Vector_base<std::__cxx11::basic_string<char>, std::allocator<std::__cxx11::basic_string<char>>>::_Vector_impl_data" }
%"struct.std::_Vector_base<std::__cxx11::basic_string<char>, std::allocator<std::__cxx11::basic_string<char>>>::_Vector_impl_data" = type { ptr, ptr, ptr }
%"class.__gnu_cxx::__normal_iterator.148" = type { ptr }
%"class.std::vector" = type { %"struct.std::_Vector_base" }
%"struct.std::_Vector_base" = type { %"struct.std::_Vector_base<std::shared_ptr<NOMAD_4_3::EvalQueuePoint>, std::allocator<std::shared_ptr<NOMAD_4_3::EvalQueuePoint>>>::_Vector_impl" }
%"struct.std::_Vector_base<std::shared_ptr<NOMAD_4_3::EvalQueuePoint>, std::allocator<std::shared_ptr<NOMAD_4_3::EvalQueuePoint>>>::_Vector_impl" = type { %"struct.std::_Vector_base<std::shared_ptr<NOMAD_4_3::EvalQueuePoint>, std::allocator<std::shared_ptr<NOMAD_4_3::EvalQueuePoint>>>::_Vector_impl_data" }
%"struct.std::_Vector_base<std::shared_ptr<NOMAD_4_3::EvalQueuePoint>, std::allocator<std::shared_ptr<NOMAD_4_3::EvalQueuePoint>>>::_Vector_impl_data" = type { ptr, ptr, ptr }
%"class.__gnu_cxx::__normal_iterator.107" = type { ptr }
%"class.std::shared_ptr.108" = type { %"class.std::__shared_ptr.109" }
%"class.std::__shared_ptr.109" = type { ptr, %"class.std::__shared_count" }

@.str.16 = external hidden unnamed_addr constant [88 x i8], align 1
@_ZTIN9NOMAD_4_39ExceptionE = external constant ptr
@.str.36 = external hidden unnamed_addr constant [57 x i8], align 1
@.str.37 = external hidden unnamed_addr constant [57 x i8], align 1
@.str.38 = external hidden unnamed_addr constant [20 x i8], align 1
@.str.39 = external hidden unnamed_addr constant [8 x i8], align 1
@.str.40 = external hidden unnamed_addr constant [18 x i8], align 1
@.str.41 = external hidden unnamed_addr constant [16 x i8], align 1
@.str.42 = external hidden unnamed_addr constant [14 x i8], align 1
@.str.43 = external hidden unnamed_addr constant [10 x i8], align 1
@.str.44 = external hidden unnamed_addr constant [8 x i8], align 1
@.str.45 = external hidden unnamed_addr constant [49 x i8], align 1
@.str.46 = external hidden unnamed_addr constant [17 x i8], align 1
@.str.47 = external hidden unnamed_addr constant [13 x i8], align 1
@.str.48 = external hidden unnamed_addr constant [26 x i8], align 1
@.str.49 = external hidden unnamed_addr constant [38 x i8], align 1
@.str.50 = external hidden unnamed_addr constant [9 x i8], align 1
@.str.51 = external hidden unnamed_addr constant [45 x i8], align 1
@.str.52 = external hidden unnamed_addr constant [12 x i8], align 1

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

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

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

declare i32 @__gxx_personality_v0(...)

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

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

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

declare noundef i32 @_ZN9NOMAD_4_312getThreadNumEv() local_unnamed_addr #3

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

; Function Attrs: mustprogress uwtable
declare dso_local noundef zeroext i1 @_ZN9NOMAD_4_311OutputQueue9GoodLevelERKNS_11OutputLevelE(ptr noundef nonnull align 4 dereferenceable(4)) local_unnamed_addr #2 align 2

; Function Attrs: mustprogress uwtable
declare dso_local noundef i64 @_ZN9NOMAD_4_316EvaluatorControl10clearQueueEib(ptr noundef nonnull align 8 dereferenceable(352), i32 noundef, i1 noundef zeroext) local_unnamed_addr #2 align 2

; Function Attrs: mustprogress uwtable
declare dso_local noundef nonnull align 8 dereferenceable(248) ptr @_ZNK9NOMAD_4_316EvaluatorControl17getMainThreadInfoEi(ptr noundef nonnull align 8 dereferenceable(352), i32 noundef) local_unnamed_addr #2 align 2

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

declare void @_ZN9NOMAD_4_317EvcMainThreadInfo19decCurrentlyRunningEv(ptr noundef nonnull align 8 dereferenceable(248)) local_unnamed_addr #3

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

; Function Attrs: mustprogress uwtable
declare dso_local void @_ZN9NOMAD_4_311OutputQueue3AddERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEENS_11OutputLevelE(ptr noundef nonnull align 8 dereferenceable(32), i32 noundef) local_unnamed_addr #2 align 2

; Function Attrs: mustprogress uwtable
declare dso_local noundef zeroext i1 @_ZNK9NOMAD_4_316EvaluatorControl12isMainThreadEi(ptr noundef nonnull align 8 dereferenceable(352), i32 noundef) local_unnamed_addr #2 align 2

; Function Attrs: inlinehint mustprogress uwtable
declare dso_local void @_ZStplIcSt11char_traitsIcESaIcEENSt7__cxx1112basic_stringIT_T0_T1_EEPKS5_OS8_(ptr dead_on_unwind noalias writable sret(%"class.std::__cxx11::basic_string") align 8, ptr noundef, ptr noundef nonnull align 8 dereferenceable(32)) local_unnamed_addr #4

declare ptr @__cxa_allocate_exception(i64) local_unnamed_addr

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

declare void @__cxa_throw(ptr, ptr, ptr) local_unnamed_addr

declare void @__cxa_free_exception(ptr) local_unnamed_addr

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

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

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

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

; Function Attrs: mustprogress uwtable
declare dso_local void @_ZNK9NOMAD_4_316EvaluatorControl10getBarrierEi(ptr dead_on_unwind noalias writable sret(%"class.std::shared_ptr.52") align 8, ptr noundef nonnull align 8 dereferenceable(352), i32 noundef) local_unnamed_addr #2 align 2

; Function Attrs: mustprogress uwtable
declare dso_local void @_ZN9NOMAD_4_316EvaluatorControl13setStopReasonEiRKNS_22EvalMainThreadStopTypeE(ptr noundef nonnull align 8 dereferenceable(352), i32 noundef, ptr noundef nonnull align 4 dereferenceable(4)) local_unnamed_addr #2 align 2

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

; Function Attrs: mustprogress uwtable
declare dso_local noundef zeroext i1 @_ZNK9NOMAD_4_316EvaluatorControl18checkEvalTerminateEi(ptr noundef nonnull align 8 dereferenceable(352), i32 noundef) local_unnamed_addr #2 align 2

; Function Attrs: mustprogress uwtable
declare dso_local noundef nonnull align 4 dereferenceable(4) ptr @_ZNK9NOMAD_4_316EvaluatorControl14getSuccessTypeEi(ptr noundef nonnull align 8 dereferenceable(352), i32 noundef) local_unnamed_addr #2 align 2

; Function Attrs: mustprogress uwtable
declare dso_local void @_ZN9NOMAD_4_316EvaluatorControl14setSuccessTypeEiRKNS_11SuccessTypeE(ptr noundef nonnull align 8 dereferenceable(352), i32 noundef, ptr noundef nonnull align 4 dereferenceable(4)) local_unnamed_addr #2 align 2

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

; Function Attrs: mustprogress uwtable
declare dso_local noundef zeroext i1 @_ZNK9NOMAD_4_316EvaluatorControl20getOpportunisticEvalEi(ptr noundef nonnull align 8 dereferenceable(352), i32 noundef) local_unnamed_addr #2 align 2

; Function Attrs: mustprogress uwtable
declare dso_local noundef zeroext i1 @_ZNK9NOMAD_4_316EvaluatorControl11getUseCacheEi(ptr noundef nonnull align 8 dereferenceable(352), i32 noundef) local_unnamed_addr #2 align 2

; Function Attrs: inlinehint mustprogress nounwind uwtable
declare dso_local void @_ZNSt7__cxx119to_stringEi(ptr dead_on_unwind noalias writable sret(%"class.std::__cxx11::basic_string") align 8, i32 noundef) local_unnamed_addr #5

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

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

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

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

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

; Function Attrs: inlinehint mustprogress uwtable
declare dso_local void @_ZStplIcSt11char_traitsIcESaIcEENSt7__cxx1112basic_stringIT_T0_T1_EEOS8_PKS5_(ptr dead_on_unwind noalias writable sret(%"class.std::__cxx11::basic_string") align 8, ptr noundef nonnull align 8 dereferenceable(32), ptr noundef) local_unnamed_addr #4

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

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

; Function Attrs: mustprogress nounwind uwtable
declare dso_local noundef ptr @_ZNKSt19__shared_ptr_accessIN9NOMAD_4_314EvalQueuePointELN9__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 i32 @_ZNK9NOMAD_4_39EvalPoint13getThreadAlgoEv(ptr noundef nonnull align 8 dereferenceable(160)) local_unnamed_addr #1 align 2

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

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

; Function Attrs: mustprogress uwtable
declare dso_local noundef zeroext i1 @_ZNK9NOMAD_4_316EvaluatorControl12stopMainEvalEi(ptr noundef nonnull align 8 dereferenceable(352), i32 noundef) local_unnamed_addr #2 align 2

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

; Function Attrs: mustprogress uwtable
declare dso_local noundef zeroext i1 @_ZN9NOMAD_4_316EvaluatorControl8popBlockERSt6vectorISt10shared_ptrINS_14EvalQueuePointEESaIS4_EE(ptr noundef nonnull align 8 dereferenceable(352), ptr noundef nonnull align 8 dereferenceable(24)) local_unnamed_addr #2 align 2

; Function Attrs: mustprogress uwtable
define dso_local noundef i32 @_ZN9NOMAD_4_316EvaluatorControl3runEv(ptr noundef nonnull align 8 dereferenceable(352) %0) local_unnamed_addr #2 align 2 personality ptr @__gxx_personality_v0 {
  %2 = alloca %"class.std::__cxx11::basic_string", align 8
  %3 = alloca %"class.std::allocator", align 1
  %4 = alloca %"class.std::__cxx11::basic_string", align 8
  %5 = alloca %"class.std::__cxx11::basic_string", align 8
  %6 = alloca %"class.std::allocator", align 1
  %7 = alloca i32, align 4
  %8 = alloca i32, align 4
  %9 = alloca i32, align 4
  %10 = alloca %"class.std::__cxx11::basic_string", align 8
  %11 = alloca %"class.std::allocator", align 1
  %12 = alloca %"class.std::__cxx11::basic_string", align 8
  %13 = alloca %"class.std::__cxx11::basic_string", align 8
  %14 = alloca %"class.std::__cxx11::basic_string", align 8
  %15 = alloca %"class.std::__cxx11::basic_string", align 8
  %16 = alloca %"class.std::__cxx11::basic_string", align 8
  %17 = alloca i32, align 4
  %18 = alloca i32, align 4
  %19 = alloca %"class.std::__cxx11::basic_string", align 8
  %20 = alloca %"class.std::allocator", align 1
  %21 = alloca %"class.std::__cxx11::basic_string", align 8
  %22 = alloca %"class.std::__cxx11::basic_string", align 8
  %23 = alloca %"class.std::shared_ptr.52", align 8
  %24 = alloca %"class.std::vector.143", align 8
  %25 = alloca %"class.__gnu_cxx::__normal_iterator.148", align 8
  %26 = alloca %"class.__gnu_cxx::__normal_iterator.148", align 8
  %27 = alloca i64, align 8
  %28 = alloca %"class.std::vector", align 8
  %29 = alloca %"class.__gnu_cxx::__normal_iterator.107", align 8
  %30 = alloca %"class.__gnu_cxx::__normal_iterator.107", align 8
  %31 = alloca %"class.std::shared_ptr.108", align 8
  %32 = alloca i32, align 4
  %33 = alloca %"class.std::shared_ptr.108", align 8
  %34 = alloca i32, align 4
  %35 = alloca i32, align 4
  %36 = alloca %"class.std::__cxx11::basic_string", align 8
  %37 = alloca %"class.std::allocator", align 1
  %38 = alloca %"class.std::__cxx11::basic_string", align 8
  %39 = alloca %"class.std::allocator", align 1
  %40 = alloca i32, align 4
  %41 = alloca %"class.std::__cxx11::basic_string", align 8
  %42 = alloca %"class.std::__cxx11::basic_string", align 8
  %43 = alloca i32, align 4
  %44 = alloca i32, align 4
  %45 = alloca %"class.std::__cxx11::basic_string", align 8
  %46 = alloca %"class.std::__cxx11::basic_string", align 8
  %47 = alloca %"class.std::__cxx11::basic_string", align 8
  %48 = alloca i32, align 4
  %49 = alloca %"class.std::__cxx11::basic_string", align 8
  %50 = alloca %"class.std::__cxx11::basic_string", align 8
  %51 = alloca %"class.std::__cxx11::basic_string", align 8
  %52 = alloca %"class.std::__cxx11::basic_string", align 8
  %53 = tail call noundef i32 @_ZN9NOMAD_4_312getThreadNumEv()
  %54 = tail call noundef zeroext i1 @_ZNK9NOMAD_4_316EvaluatorControl12isMainThreadEi(ptr noundef nonnull align 8 dereferenceable(352) %0, i32 noundef %53)
  br i1 %54, label %55, label %207

55:                                               ; preds = %1
  %56 = tail call noundef nonnull align 8 dereferenceable(248) ptr @_ZNK9NOMAD_4_316EvaluatorControl17getMainThreadInfoEi(ptr noundef nonnull align 8 dereferenceable(352) %0, i32 noundef %53)
  %57 = tail call noundef ptr @_ZN9NOMAD_4_317EvcMainThreadInfo19getCurrentEvaluatorEv(ptr noundef nonnull align 8 dereferenceable(248) %56)
  %58 = icmp eq ptr %57, null
  br i1 %58, label %59, label %76

59:                                               ; preds = %55
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %2) #6
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %3) #6
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %3) #6
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %2, ptr noundef nonnull @.str.36, ptr noundef nonnull align 1 dereferenceable(1) %3)
          to label %60 unwind label %66

60:                                               ; preds = %59
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %3) #6
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %3) #6
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %4) #6
  call void @_ZNSt7__cxx119to_stringEi(ptr dead_on_unwind nonnull writable sret(%"class.std::__cxx11::basic_string") align 8 %4, i32 noundef %53) #6
  %61 = invoke noundef nonnull align 8 dereferenceable(32) ptr @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEpLERKS4_(ptr noundef nonnull align 8 dereferenceable(32) %2, ptr noundef nonnull align 8 dereferenceable(32) %4)
          to label %62 unwind label %68

62:                                               ; preds = %60
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %4) #6
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %4) #6
  %63 = call ptr @__cxa_allocate_exception(i64 112) #6
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %5) #6
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %6) #6
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %6) #6
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %5, ptr noundef nonnull @.str.16, ptr noundef nonnull align 1 dereferenceable(1) %6)
          to label %64 unwind label %.thread

64:                                               ; preds = %62
  invoke void @_ZN9NOMAD_4_39ExceptionC2ERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEmS8_(ptr noundef nonnull align 8 dereferenceable(112) %63, ptr noundef nonnull align 8 dereferenceable(32) %5, i64 noundef 1061, ptr noundef nonnull align 8 dereferenceable(32) %2)
          to label %65 unwind label %71

65:                                               ; preds = %64
  invoke void @__cxa_throw(ptr nonnull %63, ptr nonnull @_ZTIN9NOMAD_4_39ExceptionE, ptr nonnull @_ZN9NOMAD_4_39ExceptionD2Ev) #7
          to label %420 unwind label %71

66:                                               ; preds = %59
  %67 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %3) #6
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %3) #6
  br label %75

68:                                               ; preds = %60
  %69 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %4) #6
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %4) #6
  br label %74

.thread:                                          ; preds = %62
  %70 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %6) #6
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %6) #6
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %5) #6
  br label %73

71:                                               ; preds = %64, %65
  %.086 = phi i1 [ false, %65 ], [ true, %64 ]
  %72 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %5) #6
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %6) #6
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %6) #6
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %5) #6
  br i1 %.086, label %73, label %74

73:                                               ; preds = %.thread, %71
  %.pn132141 = phi { ptr, i32 } [ %70, %.thread ], [ %72, %71 ]
  call void @__cxa_free_exception(ptr %63) #6
  br label %74

74:                                               ; preds = %71, %73, %68
  %.pn132.pn = phi { ptr, i32 } [ %.pn132141, %73 ], [ %72, %71 ], [ %69, %68 ]
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %2) #6
  br label %75

75:                                               ; preds = %74, %66
  %.pn132.pn.pn = phi { ptr, i32 } [ %.pn132.pn, %74 ], [ %67, %66 ]
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %2) #6
  br label %419

76:                                               ; preds = %55
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %7) #6
  store i32 2, ptr %7, align 4, !tbaa !5
  call void @_ZN9NOMAD_4_316EvaluatorControl14setSuccessTypeEiRKNS_11SuccessTypeE(ptr noundef nonnull align 8 dereferenceable(352) %0, i32 noundef %53, ptr noundef nonnull align 4 dereferenceable(4) %7)
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %7) #6
  %77 = call noundef i64 @_ZNK9NOMAD_4_316EvaluatorControl12getQueueSizeEi(ptr noundef nonnull align 8 dereferenceable(352) %0, i32 noundef %53)
  %78 = icmp eq i64 %77, 0
  br i1 %78, label %79, label %80

79:                                               ; preds = %76
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %8) #6
  store i32 4, ptr %8, align 4, !tbaa !9
  call void @_ZN9NOMAD_4_316EvaluatorControl13setStopReasonEiRKNS_22EvalMainThreadStopTypeE(ptr noundef nonnull align 8 dereferenceable(352) %0, i32 noundef %53, ptr noundef nonnull align 4 dereferenceable(4) %8)
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %8) #6
  br label %80

80:                                               ; preds = %79, %76
  %81 = call noundef zeroext i1 @_ZNK9NOMAD_4_316EvaluatorControl18checkEvalTerminateEi(ptr noundef nonnull align 8 dereferenceable(352) %0, i32 noundef %53)
  br i1 %81, label %86, label %82

82:                                               ; preds = %80
  %83 = call noundef zeroext i1 @_ZN9NOMAD_4_314AllStopReasons24checkEvalGlobalTerminateEv()
  br i1 %83, label %86, label %84

84:                                               ; preds = %82
  %85 = call noundef zeroext i1 @_ZN9NOMAD_4_314AllStopReasons18checkBaseTerminateEv()
  br i1 %85, label %86, label %139

86:                                               ; preds = %84, %82, %80
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %9) #6
  store i32 9, ptr %9, align 4, !tbaa !11
  %87 = call noundef zeroext i1 @_ZN9NOMAD_4_311OutputQueue9GoodLevelERKNS_11OutputLevelE(ptr noundef nonnull align 4 dereferenceable(4) %9)
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %9) #6
  br i1 %87, label %88, label %140

88:                                               ; preds = %86
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %10) #6
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %11) #6
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %11) #6
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %10, ptr noundef nonnull @.str.37, ptr noundef nonnull align 1 dereferenceable(1) %11)
          to label %89 unwind label %97

89:                                               ; preds = %88
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %11) #6
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %11) #6
  %90 = invoke noundef zeroext i1 @_ZNK9NOMAD_4_316EvaluatorControl18checkEvalTerminateEi(ptr noundef nonnull align 8 dereferenceable(352) %0, i32 noundef %53)
          to label %91 unwind label %99

91:                                               ; preds = %89
  br i1 %90, label %92, label %109

92:                                               ; preds = %91
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %12) #6
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %13) #6
  invoke void @_ZNK9NOMAD_4_316EvaluatorControl21getStopReasonAsStringB5cxx11Ei(ptr dead_on_unwind nonnull writable sret(%"class.std::__cxx11::basic_string") align 8 %13, ptr noundef nonnull align 8 dereferenceable(352) %0, i32 noundef %53)
          to label %93 unwind label %101

93:                                               ; preds = %92
  invoke void @_ZStplIcSt11char_traitsIcESaIcEENSt7__cxx1112basic_stringIT_T0_T1_EEOS8_PKS5_(ptr dead_on_unwind nonnull writable sret(%"class.std::__cxx11::basic_string") align 8 %12, ptr noundef nonnull align 8 dereferenceable(32) %13, ptr noundef nonnull @.str.38)
          to label %94 unwind label %103

94:                                               ; preds = %93
  %95 = invoke noundef nonnull align 8 dereferenceable(32) ptr @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEpLERKS4_(ptr noundef nonnull align 8 dereferenceable(32) %10, ptr noundef nonnull align 8 dereferenceable(32) %12)
          to label %96 unwind label %105

96:                                               ; preds = %94
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %12) #6
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %13) #6
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %13) #6
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %12) #6
  br label %134

97:                                               ; preds = %88
  %98 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %11) #6
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %11) #6
  br label %138

99:                                               ; preds = %135, %134, %109, %89
  %100 = landingpad { ptr, i32 }
          cleanup
  br label %137

101:                                              ; preds = %92
  %102 = landingpad { ptr, i32 }
          cleanup
  br label %108

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

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

107:                                              ; preds = %105, %103
  %.pn94 = phi { ptr, i32 } [ %106, %105 ], [ %104, %103 ]
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %13) #6
  br label %108

108:                                              ; preds = %107, %101
  %.pn94.pn = phi { ptr, i32 } [ %.pn94, %107 ], [ %102, %101 ]
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %13) #6
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %12) #6
  br label %137

109:                                              ; preds = %91
  %110 = invoke noundef zeroext i1 @_ZN9NOMAD_4_314AllStopReasons24checkEvalGlobalTerminateEv()
          to label %111 unwind label %99

111:                                              ; preds = %109
  br i1 %110, label %112, label %121

112:                                              ; preds = %111
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %14) #6
  invoke void @_ZN9NOMAD_4_314AllStopReasons31getEvalGlobalStopReasonAsStringB5cxx11Ev(ptr dead_on_unwind nonnull writable sret(%"class.std::__cxx11::basic_string") align 8 %14)
          to label %113 unwind label %116

113:                                              ; preds = %112
  %114 = invoke noundef nonnull align 8 dereferenceable(32) ptr @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEpLERKS4_(ptr noundef nonnull align 8 dereferenceable(32) %10, ptr noundef nonnull align 8 dereferenceable(32) %14)
          to label %115 unwind label %118

115:                                              ; preds = %113
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %14) #6
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %14) #6
  br label %134

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

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

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

121:                                              ; preds = %111
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %15) #6
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %16) #6
  invoke void @_ZN9NOMAD_4_314AllStopReasons25getBaseStopReasonAsStringB5cxx11Ev(ptr dead_on_unwind nonnull writable sret(%"class.std::__cxx11::basic_string") align 8 %16)
          to label %122 unwind label %126

122:                                              ; preds = %121
  invoke void @_ZStplIcSt11char_traitsIcESaIcEENSt7__cxx1112basic_stringIT_T0_T1_EEOS8_PKS5_(ptr dead_on_unwind nonnull writable sret(%"class.std::__cxx11::basic_string") align 8 %15, ptr noundef nonnull align 8 dereferenceable(32) %16, ptr noundef nonnull @.str.39)
          to label %123 unwind label %128

123:                                              ; preds = %122
  %124 = invoke noundef nonnull align 8 dereferenceable(32) ptr @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEpLERKS4_(ptr noundef nonnull align 8 dereferenceable(32) %10, ptr noundef nonnull align 8 dereferenceable(32) %15)
          to label %125 unwind label %130

125:                                              ; preds = %123
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %15) #6
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %16) #6
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %16) #6
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %15) #6
  br label %134

126:                                              ; preds = %121
  %127 = landingpad { ptr, i32 }
          cleanup
  br label %133

128:                                              ; preds = %122
  %129 = landingpad { ptr, i32 }
          cleanup
  br label %132

130:                                              ; preds = %123
  %131 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %15) #6
  br label %132

132:                                              ; preds = %130, %128
  %.pn = phi { ptr, i32 } [ %131, %130 ], [ %129, %128 ]
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %16) #6
  br label %133

133:                                              ; preds = %132, %126
  %.pn.pn = phi { ptr, i32 } [ %.pn, %132 ], [ %127, %126 ]
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %16) #6
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %15) #6
  br label %137

134:                                              ; preds = %115, %125, %96
  invoke void @_ZN9NOMAD_4_311OutputQueue3AddERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEENS_11OutputLevelE(ptr noundef nonnull align 8 dereferenceable(32) %10, i32 noundef 9)
          to label %135 unwind label %99

135:                                              ; preds = %134
  invoke void @_ZN9NOMAD_4_311OutputQueue5FlushEv()
          to label %136 unwind label %99

136:                                              ; preds = %135
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %10) #6
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %10) #6
  br label %140

137:                                              ; preds = %133, %120, %108, %99
  %.pn97 = phi { ptr, i32 } [ %100, %99 ], [ %.pn94.pn, %108 ], [ %.pn92, %120 ], [ %.pn.pn, %133 ]
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %10) #6
  br label %138

138:                                              ; preds = %137, %97
  %.pn97.pn = phi { ptr, i32 } [ %.pn97, %137 ], [ %98, %97 ]
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %10) #6
  br label %419

139:                                              ; preds = %84
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %17) #6
  store i32 0, ptr %17, align 4, !tbaa !9
  call void @_ZN9NOMAD_4_316EvaluatorControl13setStopReasonEiRKNS_22EvalMainThreadStopTypeE(ptr noundef nonnull align 8 dereferenceable(352) %0, i32 noundef %53, ptr noundef nonnull align 4 dereferenceable(4) %17)
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %17) #6
  br label %140

140:                                              ; preds = %86, %136, %139
  call void @_ZN9NOMAD_4_316EvaluatorControl17resetSuccessStatsEv(ptr noundef nonnull align 8 dereferenceable(352) %0)
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %18) #6
  store i32 9, ptr %18, align 4, !tbaa !11
  %141 = call noundef zeroext i1 @_ZN9NOMAD_4_311OutputQueue9GoodLevelERKNS_11OutputLevelE(ptr noundef nonnull align 4 dereferenceable(4) %18)
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %18) #6
  br i1 %141, label %142, label %207

142:                                              ; preds = %140
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %19) #6
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %20) #6
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %20) #6
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %19, ptr noundef nonnull @.str.40, ptr noundef nonnull align 1 dereferenceable(1) %20)
          to label %143 unwind label %165

143:                                              ; preds = %142
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %20) #6
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %20) #6
  %144 = invoke noundef nonnull align 8 dereferenceable(32) ptr @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEpLEPKc(ptr noundef nonnull align 8 dereferenceable(32) %19, ptr noundef nonnull @.str.41)
          to label %145 unwind label %167

145:                                              ; preds = %143
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %21) #6
  %146 = invoke noundef zeroext i1 @_ZNK9NOMAD_4_316EvaluatorControl20getOpportunisticEvalEi(ptr noundef nonnull align 8 dereferenceable(352) %0, i32 noundef %53)
          to label %147 unwind label %169

147:                                              ; preds = %145
  invoke void @_ZN9NOMAD_4_312boolToStringB5cxx11Eb(ptr dead_on_unwind nonnull writable sret(%"class.std::__cxx11::basic_string") align 8 %21, i1 noundef zeroext %146)
          to label %148 unwind label %169

148:                                              ; preds = %147
  %149 = invoke noundef nonnull align 8 dereferenceable(32) ptr @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEpLERKS4_(ptr noundef nonnull align 8 dereferenceable(32) %19, ptr noundef nonnull align 8 dereferenceable(32) %21)
          to label %150 unwind label %171

150:                                              ; preds = %148
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %21) #6
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %21) #6
  %151 = invoke noundef nonnull align 8 dereferenceable(32) ptr @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEpLEPKc(ptr noundef nonnull align 8 dereferenceable(32) %19, ptr noundef nonnull @.str.42)
          to label %152 unwind label %167

152:                                              ; preds = %150
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %22) #6
  %153 = invoke noundef zeroext i1 @_ZNK9NOMAD_4_316EvaluatorControl11getUseCacheEi(ptr noundef nonnull align 8 dereferenceable(352) %0, i32 noundef %53)
          to label %154 unwind label %174

154:                                              ; preds = %152
  invoke void @_ZN9NOMAD_4_312boolToStringB5cxx11Eb(ptr dead_on_unwind nonnull writable sret(%"class.std::__cxx11::basic_string") align 8 %22, i1 noundef zeroext %153)
          to label %155 unwind label %174

155:                                              ; preds = %154
  %156 = invoke noundef nonnull align 8 dereferenceable(32) ptr @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEpLERKS4_(ptr noundef nonnull align 8 dereferenceable(32) %19, ptr noundef nonnull align 8 dereferenceable(32) %22)
          to label %157 unwind label %176

157:                                              ; preds = %155
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %22) #6
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %22) #6
  %158 = invoke noundef nonnull align 8 dereferenceable(32) ptr @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEpLEPKc(ptr noundef nonnull align 8 dereferenceable(32) %19, ptr noundef nonnull @.str.43)
          to label %159 unwind label %167

159:                                              ; preds = %157
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %23) #6
  invoke void @_ZNK9NOMAD_4_316EvaluatorControl10getBarrierEi(ptr dead_on_unwind nonnull writable sret(%"class.std::shared_ptr.52") align 8 %23, ptr noundef nonnull align 8 dereferenceable(352) %0, i32 noundef %53)
          to label %160 unwind label %179

160:                                              ; preds = %159
  %161 = call noundef zeroext i1 @_ZSteqIN9NOMAD_4_311BarrierBaseEEbDnRKSt10shared_ptrIT_E(ptr null, ptr noundef nonnull align 8 dereferenceable(16) %23) #6
  br i1 %161, label %162, label %183

162:                                              ; preds = %160
  %163 = invoke noundef nonnull align 8 dereferenceable(32) ptr @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEpLEPKc(ptr noundef nonnull align 8 dereferenceable(32) %19, ptr noundef nonnull @.str.44)
          to label %164 unwind label %181

164:                                              ; preds = %162
  invoke void @_ZN9NOMAD_4_311OutputQueue3AddERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEENS_11OutputLevelE(ptr noundef nonnull align 8 dereferenceable(32) %19, i32 noundef 9)
          to label %202 unwind label %181

165:                                              ; preds = %142
  %166 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %20) #6
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %20) #6
  br label %206

167:                                              ; preds = %157, %150, %143
  %168 = landingpad { ptr, i32 }
          cleanup
  br label %205

169:                                              ; preds = %147, %145
  %170 = landingpad { ptr, i32 }
          cleanup
  br label %173

171:                                              ; preds = %148
  %172 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %21) #6
  br label %173

173:                                              ; preds = %171, %169
  %.pn100 = phi { ptr, i32 } [ %172, %171 ], [ %170, %169 ]
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %21) #6
  br label %205

174:                                              ; preds = %154, %152
  %175 = landingpad { ptr, i32 }
          cleanup
  br label %178

176:                                              ; preds = %155
  %177 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %22) #6
  br label %178

178:                                              ; preds = %176, %174
  %.pn102 = phi { ptr, i32 } [ %177, %176 ], [ %175, %174 ]
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %22) #6
  br label %205

179:                                              ; preds = %159
  %180 = landingpad { ptr, i32 }
          cleanup
  br label %204

181:                                              ; preds = %183, %164, %162
  %182 = landingpad { ptr, i32 }
          cleanup
  br label %203

183:                                              ; preds = %160
  invoke void @_ZN9NOMAD_4_311OutputQueue3AddERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEENS_11OutputLevelE(ptr noundef nonnull align 8 dereferenceable(32) %19, i32 noundef 9)
          to label %184 unwind label %181

184:                                              ; preds = %183
  call void @llvm.lifetime.start.p0(i64 24, ptr nonnull %24) #6
  %185 = call noundef ptr @_ZNKSt19__shared_ptr_accessIN9NOMAD_4_311BarrierBaseELN9__gnu_cxx12_Lock_policyE2ELb0ELb0EEptEv(ptr noundef nonnull align 1 dereferenceable(1) %23) #6
  %186 = load ptr, ptr %185, align 8, !tbaa !13
  %187 = getelementptr inbounds i8, ptr %186, i64 72
  %188 = load ptr, ptr %187, align 8
  invoke void %188(ptr dead_on_unwind nonnull writable sret(%"class.std::vector.143") align 8 %24, ptr noundef nonnull align 8 dereferenceable(120) %185, i64 noundef 4)
          to label %189 unwind label %193

189:                                              ; preds = %184
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %25) #6
  %190 = call ptr @_ZNSt6vectorINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESaIS5_EE5beginEv(ptr noundef nonnull align 8 dereferenceable(24) %24) #6
  store ptr %190, ptr %25, align 8
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %26) #6
  %191 = call ptr @_ZNSt6vectorINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESaIS5_EE3endEv(ptr noundef nonnull align 8 dereferenceable(24) %24) #6
  store ptr %191, ptr %26, align 8
  %192 = call noundef zeroext i1 @_ZN9__gnu_cxxneIPNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESt6vectorIS6_SaIS6_EEEEbRKNS_17__normal_iteratorIT_T0_EESG_(ptr noundef nonnull align 8 dereferenceable(8) %25, ptr noundef nonnull align 8 dereferenceable(8) %26) #6
  br i1 %192, label %.lr.ph, label %._crit_edge

._crit_edge:                                      ; preds = %196, %189
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %26) #6
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %25) #6
  call void @_ZNSt6vectorINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESaIS5_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %24) #6
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %24) #6
  br label %202

193:                                              ; preds = %184
  %194 = landingpad { ptr, i32 }
          cleanup
  br label %201

.lr.ph:                                           ; preds = %189, %196
  %195 = call noundef nonnull align 8 dereferenceable(32) ptr @_ZNK9__gnu_cxx17__normal_iteratorIPNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESt6vectorIS6_SaIS6_EEEdeEv(ptr noundef nonnull align 8 dereferenceable(8) %25) #6
  invoke void @_ZN9NOMAD_4_311OutputQueue3AddERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEENS_11OutputLevelE(ptr noundef nonnull align 8 dereferenceable(32) %195, i32 noundef 9)
          to label %196 unwind label %199

196:                                              ; preds = %.lr.ph
  %197 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZN9__gnu_cxx17__normal_iteratorIPNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESt6vectorIS6_SaIS6_EEEppEv(ptr noundef nonnull align 8 dereferenceable(8) %25) #6
  %198 = call noundef zeroext i1 @_ZN9__gnu_cxxneIPNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESt6vectorIS6_SaIS6_EEEEbRKNS_17__normal_iteratorIT_T0_EESG_(ptr noundef nonnull align 8 dereferenceable(8) %25, ptr noundef nonnull align 8 dereferenceable(8) %26) #6
  br i1 %198, label %.lr.ph, label %._crit_edge

199:                                              ; preds = %.lr.ph
  %200 = landingpad { ptr, i32 }
          cleanup
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %26) #6
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %25) #6
  call void @_ZNSt6vectorINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESaIS5_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %24) #6
  br label %201

201:                                              ; preds = %199, %193
  %.pn104 = phi { ptr, i32 } [ %200, %199 ], [ %194, %193 ]
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %24) #6
  br label %203

202:                                              ; preds = %164, %._crit_edge
  call void @_ZNSt12__shared_ptrIN9NOMAD_4_311BarrierBaseELN9__gnu_cxx12_Lock_policyE2EED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %23) #6
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %23) #6
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %19) #6
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %19) #6
  br label %207

203:                                              ; preds = %201, %181
  %.pn106 = phi { ptr, i32 } [ %182, %181 ], [ %.pn104, %201 ]
  call void @_ZNSt12__shared_ptrIN9NOMAD_4_311BarrierBaseELN9__gnu_cxx12_Lock_policyE2EED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %23) #6
  br label %204

204:                                              ; preds = %203, %179
  %.pn106.pn = phi { ptr, i32 } [ %.pn106, %203 ], [ %180, %179 ]
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %23) #6
  br label %205

205:                                              ; preds = %204, %178, %173, %167
  %.pn106.pn.pn = phi { ptr, i32 } [ %.pn106.pn, %204 ], [ %168, %167 ], [ %.pn102, %178 ], [ %.pn100, %173 ]
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %19) #6
  br label %206

206:                                              ; preds = %205, %165
  %.pn106.pn.pn.pn = phi { ptr, i32 } [ %.pn106.pn.pn, %205 ], [ %166, %165 ]
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %19) #6
  br label %419

207:                                              ; preds = %140, %202, %1
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %27) #6
  store i64 0, ptr %27, align 8, !tbaa !15
  %208 = getelementptr inbounds i8, ptr %0, i64 280
  %209 = getelementptr inbounds i8, ptr %0, i64 272
  %210 = getelementptr inbounds i8, ptr %0, i64 248
  %211 = getelementptr inbounds i8, ptr %0, i64 264
  %212 = getelementptr inbounds i8, ptr %0, i64 232
  %213 = getelementptr inbounds i8, ptr %0, i64 240
  br label %214

214:                                              ; preds = %207, %.loopexit
  %.088153 = phi i8 [ 0, %207 ], [ %333, %.loopexit ]
  %215 = load i8, ptr %208, align 8, !tbaa !17, !range !51, !noundef !52
  %216 = trunc nuw i8 %215 to i1
  br i1 %216, label %.critedge, label %217

217:                                              ; preds = %214
  br i1 %54, label %218, label %221

218:                                              ; preds = %217
  %219 = call noundef zeroext i1 @_ZNK9NOMAD_4_316EvaluatorControl12stopMainEvalEi(ptr noundef nonnull align 8 dereferenceable(352) %0, i32 noundef %53)
  %220 = zext i1 %219 to i8
  br label %221

221:                                              ; preds = %218, %217
  %.189 = phi i8 [ %220, %218 ], [ %.088153, %217 ]
  %222 = trunc nuw i8 %.189 to i1
  br i1 %222, label %.thread142, label %223

.thread142:                                       ; preds = %221
  call void @llvm.lifetime.start.p0(i64 24, ptr nonnull %28) #6
  call void @_ZNSt6vectorISt10shared_ptrIN9NOMAD_4_314EvalQueuePointEESaIS3_EEC2Ev(ptr noundef nonnull align 8 dereferenceable(24) %28) #6
  br label %314

223:                                              ; preds = %221
  %224 = call noundef zeroext i1 @_ZNK9NOMAD_4_316EvaluatorControl14reachedMaxEvalEv(ptr noundef nonnull align 8 dereferenceable(352) %0)
  %225 = zext i1 %224 to i8
  call void @llvm.lifetime.start.p0(i64 24, ptr nonnull %28) #6
  call void @_ZNSt6vectorISt10shared_ptrIN9NOMAD_4_314EvalQueuePointEESaIS3_EEC2Ev(ptr noundef nonnull align 8 dereferenceable(24) %28) #6
  br i1 %224, label %314, label %226

226:                                              ; preds = %223
  %227 = invoke noundef zeroext i1 @_ZN9NOMAD_4_316EvaluatorControl8popBlockERSt6vectorISt10shared_ptrINS_14EvalQueuePointEESaIS4_EE(ptr noundef nonnull align 8 dereferenceable(352) %0, ptr noundef nonnull align 8 dereferenceable(24) %28)
          to label %228 unwind label %236

228:                                              ; preds = %226
  br i1 %227, label %229, label %314

229:                                              ; preds = %228
  %230 = invoke noundef zeroext i1 @_ZN9NOMAD_4_316EvaluatorControl9evalBlockERSt6vectorISt10shared_ptrINS_14EvalQueuePointEESaIS4_EE(ptr noundef nonnull align 8 dereferenceable(352) %0, ptr noundef nonnull align 8 dereferenceable(24) %28)
          to label %231 unwind label %236

231:                                              ; preds = %229
  br i1 %230, label %232, label %301

232:                                              ; preds = %231
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %29) #6
  %233 = call ptr @_ZNSt6vectorISt10shared_ptrIN9NOMAD_4_314EvalQueuePointEESaIS3_EE5beginEv(ptr noundef nonnull align 8 dereferenceable(24) %28) #6
  store ptr %233, ptr %29, align 8
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %30) #6
  %234 = call ptr @_ZNSt6vectorISt10shared_ptrIN9NOMAD_4_314EvalQueuePointEESaIS3_EE3endEv(ptr noundef nonnull align 8 dereferenceable(24) %28) #6
  store ptr %234, ptr %30, align 8
  %235 = call noundef zeroext i1 @_ZN9__gnu_cxxltIPSt10shared_ptrIN9NOMAD_4_314EvalQueuePointEESt6vectorIS4_SaIS4_EEEEbRKNS_17__normal_iteratorIT_T0_EESE_(ptr noundef nonnull align 8 dereferenceable(8) %29, ptr noundef nonnull align 8 dereferenceable(8) %30) #6
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %30) #6
  br i1 %235, label %.lr.ph148, label %._crit_edge149

._crit_edge149:                                   ; preds = %296, %232
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %29) #6
  invoke void @_ZN9NOMAD_4_316EvaluatorControl12addStatsInfoERKSt6vectorISt10shared_ptrINS_14EvalQueuePointEESaIS4_EE(ptr noundef nonnull align 8 dereferenceable(352) %0, ptr noundef nonnull align 8 dereferenceable(24) %28)
          to label %301 unwind label %236

236:                                              ; preds = %._crit_edge149, %229, %226
  %237 = landingpad { ptr, i32 }
          cleanup
  br label %335

.lr.ph148:                                        ; preds = %232, %296
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %31) #6
  %238 = call noundef nonnull align 8 dereferenceable(16) ptr @_ZNK9__gnu_cxx17__normal_iteratorIPSt10shared_ptrIN9NOMAD_4_314EvalQueuePointEESt6vectorIS4_SaIS4_EEEdeEv(ptr noundef nonnull align 8 dereferenceable(8) %29) #6
  call void @_ZNSt10shared_ptrIN9NOMAD_4_314EvalQueuePointEEC2ERKS2_(ptr noundef nonnull align 8 dereferenceable(16) %31, ptr noundef nonnull align 8 dereferenceable(16) %238) #6
  %239 = call noundef ptr @_ZNKSt19__shared_ptr_accessIN9NOMAD_4_314EvalQueuePointELN9__gnu_cxx12_Lock_policyE2ELb0ELb0EEptEv(ptr noundef nonnull align 1 dereferenceable(1) %31) #6
  %240 = call noundef i32 @_ZNK9NOMAD_4_39EvalPoint13getThreadAlgoEv(ptr noundef nonnull align 8 dereferenceable(160) %239)
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %32) #6
  %241 = call noundef ptr @_ZNKSt19__shared_ptr_accessIN9NOMAD_4_314EvalQueuePointELN9__gnu_cxx12_Lock_policyE2ELb0ELb0EEptEv(ptr noundef nonnull align 1 dereferenceable(1) %31) #6
  %242 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNK9NOMAD_4_314EvalQueuePoint10getSuccessEv(ptr noundef nonnull align 8 dereferenceable(184) %241)
  %243 = load i32, ptr %242, align 4, !tbaa !5
  store i32 %243, ptr %32, align 4, !tbaa !5
  %244 = invoke noundef nonnull align 4 dereferenceable(4) ptr @_ZNK9NOMAD_4_316EvaluatorControl14getSuccessTypeEi(ptr noundef nonnull align 8 dereferenceable(352) %0, i32 noundef %240)
          to label %245 unwind label %249

245:                                              ; preds = %.lr.ph148
  %246 = load i32, ptr %244, align 4, !tbaa !5
  %247 = icmp sgt i32 %243, %246
  br i1 %247, label %248, label %251

248:                                              ; preds = %245
  invoke void @_ZN9NOMAD_4_316EvaluatorControl14setSuccessTypeEiRKNS_11SuccessTypeE(ptr noundef nonnull align 8 dereferenceable(352) %0, i32 noundef %240, ptr noundef nonnull align 4 dereferenceable(4) %32)
          to label %251 unwind label %249

249:                                              ; preds = %285, %282, %260, %254, %248, %.lr.ph148
  %250 = landingpad { ptr, i32 }
          cleanup
  br label %300

251:                                              ; preds = %248, %245
  %252 = load i32, ptr %32, align 4, !tbaa !5
  %253 = icmp eq i32 %252, 4
  br i1 %253, label %254, label %272

254:                                              ; preds = %251
  %255 = call noundef ptr @_ZNKSt19__shared_ptr_accessIN9NOMAD_4_314EvalQueuePointELN9__gnu_cxx12_Lock_policyE2ELb0ELb0EEptEv(ptr noundef nonnull align 1 dereferenceable(1) %31) #6
  %256 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNK9NOMAD_4_314EvalQueuePoint11getEvalTypeEv(ptr noundef nonnull align 8 dereferenceable(184) %255)
  %257 = load i32, ptr %256, align 4, !tbaa !53
  %258 = invoke noundef zeroext i1 @_ZNK9NOMAD_4_316EvaluatorControl12evalTypeAsBBENS_8EvalTypeEi(ptr noundef nonnull align 8 dereferenceable(352) %0, i32 noundef %257, i32 noundef %240)
          to label %259 unwind label %249

259:                                              ; preds = %254
  br i1 %258, label %260, label %272

260:                                              ; preds = %259
  %261 = call noundef ptr @_ZNKSt19__shared_ptr_accessIN9NOMAD_4_314EvalQueuePointELN9__gnu_cxx12_Lock_policyE2ELb0ELb0EEptEv(ptr noundef nonnull align 1 dereferenceable(1) %31) #6
  %262 = invoke noundef zeroext i1 @_ZNK9NOMAD_4_39EvalPoint16getGenByPhaseOneEv(ptr noundef nonnull align 8 dereferenceable(160) %261)
          to label %263 unwind label %249

263:                                              ; preds = %260
  br i1 %262, label %264, label %266

264:                                              ; preds = %263
  %265 = call noundef i64 @_ZNSt13__atomic_baseImEppEi(ptr noundef nonnull align 8 dereferenceable(8) %209, i32 noundef 0) #6
  br label %266

266:                                              ; preds = %264, %263
  %267 = call noundef ptr @_ZNKSt19__shared_ptr_accessIN9NOMAD_4_314EvalQueuePointELN9__gnu_cxx12_Lock_policyE2ELb0ELb0EEptEv(ptr noundef nonnull align 1 dereferenceable(1) %31) #6
  %268 = call noundef zeroext i1 @_ZNK9NOMAD_4_314EvalQueuePoint18getRelativeSuccessEv(ptr noundef nonnull align 8 dereferenceable(184) %267)
  br i1 %268, label %272, label %269

269:                                              ; preds = %266
  %270 = call noundef i64 @_ZNK9NOMAD_4_316EvaluatorControl9getBbEvalEv(ptr noundef nonnull align 8 dereferenceable(352) %0)
  %271 = call noundef i64 @_ZNSt13__atomic_baseImEaSEm(ptr noundef nonnull align 8 dereferenceable(8) %210, i64 noundef %270) #6
  br label %272

272:                                              ; preds = %266, %269, %259, %251
  %273 = call noundef ptr @_ZNKSt19__shared_ptr_accessIN9NOMAD_4_314EvalQueuePointELN9__gnu_cxx12_Lock_policyE2ELb0ELb0EEptEv(ptr noundef nonnull align 1 dereferenceable(1) %31) #6
  %274 = call noundef zeroext i1 @_ZNK9NOMAD_4_314EvalQueuePoint18getRelativeSuccessEv(ptr noundef nonnull align 8 dereferenceable(184) %273)
  br i1 %274, label %275, label %281

275:                                              ; preds = %272
  %276 = call noundef i64 @_ZNSt13__atomic_baseImEppEi(ptr noundef nonnull align 8 dereferenceable(8) %211, i32 noundef 0) #6
  %277 = call noundef i64 @_ZNK9NOMAD_4_316EvaluatorControl12getBlockEvalEv(ptr noundef nonnull align 8 dereferenceable(352) %0)
  %278 = call noundef i64 @_ZNSt13__atomic_baseImEaSEm(ptr noundef nonnull align 8 dereferenceable(8) %212, i64 noundef %277) #6
  %279 = call noundef i64 @_ZNK9NOMAD_4_316EvaluatorControl9getBbEvalEv(ptr noundef nonnull align 8 dereferenceable(352) %0)
  %280 = call noundef i64 @_ZNSt13__atomic_baseImEaSEm(ptr noundef nonnull align 8 dereferenceable(8) %213, i64 noundef %279) #6
  br label %281

281:                                              ; preds = %275, %272
  call void @_ZNSt10shared_ptrIN9NOMAD_4_314EvalQueuePointEEC2ERKS2_(ptr noundef nonnull align 8 dereferenceable(16) %33, ptr noundef nonnull align 8 dereferenceable(16) %31) #6
  invoke void @_ZNK9NOMAD_4_316EvaluatorControl19addDirectToFileInfoESt10shared_ptrINS_14EvalQueuePointEE(ptr noundef nonnull align 8 dereferenceable(352) %0, ptr noundef nonnull %33)
          to label %282 unwind label %292

282:                                              ; preds = %281
  call void @_ZNSt12__shared_ptrIN9NOMAD_4_314EvalQueuePointELN9__gnu_cxx12_Lock_policyE2EED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %33) #6
  %283 = invoke noundef zeroext i1 @_ZNK9NOMAD_4_316EvaluatorControl20getOpportunisticEvalEi(ptr noundef nonnull align 8 dereferenceable(352) %0, i32 noundef %240)
          to label %284 unwind label %249

284:                                              ; preds = %282
  br i1 %283, label %285, label %296

285:                                              ; preds = %284
  %286 = invoke noundef nonnull align 4 dereferenceable(4) ptr @_ZNK9NOMAD_4_316EvaluatorControl14getSuccessTypeEi(ptr noundef nonnull align 8 dereferenceable(352) %0, i32 noundef %240)
          to label %287 unwind label %249

287:                                              ; preds = %285
  %288 = load i32, ptr %286, align 4, !tbaa !5
  %289 = icmp sgt i32 %288, 3
  br i1 %289, label %290, label %296

290:                                              ; preds = %287
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %34) #6
  store i32 3, ptr %34, align 4, !tbaa !9
  invoke void @_ZN9NOMAD_4_316EvaluatorControl13setStopReasonEiRKNS_22EvalMainThreadStopTypeE(ptr noundef nonnull align 8 dereferenceable(352) %0, i32 noundef %240, ptr noundef nonnull align 4 dereferenceable(4) %34)
          to label %291 unwind label %294

291:                                              ; preds = %290
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %34) #6
  br label %296

292:                                              ; preds = %281
  %293 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt12__shared_ptrIN9NOMAD_4_314EvalQueuePointELN9__gnu_cxx12_Lock_policyE2EED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %33) #6
  br label %300

294:                                              ; preds = %290
  %295 = landingpad { ptr, i32 }
          cleanup
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %34) #6
  br label %300

296:                                              ; preds = %291, %287, %284
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %32) #6
  call void @_ZNSt12__shared_ptrIN9NOMAD_4_314EvalQueuePointELN9__gnu_cxx12_Lock_policyE2EED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %31) #6
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %31) #6
  %297 = call ptr @_ZN9__gnu_cxx17__normal_iteratorIPSt10shared_ptrIN9NOMAD_4_314EvalQueuePointEESt6vectorIS4_SaIS4_EEEppEi(ptr noundef nonnull align 8 dereferenceable(8) %29, i32 noundef 0) #6
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %30) #6
  %298 = call ptr @_ZNSt6vectorISt10shared_ptrIN9NOMAD_4_314EvalQueuePointEESaIS3_EE3endEv(ptr noundef nonnull align 8 dereferenceable(24) %28) #6
  store ptr %298, ptr %30, align 8
  %299 = call noundef zeroext i1 @_ZN9__gnu_cxxltIPSt10shared_ptrIN9NOMAD_4_314EvalQueuePointEESt6vectorIS4_SaIS4_EEEEbRKNS_17__normal_iteratorIT_T0_EESE_(ptr noundef nonnull align 8 dereferenceable(8) %29, ptr noundef nonnull align 8 dereferenceable(8) %30) #6
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %30) #6
  br i1 %299, label %.lr.ph148, label %._crit_edge149, !llvm.loop !55

300:                                              ; preds = %294, %292, %249
  %.pn111 = phi { ptr, i32 } [ %295, %294 ], [ %250, %249 ], [ %293, %292 ]
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %32) #6
  call void @_ZNSt12__shared_ptrIN9NOMAD_4_314EvalQueuePointELN9__gnu_cxx12_Lock_policyE2EED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %31) #6
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %31) #6
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %29) #6
  br label %335

301:                                              ; preds = %._crit_edge149, %231
  %302 = call noundef i64 @_ZNKSt6vectorISt10shared_ptrIN9NOMAD_4_314EvalQueuePointEESaIS3_EE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24) %28) #6
  %.not158 = icmp eq i64 %302, 0
  br i1 %.not158, label %.loopexit, label %.lr.ph152

.lr.ph152:                                        ; preds = %301, %308
  %.085150 = phi i64 [ %309, %308 ], [ 0, %301 ]
  %303 = call noundef nonnull align 8 dereferenceable(16) ptr @_ZNSt6vectorISt10shared_ptrIN9NOMAD_4_314EvalQueuePointEESaIS3_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %28, i64 noundef %.085150) #6
  %304 = call noundef ptr @_ZNKSt19__shared_ptr_accessIN9NOMAD_4_314EvalQueuePointELN9__gnu_cxx12_Lock_policyE2ELb0ELb0EEptEv(ptr noundef nonnull align 1 dereferenceable(1) %303) #6
  %305 = call noundef i32 @_ZNK9NOMAD_4_39EvalPoint13getThreadAlgoEv(ptr noundef nonnull align 8 dereferenceable(160) %304)
  %306 = invoke noundef nonnull align 8 dereferenceable(248) ptr @_ZNK9NOMAD_4_316EvaluatorControl17getMainThreadInfoEi(ptr noundef nonnull align 8 dereferenceable(352) %0, i32 noundef %305)
          to label %307 unwind label %312

307:                                              ; preds = %.lr.ph152
  invoke void @_ZN9NOMAD_4_317EvcMainThreadInfo19decCurrentlyRunningEv(ptr noundef nonnull align 8 dereferenceable(248) %306)
          to label %308 unwind label %312

308:                                              ; preds = %307
  %309 = add nuw i64 %.085150, 1
  %310 = call noundef i64 @_ZNKSt6vectorISt10shared_ptrIN9NOMAD_4_314EvalQueuePointEESaIS3_EE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24) %28) #6
  %311 = icmp ult i64 %309, %310
  br i1 %311, label %.lr.ph152, label %.loopexit, !llvm.loop !57

312:                                              ; preds = %307, %.lr.ph152
  %313 = landingpad { ptr, i32 }
          cleanup
  br label %335

314:                                              ; preds = %.thread142, %228, %223
  %315 = phi i8 [ 1, %.thread142 ], [ 0, %228 ], [ 1, %223 ]
  %316 = load i8, ptr %208, align 8, !tbaa !17, !range !51, !noundef !52
  %317 = trunc nuw i8 %316 to i1
  br i1 %317, label %319, label %318

318:                                              ; preds = %314
  call void @_ZNK9NOMAD_4_316EvaluatorControl23displayDebugWaitingInfoERl(ptr noundef nonnull align 8 dereferenceable(352) %0, ptr noundef nonnull align 8 dereferenceable(8) %27)
  br label %.loopexit

319:                                              ; preds = %314
  br i1 %54, label %320, label %.thread143

320:                                              ; preds = %319
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %35) #6
  store i32 9, ptr %35, align 4, !tbaa !11
  %321 = invoke noundef zeroext i1 @_ZN9NOMAD_4_311OutputQueue9GoodLevelERKNS_11OutputLevelE(ptr noundef nonnull align 4 dereferenceable(4) %35)
          to label %322 unwind label %326

322:                                              ; preds = %320
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %35) #6
  br i1 %321, label %323, label %.thread143

323:                                              ; preds = %322
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %36) #6
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %37) #6
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %37) #6
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %36, ptr noundef nonnull @.str.45, ptr noundef nonnull align 1 dereferenceable(1) %37)
          to label %324 unwind label %328

324:                                              ; preds = %323
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %37) #6
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %37) #6
  invoke void @_ZN9NOMAD_4_311OutputQueue3AddERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEENS_11OutputLevelE(ptr noundef nonnull align 8 dereferenceable(32) %36, i32 noundef 9)
          to label %325 unwind label %330

325:                                              ; preds = %324
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %36) #6
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %36) #6
  br label %.thread143

326:                                              ; preds = %320
  %327 = landingpad { ptr, i32 }
          cleanup
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %35) #6
  br label %335

328:                                              ; preds = %323
  %329 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %37) #6
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %37) #6
  br label %332

330:                                              ; preds = %324
  %331 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %36) #6
  br label %332

332:                                              ; preds = %330, %328
  %.pn113 = phi { ptr, i32 } [ %331, %330 ], [ %329, %328 ]
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %36) #6
  br label %335

.thread143:                                       ; preds = %322, %325, %319
  call void @_ZNSt6vectorISt10shared_ptrIN9NOMAD_4_314EvalQueuePointEESaIS3_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %28) #6
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %28) #6
  br label %.critedge

.loopexit:                                        ; preds = %308, %301, %318
  %333 = phi i8 [ %315, %318 ], [ %225, %301 ], [ %225, %308 ]
  call void @_ZNSt6vectorISt10shared_ptrIN9NOMAD_4_314EvalQueuePointEESaIS3_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %28) #6
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %28) #6
  %334 = trunc nuw i8 %333 to i1
  br i1 %334, label %.critedge, label %214

335:                                              ; preds = %332, %326, %312, %300, %236
  %.pn113.pn = phi { ptr, i32 } [ %.pn113, %332 ], [ %327, %326 ], [ %.pn111, %300 ], [ %313, %312 ], [ %237, %236 ]
  call void @_ZNSt6vectorISt10shared_ptrIN9NOMAD_4_314EvalQueuePointEESaIS3_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %28) #6
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %28) #6
  br label %418

.critedge:                                        ; preds = %.loopexit, %214, %.thread143
  %336 = getelementptr inbounds i8, ptr %0, i64 8
  %337 = call noundef ptr @_ZNKSt19__shared_ptr_accessIN9NOMAD_4_332EvaluatorControlGlobalParametersELN9__gnu_cxx12_Lock_policyE2ELb0ELb0EEptEv(ptr noundef nonnull align 1 dereferenceable(1) %336) #6
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %38) #6
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %39) #6
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %39) #6
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %38, ptr noundef nonnull @.str.46, ptr noundef nonnull align 1 dereferenceable(1) %39)
          to label %338 unwind label %353

338:                                              ; preds = %.critedge
  %339 = invoke noundef nonnull align 1 dereferenceable(1) ptr @_ZNK9NOMAD_4_310Parameters17getAttributeValueIbEERKT_RKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEb(ptr noundef nonnull align 8 dereferenceable(496) %337, ptr noundef nonnull align 8 dereferenceable(32) %38, i1 noundef zeroext false)
          to label %340 unwind label %355

340:                                              ; preds = %338
  %341 = load i8, ptr %339, align 1, !tbaa !58, !range !51, !noundef !52
  %342 = trunc nuw i8 %341 to i1
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %38) #6
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %39) #6
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %39) #6
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %38) #6
  br i1 %54, label %.preheader, label %.critedge138

.preheader:                                       ; preds = %340
  %343 = call noundef nonnull align 8 dereferenceable(248) ptr @_ZNK9NOMAD_4_316EvaluatorControl17getMainThreadInfoEi(ptr noundef nonnull align 8 dereferenceable(352) %0, i32 noundef %53)
  %344 = call noundef i64 @_ZNK9NOMAD_4_317EvcMainThreadInfo19getCurrentlyRunningEv(ptr noundef nonnull align 8 dereferenceable(248) %343)
  %.not154 = icmp eq i64 %344, 0
  br i1 %.not154, label %._crit_edge157, label %.lr.ph156

.lr.ph156:                                        ; preds = %.preheader, %371
  %.050155 = phi i1 [ %.151, %371 ], [ false, %.preheader ]
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %40) #6
  store i32 7, ptr %40, align 4, !tbaa !11
  %345 = call noundef zeroext i1 @_ZN9NOMAD_4_311OutputQueue9GoodLevelERKNS_11OutputLevelE(ptr noundef nonnull align 4 dereferenceable(4) %40)
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %40) #6
  %.not146 = xor i1 %345, true
  %brmerge = select i1 %.not146, i1 true, i1 %.050155
  br i1 %brmerge, label %363, label %346

346:                                              ; preds = %.lr.ph156
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %41) #6
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %42) #6
  %347 = call noundef nonnull align 8 dereferenceable(248) ptr @_ZNK9NOMAD_4_316EvaluatorControl17getMainThreadInfoEi(ptr noundef nonnull align 8 dereferenceable(352) %0, i32 noundef %53)
  %348 = call noundef i64 @_ZNK9NOMAD_4_317EvcMainThreadInfo19getCurrentlyRunningEv(ptr noundef nonnull align 8 dereferenceable(248) %347)
  call void @_ZN9NOMAD_4_34itosB5cxx11Em(ptr dead_on_unwind nonnull writable sret(%"class.std::__cxx11::basic_string") align 8 %42, i64 noundef %348)
  invoke void @_ZStplIcSt11char_traitsIcESaIcEENSt7__cxx1112basic_stringIT_T0_T1_EEPKS5_OS8_(ptr dead_on_unwind nonnull writable sret(%"class.std::__cxx11::basic_string") align 8 %41, ptr noundef nonnull @.str.47, ptr noundef nonnull align 8 dereferenceable(32) %42)
          to label %349 unwind label %358

349:                                              ; preds = %346
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %42) #6
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %42) #6
  %350 = invoke noundef nonnull align 8 dereferenceable(32) ptr @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEpLEPKc(ptr noundef nonnull align 8 dereferenceable(32) %41, ptr noundef nonnull @.str.48)
          to label %351 unwind label %360

351:                                              ; preds = %349
  invoke void @_ZN9NOMAD_4_311OutputQueue3AddERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEENS_11OutputLevelE(ptr noundef nonnull align 8 dereferenceable(32) %41, i32 noundef 7)
          to label %352 unwind label %360

352:                                              ; preds = %351
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %41) #6
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %41) #6
  br label %363

353:                                              ; preds = %.critedge
  %354 = landingpad { ptr, i32 }
          cleanup
  br label %357

355:                                              ; preds = %338
  %356 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %38) #6
  br label %357

357:                                              ; preds = %355, %353
  %.pn116 = phi { ptr, i32 } [ %356, %355 ], [ %354, %353 ]
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %39) #6
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %39) #6
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %38) #6
  br label %418

358:                                              ; preds = %346
  %359 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %42) #6
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %42) #6
  br label %362

360:                                              ; preds = %351, %349
  %361 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %41) #6
  br label %362

362:                                              ; preds = %360, %358
  %.pn127 = phi { ptr, i32 } [ %361, %360 ], [ %359, %358 ]
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %41) #6
  br label %418

363:                                              ; preds = %.lr.ph156, %352
  %.151 = phi i1 [ true, %352 ], [ %.050155, %.lr.ph156 ]
  %364 = call i32 @usleep(i32 noundef 10)
  %365 = call noundef zeroext i1 @_ZNK9NOMAD_4_316EvaluatorControl20getOpportunisticEvalEi(ptr noundef nonnull align 8 dereferenceable(352) %0, i32 noundef %53)
  br i1 %365, label %366, label %371

366:                                              ; preds = %363
  %367 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNK9NOMAD_4_316EvaluatorControl14getSuccessTypeEi(ptr noundef nonnull align 8 dereferenceable(352) %0, i32 noundef %53)
  %368 = load i32, ptr %367, align 4, !tbaa !5
  %369 = icmp sgt i32 %368, 3
  br i1 %369, label %370, label %371

370:                                              ; preds = %366
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %43) #6
  store i32 3, ptr %43, align 4, !tbaa !9
  call void @_ZN9NOMAD_4_316EvaluatorControl13setStopReasonEiRKNS_22EvalMainThreadStopTypeE(ptr noundef nonnull align 8 dereferenceable(352) %0, i32 noundef %53, ptr noundef nonnull align 4 dereferenceable(4) %43)
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %43) #6
  br label %371

371:                                              ; preds = %370, %366, %363
  %372 = call noundef zeroext i1 @_ZNK9NOMAD_4_316EvaluatorControl14reachedMaxEvalEv(ptr noundef nonnull align 8 dereferenceable(352) %0)
  %373 = call noundef zeroext i1 @_ZNK9NOMAD_4_316EvaluatorControl18reachedMaxStepEvalEi(ptr noundef nonnull align 8 dereferenceable(352) %0, i32 noundef %53)
  %374 = call noundef nonnull align 8 dereferenceable(248) ptr @_ZNK9NOMAD_4_316EvaluatorControl17getMainThreadInfoEi(ptr noundef nonnull align 8 dereferenceable(352) %0, i32 noundef %53)
  %375 = call noundef i64 @_ZNK9NOMAD_4_317EvcMainThreadInfo19getCurrentlyRunningEv(ptr noundef nonnull align 8 dereferenceable(248) %374)
  %.not = icmp eq i64 %375, 0
  br i1 %.not, label %._crit_edge157, label %.lr.ph156, !llvm.loop !59

._crit_edge157:                                   ; preds = %371, %.preheader
  br i1 %342, label %376, label %391

376:                                              ; preds = %._crit_edge157
  %377 = call noundef i64 @_ZN9NOMAD_4_316EvaluatorControl10clearQueueEib(ptr noundef nonnull align 8 dereferenceable(352) %0, i32 noundef %53, i1 noundef zeroext false)
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %44) #6
  store i32 9, ptr %44, align 4, !tbaa !11
  %378 = call noundef zeroext i1 @_ZN9NOMAD_4_311OutputQueue9GoodLevelERKNS_11OutputLevelE(ptr noundef nonnull align 4 dereferenceable(4) %44)
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %44) #6
  br i1 %378, label %379, label %391

379:                                              ; preds = %376
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %45) #6
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %46) #6
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %47) #6
  call void @_ZN9NOMAD_4_34itosB5cxx11Em(ptr dead_on_unwind nonnull writable sret(%"class.std::__cxx11::basic_string") align 8 %47, i64 noundef %377)
  invoke void @_ZStplIcSt11char_traitsIcESaIcEENSt7__cxx1112basic_stringIT_T0_T1_EEPKS5_OS8_(ptr dead_on_unwind nonnull writable sret(%"class.std::__cxx11::basic_string") align 8 %46, ptr noundef nonnull @.str.49, ptr noundef nonnull align 8 dereferenceable(32) %47)
          to label %380 unwind label %383

380:                                              ; preds = %379
  invoke void @_ZStplIcSt11char_traitsIcESaIcEENSt7__cxx1112basic_stringIT_T0_T1_EEOS8_PKS5_(ptr dead_on_unwind nonnull writable sret(%"class.std::__cxx11::basic_string") align 8 %45, ptr noundef nonnull align 8 dereferenceable(32) %46, ptr noundef nonnull @.str.50)
          to label %381 unwind label %385

381:                                              ; preds = %380
  invoke void @_ZN9NOMAD_4_311OutputQueue3AddERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEENS_11OutputLevelE(ptr noundef nonnull align 8 dereferenceable(32) %45, i32 noundef 9)
          to label %382 unwind label %387

382:                                              ; preds = %381
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %45) #6
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %46) #6
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %47) #6
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %47) #6
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %46) #6
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %45) #6
  br label %391

383:                                              ; preds = %379
  %384 = landingpad { ptr, i32 }
          cleanup
  br label %390

385:                                              ; preds = %380
  %386 = landingpad { ptr, i32 }
          cleanup
  br label %389

387:                                              ; preds = %381
  %388 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %45) #6
  br label %389

389:                                              ; preds = %387, %385
  %.pn118 = phi { ptr, i32 } [ %388, %387 ], [ %386, %385 ]
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %46) #6
  br label %390

390:                                              ; preds = %389, %383
  %.pn118.pn = phi { ptr, i32 } [ %.pn118, %389 ], [ %384, %383 ]
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %47) #6
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %47) #6
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %46) #6
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %45) #6
  br label %418

391:                                              ; preds = %376, %382, %._crit_edge157
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %48) #6
  store i32 9, ptr %48, align 4, !tbaa !11
  %392 = call noundef zeroext i1 @_ZN9NOMAD_4_311OutputQueue9GoodLevelERKNS_11OutputLevelE(ptr noundef nonnull align 4 dereferenceable(4) %48)
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %48) #6
  br i1 %392, label %393, label %414

393:                                              ; preds = %391
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %49) #6
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %50) #6
  call void @_ZNK9NOMAD_4_316EvaluatorControl21getStopReasonAsStringB5cxx11Ei(ptr dead_on_unwind nonnull writable sret(%"class.std::__cxx11::basic_string") align 8 %50, ptr noundef nonnull align 8 dereferenceable(352) %0, i32 noundef %53)
  invoke void @_ZStplIcSt11char_traitsIcESaIcEENSt7__cxx1112basic_stringIT_T0_T1_EEPKS5_OS8_(ptr dead_on_unwind nonnull writable sret(%"class.std::__cxx11::basic_string") align 8 %49, ptr noundef nonnull @.str.51, ptr noundef nonnull align 8 dereferenceable(32) %50)
          to label %394 unwind label %400

394:                                              ; preds = %393
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %50) #6
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %50) #6
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %51) #6
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %52) #6
  invoke void @_ZN9NOMAD_4_314AllStopReasons31getEvalGlobalStopReasonAsStringB5cxx11Ev(ptr dead_on_unwind nonnull writable sret(%"class.std::__cxx11::basic_string") align 8 %52)
          to label %395 unwind label %402

395:                                              ; preds = %394
  invoke void @_ZStplIcSt11char_traitsIcESaIcEENSt7__cxx1112basic_stringIT_T0_T1_EEPKS5_OS8_(ptr dead_on_unwind nonnull writable sret(%"class.std::__cxx11::basic_string") align 8 %51, ptr noundef nonnull @.str.52, ptr noundef nonnull align 8 dereferenceable(32) %52)
          to label %396 unwind label %404

396:                                              ; preds = %395
  %397 = invoke noundef nonnull align 8 dereferenceable(32) ptr @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEpLERKS4_(ptr noundef nonnull align 8 dereferenceable(32) %49, ptr noundef nonnull align 8 dereferenceable(32) %51)
          to label %398 unwind label %406

398:                                              ; preds = %396
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %51) #6
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %52) #6
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %52) #6
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %51) #6
  invoke void @_ZN9NOMAD_4_311OutputQueue3AddERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEENS_11OutputLevelE(ptr noundef nonnull align 8 dereferenceable(32) %49, i32 noundef 9)
          to label %399 unwind label %410

399:                                              ; preds = %398
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %49) #6
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %49) #6
  br label %414

400:                                              ; preds = %393
  %401 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %50) #6
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %50) #6
  br label %413

402:                                              ; preds = %394
  %403 = landingpad { ptr, i32 }
          cleanup
  br label %409

404:                                              ; preds = %395
  %405 = landingpad { ptr, i32 }
          cleanup
  br label %408

406:                                              ; preds = %396
  %407 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %51) #6
  br label %408

408:                                              ; preds = %406, %404
  %.pn121 = phi { ptr, i32 } [ %407, %406 ], [ %405, %404 ]
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %52) #6
  br label %409

409:                                              ; preds = %408, %402
  %.pn121.pn = phi { ptr, i32 } [ %.pn121, %408 ], [ %403, %402 ]
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %52) #6
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %51) #6
  br label %412

410:                                              ; preds = %398
  %411 = landingpad { ptr, i32 }
          cleanup
  br label %412

412:                                              ; preds = %410, %409
  %.pn124 = phi { ptr, i32 } [ %411, %410 ], [ %.pn121.pn, %409 ]
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %49) #6
  br label %413

413:                                              ; preds = %412, %400
  %.pn124.pn = phi { ptr, i32 } [ %.pn124, %412 ], [ %401, %400 ]
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %49) #6
  br label %418

414:                                              ; preds = %391, %399
  call void @_ZN9NOMAD_4_311OutputQueue5FlushEv()
  %415 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNK9NOMAD_4_316EvaluatorControl14getSuccessTypeEi(ptr noundef nonnull align 8 dereferenceable(352) %0, i32 noundef %53)
  %416 = load i32, ptr %415, align 4, !tbaa !5
  br label %.critedge138

.critedge138:                                     ; preds = %340, %414
  %417 = phi i32 [ %416, %414 ], [ 2, %340 ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %27) #6
  ret i32 %417

418:                                              ; preds = %357, %413, %390, %362, %335
  %.pn127.pn.pn.pn = phi { ptr, i32 } [ %.pn113.pn, %335 ], [ %.pn116, %357 ], [ %.pn127, %362 ], [ %.pn124.pn, %413 ], [ %.pn118.pn, %390 ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %27) #6
  br label %419

419:                                              ; preds = %418, %206, %138, %75
  %.pn132.pn.pn.pn = phi { ptr, i32 } [ %.pn132.pn.pn, %75 ], [ %.pn127.pn.pn.pn, %418 ], [ %.pn106.pn.pn.pn, %206 ], [ %.pn97.pn, %138 ]
  resume { ptr, i32 } %.pn132.pn.pn.pn

420:                                              ; preds = %65
  unreachable
}

; Function Attrs: mustprogress uwtable
declare dso_local noundef zeroext i1 @_ZN9NOMAD_4_314AllStopReasons24checkEvalGlobalTerminateEv() local_unnamed_addr #2 align 2

; Function Attrs: mustprogress uwtable
declare dso_local noundef zeroext i1 @_ZN9NOMAD_4_314AllStopReasons18checkBaseTerminateEv() local_unnamed_addr #2 align 2

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

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

; Function Attrs: mustprogress uwtable
declare dso_local void @_ZN9NOMAD_4_311OutputQueue5FlushEv() local_unnamed_addr #2 align 2

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

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

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

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

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

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

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

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

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

; Function Attrs: mustprogress uwtable
declare dso_local noundef zeroext i1 @_ZNK9NOMAD_4_316EvaluatorControl14reachedMaxEvalEv(ptr noundef nonnull align 8 dereferenceable(352)) local_unnamed_addr #2 align 2

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

; Function Attrs: mustprogress uwtable
declare dso_local noundef zeroext i1 @_ZN9NOMAD_4_316EvaluatorControl9evalBlockERSt6vectorISt10shared_ptrINS_14EvalQueuePointEESaIS4_EE(ptr noundef nonnull align 8 dereferenceable(352), ptr noundef nonnull align 8 dereferenceable(24)) local_unnamed_addr #2 align 2

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

; Function Attrs: mustprogress uwtable
declare dso_local noundef zeroext i1 @_ZNK9NOMAD_4_316EvaluatorControl12evalTypeAsBBENS_8EvalTypeEi(ptr noundef nonnull align 8 dereferenceable(352), i32 noundef, i32 noundef) local_unnamed_addr #2 align 2

declare noundef zeroext i1 @_ZNK9NOMAD_4_39EvalPoint16getGenByPhaseOneEv(ptr noundef nonnull align 8 dereferenceable(160)) local_unnamed_addr #3

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

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

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

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

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

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

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

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

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

; Function Attrs: mustprogress uwtable
declare dso_local noundef nonnull align 1 dereferenceable(1) ptr @_ZNK9NOMAD_4_310Parameters17getAttributeValueIbEERKT_RKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEb(ptr noundef nonnull align 8 dereferenceable(496), ptr noundef nonnull align 8 dereferenceable(32), i1 noundef zeroext) local_unnamed_addr #2 align 2

declare i32 @usleep(i32 noundef) local_unnamed_addr #3

; Function Attrs: mustprogress uwtable
declare dso_local noundef zeroext i1 @_ZNK9NOMAD_4_316EvaluatorControl18reachedMaxStepEvalEi(ptr noundef nonnull align 8 dereferenceable(352), i32 noundef) local_unnamed_addr #2 align 2

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

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

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

!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 = !{!"_ZTSN9NOMAD_4_311SuccessTypeE", !7, i64 0}
!7 = !{!"omnipotent char", !8, i64 0}
!8 = !{!"Simple C++ TBAA"}
!9 = !{!10, !10, i64 0}
!10 = !{!"_ZTSN9NOMAD_4_322EvalMainThreadStopTypeE", !7, i64 0}
!11 = !{!12, !12, i64 0}
!12 = !{!"_ZTSN9NOMAD_4_311OutputLevelE", !7, i64 0}
!13 = !{!14, !14, i64 0}
!14 = !{!"vtable pointer", !8, i64 0}
!15 = !{!16, !16, i64 0}
!16 = !{!"long", !7, i64 0}
!17 = !{!18, !44, i64 280}
!18 = !{!"_ZTSN9NOMAD_4_316EvaluatorControlE", !19, i64 8, !23, i64 24, !25, i64 40, !33, i64 88, !36, i64 136, !40, i64 160, !42, i64 176, !42, i64 184, !42, i64 192, !42, i64 200, !42, i64 208, !42, i64 216, !42, i64 224, !42, i64 232, !42, i64 240, !42, i64 248, !42, i64 256, !42, i64 264, !42, i64 272, !44, i64 280, !45, i64 288}
!19 = !{!"_ZTSSt10shared_ptrIN9NOMAD_4_332EvaluatorControlGlobalParametersEE", !20, i64 0}
!20 = !{!"_ZTSSt12__shared_ptrIN9NOMAD_4_332EvaluatorControlGlobalParametersELN9__gnu_cxx12_Lock_policyE2EE", !21, i64 0, !22, i64 8}
!21 = !{!"any pointer", !7, i64 0}
!22 = !{!"_ZTSSt14__shared_countILN9__gnu_cxx12_Lock_policyE2EE", !21, i64 0}
!23 = !{!"_ZTSSt10shared_ptrIN9NOMAD_4_326EvaluatorControlParametersEE", !24, i64 0}
!24 = !{!"_ZTSSt12__shared_ptrIN9NOMAD_4_326EvaluatorControlParametersELN9__gnu_cxx12_Lock_policyE2EE", !21, i64 0, !22, i64 8}
!25 = !{!"_ZTSSt3setIiSt4lessIiESaIiEE", !26, i64 0}
!26 = !{!"_ZTSSt8_Rb_treeIiiSt9_IdentityIiESt4lessIiESaIiEE", !27, i64 0}
!27 = !{!"_ZTSNSt8_Rb_treeIiiSt9_IdentityIiESt4lessIiESaIiEE13_Rb_tree_implIS3_Lb1EEE", !28, i64 0, !30, i64 8}
!28 = !{!"_ZTSSt20_Rb_tree_key_compareISt4lessIiEE", !29, i64 0}
!29 = !{!"_ZTSSt4lessIiE"}
!30 = !{!"_ZTSSt15_Rb_tree_header", !31, i64 0, !16, i64 32}
!31 = !{!"_ZTSSt18_Rb_tree_node_base", !32, i64 0, !21, i64 8, !21, i64 16, !21, i64 24}
!32 = !{!"_ZTSSt14_Rb_tree_color", !7, i64 0}
!33 = !{!"_ZTSSt3mapIiN9NOMAD_4_317EvcMainThreadInfoESt4lessIiESaISt4pairIKiS1_EEE", !34, i64 0}
!34 = !{!"_ZTSSt8_Rb_treeIiSt4pairIKiN9NOMAD_4_317EvcMainThreadInfoEESt10_Select1stIS4_ESt4lessIiESaIS4_EE", !35, i64 0}
!35 = !{!"_ZTSNSt8_Rb_treeIiSt4pairIKiN9NOMAD_4_317EvcMainThreadInfoEESt10_Select1stIS4_ESt4lessIiESaIS4_EE13_Rb_tree_implIS8_Lb1EEE", !28, i64 0, !30, i64 8}
!36 = !{!"_ZTSSt6vectorISt10shared_ptrIN9NOMAD_4_314EvalQueuePointEESaIS3_EE", !37, i64 0}
!37 = !{!"_ZTSSt12_Vector_baseISt10shared_ptrIN9NOMAD_4_314EvalQueuePointEESaIS3_EE", !38, i64 0}
!38 = !{!"_ZTSNSt12_Vector_baseISt10shared_ptrIN9NOMAD_4_314EvalQueuePointEESaIS3_EE12_Vector_implE", !39, i64 0}
!39 = !{!"_ZTSNSt12_Vector_baseISt10shared_ptrIN9NOMAD_4_314EvalQueuePointEESaIS3_EE17_Vector_impl_dataE", !21, i64 0, !21, i64 8, !21, i64 16}
!40 = !{!"_ZTSSt10shared_ptrIN9NOMAD_4_321ComparePriorityMethodEE", !41, i64 0}
!41 = !{!"_ZTSSt12__shared_ptrIN9NOMAD_4_321ComparePriorityMethodELN9__gnu_cxx12_Lock_policyE2EE", !21, i64 0, !22, i64 8}
!42 = !{!"_ZTSSt6atomicImE", !43, i64 0}
!43 = !{!"_ZTSSt13__atomic_baseImE", !16, i64 0}
!44 = !{!"bool", !7, i64 0}
!45 = !{!"_ZTSN9NOMAD_4_312SuccessStatsE", !46, i64 0, !16, i64 48, !16, i64 56}
!46 = !{!"_ZTSSt3mapISt4pairIN9NOMAD_4_38StepTypeENS1_11SuccessTypeEEmSt4lessIS4_ESaIS0_IKS4_mEEE", !47, i64 0}
!47 = !{!"_ZTSSt8_Rb_treeISt4pairIN9NOMAD_4_38StepTypeENS1_11SuccessTypeEES0_IKS4_mESt10_Select1stIS6_ESt4lessIS4_ESaIS6_EE", !48, i64 0}
!48 = !{!"_ZTSNSt8_Rb_treeISt4pairIN9NOMAD_4_38StepTypeENS1_11SuccessTypeEES0_IKS4_mESt10_Select1stIS6_ESt4lessIS4_ESaIS6_EE13_Rb_tree_implISA_Lb1EEE", !49, i64 0, !30, i64 8}
!49 = !{!"_ZTSSt20_Rb_tree_key_compareISt4lessISt4pairIN9NOMAD_4_38StepTypeENS2_11SuccessTypeEEEE", !50, i64 0}
!50 = !{!"_ZTSSt4lessISt4pairIN9NOMAD_4_38StepTypeENS1_11SuccessTypeEEE"}
!51 = !{i8 0, i8 2}
!52 = !{}
!53 = !{!54, !54, i64 0}
!54 = !{!"_ZTSN9NOMAD_4_38EvalTypeE", !7, i64 0}
!55 = distinct !{!55, !56}
!56 = !{!"llvm.loop.mustprogress"}
!57 = distinct !{!57, !56}
!58 = !{!44, !44, i64 0}
!59 = distinct !{!59, !56}


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