; LLVM IR from ERGO-Code/HiGHS :: src/mip/HighsDomain.ll (ZN11HighsDomain20ObjectivePropagationC2EPS_)

; 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 }
%"struct.std::pair" = type { i32, i32 }
%"class.HighsDomain::ObjectivePropagation::ObjectiveContributionTree" = type { %"class.highs::CacheMinRbTree", ptr }
%"class.highs::CacheMinRbTree" = type { %"class.highs::RbTree", ptr }
%"class.highs::RbTree" = type { ptr }
%"struct.HighsDomain::ObjectivePropagation" = type { ptr, ptr, ptr, %class.HighsCDouble, i32, double, i8, %"class.std::vector.38", %"class.std::vector.8", %"class.std::vector.33", %"class.std::vector.43" }
%"class.std::vector.38" = type { %"struct.std::_Vector_base.39" }
%"struct.std::_Vector_base.39" = 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.8" = type { %"struct.std::_Vector_base.9" }
%"struct.std::_Vector_base.9" = 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.33" = type { %"struct.std::_Vector_base.34" }
%"struct.std::_Vector_base.34" = type { %"struct.std::_Vector_base<double, std::allocator<double>>::_Vector_impl" }
%"struct.std::_Vector_base<double, std::allocator<double>>::_Vector_impl" = type { %"struct.std::_Vector_base<double, std::allocator<double>>::_Vector_impl_data" }
%"struct.std::_Vector_base<double, std::allocator<double>>::_Vector_impl_data" = type { ptr, ptr, ptr }
%"class.std::vector.43" = type { %"struct.std::_Vector_base.44" }
%"struct.std::_Vector_base.44" = 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.HighsDomain = type { %"class.std::vector", %"class.std::vector.3", %"class.std::vector.8", %"class.std::vector.13", %"class.std::vector.18", %"class.std::vector.23", %"class.std::vector.28", %"class.std::vector.28", %"class.std::vector.3", %"class.std::vector.3", %"class.std::vector.33", %"class.std::vector", %"class.std::vector.3", %"struct.HighsDomain::ObjectivePropagation", ptr, %"class.std::deque", %"class.std::deque.51", i8, %"struct.HighsDomain::Reason", i32, %"class.std::vector.3", %"class.std::vector.3", %"class.std::vector.3", %class.HighsHashTable, i8, %"class.std::vector.33", %"class.std::vector.33" }
%"class.std::vector.13" = type { %"struct.std::_Vector_base.14" }
%"struct.std::_Vector_base.14" = 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.18" = type { %"struct.std::_Vector_base.19" }
%"struct.std::_Vector_base.19" = 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.23" = type { %"struct.std::_Vector_base.24" }
%"struct.std::_Vector_base.24" = 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.28" = type { %"struct.std::_Vector_base.29" }
%"struct.std::_Vector_base.29" = 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 }
%"class.std::vector" = type { %"struct.std::_Vector_base" }
%"struct.std::_Vector_base" = 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::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.51" = type { %"class.std::_Deque_base.52" }
%"class.std::_Deque_base.52" = 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.56", %"struct.std::_Deque_iterator.56" }
%"struct.std::_Deque_iterator.56" = type { ptr, ptr, ptr, ptr }
%"struct.HighsDomain::Reason" = type { i32, i32 }
%"class.std::vector.3" = type { %"struct.std::_Vector_base.4" }
%"struct.std::_Vector_base.4" = type { %"struct.std::_Vector_base<int, std::allocator<int>>::_Vector_impl" }
%"struct.std::_Vector_base<int, std::allocator<int>>::_Vector_impl" = type { %"struct.std::_Vector_base<int, std::allocator<int>>::_Vector_impl_data" }
%"struct.std::_Vector_base<int, std::allocator<int>>::_Vector_impl_data" = type { ptr, ptr, ptr }
%class.HighsHashTable = type { %"class.std::unique_ptr", %"class.std::unique_ptr.59", i64, i64, i64 }
%"class.std::unique_ptr" = type { %"struct.std::__uniq_ptr_data" }
%"struct.std::__uniq_ptr_data" = type { %"class.std::__uniq_ptr_impl" }
%"class.std::__uniq_ptr_impl" = type { %"class.std::tuple" }
%"class.std::tuple" = type { %"struct.std::_Tuple_impl" }
%"struct.std::_Tuple_impl" = type { %"struct.std::_Head_base.58" }
%"struct.std::_Head_base.58" = type { ptr }
%"class.std::unique_ptr.59" = type { %"struct.std::__uniq_ptr_data.60" }
%"struct.std::__uniq_ptr_data.60" = type { %"class.std::__uniq_ptr_impl.61" }
%"class.std::__uniq_ptr_impl.61" = type { %"class.std::tuple.62" }
%"class.std::tuple.62" = type { %"struct.std::_Tuple_impl.63" }
%"struct.std::_Tuple_impl.63" = type { %"struct.std::_Head_base.66" }
%"struct.std::_Head_base.66" = type { ptr }
%class.HighsMipSolver = type { ptr, ptr, ptr, ptr, i32, %"class.std::vector.33", double, double, double, double, double, double, double, i64, i64, double, ptr, %"class.std::vector.67", i8, i32, i32, ptr, ptr, ptr, ptr, %"class.std::unique_ptr.72", %class.HighsMipAnalysis, %class.HighsTimer }
%"class.std::vector.67" = type { %"struct.std::_Vector_base.68" }
%"struct.std::_Vector_base.68" = 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.72" = type { %"struct.std::__uniq_ptr_data.73" }
%"struct.std::__uniq_ptr_data.73" = type { %"class.std::__uniq_ptr_impl.74" }
%"class.std::__uniq_ptr_impl.74" = type { %"class.std::tuple.75" }
%"class.std::tuple.75" = type { %"struct.std::_Tuple_impl.76" }
%"struct.std::_Tuple_impl.76" = type { %"struct.std::_Head_base.79" }
%"struct.std::_Head_base.79" = type { ptr }
%class.HighsMipAnalysis = type { ptr, %"class.std::__cxx11::basic_string", %struct.HighsTimerClock, i8, %"class.std::vector.33", %"class.std::vector.33" }
%"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.3" }
%class.HighsTimer = type <{ ptr, double, i32, [4 x i8], %"class.std::vector.3", %"class.std::vector.33", %"class.std::vector.33", %"class.std::vector.80", i32, i32, i32, [4 x i8] }>
%"class.std::vector.80" = type { %"struct.std::_Vector_base.81" }
%"struct.std::_Vector_base.81" = 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.3", %"class.std::vector.3", %"class.std::vector.33", %"class.std::vector.33", %"class.std::vector", %"class.std::vector.3", %"class.std::vector.3", %"class.std::vector.3", %"class.std::vector.3", %"class.std::vector.3", %"class.std::vector.3", %struct.HighsSymmetries, %"class.std::shared_ptr.324", double, double, double, i64, %"class.std::vector.33", %"class.std::vector.33", %"class.std::vector.33", 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.33", %class.HighsNodeQueue, %struct.HighsPrimaDualIntegral, [8 x i8] }>
%class.HighsCutPool = type { %class.HighsDynamicRowMatrix, %"class.std::vector.33", %"class.std::vector.98", %"class.std::vector.33", %"class.std::vector.33", %"class.std::vector", %"class.std::unordered_multimap", %"class.std::vector.122", %"class.std::set", double, double, double, i32, i32, i32, i32, i32, %"class.std::vector.3", %"class.std::vector.127" }
%class.HighsDynamicRowMatrix = type { %"class.std::vector.8", %"class.std::vector.3", %"class.std::vector.33", %"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::set", %"class.std::vector.3" }
%"class.std::vector.98" = type { %"struct.std::_Vector_base.99" }
%"struct.std::_Vector_base.99" = 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.103" }
%"class.std::_Hashtable.103" = 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.122" = type { %"struct.std::_Vector_base.123" }
%"struct.std::_Vector_base.123" = 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.127" = type { %"struct.std::_Vector_base.128" }
%"struct.std::_Vector_base.128" = 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.3", %"class.std::vector.98", %"class.std::vector.132", %"class.std::vector.13", %"class.std::vector.8", %"class.std::set", %"class.std::vector.3", %"class.std::vector.137" }
%"class.std::vector.132" = type { %"struct.std::_Vector_base.133" }
%"struct.std::_Vector_base.133" = 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.137" = type { %"struct.std::_Vector_base.138" }
%"struct.std::_Vector_base.138" = 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.HighsLpRelaxation = type <{ ptr, %class.Highs, %"class.std::vector.244", %"class.std::vector.127", %"class.std::vector.33", %"class.std::vector.3", %"class.std::vector.33", %"class.std::vector.33", %"class.std::vector.33", %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.158", %class.HighsModel, %class.HighsTimer, %struct.HighsCallback, %class.HighsOptions, %class.HighsInfo, %struct.HighsRanging, %class.HighsIis, %"class.std::vector.67", i32, i32, i8, double, %"class.std::vector.33", %"class.std::vector.33", %class.HighsSparseMatrix, %class.HEkk, %struct.HighsPresolveLog, i32, i8, i32, i8, %class.PresolveComponent }
%struct.HighsSolution = type { i8, i8, %"class.std::vector.33", %"class.std::vector.33", %"class.std::vector.33", %"class.std::vector.33" }
%struct.ICrashInfo = type { i32, double, double, double, double, double, %"class.std::vector.153", %"class.std::vector.33", double }
%"class.std::vector.153" = type { %"struct.std::_Vector_base.154" }
%"struct.std::_Vector_base.154" = 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.158" = type { %"struct.std::_Vector_base.159" }
%"struct.std::_Vector_base.159" = 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.3", %"class.std::vector.3", %"class.std::vector.33" }
%struct.HighsCallback = type { %"class.std::function", ptr, ptr, %"class.std::vector.163", %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.163" = 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.167", 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.167" = type { %"struct.std::_Vector_base.168" }
%"struct.std::_Vector_base.168" = 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.172" }
%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.172" = type { %"struct.std::_Vector_base.173" }
%"struct.std::_Vector_base.173" = 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.33", %"class.std::vector.33", %"class.std::vector.3", %"class.std::vector.3" }
%class.HighsIis = type { i8, i32, %"class.std::vector.3", %"class.std::vector.3", %"class.std::vector.3", %"class.std::vector.3", %"class.std::vector.177" }
%"class.std::vector.177" = type { %"struct.std::_Vector_base.178" }
%"struct.std::_Vector_base.178" = 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.3", %"class.std::vector.3", %"class.std::vector.3", %"class.std::vector.33" }
%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.205, %class.HighsRandom, %"class.std::vector.33", %"class.std::vector.33", i8, %class.HighsSparseMatrix, %class.HighsSparseMatrix, %class.HSimplexNla, %struct.HotStart, double, double, double, i32, i32, i32, i32, i8, i8, i32, i32, i32, %"class.std::vector.3", %"class.std::vector.33", %struct.HighsRayRecord, %struct.HighsRayRecord, i32, i32, i32, double, %"class.std::vector.33", %"class.std::vector.33", %"class.std::vector.33", %"class.std::vector.33", %"class.std::vector.33", %"class.std::vector.3", %"class.std::vector.3", double, double, double, i32, i32, i8, i32, i8, i8, i8, i8, double, %"class.std::vector.224", %"class.std::vector.33", %struct.HighsSimplexStats }
%class.HighsSimplexAnalysis = type { ptr, %"class.std::vector.182", %"class.std::vector.182", 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.33", %"class.std::vector.33", %"class.std::vector.33", %"class.std::vector.33", %"class.std::vector.187", %"class.std::unique_ptr.192", 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.182" = type { %"struct.std::_Vector_base.183" }
%"struct.std::_Vector_base.183" = 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.187" = type { %"struct.std::_Vector_base.188" }
%"struct.std::_Vector_base.188" = 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.192" = type { %"struct.std::__uniq_ptr_data.193" }
%"struct.std::__uniq_ptr_data.193" = type { %"class.std::__uniq_ptr_impl.194" }
%"class.std::__uniq_ptr_impl.194" = type { %"class.std::tuple.195" }
%"class.std::tuple.195" = type { %"struct.std::_Tuple_impl.196" }
%"struct.std::_Tuple_impl.196" = type { %"struct.std::_Head_base.199" }
%"struct.std::_Head_base.199" = 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.33", %"class.std::vector.3", 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.33", %"class.std::vector.33", %"class.std::vector.33", %"class.std::vector.33", %"class.std::vector.33", %"class.std::vector.33", %"class.std::vector.33", %"class.std::vector.33", %"class.std::vector.33", %"class.std::vector.33", %"class.std::vector.33", %"class.std::vector.33", %"class.std::vector.33", %"class.std::vector.3", %"class.std::vector.3", %"class.std::vector.3", %"class.std::vector.3", %"class.std::vector.33", i32, i32, i8, i8, [6 x i8], %struct.SimplexBasis, i32, i32, i32, [4 x i8], %"class.std::vector.33", %"class.std::vector.33", %"class.std::vector.33", %"class.std::vector.33", 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.3", %"class.std::vector.200", %"class.std::vector.200", i64, i32, i32, %"class.std::__cxx11::basic_string" }
%"class.std::vector.200" = type { %"struct.std::_Vector_base.201" }
%"struct.std::_Vector_base.201" = 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.205 = type { %"class.std::unique_ptr.206", %"class.std::unique_ptr.59", i64, i64, i64 }
%"class.std::unique_ptr.206" = type { %"struct.std::__uniq_ptr_data.207" }
%"struct.std::__uniq_ptr_data.207" = type { %"class.std::__uniq_ptr_impl.208" }
%"class.std::__uniq_ptr_impl.208" = type { %"class.std::tuple.209" }
%"class.std::tuple.209" = type { %"struct.std::_Tuple_impl.210" }
%"struct.std::_Tuple_impl.210" = type { %"struct.std::_Head_base.213" }
%"struct.std::_Head_base.213" = type { ptr }
%class.HighsRandom = type { i64 }
%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.3", %"class.std::vector.3", %"class.std::vector.3", %struct.RefactorInfo, i32, i32, i32, i32, i32, i32, i32, double, i8, ptr, ptr, ptr, ptr, double, double, i32, double, %"class.std::unique_ptr.214", %struct.HighsLogOptions, i8, i8, i32, i32, ptr, i32, %"class.std::vector.3", %"class.std::vector.33", %"class.std::vector.3", %"class.std::vector.3", %"class.std::vector.3", %"class.std::vector.33", %"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.33", %"class.std::vector.33", %"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.222", %"class.std::vector.33", %"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.33", %"class.std::vector.3", %"class.std::vector.3", %"class.std::vector.33", %"class.std::vector.3", %"class.std::vector.3", %"class.std::vector.33", i32, i32, %"class.std::vector.3", %"class.std::vector.3", %"class.std::vector.3", %"class.std::vector.33", %"class.std::vector.3", %"class.std::vector.3", %"class.std::vector.3", %"class.std::vector.3", %"class.std::vector.33", %"class.std::vector.33", %"class.std::vector.3", %"class.std::vector.3", %"class.std::vector.3", %"class.std::vector.33", %class.HVectorBase }
%struct.RefactorInfo = type { i8, %"class.std::vector.3", %"class.std::vector.3", %"class.std::vector.200", double }
%"class.std::unique_ptr.214" = type { %"struct.std::__uniq_ptr_data.215" }
%"struct.std::__uniq_ptr_data.215" = type { %"class.std::__uniq_ptr_impl.216" }
%"class.std::__uniq_ptr_impl.216" = type { %"class.std::tuple.217" }
%"class.std::tuple.217" = type { %"struct.std::_Tuple_impl.218" }
%"struct.std::_Tuple_impl.218" = type { %"struct.std::_Head_base.221" }
%"struct.std::_Head_base.221" = type { ptr }
%"class.std::vector.222" = type { %"struct.std::_Vector_base.223" }
%"struct.std::_Vector_base.223" = 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.3", %"class.std::vector.33", %"class.std::vector.3", %"class.std::vector.3", %"class.std::vector.33" }
%struct.SimplexIterate = type { i8, %struct.SimplexBasis, %struct.InvertibleRepresentation, %"class.std::vector.33" }
%struct.InvertibleRepresentation = type { %"class.std::vector.3", %"class.std::vector.3", %"class.std::vector.3", %"class.std::vector.3", %"class.std::vector.33", %"class.std::vector.3", %"class.std::vector.3", %"class.std::vector.33", %"class.std::vector.3", %"class.std::vector.3", %"class.std::vector.33", %"class.std::vector.3", %"class.std::vector.3", %"class.std::vector.3", %"class.std::vector.33", %"class.std::vector.3", %"class.std::vector.3", %"class.std::vector.3", %"class.std::vector.3", %"class.std::vector.33", %"class.std::vector.3", %"class.std::vector.3", %"class.std::vector.33", %"class.std::vector.3", %"class.std::vector.33" }
%struct.HotStart = type { i8, %struct.RefactorInfo, %"class.std::vector.200" }
%struct.HighsRayRecord = type { i32, i32, %"class.std::vector.33" }
%"class.std::vector.224" = type { %"struct.std::_Vector_base.225" }
%"struct.std::_Vector_base.225" = 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.229" }
%"class.std::vector.229" = type { %"struct.std::_Vector_base.230" }
%"struct.std::_Vector_base.230" = 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.244" = type { %"struct.std::_Vector_base.245" }
%"struct.std::_Vector_base.245" = 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.3", %"class.std::vector.33", double, %"class.std::vector.222", %"class.std::vector.3", ptr, i8, i32, %"class.std::vector.3", %"class.std::vector.33" }
%class.HighsSparseVectorSum = type { %"class.std::vector.28", %"class.std::vector.3" }
%"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.33", %"class.std::vector.33", %"class.std::vector.3", %"class.std::vector.3", %"class.std::vector.33", %"class.std::vector.33", %"class.std::vector.3", %"class.std::vector.3", %"class.std::vector.3", %"class.std::vector.3", %"class.std::vector.33", %"class.std::vector.33", double, double, double, double, i64, i64, i64, i32, double }
%class.HighsCliqueTable = type { %"class.std::vector.249", %"class.std::vector.254", %"class.std::vector.259", %class.HighsHashTable.264, %"class.std::set", %"class.std::vector.3", %"class.std::vector.273", %"class.std::vector.3", %"class.std::vector.249", %"class.std::vector.3", %"class.std::vector.278", %"class.std::vector.3", %"class.std::vector.283", %"class.std::vector", %"class.std::vector", %"class.std::vector.132", %"class.std::vector.3", %class.HighsRandom, i32, i32, i32, i32, i8, i64 }
%"class.std::vector.254" = type { %"struct.std::_Vector_base.255" }
%"struct.std::_Vector_base.255" = 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.259" = type { %"struct.std::_Vector_base.260" }
%"struct.std::_Vector_base.260" = 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.264 = type { %"class.std::unique_ptr.265", %"class.std::unique_ptr.59", i64, i64, i64 }
%"class.std::unique_ptr.265" = type { %"struct.std::__uniq_ptr_data.266" }
%"struct.std::__uniq_ptr_data.266" = type { %"class.std::__uniq_ptr_impl.267" }
%"class.std::__uniq_ptr_impl.267" = type { %"class.std::tuple.268" }
%"class.std::tuple.268" = type { %"struct.std::_Tuple_impl.269" }
%"struct.std::_Tuple_impl.269" = type { %"struct.std::_Head_base.272" }
%"struct.std::_Head_base.272" = type { ptr }
%"class.std::vector.273" = type { %"struct.std::_Vector_base.274" }
%"struct.std::_Vector_base.274" = 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.249" = type { %"struct.std::_Vector_base.250" }
%"struct.std::_Vector_base.250" = 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.278" = type { %"struct.std::_Vector_base.279" }
%"struct.std::_Vector_base.279" = 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.283" = type { %"struct.std::_Vector_base.284" }
%"struct.std::_Vector_base.284" = 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.288", i64, %"class.std::vector.293", %"class.std::vector.293", ptr, %"class.std::vector.298", %"class.std::vector", %"class.std::function.303" }
%"class.std::vector.288" = type { %"struct.std::_Vector_base.289" }
%"struct.std::_Vector_base.289" = 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.293" = type { %"struct.std::_Vector_base.294" }
%"struct.std::_Vector_base.294" = 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.298" = type { %"struct.std::_Vector_base.299" }
%"struct.std::_Vector_base.299" = 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.303" = type { %"class.std::_Function_base", ptr }
%class.HighsPrimalHeuristics = type { ptr, i64, i64, i64, i64, double, i32, double, i32, %class.HighsRandom, %"class.std::vector.3" }
%class.HighsRedcostFixing = type { %"class.std::vector.305", %"class.std::vector.305" }
%"class.std::vector.305" = type { %"struct.std::_Vector_base.306" }
%"struct.std::_Vector_base.306" = 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.3", %"class.std::vector.33", %"class.std::vector.3", %"class.std::vector.3" }
%"class.presolve::HighsPostsolveStack" = type { i64, double, double, double, double, %class.HighsDataStack, %"class.std::vector.234", %"class.std::vector.3", %"class.std::vector.3", %"class.std::vector", %"class.std::vector.239", %"class.std::vector.239", i32, i32 }
%class.HighsDataStack = type { %"class.std::vector.222", i64 }
%"class.std::vector.234" = type { %"struct.std::_Vector_base.235" }
%"struct.std::_Vector_base.235" = 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.239" = type { %"struct.std::_Vector_base.240" }
%"struct.std::_Vector_base.240" = 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.33", %"class.std::vector.33", %"class.std::vector.33", %"class.std::vector.33", %"class.std::vector.33", %class.HighsSparseMatrix, i32, double, %"class.std::__cxx11::basic_string", %"class.std::__cxx11::basic_string", i32, i32, %"class.std::vector.80", %"class.std::vector.80", %"class.std::vector.85", %struct.HighsNameHash, %struct.HighsNameHash, i32, i32, %struct.HighsScale, i8, i8, i32, i8, %struct.HighsLpMods }
%"class.std::vector.85" = type { %"struct.std::_Vector_base.86" }
%"struct.std::_Vector_base.86" = 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.33", %"class.std::vector.33" }
%struct.HighsLpMods = type { %"class.std::vector.3", %"class.std::vector.3", %"class.std::vector.33", %"class.std::vector.33", %"class.std::vector.85", %"class.std::vector.3", %"class.std::vector.33", %"class.std::vector.3", %"class.std::vector.33", %"class.std::vector.3", %"class.std::vector.33", %"class.std::vector.33", %"class.std::vector.33" }
%struct.HighsSymmetries = 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.310", %class.HighsHashTable.315, i32, i32 }
%"class.std::vector.310" = type { %"struct.std::_Vector_base.311" }
%"struct.std::_Vector_base.311" = 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.315 = type { %"class.std::unique_ptr.316", %"class.std::unique_ptr.59", i64, i64, i64 }
%"class.std::unique_ptr.316" = type { %"struct.std::__uniq_ptr_data.317" }
%"struct.std::__uniq_ptr_data.317" = type { %"class.std::__uniq_ptr_impl.318" }
%"class.std::__uniq_ptr_impl.318" = type { %"class.std::tuple.319" }
%"class.std::tuple.319" = type { %"struct.std::_Tuple_impl.320" }
%"struct.std::_Tuple_impl.320" = type { %"struct.std::_Head_base.323" }
%"struct.std::_Head_base.323" = type { ptr }
%"class.std::shared_ptr.324" = type { %"class.std::__shared_ptr.325" }
%"class.std::__shared_ptr.325" = type { ptr, %"class.std::__shared_count" }
%struct.HighsBasis = type { i8, i8, i8, i8, i32, i32, %"class.std::__cxx11::basic_string", %"class.std::vector.148", %"class.std::vector.148" }
%"class.std::vector.148" = type { %"struct.std::_Vector_base.149" }
%"struct.std::_Vector_base.149" = 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.327", %"class.std::vector.335", %"class.std::priority_queue", %"class.std::unique_ptr.345", %"class.std::unique_ptr.345", i64, i64, i64, i64, i64, i64, i64, double, i32, [4 x i8] }>
%"class.std::unique_ptr.327" = type { %"struct.std::__uniq_ptr_data.328" }
%"struct.std::__uniq_ptr_data.328" = type { %"class.std::__uniq_ptr_impl.329" }
%"class.std::__uniq_ptr_impl.329" = type { %"class.std::tuple.330" }
%"class.std::tuple.330" = type { %"struct.std::_Tuple_impl.331" }
%"struct.std::_Tuple_impl.331" = type { %"struct.std::_Head_base.334" }
%"struct.std::_Head_base.334" = type { ptr }
%"class.std::vector.335" = type { %"struct.std::_Vector_base.336" }
%"struct.std::_Vector_base.336" = 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.340", [8 x i8] }>
%"class.std::vector.340" = type { %"struct.std::_Vector_base.341" }
%"struct.std::_Vector_base.341" = 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.345" = type { %"struct.std::__uniq_ptr_data.346" }
%"struct.std::__uniq_ptr_data.346" = type { %"class.std::__uniq_ptr_impl.347" }
%"class.std::__uniq_ptr_impl.347" = type { %"class.std::tuple.348" }
%"class.std::tuple.348" = type { %"struct.std::_Tuple_impl.349" }
%"struct.std::_Tuple_impl.349" = type { %"struct.std::_Head_base.352" }
%"struct.std::_Head_base.352" = type { ptr }
%struct.HighsPrimaDualIntegral = type { double, double, double, double, double }
%"struct.HighsDomain::ObjectivePropagation::PartitionCliqueData" = type { double, i32, i8 }
%"struct.HighsDomain::ObjectivePropagation::ObjectiveContribution" = type { double, i32, i32, %"struct.highs::RbTreeLinks" }
%"struct.highs::RbTreeLinks" = type { [2 x i32], i32 }

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

declare i32 @__gxx_personality_v0(...)

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

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

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

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

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

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

; Function Attrs: mustprogress nounwind uwtable
declare dso_local void @_ZNSt6vectorISt4pairIiiESaIS1_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24)) 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)) #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 uwtable
define dso_local void @_ZN11HighsDomain20ObjectivePropagationC2EPS_(ptr noundef nonnull align 8 dereferenceable(160) %0, ptr noundef %1) unnamed_addr #2 align 2 personality ptr @__gxx_personality_v0 {
  %3 = alloca ptr, align 8
  %4 = alloca ptr, align 8
  %5 = alloca ptr, align 8
  %6 = alloca ptr, align 8
  %7 = alloca i32, align 4
  %8 = alloca ptr, align 8
  %9 = alloca i32, align 4
  %10 = alloca %class.HighsCDouble, align 8
  %11 = alloca %"struct.std::pair", align 4
  %12 = alloca i32, align 4
  %13 = alloca i32, align 4
  %14 = alloca i32, align 4
  %15 = alloca i32, align 4
  %16 = alloca %"class.HighsDomain::ObjectivePropagation::ObjectiveContributionTree", align 8
  %17 = alloca i32, align 4
  %18 = alloca i32, align 4
  %19 = alloca i32, align 4
  %20 = alloca i32, align 4
  %21 = alloca i32, align 4
  %22 = alloca i32, align 4
  store ptr %0, ptr %3, align 8, !tbaa !5
  store ptr %1, ptr %4, align 8, !tbaa !5
  %23 = load ptr, ptr %3, align 8
  %24 = getelementptr inbounds %"struct.HighsDomain::ObjectivePropagation", ptr %23, i32 0, i32 0
  %25 = load ptr, ptr %4, align 8, !tbaa !5
  store ptr %25, ptr %24, align 8, !tbaa !9
  %26 = getelementptr inbounds %"struct.HighsDomain::ObjectivePropagation", ptr %23, i32 0, i32 1
  %27 = load ptr, ptr %4, align 8, !tbaa !5
  %28 = getelementptr inbounds %class.HighsDomain, ptr %27, i32 0, i32 14
  %29 = load ptr, ptr %28, align 8, !tbaa !31
  %30 = getelementptr inbounds %class.HighsMipSolver, ptr %29, i32 0, i32 25
  %31 = call noundef ptr @_ZNKSt10unique_ptrI18HighsMipSolverDataSt14default_deleteIS0_EEptEv(ptr noundef nonnull align 8 dereferenceable(8) %30) #4
  %32 = getelementptr inbounds %struct.HighsMipSolverData, ptr %31, i32 0, i32 10
  store ptr %32, ptr %26, align 8, !tbaa !82
  %33 = getelementptr inbounds %"struct.HighsDomain::ObjectivePropagation", ptr %23, i32 0, i32 2
  %34 = load ptr, ptr %4, align 8, !tbaa !5
  %35 = getelementptr inbounds %class.HighsDomain, ptr %34, i32 0, i32 14
  %36 = load ptr, ptr %35, align 8, !tbaa !31
  %37 = getelementptr inbounds %class.HighsMipSolver, ptr %36, i32 0, i32 2
  %38 = load ptr, ptr %37, align 8, !tbaa !83
  %39 = getelementptr inbounds %class.HighsLp, ptr %38, i32 0, i32 2
  %40 = call noundef ptr @_ZNKSt6vectorIdSaIdEE4dataEv(ptr noundef nonnull align 8 dereferenceable(24) %39) #4
  store ptr %40, ptr %33, align 8, !tbaa !105
  %41 = getelementptr inbounds %"struct.HighsDomain::ObjectivePropagation", ptr %23, i32 0, i32 3
  %42 = getelementptr inbounds %"struct.HighsDomain::ObjectivePropagation", ptr %23, i32 0, i32 7
  call void @_ZNSt6vectorIN11HighsDomain20ObjectivePropagation21ObjectiveContributionESaIS2_EEC2Ev(ptr noundef nonnull align 8 dereferenceable(24) %42) #4
  %43 = getelementptr inbounds %"struct.HighsDomain::ObjectivePropagation", ptr %23, i32 0, i32 8
  call void @_ZNSt6vectorISt4pairIiiESaIS1_EEC2Ev(ptr noundef nonnull align 8 dereferenceable(24) %43) #4
  %44 = getelementptr inbounds %"struct.HighsDomain::ObjectivePropagation", ptr %23, i32 0, i32 9
  call void @_ZNSt6vectorIdSaIdEEC2Ev(ptr noundef nonnull align 8 dereferenceable(24) %44) #4
  %45 = getelementptr inbounds %"struct.HighsDomain::ObjectivePropagation", ptr %23, i32 0, i32 10
  call void @_ZNSt6vectorIN11HighsDomain20ObjectivePropagation19PartitionCliqueDataESaIS2_EEC2Ev(ptr noundef nonnull align 8 dereferenceable(24) %45) #4
  call void @llvm.lifetime.start.p0(i64 8, ptr %5) #4
  %46 = getelementptr inbounds %"struct.HighsDomain::ObjectivePropagation", ptr %23, i32 0, i32 1
  %47 = load ptr, ptr %46, align 8, !tbaa !82
  %48 = invoke noundef nonnull align 8 dereferenceable(24) ptr @_ZNK22HighsObjectiveFunction20getObjectiveNonzerosEv(ptr noundef nonnull align 8 dereferenceable(120) %47)
          to label %49 unwind label %75

