; LLVM IR from buresjan/optim_lbm :: nomad/src/Algos/QuadModel (QuadModelOptimize)

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

%"class.std::__cxx11::basic_string" = type { %"struct.std::__cxx11::basic_string<char>::_Alloc_hider", i64, %union.anon }
%"struct.std::__cxx11::basic_string<char>::_Alloc_hider" = type { ptr }
%union.anon = type { i64, [8 x i8] }
%"class.std::allocator" = type { i8 }
%"class.NOMAD_4_3::Double" = type <{ ptr, double, i8, [7 x i8] }>
%"class.NOMAD_4_3::ArrayOfDouble" = type { ptr, i64, ptr }
%"class.NOMAD_4_3::QuadModelIterationUtils" = type { %"class.NOMAD_4_3::IterationUtils", %"class.std::shared_ptr.23", %"class.std::shared_ptr.23", %"class.std::shared_ptr.26", %"class.std::shared_ptr.29" }
%"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.std::shared_ptr.23" = type { %"class.std::__shared_ptr.24" }
%"class.std::__shared_ptr.24" = type { ptr, %"class.std::__shared_count" }
%"class.std::__shared_count" = type { ptr }
%"class.std::shared_ptr.26" = type { %"class.std::__shared_ptr.27" }
%"class.std::__shared_ptr.27" = type { ptr, %"class.std::__shared_count" }
%"class.std::shared_ptr.29" = type { %"class.std::__shared_ptr.30" }
%"class.std::__shared_ptr.30" = type { ptr, %"class.std::__shared_count" }
%"class.NOMAD_4_3::Step" = type <{ ptr, ptr, i32, [4 x i8], %"class.std::shared_ptr", %"class.std::shared_ptr.3", %"class.std::shared_ptr.6", %"class.NOMAD_4_3::SuccessStats", i32, [4 x i8] }>
%"class.std::shared_ptr" = 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::QuadModelOptimize" = type <{ %"class.NOMAD_4_3::Step.base", [4 x i8], %"class.NOMAD_4_3::QuadModelIterationUtils", i32, [4 x i8], %"class.NOMAD_4_3::ArrayOfDouble", %"class.NOMAD_4_3::ArrayOfDouble", %"class.NOMAD_4_3::Point", %"class.NOMAD_4_3::Point", %"class.std::shared_ptr.6", %"class.std::shared_ptr.3", %"class.std::shared_ptr.6", i8, [7 x i8] }>
%"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.NOMAD_4_3::Point" = type { %"class.NOMAD_4_3::ArrayOfDouble" }

@.str.9 = external hidden unnamed_addr constant [100 x i8], align 1
@_ZTIN9NOMAD_4_39ExceptionE = external constant ptr
@.str.49 = external hidden unnamed_addr constant [10 x i8], align 1
@.str.50 = external hidden unnamed_addr constant [52 x i8], align 1
@.str.51 = external hidden unnamed_addr constant [41 x i8], align 1
@.str.52 = external hidden unnamed_addr constant [20 x i8], align 1
@.str.53 = external hidden unnamed_addr constant [20 x i8], align 1
@.str.54 = external hidden unnamed_addr constant [15 x i8], align 1

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

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

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

declare i32 @__gxx_personality_v0(...)

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

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

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

declare ptr @__cxa_allocate_exception(i64)

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

declare void @__cxa_throw(ptr, ptr, ptr)

declare void @__cxa_free_exception(ptr)

; Function Attrs: mustprogress nounwind uwtable
declare dso_local noundef ptr @_ZNKSt19__shared_ptr_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 zeroext i1 @_ZN9NOMAD_4_311OutputQueue9GoodLevelERKNS_11OutputLevelE(ptr noundef nonnull align 4 dereferenceable(4)) #2 align 2

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

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

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

; Function Attrs: mustprogress nounwind uwtable
declare noundef nonnull align 8 dereferenceable(32) ptr @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEaSEOS4_(ptr noundef nonnull align 8 dereferenceable(32), ptr noundef nonnull align 8 dereferenceable(32)) #1 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) #4

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

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

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

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

; Function Attrs: mustprogress uwtable
define dso_local void @_ZN9NOMAD_4_317QuadModelOptimize25setModelBoundsAndFixedVarEv(ptr noundef nonnull align 8 dereferenceable(689) %0) #2 align 2 personality ptr @__gxx_personality_v0 {
  %2 = alloca ptr, align 8
  %3 = alloca ptr, align 8
  %4 = alloca i64, align 8
  %5 = alloca %"class.std::__cxx11::basic_string", align 8
  %6 = alloca %"class.std::allocator", align 1
  %7 = alloca ptr, align 8
  %8 = alloca i32, align 4
  %9 = alloca %"class.std::__cxx11::basic_string", align 8
  %10 = alloca %"class.std::allocator", align 1
  %11 = alloca %"class.std::__cxx11::basic_string", align 8
  %12 = alloca %"class.std::allocator", align 1
  %13 = alloca i1, align 1
  %14 = alloca i32, align 4
  %15 = alloca i32, align 4
  %16 = alloca %"class.NOMAD_4_3::Double", align 8
  %17 = alloca %"class.NOMAD_4_3::Double", align 8
  %18 = alloca i8, align 1
  %19 = alloca i32, align 4
  %20 = alloca i32, align 4
  %21 = alloca i32, align 4
  %22 = alloca %"class.NOMAD_4_3::Double", align 8
  %23 = alloca 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.std::__cxx11::basic_string", align 8
  %29 = alloca %"class.std::allocator", align 1
  %30 = alloca i32, align 4
  %31 = alloca %"class.NOMAD_4_3::Double", align 8
  %32 = alloca %"class.NOMAD_4_3::Double", align 8
  %33 = alloca %"class.NOMAD_4_3::Double", align 8
  %34 = alloca double, align 8
  %35 = alloca %"class.NOMAD_4_3::Double", align 8
  %36 = alloca %"class.NOMAD_4_3::Double", align 8
  %37 = alloca %"class.NOMAD_4_3::Double", align 8
  %38 = alloca %"class.NOMAD_4_3::Double", align 8
  %39 = alloca %"class.NOMAD_4_3::Double", align 8
  %40 = alloca %"class.NOMAD_4_3::Double", align 8
  %41 = alloca %"class.NOMAD_4_3::Double", align 8
  %42 = alloca %"class.NOMAD_4_3::Double", align 8
  %43 = alloca i32, align 4
  %44 = alloca %"class.std::__cxx11::basic_string", align 8
  %45 = alloca %"class.std::__cxx11::basic_string", align 8
  %46 = alloca %"class.NOMAD_4_3::ArrayOfDouble", align 8
  %47 = alloca %"class.NOMAD_4_3::Double", align 8
  %48 = alloca %"class.std::__cxx11::basic_string", align 8
  %49 = alloca %"class.std::__cxx11::basic_string", align 8
  %50 = alloca %"class.std::__cxx11::basic_string", align 8
  %51 = alloca %"class.NOMAD_4_3::ArrayOfDouble", align 8
  %52 = alloca %"class.NOMAD_4_3::Double", align 8
  %53 = alloca %"class.std::__cxx11::basic_string", align 8
  %54 = alloca %"class.std::__cxx11::basic_string", align 8
  %55 = alloca %"class.std::__cxx11::basic_string", align 8
  %56 = alloca %"class.NOMAD_4_3::ArrayOfDouble", align 8
  %57 = alloca %"class.NOMAD_4_3::Double", align 8
  %58 = alloca %"class.std::__cxx11::basic_string", align 8
  store ptr %0, ptr %2, align 8, !tbaa !5
  %59 = load ptr, ptr %2, align 8
  call void @llvm.lifetime.start.p0(i64 8, ptr %3) #7
  %60 = getelementptr inbounds i8, ptr %59, i64 144
  %61 = getelementptr inbounds %"class.NOMAD_4_3::QuadModelIterationUtils", ptr %60, i32 0, i32 3
  %62 = call noundef ptr @_ZNKSt19__shared_ptr_accessIN7SGTELIB11TrainingSetELN9__gnu_cxx12_Lock_policyE2ELb0ELb0EEptEv(ptr noundef nonnull align 1 dereferenceable(1) %61) #7
  %63 = call noundef nonnull align 8 dereferenceable(56) ptr @_ZNK7SGTELIB11TrainingSet12get_matrix_XEv(ptr noundef nonnull align 8 dereferenceable(504) %62)
  store ptr %63, ptr %3, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %4) #7
  %64 = getelementptr inbounds %"class.NOMAD_4_3::Step", ptr %59, i32 0, i32 6
  %65 = call noundef ptr @_ZNKSt19__shared_ptr_accessIN9NOMAD_4_312PbParametersELN9__gnu_cxx12_Lock_policyE2ELb0ELb0EEptEv(ptr noundef nonnull align 1 dereferenceable(1) %64) #7
  call void @llvm.lifetime.start.p0(i64 32, ptr %5) #7
  call void @llvm.lifetime.start.p0(i64 1, ptr %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 @.str.49, ptr noundef nonnull align 1 dereferenceable(1) %6)
          to label %66 unwind label %80

66:                                               ; preds = %1
  %67 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNK9NOMAD_4_310Parameters17getAttributeValueImEERKT_RKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEb(ptr noundef nonnull align 8 dereferenceable(496) %65, ptr noundef nonnull align 8 dereferenceable(32) %5, i1 noundef zeroext false)
          to label %68 unwind label %84

68:                                               ; preds = %66
  %69 = load i64, ptr %67, align 8, !tbaa !9
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %5) #7
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %6) #7
  call void @llvm.lifetime.end.p0(i64 1, ptr %6) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr %5) #7
  store i64 %69, ptr %4, align 8, !tbaa !9
  %70 = load i64, ptr %4, align 8, !tbaa !9
  %71 = load ptr, ptr %3, align 8, !tbaa !5
  %72 = call noundef i32 @_ZNK7SGTELIB6Matrix11get_nb_colsEv(ptr noundef nonnull align 8 dereferenceable(56) %71)
  %73 = sext i32 %72 to i64
  %74 = icmp ne i64 %70, %73
  br i1 %74, label %75, label %106

75:                                               ; preds = %68
  store i1 true, ptr %13, align 1
  %76 = call ptr @__cxa_allocate_exception(i64 112) #7
  call void @llvm.lifetime.start.p0(i64 32, ptr %9) #7
  call void @llvm.lifetime.start.p0(i64 1, ptr %10) #7
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %10) #7
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %9, ptr noundef @.str.9, ptr noundef nonnull align 1 dereferenceable(1) %10)
          to label %77 unwind label %89

77:                                               ; preds = %75
  call void @llvm.lifetime.start.p0(i64 32, ptr %11) #7
  call void @llvm.lifetime.start.p0(i64 1, ptr %12) #7
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %12) #7
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %11, ptr noundef @.str.50, ptr noundef nonnull align 1 dereferenceable(1) %12)
          to label %78 unwind label %93

78:                                               ; preds = %77
  invoke void @_ZN9NOMAD_4_39ExceptionC2ERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEmS8_(ptr noundef nonnull align 8 dereferenceable(112) %76, ptr noundef nonnull align 8 dereferenceable(32) %9, i64 noundef 377, ptr noundef nonnull align 8 dereferenceable(32) %11)
          to label %79 unwind label %97

79:                                               ; preds = %78
  store i1 false, ptr %13, align 1
  invoke void @__cxa_throw(ptr %76, ptr @_ZTIN9NOMAD_4_39ExceptionE, ptr @_ZN9NOMAD_4_39ExceptionD2Ev) #8
          to label %655 unwind label %97

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

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

88:                                               ; preds = %84, %80
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %6) #7
  call void @llvm.lifetime.end.p0(i64 1, ptr %6) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr %5) #7
  br label %649

89:                                               ; preds = %75
  %90 = landingpad { ptr, i32 }
          cleanup
  %91 = extractvalue { ptr, i32 } %90, 0
  store ptr %91, ptr %7, align 8
  %92 = extractvalue { ptr, i32 } %90, 1
  store i32 %92, ptr %8, align 4
  br label %102

93:                                               ; preds = %77
  %94 = landingpad { ptr, i32 }
          cleanup
  %95 = extractvalue { ptr, i32 } %94, 0
  store ptr %95, ptr %7, align 8
  %96 = extractvalue { ptr, i32 } %94, 1
  store i32 %96, ptr %8, align 4
  br label %101

97:                                               ; preds = %79, %78
  %98 = landingpad { ptr, i32 }
          cleanup
  %99 = extractvalue { ptr, i32 } %98, 0
  store ptr %99, ptr %7, align 8
  %100 = extractvalue { ptr, i32 } %98, 1
  store i32 %100, ptr %8, align 4
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %11) #7
  br label %101

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

102:                                              ; preds = %101, %89
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %10) #7
  call void @llvm.lifetime.end.p0(i64 1, ptr %10) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr %9) #7
  %103 = load i1, ptr %13, align 1
  br i1 %103, label %104, label %105

104:                                              ; preds = %102
  call void @__cxa_free_exception(ptr %76) #7
  br label %105

105:                                              ; preds = %104, %102
  br label %649

106:                                              ; preds = %68
  call void @llvm.lifetime.start.p0(i64 4, ptr %14) #7
  %107 = load ptr, ptr %3, align 8, !tbaa !5
  %108 = call noundef i32 @_ZNK7SGTELIB6Matrix11get_nb_colsEv(ptr noundef nonnull align 8 dereferenceable(56) %107)
  store i32 %108, ptr %14, align 4, !tbaa !11
  call void @llvm.lifetime.start.p0(i64 4, ptr %15) #7
  %109 = load ptr, ptr %3, align 8, !tbaa !5
  %110 = call noundef i32 @_ZNK7SGTELIB6Matrix11get_nb_rowsEv(ptr noundef nonnull align 8 dereferenceable(56) %109)
  store i32 %110, ptr %15, align 4, !tbaa !11
  call void @llvm.lifetime.start.p0(i64 24, ptr %16) #7
  call void @_ZN9NOMAD_4_36DoubleC1Ev(ptr noundef nonnull align 8 dereferenceable(17) %16)
  call void @llvm.lifetime.start.p0(i64 24, ptr %17) #7
  invoke void @_ZN9NOMAD_4_36DoubleC1Ev(ptr noundef nonnull align 8 dereferenceable(17) %17)
          to label %111 unwind label %117

111:                                              ; preds = %106
  call void @llvm.lifetime.start.p0(i64 1, ptr %18) #7
  store i8 0, ptr %18, align 1, !tbaa !13
  call void @llvm.lifetime.start.p0(i64 4, ptr %19) #7
  store i32 0, ptr %19, align 4, !tbaa !11
  br label %112

112:                                              ; preds = %318, %111
  %113 = load i32, ptr %19, align 4, !tbaa !11
  %114 = load i32, ptr %14, align 4, !tbaa !11
  %115 = icmp slt i32 %113, %114
  br i1 %115, label %121, label %116

116:                                              ; preds = %112
  store i32 2, ptr %20, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %19) #7
  br label %322

117:                                              ; preds = %106
  %118 = landingpad { ptr, i32 }
          cleanup
  %119 = extractvalue { ptr, i32 } %118, 0
  store ptr %119, ptr %7, align 8
  %120 = extractvalue { ptr, i32 } %118, 1
  store i32 %120, ptr %8, align 4
  br label %648

121:                                              ; preds = %112
  %122 = getelementptr inbounds %"class.NOMAD_4_3::QuadModelOptimize", ptr %59, i32 0, i32 5
  %123 = load i32, ptr %19, align 4, !tbaa !11
  %124 = sext i32 %123 to i64
  %125 = invoke noundef nonnull align 8 dereferenceable(17) ptr @_ZNK9NOMAD_4_313ArrayOfDoubleixEm(ptr noundef nonnull align 8 dereferenceable(24) %122, i64 noundef %124)
          to label %126 unwind label %141

126:                                              ; preds = %121
  %127 = invoke noundef nonnull align 8 dereferenceable(17) ptr @_ZN9NOMAD_4_36DoubleaSERKS0_(ptr noundef nonnull align 8 dereferenceable(17) %16, ptr noundef nonnull align 8 dereferenceable(17) %125)
          to label %128 unwind label %141

128:                                              ; preds = %126
  %129 = getelementptr inbounds %"class.NOMAD_4_3::QuadModelOptimize", ptr %59, i32 0, i32 6
  %130 = load i32, ptr %19, align 4, !tbaa !11
  %131 = sext i32 %130 to i64
  %132 = invoke noundef nonnull align 8 dereferenceable(17) ptr @_ZNK9NOMAD_4_313ArrayOfDoubleixEm(ptr noundef nonnull align 8 dereferenceable(24) %129, i64 noundef %131)
          to label %133 unwind label %141

133:                                              ; preds = %128
  %134 = invoke noundef nonnull align 8 dereferenceable(17) ptr @_ZN9NOMAD_4_36DoubleaSERKS0_(ptr noundef nonnull align 8 dereferenceable(17) %17, ptr noundef nonnull align 8 dereferenceable(17) %132)
          to label %135 unwind label %141

135:                                              ; preds = %133
  call void @llvm.lifetime.start.p0(i64 4, ptr %21) #7
  store i32 0, ptr %21, align 4, !tbaa !11
  br label %136

136:                                              ; preds = %196, %135
  %137 = load i32, ptr %21, align 4, !tbaa !11
  %138 = load i32, ptr %15, align 4, !tbaa !11
  %139 = icmp slt i32 %137, %138
  br i1 %139, label %145, label %140

140:                                              ; preds = %136
  store i32 5, ptr %20, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %21) #7
  br label %200

141:                                              ; preds = %313, %308, %306, %301, %299, %294, %282, %277, %272, %251, %246, %244, %239, %208, %203, %200, %133, %128, %126, %121
  %142 = landingpad { ptr, i32 }
          cleanup
  %143 = extractvalue { ptr, i32 } %142, 0
  store ptr %143, ptr %7, align 8
  %144 = extractvalue { ptr, i32 } %142, 1
  store i32 %144, ptr %8, align 4
  br label %321

145:                                              ; preds = %136
  call void @llvm.lifetime.start.p0(i64 24, ptr %22) #7
  call void @llvm.lifetime.start.p0(i64 8, ptr %23) #7
  %146 = load ptr, ptr %3, align 8, !tbaa !5
  %147 = load i32, ptr %21, align 4, !tbaa !11
  %148 = load i32, ptr %19, align 4, !tbaa !11
  %149 = invoke noundef double @_ZNK7SGTELIB6Matrix3getEii(ptr noundef nonnull align 8 dereferenceable(56) %146, i32 noundef %147, i32 noundef %148)
          to label %150 unwind label %165

150:                                              ; preds = %145
  store double %149, ptr %23, align 8, !tbaa !15
  invoke void @_ZN9NOMAD_4_36DoubleC1ERKd(ptr noundef nonnull align 8 dereferenceable(17) %22, ptr noundef nonnull align 8 dereferenceable(8) %23)
          to label %151 unwind label %165

151:                                              ; preds = %150
  call void @llvm.lifetime.end.p0(i64 8, ptr %23) #7
  %152 = invoke noundef zeroext i1 @_ZNK9NOMAD_4_36Double9isDefinedEv(ptr noundef nonnull align 8 dereferenceable(17) %16)
          to label %153 unwind label %169

153:                                              ; preds = %151
  br i1 %152, label %154, label %174

154:                                              ; preds = %153
  %155 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNK9NOMAD_4_36Double8todoubleEv(ptr noundef nonnull align 8 dereferenceable(17) %22)
          to label %156 unwind label %169

156:                                              ; preds = %154
  %157 = load double, ptr %155, align 8, !tbaa !15
  %158 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNK9NOMAD_4_36Double8todoubleEv(ptr noundef nonnull align 8 dereferenceable(17) %16)
          to label %159 unwind label %169

159:                                              ; preds = %156
  %160 = load double, ptr %158, align 8, !tbaa !15
  %161 = fcmp olt double %157, %160
  br i1 %161, label %162, label %173

162:                                              ; preds = %159
  %163 = invoke noundef nonnull align 8 dereferenceable(17) ptr @_ZN9NOMAD_4_36DoubleaSERKS0_(ptr noundef nonnull align 8 dereferenceable(17) %16, ptr noundef nonnull align 8 dereferenceable(17) %22)
          to label %164 unwind label %169

164:                                              ; preds = %162
  br label %173

165:                                              ; preds = %150, %145
  %166 = landingpad { ptr, i32 }
          cleanup
  %167 = extractvalue { ptr, i32 } %166, 0
  store ptr %167, ptr %7, align 8
  %168 = extractvalue { ptr, i32 } %166, 1
  store i32 %168, ptr %8, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %23) #7
  br label %199

169:                                              ; preds = %192, %188, %182, %180, %177, %174, %162, %156, %154, %151
  %170 = landingpad { ptr, i32 }
          cleanup
  %171 = extractvalue { ptr, i32 } %170, 0
  store ptr %171, ptr %7, align 8
  %172 = extractvalue { ptr, i32 } %170, 1
  store i32 %172, ptr %8, align 4
  call void @_ZN9NOMAD_4_36DoubleD1Ev(ptr noundef nonnull align 8 dereferenceable(17) %22) #7
  br label %199

173:                                              ; preds = %164, %159
  br label %177

