; LLVM IR from buresjan/optim_lbm :: nomad/src/Algos/Mads/VNSSearchMethod.ll (ZN9NOMAD_4_315VNSSearchMethod6runImpEv)

; 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.28" = type { %"class.std::__shared_ptr.29" }
%"class.std::__shared_ptr.29" = 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::shared_ptr.67" = type { %"class.std::__shared_ptr.68" }
%"class.std::__shared_ptr.68" = type { ptr, %"class.std::__shared_count" }
%"class.std::shared_ptr.70" = type { %"class.std::__shared_ptr.71" }
%"class.std::__shared_ptr.71" = type { ptr, %"class.std::__shared_count" }
%"class.NOMAD_4_3::ArrayOfDouble" = type { ptr, i64, ptr }
%"class.std::shared_ptr.73" = type { %"class.std::__shared_ptr.74" }
%"class.std::__shared_ptr.74" = type { ptr, %"class.std::__shared_count" }
%"class.NOMAD_4_3::Double" = type <{ ptr, double, i8, [7 x i8] }>
%"class.std::vector.127" = type { %"struct.std::_Vector_base.128" }
%"struct.std::_Vector_base.128" = 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.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" }
%"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::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.NOMAD_4_3::VNSSearchMethod" = type { %"class.NOMAD_4_3::SearchMethodAlgo", i32, %"class.NOMAD_4_3::Point", double, i8, %"class.std::unique_ptr", %"class.std::shared_ptr.25" }
%"class.NOMAD_4_3::SearchMethodAlgo" = type { %"class.NOMAD_4_3::SearchMethodBase" }
%"class.NOMAD_4_3::SearchMethodBase" = type { %"class.NOMAD_4_3::Step.base", %"class.NOMAD_4_3::IterationUtils", i8, %"class.std::__cxx11::basic_string" }
%"class.NOMAD_4_3::Step.base" = 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 }>
%"class.std::shared_ptr" = type { %"class.std::__shared_ptr" }
%"class.std::__shared_ptr" = type { ptr, %"class.std::__shared_count" }
%"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::Point" = type { %"class.NOMAD_4_3::ArrayOfDouble" }
%"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.24" }
%"struct.std::_Head_base.24" = type { ptr }
%"class.std::shared_ptr.25" = type { %"class.std::__shared_ptr.26" }
%"class.std::__shared_ptr.26" = 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] }>

@_ZTIN9NOMAD_4_39ExceptionE = external constant ptr
@.str.13 = external hidden unnamed_addr constant [93 x i8], align 1
@.str.14 = external hidden unnamed_addr constant [43 x i8], align 1
@.str.15 = external hidden unnamed_addr constant [66 x i8], align 1
@.str.16 = external hidden unnamed_addr constant [25 x i8], align 1
@_ZN9NOMAD_4_3L16MODEL_MAX_OUTPUTE = external hidden constant double, align 8
@.str.17 = external hidden unnamed_addr constant [23 x i8], align 1
@.str.18 = external hidden unnamed_addr constant [53 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

; Function Attrs: mustprogress nounwind uwtable
declare dso_local void @_ZN9NOMAD_4_312EvcInterface19getEvaluatorControlEv(ptr dead_on_unwind noalias writable sret(%"class.std::shared_ptr.28") align 8) #1 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 1 dereferenceable(1) ptr @_ZNK9NOMAD_4_310Parameters17getAttributeValueIbEERKT_RKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEb(ptr noundef nonnull align 8 dereferenceable(496), ptr noundef nonnull align 8 dereferenceable(32), i1 noundef zeroext) #2 align 2

; 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 void @_ZN9NOMAD_4_316EvaluatorControl22selectCurrentEvaluatorENS_8EvalTypeE(ptr noundef nonnull align 8 dereferenceable(352), i32 noundef) #3

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

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

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

; 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

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

79:                                               ; preds = %1
  call void @llvm.lifetime.start.p0(i64 16, ptr %5) #7
  call void @_ZN9NOMAD_4_312EvcInterface19getEvaluatorControlEv(ptr dead_on_unwind writable sret(%"class.std::shared_ptr.28") align 8 %5)
  call void @llvm.lifetime.start.p0(i64 4, ptr %6) #7
  store i32 0, ptr %6, align 4, !tbaa !11
  call void @llvm.lifetime.start.p0(i64 4, ptr %7) #7
  %80 = call noundef ptr @_ZNKSt19__shared_ptr_accessIN9NOMAD_4_316EvaluatorControlELN9__gnu_cxx12_Lock_policyE2ELb0ELb0EEptEv(ptr noundef nonnull align 1 dereferenceable(1) %5) #7
  %81 = invoke noundef i32 @_ZNK9NOMAD_4_316EvaluatorControl18getCurrentEvalTypeEi(ptr noundef nonnull align 8 dereferenceable(352) %80, i32 noundef -1)
          to label %82 unwind label %90

82:                                               ; preds = %79
  store i32 %81, ptr %7, align 4, !tbaa !11
  %83 = load i32, ptr %7, align 4, !tbaa !11
  %84 = icmp eq i32 1, %83
  br i1 %84, label %85, label %111

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

87:                                               ; preds = %85
  call void @llvm.lifetime.start.p0(i64 32, ptr %12) #7
  call void @llvm.lifetime.start.p0(i64 1, ptr %13) #7
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %13) #7
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %12, ptr noundef @.str.14, ptr noundef nonnull align 1 dereferenceable(1) %13)
          to label %88 unwind label %98

88:                                               ; preds = %87
  invoke void @_ZN9NOMAD_4_39ExceptionC2ERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEmS8_(ptr noundef nonnull align 8 dereferenceable(112) %86, ptr noundef nonnull align 8 dereferenceable(32) %10, i64 noundef 132, ptr noundef nonnull align 8 dereferenceable(32) %12)
          to label %89 unwind label %102

89:                                               ; preds = %88
  store i1 false, ptr %14, align 1
  invoke void @__cxa_throw(ptr %86, ptr @_ZTIN9NOMAD_4_39ExceptionE, ptr @_ZN9NOMAD_4_39ExceptionD2Ev) #8
          to label %703 unwind label %102

90:                                               ; preds = %79
  %91 = landingpad { ptr, i32 }
          cleanup
  %92 = extractvalue { ptr, i32 } %91, 0
  store ptr %92, ptr %8, align 8
  %93 = extractvalue { ptr, i32 } %91, 1
  store i32 %93, ptr %9, align 4
  br label %692

94:                                               ; preds = %85
  %95 = landingpad { ptr, i32 }
          cleanup
  %96 = extractvalue { ptr, i32 } %95, 0
  store ptr %96, ptr %8, align 8
  %97 = extractvalue { ptr, i32 } %95, 1
  store i32 %97, ptr %9, align 4
  br label %107

98:                                               ; preds = %87
  %99 = landingpad { ptr, i32 }
          cleanup
  %100 = extractvalue { ptr, i32 } %99, 0
  store ptr %100, ptr %8, align 8
  %101 = extractvalue { ptr, i32 } %99, 1
  store i32 %101, ptr %9, align 4
  br label %106

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

106:                                              ; preds = %102, %98
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %13) #7
  call void @llvm.lifetime.end.p0(i64 1, ptr %13) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr %12) #7
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %10) #7
  br label %107

107:                                              ; preds = %106, %94
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %11) #7
  call void @llvm.lifetime.end.p0(i64 1, ptr %11) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr %10) #7
  %108 = load i1, ptr %14, align 1
  br i1 %108, label %109, label %110

109:                                              ; preds = %107
  call void @__cxa_free_exception(ptr %86) #7
  br label %110

110:                                              ; preds = %109, %107
  br label %692

111:                                              ; preds = %82
  call void @llvm.lifetime.start.p0(i64 8, ptr %15) #7
  %112 = call noundef ptr @_ZNKSt19__shared_ptr_accessIN9NOMAD_4_316EvaluatorControlELN9__gnu_cxx12_Lock_policyE2ELb0ELb0EEptEv(ptr noundef nonnull align 1 dereferenceable(1) %5) #7
  %113 = invoke noundef i64 @_ZNK9NOMAD_4_316EvaluatorControl9getBbEvalEv(ptr noundef nonnull align 8 dereferenceable(352) %112)
          to label %114 unwind label %159

114:                                              ; preds = %111
  store i64 %113, ptr %15, align 8, !tbaa !13
  %115 = load i64, ptr %15, align 8, !tbaa !13
  %116 = icmp eq i64 %115, 0
  br i1 %116, label %129, label %117

117:                                              ; preds = %114
  %118 = getelementptr inbounds i8, ptr %77, i64 144
  %119 = getelementptr inbounds %"class.NOMAD_4_3::IterationUtils", ptr %118, i32 0, i32 6
  %120 = invoke noundef i64 @_ZNK9NOMAD_4_315TrialPointStats14getNbEvalsDoneENS_8EvalTypeEb(ptr noundef nonnull align 8 dereferenceable(232) %119, i32 noundef 0, i1 noundef zeroext true)
          to label %121 unwind label %159

121:                                              ; preds = %117
  %122 = uitofp i64 %120 to double
  %123 = load i64, ptr %15, align 8, !tbaa !13
  %124 = uitofp i64 %123 to double
  %125 = fdiv double %122, %124
  %126 = getelementptr inbounds %"class.NOMAD_4_3::VNSSearchMethod", ptr %77, i32 0, i32 3
  %127 = load double, ptr %126, align 8, !tbaa !15
  %128 = fcmp olt double %125, %127
  br i1 %128, label %129, label %665

129:                                              ; preds = %121, %114
  call void @llvm.lifetime.start.p0(i64 16, ptr %16) #7
  call void @_ZNSt10shared_ptrIN9NOMAD_4_39EvalPointEEC2EDn(ptr noundef nonnull align 8 dereferenceable(16) %16, ptr null) #7
  call void @llvm.lifetime.start.p0(i64 16, ptr %17) #7
  call void @_ZNSt10shared_ptrIN9NOMAD_4_311BarrierBaseEEC2EDn(ptr noundef nonnull align 8 dereferenceable(16) %17, ptr null) #7
  call void @llvm.lifetime.start.p0(i64 8, ptr %18) #7
  %130 = invoke noundef ptr @_ZNK9NOMAD_4_34Step15getParentOfTypeIPNS_17MadsMegaIterationEEET_b(ptr noundef nonnull align 8 dereferenceable(140) %77, i1 noundef zeroext false)
          to label %131 unwind label %163

131:                                              ; preds = %129
  store ptr %130, ptr %18, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 24, ptr %19) #7
  call void @llvm.lifetime.start.p0(i64 16, ptr %20) #7
  %132 = load ptr, ptr %18, align 8, !tbaa !5
  %133 = load ptr, ptr %132, align 8, !tbaa !68
  %134 = getelementptr inbounds ptr, ptr %133, i64 10
  %135 = load ptr, ptr %134, align 8
  invoke void %135(ptr dead_on_unwind writable sret(%"class.std::shared_ptr.73") align 8 %20, ptr noundef nonnull align 8 dereferenceable(200) %132)
          to label %136 unwind label %167

136:                                              ; preds = %131
  %137 = call noundef ptr @_ZNKSt19__shared_ptr_accessIN9NOMAD_4_38MeshBaseELN9__gnu_cxx12_Lock_policyE2ELb0ELb0EEptEv(ptr noundef nonnull align 1 dereferenceable(1) %20) #7
  %138 = load ptr, ptr %137, align 8, !tbaa !68
  %139 = getelementptr inbounds ptr, ptr %138, i64 14
  %140 = load ptr, ptr %139, align 8
  invoke void %140(ptr dead_on_unwind writable sret(%"class.NOMAD_4_3::ArrayOfDouble") align 8 %19, ptr noundef nonnull align 8 dereferenceable(257) %137)
          to label %141 unwind label %171

141:                                              ; preds = %136
  call void @_ZNSt12__shared_ptrIN9NOMAD_4_38MeshBaseELN9__gnu_cxx12_Lock_policyE2EED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %20) #7
  call void @llvm.lifetime.end.p0(i64 16, ptr %20) #7
  call void @llvm.lifetime.start.p0(i64 24, ptr %21) #7
  call void @llvm.lifetime.start.p0(i64 16, ptr %22) #7
  %142 = load ptr, ptr %18, align 8, !tbaa !5
  %143 = load ptr, ptr %142, align 8, !tbaa !68
  %144 = getelementptr inbounds ptr, ptr %143, i64 10
  %145 = load ptr, ptr %144, align 8
  invoke void %145(ptr dead_on_unwind writable sret(%"class.std::shared_ptr.73") align 8 %22, ptr noundef nonnull align 8 dereferenceable(200) %142)
          to label %146 unwind label %176

146:                                              ; preds = %141
  %147 = call noundef ptr @_ZNKSt19__shared_ptr_accessIN9NOMAD_4_38MeshBaseELN9__gnu_cxx12_Lock_policyE2ELb0ELb0EEptEv(ptr noundef nonnull align 1 dereferenceable(1) %22) #7
  %148 = invoke noundef nonnull align 8 dereferenceable(24) ptr @_ZNK9NOMAD_4_38MeshBase19getInitialFrameSizeEv(ptr noundef nonnull align 8 dereferenceable(257) %147)
          to label %149 unwind label %180

149:                                              ; preds = %146
  invoke void @_ZN9NOMAD_4_313ArrayOfDoubleC1ERKS0_(ptr noundef nonnull align 8 dereferenceable(24) %21, ptr noundef nonnull align 8 dereferenceable(24) %148)
          to label %150 unwind label %180

150:                                              ; preds = %149
  call void @_ZNSt12__shared_ptrIN9NOMAD_4_38MeshBaseELN9__gnu_cxx12_Lock_policyE2EED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %22) #7
  call void @llvm.lifetime.end.p0(i64 16, ptr %22) #7
  %151 = invoke noundef zeroext i1 @_ZNK9NOMAD_4_313ArrayOfDoubleltERKS0_(ptr noundef nonnull align 8 dereferenceable(24) %21, ptr noundef nonnull align 8 dereferenceable(24) %19)
          to label %152 unwind label %185

152:                                              ; preds = %150
  br i1 %151, label %153, label %210

153:                                              ; preds = %152
  call void @llvm.lifetime.start.p0(i64 4, ptr %23) #7
  store i32 7, ptr %23, align 4, !tbaa !70
  %154 = invoke noundef zeroext i1 @_ZN9NOMAD_4_311OutputQueue9GoodLevelERKNS_11OutputLevelE(ptr noundef nonnull align 4 dereferenceable(4) %23)
          to label %155 unwind label %189

155:                                              ; preds = %153
  call void @llvm.lifetime.end.p0(i64 4, ptr %23) #7
  br i1 %154, label %156, label %202

156:                                              ; preds = %155
  call void @llvm.lifetime.start.p0(i64 32, ptr %24) #7
  call void @llvm.lifetime.start.p0(i64 1, ptr %25) #7
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %25) #7
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %24, ptr noundef @.str.15, ptr noundef nonnull align 1 dereferenceable(1) %25)
          to label %157 unwind label %193

157:                                              ; preds = %156
  invoke void @_ZNK9NOMAD_4_34Step13AddOutputInfoERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEENS_11OutputLevelE(ptr noundef nonnull align 8 dereferenceable(140) %77, ptr noundef nonnull align 8 dereferenceable(32) %24, i32 noundef 7)
          to label %158 unwind label %197

158:                                              ; preds = %157
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %24) #7
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %25) #7
  call void @llvm.lifetime.end.p0(i64 1, ptr %25) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr %24) #7
  br label %202

159:                                              ; preds = %685, %117, %111
  %160 = landingpad { ptr, i32 }
          cleanup
  %161 = extractvalue { ptr, i32 } %160, 0
  store ptr %161, ptr %8, align 8
  %162 = extractvalue { ptr, i32 } %160, 1
  store i32 %162, ptr %9, align 4
  br label %691

163:                                              ; preds = %129
  %164 = landingpad { ptr, i32 }
          cleanup
  %165 = extractvalue { ptr, i32 } %164, 0
  store ptr %165, ptr %8, align 8
  %166 = extractvalue { ptr, i32 } %164, 1
  store i32 %166, ptr %9, align 4
  br label %664

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

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

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

176:                                              ; preds = %141
  %177 = landingpad { ptr, i32 }
          cleanup
  %178 = extractvalue { ptr, i32 } %177, 0
  store ptr %178, ptr %8, align 8
  %179 = extractvalue { ptr, i32 } %177, 1
  store i32 %179, ptr %9, align 4
  br label %184

180:                                              ; preds = %149, %146
  %181 = landingpad { ptr, i32 }
          cleanup
  %182 = extractvalue { ptr, i32 } %181, 0
  store ptr %182, ptr %8, align 8
  %183 = extractvalue { ptr, i32 } %181, 1
  store i32 %183, ptr %9, align 4
  call void @_ZNSt12__shared_ptrIN9NOMAD_4_38MeshBaseELN9__gnu_cxx12_Lock_policyE2EED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %22) #7
  br label %184

184:                                              ; preds = %180, %176
  call void @llvm.lifetime.end.p0(i64 16, ptr %22) #7
  br label %662

185:                                              ; preds = %213, %150
  %186 = landingpad { ptr, i32 }
          cleanup
  %187 = extractvalue { ptr, i32 } %186, 0
  store ptr %187, ptr %8, align 8
  %188 = extractvalue { ptr, i32 } %186, 1
  store i32 %188, ptr %9, align 4
  br label %661

189:                                              ; preds = %153
  %190 = landingpad { ptr, i32 }
          cleanup
  %191 = extractvalue { ptr, i32 } %190, 0
  store ptr %191, ptr %8, align 8
  %192 = extractvalue { ptr, i32 } %190, 1
  store i32 %192, ptr %9, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %23) #7
  br label %661

193:                                              ; preds = %156
  %194 = landingpad { ptr, i32 }
          cleanup
  %195 = extractvalue { ptr, i32 } %194, 0
  store ptr %195, ptr %8, align 8
  %196 = extractvalue { ptr, i32 } %194, 1
  store i32 %196, ptr %9, align 4
  br label %201

197:                                              ; preds = %157
  %198 = landingpad { ptr, i32 }
          cleanup
  %199 = extractvalue { ptr, i32 } %198, 0
  store ptr %199, ptr %8, align 8
  %200 = extractvalue { ptr, i32 } %198, 1
  store i32 %200, ptr %9, align 4
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %24) #7
  br label %201

201:                                              ; preds = %197, %193
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %25) #7
  call void @llvm.lifetime.end.p0(i64 1, ptr %25) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr %24) #7
  br label %661

202:                                              ; preds = %158, %155
  call void @llvm.lifetime.start.p0(i64 4, ptr %26) #7
  store i32 2, ptr %26, align 4, !tbaa !71
  invoke void @_ZN9NOMAD_4_34Step14setSuccessTypeERKNS_11SuccessTypeE(ptr noundef nonnull align 8 dereferenceable(140) %77, ptr noundef nonnull align 4 dereferenceable(4) %26)
          to label %203 unwind label %206

203:                                              ; preds = %202
  call void @llvm.lifetime.end.p0(i64 4, ptr %26) #7
  %204 = load i8, ptr %4, align 1, !tbaa !9, !range !72, !noundef !73
  %205 = trunc i8 %204 to i1
  store i1 %205, ptr %2, align 1
  store i32 1, ptr %27, align 4
  br label %655

206:                                              ; preds = %202
  %207 = landingpad { ptr, i32 }
          cleanup
  %208 = extractvalue { ptr, i32 } %207, 0
  store ptr %208, ptr %8, align 8
  %209 = extractvalue { ptr, i32 } %207, 1
  store i32 %209, ptr %9, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %26) #7
  br label %661

210:                                              ; preds = %152
  %211 = load ptr, ptr %18, align 8, !tbaa !5
  %212 = icmp ne ptr null, %211
  br i1 %212, label %213, label %218

213:                                              ; preds = %210
  %214 = load ptr, ptr %18, align 8, !tbaa !5
  %215 = invoke noundef nonnull align 8 dereferenceable(16) ptr @_ZNK9NOMAD_4_313MegaIteration10getBarrierEv(ptr noundef nonnull align 8 dereferenceable(172) %214)
          to label %216 unwind label %185

216:                                              ; preds = %213
  %217 = call noundef nonnull align 8 dereferenceable(16) ptr @_ZNSt10shared_ptrIN9NOMAD_4_311BarrierBaseEEaSERKS2_(ptr noundef nonnull align 8 dereferenceable(16) %17, ptr noundef nonnull align 8 dereferenceable(16) %215) #7
  br label %240

218:                                              ; preds = %210
  store i1 true, ptr %32, align 1
  %219 = call ptr @__cxa_allocate_exception(i64 112) #7
  call void @llvm.lifetime.start.p0(i64 32, ptr %28) #7
  call void @llvm.lifetime.start.p0(i64 1, ptr %29) #7
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %29) #7
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %28, ptr noundef @.str.13, ptr noundef nonnull align 1 dereferenceable(1) %29)
          to label %220 unwind label %223

220:                                              ; preds = %218
  call void @llvm.lifetime.start.p0(i64 32, ptr %30) #7
  call void @llvm.lifetime.start.p0(i64 1, ptr %31) #7
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %31) #7
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %30, ptr noundef @.str.16, ptr noundef nonnull align 1 dereferenceable(1) %31)
          to label %221 unwind label %227

221:                                              ; preds = %220
  invoke void @_ZN9NOMAD_4_39ExceptionC2ERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEmS8_(ptr noundef nonnull align 8 dereferenceable(112) %219, ptr noundef nonnull align 8 dereferenceable(32) %28, i64 noundef 168, ptr noundef nonnull align 8 dereferenceable(32) %30)
          to label %222 unwind label %231