49:                                               ; preds = %2
  store ptr %48, ptr %5, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %8) #4
  %50 = getelementptr inbounds %"struct.HighsDomain::ObjectivePropagation", ptr %23, i32 0, i32 1
  %51 = load ptr, ptr %50, align 8, !tbaa !82
  %52 = invoke noundef nonnull align 8 dereferenceable(24) ptr @_ZNK22HighsObjectiveFunction24getCliquePartitionStartsEv(ptr noundef nonnull align 8 dereferenceable(120) %51)
          to label %53 unwind label %79

53:                                               ; preds = %49
  store ptr %52, ptr %8, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 4, ptr %9) #4
  %54 = getelementptr inbounds %"struct.HighsDomain::ObjectivePropagation", ptr %23, i32 0, i32 1
  %55 = load ptr, ptr %54, align 8, !tbaa !82
  %56 = invoke noundef i32 @_ZNK22HighsObjectiveFunction22getNumCliquePartitionsEv(ptr noundef nonnull align 8 dereferenceable(120) %55)
          to label %57 unwind label %83

57:                                               ; preds = %53
  store i32 %56, ptr %9, align 4, !tbaa !106
  %58 = load i32, ptr %9, align 4, !tbaa !106
  %59 = icmp ne i32 %58, 0
  br i1 %59, label %60, label %87