174:                                              ; preds = %153
  %175 = invoke noundef nonnull align 8 dereferenceable(17) ptr @_ZN9NOMAD_4_36DoubleaSERKS0_(ptr noundef nonnull align 8 dereferenceable(17) %16, ptr noundef nonnull align 8 dereferenceable(17) %22)
          to label %176 unwind label %169

176:                                              ; preds = %174
  br label %177

177:                                              ; preds = %176, %173
  %178 = invoke noundef zeroext i1 @_ZNK9NOMAD_4_36Double9isDefinedEv(ptr noundef nonnull align 8 dereferenceable(17) %17)
          to label %179 unwind label %169

179:                                              ; preds = %177
  br i1 %178, label %180, label %192

180:                                              ; preds = %179
  %181 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNK9NOMAD_4_36Double8todoubleEv(ptr noundef nonnull align 8 dereferenceable(17) %22)
          to label %182 unwind label %169

182:                                              ; preds = %180
  %183 = load double, ptr %181, align 8, !tbaa !15
  %184 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNK9NOMAD_4_36Double8todoubleEv(ptr noundef nonnull align 8 dereferenceable(17) %17)
          to label %185 unwind label %169

185:                                              ; preds = %182
  %186 = load double, ptr %184, align 8, !tbaa !15
  %187 = fcmp ogt double %183, %186
  br i1 %187, label %188, label %191

188:                                              ; preds = %185
  %189 = invoke noundef nonnull align 8 dereferenceable(17) ptr @_ZN9NOMAD_4_36DoubleaSERKS0_(ptr noundef nonnull align 8 dereferenceable(17) %17, ptr noundef nonnull align 8 dereferenceable(17) %22)
          to label %190 unwind label %169

190:                                              ; preds = %188
  br label %191

191:                                              ; preds = %190, %185
  br label %195

192:                                              ; preds = %179
  %193 = invoke noundef nonnull align 8 dereferenceable(17) ptr @_ZN9NOMAD_4_36DoubleaSERKS0_(ptr noundef nonnull align 8 dereferenceable(17) %17, ptr noundef nonnull align 8 dereferenceable(17) %22)
          to label %194 unwind label %169

194:                                              ; preds = %192
  br label %195

195:                                              ; preds = %194, %191
  call void @_ZN9NOMAD_4_36DoubleD1Ev(ptr noundef nonnull align 8 dereferenceable(17) %22) #7
  call void @llvm.lifetime.end.p0(i64 24, ptr %22) #7
  br label %196

196:                                              ; preds = %195
  %197 = load i32, ptr %21, align 4, !tbaa !11
  %198 = add nsw i32 %197, 1
  store i32 %198, ptr %21, align 4, !tbaa !11
  br label %136, !llvm.loop !17

199:                                              ; preds = %169, %165
  call void @llvm.lifetime.end.p0(i64 24, ptr %22) #7
  call void @llvm.lifetime.end.p0(i64 4, ptr %21) #7
  br label %321

200:                                              ; preds = %140
  store i8 0, ptr %18, align 1, !tbaa !13
  %201 = invoke noundef zeroext i1 @_ZN9NOMAD_4_3eqERKNS_6DoubleES2_(ptr noundef nonnull align 8 dereferenceable(17) %16, ptr noundef nonnull align 8 dereferenceable(17) %17)
          to label %202 unwind label %141

202:                                              ; preds = %200
  br i1 %201, label %203, label %235

203:                                              ; preds = %202
  %204 = getelementptr inbounds %"class.NOMAD_4_3::QuadModelOptimize", ptr %59, i32 0, i32 7
  %205 = load i32, ptr %19, align 4, !tbaa !11
  %206 = sext i32 %205 to i64
  %207 = invoke noundef nonnull align 8 dereferenceable(17) ptr @_ZNK9NOMAD_4_313ArrayOfDoubleixEm(ptr noundef nonnull align 8 dereferenceable(24) %204, i64 noundef %206)
          to label %208 unwind label %141

208:                                              ; preds = %203
  %209 = invoke noundef nonnull align 8 dereferenceable(17) ptr @_ZN9NOMAD_4_36DoubleaSERKS0_(ptr noundef nonnull align 8 dereferenceable(17) %207, ptr noundef nonnull align 8 dereferenceable(17) %17)
          to label %210 unwind label %141

210:                                              ; preds = %208
  call void @llvm.lifetime.start.p0(i64 24, ptr %24) #7
  invoke void @_ZN9NOMAD_4_36DoubleC1Ev(ptr noundef nonnull align 8 dereferenceable(17) %24)
          to label %211 unwind label %217

211:                                              ; preds = %210
  %212 = invoke noundef nonnull align 8 dereferenceable(17) ptr @_ZN9NOMAD_4_36DoubleaSERKS0_(ptr noundef nonnull align 8 dereferenceable(17) %16, ptr noundef nonnull align 8 dereferenceable(17) %24)
          to label %213 unwind label %221

213:                                              ; preds = %211
  call void @_ZN9NOMAD_4_36DoubleD1Ev(ptr noundef nonnull align 8 dereferenceable(17) %24) #7
  call void @llvm.lifetime.end.p0(i64 24, ptr %24) #7
  call void @llvm.lifetime.start.p0(i64 24, ptr %25) #7
  invoke void @_ZN9NOMAD_4_36DoubleC1Ev(ptr noundef nonnull align 8 dereferenceable(17) %25)
          to label %214 unwind label %226

214:                                              ; preds = %213
  %215 = invoke noundef nonnull align 8 dereferenceable(17) ptr @_ZN9NOMAD_4_36DoubleaSERKS0_(ptr noundef nonnull align 8 dereferenceable(17) %17, ptr noundef nonnull align 8 dereferenceable(17) %25)
          to label %216 unwind label %230

216:                                              ; preds = %214
  call void @_ZN9NOMAD_4_36DoubleD1Ev(ptr noundef nonnull align 8 dereferenceable(17) %25) #7
  call void @llvm.lifetime.end.p0(i64 24, ptr %25) #7
  store i8 1, ptr %18, align 1, !tbaa !13
  br label %235

217:                                              ; preds = %210
  %218 = landingpad { ptr, i32 }
          cleanup
  %219 = extractvalue { ptr, i32 } %218, 0
  store ptr %219, ptr %7, align 8
  %220 = extractvalue { ptr, i32 } %218, 1
  store i32 %220, ptr %8, align 4
  br label %225

221:                                              ; preds = %211
  %222 = landingpad { ptr, i32 }
          cleanup
  %223 = extractvalue { ptr, i32 } %222, 0
  store ptr %223, ptr %7, align 8
  %224 = extractvalue { ptr, i32 } %222, 1
  store i32 %224, ptr %8, align 4
  call void @_ZN9NOMAD_4_36DoubleD1Ev(ptr noundef nonnull align 8 dereferenceable(17) %24) #7
  br label %225

225:                                              ; preds = %221, %217
  call void @llvm.lifetime.end.p0(i64 24, ptr %24) #7
  br label %321

226:                                              ; preds = %213
  %227 = landingpad { ptr, i32 }
          cleanup
  %228 = extractvalue { ptr, i32 } %227, 0
  store ptr %228, ptr %7, align 8
  %229 = extractvalue { ptr, i32 } %227, 1
  store i32 %229, ptr %8, align 4
  br label %234

230:                                              ; preds = %214
  %231 = landingpad { ptr, i32 }
          cleanup
  %232 = extractvalue { ptr, i32 } %231, 0
  store ptr %232, ptr %7, align 8
  %233 = extractvalue { ptr, i32 } %231, 1
  store i32 %233, ptr %8, align 4
  call void @_ZN9NOMAD_4_36DoubleD1Ev(ptr noundef nonnull align 8 dereferenceable(17) %25) #7
  br label %234

234:                                              ; preds = %230, %226
  call void @llvm.lifetime.end.p0(i64 24, ptr %25) #7
  br label %321

235:                                              ; preds = %216, %202
  %236 = getelementptr inbounds %"class.NOMAD_4_3::QuadModelOptimize", ptr %59, i32 0, i32 12
  %237 = load i8, ptr %236, align 8, !tbaa !19, !range !66, !noundef !67
  %238 = trunc i8 %237 to i1
  br i1 %238, label %254, label %239

239:                                              ; preds = %235
  %240 = getelementptr inbounds %"class.NOMAD_4_3::QuadModelOptimize", ptr %59, i32 0, i32 5
  %241 = load i32, ptr %19, align 4, !tbaa !11
  %242 = sext i32 %241 to i64
  %243 = invoke noundef nonnull align 8 dereferenceable(17) ptr @_ZNK9NOMAD_4_313ArrayOfDoubleixEm(ptr noundef nonnull align 8 dereferenceable(24) %240, i64 noundef %242)
          to label %244 unwind label %141

244:                                              ; preds = %239
  %245 = invoke noundef nonnull align 8 dereferenceable(17) ptr @_ZN9NOMAD_4_36DoubleaSERKS0_(ptr noundef nonnull align 8 dereferenceable(17) %243, ptr noundef nonnull align 8 dereferenceable(17) %16)
          to label %246 unwind label %141

246:                                              ; preds = %244
  %247 = getelementptr inbounds %"class.NOMAD_4_3::QuadModelOptimize", ptr %59, i32 0, i32 6
  %248 = load i32, ptr %19, align 4, !tbaa !11
  %249 = sext i32 %248 to i64
  %250 = invoke noundef nonnull align 8 dereferenceable(17) ptr @_ZNK9NOMAD_4_313ArrayOfDoubleixEm(ptr noundef nonnull align 8 dereferenceable(24) %247, i64 noundef %249)
          to label %251 unwind label %141

251:                                              ; preds = %246
  %252 = invoke noundef nonnull align 8 dereferenceable(17) ptr @_ZN9NOMAD_4_36DoubleaSERKS0_(ptr noundef nonnull align 8 dereferenceable(17) %250, ptr noundef nonnull align 8 dereferenceable(17) %17)
          to label %253 unwind label %141

253:                                              ; preds = %251
  br label %317

254:                                              ; preds = %235
  %255 = load i8, ptr %18, align 1, !tbaa !13, !range !66, !noundef !67
  %256 = trunc i8 %255 to i1
  br i1 %256, label %257, label %294

257:                                              ; preds = %254
  call void @llvm.lifetime.start.p0(i64 24, ptr %26) #7
  invoke void @_ZN9NOMAD_4_36DoubleC1Ev(ptr noundef nonnull align 8 dereferenceable(17) %26)
          to label %258 unwind label %285

258:                                              ; preds = %257
  %259 = getelementptr inbounds %"class.NOMAD_4_3::QuadModelOptimize", ptr %59, i32 0, i32 6
  %260 = load i32, ptr %19, align 4, !tbaa !11
  %261 = sext i32 %260 to i64
  %262 = invoke noundef nonnull align 8 dereferenceable(17) ptr @_ZNK9NOMAD_4_313ArrayOfDoubleixEm(ptr noundef nonnull align 8 dereferenceable(24) %259, i64 noundef %261)
          to label %263 unwind label %289

263:                                              ; preds = %258
  %264 = invoke noundef nonnull align 8 dereferenceable(17) ptr @_ZN9NOMAD_4_36DoubleaSERKS0_(ptr noundef nonnull align 8 dereferenceable(17) %262, ptr noundef nonnull align 8 dereferenceable(17) %26)
          to label %265 unwind label %289

265:                                              ; preds = %263
  %266 = getelementptr inbounds %"class.NOMAD_4_3::QuadModelOptimize", ptr %59, i32 0, i32 5
  %267 = load i32, ptr %19, align 4, !tbaa !11
  %268 = sext i32 %267 to i64
  %269 = invoke noundef nonnull align 8 dereferenceable(17) ptr @_ZNK9NOMAD_4_313ArrayOfDoubleixEm(ptr noundef nonnull align 8 dereferenceable(24) %266, i64 noundef %268)
          to label %270 unwind label %289

270:                                              ; preds = %265
  %271 = invoke noundef nonnull align 8 dereferenceable(17) ptr @_ZN9NOMAD_4_36DoubleaSERKS0_(ptr noundef nonnull align 8 dereferenceable(17) %269, ptr noundef nonnull align 8 dereferenceable(17) %264)
          to label %272 unwind label %289

272:                                              ; preds = %270
  call void @_ZN9NOMAD_4_36DoubleD1Ev(ptr noundef nonnull align 8 dereferenceable(17) %26) #7
  call void @llvm.lifetime.end.p0(i64 24, ptr %26) #7
  %273 = getelementptr inbounds %"class.NOMAD_4_3::QuadModelOptimize", ptr %59, i32 0, i32 7
  %274 = load i32, ptr %19, align 4, !tbaa !11
  %275 = sext i32 %274 to i64
  %276 = invoke noundef nonnull align 8 dereferenceable(17) ptr @_ZNK9NOMAD_4_313ArrayOfDoubleixEm(ptr noundef nonnull align 8 dereferenceable(24) %273, i64 noundef %275)
          to label %277 unwind label %141

277:                                              ; preds = %272
  %278 = getelementptr inbounds %"class.NOMAD_4_3::QuadModelOptimize", ptr %59, i32 0, i32 8
  %279 = load i32, ptr %19, align 4, !tbaa !11
  %280 = sext i32 %279 to i64
  %281 = invoke noundef nonnull align 8 dereferenceable(17) ptr @_ZNK9NOMAD_4_313ArrayOfDoubleixEm(ptr noundef nonnull align 8 dereferenceable(24) %278, i64 noundef %280)
          to label %282 unwind label %141

282:                                              ; preds = %277
  %283 = invoke noundef nonnull align 8 dereferenceable(17) ptr @_ZN9NOMAD_4_36DoubleaSERKS0_(ptr noundef nonnull align 8 dereferenceable(17) %281, ptr noundef nonnull align 8 dereferenceable(17) %276)
          to label %284 unwind label %141

284:                                              ; preds = %282
  br label %316

285:                                              ; preds = %257
  %286 = landingpad { ptr, i32 }
          cleanup
  %287 = extractvalue { ptr, i32 } %286, 0
  store ptr %287, ptr %7, align 8
  %288 = extractvalue { ptr, i32 } %286, 1
  store i32 %288, ptr %8, align 4
  br label %293

289:                                              ; preds = %270, %265, %263, %258
  %290 = landingpad { ptr, i32 }
          cleanup
  %291 = extractvalue { ptr, i32 } %290, 0
  store ptr %291, ptr %7, align 8
  %292 = extractvalue { ptr, i32 } %290, 1
  store i32 %292, ptr %8, align 4
  call void @_ZN9NOMAD_4_36DoubleD1Ev(ptr noundef nonnull align 8 dereferenceable(17) %26) #7
  br label %293

293:                                              ; preds = %289, %285
  call void @llvm.lifetime.end.p0(i64 24, ptr %26) #7
  br label %321

294:                                              ; preds = %254
  %295 = getelementptr inbounds %"class.NOMAD_4_3::QuadModelOptimize", ptr %59, i32 0, i32 5
  %296 = load i32, ptr %19, align 4, !tbaa !11
  %297 = sext i32 %296 to i64
  %298 = invoke noundef nonnull align 8 dereferenceable(17) ptr @_ZNK9NOMAD_4_313ArrayOfDoubleixEm(ptr noundef nonnull align 8 dereferenceable(24) %295, i64 noundef %297)
          to label %299 unwind label %141

299:                                              ; preds = %294
  %300 = invoke noundef nonnull align 8 dereferenceable(17) ptr @_ZN9NOMAD_4_36DoubleaSEd(ptr noundef nonnull align 8 dereferenceable(17) %298, double noundef 0.000000e+00)
          to label %301 unwind label %141

301:                                              ; preds = %299
  %302 = getelementptr inbounds %"class.NOMAD_4_3::QuadModelOptimize", ptr %59, i32 0, i32 6
  %303 = load i32, ptr %19, align 4, !tbaa !11
  %304 = sext i32 %303 to i64
  %305 = invoke noundef nonnull align 8 dereferenceable(17) ptr @_ZNK9NOMAD_4_313ArrayOfDoubleixEm(ptr noundef nonnull align 8 dereferenceable(24) %302, i64 noundef %304)
          to label %306 unwind label %141

306:                                              ; preds = %301
  %307 = invoke noundef nonnull align 8 dereferenceable(17) ptr @_ZN9NOMAD_4_36DoubleaSEd(ptr noundef nonnull align 8 dereferenceable(17) %305, double noundef 1.000000e+00)
          to label %308 unwind label %141

308:                                              ; preds = %306
  %309 = getelementptr inbounds %"class.NOMAD_4_3::QuadModelOptimize", ptr %59, i32 0, i32 8
  %310 = load i32, ptr %19, align 4, !tbaa !11
  %311 = sext i32 %310 to i64
  %312 = invoke noundef nonnull align 8 dereferenceable(17) ptr @_ZNK9NOMAD_4_313ArrayOfDoubleixEm(ptr noundef nonnull align 8 dereferenceable(24) %309, i64 noundef %311)
          to label %313 unwind label %141

313:                                              ; preds = %308
  %314 = invoke noundef nonnull align 8 dereferenceable(17) ptr @_ZN9NOMAD_4_36DoubleaSEd(ptr noundef nonnull align 8 dereferenceable(17) %312, double noundef 5.000000e-01)
          to label %315 unwind label %141

315:                                              ; preds = %313
  br label %316

316:                                              ; preds = %315, %284
  br label %317

317:                                              ; preds = %316, %253
  br label %318

318:                                              ; preds = %317
  %319 = load i32, ptr %19, align 4, !tbaa !11
  %320 = add nsw i32 %319, 1
  store i32 %320, ptr %19, align 4, !tbaa !11
  br label %112, !llvm.loop !68

321:                                              ; preds = %293, %234, %225, %199, %141
  call void @llvm.lifetime.end.p0(i64 4, ptr %19) #7
  br label %647

322:                                              ; preds = %116
  %323 = getelementptr inbounds %"class.NOMAD_4_3::QuadModelOptimize", ptr %59, i32 0, i32 12
  %324 = load i8, ptr %323, align 8, !tbaa !19, !range !66, !noundef !67
  %325 = trunc i8 %324 to i1
  br i1 %325, label %555, label %326

326:                                              ; preds = %322
  call void @llvm.lifetime.start.p0(i64 24, ptr %27) #7
  %327 = getelementptr inbounds %"class.NOMAD_4_3::Step", ptr %59, i32 0, i32 5
  %328 = call noundef ptr @_ZNKSt19__shared_ptr_accessIN9NOMAD_4_313RunParametersELN9__gnu_cxx12_Lock_policyE2ELb0ELb0EEptEv(ptr noundef nonnull align 1 dereferenceable(1) %327) #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.51, ptr noundef nonnull align 1 dereferenceable(1) %29)
          to label %329 unwind label %338

329:                                              ; preds = %326
  %330 = invoke noundef nonnull align 8 dereferenceable(17) ptr @_ZNK9NOMAD_4_310Parameters17getAttributeValueINS_6DoubleEEERKT_RKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEb(ptr noundef nonnull align 8 dereferenceable(496) %328, ptr noundef nonnull align 8 dereferenceable(32) %28, i1 noundef zeroext false)
          to label %331 unwind label %342

331:                                              ; preds = %329
  invoke void @_ZN9NOMAD_4_36DoubleC1ERKS0_(ptr noundef nonnull align 8 dereferenceable(17) %27, ptr noundef nonnull align 8 dereferenceable(17) %330)
          to label %332 unwind label %342

332:                                              ; preds = %331
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %28) #7
  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
  call void @llvm.lifetime.start.p0(i64 4, ptr %30) #7
  store i32 0, ptr %30, align 4, !tbaa !11
  br label %333

333:                                              ; preds = %549, %332
  %334 = load i32, ptr %30, align 4, !tbaa !11
  %335 = load i32, ptr %14, align 4, !tbaa !11
  %336 = icmp slt i32 %334, %335
  br i1 %336, label %347, label %337

337:                                              ; preds = %333
  store i32 8, ptr %20, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %30) #7
  br label %553

338:                                              ; preds = %326
  %339 = landingpad { ptr, i32 }
          cleanup
  %340 = extractvalue { ptr, i32 } %339, 0
  store ptr %340, ptr %7, align 8
  %341 = extractvalue { ptr, i32 } %339, 1
  store i32 %341, ptr %8, align 4
  br label %346

342:                                              ; preds = %331, %329
  %343 = landingpad { ptr, i32 }
          cleanup
  %344 = extractvalue { ptr, i32 } %343, 0
  store ptr %344, ptr %7, align 8
  %345 = extractvalue { ptr, i32 } %343, 1
  store i32 %345, ptr %8, align 4
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %28) #7
  br label %346

346:                                              ; preds = %342, %338
  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
  br label %554

347:                                              ; preds = %333
  %348 = getelementptr inbounds %"class.NOMAD_4_3::QuadModelOptimize", ptr %59, i32 0, i32 5
  %349 = load i32, ptr %30, align 4, !tbaa !11
  %350 = sext i32 %349 to i64
  %351 = invoke noundef nonnull align 8 dereferenceable(17) ptr @_ZNK9NOMAD_4_313ArrayOfDoubleixEm(ptr noundef nonnull align 8 dereferenceable(24) %348, i64 noundef %350)
          to label %352 unwind label %431