222:                                              ; preds = %221
  store i1 false, ptr %32, align 1
  invoke void @__cxa_throw(ptr %219, ptr @_ZTIN9NOMAD_4_39ExceptionE, ptr @_ZN9NOMAD_4_39ExceptionD2Ev) #8
          to label %703 unwind label %231

223:                                              ; preds = %218
  %224 = landingpad { ptr, i32 }
          cleanup
  %225 = extractvalue { ptr, i32 } %224, 0
  store ptr %225, ptr %8, align 8
  %226 = extractvalue { ptr, i32 } %224, 1
  store i32 %226, ptr %9, align 4
  br label %236

227:                                              ; preds = %220
  %228 = landingpad { ptr, i32 }
          cleanup
  %229 = extractvalue { ptr, i32 } %228, 0
  store ptr %229, ptr %8, align 8
  %230 = extractvalue { ptr, i32 } %228, 1
  store i32 %230, ptr %9, align 4
  br label %235

231:                                              ; preds = %222, %221
  %232 = landingpad { ptr, i32 }
          cleanup
  %233 = extractvalue { ptr, i32 } %232, 0
  store ptr %233, ptr %8, align 8
  %234 = extractvalue { ptr, i32 } %232, 1
  store i32 %234, ptr %9, align 4
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %30) #7
  br label %235

235:                                              ; preds = %231, %227
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %31) #7
  call void @llvm.lifetime.end.p0(i64 1, ptr %31) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr %30) #7
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %28) #7
  br label %236

236:                                              ; preds = %235, %223
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %29) #7
  call void @llvm.lifetime.end.p0(i64 1, ptr %29) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr %28) #7
  %237 = load i1, ptr %32, align 1
  br i1 %237, label %238, label %239

238:                                              ; preds = %236
  call void @__cxa_free_exception(ptr %219) #7
  br label %239

239:                                              ; preds = %238, %236
  br label %661

240:                                              ; preds = %216
  call void @llvm.lifetime.start.p0(i64 16, ptr %33) #7
  %241 = call noundef ptr @_ZNKSt19__shared_ptr_accessIN9NOMAD_4_311BarrierBaseELN9__gnu_cxx12_Lock_policyE2ELb0ELb0EEptEv(ptr noundef nonnull align 1 dereferenceable(1) %17) #7
  %242 = load ptr, ptr %241, align 8, !tbaa !68
  %243 = getelementptr inbounds ptr, ptr %242, i64 1
  %244 = load ptr, ptr %243, align 8
  invoke void %244(ptr dead_on_unwind writable sret(%"class.std::shared_ptr.67") align 8 %33, ptr noundef nonnull align 8 dereferenceable(120) %241)
          to label %245 unwind label %292

245:                                              ; preds = %240
  call void @llvm.lifetime.start.p0(i64 16, ptr %34) #7
  %246 = call noundef ptr @_ZNKSt19__shared_ptr_accessIN9NOMAD_4_311BarrierBaseELN9__gnu_cxx12_Lock_policyE2ELb0ELb0EEptEv(ptr noundef nonnull align 1 dereferenceable(1) %17) #7
  %247 = load ptr, ptr %246, align 8, !tbaa !68
  %248 = getelementptr inbounds ptr, ptr %247, i64 4
  %249 = load ptr, ptr %248, align 8
  invoke void %249(ptr dead_on_unwind writable sret(%"class.std::shared_ptr.67") align 8 %34, ptr noundef nonnull align 8 dereferenceable(120) %246)
          to label %250 unwind label %296

250:                                              ; preds = %245
  call void @llvm.lifetime.start.p0(i64 4, ptr %35) #7
  call void @llvm.lifetime.start.p0(i64 16, ptr %36) #7
  invoke void @_ZN9NOMAD_4_312EvcInterface19getEvaluatorControlEv(ptr dead_on_unwind writable sret(%"class.std::shared_ptr.28") align 8 %36)
          to label %251 unwind label %300

251:                                              ; preds = %250
  %252 = call noundef ptr @_ZNKSt19__shared_ptr_accessIN9NOMAD_4_316EvaluatorControlELN9__gnu_cxx12_Lock_policyE2ELb0ELb0EEptEv(ptr noundef nonnull align 1 dereferenceable(1) %36) #7
  %253 = invoke noundef nonnull align 4 dereferenceable(4) ptr @_ZNK9NOMAD_4_316EvaluatorControl14getComputeTypeEi(ptr noundef nonnull align 8 dereferenceable(352) %252, i32 noundef -1)
          to label %254 unwind label %304

254:                                              ; preds = %251
  %255 = load i32, ptr %253, align 4, !tbaa !74
  call void @_ZNSt12__shared_ptrIN9NOMAD_4_316EvaluatorControlELN9__gnu_cxx12_Lock_policyE2EED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %36) #7
  call void @llvm.lifetime.end.p0(i64 16, ptr %36) #7
  store i32 %255, ptr %35, align 4, !tbaa !74
  %256 = call noundef zeroext i1 @_ZStneIN9NOMAD_4_39EvalPointEEbDnRKSt10shared_ptrIT_E(ptr null, ptr noundef nonnull align 8 dereferenceable(16) %33) #7
  store i1 false, ptr %38, align 1
  store i1 false, ptr %39, align 1
  store i1 false, ptr %41, align 1
  store i1 false, ptr %42, align 1
  store i1 false, ptr %44, align 1
  store i1 false, ptr %45, align 1
  br i1 %256, label %257, label %270

257:                                              ; preds = %254
  call void @llvm.lifetime.start.p0(i64 24, ptr %37) #7
  store i1 true, ptr %38, align 1
  %258 = call noundef ptr @_ZNKSt19__shared_ptr_accessIN9NOMAD_4_39EvalPointELN9__gnu_cxx12_Lock_policyE2ELb0ELb0EEptEv(ptr noundef nonnull align 1 dereferenceable(1) %33) #7
  %259 = load i32, ptr %35, align 4, !tbaa !74
  invoke void @_ZNK9NOMAD_4_39EvalPoint4getFENS_8EvalTypeENS_11ComputeTypeE(ptr dead_on_unwind writable sret(%"class.NOMAD_4_3::Double") align 8 %37, ptr noundef nonnull align 8 dereferenceable(160) %258, i32 noundef 0, i32 noundef %259)
          to label %260 unwind label %309

260:                                              ; preds = %257
  store i1 true, ptr %39, align 1
  %261 = invoke noundef zeroext i1 @_ZNK9NOMAD_4_36Double9isDefinedEv(ptr noundef nonnull align 8 dereferenceable(17) %37)
          to label %262 unwind label %313

262:                                              ; preds = %260
  br i1 %261, label %263, label %270

263:                                              ; preds = %262
  call void @llvm.lifetime.start.p0(i64 24, ptr %40) #7
  store i1 true, ptr %41, align 1
  %264 = call noundef ptr @_ZNKSt19__shared_ptr_accessIN9NOMAD_4_39EvalPointELN9__gnu_cxx12_Lock_policyE2ELb0ELb0EEptEv(ptr noundef nonnull align 1 dereferenceable(1) %33) #7
  %265 = load i32, ptr %35, align 4, !tbaa !74
  invoke void @_ZNK9NOMAD_4_39EvalPoint4getFENS_8EvalTypeENS_11ComputeTypeE(ptr dead_on_unwind writable sret(%"class.NOMAD_4_3::Double") align 8 %40, ptr noundef nonnull align 8 dereferenceable(160) %264, i32 noundef 0, i32 noundef %265)
          to label %266 unwind label %317

266:                                              ; preds = %263
  store i1 true, ptr %42, align 1
  call void @llvm.lifetime.start.p0(i64 24, ptr %43) #7
  store i1 true, ptr %44, align 1
  invoke void @_ZN9NOMAD_4_36DoubleC1ERKd(ptr noundef nonnull align 8 dereferenceable(17) %43, ptr noundef nonnull align 8 dereferenceable(8) @_ZN9NOMAD_4_3L16MODEL_MAX_OUTPUTE)
          to label %267 unwind label %321

267:                                              ; preds = %266
  store i1 true, ptr %45, align 1
  %268 = invoke noundef zeroext i1 @_ZN9NOMAD_4_3ltERKNS_6DoubleES2_(ptr noundef nonnull align 8 dereferenceable(17) %40, ptr noundef nonnull align 8 dereferenceable(17) %43)
          to label %269 unwind label %325

269:                                              ; preds = %267
  br label %270

270:                                              ; preds = %269, %262, %254
  %271 = phi i1 [ false, %262 ], [ false, %254 ], [ %268, %269 ]
  %272 = load i1, ptr %45, align 1
  br i1 %272, label %273, label %274

273:                                              ; preds = %270
  call void @_ZN9NOMAD_4_36DoubleD1Ev(ptr noundef nonnull align 8 dereferenceable(17) %43) #7
  br label %274

274:                                              ; preds = %273, %270
  %275 = load i1, ptr %44, align 1
  br i1 %275, label %276, label %277

276:                                              ; preds = %274
  call void @llvm.lifetime.end.p0(i64 24, ptr %43) #7
  br label %277

277:                                              ; preds = %276, %274
  %278 = load i1, ptr %42, align 1
  br i1 %278, label %279, label %280

279:                                              ; preds = %277
  call void @_ZN9NOMAD_4_36DoubleD1Ev(ptr noundef nonnull align 8 dereferenceable(17) %40) #7
  br label %280

280:                                              ; preds = %279, %277
  %281 = load i1, ptr %41, align 1
  br i1 %281, label %282, label %283

282:                                              ; preds = %280
  call void @llvm.lifetime.end.p0(i64 24, ptr %40) #7
  br label %283

283:                                              ; preds = %282, %280
  %284 = load i1, ptr %39, align 1
  br i1 %284, label %285, label %286

285:                                              ; preds = %283
  call void @_ZN9NOMAD_4_36DoubleD1Ev(ptr noundef nonnull align 8 dereferenceable(17) %37) #7
  br label %286

286:                                              ; preds = %285, %283
  %287 = load i1, ptr %38, align 1
  br i1 %287, label %288, label %289

288:                                              ; preds = %286
  call void @llvm.lifetime.end.p0(i64 24, ptr %37) #7
  br label %289

289:                                              ; preds = %288, %286
  br i1 %271, label %290, label %351

290:                                              ; preds = %289
  %291 = call noundef nonnull align 8 dereferenceable(16) ptr @_ZNSt10shared_ptrIN9NOMAD_4_39EvalPointEEaSERKS2_(ptr noundef nonnull align 8 dereferenceable(16) %16, ptr noundef nonnull align 8 dereferenceable(16) %33) #7
  br label %505

292:                                              ; preds = %240
  %293 = landingpad { ptr, i32 }
          cleanup
  %294 = extractvalue { ptr, i32 } %293, 0
  store ptr %294, ptr %8, align 8
  %295 = extractvalue { ptr, i32 } %293, 1
  store i32 %295, ptr %9, align 4
  br label %660

296:                                              ; preds = %245
  %297 = landingpad { ptr, i32 }
          cleanup
  %298 = extractvalue { ptr, i32 } %297, 0
  store ptr %298, ptr %8, align 8
  %299 = extractvalue { ptr, i32 } %297, 1
  store i32 %299, ptr %9, align 4
  br label %659

300:                                              ; preds = %250
  %301 = landingpad { ptr, i32 }
          cleanup
  %302 = extractvalue { ptr, i32 } %301, 0
  store ptr %302, ptr %8, align 8
  %303 = extractvalue { ptr, i32 } %301, 1
  store i32 %303, ptr %9, align 4
  br label %308

304:                                              ; preds = %251
  %305 = landingpad { ptr, i32 }
          cleanup
  %306 = extractvalue { ptr, i32 } %305, 0
  store ptr %306, ptr %8, align 8
  %307 = extractvalue { ptr, i32 } %305, 1
  store i32 %307, ptr %9, align 4
  call void @_ZNSt12__shared_ptrIN9NOMAD_4_316EvaluatorControlELN9__gnu_cxx12_Lock_policyE2EED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %36) #7
  br label %308

308:                                              ; preds = %304, %300
  call void @llvm.lifetime.end.p0(i64 16, ptr %36) #7
  br label %658

309:                                              ; preds = %257
  %310 = landingpad { ptr, i32 }
          cleanup
  %311 = extractvalue { ptr, i32 } %310, 0
  store ptr %311, ptr %8, align 8
  %312 = extractvalue { ptr, i32 } %310, 1
  store i32 %312, ptr %9, align 4
  br label %347

313:                                              ; preds = %260
  %314 = landingpad { ptr, i32 }
          cleanup
  %315 = extractvalue { ptr, i32 } %314, 0
  store ptr %315, ptr %8, align 8
  %316 = extractvalue { ptr, i32 } %314, 1
  store i32 %316, ptr %9, align 4
  br label %343

317:                                              ; preds = %263
  %318 = landingpad { ptr, i32 }
          cleanup
  %319 = extractvalue { ptr, i32 } %318, 0
  store ptr %319, ptr %8, align 8
  %320 = extractvalue { ptr, i32 } %318, 1
  store i32 %320, ptr %9, align 4
  br label %339

321:                                              ; preds = %266
  %322 = landingpad { ptr, i32 }
          cleanup
  %323 = extractvalue { ptr, i32 } %322, 0
  store ptr %323, ptr %8, align 8
  %324 = extractvalue { ptr, i32 } %322, 1
  store i32 %324, ptr %9, align 4
  br label %332

325:                                              ; preds = %267
  %326 = landingpad { ptr, i32 }
          cleanup
  %327 = extractvalue { ptr, i32 } %326, 0
  store ptr %327, ptr %8, align 8
  %328 = extractvalue { ptr, i32 } %326, 1
  store i32 %328, ptr %9, align 4
  %329 = load i1, ptr %45, align 1
  br i1 %329, label %330, label %331

330:                                              ; preds = %325
  call void @_ZN9NOMAD_4_36DoubleD1Ev(ptr noundef nonnull align 8 dereferenceable(17) %43) #7
  br label %331

331:                                              ; preds = %330, %325
  br label %332

332:                                              ; preds = %331, %321
  %333 = load i1, ptr %44, align 1
  br i1 %333, label %334, label %335

334:                                              ; preds = %332
  call void @llvm.lifetime.end.p0(i64 24, ptr %43) #7
  br label %335

335:                                              ; preds = %334, %332
  %336 = load i1, ptr %42, align 1
  br i1 %336, label %337, label %338

337:                                              ; preds = %335
  call void @_ZN9NOMAD_4_36DoubleD1Ev(ptr noundef nonnull align 8 dereferenceable(17) %40) #7
  br label %338

338:                                              ; preds = %337, %335
  br label %339

339:                                              ; preds = %338, %317
  %340 = load i1, ptr %41, align 1
  br i1 %340, label %341, label %342

341:                                              ; preds = %339
  call void @llvm.lifetime.end.p0(i64 24, ptr %40) #7
  br label %342

342:                                              ; preds = %341, %339
  br label %343

343:                                              ; preds = %342, %313
  %344 = load i1, ptr %39, align 1
  br i1 %344, label %345, label %346

345:                                              ; preds = %343
  call void @_ZN9NOMAD_4_36DoubleD1Ev(ptr noundef nonnull align 8 dereferenceable(17) %37) #7
  br label %346

346:                                              ; preds = %345, %343
  br label %347

347:                                              ; preds = %346, %309
  %348 = load i1, ptr %38, align 1
  br i1 %348, label %349, label %350

349:                                              ; preds = %347
  call void @llvm.lifetime.end.p0(i64 24, ptr %37) #7
  br label %350

350:                                              ; preds = %349, %347
  br label %658

351:                                              ; preds = %289
  %352 = call noundef zeroext i1 @_ZStneIN9NOMAD_4_39EvalPointEEbDnRKSt10shared_ptrIT_E(ptr null, ptr noundef nonnull align 8 dereferenceable(16) %34) #7
  store i1 false, ptr %47, align 1
  store i1 false, ptr %48, align 1
  store i1 false, ptr %50, align 1
  store i1 false, ptr %51, align 1
  store i1 false, ptr %53, align 1
  store i1 false, ptr %54, align 1
  store i1 false, ptr %56, align 1
  store i1 false, ptr %57, align 1
  store i1 false, ptr %59, align 1
  store i1 false, ptr %60, align 1
  store i1 false, ptr %62, align 1
  store i1 false, ptr %63, align 1
  br i1 %352, label %353, label %379

353:                                              ; preds = %351
  call void @llvm.lifetime.start.p0(i64 24, ptr %46) #7
  store i1 true, ptr %47, align 1
  %354 = call noundef ptr @_ZNKSt19__shared_ptr_accessIN9NOMAD_4_39EvalPointELN9__gnu_cxx12_Lock_policyE2ELb0ELb0EEptEv(ptr noundef nonnull align 1 dereferenceable(1) %34) #7
  %355 = load i32, ptr %35, align 4, !tbaa !74
  invoke void @_ZNK9NOMAD_4_39EvalPoint4getFENS_8EvalTypeENS_11ComputeTypeE(ptr dead_on_unwind writable sret(%"class.NOMAD_4_3::Double") align 8 %46, ptr noundef nonnull align 8 dereferenceable(160) %354, i32 noundef 0, i32 noundef %355)
          to label %356 unwind label %419

356:                                              ; preds = %353
  store i1 true, ptr %48, align 1
  %357 = invoke noundef zeroext i1 @_ZNK9NOMAD_4_36Double9isDefinedEv(ptr noundef nonnull align 8 dereferenceable(17) %46)
          to label %358 unwind label %423

358:                                              ; preds = %356
  br i1 %357, label %359, label %379

359:                                              ; preds = %358
  call void @llvm.lifetime.start.p0(i64 24, ptr %49) #7
  store i1 true, ptr %50, align 1
  %360 = call noundef ptr @_ZNKSt19__shared_ptr_accessIN9NOMAD_4_39EvalPointELN9__gnu_cxx12_Lock_policyE2ELb0ELb0EEptEv(ptr noundef nonnull align 1 dereferenceable(1) %34) #7
  %361 = load i32, ptr %35, align 4, !tbaa !74
  invoke void @_ZNK9NOMAD_4_39EvalPoint4getFENS_8EvalTypeENS_11ComputeTypeE(ptr dead_on_unwind writable sret(%"class.NOMAD_4_3::Double") align 8 %49, ptr noundef nonnull align 8 dereferenceable(160) %360, i32 noundef 0, i32 noundef %361)
          to label %362 unwind label %427

362:                                              ; preds = %359
  store i1 true, ptr %51, align 1
  call void @llvm.lifetime.start.p0(i64 24, ptr %52) #7
  store i1 true, ptr %53, align 1
  invoke void @_ZN9NOMAD_4_36DoubleC1ERKd(ptr noundef nonnull align 8 dereferenceable(17) %52, ptr noundef nonnull align 8 dereferenceable(8) @_ZN9NOMAD_4_3L16MODEL_MAX_OUTPUTE)
          to label %363 unwind label %431

363:                                              ; preds = %362
  store i1 true, ptr %54, align 1
  %364 = invoke noundef zeroext i1 @_ZN9NOMAD_4_3ltERKNS_6DoubleES2_(ptr noundef nonnull align 8 dereferenceable(17) %49, ptr noundef nonnull align 8 dereferenceable(17) %52)
          to label %365 unwind label %435

365:                                              ; preds = %363
  br i1 %364, label %366, label %379

366:                                              ; preds = %365
  call void @llvm.lifetime.start.p0(i64 24, ptr %55) #7
  store i1 true, ptr %56, align 1
  %367 = call noundef ptr @_ZNKSt19__shared_ptr_accessIN9NOMAD_4_39EvalPointELN9__gnu_cxx12_Lock_policyE2ELb0ELb0EEptEv(ptr noundef nonnull align 1 dereferenceable(1) %34) #7
  %368 = load i32, ptr %35, align 4, !tbaa !74
  invoke void @_ZNK9NOMAD_4_39EvalPoint4getHENS_8EvalTypeENS_11ComputeTypeE(ptr dead_on_unwind writable sret(%"class.NOMAD_4_3::Double") align 8 %55, ptr noundef nonnull align 8 dereferenceable(160) %367, i32 noundef 0, i32 noundef %368)
          to label %369 unwind label %439

369:                                              ; preds = %366
  store i1 true, ptr %57, align 1
  %370 = invoke noundef zeroext i1 @_ZNK9NOMAD_4_36Double9isDefinedEv(ptr noundef nonnull align 8 dereferenceable(17) %55)
          to label %371 unwind label %443

371:                                              ; preds = %369
  br i1 %370, label %372, label %379

372:                                              ; preds = %371
  call void @llvm.lifetime.start.p0(i64 24, ptr %58) #7
  store i1 true, ptr %59, align 1
  %373 = call noundef ptr @_ZNKSt19__shared_ptr_accessIN9NOMAD_4_39EvalPointELN9__gnu_cxx12_Lock_policyE2ELb0ELb0EEptEv(ptr noundef nonnull align 1 dereferenceable(1) %34) #7
  %374 = load i32, ptr %35, align 4, !tbaa !74
  invoke void @_ZNK9NOMAD_4_39EvalPoint4getHENS_8EvalTypeENS_11ComputeTypeE(ptr dead_on_unwind writable sret(%"class.NOMAD_4_3::Double") align 8 %58, ptr noundef nonnull align 8 dereferenceable(160) %373, i32 noundef 0, i32 noundef %374)
          to label %375 unwind label %447

