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

; 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.HighsCDouble = type { double, double }
%class.HighsCutGeneration = type { ptr, ptr, %class.HighsRandom, %"class.std::vector", %class.HighsCDouble, %class.HighsCDouble, %"class.std::vector.3", %"class.std::vector.3", %"class.std::vector.8", %"class.std::vector.8", double, double, ptr, ptr, %class.HighsCDouble, i8, i8, i32, double, %"class.std::vector", %"class.std::vector.3" }
%class.HighsRandom = type { i64 }
%"class.std::vector.8" = type { %"struct.std::_Vector_base.9" }
%"struct.std::_Vector_base.9" = 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::vector" = type { %"struct.std::_Vector_base" }
%"struct.std::_Vector_base" = 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.3" = type { %"struct.std::_Vector_base.4" }
%"struct.std::_Vector_base.4" = 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.HighsMipSolver = type { ptr, ptr, ptr, ptr, i32, %"class.std::vector.3", double, double, double, double, double, double, double, i64, i64, double, ptr, %"class.std::vector.62", i8, i32, i32, ptr, ptr, ptr, ptr, %"class.std::unique_ptr.182", %class.HighsMipAnalysis, %class.HighsTimer }
%"class.std::vector.62" = type { %"struct.std::_Vector_base.63" }
%"struct.std::_Vector_base.63" = type { %"struct.std::_Vector_base<HighsObjectiveSolution, std::allocator<HighsObjectiveSolution>>::_Vector_impl" }
%"struct.std::_Vector_base<HighsObjectiveSolution, std::allocator<HighsObjectiveSolution>>::_Vector_impl" = type { %"struct.std::_Vector_base<HighsObjectiveSolution, std::allocator<HighsObjectiveSolution>>::_Vector_impl_data" }
%"struct.std::_Vector_base<HighsObjectiveSolution, std::allocator<HighsObjectiveSolution>>::_Vector_impl_data" = type { ptr, ptr, ptr }
%"class.std::unique_ptr.182" = type { %"struct.std::__uniq_ptr_data.183" }
%"struct.std::__uniq_ptr_data.183" = type { %"class.std::__uniq_ptr_impl.184" }
%"class.std::__uniq_ptr_impl.184" = type { %"class.std::tuple.185" }
%"class.std::tuple.185" = type { %"struct.std::_Tuple_impl.186" }
%"struct.std::_Tuple_impl.186" = type { %"struct.std::_Head_base.189" }
%"struct.std::_Head_base.189" = type { ptr }
%class.HighsMipAnalysis = type { ptr, %"class.std::__cxx11::basic_string", %struct.HighsTimerClock, i8, %"class.std::vector.3", %"class.std::vector.3" }
%"class.std::__cxx11::basic_string" = type { %"struct.std::__cxx11::basic_string<char>::_Alloc_hider", i64, %union.anon }
%"struct.std::__cxx11::basic_string<char>::_Alloc_hider" = type { ptr }
%union.anon = type { i64, [8 x i8] }
%struct.HighsTimerClock = type { ptr, %"class.std::vector" }
%class.HighsTimer = type <{ ptr, double, i32, [4 x i8], %"class.std::vector", %"class.std::vector.3", %"class.std::vector.3", %"class.std::vector.23", i32, i32, i32, [4 x i8] }>
%"class.std::vector.23" = type { %"struct.std::_Vector_base.24" }
%"struct.std::_Vector_base.24" = type { %"struct.std::_Vector_base<std::__cxx11::basic_string<char>, std::allocator<std::__cxx11::basic_string<char>>>::_Vector_impl" }
%"struct.std::_Vector_base<std::__cxx11::basic_string<char>, std::allocator<std::__cxx11::basic_string<char>>>::_Vector_impl" = type { %"struct.std::_Vector_base<std::__cxx11::basic_string<char>, std::allocator<std::__cxx11::basic_string<char>>>::_Vector_impl_data" }
%"struct.std::_Vector_base<std::__cxx11::basic_string<char>, std::allocator<std::__cxx11::basic_string<char>>>::_Vector_impl_data" = type { ptr, ptr, ptr }
%struct.HighsMipSolverData = type <{ ptr, %class.HighsCutPool, %class.HighsConflictPool, %class.HighsDomain, %class.HighsLpRelaxation, %class.HighsPseudocost, %class.HighsCliqueTable, %class.HighsImplications, %class.HighsPrimalHeuristics, %class.HighsRedcostFixing, %class.HighsObjectiveFunction, %"class.presolve::HighsPostsolveStack", i32, [4 x i8], %class.HighsLp, i8, i8, i8, i8, i32, i8, [3 x i8], i32, i32, i32, i32, [4 x i8], %"class.std::vector", %"class.std::vector", %"class.std::vector.3", %"class.std::vector.3", %"class.std::vector.8", %"class.std::vector", %"class.std::vector", %"class.std::vector", %"class.std::vector", %"class.std::vector", %"class.std::vector", %struct.HighsSymmetries, %"class.std::shared_ptr.318", double, double, double, i64, %"class.std::vector.3", %"class.std::vector.3", %"class.std::vector.3", double, %struct.HighsBasis, double, i32, i32, %class.HighsCDouble, double, double, double, i64, i64, i64, i64, i64, i64, i64, i64, i64, i64, i64, i64, i64, i64, i64, i64, i64, i32, [4 x i8], double, double, double, double, %"class.std::vector.3", %class.HighsNodeQueue, %struct.HighsPrimaDualIntegral, [8 x i8] }>
%class.HighsCutPool = type { %class.HighsDynamicRowMatrix, %"class.std::vector.3", %"class.std::vector.153", %"class.std::vector.3", %"class.std::vector.3", %"class.std::vector.8", %"class.std::unordered_multimap", %"class.std::vector.177", %"class.std::set", double, double, double, i32, i32, i32, i32, i32, %"class.std::vector", %"class.std::vector.135" }
%class.HighsDynamicRowMatrix = type { %"class.std::vector.145", %"class.std::vector", %"class.std::vector.3", %"class.std::vector", %"class.std::vector", %"class.std::vector", %"class.std::vector", %"class.std::vector", %"class.std::vector", %"class.std::vector", %"class.std::vector.8", %"class.std::set", %"class.std::vector" }
%"class.std::vector.145" = type { %"struct.std::_Vector_base.146" }
%"struct.std::_Vector_base.146" = 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.153" = type { %"struct.std::_Vector_base.154" }
%"struct.std::_Vector_base.154" = 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::unordered_multimap" = type { %"class.std::_Hashtable.158" }
%"class.std::_Hashtable.158" = 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.177" = type { %"struct.std::_Vector_base.178" }
%"struct.std::_Vector_base.178" = 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.135" = type { %"struct.std::_Vector_base.136" }
%"struct.std::_Vector_base.136" = 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 }
%class.HighsConflictPool = type { i32, i32, %"class.std::vector", %"class.std::vector.153", %"class.std::vector.190", %"class.std::vector.195", %"class.std::vector.145", %"class.std::set", %"class.std::vector", %"class.std::vector.200" }
%"class.std::vector.190" = type { %"struct.std::_Vector_base.191" }
%"struct.std::_Vector_base.191" = type { %"struct.std::_Vector_base<unsigned int, std::allocator<unsigned int>>::_Vector_impl" }
%"struct.std::_Vector_base<unsigned int, std::allocator<unsigned int>>::_Vector_impl" = type { %"struct.std::_Vector_base<unsigned int, std::allocator<unsigned int>>::_Vector_impl_data" }
%"struct.std::_Vector_base<unsigned int, std::allocator<unsigned int>>::_Vector_impl_data" = type { ptr, ptr, ptr }
%"class.std::vector.195" = type { %"struct.std::_Vector_base.196" }
%"struct.std::_Vector_base.196" = 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.200" = type { %"struct.std::_Vector_base.201" }
%"struct.std::_Vector_base.201" = type { %"struct.std::_Vector_base<HighsDomain::ConflictPoolPropagation *, std::allocator<HighsDomain::ConflictPoolPropagation *>>::_Vector_impl" }
%"struct.std::_Vector_base<HighsDomain::ConflictPoolPropagation *, std::allocator<HighsDomain::ConflictPoolPropagation *>>::_Vector_impl" = type { %"struct.std::_Vector_base<HighsDomain::ConflictPoolPropagation *, std::allocator<HighsDomain::ConflictPoolPropagation *>>::_Vector_impl_data" }
%"struct.std::_Vector_base<HighsDomain::ConflictPoolPropagation *, std::allocator<HighsDomain::ConflictPoolPropagation *>>::_Vector_impl_data" = type { ptr, ptr, ptr }
%class.HighsDomain = type { %"class.std::vector.8", %"class.std::vector", %"class.std::vector.145", %"class.std::vector.195", %"class.std::vector.205", %"class.std::vector.210", %"class.std::vector.140", %"class.std::vector.140", %"class.std::vector", %"class.std::vector", %"class.std::vector.3", %"class.std::vector.8", %"class.std::vector", %"struct.HighsDomain::ObjectivePropagation", ptr, %"class.std::deque", %"class.std::deque.228", i8, %"struct.HighsDomain::Reason", i32, %"class.std::vector", %"class.std::vector", %"class.std::vector", %class.HighsHashTable.234, i8, %"class.std::vector.3", %"class.std::vector.3" }
%"class.std::vector.205" = type { %"struct.std::_Vector_base.206" }
%"struct.std::_Vector_base.206" = 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.210" = type { %"struct.std::_Vector_base.211" }
%"struct.std::_Vector_base.211" = 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 }
%"class.std::vector.140" = type { %"struct.std::_Vector_base.141" }
%"struct.std::_Vector_base.141" = 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.215", %"class.std::vector.145", %"class.std::vector.3", %"class.std::vector.220" }
%"class.std::vector.215" = type { %"struct.std::_Vector_base.216" }
%"struct.std::_Vector_base.216" = 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.220" = type { %"struct.std::_Vector_base.221" }
%"struct.std::_Vector_base.221" = 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.228" = type { %"class.std::_Deque_base.229" }
%"class.std::_Deque_base.229" = 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.233", %"struct.std::_Deque_iterator.233" }
%"struct.std::_Deque_iterator.233" = type { ptr, ptr, ptr, ptr }
%"struct.HighsDomain::Reason" = type { i32, i32 }
%class.HighsHashTable.234 = type { %"class.std::unique_ptr.235", %"class.std::unique_ptr.92", i64, i64, i64 }
%"class.std::unique_ptr.235" = type { %"struct.std::__uniq_ptr_data.236" }
%"struct.std::__uniq_ptr_data.236" = type { %"class.std::__uniq_ptr_impl.237" }
%"class.std::__uniq_ptr_impl.237" = type { %"class.std::tuple.238" }
%"class.std::tuple.238" = type { %"struct.std::_Tuple_impl.239" }
%"struct.std::_Tuple_impl.239" = type { %"struct.std::_Head_base.242" }
%"struct.std::_Head_base.242" = type { ptr }
%"class.std::unique_ptr.92" = type { %"struct.std::__uniq_ptr_data.93" }
%"struct.std::__uniq_ptr_data.93" = type { %"class.std::__uniq_ptr_impl.94" }
%"class.std::__uniq_ptr_impl.94" = type { %"class.std::tuple.95" }
%"class.std::tuple.95" = type { %"struct.std::_Tuple_impl.96" }
%"struct.std::_Tuple_impl.96" = type { %"struct.std::_Head_base.99" }
%"struct.std::_Head_base.99" = type { ptr }
%class.HighsLpRelaxation = type <{ ptr, %class.Highs, %"class.std::vector.130", %"class.std::vector.135", %"class.std::vector.3", %"class.std::vector", %"class.std::vector.3", %"class.std::vector.3", %"class.std::vector.3", %class.HVectorBase, %class.HighsSparseVectorSum, double, i8, [7 x i8], double, %"class.std::shared_ptr", i8, [7 x i8], i64, i64, double, i64, i64, i32, i32, i8, [7 x i8] }>
%class.Highs = type { ptr, %struct.HighsSolution, %struct.HighsBasis, %struct.ICrashInfo, %class.HighsModel, %"class.std::vector.38", %class.HighsModel, %class.HighsTimer, %struct.HighsCallback, %class.HighsOptions, %class.HighsInfo, %struct.HighsRanging, %class.HighsIis, %"class.std::vector.62", i32, i32, i8, double, %"class.std::vector.3", %"class.std::vector.3", %class.HighsSparseMatrix, %class.HEkk, %struct.HighsPresolveLog, i32, i8, i32, i8, %class.PresolveComponent }
%struct.HighsSolution = type { i8, i8, %"class.std::vector.3", %"class.std::vector.3", %"class.std::vector.3", %"class.std::vector.3" }
%struct.ICrashInfo = type { i32, double, double, double, double, double, %"class.std::vector.18", %"class.std::vector.3", double }
%"class.std::vector.18" = type { %"struct.std::_Vector_base.19" }
%"struct.std::_Vector_base.19" = type { %"struct.std::_Vector_base<ICrashIterationDetails, std::allocator<ICrashIterationDetails>>::_Vector_impl" }
%"struct.std::_Vector_base<ICrashIterationDetails, std::allocator<ICrashIterationDetails>>::_Vector_impl" = type { %"struct.std::_Vector_base<ICrashIterationDetails, std::allocator<ICrashIterationDetails>>::_Vector_impl_data" }
%"struct.std::_Vector_base<ICrashIterationDetails, std::allocator<ICrashIterationDetails>>::_Vector_impl_data" = type { ptr, ptr, ptr }
%"class.std::vector.38" = type { %"struct.std::_Vector_base.39" }
%"struct.std::_Vector_base.39" = type { %"struct.std::_Vector_base<HighsLinearObjective, std::allocator<HighsLinearObjective>>::_Vector_impl" }
%"struct.std::_Vector_base<HighsLinearObjective, std::allocator<HighsLinearObjective>>::_Vector_impl" = type { %"struct.std::_Vector_base<HighsLinearObjective, std::allocator<HighsLinearObjective>>::_Vector_impl_data" }
%"struct.std::_Vector_base<HighsLinearObjective, std::allocator<HighsLinearObjective>>::_Vector_impl_data" = type { ptr, ptr, ptr }
%class.HighsModel = type { %class.HighsLp, %class.HighsHessian }
%class.HighsHessian = type { i32, i32, %"class.std::vector", %"class.std::vector", %"class.std::vector.3" }
%struct.HighsCallback = type { %"class.std::function", ptr, ptr, %"class.std::vector.43", %struct.HighsCallbackDataOut, %struct.HighsCallbackDataIn }
%"class.std::function" = type { %"class.std::_Function_base", ptr }
%"class.std::_Function_base" = type { %"union.std::_Any_data", ptr }
%"union.std::_Any_data" = type { %"union.std::_Nocopy_types" }
%"union.std::_Nocopy_types" = type { { i64, i64 } }
%"class.std::vector.43" = type { %"struct.std::_Bvector_base" }
%"struct.std::_Bvector_base" = type { %"struct.std::_Bvector_base<std::allocator<bool>>::_Bvector_impl" }
%"struct.std::_Bvector_base<std::allocator<bool>>::_Bvector_impl" = type { %"struct.std::_Bvector_base<std::allocator<bool>>::_Bvector_impl_data" }
%"struct.std::_Bvector_base<std::allocator<bool>>::_Bvector_impl_data" = type { %"struct.std::_Bit_iterator", %"struct.std::_Bit_iterator", ptr }
%"struct.std::_Bit_iterator" = type { %"struct.std::_Bit_iterator_base.base", [4 x i8] }
%"struct.std::_Bit_iterator_base.base" = type <{ ptr, i32 }>
%struct.HighsCallbackDataOut = type { i32, double, i32, i32, i32, double, i64, i64, double, double, double, ptr, i32, i32, i32, ptr, ptr, ptr, ptr, ptr, i32 }
%struct.HighsCallbackDataIn = type { i32, ptr }
%class.HighsOptions = type <{ %struct.HighsOptionsStruct, %"class.std::vector.47", i32, [4 x i8] }>
%struct.HighsOptionsStruct = type { ptr, %"class.std::__cxx11::basic_string", %"class.std::__cxx11::basic_string", %"class.std::__cxx11::basic_string", %"class.std::__cxx11::basic_string", double, %"class.std::__cxx11::basic_string", %"class.std::__cxx11::basic_string", i32, %"class.std::__cxx11::basic_string", double, double, double, double, double, double, double, double, double, double, double, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, %"class.std::__cxx11::basic_string", i8, i8, i8, i32, i32, %"class.std::__cxx11::basic_string", i8, i8, i8, i32, i8, i8, i32, i32, double, i32, i32, i32, i8, i32, i8, i8, i8, i8, i8, i8, i8, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i8, i8, i8, i8, double, double, double, double, double, double, double, double, double, double, double, i8, i8, i8, i8, i32, double, i8, i8, %"class.std::__cxx11::basic_string", double, i32, i32, i8, i8, i8, i8, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, double, double, double, double, double, i8, i8, %"class.std::__cxx11::basic_string", i8, i32, %struct.HighsLogOptions }
%struct.HighsLogOptions = type <{ ptr, ptr, ptr, ptr, ptr, ptr, %"class.std::function", ptr, i8, [7 x i8] }>
%"class.std::vector.47" = type { %"struct.std::_Vector_base.48" }
%"struct.std::_Vector_base.48" = type { %"struct.std::_Vector_base<OptionRecord *, std::allocator<OptionRecord *>>::_Vector_impl" }
%"struct.std::_Vector_base<OptionRecord *, std::allocator<OptionRecord *>>::_Vector_impl" = type { %"struct.std::_Vector_base<OptionRecord *, std::allocator<OptionRecord *>>::_Vector_impl_data" }
%"struct.std::_Vector_base<OptionRecord *, std::allocator<OptionRecord *>>::_Vector_impl_data" = type { ptr, ptr, ptr }
%class.HighsInfo = type { ptr, %struct.HighsInfoStruct, %"class.std::vector.52" }
%struct.HighsInfoStruct = type { i8, i64, i32, i32, i32, i32, i32, i32, i32, i32, double, double, double, double, i32, double, double, i32, double, double, double, double, double }
%"class.std::vector.52" = type { %"struct.std::_Vector_base.53" }
%"struct.std::_Vector_base.53" = type { %"struct.std::_Vector_base<InfoRecord *, std::allocator<InfoRecord *>>::_Vector_impl" }
%"struct.std::_Vector_base<InfoRecord *, std::allocator<InfoRecord *>>::_Vector_impl" = type { %"struct.std::_Vector_base<InfoRecord *, std::allocator<InfoRecord *>>::_Vector_impl_data" }
%"struct.std::_Vector_base<InfoRecord *, std::allocator<InfoRecord *>>::_Vector_impl_data" = type { ptr, ptr, ptr }
%struct.HighsRanging = type { i8, %struct.HighsRangingRecord, %struct.HighsRangingRecord, %struct.HighsRangingRecord, %struct.HighsRangingRecord, %struct.HighsRangingRecord, %struct.HighsRangingRecord }
%struct.HighsRangingRecord = type { %"class.std::vector.3", %"class.std::vector.3", %"class.std::vector", %"class.std::vector" }
%class.HighsIis = type { i8, i32, %"class.std::vector", %"class.std::vector", %"class.std::vector", %"class.std::vector", %"class.std::vector.57" }
%"class.std::vector.57" = type { %"struct.std::_Vector_base.58" }
%"struct.std::_Vector_base.58" = type { %"struct.std::_Vector_base<HighsIisInfo, std::allocator<HighsIisInfo>>::_Vector_impl" }
%"struct.std::_Vector_base<HighsIisInfo, std::allocator<HighsIisInfo>>::_Vector_impl" = type { %"struct.std::_Vector_base<HighsIisInfo, std::allocator<HighsIisInfo>>::_Vector_impl_data" }
%"struct.std::_Vector_base<HighsIisInfo, std::allocator<HighsIisInfo>>::_Vector_impl_data" = type { ptr, ptr, ptr }
%class.HighsSparseMatrix = type { i32, i32, i32, %"class.std::vector", %"class.std::vector", %"class.std::vector", %"class.std::vector.3" }
%class.HEkk = type { ptr, ptr, ptr, %class.HighsSimplexAnalysis, %class.HighsLp, %"class.std::__cxx11::basic_string", %struct.HighsSimplexStatus, [3 x i8], %struct.HighsSimplexInfo, i32, %struct.SimplexBasis, %class.HighsHashTable, %class.HighsRandom, %"class.std::vector.3", %"class.std::vector.3", i8, %class.HighsSparseMatrix, %class.HighsSparseMatrix, %class.HSimplexNla, %struct.HotStart, double, double, double, i32, i32, i32, i32, i8, i8, i32, i32, i32, %"class.std::vector", %"class.std::vector.3", %struct.HighsRayRecord, %struct.HighsRayRecord, i32, i32, i32, double, %"class.std::vector.3", %"class.std::vector.3", %"class.std::vector.3", %"class.std::vector.3", %"class.std::vector.3", %"class.std::vector", %"class.std::vector", double, double, double, i32, i32, i8, i32, i8, i8, i8, i8, double, %"class.std::vector.110", %"class.std::vector.3", %struct.HighsSimplexStats }
%class.HighsSimplexAnalysis = type { ptr, %"class.std::vector.67", %"class.std::vector.67", ptr, i32, i32, i32, %"class.std::__cxx11::basic_string", %"class.std::__cxx11::basic_string", %struct.HighsLogOptions, i8, i8, i8, i8, i8, i8, i8, i32, i32, i32, i32, i32, i32, i32, i32, i32, %"class.std::__cxx11::basic_string", double, double, double, double, double, double, double, double, double, double, double, double, i32, i32, double, double, i32, double, double, i32, double, double, double, double, double, double, double, double, double, double, i32, double, i32, i32, i32, i32, i32, i32, i32, i32, i32, [4 x i8], %struct.HighsValueDistribution, %struct.HighsValueDistribution, %struct.HighsValueDistribution, %struct.HighsValueDistribution, %struct.HighsValueDistribution, %struct.HighsValueDistribution, %struct.HighsValueDistribution, %struct.HighsValueDistribution, %struct.HighsValueDistribution, %struct.HighsValueDistribution, i32, i32, i32, i32, double, double, i32, i32, i32, i32, i32, double, double, i32, double, double, i32, i32, double, double, %"class.std::vector.3", %"class.std::vector.3", %"class.std::vector.3", %"class.std::vector.3", %"class.std::vector.72", %"class.std::unique_ptr", i32, i32, i32, i32, double, double, double, double, double, double, double, double, double, double, i32, i32, double, double, double, i8, double, double, i32, i32, i32, i32, i32, double, double, double, double, double, double, double, double, double, i32, i32, [10 x %"struct.HighsSimplexAnalysis::AnIterOpRec"], i32, i32, [22 x %"struct.HighsSimplexAnalysis::AnIterTraceRec"], [12 x i32], [3 x i32], [4 x i8], %struct.HighsValueDistribution, %struct.HighsValueDistribution, %struct.HighsValueDistribution, %struct.HighsValueDistribution, %struct.HighsValueDistribution, %struct.HighsValueDistribution }
%"class.std::vector.67" = type { %"struct.std::_Vector_base.68" }
%"struct.std::_Vector_base.68" = type { %"struct.std::_Vector_base<HighsTimerClock, std::allocator<HighsTimerClock>>::_Vector_impl" }
%"struct.std::_Vector_base<HighsTimerClock, std::allocator<HighsTimerClock>>::_Vector_impl" = type { %"struct.std::_Vector_base<HighsTimerClock, std::allocator<HighsTimerClock>>::_Vector_impl_data" }
%"struct.std::_Vector_base<HighsTimerClock, std::allocator<HighsTimerClock>>::_Vector_impl_data" = type { ptr, ptr, ptr }
%"class.std::vector.72" = type { %"struct.std::_Vector_base.73" }
%"struct.std::_Vector_base.73" = type { %"struct.std::_Vector_base<TranStageAnalysis, std::allocator<TranStageAnalysis>>::_Vector_impl" }
%"struct.std::_Vector_base<TranStageAnalysis, std::allocator<TranStageAnalysis>>::_Vector_impl" = type { %"struct.std::_Vector_base<TranStageAnalysis, std::allocator<TranStageAnalysis>>::_Vector_impl_data" }
%"struct.std::_Vector_base<TranStageAnalysis, std::allocator<TranStageAnalysis>>::_Vector_impl_data" = type { ptr, ptr, ptr }
%"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.78" }
%"struct.std::_Head_base.78" = type { ptr }
%"struct.HighsSimplexAnalysis::AnIterOpRec" = type { double, double, i32, i32, i32, i32, double, i32, %"class.std::__cxx11::basic_string", %struct.HighsValueDistribution }
%"struct.HighsSimplexAnalysis::AnIterTraceRec" = type { double, double, [10 x double], double, i32, i32, i32 }
%struct.HighsValueDistribution = type <{ %"class.std::__cxx11::basic_string", %"class.std::__cxx11::basic_string", i32, i32, i32, [4 x i8], double, double, %"class.std::vector.3", %"class.std::vector", i32, [4 x i8] }>
%struct.HighsSimplexStatus = type { i8, i8, i8, i8, i8, i8, i8, i8, i8, i8, i8, i8, i8 }
%struct.HighsSimplexInfo = type <{ %"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.3", %"class.std::vector.3", %"class.std::vector.3", %"class.std::vector.3", %"class.std::vector.3", %"class.std::vector.3", %"class.std::vector", %"class.std::vector", %"class.std::vector", %"class.std::vector", %"class.std::vector.3", i32, i32, i8, i8, [6 x i8], %struct.SimplexBasis, i32, i32, i32, [4 x i8], %"class.std::vector.3", %"class.std::vector.3", %"class.std::vector.3", %"class.std::vector.3", i32, i32, i32, i32, double, double, double, double, i32, i32, double, double, double, double, double, double, double, double, double, double, i8, [7 x i8], double, double, i32, [4 x i8], double, double, double, i8, i8, i8, i8, i8, i8, i8, i8, i8, i8, i8, i8, i8, i8, i8, i8, i32, [4 x i8], double, double, i32, [4 x i8], double, double, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, double, double, double, double, i32, [4 x i8] }>
%struct.SimplexBasis = type { %"class.std::vector", %"class.std::vector.79", %"class.std::vector.79", i64, i32, i32, %"class.std::__cxx11::basic_string" }
%"class.std::vector.79" = type { %"struct.std::_Vector_base.80" }
%"struct.std::_Vector_base.80" = type { %"struct.std::_Vector_base<signed char, std::allocator<signed char>>::_Vector_impl" }
%"struct.std::_Vector_base<signed char, std::allocator<signed char>>::_Vector_impl" = type { %"struct.std::_Vector_base<signed char, std::allocator<signed char>>::_Vector_impl_data" }
%"struct.std::_Vector_base<signed char, std::allocator<signed char>>::_Vector_impl_data" = type { ptr, ptr, ptr }
%class.HighsHashTable = type { %"class.std::unique_ptr.84", %"class.std::unique_ptr.92", i64, i64, i64 }
%"class.std::unique_ptr.84" = type { %"struct.std::__uniq_ptr_data.85" }
%"struct.std::__uniq_ptr_data.85" = type { %"class.std::__uniq_ptr_impl.86" }
%"class.std::__uniq_ptr_impl.86" = type { %"class.std::tuple.87" }
%"class.std::tuple.87" = type { %"struct.std::_Tuple_impl.88" }
%"struct.std::_Tuple_impl.88" = type { %"struct.std::_Head_base.91" }
%"struct.std::_Head_base.91" = type { ptr }
%class.HSimplexNla = type { ptr, ptr, ptr, ptr, ptr, ptr, %class.HFactor, i8, double, %struct.ProductFormUpdate, %struct.SimplexIterate }
%class.HFactor = type { double, double, i32, %"class.std::vector", %"class.std::vector", %"class.std::vector", %struct.RefactorInfo, i32, i32, i32, i32, i32, i32, i32, double, i8, ptr, ptr, ptr, ptr, double, double, i32, double, %"class.std::unique_ptr.100", %struct.HighsLogOptions, i8, i8, i32, i32, ptr, i32, %"class.std::vector", %"class.std::vector.3", %"class.std::vector", %"class.std::vector", %"class.std::vector", %"class.std::vector.3", %"class.std::vector", %"class.std::vector", %"class.std::vector", %"class.std::vector", %"class.std::vector", %"class.std::vector", %"class.std::vector", %"class.std::vector.3", %"class.std::vector.3", %"class.std::vector", %"class.std::vector", %"class.std::vector", %"class.std::vector", %"class.std::vector", %"class.std::vector", %"class.std::vector.108", %"class.std::vector.3", %"class.std::vector", %"class.std::vector", %"class.std::vector", %"class.std::vector", %"class.std::vector", %"class.std::vector", %"class.std::vector", %"class.std::vector", %"class.std::vector", %"class.std::vector", %"class.std::vector.3", %"class.std::vector", %"class.std::vector", %"class.std::vector.3", %"class.std::vector", %"class.std::vector", %"class.std::vector.3", i32, i32, %"class.std::vector", %"class.std::vector", %"class.std::vector", %"class.std::vector.3", %"class.std::vector", %"class.std::vector", %"class.std::vector", %"class.std::vector", %"class.std::vector.3", %"class.std::vector.3", %"class.std::vector", %"class.std::vector", %"class.std::vector", %"class.std::vector.3", %class.HVectorBase }
%struct.RefactorInfo = type { i8, %"class.std::vector", %"class.std::vector", %"class.std::vector.79", double }
%"class.std::unique_ptr.100" = type { %"struct.std::__uniq_ptr_data.101" }
%"struct.std::__uniq_ptr_data.101" = type { %"class.std::__uniq_ptr_impl.102" }
%"class.std::__uniq_ptr_impl.102" = type { %"class.std::tuple.103" }
%"class.std::tuple.103" = type { %"struct.std::_Tuple_impl.104" }
%"struct.std::_Tuple_impl.104" = type { %"struct.std::_Head_base.107" }
%"struct.std::_Head_base.107" = type { ptr }
%"class.std::vector.108" = type { %"struct.std::_Vector_base.109" }
%"struct.std::_Vector_base.109" = type { %"struct.std::_Vector_base<char, std::allocator<char>>::_Vector_impl" }
%"struct.std::_Vector_base<char, std::allocator<char>>::_Vector_impl" = type { %"struct.std::_Vector_base<char, std::allocator<char>>::_Vector_impl_data" }
%"struct.std::_Vector_base<char, std::allocator<char>>::_Vector_impl_data" = type { ptr, ptr, ptr }
%struct.ProductFormUpdate = type { i8, i32, i32, %"class.std::vector", %"class.std::vector.3", %"class.std::vector", %"class.std::vector", %"class.std::vector.3" }
%struct.SimplexIterate = type { i8, %struct.SimplexBasis, %struct.InvertibleRepresentation, %"class.std::vector.3" }
%struct.InvertibleRepresentation = type { %"class.std::vector", %"class.std::vector", %"class.std::vector", %"class.std::vector", %"class.std::vector.3", %"class.std::vector", %"class.std::vector", %"class.std::vector.3", %"class.std::vector", %"class.std::vector", %"class.std::vector.3", %"class.std::vector", %"class.std::vector", %"class.std::vector", %"class.std::vector.3", %"class.std::vector", %"class.std::vector", %"class.std::vector", %"class.std::vector", %"class.std::vector.3", %"class.std::vector", %"class.std::vector", %"class.std::vector.3", %"class.std::vector", %"class.std::vector.3" }
%struct.HotStart = type { i8, %struct.RefactorInfo, %"class.std::vector.79" }
%struct.HighsRayRecord = type { i32, i32, %"class.std::vector.3" }
%"class.std::vector.110" = type { %"struct.std::_Vector_base.111" }
%"struct.std::_Vector_base.111" = type { %"struct.std::_Vector_base<HighsSimplexBadBasisChangeRecord, std::allocator<HighsSimplexBadBasisChangeRecord>>::_Vector_impl" }
%"struct.std::_Vector_base<HighsSimplexBadBasisChangeRecord, std::allocator<HighsSimplexBadBasisChangeRecord>>::_Vector_impl" = type { %"struct.std::_Vector_base<HighsSimplexBadBasisChangeRecord, std::allocator<HighsSimplexBadBasisChangeRecord>>::_Vector_impl_data" }
%"struct.std::_Vector_base<HighsSimplexBadBasisChangeRecord, std::allocator<HighsSimplexBadBasisChangeRecord>>::_Vector_impl_data" = type { ptr, ptr, ptr }
%struct.HighsSimplexStats = type { i8, i32, i32, i32, i32, double, double, double, double }
%struct.HighsPresolveLog = type { %"class.std::vector.115" }
%"class.std::vector.115" = type { %"struct.std::_Vector_base.116" }
%"struct.std::_Vector_base.116" = type { %"struct.std::_Vector_base<HighsPresolveRuleLog, std::allocator<HighsPresolveRuleLog>>::_Vector_impl" }
%"struct.std::_Vector_base<HighsPresolveRuleLog, std::allocator<HighsPresolveRuleLog>>::_Vector_impl" = type { %"struct.std::_Vector_base<HighsPresolveRuleLog, std::allocator<HighsPresolveRuleLog>>::_Vector_impl_data" }
%"struct.std::_Vector_base<HighsPresolveRuleLog, std::allocator<HighsPresolveRuleLog>>::_Vector_impl_data" = type { ptr, ptr, ptr }
%class.PresolveComponent = type { %class.HighsComponent.base, %struct.PresolveComponentInfo, %struct.PresolveComponentData, ptr, ptr, i32, i32 }
%class.HighsComponent.base = type <{ ptr, %struct.HighsComponentInfo, %struct.HighsComponentData, %struct.HighsComponentOptions }>
%struct.HighsComponentInfo = type { i8 }
%struct.HighsComponentData = type { i8 }
%struct.HighsComponentOptions = type { i8 }
%struct.PresolveComponentInfo = type { ptr, %struct.HighsComponentInfo, i32, i32, i32, double, double }
%struct.PresolveComponentData = type { ptr, %struct.HighsComponentData, %class.HighsLp, %"class.presolve::HighsPostsolveStack", %struct.HighsSolution, %struct.HighsBasis, %struct.HighsPresolveLog }
%"class.std::vector.130" = type { %"struct.std::_Vector_base.131" }
%"struct.std::_Vector_base.131" = type { %"struct.std::_Vector_base<HighsLpRelaxation::LpRow, std::allocator<HighsLpRelaxation::LpRow>>::_Vector_impl" }
%"struct.std::_Vector_base<HighsLpRelaxation::LpRow, std::allocator<HighsLpRelaxation::LpRow>>::_Vector_impl" = type { %"struct.std::_Vector_base<HighsLpRelaxation::LpRow, std::allocator<HighsLpRelaxation::LpRow>>::_Vector_impl_data" }
%"struct.std::_Vector_base<HighsLpRelaxation::LpRow, std::allocator<HighsLpRelaxation::LpRow>>::_Vector_impl_data" = type { ptr, ptr, ptr }
%class.HVectorBase = type { i32, i32, %"class.std::vector", %"class.std::vector.3", double, %"class.std::vector.108", %"class.std::vector", ptr, i8, i32, %"class.std::vector", %"class.std::vector.3" }
%class.HighsSparseVectorSum = type { %"class.std::vector.140", %"class.std::vector" }
%"class.std::shared_ptr" = type { %"class.std::__shared_ptr" }
%"class.std::__shared_ptr" = type { ptr, %"class.std::__shared_count" }
%"class.std::__shared_count" = type { ptr }
%class.HighsPseudocost = type { %"class.std::vector.3", %"class.std::vector.3", %"class.std::vector", %"class.std::vector", %"class.std::vector.3", %"class.std::vector.3", %"class.std::vector", %"class.std::vector", %"class.std::vector", %"class.std::vector", %"class.std::vector.3", %"class.std::vector.3", double, double, double, double, i64, i64, i64, i32, double }
%class.HighsCliqueTable = type { %"class.std::vector.243", %"class.std::vector.248", %"class.std::vector.253", %class.HighsHashTable.258, %"class.std::set", %"class.std::vector", %"class.std::vector.267", %"class.std::vector", %"class.std::vector.243", %"class.std::vector", %"class.std::vector.272", %"class.std::vector", %"class.std::vector.277", %"class.std::vector.8", %"class.std::vector.8", %"class.std::vector.190", %"class.std::vector", %class.HighsRandom, i32, i32, i32, i32, i8, i64 }
%"class.std::vector.248" = type { %"struct.std::_Vector_base.249" }
%"struct.std::_Vector_base.249" = type { %"struct.std::_Vector_base<HighsHashTree<int, int>, std::allocator<HighsHashTree<int, int>>>::_Vector_impl" }
%"struct.std::_Vector_base<HighsHashTree<int, int>, std::allocator<HighsHashTree<int, int>>>::_Vector_impl" = type { %"struct.std::_Vector_base<HighsHashTree<int, int>, std::allocator<HighsHashTree<int, int>>>::_Vector_impl_data" }
%"struct.std::_Vector_base<HighsHashTree<int, int>, std::allocator<HighsHashTree<int, int>>>::_Vector_impl_data" = type { ptr, ptr, ptr }
%"class.std::vector.253" = type { %"struct.std::_Vector_base.254" }
%"struct.std::_Vector_base.254" = type { %"struct.std::_Vector_base<HighsHashTree<int>, std::allocator<HighsHashTree<int>>>::_Vector_impl" }
%"struct.std::_Vector_base<HighsHashTree<int>, std::allocator<HighsHashTree<int>>>::_Vector_impl" = type { %"struct.std::_Vector_base<HighsHashTree<int>, std::allocator<HighsHashTree<int>>>::_Vector_impl_data" }
%"struct.std::_Vector_base<HighsHashTree<int>, std::allocator<HighsHashTree<int>>>::_Vector_impl_data" = type { ptr, ptr, ptr }
%class.HighsHashTable.258 = type { %"class.std::unique_ptr.259", %"class.std::unique_ptr.92", i64, i64, i64 }
%"class.std::unique_ptr.259" = type { %"struct.std::__uniq_ptr_data.260" }
%"struct.std::__uniq_ptr_data.260" = type { %"class.std::__uniq_ptr_impl.261" }
%"class.std::__uniq_ptr_impl.261" = type { %"class.std::tuple.262" }
%"class.std::tuple.262" = type { %"struct.std::_Tuple_impl.263" }
%"struct.std::_Tuple_impl.263" = type { %"struct.std::_Head_base.266" }
%"struct.std::_Head_base.266" = type { ptr }
%"class.std::vector.267" = type { %"struct.std::_Vector_base.268" }
%"struct.std::_Vector_base.268" = type { %"struct.std::_Vector_base<HighsCliqueTable::Clique, std::allocator<HighsCliqueTable::Clique>>::_Vector_impl" }
%"struct.std::_Vector_base<HighsCliqueTable::Clique, std::allocator<HighsCliqueTable::Clique>>::_Vector_impl" = type { %"struct.std::_Vector_base<HighsCliqueTable::Clique, std::allocator<HighsCliqueTable::Clique>>::_Vector_impl_data" }
%"struct.std::_Vector_base<HighsCliqueTable::Clique, std::allocator<HighsCliqueTable::Clique>>::_Vector_impl_data" = type { ptr, ptr, ptr }
%"class.std::vector.243" = type { %"struct.std::_Vector_base.244" }
%"struct.std::_Vector_base.244" = type { %"struct.std::_Vector_base<HighsCliqueTable::CliqueVar, std::allocator<HighsCliqueTable::CliqueVar>>::_Vector_impl" }
%"struct.std::_Vector_base<HighsCliqueTable::CliqueVar, std::allocator<HighsCliqueTable::CliqueVar>>::_Vector_impl" = type { %"struct.std::_Vector_base<HighsCliqueTable::CliqueVar, std::allocator<HighsCliqueTable::CliqueVar>>::_Vector_impl_data" }
%"struct.std::_Vector_base<HighsCliqueTable::CliqueVar, std::allocator<HighsCliqueTable::CliqueVar>>::_Vector_impl_data" = type { ptr, ptr, ptr }
%"class.std::vector.272" = type { %"struct.std::_Vector_base.273" }
%"struct.std::_Vector_base.273" = type { %"struct.std::_Vector_base<HighsCliqueTable::Substitution, std::allocator<HighsCliqueTable::Substitution>>::_Vector_impl" }
%"struct.std::_Vector_base<HighsCliqueTable::Substitution, std::allocator<HighsCliqueTable::Substitution>>::_Vector_impl" = type { %"struct.std::_Vector_base<HighsCliqueTable::Substitution, std::allocator<HighsCliqueTable::Substitution>>::_Vector_impl_data" }
%"struct.std::_Vector_base<HighsCliqueTable::Substitution, std::allocator<HighsCliqueTable::Substitution>>::_Vector_impl_data" = type { ptr, ptr, ptr }
%"class.std::vector.277" = type { %"struct.std::_Vector_base.278" }
%"struct.std::_Vector_base.278" = type { %"struct.std::_Vector_base<std::pair<int, HighsCliqueTable::CliqueVar>, std::allocator<std::pair<int, HighsCliqueTable::CliqueVar>>>::_Vector_impl" }
%"struct.std::_Vector_base<std::pair<int, HighsCliqueTable::CliqueVar>, std::allocator<std::pair<int, HighsCliqueTable::CliqueVar>>>::_Vector_impl" = type { %"struct.std::_Vector_base<std::pair<int, HighsCliqueTable::CliqueVar>, std::allocator<std::pair<int, HighsCliqueTable::CliqueVar>>>::_Vector_impl_data" }
%"struct.std::_Vector_base<std::pair<int, HighsCliqueTable::CliqueVar>, std::allocator<std::pair<int, HighsCliqueTable::CliqueVar>>>::_Vector_impl_data" = type { ptr, ptr, ptr }
%class.HighsImplications = type { i32, %"class.std::vector.282", i64, %"class.std::vector.287", %"class.std::vector.287", ptr, %"class.std::vector.292", %"class.std::vector.8", %"class.std::function.297" }
%"class.std::vector.282" = type { %"struct.std::_Vector_base.283" }
%"struct.std::_Vector_base.283" = type { %"struct.std::_Vector_base<HighsImplications::Implics, std::allocator<HighsImplications::Implics>>::_Vector_impl" }
%"struct.std::_Vector_base<HighsImplications::Implics, std::allocator<HighsImplications::Implics>>::_Vector_impl" = type { %"struct.std::_Vector_base<HighsImplications::Implics, std::allocator<HighsImplications::Implics>>::_Vector_impl_data" }
%"struct.std::_Vector_base<HighsImplications::Implics, std::allocator<HighsImplications::Implics>>::_Vector_impl_data" = type { ptr, ptr, ptr }
%"class.std::vector.287" = type { %"struct.std::_Vector_base.288" }
%"struct.std::_Vector_base.288" = type { %"struct.std::_Vector_base<HighsHashTree<int, HighsImplications::VarBound>, std::allocator<HighsHashTree<int, HighsImplications::VarBound>>>::_Vector_impl" }
%"struct.std::_Vector_base<HighsHashTree<int, HighsImplications::VarBound>, std::allocator<HighsHashTree<int, HighsImplications::VarBound>>>::_Vector_impl" = type { %"struct.std::_Vector_base<HighsHashTree<int, HighsImplications::VarBound>, std::allocator<HighsHashTree<int, HighsImplications::VarBound>>>::_Vector_impl_data" }
%"struct.std::_Vector_base<HighsHashTree<int, HighsImplications::VarBound>, std::allocator<HighsHashTree<int, HighsImplications::VarBound>>>::_Vector_impl_data" = type { ptr, ptr, ptr }
%"class.std::vector.292" = type { %"struct.std::_Vector_base.293" }
%"struct.std::_Vector_base.293" = type { %"struct.std::_Vector_base<HighsSubstitution, std::allocator<HighsSubstitution>>::_Vector_impl" }
%"struct.std::_Vector_base<HighsSubstitution, std::allocator<HighsSubstitution>>::_Vector_impl" = type { %"struct.std::_Vector_base<HighsSubstitution, std::allocator<HighsSubstitution>>::_Vector_impl_data" }
%"struct.std::_Vector_base<HighsSubstitution, std::allocator<HighsSubstitution>>::_Vector_impl_data" = type { ptr, ptr, ptr }
%"class.std::function.297" = type { %"class.std::_Function_base", ptr }
%class.HighsPrimalHeuristics = type { ptr, i64, i64, i64, i64, double, i32, double, i32, %class.HighsRandom, %"class.std::vector" }
%class.HighsRedcostFixing = type { %"class.std::vector.299", %"class.std::vector.299" }
%"class.std::vector.299" = type { %"struct.std::_Vector_base.300" }
%"struct.std::_Vector_base.300" = type { %"struct.std::_Vector_base<std::multimap<double, int>, std::allocator<std::multimap<double, int>>>::_Vector_impl" }
%"struct.std::_Vector_base<std::multimap<double, int>, std::allocator<std::multimap<double, int>>>::_Vector_impl" = type { %"struct.std::_Vector_base<std::multimap<double, int>, std::allocator<std::multimap<double, int>>>::_Vector_impl_data" }
%"struct.std::_Vector_base<std::multimap<double, int>, std::allocator<std::multimap<double, int>>>::_Vector_impl_data" = type { ptr, ptr, ptr }
%class.HighsObjectiveFunction = type { ptr, double, i32, i32, %"class.std::vector", %"class.std::vector.3", %"class.std::vector", %"class.std::vector" }
%"class.presolve::HighsPostsolveStack" = type { i64, double, double, double, double, %class.HighsDataStack, %"class.std::vector.120", %"class.std::vector", %"class.std::vector", %"class.std::vector.8", %"class.std::vector.125", %"class.std::vector.125", i32, i32 }
%class.HighsDataStack = type { %"class.std::vector.108", i64 }
%"class.std::vector.120" = type { %"struct.std::_Vector_base.121" }
%"struct.std::_Vector_base.121" = type { %"struct.std::_Vector_base<std::pair<presolve::HighsPostsolveStack::ReductionType, unsigned long>, std::allocator<std::pair<presolve::HighsPostsolveStack::ReductionType, unsigned long>>>::_Vector_impl" }
%"struct.std::_Vector_base<std::pair<presolve::HighsPostsolveStack::ReductionType, unsigned long>, std::allocator<std::pair<presolve::HighsPostsolveStack::ReductionType, unsigned long>>>::_Vector_impl" = type { %"struct.std::_Vector_base<std::pair<presolve::HighsPostsolveStack::ReductionType, unsigned long>, std::allocator<std::pair<presolve::HighsPostsolveStack::ReductionType, unsigned long>>>::_Vector_impl_data" }
%"struct.std::_Vector_base<std::pair<presolve::HighsPostsolveStack::ReductionType, unsigned long>, std::allocator<std::pair<presolve::HighsPostsolveStack::ReductionType, unsigned long>>>::_Vector_impl_data" = type { ptr, ptr, ptr }
%"class.std::vector.125" = type { %"struct.std::_Vector_base.126" }
%"struct.std::_Vector_base.126" = type { %"struct.std::_Vector_base<presolve::HighsPostsolveStack::Nonzero, std::allocator<presolve::HighsPostsolveStack::Nonzero>>::_Vector_impl" }
%"struct.std::_Vector_base<presolve::HighsPostsolveStack::Nonzero, std::allocator<presolve::HighsPostsolveStack::Nonzero>>::_Vector_impl" = type { %"struct.std::_Vector_base<presolve::HighsPostsolveStack::Nonzero, std::allocator<presolve::HighsPostsolveStack::Nonzero>>::_Vector_impl_data" }
%"struct.std::_Vector_base<presolve::HighsPostsolveStack::Nonzero, std::allocator<presolve::HighsPostsolveStack::Nonzero>>::_Vector_impl_data" = type { ptr, ptr, ptr }
%class.HighsLp = type { i32, i32, %"class.std::vector.3", %"class.std::vector.3", %"class.std::vector.3", %"class.std::vector.3", %"class.std::vector.3", %class.HighsSparseMatrix, i32, double, %"class.std::__cxx11::basic_string", %"class.std::__cxx11::basic_string", i32, i32, %"class.std::vector.23", %"class.std::vector.23", %"class.std::vector.28", %struct.HighsNameHash, %struct.HighsNameHash, i32, i32, %struct.HighsScale, i8, i8, i32, i8, %struct.HighsLpMods }
%"class.std::vector.28" = type { %"struct.std::_Vector_base.29" }
%"struct.std::_Vector_base.29" = type { %"struct.std::_Vector_base<HighsVarType, std::allocator<HighsVarType>>::_Vector_impl" }
%"struct.std::_Vector_base<HighsVarType, std::allocator<HighsVarType>>::_Vector_impl" = type { %"struct.std::_Vector_base<HighsVarType, std::allocator<HighsVarType>>::_Vector_impl_data" }
%"struct.std::_Vector_base<HighsVarType, std::allocator<HighsVarType>>::_Vector_impl_data" = type { ptr, ptr, ptr }
%struct.HighsNameHash = type { %"class.std::unordered_map" }
%"class.std::unordered_map" = 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.HighsScale = type { i32, i8, i32, i32, double, %"class.std::vector.3", %"class.std::vector.3" }
%struct.HighsLpMods = type { %"class.std::vector", %"class.std::vector", %"class.std::vector.3", %"class.std::vector.3", %"class.std::vector.28", %"class.std::vector", %"class.std::vector.3", %"class.std::vector", %"class.std::vector.3", %"class.std::vector", %"class.std::vector.3", %"class.std::vector.3", %"class.std::vector.3" }
%struct.HighsSymmetries = type { %"class.std::vector", %"class.std::vector", %"class.std::vector", %"class.std::vector", %"class.std::vector", %"class.std::vector", %"class.std::vector.304", %class.HighsHashTable.309, i32, i32 }
%"class.std::vector.304" = type { %"struct.std::_Vector_base.305" }
%"struct.std::_Vector_base.305" = type { %"struct.std::_Vector_base<HighsOrbitopeMatrix, std::allocator<HighsOrbitopeMatrix>>::_Vector_impl" }
%"struct.std::_Vector_base<HighsOrbitopeMatrix, std::allocator<HighsOrbitopeMatrix>>::_Vector_impl" = type { %"struct.std::_Vector_base<HighsOrbitopeMatrix, std::allocator<HighsOrbitopeMatrix>>::_Vector_impl_data" }
%"struct.std::_Vector_base<HighsOrbitopeMatrix, std::allocator<HighsOrbitopeMatrix>>::_Vector_impl_data" = type { ptr, ptr, ptr }
%class.HighsHashTable.309 = type { %"class.std::unique_ptr.310", %"class.std::unique_ptr.92", i64, i64, i64 }
%"class.std::unique_ptr.310" = type { %"struct.std::__uniq_ptr_data.311" }
%"struct.std::__uniq_ptr_data.311" = type { %"class.std::__uniq_ptr_impl.312" }
%"class.std::__uniq_ptr_impl.312" = type { %"class.std::tuple.313" }
%"class.std::tuple.313" = type { %"struct.std::_Tuple_impl.314" }
%"struct.std::_Tuple_impl.314" = type { %"struct.std::_Head_base.317" }
%"struct.std::_Head_base.317" = type { ptr }
%"class.std::shared_ptr.318" = type { %"class.std::__shared_ptr.319" }
%"class.std::__shared_ptr.319" = type { ptr, %"class.std::__shared_count" }
%struct.HighsBasis = type { i8, i8, i8, i8, i32, i32, %"class.std::__cxx11::basic_string", %"class.std::vector.13", %"class.std::vector.13" }
%"class.std::vector.13" = type { %"struct.std::_Vector_base.14" }
%"struct.std::_Vector_base.14" = type { %"struct.std::_Vector_base<HighsBasisStatus, std::allocator<HighsBasisStatus>>::_Vector_impl" }
%"struct.std::_Vector_base<HighsBasisStatus, std::allocator<HighsBasisStatus>>::_Vector_impl" = type { %"struct.std::_Vector_base<HighsBasisStatus, std::allocator<HighsBasisStatus>>::_Vector_impl_data" }
%"struct.std::_Vector_base<HighsBasisStatus, std::allocator<HighsBasisStatus>>::_Vector_impl_data" = type { ptr, ptr, ptr }
%class.HighsNodeQueue = type <{ %"class.std::unique_ptr.321", %"class.std::vector.329", %"class.std::priority_queue", %"class.std::unique_ptr.339", %"class.std::unique_ptr.339", i64, i64, i64, i64, i64, i64, i64, double, i32, [4 x i8] }>
%"class.std::unique_ptr.321" = type { %"struct.std::__uniq_ptr_data.322" }
%"struct.std::__uniq_ptr_data.322" = type { %"class.std::__uniq_ptr_impl.323" }
%"class.std::__uniq_ptr_impl.323" = type { %"class.std::tuple.324" }
%"class.std::tuple.324" = type { %"struct.std::_Tuple_impl.325" }
%"struct.std::_Tuple_impl.325" = type { %"struct.std::_Head_base.328" }
%"struct.std::_Head_base.328" = type { ptr }
%"class.std::vector.329" = type { %"struct.std::_Vector_base.330" }
%"struct.std::_Vector_base.330" = type { %"struct.std::_Vector_base<HighsNodeQueue::OpenNode, std::allocator<HighsNodeQueue::OpenNode>>::_Vector_impl" }
%"struct.std::_Vector_base<HighsNodeQueue::OpenNode, std::allocator<HighsNodeQueue::OpenNode>>::_Vector_impl" = type { %"struct.std::_Vector_base<HighsNodeQueue::OpenNode, std::allocator<HighsNodeQueue::OpenNode>>::_Vector_impl_data" }
%"struct.std::_Vector_base<HighsNodeQueue::OpenNode, std::allocator<HighsNodeQueue::OpenNode>>::_Vector_impl_data" = type { ptr, ptr, ptr }
%"class.std::priority_queue" = type <{ %"class.std::vector.334", [8 x i8] }>
%"class.std::vector.334" = type { %"struct.std::_Vector_base.335" }
%"struct.std::_Vector_base.335" = type { %"struct.std::_Vector_base<long, std::allocator<long>>::_Vector_impl" }
%"struct.std::_Vector_base<long, std::allocator<long>>::_Vector_impl" = type { %"struct.std::_Vector_base<long, std::allocator<long>>::_Vector_impl_data" }
%"struct.std::_Vector_base<long, std::allocator<long>>::_Vector_impl_data" = type { ptr, ptr, ptr }
%"class.std::unique_ptr.339" = type { %"struct.std::__uniq_ptr_data.340" }
%"struct.std::__uniq_ptr_data.340" = type { %"class.std::__uniq_ptr_impl.341" }
%"class.std::__uniq_ptr_impl.341" = type { %"class.std::tuple.342" }
%"class.std::tuple.342" = type { %"struct.std::_Tuple_impl.343" }
%"struct.std::_Tuple_impl.343" = type { %"struct.std::_Head_base.346" }
%"struct.std::_Head_base.346" = type { ptr }
%struct.HighsPrimaDualIntegral = type { double, double, double, double, double }

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

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

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

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

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

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

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

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

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

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

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

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

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

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