352:                                              ; preds = %347
  %353 = invoke noundef nonnull align 8 dereferenceable(17) ptr @_ZN9NOMAD_4_36DoubleaSERKS0_(ptr noundef nonnull align 8 dereferenceable(17) %16, ptr noundef nonnull align 8 dereferenceable(17) %351)
          to label %354 unwind label %431

354:                                              ; preds = %352
  %355 = getelementptr inbounds %"class.NOMAD_4_3::QuadModelOptimize", ptr %59, i32 0, i32 6
  %356 = load i32, ptr %30, align 4, !tbaa !11
  %357 = sext i32 %356 to i64
  %358 = invoke noundef nonnull align 8 dereferenceable(17) ptr @_ZNK9NOMAD_4_313ArrayOfDoubleixEm(ptr noundef nonnull align 8 dereferenceable(24) %355, i64 noundef %357)
          to label %359 unwind label %431

359:                                              ; preds = %354
  %360 = invoke noundef nonnull align 8 dereferenceable(17) ptr @_ZN9NOMAD_4_36DoubleaSERKS0_(ptr noundef nonnull align 8 dereferenceable(17) %17, ptr noundef nonnull align 8 dereferenceable(17) %358)
          to label %361 unwind label %431

361:                                              ; preds = %359
  %362 = invoke noundef zeroext i1 @_ZNK9NOMAD_4_36Double9isDefinedEv(ptr noundef nonnull align 8 dereferenceable(17) %16)
          to label %363 unwind label %431

363:                                              ; preds = %361
  br i1 %362, label %364, label %521

364:                                              ; preds = %363
  %365 = invoke noundef zeroext i1 @_ZNK9NOMAD_4_36Double9isDefinedEv(ptr noundef nonnull align 8 dereferenceable(17) %17)
          to label %366 unwind label %431

366:                                              ; preds = %364
  br i1 %365, label %367, label %521

367:                                              ; preds = %366
  call void @llvm.lifetime.start.p0(i64 24, ptr %31) #7
  call void @llvm.lifetime.start.p0(i64 24, ptr %32) #7
  invoke void @_ZN9NOMAD_4_3plERKNS_6DoubleES2_(ptr dead_on_unwind writable sret(%"class.NOMAD_4_3::Double") align 8 %32, ptr noundef nonnull align 8 dereferenceable(17) %16, ptr noundef nonnull align 8 dereferenceable(17) %17)
          to label %368 unwind label %435

368:                                              ; preds = %367
  call void @llvm.lifetime.start.p0(i64 24, ptr %33) #7
  call void @llvm.lifetime.start.p0(i64 8, ptr %34) #7
  store double 2.000000e+00, ptr %34, align 8, !tbaa !15
  invoke void @_ZN9NOMAD_4_36DoubleC1ERKd(ptr noundef nonnull align 8 dereferenceable(17) %33, ptr noundef nonnull align 8 dereferenceable(8) %34)
          to label %369 unwind label %439

369:                                              ; preds = %368
  invoke void @_ZN9NOMAD_4_3dvERKNS_6DoubleES2_(ptr dead_on_unwind writable sret(%"class.NOMAD_4_3::Double") align 8 %31, ptr noundef nonnull align 8 dereferenceable(17) %32, ptr noundef nonnull align 8 dereferenceable(17) %33)
          to label %370 unwind label %443

370:                                              ; preds = %369
  %371 = getelementptr inbounds %"class.NOMAD_4_3::QuadModelOptimize", ptr %59, i32 0, i32 8
  %372 = load i32, ptr %30, align 4, !tbaa !11
  %373 = sext i32 %372 to i64
  %374 = invoke noundef nonnull align 8 dereferenceable(17) ptr @_ZNK9NOMAD_4_313ArrayOfDoubleixEm(ptr noundef nonnull align 8 dereferenceable(24) %371, i64 noundef %373)
          to label %375 unwind label %447

375:                                              ; preds = %370
  %376 = invoke noundef nonnull align 8 dereferenceable(17) ptr @_ZN9NOMAD_4_36DoubleaSERKS0_(ptr noundef nonnull align 8 dereferenceable(17) %374, ptr noundef nonnull align 8 dereferenceable(17) %31)
          to label %377 unwind label %447

377:                                              ; preds = %375
  call void @_ZN9NOMAD_4_36DoubleD1Ev(ptr noundef nonnull align 8 dereferenceable(17) %31) #7
  call void @_ZN9NOMAD_4_36DoubleD1Ev(ptr noundef nonnull align 8 dereferenceable(17) %33) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %34) #7
  call void @llvm.lifetime.end.p0(i64 24, ptr %33) #7
  call void @_ZN9NOMAD_4_36DoubleD1Ev(ptr noundef nonnull align 8 dereferenceable(17) %32) #7
  call void @llvm.lifetime.end.p0(i64 24, ptr %32) #7
  call void @llvm.lifetime.end.p0(i64 24, ptr %31) #7
  call void @llvm.lifetime.start.p0(i64 24, ptr %35) #7
  %378 = getelementptr inbounds %"class.NOMAD_4_3::QuadModelOptimize", ptr %59, i32 0, i32 8
  %379 = load i32, ptr %30, align 4, !tbaa !11
  %380 = sext i32 %379 to i64
  %381 = invoke noundef nonnull align 8 dereferenceable(17) ptr @_ZNK9NOMAD_4_313ArrayOfDoubleixEm(ptr noundef nonnull align 8 dereferenceable(24) %378, i64 noundef %380)
          to label %382 unwind label %454

382:                                              ; preds = %377
  call void @llvm.lifetime.start.p0(i64 24, ptr %36) #7
  call void @llvm.lifetime.start.p0(i64 24, ptr %37) #7
  %383 = getelementptr inbounds %"class.NOMAD_4_3::QuadModelOptimize", ptr %59, i32 0, i32 8
  %384 = load i32, ptr %30, align 4, !tbaa !11
  %385 = sext i32 %384 to i64
  %386 = invoke noundef nonnull align 8 dereferenceable(17) ptr @_ZNK9NOMAD_4_313ArrayOfDoubleixEm(ptr noundef nonnull align 8 dereferenceable(24) %383, i64 noundef %385)
          to label %387 unwind label %458

387:                                              ; preds = %382
  invoke void @_ZN9NOMAD_4_3miERKNS_6DoubleES2_(ptr dead_on_unwind writable sret(%"class.NOMAD_4_3::Double") align 8 %37, ptr noundef nonnull align 8 dereferenceable(17) %16, ptr noundef nonnull align 8 dereferenceable(17) %386)
          to label %388 unwind label %458

388:                                              ; preds = %387
  invoke void @_ZN9NOMAD_4_3dvERKNS_6DoubleES2_(ptr dead_on_unwind writable sret(%"class.NOMAD_4_3::Double") align 8 %36, ptr noundef nonnull align 8 dereferenceable(17) %37, ptr noundef nonnull align 8 dereferenceable(17) %27)
          to label %389 unwind label %462

389:                                              ; preds = %388
  invoke void @_ZN9NOMAD_4_3plERKNS_6DoubleES2_(ptr dead_on_unwind writable sret(%"class.NOMAD_4_3::Double") align 8 %35, ptr noundef nonnull align 8 dereferenceable(17) %381, ptr noundef nonnull align 8 dereferenceable(17) %36)
          to label %390 unwind label %466

390:                                              ; preds = %389
  %391 = invoke noundef nonnull align 8 dereferenceable(17) ptr @_ZN9NOMAD_4_36DoubleaSERKS0_(ptr noundef nonnull align 8 dereferenceable(17) %16, ptr noundef nonnull align 8 dereferenceable(17) %35)
          to label %392 unwind label %470

392:                                              ; preds = %390
  call void @_ZN9NOMAD_4_36DoubleD1Ev(ptr noundef nonnull align 8 dereferenceable(17) %35) #7
  call void @_ZN9NOMAD_4_36DoubleD1Ev(ptr noundef nonnull align 8 dereferenceable(17) %36) #7
  call void @_ZN9NOMAD_4_36DoubleD1Ev(ptr noundef nonnull align 8 dereferenceable(17) %37) #7
  call void @llvm.lifetime.end.p0(i64 24, ptr %37) #7
  call void @llvm.lifetime.end.p0(i64 24, ptr %36) #7
  call void @llvm.lifetime.end.p0(i64 24, ptr %35) #7
  call void @llvm.lifetime.start.p0(i64 24, ptr %38) #7
  %393 = getelementptr inbounds %"class.NOMAD_4_3::QuadModelOptimize", ptr %59, i32 0, i32 8
  %394 = load i32, ptr %30, align 4, !tbaa !11
  %395 = sext i32 %394 to i64
  %396 = invoke noundef nonnull align 8 dereferenceable(17) ptr @_ZNK9NOMAD_4_313ArrayOfDoubleixEm(ptr noundef nonnull align 8 dereferenceable(24) %393, i64 noundef %395)
          to label %397 unwind label %478

397:                                              ; preds = %392
  call void @llvm.lifetime.start.p0(i64 24, ptr %39) #7
  call void @llvm.lifetime.start.p0(i64 24, ptr %40) #7
  %398 = getelementptr inbounds %"class.NOMAD_4_3::QuadModelOptimize", ptr %59, i32 0, i32 8
  %399 = load i32, ptr %30, align 4, !tbaa !11
  %400 = sext i32 %399 to i64
  %401 = invoke noundef nonnull align 8 dereferenceable(17) ptr @_ZNK9NOMAD_4_313ArrayOfDoubleixEm(ptr noundef nonnull align 8 dereferenceable(24) %398, i64 noundef %400)
          to label %402 unwind label %482

402:                                              ; preds = %397
  invoke void @_ZN9NOMAD_4_3miERKNS_6DoubleES2_(ptr dead_on_unwind writable sret(%"class.NOMAD_4_3::Double") align 8 %40, ptr noundef nonnull align 8 dereferenceable(17) %17, ptr noundef nonnull align 8 dereferenceable(17) %401)
          to label %403 unwind label %482

403:                                              ; preds = %402
  invoke void @_ZN9NOMAD_4_3dvERKNS_6DoubleES2_(ptr dead_on_unwind writable sret(%"class.NOMAD_4_3::Double") align 8 %39, ptr noundef nonnull align 8 dereferenceable(17) %40, ptr noundef nonnull align 8 dereferenceable(17) %27)
          to label %404 unwind label %486

404:                                              ; preds = %403
  invoke void @_ZN9NOMAD_4_3plERKNS_6DoubleES2_(ptr dead_on_unwind writable sret(%"class.NOMAD_4_3::Double") align 8 %38, ptr noundef nonnull align 8 dereferenceable(17) %396, ptr noundef nonnull align 8 dereferenceable(17) %39)
          to label %405 unwind label %490

405:                                              ; preds = %404
  %406 = invoke noundef nonnull align 8 dereferenceable(17) ptr @_ZN9NOMAD_4_36DoubleaSERKS0_(ptr noundef nonnull align 8 dereferenceable(17) %17, ptr noundef nonnull align 8 dereferenceable(17) %38)
          to label %407 unwind label %494

407:                                              ; preds = %405
  call void @_ZN9NOMAD_4_36DoubleD1Ev(ptr noundef nonnull align 8 dereferenceable(17) %38) #7
  call void @_ZN9NOMAD_4_36DoubleD1Ev(ptr noundef nonnull align 8 dereferenceable(17) %39) #7
  call void @_ZN9NOMAD_4_36DoubleD1Ev(ptr noundef nonnull align 8 dereferenceable(17) %40) #7
  call void @llvm.lifetime.end.p0(i64 24, ptr %40) #7
  call void @llvm.lifetime.end.p0(i64 24, ptr %39) #7
  call void @llvm.lifetime.end.p0(i64 24, ptr %38) #7
  %408 = invoke noundef zeroext i1 @_ZN9NOMAD_4_3eqERKNS_6DoubleES2_(ptr noundef nonnull align 8 dereferenceable(17) %16, ptr noundef nonnull align 8 dereferenceable(17) %17)
          to label %409 unwind label %431

409:                                              ; preds = %407
  br i1 %408, label %410, label %520

410:                                              ; preds = %409
  %411 = getelementptr inbounds %"class.NOMAD_4_3::QuadModelOptimize", ptr %59, i32 0, i32 7
  %412 = load i32, ptr %30, align 4, !tbaa !11
  %413 = sext i32 %412 to i64
  %414 = invoke noundef nonnull align 8 dereferenceable(17) ptr @_ZNK9NOMAD_4_313ArrayOfDoubleixEm(ptr noundef nonnull align 8 dereferenceable(24) %411, i64 noundef %413)
          to label %415 unwind label %431

415:                                              ; preds = %410
  %416 = invoke noundef nonnull align 8 dereferenceable(17) ptr @_ZN9NOMAD_4_36DoubleaSERKS0_(ptr noundef nonnull align 8 dereferenceable(17) %414, ptr noundef nonnull align 8 dereferenceable(17) %17)
          to label %417 unwind label %431

417:                                              ; preds = %415
  %418 = getelementptr inbounds %"class.NOMAD_4_3::QuadModelOptimize", ptr %59, i32 0, i32 8
  %419 = load i32, ptr %30, align 4, !tbaa !11
  %420 = sext i32 %419 to i64
  %421 = invoke noundef nonnull align 8 dereferenceable(17) ptr @_ZNK9NOMAD_4_313ArrayOfDoubleixEm(ptr noundef nonnull align 8 dereferenceable(24) %418, i64 noundef %420)
          to label %422 unwind label %431

422:                                              ; preds = %417
  %423 = invoke noundef nonnull align 8 dereferenceable(17) ptr @_ZN9NOMAD_4_36DoubleaSERKS0_(ptr noundef nonnull align 8 dereferenceable(17) %421, ptr noundef nonnull align 8 dereferenceable(17) %17)
          to label %424 unwind label %431

424:                                              ; preds = %422
  call void @llvm.lifetime.start.p0(i64 24, ptr %41) #7
  invoke void @_ZN9NOMAD_4_36DoubleC1Ev(ptr noundef nonnull align 8 dereferenceable(17) %41)
          to label %425 unwind label %502

425:                                              ; preds = %424
  %426 = invoke noundef nonnull align 8 dereferenceable(17) ptr @_ZN9NOMAD_4_36DoubleaSERKS0_(ptr noundef nonnull align 8 dereferenceable(17) %16, ptr noundef nonnull align 8 dereferenceable(17) %41)
          to label %427 unwind label %506

427:                                              ; preds = %425
  call void @_ZN9NOMAD_4_36DoubleD1Ev(ptr noundef nonnull align 8 dereferenceable(17) %41) #7
  call void @llvm.lifetime.end.p0(i64 24, ptr %41) #7
  call void @llvm.lifetime.start.p0(i64 24, ptr %42) #7
  invoke void @_ZN9NOMAD_4_36DoubleC1Ev(ptr noundef nonnull align 8 dereferenceable(17) %42)
          to label %428 unwind label %511

428:                                              ; preds = %427
  %429 = invoke noundef nonnull align 8 dereferenceable(17) ptr @_ZN9NOMAD_4_36DoubleaSERKS0_(ptr noundef nonnull align 8 dereferenceable(17) %17, ptr noundef nonnull align 8 dereferenceable(17) %42)
          to label %430 unwind label %515

430:                                              ; preds = %428
  call void @_ZN9NOMAD_4_36DoubleD1Ev(ptr noundef nonnull align 8 dereferenceable(17) %42) #7
  call void @llvm.lifetime.end.p0(i64 24, ptr %42) #7
  br label %520

431:                                              ; preds = %546, %541, %539, %534, %531, %526, %521, %422, %417, %415, %410, %407, %364, %361, %359, %354, %352, %347
  %432 = landingpad { ptr, i32 }
          cleanup
  %433 = extractvalue { ptr, i32 } %432, 0
  store ptr %433, ptr %7, align 8
  %434 = extractvalue { ptr, i32 } %432, 1
  store i32 %434, ptr %8, align 4
  br label %552

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

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

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

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

451:                                              ; preds = %447, %443
  call void @_ZN9NOMAD_4_36DoubleD1Ev(ptr noundef nonnull align 8 dereferenceable(17) %33) #7
  br label %452

452:                                              ; preds = %451, %439
  call void @llvm.lifetime.end.p0(i64 8, ptr %34) #7
  call void @llvm.lifetime.end.p0(i64 24, ptr %33) #7
  call void @_ZN9NOMAD_4_36DoubleD1Ev(ptr noundef nonnull align 8 dereferenceable(17) %32) #7
  br label %453

453:                                              ; preds = %452, %435
  call void @llvm.lifetime.end.p0(i64 24, ptr %32) #7
  call void @llvm.lifetime.end.p0(i64 24, ptr %31) #7
  br label %552

454:                                              ; preds = %377
  %455 = landingpad { ptr, i32 }
          cleanup
  %456 = extractvalue { ptr, i32 } %455, 0
  store ptr %456, ptr %7, align 8
  %457 = extractvalue { ptr, i32 } %455, 1
  store i32 %457, ptr %8, align 4
  br label %477

458:                                              ; preds = %387, %382
  %459 = landingpad { ptr, i32 }
          cleanup
  %460 = extractvalue { ptr, i32 } %459, 0
  store ptr %460, ptr %7, align 8
  %461 = extractvalue { ptr, i32 } %459, 1
  store i32 %461, ptr %8, align 4
  br label %476

462:                                              ; preds = %388
  %463 = landingpad { ptr, i32 }
          cleanup
  %464 = extractvalue { ptr, i32 } %463, 0
  store ptr %464, ptr %7, align 8
  %465 = extractvalue { ptr, i32 } %463, 1
  store i32 %465, ptr %8, align 4
  br label %475

466:                                              ; preds = %389
  %467 = landingpad { ptr, i32 }
          cleanup
  %468 = extractvalue { ptr, i32 } %467, 0
  store ptr %468, ptr %7, align 8
  %469 = extractvalue { ptr, i32 } %467, 1
  store i32 %469, ptr %8, align 4
  br label %474

470:                                              ; preds = %390
  %471 = landingpad { ptr, i32 }
          cleanup
  %472 = extractvalue { ptr, i32 } %471, 0
  store ptr %472, ptr %7, align 8
  %473 = extractvalue { ptr, i32 } %471, 1
  store i32 %473, ptr %8, align 4
  call void @_ZN9NOMAD_4_36DoubleD1Ev(ptr noundef nonnull align 8 dereferenceable(17) %35) #7
  br label %474

474:                                              ; preds = %470, %466
  call void @_ZN9NOMAD_4_36DoubleD1Ev(ptr noundef nonnull align 8 dereferenceable(17) %36) #7
  br label %475

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

476:                                              ; preds = %475, %458
  call void @llvm.lifetime.end.p0(i64 24, ptr %37) #7
  call void @llvm.lifetime.end.p0(i64 24, ptr %36) #7
  br label %477

477:                                              ; preds = %476, %454
  call void @llvm.lifetime.end.p0(i64 24, ptr %35) #7
  br label %552

478:                                              ; preds = %392
  %479 = landingpad { ptr, i32 }
          cleanup
  %480 = extractvalue { ptr, i32 } %479, 0
  store ptr %480, ptr %7, align 8
  %481 = extractvalue { ptr, i32 } %479, 1
  store i32 %481, ptr %8, align 4
  br label %501

482:                                              ; preds = %402, %397
  %483 = landingpad { ptr, i32 }
          cleanup
  %484 = extractvalue { ptr, i32 } %483, 0
  store ptr %484, ptr %7, align 8
  %485 = extractvalue { ptr, i32 } %483, 1
  store i32 %485, ptr %8, align 4
  br label %500

486:                                              ; preds = %403
  %487 = landingpad { ptr, i32 }
          cleanup
  %488 = extractvalue { ptr, i32 } %487, 0
  store ptr %488, ptr %7, align 8
  %489 = extractvalue { ptr, i32 } %487, 1
  store i32 %489, ptr %8, align 4
  br label %499

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

494:                                              ; preds = %405
  %495 = landingpad { ptr, i32 }
          cleanup
  %496 = extractvalue { ptr, i32 } %495, 0
  store ptr %496, ptr %7, align 8
  %497 = extractvalue { ptr, i32 } %495, 1
  store i32 %497, ptr %8, align 4
  call void @_ZN9NOMAD_4_36DoubleD1Ev(ptr noundef nonnull align 8 dereferenceable(17) %38) #7
  br label %498

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

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

500:                                              ; preds = %499, %482
  call void @llvm.lifetime.end.p0(i64 24, ptr %40) #7
  call void @llvm.lifetime.end.p0(i64 24, ptr %39) #7
  br label %501

501:                                              ; preds = %500, %478
  call void @llvm.lifetime.end.p0(i64 24, ptr %38) #7
  br label %552

502:                                              ; preds = %424
  %503 = landingpad { ptr, i32 }
          cleanup
  %504 = extractvalue { ptr, i32 } %503, 0
  store ptr %504, ptr %7, align 8
  %505 = extractvalue { ptr, i32 } %503, 1
  store i32 %505, ptr %8, align 4
  br label %510

