; LLVM IR from buresjan/optim_lbm :: nomad/src/Algos/SgtelibModel (SgtelibModelFilterCache)

; 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.NOMAD_4_3::Double" = type <{ ptr, double, i8, [7 x i8] }>
%"struct.std::_Bit_reference" = type { ptr, i64 }
%"class.std::allocator" = type { i8 }
%"class.NOMAD_4_3::SgtelibModelFilterCache" = type { %"class.NOMAD_4_3::Step.base", ptr, i64, %"class.std::set", i32, %"class.std::vector", %"class.std::vector.26", %"class.std::vector.26", %"class.std::vector.26", %"class.std::vector.26", %"class.std::vector.31", %"class.std::vector.26", %"class.std::vector.36", %"class.std::vector.26", %"class.std::vector.26", %"class.std::vector.40", %"class.std::vector.40", double }
%"class.NOMAD_4_3::Step.base" = type <{ ptr, ptr, i32, [4 x i8], %"class.std::shared_ptr", %"class.std::shared_ptr.11", %"class.std::shared_ptr.14", %"class.NOMAD_4_3::SuccessStats", i32 }>
%"class.std::shared_ptr" = type { %"class.std::__shared_ptr" }
%"class.std::__shared_ptr" = type { ptr, %"class.std::__shared_count" }
%"class.std::__shared_count" = type { ptr }
%"class.std::shared_ptr.11" = type { %"class.std::__shared_ptr.12" }
%"class.std::__shared_ptr.12" = type { ptr, %"class.std::__shared_count" }
%"class.std::shared_ptr.14" = type { %"class.std::__shared_ptr.15" }
%"class.std::__shared_ptr.15" = type { ptr, %"class.std::__shared_count" }
%"class.NOMAD_4_3::SuccessStats" = type { %"class.std::map.17", i64, i64 }
%"class.std::map.17" = type { %"class.std::_Rb_tree.18" }
%"class.std::_Rb_tree.18" = 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" }
%"struct.std::_Rb_tree_header" = type { %"struct.std::_Rb_tree_node_base", i64 }
%"struct.std::_Rb_tree_node_base" = type { i32, ptr, ptr, ptr }
%"class.std::set" = type { %"class.std::_Rb_tree" }
%"class.std::_Rb_tree" = type { %"struct.std::_Rb_tree<NOMAD_4_3::EvalPoint, NOMAD_4_3::EvalPoint, std::_Identity<NOMAD_4_3::EvalPoint>, NOMAD_4_3::EvalPointCompare>::_Rb_tree_impl" }
%"struct.std::_Rb_tree<NOMAD_4_3::EvalPoint, NOMAD_4_3::EvalPoint, std::_Identity<NOMAD_4_3::EvalPoint>, NOMAD_4_3::EvalPointCompare>::_Rb_tree_impl" = type { [8 x i8], %"struct.std::_Rb_tree_header" }
%"class.std::vector" = type { %"struct.std::_Vector_base" }
%"struct.std::_Vector_base" = type { %"struct.std::_Vector_base<NOMAD_4_3::EvalPoint, std::allocator<NOMAD_4_3::EvalPoint>>::_Vector_impl" }
%"struct.std::_Vector_base<NOMAD_4_3::EvalPoint, std::allocator<NOMAD_4_3::EvalPoint>>::_Vector_impl" = type { %"struct.std::_Vector_base<NOMAD_4_3::EvalPoint, std::allocator<NOMAD_4_3::EvalPoint>>::_Vector_impl_data" }
%"struct.std::_Vector_base<NOMAD_4_3::EvalPoint, std::allocator<NOMAD_4_3::EvalPoint>>::_Vector_impl_data" = type { ptr, ptr, ptr }
%"class.std::vector.31" = type { %"struct.std::_Vector_base.32" }
%"struct.std::_Vector_base.32" = type { %"struct.std::_Vector_base<std::vector<double>, std::allocator<std::vector<double>>>::_Vector_impl" }
%"struct.std::_Vector_base<std::vector<double>, std::allocator<std::vector<double>>>::_Vector_impl" = type { %"struct.std::_Vector_base<std::vector<double>, std::allocator<std::vector<double>>>::_Vector_impl_data" }
%"struct.std::_Vector_base<std::vector<double>, std::allocator<std::vector<double>>>::_Vector_impl_data" = type { ptr, ptr, ptr }
%"class.std::vector.36" = type { %"struct.std::_Bvector_base" }
%"struct.std::_Bvector_base" = type { %"struct.std::_Bvector_base<std::allocator<bool>>::_Bvector_impl" }
%"struct.std::_Bvector_base<std::allocator<bool>>::_Bvector_impl" = type { %"struct.std::_Bvector_base<std::allocator<bool>>::_Bvector_impl_data" }
%"struct.std::_Bvector_base<std::allocator<bool>>::_Bvector_impl_data" = type { %"struct.std::_Bit_iterator", %"struct.std::_Bit_iterator", ptr }
%"struct.std::_Bit_iterator" = type { %"struct.std::_Bit_iterator_base.base", [4 x i8] }
%"struct.std::_Bit_iterator_base.base" = type <{ ptr, i32 }>
%"class.std::vector.26" = type { %"struct.std::_Vector_base.27" }
%"struct.std::_Vector_base.27" = type { %"struct.std::_Vector_base<double, std::allocator<double>>::_Vector_impl" }
%"struct.std::_Vector_base<double, std::allocator<double>>::_Vector_impl" = type { %"struct.std::_Vector_base<double, std::allocator<double>>::_Vector_impl_data" }
%"struct.std::_Vector_base<double, std::allocator<double>>::_Vector_impl_data" = type { ptr, ptr, ptr }
%"class.std::vector.40" = type { %"struct.std::_Vector_base.41" }
%"struct.std::_Vector_base.41" = type { %"struct.std::_Vector_base<int, std::allocator<int>>::_Vector_impl" }
%"struct.std::_Vector_base<int, std::allocator<int>>::_Vector_impl" = type { %"struct.std::_Vector_base<int, std::allocator<int>>::_Vector_impl_data" }
%"struct.std::_Vector_base<int, std::allocator<int>>::_Vector_impl_data" = type { ptr, ptr, ptr }

@.str.24 = external hidden unnamed_addr constant [109 x i8], align 1
@_ZTIN9NOMAD_4_39ExceptionE = external constant ptr
@.str.36 = external hidden unnamed_addr constant [8 x i8], align 1
@.str.37 = external hidden unnamed_addr constant [5 x i8], align 1
@.str.38 = external hidden unnamed_addr constant [12 x i8], align 1
@.str.39 = external hidden unnamed_addr constant [22 x i8], align 1

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

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

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

declare i32 @__gxx_personality_v0(...)

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

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

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

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

; Function Attrs: mustprogress uwtable
declare dso_local { ptr, i64 } @_ZNSt6vectorIbSaIbEEixEm(ptr noundef nonnull align 8 dereferenceable(40), i64 noundef) #2 align 2

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

; Function Attrs: mustprogress nounwind uwtable
declare dso_local noundef nonnull align 4 dereferenceable(4) ptr @_ZNSt6vectorIiSaIiEEixEm(ptr noundef nonnull align 8 dereferenceable(24), i64 noundef) #1 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: mustprogress nounwind uwtable
declare dso_local noundef i64 @_ZNKSt6vectorIN9NOMAD_4_39EvalPointESaIS1_EE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24)) #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: 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 void @_ZN9NOMAD_4_311OutputQueue3AddERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEENS_11OutputLevelE(ptr noundef nonnull align 8 dereferenceable(32), i32 noundef) #2 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 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

; Function Attrs: mustprogress uwtable
define dso_local noundef i32 @_ZN9NOMAD_4_323SgtelibModelFilterCache11applyMethodENS_21FilterSelectionMethodE(ptr noundef nonnull align 8 dereferenceable(528) %0, i32 noundef %1) #2 align 2 personality ptr @__gxx_personality_v0 {
  %3 = alloca ptr, align 8
  %4 = alloca i32, align 4
  %5 = alloca %"class.std::__cxx11::basic_string", align 8
  %6 = alloca i64, align 8
  %7 = alloca i32, align 4
  %8 = alloca double, align 8
  %9 = alloca double, align 8
  %10 = alloca double, align 8
  %11 = alloca double, align 8
  %12 = alloca i32, align 4
  %13 = alloca double, align 8
  %14 = alloca %"class.NOMAD_4_3::Double", align 8
  %15 = alloca ptr, align 8
  %16 = alloca i32, align 4
  %17 = alloca %"class.NOMAD_4_3::Double", align 8
  %18 = alloca i64, align 8
  %19 = alloca %"struct.std::_Bit_reference", align 8
  %20 = alloca i64, align 8
  %21 = alloca %"struct.std::_Bit_reference", align 8
  %22 = alloca i32, align 4
  %23 = alloca %"class.std::__cxx11::basic_string", align 8
  %24 = alloca %"class.std::__cxx11::basic_string", align 8
  %25 = alloca %"class.NOMAD_4_3::Double", align 8
  %26 = alloca i64, align 8
  %27 = alloca %"struct.std::_Bit_reference", align 8
  %28 = alloca i32, align 4
  %29 = alloca %"class.std::__cxx11::basic_string", align 8
  %30 = alloca %"class.std::__cxx11::basic_string", align 8
  %31 = alloca %"class.NOMAD_4_3::Double", align 8
  %32 = alloca %"class.std::__cxx11::basic_string", align 8
  %33 = alloca %"class.std::__cxx11::basic_string", align 8
  %34 = alloca %"class.NOMAD_4_3::Double", align 8
  %35 = alloca double, align 8
  %36 = alloca i64, align 8
  %37 = alloca %"struct.std::_Bit_reference", align 8
  %38 = alloca i64, align 8
  %39 = alloca i32, align 4
  %40 = alloca %"struct.std::_Bit_reference", align 8
  %41 = alloca i32, align 4
  %42 = alloca i64, align 8
  %43 = alloca i64, align 8
  %44 = alloca %"struct.std::_Bit_reference", align 8
  %45 = alloca i32, align 4
  %46 = alloca i64, align 8
  %47 = alloca %"class.std::__cxx11::basic_string", align 8
  %48 = alloca %"class.std::__cxx11::basic_string", align 8
  %49 = alloca %"class.std::__cxx11::basic_string", align 8
  %50 = alloca %"class.std::allocator", align 1
  %51 = alloca i1, align 1
  store ptr %0, ptr %3, align 8, !tbaa !5
  store i32 %1, ptr %4, align 4, !tbaa !9
  %52 = load ptr, ptr %3, align 8
  call void @llvm.lifetime.start.p0(i64 32, ptr %5) #7
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2Ev(ptr noundef nonnull align 8 dereferenceable(32) %5) #7
  call void @llvm.lifetime.start.p0(i64 8, ptr %6) #7
  %53 = getelementptr inbounds %"class.NOMAD_4_3::SgtelibModelFilterCache", ptr %52, i32 0, i32 5
  %54 = call noundef i64 @_ZNKSt6vectorIN9NOMAD_4_39EvalPointESaIS1_EE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24) %53) #7
  store i64 %54, ptr %6, align 8, !tbaa !11
  call void @llvm.lifetime.start.p0(i64 4, ptr %7) #7
  store i32 -1, ptr %7, align 4, !tbaa !13
  call void @llvm.lifetime.start.p0(i64 8, ptr %8) #7
  store double 0x7FEFFFFFFFFFFFFF, ptr %8, align 8, !tbaa !15
  call void @llvm.lifetime.start.p0(i64 8, ptr %9) #7
  store double 0x7FEFFFFFFFFFFFFF, ptr %9, align 8, !tbaa !15
  call void @llvm.lifetime.start.p0(i64 8, ptr %10) #7
  store double 0.000000e+00, ptr %10, align 8, !tbaa !15
  call void @llvm.lifetime.start.p0(i64 8, ptr %11) #7
  store double 0.000000e+00, ptr %11, align 8, !tbaa !15
  call void @llvm.lifetime.start.p0(i64 4, ptr %12) #7
  store i32 0, ptr %12, align 4, !tbaa !13
  call void @llvm.lifetime.start.p0(i64 8, ptr %13) #7
  store double 0.000000e+00, ptr %13, align 8, !tbaa !15
  call void @llvm.lifetime.start.p0(i64 24, ptr %14) #7
  %55 = getelementptr inbounds %"class.NOMAD_4_3::SgtelibModelFilterCache", ptr %52, i32 0, i32 1
  %56 = load ptr, ptr %55, align 8, !tbaa !17
  invoke void @_ZNK9NOMAD_4_312SgtelibModel13getDeltaMNormEv(ptr dead_on_unwind writable sret(%"class.NOMAD_4_3::Double") align 8 %14, ptr noundef nonnull align 8 dereferenceable(552) %56)
          to label %57 unwind label %67

57:                                               ; preds = %2
  %58 = invoke noundef zeroext i1 @_ZNK9NOMAD_4_36Double9isDefinedEv(ptr noundef nonnull align 8 dereferenceable(17) %14)
          to label %59 unwind label %71

59:                                               ; preds = %57
  call void @_ZN9NOMAD_4_36DoubleD1Ev(ptr noundef nonnull align 8 dereferenceable(17) %14) #7
  call void @llvm.lifetime.end.p0(i64 24, ptr %14) #7
  br i1 %58, label %60, label %85

60:                                               ; preds = %59
  call void @llvm.lifetime.start.p0(i64 24, ptr %17) #7
  %61 = getelementptr inbounds %"class.NOMAD_4_3::SgtelibModelFilterCache", ptr %52, i32 0, i32 1
  %62 = load ptr, ptr %61, align 8, !tbaa !17
  invoke void @_ZNK9NOMAD_4_312SgtelibModel13getDeltaMNormEv(ptr dead_on_unwind writable sret(%"class.NOMAD_4_3::Double") align 8 %17, ptr noundef nonnull align 8 dereferenceable(552) %62)
          to label %63 unwind label %76

63:                                               ; preds = %60
  %64 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNK9NOMAD_4_36Double8todoubleEv(ptr noundef nonnull align 8 dereferenceable(17) %17)
          to label %65 unwind label %80

65:                                               ; preds = %63
  %66 = load double, ptr %64, align 8, !tbaa !15
  store double %66, ptr %13, align 8, !tbaa !15
  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
  br label %85

67:                                               ; preds = %2
  %68 = landingpad { ptr, i32 }
          cleanup
  %69 = extractvalue { ptr, i32 } %68, 0
  store ptr %69, ptr %15, align 8
  %70 = extractvalue { ptr, i32 } %68, 1
  store i32 %70, ptr %16, align 4
  br label %75

71:                                               ; preds = %57
  %72 = landingpad { ptr, i32 }
          cleanup
  %73 = extractvalue { ptr, i32 } %72, 0
  store ptr %73, ptr %15, align 8
  %74 = extractvalue { ptr, i32 } %72, 1
  store i32 %74, ptr %16, align 4
  call void @_ZN9NOMAD_4_36DoubleD1Ev(ptr noundef nonnull align 8 dereferenceable(17) %14) #7
  br label %75

75:                                               ; preds = %71, %67
  call void @llvm.lifetime.end.p0(i64 24, ptr %14) #7
  br label %631

76:                                               ; preds = %60
  %77 = landingpad { ptr, i32 }
          cleanup
  %78 = extractvalue { ptr, i32 } %77, 0
  store ptr %78, ptr %15, align 8
  %79 = extractvalue { ptr, i32 } %77, 1
  store i32 %79, ptr %16, align 4
  br label %84

80:                                               ; preds = %63
  %81 = landingpad { ptr, i32 }
          cleanup
  %82 = extractvalue { ptr, i32 } %81, 0
  store ptr %82, ptr %15, align 8
  %83 = extractvalue { ptr, i32 } %81, 1
  store i32 %83, ptr %16, align 4
  call void @_ZN9NOMAD_4_36DoubleD1Ev(ptr noundef nonnull align 8 dereferenceable(17) %17) #7
  br label %84

84:                                               ; preds = %80, %76
  call void @llvm.lifetime.end.p0(i64 24, ptr %17) #7
  br label %631

85:                                               ; preds = %65, %59
  %86 = load i32, ptr %4, align 4, !tbaa !9
  switch i32 %86, label %600 [
    i32 0, label %87
    i32 1, label %153
    i32 2, label %194
    i32 3, label %371
    i32 4, label %442
    i32 5, label %521
  ]

87:                                               ; preds = %85
  call void @llvm.lifetime.start.p0(i64 8, ptr %18) #7
  store i64 0, ptr %18, align 8, !tbaa !11
  br label %88

88:                                               ; preds = %149, %87
  %89 = load i64, ptr %18, align 8, !tbaa !11
  %90 = load i64, ptr %6, align 8, !tbaa !11
  %91 = icmp ult i64 %89, %90
  br i1 %91, label %93, label %92

92:                                               ; preds = %88
  call void @llvm.lifetime.end.p0(i64 8, ptr %18) #7
  br label %152

