; LLVM IR from ERGO-Code/HiGHS :: src/mip (HighsCutPool)

; 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::vector.55" = type { %"struct.std::_Vector_base.56" }
%"struct.std::_Vector_base.56" = type { %"struct.std::_Vector_base<std::pair<double, int>, std::allocator<std::pair<double, int>>>::_Vector_impl" }
%"struct.std::_Vector_base<std::pair<double, int>, std::allocator<std::pair<double, int>>>::_Vector_impl" = type { %"struct.std::_Vector_base<std::pair<double, int>, std::allocator<std::pair<double, int>>>::_Vector_impl_data" }
%"struct.std::_Vector_base<std::pair<double, int>, std::allocator<std::pair<double, int>>>::_Vector_impl_data" = type { ptr, ptr, ptr }
%"struct.std::pair.43" = type { i32, i32 }
%"struct.std::pair.48" = type { i16, i32 }
%"class.__gnu_cxx::__normal_iterator" = type { ptr }
%"struct.std::pair" = type { %"struct.std::__detail::_Node_iterator", %"struct.std::__detail::_Node_iterator" }
%"struct.std::__detail::_Node_iterator" = type { %"struct.std::__detail::_Node_iterator_base" }
%"struct.std::__detail::_Node_iterator_base" = type { ptr }
%"struct.std::pair.45" = type <{ %"struct.std::_Rb_tree_const_iterator", i8, [7 x i8] }>
%"struct.std::_Rb_tree_const_iterator" = type { ptr }
%class.HighsCDouble = type { double, double }
%"class.__gnu_cxx::__normal_iterator.102" = type { ptr }
%class.anon = type { ptr }
%class.anon.103 = type { i8 }
%"class.__gnu_cxx::__normal_iterator.104" = type { ptr }
%class.HighsCutPool = type { %class.HighsDynamicRowMatrix, %"class.std::vector.8", %"class.std::vector.21", %"class.std::vector.8", %"class.std::vector.8", %"class.std::vector.13", %"class.std::unordered_multimap", %"class.std::vector.31", %"class.std::set", double, double, double, i32, i32, i32, i32, i32, %"class.std::vector.3", %"class.std::vector.36" }
%class.HighsDynamicRowMatrix = type { %"class.std::vector", %"class.std::vector.3", %"class.std::vector.8", %"class.std::vector.3", %"class.std::vector.3", %"class.std::vector.3", %"class.std::vector.3", %"class.std::vector.3", %"class.std::vector.3", %"class.std::vector.3", %"class.std::vector.13", %"class.std::set", %"class.std::vector.3" }
%"class.std::vector" = type { %"struct.std::_Vector_base" }
%"struct.std::_Vector_base" = type { %"struct.std::_Vector_base<std::pair<int, int>, std::allocator<std::pair<int, int>>>::_Vector_impl" }
%"struct.std::_Vector_base<std::pair<int, int>, std::allocator<std::pair<int, int>>>::_Vector_impl" = type { %"struct.std::_Vector_base<std::pair<int, int>, std::allocator<std::pair<int, int>>>::_Vector_impl_data" }
%"struct.std::_Vector_base<std::pair<int, int>, std::allocator<std::pair<int, int>>>::_Vector_impl_data" = type { ptr, ptr, ptr }
%"class.std::vector.21" = type { %"struct.std::_Vector_base.22" }
%"struct.std::_Vector_base.22" = type { %"struct.std::_Vector_base<short, std::allocator<short>>::_Vector_impl" }
%"struct.std::_Vector_base<short, std::allocator<short>>::_Vector_impl" = type { %"struct.std::_Vector_base<short, std::allocator<short>>::_Vector_impl_data" }
%"struct.std::_Vector_base<short, std::allocator<short>>::_Vector_impl_data" = type { ptr, ptr, ptr }
%"class.std::vector.8" = type { %"struct.std::_Vector_base.9" }
%"struct.std::_Vector_base.9" = 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.13" = type { %"struct.std::_Vector_base.14" }
%"struct.std::_Vector_base.14" = type { %"struct.std::_Vector_base<unsigned char, std::allocator<unsigned char>>::_Vector_impl" }
%"struct.std::_Vector_base<unsigned char, std::allocator<unsigned char>>::_Vector_impl" = type { %"struct.std::_Vector_base<unsigned char, std::allocator<unsigned char>>::_Vector_impl_data" }
%"struct.std::_Vector_base<unsigned char, std::allocator<unsigned char>>::_Vector_impl_data" = type { ptr, ptr, ptr }
%"class.std::unordered_multimap" = type { %"class.std::_Hashtable" }
%"class.std::_Hashtable" = type { ptr, i64, %"struct.std::__detail::_Hash_node_base", i64, %"struct.std::__detail::_Prime_rehash_policy", ptr }
%"struct.std::__detail::_Hash_node_base" = type { ptr }
%"struct.std::__detail::_Prime_rehash_policy" = type { float, i64 }
%"class.std::vector.31" = type { %"struct.std::_Vector_base.32" }
%"struct.std::_Vector_base.32" = type { %"struct.std::_Vector_base<HighsDomain::CutpoolPropagation *, std::allocator<HighsDomain::CutpoolPropagation *>>::_Vector_impl" }
%"struct.std::_Vector_base<HighsDomain::CutpoolPropagation *, std::allocator<HighsDomain::CutpoolPropagation *>>::_Vector_impl" = type { %"struct.std::_Vector_base<HighsDomain::CutpoolPropagation *, std::allocator<HighsDomain::CutpoolPropagation *>>::_Vector_impl_data" }
%"struct.std::_Vector_base<HighsDomain::CutpoolPropagation *, std::allocator<HighsDomain::CutpoolPropagation *>>::_Vector_impl_data" = type { ptr, ptr, ptr }
%"class.std::set" = type { %"class.std::_Rb_tree" }
%"class.std::_Rb_tree" = type { %"struct.std::_Rb_tree<std::pair<int, int>, std::pair<int, int>, std::_Identity<std::pair<int, int>>, std::less<std::pair<int, int>>>::_Rb_tree_impl" }
%"struct.std::_Rb_tree<std::pair<int, int>, std::pair<int, int>, std::_Identity<std::pair<int, int>>, std::less<std::pair<int, int>>>::_Rb_tree_impl" = type { [8 x i8], %"struct.std::_Rb_tree_header" }
%"struct.std::_Rb_tree_header" = type { %"struct.std::_Rb_tree_node_base", i64 }
%"struct.std::_Rb_tree_node_base" = type { i32, ptr, ptr, ptr }
%"class.std::vector.3" = type { %"struct.std::_Vector_base.4" }
%"struct.std::_Vector_base.4" = 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 }
%"class.std::vector.36" = type { %"struct.std::_Vector_base.37" }
%"struct.std::_Vector_base.37" = type { %"struct.std::_Vector_base<std::pair<int, double>, std::allocator<std::pair<int, double>>>::_Vector_impl" }
%"struct.std::_Vector_base<std::pair<int, double>, std::allocator<std::pair<int, double>>>::_Vector_impl" = type { %"struct.std::_Vector_base<std::pair<int, double>, std::allocator<std::pair<int, double>>>::_Vector_impl_data" }
%"struct.std::_Vector_base<std::pair<int, double>, std::allocator<std::pair<int, double>>>::_Vector_impl_data" = type { ptr, ptr, ptr }
%"struct.std::pair.41" = type <{ i64, i32, [4 x i8] }>
%class.HighsDomain = type { %"class.std::vector.13", %"class.std::vector.3", %"class.std::vector", %"class.std::vector.60", %"class.std::vector.65", %"class.std::vector.55", %"class.std::vector.50", %"class.std::vector.50", %"class.std::vector.3", %"class.std::vector.3", %"class.std::vector.8", %"class.std::vector.13", %"class.std::vector.3", %"struct.HighsDomain::ObjectivePropagation", ptr, %"class.std::deque", %"class.std::deque.83", i8, %"struct.HighsDomain::Reason", i32, %"class.std::vector.3", %"class.std::vector.3", %"class.std::vector.3", %class.HighsHashTable, i8, %"class.std::vector.8", %"class.std::vector.8" }
%"class.std::vector.60" = type { %"struct.std::_Vector_base.61" }
%"struct.std::_Vector_base.61" = type { %"struct.std::_Vector_base<HighsDomainChange, std::allocator<HighsDomainChange>>::_Vector_impl" }
%"struct.std::_Vector_base<HighsDomainChange, std::allocator<HighsDomainChange>>::_Vector_impl" = type { %"struct.std::_Vector_base<HighsDomainChange, std::allocator<HighsDomainChange>>::_Vector_impl_data" }
%"struct.std::_Vector_base<HighsDomainChange, std::allocator<HighsDomainChange>>::_Vector_impl_data" = type { ptr, ptr, ptr }
%"class.std::vector.65" = type { %"struct.std::_Vector_base.66" }
%"struct.std::_Vector_base.66" = type { %"struct.std::_Vector_base<HighsDomain::Reason, std::allocator<HighsDomain::Reason>>::_Vector_impl" }
%"struct.std::_Vector_base<HighsDomain::Reason, std::allocator<HighsDomain::Reason>>::_Vector_impl" = type { %"struct.std::_Vector_base<HighsDomain::Reason, std::allocator<HighsDomain::Reason>>::_Vector_impl_data" }
%"struct.std::_Vector_base<HighsDomain::Reason, std::allocator<HighsDomain::Reason>>::_Vector_impl_data" = type { ptr, ptr, ptr }
%"class.std::vector.50" = type { %"struct.std::_Vector_base.51" }
%"struct.std::_Vector_base.51" = type { %"struct.std::_Vector_base<HighsCDouble, std::allocator<HighsCDouble>>::_Vector_impl" }
%"struct.std::_Vector_base<HighsCDouble, std::allocator<HighsCDouble>>::_Vector_impl" = type { %"struct.std::_Vector_base<HighsCDouble, std::allocator<HighsCDouble>>::_Vector_impl_data" }
%"struct.std::_Vector_base<HighsCDouble, std::allocator<HighsCDouble>>::_Vector_impl_data" = type { ptr, ptr, ptr }
%"struct.HighsDomain::ObjectivePropagation" = type { ptr, ptr, ptr, %class.HighsCDouble, i32, double, i8, %"class.std::vector.70", %"class.std::vector", %"class.std::vector.8", %"class.std::vector.75" }
%"class.std::vector.70" = type { %"struct.std::_Vector_base.71" }
%"struct.std::_Vector_base.71" = type { %"struct.std::_Vector_base<HighsDomain::ObjectivePropagation::ObjectiveContribution, std::allocator<HighsDomain::ObjectivePropagation::ObjectiveContribution>>::_Vector_impl" }
%"struct.std::_Vector_base<HighsDomain::ObjectivePropagation::ObjectiveContribution, std::allocator<HighsDomain::ObjectivePropagation::ObjectiveContribution>>::_Vector_impl" = type { %"struct.std::_Vector_base<HighsDomain::ObjectivePropagation::ObjectiveContribution, std::allocator<HighsDomain::ObjectivePropagation::ObjectiveContribution>>::_Vector_impl_data" }
%"struct.std::_Vector_base<HighsDomain::ObjectivePropagation::ObjectiveContribution, std::allocator<HighsDomain::ObjectivePropagation::ObjectiveContribution>>::_Vector_impl_data" = type { ptr, ptr, ptr }
%"class.std::vector.75" = type { %"struct.std::_Vector_base.76" }
%"struct.std::_Vector_base.76" = type { %"struct.std::_Vector_base<HighsDomain::ObjectivePropagation::PartitionCliqueData, std::allocator<HighsDomain::ObjectivePropagation::PartitionCliqueData>>::_Vector_impl" }
%"struct.std::_Vector_base<HighsDomain::ObjectivePropagation::PartitionCliqueData, std::allocator<HighsDomain::ObjectivePropagation::PartitionCliqueData>>::_Vector_impl" = type { %"struct.std::_Vector_base<HighsDomain::ObjectivePropagation::PartitionCliqueData, std::allocator<HighsDomain::ObjectivePropagation::PartitionCliqueData>>::_Vector_impl_data" }
%"struct.std::_Vector_base<HighsDomain::ObjectivePropagation::PartitionCliqueData, std::allocator<HighsDomain::ObjectivePropagation::PartitionCliqueData>>::_Vector_impl_data" = type { ptr, ptr, ptr }
%"class.std::deque" = type { %"class.std::_Deque_base" }
%"class.std::_Deque_base" = type { %"struct.std::_Deque_base<HighsDomain::CutpoolPropagation, std::allocator<HighsDomain::CutpoolPropagation>>::_Deque_impl" }
%"struct.std::_Deque_base<HighsDomain::CutpoolPropagation, std::allocator<HighsDomain::CutpoolPropagation>>::_Deque_impl" = type { %"struct.std::_Deque_base<HighsDomain::CutpoolPropagation, std::allocator<HighsDomain::CutpoolPropagation>>::_Deque_impl_data" }
%"struct.std::_Deque_base<HighsDomain::CutpoolPropagation, std::allocator<HighsDomain::CutpoolPropagation>>::_Deque_impl_data" = type { ptr, i64, %"struct.std::_Deque_iterator", %"struct.std::_Deque_iterator" }
%"struct.std::_Deque_iterator" = type { ptr, ptr, ptr, ptr }
%"class.std::deque.83" = type { %"class.std::_Deque_base.84" }
%"class.std::_Deque_base.84" = type { %"struct.std::_Deque_base<HighsDomain::ConflictPoolPropagation, std::allocator<HighsDomain::ConflictPoolPropagation>>::_Deque_impl" }
%"struct.std::_Deque_base<HighsDomain::ConflictPoolPropagation, std::allocator<HighsDomain::ConflictPoolPropagation>>::_Deque_impl" = type { %"struct.std::_Deque_base<HighsDomain::ConflictPoolPropagation, std::allocator<HighsDomain::ConflictPoolPropagation>>::_Deque_impl_data" }
%"struct.std::_Deque_base<HighsDomain::ConflictPoolPropagation, std::allocator<HighsDomain::ConflictPoolPropagation>>::_Deque_impl_data" = type { ptr, i64, %"struct.std::_Deque_iterator.88", %"struct.std::_Deque_iterator.88" }
%"struct.std::_Deque_iterator.88" = type { ptr, ptr, ptr, ptr }
%"struct.HighsDomain::Reason" = type { i32, i32 }
%class.HighsHashTable = type { %"class.std::unique_ptr", %"class.std::unique_ptr.91", i64, i64, i64 }
%"class.std::unique_ptr" = type { %"struct.std::__uniq_ptr_data" }
%"struct.std::__uniq_ptr_data" = type { %"class.std::__uniq_ptr_impl" }
%"class.std::__uniq_ptr_impl" = type { %"class.std::tuple" }
%"class.std::tuple" = type { %"struct.std::_Tuple_impl" }
%"struct.std::_Tuple_impl" = type { %"struct.std::_Head_base.90" }
%"struct.std::_Head_base.90" = type { ptr }
%"class.std::unique_ptr.91" = type { %"struct.std::__uniq_ptr_data.92" }
%"struct.std::__uniq_ptr_data.92" = type { %"class.std::__uniq_ptr_impl.93" }
%"class.std::__uniq_ptr_impl.93" = type { %"class.std::tuple.94" }
%"class.std::tuple.94" = type { %"struct.std::_Tuple_impl.95" }
%"struct.std::_Tuple_impl.95" = type { %"struct.std::_Head_base.98" }
%"struct.std::_Head_base.98" = type { ptr }
%"struct.std::pair.99" = type <{ double, i32, [4 x i8] }>
%struct.HighsCutSet = type { %"class.std::vector.3", %"class.std::vector.3", %"class.std::vector.3", %"class.std::vector.8", %"class.std::vector.8", %"class.std::vector.8" }

@.str.51 = external hidden unnamed_addr constant [41 x i8], align 1
@.str.52 = external hidden unnamed_addr constant [74 x i8], align 1
@.str.53 = external hidden unnamed_addr constant [15 x i8], align 1
@__PRETTY_FUNCTION__._ZN12HighsCutPool8separateERKSt6vectorIdSaIdEER11HighsDomainR11HighsCutSetd = external hidden unnamed_addr constant [95 x i8], align 1
@.str.54 = external hidden unnamed_addr constant [43 x i8], align 1
@.str.55 = external hidden unnamed_addr constant [43 x i8], align 1
@.str.56 = external hidden unnamed_addr constant [21 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

declare i32 @__gxx_personality_v0(...)

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

; Function Attrs: mustprogress uwtable
declare dso_local { ptr, ptr } @_ZNSt18unordered_multimapImiSt4hashImESt8equal_toImESaISt4pairIKmiEEE11equal_rangeERS5_(ptr noundef nonnull align 8 dereferenceable(56), ptr noundef nonnull align 8 dereferenceable(8)) #1 align 2

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

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

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

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

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

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

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

; Function Attrs: nocallback nofree nosync nounwind speculatable willreturn memory(none)
declare double @llvm.fmuladd.f64(double, double, double) #4

; 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) #2 align 2

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

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

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

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

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

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

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

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

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

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

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

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

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

declare void @_ZN11HighsDomain18CutpoolPropagation10cutDeletedEib(ptr noundef nonnull align 8 dereferenceable(144), i32 noundef, i1 noundef zeroext) #6

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

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

declare void @_ZN21HighsDynamicRowMatrix9removeRowEi(ptr noundef nonnull align 8 dereferenceable(336), i32 noundef) #6

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

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

; Function Attrs: noreturn nounwind
declare void @__assert_fail(ptr noundef, ptr noundef, i32 noundef, ptr noundef) #7

; Function Attrs: mustprogress uwtable
define dso_local void @_ZN12HighsCutPool8separateERKSt6vectorIdSaIdEER11HighsDomainR11HighsCutSetd(ptr noundef nonnull align 8 dereferenceable(680) %0, ptr noundef nonnull align 8 dereferenceable(24) %1, ptr noundef nonnull align 8 dereferenceable(824) %2, ptr noundef nonnull align 8 dereferenceable(144) %3, double noundef %4) #1 align 2 personality ptr @__gxx_personality_v0 {
  %6 = alloca ptr, align 8
  %7 = alloca ptr, align 8
  %8 = alloca ptr, align 8
  %9 = alloca ptr, align 8
  %10 = alloca double, align 8
  %11 = alloca i32, align 4
  %12 = alloca ptr, align 8
  %13 = alloca ptr, align 8
  %14 = alloca %"class.std::vector.55", align 8
  %15 = alloca i32, align 4
  %16 = alloca i32, align 4
  %17 = alloca ptr, align 8
  %18 = alloca i32, align 4
  %19 = alloca i32, align 4
  %20 = alloca i32, align 4
  %21 = alloca i32, align 4
  %22 = alloca i32, align 4
  %23 = alloca double, align 8
  %24 = alloca i32, align 4
  %25 = alloca i32, align 4
  %26 = alloca double, align 8
  %27 = alloca i8, align 1
  %28 = alloca %"struct.std::pair.43", align 4
  %29 = alloca %"struct.std::pair.48", align 4
  %30 = alloca i64, align 8
  %31 = alloca ptr, align 8
  %32 = alloca %"class.__gnu_cxx::__normal_iterator", align 8
  %33 = alloca %"class.__gnu_cxx::__normal_iterator", align 8
  %34 = alloca ptr, align 8
  %35 = alloca %"struct.std::pair", align 8
  %36 = alloca %"struct.std::__detail::_Node_iterator", align 8
  %37 = alloca %"struct.std::__detail::_Node_iterator", align 8
  %38 = alloca %"struct.std::__detail::_Node_iterator", align 8
  %39 = alloca %"struct.std::pair.45", align 8
  %40 = alloca %class.HighsCDouble, align 8
  %41 = alloca i32, align 4
  %42 = alloca i32, align 4
  %43 = alloca i32, align 4
  %44 = alloca double, align 8
  %45 = alloca %"struct.std::pair.45", align 8
  %46 = alloca double, align 8
  %47 = alloca %"class.__gnu_cxx::__normal_iterator.102", align 8
  %48 = alloca %"class.__gnu_cxx::__normal_iterator.102", align 8
  %49 = alloca %class.anon, align 8
  %50 = alloca double, align 8
  %51 = alloca i32, align 4
  %52 = alloca %"class.__gnu_cxx::__normal_iterator.102", align 8
  %53 = alloca %"class.__gnu_cxx::__normal_iterator.102", align 8
  %54 = alloca %"class.__gnu_cxx::__normal_iterator.102", align 8
  %55 = alloca %class.anon.103, align 1
  %56 = alloca %"class.__gnu_cxx::__normal_iterator.102", align 8
  %57 = alloca i32, align 4
  %58 = alloca i32, align 4
  %59 = alloca i64, align 8
  %60 = alloca i64, align 8
  %61 = alloca i32, align 4
  %62 = alloca ptr, align 8
  %63 = alloca %"class.__gnu_cxx::__normal_iterator.102", align 8
  %64 = alloca %"class.__gnu_cxx::__normal_iterator.102", align 8
  %65 = alloca ptr, align 8
  %66 = alloca i8, align 1
  %67 = alloca double, align 8
  %68 = alloca ptr, align 8
  %69 = alloca %"class.__gnu_cxx::__normal_iterator.104", align 8
  %70 = alloca %"class.__gnu_cxx::__normal_iterator.104", align 8
  %71 = alloca i32, align 4
  %72 = alloca %"struct.std::pair.43", align 4
  %73 = alloca %"struct.std::pair.48", align 4
  %74 = alloca i32, align 4
  %75 = alloca %"struct.std::pair.45", align 8
  %76 = alloca i32, align 4
  %77 = alloca i32, align 4
  %78 = alloca i32, align 4
  %79 = alloca i32, align 4
  %80 = alloca i32, align 4
  %81 = alloca i32, align 4
  store ptr %0, ptr %6, align 8, !tbaa !5
  store ptr %1, ptr %7, align 8, !tbaa !5
  store ptr %2, ptr %8, align 8, !tbaa !5
  store ptr %3, ptr %9, align 8, !tbaa !5
  store double %4, ptr %10, align 8, !tbaa !9
  %82 = load ptr, ptr %6, align 8
  call void @llvm.lifetime.start.p0(i64 4, ptr %11) #10
  %83 = getelementptr inbounds %class.HighsCutPool, ptr %82, i32 0, i32 0
  %84 = call noundef i32 @_ZNK21HighsDynamicRowMatrix10getNumRowsEv(ptr noundef nonnull align 8 dereferenceable(336) %83)
  store i32 %84, ptr %11, align 4, !tbaa !11
  call void @llvm.lifetime.start.p0(i64 8, ptr %12) #10
  %85 = getelementptr inbounds %class.HighsCutPool, ptr %82, i32 0, i32 0
  %86 = call noundef ptr @_ZNK21HighsDynamicRowMatrix10getARindexEv(ptr noundef nonnull align 8 dereferenceable(336) %85)
  store ptr %86, ptr %12, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %13) #10
  %87 = getelementptr inbounds %class.HighsCutPool, ptr %82, i32 0, i32 0
  %88 = call noundef ptr @_ZNK21HighsDynamicRowMatrix10getARvalueEv(ptr noundef nonnull align 8 dereferenceable(336) %87)
  store ptr %88, ptr %13, align 8, !tbaa !5
  %89 = load ptr, ptr %9, align 8, !tbaa !5
  %90 = call noundef zeroext i1 @_ZNK11HighsCutSet5emptyEv(ptr noundef nonnull align 8 dereferenceable(144) %89)
  br i1 %90, label %91, label %92

91:                                               ; preds = %5
  br label %94

92:                                               ; preds = %5
  call void @__assert_fail(ptr noundef @.str.53, ptr noundef @.str.52, i32 noundef 174, ptr noundef @__PRETTY_FUNCTION__._ZN12HighsCutPool8separateERKSt6vectorIdSaIdEER11HighsDomainR11HighsCutSetd) #11
  unreachable

93:                                               ; No predecessors!
  br label %94

94:                                               ; preds = %93, %91
  call void @llvm.lifetime.start.p0(i64 24, ptr %14) #10
  call void @_ZNSt6vectorISt4pairIdiESaIS1_EEC2Ev(ptr noundef nonnull align 8 dereferenceable(24) %14) #10
  call void @llvm.lifetime.start.p0(i64 4, ptr %15) #10
  %95 = getelementptr inbounds %class.HighsCutPool, ptr %82, i32 0, i32 12
  %96 = load i32, ptr %95, align 8, !tbaa !13
  store i32 %96, ptr %15, align 4, !tbaa !11
  call void @llvm.lifetime.start.p0(i64 4, ptr %16) #10
  %97 = invoke noundef i32 @_ZNK12HighsCutPool10getNumCutsEv(ptr noundef nonnull align 8 dereferenceable(680) %82)
          to label %98 unwind label %122