; Function Attrs: mustprogress uwtable
declare dso_local noundef zeroext i1 @_ZN18HighsCutGeneration14postprocessCutEv(ptr noundef nonnull align 8 dereferenceable(288)) #3 align 2

; Function Attrs: mustprogress uwtable
declare dso_local noundef zeroext i1 @_ZN18HighsCutGeneration24preprocessBaseInequalityERbS0_S0_(ptr noundef nonnull align 8 dereferenceable(288), ptr noundef nonnull align 1 dereferenceable(1), ptr noundef nonnull align 1 dereferenceable(1), ptr noundef nonnull align 1 dereferenceable(1)) #3 align 2

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

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

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

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

; Function Attrs: mustprogress uwtable
declare dso_local noundef zeroext i1 @_ZN18HighsCutGeneration14tryGenerateCutERSt6vectorIiSaIiEERS0_IdSaIdEEbbbdbbb(ptr noundef nonnull align 8 dereferenceable(288), ptr noundef nonnull align 8 dereferenceable(24), ptr noundef nonnull align 8 dereferenceable(24), i1 noundef zeroext, i1 noundef zeroext, i1 noundef zeroext, double noundef, i1 noundef zeroext, i1 noundef zeroext, i1 noundef zeroext) #3 align 2

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

declare void @_ZNK11HighsDomain19tightenCoefficientsEPiPdiRd(ptr noundef nonnull align 8 dereferenceable(824), ptr noundef, ptr noundef, i32 noundef, ptr noundef nonnull align 8 dereferenceable(8)) #6