93:                                               ; preds = %88
  call void @llvm.lifetime.start.p0(i64 16, ptr %19) #7
  %94 = getelementptr inbounds %"class.NOMAD_4_3::SgtelibModelFilterCache", ptr %52, i32 0, i32 12
  %95 = load i64, ptr %18, align 8, !tbaa !11
  %96 = invoke { ptr, i64 } @_ZNSt6vectorIbSaIbEEixEm(ptr noundef nonnull align 8 dereferenceable(40) %94, i64 noundef %95)
          to label %97 unwind label %143

97:                                               ; preds = %93
  %98 = getelementptr inbounds { ptr, i64 }, ptr %19, i32 0, i32 0
  %99 = extractvalue { ptr, i64 } %96, 0
  store ptr %99, ptr %98, align 8
  %100 = getelementptr inbounds { ptr, i64 }, ptr %19, i32 0, i32 1
  %101 = extractvalue { ptr, i64 } %96, 1
  store i64 %101, ptr %100, align 8
  %102 = call noundef zeroext i1 @_ZNKSt14_Bit_referencecvbEv(ptr noundef nonnull align 8 dereferenceable(16) %19) #7
  br i1 %102, label %109, label %103

103:                                              ; preds = %97
  %104 = getelementptr inbounds %"class.NOMAD_4_3::SgtelibModelFilterCache", ptr %52, i32 0, i32 14
  %105 = load i64, ptr %18, align 8, !tbaa !11
  %106 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt6vectorIdSaIdEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %104, i64 noundef %105) #7
  %107 = load double, ptr %106, align 8, !tbaa !15
  %108 = fcmp ogt double %107, 0.000000e+00
  br label %109

109:                                              ; preds = %103, %97
  %110 = phi i1 [ false, %97 ], [ %108, %103 ]
  call void @llvm.lifetime.end.p0(i64 16, ptr %19) #7
  br i1 %110, label %111, label %148

111:                                              ; preds = %109
  %112 = getelementptr inbounds %"class.NOMAD_4_3::SgtelibModelFilterCache", ptr %52, i32 0, i32 7
  %113 = load i64, ptr %18, align 8, !tbaa !11
  %114 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt6vectorIdSaIdEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %112, i64 noundef %113) #7
  %115 = load double, ptr %114, align 8, !tbaa !15
  %116 = load double, ptr %9, align 8, !tbaa !15
  %117 = fcmp olt double %115, %116
  br i1 %117, label %132, label %118

118:                                              ; preds = %111
  %119 = getelementptr inbounds %"class.NOMAD_4_3::SgtelibModelFilterCache", ptr %52, i32 0, i32 7
  %120 = load i64, ptr %18, align 8, !tbaa !11
  %121 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt6vectorIdSaIdEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %119, i64 noundef %120) #7
  %122 = load double, ptr %121, align 8, !tbaa !15
  %123 = load double, ptr %9, align 8, !tbaa !15
  %124 = fcmp oeq double %122, %123
  br i1 %124, label %125, label %147

125:                                              ; preds = %118
  %126 = getelementptr inbounds %"class.NOMAD_4_3::SgtelibModelFilterCache", ptr %52, i32 0, i32 6
  %127 = load i64, ptr %18, align 8, !tbaa !11
  %128 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt6vectorIdSaIdEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %126, i64 noundef %127) #7
  %129 = load double, ptr %128, align 8, !tbaa !15
  %130 = load double, ptr %8, align 8, !tbaa !15
  %131 = fcmp olt double %129, %130
  br i1 %131, label %132, label %147

132:                                              ; preds = %125, %111
  %133 = getelementptr inbounds %"class.NOMAD_4_3::SgtelibModelFilterCache", ptr %52, i32 0, i32 7
  %134 = load i64, ptr %18, align 8, !tbaa !11
  %135 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt6vectorIdSaIdEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %133, i64 noundef %134) #7
  %136 = load double, ptr %135, align 8, !tbaa !15
  store double %136, ptr %9, align 8, !tbaa !15
  %137 = getelementptr inbounds %"class.NOMAD_4_3::SgtelibModelFilterCache", ptr %52, i32 0, i32 6
  %138 = load i64, ptr %18, align 8, !tbaa !11
  %139 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt6vectorIdSaIdEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %137, i64 noundef %138) #7
  %140 = load double, ptr %139, align 8, !tbaa !15
  store double %140, ptr %8, align 8, !tbaa !15
  %141 = load i64, ptr %18, align 8, !tbaa !11
  %142 = trunc i64 %141 to i32
  store i32 %142, ptr %7, align 4, !tbaa !13
  br label %147

143:                                              ; preds = %93
  %144 = landingpad { ptr, i32 }
          cleanup
  %145 = extractvalue { ptr, i32 } %144, 0
  store ptr %145, ptr %15, align 8
  %146 = extractvalue { ptr, i32 } %144, 1
  store i32 %146, ptr %16, align 4
  call void @llvm.lifetime.end.p0(i64 16, ptr %19) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %18) #7
  br label %631

147:                                              ; preds = %132, %125, %118
  br label %148

148:                                              ; preds = %147, %109
  br label %149

149:                                              ; preds = %148
  %150 = load i64, ptr %18, align 8, !tbaa !11
  %151 = add i64 %150, 1
  store i64 %151, ptr %18, align 8, !tbaa !11
  br label %88, !llvm.loop !66

152:                                              ; preds = %92
  br label %629

153:                                              ; preds = %85
  call void @llvm.lifetime.start.p0(i64 8, ptr %20) #7
  store i64 0, ptr %20, align 8, !tbaa !11
  br label %154

154:                                              ; preds = %190, %153
  %155 = load i64, ptr %20, align 8, !tbaa !11
  %156 = load i64, ptr %6, align 8, !tbaa !11
  %157 = icmp ult i64 %155, %156
  br i1 %157, label %159, label %158

158:                                              ; preds = %154
  call void @llvm.lifetime.end.p0(i64 8, ptr %20) #7
  br label %193

159:                                              ; preds = %154
  call void @llvm.lifetime.start.p0(i64 16, ptr %21) #7
  %160 = getelementptr inbounds %"class.NOMAD_4_3::SgtelibModelFilterCache", ptr %52, i32 0, i32 12
  %161 = load i64, ptr %20, align 8, !tbaa !11
  %162 = invoke { ptr, i64 } @_ZNSt6vectorIbSaIbEEixEm(ptr noundef nonnull align 8 dereferenceable(40) %160, i64 noundef %161)
          to label %163 unwind label %185

163:                                              ; preds = %159
  %164 = getelementptr inbounds { ptr, i64 }, ptr %21, i32 0, i32 0
  %165 = extractvalue { ptr, i64 } %162, 0
  store ptr %165, ptr %164, align 8
  %166 = getelementptr inbounds { ptr, i64 }, ptr %21, i32 0, i32 1
  %167 = extractvalue { ptr, i64 } %162, 1
  store i64 %167, ptr %166, align 8
  %168 = call noundef zeroext i1 @_ZNKSt14_Bit_referencecvbEv(ptr noundef nonnull align 8 dereferenceable(16) %21) #7
  br i1 %168, label %176, label %169

169:                                              ; preds = %163
  %170 = getelementptr inbounds %"class.NOMAD_4_3::SgtelibModelFilterCache", ptr %52, i32 0, i32 14
  %171 = load i64, ptr %20, align 8, !tbaa !11
  %172 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt6vectorIdSaIdEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %170, i64 noundef %171) #7
  %173 = load double, ptr %172, align 8, !tbaa !15
  %174 = load double, ptr %11, align 8, !tbaa !15
  %175 = fcmp oge double %173, %174
  br label %176

176:                                              ; preds = %169, %163
  %177 = phi i1 [ false, %163 ], [ %175, %169 ]
  call void @llvm.lifetime.end.p0(i64 16, ptr %21) #7
  br i1 %177, label %178, label %189

178:                                              ; preds = %176
  %179 = getelementptr inbounds %"class.NOMAD_4_3::SgtelibModelFilterCache", ptr %52, i32 0, i32 14
  %180 = load i64, ptr %20, align 8, !tbaa !11
  %181 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt6vectorIdSaIdEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %179, i64 noundef %180) #7
  %182 = load double, ptr %181, align 8, !tbaa !15
  store double %182, ptr %11, align 8, !tbaa !15
  %183 = load i64, ptr %20, align 8, !tbaa !11
  %184 = trunc i64 %183 to i32
  store i32 %184, ptr %7, align 4, !tbaa !13
  br label %189

185:                                              ; preds = %159
  %186 = landingpad { ptr, i32 }
          cleanup
  %187 = extractvalue { ptr, i32 } %186, 0
  store ptr %187, ptr %15, align 8
  %188 = extractvalue { ptr, i32 } %186, 1
  store i32 %188, ptr %16, align 4
  call void @llvm.lifetime.end.p0(i64 16, ptr %21) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %20) #7
  br label %631

189:                                              ; preds = %178, %176
  br label %190

190:                                              ; preds = %189
  %191 = load i64, ptr %20, align 8, !tbaa !11
  %192 = add i64 %191, 1
  store i64 %192, ptr %20, align 8, !tbaa !11
  br label %154, !llvm.loop !68

193:                                              ; preds = %158
  br label %629

194:                                              ; preds = %85
  call void @llvm.lifetime.start.p0(i64 4, ptr %22) #7
  store i32 7, ptr %22, align 4, !tbaa !69
  %195 = invoke noundef zeroext i1 @_ZN9NOMAD_4_311OutputQueue9GoodLevelERKNS_11OutputLevelE(ptr noundef nonnull align 4 dereferenceable(4) %22)
          to label %196 unwind label %205

196:                                              ; preds = %194
  call void @llvm.lifetime.end.p0(i64 4, ptr %22) #7
  br i1 %195, label %197, label %227

197:                                              ; preds = %196
  call void @llvm.lifetime.start.p0(i64 32, ptr %23) #7
  call void @llvm.lifetime.start.p0(i64 32, ptr %24) #7
  call void @llvm.lifetime.start.p0(i64 24, ptr %25) #7
  invoke void @_ZN9NOMAD_4_36DoubleC1ERKd(ptr noundef nonnull align 8 dereferenceable(17) %25, ptr noundef nonnull align 8 dereferenceable(8) %10)
          to label %198 unwind label %209

198:                                              ; preds = %197
  invoke void @_ZNK9NOMAD_4_36Double7displayB5cxx11Eim(ptr dead_on_unwind writable sret(%"class.std::__cxx11::basic_string") align 8 %24, ptr noundef nonnull align 8 dereferenceable(17) %25, i32 noundef 6, i64 noundef 0)
          to label %199 unwind label %213

199:                                              ; preds = %198
  invoke void @_ZStplIcSt11char_traitsIcESaIcEENSt7__cxx1112basic_stringIT_T0_T1_EEPKS5_OS8_(ptr dead_on_unwind writable sret(%"class.std::__cxx11::basic_string") align 8 %23, ptr noundef @.str.36, ptr noundef nonnull align 8 dereferenceable(32) %24)
          to label %200 unwind label %217

200:                                              ; preds = %199
  %201 = call noundef nonnull align 8 dereferenceable(32) ptr @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEaSEOS4_(ptr noundef nonnull align 8 dereferenceable(32) %5, ptr noundef nonnull align 8 dereferenceable(32) %23) #7
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %23) #7
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %24) #7
  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
  call void @llvm.lifetime.end.p0(i64 32, ptr %24) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr %23) #7
  %202 = getelementptr inbounds %"class.NOMAD_4_3::SgtelibModelFilterCache", ptr %52, i32 0, i32 4
  %203 = load i32, ptr %202, align 8, !tbaa !70
  invoke void @_ZN9NOMAD_4_311OutputQueue3AddERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEENS_11OutputLevelE(ptr noundef nonnull align 8 dereferenceable(32) %5, i32 noundef %203)
          to label %204 unwind label %223

204:                                              ; preds = %200
  br label %227

205:                                              ; preds = %194
  %206 = landingpad { ptr, i32 }
          cleanup
  %207 = extractvalue { ptr, i32 } %206, 0
  store ptr %207, ptr %15, align 8
  %208 = extractvalue { ptr, i32 } %206, 1
  store i32 %208, ptr %16, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %22) #7
  br label %631

209:                                              ; preds = %197
  %210 = landingpad { ptr, i32 }
          cleanup
  %211 = extractvalue { ptr, i32 } %210, 0
  store ptr %211, ptr %15, align 8
  %212 = extractvalue { ptr, i32 } %210, 1
  store i32 %212, ptr %16, align 4
  br label %222

213:                                              ; preds = %198
  %214 = landingpad { ptr, i32 }
          cleanup
  %215 = extractvalue { ptr, i32 } %214, 0
  store ptr %215, ptr %15, align 8
  %216 = extractvalue { ptr, i32 } %214, 1
  store i32 %216, ptr %16, align 4
  br label %221

217:                                              ; preds = %199
  %218 = landingpad { ptr, i32 }
          cleanup
  %219 = extractvalue { ptr, i32 } %218, 0
  store ptr %219, ptr %15, align 8
  %220 = extractvalue { ptr, i32 } %218, 1
  store i32 %220, ptr %16, align 4
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %24) #7
  br label %221

221:                                              ; preds = %217, %213
  call void @_ZN9NOMAD_4_36DoubleD1Ev(ptr noundef nonnull align 8 dereferenceable(17) %25) #7
  br label %222

222:                                              ; preds = %221, %209
  call void @llvm.lifetime.end.p0(i64 24, ptr %25) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr %24) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr %23) #7
  br label %631

223:                                              ; preds = %200
  %224 = landingpad { ptr, i32 }
          cleanup
  %225 = extractvalue { ptr, i32 } %224, 0
  store ptr %225, ptr %15, align 8
  %226 = extractvalue { ptr, i32 } %224, 1
  store i32 %226, ptr %16, align 4
  br label %631

227:                                              ; preds = %204, %196
  call void @llvm.lifetime.start.p0(i64 8, ptr %26) #7
  store i64 0, ptr %26, align 8, !tbaa !11
  br label %228

228:                                              ; preds = %366, %227
  %229 = load i64, ptr %26, align 8, !tbaa !11
  %230 = load i64, ptr %6, align 8, !tbaa !11
  %231 = icmp ult i64 %229, %230
  br i1 %231, label %233, label %232

232:                                              ; preds = %228
  call void @llvm.lifetime.end.p0(i64 8, ptr %26) #7
  br label %370

233:                                              ; preds = %228
  call void @llvm.lifetime.start.p0(i64 16, ptr %27) #7
  %234 = getelementptr inbounds %"class.NOMAD_4_3::SgtelibModelFilterCache", ptr %52, i32 0, i32 12
  %235 = load i64, ptr %26, align 8, !tbaa !11
  %236 = invoke { ptr, i64 } @_ZNSt6vectorIbSaIbEEixEm(ptr noundef nonnull align 8 dereferenceable(40) %234, i64 noundef %235)
          to label %237 unwind label %284

237:                                              ; preds = %233
  %238 = getelementptr inbounds { ptr, i64 }, ptr %27, i32 0, i32 0
  %239 = extractvalue { ptr, i64 } %236, 0
  store ptr %239, ptr %238, align 8
  %240 = getelementptr inbounds { ptr, i64 }, ptr %27, i32 0, i32 1
  %241 = extractvalue { ptr, i64 } %236, 1
  store i64 %241, ptr %240, align 8
  %242 = call noundef zeroext i1 @_ZNKSt14_Bit_referencecvbEv(ptr noundef nonnull align 8 dereferenceable(16) %27) #7
  br i1 %242, label %250, label %243

243:                                              ; preds = %237
  %244 = getelementptr inbounds %"class.NOMAD_4_3::SgtelibModelFilterCache", ptr %52, i32 0, i32 14
  %245 = load i64, ptr %26, align 8, !tbaa !11
  %246 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt6vectorIdSaIdEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %244, i64 noundef %245) #7
  %247 = load double, ptr %246, align 8, !tbaa !15
  %248 = load double, ptr %10, align 8, !tbaa !15
  %249 = fcmp oge double %247, %248
  br label %250

250:                                              ; preds = %243, %237
  %251 = phi i1 [ false, %237 ], [ %249, %243 ]
  call void @llvm.lifetime.end.p0(i64 16, ptr %27) #7
  br i1 %251, label %252, label %289

252:                                              ; preds = %250
  %253 = getelementptr inbounds %"class.NOMAD_4_3::SgtelibModelFilterCache", ptr %52, i32 0, i32 7
  %254 = load i64, ptr %26, align 8, !tbaa !11
  %255 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt6vectorIdSaIdEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %253, i64 noundef %254) #7
  %256 = load double, ptr %255, align 8, !tbaa !15
  %257 = load double, ptr %9, align 8, !tbaa !15
  %258 = fcmp olt double %256, %257
  br i1 %258, label %273, label %259

259:                                              ; preds = %252
  %260 = getelementptr inbounds %"class.NOMAD_4_3::SgtelibModelFilterCache", ptr %52, i32 0, i32 7
  %261 = load i64, ptr %26, align 8, !tbaa !11
  %262 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt6vectorIdSaIdEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %260, i64 noundef %261) #7
  %263 = load double, ptr %262, align 8, !tbaa !15
  %264 = load double, ptr %9, align 8, !tbaa !15
  %265 = fcmp oeq double %263, %264
  br i1 %265, label %266, label %288