506:                                              ; preds = %425
  %507 = landingpad { ptr, i32 }
          cleanup
  %508 = extractvalue { ptr, i32 } %507, 0
  store ptr %508, ptr %7, align 8
  %509 = extractvalue { ptr, i32 } %507, 1
  store i32 %509, ptr %8, align 4
  call void @_ZN9NOMAD_4_36DoubleD1Ev(ptr noundef nonnull align 8 dereferenceable(17) %41) #7
  br label %510

510:                                              ; preds = %506, %502
  call void @llvm.lifetime.end.p0(i64 24, ptr %41) #7
  br label %552

511:                                              ; preds = %427
  %512 = landingpad { ptr, i32 }
          cleanup
  %513 = extractvalue { ptr, i32 } %512, 0
  store ptr %513, ptr %7, align 8
  %514 = extractvalue { ptr, i32 } %512, 1
  store i32 %514, ptr %8, align 4
  br label %519

515:                                              ; preds = %428
  %516 = landingpad { ptr, i32 }
          cleanup
  %517 = extractvalue { ptr, i32 } %516, 0
  store ptr %517, ptr %7, align 8
  %518 = extractvalue { ptr, i32 } %516, 1
  store i32 %518, ptr %8, align 4
  call void @_ZN9NOMAD_4_36DoubleD1Ev(ptr noundef nonnull align 8 dereferenceable(17) %42) #7
  br label %519

519:                                              ; preds = %515, %511
  call void @llvm.lifetime.end.p0(i64 24, ptr %42) #7
  br label %552

520:                                              ; preds = %430, %409
  br label %534

521:                                              ; preds = %366, %363
  %522 = getelementptr inbounds %"class.NOMAD_4_3::QuadModelOptimize", ptr %59, i32 0, i32 7
  %523 = load i32, ptr %30, align 4, !tbaa !11
  %524 = sext i32 %523 to i64
  %525 = invoke noundef nonnull align 8 dereferenceable(17) ptr @_ZNK9NOMAD_4_313ArrayOfDoubleixEm(ptr noundef nonnull align 8 dereferenceable(24) %522, i64 noundef %524)
          to label %526 unwind label %431

526:                                              ; preds = %521
  %527 = getelementptr inbounds %"class.NOMAD_4_3::QuadModelOptimize", ptr %59, i32 0, i32 8
  %528 = load i32, ptr %30, align 4, !tbaa !11
  %529 = sext i32 %528 to i64
  %530 = invoke noundef nonnull align 8 dereferenceable(17) ptr @_ZNK9NOMAD_4_313ArrayOfDoubleixEm(ptr noundef nonnull align 8 dereferenceable(24) %527, i64 noundef %529)
          to label %531 unwind label %431

531:                                              ; preds = %526
  %532 = invoke noundef nonnull align 8 dereferenceable(17) ptr @_ZN9NOMAD_4_36DoubleaSERKS0_(ptr noundef nonnull align 8 dereferenceable(17) %530, ptr noundef nonnull align 8 dereferenceable(17) %525)
          to label %533 unwind label %431

533:                                              ; preds = %531
  br label %534

534:                                              ; preds = %533, %520
  %535 = getelementptr inbounds %"class.NOMAD_4_3::QuadModelOptimize", ptr %59, i32 0, i32 5
  %536 = load i32, ptr %30, align 4, !tbaa !11
  %537 = sext i32 %536 to i64
  %538 = invoke noundef nonnull align 8 dereferenceable(17) ptr @_ZNK9NOMAD_4_313ArrayOfDoubleixEm(ptr noundef nonnull align 8 dereferenceable(24) %535, i64 noundef %537)
          to label %539 unwind label %431

539:                                              ; preds = %534
  %540 = invoke noundef nonnull align 8 dereferenceable(17) ptr @_ZN9NOMAD_4_36DoubleaSERKS0_(ptr noundef nonnull align 8 dereferenceable(17) %538, ptr noundef nonnull align 8 dereferenceable(17) %16)
          to label %541 unwind label %431

541:                                              ; preds = %539
  %542 = getelementptr inbounds %"class.NOMAD_4_3::QuadModelOptimize", ptr %59, i32 0, i32 6
  %543 = load i32, ptr %30, align 4, !tbaa !11
  %544 = sext i32 %543 to i64
  %545 = invoke noundef nonnull align 8 dereferenceable(17) ptr @_ZNK9NOMAD_4_313ArrayOfDoubleixEm(ptr noundef nonnull align 8 dereferenceable(24) %542, i64 noundef %544)
          to label %546 unwind label %431

546:                                              ; preds = %541
  %547 = invoke noundef nonnull align 8 dereferenceable(17) ptr @_ZN9NOMAD_4_36DoubleaSERKS0_(ptr noundef nonnull align 8 dereferenceable(17) %545, ptr noundef nonnull align 8 dereferenceable(17) %17)
          to label %548 unwind label %431

548:                                              ; preds = %546
  br label %549

549:                                              ; preds = %548
  %550 = load i32, ptr %30, align 4, !tbaa !11
  %551 = add nsw i32 %550, 1
  store i32 %551, ptr %30, align 4, !tbaa !11
  br label %333, !llvm.loop !69

552:                                              ; preds = %519, %510, %501, %477, %453, %431
  call void @llvm.lifetime.end.p0(i64 4, ptr %30) #7
  call void @_ZN9NOMAD_4_36DoubleD1Ev(ptr noundef nonnull align 8 dereferenceable(17) %27) #7
  br label %554

553:                                              ; preds = %337
  call void @_ZN9NOMAD_4_36DoubleD1Ev(ptr noundef nonnull align 8 dereferenceable(17) %27) #7
  call void @llvm.lifetime.end.p0(i64 24, ptr %27) #7
  br label %555

554:                                              ; preds = %552, %346
  call void @llvm.lifetime.end.p0(i64 24, ptr %27) #7
  br label %647

555:                                              ; preds = %553, %322
  call void @llvm.lifetime.start.p0(i64 4, ptr %43) #7
  store i32 7, ptr %43, align 4, !tbaa !70
  %556 = invoke noundef zeroext i1 @_ZN9NOMAD_4_311OutputQueue9GoodLevelERKNS_11OutputLevelE(ptr noundef nonnull align 4 dereferenceable(4) %43)
          to label %557 unwind label %579

557:                                              ; preds = %555
  call void @llvm.lifetime.end.p0(i64 4, ptr %43) #7
  br i1 %556, label %558, label %646

558:                                              ; preds = %557
  call void @llvm.lifetime.start.p0(i64 32, ptr %44) #7
  call void @llvm.lifetime.start.p0(i64 32, ptr %45) #7
  %559 = getelementptr inbounds %"class.NOMAD_4_3::QuadModelOptimize", ptr %59, i32 0, i32 5
  call void @llvm.lifetime.start.p0(i64 24, ptr %46) #7
  call void @llvm.lifetime.start.p0(i64 24, ptr %47) #7
  invoke void @_ZN9NOMAD_4_36DoubleC1Ev(ptr noundef nonnull align 8 dereferenceable(17) %47)
          to label %560 unwind label %583

560:                                              ; preds = %558
  invoke void @_ZN9NOMAD_4_313ArrayOfDoubleC1EmRKNS_6DoubleE(ptr noundef nonnull align 8 dereferenceable(24) %46, i64 noundef 0, ptr noundef nonnull align 8 dereferenceable(17) %47)
          to label %561 unwind label %587

561:                                              ; preds = %560
  call void @llvm.lifetime.start.p0(i64 32, ptr %48) #7
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2Ev(ptr noundef nonnull align 8 dereferenceable(32) %48) #7
  invoke void @_ZNK9NOMAD_4_313ArrayOfDouble7displayERKS0_RKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE(ptr dead_on_unwind writable sret(%"class.std::__cxx11::basic_string") align 8 %45, ptr noundef nonnull align 8 dereferenceable(24) %559, ptr noundef nonnull align 8 dereferenceable(24) %46, ptr noundef nonnull align 8 dereferenceable(32) %48)
          to label %562 unwind label %591

562:                                              ; preds = %561
  invoke void @_ZStplIcSt11char_traitsIcESaIcEENSt7__cxx1112basic_stringIT_T0_T1_EEPKS5_OS8_(ptr dead_on_unwind writable sret(%"class.std::__cxx11::basic_string") align 8 %44, ptr noundef @.str.52, ptr noundef nonnull align 8 dereferenceable(32) %45)
          to label %563 unwind label %595

563:                                              ; preds = %562
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %45) #7
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %48) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr %48) #7
  call void @_ZN9NOMAD_4_313ArrayOfDoubleD1Ev(ptr noundef nonnull align 8 dereferenceable(24) %46) #7
  call void @_ZN9NOMAD_4_36DoubleD1Ev(ptr noundef nonnull align 8 dereferenceable(17) %47) #7
  call void @llvm.lifetime.end.p0(i64 24, ptr %47) #7
  call void @llvm.lifetime.end.p0(i64 24, ptr %46) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr %45) #7
  invoke void @_ZNK9NOMAD_4_34Step13AddOutputInfoERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEENS_11OutputLevelE(ptr noundef nonnull align 8 dereferenceable(140) %59, ptr noundef nonnull align 8 dereferenceable(32) %44, i32 noundef 7)
          to label %564 unwind label %602

564:                                              ; preds = %563
  call void @llvm.lifetime.start.p0(i64 32, ptr %49) #7
  call void @llvm.lifetime.start.p0(i64 32, ptr %50) #7
  %565 = getelementptr inbounds %"class.NOMAD_4_3::QuadModelOptimize", ptr %59, i32 0, i32 6
  call void @llvm.lifetime.start.p0(i64 24, ptr %51) #7
  call void @llvm.lifetime.start.p0(i64 24, ptr %52) #7
  invoke void @_ZN9NOMAD_4_36DoubleC1Ev(ptr noundef nonnull align 8 dereferenceable(17) %52)
          to label %566 unwind label %606

566:                                              ; preds = %564
  invoke void @_ZN9NOMAD_4_313ArrayOfDoubleC1EmRKNS_6DoubleE(ptr noundef nonnull align 8 dereferenceable(24) %51, i64 noundef 0, ptr noundef nonnull align 8 dereferenceable(17) %52)
          to label %567 unwind label %610

567:                                              ; preds = %566
  call void @llvm.lifetime.start.p0(i64 32, ptr %53) #7
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2Ev(ptr noundef nonnull align 8 dereferenceable(32) %53) #7
  invoke void @_ZNK9NOMAD_4_313ArrayOfDouble7displayERKS0_RKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE(ptr dead_on_unwind writable sret(%"class.std::__cxx11::basic_string") align 8 %50, ptr noundef nonnull align 8 dereferenceable(24) %565, ptr noundef nonnull align 8 dereferenceable(24) %51, ptr noundef nonnull align 8 dereferenceable(32) %53)
          to label %568 unwind label %614

568:                                              ; preds = %567
  invoke void @_ZStplIcSt11char_traitsIcESaIcEENSt7__cxx1112basic_stringIT_T0_T1_EEPKS5_OS8_(ptr dead_on_unwind writable sret(%"class.std::__cxx11::basic_string") align 8 %49, ptr noundef @.str.53, ptr noundef nonnull align 8 dereferenceable(32) %50)
          to label %569 unwind label %618

569:                                              ; preds = %568
  %570 = call noundef nonnull align 8 dereferenceable(32) ptr @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEaSEOS4_(ptr noundef nonnull align 8 dereferenceable(32) %44, ptr noundef nonnull align 8 dereferenceable(32) %49) #7
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %49) #7
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %50) #7
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %53) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr %53) #7
  call void @_ZN9NOMAD_4_313ArrayOfDoubleD1Ev(ptr noundef nonnull align 8 dereferenceable(24) %51) #7
  call void @_ZN9NOMAD_4_36DoubleD1Ev(ptr noundef nonnull align 8 dereferenceable(17) %52) #7
  call void @llvm.lifetime.end.p0(i64 24, ptr %52) #7
  call void @llvm.lifetime.end.p0(i64 24, ptr %51) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr %50) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr %49) #7
  invoke void @_ZNK9NOMAD_4_34Step13AddOutputInfoERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEENS_11OutputLevelE(ptr noundef nonnull align 8 dereferenceable(140) %59, ptr noundef nonnull align 8 dereferenceable(32) %44, i32 noundef 7)
          to label %571 unwind label %602

571:                                              ; preds = %569
  call void @llvm.lifetime.start.p0(i64 32, ptr %54) #7
  call void @llvm.lifetime.start.p0(i64 32, ptr %55) #7
  %572 = getelementptr inbounds %"class.NOMAD_4_3::QuadModelOptimize", ptr %59, i32 0, i32 8
  call void @llvm.lifetime.start.p0(i64 24, ptr %56) #7
  call void @llvm.lifetime.start.p0(i64 24, ptr %57) #7
  invoke void @_ZN9NOMAD_4_36DoubleC1Ev(ptr noundef nonnull align 8 dereferenceable(17) %57)
          to label %573 unwind label %625

573:                                              ; preds = %571
  invoke void @_ZN9NOMAD_4_313ArrayOfDoubleC1EmRKNS_6DoubleE(ptr noundef nonnull align 8 dereferenceable(24) %56, i64 noundef 0, ptr noundef nonnull align 8 dereferenceable(17) %57)
          to label %574 unwind label %629

574:                                              ; preds = %573
  call void @llvm.lifetime.start.p0(i64 32, ptr %58) #7
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2Ev(ptr noundef nonnull align 8 dereferenceable(32) %58) #7
  invoke void @_ZNK9NOMAD_4_35Point7displayERKNS_13ArrayOfDoubleERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE(ptr dead_on_unwind writable sret(%"class.std::__cxx11::basic_string") align 8 %55, ptr noundef nonnull align 8 dereferenceable(24) %572, ptr noundef nonnull align 8 dereferenceable(24) %56, ptr noundef nonnull align 8 dereferenceable(32) %58)
          to label %575 unwind label %633

575:                                              ; preds = %574
  invoke void @_ZStplIcSt11char_traitsIcESaIcEENSt7__cxx1112basic_stringIT_T0_T1_EEPKS5_OS8_(ptr dead_on_unwind writable sret(%"class.std::__cxx11::basic_string") align 8 %54, ptr noundef @.str.54, ptr noundef nonnull align 8 dereferenceable(32) %55)
          to label %576 unwind label %637

576:                                              ; preds = %575
  %577 = call noundef nonnull align 8 dereferenceable(32) ptr @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEaSEOS4_(ptr noundef nonnull align 8 dereferenceable(32) %44, ptr noundef nonnull align 8 dereferenceable(32) %54) #7
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %54) #7
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %55) #7
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %58) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr %58) #7
  call void @_ZN9NOMAD_4_313ArrayOfDoubleD1Ev(ptr noundef nonnull align 8 dereferenceable(24) %56) #7
  call void @_ZN9NOMAD_4_36DoubleD1Ev(ptr noundef nonnull align 8 dereferenceable(17) %57) #7
  call void @llvm.lifetime.end.p0(i64 24, ptr %57) #7
  call void @llvm.lifetime.end.p0(i64 24, ptr %56) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr %55) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr %54) #7
  invoke void @_ZNK9NOMAD_4_34Step13AddOutputInfoERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEENS_11OutputLevelE(ptr noundef nonnull align 8 dereferenceable(140) %59, ptr noundef nonnull align 8 dereferenceable(32) %44, i32 noundef 7)
          to label %578 unwind label %602

578:                                              ; preds = %576
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %44) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr %44) #7
  br label %646

579:                                              ; preds = %555
  %580 = landingpad { ptr, i32 }
          cleanup
  %581 = extractvalue { ptr, i32 } %580, 0
  store ptr %581, ptr %7, align 8
  %582 = extractvalue { ptr, i32 } %580, 1
  store i32 %582, ptr %8, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %43) #7
  br label %647

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

587:                                              ; preds = %560
  %588 = landingpad { ptr, i32 }
          cleanup
  %589 = extractvalue { ptr, i32 } %588, 0
  store ptr %589, ptr %7, align 8
  %590 = extractvalue { ptr, i32 } %588, 1
  store i32 %590, ptr %8, align 4
  br label %600

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

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

599:                                              ; preds = %595, %591
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %48) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr %48) #7
  call void @_ZN9NOMAD_4_313ArrayOfDoubleD1Ev(ptr noundef nonnull align 8 dereferenceable(24) %46) #7
  br label %600

600:                                              ; preds = %599, %587
  call void @_ZN9NOMAD_4_36DoubleD1Ev(ptr noundef nonnull align 8 dereferenceable(17) %47) #7
  br label %601

601:                                              ; preds = %600, %583
  call void @llvm.lifetime.end.p0(i64 24, ptr %47) #7
  call void @llvm.lifetime.end.p0(i64 24, ptr %46) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr %45) #7
  br label %645

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

606:                                              ; preds = %564
  %607 = landingpad { ptr, i32 }
          cleanup
  %608 = extractvalue { ptr, i32 } %607, 0
  store ptr %608, ptr %7, align 8
  %609 = extractvalue { ptr, i32 } %607, 1
  store i32 %609, ptr %8, align 4
  br label %624

610:                                              ; preds = %566
  %611 = landingpad { ptr, i32 }
          cleanup
  %612 = extractvalue { ptr, i32 } %611, 0
  store ptr %612, ptr %7, align 8
  %613 = extractvalue { ptr, i32 } %611, 1
  store i32 %613, ptr %8, align 4
  br label %623

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

618:                                              ; preds = %568
  %619 = landingpad { ptr, i32 }
          cleanup
  %620 = extractvalue { ptr, i32 } %619, 0
  store ptr %620, ptr %7, align 8
  %621 = extractvalue { ptr, i32 } %619, 1
  store i32 %621, ptr %8, align 4
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %50) #7
  br label %622

622:                                              ; preds = %618, %614
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %53) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr %53) #7
  call void @_ZN9NOMAD_4_313ArrayOfDoubleD1Ev(ptr noundef nonnull align 8 dereferenceable(24) %51) #7
  br label %623

623:                                              ; preds = %622, %610
  call void @_ZN9NOMAD_4_36DoubleD1Ev(ptr noundef nonnull align 8 dereferenceable(17) %52) #7
  br label %624

624:                                              ; preds = %623, %606
  call void @llvm.lifetime.end.p0(i64 24, ptr %52) #7
  call void @llvm.lifetime.end.p0(i64 24, ptr %51) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr %50) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr %49) #7
  br label %644

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

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

633:                                              ; preds = %574
  %634 = landingpad { ptr, i32 }
          cleanup
  %635 = extractvalue { ptr, i32 } %634, 0
  store ptr %635, ptr %7, align 8
  %636 = extractvalue { ptr, i32 } %634, 1
  store i32 %636, ptr %8, align 4
  br label %641

637:                                              ; preds = %575
  %638 = landingpad { ptr, i32 }
          cleanup
  %639 = extractvalue { ptr, i32 } %638, 0
  store ptr %639, ptr %7, align 8
  %640 = extractvalue { ptr, i32 } %638, 1
  store i32 %640, ptr %8, align 4
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %55) #7
  br label %641

641:                                              ; preds = %637, %633
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %58) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr %58) #7
  call void @_ZN9NOMAD_4_313ArrayOfDoubleD1Ev(ptr noundef nonnull align 8 dereferenceable(24) %56) #7
  br label %642

642:                                              ; preds = %641, %629
  call void @_ZN9NOMAD_4_36DoubleD1Ev(ptr noundef nonnull align 8 dereferenceable(17) %57) #7
  br label %643

643:                                              ; preds = %642, %625
  call void @llvm.lifetime.end.p0(i64 24, ptr %57) #7
  call void @llvm.lifetime.end.p0(i64 24, ptr %56) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr %55) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr %54) #7
  br label %644

644:                                              ; preds = %643, %624, %602
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %44) #7
  br label %645

645:                                              ; preds = %644, %601
  call void @llvm.lifetime.end.p0(i64 32, ptr %44) #7
  br label %647

646:                                              ; preds = %578, %557
  call void @llvm.lifetime.end.p0(i64 1, ptr %18) #7
  call void @_ZN9NOMAD_4_36DoubleD1Ev(ptr noundef nonnull align 8 dereferenceable(17) %17) #7
  call void @llvm.lifetime.end.p0(i64 24, ptr %17) #7
  call void @_ZN9NOMAD_4_36DoubleD1Ev(ptr noundef nonnull align 8 dereferenceable(17) %16) #7
  call void @llvm.lifetime.end.p0(i64 24, ptr %16) #7
  call void @llvm.lifetime.end.p0(i64 4, ptr %15) #7
  call void @llvm.lifetime.end.p0(i64 4, ptr %14) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %4) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %3) #7
  ret void

647:                                              ; preds = %645, %579, %554, %321
  call void @llvm.lifetime.end.p0(i64 1, ptr %18) #7
  call void @_ZN9NOMAD_4_36DoubleD1Ev(ptr noundef nonnull align 8 dereferenceable(17) %17) #7
  br label %648

648:                                              ; preds = %647, %117
  call void @llvm.lifetime.end.p0(i64 24, ptr %17) #7
  call void @_ZN9NOMAD_4_36DoubleD1Ev(ptr noundef nonnull align 8 dereferenceable(17) %16) #7
  call void @llvm.lifetime.end.p0(i64 24, ptr %16) #7
  call void @llvm.lifetime.end.p0(i64 4, ptr %15) #7
  call void @llvm.lifetime.end.p0(i64 4, ptr %14) #7
  br label %649