375:                                              ; preds = %372
  store i1 true, ptr %60, align 1
  call void @llvm.lifetime.start.p0(i64 24, ptr %61) #7
  store i1 true, ptr %62, align 1
  invoke void @_ZN9NOMAD_4_36DoubleC1ERKd(ptr noundef nonnull align 8 dereferenceable(17) %61, ptr noundef nonnull align 8 dereferenceable(8) @_ZN9NOMAD_4_3L16MODEL_MAX_OUTPUTE)
          to label %376 unwind label %451

376:                                              ; preds = %375
  store i1 true, ptr %63, align 1
  %377 = invoke noundef zeroext i1 @_ZN9NOMAD_4_3ltERKNS_6DoubleES2_(ptr noundef nonnull align 8 dereferenceable(17) %58, ptr noundef nonnull align 8 dereferenceable(17) %61)
          to label %378 unwind label %455

378:                                              ; preds = %376
  br label %379

379:                                              ; preds = %378, %371, %365, %358, %351
  %380 = phi i1 [ false, %371 ], [ false, %365 ], [ false, %358 ], [ false, %351 ], [ %377, %378 ]
  %381 = load i1, ptr %63, align 1
  br i1 %381, label %382, label %383

382:                                              ; preds = %379
  call void @_ZN9NOMAD_4_36DoubleD1Ev(ptr noundef nonnull align 8 dereferenceable(17) %61) #7
  br label %383

383:                                              ; preds = %382, %379
  %384 = load i1, ptr %62, align 1
  br i1 %384, label %385, label %386

385:                                              ; preds = %383
  call void @llvm.lifetime.end.p0(i64 24, ptr %61) #7
  br label %386

386:                                              ; preds = %385, %383
  %387 = load i1, ptr %60, align 1
  br i1 %387, label %388, label %389

388:                                              ; preds = %386
  call void @_ZN9NOMAD_4_36DoubleD1Ev(ptr noundef nonnull align 8 dereferenceable(17) %58) #7
  br label %389

389:                                              ; preds = %388, %386
  %390 = load i1, ptr %59, align 1
  br i1 %390, label %391, label %392

391:                                              ; preds = %389
  call void @llvm.lifetime.end.p0(i64 24, ptr %58) #7
  br label %392

392:                                              ; preds = %391, %389
  %393 = load i1, ptr %57, align 1
  br i1 %393, label %394, label %395

394:                                              ; preds = %392
  call void @_ZN9NOMAD_4_36DoubleD1Ev(ptr noundef nonnull align 8 dereferenceable(17) %55) #7
  br label %395

395:                                              ; preds = %394, %392
  %396 = load i1, ptr %56, align 1
  br i1 %396, label %397, label %398

397:                                              ; preds = %395
  call void @llvm.lifetime.end.p0(i64 24, ptr %55) #7
  br label %398

398:                                              ; preds = %397, %395
  %399 = load i1, ptr %54, align 1
  br i1 %399, label %400, label %401

400:                                              ; preds = %398
  call void @_ZN9NOMAD_4_36DoubleD1Ev(ptr noundef nonnull align 8 dereferenceable(17) %52) #7
  br label %401

401:                                              ; preds = %400, %398
  %402 = load i1, ptr %53, align 1
  br i1 %402, label %403, label %404

403:                                              ; preds = %401
  call void @llvm.lifetime.end.p0(i64 24, ptr %52) #7
  br label %404

404:                                              ; preds = %403, %401
  %405 = load i1, ptr %51, align 1
  br i1 %405, label %406, label %407

406:                                              ; preds = %404
  call void @_ZN9NOMAD_4_36DoubleD1Ev(ptr noundef nonnull align 8 dereferenceable(17) %49) #7
  br label %407

407:                                              ; preds = %406, %404
  %408 = load i1, ptr %50, align 1
  br i1 %408, label %409, label %410

409:                                              ; preds = %407
  call void @llvm.lifetime.end.p0(i64 24, ptr %49) #7
  br label %410

410:                                              ; preds = %409, %407
  %411 = load i1, ptr %48, align 1
  br i1 %411, label %412, label %413

412:                                              ; preds = %410
  call void @_ZN9NOMAD_4_36DoubleD1Ev(ptr noundef nonnull align 8 dereferenceable(17) %46) #7
  br label %413

413:                                              ; preds = %412, %410
  %414 = load i1, ptr %47, align 1
  br i1 %414, label %415, label %416

415:                                              ; preds = %413
  call void @llvm.lifetime.end.p0(i64 24, ptr %46) #7
  br label %416

416:                                              ; preds = %415, %413
  br i1 %380, label %417, label %504

417:                                              ; preds = %416
  %418 = call noundef nonnull align 8 dereferenceable(16) ptr @_ZNSt10shared_ptrIN9NOMAD_4_39EvalPointEEaSERKS2_(ptr noundef nonnull align 8 dereferenceable(16) %16, ptr noundef nonnull align 8 dereferenceable(16) %34) #7
  br label %504

419:                                              ; preds = %353
  %420 = landingpad { ptr, i32 }
          cleanup
  %421 = extractvalue { ptr, i32 } %420, 0
  store ptr %421, ptr %8, align 8
  %422 = extractvalue { ptr, i32 } %420, 1
  store i32 %422, ptr %9, align 4
  br label %500

423:                                              ; preds = %356
  %424 = landingpad { ptr, i32 }
          cleanup
  %425 = extractvalue { ptr, i32 } %424, 0
  store ptr %425, ptr %8, align 8
  %426 = extractvalue { ptr, i32 } %424, 1
  store i32 %426, ptr %9, align 4
  br label %496

427:                                              ; preds = %359
  %428 = landingpad { ptr, i32 }
          cleanup
  %429 = extractvalue { ptr, i32 } %428, 0
  store ptr %429, ptr %8, align 8
  %430 = extractvalue { ptr, i32 } %428, 1
  store i32 %430, ptr %9, align 4
  br label %492

431:                                              ; preds = %362
  %432 = landingpad { ptr, i32 }
          cleanup
  %433 = extractvalue { ptr, i32 } %432, 0
  store ptr %433, ptr %8, align 8
  %434 = extractvalue { ptr, i32 } %432, 1
  store i32 %434, ptr %9, align 4
  br label %485

435:                                              ; preds = %363
  %436 = landingpad { ptr, i32 }
          cleanup
  %437 = extractvalue { ptr, i32 } %436, 0
  store ptr %437, ptr %8, align 8
  %438 = extractvalue { ptr, i32 } %436, 1
  store i32 %438, ptr %9, align 4
  br label %481

439:                                              ; preds = %366
  %440 = landingpad { ptr, i32 }
          cleanup
  %441 = extractvalue { ptr, i32 } %440, 0
  store ptr %441, ptr %8, align 8
  %442 = extractvalue { ptr, i32 } %440, 1
  store i32 %442, ptr %9, align 4
  br label %477

443:                                              ; preds = %369
  %444 = landingpad { ptr, i32 }
          cleanup
  %445 = extractvalue { ptr, i32 } %444, 0
  store ptr %445, ptr %8, align 8
  %446 = extractvalue { ptr, i32 } %444, 1
  store i32 %446, ptr %9, align 4
  br label %473

447:                                              ; preds = %372
  %448 = landingpad { ptr, i32 }
          cleanup
  %449 = extractvalue { ptr, i32 } %448, 0
  store ptr %449, ptr %8, align 8
  %450 = extractvalue { ptr, i32 } %448, 1
  store i32 %450, ptr %9, align 4
  br label %469

451:                                              ; preds = %375
  %452 = landingpad { ptr, i32 }
          cleanup
  %453 = extractvalue { ptr, i32 } %452, 0
  store ptr %453, ptr %8, align 8
  %454 = extractvalue { ptr, i32 } %452, 1
  store i32 %454, ptr %9, align 4
  br label %462

455:                                              ; preds = %376
  %456 = landingpad { ptr, i32 }
          cleanup
  %457 = extractvalue { ptr, i32 } %456, 0
  store ptr %457, ptr %8, align 8
  %458 = extractvalue { ptr, i32 } %456, 1
  store i32 %458, ptr %9, align 4
  %459 = load i1, ptr %63, align 1
  br i1 %459, label %460, label %461

460:                                              ; preds = %455
  call void @_ZN9NOMAD_4_36DoubleD1Ev(ptr noundef nonnull align 8 dereferenceable(17) %61) #7
  br label %461

461:                                              ; preds = %460, %455
  br label %462

462:                                              ; preds = %461, %451
  %463 = load i1, ptr %62, align 1
  br i1 %463, label %464, label %465

464:                                              ; preds = %462
  call void @llvm.lifetime.end.p0(i64 24, ptr %61) #7
  br label %465

465:                                              ; preds = %464, %462
  %466 = load i1, ptr %60, align 1
  br i1 %466, label %467, label %468

467:                                              ; preds = %465
  call void @_ZN9NOMAD_4_36DoubleD1Ev(ptr noundef nonnull align 8 dereferenceable(17) %58) #7
  br label %468

468:                                              ; preds = %467, %465
  br label %469

469:                                              ; preds = %468, %447
  %470 = load i1, ptr %59, align 1
  br i1 %470, label %471, label %472

471:                                              ; preds = %469
  call void @llvm.lifetime.end.p0(i64 24, ptr %58) #7
  br label %472

472:                                              ; preds = %471, %469
  br label %473

473:                                              ; preds = %472, %443
  %474 = load i1, ptr %57, align 1
  br i1 %474, label %475, label %476

475:                                              ; preds = %473
  call void @_ZN9NOMAD_4_36DoubleD1Ev(ptr noundef nonnull align 8 dereferenceable(17) %55) #7
  br label %476

476:                                              ; preds = %475, %473
  br label %477

477:                                              ; preds = %476, %439
  %478 = load i1, ptr %56, align 1
  br i1 %478, label %479, label %480

479:                                              ; preds = %477
  call void @llvm.lifetime.end.p0(i64 24, ptr %55) #7
  br label %480

480:                                              ; preds = %479, %477
  br label %481

481:                                              ; preds = %480, %435
  %482 = load i1, ptr %54, align 1
  br i1 %482, label %483, label %484

483:                                              ; preds = %481
  call void @_ZN9NOMAD_4_36DoubleD1Ev(ptr noundef nonnull align 8 dereferenceable(17) %52) #7
  br label %484

484:                                              ; preds = %483, %481
  br label %485

485:                                              ; preds = %484, %431
  %486 = load i1, ptr %53, align 1
  br i1 %486, label %487, label %488

487:                                              ; preds = %485
  call void @llvm.lifetime.end.p0(i64 24, ptr %52) #7
  br label %488

488:                                              ; preds = %487, %485
  %489 = load i1, ptr %51, align 1
  br i1 %489, label %490, label %491

490:                                              ; preds = %488
  call void @_ZN9NOMAD_4_36DoubleD1Ev(ptr noundef nonnull align 8 dereferenceable(17) %49) #7
  br label %491

491:                                              ; preds = %490, %488
  br label %492

492:                                              ; preds = %491, %427
  %493 = load i1, ptr %50, align 1
  br i1 %493, label %494, label %495

494:                                              ; preds = %492
  call void @llvm.lifetime.end.p0(i64 24, ptr %49) #7
  br label %495

495:                                              ; preds = %494, %492
  br label %496

496:                                              ; preds = %495, %423
  %497 = load i1, ptr %48, align 1
  br i1 %497, label %498, label %499

498:                                              ; preds = %496
  call void @_ZN9NOMAD_4_36DoubleD1Ev(ptr noundef nonnull align 8 dereferenceable(17) %46) #7
  br label %499

499:                                              ; preds = %498, %496
  br label %500

500:                                              ; preds = %499, %419
  %501 = load i1, ptr %47, align 1
  br i1 %501, label %502, label %503

502:                                              ; preds = %500
  call void @llvm.lifetime.end.p0(i64 24, ptr %46) #7
  br label %503

503:                                              ; preds = %502, %500
  br label %658

504:                                              ; preds = %417, %416
  br label %505

505:                                              ; preds = %504, %290
  %506 = call noundef zeroext i1 @_ZStneIN9NOMAD_4_39EvalPointEEbDnRKSt10shared_ptrIT_E(ptr null, ptr noundef nonnull align 8 dereferenceable(16) %16) #7
  br i1 %506, label %507, label %653

507:                                              ; preds = %505
  %508 = getelementptr inbounds %"class.NOMAD_4_3::VNSSearchMethod", ptr %77, i32 0, i32 5
  %509 = call noundef ptr @_ZNKSt10unique_ptrIN9NOMAD_4_33VNSESt14default_deleteIS1_EEptEv(ptr noundef nonnull align 8 dereferenceable(8) %508) #7
  invoke void @_ZN9NOMAD_4_39Algorithm13setEndDisplayEb(ptr noundef nonnull align 8 dereferenceable(417) %509, i1 noundef zeroext false)
          to label %510 unwind label %549

510:                                              ; preds = %507
  %511 = getelementptr inbounds %"class.NOMAD_4_3::VNSSearchMethod", ptr %77, i32 0, i32 5
  %512 = call noundef ptr @_ZNKSt10unique_ptrIN9NOMAD_4_33VNSESt14default_deleteIS1_EEptEv(ptr noundef nonnull align 8 dereferenceable(8) %511) #7
  call void @_ZNSt10shared_ptrIN9NOMAD_4_39EvalPointEEC2ERKS2_(ptr noundef nonnull align 8 dereferenceable(16) %64, ptr noundef nonnull align 8 dereferenceable(16) %16) #7
  invoke void @_ZN9NOMAD_4_33VNS14setFrameCenterESt10shared_ptrINS_9EvalPointEE(ptr noundef nonnull align 8 dereferenceable(536) %512, ptr noundef %64)
          to label %513 unwind label %553

513:                                              ; preds = %510
  call void @_ZNSt12__shared_ptrIN9NOMAD_4_39EvalPointELN9__gnu_cxx12_Lock_policyE2EED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %64) #7
  %514 = getelementptr inbounds %"class.NOMAD_4_3::VNSSearchMethod", ptr %77, i32 0, i32 5
  %515 = call noundef ptr @_ZNKSt10unique_ptrIN9NOMAD_4_33VNSESt14default_deleteIS1_EEptEv(ptr noundef nonnull align 8 dereferenceable(8) %514) #7
  invoke void @_ZN9NOMAD_4_34Step5startEv(ptr noundef nonnull align 8 dereferenceable(140) %515)
          to label %516 unwind label %549

516:                                              ; preds = %513
  %517 = getelementptr inbounds %"class.NOMAD_4_3::VNSSearchMethod", ptr %77, i32 0, i32 5
  %518 = call noundef ptr @_ZNKSt10unique_ptrIN9NOMAD_4_33VNSESt14default_deleteIS1_EEptEv(ptr noundef nonnull align 8 dereferenceable(8) %517) #7
  %519 = invoke noundef zeroext i1 @_ZN9NOMAD_4_34Step3runEv(ptr noundef nonnull align 8 dereferenceable(140) %518)
          to label %520 unwind label %549

520:                                              ; preds = %516
  %521 = getelementptr inbounds %"class.NOMAD_4_3::VNSSearchMethod", ptr %77, i32 0, i32 5
  %522 = call noundef ptr @_ZNKSt10unique_ptrIN9NOMAD_4_33VNSESt14default_deleteIS1_EEptEv(ptr noundef nonnull align 8 dereferenceable(8) %521) #7
  invoke void @_ZN9NOMAD_4_34Step3endEv(ptr noundef nonnull align 8 dereferenceable(140) %522)
          to label %523 unwind label %549

523:                                              ; preds = %520
  call void @llvm.lifetime.start.p0(i64 16, ptr %65) #7
  %524 = getelementptr inbounds %"class.NOMAD_4_3::VNSSearchMethod", ptr %77, i32 0, i32 5
  %525 = call noundef ptr @_ZNKSt10unique_ptrIN9NOMAD_4_33VNSESt14default_deleteIS1_EEptEv(ptr noundef nonnull align 8 dereferenceable(8) %524) #7
  invoke void @_ZN9NOMAD_4_33VNS10getBarrierEv(ptr dead_on_unwind writable sret(%"class.std::shared_ptr.70") align 8 %65, ptr noundef nonnull align 8 dereferenceable(536) %525)
          to label %526 unwind label %557

526:                                              ; preds = %523
  %527 = call noundef zeroext i1 @_ZStneIN9NOMAD_4_311BarrierBaseEEbDnRKSt10shared_ptrIT_E(ptr null, ptr noundef nonnull align 8 dereferenceable(16) %65) #7
  br i1 %527, label %528, label %648

528:                                              ; preds = %526
  call void @llvm.lifetime.start.p0(i64 16, ptr %66) #7
  %529 = call noundef ptr @_ZNKSt19__shared_ptr_accessIN9NOMAD_4_311BarrierBaseELN9__gnu_cxx12_Lock_policyE2ELb0ELb0EEptEv(ptr noundef nonnull align 1 dereferenceable(1) %65) #7
  %530 = load ptr, ptr %529, align 8, !tbaa !68
  %531 = getelementptr inbounds ptr, ptr %530, i64 1
  %532 = load ptr, ptr %531, align 8
  invoke void %532(ptr dead_on_unwind writable sret(%"class.std::shared_ptr.67") align 8 %66, ptr noundef nonnull align 8 dereferenceable(120) %529)
          to label %533 unwind label %561

533:                                              ; preds = %528
  call void @llvm.lifetime.start.p0(i64 16, ptr %67) #7
  %534 = call noundef ptr @_ZNKSt19__shared_ptr_accessIN9NOMAD_4_311BarrierBaseELN9__gnu_cxx12_Lock_policyE2ELb0ELb0EEptEv(ptr noundef nonnull align 1 dereferenceable(1) %65) #7
  %535 = load ptr, ptr %534, align 8, !tbaa !68
  %536 = getelementptr inbounds ptr, ptr %535, i64 4
  %537 = load ptr, ptr %536, align 8
  invoke void %537(ptr dead_on_unwind writable sret(%"class.std::shared_ptr.67") align 8 %67, ptr noundef nonnull align 8 dereferenceable(120) %534)
          to label %538 unwind label %565

538:                                              ; preds = %533
  %539 = getelementptr inbounds %"class.NOMAD_4_3::VNSSearchMethod", ptr %77, i32 0, i32 4
  %540 = load i8, ptr %539, align 8, !tbaa !76, !range !72, !noundef !73
  %541 = trunc i8 %540 to i1
  br i1 %541, label %542, label %586

542:                                              ; preds = %538
  %543 = call noundef zeroext i1 @_ZStneIN9NOMAD_4_39EvalPointEEbDnRKSt10shared_ptrIT_E(ptr null, ptr noundef nonnull align 8 dereferenceable(16) %66) #7
  br i1 %543, label %544, label %573

544:                                              ; preds = %542
  %545 = getelementptr inbounds i8, ptr %77, i64 144
  %546 = 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) %66) #7
  %547 = invoke noundef zeroext i1 @_ZN9NOMAD_4_314IterationUtils16insertTrialPointERKNS_9EvalPointE(ptr noundef nonnull align 8 dereferenceable(328) %545, ptr noundef nonnull align 8 dereferenceable(160) %546)
          to label %548 unwind label %569

548:                                              ; preds = %544
  br label %573

549:                                              ; preds = %520, %516, %513, %507
  %550 = landingpad { ptr, i32 }
          cleanup
  %551 = extractvalue { ptr, i32 } %550, 0
  store ptr %551, ptr %8, align 8
  %552 = extractvalue { ptr, i32 } %550, 1
  store i32 %552, ptr %9, align 4
  br label %658

553:                                              ; preds = %510
  %554 = landingpad { ptr, i32 }
          cleanup
  %555 = extractvalue { ptr, i32 } %554, 0
  store ptr %555, ptr %8, align 8
  %556 = extractvalue { ptr, i32 } %554, 1
  store i32 %556, ptr %9, align 4
  call void @_ZNSt12__shared_ptrIN9NOMAD_4_39EvalPointELN9__gnu_cxx12_Lock_policyE2EED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %64) #7
  br label %658

557:                                              ; preds = %523
  %558 = landingpad { ptr, i32 }
          cleanup
  %559 = extractvalue { ptr, i32 } %558, 0
  store ptr %559, ptr %8, align 8
  %560 = extractvalue { ptr, i32 } %558, 1
  store i32 %560, ptr %9, align 4
  br label %652

561:                                              ; preds = %528
  %562 = landingpad { ptr, i32 }
          cleanup
  %563 = extractvalue { ptr, i32 } %562, 0
  store ptr %563, ptr %8, align 8
  %564 = extractvalue { ptr, i32 } %562, 1
  store i32 %564, ptr %9, align 4
  br label %647

565:                                              ; preds = %533
  %566 = landingpad { ptr, i32 }
          cleanup
  %567 = extractvalue { ptr, i32 } %566, 0
  store ptr %567, ptr %8, align 8
  %568 = extractvalue { ptr, i32 } %566, 1
  store i32 %568, ptr %9, align 4
  br label %646

569:                                              ; preds = %582, %580, %575, %544
  %570 = landingpad { ptr, i32 }
          cleanup
  %571 = extractvalue { ptr, i32 } %570, 0
  store ptr %571, ptr %8, align 8
  %572 = extractvalue { ptr, i32 } %570, 1
  store i32 %572, ptr %9, align 4
  br label %645

573:                                              ; preds = %548, %542
  %574 = call noundef zeroext i1 @_ZStneIN9NOMAD_4_39EvalPointEEbDnRKSt10shared_ptrIT_E(ptr null, ptr noundef nonnull align 8 dereferenceable(16) %67) #7
  br i1 %574, label %575, label %580

575:                                              ; preds = %573
  %576 = getelementptr inbounds i8, ptr %77, i64 144
  %577 = 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) %67) #7
  %578 = invoke noundef zeroext i1 @_ZN9NOMAD_4_314IterationUtils16insertTrialPointERKNS_9EvalPointE(ptr noundef nonnull align 8 dereferenceable(328) %576, ptr noundef nonnull align 8 dereferenceable(160) %577)
          to label %579 unwind label %569