266:                                              ; preds = %259
  %267 = getelementptr inbounds %"class.NOMAD_4_3::SgtelibModelFilterCache", ptr %52, i32 0, i32 6
  %268 = load i64, ptr %26, align 8, !tbaa !11
  %269 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt6vectorIdSaIdEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %267, i64 noundef %268) #7
  %270 = load double, ptr %269, align 8, !tbaa !15
  %271 = load double, ptr %8, align 8, !tbaa !15
  %272 = fcmp olt double %270, %271
  br i1 %272, label %273, label %288

273:                                              ; preds = %266, %252
  %274 = getelementptr inbounds %"class.NOMAD_4_3::SgtelibModelFilterCache", ptr %52, i32 0, i32 7
  %275 = load i64, ptr %26, align 8, !tbaa !11
  %276 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt6vectorIdSaIdEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %274, i64 noundef %275) #7
  %277 = load double, ptr %276, align 8, !tbaa !15
  store double %277, ptr %9, align 8, !tbaa !15
  %278 = getelementptr inbounds %"class.NOMAD_4_3::SgtelibModelFilterCache", ptr %52, i32 0, i32 6
  %279 = load i64, ptr %26, align 8, !tbaa !11
  %280 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt6vectorIdSaIdEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %278, i64 noundef %279) #7
  %281 = load double, ptr %280, align 8, !tbaa !15
  store double %281, ptr %8, align 8, !tbaa !15
  %282 = load i64, ptr %26, align 8, !tbaa !11
  %283 = trunc i64 %282 to i32
  store i32 %283, ptr %7, align 4, !tbaa !13
  br label %288

284:                                              ; preds = %233
  %285 = landingpad { ptr, i32 }
          cleanup
  %286 = extractvalue { ptr, i32 } %285, 0
  store ptr %286, ptr %15, align 8
  %287 = extractvalue { ptr, i32 } %285, 1
  store i32 %287, ptr %16, align 4
  call void @llvm.lifetime.end.p0(i64 16, ptr %27) #7
  br label %369

288:                                              ; preds = %273, %266, %259
  br label %289

289:                                              ; preds = %288, %250
  %290 = load i32, ptr %7, align 4, !tbaa !13
  %291 = icmp ne i32 -1, %290
  br i1 %291, label %292, label %365

292:                                              ; preds = %289
  call void @llvm.lifetime.start.p0(i64 4, ptr %28) #7
  store i32 7, ptr %28, align 4, !tbaa !69
  %293 = invoke noundef zeroext i1 @_ZN9NOMAD_4_311OutputQueue9GoodLevelERKNS_11OutputLevelE(ptr noundef nonnull align 4 dereferenceable(4) %28)
          to label %294 unwind label %314

294:                                              ; preds = %292
  call void @llvm.lifetime.end.p0(i64 4, ptr %28) #7
  br i1 %293, label %295, label %350

295:                                              ; preds = %294
  call void @llvm.lifetime.start.p0(i64 32, ptr %29) #7
  call void @llvm.lifetime.start.p0(i64 32, ptr %30) #7
  call void @llvm.lifetime.start.p0(i64 24, ptr %31) #7
  %296 = getelementptr inbounds %"class.NOMAD_4_3::SgtelibModelFilterCache", ptr %52, i32 0, i32 14
  %297 = load i32, ptr %7, align 4, !tbaa !13
  %298 = sext i32 %297 to i64
  %299 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt6vectorIdSaIdEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %296, i64 noundef %298) #7
  invoke void @_ZN9NOMAD_4_36DoubleC1ERKd(ptr noundef nonnull align 8 dereferenceable(17) %31, ptr noundef nonnull align 8 dereferenceable(8) %299)
          to label %300 unwind label %318

300:                                              ; preds = %295
  invoke void @_ZNK9NOMAD_4_36Double7displayB5cxx11Eim(ptr dead_on_unwind writable sret(%"class.std::__cxx11::basic_string") align 8 %30, ptr noundef nonnull align 8 dereferenceable(17) %31, i32 noundef 6, i64 noundef 0)
          to label %301 unwind label %322

301:                                              ; preds = %300
  invoke void @_ZStplIcSt11char_traitsIcESaIcEENSt7__cxx1112basic_stringIT_T0_T1_EEPKS5_OS8_(ptr dead_on_unwind writable sret(%"class.std::__cxx11::basic_string") align 8 %29, ptr noundef @.str.37, ptr noundef nonnull align 8 dereferenceable(32) %30)
          to label %302 unwind label %326

302:                                              ; preds = %301
  %303 = call noundef nonnull align 8 dereferenceable(32) ptr @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEaSEOS4_(ptr noundef nonnull align 8 dereferenceable(32) %5, ptr noundef nonnull align 8 dereferenceable(32) %29) #7
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %29) #7
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %30) #7
  call void @_ZN9NOMAD_4_36DoubleD1Ev(ptr noundef nonnull align 8 dereferenceable(17) %31) #7
  call void @llvm.lifetime.end.p0(i64 24, ptr %31) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr %30) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr %29) #7
  %304 = getelementptr inbounds %"class.NOMAD_4_3::SgtelibModelFilterCache", ptr %52, i32 0, i32 4
  %305 = load i32, ptr %304, align 8, !tbaa !70
  invoke void @_ZN9NOMAD_4_311OutputQueue3AddERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEENS_11OutputLevelE(ptr noundef nonnull align 8 dereferenceable(32) %5, i32 noundef %305)
          to label %306 unwind label %332

306:                                              ; preds = %302
  call void @llvm.lifetime.start.p0(i64 32, ptr %32) #7
  call void @llvm.lifetime.start.p0(i64 32, ptr %33) #7
  call void @llvm.lifetime.start.p0(i64 24, ptr %34) #7
  invoke void @_ZN9NOMAD_4_36DoubleC1ERKd(ptr noundef nonnull align 8 dereferenceable(17) %34, ptr noundef nonnull align 8 dereferenceable(8) %9)
          to label %307 unwind label %336

307:                                              ; preds = %306
  invoke void @_ZNK9NOMAD_4_36Double7displayB5cxx11Eim(ptr dead_on_unwind writable sret(%"class.std::__cxx11::basic_string") align 8 %33, ptr noundef nonnull align 8 dereferenceable(17) %34, i32 noundef 6, i64 noundef 0)
          to label %308 unwind label %340

308:                                              ; preds = %307
  invoke void @_ZStplIcSt11char_traitsIcESaIcEENSt7__cxx1112basic_stringIT_T0_T1_EEPKS5_OS8_(ptr dead_on_unwind writable sret(%"class.std::__cxx11::basic_string") align 8 %32, ptr noundef @.str.38, ptr noundef nonnull align 8 dereferenceable(32) %33)
          to label %309 unwind label %344

309:                                              ; preds = %308
  %310 = call noundef nonnull align 8 dereferenceable(32) ptr @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEaSEOS4_(ptr noundef nonnull align 8 dereferenceable(32) %5, ptr noundef nonnull align 8 dereferenceable(32) %32) #7
  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) %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 %34) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr %33) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr %32) #7
  %311 = getelementptr inbounds %"class.NOMAD_4_3::SgtelibModelFilterCache", ptr %52, i32 0, i32 4
  %312 = load i32, ptr %311, align 8, !tbaa !70
  invoke void @_ZN9NOMAD_4_311OutputQueue3AddERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEENS_11OutputLevelE(ptr noundef nonnull align 8 dereferenceable(32) %5, i32 noundef %312)
          to label %313 unwind label %332

313:                                              ; preds = %309
  br label %350

314:                                              ; preds = %292
  %315 = landingpad { ptr, i32 }
          cleanup
  %316 = extractvalue { ptr, i32 } %315, 0
  store ptr %316, ptr %15, align 8
  %317 = extractvalue { ptr, i32 } %315, 1
  store i32 %317, ptr %16, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %28) #7
  br label %369

318:                                              ; preds = %295
  %319 = landingpad { ptr, i32 }
          cleanup
  %320 = extractvalue { ptr, i32 } %319, 0
  store ptr %320, ptr %15, align 8
  %321 = extractvalue { ptr, i32 } %319, 1
  store i32 %321, ptr %16, align 4
  br label %331

322:                                              ; preds = %300
  %323 = landingpad { ptr, i32 }
          cleanup
  %324 = extractvalue { ptr, i32 } %323, 0
  store ptr %324, ptr %15, align 8
  %325 = extractvalue { ptr, i32 } %323, 1
  store i32 %325, ptr %16, align 4
  br label %330

326:                                              ; preds = %301
  %327 = landingpad { ptr, i32 }
          cleanup
  %328 = extractvalue { ptr, i32 } %327, 0
  store ptr %328, ptr %15, align 8
  %329 = extractvalue { ptr, i32 } %327, 1
  store i32 %329, ptr %16, align 4
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %30) #7
  br label %330

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

331:                                              ; preds = %330, %318
  call void @llvm.lifetime.end.p0(i64 24, ptr %31) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr %30) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr %29) #7
  br label %369

332:                                              ; preds = %309, %302
  %333 = landingpad { ptr, i32 }
          cleanup
  %334 = extractvalue { ptr, i32 } %333, 0
  store ptr %334, ptr %15, align 8
  %335 = extractvalue { ptr, i32 } %333, 1
  store i32 %335, ptr %16, align 4
  br label %369

336:                                              ; preds = %306
  %337 = landingpad { ptr, i32 }
          cleanup
  %338 = extractvalue { ptr, i32 } %337, 0
  store ptr %338, ptr %15, align 8
  %339 = extractvalue { ptr, i32 } %337, 1
  store i32 %339, ptr %16, align 4
  br label %349

340:                                              ; preds = %307
  %341 = landingpad { ptr, i32 }
          cleanup
  %342 = extractvalue { ptr, i32 } %341, 0
  store ptr %342, ptr %15, align 8
  %343 = extractvalue { ptr, i32 } %341, 1
  store i32 %343, ptr %16, align 4
  br label %348

344:                                              ; preds = %308
  %345 = landingpad { ptr, i32 }
          cleanup
  %346 = extractvalue { ptr, i32 } %345, 0
  store ptr %346, ptr %15, align 8
  %347 = extractvalue { ptr, i32 } %345, 1
  store i32 %347, ptr %16, align 4
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %33) #7
  br label %348

348:                                              ; preds = %344, %340
  call void @_ZN9NOMAD_4_36DoubleD1Ev(ptr noundef nonnull align 8 dereferenceable(17) %34) #7
  br label %349

349:                                              ; preds = %348, %336
  call void @llvm.lifetime.end.p0(i64 24, ptr %34) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr %33) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr %32) #7
  br label %369

350:                                              ; preds = %313, %294
  call void @llvm.lifetime.start.p0(i64 8, ptr %35) #7
  %351 = getelementptr inbounds %"class.NOMAD_4_3::SgtelibModelFilterCache", ptr %52, i32 0, i32 14
  %352 = load i32, ptr %7, align 4, !tbaa !13
  %353 = sext i32 %352 to i64
  %354 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt6vectorIdSaIdEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %351, i64 noundef %353) #7
  %355 = load double, ptr %354, align 8, !tbaa !15
  %356 = load double, ptr %13, align 8, !tbaa !15
  %357 = fadd double %355, %356
  store double %357, ptr %35, align 8, !tbaa !15
  %358 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZSt3maxIdERKT_S2_S2_(ptr noundef nonnull align 8 dereferenceable(8) %10, ptr noundef nonnull align 8 dereferenceable(8) %35)
          to label %359 unwind label %361

359:                                              ; preds = %350
  %360 = load double, ptr %358, align 8, !tbaa !15
  store double %360, ptr %10, align 8, !tbaa !15
  call void @llvm.lifetime.end.p0(i64 8, ptr %35) #7
  br label %365

361:                                              ; preds = %350
  %362 = landingpad { ptr, i32 }
          cleanup
  %363 = extractvalue { ptr, i32 } %362, 0
  store ptr %363, ptr %15, align 8
  %364 = extractvalue { ptr, i32 } %362, 1
  store i32 %364, ptr %16, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %35) #7
  br label %369

365:                                              ; preds = %359, %289
  br label %366

366:                                              ; preds = %365
  %367 = load i64, ptr %26, align 8, !tbaa !11
  %368 = add i64 %367, 1
  store i64 %368, ptr %26, align 8, !tbaa !11
  br label %228, !llvm.loop !71

369:                                              ; preds = %361, %349, %332, %331, %314, %284
  call void @llvm.lifetime.end.p0(i64 8, ptr %26) #7
  br label %631

370:                                              ; preds = %232
  br label %629

371:                                              ; preds = %85
  call void @llvm.lifetime.start.p0(i64 8, ptr %36) #7
  store i64 0, ptr %36, align 8, !tbaa !11
  br label %372

372:                                              ; preds = %438, %371
  %373 = load i64, ptr %36, align 8, !tbaa !11
  %374 = load i64, ptr %6, align 8, !tbaa !11
  %375 = icmp ult i64 %373, %374
  br i1 %375, label %377, label %376

376:                                              ; preds = %372
  call void @llvm.lifetime.end.p0(i64 8, ptr %36) #7
  br label %441

377:                                              ; preds = %372
  call void @llvm.lifetime.start.p0(i64 16, ptr %37) #7
  %378 = getelementptr inbounds %"class.NOMAD_4_3::SgtelibModelFilterCache", ptr %52, i32 0, i32 12
  %379 = load i64, ptr %36, align 8, !tbaa !11
  %380 = invoke { ptr, i64 } @_ZNSt6vectorIbSaIbEEixEm(ptr noundef nonnull align 8 dereferenceable(40) %378, i64 noundef %379)
          to label %381 unwind label %418

381:                                              ; preds = %377
  %382 = getelementptr inbounds { ptr, i64 }, ptr %37, i32 0, i32 0
  %383 = extractvalue { ptr, i64 } %380, 0
  store ptr %383, ptr %382, align 8
  %384 = getelementptr inbounds { ptr, i64 }, ptr %37, i32 0, i32 1
  %385 = extractvalue { ptr, i64 } %380, 1
  store i64 %385, ptr %384, align 8
  %386 = call noundef zeroext i1 @_ZNKSt14_Bit_referencecvbEv(ptr noundef nonnull align 8 dereferenceable(16) %37) #7
  br i1 %386, label %409, label %387

387:                                              ; preds = %381
  %388 = getelementptr inbounds %"class.NOMAD_4_3::SgtelibModelFilterCache", ptr %52, i32 0, i32 8
  %389 = load i64, ptr %36, align 8, !tbaa !11
  %390 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt6vectorIdSaIdEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %388, i64 noundef %389) #7
  %391 = load double, ptr %390, align 8, !tbaa !15
  %392 = getelementptr inbounds %"class.NOMAD_4_3::SgtelibModelFilterCache", ptr %52, i32 0, i32 17
  %393 = load double, ptr %392, align 8, !tbaa !72
  %394 = fcmp ole double %391, %393
  br i1 %394, label %395, label %409

395:                                              ; preds = %387
  %396 = getelementptr inbounds %"class.NOMAD_4_3::SgtelibModelFilterCache", ptr %52, i32 0, i32 6
  %397 = load i64, ptr %36, align 8, !tbaa !11
  %398 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt6vectorIdSaIdEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %396, i64 noundef %397) #7
  %399 = load double, ptr %398, align 8, !tbaa !15
  %400 = load double, ptr %8, align 8, !tbaa !15
  %401 = fcmp olt double %399, %400
  br i1 %401, label %402, label %409

402:                                              ; preds = %395
  %403 = getelementptr inbounds %"class.NOMAD_4_3::SgtelibModelFilterCache", ptr %52, i32 0, i32 14
  %404 = load i64, ptr %36, align 8, !tbaa !11
  %405 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt6vectorIdSaIdEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %403, i64 noundef %404) #7
  %406 = load double, ptr %405, align 8, !tbaa !15
  %407 = load double, ptr %13, align 8, !tbaa !15
  %408 = fcmp ogt double %406, %407
  br label %409

409:                                              ; preds = %402, %395, %387, %381
  %410 = phi i1 [ false, %395 ], [ false, %387 ], [ false, %381 ], [ %408, %402 ]
  call void @llvm.lifetime.end.p0(i64 16, ptr %37) #7
  br i1 %410, label %411, label %422

411:                                              ; preds = %409
  %412 = getelementptr inbounds %"class.NOMAD_4_3::SgtelibModelFilterCache", ptr %52, i32 0, i32 6
  %413 = load i64, ptr %36, align 8, !tbaa !11
  %414 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt6vectorIdSaIdEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %412, i64 noundef %413) #7
  %415 = load double, ptr %414, align 8, !tbaa !15
  store double %415, ptr %8, align 8, !tbaa !15
  %416 = load i64, ptr %36, align 8, !tbaa !11
  %417 = trunc i64 %416 to i32
  store i32 %417, ptr %7, align 4, !tbaa !13
  br label %422

418:                                              ; preds = %377
  %419 = landingpad { ptr, i32 }
          cleanup
  %420 = extractvalue { ptr, i32 } %419, 0
  store ptr %420, ptr %15, align 8
  %421 = extractvalue { ptr, i32 } %419, 1
  store i32 %421, ptr %16, align 4
  call void @llvm.lifetime.end.p0(i64 16, ptr %37) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %36) #7
  br label %631