60:                                               ; preds = %57
  %61 = getelementptr inbounds %"struct.HighsDomain::ObjectivePropagation", ptr %23, i32 0, i32 1
  %62 = load ptr, ptr %61, align 8, !tbaa !82
  %63 = invoke noundef nonnull align 8 dereferenceable(24) ptr @_ZNK22HighsObjectiveFunction24getObjectiveValuesPackedEv(ptr noundef nonnull align 8 dereferenceable(120) %62)
          to label %64 unwind label %83

64:                                               ; preds = %60
  %65 = getelementptr inbounds %"struct.HighsDomain::ObjectivePropagation", ptr %23, i32 0, i32 9
  %66 = invoke noundef nonnull align 8 dereferenceable(24) ptr @_ZNSt6vectorIdSaIdEEaSERKS1_(ptr noundef nonnull align 8 dereferenceable(24) %65, ptr noundef nonnull align 8 dereferenceable(24) %63)
          to label %67 unwind label %83

67:                                               ; preds = %64
  %68 = getelementptr inbounds %"struct.HighsDomain::ObjectivePropagation", ptr %23, i32 0, i32 10
  %69 = getelementptr inbounds %"struct.HighsDomain::ObjectivePropagation", ptr %23, i32 0, i32 1
  %70 = load ptr, ptr %69, align 8, !tbaa !82
  %71 = invoke noundef i32 @_ZNK22HighsObjectiveFunction22getNumCliquePartitionsEv(ptr noundef nonnull align 8 dereferenceable(120) %70)
          to label %72 unwind label %83

72:                                               ; preds = %67
  %73 = sext i32 %71 to i64
  invoke void @_ZNSt6vectorIN11HighsDomain20ObjectivePropagation19PartitionCliqueDataESaIS2_EE6resizeEm(ptr noundef nonnull align 8 dereferenceable(24) %68, i64 noundef %73)
          to label %74 unwind label %83

74:                                               ; preds = %72
  br label %87

75:                                               ; preds = %2
  %76 = landingpad { ptr, i32 }
          cleanup
  %77 = extractvalue { ptr, i32 } %76, 0
  store ptr %77, ptr %6, align 8
  %78 = extractvalue { ptr, i32 } %76, 1
  store i32 %78, ptr %7, align 4
  br label %372

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

83:                                               ; preds = %90, %72, %67, %64, %60, %53
  %84 = landingpad { ptr, i32 }
          cleanup
  %85 = extractvalue { ptr, i32 } %84, 0
  store ptr %85, ptr %6, align 8
  %86 = extractvalue { ptr, i32 } %84, 1
  store i32 %86, ptr %7, align 4
  br label %370

87:                                               ; preds = %74, %57
  %88 = getelementptr inbounds %"struct.HighsDomain::ObjectivePropagation", ptr %23, i32 0, i32 6
  store i8 0, ptr %88, align 8, !tbaa !107
  %89 = getelementptr inbounds %"struct.HighsDomain::ObjectivePropagation", ptr %23, i32 0, i32 5
  store double 0x7FF0000000000000, ptr %89, align 8, !tbaa !108
  call void @llvm.lifetime.start.p0(i64 16, ptr %10) #4
  invoke void @_ZN12HighsCDoubleC2Ed(ptr noundef nonnull align 8 dereferenceable(16) %10, double noundef 0.000000e+00)
          to label %90 unwind label %112

90:                                               ; preds = %87
  %91 = getelementptr inbounds %"struct.HighsDomain::ObjectivePropagation", ptr %23, i32 0, i32 3
  call void @llvm.memcpy.p0.p0.i64(ptr align 8 %91, ptr align 8 %10, i64 16, i1 false), !tbaa.struct !109
  call void @llvm.lifetime.end.p0(i64 16, ptr %10) #4
  %92 = getelementptr inbounds %"struct.HighsDomain::ObjectivePropagation", ptr %23, i32 0, i32 4
  store i32 0, ptr %92, align 8, !tbaa !111
  %93 = getelementptr inbounds %"struct.HighsDomain::ObjectivePropagation", ptr %23, i32 0, i32 7
  %94 = load ptr, ptr %8, align 8, !tbaa !5
  %95 = load i32, ptr %9, align 4, !tbaa !106
  %96 = sext i32 %95 to i64
  %97 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNKSt6vectorIiSaIiEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %94, i64 noundef %96) #4
  %98 = load i32, ptr %97, align 4, !tbaa !106
  %99 = sext i32 %98 to i64
  invoke void @_ZNSt6vectorIN11HighsDomain20ObjectivePropagation21ObjectiveContributionESaIS2_EE6resizeEm(ptr noundef nonnull align 8 dereferenceable(24) %93, i64 noundef %99)
          to label %100 unwind label %83

100:                                              ; preds = %90
  %101 = getelementptr inbounds %"struct.HighsDomain::ObjectivePropagation", ptr %23, i32 0, i32 8
  %102 = load i32, ptr %9, align 4, !tbaa !106
  %103 = sext i32 %102 to i64
  call void @llvm.lifetime.start.p0(i64 8, ptr %11) #4
  call void @llvm.lifetime.start.p0(i64 4, ptr %12) #4
  store i32 -1, ptr %12, align 4, !tbaa !106
  call void @llvm.lifetime.start.p0(i64 4, ptr %13) #4
  store i32 -1, ptr %13, align 4, !tbaa !106
  %104 = invoke i64 @_ZSt9make_pairIiiESt4pairINSt25__strip_reference_wrapperINSt5decayIT_E4typeEE6__typeENS1_INS2_IT0_E4typeEE6__typeEEOS3_OS8_(ptr noundef nonnull align 4 dereferenceable(4) %12, ptr noundef nonnull align 4 dereferenceable(4) %13)
          to label %105 unwind label %116

105:                                              ; preds = %100
  store i64 %104, ptr %11, align 4
  invoke void @_ZNSt6vectorISt4pairIiiESaIS1_EE6resizeEmRKS1_(ptr noundef nonnull align 8 dereferenceable(24) %101, i64 noundef %103, ptr noundef nonnull align 4 dereferenceable(8) %11)
          to label %106 unwind label %116

106:                                              ; preds = %105
  call void @llvm.lifetime.end.p0(i64 4, ptr %13) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %12) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %11) #4
  call void @llvm.lifetime.start.p0(i64 4, ptr %14) #4
  store i32 0, ptr %14, align 4, !tbaa !106
  br label %107

107:                                              ; preds = %263, %106
  %108 = load i32, ptr %14, align 4, !tbaa !106
  %109 = load i32, ptr %9, align 4, !tbaa !106
  %110 = icmp slt i32 %108, %109
  br i1 %110, label %120, label %111

111:                                              ; preds = %107
  store i32 2, ptr %15, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %14) #4
  br label %267

112:                                              ; preds = %87
  %113 = landingpad { ptr, i32 }
          cleanup
  %114 = extractvalue { ptr, i32 } %113, 0
  store ptr %114, ptr %6, align 8
  %115 = extractvalue { ptr, i32 } %113, 1
  store i32 %115, ptr %7, align 4
  call void @llvm.lifetime.end.p0(i64 16, ptr %10) #4
  br label %370

116:                                              ; preds = %105, %100
  %117 = landingpad { ptr, i32 }
          cleanup
  %118 = extractvalue { ptr, i32 } %117, 0
  store ptr %118, ptr %6, align 8
  %119 = extractvalue { ptr, i32 } %117, 1
  store i32 %119, ptr %7, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %13) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %12) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %11) #4
  br label %370

120:                                              ; preds = %107
  call void @llvm.lifetime.start.p0(i64 24, ptr %16) #4
  %121 = load i32, ptr %14, align 4, !tbaa !106
  invoke void @_ZN11HighsDomain20ObjectivePropagation25ObjectiveContributionTreeC2EPS0_i(ptr noundef nonnull align 8 dereferenceable(24) %16, ptr noundef %23, i32 noundef %121)
          to label %122 unwind label %143

122:                                              ; preds = %120
  %123 = getelementptr inbounds %"struct.HighsDomain::ObjectivePropagation", ptr %23, i32 0, i32 10
  %124 = load i32, ptr %14, align 4, !tbaa !106
  %125 = sext i32 %124 to i64
  %126 = call noundef nonnull align 8 dereferenceable(16) ptr @_ZNSt6vectorIN11HighsDomain20ObjectivePropagation19PartitionCliqueDataESaIS2_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %123, i64 noundef %125) #4
  %127 = getelementptr inbounds %"struct.HighsDomain::ObjectivePropagation::PartitionCliqueData", ptr %126, i32 0, i32 1
  store i32 1, ptr %127, align 8, !tbaa !112
  call void @llvm.lifetime.start.p0(i64 4, ptr %17) #4
  %128 = load ptr, ptr %8, align 8, !tbaa !5
  %129 = load i32, ptr %14, align 4, !tbaa !106
  %130 = sext i32 %129 to i64
  %131 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNKSt6vectorIiSaIiEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %128, i64 noundef %130) #4
  %132 = load i32, ptr %131, align 4, !tbaa !106
  store i32 %132, ptr %17, align 4, !tbaa !106
  br label %133

133:                                              ; preds = %240, %122
  %134 = load i32, ptr %17, align 4, !tbaa !106
  %135 = load ptr, ptr %8, align 8, !tbaa !5
  %136 = load i32, ptr %14, align 4, !tbaa !106
  %137 = add nsw i32 %136, 1
  %138 = sext i32 %137 to i64
  %139 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNKSt6vectorIiSaIiEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %135, i64 noundef %138) #4
  %140 = load i32, ptr %139, align 4, !tbaa !106
  %141 = icmp slt i32 %134, %140
  br i1 %141, label %147, label %142

142:                                              ; preds = %133
  store i32 5, ptr %15, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %17) #4
  br label %243

143:                                              ; preds = %120
  %144 = landingpad { ptr, i32 }
          cleanup
  %145 = extractvalue { ptr, i32 } %144, 0
  store ptr %145, ptr %6, align 8
  %146 = extractvalue { ptr, i32 } %144, 1
  store i32 %146, ptr %7, align 4
  br label %266

147:                                              ; preds = %133
  call void @llvm.lifetime.start.p0(i64 4, ptr %18) #4
  %148 = load ptr, ptr %5, align 8, !tbaa !5
  %149 = load i32, ptr %17, align 4, !tbaa !106
  %150 = sext i32 %149 to i64
  %151 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNKSt6vectorIiSaIiEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %148, i64 noundef %150) #4
  %152 = load i32, ptr %151, align 4, !tbaa !106
  store i32 %152, ptr %18, align 4, !tbaa !106
  %153 = load i32, ptr %18, align 4, !tbaa !106
  %154 = getelementptr inbounds %"struct.HighsDomain::ObjectivePropagation", ptr %23, i32 0, i32 7
  %155 = load i32, ptr %17, align 4, !tbaa !106
  %156 = sext i32 %155 to i64
  %157 = call noundef nonnull align 8 dereferenceable(32) ptr @_ZNSt6vectorIN11HighsDomain20ObjectivePropagation21ObjectiveContributionESaIS2_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %154, i64 noundef %156) #4
  %158 = getelementptr inbounds %"struct.HighsDomain::ObjectivePropagation::ObjectiveContribution", ptr %157, i32 0, i32 1
  store i32 %153, ptr %158, align 8, !tbaa !114
  %159 = load i32, ptr %14, align 4, !tbaa !106
  %160 = getelementptr inbounds %"struct.HighsDomain::ObjectivePropagation", ptr %23, i32 0, i32 7
  %161 = load i32, ptr %17, align 4, !tbaa !106
  %162 = sext i32 %161 to i64
  %163 = call noundef nonnull align 8 dereferenceable(32) ptr @_ZNSt6vectorIN11HighsDomain20ObjectivePropagation21ObjectiveContributionESaIS2_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %160, i64 noundef %162) #4
  %164 = getelementptr inbounds %"struct.HighsDomain::ObjectivePropagation::ObjectiveContribution", ptr %163, i32 0, i32 2
  store i32 %159, ptr %164, align 4, !tbaa !117
  %165 = getelementptr inbounds %"struct.HighsDomain::ObjectivePropagation", ptr %23, i32 0, i32 2
  %166 = load ptr, ptr %165, align 8, !tbaa !105
  %167 = load i32, ptr %18, align 4, !tbaa !106
  %168 = sext i32 %167 to i64
  %169 = getelementptr inbounds double, ptr %166, i64 %168
  %170 = load double, ptr %169, align 8, !tbaa !110
  %171 = fcmp ogt double %170, 0.000000e+00
  br i1 %171, label %172, label %215