579:                                              ; preds = %575
  br label %580

580:                                              ; preds = %579, %573
  %581 = call noundef ptr @_ZNKSt19__shared_ptr_accessIN9NOMAD_4_316EvaluatorControlELN9__gnu_cxx12_Lock_policyE2ELb0ELb0EEptEv(ptr noundef nonnull align 1 dereferenceable(1) %5) #7
  invoke void @_ZN9NOMAD_4_316EvaluatorControl22selectCurrentEvaluatorENS_8EvalTypeE(ptr noundef nonnull align 8 dereferenceable(352) %581, i32 noundef 0)
          to label %582 unwind label %569

582:                                              ; preds = %580
  %583 = getelementptr inbounds i8, ptr %77, i64 144
  %584 = invoke noundef zeroext i1 @_ZN9NOMAD_4_314IterationUtils15evalTrialPointsEPKNS_4StepEmNS_8StepTypeE(ptr noundef nonnull align 8 dereferenceable(328) %583, ptr noundef %77, i64 noundef -1, i32 noundef 57)
          to label %585 unwind label %569

585:                                              ; preds = %582
  store i1 %584, ptr %2, align 1
  store i32 1, ptr %27, align 4
  br label %641

586:                                              ; preds = %538
  call void @llvm.lifetime.start.p0(i64 4, ptr %68) #7
  %587 = call noundef ptr @_ZNKSt19__shared_ptr_accessIN9NOMAD_4_311BarrierBaseELN9__gnu_cxx12_Lock_policyE2ELb0ELb0EEptEv(ptr noundef nonnull align 1 dereferenceable(1) %17) #7
  call void @_ZNSt10shared_ptrIN9NOMAD_4_39EvalPointEEC2ERKS2_(ptr noundef nonnull align 8 dereferenceable(16) %69, ptr noundef nonnull align 8 dereferenceable(16) %66) #7
  call void @_ZNSt10shared_ptrIN9NOMAD_4_39EvalPointEEC2ERKS2_(ptr noundef nonnull align 8 dereferenceable(16) %70, ptr noundef nonnull align 8 dereferenceable(16) %67) #7
  %588 = load i32, ptr %7, align 4, !tbaa !11
  %589 = load ptr, ptr %587, align 8, !tbaa !68
  %590 = getelementptr inbounds ptr, ptr %589, i64 7
  %591 = load ptr, ptr %590, align 8
  %592 = invoke noundef i32 %591(ptr noundef nonnull align 8 dereferenceable(120) %587, ptr noundef %69, ptr noundef %70, i32 noundef %588, i32 noundef 0)
          to label %593 unwind label %598

593:                                              ; preds = %586
  call void @_ZNSt12__shared_ptrIN9NOMAD_4_39EvalPointELN9__gnu_cxx12_Lock_policyE2EED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %70) #7
  call void @_ZNSt12__shared_ptrIN9NOMAD_4_39EvalPointELN9__gnu_cxx12_Lock_policyE2EED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %69) #7
  store i32 %592, ptr %68, align 4, !tbaa !71
  invoke void @_ZN9NOMAD_4_34Step14setSuccessTypeERKNS_11SuccessTypeE(ptr noundef nonnull align 8 dereferenceable(140) %77, ptr noundef nonnull align 4 dereferenceable(4) %68)
          to label %594 unwind label %602

594:                                              ; preds = %593
  %595 = load i32, ptr %68, align 4, !tbaa !71
  %596 = icmp sge i32 %595, 3
  br i1 %596, label %597, label %606

597:                                              ; preds = %594
  store i8 1, ptr %4, align 1, !tbaa !9
  br label %606

598:                                              ; preds = %586
  %599 = landingpad { ptr, i32 }
          cleanup
  %600 = extractvalue { ptr, i32 } %599, 0
  store ptr %600, ptr %8, align 8
  %601 = extractvalue { ptr, i32 } %599, 1
  store i32 %601, ptr %9, align 4
  call void @_ZNSt12__shared_ptrIN9NOMAD_4_39EvalPointELN9__gnu_cxx12_Lock_policyE2EED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %70) #7
  call void @_ZNSt12__shared_ptrIN9NOMAD_4_39EvalPointELN9__gnu_cxx12_Lock_policyE2EED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %69) #7
  br label %644

602:                                              ; preds = %593
  %603 = landingpad { ptr, i32 }
          cleanup
  %604 = extractvalue { ptr, i32 } %603, 0
  store ptr %604, ptr %8, align 8
  %605 = extractvalue { ptr, i32 } %603, 1
  store i32 %605, ptr %9, align 4
  br label %644

606:                                              ; preds = %597, %594
  %607 = load i32, ptr %7, align 4, !tbaa !11
  %608 = icmp eq i32 0, %607
  br i1 %608, label %609, label %639

609:                                              ; preds = %606
  %610 = call noundef ptr @_ZNKSt19__shared_ptr_accessIN9NOMAD_4_311BarrierBaseELN9__gnu_cxx12_Lock_policyE2ELb0ELb0EEptEv(ptr noundef nonnull align 1 dereferenceable(1) %17) #7
  call void @llvm.lifetime.start.p0(i64 24, ptr %71) #7
  %611 = call noundef ptr @_ZNKSt19__shared_ptr_accessIN9NOMAD_4_311BarrierBaseELN9__gnu_cxx12_Lock_policyE2ELb0ELb0EEptEv(ptr noundef nonnull align 1 dereferenceable(1) %65) #7
  invoke void @_ZNK9NOMAD_4_311BarrierBase12getAllPointsEv(ptr dead_on_unwind writable sret(%"class.std::vector.127") align 8 %71, ptr noundef nonnull align 8 dereferenceable(120) %611)
          to label %612 unwind label %625

612:                                              ; preds = %609
  %613 = getelementptr inbounds %"class.NOMAD_4_3::Step", ptr %77, i32 0, i32 5
  %614 = call noundef ptr @_ZNKSt19__shared_ptr_accessIN9NOMAD_4_313RunParametersELN9__gnu_cxx12_Lock_policyE2ELb0ELb0EEptEv(ptr noundef nonnull align 1 dereferenceable(1) %613) #7
  call void @llvm.lifetime.start.p0(i64 32, ptr %72) #7
  call void @llvm.lifetime.start.p0(i64 1, ptr %73) #7
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %73) #7
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %72, ptr noundef @.str.17, ptr noundef nonnull align 1 dereferenceable(1) %73)
          to label %615 unwind label %629

615:                                              ; preds = %612
  %616 = invoke noundef nonnull align 1 dereferenceable(1) ptr @_ZNK9NOMAD_4_310Parameters17getAttributeValueIbEERKT_RKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEb(ptr noundef nonnull align 8 dereferenceable(496) %614, ptr noundef nonnull align 8 dereferenceable(32) %72, i1 noundef zeroext false)
          to label %617 unwind label %633

617:                                              ; preds = %615
  %618 = load i8, ptr %616, align 1, !tbaa !9, !range !72, !noundef !73
  %619 = trunc i8 %618 to i1
  %620 = load ptr, ptr %610, align 8, !tbaa !68
  %621 = getelementptr inbounds ptr, ptr %620, i64 8
  %622 = load ptr, ptr %621, align 8
  %623 = invoke noundef zeroext i1 %622(ptr noundef nonnull align 8 dereferenceable(120) %610, ptr noundef nonnull align 8 dereferenceable(24) %71, i32 noundef 0, i32 noundef 0, i1 noundef zeroext %619)
          to label %624 unwind label %633

624:                                              ; preds = %617
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %72) #7
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %73) #7
  call void @llvm.lifetime.end.p0(i64 1, ptr %73) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr %72) #7
  call void @_ZNSt6vectorIN9NOMAD_4_39EvalPointESaIS1_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %71) #7
  call void @llvm.lifetime.end.p0(i64 24, ptr %71) #7
  br label %640

625:                                              ; preds = %609
  %626 = landingpad { ptr, i32 }
          cleanup
  %627 = extractvalue { ptr, i32 } %626, 0
  store ptr %627, ptr %8, align 8
  %628 = extractvalue { ptr, i32 } %626, 1
  store i32 %628, ptr %9, align 4
  br label %638

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

633:                                              ; preds = %617, %615
  %634 = landingpad { ptr, i32 }
          cleanup
  %635 = extractvalue { ptr, i32 } %634, 0
  store ptr %635, ptr %8, align 8
  %636 = extractvalue { ptr, i32 } %634, 1
  store i32 %636, ptr %9, align 4
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %72) #7
  br label %637

637:                                              ; preds = %633, %629
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %73) #7
  call void @llvm.lifetime.end.p0(i64 1, ptr %73) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr %72) #7
  call void @_ZNSt6vectorIN9NOMAD_4_39EvalPointESaIS1_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %71) #7
  br label %638

638:                                              ; preds = %637, %625
  call void @llvm.lifetime.end.p0(i64 24, ptr %71) #7
  br label %644

639:                                              ; preds = %606
  br label %640

640:                                              ; preds = %639, %624
  call void @llvm.lifetime.end.p0(i64 4, ptr %68) #7
  store i32 0, ptr %27, align 4
  br label %641

641:                                              ; preds = %640, %585
  call void @_ZNSt12__shared_ptrIN9NOMAD_4_39EvalPointELN9__gnu_cxx12_Lock_policyE2EED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %67) #7
  call void @llvm.lifetime.end.p0(i64 16, ptr %67) #7
  call void @_ZNSt12__shared_ptrIN9NOMAD_4_39EvalPointELN9__gnu_cxx12_Lock_policyE2EED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %66) #7
  call void @llvm.lifetime.end.p0(i64 16, ptr %66) #7
  %642 = load i32, ptr %27, align 4
  switch i32 %642, label %649 [
    i32 0, label %643
  ]

643:                                              ; preds = %641
  br label %648

644:                                              ; preds = %638, %602, %598
  call void @llvm.lifetime.end.p0(i64 4, ptr %68) #7
  br label %645

645:                                              ; preds = %644, %569
  call void @_ZNSt12__shared_ptrIN9NOMAD_4_39EvalPointELN9__gnu_cxx12_Lock_policyE2EED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %67) #7
  br label %646

646:                                              ; preds = %645, %565
  call void @llvm.lifetime.end.p0(i64 16, ptr %67) #7
  call void @_ZNSt12__shared_ptrIN9NOMAD_4_39EvalPointELN9__gnu_cxx12_Lock_policyE2EED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %66) #7
  br label %647

647:                                              ; preds = %646, %561
  call void @llvm.lifetime.end.p0(i64 16, ptr %66) #7
  call void @_ZNSt12__shared_ptrIN9NOMAD_4_311BarrierBaseELN9__gnu_cxx12_Lock_policyE2EED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %65) #7
  br label %652

648:                                              ; preds = %643, %526
  store i32 0, ptr %27, align 4
  br label %649

649:                                              ; preds = %648, %641
  call void @_ZNSt12__shared_ptrIN9NOMAD_4_311BarrierBaseELN9__gnu_cxx12_Lock_policyE2EED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %65) #7
  call void @llvm.lifetime.end.p0(i64 16, ptr %65) #7
  %650 = load i32, ptr %27, align 4
  switch i32 %650, label %654 [
    i32 0, label %651
  ]

651:                                              ; preds = %649
  br label %653

652:                                              ; preds = %647, %557
  call void @llvm.lifetime.end.p0(i64 16, ptr %65) #7
  br label %658

653:                                              ; preds = %651, %505
  store i32 0, ptr %27, align 4
  br label %654

654:                                              ; preds = %653, %649
  call void @llvm.lifetime.end.p0(i64 4, ptr %35) #7
  call void @_ZNSt12__shared_ptrIN9NOMAD_4_39EvalPointELN9__gnu_cxx12_Lock_policyE2EED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %34) #7
  call void @llvm.lifetime.end.p0(i64 16, ptr %34) #7
  call void @_ZNSt12__shared_ptrIN9NOMAD_4_39EvalPointELN9__gnu_cxx12_Lock_policyE2EED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %33) #7
  call void @llvm.lifetime.end.p0(i64 16, ptr %33) #7
  br label %655

655:                                              ; preds = %654, %203
  call void @_ZN9NOMAD_4_313ArrayOfDoubleD1Ev(ptr noundef nonnull align 8 dereferenceable(24) %21) #7
  call void @llvm.lifetime.end.p0(i64 24, ptr %21) #7
  call void @_ZN9NOMAD_4_313ArrayOfDoubleD1Ev(ptr noundef nonnull align 8 dereferenceable(24) %19) #7
  call void @llvm.lifetime.end.p0(i64 24, ptr %19) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %18) #7
  call void @_ZNSt12__shared_ptrIN9NOMAD_4_311BarrierBaseELN9__gnu_cxx12_Lock_policyE2EED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %17) #7
  call void @llvm.lifetime.end.p0(i64 16, ptr %17) #7
  call void @_ZNSt12__shared_ptrIN9NOMAD_4_39EvalPointELN9__gnu_cxx12_Lock_policyE2EED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %16) #7
  call void @llvm.lifetime.end.p0(i64 16, ptr %16) #7
  %656 = load i32, ptr %27, align 4
  switch i32 %656, label %688 [
    i32 0, label %657
  ]

657:                                              ; preds = %655
  br label %685

658:                                              ; preds = %652, %553, %549, %503, %350, %308
  call void @llvm.lifetime.end.p0(i64 4, ptr %35) #7
  call void @_ZNSt12__shared_ptrIN9NOMAD_4_39EvalPointELN9__gnu_cxx12_Lock_policyE2EED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %34) #7
  br label %659

659:                                              ; preds = %658, %296
  call void @llvm.lifetime.end.p0(i64 16, ptr %34) #7
  call void @_ZNSt12__shared_ptrIN9NOMAD_4_39EvalPointELN9__gnu_cxx12_Lock_policyE2EED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %33) #7
  br label %660

660:                                              ; preds = %659, %292
  call void @llvm.lifetime.end.p0(i64 16, ptr %33) #7
  br label %661

661:                                              ; preds = %660, %239, %206, %201, %189, %185
  call void @_ZN9NOMAD_4_313ArrayOfDoubleD1Ev(ptr noundef nonnull align 8 dereferenceable(24) %21) #7
  br label %662

662:                                              ; preds = %661, %184
  call void @llvm.lifetime.end.p0(i64 24, ptr %21) #7
  call void @_ZN9NOMAD_4_313ArrayOfDoubleD1Ev(ptr noundef nonnull align 8 dereferenceable(24) %19) #7
  br label %663

663:                                              ; preds = %662, %175
  call void @llvm.lifetime.end.p0(i64 24, ptr %19) #7
  br label %664

664:                                              ; preds = %663, %163
  call void @llvm.lifetime.end.p0(i64 8, ptr %18) #7
  call void @_ZNSt12__shared_ptrIN9NOMAD_4_311BarrierBaseELN9__gnu_cxx12_Lock_policyE2EED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %17) #7
  call void @llvm.lifetime.end.p0(i64 16, ptr %17) #7
  call void @_ZNSt12__shared_ptrIN9NOMAD_4_39EvalPointELN9__gnu_cxx12_Lock_policyE2EED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %16) #7
  call void @llvm.lifetime.end.p0(i64 16, ptr %16) #7
  br label %691

665:                                              ; preds = %121
  call void @llvm.lifetime.start.p0(i64 4, ptr %74) #7
  store i32 7, ptr %74, align 4, !tbaa !70
  %666 = invoke noundef zeroext i1 @_ZN9NOMAD_4_311OutputQueue9GoodLevelERKNS_11OutputLevelE(ptr noundef nonnull align 4 dereferenceable(4) %74)
          to label %667 unwind label %671

667:                                              ; preds = %665
  call void @llvm.lifetime.end.p0(i64 4, ptr %74) #7
  br i1 %666, label %668, label %684

668:                                              ; preds = %667
  call void @llvm.lifetime.start.p0(i64 32, ptr %75) #7
  call void @llvm.lifetime.start.p0(i64 1, ptr %76) #7
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %76) #7
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %75, ptr noundef @.str.18, ptr noundef nonnull align 1 dereferenceable(1) %76)
          to label %669 unwind label %675

669:                                              ; preds = %668
  invoke void @_ZNK9NOMAD_4_34Step13AddOutputInfoERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEENS_11OutputLevelE(ptr noundef nonnull align 8 dereferenceable(140) %77, ptr noundef nonnull align 8 dereferenceable(32) %75, i32 noundef 7)
          to label %670 unwind label %679

670:                                              ; preds = %669
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %75) #7
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %76) #7
  call void @llvm.lifetime.end.p0(i64 1, ptr %76) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr %75) #7
  br label %684

671:                                              ; preds = %665
  %672 = landingpad { ptr, i32 }
          cleanup
  %673 = extractvalue { ptr, i32 } %672, 0
  store ptr %673, ptr %8, align 8
  %674 = extractvalue { ptr, i32 } %672, 1
  store i32 %674, ptr %9, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %74) #7
  br label %691

675:                                              ; preds = %668
  %676 = landingpad { ptr, i32 }
          cleanup
  %677 = extractvalue { ptr, i32 } %676, 0
  store ptr %677, ptr %8, align 8
  %678 = extractvalue { ptr, i32 } %676, 1
  store i32 %678, ptr %9, align 4
  br label %683

679:                                              ; preds = %669
  %680 = landingpad { ptr, i32 }
          cleanup
  %681 = extractvalue { ptr, i32 } %680, 0
  store ptr %681, ptr %8, align 8
  %682 = extractvalue { ptr, i32 } %680, 1
  store i32 %682, ptr %9, align 4
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %75) #7
  br label %683

683:                                              ; preds = %679, %675
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %76) #7
  call void @llvm.lifetime.end.p0(i64 1, ptr %76) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr %75) #7
  br label %691

684:                                              ; preds = %670, %667
  br label %685

685:                                              ; preds = %684, %657
  %686 = call noundef ptr @_ZNKSt19__shared_ptr_accessIN9NOMAD_4_316EvaluatorControlELN9__gnu_cxx12_Lock_policyE2ELb0ELb0EEptEv(ptr noundef nonnull align 1 dereferenceable(1) %5) #7
  invoke void @_ZN9NOMAD_4_316EvaluatorControl22selectCurrentEvaluatorENS_8EvalTypeE(ptr noundef nonnull align 8 dereferenceable(352) %686, i32 noundef 0)
          to label %687 unwind label %159

687:                                              ; preds = %685
  store i32 0, ptr %27, align 4
  br label %688

688:                                              ; preds = %687, %655
  call void @llvm.lifetime.end.p0(i64 8, ptr %15) #7
  call void @llvm.lifetime.end.p0(i64 4, ptr %7) #7
  call void @llvm.lifetime.end.p0(i64 4, ptr %6) #7
  call void @_ZNSt12__shared_ptrIN9NOMAD_4_316EvaluatorControlELN9__gnu_cxx12_Lock_policyE2EED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %5) #7
  call void @llvm.lifetime.end.p0(i64 16, ptr %5) #7
  %689 = load i32, ptr %27, align 4
  switch i32 %689, label %696 [
    i32 0, label %690
  ]

690:                                              ; preds = %688
  br label %693

691:                                              ; preds = %683, %671, %664, %159
  call void @llvm.lifetime.end.p0(i64 8, ptr %15) #7
  br label %692

692:                                              ; preds = %691, %110, %90
  call void @llvm.lifetime.end.p0(i64 4, ptr %7) #7
  call void @llvm.lifetime.end.p0(i64 4, ptr %6) #7
  call void @_ZNSt12__shared_ptrIN9NOMAD_4_316EvaluatorControlELN9__gnu_cxx12_Lock_policyE2EED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %5) #7
  call void @llvm.lifetime.end.p0(i64 16, ptr %5) #7
  call void @llvm.lifetime.end.p0(i64 1, ptr %4) #7
  br label %698

693:                                              ; preds = %690, %1
  %694 = load i8, ptr %4, align 1, !tbaa !9, !range !72, !noundef !73
  %695 = trunc i8 %694 to i1
  store i1 %695, ptr %2, align 1
  store i32 1, ptr %27, align 4
  br label %696

696:                                              ; preds = %693, %688
  call void @llvm.lifetime.end.p0(i64 1, ptr %4) #7
  %697 = load i1, ptr %2, align 1
  ret i1 %697

698:                                              ; preds = %692
  %699 = load ptr, ptr %8, align 8
  %700 = load i32, ptr %9, align 4
  %701 = insertvalue { ptr, i32 } poison, ptr %699, 0
  %702 = insertvalue { ptr, i32 } %701, i32 %700, 1
  resume { ptr, i32 } %702

703:                                              ; preds = %222, %89
  unreachable
}

declare ptr @__cxa_allocate_exception(i64)

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

declare void @__cxa_throw(ptr, ptr, ptr)

declare void @__cxa_free_exception(ptr)

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

declare noundef i64 @_ZNK9NOMAD_4_315TrialPointStats14getNbEvalsDoneENS_8EvalTypeEb(ptr noundef nonnull align 8 dereferenceable(232), i32 noundef, i1 noundef zeroext) #3

; 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

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

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

; 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

; 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 noundef nonnull align 8 dereferenceable(24) ptr @_ZNK9NOMAD_4_38MeshBase19getInitialFrameSizeEv(ptr noundef nonnull align 8 dereferenceable(257)) #1 align 2

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

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

; 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: mustprogress nounwind uwtable
declare dso_local void @_ZN9NOMAD_4_34Step14setSuccessTypeERKNS_11SuccessTypeE(ptr noundef nonnull align 8 dereferenceable(140), ptr noundef nonnull align 4 dereferenceable(4)) #1 align 2

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

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

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

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

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