422:                                              ; preds = %411, %409
  %423 = load i32, ptr %7, align 4, !tbaa !13
  %424 = icmp eq i32 -1, %423
  br i1 %424, label %425, label %429

425:                                              ; preds = %422
  %426 = getelementptr inbounds %"class.NOMAD_4_3::SgtelibModelFilterCache", ptr %52, i32 0, i32 17
  %427 = load double, ptr %426, align 8, !tbaa !72
  %428 = fmul double %427, 5.000000e-01
  store double %428, ptr %426, align 8, !tbaa !72
  br label %437

429:                                              ; preds = %422
  %430 = getelementptr inbounds %"class.NOMAD_4_3::SgtelibModelFilterCache", ptr %52, i32 0, i32 8
  %431 = load i32, ptr %7, align 4, !tbaa !13
  %432 = sext i32 %431 to i64
  %433 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt6vectorIdSaIdEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %430, i64 noundef %432) #7
  %434 = load double, ptr %433, align 8, !tbaa !15
  %435 = fmul double 2.000000e+00, %434
  %436 = getelementptr inbounds %"class.NOMAD_4_3::SgtelibModelFilterCache", ptr %52, i32 0, i32 17
  store double %435, ptr %436, align 8, !tbaa !72
  br label %437

437:                                              ; preds = %429, %425
  br label %438

438:                                              ; preds = %437
  %439 = load i64, ptr %36, align 8, !tbaa !11
  %440 = add i64 %439, 1
  store i64 %440, ptr %36, align 8, !tbaa !11
  br label %372, !llvm.loop !73

441:                                              ; preds = %376
  br label %629

442:                                              ; preds = %85
  call void @llvm.lifetime.start.p0(i64 8, ptr %38) #7
  store i64 0, ptr %38, align 8, !tbaa !11
  br label %443

443:                                              ; preds = %517, %442
  %444 = load i64, ptr %38, align 8, !tbaa !11
  %445 = load i64, ptr %6, align 8, !tbaa !11
  %446 = icmp ult i64 %444, %445
  br i1 %446, label %448, label %447

447:                                              ; preds = %443
  store i32 15, ptr %39, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %38) #7
  br label %520

448:                                              ; preds = %443
  call void @llvm.lifetime.start.p0(i64 16, ptr %40) #7
  %449 = getelementptr inbounds %"class.NOMAD_4_3::SgtelibModelFilterCache", ptr %52, i32 0, i32 12
  %450 = load i64, ptr %38, align 8, !tbaa !11
  %451 = invoke { ptr, i64 } @_ZNSt6vectorIbSaIbEEixEm(ptr noundef nonnull align 8 dereferenceable(40) %449, i64 noundef %450)
          to label %452 unwind label %479

452:                                              ; preds = %448
  %453 = getelementptr inbounds { ptr, i64 }, ptr %40, i32 0, i32 0
  %454 = extractvalue { ptr, i64 } %451, 0
  store ptr %454, ptr %453, align 8
  %455 = getelementptr inbounds { ptr, i64 }, ptr %40, i32 0, i32 1
  %456 = extractvalue { ptr, i64 } %451, 1
  store i64 %456, ptr %455, align 8
  %457 = call noundef zeroext i1 @_ZNKSt14_Bit_referencecvbEv(ptr noundef nonnull align 8 dereferenceable(16) %40) #7
  br i1 %457, label %464, label %458

458:                                              ; preds = %452
  %459 = getelementptr inbounds %"class.NOMAD_4_3::SgtelibModelFilterCache", ptr %52, i32 0, i32 11
  %460 = load i64, ptr %38, align 8, !tbaa !11
  %461 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt6vectorIdSaIdEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %459, i64 noundef %460) #7
  %462 = load double, ptr %461, align 8, !tbaa !15
  %463 = fcmp ogt double %462, 0.000000e+00
  br label %464

464:                                              ; preds = %458, %452
  %465 = phi i1 [ false, %452 ], [ %463, %458 ]
  call void @llvm.lifetime.end.p0(i64 16, ptr %40) #7
  br i1 %465, label %466, label %516

466:                                              ; preds = %464
  call void @llvm.lifetime.start.p0(i64 4, ptr %41) #7
  %467 = getelementptr inbounds %"class.NOMAD_4_3::SgtelibModelFilterCache", ptr %52, i32 0, i32 15
  %468 = load i64, ptr %38, align 8, !tbaa !11
  %469 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNSt6vectorIiSaIiEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %467, i64 noundef %468) #7
  %470 = load i32, ptr %469, align 4, !tbaa !13
  store i32 %470, ptr %41, align 4, !tbaa !13
  %471 = load i32, ptr %41, align 4, !tbaa !13
  %472 = icmp eq i32 -1, %471
  br i1 %472, label %473, label %507

473:                                              ; preds = %466
  store i32 0, ptr %41, align 4, !tbaa !13
  call void @llvm.lifetime.start.p0(i64 8, ptr %42) #7
  store i64 0, ptr %42, align 8, !tbaa !11
  br label %474

474:                                              ; preds = %499, %473
  %475 = load i64, ptr %42, align 8, !tbaa !11
  %476 = load i64, ptr %6, align 8, !tbaa !11
  %477 = icmp ult i64 %475, %476
  br i1 %477, label %483, label %478

478:                                              ; preds = %474
  store i32 18, ptr %39, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %42) #7
  br label %502

479:                                              ; preds = %448
  %480 = landingpad { ptr, i32 }
          cleanup
  %481 = extractvalue { ptr, i32 } %480, 0
  store ptr %481, ptr %15, align 8
  %482 = extractvalue { ptr, i32 } %480, 1
  store i32 %482, ptr %16, align 4
  call void @llvm.lifetime.end.p0(i64 16, ptr %40) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %38) #7
  br label %631

483:                                              ; preds = %474
  %484 = getelementptr inbounds %"class.NOMAD_4_3::SgtelibModelFilterCache", ptr %52, i32 0, i32 10
  %485 = load i64, ptr %38, align 8, !tbaa !11
  %486 = call noundef nonnull align 8 dereferenceable(24) ptr @_ZNSt6vectorIS_IdSaIdEESaIS1_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %484, i64 noundef %485) #7
  %487 = load i64, ptr %42, align 8, !tbaa !11
  %488 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt6vectorIdSaIdEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %486, i64 noundef %487) #7
  %489 = load double, ptr %488, align 8, !tbaa !15
  %490 = getelementptr inbounds %"class.NOMAD_4_3::SgtelibModelFilterCache", ptr %52, i32 0, i32 11
  %491 = load i64, ptr %38, align 8, !tbaa !11
  %492 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt6vectorIdSaIdEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %490, i64 noundef %491) #7
  %493 = load double, ptr %492, align 8, !tbaa !15
  %494 = fcmp ole double %489, %493
  br i1 %494, label %495, label %498

495:                                              ; preds = %483
  %496 = load i32, ptr %41, align 4, !tbaa !13
  %497 = add nsw i32 %496, 1
  store i32 %497, ptr %41, align 4, !tbaa !13
  br label %498

498:                                              ; preds = %495, %483
  br label %499

499:                                              ; preds = %498
  %500 = load i64, ptr %42, align 8, !tbaa !11
  %501 = add i64 %500, 1
  store i64 %501, ptr %42, align 8, !tbaa !11
  br label %474, !llvm.loop !74

502:                                              ; preds = %478
  %503 = load i32, ptr %41, align 4, !tbaa !13
  %504 = getelementptr inbounds %"class.NOMAD_4_3::SgtelibModelFilterCache", ptr %52, i32 0, i32 15
  %505 = load i64, ptr %38, align 8, !tbaa !11
  %506 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNSt6vectorIiSaIiEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %504, i64 noundef %505) #7
  store i32 %503, ptr %506, align 4, !tbaa !13
  br label %507

507:                                              ; preds = %502, %466
  %508 = load i32, ptr %41, align 4, !tbaa !13
  %509 = load i32, ptr %12, align 4, !tbaa !13
  %510 = icmp sgt i32 %508, %509
  br i1 %510, label %511, label %515

511:                                              ; preds = %507
  %512 = load i32, ptr %41, align 4, !tbaa !13
  store i32 %512, ptr %12, align 4, !tbaa !13
  %513 = load i64, ptr %38, align 8, !tbaa !11
  %514 = trunc i64 %513 to i32
  store i32 %514, ptr %7, align 4, !tbaa !13
  br label %515

515:                                              ; preds = %511, %507
  call void @llvm.lifetime.end.p0(i64 4, ptr %41) #7
  br label %516

516:                                              ; preds = %515, %464
  br label %517

517:                                              ; preds = %516
  %518 = load i64, ptr %38, align 8, !tbaa !11
  %519 = add i64 %518, 1
  store i64 %519, ptr %38, align 8, !tbaa !11
  br label %443, !llvm.loop !75

520:                                              ; preds = %447
  br label %629

521:                                              ; preds = %85
  store i32 0, ptr %12, align 4, !tbaa !13
  call void @llvm.lifetime.start.p0(i64 8, ptr %43) #7
  store i64 0, ptr %43, align 8, !tbaa !11
  br label %522

522:                                              ; preds = %596, %521
  %523 = load i64, ptr %43, align 8, !tbaa !11
  %524 = load i64, ptr %6, align 8, !tbaa !11
  %525 = icmp ult i64 %523, %524
  br i1 %525, label %527, label %526

526:                                              ; preds = %522
  store i32 21, ptr %39, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %43) #7
  br label %599

527:                                              ; preds = %522
  call void @llvm.lifetime.start.p0(i64 16, ptr %44) #7
  %528 = getelementptr inbounds %"class.NOMAD_4_3::SgtelibModelFilterCache", ptr %52, i32 0, i32 12
  %529 = load i64, ptr %43, align 8, !tbaa !11
  %530 = invoke { ptr, i64 } @_ZNSt6vectorIbSaIbEEixEm(ptr noundef nonnull align 8 dereferenceable(40) %528, i64 noundef %529)
          to label %531 unwind label %558

531:                                              ; preds = %527
  %532 = getelementptr inbounds { ptr, i64 }, ptr %44, i32 0, i32 0
  %533 = extractvalue { ptr, i64 } %530, 0
  store ptr %533, ptr %532, align 8
  %534 = getelementptr inbounds { ptr, i64 }, ptr %44, i32 0, i32 1
  %535 = extractvalue { ptr, i64 } %530, 1
  store i64 %535, ptr %534, align 8
  %536 = call noundef zeroext i1 @_ZNKSt14_Bit_referencecvbEv(ptr noundef nonnull align 8 dereferenceable(16) %44) #7
  br i1 %536, label %543, label %537

537:                                              ; preds = %531
  %538 = getelementptr inbounds %"class.NOMAD_4_3::SgtelibModelFilterCache", ptr %52, i32 0, i32 14
  %539 = load i64, ptr %43, align 8, !tbaa !11
  %540 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt6vectorIdSaIdEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %538, i64 noundef %539) #7
  %541 = load double, ptr %540, align 8, !tbaa !15
  %542 = fcmp ogt double %541, 0.000000e+00
  br label %543

543:                                              ; preds = %537, %531
  %544 = phi i1 [ false, %531 ], [ %542, %537 ]
  call void @llvm.lifetime.end.p0(i64 16, ptr %44) #7
  br i1 %544, label %545, label %595

545:                                              ; preds = %543
  call void @llvm.lifetime.start.p0(i64 4, ptr %45) #7
  %546 = getelementptr inbounds %"class.NOMAD_4_3::SgtelibModelFilterCache", ptr %52, i32 0, i32 16
  %547 = load i64, ptr %43, align 8, !tbaa !11
  %548 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNSt6vectorIiSaIiEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %546, i64 noundef %547) #7
  %549 = load i32, ptr %548, align 4, !tbaa !13
  store i32 %549, ptr %45, align 4, !tbaa !13
  %550 = load i32, ptr %45, align 4, !tbaa !13
  %551 = icmp eq i32 -1, %550
  br i1 %551, label %552, label %586

552:                                              ; preds = %545
  store i32 0, ptr %45, align 4, !tbaa !13
  call void @llvm.lifetime.start.p0(i64 8, ptr %46) #7
  store i64 0, ptr %46, align 8, !tbaa !11
  br label %553

553:                                              ; preds = %578, %552
  %554 = load i64, ptr %46, align 8, !tbaa !11
  %555 = load i64, ptr %6, align 8, !tbaa !11
  %556 = icmp ult i64 %554, %555
  br i1 %556, label %562, label %557

557:                                              ; preds = %553
  store i32 24, ptr %39, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %46) #7
  br label %581

558:                                              ; preds = %527
  %559 = landingpad { ptr, i32 }
          cleanup
  %560 = extractvalue { ptr, i32 } %559, 0
  store ptr %560, ptr %15, align 8
  %561 = extractvalue { ptr, i32 } %559, 1
  store i32 %561, ptr %16, align 4
  call void @llvm.lifetime.end.p0(i64 16, ptr %44) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %43) #7
  br label %631

562:                                              ; preds = %553
  %563 = getelementptr inbounds %"class.NOMAD_4_3::SgtelibModelFilterCache", ptr %52, i32 0, i32 10
  %564 = load i64, ptr %43, align 8, !tbaa !11
  %565 = call noundef nonnull align 8 dereferenceable(24) ptr @_ZNSt6vectorIS_IdSaIdEESaIS1_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %563, i64 noundef %564) #7
  %566 = load i64, ptr %46, align 8, !tbaa !11
  %567 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt6vectorIdSaIdEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %565, i64 noundef %566) #7
  %568 = load double, ptr %567, align 8, !tbaa !15
  %569 = getelementptr inbounds %"class.NOMAD_4_3::SgtelibModelFilterCache", ptr %52, i32 0, i32 14
  %570 = load i64, ptr %43, align 8, !tbaa !11
  %571 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt6vectorIdSaIdEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %569, i64 noundef %570) #7
  %572 = load double, ptr %571, align 8, !tbaa !15
  %573 = fcmp ole double %568, %572
  br i1 %573, label %574, label %577

574:                                              ; preds = %562
  %575 = load i32, ptr %45, align 4, !tbaa !13
  %576 = add nsw i32 %575, 1
  store i32 %576, ptr %45, align 4, !tbaa !13
  br label %577

577:                                              ; preds = %574, %562
  br label %578

578:                                              ; preds = %577
  %579 = load i64, ptr %46, align 8, !tbaa !11
  %580 = add i64 %579, 1
  store i64 %580, ptr %46, align 8, !tbaa !11
  br label %553, !llvm.loop !76

581:                                              ; preds = %557
  %582 = load i32, ptr %45, align 4, !tbaa !13
  %583 = getelementptr inbounds %"class.NOMAD_4_3::SgtelibModelFilterCache", ptr %52, i32 0, i32 16
  %584 = load i64, ptr %43, align 8, !tbaa !11
  %585 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNSt6vectorIiSaIiEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %583, i64 noundef %584) #7
  store i32 %582, ptr %585, align 4, !tbaa !13
  br label %586

586:                                              ; preds = %581, %545
  %587 = load i32, ptr %45, align 4, !tbaa !13
  %588 = load i32, ptr %12, align 4, !tbaa !13
  %589 = icmp sgt i32 %587, %588
  br i1 %589, label %590, label %594

590:                                              ; preds = %586
  %591 = load i32, ptr %45, align 4, !tbaa !13
  store i32 %591, ptr %12, align 4, !tbaa !13
  %592 = load i64, ptr %43, align 8, !tbaa !11
  %593 = trunc i64 %592 to i32
  store i32 %593, ptr %7, align 4, !tbaa !13
  br label %594

594:                                              ; preds = %590, %586
  call void @llvm.lifetime.end.p0(i64 4, ptr %45) #7
  br label %595

595:                                              ; preds = %594, %543
  br label %596

596:                                              ; preds = %595
  %597 = load i64, ptr %43, align 8, !tbaa !11
  %598 = add i64 %597, 1
  store i64 %598, ptr %43, align 8, !tbaa !11
  br label %522, !llvm.loop !77

599:                                              ; preds = %526
  br label %629

600:                                              ; preds = %85
  call void @llvm.lifetime.start.p0(i64 32, ptr %47) #7
  call void @llvm.lifetime.start.p0(i64 32, ptr %48) #7
  %601 = load i32, ptr %4, align 4, !tbaa !9
  invoke void @_ZN9NOMAD_4_34itosB5cxx11Ei(ptr dead_on_unwind writable sret(%"class.std::__cxx11::basic_string") align 8 %48, i32 noundef %601)
          to label %602 unwind label %608

602:                                              ; preds = %600
  invoke void @_ZStplIcSt11char_traitsIcESaIcEENSt7__cxx1112basic_stringIT_T0_T1_EEPKS5_OS8_(ptr dead_on_unwind writable sret(%"class.std::__cxx11::basic_string") align 8 %47, ptr noundef @.str.39, ptr noundef nonnull align 8 dereferenceable(32) %48)
          to label %603 unwind label %612