98:                                               ; preds = %94
  %99 = getelementptr inbounds %class.HighsCutPool, ptr %82, i32 0, i32 14
  %100 = load i32, ptr %99, align 8, !tbaa !58
  %101 = sub nsw i32 %97, %100
  store i32 %101, ptr %16, align 4, !tbaa !11
  br label %102

102:                                              ; preds = %112, %98
  %103 = load i32, ptr %15, align 4, !tbaa !11
  %104 = icmp sgt i32 %103, 1
  br i1 %104, label %105, label %110

105:                                              ; preds = %102
  %106 = load i32, ptr %16, align 4, !tbaa !11
  %107 = getelementptr inbounds %class.HighsCutPool, ptr %82, i32 0, i32 13
  %108 = load i32, ptr %107, align 4, !tbaa !59
  %109 = icmp sgt i32 %106, %108
  br label %110

110:                                              ; preds = %105, %102
  %111 = phi i1 [ false, %102 ], [ %109, %105 ]
  br i1 %111, label %112, label %126

112:                                              ; preds = %110
  %113 = getelementptr inbounds %class.HighsCutPool, ptr %82, i32 0, i32 17
  %114 = load i32, ptr %15, align 4, !tbaa !11
  %115 = sext i32 %114 to i64
  %116 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNSt6vectorIiSaIiEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %113, i64 noundef %115) #10
  %117 = load i32, ptr %116, align 4, !tbaa !11
  %118 = load i32, ptr %16, align 4, !tbaa !11
  %119 = sub nsw i32 %118, %117
  store i32 %119, ptr %16, align 4, !tbaa !11
  %120 = load i32, ptr %15, align 4, !tbaa !11
  %121 = add nsw i32 %120, -1
  store i32 %121, ptr %15, align 4, !tbaa !11
  br label %102, !llvm.loop !60

122:                                              ; preds = %558, %546, %94
  %123 = landingpad { ptr, i32 }
          cleanup
  %124 = extractvalue { ptr, i32 } %123, 0
  store ptr %124, ptr %17, align 8
  %125 = extractvalue { ptr, i32 } %123, 1
  store i32 %125, ptr %18, align 4
  br label %946

126:                                              ; preds = %110
  call void @llvm.lifetime.start.p0(i64 4, ptr %19) #10
  store i32 0, ptr %19, align 4, !tbaa !11
  br label %127

127:                                              ; preds = %521, %126
  %128 = load i32, ptr %19, align 4, !tbaa !11
  %129 = load i32, ptr %11, align 4, !tbaa !11
  %130 = icmp slt i32 %128, %129
  br i1 %130, label %132, label %131

131:                                              ; preds = %127
  store i32 4, ptr %20, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %19) #10
  br label %533

132:                                              ; preds = %127
  %133 = getelementptr inbounds %class.HighsCutPool, ptr %82, i32 0, i32 2
  %134 = load i32, ptr %19, align 4, !tbaa !11
  %135 = sext i32 %134 to i64
  %136 = call noundef nonnull align 2 dereferenceable(2) ptr @_ZNSt6vectorIsSaIsEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %133, i64 noundef %135) #10
  %137 = load i16, ptr %136, align 2, !tbaa !62
  %138 = sext i16 %137 to i32
  %139 = icmp slt i32 %138, 0
  br i1 %139, label %140, label %141

140:                                              ; preds = %132
  br label %521

141:                                              ; preds = %132
  call void @llvm.lifetime.start.p0(i64 4, ptr %21) #10
  %142 = getelementptr inbounds %class.HighsCutPool, ptr %82, i32 0, i32 0
  %143 = load i32, ptr %19, align 4, !tbaa !11
  %144 = invoke noundef i32 @_ZNK21HighsDynamicRowMatrix11getRowStartEi(ptr noundef nonnull align 8 dereferenceable(336) %142, i32 noundef %143)
          to label %145 unwind label %162

145:                                              ; preds = %141
  store i32 %144, ptr %21, align 4, !tbaa !11
  call void @llvm.lifetime.start.p0(i64 4, ptr %22) #10
  %146 = getelementptr inbounds %class.HighsCutPool, ptr %82, i32 0, i32 0
  %147 = load i32, ptr %19, align 4, !tbaa !11
  %148 = invoke noundef i32 @_ZNK21HighsDynamicRowMatrix9getRowEndEi(ptr noundef nonnull align 8 dereferenceable(336) %146, i32 noundef %147)
          to label %149 unwind label %166

149:                                              ; preds = %145
  store i32 %148, ptr %22, align 4, !tbaa !11
  call void @llvm.lifetime.start.p0(i64 8, ptr %23) #10
  %150 = getelementptr inbounds %class.HighsCutPool, ptr %82, i32 0, i32 1
  %151 = load i32, ptr %19, align 4, !tbaa !11
  %152 = sext i32 %151 to i64
  %153 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt6vectorIdSaIdEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %150, i64 noundef %152) #10
  %154 = load double, ptr %153, align 8, !tbaa !9
  %155 = fneg double %154
  store double %155, ptr %23, align 8, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 4, ptr %24) #10
  %156 = load i32, ptr %21, align 4, !tbaa !11
  store i32 %156, ptr %24, align 4, !tbaa !11
  br label %157

157:                                              ; preds = %189, %149
  %158 = load i32, ptr %24, align 4, !tbaa !11
  %159 = load i32, ptr %22, align 4, !tbaa !11
  %160 = icmp ne i32 %158, %159
  br i1 %160, label %170, label %161

161:                                              ; preds = %157
  store i32 7, ptr %20, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %24) #10
  br label %192

162:                                              ; preds = %141
  %163 = landingpad { ptr, i32 }
          cleanup
  %164 = extractvalue { ptr, i32 } %163, 0
  store ptr %164, ptr %17, align 8
  %165 = extractvalue { ptr, i32 } %163, 1
  store i32 %165, ptr %18, align 4
  br label %532

166:                                              ; preds = %145
  %167 = landingpad { ptr, i32 }
          cleanup
  %168 = extractvalue { ptr, i32 } %167, 0
  store ptr %168, ptr %17, align 8
  %169 = extractvalue { ptr, i32 } %167, 1
  store i32 %169, ptr %18, align 4
  br label %531

170:                                              ; preds = %157
  call void @llvm.lifetime.start.p0(i64 4, ptr %25) #10
  %171 = load ptr, ptr %12, align 8, !tbaa !5
  %172 = load i32, ptr %24, align 4, !tbaa !11
  %173 = sext i32 %172 to i64
  %174 = getelementptr inbounds i32, ptr %171, i64 %173
  %175 = load i32, ptr %174, align 4, !tbaa !11
  store i32 %175, ptr %25, align 4, !tbaa !11
  call void @llvm.lifetime.start.p0(i64 8, ptr %26) #10
  %176 = load ptr, ptr %7, align 8, !tbaa !5
  %177 = load i32, ptr %25, align 4, !tbaa !11
  %178 = sext i32 %177 to i64
  %179 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNKSt6vectorIdSaIdEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %176, i64 noundef %178) #10
  %180 = load double, ptr %179, align 8, !tbaa !9
  store double %180, ptr %26, align 8, !tbaa !9
  %181 = load ptr, ptr %13, align 8, !tbaa !5
  %182 = load i32, ptr %24, align 4, !tbaa !11
  %183 = sext i32 %182 to i64
  %184 = getelementptr inbounds double, ptr %181, i64 %183
  %185 = load double, ptr %184, align 8, !tbaa !9
  %186 = load double, ptr %26, align 8, !tbaa !9
  %187 = load double, ptr %23, align 8, !tbaa !9
  %188 = call double @llvm.fmuladd.f64(double %185, double %186, double %187)
  store double %188, ptr %23, align 8, !tbaa !9
  call void @llvm.lifetime.end.p0(i64 8, ptr %26) #10
  call void @llvm.lifetime.end.p0(i64 4, ptr %25) #10
  br label %189

189:                                              ; preds = %170
  %190 = load i32, ptr %24, align 4, !tbaa !11
  %191 = add nsw i32 %190, 1
  store i32 %191, ptr %24, align 4, !tbaa !11
  br label %157, !llvm.loop !64

192:                                              ; preds = %161
  %193 = getelementptr inbounds %class.HighsCutPool, ptr %82, i32 0, i32 17
  %194 = getelementptr inbounds %class.HighsCutPool, ptr %82, i32 0, i32 2
  %195 = load i32, ptr %19, align 4, !tbaa !11
  %196 = sext i32 %195 to i64
  %197 = call noundef nonnull align 2 dereferenceable(2) ptr @_ZNSt6vectorIsSaIsEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %194, i64 noundef %196) #10
  %198 = load i16, ptr %197, align 2, !tbaa !62
  %199 = sext i16 %198 to i64
  %200 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNSt6vectorIiSaIiEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %193, i64 noundef %199) #10
  %201 = load i32, ptr %200, align 4, !tbaa !11
  %202 = sub nsw i32 %201, 1
  store i32 %202, ptr %200, align 4, !tbaa !11
  call void @llvm.lifetime.start.p0(i64 1, ptr %27) #10
  %203 = getelementptr inbounds %class.HighsCutPool, ptr %82, i32 0, i32 0
  %204 = load i32, ptr %19, align 4, !tbaa !11
  %205 = invoke noundef zeroext i1 @_ZNK21HighsDynamicRowMatrix13columnsLinkedEi(ptr noundef nonnull align 8 dereferenceable(336) %203, i32 noundef %204)
          to label %206 unwind label %221

206:                                              ; preds = %192
  %207 = zext i1 %205 to i8
  store i8 %207, ptr %27, align 1, !tbaa !65
  %208 = load i8, ptr %27, align 1, !tbaa !65, !range !67, !noundef !68
  %209 = trunc i8 %208 to i1
  br i1 %209, label %210, label %229

210:                                              ; preds = %206
  %211 = getelementptr inbounds %class.HighsCutPool, ptr %82, i32 0, i32 8
  call void @llvm.lifetime.start.p0(i64 8, ptr %28) #10
  call void @llvm.lifetime.start.p0(i64 8, ptr %29) #10
  %212 = getelementptr inbounds %class.HighsCutPool, ptr %82, i32 0, i32 2
  %213 = load i32, ptr %19, align 4, !tbaa !11
  %214 = sext i32 %213 to i64
  %215 = call noundef nonnull align 2 dereferenceable(2) ptr @_ZNSt6vectorIsSaIsEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %212, i64 noundef %214) #10
  %216 = invoke i64 @_ZSt9make_pairIRsRiESt4pairINSt25__strip_reference_wrapperINSt5decayIT_E4typeEE6__typeENS3_INS4_IT0_E4typeEE6__typeEEOS5_OSA_(ptr noundef nonnull align 2 dereferenceable(2) %215, ptr noundef nonnull align 4 dereferenceable(4) %19)
          to label %217 unwind label %225

217:                                              ; preds = %210
  store i64 %216, ptr %29, align 4
  invoke void @_ZNSt4pairIiiEC2IsiTnNSt9enable_ifIXaaclsr6_PCCFPIT_T0_EE22_MoveConstructiblePairIS3_S4_EEclsr6_PCCFPIS3_S4_EE30_ImplicitlyMoveConvertiblePairIS3_S4_EEEbE4typeELb1EEEOS_IS3_S4_E(ptr noundef nonnull align 4 dereferenceable(8) %28, ptr noundef nonnull align 4 dereferenceable(8) %29)
          to label %218 unwind label %225

218:                                              ; preds = %217
  %219 = invoke noundef i64 @_ZNSt3setISt4pairIiiESt4lessIS1_ESaIS1_EE5eraseERKS1_(ptr noundef nonnull align 8 dereferenceable(48) %211, ptr noundef nonnull align 4 dereferenceable(8) %28)
          to label %220 unwind label %225

220:                                              ; preds = %218
  call void @llvm.lifetime.end.p0(i64 8, ptr %29) #10
  call void @llvm.lifetime.end.p0(i64 8, ptr %28) #10
  br label %229

221:                                              ; preds = %363, %192
  %222 = landingpad { ptr, i32 }
          cleanup
  %223 = extractvalue { ptr, i32 } %222, 0
  store ptr %223, ptr %17, align 8
  %224 = extractvalue { ptr, i32 } %222, 1
  store i32 %224, ptr %18, align 4
  br label %530

225:                                              ; preds = %218, %217, %210
  %226 = landingpad { ptr, i32 }
          cleanup
  %227 = extractvalue { ptr, i32 } %226, 0
  store ptr %227, ptr %17, align 8
  %228 = extractvalue { ptr, i32 } %226, 1
  store i32 %228, ptr %18, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %29) #10
  call void @llvm.lifetime.end.p0(i64 8, ptr %28) #10
  br label %530

229:                                              ; preds = %220, %206
  %230 = load double, ptr %23, align 8, !tbaa !9
  %231 = load double, ptr %10, align 8, !tbaa !9
  %232 = fcmp ole double %230, %231
  br i1 %232, label %233, label %387

233:                                              ; preds = %229
  %234 = getelementptr inbounds %class.HighsCutPool, ptr %82, i32 0, i32 2
  %235 = load i32, ptr %19, align 4, !tbaa !11
  %236 = sext i32 %235 to i64
  %237 = call noundef nonnull align 2 dereferenceable(2) ptr @_ZNSt6vectorIsSaIsEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %234, i64 noundef %236) #10
  %238 = load i16, ptr %237, align 2, !tbaa !62
  %239 = add i16 %238, 1
  store i16 %239, ptr %237, align 2, !tbaa !62
  %240 = getelementptr inbounds %class.HighsCutPool, ptr %82, i32 0, i32 2
  %241 = load i32, ptr %19, align 4, !tbaa !11
  %242 = sext i32 %241 to i64
  %243 = call noundef nonnull align 2 dereferenceable(2) ptr @_ZNSt6vectorIsSaIsEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %240, i64 noundef %242) #10
  %244 = load i16, ptr %243, align 2, !tbaa !62
  %245 = sext i16 %244 to i32
  %246 = load i32, ptr %15, align 4, !tbaa !11
  %247 = icmp sge i32 %245, %246
  br i1 %247, label %248, label %360

248:                                              ; preds = %233
  call void @llvm.lifetime.start.p0(i64 8, ptr %30) #10
  %249 = load ptr, ptr %12, align 8, !tbaa !5
  %250 = load i32, ptr %21, align 4, !tbaa !11
  %251 = sext i32 %250 to i64
  %252 = getelementptr inbounds i32, ptr %249, i64 %251
  %253 = load ptr, ptr %13, align 8, !tbaa !5
  %254 = load i32, ptr %21, align 4, !tbaa !11
  %255 = sext i32 %254 to i64
  %256 = getelementptr inbounds double, ptr %253, i64 %255
  %257 = getelementptr inbounds %class.HighsCutPool, ptr %82, i32 0, i32 4
  %258 = load i32, ptr %19, align 4, !tbaa !11
  %259 = sext i32 %258 to i64
  %260 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt6vectorIdSaIdEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %257, i64 noundef %259) #10
  %261 = load double, ptr %260, align 8, !tbaa !9
  %262 = load i32, ptr %22, align 4, !tbaa !11
  %263 = load i32, ptr %21, align 4, !tbaa !11
  %264 = sub nsw i32 %262, %263
  %265 = invoke noundef i64 @_ZL16compute_cut_hashPKiPKddi(ptr noundef %252, ptr noundef %256, double noundef %261, i32 noundef %264)
          to label %266 unwind label %277

266:                                              ; preds = %248
  store i64 %265, ptr %30, align 8, !tbaa !69
  call void @llvm.lifetime.start.p0(i64 8, ptr %31) #10
  %267 = getelementptr inbounds %class.HighsCutPool, ptr %82, i32 0, i32 7
  store ptr %267, ptr %31, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %32) #10
  %268 = load ptr, ptr %31, align 8, !tbaa !5
  %269 = call ptr @_ZNSt6vectorIPN11HighsDomain18CutpoolPropagationESaIS2_EE5beginEv(ptr noundef nonnull align 8 dereferenceable(24) %268) #10
  %270 = getelementptr inbounds %"class.__gnu_cxx::__normal_iterator", ptr %32, i32 0, i32 0
  store ptr %269, ptr %270, align 8
  call void @llvm.lifetime.start.p0(i64 8, ptr %33) #10
  %271 = load ptr, ptr %31, align 8, !tbaa !5
  %272 = call ptr @_ZNSt6vectorIPN11HighsDomain18CutpoolPropagationESaIS2_EE3endEv(ptr noundef nonnull align 8 dereferenceable(24) %271) #10
  %273 = getelementptr inbounds %"class.__gnu_cxx::__normal_iterator", ptr %33, i32 0, i32 0
  store ptr %272, ptr %273, align 8
  br label %274

274:                                              ; preds = %287, %266
  %275 = call noundef zeroext i1 @_ZN9__gnu_cxxneIPPN11HighsDomain18CutpoolPropagationESt6vectorIS3_SaIS3_EEEEbRKNS_17__normal_iteratorIT_T0_EESD_(ptr noundef nonnull align 8 dereferenceable(8) %32, ptr noundef nonnull align 8 dereferenceable(8) %33) #10
  br i1 %275, label %281, label %276

276:                                              ; preds = %274
  store i32 10, ptr %20, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %33) #10
  call void @llvm.lifetime.end.p0(i64 8, ptr %32) #10
  call void @llvm.lifetime.end.p0(i64 8, ptr %31) #10
  br label %293

277:                                              ; preds = %306, %296, %248
  %278 = landingpad { ptr, i32 }
          cleanup
  %279 = extractvalue { ptr, i32 } %278, 0
  store ptr %279, ptr %17, align 8
  %280 = extractvalue { ptr, i32 } %278, 1
  store i32 %280, ptr %18, align 4
  br label %359

281:                                              ; preds = %274
  call void @llvm.lifetime.start.p0(i64 8, ptr %34) #10
  %282 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNK9__gnu_cxx17__normal_iteratorIPPN11HighsDomain18CutpoolPropagationESt6vectorIS3_SaIS3_EEEdeEv(ptr noundef nonnull align 8 dereferenceable(8) %32) #10
  %283 = load ptr, ptr %282, align 8, !tbaa !5
  store ptr %283, ptr %34, align 8, !tbaa !5
  %284 = load ptr, ptr %34, align 8, !tbaa !5
  %285 = load i32, ptr %19, align 4, !tbaa !11
  invoke void @_ZN11HighsDomain18CutpoolPropagation10cutDeletedEib(ptr noundef nonnull align 8 dereferenceable(144) %284, i32 noundef %285, i1 noundef zeroext false)
          to label %286 unwind label %289

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

287:                                              ; preds = %286
  %288 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZN9__gnu_cxx17__normal_iteratorIPPN11HighsDomain18CutpoolPropagationESt6vectorIS3_SaIS3_EEEppEv(ptr noundef nonnull align 8 dereferenceable(8) %32) #10
  br label %274

289:                                              ; preds = %281
  %290 = landingpad { ptr, i32 }
          cleanup
  %291 = extractvalue { ptr, i32 } %290, 0
  store ptr %291, ptr %17, align 8
  %292 = extractvalue { ptr, i32 } %290, 1
  store i32 %292, ptr %18, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %34) #10
  call void @llvm.lifetime.end.p0(i64 8, ptr %33) #10
  call void @llvm.lifetime.end.p0(i64 8, ptr %32) #10
  call void @llvm.lifetime.end.p0(i64 8, ptr %31) #10
  br label %359

293:                                              ; preds = %276
  %294 = load i8, ptr %27, align 1, !tbaa !65, !range !67, !noundef !68
  %295 = trunc i8 %294 to i1
  br i1 %295, label %296, label %306

296:                                              ; preds = %293
  %297 = getelementptr inbounds %class.HighsCutPool, ptr %82, i32 0, i32 16
  %298 = load i32, ptr %297, align 8, !tbaa !70
  %299 = add nsw i32 %298, -1
  store i32 %299, ptr %297, align 8, !tbaa !70
  %300 = load i32, ptr %19, align 4, !tbaa !11
  %301 = invoke noundef i32 @_ZNK12HighsCutPool12getRowLengthEi(ptr noundef nonnull align 8 dereferenceable(680) %82, i32 noundef %300)
          to label %302 unwind label %277

302:                                              ; preds = %296
  %303 = getelementptr inbounds %class.HighsCutPool, ptr %82, i32 0, i32 15
  %304 = load i32, ptr %303, align 4, !tbaa !71
  %305 = sub nsw i32 %304, %301
  store i32 %305, ptr %303, align 4, !tbaa !71
  br label %306

306:                                              ; preds = %302, %293
  %307 = getelementptr inbounds %class.HighsCutPool, ptr %82, i32 0, i32 0
  %308 = load i32, ptr %19, align 4, !tbaa !11
  invoke void @_ZN21HighsDynamicRowMatrix9removeRowEi(ptr noundef nonnull align 8 dereferenceable(336) %307, i32 noundef %308)
          to label %309 unwind label %277

309:                                              ; preds = %306
  %310 = getelementptr inbounds %class.HighsCutPool, ptr %82, i32 0, i32 2
  %311 = load i32, ptr %19, align 4, !tbaa !11
  %312 = sext i32 %311 to i64
  %313 = call noundef nonnull align 2 dereferenceable(2) ptr @_ZNSt6vectorIsSaIsEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %310, i64 noundef %312) #10
  store i16 -1, ptr %313, align 2, !tbaa !62
  %314 = getelementptr inbounds %class.HighsCutPool, ptr %82, i32 0, i32 1
  %315 = load i32, ptr %19, align 4, !tbaa !11
  %316 = sext i32 %315 to i64
  %317 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt6vectorIdSaIdEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %314, i64 noundef %316) #10
  store double 0.000000e+00, ptr %317, align 8, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 16, ptr %35) #10
  %318 = getelementptr inbounds %class.HighsCutPool, ptr %82, i32 0, i32 6
  %319 = invoke { ptr, ptr } @_ZNSt18unordered_multimapImiSt4hashImESt8equal_toImESaISt4pairIKmiEEE11equal_rangeERS5_(ptr noundef nonnull align 8 dereferenceable(56) %318, ptr noundef nonnull align 8 dereferenceable(8) %30)
          to label %320 unwind label %330

320:                                              ; preds = %309
  %321 = getelementptr inbounds { ptr, ptr }, ptr %35, i32 0, i32 0
  %322 = extractvalue { ptr, ptr } %319, 0
  store ptr %322, ptr %321, align 8
  %323 = getelementptr inbounds { ptr, ptr }, ptr %35, i32 0, i32 1
  %324 = extractvalue { ptr, ptr } %319, 1
  store ptr %324, ptr %323, align 8
  call void @llvm.lifetime.start.p0(i64 8, ptr %36) #10
  %325 = getelementptr inbounds %"struct.std::pair", ptr %35, i32 0, i32 0
  call void @llvm.memcpy.p0.p0.i64(ptr align 8 %36, ptr align 8 %325, i64 8, i1 false)
  br label %326

326:                                              ; preds = %354, %320
  %327 = getelementptr inbounds %"struct.std::pair", ptr %35, i32 0, i32 1
  %328 = call noundef zeroext i1 @_ZNSt8__detailneERKNS_19_Node_iterator_baseISt4pairIKmiELb0EEES6_(ptr noundef nonnull align 8 dereferenceable(8) %36, ptr noundef nonnull align 8 dereferenceable(8) %327) #10
  br i1 %328, label %334, label %329

329:                                              ; preds = %326
  store i32 12, ptr %20, align 4
  br label %356

330:                                              ; preds = %309
  %331 = landingpad { ptr, i32 }
          cleanup
  %332 = extractvalue { ptr, i32 } %331, 0
  store ptr %332, ptr %17, align 8
  %333 = extractvalue { ptr, i32 } %331, 1
  store i32 %333, ptr %18, align 4
  br label %358

334:                                              ; preds = %326
  %335 = call noundef ptr @_ZNKSt8__detail14_Node_iteratorISt4pairIKmiELb0ELb0EEptEv(ptr noundef nonnull align 8 dereferenceable(8) %36) #10
  %336 = getelementptr inbounds %"struct.std::pair.41", ptr %335, i32 0, i32 1
  %337 = load i32, ptr %336, align 8, !tbaa !72
  %338 = load i32, ptr %19, align 4, !tbaa !11
  %339 = icmp eq i32 %337, %338
  br i1 %339, label %340, label %353