declare noundef i32 @_ZN12HighsCutPool6addCutERK14HighsMipSolverPiPdidbbbb(ptr noundef nonnull align 8 dereferenceable(680), ptr noundef nonnull align 8 dereferenceable(496), ptr noundef, ptr noundef, i32 noundef, double noundef, i1 noundef zeroext, i1 noundef zeroext, i1 noundef zeroext, i1 noundef zeroext) #6

; Function Attrs: mustprogress uwtable
define dso_local noundef zeroext i1 @_ZN18HighsCutGeneration16generateConflictER11HighsDomainRSt6vectorIiSaIiEERS2_IdSaIdEERd(ptr noundef nonnull align 8 dereferenceable(288) %0, ptr noundef nonnull align 8 dereferenceable(824) %1, ptr noundef nonnull align 8 dereferenceable(24) %2, ptr noundef nonnull align 8 dereferenceable(24) %3, ptr noundef nonnull align 8 dereferenceable(8) %4) #3 align 2 {
  %6 = alloca i1, align 1
  %7 = alloca ptr, align 8
  %8 = alloca ptr, align 8
  %9 = alloca ptr, align 8
  %10 = alloca ptr, align 8
  %11 = alloca ptr, align 8
  %12 = alloca %class.HighsCDouble, align 8
  %13 = alloca i8, align 1
  %14 = alloca ptr, align 8
  %15 = alloca double, align 8
  %16 = alloca i32, align 4
  %17 = alloca i32, align 4
  %18 = alloca double, align 8
  %19 = alloca i32, align 4
  %20 = alloca i8, align 1
  %21 = alloca i8, align 1
  %22 = alloca i8, align 1
  %23 = alloca i32, align 4
  %24 = alloca i32, align 4
  %25 = alloca i8, align 1
  %26 = alloca i32, align 4
  store ptr %0, ptr %7, align 8, !tbaa !5
  store ptr %1, ptr %8, align 8, !tbaa !5
  store ptr %2, ptr %9, align 8, !tbaa !5
  store ptr %3, ptr %10, align 8, !tbaa !5
  store ptr %4, ptr %11, align 8, !tbaa !5
  %27 = load ptr, ptr %7, align 8
  %28 = load ptr, ptr %9, align 8, !tbaa !5
  %29 = call noundef ptr @_ZNSt6vectorIiSaIiEE4dataEv(ptr noundef nonnull align 8 dereferenceable(24) %28) #7
  %30 = getelementptr inbounds %class.HighsCutGeneration, ptr %27, i32 0, i32 13
  store ptr %29, ptr %30, align 8, !tbaa !9
  %31 = load ptr, ptr %10, align 8, !tbaa !5
  %32 = call noundef ptr @_ZNSt6vectorIdSaIdEE4dataEv(ptr noundef nonnull align 8 dereferenceable(24) %31) #7
  %33 = getelementptr inbounds %class.HighsCutGeneration, ptr %27, i32 0, i32 12
  store ptr %32, ptr %33, align 8, !tbaa !29
  call void @llvm.lifetime.start.p0(i64 16, ptr %12) #7
  %34 = load ptr, ptr %11, align 8, !tbaa !5
  %35 = load double, ptr %34, align 8, !tbaa !30
  call void @_ZN12HighsCDoubleC2Ed(ptr noundef nonnull align 8 dereferenceable(16) %12, double noundef %35)
  %36 = getelementptr inbounds %class.HighsCutGeneration, ptr %27, i32 0, i32 14
  call void @llvm.memcpy.p0.p0.i64(ptr align 8 %36, ptr align 8 %12, i64 16, i1 false), !tbaa.struct !31
  call void @llvm.lifetime.end.p0(i64 16, ptr %12) #7
  %37 = load ptr, ptr %9, align 8, !tbaa !5
  %38 = call noundef i64 @_ZNKSt6vectorIiSaIiEE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24) %37) #7
  %39 = trunc i64 %38 to i32
  %40 = getelementptr inbounds %class.HighsCutGeneration, ptr %27, i32 0, i32 17
  store i32 %39, ptr %40, align 4, !tbaa !32
  %41 = getelementptr inbounds %class.HighsCutGeneration, ptr %27, i32 0, i32 0
  %42 = load ptr, ptr %41, align 8, !tbaa !33
  %43 = call noundef nonnull align 8 dereferenceable(496) ptr @_ZNK17HighsLpRelaxation12getMipSolverEv(ptr noundef nonnull align 8 dereferenceable(21425) %42)
  %44 = getelementptr inbounds %class.HighsMipSolver, ptr %43, i32 0, i32 25
  %45 = call noundef ptr @_ZNKSt10unique_ptrI18HighsMipSolverDataSt14default_deleteIS0_EEptEv(ptr noundef nonnull align 8 dereferenceable(8) %44) #7
  %46 = getelementptr inbounds i8, ptr %45, i64 26800
  %47 = getelementptr inbounds %class.HighsCutGeneration, ptr %27, i32 0, i32 13
  %48 = load ptr, ptr %47, align 8, !tbaa !9
  %49 = getelementptr inbounds %class.HighsCutGeneration, ptr %27, i32 0, i32 12
  %50 = load ptr, ptr %49, align 8, !tbaa !29
  %51 = getelementptr inbounds %class.HighsCutGeneration, ptr %27, i32 0, i32 17
  %52 = load i32, ptr %51, align 4, !tbaa !32
  %53 = load ptr, ptr %11, align 8, !tbaa !5
  %54 = load double, ptr %53, align 8, !tbaa !30
  call void @_ZNK13HighsDebugSol8checkCutEPKiPKdid(ptr noundef nonnull align 1 dereferenceable(1) %46, ptr noundef %48, ptr noundef %50, i32 noundef %52, double noundef %54)
  %55 = getelementptr inbounds %class.HighsCutGeneration, ptr %27, i32 0, i32 8
  %56 = getelementptr inbounds %class.HighsCutGeneration, ptr %27, i32 0, i32 17
  %57 = load i32, ptr %56, align 4, !tbaa !32
  %58 = sext i32 %57 to i64
  call void @llvm.lifetime.start.p0(i64 1, ptr %13) #7
  store i8 0, ptr %13, align 1, !tbaa !34
  call void @_ZNSt6vectorIhSaIhEE6assignEmRKh(ptr noundef nonnull align 8 dereferenceable(24) %55, i64 noundef %58, ptr noundef nonnull align 1 dereferenceable(1) %13)
  call void @llvm.lifetime.end.p0(i64 1, ptr %13) #7
  %59 = getelementptr inbounds %class.HighsCutGeneration, ptr %27, i32 0, i32 6
  %60 = getelementptr inbounds %class.HighsCutGeneration, ptr %27, i32 0, i32 17
  %61 = load i32, ptr %60, align 4, !tbaa !32
  %62 = sext i32 %61 to i64
  call void @_ZNSt6vectorIdSaIdEE6resizeEm(ptr noundef nonnull align 8 dereferenceable(24) %59, i64 noundef %62)
  %63 = getelementptr inbounds %class.HighsCutGeneration, ptr %27, i32 0, i32 7
  %64 = getelementptr inbounds %class.HighsCutGeneration, ptr %27, i32 0, i32 17
  %65 = load i32, ptr %64, align 4, !tbaa !32
  %66 = sext i32 %65 to i64
  call void @_ZNSt6vectorIdSaIdEE6resizeEm(ptr noundef nonnull align 8 dereferenceable(24) %63, i64 noundef %66)
  call void @llvm.lifetime.start.p0(i64 8, ptr %14) #7
  %67 = getelementptr inbounds %class.HighsCutGeneration, ptr %27, i32 0, i32 0
  %68 = load ptr, ptr %67, align 8, !tbaa !33
  %69 = call noundef nonnull align 8 dereferenceable(496) ptr @_ZNK17HighsLpRelaxation12getMipSolverEv(ptr noundef nonnull align 8 dereferenceable(21425) %68)
  %70 = getelementptr inbounds %class.HighsMipSolver, ptr %69, i32 0, i32 25
  %71 = call noundef ptr @_ZNKSt10unique_ptrI18HighsMipSolverDataSt14default_deleteIS0_EEptEv(ptr noundef nonnull align 8 dereferenceable(8) %70) #7
  %72 = getelementptr inbounds %struct.HighsMipSolverData, ptr %71, i32 0, i32 3
  store ptr %72, ptr %14, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %15) #7
  store double 0.000000e+00, ptr %15, align 8, !tbaa !30
  call void @llvm.lifetime.start.p0(i64 4, ptr %16) #7
  store i32 0, ptr %16, align 4, !tbaa !35
  br label %73