603:                                              ; preds = %602
  %604 = call noundef nonnull align 8 dereferenceable(32) ptr @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEaSEOS4_(ptr noundef nonnull align 8 dereferenceable(32) %5, ptr noundef nonnull align 8 dereferenceable(32) %47) #7
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %47) #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 @llvm.lifetime.end.p0(i64 32, ptr %47) #7
  store i1 true, ptr %51, align 1
  %605 = call ptr @__cxa_allocate_exception(i64 112) #7
  call void @llvm.lifetime.start.p0(i64 32, ptr %49) #7
  call void @llvm.lifetime.start.p0(i64 1, ptr %50) #7
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %50) #7
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %49, ptr noundef @.str.24, ptr noundef nonnull align 1 dereferenceable(1) %50)
          to label %606 unwind label %617

606:                                              ; preds = %603
  invoke void @_ZN9NOMAD_4_39ExceptionC2ERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEmS8_(ptr noundef nonnull align 8 dereferenceable(112) %605, ptr noundef nonnull align 8 dereferenceable(32) %49, i64 noundef 567, ptr noundef nonnull align 8 dereferenceable(32) %5)
          to label %607 unwind label %621

607:                                              ; preds = %606
  store i1 false, ptr %51, align 1
  invoke void @__cxa_throw(ptr %605, ptr @_ZTIN9NOMAD_4_39ExceptionE, ptr @_ZN9NOMAD_4_39ExceptionD2Ev) #8
          to label %637 unwind label %621

608:                                              ; preds = %600
  %609 = landingpad { ptr, i32 }
          cleanup
  %610 = extractvalue { ptr, i32 } %609, 0
  store ptr %610, ptr %15, align 8
  %611 = extractvalue { ptr, i32 } %609, 1
  store i32 %611, ptr %16, align 4
  br label %616

612:                                              ; preds = %602
  %613 = landingpad { ptr, i32 }
          cleanup
  %614 = extractvalue { ptr, i32 } %613, 0
  store ptr %614, ptr %15, align 8
  %615 = extractvalue { ptr, i32 } %613, 1
  store i32 %615, ptr %16, align 4
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %48) #7
  br label %616

616:                                              ; preds = %612, %608
  call void @llvm.lifetime.end.p0(i64 32, ptr %48) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr %47) #7
  br label %631

617:                                              ; preds = %603
  %618 = landingpad { ptr, i32 }
          cleanup
  %619 = extractvalue { ptr, i32 } %618, 0
  store ptr %619, ptr %15, align 8
  %620 = extractvalue { ptr, i32 } %618, 1
  store i32 %620, ptr %16, align 4
  br label %625

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

625:                                              ; preds = %621, %617
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %50) #7
  call void @llvm.lifetime.end.p0(i64 1, ptr %50) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr %49) #7
  %626 = load i1, ptr %51, align 1
  br i1 %626, label %627, label %628

627:                                              ; preds = %625
  call void @__cxa_free_exception(ptr %605) #7
  br label %628

628:                                              ; preds = %627, %625
  br label %631

629:                                              ; preds = %599, %520, %441, %370, %193, %152
  %630 = load i32, ptr %7, align 4, !tbaa !13
  store i32 1, ptr %39, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %13) #7
  call void @llvm.lifetime.end.p0(i64 4, ptr %12) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %11) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %10) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %9) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %8) #7
  call void @llvm.lifetime.end.p0(i64 4, ptr %7) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %6) #7
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %5) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr %5) #7
  ret i32 %630

631:                                              ; preds = %628, %616, %558, %479, %418, %369, %223, %222, %205, %185, %143, %84, %75
  call void @llvm.lifetime.end.p0(i64 8, ptr %13) #7
  call void @llvm.lifetime.end.p0(i64 4, ptr %12) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %11) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %10) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %9) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %8) #7
  call void @llvm.lifetime.end.p0(i64 4, ptr %7) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %6) #7
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %5) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr %5) #7
  br label %632

632:                                              ; preds = %631
  %633 = load ptr, ptr %15, align 8
  %634 = load i32, ptr %16, align 4
  %635 = insertvalue { ptr, i32 } poison, ptr %633, 0
  %636 = insertvalue { ptr, i32 } %635, i32 %634, 1
  resume { ptr, i32 } %636

637:                                              ; preds = %607
  unreachable
}

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

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

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

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

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

; 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 void @_ZN9NOMAD_4_36DoubleC1ERKd(ptr noundef nonnull align 8 dereferenceable(17), ptr noundef nonnull align 8 dereferenceable(8)) unnamed_addr #4

declare void @_ZNK9NOMAD_4_36Double7displayB5cxx11Eim(ptr dead_on_unwind writable sret(%"class.std::__cxx11::basic_string") align 8, ptr noundef nonnull align 8 dereferenceable(17), i32 noundef, i64 noundef) #4

declare void @_ZN9NOMAD_4_34itosB5cxx11Ei(ptr dead_on_unwind writable sret(%"class.std::__cxx11::basic_string") align 8, i32 noundef) #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 = !{!"_ZTSN9NOMAD_4_321FilterSelectionMethodE", !7, i64 0}
!11 = !{!12, !12, i64 0}
!12 = !{!"long", !7, i64 0}
!13 = !{!14, !14, i64 0}
!14 = !{!"int", !7, i64 0}
!15 = !{!16, !16, i64 0}
!16 = !{!"double", !7, i64 0}
!17 = !{!18, !6, i64 144}
!18 = !{!"_ZTSN9NOMAD_4_323SgtelibModelFilterCacheE", !19, i64 0, !6, i64 144, !12, i64 152, !38, i64 160, !43, i64 208, !44, i64 216, !48, i64 240, !48, i64 264, !48, i64 288, !48, i64 312, !52, i64 336, !48, i64 360, !56, i64 384, !48, i64 424, !48, i64 448, !62, i64 472, !62, i64 496, !16, i64 520}
!19 = !{!"_ZTSN9NOMAD_4_34StepE", !6, i64 8, !20, i64 16, !21, i64 24, !24, i64 40, !26, i64 56, !28, i64 72, !37, i64 136}
!20 = !{!"_ZTSN9NOMAD_4_38StepTypeE", !7, i64 0}
!21 = !{!"_ZTSSt10shared_ptrIN9NOMAD_4_314AllStopReasonsEE", !22, i64 0}
!22 = !{!"_ZTSSt12__shared_ptrIN9NOMAD_4_314AllStopReasonsELN9__gnu_cxx12_Lock_policyE2EE", !6, i64 0, !23, i64 8}
!23 = !{!"_ZTSSt14__shared_countILN9__gnu_cxx12_Lock_policyE2EE", !6, i64 0}
!24 = !{!"_ZTSSt10shared_ptrIN9NOMAD_4_313RunParametersEE", !25, i64 0}
!25 = !{!"_ZTSSt12__shared_ptrIN9NOMAD_4_313RunParametersELN9__gnu_cxx12_Lock_policyE2EE", !6, i64 0, !23, i64 8}
!26 = !{!"_ZTSSt10shared_ptrIN9NOMAD_4_312PbParametersEE", !27, i64 0}
!27 = !{!"_ZTSSt12__shared_ptrIN9NOMAD_4_312PbParametersELN9__gnu_cxx12_Lock_policyE2EE", !6, i64 0, !23, i64 8}
!28 = !{!"_ZTSN9NOMAD_4_312SuccessStatsE", !29, i64 0, !12, i64 48, !12, i64 56}
!29 = !{!"_ZTSSt3mapISt4pairIN9NOMAD_4_38StepTypeENS1_11SuccessTypeEEmSt4lessIS4_ESaIS0_IKS4_mEEE", !30, i64 0}
!30 = !{!"_ZTSSt8_Rb_treeISt4pairIN9NOMAD_4_38StepTypeENS1_11SuccessTypeEES0_IKS4_mESt10_Select1stIS6_ESt4lessIS4_ESaIS6_EE", !31, i64 0}
!31 = !{!"_ZTSNSt8_Rb_treeISt4pairIN9NOMAD_4_38StepTypeENS1_11SuccessTypeEES0_IKS4_mESt10_Select1stIS6_ESt4lessIS4_ESaIS6_EE13_Rb_tree_implISA_Lb1EEE", !32, i64 0, !34, i64 8}
!32 = !{!"_ZTSSt20_Rb_tree_key_compareISt4lessISt4pairIN9NOMAD_4_38StepTypeENS2_11SuccessTypeEEEE", !33, i64 0}
!33 = !{!"_ZTSSt4lessISt4pairIN9NOMAD_4_38StepTypeENS1_11SuccessTypeEEE"}
!34 = !{!"_ZTSSt15_Rb_tree_header", !35, i64 0, !12, i64 32}
!35 = !{!"_ZTSSt18_Rb_tree_node_base", !36, i64 0, !6, i64 8, !6, i64 16, !6, i64 24}
!36 = !{!"_ZTSSt14_Rb_tree_color", !7, i64 0}
!37 = !{!"_ZTSN9NOMAD_4_311SuccessTypeE", !7, i64 0}
!38 = !{!"_ZTSSt3setIN9NOMAD_4_39EvalPointENS0_16EvalPointCompareESaIS1_EE", !39, i64 0}
!39 = !{!"_ZTSSt8_Rb_treeIN9NOMAD_4_39EvalPointES1_St9_IdentityIS1_ENS0_16EvalPointCompareESaIS1_EE", !40, i64 0}
!40 = !{!"_ZTSNSt8_Rb_treeIN9NOMAD_4_39EvalPointES1_St9_IdentityIS1_ENS0_16EvalPointCompareESaIS1_EE13_Rb_tree_implIS4_Lb1EEE", !41, i64 0, !34, i64 8}
!41 = !{!"_ZTSSt20_Rb_tree_key_compareIN9NOMAD_4_316EvalPointCompareEE", !42, i64 0}
!42 = !{!"_ZTSN9NOMAD_4_316EvalPointCompareE"}
!43 = !{!"_ZTSN9NOMAD_4_311OutputLevelE", !7, i64 0}
!44 = !{!"_ZTSSt6vectorIN9NOMAD_4_39EvalPointESaIS1_EE", !45, i64 0}
!45 = !{!"_ZTSSt12_Vector_baseIN9NOMAD_4_39EvalPointESaIS1_EE", !46, i64 0}
!46 = !{!"_ZTSNSt12_Vector_baseIN9NOMAD_4_39EvalPointESaIS1_EE12_Vector_implE", !47, i64 0}
!47 = !{!"_ZTSNSt12_Vector_baseIN9NOMAD_4_39EvalPointESaIS1_EE17_Vector_impl_dataE", !6, i64 0, !6, i64 8, !6, i64 16}
!48 = !{!"_ZTSSt6vectorIdSaIdEE", !49, i64 0}
!49 = !{!"_ZTSSt12_Vector_baseIdSaIdEE", !50, i64 0}
!50 = !{!"_ZTSNSt12_Vector_baseIdSaIdEE12_Vector_implE", !51, i64 0}
!51 = !{!"_ZTSNSt12_Vector_baseIdSaIdEE17_Vector_impl_dataE", !6, i64 0, !6, i64 8, !6, i64 16}
!52 = !{!"_ZTSSt6vectorIS_IdSaIdEESaIS1_EE", !53, i64 0}
!53 = !{!"_ZTSSt12_Vector_baseISt6vectorIdSaIdEESaIS2_EE", !54, i64 0}
!54 = !{!"_ZTSNSt12_Vector_baseISt6vectorIdSaIdEESaIS2_EE12_Vector_implE", !55, i64 0}
!55 = !{!"_ZTSNSt12_Vector_baseISt6vectorIdSaIdEESaIS2_EE17_Vector_impl_dataE", !6, i64 0, !6, i64 8, !6, i64 16}
!56 = !{!"_ZTSSt6vectorIbSaIbEE", !57, i64 0}
!57 = !{!"_ZTSSt13_Bvector_baseISaIbEE", !58, i64 0}
!58 = !{!"_ZTSNSt13_Bvector_baseISaIbEE13_Bvector_implE", !59, i64 0}
!59 = !{!"_ZTSNSt13_Bvector_baseISaIbEE18_Bvector_impl_dataE", !60, i64 0, !60, i64 16, !6, i64 32}
!60 = !{!"_ZTSSt13_Bit_iterator", !61, i64 0}
!61 = !{!"_ZTSSt18_Bit_iterator_base", !6, i64 0, !14, i64 8}
!62 = !{!"_ZTSSt6vectorIiSaIiEE", !63, i64 0}
!63 = !{!"_ZTSSt12_Vector_baseIiSaIiEE", !64, i64 0}
!64 = !{!"_ZTSNSt12_Vector_baseIiSaIiEE12_Vector_implE", !65, i64 0}
!65 = !{!"_ZTSNSt12_Vector_baseIiSaIiEE17_Vector_impl_dataE", !6, i64 0, !6, i64 8, !6, i64 16}
!66 = distinct !{!66, !67}
!67 = !{!"llvm.loop.mustprogress"}
!68 = distinct !{!68, !67}
!69 = !{!43, !43, i64 0}
!70 = !{!18, !43, i64 208}
!71 = distinct !{!71, !67}
!72 = !{!18, !16, i64 520}
!73 = distinct !{!73, !67}
!74 = distinct !{!74, !67}
!75 = distinct !{!75, !67}
!76 = distinct !{!76, !67}
!77 = distinct !{!77, !67}


; 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.NOMAD_4_3::Double" = type <{ ptr, double, i8, [7 x i8] }>
%"struct.std::_Bit_reference" = type { ptr, i64 }
%"class.std::allocator" = type { i8 }

@.str.24 = external hidden unnamed_addr constant [109 x i8], align 1
@_ZTIN9NOMAD_4_39ExceptionE = external constant ptr
@.str.36 = external hidden unnamed_addr constant [8 x i8], align 1
@.str.37 = external hidden unnamed_addr constant [5 x i8], align 1
@.str.38 = external hidden unnamed_addr constant [12 x i8], align 1
@.str.39 = external hidden unnamed_addr constant [22 x i8], align 1

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

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

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

declare i32 @__gxx_personality_v0(...)

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

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

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

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

; Function Attrs: mustprogress uwtable
declare dso_local { ptr, i64 } @_ZNSt6vectorIbSaIbEEixEm(ptr noundef nonnull align 8 dereferenceable(40), i64 noundef) local_unnamed_addr #2 align 2

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

; Function Attrs: mustprogress nounwind uwtable
declare dso_local noundef nonnull align 4 dereferenceable(4) ptr @_ZNSt6vectorIiSaIiEEixEm(ptr noundef nonnull align 8 dereferenceable(24), i64 noundef) local_unnamed_addr #1 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: mustprogress nounwind uwtable
declare dso_local noundef i64 @_ZNKSt6vectorIN9NOMAD_4_39EvalPointESaIS1_EE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24)) 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: 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 void @_ZN9NOMAD_4_311OutputQueue3AddERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEENS_11OutputLevelE(ptr noundef nonnull align 8 dereferenceable(32), i32 noundef) local_unnamed_addr #2 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 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

; Function Attrs: mustprogress uwtable
define dso_local noundef i32 @_ZN9NOMAD_4_323SgtelibModelFilterCache11applyMethodENS_21FilterSelectionMethodE(ptr noundef nonnull align 8 dereferenceable(528) %0, i32 noundef %1) local_unnamed_addr #2 align 2 personality ptr @__gxx_personality_v0 {
  %3 = alloca %"class.std::__cxx11::basic_string", align 8
  %4 = alloca double, align 8
  %5 = alloca double, align 8
  %6 = alloca %"class.NOMAD_4_3::Double", align 8
  %7 = alloca %"class.NOMAD_4_3::Double", align 8
  %8 = alloca %"struct.std::_Bit_reference", align 8
  %9 = alloca %"struct.std::_Bit_reference", align 8
  %10 = alloca i32, align 4
  %11 = alloca %"class.std::__cxx11::basic_string", align 8
  %12 = alloca %"class.std::__cxx11::basic_string", align 8
  %13 = alloca %"class.NOMAD_4_3::Double", align 8
  %14 = alloca %"struct.std::_Bit_reference", align 8
  %15 = alloca i32, align 4
  %16 = alloca %"class.std::__cxx11::basic_string", align 8
  %17 = alloca %"class.std::__cxx11::basic_string", align 8
  %18 = alloca %"class.NOMAD_4_3::Double", align 8
  %19 = alloca %"class.std::__cxx11::basic_string", align 8
  %20 = alloca %"class.std::__cxx11::basic_string", align 8
  %21 = alloca %"class.NOMAD_4_3::Double", align 8
  %22 = alloca double, align 8
  %23 = alloca %"struct.std::_Bit_reference", align 8
  %24 = alloca %"struct.std::_Bit_reference", align 8
  %25 = alloca %"struct.std::_Bit_reference", align 8
  %26 = alloca %"class.std::__cxx11::basic_string", align 8
  %27 = alloca %"class.std::__cxx11::basic_string", align 8
  %28 = alloca %"class.std::__cxx11::basic_string", align 8
  %29 = alloca %"class.std::allocator", align 1
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %3) #8
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2Ev(ptr noundef nonnull align 8 dereferenceable(32) %3) #8
  %30 = getelementptr inbounds i8, ptr %0, i64 216
  %31 = call noundef i64 @_ZNKSt6vectorIN9NOMAD_4_39EvalPointESaIS1_EE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24) %30) #8
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %4) #8
  store double 0x7FEFFFFFFFFFFFFF, ptr %4, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %5) #8
  store double 0.000000e+00, ptr %5, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 24, ptr nonnull %6) #8
  %32 = getelementptr inbounds i8, ptr %0, i64 144
  %33 = load ptr, ptr %32, align 8, !tbaa !9
  invoke void @_ZNK9NOMAD_4_312SgtelibModel13getDeltaMNormEv(ptr dead_on_unwind nonnull writable sret(%"class.NOMAD_4_3::Double") align 8 %6, ptr noundef nonnull align 8 dereferenceable(552) %33)
          to label %34 unwind label %42