; 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 void @_ZNK9NOMAD_4_39EvalPoint4getFENS_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

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

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

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

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

declare void @_ZN9NOMAD_4_33VNS14setFrameCenterESt10shared_ptrINS_9EvalPointEE(ptr noundef nonnull align 8 dereferenceable(536), ptr noundef) #3

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

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

declare void @_ZN9NOMAD_4_34Step5startEv(ptr noundef nonnull align 8 dereferenceable(140)) #3

declare noundef zeroext i1 @_ZN9NOMAD_4_34Step3runEv(ptr noundef nonnull align 8 dereferenceable(140)) #3

declare void @_ZN9NOMAD_4_34Step3endEv(ptr noundef nonnull align 8 dereferenceable(140)) #3

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

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

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

; 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 @_ZN9NOMAD_4_314IterationUtils15evalTrialPointsEPKNS_4StepEmNS_8StepTypeE(ptr noundef nonnull align 8 dereferenceable(328), ptr noundef, i64 noundef, i32 noundef) #3

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

; 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: 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: nounwind
declare void @_ZN9NOMAD_4_313ArrayOfDoubleD1Ev(ptr noundef nonnull align 8 dereferenceable(24)) unnamed_addr #4

; 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 = { 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 #5 = { inlinehint mustprogress nounwind uwtable "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }
attributes #6 = { 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 #7 = { nounwind }
attributes #8 = { 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 = !{!"bool", !7, i64 0}
!11 = !{!12, !12, i64 0}
!12 = !{!"_ZTSN9NOMAD_4_38EvalTypeE", !7, i64 0}
!13 = !{!14, !14, i64 0}
!14 = !{!"long", !7, i64 0}
!15 = !{!16, !59, i64 544}
!16 = !{!"_ZTSN9NOMAD_4_315VNSSearchMethodE", !17, i64 0, !56, i64 512, !57, i64 520, !59, i64 544, !10, i64 552, !60, i64 560, !66, i64 568}
!17 = !{!"_ZTSN9NOMAD_4_316SearchMethodAlgoE", !18, i64 0}
!18 = !{!"_ZTSN9NOMAD_4_316SearchMethodBaseE", !19, i64 0, !38, i64 144, !10, i64 472, !54, i64 480}
!19 = !{!"_ZTSN9NOMAD_4_34StepE", !6, i64 8, !20, i64 16, !21, i64 24, !24, i64 40, !26, i64 56, !28, i64 72, !37, i64 136}
!20 = !{!"_ZTSN9NOMAD_4_38StepTypeE", !7, i64 0}
!21 = !{!"_ZTSSt10shared_ptrIN9NOMAD_4_314AllStopReasonsEE", !22, i64 0}
!22 = !{!"_ZTSSt12__shared_ptrIN9NOMAD_4_314AllStopReasonsELN9__gnu_cxx12_Lock_policyE2EE", !6, i64 0, !23, i64 8}
!23 = !{!"_ZTSSt14__shared_countILN9__gnu_cxx12_Lock_policyE2EE", !6, i64 0}
!24 = !{!"_ZTSSt10shared_ptrIN9NOMAD_4_313RunParametersEE", !25, i64 0}
!25 = !{!"_ZTSSt12__shared_ptrIN9NOMAD_4_313RunParametersELN9__gnu_cxx12_Lock_policyE2EE", !6, i64 0, !23, i64 8}
!26 = !{!"_ZTSSt10shared_ptrIN9NOMAD_4_312PbParametersEE", !27, i64 0}
!27 = !{!"_ZTSSt12__shared_ptrIN9NOMAD_4_312PbParametersELN9__gnu_cxx12_Lock_policyE2EE", !6, i64 0, !23, i64 8}
!28 = !{!"_ZTSN9NOMAD_4_312SuccessStatsE", !29, i64 0, !14, i64 48, !14, i64 56}
!29 = !{!"_ZTSSt3mapISt4pairIN9NOMAD_4_38StepTypeENS1_11SuccessTypeEEmSt4lessIS4_ESaIS0_IKS4_mEEE", !30, i64 0}
!30 = !{!"_ZTSSt8_Rb_treeISt4pairIN9NOMAD_4_38StepTypeENS1_11SuccessTypeEES0_IKS4_mESt10_Select1stIS6_ESt4lessIS4_ESaIS6_EE", !31, i64 0}
!31 = !{!"_ZTSNSt8_Rb_treeISt4pairIN9NOMAD_4_38StepTypeENS1_11SuccessTypeEES0_IKS4_mESt10_Select1stIS6_ESt4lessIS4_ESaIS6_EE13_Rb_tree_implISA_Lb1EEE", !32, i64 0, !34, i64 8}
!32 = !{!"_ZTSSt20_Rb_tree_key_compareISt4lessISt4pairIN9NOMAD_4_38StepTypeENS2_11SuccessTypeEEEE", !33, i64 0}
!33 = !{!"_ZTSSt4lessISt4pairIN9NOMAD_4_38StepTypeENS1_11SuccessTypeEEE"}
!34 = !{!"_ZTSSt15_Rb_tree_header", !35, i64 0, !14, i64 32}
!35 = !{!"_ZTSSt18_Rb_tree_node_base", !36, i64 0, !6, i64 8, !6, i64 16, !6, i64 24}
!36 = !{!"_ZTSSt14_Rb_tree_color", !7, i64 0}
!37 = !{!"_ZTSN9NOMAD_4_311SuccessTypeE", !7, i64 0}
!38 = !{!"_ZTSN9NOMAD_4_314IterationUtilsE", !39, i64 8, !14, i64 56, !6, i64 64, !6, i64 72, !6, i64 80, !44, i64 88, !10, i64 320, !37, i64 324}
!39 = !{!"_ZTSSt3setIN9NOMAD_4_39EvalPointENS0_16EvalPointCompareESaIS1_EE", !40, i64 0}
!40 = !{!"_ZTSSt8_Rb_treeIN9NOMAD_4_39EvalPointES1_St9_IdentityIS1_ENS0_16EvalPointCompareESaIS1_EE", !41, i64 0}
!41 = !{!"_ZTSNSt8_Rb_treeIN9NOMAD_4_39EvalPointES1_St9_IdentityIS1_ENS0_16EvalPointCompareESaIS1_EE13_Rb_tree_implIS4_Lb1EEE", !42, i64 0, !34, i64 8}
!42 = !{!"_ZTSSt20_Rb_tree_key_compareIN9NOMAD_4_316EvalPointCompareEE", !43, i64 0}
!43 = !{!"_ZTSN9NOMAD_4_316EvalPointCompareE"}
!44 = !{!"_ZTSN9NOMAD_4_315TrialPointStatsE", !6, i64 0, !45, i64 8, !49, i64 32, !49, i64 80, !49, i64 128, !49, i64 176, !14, i64 224}
!45 = !{!"_ZTSSt6vectorIN9NOMAD_4_38EvalTypeESaIS1_EE", !46, i64 0}
!46 = !{!"_ZTSSt12_Vector_baseIN9NOMAD_4_38EvalTypeESaIS1_EE", !47, i64 0}
!47 = !{!"_ZTSNSt12_Vector_baseIN9NOMAD_4_38EvalTypeESaIS1_EE12_Vector_implE", !48, i64 0}
!48 = !{!"_ZTSNSt12_Vector_baseIN9NOMAD_4_38EvalTypeESaIS1_EE17_Vector_impl_dataE", !6, i64 0, !6, i64 8, !6, i64 16}
!49 = !{!"_ZTSSt3mapIN9NOMAD_4_38EvalTypeEmSt4lessIS1_ESaISt4pairIKS1_mEEE", !50, i64 0}
!50 = !{!"_ZTSSt8_Rb_treeIN9NOMAD_4_38EvalTypeESt4pairIKS1_mESt10_Select1stIS4_ESt4lessIS1_ESaIS4_EE", !51, i64 0}
!51 = !{!"_ZTSNSt8_Rb_treeIN9NOMAD_4_38EvalTypeESt4pairIKS1_mESt10_Select1stIS4_ESt4lessIS1_ESaIS4_EE13_Rb_tree_implIS8_Lb1EEE", !52, i64 0, !34, i64 8}
!52 = !{!"_ZTSSt20_Rb_tree_key_compareISt4lessIN9NOMAD_4_38EvalTypeEEE", !53, i64 0}
!53 = !{!"_ZTSSt4lessIN9NOMAD_4_38EvalTypeEE"}
!54 = !{!"_ZTSNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE", !55, i64 0, !14, i64 8, !7, i64 16}
!55 = !{!"_ZTSNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE12_Alloc_hiderE", !6, i64 0}
!56 = !{!"_ZTSN9NOMAD_4_311OutputLevelE", !7, i64 0}
!57 = !{!"_ZTSN9NOMAD_4_35PointE", !58, i64 0}
!58 = !{!"_ZTSN9NOMAD_4_313ArrayOfDoubleE", !14, i64 8, !6, i64 16}
!59 = !{!"double", !7, i64 0}
!60 = !{!"_ZTSSt10unique_ptrIN9NOMAD_4_33VNSESt14default_deleteIS1_EE", !61, i64 0}
!61 = !{!"_ZTSSt15__uniq_ptr_dataIN9NOMAD_4_33VNSESt14default_deleteIS1_ELb1ELb1EE", !62, i64 0}
!62 = !{!"_ZTSSt15__uniq_ptr_implIN9NOMAD_4_33VNSESt14default_deleteIS1_EE", !63, i64 0}
!63 = !{!"_ZTSSt5tupleIJPN9NOMAD_4_33VNSESt14default_deleteIS1_EEE", !64, i64 0}
!64 = !{!"_ZTSSt11_Tuple_implILm0EJPN9NOMAD_4_33VNSESt14default_deleteIS1_EEE", !65, i64 0}
!65 = !{!"_ZTSSt10_Head_baseILm0EPN9NOMAD_4_33VNSELb0EE", !6, i64 0}
!66 = !{!"_ZTSSt10shared_ptrIN9NOMAD_4_315AlgoStopReasonsINS0_11VNSStopTypeEEEE", !67, i64 0}
!67 = !{!"_ZTSSt12__shared_ptrIN9NOMAD_4_315AlgoStopReasonsINS0_11VNSStopTypeEEELN9__gnu_cxx12_Lock_policyE2EE", !6, i64 0, !23, i64 8}
!68 = !{!69, !69, i64 0}
!69 = !{!"vtable pointer", !8, i64 0}
!70 = !{!56, !56, i64 0}
!71 = !{!37, !37, i64 0}
!72 = !{i8 0, i8 2}
!73 = !{}
!74 = !{!75, !75, i64 0}
!75 = !{!"_ZTSN9NOMAD_4_311ComputeTypeE", !7, i64 0}
!76 = !{!16, !10, i64 552}


; 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.28" = type { %"class.std::__shared_ptr.29" }
%"class.std::__shared_ptr.29" = 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::shared_ptr.67" = type { %"class.std::__shared_ptr.68" }
%"class.std::__shared_ptr.68" = type { ptr, %"class.std::__shared_count" }
%"class.std::shared_ptr.70" = type { %"class.std::__shared_ptr.71" }
%"class.std::__shared_ptr.71" = type { ptr, %"class.std::__shared_count" }
%"class.NOMAD_4_3::ArrayOfDouble" = type { ptr, i64, ptr }
%"class.std::shared_ptr.73" = type { %"class.std::__shared_ptr.74" }
%"class.std::__shared_ptr.74" = type { ptr, %"class.std::__shared_count" }
%"class.NOMAD_4_3::Double" = type <{ ptr, double, i8, [7 x i8] }>
%"class.std::vector.127" = type { %"struct.std::_Vector_base.128" }
%"struct.std::_Vector_base.128" = 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 }

@_ZTIN9NOMAD_4_39ExceptionE = external constant ptr
@.str.13 = external hidden unnamed_addr constant [93 x i8], align 1
@.str.14 = external hidden unnamed_addr constant [43 x i8], align 1
@.str.15 = external hidden unnamed_addr constant [66 x i8], align 1
@_ZN9NOMAD_4_3L16MODEL_MAX_OUTPUTE = external hidden constant double, align 8
@.str.17 = external hidden unnamed_addr constant [23 x i8], align 1
@.str.18 = external hidden unnamed_addr constant [53 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

; Function Attrs: mustprogress nounwind uwtable
declare dso_local void @_ZN9NOMAD_4_312EvcInterface19getEvaluatorControlEv(ptr dead_on_unwind noalias writable sret(%"class.std::shared_ptr.28") align 8) local_unnamed_addr #1 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 1 dereferenceable(1) ptr @_ZNK9NOMAD_4_310Parameters17getAttributeValueIbEERKT_RKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEb(ptr noundef nonnull align 8 dereferenceable(496), ptr noundef nonnull align 8 dereferenceable(32), i1 noundef zeroext) local_unnamed_addr #2 align 2

; 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 void @_ZN9NOMAD_4_316EvaluatorControl22selectCurrentEvaluatorENS_8EvalTypeE(ptr noundef nonnull align 8 dereferenceable(352), i32 noundef) local_unnamed_addr #3

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 noundef zeroext i1 @_ZNK9NOMAD_4_316SearchMethodBase9isEnabledEv(ptr noundef nonnull align 8 dereferenceable(512)) local_unnamed_addr #1 align 2

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

; 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

; Function Attrs: mustprogress uwtable
define dso_local noundef zeroext i1 @_ZN9NOMAD_4_315VNSSearchMethod6runImpEv(ptr noundef nonnull align 8 dereferenceable(584) %0) unnamed_addr #2 align 2 personality ptr @__gxx_personality_v0 {
  %2 = alloca %"class.std::shared_ptr.28", align 8
  %3 = alloca %"class.std::__cxx11::basic_string", align 8
  %4 = alloca %"class.std::allocator", align 1
  %5 = alloca %"class.std::__cxx11::basic_string", align 8
  %6 = alloca %"class.std::allocator", align 1
  %7 = alloca %"class.std::shared_ptr.67", align 8
  %8 = alloca %"class.std::shared_ptr.70", align 8
  %9 = alloca %"class.NOMAD_4_3::ArrayOfDouble", align 8
  %10 = alloca %"class.std::shared_ptr.73", align 8
  %11 = alloca %"class.NOMAD_4_3::ArrayOfDouble", align 8
  %12 = alloca %"class.std::shared_ptr.73", align 8
  %13 = alloca i32, align 4
  %14 = alloca %"class.std::__cxx11::basic_string", align 8
  %15 = alloca %"class.std::allocator", align 1
  %16 = alloca i32, align 4
  %17 = alloca %"class.std::shared_ptr.67", align 8
  %18 = alloca %"class.std::shared_ptr.67", align 8
  %19 = alloca %"class.std::shared_ptr.28", align 8
  %20 = alloca %"class.NOMAD_4_3::Double", align 8
  %21 = alloca %"class.NOMAD_4_3::Double", align 8
  %22 = alloca %"class.NOMAD_4_3::Double", align 8
  %23 = alloca %"class.NOMAD_4_3::Double", align 8
  %24 = alloca %"class.NOMAD_4_3::Double", align 8
  %25 = alloca %"class.NOMAD_4_3::Double", align 8
  %26 = alloca %"class.NOMAD_4_3::Double", align 8
  %27 = alloca %"class.NOMAD_4_3::Double", align 8
  %28 = alloca %"class.NOMAD_4_3::Double", align 8
  %29 = alloca %"class.std::shared_ptr.67", align 8
  %30 = alloca %"class.std::shared_ptr.70", align 8
  %31 = alloca %"class.std::shared_ptr.67", align 8
  %32 = alloca %"class.std::shared_ptr.67", align 8
  %33 = alloca i32, align 4
  %34 = alloca %"class.std::shared_ptr.67", align 8
  %35 = alloca %"class.std::shared_ptr.67", align 8
  %36 = alloca %"class.std::vector.127", align 8
  %37 = alloca %"class.std::__cxx11::basic_string", align 8
  %38 = alloca %"class.std::allocator", align 1
  %39 = alloca i32, align 4
  %40 = alloca %"class.std::__cxx11::basic_string", align 8
  %41 = alloca %"class.std::allocator", align 1
  %42 = tail call noundef zeroext i1 @_ZNK9NOMAD_4_316SearchMethodBase9isEnabledEv(ptr noundef nonnull align 8 dereferenceable(512) %0)
  br i1 %42, label %43, label %344

43:                                               ; preds = %1
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %2) #7
  call void @_ZN9NOMAD_4_312EvcInterface19getEvaluatorControlEv(ptr dead_on_unwind nonnull writable sret(%"class.std::shared_ptr.28") align 8 %2)
  %44 = call noundef ptr @_ZNKSt19__shared_ptr_accessIN9NOMAD_4_316EvaluatorControlELN9__gnu_cxx12_Lock_policyE2ELb0ELb0EEptEv(ptr noundef nonnull align 1 dereferenceable(1) %2) #7
  %45 = invoke noundef i32 @_ZNK9NOMAD_4_316EvaluatorControl18getCurrentEvalTypeEi(ptr noundef nonnull align 8 dereferenceable(352) %44, i32 noundef -1)
          to label %46 unwind label %53

46:                                               ; preds = %43
  %47 = icmp eq i32 %45, 1
  br i1 %47, label %48, label %62

48:                                               ; preds = %46
  %49 = call ptr @__cxa_allocate_exception(i64 112) #7
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %3) #7
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %4) #7
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %4) #7
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %3, ptr noundef nonnull @.str.13, ptr noundef nonnull align 1 dereferenceable(1) %4)
          to label %50 unwind label %.thread

50:                                               ; preds = %48
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %5) #7
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %6) #7
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %6) #7
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %5, ptr noundef nonnull @.str.14, ptr noundef nonnull align 1 dereferenceable(1) %6)
          to label %51 unwind label %56

51:                                               ; preds = %50
  invoke void @_ZN9NOMAD_4_39ExceptionC2ERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEmS8_(ptr noundef nonnull align 8 dereferenceable(112) %49, ptr noundef nonnull align 8 dereferenceable(32) %3, i64 noundef 132, ptr noundef nonnull align 8 dereferenceable(32) %5)
          to label %52 unwind label %58

52:                                               ; preds = %51
  invoke void @__cxa_throw(ptr nonnull %49, ptr nonnull @_ZTIN9NOMAD_4_39ExceptionE, ptr nonnull @_ZN9NOMAD_4_39ExceptionD2Ev) #8
          to label %345 unwind label %58

53:                                               ; preds = %43
  %54 = landingpad { ptr, i32 }
          cleanup
  br label %343

.thread:                                          ; preds = %48
  %55 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %4) #7
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %4) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %3) #7
  br label %61

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

58:                                               ; preds = %52, %51
  %.0110 = phi i1 [ false, %52 ], [ true, %51 ]
  %59 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %5) #7
  br label %60

60:                                               ; preds = %56, %58
  %.pn184 = phi { ptr, i32 } [ %59, %58 ], [ %57, %56 ]
  %.1111 = phi i1 [ %.0110, %58 ], [ true, %56 ]
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %6) #7
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %6) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %5) #7
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %3) #7
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %4) #7
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %4) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %3) #7
  br i1 %.1111, label %61, label %343

61:                                               ; preds = %.thread, %60
  %.pn184.pn208 = phi { ptr, i32 } [ %55, %.thread ], [ %.pn184, %60 ]
  call void @__cxa_free_exception(ptr %49) #7
  br label %343

62:                                               ; preds = %46
  %63 = call noundef ptr @_ZNKSt19__shared_ptr_accessIN9NOMAD_4_316EvaluatorControlELN9__gnu_cxx12_Lock_policyE2ELb0ELb0EEptEv(ptr noundef nonnull align 1 dereferenceable(1) %2) #7
  %64 = call noundef i64 @_ZNK9NOMAD_4_316EvaluatorControl9getBbEvalEv(ptr noundef nonnull align 8 dereferenceable(352) %63)
  %65 = icmp eq i64 %64, 0
  br i1 %65, label %76, label %66

66:                                               ; preds = %62
  %67 = getelementptr inbounds i8, ptr %0, i64 232
  %68 = invoke noundef i64 @_ZNK9NOMAD_4_315TrialPointStats14getNbEvalsDoneENS_8EvalTypeEb(ptr noundef nonnull align 8 dereferenceable(232) %67, i32 noundef 0, i1 noundef zeroext true)
          to label %69 unwind label %103

69:                                               ; preds = %66
  %70 = uitofp i64 %68 to double
  %71 = uitofp i64 %64 to double
  %72 = fdiv double %70, %71
  %73 = getelementptr inbounds i8, ptr %0, i64 544
  %74 = load double, ptr %73, align 8, !tbaa !5
  %75 = fcmp olt double %72, %74
  br i1 %75, label %76, label %327

76:                                               ; preds = %69, %62
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %7) #7
  call void @_ZNSt10shared_ptrIN9NOMAD_4_39EvalPointEEC2EDn(ptr noundef nonnull align 8 dereferenceable(16) %7, ptr null) #7
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %8) #7
  call void @_ZNSt10shared_ptrIN9NOMAD_4_311BarrierBaseEEC2EDn(ptr noundef nonnull align 8 dereferenceable(16) %8, ptr null) #7
  %77 = invoke noundef ptr @_ZNK9NOMAD_4_34Step15getParentOfTypeIPNS_17MadsMegaIterationEEET_b(ptr noundef nonnull align 8 dereferenceable(140) %0, i1 noundef zeroext false)
          to label %78 unwind label %105