340:                                              ; preds = %334
  %341 = getelementptr inbounds %class.HighsCutPool, ptr %82, i32 0, i32 6
  call void @llvm.memcpy.p0.p0.i64(ptr align 8 %37, ptr align 8 %36, i64 8, i1 false)
  %342 = getelementptr inbounds %"struct.std::__detail::_Node_iterator", ptr %37, i32 0, i32 0
  %343 = getelementptr inbounds %"struct.std::__detail::_Node_iterator_base", ptr %342, i32 0, i32 0
  %344 = load ptr, ptr %343, align 8
  %345 = invoke ptr @_ZNSt18unordered_multimapImiSt4hashImESt8equal_toImESaISt4pairIKmiEEE5eraseENSt8__detail14_Node_iteratorIS6_Lb0ELb0EEE(ptr noundef nonnull align 8 dereferenceable(56) %341, ptr %344)
          to label %346 unwind label %349

346:                                              ; preds = %340
  %347 = getelementptr inbounds %"struct.std::__detail::_Node_iterator", ptr %38, i32 0, i32 0
  %348 = getelementptr inbounds %"struct.std::__detail::_Node_iterator_base", ptr %347, i32 0, i32 0
  store ptr %345, ptr %348, align 8
  store i32 12, ptr %20, align 4
  br label %356

349:                                              ; preds = %340
  %350 = landingpad { ptr, i32 }
          cleanup
  %351 = extractvalue { ptr, i32 } %350, 0
  store ptr %351, ptr %17, align 8
  %352 = extractvalue { ptr, i32 } %350, 1
  store i32 %352, ptr %18, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %36) #10
  br label %358

353:                                              ; preds = %334
  br label %354

354:                                              ; preds = %353
  %355 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt8__detail14_Node_iteratorISt4pairIKmiELb0ELb0EEppEv(ptr noundef nonnull align 8 dereferenceable(8) %36) #10
  br label %326, !llvm.loop !74

356:                                              ; preds = %346, %329
  call void @llvm.lifetime.end.p0(i64 8, ptr %36) #10
  br label %357

357:                                              ; preds = %356
  call void @llvm.lifetime.end.p0(i64 16, ptr %35) #10
  call void @llvm.lifetime.end.p0(i64 8, ptr %30) #10
  br label %386

358:                                              ; preds = %349, %330
  call void @llvm.lifetime.end.p0(i64 16, ptr %35) #10
  br label %359

359:                                              ; preds = %358, %289, %277
  call void @llvm.lifetime.end.p0(i64 8, ptr %30) #10
  br label %530

360:                                              ; preds = %233
  %361 = load i8, ptr %27, align 1, !tbaa !65, !range !67, !noundef !68
  %362 = trunc i8 %361 to i1
  br i1 %362, label %363, label %375

363:                                              ; preds = %360
  %364 = getelementptr inbounds %class.HighsCutPool, ptr %82, i32 0, i32 8
  %365 = getelementptr inbounds %class.HighsCutPool, ptr %82, i32 0, i32 2
  %366 = load i32, ptr %19, align 4, !tbaa !11
  %367 = sext i32 %366 to i64
  %368 = call noundef nonnull align 2 dereferenceable(2) ptr @_ZNSt6vectorIsSaIsEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %365, i64 noundef %367) #10
  %369 = invoke { ptr, i8 } @_ZNSt3setISt4pairIiiESt4lessIS1_ESaIS1_EE7emplaceIJRsRiEEES0_ISt23_Rb_tree_const_iteratorIS1_EbEDpOT_(ptr noundef nonnull align 8 dereferenceable(48) %364, ptr noundef nonnull align 2 dereferenceable(2) %368, ptr noundef nonnull align 4 dereferenceable(4) %19)
          to label %370 unwind label %221

370:                                              ; preds = %363
  %371 = getelementptr inbounds { ptr, i8 }, ptr %39, i32 0, i32 0
  %372 = extractvalue { ptr, i8 } %369, 0
  store ptr %372, ptr %371, align 8
  %373 = getelementptr inbounds { ptr, i8 }, ptr %39, i32 0, i32 1
  %374 = extractvalue { ptr, i8 } %369, 1
  store i8 %374, ptr %373, align 8
  br label %375

375:                                              ; preds = %370, %360
  %376 = getelementptr inbounds %class.HighsCutPool, ptr %82, i32 0, i32 17
  %377 = getelementptr inbounds %class.HighsCutPool, ptr %82, i32 0, i32 2
  %378 = load i32, ptr %19, align 4, !tbaa !11
  %379 = sext i32 %378 to i64
  %380 = call noundef nonnull align 2 dereferenceable(2) ptr @_ZNSt6vectorIsSaIsEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %377, i64 noundef %379) #10
  %381 = load i16, ptr %380, align 2, !tbaa !62
  %382 = sext i16 %381 to i64
  %383 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNSt6vectorIiSaIiEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %376, i64 noundef %382) #10
  %384 = load i32, ptr %383, align 4, !tbaa !11
  %385 = add nsw i32 %384, 1
  store i32 %385, ptr %383, align 4, !tbaa !11
  br label %386

386:                                              ; preds = %375, %357
  store i32 6, ptr %20, align 4
  br label %518

387:                                              ; preds = %229
  call void @llvm.lifetime.start.p0(i64 16, ptr %40) #10
  invoke void @_ZN12HighsCDoubleC2Ed(ptr noundef nonnull align 8 dereferenceable(16) %40, double noundef 0.000000e+00)
          to label %388 unwind label %395

388:                                              ; preds = %387
  call void @llvm.lifetime.start.p0(i64 4, ptr %41) #10
  store i32 0, ptr %41, align 4, !tbaa !11
  call void @llvm.lifetime.start.p0(i64 4, ptr %42) #10
  %389 = load i32, ptr %21, align 4, !tbaa !11
  store i32 %389, ptr %42, align 4, !tbaa !11
  br label %390

390:                                              ; preds = %477, %388
  %391 = load i32, ptr %42, align 4, !tbaa !11
  %392 = load i32, ptr %22, align 4, !tbaa !11
  %393 = icmp ne i32 %391, %392
  br i1 %393, label %399, label %394

394:                                              ; preds = %390
  store i32 15, ptr %20, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %42) #10
  br label %480

395:                                              ; preds = %387
  %396 = landingpad { ptr, i32 }
          cleanup
  %397 = extractvalue { ptr, i32 } %396, 0
  store ptr %397, ptr %17, align 8
  %398 = extractvalue { ptr, i32 } %396, 1
  store i32 %398, ptr %18, align 4
  br label %529

399:                                              ; preds = %390
  call void @llvm.lifetime.start.p0(i64 4, ptr %43) #10
  %400 = load ptr, ptr %12, align 8, !tbaa !5
  %401 = load i32, ptr %42, align 4, !tbaa !11
  %402 = sext i32 %401 to i64
  %403 = getelementptr inbounds i32, ptr %400, i64 %402
  %404 = load i32, ptr %403, align 4, !tbaa !11
  store i32 %404, ptr %43, align 4, !tbaa !11
  call void @llvm.lifetime.start.p0(i64 8, ptr %44) #10
  %405 = load ptr, ptr %7, align 8, !tbaa !5
  %406 = load i32, ptr %43, align 4, !tbaa !11
  %407 = sext i32 %406 to i64
  %408 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNKSt6vectorIdSaIdEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %405, i64 noundef %407) #10
  %409 = load double, ptr %408, align 8, !tbaa !9
  store double %409, ptr %44, align 8, !tbaa !9
  %410 = load ptr, ptr %13, align 8, !tbaa !5
  %411 = load i32, ptr %42, align 4, !tbaa !11
  %412 = sext i32 %411 to i64
  %413 = getelementptr inbounds double, ptr %410, i64 %412
  %414 = load double, ptr %413, align 8, !tbaa !9
  %415 = fcmp ogt double %414, 0.000000e+00
  br i1 %415, label %416, label %448

416:                                              ; preds = %399
  %417 = load double, ptr %44, align 8, !tbaa !9
  %418 = load ptr, ptr %8, align 8, !tbaa !5
  %419 = getelementptr inbounds %class.HighsDomain, ptr %418, i32 0, i32 25
  %420 = load i32, ptr %43, align 4, !tbaa !11
  %421 = sext i32 %420 to i64
  %422 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt6vectorIdSaIdEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %419, i64 noundef %421) #10
  %423 = load double, ptr %422, align 8, !tbaa !9
  %424 = load double, ptr %10, align 8, !tbaa !9
  %425 = fadd double %423, %424
  %426 = fcmp ogt double %417, %425
  br i1 %426, label %427, label %447

427:                                              ; preds = %416
  %428 = load ptr, ptr %13, align 8, !tbaa !5
  %429 = load i32, ptr %42, align 4, !tbaa !11
  %430 = sext i32 %429 to i64
  %431 = getelementptr inbounds double, ptr %428, i64 %430
  %432 = load double, ptr %431, align 8, !tbaa !9
  %433 = load ptr, ptr %13, align 8, !tbaa !5
  %434 = load i32, ptr %42, align 4, !tbaa !11
  %435 = sext i32 %434 to i64
  %436 = getelementptr inbounds double, ptr %433, i64 %435
  %437 = load double, ptr %436, align 8, !tbaa !9
  %438 = fmul double %432, %437
  %439 = invoke noundef nonnull align 8 dereferenceable(16) ptr @_ZN12HighsCDoublepLEd(ptr noundef nonnull align 8 dereferenceable(16) %40, double noundef %438)
          to label %440 unwind label %443

440:                                              ; preds = %427
  %441 = load i32, ptr %41, align 4, !tbaa !11
  %442 = add nsw i32 %441, 1
  store i32 %442, ptr %41, align 4, !tbaa !11
  br label %447

443:                                              ; preds = %459, %427
  %444 = landingpad { ptr, i32 }
          cleanup
  %445 = extractvalue { ptr, i32 } %444, 0
  store ptr %445, ptr %17, align 8
  %446 = extractvalue { ptr, i32 } %444, 1
  store i32 %446, ptr %18, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %44) #10
  call void @llvm.lifetime.end.p0(i64 4, ptr %43) #10
  call void @llvm.lifetime.end.p0(i64 4, ptr %42) #10
  br label %528

447:                                              ; preds = %440, %416
  br label %476

448:                                              ; preds = %399
  %449 = load double, ptr %44, align 8, !tbaa !9
  %450 = load ptr, ptr %8, align 8, !tbaa !5
  %451 = getelementptr inbounds %class.HighsDomain, ptr %450, i32 0, i32 26
  %452 = load i32, ptr %43, align 4, !tbaa !11
  %453 = sext i32 %452 to i64
  %454 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt6vectorIdSaIdEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %451, i64 noundef %453) #10
  %455 = load double, ptr %454, align 8, !tbaa !9
  %456 = load double, ptr %10, align 8, !tbaa !9
  %457 = fsub double %455, %456
  %458 = fcmp olt double %449, %457
  br i1 %458, label %459, label %475

459:                                              ; preds = %448
  %460 = load ptr, ptr %13, align 8, !tbaa !5
  %461 = load i32, ptr %42, align 4, !tbaa !11
  %462 = sext i32 %461 to i64
  %463 = getelementptr inbounds double, ptr %460, i64 %462
  %464 = load double, ptr %463, align 8, !tbaa !9
  %465 = load ptr, ptr %13, align 8, !tbaa !5
  %466 = load i32, ptr %42, align 4, !tbaa !11
  %467 = sext i32 %466 to i64
  %468 = getelementptr inbounds double, ptr %465, i64 %467
  %469 = load double, ptr %468, align 8, !tbaa !9
  %470 = fmul double %464, %469
  %471 = invoke noundef nonnull align 8 dereferenceable(16) ptr @_ZN12HighsCDoublepLEd(ptr noundef nonnull align 8 dereferenceable(16) %40, double noundef %470)
          to label %472 unwind label %443

472:                                              ; preds = %459
  %473 = load i32, ptr %41, align 4, !tbaa !11
  %474 = add nsw i32 %473, 1
  store i32 %474, ptr %41, align 4, !tbaa !11
  br label %475

475:                                              ; preds = %472, %448
  br label %476

476:                                              ; preds = %475, %447
  call void @llvm.lifetime.end.p0(i64 8, ptr %44) #10
  call void @llvm.lifetime.end.p0(i64 4, ptr %43) #10
  br label %477

477:                                              ; preds = %476
  %478 = load i32, ptr %42, align 4, !tbaa !11
  %479 = add nsw i32 %478, 1
  store i32 %479, ptr %42, align 4, !tbaa !11
  br label %390, !llvm.loop !75

480:                                              ; preds = %394
  %481 = getelementptr inbounds %class.HighsCutPool, ptr %82, i32 0, i32 2
  %482 = load i32, ptr %19, align 4, !tbaa !11
  %483 = sext i32 %482 to i64
  %484 = call noundef nonnull align 2 dereferenceable(2) ptr @_ZNSt6vectorIsSaIsEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %481, i64 noundef %483) #10
  store i16 0, ptr %484, align 2, !tbaa !62
  %485 = getelementptr inbounds %class.HighsCutPool, ptr %82, i32 0, i32 17
  %486 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNSt6vectorIiSaIiEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %485, i64 noundef 0) #10
  %487 = load i32, ptr %486, align 4, !tbaa !11
  %488 = add nsw i32 %487, 1
  store i32 %488, ptr %486, align 4, !tbaa !11
  %489 = load i8, ptr %27, align 1, !tbaa !65, !range !67, !noundef !68
  %490 = trunc i8 %489 to i1
  br i1 %490, label %491, label %507

491:                                              ; preds = %480
  %492 = getelementptr inbounds %class.HighsCutPool, ptr %82, i32 0, i32 8
  %493 = getelementptr inbounds %class.HighsCutPool, ptr %82, i32 0, i32 2
  %494 = load i32, ptr %19, align 4, !tbaa !11
  %495 = sext i32 %494 to i64
  %496 = call noundef nonnull align 2 dereferenceable(2) ptr @_ZNSt6vectorIsSaIsEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %493, i64 noundef %495) #10
  %497 = invoke { ptr, i8 } @_ZNSt3setISt4pairIiiESt4lessIS1_ESaIS1_EE7emplaceIJRsRiEEES0_ISt23_Rb_tree_const_iteratorIS1_EbEDpOT_(ptr noundef nonnull align 8 dereferenceable(48) %492, ptr noundef nonnull align 2 dereferenceable(2) %496, ptr noundef nonnull align 4 dereferenceable(4) %19)
          to label %498 unwind label %503

498:                                              ; preds = %491
  %499 = getelementptr inbounds { ptr, i8 }, ptr %45, i32 0, i32 0
  %500 = extractvalue { ptr, i8 } %497, 0
  store ptr %500, ptr %499, align 8
  %501 = getelementptr inbounds { ptr, i8 }, ptr %45, i32 0, i32 1
  %502 = extractvalue { ptr, i8 } %497, 1
  store i8 %502, ptr %501, align 8
  br label %507

503:                                              ; preds = %491
  %504 = landingpad { ptr, i32 }
          cleanup
  %505 = extractvalue { ptr, i32 } %504, 0
  store ptr %505, ptr %17, align 8
  %506 = extractvalue { ptr, i32 } %504, 1
  store i32 %506, ptr %18, align 4
  br label %528

507:                                              ; preds = %498, %480
  call void @llvm.lifetime.start.p0(i64 8, ptr %46) #10
  %508 = load double, ptr %23, align 8, !tbaa !9
  %509 = load i32, ptr %41, align 4, !tbaa !11
  %510 = sitofp i32 %509 to double
  %511 = invoke noundef double @_ZNK12HighsCDoublecvdEv(ptr noundef nonnull align 8 dereferenceable(16) %40)
          to label %512 unwind label %524

512:                                              ; preds = %507
  %513 = call double @sqrt(double noundef %511) #10
  %514 = fmul double %510, %513
  %515 = fdiv double %508, %514
  store double %515, ptr %46, align 8, !tbaa !9
  %516 = invoke noundef nonnull align 8 dereferenceable(12) ptr @_ZNSt6vectorISt4pairIdiESaIS1_EE12emplace_backIJRdRiEEERS1_DpOT_(ptr noundef nonnull align 8 dereferenceable(24) %14, ptr noundef nonnull align 8 dereferenceable(8) %46, ptr noundef nonnull align 4 dereferenceable(4) %19)
          to label %517 unwind label %524

517:                                              ; preds = %512
  call void @llvm.lifetime.end.p0(i64 8, ptr %46) #10
  call void @llvm.lifetime.end.p0(i64 4, ptr %41) #10
  call void @llvm.lifetime.end.p0(i64 16, ptr %40) #10
  store i32 0, ptr %20, align 4
  br label %518

518:                                              ; preds = %517, %386
  call void @llvm.lifetime.end.p0(i64 1, ptr %27) #10
  call void @llvm.lifetime.end.p0(i64 8, ptr %23) #10
  call void @llvm.lifetime.end.p0(i64 4, ptr %22) #10
  call void @llvm.lifetime.end.p0(i64 4, ptr %21) #10
  %519 = load i32, ptr %20, align 4
  switch i32 %519, label %952 [
    i32 0, label %520
    i32 6, label %521
  ]

520:                                              ; preds = %518
  br label %521

521:                                              ; preds = %520, %518, %140
  %522 = load i32, ptr %19, align 4, !tbaa !11
  %523 = add nsw i32 %522, 1
  store i32 %523, ptr %19, align 4, !tbaa !11
  br label %127, !llvm.loop !76

524:                                              ; preds = %512, %507
  %525 = landingpad { ptr, i32 }
          cleanup
  %526 = extractvalue { ptr, i32 } %525, 0
  store ptr %526, ptr %17, align 8
  %527 = extractvalue { ptr, i32 } %525, 1
  store i32 %527, ptr %18, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %46) #10
  br label %528

528:                                              ; preds = %524, %503, %443
  call void @llvm.lifetime.end.p0(i64 4, ptr %41) #10
  br label %529

529:                                              ; preds = %528, %395
  call void @llvm.lifetime.end.p0(i64 16, ptr %40) #10
  br label %530

530:                                              ; preds = %529, %359, %225, %221
  call void @llvm.lifetime.end.p0(i64 1, ptr %27) #10
  call void @llvm.lifetime.end.p0(i64 8, ptr %23) #10
  br label %531

531:                                              ; preds = %530, %166
  call void @llvm.lifetime.end.p0(i64 4, ptr %22) #10
  br label %532

532:                                              ; preds = %531, %162
  call void @llvm.lifetime.end.p0(i64 4, ptr %21) #10
  call void @llvm.lifetime.end.p0(i64 4, ptr %19) #10
  br label %946

533:                                              ; preds = %131
  %534 = getelementptr inbounds %class.HighsCutPool, ptr %82, i32 0, i32 8
  %535 = call noundef i64 @_ZNKSt3setISt4pairIiiESt4lessIS1_ESaIS1_EE4sizeEv(ptr noundef nonnull align 8 dereferenceable(48) %534) #10
  %536 = trunc i64 %535 to i32
  %537 = getelementptr inbounds %class.HighsCutPool, ptr %82, i32 0, i32 16
  %538 = load i32, ptr %537, align 8, !tbaa !70
  %539 = icmp eq i32 %536, %538
  br i1 %539, label %540, label %541

540:                                              ; preds = %533
  br label %543

541:                                              ; preds = %533
  call void @__assert_fail(ptr noundef @.str.51, ptr noundef @.str.52, i32 noundef 272, ptr noundef @__PRETTY_FUNCTION__._ZN12HighsCutPool8separateERKSt6vectorIdSaIdEER11HighsDomainR11HighsCutSetd) #11
  unreachable

542:                                              ; No predecessors!
  br label %543

543:                                              ; preds = %542, %540
  %544 = call noundef zeroext i1 @_ZNKSt6vectorISt4pairIdiESaIS1_EE5emptyEv(ptr noundef nonnull align 8 dereferenceable(24) %14) #10
  br i1 %544, label %545, label %546

545:                                              ; preds = %543
  store i32 1, ptr %20, align 4
  br label %935

546:                                              ; preds = %543
  %547 = call ptr @_ZNSt6vectorISt4pairIdiESaIS1_EE5beginEv(ptr noundef nonnull align 8 dereferenceable(24) %14) #10
  %548 = getelementptr inbounds %"class.__gnu_cxx::__normal_iterator.102", ptr %47, i32 0, i32 0
  store ptr %547, ptr %548, align 8
  %549 = call ptr @_ZNSt6vectorISt4pairIdiESaIS1_EE3endEv(ptr noundef nonnull align 8 dereferenceable(24) %14) #10
  %550 = getelementptr inbounds %"class.__gnu_cxx::__normal_iterator.102", ptr %48, i32 0, i32 0
  store ptr %549, ptr %550, align 8
  %551 = getelementptr inbounds %class.anon, ptr %49, i32 0, i32 0
  store ptr %14, ptr %551, align 8, !tbaa !5
  %552 = getelementptr inbounds %"class.__gnu_cxx::__normal_iterator.102", ptr %47, i32 0, i32 0
  %553 = load ptr, ptr %552, align 8
  %554 = getelementptr inbounds %"class.__gnu_cxx::__normal_iterator.102", ptr %48, i32 0, i32 0
  %555 = load ptr, ptr %554, align 8
  %556 = getelementptr inbounds %class.anon, ptr %49, i32 0, i32 0
  %557 = load ptr, ptr %556, align 8
  invoke void @"_Z7pdqsortIN9__gnu_cxx17__normal_iteratorIPSt4pairIdiESt6vectorIS3_SaIS3_EEEEZN12HighsCutPool8separateERKS5_IdSaIdEER11HighsDomainR11HighsCutSetdE3$_0EvT_SJ_T0_"(ptr %553, ptr %555, ptr %557)
          to label %558 unwind label %122

558:                                              ; preds = %546
  %559 = call noundef nonnull align 8 dereferenceable(12) ptr @_ZNSt6vectorISt4pairIdiESaIS1_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %14, i64 noundef 0) #10
  %560 = getelementptr inbounds %"struct.std::pair.99", ptr %559, i32 0, i32 0
  %561 = getelementptr inbounds %class.HighsCutPool, ptr %82, i32 0, i32 9
  %562 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZSt3maxIdERKT_S2_S2_(ptr noundef nonnull align 8 dereferenceable(8) %560, ptr noundef nonnull align 8 dereferenceable(8) %561)
          to label %563 unwind label %122

563:                                              ; preds = %558
  %564 = load double, ptr %562, align 8, !tbaa !9
  %565 = getelementptr inbounds %class.HighsCutPool, ptr %82, i32 0, i32 9
  store double %564, ptr %565, align 8, !tbaa !77
  call void @llvm.lifetime.start.p0(i64 8, ptr %50) #10
  %566 = getelementptr inbounds %class.HighsCutPool, ptr %82, i32 0, i32 10
  %567 = load double, ptr %566, align 8, !tbaa !78
  %568 = getelementptr inbounds %class.HighsCutPool, ptr %82, i32 0, i32 9
  %569 = load double, ptr %568, align 8, !tbaa !77
  %570 = fmul double %567, %569
  store double %570, ptr %50, align 8, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 4, ptr %51) #10
  call void @llvm.lifetime.start.p0(i64 8, ptr %52) #10
  %571 = call ptr @_ZNSt6vectorISt4pairIdiESaIS1_EE5beginEv(ptr noundef nonnull align 8 dereferenceable(24) %14) #10
  %572 = getelementptr inbounds %"class.__gnu_cxx::__normal_iterator.102", ptr %53, i32 0, i32 0
  store ptr %571, ptr %572, align 8
  %573 = call ptr @_ZNSt6vectorISt4pairIdiESaIS1_EE3endEv(ptr noundef nonnull align 8 dereferenceable(24) %14) #10
  %574 = getelementptr inbounds %"class.__gnu_cxx::__normal_iterator.102", ptr %54, i32 0, i32 0
  store ptr %573, ptr %574, align 8
  %575 = getelementptr inbounds %"class.__gnu_cxx::__normal_iterator.102", ptr %53, i32 0, i32 0
  %576 = load ptr, ptr %575, align 8
  %577 = getelementptr inbounds %"class.__gnu_cxx::__normal_iterator.102", ptr %54, i32 0, i32 0
  %578 = load ptr, ptr %577, align 8
  %579 = invoke ptr @"_ZSt11upper_boundIN9__gnu_cxx17__normal_iteratorIPSt4pairIdiESt6vectorIS3_SaIS3_EEEEdZN12HighsCutPool8separateERKS5_IdSaIdEER11HighsDomainR11HighsCutSetdE3$_1ET_SJ_SJ_RKT0_T1_"(ptr %576, ptr %578, ptr noundef nonnull align 8 dereferenceable(8) %50)
          to label %580 unwind label %612