34:                                               ; preds = %2
  %35 = call noundef zeroext i1 @_ZNK9NOMAD_4_36Double9isDefinedEv(ptr noundef nonnull align 8 dereferenceable(17) %6)
  call void @_ZN9NOMAD_4_36DoubleD1Ev(ptr noundef nonnull align 8 dereferenceable(17) %6) #8
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %6) #8
  br i1 %35, label %36, label %49

36:                                               ; preds = %34
  call void @llvm.lifetime.start.p0(i64 24, ptr nonnull %7) #8
  %37 = load ptr, ptr %32, align 8, !tbaa !9
  invoke void @_ZNK9NOMAD_4_312SgtelibModel13getDeltaMNormEv(ptr dead_on_unwind nonnull writable sret(%"class.NOMAD_4_3::Double") align 8 %7, ptr noundef nonnull align 8 dereferenceable(552) %37)
          to label %38 unwind label %44

38:                                               ; preds = %36
  %39 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNK9NOMAD_4_36Double8todoubleEv(ptr noundef nonnull align 8 dereferenceable(17) %7)
          to label %40 unwind label %46

40:                                               ; preds = %38
  %41 = load double, ptr %39, align 8, !tbaa !5
  call void @_ZN9NOMAD_4_36DoubleD1Ev(ptr noundef nonnull align 8 dereferenceable(17) %7) #8
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %7) #8
  br label %49

42:                                               ; preds = %2
  %43 = landingpad { ptr, i32 }
          cleanup
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %6) #8
  br label %346

44:                                               ; preds = %36
  %45 = landingpad { ptr, i32 }
          cleanup
  br label %48

46:                                               ; preds = %38
  %47 = landingpad { ptr, i32 }
          cleanup
  call void @_ZN9NOMAD_4_36DoubleD1Ev(ptr noundef nonnull align 8 dereferenceable(17) %7) #8
  br label %48

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

49:                                               ; preds = %40, %34
  %.0132 = phi double [ %41, %40 ], [ 0.000000e+00, %34 ]
  switch i32 %1, label %330 [
    i32 0, label %.preheader
    i32 1, label %.preheader185
    i32 2, label %126
    i32 3, label %.preheader188
    i32 4, label %.preheader191
    i32 5, label %.preheader194
  ]

.preheader194:                                    ; preds = %49
  %.not242 = icmp eq i64 %31, 0
  br i1 %.not242, label %.loopexit, label %.lr.ph

.lr.ph:                                           ; preds = %.preheader194
  %50 = getelementptr inbounds i8, ptr %0, i64 384
  %51 = getelementptr inbounds i8, ptr %25, i64 8
  %52 = getelementptr inbounds i8, ptr %0, i64 448
  %53 = getelementptr inbounds i8, ptr %0, i64 496
  %54 = getelementptr inbounds i8, ptr %0, i64 336
  br label %299

.preheader191:                                    ; preds = %49
  %.not243 = icmp eq i64 %31, 0
  br i1 %.not243, label %.loopexit, label %.lr.ph220

.lr.ph220:                                        ; preds = %.preheader191
  %55 = getelementptr inbounds i8, ptr %0, i64 384
  %56 = getelementptr inbounds i8, ptr %24, i64 8
  %57 = getelementptr inbounds i8, ptr %0, i64 360
  %58 = getelementptr inbounds i8, ptr %0, i64 472
  %59 = getelementptr inbounds i8, ptr %0, i64 336
  br label %268

.preheader188:                                    ; preds = %49
  %.not244 = icmp eq i64 %31, 0
  br i1 %.not244, label %.loopexit, label %.lr.ph225

.lr.ph225:                                        ; preds = %.preheader188
  %60 = getelementptr inbounds i8, ptr %0, i64 384
  %61 = getelementptr inbounds i8, ptr %23, i64 8
  %62 = getelementptr inbounds i8, ptr %0, i64 288
  %63 = getelementptr inbounds i8, ptr %0, i64 520
  %64 = getelementptr inbounds i8, ptr %0, i64 240
  %65 = getelementptr inbounds i8, ptr %0, i64 448
  br label %234

.preheader185:                                    ; preds = %49
  %.not246 = icmp eq i64 %31, 0
  br i1 %.not246, label %.loopexit, label %.lr.ph235

.lr.ph235:                                        ; preds = %.preheader185
  %66 = getelementptr inbounds i8, ptr %0, i64 384
  %67 = getelementptr inbounds i8, ptr %9, i64 8
  %68 = getelementptr inbounds i8, ptr %0, i64 448
  br label %108

.preheader:                                       ; preds = %49
  %.not247 = icmp eq i64 %31, 0
  br i1 %.not247, label %.loopexit, label %.lr.ph240

.lr.ph240:                                        ; preds = %.preheader
  %69 = getelementptr inbounds i8, ptr %0, i64 384
  %70 = getelementptr inbounds i8, ptr %8, i64 8
  %71 = getelementptr inbounds i8, ptr %0, i64 448
  %72 = getelementptr inbounds i8, ptr %0, i64 264
  %73 = getelementptr inbounds i8, ptr %0, i64 240
  br label %74

74:                                               ; preds = %.lr.ph240, %106
  %.0117239 = phi i64 [ 0, %.lr.ph240 ], [ %107, %106 ]
  %.0141238 = phi double [ 0x7FEFFFFFFFFFFFFF, %.lr.ph240 ], [ %.1142, %106 ]
  %.0147237 = phi i32 [ -1, %.lr.ph240 ], [ %.1148, %106 ]
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %8) #8
  %75 = invoke { ptr, i64 } @_ZNSt6vectorIbSaIbEEixEm(ptr noundef nonnull align 8 dereferenceable(40) %69, i64 noundef %.0117239)
          to label %76 unwind label %104

76:                                               ; preds = %74
  %77 = extractvalue { ptr, i64 } %75, 0
  store ptr %77, ptr %8, align 8
  %78 = extractvalue { ptr, i64 } %75, 1
  store i64 %78, ptr %70, align 8
  %79 = call noundef zeroext i1 @_ZNKSt14_Bit_referencecvbEv(ptr noundef nonnull align 8 dereferenceable(16) %8) #8
  br i1 %79, label %.critedge, label %80

80:                                               ; preds = %76
  %81 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt6vectorIdSaIdEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %71, i64 noundef %.0117239) #8
  %82 = load double, ptr %81, align 8, !tbaa !5
  %83 = fcmp ogt double %82, 0.000000e+00
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %8) #8
  br i1 %83, label %84, label %106

84:                                               ; preds = %80
  %85 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt6vectorIdSaIdEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %72, i64 noundef %.0117239) #8
  %86 = load double, ptr %85, align 8, !tbaa !5
  %87 = load double, ptr %4, align 8, !tbaa !5
  %88 = fcmp olt double %86, %87
  br i1 %88, label %98, label %89

89:                                               ; preds = %84
  %90 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt6vectorIdSaIdEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %72, i64 noundef %.0117239) #8
  %91 = load double, ptr %90, align 8, !tbaa !5
  %92 = load double, ptr %4, align 8, !tbaa !5
  %93 = fcmp oeq double %91, %92
  br i1 %93, label %94, label %106

94:                                               ; preds = %89
  %95 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt6vectorIdSaIdEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %73, i64 noundef %.0117239) #8
  %96 = load double, ptr %95, align 8, !tbaa !5
  %97 = fcmp olt double %96, %.0141238
  br i1 %97, label %98, label %106

98:                                               ; preds = %94, %84
  %99 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt6vectorIdSaIdEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %72, i64 noundef %.0117239) #8
  %100 = load double, ptr %99, align 8, !tbaa !5
  store double %100, ptr %4, align 8, !tbaa !5
  %101 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt6vectorIdSaIdEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %73, i64 noundef %.0117239) #8
  %102 = load double, ptr %101, align 8, !tbaa !5
  %103 = trunc i64 %.0117239 to i32
  br label %106

104:                                              ; preds = %74
  %105 = landingpad { ptr, i32 }
          cleanup
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %8) #8
  br label %346

.critedge:                                        ; preds = %76
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %8) #8
  br label %106

106:                                              ; preds = %80, %.critedge, %98, %94, %89
  %.1148 = phi i32 [ %.0147237, %.critedge ], [ %103, %98 ], [ %.0147237, %94 ], [ %.0147237, %89 ], [ %.0147237, %80 ]
  %.1142 = phi double [ %.0141238, %.critedge ], [ %102, %98 ], [ %.0141238, %94 ], [ %.0141238, %89 ], [ %.0141238, %80 ]
  %107 = add nuw i64 %.0117239, 1
  %exitcond267.not = icmp eq i64 %107, %31
  br i1 %exitcond267.not, label %.loopexit, label %74, !llvm.loop !61

108:                                              ; preds = %.lr.ph235, %124
  %.0116234 = phi i64 [ 0, %.lr.ph235 ], [ %125, %124 ]
  %.0139233 = phi double [ 0.000000e+00, %.lr.ph235 ], [ %.1140, %124 ]
  %.2149232 = phi i32 [ -1, %.lr.ph235 ], [ %.3150, %124 ]
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %9) #8
  %109 = invoke { ptr, i64 } @_ZNSt6vectorIbSaIbEEixEm(ptr noundef nonnull align 8 dereferenceable(40) %66, i64 noundef %.0116234)
          to label %110 unwind label %122

110:                                              ; preds = %108
  %111 = extractvalue { ptr, i64 } %109, 0
  store ptr %111, ptr %9, align 8
  %112 = extractvalue { ptr, i64 } %109, 1
  store i64 %112, ptr %67, align 8
  %113 = call noundef zeroext i1 @_ZNKSt14_Bit_referencecvbEv(ptr noundef nonnull align 8 dereferenceable(16) %9) #8
  br i1 %113, label %.critedge2, label %114

114:                                              ; preds = %110
  %115 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt6vectorIdSaIdEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %68, i64 noundef %.0116234) #8
  %116 = load double, ptr %115, align 8, !tbaa !5
  %117 = fcmp ult double %116, %.0139233
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %9) #8
  br i1 %117, label %124, label %118

118:                                              ; preds = %114
  %119 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt6vectorIdSaIdEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %68, i64 noundef %.0116234) #8
  %120 = load double, ptr %119, align 8, !tbaa !5
  %121 = trunc i64 %.0116234 to i32
  br label %124

122:                                              ; preds = %108
  %123 = landingpad { ptr, i32 }
          cleanup
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %9) #8
  br label %346

.critedge2:                                       ; preds = %110
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %9) #8
  br label %124

124:                                              ; preds = %114, %118, %.critedge2
  %.3150 = phi i32 [ %.2149232, %.critedge2 ], [ %121, %118 ], [ %.2149232, %114 ]
  %.1140 = phi double [ %.0139233, %.critedge2 ], [ %120, %118 ], [ %.0139233, %114 ]
  %125 = add nuw i64 %.0116234, 1
  %exitcond266.not = icmp eq i64 %125, %31
  br i1 %exitcond266.not, label %.loopexit, label %108, !llvm.loop !63

126:                                              ; preds = %49
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %10) #8
  store i32 7, ptr %10, align 4, !tbaa !64
  %127 = invoke noundef zeroext i1 @_ZN9NOMAD_4_311OutputQueue9GoodLevelERKNS_11OutputLevelE(ptr noundef nonnull align 4 dereferenceable(4) %10)
          to label %128 unwind label %136

128:                                              ; preds = %126
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %10) #8
  br i1 %127, label %129, label %148

129:                                              ; preds = %128
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %11) #8
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %12) #8
  call void @llvm.lifetime.start.p0(i64 24, ptr nonnull %13) #8
  invoke void @_ZN9NOMAD_4_36DoubleC1ERKd(ptr noundef nonnull align 8 dereferenceable(17) %13, ptr noundef nonnull align 8 dereferenceable(8) %5)
          to label %130 unwind label %138

130:                                              ; preds = %129
  invoke void @_ZNK9NOMAD_4_36Double7displayB5cxx11Eim(ptr dead_on_unwind nonnull writable sret(%"class.std::__cxx11::basic_string") align 8 %12, ptr noundef nonnull align 8 dereferenceable(17) %13, i32 noundef 6, i64 noundef 0)
          to label %131 unwind label %140

131:                                              ; preds = %130
  invoke void @_ZStplIcSt11char_traitsIcESaIcEENSt7__cxx1112basic_stringIT_T0_T1_EEPKS5_OS8_(ptr dead_on_unwind nonnull writable sret(%"class.std::__cxx11::basic_string") align 8 %11, ptr noundef nonnull @.str.36, ptr noundef nonnull align 8 dereferenceable(32) %12)
          to label %132 unwind label %142

132:                                              ; preds = %131
  %133 = call noundef nonnull align 8 dereferenceable(32) ptr @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEaSEOS4_(ptr noundef nonnull align 8 dereferenceable(32) %3, ptr noundef nonnull align 8 dereferenceable(32) %11) #8
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %11) #8
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %12) #8
  call void @_ZN9NOMAD_4_36DoubleD1Ev(ptr noundef nonnull align 8 dereferenceable(17) %13) #8
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %13) #8
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %12) #8
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %11) #8
  %134 = getelementptr inbounds i8, ptr %0, i64 208
  %135 = load i32, ptr %134, align 8, !tbaa !65
  invoke void @_ZN9NOMAD_4_311OutputQueue3AddERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEENS_11OutputLevelE(ptr noundef nonnull align 8 dereferenceable(32) %3, i32 noundef %135)
          to label %148 unwind label %146

136:                                              ; preds = %126
  %137 = landingpad { ptr, i32 }
          cleanup
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %10) #8
  br label %346

138:                                              ; preds = %129
  %139 = landingpad { ptr, i32 }
          cleanup
  br label %145

140:                                              ; preds = %130
  %141 = landingpad { ptr, i32 }
          cleanup
  br label %144

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

144:                                              ; preds = %142, %140
  %.pn163 = phi { ptr, i32 } [ %143, %142 ], [ %141, %140 ]
  call void @_ZN9NOMAD_4_36DoubleD1Ev(ptr noundef nonnull align 8 dereferenceable(17) %13) #8
  br label %145

145:                                              ; preds = %144, %138
  %.pn163.pn = phi { ptr, i32 } [ %.pn163, %144 ], [ %139, %138 ]
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %13) #8
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %12) #8
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %11) #8
  br label %346

146:                                              ; preds = %132
  %147 = landingpad { ptr, i32 }
          cleanup
  br label %346

148:                                              ; preds = %132, %128
  %.not245 = icmp eq i64 %31, 0
  br i1 %.not245, label %.loopexit, label %.lr.ph230

.lr.ph230:                                        ; preds = %148
  %149 = getelementptr inbounds i8, ptr %0, i64 384
  %150 = getelementptr inbounds i8, ptr %14, i64 8
  %151 = getelementptr inbounds i8, ptr %0, i64 448
  %152 = getelementptr inbounds i8, ptr %0, i64 264
  %153 = getelementptr inbounds i8, ptr %0, i64 240
  %154 = getelementptr inbounds i8, ptr %0, i64 208
  br label %155

155:                                              ; preds = %.lr.ph230, %232
  %.0115229 = phi i64 [ 0, %.lr.ph230 ], [ %233, %232 ]
  %.2143228 = phi double [ 0x7FEFFFFFFFFFFFFF, %.lr.ph230 ], [ %.3144, %232 ]
  %.4151227 = phi i32 [ -1, %.lr.ph230 ], [ %.5152, %232 ]
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %14) #8
  %156 = invoke { ptr, i64 } @_ZNSt6vectorIbSaIbEEixEm(ptr noundef nonnull align 8 dereferenceable(40) %149, i64 noundef %.0115229)
          to label %157 unwind label %186

157:                                              ; preds = %155
  %158 = extractvalue { ptr, i64 } %156, 0
  store ptr %158, ptr %14, align 8
  %159 = extractvalue { ptr, i64 } %156, 1
  store i64 %159, ptr %150, align 8
  %160 = call noundef zeroext i1 @_ZNKSt14_Bit_referencecvbEv(ptr noundef nonnull align 8 dereferenceable(16) %14) #8
  br i1 %160, label %.critedge4, label %161

161:                                              ; preds = %157
  %162 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt6vectorIdSaIdEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %151, i64 noundef %.0115229) #8
  %163 = load double, ptr %162, align 8, !tbaa !5
  %164 = load double, ptr %5, align 8, !tbaa !5
  %165 = fcmp ult double %163, %164
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %14) #8
  br i1 %165, label %188, label %166

166:                                              ; preds = %161
  %167 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt6vectorIdSaIdEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %152, i64 noundef %.0115229) #8
  %168 = load double, ptr %167, align 8, !tbaa !5
  %169 = load double, ptr %4, align 8, !tbaa !5
  %170 = fcmp olt double %168, %169
  br i1 %170, label %180, label %171