172:                                              ; preds = %147
  %173 = getelementptr inbounds %"struct.HighsDomain::ObjectivePropagation", ptr %23, i32 0, i32 2
  %174 = load ptr, ptr %173, align 8, !tbaa !105
  %175 = load i32, ptr %18, align 4, !tbaa !106
  %176 = sext i32 %175 to i64
  %177 = getelementptr inbounds double, ptr %174, i64 %176
  %178 = load double, ptr %177, align 8, !tbaa !110
  %179 = getelementptr inbounds %"struct.HighsDomain::ObjectivePropagation", ptr %23, i32 0, i32 3
  %180 = invoke noundef nonnull align 8 dereferenceable(16) ptr @_ZN12HighsCDoublepLEd(ptr noundef nonnull align 8 dereferenceable(16) %179, double noundef %178)
          to label %181 unwind label %210

181:                                              ; preds = %172
  %182 = getelementptr inbounds %"struct.HighsDomain::ObjectivePropagation", ptr %23, i32 0, i32 2
  %183 = load ptr, ptr %182, align 8, !tbaa !105
  %184 = load i32, ptr %18, align 4, !tbaa !106
  %185 = sext i32 %184 to i64
  %186 = getelementptr inbounds double, ptr %183, i64 %185
  %187 = load double, ptr %186, align 8, !tbaa !110
  %188 = getelementptr inbounds %"struct.HighsDomain::ObjectivePropagation", ptr %23, i32 0, i32 7
  %189 = load i32, ptr %17, align 4, !tbaa !106
  %190 = sext i32 %189 to i64
  %191 = call noundef nonnull align 8 dereferenceable(32) ptr @_ZNSt6vectorIN11HighsDomain20ObjectivePropagation21ObjectiveContributionESaIS2_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %188, i64 noundef %190) #4
  %192 = getelementptr inbounds %"struct.HighsDomain::ObjectivePropagation::ObjectiveContribution", ptr %191, i32 0, i32 0
  store double %187, ptr %192, align 8, !tbaa !118
  %193 = getelementptr inbounds %"struct.HighsDomain::ObjectivePropagation", ptr %23, i32 0, i32 10
  %194 = load i32, ptr %14, align 4, !tbaa !106
  %195 = sext i32 %194 to i64
  %196 = call noundef nonnull align 8 dereferenceable(16) ptr @_ZNSt6vectorIN11HighsDomain20ObjectivePropagation19PartitionCliqueDataESaIS2_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %193, i64 noundef %195) #4
  %197 = getelementptr inbounds %"struct.HighsDomain::ObjectivePropagation::PartitionCliqueData", ptr %196, i32 0, i32 1
  %198 = load i32, ptr %197, align 8, !tbaa !112
  %199 = sub nsw i32 %198, 1
  store i32 %199, ptr %197, align 8, !tbaa !112
  %200 = load ptr, ptr %4, align 8, !tbaa !5
  %201 = getelementptr inbounds %class.HighsDomain, ptr %200, i32 0, i32 25
  %202 = load i32, ptr %18, align 4, !tbaa !106
  %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) #4
  %205 = load double, ptr %204, align 8, !tbaa !110
  %206 = fcmp oeq double %205, 0.000000e+00
  br i1 %206, label %207, label %214

207:                                              ; preds = %181
  %208 = load i32, ptr %17, align 4, !tbaa !106
  invoke void @_ZN5highs6RbTreeIN11HighsDomain20ObjectivePropagation25ObjectiveContributionTreeEE4linkEi(ptr noundef nonnull align 8 dereferenceable(8) %16, i32 noundef %208)
          to label %209 unwind label %210

209:                                              ; preds = %207
  br label %214

210:                                              ; preds = %235, %207, %172
  %211 = landingpad { ptr, i32 }
          cleanup
  %212 = extractvalue { ptr, i32 } %211, 0
  store ptr %212, ptr %6, align 8
  %213 = extractvalue { ptr, i32 } %211, 1
  store i32 %213, ptr %7, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %18) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %17) #4
  br label %266

214:                                              ; preds = %209, %181
  br label %239

215:                                              ; preds = %147
  %216 = getelementptr inbounds %"struct.HighsDomain::ObjectivePropagation", ptr %23, i32 0, i32 2
  %217 = load ptr, ptr %216, align 8, !tbaa !105
  %218 = load i32, ptr %18, align 4, !tbaa !106
  %219 = sext i32 %218 to i64
  %220 = getelementptr inbounds double, ptr %217, i64 %219
  %221 = load double, ptr %220, align 8, !tbaa !110
  %222 = fneg double %221
  %223 = getelementptr inbounds %"struct.HighsDomain::ObjectivePropagation", ptr %23, i32 0, i32 7
  %224 = load i32, ptr %17, align 4, !tbaa !106
  %225 = sext i32 %224 to i64
  %226 = call noundef nonnull align 8 dereferenceable(32) ptr @_ZNSt6vectorIN11HighsDomain20ObjectivePropagation21ObjectiveContributionESaIS2_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %223, i64 noundef %225) #4
  %227 = getelementptr inbounds %"struct.HighsDomain::ObjectivePropagation::ObjectiveContribution", ptr %226, i32 0, i32 0
  store double %222, ptr %227, align 8, !tbaa !118
  %228 = load ptr, ptr %4, align 8, !tbaa !5
  %229 = getelementptr inbounds %class.HighsDomain, ptr %228, i32 0, i32 26
  %230 = load i32, ptr %18, align 4, !tbaa !106
  %231 = sext i32 %230 to i64
  %232 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt6vectorIdSaIdEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %229, i64 noundef %231) #4
  %233 = load double, ptr %232, align 8, !tbaa !110
  %234 = fcmp oeq double %233, 1.000000e+00
  br i1 %234, label %235, label %238

235:                                              ; preds = %215
  %236 = load i32, ptr %17, align 4, !tbaa !106
  invoke void @_ZN5highs6RbTreeIN11HighsDomain20ObjectivePropagation25ObjectiveContributionTreeEE4linkEi(ptr noundef nonnull align 8 dereferenceable(8) %16, i32 noundef %236)
          to label %237 unwind label %210

237:                                              ; preds = %235
  br label %238

238:                                              ; preds = %237, %215
  br label %239

239:                                              ; preds = %238, %214
  call void @llvm.lifetime.end.p0(i64 4, ptr %18) #4
  br label %240

240:                                              ; preds = %239
  %241 = load i32, ptr %17, align 4, !tbaa !106
  %242 = add nsw i32 %241, 1
  store i32 %242, ptr %17, align 4, !tbaa !106
  br label %133, !llvm.loop !119

243:                                              ; preds = %142
  call void @llvm.lifetime.start.p0(i64 4, ptr %19) #4
  %244 = invoke noundef i32 @_ZNK5highs14CacheMinRbTreeIN11HighsDomain20ObjectivePropagation25ObjectiveContributionTreeEE5firstEv(ptr noundef nonnull align 8 dereferenceable(16) %16)
          to label %245 unwind label %258

245:                                              ; preds = %243
  store i32 %244, ptr %19, align 4, !tbaa !106
  %246 = load i32, ptr %19, align 4, !tbaa !106
  %247 = icmp ne i32 %246, -1
  br i1 %247, label %248, label %262

248:                                              ; preds = %245
  %249 = getelementptr inbounds %"struct.HighsDomain::ObjectivePropagation", ptr %23, i32 0, i32 7
  %250 = load i32, ptr %19, align 4, !tbaa !106
  %251 = sext i32 %250 to i64
  %252 = call noundef nonnull align 8 dereferenceable(32) ptr @_ZNSt6vectorIN11HighsDomain20ObjectivePropagation21ObjectiveContributionESaIS2_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %249, i64 noundef %251) #4
  %253 = getelementptr inbounds %"struct.HighsDomain::ObjectivePropagation::ObjectiveContribution", ptr %252, i32 0, i32 0
  %254 = load double, ptr %253, align 8, !tbaa !118
  %255 = getelementptr inbounds %"struct.HighsDomain::ObjectivePropagation", ptr %23, i32 0, i32 3
  %256 = invoke noundef nonnull align 8 dereferenceable(16) ptr @_ZN12HighsCDoublemIEd(ptr noundef nonnull align 8 dereferenceable(16) %255, double noundef %254)
          to label %257 unwind label %258

257:                                              ; preds = %248
  br label %262

258:                                              ; preds = %248, %243
  %259 = landingpad { ptr, i32 }
          cleanup
  %260 = extractvalue { ptr, i32 } %259, 0
  store ptr %260, ptr %6, align 8
  %261 = extractvalue { ptr, i32 } %259, 1
  store i32 %261, ptr %7, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %19) #4
  br label %266

262:                                              ; preds = %257, %245
  call void @llvm.lifetime.end.p0(i64 4, ptr %19) #4
  call void @llvm.lifetime.end.p0(i64 24, ptr %16) #4
  br label %263

263:                                              ; preds = %262
  %264 = load i32, ptr %14, align 4, !tbaa !106
  %265 = add nsw i32 %264, 1
  store i32 %265, ptr %14, align 4, !tbaa !106
  br label %107, !llvm.loop !121

266:                                              ; preds = %258, %210, %143
  call void @llvm.lifetime.end.p0(i64 24, ptr %16) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %14) #4
  br label %370

267:                                              ; preds = %111
  call void @llvm.lifetime.start.p0(i64 4, ptr %20) #4
  %268 = load ptr, ptr %5, align 8, !tbaa !5
  %269 = call noundef i64 @_ZNKSt6vectorIiSaIiEE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24) %268) #4
  %270 = trunc i64 %269 to i32
  store i32 %270, ptr %20, align 4, !tbaa !106
  call void @llvm.lifetime.start.p0(i64 4, ptr %21) #4
  %271 = load ptr, ptr %8, align 8, !tbaa !5
  %272 = load i32, ptr %9, align 4, !tbaa !106
  %273 = sext i32 %272 to i64
  %274 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNKSt6vectorIiSaIiEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %271, i64 noundef %273) #4
  %275 = load i32, ptr %274, align 4, !tbaa !106
  store i32 %275, ptr %21, align 4, !tbaa !106
  br label %276

276:                                              ; preds = %359, %267
  %277 = load i32, ptr %21, align 4, !tbaa !106
  %278 = load i32, ptr %20, align 4, !tbaa !106
  %279 = icmp slt i32 %277, %278
  br i1 %279, label %281, label %280

280:                                              ; preds = %276
  store i32 8, ptr %15, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %21) #4
  br label %362

281:                                              ; preds = %276
  call void @llvm.lifetime.start.p0(i64 4, ptr %22) #4
  %282 = load ptr, ptr %5, align 8, !tbaa !5
  %283 = load i32, ptr %21, align 4, !tbaa !106
  %284 = sext i32 %283 to i64
  %285 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNKSt6vectorIiSaIiEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %282, i64 noundef %284) #4
  %286 = load i32, ptr %285, align 4, !tbaa !106
  store i32 %286, ptr %22, align 4, !tbaa !106
  %287 = getelementptr inbounds %"struct.HighsDomain::ObjectivePropagation", ptr %23, i32 0, i32 2
  %288 = load ptr, ptr %287, align 8, !tbaa !105
  %289 = load i32, ptr %22, align 4, !tbaa !106
  %290 = sext i32 %289 to i64
  %291 = getelementptr inbounds double, ptr %288, i64 %290
  %292 = load double, ptr %291, align 8, !tbaa !110
  %293 = fcmp ogt double %292, 0.000000e+00
  br i1 %293, label %294, label %328

294:                                              ; preds = %281
  %295 = load ptr, ptr %4, align 8, !tbaa !5
  %296 = getelementptr inbounds %class.HighsDomain, ptr %295, i32 0, i32 25
  %297 = load i32, ptr %22, align 4, !tbaa !106
  %298 = sext i32 %297 to i64
  %299 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt6vectorIdSaIdEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %296, i64 noundef %298) #4
  %300 = load double, ptr %299, align 8, !tbaa !110
  %301 = fcmp oeq double %300, 0xFFF0000000000000
  br i1 %301, label %302, label %306

302:                                              ; preds = %294
  %303 = getelementptr inbounds %"struct.HighsDomain::ObjectivePropagation", ptr %23, i32 0, i32 4
  %304 = load i32, ptr %303, align 8, !tbaa !111
  %305 = add nsw i32 %304, 1
  store i32 %305, ptr %303, align 8, !tbaa !111
  br label %327

306:                                              ; preds = %294
  %307 = load ptr, ptr %4, align 8, !tbaa !5
  %308 = getelementptr inbounds %class.HighsDomain, ptr %307, i32 0, i32 25
  %309 = load i32, ptr %22, align 4, !tbaa !106
  %310 = sext i32 %309 to i64
  %311 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt6vectorIdSaIdEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %308, i64 noundef %310) #4
  %312 = load double, ptr %311, align 8, !tbaa !110
  %313 = getelementptr inbounds %"struct.HighsDomain::ObjectivePropagation", ptr %23, i32 0, i32 2
  %314 = load ptr, ptr %313, align 8, !tbaa !105
  %315 = load i32, ptr %22, align 4, !tbaa !106
  %316 = sext i32 %315 to i64
  %317 = getelementptr inbounds double, ptr %314, i64 %316
  %318 = load double, ptr %317, align 8, !tbaa !110
  %319 = fmul double %312, %318
  %320 = getelementptr inbounds %"struct.HighsDomain::ObjectivePropagation", ptr %23, i32 0, i32 3
  %321 = invoke noundef nonnull align 8 dereferenceable(16) ptr @_ZN12HighsCDoublepLEd(ptr noundef nonnull align 8 dereferenceable(16) %320, double noundef %319)
          to label %322 unwind label %323

322:                                              ; preds = %306
  br label %327

323:                                              ; preds = %340, %306
  %324 = landingpad { ptr, i32 }
          cleanup
  %325 = extractvalue { ptr, i32 } %324, 0
  store ptr %325, ptr %6, align 8
  %326 = extractvalue { ptr, i32 } %324, 1
  store i32 %326, ptr %7, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %22) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %21) #4
  br label %369

327:                                              ; preds = %322, %302
  br label %358