73:                                               ; preds = %255, %5
  %74 = load i32, ptr %16, align 4, !tbaa !35
  %75 = getelementptr inbounds %class.HighsCutGeneration, ptr %27, i32 0, i32 17
  %76 = load i32, ptr %75, align 4, !tbaa !32
  %77 = icmp ne i32 %74, %76
  br i1 %77, label %79, label %78

78:                                               ; preds = %73
  call void @llvm.lifetime.end.p0(i64 4, ptr %16) #7
  br label %258

79:                                               ; preds = %73
  call void @llvm.lifetime.start.p0(i64 4, ptr %17) #7
  %80 = getelementptr inbounds %class.HighsCutGeneration, ptr %27, i32 0, i32 13
  %81 = load ptr, ptr %80, align 8, !tbaa !9
  %82 = load i32, ptr %16, align 4, !tbaa !35
  %83 = sext i32 %82 to i64
  %84 = getelementptr inbounds i32, ptr %81, i64 %83
  %85 = load i32, ptr %84, align 4, !tbaa !35
  store i32 %85, ptr %17, align 4, !tbaa !35
  %86 = load ptr, ptr %14, align 8, !tbaa !5
  %87 = getelementptr inbounds %class.HighsDomain, ptr %86, i32 0, i32 26
  %88 = load i32, ptr %17, align 4, !tbaa !35
  %89 = sext i32 %88 to i64
  %90 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt6vectorIdSaIdEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %87, i64 noundef %89) #7
  %91 = load double, ptr %90, align 8, !tbaa !30
  %92 = load ptr, ptr %14, align 8, !tbaa !5
  %93 = getelementptr inbounds %class.HighsDomain, ptr %92, i32 0, i32 25
  %94 = load i32, ptr %17, align 4, !tbaa !35
  %95 = sext i32 %94 to i64
  %96 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt6vectorIdSaIdEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %93, i64 noundef %95) #7
  %97 = load double, ptr %96, align 8, !tbaa !30
  %98 = fsub double %91, %97
  %99 = getelementptr inbounds %class.HighsCutGeneration, ptr %27, i32 0, i32 6
  %100 = load i32, ptr %16, align 4, !tbaa !35
  %101 = sext i32 %100 to i64
  %102 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt6vectorIdSaIdEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %99, i64 noundef %101) #7
  store double %98, ptr %102, align 8, !tbaa !30
  %103 = getelementptr inbounds %class.HighsCutGeneration, ptr %27, i32 0, i32 12
  %104 = load ptr, ptr %103, align 8, !tbaa !29
  %105 = load i32, ptr %16, align 4, !tbaa !35
  %106 = sext i32 %105 to i64
  %107 = getelementptr inbounds double, ptr %104, i64 %106
  %108 = load double, ptr %107, align 8, !tbaa !30
  %109 = fcmp olt double %108, 0.000000e+00
  br i1 %109, label %110, label %123