649:                                              ; preds = %648, %105, %88
  call void @llvm.lifetime.end.p0(i64 8, ptr %4) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %3) #7
  br label %650

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

655:                                              ; preds = %79
  unreachable
}

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

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

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

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

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

; Function Attrs: inlinehint mustprogress nounwind uwtable
declare dso_local noundef i32 @_ZNK7SGTELIB6Matrix11get_nb_colsEv(ptr noundef nonnull align 8 dereferenceable(56)) #6 align 2

; Function Attrs: inlinehint mustprogress nounwind uwtable
declare dso_local noundef i32 @_ZNK7SGTELIB6Matrix11get_nb_rowsEv(ptr noundef nonnull align 8 dereferenceable(56)) #6 align 2

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

declare noundef nonnull align 8 dereferenceable(17) ptr @_ZN9NOMAD_4_36DoubleaSERKS0_(ptr noundef nonnull align 8 dereferenceable(17), ptr noundef nonnull align 8 dereferenceable(17)) #4

; Function Attrs: inlinehint mustprogress nounwind uwtable
declare dso_local noundef double @_ZNK7SGTELIB6Matrix3getEii(ptr noundef nonnull align 8 dereferenceable(56), i32 noundef, i32 noundef) #6 align 2

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

declare noundef nonnull align 8 dereferenceable(8) ptr @_ZNK9NOMAD_4_36Double8todoubleEv(ptr noundef nonnull align 8 dereferenceable(17)) #4

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

declare noundef nonnull align 8 dereferenceable(17) ptr @_ZN9NOMAD_4_36DoubleaSEd(ptr noundef nonnull align 8 dereferenceable(17), double noundef) #4

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

declare void @_ZN9NOMAD_4_36DoubleC1ERKS0_(ptr noundef nonnull align 8 dereferenceable(17), ptr noundef nonnull align 8 dereferenceable(17)) unnamed_addr #4

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

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

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

declare void @_ZNK9NOMAD_4_313ArrayOfDouble7displayERKS0_RKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE(ptr dead_on_unwind writable sret(%"class.std::__cxx11::basic_string") align 8, ptr noundef nonnull align 8 dereferenceable(24), ptr noundef nonnull align 8 dereferenceable(24), ptr noundef nonnull align 8 dereferenceable(32)) unnamed_addr #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 = { inlinehint mustprogress uwtable "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }
attributes #4 = { "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }
attributes #5 = { 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 #6 = { inlinehint mustprogress nounwind uwtable "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }
attributes #7 = { nounwind }
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 = !{!"long", !7, i64 0}
!11 = !{!12, !12, i64 0}
!12 = !{!"int", !7, i64 0}
!13 = !{!14, !14, i64 0}
!14 = !{!"bool", !7, i64 0}
!15 = !{!16, !16, i64 0}
!16 = !{!"double", !7, i64 0}
!17 = distinct !{!17, !18}
!18 = !{!"llvm.loop.mustprogress"}
!19 = !{!20, !14, i64 688}
!20 = !{!"_ZTSN9NOMAD_4_317QuadModelOptimizeE", !21, i64 0, !40, i64 144, !63, i64 536, !64, i64 544, !64, i64 568, !65, i64 592, !65, i64 616, !28, i64 640, !26, i64 656, !28, i64 672, !14, i64 688}
!21 = !{!"_ZTSN9NOMAD_4_34StepE", !6, i64 8, !22, i64 16, !23, i64 24, !26, i64 40, !28, i64 56, !30, i64 72, !39, i64 136}
!22 = !{!"_ZTSN9NOMAD_4_38StepTypeE", !7, i64 0}
!23 = !{!"_ZTSSt10shared_ptrIN9NOMAD_4_314AllStopReasonsEE", !24, i64 0}
!24 = !{!"_ZTSSt12__shared_ptrIN9NOMAD_4_314AllStopReasonsELN9__gnu_cxx12_Lock_policyE2EE", !6, i64 0, !25, i64 8}
!25 = !{!"_ZTSSt14__shared_countILN9__gnu_cxx12_Lock_policyE2EE", !6, i64 0}
!26 = !{!"_ZTSSt10shared_ptrIN9NOMAD_4_313RunParametersEE", !27, i64 0}
!27 = !{!"_ZTSSt12__shared_ptrIN9NOMAD_4_313RunParametersELN9__gnu_cxx12_Lock_policyE2EE", !6, i64 0, !25, i64 8}
!28 = !{!"_ZTSSt10shared_ptrIN9NOMAD_4_312PbParametersEE", !29, i64 0}
!29 = !{!"_ZTSSt12__shared_ptrIN9NOMAD_4_312PbParametersELN9__gnu_cxx12_Lock_policyE2EE", !6, i64 0, !25, i64 8}
!30 = !{!"_ZTSN9NOMAD_4_312SuccessStatsE", !31, i64 0, !10, i64 48, !10, i64 56}
!31 = !{!"_ZTSSt3mapISt4pairIN9NOMAD_4_38StepTypeENS1_11SuccessTypeEEmSt4lessIS4_ESaIS0_IKS4_mEEE", !32, i64 0}
!32 = !{!"_ZTSSt8_Rb_treeISt4pairIN9NOMAD_4_38StepTypeENS1_11SuccessTypeEES0_IKS4_mESt10_Select1stIS6_ESt4lessIS4_ESaIS6_EE", !33, i64 0}
!33 = !{!"_ZTSNSt8_Rb_treeISt4pairIN9NOMAD_4_38StepTypeENS1_11SuccessTypeEES0_IKS4_mESt10_Select1stIS6_ESt4lessIS4_ESaIS6_EE13_Rb_tree_implISA_Lb1EEE", !34, i64 0, !36, i64 8}
!34 = !{!"_ZTSSt20_Rb_tree_key_compareISt4lessISt4pairIN9NOMAD_4_38StepTypeENS2_11SuccessTypeEEEE", !35, i64 0}
!35 = !{!"_ZTSSt4lessISt4pairIN9NOMAD_4_38StepTypeENS1_11SuccessTypeEEE"}
!36 = !{!"_ZTSSt15_Rb_tree_header", !37, i64 0, !10, i64 32}
!37 = !{!"_ZTSSt18_Rb_tree_node_base", !38, i64 0, !6, i64 8, !6, i64 16, !6, i64 24}
!38 = !{!"_ZTSSt14_Rb_tree_color", !7, i64 0}
!39 = !{!"_ZTSN9NOMAD_4_311SuccessTypeE", !7, i64 0}
!40 = !{!"_ZTSN9NOMAD_4_323QuadModelIterationUtilsE", !41, i64 0, !57, i64 328, !57, i64 344, !59, i64 360, !61, i64 376}
!41 = !{!"_ZTSN9NOMAD_4_314IterationUtilsE", !42, i64 8, !10, i64 56, !6, i64 64, !6, i64 72, !6, i64 80, !47, i64 88, !14, i64 320, !39, i64 324}
!42 = !{!"_ZTSSt3setIN9NOMAD_4_39EvalPointENS0_16EvalPointCompareESaIS1_EE", !43, i64 0}
!43 = !{!"_ZTSSt8_Rb_treeIN9NOMAD_4_39EvalPointES1_St9_IdentityIS1_ENS0_16EvalPointCompareESaIS1_EE", !44, i64 0}
!44 = !{!"_ZTSNSt8_Rb_treeIN9NOMAD_4_39EvalPointES1_St9_IdentityIS1_ENS0_16EvalPointCompareESaIS1_EE13_Rb_tree_implIS4_Lb1EEE", !45, i64 0, !36, i64 8}
!45 = !{!"_ZTSSt20_Rb_tree_key_compareIN9NOMAD_4_316EvalPointCompareEE", !46, i64 0}
!46 = !{!"_ZTSN9NOMAD_4_316EvalPointCompareE"}
!47 = !{!"_ZTSN9NOMAD_4_315TrialPointStatsE", !6, i64 0, !48, i64 8, !52, i64 32, !52, i64 80, !52, i64 128, !52, i64 176, !10, i64 224}
!48 = !{!"_ZTSSt6vectorIN9NOMAD_4_38EvalTypeESaIS1_EE", !49, i64 0}
!49 = !{!"_ZTSSt12_Vector_baseIN9NOMAD_4_38EvalTypeESaIS1_EE", !50, i64 0}
!50 = !{!"_ZTSNSt12_Vector_baseIN9NOMAD_4_38EvalTypeESaIS1_EE12_Vector_implE", !51, i64 0}
!51 = !{!"_ZTSNSt12_Vector_baseIN9NOMAD_4_38EvalTypeESaIS1_EE17_Vector_impl_dataE", !6, i64 0, !6, i64 8, !6, i64 16}
!52 = !{!"_ZTSSt3mapIN9NOMAD_4_38EvalTypeEmSt4lessIS1_ESaISt4pairIKS1_mEEE", !53, i64 0}
!53 = !{!"_ZTSSt8_Rb_treeIN9NOMAD_4_38EvalTypeESt4pairIKS1_mESt10_Select1stIS4_ESt4lessIS1_ESaIS4_EE", !54, i64 0}
!54 = !{!"_ZTSNSt8_Rb_treeIN9NOMAD_4_38EvalTypeESt4pairIKS1_mESt10_Select1stIS4_ESt4lessIS1_ESaIS4_EE13_Rb_tree_implIS8_Lb1EEE", !55, i64 0, !36, i64 8}
!55 = !{!"_ZTSSt20_Rb_tree_key_compareISt4lessIN9NOMAD_4_38EvalTypeEEE", !56, i64 0}
!56 = !{!"_ZTSSt4lessIN9NOMAD_4_38EvalTypeEE"}
!57 = !{!"_ZTSSt10shared_ptrIN9NOMAD_4_39EvalPointEE", !58, i64 0}
!58 = !{!"_ZTSSt12__shared_ptrIN9NOMAD_4_39EvalPointELN9__gnu_cxx12_Lock_policyE2EE", !6, i64 0, !25, i64 8}
!59 = !{!"_ZTSSt10shared_ptrIN7SGTELIB11TrainingSetEE", !60, i64 0}
!60 = !{!"_ZTSSt12__shared_ptrIN7SGTELIB11TrainingSetELN9__gnu_cxx12_Lock_policyE2EE", !6, i64 0, !25, i64 8}
!61 = !{!"_ZTSSt10shared_ptrIN7SGTELIB9SurrogateEE", !62, i64 0}
!62 = !{!"_ZTSSt12__shared_ptrIN7SGTELIB9SurrogateELN9__gnu_cxx12_Lock_policyE2EE", !6, i64 0, !25, i64 8}
!63 = !{!"_ZTSN9NOMAD_4_311OutputLevelE", !7, i64 0}
!64 = !{!"_ZTSN9NOMAD_4_313ArrayOfDoubleE", !10, i64 8, !6, i64 16}
!65 = !{!"_ZTSN9NOMAD_4_35PointE", !64, i64 0}
!66 = !{i8 0, i8 2}
!67 = !{}
!68 = distinct !{!68, !18}
!69 = distinct !{!69, !18}
!70 = !{!63, !63, i64 0}


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

%"class.std::__cxx11::basic_string" = type { %"struct.std::__cxx11::basic_string<char>::_Alloc_hider", i64, %union.anon }
%"struct.std::__cxx11::basic_string<char>::_Alloc_hider" = type { ptr }
%union.anon = type { i64, [8 x i8] }
%"class.std::allocator" = type { i8 }
%"class.NOMAD_4_3::Double" = type <{ ptr, double, i8, [7 x i8] }>
%"class.NOMAD_4_3::ArrayOfDouble" = type { ptr, i64, ptr }

@.str.9 = external hidden unnamed_addr constant [100 x i8], align 1
@_ZTIN9NOMAD_4_39ExceptionE = external constant ptr
@.str.49 = external hidden unnamed_addr constant [10 x i8], align 1
@.str.50 = external hidden unnamed_addr constant [52 x i8], align 1
@.str.51 = external hidden unnamed_addr constant [41 x i8], align 1
@.str.52 = external hidden unnamed_addr constant [20 x i8], align 1
@.str.53 = external hidden unnamed_addr constant [20 x i8], align 1
@.str.54 = external hidden unnamed_addr constant [15 x i8], align 1

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

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

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

declare i32 @__gxx_personality_v0(...)

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

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

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

declare ptr @__cxa_allocate_exception(i64) local_unnamed_addr

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

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

declare void @__cxa_free_exception(ptr) local_unnamed_addr

; Function Attrs: mustprogress nounwind uwtable
declare dso_local noundef ptr @_ZNKSt19__shared_ptr_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 zeroext i1 @_ZN9NOMAD_4_311OutputQueue9GoodLevelERKNS_11OutputLevelE(ptr noundef nonnull align 4 dereferenceable(4)) local_unnamed_addr #2 align 2

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

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

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

; Function Attrs: mustprogress nounwind uwtable
declare noundef nonnull align 8 dereferenceable(32) ptr @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEaSEOS4_(ptr noundef nonnull align 8 dereferenceable(32), ptr noundef nonnull align 8 dereferenceable(32)) local_unnamed_addr #1 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 #4

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

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

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

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

; Function Attrs: mustprogress uwtable
define dso_local void @_ZN9NOMAD_4_317QuadModelOptimize25setModelBoundsAndFixedVarEv(ptr noundef nonnull align 8 dereferenceable(689) %0) local_unnamed_addr #2 align 2 personality ptr @__gxx_personality_v0 {
  %2 = alloca %"class.std::__cxx11::basic_string", align 8
  %3 = alloca %"class.std::allocator", align 1
  %4 = alloca %"class.std::__cxx11::basic_string", align 8
  %5 = alloca %"class.std::allocator", align 1
  %6 = alloca %"class.std::__cxx11::basic_string", align 8
  %7 = alloca %"class.std::allocator", align 1
  %8 = alloca %"class.NOMAD_4_3::Double", align 8
  %9 = alloca %"class.NOMAD_4_3::Double", align 8
  %10 = alloca %"class.NOMAD_4_3::Double", align 8
  %11 = alloca double, align 8
  %12 = alloca %"class.NOMAD_4_3::Double", align 8
  %13 = alloca %"class.NOMAD_4_3::Double", align 8
  %14 = alloca %"class.NOMAD_4_3::Double", align 8
  %15 = alloca %"class.NOMAD_4_3::Double", align 8
  %16 = alloca %"class.std::__cxx11::basic_string", align 8
  %17 = alloca %"class.std::allocator", align 1
  %18 = alloca %"class.NOMAD_4_3::Double", align 8
  %19 = alloca %"class.NOMAD_4_3::Double", align 8
  %20 = alloca %"class.NOMAD_4_3::Double", align 8
  %21 = alloca 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.NOMAD_4_3::Double", align 8
  %30 = alloca i32, align 4
  %31 = alloca %"class.std::__cxx11::basic_string", align 8
  %32 = alloca %"class.std::__cxx11::basic_string", align 8
  %33 = alloca %"class.NOMAD_4_3::ArrayOfDouble", align 8
  %34 = alloca %"class.NOMAD_4_3::Double", align 8
  %35 = alloca %"class.std::__cxx11::basic_string", align 8
  %36 = alloca %"class.std::__cxx11::basic_string", align 8
  %37 = alloca %"class.std::__cxx11::basic_string", align 8
  %38 = alloca %"class.NOMAD_4_3::ArrayOfDouble", align 8
  %39 = alloca %"class.NOMAD_4_3::Double", align 8
  %40 = alloca %"class.std::__cxx11::basic_string", align 8
  %41 = alloca %"class.std::__cxx11::basic_string", align 8
  %42 = alloca %"class.std::__cxx11::basic_string", align 8
  %43 = alloca %"class.NOMAD_4_3::ArrayOfDouble", align 8
  %44 = alloca %"class.NOMAD_4_3::Double", align 8
  %45 = alloca %"class.std::__cxx11::basic_string", align 8
  %46 = getelementptr inbounds i8, ptr %0, i64 504
  %47 = tail call noundef ptr @_ZNKSt19__shared_ptr_accessIN7SGTELIB11TrainingSetELN9__gnu_cxx12_Lock_policyE2ELb0ELb0EEptEv(ptr noundef nonnull align 1 dereferenceable(1) %46) #7
  %48 = tail call noundef nonnull align 8 dereferenceable(56) ptr @_ZNK7SGTELIB11TrainingSet12get_matrix_XEv(ptr noundef nonnull align 8 dereferenceable(504) %47)
  %49 = getelementptr inbounds i8, ptr %0, i64 56
  %50 = tail call noundef ptr @_ZNKSt19__shared_ptr_accessIN9NOMAD_4_312PbParametersELN9__gnu_cxx12_Lock_policyE2ELb0ELb0EEptEv(ptr noundef nonnull align 1 dereferenceable(1) %49) #7
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %2) #7
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %3) #7
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %3) #7
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %2, ptr noundef nonnull @.str.49, ptr noundef nonnull align 1 dereferenceable(1) %3)
          to label %51 unwind label %62

51:                                               ; preds = %1
  %52 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNK9NOMAD_4_310Parameters17getAttributeValueImEERKT_RKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEb(ptr noundef nonnull align 8 dereferenceable(496) %50, ptr noundef nonnull align 8 dereferenceable(32) %2, i1 noundef zeroext false)
          to label %53 unwind label %64

53:                                               ; preds = %51
  %54 = load i64, ptr %52, align 8, !tbaa !5
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %2) #7
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %3) #7
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %3) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %2) #7
  %55 = call noundef i32 @_ZNK7SGTELIB6Matrix11get_nb_colsEv(ptr noundef nonnull align 8 dereferenceable(56) %48)
  %56 = sext i32 %55 to i64
  %.not = icmp eq i64 %54, %56
  br i1 %.not, label %74, label %57

57:                                               ; preds = %53
  %58 = call ptr @__cxa_allocate_exception(i64 112) #7
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %4) #7
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %5) #7
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %5) #7
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %4, ptr noundef nonnull @.str.9, ptr noundef nonnull align 1 dereferenceable(1) %5)
          to label %59 unwind label %.thread

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

60:                                               ; preds = %59
  invoke void @_ZN9NOMAD_4_39ExceptionC2ERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEmS8_(ptr noundef nonnull align 8 dereferenceable(112) %58, ptr noundef nonnull align 8 dereferenceable(32) %4, i64 noundef 377, ptr noundef nonnull align 8 dereferenceable(32) %6)
          to label %61 unwind label %70

61:                                               ; preds = %60
  invoke void @__cxa_throw(ptr nonnull %58, ptr nonnull @_ZTIN9NOMAD_4_39ExceptionE, ptr nonnull @_ZN9NOMAD_4_39ExceptionD2Ev) #8
          to label %402 unwind label %70

62:                                               ; preds = %1
  %63 = landingpad { ptr, i32 }
          cleanup
  br label %66

64:                                               ; preds = %51
  %65 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %2) #7
  br label %66

66:                                               ; preds = %64, %62
  %.pn = phi { ptr, i32 } [ %65, %64 ], [ %63, %62 ]
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %3) #7
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %3) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %2) #7
  br label %401

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

68:                                               ; preds = %59
  %69 = landingpad { ptr, i32 }
          cleanup
  br label %72

70:                                               ; preds = %61, %60
  %.087 = phi i1 [ false, %61 ], [ true, %60 ]
  %71 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %6) #7
  br label %72

72:                                               ; preds = %68, %70
  %.188 = phi i1 [ %.087, %70 ], [ true, %68 ]
  %.pn141 = phi { ptr, i32 } [ %71, %70 ], [ %69, %68 ]
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %7) #7
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %7) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %6) #7
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %4) #7
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %5) #7
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %5) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %4) #7
  br i1 %.188, label %73, label %401

73:                                               ; preds = %.thread, %72
  %.pn141.pn147 = phi { ptr, i32 } [ %67, %.thread ], [ %.pn141, %72 ]
  call void @__cxa_free_exception(ptr %58) #7
  br label %401

74:                                               ; preds = %53
  %75 = call noundef i32 @_ZNK7SGTELIB6Matrix11get_nb_colsEv(ptr noundef nonnull align 8 dereferenceable(56) %48)
  %76 = call noundef i32 @_ZNK7SGTELIB6Matrix11get_nb_rowsEv(ptr noundef nonnull align 8 dereferenceable(56) %48)
  call void @llvm.lifetime.start.p0(i64 24, ptr nonnull %8) #7
  call void @_ZN9NOMAD_4_36DoubleC1Ev(ptr noundef nonnull align 8 dereferenceable(17) %8)
  call void @llvm.lifetime.start.p0(i64 24, ptr nonnull %9) #7
  invoke void @_ZN9NOMAD_4_36DoubleC1Ev(ptr noundef nonnull align 8 dereferenceable(17) %9)
          to label %.preheader150 unwind label %87

.preheader150:                                    ; preds = %74
  %77 = icmp sgt i32 %75, 0
  br i1 %77, label %.lr.ph153, label %._crit_edge154