328:                                              ; preds = %281
  %329 = load ptr, ptr %4, align 8, !tbaa !5
  %330 = getelementptr inbounds %class.HighsDomain, ptr %329, i32 0, i32 26
  %331 = load i32, ptr %22, align 4, !tbaa !106
  %332 = sext i32 %331 to i64
  %333 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt6vectorIdSaIdEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %330, i64 noundef %332) #4
  %334 = load double, ptr %333, align 8, !tbaa !110
  %335 = fcmp oeq double %334, 0x7FF0000000000000
  br i1 %335, label %336, label %340

336:                                              ; preds = %328
  %337 = getelementptr inbounds %"struct.HighsDomain::ObjectivePropagation", ptr %23, i32 0, i32 4
  %338 = load i32, ptr %337, align 8, !tbaa !111
  %339 = add nsw i32 %338, 1
  store i32 %339, ptr %337, align 8, !tbaa !111
  br label %357

340:                                              ; preds = %328
  %341 = load ptr, ptr %4, align 8, !tbaa !5
  %342 = getelementptr inbounds %class.HighsDomain, ptr %341, i32 0, i32 26
  %343 = load i32, ptr %22, align 4, !tbaa !106
  %344 = sext i32 %343 to i64
  %345 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt6vectorIdSaIdEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %342, i64 noundef %344) #4
  %346 = load double, ptr %345, align 8, !tbaa !110
  %347 = getelementptr inbounds %"struct.HighsDomain::ObjectivePropagation", ptr %23, i32 0, i32 2
  %348 = load ptr, ptr %347, align 8, !tbaa !105
  %349 = load i32, ptr %22, align 4, !tbaa !106
  %350 = sext i32 %349 to i64
  %351 = getelementptr inbounds double, ptr %348, i64 %350
  %352 = load double, ptr %351, align 8, !tbaa !110
  %353 = fmul double %346, %352
  %354 = getelementptr inbounds %"struct.HighsDomain::ObjectivePropagation", ptr %23, i32 0, i32 3
  %355 = invoke noundef nonnull align 8 dereferenceable(16) ptr @_ZN12HighsCDoublepLEd(ptr noundef nonnull align 8 dereferenceable(16) %354, double noundef %353)
          to label %356 unwind label %323

356:                                              ; preds = %340
  br label %357

357:                                              ; preds = %356, %336
  br label %358

358:                                              ; preds = %357, %327
  call void @llvm.lifetime.end.p0(i64 4, ptr %22) #4
  br label %359

359:                                              ; preds = %358
  %360 = load i32, ptr %21, align 4, !tbaa !106
  %361 = add nsw i32 %360, 1
  store i32 %361, ptr %21, align 4, !tbaa !106
  br label %276, !llvm.loop !122

362:                                              ; preds = %280
  invoke void @_ZN11HighsDomain20ObjectivePropagation26recomputeCapacityThresholdEv(ptr noundef nonnull align 8 dereferenceable(160) %23)
          to label %363 unwind label %365

363:                                              ; preds = %362
  invoke void @_ZNK11HighsDomain20ObjectivePropagation24debugCheckObjectiveLowerEv(ptr noundef nonnull align 8 dereferenceable(160) %23)
          to label %364 unwind label %365

364:                                              ; preds = %363
  call void @llvm.lifetime.end.p0(i64 4, ptr %20) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %9) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %8) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %5) #4
  ret void

365:                                              ; preds = %363, %362
  %366 = landingpad { ptr, i32 }
          cleanup
  %367 = extractvalue { ptr, i32 } %366, 0
  store ptr %367, ptr %6, align 8
  %368 = extractvalue { ptr, i32 } %366, 1
  store i32 %368, ptr %7, align 4
  br label %369

369:                                              ; preds = %365, %323
  call void @llvm.lifetime.end.p0(i64 4, ptr %20) #4
  br label %370

370:                                              ; preds = %369, %266, %116, %112, %83
  call void @llvm.lifetime.end.p0(i64 4, ptr %9) #4
  br label %371

371:                                              ; preds = %370, %79
  call void @llvm.lifetime.end.p0(i64 8, ptr %8) #4
  br label %372

372:                                              ; preds = %371, %75
  call void @llvm.lifetime.end.p0(i64 8, ptr %5) #4
  call void @_ZNSt6vectorIN11HighsDomain20ObjectivePropagation19PartitionCliqueDataESaIS2_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %45) #4
  call void @_ZNSt6vectorIdSaIdEED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %44) #4
  call void @_ZNSt6vectorISt4pairIiiESaIS1_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %43) #4
  call void @_ZNSt6vectorIN11HighsDomain20ObjectivePropagation21ObjectiveContributionESaIS2_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %42) #4
  br label %373

373:                                              ; preds = %372
  %374 = load ptr, ptr %6, align 8
  %375 = load i32, ptr %7, align 4
  %376 = insertvalue { ptr, i32 } poison, ptr %374, 0
  %377 = insertvalue { ptr, i32 } %376, i32 %375, 1
  resume { ptr, i32 } %377
}

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

; Function Attrs: mustprogress uwtable
declare dso_local noundef nonnull align 8 dereferenceable(16) ptr @_ZN12HighsCDoublemIEd(ptr noundef nonnull align 8 dereferenceable(16), double noundef) #2 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 uwtable
declare dso_local void @_ZN11HighsDomain20ObjectivePropagation26recomputeCapacityThresholdEv(ptr noundef nonnull align 8 dereferenceable(160)) #2 align 2

; Function Attrs: mustprogress uwtable
declare dso_local void @_ZNK11HighsDomain20ObjectivePropagation24debugCheckObjectiveLowerEv(ptr noundef nonnull align 8 dereferenceable(160)) #2 align 2

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

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

attributes #0 = { nocallback nofree nosync nounwind willreturn memory(argmem: readwrite) }
attributes #1 = { mustprogress nounwind uwtable "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }
attributes #2 = { mustprogress uwtable "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }
attributes #3 = { nocallback nofree nounwind willreturn memory(argmem: readwrite) }
attributes #4 = { 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 0}
!10 = !{!"_ZTSN11HighsDomain20ObjectivePropagationE", !6, i64 0, !6, i64 8, !6, i64 16, !11, i64 24, !13, i64 40, !12, i64 48, !14, i64 56, !15, i64 64, !19, i64 88, !23, i64 112, !27, i64 136}
!11 = !{!"_ZTS12HighsCDouble", !12, i64 0, !12, i64 8}
!12 = !{!"double", !7, i64 0}
!13 = !{!"int", !7, i64 0}
!14 = !{!"bool", !7, i64 0}
!15 = !{!"_ZTSSt6vectorIN11HighsDomain20ObjectivePropagation21ObjectiveContributionESaIS2_EE", !16, i64 0}
!16 = !{!"_ZTSSt12_Vector_baseIN11HighsDomain20ObjectivePropagation21ObjectiveContributionESaIS2_EE", !17, i64 0}
!17 = !{!"_ZTSNSt12_Vector_baseIN11HighsDomain20ObjectivePropagation21ObjectiveContributionESaIS2_EE12_Vector_implE", !18, i64 0}
!18 = !{!"_ZTSNSt12_Vector_baseIN11HighsDomain20ObjectivePropagation21ObjectiveContributionESaIS2_EE17_Vector_impl_dataE", !6, i64 0, !6, i64 8, !6, i64 16}
!19 = !{!"_ZTSSt6vectorISt4pairIiiESaIS1_EE", !20, i64 0}
!20 = !{!"_ZTSSt12_Vector_baseISt4pairIiiESaIS1_EE", !21, i64 0}
!21 = !{!"_ZTSNSt12_Vector_baseISt4pairIiiESaIS1_EE12_Vector_implE", !22, i64 0}
!22 = !{!"_ZTSNSt12_Vector_baseISt4pairIiiESaIS1_EE17_Vector_impl_dataE", !6, i64 0, !6, i64 8, !6, i64 16}
!23 = !{!"_ZTSSt6vectorIdSaIdEE", !24, i64 0}
!24 = !{!"_ZTSSt12_Vector_baseIdSaIdEE", !25, i64 0}
!25 = !{!"_ZTSNSt12_Vector_baseIdSaIdEE12_Vector_implE", !26, i64 0}
!26 = !{!"_ZTSNSt12_Vector_baseIdSaIdEE17_Vector_impl_dataE", !6, i64 0, !6, i64 8, !6, i64 16}
!27 = !{!"_ZTSSt6vectorIN11HighsDomain20ObjectivePropagation19PartitionCliqueDataESaIS2_EE", !28, i64 0}
!28 = !{!"_ZTSSt12_Vector_baseIN11HighsDomain20ObjectivePropagation19PartitionCliqueDataESaIS2_EE", !29, i64 0}
!29 = !{!"_ZTSNSt12_Vector_baseIN11HighsDomain20ObjectivePropagation19PartitionCliqueDataESaIS2_EE12_Vector_implE", !30, i64 0}
!30 = !{!"_ZTSNSt12_Vector_baseIN11HighsDomain20ObjectivePropagation19PartitionCliqueDataESaIS2_EE17_Vector_impl_dataE", !6, i64 0, !6, i64 8, !6, i64 16}
!31 = !{!32, !6, i64 472}
!32 = !{!"_ZTS11HighsDomain", !33, i64 0, !37, i64 24, !19, i64 48, !41, i64 72, !45, i64 96, !49, i64 120, !53, i64 144, !53, i64 168, !37, i64 192, !37, i64 216, !23, i64 240, !33, i64 264, !37, i64 288, !10, i64 312, !6, i64 472, !57, i64 480, !63, i64 560, !14, i64 640, !68, i64 644, !13, i64 652, !37, i64 656, !37, i64 680, !37, i64 704, !69, i64 728, !14, i64 768, !23, i64 776, !23, i64 800}
!33 = !{!"_ZTSSt6vectorIhSaIhEE", !34, i64 0}
!34 = !{!"_ZTSSt12_Vector_baseIhSaIhEE", !35, i64 0}
!35 = !{!"_ZTSNSt12_Vector_baseIhSaIhEE12_Vector_implE", !36, i64 0}
!36 = !{!"_ZTSNSt12_Vector_baseIhSaIhEE17_Vector_impl_dataE", !6, i64 0, !6, i64 8, !6, i64 16}
!37 = !{!"_ZTSSt6vectorIiSaIiEE", !38, i64 0}
!38 = !{!"_ZTSSt12_Vector_baseIiSaIiEE", !39, i64 0}
!39 = !{!"_ZTSNSt12_Vector_baseIiSaIiEE12_Vector_implE", !40, i64 0}
!40 = !{!"_ZTSNSt12_Vector_baseIiSaIiEE17_Vector_impl_dataE", !6, i64 0, !6, i64 8, !6, i64 16}
!41 = !{!"_ZTSSt6vectorI17HighsDomainChangeSaIS0_EE", !42, i64 0}
!42 = !{!"_ZTSSt12_Vector_baseI17HighsDomainChangeSaIS0_EE", !43, i64 0}
!43 = !{!"_ZTSNSt12_Vector_baseI17HighsDomainChangeSaIS0_EE12_Vector_implE", !44, i64 0}
!44 = !{!"_ZTSNSt12_Vector_baseI17HighsDomainChangeSaIS0_EE17_Vector_impl_dataE", !6, i64 0, !6, i64 8, !6, i64 16}
!45 = !{!"_ZTSSt6vectorIN11HighsDomain6ReasonESaIS1_EE", !46, i64 0}
!46 = !{!"_ZTSSt12_Vector_baseIN11HighsDomain6ReasonESaIS1_EE", !47, i64 0}
!47 = !{!"_ZTSNSt12_Vector_baseIN11HighsDomain6ReasonESaIS1_EE12_Vector_implE", !48, i64 0}
!48 = !{!"_ZTSNSt12_Vector_baseIN11HighsDomain6ReasonESaIS1_EE17_Vector_impl_dataE", !6, i64 0, !6, i64 8, !6, i64 16}
!49 = !{!"_ZTSSt6vectorISt4pairIdiESaIS1_EE", !50, i64 0}
!50 = !{!"_ZTSSt12_Vector_baseISt4pairIdiESaIS1_EE", !51, i64 0}
!51 = !{!"_ZTSNSt12_Vector_baseISt4pairIdiESaIS1_EE12_Vector_implE", !52, i64 0}
!52 = !{!"_ZTSNSt12_Vector_baseISt4pairIdiESaIS1_EE17_Vector_impl_dataE", !6, i64 0, !6, i64 8, !6, i64 16}
!53 = !{!"_ZTSSt6vectorI12HighsCDoubleSaIS0_EE", !54, i64 0}
!54 = !{!"_ZTSSt12_Vector_baseI12HighsCDoubleSaIS0_EE", !55, i64 0}
!55 = !{!"_ZTSNSt12_Vector_baseI12HighsCDoubleSaIS0_EE12_Vector_implE", !56, i64 0}
!56 = !{!"_ZTSNSt12_Vector_baseI12HighsCDoubleSaIS0_EE17_Vector_impl_dataE", !6, i64 0, !6, i64 8, !6, i64 16}
!57 = !{!"_ZTSSt5dequeIN11HighsDomain18CutpoolPropagationESaIS1_EE", !58, i64 0}
!58 = !{!"_ZTSSt11_Deque_baseIN11HighsDomain18CutpoolPropagationESaIS1_EE", !59, i64 0}
!59 = !{!"_ZTSNSt11_Deque_baseIN11HighsDomain18CutpoolPropagationESaIS1_EE11_Deque_implE", !60, i64 0}
!60 = !{!"_ZTSNSt11_Deque_baseIN11HighsDomain18CutpoolPropagationESaIS1_EE16_Deque_impl_dataE", !6, i64 0, !61, i64 8, !62, i64 16, !62, i64 48}
!61 = !{!"long", !7, i64 0}
!62 = !{!"_ZTSSt15_Deque_iteratorIN11HighsDomain18CutpoolPropagationERS1_PS1_E", !6, i64 0, !6, i64 8, !6, i64 16, !6, i64 24}
!63 = !{!"_ZTSSt5dequeIN11HighsDomain23ConflictPoolPropagationESaIS1_EE", !64, i64 0}
!64 = !{!"_ZTSSt11_Deque_baseIN11HighsDomain23ConflictPoolPropagationESaIS1_EE", !65, i64 0}
!65 = !{!"_ZTSNSt11_Deque_baseIN11HighsDomain23ConflictPoolPropagationESaIS1_EE11_Deque_implE", !66, i64 0}
!66 = !{!"_ZTSNSt11_Deque_baseIN11HighsDomain23ConflictPoolPropagationESaIS1_EE16_Deque_impl_dataE", !6, i64 0, !61, i64 8, !67, i64 16, !67, i64 48}
!67 = !{!"_ZTSSt15_Deque_iteratorIN11HighsDomain23ConflictPoolPropagationERS1_PS1_E", !6, i64 0, !6, i64 8, !6, i64 16, !6, i64 24}
!68 = !{!"_ZTSN11HighsDomain6ReasonE", !13, i64 0, !13, i64 4}
!69 = !{!"_ZTS14HighsHashTableIivE", !70, i64 0, !76, i64 8, !61, i64 16, !61, i64 24, !61, i64 32}
!70 = !{!"_ZTSSt10unique_ptrI19HighsHashTableEntryIivEN14HighsHashTableIivE12OpNewDeleterEE", !71, i64 0}
!71 = !{!"_ZTSSt15__uniq_ptr_dataI19HighsHashTableEntryIivEN14HighsHashTableIivE12OpNewDeleterELb1ELb1EE", !72, i64 0}
!72 = !{!"_ZTSSt15__uniq_ptr_implI19HighsHashTableEntryIivEN14HighsHashTableIivE12OpNewDeleterEE", !73, i64 0}
!73 = !{!"_ZTSSt5tupleIJP19HighsHashTableEntryIivEN14HighsHashTableIivE12OpNewDeleterEEE", !74, i64 0}
!74 = !{!"_ZTSSt11_Tuple_implILm0EJP19HighsHashTableEntryIivEN14HighsHashTableIivE12OpNewDeleterEEE", !75, i64 0}
!75 = !{!"_ZTSSt10_Head_baseILm0EP19HighsHashTableEntryIivELb0EE", !6, i64 0}
!76 = !{!"_ZTSSt10unique_ptrIA_hSt14default_deleteIS0_EE", !77, i64 0}
!77 = !{!"_ZTSSt15__uniq_ptr_dataIhSt14default_deleteIA_hELb1ELb1EE", !78, i64 0}
!78 = !{!"_ZTSSt15__uniq_ptr_implIhSt14default_deleteIA_hEE", !79, i64 0}
!79 = !{!"_ZTSSt5tupleIJPhSt14default_deleteIA_hEEE", !80, i64 0}
!80 = !{!"_ZTSSt11_Tuple_implILm0EJPhSt14default_deleteIA_hEEE", !81, i64 0}
!81 = !{!"_ZTSSt10_Head_baseILm0EPhLb0EE", !6, i64 0}
!82 = !{!10, !6, i64 8}
!83 = !{!84, !6, i64 16}
!84 = !{!"_ZTS14HighsMipSolver", !6, i64 0, !6, i64 8, !6, i64 16, !6, i64 24, !85, i64 32, !23, i64 40, !12, i64 64, !12, i64 72, !12, i64 80, !12, i64 88, !12, i64 96, !12, i64 104, !12, i64 112, !61, i64 120, !61, i64 128, !12, i64 136, !6, i64 144, !86, i64 152, !14, i64 176, !13, i64 180, !13, i64 184, !6, i64 192, !6, i64 200, !6, i64 208, !6, i64 216, !90, i64 224, !96, i64 232, !100, i64 360}
!85 = !{!"_ZTS16HighsModelStatus", !7, i64 0}
!86 = !{!"_ZTSSt6vectorI22HighsObjectiveSolutionSaIS0_EE", !87, i64 0}
!87 = !{!"_ZTSSt12_Vector_baseI22HighsObjectiveSolutionSaIS0_EE", !88, i64 0}
!88 = !{!"_ZTSNSt12_Vector_baseI22HighsObjectiveSolutionSaIS0_EE12_Vector_implE", !89, i64 0}
!89 = !{!"_ZTSNSt12_Vector_baseI22HighsObjectiveSolutionSaIS0_EE17_Vector_impl_dataE", !6, i64 0, !6, i64 8, !6, i64 16}
!90 = !{!"_ZTSSt10unique_ptrI18HighsMipSolverDataSt14default_deleteIS0_EE", !91, i64 0}
!91 = !{!"_ZTSSt15__uniq_ptr_dataI18HighsMipSolverDataSt14default_deleteIS0_ELb1ELb1EE", !92, i64 0}
!92 = !{!"_ZTSSt15__uniq_ptr_implI18HighsMipSolverDataSt14default_deleteIS0_EE", !93, i64 0}
!93 = !{!"_ZTSSt5tupleIJP18HighsMipSolverDataSt14default_deleteIS0_EEE", !94, i64 0}
!94 = !{!"_ZTSSt11_Tuple_implILm0EJP18HighsMipSolverDataSt14default_deleteIS0_EEE", !95, i64 0}
!95 = !{!"_ZTSSt10_Head_baseILm0EP18HighsMipSolverDataLb0EE", !6, i64 0}
!96 = !{!"_ZTS16HighsMipAnalysis", !6, i64 0, !97, i64 8, !99, i64 40, !14, i64 72, !23, i64 80, !23, i64 104}
!97 = !{!"_ZTSNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE", !98, i64 0, !61, i64 8, !7, i64 16}
!98 = !{!"_ZTSNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE12_Alloc_hiderE", !6, i64 0}
!99 = !{!"_ZTS15HighsTimerClock", !6, i64 0, !37, i64 8}
!100 = !{!"_ZTS10HighsTimer", !12, i64 8, !13, i64 16, !37, i64 24, !23, i64 48, !23, i64 72, !101, i64 96, !13, i64 120, !13, i64 124, !13, i64 128}
!101 = !{!"_ZTSSt6vectorINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESaIS5_EE", !102, i64 0}
!102 = !{!"_ZTSSt12_Vector_baseINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESaIS5_EE", !103, i64 0}
!103 = !{!"_ZTSNSt12_Vector_baseINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESaIS5_EE12_Vector_implE", !104, i64 0}
!104 = !{!"_ZTSNSt12_Vector_baseINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESaIS5_EE17_Vector_impl_dataE", !6, i64 0, !6, i64 8, !6, i64 16}
!105 = !{!10, !6, i64 16}
!106 = !{!13, !13, i64 0}
!107 = !{!10, !14, i64 56}
!108 = !{!10, !12, i64 48}
!109 = !{i64 0, i64 8, !110, i64 8, i64 8, !110}
!110 = !{!12, !12, i64 0}
!111 = !{!10, !13, i64 40}
!112 = !{!113, !13, i64 8}
!113 = !{!"_ZTSN11HighsDomain20ObjectivePropagation19PartitionCliqueDataE", !12, i64 0, !13, i64 8, !14, i64 12}
!114 = !{!115, !13, i64 8}
!115 = !{!"_ZTSN11HighsDomain20ObjectivePropagation21ObjectiveContributionE", !12, i64 0, !13, i64 8, !13, i64 12, !116, i64 16}
!116 = !{!"_ZTSN5highs11RbTreeLinksIiEE", !7, i64 0, !13, i64 8}
!117 = !{!115, !13, i64 12}
!118 = !{!115, !12, i64 0}
!119 = distinct !{!119, !120}
!120 = !{!"llvm.loop.mustprogress"}
!121 = distinct !{!121, !120}
!122 = distinct !{!122, !120}