580:                                              ; preds = %563
  %581 = getelementptr inbounds %"class.__gnu_cxx::__normal_iterator.102", ptr %52, i32 0, i32 0
  store ptr %579, ptr %581, align 8
  call void @llvm.lifetime.start.p0(i64 8, ptr %56) #10
  %582 = call ptr @_ZNSt6vectorISt4pairIdiESaIS1_EE5beginEv(ptr noundef nonnull align 8 dereferenceable(24) %14) #10
  %583 = getelementptr inbounds %"class.__gnu_cxx::__normal_iterator.102", ptr %56, i32 0, i32 0
  store ptr %582, ptr %583, align 8
  %584 = call noundef i64 @_ZN9__gnu_cxxmiIPSt4pairIdiESt6vectorIS2_SaIS2_EEEENS_17__normal_iteratorIT_T0_E15difference_typeERKSA_SD_(ptr noundef nonnull align 8 dereferenceable(8) %52, ptr noundef nonnull align 8 dereferenceable(8) %56) #10
  %585 = trunc i64 %584 to i32
  call void @llvm.lifetime.end.p0(i64 8, ptr %56) #10
  call void @llvm.lifetime.end.p0(i64 8, ptr %52) #10
  store i32 %585, ptr %51, align 4, !tbaa !11
  call void @llvm.lifetime.start.p0(i64 4, ptr %57) #10
  %586 = call noundef i64 @_ZNKSt6vectorISt4pairIdiESaIS1_EE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24) %14) #10
  %587 = udiv i64 %586, 20
  %588 = trunc i64 %587 to i32
  store i32 %588, ptr %57, align 4, !tbaa !11
  call void @llvm.lifetime.start.p0(i64 4, ptr %58) #10
  %589 = call noundef i64 @_ZNKSt6vectorISt4pairIdiESaIS1_EE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24) %14) #10
  %590 = sub i64 %589, 1
  %591 = trunc i64 %590 to i32
  store i32 %591, ptr %58, align 4, !tbaa !11
  %592 = load i32, ptr %51, align 4, !tbaa !11
  %593 = load i32, ptr %57, align 4, !tbaa !11
  %594 = icmp sle i32 %592, %593
  br i1 %594, label %595, label %620

595:                                              ; preds = %580
  call void @llvm.lifetime.start.p0(i64 8, ptr %59) #10
  %596 = call noundef i64 @_ZNKSt6vectorISt4pairIdiESaIS1_EE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24) %14) #10
  %597 = udiv i64 %596, 2
  store i64 %597, ptr %59, align 8, !tbaa !69
  call void @llvm.lifetime.start.p0(i64 8, ptr %60) #10
  store i64 1, ptr %60, align 8, !tbaa !69
  %598 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZSt3maxImERKT_S2_S2_(ptr noundef nonnull align 8 dereferenceable(8) %59, ptr noundef nonnull align 8 dereferenceable(8) %60)
          to label %599 unwind label %616

599:                                              ; preds = %595
  %600 = load i64, ptr %598, align 8, !tbaa !69
  %601 = trunc i64 %600 to i32
  store i32 %601, ptr %51, align 4, !tbaa !11
  call void @llvm.lifetime.end.p0(i64 8, ptr %60) #10
  call void @llvm.lifetime.end.p0(i64 8, ptr %59) #10
  %602 = load i32, ptr %51, align 4, !tbaa !11
  %603 = sub nsw i32 %602, 1
  %604 = sext i32 %603 to i64
  %605 = call noundef nonnull align 8 dereferenceable(12) ptr @_ZNSt6vectorISt4pairIdiESaIS1_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %14, i64 noundef %604) #10
  %606 = getelementptr inbounds %"struct.std::pair.99", ptr %605, i32 0, i32 0
  %607 = load double, ptr %606, align 8, !tbaa !79
  %608 = getelementptr inbounds %class.HighsCutPool, ptr %82, i32 0, i32 9
  %609 = load double, ptr %608, align 8, !tbaa !77
  %610 = fdiv double %607, %609
  %611 = getelementptr inbounds %class.HighsCutPool, ptr %82, i32 0, i32 10
  store double %610, ptr %611, align 8, !tbaa !78
  br label %635

612:                                              ; preds = %563
  %613 = landingpad { ptr, i32 }
          cleanup
  %614 = extractvalue { ptr, i32 } %613, 0
  store ptr %614, ptr %17, align 8
  %615 = extractvalue { ptr, i32 } %613, 1
  store i32 %615, ptr %18, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %52) #10
  br label %945

616:                                              ; preds = %595
  %617 = landingpad { ptr, i32 }
          cleanup
  %618 = extractvalue { ptr, i32 } %617, 0
  store ptr %618, ptr %17, align 8
  %619 = extractvalue { ptr, i32 } %617, 1
  store i32 %619, ptr %18, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %60) #10
  call void @llvm.lifetime.end.p0(i64 8, ptr %59) #10
  br label %944

620:                                              ; preds = %580
  %621 = load i32, ptr %51, align 4, !tbaa !11
  %622 = load i32, ptr %58, align 4, !tbaa !11
  %623 = icmp sgt i32 %621, %622
  br i1 %623, label %624, label %634

624:                                              ; preds = %620
  %625 = load i32, ptr %58, align 4, !tbaa !11
  %626 = sext i32 %625 to i64
  %627 = call noundef nonnull align 8 dereferenceable(12) ptr @_ZNSt6vectorISt4pairIdiESaIS1_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %14, i64 noundef %626) #10
  %628 = getelementptr inbounds %"struct.std::pair.99", ptr %627, i32 0, i32 0
  %629 = load double, ptr %628, align 8, !tbaa !79
  %630 = getelementptr inbounds %class.HighsCutPool, ptr %82, i32 0, i32 9
  %631 = load double, ptr %630, align 8, !tbaa !77
  %632 = fdiv double %629, %631
  %633 = getelementptr inbounds %class.HighsCutPool, ptr %82, i32 0, i32 10
  store double %632, ptr %633, align 8, !tbaa !78
  br label %634

634:                                              ; preds = %624, %620
  br label %635

635:                                              ; preds = %634, %599
  %636 = load i32, ptr %51, align 4, !tbaa !11
  %637 = sext i32 %636 to i64
  invoke void @_ZNSt6vectorISt4pairIdiESaIS1_EE6resizeEm(ptr noundef nonnull align 8 dereferenceable(24) %14, i64 noundef %637)
          to label %638 unwind label %644

638:                                              ; preds = %635
  call void @llvm.lifetime.start.p0(i64 4, ptr %61) #10
  store i32 0, ptr %61, align 4, !tbaa !11
  %639 = load ptr, ptr %9, align 8, !tbaa !5
  %640 = invoke noundef zeroext i1 @_ZNK11HighsCutSet5emptyEv(ptr noundef nonnull align 8 dereferenceable(144) %639)
          to label %641 unwind label %648

641:                                              ; preds = %638
  br i1 %640, label %642, label %643

642:                                              ; preds = %641
  br label %653

643:                                              ; preds = %641
  call void @__assert_fail(ptr noundef @.str.53, ptr noundef @.str.52, i32 noundef 316, ptr noundef @__PRETTY_FUNCTION__._ZN12HighsCutPool8separateERKSt6vectorIdSaIdEER11HighsDomainR11HighsCutSetd) #11
  unreachable

644:                                              ; preds = %635
  %645 = landingpad { ptr, i32 }
          cleanup
  %646 = extractvalue { ptr, i32 } %645, 0
  store ptr %646, ptr %17, align 8
  %647 = extractvalue { ptr, i32 } %645, 1
  store i32 %647, ptr %18, align 4
  br label %944

648:                                              ; preds = %797, %638
  %649 = landingpad { ptr, i32 }
          cleanup
  %650 = extractvalue { ptr, i32 } %649, 0
  store ptr %650, ptr %17, align 8
  %651 = extractvalue { ptr, i32 } %649, 1
  store i32 %651, ptr %18, align 4
  br label %943

652:                                              ; No predecessors!
  br label %653

653:                                              ; preds = %652, %642
  call void @llvm.lifetime.start.p0(i64 8, ptr %62) #10
  store ptr %14, ptr %62, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %63) #10
  %654 = load ptr, ptr %62, align 8, !tbaa !5
  %655 = call ptr @_ZNSt6vectorISt4pairIdiESaIS1_EE5beginEv(ptr noundef nonnull align 8 dereferenceable(24) %654) #10
  %656 = getelementptr inbounds %"class.__gnu_cxx::__normal_iterator.102", ptr %63, i32 0, i32 0
  store ptr %655, ptr %656, align 8
  call void @llvm.lifetime.start.p0(i64 8, ptr %64) #10
  %657 = load ptr, ptr %62, align 8, !tbaa !5
  %658 = call ptr @_ZNSt6vectorISt4pairIdiESaIS1_EE3endEv(ptr noundef nonnull align 8 dereferenceable(24) %657) #10
  %659 = getelementptr inbounds %"class.__gnu_cxx::__normal_iterator.102", ptr %64, i32 0, i32 0
  store ptr %658, ptr %659, align 8
  br label %660

660:                                              ; preds = %794, %653
  %661 = call noundef zeroext i1 @_ZN9__gnu_cxxneIPSt4pairIdiESt6vectorIS2_SaIS2_EEEEbRKNS_17__normal_iteratorIT_T0_EESC_(ptr noundef nonnull align 8 dereferenceable(8) %63, ptr noundef nonnull align 8 dereferenceable(8) %64) #10
  br i1 %661, label %663, label %662

662:                                              ; preds = %660
  store i32 18, ptr %20, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %64) #10
  call void @llvm.lifetime.end.p0(i64 8, ptr %63) #10
  call void @llvm.lifetime.end.p0(i64 8, ptr %62) #10
  br label %797

663:                                              ; preds = %660
  call void @llvm.lifetime.start.p0(i64 8, ptr %65) #10
  %664 = call noundef nonnull align 8 dereferenceable(12) ptr @_ZNK9__gnu_cxx17__normal_iteratorIPSt4pairIdiESt6vectorIS2_SaIS2_EEEdeEv(ptr noundef nonnull align 8 dereferenceable(8) %63) #10
  store ptr %664, ptr %65, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 1, ptr %66) #10
  store i8 0, ptr %66, align 1, !tbaa !65
  call void @llvm.lifetime.start.p0(i64 8, ptr %67) #10
  store double 1.000000e-01, ptr %67, align 8, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 8, ptr %68) #10
  %665 = load ptr, ptr %9, align 8, !tbaa !5
  %666 = getelementptr inbounds %struct.HighsCutSet, ptr %665, i32 0, i32 0
  store ptr %666, ptr %68, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %69) #10
  %667 = load ptr, ptr %68, align 8, !tbaa !5
  %668 = call ptr @_ZNSt6vectorIiSaIiEE5beginEv(ptr noundef nonnull align 8 dereferenceable(24) %667) #10
  %669 = getelementptr inbounds %"class.__gnu_cxx::__normal_iterator.104", ptr %69, i32 0, i32 0
  store ptr %668, ptr %669, align 8
  call void @llvm.lifetime.start.p0(i64 8, ptr %70) #10
  %670 = load ptr, ptr %68, align 8, !tbaa !5
  %671 = call ptr @_ZNSt6vectorIiSaIiEE3endEv(ptr noundef nonnull align 8 dereferenceable(24) %670) #10
  %672 = getelementptr inbounds %"class.__gnu_cxx::__normal_iterator.104", ptr %70, i32 0, i32 0
  store ptr %671, ptr %672, align 8
  br label %673

673:                                              ; preds = %696, %663
  %674 = call noundef zeroext i1 @_ZN9__gnu_cxxneIPiSt6vectorIiSaIiEEEEbRKNS_17__normal_iteratorIT_T0_EESA_(ptr noundef nonnull align 8 dereferenceable(8) %69, ptr noundef nonnull align 8 dereferenceable(8) %70) #10
  br i1 %674, label %676, label %675

675:                                              ; preds = %673
  store i32 20, ptr %20, align 4
  br label %698

676:                                              ; preds = %673
  call void @llvm.lifetime.start.p0(i64 4, ptr %71) #10
  %677 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNK9__gnu_cxx17__normal_iteratorIPiSt6vectorIiSaIiEEEdeEv(ptr noundef nonnull align 8 dereferenceable(8) %69) #10
  %678 = load i32, ptr %677, align 4, !tbaa !11
  store i32 %678, ptr %71, align 4, !tbaa !11
  %679 = load i32, ptr %71, align 4, !tbaa !11
  %680 = load ptr, ptr %65, align 8, !tbaa !5
  %681 = getelementptr inbounds %"struct.std::pair.99", ptr %680, i32 0, i32 1
  %682 = load i32, ptr %681, align 8, !tbaa !81
  %683 = invoke noundef double @_ZNK12HighsCutPool14getParallelismEii(ptr noundef nonnull align 8 dereferenceable(680) %82, i32 noundef %679, i32 noundef %682)
          to label %684 unwind label %688

684:                                              ; preds = %676
  %685 = load double, ptr %67, align 8, !tbaa !9
  %686 = fcmp ogt double %683, %685
  br i1 %686, label %687, label %692

687:                                              ; preds = %684
  store i8 1, ptr %66, align 1, !tbaa !65
  store i32 20, ptr %20, align 4
  br label %693

688:                                              ; preds = %676
  %689 = landingpad { ptr, i32 }
          cleanup
  %690 = extractvalue { ptr, i32 } %689, 0
  store ptr %690, ptr %17, align 8
  %691 = extractvalue { ptr, i32 } %689, 1
  store i32 %691, ptr %18, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %71) #10
  call void @llvm.lifetime.end.p0(i64 8, ptr %70) #10
  call void @llvm.lifetime.end.p0(i64 8, ptr %69) #10
  call void @llvm.lifetime.end.p0(i64 8, ptr %68) #10
  br label %796

692:                                              ; preds = %684
  store i32 0, ptr %20, align 4
  br label %693

693:                                              ; preds = %692, %687
  call void @llvm.lifetime.end.p0(i64 4, ptr %71) #10
  %694 = load i32, ptr %20, align 4
  switch i32 %694, label %698 [
    i32 0, label %695
  ]

695:                                              ; preds = %693
  br label %696

696:                                              ; preds = %695
  %697 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZN9__gnu_cxx17__normal_iteratorIPiSt6vectorIiSaIiEEEppEv(ptr noundef nonnull align 8 dereferenceable(8) %69) #10
  br label %673

698:                                              ; preds = %693, %675
  call void @llvm.lifetime.end.p0(i64 8, ptr %70) #10
  call void @llvm.lifetime.end.p0(i64 8, ptr %69) #10
  call void @llvm.lifetime.end.p0(i64 8, ptr %68) #10
  br label %699

699:                                              ; preds = %698
  %700 = load i8, ptr %66, align 1, !tbaa !65, !range !67, !noundef !68
  %701 = trunc i8 %700 to i1
  br i1 %701, label %702, label %703

702:                                              ; preds = %699
  store i32 19, ptr %20, align 4
  br label %788

703:                                              ; preds = %699
  %704 = getelementptr inbounds %class.HighsCutPool, ptr %82, i32 0, i32 17
  %705 = getelementptr inbounds %class.HighsCutPool, ptr %82, i32 0, i32 2
  %706 = load ptr, ptr %65, align 8, !tbaa !5
  %707 = getelementptr inbounds %"struct.std::pair.99", ptr %706, i32 0, i32 1
  %708 = load i32, ptr %707, align 8, !tbaa !81
  %709 = sext i32 %708 to i64
  %710 = call noundef nonnull align 2 dereferenceable(2) ptr @_ZNSt6vectorIsSaIsEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %705, i64 noundef %709) #10
  %711 = load i16, ptr %710, align 2, !tbaa !62
  %712 = sext i16 %711 to i64
  %713 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNSt6vectorIiSaIiEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %704, i64 noundef %712) #10
  %714 = load i32, ptr %713, align 4, !tbaa !11
  %715 = add nsw i32 %714, -1
  store i32 %715, ptr %713, align 4, !tbaa !11
  %716 = getelementptr inbounds %class.HighsCutPool, ptr %82, i32 0, i32 14
  %717 = load i32, ptr %716, align 8, !tbaa !58
  %718 = add nsw i32 %717, 1
  store i32 %718, ptr %716, align 8, !tbaa !58
  %719 = getelementptr inbounds %class.HighsCutPool, ptr %82, i32 0, i32 0
  %720 = load ptr, ptr %65, align 8, !tbaa !5
  %721 = getelementptr inbounds %"struct.std::pair.99", ptr %720, i32 0, i32 1
  %722 = load i32, ptr %721, align 8, !tbaa !81
  %723 = invoke noundef zeroext i1 @_ZNK21HighsDynamicRowMatrix13columnsLinkedEi(ptr noundef nonnull align 8 dereferenceable(336) %719, i32 noundef %722)
          to label %724 unwind label %749

724:                                              ; preds = %703
  br i1 %723, label %725, label %761

725:                                              ; preds = %724
  %726 = getelementptr inbounds %class.HighsCutPool, ptr %82, i32 0, i32 8
  call void @llvm.lifetime.start.p0(i64 8, ptr %72) #10
  call void @llvm.lifetime.start.p0(i64 8, ptr %73) #10
  %727 = getelementptr inbounds %class.HighsCutPool, ptr %82, i32 0, i32 2
  %728 = load ptr, ptr %65, align 8, !tbaa !5
  %729 = getelementptr inbounds %"struct.std::pair.99", ptr %728, i32 0, i32 1
  %730 = load i32, ptr %729, align 8, !tbaa !81
  %731 = sext i32 %730 to i64
  %732 = call noundef nonnull align 2 dereferenceable(2) ptr @_ZNSt6vectorIsSaIsEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %727, i64 noundef %731) #10
  %733 = load ptr, ptr %65, align 8, !tbaa !5
  %734 = getelementptr inbounds %"struct.std::pair.99", ptr %733, i32 0, i32 1
  %735 = invoke i64 @_ZSt9make_pairIRsRKiESt4pairINSt25__strip_reference_wrapperINSt5decayIT_E4typeEE6__typeENS4_INS5_IT0_E4typeEE6__typeEEOS6_OSB_(ptr noundef nonnull align 2 dereferenceable(2) %732, ptr noundef nonnull align 4 dereferenceable(4) %734)
          to label %736 unwind label %753

736:                                              ; preds = %725
  store i64 %735, ptr %73, align 4
  invoke void @_ZNSt4pairIiiEC2IsiTnNSt9enable_ifIXaaclsr6_PCCFPIT_T0_EE22_MoveConstructiblePairIS3_S4_EEclsr6_PCCFPIS3_S4_EE30_ImplicitlyMoveConvertiblePairIS3_S4_EEEbE4typeELb1EEEOS_IS3_S4_E(ptr noundef nonnull align 4 dereferenceable(8) %72, ptr noundef nonnull align 4 dereferenceable(8) %73)
          to label %737 unwind label %753

737:                                              ; preds = %736
  %738 = invoke noundef i64 @_ZNSt3setISt4pairIiiESt4lessIS1_ESaIS1_EE5eraseERKS1_(ptr noundef nonnull align 8 dereferenceable(48) %726, ptr noundef nonnull align 4 dereferenceable(8) %72)
          to label %739 unwind label %753

739:                                              ; preds = %737
  call void @llvm.lifetime.end.p0(i64 8, ptr %73) #10
  call void @llvm.lifetime.end.p0(i64 8, ptr %72) #10
  %740 = getelementptr inbounds %class.HighsCutPool, ptr %82, i32 0, i32 8
  call void @llvm.lifetime.start.p0(i64 4, ptr %74) #10
  store i32 -1, ptr %74, align 4, !tbaa !11
  %741 = load ptr, ptr %65, align 8, !tbaa !5
  %742 = getelementptr inbounds %"struct.std::pair.99", ptr %741, i32 0, i32 1
  %743 = invoke { ptr, i8 } @_ZNSt3setISt4pairIiiESt4lessIS1_ESaIS1_EE7emplaceIJiRKiEEES0_ISt23_Rb_tree_const_iteratorIS1_EbEDpOT_(ptr noundef nonnull align 8 dereferenceable(48) %740, ptr noundef nonnull align 4 dereferenceable(4) %74, ptr noundef nonnull align 4 dereferenceable(4) %742)
          to label %744 unwind label %757

744:                                              ; preds = %739
  %745 = getelementptr inbounds { ptr, i8 }, ptr %75, i32 0, i32 0
  %746 = extractvalue { ptr, i8 } %743, 0
  store ptr %746, ptr %745, align 8
  %747 = getelementptr inbounds { ptr, i8 }, ptr %75, i32 0, i32 1
  %748 = extractvalue { ptr, i8 } %743, 1
  store i8 %748, ptr %747, align 8
  call void @llvm.lifetime.end.p0(i64 4, ptr %74) #10
  br label %761

749:                                              ; preds = %778, %772, %761, %703
  %750 = landingpad { ptr, i32 }
          cleanup
  %751 = extractvalue { ptr, i32 } %750, 0
  store ptr %751, ptr %17, align 8
  %752 = extractvalue { ptr, i32 } %750, 1
  store i32 %752, ptr %18, align 4
  br label %796

753:                                              ; preds = %737, %736, %725
  %754 = landingpad { ptr, i32 }
          cleanup
  %755 = extractvalue { ptr, i32 } %754, 0
  store ptr %755, ptr %17, align 8
  %756 = extractvalue { ptr, i32 } %754, 1
  store i32 %756, ptr %18, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %73) #10
  call void @llvm.lifetime.end.p0(i64 8, ptr %72) #10
  br label %796

757:                                              ; preds = %739
  %758 = landingpad { ptr, i32 }
          cleanup
  %759 = extractvalue { ptr, i32 } %758, 0
  store ptr %759, ptr %17, align 8
  %760 = extractvalue { ptr, i32 } %758, 1
  store i32 %760, ptr %18, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %74) #10
  br label %796

761:                                              ; preds = %744, %724
  %762 = getelementptr inbounds %class.HighsCutPool, ptr %82, i32 0, i32 2
  %763 = load ptr, ptr %65, align 8, !tbaa !5
  %764 = getelementptr inbounds %"struct.std::pair.99", ptr %763, i32 0, i32 1
  %765 = load i32, ptr %764, align 8, !tbaa !81
  %766 = sext i32 %765 to i64
  %767 = call noundef nonnull align 2 dereferenceable(2) ptr @_ZNSt6vectorIsSaIsEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %762, i64 noundef %766) #10
  store i16 -1, ptr %767, align 2, !tbaa !62
  %768 = load ptr, ptr %9, align 8, !tbaa !5
  %769 = getelementptr inbounds %struct.HighsCutSet, ptr %768, i32 0, i32 0
  %770 = load ptr, ptr %65, align 8, !tbaa !5
  %771 = getelementptr inbounds %"struct.std::pair.99", ptr %770, i32 0, i32 1
  invoke void @_ZNSt6vectorIiSaIiEE9push_backERKi(ptr noundef nonnull align 8 dereferenceable(24) %769, ptr noundef nonnull align 4 dereferenceable(4) %771)
          to label %772 unwind label %749

772:                                              ; preds = %761
  %773 = getelementptr inbounds %class.HighsCutPool, ptr %82, i32 0, i32 0
  %774 = load ptr, ptr %65, align 8, !tbaa !5
  %775 = getelementptr inbounds %"struct.std::pair.99", ptr %774, i32 0, i32 1
  %776 = load i32, ptr %775, align 8, !tbaa !81
  %777 = invoke noundef i32 @_ZNK21HighsDynamicRowMatrix9getRowEndEi(ptr noundef nonnull align 8 dereferenceable(336) %773, i32 noundef %776)
          to label %778 unwind label %749

778:                                              ; preds = %772
  %779 = getelementptr inbounds %class.HighsCutPool, ptr %82, i32 0, i32 0
  %780 = load ptr, ptr %65, align 8, !tbaa !5
  %781 = getelementptr inbounds %"struct.std::pair.99", ptr %780, i32 0, i32 1
  %782 = load i32, ptr %781, align 8, !tbaa !81
  %783 = invoke noundef i32 @_ZNK21HighsDynamicRowMatrix11getRowStartEi(ptr noundef nonnull align 8 dereferenceable(336) %779, i32 noundef %782)
          to label %784 unwind label %749