78:                                               ; preds = %76
  call void @llvm.lifetime.start.p0(i64 24, ptr nonnull %9) #7
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %10) #7
  %79 = load ptr, ptr %77, align 8, !tbaa !63
  %80 = getelementptr inbounds i8, ptr %79, i64 80
  %81 = load ptr, ptr %80, align 8
  invoke void %81(ptr dead_on_unwind nonnull writable sret(%"class.std::shared_ptr.73") align 8 %10, ptr noundef nonnull align 8 dereferenceable(200) %77)
          to label %82 unwind label %107

82:                                               ; preds = %78
  %83 = call noundef ptr @_ZNKSt19__shared_ptr_accessIN9NOMAD_4_38MeshBaseELN9__gnu_cxx12_Lock_policyE2ELb0ELb0EEptEv(ptr noundef nonnull align 1 dereferenceable(1) %10) #7
  %84 = load ptr, ptr %83, align 8, !tbaa !63
  %85 = getelementptr inbounds i8, ptr %84, i64 112
  %86 = load ptr, ptr %85, align 8
  invoke void %86(ptr dead_on_unwind nonnull writable sret(%"class.NOMAD_4_3::ArrayOfDouble") align 8 %9, ptr noundef nonnull align 8 dereferenceable(257) %83)
          to label %87 unwind label %109

87:                                               ; preds = %82
  call void @_ZNSt12__shared_ptrIN9NOMAD_4_38MeshBaseELN9__gnu_cxx12_Lock_policyE2EED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %10) #7
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %10) #7
  call void @llvm.lifetime.start.p0(i64 24, ptr nonnull %11) #7
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %12) #7
  %88 = load ptr, ptr %77, align 8, !tbaa !63
  %89 = getelementptr inbounds i8, ptr %88, i64 80
  %90 = load ptr, ptr %89, align 8
  invoke void %90(ptr dead_on_unwind nonnull writable sret(%"class.std::shared_ptr.73") align 8 %12, ptr noundef nonnull align 8 dereferenceable(200) %77)
          to label %91 unwind label %112

91:                                               ; preds = %87
  %92 = call noundef ptr @_ZNKSt19__shared_ptr_accessIN9NOMAD_4_38MeshBaseELN9__gnu_cxx12_Lock_policyE2ELb0ELb0EEptEv(ptr noundef nonnull align 1 dereferenceable(1) %12) #7
  %93 = call noundef nonnull align 8 dereferenceable(24) ptr @_ZNK9NOMAD_4_38MeshBase19getInitialFrameSizeEv(ptr noundef nonnull align 8 dereferenceable(257) %92)
  invoke void @_ZN9NOMAD_4_313ArrayOfDoubleC1ERKS0_(ptr noundef nonnull align 8 dereferenceable(24) %11, ptr noundef nonnull align 8 dereferenceable(24) %93)
          to label %94 unwind label %114

94:                                               ; preds = %91
  call void @_ZNSt12__shared_ptrIN9NOMAD_4_38MeshBaseELN9__gnu_cxx12_Lock_policyE2EED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %12) #7
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %12) #7
  %95 = invoke noundef zeroext i1 @_ZNK9NOMAD_4_313ArrayOfDoubleltERKS0_(ptr noundef nonnull align 8 dereferenceable(24) %11, ptr noundef nonnull align 8 dereferenceable(24) %9)
          to label %96 unwind label %117

96:                                               ; preds = %94
  br i1 %95, label %97, label %127

97:                                               ; preds = %96
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %13) #7
  store i32 7, ptr %13, align 4, !tbaa !65
  %98 = invoke noundef zeroext i1 @_ZN9NOMAD_4_311OutputQueue9GoodLevelERKNS_11OutputLevelE(ptr noundef nonnull align 4 dereferenceable(4) %13)
          to label %99 unwind label %119

99:                                               ; preds = %97
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %13) #7
  br i1 %98, label %100, label %126

100:                                              ; preds = %99
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %14) #7
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %15) #7
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %15) #7
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %14, ptr noundef nonnull @.str.15, ptr noundef nonnull align 1 dereferenceable(1) %15)
          to label %101 unwind label %121

101:                                              ; preds = %100
  invoke void @_ZNK9NOMAD_4_34Step13AddOutputInfoERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEENS_11OutputLevelE(ptr noundef nonnull align 8 dereferenceable(140) %0, ptr noundef nonnull align 8 dereferenceable(32) %14, i32 noundef 7)
          to label %102 unwind label %123

102:                                              ; preds = %101
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %14) #7
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %15) #7
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %15) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %14) #7
  br label %126

103:                                              ; preds = %340, %66
  %104 = landingpad { ptr, i32 }
          cleanup
  br label %343

105:                                              ; preds = %76
  %106 = landingpad { ptr, i32 }
          cleanup
  br label %326

107:                                              ; preds = %78
  %108 = landingpad { ptr, i32 }
          cleanup
  br label %111

109:                                              ; preds = %82
  %110 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt12__shared_ptrIN9NOMAD_4_38MeshBaseELN9__gnu_cxx12_Lock_policyE2EED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %10) #7
  br label %111

111:                                              ; preds = %109, %107
  %.pn149 = phi { ptr, i32 } [ %110, %109 ], [ %108, %107 ]
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %10) #7
  br label %325

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

114:                                              ; preds = %91
  %115 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt12__shared_ptrIN9NOMAD_4_38MeshBaseELN9__gnu_cxx12_Lock_policyE2EED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %12) #7
  br label %116

116:                                              ; preds = %114, %112
  %.pn151 = phi { ptr, i32 } [ %115, %114 ], [ %113, %112 ]
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %12) #7
  br label %324

117:                                              ; preds = %94
  %118 = landingpad { ptr, i32 }
          cleanup
  br label %323

119:                                              ; preds = %97
  %120 = landingpad { ptr, i32 }
          cleanup
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %13) #7
  br label %323

121:                                              ; preds = %100
  %122 = landingpad { ptr, i32 }
          cleanup
  br label %125

123:                                              ; preds = %101
  %124 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %14) #7
  br label %125

125:                                              ; preds = %123, %121
  %.pn176 = phi { ptr, i32 } [ %124, %123 ], [ %122, %121 ]
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %15) #7
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %15) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %14) #7
  br label %323

126:                                              ; preds = %102, %99
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %16) #7
  store i32 2, ptr %16, align 4, !tbaa !66
  call void @_ZN9NOMAD_4_34Step14setSuccessTypeERKNS_11SuccessTypeE(ptr noundef nonnull align 8 dereferenceable(140) %0, ptr noundef nonnull align 4 dereferenceable(4) %16)
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %16) #7
  br label %319

127:                                              ; preds = %96
  %128 = call noundef nonnull align 8 dereferenceable(16) ptr @_ZNK9NOMAD_4_313MegaIteration10getBarrierEv(ptr noundef nonnull align 8 dereferenceable(172) %77)
  %129 = call noundef nonnull align 8 dereferenceable(16) ptr @_ZNSt10shared_ptrIN9NOMAD_4_311BarrierBaseEEaSERKS2_(ptr noundef nonnull align 8 dereferenceable(16) %8, ptr noundef nonnull align 8 dereferenceable(16) %128) #7
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %17) #7
  %130 = call noundef ptr @_ZNKSt19__shared_ptr_accessIN9NOMAD_4_311BarrierBaseELN9__gnu_cxx12_Lock_policyE2ELb0ELb0EEptEv(ptr noundef nonnull align 1 dereferenceable(1) %8) #7
  %131 = load ptr, ptr %130, align 8, !tbaa !63
  %132 = getelementptr inbounds i8, ptr %131, i64 8
  %133 = load ptr, ptr %132, align 8
  invoke void %133(ptr dead_on_unwind nonnull writable sret(%"class.std::shared_ptr.67") align 8 %17, ptr noundef nonnull align 8 dereferenceable(120) %130)
          to label %134 unwind label %156

134:                                              ; preds = %127
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %18) #7
  %135 = call noundef ptr @_ZNKSt19__shared_ptr_accessIN9NOMAD_4_311BarrierBaseELN9__gnu_cxx12_Lock_policyE2ELb0ELb0EEptEv(ptr noundef nonnull align 1 dereferenceable(1) %8) #7
  %136 = load ptr, ptr %135, align 8, !tbaa !63
  %137 = getelementptr inbounds i8, ptr %136, i64 32
  %138 = load ptr, ptr %137, align 8
  invoke void %138(ptr dead_on_unwind nonnull writable sret(%"class.std::shared_ptr.67") align 8 %18, ptr noundef nonnull align 8 dereferenceable(120) %135)
          to label %139 unwind label %158

139:                                              ; preds = %134
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %19) #7
  call void @_ZN9NOMAD_4_312EvcInterface19getEvaluatorControlEv(ptr dead_on_unwind nonnull writable sret(%"class.std::shared_ptr.28") align 8 %19)
  %140 = call noundef ptr @_ZNKSt19__shared_ptr_accessIN9NOMAD_4_316EvaluatorControlELN9__gnu_cxx12_Lock_policyE2ELb0ELb0EEptEv(ptr noundef nonnull align 1 dereferenceable(1) %19) #7
  %141 = invoke noundef nonnull align 4 dereferenceable(4) ptr @_ZNK9NOMAD_4_316EvaluatorControl14getComputeTypeEi(ptr noundef nonnull align 8 dereferenceable(352) %140, i32 noundef -1)
          to label %142 unwind label %160

142:                                              ; preds = %139
  %143 = load i32, ptr %141, align 4, !tbaa !67
  call void @_ZNSt12__shared_ptrIN9NOMAD_4_316EvaluatorControlELN9__gnu_cxx12_Lock_policyE2EED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %19) #7
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %19) #7
  %144 = call noundef zeroext i1 @_ZStneIN9NOMAD_4_39EvalPointEEbDnRKSt10shared_ptrIT_E(ptr null, ptr noundef nonnull align 8 dereferenceable(16) %17) #7
  br i1 %144, label %145, label %.critedge191.thread

145:                                              ; preds = %142
  call void @llvm.lifetime.start.p0(i64 24, ptr nonnull %20) #7
  %146 = call noundef ptr @_ZNKSt19__shared_ptr_accessIN9NOMAD_4_39EvalPointELN9__gnu_cxx12_Lock_policyE2ELb0ELb0EEptEv(ptr noundef nonnull align 1 dereferenceable(1) %17) #7
  invoke void @_ZNK9NOMAD_4_39EvalPoint4getFENS_8EvalTypeENS_11ComputeTypeE(ptr dead_on_unwind nonnull writable sret(%"class.NOMAD_4_3::Double") align 8 %20, ptr noundef nonnull align 8 dereferenceable(160) %146, i32 noundef 0, i32 noundef %143)
          to label %147 unwind label %162

147:                                              ; preds = %145
  %148 = call noundef zeroext i1 @_ZNK9NOMAD_4_36Double9isDefinedEv(ptr noundef nonnull align 8 dereferenceable(17) %20)
  br i1 %148, label %149, label %.critedge191.thread212

.critedge191.thread212:                           ; preds = %147
  call void @_ZN9NOMAD_4_36DoubleD1Ev(ptr noundef nonnull align 8 dereferenceable(17) %20) #7
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %20) #7
  br label %.critedge191.thread

149:                                              ; preds = %147
  call void @llvm.lifetime.start.p0(i64 24, ptr nonnull %21) #7
  %150 = call noundef ptr @_ZNKSt19__shared_ptr_accessIN9NOMAD_4_39EvalPointELN9__gnu_cxx12_Lock_policyE2ELb0ELb0EEptEv(ptr noundef nonnull align 1 dereferenceable(1) %17) #7
  invoke void @_ZNK9NOMAD_4_39EvalPoint4getFENS_8EvalTypeENS_11ComputeTypeE(ptr dead_on_unwind nonnull writable sret(%"class.NOMAD_4_3::Double") align 8 %21, ptr noundef nonnull align 8 dereferenceable(160) %150, i32 noundef 0, i32 noundef %143)
          to label %151 unwind label %164

151:                                              ; preds = %149
  call void @llvm.lifetime.start.p0(i64 24, ptr nonnull %22) #7
  invoke void @_ZN9NOMAD_4_36DoubleC1ERKd(ptr noundef nonnull align 8 dereferenceable(17) %22, ptr noundef nonnull align 8 dereferenceable(8) @_ZN9NOMAD_4_3L16MODEL_MAX_OUTPUTE)
          to label %152 unwind label %166

152:                                              ; preds = %151
  %153 = invoke noundef zeroext i1 @_ZN9NOMAD_4_3ltERKNS_6DoubleES2_(ptr noundef nonnull align 8 dereferenceable(17) %21, ptr noundef nonnull align 8 dereferenceable(17) %22)
          to label %.critedge191 unwind label %168

.critedge191:                                     ; preds = %152
  call void @_ZN9NOMAD_4_36DoubleD1Ev(ptr noundef nonnull align 8 dereferenceable(17) %22) #7
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %22) #7
  call void @_ZN9NOMAD_4_36DoubleD1Ev(ptr noundef nonnull align 8 dereferenceable(17) %21) #7
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %21) #7
  call void @_ZN9NOMAD_4_36DoubleD1Ev(ptr noundef nonnull align 8 dereferenceable(17) %20) #7
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %20) #7
  br i1 %153, label %154, label %.critedge191.thread

154:                                              ; preds = %.critedge191
  %155 = call noundef nonnull align 8 dereferenceable(16) ptr @_ZNSt10shared_ptrIN9NOMAD_4_39EvalPointEEaSERKS2_(ptr noundef nonnull align 8 dereferenceable(16) %7, ptr noundef nonnull align 8 dereferenceable(16) %17) #7
  br label %.critedge203.thread

156:                                              ; preds = %127
  %157 = landingpad { ptr, i32 }
          cleanup
  br label %322

158:                                              ; preds = %134
  %159 = landingpad { ptr, i32 }
          cleanup
  br label %321

160:                                              ; preds = %139
  %161 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt12__shared_ptrIN9NOMAD_4_316EvaluatorControlELN9__gnu_cxx12_Lock_policyE2EED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %19) #7
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %19) #7
  br label %320

162:                                              ; preds = %145
  %163 = landingpad { ptr, i32 }
          cleanup
  br label %172

164:                                              ; preds = %149
  %165 = landingpad { ptr, i32 }
          cleanup
  br label %171

166:                                              ; preds = %151
  %167 = landingpad { ptr, i32 }
          cleanup
  br label %170

168:                                              ; preds = %152
  %169 = landingpad { ptr, i32 }
          cleanup
  call void @_ZN9NOMAD_4_36DoubleD1Ev(ptr noundef nonnull align 8 dereferenceable(17) %22) #7
  br label %170

170:                                              ; preds = %166, %168
  %.pn153 = phi { ptr, i32 } [ %169, %168 ], [ %167, %166 ]
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %22) #7
  call void @_ZN9NOMAD_4_36DoubleD1Ev(ptr noundef nonnull align 8 dereferenceable(17) %21) #7
  br label %171

171:                                              ; preds = %164, %170
  %.pn153.pn = phi { ptr, i32 } [ %.pn153, %170 ], [ %165, %164 ]
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %21) #7
  call void @_ZN9NOMAD_4_36DoubleD1Ev(ptr noundef nonnull align 8 dereferenceable(17) %20) #7
  br label %172

172:                                              ; preds = %162, %171
  %.pn153.pn.pn = phi { ptr, i32 } [ %.pn153.pn, %171 ], [ %163, %162 ]
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %20) #7
  br label %320

.critedge191.thread:                              ; preds = %142, %.critedge191.thread212, %.critedge191
  %173 = call noundef zeroext i1 @_ZStneIN9NOMAD_4_39EvalPointEEbDnRKSt10shared_ptrIT_E(ptr null, ptr noundef nonnull align 8 dereferenceable(16) %18) #7
  br i1 %173, label %174, label %.critedge203.thread

174:                                              ; preds = %.critedge191.thread
  call void @llvm.lifetime.start.p0(i64 24, ptr nonnull %23) #7
  %175 = call noundef ptr @_ZNKSt19__shared_ptr_accessIN9NOMAD_4_39EvalPointELN9__gnu_cxx12_Lock_policyE2ELb0ELb0EEptEv(ptr noundef nonnull align 1 dereferenceable(1) %18) #7
  invoke void @_ZNK9NOMAD_4_39EvalPoint4getFENS_8EvalTypeENS_11ComputeTypeE(ptr dead_on_unwind nonnull writable sret(%"class.NOMAD_4_3::Double") align 8 %23, ptr noundef nonnull align 8 dereferenceable(160) %175, i32 noundef 0, i32 noundef %143)
          to label %176 unwind label %195

176:                                              ; preds = %174
  %177 = call noundef zeroext i1 @_ZNK9NOMAD_4_36Double9isDefinedEv(ptr noundef nonnull align 8 dereferenceable(17) %23)
  br i1 %177, label %178, label %.critedge203.thread231

.critedge203.thread231:                           ; preds = %176
  call void @_ZN9NOMAD_4_36DoubleD1Ev(ptr noundef nonnull align 8 dereferenceable(17) %23) #7
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %23) #7
  br label %.critedge203.thread

178:                                              ; preds = %176
  call void @llvm.lifetime.start.p0(i64 24, ptr nonnull %24) #7
  %179 = call noundef ptr @_ZNKSt19__shared_ptr_accessIN9NOMAD_4_39EvalPointELN9__gnu_cxx12_Lock_policyE2ELb0ELb0EEptEv(ptr noundef nonnull align 1 dereferenceable(1) %18) #7
  invoke void @_ZNK9NOMAD_4_39EvalPoint4getFENS_8EvalTypeENS_11ComputeTypeE(ptr dead_on_unwind nonnull writable sret(%"class.NOMAD_4_3::Double") align 8 %24, ptr noundef nonnull align 8 dereferenceable(160) %179, i32 noundef 0, i32 noundef %143)
          to label %180 unwind label %197

180:                                              ; preds = %178
  call void @llvm.lifetime.start.p0(i64 24, ptr nonnull %25) #7
  invoke void @_ZN9NOMAD_4_36DoubleC1ERKd(ptr noundef nonnull align 8 dereferenceable(17) %25, ptr noundef nonnull align 8 dereferenceable(8) @_ZN9NOMAD_4_3L16MODEL_MAX_OUTPUTE)
          to label %181 unwind label %199

181:                                              ; preds = %180
  %182 = invoke noundef zeroext i1 @_ZN9NOMAD_4_3ltERKNS_6DoubleES2_(ptr noundef nonnull align 8 dereferenceable(17) %24, ptr noundef nonnull align 8 dereferenceable(17) %25)
          to label %183 unwind label %201

183:                                              ; preds = %181
  br i1 %182, label %184, label %.critedge203.thread.critedge

184:                                              ; preds = %183
  call void @llvm.lifetime.start.p0(i64 24, ptr nonnull %26) #7
  %185 = call noundef ptr @_ZNKSt19__shared_ptr_accessIN9NOMAD_4_39EvalPointELN9__gnu_cxx12_Lock_policyE2ELb0ELb0EEptEv(ptr noundef nonnull align 1 dereferenceable(1) %18) #7
  invoke void @_ZNK9NOMAD_4_39EvalPoint4getHENS_8EvalTypeENS_11ComputeTypeE(ptr dead_on_unwind nonnull writable sret(%"class.NOMAD_4_3::Double") align 8 %26, ptr noundef nonnull align 8 dereferenceable(160) %185, i32 noundef 0, i32 noundef %143)
          to label %186 unwind label %203

186:                                              ; preds = %184
  %187 = call noundef zeroext i1 @_ZNK9NOMAD_4_36Double9isDefinedEv(ptr noundef nonnull align 8 dereferenceable(17) %26)
  br i1 %187, label %188, label %.critedge203.thread.critedge236

188:                                              ; preds = %186
  call void @llvm.lifetime.start.p0(i64 24, ptr nonnull %27) #7
  %189 = call noundef ptr @_ZNKSt19__shared_ptr_accessIN9NOMAD_4_39EvalPointELN9__gnu_cxx12_Lock_policyE2ELb0ELb0EEptEv(ptr noundef nonnull align 1 dereferenceable(1) %18) #7
  invoke void @_ZNK9NOMAD_4_39EvalPoint4getHENS_8EvalTypeENS_11ComputeTypeE(ptr dead_on_unwind nonnull writable sret(%"class.NOMAD_4_3::Double") align 8 %27, ptr noundef nonnull align 8 dereferenceable(160) %189, i32 noundef 0, i32 noundef %143)
          to label %190 unwind label %205

190:                                              ; preds = %188
  call void @llvm.lifetime.start.p0(i64 24, ptr nonnull %28) #7
  invoke void @_ZN9NOMAD_4_36DoubleC1ERKd(ptr noundef nonnull align 8 dereferenceable(17) %28, ptr noundef nonnull align 8 dereferenceable(8) @_ZN9NOMAD_4_3L16MODEL_MAX_OUTPUTE)
          to label %191 unwind label %207

191:                                              ; preds = %190
  %192 = invoke noundef zeroext i1 @_ZN9NOMAD_4_3ltERKNS_6DoubleES2_(ptr noundef nonnull align 8 dereferenceable(17) %27, ptr noundef nonnull align 8 dereferenceable(17) %28)
          to label %.critedge195.thread unwind label %209

.critedge195.thread:                              ; preds = %191
  call void @_ZN9NOMAD_4_36DoubleD1Ev(ptr noundef nonnull align 8 dereferenceable(17) %28) #7
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %28) #7
  call void @_ZN9NOMAD_4_36DoubleD1Ev(ptr noundef nonnull align 8 dereferenceable(17) %27) #7
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %27) #7
  call void @_ZN9NOMAD_4_36DoubleD1Ev(ptr noundef nonnull align 8 dereferenceable(17) %26) #7
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %26) #7
  call void @_ZN9NOMAD_4_36DoubleD1Ev(ptr noundef nonnull align 8 dereferenceable(17) %25) #7
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %25) #7
  call void @_ZN9NOMAD_4_36DoubleD1Ev(ptr noundef nonnull align 8 dereferenceable(17) %24) #7
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %24) #7
  call void @_ZN9NOMAD_4_36DoubleD1Ev(ptr noundef nonnull align 8 dereferenceable(17) %23) #7
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %23) #7
  br i1 %192, label %193, label %.critedge203.thread