; 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 }
%"struct.std::pair" = type { i32, i32 }
%"class.HighsDomain::ObjectivePropagation::ObjectiveContributionTree" = type { %"class.highs::CacheMinRbTree", ptr }
%"class.highs::CacheMinRbTree" = type { %"class.highs::RbTree", ptr }
%"class.highs::RbTree" = type { ptr }

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

declare i32 @__gxx_personality_v0(...)

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

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

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

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

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

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

; Function Attrs: mustprogress uwtable
define dso_local void @_ZN11HighsDomain20ObjectivePropagationC2EPS_(ptr noundef nonnull align 8 dereferenceable(160) %0, ptr noundef %1) unnamed_addr #2 align 2 personality ptr @__gxx_personality_v0 {
  %3 = alloca %class.HighsCDouble, align 8
  %4 = alloca %"struct.std::pair", align 8
  %5 = alloca i32, align 4
  %6 = alloca i32, align 4
  %7 = alloca %"class.HighsDomain::ObjectivePropagation::ObjectiveContributionTree", align 8
  store ptr %1, ptr %0, align 8, !tbaa !5
  %8 = getelementptr inbounds i8, ptr %0, i64 8
  %9 = getelementptr inbounds i8, ptr %1, i64 472
  %10 = load ptr, ptr %9, align 8, !tbaa !30
  %11 = getelementptr inbounds i8, ptr %10, i64 224
  %12 = tail call noundef ptr @_ZNKSt10unique_ptrI18HighsMipSolverDataSt14default_deleteIS0_EEptEv(ptr noundef nonnull align 8 dereferenceable(8) %11) #4
  %13 = getelementptr inbounds i8, ptr %12, i64 24344
  store ptr %13, ptr %8, align 8, !tbaa !81
  %14 = getelementptr inbounds i8, ptr %0, i64 16
  %15 = load ptr, ptr %9, align 8, !tbaa !30
  %16 = getelementptr inbounds i8, ptr %15, i64 16
  %17 = load ptr, ptr %16, align 8, !tbaa !82
  %18 = getelementptr inbounds i8, ptr %17, i64 8
  %19 = tail call noundef ptr @_ZNKSt6vectorIdSaIdEE4dataEv(ptr noundef nonnull align 8 dereferenceable(24) %18) #4
  store ptr %19, ptr %14, align 8, !tbaa !104
  %20 = getelementptr inbounds i8, ptr %0, i64 64
  tail call void @_ZNSt6vectorIN11HighsDomain20ObjectivePropagation21ObjectiveContributionESaIS2_EEC2Ev(ptr noundef nonnull align 8 dereferenceable(24) %20) #4
  %21 = getelementptr inbounds i8, ptr %0, i64 88
  tail call void @_ZNSt6vectorISt4pairIiiESaIS1_EEC2Ev(ptr noundef nonnull align 8 dereferenceable(24) %21) #4
  %22 = getelementptr inbounds i8, ptr %0, i64 112
  tail call void @_ZNSt6vectorIdSaIdEEC2Ev(ptr noundef nonnull align 8 dereferenceable(24) %22) #4
  %23 = getelementptr inbounds i8, ptr %0, i64 136
  tail call void @_ZNSt6vectorIN11HighsDomain20ObjectivePropagation19PartitionCliqueDataESaIS2_EEC2Ev(ptr noundef nonnull align 8 dereferenceable(24) %23) #4
  %24 = load ptr, ptr %8, align 8, !tbaa !81
  %25 = tail call noundef nonnull align 8 dereferenceable(24) ptr @_ZNK22HighsObjectiveFunction20getObjectiveNonzerosEv(ptr noundef nonnull align 8 dereferenceable(120) %24)
  %26 = load ptr, ptr %8, align 8, !tbaa !81
  %27 = tail call noundef nonnull align 8 dereferenceable(24) ptr @_ZNK22HighsObjectiveFunction24getCliquePartitionStartsEv(ptr noundef nonnull align 8 dereferenceable(120) %26)
  %28 = load ptr, ptr %8, align 8, !tbaa !81
  %29 = tail call noundef i32 @_ZNK22HighsObjectiveFunction22getNumCliquePartitionsEv(ptr noundef nonnull align 8 dereferenceable(120) %28)
  %.not = icmp eq i32 %29, 0
  br i1 %.not, label %40, label %30

30:                                               ; preds = %2
  %31 = load ptr, ptr %8, align 8, !tbaa !81
  %32 = tail call noundef nonnull align 8 dereferenceable(24) ptr @_ZNK22HighsObjectiveFunction24getObjectiveValuesPackedEv(ptr noundef nonnull align 8 dereferenceable(120) %31)
  %33 = invoke noundef nonnull align 8 dereferenceable(24) ptr @_ZNSt6vectorIdSaIdEEaSERKS1_(ptr noundef nonnull align 8 dereferenceable(24) %22, ptr noundef nonnull align 8 dereferenceable(24) %32)
          to label %34 unwind label %38

34:                                               ; preds = %30
  %35 = load ptr, ptr %8, align 8, !tbaa !81
  %36 = tail call noundef i32 @_ZNK22HighsObjectiveFunction22getNumCliquePartitionsEv(ptr noundef nonnull align 8 dereferenceable(120) %35)
  %37 = sext i32 %36 to i64
  invoke void @_ZNSt6vectorIN11HighsDomain20ObjectivePropagation19PartitionCliqueDataESaIS2_EE6resizeEm(ptr noundef nonnull align 8 dereferenceable(24) %23, i64 noundef %37)
          to label %40 unwind label %38

38:                                               ; preds = %40, %34, %30
  %39 = landingpad { ptr, i32 }
          cleanup
  br label %160

40:                                               ; preds = %34, %2
  %41 = getelementptr inbounds i8, ptr %0, i64 56
  store i8 0, ptr %41, align 8, !tbaa !105
  %42 = getelementptr inbounds i8, ptr %0, i64 48
  store double 0x7FF0000000000000, ptr %42, align 8, !tbaa !106
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %3) #4
  call void @_ZN12HighsCDoubleC2Ed(ptr noundef nonnull align 8 dereferenceable(16) %3, double noundef 0.000000e+00)
  %43 = getelementptr inbounds i8, ptr %0, i64 24
  call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(16) %43, ptr noundef nonnull align 8 dereferenceable(16) %3, i64 16, i1 false), !tbaa.struct !107
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %3) #4
  %44 = getelementptr inbounds i8, ptr %0, i64 40
  store i32 0, ptr %44, align 8, !tbaa !109
  %45 = sext i32 %29 to i64
  %46 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNKSt6vectorIiSaIiEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %27, i64 noundef %45) #4
  %47 = load i32, ptr %46, align 4, !tbaa !110
  %48 = sext i32 %47 to i64
  invoke void @_ZNSt6vectorIN11HighsDomain20ObjectivePropagation21ObjectiveContributionESaIS2_EE6resizeEm(ptr noundef nonnull align 8 dereferenceable(24) %20, i64 noundef %48)
          to label %49 unwind label %38

49:                                               ; preds = %40
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %4) #4
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %5) #4
  store i32 -1, ptr %5, align 4, !tbaa !110
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %6) #4
  store i32 -1, ptr %6, align 4, !tbaa !110
  %50 = invoke i64 @_ZSt9make_pairIiiESt4pairINSt25__strip_reference_wrapperINSt5decayIT_E4typeEE6__typeENS1_INS2_IT0_E4typeEE6__typeEEOS3_OS8_(ptr noundef nonnull align 4 dereferenceable(4) %5, ptr noundef nonnull align 4 dereferenceable(4) %6)
          to label %51 unwind label %64

51:                                               ; preds = %49
  store i64 %50, ptr %4, align 8
  invoke void @_ZNSt6vectorISt4pairIiiESaIS1_EE6resizeEmRKS1_(ptr noundef nonnull align 8 dereferenceable(24) %21, i64 noundef %45, ptr noundef nonnull align 4 dereferenceable(8) %4)
          to label %52 unwind label %64

52:                                               ; preds = %51
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %6) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %5) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %4) #4
  %53 = icmp sgt i32 %29, 0
  br i1 %53, label %.lr.ph78, label %._crit_edge79