784:                                              ; preds = %778
  %785 = sub nsw i32 %777, %783
  %786 = load i32, ptr %61, align 4, !tbaa !11
  %787 = add nsw i32 %786, %785
  store i32 %787, ptr %61, align 4, !tbaa !11
  store i32 0, ptr %20, align 4
  br label %788

788:                                              ; preds = %784, %702
  call void @llvm.lifetime.end.p0(i64 8, ptr %67) #10
  call void @llvm.lifetime.end.p0(i64 1, ptr %66) #10
  %789 = load i32, ptr %20, align 4
  switch i32 %789, label %791 [
    i32 0, label %790
  ]

790:                                              ; preds = %788
  store i32 0, ptr %20, align 4
  br label %791

791:                                              ; preds = %790, %788
  call void @llvm.lifetime.end.p0(i64 8, ptr %65) #10
  %792 = load i32, ptr %20, align 4
  switch i32 %792, label %952 [
    i32 0, label %793
    i32 19, label %794
  ]

793:                                              ; preds = %791
  br label %794

794:                                              ; preds = %793, %791
  %795 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZN9__gnu_cxx17__normal_iteratorIPSt4pairIdiESt6vectorIS2_SaIS2_EEEppEv(ptr noundef nonnull align 8 dereferenceable(8) %63) #10
  br label %660

796:                                              ; preds = %757, %753, %749, %688
  call void @llvm.lifetime.end.p0(i64 8, ptr %67) #10
  call void @llvm.lifetime.end.p0(i64 1, ptr %66) #10
  call void @llvm.lifetime.end.p0(i64 8, ptr %65) #10
  call void @llvm.lifetime.end.p0(i64 8, ptr %64) #10
  call void @llvm.lifetime.end.p0(i64 8, ptr %63) #10
  call void @llvm.lifetime.end.p0(i64 8, ptr %62) #10
  br label %943

797:                                              ; preds = %662
  %798 = load ptr, ptr %9, align 8, !tbaa !5
  %799 = load i32, ptr %61, align 4, !tbaa !11
  invoke void @_ZN11HighsCutSet6resizeEi(ptr noundef nonnull align 8 dereferenceable(144) %798, i32 noundef %799)
          to label %800 unwind label %648

800:                                              ; preds = %797
  %801 = load ptr, ptr %9, align 8, !tbaa !5
  %802 = getelementptr inbounds %struct.HighsCutSet, ptr %801, i32 0, i32 3
  %803 = call noundef i64 @_ZNKSt6vectorIdSaIdEE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24) %802) #10
  %804 = trunc i64 %803 to i32
  %805 = load i32, ptr %61, align 4, !tbaa !11
  %806 = icmp eq i32 %804, %805
  br i1 %806, label %807, label %808

807:                                              ; preds = %800
  br label %810

808:                                              ; preds = %800
  call void @__assert_fail(ptr noundef @.str.54, ptr noundef @.str.52, i32 noundef 343, ptr noundef @__PRETTY_FUNCTION__._ZN12HighsCutPool8separateERKSt6vectorIdSaIdEER11HighsDomainR11HighsCutSetd) #11
  unreachable

809:                                              ; No predecessors!
  br label %810

810:                                              ; preds = %809, %807
  %811 = load ptr, ptr %9, align 8, !tbaa !5
  %812 = getelementptr inbounds %struct.HighsCutSet, ptr %811, i32 0, i32 2
  %813 = call noundef i64 @_ZNKSt6vectorIiSaIiEE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24) %812) #10
  %814 = trunc i64 %813 to i32
  %815 = load i32, ptr %61, align 4, !tbaa !11
  %816 = icmp eq i32 %814, %815
  br i1 %816, label %817, label %818

817:                                              ; preds = %810
  br label %820

818:                                              ; preds = %810
  call void @__assert_fail(ptr noundef @.str.55, ptr noundef @.str.52, i32 noundef 344, ptr noundef @__PRETTY_FUNCTION__._ZN12HighsCutPool8separateERKSt6vectorIdSaIdEER11HighsDomainR11HighsCutSetd) #11
  unreachable

819:                                              ; No predecessors!
  br label %820

820:                                              ; preds = %819, %817
  call void @llvm.lifetime.start.p0(i64 4, ptr %76) #10
  store i32 0, ptr %76, align 4, !tbaa !11
  call void @llvm.lifetime.start.p0(i64 4, ptr %77) #10
  store i32 0, ptr %77, align 4, !tbaa !11
  br label %821

821:                                              ; preds = %911, %820
  %822 = load i32, ptr %77, align 4, !tbaa !11
  %823 = load ptr, ptr %9, align 8, !tbaa !5
  %824 = invoke noundef i32 @_ZNK11HighsCutSet7numCutsEv(ptr noundef nonnull align 8 dereferenceable(144) %823)
          to label %825 unwind label %828

825:                                              ; preds = %821
  %826 = icmp ne i32 %822, %824
  br i1 %826, label %832, label %827

827:                                              ; preds = %825
  store i32 22, ptr %20, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %77) #10
  br label %916

828:                                              ; preds = %821
  %829 = landingpad { ptr, i32 }
          cleanup
  %830 = extractvalue { ptr, i32 } %829, 0
  store ptr %830, ptr %17, align 8
  %831 = extractvalue { ptr, i32 } %829, 1
  store i32 %831, ptr %18, align 4
  br label %915

832:                                              ; preds = %825
  %833 = load i32, ptr %76, align 4, !tbaa !11
  %834 = load ptr, ptr %9, align 8, !tbaa !5
  %835 = getelementptr inbounds %struct.HighsCutSet, ptr %834, i32 0, i32 1
  %836 = load i32, ptr %77, align 4, !tbaa !11
  %837 = sext i32 %836 to i64
  %838 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNSt6vectorIiSaIiEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %835, i64 noundef %837) #10
  store i32 %833, ptr %838, align 4, !tbaa !11
  call void @llvm.lifetime.start.p0(i64 4, ptr %78) #10
  %839 = load ptr, ptr %9, align 8, !tbaa !5
  %840 = getelementptr inbounds %struct.HighsCutSet, ptr %839, i32 0, i32 0
  %841 = load i32, ptr %77, align 4, !tbaa !11
  %842 = sext i32 %841 to i64
  %843 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNSt6vectorIiSaIiEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %840, i64 noundef %842) #10
  %844 = load i32, ptr %843, align 4, !tbaa !11
  store i32 %844, ptr %78, align 4, !tbaa !11
  call void @llvm.lifetime.start.p0(i64 4, ptr %79) #10
  %845 = getelementptr inbounds %class.HighsCutPool, ptr %82, i32 0, i32 0
  %846 = load i32, ptr %78, align 4, !tbaa !11
  %847 = invoke noundef i32 @_ZNK21HighsDynamicRowMatrix11getRowStartEi(ptr noundef nonnull align 8 dereferenceable(336) %845, i32 noundef %846)
          to label %848 unwind label %869

848:                                              ; preds = %832
  store i32 %847, ptr %79, align 4, !tbaa !11
  call void @llvm.lifetime.start.p0(i64 4, ptr %80) #10
  %849 = getelementptr inbounds %class.HighsCutPool, ptr %82, i32 0, i32 0
  %850 = load i32, ptr %78, align 4, !tbaa !11
  %851 = invoke noundef i32 @_ZNK21HighsDynamicRowMatrix9getRowEndEi(ptr noundef nonnull align 8 dereferenceable(336) %849, i32 noundef %850)
          to label %852 unwind label %873

852:                                              ; preds = %848
  store i32 %851, ptr %80, align 4, !tbaa !11
  %853 = getelementptr inbounds %class.HighsCutPool, ptr %82, i32 0, i32 1
  %854 = load i32, ptr %78, align 4, !tbaa !11
  %855 = sext i32 %854 to i64
  %856 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt6vectorIdSaIdEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %853, i64 noundef %855) #10
  %857 = load double, ptr %856, align 8, !tbaa !9
  %858 = load ptr, ptr %9, align 8, !tbaa !5
  %859 = getelementptr inbounds %struct.HighsCutSet, ptr %858, i32 0, i32 5
  %860 = load i32, ptr %77, align 4, !tbaa !11
  %861 = sext i32 %860 to i64
  %862 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt6vectorIdSaIdEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %859, i64 noundef %861) #10
  store double %857, ptr %862, align 8, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 4, ptr %81) #10
  %863 = load i32, ptr %79, align 4, !tbaa !11
  store i32 %863, ptr %81, align 4, !tbaa !11
  br label %864

864:                                              ; preds = %907, %852
  %865 = load i32, ptr %81, align 4, !tbaa !11
  %866 = load i32, ptr %80, align 4, !tbaa !11
  %867 = icmp ne i32 %865, %866
  br i1 %867, label %877, label %868

868:                                              ; preds = %864
  store i32 25, ptr %20, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %81) #10
  br label %910

869:                                              ; preds = %832
  %870 = landingpad { ptr, i32 }
          cleanup
  %871 = extractvalue { ptr, i32 } %870, 0
  store ptr %871, ptr %17, align 8
  %872 = extractvalue { ptr, i32 } %870, 1
  store i32 %872, ptr %18, align 4
  br label %914

873:                                              ; preds = %848
  %874 = landingpad { ptr, i32 }
          cleanup
  %875 = extractvalue { ptr, i32 } %874, 0
  store ptr %875, ptr %17, align 8
  %876 = extractvalue { ptr, i32 } %874, 1
  store i32 %876, ptr %18, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %80) #10
  br label %914

877:                                              ; preds = %864
  %878 = load i32, ptr %76, align 4, !tbaa !11
  %879 = load i32, ptr %61, align 4, !tbaa !11
  %880 = icmp slt i32 %878, %879
  br i1 %880, label %881, label %882

881:                                              ; preds = %877
  br label %884

882:                                              ; preds = %877
  call void @__assert_fail(ptr noundef @.str.56, ptr noundef @.str.52, i32 noundef 355, ptr noundef @__PRETTY_FUNCTION__._ZN12HighsCutPool8separateERKSt6vectorIdSaIdEER11HighsDomainR11HighsCutSetd) #11
  unreachable

883:                                              ; No predecessors!
  br label %884

884:                                              ; preds = %883, %881
  %885 = load ptr, ptr %13, align 8, !tbaa !5
  %886 = load i32, ptr %81, align 4, !tbaa !11
  %887 = sext i32 %886 to i64
  %888 = getelementptr inbounds double, ptr %885, i64 %887
  %889 = load double, ptr %888, align 8, !tbaa !9
  %890 = load ptr, ptr %9, align 8, !tbaa !5
  %891 = getelementptr inbounds %struct.HighsCutSet, ptr %890, i32 0, i32 3
  %892 = load i32, ptr %76, align 4, !tbaa !11
  %893 = sext i32 %892 to i64
  %894 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt6vectorIdSaIdEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %891, i64 noundef %893) #10
  store double %889, ptr %894, align 8, !tbaa !9
  %895 = load ptr, ptr %12, align 8, !tbaa !5
  %896 = load i32, ptr %81, align 4, !tbaa !11
  %897 = sext i32 %896 to i64
  %898 = getelementptr inbounds i32, ptr %895, i64 %897
  %899 = load i32, ptr %898, align 4, !tbaa !11
  %900 = load ptr, ptr %9, align 8, !tbaa !5
  %901 = getelementptr inbounds %struct.HighsCutSet, ptr %900, i32 0, i32 2
  %902 = load i32, ptr %76, align 4, !tbaa !11
  %903 = sext i32 %902 to i64
  %904 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNSt6vectorIiSaIiEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %901, i64 noundef %903) #10
  store i32 %899, ptr %904, align 4, !tbaa !11
  %905 = load i32, ptr %76, align 4, !tbaa !11
  %906 = add nsw i32 %905, 1
  store i32 %906, ptr %76, align 4, !tbaa !11
  br label %907

907:                                              ; preds = %884
  %908 = load i32, ptr %81, align 4, !tbaa !11
  %909 = add nsw i32 %908, 1
  store i32 %909, ptr %81, align 4, !tbaa !11
  br label %864, !llvm.loop !82

910:                                              ; preds = %868
  call void @llvm.lifetime.end.p0(i64 4, ptr %80) #10
  call void @llvm.lifetime.end.p0(i64 4, ptr %79) #10
  call void @llvm.lifetime.end.p0(i64 4, ptr %78) #10
  br label %911

911:                                              ; preds = %910
  %912 = load i32, ptr %77, align 4, !tbaa !11
  %913 = add nsw i32 %912, 1
  store i32 %913, ptr %77, align 4, !tbaa !11
  br label %821, !llvm.loop !83

914:                                              ; preds = %873, %869
  call void @llvm.lifetime.end.p0(i64 4, ptr %79) #10
  call void @llvm.lifetime.end.p0(i64 4, ptr %78) #10
  br label %915

915:                                              ; preds = %914, %828
  call void @llvm.lifetime.end.p0(i64 4, ptr %77) #10
  br label %942

916:                                              ; preds = %827
  %917 = getelementptr inbounds %class.HighsCutPool, ptr %82, i32 0, i32 8
  %918 = call noundef i64 @_ZNKSt3setISt4pairIiiESt4lessIS1_ESaIS1_EE4sizeEv(ptr noundef nonnull align 8 dereferenceable(48) %917) #10
  %919 = trunc i64 %918 to i32
  %920 = getelementptr inbounds %class.HighsCutPool, ptr %82, i32 0, i32 16
  %921 = load i32, ptr %920, align 8, !tbaa !70
  %922 = icmp eq i32 %919, %921
  br i1 %922, label %923, label %924

923:                                              ; preds = %916
  br label %926

924:                                              ; preds = %916
  call void @__assert_fail(ptr noundef @.str.51, ptr noundef @.str.52, i32 noundef 362, ptr noundef @__PRETTY_FUNCTION__._ZN12HighsCutPool8separateERKSt6vectorIdSaIdEER11HighsDomainR11HighsCutSetd) #11
  unreachable

925:                                              ; No predecessors!
  br label %926

926:                                              ; preds = %925, %923
  %927 = load i32, ptr %76, align 4, !tbaa !11
  %928 = load ptr, ptr %9, align 8, !tbaa !5
  %929 = getelementptr inbounds %struct.HighsCutSet, ptr %928, i32 0, i32 1
  %930 = load ptr, ptr %9, align 8, !tbaa !5
  %931 = invoke noundef i32 @_ZNK11HighsCutSet7numCutsEv(ptr noundef nonnull align 8 dereferenceable(144) %930)
          to label %932 unwind label %938

932:                                              ; preds = %926
  %933 = sext i32 %931 to i64
  %934 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNSt6vectorIiSaIiEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %929, i64 noundef %933) #10
  store i32 %927, ptr %934, align 4, !tbaa !11
  call void @llvm.lifetime.end.p0(i64 4, ptr %76) #10
  call void @llvm.lifetime.end.p0(i64 4, ptr %61) #10
  call void @llvm.lifetime.end.p0(i64 4, ptr %58) #10
  call void @llvm.lifetime.end.p0(i64 4, ptr %57) #10
  call void @llvm.lifetime.end.p0(i64 4, ptr %51) #10
  call void @llvm.lifetime.end.p0(i64 8, ptr %50) #10
  store i32 0, ptr %20, align 4
  br label %935

935:                                              ; preds = %932, %545
  call void @llvm.lifetime.end.p0(i64 4, ptr %16) #10
  call void @llvm.lifetime.end.p0(i64 4, ptr %15) #10
  call void @_ZNSt6vectorISt4pairIdiESaIS1_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %14) #10
  call void @llvm.lifetime.end.p0(i64 24, ptr %14) #10
  call void @llvm.lifetime.end.p0(i64 8, ptr %13) #10
  call void @llvm.lifetime.end.p0(i64 8, ptr %12) #10
  call void @llvm.lifetime.end.p0(i64 4, ptr %11) #10
  %936 = load i32, ptr %20, align 4
  switch i32 %936, label %952 [
    i32 0, label %937
    i32 1, label %937
  ]

937:                                              ; preds = %935, %935
  ret void

938:                                              ; preds = %926
  %939 = landingpad { ptr, i32 }
          cleanup
  %940 = extractvalue { ptr, i32 } %939, 0
  store ptr %940, ptr %17, align 8
  %941 = extractvalue { ptr, i32 } %939, 1
  store i32 %941, ptr %18, align 4
  br label %942

942:                                              ; preds = %938, %915
  call void @llvm.lifetime.end.p0(i64 4, ptr %76) #10
  br label %943

943:                                              ; preds = %942, %796, %648
  call void @llvm.lifetime.end.p0(i64 4, ptr %61) #10
  br label %944

944:                                              ; preds = %943, %644, %616
  call void @llvm.lifetime.end.p0(i64 4, ptr %58) #10
  call void @llvm.lifetime.end.p0(i64 4, ptr %57) #10
  br label %945

945:                                              ; preds = %944, %612
  call void @llvm.lifetime.end.p0(i64 4, ptr %51) #10
  call void @llvm.lifetime.end.p0(i64 8, ptr %50) #10
  br label %946

946:                                              ; preds = %945, %532, %122
  call void @llvm.lifetime.end.p0(i64 4, ptr %16) #10
  call void @llvm.lifetime.end.p0(i64 4, ptr %15) #10
  call void @_ZNSt6vectorISt4pairIdiESaIS1_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %14) #10
  call void @llvm.lifetime.end.p0(i64 24, ptr %14) #10
  call void @llvm.lifetime.end.p0(i64 8, ptr %13) #10
  call void @llvm.lifetime.end.p0(i64 8, ptr %12) #10
  call void @llvm.lifetime.end.p0(i64 4, ptr %11) #10
  br label %947

947:                                              ; preds = %946
  %948 = load ptr, ptr %17, align 8
  %949 = load i32, ptr %18, align 4
  %950 = insertvalue { ptr, i32 } poison, ptr %948, 0
  %951 = insertvalue { ptr, i32 } %950, i32 %949, 1
  resume { ptr, i32 } %951

952:                                              ; preds = %935, %791, %518
  unreachable
}

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

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

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

; Function Attrs: mustprogress uwtable
declare hidden noundef i64 @_ZL16compute_cut_hashPKiPKddi(ptr noundef, ptr noundef, double noundef, i32 noundef) #1

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

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

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

; Function Attrs: nounwind
declare double @sqrt(double noundef) #8

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

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

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

; Function Attrs: inlinehint mustprogress uwtable
declare hidden void @"_Z7pdqsortIN9__gnu_cxx17__normal_iteratorIPSt4pairIdiESt6vectorIS3_SaIS3_EEEEZN12HighsCutPool8separateERKS5_IdSaIdEER11HighsDomainR11HighsCutSetdE3$_0EvT_SJ_T0_"(ptr, ptr, ptr) #9

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

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

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

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

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

; Function Attrs: inlinehint mustprogress uwtable
declare hidden ptr @"_ZSt11upper_boundIN9__gnu_cxx17__normal_iteratorIPSt4pairIdiESt6vectorIS3_SaIS3_EEEEdZN12HighsCutPool8separateERKS5_IdSaIdEER11HighsDomainR11HighsCutSetdE3$_1ET_SJ_SJ_RKT0_T1_"(ptr, ptr, ptr noundef nonnull align 8 dereferenceable(8)) #9

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

!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 = !{!"double", !7, i64 0}
!11 = !{!12, !12, i64 0}
!12 = !{!"int", !7, i64 0}
!13 = !{!14, !12, i64 608}
!14 = !{!"_ZTS12HighsCutPool", !15, i64 0, !24, i64 336, !41, i64 360, !24, i64 384, !24, i64 408, !28, i64 432, !45, i64 456, !50, i64 512, !32, i64 536, !10, i64 584, !10, i64 592, !10, i64 600, !12, i64 608, !12, i64 612, !12, i64 616, !12, i64 620, !12, i64 624, !20, i64 632, !54, i64 656}
!15 = !{!"_ZTS21HighsDynamicRowMatrix", !16, i64 0, !20, i64 24, !24, i64 48, !20, i64 72, !20, i64 96, !20, i64 120, !20, i64 144, !20, i64 168, !20, i64 192, !20, i64 216, !28, i64 240, !32, i64 264, !20, i64 312}
!16 = !{!"_ZTSSt6vectorISt4pairIiiESaIS1_EE", !17, i64 0}
!17 = !{!"_ZTSSt12_Vector_baseISt4pairIiiESaIS1_EE", !18, i64 0}
!18 = !{!"_ZTSNSt12_Vector_baseISt4pairIiiESaIS1_EE12_Vector_implE", !19, i64 0}
!19 = !{!"_ZTSNSt12_Vector_baseISt4pairIiiESaIS1_EE17_Vector_impl_dataE", !6, i64 0, !6, i64 8, !6, i64 16}
!20 = !{!"_ZTSSt6vectorIiSaIiEE", !21, i64 0}
!21 = !{!"_ZTSSt12_Vector_baseIiSaIiEE", !22, i64 0}
!22 = !{!"_ZTSNSt12_Vector_baseIiSaIiEE12_Vector_implE", !23, i64 0}
!23 = !{!"_ZTSNSt12_Vector_baseIiSaIiEE17_Vector_impl_dataE", !6, i64 0, !6, i64 8, !6, i64 16}
!24 = !{!"_ZTSSt6vectorIdSaIdEE", !25, i64 0}
!25 = !{!"_ZTSSt12_Vector_baseIdSaIdEE", !26, i64 0}
!26 = !{!"_ZTSNSt12_Vector_baseIdSaIdEE12_Vector_implE", !27, i64 0}
!27 = !{!"_ZTSNSt12_Vector_baseIdSaIdEE17_Vector_impl_dataE", !6, i64 0, !6, i64 8, !6, i64 16}
!28 = !{!"_ZTSSt6vectorIhSaIhEE", !29, i64 0}
!29 = !{!"_ZTSSt12_Vector_baseIhSaIhEE", !30, i64 0}
!30 = !{!"_ZTSNSt12_Vector_baseIhSaIhEE12_Vector_implE", !31, i64 0}
!31 = !{!"_ZTSNSt12_Vector_baseIhSaIhEE17_Vector_impl_dataE", !6, i64 0, !6, i64 8, !6, i64 16}
!32 = !{!"_ZTSSt3setISt4pairIiiESt4lessIS1_ESaIS1_EE", !33, i64 0}
!33 = !{!"_ZTSSt8_Rb_treeISt4pairIiiES1_St9_IdentityIS1_ESt4lessIS1_ESaIS1_EE", !34, i64 0}
!34 = !{!"_ZTSNSt8_Rb_treeISt4pairIiiES1_St9_IdentityIS1_ESt4lessIS1_ESaIS1_EE13_Rb_tree_implIS5_Lb1EEE", !35, i64 0, !37, i64 8}
!35 = !{!"_ZTSSt20_Rb_tree_key_compareISt4lessISt4pairIiiEEE", !36, i64 0}
!36 = !{!"_ZTSSt4lessISt4pairIiiEE"}
!37 = !{!"_ZTSSt15_Rb_tree_header", !38, i64 0, !40, i64 32}
!38 = !{!"_ZTSSt18_Rb_tree_node_base", !39, i64 0, !6, i64 8, !6, i64 16, !6, i64 24}
!39 = !{!"_ZTSSt14_Rb_tree_color", !7, i64 0}
!40 = !{!"long", !7, i64 0}
!41 = !{!"_ZTSSt6vectorIsSaIsEE", !42, i64 0}
!42 = !{!"_ZTSSt12_Vector_baseIsSaIsEE", !43, i64 0}
!43 = !{!"_ZTSNSt12_Vector_baseIsSaIsEE12_Vector_implE", !44, i64 0}
!44 = !{!"_ZTSNSt12_Vector_baseIsSaIsEE17_Vector_impl_dataE", !6, i64 0, !6, i64 8, !6, i64 16}
!45 = !{!"_ZTSSt18unordered_multimapImiSt4hashImESt8equal_toImESaISt4pairIKmiEEE", !46, i64 0}
!46 = !{!"_ZTSSt10_HashtableImSt4pairIKmiESaIS2_ENSt8__detail10_Select1stESt8equal_toImESt4hashImENS4_18_Mod_range_hashingENS4_20_Default_ranged_hashENS4_20_Prime_rehash_policyENS4_17_Hashtable_traitsILb0ELb0ELb0EEEE", !6, i64 0, !40, i64 8, !47, i64 16, !40, i64 24, !48, i64 32, !6, i64 48}
!47 = !{!"_ZTSNSt8__detail15_Hash_node_baseE", !6, i64 0}
!48 = !{!"_ZTSNSt8__detail20_Prime_rehash_policyE", !49, i64 0, !40, i64 8}
!49 = !{!"float", !7, i64 0}
!50 = !{!"_ZTSSt6vectorIPN11HighsDomain18CutpoolPropagationESaIS2_EE", !51, i64 0}
!51 = !{!"_ZTSSt12_Vector_baseIPN11HighsDomain18CutpoolPropagationESaIS2_EE", !52, i64 0}
!52 = !{!"_ZTSNSt12_Vector_baseIPN11HighsDomain18CutpoolPropagationESaIS2_EE12_Vector_implE", !53, i64 0}
!53 = !{!"_ZTSNSt12_Vector_baseIPN11HighsDomain18CutpoolPropagationESaIS2_EE17_Vector_impl_dataE", !6, i64 0, !6, i64 8, !6, i64 16}
!54 = !{!"_ZTSSt6vectorISt4pairIidESaIS1_EE", !55, i64 0}
!55 = !{!"_ZTSSt12_Vector_baseISt4pairIidESaIS1_EE", !56, i64 0}
!56 = !{!"_ZTSNSt12_Vector_baseISt4pairIidESaIS1_EE12_Vector_implE", !57, i64 0}
!57 = !{!"_ZTSNSt12_Vector_baseISt4pairIidESaIS1_EE17_Vector_impl_dataE", !6, i64 0, !6, i64 8, !6, i64 16}
!58 = !{!14, !12, i64 616}
!59 = !{!14, !12, i64 612}
!60 = distinct !{!60, !61}
!61 = !{!"llvm.loop.mustprogress"}
!62 = !{!63, !63, i64 0}
!63 = !{!"short", !7, i64 0}
!64 = distinct !{!64, !61}
!65 = !{!66, !66, i64 0}
!66 = !{!"bool", !7, i64 0}
!67 = !{i8 0, i8 2}
!68 = !{}
!69 = !{!40, !40, i64 0}
!70 = !{!14, !12, i64 624}
!71 = !{!14, !12, i64 620}
!72 = !{!73, !12, i64 8}
!73 = !{!"_ZTSSt4pairIKmiE", !40, i64 0, !12, i64 8}
!74 = distinct !{!74, !61}
!75 = distinct !{!75, !61}
!76 = distinct !{!76, !61}
!77 = !{!14, !10, i64 584}
!78 = !{!14, !10, i64 592}
!79 = !{!80, !10, i64 0}
!80 = !{!"_ZTSSt4pairIdiE", !10, i64 0, !12, i64 8}
!81 = !{!80, !12, i64 8}
!82 = distinct !{!82, !61}
!83 = distinct !{!83, !61}


