; LLVM IR from buresjan/optim_lbm :: nomad/src/Algos/NelderMead (NMInitializeSimplex)

; 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::shared_ptr.29" = type { %"class.std::__shared_ptr.30" }
%"class.std::__shared_ptr.30" = type { ptr, %"class.std::__shared_count" }
%"class.std::__shared_count" = type { ptr }
%"class.std::__cxx11::basic_string" = type { %"struct.std::__cxx11::basic_string<char>::_Alloc_hider", i64, %union.anon }
%"struct.std::__cxx11::basic_string<char>::_Alloc_hider" = type { ptr }
%union.anon = type { i64, [8 x i8] }
%"class.std::allocator" = type { i8 }
%"class.std::vector.57" = type { %"struct.std::_Vector_base.58" }
%"struct.std::_Vector_base.58" = type { %"struct.std::_Vector_base<NOMAD_4_3::EvalPoint, std::allocator<NOMAD_4_3::EvalPoint>>::_Vector_impl" }
%"struct.std::_Vector_base<NOMAD_4_3::EvalPoint, std::allocator<NOMAD_4_3::EvalPoint>>::_Vector_impl" = type { %"struct.std::_Vector_base<NOMAD_4_3::EvalPoint, std::allocator<NOMAD_4_3::EvalPoint>>::_Vector_impl_data" }
%"struct.std::_Vector_base<NOMAD_4_3::EvalPoint, std::allocator<NOMAD_4_3::EvalPoint>>::_Vector_impl_data" = type { ptr, ptr, ptr }
%"class.std::shared_ptr.62" = type { %"class.std::__shared_ptr.63" }
%"class.std::__shared_ptr.63" = type { ptr, %"class.std::__shared_count" }
%"class.std::shared_ptr.65" = type { %"class.std::__shared_ptr.66" }
%"class.std::__shared_ptr.66" = type { ptr, %"class.std::__shared_count" }
%"class.NOMAD_4_3::Double" = type <{ ptr, double, i8, [7 x i8] }>
%"class.NOMAD_4_3::ArrayOfDouble" = type { ptr, i64, ptr }
%"class.NOMAD_4_3::OutputInfo" = type { %"class.std::__cxx11::basic_string", %"class.NOMAD_4_3::ArrayOfString", i32, i8, i8, %"class.std::unique_ptr.107" }
%"class.NOMAD_4_3::ArrayOfString" = type { ptr, %"class.std::vector.102" }
%"class.std::vector.102" = type { %"struct.std::_Vector_base.103" }
%"struct.std::_Vector_base.103" = type { %"struct.std::_Vector_base<std::__cxx11::basic_string<char>, std::allocator<std::__cxx11::basic_string<char>>>::_Vector_impl" }
%"struct.std::_Vector_base<std::__cxx11::basic_string<char>, std::allocator<std::__cxx11::basic_string<char>>>::_Vector_impl" = type { %"struct.std::_Vector_base<std::__cxx11::basic_string<char>, std::allocator<std::__cxx11::basic_string<char>>>::_Vector_impl_data" }
%"struct.std::_Vector_base<std::__cxx11::basic_string<char>, std::allocator<std::__cxx11::basic_string<char>>>::_Vector_impl_data" = type { ptr, ptr, ptr }
%"class.std::unique_ptr.107" = type { %"struct.std::__uniq_ptr_data.108" }
%"struct.std::__uniq_ptr_data.108" = type { %"class.std::__uniq_ptr_impl.109" }
%"class.std::__uniq_ptr_impl.109" = type { %"class.std::tuple.110" }
%"class.std::tuple.110" = type { %"struct.std::_Tuple_impl.111" }
%"struct.std::_Tuple_impl.111" = type { %"struct.std::_Head_base.114" }
%"struct.std::_Head_base.114" = type { ptr }
%"class.std::shared_ptr.83" = type { %"class.std::__shared_ptr.84" }
%"class.std::__shared_ptr.84" = type { ptr, %"class.std::__shared_count" }
%"class.std::set.26" = type { %"class.std::_Rb_tree.27" }
%"class.std::_Rb_tree.27" = type { %"struct.std::_Rb_tree<NOMAD_4_3::EvalPoint, NOMAD_4_3::EvalPoint, std::_Identity<NOMAD_4_3::EvalPoint>, NOMAD_4_3::NMSimplexEvalPointCompare>::_Rb_tree_impl" }
%"struct.std::_Rb_tree<NOMAD_4_3::EvalPoint, NOMAD_4_3::EvalPoint, std::_Identity<NOMAD_4_3::EvalPoint>, NOMAD_4_3::NMSimplexEvalPointCompare>::_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.NOMAD_4_3::CacheInterface" = type { ptr, %"class.NOMAD_4_3::Point" }
%"class.NOMAD_4_3::Point" = type { %"class.NOMAD_4_3::ArrayOfDouble" }
%"class.__gnu_cxx::__normal_iterator" = type { ptr }
%"class.NOMAD_4_3::EvalPoint" = type { %"class.NOMAD_4_3::Point", [3 x %"class.std::unique_ptr"], i32, i32, i16, %"class.std::shared_ptr.62", %"class.std::vector.75", %"class.std::shared_ptr.80", %"class.NOMAD_4_3::Double", %"class.std::shared_ptr.83" }
%"class.std::unique_ptr" = type { %"struct.std::__uniq_ptr_data" }
%"struct.std::__uniq_ptr_data" = type { %"class.std::__uniq_ptr_impl" }
%"class.std::__uniq_ptr_impl" = type { %"class.std::tuple" }
%"class.std::tuple" = type { %"struct.std::_Tuple_impl" }
%"struct.std::_Tuple_impl" = type { %"struct.std::_Head_base.74" }
%"struct.std::_Head_base.74" = type { ptr }
%"class.std::vector.75" = type { %"struct.std::_Vector_base.76" }
%"struct.std::_Vector_base.76" = type { %"struct.std::_Vector_base<NOMAD_4_3::StepType, std::allocator<NOMAD_4_3::StepType>>::_Vector_impl" }
%"struct.std::_Vector_base<NOMAD_4_3::StepType, std::allocator<NOMAD_4_3::StepType>>::_Vector_impl" = type { %"struct.std::_Vector_base<NOMAD_4_3::StepType, std::allocator<NOMAD_4_3::StepType>>::_Vector_impl_data" }
%"struct.std::_Vector_base<NOMAD_4_3::StepType, std::allocator<NOMAD_4_3::StepType>>::_Vector_impl_data" = type { ptr, ptr, ptr }
%"class.std::shared_ptr.80" = type { %"class.std::__shared_ptr.81" }
%"class.std::__shared_ptr.81" = type { ptr, %"class.std::__shared_count" }
%"struct.std::pair" = type <{ %"struct.std::_Rb_tree_const_iterator", i8, [7 x i8] }>
%"struct.std::_Rb_tree_const_iterator" = type { ptr }
%"class.std::shared_ptr.115" = type { %"class.std::__shared_ptr.116" }
%"class.std::__shared_ptr.116" = type { ptr, %"class.std::__shared_count" }
%"class.std::shared_ptr" = type { %"class.std::__shared_ptr" }
%"class.std::__shared_ptr" = type { ptr, %"class.std::__shared_count" }
%"class.NOMAD_4_3::Step" = type <{ ptr, ptr, i32, [4 x i8], %"class.std::shared_ptr", %"class.std::shared_ptr.3", %"class.std::shared_ptr.6", %"class.NOMAD_4_3::SuccessStats", i32, [4 x i8] }>
%"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.NOMAD_4_3::SuccessStats" = type { %"class.std::map", i64, i64 }
%"class.std::map" = type { %"class.std::_Rb_tree.9" }
%"class.std::_Rb_tree.9" = 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" }
%"class.NOMAD_4_3::NMIterationUtils" = type { %"class.NOMAD_4_3::IterationUtils", double, double, double, ptr, ptr, %"class.NOMAD_4_3::ArrayOfDouble", %"class.NOMAD_4_3::Double", i32, %"class.std::shared_ptr.23" }
%"class.NOMAD_4_3::IterationUtils" = type { ptr, %"class.std::set", i64, ptr, ptr, ptr, %"class.NOMAD_4_3::TrialPointStats", i8, i32 }
%"class.std::set" = type { %"class.std::_Rb_tree" }
%"class.std::_Rb_tree" = type { %"struct.std::_Rb_tree<NOMAD_4_3::EvalPoint, NOMAD_4_3::EvalPoint, std::_Identity<NOMAD_4_3::EvalPoint>, NOMAD_4_3::EvalPointCompare>::_Rb_tree_impl" }
%"struct.std::_Rb_tree<NOMAD_4_3::EvalPoint, NOMAD_4_3::EvalPoint, std::_Identity<NOMAD_4_3::EvalPoint>, NOMAD_4_3::EvalPointCompare>::_Rb_tree_impl" = type { [8 x i8], %"struct.std::_Rb_tree_header" }
%"class.NOMAD_4_3::TrialPointStats" = type { ptr, %"class.std::vector", %"class.std::map.17", %"class.std::map.17", %"class.std::map.17", %"class.std::map.17", i64 }
%"class.std::vector" = type { %"struct.std::_Vector_base" }
%"struct.std::_Vector_base" = type { %"struct.std::_Vector_base<NOMAD_4_3::EvalType, std::allocator<NOMAD_4_3::EvalType>>::_Vector_impl" }
%"struct.std::_Vector_base<NOMAD_4_3::EvalType, std::allocator<NOMAD_4_3::EvalType>>::_Vector_impl" = type { %"struct.std::_Vector_base<NOMAD_4_3::EvalType, std::allocator<NOMAD_4_3::EvalType>>::_Vector_impl_data" }
%"struct.std::_Vector_base<NOMAD_4_3::EvalType, std::allocator<NOMAD_4_3::EvalType>>::_Vector_impl_data" = type { ptr, ptr, ptr }
%"class.std::map.17" = type { %"class.std::_Rb_tree.18" }
%"class.std::_Rb_tree.18" = type { %"struct.std::_Rb_tree<NOMAD_4_3::EvalType, std::pair<const NOMAD_4_3::EvalType, unsigned long>, std::_Select1st<std::pair<const NOMAD_4_3::EvalType, unsigned long>>, std::less<NOMAD_4_3::EvalType>>::_Rb_tree_impl" }
%"struct.std::_Rb_tree<NOMAD_4_3::EvalType, std::pair<const NOMAD_4_3::EvalType, unsigned long>, std::_Select1st<std::pair<const NOMAD_4_3::EvalType, unsigned long>>, std::less<NOMAD_4_3::EvalType>>::_Rb_tree_impl" = type { [8 x i8], %"struct.std::_Rb_tree_header" }
%"class.std::shared_ptr.23" = type { %"class.std::__shared_ptr.24" }
%"class.std::__shared_ptr.24" = type { ptr, %"class.std::__shared_count" }

@.str.9 = external hidden unnamed_addr constant [103 x i8], align 1
@_ZTIN9NOMAD_4_39ExceptionE = external constant ptr
@_ZTIN9NOMAD_4_34StepE = external constant ptr
@_ZTIN9NOMAD_4_311NMIterationE = external constant ptr
@.str.13 = external hidden unnamed_addr constant [66 x i8], align 1
@.str.14 = external hidden unnamed_addr constant [32 x i8], align 1
@.str.15 = external hidden unnamed_addr constant [73 x i8], align 1
@.str.16 = external hidden unnamed_addr constant [10 x i8], align 1
@.str.17 = external hidden unnamed_addr constant [26 x i8], align 1
@.str.18 = external hidden unnamed_addr constant [56 x i8], align 1
@.str.19 = external hidden unnamed_addr constant [26 x i8], align 1
@.str.20 = external hidden unnamed_addr constant [31 x i8], align 1
@.str.21 = external hidden unnamed_addr constant [24 x i8], align 1
@_ZN9NOMAD_4_3L22DISPLAY_PRECISION_FULLE = external hidden constant i32, align 4
@.str.22 = external hidden unnamed_addr constant [64 x i8], align 1
@.str.23 = external hidden unnamed_addr constant [4 x i8], align 1
@.str.24 = external hidden unnamed_addr constant [53 x i8], align 1
@.str.25 = external hidden unnamed_addr constant [40 x i8], align 1
@.str.26 = external hidden unnamed_addr constant [28 x i8], align 1
@.str.27 = external hidden unnamed_addr constant [15 x i8], align 1
@.str.28 = external hidden unnamed_addr constant [20 x i8], align 1
@.str.29 = external hidden unnamed_addr constant [3 x i8], align 1
@.str.30 = external hidden unnamed_addr constant [12 x i8], align 1
@.str.31 = external hidden unnamed_addr constant [44 x i8], align 1
@.str.32 = external hidden unnamed_addr constant [51 x i8], align 1
@.str.33 = external hidden unnamed_addr constant [24 x i8], align 1
@.str.34 = external hidden unnamed_addr constant [20 x i8], align 1
@.str.35 = external hidden unnamed_addr constant [48 x i8], align 1
@.str.36 = external hidden unnamed_addr constant [31 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 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 ptr @_ZNKSt19__shared_ptr_accessISt3setIN9NOMAD_4_39EvalPointENS1_25NMSimplexEvalPointCompareESaIS2_EELN9__gnu_cxx12_Lock_policyE2ELb0ELb0EEptEv(ptr noundef nonnull align 1 dereferenceable(1)) #1 align 2

; Function Attrs: mustprogress uwtable
define dso_local noundef zeroext i1 @_ZN9NOMAD_4_319NMInitializeSimplex13createSimplexEv(ptr noundef nonnull align 8 dereferenceable(584) %0) #2 align 2 personality ptr @__gxx_personality_v0 {
  %2 = alloca i1, align 1
  %3 = alloca ptr, align 8
  %4 = alloca i32, align 4
  %5 = alloca %"class.std::shared_ptr.29", align 8
  %6 = alloca ptr, align 8
  %7 = alloca i32, align 4
  %8 = alloca i32, align 4
  %9 = alloca %"class.std::shared_ptr.29", align 8
  %10 = alloca ptr, align 8
  %11 = alloca %"class.std::__cxx11::basic_string", align 8
  %12 = alloca %"class.std::allocator", align 1
  %13 = alloca %"class.std::__cxx11::basic_string", align 8
  %14 = alloca %"class.std::allocator", align 1
  %15 = alloca i1, align 1
  %16 = alloca %"class.std::vector.57", align 8
  %17 = alloca %"class.std::shared_ptr.62", align 8
  %18 = alloca %"class.std::shared_ptr.65", align 8
  %19 = alloca %"class.std::vector.57", align 8
  %20 = alloca %"class.std::shared_ptr.62", align 8
  %21 = alloca %"class.std::__cxx11::basic_string", align 8
  %22 = alloca %"class.std::allocator", align 1
  %23 = alloca %"class.std::__cxx11::basic_string", align 8
  %24 = alloca %"class.std::allocator", align 1
  %25 = alloca i1, align 1
  %26 = alloca %"class.std::__cxx11::basic_string", align 8
  %27 = alloca %"class.std::allocator", align 1
  %28 = alloca %"class.std::__cxx11::basic_string", align 8
  %29 = alloca %"class.std::allocator", align 1
  %30 = alloca i1, align 1
  %31 = alloca i64, align 8
  %32 = alloca %"class.std::__cxx11::basic_string", align 8
  %33 = alloca %"class.std::allocator", align 1
  %34 = alloca i64, align 8
  %35 = alloca %"class.NOMAD_4_3::Double", align 8
  %36 = alloca %"class.std::__cxx11::basic_string", align 8
  %37 = alloca %"class.std::allocator", align 1
  %38 = alloca %"class.NOMAD_4_3::ArrayOfDouble", align 8
  %39 = alloca %"class.NOMAD_4_3::OutputInfo", align 8
  %40 = alloca %"class.std::__cxx11::basic_string", align 8
  %41 = alloca %"class.std::__cxx11::basic_string", align 8
  %42 = alloca %"class.std::allocator", align 1
  %43 = alloca %"class.std::shared_ptr.83", align 8
  %44 = alloca i64, align 8
  %45 = alloca %"class.std::__cxx11::basic_string", align 8
  %46 = alloca %"class.std::allocator", align 1
  %47 = alloca %"class.NOMAD_4_3::ArrayOfDouble", align 8
  %48 = alloca %"class.std::__cxx11::basic_string", align 8
  %49 = alloca %"class.std::allocator", align 1
  %50 = alloca %"class.std::__cxx11::basic_string", align 8
  %51 = alloca %"class.std::allocator", align 1
  %52 = alloca i1, align 1
  %53 = alloca %"class.NOMAD_4_3::Double", align 8
  %54 = alloca double, align 8
  %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 %"class.NOMAD_4_3::ArrayOfDouble", align 8
  %59 = alloca %"class.NOMAD_4_3::Double", align 8
  %60 = alloca %"class.std::__cxx11::basic_string", align 8
  %61 = alloca %"class.std::set.26", align 8
  %62 = alloca %"class.std::shared_ptr.29", align 8
  %63 = alloca %"class.NOMAD_4_3::CacheInterface", align 8
  %64 = alloca %"class.std::vector.57", align 8
  %65 = alloca i64, align 8
  %66 = alloca i64, align 8
  %67 = alloca ptr, align 8
  %68 = alloca %"class.__gnu_cxx::__normal_iterator", align 8
  %69 = alloca %"class.__gnu_cxx::__normal_iterator", align 8
  %70 = alloca i32, align 4
  %71 = alloca ptr, align 8
  %72 = alloca %"class.NOMAD_4_3::EvalPoint", align 8
  %73 = alloca %"struct.std::pair", align 8
  %74 = alloca i32, align 4
  %75 = alloca %"class.std::__cxx11::basic_string", align 8
  %76 = alloca %"class.NOMAD_4_3::ArrayOfDouble", align 8
  %77 = alloca %"class.NOMAD_4_3::Double", align 8
  %78 = alloca i8, align 1
  %79 = alloca i64, align 8
  %80 = alloca %"class.NOMAD_4_3::Double", align 8
  %81 = alloca %"class.NOMAD_4_3::Double", align 8
  %82 = alloca %"class.NOMAD_4_3::EvalPoint", align 8
  %83 = alloca %"struct.std::pair", align 8
  %84 = alloca { ptr, i8 }, align 8
  %85 = alloca i32, align 4
  %86 = alloca %"class.std::__cxx11::basic_string", align 8
  %87 = alloca %"class.std::__cxx11::basic_string", align 8
  %88 = alloca %"class.NOMAD_4_3::ArrayOfDouble", align 8
  %89 = alloca %"class.NOMAD_4_3::Double", align 8
  %90 = alloca i32, align 4
  %91 = alloca %"class.std::__cxx11::basic_string", align 8
  %92 = alloca %"class.NOMAD_4_3::ArrayOfDouble", align 8
  %93 = alloca i1, align 1
  %94 = alloca %"class.NOMAD_4_3::Double", align 8
  %95 = alloca i1, align 1
  %96 = alloca i1, align 1
  %97 = alloca i1, align 1
  %98 = alloca %"class.std::allocator", align 1
  %99 = alloca i1, align 1
  %100 = alloca i1, align 1
  %101 = alloca i32, align 4
  %102 = alloca %"class.NOMAD_4_3::OutputInfo", align 8
  %103 = alloca i32, align 4
  %104 = alloca %"class.std::__cxx11::basic_string", align 8
  %105 = alloca %"class.std::__cxx11::basic_string", align 8
  %106 = alloca %"class.std::shared_ptr.115", align 8
  %107 = alloca %"class.std::shared_ptr", align 8
  %108 = alloca i32, align 4
  %109 = alloca %"class.std::__cxx11::basic_string", align 8
  %110 = alloca %"class.std::allocator", align 1
  %111 = alloca %"struct.std::_Rb_tree_const_iterator", align 8
  %112 = alloca %"class.NOMAD_4_3::OutputInfo", align 8
  %113 = alloca %"class.std::__cxx11::basic_string", align 8
  %114 = alloca %"class.std::__cxx11::basic_string", align 8
  %115 = alloca %"class.std::allocator", align 1
  %116 = alloca %"struct.std::pair", align 8
  %117 = alloca i32, align 4
  %118 = alloca %"class.std::__cxx11::basic_string", align 8
  %119 = alloca %"class.std::__cxx11::basic_string", align 8
  %120 = alloca %"class.NOMAD_4_3::ArrayOfDouble", align 8
  %121 = alloca %"class.NOMAD_4_3::Double", align 8
  %122 = alloca %"class.std::__cxx11::basic_string", align 8
  %123 = alloca %"class.std::allocator", align 1
  %124 = alloca i32, align 4
  %125 = alloca %"class.NOMAD_4_3::Double", align 8
  %126 = alloca %"struct.std::_Rb_tree_const_iterator", align 8
  %127 = alloca i32, align 4
  %128 = alloca %"struct.std::_Rb_tree_const_iterator", align 8
  %129 = alloca i32, align 4
  %130 = alloca %"class.std::__cxx11::basic_string", align 8
  %131 = alloca %"class.std::__cxx11::basic_string", align 8
  %132 = alloca %"class.std::__cxx11::basic_string", align 8
  %133 = alloca %"class.std::__cxx11::basic_string", align 8
  %134 = alloca %"class.std::__cxx11::basic_string", align 8
  %135 = alloca %"class.NOMAD_4_3::ArrayOfDouble", align 8
  %136 = alloca %"class.NOMAD_4_3::Double", align 8
  %137 = alloca %"struct.std::pair", align 8
  %138 = alloca { ptr, i8 }, align 8
  %139 = alloca i32, align 4
  %140 = alloca %"class.std::__cxx11::basic_string", align 8
  %141 = alloca %"class.std::allocator", align 1
  %142 = alloca i32, align 4
  %143 = alloca i32, align 4
  %144 = alloca %"class.std::__cxx11::basic_string", align 8
  %145 = alloca %"class.std::allocator", align 1
  %146 = alloca i32, align 4
  %147 = alloca %"class.std::__cxx11::basic_string", align 8
  %148 = alloca %"class.std::allocator", align 1
  %149 = alloca %"struct.std::_Rb_tree_const_iterator", align 8
  %150 = alloca %"struct.std::_Rb_tree_const_iterator", align 8
  %151 = alloca %"struct.std::_Rb_tree_const_iterator", align 8
  %152 = alloca i32, align 4
  %153 = alloca %"class.std::__cxx11::basic_string", align 8
  %154 = alloca %"class.std::allocator", align 1
  %155 = alloca %"struct.std::_Rb_tree_const_iterator", align 8
  %156 = alloca i32, align 4
  %157 = alloca %"class.NOMAD_4_3::OutputInfo", align 8
  %158 = alloca i32, align 4
  %159 = alloca %"class.std::__cxx11::basic_string", align 8
  %160 = alloca %"class.std::allocator", align 1
  %161 = alloca i32, align 4
  %162 = alloca %"class.std::__cxx11::basic_string", align 8
  %163 = alloca %"class.std::allocator", align 1
  store ptr %0, ptr %3, align 8, !tbaa !5
  %164 = load ptr, ptr %3, align 8
  call void @llvm.lifetime.start.p0(i64 4, ptr %4) #9
  call void @llvm.lifetime.start.p0(i64 16, ptr %5) #9
  call void @_ZN9NOMAD_4_312EvcInterface19getEvaluatorControlEv(ptr dead_on_unwind writable sret(%"class.std::shared_ptr.29") align 8 %5)
  %165 = call noundef ptr @_ZNKSt19__shared_ptr_accessIN9NOMAD_4_316EvaluatorControlELN9__gnu_cxx12_Lock_policyE2ELb0ELb0EEptEv(ptr noundef nonnull align 1 dereferenceable(1) %5) #9
  %166 = invoke noundef i32 @_ZNK9NOMAD_4_316EvaluatorControl18getCurrentEvalTypeEi(ptr noundef nonnull align 8 dereferenceable(352) %165, i32 noundef -1)
          to label %167 unwind label %177

167:                                              ; preds = %1
  call void @_ZNSt12__shared_ptrIN9NOMAD_4_316EvaluatorControlELN9__gnu_cxx12_Lock_policyE2EED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %5) #9
  call void @llvm.lifetime.end.p0(i64 16, ptr %5) #9
  store i32 %166, ptr %4, align 4, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 4, ptr %8) #9
  call void @llvm.lifetime.start.p0(i64 16, ptr %9) #9
  call void @_ZN9NOMAD_4_312EvcInterface19getEvaluatorControlEv(ptr dead_on_unwind writable sret(%"class.std::shared_ptr.29") align 8 %9)
  %168 = call noundef ptr @_ZNKSt19__shared_ptr_accessIN9NOMAD_4_316EvaluatorControlELN9__gnu_cxx12_Lock_policyE2ELb0ELb0EEptEv(ptr noundef nonnull align 1 dereferenceable(1) %9) #9
  %169 = invoke noundef nonnull align 4 dereferenceable(4) ptr @_ZNK9NOMAD_4_316EvaluatorControl14getComputeTypeEi(ptr noundef nonnull align 8 dereferenceable(352) %168, i32 noundef -1)
          to label %170 unwind label %181

170:                                              ; preds = %167
  %171 = load i32, ptr %169, align 4, !tbaa !11
  call void @_ZNSt12__shared_ptrIN9NOMAD_4_316EvaluatorControlELN9__gnu_cxx12_Lock_policyE2EED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %9) #9
  call void @llvm.lifetime.end.p0(i64 16, ptr %9) #9
  store i32 %171, ptr %8, align 4, !tbaa !11
  call void @llvm.lifetime.start.p0(i64 8, ptr %10) #9
  %172 = getelementptr inbounds %"class.NOMAD_4_3::Step", ptr %164, i32 0, i32 1
  %173 = load ptr, ptr %172, align 8, !tbaa !13
  %174 = icmp eq ptr %173, null
  br i1 %174, label %185, label %175

175:                                              ; preds = %170
  %176 = call ptr @__dynamic_cast(ptr %173, ptr @_ZTIN9NOMAD_4_34StepE, ptr @_ZTIN9NOMAD_4_311NMIterationE, i64 0) #9
  br label %186

177:                                              ; preds = %1
  %178 = landingpad { ptr, i32 }
          cleanup
  %179 = extractvalue { ptr, i32 } %178, 0
  store ptr %179, ptr %6, align 8
  %180 = extractvalue { ptr, i32 } %178, 1
  store i32 %180, ptr %7, align 4
  call void @_ZNSt12__shared_ptrIN9NOMAD_4_316EvaluatorControlELN9__gnu_cxx12_Lock_policyE2EED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %5) #9
  call void @llvm.lifetime.end.p0(i64 16, ptr %5) #9
  br label %1333

181:                                              ; preds = %167
  %182 = landingpad { ptr, i32 }
          cleanup
  %183 = extractvalue { ptr, i32 } %182, 0
  store ptr %183, ptr %6, align 8
  %184 = extractvalue { ptr, i32 } %182, 1
  store i32 %184, ptr %7, align 4
  call void @_ZNSt12__shared_ptrIN9NOMAD_4_316EvaluatorControlELN9__gnu_cxx12_Lock_policyE2EED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %9) #9
  call void @llvm.lifetime.end.p0(i64 16, ptr %9) #9
  br label %1332

185:                                              ; preds = %170
  br label %186

186:                                              ; preds = %185, %175
  %187 = phi ptr [ %176, %175 ], [ null, %185 ]
  store ptr %187, ptr %10, align 8, !tbaa !5
  %188 = load ptr, ptr %10, align 8, !tbaa !5
  %189 = icmp eq ptr null, %188
  br i1 %189, label %190, label %212

190:                                              ; preds = %186
  store i1 true, ptr %15, align 1
  %191 = call ptr @__cxa_allocate_exception(i64 112) #9
  call void @llvm.lifetime.start.p0(i64 32, ptr %11) #9
  call void @llvm.lifetime.start.p0(i64 1, ptr %12) #9
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %12) #9
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %11, ptr noundef @.str.9, ptr noundef nonnull align 1 dereferenceable(1) %12)
          to label %192 unwind label %195

192:                                              ; preds = %190
  call void @llvm.lifetime.start.p0(i64 32, ptr %13) #9
  call void @llvm.lifetime.start.p0(i64 1, ptr %14) #9
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %14) #9
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %13, ptr noundef @.str.13, ptr noundef nonnull align 1 dereferenceable(1) %14)
          to label %193 unwind label %199

193:                                              ; preds = %192
  invoke void @_ZN9NOMAD_4_39ExceptionC2ERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEmS8_(ptr noundef nonnull align 8 dereferenceable(112) %191, ptr noundef nonnull align 8 dereferenceable(32) %11, i64 noundef 99, ptr noundef nonnull align 8 dereferenceable(32) %13)
          to label %194 unwind label %203

194:                                              ; preds = %193
  store i1 false, ptr %15, align 1
  invoke void @__cxa_throw(ptr %191, ptr @_ZTIN9NOMAD_4_39ExceptionE, ptr @_ZN9NOMAD_4_39ExceptionD2Ev) #10
          to label %1339 unwind label %203

195:                                              ; preds = %190
  %196 = landingpad { ptr, i32 }
          cleanup
  %197 = extractvalue { ptr, i32 } %196, 0
  store ptr %197, ptr %6, align 8
  %198 = extractvalue { ptr, i32 } %196, 1
  store i32 %198, ptr %7, align 4
  br label %208

199:                                              ; preds = %192
  %200 = landingpad { ptr, i32 }
          cleanup
  %201 = extractvalue { ptr, i32 } %200, 0
  store ptr %201, ptr %6, align 8
  %202 = extractvalue { ptr, i32 } %200, 1
  store i32 %202, ptr %7, align 4
  br label %207

203:                                              ; preds = %194, %193
  %204 = landingpad { ptr, i32 }
          cleanup
  %205 = extractvalue { ptr, i32 } %204, 0
  store ptr %205, ptr %6, align 8
  %206 = extractvalue { ptr, i32 } %204, 1
  store i32 %206, ptr %7, align 4
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %13) #9
  br label %207

207:                                              ; preds = %203, %199
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %14) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr %14) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr %13) #9
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %11) #9
  br label %208

208:                                              ; preds = %207, %195
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %12) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr %12) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr %11) #9
  %209 = load i1, ptr %15, align 1
  br i1 %209, label %210, label %211

210:                                              ; preds = %208
  call void @__cxa_free_exception(ptr %191) #9
  br label %211

211:                                              ; preds = %210, %208
  br label %1331

212:                                              ; preds = %186
  call void @llvm.lifetime.start.p0(i64 24, ptr %16) #9
  call void @_ZNSt6vectorIN9NOMAD_4_39EvalPointESaIS1_EEC2Ev(ptr noundef nonnull align 8 dereferenceable(24) %16) #9
  call void @llvm.lifetime.start.p0(i64 16, ptr %17) #9
  call void @_ZNSt10shared_ptrIN9NOMAD_4_39EvalPointEEC2EDn(ptr noundef nonnull align 8 dereferenceable(16) %17, ptr null) #9
  call void @llvm.lifetime.start.p0(i64 16, ptr %18) #9
  invoke void @_ZNK9NOMAD_4_34Step23getMegaIterationBarrierEv(ptr dead_on_unwind writable sret(%"class.std::shared_ptr.65") align 8 %18, ptr noundef nonnull align 8 dereferenceable(140) %164)
          to label %213 unwind label %222

213:                                              ; preds = %212
  %214 = call noundef zeroext i1 @_ZStneIN9NOMAD_4_311BarrierBaseEEbDnRKSt10shared_ptrIT_E(ptr null, ptr noundef nonnull align 8 dereferenceable(16) %18) #9
  br i1 %214, label %215, label %234

215:                                              ; preds = %213
  call void @llvm.lifetime.start.p0(i64 24, ptr %19) #9
  %216 = call noundef ptr @_ZNKSt19__shared_ptr_accessIN9NOMAD_4_311BarrierBaseELN9__gnu_cxx12_Lock_policyE2ELb0ELb0EEptEv(ptr noundef nonnull align 1 dereferenceable(1) %18) #9
  invoke void @_ZNK9NOMAD_4_311BarrierBase12getAllPointsEv(ptr dead_on_unwind writable sret(%"class.std::vector.57") align 8 %19, ptr noundef nonnull align 8 dereferenceable(120) %216)
          to label %217 unwind label %226

217:                                              ; preds = %215
  %218 = call noundef nonnull align 8 dereferenceable(24) ptr @_ZNSt6vectorIN9NOMAD_4_39EvalPointESaIS1_EEaSEOS3_(ptr noundef nonnull align 8 dereferenceable(24) %16, ptr noundef nonnull align 8 dereferenceable(24) %19) #9
  call void @_ZNSt6vectorIN9NOMAD_4_39EvalPointESaIS1_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %19) #9
  call void @llvm.lifetime.end.p0(i64 24, ptr %19) #9
  call void @llvm.lifetime.start.p0(i64 16, ptr %20) #9
  %219 = call noundef nonnull align 8 dereferenceable(160) ptr @_ZNSt6vectorIN9NOMAD_4_39EvalPointESaIS1_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %16, i64 noundef 0) #9
  invoke void @_ZSt11make_sharedIN9NOMAD_4_39EvalPointEJRS1_EESt10shared_ptrINSt9enable_ifIXntsr8is_arrayIT_EE5valueES5_E4typeEEDpOT0_(ptr dead_on_unwind writable sret(%"class.std::shared_ptr.62") align 8 %20, ptr noundef nonnull align 8 dereferenceable(160) %219)
          to label %220 unwind label %230

220:                                              ; preds = %217
  %221 = call noundef nonnull align 8 dereferenceable(16) ptr @_ZNSt10shared_ptrIN9NOMAD_4_39EvalPointEEaSEOS2_(ptr noundef nonnull align 8 dereferenceable(16) %17, ptr noundef nonnull align 8 dereferenceable(16) %20) #9
  call void @_ZNSt12__shared_ptrIN9NOMAD_4_39EvalPointELN9__gnu_cxx12_Lock_policyE2EED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %20) #9
  call void @llvm.lifetime.end.p0(i64 16, ptr %20) #9
  br label %234

222:                                              ; preds = %212
  %223 = landingpad { ptr, i32 }
          cleanup
  %224 = extractvalue { ptr, i32 } %223, 0
  store ptr %224, ptr %6, align 8
  %225 = extractvalue { ptr, i32 } %223, 1
  store i32 %225, ptr %7, align 4
  br label %1330

226:                                              ; preds = %215
  %227 = landingpad { ptr, i32 }
          cleanup
  %228 = extractvalue { ptr, i32 } %227, 0
  store ptr %228, ptr %6, align 8
  %229 = extractvalue { ptr, i32 } %227, 1
  store i32 %229, ptr %7, align 4
  call void @llvm.lifetime.end.p0(i64 24, ptr %19) #9
  br label %1329

230:                                              ; preds = %217
  %231 = landingpad { ptr, i32 }
          cleanup
  %232 = extractvalue { ptr, i32 } %231, 0
  store ptr %232, ptr %6, align 8
  %233 = extractvalue { ptr, i32 } %231, 1
  store i32 %233, ptr %7, align 4
  call void @llvm.lifetime.end.p0(i64 16, ptr %20) #9
  br label %1329

234:                                              ; preds = %220, %213
  %235 = call noundef zeroext i1 @_ZSteqIN9NOMAD_4_39EvalPointEEbDnRKSt10shared_ptrIT_E(ptr null, ptr noundef nonnull align 8 dereferenceable(16) %17) #9
  br i1 %235, label %236, label %258

236:                                              ; preds = %234
  store i1 true, ptr %25, align 1
  %237 = call ptr @__cxa_allocate_exception(i64 112) #9
  call void @llvm.lifetime.start.p0(i64 32, ptr %21) #9
  call void @llvm.lifetime.start.p0(i64 1, ptr %22) #9
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %22) #9
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %21, ptr noundef @.str.9, ptr noundef nonnull align 1 dereferenceable(1) %22)
          to label %238 unwind label %241

238:                                              ; preds = %236
  call void @llvm.lifetime.start.p0(i64 32, ptr %23) #9
  call void @llvm.lifetime.start.p0(i64 1, ptr %24) #9
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %24) #9
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %23, ptr noundef @.str.14, ptr noundef nonnull align 1 dereferenceable(1) %24)
          to label %239 unwind label %245

239:                                              ; preds = %238
  invoke void @_ZN9NOMAD_4_39ExceptionC2ERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEmS8_(ptr noundef nonnull align 8 dereferenceable(112) %237, ptr noundef nonnull align 8 dereferenceable(32) %21, i64 noundef 112, ptr noundef nonnull align 8 dereferenceable(32) %23)
          to label %240 unwind label %249

240:                                              ; preds = %239
  store i1 false, ptr %25, align 1
  invoke void @__cxa_throw(ptr %237, ptr @_ZTIN9NOMAD_4_39ExceptionE, ptr @_ZN9NOMAD_4_39ExceptionD2Ev) #10
          to label %1339 unwind label %249

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

245:                                              ; preds = %238
  %246 = landingpad { ptr, i32 }
          cleanup
  %247 = extractvalue { ptr, i32 } %246, 0
  store ptr %247, ptr %6, align 8
  %248 = extractvalue { ptr, i32 } %246, 1
  store i32 %248, ptr %7, align 4
  br label %253

249:                                              ; preds = %240, %239
  %250 = landingpad { ptr, i32 }
          cleanup
  %251 = extractvalue { ptr, i32 } %250, 0
  store ptr %251, ptr %6, align 8
  %252 = extractvalue { ptr, i32 } %250, 1
  store i32 %252, ptr %7, align 4
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %23) #9
  br label %253

253:                                              ; preds = %249, %245
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %24) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr %24) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr %23) #9
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %21) #9
  br label %254

254:                                              ; preds = %253, %241
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %22) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr %22) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr %21) #9
  %255 = load i1, ptr %25, align 1
  br i1 %255, label %256, label %257

256:                                              ; preds = %254
  call void @__cxa_free_exception(ptr %237) #9
  br label %257

257:                                              ; preds = %256, %254
  br label %1329

258:                                              ; preds = %234
  %259 = call noundef ptr @_ZNKSt19__shared_ptr_accessIN9NOMAD_4_39EvalPointELN9__gnu_cxx12_Lock_policyE2ELb0ELb0EEptEv(ptr noundef nonnull align 1 dereferenceable(1) %17) #9
  %260 = load i32, ptr %4, align 4, !tbaa !9
  %261 = invoke noundef ptr @_ZNK9NOMAD_4_39EvalPoint7getEvalENS_8EvalTypeE(ptr noundef nonnull align 8 dereferenceable(160) %259, i32 noundef %260)
          to label %262 unwind label %270

262:                                              ; preds = %258
  %263 = invoke noundef zeroext i1 @_ZNK9NOMAD_4_34Eval18isBBOutputCompleteEv(ptr noundef nonnull align 8 dereferenceable(105) %261)
          to label %264 unwind label %270

264:                                              ; preds = %262
  br i1 %263, label %291, label %265

265:                                              ; preds = %264
  store i1 true, ptr %30, align 1
  %266 = call ptr @__cxa_allocate_exception(i64 112) #9
  call void @llvm.lifetime.start.p0(i64 32, ptr %26) #9
  call void @llvm.lifetime.start.p0(i64 1, ptr %27) #9
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %27) #9
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %26, ptr noundef @.str.9, ptr noundef nonnull align 1 dereferenceable(1) %27)
          to label %267 unwind label %274

267:                                              ; preds = %265
  call void @llvm.lifetime.start.p0(i64 32, ptr %28) #9
  call void @llvm.lifetime.start.p0(i64 1, ptr %29) #9
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %29) #9
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %28, ptr noundef @.str.15, ptr noundef nonnull align 1 dereferenceable(1) %29)
          to label %268 unwind label %278

268:                                              ; preds = %267
  invoke void @_ZN9NOMAD_4_39ExceptionC2ERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEmS8_(ptr noundef nonnull align 8 dereferenceable(112) %266, ptr noundef nonnull align 8 dereferenceable(32) %26, i64 noundef 116, ptr noundef nonnull align 8 dereferenceable(32) %28)
          to label %269 unwind label %282

269:                                              ; preds = %268
  store i1 false, ptr %30, align 1
  invoke void @__cxa_throw(ptr %266, ptr @_ZTIN9NOMAD_4_39ExceptionE, ptr @_ZN9NOMAD_4_39ExceptionD2Ev) #10
          to label %1339 unwind label %282

270:                                              ; preds = %262, %258
  %271 = landingpad { ptr, i32 }
          cleanup
  %272 = extractvalue { ptr, i32 } %271, 0
  store ptr %272, ptr %6, align 8
  %273 = extractvalue { ptr, i32 } %271, 1
  store i32 %273, ptr %7, align 4
  br label %1329

274:                                              ; preds = %265
  %275 = landingpad { ptr, i32 }
          cleanup
  %276 = extractvalue { ptr, i32 } %275, 0
  store ptr %276, ptr %6, align 8
  %277 = extractvalue { ptr, i32 } %275, 1
  store i32 %277, ptr %7, align 4
  br label %287

278:                                              ; preds = %267
  %279 = landingpad { ptr, i32 }
          cleanup
  %280 = extractvalue { ptr, i32 } %279, 0
  store ptr %280, ptr %6, align 8
  %281 = extractvalue { ptr, i32 } %279, 1
  store i32 %281, ptr %7, align 4
  br label %286

282:                                              ; preds = %269, %268
  %283 = landingpad { ptr, i32 }
          cleanup
  %284 = extractvalue { ptr, i32 } %283, 0
  store ptr %284, ptr %6, align 8
  %285 = extractvalue { ptr, i32 } %283, 1
  store i32 %285, ptr %7, align 4
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %28) #9
  br label %286

286:                                              ; preds = %282, %278
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %29) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr %29) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr %28) #9
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %26) #9
  br label %287

287:                                              ; preds = %286, %274
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %27) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr %27) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr %26) #9
  %288 = load i1, ptr %30, align 1
  br i1 %288, label %289, label %290

289:                                              ; preds = %287
  call void @__cxa_free_exception(ptr %266) #9
  br label %290

290:                                              ; preds = %289, %287
  br label %1329

291:                                              ; preds = %264
  %292 = getelementptr inbounds i8, ptr %164, i64 144
  %293 = getelementptr inbounds %"class.NOMAD_4_3::NMIterationUtils", ptr %292, i32 0, i32 9
  %294 = call noundef ptr @_ZNKSt19__shared_ptr_accessISt3setIN9NOMAD_4_39EvalPointENS1_25NMSimplexEvalPointCompareESaIS2_EELN9__gnu_cxx12_Lock_policyE2ELb0ELb0EEptEv(ptr noundef nonnull align 1 dereferenceable(1) %293) #9
  call void @_ZNSt3setIN9NOMAD_4_39EvalPointENS0_25NMSimplexEvalPointCompareESaIS1_EE5clearEv(ptr noundef nonnull align 8 dereferenceable(48) %294) #9
  call void @llvm.lifetime.start.p0(i64 8, ptr %31) #9
  %295 = getelementptr inbounds %"class.NOMAD_4_3::Step", ptr %164, i32 0, i32 6
  %296 = call noundef ptr @_ZNKSt19__shared_ptr_accessIN9NOMAD_4_312PbParametersELN9__gnu_cxx12_Lock_policyE2ELb0ELb0EEptEv(ptr noundef nonnull align 1 dereferenceable(1) %295) #9
  call void @llvm.lifetime.start.p0(i64 32, ptr %32) #9
  call void @llvm.lifetime.start.p0(i64 1, ptr %33) #9
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %33) #9
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %32, ptr noundef @.str.16, ptr noundef nonnull align 1 dereferenceable(1) %33)
          to label %297 unwind label %350

297:                                              ; preds = %291
  %298 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNK9NOMAD_4_310Parameters17getAttributeValueImEERKT_RKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEb(ptr noundef nonnull align 8 dereferenceable(496) %296, ptr noundef nonnull align 8 dereferenceable(32) %32, i1 noundef zeroext false)
          to label %299 unwind label %354

299:                                              ; preds = %297
  %300 = load i64, ptr %298, align 8, !tbaa !34
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %32) #9
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %33) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr %33) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr %32) #9
  store i64 %300, ptr %31, align 8, !tbaa !34
  call void @llvm.lifetime.start.p0(i64 8, ptr %34) #9
  %301 = load i64, ptr %31, align 8, !tbaa !34
  %302 = add i64 %301, 1
  store i64 %302, ptr %34, align 8, !tbaa !34
  call void @llvm.lifetime.start.p0(i64 24, ptr %35) #9
  %303 = getelementptr inbounds %"class.NOMAD_4_3::Step", ptr %164, i32 0, i32 5
  %304 = call noundef ptr @_ZNKSt19__shared_ptr_accessIN9NOMAD_4_313RunParametersELN9__gnu_cxx12_Lock_policyE2ELb0ELb0EEptEv(ptr noundef nonnull align 1 dereferenceable(1) %303) #9
  call void @llvm.lifetime.start.p0(i64 32, ptr %36) #9
  call void @llvm.lifetime.start.p0(i64 1, ptr %37) #9
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %37) #9
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %36, ptr noundef @.str.17, ptr noundef nonnull align 1 dereferenceable(1) %37)
          to label %305 unwind label %359

305:                                              ; preds = %299
  %306 = invoke noundef nonnull align 8 dereferenceable(17) ptr @_ZNK9NOMAD_4_310Parameters17getAttributeValueINS_6DoubleEEERKT_RKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEb(ptr noundef nonnull align 8 dereferenceable(496) %304, ptr noundef nonnull align 8 dereferenceable(32) %36, i1 noundef zeroext false)
          to label %307 unwind label %363

307:                                              ; preds = %305
  invoke void @_ZN9NOMAD_4_36DoubleC1ERKS0_(ptr noundef nonnull align 8 dereferenceable(17) %35, ptr noundef nonnull align 8 dereferenceable(17) %306)
          to label %308 unwind label %363

308:                                              ; preds = %307
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %36) #9
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %37) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr %37) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr %36) #9
  call void @llvm.lifetime.start.p0(i64 24, ptr %38) #9
  %309 = load i64, ptr %31, align 8, !tbaa !34
  invoke void @_ZN9NOMAD_4_313ArrayOfDoubleC1EmRKNS_6DoubleE(ptr noundef nonnull align 8 dereferenceable(24) %38, i64 noundef %309, ptr noundef nonnull align 8 dereferenceable(17) %35)
          to label %310 unwind label %368

310:                                              ; preds = %308
  call void @llvm.lifetime.start.p0(i64 80, ptr %39) #9
  call void @llvm.lifetime.start.p0(i64 32, ptr %40) #9
  %311 = load ptr, ptr %164, align 8, !tbaa !35
  %312 = getelementptr inbounds ptr, ptr %311, i64 2
  %313 = load ptr, ptr %312, align 8
  invoke void %313(ptr dead_on_unwind writable sret(%"class.std::__cxx11::basic_string") align 8 %40, ptr noundef nonnull align 8 dereferenceable(140) %164)
          to label %314 unwind label %372

314:                                              ; preds = %310
  call void @llvm.lifetime.start.p0(i64 32, ptr %41) #9
  call void @llvm.lifetime.start.p0(i64 1, ptr %42) #9
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %42) #9
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %41, ptr noundef @.str.18, ptr noundef nonnull align 1 dereferenceable(1) %42)
          to label %315 unwind label %376

315:                                              ; preds = %314
  invoke void @_ZN9NOMAD_4_310OutputInfoC2ERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEES8_NS_11OutputLevelEbb(ptr noundef nonnull align 8 dereferenceable(80) %39, ptr noundef nonnull align 8 dereferenceable(32) %40, ptr noundef nonnull align 8 dereferenceable(32) %41, i32 noundef 9, i1 noundef zeroext false, i1 noundef zeroext false)
          to label %316 unwind label %380

316:                                              ; preds = %315
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %41) #9
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %42) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr %42) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr %41) #9
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %40) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr %40) #9
  call void @llvm.lifetime.start.p0(i64 16, ptr %43) #9
  %317 = load ptr, ptr %10, align 8, !tbaa !5
  %318 = load ptr, ptr %317, align 8, !tbaa !35
  %319 = getelementptr inbounds ptr, ptr %318, i64 10
  %320 = load ptr, ptr %319, align 8
  invoke void %320(ptr dead_on_unwind writable sret(%"class.std::shared_ptr.83") align 8 %43, ptr noundef nonnull align 8 dereferenceable(200) %317)
          to label %321 unwind label %386

321:                                              ; preds = %316
  call void @llvm.lifetime.start.p0(i64 8, ptr %44) #9
  %322 = getelementptr inbounds %"class.NOMAD_4_3::Step", ptr %164, i32 0, i32 5
  %323 = call noundef ptr @_ZNKSt19__shared_ptr_accessIN9NOMAD_4_313RunParametersELN9__gnu_cxx12_Lock_policyE2ELb0ELb0EEptEv(ptr noundef nonnull align 1 dereferenceable(1) %322) #9
  call void @llvm.lifetime.start.p0(i64 32, ptr %45) #9
  call void @llvm.lifetime.start.p0(i64 1, ptr %46) #9
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %46) #9
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %45, ptr noundef @.str.19, ptr noundef nonnull align 1 dereferenceable(1) %46)
          to label %324 unwind label %390

324:                                              ; preds = %321
  %325 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNK9NOMAD_4_310Parameters17getAttributeValueImEERKT_RKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEb(ptr noundef nonnull align 8 dereferenceable(496) %323, ptr noundef nonnull align 8 dereferenceable(32) %45, i1 noundef zeroext false)
          to label %326 unwind label %394

326:                                              ; preds = %324
  %327 = load i64, ptr %325, align 8, !tbaa !34
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %45) #9
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %46) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr %46) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr %45) #9
  store i64 %327, ptr %44, align 8, !tbaa !34
  %328 = call noundef zeroext i1 @_ZStneIN9NOMAD_4_38MeshBaseEEbRKSt10shared_ptrIT_EDn(ptr noundef nonnull align 8 dereferenceable(16) %43, ptr null) #9
  br i1 %328, label %329, label %481

329:                                              ; preds = %326
  %330 = load i64, ptr %44, align 8, !tbaa !34
  %331 = icmp ugt i64 %330, 0
  br i1 %331, label %332, label %481

332:                                              ; preds = %329
  %333 = load i64, ptr %44, align 8, !tbaa !34
  %334 = icmp ult i64 %333, -1
  br i1 %334, label %335, label %481

335:                                              ; preds = %332
  call void @llvm.lifetime.start.p0(i64 24, ptr %47) #9
  %336 = call noundef ptr @_ZNKSt19__shared_ptr_accessIN9NOMAD_4_38MeshBaseELN9__gnu_cxx12_Lock_policyE2ELb0ELb0EEptEv(ptr noundef nonnull align 1 dereferenceable(1) %43) #9
  %337 = load ptr, ptr %336, align 8, !tbaa !35
  %338 = getelementptr inbounds ptr, ptr %337, i64 14
  %339 = load ptr, ptr %338, align 8
  invoke void %339(ptr dead_on_unwind writable sret(%"class.NOMAD_4_3::ArrayOfDouble") align 8 %47, ptr noundef nonnull align 8 dereferenceable(257) %336)
          to label %340 unwind label %399

340:                                              ; preds = %335
  %341 = invoke noundef nonnull align 8 dereferenceable(24) ptr @_ZN9NOMAD_4_313ArrayOfDoubleaSERKS0_(ptr noundef nonnull align 8 dereferenceable(24) %38, ptr noundef nonnull align 8 dereferenceable(24) %47)
          to label %342 unwind label %403

342:                                              ; preds = %340
  call void @_ZN9NOMAD_4_313ArrayOfDoubleD1Ev(ptr noundef nonnull align 8 dereferenceable(24) %47) #9
  call void @llvm.lifetime.end.p0(i64 24, ptr %47) #9
  %343 = invoke noundef zeroext i1 @_ZNK9NOMAD_4_313ArrayOfDouble9isDefinedEv(ptr noundef nonnull align 8 dereferenceable(24) %38)
          to label %344 unwind label %408

344:                                              ; preds = %342
  br i1 %343, label %429, label %345

345:                                              ; preds = %344
  store i1 true, ptr %52, align 1
  %346 = call ptr @__cxa_allocate_exception(i64 112) #9
  call void @llvm.lifetime.start.p0(i64 32, ptr %48) #9
  call void @llvm.lifetime.start.p0(i64 1, ptr %49) #9
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %49) #9
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %48, ptr noundef @.str.9, ptr noundef nonnull align 1 dereferenceable(1) %49)
          to label %347 unwind label %412

347:                                              ; preds = %345
  call void @llvm.lifetime.start.p0(i64 32, ptr %50) #9
  call void @llvm.lifetime.start.p0(i64 1, ptr %51) #9
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %51) #9
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %50, ptr noundef @.str.20, ptr noundef nonnull align 1 dereferenceable(1) %51)
          to label %348 unwind label %416

348:                                              ; preds = %347
  invoke void @_ZN9NOMAD_4_39ExceptionC2ERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEmS8_(ptr noundef nonnull align 8 dereferenceable(112) %346, ptr noundef nonnull align 8 dereferenceable(32) %48, i64 noundef 144, ptr noundef nonnull align 8 dereferenceable(32) %50)
          to label %349 unwind label %420

349:                                              ; preds = %348
  store i1 false, ptr %52, align 1
  invoke void @__cxa_throw(ptr %346, ptr @_ZTIN9NOMAD_4_39ExceptionE, ptr @_ZN9NOMAD_4_39ExceptionD2Ev) #10
          to label %1339 unwind label %420

350:                                              ; preds = %291
  %351 = landingpad { ptr, i32 }
          cleanup
  %352 = extractvalue { ptr, i32 } %351, 0
  store ptr %352, ptr %6, align 8
  %353 = extractvalue { ptr, i32 } %351, 1
  store i32 %353, ptr %7, align 4
  br label %358

354:                                              ; preds = %297
  %355 = landingpad { ptr, i32 }
          cleanup
  %356 = extractvalue { ptr, i32 } %355, 0
  store ptr %356, ptr %6, align 8
  %357 = extractvalue { ptr, i32 } %355, 1
  store i32 %357, ptr %7, align 4
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %32) #9
  br label %358

358:                                              ; preds = %354, %350
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %33) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr %33) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr %32) #9
  br label %1328

359:                                              ; preds = %299
  %360 = landingpad { ptr, i32 }
          cleanup
  %361 = extractvalue { ptr, i32 } %360, 0
  store ptr %361, ptr %6, align 8
  %362 = extractvalue { ptr, i32 } %360, 1
  store i32 %362, ptr %7, align 4
  br label %367

363:                                              ; preds = %307, %305
  %364 = landingpad { ptr, i32 }
          cleanup
  %365 = extractvalue { ptr, i32 } %364, 0
  store ptr %365, ptr %6, align 8
  %366 = extractvalue { ptr, i32 } %364, 1
  store i32 %366, ptr %7, align 4
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %36) #9
  br label %367

367:                                              ; preds = %363, %359
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %37) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr %37) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr %36) #9
  br label %1327

368:                                              ; preds = %308
  %369 = landingpad { ptr, i32 }
          cleanup
  %370 = extractvalue { ptr, i32 } %369, 0
  store ptr %370, ptr %6, align 8
  %371 = extractvalue { ptr, i32 } %369, 1
  store i32 %371, ptr %7, align 4
  br label %1326

372:                                              ; preds = %310
  %373 = landingpad { ptr, i32 }
          cleanup
  %374 = extractvalue { ptr, i32 } %373, 0
  store ptr %374, ptr %6, align 8
  %375 = extractvalue { ptr, i32 } %373, 1
  store i32 %375, ptr %7, align 4
  br label %385

376:                                              ; preds = %314
  %377 = landingpad { ptr, i32 }
          cleanup
  %378 = extractvalue { ptr, i32 } %377, 0
  store ptr %378, ptr %6, align 8
  %379 = extractvalue { ptr, i32 } %377, 1
  store i32 %379, ptr %7, align 4
  br label %384

380:                                              ; preds = %315
  %381 = landingpad { ptr, i32 }
          cleanup
  %382 = extractvalue { ptr, i32 } %381, 0
  store ptr %382, ptr %6, align 8
  %383 = extractvalue { ptr, i32 } %381, 1
  store i32 %383, ptr %7, align 4
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %41) #9
  br label %384

384:                                              ; preds = %380, %376
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %42) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr %42) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr %41) #9
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %40) #9
  br label %385

385:                                              ; preds = %384, %372
  call void @llvm.lifetime.end.p0(i64 32, ptr %40) #9
  br label %1325

386:                                              ; preds = %316
  %387 = landingpad { ptr, i32 }
          cleanup
  %388 = extractvalue { ptr, i32 } %387, 0
  store ptr %388, ptr %6, align 8
  %389 = extractvalue { ptr, i32 } %387, 1
  store i32 %389, ptr %7, align 4
  br label %1324

390:                                              ; preds = %321
  %391 = landingpad { ptr, i32 }
          cleanup
  %392 = extractvalue { ptr, i32 } %391, 0
  store ptr %392, ptr %6, align 8
  %393 = extractvalue { ptr, i32 } %391, 1
  store i32 %393, ptr %7, align 4
  br label %398

394:                                              ; preds = %324
  %395 = landingpad { ptr, i32 }
          cleanup
  %396 = extractvalue { ptr, i32 } %395, 0
  store ptr %396, ptr %6, align 8
  %397 = extractvalue { ptr, i32 } %395, 1
  store i32 %397, ptr %7, align 4
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %45) #9
  br label %398

398:                                              ; preds = %394, %390
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %46) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr %46) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr %45) #9
  br label %1323

399:                                              ; preds = %335
  %400 = landingpad { ptr, i32 }
          cleanup
  %401 = extractvalue { ptr, i32 } %400, 0
  store ptr %401, ptr %6, align 8
  %402 = extractvalue { ptr, i32 } %400, 1
  store i32 %402, ptr %7, align 4
  br label %407

403:                                              ; preds = %340
  %404 = landingpad { ptr, i32 }
          cleanup
  %405 = extractvalue { ptr, i32 } %404, 0
  store ptr %405, ptr %6, align 8
  %406 = extractvalue { ptr, i32 } %404, 1
  store i32 %406, ptr %7, align 4
  call void @_ZN9NOMAD_4_313ArrayOfDoubleD1Ev(ptr noundef nonnull align 8 dereferenceable(24) %47) #9
  br label %407

407:                                              ; preds = %403, %399
  call void @llvm.lifetime.end.p0(i64 24, ptr %47) #9
  br label %1323

408:                                              ; preds = %342
  %409 = landingpad { ptr, i32 }
          cleanup
  %410 = extractvalue { ptr, i32 } %409, 0
  store ptr %410, ptr %6, align 8
  %411 = extractvalue { ptr, i32 } %409, 1
  store i32 %411, ptr %7, align 4
  br label %1323

412:                                              ; preds = %345
  %413 = landingpad { ptr, i32 }
          cleanup
  %414 = extractvalue { ptr, i32 } %413, 0
  store ptr %414, ptr %6, align 8
  %415 = extractvalue { ptr, i32 } %413, 1
  store i32 %415, ptr %7, align 4
  br label %425

416:                                              ; preds = %347
  %417 = landingpad { ptr, i32 }
          cleanup
  %418 = extractvalue { ptr, i32 } %417, 0
  store ptr %418, ptr %6, align 8
  %419 = extractvalue { ptr, i32 } %417, 1
  store i32 %419, ptr %7, align 4
  br label %424

420:                                              ; preds = %349, %348
  %421 = landingpad { ptr, i32 }
          cleanup
  %422 = extractvalue { ptr, i32 } %421, 0
  store ptr %422, ptr %6, align 8
  %423 = extractvalue { ptr, i32 } %421, 1
  store i32 %423, ptr %7, align 4
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %50) #9
  br label %424

424:                                              ; preds = %420, %416
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %51) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr %51) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr %50) #9
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %48) #9
  br label %425

425:                                              ; preds = %424, %412
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %49) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr %49) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr %48) #9
  %426 = load i1, ptr %52, align 1
  br i1 %426, label %427, label %428

427:                                              ; preds = %425
  call void @__cxa_free_exception(ptr %346) #9
  br label %428

428:                                              ; preds = %427, %425
  br label %1323

429:                                              ; preds = %344
  call void @llvm.lifetime.start.p0(i64 24, ptr %53) #9
  call void @llvm.lifetime.start.p0(i64 8, ptr %54) #9
  %430 = load i64, ptr %44, align 8, !tbaa !34
  %431 = uitofp i64 %430 to double
  store double %431, ptr %54, align 8, !tbaa !37
  invoke void @_ZN9NOMAD_4_36DoubleC1ERKd(ptr noundef nonnull align 8 dereferenceable(17) %53, ptr noundef nonnull align 8 dereferenceable(8) %54)
          to label %432 unwind label %443

432:                                              ; preds = %429
  %433 = invoke noundef nonnull align 8 dereferenceable(24) ptr @_ZN9NOMAD_4_313ArrayOfDoublemLERKNS_6DoubleE(ptr noundef nonnull align 8 dereferenceable(24) %38, ptr noundef nonnull align 8 dereferenceable(17) %53)
          to label %434 unwind label %447

434:                                              ; preds = %432
  call void @_ZN9NOMAD_4_36DoubleD1Ev(ptr noundef nonnull align 8 dereferenceable(17) %53) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr %54) #9
  call void @llvm.lifetime.end.p0(i64 24, ptr %53) #9
  call void @llvm.lifetime.start.p0(i64 4, ptr %55) #9
  store i32 9, ptr %55, align 4, !tbaa !39
  %435 = invoke noundef zeroext i1 @_ZN9NOMAD_4_311OutputQueue9GoodLevelERKNS_11OutputLevelE(ptr noundef nonnull align 4 dereferenceable(4) %55)
          to label %436 unwind label %452

436:                                              ; preds = %434
  call void @llvm.lifetime.end.p0(i64 4, ptr %55) #9
  br i1 %435, label %437, label %480

437:                                              ; preds = %436
  call void @llvm.lifetime.start.p0(i64 32, ptr %56) #9
  call void @llvm.lifetime.start.p0(i64 32, ptr %57) #9
  call void @llvm.lifetime.start.p0(i64 24, ptr %58) #9
  call void @llvm.lifetime.start.p0(i64 24, ptr %59) #9
  invoke void @_ZN9NOMAD_4_36DoubleC1Ev(ptr noundef nonnull align 8 dereferenceable(17) %59)
          to label %438 unwind label %456

438:                                              ; preds = %437
  invoke void @_ZN9NOMAD_4_313ArrayOfDoubleC1EmRKNS_6DoubleE(ptr noundef nonnull align 8 dereferenceable(24) %58, i64 noundef 0, ptr noundef nonnull align 8 dereferenceable(17) %59)
          to label %439 unwind label %460

439:                                              ; preds = %438
  call void @llvm.lifetime.start.p0(i64 32, ptr %60) #9
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2Ev(ptr noundef nonnull align 8 dereferenceable(32) %60) #9
  invoke void @_ZNK9NOMAD_4_313ArrayOfDouble7displayERKS0_RKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE(ptr dead_on_unwind writable sret(%"class.std::__cxx11::basic_string") align 8 %57, ptr noundef nonnull align 8 dereferenceable(24) %38, ptr noundef nonnull align 8 dereferenceable(24) %58, ptr noundef nonnull align 8 dereferenceable(32) %60)
          to label %440 unwind label %464

440:                                              ; preds = %439
  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.21, ptr noundef nonnull align 8 dereferenceable(32) %57)
          to label %441 unwind label %468

441:                                              ; preds = %440
  invoke void @_ZN9NOMAD_4_310OutputInfo6addMsgERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE(ptr noundef nonnull align 8 dereferenceable(80) %39, ptr noundef nonnull align 8 dereferenceable(32) %56)
          to label %442 unwind label %472

442:                                              ; preds = %441
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %56) #9
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %57) #9
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %60) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr %60) #9
  call void @_ZN9NOMAD_4_313ArrayOfDoubleD1Ev(ptr noundef nonnull align 8 dereferenceable(24) %58) #9
  call void @_ZN9NOMAD_4_36DoubleD1Ev(ptr noundef nonnull align 8 dereferenceable(17) %59) #9
  call void @llvm.lifetime.end.p0(i64 24, ptr %59) #9
  call void @llvm.lifetime.end.p0(i64 24, ptr %58) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr %57) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr %56) #9
  br label %480

443:                                              ; preds = %429
  %444 = landingpad { ptr, i32 }
          cleanup
  %445 = extractvalue { ptr, i32 } %444, 0
  store ptr %445, ptr %6, align 8
  %446 = extractvalue { ptr, i32 } %444, 1
  store i32 %446, ptr %7, align 4
  br label %451

447:                                              ; preds = %432
  %448 = landingpad { ptr, i32 }
          cleanup
  %449 = extractvalue { ptr, i32 } %448, 0
  store ptr %449, ptr %6, align 8
  %450 = extractvalue { ptr, i32 } %448, 1
  store i32 %450, ptr %7, align 4
  call void @_ZN9NOMAD_4_36DoubleD1Ev(ptr noundef nonnull align 8 dereferenceable(17) %53) #9
  br label %451

451:                                              ; preds = %447, %443
  call void @llvm.lifetime.end.p0(i64 8, ptr %54) #9
  call void @llvm.lifetime.end.p0(i64 24, ptr %53) #9
  br label %1323

452:                                              ; preds = %434
  %453 = landingpad { ptr, i32 }
          cleanup
  %454 = extractvalue { ptr, i32 } %453, 0
  store ptr %454, ptr %6, align 8
  %455 = extractvalue { ptr, i32 } %453, 1
  store i32 %455, ptr %7, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %55) #9
  br label %1323

456:                                              ; preds = %437
  %457 = landingpad { ptr, i32 }
          cleanup
  %458 = extractvalue { ptr, i32 } %457, 0
  store ptr %458, ptr %6, align 8
  %459 = extractvalue { ptr, i32 } %457, 1
  store i32 %459, ptr %7, align 4
  br label %479

460:                                              ; preds = %438
  %461 = landingpad { ptr, i32 }
          cleanup
  %462 = extractvalue { ptr, i32 } %461, 0
  store ptr %462, ptr %6, align 8
  %463 = extractvalue { ptr, i32 } %461, 1
  store i32 %463, ptr %7, align 4
  br label %478

464:                                              ; preds = %439
  %465 = landingpad { ptr, i32 }
          cleanup
  %466 = extractvalue { ptr, i32 } %465, 0
  store ptr %466, ptr %6, align 8
  %467 = extractvalue { ptr, i32 } %465, 1
  store i32 %467, ptr %7, align 4
  br label %477

468:                                              ; preds = %440
  %469 = landingpad { ptr, i32 }
          cleanup
  %470 = extractvalue { ptr, i32 } %469, 0
  store ptr %470, ptr %6, align 8
  %471 = extractvalue { ptr, i32 } %469, 1
  store i32 %471, ptr %7, align 4
  br label %476

472:                                              ; preds = %441
  %473 = landingpad { ptr, i32 }
          cleanup
  %474 = extractvalue { ptr, i32 } %473, 0
  store ptr %474, ptr %6, align 8
  %475 = extractvalue { ptr, i32 } %473, 1
  store i32 %475, ptr %7, align 4
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %56) #9
  br label %476

476:                                              ; preds = %472, %468
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %57) #9
  br label %477

477:                                              ; preds = %476, %464
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %60) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr %60) #9
  call void @_ZN9NOMAD_4_313ArrayOfDoubleD1Ev(ptr noundef nonnull align 8 dereferenceable(24) %58) #9
  br label %478

478:                                              ; preds = %477, %460
  call void @_ZN9NOMAD_4_36DoubleD1Ev(ptr noundef nonnull align 8 dereferenceable(17) %59) #9
  br label %479

479:                                              ; preds = %478, %456
  call void @llvm.lifetime.end.p0(i64 24, ptr %59) #9
  call void @llvm.lifetime.end.p0(i64 24, ptr %58) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr %57) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr %56) #9
  br label %1323

480:                                              ; preds = %442, %436
  br label %481

481:                                              ; preds = %480, %332, %329, %326
  call void @llvm.lifetime.start.p0(i64 48, ptr %61) #9
  call void @_ZNSt3setIN9NOMAD_4_39EvalPointENS0_25NMSimplexEvalPointCompareESaIS1_EEC2Ev(ptr noundef nonnull align 8 dereferenceable(48) %61) #9
  call void @llvm.lifetime.start.p0(i64 16, ptr %62) #9
  invoke void @_ZN9NOMAD_4_312EvcInterface19getEvaluatorControlEv(ptr dead_on_unwind writable sret(%"class.std::shared_ptr.29") align 8 %62)
          to label %482 unwind label %490

482:                                              ; preds = %481
  %483 = call noundef ptr @_ZNKSt19__shared_ptr_accessIN9NOMAD_4_316EvaluatorControlELN9__gnu_cxx12_Lock_policyE2ELb0ELb0EEptEv(ptr noundef nonnull align 1 dereferenceable(1) %62) #9
  %484 = invoke noundef zeroext i1 @_ZNK9NOMAD_4_316EvaluatorControl11getUseCacheEi(ptr noundef nonnull align 8 dereferenceable(352) %483, i32 noundef -1)
          to label %485 unwind label %494

485:                                              ; preds = %482
  call void @_ZNSt12__shared_ptrIN9NOMAD_4_316EvaluatorControlELN9__gnu_cxx12_Lock_policyE2EED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %62) #9
  call void @llvm.lifetime.end.p0(i64 16, ptr %62) #9
  br i1 %484, label %486, label %508

486:                                              ; preds = %485
  call void @llvm.lifetime.start.p0(i64 32, ptr %63) #9
  invoke void @_ZN9NOMAD_4_314CacheInterfaceC2EPKNS_4StepE(ptr noundef nonnull align 8 dereferenceable(32) %63, ptr noundef %164)
          to label %487 unwind label %499

487:                                              ; preds = %486
  %488 = invoke noundef i64 @_ZNK9NOMAD_4_314CacheInterface12getAllPointsERSt6vectorINS_9EvalPointESaIS2_EE(ptr noundef nonnull align 8 dereferenceable(32) %63, ptr noundef nonnull align 8 dereferenceable(24) %16)
          to label %489 unwind label %503

489:                                              ; preds = %487
  call void @_ZN9NOMAD_4_314CacheInterfaceD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %63) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr %63) #9
  br label %519

490:                                              ; preds = %481
  %491 = landingpad { ptr, i32 }
          cleanup
  %492 = extractvalue { ptr, i32 } %491, 0
  store ptr %492, ptr %6, align 8
  %493 = extractvalue { ptr, i32 } %491, 1
  store i32 %493, ptr %7, align 4
  br label %498

494:                                              ; preds = %482
  %495 = landingpad { ptr, i32 }
          cleanup
  %496 = extractvalue { ptr, i32 } %495, 0
  store ptr %496, ptr %6, align 8
  %497 = extractvalue { ptr, i32 } %495, 1
  store i32 %497, ptr %7, align 4
  call void @_ZNSt12__shared_ptrIN9NOMAD_4_316EvaluatorControlELN9__gnu_cxx12_Lock_policyE2EED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %62) #9
  br label %498

498:                                              ; preds = %494, %490
  call void @llvm.lifetime.end.p0(i64 16, ptr %62) #9
  br label %1322

499:                                              ; preds = %486
  %500 = landingpad { ptr, i32 }
          cleanup
  %501 = extractvalue { ptr, i32 } %500, 0
  store ptr %501, ptr %6, align 8
  %502 = extractvalue { ptr, i32 } %500, 1
  store i32 %502, ptr %7, align 4
  br label %507

503:                                              ; preds = %487
  %504 = landingpad { ptr, i32 }
          cleanup
  %505 = extractvalue { ptr, i32 } %504, 0
  store ptr %505, ptr %6, align 8
  %506 = extractvalue { ptr, i32 } %504, 1
  store i32 %506, ptr %7, align 4
  call void @_ZN9NOMAD_4_314CacheInterfaceD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %63) #9
  br label %507

507:                                              ; preds = %503, %499
  call void @llvm.lifetime.end.p0(i64 32, ptr %63) #9
  br label %1322

508:                                              ; preds = %485
  %509 = call noundef zeroext i1 @_ZStneIN9NOMAD_4_311BarrierBaseEEbDnRKSt10shared_ptrIT_E(ptr null, ptr noundef nonnull align 8 dereferenceable(16) %18) #9
  br i1 %509, label %510, label %518

510:                                              ; preds = %508
  call void @llvm.lifetime.start.p0(i64 24, ptr %64) #9
  %511 = call noundef ptr @_ZNKSt19__shared_ptr_accessIN9NOMAD_4_311BarrierBaseELN9__gnu_cxx12_Lock_policyE2ELb0ELb0EEptEv(ptr noundef nonnull align 1 dereferenceable(1) %18) #9
  invoke void @_ZNK9NOMAD_4_311BarrierBase12getAllPointsEv(ptr dead_on_unwind writable sret(%"class.std::vector.57") align 8 %64, ptr noundef nonnull align 8 dereferenceable(120) %511)
          to label %512 unwind label %514

512:                                              ; preds = %510
  %513 = call noundef nonnull align 8 dereferenceable(24) ptr @_ZNSt6vectorIN9NOMAD_4_39EvalPointESaIS1_EEaSEOS3_(ptr noundef nonnull align 8 dereferenceable(24) %16, ptr noundef nonnull align 8 dereferenceable(24) %64) #9
  call void @_ZNSt6vectorIN9NOMAD_4_39EvalPointESaIS1_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %64) #9
  call void @llvm.lifetime.end.p0(i64 24, ptr %64) #9
  br label %518

514:                                              ; preds = %510
  %515 = landingpad { ptr, i32 }
          cleanup
  %516 = extractvalue { ptr, i32 } %515, 0
  store ptr %516, ptr %6, align 8
  %517 = extractvalue { ptr, i32 } %515, 1
  store i32 %517, ptr %7, align 4
  call void @llvm.lifetime.end.p0(i64 24, ptr %64) #9
  br label %1322

518:                                              ; preds = %512, %508
  br label %519

519:                                              ; preds = %518, %489
  call void @llvm.lifetime.start.p0(i64 8, ptr %65) #9
  store i64 4, ptr %65, align 8, !tbaa !34
  call void @llvm.lifetime.start.p0(i64 8, ptr %66) #9
  store i64 0, ptr %66, align 8, !tbaa !34
  call void @llvm.lifetime.start.p0(i64 8, ptr %67) #9
  store ptr %16, ptr %67, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %68) #9
  %520 = load ptr, ptr %67, align 8, !tbaa !5
  %521 = call ptr @_ZNSt6vectorIN9NOMAD_4_39EvalPointESaIS1_EE5beginEv(ptr noundef nonnull align 8 dereferenceable(24) %520) #9
  %522 = getelementptr inbounds %"class.__gnu_cxx::__normal_iterator", ptr %68, i32 0, i32 0
  store ptr %521, ptr %522, align 8
  call void @llvm.lifetime.start.p0(i64 8, ptr %69) #9
  %523 = load ptr, ptr %67, align 8, !tbaa !5
  %524 = call ptr @_ZNSt6vectorIN9NOMAD_4_39EvalPointESaIS1_EE3endEv(ptr noundef nonnull align 8 dereferenceable(24) %523) #9
  %525 = getelementptr inbounds %"class.__gnu_cxx::__normal_iterator", ptr %69, i32 0, i32 0
  store ptr %524, ptr %525, align 8
  br label %526

526:                                              ; preds = %811, %519
  %527 = call noundef zeroext i1 @_ZN9__gnu_cxxneIPN9NOMAD_4_39EvalPointESt6vectorIS2_SaIS2_EEEEbRKNS_17__normal_iteratorIT_T0_EESC_(ptr noundef nonnull align 8 dereferenceable(8) %68, ptr noundef nonnull align 8 dereferenceable(8) %69) #9
  br i1 %527, label %529, label %528

528:                                              ; preds = %526
  store i32 2, ptr %70, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %69) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr %68) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr %67) #9
  br label %814

529:                                              ; preds = %526
  call void @llvm.lifetime.start.p0(i64 8, ptr %71) #9
  %530 = call noundef nonnull align 8 dereferenceable(160) ptr @_ZNK9__gnu_cxx17__normal_iteratorIPN9NOMAD_4_39EvalPointESt6vectorIS2_SaIS2_EEEdeEv(ptr noundef nonnull align 8 dereferenceable(8) %68) #9
  store ptr %530, ptr %71, align 8, !tbaa !5
  %531 = load ptr, ptr %71, align 8, !tbaa !5
  %532 = load i32, ptr %4, align 4, !tbaa !9
  %533 = invoke noundef i32 @_ZNK9NOMAD_4_39EvalPoint13getEvalStatusENS_8EvalTypeE(ptr noundef nonnull align 8 dereferenceable(160) %531, i32 noundef %532)
          to label %534 unwind label %575

534:                                              ; preds = %529
  %535 = icmp eq i32 %533, 4
  br i1 %535, label %536, label %810

536:                                              ; preds = %534
  %537 = load ptr, ptr %71, align 8, !tbaa !5
  %538 = invoke noundef ptr @_ZNK9NOMAD_4_39EvalPoint4getXEv(ptr noundef nonnull align 8 dereferenceable(160) %537)
          to label %539 unwind label %575

539:                                              ; preds = %536
  %540 = invoke noundef i64 @_ZNK9NOMAD_4_313ArrayOfDouble4sizeEv(ptr noundef nonnull align 8 dereferenceable(24) %538)
          to label %541 unwind label %575

541:                                              ; preds = %539
  %542 = load i64, ptr %31, align 8, !tbaa !34
  %543 = icmp eq i64 %540, %542
  br i1 %543, label %544, label %810

544:                                              ; preds = %541
  %545 = load ptr, ptr %71, align 8, !tbaa !5
  %546 = load i32, ptr %4, align 4, !tbaa !9
  %547 = invoke noundef ptr @_ZNK9NOMAD_4_39EvalPoint7getEvalENS_8EvalTypeE(ptr noundef nonnull align 8 dereferenceable(160) %545, i32 noundef %546)
          to label %548 unwind label %575

548:                                              ; preds = %544
  %549 = invoke noundef zeroext i1 @_ZNK9NOMAD_4_34Eval18isBBOutputCompleteEv(ptr noundef nonnull align 8 dereferenceable(105) %547)
          to label %550 unwind label %575

550:                                              ; preds = %548
  br i1 %549, label %551, label %809

551:                                              ; preds = %550
  %552 = call noundef nonnull align 8 dereferenceable(160) ptr @_ZNKSt19__shared_ptr_accessIN9NOMAD_4_39EvalPointELN9__gnu_cxx12_Lock_policyE2ELb0ELb0EEdeEv(ptr noundef nonnull align 1 dereferenceable(1) %17) #9
  %553 = load ptr, ptr %71, align 8, !tbaa !5
  %554 = invoke noundef zeroext i1 @_ZNK9NOMAD_4_39EvalPointeqERKS0_(ptr noundef nonnull align 8 dereferenceable(160) %552, ptr noundef nonnull align 8 dereferenceable(160) %553)
          to label %555 unwind label %575

555:                                              ; preds = %551
  br i1 %554, label %556, label %616

556:                                              ; preds = %555
  call void @llvm.lifetime.start.p0(i64 160, ptr %72) #9
  %557 = load ptr, ptr %71, align 8, !tbaa !5
  invoke void @_ZN9NOMAD_4_39EvalPointC1ERKS0_(ptr noundef nonnull align 8 dereferenceable(160) %72, ptr noundef nonnull align 8 dereferenceable(160) %557)
          to label %558 unwind label %579

558:                                              ; preds = %556
  %559 = invoke { ptr, i8 } @_ZNSt3setIN9NOMAD_4_39EvalPointENS0_25NMSimplexEvalPointCompareESaIS1_EE6insertERKS1_(ptr noundef nonnull align 8 dereferenceable(48) %61, ptr noundef nonnull align 8 dereferenceable(160) %72)
          to label %560 unwind label %583

560:                                              ; preds = %558
  %561 = getelementptr inbounds { ptr, i8 }, ptr %73, i32 0, i32 0
  %562 = extractvalue { ptr, i8 } %559, 0
  store ptr %562, ptr %561, align 8
  %563 = getelementptr inbounds { ptr, i8 }, ptr %73, i32 0, i32 1
  %564 = extractvalue { ptr, i8 } %559, 1
  store i8 %564, ptr %563, align 8
  %565 = load i64, ptr %66, align 8, !tbaa !34
  %566 = icmp ult i64 %565, 4
  br i1 %566, label %567, label %613

567:                                              ; preds = %560
  call void @llvm.lifetime.start.p0(i64 4, ptr %74) #9
  store i32 9, ptr %74, align 4, !tbaa !39
  %568 = invoke noundef zeroext i1 @_ZN9NOMAD_4_311OutputQueue9GoodLevelERKNS_11OutputLevelE(ptr noundef nonnull align 4 dereferenceable(4) %74)
          to label %569 unwind label %587

569:                                              ; preds = %567
  call void @llvm.lifetime.end.p0(i64 4, ptr %74) #9
  br i1 %568, label %570, label %610

570:                                              ; preds = %569
  call void @llvm.lifetime.start.p0(i64 32, ptr %75) #9
  call void @llvm.lifetime.start.p0(i64 24, ptr %76) #9
  call void @llvm.lifetime.start.p0(i64 24, ptr %77) #9
  invoke void @_ZN9NOMAD_4_36DoubleC1Ev(ptr noundef nonnull align 8 dereferenceable(17) %77)
          to label %571 unwind label %591

571:                                              ; preds = %570
  invoke void @_ZN9NOMAD_4_313ArrayOfDoubleC1EmRKNS_6DoubleE(ptr noundef nonnull align 8 dereferenceable(24) %76, i64 noundef 0, ptr noundef nonnull align 8 dereferenceable(17) %77)
          to label %572 unwind label %595

572:                                              ; preds = %571
  invoke void @_ZNK9NOMAD_4_39EvalPoint7displayB5cxx11ERKNS_13ArrayOfDoubleERKi(ptr dead_on_unwind writable sret(%"class.std::__cxx11::basic_string") align 8 %75, ptr noundef nonnull align 8 dereferenceable(160) %72, ptr noundef nonnull align 8 dereferenceable(24) %76, ptr noundef nonnull align 4 dereferenceable(4) @_ZN9NOMAD_4_3L22DISPLAY_PRECISION_FULLE)
          to label %573 unwind label %599

573:                                              ; preds = %572
  invoke void @_ZN9NOMAD_4_310OutputInfo6addMsgERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE(ptr noundef nonnull align 8 dereferenceable(80) %39, ptr noundef nonnull align 8 dereferenceable(32) %75)
          to label %574 unwind label %603

574:                                              ; preds = %573
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %75) #9
  call void @_ZN9NOMAD_4_313ArrayOfDoubleD1Ev(ptr noundef nonnull align 8 dereferenceable(24) %76) #9
  call void @_ZN9NOMAD_4_36DoubleD1Ev(ptr noundef nonnull align 8 dereferenceable(17) %77) #9
  call void @llvm.lifetime.end.p0(i64 24, ptr %77) #9
  call void @llvm.lifetime.end.p0(i64 24, ptr %76) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr %75) #9
  br label %610

575:                                              ; preds = %551, %548, %544, %539, %536, %529
  %576 = landingpad { ptr, i32 }
          cleanup
  %577 = extractvalue { ptr, i32 } %576, 0
  store ptr %577, ptr %6, align 8
  %578 = extractvalue { ptr, i32 } %576, 1
  store i32 %578, ptr %7, align 4
  br label %813

579:                                              ; preds = %556
  %580 = landingpad { ptr, i32 }
          cleanup
  %581 = extractvalue { ptr, i32 } %580, 0
  store ptr %581, ptr %6, align 8
  %582 = extractvalue { ptr, i32 } %580, 1
  store i32 %582, ptr %7, align 4
  br label %615

583:                                              ; preds = %558
  %584 = landingpad { ptr, i32 }
          cleanup
  %585 = extractvalue { ptr, i32 } %584, 0
  store ptr %585, ptr %6, align 8
  %586 = extractvalue { ptr, i32 } %584, 1
  store i32 %586, ptr %7, align 4
  br label %614

587:                                              ; preds = %567
  %588 = landingpad { ptr, i32 }
          cleanup
  %589 = extractvalue { ptr, i32 } %588, 0
  store ptr %589, ptr %6, align 8
  %590 = extractvalue { ptr, i32 } %588, 1
  store i32 %590, ptr %7, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %74) #9
  br label %614

591:                                              ; preds = %570
  %592 = landingpad { ptr, i32 }
          cleanup
  %593 = extractvalue { ptr, i32 } %592, 0
  store ptr %593, ptr %6, align 8
  %594 = extractvalue { ptr, i32 } %592, 1
  store i32 %594, ptr %7, align 4
  br label %609

595:                                              ; preds = %571
  %596 = landingpad { ptr, i32 }
          cleanup
  %597 = extractvalue { ptr, i32 } %596, 0
  store ptr %597, ptr %6, align 8
  %598 = extractvalue { ptr, i32 } %596, 1
  store i32 %598, ptr %7, align 4
  br label %608

599:                                              ; preds = %572
  %600 = landingpad { ptr, i32 }
          cleanup
  %601 = extractvalue { ptr, i32 } %600, 0
  store ptr %601, ptr %6, align 8
  %602 = extractvalue { ptr, i32 } %600, 1
  store i32 %602, ptr %7, align 4
  br label %607

603:                                              ; preds = %573
  %604 = landingpad { ptr, i32 }
          cleanup
  %605 = extractvalue { ptr, i32 } %604, 0
  store ptr %605, ptr %6, align 8
  %606 = extractvalue { ptr, i32 } %604, 1
  store i32 %606, ptr %7, align 4
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %75) #9
  br label %607

607:                                              ; preds = %603, %599
  call void @_ZN9NOMAD_4_313ArrayOfDoubleD1Ev(ptr noundef nonnull align 8 dereferenceable(24) %76) #9
  br label %608

608:                                              ; preds = %607, %595
  call void @_ZN9NOMAD_4_36DoubleD1Ev(ptr noundef nonnull align 8 dereferenceable(17) %77) #9
  br label %609

609:                                              ; preds = %608, %591
  call void @llvm.lifetime.end.p0(i64 24, ptr %77) #9
  call void @llvm.lifetime.end.p0(i64 24, ptr %76) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr %75) #9
  br label %614

610:                                              ; preds = %574, %569
  %611 = load i64, ptr %66, align 8, !tbaa !34
  %612 = add i64 %611, 1
  store i64 %612, ptr %66, align 8, !tbaa !34
  br label %613

613:                                              ; preds = %610, %560
  call void @_ZN9NOMAD_4_39EvalPointD1Ev(ptr noundef nonnull align 8 dereferenceable(160) %72) #9
  call void @llvm.lifetime.end.p0(i64 160, ptr %72) #9
  br label %808

614:                                              ; preds = %609, %587, %583
  call void @_ZN9NOMAD_4_39EvalPointD1Ev(ptr noundef nonnull align 8 dereferenceable(160) %72) #9
  br label %615

615:                                              ; preds = %614, %579
  call void @llvm.lifetime.end.p0(i64 160, ptr %72) #9
  br label %813

616:                                              ; preds = %555
  call void @llvm.lifetime.start.p0(i64 1, ptr %78) #9
  store i8 1, ptr %78, align 1, !tbaa !41
  call void @llvm.lifetime.start.p0(i64 8, ptr %79) #9
  store i64 0, ptr %79, align 8, !tbaa !34
  br label %617

617:                                              ; preds = %656, %616
  %618 = load i64, ptr %79, align 8, !tbaa !34
  %619 = load i64, ptr %31, align 8, !tbaa !34
  %620 = icmp ult i64 %618, %619
  br i1 %620, label %622, label %621

621:                                              ; preds = %617
  store i32 4, ptr %70, align 4
  br label %660

622:                                              ; preds = %617
  call void @llvm.lifetime.start.p0(i64 24, ptr %80) #9
  %623 = load ptr, ptr %71, align 8, !tbaa !5
  %624 = load i64, ptr %79, align 8, !tbaa !34
  %625 = invoke noundef nonnull align 8 dereferenceable(17) ptr @_ZNK9NOMAD_4_313ArrayOfDoubleixEm(ptr noundef nonnull align 8 dereferenceable(24) %623, i64 noundef %624)
          to label %626 unwind label %639

626:                                              ; preds = %622
  %627 = call noundef nonnull align 8 dereferenceable(160) ptr @_ZNKSt19__shared_ptr_accessIN9NOMAD_4_39EvalPointELN9__gnu_cxx12_Lock_policyE2ELb0ELb0EEdeEv(ptr noundef nonnull align 1 dereferenceable(1) %17) #9
  %628 = load i64, ptr %79, align 8, !tbaa !34
  %629 = invoke noundef nonnull align 8 dereferenceable(17) ptr @_ZNK9NOMAD_4_313ArrayOfDoubleixEm(ptr noundef nonnull align 8 dereferenceable(24) %627, i64 noundef %628)
          to label %630 unwind label %639

630:                                              ; preds = %626
  invoke void @_ZN9NOMAD_4_3miERKNS_6DoubleES2_(ptr dead_on_unwind writable sret(%"class.NOMAD_4_3::Double") align 8 %80, ptr noundef nonnull align 8 dereferenceable(17) %625, ptr noundef nonnull align 8 dereferenceable(17) %629)
          to label %631 unwind label %639

631:                                              ; preds = %630
  call void @llvm.lifetime.start.p0(i64 24, ptr %81) #9
  invoke void @_ZNK9NOMAD_4_36Double3absEv(ptr dead_on_unwind writable sret(%"class.NOMAD_4_3::Double") align 8 %81, ptr noundef nonnull align 8 dereferenceable(17) %80)
          to label %632 unwind label %643

632:                                              ; preds = %631
  %633 = load i64, ptr %79, align 8, !tbaa !34
  %634 = invoke noundef nonnull align 8 dereferenceable(17) ptr @_ZNK9NOMAD_4_313ArrayOfDoubleixEm(ptr noundef nonnull align 8 dereferenceable(24) %38, i64 noundef %633)
          to label %635 unwind label %647

635:                                              ; preds = %632
  %636 = invoke noundef zeroext i1 @_ZN9NOMAD_4_3gtERKNS_6DoubleES2_(ptr noundef nonnull align 8 dereferenceable(17) %81, ptr noundef nonnull align 8 dereferenceable(17) %634)
          to label %637 unwind label %647

637:                                              ; preds = %635
  call void @_ZN9NOMAD_4_36DoubleD1Ev(ptr noundef nonnull align 8 dereferenceable(17) %81) #9
  call void @llvm.lifetime.end.p0(i64 24, ptr %81) #9
  br i1 %636, label %638, label %652

638:                                              ; preds = %637
  store i8 0, ptr %78, align 1, !tbaa !41
  store i32 4, ptr %70, align 4
  br label %653

639:                                              ; preds = %630, %626, %622
  %640 = landingpad { ptr, i32 }
          cleanup
  %641 = extractvalue { ptr, i32 } %640, 0
  store ptr %641, ptr %6, align 8
  %642 = extractvalue { ptr, i32 } %640, 1
  store i32 %642, ptr %7, align 4
  br label %659

643:                                              ; preds = %631
  %644 = landingpad { ptr, i32 }
          cleanup
  %645 = extractvalue { ptr, i32 } %644, 0
  store ptr %645, ptr %6, align 8
  %646 = extractvalue { ptr, i32 } %644, 1
  store i32 %646, ptr %7, align 4
  br label %651

647:                                              ; preds = %635, %632
  %648 = landingpad { ptr, i32 }
          cleanup
  %649 = extractvalue { ptr, i32 } %648, 0
  store ptr %649, ptr %6, align 8
  %650 = extractvalue { ptr, i32 } %648, 1
  store i32 %650, ptr %7, align 4
  call void @_ZN9NOMAD_4_36DoubleD1Ev(ptr noundef nonnull align 8 dereferenceable(17) %81) #9
  br label %651

651:                                              ; preds = %647, %643
  call void @llvm.lifetime.end.p0(i64 24, ptr %81) #9
  call void @_ZN9NOMAD_4_36DoubleD1Ev(ptr noundef nonnull align 8 dereferenceable(17) %80) #9
  br label %659

652:                                              ; preds = %637
  store i32 0, ptr %70, align 4
  br label %653

653:                                              ; preds = %652, %638
  call void @_ZN9NOMAD_4_36DoubleD1Ev(ptr noundef nonnull align 8 dereferenceable(17) %80) #9
  call void @llvm.lifetime.end.p0(i64 24, ptr %80) #9
  %654 = load i32, ptr %70, align 4
  switch i32 %654, label %660 [
    i32 0, label %655
  ]

655:                                              ; preds = %653
  br label %656

656:                                              ; preds = %655
  %657 = load i64, ptr %79, align 8, !tbaa !34
  %658 = add i64 %657, 1
  store i64 %658, ptr %79, align 8, !tbaa !34
  br label %617, !llvm.loop !43

659:                                              ; preds = %651, %639
  call void @llvm.lifetime.end.p0(i64 24, ptr %80) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr %79) #9
  br label %807

660:                                              ; preds = %653, %621
  call void @llvm.lifetime.end.p0(i64 8, ptr %79) #9
  br label %661

661:                                              ; preds = %660
  %662 = load i8, ptr %78, align 1, !tbaa !41, !range !45, !noundef !46
  %663 = trunc i8 %662 to i1
  br i1 %663, label %664, label %806

664:                                              ; preds = %661
  call void @llvm.lifetime.start.p0(i64 160, ptr %82) #9
  %665 = load ptr, ptr %71, align 8, !tbaa !5
  invoke void @_ZN9NOMAD_4_39EvalPointC1ERKS0_(ptr noundef nonnull align 8 dereferenceable(160) %82, ptr noundef nonnull align 8 dereferenceable(160) %665)
          to label %666 unwind label %681

666:                                              ; preds = %664
  call void @llvm.lifetime.start.p0(i64 16, ptr %83) #9
  %667 = invoke { ptr, i8 } @_ZNSt3setIN9NOMAD_4_39EvalPointENS0_25NMSimplexEvalPointCompareESaIS1_EE6insertERKS1_(ptr noundef nonnull align 8 dereferenceable(48) %61, ptr noundef nonnull align 8 dereferenceable(160) %82)
          to label %668 unwind label %685

668:                                              ; preds = %666
  store { ptr, i8 } %667, ptr %84, align 8
  call void @llvm.memcpy.p0.p0.i64(ptr align 8 %83, ptr align 8 %84, i64 9, i1 false)
  %669 = getelementptr inbounds %"struct.std::pair", ptr %83, i32 0, i32 1
  %670 = load i8, ptr %669, align 8, !tbaa !47, !range !45, !noundef !46
  %671 = trunc i8 %670 to i1
  br i1 %671, label %718, label %672

672:                                              ; preds = %668
  call void @llvm.lifetime.start.p0(i64 4, ptr %85) #9
  store i32 9, ptr %85, align 4, !tbaa !39
  %673 = invoke noundef zeroext i1 @_ZN9NOMAD_4_311OutputQueue9GoodLevelERKNS_11OutputLevelE(ptr noundef nonnull align 4 dereferenceable(4) %85)
          to label %674 unwind label %689

674:                                              ; preds = %672
  call void @llvm.lifetime.end.p0(i64 4, ptr %85) #9
  br i1 %673, label %675, label %717

675:                                              ; preds = %674
  call void @llvm.lifetime.start.p0(i64 32, ptr %86) #9
  call void @llvm.lifetime.start.p0(i64 32, ptr %87) #9
  call void @llvm.lifetime.start.p0(i64 24, ptr %88) #9
  call void @llvm.lifetime.start.p0(i64 24, ptr %89) #9
  invoke void @_ZN9NOMAD_4_36DoubleC1Ev(ptr noundef nonnull align 8 dereferenceable(17) %89)
          to label %676 unwind label %693

676:                                              ; preds = %675
  invoke void @_ZN9NOMAD_4_313ArrayOfDoubleC1EmRKNS_6DoubleE(ptr noundef nonnull align 8 dereferenceable(24) %88, i64 noundef 0, ptr noundef nonnull align 8 dereferenceable(17) %89)
          to label %677 unwind label %697

677:                                              ; preds = %676
  invoke void @_ZNK9NOMAD_4_39EvalPoint7displayB5cxx11ERKNS_13ArrayOfDoubleERKi(ptr dead_on_unwind writable sret(%"class.std::__cxx11::basic_string") align 8 %87, ptr noundef nonnull align 8 dereferenceable(160) %82, ptr noundef nonnull align 8 dereferenceable(24) %88, ptr noundef nonnull align 4 dereferenceable(4) @_ZN9NOMAD_4_3L22DISPLAY_PRECISION_FULLE)
          to label %678 unwind label %701

678:                                              ; preds = %677
  invoke void @_ZStplIcSt11char_traitsIcESaIcEENSt7__cxx1112basic_stringIT_T0_T1_EEPKS5_OS8_(ptr dead_on_unwind writable sret(%"class.std::__cxx11::basic_string") align 8 %86, ptr noundef @.str.22, ptr noundef nonnull align 8 dereferenceable(32) %87)
          to label %679 unwind label %705

679:                                              ; preds = %678
  invoke void @_ZN9NOMAD_4_310OutputInfo6addMsgERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE(ptr noundef nonnull align 8 dereferenceable(80) %39, ptr noundef nonnull align 8 dereferenceable(32) %86)
          to label %680 unwind label %709

680:                                              ; preds = %679
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %86) #9
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %87) #9
  call void @_ZN9NOMAD_4_313ArrayOfDoubleD1Ev(ptr noundef nonnull align 8 dereferenceable(24) %88) #9
  call void @_ZN9NOMAD_4_36DoubleD1Ev(ptr noundef nonnull align 8 dereferenceable(17) %89) #9
  call void @llvm.lifetime.end.p0(i64 24, ptr %89) #9
  call void @llvm.lifetime.end.p0(i64 24, ptr %88) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr %87) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr %86) #9
  br label %717

681:                                              ; preds = %664
  %682 = landingpad { ptr, i32 }
          cleanup
  %683 = extractvalue { ptr, i32 } %682, 0
  store ptr %683, ptr %6, align 8
  %684 = extractvalue { ptr, i32 } %682, 1
  store i32 %684, ptr %7, align 4
  br label %805

685:                                              ; preds = %666
  %686 = landingpad { ptr, i32 }
          cleanup
  %687 = extractvalue { ptr, i32 } %686, 0
  store ptr %687, ptr %6, align 8
  %688 = extractvalue { ptr, i32 } %686, 1
  store i32 %688, ptr %7, align 4
  br label %804

689:                                              ; preds = %672
  %690 = landingpad { ptr, i32 }
          cleanup
  %691 = extractvalue { ptr, i32 } %690, 0
  store ptr %691, ptr %6, align 8
  %692 = extractvalue { ptr, i32 } %690, 1
  store i32 %692, ptr %7, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %85) #9
  br label %804

693:                                              ; preds = %675
  %694 = landingpad { ptr, i32 }
          cleanup
  %695 = extractvalue { ptr, i32 } %694, 0
  store ptr %695, ptr %6, align 8
  %696 = extractvalue { ptr, i32 } %694, 1
  store i32 %696, ptr %7, align 4
  br label %716

697:                                              ; preds = %676
  %698 = landingpad { ptr, i32 }
          cleanup
  %699 = extractvalue { ptr, i32 } %698, 0
  store ptr %699, ptr %6, align 8
  %700 = extractvalue { ptr, i32 } %698, 1
  store i32 %700, ptr %7, align 4
  br label %715

701:                                              ; preds = %677
  %702 = landingpad { ptr, i32 }
          cleanup
  %703 = extractvalue { ptr, i32 } %702, 0
  store ptr %703, ptr %6, align 8
  %704 = extractvalue { ptr, i32 } %702, 1
  store i32 %704, ptr %7, align 4
  br label %714

705:                                              ; preds = %678
  %706 = landingpad { ptr, i32 }
          cleanup
  %707 = extractvalue { ptr, i32 } %706, 0
  store ptr %707, ptr %6, align 8
  %708 = extractvalue { ptr, i32 } %706, 1
  store i32 %708, ptr %7, align 4
  br label %713

709:                                              ; preds = %679
  %710 = landingpad { ptr, i32 }
          cleanup
  %711 = extractvalue { ptr, i32 } %710, 0
  store ptr %711, ptr %6, align 8
  %712 = extractvalue { ptr, i32 } %710, 1
  store i32 %712, ptr %7, align 4
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %86) #9
  br label %713

713:                                              ; preds = %709, %705
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %87) #9
  br label %714

714:                                              ; preds = %713, %701
  call void @_ZN9NOMAD_4_313ArrayOfDoubleD1Ev(ptr noundef nonnull align 8 dereferenceable(24) %88) #9
  br label %715

715:                                              ; preds = %714, %697
  call void @_ZN9NOMAD_4_36DoubleD1Ev(ptr noundef nonnull align 8 dereferenceable(17) %89) #9
  br label %716

716:                                              ; preds = %715, %693
  call void @llvm.lifetime.end.p0(i64 24, ptr %89) #9
  call void @llvm.lifetime.end.p0(i64 24, ptr %88) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr %87) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr %86) #9
  br label %804

717:                                              ; preds = %680, %674
  br label %803

718:                                              ; preds = %668
  %719 = load i64, ptr %66, align 8, !tbaa !34
  %720 = icmp ule i64 %719, 4
  br i1 %720, label %721, label %802

721:                                              ; preds = %718
  call void @llvm.lifetime.start.p0(i64 4, ptr %90) #9
  store i32 9, ptr %90, align 4, !tbaa !39
  %722 = invoke noundef zeroext i1 @_ZN9NOMAD_4_311OutputQueue9GoodLevelERKNS_11OutputLevelE(ptr noundef nonnull align 4 dereferenceable(4) %90)
          to label %723 unwind label %753

723:                                              ; preds = %721
  call void @llvm.lifetime.end.p0(i64 4, ptr %90) #9
  br i1 %722, label %724, label %799

724:                                              ; preds = %723
  call void @llvm.lifetime.start.p0(i64 32, ptr %91) #9
  %725 = load i64, ptr %66, align 8, !tbaa !34
  %726 = icmp ult i64 %725, 4
  store i1 false, ptr %93, align 1
  store i1 false, ptr %95, align 1
  store i1 false, ptr %96, align 1
  store i1 false, ptr %97, align 1
  store i1 false, ptr %99, align 1
  store i1 false, ptr %100, align 1
  br i1 %726, label %727, label %731

727:                                              ; preds = %724
  call void @llvm.lifetime.start.p0(i64 24, ptr %92) #9
  store i1 true, ptr %93, align 1
  call void @llvm.lifetime.start.p0(i64 24, ptr %94) #9
  store i1 true, ptr %95, align 1
  invoke void @_ZN9NOMAD_4_36DoubleC1Ev(ptr noundef nonnull align 8 dereferenceable(17) %94)
          to label %728 unwind label %757

728:                                              ; preds = %727
  store i1 true, ptr %96, align 1
  invoke void @_ZN9NOMAD_4_313ArrayOfDoubleC1EmRKNS_6DoubleE(ptr noundef nonnull align 8 dereferenceable(24) %92, i64 noundef 0, ptr noundef nonnull align 8 dereferenceable(17) %94)
          to label %729 unwind label %761

729:                                              ; preds = %728
  store i1 true, ptr %97, align 1
  invoke void @_ZNK9NOMAD_4_39EvalPoint7displayB5cxx11ERKNS_13ArrayOfDoubleERKi(ptr dead_on_unwind writable sret(%"class.std::__cxx11::basic_string") align 8 %91, ptr noundef nonnull align 8 dereferenceable(160) %82, ptr noundef nonnull align 8 dereferenceable(24) %92, ptr noundef nonnull align 4 dereferenceable(4) @_ZN9NOMAD_4_3L22DISPLAY_PRECISION_FULLE)
          to label %730 unwind label %765

730:                                              ; preds = %729
  br label %733

731:                                              ; preds = %724
  call void @llvm.lifetime.start.p0(i64 1, ptr %98) #9
  store i1 true, ptr %99, align 1
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %98) #9
  store i1 true, ptr %100, align 1
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %91, ptr noundef @.str.23, ptr noundef nonnull align 1 dereferenceable(1) %98)
          to label %732 unwind label %769

732:                                              ; preds = %731
  br label %733

733:                                              ; preds = %732, %730
  invoke void @_ZN9NOMAD_4_310OutputInfo6addMsgERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE(ptr noundef nonnull align 8 dereferenceable(80) %39, ptr noundef nonnull align 8 dereferenceable(32) %91)
          to label %734 unwind label %773

734:                                              ; preds = %733
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %91) #9
  %735 = load i1, ptr %100, align 1
  br i1 %735, label %736, label %737

736:                                              ; preds = %734
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %98) #9
  br label %737

737:                                              ; preds = %736, %734
  %738 = load i1, ptr %99, align 1
  br i1 %738, label %739, label %740

739:                                              ; preds = %737
  call void @llvm.lifetime.end.p0(i64 1, ptr %98) #9
  br label %740

740:                                              ; preds = %739, %737
  %741 = load i1, ptr %97, align 1
  br i1 %741, label %742, label %743

742:                                              ; preds = %740
  call void @_ZN9NOMAD_4_313ArrayOfDoubleD1Ev(ptr noundef nonnull align 8 dereferenceable(24) %92) #9
  br label %743

743:                                              ; preds = %742, %740
  %744 = load i1, ptr %96, align 1
  br i1 %744, label %745, label %746

745:                                              ; preds = %743
  call void @_ZN9NOMAD_4_36DoubleD1Ev(ptr noundef nonnull align 8 dereferenceable(17) %94) #9
  br label %746

746:                                              ; preds = %745, %743
  %747 = load i1, ptr %95, align 1
  br i1 %747, label %748, label %749

748:                                              ; preds = %746
  call void @llvm.lifetime.end.p0(i64 24, ptr %94) #9
  br label %749

749:                                              ; preds = %748, %746
  %750 = load i1, ptr %93, align 1
  br i1 %750, label %751, label %752

751:                                              ; preds = %749
  call void @llvm.lifetime.end.p0(i64 24, ptr %92) #9
  br label %752

752:                                              ; preds = %751, %749
  call void @llvm.lifetime.end.p0(i64 32, ptr %91) #9
  br label %799

753:                                              ; preds = %721
  %754 = landingpad { ptr, i32 }
          cleanup
  %755 = extractvalue { ptr, i32 } %754, 0
  store ptr %755, ptr %6, align 8
  %756 = extractvalue { ptr, i32 } %754, 1
  store i32 %756, ptr %7, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %90) #9
  br label %804

757:                                              ; preds = %727
  %758 = landingpad { ptr, i32 }
          cleanup
  %759 = extractvalue { ptr, i32 } %758, 0
  store ptr %759, ptr %6, align 8
  %760 = extractvalue { ptr, i32 } %758, 1
  store i32 %760, ptr %7, align 4
  br label %792

761:                                              ; preds = %728
  %762 = landingpad { ptr, i32 }
          cleanup
  %763 = extractvalue { ptr, i32 } %762, 0
  store ptr %763, ptr %6, align 8
  %764 = extractvalue { ptr, i32 } %762, 1
  store i32 %764, ptr %7, align 4
  br label %788

765:                                              ; preds = %729
  %766 = landingpad { ptr, i32 }
          cleanup
  %767 = extractvalue { ptr, i32 } %766, 0
  store ptr %767, ptr %6, align 8
  %768 = extractvalue { ptr, i32 } %766, 1
  store i32 %768, ptr %7, align 4
  br label %784

769:                                              ; preds = %731
  %770 = landingpad { ptr, i32 }
          cleanup
  %771 = extractvalue { ptr, i32 } %770, 0
  store ptr %771, ptr %6, align 8
  %772 = extractvalue { ptr, i32 } %770, 1
  store i32 %772, ptr %7, align 4
  br label %777

773:                                              ; preds = %733
  %774 = landingpad { ptr, i32 }
          cleanup
  %775 = extractvalue { ptr, i32 } %774, 0
  store ptr %775, ptr %6, align 8
  %776 = extractvalue { ptr, i32 } %774, 1
  store i32 %776, ptr %7, align 4
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %91) #9
  br label %777

777:                                              ; preds = %773, %769
  %778 = load i1, ptr %100, align 1
  br i1 %778, label %779, label %780

779:                                              ; preds = %777
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %98) #9
  br label %780

780:                                              ; preds = %779, %777
  %781 = load i1, ptr %99, align 1
  br i1 %781, label %782, label %783

782:                                              ; preds = %780
  call void @llvm.lifetime.end.p0(i64 1, ptr %98) #9
  br label %783

783:                                              ; preds = %782, %780
  br label %784

784:                                              ; preds = %783, %765
  %785 = load i1, ptr %97, align 1
  br i1 %785, label %786, label %787

786:                                              ; preds = %784
  call void @_ZN9NOMAD_4_313ArrayOfDoubleD1Ev(ptr noundef nonnull align 8 dereferenceable(24) %92) #9
  br label %787

787:                                              ; preds = %786, %784
  br label %788

788:                                              ; preds = %787, %761
  %789 = load i1, ptr %96, align 1
  br i1 %789, label %790, label %791

790:                                              ; preds = %788
  call void @_ZN9NOMAD_4_36DoubleD1Ev(ptr noundef nonnull align 8 dereferenceable(17) %94) #9
  br label %791

791:                                              ; preds = %790, %788
  br label %792

792:                                              ; preds = %791, %757
  %793 = load i1, ptr %95, align 1
  br i1 %793, label %794, label %795

794:                                              ; preds = %792
  call void @llvm.lifetime.end.p0(i64 24, ptr %94) #9
  br label %795

795:                                              ; preds = %794, %792
  %796 = load i1, ptr %93, align 1
  br i1 %796, label %797, label %798

797:                                              ; preds = %795
  call void @llvm.lifetime.end.p0(i64 24, ptr %92) #9
  br label %798

798:                                              ; preds = %797, %795
  call void @llvm.lifetime.end.p0(i64 32, ptr %91) #9
  br label %804

799:                                              ; preds = %752, %723
  %800 = load i64, ptr %66, align 8, !tbaa !34
  %801 = add i64 %800, 1
  store i64 %801, ptr %66, align 8, !tbaa !34
  br label %802

802:                                              ; preds = %799, %718
  br label %803

803:                                              ; preds = %802, %717
  call void @llvm.lifetime.end.p0(i64 16, ptr %83) #9
  call void @_ZN9NOMAD_4_39EvalPointD1Ev(ptr noundef nonnull align 8 dereferenceable(160) %82) #9
  call void @llvm.lifetime.end.p0(i64 160, ptr %82) #9
  br label %806

804:                                              ; preds = %798, %753, %716, %689, %685
  call void @llvm.lifetime.end.p0(i64 16, ptr %83) #9
  call void @_ZN9NOMAD_4_39EvalPointD1Ev(ptr noundef nonnull align 8 dereferenceable(160) %82) #9
  br label %805

805:                                              ; preds = %804, %681
  call void @llvm.lifetime.end.p0(i64 160, ptr %82) #9
  br label %807

806:                                              ; preds = %803, %661
  call void @llvm.lifetime.end.p0(i64 1, ptr %78) #9
  br label %808

807:                                              ; preds = %805, %659
  call void @llvm.lifetime.end.p0(i64 1, ptr %78) #9
  br label %813

808:                                              ; preds = %806, %613
  br label %809

809:                                              ; preds = %808, %550
  br label %810

810:                                              ; preds = %809, %541, %534
  call void @llvm.lifetime.end.p0(i64 8, ptr %71) #9
  br label %811

811:                                              ; preds = %810
  %812 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZN9__gnu_cxx17__normal_iteratorIPN9NOMAD_4_39EvalPointESt6vectorIS2_SaIS2_EEEppEv(ptr noundef nonnull align 8 dereferenceable(8) %68) #9
  br label %526

813:                                              ; preds = %807, %615, %575
  call void @llvm.lifetime.end.p0(i64 8, ptr %71) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr %69) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr %68) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr %67) #9
  br label %1321

814:                                              ; preds = %528
  call void @llvm.lifetime.start.p0(i64 4, ptr %101) #9
  store i32 9, ptr %101, align 4, !tbaa !39
  %815 = invoke noundef zeroext i1 @_ZN9NOMAD_4_311OutputQueue9GoodLevelERKNS_11OutputLevelE(ptr noundef nonnull align 4 dereferenceable(4) %101)
          to label %816 unwind label %820

816:                                              ; preds = %814
  call void @llvm.lifetime.end.p0(i64 4, ptr %101) #9
  br i1 %815, label %817, label %832

817:                                              ; preds = %816
  invoke void @_ZN9NOMAD_4_310OutputInfoC2EOS0_(ptr noundef nonnull align 8 dereferenceable(80) %102, ptr noundef nonnull align 8 dereferenceable(80) %39)
          to label %818 unwind label %824

818:                                              ; preds = %817
  invoke void @_ZN9NOMAD_4_311OutputQueue3AddENS_10OutputInfoE(ptr noundef %102)
          to label %819 unwind label %828

819:                                              ; preds = %818
  call void @_ZN9NOMAD_4_310OutputInfoD2Ev(ptr noundef nonnull align 8 dereferenceable(80) %102) #9
  br label %832

820:                                              ; preds = %814
  %821 = landingpad { ptr, i32 }
          cleanup
  %822 = extractvalue { ptr, i32 } %821, 0
  store ptr %822, ptr %6, align 8
  %823 = extractvalue { ptr, i32 } %821, 1
  store i32 %823, ptr %7, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %101) #9
  br label %1321

824:                                              ; preds = %817
  %825 = landingpad { ptr, i32 }
          cleanup
  %826 = extractvalue { ptr, i32 } %825, 0
  store ptr %826, ptr %6, align 8
  %827 = extractvalue { ptr, i32 } %825, 1
  store i32 %827, ptr %7, align 4
  br label %1321

828:                                              ; preds = %818
  %829 = landingpad { ptr, i32 }
          cleanup
  %830 = extractvalue { ptr, i32 } %829, 0
  store ptr %830, ptr %6, align 8
  %831 = extractvalue { ptr, i32 } %829, 1
  store i32 %831, ptr %7, align 4
  call void @_ZN9NOMAD_4_310OutputInfoD2Ev(ptr noundef nonnull align 8 dereferenceable(80) %102) #9
  br label %1321

832:                                              ; preds = %819, %816
  call void @llvm.lifetime.start.p0(i64 4, ptr %103) #9
  store i32 7, ptr %103, align 4, !tbaa !39
  %833 = invoke noundef zeroext i1 @_ZN9NOMAD_4_311OutputQueue9GoodLevelERKNS_11OutputLevelE(ptr noundef nonnull align 4 dereferenceable(4) %103)
          to label %834 unwind label %840

834:                                              ; preds = %832
  call void @llvm.lifetime.end.p0(i64 4, ptr %103) #9
  br i1 %833, label %835, label %858

835:                                              ; preds = %834
  call void @llvm.lifetime.start.p0(i64 32, ptr %104) #9
  call void @llvm.lifetime.start.p0(i64 32, ptr %105) #9
  %836 = call noundef i64 @_ZNKSt3setIN9NOMAD_4_39EvalPointENS0_25NMSimplexEvalPointCompareESaIS1_EE4sizeEv(ptr noundef nonnull align 8 dereferenceable(48) %61) #9
  invoke void @_ZNSt7__cxx119to_stringEm(ptr dead_on_unwind writable sret(%"class.std::__cxx11::basic_string") align 8 %105, i64 noundef %836)
          to label %837 unwind label %844

837:                                              ; preds = %835
  invoke void @_ZStplIcSt11char_traitsIcESaIcEENSt7__cxx1112basic_stringIT_T0_T1_EEPKS5_OS8_(ptr dead_on_unwind writable sret(%"class.std::__cxx11::basic_string") align 8 %104, ptr noundef @.str.24, ptr noundef nonnull align 8 dereferenceable(32) %105)
          to label %838 unwind label %848

838:                                              ; preds = %837
  invoke void @_ZNK9NOMAD_4_34Step13AddOutputInfoERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEENS_11OutputLevelE(ptr noundef nonnull align 8 dereferenceable(140) %164, ptr noundef nonnull align 8 dereferenceable(32) %104, i32 noundef 7)
          to label %839 unwind label %852

839:                                              ; preds = %838
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %104) #9
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %105) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr %105) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr %104) #9
  br label %858

840:                                              ; preds = %832
  %841 = landingpad { ptr, i32 }
          cleanup
  %842 = extractvalue { ptr, i32 } %841, 0
  store ptr %842, ptr %6, align 8
  %843 = extractvalue { ptr, i32 } %841, 1
  store i32 %843, ptr %7, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %103) #9
  br label %1321

844:                                              ; preds = %835
  %845 = landingpad { ptr, i32 }
          cleanup
  %846 = extractvalue { ptr, i32 } %845, 0
  store ptr %846, ptr %6, align 8
  %847 = extractvalue { ptr, i32 } %845, 1
  store i32 %847, ptr %7, align 4
  br label %857

848:                                              ; preds = %837
  %849 = landingpad { ptr, i32 }
          cleanup
  %850 = extractvalue { ptr, i32 } %849, 0
  store ptr %850, ptr %6, align 8
  %851 = extractvalue { ptr, i32 } %849, 1
  store i32 %851, ptr %7, align 4
  br label %856

852:                                              ; preds = %838
  %853 = landingpad { ptr, i32 }
          cleanup
  %854 = extractvalue { ptr, i32 } %853, 0
  store ptr %854, ptr %6, align 8
  %855 = extractvalue { ptr, i32 } %853, 1
  store i32 %855, ptr %7, align 4
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %104) #9
  br label %856

856:                                              ; preds = %852, %848
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %105) #9
  br label %857

857:                                              ; preds = %856, %844
  call void @llvm.lifetime.end.p0(i64 32, ptr %105) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr %104) #9
  br label %1321

858:                                              ; preds = %839, %834
  call void @llvm.lifetime.start.p0(i64 16, ptr %106) #9
  invoke void @_ZNK9NOMAD_4_34Step17getAllStopReasonsEv(ptr dead_on_unwind writable sret(%"class.std::shared_ptr") align 8 %107, ptr noundef nonnull align 8 dereferenceable(140) %164)
          to label %859 unwind label %872

859:                                              ; preds = %858
  invoke void @_ZN9NOMAD_4_315AlgoStopReasonsINS_10NMStopTypeEE3getESt10shared_ptrINS_14AllStopReasonsEE(ptr dead_on_unwind writable sret(%"class.std::shared_ptr.115") align 8 %106, ptr noundef %107)
          to label %860 unwind label %876

860:                                              ; preds = %859
  call void @_ZNSt12__shared_ptrIN9NOMAD_4_314AllStopReasonsELN9__gnu_cxx12_Lock_policyE2EED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %107) #9
  %861 = call noundef i64 @_ZNKSt3setIN9NOMAD_4_39EvalPointENS0_25NMSimplexEvalPointCompareESaIS1_EE4sizeEv(ptr noundef nonnull align 8 dereferenceable(48) %61) #9
  %862 = load i64, ptr %34, align 8, !tbaa !34
  %863 = icmp ult i64 %861, %862
  br i1 %863, label %864, label %898

864:                                              ; preds = %860
  %865 = call noundef ptr @_ZNKSt19__shared_ptr_accessIN9NOMAD_4_315AlgoStopReasonsINS0_10NMStopTypeEEELN9__gnu_cxx12_Lock_policyE2ELb0ELb0EEptEv(ptr noundef nonnull align 1 dereferenceable(1) %106) #9
  invoke void @_ZN9NOMAD_4_315AlgoStopReasonsINS_10NMStopTypeEE3setES1_(ptr noundef nonnull align 8 dereferenceable(40) %865, i32 noundef 3)
          to label %866 unwind label %880

866:                                              ; preds = %864
  call void @llvm.lifetime.start.p0(i64 4, ptr %108) #9
  store i32 7, ptr %108, align 4, !tbaa !39
  %867 = invoke noundef zeroext i1 @_ZN9NOMAD_4_311OutputQueue9GoodLevelERKNS_11OutputLevelE(ptr noundef nonnull align 4 dereferenceable(4) %108)
          to label %868 unwind label %884

868:                                              ; preds = %866
  call void @llvm.lifetime.end.p0(i64 4, ptr %108) #9
  br i1 %867, label %869, label %897

869:                                              ; preds = %868
  call void @llvm.lifetime.start.p0(i64 32, ptr %109) #9
  call void @llvm.lifetime.start.p0(i64 1, ptr %110) #9
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %110) #9
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %109, ptr noundef @.str.25, ptr noundef nonnull align 1 dereferenceable(1) %110)
          to label %870 unwind label %888

870:                                              ; preds = %869
  invoke void @_ZNK9NOMAD_4_34Step13AddOutputInfoERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEENS_11OutputLevelE(ptr noundef nonnull align 8 dereferenceable(140) %164, ptr noundef nonnull align 8 dereferenceable(32) %109, i32 noundef 7)
          to label %871 unwind label %892

871:                                              ; preds = %870
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %109) #9
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %110) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr %110) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr %109) #9
  br label %897

872:                                              ; preds = %858
  %873 = landingpad { ptr, i32 }
          cleanup
  %874 = extractvalue { ptr, i32 } %873, 0
  store ptr %874, ptr %6, align 8
  %875 = extractvalue { ptr, i32 } %873, 1
  store i32 %875, ptr %7, align 4
  br label %1320

876:                                              ; preds = %859
  %877 = landingpad { ptr, i32 }
          cleanup
  %878 = extractvalue { ptr, i32 } %877, 0
  store ptr %878, ptr %6, align 8
  %879 = extractvalue { ptr, i32 } %877, 1
  store i32 %879, ptr %7, align 4
  call void @_ZNSt12__shared_ptrIN9NOMAD_4_314AllStopReasonsELN9__gnu_cxx12_Lock_policyE2EED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %107) #9
  br label %1320

880:                                              ; preds = %864
  %881 = landingpad { ptr, i32 }
          cleanup
  %882 = extractvalue { ptr, i32 } %881, 0
  store ptr %882, ptr %6, align 8
  %883 = extractvalue { ptr, i32 } %881, 1
  store i32 %883, ptr %7, align 4
  br label %1319

884:                                              ; preds = %866
  %885 = landingpad { ptr, i32 }
          cleanup
  %886 = extractvalue { ptr, i32 } %885, 0
  store ptr %886, ptr %6, align 8
  %887 = extractvalue { ptr, i32 } %885, 1
  store i32 %887, ptr %7, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %108) #9
  br label %1319

888:                                              ; preds = %869
  %889 = landingpad { ptr, i32 }
          cleanup
  %890 = extractvalue { ptr, i32 } %889, 0
  store ptr %890, ptr %6, align 8
  %891 = extractvalue { ptr, i32 } %889, 1
  store i32 %891, ptr %7, align 4
  br label %896

892:                                              ; preds = %870
  %893 = landingpad { ptr, i32 }
          cleanup
  %894 = extractvalue { ptr, i32 } %893, 0
  store ptr %894, ptr %6, align 8
  %895 = extractvalue { ptr, i32 } %893, 1
  store i32 %895, ptr %7, align 4
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %109) #9
  br label %896

896:                                              ; preds = %892, %888
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %110) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr %110) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr %109) #9
  br label %1319

897:                                              ; preds = %871, %868
  store i1 false, ptr %2, align 1
  store i32 1, ptr %70, align 4
  br label %1317

898:                                              ; preds = %860
  call void @llvm.lifetime.start.p0(i64 8, ptr %111) #9
  %899 = call ptr @_ZNKSt3setIN9NOMAD_4_39EvalPointENS0_25NMSimplexEvalPointCompareESaIS1_EE5beginEv(ptr noundef nonnull align 8 dereferenceable(48) %61) #9
  %900 = getelementptr inbounds %"struct.std::_Rb_tree_const_iterator", ptr %111, i32 0, i32 0
  store ptr %899, ptr %900, align 8
  call void @llvm.lifetime.start.p0(i64 80, ptr %112) #9
  call void @llvm.lifetime.start.p0(i64 32, ptr %113) #9
  %901 = load ptr, ptr %164, align 8, !tbaa !35
  %902 = getelementptr inbounds ptr, ptr %901, i64 2
  %903 = load ptr, ptr %902, align 8
  invoke void %903(ptr dead_on_unwind writable sret(%"class.std::__cxx11::basic_string") align 8 %113, ptr noundef nonnull align 8 dereferenceable(140) %164)
          to label %904 unwind label %928

904:                                              ; preds = %898
  call void @llvm.lifetime.start.p0(i64 32, ptr %114) #9
  call void @llvm.lifetime.start.p0(i64 1, ptr %115) #9
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %115) #9
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %114, ptr noundef @.str.26, ptr noundef nonnull align 1 dereferenceable(1) %115)
          to label %905 unwind label %932

905:                                              ; preds = %904
  invoke void @_ZN9NOMAD_4_310OutputInfoC2ERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEES8_NS_11OutputLevelEbb(ptr noundef nonnull align 8 dereferenceable(80) %112, ptr noundef nonnull align 8 dereferenceable(32) %113, ptr noundef nonnull align 8 dereferenceable(32) %114, i32 noundef 9, i1 noundef zeroext false, i1 noundef zeroext false)
          to label %906 unwind label %936

906:                                              ; preds = %905
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %114) #9
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %115) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr %115) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr %114) #9
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %113) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr %113) #9
  %907 = getelementptr inbounds i8, ptr %164, i64 144
  %908 = getelementptr inbounds %"class.NOMAD_4_3::NMIterationUtils", ptr %907, i32 0, i32 9
  %909 = call noundef ptr @_ZNKSt19__shared_ptr_accessISt3setIN9NOMAD_4_39EvalPointENS1_25NMSimplexEvalPointCompareESaIS2_EELN9__gnu_cxx12_Lock_policyE2ELb0ELb0EEptEv(ptr noundef nonnull align 1 dereferenceable(1) %908) #9
  %910 = call noundef nonnull align 8 dereferenceable(160) ptr @_ZNKSt23_Rb_tree_const_iteratorIN9NOMAD_4_39EvalPointEEdeEv(ptr noundef nonnull align 8 dereferenceable(8) %111) #9
  %911 = invoke { ptr, i8 } @_ZNSt3setIN9NOMAD_4_39EvalPointENS0_25NMSimplexEvalPointCompareESaIS1_EE6insertERKS1_(ptr noundef nonnull align 8 dereferenceable(48) %909, ptr noundef nonnull align 8 dereferenceable(160) %910)
          to label %912 unwind label %942

912:                                              ; preds = %906
  %913 = getelementptr inbounds { ptr, i8 }, ptr %116, i32 0, i32 0
  %914 = extractvalue { ptr, i8 } %911, 0
  store ptr %914, ptr %913, align 8
  %915 = getelementptr inbounds { ptr, i8 }, ptr %116, i32 0, i32 1
  %916 = extractvalue { ptr, i8 } %911, 1
  store i8 %916, ptr %915, align 8
  call void @llvm.lifetime.start.p0(i64 4, ptr %117) #9
  store i32 9, ptr %117, align 4, !tbaa !39
  %917 = invoke noundef zeroext i1 @_ZN9NOMAD_4_311OutputQueue9GoodLevelERKNS_11OutputLevelE(ptr noundef nonnull align 4 dereferenceable(4) %117)
          to label %918 unwind label %946

918:                                              ; preds = %912
  call void @llvm.lifetime.end.p0(i64 4, ptr %117) #9
  br i1 %917, label %919, label %983

919:                                              ; preds = %918
  call void @llvm.lifetime.start.p0(i64 32, ptr %118) #9
  call void @llvm.lifetime.start.p0(i64 32, ptr %119) #9
  %920 = call noundef nonnull align 8 dereferenceable(160) ptr @_ZNKSt23_Rb_tree_const_iteratorIN9NOMAD_4_39EvalPointEEdeEv(ptr noundef nonnull align 8 dereferenceable(8) %111) #9
  call void @llvm.lifetime.start.p0(i64 24, ptr %120) #9
  call void @llvm.lifetime.start.p0(i64 24, ptr %121) #9
  invoke void @_ZN9NOMAD_4_36DoubleC1Ev(ptr noundef nonnull align 8 dereferenceable(17) %121)
          to label %921 unwind label %950

921:                                              ; preds = %919
  invoke void @_ZN9NOMAD_4_313ArrayOfDoubleC1EmRKNS_6DoubleE(ptr noundef nonnull align 8 dereferenceable(24) %120, i64 noundef 0, ptr noundef nonnull align 8 dereferenceable(17) %121)
          to label %922 unwind label %954

922:                                              ; preds = %921
  invoke void @_ZNK9NOMAD_4_39EvalPoint7displayB5cxx11ERKNS_13ArrayOfDoubleERKi(ptr dead_on_unwind writable sret(%"class.std::__cxx11::basic_string") align 8 %119, ptr noundef nonnull align 8 dereferenceable(160) %920, ptr noundef nonnull align 8 dereferenceable(24) %120, ptr noundef nonnull align 4 dereferenceable(4) @_ZN9NOMAD_4_3L22DISPLAY_PRECISION_FULLE)
          to label %923 unwind label %958

923:                                              ; preds = %922
  invoke void @_ZStplIcSt11char_traitsIcESaIcEENSt7__cxx1112basic_stringIT_T0_T1_EEPKS5_OS8_(ptr dead_on_unwind writable sret(%"class.std::__cxx11::basic_string") align 8 %118, ptr noundef @.str.27, ptr noundef nonnull align 8 dereferenceable(32) %119)
          to label %924 unwind label %962

924:                                              ; preds = %923
  invoke void @_ZN9NOMAD_4_310OutputInfo6addMsgERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE(ptr noundef nonnull align 8 dereferenceable(80) %112, ptr noundef nonnull align 8 dereferenceable(32) %118)
          to label %925 unwind label %966

925:                                              ; preds = %924
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %118) #9
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %119) #9
  call void @_ZN9NOMAD_4_313ArrayOfDoubleD1Ev(ptr noundef nonnull align 8 dereferenceable(24) %120) #9
  call void @_ZN9NOMAD_4_36DoubleD1Ev(ptr noundef nonnull align 8 dereferenceable(17) %121) #9
  call void @llvm.lifetime.end.p0(i64 24, ptr %121) #9
  call void @llvm.lifetime.end.p0(i64 24, ptr %120) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr %119) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr %118) #9
  call void @llvm.lifetime.start.p0(i64 32, ptr %122) #9
  call void @llvm.lifetime.start.p0(i64 1, ptr %123) #9
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %123) #9
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %122, ptr noundef @.str.28, ptr noundef nonnull align 1 dereferenceable(1) %123)
          to label %926 unwind label %974

926:                                              ; preds = %925
  invoke void @_ZN9NOMAD_4_310OutputInfo6addMsgERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE(ptr noundef nonnull align 8 dereferenceable(80) %112, ptr noundef nonnull align 8 dereferenceable(32) %122)
          to label %927 unwind label %978

927:                                              ; preds = %926
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %122) #9
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %123) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr %123) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr %122) #9
  br label %983

928:                                              ; preds = %898
  %929 = landingpad { ptr, i32 }
          cleanup
  %930 = extractvalue { ptr, i32 } %929, 0
  store ptr %930, ptr %6, align 8
  %931 = extractvalue { ptr, i32 } %929, 1
  store i32 %931, ptr %7, align 4
  br label %941

932:                                              ; preds = %904
  %933 = landingpad { ptr, i32 }
          cleanup
  %934 = extractvalue { ptr, i32 } %933, 0
  store ptr %934, ptr %6, align 8
  %935 = extractvalue { ptr, i32 } %933, 1
  store i32 %935, ptr %7, align 4
  br label %940

936:                                              ; preds = %905
  %937 = landingpad { ptr, i32 }
          cleanup
  %938 = extractvalue { ptr, i32 } %937, 0
  store ptr %938, ptr %6, align 8
  %939 = extractvalue { ptr, i32 } %937, 1
  store i32 %939, ptr %7, align 4
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %114) #9
  br label %940

940:                                              ; preds = %936, %932
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %115) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr %115) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr %114) #9
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %113) #9
  br label %941

941:                                              ; preds = %940, %928
  call void @llvm.lifetime.end.p0(i64 32, ptr %113) #9
  br label %1316

942:                                              ; preds = %906
  %943 = landingpad { ptr, i32 }
          cleanup
  %944 = extractvalue { ptr, i32 } %943, 0
  store ptr %944, ptr %6, align 8
  %945 = extractvalue { ptr, i32 } %943, 1
  store i32 %945, ptr %7, align 4
  br label %1315

946:                                              ; preds = %912
  %947 = landingpad { ptr, i32 }
          cleanup
  %948 = extractvalue { ptr, i32 } %947, 0
  store ptr %948, ptr %6, align 8
  %949 = extractvalue { ptr, i32 } %947, 1
  store i32 %949, ptr %7, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %117) #9
  br label %1315

950:                                              ; preds = %919
  %951 = landingpad { ptr, i32 }
          cleanup
  %952 = extractvalue { ptr, i32 } %951, 0
  store ptr %952, ptr %6, align 8
  %953 = extractvalue { ptr, i32 } %951, 1
  store i32 %953, ptr %7, align 4
  br label %973

954:                                              ; preds = %921
  %955 = landingpad { ptr, i32 }
          cleanup
  %956 = extractvalue { ptr, i32 } %955, 0
  store ptr %956, ptr %6, align 8
  %957 = extractvalue { ptr, i32 } %955, 1
  store i32 %957, ptr %7, align 4
  br label %972

958:                                              ; preds = %922
  %959 = landingpad { ptr, i32 }
          cleanup
  %960 = extractvalue { ptr, i32 } %959, 0
  store ptr %960, ptr %6, align 8
  %961 = extractvalue { ptr, i32 } %959, 1
  store i32 %961, ptr %7, align 4
  br label %971

962:                                              ; preds = %923
  %963 = landingpad { ptr, i32 }
          cleanup
  %964 = extractvalue { ptr, i32 } %963, 0
  store ptr %964, ptr %6, align 8
  %965 = extractvalue { ptr, i32 } %963, 1
  store i32 %965, ptr %7, align 4
  br label %970

966:                                              ; preds = %924
  %967 = landingpad { ptr, i32 }
          cleanup
  %968 = extractvalue { ptr, i32 } %967, 0
  store ptr %968, ptr %6, align 8
  %969 = extractvalue { ptr, i32 } %967, 1
  store i32 %969, ptr %7, align 4
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %118) #9
  br label %970

970:                                              ; preds = %966, %962
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %119) #9
  br label %971

971:                                              ; preds = %970, %958
  call void @_ZN9NOMAD_4_313ArrayOfDoubleD1Ev(ptr noundef nonnull align 8 dereferenceable(24) %120) #9
  br label %972

972:                                              ; preds = %971, %954
  call void @_ZN9NOMAD_4_36DoubleD1Ev(ptr noundef nonnull align 8 dereferenceable(17) %121) #9
  br label %973

973:                                              ; preds = %972, %950
  call void @llvm.lifetime.end.p0(i64 24, ptr %121) #9
  call void @llvm.lifetime.end.p0(i64 24, ptr %120) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr %119) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr %118) #9
  br label %1315

974:                                              ; preds = %925
  %975 = landingpad { ptr, i32 }
          cleanup
  %976 = extractvalue { ptr, i32 } %975, 0
  store ptr %976, ptr %6, align 8
  %977 = extractvalue { ptr, i32 } %975, 1
  store i32 %977, ptr %7, align 4
  br label %982

978:                                              ; preds = %926
  %979 = landingpad { ptr, i32 }
          cleanup
  %980 = extractvalue { ptr, i32 } %979, 0
  store ptr %980, ptr %6, align 8
  %981 = extractvalue { ptr, i32 } %979, 1
  store i32 %981, ptr %7, align 4
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %122) #9
  br label %982

982:                                              ; preds = %978, %974
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %123) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr %123) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr %122) #9
  br label %1315

983:                                              ; preds = %927, %918
  call void @llvm.lifetime.start.p0(i64 4, ptr %124) #9
  store i32 0, ptr %124, align 4, !tbaa !50
  call void @llvm.lifetime.start.p0(i64 24, ptr %125) #9
  %984 = call noundef nonnull align 8 dereferenceable(160) ptr @_ZNKSt23_Rb_tree_const_iteratorIN9NOMAD_4_39EvalPointEEdeEv(ptr noundef nonnull align 8 dereferenceable(8) %111) #9
  %985 = load i32, ptr %4, align 4, !tbaa !9
  %986 = load i32, ptr %8, align 4, !tbaa !11
  invoke void @_ZNK9NOMAD_4_39EvalPoint4getHENS_8EvalTypeENS_11ComputeTypeE(ptr dead_on_unwind writable sret(%"class.NOMAD_4_3::Double") align 8 %125, ptr noundef nonnull align 8 dereferenceable(160) %984, i32 noundef %985, i32 noundef %986)
          to label %987 unwind label %999

987:                                              ; preds = %983
  %988 = invoke noundef zeroext i1 @_ZNK9NOMAD_4_36Double9isDefinedEv(ptr noundef nonnull align 8 dereferenceable(17) %125)
          to label %989 unwind label %1003

989:                                              ; preds = %987
  br i1 %988, label %990, label %996

990:                                              ; preds = %989
  %991 = call noundef nonnull align 8 dereferenceable(160) ptr @_ZNKSt23_Rb_tree_const_iteratorIN9NOMAD_4_39EvalPointEEdeEv(ptr noundef nonnull align 8 dereferenceable(8) %111) #9
  %992 = load i32, ptr %4, align 4, !tbaa !9
  %993 = load i32, ptr %8, align 4, !tbaa !11
  %994 = invoke noundef zeroext i1 @_ZNK9NOMAD_4_39EvalPoint10isFeasibleENS_8EvalTypeENS_11ComputeTypeE(ptr noundef nonnull align 8 dereferenceable(160) %991, i32 noundef %992, i32 noundef %993)
          to label %995 unwind label %1003

995:                                              ; preds = %990
  br label %996

996:                                              ; preds = %995, %989
  %997 = phi i1 [ false, %989 ], [ %994, %995 ]
  call void @_ZN9NOMAD_4_36DoubleD1Ev(ptr noundef nonnull align 8 dereferenceable(17) %125) #9
  call void @llvm.lifetime.end.p0(i64 24, ptr %125) #9
  br i1 %997, label %998, label %1008

998:                                              ; preds = %996
  store i32 1, ptr %124, align 4, !tbaa !50
  br label %1008

999:                                              ; preds = %983
  %1000 = landingpad { ptr, i32 }
          cleanup
  %1001 = extractvalue { ptr, i32 } %1000, 0
  store ptr %1001, ptr %6, align 8
  %1002 = extractvalue { ptr, i32 } %1000, 1
  store i32 %1002, ptr %7, align 4
  br label %1007

1003:                                             ; preds = %990, %987
  %1004 = landingpad { ptr, i32 }
          cleanup
  %1005 = extractvalue { ptr, i32 } %1004, 0
  store ptr %1005, ptr %6, align 8
  %1006 = extractvalue { ptr, i32 } %1004, 1
  store i32 %1006, ptr %7, align 4
  call void @_ZN9NOMAD_4_36DoubleD1Ev(ptr noundef nonnull align 8 dereferenceable(17) %125) #9
  br label %1007

1007:                                             ; preds = %1003, %999
  call void @llvm.lifetime.end.p0(i64 24, ptr %125) #9
  br label %1314

1008:                                             ; preds = %998, %996
  %1009 = call ptr @_ZNSt23_Rb_tree_const_iteratorIN9NOMAD_4_39EvalPointEEppEi(ptr noundef nonnull align 8 dereferenceable(8) %111, i32 noundef 0) #9
  %1010 = getelementptr inbounds %"struct.std::_Rb_tree_const_iterator", ptr %126, i32 0, i32 0
  store ptr %1009, ptr %1010, align 8
  call void @llvm.lifetime.start.p0(i64 4, ptr %127) #9
  store i32 1, ptr %127, align 4, !tbaa !50
  br label %1011

1011:                                             ; preds = %1228, %1008
  call void @llvm.lifetime.start.p0(i64 8, ptr %128) #9
  %1012 = call ptr @_ZNKSt3setIN9NOMAD_4_39EvalPointENS0_25NMSimplexEvalPointCompareESaIS1_EE3endEv(ptr noundef nonnull align 8 dereferenceable(48) %61) #9
  %1013 = getelementptr inbounds %"struct.std::_Rb_tree_const_iterator", ptr %128, i32 0, i32 0
  store ptr %1012, ptr %1013, align 8
  %1014 = call noundef zeroext i1 @_ZStneRKSt23_Rb_tree_const_iteratorIN9NOMAD_4_39EvalPointEES4_(ptr noundef nonnull align 8 dereferenceable(8) %111, ptr noundef nonnull align 8 dereferenceable(8) %128) #9
  br i1 %1014, label %1015, label %1023

1015:                                             ; preds = %1011
  %1016 = call noundef ptr @_ZNKSt19__shared_ptr_accessIN9NOMAD_4_315AlgoStopReasonsINS0_10NMStopTypeEEELN9__gnu_cxx12_Lock_policyE2ELb0ELb0EEptEv(ptr noundef nonnull align 1 dereferenceable(1) %106) #9
  %1017 = load ptr, ptr %1016, align 8, !tbaa !35
  %1018 = getelementptr inbounds ptr, ptr %1017, i64 4
  %1019 = load ptr, ptr %1018, align 8
  %1020 = invoke noundef zeroext i1 %1019(ptr noundef nonnull align 8 dereferenceable(40) %1016)
          to label %1021 unwind label %1033

1021:                                             ; preds = %1015
  %1022 = xor i1 %1020, true
  br label %1023

1023:                                             ; preds = %1021, %1011
  %1024 = phi i1 [ false, %1011 ], [ %1022, %1021 ]
  call void @llvm.lifetime.end.p0(i64 8, ptr %128) #9
  br i1 %1024, label %1025, label %1231

1025:                                             ; preds = %1023
  %1026 = getelementptr inbounds i8, ptr %164, i64 144
  %1027 = getelementptr inbounds %"class.NOMAD_4_3::NMIterationUtils", ptr %1026, i32 0, i32 9
  %1028 = call noundef ptr @_ZNKSt19__shared_ptr_accessISt3setIN9NOMAD_4_39EvalPointENS1_25NMSimplexEvalPointCompareESaIS2_EELN9__gnu_cxx12_Lock_policyE2ELb0ELb0EEptEv(ptr noundef nonnull align 1 dereferenceable(1) %1027) #9
  %1029 = call noundef i64 @_ZNKSt3setIN9NOMAD_4_39EvalPointENS0_25NMSimplexEvalPointCompareESaIS1_EE4sizeEv(ptr noundef nonnull align 8 dereferenceable(48) %1028) #9
  %1030 = load i64, ptr %34, align 8, !tbaa !34
  %1031 = icmp eq i64 %1029, %1030
  br i1 %1031, label %1032, label %1037

1032:                                             ; preds = %1025
  br label %1231

1033:                                             ; preds = %1015
  %1034 = landingpad { ptr, i32 }
          cleanup
  %1035 = extractvalue { ptr, i32 } %1034, 0
  store ptr %1035, ptr %6, align 8
  %1036 = extractvalue { ptr, i32 } %1034, 1
  store i32 %1036, ptr %7, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %128) #9
  br label %1313

1037:                                             ; preds = %1025
  call void @llvm.lifetime.start.p0(i64 4, ptr %129) #9
  store i32 9, ptr %129, align 4, !tbaa !39
  %1038 = invoke noundef zeroext i1 @_ZN9NOMAD_4_311OutputQueue9GoodLevelERKNS_11OutputLevelE(ptr noundef nonnull align 4 dereferenceable(4) %129)
          to label %1039 unwind label %1050

1039:                                             ; preds = %1037
  call void @llvm.lifetime.end.p0(i64 4, ptr %129) #9
  br i1 %1038, label %1040, label %1088

1040:                                             ; preds = %1039
  call void @llvm.lifetime.start.p0(i64 32, ptr %130) #9
  call void @llvm.lifetime.start.p0(i64 32, ptr %131) #9
  call void @llvm.lifetime.start.p0(i64 32, ptr %132) #9
  call void @llvm.lifetime.start.p0(i64 32, ptr %133) #9
  %1041 = load i32, ptr %127, align 4, !tbaa !50
  call void @_ZNSt7__cxx119to_stringEi(ptr dead_on_unwind writable sret(%"class.std::__cxx11::basic_string") align 8 %133, i32 noundef %1041) #9
  invoke void @_ZStplIcSt11char_traitsIcESaIcEENSt7__cxx1112basic_stringIT_T0_T1_EEPKS5_OS8_(ptr dead_on_unwind writable sret(%"class.std::__cxx11::basic_string") align 8 %132, ptr noundef @.str.29, ptr noundef nonnull align 8 dereferenceable(32) %133)
          to label %1042 unwind label %1054

1042:                                             ; preds = %1040
  invoke void @_ZStplIcSt11char_traitsIcESaIcEENSt7__cxx1112basic_stringIT_T0_T1_EEOS8_PKS5_(ptr dead_on_unwind writable sret(%"class.std::__cxx11::basic_string") align 8 %131, ptr noundef nonnull align 8 dereferenceable(32) %132, ptr noundef @.str.30)
          to label %1043 unwind label %1058

1043:                                             ; preds = %1042
  call void @llvm.lifetime.start.p0(i64 32, ptr %134) #9
  %1044 = call noundef nonnull align 8 dereferenceable(160) ptr @_ZNKSt23_Rb_tree_const_iteratorIN9NOMAD_4_39EvalPointEEdeEv(ptr noundef nonnull align 8 dereferenceable(8) %111) #9
  call void @llvm.lifetime.start.p0(i64 24, ptr %135) #9
  call void @llvm.lifetime.start.p0(i64 24, ptr %136) #9
  invoke void @_ZN9NOMAD_4_36DoubleC1Ev(ptr noundef nonnull align 8 dereferenceable(17) %136)
          to label %1045 unwind label %1062

1045:                                             ; preds = %1043
  invoke void @_ZN9NOMAD_4_313ArrayOfDoubleC1EmRKNS_6DoubleE(ptr noundef nonnull align 8 dereferenceable(24) %135, i64 noundef 0, ptr noundef nonnull align 8 dereferenceable(17) %136)
          to label %1046 unwind label %1066

1046:                                             ; preds = %1045
  invoke void @_ZNK9NOMAD_4_39EvalPoint7displayB5cxx11ERKNS_13ArrayOfDoubleERKi(ptr dead_on_unwind writable sret(%"class.std::__cxx11::basic_string") align 8 %134, ptr noundef nonnull align 8 dereferenceable(160) %1044, ptr noundef nonnull align 8 dereferenceable(24) %135, ptr noundef nonnull align 4 dereferenceable(4) @_ZN9NOMAD_4_3L22DISPLAY_PRECISION_FULLE)
          to label %1047 unwind label %1070

1047:                                             ; preds = %1046
  invoke void @_ZStplIcSt11char_traitsIcESaIcEENSt7__cxx1112basic_stringIT_T0_T1_EEOS8_S9_(ptr dead_on_unwind writable sret(%"class.std::__cxx11::basic_string") align 8 %130, ptr noundef nonnull align 8 dereferenceable(32) %131, ptr noundef nonnull align 8 dereferenceable(32) %134)
          to label %1048 unwind label %1074

1048:                                             ; preds = %1047
  invoke void @_ZN9NOMAD_4_310OutputInfo6addMsgERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE(ptr noundef nonnull align 8 dereferenceable(80) %112, ptr noundef nonnull align 8 dereferenceable(32) %130)
          to label %1049 unwind label %1078

1049:                                             ; preds = %1048
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %130) #9
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %134) #9
  call void @_ZN9NOMAD_4_313ArrayOfDoubleD1Ev(ptr noundef nonnull align 8 dereferenceable(24) %135) #9
  call void @_ZN9NOMAD_4_36DoubleD1Ev(ptr noundef nonnull align 8 dereferenceable(17) %136) #9
  call void @llvm.lifetime.end.p0(i64 24, ptr %136) #9
  call void @llvm.lifetime.end.p0(i64 24, ptr %135) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr %134) #9
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %131) #9
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %132) #9
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %133) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr %133) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr %132) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr %131) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr %130) #9
  br label %1088

1050:                                             ; preds = %1037
  %1051 = landingpad { ptr, i32 }
          cleanup
  %1052 = extractvalue { ptr, i32 } %1051, 0
  store ptr %1052, ptr %6, align 8
  %1053 = extractvalue { ptr, i32 } %1051, 1
  store i32 %1053, ptr %7, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %129) #9
  br label %1313

1054:                                             ; preds = %1040
  %1055 = landingpad { ptr, i32 }
          cleanup
  %1056 = extractvalue { ptr, i32 } %1055, 0
  store ptr %1056, ptr %6, align 8
  %1057 = extractvalue { ptr, i32 } %1055, 1
  store i32 %1057, ptr %7, align 4
  br label %1087

1058:                                             ; preds = %1042
  %1059 = landingpad { ptr, i32 }
          cleanup
  %1060 = extractvalue { ptr, i32 } %1059, 0
  store ptr %1060, ptr %6, align 8
  %1061 = extractvalue { ptr, i32 } %1059, 1
  store i32 %1061, ptr %7, align 4
  br label %1086

1062:                                             ; preds = %1043
  %1063 = landingpad { ptr, i32 }
          cleanup
  %1064 = extractvalue { ptr, i32 } %1063, 0
  store ptr %1064, ptr %6, align 8
  %1065 = extractvalue { ptr, i32 } %1063, 1
  store i32 %1065, ptr %7, align 4
  br label %1085

1066:                                             ; preds = %1045
  %1067 = landingpad { ptr, i32 }
          cleanup
  %1068 = extractvalue { ptr, i32 } %1067, 0
  store ptr %1068, ptr %6, align 8
  %1069 = extractvalue { ptr, i32 } %1067, 1
  store i32 %1069, ptr %7, align 4
  br label %1084

1070:                                             ; preds = %1046
  %1071 = landingpad { ptr, i32 }
          cleanup
  %1072 = extractvalue { ptr, i32 } %1071, 0
  store ptr %1072, ptr %6, align 8
  %1073 = extractvalue { ptr, i32 } %1071, 1
  store i32 %1073, ptr %7, align 4
  br label %1083

1074:                                             ; preds = %1047
  %1075 = landingpad { ptr, i32 }
          cleanup
  %1076 = extractvalue { ptr, i32 } %1075, 0
  store ptr %1076, ptr %6, align 8
  %1077 = extractvalue { ptr, i32 } %1075, 1
  store i32 %1077, ptr %7, align 4
  br label %1082

1078:                                             ; preds = %1048
  %1079 = landingpad { ptr, i32 }
          cleanup
  %1080 = extractvalue { ptr, i32 } %1079, 0
  store ptr %1080, ptr %6, align 8
  %1081 = extractvalue { ptr, i32 } %1079, 1
  store i32 %1081, ptr %7, align 4
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %130) #9
  br label %1082

1082:                                             ; preds = %1078, %1074
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %134) #9
  br label %1083

1083:                                             ; preds = %1082, %1070
  call void @_ZN9NOMAD_4_313ArrayOfDoubleD1Ev(ptr noundef nonnull align 8 dereferenceable(24) %135) #9
  br label %1084

1084:                                             ; preds = %1083, %1066
  call void @_ZN9NOMAD_4_36DoubleD1Ev(ptr noundef nonnull align 8 dereferenceable(17) %136) #9
  br label %1085

1085:                                             ; preds = %1084, %1062
  call void @llvm.lifetime.end.p0(i64 24, ptr %136) #9
  call void @llvm.lifetime.end.p0(i64 24, ptr %135) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr %134) #9
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %131) #9
  br label %1086

1086:                                             ; preds = %1085, %1058
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %132) #9
  br label %1087

1087:                                             ; preds = %1086, %1054
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %133) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr %133) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr %132) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr %131) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr %130) #9
  br label %1313

1088:                                             ; preds = %1049, %1039
  call void @llvm.lifetime.start.p0(i64 16, ptr %137) #9
  %1089 = getelementptr inbounds i8, ptr %164, i64 144
  %1090 = getelementptr inbounds %"class.NOMAD_4_3::NMIterationUtils", ptr %1089, i32 0, i32 9
  %1091 = call noundef ptr @_ZNKSt19__shared_ptr_accessISt3setIN9NOMAD_4_39EvalPointENS1_25NMSimplexEvalPointCompareESaIS2_EELN9__gnu_cxx12_Lock_policyE2ELb0ELb0EEptEv(ptr noundef nonnull align 1 dereferenceable(1) %1090) #9
  %1092 = call noundef nonnull align 8 dereferenceable(160) ptr @_ZNKSt23_Rb_tree_const_iteratorIN9NOMAD_4_39EvalPointEEdeEv(ptr noundef nonnull align 8 dereferenceable(8) %111) #9
  %1093 = invoke { ptr, i8 } @_ZNSt3setIN9NOMAD_4_39EvalPointENS0_25NMSimplexEvalPointCompareESaIS1_EE6insertERKS1_(ptr noundef nonnull align 8 dereferenceable(48) %1091, ptr noundef nonnull align 8 dereferenceable(160) %1092)
          to label %1094 unwind label %1106

1094:                                             ; preds = %1088
  store { ptr, i8 } %1093, ptr %138, align 8
  call void @llvm.memcpy.p0.p0.i64(ptr align 8 %137, ptr align 8 %138, i64 9, i1 false)
  %1095 = getelementptr inbounds %"struct.std::pair", ptr %137, i32 0, i32 1
  %1096 = load i8, ptr %1095, align 8, !tbaa !47, !range !45, !noundef !46
  %1097 = trunc i8 %1096 to i1
  br i1 %1097, label %1124, label %1098

1098:                                             ; preds = %1094
  %1099 = call noundef ptr @_ZNKSt19__shared_ptr_accessIN9NOMAD_4_315AlgoStopReasonsINS0_10NMStopTypeEEELN9__gnu_cxx12_Lock_policyE2ELb0ELb0EEptEv(ptr noundef nonnull align 1 dereferenceable(1) %106) #9
  invoke void @_ZN9NOMAD_4_315AlgoStopReasonsINS_10NMStopTypeEE3setES1_(ptr noundef nonnull align 8 dereferenceable(40) %1099, i32 noundef 3)
          to label %1100 unwind label %1106

1100:                                             ; preds = %1098
  call void @llvm.lifetime.start.p0(i64 4, ptr %139) #9
  store i32 7, ptr %139, align 4, !tbaa !39
  %1101 = invoke noundef zeroext i1 @_ZN9NOMAD_4_311OutputQueue9GoodLevelERKNS_11OutputLevelE(ptr noundef nonnull align 4 dereferenceable(4) %139)
          to label %1102 unwind label %1110

1102:                                             ; preds = %1100
  call void @llvm.lifetime.end.p0(i64 4, ptr %139) #9
  br i1 %1101, label %1103, label %1123

1103:                                             ; preds = %1102
  call void @llvm.lifetime.start.p0(i64 32, ptr %140) #9
  call void @llvm.lifetime.start.p0(i64 1, ptr %141) #9
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %141) #9
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %140, ptr noundef @.str.31, ptr noundef nonnull align 1 dereferenceable(1) %141)
          to label %1104 unwind label %1114

1104:                                             ; preds = %1103
  invoke void @_ZNK9NOMAD_4_34Step13AddOutputInfoERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEENS_11OutputLevelE(ptr noundef nonnull align 8 dereferenceable(140) %164, ptr noundef nonnull align 8 dereferenceable(32) %140, i32 noundef 7)
          to label %1105 unwind label %1118

1105:                                             ; preds = %1104
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %140) #9
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %141) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr %141) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr %140) #9
  br label %1123

1106:                                             ; preds = %1098, %1088
  %1107 = landingpad { ptr, i32 }
          cleanup
  %1108 = extractvalue { ptr, i32 } %1107, 0
  store ptr %1108, ptr %6, align 8
  %1109 = extractvalue { ptr, i32 } %1107, 1
  store i32 %1109, ptr %7, align 4
  br label %1230

1110:                                             ; preds = %1100
  %1111 = landingpad { ptr, i32 }
          cleanup
  %1112 = extractvalue { ptr, i32 } %1111, 0
  store ptr %1112, ptr %6, align 8
  %1113 = extractvalue { ptr, i32 } %1111, 1
  store i32 %1113, ptr %7, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %139) #9
  br label %1230

1114:                                             ; preds = %1103
  %1115 = landingpad { ptr, i32 }
          cleanup
  %1116 = extractvalue { ptr, i32 } %1115, 0
  store ptr %1116, ptr %6, align 8
  %1117 = extractvalue { ptr, i32 } %1115, 1
  store i32 %1117, ptr %7, align 4
  br label %1122

1118:                                             ; preds = %1104
  %1119 = landingpad { ptr, i32 }
          cleanup
  %1120 = extractvalue { ptr, i32 } %1119, 0
  store ptr %1120, ptr %6, align 8
  %1121 = extractvalue { ptr, i32 } %1119, 1
  store i32 %1121, ptr %7, align 4
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %140) #9
  br label %1122

1122:                                             ; preds = %1118, %1114
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %141) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr %141) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr %140) #9
  br label %1230

1123:                                             ; preds = %1105, %1102
  store i32 8, ptr %70, align 4
  br label %1226

1124:                                             ; preds = %1094
  call void @llvm.lifetime.start.p0(i64 4, ptr %142) #9
  %1125 = getelementptr inbounds i8, ptr %164, i64 144
  %1126 = invoke noundef i32 @_ZNK9NOMAD_4_316NMIterationUtils9getRankDZEv(ptr noundef nonnull align 8 dereferenceable(440) %1125)
          to label %1127 unwind label %1138

1127:                                             ; preds = %1124
  store i32 %1126, ptr %142, align 4, !tbaa !50
  %1128 = load i32, ptr %142, align 4, !tbaa !50
  %1129 = icmp sle i32 %1128, 0
  br i1 %1129, label %1130, label %1156

1130:                                             ; preds = %1127
  %1131 = call noundef ptr @_ZNKSt19__shared_ptr_accessIN9NOMAD_4_315AlgoStopReasonsINS0_10NMStopTypeEEELN9__gnu_cxx12_Lock_policyE2ELb0ELb0EEptEv(ptr noundef nonnull align 1 dereferenceable(1) %106) #9
  invoke void @_ZN9NOMAD_4_315AlgoStopReasonsINS_10NMStopTypeEE3setES1_(ptr noundef nonnull align 8 dereferenceable(40) %1131, i32 noundef 3)
          to label %1132 unwind label %1138

1132:                                             ; preds = %1130
  call void @llvm.lifetime.start.p0(i64 4, ptr %143) #9
  store i32 7, ptr %143, align 4, !tbaa !39
  %1133 = invoke noundef zeroext i1 @_ZN9NOMAD_4_311OutputQueue9GoodLevelERKNS_11OutputLevelE(ptr noundef nonnull align 4 dereferenceable(4) %143)
          to label %1134 unwind label %1142

1134:                                             ; preds = %1132
  call void @llvm.lifetime.end.p0(i64 4, ptr %143) #9
  br i1 %1133, label %1135, label %1155

1135:                                             ; preds = %1134
  call void @llvm.lifetime.start.p0(i64 32, ptr %144) #9
  call void @llvm.lifetime.start.p0(i64 1, ptr %145) #9
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %145) #9
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %144, ptr noundef @.str.32, ptr noundef nonnull align 1 dereferenceable(1) %145)
          to label %1136 unwind label %1146

1136:                                             ; preds = %1135
  invoke void @_ZNK9NOMAD_4_34Step13AddOutputInfoERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEENS_11OutputLevelE(ptr noundef nonnull align 8 dereferenceable(140) %164, ptr noundef nonnull align 8 dereferenceable(32) %144, i32 noundef 7)
          to label %1137 unwind label %1150

1137:                                             ; preds = %1136
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %144) #9
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %145) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr %145) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr %144) #9
  br label %1155

1138:                                             ; preds = %1210, %1179, %1130, %1124
  %1139 = landingpad { ptr, i32 }
          cleanup
  %1140 = extractvalue { ptr, i32 } %1139, 0
  store ptr %1140, ptr %6, align 8
  %1141 = extractvalue { ptr, i32 } %1139, 1
  store i32 %1141, ptr %7, align 4
  br label %1229

1142:                                             ; preds = %1132
  %1143 = landingpad { ptr, i32 }
          cleanup
  %1144 = extractvalue { ptr, i32 } %1143, 0
  store ptr %1144, ptr %6, align 8
  %1145 = extractvalue { ptr, i32 } %1143, 1
  store i32 %1145, ptr %7, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %143) #9
  br label %1229

1146:                                             ; preds = %1135
  %1147 = landingpad { ptr, i32 }
          cleanup
  %1148 = extractvalue { ptr, i32 } %1147, 0
  store ptr %1148, ptr %6, align 8
  %1149 = extractvalue { ptr, i32 } %1147, 1
  store i32 %1149, ptr %7, align 4
  br label %1154

1150:                                             ; preds = %1136
  %1151 = landingpad { ptr, i32 }
          cleanup
  %1152 = extractvalue { ptr, i32 } %1151, 0
  store ptr %1152, ptr %6, align 8
  %1153 = extractvalue { ptr, i32 } %1151, 1
  store i32 %1153, ptr %7, align 4
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %144) #9
  br label %1154

1154:                                             ; preds = %1150, %1146
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %145) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr %145) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr %144) #9
  br label %1229

1155:                                             ; preds = %1137, %1134
  store i32 8, ptr %70, align 4
  br label %1225

1156:                                             ; preds = %1127
  %1157 = load i32, ptr %142, align 4, !tbaa !50
  %1158 = load i32, ptr %127, align 4, !tbaa !50
  %1159 = icmp ne i32 %1157, %1158
  br i1 %1159, label %1160, label %1191

1160:                                             ; preds = %1156
  call void @llvm.lifetime.start.p0(i64 4, ptr %146) #9
  store i32 9, ptr %146, align 4, !tbaa !39
  %1161 = invoke noundef zeroext i1 @_ZN9NOMAD_4_311OutputQueue9GoodLevelERKNS_11OutputLevelE(ptr noundef nonnull align 4 dereferenceable(4) %146)
          to label %1162 unwind label %1166

1162:                                             ; preds = %1160
  call void @llvm.lifetime.end.p0(i64 4, ptr %146) #9
  br i1 %1161, label %1163, label %1179

1163:                                             ; preds = %1162
  call void @llvm.lifetime.start.p0(i64 32, ptr %147) #9
  call void @llvm.lifetime.start.p0(i64 1, ptr %148) #9
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %148) #9
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %147, ptr noundef @.str.33, ptr noundef nonnull align 1 dereferenceable(1) %148)
          to label %1164 unwind label %1170

1164:                                             ; preds = %1163
  invoke void @_ZN9NOMAD_4_310OutputInfo6addMsgERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE(ptr noundef nonnull align 8 dereferenceable(80) %112, ptr noundef nonnull align 8 dereferenceable(32) %147)
          to label %1165 unwind label %1174

1165:                                             ; preds = %1164
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %147) #9
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %148) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr %148) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr %147) #9
  br label %1179

1166:                                             ; preds = %1160
  %1167 = landingpad { ptr, i32 }
          cleanup
  %1168 = extractvalue { ptr, i32 } %1167, 0
  store ptr %1168, ptr %6, align 8
  %1169 = extractvalue { ptr, i32 } %1167, 1
  store i32 %1169, ptr %7, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %146) #9
  br label %1229

1170:                                             ; preds = %1163
  %1171 = landingpad { ptr, i32 }
          cleanup
  %1172 = extractvalue { ptr, i32 } %1171, 0
  store ptr %1172, ptr %6, align 8
  %1173 = extractvalue { ptr, i32 } %1171, 1
  store i32 %1173, ptr %7, align 4
  br label %1178

1174:                                             ; preds = %1164
  %1175 = landingpad { ptr, i32 }
          cleanup
  %1176 = extractvalue { ptr, i32 } %1175, 0
  store ptr %1176, ptr %6, align 8
  %1177 = extractvalue { ptr, i32 } %1175, 1
  store i32 %1177, ptr %7, align 4
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %147) #9
  br label %1178

1178:                                             ; preds = %1174, %1170
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %148) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr %148) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr %147) #9
  br label %1229

1179:                                             ; preds = %1165, %1162
  %1180 = getelementptr inbounds i8, ptr %164, i64 144
  %1181 = getelementptr inbounds %"class.NOMAD_4_3::NMIterationUtils", ptr %1180, i32 0, i32 9
  %1182 = call noundef ptr @_ZNKSt19__shared_ptr_accessISt3setIN9NOMAD_4_39EvalPointENS1_25NMSimplexEvalPointCompareESaIS2_EELN9__gnu_cxx12_Lock_policyE2ELb0ELb0EEptEv(ptr noundef nonnull align 1 dereferenceable(1) %1181) #9
  %1183 = getelementptr inbounds %"struct.std::pair", ptr %137, i32 0, i32 0
  call void @llvm.memcpy.p0.p0.i64(ptr align 8 %149, ptr align 8 %1183, i64 8, i1 false), !tbaa.struct !52
  %1184 = getelementptr inbounds %"struct.std::_Rb_tree_const_iterator", ptr %149, i32 0, i32 0
  %1185 = load ptr, ptr %1184, align 8
  %1186 = invoke ptr @_ZNSt3setIN9NOMAD_4_39EvalPointENS0_25NMSimplexEvalPointCompareESaIS1_EE5eraseB5cxx11ESt23_Rb_tree_const_iteratorIS1_E(ptr noundef nonnull align 8 dereferenceable(48) %1182, ptr %1185)
          to label %1187 unwind label %1138

1187:                                             ; preds = %1179
  %1188 = getelementptr inbounds %"struct.std::_Rb_tree_const_iterator", ptr %150, i32 0, i32 0
  store ptr %1186, ptr %1188, align 8
  %1189 = call ptr @_ZNSt23_Rb_tree_const_iteratorIN9NOMAD_4_39EvalPointEEppEi(ptr noundef nonnull align 8 dereferenceable(8) %111, i32 noundef 0) #9
  %1190 = getelementptr inbounds %"struct.std::_Rb_tree_const_iterator", ptr %151, i32 0, i32 0
  store ptr %1189, ptr %1190, align 8
  br label %1224

1191:                                             ; preds = %1156
  call void @llvm.lifetime.start.p0(i64 4, ptr %152) #9
  store i32 9, ptr %152, align 4, !tbaa !39
  %1192 = invoke noundef zeroext i1 @_ZN9NOMAD_4_311OutputQueue9GoodLevelERKNS_11OutputLevelE(ptr noundef nonnull align 4 dereferenceable(4) %152)
          to label %1193 unwind label %1197

1193:                                             ; preds = %1191
  call void @llvm.lifetime.end.p0(i64 4, ptr %152) #9
  br i1 %1192, label %1194, label %1210

1194:                                             ; preds = %1193
  call void @llvm.lifetime.start.p0(i64 32, ptr %153) #9
  call void @llvm.lifetime.start.p0(i64 1, ptr %154) #9
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %154) #9
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %153, ptr noundef @.str.34, ptr noundef nonnull align 1 dereferenceable(1) %154)
          to label %1195 unwind label %1201

1195:                                             ; preds = %1194
  invoke void @_ZN9NOMAD_4_310OutputInfo6addMsgERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE(ptr noundef nonnull align 8 dereferenceable(80) %112, ptr noundef nonnull align 8 dereferenceable(32) %153)
          to label %1196 unwind label %1205

1196:                                             ; preds = %1195
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %153) #9
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %154) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr %154) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr %153) #9
  br label %1210

1197:                                             ; preds = %1191
  %1198 = landingpad { ptr, i32 }
          cleanup
  %1199 = extractvalue { ptr, i32 } %1198, 0
  store ptr %1199, ptr %6, align 8
  %1200 = extractvalue { ptr, i32 } %1198, 1
  store i32 %1200, ptr %7, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %152) #9
  br label %1229

1201:                                             ; preds = %1194
  %1202 = landingpad { ptr, i32 }
          cleanup
  %1203 = extractvalue { ptr, i32 } %1202, 0
  store ptr %1203, ptr %6, align 8
  %1204 = extractvalue { ptr, i32 } %1202, 1
  store i32 %1204, ptr %7, align 4
  br label %1209

1205:                                             ; preds = %1195
  %1206 = landingpad { ptr, i32 }
          cleanup
  %1207 = extractvalue { ptr, i32 } %1206, 0
  store ptr %1207, ptr %6, align 8
  %1208 = extractvalue { ptr, i32 } %1206, 1
  store i32 %1208, ptr %7, align 4
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %153) #9
  br label %1209

1209:                                             ; preds = %1205, %1201
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %154) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr %154) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr %153) #9
  br label %1229

1210:                                             ; preds = %1196, %1193
  %1211 = call noundef nonnull align 8 dereferenceable(160) ptr @_ZNKSt23_Rb_tree_const_iteratorIN9NOMAD_4_39EvalPointEEdeEv(ptr noundef nonnull align 8 dereferenceable(8) %111) #9
  %1212 = load i32, ptr %4, align 4, !tbaa !9
  %1213 = load i32, ptr %8, align 4, !tbaa !11
  %1214 = invoke noundef zeroext i1 @_ZNK9NOMAD_4_39EvalPoint10isFeasibleENS_8EvalTypeENS_11ComputeTypeE(ptr noundef nonnull align 8 dereferenceable(160) %1211, i32 noundef %1212, i32 noundef %1213)
          to label %1215 unwind label %1138

1215:                                             ; preds = %1210
  br i1 %1214, label %1216, label %1219

1216:                                             ; preds = %1215
  %1217 = load i32, ptr %124, align 4, !tbaa !50
  %1218 = add nsw i32 %1217, 1
  store i32 %1218, ptr %124, align 4, !tbaa !50
  br label %1219

1219:                                             ; preds = %1216, %1215
  %1220 = load i32, ptr %127, align 4, !tbaa !50
  %1221 = add nsw i32 %1220, 1
  store i32 %1221, ptr %127, align 4, !tbaa !50
  %1222 = call ptr @_ZNSt23_Rb_tree_const_iteratorIN9NOMAD_4_39EvalPointEEppEi(ptr noundef nonnull align 8 dereferenceable(8) %111, i32 noundef 0) #9
  %1223 = getelementptr inbounds %"struct.std::_Rb_tree_const_iterator", ptr %155, i32 0, i32 0
  store ptr %1222, ptr %1223, align 8
  br label %1224

1224:                                             ; preds = %1219, %1187
  store i32 0, ptr %70, align 4
  br label %1225

1225:                                             ; preds = %1224, %1155
  call void @llvm.lifetime.end.p0(i64 4, ptr %142) #9
  br label %1226

1226:                                             ; preds = %1225, %1123
  call void @llvm.lifetime.end.p0(i64 16, ptr %137) #9
  %1227 = load i32, ptr %70, align 4
  switch i32 %1227, label %1339 [
    i32 0, label %1228
    i32 8, label %1231
  ]

1228:                                             ; preds = %1226
  br label %1011, !llvm.loop !53

1229:                                             ; preds = %1209, %1197, %1178, %1166, %1154, %1142, %1138
  call void @llvm.lifetime.end.p0(i64 4, ptr %142) #9
  br label %1230

1230:                                             ; preds = %1229, %1122, %1110, %1106
  call void @llvm.lifetime.end.p0(i64 16, ptr %137) #9
  br label %1313

1231:                                             ; preds = %1226, %1032, %1023
  call void @llvm.lifetime.start.p0(i64 4, ptr %156) #9
  store i32 9, ptr %156, align 4, !tbaa !39
  %1232 = invoke noundef zeroext i1 @_ZN9NOMAD_4_311OutputQueue9GoodLevelERKNS_11OutputLevelE(ptr noundef nonnull align 4 dereferenceable(4) %156)
          to label %1233 unwind label %1237

1233:                                             ; preds = %1231
  call void @llvm.lifetime.end.p0(i64 4, ptr %156) #9
  br i1 %1232, label %1234, label %1249

1234:                                             ; preds = %1233
  invoke void @_ZN9NOMAD_4_310OutputInfoC2EOS0_(ptr noundef nonnull align 8 dereferenceable(80) %157, ptr noundef nonnull align 8 dereferenceable(80) %112)
          to label %1235 unwind label %1241

1235:                                             ; preds = %1234
  invoke void @_ZN9NOMAD_4_311OutputQueue3AddENS_10OutputInfoE(ptr noundef %157)
          to label %1236 unwind label %1245

1236:                                             ; preds = %1235
  call void @_ZN9NOMAD_4_310OutputInfoD2Ev(ptr noundef nonnull align 8 dereferenceable(80) %157) #9
  br label %1249

1237:                                             ; preds = %1231
  %1238 = landingpad { ptr, i32 }
          cleanup
  %1239 = extractvalue { ptr, i32 } %1238, 0
  store ptr %1239, ptr %6, align 8
  %1240 = extractvalue { ptr, i32 } %1238, 1
  store i32 %1240, ptr %7, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %156) #9
  br label %1313

1241:                                             ; preds = %1309, %1307, %1285, %1278, %1256, %1234
  %1242 = landingpad { ptr, i32 }
          cleanup
  %1243 = extractvalue { ptr, i32 } %1242, 0
  store ptr %1243, ptr %6, align 8
  %1244 = extractvalue { ptr, i32 } %1242, 1
  store i32 %1244, ptr %7, align 4
  br label %1313

1245:                                             ; preds = %1235
  %1246 = landingpad { ptr, i32 }
          cleanup
  %1247 = extractvalue { ptr, i32 } %1246, 0
  store ptr %1247, ptr %6, align 8
  %1248 = extractvalue { ptr, i32 } %1246, 1
  store i32 %1248, ptr %7, align 4
  call void @_ZN9NOMAD_4_310OutputInfoD2Ev(ptr noundef nonnull align 8 dereferenceable(80) %157) #9
  br label %1313

1249:                                             ; preds = %1236, %1233
  %1250 = getelementptr inbounds i8, ptr %164, i64 144
  %1251 = getelementptr inbounds %"class.NOMAD_4_3::NMIterationUtils", ptr %1250, i32 0, i32 9
  %1252 = call noundef ptr @_ZNKSt19__shared_ptr_accessISt3setIN9NOMAD_4_39EvalPointENS1_25NMSimplexEvalPointCompareESaIS2_EELN9__gnu_cxx12_Lock_policyE2ELb0ELb0EEptEv(ptr noundef nonnull align 1 dereferenceable(1) %1251) #9
  %1253 = call noundef i64 @_ZNKSt3setIN9NOMAD_4_39EvalPointENS0_25NMSimplexEvalPointCompareESaIS1_EE4sizeEv(ptr noundef nonnull align 8 dereferenceable(48) %1252) #9
  %1254 = load i64, ptr %34, align 8, !tbaa !34
  %1255 = icmp ult i64 %1253, %1254
  br i1 %1255, label %1256, label %1278

1256:                                             ; preds = %1249
  %1257 = call noundef ptr @_ZNKSt19__shared_ptr_accessIN9NOMAD_4_315AlgoStopReasonsINS0_10NMStopTypeEEELN9__gnu_cxx12_Lock_policyE2ELb0ELb0EEptEv(ptr noundef nonnull align 1 dereferenceable(1) %106) #9
  invoke void @_ZN9NOMAD_4_315AlgoStopReasonsINS_10NMStopTypeEE3setES1_(ptr noundef nonnull align 8 dereferenceable(40) %1257, i32 noundef 3)
          to label %1258 unwind label %1241

1258:                                             ; preds = %1256
  call void @llvm.lifetime.start.p0(i64 4, ptr %158) #9
  store i32 7, ptr %158, align 4, !tbaa !39
  %1259 = invoke noundef zeroext i1 @_ZN9NOMAD_4_311OutputQueue9GoodLevelERKNS_11OutputLevelE(ptr noundef nonnull align 4 dereferenceable(4) %158)
          to label %1260 unwind label %1264

1260:                                             ; preds = %1258
  call void @llvm.lifetime.end.p0(i64 4, ptr %158) #9
  br i1 %1259, label %1261, label %1277

1261:                                             ; preds = %1260
  call void @llvm.lifetime.start.p0(i64 32, ptr %159) #9
  call void @llvm.lifetime.start.p0(i64 1, ptr %160) #9
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %160) #9
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %159, ptr noundef @.str.35, ptr noundef nonnull align 1 dereferenceable(1) %160)
          to label %1262 unwind label %1268

1262:                                             ; preds = %1261
  invoke void @_ZNK9NOMAD_4_34Step13AddOutputInfoERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEENS_11OutputLevelE(ptr noundef nonnull align 8 dereferenceable(140) %164, ptr noundef nonnull align 8 dereferenceable(32) %159, i32 noundef 7)
          to label %1263 unwind label %1272

1263:                                             ; preds = %1262
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %159) #9
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %160) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr %160) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr %159) #9
  br label %1277

1264:                                             ; preds = %1258
  %1265 = landingpad { ptr, i32 }
          cleanup
  %1266 = extractvalue { ptr, i32 } %1265, 0
  store ptr %1266, ptr %6, align 8
  %1267 = extractvalue { ptr, i32 } %1265, 1
  store i32 %1267, ptr %7, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %158) #9
  br label %1313

1268:                                             ; preds = %1261
  %1269 = landingpad { ptr, i32 }
          cleanup
  %1270 = extractvalue { ptr, i32 } %1269, 0
  store ptr %1270, ptr %6, align 8
  %1271 = extractvalue { ptr, i32 } %1269, 1
  store i32 %1271, ptr %7, align 4
  br label %1276

1272:                                             ; preds = %1262
  %1273 = landingpad { ptr, i32 }
          cleanup
  %1274 = extractvalue { ptr, i32 } %1273, 0
  store ptr %1274, ptr %6, align 8
  %1275 = extractvalue { ptr, i32 } %1273, 1
  store i32 %1275, ptr %7, align 4
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %159) #9
  br label %1276

1276:                                             ; preds = %1272, %1268
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %160) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr %160) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr %159) #9
  br label %1313

1277:                                             ; preds = %1263, %1260
  store i1 false, ptr %2, align 1
  store i32 1, ptr %70, align 4
  br label %1312

1278:                                             ; preds = %1249
  %1279 = getelementptr inbounds i8, ptr %164, i64 144
  %1280 = invoke noundef i32 @_ZNK9NOMAD_4_316NMIterationUtils9getRankDZEv(ptr noundef nonnull align 8 dereferenceable(440) %1279)
          to label %1281 unwind label %1241

1281:                                             ; preds = %1278
  %1282 = load i64, ptr %31, align 8, !tbaa !34
  %1283 = trunc i64 %1282 to i32
  %1284 = icmp ne i32 %1280, %1283
  br i1 %1284, label %1285, label %1307

1285:                                             ; preds = %1281
  %1286 = call noundef ptr @_ZNKSt19__shared_ptr_accessIN9NOMAD_4_315AlgoStopReasonsINS0_10NMStopTypeEEELN9__gnu_cxx12_Lock_policyE2ELb0ELb0EEptEv(ptr noundef nonnull align 1 dereferenceable(1) %106) #9
  invoke void @_ZN9NOMAD_4_315AlgoStopReasonsINS_10NMStopTypeEE3setES1_(ptr noundef nonnull align 8 dereferenceable(40) %1286, i32 noundef 3)
          to label %1287 unwind label %1241

1287:                                             ; preds = %1285
  call void @llvm.lifetime.start.p0(i64 4, ptr %161) #9
  store i32 7, ptr %161, align 4, !tbaa !39
  %1288 = invoke noundef zeroext i1 @_ZN9NOMAD_4_311OutputQueue9GoodLevelERKNS_11OutputLevelE(ptr noundef nonnull align 4 dereferenceable(4) %161)
          to label %1289 unwind label %1293

1289:                                             ; preds = %1287
  call void @llvm.lifetime.end.p0(i64 4, ptr %161) #9
  br i1 %1288, label %1290, label %1306

1290:                                             ; preds = %1289
  call void @llvm.lifetime.start.p0(i64 32, ptr %162) #9
  call void @llvm.lifetime.start.p0(i64 1, ptr %163) #9
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %163) #9
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %162, ptr noundef @.str.36, ptr noundef nonnull align 1 dereferenceable(1) %163)
          to label %1291 unwind label %1297

1291:                                             ; preds = %1290
  invoke void @_ZNK9NOMAD_4_34Step13AddOutputInfoERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEENS_11OutputLevelE(ptr noundef nonnull align 8 dereferenceable(140) %164, ptr noundef nonnull align 8 dereferenceable(32) %162, i32 noundef 7)
          to label %1292 unwind label %1301

1292:                                             ; preds = %1291
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %162) #9
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %163) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr %163) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr %162) #9
  br label %1306

1293:                                             ; preds = %1287
  %1294 = landingpad { ptr, i32 }
          cleanup
  %1295 = extractvalue { ptr, i32 } %1294, 0
  store ptr %1295, ptr %6, align 8
  %1296 = extractvalue { ptr, i32 } %1294, 1
  store i32 %1296, ptr %7, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %161) #9
  br label %1313

1297:                                             ; preds = %1290
  %1298 = landingpad { ptr, i32 }
          cleanup
  %1299 = extractvalue { ptr, i32 } %1298, 0
  store ptr %1299, ptr %6, align 8
  %1300 = extractvalue { ptr, i32 } %1298, 1
  store i32 %1300, ptr %7, align 4
  br label %1305

1301:                                             ; preds = %1291
  %1302 = landingpad { ptr, i32 }
          cleanup
  %1303 = extractvalue { ptr, i32 } %1302, 0
  store ptr %1303, ptr %6, align 8
  %1304 = extractvalue { ptr, i32 } %1302, 1
  store i32 %1304, ptr %7, align 4
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %162) #9
  br label %1305

1305:                                             ; preds = %1301, %1297
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %163) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr %163) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr %162) #9
  br label %1313

1306:                                             ; preds = %1292, %1289
  store i1 false, ptr %2, align 1
  store i32 1, ptr %70, align 4
  br label %1312

1307:                                             ; preds = %1281
  %1308 = getelementptr inbounds i8, ptr %164, i64 144
  invoke void @_ZN9NOMAD_4_316NMIterationUtils22updateYCharacteristicsEv(ptr noundef nonnull align 8 dereferenceable(440) %1308)
          to label %1309 unwind label %1241

1309:                                             ; preds = %1307
  %1310 = getelementptr inbounds i8, ptr %164, i64 144
  invoke void @_ZNK9NOMAD_4_316NMIterationUtils12displayYInfoEv(ptr noundef nonnull align 8 dereferenceable(440) %1310)
          to label %1311 unwind label %1241

1311:                                             ; preds = %1309
  store i1 true, ptr %2, align 1
  store i32 1, ptr %70, align 4
  br label %1312

1312:                                             ; preds = %1311, %1306, %1277
  call void @llvm.lifetime.end.p0(i64 4, ptr %127) #9
  call void @llvm.lifetime.end.p0(i64 4, ptr %124) #9
  call void @_ZN9NOMAD_4_310OutputInfoD2Ev(ptr noundef nonnull align 8 dereferenceable(80) %112) #9
  call void @llvm.lifetime.end.p0(i64 80, ptr %112) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr %111) #9
  br label %1317

1313:                                             ; preds = %1305, %1293, %1276, %1264, %1245, %1241, %1237, %1230, %1087, %1050, %1033
  call void @llvm.lifetime.end.p0(i64 4, ptr %127) #9
  br label %1314

1314:                                             ; preds = %1313, %1007
  call void @llvm.lifetime.end.p0(i64 4, ptr %124) #9
  br label %1315

1315:                                             ; preds = %1314, %982, %973, %946, %942
  call void @_ZN9NOMAD_4_310OutputInfoD2Ev(ptr noundef nonnull align 8 dereferenceable(80) %112) #9
  br label %1316

1316:                                             ; preds = %1315, %941
  call void @llvm.lifetime.end.p0(i64 80, ptr %112) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr %111) #9
  br label %1319

1317:                                             ; preds = %1312, %897
  call void @_ZNSt12__shared_ptrIN9NOMAD_4_315AlgoStopReasonsINS0_10NMStopTypeEEELN9__gnu_cxx12_Lock_policyE2EED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %106) #9
  call void @llvm.lifetime.end.p0(i64 16, ptr %106) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr %66) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr %65) #9
  call void @_ZNSt3setIN9NOMAD_4_39EvalPointENS0_25NMSimplexEvalPointCompareESaIS1_EED2Ev(ptr noundef nonnull align 8 dereferenceable(48) %61) #9
  call void @llvm.lifetime.end.p0(i64 48, ptr %61) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr %44) #9
  call void @_ZNSt12__shared_ptrIN9NOMAD_4_38MeshBaseELN9__gnu_cxx12_Lock_policyE2EED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %43) #9
  call void @llvm.lifetime.end.p0(i64 16, ptr %43) #9
  call void @_ZN9NOMAD_4_310OutputInfoD2Ev(ptr noundef nonnull align 8 dereferenceable(80) %39) #9
  call void @llvm.lifetime.end.p0(i64 80, ptr %39) #9
  call void @_ZN9NOMAD_4_313ArrayOfDoubleD1Ev(ptr noundef nonnull align 8 dereferenceable(24) %38) #9
  call void @llvm.lifetime.end.p0(i64 24, ptr %38) #9
  call void @_ZN9NOMAD_4_36DoubleD1Ev(ptr noundef nonnull align 8 dereferenceable(17) %35) #9
  call void @llvm.lifetime.end.p0(i64 24, ptr %35) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr %34) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr %31) #9
  call void @_ZNSt12__shared_ptrIN9NOMAD_4_311BarrierBaseELN9__gnu_cxx12_Lock_policyE2EED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %18) #9
  call void @llvm.lifetime.end.p0(i64 16, ptr %18) #9
  call void @_ZNSt12__shared_ptrIN9NOMAD_4_39EvalPointELN9__gnu_cxx12_Lock_policyE2EED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %17) #9
  call void @llvm.lifetime.end.p0(i64 16, ptr %17) #9
  call void @_ZNSt6vectorIN9NOMAD_4_39EvalPointESaIS1_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %16) #9
  call void @llvm.lifetime.end.p0(i64 24, ptr %16) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr %10) #9
  call void @llvm.lifetime.end.p0(i64 4, ptr %8) #9
  call void @llvm.lifetime.end.p0(i64 4, ptr %4) #9
  %1318 = load i1, ptr %2, align 1
  ret i1 %1318

1319:                                             ; preds = %1316, %896, %884, %880
  call void @_ZNSt12__shared_ptrIN9NOMAD_4_315AlgoStopReasonsINS0_10NMStopTypeEEELN9__gnu_cxx12_Lock_policyE2EED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %106) #9
  br label %1320

1320:                                             ; preds = %1319, %876, %872
  call void @llvm.lifetime.end.p0(i64 16, ptr %106) #9
  br label %1321

1321:                                             ; preds = %1320, %857, %840, %828, %824, %820, %813
  call void @llvm.lifetime.end.p0(i64 8, ptr %66) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr %65) #9
  br label %1322

1322:                                             ; preds = %1321, %514, %507, %498
  call void @_ZNSt3setIN9NOMAD_4_39EvalPointENS0_25NMSimplexEvalPointCompareESaIS1_EED2Ev(ptr noundef nonnull align 8 dereferenceable(48) %61) #9
  call void @llvm.lifetime.end.p0(i64 48, ptr %61) #9
  br label %1323

1323:                                             ; preds = %1322, %479, %452, %451, %428, %408, %407, %398
  call void @llvm.lifetime.end.p0(i64 8, ptr %44) #9
  call void @_ZNSt12__shared_ptrIN9NOMAD_4_38MeshBaseELN9__gnu_cxx12_Lock_policyE2EED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %43) #9
  br label %1324

1324:                                             ; preds = %1323, %386
  call void @llvm.lifetime.end.p0(i64 16, ptr %43) #9
  call void @_ZN9NOMAD_4_310OutputInfoD2Ev(ptr noundef nonnull align 8 dereferenceable(80) %39) #9
  br label %1325

1325:                                             ; preds = %1324, %385
  call void @llvm.lifetime.end.p0(i64 80, ptr %39) #9
  call void @_ZN9NOMAD_4_313ArrayOfDoubleD1Ev(ptr noundef nonnull align 8 dereferenceable(24) %38) #9
  br label %1326

1326:                                             ; preds = %1325, %368
  call void @llvm.lifetime.end.p0(i64 24, ptr %38) #9
  call void @_ZN9NOMAD_4_36DoubleD1Ev(ptr noundef nonnull align 8 dereferenceable(17) %35) #9
  br label %1327

1327:                                             ; preds = %1326, %367
  call void @llvm.lifetime.end.p0(i64 24, ptr %35) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr %34) #9
  br label %1328

1328:                                             ; preds = %1327, %358
  call void @llvm.lifetime.end.p0(i64 8, ptr %31) #9
  br label %1329

1329:                                             ; preds = %1328, %290, %270, %257, %230, %226
  call void @_ZNSt12__shared_ptrIN9NOMAD_4_311BarrierBaseELN9__gnu_cxx12_Lock_policyE2EED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %18) #9
  br label %1330

1330:                                             ; preds = %1329, %222
  call void @llvm.lifetime.end.p0(i64 16, ptr %18) #9
  call void @_ZNSt12__shared_ptrIN9NOMAD_4_39EvalPointELN9__gnu_cxx12_Lock_policyE2EED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %17) #9
  call void @llvm.lifetime.end.p0(i64 16, ptr %17) #9
  call void @_ZNSt6vectorIN9NOMAD_4_39EvalPointESaIS1_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %16) #9
  call void @llvm.lifetime.end.p0(i64 24, ptr %16) #9
  br label %1331

1331:                                             ; preds = %1330, %211
  call void @llvm.lifetime.end.p0(i64 8, ptr %10) #9
  br label %1332

1332:                                             ; preds = %1331, %181
  call void @llvm.lifetime.end.p0(i64 4, ptr %8) #9
  br label %1333

1333:                                             ; preds = %1332, %177
  call void @llvm.lifetime.end.p0(i64 4, ptr %4) #9
  br label %1334

1334:                                             ; preds = %1333
  %1335 = load ptr, ptr %6, align 8
  %1336 = load i32, ptr %7, align 4
  %1337 = insertvalue { ptr, i32 } poison, ptr %1335, 0
  %1338 = insertvalue { ptr, i32 } %1337, i32 %1336, 1
  resume { ptr, i32 } %1338

1339:                                             ; preds = %1226, %349, %269, %240, %194
  unreachable
}

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

declare void @_ZNK9NOMAD_4_34Step13AddOutputInfoERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEENS_11OutputLevelE(ptr noundef nonnull align 8 dereferenceable(140), ptr noundef nonnull align 8 dereferenceable(32), i32 noundef) #3

; 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

; 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

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

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

; Function Attrs: mustprogress nounwind uwtable
declare dso_local void @_ZN9NOMAD_4_312EvcInterface19getEvaluatorControlEv(ptr dead_on_unwind noalias writable sret(%"class.std::shared_ptr.29") align 8) #1 align 2

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

declare noundef i32 @_ZNK9NOMAD_4_316EvaluatorControl18getCurrentEvalTypeEi(ptr noundef nonnull align 8 dereferenceable(352), i32 noundef) #3

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

declare noundef nonnull align 4 dereferenceable(4) ptr @_ZNK9NOMAD_4_316EvaluatorControl14getComputeTypeEi(ptr noundef nonnull align 8 dereferenceable(352), i32 noundef) #3

; Function Attrs: nounwind willreturn memory(read)
declare ptr @__dynamic_cast(ptr, ptr, ptr, i64) #5

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

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

declare void @_ZNK9NOMAD_4_34Step23getMegaIterationBarrierEv(ptr dead_on_unwind writable sret(%"class.std::shared_ptr.65") align 8, ptr noundef nonnull align 8 dereferenceable(140)) #3

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

; 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

declare void @_ZNK9NOMAD_4_311BarrierBase12getAllPointsEv(ptr dead_on_unwind writable sret(%"class.std::vector.57") align 8, ptr noundef nonnull align 8 dereferenceable(120)) #3

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

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

; Function Attrs: inlinehint mustprogress uwtable
declare dso_local void @_ZSt11make_sharedIN9NOMAD_4_39EvalPointEJRS1_EESt10shared_ptrINSt9enable_ifIXntsr8is_arrayIT_EE5valueES5_E4typeEEDpOT0_(ptr dead_on_unwind noalias writable sret(%"class.std::shared_ptr.62") align 8, ptr noundef nonnull align 8 dereferenceable(160)) #4

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

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

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

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

declare noundef ptr @_ZNK9NOMAD_4_39EvalPoint7getEvalENS_8EvalTypeE(ptr noundef nonnull align 8 dereferenceable(160), i32 noundef) #3

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

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

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

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

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

; Function Attrs: mustprogress uwtable
declare dso_local noundef nonnull align 8 dereferenceable(17) ptr @_ZNK9NOMAD_4_310Parameters17getAttributeValueINS_6DoubleEEERKT_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 void @_ZN9NOMAD_4_36DoubleC1ERKS0_(ptr noundef nonnull align 8 dereferenceable(17), ptr noundef nonnull align 8 dereferenceable(17)) unnamed_addr #3

declare void @_ZN9NOMAD_4_313ArrayOfDoubleC1EmRKNS_6DoubleE(ptr noundef nonnull align 8 dereferenceable(24), i64 noundef, ptr noundef nonnull align 8 dereferenceable(17)) unnamed_addr #3

; Function Attrs: mustprogress uwtable
declare dso_local void @_ZN9NOMAD_4_310OutputInfoC2ERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEES8_NS_11OutputLevelEbb(ptr noundef nonnull align 8 dereferenceable(80), ptr noundef nonnull align 8 dereferenceable(32), ptr noundef nonnull align 8 dereferenceable(32), i32 noundef, i1 noundef zeroext, i1 noundef zeroext) unnamed_addr #2 align 2

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

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

declare noundef nonnull align 8 dereferenceable(24) ptr @_ZN9NOMAD_4_313ArrayOfDoubleaSERKS0_(ptr noundef nonnull align 8 dereferenceable(24), ptr noundef nonnull align 8 dereferenceable(24)) #3

; Function Attrs: nounwind
declare void @_ZN9NOMAD_4_313ArrayOfDoubleD1Ev(ptr noundef nonnull align 8 dereferenceable(24)) unnamed_addr #7

declare noundef zeroext i1 @_ZNK9NOMAD_4_313ArrayOfDouble9isDefinedEv(ptr noundef nonnull align 8 dereferenceable(24)) unnamed_addr #3

declare void @_ZN9NOMAD_4_36DoubleC1ERKd(ptr noundef nonnull align 8 dereferenceable(17), ptr noundef nonnull align 8 dereferenceable(8)) unnamed_addr #3

declare noundef nonnull align 8 dereferenceable(24) ptr @_ZN9NOMAD_4_313ArrayOfDoublemLERKNS_6DoubleE(ptr noundef nonnull align 8 dereferenceable(24), ptr noundef nonnull align 8 dereferenceable(17)) #3

; Function Attrs: nounwind
declare void @_ZN9NOMAD_4_36DoubleD1Ev(ptr noundef nonnull align 8 dereferenceable(17)) unnamed_addr #7

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

declare void @_ZNK9NOMAD_4_313ArrayOfDouble7displayERKS0_RKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE(ptr dead_on_unwind writable sret(%"class.std::__cxx11::basic_string") align 8, ptr noundef nonnull align 8 dereferenceable(24), ptr noundef nonnull align 8 dereferenceable(24), ptr noundef nonnull align 8 dereferenceable(32)) unnamed_addr #3

declare void @_ZN9NOMAD_4_36DoubleC1Ev(ptr noundef nonnull align 8 dereferenceable(17)) unnamed_addr #3

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

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

declare noundef zeroext i1 @_ZNK9NOMAD_4_316EvaluatorControl11getUseCacheEi(ptr noundef nonnull align 8 dereferenceable(352), i32 noundef) #3

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

declare noundef i64 @_ZNK9NOMAD_4_314CacheInterface12getAllPointsERSt6vectorINS_9EvalPointESaIS2_EE(ptr noundef nonnull align 8 dereferenceable(32), ptr noundef nonnull align 8 dereferenceable(24)) #3

; Function Attrs: inlinehint mustprogress nounwind uwtable
declare dso_local void @_ZN9NOMAD_4_314CacheInterfaceD2Ev(ptr noundef nonnull align 8 dereferenceable(32)) unnamed_addr #6 align 2

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

; Function Attrs: mustprogress nounwind uwtable
declare dso_local ptr @_ZNSt6vectorIN9NOMAD_4_39EvalPointESaIS1_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_cxxneIPN9NOMAD_4_39EvalPointESt6vectorIS2_SaIS2_EEEEbRKNS_17__normal_iteratorIT_T0_EESC_(ptr noundef nonnull align 8 dereferenceable(8), ptr noundef nonnull align 8 dereferenceable(8)) #6

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

declare noundef i32 @_ZNK9NOMAD_4_39EvalPoint13getEvalStatusENS_8EvalTypeE(ptr noundef nonnull align 8 dereferenceable(160), i32 noundef) #3

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

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

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

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

declare void @_ZN9NOMAD_4_39EvalPointC1ERKS0_(ptr noundef nonnull align 8 dereferenceable(160), ptr noundef nonnull align 8 dereferenceable(160)) unnamed_addr #3

; Function Attrs: mustprogress uwtable
declare dso_local { ptr, i8 } @_ZNSt3setIN9NOMAD_4_39EvalPointENS0_25NMSimplexEvalPointCompareESaIS1_EE6insertERKS1_(ptr noundef nonnull align 8 dereferenceable(48), ptr noundef nonnull align 8 dereferenceable(160)) #2 align 2

declare void @_ZNK9NOMAD_4_39EvalPoint7displayB5cxx11ERKNS_13ArrayOfDoubleERKi(ptr dead_on_unwind writable sret(%"class.std::__cxx11::basic_string") align 8, ptr noundef nonnull align 8 dereferenceable(160), ptr noundef nonnull align 8 dereferenceable(24), ptr noundef nonnull align 4 dereferenceable(4)) #3

; Function Attrs: nounwind
declare void @_ZN9NOMAD_4_39EvalPointD1Ev(ptr noundef nonnull align 8 dereferenceable(160)) unnamed_addr #7

; Function Attrs: inlinehint mustprogress uwtable
declare dso_local void @_ZN9NOMAD_4_3miERKNS_6DoubleES2_(ptr dead_on_unwind noalias writable sret(%"class.NOMAD_4_3::Double") align 8, ptr noundef nonnull align 8 dereferenceable(17), ptr noundef nonnull align 8 dereferenceable(17)) #4

declare noundef nonnull align 8 dereferenceable(17) ptr @_ZNK9NOMAD_4_313ArrayOfDoubleixEm(ptr noundef nonnull align 8 dereferenceable(24), i64 noundef) #3

; Function Attrs: inlinehint mustprogress uwtable
declare dso_local noundef zeroext i1 @_ZN9NOMAD_4_3gtERKNS_6DoubleES2_(ptr noundef nonnull align 8 dereferenceable(17), ptr noundef nonnull align 8 dereferenceable(17)) #4

declare void @_ZNK9NOMAD_4_36Double3absEv(ptr dead_on_unwind writable sret(%"class.NOMAD_4_3::Double") align 8, ptr noundef nonnull align 8 dereferenceable(17)) #3

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

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

; Function Attrs: mustprogress uwtable
declare dso_local void @_ZN9NOMAD_4_311OutputQueue3AddENS_10OutputInfoE(ptr noundef) #2 align 2

; Function Attrs: inlinehint mustprogress uwtable
declare dso_local void @_ZN9NOMAD_4_310OutputInfoC2EOS0_(ptr noundef nonnull align 8 dereferenceable(80), ptr noundef nonnull align 8 dereferenceable(80)) unnamed_addr #4 align 2

; Function Attrs: inlinehint mustprogress nounwind uwtable
declare dso_local void @_ZN9NOMAD_4_310OutputInfoD2Ev(ptr noundef nonnull align 8 dereferenceable(80)) unnamed_addr #6 align 2

; Function Attrs: mustprogress uwtable
declare dso_local void @_ZN9NOMAD_4_315AlgoStopReasonsINS_10NMStopTypeEE3getESt10shared_ptrINS_14AllStopReasonsEE(ptr dead_on_unwind noalias writable sret(%"class.std::shared_ptr.115") align 8, ptr noundef) #2 align 2

; Function Attrs: mustprogress nounwind uwtable
declare dso_local void @_ZNK9NOMAD_4_34Step17getAllStopReasonsEv(ptr dead_on_unwind noalias writable sret(%"class.std::shared_ptr") align 8, ptr noundef nonnull align 8 dereferenceable(140)) #1 align 2

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

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

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

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

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

declare void @_ZNK9NOMAD_4_39EvalPoint4getHENS_8EvalTypeENS_11ComputeTypeE(ptr dead_on_unwind writable sret(%"class.NOMAD_4_3::Double") align 8, ptr noundef nonnull align 8 dereferenceable(160), i32 noundef, i32 noundef) #3

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

declare noundef zeroext i1 @_ZNK9NOMAD_4_39EvalPoint10isFeasibleENS_8EvalTypeENS_11ComputeTypeE(ptr noundef nonnull align 8 dereferenceable(160), i32 noundef, i32 noundef) #3

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

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

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

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

; 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) #6

declare noundef i32 @_ZNK9NOMAD_4_316NMIterationUtils9getRankDZEv(ptr noundef nonnull align 8 dereferenceable(440)) #3

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

declare void @_ZN9NOMAD_4_316NMIterationUtils22updateYCharacteristicsEv(ptr noundef nonnull align 8 dereferenceable(440)) #3

declare void @_ZNK9NOMAD_4_316NMIterationUtils12displayYInfoEv(ptr noundef nonnull align 8 dereferenceable(440)) #3

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

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

; Function Attrs: mustprogress nounwind uwtable
declare dso_local void @_ZNSt12__shared_ptrIN9NOMAD_4_38MeshBaseELN9__gnu_cxx12_Lock_policyE2EED2Ev(ptr noundef nonnull align 8 dereferenceable(16)) 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 nounwind uwtable
declare dso_local void @_ZNSt12__shared_ptrIN9NOMAD_4_39EvalPointELN9__gnu_cxx12_Lock_policyE2EED2Ev(ptr noundef nonnull align 8 dereferenceable(16)) unnamed_addr #1 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

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 = { nounwind willreturn memory(read) }
attributes #6 = { inlinehint mustprogress nounwind uwtable "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }
attributes #7 = { nounwind "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }
attributes #8 = { nocallback nofree nounwind willreturn memory(argmem: readwrite) }
attributes #9 = { nounwind }
attributes #10 = { 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 = !{!"_ZTSN9NOMAD_4_38EvalTypeE", !7, i64 0}
!11 = !{!12, !12, i64 0}
!12 = !{!"_ZTSN9NOMAD_4_311ComputeTypeE", !7, i64 0}
!13 = !{!14, !6, i64 8}
!14 = !{!"_ZTSN9NOMAD_4_34StepE", !6, i64 8, !15, i64 16, !16, i64 24, !19, i64 40, !21, i64 56, !23, i64 72, !33, i64 136}
!15 = !{!"_ZTSN9NOMAD_4_38StepTypeE", !7, i64 0}
!16 = !{!"_ZTSSt10shared_ptrIN9NOMAD_4_314AllStopReasonsEE", !17, i64 0}
!17 = !{!"_ZTSSt12__shared_ptrIN9NOMAD_4_314AllStopReasonsELN9__gnu_cxx12_Lock_policyE2EE", !6, i64 0, !18, i64 8}
!18 = !{!"_ZTSSt14__shared_countILN9__gnu_cxx12_Lock_policyE2EE", !6, i64 0}
!19 = !{!"_ZTSSt10shared_ptrIN9NOMAD_4_313RunParametersEE", !20, i64 0}
!20 = !{!"_ZTSSt12__shared_ptrIN9NOMAD_4_313RunParametersELN9__gnu_cxx12_Lock_policyE2EE", !6, i64 0, !18, i64 8}
!21 = !{!"_ZTSSt10shared_ptrIN9NOMAD_4_312PbParametersEE", !22, i64 0}
!22 = !{!"_ZTSSt12__shared_ptrIN9NOMAD_4_312PbParametersELN9__gnu_cxx12_Lock_policyE2EE", !6, i64 0, !18, i64 8}
!23 = !{!"_ZTSN9NOMAD_4_312SuccessStatsE", !24, i64 0, !32, i64 48, !32, i64 56}
!24 = !{!"_ZTSSt3mapISt4pairIN9NOMAD_4_38StepTypeENS1_11SuccessTypeEEmSt4lessIS4_ESaIS0_IKS4_mEEE", !25, i64 0}
!25 = !{!"_ZTSSt8_Rb_treeISt4pairIN9NOMAD_4_38StepTypeENS1_11SuccessTypeEES0_IKS4_mESt10_Select1stIS6_ESt4lessIS4_ESaIS6_EE", !26, i64 0}
!26 = !{!"_ZTSNSt8_Rb_treeISt4pairIN9NOMAD_4_38StepTypeENS1_11SuccessTypeEES0_IKS4_mESt10_Select1stIS6_ESt4lessIS4_ESaIS6_EE13_Rb_tree_implISA_Lb1EEE", !27, i64 0, !29, i64 8}
!27 = !{!"_ZTSSt20_Rb_tree_key_compareISt4lessISt4pairIN9NOMAD_4_38StepTypeENS2_11SuccessTypeEEEE", !28, i64 0}
!28 = !{!"_ZTSSt4lessISt4pairIN9NOMAD_4_38StepTypeENS1_11SuccessTypeEEE"}
!29 = !{!"_ZTSSt15_Rb_tree_header", !30, i64 0, !32, i64 32}
!30 = !{!"_ZTSSt18_Rb_tree_node_base", !31, i64 0, !6, i64 8, !6, i64 16, !6, i64 24}
!31 = !{!"_ZTSSt14_Rb_tree_color", !7, i64 0}
!32 = !{!"long", !7, i64 0}
!33 = !{!"_ZTSN9NOMAD_4_311SuccessTypeE", !7, i64 0}
!34 = !{!32, !32, i64 0}
!35 = !{!36, !36, i64 0}
!36 = !{!"vtable pointer", !8, i64 0}
!37 = !{!38, !38, i64 0}
!38 = !{!"double", !7, i64 0}
!39 = !{!40, !40, i64 0}
!40 = !{!"_ZTSN9NOMAD_4_311OutputLevelE", !7, i64 0}
!41 = !{!42, !42, i64 0}
!42 = !{!"bool", !7, i64 0}
!43 = distinct !{!43, !44}
!44 = !{!"llvm.loop.mustprogress"}
!45 = !{i8 0, i8 2}
!46 = !{}
!47 = !{!48, !42, i64 8}
!48 = !{!"_ZTSSt4pairISt23_Rb_tree_const_iteratorIN9NOMAD_4_39EvalPointEEbE", !49, i64 0, !42, i64 8}
!49 = !{!"_ZTSSt23_Rb_tree_const_iteratorIN9NOMAD_4_39EvalPointEE", !6, i64 0}
!50 = !{!51, !51, i64 0}
!51 = !{!"int", !7, i64 0}
!52 = !{i64 0, i64 8, !5}
!53 = distinct !{!53, !44}


; 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::shared_ptr.29" = type { %"class.std::__shared_ptr.30" }
%"class.std::__shared_ptr.30" = type { ptr, %"class.std::__shared_count" }
%"class.std::__shared_count" = type { ptr }
%"class.std::__cxx11::basic_string" = type { %"struct.std::__cxx11::basic_string<char>::_Alloc_hider", i64, %union.anon }
%"struct.std::__cxx11::basic_string<char>::_Alloc_hider" = type { ptr }
%union.anon = type { i64, [8 x i8] }
%"class.std::allocator" = type { i8 }
%"class.std::vector.57" = type { %"struct.std::_Vector_base.58" }
%"struct.std::_Vector_base.58" = type { %"struct.std::_Vector_base<NOMAD_4_3::EvalPoint, std::allocator<NOMAD_4_3::EvalPoint>>::_Vector_impl" }
%"struct.std::_Vector_base<NOMAD_4_3::EvalPoint, std::allocator<NOMAD_4_3::EvalPoint>>::_Vector_impl" = type { %"struct.std::_Vector_base<NOMAD_4_3::EvalPoint, std::allocator<NOMAD_4_3::EvalPoint>>::_Vector_impl_data" }
%"struct.std::_Vector_base<NOMAD_4_3::EvalPoint, std::allocator<NOMAD_4_3::EvalPoint>>::_Vector_impl_data" = type { ptr, ptr, ptr }
%"class.std::shared_ptr.62" = type { %"class.std::__shared_ptr.63" }
%"class.std::__shared_ptr.63" = type { ptr, %"class.std::__shared_count" }
%"class.std::shared_ptr.65" = type { %"class.std::__shared_ptr.66" }
%"class.std::__shared_ptr.66" = type { ptr, %"class.std::__shared_count" }
%"class.NOMAD_4_3::Double" = type <{ ptr, double, i8, [7 x i8] }>
%"class.NOMAD_4_3::ArrayOfDouble" = type { ptr, i64, ptr }
%"class.NOMAD_4_3::OutputInfo" = type { %"class.std::__cxx11::basic_string", %"class.NOMAD_4_3::ArrayOfString", i32, i8, i8, %"class.std::unique_ptr.107" }
%"class.NOMAD_4_3::ArrayOfString" = type { ptr, %"class.std::vector.102" }
%"class.std::vector.102" = type { %"struct.std::_Vector_base.103" }
%"struct.std::_Vector_base.103" = type { %"struct.std::_Vector_base<std::__cxx11::basic_string<char>, std::allocator<std::__cxx11::basic_string<char>>>::_Vector_impl" }
%"struct.std::_Vector_base<std::__cxx11::basic_string<char>, std::allocator<std::__cxx11::basic_string<char>>>::_Vector_impl" = type { %"struct.std::_Vector_base<std::__cxx11::basic_string<char>, std::allocator<std::__cxx11::basic_string<char>>>::_Vector_impl_data" }
%"struct.std::_Vector_base<std::__cxx11::basic_string<char>, std::allocator<std::__cxx11::basic_string<char>>>::_Vector_impl_data" = type { ptr, ptr, ptr }
%"class.std::unique_ptr.107" = type { %"struct.std::__uniq_ptr_data.108" }
%"struct.std::__uniq_ptr_data.108" = type { %"class.std::__uniq_ptr_impl.109" }
%"class.std::__uniq_ptr_impl.109" = type { %"class.std::tuple.110" }
%"class.std::tuple.110" = type { %"struct.std::_Tuple_impl.111" }
%"struct.std::_Tuple_impl.111" = type { %"struct.std::_Head_base.114" }
%"struct.std::_Head_base.114" = type { ptr }
%"class.std::shared_ptr.83" = type { %"class.std::__shared_ptr.84" }
%"class.std::__shared_ptr.84" = type { ptr, %"class.std::__shared_count" }
%"class.std::set.26" = type { %"class.std::_Rb_tree.27" }
%"class.std::_Rb_tree.27" = type { %"struct.std::_Rb_tree<NOMAD_4_3::EvalPoint, NOMAD_4_3::EvalPoint, std::_Identity<NOMAD_4_3::EvalPoint>, NOMAD_4_3::NMSimplexEvalPointCompare>::_Rb_tree_impl" }
%"struct.std::_Rb_tree<NOMAD_4_3::EvalPoint, NOMAD_4_3::EvalPoint, std::_Identity<NOMAD_4_3::EvalPoint>, NOMAD_4_3::NMSimplexEvalPointCompare>::_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.NOMAD_4_3::CacheInterface" = type { ptr, %"class.NOMAD_4_3::Point" }
%"class.NOMAD_4_3::Point" = type { %"class.NOMAD_4_3::ArrayOfDouble" }
%"class.__gnu_cxx::__normal_iterator" = type { ptr }
%"class.NOMAD_4_3::EvalPoint" = type { %"class.NOMAD_4_3::Point", [3 x %"class.std::unique_ptr"], i32, i32, i16, %"class.std::shared_ptr.62", %"class.std::vector.75", %"class.std::shared_ptr.80", %"class.NOMAD_4_3::Double", %"class.std::shared_ptr.83" }
%"class.std::unique_ptr" = type { %"struct.std::__uniq_ptr_data" }
%"struct.std::__uniq_ptr_data" = type { %"class.std::__uniq_ptr_impl" }
%"class.std::__uniq_ptr_impl" = type { %"class.std::tuple" }
%"class.std::tuple" = type { %"struct.std::_Tuple_impl" }
%"struct.std::_Tuple_impl" = type { %"struct.std::_Head_base.74" }
%"struct.std::_Head_base.74" = type { ptr }
%"class.std::vector.75" = type { %"struct.std::_Vector_base.76" }
%"struct.std::_Vector_base.76" = type { %"struct.std::_Vector_base<NOMAD_4_3::StepType, std::allocator<NOMAD_4_3::StepType>>::_Vector_impl" }
%"struct.std::_Vector_base<NOMAD_4_3::StepType, std::allocator<NOMAD_4_3::StepType>>::_Vector_impl" = type { %"struct.std::_Vector_base<NOMAD_4_3::StepType, std::allocator<NOMAD_4_3::StepType>>::_Vector_impl_data" }
%"struct.std::_Vector_base<NOMAD_4_3::StepType, std::allocator<NOMAD_4_3::StepType>>::_Vector_impl_data" = type { ptr, ptr, ptr }
%"class.std::shared_ptr.80" = type { %"class.std::__shared_ptr.81" }
%"class.std::__shared_ptr.81" = type { ptr, %"class.std::__shared_count" }
%"class.std::shared_ptr.115" = type { %"class.std::__shared_ptr.116" }
%"class.std::__shared_ptr.116" = type { ptr, %"class.std::__shared_count" }
%"class.std::shared_ptr" = type { %"class.std::__shared_ptr" }
%"class.std::__shared_ptr" = type { ptr, %"class.std::__shared_count" }
%"struct.std::_Rb_tree_const_iterator" = type { ptr }

@.str.9 = external hidden unnamed_addr constant [103 x i8], align 1
@_ZTIN9NOMAD_4_39ExceptionE = external constant ptr
@_ZTIN9NOMAD_4_34StepE = external constant ptr
@_ZTIN9NOMAD_4_311NMIterationE = external constant ptr
@.str.13 = external hidden unnamed_addr constant [66 x i8], align 1
@.str.14 = external hidden unnamed_addr constant [32 x i8], align 1
@.str.15 = external hidden unnamed_addr constant [73 x i8], align 1
@.str.16 = external hidden unnamed_addr constant [10 x i8], align 1
@.str.17 = external hidden unnamed_addr constant [26 x i8], align 1
@.str.18 = external hidden unnamed_addr constant [56 x i8], align 1
@.str.19 = external hidden unnamed_addr constant [26 x i8], align 1
@.str.20 = external hidden unnamed_addr constant [31 x i8], align 1
@.str.21 = external hidden unnamed_addr constant [24 x i8], align 1
@_ZN9NOMAD_4_3L22DISPLAY_PRECISION_FULLE = external hidden constant i32, align 4
@.str.22 = external hidden unnamed_addr constant [64 x i8], align 1
@.str.23 = external hidden unnamed_addr constant [4 x i8], align 1
@.str.24 = external hidden unnamed_addr constant [53 x i8], align 1
@.str.25 = external hidden unnamed_addr constant [40 x i8], align 1
@.str.26 = external hidden unnamed_addr constant [28 x i8], align 1
@.str.27 = external hidden unnamed_addr constant [15 x i8], align 1
@.str.28 = external hidden unnamed_addr constant [20 x i8], align 1
@.str.29 = external hidden unnamed_addr constant [3 x i8], align 1
@.str.30 = external hidden unnamed_addr constant [12 x i8], align 1
@.str.31 = external hidden unnamed_addr constant [44 x i8], align 1
@.str.32 = external hidden unnamed_addr constant [51 x i8], align 1
@.str.33 = external hidden unnamed_addr constant [24 x i8], align 1
@.str.34 = external hidden unnamed_addr constant [20 x i8], align 1
@.str.35 = external hidden unnamed_addr constant [48 x i8], align 1
@.str.36 = external hidden unnamed_addr constant [31 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 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 ptr @_ZNKSt19__shared_ptr_accessISt3setIN9NOMAD_4_39EvalPointENS1_25NMSimplexEvalPointCompareESaIS2_EELN9__gnu_cxx12_Lock_policyE2ELb0ELb0EEptEv(ptr noundef nonnull align 1 dereferenceable(1)) local_unnamed_addr #1 align 2

; Function Attrs: mustprogress uwtable
define dso_local noundef zeroext i1 @_ZN9NOMAD_4_319NMInitializeSimplex13createSimplexEv(ptr noundef nonnull align 8 dereferenceable(584) %0) local_unnamed_addr #2 align 2 personality ptr @__gxx_personality_v0 {
  %2 = alloca %"class.std::shared_ptr.29", align 8
  %3 = alloca %"class.std::shared_ptr.29", align 8
  %4 = alloca %"class.std::__cxx11::basic_string", align 8
  %5 = alloca %"class.std::allocator", align 1
  %6 = alloca %"class.std::__cxx11::basic_string", align 8
  %7 = alloca %"class.std::allocator", align 1
  %8 = alloca %"class.std::vector.57", align 8
  %9 = alloca %"class.std::shared_ptr.62", align 8
  %10 = alloca %"class.std::shared_ptr.65", align 8
  %11 = alloca %"class.std::vector.57", align 8
  %12 = alloca %"class.std::shared_ptr.62", align 8
  %13 = alloca %"class.std::__cxx11::basic_string", align 8
  %14 = alloca %"class.std::allocator", align 1
  %15 = alloca %"class.std::__cxx11::basic_string", align 8
  %16 = alloca %"class.std::allocator", align 1
  %17 = alloca %"class.std::__cxx11::basic_string", align 8
  %18 = alloca %"class.std::allocator", align 1
  %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::allocator", align 1
  %23 = alloca %"class.NOMAD_4_3::Double", align 8
  %24 = alloca %"class.std::__cxx11::basic_string", align 8
  %25 = alloca %"class.std::allocator", align 1
  %26 = alloca %"class.NOMAD_4_3::ArrayOfDouble", align 8
  %27 = alloca %"class.NOMAD_4_3::OutputInfo", align 8
  %28 = alloca %"class.std::__cxx11::basic_string", align 8
  %29 = alloca %"class.std::__cxx11::basic_string", align 8
  %30 = alloca %"class.std::allocator", align 1
  %31 = alloca %"class.std::shared_ptr.83", align 8
  %32 = alloca %"class.std::__cxx11::basic_string", align 8
  %33 = alloca %"class.std::allocator", align 1
  %34 = alloca %"class.NOMAD_4_3::ArrayOfDouble", align 8
  %35 = alloca %"class.std::__cxx11::basic_string", align 8
  %36 = alloca %"class.std::allocator", align 1
  %37 = alloca %"class.std::__cxx11::basic_string", align 8
  %38 = alloca %"class.std::allocator", align 1
  %39 = alloca %"class.NOMAD_4_3::Double", align 8
  %40 = alloca double, align 8
  %41 = alloca i32, align 4
  %42 = alloca %"class.std::__cxx11::basic_string", align 8
  %43 = alloca %"class.std::__cxx11::basic_string", align 8
  %44 = alloca %"class.NOMAD_4_3::ArrayOfDouble", align 8
  %45 = alloca %"class.NOMAD_4_3::Double", align 8
  %46 = alloca %"class.std::__cxx11::basic_string", align 8
  %47 = alloca %"class.std::set.26", align 8
  %48 = alloca %"class.std::shared_ptr.29", align 8
  %49 = alloca %"class.NOMAD_4_3::CacheInterface", align 8
  %50 = alloca %"class.std::vector.57", align 8
  %51 = alloca %"class.__gnu_cxx::__normal_iterator", align 8
  %52 = alloca %"class.__gnu_cxx::__normal_iterator", align 8
  %53 = alloca %"class.NOMAD_4_3::EvalPoint", align 8
  %54 = alloca i32, align 4
  %55 = alloca %"class.std::__cxx11::basic_string", align 8
  %56 = alloca %"class.NOMAD_4_3::ArrayOfDouble", align 8
  %57 = alloca %"class.NOMAD_4_3::Double", align 8
  %58 = alloca %"class.NOMAD_4_3::Double", align 8
  %59 = alloca %"class.NOMAD_4_3::Double", align 8
  %60 = alloca %"class.NOMAD_4_3::EvalPoint", align 8
  %61 = alloca i32, align 4
  %62 = alloca %"class.std::__cxx11::basic_string", align 8
  %63 = alloca %"class.std::__cxx11::basic_string", align 8
  %64 = alloca %"class.NOMAD_4_3::ArrayOfDouble", align 8
  %65 = alloca %"class.NOMAD_4_3::Double", align 8
  %66 = alloca i32, align 4
  %67 = alloca %"class.std::__cxx11::basic_string", align 8
  %68 = alloca %"class.NOMAD_4_3::ArrayOfDouble", align 8
  %69 = alloca %"class.NOMAD_4_3::Double", align 8
  %70 = alloca %"class.std::allocator", align 1
  %71 = alloca i32, align 4
  %72 = alloca %"class.NOMAD_4_3::OutputInfo", align 8
  %73 = alloca i32, align 4
  %74 = alloca %"class.std::__cxx11::basic_string", align 8
  %75 = alloca %"class.std::__cxx11::basic_string", align 8
  %76 = alloca %"class.std::shared_ptr.115", align 8
  %77 = alloca %"class.std::shared_ptr", align 8
  %78 = alloca i32, align 4
  %79 = alloca %"class.std::__cxx11::basic_string", align 8
  %80 = alloca %"class.std::allocator", align 1
  %81 = alloca %"struct.std::_Rb_tree_const_iterator", align 8
  %82 = alloca %"class.NOMAD_4_3::OutputInfo", align 8
  %83 = alloca %"class.std::__cxx11::basic_string", align 8
  %84 = alloca %"class.std::__cxx11::basic_string", align 8
  %85 = alloca %"class.std::allocator", align 1
  %86 = alloca i32, align 4
  %87 = alloca %"class.std::__cxx11::basic_string", align 8
  %88 = alloca %"class.std::__cxx11::basic_string", align 8
  %89 = alloca %"class.NOMAD_4_3::ArrayOfDouble", align 8
  %90 = alloca %"class.NOMAD_4_3::Double", align 8
  %91 = alloca %"class.std::__cxx11::basic_string", align 8
  %92 = alloca %"class.std::allocator", align 1
  %93 = alloca %"class.NOMAD_4_3::Double", align 8
  %94 = alloca %"struct.std::_Rb_tree_const_iterator", align 8
  %95 = alloca i32, align 4
  %96 = alloca %"class.std::__cxx11::basic_string", align 8
  %97 = alloca %"class.std::__cxx11::basic_string", align 8
  %98 = alloca %"class.std::__cxx11::basic_string", align 8
  %99 = alloca %"class.std::__cxx11::basic_string", align 8
  %100 = alloca %"class.std::__cxx11::basic_string", align 8
  %101 = alloca %"class.NOMAD_4_3::ArrayOfDouble", align 8
  %102 = alloca %"class.NOMAD_4_3::Double", align 8
  %103 = alloca i32, align 4
  %104 = alloca %"class.std::__cxx11::basic_string", align 8
  %105 = alloca %"class.std::allocator", align 1
  %106 = alloca i32, align 4
  %107 = alloca %"class.std::__cxx11::basic_string", align 8
  %108 = alloca %"class.std::allocator", align 1
  %109 = alloca i32, align 4
  %110 = alloca %"class.std::__cxx11::basic_string", align 8
  %111 = alloca %"class.std::allocator", align 1
  %112 = alloca i32, align 4
  %113 = alloca %"class.std::__cxx11::basic_string", align 8
  %114 = alloca %"class.std::allocator", align 1
  %115 = alloca i32, align 4
  %116 = alloca %"class.NOMAD_4_3::OutputInfo", align 8
  %117 = alloca i32, align 4
  %118 = alloca %"class.std::__cxx11::basic_string", align 8
  %119 = alloca %"class.std::allocator", align 1
  %120 = alloca i32, align 4
  %121 = alloca %"class.std::__cxx11::basic_string", align 8
  %122 = alloca %"class.std::allocator", align 1
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %2) #8
  call void @_ZN9NOMAD_4_312EvcInterface19getEvaluatorControlEv(ptr dead_on_unwind nonnull writable sret(%"class.std::shared_ptr.29") align 8 %2)
  %123 = call noundef ptr @_ZNKSt19__shared_ptr_accessIN9NOMAD_4_316EvaluatorControlELN9__gnu_cxx12_Lock_policyE2ELb0ELb0EEptEv(ptr noundef nonnull align 1 dereferenceable(1) %2) #8
  %124 = invoke noundef i32 @_ZNK9NOMAD_4_316EvaluatorControl18getCurrentEvalTypeEi(ptr noundef nonnull align 8 dereferenceable(352) %123, i32 noundef -1)
          to label %125 unwind label %133

125:                                              ; preds = %1
  call void @_ZNSt12__shared_ptrIN9NOMAD_4_316EvaluatorControlELN9__gnu_cxx12_Lock_policyE2EED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %2) #8
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %2) #8
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %3) #8
  call void @_ZN9NOMAD_4_312EvcInterface19getEvaluatorControlEv(ptr dead_on_unwind nonnull writable sret(%"class.std::shared_ptr.29") align 8 %3)
  %126 = call noundef ptr @_ZNKSt19__shared_ptr_accessIN9NOMAD_4_316EvaluatorControlELN9__gnu_cxx12_Lock_policyE2ELb0ELb0EEptEv(ptr noundef nonnull align 1 dereferenceable(1) %3) #8
  %127 = invoke noundef nonnull align 4 dereferenceable(4) ptr @_ZNK9NOMAD_4_316EvaluatorControl14getComputeTypeEi(ptr noundef nonnull align 8 dereferenceable(352) %126, i32 noundef -1)
          to label %128 unwind label %135

128:                                              ; preds = %125
  %129 = load i32, ptr %127, align 4, !tbaa !5
  call void @_ZNSt12__shared_ptrIN9NOMAD_4_316EvaluatorControlELN9__gnu_cxx12_Lock_policyE2EED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %3) #8
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %3) #8
  %130 = getelementptr inbounds i8, ptr %0, i64 8
  %131 = load ptr, ptr %130, align 8, !tbaa !9
  %132 = icmp eq ptr %131, null
  br i1 %132, label %.thread, label %137

133:                                              ; preds = %1
  %134 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt12__shared_ptrIN9NOMAD_4_316EvaluatorControlELN9__gnu_cxx12_Lock_policyE2EED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %2) #8
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %2) #8
  br label %809

135:                                              ; preds = %125
  %136 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt12__shared_ptrIN9NOMAD_4_316EvaluatorControlELN9__gnu_cxx12_Lock_policyE2EED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %3) #8
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %3) #8
  br label %809

137:                                              ; preds = %128
  %138 = call ptr @__dynamic_cast(ptr nonnull %131, ptr nonnull @_ZTIN9NOMAD_4_34StepE, ptr nonnull @_ZTIN9NOMAD_4_311NMIterationE, i64 0) #8
  %139 = icmp eq ptr %138, null
  br i1 %139, label %.thread, label %151

.thread:                                          ; preds = %128, %137
  %140 = call ptr @__cxa_allocate_exception(i64 112) #8
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %4) #8
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %5) #8
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %5) #8
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %4, ptr noundef nonnull @.str.9, ptr noundef nonnull align 1 dereferenceable(1) %5)
          to label %141 unwind label %.thread359

141:                                              ; preds = %.thread
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %6) #8
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %7) #8
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %7) #8
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %6, ptr noundef nonnull @.str.13, ptr noundef nonnull align 1 dereferenceable(1) %7)
          to label %142 unwind label %145

142:                                              ; preds = %141
  invoke void @_ZN9NOMAD_4_39ExceptionC2ERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEmS8_(ptr noundef nonnull align 8 dereferenceable(112) %140, ptr noundef nonnull align 8 dereferenceable(32) %4, i64 noundef 99, ptr noundef nonnull align 8 dereferenceable(32) %6)
          to label %143 unwind label %147

143:                                              ; preds = %142
  invoke void @__cxa_throw(ptr nonnull %140, ptr nonnull @_ZTIN9NOMAD_4_39ExceptionE, ptr nonnull @_ZN9NOMAD_4_39ExceptionD2Ev) #9
          to label %810 unwind label %147

.thread359:                                       ; preds = %.thread
  %144 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %5) #8
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %5) #8
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %4) #8
  br label %150

145:                                              ; preds = %141
  %146 = landingpad { ptr, i32 }
          cleanup
  br label %149

147:                                              ; preds = %143, %142
  %.0173 = phi i1 [ false, %143 ], [ true, %142 ]
  %148 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %6) #8
  br label %149

149:                                              ; preds = %145, %147
  %.1174 = phi i1 [ %.0173, %147 ], [ true, %145 ]
  %.pn341 = phi { ptr, i32 } [ %148, %147 ], [ %146, %145 ]
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %7) #8
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %7) #8
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %6) #8
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %4) #8
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %5) #8
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %5) #8
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %4) #8
  br i1 %.1174, label %150, label %809

150:                                              ; preds = %.thread359, %149
  %.pn341.pn362 = phi { ptr, i32 } [ %144, %.thread359 ], [ %.pn341, %149 ]
  call void @__cxa_free_exception(ptr %140) #8
  br label %809

151:                                              ; preds = %137
  call void @llvm.lifetime.start.p0(i64 24, ptr nonnull %8) #8
  call void @_ZNSt6vectorIN9NOMAD_4_39EvalPointESaIS1_EEC2Ev(ptr noundef nonnull align 8 dereferenceable(24) %8) #8
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %9) #8
  call void @_ZNSt10shared_ptrIN9NOMAD_4_39EvalPointEEC2EDn(ptr noundef nonnull align 8 dereferenceable(16) %9, ptr null) #8
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %10) #8
  invoke void @_ZNK9NOMAD_4_34Step23getMegaIterationBarrierEv(ptr dead_on_unwind nonnull writable sret(%"class.std::shared_ptr.65") align 8 %10, ptr noundef nonnull align 8 dereferenceable(140) %0)
          to label %152 unwind label %161

152:                                              ; preds = %151
  %153 = call noundef zeroext i1 @_ZStneIN9NOMAD_4_311BarrierBaseEEbDnRKSt10shared_ptrIT_E(ptr null, ptr noundef nonnull align 8 dereferenceable(16) %10) #8
  br i1 %153, label %154, label %167

154:                                              ; preds = %152
  call void @llvm.lifetime.start.p0(i64 24, ptr nonnull %11) #8
  %155 = call noundef ptr @_ZNKSt19__shared_ptr_accessIN9NOMAD_4_311BarrierBaseELN9__gnu_cxx12_Lock_policyE2ELb0ELb0EEptEv(ptr noundef nonnull align 1 dereferenceable(1) %10) #8
  invoke void @_ZNK9NOMAD_4_311BarrierBase12getAllPointsEv(ptr dead_on_unwind nonnull writable sret(%"class.std::vector.57") align 8 %11, ptr noundef nonnull align 8 dereferenceable(120) %155)
          to label %156 unwind label %163

156:                                              ; preds = %154
  %157 = call noundef nonnull align 8 dereferenceable(24) ptr @_ZNSt6vectorIN9NOMAD_4_39EvalPointESaIS1_EEaSEOS3_(ptr noundef nonnull align 8 dereferenceable(24) %8, ptr noundef nonnull align 8 dereferenceable(24) %11) #8
  call void @_ZNSt6vectorIN9NOMAD_4_39EvalPointESaIS1_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %11) #8
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %11) #8
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %12) #8
  %158 = call noundef nonnull align 8 dereferenceable(160) ptr @_ZNSt6vectorIN9NOMAD_4_39EvalPointESaIS1_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %8, i64 noundef 0) #8
  invoke void @_ZSt11make_sharedIN9NOMAD_4_39EvalPointEJRS1_EESt10shared_ptrINSt9enable_ifIXntsr8is_arrayIT_EE5valueES5_E4typeEEDpOT0_(ptr dead_on_unwind nonnull writable sret(%"class.std::shared_ptr.62") align 8 %12, ptr noundef nonnull align 8 dereferenceable(160) %158)
          to label %159 unwind label %165

159:                                              ; preds = %156
  %160 = call noundef nonnull align 8 dereferenceable(16) ptr @_ZNSt10shared_ptrIN9NOMAD_4_39EvalPointEEaSEOS2_(ptr noundef nonnull align 8 dereferenceable(16) %9, ptr noundef nonnull align 8 dereferenceable(16) %12) #8
  call void @_ZNSt12__shared_ptrIN9NOMAD_4_39EvalPointELN9__gnu_cxx12_Lock_policyE2EED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %12) #8
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %12) #8
  br label %167

161:                                              ; preds = %151
  %162 = landingpad { ptr, i32 }
          cleanup
  br label %808

163:                                              ; preds = %154
  %164 = landingpad { ptr, i32 }
          cleanup
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %11) #8
  br label %807

165:                                              ; preds = %156
  %166 = landingpad { ptr, i32 }
          cleanup
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %12) #8
  br label %807

167:                                              ; preds = %159, %152
  %168 = call noundef zeroext i1 @_ZSteqIN9NOMAD_4_39EvalPointEEbDnRKSt10shared_ptrIT_E(ptr null, ptr noundef nonnull align 8 dereferenceable(16) %9) #8
  br i1 %168, label %169, label %181

169:                                              ; preds = %167
  %170 = call ptr @__cxa_allocate_exception(i64 112) #8
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %13) #8
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %14) #8
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %14) #8
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %13, ptr noundef nonnull @.str.9, ptr noundef nonnull align 1 dereferenceable(1) %14)
          to label %171 unwind label %.thread363

171:                                              ; preds = %169
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %15) #8
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %16) #8
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %16) #8
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %15, ptr noundef nonnull @.str.14, ptr noundef nonnull align 1 dereferenceable(1) %16)
          to label %172 unwind label %175

172:                                              ; preds = %171
  invoke void @_ZN9NOMAD_4_39ExceptionC2ERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEmS8_(ptr noundef nonnull align 8 dereferenceable(112) %170, ptr noundef nonnull align 8 dereferenceable(32) %13, i64 noundef 112, ptr noundef nonnull align 8 dereferenceable(32) %15)
          to label %173 unwind label %177

173:                                              ; preds = %172
  invoke void @__cxa_throw(ptr nonnull %170, ptr nonnull @_ZTIN9NOMAD_4_39ExceptionE, ptr nonnull @_ZN9NOMAD_4_39ExceptionD2Ev) #9
          to label %810 unwind label %177

.thread363:                                       ; preds = %169
  %174 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %14) #8
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %14) #8
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %13) #8
  br label %180

175:                                              ; preds = %171
  %176 = landingpad { ptr, i32 }
          cleanup
  br label %179

177:                                              ; preds = %173, %172
  %.0176 = phi i1 [ false, %173 ], [ true, %172 ]
  %178 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %15) #8
  br label %179

179:                                              ; preds = %175, %177
  %.1177 = phi i1 [ %.0176, %177 ], [ true, %175 ]
  %.pn336 = phi { ptr, i32 } [ %178, %177 ], [ %176, %175 ]
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %16) #8
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %16) #8
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %15) #8
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %13) #8
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %14) #8
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %14) #8
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %13) #8
  br i1 %.1177, label %180, label %807

180:                                              ; preds = %.thread363, %179
  %.pn336.pn366 = phi { ptr, i32 } [ %174, %.thread363 ], [ %.pn336, %179 ]
  call void @__cxa_free_exception(ptr %170) #8
  br label %807

181:                                              ; preds = %167
  %182 = call noundef ptr @_ZNKSt19__shared_ptr_accessIN9NOMAD_4_39EvalPointELN9__gnu_cxx12_Lock_policyE2ELb0ELb0EEptEv(ptr noundef nonnull align 1 dereferenceable(1) %9) #8
  %183 = invoke noundef ptr @_ZNK9NOMAD_4_39EvalPoint7getEvalENS_8EvalTypeE(ptr noundef nonnull align 8 dereferenceable(160) %182, i32 noundef %124)
          to label %184 unwind label %191

184:                                              ; preds = %181
  %185 = call noundef zeroext i1 @_ZNK9NOMAD_4_34Eval18isBBOutputCompleteEv(ptr noundef nonnull align 8 dereferenceable(105) %183)
  br i1 %185, label %200, label %186

186:                                              ; preds = %184
  %187 = call ptr @__cxa_allocate_exception(i64 112) #8
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %17) #8
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %18) #8
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %18) #8
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %17, ptr noundef nonnull @.str.9, ptr noundef nonnull align 1 dereferenceable(1) %18)
          to label %188 unwind label %.thread367

188:                                              ; preds = %186
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %19) #8
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %20) #8
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %20) #8
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %19, ptr noundef nonnull @.str.15, ptr noundef nonnull align 1 dereferenceable(1) %20)
          to label %189 unwind label %194

189:                                              ; preds = %188
  invoke void @_ZN9NOMAD_4_39ExceptionC2ERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEmS8_(ptr noundef nonnull align 8 dereferenceable(112) %187, ptr noundef nonnull align 8 dereferenceable(32) %17, i64 noundef 116, ptr noundef nonnull align 8 dereferenceable(32) %19)
          to label %190 unwind label %196

190:                                              ; preds = %189
  invoke void @__cxa_throw(ptr nonnull %187, ptr nonnull @_ZTIN9NOMAD_4_39ExceptionE, ptr nonnull @_ZN9NOMAD_4_39ExceptionD2Ev) #9
          to label %810 unwind label %196

191:                                              ; preds = %181
  %192 = landingpad { ptr, i32 }
          cleanup
  br label %807

.thread367:                                       ; preds = %186
  %193 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %18) #8
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %18) #8
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %17) #8
  br label %199

194:                                              ; preds = %188
  %195 = landingpad { ptr, i32 }
          cleanup
  br label %198

196:                                              ; preds = %190, %189
  %.0179 = phi i1 [ false, %190 ], [ true, %189 ]
  %197 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %19) #8
  br label %198

198:                                              ; preds = %194, %196
  %.1180 = phi i1 [ %.0179, %196 ], [ true, %194 ]
  %.pn = phi { ptr, i32 } [ %197, %196 ], [ %195, %194 ]
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %20) #8
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %20) #8
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %19) #8
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %17) #8
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %18) #8
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %18) #8
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %17) #8
  br i1 %.1180, label %199, label %807

199:                                              ; preds = %.thread367, %198
  %.pn.pn370 = phi { ptr, i32 } [ %193, %.thread367 ], [ %.pn, %198 ]
  call void @__cxa_free_exception(ptr %187) #8
  br label %807

200:                                              ; preds = %184
  %201 = getelementptr inbounds i8, ptr %0, i64 144
  %202 = getelementptr inbounds i8, ptr %0, i64 568
  %203 = call noundef ptr @_ZNKSt19__shared_ptr_accessISt3setIN9NOMAD_4_39EvalPointENS1_25NMSimplexEvalPointCompareESaIS2_EELN9__gnu_cxx12_Lock_policyE2ELb0ELb0EEptEv(ptr noundef nonnull align 1 dereferenceable(1) %202) #8
  call void @_ZNSt3setIN9NOMAD_4_39EvalPointENS0_25NMSimplexEvalPointCompareESaIS1_EE5clearEv(ptr noundef nonnull align 8 dereferenceable(48) %203) #8
  %204 = getelementptr inbounds i8, ptr %0, i64 56
  %205 = call noundef ptr @_ZNKSt19__shared_ptr_accessIN9NOMAD_4_312PbParametersELN9__gnu_cxx12_Lock_policyE2ELb0ELb0EEptEv(ptr noundef nonnull align 1 dereferenceable(1) %204) #8
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %21) #8
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %22) #8
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %22) #8
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %21, ptr noundef nonnull @.str.16, ptr noundef nonnull align 1 dereferenceable(1) %22)
          to label %206 unwind label %251

206:                                              ; preds = %200
  %207 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNK9NOMAD_4_310Parameters17getAttributeValueImEERKT_RKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEb(ptr noundef nonnull align 8 dereferenceable(496) %205, ptr noundef nonnull align 8 dereferenceable(32) %21, i1 noundef zeroext false)
          to label %208 unwind label %253

208:                                              ; preds = %206
  %209 = load i64, ptr %207, align 8, !tbaa !31
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %21) #8
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %22) #8
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %22) #8
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %21) #8
  %210 = add i64 %209, 1
  call void @llvm.lifetime.start.p0(i64 24, ptr nonnull %23) #8
  %211 = getelementptr inbounds i8, ptr %0, i64 40
  %212 = call noundef ptr @_ZNKSt19__shared_ptr_accessIN9NOMAD_4_313RunParametersELN9__gnu_cxx12_Lock_policyE2ELb0ELb0EEptEv(ptr noundef nonnull align 1 dereferenceable(1) %211) #8
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %24) #8
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %25) #8
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %25) #8
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %24, ptr noundef nonnull @.str.17, ptr noundef nonnull align 1 dereferenceable(1) %25)
          to label %213 unwind label %256

213:                                              ; preds = %208
  %214 = invoke noundef nonnull align 8 dereferenceable(17) ptr @_ZNK9NOMAD_4_310Parameters17getAttributeValueINS_6DoubleEEERKT_RKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEb(ptr noundef nonnull align 8 dereferenceable(496) %212, ptr noundef nonnull align 8 dereferenceable(32) %24, i1 noundef zeroext false)
          to label %215 unwind label %258

215:                                              ; preds = %213
  invoke void @_ZN9NOMAD_4_36DoubleC1ERKS0_(ptr noundef nonnull align 8 dereferenceable(17) %23, ptr noundef nonnull align 8 dereferenceable(17) %214)
          to label %216 unwind label %258

216:                                              ; preds = %215
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %24) #8
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %25) #8
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %25) #8
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %24) #8
  call void @llvm.lifetime.start.p0(i64 24, ptr nonnull %26) #8
  invoke void @_ZN9NOMAD_4_313ArrayOfDoubleC1EmRKNS_6DoubleE(ptr noundef nonnull align 8 dereferenceable(24) %26, i64 noundef %209, ptr noundef nonnull align 8 dereferenceable(17) %23)
          to label %217 unwind label %261

217:                                              ; preds = %216
  call void @llvm.lifetime.start.p0(i64 80, ptr nonnull %27) #8
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %28) #8
  %218 = load ptr, ptr %0, align 8, !tbaa !32
  %219 = getelementptr inbounds i8, ptr %218, i64 16
  %220 = load ptr, ptr %219, align 8
  invoke void %220(ptr dead_on_unwind nonnull writable sret(%"class.std::__cxx11::basic_string") align 8 %28, ptr noundef nonnull align 8 dereferenceable(140) %0)
          to label %221 unwind label %263

221:                                              ; preds = %217
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %29) #8
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %30) #8
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %30) #8
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %29, ptr noundef nonnull @.str.18, ptr noundef nonnull align 1 dereferenceable(1) %30)
          to label %222 unwind label %265

222:                                              ; preds = %221
  invoke void @_ZN9NOMAD_4_310OutputInfoC2ERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEES8_NS_11OutputLevelEbb(ptr noundef nonnull align 8 dereferenceable(80) %27, ptr noundef nonnull align 8 dereferenceable(32) %28, ptr noundef nonnull align 8 dereferenceable(32) %29, i32 noundef 9, i1 noundef zeroext false, i1 noundef zeroext false)
          to label %223 unwind label %267

223:                                              ; preds = %222
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %29) #8
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %30) #8
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %30) #8
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %29) #8
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %28) #8
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %28) #8
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %31) #8
  %224 = load ptr, ptr %138, align 8, !tbaa !32
  %225 = getelementptr inbounds i8, ptr %224, i64 80
  %226 = load ptr, ptr %225, align 8
  invoke void %226(ptr dead_on_unwind nonnull writable sret(%"class.std::shared_ptr.83") align 8 %31, ptr noundef nonnull align 8 dereferenceable(200) %138)
          to label %227 unwind label %271

227:                                              ; preds = %223
  %228 = call noundef ptr @_ZNKSt19__shared_ptr_accessIN9NOMAD_4_313RunParametersELN9__gnu_cxx12_Lock_policyE2ELb0ELb0EEptEv(ptr noundef nonnull align 1 dereferenceable(1) %211) #8
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %32) #8
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %33) #8
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %33) #8
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %32, ptr noundef nonnull @.str.19, ptr noundef nonnull align 1 dereferenceable(1) %33)
          to label %229 unwind label %273

229:                                              ; preds = %227
  %230 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNK9NOMAD_4_310Parameters17getAttributeValueImEERKT_RKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEb(ptr noundef nonnull align 8 dereferenceable(496) %228, ptr noundef nonnull align 8 dereferenceable(32) %32, i1 noundef zeroext false)
          to label %231 unwind label %275

231:                                              ; preds = %229
  %232 = load i64, ptr %230, align 8, !tbaa !31
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %32) #8
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %33) #8
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %33) #8
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %32) #8
  %233 = call noundef zeroext i1 @_ZStneIN9NOMAD_4_38MeshBaseEEbRKSt10shared_ptrIT_EDn(ptr noundef nonnull align 8 dereferenceable(16) %31, ptr null) #8
  %234 = add i64 %232, -1
  %235 = icmp ult i64 %234, -2
  %or.cond3 = select i1 %233, i1 %235, i1 false
  br i1 %or.cond3, label %236, label %326

236:                                              ; preds = %231
  call void @llvm.lifetime.start.p0(i64 24, ptr nonnull %34) #8
  %237 = call noundef ptr @_ZNKSt19__shared_ptr_accessIN9NOMAD_4_38MeshBaseELN9__gnu_cxx12_Lock_policyE2ELb0ELb0EEptEv(ptr noundef nonnull align 1 dereferenceable(1) %31) #8
  %238 = load ptr, ptr %237, align 8, !tbaa !32
  %239 = getelementptr inbounds i8, ptr %238, i64 112
  %240 = load ptr, ptr %239, align 8
  invoke void %240(ptr dead_on_unwind nonnull writable sret(%"class.NOMAD_4_3::ArrayOfDouble") align 8 %34, ptr noundef nonnull align 8 dereferenceable(257) %237)
          to label %241 unwind label %278

241:                                              ; preds = %236
  %242 = invoke noundef nonnull align 8 dereferenceable(24) ptr @_ZN9NOMAD_4_313ArrayOfDoubleaSERKS0_(ptr noundef nonnull align 8 dereferenceable(24) %26, ptr noundef nonnull align 8 dereferenceable(24) %34)
          to label %243 unwind label %280

243:                                              ; preds = %241
  call void @_ZN9NOMAD_4_313ArrayOfDoubleD1Ev(ptr noundef nonnull align 8 dereferenceable(24) %34) #8
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %34) #8
  %244 = invoke noundef zeroext i1 @_ZNK9NOMAD_4_313ArrayOfDouble9isDefinedEv(ptr noundef nonnull align 8 dereferenceable(24) %26)
          to label %245 unwind label %283

245:                                              ; preds = %243
  br i1 %244, label %292, label %246

246:                                              ; preds = %245
  %247 = call ptr @__cxa_allocate_exception(i64 112) #8
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %35) #8
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %36) #8
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %36) #8
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %35, ptr noundef nonnull @.str.9, ptr noundef nonnull align 1 dereferenceable(1) %36)
          to label %248 unwind label %.thread371

248:                                              ; preds = %246
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %37) #8
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %38) #8
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %38) #8
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %37, ptr noundef nonnull @.str.20, ptr noundef nonnull align 1 dereferenceable(1) %38)
          to label %249 unwind label %286

249:                                              ; preds = %248
  invoke void @_ZN9NOMAD_4_39ExceptionC2ERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEmS8_(ptr noundef nonnull align 8 dereferenceable(112) %247, ptr noundef nonnull align 8 dereferenceable(32) %35, i64 noundef 144, ptr noundef nonnull align 8 dereferenceable(32) %37)
          to label %250 unwind label %288

250:                                              ; preds = %249
  invoke void @__cxa_throw(ptr nonnull %247, ptr nonnull @_ZTIN9NOMAD_4_39ExceptionE, ptr nonnull @_ZN9NOMAD_4_39ExceptionD2Ev) #9
          to label %810 unwind label %288

251:                                              ; preds = %200
  %252 = landingpad { ptr, i32 }
          cleanup
  br label %255

253:                                              ; preds = %206
  %254 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %21) #8
  br label %255

255:                                              ; preds = %253, %251
  %.pn236 = phi { ptr, i32 } [ %254, %253 ], [ %252, %251 ]
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %22) #8
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %22) #8
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %21) #8
  br label %807

256:                                              ; preds = %208
  %257 = landingpad { ptr, i32 }
          cleanup
  br label %260

258:                                              ; preds = %215, %213
  %259 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %24) #8
  br label %260

260:                                              ; preds = %258, %256
  %.pn238 = phi { ptr, i32 } [ %259, %258 ], [ %257, %256 ]
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %25) #8
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %25) #8
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %24) #8
  br label %806

261:                                              ; preds = %216
  %262 = landingpad { ptr, i32 }
          cleanup
  br label %805

263:                                              ; preds = %217
  %264 = landingpad { ptr, i32 }
          cleanup
  br label %270

265:                                              ; preds = %221
  %266 = landingpad { ptr, i32 }
          cleanup
  br label %269

267:                                              ; preds = %222
  %268 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %29) #8
  br label %269

269:                                              ; preds = %267, %265
  %.pn240 = phi { ptr, i32 } [ %268, %267 ], [ %266, %265 ]
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %30) #8
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %30) #8
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %29) #8
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %28) #8
  br label %270

270:                                              ; preds = %269, %263
  %.pn240.pn = phi { ptr, i32 } [ %.pn240, %269 ], [ %264, %263 ]
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %28) #8
  br label %804

271:                                              ; preds = %223
  %272 = landingpad { ptr, i32 }
          cleanup
  br label %803

273:                                              ; preds = %227
  %274 = landingpad { ptr, i32 }
          cleanup
  br label %277

275:                                              ; preds = %229
  %276 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %32) #8
  br label %277

277:                                              ; preds = %275, %273
  %.pn243 = phi { ptr, i32 } [ %276, %275 ], [ %274, %273 ]
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %33) #8
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %33) #8
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %32) #8
  br label %802

278:                                              ; preds = %236
  %279 = landingpad { ptr, i32 }
          cleanup
  br label %282

280:                                              ; preds = %241
  %281 = landingpad { ptr, i32 }
          cleanup
  call void @_ZN9NOMAD_4_313ArrayOfDoubleD1Ev(ptr noundef nonnull align 8 dereferenceable(24) %34) #8
  br label %282

282:                                              ; preds = %280, %278
  %.pn245 = phi { ptr, i32 } [ %281, %280 ], [ %279, %278 ]
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %34) #8
  br label %802

283:                                              ; preds = %243
  %284 = landingpad { ptr, i32 }
          cleanup
  br label %802

.thread371:                                       ; preds = %246
  %285 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %36) #8
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %36) #8
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %35) #8
  br label %291

286:                                              ; preds = %248
  %287 = landingpad { ptr, i32 }
          cleanup
  br label %290

288:                                              ; preds = %250, %249
  %.0182 = phi i1 [ false, %250 ], [ true, %249 ]
  %289 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %37) #8
  br label %290

290:                                              ; preds = %286, %288
  %.1183 = phi i1 [ %.0182, %288 ], [ true, %286 ]
  %.pn247 = phi { ptr, i32 } [ %289, %288 ], [ %287, %286 ]
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %38) #8
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %38) #8
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %37) #8
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %35) #8
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %36) #8
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %36) #8
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %35) #8
  br i1 %.1183, label %291, label %802

291:                                              ; preds = %.thread371, %290
  %.pn247.pn374 = phi { ptr, i32 } [ %285, %.thread371 ], [ %.pn247, %290 ]
  call void @__cxa_free_exception(ptr %247) #8
  br label %802

292:                                              ; preds = %245
  call void @llvm.lifetime.start.p0(i64 24, ptr nonnull %39) #8
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %40) #8
  %293 = uitofp i64 %232 to double
  store double %293, ptr %40, align 8, !tbaa !34
  invoke void @_ZN9NOMAD_4_36DoubleC1ERKd(ptr noundef nonnull align 8 dereferenceable(17) %39, ptr noundef nonnull align 8 dereferenceable(8) %40)
          to label %294 unwind label %305

294:                                              ; preds = %292
  %295 = invoke noundef nonnull align 8 dereferenceable(24) ptr @_ZN9NOMAD_4_313ArrayOfDoublemLERKNS_6DoubleE(ptr noundef nonnull align 8 dereferenceable(24) %26, ptr noundef nonnull align 8 dereferenceable(17) %39)
          to label %296 unwind label %307

296:                                              ; preds = %294
  call void @_ZN9NOMAD_4_36DoubleD1Ev(ptr noundef nonnull align 8 dereferenceable(17) %39) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %40) #8
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %39) #8
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %41) #8
  store i32 9, ptr %41, align 4, !tbaa !36
  %297 = invoke noundef zeroext i1 @_ZN9NOMAD_4_311OutputQueue9GoodLevelERKNS_11OutputLevelE(ptr noundef nonnull align 4 dereferenceable(4) %41)
          to label %298 unwind label %310

298:                                              ; preds = %296
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %41) #8
  br i1 %297, label %299, label %326

299:                                              ; preds = %298
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %42) #8
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %43) #8
  call void @llvm.lifetime.start.p0(i64 24, ptr nonnull %44) #8
  call void @llvm.lifetime.start.p0(i64 24, ptr nonnull %45) #8
  invoke void @_ZN9NOMAD_4_36DoubleC1Ev(ptr noundef nonnull align 8 dereferenceable(17) %45)
          to label %300 unwind label %312

300:                                              ; preds = %299
  invoke void @_ZN9NOMAD_4_313ArrayOfDoubleC1EmRKNS_6DoubleE(ptr noundef nonnull align 8 dereferenceable(24) %44, i64 noundef 0, ptr noundef nonnull align 8 dereferenceable(17) %45)
          to label %301 unwind label %314

301:                                              ; preds = %300
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %46) #8
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2Ev(ptr noundef nonnull align 8 dereferenceable(32) %46) #8
  invoke void @_ZNK9NOMAD_4_313ArrayOfDouble7displayERKS0_RKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE(ptr dead_on_unwind nonnull writable sret(%"class.std::__cxx11::basic_string") align 8 %43, ptr noundef nonnull align 8 dereferenceable(24) %26, ptr noundef nonnull align 8 dereferenceable(24) %44, ptr noundef nonnull align 8 dereferenceable(32) %46)
          to label %302 unwind label %316

302:                                              ; preds = %301
  invoke void @_ZStplIcSt11char_traitsIcESaIcEENSt7__cxx1112basic_stringIT_T0_T1_EEPKS5_OS8_(ptr dead_on_unwind nonnull writable sret(%"class.std::__cxx11::basic_string") align 8 %42, ptr noundef nonnull @.str.21, ptr noundef nonnull align 8 dereferenceable(32) %43)
          to label %303 unwind label %318

303:                                              ; preds = %302
  invoke void @_ZN9NOMAD_4_310OutputInfo6addMsgERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE(ptr noundef nonnull align 8 dereferenceable(80) %27, ptr noundef nonnull align 8 dereferenceable(32) %42)
          to label %304 unwind label %320

304:                                              ; preds = %303
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %42) #8
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %43) #8
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %46) #8
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %46) #8
  call void @_ZN9NOMAD_4_313ArrayOfDoubleD1Ev(ptr noundef nonnull align 8 dereferenceable(24) %44) #8
  call void @_ZN9NOMAD_4_36DoubleD1Ev(ptr noundef nonnull align 8 dereferenceable(17) %45) #8
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %45) #8
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %44) #8
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %43) #8
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %42) #8
  br label %326

305:                                              ; preds = %292
  %306 = landingpad { ptr, i32 }
          cleanup
  br label %309

307:                                              ; preds = %294
  %308 = landingpad { ptr, i32 }
          cleanup
  call void @_ZN9NOMAD_4_36DoubleD1Ev(ptr noundef nonnull align 8 dereferenceable(17) %39) #8
  br label %309

309:                                              ; preds = %307, %305
  %.pn250 = phi { ptr, i32 } [ %308, %307 ], [ %306, %305 ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %40) #8
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %39) #8
  br label %802

310:                                              ; preds = %296
  %311 = landingpad { ptr, i32 }
          cleanup
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %41) #8
  br label %802

312:                                              ; preds = %299
  %313 = landingpad { ptr, i32 }
          cleanup
  br label %325

314:                                              ; preds = %300
  %315 = landingpad { ptr, i32 }
          cleanup
  br label %324

316:                                              ; preds = %301
  %317 = landingpad { ptr, i32 }
          cleanup
  br label %323

318:                                              ; preds = %302
  %319 = landingpad { ptr, i32 }
          cleanup
  br label %322

320:                                              ; preds = %303
  %321 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %42) #8
  br label %322

322:                                              ; preds = %320, %318
  %.pn252 = phi { ptr, i32 } [ %321, %320 ], [ %319, %318 ]
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %43) #8
  br label %323

323:                                              ; preds = %322, %316
  %.pn252.pn = phi { ptr, i32 } [ %.pn252, %322 ], [ %317, %316 ]
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %46) #8
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %46) #8
  call void @_ZN9NOMAD_4_313ArrayOfDoubleD1Ev(ptr noundef nonnull align 8 dereferenceable(24) %44) #8
  br label %324

324:                                              ; preds = %323, %314
  %.pn252.pn.pn = phi { ptr, i32 } [ %.pn252.pn, %323 ], [ %315, %314 ]
  call void @_ZN9NOMAD_4_36DoubleD1Ev(ptr noundef nonnull align 8 dereferenceable(17) %45) #8
  br label %325

325:                                              ; preds = %324, %312
  %.pn252.pn.pn.pn = phi { ptr, i32 } [ %.pn252.pn.pn, %324 ], [ %313, %312 ]
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %45) #8
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %44) #8
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %43) #8
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %42) #8
  br label %802

326:                                              ; preds = %298, %304, %231
  call void @llvm.lifetime.start.p0(i64 48, ptr nonnull %47) #8
  call void @_ZNSt3setIN9NOMAD_4_39EvalPointENS0_25NMSimplexEvalPointCompareESaIS1_EEC2Ev(ptr noundef nonnull align 8 dereferenceable(48) %47) #8
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %48) #8
  call void @_ZN9NOMAD_4_312EvcInterface19getEvaluatorControlEv(ptr dead_on_unwind nonnull writable sret(%"class.std::shared_ptr.29") align 8 %48)
  %327 = call noundef ptr @_ZNKSt19__shared_ptr_accessIN9NOMAD_4_316EvaluatorControlELN9__gnu_cxx12_Lock_policyE2ELb0ELb0EEptEv(ptr noundef nonnull align 1 dereferenceable(1) %48) #8
  %328 = invoke noundef zeroext i1 @_ZNK9NOMAD_4_316EvaluatorControl11getUseCacheEi(ptr noundef nonnull align 8 dereferenceable(352) %327, i32 noundef -1)
          to label %329 unwind label %334

329:                                              ; preds = %326
  call void @_ZNSt12__shared_ptrIN9NOMAD_4_316EvaluatorControlELN9__gnu_cxx12_Lock_policyE2EED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %48) #8
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %48) #8
  br i1 %328, label %330, label %341

330:                                              ; preds = %329
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %49) #8
  invoke void @_ZN9NOMAD_4_314CacheInterfaceC2EPKNS_4StepE(ptr noundef nonnull align 8 dereferenceable(32) %49, ptr noundef nonnull %0)
          to label %331 unwind label %336

331:                                              ; preds = %330
  %332 = invoke noundef i64 @_ZNK9NOMAD_4_314CacheInterface12getAllPointsERSt6vectorINS_9EvalPointESaIS2_EE(ptr noundef nonnull align 8 dereferenceable(32) %49, ptr noundef nonnull align 8 dereferenceable(24) %8)
          to label %333 unwind label %338

333:                                              ; preds = %331
  call void @_ZN9NOMAD_4_314CacheInterfaceD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %49) #8
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %49) #8
  br label %349

334:                                              ; preds = %326
  %335 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt12__shared_ptrIN9NOMAD_4_316EvaluatorControlELN9__gnu_cxx12_Lock_policyE2EED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %48) #8
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %48) #8
  br label %801

336:                                              ; preds = %330
  %337 = landingpad { ptr, i32 }
          cleanup
  br label %340

338:                                              ; preds = %331
  %339 = landingpad { ptr, i32 }
          cleanup
  call void @_ZN9NOMAD_4_314CacheInterfaceD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %49) #8
  br label %340

340:                                              ; preds = %338, %336
  %.pn257 = phi { ptr, i32 } [ %339, %338 ], [ %337, %336 ]
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %49) #8
  br label %801

341:                                              ; preds = %329
  %342 = call noundef zeroext i1 @_ZStneIN9NOMAD_4_311BarrierBaseEEbDnRKSt10shared_ptrIT_E(ptr null, ptr noundef nonnull align 8 dereferenceable(16) %10) #8
  br i1 %342, label %343, label %349

343:                                              ; preds = %341
  call void @llvm.lifetime.start.p0(i64 24, ptr nonnull %50) #8
  %344 = call noundef ptr @_ZNKSt19__shared_ptr_accessIN9NOMAD_4_311BarrierBaseELN9__gnu_cxx12_Lock_policyE2ELb0ELb0EEptEv(ptr noundef nonnull align 1 dereferenceable(1) %10) #8
  invoke void @_ZNK9NOMAD_4_311BarrierBase12getAllPointsEv(ptr dead_on_unwind nonnull writable sret(%"class.std::vector.57") align 8 %50, ptr noundef nonnull align 8 dereferenceable(120) %344)
          to label %345 unwind label %347

345:                                              ; preds = %343
  %346 = call noundef nonnull align 8 dereferenceable(24) ptr @_ZNSt6vectorIN9NOMAD_4_39EvalPointESaIS1_EEaSEOS3_(ptr noundef nonnull align 8 dereferenceable(24) %8, ptr noundef nonnull align 8 dereferenceable(24) %50) #8
  call void @_ZNSt6vectorIN9NOMAD_4_39EvalPointESaIS1_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %50) #8
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %50) #8
  br label %349

347:                                              ; preds = %343
  %348 = landingpad { ptr, i32 }
          cleanup
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %50) #8
  br label %801

349:                                              ; preds = %341, %345, %333
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %51) #8
  %350 = call ptr @_ZNSt6vectorIN9NOMAD_4_39EvalPointESaIS1_EE5beginEv(ptr noundef nonnull align 8 dereferenceable(24) %8) #8
  store ptr %350, ptr %51, align 8
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %52) #8
  %351 = call ptr @_ZNSt6vectorIN9NOMAD_4_39EvalPointESaIS1_EE3endEv(ptr noundef nonnull align 8 dereferenceable(24) %8) #8
  store ptr %351, ptr %52, align 8
  %352 = call noundef zeroext i1 @_ZN9__gnu_cxxneIPN9NOMAD_4_39EvalPointESt6vectorIS2_SaIS2_EEEEbRKNS_17__normal_iteratorIT_T0_EESC_(ptr noundef nonnull align 8 dereferenceable(8) %51, ptr noundef nonnull align 8 dereferenceable(8) %52) #8
  br i1 %352, label %.lr.ph417, label %._crit_edge

.lr.ph417:                                        ; preds = %349
  %.not402414.not = icmp eq i64 %209, 0
  br label %354

._crit_edge:                                      ; preds = %.loopexit422, %349
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %52) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %51) #8
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %71) #8
  store i32 9, ptr %71, align 4, !tbaa !36
  %353 = invoke noundef zeroext i1 @_ZN9NOMAD_4_311OutputQueue9GoodLevelERKNS_11OutputLevelE(ptr noundef nonnull align 4 dereferenceable(4) %71)
          to label %497 unwind label %501

354:                                              ; preds = %.lr.ph417, %.loopexit422
  %.0185416 = phi i64 [ 0, %.lr.ph417 ], [ %.4189, %.loopexit422 ]
  %355 = call noundef nonnull align 8 dereferenceable(160) ptr @_ZNK9__gnu_cxx17__normal_iteratorIPN9NOMAD_4_39EvalPointESt6vectorIS2_SaIS2_EEEdeEv(ptr noundef nonnull align 8 dereferenceable(8) %51) #8
  %356 = invoke noundef i32 @_ZNK9NOMAD_4_39EvalPoint13getEvalStatusENS_8EvalTypeE(ptr noundef nonnull align 8 dereferenceable(160) %355, i32 noundef %124)
          to label %357 unwind label %384

357:                                              ; preds = %354
  %358 = icmp eq i32 %356, 4
  br i1 %358, label %359, label %.loopexit422

359:                                              ; preds = %357
  %360 = call noundef ptr @_ZNK9NOMAD_4_39EvalPoint4getXEv(ptr noundef nonnull align 8 dereferenceable(160) %355)
  %361 = call noundef i64 @_ZNK9NOMAD_4_313ArrayOfDouble4sizeEv(ptr noundef nonnull align 8 dereferenceable(24) %360)
  %362 = icmp eq i64 %361, %209
  br i1 %362, label %363, label %.loopexit422

363:                                              ; preds = %359
  %364 = invoke noundef ptr @_ZNK9NOMAD_4_39EvalPoint7getEvalENS_8EvalTypeE(ptr noundef nonnull align 8 dereferenceable(160) %355, i32 noundef %124)
          to label %365 unwind label %384

365:                                              ; preds = %363
  %366 = call noundef zeroext i1 @_ZNK9NOMAD_4_34Eval18isBBOutputCompleteEv(ptr noundef nonnull align 8 dereferenceable(105) %364)
  br i1 %366, label %367, label %.loopexit422

367:                                              ; preds = %365
  %368 = call noundef nonnull align 8 dereferenceable(160) ptr @_ZNKSt19__shared_ptr_accessIN9NOMAD_4_39EvalPointELN9__gnu_cxx12_Lock_policyE2ELb0ELb0EEdeEv(ptr noundef nonnull align 1 dereferenceable(1) %9) #8
  %369 = invoke noundef zeroext i1 @_ZNK9NOMAD_4_39EvalPointeqERKS0_(ptr noundef nonnull align 8 dereferenceable(160) %368, ptr noundef nonnull align 8 dereferenceable(160) %355)
          to label %370 unwind label %384

370:                                              ; preds = %367
  br i1 %369, label %371, label %.preheader

.preheader:                                       ; preds = %370
  br i1 %.not402414.not, label %.critedge404.loopexit, label %.lr.ph

371:                                              ; preds = %370
  call void @llvm.lifetime.start.p0(i64 160, ptr nonnull %53) #8
  invoke void @_ZN9NOMAD_4_39EvalPointC1ERKS0_(ptr noundef nonnull align 8 dereferenceable(160) %53, ptr noundef nonnull align 8 dereferenceable(160) %355)
          to label %372 unwind label %386

372:                                              ; preds = %371
  %373 = invoke { ptr, i8 } @_ZNSt3setIN9NOMAD_4_39EvalPointENS0_25NMSimplexEvalPointCompareESaIS1_EE6insertERKS1_(ptr noundef nonnull align 8 dereferenceable(48) %47, ptr noundef nonnull align 8 dereferenceable(160) %53)
          to label %374 unwind label %388

374:                                              ; preds = %372
  %375 = icmp ult i64 %.0185416, 4
  br i1 %375, label %376, label %405

376:                                              ; preds = %374
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %54) #8
  store i32 9, ptr %54, align 4, !tbaa !36
  %377 = invoke noundef zeroext i1 @_ZN9NOMAD_4_311OutputQueue9GoodLevelERKNS_11OutputLevelE(ptr noundef nonnull align 4 dereferenceable(4) %54)
          to label %378 unwind label %390

378:                                              ; preds = %376
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %54) #8
  br i1 %377, label %379, label %403

379:                                              ; preds = %378
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %55) #8
  call void @llvm.lifetime.start.p0(i64 24, ptr nonnull %56) #8
  call void @llvm.lifetime.start.p0(i64 24, ptr nonnull %57) #8
  invoke void @_ZN9NOMAD_4_36DoubleC1Ev(ptr noundef nonnull align 8 dereferenceable(17) %57)
          to label %380 unwind label %392

380:                                              ; preds = %379
  invoke void @_ZN9NOMAD_4_313ArrayOfDoubleC1EmRKNS_6DoubleE(ptr noundef nonnull align 8 dereferenceable(24) %56, i64 noundef 0, ptr noundef nonnull align 8 dereferenceable(17) %57)
          to label %381 unwind label %394

381:                                              ; preds = %380
  invoke void @_ZNK9NOMAD_4_39EvalPoint7displayB5cxx11ERKNS_13ArrayOfDoubleERKi(ptr dead_on_unwind nonnull writable sret(%"class.std::__cxx11::basic_string") align 8 %55, ptr noundef nonnull align 8 dereferenceable(160) %53, ptr noundef nonnull align 8 dereferenceable(24) %56, ptr noundef nonnull align 4 dereferenceable(4) @_ZN9NOMAD_4_3L22DISPLAY_PRECISION_FULLE)
          to label %382 unwind label %396

382:                                              ; preds = %381
  invoke void @_ZN9NOMAD_4_310OutputInfo6addMsgERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE(ptr noundef nonnull align 8 dereferenceable(80) %27, ptr noundef nonnull align 8 dereferenceable(32) %55)
          to label %383 unwind label %398

383:                                              ; preds = %382
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %55) #8
  call void @_ZN9NOMAD_4_313ArrayOfDoubleD1Ev(ptr noundef nonnull align 8 dereferenceable(24) %56) #8
  call void @_ZN9NOMAD_4_36DoubleD1Ev(ptr noundef nonnull align 8 dereferenceable(17) %57) #8
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %57) #8
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %56) #8
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %55) #8
  br label %403

384:                                              ; preds = %367, %363, %354
  %385 = landingpad { ptr, i32 }
          cleanup
  br label %496

386:                                              ; preds = %371
  %387 = landingpad { ptr, i32 }
          cleanup
  br label %407

388:                                              ; preds = %372
  %389 = landingpad { ptr, i32 }
          cleanup
  br label %406

390:                                              ; preds = %376
  %391 = landingpad { ptr, i32 }
          cleanup
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %54) #8
  br label %406

392:                                              ; preds = %379
  %393 = landingpad { ptr, i32 }
          cleanup
  br label %402

394:                                              ; preds = %380
  %395 = landingpad { ptr, i32 }
          cleanup
  br label %401

396:                                              ; preds = %381
  %397 = landingpad { ptr, i32 }
          cleanup
  br label %400

398:                                              ; preds = %382
  %399 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %55) #8
  br label %400

400:                                              ; preds = %398, %396
  %.pn321 = phi { ptr, i32 } [ %399, %398 ], [ %397, %396 ]
  call void @_ZN9NOMAD_4_313ArrayOfDoubleD1Ev(ptr noundef nonnull align 8 dereferenceable(24) %56) #8
  br label %401

401:                                              ; preds = %400, %394
  %.pn321.pn = phi { ptr, i32 } [ %.pn321, %400 ], [ %395, %394 ]
  call void @_ZN9NOMAD_4_36DoubleD1Ev(ptr noundef nonnull align 8 dereferenceable(17) %57) #8
  br label %402

402:                                              ; preds = %401, %392
  %.pn321.pn.pn = phi { ptr, i32 } [ %.pn321.pn, %401 ], [ %393, %392 ]
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %57) #8
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %56) #8
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %55) #8
  br label %406

403:                                              ; preds = %383, %378
  %404 = add nuw nsw i64 %.0185416, 1
  br label %405

405:                                              ; preds = %403, %374
  %.1186 = phi i64 [ %404, %403 ], [ %.0185416, %374 ]
  call void @_ZN9NOMAD_4_39EvalPointD1Ev(ptr noundef nonnull align 8 dereferenceable(160) %53) #8
  call void @llvm.lifetime.end.p0(i64 160, ptr nonnull %53) #8
  br label %.loopexit422

406:                                              ; preds = %402, %390, %388
  %.pn321.pn.pn.pn = phi { ptr, i32 } [ %.pn321.pn.pn, %402 ], [ %391, %390 ], [ %389, %388 ]
  call void @_ZN9NOMAD_4_39EvalPointD1Ev(ptr noundef nonnull align 8 dereferenceable(160) %53) #8
  br label %407

407:                                              ; preds = %406, %386
  %.pn321.pn.pn.pn.pn = phi { ptr, i32 } [ %.pn321.pn.pn.pn, %406 ], [ %387, %386 ]
  call void @llvm.lifetime.end.p0(i64 160, ptr nonnull %53) #8
  br label %496

408:                                              ; preds = %420
  %409 = add nuw i64 %.0200415, 1
  %exitcond.not = icmp eq i64 %409, %209
  br i1 %exitcond.not, label %.critedge404.loopexit, label %.lr.ph, !llvm.loop !38

.lr.ph:                                           ; preds = %.preheader, %408
  %.0200415 = phi i64 [ %409, %408 ], [ 0, %.preheader ]
  call void @llvm.lifetime.start.p0(i64 24, ptr nonnull %58) #8
  %410 = invoke noundef nonnull align 8 dereferenceable(17) ptr @_ZNK9NOMAD_4_313ArrayOfDoubleixEm(ptr noundef nonnull align 8 dereferenceable(24) %355, i64 noundef %.0200415)
          to label %411 unwind label %421

411:                                              ; preds = %.lr.ph
  %412 = call noundef nonnull align 8 dereferenceable(160) ptr @_ZNKSt19__shared_ptr_accessIN9NOMAD_4_39EvalPointELN9__gnu_cxx12_Lock_policyE2ELb0ELb0EEdeEv(ptr noundef nonnull align 1 dereferenceable(1) %9) #8
  %413 = invoke noundef nonnull align 8 dereferenceable(17) ptr @_ZNK9NOMAD_4_313ArrayOfDoubleixEm(ptr noundef nonnull align 8 dereferenceable(24) %412, i64 noundef %.0200415)
          to label %414 unwind label %421

414:                                              ; preds = %411
  invoke void @_ZN9NOMAD_4_3miERKNS_6DoubleES2_(ptr dead_on_unwind nonnull writable sret(%"class.NOMAD_4_3::Double") align 8 %58, ptr noundef nonnull align 8 dereferenceable(17) %410, ptr noundef nonnull align 8 dereferenceable(17) %413)
          to label %415 unwind label %421

415:                                              ; preds = %414
  call void @llvm.lifetime.start.p0(i64 24, ptr nonnull %59) #8
  invoke void @_ZNK9NOMAD_4_36Double3absEv(ptr dead_on_unwind nonnull writable sret(%"class.NOMAD_4_3::Double") align 8 %59, ptr noundef nonnull align 8 dereferenceable(17) %58)
          to label %416 unwind label %423

416:                                              ; preds = %415
  %417 = invoke noundef nonnull align 8 dereferenceable(17) ptr @_ZNK9NOMAD_4_313ArrayOfDoubleixEm(ptr noundef nonnull align 8 dereferenceable(24) %26, i64 noundef %.0200415)
          to label %418 unwind label %425

418:                                              ; preds = %416
  %419 = invoke noundef zeroext i1 @_ZN9NOMAD_4_3gtERKNS_6DoubleES2_(ptr noundef nonnull align 8 dereferenceable(17) %59, ptr noundef nonnull align 8 dereferenceable(17) %417)
          to label %420 unwind label %425

420:                                              ; preds = %418
  call void @_ZN9NOMAD_4_36DoubleD1Ev(ptr noundef nonnull align 8 dereferenceable(17) %59) #8
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %59) #8
  call void @_ZN9NOMAD_4_36DoubleD1Ev(ptr noundef nonnull align 8 dereferenceable(17) %58) #8
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %58) #8
  br i1 %419, label %.loopexit422, label %408

421:                                              ; preds = %414, %411, %.lr.ph
  %422 = landingpad { ptr, i32 }
          cleanup
  br label %428

423:                                              ; preds = %415
  %424 = landingpad { ptr, i32 }
          cleanup
  br label %427

425:                                              ; preds = %418, %416
  %426 = landingpad { ptr, i32 }
          cleanup
  call void @_ZN9NOMAD_4_36DoubleD1Ev(ptr noundef nonnull align 8 dereferenceable(17) %59) #8
  br label %427

427:                                              ; preds = %425, %423
  %.pn304 = phi { ptr, i32 } [ %426, %425 ], [ %424, %423 ]
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %59) #8
  call void @_ZN9NOMAD_4_36DoubleD1Ev(ptr noundef nonnull align 8 dereferenceable(17) %58) #8
  br label %428

428:                                              ; preds = %427, %421
  %.pn304.pn = phi { ptr, i32 } [ %.pn304, %427 ], [ %422, %421 ]
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %58) #8
  br label %496

.critedge404.loopexit:                            ; preds = %408, %.preheader
  call void @llvm.lifetime.start.p0(i64 160, ptr nonnull %60) #8
  invoke void @_ZN9NOMAD_4_39EvalPointC1ERKS0_(ptr noundef nonnull align 8 dereferenceable(160) %60, ptr noundef nonnull align 8 dereferenceable(160) %355)
          to label %429 unwind label %442

429:                                              ; preds = %.critedge404.loopexit
  %430 = invoke { ptr, i8 } @_ZNSt3setIN9NOMAD_4_39EvalPointENS0_25NMSimplexEvalPointCompareESaIS1_EE6insertERKS1_(ptr noundef nonnull align 8 dereferenceable(48) %47, ptr noundef nonnull align 8 dereferenceable(160) %60)
          to label %431 unwind label %444

431:                                              ; preds = %429
  %.fca.1.extract30 = extractvalue { ptr, i8 } %430, 1
  %432 = trunc i8 %.fca.1.extract30 to i1
  br i1 %432, label %462, label %433

433:                                              ; preds = %431
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %61) #8
  store i32 9, ptr %61, align 4, !tbaa !36
  %434 = invoke noundef zeroext i1 @_ZN9NOMAD_4_311OutputQueue9GoodLevelERKNS_11OutputLevelE(ptr noundef nonnull align 4 dereferenceable(4) %61)
          to label %435 unwind label %446

435:                                              ; preds = %433
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %61) #8
  br i1 %434, label %436, label %491

436:                                              ; preds = %435
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %62) #8
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %63) #8
  call void @llvm.lifetime.start.p0(i64 24, ptr nonnull %64) #8
  call void @llvm.lifetime.start.p0(i64 24, ptr nonnull %65) #8
  invoke void @_ZN9NOMAD_4_36DoubleC1Ev(ptr noundef nonnull align 8 dereferenceable(17) %65)
          to label %437 unwind label %448

437:                                              ; preds = %436
  invoke void @_ZN9NOMAD_4_313ArrayOfDoubleC1EmRKNS_6DoubleE(ptr noundef nonnull align 8 dereferenceable(24) %64, i64 noundef 0, ptr noundef nonnull align 8 dereferenceable(17) %65)
          to label %438 unwind label %450

438:                                              ; preds = %437
  invoke void @_ZNK9NOMAD_4_39EvalPoint7displayB5cxx11ERKNS_13ArrayOfDoubleERKi(ptr dead_on_unwind nonnull writable sret(%"class.std::__cxx11::basic_string") align 8 %63, ptr noundef nonnull align 8 dereferenceable(160) %60, ptr noundef nonnull align 8 dereferenceable(24) %64, ptr noundef nonnull align 4 dereferenceable(4) @_ZN9NOMAD_4_3L22DISPLAY_PRECISION_FULLE)
          to label %439 unwind label %452

439:                                              ; preds = %438
  invoke void @_ZStplIcSt11char_traitsIcESaIcEENSt7__cxx1112basic_stringIT_T0_T1_EEPKS5_OS8_(ptr dead_on_unwind nonnull writable sret(%"class.std::__cxx11::basic_string") align 8 %62, ptr noundef nonnull @.str.22, ptr noundef nonnull align 8 dereferenceable(32) %63)
          to label %440 unwind label %454

440:                                              ; preds = %439
  invoke void @_ZN9NOMAD_4_310OutputInfo6addMsgERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE(ptr noundef nonnull align 8 dereferenceable(80) %27, ptr noundef nonnull align 8 dereferenceable(32) %62)
          to label %441 unwind label %456

441:                                              ; preds = %440
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %62) #8
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %63) #8
  call void @_ZN9NOMAD_4_313ArrayOfDoubleD1Ev(ptr noundef nonnull align 8 dereferenceable(24) %64) #8
  call void @_ZN9NOMAD_4_36DoubleD1Ev(ptr noundef nonnull align 8 dereferenceable(17) %65) #8
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %65) #8
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %64) #8
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %63) #8
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %62) #8
  br label %491

442:                                              ; preds = %.critedge404.loopexit
  %443 = landingpad { ptr, i32 }
          cleanup
  br label %493

444:                                              ; preds = %429
  %445 = landingpad { ptr, i32 }
          cleanup
  br label %492

446:                                              ; preds = %433
  %447 = landingpad { ptr, i32 }
          cleanup
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %61) #8
  br label %492

448:                                              ; preds = %436
  %449 = landingpad { ptr, i32 }
          cleanup
  br label %461

450:                                              ; preds = %437
  %451 = landingpad { ptr, i32 }
          cleanup
  br label %460

452:                                              ; preds = %438
  %453 = landingpad { ptr, i32 }
          cleanup
  br label %459

454:                                              ; preds = %439
  %455 = landingpad { ptr, i32 }
          cleanup
  br label %458

456:                                              ; preds = %440
  %457 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %62) #8
  br label %458

458:                                              ; preds = %456, %454
  %.pn307 = phi { ptr, i32 } [ %457, %456 ], [ %455, %454 ]
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %63) #8
  br label %459

459:                                              ; preds = %458, %452
  %.pn307.pn = phi { ptr, i32 } [ %.pn307, %458 ], [ %453, %452 ]
  call void @_ZN9NOMAD_4_313ArrayOfDoubleD1Ev(ptr noundef nonnull align 8 dereferenceable(24) %64) #8
  br label %460

460:                                              ; preds = %459, %450
  %.pn307.pn.pn = phi { ptr, i32 } [ %.pn307.pn, %459 ], [ %451, %450 ]
  call void @_ZN9NOMAD_4_36DoubleD1Ev(ptr noundef nonnull align 8 dereferenceable(17) %65) #8
  br label %461

461:                                              ; preds = %460, %448
  %.pn307.pn.pn.pn = phi { ptr, i32 } [ %.pn307.pn.pn, %460 ], [ %449, %448 ]
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %65) #8
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %64) #8
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %63) #8
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %62) #8
  br label %492

462:                                              ; preds = %431
  %463 = icmp ult i64 %.0185416, 5
  br i1 %463, label %464, label %491

464:                                              ; preds = %462
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %66) #8
  store i32 9, ptr %66, align 4, !tbaa !36
  %465 = invoke noundef zeroext i1 @_ZN9NOMAD_4_311OutputQueue9GoodLevelERKNS_11OutputLevelE(ptr noundef nonnull align 4 dereferenceable(4) %66)
          to label %466 unwind label %474

466:                                              ; preds = %464
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %66) #8
  br i1 %465, label %467, label %489

467:                                              ; preds = %466
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %67) #8
  %.not312 = icmp eq i64 %.0185416, 4
  br i1 %.not312, label %471, label %468

468:                                              ; preds = %467
  call void @llvm.lifetime.start.p0(i64 24, ptr nonnull %68) #8
  call void @llvm.lifetime.start.p0(i64 24, ptr nonnull %69) #8
  invoke void @_ZN9NOMAD_4_36DoubleC1Ev(ptr noundef nonnull align 8 dereferenceable(17) %69)
          to label %469 unwind label %476

469:                                              ; preds = %468
  invoke void @_ZN9NOMAD_4_313ArrayOfDoubleC1EmRKNS_6DoubleE(ptr noundef nonnull align 8 dereferenceable(24) %68, i64 noundef 0, ptr noundef nonnull align 8 dereferenceable(17) %69)
          to label %470 unwind label %478

470:                                              ; preds = %469
  invoke void @_ZNK9NOMAD_4_39EvalPoint7displayB5cxx11ERKNS_13ArrayOfDoubleERKi(ptr dead_on_unwind nonnull writable sret(%"class.std::__cxx11::basic_string") align 8 %67, ptr noundef nonnull align 8 dereferenceable(160) %60, ptr noundef nonnull align 8 dereferenceable(24) %68, ptr noundef nonnull align 4 dereferenceable(4) @_ZN9NOMAD_4_3L22DISPLAY_PRECISION_FULLE)
          to label %472 unwind label %480

471:                                              ; preds = %467
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %70) #8
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %70) #8
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %67, ptr noundef nonnull @.str.23, ptr noundef nonnull align 1 dereferenceable(1) %70)
          to label %472 unwind label %.thread375

472:                                              ; preds = %471, %470
  invoke void @_ZN9NOMAD_4_310OutputInfo6addMsgERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE(ptr noundef nonnull align 8 dereferenceable(80) %27, ptr noundef nonnull align 8 dereferenceable(32) %67)
          to label %473 unwind label %483

473:                                              ; preds = %472
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %67) #8
  br i1 %.not312, label %.critedge348, label %.critedge351.critedge

.critedge348:                                     ; preds = %473
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %70) #8
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %70) #8
  br label %.critedge353

.critedge351.critedge:                            ; preds = %473
  call void @_ZN9NOMAD_4_313ArrayOfDoubleD1Ev(ptr noundef nonnull align 8 dereferenceable(24) %68) #8
  call void @_ZN9NOMAD_4_36DoubleD1Ev(ptr noundef nonnull align 8 dereferenceable(17) %69) #8
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %69) #8
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %68) #8
  br label %.critedge353

.critedge353:                                     ; preds = %.critedge348, %.critedge351.critedge
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %67) #8
  br label %489

474:                                              ; preds = %464
  %475 = landingpad { ptr, i32 }
          cleanup
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %66) #8
  br label %492

476:                                              ; preds = %468
  %477 = landingpad { ptr, i32 }
          cleanup
  br label %488

478:                                              ; preds = %469
  %479 = landingpad { ptr, i32 }
          cleanup
  br label %486

480:                                              ; preds = %470
  %481 = landingpad { ptr, i32 }
          cleanup
  br label %485

.thread375:                                       ; preds = %471
  %482 = landingpad { ptr, i32 }
          cleanup
  br label %487

483:                                              ; preds = %472
  %484 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %67) #8
  br i1 %.not312, label %487, label %485

485:                                              ; preds = %480, %483
  %.pn313.pn.ph = phi { ptr, i32 } [ %484, %483 ], [ %481, %480 ]
  call void @_ZN9NOMAD_4_313ArrayOfDoubleD1Ev(ptr noundef nonnull align 8 dereferenceable(24) %68) #8
  br label %486

486:                                              ; preds = %485, %478
  %.pn313.pn.pn.ph = phi { ptr, i32 } [ %479, %478 ], [ %.pn313.pn.ph, %485 ]
  call void @_ZN9NOMAD_4_36DoubleD1Ev(ptr noundef nonnull align 8 dereferenceable(17) %69) #8
  br label %488

487:                                              ; preds = %483, %.thread375
  %.pn313380 = phi { ptr, i32 } [ %482, %.thread375 ], [ %484, %483 ]
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %70) #8
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %70) #8
  br label %.critedge357

488:                                              ; preds = %486, %476
  %.pn313.pn.pn.pn.ph = phi { ptr, i32 } [ %477, %476 ], [ %.pn313.pn.pn.ph, %486 ]
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %69) #8
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %68) #8
  br label %.critedge357

.critedge357:                                     ; preds = %487, %488
  %.pn313.pn.pn.pn394 = phi { ptr, i32 } [ %.pn313380, %487 ], [ %.pn313.pn.pn.pn.ph, %488 ]
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %67) #8
  br label %492

489:                                              ; preds = %.critedge353, %466
  %490 = add nuw nsw i64 %.0185416, 1
  br label %491

491:                                              ; preds = %462, %489, %435, %441
  %.2187 = phi i64 [ %490, %489 ], [ %.0185416, %462 ], [ %.0185416, %441 ], [ %.0185416, %435 ]
  call void @_ZN9NOMAD_4_39EvalPointD1Ev(ptr noundef nonnull align 8 dereferenceable(160) %60) #8
  call void @llvm.lifetime.end.p0(i64 160, ptr nonnull %60) #8
  br label %.loopexit422

492:                                              ; preds = %.critedge357, %474, %461, %446, %444
  %.pn313.pn.pn.pn.pn = phi { ptr, i32 } [ %.pn313.pn.pn.pn394, %.critedge357 ], [ %475, %474 ], [ %.pn307.pn.pn.pn, %461 ], [ %447, %446 ], [ %445, %444 ]
  call void @_ZN9NOMAD_4_39EvalPointD1Ev(ptr noundef nonnull align 8 dereferenceable(160) %60) #8
  br label %493

493:                                              ; preds = %492, %442
  %.pn313.pn.pn.pn.pn.pn = phi { ptr, i32 } [ %.pn313.pn.pn.pn.pn, %492 ], [ %443, %442 ]
  call void @llvm.lifetime.end.p0(i64 160, ptr nonnull %60) #8
  br label %496

.loopexit422:                                     ; preds = %420, %491, %365, %405, %359, %357
  %.4189 = phi i64 [ %.1186, %405 ], [ %.0185416, %365 ], [ %.0185416, %359 ], [ %.0185416, %357 ], [ %.2187, %491 ], [ %.0185416, %420 ]
  %494 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZN9__gnu_cxx17__normal_iteratorIPN9NOMAD_4_39EvalPointESt6vectorIS2_SaIS2_EEEppEv(ptr noundef nonnull align 8 dereferenceable(8) %51) #8
  %495 = call noundef zeroext i1 @_ZN9__gnu_cxxneIPN9NOMAD_4_39EvalPointESt6vectorIS2_SaIS2_EEEEbRKNS_17__normal_iteratorIT_T0_EESC_(ptr noundef nonnull align 8 dereferenceable(8) %51, ptr noundef nonnull align 8 dereferenceable(8) %52) #8
  br i1 %495, label %354, label %._crit_edge

496:                                              ; preds = %428, %493, %407, %384
  %.pn321.pn.pn.pn.pn.pn = phi { ptr, i32 } [ %.pn321.pn.pn.pn.pn, %407 ], [ %385, %384 ], [ %.pn313.pn.pn.pn.pn.pn, %493 ], [ %.pn304.pn, %428 ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %52) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %51) #8
  br label %801

497:                                              ; preds = %._crit_edge
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %71) #8
  br i1 %353, label %498, label %507

498:                                              ; preds = %497
  invoke void @_ZN9NOMAD_4_310OutputInfoC2EOS0_(ptr noundef nonnull align 8 dereferenceable(80) %72, ptr noundef nonnull align 8 dereferenceable(80) %27)
          to label %499 unwind label %503

499:                                              ; preds = %498
  invoke void @_ZN9NOMAD_4_311OutputQueue3AddENS_10OutputInfoE(ptr noundef nonnull %72)
          to label %500 unwind label %505

500:                                              ; preds = %499
  call void @_ZN9NOMAD_4_310OutputInfoD2Ev(ptr noundef nonnull align 8 dereferenceable(80) %72) #8
  br label %507

501:                                              ; preds = %._crit_edge
  %502 = landingpad { ptr, i32 }
          cleanup
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %71) #8
  br label %801

503:                                              ; preds = %498
  %504 = landingpad { ptr, i32 }
          cleanup
  br label %801

505:                                              ; preds = %499
  %506 = landingpad { ptr, i32 }
          cleanup
  call void @_ZN9NOMAD_4_310OutputInfoD2Ev(ptr noundef nonnull align 8 dereferenceable(80) %72) #8
  br label %801

507:                                              ; preds = %500, %497
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %73) #8
  store i32 7, ptr %73, align 4, !tbaa !36
  %508 = invoke noundef zeroext i1 @_ZN9NOMAD_4_311OutputQueue9GoodLevelERKNS_11OutputLevelE(ptr noundef nonnull align 4 dereferenceable(4) %73)
          to label %509 unwind label %515

509:                                              ; preds = %507
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %73) #8
  br i1 %508, label %510, label %525

510:                                              ; preds = %509
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %74) #8
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %75) #8
  %511 = call noundef i64 @_ZNKSt3setIN9NOMAD_4_39EvalPointENS0_25NMSimplexEvalPointCompareESaIS1_EE4sizeEv(ptr noundef nonnull align 8 dereferenceable(48) %47) #8
  invoke void @_ZNSt7__cxx119to_stringEm(ptr dead_on_unwind nonnull writable sret(%"class.std::__cxx11::basic_string") align 8 %75, i64 noundef %511)
          to label %512 unwind label %517

512:                                              ; preds = %510
  invoke void @_ZStplIcSt11char_traitsIcESaIcEENSt7__cxx1112basic_stringIT_T0_T1_EEPKS5_OS8_(ptr dead_on_unwind nonnull writable sret(%"class.std::__cxx11::basic_string") align 8 %74, ptr noundef nonnull @.str.24, ptr noundef nonnull align 8 dereferenceable(32) %75)
          to label %513 unwind label %519

513:                                              ; preds = %512
  invoke void @_ZNK9NOMAD_4_34Step13AddOutputInfoERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEENS_11OutputLevelE(ptr noundef nonnull align 8 dereferenceable(140) %0, ptr noundef nonnull align 8 dereferenceable(32) %74, i32 noundef 7)
          to label %514 unwind label %521

514:                                              ; preds = %513
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %74) #8
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %75) #8
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %75) #8
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %74) #8
  br label %525

515:                                              ; preds = %507
  %516 = landingpad { ptr, i32 }
          cleanup
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %73) #8
  br label %801

517:                                              ; preds = %510
  %518 = landingpad { ptr, i32 }
          cleanup
  br label %524

519:                                              ; preds = %512
  %520 = landingpad { ptr, i32 }
          cleanup
  br label %523

521:                                              ; preds = %513
  %522 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %74) #8
  br label %523

523:                                              ; preds = %521, %519
  %.pn259 = phi { ptr, i32 } [ %522, %521 ], [ %520, %519 ]
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %75) #8
  br label %524

524:                                              ; preds = %523, %517
  %.pn259.pn = phi { ptr, i32 } [ %.pn259, %523 ], [ %518, %517 ]
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %75) #8
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %74) #8
  br label %801

525:                                              ; preds = %514, %509
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %76) #8
  call void @_ZNK9NOMAD_4_34Step17getAllStopReasonsEv(ptr dead_on_unwind nonnull writable sret(%"class.std::shared_ptr") align 8 %77, ptr noundef nonnull align 8 dereferenceable(140) %0)
  invoke void @_ZN9NOMAD_4_315AlgoStopReasonsINS_10NMStopTypeEE3getESt10shared_ptrINS_14AllStopReasonsEE(ptr dead_on_unwind nonnull writable sret(%"class.std::shared_ptr.115") align 8 %76, ptr noundef nonnull %77)
          to label %526 unwind label %537

526:                                              ; preds = %525
  call void @_ZNSt12__shared_ptrIN9NOMAD_4_314AllStopReasonsELN9__gnu_cxx12_Lock_policyE2EED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %77) #8
  %527 = call noundef i64 @_ZNKSt3setIN9NOMAD_4_39EvalPointENS0_25NMSimplexEvalPointCompareESaIS1_EE4sizeEv(ptr noundef nonnull align 8 dereferenceable(48) %47) #8
  %528 = icmp ult i64 %527, %210
  br i1 %528, label %529, label %548

529:                                              ; preds = %526
  %530 = call noundef ptr @_ZNKSt19__shared_ptr_accessIN9NOMAD_4_315AlgoStopReasonsINS0_10NMStopTypeEEELN9__gnu_cxx12_Lock_policyE2ELb0ELb0EEptEv(ptr noundef nonnull align 1 dereferenceable(1) %76) #8
  invoke void @_ZN9NOMAD_4_315AlgoStopReasonsINS_10NMStopTypeEE3setES1_(ptr noundef nonnull align 8 dereferenceable(40) %530, i32 noundef 3)
          to label %531 unwind label %539

531:                                              ; preds = %529
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %78) #8
  store i32 7, ptr %78, align 4, !tbaa !36
  %532 = invoke noundef zeroext i1 @_ZN9NOMAD_4_311OutputQueue9GoodLevelERKNS_11OutputLevelE(ptr noundef nonnull align 4 dereferenceable(4) %78)
          to label %533 unwind label %541

533:                                              ; preds = %531
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %78) #8
  br i1 %532, label %534, label %798

534:                                              ; preds = %533
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %79) #8
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %80) #8
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %80) #8
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %79, ptr noundef nonnull @.str.25, ptr noundef nonnull align 1 dereferenceable(1) %80)
          to label %535 unwind label %543

535:                                              ; preds = %534
  invoke void @_ZNK9NOMAD_4_34Step13AddOutputInfoERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEENS_11OutputLevelE(ptr noundef nonnull align 8 dereferenceable(140) %0, ptr noundef nonnull align 8 dereferenceable(32) %79, i32 noundef 7)
          to label %536 unwind label %545

536:                                              ; preds = %535
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %79) #8
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %80) #8
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %80) #8
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %79) #8
  br label %798

537:                                              ; preds = %525
  %538 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt12__shared_ptrIN9NOMAD_4_314AllStopReasonsELN9__gnu_cxx12_Lock_policyE2EED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %77) #8
  br label %800

539:                                              ; preds = %529
  %540 = landingpad { ptr, i32 }
          cleanup
  br label %799

541:                                              ; preds = %531
  %542 = landingpad { ptr, i32 }
          cleanup
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %78) #8
  br label %799

543:                                              ; preds = %534
  %544 = landingpad { ptr, i32 }
          cleanup
  br label %547

545:                                              ; preds = %535
  %546 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %79) #8
  br label %547

547:                                              ; preds = %545, %543
  %.pn300 = phi { ptr, i32 } [ %546, %545 ], [ %544, %543 ]
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %80) #8
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %80) #8
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %79) #8
  br label %799

548:                                              ; preds = %526
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %81) #8
  %549 = call ptr @_ZNKSt3setIN9NOMAD_4_39EvalPointENS0_25NMSimplexEvalPointCompareESaIS1_EE5beginEv(ptr noundef nonnull align 8 dereferenceable(48) %47) #8
  store ptr %549, ptr %81, align 8
  call void @llvm.lifetime.start.p0(i64 80, ptr nonnull %82) #8
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %83) #8
  %550 = load ptr, ptr %0, align 8, !tbaa !32
  %551 = getelementptr inbounds i8, ptr %550, i64 16
  %552 = load ptr, ptr %551, align 8
  invoke void %552(ptr dead_on_unwind nonnull writable sret(%"class.std::__cxx11::basic_string") align 8 %83, ptr noundef nonnull align 8 dereferenceable(140) %0)
          to label %553 unwind label %571

553:                                              ; preds = %548
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %84) #8
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %85) #8
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %85) #8
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %84, ptr noundef nonnull @.str.26, ptr noundef nonnull align 1 dereferenceable(1) %85)
          to label %554 unwind label %573

554:                                              ; preds = %553
  invoke void @_ZN9NOMAD_4_310OutputInfoC2ERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEES8_NS_11OutputLevelEbb(ptr noundef nonnull align 8 dereferenceable(80) %82, ptr noundef nonnull align 8 dereferenceable(32) %83, ptr noundef nonnull align 8 dereferenceable(32) %84, i32 noundef 9, i1 noundef zeroext false, i1 noundef zeroext false)
          to label %555 unwind label %575

555:                                              ; preds = %554
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %84) #8
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %85) #8
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %85) #8
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %84) #8
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %83) #8
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %83) #8
  %556 = call noundef ptr @_ZNKSt19__shared_ptr_accessISt3setIN9NOMAD_4_39EvalPointENS1_25NMSimplexEvalPointCompareESaIS2_EELN9__gnu_cxx12_Lock_policyE2ELb0ELb0EEptEv(ptr noundef nonnull align 1 dereferenceable(1) %202) #8
  %557 = call noundef nonnull align 8 dereferenceable(160) ptr @_ZNKSt23_Rb_tree_const_iteratorIN9NOMAD_4_39EvalPointEEdeEv(ptr noundef nonnull align 8 dereferenceable(8) %81) #8
  %558 = invoke { ptr, i8 } @_ZNSt3setIN9NOMAD_4_39EvalPointENS0_25NMSimplexEvalPointCompareESaIS1_EE6insertERKS1_(ptr noundef nonnull align 8 dereferenceable(48) %556, ptr noundef nonnull align 8 dereferenceable(160) %557)
          to label %559 unwind label %579

559:                                              ; preds = %555
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %86) #8
  store i32 9, ptr %86, align 4, !tbaa !36
  %560 = invoke noundef zeroext i1 @_ZN9NOMAD_4_311OutputQueue9GoodLevelERKNS_11OutputLevelE(ptr noundef nonnull align 4 dereferenceable(4) %86)
          to label %561 unwind label %581

561:                                              ; preds = %559
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %86) #8
  br i1 %560, label %562, label %602

562:                                              ; preds = %561
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %87) #8
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %88) #8
  %563 = call noundef nonnull align 8 dereferenceable(160) ptr @_ZNKSt23_Rb_tree_const_iteratorIN9NOMAD_4_39EvalPointEEdeEv(ptr noundef nonnull align 8 dereferenceable(8) %81) #8
  call void @llvm.lifetime.start.p0(i64 24, ptr nonnull %89) #8
  call void @llvm.lifetime.start.p0(i64 24, ptr nonnull %90) #8
  invoke void @_ZN9NOMAD_4_36DoubleC1Ev(ptr noundef nonnull align 8 dereferenceable(17) %90)
          to label %564 unwind label %583

564:                                              ; preds = %562
  invoke void @_ZN9NOMAD_4_313ArrayOfDoubleC1EmRKNS_6DoubleE(ptr noundef nonnull align 8 dereferenceable(24) %89, i64 noundef 0, ptr noundef nonnull align 8 dereferenceable(17) %90)
          to label %565 unwind label %585

565:                                              ; preds = %564
  invoke void @_ZNK9NOMAD_4_39EvalPoint7displayB5cxx11ERKNS_13ArrayOfDoubleERKi(ptr dead_on_unwind nonnull writable sret(%"class.std::__cxx11::basic_string") align 8 %88, ptr noundef nonnull align 8 dereferenceable(160) %563, ptr noundef nonnull align 8 dereferenceable(24) %89, ptr noundef nonnull align 4 dereferenceable(4) @_ZN9NOMAD_4_3L22DISPLAY_PRECISION_FULLE)
          to label %566 unwind label %587

566:                                              ; preds = %565
  invoke void @_ZStplIcSt11char_traitsIcESaIcEENSt7__cxx1112basic_stringIT_T0_T1_EEPKS5_OS8_(ptr dead_on_unwind nonnull writable sret(%"class.std::__cxx11::basic_string") align 8 %87, ptr noundef nonnull @.str.27, ptr noundef nonnull align 8 dereferenceable(32) %88)
          to label %567 unwind label %589

567:                                              ; preds = %566
  invoke void @_ZN9NOMAD_4_310OutputInfo6addMsgERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE(ptr noundef nonnull align 8 dereferenceable(80) %82, ptr noundef nonnull align 8 dereferenceable(32) %87)
          to label %568 unwind label %591

568:                                              ; preds = %567
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %87) #8
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %88) #8
  call void @_ZN9NOMAD_4_313ArrayOfDoubleD1Ev(ptr noundef nonnull align 8 dereferenceable(24) %89) #8
  call void @_ZN9NOMAD_4_36DoubleD1Ev(ptr noundef nonnull align 8 dereferenceable(17) %90) #8
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %90) #8
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %89) #8
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %88) #8
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %87) #8
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %91) #8
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %92) #8
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %92) #8
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %91, ptr noundef nonnull @.str.28, ptr noundef nonnull align 1 dereferenceable(1) %92)
          to label %569 unwind label %597

569:                                              ; preds = %568
  invoke void @_ZN9NOMAD_4_310OutputInfo6addMsgERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE(ptr noundef nonnull align 8 dereferenceable(80) %82, ptr noundef nonnull align 8 dereferenceable(32) %91)
          to label %570 unwind label %599

570:                                              ; preds = %569
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %91) #8
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %92) #8
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %92) #8
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %91) #8
  br label %602

571:                                              ; preds = %548
  %572 = landingpad { ptr, i32 }
          cleanup
  br label %578

573:                                              ; preds = %553
  %574 = landingpad { ptr, i32 }
          cleanup
  br label %577

575:                                              ; preds = %554
  %576 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %84) #8
  br label %577

577:                                              ; preds = %575, %573
  %.pn262 = phi { ptr, i32 } [ %576, %575 ], [ %574, %573 ]
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %85) #8
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %85) #8
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %84) #8
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %83) #8
  br label %578

578:                                              ; preds = %577, %571
  %.pn262.pn = phi { ptr, i32 } [ %.pn262, %577 ], [ %572, %571 ]
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %83) #8
  br label %797

579:                                              ; preds = %555
  %580 = landingpad { ptr, i32 }
          cleanup
  br label %796

581:                                              ; preds = %559
  %582 = landingpad { ptr, i32 }
          cleanup
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %86) #8
  br label %796

583:                                              ; preds = %562
  %584 = landingpad { ptr, i32 }
          cleanup
  br label %596

585:                                              ; preds = %564
  %586 = landingpad { ptr, i32 }
          cleanup
  br label %595

587:                                              ; preds = %565
  %588 = landingpad { ptr, i32 }
          cleanup
  br label %594

589:                                              ; preds = %566
  %590 = landingpad { ptr, i32 }
          cleanup
  br label %593

591:                                              ; preds = %567
  %592 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %87) #8
  br label %593

593:                                              ; preds = %591, %589
  %.pn265 = phi { ptr, i32 } [ %592, %591 ], [ %590, %589 ]
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %88) #8
  br label %594

594:                                              ; preds = %593, %587
  %.pn265.pn = phi { ptr, i32 } [ %.pn265, %593 ], [ %588, %587 ]
  call void @_ZN9NOMAD_4_313ArrayOfDoubleD1Ev(ptr noundef nonnull align 8 dereferenceable(24) %89) #8
  br label %595

595:                                              ; preds = %594, %585
  %.pn265.pn.pn = phi { ptr, i32 } [ %.pn265.pn, %594 ], [ %586, %585 ]
  call void @_ZN9NOMAD_4_36DoubleD1Ev(ptr noundef nonnull align 8 dereferenceable(17) %90) #8
  br label %596

596:                                              ; preds = %595, %583
  %.pn265.pn.pn.pn = phi { ptr, i32 } [ %.pn265.pn.pn, %595 ], [ %584, %583 ]
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %90) #8
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %89) #8
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %88) #8
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %87) #8
  br label %796

597:                                              ; preds = %568
  %598 = landingpad { ptr, i32 }
          cleanup
  br label %601

599:                                              ; preds = %569
  %600 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %91) #8
  br label %601

601:                                              ; preds = %599, %597
  %.pn270 = phi { ptr, i32 } [ %600, %599 ], [ %598, %597 ]
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %92) #8
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %92) #8
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %91) #8
  br label %796

602:                                              ; preds = %570, %561
  call void @llvm.lifetime.start.p0(i64 24, ptr nonnull %93) #8
  %603 = call noundef nonnull align 8 dereferenceable(160) ptr @_ZNKSt23_Rb_tree_const_iteratorIN9NOMAD_4_39EvalPointEEdeEv(ptr noundef nonnull align 8 dereferenceable(8) %81) #8
  invoke void @_ZNK9NOMAD_4_39EvalPoint4getHENS_8EvalTypeENS_11ComputeTypeE(ptr dead_on_unwind nonnull writable sret(%"class.NOMAD_4_3::Double") align 8 %93, ptr noundef nonnull align 8 dereferenceable(160) %603, i32 noundef %124, i32 noundef %129)
          to label %604 unwind label %610

604:                                              ; preds = %602
  %605 = call noundef zeroext i1 @_ZNK9NOMAD_4_36Double9isDefinedEv(ptr noundef nonnull align 8 dereferenceable(17) %93)
  br i1 %605, label %606, label %.critedge

606:                                              ; preds = %604
  %607 = call noundef nonnull align 8 dereferenceable(160) ptr @_ZNKSt23_Rb_tree_const_iteratorIN9NOMAD_4_39EvalPointEEdeEv(ptr noundef nonnull align 8 dereferenceable(8) %81) #8
  %608 = invoke noundef zeroext i1 @_ZNK9NOMAD_4_39EvalPoint10isFeasibleENS_8EvalTypeENS_11ComputeTypeE(ptr noundef nonnull align 8 dereferenceable(160) %607, i32 noundef %124, i32 noundef %129)
          to label %609 unwind label %612

609:                                              ; preds = %606
  call void @_ZN9NOMAD_4_36DoubleD1Ev(ptr noundef nonnull align 8 dereferenceable(17) %93) #8
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %93) #8
  br label %615

610:                                              ; preds = %602
  %611 = landingpad { ptr, i32 }
          cleanup
  br label %614

612:                                              ; preds = %606
  %613 = landingpad { ptr, i32 }
          cleanup
  call void @_ZN9NOMAD_4_36DoubleD1Ev(ptr noundef nonnull align 8 dereferenceable(17) %93) #8
  br label %614

614:                                              ; preds = %612, %610
  %.pn272 = phi { ptr, i32 } [ %613, %612 ], [ %611, %610 ]
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %93) #8
  br label %796

.critedge:                                        ; preds = %604
  call void @_ZN9NOMAD_4_36DoubleD1Ev(ptr noundef nonnull align 8 dereferenceable(17) %93) #8
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %93) #8
  br label %615

615:                                              ; preds = %609, %.critedge
  %616 = call ptr @_ZNSt23_Rb_tree_const_iteratorIN9NOMAD_4_39EvalPointEEppEi(ptr noundef nonnull align 8 dereferenceable(8) %81, i32 noundef 0) #8
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %94) #8
  %617 = call ptr @_ZNKSt3setIN9NOMAD_4_39EvalPointENS0_25NMSimplexEvalPointCompareESaIS1_EE3endEv(ptr noundef nonnull align 8 dereferenceable(48) %47) #8
  store ptr %617, ptr %94, align 8
  %618 = call noundef zeroext i1 @_ZStneRKSt23_Rb_tree_const_iteratorIN9NOMAD_4_39EvalPointEES4_(ptr noundef nonnull align 8 dereferenceable(8) %81, ptr noundef nonnull align 8 dereferenceable(8) %94) #8
  br i1 %618, label %.lr.ph421, label %.critedge5

.lr.ph421:                                        ; preds = %615, %740
  %.0196419 = phi i32 [ %.3199, %740 ], [ 1, %615 ]
  %619 = call noundef ptr @_ZNKSt19__shared_ptr_accessIN9NOMAD_4_315AlgoStopReasonsINS0_10NMStopTypeEEELN9__gnu_cxx12_Lock_policyE2ELb0ELb0EEptEv(ptr noundef nonnull align 1 dereferenceable(1) %76) #8
  %620 = load ptr, ptr %619, align 8, !tbaa !32
  %621 = getelementptr inbounds i8, ptr %620, i64 32
  %622 = load ptr, ptr %621, align 8
  %623 = invoke noundef zeroext i1 %622(ptr noundef nonnull align 8 dereferenceable(40) %619)
          to label %624 unwind label %629

624:                                              ; preds = %.lr.ph421
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %94) #8
  br i1 %623, label %.thread397, label %625

625:                                              ; preds = %624
  %626 = call noundef ptr @_ZNKSt19__shared_ptr_accessISt3setIN9NOMAD_4_39EvalPointENS1_25NMSimplexEvalPointCompareESaIS2_EELN9__gnu_cxx12_Lock_policyE2ELb0ELb0EEptEv(ptr noundef nonnull align 1 dereferenceable(1) %202) #8
  %627 = call noundef i64 @_ZNKSt3setIN9NOMAD_4_39EvalPointENS0_25NMSimplexEvalPointCompareESaIS1_EE4sizeEv(ptr noundef nonnull align 8 dereferenceable(48) %626) #8
  %628 = icmp eq i64 %627, %210
  br i1 %628, label %.thread397, label %631

629:                                              ; preds = %.lr.ph421
  %630 = landingpad { ptr, i32 }
          cleanup
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %94) #8
  br label %796

631:                                              ; preds = %625
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %95) #8
  store i32 9, ptr %95, align 4, !tbaa !36
  %632 = invoke noundef zeroext i1 @_ZN9NOMAD_4_311OutputQueue9GoodLevelERKNS_11OutputLevelE(ptr noundef nonnull align 4 dereferenceable(4) %95)
          to label %633 unwind label %643

633:                                              ; preds = %631
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %95) #8
  br i1 %632, label %634, label %665

634:                                              ; preds = %633
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %96) #8
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %97) #8
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %98) #8
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %99) #8
  call void @_ZNSt7__cxx119to_stringEi(ptr dead_on_unwind nonnull writable sret(%"class.std::__cxx11::basic_string") align 8 %99, i32 noundef %.0196419) #8
  invoke void @_ZStplIcSt11char_traitsIcESaIcEENSt7__cxx1112basic_stringIT_T0_T1_EEPKS5_OS8_(ptr dead_on_unwind nonnull writable sret(%"class.std::__cxx11::basic_string") align 8 %98, ptr noundef nonnull @.str.29, ptr noundef nonnull align 8 dereferenceable(32) %99)
          to label %635 unwind label %645

635:                                              ; preds = %634
  invoke void @_ZStplIcSt11char_traitsIcESaIcEENSt7__cxx1112basic_stringIT_T0_T1_EEOS8_PKS5_(ptr dead_on_unwind nonnull writable sret(%"class.std::__cxx11::basic_string") align 8 %97, ptr noundef nonnull align 8 dereferenceable(32) %98, ptr noundef nonnull @.str.30)
          to label %636 unwind label %647

636:                                              ; preds = %635
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %100) #8
  %637 = call noundef nonnull align 8 dereferenceable(160) ptr @_ZNKSt23_Rb_tree_const_iteratorIN9NOMAD_4_39EvalPointEEdeEv(ptr noundef nonnull align 8 dereferenceable(8) %81) #8
  call void @llvm.lifetime.start.p0(i64 24, ptr nonnull %101) #8
  call void @llvm.lifetime.start.p0(i64 24, ptr nonnull %102) #8
  invoke void @_ZN9NOMAD_4_36DoubleC1Ev(ptr noundef nonnull align 8 dereferenceable(17) %102)
          to label %638 unwind label %649

638:                                              ; preds = %636
  invoke void @_ZN9NOMAD_4_313ArrayOfDoubleC1EmRKNS_6DoubleE(ptr noundef nonnull align 8 dereferenceable(24) %101, i64 noundef 0, ptr noundef nonnull align 8 dereferenceable(17) %102)
          to label %639 unwind label %651

639:                                              ; preds = %638
  invoke void @_ZNK9NOMAD_4_39EvalPoint7displayB5cxx11ERKNS_13ArrayOfDoubleERKi(ptr dead_on_unwind nonnull writable sret(%"class.std::__cxx11::basic_string") align 8 %100, ptr noundef nonnull align 8 dereferenceable(160) %637, ptr noundef nonnull align 8 dereferenceable(24) %101, ptr noundef nonnull align 4 dereferenceable(4) @_ZN9NOMAD_4_3L22DISPLAY_PRECISION_FULLE)
          to label %640 unwind label %653

640:                                              ; preds = %639
  invoke void @_ZStplIcSt11char_traitsIcESaIcEENSt7__cxx1112basic_stringIT_T0_T1_EEOS8_S9_(ptr dead_on_unwind nonnull writable sret(%"class.std::__cxx11::basic_string") align 8 %96, ptr noundef nonnull align 8 dereferenceable(32) %97, ptr noundef nonnull align 8 dereferenceable(32) %100)
          to label %641 unwind label %655

641:                                              ; preds = %640
  invoke void @_ZN9NOMAD_4_310OutputInfo6addMsgERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE(ptr noundef nonnull align 8 dereferenceable(80) %82, ptr noundef nonnull align 8 dereferenceable(32) %96)
          to label %642 unwind label %657

642:                                              ; preds = %641
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %96) #8
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %100) #8
  call void @_ZN9NOMAD_4_313ArrayOfDoubleD1Ev(ptr noundef nonnull align 8 dereferenceable(24) %101) #8
  call void @_ZN9NOMAD_4_36DoubleD1Ev(ptr noundef nonnull align 8 dereferenceable(17) %102) #8
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %102) #8
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %101) #8
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %100) #8
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %97) #8
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %98) #8
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %99) #8
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %99) #8
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %98) #8
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %97) #8
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %96) #8
  br label %665

643:                                              ; preds = %631
  %644 = landingpad { ptr, i32 }
          cleanup
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %95) #8
  br label %796

645:                                              ; preds = %634
  %646 = landingpad { ptr, i32 }
          cleanup
  br label %664

647:                                              ; preds = %635
  %648 = landingpad { ptr, i32 }
          cleanup
  br label %663

649:                                              ; preds = %636
  %650 = landingpad { ptr, i32 }
          cleanup
  br label %662

651:                                              ; preds = %638
  %652 = landingpad { ptr, i32 }
          cleanup
  br label %661

653:                                              ; preds = %639
  %654 = landingpad { ptr, i32 }
          cleanup
  br label %660

655:                                              ; preds = %640
  %656 = landingpad { ptr, i32 }
          cleanup
  br label %659

657:                                              ; preds = %641
  %658 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %96) #8
  br label %659

659:                                              ; preds = %657, %655
  %.pn274 = phi { ptr, i32 } [ %658, %657 ], [ %656, %655 ]
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %100) #8
  br label %660

660:                                              ; preds = %659, %653
  %.pn274.pn = phi { ptr, i32 } [ %.pn274, %659 ], [ %654, %653 ]
  call void @_ZN9NOMAD_4_313ArrayOfDoubleD1Ev(ptr noundef nonnull align 8 dereferenceable(24) %101) #8
  br label %661

661:                                              ; preds = %660, %651
  %.pn274.pn.pn = phi { ptr, i32 } [ %.pn274.pn, %660 ], [ %652, %651 ]
  call void @_ZN9NOMAD_4_36DoubleD1Ev(ptr noundef nonnull align 8 dereferenceable(17) %102) #8
  br label %662

662:                                              ; preds = %661, %649
  %.pn274.pn.pn.pn = phi { ptr, i32 } [ %.pn274.pn.pn, %661 ], [ %650, %649 ]
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %102) #8
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %101) #8
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %100) #8
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %97) #8
  br label %663

663:                                              ; preds = %662, %647
  %.pn274.pn.pn.pn.pn = phi { ptr, i32 } [ %.pn274.pn.pn.pn, %662 ], [ %648, %647 ]
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %98) #8
  br label %664

664:                                              ; preds = %663, %645
  %.pn274.pn.pn.pn.pn.pn = phi { ptr, i32 } [ %.pn274.pn.pn.pn.pn, %663 ], [ %646, %645 ]
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %99) #8
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %99) #8
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %98) #8
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %97) #8
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %96) #8
  br label %796

665:                                              ; preds = %642, %633
  %666 = call noundef ptr @_ZNKSt19__shared_ptr_accessISt3setIN9NOMAD_4_39EvalPointENS1_25NMSimplexEvalPointCompareESaIS2_EELN9__gnu_cxx12_Lock_policyE2ELb0ELb0EEptEv(ptr noundef nonnull align 1 dereferenceable(1) %202) #8
  %667 = call noundef nonnull align 8 dereferenceable(160) ptr @_ZNKSt23_Rb_tree_const_iteratorIN9NOMAD_4_39EvalPointEEdeEv(ptr noundef nonnull align 8 dereferenceable(8) %81) #8
  %668 = invoke { ptr, i8 } @_ZNSt3setIN9NOMAD_4_39EvalPointENS0_25NMSimplexEvalPointCompareESaIS1_EE6insertERKS1_(ptr noundef nonnull align 8 dereferenceable(48) %666, ptr noundef nonnull align 8 dereferenceable(160) %667)
          to label %669 unwind label %.loopexit

669:                                              ; preds = %665
  %.fca.0.extract = extractvalue { ptr, i8 } %668, 0
  %.fca.1.extract = extractvalue { ptr, i8 } %668, 1
  %670 = trunc i8 %.fca.1.extract to i1
  br i1 %670, label %686, label %671

671:                                              ; preds = %669
  %672 = call noundef ptr @_ZNKSt19__shared_ptr_accessIN9NOMAD_4_315AlgoStopReasonsINS0_10NMStopTypeEEELN9__gnu_cxx12_Lock_policyE2ELb0ELb0EEptEv(ptr noundef nonnull align 1 dereferenceable(1) %76) #8
  invoke void @_ZN9NOMAD_4_315AlgoStopReasonsINS_10NMStopTypeEE3setES1_(ptr noundef nonnull align 8 dereferenceable(40) %672, i32 noundef 3)
          to label %673 unwind label %.loopexit.split-lp

673:                                              ; preds = %671
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %103) #8
  store i32 7, ptr %103, align 4, !tbaa !36
  %674 = invoke noundef zeroext i1 @_ZN9NOMAD_4_311OutputQueue9GoodLevelERKNS_11OutputLevelE(ptr noundef nonnull align 4 dereferenceable(4) %103)
          to label %675 unwind label %679

675:                                              ; preds = %673
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %103) #8
  br i1 %674, label %676, label %.thread397

676:                                              ; preds = %675
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %104) #8
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %105) #8
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %105) #8
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %104, ptr noundef nonnull @.str.31, ptr noundef nonnull align 1 dereferenceable(1) %105)
          to label %677 unwind label %681

677:                                              ; preds = %676
  invoke void @_ZNK9NOMAD_4_34Step13AddOutputInfoERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEENS_11OutputLevelE(ptr noundef nonnull align 8 dereferenceable(140) %0, ptr noundef nonnull align 8 dereferenceable(32) %104, i32 noundef 7)
          to label %678 unwind label %683

678:                                              ; preds = %677
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %104) #8
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %105) #8
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %105) #8
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %104) #8
  br label %.thread397

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

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

679:                                              ; preds = %673
  %680 = landingpad { ptr, i32 }
          cleanup
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %103) #8
  br label %796

681:                                              ; preds = %676
  %682 = landingpad { ptr, i32 }
          cleanup
  br label %685

683:                                              ; preds = %677
  %684 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %104) #8
  br label %685

685:                                              ; preds = %683, %681
  %.pn281 = phi { ptr, i32 } [ %684, %683 ], [ %682, %681 ]
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %105) #8
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %105) #8
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %104) #8
  br label %796

686:                                              ; preds = %669
  %687 = invoke noundef i32 @_ZNK9NOMAD_4_316NMIterationUtils9getRankDZEv(ptr noundef nonnull align 8 dereferenceable(440) %201)
          to label %688 unwind label %.loopexit405

688:                                              ; preds = %686
  %689 = icmp slt i32 %687, 1
  br i1 %689, label %690, label %705

690:                                              ; preds = %688
  %691 = call noundef ptr @_ZNKSt19__shared_ptr_accessIN9NOMAD_4_315AlgoStopReasonsINS0_10NMStopTypeEEELN9__gnu_cxx12_Lock_policyE2ELb0ELb0EEptEv(ptr noundef nonnull align 1 dereferenceable(1) %76) #8
  invoke void @_ZN9NOMAD_4_315AlgoStopReasonsINS_10NMStopTypeEE3setES1_(ptr noundef nonnull align 8 dereferenceable(40) %691, i32 noundef 3)
          to label %692 unwind label %.loopexit.split-lp406

692:                                              ; preds = %690
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %106) #8
  store i32 7, ptr %106, align 4, !tbaa !36
  %693 = invoke noundef zeroext i1 @_ZN9NOMAD_4_311OutputQueue9GoodLevelERKNS_11OutputLevelE(ptr noundef nonnull align 4 dereferenceable(4) %106)
          to label %694 unwind label %698

694:                                              ; preds = %692
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %106) #8
  br i1 %693, label %695, label %.thread397

695:                                              ; preds = %694
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %107) #8
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %108) #8
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %108) #8
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %107, ptr noundef nonnull @.str.32, ptr noundef nonnull align 1 dereferenceable(1) %108)
          to label %696 unwind label %700

696:                                              ; preds = %695
  invoke void @_ZNK9NOMAD_4_34Step13AddOutputInfoERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEENS_11OutputLevelE(ptr noundef nonnull align 8 dereferenceable(140) %0, ptr noundef nonnull align 8 dereferenceable(32) %107, i32 noundef 7)
          to label %697 unwind label %702

697:                                              ; preds = %696
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %107) #8
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %108) #8
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %108) #8
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %107) #8
  br label %.thread397

.loopexit405:                                     ; preds = %686, %719, %735
  %lpad.loopexit407 = landingpad { ptr, i32 }
          cleanup
  br label %796

.loopexit.split-lp406:                            ; preds = %690
  %lpad.loopexit.split-lp408 = landingpad { ptr, i32 }
          cleanup
  br label %796

698:                                              ; preds = %692
  %699 = landingpad { ptr, i32 }
          cleanup
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %106) #8
  br label %796

700:                                              ; preds = %695
  %701 = landingpad { ptr, i32 }
          cleanup
  br label %704

702:                                              ; preds = %696
  %703 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %107) #8
  br label %704

704:                                              ; preds = %702, %700
  %.pn287 = phi { ptr, i32 } [ %703, %702 ], [ %701, %700 ]
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %108) #8
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %108) #8
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %107) #8
  br label %796

705:                                              ; preds = %688
  %.not = icmp eq i32 %687, %.0196419
  br i1 %.not, label %722, label %706

706:                                              ; preds = %705
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %109) #8
  store i32 9, ptr %109, align 4, !tbaa !36
  %707 = invoke noundef zeroext i1 @_ZN9NOMAD_4_311OutputQueue9GoodLevelERKNS_11OutputLevelE(ptr noundef nonnull align 4 dereferenceable(4) %109)
          to label %708 unwind label %712

708:                                              ; preds = %706
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %109) #8
  br i1 %707, label %709, label %719

709:                                              ; preds = %708
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %110) #8
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %111) #8
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %111) #8
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %110, ptr noundef nonnull @.str.33, ptr noundef nonnull align 1 dereferenceable(1) %111)
          to label %710 unwind label %714

710:                                              ; preds = %709
  invoke void @_ZN9NOMAD_4_310OutputInfo6addMsgERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE(ptr noundef nonnull align 8 dereferenceable(80) %82, ptr noundef nonnull align 8 dereferenceable(32) %110)
          to label %711 unwind label %716

711:                                              ; preds = %710
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %110) #8
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %111) #8
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %111) #8
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %110) #8
  br label %719

712:                                              ; preds = %706
  %713 = landingpad { ptr, i32 }
          cleanup
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %109) #8
  br label %796

714:                                              ; preds = %709
  %715 = landingpad { ptr, i32 }
          cleanup
  br label %718

716:                                              ; preds = %710
  %717 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %110) #8
  br label %718

718:                                              ; preds = %716, %714
  %.pn285 = phi { ptr, i32 } [ %717, %716 ], [ %715, %714 ]
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %111) #8
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %111) #8
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %110) #8
  br label %796

719:                                              ; preds = %711, %708
  %720 = call noundef ptr @_ZNKSt19__shared_ptr_accessISt3setIN9NOMAD_4_39EvalPointENS1_25NMSimplexEvalPointCompareESaIS2_EELN9__gnu_cxx12_Lock_policyE2ELb0ELb0EEptEv(ptr noundef nonnull align 1 dereferenceable(1) %202) #8
  %721 = invoke ptr @_ZNSt3setIN9NOMAD_4_39EvalPointENS0_25NMSimplexEvalPointCompareESaIS1_EE5eraseB5cxx11ESt23_Rb_tree_const_iteratorIS1_E(ptr noundef nonnull align 8 dereferenceable(48) %720, ptr %.fca.0.extract)
          to label %740 unwind label %.loopexit405

722:                                              ; preds = %705
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %112) #8
  store i32 9, ptr %112, align 4, !tbaa !36
  %723 = invoke noundef zeroext i1 @_ZN9NOMAD_4_311OutputQueue9GoodLevelERKNS_11OutputLevelE(ptr noundef nonnull align 4 dereferenceable(4) %112)
          to label %724 unwind label %728

724:                                              ; preds = %722
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %112) #8
  br i1 %723, label %725, label %735

725:                                              ; preds = %724
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %113) #8
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %114) #8
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %114) #8
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %113, ptr noundef nonnull @.str.34, ptr noundef nonnull align 1 dereferenceable(1) %114)
          to label %726 unwind label %730

726:                                              ; preds = %725
  invoke void @_ZN9NOMAD_4_310OutputInfo6addMsgERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE(ptr noundef nonnull align 8 dereferenceable(80) %82, ptr noundef nonnull align 8 dereferenceable(32) %113)
          to label %727 unwind label %732

727:                                              ; preds = %726
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %113) #8
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %114) #8
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %114) #8
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %113) #8
  br label %735

728:                                              ; preds = %722
  %729 = landingpad { ptr, i32 }
          cleanup
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %112) #8
  br label %796

730:                                              ; preds = %725
  %731 = landingpad { ptr, i32 }
          cleanup
  br label %734

732:                                              ; preds = %726
  %733 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %113) #8
  br label %734

734:                                              ; preds = %732, %730
  %.pn283 = phi { ptr, i32 } [ %733, %732 ], [ %731, %730 ]
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %114) #8
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %114) #8
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %113) #8
  br label %796

735:                                              ; preds = %727, %724
  %736 = call noundef nonnull align 8 dereferenceable(160) ptr @_ZNKSt23_Rb_tree_const_iteratorIN9NOMAD_4_39EvalPointEEdeEv(ptr noundef nonnull align 8 dereferenceable(8) %81) #8
  %737 = invoke noundef zeroext i1 @_ZNK9NOMAD_4_39EvalPoint10isFeasibleENS_8EvalTypeENS_11ComputeTypeE(ptr noundef nonnull align 8 dereferenceable(160) %736, i32 noundef %124, i32 noundef %129)
          to label %738 unwind label %.loopexit405

738:                                              ; preds = %735
  %739 = add nuw nsw i32 %.0196419, 1
  br label %740

740:                                              ; preds = %719, %738
  %.3199 = phi i32 [ %739, %738 ], [ %.0196419, %719 ]
  %741 = call ptr @_ZNSt23_Rb_tree_const_iteratorIN9NOMAD_4_39EvalPointEEppEi(ptr noundef nonnull align 8 dereferenceable(8) %81, i32 noundef 0) #8
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %94) #8
  %742 = call ptr @_ZNKSt3setIN9NOMAD_4_39EvalPointENS0_25NMSimplexEvalPointCompareESaIS1_EE3endEv(ptr noundef nonnull align 8 dereferenceable(48) %47) #8
  store ptr %742, ptr %94, align 8
  %743 = call noundef zeroext i1 @_ZStneRKSt23_Rb_tree_const_iteratorIN9NOMAD_4_39EvalPointEES4_(ptr noundef nonnull align 8 dereferenceable(8) %81, ptr noundef nonnull align 8 dereferenceable(8) %94) #8
  br i1 %743, label %.lr.ph421, label %.critedge5

.critedge5:                                       ; preds = %740, %615
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %94) #8
  br label %.thread397

.thread397:                                       ; preds = %625, %624, %694, %697, %675, %678, %.critedge5
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %115) #8
  store i32 9, ptr %115, align 4, !tbaa !36
  %744 = invoke noundef zeroext i1 @_ZN9NOMAD_4_311OutputQueue9GoodLevelERKNS_11OutputLevelE(ptr noundef nonnull align 4 dereferenceable(4) %115)
          to label %745 unwind label %749

745:                                              ; preds = %.thread397
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %115) #8
  br i1 %744, label %746, label %755

746:                                              ; preds = %745
  invoke void @_ZN9NOMAD_4_310OutputInfoC2EOS0_(ptr noundef nonnull align 8 dereferenceable(80) %116, ptr noundef nonnull align 8 dereferenceable(80) %82)
          to label %747 unwind label %751

747:                                              ; preds = %746
  invoke void @_ZN9NOMAD_4_311OutputQueue3AddENS_10OutputInfoE(ptr noundef nonnull %116)
          to label %748 unwind label %753

748:                                              ; preds = %747
  call void @_ZN9NOMAD_4_310OutputInfoD2Ev(ptr noundef nonnull align 8 dereferenceable(80) %116) #8
  br label %755

749:                                              ; preds = %.thread397
  %750 = landingpad { ptr, i32 }
          cleanup
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %115) #8
  br label %796

751:                                              ; preds = %794, %793, %778, %774, %759, %746
  %752 = landingpad { ptr, i32 }
          cleanup
  br label %796

753:                                              ; preds = %747
  %754 = landingpad { ptr, i32 }
          cleanup
  call void @_ZN9NOMAD_4_310OutputInfoD2Ev(ptr noundef nonnull align 8 dereferenceable(80) %116) #8
  br label %796

755:                                              ; preds = %748, %745
  %756 = call noundef ptr @_ZNKSt19__shared_ptr_accessISt3setIN9NOMAD_4_39EvalPointENS1_25NMSimplexEvalPointCompareESaIS2_EELN9__gnu_cxx12_Lock_policyE2ELb0ELb0EEptEv(ptr noundef nonnull align 1 dereferenceable(1) %202) #8
  %757 = call noundef i64 @_ZNKSt3setIN9NOMAD_4_39EvalPointENS0_25NMSimplexEvalPointCompareESaIS1_EE4sizeEv(ptr noundef nonnull align 8 dereferenceable(48) %756) #8
  %758 = icmp ult i64 %757, %210
  br i1 %758, label %759, label %774

759:                                              ; preds = %755
  %760 = call noundef ptr @_ZNKSt19__shared_ptr_accessIN9NOMAD_4_315AlgoStopReasonsINS0_10NMStopTypeEEELN9__gnu_cxx12_Lock_policyE2ELb0ELb0EEptEv(ptr noundef nonnull align 1 dereferenceable(1) %76) #8
  invoke void @_ZN9NOMAD_4_315AlgoStopReasonsINS_10NMStopTypeEE3setES1_(ptr noundef nonnull align 8 dereferenceable(40) %760, i32 noundef 3)
          to label %761 unwind label %751

761:                                              ; preds = %759
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %117) #8
  store i32 7, ptr %117, align 4, !tbaa !36
  %762 = invoke noundef zeroext i1 @_ZN9NOMAD_4_311OutputQueue9GoodLevelERKNS_11OutputLevelE(ptr noundef nonnull align 4 dereferenceable(4) %117)
          to label %763 unwind label %767

763:                                              ; preds = %761
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %117) #8
  br i1 %762, label %764, label %795

764:                                              ; preds = %763
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %118) #8
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %119) #8
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %119) #8
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %118, ptr noundef nonnull @.str.35, ptr noundef nonnull align 1 dereferenceable(1) %119)
          to label %765 unwind label %769

765:                                              ; preds = %764
  invoke void @_ZNK9NOMAD_4_34Step13AddOutputInfoERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEENS_11OutputLevelE(ptr noundef nonnull align 8 dereferenceable(140) %0, ptr noundef nonnull align 8 dereferenceable(32) %118, i32 noundef 7)
          to label %766 unwind label %771

766:                                              ; preds = %765
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %118) #8
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %119) #8
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %119) #8
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %118) #8
  br label %795

767:                                              ; preds = %761
  %768 = landingpad { ptr, i32 }
          cleanup
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %117) #8
  br label %796

769:                                              ; preds = %764
  %770 = landingpad { ptr, i32 }
          cleanup
  br label %773

771:                                              ; preds = %765
  %772 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %118) #8
  br label %773

773:                                              ; preds = %771, %769
  %.pn294 = phi { ptr, i32 } [ %772, %771 ], [ %770, %769 ]
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %119) #8
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %119) #8
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %118) #8
  br label %796

774:                                              ; preds = %755
  %775 = invoke noundef i32 @_ZNK9NOMAD_4_316NMIterationUtils9getRankDZEv(ptr noundef nonnull align 8 dereferenceable(440) %201)
          to label %776 unwind label %751

776:                                              ; preds = %774
  %777 = trunc i64 %209 to i32
  %.not291 = icmp eq i32 %775, %777
  br i1 %.not291, label %793, label %778

778:                                              ; preds = %776
  %779 = call noundef ptr @_ZNKSt19__shared_ptr_accessIN9NOMAD_4_315AlgoStopReasonsINS0_10NMStopTypeEEELN9__gnu_cxx12_Lock_policyE2ELb0ELb0EEptEv(ptr noundef nonnull align 1 dereferenceable(1) %76) #8
  invoke void @_ZN9NOMAD_4_315AlgoStopReasonsINS_10NMStopTypeEE3setES1_(ptr noundef nonnull align 8 dereferenceable(40) %779, i32 noundef 3)
          to label %780 unwind label %751

780:                                              ; preds = %778
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %120) #8
  store i32 7, ptr %120, align 4, !tbaa !36
  %781 = invoke noundef zeroext i1 @_ZN9NOMAD_4_311OutputQueue9GoodLevelERKNS_11OutputLevelE(ptr noundef nonnull align 4 dereferenceable(4) %120)
          to label %782 unwind label %786

782:                                              ; preds = %780
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %120) #8
  br i1 %781, label %783, label %795

783:                                              ; preds = %782
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %121) #8
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %122) #8
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %122) #8
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %121, ptr noundef nonnull @.str.36, ptr noundef nonnull align 1 dereferenceable(1) %122)
          to label %784 unwind label %788

784:                                              ; preds = %783
  invoke void @_ZNK9NOMAD_4_34Step13AddOutputInfoERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEENS_11OutputLevelE(ptr noundef nonnull align 8 dereferenceable(140) %0, ptr noundef nonnull align 8 dereferenceable(32) %121, i32 noundef 7)
          to label %785 unwind label %790

785:                                              ; preds = %784
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %121) #8
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %122) #8
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %122) #8
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %121) #8
  br label %795

786:                                              ; preds = %780
  %787 = landingpad { ptr, i32 }
          cleanup
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %120) #8
  br label %796

788:                                              ; preds = %783
  %789 = landingpad { ptr, i32 }
          cleanup
  br label %792

790:                                              ; preds = %784
  %791 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %121) #8
  br label %792

792:                                              ; preds = %790, %788
  %.pn292 = phi { ptr, i32 } [ %791, %790 ], [ %789, %788 ]
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %122) #8
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %122) #8
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %121) #8
  br label %796

793:                                              ; preds = %776
  invoke void @_ZN9NOMAD_4_316NMIterationUtils22updateYCharacteristicsEv(ptr noundef nonnull align 8 dereferenceable(440) %201)
          to label %794 unwind label %751

794:                                              ; preds = %793
  invoke void @_ZNK9NOMAD_4_316NMIterationUtils12displayYInfoEv(ptr noundef nonnull align 8 dereferenceable(440) %201)
          to label %795 unwind label %751

795:                                              ; preds = %794, %782, %785, %763, %766
  %.0 = phi i1 [ false, %766 ], [ false, %763 ], [ false, %785 ], [ false, %782 ], [ true, %794 ]
  call void @_ZN9NOMAD_4_310OutputInfoD2Ev(ptr noundef nonnull align 8 dereferenceable(80) %82) #8
  call void @llvm.lifetime.end.p0(i64 80, ptr nonnull %82) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %81) #8
  br label %798

796:                                              ; preds = %.loopexit405, %.loopexit.split-lp406, %.loopexit, %.loopexit.split-lp, %614, %679, %685, %734, %728, %718, %712, %704, %698, %792, %786, %773, %767, %753, %751, %749, %664, %643, %629, %601, %596, %581, %579
  %.pn294.pn.pn.pn = phi { ptr, i32 } [ %.pn270, %601 ], [ %.pn265.pn.pn.pn, %596 ], [ %582, %581 ], [ %580, %579 ], [ %.pn272, %614 ], [ %.pn294, %773 ], [ %768, %767 ], [ %752, %751 ], [ %.pn292, %792 ], [ %787, %786 ], [ %754, %753 ], [ %750, %749 ], [ %.pn274.pn.pn.pn.pn.pn, %664 ], [ %644, %643 ], [ %630, %629 ], [ %.pn281, %685 ], [ %680, %679 ], [ %.pn287, %704 ], [ %699, %698 ], [ %.pn285, %718 ], [ %713, %712 ], [ %.pn283, %734 ], [ %729, %728 ], [ %lpad.loopexit, %.loopexit ], [ %lpad.loopexit.split-lp, %.loopexit.split-lp ], [ %lpad.loopexit407, %.loopexit405 ], [ %lpad.loopexit.split-lp408, %.loopexit.split-lp406 ]
  call void @_ZN9NOMAD_4_310OutputInfoD2Ev(ptr noundef nonnull align 8 dereferenceable(80) %82) #8
  br label %797

797:                                              ; preds = %796, %578
  %.pn294.pn.pn.pn.pn = phi { ptr, i32 } [ %.pn294.pn.pn.pn, %796 ], [ %.pn262.pn, %578 ]
  call void @llvm.lifetime.end.p0(i64 80, ptr nonnull %82) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %81) #8
  br label %799

798:                                              ; preds = %533, %536, %795
  %.1 = phi i1 [ %.0, %795 ], [ false, %536 ], [ false, %533 ]
  call void @_ZNSt12__shared_ptrIN9NOMAD_4_315AlgoStopReasonsINS0_10NMStopTypeEEELN9__gnu_cxx12_Lock_policyE2EED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %76) #8
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %76) #8
  call void @_ZNSt3setIN9NOMAD_4_39EvalPointENS0_25NMSimplexEvalPointCompareESaIS1_EED2Ev(ptr noundef nonnull align 8 dereferenceable(48) %47) #8
  call void @llvm.lifetime.end.p0(i64 48, ptr nonnull %47) #8
  call void @_ZNSt12__shared_ptrIN9NOMAD_4_38MeshBaseELN9__gnu_cxx12_Lock_policyE2EED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %31) #8
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %31) #8
  call void @_ZN9NOMAD_4_310OutputInfoD2Ev(ptr noundef nonnull align 8 dereferenceable(80) %27) #8
  call void @llvm.lifetime.end.p0(i64 80, ptr nonnull %27) #8
  call void @_ZN9NOMAD_4_313ArrayOfDoubleD1Ev(ptr noundef nonnull align 8 dereferenceable(24) %26) #8
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %26) #8
  call void @_ZN9NOMAD_4_36DoubleD1Ev(ptr noundef nonnull align 8 dereferenceable(17) %23) #8
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %23) #8
  call void @_ZNSt12__shared_ptrIN9NOMAD_4_311BarrierBaseELN9__gnu_cxx12_Lock_policyE2EED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %10) #8
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %10) #8
  call void @_ZNSt12__shared_ptrIN9NOMAD_4_39EvalPointELN9__gnu_cxx12_Lock_policyE2EED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %9) #8
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %9) #8
  call void @_ZNSt6vectorIN9NOMAD_4_39EvalPointESaIS1_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %8) #8
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %8) #8
  ret i1 %.1

799:                                              ; preds = %797, %547, %541, %539
  %.pn300.pn = phi { ptr, i32 } [ %.pn300, %547 ], [ %542, %541 ], [ %540, %539 ], [ %.pn294.pn.pn.pn.pn, %797 ]
  call void @_ZNSt12__shared_ptrIN9NOMAD_4_315AlgoStopReasonsINS0_10NMStopTypeEEELN9__gnu_cxx12_Lock_policyE2EED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %76) #8
  br label %800

800:                                              ; preds = %799, %537
  %.pn300.pn.pn = phi { ptr, i32 } [ %.pn300.pn, %799 ], [ %538, %537 ]
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %76) #8
  br label %801

801:                                              ; preds = %496, %501, %503, %505, %515, %524, %800, %347, %340, %334
  %.pn321.pn.pn.pn.pn.pn.pn.pn = phi { ptr, i32 } [ %.pn257, %340 ], [ %348, %347 ], [ %335, %334 ], [ %.pn321.pn.pn.pn.pn.pn, %496 ], [ %.pn300.pn.pn, %800 ], [ %.pn259.pn, %524 ], [ %516, %515 ], [ %506, %505 ], [ %504, %503 ], [ %502, %501 ]
  call void @_ZNSt3setIN9NOMAD_4_39EvalPointENS0_25NMSimplexEvalPointCompareESaIS1_EED2Ev(ptr noundef nonnull align 8 dereferenceable(48) %47) #8
  call void @llvm.lifetime.end.p0(i64 48, ptr nonnull %47) #8
  br label %802

802:                                              ; preds = %290, %291, %801, %325, %310, %309, %283, %282, %277
  %.pn321.pn.pn.pn.pn.pn.pn.pn.pn = phi { ptr, i32 } [ %.pn321.pn.pn.pn.pn.pn.pn.pn, %801 ], [ %.pn252.pn.pn.pn, %325 ], [ %311, %310 ], [ %.pn250, %309 ], [ %.pn247.pn374, %291 ], [ %.pn247, %290 ], [ %284, %283 ], [ %.pn245, %282 ], [ %.pn243, %277 ]
  call void @_ZNSt12__shared_ptrIN9NOMAD_4_38MeshBaseELN9__gnu_cxx12_Lock_policyE2EED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %31) #8
  br label %803

803:                                              ; preds = %802, %271
  %.pn321.pn.pn.pn.pn.pn.pn.pn.pn.pn = phi { ptr, i32 } [ %.pn321.pn.pn.pn.pn.pn.pn.pn.pn, %802 ], [ %272, %271 ]
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %31) #8
  call void @_ZN9NOMAD_4_310OutputInfoD2Ev(ptr noundef nonnull align 8 dereferenceable(80) %27) #8
  br label %804

804:                                              ; preds = %803, %270
  %.pn321.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn = phi { ptr, i32 } [ %.pn321.pn.pn.pn.pn.pn.pn.pn.pn.pn, %803 ], [ %.pn240.pn, %270 ]
  call void @llvm.lifetime.end.p0(i64 80, ptr nonnull %27) #8
  call void @_ZN9NOMAD_4_313ArrayOfDoubleD1Ev(ptr noundef nonnull align 8 dereferenceable(24) %26) #8
  br label %805

805:                                              ; preds = %804, %261
  %.pn321.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn = phi { ptr, i32 } [ %.pn321.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn, %804 ], [ %262, %261 ]
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %26) #8
  call void @_ZN9NOMAD_4_36DoubleD1Ev(ptr noundef nonnull align 8 dereferenceable(17) %23) #8
  br label %806

806:                                              ; preds = %805, %260
  %.pn321.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn = phi { ptr, i32 } [ %.pn321.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn, %805 ], [ %.pn238, %260 ]
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %23) #8
  br label %807

807:                                              ; preds = %255, %806, %198, %199, %179, %180, %191, %165, %163
  %.pn336.pn.pn = phi { ptr, i32 } [ %.pn336.pn366, %180 ], [ %.pn336, %179 ], [ %.pn.pn370, %199 ], [ %.pn, %198 ], [ %192, %191 ], [ %166, %165 ], [ %164, %163 ], [ %.pn321.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn, %806 ], [ %.pn236, %255 ]
  call void @_ZNSt12__shared_ptrIN9NOMAD_4_311BarrierBaseELN9__gnu_cxx12_Lock_policyE2EED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %10) #8
  br label %808

808:                                              ; preds = %807, %161
  %.pn336.pn.pn.pn = phi { ptr, i32 } [ %.pn336.pn.pn, %807 ], [ %162, %161 ]
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %10) #8
  call void @_ZNSt12__shared_ptrIN9NOMAD_4_39EvalPointELN9__gnu_cxx12_Lock_policyE2EED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %9) #8
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %9) #8
  call void @_ZNSt6vectorIN9NOMAD_4_39EvalPointESaIS1_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %8) #8
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %8) #8
  br label %809

809:                                              ; preds = %135, %149, %150, %808, %133
  %.pn341.pn.pn.pn.pn = phi { ptr, i32 } [ %134, %133 ], [ %136, %135 ], [ %.pn341.pn362, %150 ], [ %.pn341, %149 ], [ %.pn336.pn.pn.pn, %808 ]
  resume { ptr, i32 } %.pn341.pn.pn.pn.pn

810:                                              ; preds = %250, %190, %173, %143
  unreachable
}

; 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

declare void @_ZNK9NOMAD_4_34Step13AddOutputInfoERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEENS_11OutputLevelE(ptr noundef nonnull align 8 dereferenceable(140), ptr noundef nonnull align 8 dereferenceable(32), i32 noundef) local_unnamed_addr #3

; 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

; 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

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

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

; Function Attrs: mustprogress nounwind uwtable
declare dso_local void @_ZN9NOMAD_4_312EvcInterface19getEvaluatorControlEv(ptr dead_on_unwind noalias writable sret(%"class.std::shared_ptr.29") align 8) local_unnamed_addr #1 align 2

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

declare noundef i32 @_ZNK9NOMAD_4_316EvaluatorControl18getCurrentEvalTypeEi(ptr noundef nonnull align 8 dereferenceable(352), i32 noundef) local_unnamed_addr #3

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

declare noundef nonnull align 4 dereferenceable(4) ptr @_ZNK9NOMAD_4_316EvaluatorControl14getComputeTypeEi(ptr noundef nonnull align 8 dereferenceable(352), i32 noundef) local_unnamed_addr #3

; Function Attrs: mustprogress nofree nounwind willreturn memory(read)
declare ptr @__dynamic_cast(ptr, ptr, ptr, i64) local_unnamed_addr #5

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

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

declare void @_ZNK9NOMAD_4_34Step23getMegaIterationBarrierEv(ptr dead_on_unwind writable sret(%"class.std::shared_ptr.65") align 8, ptr noundef nonnull align 8 dereferenceable(140)) local_unnamed_addr #3

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

; 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

declare void @_ZNK9NOMAD_4_311BarrierBase12getAllPointsEv(ptr dead_on_unwind writable sret(%"class.std::vector.57") align 8, ptr noundef nonnull align 8 dereferenceable(120)) local_unnamed_addr #3

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

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

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

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

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

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

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

declare noundef ptr @_ZNK9NOMAD_4_39EvalPoint7getEvalENS_8EvalTypeE(ptr noundef nonnull align 8 dereferenceable(160), i32 noundef) local_unnamed_addr #3

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

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

; Function Attrs: mustprogress nounwind uwtable
declare dso_local noundef ptr @_ZNKSt19__shared_ptr_accessIN9NOMAD_4_312PbParametersELN9__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 nonnull align 8 dereferenceable(8) ptr @_ZNK9NOMAD_4_310Parameters17getAttributeValueImEERKT_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

; Function Attrs: mustprogress nounwind uwtable
declare dso_local noundef ptr @_ZNKSt19__shared_ptr_accessIN9NOMAD_4_313RunParametersELN9__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 nonnull align 8 dereferenceable(17) ptr @_ZNK9NOMAD_4_310Parameters17getAttributeValueINS_6DoubleEEERKT_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 void @_ZN9NOMAD_4_36DoubleC1ERKS0_(ptr noundef nonnull align 8 dereferenceable(17), ptr noundef nonnull align 8 dereferenceable(17)) unnamed_addr #3

declare void @_ZN9NOMAD_4_313ArrayOfDoubleC1EmRKNS_6DoubleE(ptr noundef nonnull align 8 dereferenceable(24), i64 noundef, ptr noundef nonnull align 8 dereferenceable(17)) unnamed_addr #3

; Function Attrs: mustprogress uwtable
declare dso_local void @_ZN9NOMAD_4_310OutputInfoC2ERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEES8_NS_11OutputLevelEbb(ptr noundef nonnull align 8 dereferenceable(80), ptr noundef nonnull align 8 dereferenceable(32), ptr noundef nonnull align 8 dereferenceable(32), i32 noundef, i1 noundef zeroext, i1 noundef zeroext) unnamed_addr #2 align 2

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

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

declare noundef nonnull align 8 dereferenceable(24) ptr @_ZN9NOMAD_4_313ArrayOfDoubleaSERKS0_(ptr noundef nonnull align 8 dereferenceable(24), ptr noundef nonnull align 8 dereferenceable(24)) local_unnamed_addr #3

; Function Attrs: nounwind
declare void @_ZN9NOMAD_4_313ArrayOfDoubleD1Ev(ptr noundef nonnull align 8 dereferenceable(24)) unnamed_addr #7

declare noundef zeroext i1 @_ZNK9NOMAD_4_313ArrayOfDouble9isDefinedEv(ptr noundef nonnull align 8 dereferenceable(24)) unnamed_addr #3

declare void @_ZN9NOMAD_4_36DoubleC1ERKd(ptr noundef nonnull align 8 dereferenceable(17), ptr noundef nonnull align 8 dereferenceable(8)) unnamed_addr #3

declare noundef nonnull align 8 dereferenceable(24) ptr @_ZN9NOMAD_4_313ArrayOfDoublemLERKNS_6DoubleE(ptr noundef nonnull align 8 dereferenceable(24), ptr noundef nonnull align 8 dereferenceable(17)) local_unnamed_addr #3

; Function Attrs: nounwind
declare void @_ZN9NOMAD_4_36DoubleD1Ev(ptr noundef nonnull align 8 dereferenceable(17)) unnamed_addr #7

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

declare void @_ZNK9NOMAD_4_313ArrayOfDouble7displayERKS0_RKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE(ptr dead_on_unwind writable sret(%"class.std::__cxx11::basic_string") align 8, ptr noundef nonnull align 8 dereferenceable(24), ptr noundef nonnull align 8 dereferenceable(24), ptr noundef nonnull align 8 dereferenceable(32)) unnamed_addr #3

declare void @_ZN9NOMAD_4_36DoubleC1Ev(ptr noundef nonnull align 8 dereferenceable(17)) unnamed_addr #3

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

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

declare noundef zeroext i1 @_ZNK9NOMAD_4_316EvaluatorControl11getUseCacheEi(ptr noundef nonnull align 8 dereferenceable(352), i32 noundef) local_unnamed_addr #3

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

declare noundef i64 @_ZNK9NOMAD_4_314CacheInterface12getAllPointsERSt6vectorINS_9EvalPointESaIS2_EE(ptr noundef nonnull align 8 dereferenceable(32), ptr noundef nonnull align 8 dereferenceable(24)) local_unnamed_addr #3

; Function Attrs: inlinehint mustprogress nounwind uwtable
declare dso_local void @_ZN9NOMAD_4_314CacheInterfaceD2Ev(ptr noundef nonnull align 8 dereferenceable(32)) unnamed_addr #6 align 2

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

; Function Attrs: mustprogress nounwind uwtable
declare dso_local ptr @_ZNSt6vectorIN9NOMAD_4_39EvalPointESaIS1_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_cxxneIPN9NOMAD_4_39EvalPointESt6vectorIS2_SaIS2_EEEEbRKNS_17__normal_iteratorIT_T0_EESC_(ptr noundef nonnull align 8 dereferenceable(8), ptr noundef nonnull align 8 dereferenceable(8)) local_unnamed_addr #6

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

declare noundef i32 @_ZNK9NOMAD_4_39EvalPoint13getEvalStatusENS_8EvalTypeE(ptr noundef nonnull align 8 dereferenceable(160), i32 noundef) local_unnamed_addr #3

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

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

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

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

declare void @_ZN9NOMAD_4_39EvalPointC1ERKS0_(ptr noundef nonnull align 8 dereferenceable(160), ptr noundef nonnull align 8 dereferenceable(160)) unnamed_addr #3

; Function Attrs: mustprogress uwtable
declare dso_local { ptr, i8 } @_ZNSt3setIN9NOMAD_4_39EvalPointENS0_25NMSimplexEvalPointCompareESaIS1_EE6insertERKS1_(ptr noundef nonnull align 8 dereferenceable(48), ptr noundef nonnull align 8 dereferenceable(160)) local_unnamed_addr #2 align 2

declare void @_ZNK9NOMAD_4_39EvalPoint7displayB5cxx11ERKNS_13ArrayOfDoubleERKi(ptr dead_on_unwind writable sret(%"class.std::__cxx11::basic_string") align 8, ptr noundef nonnull align 8 dereferenceable(160), ptr noundef nonnull align 8 dereferenceable(24), ptr noundef nonnull align 4 dereferenceable(4)) local_unnamed_addr #3

; Function Attrs: nounwind
declare void @_ZN9NOMAD_4_39EvalPointD1Ev(ptr noundef nonnull align 8 dereferenceable(160)) unnamed_addr #7

; Function Attrs: inlinehint mustprogress uwtable
declare dso_local void @_ZN9NOMAD_4_3miERKNS_6DoubleES2_(ptr dead_on_unwind noalias writable sret(%"class.NOMAD_4_3::Double") align 8, ptr noundef nonnull align 8 dereferenceable(17), ptr noundef nonnull align 8 dereferenceable(17)) local_unnamed_addr #4

declare noundef nonnull align 8 dereferenceable(17) ptr @_ZNK9NOMAD_4_313ArrayOfDoubleixEm(ptr noundef nonnull align 8 dereferenceable(24), i64 noundef) local_unnamed_addr #3

; Function Attrs: inlinehint mustprogress uwtable
declare dso_local noundef zeroext i1 @_ZN9NOMAD_4_3gtERKNS_6DoubleES2_(ptr noundef nonnull align 8 dereferenceable(17), ptr noundef nonnull align 8 dereferenceable(17)) local_unnamed_addr #4

declare void @_ZNK9NOMAD_4_36Double3absEv(ptr dead_on_unwind writable sret(%"class.NOMAD_4_3::Double") align 8, ptr noundef nonnull align 8 dereferenceable(17)) local_unnamed_addr #3

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

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

; Function Attrs: inlinehint mustprogress uwtable
declare dso_local void @_ZN9NOMAD_4_310OutputInfoC2EOS0_(ptr noundef nonnull align 8 dereferenceable(80), ptr noundef nonnull align 8 dereferenceable(80)) unnamed_addr #4 align 2

; Function Attrs: inlinehint mustprogress nounwind uwtable
declare dso_local void @_ZN9NOMAD_4_310OutputInfoD2Ev(ptr noundef nonnull align 8 dereferenceable(80)) unnamed_addr #6 align 2

; Function Attrs: mustprogress uwtable
declare dso_local void @_ZN9NOMAD_4_315AlgoStopReasonsINS_10NMStopTypeEE3getESt10shared_ptrINS_14AllStopReasonsEE(ptr dead_on_unwind noalias writable sret(%"class.std::shared_ptr.115") align 8, ptr noundef) local_unnamed_addr #2 align 2

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

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

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

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

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

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

declare void @_ZNK9NOMAD_4_39EvalPoint4getHENS_8EvalTypeENS_11ComputeTypeE(ptr dead_on_unwind writable sret(%"class.NOMAD_4_3::Double") align 8, ptr noundef nonnull align 8 dereferenceable(160), i32 noundef, i32 noundef) local_unnamed_addr #3

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

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

; Function Attrs: mustprogress nounwind uwtable
declare dso_local ptr @_ZNSt23_Rb_tree_const_iteratorIN9NOMAD_4_39EvalPointEEppEi(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 @_ZStneRKSt23_Rb_tree_const_iteratorIN9NOMAD_4_39EvalPointEES4_(ptr noundef nonnull align 8 dereferenceable(8), ptr noundef nonnull align 8 dereferenceable(8)) local_unnamed_addr #1

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

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

; 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 #6

declare noundef i32 @_ZNK9NOMAD_4_316NMIterationUtils9getRankDZEv(ptr noundef nonnull align 8 dereferenceable(440)) local_unnamed_addr #3

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

declare void @_ZN9NOMAD_4_316NMIterationUtils22updateYCharacteristicsEv(ptr noundef nonnull align 8 dereferenceable(440)) local_unnamed_addr #3

declare void @_ZNK9NOMAD_4_316NMIterationUtils12displayYInfoEv(ptr noundef nonnull align 8 dereferenceable(440)) local_unnamed_addr #3

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

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

; Function Attrs: mustprogress nounwind uwtable
declare dso_local void @_ZNSt12__shared_ptrIN9NOMAD_4_38MeshBaseELN9__gnu_cxx12_Lock_policyE2EED2Ev(ptr noundef nonnull align 8 dereferenceable(16)) 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 nounwind uwtable
declare dso_local void @_ZNSt12__shared_ptrIN9NOMAD_4_39EvalPointELN9__gnu_cxx12_Lock_policyE2EED2Ev(ptr noundef nonnull align 8 dereferenceable(16)) unnamed_addr #1 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

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 = { mustprogress nofree nounwind willreturn memory(read) }
attributes #6 = { inlinehint mustprogress nounwind uwtable "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }
attributes #7 = { nounwind "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }
attributes #8 = { nounwind }
attributes #9 = { 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_311ComputeTypeE", !7, i64 0}
!7 = !{!"omnipotent char", !8, i64 0}
!8 = !{!"Simple C++ TBAA"}
!9 = !{!10, !11, i64 8}
!10 = !{!"_ZTSN9NOMAD_4_34StepE", !11, i64 8, !12, i64 16, !13, i64 24, !16, i64 40, !18, i64 56, !20, i64 72, !30, i64 136}
!11 = !{!"any pointer", !7, i64 0}
!12 = !{!"_ZTSN9NOMAD_4_38StepTypeE", !7, i64 0}
!13 = !{!"_ZTSSt10shared_ptrIN9NOMAD_4_314AllStopReasonsEE", !14, i64 0}
!14 = !{!"_ZTSSt12__shared_ptrIN9NOMAD_4_314AllStopReasonsELN9__gnu_cxx12_Lock_policyE2EE", !11, i64 0, !15, i64 8}
!15 = !{!"_ZTSSt14__shared_countILN9__gnu_cxx12_Lock_policyE2EE", !11, i64 0}
!16 = !{!"_ZTSSt10shared_ptrIN9NOMAD_4_313RunParametersEE", !17, i64 0}
!17 = !{!"_ZTSSt12__shared_ptrIN9NOMAD_4_313RunParametersELN9__gnu_cxx12_Lock_policyE2EE", !11, i64 0, !15, i64 8}
!18 = !{!"_ZTSSt10shared_ptrIN9NOMAD_4_312PbParametersEE", !19, i64 0}
!19 = !{!"_ZTSSt12__shared_ptrIN9NOMAD_4_312PbParametersELN9__gnu_cxx12_Lock_policyE2EE", !11, i64 0, !15, i64 8}
!20 = !{!"_ZTSN9NOMAD_4_312SuccessStatsE", !21, i64 0, !29, i64 48, !29, i64 56}
!21 = !{!"_ZTSSt3mapISt4pairIN9NOMAD_4_38StepTypeENS1_11SuccessTypeEEmSt4lessIS4_ESaIS0_IKS4_mEEE", !22, i64 0}
!22 = !{!"_ZTSSt8_Rb_treeISt4pairIN9NOMAD_4_38StepTypeENS1_11SuccessTypeEES0_IKS4_mESt10_Select1stIS6_ESt4lessIS4_ESaIS6_EE", !23, i64 0}
!23 = !{!"_ZTSNSt8_Rb_treeISt4pairIN9NOMAD_4_38StepTypeENS1_11SuccessTypeEES0_IKS4_mESt10_Select1stIS6_ESt4lessIS4_ESaIS6_EE13_Rb_tree_implISA_Lb1EEE", !24, i64 0, !26, i64 8}
!24 = !{!"_ZTSSt20_Rb_tree_key_compareISt4lessISt4pairIN9NOMAD_4_38StepTypeENS2_11SuccessTypeEEEE", !25, i64 0}
!25 = !{!"_ZTSSt4lessISt4pairIN9NOMAD_4_38StepTypeENS1_11SuccessTypeEEE"}
!26 = !{!"_ZTSSt15_Rb_tree_header", !27, i64 0, !29, i64 32}
!27 = !{!"_ZTSSt18_Rb_tree_node_base", !28, i64 0, !11, i64 8, !11, i64 16, !11, i64 24}
!28 = !{!"_ZTSSt14_Rb_tree_color", !7, i64 0}
!29 = !{!"long", !7, i64 0}
!30 = !{!"_ZTSN9NOMAD_4_311SuccessTypeE", !7, i64 0}
!31 = !{!29, !29, i64 0}
!32 = !{!33, !33, i64 0}
!33 = !{!"vtable pointer", !8, i64 0}
!34 = !{!35, !35, i64 0}
!35 = !{!"double", !7, i64 0}
!36 = !{!37, !37, i64 0}
!37 = !{!"_ZTSN9NOMAD_4_311OutputLevelE", !7, i64 0}
!38 = distinct !{!38, !39}
!39 = !{!"llvm.loop.mustprogress"}


; Effective O3 passes: BDCEPass,ConstraintEliminationPass,CorrelatedValuePropagationPass,EarlyCSEPass,GVNPass,GlobalOptPass,IPSCCPPass,IndVarSimplifyPass,InferFunctionAttrsPass,InstCombinePass,InstSimplifyPass,JumpThreadingPass,LCSSAPass,LICMPass,LoopInstSimplifyPass,LoopRotatePass,LoopSimplifyCFGPass,LoopSimplifyPass,LoopUnrollPass,ReassociatePass,SROAPass,SimplifyCFGPass