193:                                              ; preds = %.critedge195.thread
  %194 = call noundef nonnull align 8 dereferenceable(16) ptr @_ZNSt10shared_ptrIN9NOMAD_4_39EvalPointEEaSERKS2_(ptr noundef nonnull align 8 dereferenceable(16) %7, ptr noundef nonnull align 8 dereferenceable(16) %18) #7
  br label %.critedge203.thread

195:                                              ; preds = %174
  %196 = landingpad { ptr, i32 }
          cleanup
  br label %217

197:                                              ; preds = %178
  %198 = landingpad { ptr, i32 }
          cleanup
  br label %216

199:                                              ; preds = %180
  %200 = landingpad { ptr, i32 }
          cleanup
  br label %215

201:                                              ; preds = %181
  %202 = landingpad { ptr, i32 }
          cleanup
  br label %214

203:                                              ; preds = %184
  %204 = landingpad { ptr, i32 }
          cleanup
  br label %213

205:                                              ; preds = %188
  %206 = landingpad { ptr, i32 }
          cleanup
  br label %212

207:                                              ; preds = %190
  %208 = landingpad { ptr, i32 }
          cleanup
  br label %211

209:                                              ; preds = %191
  %210 = landingpad { ptr, i32 }
          cleanup
  call void @_ZN9NOMAD_4_36DoubleD1Ev(ptr noundef nonnull align 8 dereferenceable(17) %28) #7
  br label %211

211:                                              ; preds = %207, %209
  %.pn157 = phi { ptr, i32 } [ %210, %209 ], [ %208, %207 ]
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %28) #7
  call void @_ZN9NOMAD_4_36DoubleD1Ev(ptr noundef nonnull align 8 dereferenceable(17) %27) #7
  br label %212

212:                                              ; preds = %205, %211
  %.pn157.pn = phi { ptr, i32 } [ %.pn157, %211 ], [ %206, %205 ]
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %27) #7
  call void @_ZN9NOMAD_4_36DoubleD1Ev(ptr noundef nonnull align 8 dereferenceable(17) %26) #7
  br label %213

213:                                              ; preds = %203, %212
  %.pn157.pn.pn = phi { ptr, i32 } [ %.pn157.pn, %212 ], [ %204, %203 ]
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %26) #7
  br label %214

214:                                              ; preds = %201, %213
  %.pn157.pn.pn.pn = phi { ptr, i32 } [ %.pn157.pn.pn, %213 ], [ %202, %201 ]
  call void @_ZN9NOMAD_4_36DoubleD1Ev(ptr noundef nonnull align 8 dereferenceable(17) %25) #7
  br label %215

215:                                              ; preds = %199, %214
  %.pn157.pn.pn.pn.pn = phi { ptr, i32 } [ %.pn157.pn.pn.pn, %214 ], [ %200, %199 ]
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %25) #7
  call void @_ZN9NOMAD_4_36DoubleD1Ev(ptr noundef nonnull align 8 dereferenceable(17) %24) #7
  br label %216

216:                                              ; preds = %197, %215
  %.pn157.pn.pn.pn.pn.pn = phi { ptr, i32 } [ %.pn157.pn.pn.pn.pn, %215 ], [ %198, %197 ]
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %24) #7
  call void @_ZN9NOMAD_4_36DoubleD1Ev(ptr noundef nonnull align 8 dereferenceable(17) %23) #7
  br label %217

217:                                              ; preds = %195, %216
  %.pn157.pn.pn.pn.pn.pn.pn = phi { ptr, i32 } [ %.pn157.pn.pn.pn.pn.pn, %216 ], [ %196, %195 ]
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %23) #7
  br label %320

.critedge203.thread.critedge:                     ; preds = %183
  call void @_ZN9NOMAD_4_36DoubleD1Ev(ptr noundef nonnull align 8 dereferenceable(17) %25) #7
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %25) #7
  call void @_ZN9NOMAD_4_36DoubleD1Ev(ptr noundef nonnull align 8 dereferenceable(17) %24) #7
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %24) #7
  call void @_ZN9NOMAD_4_36DoubleD1Ev(ptr noundef nonnull align 8 dereferenceable(17) %23) #7
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %23) #7
  br label %.critedge203.thread

.critedge203.thread.critedge236:                  ; preds = %186
  call void @_ZN9NOMAD_4_36DoubleD1Ev(ptr noundef nonnull align 8 dereferenceable(17) %26) #7
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %26) #7
  call void @_ZN9NOMAD_4_36DoubleD1Ev(ptr noundef nonnull align 8 dereferenceable(17) %25) #7
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %25) #7
  call void @_ZN9NOMAD_4_36DoubleD1Ev(ptr noundef nonnull align 8 dereferenceable(17) %24) #7
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %24) #7
  call void @_ZN9NOMAD_4_36DoubleD1Ev(ptr noundef nonnull align 8 dereferenceable(17) %23) #7
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %23) #7
  br label %.critedge203.thread

.critedge203.thread:                              ; preds = %.critedge203.thread.critedge236, %.critedge203.thread.critedge, %.critedge191.thread, %.critedge203.thread231, %.critedge195.thread, %193, %154
  %218 = call noundef zeroext i1 @_ZStneIN9NOMAD_4_39EvalPointEEbDnRKSt10shared_ptrIT_E(ptr null, ptr noundef nonnull align 8 dereferenceable(16) %7) #7
  br i1 %218, label %219, label %317

219:                                              ; preds = %.critedge203.thread
  %220 = getelementptr inbounds i8, ptr %0, i64 560
  %221 = call noundef ptr @_ZNKSt10unique_ptrIN9NOMAD_4_33VNSESt14default_deleteIS1_EEptEv(ptr noundef nonnull align 8 dereferenceable(8) %220) #7
  call void @_ZN9NOMAD_4_39Algorithm13setEndDisplayEb(ptr noundef nonnull align 8 dereferenceable(417) %221, i1 noundef zeroext false)
  %222 = call noundef ptr @_ZNKSt10unique_ptrIN9NOMAD_4_33VNSESt14default_deleteIS1_EEptEv(ptr noundef nonnull align 8 dereferenceable(8) %220) #7
  call void @_ZNSt10shared_ptrIN9NOMAD_4_39EvalPointEEC2ERKS2_(ptr noundef nonnull align 8 dereferenceable(16) %29, ptr noundef nonnull align 8 dereferenceable(16) %7) #7
  invoke void @_ZN9NOMAD_4_33VNS14setFrameCenterESt10shared_ptrINS_9EvalPointEE(ptr noundef nonnull align 8 dereferenceable(536) %222, ptr noundef nonnull %29)
          to label %223 unwind label %255

223:                                              ; preds = %219
  call void @_ZNSt12__shared_ptrIN9NOMAD_4_39EvalPointELN9__gnu_cxx12_Lock_policyE2EED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %29) #7
  %224 = call noundef ptr @_ZNKSt10unique_ptrIN9NOMAD_4_33VNSESt14default_deleteIS1_EEptEv(ptr noundef nonnull align 8 dereferenceable(8) %220) #7
  invoke void @_ZN9NOMAD_4_34Step5startEv(ptr noundef nonnull align 8 dereferenceable(140) %224)
          to label %225 unwind label %253

225:                                              ; preds = %223
  %226 = call noundef ptr @_ZNKSt10unique_ptrIN9NOMAD_4_33VNSESt14default_deleteIS1_EEptEv(ptr noundef nonnull align 8 dereferenceable(8) %220) #7
  %227 = invoke noundef zeroext i1 @_ZN9NOMAD_4_34Step3runEv(ptr noundef nonnull align 8 dereferenceable(140) %226)
          to label %228 unwind label %253

228:                                              ; preds = %225
  %229 = call noundef ptr @_ZNKSt10unique_ptrIN9NOMAD_4_33VNSESt14default_deleteIS1_EEptEv(ptr noundef nonnull align 8 dereferenceable(8) %220) #7
  invoke void @_ZN9NOMAD_4_34Step3endEv(ptr noundef nonnull align 8 dereferenceable(140) %229)
          to label %230 unwind label %253

230:                                              ; preds = %228
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %30) #7
  %231 = call noundef ptr @_ZNKSt10unique_ptrIN9NOMAD_4_33VNSESt14default_deleteIS1_EEptEv(ptr noundef nonnull align 8 dereferenceable(8) %220) #7
  call void @_ZN9NOMAD_4_33VNS10getBarrierEv(ptr dead_on_unwind nonnull writable sret(%"class.std::shared_ptr.70") align 8 %30, ptr noundef nonnull align 8 dereferenceable(536) %231)
  %232 = call noundef zeroext i1 @_ZStneIN9NOMAD_4_311BarrierBaseEEbDnRKSt10shared_ptrIT_E(ptr null, ptr noundef nonnull align 8 dereferenceable(16) %30) #7
  br i1 %232, label %233, label %316

233:                                              ; preds = %230
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %31) #7
  %234 = call noundef ptr @_ZNKSt19__shared_ptr_accessIN9NOMAD_4_311BarrierBaseELN9__gnu_cxx12_Lock_policyE2ELb0ELb0EEptEv(ptr noundef nonnull align 1 dereferenceable(1) %30) #7
  %235 = load ptr, ptr %234, align 8, !tbaa !63
  %236 = getelementptr inbounds i8, ptr %235, i64 8
  %237 = load ptr, ptr %236, align 8
  invoke void %237(ptr dead_on_unwind nonnull writable sret(%"class.std::shared_ptr.67") align 8 %31, ptr noundef nonnull align 8 dereferenceable(120) %234)
          to label %238 unwind label %257

238:                                              ; preds = %233
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %32) #7
  %239 = call noundef ptr @_ZNKSt19__shared_ptr_accessIN9NOMAD_4_311BarrierBaseELN9__gnu_cxx12_Lock_policyE2ELb0ELb0EEptEv(ptr noundef nonnull align 1 dereferenceable(1) %30) #7
  %240 = load ptr, ptr %239, align 8, !tbaa !63
  %241 = getelementptr inbounds i8, ptr %240, i64 32
  %242 = load ptr, ptr %241, align 8
  invoke void %242(ptr dead_on_unwind nonnull writable sret(%"class.std::shared_ptr.67") align 8 %32, ptr noundef nonnull align 8 dereferenceable(120) %239)
          to label %243 unwind label %259

243:                                              ; preds = %238
  %244 = getelementptr inbounds i8, ptr %0, i64 552
  %245 = load i8, ptr %244, align 8, !tbaa !69, !range !70, !noundef !71
  %246 = trunc nuw i8 %245 to i1
  br i1 %246, label %247, label %274

247:                                              ; preds = %243
  %248 = call noundef zeroext i1 @_ZStneIN9NOMAD_4_39EvalPointEEbDnRKSt10shared_ptrIT_E(ptr null, ptr noundef nonnull align 8 dereferenceable(16) %31) #7
  br i1 %248, label %249, label %263

249:                                              ; preds = %247
  %250 = getelementptr inbounds i8, ptr %0, i64 144
  %251 = 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) %31) #7
  %252 = invoke noundef zeroext i1 @_ZN9NOMAD_4_314IterationUtils16insertTrialPointERKNS_9EvalPointE(ptr noundef nonnull align 8 dereferenceable(328) %250, ptr noundef nonnull align 8 dereferenceable(160) %251)
          to label %263 unwind label %261

253:                                              ; preds = %228, %225, %223
  %254 = landingpad { ptr, i32 }
          cleanup
  br label %320

255:                                              ; preds = %219
  %256 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt12__shared_ptrIN9NOMAD_4_39EvalPointELN9__gnu_cxx12_Lock_policyE2EED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %29) #7
  br label %320

257:                                              ; preds = %233
  %258 = landingpad { ptr, i32 }
          cleanup
  br label %315

259:                                              ; preds = %238
  %260 = landingpad { ptr, i32 }
          cleanup
  br label %314

261:                                              ; preds = %271, %269, %265, %249
  %262 = landingpad { ptr, i32 }
          cleanup
  br label %313

263:                                              ; preds = %249, %247
  %264 = call noundef zeroext i1 @_ZStneIN9NOMAD_4_39EvalPointEEbDnRKSt10shared_ptrIT_E(ptr null, ptr noundef nonnull align 8 dereferenceable(16) %32) #7
  br i1 %264, label %265, label %269

265:                                              ; preds = %263
  %266 = getelementptr inbounds i8, ptr %0, i64 144
  %267 = 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) %32) #7
  %268 = invoke noundef zeroext i1 @_ZN9NOMAD_4_314IterationUtils16insertTrialPointERKNS_9EvalPointE(ptr noundef nonnull align 8 dereferenceable(328) %266, ptr noundef nonnull align 8 dereferenceable(160) %267)
          to label %269 unwind label %261

269:                                              ; preds = %265, %263
  %270 = call noundef ptr @_ZNKSt19__shared_ptr_accessIN9NOMAD_4_316EvaluatorControlELN9__gnu_cxx12_Lock_policyE2ELb0ELb0EEptEv(ptr noundef nonnull align 1 dereferenceable(1) %2) #7
  invoke void @_ZN9NOMAD_4_316EvaluatorControl22selectCurrentEvaluatorENS_8EvalTypeE(ptr noundef nonnull align 8 dereferenceable(352) %270, i32 noundef 0)
          to label %271 unwind label %261

271:                                              ; preds = %269
  %272 = getelementptr inbounds i8, ptr %0, i64 144
  %273 = invoke noundef zeroext i1 @_ZN9NOMAD_4_314IterationUtils15evalTrialPointsEPKNS_4StepEmNS_8StepTypeE(ptr noundef nonnull align 8 dereferenceable(328) %272, ptr noundef nonnull %0, i64 noundef -1, i32 noundef 57)
          to label %311 unwind label %261

274:                                              ; preds = %243
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %33) #7
  %275 = call noundef ptr @_ZNKSt19__shared_ptr_accessIN9NOMAD_4_311BarrierBaseELN9__gnu_cxx12_Lock_policyE2ELb0ELb0EEptEv(ptr noundef nonnull align 1 dereferenceable(1) %8) #7
  call void @_ZNSt10shared_ptrIN9NOMAD_4_39EvalPointEEC2ERKS2_(ptr noundef nonnull align 8 dereferenceable(16) %34, ptr noundef nonnull align 8 dereferenceable(16) %31) #7
  call void @_ZNSt10shared_ptrIN9NOMAD_4_39EvalPointEEC2ERKS2_(ptr noundef nonnull align 8 dereferenceable(16) %35, ptr noundef nonnull align 8 dereferenceable(16) %32) #7
  %276 = load ptr, ptr %275, align 8, !tbaa !63
  %277 = getelementptr inbounds i8, ptr %276, i64 56
  %278 = load ptr, ptr %277, align 8
  %279 = invoke noundef i32 %278(ptr noundef nonnull align 8 dereferenceable(120) %275, ptr noundef nonnull %34, ptr noundef nonnull %35, i32 noundef %45, i32 noundef 0)
          to label %280 unwind label %284

280:                                              ; preds = %274
  call void @_ZNSt12__shared_ptrIN9NOMAD_4_39EvalPointELN9__gnu_cxx12_Lock_policyE2EED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %35) #7
  call void @_ZNSt12__shared_ptrIN9NOMAD_4_39EvalPointELN9__gnu_cxx12_Lock_policyE2EED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %34) #7
  store i32 %279, ptr %33, align 4, !tbaa !66
  call void @_ZN9NOMAD_4_34Step14setSuccessTypeERKNS_11SuccessTypeE(ptr noundef nonnull align 8 dereferenceable(140) %0, ptr noundef nonnull align 4 dereferenceable(4) %33)
  %281 = load i32, ptr %33, align 4, !tbaa !66
  %282 = icmp sgt i32 %281, 2
  %283 = icmp eq i32 %45, 0
  br i1 %283, label %286, label %310

284:                                              ; preds = %274
  %285 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt12__shared_ptrIN9NOMAD_4_39EvalPointELN9__gnu_cxx12_Lock_policyE2EED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %35) #7
  call void @_ZNSt12__shared_ptrIN9NOMAD_4_39EvalPointELN9__gnu_cxx12_Lock_policyE2EED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %34) #7
  br label %312

286:                                              ; preds = %280
  %287 = call noundef ptr @_ZNKSt19__shared_ptr_accessIN9NOMAD_4_311BarrierBaseELN9__gnu_cxx12_Lock_policyE2ELb0ELb0EEptEv(ptr noundef nonnull align 1 dereferenceable(1) %8) #7
  call void @llvm.lifetime.start.p0(i64 24, ptr nonnull %36) #7
  %288 = call noundef ptr @_ZNKSt19__shared_ptr_accessIN9NOMAD_4_311BarrierBaseELN9__gnu_cxx12_Lock_policyE2ELb0ELb0EEptEv(ptr noundef nonnull align 1 dereferenceable(1) %30) #7
  invoke void @_ZNK9NOMAD_4_311BarrierBase12getAllPointsEv(ptr dead_on_unwind nonnull writable sret(%"class.std::vector.127") align 8 %36, ptr noundef nonnull align 8 dereferenceable(120) %288)
          to label %289 unwind label %302

289:                                              ; preds = %286
  %290 = getelementptr inbounds i8, ptr %0, i64 40
  %291 = call noundef ptr @_ZNKSt19__shared_ptr_accessIN9NOMAD_4_313RunParametersELN9__gnu_cxx12_Lock_policyE2ELb0ELb0EEptEv(ptr noundef nonnull align 1 dereferenceable(1) %290) #7
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %37) #7
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %38) #7
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %38) #7
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %37, ptr noundef nonnull @.str.17, ptr noundef nonnull align 1 dereferenceable(1) %38)
          to label %292 unwind label %304

292:                                              ; preds = %289
  %293 = invoke noundef nonnull align 1 dereferenceable(1) ptr @_ZNK9NOMAD_4_310Parameters17getAttributeValueIbEERKT_RKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEb(ptr noundef nonnull align 8 dereferenceable(496) %291, ptr noundef nonnull align 8 dereferenceable(32) %37, i1 noundef zeroext false)
          to label %294 unwind label %306

294:                                              ; preds = %292
  %295 = load i8, ptr %293, align 1, !tbaa !72, !range !70, !noundef !71
  %296 = trunc nuw i8 %295 to i1
  %297 = load ptr, ptr %287, align 8, !tbaa !63
  %298 = getelementptr inbounds i8, ptr %297, i64 64
  %299 = load ptr, ptr %298, align 8
  %300 = invoke noundef zeroext i1 %299(ptr noundef nonnull align 8 dereferenceable(120) %287, ptr noundef nonnull align 8 dereferenceable(24) %36, i32 noundef 0, i32 noundef 0, i1 noundef zeroext %296)
          to label %301 unwind label %306

301:                                              ; preds = %294
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %37) #7
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %38) #7
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %38) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %37) #7
  call void @_ZNSt6vectorIN9NOMAD_4_39EvalPointESaIS1_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %36) #7
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %36) #7
  br label %310

302:                                              ; preds = %286
  %303 = landingpad { ptr, i32 }
          cleanup
  br label %309

304:                                              ; preds = %289
  %305 = landingpad { ptr, i32 }
          cleanup
  br label %308

306:                                              ; preds = %294, %292
  %307 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %37) #7
  br label %308

308:                                              ; preds = %306, %304
  %.pn165 = phi { ptr, i32 } [ %307, %306 ], [ %305, %304 ]
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %38) #7
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %38) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %37) #7
  call void @_ZNSt6vectorIN9NOMAD_4_39EvalPointESaIS1_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %36) #7
  br label %309

309:                                              ; preds = %308, %302
  %.pn165.pn = phi { ptr, i32 } [ %.pn165, %308 ], [ %303, %302 ]
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %36) #7
  br label %312

310:                                              ; preds = %280, %301
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %33) #7
  br label %311

311:                                              ; preds = %271, %310
  %.192 = phi i1 [ %282, %310 ], [ false, %271 ]
  %.082 = phi i1 [ undef, %310 ], [ %273, %271 ]
  call void @_ZNSt12__shared_ptrIN9NOMAD_4_39EvalPointELN9__gnu_cxx12_Lock_policyE2EED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %32) #7
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %32) #7
  call void @_ZNSt12__shared_ptrIN9NOMAD_4_39EvalPointELN9__gnu_cxx12_Lock_policyE2EED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %31) #7
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %31) #7
  %not. = xor i1 %246, true
  br label %316

312:                                              ; preds = %309, %284
  %.pn165.pn.pn = phi { ptr, i32 } [ %.pn165.pn, %309 ], [ %285, %284 ]
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %33) #7
  br label %313

313:                                              ; preds = %312, %261
  %.pn169 = phi { ptr, i32 } [ %262, %261 ], [ %.pn165.pn.pn, %312 ]
  call void @_ZNSt12__shared_ptrIN9NOMAD_4_39EvalPointELN9__gnu_cxx12_Lock_policyE2EED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %32) #7
  br label %314

314:                                              ; preds = %313, %259
  %.pn169.pn = phi { ptr, i32 } [ %.pn169, %313 ], [ %260, %259 ]
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %32) #7
  call void @_ZNSt12__shared_ptrIN9NOMAD_4_39EvalPointELN9__gnu_cxx12_Lock_policyE2EED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %31) #7
  br label %315