; 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::vector.55" = type { %"struct.std::_Vector_base.56" }
%"struct.std::_Vector_base.56" = type { %"struct.std::_Vector_base<std::pair<double, int>, std::allocator<std::pair<double, int>>>::_Vector_impl" }
%"struct.std::_Vector_base<std::pair<double, int>, std::allocator<std::pair<double, int>>>::_Vector_impl" = type { %"struct.std::_Vector_base<std::pair<double, int>, std::allocator<std::pair<double, int>>>::_Vector_impl_data" }
%"struct.std::_Vector_base<std::pair<double, int>, std::allocator<std::pair<double, int>>>::_Vector_impl_data" = type { ptr, ptr, ptr }
%"struct.std::pair.43" = type { i32, i32 }
%"struct.std::pair.48" = type { i16, i32 }
%"class.__gnu_cxx::__normal_iterator" = type { ptr }
%"struct.std::pair" = type { %"struct.std::__detail::_Node_iterator", %"struct.std::__detail::_Node_iterator" }
%"struct.std::__detail::_Node_iterator" = type { %"struct.std::__detail::_Node_iterator_base" }
%"struct.std::__detail::_Node_iterator_base" = type { ptr }
%class.HighsCDouble = type { double, double }
%"class.__gnu_cxx::__normal_iterator.102" = type { ptr }
%"class.__gnu_cxx::__normal_iterator.104" = type { ptr }

@.str.51 = external hidden unnamed_addr constant [41 x i8], align 1
@.str.52 = external hidden unnamed_addr constant [74 x i8], align 1
@.str.53 = external hidden unnamed_addr constant [15 x i8], align 1
@__PRETTY_FUNCTION__._ZN12HighsCutPool8separateERKSt6vectorIdSaIdEER11HighsDomainR11HighsCutSetd = external hidden unnamed_addr constant [95 x i8], align 1
@.str.54 = external hidden unnamed_addr constant [43 x i8], align 1
@.str.55 = external hidden unnamed_addr constant [43 x i8], align 1
@.str.56 = external hidden unnamed_addr constant [21 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

declare i32 @__gxx_personality_v0(...)

; 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 uwtable
declare dso_local { ptr, ptr } @_ZNSt18unordered_multimapImiSt4hashImESt8equal_toImESaISt4pairIKmiEEE11equal_rangeERS5_(ptr noundef nonnull align 8 dereferenceable(56), ptr noundef nonnull align 8 dereferenceable(8)) local_unnamed_addr #1 align 2

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

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

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

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

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

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

; Function Attrs: mustprogress nocallback nofree nosync nounwind speculatable willreturn memory(none)
declare double @llvm.fmuladd.f64(double, double, double) #3

; 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 #2 align 2

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

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

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

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

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

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

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

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

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

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

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

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

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

declare void @_ZN11HighsDomain18CutpoolPropagation10cutDeletedEib(ptr noundef nonnull align 8 dereferenceable(144), i32 noundef, i1 noundef zeroext) local_unnamed_addr #5

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

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

declare void @_ZN21HighsDynamicRowMatrix9removeRowEi(ptr noundef nonnull align 8 dereferenceable(336), i32 noundef) local_unnamed_addr #5

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

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

; Function Attrs: noreturn nounwind
declare void @__assert_fail(ptr noundef, ptr noundef, i32 noundef, ptr noundef) local_unnamed_addr #6

; Function Attrs: mustprogress uwtable
define dso_local void @_ZN12HighsCutPool8separateERKSt6vectorIdSaIdEER11HighsDomainR11HighsCutSetd(ptr noundef nonnull align 8 dereferenceable(680) %0, ptr noundef nonnull align 8 dereferenceable(24) %1, ptr noundef nonnull align 8 dereferenceable(824) %2, ptr noundef nonnull align 8 dereferenceable(144) %3, double noundef %4) local_unnamed_addr #1 align 2 personality ptr @__gxx_personality_v0 {
  %6 = alloca %"class.std::vector.55", align 8
  %7 = alloca i32, align 4
  %8 = alloca %"struct.std::pair.43", align 4
  %9 = alloca %"struct.std::pair.48", align 8
  %10 = alloca i64, align 8
  %11 = alloca %"class.__gnu_cxx::__normal_iterator", align 8
  %12 = alloca %"class.__gnu_cxx::__normal_iterator", align 8
  %13 = alloca %"struct.std::pair", align 8
  %14 = alloca %"struct.std::__detail::_Node_iterator", align 8
  %15 = alloca %class.HighsCDouble, align 8
  %16 = alloca double, align 8
  %17 = alloca double, align 8
  %18 = alloca %"class.__gnu_cxx::__normal_iterator.102", align 8
  %19 = alloca %"class.__gnu_cxx::__normal_iterator.102", align 8
  %20 = alloca i64, align 8
  %21 = alloca i64, align 8
  %22 = alloca %"class.__gnu_cxx::__normal_iterator.102", align 8
  %23 = alloca %"class.__gnu_cxx::__normal_iterator.102", align 8
  %24 = alloca %"class.__gnu_cxx::__normal_iterator.104", align 8
  %25 = alloca %"class.__gnu_cxx::__normal_iterator.104", align 8
  %26 = alloca %"struct.std::pair.43", align 4
  %27 = alloca %"struct.std::pair.48", align 8
  %28 = alloca i32, align 4
  %29 = tail call noundef i32 @_ZNK21HighsDynamicRowMatrix10getNumRowsEv(ptr noundef nonnull align 8 dereferenceable(336) %0)
  %30 = tail call noundef ptr @_ZNK21HighsDynamicRowMatrix10getARindexEv(ptr noundef nonnull align 8 dereferenceable(336) %0)
  %31 = tail call noundef ptr @_ZNK21HighsDynamicRowMatrix10getARvalueEv(ptr noundef nonnull align 8 dereferenceable(336) %0)
  %32 = tail call noundef zeroext i1 @_ZNK11HighsCutSet5emptyEv(ptr noundef nonnull align 8 dereferenceable(144) %3)
  br i1 %32, label %34, label %33

33:                                               ; preds = %5
  tail call void @__assert_fail(ptr noundef nonnull @.str.53, ptr noundef nonnull @.str.52, i32 noundef 174, ptr noundef nonnull @__PRETTY_FUNCTION__._ZN12HighsCutPool8separateERKSt6vectorIdSaIdEER11HighsDomainR11HighsCutSetd) #10
  unreachable

34:                                               ; preds = %5
  call void @llvm.lifetime.start.p0(i64 24, ptr nonnull %6) #11
  call void @_ZNSt6vectorISt4pairIdiESaIS1_EEC2Ev(ptr noundef nonnull align 8 dereferenceable(24) %6) #11
  %35 = getelementptr inbounds i8, ptr %0, i64 608
  %36 = load i32, ptr %35, align 8, !tbaa !5
  %37 = invoke noundef i32 @_ZNK12HighsCutPool10getNumCutsEv(ptr noundef nonnull align 8 dereferenceable(680) %0)
          to label %38 unwind label %55

38:                                               ; preds = %34
  %39 = getelementptr inbounds i8, ptr %0, i64 616
  %40 = load i32, ptr %39, align 8, !tbaa !55
  %41 = sub nsw i32 %37, %40
  %42 = getelementptr inbounds i8, ptr %0, i64 612
  %43 = icmp sgt i32 %36, 1
  %44 = load i32, ptr %42, align 4
  %45 = icmp sgt i32 %41, %44
  %or.cond210 = select i1 %43, i1 %45, i1 false
  br i1 %or.cond210, label %.lr.ph, label %.critedge

.lr.ph:                                           ; preds = %38
  %46 = getelementptr inbounds i8, ptr %0, i64 632
  %47 = zext nneg i32 %36 to i64
  br label %48

48:                                               ; preds = %.lr.ph, %48
  %indvars.iv = phi i64 [ %47, %.lr.ph ], [ %indvars.iv.next, %48 ]
  %.0147211 = phi i32 [ %41, %.lr.ph ], [ %51, %48 ]
  %49 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNSt6vectorIiSaIiEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %46, i64 noundef %indvars.iv) #11
  %50 = load i32, ptr %49, align 4, !tbaa !56
  %51 = sub nsw i32 %.0147211, %50
  %indvars.iv.next = add nsw i64 %indvars.iv, -1
  %52 = icmp ugt i64 %indvars.iv, 2
  %53 = load i32, ptr %42, align 4
  %54 = icmp sgt i32 %51, %53
  %or.cond = select i1 %52, i1 %54, i1 false
  br i1 %or.cond, label %48, label %.critedge.loopexit, !llvm.loop !57

55:                                               ; preds = %281, %34
  %56 = landingpad { ptr, i32 }
          cleanup
  br label %452

.critedge.loopexit:                               ; preds = %48
  %57 = trunc nuw nsw i64 %indvars.iv.next to i32
  br label %.critedge

.critedge:                                        ; preds = %.critedge.loopexit, %38
  %.0146.lcssa = phi i32 [ %36, %38 ], [ %57, %.critedge.loopexit ]
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %7) #11
  store i32 0, ptr %7, align 4, !tbaa !56
  %58 = icmp sgt i32 %29, 0
  br i1 %58, label %.lr.ph231, label %._crit_edge232

.lr.ph231:                                        ; preds = %.critedge
  %59 = getelementptr inbounds i8, ptr %0, i64 360
  %60 = getelementptr inbounds i8, ptr %0, i64 336
  %61 = getelementptr inbounds i8, ptr %0, i64 632
  %62 = getelementptr inbounds i8, ptr %0, i64 536
  %63 = getelementptr inbounds i8, ptr %0, i64 408
  %64 = getelementptr inbounds i8, ptr %0, i64 512
  %65 = getelementptr inbounds i8, ptr %0, i64 624
  %66 = getelementptr inbounds i8, ptr %0, i64 620
  %67 = getelementptr inbounds i8, ptr %0, i64 456
  %68 = getelementptr inbounds i8, ptr %13, i64 8
  %69 = getelementptr inbounds i8, ptr %2, i64 800
  %70 = getelementptr inbounds i8, ptr %2, i64 776
  br label %77

._crit_edge232:                                   ; preds = %270, %.critedge
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %7) #11
  %71 = getelementptr inbounds i8, ptr %0, i64 536
  %72 = call noundef i64 @_ZNKSt3setISt4pairIiiESt4lessIS1_ESaIS1_EE4sizeEv(ptr noundef nonnull align 8 dereferenceable(48) %71) #11
  %73 = trunc i64 %72 to i32
  %74 = getelementptr inbounds i8, ptr %0, i64 624
  %75 = load i32, ptr %74, align 8, !tbaa !59
  %76 = icmp eq i32 %75, %73
  br i1 %76, label %279, label %278

77:                                               ; preds = %.lr.ph231, %270
  %storemerge230 = phi i32 [ 0, %.lr.ph231 ], [ %272, %270 ]
  %78 = sext i32 %storemerge230 to i64
  %79 = call noundef nonnull align 2 dereferenceable(2) ptr @_ZNSt6vectorIsSaIsEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %59, i64 noundef %78) #11
  %80 = load i16, ptr %79, align 2, !tbaa !60
  %81 = icmp slt i16 %80, 0
  br i1 %81, label %270, label %82

82:                                               ; preds = %77
  %83 = load i32, ptr %7, align 4, !tbaa !56
  %84 = call noundef i32 @_ZNK21HighsDynamicRowMatrix11getRowStartEi(ptr noundef nonnull align 8 dereferenceable(336) %0, i32 noundef %83)
  %85 = load i32, ptr %7, align 4, !tbaa !56
  %86 = call noundef i32 @_ZNK21HighsDynamicRowMatrix9getRowEndEi(ptr noundef nonnull align 8 dereferenceable(336) %0, i32 noundef %85)
  %87 = load i32, ptr %7, align 4, !tbaa !56
  %88 = sext i32 %87 to i64
  %89 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt6vectorIdSaIdEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %60, i64 noundef %88) #11
  %90 = load double, ptr %89, align 8, !tbaa !62
  %91 = fneg double %90
  %.not186213 = icmp eq i32 %84, %86
  br i1 %.not186213, label %._crit_edge, label %.lr.ph216.preheader

.lr.ph216.preheader:                              ; preds = %82
  %92 = sext i32 %84 to i64
  br label %.lr.ph216

._crit_edge:                                      ; preds = %.lr.ph216, %82
  %.0163.lcssa = phi double [ %91, %82 ], [ %110, %.lr.ph216 ]
  %93 = load i32, ptr %7, align 4, !tbaa !56
  %94 = sext i32 %93 to i64
  %95 = call noundef nonnull align 2 dereferenceable(2) ptr @_ZNSt6vectorIsSaIsEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %59, i64 noundef %94) #11
  %96 = load i16, ptr %95, align 2, !tbaa !60
  %97 = sext i16 %96 to i64
  %98 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNSt6vectorIiSaIiEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %61, i64 noundef %97) #11
  %99 = load i32, ptr %98, align 4, !tbaa !56
  %100 = add nsw i32 %99, -1
  store i32 %100, ptr %98, align 4, !tbaa !56
  %101 = load i32, ptr %7, align 4, !tbaa !56
  %102 = call noundef zeroext i1 @_ZNK21HighsDynamicRowMatrix13columnsLinkedEi(ptr noundef nonnull align 8 dereferenceable(336) %0, i32 noundef %101)
  br i1 %102, label %112, label %124

.lr.ph216:                                        ; preds = %.lr.ph216.preheader, %.lr.ph216
  %indvars.iv259 = phi i64 [ %92, %.lr.ph216.preheader ], [ %indvars.iv.next260, %.lr.ph216 ]
  %.0163215 = phi double [ %91, %.lr.ph216.preheader ], [ %110, %.lr.ph216 ]
  %103 = getelementptr inbounds i32, ptr %30, i64 %indvars.iv259
  %104 = load i32, ptr %103, align 4, !tbaa !56
  %105 = sext i32 %104 to i64
  %106 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNKSt6vectorIdSaIdEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %1, i64 noundef %105) #11
  %107 = load double, ptr %106, align 8, !tbaa !62
  %108 = getelementptr inbounds double, ptr %31, i64 %indvars.iv259
  %109 = load double, ptr %108, align 8, !tbaa !62
  %110 = call double @llvm.fmuladd.f64(double %109, double %107, double %.0163215)
  %indvars.iv.next260 = add nsw i64 %indvars.iv259, 1
  %111 = trunc nsw i64 %indvars.iv.next260 to i32
  %.not186 = icmp eq i32 %86, %111
  br i1 %.not186, label %._crit_edge, label %.lr.ph216, !llvm.loop !63

112:                                              ; preds = %._crit_edge
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %8) #11
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %9) #11
  %113 = load i32, ptr %7, align 4, !tbaa !56
  %114 = sext i32 %113 to i64
  %115 = call noundef nonnull align 2 dereferenceable(2) ptr @_ZNSt6vectorIsSaIsEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %59, i64 noundef %114) #11
  %116 = invoke i64 @_ZSt9make_pairIRsRiESt4pairINSt25__strip_reference_wrapperINSt5decayIT_E4typeEE6__typeENS3_INS4_IT0_E4typeEE6__typeEEOS5_OSA_(ptr noundef nonnull align 2 dereferenceable(2) %115, ptr noundef nonnull align 4 dereferenceable(4) %7)
          to label %117 unwind label %122

117:                                              ; preds = %112
  store i64 %116, ptr %9, align 8
  call void @_ZNSt4pairIiiEC2IsiTnNSt9enable_ifIXaaclsr6_PCCFPIT_T0_EE22_MoveConstructiblePairIS3_S4_EEclsr6_PCCFPIS3_S4_EE30_ImplicitlyMoveConvertiblePairIS3_S4_EEEbE4typeELb1EEEOS_IS3_S4_E(ptr noundef nonnull align 4 dereferenceable(8) %8, ptr noundef nonnull align 4 dereferenceable(8) %9)
  %118 = invoke noundef i64 @_ZNSt3setISt4pairIiiESt4lessIS1_ESaIS1_EE5eraseERKS1_(ptr noundef nonnull align 8 dereferenceable(48) %62, ptr noundef nonnull align 4 dereferenceable(8) %8)
          to label %119 unwind label %122

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

120:                                              ; preds = %199
  %121 = landingpad { ptr, i32 }
          cleanup
  br label %277

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

124:                                              ; preds = %119, %._crit_edge
  %125 = fcmp ugt double %.0163.lcssa, %4
  br i1 %125, label %213, label %126

126:                                              ; preds = %124
  %127 = load i32, ptr %7, align 4, !tbaa !56
  %128 = sext i32 %127 to i64
  %129 = call noundef nonnull align 2 dereferenceable(2) ptr @_ZNSt6vectorIsSaIsEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %59, i64 noundef %128) #11
  %130 = load i16, ptr %129, align 2, !tbaa !60
  %131 = add i16 %130, 1
  store i16 %131, ptr %129, align 2, !tbaa !60
  %132 = load i32, ptr %7, align 4, !tbaa !56
  %133 = sext i32 %132 to i64
  %134 = call noundef nonnull align 2 dereferenceable(2) ptr @_ZNSt6vectorIsSaIsEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %59, i64 noundef %133) #11
  %135 = load i16, ptr %134, align 2, !tbaa !60
  %136 = sext i16 %135 to i32
  %.not190 = icmp sgt i32 %.0146.lcssa, %136
  br i1 %.not190, label %198, label %137

137:                                              ; preds = %126
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %10) #11
  %138 = sext i32 %84 to i64
  %139 = getelementptr inbounds i32, ptr %30, i64 %138
  %140 = getelementptr inbounds double, ptr %31, i64 %138
  %141 = load i32, ptr %7, align 4, !tbaa !56
  %142 = sext i32 %141 to i64
  %143 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt6vectorIdSaIdEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %63, i64 noundef %142) #11
  %144 = load double, ptr %143, align 8, !tbaa !62
  %145 = sub nsw i32 %86, %84
  %146 = invoke noundef i64 @_ZL16compute_cut_hashPKiPKddi(ptr noundef %139, ptr noundef %140, double noundef %144, i32 noundef %145)
          to label %147 unwind label %151

147:                                              ; preds = %137
  store i64 %146, ptr %10, align 8, !tbaa !64
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %11) #11
  %148 = call ptr @_ZNSt6vectorIPN11HighsDomain18CutpoolPropagationESaIS2_EE5beginEv(ptr noundef nonnull align 8 dereferenceable(24) %64) #11
  store ptr %148, ptr %11, align 8
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %12) #11
  %149 = call ptr @_ZNSt6vectorIPN11HighsDomain18CutpoolPropagationESaIS2_EE3endEv(ptr noundef nonnull align 8 dereferenceable(24) %64) #11
  store ptr %149, ptr %12, align 8
  %150 = call noundef zeroext i1 @_ZN9__gnu_cxxneIPPN11HighsDomain18CutpoolPropagationESt6vectorIS3_SaIS3_EEEEbRKNS_17__normal_iteratorIT_T0_EESD_(ptr noundef nonnull align 8 dereferenceable(8) %11, ptr noundef nonnull align 8 dereferenceable(8) %12) #11
  br i1 %150, label %.lr.ph219, label %._crit_edge220

._crit_edge220:                                   ; preds = %156, %147
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %12) #11
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %11) #11
  br i1 %102, label %161, label %168

151:                                              ; preds = %168, %137
  %152 = landingpad { ptr, i32 }
          cleanup
  br label %197

.lr.ph219:                                        ; preds = %147, %156
  %153 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNK9__gnu_cxx17__normal_iteratorIPPN11HighsDomain18CutpoolPropagationESt6vectorIS3_SaIS3_EEEdeEv(ptr noundef nonnull align 8 dereferenceable(8) %11) #11
  %154 = load ptr, ptr %153, align 8, !tbaa !65
  %155 = load i32, ptr %7, align 4, !tbaa !56
  invoke void @_ZN11HighsDomain18CutpoolPropagation10cutDeletedEib(ptr noundef nonnull align 8 dereferenceable(144) %154, i32 noundef %155, i1 noundef zeroext false)
          to label %156 unwind label %159

156:                                              ; preds = %.lr.ph219
  %157 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZN9__gnu_cxx17__normal_iteratorIPPN11HighsDomain18CutpoolPropagationESt6vectorIS3_SaIS3_EEEppEv(ptr noundef nonnull align 8 dereferenceable(8) %11) #11
  %158 = call noundef zeroext i1 @_ZN9__gnu_cxxneIPPN11HighsDomain18CutpoolPropagationESt6vectorIS3_SaIS3_EEEEbRKNS_17__normal_iteratorIT_T0_EESD_(ptr noundef nonnull align 8 dereferenceable(8) %11, ptr noundef nonnull align 8 dereferenceable(8) %12) #11
  br i1 %158, label %.lr.ph219, label %._crit_edge220

159:                                              ; preds = %.lr.ph219
  %160 = landingpad { ptr, i32 }
          cleanup
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %12) #11
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %11) #11
  br label %197

161:                                              ; preds = %._crit_edge220
  %162 = load i32, ptr %65, align 8, !tbaa !59
  %163 = add nsw i32 %162, -1
  store i32 %163, ptr %65, align 8, !tbaa !59
  %164 = load i32, ptr %7, align 4, !tbaa !56
  %165 = call noundef i32 @_ZNK12HighsCutPool12getRowLengthEi(ptr noundef nonnull align 8 dereferenceable(680) %0, i32 noundef %164)
  %166 = load i32, ptr %66, align 4, !tbaa !66
  %167 = sub nsw i32 %166, %165
  store i32 %167, ptr %66, align 4, !tbaa !66
  br label %168

168:                                              ; preds = %161, %._crit_edge220
  %169 = load i32, ptr %7, align 4, !tbaa !56
  invoke void @_ZN21HighsDynamicRowMatrix9removeRowEi(ptr noundef nonnull align 8 dereferenceable(336) %0, i32 noundef %169)
          to label %170 unwind label %151