110:                                              ; preds = %79
  %111 = load ptr, ptr %14, align 8, !tbaa !5
  %112 = getelementptr inbounds %class.HighsDomain, ptr %111, i32 0, i32 26
  %113 = load i32, ptr %17, align 4, !tbaa !35
  %114 = sext i32 %113 to i64
  %115 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt6vectorIdSaIdEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %112, i64 noundef %114) #7
  %116 = load ptr, ptr %8, align 8, !tbaa !5
  %117 = getelementptr inbounds %class.HighsDomain, ptr %116, i32 0, i32 26
  %118 = load i32, ptr %17, align 4, !tbaa !35
  %119 = sext i32 %118 to i64
  %120 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt6vectorIdSaIdEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %117, i64 noundef %119) #7
  %121 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZSt3minIdERKT_S2_S2_(ptr noundef nonnull align 8 dereferenceable(8) %115, ptr noundef nonnull align 8 dereferenceable(8) %120)
  %122 = load double, ptr %121, align 8, !tbaa !30
  br label %136

123:                                              ; preds = %79
  %124 = load ptr, ptr %14, align 8, !tbaa !5
  %125 = getelementptr inbounds %class.HighsDomain, ptr %124, i32 0, i32 25
  %126 = load i32, ptr %17, align 4, !tbaa !35
  %127 = sext i32 %126 to i64
  %128 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt6vectorIdSaIdEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %125, i64 noundef %127) #7
  %129 = load ptr, ptr %8, align 8, !tbaa !5
  %130 = getelementptr inbounds %class.HighsDomain, ptr %129, i32 0, i32 25
  %131 = load i32, ptr %17, align 4, !tbaa !35
  %132 = sext i32 %131 to i64
  %133 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt6vectorIdSaIdEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %130, i64 noundef %132) #7
  %134 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZSt3maxIdERKT_S2_S2_(ptr noundef nonnull align 8 dereferenceable(8) %128, ptr noundef nonnull align 8 dereferenceable(8) %133)
  %135 = load double, ptr %134, align 8, !tbaa !30
  br label %136

136:                                              ; preds = %123, %110
  %137 = phi double [ %122, %110 ], [ %135, %123 ]
  %138 = getelementptr inbounds %class.HighsCutGeneration, ptr %27, i32 0, i32 7
  %139 = load i32, ptr %16, align 4, !tbaa !35
  %140 = sext i32 %139 to i64
  %141 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt6vectorIdSaIdEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %138, i64 noundef %140) #7
  store double %137, ptr %141, align 8, !tbaa !30
  %142 = getelementptr inbounds %class.HighsCutGeneration, ptr %27, i32 0, i32 12
  %143 = load ptr, ptr %142, align 8, !tbaa !29
  %144 = load i32, ptr %16, align 4, !tbaa !35
  %145 = sext i32 %144 to i64
  %146 = getelementptr inbounds double, ptr %143, i64 %145
  %147 = load double, ptr %146, align 8, !tbaa !30
  %148 = fcmp olt double %147, 0.000000e+00
  br i1 %148, label %149, label %205

149:                                              ; preds = %136
  %150 = load ptr, ptr %14, align 8, !tbaa !5
  %151 = getelementptr inbounds %class.HighsDomain, ptr %150, i32 0, i32 26
  %152 = load i32, ptr %17, align 4, !tbaa !35
  %153 = sext i32 %152 to i64
  %154 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt6vectorIdSaIdEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %151, i64 noundef %153) #7
  %155 = load double, ptr %154, align 8, !tbaa !30
  %156 = fcmp une double %155, 0x7FF0000000000000
  br i1 %156, label %157, label %205

157:                                              ; preds = %149
  %158 = load ptr, ptr %14, align 8, !tbaa !5
  %159 = getelementptr inbounds %class.HighsDomain, ptr %158, i32 0, i32 26
  %160 = load i32, ptr %17, align 4, !tbaa !35
  %161 = sext i32 %160 to i64
  %162 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt6vectorIdSaIdEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %159, i64 noundef %161) #7
  %163 = load double, ptr %162, align 8, !tbaa !30
  %164 = getelementptr inbounds %class.HighsCutGeneration, ptr %27, i32 0, i32 12
  %165 = load ptr, ptr %164, align 8, !tbaa !29
  %166 = load i32, ptr %16, align 4, !tbaa !35
  %167 = sext i32 %166 to i64
  %168 = getelementptr inbounds double, ptr %165, i64 %167
  %169 = load double, ptr %168, align 8, !tbaa !30
  %170 = fmul double %163, %169
  %171 = getelementptr inbounds %class.HighsCutGeneration, ptr %27, i32 0, i32 14
  %172 = call noundef nonnull align 8 dereferenceable(16) ptr @_ZN12HighsCDoublemIEd(ptr noundef nonnull align 8 dereferenceable(16) %171, double noundef %170)
  %173 = getelementptr inbounds %class.HighsCutGeneration, ptr %27, i32 0, i32 12
  %174 = load ptr, ptr %173, align 8, !tbaa !29
  %175 = load i32, ptr %16, align 4, !tbaa !35
  %176 = sext i32 %175 to i64
  %177 = getelementptr inbounds double, ptr %174, i64 %176
  %178 = load double, ptr %177, align 8, !tbaa !30
  %179 = fneg double %178
  %180 = getelementptr inbounds %class.HighsCutGeneration, ptr %27, i32 0, i32 12
  %181 = load ptr, ptr %180, align 8, !tbaa !29
  %182 = load i32, ptr %16, align 4, !tbaa !35
  %183 = sext i32 %182 to i64
  %184 = getelementptr inbounds double, ptr %181, i64 %183
  store double %179, ptr %184, align 8, !tbaa !30
  %185 = getelementptr inbounds %class.HighsCutGeneration, ptr %27, i32 0, i32 8
  %186 = load i32, ptr %16, align 4, !tbaa !35
  %187 = sext i32 %186 to i64
  %188 = call noundef nonnull align 1 dereferenceable(1) ptr @_ZNSt6vectorIhSaIhEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %185, i64 noundef %187) #7
  store i8 1, ptr %188, align 1, !tbaa !34
  %189 = load ptr, ptr %14, align 8, !tbaa !5
  %190 = getelementptr inbounds %class.HighsDomain, ptr %189, i32 0, i32 26
  %191 = load i32, ptr %17, align 4, !tbaa !35
  %192 = sext i32 %191 to i64
  %193 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt6vectorIdSaIdEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %190, i64 noundef %192) #7
  %194 = load double, ptr %193, align 8, !tbaa !30
  %195 = getelementptr inbounds %class.HighsCutGeneration, ptr %27, i32 0, i32 7
  %196 = load i32, ptr %16, align 4, !tbaa !35
  %197 = sext i32 %196 to i64
  %198 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt6vectorIdSaIdEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %195, i64 noundef %197) #7
  %199 = load double, ptr %198, align 8, !tbaa !30
  %200 = fsub double %194, %199
  %201 = getelementptr inbounds %class.HighsCutGeneration, ptr %27, i32 0, i32 7
  %202 = load i32, ptr %16, align 4, !tbaa !35
  %203 = sext i32 %202 to i64
  %204 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt6vectorIdSaIdEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %201, i64 noundef %203) #7
  store double %200, ptr %204, align 8, !tbaa !30
  br label %241

205:                                              ; preds = %149, %136
  %206 = load ptr, ptr %14, align 8, !tbaa !5
  %207 = getelementptr inbounds %class.HighsDomain, ptr %206, i32 0, i32 25
  %208 = load i32, ptr %17, align 4, !tbaa !35
  %209 = sext i32 %208 to i64
  %210 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt6vectorIdSaIdEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %207, i64 noundef %209) #7
  %211 = load double, ptr %210, align 8, !tbaa !30
  %212 = getelementptr inbounds %class.HighsCutGeneration, ptr %27, i32 0, i32 12
  %213 = load ptr, ptr %212, align 8, !tbaa !29
  %214 = load i32, ptr %16, align 4, !tbaa !35
  %215 = sext i32 %214 to i64
  %216 = getelementptr inbounds double, ptr %213, i64 %215
  %217 = load double, ptr %216, align 8, !tbaa !30
  %218 = fmul double %211, %217
  %219 = getelementptr inbounds %class.HighsCutGeneration, ptr %27, i32 0, i32 14
  %220 = call noundef nonnull align 8 dereferenceable(16) ptr @_ZN12HighsCDoublemIEd(ptr noundef nonnull align 8 dereferenceable(16) %219, double noundef %218)
  %221 = getelementptr inbounds %class.HighsCutGeneration, ptr %27, i32 0, i32 8
  %222 = load i32, ptr %16, align 4, !tbaa !35
  %223 = sext i32 %222 to i64
  %224 = call noundef nonnull align 1 dereferenceable(1) ptr @_ZNSt6vectorIhSaIhEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %221, i64 noundef %223) #7
  store i8 0, ptr %224, align 1, !tbaa !34
  %225 = getelementptr inbounds %class.HighsCutGeneration, ptr %27, i32 0, i32 7
  %226 = load i32, ptr %16, align 4, !tbaa !35
  %227 = sext i32 %226 to i64
  %228 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt6vectorIdSaIdEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %225, i64 noundef %227) #7
  %229 = load double, ptr %228, align 8, !tbaa !30
  %230 = load ptr, ptr %14, align 8, !tbaa !5
  %231 = getelementptr inbounds %class.HighsDomain, ptr %230, i32 0, i32 25
  %232 = load i32, ptr %17, align 4, !tbaa !35
  %233 = sext i32 %232 to i64
  %234 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt6vectorIdSaIdEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %231, i64 noundef %233) #7
  %235 = load double, ptr %234, align 8, !tbaa !30
  %236 = fsub double %229, %235
  %237 = getelementptr inbounds %class.HighsCutGeneration, ptr %27, i32 0, i32 7
  %238 = load i32, ptr %16, align 4, !tbaa !35
  %239 = sext i32 %238 to i64
  %240 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt6vectorIdSaIdEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %237, i64 noundef %239) #7
  store double %236, ptr %240, align 8, !tbaa !30
  br label %241

241:                                              ; preds = %205, %157
  %242 = getelementptr inbounds %class.HighsCutGeneration, ptr %27, i32 0, i32 7
  %243 = load i32, ptr %16, align 4, !tbaa !35
  %244 = sext i32 %243 to i64
  %245 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt6vectorIdSaIdEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %242, i64 noundef %244) #7
  %246 = load double, ptr %245, align 8, !tbaa !30
  %247 = getelementptr inbounds %class.HighsCutGeneration, ptr %27, i32 0, i32 12
  %248 = load ptr, ptr %247, align 8, !tbaa !29
  %249 = load i32, ptr %16, align 4, !tbaa !35
  %250 = sext i32 %249 to i64
  %251 = getelementptr inbounds double, ptr %248, i64 %250
  %252 = load double, ptr %251, align 8, !tbaa !30
  %253 = load double, ptr %15, align 8, !tbaa !30
  %254 = call double @llvm.fmuladd.f64(double %246, double %252, double %253)
  store double %254, ptr %15, align 8, !tbaa !30
  call void @llvm.lifetime.end.p0(i64 4, ptr %17) #7
  br label %255

255:                                              ; preds = %241
  %256 = load i32, ptr %16, align 4, !tbaa !35
  %257 = add nsw i32 %256, 1
  store i32 %257, ptr %16, align 4, !tbaa !35
  br label %73, !llvm.loop !36

258:                                              ; preds = %78
  %259 = load double, ptr %15, align 8, !tbaa !30
  %260 = getelementptr inbounds %class.HighsCutGeneration, ptr %27, i32 0, i32 14
  %261 = call noundef zeroext i1 @_ZgtdRK12HighsCDouble(double noundef %259, ptr noundef nonnull align 8 dereferenceable(16) %260)
  br i1 %261, label %262, label %285

262:                                              ; preds = %258
  call void @llvm.lifetime.start.p0(i64 8, ptr %18) #7
  %263 = getelementptr inbounds %class.HighsCutGeneration, ptr %27, i32 0, i32 14
  %264 = call noundef double @_ZNK12HighsCDoublecvdEv(ptr noundef nonnull align 8 dereferenceable(16) %263)
  %265 = load double, ptr %15, align 8, !tbaa !30
  %266 = fdiv double %264, %265
  store double %266, ptr %18, align 8, !tbaa !30
  call void @llvm.lifetime.start.p0(i64 4, ptr %19) #7
  store i32 0, ptr %19, align 4, !tbaa !35
  br label %267

267:                                              ; preds = %281, %262
  %268 = load i32, ptr %19, align 4, !tbaa !35
  %269 = getelementptr inbounds %class.HighsCutGeneration, ptr %27, i32 0, i32 17
  %270 = load i32, ptr %269, align 4, !tbaa !32
  %271 = icmp ne i32 %268, %270
  br i1 %271, label %273, label %272

272:                                              ; preds = %267
  call void @llvm.lifetime.end.p0(i64 4, ptr %19) #7
  br label %284