.lr.ph153:                                        ; preds = %.preheader150
  %78 = getelementptr inbounds i8, ptr %0, i64 544
  %79 = getelementptr inbounds i8, ptr %0, i64 568
  %80 = icmp sgt i32 %76, 0
  %81 = getelementptr inbounds i8, ptr %0, i64 688
  %82 = getelementptr inbounds i8, ptr %0, i64 616
  %83 = getelementptr inbounds i8, ptr %0, i64 592
  %wide.trip.count = zext nneg i32 %75 to i64
  br label %89

._crit_edge154:                                   ; preds = %195, %.preheader150
  %84 = getelementptr inbounds i8, ptr %0, i64 688
  %85 = load i8, ptr %84, align 8, !tbaa !9, !range !58, !noundef !59
  %86 = trunc nuw i8 %85 to i1
  br i1 %86, label %335, label %196

87:                                               ; preds = %74
  %88 = landingpad { ptr, i32 }
          cleanup
  br label %400

89:                                               ; preds = %.lr.ph153, %195
  %indvars.iv = phi i64 [ 0, %.lr.ph153 ], [ %indvars.iv.next, %195 ]
  %90 = invoke noundef nonnull align 8 dereferenceable(17) ptr @_ZNK9NOMAD_4_313ArrayOfDoubleixEm(ptr noundef nonnull align 8 dereferenceable(24) %78, i64 noundef %indvars.iv)
          to label %91 unwind label %99

91:                                               ; preds = %89
  %92 = invoke noundef nonnull align 8 dereferenceable(17) ptr @_ZN9NOMAD_4_36DoubleaSERKS0_(ptr noundef nonnull align 8 dereferenceable(17) %8, ptr noundef nonnull align 8 dereferenceable(17) %90)
          to label %93 unwind label %99

93:                                               ; preds = %91
  %94 = invoke noundef nonnull align 8 dereferenceable(17) ptr @_ZNK9NOMAD_4_313ArrayOfDoubleixEm(ptr noundef nonnull align 8 dereferenceable(24) %79, i64 noundef %indvars.iv)
          to label %95 unwind label %99

95:                                               ; preds = %93
  %96 = invoke noundef nonnull align 8 dereferenceable(17) ptr @_ZN9NOMAD_4_36DoubleaSERKS0_(ptr noundef nonnull align 8 dereferenceable(17) %9, ptr noundef nonnull align 8 dereferenceable(17) %94)
          to label %.preheader unwind label %99

.preheader:                                       ; preds = %95
  br i1 %80, label %.lr.ph.preheader, label %._crit_edge

.lr.ph.preheader:                                 ; preds = %.preheader
  %97 = trunc nuw nsw i64 %indvars.iv to i32
  br label %.lr.ph

._crit_edge:                                      ; preds = %128, %.preheader
  %98 = invoke noundef zeroext i1 @_ZN9NOMAD_4_3eqERKNS_6DoubleES2_(ptr noundef nonnull align 8 dereferenceable(17) %8, ptr noundef nonnull align 8 dereferenceable(17) %9)
          to label %131 unwind label %99

99:                                               ; preds = %.invoke, %193, %191, %189, %187, %185, %.thread149, %174, %172, %161, %159, %157, %134, %132, %._crit_edge, %95, %93, %91, %89
  %100 = landingpad { ptr, i32 }
          cleanup
  br label %399

.lr.ph:                                           ; preds = %.lr.ph.preheader, %128
  %.045151 = phi i32 [ %129, %128 ], [ 0, %.lr.ph.preheader ]
  call void @llvm.lifetime.start.p0(i64 24, ptr nonnull %10) #7
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %11) #7
  %101 = call noundef double @_ZNK7SGTELIB6Matrix3getEii(ptr noundef nonnull align 8 dereferenceable(56) %48, i32 noundef %.045151, i32 noundef %97)
  store double %101, ptr %11, align 8, !tbaa !60
  invoke void @_ZN9NOMAD_4_36DoubleC1ERKd(ptr noundef nonnull align 8 dereferenceable(17) %10, ptr noundef nonnull align 8 dereferenceable(8) %11)
          to label %102 unwind label %112

102:                                              ; preds = %.lr.ph
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %11) #7
  %103 = call noundef zeroext i1 @_ZNK9NOMAD_4_36Double9isDefinedEv(ptr noundef nonnull align 8 dereferenceable(17) %8)
  br i1 %103, label %104, label %.invoke167

104:                                              ; preds = %102
  %105 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNK9NOMAD_4_36Double8todoubleEv(ptr noundef nonnull align 8 dereferenceable(17) %10)
          to label %106 unwind label %114

106:                                              ; preds = %104
  %107 = load double, ptr %105, align 8, !tbaa !60
  %108 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNK9NOMAD_4_36Double8todoubleEv(ptr noundef nonnull align 8 dereferenceable(17) %8)
          to label %109 unwind label %114

109:                                              ; preds = %106
  %110 = load double, ptr %108, align 8, !tbaa !60
  %111 = fcmp olt double %107, %110
  br i1 %111, label %.invoke167, label %117

112:                                              ; preds = %.lr.ph
  %113 = landingpad { ptr, i32 }
          cleanup
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %11) #7
  br label %130

114:                                              ; preds = %.invoke167, %.invoke166, %121, %119, %106, %104
  %115 = landingpad { ptr, i32 }
          cleanup
  call void @_ZN9NOMAD_4_36DoubleD1Ev(ptr noundef nonnull align 8 dereferenceable(17) %10) #7
  br label %130

.invoke167:                                       ; preds = %109, %102
  %116 = invoke noundef nonnull align 8 dereferenceable(17) ptr @_ZN9NOMAD_4_36DoubleaSERKS0_(ptr noundef nonnull align 8 dereferenceable(17) %8, ptr noundef nonnull align 8 dereferenceable(17) %10)
          to label %117 unwind label %114

117:                                              ; preds = %.invoke167, %109
  %118 = call noundef zeroext i1 @_ZNK9NOMAD_4_36Double9isDefinedEv(ptr noundef nonnull align 8 dereferenceable(17) %9)
  br i1 %118, label %119, label %.invoke166

119:                                              ; preds = %117
  %120 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNK9NOMAD_4_36Double8todoubleEv(ptr noundef nonnull align 8 dereferenceable(17) %10)
          to label %121 unwind label %114

121:                                              ; preds = %119
  %122 = load double, ptr %120, align 8, !tbaa !60
  %123 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNK9NOMAD_4_36Double8todoubleEv(ptr noundef nonnull align 8 dereferenceable(17) %9)
          to label %124 unwind label %114

124:                                              ; preds = %121
  %125 = load double, ptr %123, align 8, !tbaa !60
  %126 = fcmp ogt double %122, %125
  br i1 %126, label %.invoke166, label %128

.invoke166:                                       ; preds = %117, %124
  %127 = invoke noundef nonnull align 8 dereferenceable(17) ptr @_ZN9NOMAD_4_36DoubleaSERKS0_(ptr noundef nonnull align 8 dereferenceable(17) %9, ptr noundef nonnull align 8 dereferenceable(17) %10)
          to label %128 unwind label %114

128:                                              ; preds = %.invoke166, %124
  call void @_ZN9NOMAD_4_36DoubleD1Ev(ptr noundef nonnull align 8 dereferenceable(17) %10) #7
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %10) #7
  %129 = add nuw nsw i32 %.045151, 1
  %exitcond.not = icmp eq i32 %129, %76
  br i1 %exitcond.not, label %._crit_edge, label %.lr.ph, !llvm.loop !62

130:                                              ; preds = %114, %112
  %.pn136 = phi { ptr, i32 } [ %115, %114 ], [ %113, %112 ]
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %10) #7
  br label %399

131:                                              ; preds = %._crit_edge
  br i1 %98, label %132, label %.thread148

132:                                              ; preds = %131
  %133 = invoke noundef nonnull align 8 dereferenceable(17) ptr @_ZNK9NOMAD_4_313ArrayOfDoubleixEm(ptr noundef nonnull align 8 dereferenceable(24) %83, i64 noundef %indvars.iv)
          to label %134 unwind label %99

134:                                              ; preds = %132
  %135 = invoke noundef nonnull align 8 dereferenceable(17) ptr @_ZN9NOMAD_4_36DoubleaSERKS0_(ptr noundef nonnull align 8 dereferenceable(17) %133, ptr noundef nonnull align 8 dereferenceable(17) %9)
          to label %136 unwind label %99

136:                                              ; preds = %134
  call void @llvm.lifetime.start.p0(i64 24, ptr nonnull %12) #7
  invoke void @_ZN9NOMAD_4_36DoubleC1Ev(ptr noundef nonnull align 8 dereferenceable(17) %12)
          to label %137 unwind label %142

137:                                              ; preds = %136
  %138 = invoke noundef nonnull align 8 dereferenceable(17) ptr @_ZN9NOMAD_4_36DoubleaSERKS0_(ptr noundef nonnull align 8 dereferenceable(17) %8, ptr noundef nonnull align 8 dereferenceable(17) %12)
          to label %139 unwind label %144

139:                                              ; preds = %137
  call void @_ZN9NOMAD_4_36DoubleD1Ev(ptr noundef nonnull align 8 dereferenceable(17) %12) #7
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %12) #7
  call void @llvm.lifetime.start.p0(i64 24, ptr nonnull %13) #7
  invoke void @_ZN9NOMAD_4_36DoubleC1Ev(ptr noundef nonnull align 8 dereferenceable(17) %13)
          to label %140 unwind label %147

140:                                              ; preds = %139
  %141 = invoke noundef nonnull align 8 dereferenceable(17) ptr @_ZN9NOMAD_4_36DoubleaSERKS0_(ptr noundef nonnull align 8 dereferenceable(17) %9, ptr noundef nonnull align 8 dereferenceable(17) %13)
          to label %152 unwind label %149

142:                                              ; preds = %136
  %143 = landingpad { ptr, i32 }
          cleanup
  br label %146

144:                                              ; preds = %137
  %145 = landingpad { ptr, i32 }
          cleanup
  call void @_ZN9NOMAD_4_36DoubleD1Ev(ptr noundef nonnull align 8 dereferenceable(17) %12) #7
  br label %146

146:                                              ; preds = %144, %142
  %.pn130 = phi { ptr, i32 } [ %145, %144 ], [ %143, %142 ]
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %12) #7
  br label %399

147:                                              ; preds = %139
  %148 = landingpad { ptr, i32 }
          cleanup
  br label %151

149:                                              ; preds = %140
  %150 = landingpad { ptr, i32 }
          cleanup
  call void @_ZN9NOMAD_4_36DoubleD1Ev(ptr noundef nonnull align 8 dereferenceable(17) %13) #7
  br label %151

151:                                              ; preds = %149, %147
  %.pn132 = phi { ptr, i32 } [ %150, %149 ], [ %148, %147 ]
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %13) #7
  br label %399

152:                                              ; preds = %140
  call void @_ZN9NOMAD_4_36DoubleD1Ev(ptr noundef nonnull align 8 dereferenceable(17) %13) #7
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %13) #7
  %153 = load i8, ptr %81, align 8, !tbaa !9, !range !58, !noundef !59
  %154 = trunc nuw i8 %153 to i1
  br i1 %154, label %163, label %157

.thread148:                                       ; preds = %131
  %155 = load i8, ptr %81, align 8, !tbaa !9, !range !58, !noundef !59
  %156 = trunc nuw i8 %155 to i1
  br i1 %156, label %.thread149, label %157

157:                                              ; preds = %.thread148, %152
  %158 = invoke noundef nonnull align 8 dereferenceable(17) ptr @_ZNK9NOMAD_4_313ArrayOfDoubleixEm(ptr noundef nonnull align 8 dereferenceable(24) %78, i64 noundef %indvars.iv)
          to label %159 unwind label %99

159:                                              ; preds = %157
  %160 = invoke noundef nonnull align 8 dereferenceable(17) ptr @_ZN9NOMAD_4_36DoubleaSERKS0_(ptr noundef nonnull align 8 dereferenceable(17) %158, ptr noundef nonnull align 8 dereferenceable(17) %8)
          to label %161 unwind label %99

161:                                              ; preds = %159
  %162 = invoke noundef nonnull align 8 dereferenceable(17) ptr @_ZNK9NOMAD_4_313ArrayOfDoubleixEm(ptr noundef nonnull align 8 dereferenceable(24) %79, i64 noundef %indvars.iv)
          to label %.invoke unwind label %99

163:                                              ; preds = %152
  call void @llvm.lifetime.start.p0(i64 24, ptr nonnull %14) #7
  invoke void @_ZN9NOMAD_4_36DoubleC1Ev(ptr noundef nonnull align 8 dereferenceable(17) %14)
          to label %164 unwind label %179

164:                                              ; preds = %163
  %165 = invoke noundef nonnull align 8 dereferenceable(17) ptr @_ZNK9NOMAD_4_313ArrayOfDoubleixEm(ptr noundef nonnull align 8 dereferenceable(24) %79, i64 noundef %indvars.iv)
          to label %166 unwind label %181

166:                                              ; preds = %164
  %167 = invoke noundef nonnull align 8 dereferenceable(17) ptr @_ZN9NOMAD_4_36DoubleaSERKS0_(ptr noundef nonnull align 8 dereferenceable(17) %165, ptr noundef nonnull align 8 dereferenceable(17) %14)
          to label %168 unwind label %181

168:                                              ; preds = %166
  %169 = invoke noundef nonnull align 8 dereferenceable(17) ptr @_ZNK9NOMAD_4_313ArrayOfDoubleixEm(ptr noundef nonnull align 8 dereferenceable(24) %78, i64 noundef %indvars.iv)
          to label %170 unwind label %181

170:                                              ; preds = %168
  %171 = invoke noundef nonnull align 8 dereferenceable(17) ptr @_ZN9NOMAD_4_36DoubleaSERKS0_(ptr noundef nonnull align 8 dereferenceable(17) %169, ptr noundef nonnull align 8 dereferenceable(17) %167)
          to label %172 unwind label %181

172:                                              ; preds = %170
  call void @_ZN9NOMAD_4_36DoubleD1Ev(ptr noundef nonnull align 8 dereferenceable(17) %14) #7
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %14) #7
  %173 = invoke noundef nonnull align 8 dereferenceable(17) ptr @_ZNK9NOMAD_4_313ArrayOfDoubleixEm(ptr noundef nonnull align 8 dereferenceable(24) %83, i64 noundef %indvars.iv)
          to label %174 unwind label %99

174:                                              ; preds = %172
  %175 = invoke noundef nonnull align 8 dereferenceable(17) ptr @_ZNK9NOMAD_4_313ArrayOfDoubleixEm(ptr noundef nonnull align 8 dereferenceable(24) %82, i64 noundef %indvars.iv)
          to label %.invoke unwind label %99

.invoke:                                          ; preds = %174, %161
  %176 = phi ptr [ %162, %161 ], [ %175, %174 ]
  %177 = phi ptr [ %9, %161 ], [ %173, %174 ]
  %178 = invoke noundef nonnull align 8 dereferenceable(17) ptr @_ZN9NOMAD_4_36DoubleaSERKS0_(ptr noundef nonnull align 8 dereferenceable(17) %176, ptr noundef nonnull align 8 dereferenceable(17) %177)
          to label %195 unwind label %99

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

181:                                              ; preds = %170, %168, %166, %164
  %182 = landingpad { ptr, i32 }
          cleanup
  call void @_ZN9NOMAD_4_36DoubleD1Ev(ptr noundef nonnull align 8 dereferenceable(17) %14) #7
  br label %183

183:                                              ; preds = %181, %179
  %.pn134 = phi { ptr, i32 } [ %182, %181 ], [ %180, %179 ]
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %14) #7
  br label %399

.thread149:                                       ; preds = %.thread148
  %184 = invoke noundef nonnull align 8 dereferenceable(17) ptr @_ZNK9NOMAD_4_313ArrayOfDoubleixEm(ptr noundef nonnull align 8 dereferenceable(24) %78, i64 noundef %indvars.iv)
          to label %185 unwind label %99

185:                                              ; preds = %.thread149
  %186 = invoke noundef nonnull align 8 dereferenceable(17) ptr @_ZN9NOMAD_4_36DoubleaSEd(ptr noundef nonnull align 8 dereferenceable(17) %184, double noundef 0.000000e+00)
          to label %187 unwind label %99

187:                                              ; preds = %185
  %188 = invoke noundef nonnull align 8 dereferenceable(17) ptr @_ZNK9NOMAD_4_313ArrayOfDoubleixEm(ptr noundef nonnull align 8 dereferenceable(24) %79, i64 noundef %indvars.iv)
          to label %189 unwind label %99

189:                                              ; preds = %187
  %190 = invoke noundef nonnull align 8 dereferenceable(17) ptr @_ZN9NOMAD_4_36DoubleaSEd(ptr noundef nonnull align 8 dereferenceable(17) %188, double noundef 1.000000e+00)
          to label %191 unwind label %99

191:                                              ; preds = %189
  %192 = invoke noundef nonnull align 8 dereferenceable(17) ptr @_ZNK9NOMAD_4_313ArrayOfDoubleixEm(ptr noundef nonnull align 8 dereferenceable(24) %82, i64 noundef %indvars.iv)
          to label %193 unwind label %99

193:                                              ; preds = %191
  %194 = invoke noundef nonnull align 8 dereferenceable(17) ptr @_ZN9NOMAD_4_36DoubleaSEd(ptr noundef nonnull align 8 dereferenceable(17) %192, double noundef 5.000000e-01)
          to label %195 unwind label %99

195:                                              ; preds = %.invoke, %193
  %indvars.iv.next = add nuw nsw i64 %indvars.iv, 1
  %exitcond160.not = icmp eq i64 %indvars.iv.next, %wide.trip.count
  br i1 %exitcond160.not, label %._crit_edge154, label %89, !llvm.loop !64

196:                                              ; preds = %._crit_edge154
  call void @llvm.lifetime.start.p0(i64 24, ptr nonnull %15) #7
  %197 = getelementptr inbounds i8, ptr %0, i64 40
  %198 = call noundef ptr @_ZNKSt19__shared_ptr_accessIN9NOMAD_4_313RunParametersELN9__gnu_cxx12_Lock_policyE2ELb0ELb0EEptEv(ptr noundef nonnull align 1 dereferenceable(1) %197) #7
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %16) #7
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %17) #7
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %17) #7
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %16, ptr noundef nonnull @.str.51, ptr noundef nonnull align 1 dereferenceable(1) %17)
          to label %199 unwind label %207

199:                                              ; preds = %196
  %200 = invoke noundef nonnull align 8 dereferenceable(17) ptr @_ZNK9NOMAD_4_310Parameters17getAttributeValueINS_6DoubleEEERKT_RKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEb(ptr noundef nonnull align 8 dereferenceable(496) %198, ptr noundef nonnull align 8 dereferenceable(32) %16, i1 noundef zeroext false)
          to label %201 unwind label %209

201:                                              ; preds = %199
  invoke void @_ZN9NOMAD_4_36DoubleC1ERKS0_(ptr noundef nonnull align 8 dereferenceable(17) %15, ptr noundef nonnull align 8 dereferenceable(17) %200)
          to label %202 unwind label %209

202:                                              ; preds = %201
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %16) #7
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %17) #7
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %17) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %16) #7
  br i1 %77, label %.lr.ph157, label %._crit_edge158

.lr.ph157:                                        ; preds = %202
  %203 = getelementptr inbounds i8, ptr %0, i64 544
  %204 = getelementptr inbounds i8, ptr %0, i64 568
  %205 = getelementptr inbounds i8, ptr %0, i64 592
  %206 = getelementptr inbounds i8, ptr %0, i64 616
  %wide.trip.count164 = zext nneg i32 %75 to i64
  br label %212

._crit_edge158:                                   ; preds = %332, %202
  call void @_ZN9NOMAD_4_36DoubleD1Ev(ptr noundef nonnull align 8 dereferenceable(17) %15) #7
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %15) #7
  br label %335

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

209:                                              ; preds = %201, %199
  %210 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %16) #7
  br label %211

211:                                              ; preds = %209, %207
  %.pn92 = phi { ptr, i32 } [ %210, %209 ], [ %208, %207 ]
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %17) #7
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %17) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %16) #7
  br label %334

212:                                              ; preds = %.lr.ph157, %332
  %indvars.iv161 = phi i64 [ 0, %.lr.ph157 ], [ %indvars.iv.next162, %332 ]
  %213 = invoke noundef nonnull align 8 dereferenceable(17) ptr @_ZNK9NOMAD_4_313ArrayOfDoubleixEm(ptr noundef nonnull align 8 dereferenceable(24) %203, i64 noundef %indvars.iv161)
          to label %214 unwind label %267

214:                                              ; preds = %212
  %215 = invoke noundef nonnull align 8 dereferenceable(17) ptr @_ZN9NOMAD_4_36DoubleaSERKS0_(ptr noundef nonnull align 8 dereferenceable(17) %8, ptr noundef nonnull align 8 dereferenceable(17) %213)
          to label %216 unwind label %267

216:                                              ; preds = %214
  %217 = invoke noundef nonnull align 8 dereferenceable(17) ptr @_ZNK9NOMAD_4_313ArrayOfDoubleixEm(ptr noundef nonnull align 8 dereferenceable(24) %204, i64 noundef %indvars.iv161)
          to label %218 unwind label %267