170:                                              ; preds = %168
  %171 = load i32, ptr %7, align 4, !tbaa !56
  %172 = sext i32 %171 to i64
  %173 = call noundef nonnull align 2 dereferenceable(2) ptr @_ZNSt6vectorIsSaIsEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %59, i64 noundef %172) #11
  store i16 -1, ptr %173, align 2, !tbaa !60
  %174 = load i32, ptr %7, align 4, !tbaa !56
  %175 = sext i32 %174 to i64
  %176 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt6vectorIdSaIdEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %60, i64 noundef %175) #11
  store double 0.000000e+00, ptr %176, align 8, !tbaa !62
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %13) #11
  %177 = invoke { ptr, ptr } @_ZNSt18unordered_multimapImiSt4hashImESt8equal_toImESaISt4pairIKmiEEE11equal_rangeERS5_(ptr noundef nonnull align 8 dereferenceable(56) %67, ptr noundef nonnull align 8 dereferenceable(8) %10)
          to label %178 unwind label %182

178:                                              ; preds = %170
  %179 = extractvalue { ptr, ptr } %177, 0
  store ptr %179, ptr %13, align 8
  %180 = extractvalue { ptr, ptr } %177, 1
  store ptr %180, ptr %68, align 8
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %14) #11
  %.cast = ptrtoint ptr %179 to i64
  store i64 %.cast, ptr %14, align 8
  %181 = call noundef zeroext i1 @_ZNSt8__detailneERKNS_19_Node_iterator_baseISt4pairIKmiELb0EEES6_(ptr noundef nonnull align 8 dereferenceable(8) %14, ptr noundef nonnull align 8 dereferenceable(8) %68) #11
  br i1 %181, label %.lr.ph222, label %.loopexit

182:                                              ; preds = %170
  %183 = landingpad { ptr, i32 }
          cleanup
  br label %196

.lr.ph222:                                        ; preds = %178, %193
  %184 = call noundef ptr @_ZNKSt8__detail14_Node_iteratorISt4pairIKmiELb0ELb0EEptEv(ptr noundef nonnull align 8 dereferenceable(8) %14) #11
  %185 = getelementptr inbounds i8, ptr %184, i64 8
  %186 = load i32, ptr %185, align 8, !tbaa !67
  %187 = load i32, ptr %7, align 4, !tbaa !56
  %188 = icmp eq i32 %186, %187
  br i1 %188, label %189, label %193

189:                                              ; preds = %.lr.ph222
  %.sroa.075.0.copyload = load ptr, ptr %14, align 8
  %190 = invoke ptr @_ZNSt18unordered_multimapImiSt4hashImESt8equal_toImESaISt4pairIKmiEEE5eraseENSt8__detail14_Node_iteratorIS6_Lb0ELb0EEE(ptr noundef nonnull align 8 dereferenceable(56) %67, ptr %.sroa.075.0.copyload)
          to label %.loopexit unwind label %191

191:                                              ; preds = %189
  %192 = landingpad { ptr, i32 }
          cleanup
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %14) #11
  br label %196

193:                                              ; preds = %.lr.ph222
  %194 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt8__detail14_Node_iteratorISt4pairIKmiELb0ELb0EEppEv(ptr noundef nonnull align 8 dereferenceable(8) %14) #11
  %195 = call noundef zeroext i1 @_ZNSt8__detailneERKNS_19_Node_iterator_baseISt4pairIKmiELb0EEES6_(ptr noundef nonnull align 8 dereferenceable(8) %14, ptr noundef nonnull align 8 dereferenceable(8) %68) #11
  br i1 %195, label %.lr.ph222, label %.loopexit, !llvm.loop !69

.loopexit:                                        ; preds = %193, %178, %189
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %14) #11
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %13) #11
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %10) #11
  br label %270

196:                                              ; preds = %191, %182
  %.pn191 = phi { ptr, i32 } [ %192, %191 ], [ %183, %182 ]
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %13) #11
  br label %197

197:                                              ; preds = %196, %159, %151
  %.pn193 = phi { ptr, i32 } [ %160, %159 ], [ %.pn191, %196 ], [ %152, %151 ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %10) #11
  br label %277

198:                                              ; preds = %126
  br i1 %102, label %199, label %204

199:                                              ; preds = %198
  %200 = load i32, ptr %7, align 4, !tbaa !56
  %201 = sext i32 %200 to i64
  %202 = call noundef nonnull align 2 dereferenceable(2) ptr @_ZNSt6vectorIsSaIsEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %59, i64 noundef %201) #11
  %203 = invoke { ptr, i8 } @_ZNSt3setISt4pairIiiESt4lessIS1_ESaIS1_EE7emplaceIJRsRiEEES0_ISt23_Rb_tree_const_iteratorIS1_EbEDpOT_(ptr noundef nonnull align 8 dereferenceable(48) %62, ptr noundef nonnull align 2 dereferenceable(2) %202, ptr noundef nonnull align 4 dereferenceable(4) %7)
          to label %204 unwind label %120

204:                                              ; preds = %199, %198
  %205 = load i32, ptr %7, align 4, !tbaa !56
  %206 = sext i32 %205 to i64
  %207 = call noundef nonnull align 2 dereferenceable(2) ptr @_ZNSt6vectorIsSaIsEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %59, i64 noundef %206) #11
  %208 = load i16, ptr %207, align 2, !tbaa !60
  %209 = sext i16 %208 to i64
  %210 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNSt6vectorIiSaIiEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %61, i64 noundef %209) #11
  %211 = load i32, ptr %210, align 4, !tbaa !56
  %212 = add nsw i32 %211, 1
  store i32 %212, ptr %210, align 4, !tbaa !56
  br label %270

213:                                              ; preds = %124
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %15) #11
  call void @_ZN12HighsCDoubleC2Ed(ptr noundef nonnull align 8 dereferenceable(16) %15, double noundef 0.000000e+00)
  br i1 %.not186213, label %._crit_edge228, label %.lr.ph227.preheader

.lr.ph227.preheader:                              ; preds = %213
  %214 = sext i32 %84 to i64
  br label %.lr.ph227

._crit_edge228:                                   ; preds = %253, %213
  %.0165.lcssa = phi i32 [ 0, %213 ], [ %.1166, %253 ]
  %215 = load i32, ptr %7, align 4, !tbaa !56
  %216 = sext i32 %215 to i64
  %217 = call noundef nonnull align 2 dereferenceable(2) ptr @_ZNSt6vectorIsSaIsEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %59, i64 noundef %216) #11
  store i16 0, ptr %217, align 2, !tbaa !60
  %218 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNSt6vectorIiSaIiEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %61, i64 noundef 0) #11
  %219 = load i32, ptr %218, align 4, !tbaa !56
  %220 = add nsw i32 %219, 1
  store i32 %220, ptr %218, align 4, !tbaa !56
  br i1 %102, label %255, label %262

.lr.ph227:                                        ; preds = %.lr.ph227.preheader, %253
  %indvars.iv262 = phi i64 [ %214, %.lr.ph227.preheader ], [ %indvars.iv.next263, %253 ]
  %.0165225 = phi i32 [ 0, %.lr.ph227.preheader ], [ %.1166, %253 ]
  %221 = getelementptr inbounds i32, ptr %30, i64 %indvars.iv262
  %222 = load i32, ptr %221, align 4, !tbaa !56
  %223 = sext i32 %222 to i64
  %224 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNKSt6vectorIdSaIdEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %1, i64 noundef %223) #11
  %225 = load double, ptr %224, align 8, !tbaa !62
  %226 = getelementptr inbounds double, ptr %31, i64 %indvars.iv262
  %227 = load double, ptr %226, align 8, !tbaa !62
  %228 = fcmp ogt double %227, 0.000000e+00
  br i1 %228, label %229, label %242

229:                                              ; preds = %.lr.ph227
  %230 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt6vectorIdSaIdEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %70, i64 noundef %223) #11
  %231 = load double, ptr %230, align 8, !tbaa !62
  %232 = fadd double %231, %4
  %233 = fcmp ogt double %225, %232
  br i1 %233, label %234, label %253

234:                                              ; preds = %229
  %235 = load double, ptr %226, align 8, !tbaa !62
  %236 = fmul double %235, %235
  %237 = invoke noundef nonnull align 8 dereferenceable(16) ptr @_ZN12HighsCDoublepLEd(ptr noundef nonnull align 8 dereferenceable(16) %15, double noundef %236)
          to label %238 unwind label %240

238:                                              ; preds = %234
  %239 = add nsw i32 %.0165225, 1
  br label %253

240:                                              ; preds = %247, %234
  %241 = landingpad { ptr, i32 }
          cleanup
  br label %276

242:                                              ; preds = %.lr.ph227
  %243 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt6vectorIdSaIdEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %69, i64 noundef %223) #11
  %244 = load double, ptr %243, align 8, !tbaa !62
  %245 = fsub double %244, %4
  %246 = fcmp olt double %225, %245
  br i1 %246, label %247, label %253

247:                                              ; preds = %242
  %248 = load double, ptr %226, align 8, !tbaa !62
  %249 = fmul double %248, %248
  %250 = invoke noundef nonnull align 8 dereferenceable(16) ptr @_ZN12HighsCDoublepLEd(ptr noundef nonnull align 8 dereferenceable(16) %15, double noundef %249)
          to label %251 unwind label %240

251:                                              ; preds = %247
  %252 = add nsw i32 %.0165225, 1
  br label %253

253:                                              ; preds = %242, %251, %229, %238
  %.1166 = phi i32 [ %239, %238 ], [ %.0165225, %229 ], [ %252, %251 ], [ %.0165225, %242 ]
  %indvars.iv.next263 = add nsw i64 %indvars.iv262, 1
  %254 = trunc nsw i64 %indvars.iv.next263 to i32
  %.not187 = icmp eq i32 %86, %254
  br i1 %.not187, label %._crit_edge228, label %.lr.ph227, !llvm.loop !70

255:                                              ; preds = %._crit_edge228
  %256 = load i32, ptr %7, align 4, !tbaa !56
  %257 = sext i32 %256 to i64
  %258 = call noundef nonnull align 2 dereferenceable(2) ptr @_ZNSt6vectorIsSaIsEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %59, i64 noundef %257) #11
  %259 = invoke { ptr, i8 } @_ZNSt3setISt4pairIiiESt4lessIS1_ESaIS1_EE7emplaceIJRsRiEEES0_ISt23_Rb_tree_const_iteratorIS1_EbEDpOT_(ptr noundef nonnull align 8 dereferenceable(48) %62, ptr noundef nonnull align 2 dereferenceable(2) %258, ptr noundef nonnull align 4 dereferenceable(4) %7)
          to label %262 unwind label %260

260:                                              ; preds = %255
  %261 = landingpad { ptr, i32 }
          cleanup
  br label %276

262:                                              ; preds = %255, %._crit_edge228
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %16) #11
  %263 = sitofp i32 %.0165.lcssa to double
  %264 = call noundef double @_ZNK12HighsCDoublecvdEv(ptr noundef nonnull align 8 dereferenceable(16) %15)
  %265 = call double @sqrt(double noundef %264) #11
  %266 = fmul double %265, %263
  %267 = fdiv double %.0163.lcssa, %266
  store double %267, ptr %16, align 8, !tbaa !62
  %268 = invoke noundef nonnull align 8 dereferenceable(12) ptr @_ZNSt6vectorISt4pairIdiESaIS1_EE12emplace_backIJRdRiEEERS1_DpOT_(ptr noundef nonnull align 8 dereferenceable(24) %6, ptr noundef nonnull align 8 dereferenceable(8) %16, ptr noundef nonnull align 4 dereferenceable(4) %7)
          to label %269 unwind label %274

269:                                              ; preds = %262
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %16) #11
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %15) #11
  br label %270

270:                                              ; preds = %269, %204, %.loopexit, %77
  %271 = load i32, ptr %7, align 4, !tbaa !56
  %272 = add nsw i32 %271, 1
  store i32 %272, ptr %7, align 4, !tbaa !56
  %273 = icmp slt i32 %272, %29
  br i1 %273, label %77, label %._crit_edge232, !llvm.loop !71

274:                                              ; preds = %262
  %275 = landingpad { ptr, i32 }
          cleanup
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %16) #11
  br label %276

276:                                              ; preds = %274, %260, %240
  %.pn188 = phi { ptr, i32 } [ %241, %240 ], [ %275, %274 ], [ %261, %260 ]
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %15) #11
  br label %277

277:                                              ; preds = %276, %197, %122, %120
  %.pn193.pn = phi { ptr, i32 } [ %.pn193, %197 ], [ %121, %120 ], [ %.pn188, %276 ], [ %123, %122 ]
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %7) #11
  br label %452

278:                                              ; preds = %._crit_edge232
  call void @__assert_fail(ptr noundef nonnull @.str.51, ptr noundef nonnull @.str.52, i32 noundef 272, ptr noundef nonnull @__PRETTY_FUNCTION__._ZN12HighsCutPool8separateERKSt6vectorIdSaIdEER11HighsDomainR11HighsCutSetd) #10
  unreachable

279:                                              ; preds = %._crit_edge232
  %280 = call noundef zeroext i1 @_ZNKSt6vectorISt4pairIdiESaIS1_EE5emptyEv(ptr noundef nonnull align 8 dereferenceable(24) %6) #11
  br i1 %280, label %450, label %281

281:                                              ; preds = %279
  %282 = call ptr @_ZNSt6vectorISt4pairIdiESaIS1_EE5beginEv(ptr noundef nonnull align 8 dereferenceable(24) %6) #11
  %283 = call ptr @_ZNSt6vectorISt4pairIdiESaIS1_EE3endEv(ptr noundef nonnull align 8 dereferenceable(24) %6) #11
  invoke void @"_Z7pdqsortIN9__gnu_cxx17__normal_iteratorIPSt4pairIdiESt6vectorIS3_SaIS3_EEEEZN12HighsCutPool8separateERKS5_IdSaIdEER11HighsDomainR11HighsCutSetdE3$_0EvT_SJ_T0_"(ptr %282, ptr %283, ptr nonnull %6)
          to label %284 unwind label %55

284:                                              ; preds = %281
  %285 = call noundef nonnull align 8 dereferenceable(12) ptr @_ZNSt6vectorISt4pairIdiESaIS1_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %6, i64 noundef 0) #11
  %286 = getelementptr inbounds i8, ptr %0, i64 584
  %287 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZSt3maxIdERKT_S2_S2_(ptr noundef nonnull align 8 dereferenceable(8) %285, ptr noundef nonnull align 8 dereferenceable(8) %286)
  %288 = load double, ptr %287, align 8, !tbaa !62
  store double %288, ptr %286, align 8, !tbaa !72
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %17) #11
  %289 = getelementptr inbounds i8, ptr %0, i64 592
  %290 = load double, ptr %289, align 8, !tbaa !73
  %291 = fmul double %288, %290
  store double %291, ptr %17, align 8, !tbaa !62
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %18) #11
  %292 = call ptr @_ZNSt6vectorISt4pairIdiESaIS1_EE5beginEv(ptr noundef nonnull align 8 dereferenceable(24) %6) #11
  %293 = call ptr @_ZNSt6vectorISt4pairIdiESaIS1_EE3endEv(ptr noundef nonnull align 8 dereferenceable(24) %6) #11
  %294 = invoke ptr @"_ZSt11upper_boundIN9__gnu_cxx17__normal_iteratorIPSt4pairIdiESt6vectorIS3_SaIS3_EEEEdZN12HighsCutPool8separateERKS5_IdSaIdEER11HighsDomainR11HighsCutSetdE3$_1ET_SJ_SJ_RKT0_T1_"(ptr %292, ptr %293, ptr noundef nonnull align 8 dereferenceable(8) %17)
          to label %295 unwind label %312

295:                                              ; preds = %284
  store ptr %294, ptr %18, align 8
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %19) #11
  %296 = call ptr @_ZNSt6vectorISt4pairIdiESaIS1_EE5beginEv(ptr noundef nonnull align 8 dereferenceable(24) %6) #11
  store ptr %296, ptr %19, align 8
  %297 = call noundef i64 @_ZN9__gnu_cxxmiIPSt4pairIdiESt6vectorIS2_SaIS2_EEEENS_17__normal_iteratorIT_T0_E15difference_typeERKSA_SD_(ptr noundef nonnull align 8 dereferenceable(8) %18, ptr noundef nonnull align 8 dereferenceable(8) %19) #11
  %298 = trunc i64 %297 to i32
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %19) #11
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %18) #11
  %299 = call noundef i64 @_ZNKSt6vectorISt4pairIdiESaIS1_EE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24) %6) #11
  %300 = udiv i64 %299, 20
  %301 = trunc i64 %300 to i32
  %302 = call noundef i64 @_ZNKSt6vectorISt4pairIdiESaIS1_EE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24) %6) #11
  %303 = trunc i64 %302 to i32
  %304 = add i32 %303, -1
  %.not = icmp sgt i32 %298, %301
  br i1 %.not, label %314, label %305

305:                                              ; preds = %295
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %20) #11
  %306 = call noundef i64 @_ZNKSt6vectorISt4pairIdiESaIS1_EE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24) %6) #11
  %307 = lshr i64 %306, 1
  store i64 %307, ptr %20, align 8, !tbaa !64
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %21) #11
  store i64 1, ptr %21, align 8, !tbaa !64
  %308 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZSt3maxImERKT_S2_S2_(ptr noundef nonnull align 8 dereferenceable(8) %20, ptr noundef nonnull align 8 dereferenceable(8) %21)
  %309 = load i64, ptr %308, align 8, !tbaa !64
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %21) #11
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %20) #11
  %310 = shl i64 %309, 32
  %sext = add i64 %310, -4294967296
  %311 = ashr exact i64 %sext, 32
  br label %.sink.split

312:                                              ; preds = %284
  %313 = landingpad { ptr, i32 }
          cleanup
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %18) #11
  br label %451

314:                                              ; preds = %295
  %315 = icmp slt i32 %304, %298
  br i1 %315, label %316, label %322

316:                                              ; preds = %314
  %317 = sext i32 %304 to i64
  br label %.sink.split

.sink.split:                                      ; preds = %305, %316
  %.sink279 = phi i64 [ %317, %316 ], [ %311, %305 ]
  %.0171.ph = phi i64 [ %297, %316 ], [ %309, %305 ]
  %318 = call noundef nonnull align 8 dereferenceable(12) ptr @_ZNSt6vectorISt4pairIdiESaIS1_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %6, i64 noundef %.sink279) #11
  %319 = load double, ptr %318, align 8, !tbaa !74
  %320 = load double, ptr %286, align 8, !tbaa !72
  %321 = fdiv double %319, %320
  store double %321, ptr %289, align 8, !tbaa !73
  br label %322

322:                                              ; preds = %.sink.split, %314
  %.0171 = phi i64 [ %297, %314 ], [ %.0171.ph, %.sink.split ]
  %sext179 = shl i64 %.0171, 32
  %323 = ashr exact i64 %sext179, 32
  invoke void @_ZNSt6vectorISt4pairIdiESaIS1_EE6resizeEm(ptr noundef nonnull align 8 dereferenceable(24) %6, i64 noundef %323)
          to label %324 unwind label %327

324:                                              ; preds = %322
  %325 = call noundef zeroext i1 @_ZNK11HighsCutSet5emptyEv(ptr noundef nonnull align 8 dereferenceable(144) %3)
  br i1 %325, label %331, label %326

326:                                              ; preds = %324
  call void @__assert_fail(ptr noundef nonnull @.str.53, ptr noundef nonnull @.str.52, i32 noundef 316, ptr noundef nonnull @__PRETTY_FUNCTION__._ZN12HighsCutPool8separateERKSt6vectorIdSaIdEER11HighsDomainR11HighsCutSetd) #10
  unreachable

327:                                              ; preds = %322
  %328 = landingpad { ptr, i32 }
          cleanup
  br label %451

329:                                              ; preds = %._crit_edge238
  %330 = landingpad { ptr, i32 }
          cleanup
  br label %451

331:                                              ; preds = %324
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %22) #11
  %332 = call ptr @_ZNSt6vectorISt4pairIdiESaIS1_EE5beginEv(ptr noundef nonnull align 8 dereferenceable(24) %6) #11
  store ptr %332, ptr %22, align 8
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %23) #11
  %333 = call ptr @_ZNSt6vectorISt4pairIdiESaIS1_EE3endEv(ptr noundef nonnull align 8 dereferenceable(24) %6) #11
  store ptr %333, ptr %23, align 8
  %334 = call noundef zeroext i1 @_ZN9__gnu_cxxneIPSt4pairIdiESt6vectorIS2_SaIS2_EEEEbRKNS_17__normal_iteratorIT_T0_EESC_(ptr noundef nonnull align 8 dereferenceable(8) %22, ptr noundef nonnull align 8 dereferenceable(8) %23) #11
  br i1 %334, label %.lr.ph237, label %._crit_edge238

.lr.ph237:                                        ; preds = %331
  %335 = getelementptr inbounds i8, ptr %0, i64 632
  %336 = getelementptr inbounds i8, ptr %0, i64 360
  br label %337

._crit_edge238:                                   ; preds = %396, %331
  %.0172.lcssa = phi i32 [ 0, %331 ], [ %.1173, %396 ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %23) #11
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %22) #11
  invoke void @_ZN11HighsCutSet6resizeEi(ptr noundef nonnull align 8 dereferenceable(144) %3, i32 noundef %.0172.lcssa)
          to label %400 unwind label %329

337:                                              ; preds = %.lr.ph237, %396
  %.0172235 = phi i32 [ 0, %.lr.ph237 ], [ %.1173, %396 ]
  %338 = call noundef nonnull align 8 dereferenceable(12) ptr @_ZNK9__gnu_cxx17__normal_iteratorIPSt4pairIdiESt6vectorIS2_SaIS2_EEEdeEv(ptr noundef nonnull align 8 dereferenceable(8) %22) #11
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %24) #11
  %339 = call ptr @_ZNSt6vectorIiSaIiEE5beginEv(ptr noundef nonnull align 8 dereferenceable(24) %3) #11
  store ptr %339, ptr %24, align 8
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %25) #11
  %340 = call ptr @_ZNSt6vectorIiSaIiEE3endEv(ptr noundef nonnull align 8 dereferenceable(24) %3) #11
  store ptr %340, ptr %25, align 8
  %341 = call noundef zeroext i1 @_ZN9__gnu_cxxneIPiSt6vectorIiSaIiEEEEbRKNS_17__normal_iteratorIT_T0_EESA_(ptr noundef nonnull align 8 dereferenceable(8) %24, ptr noundef nonnull align 8 dereferenceable(8) %25) #11
  br i1 %341, label %.lr.ph234, label %.loopexit276

.lr.ph234:                                        ; preds = %337
  %342 = getelementptr inbounds i8, ptr %338, i64 8
  br label %343

343:                                              ; preds = %.lr.ph234, %352
  %344 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNK9__gnu_cxx17__normal_iteratorIPiSt6vectorIiSaIiEEEdeEv(ptr noundef nonnull align 8 dereferenceable(8) %24) #11
  %345 = load i32, ptr %344, align 4, !tbaa !56
  %346 = load i32, ptr %342, align 8, !tbaa !76
  %347 = invoke noundef double @_ZNK12HighsCutPool14getParallelismEii(ptr noundef nonnull align 8 dereferenceable(680) %0, i32 noundef %345, i32 noundef %346)
          to label %348 unwind label %350

348:                                              ; preds = %343
  %349 = fcmp ule double %347, 1.000000e-01
  br i1 %349, label %352, label %355

350:                                              ; preds = %343
  %351 = landingpad { ptr, i32 }
          cleanup
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %25) #11
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %24) #11
  br label %399

352:                                              ; preds = %348
  %353 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZN9__gnu_cxx17__normal_iteratorIPiSt6vectorIiSaIiEEEppEv(ptr noundef nonnull align 8 dereferenceable(8) %24) #11
  %354 = call noundef zeroext i1 @_ZN9__gnu_cxxneIPiSt6vectorIiSaIiEEEEbRKNS_17__normal_iteratorIT_T0_EESA_(ptr noundef nonnull align 8 dereferenceable(8) %24, ptr noundef nonnull align 8 dereferenceable(8) %25) #11
  br i1 %354, label %343, label %.loopexit276

355:                                              ; preds = %348
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %25) #11
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %24) #11
  br label %396