273:                                              ; preds = %267
  %274 = load double, ptr %18, align 8, !tbaa !30
  %275 = getelementptr inbounds %class.HighsCutGeneration, ptr %27, i32 0, i32 7
  %276 = load i32, ptr %19, align 4, !tbaa !35
  %277 = sext i32 %276 to i64
  %278 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt6vectorIdSaIdEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %275, i64 noundef %277) #7
  %279 = load double, ptr %278, align 8, !tbaa !30
  %280 = fmul double %279, %274
  store double %280, ptr %278, align 8, !tbaa !30
  br label %281

281:                                              ; preds = %273
  %282 = load i32, ptr %19, align 4, !tbaa !35
  %283 = add nsw i32 %282, 1
  store i32 %283, ptr %19, align 4, !tbaa !35
  br label %267, !llvm.loop !38

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

285:                                              ; preds = %284, %258
  call void @llvm.lifetime.start.p0(i64 1, ptr %20) #7
  store i8 0, ptr %20, align 1, !tbaa !39
  call void @llvm.lifetime.start.p0(i64 1, ptr %21) #7
  store i8 0, ptr %21, align 1, !tbaa !39
  call void @llvm.lifetime.start.p0(i64 1, ptr %22) #7
  store i8 0, ptr %22, align 1, !tbaa !39
  %286 = call noundef zeroext i1 @_ZN18HighsCutGeneration24preprocessBaseInequalityERbS0_S0_(ptr noundef nonnull align 8 dereferenceable(288) %27, ptr noundef nonnull align 1 dereferenceable(1) %20, ptr noundef nonnull align 1 dereferenceable(1) %21, ptr noundef nonnull align 1 dereferenceable(1) %22)
  br i1 %286, label %288, label %287

287:                                              ; preds = %285
  store i1 false, ptr %6, align 1
  store i32 1, ptr %23, align 4
  br label %433

288:                                              ; preds = %285
  %289 = load ptr, ptr %9, align 8, !tbaa !5
  %290 = load ptr, ptr %10, align 8, !tbaa !5
  %291 = load i8, ptr %20, align 1, !tbaa !39, !range !40, !noundef !41
  %292 = trunc i8 %291 to i1
  %293 = load i8, ptr %21, align 1, !tbaa !39, !range !40, !noundef !41
  %294 = trunc i8 %293 to i1
  %295 = load i8, ptr %22, align 1, !tbaa !39, !range !40, !noundef !41
  %296 = trunc i8 %295 to i1
  %297 = getelementptr inbounds %class.HighsCutGeneration, ptr %27, i32 0, i32 10
  %298 = load double, ptr %297, align 8, !tbaa !42
  %299 = call noundef zeroext i1 @_ZN18HighsCutGeneration14tryGenerateCutERSt6vectorIiSaIiEERS0_IdSaIdEEbbbdbbb(ptr noundef nonnull align 8 dereferenceable(288) %27, ptr noundef nonnull align 8 dereferenceable(24) %289, ptr noundef nonnull align 8 dereferenceable(24) %290, i1 noundef zeroext %292, i1 noundef zeroext %294, i1 noundef zeroext %296, double noundef %298, i1 noundef zeroext false, i1 noundef zeroext false, i1 noundef zeroext false)
  br i1 %299, label %301, label %300

300:                                              ; preds = %288
  store i1 false, ptr %6, align 1
  store i32 1, ptr %23, align 4
  br label %433

301:                                              ; preds = %288
  %302 = getelementptr inbounds %class.HighsCutGeneration, ptr %27, i32 0, i32 8
  %303 = call noundef zeroext i1 @_ZNKSt6vectorIhSaIhEE5emptyEv(ptr noundef nonnull align 8 dereferenceable(24) %302) #7
  br i1 %303, label %377, label %304

304:                                              ; preds = %301
  call void @llvm.lifetime.start.p0(i64 4, ptr %24) #7
  store i32 0, ptr %24, align 4, !tbaa !35
  br label %305

305:                                              ; preds = %373, %304
  %306 = load i32, ptr %24, align 4, !tbaa !35
  %307 = getelementptr inbounds %class.HighsCutGeneration, ptr %27, i32 0, i32 17
  %308 = load i32, ptr %307, align 4, !tbaa !32
  %309 = icmp ne i32 %306, %308
  br i1 %309, label %311, label %310

310:                                              ; preds = %305
  store i32 8, ptr %23, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %24) #7
  br label %376

311:                                              ; preds = %305
  %312 = getelementptr inbounds %class.HighsCutGeneration, ptr %27, i32 0, i32 8
  %313 = load i32, ptr %24, align 4, !tbaa !35
  %314 = sext i32 %313 to i64
  %315 = call noundef nonnull align 1 dereferenceable(1) ptr @_ZNSt6vectorIhSaIhEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %312, i64 noundef %314) #7
  %316 = load i8, ptr %315, align 1, !tbaa !34
  %317 = icmp ne i8 %316, 0
  br i1 %317, label %318, label %351

318:                                              ; preds = %311
  %319 = load ptr, ptr %14, align 8, !tbaa !5
  %320 = getelementptr inbounds %class.HighsDomain, ptr %319, i32 0, i32 26
  %321 = getelementptr inbounds %class.HighsCutGeneration, ptr %27, i32 0, i32 13
  %322 = load ptr, ptr %321, align 8, !tbaa !9
  %323 = load i32, ptr %24, align 4, !tbaa !35
  %324 = sext i32 %323 to i64
  %325 = getelementptr inbounds i32, ptr %322, i64 %324
  %326 = load i32, ptr %325, align 4, !tbaa !35
  %327 = sext i32 %326 to i64
  %328 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt6vectorIdSaIdEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %320, i64 noundef %327) #7
  %329 = load double, ptr %328, align 8, !tbaa !30
  %330 = getelementptr inbounds %class.HighsCutGeneration, ptr %27, i32 0, i32 12
  %331 = load ptr, ptr %330, align 8, !tbaa !29
  %332 = load i32, ptr %24, align 4, !tbaa !35
  %333 = sext i32 %332 to i64
  %334 = getelementptr inbounds double, ptr %331, i64 %333
  %335 = load double, ptr %334, align 8, !tbaa !30
  %336 = fmul double %329, %335
  %337 = getelementptr inbounds %class.HighsCutGeneration, ptr %27, i32 0, i32 14
  %338 = call noundef nonnull align 8 dereferenceable(16) ptr @_ZN12HighsCDoublemIEd(ptr noundef nonnull align 8 dereferenceable(16) %337, double noundef %336)
  %339 = getelementptr inbounds %class.HighsCutGeneration, ptr %27, i32 0, i32 12
  %340 = load ptr, ptr %339, align 8, !tbaa !29
  %341 = load i32, ptr %24, align 4, !tbaa !35
  %342 = sext i32 %341 to i64
  %343 = getelementptr inbounds double, ptr %340, i64 %342
  %344 = load double, ptr %343, align 8, !tbaa !30
  %345 = fneg double %344
  %346 = getelementptr inbounds %class.HighsCutGeneration, ptr %27, i32 0, i32 12
  %347 = load ptr, ptr %346, align 8, !tbaa !29
  %348 = load i32, ptr %24, align 4, !tbaa !35
  %349 = sext i32 %348 to i64
  %350 = getelementptr inbounds double, ptr %347, i64 %349
  store double %345, ptr %350, align 8, !tbaa !30
  br label %372

351:                                              ; preds = %311
  %352 = load ptr, ptr %14, align 8, !tbaa !5
  %353 = getelementptr inbounds %class.HighsDomain, ptr %352, i32 0, i32 25
  %354 = getelementptr inbounds %class.HighsCutGeneration, ptr %27, i32 0, i32 13
  %355 = load ptr, ptr %354, align 8, !tbaa !9
  %356 = load i32, ptr %24, align 4, !tbaa !35
  %357 = sext i32 %356 to i64
  %358 = getelementptr inbounds i32, ptr %355, i64 %357
  %359 = load i32, ptr %358, align 4, !tbaa !35
  %360 = sext i32 %359 to i64
  %361 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt6vectorIdSaIdEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %353, i64 noundef %360) #7
  %362 = load double, ptr %361, align 8, !tbaa !30
  %363 = getelementptr inbounds %class.HighsCutGeneration, ptr %27, i32 0, i32 12
  %364 = load ptr, ptr %363, align 8, !tbaa !29
  %365 = load i32, ptr %24, align 4, !tbaa !35
  %366 = sext i32 %365 to i64
  %367 = getelementptr inbounds double, ptr %364, i64 %366
  %368 = load double, ptr %367, align 8, !tbaa !30
  %369 = fmul double %362, %368
  %370 = getelementptr inbounds %class.HighsCutGeneration, ptr %27, i32 0, i32 14
  %371 = call noundef nonnull align 8 dereferenceable(16) ptr @_ZN12HighsCDoublepLEd(ptr noundef nonnull align 8 dereferenceable(16) %370, double noundef %369)
  br label %372

372:                                              ; preds = %351, %318
  br label %373

373:                                              ; preds = %372
  %374 = load i32, ptr %24, align 4, !tbaa !35
  %375 = add nsw i32 %374, 1
  store i32 %375, ptr %24, align 4, !tbaa !35
  br label %305, !llvm.loop !43

376:                                              ; preds = %310
  br label %377

377:                                              ; preds = %376, %301
  %378 = call noundef zeroext i1 @_ZN18HighsCutGeneration14postprocessCutEv(ptr noundef nonnull align 8 dereferenceable(288) %27)
  br i1 %378, label %380, label %379

379:                                              ; preds = %377
  store i1 false, ptr %6, align 1
  store i32 1, ptr %23, align 4
  br label %433

380:                                              ; preds = %377
  %381 = load ptr, ptr %10, align 8, !tbaa !5
  %382 = getelementptr inbounds %class.HighsCutGeneration, ptr %27, i32 0, i32 17
  %383 = load i32, ptr %382, align 4, !tbaa !32
  %384 = sext i32 %383 to i64
  call void @_ZNSt6vectorIdSaIdEE6resizeEm(ptr noundef nonnull align 8 dereferenceable(24) %381, i64 noundef %384)
  %385 = load ptr, ptr %9, align 8, !tbaa !5
  %386 = getelementptr inbounds %class.HighsCutGeneration, ptr %27, i32 0, i32 17
  %387 = load i32, ptr %386, align 4, !tbaa !32
  %388 = sext i32 %387 to i64
  call void @_ZNSt6vectorIiSaIiEE6resizeEm(ptr noundef nonnull align 8 dereferenceable(24) %385, i64 noundef %388)
  %389 = getelementptr inbounds %class.HighsCutGeneration, ptr %27, i32 0, i32 14
  %390 = call noundef double @_ZNK12HighsCDoublecvdEv(ptr noundef nonnull align 8 dereferenceable(16) %389)
  %391 = load ptr, ptr %11, align 8, !tbaa !5
  store double %390, ptr %391, align 8, !tbaa !30
  call void @llvm.lifetime.start.p0(i64 1, ptr %25) #7
  %392 = getelementptr inbounds %class.HighsCutGeneration, ptr %27, i32 0, i32 15
  %393 = load i8, ptr %392, align 8, !tbaa !44, !range !40, !noundef !41
  %394 = trunc i8 %393 to i1
  br i1 %394, label %395, label %399

395:                                              ; preds = %380
  %396 = getelementptr inbounds %class.HighsCutGeneration, ptr %27, i32 0, i32 16
  %397 = load i8, ptr %396, align 1, !tbaa !45, !range !40, !noundef !41
  %398 = trunc i8 %397 to i1
  br label %399

399:                                              ; preds = %395, %380
  %400 = phi i1 [ false, %380 ], [ %398, %395 ]
  %401 = zext i1 %400 to i8
  store i8 %401, ptr %25, align 1, !tbaa !39
  %402 = getelementptr inbounds %class.HighsCutGeneration, ptr %27, i32 0, i32 0
  %403 = load ptr, ptr %402, align 8, !tbaa !33
  %404 = call noundef nonnull align 8 dereferenceable(496) ptr @_ZNK17HighsLpRelaxation12getMipSolverEv(ptr noundef nonnull align 8 dereferenceable(21425) %403)
  %405 = getelementptr inbounds %class.HighsMipSolver, ptr %404, i32 0, i32 25
  %406 = call noundef ptr @_ZNKSt10unique_ptrI18HighsMipSolverDataSt14default_deleteIS0_EEptEv(ptr noundef nonnull align 8 dereferenceable(8) %405) #7
  %407 = getelementptr inbounds %struct.HighsMipSolverData, ptr %406, i32 0, i32 3
  %408 = load ptr, ptr %9, align 8, !tbaa !5
  %409 = call noundef ptr @_ZNSt6vectorIiSaIiEE4dataEv(ptr noundef nonnull align 8 dereferenceable(24) %408) #7
  %410 = load ptr, ptr %10, align 8, !tbaa !5
  %411 = call noundef ptr @_ZNSt6vectorIdSaIdEE4dataEv(ptr noundef nonnull align 8 dereferenceable(24) %410) #7
  %412 = getelementptr inbounds %class.HighsCutGeneration, ptr %27, i32 0, i32 17
  %413 = load i32, ptr %412, align 4, !tbaa !32
  %414 = load ptr, ptr %11, align 8, !tbaa !5
  call void @_ZNK11HighsDomain19tightenCoefficientsEPiPdiRd(ptr noundef nonnull align 8 dereferenceable(824) %407, ptr noundef %409, ptr noundef %411, i32 noundef %413, ptr noundef nonnull align 8 dereferenceable(8) %414)
  call void @llvm.lifetime.start.p0(i64 4, ptr %26) #7
  %415 = getelementptr inbounds %class.HighsCutGeneration, ptr %27, i32 0, i32 1
  %416 = load ptr, ptr %415, align 8, !tbaa !46
  %417 = getelementptr inbounds %class.HighsCutGeneration, ptr %27, i32 0, i32 0
  %418 = load ptr, ptr %417, align 8, !tbaa !33
  %419 = call noundef nonnull align 8 dereferenceable(496) ptr @_ZNK17HighsLpRelaxation12getMipSolverEv(ptr noundef nonnull align 8 dereferenceable(21425) %418)
  %420 = load ptr, ptr %9, align 8, !tbaa !5
  %421 = call noundef ptr @_ZNSt6vectorIiSaIiEE4dataEv(ptr noundef nonnull align 8 dereferenceable(24) %420) #7
  %422 = load ptr, ptr %10, align 8, !tbaa !5
  %423 = call noundef ptr @_ZNSt6vectorIdSaIdEE4dataEv(ptr noundef nonnull align 8 dereferenceable(24) %422) #7
  %424 = getelementptr inbounds %class.HighsCutGeneration, ptr %27, i32 0, i32 17
  %425 = load i32, ptr %424, align 4, !tbaa !32
  %426 = load ptr, ptr %11, align 8, !tbaa !5
  %427 = load double, ptr %426, align 8, !tbaa !30
  %428 = load i8, ptr %25, align 1, !tbaa !39, !range !40, !noundef !41
  %429 = trunc i8 %428 to i1
  %430 = call noundef i32 @_ZN12HighsCutPool6addCutERK14HighsMipSolverPiPdidbbbb(ptr noundef nonnull align 8 dereferenceable(680) %416, ptr noundef nonnull align 8 dereferenceable(496) %419, ptr noundef %421, ptr noundef %423, i32 noundef %425, double noundef %427, i1 noundef zeroext %429, i1 noundef zeroext true, i1 noundef zeroext true, i1 noundef zeroext true)
  store i32 %430, ptr %26, align 4, !tbaa !35
  %431 = load i32, ptr %26, align 4, !tbaa !35
  %432 = icmp ne i32 %431, -1
  store i1 %432, ptr %6, align 1
  store i32 1, ptr %23, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %26) #7
  call void @llvm.lifetime.end.p0(i64 1, ptr %25) #7
  br label %433

433:                                              ; preds = %399, %379, %300, %287
  call void @llvm.lifetime.end.p0(i64 1, ptr %22) #7
  call void @llvm.lifetime.end.p0(i64 1, ptr %21) #7
  call void @llvm.lifetime.end.p0(i64 1, ptr %20) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %15) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %14) #7
  %434 = load i1, ptr %6, align 1
  ret i1 %434
}

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