218:                                              ; preds = %216
  %219 = invoke noundef nonnull align 8 dereferenceable(17) ptr @_ZN9NOMAD_4_36DoubleaSERKS0_(ptr noundef nonnull align 8 dereferenceable(17) %9, ptr noundef nonnull align 8 dereferenceable(17) %217)
          to label %220 unwind label %267

220:                                              ; preds = %218
  %221 = call noundef zeroext i1 @_ZNK9NOMAD_4_36Double9isDefinedEv(ptr noundef nonnull align 8 dereferenceable(17) %8)
  br i1 %221, label %222, label %318

222:                                              ; preds = %220
  %223 = call noundef zeroext i1 @_ZNK9NOMAD_4_36Double9isDefinedEv(ptr noundef nonnull align 8 dereferenceable(17) %9)
  br i1 %223, label %224, label %318

224:                                              ; preds = %222
  call void @llvm.lifetime.start.p0(i64 24, ptr nonnull %18) #7
  call void @llvm.lifetime.start.p0(i64 24, ptr nonnull %19) #7
  invoke void @_ZN9NOMAD_4_3plERKNS_6DoubleES2_(ptr dead_on_unwind nonnull writable sret(%"class.NOMAD_4_3::Double") align 8 %19, ptr noundef nonnull align 8 dereferenceable(17) %8, ptr noundef nonnull align 8 dereferenceable(17) %9)
          to label %225 unwind label %269

225:                                              ; preds = %224
  call void @llvm.lifetime.start.p0(i64 24, ptr nonnull %20) #7
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %21) #7
  store double 2.000000e+00, ptr %21, align 8, !tbaa !60
  invoke void @_ZN9NOMAD_4_36DoubleC1ERKd(ptr noundef nonnull align 8 dereferenceable(17) %20, ptr noundef nonnull align 8 dereferenceable(8) %21)
          to label %226 unwind label %271

226:                                              ; preds = %225
  invoke void @_ZN9NOMAD_4_3dvERKNS_6DoubleES2_(ptr dead_on_unwind nonnull writable sret(%"class.NOMAD_4_3::Double") align 8 %18, ptr noundef nonnull align 8 dereferenceable(17) %19, ptr noundef nonnull align 8 dereferenceable(17) %20)
          to label %227 unwind label %273

227:                                              ; preds = %226
  %228 = invoke noundef nonnull align 8 dereferenceable(17) ptr @_ZNK9NOMAD_4_313ArrayOfDoubleixEm(ptr noundef nonnull align 8 dereferenceable(24) %206, i64 noundef %indvars.iv161)
          to label %229 unwind label %275

229:                                              ; preds = %227
  %230 = invoke noundef nonnull align 8 dereferenceable(17) ptr @_ZN9NOMAD_4_36DoubleaSERKS0_(ptr noundef nonnull align 8 dereferenceable(17) %228, ptr noundef nonnull align 8 dereferenceable(17) %18)
          to label %231 unwind label %275

231:                                              ; preds = %229
  call void @_ZN9NOMAD_4_36DoubleD1Ev(ptr noundef nonnull align 8 dereferenceable(17) %18) #7
  call void @_ZN9NOMAD_4_36DoubleD1Ev(ptr noundef nonnull align 8 dereferenceable(17) %20) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %21) #7
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %20) #7
  call void @_ZN9NOMAD_4_36DoubleD1Ev(ptr noundef nonnull align 8 dereferenceable(17) %19) #7
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %19) #7
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %18) #7
  call void @llvm.lifetime.start.p0(i64 24, ptr nonnull %22) #7
  %232 = invoke noundef nonnull align 8 dereferenceable(17) ptr @_ZNK9NOMAD_4_313ArrayOfDoubleixEm(ptr noundef nonnull align 8 dereferenceable(24) %206, i64 noundef %indvars.iv161)
          to label %233 unwind label %280

233:                                              ; preds = %231
  call void @llvm.lifetime.start.p0(i64 24, ptr nonnull %23) #7
  call void @llvm.lifetime.start.p0(i64 24, ptr nonnull %24) #7
  %234 = invoke noundef nonnull align 8 dereferenceable(17) ptr @_ZNK9NOMAD_4_313ArrayOfDoubleixEm(ptr noundef nonnull align 8 dereferenceable(24) %206, i64 noundef %indvars.iv161)
          to label %235 unwind label %282

235:                                              ; preds = %233
  invoke void @_ZN9NOMAD_4_3miERKNS_6DoubleES2_(ptr dead_on_unwind nonnull writable sret(%"class.NOMAD_4_3::Double") align 8 %24, ptr noundef nonnull align 8 dereferenceable(17) %8, ptr noundef nonnull align 8 dereferenceable(17) %234)
          to label %236 unwind label %282

236:                                              ; preds = %235
  invoke void @_ZN9NOMAD_4_3dvERKNS_6DoubleES2_(ptr dead_on_unwind nonnull writable sret(%"class.NOMAD_4_3::Double") align 8 %23, ptr noundef nonnull align 8 dereferenceable(17) %24, ptr noundef nonnull align 8 dereferenceable(17) %15)
          to label %237 unwind label %284

237:                                              ; preds = %236
  invoke void @_ZN9NOMAD_4_3plERKNS_6DoubleES2_(ptr dead_on_unwind nonnull writable sret(%"class.NOMAD_4_3::Double") align 8 %22, ptr noundef nonnull align 8 dereferenceable(17) %232, ptr noundef nonnull align 8 dereferenceable(17) %23)
          to label %238 unwind label %286

238:                                              ; preds = %237
  %239 = invoke noundef nonnull align 8 dereferenceable(17) ptr @_ZN9NOMAD_4_36DoubleaSERKS0_(ptr noundef nonnull align 8 dereferenceable(17) %8, ptr noundef nonnull align 8 dereferenceable(17) %22)
          to label %240 unwind label %288

240:                                              ; preds = %238
  call void @_ZN9NOMAD_4_36DoubleD1Ev(ptr noundef nonnull align 8 dereferenceable(17) %22) #7
  call void @_ZN9NOMAD_4_36DoubleD1Ev(ptr noundef nonnull align 8 dereferenceable(17) %23) #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 @llvm.lifetime.end.p0(i64 24, ptr nonnull %23) #7
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %22) #7
  call void @llvm.lifetime.start.p0(i64 24, ptr nonnull %25) #7
  %241 = invoke noundef nonnull align 8 dereferenceable(17) ptr @_ZNK9NOMAD_4_313ArrayOfDoubleixEm(ptr noundef nonnull align 8 dereferenceable(24) %206, i64 noundef %indvars.iv161)
          to label %242 unwind label %294

242:                                              ; preds = %240
  call void @llvm.lifetime.start.p0(i64 24, ptr nonnull %26) #7
  call void @llvm.lifetime.start.p0(i64 24, ptr nonnull %27) #7
  %243 = invoke noundef nonnull align 8 dereferenceable(17) ptr @_ZNK9NOMAD_4_313ArrayOfDoubleixEm(ptr noundef nonnull align 8 dereferenceable(24) %206, i64 noundef %indvars.iv161)
          to label %244 unwind label %296

244:                                              ; preds = %242
  invoke void @_ZN9NOMAD_4_3miERKNS_6DoubleES2_(ptr dead_on_unwind nonnull writable sret(%"class.NOMAD_4_3::Double") align 8 %27, ptr noundef nonnull align 8 dereferenceable(17) %9, ptr noundef nonnull align 8 dereferenceable(17) %243)
          to label %245 unwind label %296

245:                                              ; preds = %244
  invoke void @_ZN9NOMAD_4_3dvERKNS_6DoubleES2_(ptr dead_on_unwind nonnull writable sret(%"class.NOMAD_4_3::Double") align 8 %26, ptr noundef nonnull align 8 dereferenceable(17) %27, ptr noundef nonnull align 8 dereferenceable(17) %15)
          to label %246 unwind label %298

246:                                              ; preds = %245
  invoke void @_ZN9NOMAD_4_3plERKNS_6DoubleES2_(ptr dead_on_unwind nonnull writable sret(%"class.NOMAD_4_3::Double") align 8 %25, ptr noundef nonnull align 8 dereferenceable(17) %241, ptr noundef nonnull align 8 dereferenceable(17) %26)
          to label %247 unwind label %300

247:                                              ; preds = %246
  %248 = invoke noundef nonnull align 8 dereferenceable(17) ptr @_ZN9NOMAD_4_36DoubleaSERKS0_(ptr noundef nonnull align 8 dereferenceable(17) %9, ptr noundef nonnull align 8 dereferenceable(17) %25)
          to label %249 unwind label %302

249:                                              ; preds = %247
  call void @_ZN9NOMAD_4_36DoubleD1Ev(ptr noundef nonnull align 8 dereferenceable(17) %25) #7
  call void @_ZN9NOMAD_4_36DoubleD1Ev(ptr noundef nonnull align 8 dereferenceable(17) %26) #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 @llvm.lifetime.end.p0(i64 24, ptr nonnull %26) #7
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %25) #7
  %250 = invoke noundef zeroext i1 @_ZN9NOMAD_4_3eqERKNS_6DoubleES2_(ptr noundef nonnull align 8 dereferenceable(17) %8, ptr noundef nonnull align 8 dereferenceable(17) %9)
          to label %251 unwind label %267

251:                                              ; preds = %249
  br i1 %250, label %252, label %324

252:                                              ; preds = %251
  %253 = invoke noundef nonnull align 8 dereferenceable(17) ptr @_ZNK9NOMAD_4_313ArrayOfDoubleixEm(ptr noundef nonnull align 8 dereferenceable(24) %205, i64 noundef %indvars.iv161)
          to label %254 unwind label %267

254:                                              ; preds = %252
  %255 = invoke noundef nonnull align 8 dereferenceable(17) ptr @_ZN9NOMAD_4_36DoubleaSERKS0_(ptr noundef nonnull align 8 dereferenceable(17) %253, ptr noundef nonnull align 8 dereferenceable(17) %9)
          to label %256 unwind label %267

256:                                              ; preds = %254
  %257 = invoke noundef nonnull align 8 dereferenceable(17) ptr @_ZNK9NOMAD_4_313ArrayOfDoubleixEm(ptr noundef nonnull align 8 dereferenceable(24) %206, i64 noundef %indvars.iv161)
          to label %258 unwind label %267

258:                                              ; preds = %256
  %259 = invoke noundef nonnull align 8 dereferenceable(17) ptr @_ZN9NOMAD_4_36DoubleaSERKS0_(ptr noundef nonnull align 8 dereferenceable(17) %257, ptr noundef nonnull align 8 dereferenceable(17) %9)
          to label %260 unwind label %267

260:                                              ; preds = %258
  call void @llvm.lifetime.start.p0(i64 24, ptr nonnull %28) #7
  invoke void @_ZN9NOMAD_4_36DoubleC1Ev(ptr noundef nonnull align 8 dereferenceable(17) %28)
          to label %261 unwind label %308

261:                                              ; preds = %260
  %262 = invoke noundef nonnull align 8 dereferenceable(17) ptr @_ZN9NOMAD_4_36DoubleaSERKS0_(ptr noundef nonnull align 8 dereferenceable(17) %8, ptr noundef nonnull align 8 dereferenceable(17) %28)
          to label %263 unwind label %310

263:                                              ; preds = %261
  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 @llvm.lifetime.start.p0(i64 24, ptr nonnull %29) #7
  invoke void @_ZN9NOMAD_4_36DoubleC1Ev(ptr noundef nonnull align 8 dereferenceable(17) %29)
          to label %264 unwind label %313

264:                                              ; preds = %263
  %265 = invoke noundef nonnull align 8 dereferenceable(17) ptr @_ZN9NOMAD_4_36DoubleaSERKS0_(ptr noundef nonnull align 8 dereferenceable(17) %9, ptr noundef nonnull align 8 dereferenceable(17) %29)
          to label %266 unwind label %315

266:                                              ; preds = %264
  call void @_ZN9NOMAD_4_36DoubleD1Ev(ptr noundef nonnull align 8 dereferenceable(17) %29) #7
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %29) #7
  br label %324

267:                                              ; preds = %330, %328, %326, %324, %322, %320, %318, %258, %256, %254, %252, %249, %218, %216, %214, %212
  %268 = landingpad { ptr, i32 }
          cleanup
  br label %333

269:                                              ; preds = %224
  %270 = landingpad { ptr, i32 }
          cleanup
  br label %279

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

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

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

277:                                              ; preds = %275, %273
  %.pn94 = phi { ptr, i32 } [ %276, %275 ], [ %274, %273 ]
  call void @_ZN9NOMAD_4_36DoubleD1Ev(ptr noundef nonnull align 8 dereferenceable(17) %20) #7
  br label %278

278:                                              ; preds = %277, %271
  %.pn94.pn = phi { ptr, i32 } [ %.pn94, %277 ], [ %272, %271 ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %21) #7
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %20) #7
  call void @_ZN9NOMAD_4_36DoubleD1Ev(ptr noundef nonnull align 8 dereferenceable(17) %19) #7
  br label %279

279:                                              ; preds = %278, %269
  %.pn94.pn.pn = phi { ptr, i32 } [ %.pn94.pn, %278 ], [ %270, %269 ]
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %19) #7
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %18) #7
  br label %333

280:                                              ; preds = %231
  %281 = landingpad { ptr, i32 }
          cleanup
  br label %293

282:                                              ; preds = %235, %233
  %283 = landingpad { ptr, i32 }
          cleanup
  br label %292

284:                                              ; preds = %236
  %285 = landingpad { ptr, i32 }
          cleanup
  br label %291

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

288:                                              ; preds = %238
  %289 = landingpad { ptr, i32 }
          cleanup
  call void @_ZN9NOMAD_4_36DoubleD1Ev(ptr noundef nonnull align 8 dereferenceable(17) %22) #7
  br label %290

290:                                              ; preds = %288, %286
  %.pn98 = phi { ptr, i32 } [ %289, %288 ], [ %287, %286 ]
  call void @_ZN9NOMAD_4_36DoubleD1Ev(ptr noundef nonnull align 8 dereferenceable(17) %23) #7
  br label %291

291:                                              ; preds = %290, %284
  %.pn98.pn = phi { ptr, i32 } [ %.pn98, %290 ], [ %285, %284 ]
  call void @_ZN9NOMAD_4_36DoubleD1Ev(ptr noundef nonnull align 8 dereferenceable(17) %24) #7
  br label %292

292:                                              ; preds = %291, %282
  %.pn98.pn.pn = phi { ptr, i32 } [ %.pn98.pn, %291 ], [ %283, %282 ]
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %24) #7
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %23) #7
  br label %293

293:                                              ; preds = %292, %280
  %.pn98.pn.pn.pn = phi { ptr, i32 } [ %.pn98.pn.pn, %292 ], [ %281, %280 ]
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %22) #7
  br label %333

294:                                              ; preds = %240
  %295 = landingpad { ptr, i32 }
          cleanup
  br label %307

296:                                              ; preds = %244, %242
  %297 = landingpad { ptr, i32 }
          cleanup
  br label %306

298:                                              ; preds = %245
  %299 = landingpad { ptr, i32 }
          cleanup
  br label %305

300:                                              ; preds = %246
  %301 = landingpad { ptr, i32 }
          cleanup
  br label %304

302:                                              ; preds = %247
  %303 = landingpad { ptr, i32 }
          cleanup
  call void @_ZN9NOMAD_4_36DoubleD1Ev(ptr noundef nonnull align 8 dereferenceable(17) %25) #7
  br label %304

304:                                              ; preds = %302, %300
  %.pn103 = phi { ptr, i32 } [ %303, %302 ], [ %301, %300 ]
  call void @_ZN9NOMAD_4_36DoubleD1Ev(ptr noundef nonnull align 8 dereferenceable(17) %26) #7
  br label %305

305:                                              ; preds = %304, %298
  %.pn103.pn = phi { ptr, i32 } [ %.pn103, %304 ], [ %299, %298 ]
  call void @_ZN9NOMAD_4_36DoubleD1Ev(ptr noundef nonnull align 8 dereferenceable(17) %27) #7
  br label %306

306:                                              ; preds = %305, %296
  %.pn103.pn.pn = phi { ptr, i32 } [ %.pn103.pn, %305 ], [ %297, %296 ]
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %27) #7
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %26) #7
  br label %307

307:                                              ; preds = %306, %294
  %.pn103.pn.pn.pn = phi { ptr, i32 } [ %.pn103.pn.pn, %306 ], [ %295, %294 ]
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %25) #7
  br label %333

308:                                              ; preds = %260
  %309 = landingpad { ptr, i32 }
          cleanup
  br label %312

310:                                              ; preds = %261
  %311 = landingpad { ptr, i32 }
          cleanup
  call void @_ZN9NOMAD_4_36DoubleD1Ev(ptr noundef nonnull align 8 dereferenceable(17) %28) #7
  br label %312

312:                                              ; preds = %310, %308
  %.pn108 = phi { ptr, i32 } [ %311, %310 ], [ %309, %308 ]
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %28) #7
  br label %333

313:                                              ; preds = %263
  %314 = landingpad { ptr, i32 }
          cleanup
  br label %317

315:                                              ; preds = %264
  %316 = landingpad { ptr, i32 }
          cleanup
  call void @_ZN9NOMAD_4_36DoubleD1Ev(ptr noundef nonnull align 8 dereferenceable(17) %29) #7
  br label %317

317:                                              ; preds = %315, %313
  %.pn110 = phi { ptr, i32 } [ %316, %315 ], [ %314, %313 ]
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %29) #7
  br label %333

318:                                              ; preds = %222, %220
  %319 = invoke noundef nonnull align 8 dereferenceable(17) ptr @_ZNK9NOMAD_4_313ArrayOfDoubleixEm(ptr noundef nonnull align 8 dereferenceable(24) %205, i64 noundef %indvars.iv161)
          to label %320 unwind label %267

320:                                              ; preds = %318
  %321 = invoke noundef nonnull align 8 dereferenceable(17) ptr @_ZNK9NOMAD_4_313ArrayOfDoubleixEm(ptr noundef nonnull align 8 dereferenceable(24) %206, i64 noundef %indvars.iv161)
          to label %322 unwind label %267

322:                                              ; preds = %320
  %323 = invoke noundef nonnull align 8 dereferenceable(17) ptr @_ZN9NOMAD_4_36DoubleaSERKS0_(ptr noundef nonnull align 8 dereferenceable(17) %321, ptr noundef nonnull align 8 dereferenceable(17) %319)
          to label %324 unwind label %267

324:                                              ; preds = %322, %251, %266
  %325 = invoke noundef nonnull align 8 dereferenceable(17) ptr @_ZNK9NOMAD_4_313ArrayOfDoubleixEm(ptr noundef nonnull align 8 dereferenceable(24) %203, i64 noundef %indvars.iv161)
          to label %326 unwind label %267

326:                                              ; preds = %324
  %327 = invoke noundef nonnull align 8 dereferenceable(17) ptr @_ZN9NOMAD_4_36DoubleaSERKS0_(ptr noundef nonnull align 8 dereferenceable(17) %325, ptr noundef nonnull align 8 dereferenceable(17) %8)
          to label %328 unwind label %267

328:                                              ; preds = %326
  %329 = invoke noundef nonnull align 8 dereferenceable(17) ptr @_ZNK9NOMAD_4_313ArrayOfDoubleixEm(ptr noundef nonnull align 8 dereferenceable(24) %204, i64 noundef %indvars.iv161)
          to label %330 unwind label %267

330:                                              ; preds = %328
  %331 = invoke noundef nonnull align 8 dereferenceable(17) ptr @_ZN9NOMAD_4_36DoubleaSERKS0_(ptr noundef nonnull align 8 dereferenceable(17) %329, ptr noundef nonnull align 8 dereferenceable(17) %9)
          to label %332 unwind label %267

332:                                              ; preds = %330
  %indvars.iv.next162 = add nuw nsw i64 %indvars.iv161, 1
  %exitcond165.not = icmp eq i64 %indvars.iv.next162, %wide.trip.count164
  br i1 %exitcond165.not, label %._crit_edge158, label %212, !llvm.loop !65

333:                                              ; preds = %317, %312, %307, %293, %279, %267
  %.pn112 = phi { ptr, i32 } [ %268, %267 ], [ %.pn110, %317 ], [ %.pn108, %312 ], [ %.pn103.pn.pn.pn, %307 ], [ %.pn98.pn.pn.pn, %293 ], [ %.pn94.pn.pn, %279 ]
  call void @_ZN9NOMAD_4_36DoubleD1Ev(ptr noundef nonnull align 8 dereferenceable(17) %15) #7
  br label %334

334:                                              ; preds = %333, %211
  %.pn112.pn = phi { ptr, i32 } [ %.pn112, %333 ], [ %.pn92, %211 ]
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %15) #7
  br label %399

335:                                              ; preds = %._crit_edge158, %._crit_edge154
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %30) #7
  store i32 7, ptr %30, align 4, !tbaa !66
  %336 = invoke noundef zeroext i1 @_ZN9NOMAD_4_311OutputQueue9GoodLevelERKNS_11OutputLevelE(ptr noundef nonnull align 4 dereferenceable(4) %30)
          to label %337 unwind label %359

337:                                              ; preds = %335
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %30) #7
  br i1 %336, label %338, label %398