.lr.ph78:                                         ; preds = %52
  %54 = getelementptr inbounds i8, ptr %1, i64 800
  %55 = getelementptr inbounds i8, ptr %1, i64 776
  %wide.trip.count = zext nneg i32 %29 to i64
  br label %66

._crit_edge79:                                    ; preds = %126, %52
  %56 = call noundef i64 @_ZNKSt6vectorIiSaIiEE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24) %25) #4
  %57 = trunc i64 %56 to i32
  %58 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNKSt6vectorIiSaIiEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %27, i64 noundef %45) #4
  %59 = load i32, ptr %58, align 4, !tbaa !110
  %60 = icmp slt i32 %59, %57
  br i1 %60, label %.lr.ph82, label %._crit_edge83

.lr.ph82:                                         ; preds = %._crit_edge79
  %61 = getelementptr inbounds i8, ptr %1, i64 800
  %62 = getelementptr inbounds i8, ptr %1, i64 776
  %63 = sext i32 %59 to i64
  br label %128

64:                                               ; preds = %51, %49
  %65 = landingpad { ptr, i32 }
          cleanup
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %6) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %5) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %4) #4
  br label %160

66:                                               ; preds = %.lr.ph78, %126
  %indvars.iv85 = phi i64 [ 0, %.lr.ph78 ], [ %indvars.iv.next86, %126 ]
  call void @llvm.lifetime.start.p0(i64 24, ptr nonnull %7) #4
  %67 = trunc nuw nsw i64 %indvars.iv85 to i32
  invoke void @_ZN11HighsDomain20ObjectivePropagation25ObjectiveContributionTreeC2EPS0_i(ptr noundef nonnull align 8 dereferenceable(24) %7, ptr noundef nonnull %0, i32 noundef %67)
          to label %68 unwind label %78

68:                                               ; preds = %66
  %69 = call noundef nonnull align 8 dereferenceable(16) ptr @_ZNSt6vectorIN11HighsDomain20ObjectivePropagation19PartitionCliqueDataESaIS2_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %23, i64 noundef %indvars.iv85) #4
  %70 = getelementptr inbounds i8, ptr %69, i64 8
  store i32 1, ptr %70, align 8, !tbaa !111
  %71 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNKSt6vectorIiSaIiEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %27, i64 noundef %indvars.iv85) #4
  %72 = load i32, ptr %71, align 4, !tbaa !110
  %indvars.iv.next86 = add nuw nsw i64 %indvars.iv85, 1
  %73 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNKSt6vectorIiSaIiEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %27, i64 noundef %indvars.iv.next86) #4
  %74 = load i32, ptr %73, align 4, !tbaa !110
  %75 = icmp slt i32 %72, %74
  br i1 %75, label %.lr.ph.preheader, label %._crit_edge

.lr.ph.preheader:                                 ; preds = %68
  %76 = sext i32 %72 to i64
  br label %.lr.ph

._crit_edge:                                      ; preds = %114, %68
  %77 = call noundef i32 @_ZNK5highs14CacheMinRbTreeIN11HighsDomain20ObjectivePropagation25ObjectiveContributionTreeEE5firstEv(ptr noundef nonnull align 8 dereferenceable(16) %7)
  %.not70 = icmp eq i32 %77, -1
  br i1 %.not70, label %126, label %119

78:                                               ; preds = %66
  %79 = landingpad { ptr, i32 }
          cleanup
  br label %127

.lr.ph:                                           ; preds = %.lr.ph.preheader, %114
  %indvars.iv = phi i64 [ %76, %.lr.ph.preheader ], [ %indvars.iv.next, %114 ]
  %80 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNKSt6vectorIiSaIiEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %25, i64 noundef %indvars.iv) #4
  %81 = load i32, ptr %80, align 4, !tbaa !110
  %82 = call noundef nonnull align 8 dereferenceable(32) ptr @_ZNSt6vectorIN11HighsDomain20ObjectivePropagation21ObjectiveContributionESaIS2_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %20, i64 noundef %indvars.iv) #4
  %83 = getelementptr inbounds i8, ptr %82, i64 8
  store i32 %81, ptr %83, align 8, !tbaa !113
  %84 = call noundef nonnull align 8 dereferenceable(32) ptr @_ZNSt6vectorIN11HighsDomain20ObjectivePropagation21ObjectiveContributionESaIS2_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %20, i64 noundef %indvars.iv) #4
  %85 = getelementptr inbounds i8, ptr %84, i64 12
  store i32 %67, ptr %85, align 4, !tbaa !116
  %86 = load ptr, ptr %14, align 8, !tbaa !104
  %87 = sext i32 %81 to i64
  %88 = getelementptr inbounds double, ptr %86, i64 %87
  %89 = load double, ptr %88, align 8, !tbaa !108
  %90 = fcmp ogt double %89, 0.000000e+00
  br i1 %90, label %91, label %107

91:                                               ; preds = %.lr.ph
  %92 = invoke noundef nonnull align 8 dereferenceable(16) ptr @_ZN12HighsCDoublepLEd(ptr noundef nonnull align 8 dereferenceable(16) %43, double noundef %89)
          to label %93 unwind label %105

93:                                               ; preds = %91
  %94 = load ptr, ptr %14, align 8, !tbaa !104
  %95 = getelementptr inbounds double, ptr %94, i64 %87
  %96 = load double, ptr %95, align 8, !tbaa !108
  %97 = call noundef nonnull align 8 dereferenceable(32) ptr @_ZNSt6vectorIN11HighsDomain20ObjectivePropagation21ObjectiveContributionESaIS2_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %20, i64 noundef %indvars.iv) #4
  store double %96, ptr %97, align 8, !tbaa !117
  %98 = call noundef nonnull align 8 dereferenceable(16) ptr @_ZNSt6vectorIN11HighsDomain20ObjectivePropagation19PartitionCliqueDataESaIS2_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %23, i64 noundef %indvars.iv85) #4
  %99 = getelementptr inbounds i8, ptr %98, i64 8
  %100 = load i32, ptr %99, align 8, !tbaa !111
  %101 = add nsw i32 %100, -1
  store i32 %101, ptr %99, align 8, !tbaa !111
  %102 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt6vectorIdSaIdEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %55, i64 noundef %87) #4
  %103 = load double, ptr %102, align 8, !tbaa !108
  %104 = fcmp oeq double %103, 0.000000e+00
  br i1 %104, label %.invoke, label %114

105:                                              ; preds = %.invoke, %91
  %106 = landingpad { ptr, i32 }
          cleanup
  br label %127

107:                                              ; preds = %.lr.ph
  %108 = fneg double %89
  %109 = call noundef nonnull align 8 dereferenceable(32) ptr @_ZNSt6vectorIN11HighsDomain20ObjectivePropagation21ObjectiveContributionESaIS2_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %20, i64 noundef %indvars.iv) #4
  store double %108, ptr %109, align 8, !tbaa !117
  %110 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt6vectorIdSaIdEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %54, i64 noundef %87) #4
  %111 = load double, ptr %110, align 8, !tbaa !108
  %112 = fcmp oeq double %111, 1.000000e+00
  br i1 %112, label %.invoke, label %114

.invoke:                                          ; preds = %107, %93
  %113 = trunc nsw i64 %indvars.iv to i32
  invoke void @_ZN5highs6RbTreeIN11HighsDomain20ObjectivePropagation25ObjectiveContributionTreeEE4linkEi(ptr noundef nonnull align 8 dereferenceable(8) %7, i32 noundef %113)
          to label %114 unwind label %105

114:                                              ; preds = %.invoke, %107, %93
  %indvars.iv.next = add nsw i64 %indvars.iv, 1
  %115 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNKSt6vectorIiSaIiEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %27, i64 noundef %indvars.iv.next86) #4
  %116 = load i32, ptr %115, align 4, !tbaa !110
  %117 = sext i32 %116 to i64
  %118 = icmp slt i64 %indvars.iv.next, %117
  br i1 %118, label %.lr.ph, label %._crit_edge, !llvm.loop !118

119:                                              ; preds = %._crit_edge
  %120 = sext i32 %77 to i64
  %121 = call noundef nonnull align 8 dereferenceable(32) ptr @_ZNSt6vectorIN11HighsDomain20ObjectivePropagation21ObjectiveContributionESaIS2_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %20, i64 noundef %120) #4
  %122 = load double, ptr %121, align 8, !tbaa !117
  %123 = invoke noundef nonnull align 8 dereferenceable(16) ptr @_ZN12HighsCDoublemIEd(ptr noundef nonnull align 8 dereferenceable(16) %43, double noundef %122)
          to label %126 unwind label %124

124:                                              ; preds = %119
  %125 = landingpad { ptr, i32 }
          cleanup
  br label %127

126:                                              ; preds = %119, %._crit_edge
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %7) #4
  %exitcond.not = icmp eq i64 %indvars.iv.next86, %wide.trip.count
  br i1 %exitcond.not, label %._crit_edge79, label %66, !llvm.loop !120

127:                                              ; preds = %124, %105, %78
  %.pn71 = phi { ptr, i32 } [ %106, %105 ], [ %125, %124 ], [ %79, %78 ]
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %7) #4
  br label %160

._crit_edge83:                                    ; preds = %155, %._crit_edge79
  invoke void @_ZN11HighsDomain20ObjectivePropagation26recomputeCapacityThresholdEv(ptr noundef nonnull align 8 dereferenceable(160) %0)
          to label %156 unwind label %158

128:                                              ; preds = %.lr.ph82, %155
  %indvars.iv88 = phi i64 [ %63, %.lr.ph82 ], [ %indvars.iv.next89, %155 ]
  %129 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNKSt6vectorIiSaIiEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %25, i64 noundef %indvars.iv88) #4
  %130 = load i32, ptr %129, align 4, !tbaa !110
  %131 = load ptr, ptr %14, align 8, !tbaa !104
  %132 = sext i32 %130 to i64
  %133 = getelementptr inbounds double, ptr %131, i64 %132
  %134 = load double, ptr %133, align 8, !tbaa !108
  %135 = fcmp ogt double %134, 0.000000e+00
  br i1 %135, label %136, label %142

136:                                              ; preds = %128
  %137 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt6vectorIdSaIdEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %62, i64 noundef %132) #4
  %138 = load double, ptr %137, align 8, !tbaa !108
  %139 = fcmp oeq double %138, 0xFFF0000000000000
  br i1 %139, label %.sink.split, label %.invoke92

140:                                              ; preds = %.invoke92
  %141 = landingpad { ptr, i32 }
          cleanup
  br label %160

142:                                              ; preds = %128
  %143 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt6vectorIdSaIdEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %61, i64 noundef %132) #4
  %144 = load double, ptr %143, align 8, !tbaa !108
  %145 = fcmp oeq double %144, 0x7FF0000000000000
  br i1 %145, label %.sink.split, label %.invoke92

.invoke92:                                        ; preds = %142, %136
  %.sink = phi ptr [ %62, %136 ], [ %61, %142 ]
  %146 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt6vectorIdSaIdEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %.sink, i64 noundef %132) #4
  %147 = load double, ptr %146, align 8, !tbaa !108
  %148 = load ptr, ptr %14, align 8, !tbaa !104
  %149 = getelementptr inbounds double, ptr %148, i64 %132
  %150 = load double, ptr %149, align 8, !tbaa !108
  %151 = fmul double %147, %150
  %152 = invoke noundef nonnull align 8 dereferenceable(16) ptr @_ZN12HighsCDoublepLEd(ptr noundef nonnull align 8 dereferenceable(16) %43, double noundef %151)
          to label %155 unwind label %140

.sink.split:                                      ; preds = %142, %136
  %153 = load i32, ptr %44, align 8, !tbaa !109
  %154 = add nsw i32 %153, 1
  store i32 %154, ptr %44, align 8, !tbaa !109
  br label %155

155:                                              ; preds = %.sink.split, %.invoke92
  %indvars.iv.next89 = add nsw i64 %indvars.iv88, 1
  %lftr.wideiv = trunc i64 %indvars.iv.next89 to i32
  %exitcond91.not = icmp eq i32 %lftr.wideiv, %57
  br i1 %exitcond91.not, label %._crit_edge83, label %128, !llvm.loop !121

156:                                              ; preds = %._crit_edge83
  invoke void @_ZNK11HighsDomain20ObjectivePropagation24debugCheckObjectiveLowerEv(ptr noundef nonnull align 8 dereferenceable(160) %0)
          to label %157 unwind label %158

157:                                              ; preds = %156
  ret void

158:                                              ; preds = %156, %._crit_edge83
  %159 = landingpad { ptr, i32 }
          cleanup
  br label %160

160:                                              ; preds = %140, %158, %127, %64, %38
  %.pn71.pn = phi { ptr, i32 } [ %.pn71, %127 ], [ %65, %64 ], [ %39, %38 ], [ %141, %140 ], [ %159, %158 ]
  call void @_ZNSt6vectorIN11HighsDomain20ObjectivePropagation19PartitionCliqueDataESaIS2_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %23) #4
  call void @_ZNSt6vectorIdSaIdEED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %22) #4
  call void @_ZNSt6vectorISt4pairIiiESaIS1_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %21) #4
  call void @_ZNSt6vectorIN11HighsDomain20ObjectivePropagation21ObjectiveContributionESaIS2_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %20) #4
  resume { ptr, i32 } %.pn71.pn
}

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

; 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 #2 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 uwtable
declare dso_local void @_ZN11HighsDomain20ObjectivePropagation26recomputeCapacityThresholdEv(ptr noundef nonnull align 8 dereferenceable(160)) local_unnamed_addr #2 align 2

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

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

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