315:                                              ; preds = %314, %257
  %.pn169.pn.pn = phi { ptr, i32 } [ %.pn169.pn, %314 ], [ %258, %257 ]
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %31) #7
  call void @_ZNSt12__shared_ptrIN9NOMAD_4_311BarrierBaseELN9__gnu_cxx12_Lock_policyE2EED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %30) #7
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %30) #7
  br label %320

316:                                              ; preds = %311, %230
  %.394 = phi i1 [ false, %230 ], [ %.192, %311 ]
  %cond2 = phi i1 [ true, %230 ], [ %not., %311 ]
  %.2 = phi i1 [ undef, %230 ], [ %.082, %311 ]
  call void @_ZNSt12__shared_ptrIN9NOMAD_4_311BarrierBaseELN9__gnu_cxx12_Lock_policyE2EED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %30) #7
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %30) #7
  br label %317

317:                                              ; preds = %316, %.critedge203.thread
  %.596 = phi i1 [ false, %.critedge203.thread ], [ %.394, %316 ]
  %318 = phi i1 [ true, %.critedge203.thread ], [ %cond2, %316 ]
  %.4 = phi i1 [ undef, %.critedge203.thread ], [ %.2, %316 ]
  call void @_ZNSt12__shared_ptrIN9NOMAD_4_39EvalPointELN9__gnu_cxx12_Lock_policyE2EED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %18) #7
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %18) #7
  call void @_ZNSt12__shared_ptrIN9NOMAD_4_39EvalPointELN9__gnu_cxx12_Lock_policyE2EED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %17) #7
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %17) #7
  br label %319

319:                                              ; preds = %317, %126
  %.697 = phi i1 [ false, %126 ], [ %.596, %317 ]
  %.389 = phi i1 [ false, %126 ], [ %318, %317 ]
  %.5 = phi i1 [ false, %126 ], [ %.4, %317 ]
  call void @_ZN9NOMAD_4_313ArrayOfDoubleD1Ev(ptr noundef nonnull align 8 dereferenceable(24) %11) #7
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %11) #7
  call void @_ZN9NOMAD_4_313ArrayOfDoubleD1Ev(ptr noundef nonnull align 8 dereferenceable(24) %9) #7
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %9) #7
  call void @_ZNSt12__shared_ptrIN9NOMAD_4_311BarrierBaseELN9__gnu_cxx12_Lock_policyE2EED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %8) #7
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %8) #7
  call void @_ZNSt12__shared_ptrIN9NOMAD_4_39EvalPointELN9__gnu_cxx12_Lock_policyE2EED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %7) #7
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %7) #7
  br i1 %.389, label %340, label %342

320:                                              ; preds = %217, %172, %315, %255, %253, %160
  %.pn169.pn.pn.pn = phi { ptr, i32 } [ %.pn169.pn.pn, %315 ], [ %254, %253 ], [ %256, %255 ], [ %.pn157.pn.pn.pn.pn.pn.pn, %217 ], [ %.pn153.pn.pn, %172 ], [ %161, %160 ]
  call void @_ZNSt12__shared_ptrIN9NOMAD_4_39EvalPointELN9__gnu_cxx12_Lock_policyE2EED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %18) #7
  br label %321

321:                                              ; preds = %320, %158
  %.pn169.pn.pn.pn.pn = phi { ptr, i32 } [ %.pn169.pn.pn.pn, %320 ], [ %159, %158 ]
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %18) #7
  call void @_ZNSt12__shared_ptrIN9NOMAD_4_39EvalPointELN9__gnu_cxx12_Lock_policyE2EED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %17) #7
  br label %322

322:                                              ; preds = %321, %156
  %.pn169.pn.pn.pn.pn.pn = phi { ptr, i32 } [ %.pn169.pn.pn.pn.pn, %321 ], [ %157, %156 ]
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %17) #7
  br label %323

323:                                              ; preds = %322, %125, %119, %117
  %.pn176.pn = phi { ptr, i32 } [ %.pn176, %125 ], [ %120, %119 ], [ %.pn169.pn.pn.pn.pn.pn, %322 ], [ %118, %117 ]
  call void @_ZN9NOMAD_4_313ArrayOfDoubleD1Ev(ptr noundef nonnull align 8 dereferenceable(24) %11) #7
  br label %324

324:                                              ; preds = %323, %116
  %.pn176.pn.pn = phi { ptr, i32 } [ %.pn176.pn, %323 ], [ %.pn151, %116 ]
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %11) #7
  call void @_ZN9NOMAD_4_313ArrayOfDoubleD1Ev(ptr noundef nonnull align 8 dereferenceable(24) %9) #7
  br label %325

325:                                              ; preds = %324, %111
  %.pn176.pn.pn.pn = phi { ptr, i32 } [ %.pn176.pn.pn, %324 ], [ %.pn149, %111 ]
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %9) #7
  br label %326

326:                                              ; preds = %325, %105
  %.pn176.pn.pn.pn.pn = phi { ptr, i32 } [ %.pn176.pn.pn.pn, %325 ], [ %106, %105 ]
  call void @_ZNSt12__shared_ptrIN9NOMAD_4_311BarrierBaseELN9__gnu_cxx12_Lock_policyE2EED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %8) #7
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %8) #7
  call void @_ZNSt12__shared_ptrIN9NOMAD_4_39EvalPointELN9__gnu_cxx12_Lock_policyE2EED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %7) #7
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %7) #7
  br label %343

327:                                              ; preds = %69
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %39) #7
  store i32 7, ptr %39, align 4, !tbaa !65
  %328 = invoke noundef zeroext i1 @_ZN9NOMAD_4_311OutputQueue9GoodLevelERKNS_11OutputLevelE(ptr noundef nonnull align 4 dereferenceable(4) %39)
          to label %329 unwind label %333

329:                                              ; preds = %327
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %39) #7
  br i1 %328, label %330, label %340

330:                                              ; preds = %329
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %40) #7
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %41) #7
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %41) #7
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %40, ptr noundef nonnull @.str.18, ptr noundef nonnull align 1 dereferenceable(1) %41)
          to label %331 unwind label %335

331:                                              ; preds = %330
  invoke void @_ZNK9NOMAD_4_34Step13AddOutputInfoERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEENS_11OutputLevelE(ptr noundef nonnull align 8 dereferenceable(140) %0, ptr noundef nonnull align 8 dereferenceable(32) %40, i32 noundef 7)
          to label %332 unwind label %337

332:                                              ; preds = %331
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %40) #7
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %41) #7
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %41) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %40) #7
  br label %340

333:                                              ; preds = %327
  %334 = landingpad { ptr, i32 }
          cleanup
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %39) #7
  br label %343

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

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

339:                                              ; preds = %337, %335
  %.pn = phi { ptr, i32 } [ %338, %337 ], [ %336, %335 ]
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %41) #7
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %41) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %40) #7
  br label %343

340:                                              ; preds = %329, %332, %319
  %.798 = phi i1 [ %.697, %319 ], [ false, %332 ], [ false, %329 ]
  %341 = call noundef ptr @_ZNKSt19__shared_ptr_accessIN9NOMAD_4_316EvaluatorControlELN9__gnu_cxx12_Lock_policyE2ELb0ELb0EEptEv(ptr noundef nonnull align 1 dereferenceable(1) %2) #7
  invoke void @_ZN9NOMAD_4_316EvaluatorControl22selectCurrentEvaluatorENS_8EvalTypeE(ptr noundef nonnull align 8 dereferenceable(352) %341, i32 noundef 0)
          to label %.thread232 unwind label %103

.thread232:                                       ; preds = %340
  call void @_ZNSt12__shared_ptrIN9NOMAD_4_316EvaluatorControlELN9__gnu_cxx12_Lock_policyE2EED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %2) #7
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %2) #7
  br label %344

342:                                              ; preds = %319
  call void @_ZNSt12__shared_ptrIN9NOMAD_4_316EvaluatorControlELN9__gnu_cxx12_Lock_policyE2EED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %2) #7
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %2) #7
  br label %344

343:                                              ; preds = %103, %326, %333, %339, %60, %61, %53
  %.pn184.pn.pn = phi { ptr, i32 } [ %.pn184.pn208, %61 ], [ %.pn184, %60 ], [ %54, %53 ], [ %104, %103 ], [ %.pn176.pn.pn.pn.pn, %326 ], [ %.pn, %339 ], [ %334, %333 ]
  call void @_ZNSt12__shared_ptrIN9NOMAD_4_316EvaluatorControlELN9__gnu_cxx12_Lock_policyE2EED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %2) #7
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %2) #7
  resume { ptr, i32 } %.pn184.pn.pn

344:                                              ; preds = %1, %.thread232, %342
  %.8 = phi i1 [ %.5, %342 ], [ false, %1 ], [ %.798, %.thread232 ]
  ret i1 %.8

345:                                              ; preds = %52
  unreachable
}

declare ptr @__cxa_allocate_exception(i64) local_unnamed_addr

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

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

declare void @__cxa_free_exception(ptr) local_unnamed_addr

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

declare noundef i64 @_ZNK9NOMAD_4_315TrialPointStats14getNbEvalsDoneENS_8EvalTypeEb(ptr noundef nonnull align 8 dereferenceable(232), i32 noundef, i1 noundef zeroext) local_unnamed_addr #3

; 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

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

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

; 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

; 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 noundef nonnull align 8 dereferenceable(24) ptr @_ZNK9NOMAD_4_38MeshBase19getInitialFrameSizeEv(ptr noundef nonnull align 8 dereferenceable(257)) local_unnamed_addr #1 align 2

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

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

; 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: mustprogress nounwind uwtable
declare dso_local void @_ZN9NOMAD_4_34Step14setSuccessTypeERKNS_11SuccessTypeE(ptr noundef nonnull align 8 dereferenceable(140), ptr noundef nonnull align 4 dereferenceable(4)) local_unnamed_addr #1 align 2

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

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

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

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: inlinehint mustprogress nounwind uwtable
declare dso_local noundef zeroext i1 @_ZStneIN9NOMAD_4_39EvalPointEEbDnRKSt10shared_ptrIT_E(ptr, ptr noundef nonnull align 8 dereferenceable(16)) local_unnamed_addr #5

; 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 void @_ZNK9NOMAD_4_39EvalPoint4getFENS_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

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

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

; Function Attrs: mustprogress nounwind uwtable
declare dso_local noundef nonnull align 8 dereferenceable(16) ptr @_ZNSt10shared_ptrIN9NOMAD_4_39EvalPointEEaSERKS2_(ptr noundef nonnull align 8 dereferenceable(16), ptr noundef nonnull align 8 dereferenceable(16)) 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 ptr @_ZNKSt10unique_ptrIN9NOMAD_4_33VNSESt14default_deleteIS1_EEptEv(ptr noundef nonnull align 8 dereferenceable(8)) local_unnamed_addr #1 align 2

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

declare void @_ZN9NOMAD_4_33VNS14setFrameCenterESt10shared_ptrINS_9EvalPointEE(ptr noundef nonnull align 8 dereferenceable(536), ptr noundef) local_unnamed_addr #3

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

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

declare void @_ZN9NOMAD_4_34Step5startEv(ptr noundef nonnull align 8 dereferenceable(140)) local_unnamed_addr #3

declare noundef zeroext i1 @_ZN9NOMAD_4_34Step3runEv(ptr noundef nonnull align 8 dereferenceable(140)) local_unnamed_addr #3

declare void @_ZN9NOMAD_4_34Step3endEv(ptr noundef nonnull align 8 dereferenceable(140)) local_unnamed_addr #3

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

; 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 #5

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

; 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 @_ZN9NOMAD_4_314IterationUtils15evalTrialPointsEPKNS_4StepEmNS_8StepTypeE(ptr noundef nonnull align 8 dereferenceable(328), ptr noundef, i64 noundef, i32 noundef) local_unnamed_addr #3

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

; 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: 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: nounwind
declare void @_ZN9NOMAD_4_313ArrayOfDoubleD1Ev(ptr noundef nonnull align 8 dereferenceable(24)) unnamed_addr #4

; 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 = { 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 #5 = { inlinehint mustprogress nounwind uwtable "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }
attributes #6 = { 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 #7 = { nounwind }
attributes #8 = { 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, !54, i64 544}
!6 = !{!"_ZTSN9NOMAD_4_315VNSSearchMethodE", !7, i64 0, !51, i64 512, !52, i64 520, !54, i64 544, !48, i64 552, !55, i64 560, !61, i64 568}
!7 = !{!"_ZTSN9NOMAD_4_316SearchMethodAlgoE", !8, i64 0}
!8 = !{!"_ZTSN9NOMAD_4_316SearchMethodBaseE", !9, i64 0, !32, i64 144, !48, i64 472, !49, i64 480}
!9 = !{!"_ZTSN9NOMAD_4_34StepE", !10, i64 8, !13, i64 16, !14, i64 24, !17, i64 40, !19, i64 56, !21, i64 72, !31, i64 136}
!10 = !{!"any pointer", !11, i64 0}
!11 = !{!"omnipotent char", !12, i64 0}
!12 = !{!"Simple C++ TBAA"}
!13 = !{!"_ZTSN9NOMAD_4_38StepTypeE", !11, i64 0}
!14 = !{!"_ZTSSt10shared_ptrIN9NOMAD_4_314AllStopReasonsEE", !15, i64 0}
!15 = !{!"_ZTSSt12__shared_ptrIN9NOMAD_4_314AllStopReasonsELN9__gnu_cxx12_Lock_policyE2EE", !10, i64 0, !16, i64 8}
!16 = !{!"_ZTSSt14__shared_countILN9__gnu_cxx12_Lock_policyE2EE", !10, i64 0}
!17 = !{!"_ZTSSt10shared_ptrIN9NOMAD_4_313RunParametersEE", !18, i64 0}
!18 = !{!"_ZTSSt12__shared_ptrIN9NOMAD_4_313RunParametersELN9__gnu_cxx12_Lock_policyE2EE", !10, i64 0, !16, i64 8}
!19 = !{!"_ZTSSt10shared_ptrIN9NOMAD_4_312PbParametersEE", !20, i64 0}
!20 = !{!"_ZTSSt12__shared_ptrIN9NOMAD_4_312PbParametersELN9__gnu_cxx12_Lock_policyE2EE", !10, i64 0, !16, i64 8}
!21 = !{!"_ZTSN9NOMAD_4_312SuccessStatsE", !22, i64 0, !30, i64 48, !30, i64 56}
!22 = !{!"_ZTSSt3mapISt4pairIN9NOMAD_4_38StepTypeENS1_11SuccessTypeEEmSt4lessIS4_ESaIS0_IKS4_mEEE", !23, i64 0}
!23 = !{!"_ZTSSt8_Rb_treeISt4pairIN9NOMAD_4_38StepTypeENS1_11SuccessTypeEES0_IKS4_mESt10_Select1stIS6_ESt4lessIS4_ESaIS6_EE", !24, i64 0}
!24 = !{!"_ZTSNSt8_Rb_treeISt4pairIN9NOMAD_4_38StepTypeENS1_11SuccessTypeEES0_IKS4_mESt10_Select1stIS6_ESt4lessIS4_ESaIS6_EE13_Rb_tree_implISA_Lb1EEE", !25, i64 0, !27, i64 8}
!25 = !{!"_ZTSSt20_Rb_tree_key_compareISt4lessISt4pairIN9NOMAD_4_38StepTypeENS2_11SuccessTypeEEEE", !26, i64 0}
!26 = !{!"_ZTSSt4lessISt4pairIN9NOMAD_4_38StepTypeENS1_11SuccessTypeEEE"}
!27 = !{!"_ZTSSt15_Rb_tree_header", !28, i64 0, !30, i64 32}
!28 = !{!"_ZTSSt18_Rb_tree_node_base", !29, i64 0, !10, i64 8, !10, i64 16, !10, i64 24}
!29 = !{!"_ZTSSt14_Rb_tree_color", !11, i64 0}
!30 = !{!"long", !11, i64 0}
!31 = !{!"_ZTSN9NOMAD_4_311SuccessTypeE", !11, i64 0}
!32 = !{!"_ZTSN9NOMAD_4_314IterationUtilsE", !33, i64 8, !30, i64 56, !10, i64 64, !10, i64 72, !10, i64 80, !38, i64 88, !48, i64 320, !31, i64 324}
!33 = !{!"_ZTSSt3setIN9NOMAD_4_39EvalPointENS0_16EvalPointCompareESaIS1_EE", !34, i64 0}
!34 = !{!"_ZTSSt8_Rb_treeIN9NOMAD_4_39EvalPointES1_St9_IdentityIS1_ENS0_16EvalPointCompareESaIS1_EE", !35, i64 0}
!35 = !{!"_ZTSNSt8_Rb_treeIN9NOMAD_4_39EvalPointES1_St9_IdentityIS1_ENS0_16EvalPointCompareESaIS1_EE13_Rb_tree_implIS4_Lb1EEE", !36, i64 0, !27, i64 8}
!36 = !{!"_ZTSSt20_Rb_tree_key_compareIN9NOMAD_4_316EvalPointCompareEE", !37, i64 0}
!37 = !{!"_ZTSN9NOMAD_4_316EvalPointCompareE"}
!38 = !{!"_ZTSN9NOMAD_4_315TrialPointStatsE", !10, i64 0, !39, i64 8, !43, i64 32, !43, i64 80, !43, i64 128, !43, i64 176, !30, i64 224}
!39 = !{!"_ZTSSt6vectorIN9NOMAD_4_38EvalTypeESaIS1_EE", !40, i64 0}
!40 = !{!"_ZTSSt12_Vector_baseIN9NOMAD_4_38EvalTypeESaIS1_EE", !41, i64 0}
!41 = !{!"_ZTSNSt12_Vector_baseIN9NOMAD_4_38EvalTypeESaIS1_EE12_Vector_implE", !42, i64 0}
!42 = !{!"_ZTSNSt12_Vector_baseIN9NOMAD_4_38EvalTypeESaIS1_EE17_Vector_impl_dataE", !10, i64 0, !10, i64 8, !10, i64 16}
!43 = !{!"_ZTSSt3mapIN9NOMAD_4_38EvalTypeEmSt4lessIS1_ESaISt4pairIKS1_mEEE", !44, i64 0}
!44 = !{!"_ZTSSt8_Rb_treeIN9NOMAD_4_38EvalTypeESt4pairIKS1_mESt10_Select1stIS4_ESt4lessIS1_ESaIS4_EE", !45, i64 0}
!45 = !{!"_ZTSNSt8_Rb_treeIN9NOMAD_4_38EvalTypeESt4pairIKS1_mESt10_Select1stIS4_ESt4lessIS1_ESaIS4_EE13_Rb_tree_implIS8_Lb1EEE", !46, i64 0, !27, i64 8}
!46 = !{!"_ZTSSt20_Rb_tree_key_compareISt4lessIN9NOMAD_4_38EvalTypeEEE", !47, i64 0}
!47 = !{!"_ZTSSt4lessIN9NOMAD_4_38EvalTypeEE"}
!48 = !{!"bool", !11, i64 0}
!49 = !{!"_ZTSNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE", !50, i64 0, !30, i64 8, !11, i64 16}
!50 = !{!"_ZTSNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE12_Alloc_hiderE", !10, i64 0}
!51 = !{!"_ZTSN9NOMAD_4_311OutputLevelE", !11, i64 0}
!52 = !{!"_ZTSN9NOMAD_4_35PointE", !53, i64 0}
!53 = !{!"_ZTSN9NOMAD_4_313ArrayOfDoubleE", !30, i64 8, !10, i64 16}
!54 = !{!"double", !11, i64 0}
!55 = !{!"_ZTSSt10unique_ptrIN9NOMAD_4_33VNSESt14default_deleteIS1_EE", !56, i64 0}
!56 = !{!"_ZTSSt15__uniq_ptr_dataIN9NOMAD_4_33VNSESt14default_deleteIS1_ELb1ELb1EE", !57, i64 0}
!57 = !{!"_ZTSSt15__uniq_ptr_implIN9NOMAD_4_33VNSESt14default_deleteIS1_EE", !58, i64 0}
!58 = !{!"_ZTSSt5tupleIJPN9NOMAD_4_33VNSESt14default_deleteIS1_EEE", !59, i64 0}
!59 = !{!"_ZTSSt11_Tuple_implILm0EJPN9NOMAD_4_33VNSESt14default_deleteIS1_EEE", !60, i64 0}
!60 = !{!"_ZTSSt10_Head_baseILm0EPN9NOMAD_4_33VNSELb0EE", !10, i64 0}
!61 = !{!"_ZTSSt10shared_ptrIN9NOMAD_4_315AlgoStopReasonsINS0_11VNSStopTypeEEEE", !62, i64 0}
!62 = !{!"_ZTSSt12__shared_ptrIN9NOMAD_4_315AlgoStopReasonsINS0_11VNSStopTypeEEELN9__gnu_cxx12_Lock_policyE2EE", !10, i64 0, !16, i64 8}
!63 = !{!64, !64, i64 0}
!64 = !{!"vtable pointer", !12, i64 0}
!65 = !{!51, !51, i64 0}
!66 = !{!31, !31, i64 0}
!67 = !{!68, !68, i64 0}
!68 = !{!"_ZTSN9NOMAD_4_311ComputeTypeE", !11, i64 0}
!69 = !{!6, !48, i64 552}
!70 = !{i8 0, i8 2}
!71 = !{}
!72 = !{!48, !48, i64 0}


; Effective O3 passes: CorrelatedValuePropagationPass,EarlyCSEPass,GlobalOptPass,IPSCCPPass,InferFunctionAttrsPass,InstCombinePass,JumpThreadingPass,PromotePass,SROAPass,SimplifyCFGPass,TailCallElimPass