attributes #0 = { nocallback nofree nosync nounwind willreturn memory(argmem: readwrite) }
attributes #1 = { mustprogress nounwind uwtable "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }
attributes #2 = { nocallback nofree nounwind willreturn memory(argmem: readwrite) }
attributes #3 = { mustprogress uwtable "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }
attributes #4 = { 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 = { nocallback nofree nosync nounwind speculatable willreturn memory(none) }
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 = { 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, !6, i64 200}
!10 = !{!"_ZTS18HighsCutGeneration", !6, i64 0, !6, i64 8, !11, i64 16, !13, i64 24, !17, i64 48, !17, i64 64, !19, i64 80, !19, i64 104, !23, i64 128, !23, i64 152, !18, i64 176, !18, i64 184, !6, i64 192, !6, i64 200, !17, i64 208, !27, i64 224, !27, i64 225, !28, i64 228, !18, i64 232, !13, i64 240, !19, i64 264}
!11 = !{!"_ZTS11HighsRandom", !12, i64 0}
!12 = !{!"long", !7, i64 0}
!13 = !{!"_ZTSSt6vectorIiSaIiEE", !14, i64 0}
!14 = !{!"_ZTSSt12_Vector_baseIiSaIiEE", !15, i64 0}
!15 = !{!"_ZTSNSt12_Vector_baseIiSaIiEE12_Vector_implE", !16, i64 0}
!16 = !{!"_ZTSNSt12_Vector_baseIiSaIiEE17_Vector_impl_dataE", !6, i64 0, !6, i64 8, !6, i64 16}
!17 = !{!"_ZTS12HighsCDouble", !18, i64 0, !18, i64 8}
!18 = !{!"double", !7, i64 0}
!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", !6, i64 0, !6, i64 8, !6, 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", !6, i64 0, !6, i64 8, !6, i64 16}
!27 = !{!"bool", !7, i64 0}
!28 = !{!"int", !7, i64 0}
!29 = !{!10, !6, i64 192}
!30 = !{!18, !18, i64 0}
!31 = !{i64 0, i64 8, !30, i64 8, i64 8, !30}
!32 = !{!10, !28, i64 228}
!33 = !{!10, !6, i64 0}
!34 = !{!7, !7, i64 0}
!35 = !{!28, !28, i64 0}
!36 = distinct !{!36, !37}
!37 = !{!"llvm.loop.mustprogress"}
!38 = distinct !{!38, !37}
!39 = !{!27, !27, i64 0}
!40 = !{i8 0, i8 2}
!41 = !{}
!42 = !{!10, !18, i64 176}
!43 = distinct !{!43, !37}
!44 = !{!10, !27, i64 224}
!45 = !{!10, !27, i64 225}
!46 = !{!10, !6, i64 8}


; 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.HighsCDouble = type { double, double }

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

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

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

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

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

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

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

; Function Attrs: mustprogress 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) #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 #3 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 double @_ZNK12HighsCDoublecvdEv(ptr noundef nonnull align 8 dereferenceable(16)) local_unnamed_addr #1 align 2

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

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

; Function Attrs: inlinehint mustprogress nounwind uwtable
declare dso_local noundef nonnull align 8 dereferenceable(8) ptr @_ZSt3minIdERKT_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 noundef nonnull align 8 dereferenceable(16) ptr @_ZN12HighsCDoublemIEd(ptr noundef nonnull align 8 dereferenceable(16), double noundef) local_unnamed_addr #3 align 2

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

; Function Attrs: mustprogress uwtable
declare dso_local noundef zeroext i1 @_ZN18HighsCutGeneration14postprocessCutEv(ptr noundef nonnull align 8 dereferenceable(288)) local_unnamed_addr #3 align 2

; Function Attrs: mustprogress uwtable
declare dso_local noundef zeroext i1 @_ZN18HighsCutGeneration24preprocessBaseInequalityERbS0_S0_(ptr noundef nonnull align 8 dereferenceable(288), ptr noundef nonnull align 1 dereferenceable(1), ptr noundef nonnull align 1 dereferenceable(1), ptr noundef nonnull align 1 dereferenceable(1)) local_unnamed_addr #3 align 2

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

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

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

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

; Function Attrs: mustprogress uwtable
declare dso_local noundef zeroext i1 @_ZN18HighsCutGeneration14tryGenerateCutERSt6vectorIiSaIiEERS0_IdSaIdEEbbbdbbb(ptr noundef nonnull align 8 dereferenceable(288), ptr noundef nonnull align 8 dereferenceable(24), ptr noundef nonnull align 8 dereferenceable(24), i1 noundef zeroext, i1 noundef zeroext, i1 noundef zeroext, double noundef, i1 noundef zeroext, i1 noundef zeroext, i1 noundef zeroext) local_unnamed_addr #3 align 2

; Function Attrs: mustprogress nounwind uwtable
declare dso_local void @_ZNK13HighsDebugSol8checkCutEPKiPKdid(ptr noundef nonnull align 1 dereferenceable(1), ptr noundef, ptr noundef, i32 noundef, double noundef) local_unnamed_addr #1 align 2

declare void @_ZNK11HighsDomain19tightenCoefficientsEPiPdiRd(ptr noundef nonnull align 8 dereferenceable(824), ptr noundef, ptr noundef, i32 noundef, ptr noundef nonnull align 8 dereferenceable(8)) local_unnamed_addr #6

declare noundef i32 @_ZN12HighsCutPool6addCutERK14HighsMipSolverPiPdidbbbb(ptr noundef nonnull align 8 dereferenceable(680), ptr noundef nonnull align 8 dereferenceable(496), ptr noundef, ptr noundef, i32 noundef, double noundef, i1 noundef zeroext, i1 noundef zeroext, i1 noundef zeroext, i1 noundef zeroext) local_unnamed_addr #6

; Function Attrs: mustprogress uwtable
define dso_local noundef zeroext i1 @_ZN18HighsCutGeneration16generateConflictER11HighsDomainRSt6vectorIiSaIiEERS2_IdSaIdEERd(ptr noundef nonnull align 8 dereferenceable(288) %0, ptr noundef nonnull align 8 dereferenceable(824) %1, ptr noundef nonnull align 8 dereferenceable(24) %2, ptr noundef nonnull align 8 dereferenceable(24) %3, ptr noundef nonnull align 8 dereferenceable(8) %4) local_unnamed_addr #3 align 2 {
  %6 = alloca %class.HighsCDouble, align 8
  %7 = alloca i8, align 1
  %8 = alloca i8, align 1
  %9 = alloca i8, align 1
  %10 = alloca i8, align 1
  %11 = tail call noundef ptr @_ZNSt6vectorIiSaIiEE4dataEv(ptr noundef nonnull align 8 dereferenceable(24) %2) #7
  %12 = getelementptr inbounds i8, ptr %0, i64 200
  store ptr %11, ptr %12, align 8, !tbaa !5
  %13 = tail call noundef ptr @_ZNSt6vectorIdSaIdEE4dataEv(ptr noundef nonnull align 8 dereferenceable(24) %3) #7
  %14 = getelementptr inbounds i8, ptr %0, i64 192
  store ptr %13, ptr %14, align 8, !tbaa !28
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %6) #7
  %15 = load double, ptr %4, align 8, !tbaa !29
  call void @_ZN12HighsCDoubleC2Ed(ptr noundef nonnull align 8 dereferenceable(16) %6, double noundef %15)
  %16 = getelementptr inbounds i8, ptr %0, i64 208
  call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(16) %16, ptr noundef nonnull align 8 dereferenceable(16) %6, i64 16, i1 false), !tbaa.struct !30
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %6) #7
  %17 = call noundef i64 @_ZNKSt6vectorIiSaIiEE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24) %2) #7
  %18 = trunc i64 %17 to i32
  %19 = getelementptr inbounds i8, ptr %0, i64 228
  store i32 %18, ptr %19, align 4, !tbaa !31
  %20 = load ptr, ptr %0, align 8, !tbaa !32
  %21 = call noundef nonnull align 8 dereferenceable(496) ptr @_ZNK17HighsLpRelaxation12getMipSolverEv(ptr noundef nonnull align 8 dereferenceable(21425) %20)
  %22 = getelementptr inbounds i8, ptr %21, i64 224
  %23 = call noundef ptr @_ZNKSt10unique_ptrI18HighsMipSolverDataSt14default_deleteIS0_EEptEv(ptr noundef nonnull align 8 dereferenceable(8) %22) #7
  %24 = getelementptr inbounds i8, ptr %23, i64 26800
  %25 = load ptr, ptr %12, align 8, !tbaa !5
  %26 = load ptr, ptr %14, align 8, !tbaa !28
  %27 = load i32, ptr %19, align 4, !tbaa !31
  %28 = load double, ptr %4, align 8, !tbaa !29
  call void @_ZNK13HighsDebugSol8checkCutEPKiPKdid(ptr noundef nonnull align 1 dereferenceable(1) %24, ptr noundef %25, ptr noundef %26, i32 noundef %27, double noundef %28)
  %29 = getelementptr inbounds i8, ptr %0, i64 128
  %30 = load i32, ptr %19, align 4, !tbaa !31
  %31 = sext i32 %30 to i64
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %7) #7
  store i8 0, ptr %7, align 1, !tbaa !33
  call void @_ZNSt6vectorIhSaIhEE6assignEmRKh(ptr noundef nonnull align 8 dereferenceable(24) %29, i64 noundef %31, ptr noundef nonnull align 1 dereferenceable(1) %7)
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %7) #7
  %32 = getelementptr inbounds i8, ptr %0, i64 80
  %33 = load i32, ptr %19, align 4, !tbaa !31
  %34 = sext i32 %33 to i64
  call void @_ZNSt6vectorIdSaIdEE6resizeEm(ptr noundef nonnull align 8 dereferenceable(24) %32, i64 noundef %34)
  %35 = getelementptr inbounds i8, ptr %0, i64 104
  %36 = load i32, ptr %19, align 4, !tbaa !31
  %37 = sext i32 %36 to i64
  call void @_ZNSt6vectorIdSaIdEE6resizeEm(ptr noundef nonnull align 8 dereferenceable(24) %35, i64 noundef %37)
  %38 = load ptr, ptr %0, align 8, !tbaa !32
  %39 = call noundef nonnull align 8 dereferenceable(496) ptr @_ZNK17HighsLpRelaxation12getMipSolverEv(ptr noundef nonnull align 8 dereferenceable(21425) %38)
  %40 = getelementptr inbounds i8, ptr %39, i64 224
  %41 = call noundef ptr @_ZNKSt10unique_ptrI18HighsMipSolverDataSt14default_deleteIS0_EEptEv(ptr noundef nonnull align 8 dereferenceable(8) %40) #7
  %42 = load i32, ptr %19, align 4, !tbaa !31
  %.not86 = icmp eq i32 %42, 0
  br i1 %.not86, label %._crit_edge, label %.lr.ph

.lr.ph:                                           ; preds = %5
  %43 = getelementptr inbounds i8, ptr %41, i64 1712
  %44 = getelementptr inbounds i8, ptr %41, i64 1688
  %45 = getelementptr inbounds i8, ptr %1, i64 776
  %46 = getelementptr inbounds i8, ptr %1, i64 800
  br label %48

._crit_edge:                                      ; preds = %110, %5
  %.078.lcssa = phi double [ 0.000000e+00, %5 ], [ %119, %110 ]
  %47 = call noundef zeroext i1 @_ZgtdRK12HighsCDouble(double noundef %.078.lcssa, ptr noundef nonnull align 8 dereferenceable(16) %16)
  br i1 %47, label %122, label %.loopexit85

48:                                               ; preds = %.lr.ph, %110
  %indvars.iv = phi i64 [ 0, %.lr.ph ], [ %indvars.iv.next, %110 ]
  %.07888 = phi double [ 0.000000e+00, %.lr.ph ], [ %119, %110 ]
  %49 = load ptr, ptr %12, align 8, !tbaa !5
  %50 = getelementptr inbounds i32, ptr %49, i64 %indvars.iv
  %51 = load i32, ptr %50, align 4, !tbaa !34
  %52 = sext i32 %51 to i64
  %53 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt6vectorIdSaIdEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %43, i64 noundef %52) #7
  %54 = load double, ptr %53, align 8, !tbaa !29
  %55 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt6vectorIdSaIdEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %44, i64 noundef %52) #7
  %56 = load double, ptr %55, align 8, !tbaa !29
  %57 = fsub double %54, %56
  %58 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt6vectorIdSaIdEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %32, i64 noundef %indvars.iv) #7
  store double %57, ptr %58, align 8, !tbaa !29
  %59 = load ptr, ptr %14, align 8, !tbaa !28
  %60 = getelementptr inbounds double, ptr %59, i64 %indvars.iv
  %61 = load double, ptr %60, align 8, !tbaa !29
  %62 = fcmp olt double %61, 0.000000e+00
  br i1 %62, label %63, label %67

63:                                               ; preds = %48
  %64 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt6vectorIdSaIdEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %43, i64 noundef %52) #7
  %65 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt6vectorIdSaIdEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %46, i64 noundef %52) #7
  %66 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZSt3minIdERKT_S2_S2_(ptr noundef nonnull align 8 dereferenceable(8) %64, ptr noundef nonnull align 8 dereferenceable(8) %65)
  br label %71

67:                                               ; preds = %48
  %68 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt6vectorIdSaIdEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %44, i64 noundef %52) #7
  %69 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt6vectorIdSaIdEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %45, i64 noundef %52) #7
  %70 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZSt3maxIdERKT_S2_S2_(ptr noundef nonnull align 8 dereferenceable(8) %68, ptr noundef nonnull align 8 dereferenceable(8) %69)
  br label %71

71:                                               ; preds = %67, %63
  %.in = phi ptr [ %66, %63 ], [ %70, %67 ]
  %72 = load double, ptr %.in, align 8, !tbaa !29
  %73 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt6vectorIdSaIdEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %35, i64 noundef %indvars.iv) #7
  store double %72, ptr %73, align 8, !tbaa !29
  %74 = load ptr, ptr %14, align 8, !tbaa !28
  %75 = getelementptr inbounds double, ptr %74, i64 %indvars.iv
  %76 = load double, ptr %75, align 8, !tbaa !29
  %77 = fcmp olt double %76, 0.000000e+00
  br i1 %77, label %78, label %98

78:                                               ; preds = %71
  %79 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt6vectorIdSaIdEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %43, i64 noundef %52) #7
  %80 = load double, ptr %79, align 8, !tbaa !29
  %81 = fcmp une double %80, 0x7FF0000000000000
  br i1 %81, label %82, label %98

82:                                               ; preds = %78
  %83 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt6vectorIdSaIdEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %43, i64 noundef %52) #7
  %84 = load double, ptr %83, align 8, !tbaa !29
  %85 = load ptr, ptr %14, align 8, !tbaa !28
  %86 = getelementptr inbounds double, ptr %85, i64 %indvars.iv
  %87 = load double, ptr %86, align 8, !tbaa !29
  %88 = fmul double %84, %87
  %89 = call noundef nonnull align 8 dereferenceable(16) ptr @_ZN12HighsCDoublemIEd(ptr noundef nonnull align 8 dereferenceable(16) %16, double noundef %88)
  %90 = load ptr, ptr %14, align 8, !tbaa !28
  %91 = getelementptr inbounds double, ptr %90, i64 %indvars.iv
  %92 = load double, ptr %91, align 8, !tbaa !29
  %93 = fneg double %92
  store double %93, ptr %91, align 8, !tbaa !29
  %94 = call noundef nonnull align 1 dereferenceable(1) ptr @_ZNSt6vectorIhSaIhEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %29, i64 noundef %indvars.iv) #7
  store i8 1, ptr %94, align 1, !tbaa !33
  %95 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt6vectorIdSaIdEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %43, i64 noundef %52) #7
  %96 = load double, ptr %95, align 8, !tbaa !29
  %97 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt6vectorIdSaIdEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %35, i64 noundef %indvars.iv) #7
  br label %110

98:                                               ; preds = %78, %71
  %99 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt6vectorIdSaIdEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %44, i64 noundef %52) #7
  %100 = load double, ptr %99, align 8, !tbaa !29
  %101 = load ptr, ptr %14, align 8, !tbaa !28
  %102 = getelementptr inbounds double, ptr %101, i64 %indvars.iv
  %103 = load double, ptr %102, align 8, !tbaa !29
  %104 = fmul double %100, %103
  %105 = call noundef nonnull align 8 dereferenceable(16) ptr @_ZN12HighsCDoublemIEd(ptr noundef nonnull align 8 dereferenceable(16) %16, double noundef %104)
  %106 = call noundef nonnull align 1 dereferenceable(1) ptr @_ZNSt6vectorIhSaIhEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %29, i64 noundef %indvars.iv) #7
  store i8 0, ptr %106, align 1, !tbaa !33
  %107 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt6vectorIdSaIdEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %35, i64 noundef %indvars.iv) #7
  %108 = load double, ptr %107, align 8, !tbaa !29
  %109 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt6vectorIdSaIdEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %44, i64 noundef %52) #7
  br label %110