.loopexit276:                                     ; preds = %352, %337
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %25) #11
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %24) #11
  %356 = getelementptr inbounds i8, ptr %338, i64 8
  %357 = load i32, ptr %356, align 8, !tbaa !76
  %358 = sext i32 %357 to i64
  %359 = call noundef nonnull align 2 dereferenceable(2) ptr @_ZNSt6vectorIsSaIsEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %336, i64 noundef %358) #11
  %360 = load i16, ptr %359, align 2, !tbaa !60
  %361 = sext i16 %360 to i64
  %362 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNSt6vectorIiSaIiEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %335, i64 noundef %361) #11
  %363 = load i32, ptr %362, align 4, !tbaa !56
  %364 = add nsw i32 %363, -1
  store i32 %364, ptr %362, align 4, !tbaa !56
  %365 = load i32, ptr %39, align 8, !tbaa !55
  %366 = add nsw i32 %365, 1
  store i32 %366, ptr %39, align 8, !tbaa !55
  %367 = load i32, ptr %356, align 8, !tbaa !76
  %368 = call noundef zeroext i1 @_ZNK21HighsDynamicRowMatrix13columnsLinkedEi(ptr noundef nonnull align 8 dereferenceable(336) %0, i32 noundef %367)
  br i1 %368, label %369, label %385

369:                                              ; preds = %.loopexit276
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %26) #11
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %27) #11
  %370 = load i32, ptr %356, align 8, !tbaa !76
  %371 = sext i32 %370 to i64
  %372 = call noundef nonnull align 2 dereferenceable(2) ptr @_ZNSt6vectorIsSaIsEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %336, i64 noundef %371) #11
  %373 = invoke i64 @_ZSt9make_pairIRsRKiESt4pairINSt25__strip_reference_wrapperINSt5decayIT_E4typeEE6__typeENS4_INS5_IT0_E4typeEE6__typeEEOS6_OSB_(ptr noundef nonnull align 2 dereferenceable(2) %372, ptr noundef nonnull align 4 dereferenceable(4) %356)
          to label %374 unwind label %381

374:                                              ; preds = %369
  store i64 %373, ptr %27, align 8
  call void @_ZNSt4pairIiiEC2IsiTnNSt9enable_ifIXaaclsr6_PCCFPIT_T0_EE22_MoveConstructiblePairIS3_S4_EEclsr6_PCCFPIS3_S4_EE30_ImplicitlyMoveConvertiblePairIS3_S4_EEEbE4typeELb1EEEOS_IS3_S4_E(ptr noundef nonnull align 4 dereferenceable(8) %26, ptr noundef nonnull align 4 dereferenceable(8) %27)
  %375 = invoke noundef i64 @_ZNSt3setISt4pairIiiESt4lessIS1_ESaIS1_EE5eraseERKS1_(ptr noundef nonnull align 8 dereferenceable(48) %71, ptr noundef nonnull align 4 dereferenceable(8) %26)
          to label %376 unwind label %381

376:                                              ; preds = %374
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %27) #11
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %26) #11
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %28) #11
  store i32 -1, ptr %28, align 4, !tbaa !56
  %377 = invoke { ptr, i8 } @_ZNSt3setISt4pairIiiESt4lessIS1_ESaIS1_EE7emplaceIJiRKiEEES0_ISt23_Rb_tree_const_iteratorIS1_EbEDpOT_(ptr noundef nonnull align 8 dereferenceable(48) %71, ptr noundef nonnull align 4 dereferenceable(4) %28, ptr noundef nonnull align 4 dereferenceable(4) %356)
          to label %378 unwind label %383

378:                                              ; preds = %376
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %28) #11
  br label %385

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

381:                                              ; preds = %374, %369
  %382 = landingpad { ptr, i32 }
          cleanup
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %27) #11
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %26) #11
  br label %399

383:                                              ; preds = %376
  %384 = landingpad { ptr, i32 }
          cleanup
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %28) #11
  br label %399

385:                                              ; preds = %378, %.loopexit276
  %386 = load i32, ptr %356, align 8, !tbaa !76
  %387 = sext i32 %386 to i64
  %388 = call noundef nonnull align 2 dereferenceable(2) ptr @_ZNSt6vectorIsSaIsEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %336, i64 noundef %387) #11
  store i16 -1, ptr %388, align 2, !tbaa !60
  invoke void @_ZNSt6vectorIiSaIiEE9push_backERKi(ptr noundef nonnull align 8 dereferenceable(24) %3, ptr noundef nonnull align 4 dereferenceable(4) %356)
          to label %389 unwind label %379

389:                                              ; preds = %385
  %390 = load i32, ptr %356, align 8, !tbaa !76
  %391 = call noundef i32 @_ZNK21HighsDynamicRowMatrix9getRowEndEi(ptr noundef nonnull align 8 dereferenceable(336) %0, i32 noundef %390)
  %392 = load i32, ptr %356, align 8, !tbaa !76
  %393 = call noundef i32 @_ZNK21HighsDynamicRowMatrix11getRowStartEi(ptr noundef nonnull align 8 dereferenceable(336) %0, i32 noundef %392)
  %394 = add i32 %391, %.0172235
  %395 = sub i32 %394, %393
  br label %396

396:                                              ; preds = %355, %389
  %.1173 = phi i32 [ %395, %389 ], [ %.0172235, %355 ]
  %397 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZN9__gnu_cxx17__normal_iteratorIPSt4pairIdiESt6vectorIS2_SaIS2_EEEppEv(ptr noundef nonnull align 8 dereferenceable(8) %22) #11
  %398 = call noundef zeroext i1 @_ZN9__gnu_cxxneIPSt4pairIdiESt6vectorIS2_SaIS2_EEEEbRKNS_17__normal_iteratorIT_T0_EESC_(ptr noundef nonnull align 8 dereferenceable(8) %22, ptr noundef nonnull align 8 dereferenceable(8) %23) #11
  br i1 %398, label %337, label %._crit_edge238

399:                                              ; preds = %383, %381, %379, %350
  %.pn = phi { ptr, i32 } [ %380, %379 ], [ %384, %383 ], [ %382, %381 ], [ %351, %350 ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %23) #11
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %22) #11
  br label %451

400:                                              ; preds = %._crit_edge238
  %401 = getelementptr inbounds i8, ptr %3, i64 72
  %402 = call noundef i64 @_ZNKSt6vectorIdSaIdEE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24) %401) #11
  %403 = trunc i64 %402 to i32
  %404 = icmp eq i32 %.0172.lcssa, %403
  br i1 %404, label %406, label %405

405:                                              ; preds = %400
  call void @__assert_fail(ptr noundef nonnull @.str.54, ptr noundef nonnull @.str.52, i32 noundef 343, ptr noundef nonnull @__PRETTY_FUNCTION__._ZN12HighsCutPool8separateERKSt6vectorIdSaIdEER11HighsDomainR11HighsCutSetd) #10
  unreachable

406:                                              ; preds = %400
  %407 = getelementptr inbounds i8, ptr %3, i64 48
  %408 = call noundef i64 @_ZNKSt6vectorIiSaIiEE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24) %407) #11
  %409 = trunc i64 %408 to i32
  %410 = icmp eq i32 %.0172.lcssa, %409
  br i1 %410, label %.preheader, label %415

.preheader:                                       ; preds = %406
  %411 = call noundef i32 @_ZNK11HighsCutSet7numCutsEv(ptr noundef nonnull align 8 dereferenceable(144) %3)
  %.not180247 = icmp eq i32 %411, 0
  br i1 %.not180247, label %._crit_edge251, label %.lr.ph250

.lr.ph250:                                        ; preds = %.preheader
  %412 = getelementptr inbounds i8, ptr %3, i64 24
  %413 = getelementptr inbounds i8, ptr %0, i64 336
  %414 = getelementptr inbounds i8, ptr %3, i64 120
  br label %420

415:                                              ; preds = %406
  call void @__assert_fail(ptr noundef nonnull @.str.55, ptr noundef nonnull @.str.52, i32 noundef 344, ptr noundef nonnull @__PRETTY_FUNCTION__._ZN12HighsCutPool8separateERKSt6vectorIdSaIdEER11HighsDomainR11HighsCutSetd) #10
  unreachable

._crit_edge251:                                   ; preds = %._crit_edge245, %.preheader
  %.0150.lcssa = phi i32 [ 0, %.preheader ], [ %.1151.lcssa, %._crit_edge245 ]
  %416 = call noundef i64 @_ZNKSt3setISt4pairIiiESt4lessIS1_ESaIS1_EE4sizeEv(ptr noundef nonnull align 8 dereferenceable(48) %71) #11
  %417 = trunc i64 %416 to i32
  %418 = load i32, ptr %74, align 8, !tbaa !59
  %419 = icmp eq i32 %418, %417
  br i1 %419, label %445, label %444

420:                                              ; preds = %.lr.ph250, %._crit_edge245
  %indvars.iv272 = phi i64 [ 0, %.lr.ph250 ], [ %indvars.iv.next273, %._crit_edge245 ]
  %.0150248 = phi i32 [ 0, %.lr.ph250 ], [ %.1151.lcssa, %._crit_edge245 ]
  %421 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNSt6vectorIiSaIiEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %412, i64 noundef %indvars.iv272) #11
  store i32 %.0150248, ptr %421, align 4, !tbaa !56
  %422 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNSt6vectorIiSaIiEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %3, i64 noundef %indvars.iv272) #11
  %423 = load i32, ptr %422, align 4, !tbaa !56
  %424 = call noundef i32 @_ZNK21HighsDynamicRowMatrix11getRowStartEi(ptr noundef nonnull align 8 dereferenceable(336) %0, i32 noundef %423)
  %425 = call noundef i32 @_ZNK21HighsDynamicRowMatrix9getRowEndEi(ptr noundef nonnull align 8 dereferenceable(336) %0, i32 noundef %423)
  %426 = sext i32 %423 to i64
  %427 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt6vectorIdSaIdEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %413, i64 noundef %426) #11
  %428 = load double, ptr %427, align 8, !tbaa !62
  %429 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt6vectorIdSaIdEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %414, i64 noundef %indvars.iv272) #11
  store double %428, ptr %429, align 8, !tbaa !62
  %.not181240 = icmp eq i32 %424, %425
  br i1 %.not181240, label %._crit_edge245, label %.lr.ph244.preheader

.lr.ph244.preheader:                              ; preds = %420
  %430 = sext i32 %424 to i64
  %431 = sext i32 %.0150248 to i64
  %smax = call i32 @llvm.smax.i32(i32 %.0150248, i32 %.0172.lcssa)
  %wide.trip.count = sext i32 %smax to i64
  br label %.lr.ph244

._crit_edge245.loopexit:                          ; preds = %436
  %432 = trunc nsw i64 %indvars.iv.next268 to i32
  br label %._crit_edge245

._crit_edge245:                                   ; preds = %._crit_edge245.loopexit, %420
  %.1151.lcssa = phi i32 [ %.0150248, %420 ], [ %432, %._crit_edge245.loopexit ]
  %indvars.iv.next273 = add nuw nsw i64 %indvars.iv272, 1
  %433 = call noundef i32 @_ZNK11HighsCutSet7numCutsEv(ptr noundef nonnull align 8 dereferenceable(144) %3)
  %434 = zext i32 %433 to i64
  %.not180 = icmp eq i64 %indvars.iv.next273, %434
  br i1 %.not180, label %._crit_edge251, label %420, !llvm.loop !77

.lr.ph244:                                        ; preds = %.lr.ph244.preheader, %436
  %indvars.iv267 = phi i64 [ %431, %.lr.ph244.preheader ], [ %indvars.iv.next268, %436 ]
  %indvars.iv265 = phi i64 [ %430, %.lr.ph244.preheader ], [ %indvars.iv.next266, %436 ]
  %exitcond.not = icmp eq i64 %indvars.iv267, %wide.trip.count
  br i1 %exitcond.not, label %435, label %436

435:                                              ; preds = %.lr.ph244
  call void @__assert_fail(ptr noundef nonnull @.str.56, ptr noundef nonnull @.str.52, i32 noundef 355, ptr noundef nonnull @__PRETTY_FUNCTION__._ZN12HighsCutPool8separateERKSt6vectorIdSaIdEER11HighsDomainR11HighsCutSetd) #10
  unreachable

436:                                              ; preds = %.lr.ph244
  %437 = getelementptr inbounds double, ptr %31, i64 %indvars.iv265
  %438 = load double, ptr %437, align 8, !tbaa !62
  %439 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt6vectorIdSaIdEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %401, i64 noundef %indvars.iv267) #11
  store double %438, ptr %439, align 8, !tbaa !62
  %440 = getelementptr inbounds i32, ptr %30, i64 %indvars.iv265
  %441 = load i32, ptr %440, align 4, !tbaa !56
  %442 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNSt6vectorIiSaIiEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %407, i64 noundef %indvars.iv267) #11
  store i32 %441, ptr %442, align 4, !tbaa !56
  %indvars.iv.next268 = add nsw i64 %indvars.iv267, 1
  %indvars.iv.next266 = add nsw i64 %indvars.iv265, 1
  %443 = trunc nsw i64 %indvars.iv.next266 to i32
  %.not181 = icmp eq i32 %425, %443
  br i1 %.not181, label %._crit_edge245.loopexit, label %.lr.ph244, !llvm.loop !78

444:                                              ; preds = %._crit_edge251
  call void @__assert_fail(ptr noundef nonnull @.str.51, ptr noundef nonnull @.str.52, i32 noundef 362, ptr noundef nonnull @__PRETTY_FUNCTION__._ZN12HighsCutPool8separateERKSt6vectorIdSaIdEER11HighsDomainR11HighsCutSetd) #10
  unreachable

445:                                              ; preds = %._crit_edge251
  %446 = getelementptr inbounds i8, ptr %3, i64 24
  %447 = call noundef i32 @_ZNK11HighsCutSet7numCutsEv(ptr noundef nonnull align 8 dereferenceable(144) %3)
  %448 = sext i32 %447 to i64
  %449 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNSt6vectorIiSaIiEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %446, i64 noundef %448) #11
  store i32 %.0150.lcssa, ptr %449, align 4, !tbaa !56
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %17) #11
  br label %450

450:                                              ; preds = %279, %445
  call void @_ZNSt6vectorISt4pairIdiESaIS1_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %6) #11
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %6) #11
  ret void

451:                                              ; preds = %327, %399, %329, %312
  %.pn.pn.pn.pn = phi { ptr, i32 } [ %313, %312 ], [ %328, %327 ], [ %.pn, %399 ], [ %330, %329 ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %17) #11
  br label %452

452:                                              ; preds = %451, %277, %55
  %.pn193.pn.pn = phi { ptr, i32 } [ %.pn193.pn, %277 ], [ %.pn.pn.pn.pn, %451 ], [ %56, %55 ]
  call void @_ZNSt6vectorISt4pairIdiESaIS1_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %6) #11
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %6) #11
  resume { ptr, i32 } %.pn193.pn.pn
}

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

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

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

; Function Attrs: mustprogress uwtable
declare hidden noundef i64 @_ZL16compute_cut_hashPKiPKddi(ptr noundef, ptr noundef, double noundef, i32 noundef) local_unnamed_addr #1

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

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

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

; Function Attrs: mustprogress nofree nounwind willreturn memory(write)
declare double @sqrt(double noundef) local_unnamed_addr #7

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

; Function Attrs: mustprogress uwtable
declare dso_local noundef nonnull align 8 dereferenceable(12) ptr @_ZNSt6vectorISt4pairIdiESaIS1_EE12emplace_backIJRdRiEEERS1_DpOT_(ptr noundef nonnull align 8 dereferenceable(24), ptr noundef nonnull align 8 dereferenceable(8), ptr noundef nonnull align 4 dereferenceable(4)) local_unnamed_addr #1 align 2

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

; Function Attrs: inlinehint mustprogress uwtable
declare hidden void @"_Z7pdqsortIN9__gnu_cxx17__normal_iteratorIPSt4pairIdiESt6vectorIS3_SaIS3_EEEEZN12HighsCutPool8separateERKS5_IdSaIdEER11HighsDomainR11HighsCutSetdE3$_0EvT_SJ_T0_"(ptr, ptr, ptr) local_unnamed_addr #8

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

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

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

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

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

; Function Attrs: inlinehint mustprogress uwtable
declare hidden ptr @"_ZSt11upper_boundIN9__gnu_cxx17__normal_iteratorIPSt4pairIdiESt6vectorIS3_SaIS3_EEEEdZN12HighsCutPool8separateERKS5_IdSaIdEER11HighsDomainR11HighsCutSetdE3$_1ET_SJ_SJ_RKT0_T1_"(ptr, ptr, ptr noundef nonnull align 8 dereferenceable(8)) local_unnamed_addr #8

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

!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, !50, i64 608}
!6 = !{!"_ZTS12HighsCutPool", !7, i64 0, !19, i64 336, !36, i64 360, !19, i64 384, !19, i64 408, !23, i64 432, !40, i64 456, !45, i64 512, !27, i64 536, !49, i64 584, !49, i64 592, !49, i64 600, !50, i64 608, !50, i64 612, !50, i64 616, !50, i64 620, !50, i64 624, !15, i64 632, !51, i64 656}
!7 = !{!"_ZTS21HighsDynamicRowMatrix", !8, i64 0, !15, i64 24, !19, i64 48, !15, i64 72, !15, i64 96, !15, i64 120, !15, i64 144, !15, i64 168, !15, i64 192, !15, i64 216, !23, i64 240, !27, i64 264, !15, i64 312}
!8 = !{!"_ZTSSt6vectorISt4pairIiiESaIS1_EE", !9, i64 0}
!9 = !{!"_ZTSSt12_Vector_baseISt4pairIiiESaIS1_EE", !10, i64 0}
!10 = !{!"_ZTSNSt12_Vector_baseISt4pairIiiESaIS1_EE12_Vector_implE", !11, i64 0}
!11 = !{!"_ZTSNSt12_Vector_baseISt4pairIiiESaIS1_EE17_Vector_impl_dataE", !12, i64 0, !12, i64 8, !12, i64 16}
!12 = !{!"any pointer", !13, i64 0}
!13 = !{!"omnipotent char", !14, i64 0}
!14 = !{!"Simple C++ TBAA"}
!15 = !{!"_ZTSSt6vectorIiSaIiEE", !16, i64 0}
!16 = !{!"_ZTSSt12_Vector_baseIiSaIiEE", !17, i64 0}
!17 = !{!"_ZTSNSt12_Vector_baseIiSaIiEE12_Vector_implE", !18, i64 0}
!18 = !{!"_ZTSNSt12_Vector_baseIiSaIiEE17_Vector_impl_dataE", !12, i64 0, !12, i64 8, !12, i64 16}
!19 = !{!"_ZTSSt6vectorIdSaIdEE", !20, i64 0}
!20 = !{!"_ZTSSt12_Vector_baseIdSaIdEE", !21, i64 0}
!21 = !{!"_ZTSNSt12_Vector_baseIdSaIdEE12_Vector_implE", !22, i64 0}
!22 = !{!"_ZTSNSt12_Vector_baseIdSaIdEE17_Vector_impl_dataE", !12, i64 0, !12, i64 8, !12, i64 16}
!23 = !{!"_ZTSSt6vectorIhSaIhEE", !24, i64 0}
!24 = !{!"_ZTSSt12_Vector_baseIhSaIhEE", !25, i64 0}
!25 = !{!"_ZTSNSt12_Vector_baseIhSaIhEE12_Vector_implE", !26, i64 0}
!26 = !{!"_ZTSNSt12_Vector_baseIhSaIhEE17_Vector_impl_dataE", !12, i64 0, !12, i64 8, !12, i64 16}
!27 = !{!"_ZTSSt3setISt4pairIiiESt4lessIS1_ESaIS1_EE", !28, i64 0}
!28 = !{!"_ZTSSt8_Rb_treeISt4pairIiiES1_St9_IdentityIS1_ESt4lessIS1_ESaIS1_EE", !29, i64 0}
!29 = !{!"_ZTSNSt8_Rb_treeISt4pairIiiES1_St9_IdentityIS1_ESt4lessIS1_ESaIS1_EE13_Rb_tree_implIS5_Lb1EEE", !30, i64 0, !32, i64 8}
!30 = !{!"_ZTSSt20_Rb_tree_key_compareISt4lessISt4pairIiiEEE", !31, i64 0}
!31 = !{!"_ZTSSt4lessISt4pairIiiEE"}
!32 = !{!"_ZTSSt15_Rb_tree_header", !33, i64 0, !35, i64 32}
!33 = !{!"_ZTSSt18_Rb_tree_node_base", !34, i64 0, !12, i64 8, !12, i64 16, !12, i64 24}
!34 = !{!"_ZTSSt14_Rb_tree_color", !13, i64 0}
!35 = !{!"long", !13, i64 0}
!36 = !{!"_ZTSSt6vectorIsSaIsEE", !37, i64 0}
!37 = !{!"_ZTSSt12_Vector_baseIsSaIsEE", !38, i64 0}
!38 = !{!"_ZTSNSt12_Vector_baseIsSaIsEE12_Vector_implE", !39, i64 0}
!39 = !{!"_ZTSNSt12_Vector_baseIsSaIsEE17_Vector_impl_dataE", !12, i64 0, !12, i64 8, !12, i64 16}
!40 = !{!"_ZTSSt18unordered_multimapImiSt4hashImESt8equal_toImESaISt4pairIKmiEEE", !41, i64 0}
!41 = !{!"_ZTSSt10_HashtableImSt4pairIKmiESaIS2_ENSt8__detail10_Select1stESt8equal_toImESt4hashImENS4_18_Mod_range_hashingENS4_20_Default_ranged_hashENS4_20_Prime_rehash_policyENS4_17_Hashtable_traitsILb0ELb0ELb0EEEE", !12, i64 0, !35, i64 8, !42, i64 16, !35, i64 24, !43, i64 32, !12, i64 48}
!42 = !{!"_ZTSNSt8__detail15_Hash_node_baseE", !12, i64 0}
!43 = !{!"_ZTSNSt8__detail20_Prime_rehash_policyE", !44, i64 0, !35, i64 8}
!44 = !{!"float", !13, i64 0}
!45 = !{!"_ZTSSt6vectorIPN11HighsDomain18CutpoolPropagationESaIS2_EE", !46, i64 0}
!46 = !{!"_ZTSSt12_Vector_baseIPN11HighsDomain18CutpoolPropagationESaIS2_EE", !47, i64 0}
!47 = !{!"_ZTSNSt12_Vector_baseIPN11HighsDomain18CutpoolPropagationESaIS2_EE12_Vector_implE", !48, i64 0}
!48 = !{!"_ZTSNSt12_Vector_baseIPN11HighsDomain18CutpoolPropagationESaIS2_EE17_Vector_impl_dataE", !12, i64 0, !12, i64 8, !12, i64 16}
!49 = !{!"double", !13, i64 0}
!50 = !{!"int", !13, i64 0}
!51 = !{!"_ZTSSt6vectorISt4pairIidESaIS1_EE", !52, i64 0}
!52 = !{!"_ZTSSt12_Vector_baseISt4pairIidESaIS1_EE", !53, i64 0}
!53 = !{!"_ZTSNSt12_Vector_baseISt4pairIidESaIS1_EE12_Vector_implE", !54, i64 0}
!54 = !{!"_ZTSNSt12_Vector_baseISt4pairIidESaIS1_EE17_Vector_impl_dataE", !12, i64 0, !12, i64 8, !12, i64 16}
!55 = !{!6, !50, i64 616}
!56 = !{!50, !50, i64 0}
!57 = distinct !{!57, !58}
!58 = !{!"llvm.loop.mustprogress"}
!59 = !{!6, !50, i64 624}
!60 = !{!61, !61, i64 0}
!61 = !{!"short", !13, i64 0}
!62 = !{!49, !49, i64 0}
!63 = distinct !{!63, !58}
!64 = !{!35, !35, i64 0}
!65 = !{!12, !12, i64 0}
!66 = !{!6, !50, i64 620}
!67 = !{!68, !50, i64 8}
!68 = !{!"_ZTSSt4pairIKmiE", !35, i64 0, !50, i64 8}
!69 = distinct !{!69, !58}
!70 = distinct !{!70, !58}
!71 = distinct !{!71, !58}
!72 = !{!6, !49, i64 584}
!73 = !{!6, !49, i64 592}
!74 = !{!75, !49, i64 0}
!75 = !{!"_ZTSSt4pairIdiE", !49, i64 0, !50, i64 8}
!76 = !{!75, !50, i64 8}
!77 = distinct !{!77, !58}
!78 = distinct !{!78, !58}


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