171:                                              ; preds = %166
  %172 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt6vectorIdSaIdEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %152, i64 noundef %.0115229) #8
  %173 = load double, ptr %172, align 8, !tbaa !5
  %174 = load double, ptr %4, align 8, !tbaa !5
  %175 = fcmp oeq double %173, %174
  br i1 %175, label %176, label %188

176:                                              ; preds = %171
  %177 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt6vectorIdSaIdEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %153, i64 noundef %.0115229) #8
  %178 = load double, ptr %177, align 8, !tbaa !5
  %179 = fcmp olt double %178, %.2143228
  br i1 %179, label %180, label %188

180:                                              ; preds = %176, %166
  %181 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt6vectorIdSaIdEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %152, i64 noundef %.0115229) #8
  %182 = load double, ptr %181, align 8, !tbaa !5
  store double %182, ptr %4, align 8, !tbaa !5
  %183 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt6vectorIdSaIdEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %153, i64 noundef %.0115229) #8
  %184 = load double, ptr %183, align 8, !tbaa !5
  %185 = trunc i64 %.0115229 to i32
  br label %188

186:                                              ; preds = %155
  %187 = landingpad { ptr, i32 }
          cleanup
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %14) #8
  br label %346

.critedge4:                                       ; preds = %157
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %14) #8
  br label %188

188:                                              ; preds = %171, %176, %180, %.critedge4, %161
  %.5152 = phi i32 [ %.4151227, %.critedge4 ], [ %185, %180 ], [ %.4151227, %176 ], [ %.4151227, %171 ], [ %.4151227, %161 ]
  %.3144 = phi double [ %.2143228, %.critedge4 ], [ %184, %180 ], [ %.2143228, %176 ], [ %.2143228, %171 ], [ %.2143228, %161 ]
  %.not = icmp eq i32 %.5152, -1
  br i1 %.not, label %232, label %189

189:                                              ; preds = %188
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %15) #8
  store i32 7, ptr %15, align 4, !tbaa !64
  %190 = invoke noundef zeroext i1 @_ZN9NOMAD_4_311OutputQueue9GoodLevelERKNS_11OutputLevelE(ptr noundef nonnull align 4 dereferenceable(4) %15)
          to label %191 unwind label %206

191:                                              ; preds = %189
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %15) #8
  br i1 %190, label %192, label %._crit_edge

._crit_edge:                                      ; preds = %191
  %.pre = sext i32 %.5152 to i64
  br label %226

192:                                              ; preds = %191
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %16) #8
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %17) #8
  call void @llvm.lifetime.start.p0(i64 24, ptr nonnull %18) #8
  %193 = sext i32 %.5152 to i64
  %194 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt6vectorIdSaIdEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %151, i64 noundef %193) #8
  invoke void @_ZN9NOMAD_4_36DoubleC1ERKd(ptr noundef nonnull align 8 dereferenceable(17) %18, ptr noundef nonnull align 8 dereferenceable(8) %194)
          to label %195 unwind label %208

195:                                              ; preds = %192
  invoke void @_ZNK9NOMAD_4_36Double7displayB5cxx11Eim(ptr dead_on_unwind nonnull writable sret(%"class.std::__cxx11::basic_string") align 8 %17, ptr noundef nonnull align 8 dereferenceable(17) %18, i32 noundef 6, i64 noundef 0)
          to label %196 unwind label %210

196:                                              ; preds = %195
  invoke void @_ZStplIcSt11char_traitsIcESaIcEENSt7__cxx1112basic_stringIT_T0_T1_EEPKS5_OS8_(ptr dead_on_unwind nonnull writable sret(%"class.std::__cxx11::basic_string") align 8 %16, ptr noundef nonnull @.str.37, ptr noundef nonnull align 8 dereferenceable(32) %17)
          to label %197 unwind label %212

197:                                              ; preds = %196
  %198 = call noundef nonnull align 8 dereferenceable(32) ptr @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEaSEOS4_(ptr noundef nonnull align 8 dereferenceable(32) %3, ptr noundef nonnull align 8 dereferenceable(32) %16) #8
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %16) #8
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %17) #8
  call void @_ZN9NOMAD_4_36DoubleD1Ev(ptr noundef nonnull align 8 dereferenceable(17) %18) #8
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %18) #8
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %17) #8
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %16) #8
  %199 = load i32, ptr %154, align 8, !tbaa !65
  invoke void @_ZN9NOMAD_4_311OutputQueue3AddERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEENS_11OutputLevelE(ptr noundef nonnull align 8 dereferenceable(32) %3, i32 noundef %199)
          to label %200 unwind label %216

200:                                              ; preds = %197
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %19) #8
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %20) #8
  call void @llvm.lifetime.start.p0(i64 24, ptr nonnull %21) #8
  invoke void @_ZN9NOMAD_4_36DoubleC1ERKd(ptr noundef nonnull align 8 dereferenceable(17) %21, ptr noundef nonnull align 8 dereferenceable(8) %4)
          to label %201 unwind label %218

201:                                              ; preds = %200
  invoke void @_ZNK9NOMAD_4_36Double7displayB5cxx11Eim(ptr dead_on_unwind nonnull writable sret(%"class.std::__cxx11::basic_string") align 8 %20, ptr noundef nonnull align 8 dereferenceable(17) %21, i32 noundef 6, i64 noundef 0)
          to label %202 unwind label %220

202:                                              ; preds = %201
  invoke void @_ZStplIcSt11char_traitsIcESaIcEENSt7__cxx1112basic_stringIT_T0_T1_EEPKS5_OS8_(ptr dead_on_unwind nonnull writable sret(%"class.std::__cxx11::basic_string") align 8 %19, ptr noundef nonnull @.str.38, ptr noundef nonnull align 8 dereferenceable(32) %20)
          to label %203 unwind label %222

203:                                              ; preds = %202
  %204 = call noundef nonnull align 8 dereferenceable(32) ptr @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEaSEOS4_(ptr noundef nonnull align 8 dereferenceable(32) %3, ptr noundef nonnull align 8 dereferenceable(32) %19) #8
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %19) #8
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %20) #8
  call void @_ZN9NOMAD_4_36DoubleD1Ev(ptr noundef nonnull align 8 dereferenceable(17) %21) #8
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %21) #8
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %20) #8
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %19) #8
  %205 = load i32, ptr %154, align 8, !tbaa !65
  invoke void @_ZN9NOMAD_4_311OutputQueue3AddERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEENS_11OutputLevelE(ptr noundef nonnull align 8 dereferenceable(32) %3, i32 noundef %205)
          to label %226 unwind label %216

206:                                              ; preds = %189
  %207 = landingpad { ptr, i32 }
          cleanup
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %15) #8
  br label %346

208:                                              ; preds = %192
  %209 = landingpad { ptr, i32 }
          cleanup
  br label %215

210:                                              ; preds = %195
  %211 = landingpad { ptr, i32 }
          cleanup
  br label %214

212:                                              ; preds = %196
  %213 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %17) #8
  br label %214

214:                                              ; preds = %212, %210
  %.pn166 = phi { ptr, i32 } [ %213, %212 ], [ %211, %210 ]
  call void @_ZN9NOMAD_4_36DoubleD1Ev(ptr noundef nonnull align 8 dereferenceable(17) %18) #8
  br label %215

215:                                              ; preds = %214, %208
  %.pn166.pn = phi { ptr, i32 } [ %.pn166, %214 ], [ %209, %208 ]
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %18) #8
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %17) #8
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %16) #8
  br label %346

216:                                              ; preds = %203, %197
  %217 = landingpad { ptr, i32 }
          cleanup
  br label %346

218:                                              ; preds = %200
  %219 = landingpad { ptr, i32 }
          cleanup
  br label %225

220:                                              ; preds = %201
  %221 = landingpad { ptr, i32 }
          cleanup
  br label %224

222:                                              ; preds = %202
  %223 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %20) #8
  br label %224

224:                                              ; preds = %222, %220
  %.pn169 = phi { ptr, i32 } [ %223, %222 ], [ %221, %220 ]
  call void @_ZN9NOMAD_4_36DoubleD1Ev(ptr noundef nonnull align 8 dereferenceable(17) %21) #8
  br label %225

225:                                              ; preds = %224, %218
  %.pn169.pn = phi { ptr, i32 } [ %.pn169, %224 ], [ %219, %218 ]
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %21) #8
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %20) #8
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %19) #8
  br label %346

226:                                              ; preds = %._crit_edge, %203
  %.pre-phi = phi i64 [ %.pre, %._crit_edge ], [ %193, %203 ]
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %22) #8
  %227 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt6vectorIdSaIdEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %151, i64 noundef %.pre-phi) #8
  %228 = load double, ptr %227, align 8, !tbaa !5
  %229 = fadd double %.0132, %228
  store double %229, ptr %22, align 8, !tbaa !5
  %230 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZSt3maxIdERKT_S2_S2_(ptr noundef nonnull align 8 dereferenceable(8) %5, ptr noundef nonnull align 8 dereferenceable(8) %22)
  %231 = load double, ptr %230, align 8, !tbaa !5
  store double %231, ptr %5, align 8, !tbaa !5
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %22) #8
  br label %232

232:                                              ; preds = %188, %226
  %233 = add nuw i64 %.0115229, 1
  %exitcond265.not = icmp eq i64 %233, %31
  br i1 %exitcond265.not, label %.loopexit, label %155, !llvm.loop !66

234:                                              ; preds = %.lr.ph225, %264
  %.0114224 = phi i64 [ 0, %.lr.ph225 ], [ %267, %264 ]
  %.4145223 = phi double [ 0x7FEFFFFFFFFFFFFF, %.lr.ph225 ], [ %.5146, %264 ]
  %.6153222 = phi i32 [ -1, %.lr.ph225 ], [ %.7154, %264 ]
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %23) #8
  %235 = invoke { ptr, i64 } @_ZNSt6vectorIbSaIbEEixEm(ptr noundef nonnull align 8 dereferenceable(40) %60, i64 noundef %.0114224)
          to label %236 unwind label %257

236:                                              ; preds = %234
  %237 = extractvalue { ptr, i64 } %235, 0
  store ptr %237, ptr %23, align 8
  %238 = extractvalue { ptr, i64 } %235, 1
  store i64 %238, ptr %61, align 8
  %239 = call noundef zeroext i1 @_ZNKSt14_Bit_referencecvbEv(ptr noundef nonnull align 8 dereferenceable(16) %23) #8
  br i1 %239, label %.critedge6, label %240

240:                                              ; preds = %236
  %241 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt6vectorIdSaIdEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %62, i64 noundef %.0114224) #8
  %242 = load double, ptr %241, align 8, !tbaa !5
  %243 = load double, ptr %63, align 8, !tbaa !67
  %244 = fcmp ugt double %242, %243
  br i1 %244, label %.critedge6, label %245

245:                                              ; preds = %240
  %246 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt6vectorIdSaIdEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %64, i64 noundef %.0114224) #8
  %247 = load double, ptr %246, align 8, !tbaa !5
  %248 = fcmp olt double %247, %.4145223
  br i1 %248, label %249, label %.critedge6

249:                                              ; preds = %245
  %250 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt6vectorIdSaIdEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %65, i64 noundef %.0114224) #8
  %251 = load double, ptr %250, align 8, !tbaa !5
  %252 = fcmp ogt double %251, %.0132
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %23) #8
  br i1 %252, label %253, label %259

253:                                              ; preds = %249
  %254 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt6vectorIdSaIdEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %64, i64 noundef %.0114224) #8
  %255 = load double, ptr %254, align 8, !tbaa !5
  %256 = trunc i64 %.0114224 to i32
  br label %259

257:                                              ; preds = %234
  %258 = landingpad { ptr, i32 }
          cleanup
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %23) #8
  br label %346

.critedge6:                                       ; preds = %236, %240, %245
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %23) #8
  br label %259

259:                                              ; preds = %.critedge6, %253, %249
  %.7154 = phi i32 [ %.6153222, %.critedge6 ], [ %256, %253 ], [ %.6153222, %249 ]
  %.5146 = phi double [ %.4145223, %.critedge6 ], [ %255, %253 ], [ %.4145223, %249 ]
  %260 = icmp eq i32 %.7154, -1
  br i1 %260, label %264, label %261

261:                                              ; preds = %259
  %262 = sext i32 %.7154 to i64
  %263 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt6vectorIdSaIdEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %62, i64 noundef %262) #8
  br label %264

264:                                              ; preds = %259, %261
  %.sink282 = phi ptr [ %263, %261 ], [ %63, %259 ]
  %.sink281 = phi double [ 2.000000e+00, %261 ], [ 5.000000e-01, %259 ]
  %265 = load double, ptr %.sink282, align 8, !tbaa !5
  %266 = fmul double %265, %.sink281
  store double %266, ptr %63, align 8, !tbaa !67
  %267 = add nuw i64 %.0114224, 1
  %exitcond264.not = icmp eq i64 %267, %31
  br i1 %exitcond264.not, label %.loopexit, label %234, !llvm.loop !68

268:                                              ; preds = %.lr.ph220, %297
  %.0113219 = phi i64 [ 0, %.lr.ph220 ], [ %298, %297 ]
  %.0133218 = phi i32 [ 0, %.lr.ph220 ], [ %.2135, %297 ]
  %.8155217 = phi i32 [ -1, %.lr.ph220 ], [ %.10157, %297 ]
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %24) #8
  %269 = invoke { ptr, i64 } @_ZNSt6vectorIbSaIbEEixEm(ptr noundef nonnull align 8 dereferenceable(40) %55, i64 noundef %.0113219)
          to label %270 unwind label %284

270:                                              ; preds = %268
  %271 = extractvalue { ptr, i64 } %269, 0
  store ptr %271, ptr %24, align 8
  %272 = extractvalue { ptr, i64 } %269, 1
  store i64 %272, ptr %56, align 8
  %273 = call noundef zeroext i1 @_ZNKSt14_Bit_referencecvbEv(ptr noundef nonnull align 8 dereferenceable(16) %24) #8
  br i1 %273, label %.critedge8, label %274

274:                                              ; preds = %270
  %275 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt6vectorIdSaIdEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %57, i64 noundef %.0113219) #8
  %276 = load double, ptr %275, align 8, !tbaa !5
  %277 = fcmp ogt double %276, 0.000000e+00
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %24) #8
  br i1 %277, label %278, label %297

278:                                              ; preds = %274
  %279 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNSt6vectorIiSaIiEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %58, i64 noundef %.0113219) #8
  %280 = load i32, ptr %279, align 4, !tbaa !69
  %281 = icmp eq i32 %280, -1
  br i1 %281, label %.preheader190, label %294

282:                                              ; preds = %.preheader190
  %283 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNSt6vectorIiSaIiEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %58, i64 noundef %.0113219) #8
  store i32 %.1111, ptr %283, align 4, !tbaa !69
  br label %294

284:                                              ; preds = %268
  %285 = landingpad { ptr, i32 }
          cleanup
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %24) #8
  br label %346

.preheader190:                                    ; preds = %278, %.preheader190
  %.0109216 = phi i64 [ %293, %.preheader190 ], [ 0, %278 ]
  %.0110215 = phi i32 [ %.1111, %.preheader190 ], [ 0, %278 ]
  %286 = call noundef nonnull align 8 dereferenceable(24) ptr @_ZNSt6vectorIS_IdSaIdEESaIS1_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %59, i64 noundef %.0113219) #8
  %287 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt6vectorIdSaIdEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %286, i64 noundef %.0109216) #8
  %288 = load double, ptr %287, align 8, !tbaa !5
  %289 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt6vectorIdSaIdEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %57, i64 noundef %.0113219) #8
  %290 = load double, ptr %289, align 8, !tbaa !5
  %291 = fcmp ole double %288, %290
  %292 = zext i1 %291 to i32
  %.1111 = add nuw nsw i32 %.0110215, %292
  %293 = add nuw i64 %.0109216, 1
  %exitcond262.not = icmp eq i64 %293, %31
  br i1 %exitcond262.not, label %282, label %.preheader190, !llvm.loop !70

294:                                              ; preds = %282, %278
  %.2112 = phi i32 [ %.1111, %282 ], [ %280, %278 ]
  %295 = icmp sgt i32 %.2112, %.0133218
  %296 = trunc i64 %.0113219 to i32
  %spec.select = select i1 %295, i32 %296, i32 %.8155217
  %spec.select179 = call i32 @llvm.smax.i32(i32 %.2112, i32 %.0133218)
  br label %297

.critedge8:                                       ; preds = %270
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %24) #8
  br label %297

297:                                              ; preds = %274, %294, %.critedge8
  %.10157 = phi i32 [ %.8155217, %.critedge8 ], [ %spec.select, %294 ], [ %.8155217, %274 ]
  %.2135 = phi i32 [ %.0133218, %.critedge8 ], [ %spec.select179, %294 ], [ %.0133218, %274 ]
  %298 = add nuw i64 %.0113219, 1
  %exitcond263.not = icmp eq i64 %298, %31
  br i1 %exitcond263.not, label %.loopexit, label %268, !llvm.loop !71