338:                                              ; preds = %337
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %31) #7
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %32) #7
  %339 = getelementptr inbounds i8, ptr %0, i64 544
  call void @llvm.lifetime.start.p0(i64 24, ptr nonnull %33) #7
  call void @llvm.lifetime.start.p0(i64 24, ptr nonnull %34) #7
  invoke void @_ZN9NOMAD_4_36DoubleC1Ev(ptr noundef nonnull align 8 dereferenceable(17) %34)
          to label %340 unwind label %361

340:                                              ; preds = %338
  invoke void @_ZN9NOMAD_4_313ArrayOfDoubleC1EmRKNS_6DoubleE(ptr noundef nonnull align 8 dereferenceable(24) %33, i64 noundef 0, ptr noundef nonnull align 8 dereferenceable(17) %34)
          to label %341 unwind label %363

341:                                              ; preds = %340
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %35) #7
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2Ev(ptr noundef nonnull align 8 dereferenceable(32) %35) #7
  invoke void @_ZNK9NOMAD_4_313ArrayOfDouble7displayERKS0_RKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE(ptr dead_on_unwind nonnull writable sret(%"class.std::__cxx11::basic_string") align 8 %32, ptr noundef nonnull align 8 dereferenceable(24) %339, ptr noundef nonnull align 8 dereferenceable(24) %33, ptr noundef nonnull align 8 dereferenceable(32) %35)
          to label %342 unwind label %365

342:                                              ; preds = %341
  invoke void @_ZStplIcSt11char_traitsIcESaIcEENSt7__cxx1112basic_stringIT_T0_T1_EEPKS5_OS8_(ptr dead_on_unwind nonnull writable sret(%"class.std::__cxx11::basic_string") align 8 %31, ptr noundef nonnull @.str.52, ptr noundef nonnull align 8 dereferenceable(32) %32)
          to label %343 unwind label %367

343:                                              ; preds = %342
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %32) #7
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %35) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %35) #7
  call void @_ZN9NOMAD_4_313ArrayOfDoubleD1Ev(ptr noundef nonnull align 8 dereferenceable(24) %33) #7
  call void @_ZN9NOMAD_4_36DoubleD1Ev(ptr noundef nonnull align 8 dereferenceable(17) %34) #7
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %34) #7
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %33) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %32) #7
  invoke void @_ZNK9NOMAD_4_34Step13AddOutputInfoERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEENS_11OutputLevelE(ptr noundef nonnull align 8 dereferenceable(140) %0, ptr noundef nonnull align 8 dereferenceable(32) %31, i32 noundef 7)
          to label %344 unwind label %372

344:                                              ; preds = %343
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %36) #7
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %37) #7
  %345 = getelementptr inbounds i8, ptr %0, i64 568
  call void @llvm.lifetime.start.p0(i64 24, ptr nonnull %38) #7
  call void @llvm.lifetime.start.p0(i64 24, ptr nonnull %39) #7
  invoke void @_ZN9NOMAD_4_36DoubleC1Ev(ptr noundef nonnull align 8 dereferenceable(17) %39)
          to label %346 unwind label %374

346:                                              ; preds = %344
  invoke void @_ZN9NOMAD_4_313ArrayOfDoubleC1EmRKNS_6DoubleE(ptr noundef nonnull align 8 dereferenceable(24) %38, i64 noundef 0, ptr noundef nonnull align 8 dereferenceable(17) %39)
          to label %347 unwind label %376

347:                                              ; preds = %346
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %40) #7
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2Ev(ptr noundef nonnull align 8 dereferenceable(32) %40) #7
  invoke void @_ZNK9NOMAD_4_313ArrayOfDouble7displayERKS0_RKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE(ptr dead_on_unwind nonnull writable sret(%"class.std::__cxx11::basic_string") align 8 %37, ptr noundef nonnull align 8 dereferenceable(24) %345, ptr noundef nonnull align 8 dereferenceable(24) %38, ptr noundef nonnull align 8 dereferenceable(32) %40)
          to label %348 unwind label %378

348:                                              ; preds = %347
  invoke void @_ZStplIcSt11char_traitsIcESaIcEENSt7__cxx1112basic_stringIT_T0_T1_EEPKS5_OS8_(ptr dead_on_unwind nonnull writable sret(%"class.std::__cxx11::basic_string") align 8 %36, ptr noundef nonnull @.str.53, ptr noundef nonnull align 8 dereferenceable(32) %37)
          to label %349 unwind label %380

349:                                              ; preds = %348
  %350 = call noundef nonnull align 8 dereferenceable(32) ptr @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEaSEOS4_(ptr noundef nonnull align 8 dereferenceable(32) %31, ptr noundef nonnull align 8 dereferenceable(32) %36) #7
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %36) #7
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %37) #7
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %40) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %40) #7
  call void @_ZN9NOMAD_4_313ArrayOfDoubleD1Ev(ptr noundef nonnull align 8 dereferenceable(24) %38) #7
  call void @_ZN9NOMAD_4_36DoubleD1Ev(ptr noundef nonnull align 8 dereferenceable(17) %39) #7
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %39) #7
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %38) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %37) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %36) #7
  invoke void @_ZNK9NOMAD_4_34Step13AddOutputInfoERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEENS_11OutputLevelE(ptr noundef nonnull align 8 dereferenceable(140) %0, ptr noundef nonnull align 8 dereferenceable(32) %31, i32 noundef 7)
          to label %351 unwind label %372

351:                                              ; preds = %349
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %41) #7
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %42) #7
  %352 = getelementptr inbounds i8, ptr %0, i64 616
  call void @llvm.lifetime.start.p0(i64 24, ptr nonnull %43) #7
  call void @llvm.lifetime.start.p0(i64 24, ptr nonnull %44) #7
  invoke void @_ZN9NOMAD_4_36DoubleC1Ev(ptr noundef nonnull align 8 dereferenceable(17) %44)
          to label %353 unwind label %385

353:                                              ; preds = %351
  invoke void @_ZN9NOMAD_4_313ArrayOfDoubleC1EmRKNS_6DoubleE(ptr noundef nonnull align 8 dereferenceable(24) %43, i64 noundef 0, ptr noundef nonnull align 8 dereferenceable(17) %44)
          to label %354 unwind label %387

354:                                              ; preds = %353
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %45) #7
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2Ev(ptr noundef nonnull align 8 dereferenceable(32) %45) #7
  invoke void @_ZNK9NOMAD_4_35Point7displayERKNS_13ArrayOfDoubleERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE(ptr dead_on_unwind nonnull writable sret(%"class.std::__cxx11::basic_string") align 8 %42, ptr noundef nonnull align 8 dereferenceable(24) %352, ptr noundef nonnull align 8 dereferenceable(24) %43, ptr noundef nonnull align 8 dereferenceable(32) %45)
          to label %355 unwind label %389

355:                                              ; preds = %354
  invoke void @_ZStplIcSt11char_traitsIcESaIcEENSt7__cxx1112basic_stringIT_T0_T1_EEPKS5_OS8_(ptr dead_on_unwind nonnull writable sret(%"class.std::__cxx11::basic_string") align 8 %41, ptr noundef nonnull @.str.54, ptr noundef nonnull align 8 dereferenceable(32) %42)
          to label %356 unwind label %391

356:                                              ; preds = %355
  %357 = call noundef nonnull align 8 dereferenceable(32) ptr @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEaSEOS4_(ptr noundef nonnull align 8 dereferenceable(32) %31, ptr noundef nonnull align 8 dereferenceable(32) %41) #7
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %41) #7
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %42) #7
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %45) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %45) #7
  call void @_ZN9NOMAD_4_313ArrayOfDoubleD1Ev(ptr noundef nonnull align 8 dereferenceable(24) %43) #7
  call void @_ZN9NOMAD_4_36DoubleD1Ev(ptr noundef nonnull align 8 dereferenceable(17) %44) #7
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %44) #7
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %43) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %42) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %41) #7
  invoke void @_ZNK9NOMAD_4_34Step13AddOutputInfoERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEENS_11OutputLevelE(ptr noundef nonnull align 8 dereferenceable(140) %0, ptr noundef nonnull align 8 dereferenceable(32) %31, i32 noundef 7)
          to label %358 unwind label %372

358:                                              ; preds = %356
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %31) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %31) #7
  br label %398

359:                                              ; preds = %335
  %360 = landingpad { ptr, i32 }
          cleanup
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %30) #7
  br label %399

361:                                              ; preds = %338
  %362 = landingpad { ptr, i32 }
          cleanup
  br label %371

363:                                              ; preds = %340
  %364 = landingpad { ptr, i32 }
          cleanup
  br label %370

365:                                              ; preds = %341
  %366 = landingpad { ptr, i32 }
          cleanup
  br label %369

367:                                              ; preds = %342
  %368 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %32) #7
  br label %369

369:                                              ; preds = %367, %365
  %.pn115 = phi { ptr, i32 } [ %368, %367 ], [ %366, %365 ]
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %35) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %35) #7
  call void @_ZN9NOMAD_4_313ArrayOfDoubleD1Ev(ptr noundef nonnull align 8 dereferenceable(24) %33) #7
  br label %370

370:                                              ; preds = %369, %363
  %.pn115.pn = phi { ptr, i32 } [ %.pn115, %369 ], [ %364, %363 ]
  call void @_ZN9NOMAD_4_36DoubleD1Ev(ptr noundef nonnull align 8 dereferenceable(17) %34) #7
  br label %371

371:                                              ; preds = %370, %361
  %.pn115.pn.pn = phi { ptr, i32 } [ %.pn115.pn, %370 ], [ %362, %361 ]
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %34) #7
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %33) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %32) #7
  br label %397

372:                                              ; preds = %356, %349, %343
  %373 = landingpad { ptr, i32 }
          cleanup
  br label %396

374:                                              ; preds = %344
  %375 = landingpad { ptr, i32 }
          cleanup
  br label %384

376:                                              ; preds = %346
  %377 = landingpad { ptr, i32 }
          cleanup
  br label %383

378:                                              ; preds = %347
  %379 = landingpad { ptr, i32 }
          cleanup
  br label %382

380:                                              ; preds = %348
  %381 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %37) #7
  br label %382

382:                                              ; preds = %380, %378
  %.pn119 = phi { ptr, i32 } [ %381, %380 ], [ %379, %378 ]
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %40) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %40) #7
  call void @_ZN9NOMAD_4_313ArrayOfDoubleD1Ev(ptr noundef nonnull align 8 dereferenceable(24) %38) #7
  br label %383

383:                                              ; preds = %382, %376
  %.pn119.pn = phi { ptr, i32 } [ %.pn119, %382 ], [ %377, %376 ]
  call void @_ZN9NOMAD_4_36DoubleD1Ev(ptr noundef nonnull align 8 dereferenceable(17) %39) #7
  br label %384

384:                                              ; preds = %383, %374
  %.pn119.pn.pn = phi { ptr, i32 } [ %.pn119.pn, %383 ], [ %375, %374 ]
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %39) #7
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %38) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %37) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %36) #7
  br label %396

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

387:                                              ; preds = %353
  %388 = landingpad { ptr, i32 }
          cleanup
  br label %394

389:                                              ; preds = %354
  %390 = landingpad { ptr, i32 }
          cleanup
  br label %393

391:                                              ; preds = %355
  %392 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %42) #7
  br label %393

393:                                              ; preds = %391, %389
  %.pn123 = phi { ptr, i32 } [ %392, %391 ], [ %390, %389 ]
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %45) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %45) #7
  call void @_ZN9NOMAD_4_313ArrayOfDoubleD1Ev(ptr noundef nonnull align 8 dereferenceable(24) %43) #7
  br label %394

394:                                              ; preds = %393, %387
  %.pn123.pn = phi { ptr, i32 } [ %.pn123, %393 ], [ %388, %387 ]
  call void @_ZN9NOMAD_4_36DoubleD1Ev(ptr noundef nonnull align 8 dereferenceable(17) %44) #7
  br label %395

395:                                              ; preds = %394, %385
  %.pn123.pn.pn = phi { ptr, i32 } [ %.pn123.pn, %394 ], [ %386, %385 ]
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %44) #7
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %43) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %42) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %41) #7
  br label %396

396:                                              ; preds = %395, %384, %372
  %.pn127 = phi { ptr, i32 } [ %373, %372 ], [ %.pn123.pn.pn, %395 ], [ %.pn119.pn.pn, %384 ]
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %31) #7
  br label %397

397:                                              ; preds = %396, %371
  %.pn127.pn = phi { ptr, i32 } [ %.pn127, %396 ], [ %.pn115.pn.pn, %371 ]
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %31) #7
  br label %399

398:                                              ; preds = %358, %337
  call void @_ZN9NOMAD_4_36DoubleD1Ev(ptr noundef nonnull align 8 dereferenceable(17) %9) #7
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %9) #7
  call void @_ZN9NOMAD_4_36DoubleD1Ev(ptr noundef nonnull align 8 dereferenceable(17) %8) #7
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %8) #7
  ret void

399:                                              ; preds = %99, %130, %146, %151, %183, %397, %359, %334
  %.pn136.pn.pn = phi { ptr, i32 } [ %.pn127.pn, %397 ], [ %360, %359 ], [ %.pn112.pn, %334 ], [ %.pn136, %130 ], [ %100, %99 ], [ %.pn134, %183 ], [ %.pn132, %151 ], [ %.pn130, %146 ]
  call void @_ZN9NOMAD_4_36DoubleD1Ev(ptr noundef nonnull align 8 dereferenceable(17) %9) #7
  br label %400

400:                                              ; preds = %399, %87
  %.pn136.pn.pn.pn = phi { ptr, i32 } [ %.pn136.pn.pn, %399 ], [ %88, %87 ]
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %9) #7
  call void @_ZN9NOMAD_4_36DoubleD1Ev(ptr noundef nonnull align 8 dereferenceable(17) %8) #7
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %8) #7
  br label %401

401:                                              ; preds = %72, %73, %400, %66
  %.pn141.pn.pn = phi { ptr, i32 } [ %.pn141.pn147, %73 ], [ %.pn141, %72 ], [ %.pn136.pn.pn.pn, %400 ], [ %.pn, %66 ]
  resume { ptr, i32 } %.pn141.pn.pn

402:                                              ; preds = %61
  unreachable
}

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

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

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

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

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

; Function Attrs: inlinehint mustprogress nounwind uwtable
declare dso_local noundef i32 @_ZNK7SGTELIB6Matrix11get_nb_colsEv(ptr noundef nonnull align 8 dereferenceable(56)) local_unnamed_addr #6 align 2

; Function Attrs: inlinehint mustprogress nounwind uwtable
declare dso_local noundef i32 @_ZNK7SGTELIB6Matrix11get_nb_rowsEv(ptr noundef nonnull align 8 dereferenceable(56)) local_unnamed_addr #6 align 2

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

declare noundef nonnull align 8 dereferenceable(17) ptr @_ZN9NOMAD_4_36DoubleaSERKS0_(ptr noundef nonnull align 8 dereferenceable(17), ptr noundef nonnull align 8 dereferenceable(17)) local_unnamed_addr #4

; Function Attrs: inlinehint mustprogress nounwind uwtable
declare dso_local noundef double @_ZNK7SGTELIB6Matrix3getEii(ptr noundef nonnull align 8 dereferenceable(56), i32 noundef, i32 noundef) local_unnamed_addr #6 align 2

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

declare noundef nonnull align 8 dereferenceable(8) ptr @_ZNK9NOMAD_4_36Double8todoubleEv(ptr noundef nonnull align 8 dereferenceable(17)) local_unnamed_addr #4

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

declare noundef nonnull align 8 dereferenceable(17) ptr @_ZN9NOMAD_4_36DoubleaSEd(ptr noundef nonnull align 8 dereferenceable(17), double noundef) local_unnamed_addr #4

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

declare void @_ZN9NOMAD_4_36DoubleC1ERKS0_(ptr noundef nonnull align 8 dereferenceable(17), ptr noundef nonnull align 8 dereferenceable(17)) unnamed_addr #4

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

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

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

declare void @_ZNK9NOMAD_4_313ArrayOfDouble7displayERKS0_RKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE(ptr dead_on_unwind writable sret(%"class.std::__cxx11::basic_string") align 8, ptr noundef nonnull align 8 dereferenceable(24), ptr noundef nonnull align 8 dereferenceable(24), ptr noundef nonnull align 8 dereferenceable(32)) unnamed_addr #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 = { inlinehint mustprogress uwtable "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }
attributes #4 = { "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }
attributes #5 = { 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 #6 = { inlinehint mustprogress nounwind uwtable "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }
attributes #7 = { nounwind }
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 = !{!"long", !7, i64 0}
!7 = !{!"omnipotent char", !8, i64 0}
!8 = !{!"Simple C++ TBAA"}
!9 = !{!10, !48, i64 688}
!10 = !{!"_ZTSN9NOMAD_4_317QuadModelOptimizeE", !11, i64 0, !31, i64 144, !55, i64 536, !56, i64 544, !56, i64 568, !57, i64 592, !57, i64 616, !19, i64 640, !17, i64 656, !19, i64 672, !48, i64 688}
!11 = !{!"_ZTSN9NOMAD_4_34StepE", !12, i64 8, !13, i64 16, !14, i64 24, !17, i64 40, !19, i64 56, !21, i64 72, !30, i64 136}
!12 = !{!"any pointer", !7, i64 0}
!13 = !{!"_ZTSN9NOMAD_4_38StepTypeE", !7, i64 0}
!14 = !{!"_ZTSSt10shared_ptrIN9NOMAD_4_314AllStopReasonsEE", !15, i64 0}
!15 = !{!"_ZTSSt12__shared_ptrIN9NOMAD_4_314AllStopReasonsELN9__gnu_cxx12_Lock_policyE2EE", !12, i64 0, !16, i64 8}
!16 = !{!"_ZTSSt14__shared_countILN9__gnu_cxx12_Lock_policyE2EE", !12, i64 0}
!17 = !{!"_ZTSSt10shared_ptrIN9NOMAD_4_313RunParametersEE", !18, i64 0}
!18 = !{!"_ZTSSt12__shared_ptrIN9NOMAD_4_313RunParametersELN9__gnu_cxx12_Lock_policyE2EE", !12, i64 0, !16, i64 8}
!19 = !{!"_ZTSSt10shared_ptrIN9NOMAD_4_312PbParametersEE", !20, i64 0}
!20 = !{!"_ZTSSt12__shared_ptrIN9NOMAD_4_312PbParametersELN9__gnu_cxx12_Lock_policyE2EE", !12, i64 0, !16, i64 8}
!21 = !{!"_ZTSN9NOMAD_4_312SuccessStatsE", !22, i64 0, !6, i64 48, !6, 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, !6, i64 32}
!28 = !{!"_ZTSSt18_Rb_tree_node_base", !29, i64 0, !12, i64 8, !12, i64 16, !12, i64 24}
!29 = !{!"_ZTSSt14_Rb_tree_color", !7, i64 0}
!30 = !{!"_ZTSN9NOMAD_4_311SuccessTypeE", !7, i64 0}
!31 = !{!"_ZTSN9NOMAD_4_323QuadModelIterationUtilsE", !32, i64 0, !49, i64 328, !49, i64 344, !51, i64 360, !53, i64 376}
!32 = !{!"_ZTSN9NOMAD_4_314IterationUtilsE", !33, i64 8, !6, i64 56, !12, i64 64, !12, i64 72, !12, i64 80, !38, i64 88, !48, i64 320, !30, 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", !12, i64 0, !39, i64 8, !43, i64 32, !43, i64 80, !43, i64 128, !43, i64 176, !6, 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", !12, i64 0, !12, i64 8, !12, 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", !7, i64 0}
!49 = !{!"_ZTSSt10shared_ptrIN9NOMAD_4_39EvalPointEE", !50, i64 0}
!50 = !{!"_ZTSSt12__shared_ptrIN9NOMAD_4_39EvalPointELN9__gnu_cxx12_Lock_policyE2EE", !12, i64 0, !16, i64 8}
!51 = !{!"_ZTSSt10shared_ptrIN7SGTELIB11TrainingSetEE", !52, i64 0}
!52 = !{!"_ZTSSt12__shared_ptrIN7SGTELIB11TrainingSetELN9__gnu_cxx12_Lock_policyE2EE", !12, i64 0, !16, i64 8}
!53 = !{!"_ZTSSt10shared_ptrIN7SGTELIB9SurrogateEE", !54, i64 0}
!54 = !{!"_ZTSSt12__shared_ptrIN7SGTELIB9SurrogateELN9__gnu_cxx12_Lock_policyE2EE", !12, i64 0, !16, i64 8}
!55 = !{!"_ZTSN9NOMAD_4_311OutputLevelE", !7, i64 0}
!56 = !{!"_ZTSN9NOMAD_4_313ArrayOfDoubleE", !6, i64 8, !12, i64 16}
!57 = !{!"_ZTSN9NOMAD_4_35PointE", !56, i64 0}
!58 = !{i8 0, i8 2}
!59 = !{}
!60 = !{!61, !61, i64 0}
!61 = !{!"double", !7, i64 0}
!62 = distinct !{!62, !63}
!63 = !{!"llvm.loop.mustprogress"}
!64 = distinct !{!64, !63}
!65 = distinct !{!65, !63}
!66 = !{!55, !55, i64 0}


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