110:                                              ; preds = %98, %82
  %.sink = phi ptr [ %109, %98 ], [ %97, %82 ]
  %.sink104 = phi double [ %108, %98 ], [ %96, %82 ]
  %111 = load double, ptr %.sink, align 8, !tbaa !29
  %112 = fsub double %.sink104, %111
  %113 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt6vectorIdSaIdEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %35, i64 noundef %indvars.iv) #7
  store double %112, ptr %113, align 8, !tbaa !29
  %114 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt6vectorIdSaIdEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %35, i64 noundef %indvars.iv) #7
  %115 = load double, ptr %114, align 8, !tbaa !29
  %116 = load ptr, ptr %14, align 8, !tbaa !28
  %117 = getelementptr inbounds double, ptr %116, i64 %indvars.iv
  %118 = load double, ptr %117, align 8, !tbaa !29
  %119 = call double @llvm.fmuladd.f64(double %115, double %118, double %.07888)
  %indvars.iv.next = add nuw nsw i64 %indvars.iv, 1
  %120 = load i32, ptr %19, align 4, !tbaa !31
  %121 = zext i32 %120 to i64
  %.not = icmp eq i64 %indvars.iv.next, %121
  br i1 %.not, label %._crit_edge, label %48, !llvm.loop !35

122:                                              ; preds = %._crit_edge
  %123 = call noundef double @_ZNK12HighsCDoublecvdEv(ptr noundef nonnull align 8 dereferenceable(16) %16)
  %124 = fdiv double %123, %.078.lcssa
  %125 = load i32, ptr %19, align 4, !tbaa !31
  %.not8289 = icmp eq i32 %125, 0
  br i1 %.not8289, label %.loopexit85, label %.lr.ph92

.lr.ph92:                                         ; preds = %122, %.lr.ph92
  %indvars.iv97 = phi i64 [ %indvars.iv.next98, %.lr.ph92 ], [ 0, %122 ]
  %126 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt6vectorIdSaIdEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %35, i64 noundef %indvars.iv97) #7
  %127 = load double, ptr %126, align 8, !tbaa !29
  %128 = fmul double %124, %127
  store double %128, ptr %126, align 8, !tbaa !29
  %indvars.iv.next98 = add nuw nsw i64 %indvars.iv97, 1
  %129 = load i32, ptr %19, align 4, !tbaa !31
  %130 = zext i32 %129 to i64
  %.not82 = icmp eq i64 %indvars.iv.next98, %130
  br i1 %.not82, label %.loopexit85, label %.lr.ph92, !llvm.loop !37

.loopexit85:                                      ; preds = %.lr.ph92, %122, %._crit_edge
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %8) #7
  store i8 0, ptr %8, align 1, !tbaa !38
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %9) #7
  store i8 0, ptr %9, align 1, !tbaa !38
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %10) #7
  store i8 0, ptr %10, align 1, !tbaa !38
  %131 = call noundef zeroext i1 @_ZN18HighsCutGeneration24preprocessBaseInequalityERbS0_S0_(ptr noundef nonnull align 8 dereferenceable(288) %0, ptr noundef nonnull align 1 dereferenceable(1) %8, ptr noundef nonnull align 1 dereferenceable(1) %9, ptr noundef nonnull align 1 dereferenceable(1) %10)
  br i1 %131, label %132, label %209

132:                                              ; preds = %.loopexit85
  %133 = load i8, ptr %8, align 1, !tbaa !38, !range !39, !noundef !40
  %134 = trunc nuw i8 %133 to i1
  %135 = load i8, ptr %9, align 1, !tbaa !38, !range !39, !noundef !40
  %136 = trunc nuw i8 %135 to i1
  %137 = load i8, ptr %10, align 1, !tbaa !38, !range !39, !noundef !40
  %138 = trunc nuw i8 %137 to i1
  %139 = getelementptr inbounds i8, ptr %0, i64 176
  %140 = load double, ptr %139, align 8, !tbaa !41
  %141 = call noundef zeroext i1 @_ZN18HighsCutGeneration14tryGenerateCutERSt6vectorIiSaIiEERS0_IdSaIdEEbbbdbbb(ptr noundef nonnull align 8 dereferenceable(288) %0, ptr noundef nonnull align 8 dereferenceable(24) %2, ptr noundef nonnull align 8 dereferenceable(24) %3, i1 noundef zeroext %134, i1 noundef zeroext %136, i1 noundef zeroext %138, double noundef %140, i1 noundef zeroext false, i1 noundef zeroext false, i1 noundef zeroext false)
  br i1 %141, label %142, label %209

142:                                              ; preds = %132
  %143 = call noundef zeroext i1 @_ZNKSt6vectorIhSaIhEE5emptyEv(ptr noundef nonnull align 8 dereferenceable(24) %29) #7
  %144 = load i32, ptr %19, align 4
  %.not8393 = icmp eq i32 %144, 0
  %or.cond = select i1 %143, i1 true, i1 %.not8393
  br i1 %or.cond, label %.loopexit, label %.lr.ph95

.lr.ph95:                                         ; preds = %142
  %145 = getelementptr inbounds i8, ptr %41, i64 1712
  %146 = getelementptr inbounds i8, ptr %41, i64 1688
  br label %147

147:                                              ; preds = %.lr.ph95, %174
  %indvars.iv100 = phi i64 [ 0, %.lr.ph95 ], [ %indvars.iv.next101, %174 ]
  %148 = call noundef nonnull align 1 dereferenceable(1) ptr @_ZNSt6vectorIhSaIhEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %29, i64 noundef %indvars.iv100) #7
  %149 = load i8, ptr %148, align 1, !tbaa !33
  %.not84 = icmp eq i8 %149, 0
  %150 = load ptr, ptr %12, align 8, !tbaa !5
  %151 = getelementptr inbounds i32, ptr %150, i64 %indvars.iv100
  %152 = load i32, ptr %151, align 4, !tbaa !34
  %153 = sext i32 %152 to i64
  br i1 %.not84, label %166, label %154

154:                                              ; preds = %147
  %155 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt6vectorIdSaIdEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %145, i64 noundef %153) #7
  %156 = load double, ptr %155, align 8, !tbaa !29
  %157 = load ptr, ptr %14, align 8, !tbaa !28
  %158 = getelementptr inbounds double, ptr %157, i64 %indvars.iv100
  %159 = load double, ptr %158, align 8, !tbaa !29
  %160 = fmul double %156, %159
  %161 = call noundef nonnull align 8 dereferenceable(16) ptr @_ZN12HighsCDoublemIEd(ptr noundef nonnull align 8 dereferenceable(16) %16, double noundef %160)
  %162 = load ptr, ptr %14, align 8, !tbaa !28
  %163 = getelementptr inbounds double, ptr %162, i64 %indvars.iv100
  %164 = load double, ptr %163, align 8, !tbaa !29
  %165 = fneg double %164
  store double %165, ptr %163, align 8, !tbaa !29
  br label %174

166:                                              ; preds = %147
  %167 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt6vectorIdSaIdEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %146, i64 noundef %153) #7
  %168 = load double, ptr %167, align 8, !tbaa !29
  %169 = load ptr, ptr %14, align 8, !tbaa !28
  %170 = getelementptr inbounds double, ptr %169, i64 %indvars.iv100
  %171 = load double, ptr %170, align 8, !tbaa !29
  %172 = fmul double %168, %171
  %173 = call noundef nonnull align 8 dereferenceable(16) ptr @_ZN12HighsCDoublepLEd(ptr noundef nonnull align 8 dereferenceable(16) %16, double noundef %172)
  br label %174

174:                                              ; preds = %154, %166
  %indvars.iv.next101 = add nuw nsw i64 %indvars.iv100, 1
  %175 = load i32, ptr %19, align 4, !tbaa !31
  %176 = zext i32 %175 to i64
  %.not83 = icmp eq i64 %indvars.iv.next101, %176
  br i1 %.not83, label %.loopexit, label %147, !llvm.loop !42

.loopexit:                                        ; preds = %174, %142
  %177 = call noundef zeroext i1 @_ZN18HighsCutGeneration14postprocessCutEv(ptr noundef nonnull align 8 dereferenceable(288) %0)
  br i1 %177, label %178, label %209

178:                                              ; preds = %.loopexit
  %179 = load i32, ptr %19, align 4, !tbaa !31
  %180 = sext i32 %179 to i64
  call void @_ZNSt6vectorIdSaIdEE6resizeEm(ptr noundef nonnull align 8 dereferenceable(24) %3, i64 noundef %180)
  %181 = load i32, ptr %19, align 4, !tbaa !31
  %182 = sext i32 %181 to i64
  call void @_ZNSt6vectorIiSaIiEE6resizeEm(ptr noundef nonnull align 8 dereferenceable(24) %2, i64 noundef %182)
  %183 = call noundef double @_ZNK12HighsCDoublecvdEv(ptr noundef nonnull align 8 dereferenceable(16) %16)
  store double %183, ptr %4, align 8, !tbaa !29
  %184 = getelementptr inbounds i8, ptr %0, i64 224
  %185 = load i8, ptr %184, align 8, !tbaa !43, !range !39, !noundef !40
  %186 = trunc nuw i8 %185 to i1
  %187 = getelementptr inbounds i8, ptr %0, i64 225
  %188 = load i8, ptr %187, align 1, !range !39
  %189 = trunc nuw i8 %188 to i1
  %190 = select i1 %186, i1 %189, i1 false
  %191 = load ptr, ptr %0, align 8, !tbaa !32
  %192 = call noundef nonnull align 8 dereferenceable(496) ptr @_ZNK17HighsLpRelaxation12getMipSolverEv(ptr noundef nonnull align 8 dereferenceable(21425) %191)
  %193 = getelementptr inbounds i8, ptr %192, i64 224
  %194 = call noundef ptr @_ZNKSt10unique_ptrI18HighsMipSolverDataSt14default_deleteIS0_EEptEv(ptr noundef nonnull align 8 dereferenceable(8) %193) #7
  %195 = getelementptr inbounds i8, ptr %194, i64 912
  %196 = call noundef ptr @_ZNSt6vectorIiSaIiEE4dataEv(ptr noundef nonnull align 8 dereferenceable(24) %2) #7
  %197 = call noundef ptr @_ZNSt6vectorIdSaIdEE4dataEv(ptr noundef nonnull align 8 dereferenceable(24) %3) #7
  %198 = load i32, ptr %19, align 4, !tbaa !31
  call void @_ZNK11HighsDomain19tightenCoefficientsEPiPdiRd(ptr noundef nonnull align 8 dereferenceable(824) %195, ptr noundef %196, ptr noundef %197, i32 noundef %198, ptr noundef nonnull align 8 dereferenceable(8) %4)
  %199 = getelementptr inbounds i8, ptr %0, i64 8
  %200 = load ptr, ptr %199, align 8, !tbaa !44
  %201 = load ptr, ptr %0, align 8, !tbaa !32
  %202 = call noundef nonnull align 8 dereferenceable(496) ptr @_ZNK17HighsLpRelaxation12getMipSolverEv(ptr noundef nonnull align 8 dereferenceable(21425) %201)
  %203 = call noundef ptr @_ZNSt6vectorIiSaIiEE4dataEv(ptr noundef nonnull align 8 dereferenceable(24) %2) #7
  %204 = call noundef ptr @_ZNSt6vectorIdSaIdEE4dataEv(ptr noundef nonnull align 8 dereferenceable(24) %3) #7
  %205 = load i32, ptr %19, align 4, !tbaa !31
  %206 = load double, ptr %4, align 8, !tbaa !29
  %207 = call noundef i32 @_ZN12HighsCutPool6addCutERK14HighsMipSolverPiPdidbbbb(ptr noundef nonnull align 8 dereferenceable(680) %200, ptr noundef nonnull align 8 dereferenceable(496) %202, ptr noundef %203, ptr noundef %204, i32 noundef %205, double noundef %206, i1 noundef zeroext %190, i1 noundef zeroext true, i1 noundef zeroext true, i1 noundef zeroext true)
  %208 = icmp ne i32 %207, -1
  br label %209

209:                                              ; preds = %.loopexit, %132, %.loopexit85, %178
  %.0 = phi i1 [ %208, %178 ], [ false, %.loopexit85 ], [ false, %132 ], [ false, %.loopexit ]
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %10) #7
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %9) #7
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %8) #7
  ret i1 %.0
}

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

attributes #0 = { mustprogress nocallback nofree nosync nounwind willreturn memory(argmem: readwrite) }
attributes #1 = { mustprogress nounwind uwtable "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }
attributes #2 = { mustprogress nocallback nofree nounwind willreturn memory(argmem: readwrite) }
attributes #3 = { mustprogress uwtable "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }
attributes #4 = { 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 = { mustprogress nocallback nofree nosync nounwind speculatable willreturn memory(none) }
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 = { 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, !7, i64 200}
!6 = !{!"_ZTS18HighsCutGeneration", !7, i64 0, !7, i64 8, !10, i64 16, !12, i64 24, !16, i64 48, !16, i64 64, !18, i64 80, !18, i64 104, !22, i64 128, !22, i64 152, !17, i64 176, !17, i64 184, !7, i64 192, !7, i64 200, !16, i64 208, !26, i64 224, !26, i64 225, !27, i64 228, !17, i64 232, !12, i64 240, !18, i64 264}
!7 = !{!"any pointer", !8, i64 0}
!8 = !{!"omnipotent char", !9, i64 0}
!9 = !{!"Simple C++ TBAA"}
!10 = !{!"_ZTS11HighsRandom", !11, i64 0}
!11 = !{!"long", !8, i64 0}
!12 = !{!"_ZTSSt6vectorIiSaIiEE", !13, i64 0}
!13 = !{!"_ZTSSt12_Vector_baseIiSaIiEE", !14, i64 0}
!14 = !{!"_ZTSNSt12_Vector_baseIiSaIiEE12_Vector_implE", !15, i64 0}
!15 = !{!"_ZTSNSt12_Vector_baseIiSaIiEE17_Vector_impl_dataE", !7, i64 0, !7, i64 8, !7, i64 16}
!16 = !{!"_ZTS12HighsCDouble", !17, i64 0, !17, i64 8}
!17 = !{!"double", !8, i64 0}
!18 = !{!"_ZTSSt6vectorIdSaIdEE", !19, i64 0}
!19 = !{!"_ZTSSt12_Vector_baseIdSaIdEE", !20, i64 0}
!20 = !{!"_ZTSNSt12_Vector_baseIdSaIdEE12_Vector_implE", !21, i64 0}
!21 = !{!"_ZTSNSt12_Vector_baseIdSaIdEE17_Vector_impl_dataE", !7, i64 0, !7, i64 8, !7, i64 16}
!22 = !{!"_ZTSSt6vectorIhSaIhEE", !23, i64 0}
!23 = !{!"_ZTSSt12_Vector_baseIhSaIhEE", !24, i64 0}
!24 = !{!"_ZTSNSt12_Vector_baseIhSaIhEE12_Vector_implE", !25, i64 0}
!25 = !{!"_ZTSNSt12_Vector_baseIhSaIhEE17_Vector_impl_dataE", !7, i64 0, !7, i64 8, !7, i64 16}
!26 = !{!"bool", !8, i64 0}
!27 = !{!"int", !8, i64 0}
!28 = !{!6, !7, i64 192}
!29 = !{!17, !17, i64 0}
!30 = !{i64 0, i64 8, !29, i64 8, i64 8, !29}
!31 = !{!6, !27, i64 228}
!32 = !{!6, !7, i64 0}
!33 = !{!8, !8, i64 0}
!34 = !{!27, !27, i64 0}
!35 = distinct !{!35, !36}
!36 = !{!"llvm.loop.mustprogress"}
!37 = distinct !{!37, !36}
!38 = !{!26, !26, i64 0}
!39 = !{i8 0, i8 2}
!40 = !{}
!41 = !{!6, !17, i64 176}
!42 = distinct !{!42, !36}
!43 = !{!6, !26, i64 224}
!44 = !{!6, !7, i64 8}


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