; LLVM IR from ERGO-Code/HiGHS :: src/presolve (HPresolve)

; 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"

%struct.HighsTripletListSlice = type { %class.HighsMatrixSlice.base.391, [4 x i8] }
%class.HighsMatrixSlice.base.391 = type <{ ptr, ptr, ptr, i32 }>
%"class.HighsMatrixSlice<HighsTripletListSlice>::iterator" = type <{ %class.HighsSliceNonzero, ptr, i32, [4 x i8] }>
%class.HighsSliceNonzero = type { ptr, ptr }
%"class.std::vector.411" = type { %"struct.std::_Vector_base.412" }
%"struct.std::_Vector_base.412" = type { %"struct.std::_Vector_base<std::pair<unsigned int, unsigned int>, std::allocator<std::pair<unsigned int, unsigned int>>>::_Vector_impl" }
%"struct.std::_Vector_base<std::pair<unsigned int, unsigned int>, std::allocator<std::pair<unsigned int, unsigned int>>>::_Vector_impl" = type { %"struct.std::_Vector_base<std::pair<unsigned int, unsigned int>, std::allocator<std::pair<unsigned int, unsigned int>>>::_Vector_impl_data" }
%"struct.std::_Vector_base<std::pair<unsigned int, unsigned int>, std::allocator<std::pair<unsigned int, unsigned int>>>::_Vector_impl_data" = type { ptr, ptr, ptr }
%"class.std::allocator.413" = type { i8 }
%class.anon.416 = type { ptr }
%class.anon.417 = type { ptr }
%class.anon.418 = type { ptr, ptr }
%struct.HighsTripletPositionSlice = type { %class.HighsMatrixSlice.base.420, [4 x i8] }
%class.HighsMatrixSlice.base.420 = type <{ ptr, ptr, ptr, i32 }>
%"class.HighsMatrixSlice<HighsTripletPositionSlice>::iterator" = type <{ %class.HighsSliceNonzero, ptr, i32, [4 x i8] }>
%"struct.HighsCliqueTable::CliqueVar" = type { i32 }
%"class.presolve::HPresolve" = type { ptr, ptr, ptr, ptr, double, %"class.std::vector.20", %"class.std::vector.5", %"class.std::vector.5", %"class.std::vector.5", %"class.std::vector.5", %"class.std::vector.5", %"class.std::vector.5", %"class.std::vector.5", %"class.std::vector.5", %"class.std::vector.5", %"class.std::vector.5", %"class.std::vector.5", %"class.std::vector.5", %"class.std::vector.5", %"class.std::vector.5", %"class.std::vector.20", %"class.std::vector.20", %"class.std::vector.5", %"class.std::vector.5", %"class.std::vector.20", %"class.std::vector.20", %"class.std::vector.20", %"class.std::vector.20", %"class.std::vector.5", %"class.std::vector.5", %"class.std::vector.25", %"class.std::vector.25", %class.HighsLinearSumBounds, %class.HighsLinearSumBounds, %"class.std::vector.5", %"class.std::vector.10", %"class.std::vector.5", %"class.std::vector.10", %"class.std::vector.35", %"class.std::unordered_map", %"class.std::set", %"class.std::vector.48", i8, i64, %"class.std::vector.5", %"class.std::vector.5", %"class.std::vector.10", %"class.std::vector.10", %"class.std::vector.53", i64, i32, i32, i32, i32, i32, i32, i8, i32, %class.HPresolveAnalysis }
%"class.std::vector.20" = type { %"struct.std::_Vector_base.21" }
%"struct.std::_Vector_base.21" = 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.25" = type { %"struct.std::_Vector_base.26" }
%"struct.std::_Vector_base.26" = type { %"struct.std::_Vector_base<std::set<int>, std::allocator<std::set<int>>>::_Vector_impl" }
%"struct.std::_Vector_base<std::set<int>, std::allocator<std::set<int>>>::_Vector_impl" = type { %"struct.std::_Vector_base<std::set<int>, std::allocator<std::set<int>>>::_Vector_impl_data" }
%"struct.std::_Vector_base<std::set<int>, std::allocator<std::set<int>>>::_Vector_impl_data" = type { ptr, ptr, ptr }
%class.HighsLinearSumBounds = type { %"class.std::vector.30", %"class.std::vector.30", %"class.std::vector.5", %"class.std::vector.5", %"class.std::vector.30", %"class.std::vector.30", %"class.std::vector.5", %"class.std::vector.5", ptr, ptr, ptr, ptr, ptr, ptr }
%"class.std::vector.30" = type { %"struct.std::_Vector_base.31" }
%"struct.std::_Vector_base.31" = 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.35" = type { %"struct.std::_Vector_base.36" }
%"struct.std::_Vector_base.36" = 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::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.std::__detail::_Hash_node_base" = type { ptr }
%"struct.std::__detail::_Prime_rehash_policy" = type { float, i64 }
%"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.48" = type { %"struct.std::_Vector_base.49" }
%"struct.std::_Vector_base.49" = type { %"struct.std::_Vector_base<std::_Rb_tree_const_iterator<std::pair<int, int>>, std::allocator<std::_Rb_tree_const_iterator<std::pair<int, int>>>>::_Vector_impl" }
%"struct.std::_Vector_base<std::_Rb_tree_const_iterator<std::pair<int, int>>, std::allocator<std::_Rb_tree_const_iterator<std::pair<int, int>>>>::_Vector_impl" = type { %"struct.std::_Vector_base<std::_Rb_tree_const_iterator<std::pair<int, int>>, std::allocator<std::_Rb_tree_const_iterator<std::pair<int, int>>>>::_Vector_impl_data" }
%"struct.std::_Vector_base<std::_Rb_tree_const_iterator<std::pair<int, int>>, std::allocator<std::_Rb_tree_const_iterator<std::pair<int, int>>>>::_Vector_impl_data" = type { ptr, ptr, ptr }
%"class.std::vector.5" = type { %"struct.std::_Vector_base.6" }
%"struct.std::_Vector_base.6" = type { %"struct.std::_Vector_base<int, std::allocator<int>>::_Vector_impl" }
%"struct.std::_Vector_base<int, std::allocator<int>>::_Vector_impl" = type { %"struct.std::_Vector_base<int, std::allocator<int>>::_Vector_impl_data" }
%"struct.std::_Vector_base<int, std::allocator<int>>::_Vector_impl_data" = type { ptr, ptr, ptr }
%"class.std::vector.10" = type { %"struct.std::_Vector_base.11" }
%"struct.std::_Vector_base.11" = type { %"struct.std::_Vector_base<unsigned char, std::allocator<unsigned char>>::_Vector_impl" }
%"struct.std::_Vector_base<unsigned char, std::allocator<unsigned char>>::_Vector_impl" = type { %"struct.std::_Vector_base<unsigned char, std::allocator<unsigned char>>::_Vector_impl_data" }
%"struct.std::_Vector_base<unsigned char, std::allocator<unsigned char>>::_Vector_impl_data" = type { ptr, ptr, ptr }
%"class.std::vector.53" = type { %"struct.std::_Vector_base.54" }
%"struct.std::_Vector_base.54" = type { %"struct.std::_Vector_base<unsigned short, std::allocator<unsigned short>>::_Vector_impl" }
%"struct.std::_Vector_base<unsigned short, std::allocator<unsigned short>>::_Vector_impl" = type { %"struct.std::_Vector_base<unsigned short, std::allocator<unsigned short>>::_Vector_impl_data" }
%"struct.std::_Vector_base<unsigned short, std::allocator<unsigned short>>::_Vector_impl_data" = type { ptr, ptr, ptr }
%class.HPresolveAnalysis = type { ptr, ptr, ptr, ptr, ptr, i32, i32, %"class.std::vector.58", i8, i8, i32, i32, i32, %struct.HighsPresolveLog }
%"class.std::vector.58" = 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.HighsPresolveLog = type { %"class.std::vector.62" }
%"class.std::vector.62" = type { %"struct.std::_Vector_base.63" }
%"struct.std::_Vector_base.63" = 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.HighsLp = type { i32, i32, %"class.std::vector.20", %"class.std::vector.20", %"class.std::vector.20", %"class.std::vector.20", %"class.std::vector.20", %class.HighsSparseMatrix, i32, double, %"class.std::__cxx11::basic_string", %"class.std::__cxx11::basic_string", i32, i32, %"class.std::vector.67", %"class.std::vector.67", %"class.std::vector.72", %struct.HighsNameHash, %struct.HighsNameHash, i32, i32, %struct.HighsScale, i8, i8, i32, i8, %struct.HighsLpMods }
%class.HighsSparseMatrix = type { i32, i32, i32, %"class.std::vector.5", %"class.std::vector.5", %"class.std::vector.5", %"class.std::vector.20" }
%"class.std::__cxx11::basic_string" = type { %"struct.std::__cxx11::basic_string<char>::_Alloc_hider", i64, %union.anon }
%"struct.std::__cxx11::basic_string<char>::_Alloc_hider" = type { ptr }
%union.anon = type { i64, [8 x i8] }
%"class.std::vector.67" = type { %"struct.std::_Vector_base.68" }
%"struct.std::_Vector_base.68" = 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 }
%"class.std::vector.72" = type { %"struct.std::_Vector_base.73" }
%"struct.std::_Vector_base.73" = 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.77" }
%"class.std::unordered_map.77" = type { %"class.std::_Hashtable.78" }
%"class.std::_Hashtable.78" = 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.20", %"class.std::vector.20" }
%struct.HighsLpMods = type { %"class.std::vector.5", %"class.std::vector.5", %"class.std::vector.20", %"class.std::vector.20", %"class.std::vector.72", %"class.std::vector.5", %"class.std::vector.20", %"class.std::vector.5", %"class.std::vector.20", %"class.std::vector.5", %"class.std::vector.20", %"class.std::vector.20", %"class.std::vector.20" }
%class.HighsMipSolver = type { ptr, ptr, ptr, ptr, i32, %"class.std::vector.20", double, double, double, double, double, double, double, i64, i64, double, ptr, %"class.std::vector.110", i8, i32, i32, ptr, ptr, ptr, ptr, %"class.std::unique_ptr", %class.HighsMipAnalysis, %class.HighsTimer }
%"class.std::vector.110" = type { %"struct.std::_Vector_base.111" }
%"struct.std::_Vector_base.111" = 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" = 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.116" }
%"struct.std::_Head_base.116" = type { ptr }
%class.HighsMipAnalysis = type { ptr, %"class.std::__cxx11::basic_string", %struct.HighsTimerClock, i8, %"class.std::vector.20", %"class.std::vector.20" }
%struct.HighsTimerClock = type { ptr, %"class.std::vector.5" }
%class.HighsTimer = type <{ ptr, double, i32, [4 x i8], %"class.std::vector.5", %"class.std::vector.20", %"class.std::vector.20", %"class.std::vector.67", i32, i32, i32, [4 x i8] }>
%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.5", %"class.std::vector.5", %"class.std::vector.20", %"class.std::vector.20", %"class.std::vector.10", %"class.std::vector.5", %"class.std::vector.5", %"class.std::vector.5", %"class.std::vector.5", %"class.std::vector.5", %"class.std::vector.5", %struct.HighsSymmetries, %"class.std::shared_ptr.361", double, double, double, i64, %"class.std::vector.20", %"class.std::vector.20", %"class.std::vector.20", 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.20", %class.HighsNodeQueue, %struct.HighsPrimaDualIntegral, [8 x i8] }>
%class.HighsCutPool = type { %class.HighsDynamicRowMatrix, %"class.std::vector.20", %"class.std::vector.117", %"class.std::vector.20", %"class.std::vector.20", %"class.std::vector.10", %"class.std::unordered_multimap", %"class.std::vector.141", %"class.std::set", double, double, double, i32, i32, i32, i32, i32, %"class.std::vector.5", %"class.std::vector.146" }
%class.HighsDynamicRowMatrix = type { %"class.std::vector.35", %"class.std::vector.5", %"class.std::vector.20", %"class.std::vector.5", %"class.std::vector.5", %"class.std::vector.5", %"class.std::vector.5", %"class.std::vector.5", %"class.std::vector.5", %"class.std::vector.5", %"class.std::vector.10", %"class.std::set", %"class.std::vector.5" }
%"class.std::vector.117" = type { %"struct.std::_Vector_base.118" }
%"struct.std::_Vector_base.118" = 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.122" }
%"class.std::_Hashtable.122" = type { ptr, i64, %"struct.std::__detail::_Hash_node_base", i64, %"struct.std::__detail::_Prime_rehash_policy", ptr }
%"class.std::vector.141" = type { %"struct.std::_Vector_base.142" }
%"struct.std::_Vector_base.142" = 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::vector.146" = type { %"struct.std::_Vector_base.147" }
%"struct.std::_Vector_base.147" = 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.5", %"class.std::vector.117", %"class.std::vector.151", %"class.std::vector.156", %"class.std::vector.35", %"class.std::set", %"class.std::vector.5", %"class.std::vector.161" }
%"class.std::vector.151" = type { %"struct.std::_Vector_base.152" }
%"struct.std::_Vector_base.152" = 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.156" = type { %"struct.std::_Vector_base.157" }
%"struct.std::_Vector_base.157" = 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.161" = type { %"struct.std::_Vector_base.162" }
%"struct.std::_Vector_base.162" = type { %"struct.std::_Vector_base<HighsDomain::ConflictPoolPropagation *, std::allocator<HighsDomain::ConflictPoolPropagation *>>::_Vector_impl" }
%"struct.std::_Vector_base<HighsDomain::ConflictPoolPropagation *, std::allocator<HighsDomain::ConflictPoolPropagation *>>::_Vector_impl" = type { %"struct.std::_Vector_base<HighsDomain::ConflictPoolPropagation *, std::allocator<HighsDomain::ConflictPoolPropagation *>>::_Vector_impl_data" }
%"struct.std::_Vector_base<HighsDomain::ConflictPoolPropagation *, std::allocator<HighsDomain::ConflictPoolPropagation *>>::_Vector_impl_data" = type { ptr, ptr, ptr }
%class.HighsDomain = type { %"class.std::vector.10", %"class.std::vector.5", %"class.std::vector.35", %"class.std::vector.156", %"class.std::vector.166", %"class.std::vector.171", %"class.std::vector.30", %"class.std::vector.30", %"class.std::vector.5", %"class.std::vector.5", %"class.std::vector.20", %"class.std::vector.10", %"class.std::vector.5", %"struct.HighsDomain::ObjectivePropagation", ptr, %"class.std::deque", %"class.std::deque.189", i8, %"struct.HighsDomain::Reason", i32, %"class.std::vector.5", %"class.std::vector.5", %"class.std::vector.5", %class.HighsHashTable, i8, %"class.std::vector.20", %"class.std::vector.20" }
%"class.std::vector.166" = type { %"struct.std::_Vector_base.167" }
%"struct.std::_Vector_base.167" = 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.171" = type { %"struct.std::_Vector_base.172" }
%"struct.std::_Vector_base.172" = type { %"struct.std::_Vector_base<std::pair<double, int>, std::allocator<std::pair<double, int>>>::_Vector_impl" }
%"struct.std::_Vector_base<std::pair<double, int>, std::allocator<std::pair<double, int>>>::_Vector_impl" = type { %"struct.std::_Vector_base<std::pair<double, int>, std::allocator<std::pair<double, int>>>::_Vector_impl_data" }
%"struct.std::_Vector_base<std::pair<double, int>, std::allocator<std::pair<double, int>>>::_Vector_impl_data" = type { ptr, ptr, ptr }
%"struct.HighsDomain::ObjectivePropagation" = type { ptr, ptr, ptr, %class.HighsCDouble, i32, double, i8, %"class.std::vector.176", %"class.std::vector.35", %"class.std::vector.20", %"class.std::vector.181" }
%"class.std::vector.176" = type { %"struct.std::_Vector_base.177" }
%"struct.std::_Vector_base.177" = 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.181" = type { %"struct.std::_Vector_base.182" }
%"struct.std::_Vector_base.182" = type { %"struct.std::_Vector_base<HighsDomain::ObjectivePropagation::PartitionCliqueData, std::allocator<HighsDomain::ObjectivePropagation::PartitionCliqueData>>::_Vector_impl" }
%"struct.std::_Vector_base<HighsDomain::ObjectivePropagation::PartitionCliqueData, std::allocator<HighsDomain::ObjectivePropagation::PartitionCliqueData>>::_Vector_impl" = type { %"struct.std::_Vector_base<HighsDomain::ObjectivePropagation::PartitionCliqueData, std::allocator<HighsDomain::ObjectivePropagation::PartitionCliqueData>>::_Vector_impl_data" }
%"struct.std::_Vector_base<HighsDomain::ObjectivePropagation::PartitionCliqueData, std::allocator<HighsDomain::ObjectivePropagation::PartitionCliqueData>>::_Vector_impl_data" = type { ptr, ptr, ptr }
%"class.std::deque" = type { %"class.std::_Deque_base" }
%"class.std::_Deque_base" = type { %"struct.std::_Deque_base<HighsDomain::CutpoolPropagation, std::allocator<HighsDomain::CutpoolPropagation>>::_Deque_impl" }
%"struct.std::_Deque_base<HighsDomain::CutpoolPropagation, std::allocator<HighsDomain::CutpoolPropagation>>::_Deque_impl" = type { %"struct.std::_Deque_base<HighsDomain::CutpoolPropagation, std::allocator<HighsDomain::CutpoolPropagation>>::_Deque_impl_data" }
%"struct.std::_Deque_base<HighsDomain::CutpoolPropagation, std::allocator<HighsDomain::CutpoolPropagation>>::_Deque_impl_data" = type { ptr, i64, %"struct.std::_Deque_iterator", %"struct.std::_Deque_iterator" }
%"struct.std::_Deque_iterator" = type { ptr, ptr, ptr, ptr }
%"class.std::deque.189" = type { %"class.std::_Deque_base.190" }
%"class.std::_Deque_base.190" = 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.194", %"struct.std::_Deque_iterator.194" }
%"struct.std::_Deque_iterator.194" = type { ptr, ptr, ptr, ptr }
%"struct.HighsDomain::Reason" = type { i32, i32 }
%class.HighsHashTable = type { %"class.std::unique_ptr.195", %"class.std::unique_ptr.203", i64, i64, i64 }
%"class.std::unique_ptr.195" = type { %"struct.std::__uniq_ptr_data.196" }
%"struct.std::__uniq_ptr_data.196" = type { %"class.std::__uniq_ptr_impl.197" }
%"class.std::__uniq_ptr_impl.197" = type { %"class.std::tuple.198" }
%"class.std::tuple.198" = type { %"struct.std::_Tuple_impl.199" }
%"struct.std::_Tuple_impl.199" = type { %"struct.std::_Head_base.202" }
%"struct.std::_Head_base.202" = type { ptr }
%"class.std::unique_ptr.203" = type { %"struct.std::__uniq_ptr_data.204" }
%"struct.std::__uniq_ptr_data.204" = type { %"class.std::__uniq_ptr_impl.205" }
%"class.std::__uniq_ptr_impl.205" = type { %"class.std::tuple.206" }
%"class.std::tuple.206" = type { %"struct.std::_Tuple_impl.207" }
%"struct.std::_Tuple_impl.207" = type { %"struct.std::_Head_base.210" }
%"struct.std::_Head_base.210" = type { ptr }
%class.HighsLpRelaxation = type <{ ptr, %class.Highs, %"class.std::vector.281", %"class.std::vector.146", %"class.std::vector.20", %"class.std::vector.5", %"class.std::vector.20", %"class.std::vector.20", %"class.std::vector.20", %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.221", %class.HighsModel, %class.HighsTimer, %struct.HighsCallback, %class.HighsOptions, %class.HighsInfo, %struct.HighsRanging, %class.HighsIis, %"class.std::vector.110", i32, i32, i8, double, %"class.std::vector.20", %"class.std::vector.20", %class.HighsSparseMatrix, %class.HEkk, %struct.HighsPresolveLog, i32, i8, i32, i8, %class.PresolveComponent }
%struct.HighsSolution = type { i8, i8, %"class.std::vector.20", %"class.std::vector.20", %"class.std::vector.20", %"class.std::vector.20" }
%struct.ICrashInfo = type { i32, double, double, double, double, double, %"class.std::vector.216", %"class.std::vector.20", double }
%"class.std::vector.216" = type { %"struct.std::_Vector_base.217" }
%"struct.std::_Vector_base.217" = 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.221" = type { %"struct.std::_Vector_base.222" }
%"struct.std::_Vector_base.222" = 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.5", %"class.std::vector.5", %"class.std::vector.20" }
%struct.HighsCallback = type { %"class.std::function", ptr, ptr, %"class.std::vector.58", %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 } }
%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.97", 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.97" = type { %"struct.std::_Vector_base.98" }
%"struct.std::_Vector_base.98" = 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.226" }
%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.226" = type { %"struct.std::_Vector_base.227" }
%"struct.std::_Vector_base.227" = 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.20", %"class.std::vector.20", %"class.std::vector.5", %"class.std::vector.5" }
%class.HighsIis = type { i8, i32, %"class.std::vector.5", %"class.std::vector.5", %"class.std::vector.5", %"class.std::vector.5", %"class.std::vector.231" }
%"class.std::vector.231" = type { %"struct.std::_Vector_base.232" }
%"struct.std::_Vector_base.232" = 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.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.259, %class.HighsRandom, %"class.std::vector.20", %"class.std::vector.20", i8, %class.HighsSparseMatrix, %class.HighsSparseMatrix, %class.HSimplexNla, %struct.HotStart, double, double, double, i32, i32, i32, i32, i8, i8, i32, i32, i32, %"class.std::vector.5", %"class.std::vector.20", %struct.HighsRayRecord, %struct.HighsRayRecord, i32, i32, i32, double, %"class.std::vector.20", %"class.std::vector.20", %"class.std::vector.20", %"class.std::vector.20", %"class.std::vector.20", %"class.std::vector.5", %"class.std::vector.5", double, double, double, i32, i32, i8, i32, i8, i8, i8, i8, double, %"class.std::vector.276", %"class.std::vector.20", %struct.HighsSimplexStats }
%class.HighsSimplexAnalysis = type { ptr, %"class.std::vector.236", %"class.std::vector.236", 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.20", %"class.std::vector.20", %"class.std::vector.20", %"class.std::vector.20", %"class.std::vector.241", %"class.std::unique_ptr.246", 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.236" = type { %"struct.std::_Vector_base.237" }
%"struct.std::_Vector_base.237" = 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.241" = type { %"struct.std::_Vector_base.242" }
%"struct.std::_Vector_base.242" = 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.246" = type { %"struct.std::__uniq_ptr_data.247" }
%"struct.std::__uniq_ptr_data.247" = type { %"class.std::__uniq_ptr_impl.248" }
%"class.std::__uniq_ptr_impl.248" = type { %"class.std::tuple.249" }
%"class.std::tuple.249" = type { %"struct.std::_Tuple_impl.250" }
%"struct.std::_Tuple_impl.250" = type { %"struct.std::_Head_base.253" }
%"struct.std::_Head_base.253" = 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.20", %"class.std::vector.5", 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.20", %"class.std::vector.20", %"class.std::vector.20", %"class.std::vector.20", %"class.std::vector.20", %"class.std::vector.20", %"class.std::vector.20", %"class.std::vector.20", %"class.std::vector.20", %"class.std::vector.20", %"class.std::vector.20", %"class.std::vector.20", %"class.std::vector.20", %"class.std::vector.5", %"class.std::vector.5", %"class.std::vector.5", %"class.std::vector.5", %"class.std::vector.20", i32, i32, i8, i8, [6 x i8], %struct.SimplexBasis, i32, i32, i32, [4 x i8], %"class.std::vector.20", %"class.std::vector.20", %"class.std::vector.20", %"class.std::vector.20", 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.5", %"class.std::vector.254", %"class.std::vector.254", i64, i32, i32, %"class.std::__cxx11::basic_string" }
%"class.std::vector.254" = type { %"struct.std::_Vector_base.255" }
%"struct.std::_Vector_base.255" = 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.259 = type { %"class.std::unique_ptr.260", %"class.std::unique_ptr.203", i64, i64, i64 }
%"class.std::unique_ptr.260" = type { %"struct.std::__uniq_ptr_data.261" }
%"struct.std::__uniq_ptr_data.261" = type { %"class.std::__uniq_ptr_impl.262" }
%"class.std::__uniq_ptr_impl.262" = type { %"class.std::tuple.263" }
%"class.std::tuple.263" = type { %"struct.std::_Tuple_impl.264" }
%"struct.std::_Tuple_impl.264" = type { %"struct.std::_Head_base.267" }
%"struct.std::_Head_base.267" = 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.5", %"class.std::vector.5", %"class.std::vector.5", %struct.RefactorInfo, i32, i32, i32, i32, i32, i32, i32, double, i8, ptr, ptr, ptr, ptr, double, double, i32, double, %"class.std::unique_ptr.268", %struct.HighsLogOptions, i8, i8, i32, i32, ptr, i32, %"class.std::vector.5", %"class.std::vector.20", %"class.std::vector.5", %"class.std::vector.5", %"class.std::vector.5", %"class.std::vector.20", %"class.std::vector.5", %"class.std::vector.5", %"class.std::vector.5", %"class.std::vector.5", %"class.std::vector.5", %"class.std::vector.5", %"class.std::vector.5", %"class.std::vector.20", %"class.std::vector.20", %"class.std::vector.5", %"class.std::vector.5", %"class.std::vector.5", %"class.std::vector.5", %"class.std::vector.5", %"class.std::vector.5", %"class.std::vector", %"class.std::vector.20", %"class.std::vector.5", %"class.std::vector.5", %"class.std::vector.5", %"class.std::vector.5", %"class.std::vector.5", %"class.std::vector.5", %"class.std::vector.5", %"class.std::vector.5", %"class.std::vector.5", %"class.std::vector.5", %"class.std::vector.20", %"class.std::vector.5", %"class.std::vector.5", %"class.std::vector.20", %"class.std::vector.5", %"class.std::vector.5", %"class.std::vector.20", i32, i32, %"class.std::vector.5", %"class.std::vector.5", %"class.std::vector.5", %"class.std::vector.20", %"class.std::vector.5", %"class.std::vector.5", %"class.std::vector.5", %"class.std::vector.5", %"class.std::vector.20", %"class.std::vector.20", %"class.std::vector.5", %"class.std::vector.5", %"class.std::vector.5", %"class.std::vector.20", %class.HVectorBase }
%struct.RefactorInfo = type { i8, %"class.std::vector.5", %"class.std::vector.5", %"class.std::vector.254", double }
%"class.std::unique_ptr.268" = type { %"struct.std::__uniq_ptr_data.269" }
%"struct.std::__uniq_ptr_data.269" = type { %"class.std::__uniq_ptr_impl.270" }
%"class.std::__uniq_ptr_impl.270" = type { %"class.std::tuple.271" }
%"class.std::tuple.271" = type { %"struct.std::_Tuple_impl.272" }
%"struct.std::_Tuple_impl.272" = type { %"struct.std::_Head_base.275" }
%"struct.std::_Head_base.275" = type { ptr }
%"class.std::vector" = type { %"struct.std::_Vector_base" }
%"struct.std::_Vector_base" = 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.5", %"class.std::vector.20", %"class.std::vector.5", %"class.std::vector.5", %"class.std::vector.20" }
%struct.SimplexIterate = type { i8, %struct.SimplexBasis, %struct.InvertibleRepresentation, %"class.std::vector.20" }
%struct.InvertibleRepresentation = type { %"class.std::vector.5", %"class.std::vector.5", %"class.std::vector.5", %"class.std::vector.5", %"class.std::vector.20", %"class.std::vector.5", %"class.std::vector.5", %"class.std::vector.20", %"class.std::vector.5", %"class.std::vector.5", %"class.std::vector.20", %"class.std::vector.5", %"class.std::vector.5", %"class.std::vector.5", %"class.std::vector.20", %"class.std::vector.5", %"class.std::vector.5", %"class.std::vector.5", %"class.std::vector.5", %"class.std::vector.20", %"class.std::vector.5", %"class.std::vector.5", %"class.std::vector.20", %"class.std::vector.5", %"class.std::vector.20" }
%struct.HotStart = type { i8, %struct.RefactorInfo, %"class.std::vector.254" }
%struct.HighsRayRecord = type { i32, i32, %"class.std::vector.20" }
%"class.std::vector.276" = type { %"struct.std::_Vector_base.277" }
%"struct.std::_Vector_base.277" = 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 }
%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.281" = type { %"struct.std::_Vector_base.282" }
%"struct.std::_Vector_base.282" = 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.5", %"class.std::vector.20", double, %"class.std::vector", %"class.std::vector.5", ptr, i8, i32, %"class.std::vector.5", %"class.std::vector.20" }
%class.HighsSparseVectorSum = type { %"class.std::vector.30", %"class.std::vector.5" }
%"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.20", %"class.std::vector.20", %"class.std::vector.5", %"class.std::vector.5", %"class.std::vector.20", %"class.std::vector.20", %"class.std::vector.5", %"class.std::vector.5", %"class.std::vector.5", %"class.std::vector.5", %"class.std::vector.20", %"class.std::vector.20", double, double, double, double, i64, i64, i64, i32, double }
%class.HighsCliqueTable = type { %"class.std::vector.286", %"class.std::vector.291", %"class.std::vector.296", %class.HighsHashTable.301, %"class.std::set", %"class.std::vector.5", %"class.std::vector.310", %"class.std::vector.5", %"class.std::vector.286", %"class.std::vector.5", %"class.std::vector.315", %"class.std::vector.5", %"class.std::vector.320", %"class.std::vector.10", %"class.std::vector.10", %"class.std::vector.151", %"class.std::vector.5", %class.HighsRandom, i32, i32, i32, i32, i8, i64 }
%"class.std::vector.291" = type { %"struct.std::_Vector_base.292" }
%"struct.std::_Vector_base.292" = 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.296" = type { %"struct.std::_Vector_base.297" }
%"struct.std::_Vector_base.297" = 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.301 = type { %"class.std::unique_ptr.302", %"class.std::unique_ptr.203", i64, i64, i64 }
%"class.std::unique_ptr.302" = type { %"struct.std::__uniq_ptr_data.303" }
%"struct.std::__uniq_ptr_data.303" = type { %"class.std::__uniq_ptr_impl.304" }
%"class.std::__uniq_ptr_impl.304" = type { %"class.std::tuple.305" }
%"class.std::tuple.305" = type { %"struct.std::_Tuple_impl.306" }
%"struct.std::_Tuple_impl.306" = type { %"struct.std::_Head_base.309" }
%"struct.std::_Head_base.309" = type { ptr }
%"class.std::vector.310" = type { %"struct.std::_Vector_base.311" }
%"struct.std::_Vector_base.311" = 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.286" = type { %"struct.std::_Vector_base.287" }
%"struct.std::_Vector_base.287" = 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.315" = type { %"struct.std::_Vector_base.316" }
%"struct.std::_Vector_base.316" = 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.320" = type { %"struct.std::_Vector_base.321" }
%"struct.std::_Vector_base.321" = 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.325", i64, %"class.std::vector.330", %"class.std::vector.330", ptr, %"class.std::vector.335", %"class.std::vector.10", %"class.std::function.340" }
%"class.std::vector.325" = type { %"struct.std::_Vector_base.326" }
%"struct.std::_Vector_base.326" = 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.330" = type { %"struct.std::_Vector_base.331" }
%"struct.std::_Vector_base.331" = 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.335" = type { %"struct.std::_Vector_base.336" }
%"struct.std::_Vector_base.336" = 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.340" = type { %"class.std::_Function_base", ptr }
%class.HighsPrimalHeuristics = type { ptr, i64, i64, i64, i64, double, i32, double, i32, %class.HighsRandom, %"class.std::vector.5" }
%class.HighsRedcostFixing = type { %"class.std::vector.342", %"class.std::vector.342" }
%"class.std::vector.342" = type { %"struct.std::_Vector_base.343" }
%"struct.std::_Vector_base.343" = 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.5", %"class.std::vector.20", %"class.std::vector.5", %"class.std::vector.5" }
%"class.presolve::HighsPostsolveStack" = type { i64, double, double, double, double, %class.HighsDataStack, %"class.std::vector.0", %"class.std::vector.5", %"class.std::vector.5", %"class.std::vector.10", %"class.std::vector.15", %"class.std::vector.15", i32, i32 }
%class.HighsDataStack = type { %"class.std::vector", i64 }
%"class.std::vector.0" = type { %"struct.std::_Vector_base.1" }
%"struct.std::_Vector_base.1" = 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.15" = type { %"struct.std::_Vector_base.16" }
%"struct.std::_Vector_base.16" = 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 }
%struct.HighsSymmetries = type { %"class.std::vector.5", %"class.std::vector.5", %"class.std::vector.5", %"class.std::vector.5", %"class.std::vector.5", %"class.std::vector.5", %"class.std::vector.347", %class.HighsHashTable.352, i32, i32 }
%"class.std::vector.347" = type { %"struct.std::_Vector_base.348" }
%"struct.std::_Vector_base.348" = 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.352 = type { %"class.std::unique_ptr.353", %"class.std::unique_ptr.203", i64, i64, i64 }
%"class.std::unique_ptr.353" = type { %"struct.std::__uniq_ptr_data.354" }
%"struct.std::__uniq_ptr_data.354" = type { %"class.std::__uniq_ptr_impl.355" }
%"class.std::__uniq_ptr_impl.355" = type { %"class.std::tuple.356" }
%"class.std::tuple.356" = type { %"struct.std::_Tuple_impl.357" }
%"struct.std::_Tuple_impl.357" = type { %"struct.std::_Head_base.360" }
%"struct.std::_Head_base.360" = type { ptr }
%"class.std::shared_ptr.361" = type { %"class.std::__shared_ptr.362" }
%"class.std::__shared_ptr.362" = type { ptr, %"class.std::__shared_count" }
%struct.HighsBasis = type { i8, i8, i8, i8, i32, i32, %"class.std::__cxx11::basic_string", %"class.std::vector.211", %"class.std::vector.211" }
%"class.std::vector.211" = type { %"struct.std::_Vector_base.212" }
%"struct.std::_Vector_base.212" = 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.HighsCDouble = type { double, double }
%class.HighsNodeQueue = type <{ %"class.std::unique_ptr.364", %"class.std::vector.372", %"class.std::priority_queue", %"class.std::unique_ptr.382", %"class.std::unique_ptr.382", i64, i64, i64, i64, i64, i64, i64, double, i32, [4 x i8] }>
%"class.std::unique_ptr.364" = type { %"struct.std::__uniq_ptr_data.365" }
%"struct.std::__uniq_ptr_data.365" = type { %"class.std::__uniq_ptr_impl.366" }
%"class.std::__uniq_ptr_impl.366" = type { %"class.std::tuple.367" }
%"class.std::tuple.367" = type { %"struct.std::_Tuple_impl.368" }
%"struct.std::_Tuple_impl.368" = type { %"struct.std::_Head_base.371" }
%"struct.std::_Head_base.371" = type { ptr }
%"class.std::vector.372" = type { %"struct.std::_Vector_base.373" }
%"struct.std::_Vector_base.373" = 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.377", [8 x i8] }>
%"class.std::vector.377" = type { %"struct.std::_Vector_base.378" }
%"struct.std::_Vector_base.378" = 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.382" = type { %"struct.std::__uniq_ptr_data.383" }
%"struct.std::__uniq_ptr_data.383" = type { %"class.std::__uniq_ptr_impl.384" }
%"class.std::__uniq_ptr_impl.384" = type { %"class.std::tuple.385" }
%"class.std::tuple.385" = type { %"struct.std::_Tuple_impl.386" }
%"struct.std::_Tuple_impl.386" = type { %"struct.std::_Head_base.389" }
%"struct.std::_Head_base.389" = type { ptr }
%struct.HighsPrimaDualIntegral = type { double, double, double, double, double }

@.str.55 = external hidden unnamed_addr constant [76 x i8], align 1
@.str.74 = external hidden unnamed_addr constant [30 x i8], align 1
@__PRETTY_FUNCTION__._ZN8presolve9HPresolve16dominatedColumnsERNS_19HighsPostsolveStackE = external hidden unnamed_addr constant [79 x i8], align 1
@.str.75 = external hidden unnamed_addr constant [30 x i8], align 1
@.str.76 = external hidden unnamed_addr constant [28 x i8], align 1

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

declare i32 @__gxx_personality_v0(...)

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

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

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

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

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

declare void @_Z11highsLogDevRK15HighsLogOptions12HighsLogTypePKcz(ptr noundef nonnull align 8 dereferenceable(89), i32 noundef, ptr noundef, ...) #3

; 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 zeroext i1 @_ZNK8presolve9HPresolve14isLowerImpliedEi(ptr noundef nonnull align 8 dereferenceable(1720), i32 noundef) #1 align 2

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

; Function Attrs: mustprogress uwtable
declare dso_local void @_ZNK8presolve9HPresolve15getColumnVectorEi(ptr dead_on_unwind noalias writable sret(%struct.HighsTripletListSlice) align 8, ptr noundef nonnull align 8 dereferenceable(1720), i32 noundef) #4 align 2

; Function Attrs: mustprogress uwtable
declare dso_local void @_ZNK16HighsMatrixSliceI21HighsTripletListSliceE5beginEv(ptr dead_on_unwind noalias writable sret(%"class.HighsMatrixSlice<HighsTripletListSlice>::iterator") align 8, ptr noundef nonnull align 8 dereferenceable(28)) #4 align 2

; Function Attrs: mustprogress uwtable
declare dso_local void @_ZNK16HighsMatrixSliceI21HighsTripletListSliceE3endEv(ptr dead_on_unwind noalias writable sret(%"class.HighsMatrixSlice<HighsTripletListSlice>::iterator") align 8, ptr noundef nonnull align 8 dereferenceable(28)) #4 align 2

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

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

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

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

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

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

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

; Function Attrs: mustprogress uwtable
define dso_local noundef i32 @_ZN8presolve9HPresolve16dominatedColumnsERNS_19HighsPostsolveStackE(ptr noundef nonnull align 8 dereferenceable(1720) %0, ptr noundef nonnull align 8 dereferenceable(224) %1) #4 align 2 personality ptr @__gxx_personality_v0 {
  %3 = alloca i32, align 4
  %4 = alloca ptr, align 8
  %5 = alloca ptr, align 8
  %6 = alloca %"class.std::vector.411", align 8
  %7 = alloca %"class.std::allocator.413", align 1
  %8 = alloca ptr, align 8
  %9 = alloca i32, align 4
  %10 = alloca %class.anon.416, align 8
  %11 = alloca %class.anon.417, align 8
  %12 = alloca %class.anon.418, align 8
  %13 = alloca i32, align 4
  %14 = alloca i32, align 4
  %15 = alloca i32, align 4
  %16 = alloca i32, align 4
  %17 = alloca i8, align 1
  %18 = alloca i8, align 1
  %19 = alloca i32, align 4
  %20 = alloca i32, align 4
  %21 = alloca i32, align 4
  %22 = alloca i8, align 1
  %23 = alloca i8, align 1
  %24 = alloca i8, align 1
  %25 = alloca i8, align 1
  %26 = alloca i8, align 1
  %27 = alloca i32, align 4
  %28 = alloca i32, align 4
  %29 = alloca i32, align 4
  %30 = alloca i32, align 4
  %31 = alloca double, align 8
  %32 = alloca i32, align 4
  %33 = alloca i32, align 4
  %34 = alloca i32, align 4
  %35 = alloca double, align 8
  %36 = alloca double, align 8
  %37 = alloca double, align 8
  %38 = alloca i8, align 1
  %39 = alloca i8, align 1
  %40 = alloca ptr, align 8
  %41 = alloca %struct.HighsTripletListSlice, align 8
  %42 = alloca %"class.HighsMatrixSlice<HighsTripletListSlice>::iterator", align 8
  %43 = alloca %"class.HighsMatrixSlice<HighsTripletListSlice>::iterator", align 8
  %44 = alloca ptr, align 8
  %45 = alloca i32, align 4
  %46 = alloca i32, align 4
  %47 = alloca double, align 8
  %48 = alloca double, align 8
  %49 = alloca double, align 8
  %50 = alloca double, align 8
  %51 = alloca double, align 8
  %52 = alloca double, align 8
  %53 = alloca double, align 8
  %54 = alloca double, align 8
  %55 = alloca double, align 8
  %56 = alloca i8, align 1
  %57 = alloca ptr, align 8
  %58 = alloca %struct.HighsTripletPositionSlice, align 8
  %59 = alloca %"class.HighsMatrixSlice<HighsTripletPositionSlice>::iterator", align 8
  %60 = alloca %"class.HighsMatrixSlice<HighsTripletPositionSlice>::iterator", align 8
  %61 = alloca ptr, align 8
  %62 = alloca i32, align 4
  %63 = alloca double, align 8
  %64 = alloca i32, align 4
  %65 = alloca i32, align 4
  %66 = alloca i32, align 4
  %67 = alloca i8, align 1
  %68 = alloca ptr, align 8
  %69 = alloca %struct.HighsTripletPositionSlice, align 8
  %70 = alloca %"class.HighsMatrixSlice<HighsTripletPositionSlice>::iterator", align 8
  %71 = alloca %"class.HighsMatrixSlice<HighsTripletPositionSlice>::iterator", align 8
  %72 = alloca ptr, align 8
  %73 = alloca i32, align 4
  %74 = alloca double, align 8
  %75 = alloca i32, align 4
  %76 = alloca i32, align 4
  %77 = alloca i32, align 4
  %78 = alloca i8, align 1
  %79 = alloca ptr, align 8
  %80 = alloca %struct.HighsTripletPositionSlice, align 8
  %81 = alloca %"class.HighsMatrixSlice<HighsTripletPositionSlice>::iterator", align 8
  %82 = alloca %"class.HighsMatrixSlice<HighsTripletPositionSlice>::iterator", align 8
  %83 = alloca ptr, align 8
  %84 = alloca i32, align 4
  %85 = alloca double, align 8
  %86 = alloca %"struct.HighsCliqueTable::CliqueVar", align 4
  %87 = alloca %"struct.HighsCliqueTable::CliqueVar", align 4
  %88 = alloca i32, align 4
  %89 = alloca %"struct.HighsCliqueTable::CliqueVar", align 4
  %90 = alloca %"struct.HighsCliqueTable::CliqueVar", align 4
  %91 = alloca i32, align 4
  %92 = alloca i8, align 1
  %93 = alloca ptr, align 8
  %94 = alloca %struct.HighsTripletPositionSlice, align 8
  %95 = alloca %"class.HighsMatrixSlice<HighsTripletPositionSlice>::iterator", align 8
  %96 = alloca %"class.HighsMatrixSlice<HighsTripletPositionSlice>::iterator", align 8
  %97 = alloca ptr, align 8
  %98 = alloca i32, align 4
  %99 = alloca double, align 8
  %100 = alloca %"struct.HighsCliqueTable::CliqueVar", align 4
  %101 = alloca %"struct.HighsCliqueTable::CliqueVar", align 4
  %102 = alloca i32, align 4
  %103 = alloca %"struct.HighsCliqueTable::CliqueVar", align 4
  %104 = alloca %"struct.HighsCliqueTable::CliqueVar", align 4
  %105 = alloca i32, align 4
  %106 = alloca i32, align 4
  store ptr %0, ptr %4, align 8, !tbaa !5
  store ptr %1, ptr %5, align 8, !tbaa !5
  %107 = load ptr, ptr %4, align 8
  call void @llvm.lifetime.start.p0(i64 24, ptr %6) #7
  %108 = getelementptr inbounds %"class.presolve::HPresolve", ptr %107, i32 0, i32 0
  %109 = load ptr, ptr %108, align 8, !tbaa !9
  %110 = getelementptr inbounds %class.HighsLp, ptr %109, i32 0, i32 0
  %111 = load i32, ptr %110, align 8, !tbaa !74
  %112 = sext i32 %111 to i64
  call void @llvm.lifetime.start.p0(i64 1, ptr %7) #7
  call void @_ZNSaISt4pairIjjEEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %7) #7
  invoke void @_ZNSt6vectorISt4pairIjjESaIS1_EEC2EmRKS2_(ptr noundef nonnull align 8 dereferenceable(24) %6, i64 noundef %112, ptr noundef nonnull align 1 dereferenceable(1) %7)
          to label %113 unwind label %126

113:                                              ; preds = %2
  call void @_ZNSt15__new_allocatorISt4pairIjjEED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %7) #7
  call void @llvm.lifetime.end.p0(i64 1, ptr %7) #7
  call void @llvm.lifetime.start.p0(i64 8, ptr %10) #7
  %114 = getelementptr inbounds %class.anon.416, ptr %10, i32 0, i32 0
  store ptr %107, ptr %114, align 8, !tbaa !94
  call void @llvm.lifetime.start.p0(i64 8, ptr %11) #7
  %115 = getelementptr inbounds %class.anon.417, ptr %11, i32 0, i32 0
  store ptr %6, ptr %115, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 16, ptr %12) #7
  %116 = getelementptr inbounds %class.anon.418, ptr %12, i32 0, i32 0
  store ptr %107, ptr %116, align 8, !tbaa !96
  %117 = getelementptr inbounds %class.anon.418, ptr %12, i32 0, i32 1
  store ptr %6, ptr %117, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 4, ptr %13) #7
  %118 = getelementptr inbounds %"class.presolve::HPresolve", ptr %107, i32 0, i32 5
  %119 = call noundef i64 @_ZNKSt6vectorIdSaIdEE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24) %118) #7
  %120 = trunc i64 %119 to i32
  store i32 %120, ptr %13, align 4, !tbaa !98
  call void @llvm.lifetime.start.p0(i64 4, ptr %14) #7
  store i32 0, ptr %14, align 4, !tbaa !98
  br label %121

121:                                              ; preds = %198, %113
  %122 = load i32, ptr %14, align 4, !tbaa !98
  %123 = load i32, ptr %13, align 4, !tbaa !98
  %124 = icmp slt i32 %122, %123
  br i1 %124, label %130, label %125

125:                                              ; preds = %121
  call void @llvm.lifetime.end.p0(i64 4, ptr %14) #7
  br label %201

126:                                              ; preds = %2
  %127 = landingpad { ptr, i32 }
          cleanup
  %128 = extractvalue { ptr, i32 } %127, 0
  store ptr %128, ptr %8, align 8
  %129 = extractvalue { ptr, i32 } %127, 1
  store i32 %129, ptr %9, align 4
  call void @_ZNSt15__new_allocatorISt4pairIjjEED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %7) #7
  call void @llvm.lifetime.end.p0(i64 1, ptr %7) #7
  br label %1788

130:                                              ; preds = %121
  %131 = getelementptr inbounds %"class.presolve::HPresolve", ptr %107, i32 0, i32 5
  %132 = load i32, ptr %14, align 4, !tbaa !98
  %133 = sext i32 %132 to i64
  %134 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt6vectorIdSaIdEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %131, i64 noundef %133) #7
  %135 = load double, ptr %134, align 8, !tbaa !99
  %136 = fcmp oeq double %135, 0.000000e+00
  br i1 %136, label %137, label %138

137:                                              ; preds = %130
  br label %198

138:                                              ; preds = %130
  call void @llvm.lifetime.start.p0(i64 4, ptr %15) #7
  %139 = getelementptr inbounds %"class.presolve::HPresolve", ptr %107, i32 0, i32 6
  %140 = load i32, ptr %14, align 4, !tbaa !98
  %141 = sext i32 %140 to i64
  %142 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNSt6vectorIiSaIiEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %139, i64 noundef %141) #7
  %143 = load i32, ptr %142, align 4, !tbaa !98
  store i32 %143, ptr %15, align 4, !tbaa !98
  call void @llvm.lifetime.start.p0(i64 4, ptr %16) #7
  %144 = getelementptr inbounds %"class.presolve::HPresolve", ptr %107, i32 0, i32 7
  %145 = load i32, ptr %14, align 4, !tbaa !98
  %146 = sext i32 %145 to i64
  %147 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNSt6vectorIiSaIiEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %144, i64 noundef %146) #7
  %148 = load i32, ptr %147, align 4, !tbaa !98
  store i32 %148, ptr %16, align 4, !tbaa !98
  call void @llvm.lifetime.start.p0(i64 1, ptr %17) #7
  %149 = getelementptr inbounds %"class.presolve::HPresolve", ptr %107, i32 0, i32 0
  %150 = load ptr, ptr %149, align 8, !tbaa !9
  %151 = getelementptr inbounds %class.HighsLp, ptr %150, i32 0, i32 5
  %152 = load i32, ptr %15, align 4, !tbaa !98
  %153 = sext i32 %152 to i64
  %154 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt6vectorIdSaIdEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %151, i64 noundef %153) #7
  %155 = load double, ptr %154, align 8, !tbaa !99
  %156 = fcmp une double %155, 0xFFF0000000000000
  %157 = zext i1 %156 to i8
  store i8 %157, ptr %17, align 1, !tbaa !100
  call void @llvm.lifetime.start.p0(i64 1, ptr %18) #7
  %158 = getelementptr inbounds %"class.presolve::HPresolve", ptr %107, i32 0, i32 0
  %159 = load ptr, ptr %158, align 8, !tbaa !9
  %160 = getelementptr inbounds %class.HighsLp, ptr %159, i32 0, i32 6
  %161 = load i32, ptr %15, align 4, !tbaa !98
  %162 = sext i32 %161 to i64
  %163 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt6vectorIdSaIdEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %160, i64 noundef %162) #7
  %164 = load double, ptr %163, align 8, !tbaa !99
  %165 = fcmp une double %164, 0x7FF0000000000000
  %166 = zext i1 %165 to i8
  store i8 %166, ptr %18, align 1, !tbaa !100
  %167 = getelementptr inbounds %"class.presolve::HPresolve", ptr %107, i32 0, i32 5
  %168 = load i32, ptr %14, align 4, !tbaa !98
  %169 = sext i32 %168 to i64
  %170 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt6vectorIdSaIdEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %167, i64 noundef %169) #7
  %171 = load double, ptr %170, align 8, !tbaa !99
  %172 = fcmp ogt double %171, 0.000000e+00
  br i1 %172, label %173, label %187

173:                                              ; preds = %138
  %174 = load i32, ptr %15, align 4, !tbaa !98
  %175 = load i32, ptr %16, align 4, !tbaa !98
  %176 = load i8, ptr %17, align 1, !tbaa !100, !range !101, !noundef !102
  %177 = trunc i8 %176 to i1
  %178 = zext i1 %177 to i32
  %179 = load i8, ptr %18, align 1, !tbaa !100, !range !101, !noundef !102
  %180 = trunc i8 %179 to i1
  %181 = zext i1 %180 to i32
  invoke void @"_ZZN8presolve9HPresolve16dominatedColumnsERNS_19HighsPostsolveStackEENK3$_1clEiijj"(ptr noundef nonnull align 8 dereferenceable(8) %11, i32 noundef %174, i32 noundef %175, i32 noundef %178, i32 noundef %181)
          to label %182 unwind label %183

182:                                              ; preds = %173
  br label %197

183:                                              ; preds = %187, %173
  %184 = landingpad { ptr, i32 }
          cleanup
  %185 = extractvalue { ptr, i32 } %184, 0
  store ptr %185, ptr %8, align 8
  %186 = extractvalue { ptr, i32 } %184, 1
  store i32 %186, ptr %9, align 4
  call void @llvm.lifetime.end.p0(i64 1, ptr %18) #7
  call void @llvm.lifetime.end.p0(i64 1, ptr %17) #7
  call void @llvm.lifetime.end.p0(i64 4, ptr %16) #7
  call void @llvm.lifetime.end.p0(i64 4, ptr %15) #7
  call void @llvm.lifetime.end.p0(i64 4, ptr %14) #7
  br label %1787

187:                                              ; preds = %138
  %188 = load i32, ptr %15, align 4, !tbaa !98
  %189 = load i32, ptr %16, align 4, !tbaa !98
  %190 = load i8, ptr %18, align 1, !tbaa !100, !range !101, !noundef !102
  %191 = trunc i8 %190 to i1
  %192 = zext i1 %191 to i32
  %193 = load i8, ptr %17, align 1, !tbaa !100, !range !101, !noundef !102
  %194 = trunc i8 %193 to i1
  %195 = zext i1 %194 to i32
  invoke void @"_ZZN8presolve9HPresolve16dominatedColumnsERNS_19HighsPostsolveStackEENK3$_1clEiijj"(ptr noundef nonnull align 8 dereferenceable(8) %11, i32 noundef %188, i32 noundef %189, i32 noundef %192, i32 noundef %195)
          to label %196 unwind label %183

196:                                              ; preds = %187
  br label %197

197:                                              ; preds = %196, %182
  call void @llvm.lifetime.end.p0(i64 1, ptr %18) #7
  call void @llvm.lifetime.end.p0(i64 1, ptr %17) #7
  call void @llvm.lifetime.end.p0(i64 4, ptr %16) #7
  call void @llvm.lifetime.end.p0(i64 4, ptr %15) #7
  br label %198

198:                                              ; preds = %197, %137
  %199 = load i32, ptr %14, align 4, !tbaa !98
  %200 = add nsw i32 %199, 1
  store i32 %200, ptr %14, align 4, !tbaa !98
  br label %121, !llvm.loop !103

201:                                              ; preds = %125
  call void @llvm.lifetime.start.p0(i64 4, ptr %19) #7
  store i32 0, ptr %19, align 4, !tbaa !98
  call void @llvm.lifetime.start.p0(i64 4, ptr %20) #7
  store i32 0, ptr %20, align 4, !tbaa !98
  br label %202

202:                                              ; preds = %1763, %201
  %203 = load i32, ptr %20, align 4, !tbaa !98
  %204 = getelementptr inbounds %"class.presolve::HPresolve", ptr %107, i32 0, i32 0
  %205 = load ptr, ptr %204, align 8, !tbaa !9
  %206 = getelementptr inbounds %class.HighsLp, ptr %205, i32 0, i32 0
  %207 = load i32, ptr %206, align 8, !tbaa !74
  %208 = icmp slt i32 %203, %207
  br i1 %208, label %210, label %209

209:                                              ; preds = %202
  store i32 5, ptr %21, align 4
  br label %1768

210:                                              ; preds = %202
  %211 = getelementptr inbounds %"class.presolve::HPresolve", ptr %107, i32 0, i32 47
  %212 = load i32, ptr %20, align 4, !tbaa !98
  %213 = sext i32 %212 to i64
  %214 = call noundef nonnull align 1 dereferenceable(1) ptr @_ZNSt6vectorIhSaIhEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %211, i64 noundef %213) #7
  %215 = load i8, ptr %214, align 1, !tbaa !105
  %216 = icmp ne i8 %215, 0
  br i1 %216, label %217, label %218

217:                                              ; preds = %210
  br label %1763

218:                                              ; preds = %210
  call void @llvm.lifetime.start.p0(i64 1, ptr %22) #7
  %219 = load i32, ptr %20, align 4, !tbaa !98
  %220 = call noundef zeroext i1 @_ZNK8presolve9HPresolve14isUpperImpliedEi(ptr noundef nonnull align 8 dereferenceable(1720) %107, i32 noundef %219)
  %221 = zext i1 %220 to i8
  store i8 %221, ptr %22, align 1, !tbaa !100
  call void @llvm.lifetime.start.p0(i64 1, ptr %23) #7
  %222 = load i32, ptr %20, align 4, !tbaa !98
  %223 = call noundef zeroext i1 @_ZNK8presolve9HPresolve14isLowerImpliedEi(ptr noundef nonnull align 8 dereferenceable(1720) %107, i32 noundef %222)
  %224 = zext i1 %223 to i8
  store i8 %224, ptr %23, align 1, !tbaa !100
  call void @llvm.lifetime.start.p0(i64 1, ptr %24) #7
  store i8 0, ptr %24, align 1, !tbaa !100
  call void @llvm.lifetime.start.p0(i64 1, ptr %25) #7
  store i8 0, ptr %25, align 1, !tbaa !100
  call void @llvm.lifetime.start.p0(i64 1, ptr %26) #7
  %225 = load i32, ptr %20, align 4, !tbaa !98
  %226 = invoke noundef zeroext i1 @"_ZZN8presolve9HPresolve16dominatedColumnsERNS_19HighsPostsolveStackEENK3$_0clEi"(ptr noundef nonnull align 8 dereferenceable(8) %10, i32 noundef %225)
          to label %227 unwind label %252

227:                                              ; preds = %218
  %228 = zext i1 %226 to i8
  store i8 %228, ptr %26, align 1, !tbaa !100
  %229 = load i8, ptr %26, align 1, !tbaa !100, !range !101, !noundef !102
  %230 = trunc i8 %229 to i1
  br i1 %230, label %231, label %256

231:                                              ; preds = %227
  %232 = getelementptr inbounds %"class.presolve::HPresolve", ptr %107, i32 0, i32 3
  %233 = load ptr, ptr %232, align 8, !tbaa !106
  %234 = getelementptr inbounds %class.HighsMipSolver, ptr %233, i32 0, i32 25
  %235 = call noundef ptr @_ZNKSt10unique_ptrI18HighsMipSolverDataSt14default_deleteIS0_EEptEv(ptr noundef nonnull align 8 dereferenceable(8) %234) #7
  %236 = getelementptr inbounds %struct.HighsMipSolverData, ptr %235, i32 0, i32 6
  %237 = load i32, ptr %20, align 4, !tbaa !98
  %238 = invoke noundef i32 @_ZNK16HighsCliqueTable10numCliquesEib(ptr noundef nonnull align 8 dereferenceable(488) %236, i32 noundef %237, i1 noundef zeroext true)
          to label %239 unwind label %252

239:                                              ; preds = %231
  %240 = icmp sgt i32 %238, 0
  %241 = zext i1 %240 to i8
  store i8 %241, ptr %24, align 1, !tbaa !100
  %242 = getelementptr inbounds %"class.presolve::HPresolve", ptr %107, i32 0, i32 3
  %243 = load ptr, ptr %242, align 8, !tbaa !106
  %244 = getelementptr inbounds %class.HighsMipSolver, ptr %243, i32 0, i32 25
  %245 = call noundef ptr @_ZNKSt10unique_ptrI18HighsMipSolverDataSt14default_deleteIS0_EEptEv(ptr noundef nonnull align 8 dereferenceable(8) %244) #7
  %246 = getelementptr inbounds %struct.HighsMipSolverData, ptr %245, i32 0, i32 6
  %247 = load i32, ptr %20, align 4, !tbaa !98
  %248 = invoke noundef i32 @_ZNK16HighsCliqueTable10numCliquesEib(ptr noundef nonnull align 8 dereferenceable(488) %246, i32 noundef %247, i1 noundef zeroext false)
          to label %249 unwind label %252

249:                                              ; preds = %239
  %250 = icmp sgt i32 %248, 0
  %251 = zext i1 %250 to i8
  store i8 %251, ptr %25, align 1, !tbaa !100
  br label %264

252:                                              ; preds = %239, %231, %218
  %253 = landingpad { ptr, i32 }
          cleanup
  %254 = extractvalue { ptr, i32 } %253, 0
  store ptr %254, ptr %8, align 8
  %255 = extractvalue { ptr, i32 } %253, 1
  store i32 %255, ptr %9, align 4
  br label %1767

256:                                              ; preds = %227
  %257 = load i8, ptr %22, align 1, !tbaa !100, !range !101, !noundef !102
  %258 = trunc i8 %257 to i1
  br i1 %258, label %263, label %259

259:                                              ; preds = %256
  %260 = load i8, ptr %23, align 1, !tbaa !100, !range !101, !noundef !102
  %261 = trunc i8 %260 to i1
  br i1 %261, label %263, label %262

262:                                              ; preds = %259
  store i32 7, ptr %21, align 4
  br label %1760

263:                                              ; preds = %259, %256
  br label %264

264:                                              ; preds = %263, %249
  call void @llvm.lifetime.start.p0(i64 4, ptr %27) #7
  %265 = load i32, ptr %19, align 4, !tbaa !98
  store i32 %265, ptr %27, align 4, !tbaa !98
  call void @llvm.lifetime.start.p0(i64 4, ptr %28) #7
  store i32 -1, ptr %28, align 4, !tbaa !98
  call void @llvm.lifetime.start.p0(i64 4, ptr %29) #7
  store i32 2147483647, ptr %29, align 4, !tbaa !98
  call void @llvm.lifetime.start.p0(i64 4, ptr %30) #7
  store i32 0, ptr %30, align 4, !tbaa !98
  call void @llvm.lifetime.start.p0(i64 8, ptr %31) #7
  store double 0.000000e+00, ptr %31, align 8, !tbaa !99
  call void @llvm.lifetime.start.p0(i64 4, ptr %32) #7
  store i32 -1, ptr %32, align 4, !tbaa !98
  call void @llvm.lifetime.start.p0(i64 4, ptr %33) #7
  store i32 2147483647, ptr %33, align 4, !tbaa !98
  call void @llvm.lifetime.start.p0(i64 4, ptr %34) #7
  store i32 0, ptr %34, align 4, !tbaa !98
  call void @llvm.lifetime.start.p0(i64 8, ptr %35) #7
  store double 0.000000e+00, ptr %35, align 8, !tbaa !99
  call void @llvm.lifetime.start.p0(i64 8, ptr %36) #7
  store double 0xFFF0000000000000, ptr %36, align 8, !tbaa !99
  call void @llvm.lifetime.start.p0(i64 8, ptr %37) #7
  store double 0x7FF0000000000000, ptr %37, align 8, !tbaa !99
  call void @llvm.lifetime.start.p0(i64 1, ptr %38) #7
  %266 = load i8, ptr %22, align 1, !tbaa !100, !range !101, !noundef !102
  %267 = trunc i8 %266 to i1
  br i1 %267, label %271, label %268

268:                                              ; preds = %264
  %269 = load i8, ptr %26, align 1, !tbaa !100, !range !101, !noundef !102
  %270 = trunc i8 %269 to i1
  br label %271

271:                                              ; preds = %268, %264
  %272 = phi i1 [ true, %264 ], [ %270, %268 ]
  %273 = zext i1 %272 to i8
  store i8 %273, ptr %38, align 1, !tbaa !100
  call void @llvm.lifetime.start.p0(i64 1, ptr %39) #7
  %274 = load i8, ptr %23, align 1, !tbaa !100, !range !101, !noundef !102
  %275 = trunc i8 %274 to i1
  br i1 %275, label %279, label %276

276:                                              ; preds = %271
  %277 = load i8, ptr %26, align 1, !tbaa !100, !range !101, !noundef !102
  %278 = trunc i8 %277 to i1
  br label %279

279:                                              ; preds = %276, %271
  %280 = phi i1 [ true, %271 ], [ %278, %276 ]
  %281 = zext i1 %280 to i8
  store i8 %281, ptr %39, align 1, !tbaa !100
  call void @llvm.lifetime.start.p0(i64 8, ptr %40) #7
  call void @llvm.lifetime.start.p0(i64 32, ptr %41) #7
  %282 = load i32, ptr %20, align 4, !tbaa !98
  invoke void @_ZNK8presolve9HPresolve15getColumnVectorEi(ptr dead_on_unwind writable sret(%struct.HighsTripletListSlice) align 8 %41, ptr noundef nonnull align 8 dereferenceable(1720) %107, i32 noundef %282)
          to label %283 unwind label %292

283:                                              ; preds = %279
  store ptr %41, ptr %40, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 32, ptr %42) #7
  %284 = load ptr, ptr %40, align 8, !tbaa !5
  invoke void @_ZNK16HighsMatrixSliceI21HighsTripletListSliceE5beginEv(ptr dead_on_unwind writable sret(%"class.HighsMatrixSlice<HighsTripletListSlice>::iterator") align 8 %42, ptr noundef nonnull align 8 dereferenceable(28) %284)
          to label %285 unwind label %296

285:                                              ; preds = %283
  call void @llvm.lifetime.start.p0(i64 32, ptr %43) #7
  %286 = load ptr, ptr %40, align 8, !tbaa !5
  invoke void @_ZNK16HighsMatrixSliceI21HighsTripletListSliceE3endEv(ptr dead_on_unwind writable sret(%"class.HighsMatrixSlice<HighsTripletListSlice>::iterator") align 8 %43, ptr noundef nonnull align 8 dereferenceable(28) %286)
          to label %287 unwind label %300

287:                                              ; preds = %285
  br label %288

288:                                              ; preds = %608, %287
  %289 = invoke noundef zeroext i1 @_ZNK16HighsMatrixSliceI21HighsTripletListSliceE8iteratorneERKS2_(ptr noundef nonnull align 8 dereferenceable(28) %42, ptr noundef nonnull align 8 dereferenceable(28) %43)
          to label %290 unwind label %300

290:                                              ; preds = %288
  br i1 %289, label %304, label %291

291:                                              ; preds = %290
  store i32 8, ptr %21, align 4
  call void @llvm.lifetime.end.p0(i64 32, ptr %43) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr %42) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr %41) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %40) #7
  br label %615

292:                                              ; preds = %279
  %293 = landingpad { ptr, i32 }
          cleanup
  %294 = extractvalue { ptr, i32 } %293, 0
  store ptr %294, ptr %8, align 8
  %295 = extractvalue { ptr, i32 } %293, 1
  store i32 %295, ptr %9, align 4
  br label %614

296:                                              ; preds = %283
  %297 = landingpad { ptr, i32 }
          cleanup
  %298 = extractvalue { ptr, i32 } %297, 0
  store ptr %298, ptr %8, align 8
  %299 = extractvalue { ptr, i32 } %297, 1
  store i32 %299, ptr %9, align 4
  br label %613

300:                                              ; preds = %606, %288, %285
  %301 = landingpad { ptr, i32 }
          cleanup
  %302 = extractvalue { ptr, i32 } %301, 0
  store ptr %302, ptr %8, align 8
  %303 = extractvalue { ptr, i32 } %301, 1
  store i32 %303, ptr %9, align 4
  br label %612

304:                                              ; preds = %290
  call void @llvm.lifetime.start.p0(i64 8, ptr %44) #7
  %305 = invoke noundef nonnull align 8 dereferenceable(16) ptr @_ZN16HighsMatrixSliceI21HighsTripletListSliceE8iteratordeEv(ptr noundef nonnull align 8 dereferenceable(28) %42)
          to label %306 unwind label %370

306:                                              ; preds = %304
  store ptr %305, ptr %44, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 4, ptr %45) #7
  %307 = load ptr, ptr %44, align 8, !tbaa !5
  %308 = invoke noundef i32 @_ZNK17HighsSliceNonzero5indexEv(ptr noundef nonnull align 8 dereferenceable(16) %307)
          to label %309 unwind label %374

309:                                              ; preds = %306
  store i32 %308, ptr %45, align 4, !tbaa !98
  call void @llvm.lifetime.start.p0(i64 4, ptr %46) #7
  %310 = getelementptr inbounds %"class.presolve::HPresolve", ptr %107, i32 0, i32 0
  %311 = load ptr, ptr %310, align 8, !tbaa !9
  %312 = getelementptr inbounds %class.HighsLp, ptr %311, i32 0, i32 6
  %313 = load i32, ptr %45, align 4, !tbaa !98
  %314 = sext i32 %313 to i64
  %315 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt6vectorIdSaIdEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %312, i64 noundef %314) #7
  %316 = load double, ptr %315, align 8, !tbaa !99
  %317 = fcmp une double %316, 0x7FF0000000000000
  %318 = zext i1 %317 to i64
  %319 = select i1 %317, i32 1, i32 -1
  store i32 %319, ptr %46, align 4, !tbaa !98
  %320 = load i8, ptr %26, align 1, !tbaa !100, !range !101, !noundef !102
  %321 = trunc i8 %320 to i1
  br i1 %321, label %322, label %549

322:                                              ; preds = %309
  %323 = getelementptr inbounds %"class.presolve::HPresolve", ptr %107, i32 0, i32 0
  %324 = load ptr, ptr %323, align 8, !tbaa !9
  %325 = getelementptr inbounds %class.HighsLp, ptr %324, i32 0, i32 6
  %326 = load i32, ptr %45, align 4, !tbaa !98
  %327 = sext i32 %326 to i64
  %328 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt6vectorIdSaIdEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %325, i64 noundef %327) #7
  %329 = load double, ptr %328, align 8, !tbaa !99
  %330 = fcmp une double %329, 0x7FF0000000000000
  br i1 %330, label %331, label %441

331:                                              ; preds = %322
  %332 = getelementptr inbounds %"class.presolve::HPresolve", ptr %107, i32 0, i32 0
  %333 = load ptr, ptr %332, align 8, !tbaa !9
  %334 = getelementptr inbounds %class.HighsLp, ptr %333, i32 0, i32 2
  %335 = load i32, ptr %20, align 4, !tbaa !98
  %336 = sext i32 %335 to i64
  %337 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt6vectorIdSaIdEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %334, i64 noundef %336) #7
  %338 = load double, ptr %337, align 8, !tbaa !99
  %339 = fcmp oge double %338, 0.000000e+00
  br i1 %339, label %340, label %391

340:                                              ; preds = %331
  %341 = load ptr, ptr %44, align 8, !tbaa !5
  %342 = invoke noundef double @_ZNK17HighsSliceNonzero5valueEv(ptr noundef nonnull align 8 dereferenceable(16) %341)
          to label %343 unwind label %378

343:                                              ; preds = %340
  %344 = fcmp olt double %342, 0.000000e+00
  br i1 %344, label %345, label %391

345:                                              ; preds = %343
  call void @llvm.lifetime.start.p0(i64 8, ptr %47) #7
  %346 = getelementptr inbounds %"class.presolve::HPresolve", ptr %107, i32 0, i32 32
  %347 = load i32, ptr %45, align 4, !tbaa !98
  %348 = load i32, ptr %20, align 4, !tbaa !98
  %349 = load ptr, ptr %44, align 8, !tbaa !5
  %350 = invoke noundef double @_ZNK17HighsSliceNonzero5valueEv(ptr noundef nonnull align 8 dereferenceable(16) %349)
          to label %351 unwind label %382

351:                                              ; preds = %345
  %352 = invoke noundef double @_ZNK20HighsLinearSumBounds19getResidualSumUpperEiid(ptr noundef nonnull align 8 dereferenceable(240) %346, i32 noundef %347, i32 noundef %348, double noundef %350)
          to label %353 unwind label %382

353:                                              ; preds = %351
  store double %352, ptr %47, align 8, !tbaa !99
  call void @llvm.lifetime.start.p0(i64 8, ptr %48) #7
  %354 = getelementptr inbounds %"class.presolve::HPresolve", ptr %107, i32 0, i32 0
  %355 = load ptr, ptr %354, align 8, !tbaa !9
  %356 = getelementptr inbounds %class.HighsLp, ptr %355, i32 0, i32 6
  %357 = load i32, ptr %45, align 4, !tbaa !98
  %358 = sext i32 %357 to i64
  %359 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt6vectorIdSaIdEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %356, i64 noundef %358) #7
  %360 = load double, ptr %359, align 8, !tbaa !99
  %361 = load double, ptr %47, align 8, !tbaa !99
  %362 = fsub double %360, %361
  %363 = load ptr, ptr %44, align 8, !tbaa !5
  %364 = invoke noundef double @_ZNK17HighsSliceNonzero5valueEv(ptr noundef nonnull align 8 dereferenceable(16) %363)
          to label %365 unwind label %386

365:                                              ; preds = %353
  %366 = fdiv double %362, %364
  store double %366, ptr %48, align 8, !tbaa !99
  %367 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZSt3maxIdERKT_S2_S2_(ptr noundef nonnull align 8 dereferenceable(8) %48, ptr noundef nonnull align 8 dereferenceable(8) %36)
          to label %368 unwind label %386

368:                                              ; preds = %365
  %369 = load double, ptr %367, align 8, !tbaa !99
  store double %369, ptr %36, align 8, !tbaa !99
  call void @llvm.lifetime.end.p0(i64 8, ptr %48) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %47) #7
  br label %440

370:                                              ; preds = %304
  %371 = landingpad { ptr, i32 }
          cleanup
  %372 = extractvalue { ptr, i32 } %371, 0
  store ptr %372, ptr %8, align 8
  %373 = extractvalue { ptr, i32 } %371, 1
  store i32 %373, ptr %9, align 4
  br label %611

374:                                              ; preds = %306
  %375 = landingpad { ptr, i32 }
          cleanup
  %376 = extractvalue { ptr, i32 } %375, 0
  store ptr %376, ptr %8, align 8
  %377 = extractvalue { ptr, i32 } %375, 1
  store i32 %377, ptr %9, align 4
  br label %610

378:                                              ; preds = %507, %459, %400, %340
  %379 = landingpad { ptr, i32 }
          cleanup
  %380 = extractvalue { ptr, i32 } %379, 0
  store ptr %380, ptr %8, align 8
  %381 = extractvalue { ptr, i32 } %379, 1
  store i32 %381, ptr %9, align 4
  br label %609

382:                                              ; preds = %351, %345
  %383 = landingpad { ptr, i32 }
          cleanup
  %384 = extractvalue { ptr, i32 } %383, 0
  store ptr %384, ptr %8, align 8
  %385 = extractvalue { ptr, i32 } %383, 1
  store i32 %385, ptr %9, align 4
  br label %390

386:                                              ; preds = %365, %353
  %387 = landingpad { ptr, i32 }
          cleanup
  %388 = extractvalue { ptr, i32 } %387, 0
  store ptr %388, ptr %8, align 8
  %389 = extractvalue { ptr, i32 } %387, 1
  store i32 %389, ptr %9, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %48) #7
  br label %390

390:                                              ; preds = %386, %382
  call void @llvm.lifetime.end.p0(i64 8, ptr %47) #7
  br label %609

391:                                              ; preds = %343, %331
  %392 = getelementptr inbounds %"class.presolve::HPresolve", ptr %107, i32 0, i32 0
  %393 = load ptr, ptr %392, align 8, !tbaa !9
  %394 = getelementptr inbounds %class.HighsLp, ptr %393, i32 0, i32 2
  %395 = load i32, ptr %20, align 4, !tbaa !98
  %396 = sext i32 %395 to i64
  %397 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt6vectorIdSaIdEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %394, i64 noundef %396) #7
  %398 = load double, ptr %397, align 8, !tbaa !99
  %399 = fcmp ole double %398, 0.000000e+00
  br i1 %399, label %400, label %439

400:                                              ; preds = %391
  %401 = load ptr, ptr %44, align 8, !tbaa !5
  %402 = invoke noundef double @_ZNK17HighsSliceNonzero5valueEv(ptr noundef nonnull align 8 dereferenceable(16) %401)
          to label %403 unwind label %378

403:                                              ; preds = %400
  %404 = fcmp ogt double %402, 0.000000e+00
  br i1 %404, label %405, label %439

405:                                              ; preds = %403
  call void @llvm.lifetime.start.p0(i64 8, ptr %49) #7
  %406 = getelementptr inbounds %"class.presolve::HPresolve", ptr %107, i32 0, i32 32
  %407 = load i32, ptr %45, align 4, !tbaa !98
  %408 = load i32, ptr %20, align 4, !tbaa !98
  %409 = load ptr, ptr %44, align 8, !tbaa !5
  %410 = invoke noundef double @_ZNK17HighsSliceNonzero5valueEv(ptr noundef nonnull align 8 dereferenceable(16) %409)
          to label %411 unwind label %430

411:                                              ; preds = %405
  %412 = invoke noundef double @_ZNK20HighsLinearSumBounds19getResidualSumUpperEiid(ptr noundef nonnull align 8 dereferenceable(240) %406, i32 noundef %407, i32 noundef %408, double noundef %410)
          to label %413 unwind label %430

413:                                              ; preds = %411
  store double %412, ptr %49, align 8, !tbaa !99
  call void @llvm.lifetime.start.p0(i64 8, ptr %50) #7
  %414 = getelementptr inbounds %"class.presolve::HPresolve", ptr %107, i32 0, i32 0
  %415 = load ptr, ptr %414, align 8, !tbaa !9
  %416 = getelementptr inbounds %class.HighsLp, ptr %415, i32 0, i32 6
  %417 = load i32, ptr %45, align 4, !tbaa !98
  %418 = sext i32 %417 to i64
  %419 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt6vectorIdSaIdEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %416, i64 noundef %418) #7
  %420 = load double, ptr %419, align 8, !tbaa !99
  %421 = load double, ptr %49, align 8, !tbaa !99
  %422 = fsub double %420, %421
  %423 = load ptr, ptr %44, align 8, !tbaa !5
  %424 = invoke noundef double @_ZNK17HighsSliceNonzero5valueEv(ptr noundef nonnull align 8 dereferenceable(16) %423)
          to label %425 unwind label %434

425:                                              ; preds = %413
  %426 = fdiv double %422, %424
  store double %426, ptr %50, align 8, !tbaa !99
  %427 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZSt3minIdERKT_S2_S2_(ptr noundef nonnull align 8 dereferenceable(8) %50, ptr noundef nonnull align 8 dereferenceable(8) %37)
          to label %428 unwind label %434

428:                                              ; preds = %425
  %429 = load double, ptr %427, align 8, !tbaa !99
  store double %429, ptr %37, align 8, !tbaa !99
  call void @llvm.lifetime.end.p0(i64 8, ptr %50) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %49) #7
  br label %439

430:                                              ; preds = %411, %405
  %431 = landingpad { ptr, i32 }
          cleanup
  %432 = extractvalue { ptr, i32 } %431, 0
  store ptr %432, ptr %8, align 8
  %433 = extractvalue { ptr, i32 } %431, 1
  store i32 %433, ptr %9, align 4
  br label %438

434:                                              ; preds = %425, %413
  %435 = landingpad { ptr, i32 }
          cleanup
  %436 = extractvalue { ptr, i32 } %435, 0
  store ptr %436, ptr %8, align 8
  %437 = extractvalue { ptr, i32 } %435, 1
  store i32 %437, ptr %9, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %50) #7
  br label %438

438:                                              ; preds = %434, %430
  call void @llvm.lifetime.end.p0(i64 8, ptr %49) #7
  br label %609

439:                                              ; preds = %428, %403, %391
  br label %440

440:                                              ; preds = %439, %368
  br label %441

441:                                              ; preds = %440, %322
  %442 = getelementptr inbounds %"class.presolve::HPresolve", ptr %107, i32 0, i32 0
  %443 = load ptr, ptr %442, align 8, !tbaa !9
  %444 = getelementptr inbounds %class.HighsLp, ptr %443, i32 0, i32 5
  %445 = load i32, ptr %45, align 4, !tbaa !98
  %446 = sext i32 %445 to i64
  %447 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt6vectorIdSaIdEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %444, i64 noundef %446) #7
  %448 = load double, ptr %447, align 8, !tbaa !99
  %449 = fcmp une double %448, 0xFFF0000000000000
  br i1 %449, label %450, label %548

450:                                              ; preds = %441
  %451 = getelementptr inbounds %"class.presolve::HPresolve", ptr %107, i32 0, i32 0
  %452 = load ptr, ptr %451, align 8, !tbaa !9
  %453 = getelementptr inbounds %class.HighsLp, ptr %452, i32 0, i32 2
  %454 = load i32, ptr %20, align 4, !tbaa !98
  %455 = sext i32 %454 to i64
  %456 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt6vectorIdSaIdEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %453, i64 noundef %455) #7
  %457 = load double, ptr %456, align 8, !tbaa !99
  %458 = fcmp oge double %457, 0.000000e+00
  br i1 %458, label %459, label %498

459:                                              ; preds = %450
  %460 = load ptr, ptr %44, align 8, !tbaa !5
  %461 = invoke noundef double @_ZNK17HighsSliceNonzero5valueEv(ptr noundef nonnull align 8 dereferenceable(16) %460)
          to label %462 unwind label %378

462:                                              ; preds = %459
  %463 = fcmp ogt double %461, 0.000000e+00
  br i1 %463, label %464, label %498

464:                                              ; preds = %462
  call void @llvm.lifetime.start.p0(i64 8, ptr %51) #7
  %465 = getelementptr inbounds %"class.presolve::HPresolve", ptr %107, i32 0, i32 32
  %466 = load i32, ptr %45, align 4, !tbaa !98
  %467 = load i32, ptr %20, align 4, !tbaa !98
  %468 = load ptr, ptr %44, align 8, !tbaa !5
  %469 = invoke noundef double @_ZNK17HighsSliceNonzero5valueEv(ptr noundef nonnull align 8 dereferenceable(16) %468)
          to label %470 unwind label %489

470:                                              ; preds = %464
  %471 = invoke noundef double @_ZNK20HighsLinearSumBounds19getResidualSumLowerEiid(ptr noundef nonnull align 8 dereferenceable(240) %465, i32 noundef %466, i32 noundef %467, double noundef %469)
          to label %472 unwind label %489

472:                                              ; preds = %470
  store double %471, ptr %51, align 8, !tbaa !99
  call void @llvm.lifetime.start.p0(i64 8, ptr %52) #7
  %473 = getelementptr inbounds %"class.presolve::HPresolve", ptr %107, i32 0, i32 0
  %474 = load ptr, ptr %473, align 8, !tbaa !9
  %475 = getelementptr inbounds %class.HighsLp, ptr %474, i32 0, i32 5
  %476 = load i32, ptr %45, align 4, !tbaa !98
  %477 = sext i32 %476 to i64
  %478 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt6vectorIdSaIdEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %475, i64 noundef %477) #7
  %479 = load double, ptr %478, align 8, !tbaa !99
  %480 = load double, ptr %51, align 8, !tbaa !99
  %481 = fsub double %479, %480
  %482 = load ptr, ptr %44, align 8, !tbaa !5
  %483 = invoke noundef double @_ZNK17HighsSliceNonzero5valueEv(ptr noundef nonnull align 8 dereferenceable(16) %482)
          to label %484 unwind label %493

484:                                              ; preds = %472
  %485 = fdiv double %481, %483
  store double %485, ptr %52, align 8, !tbaa !99
  %486 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZSt3maxIdERKT_S2_S2_(ptr noundef nonnull align 8 dereferenceable(8) %52, ptr noundef nonnull align 8 dereferenceable(8) %36)
          to label %487 unwind label %493

487:                                              ; preds = %484
  %488 = load double, ptr %486, align 8, !tbaa !99
  store double %488, ptr %36, align 8, !tbaa !99
  call void @llvm.lifetime.end.p0(i64 8, ptr %52) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %51) #7
  br label %547

489:                                              ; preds = %470, %464
  %490 = landingpad { ptr, i32 }
          cleanup
  %491 = extractvalue { ptr, i32 } %490, 0
  store ptr %491, ptr %8, align 8
  %492 = extractvalue { ptr, i32 } %490, 1
  store i32 %492, ptr %9, align 4
  br label %497

493:                                              ; preds = %484, %472
  %494 = landingpad { ptr, i32 }
          cleanup
  %495 = extractvalue { ptr, i32 } %494, 0
  store ptr %495, ptr %8, align 8
  %496 = extractvalue { ptr, i32 } %494, 1
  store i32 %496, ptr %9, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %52) #7
  br label %497

497:                                              ; preds = %493, %489
  call void @llvm.lifetime.end.p0(i64 8, ptr %51) #7
  br label %609

498:                                              ; preds = %462, %450
  %499 = getelementptr inbounds %"class.presolve::HPresolve", ptr %107, i32 0, i32 0
  %500 = load ptr, ptr %499, align 8, !tbaa !9
  %501 = getelementptr inbounds %class.HighsLp, ptr %500, i32 0, i32 2
  %502 = load i32, ptr %20, align 4, !tbaa !98
  %503 = sext i32 %502 to i64
  %504 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt6vectorIdSaIdEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %501, i64 noundef %503) #7
  %505 = load double, ptr %504, align 8, !tbaa !99
  %506 = fcmp ole double %505, 0.000000e+00
  br i1 %506, label %507, label %546

507:                                              ; preds = %498
  %508 = load ptr, ptr %44, align 8, !tbaa !5
  %509 = invoke noundef double @_ZNK17HighsSliceNonzero5valueEv(ptr noundef nonnull align 8 dereferenceable(16) %508)
          to label %510 unwind label %378

510:                                              ; preds = %507
  %511 = fcmp olt double %509, 0.000000e+00
  br i1 %511, label %512, label %546

512:                                              ; preds = %510
  call void @llvm.lifetime.start.p0(i64 8, ptr %53) #7
  %513 = getelementptr inbounds %"class.presolve::HPresolve", ptr %107, i32 0, i32 32
  %514 = load i32, ptr %45, align 4, !tbaa !98
  %515 = load i32, ptr %20, align 4, !tbaa !98
  %516 = load ptr, ptr %44, align 8, !tbaa !5
  %517 = invoke noundef double @_ZNK17HighsSliceNonzero5valueEv(ptr noundef nonnull align 8 dereferenceable(16) %516)
          to label %518 unwind label %537

518:                                              ; preds = %512
  %519 = invoke noundef double @_ZNK20HighsLinearSumBounds19getResidualSumLowerEiid(ptr noundef nonnull align 8 dereferenceable(240) %513, i32 noundef %514, i32 noundef %515, double noundef %517)
          to label %520 unwind label %537

520:                                              ; preds = %518
  store double %519, ptr %53, align 8, !tbaa !99
  call void @llvm.lifetime.start.p0(i64 8, ptr %54) #7
  %521 = getelementptr inbounds %"class.presolve::HPresolve", ptr %107, i32 0, i32 0
  %522 = load ptr, ptr %521, align 8, !tbaa !9
  %523 = getelementptr inbounds %class.HighsLp, ptr %522, i32 0, i32 5
  %524 = load i32, ptr %45, align 4, !tbaa !98
  %525 = sext i32 %524 to i64
  %526 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt6vectorIdSaIdEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %523, i64 noundef %525) #7
  %527 = load double, ptr %526, align 8, !tbaa !99
  %528 = load double, ptr %53, align 8, !tbaa !99
  %529 = fsub double %527, %528
  %530 = load ptr, ptr %44, align 8, !tbaa !5
  %531 = invoke noundef double @_ZNK17HighsSliceNonzero5valueEv(ptr noundef nonnull align 8 dereferenceable(16) %530)
          to label %532 unwind label %541

532:                                              ; preds = %520
  %533 = fdiv double %529, %531
  store double %533, ptr %54, align 8, !tbaa !99
  %534 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZSt3minIdERKT_S2_S2_(ptr noundef nonnull align 8 dereferenceable(8) %54, ptr noundef nonnull align 8 dereferenceable(8) %37)
          to label %535 unwind label %541

535:                                              ; preds = %532
  %536 = load double, ptr %534, align 8, !tbaa !99
  store double %536, ptr %37, align 8, !tbaa !99
  call void @llvm.lifetime.end.p0(i64 8, ptr %54) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %53) #7
  br label %546

537:                                              ; preds = %518, %512
  %538 = landingpad { ptr, i32 }
          cleanup
  %539 = extractvalue { ptr, i32 } %538, 0
  store ptr %539, ptr %8, align 8
  %540 = extractvalue { ptr, i32 } %538, 1
  store i32 %540, ptr %9, align 4
  br label %545

541:                                              ; preds = %532, %520
  %542 = landingpad { ptr, i32 }
          cleanup
  %543 = extractvalue { ptr, i32 } %542, 0
  store ptr %543, ptr %8, align 8
  %544 = extractvalue { ptr, i32 } %542, 1
  store i32 %544, ptr %9, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %54) #7
  br label %545

545:                                              ; preds = %541, %537
  call void @llvm.lifetime.end.p0(i64 8, ptr %53) #7
  br label %609

546:                                              ; preds = %535, %510, %498
  br label %547

547:                                              ; preds = %546, %487
  br label %548

548:                                              ; preds = %547, %441
  br label %549

549:                                              ; preds = %548, %309
  call void @llvm.lifetime.start.p0(i64 8, ptr %55) #7
  %550 = load i32, ptr %46, align 4, !tbaa !98
  %551 = sitofp i32 %550 to double
  %552 = load ptr, ptr %44, align 8, !tbaa !5
  %553 = invoke noundef double @_ZNK17HighsSliceNonzero5valueEv(ptr noundef nonnull align 8 dereferenceable(16) %552)
          to label %554 unwind label %578

554:                                              ; preds = %549
  %555 = fmul double %551, %553
  store double %555, ptr %55, align 8, !tbaa !99
  %556 = load i8, ptr %38, align 1, !tbaa !100, !range !101, !noundef !102
  %557 = trunc i8 %556 to i1
  br i1 %557, label %558, label %582

558:                                              ; preds = %554
  %559 = load double, ptr %55, align 8, !tbaa !99
  %560 = fcmp ogt double %559, 0.000000e+00
  br i1 %560, label %561, label %582

561:                                              ; preds = %558
  %562 = getelementptr inbounds %"class.presolve::HPresolve", ptr %107, i32 0, i32 14
  %563 = load i32, ptr %45, align 4, !tbaa !98
  %564 = sext i32 %563 to i64
  %565 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNSt6vectorIiSaIiEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %562, i64 noundef %564) #7
  %566 = load i32, ptr %565, align 4, !tbaa !98
  %567 = load i32, ptr %29, align 4, !tbaa !98
  %568 = icmp slt i32 %566, %567
  br i1 %568, label %569, label %582

569:                                              ; preds = %561
  %570 = load i32, ptr %45, align 4, !tbaa !98
  store i32 %570, ptr %28, align 4, !tbaa !98
  %571 = getelementptr inbounds %"class.presolve::HPresolve", ptr %107, i32 0, i32 14
  %572 = load i32, ptr %45, align 4, !tbaa !98
  %573 = sext i32 %572 to i64
  %574 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNSt6vectorIiSaIiEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %571, i64 noundef %573) #7
  %575 = load i32, ptr %574, align 4, !tbaa !98
  store i32 %575, ptr %29, align 4, !tbaa !98
  %576 = load i32, ptr %46, align 4, !tbaa !98
  store i32 %576, ptr %30, align 4, !tbaa !98
  %577 = load double, ptr %55, align 8, !tbaa !99
  store double %577, ptr %31, align 8, !tbaa !99
  br label %582

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

582:                                              ; preds = %569, %561, %558, %554
  %583 = load i8, ptr %39, align 1, !tbaa !100, !range !101, !noundef !102
  %584 = trunc i8 %583 to i1
  br i1 %584, label %585, label %605

585:                                              ; preds = %582
  %586 = load double, ptr %55, align 8, !tbaa !99
  %587 = fcmp olt double %586, 0.000000e+00
  br i1 %587, label %588, label %605

588:                                              ; preds = %585
  %589 = getelementptr inbounds %"class.presolve::HPresolve", ptr %107, i32 0, i32 14
  %590 = load i32, ptr %45, align 4, !tbaa !98
  %591 = sext i32 %590 to i64
  %592 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNSt6vectorIiSaIiEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %589, i64 noundef %591) #7
  %593 = load i32, ptr %592, align 4, !tbaa !98
  %594 = load i32, ptr %33, align 4, !tbaa !98
  %595 = icmp slt i32 %593, %594
  br i1 %595, label %596, label %605

596:                                              ; preds = %588
  %597 = load i32, ptr %45, align 4, !tbaa !98
  store i32 %597, ptr %32, align 4, !tbaa !98
  %598 = getelementptr inbounds %"class.presolve::HPresolve", ptr %107, i32 0, i32 14
  %599 = load i32, ptr %45, align 4, !tbaa !98
  %600 = sext i32 %599 to i64
  %601 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNSt6vectorIiSaIiEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %598, i64 noundef %600) #7
  %602 = load i32, ptr %601, align 4, !tbaa !98
  store i32 %602, ptr %33, align 4, !tbaa !98
  %603 = load i32, ptr %46, align 4, !tbaa !98
  store i32 %603, ptr %34, align 4, !tbaa !98
  %604 = load double, ptr %55, align 8, !tbaa !99
  store double %604, ptr %35, align 8, !tbaa !99
  br label %605

605:                                              ; preds = %596, %588, %585, %582
  call void @llvm.lifetime.end.p0(i64 8, ptr %55) #7
  call void @llvm.lifetime.end.p0(i64 4, ptr %46) #7
  call void @llvm.lifetime.end.p0(i64 4, ptr %45) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %44) #7
  br label %606

606:                                              ; preds = %605
  %607 = invoke noundef nonnull align 8 dereferenceable(28) ptr @_ZN16HighsMatrixSliceI21HighsTripletListSliceE8iteratorppEv(ptr noundef nonnull align 8 dereferenceable(28) %42)
          to label %608 unwind label %300

608:                                              ; preds = %606
  br label %288

609:                                              ; preds = %578, %545, %497, %438, %390, %378
  call void @llvm.lifetime.end.p0(i64 4, ptr %46) #7
  br label %610

610:                                              ; preds = %609, %374
  call void @llvm.lifetime.end.p0(i64 4, ptr %45) #7
  br label %611

611:                                              ; preds = %610, %370
  call void @llvm.lifetime.end.p0(i64 8, ptr %44) #7
  br label %612

612:                                              ; preds = %611, %300
  call void @llvm.lifetime.end.p0(i64 32, ptr %43) #7
  br label %613

613:                                              ; preds = %612, %296
  call void @llvm.lifetime.end.p0(i64 32, ptr %42) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr %41) #7
  br label %614

614:                                              ; preds = %613, %292
  call void @llvm.lifetime.end.p0(i64 8, ptr %40) #7
  br label %1766

615:                                              ; preds = %291
  %616 = load i8, ptr %26, align 1, !tbaa !100, !range !101, !noundef !102
  %617 = trunc i8 %616 to i1
  br i1 %617, label %618, label %1165

618:                                              ; preds = %615
  %619 = getelementptr inbounds %"class.presolve::HPresolve", ptr %107, i32 0, i32 0
  %620 = load ptr, ptr %619, align 8, !tbaa !9
  %621 = getelementptr inbounds %class.HighsLp, ptr %620, i32 0, i32 2
  %622 = load i32, ptr %20, align 4, !tbaa !98
  %623 = sext i32 %622 to i64
  %624 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt6vectorIdSaIdEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %621, i64 noundef %623) #7
  %625 = load double, ptr %624, align 8, !tbaa !99
  %626 = fcmp oge double %625, 0.000000e+00
  br i1 %626, label %627, label %888

627:                                              ; preds = %618
  %628 = load double, ptr %36, align 8, !tbaa !99
  %629 = getelementptr inbounds %"class.presolve::HPresolve", ptr %107, i32 0, i32 4
  %630 = load double, ptr %629, align 8, !tbaa !107
  %631 = fadd double 1.000000e+00, %630
  %632 = fcmp ole double %628, %631
  br i1 %632, label %633, label %888

633:                                              ; preds = %627
  store i8 1, ptr %22, align 1, !tbaa !100
  %634 = load i8, ptr %23, align 1, !tbaa !100, !range !101, !noundef !102
  %635 = trunc i8 %634 to i1
  br i1 %635, label %887, label %636

636:                                              ; preds = %633
  %637 = load i32, ptr %32, align 4, !tbaa !98
  %638 = icmp ne i32 %637, -1
  br i1 %638, label %639, label %887

639:                                              ; preds = %636
  %640 = load i32, ptr %32, align 4, !tbaa !98
  invoke void @_ZN8presolve9HPresolve8storeRowEi(ptr noundef nonnull align 8 dereferenceable(1720) %107, i32 noundef %640)
          to label %641 unwind label %671

641:                                              ; preds = %639
  call void @llvm.lifetime.start.p0(i64 1, ptr %56) #7
  %642 = getelementptr inbounds %"class.presolve::HPresolve", ptr %107, i32 0, i32 0
  %643 = load ptr, ptr %642, align 8, !tbaa !9
  %644 = getelementptr inbounds %class.HighsLp, ptr %643, i32 0, i32 5
  %645 = load i32, ptr %32, align 4, !tbaa !98
  %646 = sext i32 %645 to i64
  %647 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt6vectorIdSaIdEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %644, i64 noundef %646) #7
  %648 = load double, ptr %647, align 8, !tbaa !99
  %649 = fcmp une double %648, 0xFFF0000000000000
  br i1 %649, label %650, label %659

650:                                              ; preds = %641
  %651 = getelementptr inbounds %"class.presolve::HPresolve", ptr %107, i32 0, i32 0
  %652 = load ptr, ptr %651, align 8, !tbaa !9
  %653 = getelementptr inbounds %class.HighsLp, ptr %652, i32 0, i32 6
  %654 = load i32, ptr %32, align 4, !tbaa !98
  %655 = sext i32 %654 to i64
  %656 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt6vectorIdSaIdEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %653, i64 noundef %655) #7
  %657 = load double, ptr %656, align 8, !tbaa !99
  %658 = fcmp une double %657, 0x7FF0000000000000
  br label %659

659:                                              ; preds = %650, %641
  %660 = phi i1 [ false, %641 ], [ %658, %650 ]
  %661 = zext i1 %660 to i8
  store i8 %661, ptr %56, align 1, !tbaa !100
  call void @llvm.lifetime.start.p0(i64 8, ptr %57) #7
  call void @llvm.lifetime.start.p0(i64 32, ptr %58) #7
  invoke void @_ZNK8presolve9HPresolve12getStoredRowEv(ptr dead_on_unwind writable sret(%struct.HighsTripletPositionSlice) align 8 %58, ptr noundef nonnull align 8 dereferenceable(1720) %107)
          to label %662 unwind label %675

662:                                              ; preds = %659
  store ptr %58, ptr %57, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 32, ptr %59) #7
  %663 = load ptr, ptr %57, align 8, !tbaa !5
  invoke void @_ZNK16HighsMatrixSliceI25HighsTripletPositionSliceE5beginEv(ptr dead_on_unwind writable sret(%"class.HighsMatrixSlice<HighsTripletPositionSlice>::iterator") align 8 %59, ptr noundef nonnull align 8 dereferenceable(28) %663)
          to label %664 unwind label %679

664:                                              ; preds = %662
  call void @llvm.lifetime.start.p0(i64 32, ptr %60) #7
  %665 = load ptr, ptr %57, align 8, !tbaa !5
  invoke void @_ZNK16HighsMatrixSliceI25HighsTripletPositionSliceE3endEv(ptr dead_on_unwind writable sret(%"class.HighsMatrixSlice<HighsTripletPositionSlice>::iterator") align 8 %60, ptr noundef nonnull align 8 dereferenceable(28) %665)
          to label %666 unwind label %683

666:                                              ; preds = %664
  br label %667

667:                                              ; preds = %847, %666
  %668 = invoke noundef zeroext i1 @_ZNK16HighsMatrixSliceI25HighsTripletPositionSliceE8iteratorneERKS2_(ptr noundef nonnull align 8 dereferenceable(28) %59, ptr noundef nonnull align 8 dereferenceable(28) %60)
          to label %669 unwind label %683

669:                                              ; preds = %667
  br i1 %668, label %687, label %670

670:                                              ; preds = %669
  store i32 10, ptr %21, align 4
  br label %851

671:                                              ; preds = %1462, %1179, %909, %639
  %672 = landingpad { ptr, i32 }
          cleanup
  %673 = extractvalue { ptr, i32 } %672, 0
  store ptr %673, ptr %8, align 8
  %674 = extractvalue { ptr, i32 } %672, 1
  store i32 %674, ptr %9, align 4
  br label %1766

675:                                              ; preds = %659
  %676 = landingpad { ptr, i32 }
          cleanup
  %677 = extractvalue { ptr, i32 } %676, 0
  store ptr %677, ptr %8, align 8
  %678 = extractvalue { ptr, i32 } %676, 1
  store i32 %678, ptr %9, align 4
  br label %855

679:                                              ; preds = %662
  %680 = landingpad { ptr, i32 }
          cleanup
  %681 = extractvalue { ptr, i32 } %680, 0
  store ptr %681, ptr %8, align 8
  %682 = extractvalue { ptr, i32 } %680, 1
  store i32 %682, ptr %9, align 4
  br label %854

683:                                              ; preds = %845, %667, %664
  %684 = landingpad { ptr, i32 }
          cleanup
  %685 = extractvalue { ptr, i32 } %684, 0
  store ptr %685, ptr %8, align 8
  %686 = extractvalue { ptr, i32 } %684, 1
  store i32 %686, ptr %9, align 4
  br label %853

687:                                              ; preds = %669
  call void @llvm.lifetime.start.p0(i64 8, ptr %61) #7
  %688 = invoke noundef nonnull align 8 dereferenceable(16) ptr @_ZN16HighsMatrixSliceI25HighsTripletPositionSliceE8iteratordeEv(ptr noundef nonnull align 8 dereferenceable(28) %59)
          to label %689 unwind label %704

689:                                              ; preds = %687
  store ptr %688, ptr %61, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 4, ptr %62) #7
  %690 = load ptr, ptr %61, align 8, !tbaa !5
  %691 = invoke noundef i32 @_ZNK17HighsSliceNonzero5indexEv(ptr noundef nonnull align 8 dereferenceable(16) %690)
          to label %692 unwind label %708

692:                                              ; preds = %689
  store i32 %691, ptr %62, align 4, !tbaa !98
  %693 = load i32, ptr %62, align 4, !tbaa !98
  %694 = load i32, ptr %20, align 4, !tbaa !98
  %695 = icmp eq i32 %693, %694
  br i1 %695, label %703, label %696

696:                                              ; preds = %692
  %697 = getelementptr inbounds %"class.presolve::HPresolve", ptr %107, i32 0, i32 47
  %698 = load i32, ptr %62, align 4, !tbaa !98
  %699 = sext i32 %698 to i64
  %700 = call noundef nonnull align 1 dereferenceable(1) ptr @_ZNSt6vectorIhSaIhEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %697, i64 noundef %699) #7
  %701 = load i8, ptr %700, align 1, !tbaa !105
  %702 = icmp ne i8 %701, 0
  br i1 %702, label %703, label %712

703:                                              ; preds = %696, %692
  store i32 11, ptr %21, align 4
  br label %839

704:                                              ; preds = %687
  %705 = landingpad { ptr, i32 }
          cleanup
  %706 = extractvalue { ptr, i32 } %705, 0
  store ptr %706, ptr %8, align 8
  %707 = extractvalue { ptr, i32 } %705, 1
  store i32 %707, ptr %9, align 4
  br label %850

708:                                              ; preds = %689
  %709 = landingpad { ptr, i32 }
          cleanup
  %710 = extractvalue { ptr, i32 } %709, 0
  store ptr %710, ptr %8, align 8
  %711 = extractvalue { ptr, i32 } %709, 1
  store i32 %711, ptr %9, align 4
  br label %849

712:                                              ; preds = %696
  call void @llvm.lifetime.start.p0(i64 8, ptr %63) #7
  %713 = load ptr, ptr %61, align 8, !tbaa !5
  %714 = invoke noundef double @_ZNK17HighsSliceNonzero5valueEv(ptr noundef nonnull align 8 dereferenceable(16) %713)
          to label %715 unwind label %757

715:                                              ; preds = %712
  %716 = load i32, ptr %34, align 4, !tbaa !98
  %717 = sitofp i32 %716 to double
  %718 = fmul double %714, %717
  store double %718, ptr %63, align 8, !tbaa !99
  %719 = load double, ptr %35, align 8, !tbaa !99
  %720 = fneg double %719
  %721 = load double, ptr %63, align 8, !tbaa !99
  %722 = fneg double %721
  %723 = getelementptr inbounds %"class.presolve::HPresolve", ptr %107, i32 0, i32 1
  %724 = load ptr, ptr %723, align 8, !tbaa !108
  %725 = getelementptr inbounds %struct.HighsOptionsStruct, ptr %724, i32 0, i32 12
  %726 = load double, ptr %725, align 8, !tbaa !109
  %727 = fadd double %722, %726
  %728 = fcmp ole double %720, %727
  br i1 %728, label %729, label %780

729:                                              ; preds = %715
  %730 = load i8, ptr %56, align 1, !tbaa !100, !range !101, !noundef !102
  %731 = trunc i8 %730 to i1
  br i1 %731, label %732, label %743

732:                                              ; preds = %729
  %733 = load double, ptr %35, align 8, !tbaa !99
  %734 = fneg double %733
  %735 = load double, ptr %63, align 8, !tbaa !99
  %736 = fneg double %735
  %737 = getelementptr inbounds %"class.presolve::HPresolve", ptr %107, i32 0, i32 1
  %738 = load ptr, ptr %737, align 8, !tbaa !108
  %739 = getelementptr inbounds %struct.HighsOptionsStruct, ptr %738, i32 0, i32 12
  %740 = load double, ptr %739, align 8, !tbaa !109
  %741 = fsub double %736, %740
  %742 = fcmp oge double %734, %741
  br i1 %742, label %743, label %780

743:                                              ; preds = %732, %729
  %744 = load i32, ptr %20, align 4, !tbaa !98
  %745 = load i32, ptr %62, align 4, !tbaa !98
  %746 = invoke noundef zeroext i1 @"_ZZN8presolve9HPresolve16dominatedColumnsERNS_19HighsPostsolveStackEENK3$_2clEiiii"(ptr noundef nonnull align 8 dereferenceable(16) %12, i32 noundef -1, i32 noundef %744, i32 noundef -1, i32 noundef %745)
          to label %747 unwind label %757

747:                                              ; preds = %743
  br i1 %746, label %748, label %780

748:                                              ; preds = %747
  %749 = load i32, ptr %19, align 4, !tbaa !98
  %750 = add nsw i32 %749, 1
  store i32 %750, ptr %19, align 4, !tbaa !98
  %751 = load ptr, ptr %5, align 8, !tbaa !5
  %752 = load i32, ptr %20, align 4, !tbaa !98
  %753 = invoke noundef zeroext i1 @_ZN8presolve9HPresolve24fixColToLowerOrUnboundedERNS_19HighsPostsolveStackEi(ptr noundef nonnull align 8 dereferenceable(1720) %107, ptr noundef nonnull align 8 dereferenceable(224) %751, i32 noundef %752)
          to label %754 unwind label %757

754:                                              ; preds = %748
  br i1 %753, label %755, label %761

755:                                              ; preds = %754
  %756 = getelementptr inbounds %"class.presolve::HPresolve", ptr %107, i32 0, i32 57
  store i32 2, ptr %756, align 4, !tbaa !114
  store i32 2, ptr %3, align 4
  store i32 1, ptr %21, align 4
  br label %838

757:                                              ; preds = %808, %803, %748, %743, %712
  %758 = landingpad { ptr, i32 }
          cleanup
  %759 = extractvalue { ptr, i32 } %758, 0
  store ptr %759, ptr %8, align 8
  %760 = extractvalue { ptr, i32 } %758, 1
  store i32 %760, ptr %9, align 4
  br label %848

761:                                              ; preds = %754
  br label %762

762:                                              ; preds = %761
  call void @llvm.lifetime.start.p0(i64 4, ptr %64) #7
  %763 = load ptr, ptr %5, align 8, !tbaa !5
  %764 = invoke noundef i32 @_ZN8presolve9HPresolve19removeRowSingletonsERNS_19HighsPostsolveStackE(ptr noundef nonnull align 8 dereferenceable(1720) %107, ptr noundef nonnull align 8 dereferenceable(224) %763)
          to label %765 unwind label %770

765:                                              ; preds = %762
  store i32 %764, ptr %64, align 4, !tbaa !115
  %766 = load i32, ptr %64, align 4, !tbaa !115
  %767 = icmp ne i32 %766, 0
  br i1 %767, label %768, label %774

768:                                              ; preds = %765
  %769 = load i32, ptr %64, align 4, !tbaa !115
  store i32 %769, ptr %3, align 4
  store i32 1, ptr %21, align 4
  br label %775

770:                                              ; preds = %762
  %771 = landingpad { ptr, i32 }
          cleanup
  %772 = extractvalue { ptr, i32 } %771, 0
  store ptr %772, ptr %8, align 8
  %773 = extractvalue { ptr, i32 } %771, 1
  store i32 %773, ptr %9, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %64) #7
  br label %848

774:                                              ; preds = %765
  store i32 0, ptr %21, align 4
  br label %775

775:                                              ; preds = %774, %768
  call void @llvm.lifetime.end.p0(i64 4, ptr %64) #7
  %776 = load i32, ptr %21, align 4
  switch i32 %776, label %838 [
    i32 0, label %777
  ]

777:                                              ; preds = %775
  br label %778

778:                                              ; preds = %777
  br label %779

779:                                              ; preds = %778
  store i32 10, ptr %21, align 4
  br label %838

780:                                              ; preds = %747, %732, %715
  %781 = load double, ptr %35, align 8, !tbaa !99
  %782 = fneg double %781
  %783 = load double, ptr %63, align 8, !tbaa !99
  %784 = getelementptr inbounds %"class.presolve::HPresolve", ptr %107, i32 0, i32 1
  %785 = load ptr, ptr %784, align 8, !tbaa !108
  %786 = getelementptr inbounds %struct.HighsOptionsStruct, ptr %785, i32 0, i32 12
  %787 = load double, ptr %786, align 8, !tbaa !109
  %788 = fadd double %783, %787
  %789 = fcmp ole double %782, %788
  br i1 %789, label %790, label %836

790:                                              ; preds = %780
  %791 = load i8, ptr %56, align 1, !tbaa !100, !range !101, !noundef !102
  %792 = trunc i8 %791 to i1
  br i1 %792, label %793, label %803

793:                                              ; preds = %790
  %794 = load double, ptr %35, align 8, !tbaa !99
  %795 = fneg double %794
  %796 = load double, ptr %63, align 8, !tbaa !99
  %797 = getelementptr inbounds %"class.presolve::HPresolve", ptr %107, i32 0, i32 1
  %798 = load ptr, ptr %797, align 8, !tbaa !108
  %799 = getelementptr inbounds %struct.HighsOptionsStruct, ptr %798, i32 0, i32 12
  %800 = load double, ptr %799, align 8, !tbaa !109
  %801 = fsub double %796, %800
  %802 = fcmp oge double %795, %801
  br i1 %802, label %803, label %836

803:                                              ; preds = %793, %790
  %804 = load i32, ptr %20, align 4, !tbaa !98
  %805 = load i32, ptr %62, align 4, !tbaa !98
  %806 = invoke noundef zeroext i1 @"_ZZN8presolve9HPresolve16dominatedColumnsERNS_19HighsPostsolveStackEENK3$_2clEiiii"(ptr noundef nonnull align 8 dereferenceable(16) %12, i32 noundef -1, i32 noundef %804, i32 noundef 1, i32 noundef %805)
          to label %807 unwind label %757

807:                                              ; preds = %803
  br i1 %806, label %808, label %836

808:                                              ; preds = %807
  %809 = load i32, ptr %19, align 4, !tbaa !98
  %810 = add nsw i32 %809, 1
  store i32 %810, ptr %19, align 4, !tbaa !98
  %811 = load ptr, ptr %5, align 8, !tbaa !5
  %812 = load i32, ptr %20, align 4, !tbaa !98
  %813 = invoke noundef zeroext i1 @_ZN8presolve9HPresolve24fixColToLowerOrUnboundedERNS_19HighsPostsolveStackEi(ptr noundef nonnull align 8 dereferenceable(1720) %107, ptr noundef nonnull align 8 dereferenceable(224) %811, i32 noundef %812)
          to label %814 unwind label %757

814:                                              ; preds = %808
  br i1 %813, label %815, label %817

815:                                              ; preds = %814
  %816 = getelementptr inbounds %"class.presolve::HPresolve", ptr %107, i32 0, i32 57
  store i32 2, ptr %816, align 4, !tbaa !114
  store i32 2, ptr %3, align 4
  store i32 1, ptr %21, align 4
  br label %838

817:                                              ; preds = %814
  br label %818

818:                                              ; preds = %817
  call void @llvm.lifetime.start.p0(i64 4, ptr %65) #7
  %819 = load ptr, ptr %5, align 8, !tbaa !5
  %820 = invoke noundef i32 @_ZN8presolve9HPresolve19removeRowSingletonsERNS_19HighsPostsolveStackE(ptr noundef nonnull align 8 dereferenceable(1720) %107, ptr noundef nonnull align 8 dereferenceable(224) %819)
          to label %821 unwind label %826

821:                                              ; preds = %818
  store i32 %820, ptr %65, align 4, !tbaa !115
  %822 = load i32, ptr %65, align 4, !tbaa !115
  %823 = icmp ne i32 %822, 0
  br i1 %823, label %824, label %830

824:                                              ; preds = %821
  %825 = load i32, ptr %65, align 4, !tbaa !115
  store i32 %825, ptr %3, align 4
  store i32 1, ptr %21, align 4
  br label %831

826:                                              ; preds = %818
  %827 = landingpad { ptr, i32 }
          cleanup
  %828 = extractvalue { ptr, i32 } %827, 0
  store ptr %828, ptr %8, align 8
  %829 = extractvalue { ptr, i32 } %827, 1
  store i32 %829, ptr %9, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %65) #7
  br label %848

830:                                              ; preds = %821
  store i32 0, ptr %21, align 4
  br label %831

831:                                              ; preds = %830, %824
  call void @llvm.lifetime.end.p0(i64 4, ptr %65) #7
  %832 = load i32, ptr %21, align 4
  switch i32 %832, label %838 [
    i32 0, label %833
  ]

833:                                              ; preds = %831
  br label %834

834:                                              ; preds = %833
  br label %835

835:                                              ; preds = %834
  store i32 10, ptr %21, align 4
  br label %838

836:                                              ; preds = %807, %793, %780
  br label %837

837:                                              ; preds = %836
  store i32 0, ptr %21, align 4
  br label %838

838:                                              ; preds = %837, %835, %831, %815, %779, %775, %755
  call void @llvm.lifetime.end.p0(i64 8, ptr %63) #7
  br label %839

839:                                              ; preds = %838, %703
  call void @llvm.lifetime.end.p0(i64 4, ptr %62) #7
  %840 = load i32, ptr %21, align 4
  switch i32 %840, label %842 [
    i32 0, label %841
  ]

841:                                              ; preds = %839
  store i32 0, ptr %21, align 4
  br label %842

842:                                              ; preds = %841, %839
  call void @llvm.lifetime.end.p0(i64 8, ptr %61) #7
  %843 = load i32, ptr %21, align 4
  switch i32 %843, label %851 [
    i32 0, label %844
    i32 11, label %845
  ]

844:                                              ; preds = %842
  br label %845

845:                                              ; preds = %844, %842
  %846 = invoke noundef nonnull align 8 dereferenceable(28) ptr @_ZN16HighsMatrixSliceI25HighsTripletPositionSliceE8iteratorppEv(ptr noundef nonnull align 8 dereferenceable(28) %59)
          to label %847 unwind label %683

847:                                              ; preds = %845
  br label %667

848:                                              ; preds = %826, %770, %757
  call void @llvm.lifetime.end.p0(i64 8, ptr %63) #7
  br label %849

849:                                              ; preds = %848, %708
  call void @llvm.lifetime.end.p0(i64 4, ptr %62) #7
  br label %850

850:                                              ; preds = %849, %704
  call void @llvm.lifetime.end.p0(i64 8, ptr %61) #7
  br label %853

851:                                              ; preds = %842, %670
  call void @llvm.lifetime.end.p0(i64 32, ptr %60) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr %59) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr %58) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %57) #7
  %852 = load i32, ptr %21, align 4
  switch i32 %852, label %883 [
    i32 10, label %856
  ]

853:                                              ; preds = %850, %683
  call void @llvm.lifetime.end.p0(i64 32, ptr %60) #7
  br label %854

854:                                              ; preds = %853, %679
  call void @llvm.lifetime.end.p0(i64 32, ptr %59) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr %58) #7
  br label %855

855:                                              ; preds = %854, %675
  call void @llvm.lifetime.end.p0(i64 8, ptr %57) #7
  br label %886

856:                                              ; preds = %851
  %857 = getelementptr inbounds %"class.presolve::HPresolve", ptr %107, i32 0, i32 47
  %858 = load i32, ptr %20, align 4, !tbaa !98
  %859 = sext i32 %858 to i64
  %860 = call noundef nonnull align 1 dereferenceable(1) ptr @_ZNSt6vectorIhSaIhEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %857, i64 noundef %859) #7
  %861 = load i8, ptr %860, align 1, !tbaa !105
  %862 = icmp ne i8 %861, 0
  br i1 %862, label %863, label %882

863:                                              ; preds = %856
  br label %864

864:                                              ; preds = %863
  call void @llvm.lifetime.start.p0(i64 4, ptr %66) #7
  %865 = load ptr, ptr %5, align 8, !tbaa !5
  %866 = invoke noundef i32 @_ZN8presolve9HPresolve24removeDoubletonEquationsERNS_19HighsPostsolveStackE(ptr noundef nonnull align 8 dereferenceable(1720) %107, ptr noundef nonnull align 8 dereferenceable(224) %865)
          to label %867 unwind label %872

867:                                              ; preds = %864
  store i32 %866, ptr %66, align 4, !tbaa !115
  %868 = load i32, ptr %66, align 4, !tbaa !115
  %869 = icmp ne i32 %868, 0
  br i1 %869, label %870, label %876

870:                                              ; preds = %867
  %871 = load i32, ptr %66, align 4, !tbaa !115
  store i32 %871, ptr %3, align 4
  store i32 1, ptr %21, align 4
  br label %877

872:                                              ; preds = %864
  %873 = landingpad { ptr, i32 }
          cleanup
  %874 = extractvalue { ptr, i32 } %873, 0
  store ptr %874, ptr %8, align 8
  %875 = extractvalue { ptr, i32 } %873, 1
  store i32 %875, ptr %9, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %66) #7
  br label %886

876:                                              ; preds = %867
  store i32 0, ptr %21, align 4
  br label %877

877:                                              ; preds = %876, %870
  call void @llvm.lifetime.end.p0(i64 4, ptr %66) #7
  %878 = load i32, ptr %21, align 4
  switch i32 %878, label %883 [
    i32 0, label %879
  ]

879:                                              ; preds = %877
  br label %880

880:                                              ; preds = %879
  br label %881

881:                                              ; preds = %880
  store i32 7, ptr %21, align 4
  br label %883

882:                                              ; preds = %856
  store i32 0, ptr %21, align 4
  br label %883

883:                                              ; preds = %882, %881, %877, %851
  call void @llvm.lifetime.end.p0(i64 1, ptr %56) #7
  %884 = load i32, ptr %21, align 4
  switch i32 %884, label %1759 [
    i32 0, label %885
  ]

885:                                              ; preds = %883
  br label %887

886:                                              ; preds = %872, %855
  call void @llvm.lifetime.end.p0(i64 1, ptr %56) #7
  br label %1766

887:                                              ; preds = %885, %636, %633
  br label %888

888:                                              ; preds = %887, %627, %618
  %889 = getelementptr inbounds %"class.presolve::HPresolve", ptr %107, i32 0, i32 0
  %890 = load ptr, ptr %889, align 8, !tbaa !9
  %891 = getelementptr inbounds %class.HighsLp, ptr %890, i32 0, i32 2
  %892 = load i32, ptr %20, align 4, !tbaa !98
  %893 = sext i32 %892 to i64
  %894 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt6vectorIdSaIdEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %891, i64 noundef %893) #7
  %895 = load double, ptr %894, align 8, !tbaa !99
  %896 = fcmp ole double %895, 0.000000e+00
  br i1 %896, label %897, label %1150

897:                                              ; preds = %888
  %898 = load double, ptr %37, align 8, !tbaa !99
  %899 = getelementptr inbounds %"class.presolve::HPresolve", ptr %107, i32 0, i32 4
  %900 = load double, ptr %899, align 8, !tbaa !107
  %901 = fneg double %900
  %902 = fcmp oge double %898, %901
  br i1 %902, label %903, label %1150

903:                                              ; preds = %897
  store i8 1, ptr %23, align 1, !tbaa !100
  %904 = load i8, ptr %22, align 1, !tbaa !100, !range !101, !noundef !102
  %905 = trunc i8 %904 to i1
  br i1 %905, label %1149, label %906

906:                                              ; preds = %903
  %907 = load i32, ptr %28, align 4, !tbaa !98
  %908 = icmp ne i32 %907, -1
  br i1 %908, label %909, label %1149

909:                                              ; preds = %906
  %910 = load i32, ptr %28, align 4, !tbaa !98
  invoke void @_ZN8presolve9HPresolve8storeRowEi(ptr noundef nonnull align 8 dereferenceable(1720) %107, i32 noundef %910)
          to label %911 unwind label %671

911:                                              ; preds = %909
  call void @llvm.lifetime.start.p0(i64 1, ptr %67) #7
  %912 = getelementptr inbounds %"class.presolve::HPresolve", ptr %107, i32 0, i32 0
  %913 = load ptr, ptr %912, align 8, !tbaa !9
  %914 = getelementptr inbounds %class.HighsLp, ptr %913, i32 0, i32 5
  %915 = load i32, ptr %28, align 4, !tbaa !98
  %916 = sext i32 %915 to i64
  %917 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt6vectorIdSaIdEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %914, i64 noundef %916) #7
  %918 = load double, ptr %917, align 8, !tbaa !99
  %919 = fcmp une double %918, 0xFFF0000000000000
  br i1 %919, label %920, label %929

920:                                              ; preds = %911
  %921 = getelementptr inbounds %"class.presolve::HPresolve", ptr %107, i32 0, i32 0
  %922 = load ptr, ptr %921, align 8, !tbaa !9
  %923 = getelementptr inbounds %class.HighsLp, ptr %922, i32 0, i32 6
  %924 = load i32, ptr %28, align 4, !tbaa !98
  %925 = sext i32 %924 to i64
  %926 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt6vectorIdSaIdEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %923, i64 noundef %925) #7
  %927 = load double, ptr %926, align 8, !tbaa !99
  %928 = fcmp une double %927, 0x7FF0000000000000
  br label %929

929:                                              ; preds = %920, %911
  %930 = phi i1 [ false, %911 ], [ %928, %920 ]
  %931 = zext i1 %930 to i8
  store i8 %931, ptr %67, align 1, !tbaa !100
  call void @llvm.lifetime.start.p0(i64 8, ptr %68) #7
  call void @llvm.lifetime.start.p0(i64 32, ptr %69) #7
  invoke void @_ZNK8presolve9HPresolve12getStoredRowEv(ptr dead_on_unwind writable sret(%struct.HighsTripletPositionSlice) align 8 %69, ptr noundef nonnull align 8 dereferenceable(1720) %107)
          to label %932 unwind label %941

932:                                              ; preds = %929
  store ptr %69, ptr %68, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 32, ptr %70) #7
  %933 = load ptr, ptr %68, align 8, !tbaa !5
  invoke void @_ZNK16HighsMatrixSliceI25HighsTripletPositionSliceE5beginEv(ptr dead_on_unwind writable sret(%"class.HighsMatrixSlice<HighsTripletPositionSlice>::iterator") align 8 %70, ptr noundef nonnull align 8 dereferenceable(28) %933)
          to label %934 unwind label %945

934:                                              ; preds = %932
  call void @llvm.lifetime.start.p0(i64 32, ptr %71) #7
  %935 = load ptr, ptr %68, align 8, !tbaa !5
  invoke void @_ZNK16HighsMatrixSliceI25HighsTripletPositionSliceE3endEv(ptr dead_on_unwind writable sret(%"class.HighsMatrixSlice<HighsTripletPositionSlice>::iterator") align 8 %71, ptr noundef nonnull align 8 dereferenceable(28) %935)
          to label %936 unwind label %949

936:                                              ; preds = %934
  br label %937

937:                                              ; preds = %1109, %936
  %938 = invoke noundef zeroext i1 @_ZNK16HighsMatrixSliceI25HighsTripletPositionSliceE8iteratorneERKS2_(ptr noundef nonnull align 8 dereferenceable(28) %70, ptr noundef nonnull align 8 dereferenceable(28) %71)
          to label %939 unwind label %949

939:                                              ; preds = %937
  br i1 %938, label %953, label %940

940:                                              ; preds = %939
  store i32 18, ptr %21, align 4
  br label %1113

941:                                              ; preds = %929
  %942 = landingpad { ptr, i32 }
          cleanup
  %943 = extractvalue { ptr, i32 } %942, 0
  store ptr %943, ptr %8, align 8
  %944 = extractvalue { ptr, i32 } %942, 1
  store i32 %944, ptr %9, align 4
  br label %1117

945:                                              ; preds = %932
  %946 = landingpad { ptr, i32 }
          cleanup
  %947 = extractvalue { ptr, i32 } %946, 0
  store ptr %947, ptr %8, align 8
  %948 = extractvalue { ptr, i32 } %946, 1
  store i32 %948, ptr %9, align 4
  br label %1116

949:                                              ; preds = %1107, %937, %934
  %950 = landingpad { ptr, i32 }
          cleanup
  %951 = extractvalue { ptr, i32 } %950, 0
  store ptr %951, ptr %8, align 8
  %952 = extractvalue { ptr, i32 } %950, 1
  store i32 %952, ptr %9, align 4
  br label %1115

953:                                              ; preds = %939
  call void @llvm.lifetime.start.p0(i64 8, ptr %72) #7
  %954 = invoke noundef nonnull align 8 dereferenceable(16) ptr @_ZN16HighsMatrixSliceI25HighsTripletPositionSliceE8iteratordeEv(ptr noundef nonnull align 8 dereferenceable(28) %70)
          to label %955 unwind label %970

955:                                              ; preds = %953
  store ptr %954, ptr %72, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 4, ptr %73) #7
  %956 = load ptr, ptr %72, align 8, !tbaa !5
  %957 = invoke noundef i32 @_ZNK17HighsSliceNonzero5indexEv(ptr noundef nonnull align 8 dereferenceable(16) %956)
          to label %958 unwind label %974

958:                                              ; preds = %955
  store i32 %957, ptr %73, align 4, !tbaa !98
  %959 = load i32, ptr %73, align 4, !tbaa !98
  %960 = load i32, ptr %20, align 4, !tbaa !98
  %961 = icmp eq i32 %959, %960
  br i1 %961, label %969, label %962

962:                                              ; preds = %958
  %963 = getelementptr inbounds %"class.presolve::HPresolve", ptr %107, i32 0, i32 47
  %964 = load i32, ptr %73, align 4, !tbaa !98
  %965 = sext i32 %964 to i64
  %966 = call noundef nonnull align 1 dereferenceable(1) ptr @_ZNSt6vectorIhSaIhEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %963, i64 noundef %965) #7
  %967 = load i8, ptr %966, align 1, !tbaa !105
  %968 = icmp ne i8 %967, 0
  br i1 %968, label %969, label %978

969:                                              ; preds = %962, %958
  store i32 19, ptr %21, align 4
  br label %1101

970:                                              ; preds = %953
  %971 = landingpad { ptr, i32 }
          cleanup
  %972 = extractvalue { ptr, i32 } %971, 0
  store ptr %972, ptr %8, align 8
  %973 = extractvalue { ptr, i32 } %971, 1
  store i32 %973, ptr %9, align 4
  br label %1112

974:                                              ; preds = %955
  %975 = landingpad { ptr, i32 }
          cleanup
  %976 = extractvalue { ptr, i32 } %975, 0
  store ptr %976, ptr %8, align 8
  %977 = extractvalue { ptr, i32 } %975, 1
  store i32 %977, ptr %9, align 4
  br label %1111

978:                                              ; preds = %962
  call void @llvm.lifetime.start.p0(i64 8, ptr %74) #7
  %979 = load ptr, ptr %72, align 8, !tbaa !5
  %980 = invoke noundef double @_ZNK17HighsSliceNonzero5valueEv(ptr noundef nonnull align 8 dereferenceable(16) %979)
          to label %981 unwind label %1019

981:                                              ; preds = %978
  %982 = load i32, ptr %30, align 4, !tbaa !98
  %983 = sitofp i32 %982 to double
  %984 = fmul double %980, %983
  store double %984, ptr %74, align 8, !tbaa !99
  %985 = load double, ptr %31, align 8, !tbaa !99
  %986 = load double, ptr %74, align 8, !tbaa !99
  %987 = getelementptr inbounds %"class.presolve::HPresolve", ptr %107, i32 0, i32 1
  %988 = load ptr, ptr %987, align 8, !tbaa !108
  %989 = getelementptr inbounds %struct.HighsOptionsStruct, ptr %988, i32 0, i32 12
  %990 = load double, ptr %989, align 8, !tbaa !109
  %991 = fadd double %986, %990
  %992 = fcmp ole double %985, %991
  br i1 %992, label %993, label %1042

993:                                              ; preds = %981
  %994 = load i8, ptr %67, align 1, !tbaa !100, !range !101, !noundef !102
  %995 = trunc i8 %994 to i1
  br i1 %995, label %996, label %1005

996:                                              ; preds = %993
  %997 = load double, ptr %31, align 8, !tbaa !99
  %998 = load double, ptr %74, align 8, !tbaa !99
  %999 = getelementptr inbounds %"class.presolve::HPresolve", ptr %107, i32 0, i32 1
  %1000 = load ptr, ptr %999, align 8, !tbaa !108
  %1001 = getelementptr inbounds %struct.HighsOptionsStruct, ptr %1000, i32 0, i32 12
  %1002 = load double, ptr %1001, align 8, !tbaa !109
  %1003 = fsub double %998, %1002
  %1004 = fcmp oge double %997, %1003
  br i1 %1004, label %1005, label %1042

1005:                                             ; preds = %996, %993
  %1006 = load i32, ptr %20, align 4, !tbaa !98
  %1007 = load i32, ptr %73, align 4, !tbaa !98
  %1008 = invoke noundef zeroext i1 @"_ZZN8presolve9HPresolve16dominatedColumnsERNS_19HighsPostsolveStackEENK3$_2clEiiii"(ptr noundef nonnull align 8 dereferenceable(16) %12, i32 noundef 1, i32 noundef %1006, i32 noundef 1, i32 noundef %1007)
          to label %1009 unwind label %1019

1009:                                             ; preds = %1005
  br i1 %1008, label %1010, label %1042

1010:                                             ; preds = %1009
  %1011 = load i32, ptr %19, align 4, !tbaa !98
  %1012 = add nsw i32 %1011, 1
  store i32 %1012, ptr %19, align 4, !tbaa !98
  %1013 = load ptr, ptr %5, align 8, !tbaa !5
  %1014 = load i32, ptr %20, align 4, !tbaa !98
  %1015 = invoke noundef zeroext i1 @_ZN8presolve9HPresolve24fixColToUpperOrUnboundedERNS_19HighsPostsolveStackEi(ptr noundef nonnull align 8 dereferenceable(1720) %107, ptr noundef nonnull align 8 dereferenceable(224) %1013, i32 noundef %1014)
          to label %1016 unwind label %1019

1016:                                             ; preds = %1010
  br i1 %1015, label %1017, label %1023

1017:                                             ; preds = %1016
  %1018 = getelementptr inbounds %"class.presolve::HPresolve", ptr %107, i32 0, i32 57
  store i32 2, ptr %1018, align 4, !tbaa !114
  store i32 2, ptr %3, align 4
  store i32 1, ptr %21, align 4
  br label %1100

1019:                                             ; preds = %1070, %1065, %1010, %1005, %978
  %1020 = landingpad { ptr, i32 }
          cleanup
  %1021 = extractvalue { ptr, i32 } %1020, 0
  store ptr %1021, ptr %8, align 8
  %1022 = extractvalue { ptr, i32 } %1020, 1
  store i32 %1022, ptr %9, align 4
  br label %1110

1023:                                             ; preds = %1016
  br label %1024

1024:                                             ; preds = %1023
  call void @llvm.lifetime.start.p0(i64 4, ptr %75) #7
  %1025 = load ptr, ptr %5, align 8, !tbaa !5
  %1026 = invoke noundef i32 @_ZN8presolve9HPresolve19removeRowSingletonsERNS_19HighsPostsolveStackE(ptr noundef nonnull align 8 dereferenceable(1720) %107, ptr noundef nonnull align 8 dereferenceable(224) %1025)
          to label %1027 unwind label %1032

1027:                                             ; preds = %1024
  store i32 %1026, ptr %75, align 4, !tbaa !115
  %1028 = load i32, ptr %75, align 4, !tbaa !115
  %1029 = icmp ne i32 %1028, 0
  br i1 %1029, label %1030, label %1036

1030:                                             ; preds = %1027
  %1031 = load i32, ptr %75, align 4, !tbaa !115
  store i32 %1031, ptr %3, align 4
  store i32 1, ptr %21, align 4
  br label %1037

1032:                                             ; preds = %1024
  %1033 = landingpad { ptr, i32 }
          cleanup
  %1034 = extractvalue { ptr, i32 } %1033, 0
  store ptr %1034, ptr %8, align 8
  %1035 = extractvalue { ptr, i32 } %1033, 1
  store i32 %1035, ptr %9, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %75) #7
  br label %1110

1036:                                             ; preds = %1027
  store i32 0, ptr %21, align 4
  br label %1037

1037:                                             ; preds = %1036, %1030
  call void @llvm.lifetime.end.p0(i64 4, ptr %75) #7
  %1038 = load i32, ptr %21, align 4
  switch i32 %1038, label %1100 [
    i32 0, label %1039
  ]

1039:                                             ; preds = %1037
  br label %1040

1040:                                             ; preds = %1039
  br label %1041

1041:                                             ; preds = %1040
  store i32 18, ptr %21, align 4
  br label %1100

1042:                                             ; preds = %1009, %996, %981
  %1043 = load double, ptr %31, align 8, !tbaa !99
  %1044 = load double, ptr %74, align 8, !tbaa !99
  %1045 = fneg double %1044
  %1046 = getelementptr inbounds %"class.presolve::HPresolve", ptr %107, i32 0, i32 1
  %1047 = load ptr, ptr %1046, align 8, !tbaa !108
  %1048 = getelementptr inbounds %struct.HighsOptionsStruct, ptr %1047, i32 0, i32 12
  %1049 = load double, ptr %1048, align 8, !tbaa !109
  %1050 = fadd double %1045, %1049
  %1051 = fcmp ole double %1043, %1050
  br i1 %1051, label %1052, label %1098

1052:                                             ; preds = %1042
  %1053 = load i8, ptr %67, align 1, !tbaa !100, !range !101, !noundef !102
  %1054 = trunc i8 %1053 to i1
  br i1 %1054, label %1055, label %1065

1055:                                             ; preds = %1052
  %1056 = load double, ptr %31, align 8, !tbaa !99
  %1057 = load double, ptr %74, align 8, !tbaa !99
  %1058 = fneg double %1057
  %1059 = getelementptr inbounds %"class.presolve::HPresolve", ptr %107, i32 0, i32 1
  %1060 = load ptr, ptr %1059, align 8, !tbaa !108
  %1061 = getelementptr inbounds %struct.HighsOptionsStruct, ptr %1060, i32 0, i32 12
  %1062 = load double, ptr %1061, align 8, !tbaa !109
  %1063 = fsub double %1058, %1062
  %1064 = fcmp oge double %1056, %1063
  br i1 %1064, label %1065, label %1098

1065:                                             ; preds = %1055, %1052
  %1066 = load i32, ptr %20, align 4, !tbaa !98
  %1067 = load i32, ptr %73, align 4, !tbaa !98
  %1068 = invoke noundef zeroext i1 @"_ZZN8presolve9HPresolve16dominatedColumnsERNS_19HighsPostsolveStackEENK3$_2clEiiii"(ptr noundef nonnull align 8 dereferenceable(16) %12, i32 noundef 1, i32 noundef %1066, i32 noundef -1, i32 noundef %1067)
          to label %1069 unwind label %1019

1069:                                             ; preds = %1065
  br i1 %1068, label %1070, label %1098

1070:                                             ; preds = %1069
  %1071 = load i32, ptr %19, align 4, !tbaa !98
  %1072 = add nsw i32 %1071, 1
  store i32 %1072, ptr %19, align 4, !tbaa !98
  %1073 = load ptr, ptr %5, align 8, !tbaa !5
  %1074 = load i32, ptr %20, align 4, !tbaa !98
  %1075 = invoke noundef zeroext i1 @_ZN8presolve9HPresolve24fixColToUpperOrUnboundedERNS_19HighsPostsolveStackEi(ptr noundef nonnull align 8 dereferenceable(1720) %107, ptr noundef nonnull align 8 dereferenceable(224) %1073, i32 noundef %1074)
          to label %1076 unwind label %1019

1076:                                             ; preds = %1070
  br i1 %1075, label %1077, label %1079

1077:                                             ; preds = %1076
  %1078 = getelementptr inbounds %"class.presolve::HPresolve", ptr %107, i32 0, i32 57
  store i32 2, ptr %1078, align 4, !tbaa !114
  store i32 2, ptr %3, align 4
  store i32 1, ptr %21, align 4
  br label %1100

1079:                                             ; preds = %1076
  br label %1080

1080:                                             ; preds = %1079
  call void @llvm.lifetime.start.p0(i64 4, ptr %76) #7
  %1081 = load ptr, ptr %5, align 8, !tbaa !5
  %1082 = invoke noundef i32 @_ZN8presolve9HPresolve19removeRowSingletonsERNS_19HighsPostsolveStackE(ptr noundef nonnull align 8 dereferenceable(1720) %107, ptr noundef nonnull align 8 dereferenceable(224) %1081)
          to label %1083 unwind label %1088

1083:                                             ; preds = %1080
  store i32 %1082, ptr %76, align 4, !tbaa !115
  %1084 = load i32, ptr %76, align 4, !tbaa !115
  %1085 = icmp ne i32 %1084, 0
  br i1 %1085, label %1086, label %1092

1086:                                             ; preds = %1083
  %1087 = load i32, ptr %76, align 4, !tbaa !115
  store i32 %1087, ptr %3, align 4
  store i32 1, ptr %21, align 4
  br label %1093

1088:                                             ; preds = %1080
  %1089 = landingpad { ptr, i32 }
          cleanup
  %1090 = extractvalue { ptr, i32 } %1089, 0
  store ptr %1090, ptr %8, align 8
  %1091 = extractvalue { ptr, i32 } %1089, 1
  store i32 %1091, ptr %9, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %76) #7
  br label %1110

1092:                                             ; preds = %1083
  store i32 0, ptr %21, align 4
  br label %1093

1093:                                             ; preds = %1092, %1086
  call void @llvm.lifetime.end.p0(i64 4, ptr %76) #7
  %1094 = load i32, ptr %21, align 4
  switch i32 %1094, label %1100 [
    i32 0, label %1095
  ]

1095:                                             ; preds = %1093
  br label %1096

1096:                                             ; preds = %1095
  br label %1097

1097:                                             ; preds = %1096
  store i32 18, ptr %21, align 4
  br label %1100

1098:                                             ; preds = %1069, %1055, %1042
  br label %1099

1099:                                             ; preds = %1098
  store i32 0, ptr %21, align 4
  br label %1100

1100:                                             ; preds = %1099, %1097, %1093, %1077, %1041, %1037, %1017
  call void @llvm.lifetime.end.p0(i64 8, ptr %74) #7
  br label %1101

1101:                                             ; preds = %1100, %969
  call void @llvm.lifetime.end.p0(i64 4, ptr %73) #7
  %1102 = load i32, ptr %21, align 4
  switch i32 %1102, label %1104 [
    i32 0, label %1103
  ]

1103:                                             ; preds = %1101
  store i32 0, ptr %21, align 4
  br label %1104

1104:                                             ; preds = %1103, %1101
  call void @llvm.lifetime.end.p0(i64 8, ptr %72) #7
  %1105 = load i32, ptr %21, align 4
  switch i32 %1105, label %1113 [
    i32 0, label %1106
    i32 19, label %1107
  ]

1106:                                             ; preds = %1104
  br label %1107

1107:                                             ; preds = %1106, %1104
  %1108 = invoke noundef nonnull align 8 dereferenceable(28) ptr @_ZN16HighsMatrixSliceI25HighsTripletPositionSliceE8iteratorppEv(ptr noundef nonnull align 8 dereferenceable(28) %70)
          to label %1109 unwind label %949

1109:                                             ; preds = %1107
  br label %937

1110:                                             ; preds = %1088, %1032, %1019
  call void @llvm.lifetime.end.p0(i64 8, ptr %74) #7
  br label %1111

1111:                                             ; preds = %1110, %974
  call void @llvm.lifetime.end.p0(i64 4, ptr %73) #7
  br label %1112

1112:                                             ; preds = %1111, %970
  call void @llvm.lifetime.end.p0(i64 8, ptr %72) #7
  br label %1115

1113:                                             ; preds = %1104, %940
  call void @llvm.lifetime.end.p0(i64 32, ptr %71) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr %70) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr %69) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %68) #7
  %1114 = load i32, ptr %21, align 4
  switch i32 %1114, label %1145 [
    i32 18, label %1118
  ]

1115:                                             ; preds = %1112, %949
  call void @llvm.lifetime.end.p0(i64 32, ptr %71) #7
  br label %1116

1116:                                             ; preds = %1115, %945
  call void @llvm.lifetime.end.p0(i64 32, ptr %70) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr %69) #7
  br label %1117

1117:                                             ; preds = %1116, %941
  call void @llvm.lifetime.end.p0(i64 8, ptr %68) #7
  br label %1148

1118:                                             ; preds = %1113
  %1119 = getelementptr inbounds %"class.presolve::HPresolve", ptr %107, i32 0, i32 47
  %1120 = load i32, ptr %20, align 4, !tbaa !98
  %1121 = sext i32 %1120 to i64
  %1122 = call noundef nonnull align 1 dereferenceable(1) ptr @_ZNSt6vectorIhSaIhEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %1119, i64 noundef %1121) #7
  %1123 = load i8, ptr %1122, align 1, !tbaa !105
  %1124 = icmp ne i8 %1123, 0
  br i1 %1124, label %1125, label %1144

1125:                                             ; preds = %1118
  br label %1126

1126:                                             ; preds = %1125
  call void @llvm.lifetime.start.p0(i64 4, ptr %77) #7
  %1127 = load ptr, ptr %5, align 8, !tbaa !5
  %1128 = invoke noundef i32 @_ZN8presolve9HPresolve24removeDoubletonEquationsERNS_19HighsPostsolveStackE(ptr noundef nonnull align 8 dereferenceable(1720) %107, ptr noundef nonnull align 8 dereferenceable(224) %1127)
          to label %1129 unwind label %1134

1129:                                             ; preds = %1126
  store i32 %1128, ptr %77, align 4, !tbaa !115
  %1130 = load i32, ptr %77, align 4, !tbaa !115
  %1131 = icmp ne i32 %1130, 0
  br i1 %1131, label %1132, label %1138

1132:                                             ; preds = %1129
  %1133 = load i32, ptr %77, align 4, !tbaa !115
  store i32 %1133, ptr %3, align 4
  store i32 1, ptr %21, align 4
  br label %1139

1134:                                             ; preds = %1126
  %1135 = landingpad { ptr, i32 }
          cleanup
  %1136 = extractvalue { ptr, i32 } %1135, 0
  store ptr %1136, ptr %8, align 8
  %1137 = extractvalue { ptr, i32 } %1135, 1
  store i32 %1137, ptr %9, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %77) #7
  br label %1148

1138:                                             ; preds = %1129
  store i32 0, ptr %21, align 4
  br label %1139

1139:                                             ; preds = %1138, %1132
  call void @llvm.lifetime.end.p0(i64 4, ptr %77) #7
  %1140 = load i32, ptr %21, align 4
  switch i32 %1140, label %1145 [
    i32 0, label %1141
  ]

1141:                                             ; preds = %1139
  br label %1142

1142:                                             ; preds = %1141
  br label %1143

1143:                                             ; preds = %1142
  store i32 7, ptr %21, align 4
  br label %1145

1144:                                             ; preds = %1118
  store i32 0, ptr %21, align 4
  br label %1145

1145:                                             ; preds = %1144, %1143, %1139, %1113
  call void @llvm.lifetime.end.p0(i64 1, ptr %67) #7
  %1146 = load i32, ptr %21, align 4
  switch i32 %1146, label %1759 [
    i32 0, label %1147
  ]

1147:                                             ; preds = %1145
  br label %1149

1148:                                             ; preds = %1134, %1117
  call void @llvm.lifetime.end.p0(i64 1, ptr %67) #7
  br label %1766

1149:                                             ; preds = %1147, %906, %903
  br label %1150

1150:                                             ; preds = %1149, %897, %888
  %1151 = load i8, ptr %22, align 1, !tbaa !100, !range !101, !noundef !102
  %1152 = trunc i8 %1151 to i1
  br i1 %1152, label %1157, label %1153

1153:                                             ; preds = %1150
  %1154 = load i8, ptr %24, align 1, !tbaa !100, !range !101, !noundef !102
  %1155 = trunc i8 %1154 to i1
  br i1 %1155, label %1157, label %1156

1156:                                             ; preds = %1153
  store i32 -1, ptr %28, align 4, !tbaa !98
  br label %1157

1157:                                             ; preds = %1156, %1153, %1150
  %1158 = load i8, ptr %23, align 1, !tbaa !100, !range !101, !noundef !102
  %1159 = trunc i8 %1158 to i1
  br i1 %1159, label %1164, label %1160

1160:                                             ; preds = %1157
  %1161 = load i8, ptr %25, align 1, !tbaa !100, !range !101, !noundef !102
  %1162 = trunc i8 %1161 to i1
  br i1 %1162, label %1164, label %1163

1163:                                             ; preds = %1160
  store i32 -1, ptr %32, align 4, !tbaa !98
  br label %1164

1164:                                             ; preds = %1163, %1160, %1157
  br label %1165

1165:                                             ; preds = %1164, %615
  %1166 = load i32, ptr %28, align 4, !tbaa !98
  %1167 = icmp ne i32 %1166, -1
  br i1 %1167, label %1168, label %1448

1168:                                             ; preds = %1165
  %1169 = load i8, ptr %22, align 1, !tbaa !100, !range !101, !noundef !102
  %1170 = trunc i8 %1169 to i1
  br i1 %1170, label %1174, label %1171

1171:                                             ; preds = %1168
  %1172 = load i8, ptr %24, align 1, !tbaa !100, !range !101, !noundef !102
  %1173 = trunc i8 %1172 to i1
  br label %1174

1174:                                             ; preds = %1171, %1168
  %1175 = phi i1 [ true, %1168 ], [ %1173, %1171 ]
  br i1 %1175, label %1176, label %1177

1176:                                             ; preds = %1174
  br label %1179

1177:                                             ; preds = %1174
  call void @__assert_fail(ptr noundef @.str.74, ptr noundef @.str.55, i32 noundef 1271, ptr noundef @__PRETTY_FUNCTION__._ZN8presolve9HPresolve16dominatedColumnsERNS_19HighsPostsolveStackE) #8
  unreachable

1178:                                             ; No predecessors!
  br label %1179

1179:                                             ; preds = %1178, %1176
  %1180 = load i32, ptr %28, align 4, !tbaa !98
  invoke void @_ZN8presolve9HPresolve8storeRowEi(ptr noundef nonnull align 8 dereferenceable(1720) %107, i32 noundef %1180)
          to label %1181 unwind label %671

1181:                                             ; preds = %1179
  call void @llvm.lifetime.start.p0(i64 1, ptr %78) #7
  %1182 = getelementptr inbounds %"class.presolve::HPresolve", ptr %107, i32 0, i32 0
  %1183 = load ptr, ptr %1182, align 8, !tbaa !9
  %1184 = getelementptr inbounds %class.HighsLp, ptr %1183, i32 0, i32 5
  %1185 = load i32, ptr %28, align 4, !tbaa !98
  %1186 = sext i32 %1185 to i64
  %1187 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt6vectorIdSaIdEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %1184, i64 noundef %1186) #7
  %1188 = load double, ptr %1187, align 8, !tbaa !99
  %1189 = fcmp une double %1188, 0xFFF0000000000000
  br i1 %1189, label %1190, label %1199

1190:                                             ; preds = %1181
  %1191 = getelementptr inbounds %"class.presolve::HPresolve", ptr %107, i32 0, i32 0
  %1192 = load ptr, ptr %1191, align 8, !tbaa !9
  %1193 = getelementptr inbounds %class.HighsLp, ptr %1192, i32 0, i32 6
  %1194 = load i32, ptr %28, align 4, !tbaa !98
  %1195 = sext i32 %1194 to i64
  %1196 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt6vectorIdSaIdEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %1193, i64 noundef %1195) #7
  %1197 = load double, ptr %1196, align 8, !tbaa !99
  %1198 = fcmp une double %1197, 0x7FF0000000000000
  br label %1199

1199:                                             ; preds = %1190, %1181
  %1200 = phi i1 [ false, %1181 ], [ %1198, %1190 ]
  %1201 = zext i1 %1200 to i8
  store i8 %1201, ptr %78, align 1, !tbaa !100
  call void @llvm.lifetime.start.p0(i64 8, ptr %79) #7
  call void @llvm.lifetime.start.p0(i64 32, ptr %80) #7
  invoke void @_ZNK8presolve9HPresolve12getStoredRowEv(ptr dead_on_unwind writable sret(%struct.HighsTripletPositionSlice) align 8 %80, ptr noundef nonnull align 8 dereferenceable(1720) %107)
          to label %1202 unwind label %1211

1202:                                             ; preds = %1199
  store ptr %80, ptr %79, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 32, ptr %81) #7
  %1203 = load ptr, ptr %79, align 8, !tbaa !5
  invoke void @_ZNK16HighsMatrixSliceI25HighsTripletPositionSliceE5beginEv(ptr dead_on_unwind writable sret(%"class.HighsMatrixSlice<HighsTripletPositionSlice>::iterator") align 8 %81, ptr noundef nonnull align 8 dereferenceable(28) %1203)
          to label %1204 unwind label %1215

1204:                                             ; preds = %1202
  call void @llvm.lifetime.start.p0(i64 32, ptr %82) #7
  %1205 = load ptr, ptr %79, align 8, !tbaa !5
  invoke void @_ZNK16HighsMatrixSliceI25HighsTripletPositionSliceE3endEv(ptr dead_on_unwind writable sret(%"class.HighsMatrixSlice<HighsTripletPositionSlice>::iterator") align 8 %82, ptr noundef nonnull align 8 dereferenceable(28) %1205)
          to label %1206 unwind label %1219

1206:                                             ; preds = %1204
  br label %1207

1207:                                             ; preds = %1435, %1206
  %1208 = invoke noundef zeroext i1 @_ZNK16HighsMatrixSliceI25HighsTripletPositionSliceE8iteratorneERKS2_(ptr noundef nonnull align 8 dereferenceable(28) %81, ptr noundef nonnull align 8 dereferenceable(28) %82)
          to label %1209 unwind label %1219

1209:                                             ; preds = %1207
  br i1 %1208, label %1223, label %1210

1210:                                             ; preds = %1209
  store i32 26, ptr %21, align 4
  br label %1439

1211:                                             ; preds = %1199
  %1212 = landingpad { ptr, i32 }
          cleanup
  %1213 = extractvalue { ptr, i32 } %1212, 0
  store ptr %1213, ptr %8, align 8
  %1214 = extractvalue { ptr, i32 } %1212, 1
  store i32 %1214, ptr %9, align 4
  br label %1443

1215:                                             ; preds = %1202
  %1216 = landingpad { ptr, i32 }
          cleanup
  %1217 = extractvalue { ptr, i32 } %1216, 0
  store ptr %1217, ptr %8, align 8
  %1218 = extractvalue { ptr, i32 } %1216, 1
  store i32 %1218, ptr %9, align 4
  br label %1442

1219:                                             ; preds = %1433, %1207, %1204
  %1220 = landingpad { ptr, i32 }
          cleanup
  %1221 = extractvalue { ptr, i32 } %1220, 0
  store ptr %1221, ptr %8, align 8
  %1222 = extractvalue { ptr, i32 } %1220, 1
  store i32 %1222, ptr %9, align 4
  br label %1441

1223:                                             ; preds = %1209
  call void @llvm.lifetime.start.p0(i64 8, ptr %83) #7
  %1224 = invoke noundef nonnull align 8 dereferenceable(16) ptr @_ZN16HighsMatrixSliceI25HighsTripletPositionSliceE8iteratordeEv(ptr noundef nonnull align 8 dereferenceable(28) %81)
          to label %1225 unwind label %1240

1225:                                             ; preds = %1223
  store ptr %1224, ptr %83, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 4, ptr %84) #7
  %1226 = load ptr, ptr %83, align 8, !tbaa !5
  %1227 = invoke noundef i32 @_ZNK17HighsSliceNonzero5indexEv(ptr noundef nonnull align 8 dereferenceable(16) %1226)
          to label %1228 unwind label %1244

1228:                                             ; preds = %1225
  store i32 %1227, ptr %84, align 4, !tbaa !98
  %1229 = load i32, ptr %84, align 4, !tbaa !98
  %1230 = load i32, ptr %20, align 4, !tbaa !98
  %1231 = icmp eq i32 %1229, %1230
  br i1 %1231, label %1239, label %1232

1232:                                             ; preds = %1228
  %1233 = getelementptr inbounds %"class.presolve::HPresolve", ptr %107, i32 0, i32 47
  %1234 = load i32, ptr %84, align 4, !tbaa !98
  %1235 = sext i32 %1234 to i64
  %1236 = call noundef nonnull align 1 dereferenceable(1) ptr @_ZNSt6vectorIhSaIhEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %1233, i64 noundef %1235) #7
  %1237 = load i8, ptr %1236, align 1, !tbaa !105
  %1238 = icmp ne i8 %1237, 0
  br i1 %1238, label %1239, label %1248

1239:                                             ; preds = %1232, %1228
  store i32 27, ptr %21, align 4
  br label %1427

1240:                                             ; preds = %1223
  %1241 = landingpad { ptr, i32 }
          cleanup
  %1242 = extractvalue { ptr, i32 } %1241, 0
  store ptr %1242, ptr %8, align 8
  %1243 = extractvalue { ptr, i32 } %1241, 1
  store i32 %1243, ptr %9, align 4
  br label %1438

1244:                                             ; preds = %1225
  %1245 = landingpad { ptr, i32 }
          cleanup
  %1246 = extractvalue { ptr, i32 } %1245, 0
  store ptr %1246, ptr %8, align 8
  %1247 = extractvalue { ptr, i32 } %1245, 1
  store i32 %1247, ptr %9, align 4
  br label %1437

1248:                                             ; preds = %1232
  call void @llvm.lifetime.start.p0(i64 8, ptr %85) #7
  %1249 = load ptr, ptr %83, align 8, !tbaa !5
  %1250 = invoke noundef double @_ZNK17HighsSliceNonzero5valueEv(ptr noundef nonnull align 8 dereferenceable(16) %1249)
          to label %1251 unwind label %1317

1251:                                             ; preds = %1248
  %1252 = load i32, ptr %30, align 4, !tbaa !98
  %1253 = sitofp i32 %1252 to double
  %1254 = fmul double %1250, %1253
  store double %1254, ptr %85, align 8, !tbaa !99
  %1255 = getelementptr inbounds %"class.presolve::HPresolve", ptr %107, i32 0, i32 0
  %1256 = load ptr, ptr %1255, align 8, !tbaa !9
  %1257 = getelementptr inbounds %class.HighsLp, ptr %1256, i32 0, i32 3
  %1258 = load i32, ptr %84, align 4, !tbaa !98
  %1259 = sext i32 %1258 to i64
  %1260 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt6vectorIdSaIdEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %1257, i64 noundef %1259) #7
  %1261 = load double, ptr %1260, align 8, !tbaa !99
  %1262 = fcmp une double %1261, 0xFFF0000000000000
  br i1 %1262, label %1263, label %1340

1263:                                             ; preds = %1251
  %1264 = load i8, ptr %22, align 1, !tbaa !100, !range !101, !noundef !102
  %1265 = trunc i8 %1264 to i1
  br i1 %1265, label %1282, label %1266

1266:                                             ; preds = %1263
  %1267 = getelementptr inbounds %"class.presolve::HPresolve", ptr %107, i32 0, i32 3
  %1268 = load ptr, ptr %1267, align 8, !tbaa !106
  %1269 = getelementptr inbounds %class.HighsMipSolver, ptr %1268, i32 0, i32 25
  %1270 = call noundef ptr @_ZNKSt10unique_ptrI18HighsMipSolverDataSt14default_deleteIS0_EEptEv(ptr noundef nonnull align 8 dereferenceable(8) %1269) #7
  %1271 = getelementptr inbounds %struct.HighsMipSolverData, ptr %1270, i32 0, i32 6
  %1272 = load i32, ptr %20, align 4, !tbaa !98
  invoke void @_ZN16HighsCliqueTable9CliqueVarC2Eii(ptr noundef nonnull align 4 dereferenceable(4) %86, i32 noundef %1272, i32 noundef 1)
          to label %1273 unwind label %1317

1273:                                             ; preds = %1266
  %1274 = load i32, ptr %84, align 4, !tbaa !98
  invoke void @_ZN16HighsCliqueTable9CliqueVarC2Eii(ptr noundef nonnull align 4 dereferenceable(4) %87, i32 noundef %1274, i32 noundef 1)
          to label %1275 unwind label %1317

1275:                                             ; preds = %1273
  %1276 = getelementptr inbounds %"struct.HighsCliqueTable::CliqueVar", ptr %86, i32 0, i32 0
  %1277 = load i32, ptr %1276, align 4
  %1278 = getelementptr inbounds %"struct.HighsCliqueTable::CliqueVar", ptr %87, i32 0, i32 0
  %1279 = load i32, ptr %1278, align 4
  %1280 = invoke noundef zeroext i1 @_ZN16HighsCliqueTable16haveCommonCliqueENS_9CliqueVarES0_(ptr noundef nonnull align 8 dereferenceable(488) %1271, i32 %1277, i32 %1279)
          to label %1281 unwind label %1317

1281:                                             ; preds = %1275
  br i1 %1280, label %1282, label %1340

1282:                                             ; preds = %1281, %1263
  %1283 = load double, ptr %31, align 8, !tbaa !99
  %1284 = load double, ptr %85, align 8, !tbaa !99
  %1285 = getelementptr inbounds %"class.presolve::HPresolve", ptr %107, i32 0, i32 1
  %1286 = load ptr, ptr %1285, align 8, !tbaa !108
  %1287 = getelementptr inbounds %struct.HighsOptionsStruct, ptr %1286, i32 0, i32 12
  %1288 = load double, ptr %1287, align 8, !tbaa !109
  %1289 = fadd double %1284, %1288
  %1290 = fcmp ole double %1283, %1289
  br i1 %1290, label %1291, label %1340

1291:                                             ; preds = %1282
  %1292 = load i8, ptr %78, align 1, !tbaa !100, !range !101, !noundef !102
  %1293 = trunc i8 %1292 to i1
  br i1 %1293, label %1294, label %1303

1294:                                             ; preds = %1291
  %1295 = load double, ptr %31, align 8, !tbaa !99
  %1296 = load double, ptr %85, align 8, !tbaa !99
  %1297 = getelementptr inbounds %"class.presolve::HPresolve", ptr %107, i32 0, i32 1
  %1298 = load ptr, ptr %1297, align 8, !tbaa !108
  %1299 = getelementptr inbounds %struct.HighsOptionsStruct, ptr %1298, i32 0, i32 12
  %1300 = load double, ptr %1299, align 8, !tbaa !109
  %1301 = fsub double %1296, %1300
  %1302 = fcmp oge double %1295, %1301
  br i1 %1302, label %1303, label %1340

1303:                                             ; preds = %1294, %1291
  %1304 = load i32, ptr %20, align 4, !tbaa !98
  %1305 = load i32, ptr %84, align 4, !tbaa !98
  %1306 = invoke noundef zeroext i1 @"_ZZN8presolve9HPresolve16dominatedColumnsERNS_19HighsPostsolveStackEENK3$_2clEiiii"(ptr noundef nonnull align 8 dereferenceable(16) %12, i32 noundef 1, i32 noundef %1304, i32 noundef 1, i32 noundef %1305)
          to label %1307 unwind label %1317

1307:                                             ; preds = %1303
  br i1 %1306, label %1308, label %1340

1308:                                             ; preds = %1307
  %1309 = load i32, ptr %19, align 4, !tbaa !98
  %1310 = add nsw i32 %1309, 1
  store i32 %1310, ptr %19, align 4, !tbaa !98
  %1311 = load ptr, ptr %5, align 8, !tbaa !5
  %1312 = load i32, ptr %84, align 4, !tbaa !98
  %1313 = invoke noundef zeroext i1 @_ZN8presolve9HPresolve24fixColToLowerOrUnboundedERNS_19HighsPostsolveStackEi(ptr noundef nonnull align 8 dereferenceable(1720) %107, ptr noundef nonnull align 8 dereferenceable(224) %1311, i32 noundef %1312)
          to label %1314 unwind label %1317

1314:                                             ; preds = %1308
  br i1 %1313, label %1315, label %1321

1315:                                             ; preds = %1314
  %1316 = getelementptr inbounds %"class.presolve::HPresolve", ptr %107, i32 0, i32 57
  store i32 2, ptr %1316, align 4, !tbaa !114
  store i32 2, ptr %3, align 4
  store i32 1, ptr %21, align 4
  br label %1426

1317:                                             ; preds = %1396, %1391, %1361, %1359, %1352, %1308, %1303, %1275, %1273, %1266, %1248
  %1318 = landingpad { ptr, i32 }
          cleanup
  %1319 = extractvalue { ptr, i32 } %1318, 0
  store ptr %1319, ptr %8, align 8
  %1320 = extractvalue { ptr, i32 } %1318, 1
  store i32 %1320, ptr %9, align 4
  br label %1436

1321:                                             ; preds = %1314
  br label %1322

1322:                                             ; preds = %1321
  call void @llvm.lifetime.start.p0(i64 4, ptr %88) #7
  %1323 = load ptr, ptr %5, align 8, !tbaa !5
  %1324 = invoke noundef i32 @_ZN8presolve9HPresolve19removeRowSingletonsERNS_19HighsPostsolveStackE(ptr noundef nonnull align 8 dereferenceable(1720) %107, ptr noundef nonnull align 8 dereferenceable(224) %1323)
          to label %1325 unwind label %1330

1325:                                             ; preds = %1322
  store i32 %1324, ptr %88, align 4, !tbaa !115
  %1326 = load i32, ptr %88, align 4, !tbaa !115
  %1327 = icmp ne i32 %1326, 0
  br i1 %1327, label %1328, label %1334

1328:                                             ; preds = %1325
  %1329 = load i32, ptr %88, align 4, !tbaa !115
  store i32 %1329, ptr %3, align 4
  store i32 1, ptr %21, align 4
  br label %1335

1330:                                             ; preds = %1322
  %1331 = landingpad { ptr, i32 }
          cleanup
  %1332 = extractvalue { ptr, i32 } %1331, 0
  store ptr %1332, ptr %8, align 8
  %1333 = extractvalue { ptr, i32 } %1331, 1
  store i32 %1333, ptr %9, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %88) #7
  br label %1436

1334:                                             ; preds = %1325
  store i32 0, ptr %21, align 4
  br label %1335

1335:                                             ; preds = %1334, %1328
  call void @llvm.lifetime.end.p0(i64 4, ptr %88) #7
  %1336 = load i32, ptr %21, align 4
  switch i32 %1336, label %1426 [
    i32 0, label %1337
  ]

1337:                                             ; preds = %1335
  br label %1338

1338:                                             ; preds = %1337
  br label %1339

1339:                                             ; preds = %1338
  br label %1425

1340:                                             ; preds = %1307, %1294, %1282, %1281, %1251
  %1341 = getelementptr inbounds %"class.presolve::HPresolve", ptr %107, i32 0, i32 0
  %1342 = load ptr, ptr %1341, align 8, !tbaa !9
  %1343 = getelementptr inbounds %class.HighsLp, ptr %1342, i32 0, i32 4
  %1344 = load i32, ptr %84, align 4, !tbaa !98
  %1345 = sext i32 %1344 to i64
  %1346 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt6vectorIdSaIdEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %1343, i64 noundef %1345) #7
  %1347 = load double, ptr %1346, align 8, !tbaa !99
  %1348 = fcmp une double %1347, 0x7FF0000000000000
  br i1 %1348, label %1349, label %1424

1349:                                             ; preds = %1340
  %1350 = load i8, ptr %22, align 1, !tbaa !100, !range !101, !noundef !102
  %1351 = trunc i8 %1350 to i1
  br i1 %1351, label %1368, label %1352

1352:                                             ; preds = %1349
  %1353 = getelementptr inbounds %"class.presolve::HPresolve", ptr %107, i32 0, i32 3
  %1354 = load ptr, ptr %1353, align 8, !tbaa !106
  %1355 = getelementptr inbounds %class.HighsMipSolver, ptr %1354, i32 0, i32 25
  %1356 = call noundef ptr @_ZNKSt10unique_ptrI18HighsMipSolverDataSt14default_deleteIS0_EEptEv(ptr noundef nonnull align 8 dereferenceable(8) %1355) #7
  %1357 = getelementptr inbounds %struct.HighsMipSolverData, ptr %1356, i32 0, i32 6
  %1358 = load i32, ptr %20, align 4, !tbaa !98
  invoke void @_ZN16HighsCliqueTable9CliqueVarC2Eii(ptr noundef nonnull align 4 dereferenceable(4) %89, i32 noundef %1358, i32 noundef 1)
          to label %1359 unwind label %1317

1359:                                             ; preds = %1352
  %1360 = load i32, ptr %84, align 4, !tbaa !98
  invoke void @_ZN16HighsCliqueTable9CliqueVarC2Eii(ptr noundef nonnull align 4 dereferenceable(4) %90, i32 noundef %1360, i32 noundef 0)
          to label %1361 unwind label %1317

1361:                                             ; preds = %1359
  %1362 = getelementptr inbounds %"struct.HighsCliqueTable::CliqueVar", ptr %89, i32 0, i32 0
  %1363 = load i32, ptr %1362, align 4
  %1364 = getelementptr inbounds %"struct.HighsCliqueTable::CliqueVar", ptr %90, i32 0, i32 0
  %1365 = load i32, ptr %1364, align 4
  %1366 = invoke noundef zeroext i1 @_ZN16HighsCliqueTable16haveCommonCliqueENS_9CliqueVarES0_(ptr noundef nonnull align 8 dereferenceable(488) %1357, i32 %1363, i32 %1365)
          to label %1367 unwind label %1317

1367:                                             ; preds = %1361
  br i1 %1366, label %1368, label %1424

1368:                                             ; preds = %1367, %1349
  %1369 = load double, ptr %31, align 8, !tbaa !99
  %1370 = load double, ptr %85, align 8, !tbaa !99
  %1371 = fneg double %1370
  %1372 = getelementptr inbounds %"class.presolve::HPresolve", ptr %107, i32 0, i32 1
  %1373 = load ptr, ptr %1372, align 8, !tbaa !108
  %1374 = getelementptr inbounds %struct.HighsOptionsStruct, ptr %1373, i32 0, i32 12
  %1375 = load double, ptr %1374, align 8, !tbaa !109
  %1376 = fadd double %1371, %1375
  %1377 = fcmp ole double %1369, %1376
  br i1 %1377, label %1378, label %1424

1378:                                             ; preds = %1368
  %1379 = load i8, ptr %78, align 1, !tbaa !100, !range !101, !noundef !102
  %1380 = trunc i8 %1379 to i1
  br i1 %1380, label %1381, label %1391

1381:                                             ; preds = %1378
  %1382 = load double, ptr %31, align 8, !tbaa !99
  %1383 = load double, ptr %85, align 8, !tbaa !99
  %1384 = fneg double %1383
  %1385 = getelementptr inbounds %"class.presolve::HPresolve", ptr %107, i32 0, i32 1
  %1386 = load ptr, ptr %1385, align 8, !tbaa !108
  %1387 = getelementptr inbounds %struct.HighsOptionsStruct, ptr %1386, i32 0, i32 12
  %1388 = load double, ptr %1387, align 8, !tbaa !109
  %1389 = fsub double %1384, %1388
  %1390 = fcmp oge double %1382, %1389
  br i1 %1390, label %1391, label %1424

1391:                                             ; preds = %1381, %1378
  %1392 = load i32, ptr %20, align 4, !tbaa !98
  %1393 = load i32, ptr %84, align 4, !tbaa !98
  %1394 = invoke noundef zeroext i1 @"_ZZN8presolve9HPresolve16dominatedColumnsERNS_19HighsPostsolveStackEENK3$_2clEiiii"(ptr noundef nonnull align 8 dereferenceable(16) %12, i32 noundef 1, i32 noundef %1392, i32 noundef -1, i32 noundef %1393)
          to label %1395 unwind label %1317

1395:                                             ; preds = %1391
  br i1 %1394, label %1396, label %1424

1396:                                             ; preds = %1395
  %1397 = load i32, ptr %19, align 4, !tbaa !98
  %1398 = add nsw i32 %1397, 1
  store i32 %1398, ptr %19, align 4, !tbaa !98
  %1399 = load ptr, ptr %5, align 8, !tbaa !5
  %1400 = load i32, ptr %84, align 4, !tbaa !98
  %1401 = invoke noundef zeroext i1 @_ZN8presolve9HPresolve24fixColToUpperOrUnboundedERNS_19HighsPostsolveStackEi(ptr noundef nonnull align 8 dereferenceable(1720) %107, ptr noundef nonnull align 8 dereferenceable(224) %1399, i32 noundef %1400)
          to label %1402 unwind label %1317

1402:                                             ; preds = %1396
  br i1 %1401, label %1403, label %1405

1403:                                             ; preds = %1402
  %1404 = getelementptr inbounds %"class.presolve::HPresolve", ptr %107, i32 0, i32 57
  store i32 2, ptr %1404, align 4, !tbaa !114
  store i32 2, ptr %3, align 4
  store i32 1, ptr %21, align 4
  br label %1426

1405:                                             ; preds = %1402
  br label %1406

1406:                                             ; preds = %1405
  call void @llvm.lifetime.start.p0(i64 4, ptr %91) #7
  %1407 = load ptr, ptr %5, align 8, !tbaa !5
  %1408 = invoke noundef i32 @_ZN8presolve9HPresolve19removeRowSingletonsERNS_19HighsPostsolveStackE(ptr noundef nonnull align 8 dereferenceable(1720) %107, ptr noundef nonnull align 8 dereferenceable(224) %1407)
          to label %1409 unwind label %1414

1409:                                             ; preds = %1406
  store i32 %1408, ptr %91, align 4, !tbaa !115
  %1410 = load i32, ptr %91, align 4, !tbaa !115
  %1411 = icmp ne i32 %1410, 0
  br i1 %1411, label %1412, label %1418

1412:                                             ; preds = %1409
  %1413 = load i32, ptr %91, align 4, !tbaa !115
  store i32 %1413, ptr %3, align 4
  store i32 1, ptr %21, align 4
  br label %1419

1414:                                             ; preds = %1406
  %1415 = landingpad { ptr, i32 }
          cleanup
  %1416 = extractvalue { ptr, i32 } %1415, 0
  store ptr %1416, ptr %8, align 8
  %1417 = extractvalue { ptr, i32 } %1415, 1
  store i32 %1417, ptr %9, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %91) #7
  br label %1436

1418:                                             ; preds = %1409
  store i32 0, ptr %21, align 4
  br label %1419

1419:                                             ; preds = %1418, %1412
  call void @llvm.lifetime.end.p0(i64 4, ptr %91) #7
  %1420 = load i32, ptr %21, align 4
  switch i32 %1420, label %1426 [
    i32 0, label %1421
  ]

1421:                                             ; preds = %1419
  br label %1422

1422:                                             ; preds = %1421
  br label %1423

1423:                                             ; preds = %1422
  br label %1424

1424:                                             ; preds = %1423, %1395, %1381, %1368, %1367, %1340
  br label %1425

1425:                                             ; preds = %1424, %1339
  store i32 0, ptr %21, align 4
  br label %1426

1426:                                             ; preds = %1425, %1419, %1403, %1335, %1315
  call void @llvm.lifetime.end.p0(i64 8, ptr %85) #7
  br label %1427

1427:                                             ; preds = %1426, %1239
  call void @llvm.lifetime.end.p0(i64 4, ptr %84) #7
  %1428 = load i32, ptr %21, align 4
  switch i32 %1428, label %1430 [
    i32 0, label %1429
  ]

1429:                                             ; preds = %1427
  store i32 0, ptr %21, align 4
  br label %1430

1430:                                             ; preds = %1429, %1427
  call void @llvm.lifetime.end.p0(i64 8, ptr %83) #7
  %1431 = load i32, ptr %21, align 4
  switch i32 %1431, label %1439 [
    i32 0, label %1432
    i32 27, label %1433
  ]

1432:                                             ; preds = %1430
  br label %1433

1433:                                             ; preds = %1432, %1430
  %1434 = invoke noundef nonnull align 8 dereferenceable(28) ptr @_ZN16HighsMatrixSliceI25HighsTripletPositionSliceE8iteratorppEv(ptr noundef nonnull align 8 dereferenceable(28) %81)
          to label %1435 unwind label %1219

1435:                                             ; preds = %1433
  br label %1207

1436:                                             ; preds = %1414, %1330, %1317
  call void @llvm.lifetime.end.p0(i64 8, ptr %85) #7
  br label %1437

1437:                                             ; preds = %1436, %1244
  call void @llvm.lifetime.end.p0(i64 4, ptr %84) #7
  br label %1438

1438:                                             ; preds = %1437, %1240
  call void @llvm.lifetime.end.p0(i64 8, ptr %83) #7
  br label %1441

1439:                                             ; preds = %1430, %1210
  call void @llvm.lifetime.end.p0(i64 32, ptr %82) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr %81) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr %80) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %79) #7
  %1440 = load i32, ptr %21, align 4
  switch i32 %1440, label %1445 [
    i32 26, label %1444
  ]

1441:                                             ; preds = %1438, %1219
  call void @llvm.lifetime.end.p0(i64 32, ptr %82) #7
  br label %1442

1442:                                             ; preds = %1441, %1215
  call void @llvm.lifetime.end.p0(i64 32, ptr %81) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr %80) #7
  br label %1443

1443:                                             ; preds = %1442, %1211
  call void @llvm.lifetime.end.p0(i64 8, ptr %79) #7
  call void @llvm.lifetime.end.p0(i64 1, ptr %78) #7
  br label %1766

1444:                                             ; preds = %1439
  store i32 0, ptr %21, align 4
  br label %1445

1445:                                             ; preds = %1444, %1439
  call void @llvm.lifetime.end.p0(i64 1, ptr %78) #7
  %1446 = load i32, ptr %21, align 4
  switch i32 %1446, label %1759 [
    i32 0, label %1447
  ]

1447:                                             ; preds = %1445
  br label %1448

1448:                                             ; preds = %1447, %1165
  %1449 = load i32, ptr %32, align 4, !tbaa !98
  %1450 = icmp ne i32 %1449, -1
  br i1 %1450, label %1451, label %1735

1451:                                             ; preds = %1448
  %1452 = load i8, ptr %23, align 1, !tbaa !100, !range !101, !noundef !102
  %1453 = trunc i8 %1452 to i1
  br i1 %1453, label %1457, label %1454

1454:                                             ; preds = %1451
  %1455 = load i8, ptr %25, align 1, !tbaa !100, !range !101, !noundef !102
  %1456 = trunc i8 %1455 to i1
  br label %1457

1457:                                             ; preds = %1454, %1451
  %1458 = phi i1 [ true, %1451 ], [ %1456, %1454 ]
  br i1 %1458, label %1459, label %1460

1459:                                             ; preds = %1457
  br label %1462

1460:                                             ; preds = %1457
  call void @__assert_fail(ptr noundef @.str.75, ptr noundef @.str.55, i32 noundef 1319, ptr noundef @__PRETTY_FUNCTION__._ZN8presolve9HPresolve16dominatedColumnsERNS_19HighsPostsolveStackE) #8
  unreachable

1461:                                             ; No predecessors!
  br label %1462

1462:                                             ; preds = %1461, %1459
  %1463 = load i32, ptr %32, align 4, !tbaa !98
  invoke void @_ZN8presolve9HPresolve8storeRowEi(ptr noundef nonnull align 8 dereferenceable(1720) %107, i32 noundef %1463)
          to label %1464 unwind label %671

1464:                                             ; preds = %1462
  call void @llvm.lifetime.start.p0(i64 1, ptr %92) #7
  %1465 = getelementptr inbounds %"class.presolve::HPresolve", ptr %107, i32 0, i32 0
  %1466 = load ptr, ptr %1465, align 8, !tbaa !9
  %1467 = getelementptr inbounds %class.HighsLp, ptr %1466, i32 0, i32 5
  %1468 = load i32, ptr %32, align 4, !tbaa !98
  %1469 = sext i32 %1468 to i64
  %1470 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt6vectorIdSaIdEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %1467, i64 noundef %1469) #7
  %1471 = load double, ptr %1470, align 8, !tbaa !99
  %1472 = fcmp une double %1471, 0xFFF0000000000000
  br i1 %1472, label %1473, label %1482

1473:                                             ; preds = %1464
  %1474 = getelementptr inbounds %"class.presolve::HPresolve", ptr %107, i32 0, i32 0
  %1475 = load ptr, ptr %1474, align 8, !tbaa !9
  %1476 = getelementptr inbounds %class.HighsLp, ptr %1475, i32 0, i32 6
  %1477 = load i32, ptr %32, align 4, !tbaa !98
  %1478 = sext i32 %1477 to i64
  %1479 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt6vectorIdSaIdEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %1476, i64 noundef %1478) #7
  %1480 = load double, ptr %1479, align 8, !tbaa !99
  %1481 = fcmp une double %1480, 0x7FF0000000000000
  br label %1482

1482:                                             ; preds = %1473, %1464
  %1483 = phi i1 [ false, %1464 ], [ %1481, %1473 ]
  %1484 = zext i1 %1483 to i8
  store i8 %1484, ptr %92, align 1, !tbaa !100
  call void @llvm.lifetime.start.p0(i64 8, ptr %93) #7
  call void @llvm.lifetime.start.p0(i64 32, ptr %94) #7
  invoke void @_ZNK8presolve9HPresolve12getStoredRowEv(ptr dead_on_unwind writable sret(%struct.HighsTripletPositionSlice) align 8 %94, ptr noundef nonnull align 8 dereferenceable(1720) %107)
          to label %1485 unwind label %1494

1485:                                             ; preds = %1482
  store ptr %94, ptr %93, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 32, ptr %95) #7
  %1486 = load ptr, ptr %93, align 8, !tbaa !5
  invoke void @_ZNK16HighsMatrixSliceI25HighsTripletPositionSliceE5beginEv(ptr dead_on_unwind writable sret(%"class.HighsMatrixSlice<HighsTripletPositionSlice>::iterator") align 8 %95, ptr noundef nonnull align 8 dereferenceable(28) %1486)
          to label %1487 unwind label %1498

1487:                                             ; preds = %1485
  call void @llvm.lifetime.start.p0(i64 32, ptr %96) #7
  %1488 = load ptr, ptr %93, align 8, !tbaa !5
  invoke void @_ZNK16HighsMatrixSliceI25HighsTripletPositionSliceE3endEv(ptr dead_on_unwind writable sret(%"class.HighsMatrixSlice<HighsTripletPositionSlice>::iterator") align 8 %96, ptr noundef nonnull align 8 dereferenceable(28) %1488)
          to label %1489 unwind label %1502

1489:                                             ; preds = %1487
  br label %1490

1490:                                             ; preds = %1722, %1489
  %1491 = invoke noundef zeroext i1 @_ZNK16HighsMatrixSliceI25HighsTripletPositionSliceE8iteratorneERKS2_(ptr noundef nonnull align 8 dereferenceable(28) %95, ptr noundef nonnull align 8 dereferenceable(28) %96)
          to label %1492 unwind label %1502

1492:                                             ; preds = %1490
  br i1 %1491, label %1506, label %1493

1493:                                             ; preds = %1492
  store i32 32, ptr %21, align 4
  br label %1726

1494:                                             ; preds = %1482
  %1495 = landingpad { ptr, i32 }
          cleanup
  %1496 = extractvalue { ptr, i32 } %1495, 0
  store ptr %1496, ptr %8, align 8
  %1497 = extractvalue { ptr, i32 } %1495, 1
  store i32 %1497, ptr %9, align 4
  br label %1730

1498:                                             ; preds = %1485
  %1499 = landingpad { ptr, i32 }
          cleanup
  %1500 = extractvalue { ptr, i32 } %1499, 0
  store ptr %1500, ptr %8, align 8
  %1501 = extractvalue { ptr, i32 } %1499, 1
  store i32 %1501, ptr %9, align 4
  br label %1729

1502:                                             ; preds = %1720, %1490, %1487
  %1503 = landingpad { ptr, i32 }
          cleanup
  %1504 = extractvalue { ptr, i32 } %1503, 0
  store ptr %1504, ptr %8, align 8
  %1505 = extractvalue { ptr, i32 } %1503, 1
  store i32 %1505, ptr %9, align 4
  br label %1728

1506:                                             ; preds = %1492
  call void @llvm.lifetime.start.p0(i64 8, ptr %97) #7
  %1507 = invoke noundef nonnull align 8 dereferenceable(16) ptr @_ZN16HighsMatrixSliceI25HighsTripletPositionSliceE8iteratordeEv(ptr noundef nonnull align 8 dereferenceable(28) %95)
          to label %1508 unwind label %1523

1508:                                             ; preds = %1506
  store ptr %1507, ptr %97, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 4, ptr %98) #7
  %1509 = load ptr, ptr %97, align 8, !tbaa !5
  %1510 = invoke noundef i32 @_ZNK17HighsSliceNonzero5indexEv(ptr noundef nonnull align 8 dereferenceable(16) %1509)
          to label %1511 unwind label %1527

1511:                                             ; preds = %1508
  store i32 %1510, ptr %98, align 4, !tbaa !98
  %1512 = load i32, ptr %98, align 4, !tbaa !98
  %1513 = load i32, ptr %20, align 4, !tbaa !98
  %1514 = icmp eq i32 %1512, %1513
  br i1 %1514, label %1522, label %1515

1515:                                             ; preds = %1511
  %1516 = getelementptr inbounds %"class.presolve::HPresolve", ptr %107, i32 0, i32 47
  %1517 = load i32, ptr %98, align 4, !tbaa !98
  %1518 = sext i32 %1517 to i64
  %1519 = call noundef nonnull align 1 dereferenceable(1) ptr @_ZNSt6vectorIhSaIhEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %1516, i64 noundef %1518) #7
  %1520 = load i8, ptr %1519, align 1, !tbaa !105
  %1521 = icmp ne i8 %1520, 0
  br i1 %1521, label %1522, label %1531

1522:                                             ; preds = %1515, %1511
  store i32 33, ptr %21, align 4
  br label %1714

1523:                                             ; preds = %1506
  %1524 = landingpad { ptr, i32 }
          cleanup
  %1525 = extractvalue { ptr, i32 } %1524, 0
  store ptr %1525, ptr %8, align 8
  %1526 = extractvalue { ptr, i32 } %1524, 1
  store i32 %1526, ptr %9, align 4
  br label %1725

1527:                                             ; preds = %1508
  %1528 = landingpad { ptr, i32 }
          cleanup
  %1529 = extractvalue { ptr, i32 } %1528, 0
  store ptr %1529, ptr %8, align 8
  %1530 = extractvalue { ptr, i32 } %1528, 1
  store i32 %1530, ptr %9, align 4
  br label %1724

1531:                                             ; preds = %1515
  call void @llvm.lifetime.start.p0(i64 8, ptr %99) #7
  %1532 = load ptr, ptr %97, align 8, !tbaa !5
  %1533 = invoke noundef double @_ZNK17HighsSliceNonzero5valueEv(ptr noundef nonnull align 8 dereferenceable(16) %1532)
          to label %1534 unwind label %1604

1534:                                             ; preds = %1531
  %1535 = load i32, ptr %34, align 4, !tbaa !98
  %1536 = sitofp i32 %1535 to double
  %1537 = fmul double %1533, %1536
  store double %1537, ptr %99, align 8, !tbaa !99
  %1538 = getelementptr inbounds %"class.presolve::HPresolve", ptr %107, i32 0, i32 0
  %1539 = load ptr, ptr %1538, align 8, !tbaa !9
  %1540 = getelementptr inbounds %class.HighsLp, ptr %1539, i32 0, i32 4
  %1541 = load i32, ptr %98, align 4, !tbaa !98
  %1542 = sext i32 %1541 to i64
  %1543 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt6vectorIdSaIdEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %1540, i64 noundef %1542) #7
  %1544 = load double, ptr %1543, align 8, !tbaa !99
  %1545 = fcmp une double %1544, 0x7FF0000000000000
  br i1 %1545, label %1546, label %1627

1546:                                             ; preds = %1534
  %1547 = load i8, ptr %23, align 1, !tbaa !100, !range !101, !noundef !102
  %1548 = trunc i8 %1547 to i1
  br i1 %1548, label %1565, label %1549

1549:                                             ; preds = %1546
  %1550 = getelementptr inbounds %"class.presolve::HPresolve", ptr %107, i32 0, i32 3
  %1551 = load ptr, ptr %1550, align 8, !tbaa !106
  %1552 = getelementptr inbounds %class.HighsMipSolver, ptr %1551, i32 0, i32 25
  %1553 = call noundef ptr @_ZNKSt10unique_ptrI18HighsMipSolverDataSt14default_deleteIS0_EEptEv(ptr noundef nonnull align 8 dereferenceable(8) %1552) #7
  %1554 = getelementptr inbounds %struct.HighsMipSolverData, ptr %1553, i32 0, i32 6
  %1555 = load i32, ptr %20, align 4, !tbaa !98
  invoke void @_ZN16HighsCliqueTable9CliqueVarC2Eii(ptr noundef nonnull align 4 dereferenceable(4) %100, i32 noundef %1555, i32 noundef 0)
          to label %1556 unwind label %1604

1556:                                             ; preds = %1549
  %1557 = load i32, ptr %98, align 4, !tbaa !98
  invoke void @_ZN16HighsCliqueTable9CliqueVarC2Eii(ptr noundef nonnull align 4 dereferenceable(4) %101, i32 noundef %1557, i32 noundef 0)
          to label %1558 unwind label %1604

1558:                                             ; preds = %1556
  %1559 = getelementptr inbounds %"struct.HighsCliqueTable::CliqueVar", ptr %100, i32 0, i32 0
  %1560 = load i32, ptr %1559, align 4
  %1561 = getelementptr inbounds %"struct.HighsCliqueTable::CliqueVar", ptr %101, i32 0, i32 0
  %1562 = load i32, ptr %1561, align 4
  %1563 = invoke noundef zeroext i1 @_ZN16HighsCliqueTable16haveCommonCliqueENS_9CliqueVarES0_(ptr noundef nonnull align 8 dereferenceable(488) %1554, i32 %1560, i32 %1562)
          to label %1564 unwind label %1604

1564:                                             ; preds = %1558
  br i1 %1563, label %1565, label %1627

1565:                                             ; preds = %1564, %1546
  %1566 = load double, ptr %35, align 8, !tbaa !99
  %1567 = fneg double %1566
  %1568 = load double, ptr %99, align 8, !tbaa !99
  %1569 = fneg double %1568
  %1570 = getelementptr inbounds %"class.presolve::HPresolve", ptr %107, i32 0, i32 1
  %1571 = load ptr, ptr %1570, align 8, !tbaa !108
  %1572 = getelementptr inbounds %struct.HighsOptionsStruct, ptr %1571, i32 0, i32 12
  %1573 = load double, ptr %1572, align 8, !tbaa !109
  %1574 = fadd double %1569, %1573
  %1575 = fcmp ole double %1567, %1574
  br i1 %1575, label %1576, label %1627

1576:                                             ; preds = %1565
  %1577 = load i8, ptr %92, align 1, !tbaa !100, !range !101, !noundef !102
  %1578 = trunc i8 %1577 to i1
  br i1 %1578, label %1579, label %1590

1579:                                             ; preds = %1576
  %1580 = load double, ptr %35, align 8, !tbaa !99
  %1581 = fneg double %1580
  %1582 = load double, ptr %99, align 8, !tbaa !99
  %1583 = fneg double %1582
  %1584 = getelementptr inbounds %"class.presolve::HPresolve", ptr %107, i32 0, i32 1
  %1585 = load ptr, ptr %1584, align 8, !tbaa !108
  %1586 = getelementptr inbounds %struct.HighsOptionsStruct, ptr %1585, i32 0, i32 12
  %1587 = load double, ptr %1586, align 8, !tbaa !109
  %1588 = fsub double %1583, %1587
  %1589 = fcmp oge double %1581, %1588
  br i1 %1589, label %1590, label %1627

1590:                                             ; preds = %1579, %1576
  %1591 = load i32, ptr %20, align 4, !tbaa !98
  %1592 = load i32, ptr %98, align 4, !tbaa !98
  %1593 = invoke noundef zeroext i1 @"_ZZN8presolve9HPresolve16dominatedColumnsERNS_19HighsPostsolveStackEENK3$_2clEiiii"(ptr noundef nonnull align 8 dereferenceable(16) %12, i32 noundef -1, i32 noundef %1591, i32 noundef -1, i32 noundef %1592)
          to label %1594 unwind label %1604

1594:                                             ; preds = %1590
  br i1 %1593, label %1595, label %1627

1595:                                             ; preds = %1594
  %1596 = load i32, ptr %19, align 4, !tbaa !98
  %1597 = add nsw i32 %1596, 1
  store i32 %1597, ptr %19, align 4, !tbaa !98
  %1598 = load ptr, ptr %5, align 8, !tbaa !5
  %1599 = load i32, ptr %98, align 4, !tbaa !98
  %1600 = invoke noundef zeroext i1 @_ZN8presolve9HPresolve24fixColToUpperOrUnboundedERNS_19HighsPostsolveStackEi(ptr noundef nonnull align 8 dereferenceable(1720) %107, ptr noundef nonnull align 8 dereferenceable(224) %1598, i32 noundef %1599)
          to label %1601 unwind label %1604

1601:                                             ; preds = %1595
  br i1 %1600, label %1602, label %1608

1602:                                             ; preds = %1601
  %1603 = getelementptr inbounds %"class.presolve::HPresolve", ptr %107, i32 0, i32 57
  store i32 2, ptr %1603, align 4, !tbaa !114
  store i32 2, ptr %3, align 4
  store i32 1, ptr %21, align 4
  br label %1713

1604:                                             ; preds = %1683, %1678, %1648, %1646, %1639, %1595, %1590, %1558, %1556, %1549, %1531
  %1605 = landingpad { ptr, i32 }
          cleanup
  %1606 = extractvalue { ptr, i32 } %1605, 0
  store ptr %1606, ptr %8, align 8
  %1607 = extractvalue { ptr, i32 } %1605, 1
  store i32 %1607, ptr %9, align 4
  br label %1723

1608:                                             ; preds = %1601
  br label %1609

1609:                                             ; preds = %1608
  call void @llvm.lifetime.start.p0(i64 4, ptr %102) #7
  %1610 = load ptr, ptr %5, align 8, !tbaa !5
  %1611 = invoke noundef i32 @_ZN8presolve9HPresolve19removeRowSingletonsERNS_19HighsPostsolveStackE(ptr noundef nonnull align 8 dereferenceable(1720) %107, ptr noundef nonnull align 8 dereferenceable(224) %1610)
          to label %1612 unwind label %1617

1612:                                             ; preds = %1609
  store i32 %1611, ptr %102, align 4, !tbaa !115
  %1613 = load i32, ptr %102, align 4, !tbaa !115
  %1614 = icmp ne i32 %1613, 0
  br i1 %1614, label %1615, label %1621

1615:                                             ; preds = %1612
  %1616 = load i32, ptr %102, align 4, !tbaa !115
  store i32 %1616, ptr %3, align 4
  store i32 1, ptr %21, align 4
  br label %1622

1617:                                             ; preds = %1609
  %1618 = landingpad { ptr, i32 }
          cleanup
  %1619 = extractvalue { ptr, i32 } %1618, 0
  store ptr %1619, ptr %8, align 8
  %1620 = extractvalue { ptr, i32 } %1618, 1
  store i32 %1620, ptr %9, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %102) #7
  br label %1723

1621:                                             ; preds = %1612
  store i32 0, ptr %21, align 4
  br label %1622

1622:                                             ; preds = %1621, %1615
  call void @llvm.lifetime.end.p0(i64 4, ptr %102) #7
  %1623 = load i32, ptr %21, align 4
  switch i32 %1623, label %1713 [
    i32 0, label %1624
  ]

1624:                                             ; preds = %1622
  br label %1625

1625:                                             ; preds = %1624
  br label %1626

1626:                                             ; preds = %1625
  br label %1712

1627:                                             ; preds = %1594, %1579, %1565, %1564, %1534
  %1628 = getelementptr inbounds %"class.presolve::HPresolve", ptr %107, i32 0, i32 0
  %1629 = load ptr, ptr %1628, align 8, !tbaa !9
  %1630 = getelementptr inbounds %class.HighsLp, ptr %1629, i32 0, i32 3
  %1631 = load i32, ptr %98, align 4, !tbaa !98
  %1632 = sext i32 %1631 to i64
  %1633 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt6vectorIdSaIdEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %1630, i64 noundef %1632) #7
  %1634 = load double, ptr %1633, align 8, !tbaa !99
  %1635 = fcmp une double %1634, 0xFFF0000000000000
  br i1 %1635, label %1636, label %1711

1636:                                             ; preds = %1627
  %1637 = load i8, ptr %23, align 1, !tbaa !100, !range !101, !noundef !102
  %1638 = trunc i8 %1637 to i1
  br i1 %1638, label %1655, label %1639

1639:                                             ; preds = %1636
  %1640 = getelementptr inbounds %"class.presolve::HPresolve", ptr %107, i32 0, i32 3
  %1641 = load ptr, ptr %1640, align 8, !tbaa !106
  %1642 = getelementptr inbounds %class.HighsMipSolver, ptr %1641, i32 0, i32 25
  %1643 = call noundef ptr @_ZNKSt10unique_ptrI18HighsMipSolverDataSt14default_deleteIS0_EEptEv(ptr noundef nonnull align 8 dereferenceable(8) %1642) #7
  %1644 = getelementptr inbounds %struct.HighsMipSolverData, ptr %1643, i32 0, i32 6
  %1645 = load i32, ptr %20, align 4, !tbaa !98
  invoke void @_ZN16HighsCliqueTable9CliqueVarC2Eii(ptr noundef nonnull align 4 dereferenceable(4) %103, i32 noundef %1645, i32 noundef 0)
          to label %1646 unwind label %1604

1646:                                             ; preds = %1639
  %1647 = load i32, ptr %98, align 4, !tbaa !98
  invoke void @_ZN16HighsCliqueTable9CliqueVarC2Eii(ptr noundef nonnull align 4 dereferenceable(4) %104, i32 noundef %1647, i32 noundef 1)
          to label %1648 unwind label %1604

1648:                                             ; preds = %1646
  %1649 = getelementptr inbounds %"struct.HighsCliqueTable::CliqueVar", ptr %103, i32 0, i32 0
  %1650 = load i32, ptr %1649, align 4
  %1651 = getelementptr inbounds %"struct.HighsCliqueTable::CliqueVar", ptr %104, i32 0, i32 0
  %1652 = load i32, ptr %1651, align 4
  %1653 = invoke noundef zeroext i1 @_ZN16HighsCliqueTable16haveCommonCliqueENS_9CliqueVarES0_(ptr noundef nonnull align 8 dereferenceable(488) %1644, i32 %1650, i32 %1652)
          to label %1654 unwind label %1604

1654:                                             ; preds = %1648
  br i1 %1653, label %1655, label %1711

1655:                                             ; preds = %1654, %1636
  %1656 = load double, ptr %35, align 8, !tbaa !99
  %1657 = fneg double %1656
  %1658 = load double, ptr %99, align 8, !tbaa !99
  %1659 = getelementptr inbounds %"class.presolve::HPresolve", ptr %107, i32 0, i32 1
  %1660 = load ptr, ptr %1659, align 8, !tbaa !108
  %1661 = getelementptr inbounds %struct.HighsOptionsStruct, ptr %1660, i32 0, i32 12
  %1662 = load double, ptr %1661, align 8, !tbaa !109
  %1663 = fadd double %1658, %1662
  %1664 = fcmp ole double %1657, %1663
  br i1 %1664, label %1665, label %1711

1665:                                             ; preds = %1655
  %1666 = load i8, ptr %92, align 1, !tbaa !100, !range !101, !noundef !102
  %1667 = trunc i8 %1666 to i1
  br i1 %1667, label %1668, label %1678

1668:                                             ; preds = %1665
  %1669 = load double, ptr %35, align 8, !tbaa !99
  %1670 = fneg double %1669
  %1671 = load double, ptr %99, align 8, !tbaa !99
  %1672 = getelementptr inbounds %"class.presolve::HPresolve", ptr %107, i32 0, i32 1
  %1673 = load ptr, ptr %1672, align 8, !tbaa !108
  %1674 = getelementptr inbounds %struct.HighsOptionsStruct, ptr %1673, i32 0, i32 12
  %1675 = load double, ptr %1674, align 8, !tbaa !109
  %1676 = fsub double %1671, %1675
  %1677 = fcmp oge double %1670, %1676
  br i1 %1677, label %1678, label %1711

1678:                                             ; preds = %1668, %1665
  %1679 = load i32, ptr %20, align 4, !tbaa !98
  %1680 = load i32, ptr %98, align 4, !tbaa !98
  %1681 = invoke noundef zeroext i1 @"_ZZN8presolve9HPresolve16dominatedColumnsERNS_19HighsPostsolveStackEENK3$_2clEiiii"(ptr noundef nonnull align 8 dereferenceable(16) %12, i32 noundef -1, i32 noundef %1679, i32 noundef 1, i32 noundef %1680)
          to label %1682 unwind label %1604

1682:                                             ; preds = %1678
  br i1 %1681, label %1683, label %1711

1683:                                             ; preds = %1682
  %1684 = load i32, ptr %19, align 4, !tbaa !98
  %1685 = add nsw i32 %1684, 1
  store i32 %1685, ptr %19, align 4, !tbaa !98
  %1686 = load ptr, ptr %5, align 8, !tbaa !5
  %1687 = load i32, ptr %98, align 4, !tbaa !98
  %1688 = invoke noundef zeroext i1 @_ZN8presolve9HPresolve24fixColToLowerOrUnboundedERNS_19HighsPostsolveStackEi(ptr noundef nonnull align 8 dereferenceable(1720) %107, ptr noundef nonnull align 8 dereferenceable(224) %1686, i32 noundef %1687)
          to label %1689 unwind label %1604

1689:                                             ; preds = %1683
  br i1 %1688, label %1690, label %1692

1690:                                             ; preds = %1689
  %1691 = getelementptr inbounds %"class.presolve::HPresolve", ptr %107, i32 0, i32 57
  store i32 2, ptr %1691, align 4, !tbaa !114
  store i32 2, ptr %3, align 4
  store i32 1, ptr %21, align 4
  br label %1713

1692:                                             ; preds = %1689
  br label %1693

1693:                                             ; preds = %1692
  call void @llvm.lifetime.start.p0(i64 4, ptr %105) #7
  %1694 = load ptr, ptr %5, align 8, !tbaa !5
  %1695 = invoke noundef i32 @_ZN8presolve9HPresolve19removeRowSingletonsERNS_19HighsPostsolveStackE(ptr noundef nonnull align 8 dereferenceable(1720) %107, ptr noundef nonnull align 8 dereferenceable(224) %1694)
          to label %1696 unwind label %1701

1696:                                             ; preds = %1693
  store i32 %1695, ptr %105, align 4, !tbaa !115
  %1697 = load i32, ptr %105, align 4, !tbaa !115
  %1698 = icmp ne i32 %1697, 0
  br i1 %1698, label %1699, label %1705

1699:                                             ; preds = %1696
  %1700 = load i32, ptr %105, align 4, !tbaa !115
  store i32 %1700, ptr %3, align 4
  store i32 1, ptr %21, align 4
  br label %1706

1701:                                             ; preds = %1693
  %1702 = landingpad { ptr, i32 }
          cleanup
  %1703 = extractvalue { ptr, i32 } %1702, 0
  store ptr %1703, ptr %8, align 8
  %1704 = extractvalue { ptr, i32 } %1702, 1
  store i32 %1704, ptr %9, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %105) #7
  br label %1723

1705:                                             ; preds = %1696
  store i32 0, ptr %21, align 4
  br label %1706

1706:                                             ; preds = %1705, %1699
  call void @llvm.lifetime.end.p0(i64 4, ptr %105) #7
  %1707 = load i32, ptr %21, align 4
  switch i32 %1707, label %1713 [
    i32 0, label %1708
  ]

1708:                                             ; preds = %1706
  br label %1709

1709:                                             ; preds = %1708
  br label %1710

1710:                                             ; preds = %1709
  br label %1711

1711:                                             ; preds = %1710, %1682, %1668, %1655, %1654, %1627
  br label %1712

1712:                                             ; preds = %1711, %1626
  store i32 0, ptr %21, align 4
  br label %1713

1713:                                             ; preds = %1712, %1706, %1690, %1622, %1602
  call void @llvm.lifetime.end.p0(i64 8, ptr %99) #7
  br label %1714

1714:                                             ; preds = %1713, %1522
  call void @llvm.lifetime.end.p0(i64 4, ptr %98) #7
  %1715 = load i32, ptr %21, align 4
  switch i32 %1715, label %1717 [
    i32 0, label %1716
  ]

1716:                                             ; preds = %1714
  store i32 0, ptr %21, align 4
  br label %1717

1717:                                             ; preds = %1716, %1714
  call void @llvm.lifetime.end.p0(i64 8, ptr %97) #7
  %1718 = load i32, ptr %21, align 4
  switch i32 %1718, label %1726 [
    i32 0, label %1719
    i32 33, label %1720
  ]

1719:                                             ; preds = %1717
  br label %1720

1720:                                             ; preds = %1719, %1717
  %1721 = invoke noundef nonnull align 8 dereferenceable(28) ptr @_ZN16HighsMatrixSliceI25HighsTripletPositionSliceE8iteratorppEv(ptr noundef nonnull align 8 dereferenceable(28) %95)
          to label %1722 unwind label %1502

1722:                                             ; preds = %1720
  br label %1490

1723:                                             ; preds = %1701, %1617, %1604
  call void @llvm.lifetime.end.p0(i64 8, ptr %99) #7
  br label %1724

1724:                                             ; preds = %1723, %1527
  call void @llvm.lifetime.end.p0(i64 4, ptr %98) #7
  br label %1725

1725:                                             ; preds = %1724, %1523
  call void @llvm.lifetime.end.p0(i64 8, ptr %97) #7
  br label %1728

1726:                                             ; preds = %1717, %1493
  call void @llvm.lifetime.end.p0(i64 32, ptr %96) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr %95) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr %94) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %93) #7
  %1727 = load i32, ptr %21, align 4
  switch i32 %1727, label %1732 [
    i32 32, label %1731
  ]

1728:                                             ; preds = %1725, %1502
  call void @llvm.lifetime.end.p0(i64 32, ptr %96) #7
  br label %1729

1729:                                             ; preds = %1728, %1498
  call void @llvm.lifetime.end.p0(i64 32, ptr %95) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr %94) #7
  br label %1730

1730:                                             ; preds = %1729, %1494
  call void @llvm.lifetime.end.p0(i64 8, ptr %93) #7
  call void @llvm.lifetime.end.p0(i64 1, ptr %92) #7
  br label %1766

1731:                                             ; preds = %1726
  store i32 0, ptr %21, align 4
  br label %1732

1732:                                             ; preds = %1731, %1726
  call void @llvm.lifetime.end.p0(i64 1, ptr %92) #7
  %1733 = load i32, ptr %21, align 4
  switch i32 %1733, label %1759 [
    i32 0, label %1734
  ]

1734:                                             ; preds = %1732
  br label %1735

1735:                                             ; preds = %1734, %1448
  %1736 = load i32, ptr %19, align 4, !tbaa !98
  %1737 = load i32, ptr %27, align 4, !tbaa !98
  %1738 = icmp ne i32 %1736, %1737
  br i1 %1738, label %1739, label %1758

1739:                                             ; preds = %1735
  br label %1740

1740:                                             ; preds = %1739
  call void @llvm.lifetime.start.p0(i64 4, ptr %106) #7
  %1741 = load ptr, ptr %5, align 8, !tbaa !5
  %1742 = invoke noundef i32 @_ZN8presolve9HPresolve24removeDoubletonEquationsERNS_19HighsPostsolveStackE(ptr noundef nonnull align 8 dereferenceable(1720) %107, ptr noundef nonnull align 8 dereferenceable(224) %1741)
          to label %1743 unwind label %1748

1743:                                             ; preds = %1740
  store i32 %1742, ptr %106, align 4, !tbaa !115
  %1744 = load i32, ptr %106, align 4, !tbaa !115
  %1745 = icmp ne i32 %1744, 0
  br i1 %1745, label %1746, label %1752

1746:                                             ; preds = %1743
  %1747 = load i32, ptr %106, align 4, !tbaa !115
  store i32 %1747, ptr %3, align 4
  store i32 1, ptr %21, align 4
  br label %1753

1748:                                             ; preds = %1740
  %1749 = landingpad { ptr, i32 }
          cleanup
  %1750 = extractvalue { ptr, i32 } %1749, 0
  store ptr %1750, ptr %8, align 8
  %1751 = extractvalue { ptr, i32 } %1749, 1
  store i32 %1751, ptr %9, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %106) #7
  br label %1766

1752:                                             ; preds = %1743
  store i32 0, ptr %21, align 4
  br label %1753

1753:                                             ; preds = %1752, %1746
  call void @llvm.lifetime.end.p0(i64 4, ptr %106) #7
  %1754 = load i32, ptr %21, align 4
  switch i32 %1754, label %1759 [
    i32 0, label %1755
  ]

1755:                                             ; preds = %1753
  br label %1756

1756:                                             ; preds = %1755
  br label %1757

1757:                                             ; preds = %1756
  br label %1758

1758:                                             ; preds = %1757, %1735
  store i32 0, ptr %21, align 4
  br label %1759

1759:                                             ; preds = %1758, %1753, %1732, %1445, %1145, %883
  call void @llvm.lifetime.end.p0(i64 1, ptr %39) #7
  call void @llvm.lifetime.end.p0(i64 1, ptr %38) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %37) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %36) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %35) #7
  call void @llvm.lifetime.end.p0(i64 4, ptr %34) #7
  call void @llvm.lifetime.end.p0(i64 4, ptr %33) #7
  call void @llvm.lifetime.end.p0(i64 4, ptr %32) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %31) #7
  call void @llvm.lifetime.end.p0(i64 4, ptr %30) #7
  call void @llvm.lifetime.end.p0(i64 4, ptr %29) #7
  call void @llvm.lifetime.end.p0(i64 4, ptr %28) #7
  call void @llvm.lifetime.end.p0(i64 4, ptr %27) #7
  br label %1760

1760:                                             ; preds = %1759, %262
  call void @llvm.lifetime.end.p0(i64 1, ptr %26) #7
  call void @llvm.lifetime.end.p0(i64 1, ptr %25) #7
  call void @llvm.lifetime.end.p0(i64 1, ptr %24) #7
  call void @llvm.lifetime.end.p0(i64 1, ptr %23) #7
  call void @llvm.lifetime.end.p0(i64 1, ptr %22) #7
  %1761 = load i32, ptr %21, align 4
  switch i32 %1761, label %1768 [
    i32 0, label %1762
    i32 7, label %1763
  ]

1762:                                             ; preds = %1760
  br label %1763

1763:                                             ; preds = %1762, %1760, %217
  %1764 = load i32, ptr %20, align 4, !tbaa !98
  %1765 = add nsw i32 %1764, 1
  store i32 %1765, ptr %20, align 4, !tbaa !98
  br label %202, !llvm.loop !117

1766:                                             ; preds = %1748, %1730, %1443, %1148, %886, %671, %614
  call void @llvm.lifetime.end.p0(i64 1, ptr %39) #7
  call void @llvm.lifetime.end.p0(i64 1, ptr %38) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %37) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %36) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %35) #7
  call void @llvm.lifetime.end.p0(i64 4, ptr %34) #7
  call void @llvm.lifetime.end.p0(i64 4, ptr %33) #7
  call void @llvm.lifetime.end.p0(i64 4, ptr %32) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %31) #7
  call void @llvm.lifetime.end.p0(i64 4, ptr %30) #7
  call void @llvm.lifetime.end.p0(i64 4, ptr %29) #7
  call void @llvm.lifetime.end.p0(i64 4, ptr %28) #7
  call void @llvm.lifetime.end.p0(i64 4, ptr %27) #7
  br label %1767

1767:                                             ; preds = %1766, %252
  call void @llvm.lifetime.end.p0(i64 1, ptr %26) #7
  call void @llvm.lifetime.end.p0(i64 1, ptr %25) #7
  call void @llvm.lifetime.end.p0(i64 1, ptr %24) #7
  call void @llvm.lifetime.end.p0(i64 1, ptr %23) #7
  call void @llvm.lifetime.end.p0(i64 1, ptr %22) #7
  call void @llvm.lifetime.end.p0(i64 4, ptr %20) #7
  br label %1786

1768:                                             ; preds = %1760, %209
  call void @llvm.lifetime.end.p0(i64 4, ptr %20) #7
  %1769 = load i32, ptr %21, align 4
  switch i32 %1769, label %1784 [
    i32 5, label %1770
  ]

1770:                                             ; preds = %1768
  %1771 = load i32, ptr %19, align 4, !tbaa !98
  %1772 = icmp ne i32 %1771, 0
  br i1 %1772, label %1773, label %1783

1773:                                             ; preds = %1770
  %1774 = getelementptr inbounds %"class.presolve::HPresolve", ptr %107, i32 0, i32 1
  %1775 = load ptr, ptr %1774, align 8, !tbaa !108
  %1776 = getelementptr inbounds %struct.HighsOptionsStruct, ptr %1775, i32 0, i32 130
  %1777 = load i32, ptr %19, align 4, !tbaa !98
  invoke void (ptr, i32, ptr, ...) @_Z11highsLogDevRK15HighsLogOptions12HighsLogTypePKcz(ptr noundef nonnull align 8 dereferenceable(89) %1776, i32 noundef 1, ptr noundef @.str.76, i32 noundef %1777)
          to label %1778 unwind label %1779

1778:                                             ; preds = %1773
  br label %1783

1779:                                             ; preds = %1773
  %1780 = landingpad { ptr, i32 }
          cleanup
  %1781 = extractvalue { ptr, i32 } %1780, 0
  store ptr %1781, ptr %8, align 8
  %1782 = extractvalue { ptr, i32 } %1780, 1
  store i32 %1782, ptr %9, align 4
  br label %1786

1783:                                             ; preds = %1778, %1770
  store i32 0, ptr %3, align 4
  store i32 1, ptr %21, align 4
  br label %1784

1784:                                             ; preds = %1783, %1768
  call void @llvm.lifetime.end.p0(i64 4, ptr %19) #7
  call void @llvm.lifetime.end.p0(i64 4, ptr %13) #7
  call void @llvm.lifetime.end.p0(i64 16, ptr %12) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %11) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %10) #7
  call void @_ZNSt6vectorISt4pairIjjESaIS1_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %6) #7
  call void @llvm.lifetime.end.p0(i64 24, ptr %6) #7
  %1785 = load i32, ptr %3, align 4
  ret i32 %1785

1786:                                             ; preds = %1779, %1767
  call void @llvm.lifetime.end.p0(i64 4, ptr %19) #7
  br label %1787

1787:                                             ; preds = %1786, %183
  call void @llvm.lifetime.end.p0(i64 4, ptr %13) #7
  call void @llvm.lifetime.end.p0(i64 16, ptr %12) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %11) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %10) #7
  call void @_ZNSt6vectorISt4pairIjjESaIS1_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %6) #7
  br label %1788

1788:                                             ; preds = %1787, %126
  call void @llvm.lifetime.end.p0(i64 24, ptr %6) #7
  br label %1789

1789:                                             ; preds = %1788
  %1790 = load ptr, ptr %8, align 8
  %1791 = load i32, ptr %9, align 4
  %1792 = insertvalue { ptr, i32 } poison, ptr %1790, 0
  %1793 = insertvalue { ptr, i32 } %1792, i32 %1791, 1
  resume { ptr, i32 } %1793
}

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

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

; Function Attrs: inlinehint mustprogress uwtable
declare hidden void @"_ZZN8presolve9HPresolve16dominatedColumnsERNS_19HighsPostsolveStackEENK3$_1clEiijj"(ptr noundef nonnull align 8 dereferenceable(8), i32 noundef, i32 noundef, i32 noundef, i32 noundef) #6 align 2

; Function Attrs: inlinehint mustprogress nounwind uwtable
declare hidden noundef zeroext i1 @"_ZZN8presolve9HPresolve16dominatedColumnsERNS_19HighsPostsolveStackEENK3$_0clEi"(ptr noundef nonnull align 8 dereferenceable(8), i32 noundef) #5 align 2

; Function Attrs: mustprogress uwtable
declare dso_local noundef i32 @_ZNK16HighsCliqueTable10numCliquesEib(ptr noundef nonnull align 8 dereferenceable(488), i32 noundef, i1 noundef zeroext) #4 align 2

declare noundef double @_ZNK20HighsLinearSumBounds19getResidualSumUpperEiid(ptr noundef nonnull align 8 dereferenceable(240), i32 noundef, i32 noundef, double noundef) #3

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

declare noundef double @_ZNK20HighsLinearSumBounds19getResidualSumLowerEiid(ptr noundef nonnull align 8 dereferenceable(240), i32 noundef, i32 noundef, double noundef) #3

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

; Function Attrs: mustprogress uwtable
declare dso_local void @_ZNK8presolve9HPresolve12getStoredRowEv(ptr dead_on_unwind noalias writable sret(%struct.HighsTripletPositionSlice) align 8, ptr noundef nonnull align 8 dereferenceable(1720)) #4 align 2

; Function Attrs: mustprogress uwtable
declare dso_local void @_ZNK16HighsMatrixSliceI25HighsTripletPositionSliceE5beginEv(ptr dead_on_unwind noalias writable sret(%"class.HighsMatrixSlice<HighsTripletPositionSlice>::iterator") align 8, ptr noundef nonnull align 8 dereferenceable(28)) #4 align 2

; Function Attrs: mustprogress uwtable
declare dso_local void @_ZNK16HighsMatrixSliceI25HighsTripletPositionSliceE3endEv(ptr dead_on_unwind noalias writable sret(%"class.HighsMatrixSlice<HighsTripletPositionSlice>::iterator") align 8, ptr noundef nonnull align 8 dereferenceable(28)) #4 align 2

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

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

; Function Attrs: inlinehint mustprogress uwtable
declare hidden noundef zeroext i1 @"_ZZN8presolve9HPresolve16dominatedColumnsERNS_19HighsPostsolveStackEENK3$_2clEiiii"(ptr noundef nonnull align 8 dereferenceable(16), i32 noundef, i32 noundef, i32 noundef, i32 noundef) #6 align 2

; Function Attrs: mustprogress uwtable
declare dso_local noundef zeroext i1 @_ZN8presolve9HPresolve24fixColToLowerOrUnboundedERNS_19HighsPostsolveStackEi(ptr noundef nonnull align 8 dereferenceable(1720), ptr noundef nonnull align 8 dereferenceable(224), i32 noundef) #4 align 2

; Function Attrs: mustprogress uwtable
declare dso_local noundef i32 @_ZN8presolve9HPresolve19removeRowSingletonsERNS_19HighsPostsolveStackE(ptr noundef nonnull align 8 dereferenceable(1720), ptr noundef nonnull align 8 dereferenceable(224)) #4 align 2

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

; Function Attrs: mustprogress uwtable
declare dso_local noundef i32 @_ZN8presolve9HPresolve24removeDoubletonEquationsERNS_19HighsPostsolveStackE(ptr noundef nonnull align 8 dereferenceable(1720), ptr noundef nonnull align 8 dereferenceable(224)) #4 align 2

; Function Attrs: mustprogress uwtable
declare dso_local noundef zeroext i1 @_ZN8presolve9HPresolve24fixColToUpperOrUnboundedERNS_19HighsPostsolveStackEi(ptr noundef nonnull align 8 dereferenceable(1720), ptr noundef nonnull align 8 dereferenceable(224), i32 noundef) #4 align 2

; Function Attrs: mustprogress uwtable
declare dso_local noundef zeroext i1 @_ZN16HighsCliqueTable16haveCommonCliqueENS_9CliqueVarES0_(ptr noundef nonnull align 8 dereferenceable(488), i32, i32) #4 align 2

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

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

; Function Attrs: mustprogress nounwind uwtable
declare dso_local void @_ZNSt15__new_allocatorISt4pairIjjEED2Ev(ptr noundef nonnull align 1 dereferenceable(1)) 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 = { noreturn nounwind "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }
attributes #3 = { "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }
attributes #4 = { 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 #5 = { inlinehint mustprogress nounwind uwtable "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }
attributes #6 = { inlinehint mustprogress uwtable "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }
attributes #7 = { nounwind }
attributes #8 = { noreturn nounwind }

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

!0 = !{i32 1, !"wchar_size", i32 4}
!1 = !{i32 8, !"PIC Level", i32 2}
!2 = !{i32 7, !"PIE Level", i32 2}
!3 = !{i32 7, !"uwtable", i32 2}
!4 = !{!"clang version 19.1.0 (git@github.com:llvm/llvm-project.git a4bf6cd7cfb1a1421ba92bca9d017b49936c55e4)"}
!5 = !{!6, !6, i64 0}
!6 = !{!"any pointer", !7, i64 0}
!7 = !{!"omnipotent char", !8, i64 0}
!8 = !{!"Simple C++ TBAA"}
!9 = !{!10, !6, i64 0}
!10 = !{!"_ZTSN8presolve9HPresolveE", !6, i64 0, !6, i64 8, !6, i64 16, !6, i64 24, !11, i64 32, !12, i64 40, !16, i64 64, !16, i64 88, !16, i64 112, !16, i64 136, !16, i64 160, !16, i64 184, !16, i64 208, !16, i64 232, !16, i64 256, !16, i64 280, !16, i64 304, !16, i64 328, !16, i64 352, !16, i64 376, !12, i64 400, !12, i64 424, !16, i64 448, !16, i64 472, !12, i64 496, !12, i64 520, !12, i64 544, !12, i64 568, !16, i64 592, !16, i64 616, !20, i64 640, !20, i64 664, !24, i64 688, !24, i64 928, !16, i64 1168, !29, i64 1192, !16, i64 1216, !29, i64 1240, !33, i64 1264, !37, i64 1288, !43, i64 1344, !51, i64 1392, !55, i64 1416, !39, i64 1424, !16, i64 1432, !16, i64 1456, !29, i64 1480, !29, i64 1504, !56, i64 1528, !39, i64 1552, !60, i64 1560, !60, i64 1564, !60, i64 1568, !60, i64 1572, !60, i64 1576, !60, i64 1580, !55, i64 1584, !61, i64 1588, !62, i64 1592}
!11 = !{!"double", !7, i64 0}
!12 = !{!"_ZTSSt6vectorIdSaIdEE", !13, i64 0}
!13 = !{!"_ZTSSt12_Vector_baseIdSaIdEE", !14, i64 0}
!14 = !{!"_ZTSNSt12_Vector_baseIdSaIdEE12_Vector_implE", !15, i64 0}
!15 = !{!"_ZTSNSt12_Vector_baseIdSaIdEE17_Vector_impl_dataE", !6, i64 0, !6, i64 8, !6, i64 16}
!16 = !{!"_ZTSSt6vectorIiSaIiEE", !17, i64 0}
!17 = !{!"_ZTSSt12_Vector_baseIiSaIiEE", !18, i64 0}
!18 = !{!"_ZTSNSt12_Vector_baseIiSaIiEE12_Vector_implE", !19, i64 0}
!19 = !{!"_ZTSNSt12_Vector_baseIiSaIiEE17_Vector_impl_dataE", !6, i64 0, !6, i64 8, !6, i64 16}
!20 = !{!"_ZTSSt6vectorISt3setIiSt4lessIiESaIiEESaIS4_EE", !21, i64 0}
!21 = !{!"_ZTSSt12_Vector_baseISt3setIiSt4lessIiESaIiEESaIS4_EE", !22, i64 0}
!22 = !{!"_ZTSNSt12_Vector_baseISt3setIiSt4lessIiESaIiEESaIS4_EE12_Vector_implE", !23, i64 0}
!23 = !{!"_ZTSNSt12_Vector_baseISt3setIiSt4lessIiESaIiEESaIS4_EE17_Vector_impl_dataE", !6, i64 0, !6, i64 8, !6, i64 16}
!24 = !{!"_ZTS20HighsLinearSumBounds", !25, i64 0, !25, i64 24, !16, i64 48, !16, i64 72, !25, i64 96, !25, i64 120, !16, i64 144, !16, i64 168, !6, i64 192, !6, i64 200, !6, i64 208, !6, i64 216, !6, i64 224, !6, i64 232}
!25 = !{!"_ZTSSt6vectorI12HighsCDoubleSaIS0_EE", !26, i64 0}
!26 = !{!"_ZTSSt12_Vector_baseI12HighsCDoubleSaIS0_EE", !27, i64 0}
!27 = !{!"_ZTSNSt12_Vector_baseI12HighsCDoubleSaIS0_EE12_Vector_implE", !28, i64 0}
!28 = !{!"_ZTSNSt12_Vector_baseI12HighsCDoubleSaIS0_EE17_Vector_impl_dataE", !6, i64 0, !6, i64 8, !6, i64 16}
!29 = !{!"_ZTSSt6vectorIhSaIhEE", !30, i64 0}
!30 = !{!"_ZTSSt12_Vector_baseIhSaIhEE", !31, i64 0}
!31 = !{!"_ZTSNSt12_Vector_baseIhSaIhEE12_Vector_implE", !32, i64 0}
!32 = !{!"_ZTSNSt12_Vector_baseIhSaIhEE17_Vector_impl_dataE", !6, i64 0, !6, i64 8, !6, i64 16}
!33 = !{!"_ZTSSt6vectorISt4pairIiiESaIS1_EE", !34, i64 0}
!34 = !{!"_ZTSSt12_Vector_baseISt4pairIiiESaIS1_EE", !35, i64 0}
!35 = !{!"_ZTSNSt12_Vector_baseISt4pairIiiESaIS1_EE12_Vector_implE", !36, i64 0}
!36 = !{!"_ZTSNSt12_Vector_baseISt4pairIiiESaIS1_EE17_Vector_impl_dataE", !6, i64 0, !6, i64 8, !6, i64 16}
!37 = !{!"_ZTSSt13unordered_mapIi13HighsHashTreeISt4pairIiiEdESt4hashIiESt8equal_toIiESaIS1_IKiS3_EEE", !38, i64 0}
!38 = !{!"_ZTSSt10_HashtableIiSt4pairIKi13HighsHashTreeIS0_IiiEdEESaIS5_ENSt8__detail10_Select1stESt8equal_toIiESt4hashIiENS7_18_Mod_range_hashingENS7_20_Default_ranged_hashENS7_20_Prime_rehash_policyENS7_17_Hashtable_traitsILb0ELb0ELb1EEEE", !6, i64 0, !39, i64 8, !40, i64 16, !39, i64 24, !41, i64 32, !6, i64 48}
!39 = !{!"long", !7, i64 0}
!40 = !{!"_ZTSNSt8__detail15_Hash_node_baseE", !6, i64 0}
!41 = !{!"_ZTSNSt8__detail20_Prime_rehash_policyE", !42, i64 0, !39, i64 8}
!42 = !{!"float", !7, i64 0}
!43 = !{!"_ZTSSt3setISt4pairIiiESt4lessIS1_ESaIS1_EE", !44, i64 0}
!44 = !{!"_ZTSSt8_Rb_treeISt4pairIiiES1_St9_IdentityIS1_ESt4lessIS1_ESaIS1_EE", !45, i64 0}
!45 = !{!"_ZTSNSt8_Rb_treeISt4pairIiiES1_St9_IdentityIS1_ESt4lessIS1_ESaIS1_EE13_Rb_tree_implIS5_Lb1EEE", !46, i64 0, !48, i64 8}
!46 = !{!"_ZTSSt20_Rb_tree_key_compareISt4lessISt4pairIiiEEE", !47, i64 0}
!47 = !{!"_ZTSSt4lessISt4pairIiiEE"}
!48 = !{!"_ZTSSt15_Rb_tree_header", !49, i64 0, !39, i64 32}
!49 = !{!"_ZTSSt18_Rb_tree_node_base", !50, i64 0, !6, i64 8, !6, i64 16, !6, i64 24}
!50 = !{!"_ZTSSt14_Rb_tree_color", !7, i64 0}
!51 = !{!"_ZTSSt6vectorISt23_Rb_tree_const_iteratorISt4pairIiiEESaIS3_EE", !52, i64 0}
!52 = !{!"_ZTSSt12_Vector_baseISt23_Rb_tree_const_iteratorISt4pairIiiEESaIS3_EE", !53, i64 0}
!53 = !{!"_ZTSNSt12_Vector_baseISt23_Rb_tree_const_iteratorISt4pairIiiEESaIS3_EE12_Vector_implE", !54, i64 0}
!54 = !{!"_ZTSNSt12_Vector_baseISt23_Rb_tree_const_iteratorISt4pairIiiEESaIS3_EE17_Vector_impl_dataE", !6, i64 0, !6, i64 8, !6, i64 16}
!55 = !{!"bool", !7, i64 0}
!56 = !{!"_ZTSSt6vectorItSaItEE", !57, i64 0}
!57 = !{!"_ZTSSt12_Vector_baseItSaItEE", !58, i64 0}
!58 = !{!"_ZTSNSt12_Vector_baseItSaItEE12_Vector_implE", !59, i64 0}
!59 = !{!"_ZTSNSt12_Vector_baseItSaItEE17_Vector_impl_dataE", !6, i64 0, !6, i64 8, !6, i64 16}
!60 = !{!"int", !7, i64 0}
!61 = !{!"_ZTS19HighsPresolveStatus", !7, i64 0}
!62 = !{!"_ZTS17HPresolveAnalysis", !6, i64 0, !6, i64 8, !6, i64 16, !6, i64 24, !6, i64 32, !60, i64 40, !60, i64 44, !63, i64 48, !55, i64 88, !55, i64 89, !60, i64 92, !60, i64 96, !60, i64 100, !69, i64 104}
!63 = !{!"_ZTSSt6vectorIbSaIbEE", !64, i64 0}
!64 = !{!"_ZTSSt13_Bvector_baseISaIbEE", !65, i64 0}
!65 = !{!"_ZTSNSt13_Bvector_baseISaIbEE13_Bvector_implE", !66, i64 0}
!66 = !{!"_ZTSNSt13_Bvector_baseISaIbEE18_Bvector_impl_dataE", !67, i64 0, !67, i64 16, !6, i64 32}
!67 = !{!"_ZTSSt13_Bit_iterator", !68, i64 0}
!68 = !{!"_ZTSSt18_Bit_iterator_base", !6, i64 0, !60, i64 8}
!69 = !{!"_ZTS16HighsPresolveLog", !70, i64 0}
!70 = !{!"_ZTSSt6vectorI20HighsPresolveRuleLogSaIS0_EE", !71, i64 0}
!71 = !{!"_ZTSSt12_Vector_baseI20HighsPresolveRuleLogSaIS0_EE", !72, i64 0}
!72 = !{!"_ZTSNSt12_Vector_baseI20HighsPresolveRuleLogSaIS0_EE12_Vector_implE", !73, i64 0}
!73 = !{!"_ZTSNSt12_Vector_baseI20HighsPresolveRuleLogSaIS0_EE17_Vector_impl_dataE", !6, i64 0, !6, i64 8, !6, i64 16}
!74 = !{!75, !60, i64 0}
!75 = !{!"_ZTS7HighsLp", !60, i64 0, !60, i64 4, !12, i64 8, !12, i64 32, !12, i64 56, !12, i64 80, !12, i64 104, !76, i64 128, !78, i64 240, !11, i64 248, !79, i64 256, !79, i64 288, !60, i64 320, !60, i64 324, !81, i64 328, !81, i64 352, !85, i64 376, !89, i64 400, !89, i64 456, !60, i64 512, !60, i64 516, !92, i64 520, !55, i64 592, !55, i64 593, !60, i64 596, !55, i64 600, !93, i64 608}
!76 = !{!"_ZTS17HighsSparseMatrix", !77, i64 0, !60, i64 4, !60, i64 8, !16, i64 16, !16, i64 40, !16, i64 64, !12, i64 88}
!77 = !{!"_ZTS12MatrixFormat", !7, i64 0}
!78 = !{!"_ZTS8ObjSense", !7, i64 0}
!79 = !{!"_ZTSNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE", !80, i64 0, !39, i64 8, !7, i64 16}
!80 = !{!"_ZTSNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE12_Alloc_hiderE", !6, i64 0}
!81 = !{!"_ZTSSt6vectorINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESaIS5_EE", !82, i64 0}
!82 = !{!"_ZTSSt12_Vector_baseINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESaIS5_EE", !83, i64 0}
!83 = !{!"_ZTSNSt12_Vector_baseINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESaIS5_EE12_Vector_implE", !84, i64 0}
!84 = !{!"_ZTSNSt12_Vector_baseINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESaIS5_EE17_Vector_impl_dataE", !6, i64 0, !6, i64 8, !6, i64 16}
!85 = !{!"_ZTSSt6vectorI12HighsVarTypeSaIS0_EE", !86, i64 0}
!86 = !{!"_ZTSSt12_Vector_baseI12HighsVarTypeSaIS0_EE", !87, i64 0}
!87 = !{!"_ZTSNSt12_Vector_baseI12HighsVarTypeSaIS0_EE12_Vector_implE", !88, i64 0}
!88 = !{!"_ZTSNSt12_Vector_baseI12HighsVarTypeSaIS0_EE17_Vector_impl_dataE", !6, i64 0, !6, i64 8, !6, i64 16}
!89 = !{!"_ZTS13HighsNameHash", !90, i64 0}
!90 = !{!"_ZTSSt13unordered_mapINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEiSt4hashIS5_ESt8equal_toIS5_ESaISt4pairIKS5_iEEE", !91, i64 0}
!91 = !{!"_ZTSSt10_HashtableINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESt4pairIKS5_iESaIS8_ENSt8__detail10_Select1stESt8equal_toIS5_ESt4hashIS5_ENSA_18_Mod_range_hashingENSA_20_Default_ranged_hashENSA_20_Prime_rehash_policyENSA_17_Hashtable_traitsILb1ELb0ELb1EEEE", !6, i64 0, !39, i64 8, !40, i64 16, !39, i64 24, !41, i64 32, !6, i64 48}
!92 = !{!"_ZTS10HighsScale", !60, i64 0, !55, i64 4, !60, i64 8, !60, i64 12, !11, i64 16, !12, i64 24, !12, i64 48}
!93 = !{!"_ZTS11HighsLpMods", !16, i64 0, !16, i64 24, !12, i64 48, !12, i64 72, !85, i64 96, !16, i64 120, !12, i64 144, !16, i64 168, !12, i64 192, !16, i64 216, !12, i64 240, !12, i64 264, !12, i64 288}
!94 = !{!95, !6, i64 0}
!95 = !{!"_ZTSZN8presolve9HPresolve16dominatedColumnsERNS_19HighsPostsolveStackEE3$_0", !6, i64 0}
!96 = !{!97, !6, i64 0}
!97 = !{!"_ZTSZN8presolve9HPresolve16dominatedColumnsERNS_19HighsPostsolveStackEE3$_2", !6, i64 0, !6, i64 8}
!98 = !{!60, !60, i64 0}
!99 = !{!11, !11, i64 0}
!100 = !{!55, !55, i64 0}
!101 = !{i8 0, i8 2}
!102 = !{}
!103 = distinct !{!103, !104}
!104 = !{!"llvm.loop.mustprogress"}
!105 = !{!7, !7, i64 0}
!106 = !{!10, !6, i64 24}
!107 = !{!10, !11, i64 32}
!108 = !{!10, !6, i64 8}
!109 = !{!110, !11, i64 264}
!110 = !{!"_ZTS18HighsOptionsStruct", !79, i64 8, !79, i64 40, !79, i64 72, !79, i64 104, !11, i64 136, !79, i64 144, !79, i64 176, !60, i64 208, !79, i64 216, !11, i64 248, !11, i64 256, !11, i64 264, !11, i64 272, !11, i64 280, !11, i64 288, !11, i64 296, !11, i64 304, !11, i64 312, !11, i64 320, !11, i64 328, !60, i64 336, !60, i64 340, !60, i64 344, !60, i64 348, !60, i64 352, !60, i64 356, !60, i64 360, !60, i64 364, !60, i64 368, !60, i64 372, !60, i64 376, !60, i64 380, !60, i64 384, !60, i64 388, !79, i64 392, !55, i64 424, !55, i64 425, !55, i64 426, !60, i64 428, !60, i64 432, !79, i64 440, !55, i64 472, !55, i64 473, !55, i64 474, !60, i64 476, !55, i64 480, !55, i64 481, !60, i64 484, !60, i64 488, !11, i64 496, !60, i64 504, !60, i64 508, !60, i64 512, !55, i64 516, !60, i64 520, !55, i64 524, !55, i64 525, !55, i64 526, !55, i64 527, !55, i64 528, !55, i64 529, !55, i64 530, !60, i64 532, !60, i64 536, !60, i64 540, !60, i64 544, !60, i64 548, !60, i64 552, !60, i64 556, !60, i64 560, !60, i64 564, !60, i64 568, !60, i64 572, !60, i64 576, !60, i64 580, !60, i64 584, !60, i64 588, !55, i64 592, !55, i64 593, !55, i64 594, !55, i64 595, !11, i64 600, !11, i64 608, !11, i64 616, !11, i64 624, !11, i64 632, !11, i64 640, !11, i64 648, !11, i64 656, !11, i64 664, !11, i64 672, !11, i64 680, !55, i64 688, !55, i64 689, !55, i64 690, !55, i64 691, !60, i64 692, !11, i64 696, !55, i64 704, !55, i64 705, !79, i64 712, !11, i64 744, !60, i64 752, !60, i64 756, !55, i64 760, !55, i64 761, !55, i64 762, !55, i64 763, !60, i64 764, !60, i64 768, !60, i64 772, !60, i64 776, !60, i64 780, !60, i64 784, !60, i64 788, !60, i64 792, !60, i64 796, !60, i64 800, !60, i64 804, !11, i64 808, !11, i64 816, !11, i64 824, !11, i64 832, !11, i64 840, !55, i64 848, !55, i64 849, !79, i64 856, !55, i64 888, !60, i64 892, !111, i64 896}
!111 = !{!"_ZTS15HighsLogOptions", !6, i64 0, !6, i64 8, !6, i64 16, !6, i64 24, !6, i64 32, !6, i64 40, !112, i64 48, !6, i64 80, !55, i64 88}
!112 = !{!"_ZTSSt8functionIFviRKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEPK20HighsCallbackDataOutP19HighsCallbackDataInPvEE", !113, i64 0, !6, i64 24}
!113 = !{!"_ZTSSt14_Function_base", !7, i64 0, !6, i64 16}
!114 = !{!10, !61, i64 1588}
!115 = !{!116, !116, i64 0}
!116 = !{!"_ZTSN8presolve9HPresolve6ResultE", !7, i64 0}
!117 = distinct !{!117, !104}


; 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"

%struct.HighsTripletListSlice = type { %class.HighsMatrixSlice.base.391, [4 x i8] }
%class.HighsMatrixSlice.base.391 = type <{ ptr, ptr, ptr, i32 }>
%"class.HighsMatrixSlice<HighsTripletListSlice>::iterator" = type <{ %class.HighsSliceNonzero, ptr, i32, [4 x i8] }>
%class.HighsSliceNonzero = type { ptr, ptr }
%"class.std::vector.411" = type { %"struct.std::_Vector_base.412" }
%"struct.std::_Vector_base.412" = type { %"struct.std::_Vector_base<std::pair<unsigned int, unsigned int>, std::allocator<std::pair<unsigned int, unsigned int>>>::_Vector_impl" }
%"struct.std::_Vector_base<std::pair<unsigned int, unsigned int>, std::allocator<std::pair<unsigned int, unsigned int>>>::_Vector_impl" = type { %"struct.std::_Vector_base<std::pair<unsigned int, unsigned int>, std::allocator<std::pair<unsigned int, unsigned int>>>::_Vector_impl_data" }
%"struct.std::_Vector_base<std::pair<unsigned int, unsigned int>, std::allocator<std::pair<unsigned int, unsigned int>>>::_Vector_impl_data" = type { ptr, ptr, ptr }
%"class.std::allocator.413" = type { i8 }
%class.anon.416 = type { ptr }
%class.anon.417 = type { ptr }
%class.anon.418 = type { ptr, ptr }
%struct.HighsTripletPositionSlice = type { %class.HighsMatrixSlice.base.420, [4 x i8] }
%class.HighsMatrixSlice.base.420 = type <{ ptr, ptr, ptr, i32 }>
%"class.HighsMatrixSlice<HighsTripletPositionSlice>::iterator" = type <{ %class.HighsSliceNonzero, ptr, i32, [4 x i8] }>
%"struct.HighsCliqueTable::CliqueVar" = type { i32 }

@.str.55 = external hidden unnamed_addr constant [76 x i8], align 1
@.str.74 = external hidden unnamed_addr constant [30 x i8], align 1
@__PRETTY_FUNCTION__._ZN8presolve9HPresolve16dominatedColumnsERNS_19HighsPostsolveStackE = external hidden unnamed_addr constant [79 x i8], align 1
@.str.75 = external hidden unnamed_addr constant [30 x i8], align 1
@.str.76 = external hidden unnamed_addr constant [28 x i8], align 1

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

declare i32 @__gxx_personality_v0(...)

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

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

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

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

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

declare void @_Z11highsLogDevRK15HighsLogOptions12HighsLogTypePKcz(ptr noundef nonnull align 8 dereferenceable(89), i32 noundef, ptr noundef, ...) local_unnamed_addr #3

; 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 zeroext i1 @_ZNK8presolve9HPresolve14isLowerImpliedEi(ptr noundef nonnull align 8 dereferenceable(1720), i32 noundef) local_unnamed_addr #1 align 2

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

; Function Attrs: mustprogress uwtable
declare dso_local void @_ZNK8presolve9HPresolve15getColumnVectorEi(ptr dead_on_unwind noalias writable sret(%struct.HighsTripletListSlice) align 8, ptr noundef nonnull align 8 dereferenceable(1720), i32 noundef) local_unnamed_addr #4 align 2

; Function Attrs: mustprogress uwtable
declare dso_local void @_ZNK16HighsMatrixSliceI21HighsTripletListSliceE5beginEv(ptr dead_on_unwind noalias writable sret(%"class.HighsMatrixSlice<HighsTripletListSlice>::iterator") align 8, ptr noundef nonnull align 8 dereferenceable(28)) local_unnamed_addr #4 align 2

; Function Attrs: mustprogress uwtable
declare dso_local void @_ZNK16HighsMatrixSliceI21HighsTripletListSliceE3endEv(ptr dead_on_unwind noalias writable sret(%"class.HighsMatrixSlice<HighsTripletListSlice>::iterator") align 8, ptr noundef nonnull align 8 dereferenceable(28)) local_unnamed_addr #4 align 2

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

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

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

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

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

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

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

; Function Attrs: mustprogress uwtable
define dso_local noundef i32 @_ZN8presolve9HPresolve16dominatedColumnsERNS_19HighsPostsolveStackE(ptr noundef nonnull align 8 dereferenceable(1720) %0, ptr noundef nonnull align 8 dereferenceable(224) %1) local_unnamed_addr #4 align 2 personality ptr @__gxx_personality_v0 {
  %3 = alloca %"class.std::vector.411", align 8
  %4 = alloca %"class.std::allocator.413", align 1
  %5 = alloca %class.anon.416, align 8
  %6 = alloca %class.anon.417, align 8
  %7 = alloca %class.anon.418, align 8
  %8 = alloca double, align 8
  %9 = alloca double, align 8
  %10 = alloca %struct.HighsTripletListSlice, align 8
  %11 = alloca %"class.HighsMatrixSlice<HighsTripletListSlice>::iterator", align 8
  %12 = alloca %"class.HighsMatrixSlice<HighsTripletListSlice>::iterator", align 8
  %13 = alloca double, align 8
  %14 = alloca double, align 8
  %15 = alloca double, align 8
  %16 = alloca double, align 8
  %17 = alloca %struct.HighsTripletPositionSlice, align 8
  %18 = alloca %"class.HighsMatrixSlice<HighsTripletPositionSlice>::iterator", align 8
  %19 = alloca %"class.HighsMatrixSlice<HighsTripletPositionSlice>::iterator", align 8
  %20 = alloca %struct.HighsTripletPositionSlice, align 8
  %21 = alloca %"class.HighsMatrixSlice<HighsTripletPositionSlice>::iterator", align 8
  %22 = alloca %"class.HighsMatrixSlice<HighsTripletPositionSlice>::iterator", align 8
  %23 = alloca %struct.HighsTripletPositionSlice, align 8
  %24 = alloca %"class.HighsMatrixSlice<HighsTripletPositionSlice>::iterator", align 8
  %25 = alloca %"class.HighsMatrixSlice<HighsTripletPositionSlice>::iterator", align 8
  %26 = alloca %"struct.HighsCliqueTable::CliqueVar", align 4
  %27 = alloca %"struct.HighsCliqueTable::CliqueVar", align 4
  %28 = alloca %"struct.HighsCliqueTable::CliqueVar", align 4
  %29 = alloca %"struct.HighsCliqueTable::CliqueVar", align 4
  %30 = alloca %struct.HighsTripletPositionSlice, align 8
  %31 = alloca %"class.HighsMatrixSlice<HighsTripletPositionSlice>::iterator", align 8
  %32 = alloca %"class.HighsMatrixSlice<HighsTripletPositionSlice>::iterator", align 8
  %33 = alloca %"struct.HighsCliqueTable::CliqueVar", align 4
  %34 = alloca %"struct.HighsCliqueTable::CliqueVar", align 4
  %35 = alloca %"struct.HighsCliqueTable::CliqueVar", align 4
  %36 = alloca %"struct.HighsCliqueTable::CliqueVar", align 4
  call void @llvm.lifetime.start.p0(i64 24, ptr nonnull %3) #7
  %37 = load ptr, ptr %0, align 8, !tbaa !5
  %38 = load i32, ptr %37, align 8, !tbaa !73
  %39 = sext i32 %38 to i64
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %4) #7
  call void @_ZNSaISt4pairIjjEEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %4) #7
  invoke void @_ZNSt6vectorISt4pairIjjESaIS1_EEC2EmRKS2_(ptr noundef nonnull align 8 dereferenceable(24) %3, i64 noundef %39, ptr noundef nonnull align 1 dereferenceable(1) %4)
          to label %40 unwind label %57

40:                                               ; preds = %2
  call void @_ZNSt15__new_allocatorISt4pairIjjEED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %4) #7
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %4) #7
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %5) #7
  store ptr %0, ptr %5, align 8, !tbaa !93
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %6) #7
  store ptr %3, ptr %6, align 8, !tbaa !95
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %7) #7
  store ptr %0, ptr %7, align 8, !tbaa !96
  %41 = getelementptr inbounds i8, ptr %7, i64 8
  store ptr %3, ptr %41, align 8, !tbaa !95
  %42 = getelementptr inbounds i8, ptr %0, i64 40
  %43 = call noundef i64 @_ZNKSt6vectorIdSaIdEE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24) %42) #7
  %44 = trunc i64 %43 to i32
  %45 = icmp sgt i32 %44, 0
  br i1 %45, label %.lr.ph, label %.preheader730

.lr.ph:                                           ; preds = %40
  %46 = getelementptr inbounds i8, ptr %0, i64 64
  %47 = getelementptr inbounds i8, ptr %0, i64 88
  %wide.trip.count = and i64 %43, 2147483647
  br label %59

.preheader730:                                    ; preds = %85, %40
  %48 = load ptr, ptr %0, align 8, !tbaa !5
  %49 = load i32, ptr %48, align 8, !tbaa !73
  %50 = icmp sgt i32 %49, 0
  br i1 %50, label %.lr.ph859, label %.thread708

.lr.ph859:                                        ; preds = %.preheader730
  %51 = getelementptr inbounds i8, ptr %0, i64 1504
  %52 = getelementptr inbounds i8, ptr %0, i64 24
  %53 = getelementptr inbounds i8, ptr %0, i64 688
  %54 = getelementptr inbounds i8, ptr %0, i64 256
  %55 = getelementptr inbounds i8, ptr %0, i64 32
  %56 = getelementptr inbounds i8, ptr %0, i64 8
  br label %86

57:                                               ; preds = %2
  %58 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt15__new_allocatorISt4pairIjjEED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %4) #7
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %4) #7
  br label %751

59:                                               ; preds = %.lr.ph, %85
  %indvars.iv = phi i64 [ 0, %.lr.ph ], [ %indvars.iv.next, %85 ]
  %60 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt6vectorIdSaIdEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %42, i64 noundef %indvars.iv) #7
  %61 = load double, ptr %60, align 8, !tbaa !98
  %62 = fcmp oeq double %61, 0.000000e+00
  br i1 %62, label %85, label %.invoke

.invoke:                                          ; preds = %59
  %63 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNSt6vectorIiSaIiEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %46, i64 noundef %indvars.iv) #7
  %64 = load i32, ptr %63, align 4, !tbaa !99
  %65 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNSt6vectorIiSaIiEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %47, i64 noundef %indvars.iv) #7
  %66 = load i32, ptr %65, align 4, !tbaa !99
  %67 = load ptr, ptr %0, align 8, !tbaa !5
  %68 = getelementptr inbounds i8, ptr %67, i64 80
  %69 = sext i32 %64 to i64
  %70 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt6vectorIdSaIdEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %68, i64 noundef %69) #7
  %71 = load double, ptr %70, align 8, !tbaa !98
  %72 = fcmp une double %71, 0xFFF0000000000000
  %73 = load ptr, ptr %0, align 8, !tbaa !5
  %74 = getelementptr inbounds i8, ptr %73, i64 104
  %75 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt6vectorIdSaIdEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %74, i64 noundef %69) #7
  %76 = load double, ptr %75, align 8, !tbaa !98
  %77 = fcmp une double %76, 0x7FF0000000000000
  %78 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt6vectorIdSaIdEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %42, i64 noundef %indvars.iv) #7
  %79 = load double, ptr %78, align 8, !tbaa !98
  %80 = fcmp ogt double %79, 0.000000e+00
  %. = select i1 %80, i1 %72, i1 %77
  %.888 = select i1 %80, i1 %77, i1 %72
  %81 = zext i1 %. to i32
  %82 = zext i1 %.888 to i32
  invoke void @"_ZZN8presolve9HPresolve16dominatedColumnsERNS_19HighsPostsolveStackEENK3$_1clEiijj"(ptr noundef nonnull align 8 dereferenceable(8) %6, i32 noundef %64, i32 noundef %66, i32 noundef %81, i32 noundef %82)
          to label %85 unwind label %83

83:                                               ; preds = %.invoke
  %84 = landingpad { ptr, i32 }
          cleanup
  br label %750

85:                                               ; preds = %.invoke, %59
  %indvars.iv.next = add nuw nsw i64 %indvars.iv, 1
  %exitcond.not = icmp eq i64 %indvars.iv.next, %wide.trip.count
  br i1 %exitcond.not, label %.preheader730, label %59, !llvm.loop !100

86:                                               ; preds = %.lr.ph859, %.thread691
  %indvars.iv863 = phi i64 [ 0, %.lr.ph859 ], [ %indvars.iv.next864, %.thread691 ]
  %.0416856 = phi i32 [ 0, %.lr.ph859 ], [ %.26442, %.thread691 ]
  %87 = call noundef nonnull align 1 dereferenceable(1) ptr @_ZNSt6vectorIhSaIhEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %51, i64 noundef %indvars.iv863) #7
  %88 = load i8, ptr %87, align 1, !tbaa !102
  %.not519 = icmp eq i8 %88, 0
  br i1 %.not519, label %89, label %.thread691

89:                                               ; preds = %86
  %90 = trunc nuw nsw i64 %indvars.iv863 to i32
  %91 = call noundef zeroext i1 @_ZNK8presolve9HPresolve14isUpperImpliedEi(ptr noundef nonnull align 8 dereferenceable(1720) %0, i32 noundef %90)
  %92 = zext i1 %91 to i8
  %93 = call noundef zeroext i1 @_ZNK8presolve9HPresolve14isLowerImpliedEi(ptr noundef nonnull align 8 dereferenceable(1720) %0, i32 noundef %90)
  %94 = zext i1 %93 to i8
  %95 = call noundef zeroext i1 @"_ZZN8presolve9HPresolve16dominatedColumnsERNS_19HighsPostsolveStackEENK3$_0clEi"(ptr noundef nonnull align 8 dereferenceable(8) %5, i32 noundef %90)
  br i1 %95, label %96, label %113

96:                                               ; preds = %89
  %97 = load ptr, ptr %52, align 8, !tbaa !103
  %98 = getelementptr inbounds i8, ptr %97, i64 224
  %99 = call noundef ptr @_ZNKSt10unique_ptrI18HighsMipSolverDataSt14default_deleteIS0_EEptEv(ptr noundef nonnull align 8 dereferenceable(8) %98) #7
  %100 = getelementptr inbounds i8, ptr %99, i64 23528
  %101 = invoke noundef i32 @_ZNK16HighsCliqueTable10numCliquesEib(ptr noundef nonnull align 8 dereferenceable(488) %100, i32 noundef %90, i1 noundef zeroext true)
          to label %102 unwind label %111

102:                                              ; preds = %96
  %103 = load ptr, ptr %52, align 8, !tbaa !103
  %104 = getelementptr inbounds i8, ptr %103, i64 224
  %105 = call noundef ptr @_ZNKSt10unique_ptrI18HighsMipSolverDataSt14default_deleteIS0_EEptEv(ptr noundef nonnull align 8 dereferenceable(8) %104) #7
  %106 = getelementptr inbounds i8, ptr %105, i64 23528
  %107 = invoke noundef i32 @_ZNK16HighsCliqueTable10numCliquesEib(ptr noundef nonnull align 8 dereferenceable(488) %106, i32 noundef %90, i1 noundef zeroext false)
          to label %108 unwind label %111

108:                                              ; preds = %102
  %109 = icmp sgt i32 %101, 0
  %110 = icmp sgt i32 %107, 0
  br label %114

111:                                              ; preds = %102, %96
  %112 = landingpad { ptr, i32 }
          cleanup
  br label %750

113:                                              ; preds = %89
  %brmerge = or i1 %91, %93
  br i1 %brmerge, label %114, label %.thread691

114:                                              ; preds = %113, %108
  %.0478 = phi i1 [ %110, %108 ], [ false, %113 ]
  %.0477 = phi i1 [ %109, %108 ], [ false, %113 ]
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %8) #7
  store double 0xFFF0000000000000, ptr %8, align 8, !tbaa !98
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %9) #7
  store double 0x7FF0000000000000, ptr %9, align 8, !tbaa !98
  %115 = or i1 %91, %95
  %116 = or i1 %93, %95
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %10) #7
  invoke void @_ZNK8presolve9HPresolve15getColumnVectorEi(ptr dead_on_unwind nonnull writable sret(%struct.HighsTripletListSlice) align 8 %10, ptr noundef nonnull align 8 dereferenceable(1720) %0, i32 noundef %90)
          to label %117 unwind label %120

117:                                              ; preds = %114
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %11) #7
  invoke void @_ZNK16HighsMatrixSliceI21HighsTripletListSliceE5beginEv(ptr dead_on_unwind nonnull writable sret(%"class.HighsMatrixSlice<HighsTripletListSlice>::iterator") align 8 %11, ptr noundef nonnull align 8 dereferenceable(28) %10)
          to label %118 unwind label %122

118:                                              ; preds = %117
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %12) #7
  invoke void @_ZNK16HighsMatrixSliceI21HighsTripletListSliceE3endEv(ptr dead_on_unwind nonnull writable sret(%"class.HighsMatrixSlice<HighsTripletListSlice>::iterator") align 8 %12, ptr noundef nonnull align 8 dereferenceable(28) %10)
          to label %.preheader729 unwind label %124

.preheader729:                                    ; preds = %118
  %119 = call noundef zeroext i1 @_ZNK16HighsMatrixSliceI21HighsTripletListSliceE8iteratorneERKS2_(ptr noundef nonnull align 8 dereferenceable(28) %11, ptr noundef nonnull align 8 dereferenceable(28) %12)
  br i1 %119, label %.lr.ph839, label %._crit_edge

._crit_edge:                                      ; preds = %264, %.preheader729
  %.0496.lcssa = phi double [ 0.000000e+00, %.preheader729 ], [ %.1497, %264 ]
  %.0494.lcssa = phi i32 [ 0, %.preheader729 ], [ %.1495, %264 ]
  %.0489.lcssa = phi i32 [ -1, %.preheader729 ], [ %.1490, %264 ]
  %.0487.lcssa = phi double [ 0.000000e+00, %.preheader729 ], [ %.1488, %264 ]
  %.0485.lcssa = phi i32 [ 0, %.preheader729 ], [ %.1486, %264 ]
  %.0479.lcssa = phi i32 [ -1, %.preheader729 ], [ %.1480, %264 ]
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %12) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %11) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %10) #7
  br i1 %95, label %269, label %select.unfold872

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

122:                                              ; preds = %117
  %123 = landingpad { ptr, i32 }
          cleanup
  br label %268

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

.lr.ph839:                                        ; preds = %.preheader729, %264
  %.0479838 = phi i32 [ %.1480, %264 ], [ -1, %.preheader729 ]
  %.0483837 = phi i32 [ %.1484, %264 ], [ 2147483647, %.preheader729 ]
  %.0485836 = phi i32 [ %.1486, %264 ], [ 0, %.preheader729 ]
  %.0487835 = phi double [ %.1488, %264 ], [ 0.000000e+00, %.preheader729 ]
  %.0489834 = phi i32 [ %.1490, %264 ], [ -1, %.preheader729 ]
  %.0492833 = phi i32 [ %.1493, %264 ], [ 2147483647, %.preheader729 ]
  %.0494832 = phi i32 [ %.1495, %264 ], [ 0, %.preheader729 ]
  %.0496831 = phi double [ %.1497, %264 ], [ 0.000000e+00, %.preheader729 ]
  %126 = call noundef nonnull align 8 dereferenceable(16) ptr @_ZN16HighsMatrixSliceI21HighsTripletListSliceE8iteratordeEv(ptr noundef nonnull align 8 dereferenceable(28) %11)
  %127 = call noundef i32 @_ZNK17HighsSliceNonzero5indexEv(ptr noundef nonnull align 8 dereferenceable(16) %126)
  %128 = load ptr, ptr %0, align 8, !tbaa !5
  %129 = getelementptr inbounds i8, ptr %128, i64 104
  %130 = sext i32 %127 to i64
  %131 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt6vectorIdSaIdEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %129, i64 noundef %130) #7
  %132 = load double, ptr %131, align 8, !tbaa !98
  %133 = fcmp une double %132, 0x7FF0000000000000
  %134 = select i1 %133, i32 1, i32 -1
  br i1 %95, label %135, label %243

135:                                              ; preds = %.lr.ph839
  %136 = load ptr, ptr %0, align 8, !tbaa !5
  %137 = getelementptr inbounds i8, ptr %136, i64 104
  %138 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt6vectorIdSaIdEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %137, i64 noundef %130) #7
  %139 = load double, ptr %138, align 8, !tbaa !98
  %140 = fcmp une double %139, 0x7FF0000000000000
  br i1 %140, label %141, label %189

141:                                              ; preds = %135
  %142 = load ptr, ptr %0, align 8, !tbaa !5
  %143 = getelementptr inbounds i8, ptr %142, i64 8
  %144 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt6vectorIdSaIdEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %143, i64 noundef %indvars.iv863) #7
  %145 = load double, ptr %144, align 8, !tbaa !98
  %146 = fcmp ult double %145, 0.000000e+00
  br i1 %146, label %165, label %147

147:                                              ; preds = %141
  %148 = call noundef double @_ZNK17HighsSliceNonzero5valueEv(ptr noundef nonnull align 8 dereferenceable(16) %126)
  %149 = fcmp olt double %148, 0.000000e+00
  br i1 %149, label %150, label %165

150:                                              ; preds = %147
  %151 = call noundef double @_ZNK17HighsSliceNonzero5valueEv(ptr noundef nonnull align 8 dereferenceable(16) %126)
  %152 = invoke noundef double @_ZNK20HighsLinearSumBounds19getResidualSumUpperEiid(ptr noundef nonnull align 8 dereferenceable(240) %53, i32 noundef %127, i32 noundef %90, double noundef %151)
          to label %153 unwind label %163

153:                                              ; preds = %150
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %13) #7
  %154 = load ptr, ptr %0, align 8, !tbaa !5
  %155 = getelementptr inbounds i8, ptr %154, i64 104
  %156 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt6vectorIdSaIdEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %155, i64 noundef %130) #7
  %157 = load double, ptr %156, align 8, !tbaa !98
  %158 = fsub double %157, %152
  %159 = call noundef double @_ZNK17HighsSliceNonzero5valueEv(ptr noundef nonnull align 8 dereferenceable(16) %126)
  %160 = fdiv double %158, %159
  store double %160, ptr %13, align 8, !tbaa !98
  %161 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZSt3maxIdERKT_S2_S2_(ptr noundef nonnull align 8 dereferenceable(8) %13, ptr noundef nonnull align 8 dereferenceable(8) %8)
  %162 = load double, ptr %161, align 8, !tbaa !98
  store double %162, ptr %8, align 8, !tbaa !98
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %13) #7
  br label %189

163:                                              ; preds = %150
  %164 = landingpad { ptr, i32 }
          cleanup
  br label %267

165:                                              ; preds = %147, %141
  %166 = load ptr, ptr %0, align 8, !tbaa !5
  %167 = getelementptr inbounds i8, ptr %166, i64 8
  %168 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt6vectorIdSaIdEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %167, i64 noundef %indvars.iv863) #7
  %169 = load double, ptr %168, align 8, !tbaa !98
  %170 = fcmp ugt double %169, 0.000000e+00
  br i1 %170, label %189, label %171

171:                                              ; preds = %165
  %172 = call noundef double @_ZNK17HighsSliceNonzero5valueEv(ptr noundef nonnull align 8 dereferenceable(16) %126)
  %173 = fcmp ogt double %172, 0.000000e+00
  br i1 %173, label %174, label %189

174:                                              ; preds = %171
  %175 = call noundef double @_ZNK17HighsSliceNonzero5valueEv(ptr noundef nonnull align 8 dereferenceable(16) %126)
  %176 = invoke noundef double @_ZNK20HighsLinearSumBounds19getResidualSumUpperEiid(ptr noundef nonnull align 8 dereferenceable(240) %53, i32 noundef %127, i32 noundef %90, double noundef %175)
          to label %177 unwind label %187

177:                                              ; preds = %174
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %14) #7
  %178 = load ptr, ptr %0, align 8, !tbaa !5
  %179 = getelementptr inbounds i8, ptr %178, i64 104
  %180 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt6vectorIdSaIdEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %179, i64 noundef %130) #7
  %181 = load double, ptr %180, align 8, !tbaa !98
  %182 = fsub double %181, %176
  %183 = call noundef double @_ZNK17HighsSliceNonzero5valueEv(ptr noundef nonnull align 8 dereferenceable(16) %126)
  %184 = fdiv double %182, %183
  store double %184, ptr %14, align 8, !tbaa !98
  %185 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZSt3minIdERKT_S2_S2_(ptr noundef nonnull align 8 dereferenceable(8) %14, ptr noundef nonnull align 8 dereferenceable(8) %9)
  %186 = load double, ptr %185, align 8, !tbaa !98
  store double %186, ptr %9, align 8, !tbaa !98
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %14) #7
  br label %189

187:                                              ; preds = %174
  %188 = landingpad { ptr, i32 }
          cleanup
  br label %267

189:                                              ; preds = %153, %177, %171, %165, %135
  %190 = load ptr, ptr %0, align 8, !tbaa !5
  %191 = getelementptr inbounds i8, ptr %190, i64 80
  %192 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt6vectorIdSaIdEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %191, i64 noundef %130) #7
  %193 = load double, ptr %192, align 8, !tbaa !98
  %194 = fcmp une double %193, 0xFFF0000000000000
  br i1 %194, label %195, label %243

195:                                              ; preds = %189
  %196 = load ptr, ptr %0, align 8, !tbaa !5
  %197 = getelementptr inbounds i8, ptr %196, i64 8
  %198 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt6vectorIdSaIdEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %197, i64 noundef %indvars.iv863) #7
  %199 = load double, ptr %198, align 8, !tbaa !98
  %200 = fcmp ult double %199, 0.000000e+00
  br i1 %200, label %219, label %201

201:                                              ; preds = %195
  %202 = call noundef double @_ZNK17HighsSliceNonzero5valueEv(ptr noundef nonnull align 8 dereferenceable(16) %126)
  %203 = fcmp ogt double %202, 0.000000e+00
  br i1 %203, label %204, label %219

204:                                              ; preds = %201
  %205 = call noundef double @_ZNK17HighsSliceNonzero5valueEv(ptr noundef nonnull align 8 dereferenceable(16) %126)
  %206 = invoke noundef double @_ZNK20HighsLinearSumBounds19getResidualSumLowerEiid(ptr noundef nonnull align 8 dereferenceable(240) %53, i32 noundef %127, i32 noundef %90, double noundef %205)
          to label %207 unwind label %217

207:                                              ; preds = %204
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %15) #7
  %208 = load ptr, ptr %0, align 8, !tbaa !5
  %209 = getelementptr inbounds i8, ptr %208, i64 80
  %210 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt6vectorIdSaIdEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %209, i64 noundef %130) #7
  %211 = load double, ptr %210, align 8, !tbaa !98
  %212 = fsub double %211, %206
  %213 = call noundef double @_ZNK17HighsSliceNonzero5valueEv(ptr noundef nonnull align 8 dereferenceable(16) %126)
  %214 = fdiv double %212, %213
  store double %214, ptr %15, align 8, !tbaa !98
  %215 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZSt3maxIdERKT_S2_S2_(ptr noundef nonnull align 8 dereferenceable(8) %15, ptr noundef nonnull align 8 dereferenceable(8) %8)
  %216 = load double, ptr %215, align 8, !tbaa !98
  store double %216, ptr %8, align 8, !tbaa !98
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %15) #7
  br label %243

217:                                              ; preds = %204
  %218 = landingpad { ptr, i32 }
          cleanup
  br label %267

219:                                              ; preds = %201, %195
  %220 = load ptr, ptr %0, align 8, !tbaa !5
  %221 = getelementptr inbounds i8, ptr %220, i64 8
  %222 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt6vectorIdSaIdEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %221, i64 noundef %indvars.iv863) #7
  %223 = load double, ptr %222, align 8, !tbaa !98
  %224 = fcmp ugt double %223, 0.000000e+00
  br i1 %224, label %243, label %225

225:                                              ; preds = %219
  %226 = call noundef double @_ZNK17HighsSliceNonzero5valueEv(ptr noundef nonnull align 8 dereferenceable(16) %126)
  %227 = fcmp olt double %226, 0.000000e+00
  br i1 %227, label %228, label %243

228:                                              ; preds = %225
  %229 = call noundef double @_ZNK17HighsSliceNonzero5valueEv(ptr noundef nonnull align 8 dereferenceable(16) %126)
  %230 = invoke noundef double @_ZNK20HighsLinearSumBounds19getResidualSumLowerEiid(ptr noundef nonnull align 8 dereferenceable(240) %53, i32 noundef %127, i32 noundef %90, double noundef %229)
          to label %231 unwind label %241

231:                                              ; preds = %228
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %16) #7
  %232 = load ptr, ptr %0, align 8, !tbaa !5
  %233 = getelementptr inbounds i8, ptr %232, i64 80
  %234 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt6vectorIdSaIdEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %233, i64 noundef %130) #7
  %235 = load double, ptr %234, align 8, !tbaa !98
  %236 = fsub double %235, %230
  %237 = call noundef double @_ZNK17HighsSliceNonzero5valueEv(ptr noundef nonnull align 8 dereferenceable(16) %126)
  %238 = fdiv double %236, %237
  store double %238, ptr %16, align 8, !tbaa !98
  %239 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZSt3minIdERKT_S2_S2_(ptr noundef nonnull align 8 dereferenceable(8) %16, ptr noundef nonnull align 8 dereferenceable(8) %9)
  %240 = load double, ptr %239, align 8, !tbaa !98
  store double %240, ptr %9, align 8, !tbaa !98
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %16) #7
  br label %243

241:                                              ; preds = %228
  %242 = landingpad { ptr, i32 }
          cleanup
  br label %267

243:                                              ; preds = %189, %219, %225, %231, %207, %.lr.ph839
  %244 = sitofp i32 %134 to double
  %245 = call noundef double @_ZNK17HighsSliceNonzero5valueEv(ptr noundef nonnull align 8 dereferenceable(16) %126)
  %246 = fmul double %245, %244
  %247 = fcmp ogt double %246, 0.000000e+00
  %or.cond = select i1 %115, i1 %247, i1 false
  br i1 %or.cond, label %248, label %255

248:                                              ; preds = %243
  %249 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNSt6vectorIiSaIiEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %54, i64 noundef %130) #7
  %250 = load i32, ptr %249, align 4, !tbaa !99
  %251 = icmp slt i32 %250, %.0483837
  br i1 %251, label %252, label %255

252:                                              ; preds = %248
  %253 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNSt6vectorIiSaIiEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %54, i64 noundef %130) #7
  %254 = load i32, ptr %253, align 4, !tbaa !99
  br label %255

255:                                              ; preds = %252, %248, %243
  %.1488 = phi double [ %246, %252 ], [ %.0487835, %248 ], [ %.0487835, %243 ]
  %.1486 = phi i32 [ %134, %252 ], [ %.0485836, %248 ], [ %.0485836, %243 ]
  %.1484 = phi i32 [ %254, %252 ], [ %.0483837, %248 ], [ %.0483837, %243 ]
  %.1480 = phi i32 [ %127, %252 ], [ %.0479838, %248 ], [ %.0479838, %243 ]
  %256 = fcmp olt double %246, 0.000000e+00
  %or.cond26 = select i1 %116, i1 %256, i1 false
  br i1 %or.cond26, label %257, label %264

257:                                              ; preds = %255
  %258 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNSt6vectorIiSaIiEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %54, i64 noundef %130) #7
  %259 = load i32, ptr %258, align 4, !tbaa !99
  %260 = icmp slt i32 %259, %.0492833
  br i1 %260, label %261, label %264

261:                                              ; preds = %257
  %262 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNSt6vectorIiSaIiEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %54, i64 noundef %130) #7
  %263 = load i32, ptr %262, align 4, !tbaa !99
  br label %264

264:                                              ; preds = %261, %257, %255
  %.1497 = phi double [ %246, %261 ], [ %.0496831, %257 ], [ %.0496831, %255 ]
  %.1495 = phi i32 [ %134, %261 ], [ %.0494832, %257 ], [ %.0494832, %255 ]
  %.1493 = phi i32 [ %263, %261 ], [ %.0492833, %257 ], [ %.0492833, %255 ]
  %.1490 = phi i32 [ %127, %261 ], [ %.0489834, %257 ], [ %.0489834, %255 ]
  %265 = call noundef nonnull align 8 dereferenceable(28) ptr @_ZN16HighsMatrixSliceI21HighsTripletListSliceE8iteratorppEv(ptr noundef nonnull align 8 dereferenceable(28) %11)
  %266 = call noundef zeroext i1 @_ZNK16HighsMatrixSliceI21HighsTripletListSliceE8iteratorneERKS2_(ptr noundef nonnull align 8 dereferenceable(28) %11, ptr noundef nonnull align 8 dereferenceable(28) %12)
  br i1 %266, label %.lr.ph839, label %._crit_edge

267:                                              ; preds = %163, %187, %217, %241, %124
  %.pn565.pn = phi { ptr, i32 } [ %125, %124 ], [ %218, %217 ], [ %242, %241 ], [ %164, %163 ], [ %188, %187 ]
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %12) #7
  br label %268

268:                                              ; preds = %267, %122
  %.pn565.pn.pn = phi { ptr, i32 } [ %.pn565.pn, %267 ], [ %123, %122 ]
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %11) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %10) #7
  br label %743

269:                                              ; preds = %._crit_edge
  %270 = load ptr, ptr %0, align 8, !tbaa !5
  %271 = getelementptr inbounds i8, ptr %270, i64 8
  %272 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt6vectorIdSaIdEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %271, i64 noundef %indvars.iv863) #7
  %273 = load double, ptr %272, align 8, !tbaa !98
  %274 = fcmp ult double %273, 0.000000e+00
  br i1 %274, label %375, label %275

275:                                              ; preds = %269
  %276 = load double, ptr %8, align 8, !tbaa !98
  %277 = load double, ptr %55, align 8, !tbaa !104
  %278 = fadd double %277, 1.000000e+00
  %279 = fcmp ugt double %276, %278
  br i1 %279, label %375, label %280

280:                                              ; preds = %275
  %281 = icmp eq i32 %.0489.lcssa, -1
  %or.cond28.not = select i1 %93, i1 true, i1 %281
  br i1 %or.cond28.not, label %375, label %282

282:                                              ; preds = %280
  invoke void @_ZN8presolve9HPresolve8storeRowEi(ptr noundef nonnull align 8 dereferenceable(1720) %0, i32 noundef %.0489.lcssa)
          to label %283 unwind label %303

283:                                              ; preds = %282
  %284 = load ptr, ptr %0, align 8, !tbaa !5
  %285 = getelementptr inbounds i8, ptr %284, i64 80
  %286 = sext i32 %.0489.lcssa to i64
  %287 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt6vectorIdSaIdEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %285, i64 noundef %286) #7
  %288 = load double, ptr %287, align 8, !tbaa !98
  %289 = fcmp une double %288, 0xFFF0000000000000
  br i1 %289, label %290, label %296

290:                                              ; preds = %283
  %291 = load ptr, ptr %0, align 8, !tbaa !5
  %292 = getelementptr inbounds i8, ptr %291, i64 104
  %293 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt6vectorIdSaIdEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %292, i64 noundef %286) #7
  %294 = load double, ptr %293, align 8, !tbaa !98
  %295 = fcmp une double %294, 0x7FF0000000000000
  br label %296

296:                                              ; preds = %290, %283
  %297 = phi i1 [ false, %283 ], [ %295, %290 ]
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %17) #7
  invoke void @_ZNK8presolve9HPresolve12getStoredRowEv(ptr dead_on_unwind nonnull writable sret(%struct.HighsTripletPositionSlice) align 8 %17, ptr noundef nonnull align 8 dereferenceable(1720) %0)
          to label %298 unwind label %305

298:                                              ; preds = %296
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %18) #7
  invoke void @_ZNK16HighsMatrixSliceI25HighsTripletPositionSliceE5beginEv(ptr dead_on_unwind nonnull writable sret(%"class.HighsMatrixSlice<HighsTripletPositionSlice>::iterator") align 8 %18, ptr noundef nonnull align 8 dereferenceable(28) %17)
          to label %299 unwind label %307

299:                                              ; preds = %298
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %19) #7
  invoke void @_ZNK16HighsMatrixSliceI25HighsTripletPositionSliceE3endEv(ptr dead_on_unwind nonnull writable sret(%"class.HighsMatrixSlice<HighsTripletPositionSlice>::iterator") align 8 %19, ptr noundef nonnull align 8 dereferenceable(28) %17)
          to label %.preheader723 unwind label %309

.preheader723:                                    ; preds = %299
  %300 = call noundef zeroext i1 @_ZNK16HighsMatrixSliceI25HighsTripletPositionSliceE8iteratorneERKS2_(ptr noundef nonnull align 8 dereferenceable(28) %18, ptr noundef nonnull align 8 dereferenceable(28) %19)
  br i1 %300, label %.lr.ph845, label %.thread608

.lr.ph845:                                        ; preds = %.preheader723
  %301 = sitofp i32 %.0494.lcssa to double
  %302 = fneg double %.0496.lcssa
  br label %311

.thread608:                                       ; preds = %361, %.preheader723
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %19) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %18) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %17) #7
  br label %367

303:                                              ; preds = %612, %488, %389, %282
  %304 = landingpad { ptr, i32 }
          cleanup
  br label %743

305:                                              ; preds = %296
  %306 = landingpad { ptr, i32 }
          cleanup
  br label %743

307:                                              ; preds = %298
  %308 = landingpad { ptr, i32 }
          cleanup
  br label %366

309:                                              ; preds = %299
  %310 = landingpad { ptr, i32 }
          cleanup
  br label %365

311:                                              ; preds = %.lr.ph845, %361
  %312 = call noundef nonnull align 8 dereferenceable(16) ptr @_ZN16HighsMatrixSliceI25HighsTripletPositionSliceE8iteratordeEv(ptr noundef nonnull align 8 dereferenceable(28) %18)
  %313 = call noundef i32 @_ZNK17HighsSliceNonzero5indexEv(ptr noundef nonnull align 8 dereferenceable(16) %312)
  %314 = zext i32 %313 to i64
  %315 = icmp eq i64 %indvars.iv863, %314
  br i1 %315, label %361, label %316

316:                                              ; preds = %311
  %317 = sext i32 %313 to i64
  %318 = call noundef nonnull align 1 dereferenceable(1) ptr @_ZNSt6vectorIhSaIhEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %51, i64 noundef %317) #7
  %319 = load i8, ptr %318, align 1, !tbaa !102
  %.not = icmp eq i8 %319, 0
  br i1 %.not, label %320, label %361

320:                                              ; preds = %316
  %321 = call noundef double @_ZNK17HighsSliceNonzero5valueEv(ptr noundef nonnull align 8 dereferenceable(16) %312)
  %322 = fmul double %321, %301
  %323 = load ptr, ptr %56, align 8, !tbaa !105
  %324 = getelementptr inbounds i8, ptr %323, i64 264
  %325 = load double, ptr %324, align 8, !tbaa !106
  %326 = fsub double %325, %322
  %327 = fcmp ult double %326, %302
  br i1 %327, label %343, label %328

328:                                              ; preds = %320
  %329 = fneg double %322
  %330 = fsub double %329, %325
  %331 = fcmp ugt double %330, %302
  %or.cond577 = and i1 %297, %331
  br i1 %or.cond577, label %343, label %332

332:                                              ; preds = %328
  %333 = invoke noundef zeroext i1 @"_ZZN8presolve9HPresolve16dominatedColumnsERNS_19HighsPostsolveStackEENK3$_2clEiiii"(ptr noundef nonnull align 8 dereferenceable(16) %7, i32 noundef -1, i32 noundef %90, i32 noundef -1, i32 noundef %313)
          to label %334 unwind label %.loopexit724

334:                                              ; preds = %332
  br i1 %333, label %335, label %._crit_edge866

._crit_edge866:                                   ; preds = %334
  %.pre = load ptr, ptr %56, align 8, !tbaa !105
  %.phi.trans.insert = getelementptr inbounds i8, ptr %.pre, i64 264
  %.pre867 = load double, ptr %.phi.trans.insert, align 8, !tbaa !106
  br label %343

335:                                              ; preds = %334
  %336 = invoke noundef zeroext i1 @_ZN8presolve9HPresolve24fixColToLowerOrUnboundedERNS_19HighsPostsolveStackEi(ptr noundef nonnull align 8 dereferenceable(1720) %0, ptr noundef nonnull align 8 dereferenceable(224) %1, i32 noundef %90)
          to label %337 unwind label %.loopexit.split-lp725

337:                                              ; preds = %335
  br i1 %336, label %.thread617.sink.split, label %338

.loopexit724:                                     ; preds = %332, %350
  %lpad.loopexit726 = landingpad { ptr, i32 }
          cleanup
  br label %365

.loopexit.split-lp725:                            ; preds = %335, %353
  %lpad.loopexit.split-lp727 = landingpad { ptr, i32 }
          cleanup
  br label %365

338:                                              ; preds = %337
  %339 = invoke noundef i32 @_ZN8presolve9HPresolve19removeRowSingletonsERNS_19HighsPostsolveStackE(ptr noundef nonnull align 8 dereferenceable(1720) %0, ptr noundef nonnull align 8 dereferenceable(224) %1)
          to label %340 unwind label %341

340:                                              ; preds = %338
  %.not526 = icmp eq i32 %339, 0
  br i1 %.not526, label %select.unfold, label %.thread617

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

343:                                              ; preds = %._crit_edge866, %328, %320
  %344 = phi double [ %.pre867, %._crit_edge866 ], [ %325, %328 ], [ %325, %320 ]
  %345 = fadd double %322, %344
  %346 = fcmp ult double %345, %302
  br i1 %346, label %361, label %347

347:                                              ; preds = %343
  %348 = fsub double %322, %344
  %349 = fcmp ugt double %348, %302
  %or.cond579 = and i1 %297, %349
  br i1 %or.cond579, label %361, label %350

350:                                              ; preds = %347
  %351 = invoke noundef zeroext i1 @"_ZZN8presolve9HPresolve16dominatedColumnsERNS_19HighsPostsolveStackEENK3$_2clEiiii"(ptr noundef nonnull align 8 dereferenceable(16) %7, i32 noundef -1, i32 noundef %90, i32 noundef 1, i32 noundef %313)
          to label %352 unwind label %.loopexit724

352:                                              ; preds = %350
  br i1 %351, label %353, label %361

353:                                              ; preds = %352
  %354 = invoke noundef zeroext i1 @_ZN8presolve9HPresolve24fixColToLowerOrUnboundedERNS_19HighsPostsolveStackEi(ptr noundef nonnull align 8 dereferenceable(1720) %0, ptr noundef nonnull align 8 dereferenceable(224) %1, i32 noundef %90)
          to label %355 unwind label %.loopexit.split-lp725

355:                                              ; preds = %353
  br i1 %354, label %.thread617.sink.split, label %356

356:                                              ; preds = %355
  %357 = invoke noundef i32 @_ZN8presolve9HPresolve19removeRowSingletonsERNS_19HighsPostsolveStackE(ptr noundef nonnull align 8 dereferenceable(1720) %0, ptr noundef nonnull align 8 dereferenceable(224) %1)
          to label %358 unwind label %359

358:                                              ; preds = %356
  %.not521 = icmp eq i32 %357, 0
  br i1 %.not521, label %select.unfold, label %.thread617

359:                                              ; preds = %356
  %360 = landingpad { ptr, i32 }
          cleanup
  br label %365

361:                                              ; preds = %316, %311, %352, %343, %347
  %362 = call noundef nonnull align 8 dereferenceable(28) ptr @_ZN16HighsMatrixSliceI25HighsTripletPositionSliceE8iteratorppEv(ptr noundef nonnull align 8 dereferenceable(28) %18)
  %363 = call noundef zeroext i1 @_ZNK16HighsMatrixSliceI25HighsTripletPositionSliceE8iteratorneERKS2_(ptr noundef nonnull align 8 dereferenceable(28) %18, ptr noundef nonnull align 8 dereferenceable(28) %19)
  br i1 %363, label %311, label %.thread608

.thread617.sink.split:                            ; preds = %355, %337
  %364 = getelementptr inbounds i8, ptr %0, i64 1588
  store i32 2, ptr %364, align 4, !tbaa !111
  br label %.thread617

.thread617:                                       ; preds = %358, %340, %.thread617.sink.split
  %.5.ph.ph = phi i32 [ 2, %.thread617.sink.split ], [ %357, %358 ], [ %339, %340 ]
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %19) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %18) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %17) #7
  br label %.thread623.thread

select.unfold:                                    ; preds = %358, %340
  %.3419.ph = add nsw i32 %.0416856, 1
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %19) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %18) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %17) #7
  br label %367

365:                                              ; preds = %.loopexit724, %.loopexit.split-lp725, %341, %359, %309
  %.pn.pn = phi { ptr, i32 } [ %310, %309 ], [ %342, %341 ], [ %360, %359 ], [ %lpad.loopexit726, %.loopexit724 ], [ %lpad.loopexit.split-lp727, %.loopexit.split-lp725 ]
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %19) #7
  br label %366

366:                                              ; preds = %365, %307
  %.pn.pn.pn = phi { ptr, i32 } [ %.pn.pn, %365 ], [ %308, %307 ]
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %18) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %17) #7
  br label %743

367:                                              ; preds = %select.unfold, %.thread608
  %.4420614 = phi i32 [ %.0416856, %.thread608 ], [ %.3419.ph, %select.unfold ]
  %368 = call noundef nonnull align 1 dereferenceable(1) ptr @_ZNSt6vectorIhSaIhEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %51, i64 noundef %indvars.iv863) #7
  %369 = load i8, ptr %368, align 1, !tbaa !102
  %.not527 = icmp eq i8 %369, 0
  br i1 %.not527, label %375, label %370

370:                                              ; preds = %367
  %371 = invoke noundef i32 @_ZN8presolve9HPresolve24removeDoubletonEquationsERNS_19HighsPostsolveStackE(ptr noundef nonnull align 8 dereferenceable(1720) %0, ptr noundef nonnull align 8 dereferenceable(224) %1)
          to label %372 unwind label %373

372:                                              ; preds = %370
  %.not530 = icmp eq i32 %371, 0
  br i1 %.not530, label %.thread623, label %.thread623.thread

373:                                              ; preds = %370
  %374 = landingpad { ptr, i32 }
          cleanup
  br label %743

375:                                              ; preds = %367, %280, %275, %269
  %.0473 = phi i8 [ 1, %280 ], [ %92, %275 ], [ %92, %269 ], [ 1, %367 ]
  %.5421 = phi i32 [ %.0416856, %280 ], [ %.0416856, %275 ], [ %.0416856, %269 ], [ %.4420614, %367 ]
  %376 = load ptr, ptr %0, align 8, !tbaa !5
  %377 = getelementptr inbounds i8, ptr %376, i64 8
  %378 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt6vectorIdSaIdEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %377, i64 noundef %indvars.iv863) #7
  %379 = load double, ptr %378, align 8, !tbaa !98
  %380 = fcmp ugt double %379, 0.000000e+00
  br i1 %380, label %479, label %381

381:                                              ; preds = %375
  %382 = load double, ptr %9, align 8, !tbaa !98
  %383 = load double, ptr %55, align 8, !tbaa !104
  %384 = fneg double %383
  %385 = fcmp ult double %382, %384
  br i1 %385, label %479, label %386

386:                                              ; preds = %381
  %387 = trunc nuw i8 %.0473 to i1
  %388 = icmp eq i32 %.0479.lcssa, -1
  %or.cond31.not = select i1 %387, i1 true, i1 %388
  br i1 %or.cond31.not, label %479, label %389

389:                                              ; preds = %386
  invoke void @_ZN8presolve9HPresolve8storeRowEi(ptr noundef nonnull align 8 dereferenceable(1720) %0, i32 noundef %.0479.lcssa)
          to label %390 unwind label %303

390:                                              ; preds = %389
  %391 = load ptr, ptr %0, align 8, !tbaa !5
  %392 = getelementptr inbounds i8, ptr %391, i64 80
  %393 = sext i32 %.0479.lcssa to i64
  %394 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt6vectorIdSaIdEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %392, i64 noundef %393) #7
  %395 = load double, ptr %394, align 8, !tbaa !98
  %396 = fcmp une double %395, 0xFFF0000000000000
  br i1 %396, label %397, label %403

397:                                              ; preds = %390
  %398 = load ptr, ptr %0, align 8, !tbaa !5
  %399 = getelementptr inbounds i8, ptr %398, i64 104
  %400 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt6vectorIdSaIdEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %399, i64 noundef %393) #7
  %401 = load double, ptr %400, align 8, !tbaa !98
  %402 = fcmp une double %401, 0x7FF0000000000000
  br label %403

403:                                              ; preds = %397, %390
  %404 = phi i1 [ false, %390 ], [ %402, %397 ]
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %20) #7
  invoke void @_ZNK8presolve9HPresolve12getStoredRowEv(ptr dead_on_unwind nonnull writable sret(%struct.HighsTripletPositionSlice) align 8 %20, ptr noundef nonnull align 8 dereferenceable(1720) %0)
          to label %405 unwind label %409

405:                                              ; preds = %403
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %21) #7
  invoke void @_ZNK16HighsMatrixSliceI25HighsTripletPositionSliceE5beginEv(ptr dead_on_unwind nonnull writable sret(%"class.HighsMatrixSlice<HighsTripletPositionSlice>::iterator") align 8 %21, ptr noundef nonnull align 8 dereferenceable(28) %20)
          to label %406 unwind label %411

406:                                              ; preds = %405
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %22) #7
  invoke void @_ZNK16HighsMatrixSliceI25HighsTripletPositionSliceE3endEv(ptr dead_on_unwind nonnull writable sret(%"class.HighsMatrixSlice<HighsTripletPositionSlice>::iterator") align 8 %22, ptr noundef nonnull align 8 dereferenceable(28) %20)
          to label %.preheader721 unwind label %413

.preheader721:                                    ; preds = %406
  %407 = call noundef zeroext i1 @_ZNK16HighsMatrixSliceI25HighsTripletPositionSliceE8iteratorneERKS2_(ptr noundef nonnull align 8 dereferenceable(28) %21, ptr noundef nonnull align 8 dereferenceable(28) %22)
  br i1 %407, label %.lr.ph846, label %.thread635

.lr.ph846:                                        ; preds = %.preheader721
  %408 = sitofp i32 %.0485.lcssa to double
  br label %415

.thread635:                                       ; preds = %465, %.preheader721
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %22) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %21) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %20) #7
  br label %471

409:                                              ; preds = %403
  %410 = landingpad { ptr, i32 }
          cleanup
  br label %743

411:                                              ; preds = %405
  %412 = landingpad { ptr, i32 }
          cleanup
  br label %470

413:                                              ; preds = %406
  %414 = landingpad { ptr, i32 }
          cleanup
  br label %469

415:                                              ; preds = %.lr.ph846, %465
  %416 = call noundef nonnull align 8 dereferenceable(16) ptr @_ZN16HighsMatrixSliceI25HighsTripletPositionSliceE8iteratordeEv(ptr noundef nonnull align 8 dereferenceable(28) %21)
  %417 = call noundef i32 @_ZNK17HighsSliceNonzero5indexEv(ptr noundef nonnull align 8 dereferenceable(16) %416)
  %418 = zext i32 %417 to i64
  %419 = icmp eq i64 %indvars.iv863, %418
  br i1 %419, label %465, label %420

420:                                              ; preds = %415
  %421 = sext i32 %417 to i64
  %422 = call noundef nonnull align 1 dereferenceable(1) ptr @_ZNSt6vectorIhSaIhEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %51, i64 noundef %421) #7
  %423 = load i8, ptr %422, align 1, !tbaa !102
  %.not532 = icmp eq i8 %423, 0
  br i1 %.not532, label %424, label %465

424:                                              ; preds = %420
  %425 = call noundef double @_ZNK17HighsSliceNonzero5valueEv(ptr noundef nonnull align 8 dereferenceable(16) %416)
  %426 = fmul double %425, %408
  %427 = load ptr, ptr %56, align 8, !tbaa !105
  %428 = getelementptr inbounds i8, ptr %427, i64 264
  %429 = load double, ptr %428, align 8, !tbaa !106
  %430 = fadd double %426, %429
  %431 = fcmp ugt double %.0487.lcssa, %430
  br i1 %431, label %446, label %432

432:                                              ; preds = %424
  %433 = fsub double %426, %429
  %434 = fcmp ult double %.0487.lcssa, %433
  %or.cond584 = select i1 %404, i1 %434, i1 false
  br i1 %or.cond584, label %446, label %435

435:                                              ; preds = %432
  %436 = invoke noundef zeroext i1 @"_ZZN8presolve9HPresolve16dominatedColumnsERNS_19HighsPostsolveStackEENK3$_2clEiiii"(ptr noundef nonnull align 8 dereferenceable(16) %7, i32 noundef 1, i32 noundef %90, i32 noundef 1, i32 noundef %417)
          to label %437 unwind label %.loopexit722

437:                                              ; preds = %435
  br i1 %436, label %438, label %._crit_edge868

._crit_edge868:                                   ; preds = %437
  %.pre869 = load ptr, ptr %56, align 8, !tbaa !105
  %.phi.trans.insert870 = getelementptr inbounds i8, ptr %.pre869, i64 264
  %.pre871 = load double, ptr %.phi.trans.insert870, align 8, !tbaa !106
  br label %446

438:                                              ; preds = %437
  %439 = invoke noundef zeroext i1 @_ZN8presolve9HPresolve24fixColToUpperOrUnboundedERNS_19HighsPostsolveStackEi(ptr noundef nonnull align 8 dereferenceable(1720) %0, ptr noundef nonnull align 8 dereferenceable(224) %1, i32 noundef %90)
          to label %440 unwind label %.loopexit.split-lp

440:                                              ; preds = %438
  br i1 %439, label %.thread644.sink.split, label %441

.loopexit722:                                     ; preds = %435, %454
  %lpad.loopexit = landingpad { ptr, i32 }
          cleanup
  br label %469

.loopexit.split-lp:                               ; preds = %438, %457
  %lpad.loopexit.split-lp = landingpad { ptr, i32 }
          cleanup
  br label %469

441:                                              ; preds = %440
  %442 = invoke noundef i32 @_ZN8presolve9HPresolve19removeRowSingletonsERNS_19HighsPostsolveStackE(ptr noundef nonnull align 8 dereferenceable(1720) %0, ptr noundef nonnull align 8 dereferenceable(224) %1)
          to label %443 unwind label %444

443:                                              ; preds = %441
  %.not539 = icmp eq i32 %442, 0
  br i1 %.not539, label %select.unfold628, label %.thread644

444:                                              ; preds = %441
  %445 = landingpad { ptr, i32 }
          cleanup
  br label %469

446:                                              ; preds = %._crit_edge868, %432, %424
  %447 = phi double [ %.pre871, %._crit_edge868 ], [ %429, %432 ], [ %429, %424 ]
  %448 = fsub double %447, %426
  %449 = fcmp ugt double %.0487.lcssa, %448
  br i1 %449, label %465, label %450

450:                                              ; preds = %446
  %451 = fneg double %426
  %452 = fsub double %451, %447
  %453 = fcmp ult double %.0487.lcssa, %452
  %or.cond587 = select i1 %404, i1 %453, i1 false
  br i1 %or.cond587, label %465, label %454

454:                                              ; preds = %450
  %455 = invoke noundef zeroext i1 @"_ZZN8presolve9HPresolve16dominatedColumnsERNS_19HighsPostsolveStackEENK3$_2clEiiii"(ptr noundef nonnull align 8 dereferenceable(16) %7, i32 noundef 1, i32 noundef %90, i32 noundef -1, i32 noundef %417)
          to label %456 unwind label %.loopexit722

456:                                              ; preds = %454
  br i1 %455, label %457, label %465

457:                                              ; preds = %456
  %458 = invoke noundef zeroext i1 @_ZN8presolve9HPresolve24fixColToUpperOrUnboundedERNS_19HighsPostsolveStackEi(ptr noundef nonnull align 8 dereferenceable(1720) %0, ptr noundef nonnull align 8 dereferenceable(224) %1, i32 noundef %90)
          to label %459 unwind label %.loopexit.split-lp

459:                                              ; preds = %457
  br i1 %458, label %.thread644.sink.split, label %460

460:                                              ; preds = %459
  %461 = invoke noundef i32 @_ZN8presolve9HPresolve19removeRowSingletonsERNS_19HighsPostsolveStackE(ptr noundef nonnull align 8 dereferenceable(1720) %0, ptr noundef nonnull align 8 dereferenceable(224) %1)
          to label %462 unwind label %463

462:                                              ; preds = %460
  %.not533 = icmp eq i32 %461, 0
  br i1 %.not533, label %select.unfold628, label %.thread644

463:                                              ; preds = %460
  %464 = landingpad { ptr, i32 }
          cleanup
  br label %469

465:                                              ; preds = %420, %415, %456, %446, %450
  %466 = call noundef nonnull align 8 dereferenceable(28) ptr @_ZN16HighsMatrixSliceI25HighsTripletPositionSliceE8iteratorppEv(ptr noundef nonnull align 8 dereferenceable(28) %21)
  %467 = call noundef zeroext i1 @_ZNK16HighsMatrixSliceI25HighsTripletPositionSliceE8iteratorneERKS2_(ptr noundef nonnull align 8 dereferenceable(28) %21, ptr noundef nonnull align 8 dereferenceable(28) %22)
  br i1 %467, label %415, label %.thread635

.thread644.sink.split:                            ; preds = %459, %440
  %468 = getelementptr inbounds i8, ptr %0, i64 1588
  store i32 2, ptr %468, align 4, !tbaa !111
  br label %.thread644

.thread644:                                       ; preds = %462, %443, %.thread644.sink.split
  %.14.ph.ph = phi i32 [ 2, %.thread644.sink.split ], [ %461, %462 ], [ %442, %443 ]
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %22) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %21) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %20) #7
  br label %.thread623.thread

select.unfold628:                                 ; preds = %462, %443
  %.8424.ph = add nsw i32 %.5421, 1
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %22) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %21) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %20) #7
  br label %471

469:                                              ; preds = %.loopexit722, %.loopexit.split-lp, %444, %463, %413
  %.pn534.pn = phi { ptr, i32 } [ %414, %413 ], [ %445, %444 ], [ %464, %463 ], [ %lpad.loopexit, %.loopexit722 ], [ %lpad.loopexit.split-lp, %.loopexit.split-lp ]
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %22) #7
  br label %470

470:                                              ; preds = %469, %411
  %.pn534.pn.pn = phi { ptr, i32 } [ %.pn534.pn, %469 ], [ %412, %411 ]
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %21) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %20) #7
  br label %743

471:                                              ; preds = %select.unfold628, %.thread635
  %.9425641 = phi i32 [ %.5421, %.thread635 ], [ %.8424.ph, %select.unfold628 ]
  %472 = call noundef nonnull align 1 dereferenceable(1) ptr @_ZNSt6vectorIhSaIhEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %51, i64 noundef %indvars.iv863) #7
  %473 = load i8, ptr %472, align 1, !tbaa !102
  %.not540 = icmp eq i8 %473, 0
  br i1 %.not540, label %479, label %474

474:                                              ; preds = %471
  %475 = invoke noundef i32 @_ZN8presolve9HPresolve24removeDoubletonEquationsERNS_19HighsPostsolveStackE(ptr noundef nonnull align 8 dereferenceable(1720) %0, ptr noundef nonnull align 8 dereferenceable(224) %1)
          to label %476 unwind label %477

476:                                              ; preds = %474
  %.not543 = icmp eq i32 %475, 0
  br i1 %.not543, label %.thread623, label %.thread623.thread

477:                                              ; preds = %474
  %478 = landingpad { ptr, i32 }
          cleanup
  br label %743

479:                                              ; preds = %471, %386, %381, %375
  %.0475 = phi i8 [ 1, %386 ], [ %94, %381 ], [ %94, %375 ], [ 1, %471 ]
  %.10426 = phi i32 [ %.5421, %386 ], [ %.5421, %381 ], [ %.5421, %375 ], [ %.9425641, %471 ]
  %480 = trunc nuw i8 %.0473 to i1
  %481 = or i1 %.0477, %480
  %482 = trunc nuw i8 %.0475 to i1
  %483 = or i1 %.0478, %482
  %spec.select603 = select i1 %483, i32 %.0489.lcssa, i32 -1
  br i1 %481, label %select.unfold872, label %.thread

select.unfold872:                                 ; preds = %479, %._crit_edge
  %.2491 = phi i32 [ %.0489.lcssa, %._crit_edge ], [ %spec.select603, %479 ]
  %.1476 = phi i8 [ %94, %._crit_edge ], [ %.0475, %479 ]
  %.1474 = phi i8 [ %92, %._crit_edge ], [ %.0473, %479 ]
  %.11427 = phi i32 [ %.0416856, %._crit_edge ], [ %.10426, %479 ]
  %.not544 = icmp eq i32 %.0479.lcssa, -1
  br i1 %.not544, label %.thread, label %484

484:                                              ; preds = %select.unfold872
  %485 = trunc nuw i8 %.1474 to i1
  %486 = or i1 %.0477, %485
  br i1 %486, label %488, label %487

487:                                              ; preds = %484
  call void @__assert_fail(ptr noundef nonnull @.str.74, ptr noundef nonnull @.str.55, i32 noundef 1271, ptr noundef nonnull @__PRETTY_FUNCTION__._ZN8presolve9HPresolve16dominatedColumnsERNS_19HighsPostsolveStackE) #8
  unreachable

488:                                              ; preds = %484
  invoke void @_ZN8presolve9HPresolve8storeRowEi(ptr noundef nonnull align 8 dereferenceable(1720) %0, i32 noundef %.0479.lcssa)
          to label %489 unwind label %303

489:                                              ; preds = %488
  %490 = load ptr, ptr %0, align 8, !tbaa !5
  %491 = getelementptr inbounds i8, ptr %490, i64 80
  %492 = sext i32 %.0479.lcssa to i64
  %493 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt6vectorIdSaIdEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %491, i64 noundef %492) #7
  %494 = load double, ptr %493, align 8, !tbaa !98
  %495 = fcmp une double %494, 0xFFF0000000000000
  br i1 %495, label %496, label %502

496:                                              ; preds = %489
  %497 = load ptr, ptr %0, align 8, !tbaa !5
  %498 = getelementptr inbounds i8, ptr %497, i64 104
  %499 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt6vectorIdSaIdEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %498, i64 noundef %492) #7
  %500 = load double, ptr %499, align 8, !tbaa !98
  %501 = fcmp une double %500, 0x7FF0000000000000
  br label %502

502:                                              ; preds = %496, %489
  %503 = phi i1 [ false, %489 ], [ %501, %496 ]
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %23) #7
  invoke void @_ZNK8presolve9HPresolve12getStoredRowEv(ptr dead_on_unwind nonnull writable sret(%struct.HighsTripletPositionSlice) align 8 %23, ptr noundef nonnull align 8 dereferenceable(1720) %0)
          to label %504 unwind label %508

504:                                              ; preds = %502
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %24) #7
  invoke void @_ZNK16HighsMatrixSliceI25HighsTripletPositionSliceE5beginEv(ptr dead_on_unwind nonnull writable sret(%"class.HighsMatrixSlice<HighsTripletPositionSlice>::iterator") align 8 %24, ptr noundef nonnull align 8 dereferenceable(28) %23)
          to label %505 unwind label %510

505:                                              ; preds = %504
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %25) #7
  invoke void @_ZNK16HighsMatrixSliceI25HighsTripletPositionSliceE3endEv(ptr dead_on_unwind nonnull writable sret(%"class.HighsMatrixSlice<HighsTripletPositionSlice>::iterator") align 8 %25, ptr noundef nonnull align 8 dereferenceable(28) %23)
          to label %.preheader719 unwind label %512

.preheader719:                                    ; preds = %505
  %506 = call noundef zeroext i1 @_ZNK16HighsMatrixSliceI25HighsTripletPositionSliceE8iteratorneERKS2_(ptr noundef nonnull align 8 dereferenceable(28) %24, ptr noundef nonnull align 8 dereferenceable(28) %25)
  br i1 %506, label %.lr.ph848, label %.thread669

.lr.ph848:                                        ; preds = %.preheader719
  %507 = sitofp i32 %.0485.lcssa to double
  br label %514

508:                                              ; preds = %502
  %509 = landingpad { ptr, i32 }
          cleanup
  br label %743

510:                                              ; preds = %504
  %511 = landingpad { ptr, i32 }
          cleanup
  br label %607

512:                                              ; preds = %505
  %513 = landingpad { ptr, i32 }
          cleanup
  br label %606

514:                                              ; preds = %.lr.ph848, %602
  %.12428847 = phi i32 [ %.11427, %.lr.ph848 ], [ %.15431, %602 ]
  %515 = call noundef nonnull align 8 dereferenceable(16) ptr @_ZN16HighsMatrixSliceI25HighsTripletPositionSliceE8iteratordeEv(ptr noundef nonnull align 8 dereferenceable(28) %24)
  %516 = call noundef i32 @_ZNK17HighsSliceNonzero5indexEv(ptr noundef nonnull align 8 dereferenceable(16) %515)
  %517 = zext i32 %516 to i64
  %518 = icmp eq i64 %indvars.iv863, %517
  br i1 %518, label %602, label %519

519:                                              ; preds = %514
  %520 = sext i32 %516 to i64
  %521 = call noundef nonnull align 1 dereferenceable(1) ptr @_ZNSt6vectorIhSaIhEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %51, i64 noundef %520) #7
  %522 = load i8, ptr %521, align 1, !tbaa !102
  %.not545 = icmp eq i8 %522, 0
  br i1 %.not545, label %523, label %602

523:                                              ; preds = %519
  %524 = call noundef double @_ZNK17HighsSliceNonzero5valueEv(ptr noundef nonnull align 8 dereferenceable(16) %515)
  %525 = fmul double %524, %507
  %526 = load ptr, ptr %0, align 8, !tbaa !5
  %527 = getelementptr inbounds i8, ptr %526, i64 32
  %528 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt6vectorIdSaIdEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %527, i64 noundef %520) #7
  %529 = load double, ptr %528, align 8, !tbaa !98
  %530 = fcmp une double %529, 0xFFF0000000000000
  br i1 %530, label %531, label %564

531:                                              ; preds = %523
  br i1 %485, label %541, label %532

532:                                              ; preds = %531
  %533 = load ptr, ptr %52, align 8, !tbaa !103
  %534 = getelementptr inbounds i8, ptr %533, i64 224
  %535 = call noundef ptr @_ZNKSt10unique_ptrI18HighsMipSolverDataSt14default_deleteIS0_EEptEv(ptr noundef nonnull align 8 dereferenceable(8) %534) #7
  %536 = getelementptr inbounds i8, ptr %535, i64 23528
  call void @_ZN16HighsCliqueTable9CliqueVarC2Eii(ptr noundef nonnull align 4 dereferenceable(4) %26, i32 noundef %90, i32 noundef 1)
  call void @_ZN16HighsCliqueTable9CliqueVarC2Eii(ptr noundef nonnull align 4 dereferenceable(4) %27, i32 noundef %516, i32 noundef 1)
  %537 = load i32, ptr %26, align 4
  %538 = load i32, ptr %27, align 4
  %539 = invoke noundef zeroext i1 @_ZN16HighsCliqueTable16haveCommonCliqueENS_9CliqueVarES0_(ptr noundef nonnull align 8 dereferenceable(488) %536, i32 %537, i32 %538)
          to label %540 unwind label %557

540:                                              ; preds = %532
  br i1 %539, label %541, label %564

541:                                              ; preds = %540, %531
  %542 = load ptr, ptr %56, align 8, !tbaa !105
  %543 = getelementptr inbounds i8, ptr %542, i64 264
  %544 = load double, ptr %543, align 8, !tbaa !106
  %545 = fadd double %525, %544
  %546 = fcmp ugt double %.0487.lcssa, %545
  br i1 %546, label %564, label %547

547:                                              ; preds = %541
  %548 = fsub double %525, %544
  %549 = fcmp ult double %.0487.lcssa, %548
  %or.cond593 = select i1 %503, i1 %549, i1 false
  br i1 %or.cond593, label %564, label %550

550:                                              ; preds = %547
  %551 = invoke noundef zeroext i1 @"_ZZN8presolve9HPresolve16dominatedColumnsERNS_19HighsPostsolveStackEENK3$_2clEiiii"(ptr noundef nonnull align 8 dereferenceable(16) %7, i32 noundef 1, i32 noundef %90, i32 noundef 1, i32 noundef %516)
          to label %552 unwind label %557

552:                                              ; preds = %550
  br i1 %551, label %553, label %564

553:                                              ; preds = %552
  %554 = add nsw i32 %.12428847, 1
  %555 = invoke noundef zeroext i1 @_ZN8presolve9HPresolve24fixColToLowerOrUnboundedERNS_19HighsPostsolveStackEi(ptr noundef nonnull align 8 dereferenceable(1720) %0, ptr noundef nonnull align 8 dereferenceable(224) %1, i32 noundef %516)
          to label %556 unwind label %557

556:                                              ; preds = %553
  br i1 %555, label %.loopexit720.sink.split, label %559

557:                                              ; preds = %593, %590, %571, %553, %550, %532
  %558 = landingpad { ptr, i32 }
          cleanup
  br label %606

559:                                              ; preds = %556
  %560 = invoke noundef i32 @_ZN8presolve9HPresolve19removeRowSingletonsERNS_19HighsPostsolveStackE(ptr noundef nonnull align 8 dereferenceable(1720) %0, ptr noundef nonnull align 8 dereferenceable(224) %1)
          to label %561 unwind label %562

561:                                              ; preds = %559
  %.not552 = icmp eq i32 %560, 0
  br i1 %.not552, label %602, label %.loopexit720

562:                                              ; preds = %559
  %563 = landingpad { ptr, i32 }
          cleanup
  br label %606

564:                                              ; preds = %547, %552, %541, %540, %523
  %565 = load ptr, ptr %0, align 8, !tbaa !5
  %566 = getelementptr inbounds i8, ptr %565, i64 56
  %567 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt6vectorIdSaIdEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %566, i64 noundef %520) #7
  %568 = load double, ptr %567, align 8, !tbaa !98
  %569 = fcmp une double %568, 0x7FF0000000000000
  br i1 %569, label %570, label %602

570:                                              ; preds = %564
  br i1 %485, label %580, label %571

571:                                              ; preds = %570
  %572 = load ptr, ptr %52, align 8, !tbaa !103
  %573 = getelementptr inbounds i8, ptr %572, i64 224
  %574 = call noundef ptr @_ZNKSt10unique_ptrI18HighsMipSolverDataSt14default_deleteIS0_EEptEv(ptr noundef nonnull align 8 dereferenceable(8) %573) #7
  %575 = getelementptr inbounds i8, ptr %574, i64 23528
  call void @_ZN16HighsCliqueTable9CliqueVarC2Eii(ptr noundef nonnull align 4 dereferenceable(4) %28, i32 noundef %90, i32 noundef 1)
  call void @_ZN16HighsCliqueTable9CliqueVarC2Eii(ptr noundef nonnull align 4 dereferenceable(4) %29, i32 noundef %516, i32 noundef 0)
  %576 = load i32, ptr %28, align 4
  %577 = load i32, ptr %29, align 4
  %578 = invoke noundef zeroext i1 @_ZN16HighsCliqueTable16haveCommonCliqueENS_9CliqueVarES0_(ptr noundef nonnull align 8 dereferenceable(488) %575, i32 %576, i32 %577)
          to label %579 unwind label %557

579:                                              ; preds = %571
  br i1 %578, label %580, label %602

580:                                              ; preds = %579, %570
  %581 = load ptr, ptr %56, align 8, !tbaa !105
  %582 = getelementptr inbounds i8, ptr %581, i64 264
  %583 = load double, ptr %582, align 8, !tbaa !106
  %584 = fsub double %583, %525
  %585 = fcmp ugt double %.0487.lcssa, %584
  br i1 %585, label %602, label %586

586:                                              ; preds = %580
  %587 = fneg double %525
  %588 = fsub double %587, %583
  %589 = fcmp ult double %.0487.lcssa, %588
  %or.cond595 = select i1 %503, i1 %589, i1 false
  br i1 %or.cond595, label %602, label %590

590:                                              ; preds = %586
  %591 = invoke noundef zeroext i1 @"_ZZN8presolve9HPresolve16dominatedColumnsERNS_19HighsPostsolveStackEENK3$_2clEiiii"(ptr noundef nonnull align 8 dereferenceable(16) %7, i32 noundef 1, i32 noundef %90, i32 noundef -1, i32 noundef %516)
          to label %592 unwind label %557

592:                                              ; preds = %590
  br i1 %591, label %593, label %602

593:                                              ; preds = %592
  %594 = add nsw i32 %.12428847, 1
  %595 = invoke noundef zeroext i1 @_ZN8presolve9HPresolve24fixColToUpperOrUnboundedERNS_19HighsPostsolveStackEi(ptr noundef nonnull align 8 dereferenceable(1720) %0, ptr noundef nonnull align 8 dereferenceable(224) %1, i32 noundef %516)
          to label %596 unwind label %557

596:                                              ; preds = %593
  br i1 %595, label %.loopexit720.sink.split, label %597

597:                                              ; preds = %596
  %598 = invoke noundef i32 @_ZN8presolve9HPresolve19removeRowSingletonsERNS_19HighsPostsolveStackE(ptr noundef nonnull align 8 dereferenceable(1720) %0, ptr noundef nonnull align 8 dereferenceable(224) %1)
          to label %599 unwind label %600

599:                                              ; preds = %597
  %.not546 = icmp eq i32 %598, 0
  br i1 %.not546, label %602, label %.loopexit720

600:                                              ; preds = %597
  %601 = landingpad { ptr, i32 }
          cleanup
  br label %606

602:                                              ; preds = %561, %599, %592, %580, %579, %564, %586, %519, %514
  %.15431 = phi i32 [ %.12428847, %519 ], [ %.12428847, %514 ], [ %554, %561 ], [ %594, %599 ], [ %.12428847, %592 ], [ %.12428847, %580 ], [ %.12428847, %579 ], [ %.12428847, %564 ], [ %.12428847, %586 ]
  %603 = call noundef nonnull align 8 dereferenceable(28) ptr @_ZN16HighsMatrixSliceI25HighsTripletPositionSliceE8iteratorppEv(ptr noundef nonnull align 8 dereferenceable(28) %24)
  %604 = call noundef zeroext i1 @_ZNK16HighsMatrixSliceI25HighsTripletPositionSliceE8iteratorneERKS2_(ptr noundef nonnull align 8 dereferenceable(28) %24, ptr noundef nonnull align 8 dereferenceable(28) %25)
  br i1 %604, label %514, label %.thread669

.thread669:                                       ; preds = %602, %.preheader719
  %.12428.lcssa = phi i32 [ %.11427, %.preheader719 ], [ %.15431, %602 ]
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %25) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %24) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %23) #7
  br label %.thread

.loopexit720.sink.split:                          ; preds = %596, %556
  %605 = getelementptr inbounds i8, ptr %0, i64 1588
  store i32 2, ptr %605, align 4, !tbaa !111
  br label %.loopexit720

.loopexit720:                                     ; preds = %599, %561, %.loopexit720.sink.split
  %.25.ph = phi i32 [ 2, %.loopexit720.sink.split ], [ %560, %561 ], [ %598, %599 ]
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %25) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %24) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %23) #7
  br label %.thread697

606:                                              ; preds = %557, %562, %600, %512
  %.pn547.pn = phi { ptr, i32 } [ %513, %512 ], [ %563, %562 ], [ %558, %557 ], [ %601, %600 ]
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %25) #7
  br label %607

607:                                              ; preds = %606, %510
  %.pn547.pn.pn = phi { ptr, i32 } [ %.pn547.pn, %606 ], [ %511, %510 ]
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %24) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %23) #7
  br label %743

.thread:                                          ; preds = %479, %.thread669, %select.unfold872
  %.1476880 = phi i8 [ %.1476, %select.unfold872 ], [ %.1476, %.thread669 ], [ %.0475, %479 ]
  %.2491879 = phi i32 [ %.2491, %select.unfold872 ], [ %.2491, %.thread669 ], [ %spec.select603, %479 ]
  %.17433 = phi i32 [ %.11427, %select.unfold872 ], [ %.12428.lcssa, %.thread669 ], [ %.10426, %479 ]
  %.not553 = icmp eq i32 %.2491879, -1
  br i1 %.not553, label %733, label %608

608:                                              ; preds = %.thread
  %609 = trunc nuw i8 %.1476880 to i1
  %610 = or i1 %.0478, %609
  br i1 %610, label %612, label %611

611:                                              ; preds = %608
  call void @__assert_fail(ptr noundef nonnull @.str.75, ptr noundef nonnull @.str.55, i32 noundef 1319, ptr noundef nonnull @__PRETTY_FUNCTION__._ZN8presolve9HPresolve16dominatedColumnsERNS_19HighsPostsolveStackE) #8
  unreachable

612:                                              ; preds = %608
  invoke void @_ZN8presolve9HPresolve8storeRowEi(ptr noundef nonnull align 8 dereferenceable(1720) %0, i32 noundef %.2491879)
          to label %613 unwind label %303

613:                                              ; preds = %612
  %614 = load ptr, ptr %0, align 8, !tbaa !5
  %615 = getelementptr inbounds i8, ptr %614, i64 80
  %616 = sext i32 %.2491879 to i64
  %617 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt6vectorIdSaIdEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %615, i64 noundef %616) #7
  %618 = load double, ptr %617, align 8, !tbaa !98
  %619 = fcmp une double %618, 0xFFF0000000000000
  br i1 %619, label %620, label %626

620:                                              ; preds = %613
  %621 = load ptr, ptr %0, align 8, !tbaa !5
  %622 = getelementptr inbounds i8, ptr %621, i64 104
  %623 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt6vectorIdSaIdEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %622, i64 noundef %616) #7
  %624 = load double, ptr %623, align 8, !tbaa !98
  %625 = fcmp une double %624, 0x7FF0000000000000
  br label %626

626:                                              ; preds = %620, %613
  %627 = phi i1 [ false, %613 ], [ %625, %620 ]
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %30) #7
  invoke void @_ZNK8presolve9HPresolve12getStoredRowEv(ptr dead_on_unwind nonnull writable sret(%struct.HighsTripletPositionSlice) align 8 %30, ptr noundef nonnull align 8 dereferenceable(1720) %0)
          to label %628 unwind label %633

628:                                              ; preds = %626
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %31) #7
  invoke void @_ZNK16HighsMatrixSliceI25HighsTripletPositionSliceE5beginEv(ptr dead_on_unwind nonnull writable sret(%"class.HighsMatrixSlice<HighsTripletPositionSlice>::iterator") align 8 %31, ptr noundef nonnull align 8 dereferenceable(28) %30)
          to label %629 unwind label %635

629:                                              ; preds = %628
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %32) #7
  invoke void @_ZNK16HighsMatrixSliceI25HighsTripletPositionSliceE3endEv(ptr dead_on_unwind nonnull writable sret(%"class.HighsMatrixSlice<HighsTripletPositionSlice>::iterator") align 8 %32, ptr noundef nonnull align 8 dereferenceable(28) %30)
          to label %.preheader unwind label %637

.preheader:                                       ; preds = %629
  %630 = call noundef zeroext i1 @_ZNK16HighsMatrixSliceI25HighsTripletPositionSliceE8iteratorneERKS2_(ptr noundef nonnull align 8 dereferenceable(28) %31, ptr noundef nonnull align 8 dereferenceable(28) %32)
  br i1 %630, label %.lr.ph851, label %.thread687

.lr.ph851:                                        ; preds = %.preheader
  %631 = sitofp i32 %.0494.lcssa to double
  %632 = fneg double %.0496.lcssa
  br label %639

633:                                              ; preds = %626
  %634 = landingpad { ptr, i32 }
          cleanup
  br label %743

635:                                              ; preds = %628
  %636 = landingpad { ptr, i32 }
          cleanup
  br label %732

637:                                              ; preds = %629
  %638 = landingpad { ptr, i32 }
          cleanup
  br label %731

639:                                              ; preds = %.lr.ph851, %727
  %.18434850 = phi i32 [ %.17433, %.lr.ph851 ], [ %.21437, %727 ]
  %640 = call noundef nonnull align 8 dereferenceable(16) ptr @_ZN16HighsMatrixSliceI25HighsTripletPositionSliceE8iteratordeEv(ptr noundef nonnull align 8 dereferenceable(28) %31)
  %641 = call noundef i32 @_ZNK17HighsSliceNonzero5indexEv(ptr noundef nonnull align 8 dereferenceable(16) %640)
  %642 = zext i32 %641 to i64
  %643 = icmp eq i64 %indvars.iv863, %642
  br i1 %643, label %727, label %644

644:                                              ; preds = %639
  %645 = sext i32 %641 to i64
  %646 = call noundef nonnull align 1 dereferenceable(1) ptr @_ZNSt6vectorIhSaIhEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %51, i64 noundef %645) #7
  %647 = load i8, ptr %646, align 1, !tbaa !102
  %.not554 = icmp eq i8 %647, 0
  br i1 %.not554, label %648, label %727

648:                                              ; preds = %644
  %649 = call noundef double @_ZNK17HighsSliceNonzero5valueEv(ptr noundef nonnull align 8 dereferenceable(16) %640)
  %650 = fmul double %649, %631
  %651 = load ptr, ptr %0, align 8, !tbaa !5
  %652 = getelementptr inbounds i8, ptr %651, i64 56
  %653 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt6vectorIdSaIdEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %652, i64 noundef %645) #7
  %654 = load double, ptr %653, align 8, !tbaa !98
  %655 = fcmp une double %654, 0x7FF0000000000000
  br i1 %655, label %656, label %690

656:                                              ; preds = %648
  br i1 %609, label %666, label %657

657:                                              ; preds = %656
  %658 = load ptr, ptr %52, align 8, !tbaa !103
  %659 = getelementptr inbounds i8, ptr %658, i64 224
  %660 = call noundef ptr @_ZNKSt10unique_ptrI18HighsMipSolverDataSt14default_deleteIS0_EEptEv(ptr noundef nonnull align 8 dereferenceable(8) %659) #7
  %661 = getelementptr inbounds i8, ptr %660, i64 23528
  call void @_ZN16HighsCliqueTable9CliqueVarC2Eii(ptr noundef nonnull align 4 dereferenceable(4) %33, i32 noundef %90, i32 noundef 0)
  call void @_ZN16HighsCliqueTable9CliqueVarC2Eii(ptr noundef nonnull align 4 dereferenceable(4) %34, i32 noundef %641, i32 noundef 0)
  %662 = load i32, ptr %33, align 4
  %663 = load i32, ptr %34, align 4
  %664 = invoke noundef zeroext i1 @_ZN16HighsCliqueTable16haveCommonCliqueENS_9CliqueVarES0_(ptr noundef nonnull align 8 dereferenceable(488) %661, i32 %662, i32 %663)
          to label %665 unwind label %683

665:                                              ; preds = %657
  br i1 %664, label %666, label %690

666:                                              ; preds = %665, %656
  %667 = load ptr, ptr %56, align 8, !tbaa !105
  %668 = getelementptr inbounds i8, ptr %667, i64 264
  %669 = load double, ptr %668, align 8, !tbaa !106
  %670 = fsub double %669, %650
  %671 = fcmp ult double %670, %632
  br i1 %671, label %690, label %672

672:                                              ; preds = %666
  %673 = fneg double %650
  %674 = fsub double %673, %669
  %675 = fcmp ugt double %674, %632
  %or.cond598 = select i1 %627, i1 %675, i1 false
  br i1 %or.cond598, label %690, label %676

676:                                              ; preds = %672
  %677 = invoke noundef zeroext i1 @"_ZZN8presolve9HPresolve16dominatedColumnsERNS_19HighsPostsolveStackEENK3$_2clEiiii"(ptr noundef nonnull align 8 dereferenceable(16) %7, i32 noundef -1, i32 noundef %90, i32 noundef -1, i32 noundef %641)
          to label %678 unwind label %683

678:                                              ; preds = %676
  br i1 %677, label %679, label %690

679:                                              ; preds = %678
  %680 = add nsw i32 %.18434850, 1
  %681 = invoke noundef zeroext i1 @_ZN8presolve9HPresolve24fixColToUpperOrUnboundedERNS_19HighsPostsolveStackEi(ptr noundef nonnull align 8 dereferenceable(1720) %0, ptr noundef nonnull align 8 dereferenceable(224) %1, i32 noundef %641)
          to label %682 unwind label %683

682:                                              ; preds = %679
  br i1 %681, label %.loopexit.sink.split, label %685

683:                                              ; preds = %718, %715, %697, %679, %676, %657
  %684 = landingpad { ptr, i32 }
          cleanup
  br label %731

685:                                              ; preds = %682
  %686 = invoke noundef i32 @_ZN8presolve9HPresolve19removeRowSingletonsERNS_19HighsPostsolveStackE(ptr noundef nonnull align 8 dereferenceable(1720) %0, ptr noundef nonnull align 8 dereferenceable(224) %1)
          to label %687 unwind label %688

687:                                              ; preds = %685
  %.not561 = icmp eq i32 %686, 0
  br i1 %.not561, label %727, label %.loopexit

688:                                              ; preds = %685
  %689 = landingpad { ptr, i32 }
          cleanup
  br label %731

690:                                              ; preds = %672, %678, %666, %665, %648
  %691 = load ptr, ptr %0, align 8, !tbaa !5
  %692 = getelementptr inbounds i8, ptr %691, i64 32
  %693 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt6vectorIdSaIdEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %692, i64 noundef %645) #7
  %694 = load double, ptr %693, align 8, !tbaa !98
  %695 = fcmp une double %694, 0xFFF0000000000000
  br i1 %695, label %696, label %727

696:                                              ; preds = %690
  br i1 %609, label %706, label %697

697:                                              ; preds = %696
  %698 = load ptr, ptr %52, align 8, !tbaa !103
  %699 = getelementptr inbounds i8, ptr %698, i64 224
  %700 = call noundef ptr @_ZNKSt10unique_ptrI18HighsMipSolverDataSt14default_deleteIS0_EEptEv(ptr noundef nonnull align 8 dereferenceable(8) %699) #7
  %701 = getelementptr inbounds i8, ptr %700, i64 23528
  call void @_ZN16HighsCliqueTable9CliqueVarC2Eii(ptr noundef nonnull align 4 dereferenceable(4) %35, i32 noundef %90, i32 noundef 0)
  call void @_ZN16HighsCliqueTable9CliqueVarC2Eii(ptr noundef nonnull align 4 dereferenceable(4) %36, i32 noundef %641, i32 noundef 1)
  %702 = load i32, ptr %35, align 4
  %703 = load i32, ptr %36, align 4
  %704 = invoke noundef zeroext i1 @_ZN16HighsCliqueTable16haveCommonCliqueENS_9CliqueVarES0_(ptr noundef nonnull align 8 dereferenceable(488) %701, i32 %702, i32 %703)
          to label %705 unwind label %683

705:                                              ; preds = %697
  br i1 %704, label %706, label %727

706:                                              ; preds = %705, %696
  %707 = load ptr, ptr %56, align 8, !tbaa !105
  %708 = getelementptr inbounds i8, ptr %707, i64 264
  %709 = load double, ptr %708, align 8, !tbaa !106
  %710 = fadd double %650, %709
  %711 = fcmp ult double %710, %632
  br i1 %711, label %727, label %712

712:                                              ; preds = %706
  %713 = fsub double %650, %709
  %714 = fcmp ugt double %713, %632
  %or.cond600 = select i1 %627, i1 %714, i1 false
  br i1 %or.cond600, label %727, label %715

715:                                              ; preds = %712
  %716 = invoke noundef zeroext i1 @"_ZZN8presolve9HPresolve16dominatedColumnsERNS_19HighsPostsolveStackEENK3$_2clEiiii"(ptr noundef nonnull align 8 dereferenceable(16) %7, i32 noundef -1, i32 noundef %90, i32 noundef 1, i32 noundef %641)
          to label %717 unwind label %683

717:                                              ; preds = %715
  br i1 %716, label %718, label %727

718:                                              ; preds = %717
  %719 = add nsw i32 %.18434850, 1
  %720 = invoke noundef zeroext i1 @_ZN8presolve9HPresolve24fixColToLowerOrUnboundedERNS_19HighsPostsolveStackEi(ptr noundef nonnull align 8 dereferenceable(1720) %0, ptr noundef nonnull align 8 dereferenceable(224) %1, i32 noundef %641)
          to label %721 unwind label %683

721:                                              ; preds = %718
  br i1 %720, label %.loopexit.sink.split, label %722

722:                                              ; preds = %721
  %723 = invoke noundef i32 @_ZN8presolve9HPresolve19removeRowSingletonsERNS_19HighsPostsolveStackE(ptr noundef nonnull align 8 dereferenceable(1720) %0, ptr noundef nonnull align 8 dereferenceable(224) %1)
          to label %724 unwind label %725

724:                                              ; preds = %722
  %.not555 = icmp eq i32 %723, 0
  br i1 %.not555, label %727, label %.loopexit

725:                                              ; preds = %722
  %726 = landingpad { ptr, i32 }
          cleanup
  br label %731

727:                                              ; preds = %687, %724, %717, %706, %705, %690, %712, %644, %639
  %.21437 = phi i32 [ %.18434850, %644 ], [ %.18434850, %639 ], [ %680, %687 ], [ %719, %724 ], [ %.18434850, %717 ], [ %.18434850, %706 ], [ %.18434850, %705 ], [ %.18434850, %690 ], [ %.18434850, %712 ]
  %728 = call noundef nonnull align 8 dereferenceable(28) ptr @_ZN16HighsMatrixSliceI25HighsTripletPositionSliceE8iteratorppEv(ptr noundef nonnull align 8 dereferenceable(28) %31)
  %729 = call noundef zeroext i1 @_ZNK16HighsMatrixSliceI25HighsTripletPositionSliceE8iteratorneERKS2_(ptr noundef nonnull align 8 dereferenceable(28) %31, ptr noundef nonnull align 8 dereferenceable(28) %32)
  br i1 %729, label %639, label %.thread687

.thread687:                                       ; preds = %727, %.preheader
  %.18434.lcssa = phi i32 [ %.17433, %.preheader ], [ %.21437, %727 ]
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %32) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %31) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %30) #7
  br label %733

.loopexit.sink.split:                             ; preds = %721, %682
  %730 = getelementptr inbounds i8, ptr %0, i64 1588
  store i32 2, ptr %730, align 4, !tbaa !111
  br label %.loopexit

.loopexit:                                        ; preds = %724, %687, %.loopexit.sink.split
  %.33.ph = phi i32 [ 2, %.loopexit.sink.split ], [ %686, %687 ], [ %723, %724 ]
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %32) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %31) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %30) #7
  br label %.thread697

731:                                              ; preds = %683, %688, %725, %637
  %.pn556.pn = phi { ptr, i32 } [ %638, %637 ], [ %689, %688 ], [ %684, %683 ], [ %726, %725 ]
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %32) #7
  br label %732

732:                                              ; preds = %731, %635
  %.pn556.pn.pn = phi { ptr, i32 } [ %.pn556.pn, %731 ], [ %636, %635 ]
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %31) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %30) #7
  br label %743

733:                                              ; preds = %.thread687, %.thread
  %.23439 = phi i32 [ %.17433, %.thread ], [ %.18434.lcssa, %.thread687 ]
  %.not562 = icmp eq i32 %.23439, %.0416856
  br i1 %.not562, label %.thread703, label %734

734:                                              ; preds = %733
  %735 = invoke noundef i32 @_ZN8presolve9HPresolve24removeDoubletonEquationsERNS_19HighsPostsolveStackE(ptr noundef nonnull align 8 dereferenceable(1720) %0, ptr noundef nonnull align 8 dereferenceable(224) %1)
          to label %736 unwind label %737

736:                                              ; preds = %734
  %.not563 = icmp eq i32 %735, 0
  br i1 %.not563, label %.thread703, label %.thread697

737:                                              ; preds = %734
  %738 = landingpad { ptr, i32 }
          cleanup
  br label %743

.thread697:                                       ; preds = %736, %.loopexit, %.loopexit720
  %.38.ph = phi i32 [ %.25.ph, %.loopexit720 ], [ %.33.ph, %.loopexit ], [ %735, %736 ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %9) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %8) #7
  br label %.thread708

.thread703:                                       ; preds = %733, %736
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %9) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %8) #7
  br label %.thread691

.thread623.thread:                                ; preds = %372, %476, %.thread617, %.thread644
  %.38.ph715 = phi i32 [ %.14.ph.ph, %.thread644 ], [ %.5.ph.ph, %.thread617 ], [ %371, %372 ], [ %475, %476 ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %9) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %8) #7
  br label %.thread708

.thread623:                                       ; preds = %476, %372
  %.24440 = phi i32 [ %.4420614, %372 ], [ %.9425641, %476 ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %9) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %8) #7
  br label %.thread691

.thread691:                                       ; preds = %.thread623, %113, %.thread703, %86
  %.26442 = phi i32 [ %.0416856, %86 ], [ %.24440, %.thread623 ], [ %.23439, %.thread703 ], [ %.0416856, %113 ]
  %indvars.iv.next864 = add nuw nsw i64 %indvars.iv863, 1
  %739 = load ptr, ptr %0, align 8, !tbaa !5
  %740 = load i32, ptr %739, align 8, !tbaa !73
  %741 = sext i32 %740 to i64
  %742 = icmp slt i64 %indvars.iv.next864, %741
  br i1 %742, label %86, label %._crit_edge860, !llvm.loop !112

743:                                              ; preds = %633, %732, %508, %607, %477, %470, %409, %373, %366, %305, %120, %268, %737, %303
  %.pn565.pn.pn.pn.pn = phi { ptr, i32 } [ %738, %737 ], [ %304, %303 ], [ %.pn565.pn.pn, %268 ], [ %121, %120 ], [ %374, %373 ], [ %.pn.pn.pn, %366 ], [ %306, %305 ], [ %478, %477 ], [ %.pn534.pn.pn, %470 ], [ %410, %409 ], [ %.pn547.pn.pn, %607 ], [ %509, %508 ], [ %.pn556.pn.pn, %732 ], [ %634, %633 ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %9) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %8) #7
  br label %750

._crit_edge860:                                   ; preds = %.thread691
  %.not564 = icmp eq i32 %.26442, 0
  br i1 %.not564, label %.thread708, label %744

744:                                              ; preds = %._crit_edge860
  %745 = getelementptr inbounds i8, ptr %0, i64 8
  %746 = load ptr, ptr %745, align 8, !tbaa !105
  %747 = getelementptr inbounds i8, ptr %746, i64 896
  invoke void (ptr, i32, ptr, ...) @_Z11highsLogDevRK15HighsLogOptions12HighsLogTypePKcz(ptr noundef nonnull align 8 dereferenceable(89) %747, i32 noundef 1, ptr noundef nonnull @.str.76, i32 noundef %.26442)
          to label %.thread708 unwind label %748

748:                                              ; preds = %744
  %749 = landingpad { ptr, i32 }
          cleanup
  br label %750

.thread708:                                       ; preds = %.preheader730, %.thread623.thread, %.thread697, %._crit_edge860, %744
  %.42 = phi i32 [ 0, %744 ], [ 0, %._crit_edge860 ], [ %.38.ph, %.thread697 ], [ %.38.ph715, %.thread623.thread ], [ 0, %.preheader730 ]
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %7) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %6) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %5) #7
  call void @_ZNSt6vectorISt4pairIjjESaIS1_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %3) #7
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %3) #7
  ret i32 %.42

750:                                              ; preds = %748, %743, %111, %83
  %.pn573 = phi { ptr, i32 } [ %84, %83 ], [ %749, %748 ], [ %.pn565.pn.pn.pn.pn, %743 ], [ %112, %111 ]
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %7) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %6) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %5) #7
  call void @_ZNSt6vectorISt4pairIjjESaIS1_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %3) #7
  br label %751

751:                                              ; preds = %750, %57
  %.pn573.pn = phi { ptr, i32 } [ %.pn573, %750 ], [ %58, %57 ]
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %3) #7
  resume { ptr, i32 } %.pn573.pn
}

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

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

; Function Attrs: inlinehint mustprogress uwtable
declare hidden void @"_ZZN8presolve9HPresolve16dominatedColumnsERNS_19HighsPostsolveStackEENK3$_1clEiijj"(ptr noundef nonnull align 8 dereferenceable(8), i32 noundef, i32 noundef, i32 noundef, i32 noundef) local_unnamed_addr #6 align 2

; Function Attrs: inlinehint mustprogress nounwind uwtable
declare hidden noundef zeroext i1 @"_ZZN8presolve9HPresolve16dominatedColumnsERNS_19HighsPostsolveStackEENK3$_0clEi"(ptr noundef nonnull align 8 dereferenceable(8), i32 noundef) local_unnamed_addr #5 align 2

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

declare noundef double @_ZNK20HighsLinearSumBounds19getResidualSumUpperEiid(ptr noundef nonnull align 8 dereferenceable(240), i32 noundef, i32 noundef, double noundef) local_unnamed_addr #3

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

declare noundef double @_ZNK20HighsLinearSumBounds19getResidualSumLowerEiid(ptr noundef nonnull align 8 dereferenceable(240), i32 noundef, i32 noundef, double noundef) local_unnamed_addr #3

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

; Function Attrs: mustprogress uwtable
declare dso_local void @_ZNK8presolve9HPresolve12getStoredRowEv(ptr dead_on_unwind noalias writable sret(%struct.HighsTripletPositionSlice) align 8, ptr noundef nonnull align 8 dereferenceable(1720)) local_unnamed_addr #4 align 2

; Function Attrs: mustprogress uwtable
declare dso_local void @_ZNK16HighsMatrixSliceI25HighsTripletPositionSliceE5beginEv(ptr dead_on_unwind noalias writable sret(%"class.HighsMatrixSlice<HighsTripletPositionSlice>::iterator") align 8, ptr noundef nonnull align 8 dereferenceable(28)) local_unnamed_addr #4 align 2

; Function Attrs: mustprogress uwtable
declare dso_local void @_ZNK16HighsMatrixSliceI25HighsTripletPositionSliceE3endEv(ptr dead_on_unwind noalias writable sret(%"class.HighsMatrixSlice<HighsTripletPositionSlice>::iterator") align 8, ptr noundef nonnull align 8 dereferenceable(28)) local_unnamed_addr #4 align 2

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

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

; Function Attrs: inlinehint mustprogress uwtable
declare hidden noundef zeroext i1 @"_ZZN8presolve9HPresolve16dominatedColumnsERNS_19HighsPostsolveStackEENK3$_2clEiiii"(ptr noundef nonnull align 8 dereferenceable(16), i32 noundef, i32 noundef, i32 noundef, i32 noundef) local_unnamed_addr #6 align 2

; Function Attrs: mustprogress uwtable
declare dso_local noundef zeroext i1 @_ZN8presolve9HPresolve24fixColToLowerOrUnboundedERNS_19HighsPostsolveStackEi(ptr noundef nonnull align 8 dereferenceable(1720), ptr noundef nonnull align 8 dereferenceable(224), i32 noundef) local_unnamed_addr #4 align 2

; Function Attrs: mustprogress uwtable
declare dso_local noundef i32 @_ZN8presolve9HPresolve19removeRowSingletonsERNS_19HighsPostsolveStackE(ptr noundef nonnull align 8 dereferenceable(1720), ptr noundef nonnull align 8 dereferenceable(224)) local_unnamed_addr #4 align 2

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

; Function Attrs: mustprogress uwtable
declare dso_local noundef i32 @_ZN8presolve9HPresolve24removeDoubletonEquationsERNS_19HighsPostsolveStackE(ptr noundef nonnull align 8 dereferenceable(1720), ptr noundef nonnull align 8 dereferenceable(224)) local_unnamed_addr #4 align 2

; Function Attrs: mustprogress uwtable
declare dso_local noundef zeroext i1 @_ZN8presolve9HPresolve24fixColToUpperOrUnboundedERNS_19HighsPostsolveStackEi(ptr noundef nonnull align 8 dereferenceable(1720), ptr noundef nonnull align 8 dereferenceable(224), i32 noundef) local_unnamed_addr #4 align 2

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

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

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

; Function Attrs: mustprogress nounwind uwtable
declare dso_local void @_ZNSt15__new_allocatorISt4pairIjjEED2Ev(ptr noundef nonnull align 1 dereferenceable(1)) 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 = { noreturn nounwind "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }
attributes #3 = { "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }
attributes #4 = { 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 #5 = { inlinehint mustprogress nounwind uwtable "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }
attributes #6 = { inlinehint mustprogress uwtable "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }
attributes #7 = { nounwind }
attributes #8 = { noreturn nounwind }

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

!0 = !{i32 1, !"wchar_size", i32 4}
!1 = !{i32 8, !"PIC Level", i32 2}
!2 = !{i32 7, !"PIE Level", i32 2}
!3 = !{i32 7, !"uwtable", i32 2}
!4 = !{!"clang version 19.1.0 (git@github.com:llvm/llvm-project.git a4bf6cd7cfb1a1421ba92bca9d017b49936c55e4)"}
!5 = !{!6, !7, i64 0}
!6 = !{!"_ZTSN8presolve9HPresolveE", !7, i64 0, !7, i64 8, !7, i64 16, !7, i64 24, !10, i64 32, !11, i64 40, !15, i64 64, !15, i64 88, !15, i64 112, !15, i64 136, !15, i64 160, !15, i64 184, !15, i64 208, !15, i64 232, !15, i64 256, !15, i64 280, !15, i64 304, !15, i64 328, !15, i64 352, !15, i64 376, !11, i64 400, !11, i64 424, !15, i64 448, !15, i64 472, !11, i64 496, !11, i64 520, !11, i64 544, !11, i64 568, !15, i64 592, !15, i64 616, !19, i64 640, !19, i64 664, !23, i64 688, !23, i64 928, !15, i64 1168, !28, i64 1192, !15, i64 1216, !28, i64 1240, !32, i64 1264, !36, i64 1288, !42, i64 1344, !50, i64 1392, !54, i64 1416, !38, i64 1424, !15, i64 1432, !15, i64 1456, !28, i64 1480, !28, i64 1504, !55, i64 1528, !38, i64 1552, !59, i64 1560, !59, i64 1564, !59, i64 1568, !59, i64 1572, !59, i64 1576, !59, i64 1580, !54, i64 1584, !60, i64 1588, !61, i64 1592}
!7 = !{!"any pointer", !8, i64 0}
!8 = !{!"omnipotent char", !9, i64 0}
!9 = !{!"Simple C++ TBAA"}
!10 = !{!"double", !8, i64 0}
!11 = !{!"_ZTSSt6vectorIdSaIdEE", !12, i64 0}
!12 = !{!"_ZTSSt12_Vector_baseIdSaIdEE", !13, i64 0}
!13 = !{!"_ZTSNSt12_Vector_baseIdSaIdEE12_Vector_implE", !14, i64 0}
!14 = !{!"_ZTSNSt12_Vector_baseIdSaIdEE17_Vector_impl_dataE", !7, i64 0, !7, i64 8, !7, i64 16}
!15 = !{!"_ZTSSt6vectorIiSaIiEE", !16, i64 0}
!16 = !{!"_ZTSSt12_Vector_baseIiSaIiEE", !17, i64 0}
!17 = !{!"_ZTSNSt12_Vector_baseIiSaIiEE12_Vector_implE", !18, i64 0}
!18 = !{!"_ZTSNSt12_Vector_baseIiSaIiEE17_Vector_impl_dataE", !7, i64 0, !7, i64 8, !7, i64 16}
!19 = !{!"_ZTSSt6vectorISt3setIiSt4lessIiESaIiEESaIS4_EE", !20, i64 0}
!20 = !{!"_ZTSSt12_Vector_baseISt3setIiSt4lessIiESaIiEESaIS4_EE", !21, i64 0}
!21 = !{!"_ZTSNSt12_Vector_baseISt3setIiSt4lessIiESaIiEESaIS4_EE12_Vector_implE", !22, i64 0}
!22 = !{!"_ZTSNSt12_Vector_baseISt3setIiSt4lessIiESaIiEESaIS4_EE17_Vector_impl_dataE", !7, i64 0, !7, i64 8, !7, i64 16}
!23 = !{!"_ZTS20HighsLinearSumBounds", !24, i64 0, !24, i64 24, !15, i64 48, !15, i64 72, !24, i64 96, !24, i64 120, !15, i64 144, !15, i64 168, !7, i64 192, !7, i64 200, !7, i64 208, !7, i64 216, !7, i64 224, !7, i64 232}
!24 = !{!"_ZTSSt6vectorI12HighsCDoubleSaIS0_EE", !25, i64 0}
!25 = !{!"_ZTSSt12_Vector_baseI12HighsCDoubleSaIS0_EE", !26, i64 0}
!26 = !{!"_ZTSNSt12_Vector_baseI12HighsCDoubleSaIS0_EE12_Vector_implE", !27, i64 0}
!27 = !{!"_ZTSNSt12_Vector_baseI12HighsCDoubleSaIS0_EE17_Vector_impl_dataE", !7, i64 0, !7, i64 8, !7, i64 16}
!28 = !{!"_ZTSSt6vectorIhSaIhEE", !29, i64 0}
!29 = !{!"_ZTSSt12_Vector_baseIhSaIhEE", !30, i64 0}
!30 = !{!"_ZTSNSt12_Vector_baseIhSaIhEE12_Vector_implE", !31, i64 0}
!31 = !{!"_ZTSNSt12_Vector_baseIhSaIhEE17_Vector_impl_dataE", !7, i64 0, !7, i64 8, !7, i64 16}
!32 = !{!"_ZTSSt6vectorISt4pairIiiESaIS1_EE", !33, i64 0}
!33 = !{!"_ZTSSt12_Vector_baseISt4pairIiiESaIS1_EE", !34, i64 0}
!34 = !{!"_ZTSNSt12_Vector_baseISt4pairIiiESaIS1_EE12_Vector_implE", !35, i64 0}
!35 = !{!"_ZTSNSt12_Vector_baseISt4pairIiiESaIS1_EE17_Vector_impl_dataE", !7, i64 0, !7, i64 8, !7, i64 16}
!36 = !{!"_ZTSSt13unordered_mapIi13HighsHashTreeISt4pairIiiEdESt4hashIiESt8equal_toIiESaIS1_IKiS3_EEE", !37, i64 0}
!37 = !{!"_ZTSSt10_HashtableIiSt4pairIKi13HighsHashTreeIS0_IiiEdEESaIS5_ENSt8__detail10_Select1stESt8equal_toIiESt4hashIiENS7_18_Mod_range_hashingENS7_20_Default_ranged_hashENS7_20_Prime_rehash_policyENS7_17_Hashtable_traitsILb0ELb0ELb1EEEE", !7, i64 0, !38, i64 8, !39, i64 16, !38, i64 24, !40, i64 32, !7, i64 48}
!38 = !{!"long", !8, i64 0}
!39 = !{!"_ZTSNSt8__detail15_Hash_node_baseE", !7, i64 0}
!40 = !{!"_ZTSNSt8__detail20_Prime_rehash_policyE", !41, i64 0, !38, i64 8}
!41 = !{!"float", !8, i64 0}
!42 = !{!"_ZTSSt3setISt4pairIiiESt4lessIS1_ESaIS1_EE", !43, i64 0}
!43 = !{!"_ZTSSt8_Rb_treeISt4pairIiiES1_St9_IdentityIS1_ESt4lessIS1_ESaIS1_EE", !44, i64 0}
!44 = !{!"_ZTSNSt8_Rb_treeISt4pairIiiES1_St9_IdentityIS1_ESt4lessIS1_ESaIS1_EE13_Rb_tree_implIS5_Lb1EEE", !45, i64 0, !47, i64 8}
!45 = !{!"_ZTSSt20_Rb_tree_key_compareISt4lessISt4pairIiiEEE", !46, i64 0}
!46 = !{!"_ZTSSt4lessISt4pairIiiEE"}
!47 = !{!"_ZTSSt15_Rb_tree_header", !48, i64 0, !38, i64 32}
!48 = !{!"_ZTSSt18_Rb_tree_node_base", !49, i64 0, !7, i64 8, !7, i64 16, !7, i64 24}
!49 = !{!"_ZTSSt14_Rb_tree_color", !8, i64 0}
!50 = !{!"_ZTSSt6vectorISt23_Rb_tree_const_iteratorISt4pairIiiEESaIS3_EE", !51, i64 0}
!51 = !{!"_ZTSSt12_Vector_baseISt23_Rb_tree_const_iteratorISt4pairIiiEESaIS3_EE", !52, i64 0}
!52 = !{!"_ZTSNSt12_Vector_baseISt23_Rb_tree_const_iteratorISt4pairIiiEESaIS3_EE12_Vector_implE", !53, i64 0}
!53 = !{!"_ZTSNSt12_Vector_baseISt23_Rb_tree_const_iteratorISt4pairIiiEESaIS3_EE17_Vector_impl_dataE", !7, i64 0, !7, i64 8, !7, i64 16}
!54 = !{!"bool", !8, i64 0}
!55 = !{!"_ZTSSt6vectorItSaItEE", !56, i64 0}
!56 = !{!"_ZTSSt12_Vector_baseItSaItEE", !57, i64 0}
!57 = !{!"_ZTSNSt12_Vector_baseItSaItEE12_Vector_implE", !58, i64 0}
!58 = !{!"_ZTSNSt12_Vector_baseItSaItEE17_Vector_impl_dataE", !7, i64 0, !7, i64 8, !7, i64 16}
!59 = !{!"int", !8, i64 0}
!60 = !{!"_ZTS19HighsPresolveStatus", !8, i64 0}
!61 = !{!"_ZTS17HPresolveAnalysis", !7, i64 0, !7, i64 8, !7, i64 16, !7, i64 24, !7, i64 32, !59, i64 40, !59, i64 44, !62, i64 48, !54, i64 88, !54, i64 89, !59, i64 92, !59, i64 96, !59, i64 100, !68, i64 104}
!62 = !{!"_ZTSSt6vectorIbSaIbEE", !63, i64 0}
!63 = !{!"_ZTSSt13_Bvector_baseISaIbEE", !64, i64 0}
!64 = !{!"_ZTSNSt13_Bvector_baseISaIbEE13_Bvector_implE", !65, i64 0}
!65 = !{!"_ZTSNSt13_Bvector_baseISaIbEE18_Bvector_impl_dataE", !66, i64 0, !66, i64 16, !7, i64 32}
!66 = !{!"_ZTSSt13_Bit_iterator", !67, i64 0}
!67 = !{!"_ZTSSt18_Bit_iterator_base", !7, i64 0, !59, i64 8}
!68 = !{!"_ZTS16HighsPresolveLog", !69, i64 0}
!69 = !{!"_ZTSSt6vectorI20HighsPresolveRuleLogSaIS0_EE", !70, i64 0}
!70 = !{!"_ZTSSt12_Vector_baseI20HighsPresolveRuleLogSaIS0_EE", !71, i64 0}
!71 = !{!"_ZTSNSt12_Vector_baseI20HighsPresolveRuleLogSaIS0_EE12_Vector_implE", !72, i64 0}
!72 = !{!"_ZTSNSt12_Vector_baseI20HighsPresolveRuleLogSaIS0_EE17_Vector_impl_dataE", !7, i64 0, !7, i64 8, !7, i64 16}
!73 = !{!74, !59, i64 0}
!74 = !{!"_ZTS7HighsLp", !59, i64 0, !59, i64 4, !11, i64 8, !11, i64 32, !11, i64 56, !11, i64 80, !11, i64 104, !75, i64 128, !77, i64 240, !10, i64 248, !78, i64 256, !78, i64 288, !59, i64 320, !59, i64 324, !80, i64 328, !80, i64 352, !84, i64 376, !88, i64 400, !88, i64 456, !59, i64 512, !59, i64 516, !91, i64 520, !54, i64 592, !54, i64 593, !59, i64 596, !54, i64 600, !92, i64 608}
!75 = !{!"_ZTS17HighsSparseMatrix", !76, i64 0, !59, i64 4, !59, i64 8, !15, i64 16, !15, i64 40, !15, i64 64, !11, i64 88}
!76 = !{!"_ZTS12MatrixFormat", !8, i64 0}
!77 = !{!"_ZTS8ObjSense", !8, i64 0}
!78 = !{!"_ZTSNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE", !79, i64 0, !38, i64 8, !8, i64 16}
!79 = !{!"_ZTSNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE12_Alloc_hiderE", !7, i64 0}
!80 = !{!"_ZTSSt6vectorINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESaIS5_EE", !81, i64 0}
!81 = !{!"_ZTSSt12_Vector_baseINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESaIS5_EE", !82, i64 0}
!82 = !{!"_ZTSNSt12_Vector_baseINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESaIS5_EE12_Vector_implE", !83, i64 0}
!83 = !{!"_ZTSNSt12_Vector_baseINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESaIS5_EE17_Vector_impl_dataE", !7, i64 0, !7, i64 8, !7, i64 16}
!84 = !{!"_ZTSSt6vectorI12HighsVarTypeSaIS0_EE", !85, i64 0}
!85 = !{!"_ZTSSt12_Vector_baseI12HighsVarTypeSaIS0_EE", !86, i64 0}
!86 = !{!"_ZTSNSt12_Vector_baseI12HighsVarTypeSaIS0_EE12_Vector_implE", !87, i64 0}
!87 = !{!"_ZTSNSt12_Vector_baseI12HighsVarTypeSaIS0_EE17_Vector_impl_dataE", !7, i64 0, !7, i64 8, !7, i64 16}
!88 = !{!"_ZTS13HighsNameHash", !89, i64 0}
!89 = !{!"_ZTSSt13unordered_mapINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEiSt4hashIS5_ESt8equal_toIS5_ESaISt4pairIKS5_iEEE", !90, i64 0}
!90 = !{!"_ZTSSt10_HashtableINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESt4pairIKS5_iESaIS8_ENSt8__detail10_Select1stESt8equal_toIS5_ESt4hashIS5_ENSA_18_Mod_range_hashingENSA_20_Default_ranged_hashENSA_20_Prime_rehash_policyENSA_17_Hashtable_traitsILb1ELb0ELb1EEEE", !7, i64 0, !38, i64 8, !39, i64 16, !38, i64 24, !40, i64 32, !7, i64 48}
!91 = !{!"_ZTS10HighsScale", !59, i64 0, !54, i64 4, !59, i64 8, !59, i64 12, !10, i64 16, !11, i64 24, !11, i64 48}
!92 = !{!"_ZTS11HighsLpMods", !15, i64 0, !15, i64 24, !11, i64 48, !11, i64 72, !84, i64 96, !15, i64 120, !11, i64 144, !15, i64 168, !11, i64 192, !15, i64 216, !11, i64 240, !11, i64 264, !11, i64 288}
!93 = !{!94, !7, i64 0}
!94 = !{!"_ZTSZN8presolve9HPresolve16dominatedColumnsERNS_19HighsPostsolveStackEE3$_0", !7, i64 0}
!95 = !{!7, !7, i64 0}
!96 = !{!97, !7, i64 0}
!97 = !{!"_ZTSZN8presolve9HPresolve16dominatedColumnsERNS_19HighsPostsolveStackEE3$_2", !7, i64 0, !7, i64 8}
!98 = !{!10, !10, i64 0}
!99 = !{!59, !59, i64 0}
!100 = distinct !{!100, !101}
!101 = !{!"llvm.loop.mustprogress"}
!102 = !{!8, !8, i64 0}
!103 = !{!6, !7, i64 24}
!104 = !{!6, !10, i64 32}
!105 = !{!6, !7, i64 8}
!106 = !{!107, !10, i64 264}
!107 = !{!"_ZTS18HighsOptionsStruct", !78, i64 8, !78, i64 40, !78, i64 72, !78, i64 104, !10, i64 136, !78, i64 144, !78, i64 176, !59, i64 208, !78, i64 216, !10, i64 248, !10, i64 256, !10, i64 264, !10, i64 272, !10, i64 280, !10, i64 288, !10, i64 296, !10, i64 304, !10, i64 312, !10, i64 320, !10, i64 328, !59, i64 336, !59, i64 340, !59, i64 344, !59, i64 348, !59, i64 352, !59, i64 356, !59, i64 360, !59, i64 364, !59, i64 368, !59, i64 372, !59, i64 376, !59, i64 380, !59, i64 384, !59, i64 388, !78, i64 392, !54, i64 424, !54, i64 425, !54, i64 426, !59, i64 428, !59, i64 432, !78, i64 440, !54, i64 472, !54, i64 473, !54, i64 474, !59, i64 476, !54, i64 480, !54, i64 481, !59, i64 484, !59, i64 488, !10, i64 496, !59, i64 504, !59, i64 508, !59, i64 512, !54, i64 516, !59, i64 520, !54, i64 524, !54, i64 525, !54, i64 526, !54, i64 527, !54, i64 528, !54, i64 529, !54, i64 530, !59, i64 532, !59, i64 536, !59, i64 540, !59, i64 544, !59, i64 548, !59, i64 552, !59, i64 556, !59, i64 560, !59, i64 564, !59, i64 568, !59, i64 572, !59, i64 576, !59, i64 580, !59, i64 584, !59, i64 588, !54, i64 592, !54, i64 593, !54, i64 594, !54, i64 595, !10, i64 600, !10, i64 608, !10, i64 616, !10, i64 624, !10, i64 632, !10, i64 640, !10, i64 648, !10, i64 656, !10, i64 664, !10, i64 672, !10, i64 680, !54, i64 688, !54, i64 689, !54, i64 690, !54, i64 691, !59, i64 692, !10, i64 696, !54, i64 704, !54, i64 705, !78, i64 712, !10, i64 744, !59, i64 752, !59, i64 756, !54, i64 760, !54, i64 761, !54, i64 762, !54, i64 763, !59, i64 764, !59, i64 768, !59, i64 772, !59, i64 776, !59, i64 780, !59, i64 784, !59, i64 788, !59, i64 792, !59, i64 796, !59, i64 800, !59, i64 804, !10, i64 808, !10, i64 816, !10, i64 824, !10, i64 832, !10, i64 840, !54, i64 848, !54, i64 849, !78, i64 856, !54, i64 888, !59, i64 892, !108, i64 896}
!108 = !{!"_ZTS15HighsLogOptions", !7, i64 0, !7, i64 8, !7, i64 16, !7, i64 24, !7, i64 32, !7, i64 40, !109, i64 48, !7, i64 80, !54, i64 88}
!109 = !{!"_ZTSSt8functionIFviRKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEPK20HighsCallbackDataOutP19HighsCallbackDataInPvEE", !110, i64 0, !7, i64 24}
!110 = !{!"_ZTSSt14_Function_base", !8, i64 0, !7, i64 16}
!111 = !{!6, !60, i64 1588}
!112 = distinct !{!112, !101}


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