299:                                              ; preds = %.lr.ph, %328
  %.0108214 = phi i64 [ 0, %.lr.ph ], [ %329, %328 ]
  %.3136213 = phi i32 [ 0, %.lr.ph ], [ %.5138, %328 ]
  %.11212 = phi i32 [ -1, %.lr.ph ], [ %.13, %328 ]
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %25) #8
  %300 = invoke { ptr, i64 } @_ZNSt6vectorIbSaIbEEixEm(ptr noundef nonnull align 8 dereferenceable(40) %50, i64 noundef %.0108214)
          to label %301 unwind label %315

301:                                              ; preds = %299
  %302 = extractvalue { ptr, i64 } %300, 0
  store ptr %302, ptr %25, align 8
  %303 = extractvalue { ptr, i64 } %300, 1
  store i64 %303, ptr %51, align 8
  %304 = call noundef zeroext i1 @_ZNKSt14_Bit_referencecvbEv(ptr noundef nonnull align 8 dereferenceable(16) %25) #8
  br i1 %304, label %.critedge10, label %305

305:                                              ; preds = %301
  %306 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt6vectorIdSaIdEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %52, i64 noundef %.0108214) #8
  %307 = load double, ptr %306, align 8, !tbaa !5
  %308 = fcmp ogt double %307, 0.000000e+00
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %25) #8
  br i1 %308, label %309, label %328

309:                                              ; preds = %305
  %310 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNSt6vectorIiSaIiEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %53, i64 noundef %.0108214) #8
  %311 = load i32, ptr %310, align 4, !tbaa !69
  %312 = icmp eq i32 %311, -1
  br i1 %312, label %.preheader193, label %325

313:                                              ; preds = %.preheader193
  %314 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNSt6vectorIiSaIiEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %53, i64 noundef %.0108214) #8
  store i32 %.1107, ptr %314, align 4, !tbaa !69
  br label %325

315:                                              ; preds = %299
  %316 = landingpad { ptr, i32 }
          cleanup
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %25) #8
  br label %346

.preheader193:                                    ; preds = %309, %.preheader193
  %.0105211 = phi i64 [ %324, %.preheader193 ], [ 0, %309 ]
  %.0106210 = phi i32 [ %.1107, %.preheader193 ], [ 0, %309 ]
  %317 = call noundef nonnull align 8 dereferenceable(24) ptr @_ZNSt6vectorIS_IdSaIdEESaIS1_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %54, i64 noundef %.0108214) #8
  %318 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt6vectorIdSaIdEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %317, i64 noundef %.0105211) #8
  %319 = load double, ptr %318, align 8, !tbaa !5
  %320 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt6vectorIdSaIdEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %52, i64 noundef %.0108214) #8
  %321 = load double, ptr %320, align 8, !tbaa !5
  %322 = fcmp ole double %319, %321
  %323 = zext i1 %322 to i32
  %.1107 = add nuw nsw i32 %.0106210, %323
  %324 = add nuw i64 %.0105211, 1
  %exitcond.not = icmp eq i64 %324, %31
  br i1 %exitcond.not, label %313, label %.preheader193, !llvm.loop !72

325:                                              ; preds = %313, %309
  %.2 = phi i32 [ %.1107, %313 ], [ %311, %309 ]
  %326 = icmp sgt i32 %.2, %.3136213
  %327 = trunc i64 %.0108214 to i32
  %spec.select180 = select i1 %326, i32 %327, i32 %.11212
  %spec.select181 = call i32 @llvm.smax.i32(i32 %.2, i32 %.3136213)
  br label %328

.critedge10:                                      ; preds = %301
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %25) #8
  br label %328

328:                                              ; preds = %305, %325, %.critedge10
  %.13 = phi i32 [ %.11212, %.critedge10 ], [ %spec.select180, %325 ], [ %.11212, %305 ]
  %.5138 = phi i32 [ %.3136213, %.critedge10 ], [ %spec.select181, %325 ], [ %.3136213, %305 ]
  %329 = add nuw i64 %.0108214, 1
  %exitcond261.not = icmp eq i64 %329, %31
  br i1 %exitcond261.not, label %.loopexit, label %299, !llvm.loop !73

330:                                              ; preds = %49
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %26) #8
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %27) #8
  invoke void @_ZN9NOMAD_4_34itosB5cxx11Ei(ptr dead_on_unwind nonnull writable sret(%"class.std::__cxx11::basic_string") align 8 %27, i32 noundef %1)
          to label %331 unwind label %337

331:                                              ; preds = %330
  invoke void @_ZStplIcSt11char_traitsIcESaIcEENSt7__cxx1112basic_stringIT_T0_T1_EEPKS5_OS8_(ptr dead_on_unwind nonnull writable sret(%"class.std::__cxx11::basic_string") align 8 %26, ptr noundef nonnull @.str.39, ptr noundef nonnull align 8 dereferenceable(32) %27)
          to label %332 unwind label %339

332:                                              ; preds = %331
  %333 = call noundef nonnull align 8 dereferenceable(32) ptr @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEaSEOS4_(ptr noundef nonnull align 8 dereferenceable(32) %3, ptr noundef nonnull align 8 dereferenceable(32) %26) #8
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %26) #8
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %27) #8
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %27) #8
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %26) #8
  %334 = call ptr @__cxa_allocate_exception(i64 112) #8
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %28) #8
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %29) #8
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %29) #8
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %28, ptr noundef nonnull @.str.24, ptr noundef nonnull align 1 dereferenceable(1) %29)
          to label %335 unwind label %.thread

335:                                              ; preds = %332
  invoke void @_ZN9NOMAD_4_39ExceptionC2ERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEmS8_(ptr noundef nonnull align 8 dereferenceable(112) %334, ptr noundef nonnull align 8 dereferenceable(32) %28, i64 noundef 567, ptr noundef nonnull align 8 dereferenceable(32) %3)
          to label %336 unwind label %343

336:                                              ; preds = %335
  invoke void @__cxa_throw(ptr nonnull %334, ptr nonnull @_ZTIN9NOMAD_4_39ExceptionE, ptr nonnull @_ZN9NOMAD_4_39ExceptionD2Ev) #9
          to label %347 unwind label %343

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

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

341:                                              ; preds = %339, %337
  %.pn174 = phi { ptr, i32 } [ %340, %339 ], [ %338, %337 ]
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %27) #8
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %26) #8
  br label %346

.thread:                                          ; preds = %332
  %342 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %29) #8
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %29) #8
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %28) #8
  br label %345

343:                                              ; preds = %335, %336
  %.0 = phi i1 [ false, %336 ], [ true, %335 ]
  %344 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %28) #8
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %29) #8
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %29) #8
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %28) #8
  br i1 %.0, label %345, label %346

345:                                              ; preds = %.thread, %343
  %.pn176184 = phi { ptr, i32 } [ %342, %.thread ], [ %344, %343 ]
  call void @__cxa_free_exception(ptr %334) #8
  br label %346

.loopexit:                                        ; preds = %328, %297, %264, %232, %124, %106, %.preheader194, %.preheader191, %.preheader188, %148, %.preheader185, %.preheader
  %.14 = phi i32 [ -1, %.preheader ], [ -1, %.preheader185 ], [ -1, %148 ], [ -1, %.preheader188 ], [ -1, %.preheader191 ], [ -1, %.preheader194 ], [ %.1148, %106 ], [ %.3150, %124 ], [ %.5152, %232 ], [ %.7154, %264 ], [ %.10157, %297 ], [ %.13, %328 ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %5) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %4) #8
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %3) #8
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %3) #8
  ret i32 %.14

346:                                              ; preds = %186, %206, %215, %216, %225, %343, %345, %341, %315, %284, %257, %146, %145, %136, %122, %104, %48, %42
  %.pn176.pn = phi { ptr, i32 } [ %.pn176184, %345 ], [ %344, %343 ], [ %.pn174, %341 ], [ %316, %315 ], [ %285, %284 ], [ %258, %257 ], [ %147, %146 ], [ %.pn163.pn, %145 ], [ %137, %136 ], [ %123, %122 ], [ %105, %104 ], [ %.pn, %48 ], [ %43, %42 ], [ %217, %216 ], [ %.pn169.pn, %225 ], [ %.pn166.pn, %215 ], [ %207, %206 ], [ %187, %186 ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %5) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %4) #8
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %3) #8
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %3) #8
  resume { ptr, i32 } %.pn176.pn

347:                                              ; preds = %336
  unreachable
}

; Function Attrs: mustprogress nounwind uwtable
declare dso_local noundef zeroext i1 @_ZNKSt14_Bit_referencecvbEv(ptr noundef nonnull align 8 dereferenceable(16)) 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: nounwind
declare void @_ZN9NOMAD_4_36DoubleD1Ev(ptr noundef nonnull align 8 dereferenceable(17)) unnamed_addr #5

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

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

; 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 void @_ZN9NOMAD_4_36DoubleC1ERKd(ptr noundef nonnull align 8 dereferenceable(17), ptr noundef nonnull align 8 dereferenceable(8)) unnamed_addr #4

declare void @_ZNK9NOMAD_4_36Double7displayB5cxx11Eim(ptr dead_on_unwind writable sret(%"class.std::__cxx11::basic_string") align 8, ptr noundef nonnull align 8 dereferenceable(17), i32 noundef, i64 noundef) local_unnamed_addr #4

declare void @_ZN9NOMAD_4_34itosB5cxx11Ei(ptr dead_on_unwind writable sret(%"class.std::__cxx11::basic_string") align 8, i32 noundef) local_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

; Function Attrs: nocallback nofree nosync nounwind speculatable willreturn memory(none)
declare i32 @llvm.smax.i32(i32, i32) #7

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 = { nocallback nofree nosync nounwind speculatable willreturn memory(none) }
attributes #8 = { nounwind }
attributes #9 = { noreturn }

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

!0 = !{i32 1, !"wchar_size", i32 4}
!1 = !{i32 8, !"PIC Level", i32 2}
!2 = !{i32 7, !"PIE Level", i32 2}
!3 = !{i32 7, !"uwtable", i32 2}
!4 = !{!"clang version 19.1.0 (git@github.com:llvm/llvm-project.git a4bf6cd7cfb1a1421ba92bca9d017b49936c55e4)"}
!5 = !{!6, !6, i64 0}
!6 = !{!"double", !7, i64 0}
!7 = !{!"omnipotent char", !8, i64 0}
!8 = !{!"Simple C++ TBAA"}
!9 = !{!10, !12, i64 144}
!10 = !{!"_ZTSN9NOMAD_4_323SgtelibModelFilterCacheE", !11, i64 0, !12, i64 144, !30, i64 152, !32, i64 160, !37, i64 208, !38, i64 216, !42, i64 240, !42, i64 264, !42, i64 288, !42, i64 312, !46, i64 336, !42, i64 360, !50, i64 384, !42, i64 424, !42, i64 448, !57, i64 472, !57, i64 496, !6, i64 520}
!11 = !{!"_ZTSN9NOMAD_4_34StepE", !12, i64 8, !13, i64 16, !14, i64 24, !17, i64 40, !19, i64 56, !21, i64 72, !31, 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, !30, i64 48, !30, i64 56}
!22 = !{!"_ZTSSt3mapISt4pairIN9NOMAD_4_38StepTypeENS1_11SuccessTypeEEmSt4lessIS4_ESaIS0_IKS4_mEEE", !23, i64 0}
!23 = !{!"_ZTSSt8_Rb_treeISt4pairIN9NOMAD_4_38StepTypeENS1_11SuccessTypeEES0_IKS4_mESt10_Select1stIS6_ESt4lessIS4_ESaIS6_EE", !24, i64 0}
!24 = !{!"_ZTSNSt8_Rb_treeISt4pairIN9NOMAD_4_38StepTypeENS1_11SuccessTypeEES0_IKS4_mESt10_Select1stIS6_ESt4lessIS4_ESaIS6_EE13_Rb_tree_implISA_Lb1EEE", !25, i64 0, !27, i64 8}
!25 = !{!"_ZTSSt20_Rb_tree_key_compareISt4lessISt4pairIN9NOMAD_4_38StepTypeENS2_11SuccessTypeEEEE", !26, i64 0}
!26 = !{!"_ZTSSt4lessISt4pairIN9NOMAD_4_38StepTypeENS1_11SuccessTypeEEE"}
!27 = !{!"_ZTSSt15_Rb_tree_header", !28, i64 0, !30, i64 32}
!28 = !{!"_ZTSSt18_Rb_tree_node_base", !29, i64 0, !12, i64 8, !12, i64 16, !12, i64 24}
!29 = !{!"_ZTSSt14_Rb_tree_color", !7, i64 0}
!30 = !{!"long", !7, i64 0}
!31 = !{!"_ZTSN9NOMAD_4_311SuccessTypeE", !7, i64 0}
!32 = !{!"_ZTSSt3setIN9NOMAD_4_39EvalPointENS0_16EvalPointCompareESaIS1_EE", !33, i64 0}
!33 = !{!"_ZTSSt8_Rb_treeIN9NOMAD_4_39EvalPointES1_St9_IdentityIS1_ENS0_16EvalPointCompareESaIS1_EE", !34, i64 0}
!34 = !{!"_ZTSNSt8_Rb_treeIN9NOMAD_4_39EvalPointES1_St9_IdentityIS1_ENS0_16EvalPointCompareESaIS1_EE13_Rb_tree_implIS4_Lb1EEE", !35, i64 0, !27, i64 8}
!35 = !{!"_ZTSSt20_Rb_tree_key_compareIN9NOMAD_4_316EvalPointCompareEE", !36, i64 0}
!36 = !{!"_ZTSN9NOMAD_4_316EvalPointCompareE"}
!37 = !{!"_ZTSN9NOMAD_4_311OutputLevelE", !7, i64 0}
!38 = !{!"_ZTSSt6vectorIN9NOMAD_4_39EvalPointESaIS1_EE", !39, i64 0}
!39 = !{!"_ZTSSt12_Vector_baseIN9NOMAD_4_39EvalPointESaIS1_EE", !40, i64 0}
!40 = !{!"_ZTSNSt12_Vector_baseIN9NOMAD_4_39EvalPointESaIS1_EE12_Vector_implE", !41, i64 0}
!41 = !{!"_ZTSNSt12_Vector_baseIN9NOMAD_4_39EvalPointESaIS1_EE17_Vector_impl_dataE", !12, i64 0, !12, i64 8, !12, i64 16}
!42 = !{!"_ZTSSt6vectorIdSaIdEE", !43, i64 0}
!43 = !{!"_ZTSSt12_Vector_baseIdSaIdEE", !44, i64 0}
!44 = !{!"_ZTSNSt12_Vector_baseIdSaIdEE12_Vector_implE", !45, i64 0}
!45 = !{!"_ZTSNSt12_Vector_baseIdSaIdEE17_Vector_impl_dataE", !12, i64 0, !12, i64 8, !12, i64 16}
!46 = !{!"_ZTSSt6vectorIS_IdSaIdEESaIS1_EE", !47, i64 0}
!47 = !{!"_ZTSSt12_Vector_baseISt6vectorIdSaIdEESaIS2_EE", !48, i64 0}
!48 = !{!"_ZTSNSt12_Vector_baseISt6vectorIdSaIdEESaIS2_EE12_Vector_implE", !49, i64 0}
!49 = !{!"_ZTSNSt12_Vector_baseISt6vectorIdSaIdEESaIS2_EE17_Vector_impl_dataE", !12, i64 0, !12, i64 8, !12, i64 16}
!50 = !{!"_ZTSSt6vectorIbSaIbEE", !51, i64 0}
!51 = !{!"_ZTSSt13_Bvector_baseISaIbEE", !52, i64 0}
!52 = !{!"_ZTSNSt13_Bvector_baseISaIbEE13_Bvector_implE", !53, i64 0}
!53 = !{!"_ZTSNSt13_Bvector_baseISaIbEE18_Bvector_impl_dataE", !54, i64 0, !54, i64 16, !12, i64 32}
!54 = !{!"_ZTSSt13_Bit_iterator", !55, i64 0}
!55 = !{!"_ZTSSt18_Bit_iterator_base", !12, i64 0, !56, i64 8}
!56 = !{!"int", !7, i64 0}
!57 = !{!"_ZTSSt6vectorIiSaIiEE", !58, i64 0}
!58 = !{!"_ZTSSt12_Vector_baseIiSaIiEE", !59, i64 0}
!59 = !{!"_ZTSNSt12_Vector_baseIiSaIiEE12_Vector_implE", !60, i64 0}
!60 = !{!"_ZTSNSt12_Vector_baseIiSaIiEE17_Vector_impl_dataE", !12, i64 0, !12, i64 8, !12, i64 16}
!61 = distinct !{!61, !62}
!62 = !{!"llvm.loop.mustprogress"}
!63 = distinct !{!63, !62}
!64 = !{!37, !37, i64 0}
!65 = !{!10, !37, i64 208}
!66 = distinct !{!66, !62}
!67 = !{!10, !6, i64 520}
!68 = distinct !{!68, !62}
!69 = !{!56, !56, i64 0}
!70 = distinct !{!70, !62}
!71 = distinct !{!71, !62}
!72 = distinct !{!72, !62}
!73 = distinct !{!73, !62}


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