attributes #0 = { mustprogress nocallback nofree nosync nounwind willreturn memory(argmem: readwrite) }
attributes #1 = { mustprogress nounwind uwtable "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }
attributes #2 = { mustprogress uwtable "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }
attributes #3 = { mustprogress nocallback nofree nounwind willreturn memory(argmem: readwrite) }
attributes #4 = { 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 0}
!6 = !{!"_ZTSN11HighsDomain20ObjectivePropagationE", !7, i64 0, !7, i64 8, !7, i64 16, !10, i64 24, !12, i64 40, !11, i64 48, !13, i64 56, !14, i64 64, !18, i64 88, !22, i64 112, !26, i64 136}
!7 = !{!"any pointer", !8, i64 0}
!8 = !{!"omnipotent char", !9, i64 0}
!9 = !{!"Simple C++ TBAA"}
!10 = !{!"_ZTS12HighsCDouble", !11, i64 0, !11, i64 8}
!11 = !{!"double", !8, i64 0}
!12 = !{!"int", !8, i64 0}
!13 = !{!"bool", !8, i64 0}
!14 = !{!"_ZTSSt6vectorIN11HighsDomain20ObjectivePropagation21ObjectiveContributionESaIS2_EE", !15, i64 0}
!15 = !{!"_ZTSSt12_Vector_baseIN11HighsDomain20ObjectivePropagation21ObjectiveContributionESaIS2_EE", !16, i64 0}
!16 = !{!"_ZTSNSt12_Vector_baseIN11HighsDomain20ObjectivePropagation21ObjectiveContributionESaIS2_EE12_Vector_implE", !17, i64 0}
!17 = !{!"_ZTSNSt12_Vector_baseIN11HighsDomain20ObjectivePropagation21ObjectiveContributionESaIS2_EE17_Vector_impl_dataE", !7, i64 0, !7, i64 8, !7, i64 16}
!18 = !{!"_ZTSSt6vectorISt4pairIiiESaIS1_EE", !19, i64 0}
!19 = !{!"_ZTSSt12_Vector_baseISt4pairIiiESaIS1_EE", !20, i64 0}
!20 = !{!"_ZTSNSt12_Vector_baseISt4pairIiiESaIS1_EE12_Vector_implE", !21, i64 0}
!21 = !{!"_ZTSNSt12_Vector_baseISt4pairIiiESaIS1_EE17_Vector_impl_dataE", !7, i64 0, !7, i64 8, !7, i64 16}
!22 = !{!"_ZTSSt6vectorIdSaIdEE", !23, i64 0}
!23 = !{!"_ZTSSt12_Vector_baseIdSaIdEE", !24, i64 0}
!24 = !{!"_ZTSNSt12_Vector_baseIdSaIdEE12_Vector_implE", !25, i64 0}
!25 = !{!"_ZTSNSt12_Vector_baseIdSaIdEE17_Vector_impl_dataE", !7, i64 0, !7, i64 8, !7, i64 16}
!26 = !{!"_ZTSSt6vectorIN11HighsDomain20ObjectivePropagation19PartitionCliqueDataESaIS2_EE", !27, i64 0}
!27 = !{!"_ZTSSt12_Vector_baseIN11HighsDomain20ObjectivePropagation19PartitionCliqueDataESaIS2_EE", !28, i64 0}
!28 = !{!"_ZTSNSt12_Vector_baseIN11HighsDomain20ObjectivePropagation19PartitionCliqueDataESaIS2_EE12_Vector_implE", !29, i64 0}
!29 = !{!"_ZTSNSt12_Vector_baseIN11HighsDomain20ObjectivePropagation19PartitionCliqueDataESaIS2_EE17_Vector_impl_dataE", !7, i64 0, !7, i64 8, !7, i64 16}
!30 = !{!31, !7, i64 472}
!31 = !{!"_ZTS11HighsDomain", !32, i64 0, !36, i64 24, !18, i64 48, !40, i64 72, !44, i64 96, !48, i64 120, !52, i64 144, !52, i64 168, !36, i64 192, !36, i64 216, !22, i64 240, !32, i64 264, !36, i64 288, !6, i64 312, !7, i64 472, !56, i64 480, !62, i64 560, !13, i64 640, !67, i64 644, !12, i64 652, !36, i64 656, !36, i64 680, !36, i64 704, !68, i64 728, !13, i64 768, !22, i64 776, !22, i64 800}
!32 = !{!"_ZTSSt6vectorIhSaIhEE", !33, i64 0}
!33 = !{!"_ZTSSt12_Vector_baseIhSaIhEE", !34, i64 0}
!34 = !{!"_ZTSNSt12_Vector_baseIhSaIhEE12_Vector_implE", !35, i64 0}
!35 = !{!"_ZTSNSt12_Vector_baseIhSaIhEE17_Vector_impl_dataE", !7, i64 0, !7, i64 8, !7, i64 16}
!36 = !{!"_ZTSSt6vectorIiSaIiEE", !37, i64 0}
!37 = !{!"_ZTSSt12_Vector_baseIiSaIiEE", !38, i64 0}
!38 = !{!"_ZTSNSt12_Vector_baseIiSaIiEE12_Vector_implE", !39, i64 0}
!39 = !{!"_ZTSNSt12_Vector_baseIiSaIiEE17_Vector_impl_dataE", !7, i64 0, !7, i64 8, !7, i64 16}
!40 = !{!"_ZTSSt6vectorI17HighsDomainChangeSaIS0_EE", !41, i64 0}
!41 = !{!"_ZTSSt12_Vector_baseI17HighsDomainChangeSaIS0_EE", !42, i64 0}
!42 = !{!"_ZTSNSt12_Vector_baseI17HighsDomainChangeSaIS0_EE12_Vector_implE", !43, i64 0}
!43 = !{!"_ZTSNSt12_Vector_baseI17HighsDomainChangeSaIS0_EE17_Vector_impl_dataE", !7, i64 0, !7, i64 8, !7, i64 16}
!44 = !{!"_ZTSSt6vectorIN11HighsDomain6ReasonESaIS1_EE", !45, i64 0}
!45 = !{!"_ZTSSt12_Vector_baseIN11HighsDomain6ReasonESaIS1_EE", !46, i64 0}
!46 = !{!"_ZTSNSt12_Vector_baseIN11HighsDomain6ReasonESaIS1_EE12_Vector_implE", !47, i64 0}
!47 = !{!"_ZTSNSt12_Vector_baseIN11HighsDomain6ReasonESaIS1_EE17_Vector_impl_dataE", !7, i64 0, !7, i64 8, !7, i64 16}
!48 = !{!"_ZTSSt6vectorISt4pairIdiESaIS1_EE", !49, i64 0}
!49 = !{!"_ZTSSt12_Vector_baseISt4pairIdiESaIS1_EE", !50, i64 0}
!50 = !{!"_ZTSNSt12_Vector_baseISt4pairIdiESaIS1_EE12_Vector_implE", !51, i64 0}
!51 = !{!"_ZTSNSt12_Vector_baseISt4pairIdiESaIS1_EE17_Vector_impl_dataE", !7, i64 0, !7, i64 8, !7, i64 16}
!52 = !{!"_ZTSSt6vectorI12HighsCDoubleSaIS0_EE", !53, i64 0}
!53 = !{!"_ZTSSt12_Vector_baseI12HighsCDoubleSaIS0_EE", !54, i64 0}
!54 = !{!"_ZTSNSt12_Vector_baseI12HighsCDoubleSaIS0_EE12_Vector_implE", !55, i64 0}
!55 = !{!"_ZTSNSt12_Vector_baseI12HighsCDoubleSaIS0_EE17_Vector_impl_dataE", !7, i64 0, !7, i64 8, !7, i64 16}
!56 = !{!"_ZTSSt5dequeIN11HighsDomain18CutpoolPropagationESaIS1_EE", !57, i64 0}
!57 = !{!"_ZTSSt11_Deque_baseIN11HighsDomain18CutpoolPropagationESaIS1_EE", !58, i64 0}
!58 = !{!"_ZTSNSt11_Deque_baseIN11HighsDomain18CutpoolPropagationESaIS1_EE11_Deque_implE", !59, i64 0}
!59 = !{!"_ZTSNSt11_Deque_baseIN11HighsDomain18CutpoolPropagationESaIS1_EE16_Deque_impl_dataE", !7, i64 0, !60, i64 8, !61, i64 16, !61, i64 48}
!60 = !{!"long", !8, i64 0}
!61 = !{!"_ZTSSt15_Deque_iteratorIN11HighsDomain18CutpoolPropagationERS1_PS1_E", !7, i64 0, !7, i64 8, !7, i64 16, !7, i64 24}
!62 = !{!"_ZTSSt5dequeIN11HighsDomain23ConflictPoolPropagationESaIS1_EE", !63, i64 0}
!63 = !{!"_ZTSSt11_Deque_baseIN11HighsDomain23ConflictPoolPropagationESaIS1_EE", !64, i64 0}
!64 = !{!"_ZTSNSt11_Deque_baseIN11HighsDomain23ConflictPoolPropagationESaIS1_EE11_Deque_implE", !65, i64 0}
!65 = !{!"_ZTSNSt11_Deque_baseIN11HighsDomain23ConflictPoolPropagationESaIS1_EE16_Deque_impl_dataE", !7, i64 0, !60, i64 8, !66, i64 16, !66, i64 48}
!66 = !{!"_ZTSSt15_Deque_iteratorIN11HighsDomain23ConflictPoolPropagationERS1_PS1_E", !7, i64 0, !7, i64 8, !7, i64 16, !7, i64 24}
!67 = !{!"_ZTSN11HighsDomain6ReasonE", !12, i64 0, !12, i64 4}
!68 = !{!"_ZTS14HighsHashTableIivE", !69, i64 0, !75, i64 8, !60, i64 16, !60, i64 24, !60, i64 32}
!69 = !{!"_ZTSSt10unique_ptrI19HighsHashTableEntryIivEN14HighsHashTableIivE12OpNewDeleterEE", !70, i64 0}
!70 = !{!"_ZTSSt15__uniq_ptr_dataI19HighsHashTableEntryIivEN14HighsHashTableIivE12OpNewDeleterELb1ELb1EE", !71, i64 0}
!71 = !{!"_ZTSSt15__uniq_ptr_implI19HighsHashTableEntryIivEN14HighsHashTableIivE12OpNewDeleterEE", !72, i64 0}
!72 = !{!"_ZTSSt5tupleIJP19HighsHashTableEntryIivEN14HighsHashTableIivE12OpNewDeleterEEE", !73, i64 0}
!73 = !{!"_ZTSSt11_Tuple_implILm0EJP19HighsHashTableEntryIivEN14HighsHashTableIivE12OpNewDeleterEEE", !74, i64 0}
!74 = !{!"_ZTSSt10_Head_baseILm0EP19HighsHashTableEntryIivELb0EE", !7, i64 0}
!75 = !{!"_ZTSSt10unique_ptrIA_hSt14default_deleteIS0_EE", !76, i64 0}
!76 = !{!"_ZTSSt15__uniq_ptr_dataIhSt14default_deleteIA_hELb1ELb1EE", !77, i64 0}
!77 = !{!"_ZTSSt15__uniq_ptr_implIhSt14default_deleteIA_hEE", !78, i64 0}
!78 = !{!"_ZTSSt5tupleIJPhSt14default_deleteIA_hEEE", !79, i64 0}
!79 = !{!"_ZTSSt11_Tuple_implILm0EJPhSt14default_deleteIA_hEEE", !80, i64 0}
!80 = !{!"_ZTSSt10_Head_baseILm0EPhLb0EE", !7, i64 0}
!81 = !{!6, !7, i64 8}
!82 = !{!83, !7, i64 16}
!83 = !{!"_ZTS14HighsMipSolver", !7, i64 0, !7, i64 8, !7, i64 16, !7, i64 24, !84, i64 32, !22, i64 40, !11, i64 64, !11, i64 72, !11, i64 80, !11, i64 88, !11, i64 96, !11, i64 104, !11, i64 112, !60, i64 120, !60, i64 128, !11, i64 136, !7, i64 144, !85, i64 152, !13, i64 176, !12, i64 180, !12, i64 184, !7, i64 192, !7, i64 200, !7, i64 208, !7, i64 216, !89, i64 224, !95, i64 232, !99, i64 360}
!84 = !{!"_ZTS16HighsModelStatus", !8, i64 0}
!85 = !{!"_ZTSSt6vectorI22HighsObjectiveSolutionSaIS0_EE", !86, i64 0}
!86 = !{!"_ZTSSt12_Vector_baseI22HighsObjectiveSolutionSaIS0_EE", !87, i64 0}
!87 = !{!"_ZTSNSt12_Vector_baseI22HighsObjectiveSolutionSaIS0_EE12_Vector_implE", !88, i64 0}
!88 = !{!"_ZTSNSt12_Vector_baseI22HighsObjectiveSolutionSaIS0_EE17_Vector_impl_dataE", !7, i64 0, !7, i64 8, !7, i64 16}
!89 = !{!"_ZTSSt10unique_ptrI18HighsMipSolverDataSt14default_deleteIS0_EE", !90, i64 0}
!90 = !{!"_ZTSSt15__uniq_ptr_dataI18HighsMipSolverDataSt14default_deleteIS0_ELb1ELb1EE", !91, i64 0}
!91 = !{!"_ZTSSt15__uniq_ptr_implI18HighsMipSolverDataSt14default_deleteIS0_EE", !92, i64 0}
!92 = !{!"_ZTSSt5tupleIJP18HighsMipSolverDataSt14default_deleteIS0_EEE", !93, i64 0}
!93 = !{!"_ZTSSt11_Tuple_implILm0EJP18HighsMipSolverDataSt14default_deleteIS0_EEE", !94, i64 0}
!94 = !{!"_ZTSSt10_Head_baseILm0EP18HighsMipSolverDataLb0EE", !7, i64 0}
!95 = !{!"_ZTS16HighsMipAnalysis", !7, i64 0, !96, i64 8, !98, i64 40, !13, i64 72, !22, i64 80, !22, i64 104}
!96 = !{!"_ZTSNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE", !97, i64 0, !60, i64 8, !8, i64 16}
!97 = !{!"_ZTSNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE12_Alloc_hiderE", !7, i64 0}
!98 = !{!"_ZTS15HighsTimerClock", !7, i64 0, !36, i64 8}
!99 = !{!"_ZTS10HighsTimer", !11, i64 8, !12, i64 16, !36, i64 24, !22, i64 48, !22, i64 72, !100, i64 96, !12, i64 120, !12, i64 124, !12, i64 128}
!100 = !{!"_ZTSSt6vectorINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESaIS5_EE", !101, i64 0}
!101 = !{!"_ZTSSt12_Vector_baseINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESaIS5_EE", !102, i64 0}
!102 = !{!"_ZTSNSt12_Vector_baseINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESaIS5_EE12_Vector_implE", !103, i64 0}
!103 = !{!"_ZTSNSt12_Vector_baseINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESaIS5_EE17_Vector_impl_dataE", !7, i64 0, !7, i64 8, !7, i64 16}
!104 = !{!6, !7, i64 16}
!105 = !{!6, !13, i64 56}
!106 = !{!6, !11, i64 48}
!107 = !{i64 0, i64 8, !108, i64 8, i64 8, !108}
!108 = !{!11, !11, i64 0}
!109 = !{!6, !12, i64 40}
!110 = !{!12, !12, i64 0}
!111 = !{!112, !12, i64 8}
!112 = !{!"_ZTSN11HighsDomain20ObjectivePropagation19PartitionCliqueDataE", !11, i64 0, !12, i64 8, !13, i64 12}
!113 = !{!114, !12, i64 8}
!114 = !{!"_ZTSN11HighsDomain20ObjectivePropagation21ObjectiveContributionE", !11, i64 0, !12, i64 8, !12, i64 12, !115, i64 16}
!115 = !{!"_ZTSN5highs11RbTreeLinksIiEE", !8, i64 0, !12, i64 8}
!116 = !{!114, !12, i64 12}
!117 = !{!114, !11, i64 0}
!118 = distinct !{!118, !119}
!119 = !{!"llvm.loop.mustprogress"}
!120 = distinct !{!120, !119}
!121 = distinct !{!121, !119}


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