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

; 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 }
%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] }>
%"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 }
%"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 }
%"struct.std::_Rb_tree_const_iterator.408" = type { ptr }
%"class.__gnu_cxx::__normal_iterator" = type { ptr }
%"class.std::map.539" = type { %"class.std::_Rb_tree.540" }
%"class.std::_Rb_tree.540" = type { %"struct.std::_Rb_tree<double, std::pair<const double, int>, std::_Select1st<std::pair<const double, int>>, std::less<double>>::_Rb_tree_impl" }
%"struct.std::_Rb_tree<double, std::pair<const double, int>, std::_Select1st<std::pair<const double, int>>, std::less<double>>::_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 }
%"struct.std::_Rb_tree_iterator.545" = type { ptr }
%"struct.std::pair.549" = type <{ %"struct.std::_Rb_tree_iterator.545", i8, [7 x i8] }>
%"class.__gnu_cxx::__normal_iterator.552" = type { ptr }
%"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" }
%"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.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 }
%"struct.std::pair" = type { i32, i32 }
%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" }
%"struct.std::pair.546" = type <{ double, 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::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.presolve::HighsPostsolveStack::Nonzero" = type { i32, double }

@.str.55 = external hidden unnamed_addr constant [76 x i8], align 1
@.str.147 = external hidden unnamed_addr constant [19 x i8], align 1
@.str.149 = external hidden unnamed_addr constant [53 x i8], align 1
@__PRETTY_FUNCTION__._ZN8presolve9HPresolve8sparsifyERNS_19HighsPostsolveStackE = external hidden unnamed_addr constant [71 x i8], align 1
@.str.171 = external hidden unnamed_addr constant [48 x i8], align 1
@.str.172 = external hidden unnamed_addr constant [31 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 nonnull align 1 dereferenceable(1) ptr @_ZNSt6vectorI12HighsVarTypeSaIS0_EEixEm(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: inlinehint mustprogress nounwind uwtable
declare dso_local noundef double @_ZSt3absd(double noundef) #2

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

; 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: nocallback nofree nosync nounwind speculatable willreturn memory(none)
declare double @llvm.fmuladd.f64(double, double, double) #5

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

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

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

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

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

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

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

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

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

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

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

; Function Attrs: mustprogress uwtable
declare dso_local noundef i32 @_ZN8presolve9HPresolve11checkLimitsERNS_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 zeroext i1 @_ZStneRKSt23_Rb_tree_const_iteratorISt4pairIiiEES4_(ptr noundef nonnull align 8 dereferenceable(8), ptr noundef nonnull align 8 dereferenceable(8)) #1

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

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

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

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

; Function Attrs: mustprogress uwtable
define dso_local noundef i32 @_ZN8presolve9HPresolve8sparsifyERNS_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.15", align 8
  %7 = alloca i32, align 4
  %8 = alloca ptr, align 8
  %9 = alloca i32, align 4
  %10 = alloca i32, align 4
  %11 = alloca i32, align 4
  %12 = alloca %"class.std::vector.5", align 8
  %13 = alloca double, align 8
  %14 = alloca ptr, align 8
  %15 = alloca %"struct.std::_Rb_tree_const_iterator.408", align 8
  %16 = alloca %"struct.std::_Rb_tree_const_iterator.408", align 8
  %17 = alloca ptr, align 8
  %18 = alloca ptr, align 8
  %19 = alloca %"class.__gnu_cxx::__normal_iterator", align 8
  %20 = alloca %"class.__gnu_cxx::__normal_iterator", align 8
  %21 = alloca i32, align 4
  %22 = alloca i32, align 4
  %23 = alloca i32, align 4
  %24 = alloca i32, align 4
  %25 = alloca i64, align 8
  %26 = alloca i32, align 4
  %27 = alloca %"class.std::map.539", align 8
  %28 = alloca ptr, align 8
  %29 = alloca %struct.HighsTripletListSlice, align 8
  %30 = alloca %"class.HighsMatrixSlice<HighsTripletListSlice>::iterator", align 8
  %31 = alloca %"class.HighsMatrixSlice<HighsTripletListSlice>::iterator", align 8
  %32 = alloca ptr, align 8
  %33 = alloca i32, align 4
  %34 = alloca i32, align 4
  %35 = alloca i32, align 4
  %36 = alloca ptr, align 8
  %37 = alloca %struct.HighsTripletPositionSlice, align 8
  %38 = alloca %"class.HighsMatrixSlice<HighsTripletPositionSlice>::iterator", align 8
  %39 = alloca %"class.HighsMatrixSlice<HighsTripletPositionSlice>::iterator", align 8
  %40 = alloca ptr, align 8
  %41 = alloca double, align 8
  %42 = alloca i32, align 4
  %43 = alloca double, align 8
  %44 = alloca double, align 8
  %45 = alloca %"struct.std::_Rb_tree_iterator.545", align 8
  %46 = alloca double, align 8
  %47 = alloca %"struct.std::_Rb_tree_iterator.545", align 8
  %48 = alloca i32, align 4
  %49 = alloca %"struct.std::pair.549", align 8
  %50 = alloca i32, align 4
  %51 = alloca double, align 8
  %52 = alloca ptr, align 8
  %53 = alloca %"struct.std::_Rb_tree_iterator.545", align 8
  %54 = alloca %"struct.std::_Rb_tree_iterator.545", align 8
  %55 = alloca ptr, align 8
  %56 = alloca ptr, align 8
  %57 = alloca %struct.HighsTripletListSlice, align 8
  %58 = alloca %"class.HighsMatrixSlice<HighsTripletListSlice>::iterator", align 8
  %59 = alloca %"class.HighsMatrixSlice<HighsTripletListSlice>::iterator", align 8
  %60 = alloca ptr, align 8
  %61 = alloca i32, align 4
  %62 = alloca i32, align 4
  %63 = alloca i8, align 1
  %64 = alloca ptr, align 8
  %65 = alloca %struct.HighsTripletPositionSlice, align 8
  %66 = alloca %"class.HighsMatrixSlice<HighsTripletPositionSlice>::iterator", align 8
  %67 = alloca %"class.HighsMatrixSlice<HighsTripletPositionSlice>::iterator", align 8
  %68 = alloca ptr, align 8
  %69 = alloca double, align 8
  %70 = alloca i32, align 4
  %71 = alloca double, align 8
  %72 = alloca double, align 8
  %73 = alloca %"struct.std::_Rb_tree_iterator.545", align 8
  %74 = alloca double, align 8
  %75 = alloca %"struct.std::_Rb_tree_iterator.545", align 8
  %76 = alloca i32, align 4
  %77 = alloca %"struct.std::pair.549", align 8
  %78 = alloca i32, align 4
  %79 = alloca double, align 8
  %80 = alloca ptr, align 8
  %81 = alloca %"struct.std::_Rb_tree_iterator.545", align 8
  %82 = alloca %"struct.std::_Rb_tree_iterator.545", align 8
  %83 = alloca ptr, align 8
  %84 = alloca %struct.HighsTripletPositionSlice, align 8
  %85 = alloca double, align 8
  %86 = alloca ptr, align 8
  %87 = alloca %"class.__gnu_cxx::__normal_iterator.552", align 8
  %88 = alloca %"class.__gnu_cxx::__normal_iterator.552", align 8
  %89 = alloca ptr, align 8
  %90 = alloca i32, align 4
  %91 = alloca double, align 8
  %92 = alloca ptr, align 8
  %93 = alloca %"class.__gnu_cxx::__normal_iterator", align 8
  %94 = alloca %"class.__gnu_cxx::__normal_iterator", align 8
  %95 = alloca i32, align 4
  %96 = alloca i32, align 4
  %97 = alloca i32, align 4
  %98 = alloca i32, align 4
  store ptr %0, ptr %4, align 8, !tbaa !5
  store ptr %1, ptr %5, align 8, !tbaa !5
  %99 = load ptr, ptr %4, align 8
  call void @llvm.lifetime.start.p0(i64 24, ptr %6) #7
  call void @_ZNSt6vectorIN8presolve19HighsPostsolveStack7NonzeroESaIS2_EEC2Ev(ptr noundef nonnull align 8 dereferenceable(24) %6) #7
  br label %100

100:                                              ; preds = %2
  call void @llvm.lifetime.start.p0(i64 4, ptr %7) #7
  %101 = load ptr, ptr %5, align 8, !tbaa !5
  %102 = invoke noundef i32 @_ZN8presolve9HPresolve19removeRowSingletonsERNS_19HighsPostsolveStackE(ptr noundef nonnull align 8 dereferenceable(1720) %99, ptr noundef nonnull align 8 dereferenceable(224) %101)
          to label %103 unwind label %108

103:                                              ; preds = %100
  store i32 %102, ptr %7, align 4, !tbaa !9
  %104 = load i32, ptr %7, align 4, !tbaa !9
  %105 = icmp ne i32 %104, 0
  br i1 %105, label %106, label %112

106:                                              ; preds = %103
  %107 = load i32, ptr %7, align 4, !tbaa !9
  store i32 %107, ptr %3, align 4
  store i32 1, ptr %10, align 4
  br label %113

108:                                              ; preds = %100
  %109 = landingpad { ptr, i32 }
          cleanup
  %110 = extractvalue { ptr, i32 } %109, 0
  store ptr %110, ptr %8, align 8
  %111 = extractvalue { ptr, i32 } %109, 1
  store i32 %111, ptr %9, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %7) #7
  br label %1265

112:                                              ; preds = %103
  store i32 0, ptr %10, align 4
  br label %113

113:                                              ; preds = %112, %106
  call void @llvm.lifetime.end.p0(i64 4, ptr %7) #7
  %114 = load i32, ptr %10, align 4
  switch i32 %114, label %1263 [
    i32 0, label %115
  ]

115:                                              ; preds = %113
  br label %116

116:                                              ; preds = %115
  br label %117

117:                                              ; preds = %116
  br label %118

118:                                              ; preds = %117
  call void @llvm.lifetime.start.p0(i64 4, ptr %11) #7
  %119 = load ptr, ptr %5, align 8, !tbaa !5
  %120 = invoke noundef i32 @_ZN8presolve9HPresolve24removeDoubletonEquationsERNS_19HighsPostsolveStackE(ptr noundef nonnull align 8 dereferenceable(1720) %99, ptr noundef nonnull align 8 dereferenceable(224) %119)
          to label %121 unwind label %126

121:                                              ; preds = %118
  store i32 %120, ptr %11, align 4, !tbaa !9
  %122 = load i32, ptr %11, align 4, !tbaa !9
  %123 = icmp ne i32 %122, 0
  br i1 %123, label %124, label %130

124:                                              ; preds = %121
  %125 = load i32, ptr %11, align 4, !tbaa !9
  store i32 %125, ptr %3, align 4
  store i32 1, ptr %10, align 4
  br label %131

126:                                              ; preds = %118
  %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 @llvm.lifetime.end.p0(i64 4, ptr %11) #7
  br label %1265

130:                                              ; preds = %121
  store i32 0, ptr %10, align 4
  br label %131

131:                                              ; preds = %130, %124
  call void @llvm.lifetime.end.p0(i64 4, ptr %11) #7
  %132 = load i32, ptr %10, align 4
  switch i32 %132, label %1263 [
    i32 0, label %133
  ]

133:                                              ; preds = %131
  br label %134

134:                                              ; preds = %133
  br label %135

135:                                              ; preds = %134
  call void @llvm.lifetime.start.p0(i64 24, ptr %12) #7
  call void @_ZNSt6vectorIiSaIiEEC2Ev(ptr noundef nonnull align 8 dereferenceable(24) %12) #7
  %136 = getelementptr inbounds %"class.presolve::HPresolve", ptr %99, i32 0, i32 40
  %137 = call noundef i64 @_ZNKSt3setISt4pairIiiESt4lessIS1_ESaIS1_EE4sizeEv(ptr noundef nonnull align 8 dereferenceable(48) %136) #7
  invoke void @_ZNSt6vectorIiSaIiEE7reserveEm(ptr noundef nonnull align 8 dereferenceable(24) %12, i64 noundef %137)
          to label %138 unwind label %152

138:                                              ; preds = %135
  call void @llvm.lifetime.start.p0(i64 8, ptr %13) #7
  %139 = getelementptr inbounds %"class.presolve::HPresolve", ptr %99, i32 0, i32 4
  %140 = load double, ptr %139, align 8, !tbaa !11
  %141 = call double @sqrt(double noundef %140) #7
  store double %141, ptr %13, align 8, !tbaa !76
  call void @llvm.lifetime.start.p0(i64 8, ptr %14) #7
  %142 = getelementptr inbounds %"class.presolve::HPresolve", ptr %99, i32 0, i32 40
  store ptr %142, ptr %14, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %15) #7
  %143 = load ptr, ptr %14, align 8, !tbaa !5
  %144 = call ptr @_ZNKSt3setISt4pairIiiESt4lessIS1_ESaIS1_EE5beginEv(ptr noundef nonnull align 8 dereferenceable(48) %143) #7
  %145 = getelementptr inbounds %"struct.std::_Rb_tree_const_iterator.408", ptr %15, i32 0, i32 0
  store ptr %144, ptr %145, align 8
  call void @llvm.lifetime.start.p0(i64 8, ptr %16) #7
  %146 = load ptr, ptr %14, align 8, !tbaa !5
  %147 = call ptr @_ZNKSt3setISt4pairIiiESt4lessIS1_ESaIS1_EE3endEv(ptr noundef nonnull align 8 dereferenceable(48) %146) #7
  %148 = getelementptr inbounds %"struct.std::_Rb_tree_const_iterator.408", ptr %16, i32 0, i32 0
  store ptr %147, ptr %148, align 8
  br label %149

149:                                              ; preds = %162, %138
  %150 = call noundef zeroext i1 @_ZStneRKSt23_Rb_tree_const_iteratorISt4pairIiiEES4_(ptr noundef nonnull align 8 dereferenceable(8) %15, ptr noundef nonnull align 8 dereferenceable(8) %16) #7
  br i1 %150, label %156, label %151

151:                                              ; preds = %149
  store i32 6, ptr %10, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %16) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %15) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %14) #7
  br label %168

152:                                              ; preds = %135
  %153 = landingpad { ptr, i32 }
          cleanup
  %154 = extractvalue { ptr, i32 } %153, 0
  store ptr %154, ptr %8, align 8
  %155 = extractvalue { ptr, i32 } %153, 1
  store i32 %155, ptr %9, align 4
  br label %1262

156:                                              ; preds = %149
  call void @llvm.lifetime.start.p0(i64 8, ptr %17) #7
  %157 = call noundef nonnull align 4 dereferenceable(8) ptr @_ZNKSt23_Rb_tree_const_iteratorISt4pairIiiEEdeEv(ptr noundef nonnull align 8 dereferenceable(8) %15) #7
  store ptr %157, ptr %17, align 8, !tbaa !5
  %158 = load ptr, ptr %17, align 8, !tbaa !5
  %159 = getelementptr inbounds %"struct.std::pair", ptr %158, i32 0, i32 1
  %160 = invoke noundef nonnull align 4 dereferenceable(4) ptr @_ZNSt6vectorIiSaIiEE12emplace_backIJRKiEEERiDpOT_(ptr noundef nonnull align 8 dereferenceable(24) %12, ptr noundef nonnull align 4 dereferenceable(4) %159)
          to label %161 unwind label %164

161:                                              ; preds = %156
  call void @llvm.lifetime.end.p0(i64 8, ptr %17) #7
  br label %162

162:                                              ; preds = %161
  %163 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt23_Rb_tree_const_iteratorISt4pairIiiEEppEv(ptr noundef nonnull align 8 dereferenceable(8) %15) #7
  br label %149

164:                                              ; preds = %156
  %165 = landingpad { ptr, i32 }
          cleanup
  %166 = extractvalue { ptr, i32 } %165, 0
  store ptr %166, ptr %8, align 8
  %167 = extractvalue { ptr, i32 } %165, 1
  store i32 %167, ptr %9, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %17) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %16) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %15) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %14) #7
  br label %1261

168:                                              ; preds = %151
  call void @llvm.lifetime.start.p0(i64 8, ptr %18) #7
  store ptr %12, ptr %18, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %19) #7
  %169 = load ptr, ptr %18, align 8, !tbaa !5
  %170 = call ptr @_ZNSt6vectorIiSaIiEE5beginEv(ptr noundef nonnull align 8 dereferenceable(24) %169) #7
  %171 = getelementptr inbounds %"class.__gnu_cxx::__normal_iterator", ptr %19, i32 0, i32 0
  store ptr %170, ptr %171, align 8
  call void @llvm.lifetime.start.p0(i64 8, ptr %20) #7
  %172 = load ptr, ptr %18, align 8, !tbaa !5
  %173 = call ptr @_ZNSt6vectorIiSaIiEE3endEv(ptr noundef nonnull align 8 dereferenceable(24) %172) #7
  %174 = getelementptr inbounds %"class.__gnu_cxx::__normal_iterator", ptr %20, i32 0, i32 0
  store ptr %173, ptr %174, align 8
  br label %175

175:                                              ; preds = %1252, %168
  %176 = call noundef zeroext i1 @_ZN9__gnu_cxxneIPiSt6vectorIiSaIiEEEEbRKNS_17__normal_iteratorIT_T0_EESA_(ptr noundef nonnull align 8 dereferenceable(8) %19, ptr noundef nonnull align 8 dereferenceable(8) %20) #7
  br i1 %176, label %178, label %177

177:                                              ; preds = %175
  store i32 8, ptr %10, align 4
  br label %1257

178:                                              ; preds = %175
  call void @llvm.lifetime.start.p0(i64 4, ptr %21) #7
  %179 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNK9__gnu_cxx17__normal_iteratorIPiSt6vectorIiSaIiEEEdeEv(ptr noundef nonnull align 8 dereferenceable(8) %19) #7
  %180 = load i32, ptr %179, align 4, !tbaa !77
  store i32 %180, ptr %21, align 4, !tbaa !77
  %181 = getelementptr inbounds %"class.presolve::HPresolve", ptr %99, i32 0, i32 46
  %182 = load i32, ptr %21, align 4, !tbaa !77
  %183 = sext i32 %182 to i64
  %184 = call noundef nonnull align 1 dereferenceable(1) ptr @_ZNSt6vectorIhSaIhEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %181, i64 noundef %183) #7
  %185 = load i8, ptr %184, align 1, !tbaa !78
  %186 = icmp ne i8 %185, 0
  br i1 %186, label %187, label %188

187:                                              ; preds = %178
  store i32 9, ptr %10, align 4
  br label %1249

188:                                              ; preds = %178
  %189 = getelementptr inbounds %"class.presolve::HPresolve", ptr %99, i32 0, i32 46
  %190 = load i32, ptr %21, align 4, !tbaa !77
  %191 = sext i32 %190 to i64
  %192 = call noundef nonnull align 1 dereferenceable(1) ptr @_ZNSt6vectorIhSaIhEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %189, i64 noundef %191) #7
  %193 = load i8, ptr %192, align 1, !tbaa !78
  %194 = icmp ne i8 %193, 0
  %195 = xor i1 %194, true
  br i1 %195, label %196, label %197

196:                                              ; preds = %188
  br label %199

197:                                              ; preds = %188
  call void @__assert_fail(ptr noundef @.str.147, ptr noundef @.str.55, i32 noundef 6648, ptr noundef @__PRETTY_FUNCTION__._ZN8presolve9HPresolve8sparsifyERNS_19HighsPostsolveStackE) #8
  unreachable

198:                                              ; No predecessors!
  br label %199

199:                                              ; preds = %198, %196
  %200 = getelementptr inbounds %"class.presolve::HPresolve", ptr %99, i32 0, i32 0
  %201 = load ptr, ptr %200, align 8, !tbaa !79
  %202 = getelementptr inbounds %class.HighsLp, ptr %201, i32 0, i32 5
  %203 = load i32, ptr %21, align 4, !tbaa !77
  %204 = sext i32 %203 to i64
  %205 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt6vectorIdSaIdEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %202, i64 noundef %204) #7
  %206 = load double, ptr %205, align 8, !tbaa !76
  %207 = getelementptr inbounds %"class.presolve::HPresolve", ptr %99, i32 0, i32 0
  %208 = load ptr, ptr %207, align 8, !tbaa !79
  %209 = getelementptr inbounds %class.HighsLp, ptr %208, i32 0, i32 6
  %210 = load i32, ptr %21, align 4, !tbaa !77
  %211 = sext i32 %210 to i64
  %212 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt6vectorIdSaIdEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %209, i64 noundef %211) #7
  %213 = load double, ptr %212, align 8, !tbaa !76
  %214 = fcmp oeq double %206, %213
  br i1 %214, label %215, label %216

215:                                              ; preds = %199
  br label %218

216:                                              ; preds = %199
  call void @__assert_fail(ptr noundef @.str.149, ptr noundef @.str.55, i32 noundef 6649, ptr noundef @__PRETTY_FUNCTION__._ZN8presolve9HPresolve8sparsifyERNS_19HighsPostsolveStackE) #8
  unreachable

217:                                              ; No predecessors!
  br label %218

218:                                              ; preds = %217, %215
  %219 = load i32, ptr %21, align 4, !tbaa !77
  invoke void @_ZN8presolve9HPresolve8storeRowEi(ptr noundef nonnull align 8 dereferenceable(1720) %99, i32 noundef %219)
          to label %220 unwind label %234

220:                                              ; preds = %218
  call void @llvm.lifetime.start.p0(i64 4, ptr %22) #7
  store i32 -1, ptr %22, align 4, !tbaa !77
  call void @llvm.lifetime.start.p0(i64 4, ptr %23) #7
  %221 = getelementptr inbounds %"class.presolve::HPresolve", ptr %99, i32 0, i32 7
  %222 = getelementptr inbounds %"class.presolve::HPresolve", ptr %99, i32 0, i32 18
  %223 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNSt6vectorIiSaIiEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %222, i64 noundef 0) #7
  %224 = load i32, ptr %223, align 4, !tbaa !77
  %225 = sext i32 %224 to i64
  %226 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNSt6vectorIiSaIiEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %221, i64 noundef %225) #7
  %227 = load i32, ptr %226, align 4, !tbaa !77
  store i32 %227, ptr %23, align 4, !tbaa !77
  call void @llvm.lifetime.start.p0(i64 4, ptr %24) #7
  store i32 2147483647, ptr %24, align 4, !tbaa !77
  call void @llvm.lifetime.start.p0(i64 8, ptr %25) #7
  store i64 1, ptr %25, align 8, !tbaa !80
  br label %228

228:                                              ; preds = %263, %220
  %229 = load i64, ptr %25, align 8, !tbaa !80
  %230 = getelementptr inbounds %"class.presolve::HPresolve", ptr %99, i32 0, i32 18
  %231 = call noundef i64 @_ZNKSt6vectorIiSaIiEE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24) %230) #7
  %232 = icmp ult i64 %229, %231
  br i1 %232, label %238, label %233

233:                                              ; preds = %228
  store i32 10, ptr %10, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %25) #7
  br label %266

234:                                              ; preds = %218
  %235 = landingpad { ptr, i32 }
          cleanup
  %236 = extractvalue { ptr, i32 } %235, 0
  store ptr %236, ptr %8, align 8
  %237 = extractvalue { ptr, i32 } %235, 1
  store i32 %237, ptr %9, align 4
  br label %1256

238:                                              ; preds = %228
  call void @llvm.lifetime.start.p0(i64 4, ptr %26) #7
  %239 = getelementptr inbounds %"class.presolve::HPresolve", ptr %99, i32 0, i32 7
  %240 = getelementptr inbounds %"class.presolve::HPresolve", ptr %99, i32 0, i32 18
  %241 = load i64, ptr %25, align 8, !tbaa !80
  %242 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNSt6vectorIiSaIiEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %240, i64 noundef %241) #7
  %243 = load i32, ptr %242, align 4, !tbaa !77
  %244 = sext i32 %243 to i64
  %245 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNSt6vectorIiSaIiEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %239, i64 noundef %244) #7
  %246 = load i32, ptr %245, align 4, !tbaa !77
  store i32 %246, ptr %26, align 4, !tbaa !77
  %247 = getelementptr inbounds %"class.presolve::HPresolve", ptr %99, i32 0, i32 17
  %248 = load i32, ptr %26, align 4, !tbaa !77
  %249 = sext i32 %248 to i64
  %250 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNSt6vectorIiSaIiEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %247, i64 noundef %249) #7
  %251 = load i32, ptr %250, align 4, !tbaa !77
  %252 = load i32, ptr %24, align 4, !tbaa !77
  %253 = icmp slt i32 %251, %252
  br i1 %253, label %254, label %262

254:                                              ; preds = %238
  %255 = getelementptr inbounds %"class.presolve::HPresolve", ptr %99, i32 0, i32 17
  %256 = load i32, ptr %26, align 4, !tbaa !77
  %257 = sext i32 %256 to i64
  %258 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNSt6vectorIiSaIiEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %255, i64 noundef %257) #7
  %259 = load i32, ptr %258, align 4, !tbaa !77
  store i32 %259, ptr %24, align 4, !tbaa !77
  %260 = load i32, ptr %23, align 4, !tbaa !77
  store i32 %260, ptr %22, align 4, !tbaa !77
  %261 = load i32, ptr %26, align 4, !tbaa !77
  store i32 %261, ptr %23, align 4, !tbaa !77
  br label %262

262:                                              ; preds = %254, %238
  call void @llvm.lifetime.end.p0(i64 4, ptr %26) #7
  br label %263

263:                                              ; preds = %262
  %264 = load i64, ptr %25, align 8, !tbaa !80
  %265 = add i64 %264, 1
  store i64 %265, ptr %25, align 8, !tbaa !80
  br label %228, !llvm.loop !81

266:                                              ; preds = %233
  %267 = getelementptr inbounds %"class.presolve::HPresolve", ptr %99, i32 0, i32 17
  %268 = load i32, ptr %22, align 4, !tbaa !77
  %269 = sext i32 %268 to i64
  %270 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNSt6vectorIiSaIiEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %267, i64 noundef %269) #7
  %271 = load i32, ptr %270, align 4, !tbaa !77
  %272 = getelementptr inbounds %"class.presolve::HPresolve", ptr %99, i32 0, i32 17
  %273 = load i32, ptr %23, align 4, !tbaa !77
  %274 = sext i32 %273 to i64
  %275 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNSt6vectorIiSaIiEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %272, i64 noundef %274) #7
  %276 = load i32, ptr %275, align 4, !tbaa !77
  %277 = icmp slt i32 %271, %276
  br i1 %277, label %278, label %279

278:                                              ; preds = %266
  call void @_ZSt4swapIiENSt9enable_ifIXsr6__and_ISt6__not_ISt15__is_tuple_likeIT_EESt21is_move_constructibleIS3_ESt18is_move_assignableIS3_EEE5valueEvE4typeERS3_SC_(ptr noundef nonnull align 4 dereferenceable(4) %23, ptr noundef nonnull align 4 dereferenceable(4) %22) #7
  br label %279

279:                                              ; preds = %278, %266
  %280 = load i32, ptr %23, align 4, !tbaa !77
  %281 = icmp ne i32 %280, -1
  br i1 %281, label %282, label %285

282:                                              ; preds = %279
  %283 = load i32, ptr %22, align 4, !tbaa !77
  %284 = icmp ne i32 %283, -1
  br label %285

285:                                              ; preds = %282, %279
  %286 = phi i1 [ false, %279 ], [ %284, %282 ]
  br i1 %286, label %287, label %288

287:                                              ; preds = %285
  br label %290

288:                                              ; preds = %285
  call void @__assert_fail(ptr noundef @.str.171, ptr noundef @.str.55, i32 noundef 6668, ptr noundef @__PRETTY_FUNCTION__._ZN8presolve9HPresolve8sparsifyERNS_19HighsPostsolveStackE) #8
  unreachable

289:                                              ; No predecessors!
  br label %290

290:                                              ; preds = %289, %287
  call void @llvm.lifetime.start.p0(i64 48, ptr %27) #7
  call void @_ZNSt3mapIdiSt4lessIdESaISt4pairIKdiEEEC2Ev(ptr noundef nonnull align 8 dereferenceable(48) %27) #7
  call void @_ZNSt6vectorIN8presolve19HighsPostsolveStack7NonzeroESaIS2_EE5clearEv(ptr noundef nonnull align 8 dereferenceable(24) %6) #7
  call void @llvm.lifetime.start.p0(i64 8, ptr %28) #7
  call void @llvm.lifetime.start.p0(i64 32, ptr %29) #7
  %291 = load i32, ptr %23, align 4, !tbaa !77
  invoke void @_ZNK8presolve9HPresolve15getColumnVectorEi(ptr dead_on_unwind writable sret(%struct.HighsTripletListSlice) align 8 %29, ptr noundef nonnull align 8 dereferenceable(1720) %99, i32 noundef %291)
          to label %292 unwind label %301

292:                                              ; preds = %290
  store ptr %29, ptr %28, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 32, ptr %30) #7
  %293 = load ptr, ptr %28, align 8, !tbaa !5
  invoke void @_ZNK16HighsMatrixSliceI21HighsTripletListSliceE5beginEv(ptr dead_on_unwind writable sret(%"class.HighsMatrixSlice<HighsTripletListSlice>::iterator") align 8 %30, ptr noundef nonnull align 8 dereferenceable(28) %293)
          to label %294 unwind label %305

294:                                              ; preds = %292
  call void @llvm.lifetime.start.p0(i64 32, ptr %31) #7
  %295 = load ptr, ptr %28, align 8, !tbaa !5
  invoke void @_ZNK16HighsMatrixSliceI21HighsTripletListSliceE3endEv(ptr dead_on_unwind writable sret(%"class.HighsMatrixSlice<HighsTripletListSlice>::iterator") align 8 %31, ptr noundef nonnull align 8 dereferenceable(28) %295)
          to label %296 unwind label %309

296:                                              ; preds = %294
  br label %297

297:                                              ; preds = %673, %296
  %298 = invoke noundef zeroext i1 @_ZNK16HighsMatrixSliceI21HighsTripletListSliceE8iteratorneERKS2_(ptr noundef nonnull align 8 dereferenceable(28) %30, ptr noundef nonnull align 8 dereferenceable(28) %31)
          to label %299 unwind label %309

299:                                              ; preds = %297
  br i1 %298, label %313, label %300

300:                                              ; preds = %299
  store i32 13, ptr %10, align 4
  call void @llvm.lifetime.end.p0(i64 32, ptr %31) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr %30) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr %29) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %28) #7
  br label %681

301:                                              ; preds = %290
  %302 = landingpad { ptr, i32 }
          cleanup
  %303 = extractvalue { ptr, i32 } %302, 0
  store ptr %303, ptr %8, align 8
  %304 = extractvalue { ptr, i32 } %302, 1
  store i32 %304, ptr %9, align 4
  br label %680

305:                                              ; preds = %292
  %306 = landingpad { ptr, i32 }
          cleanup
  %307 = extractvalue { ptr, i32 } %306, 0
  store ptr %307, ptr %8, align 8
  %308 = extractvalue { ptr, i32 } %306, 1
  store i32 %308, ptr %9, align 4
  br label %679

309:                                              ; preds = %671, %297, %294
  %310 = landingpad { ptr, i32 }
          cleanup
  %311 = extractvalue { ptr, i32 } %310, 0
  store ptr %311, ptr %8, align 8
  %312 = extractvalue { ptr, i32 } %310, 1
  store i32 %312, ptr %9, align 4
  br label %678

313:                                              ; preds = %299
  call void @llvm.lifetime.start.p0(i64 8, ptr %32) #7
  %314 = invoke noundef nonnull align 8 dereferenceable(16) ptr @_ZN16HighsMatrixSliceI21HighsTripletListSliceE8iteratordeEv(ptr noundef nonnull align 8 dereferenceable(28) %30)
          to label %315 unwind label %323

315:                                              ; preds = %313
  store ptr %314, ptr %32, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 4, ptr %33) #7
  %316 = load ptr, ptr %32, align 8, !tbaa !5
  %317 = invoke noundef i32 @_ZNK17HighsSliceNonzero5indexEv(ptr noundef nonnull align 8 dereferenceable(16) %316)
          to label %318 unwind label %327

318:                                              ; preds = %315
  store i32 %317, ptr %33, align 4, !tbaa !77
  %319 = load i32, ptr %33, align 4, !tbaa !77
  %320 = load i32, ptr %21, align 4, !tbaa !77
  %321 = icmp eq i32 %319, %320
  br i1 %321, label %322, label %331

322:                                              ; preds = %318
  store i32 14, ptr %10, align 4
  br label %665

323:                                              ; preds = %313
  %324 = landingpad { ptr, i32 }
          cleanup
  %325 = extractvalue { ptr, i32 } %324, 0
  store ptr %325, ptr %8, align 8
  %326 = extractvalue { ptr, i32 } %324, 1
  store i32 %326, ptr %9, align 4
  br label %677

327:                                              ; preds = %315
  %328 = landingpad { ptr, i32 }
          cleanup
  %329 = extractvalue { ptr, i32 } %328, 0
  store ptr %329, ptr %8, align 8
  %330 = extractvalue { ptr, i32 } %328, 1
  store i32 %330, ptr %9, align 4
  br label %676

331:                                              ; preds = %318
  call void @_ZNSt3mapIdiSt4lessIdESaISt4pairIKdiEEE5clearEv(ptr noundef nonnull align 8 dereferenceable(48) %27) #7
  call void @llvm.lifetime.start.p0(i64 4, ptr %34) #7
  store i32 0, ptr %34, align 4, !tbaa !77
  call void @llvm.lifetime.start.p0(i64 4, ptr %35) #7
  store i32 1, ptr %35, align 4, !tbaa !77
  %332 = getelementptr inbounds %"class.presolve::HPresolve", ptr %99, i32 0, i32 15
  %333 = load i32, ptr %21, align 4, !tbaa !77
  %334 = sext i32 %333 to i64
  %335 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNSt6vectorIiSaIiEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %332, i64 noundef %334) #7
  %336 = load i32, ptr %335, align 4, !tbaa !77
  %337 = icmp eq i32 %336, 0
  br i1 %337, label %338, label %348

338:                                              ; preds = %331
  %339 = getelementptr inbounds %"class.presolve::HPresolve", ptr %99, i32 0, i32 15
  %340 = load i32, ptr %33, align 4, !tbaa !77
  %341 = sext i32 %340 to i64
  %342 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNSt6vectorIiSaIiEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %339, i64 noundef %341) #7
  %343 = load i32, ptr %342, align 4, !tbaa !77
  %344 = icmp ne i32 %343, 0
  br i1 %344, label %345, label %348

345:                                              ; preds = %338
  %346 = load i32, ptr %35, align 4, !tbaa !77
  %347 = add nsw i32 %346, -1
  store i32 %347, ptr %35, align 4, !tbaa !77
  br label %348

348:                                              ; preds = %345, %338, %331
  call void @llvm.lifetime.start.p0(i64 8, ptr %36) #7
  call void @llvm.lifetime.start.p0(i64 32, ptr %37) #7
  invoke void @_ZNK8presolve9HPresolve12getStoredRowEv(ptr dead_on_unwind writable sret(%struct.HighsTripletPositionSlice) align 8 %37, ptr noundef nonnull align 8 dereferenceable(1720) %99)
          to label %349 unwind label %358

349:                                              ; preds = %348
  store ptr %37, ptr %36, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 32, ptr %38) #7
  %350 = load ptr, ptr %36, align 8, !tbaa !5
  invoke void @_ZNK16HighsMatrixSliceI25HighsTripletPositionSliceE5beginEv(ptr dead_on_unwind writable sret(%"class.HighsMatrixSlice<HighsTripletPositionSlice>::iterator") align 8 %38, ptr noundef nonnull align 8 dereferenceable(28) %350)
          to label %351 unwind label %362

351:                                              ; preds = %349
  call void @llvm.lifetime.start.p0(i64 32, ptr %39) #7
  %352 = load ptr, ptr %36, align 8, !tbaa !5
  invoke void @_ZNK16HighsMatrixSliceI25HighsTripletPositionSliceE3endEv(ptr dead_on_unwind writable sret(%"class.HighsMatrixSlice<HighsTripletPositionSlice>::iterator") align 8 %39, ptr noundef nonnull align 8 dereferenceable(28) %352)
          to label %353 unwind label %366

353:                                              ; preds = %351
  br label %354

354:                                              ; preds = %567, %353
  %355 = invoke noundef zeroext i1 @_ZNK16HighsMatrixSliceI25HighsTripletPositionSliceE8iteratorneERKS2_(ptr noundef nonnull align 8 dereferenceable(28) %38, ptr noundef nonnull align 8 dereferenceable(28) %39)
          to label %356 unwind label %366

356:                                              ; preds = %354
  br i1 %355, label %370, label %357

357:                                              ; preds = %356
  store i32 15, ptr %10, align 4
  br label %573

358:                                              ; preds = %348
  %359 = landingpad { ptr, i32 }
          cleanup
  %360 = extractvalue { ptr, i32 } %359, 0
  store ptr %360, ptr %8, align 8
  %361 = extractvalue { ptr, i32 } %359, 1
  store i32 %361, ptr %9, align 4
  br label %576

362:                                              ; preds = %349
  %363 = landingpad { ptr, i32 }
          cleanup
  %364 = extractvalue { ptr, i32 } %363, 0
  store ptr %364, ptr %8, align 8
  %365 = extractvalue { ptr, i32 } %363, 1
  store i32 %365, ptr %9, align 4
  br label %575

366:                                              ; preds = %565, %354, %351
  %367 = landingpad { ptr, i32 }
          cleanup
  %368 = extractvalue { ptr, i32 } %367, 0
  store ptr %368, ptr %8, align 8
  %369 = extractvalue { ptr, i32 } %367, 1
  store i32 %369, ptr %9, align 4
  br label %574

370:                                              ; preds = %356
  call void @llvm.lifetime.start.p0(i64 8, ptr %40) #7
  %371 = invoke noundef nonnull align 8 dereferenceable(16) ptr @_ZN16HighsMatrixSliceI25HighsTripletPositionSliceE8iteratordeEv(ptr noundef nonnull align 8 dereferenceable(28) %38)
          to label %372 unwind label %382

372:                                              ; preds = %370
  store ptr %371, ptr %40, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %41) #7
  %373 = load ptr, ptr %40, align 8, !tbaa !5
  %374 = invoke noundef i32 @_ZNK17HighsSliceNonzero5indexEv(ptr noundef nonnull align 8 dereferenceable(16) %373)
          to label %375 unwind label %386

375:                                              ; preds = %372
  %376 = load i32, ptr %23, align 4, !tbaa !77
  %377 = icmp eq i32 %374, %376
  br i1 %377, label %378, label %390

378:                                              ; preds = %375
  %379 = load ptr, ptr %32, align 8, !tbaa !5
  %380 = invoke noundef double @_ZNK17HighsSliceNonzero5valueEv(ptr noundef nonnull align 8 dereferenceable(16) %379)
          to label %381 unwind label %386

381:                                              ; preds = %378
  store double %380, ptr %41, align 8, !tbaa !76
  br label %453

382:                                              ; preds = %370
  %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 %572

386:                                              ; preds = %378, %372
  %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
  br label %571

390:                                              ; preds = %375
  call void @llvm.lifetime.start.p0(i64 4, ptr %42) #7
  %391 = load i32, ptr %33, align 4, !tbaa !77
  %392 = load ptr, ptr %40, align 8, !tbaa !5
  %393 = invoke noundef i32 @_ZNK17HighsSliceNonzero5indexEv(ptr noundef nonnull align 8 dereferenceable(16) %392)
          to label %394 unwind label %432

394:                                              ; preds = %390
  %395 = invoke noundef i32 @_ZN8presolve9HPresolve11findNonzeroEii(ptr noundef nonnull align 8 dereferenceable(1720) %99, i32 noundef %391, i32 noundef %393)
          to label %396 unwind label %432

396:                                              ; preds = %394
  store i32 %395, ptr %42, align 4, !tbaa !77
  %397 = load i32, ptr %42, align 4, !tbaa !77
  %398 = icmp eq i32 %397, -1
  br i1 %398, label %399, label %444

399:                                              ; preds = %396
  %400 = getelementptr inbounds %"class.presolve::HPresolve", ptr %99, i32 0, i32 0
  %401 = load ptr, ptr %400, align 8, !tbaa !79
  %402 = getelementptr inbounds %class.HighsLp, ptr %401, i32 0, i32 16
  %403 = load ptr, ptr %40, align 8, !tbaa !5
  %404 = invoke noundef i32 @_ZNK17HighsSliceNonzero5indexEv(ptr noundef nonnull align 8 dereferenceable(16) %403)
          to label %405 unwind label %432

405:                                              ; preds = %399
  %406 = sext i32 %404 to i64
  %407 = call noundef nonnull align 1 dereferenceable(1) ptr @_ZNSt6vectorI12HighsVarTypeSaIS0_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %402, i64 noundef %406) #7
  %408 = load i8, ptr %407, align 1, !tbaa !83
  %409 = icmp eq i8 %408, 1
  br i1 %409, label %410, label %436

410:                                              ; preds = %405
  %411 = getelementptr inbounds %"class.presolve::HPresolve", ptr %99, i32 0, i32 0
  %412 = load ptr, ptr %411, align 8, !tbaa !79
  %413 = getelementptr inbounds %class.HighsLp, ptr %412, i32 0, i32 4
  %414 = load ptr, ptr %40, align 8, !tbaa !5
  %415 = invoke noundef i32 @_ZNK17HighsSliceNonzero5indexEv(ptr noundef nonnull align 8 dereferenceable(16) %414)
          to label %416 unwind label %432

416:                                              ; preds = %410
  %417 = sext i32 %415 to i64
  %418 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt6vectorIdSaIdEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %413, i64 noundef %417) #7
  %419 = load double, ptr %418, align 8, !tbaa !76
  %420 = getelementptr inbounds %"class.presolve::HPresolve", ptr %99, i32 0, i32 0
  %421 = load ptr, ptr %420, align 8, !tbaa !79
  %422 = getelementptr inbounds %class.HighsLp, ptr %421, i32 0, i32 3
  %423 = load ptr, ptr %40, align 8, !tbaa !5
  %424 = invoke noundef i32 @_ZNK17HighsSliceNonzero5indexEv(ptr noundef nonnull align 8 dereferenceable(16) %423)
          to label %425 unwind label %432

425:                                              ; preds = %416
  %426 = sext i32 %424 to i64
  %427 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt6vectorIdSaIdEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %422, i64 noundef %426) #7
  %428 = load double, ptr %427, align 8, !tbaa !76
  %429 = fsub double %419, %428
  %430 = fcmp ogt double %429, 1.500000e+00
  br i1 %430, label %431, label %436

431:                                              ; preds = %425
  store i32 2, ptr %34, align 4, !tbaa !77
  store i32 15, ptr %10, align 4
  br label %450

432:                                              ; preds = %416, %410, %399, %394, %390
  %433 = landingpad { ptr, i32 }
          cleanup
  %434 = extractvalue { ptr, i32 } %433, 0
  store ptr %434, ptr %8, align 8
  %435 = extractvalue { ptr, i32 } %433, 1
  store i32 %435, ptr %9, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %42) #7
  br label %571

436:                                              ; preds = %425, %405
  %437 = load i32, ptr %34, align 4, !tbaa !77
  %438 = add nsw i32 %437, 1
  store i32 %438, ptr %34, align 4, !tbaa !77
  %439 = load i32, ptr %34, align 4, !tbaa !77
  %440 = load i32, ptr %35, align 4, !tbaa !77
  %441 = icmp sgt i32 %439, %440
  br i1 %441, label %442, label %443

442:                                              ; preds = %436
  store i32 15, ptr %10, align 4
  br label %450

443:                                              ; preds = %436
  store i32 16, ptr %10, align 4
  br label %450

444:                                              ; preds = %396
  %445 = getelementptr inbounds %"class.presolve::HPresolve", ptr %99, i32 0, i32 5
  %446 = load i32, ptr %42, align 4, !tbaa !77
  %447 = sext i32 %446 to i64
  %448 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt6vectorIdSaIdEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %445, i64 noundef %447) #7
  %449 = load double, ptr %448, align 8, !tbaa !76
  store double %449, ptr %41, align 8, !tbaa !76
  store i32 0, ptr %10, align 4
  br label %450

450:                                              ; preds = %444, %443, %442, %431
  call void @llvm.lifetime.end.p0(i64 4, ptr %42) #7
  %451 = load i32, ptr %10, align 4
  switch i32 %451, label %559 [
    i32 0, label %452
  ]

452:                                              ; preds = %450
  br label %453

453:                                              ; preds = %452, %381
  call void @llvm.lifetime.start.p0(i64 8, ptr %43) #7
  %454 = load double, ptr %41, align 8, !tbaa !76
  %455 = fneg double %454
  %456 = load ptr, ptr %40, align 8, !tbaa !5
  %457 = invoke noundef double @_ZNK17HighsSliceNonzero5valueEv(ptr noundef nonnull align 8 dereferenceable(16) %456)
          to label %458 unwind label %465

458:                                              ; preds = %453
  %459 = fdiv double %455, %457
  store double %459, ptr %43, align 8, !tbaa !76
  %460 = load double, ptr %43, align 8, !tbaa !76
  %461 = invoke noundef double @_ZSt3absd(double noundef %460)
          to label %462 unwind label %465

462:                                              ; preds = %458
  %463 = fcmp ogt double %461, 1.000000e+03
  br i1 %463, label %464, label %469

464:                                              ; preds = %462
  store i32 16, ptr %10, align 4
  br label %558

465:                                              ; preds = %458, %453
  %466 = landingpad { ptr, i32 }
          cleanup
  %467 = extractvalue { ptr, i32 } %466, 0
  store ptr %467, ptr %8, align 8
  %468 = extractvalue { ptr, i32 } %466, 1
  store i32 %468, ptr %9, align 4
  br label %570

469:                                              ; preds = %462
  call void @llvm.lifetime.start.p0(i64 8, ptr %44) #7
  %470 = load double, ptr %13, align 8, !tbaa !76
  %471 = load ptr, ptr %40, align 8, !tbaa !5
  %472 = invoke noundef double @_ZNK17HighsSliceNonzero5valueEv(ptr noundef nonnull align 8 dereferenceable(16) %471)
          to label %473 unwind label %504

473:                                              ; preds = %469
  %474 = invoke noundef double @_ZSt3absd(double noundef %472)
          to label %475 unwind label %504

475:                                              ; preds = %473
  %476 = fdiv double %470, %474
  store double %476, ptr %44, align 8, !tbaa !76
  call void @llvm.lifetime.start.p0(i64 8, ptr %45) #7
  call void @llvm.lifetime.start.p0(i64 8, ptr %46) #7
  %477 = load double, ptr %43, align 8, !tbaa !76
  %478 = load double, ptr %44, align 8, !tbaa !76
  %479 = fsub double %477, %478
  store double %479, ptr %46, align 8, !tbaa !76
  %480 = invoke ptr @_ZNSt3mapIdiSt4lessIdESaISt4pairIKdiEEE11lower_boundERS3_(ptr noundef nonnull align 8 dereferenceable(48) %27, ptr noundef nonnull align 8 dereferenceable(8) %46)
          to label %481 unwind label %508

481:                                              ; preds = %475
  %482 = getelementptr inbounds %"struct.std::_Rb_tree_iterator.545", ptr %45, i32 0, i32 0
  store ptr %480, ptr %482, align 8
  call void @llvm.lifetime.end.p0(i64 8, ptr %46) #7
  call void @llvm.lifetime.start.p0(i64 8, ptr %47) #7
  %483 = call ptr @_ZNSt3mapIdiSt4lessIdESaISt4pairIKdiEEE3endEv(ptr noundef nonnull align 8 dereferenceable(48) %27) #7
  %484 = getelementptr inbounds %"struct.std::_Rb_tree_iterator.545", ptr %47, i32 0, i32 0
  store ptr %483, ptr %484, align 8
  %485 = call noundef zeroext i1 @_ZStneRKSt17_Rb_tree_iteratorISt4pairIKdiEES5_(ptr noundef nonnull align 8 dereferenceable(8) %45, ptr noundef nonnull align 8 dereferenceable(8) %47) #7
  br i1 %485, label %486, label %496

486:                                              ; preds = %481
  %487 = call noundef ptr @_ZNKSt17_Rb_tree_iteratorISt4pairIKdiEEptEv(ptr noundef nonnull align 8 dereferenceable(8) %45) #7
  %488 = getelementptr inbounds %"struct.std::pair.546", ptr %487, i32 0, i32 0
  %489 = load double, ptr %488, align 8, !tbaa !85
  %490 = load double, ptr %43, align 8, !tbaa !76
  %491 = fsub double %489, %490
  %492 = invoke noundef double @_ZSt3absd(double noundef %491)
          to label %493 unwind label %512

493:                                              ; preds = %486
  %494 = load double, ptr %44, align 8, !tbaa !76
  %495 = fcmp ole double %492, %494
  br label %496

496:                                              ; preds = %493, %481
  %497 = phi i1 [ false, %481 ], [ %495, %493 ]
  call void @llvm.lifetime.end.p0(i64 8, ptr %47) #7
  br i1 %497, label %498, label %545

498:                                              ; preds = %496
  %499 = call noundef ptr @_ZNKSt17_Rb_tree_iteratorISt4pairIKdiEEptEv(ptr noundef nonnull align 8 dereferenceable(8) %45) #7
  %500 = getelementptr inbounds %"struct.std::pair.546", ptr %499, i32 0, i32 1
  %501 = load i32, ptr %500, align 8, !tbaa !87
  %502 = icmp eq i32 %501, -1
  br i1 %502, label %503, label %516

503:                                              ; preds = %498
  store i32 16, ptr %10, align 4
  br label %557

504:                                              ; preds = %473, %469
  %505 = landingpad { ptr, i32 }
          cleanup
  %506 = extractvalue { ptr, i32 } %505, 0
  store ptr %506, ptr %8, align 8
  %507 = extractvalue { ptr, i32 } %505, 1
  store i32 %507, ptr %9, align 4
  br label %569

508:                                              ; preds = %475
  %509 = landingpad { ptr, i32 }
          cleanup
  %510 = extractvalue { ptr, i32 } %509, 0
  store ptr %510, ptr %8, align 8
  %511 = extractvalue { ptr, i32 } %509, 1
  store i32 %511, ptr %9, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %46) #7
  br label %568

512:                                              ; preds = %486
  %513 = landingpad { ptr, i32 }
          cleanup
  %514 = extractvalue { ptr, i32 } %513, 0
  store ptr %514, ptr %8, align 8
  %515 = extractvalue { ptr, i32 } %513, 1
  store i32 %515, ptr %9, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %47) #7
  br label %568

516:                                              ; preds = %498
  %517 = call noundef ptr @_ZNKSt17_Rb_tree_iteratorISt4pairIKdiEEptEv(ptr noundef nonnull align 8 dereferenceable(8) %45) #7
  %518 = getelementptr inbounds %"struct.std::pair.546", ptr %517, i32 0, i32 0
  %519 = load double, ptr %518, align 8, !tbaa !85
  %520 = load ptr, ptr %40, align 8, !tbaa !5
  %521 = invoke noundef double @_ZNK17HighsSliceNonzero5valueEv(ptr noundef nonnull align 8 dereferenceable(16) %520)
          to label %522 unwind label %537

522:                                              ; preds = %516
  %523 = load double, ptr %41, align 8, !tbaa !76
  %524 = call double @llvm.fmuladd.f64(double %519, double %521, double %523)
  %525 = invoke noundef double @_ZSt3absd(double noundef %524)
          to label %526 unwind label %537

526:                                              ; preds = %522
  %527 = getelementptr inbounds %"class.presolve::HPresolve", ptr %99, i32 0, i32 1
  %528 = load ptr, ptr %527, align 8, !tbaa !88
  %529 = getelementptr inbounds %struct.HighsOptionsStruct, ptr %528, i32 0, i32 12
  %530 = load double, ptr %529, align 8, !tbaa !89
  %531 = fcmp ole double %525, %530
  br i1 %531, label %532, label %541

532:                                              ; preds = %526
  %533 = call noundef ptr @_ZNKSt17_Rb_tree_iteratorISt4pairIKdiEEptEv(ptr noundef nonnull align 8 dereferenceable(8) %45) #7
  %534 = getelementptr inbounds %"struct.std::pair.546", ptr %533, i32 0, i32 1
  %535 = load i32, ptr %534, align 8, !tbaa !87
  %536 = add nsw i32 %535, 1
  store i32 %536, ptr %534, align 8, !tbaa !87
  br label %544

537:                                              ; preds = %522, %516
  %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 %568

541:                                              ; preds = %526
  %542 = call noundef ptr @_ZNKSt17_Rb_tree_iteratorISt4pairIKdiEEptEv(ptr noundef nonnull align 8 dereferenceable(8) %45) #7
  %543 = getelementptr inbounds %"struct.std::pair.546", ptr %542, i32 0, i32 1
  store i32 -1, ptr %543, align 8, !tbaa !87
  br label %544

544:                                              ; preds = %541, %532
  br label %556

545:                                              ; preds = %496
  call void @llvm.lifetime.start.p0(i64 4, ptr %48) #7
  store i32 1, ptr %48, align 4, !tbaa !77
  %546 = invoke { ptr, i8 } @_ZNSt3mapIdiSt4lessIdESaISt4pairIKdiEEE7emplaceIJRdiEEES2_ISt17_Rb_tree_iteratorIS4_EbEDpOT_(ptr noundef nonnull align 8 dereferenceable(48) %27, ptr noundef nonnull align 8 dereferenceable(8) %43, ptr noundef nonnull align 4 dereferenceable(4) %48)
          to label %547 unwind label %552

547:                                              ; preds = %545
  %548 = getelementptr inbounds { ptr, i8 }, ptr %49, i32 0, i32 0
  %549 = extractvalue { ptr, i8 } %546, 0
  store ptr %549, ptr %548, align 8
  %550 = getelementptr inbounds { ptr, i8 }, ptr %49, i32 0, i32 1
  %551 = extractvalue { ptr, i8 } %546, 1
  store i8 %551, ptr %550, align 8
  call void @llvm.lifetime.end.p0(i64 4, ptr %48) #7
  br label %556

552:                                              ; preds = %545
  %553 = landingpad { ptr, i32 }
          cleanup
  %554 = extractvalue { ptr, i32 } %553, 0
  store ptr %554, ptr %8, align 8
  %555 = extractvalue { ptr, i32 } %553, 1
  store i32 %555, ptr %9, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %48) #7
  br label %568

556:                                              ; preds = %547, %544
  store i32 0, ptr %10, align 4
  br label %557

557:                                              ; preds = %556, %503
  call void @llvm.lifetime.end.p0(i64 8, ptr %45) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %44) #7
  br label %558

558:                                              ; preds = %557, %464
  call void @llvm.lifetime.end.p0(i64 8, ptr %43) #7
  br label %559

559:                                              ; preds = %558, %450
  call void @llvm.lifetime.end.p0(i64 8, ptr %41) #7
  %560 = load i32, ptr %10, align 4
  switch i32 %560, label %562 [
    i32 0, label %561
  ]

561:                                              ; preds = %559
  store i32 0, ptr %10, align 4
  br label %562

562:                                              ; preds = %561, %559
  call void @llvm.lifetime.end.p0(i64 8, ptr %40) #7
  %563 = load i32, ptr %10, align 4
  switch i32 %563, label %573 [
    i32 0, label %564
    i32 16, label %565
  ]

564:                                              ; preds = %562
  br label %565

565:                                              ; preds = %564, %562
  %566 = invoke noundef nonnull align 8 dereferenceable(28) ptr @_ZN16HighsMatrixSliceI25HighsTripletPositionSliceE8iteratorppEv(ptr noundef nonnull align 8 dereferenceable(28) %38)
          to label %567 unwind label %366

567:                                              ; preds = %565
  br label %354

568:                                              ; preds = %552, %537, %512, %508
  call void @llvm.lifetime.end.p0(i64 8, ptr %45) #7
  br label %569

569:                                              ; preds = %568, %504
  call void @llvm.lifetime.end.p0(i64 8, ptr %44) #7
  br label %570

570:                                              ; preds = %569, %465
  call void @llvm.lifetime.end.p0(i64 8, ptr %43) #7
  br label %571

571:                                              ; preds = %570, %432, %386
  call void @llvm.lifetime.end.p0(i64 8, ptr %41) #7
  br label %572

572:                                              ; preds = %571, %382
  call void @llvm.lifetime.end.p0(i64 8, ptr %40) #7
  br label %574

573:                                              ; preds = %562, %357
  call void @llvm.lifetime.end.p0(i64 32, ptr %39) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr %38) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr %37) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %36) #7
  br label %577

574:                                              ; preds = %572, %366
  call void @llvm.lifetime.end.p0(i64 32, ptr %39) #7
  br label %575

575:                                              ; preds = %574, %362
  call void @llvm.lifetime.end.p0(i64 32, ptr %38) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr %37) #7
  br label %576

576:                                              ; preds = %575, %358
  call void @llvm.lifetime.end.p0(i64 8, ptr %36) #7
  br label %675

577:                                              ; preds = %573
  %578 = load i32, ptr %34, align 4, !tbaa !77
  %579 = load i32, ptr %35, align 4, !tbaa !77
  %580 = icmp sgt i32 %578, %579
  br i1 %580, label %583, label %581

581:                                              ; preds = %577
  %582 = call noundef zeroext i1 @_ZNKSt3mapIdiSt4lessIdESaISt4pairIKdiEEE5emptyEv(ptr noundef nonnull align 8 dereferenceable(48) %27) #7
  br i1 %582, label %583, label %584

583:                                              ; preds = %581, %577
  store i32 14, ptr %10, align 4
  br label %664

584:                                              ; preds = %581
  call void @llvm.lifetime.start.p0(i64 4, ptr %50) #7
  store i32 0, ptr %50, align 4, !tbaa !77
  call void @llvm.lifetime.start.p0(i64 8, ptr %51) #7
  store double 0.000000e+00, ptr %51, align 8, !tbaa !76
  call void @llvm.lifetime.start.p0(i64 8, ptr %52) #7
  store ptr %27, ptr %52, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %53) #7
  %585 = load ptr, ptr %52, align 8, !tbaa !5
  %586 = call ptr @_ZNSt3mapIdiSt4lessIdESaISt4pairIKdiEEE5beginEv(ptr noundef nonnull align 8 dereferenceable(48) %585) #7
  %587 = getelementptr inbounds %"struct.std::_Rb_tree_iterator.545", ptr %53, i32 0, i32 0
  store ptr %586, ptr %587, align 8
  call void @llvm.lifetime.start.p0(i64 8, ptr %54) #7
  %588 = load ptr, ptr %52, align 8, !tbaa !5
  %589 = call ptr @_ZNSt3mapIdiSt4lessIdESaISt4pairIKdiEEE3endEv(ptr noundef nonnull align 8 dereferenceable(48) %588) #7
  %590 = getelementptr inbounds %"struct.std::_Rb_tree_iterator.545", ptr %54, i32 0, i32 0
  store ptr %589, ptr %590, align 8
  br label %591

591:                                              ; preds = %639, %584
  %592 = call noundef zeroext i1 @_ZStneRKSt17_Rb_tree_iteratorISt4pairIKdiEES5_(ptr noundef nonnull align 8 dereferenceable(8) %53, ptr noundef nonnull align 8 dereferenceable(8) %54) #7
  br i1 %592, label %594, label %593

593:                                              ; preds = %591
  store i32 17, ptr %10, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %54) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %53) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %52) #7
  br label %641

594:                                              ; preds = %591
  call void @llvm.lifetime.start.p0(i64 8, ptr %55) #7
  %595 = call noundef nonnull align 8 dereferenceable(12) ptr @_ZNKSt17_Rb_tree_iteratorISt4pairIKdiEEdeEv(ptr noundef nonnull align 8 dereferenceable(8) %53) #7
  store ptr %595, ptr %55, align 8, !tbaa !5
  %596 = load ptr, ptr %55, align 8, !tbaa !5
  %597 = getelementptr inbounds %"struct.std::pair.546", ptr %596, i32 0, i32 1
  %598 = load i32, ptr %597, align 8, !tbaa !87
  %599 = load i32, ptr %34, align 4, !tbaa !77
  %600 = icmp sle i32 %598, %599
  br i1 %600, label %601, label %602

601:                                              ; preds = %594
  store i32 18, ptr %10, align 4
  br label %636

602:                                              ; preds = %594
  %603 = load ptr, ptr %55, align 8, !tbaa !5
  %604 = getelementptr inbounds %"struct.std::pair.546", ptr %603, i32 0, i32 1
  %605 = load i32, ptr %604, align 8, !tbaa !87
  %606 = load i32, ptr %50, align 4, !tbaa !77
  %607 = icmp sgt i32 %605, %606
  br i1 %607, label %624, label %608

608:                                              ; preds = %602
  %609 = load ptr, ptr %55, align 8, !tbaa !5
  %610 = getelementptr inbounds %"struct.std::pair.546", ptr %609, i32 0, i32 1
  %611 = load i32, ptr %610, align 8, !tbaa !87
  %612 = load i32, ptr %50, align 4, !tbaa !77
  %613 = icmp eq i32 %611, %612
  br i1 %613, label %614, label %635

614:                                              ; preds = %608
  %615 = load ptr, ptr %55, align 8, !tbaa !5
  %616 = getelementptr inbounds %"struct.std::pair.546", ptr %615, i32 0, i32 0
  %617 = load double, ptr %616, align 8, !tbaa !85
  %618 = invoke noundef double @_ZSt3absd(double noundef %617)
          to label %619 unwind label %631

619:                                              ; preds = %614
  %620 = load double, ptr %51, align 8, !tbaa !76
  %621 = invoke noundef double @_ZSt3absd(double noundef %620)
          to label %622 unwind label %631

622:                                              ; preds = %619
  %623 = fcmp olt double %618, %621
  br i1 %623, label %624, label %635

624:                                              ; preds = %622, %602
  %625 = load ptr, ptr %55, align 8, !tbaa !5
  %626 = getelementptr inbounds %"struct.std::pair.546", ptr %625, i32 0, i32 0
  %627 = load double, ptr %626, align 8, !tbaa !85
  store double %627, ptr %51, align 8, !tbaa !76
  %628 = load ptr, ptr %55, align 8, !tbaa !5
  %629 = getelementptr inbounds %"struct.std::pair.546", ptr %628, i32 0, i32 1
  %630 = load i32, ptr %629, align 8, !tbaa !87
  store i32 %630, ptr %50, align 4, !tbaa !77
  br label %635

631:                                              ; preds = %619, %614
  %632 = landingpad { ptr, i32 }
          cleanup
  %633 = extractvalue { ptr, i32 } %632, 0
  store ptr %633, ptr %8, align 8
  %634 = extractvalue { ptr, i32 } %632, 1
  store i32 %634, ptr %9, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %55) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %54) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %53) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %52) #7
  br label %674

635:                                              ; preds = %624, %622, %608
  store i32 0, ptr %10, align 4
  br label %636

636:                                              ; preds = %635, %601
  call void @llvm.lifetime.end.p0(i64 8, ptr %55) #7
  %637 = load i32, ptr %10, align 4
  switch i32 %637, label %1271 [
    i32 0, label %638
    i32 18, label %639
  ]

638:                                              ; preds = %636
  br label %639

639:                                              ; preds = %638, %636
  %640 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt17_Rb_tree_iteratorISt4pairIKdiEEppEv(ptr noundef nonnull align 8 dereferenceable(8) %53) #7
  br label %591

641:                                              ; preds = %593
  %642 = load double, ptr %51, align 8, !tbaa !76
  %643 = fcmp une double %642, 0.000000e+00
  br i1 %643, label %647, label %644

644:                                              ; preds = %641
  %645 = load i32, ptr %50, align 4, !tbaa !77
  %646 = icmp eq i32 %645, 0
  br label %647

647:                                              ; preds = %644, %641
  %648 = phi i1 [ true, %641 ], [ %646, %644 ]
  br i1 %648, label %649, label %650

649:                                              ; preds = %647
  br label %652

650:                                              ; preds = %647
  call void @__assert_fail(ptr noundef @.str.172, ptr noundef @.str.55, i32 noundef 6751, ptr noundef @__PRETTY_FUNCTION__._ZN8presolve9HPresolve8sparsifyERNS_19HighsPostsolveStackE) #8
  unreachable

651:                                              ; No predecessors!
  br label %652

652:                                              ; preds = %651, %649
  %653 = load i32, ptr %50, align 4, !tbaa !77
  %654 = load i32, ptr %34, align 4, !tbaa !77
  %655 = icmp sgt i32 %653, %654
  br i1 %655, label %656, label %663

656:                                              ; preds = %652
  %657 = invoke noundef nonnull align 8 dereferenceable(16) ptr @_ZNSt6vectorIN8presolve19HighsPostsolveStack7NonzeroESaIS2_EE12emplace_backIJRiRdEEERS2_DpOT_(ptr noundef nonnull align 8 dereferenceable(24) %6, ptr noundef nonnull align 4 dereferenceable(4) %33, ptr noundef nonnull align 8 dereferenceable(8) %51)
          to label %658 unwind label %659

658:                                              ; preds = %656
  br label %663

659:                                              ; preds = %656
  %660 = landingpad { ptr, i32 }
          cleanup
  %661 = extractvalue { ptr, i32 } %660, 0
  store ptr %661, ptr %8, align 8
  %662 = extractvalue { ptr, i32 } %660, 1
  store i32 %662, ptr %9, align 4
  br label %674

663:                                              ; preds = %658, %652
  call void @llvm.lifetime.end.p0(i64 8, ptr %51) #7
  call void @llvm.lifetime.end.p0(i64 4, ptr %50) #7
  store i32 0, ptr %10, align 4
  br label %664

664:                                              ; preds = %663, %583
  call void @llvm.lifetime.end.p0(i64 4, ptr %35) #7
  call void @llvm.lifetime.end.p0(i64 4, ptr %34) #7
  br label %665

665:                                              ; preds = %664, %322
  call void @llvm.lifetime.end.p0(i64 4, ptr %33) #7
  %666 = load i32, ptr %10, align 4
  switch i32 %666, label %668 [
    i32 0, label %667
  ]

667:                                              ; preds = %665
  store i32 0, ptr %10, align 4
  br label %668

668:                                              ; preds = %667, %665
  call void @llvm.lifetime.end.p0(i64 8, ptr %32) #7
  %669 = load i32, ptr %10, align 4
  switch i32 %669, label %1271 [
    i32 0, label %670
    i32 14, label %671
  ]

670:                                              ; preds = %668
  br label %671

671:                                              ; preds = %670, %668
  %672 = invoke noundef nonnull align 8 dereferenceable(28) ptr @_ZN16HighsMatrixSliceI21HighsTripletListSliceE8iteratorppEv(ptr noundef nonnull align 8 dereferenceable(28) %30)
          to label %673 unwind label %309

673:                                              ; preds = %671
  br label %297

674:                                              ; preds = %659, %631
  call void @llvm.lifetime.end.p0(i64 8, ptr %51) #7
  call void @llvm.lifetime.end.p0(i64 4, ptr %50) #7
  br label %675

675:                                              ; preds = %674, %576
  call void @llvm.lifetime.end.p0(i64 4, ptr %35) #7
  call void @llvm.lifetime.end.p0(i64 4, ptr %34) #7
  br label %676

676:                                              ; preds = %675, %327
  call void @llvm.lifetime.end.p0(i64 4, ptr %33) #7
  br label %677

677:                                              ; preds = %676, %323
  call void @llvm.lifetime.end.p0(i64 8, ptr %32) #7
  br label %678

678:                                              ; preds = %677, %309
  call void @llvm.lifetime.end.p0(i64 32, ptr %31) #7
  br label %679

679:                                              ; preds = %678, %305
  call void @llvm.lifetime.end.p0(i64 32, ptr %30) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr %29) #7
  br label %680

680:                                              ; preds = %679, %301
  call void @llvm.lifetime.end.p0(i64 8, ptr %28) #7
  br label %1255

681:                                              ; preds = %300
  %682 = getelementptr inbounds %"class.presolve::HPresolve", ptr %99, i32 0, i32 0
  %683 = load ptr, ptr %682, align 8, !tbaa !79
  %684 = getelementptr inbounds %class.HighsLp, ptr %683, i32 0, i32 16
  %685 = load i32, ptr %23, align 4, !tbaa !77
  %686 = sext i32 %685 to i64
  %687 = call noundef nonnull align 1 dereferenceable(1) ptr @_ZNSt6vectorI12HighsVarTypeSaIS0_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %684, i64 noundef %686) #7
  %688 = load i8, ptr %687, align 1, !tbaa !83
  %689 = icmp ne i8 %688, 1
  br i1 %689, label %707, label %690

690:                                              ; preds = %681
  %691 = getelementptr inbounds %"class.presolve::HPresolve", ptr %99, i32 0, i32 0
  %692 = load ptr, ptr %691, align 8, !tbaa !79
  %693 = getelementptr inbounds %class.HighsLp, ptr %692, i32 0, i32 4
  %694 = load i32, ptr %23, align 4, !tbaa !77
  %695 = sext i32 %694 to i64
  %696 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt6vectorIdSaIdEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %693, i64 noundef %695) #7
  %697 = load double, ptr %696, align 8, !tbaa !76
  %698 = getelementptr inbounds %"class.presolve::HPresolve", ptr %99, i32 0, i32 0
  %699 = load ptr, ptr %698, align 8, !tbaa !79
  %700 = getelementptr inbounds %class.HighsLp, ptr %699, i32 0, i32 3
  %701 = load i32, ptr %23, align 4, !tbaa !77
  %702 = sext i32 %701 to i64
  %703 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt6vectorIdSaIdEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %700, i64 noundef %702) #7
  %704 = load double, ptr %703, align 8, !tbaa !76
  %705 = fsub double %697, %704
  %706 = fcmp olt double %705, 1.500000e+00
  br i1 %706, label %707, label %1071

707:                                              ; preds = %690, %681
  call void @llvm.lifetime.start.p0(i64 8, ptr %56) #7
  call void @llvm.lifetime.start.p0(i64 32, ptr %57) #7
  %708 = load i32, ptr %22, align 4, !tbaa !77
  invoke void @_ZNK8presolve9HPresolve15getColumnVectorEi(ptr dead_on_unwind writable sret(%struct.HighsTripletListSlice) align 8 %57, ptr noundef nonnull align 8 dereferenceable(1720) %99, i32 noundef %708)
          to label %709 unwind label %718

709:                                              ; preds = %707
  store ptr %57, ptr %56, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 32, ptr %58) #7
  %710 = load ptr, ptr %56, align 8, !tbaa !5
  invoke void @_ZNK16HighsMatrixSliceI21HighsTripletListSliceE5beginEv(ptr dead_on_unwind writable sret(%"class.HighsMatrixSlice<HighsTripletListSlice>::iterator") align 8 %58, ptr noundef nonnull align 8 dereferenceable(28) %710)
          to label %711 unwind label %722

711:                                              ; preds = %709
  call void @llvm.lifetime.start.p0(i64 32, ptr %59) #7
  %712 = load ptr, ptr %56, align 8, !tbaa !5
  invoke void @_ZNK16HighsMatrixSliceI21HighsTripletListSliceE3endEv(ptr dead_on_unwind writable sret(%"class.HighsMatrixSlice<HighsTripletListSlice>::iterator") align 8 %59, ptr noundef nonnull align 8 dereferenceable(28) %712)
          to label %713 unwind label %726

713:                                              ; preds = %711
  br label %714

714:                                              ; preds = %1061, %713
  %715 = invoke noundef zeroext i1 @_ZNK16HighsMatrixSliceI21HighsTripletListSliceE8iteratorneERKS2_(ptr noundef nonnull align 8 dereferenceable(28) %58, ptr noundef nonnull align 8 dereferenceable(28) %59)
          to label %716 unwind label %726

716:                                              ; preds = %714
  br i1 %715, label %730, label %717

717:                                              ; preds = %716
  store i32 19, ptr %10, align 4
  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 32, ptr %57) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %56) #7
  br label %1070

718:                                              ; preds = %707
  %719 = landingpad { ptr, i32 }
          cleanup
  %720 = extractvalue { ptr, i32 } %719, 0
  store ptr %720, ptr %8, align 8
  %721 = extractvalue { ptr, i32 } %719, 1
  store i32 %721, ptr %9, align 4
  br label %1069

722:                                              ; preds = %709
  %723 = landingpad { ptr, i32 }
          cleanup
  %724 = extractvalue { ptr, i32 } %723, 0
  store ptr %724, ptr %8, align 8
  %725 = extractvalue { ptr, i32 } %723, 1
  store i32 %725, ptr %9, align 4
  br label %1068

726:                                              ; preds = %1059, %714, %711
  %727 = landingpad { ptr, i32 }
          cleanup
  %728 = extractvalue { ptr, i32 } %727, 0
  store ptr %728, ptr %8, align 8
  %729 = extractvalue { ptr, i32 } %727, 1
  store i32 %729, ptr %9, align 4
  br label %1067

730:                                              ; preds = %716
  call void @llvm.lifetime.start.p0(i64 8, ptr %60) #7
  %731 = invoke noundef nonnull align 8 dereferenceable(16) ptr @_ZN16HighsMatrixSliceI21HighsTripletListSliceE8iteratordeEv(ptr noundef nonnull align 8 dereferenceable(28) %58)
          to label %732 unwind label %740

732:                                              ; preds = %730
  store ptr %731, ptr %60, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 4, ptr %61) #7
  %733 = load ptr, ptr %60, align 8, !tbaa !5
  %734 = invoke noundef i32 @_ZNK17HighsSliceNonzero5indexEv(ptr noundef nonnull align 8 dereferenceable(16) %733)
          to label %735 unwind label %744

735:                                              ; preds = %732
  store i32 %734, ptr %61, align 4, !tbaa !77
  %736 = load i32, ptr %61, align 4, !tbaa !77
  %737 = load i32, ptr %21, align 4, !tbaa !77
  %738 = icmp eq i32 %736, %737
  br i1 %738, label %739, label %748

739:                                              ; preds = %735
  store i32 20, ptr %10, align 4
  br label %1053

740:                                              ; preds = %730
  %741 = landingpad { ptr, i32 }
          cleanup
  %742 = extractvalue { ptr, i32 } %741, 0
  store ptr %742, ptr %8, align 8
  %743 = extractvalue { ptr, i32 } %741, 1
  store i32 %743, ptr %9, align 4
  br label %1066

744:                                              ; preds = %732
  %745 = landingpad { ptr, i32 }
          cleanup
  %746 = extractvalue { ptr, i32 } %745, 0
  store ptr %746, ptr %8, align 8
  %747 = extractvalue { ptr, i32 } %745, 1
  store i32 %747, ptr %9, align 4
  br label %1065

748:                                              ; preds = %735
  %749 = getelementptr inbounds %"class.presolve::HPresolve", ptr %99, i32 0, i32 15
  %750 = load i32, ptr %21, align 4, !tbaa !77
  %751 = sext i32 %750 to i64
  %752 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNSt6vectorIiSaIiEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %749, i64 noundef %751) #7
  %753 = load i32, ptr %752, align 4, !tbaa !77
  %754 = icmp eq i32 %753, 0
  br i1 %754, label %755, label %763

755:                                              ; preds = %748
  %756 = getelementptr inbounds %"class.presolve::HPresolve", ptr %99, i32 0, i32 15
  %757 = load i32, ptr %61, align 4, !tbaa !77
  %758 = sext i32 %757 to i64
  %759 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNSt6vectorIiSaIiEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %756, i64 noundef %758) #7
  %760 = load i32, ptr %759, align 4, !tbaa !77
  %761 = icmp ne i32 %760, 0
  br i1 %761, label %762, label %763

762:                                              ; preds = %755
  store i32 20, ptr %10, align 4
  br label %1053

763:                                              ; preds = %755, %748
  call void @llvm.lifetime.start.p0(i64 4, ptr %62) #7
  %764 = load i32, ptr %61, align 4, !tbaa !77
  %765 = load i32, ptr %23, align 4, !tbaa !77
  %766 = invoke noundef i32 @_ZN8presolve9HPresolve11findNonzeroEii(ptr noundef nonnull align 8 dereferenceable(1720) %99, i32 noundef %764, i32 noundef %765)
          to label %767 unwind label %771

767:                                              ; preds = %763
  store i32 %766, ptr %62, align 4, !tbaa !77
  %768 = load i32, ptr %62, align 4, !tbaa !77
  %769 = icmp ne i32 %768, -1
  br i1 %769, label %770, label %775

770:                                              ; preds = %767
  store i32 20, ptr %10, align 4
  br label %1052

771:                                              ; preds = %763
  %772 = landingpad { ptr, i32 }
          cleanup
  %773 = extractvalue { ptr, i32 } %772, 0
  store ptr %773, ptr %8, align 8
  %774 = extractvalue { ptr, i32 } %772, 1
  store i32 %774, ptr %9, align 4
  br label %1064

775:                                              ; preds = %767
  call void @_ZNSt3mapIdiSt4lessIdESaISt4pairIKdiEEE5clearEv(ptr noundef nonnull align 8 dereferenceable(48) %27) #7
  call void @llvm.lifetime.start.p0(i64 1, ptr %63) #7
  store i8 0, ptr %63, align 1, !tbaa !96
  call void @llvm.lifetime.start.p0(i64 8, ptr %64) #7
  call void @llvm.lifetime.start.p0(i64 32, ptr %65) #7
  invoke void @_ZNK8presolve9HPresolve12getStoredRowEv(ptr dead_on_unwind writable sret(%struct.HighsTripletPositionSlice) align 8 %65, ptr noundef nonnull align 8 dereferenceable(1720) %99)
          to label %776 unwind label %785

776:                                              ; preds = %775
  store ptr %65, ptr %64, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 32, ptr %66) #7
  %777 = load ptr, ptr %64, align 8, !tbaa !5
  invoke void @_ZNK16HighsMatrixSliceI25HighsTripletPositionSliceE5beginEv(ptr dead_on_unwind writable sret(%"class.HighsMatrixSlice<HighsTripletPositionSlice>::iterator") align 8 %66, ptr noundef nonnull align 8 dereferenceable(28) %777)
          to label %778 unwind label %789

778:                                              ; preds = %776
  call void @llvm.lifetime.start.p0(i64 32, ptr %67) #7
  %779 = load ptr, ptr %64, align 8, !tbaa !5
  invoke void @_ZNK16HighsMatrixSliceI25HighsTripletPositionSliceE3endEv(ptr dead_on_unwind writable sret(%"class.HighsMatrixSlice<HighsTripletPositionSlice>::iterator") align 8 %67, ptr noundef nonnull align 8 dereferenceable(28) %779)
          to label %780 unwind label %793

780:                                              ; preds = %778
  br label %781

781:                                              ; preds = %957, %780
  %782 = invoke noundef zeroext i1 @_ZNK16HighsMatrixSliceI25HighsTripletPositionSliceE8iteratorneERKS2_(ptr noundef nonnull align 8 dereferenceable(28) %66, ptr noundef nonnull align 8 dereferenceable(28) %67)
          to label %783 unwind label %793

783:                                              ; preds = %781
  br i1 %782, label %797, label %784

784:                                              ; preds = %783
  store i32 21, ptr %10, align 4
  br label %963

785:                                              ; preds = %775
  %786 = landingpad { ptr, i32 }
          cleanup
  %787 = extractvalue { ptr, i32 } %786, 0
  store ptr %787, ptr %8, align 8
  %788 = extractvalue { ptr, i32 } %786, 1
  store i32 %788, ptr %9, align 4
  br label %966

789:                                              ; preds = %776
  %790 = landingpad { ptr, i32 }
          cleanup
  %791 = extractvalue { ptr, i32 } %790, 0
  store ptr %791, ptr %8, align 8
  %792 = extractvalue { ptr, i32 } %790, 1
  store i32 %792, ptr %9, align 4
  br label %965

793:                                              ; preds = %955, %781, %778
  %794 = landingpad { ptr, i32 }
          cleanup
  %795 = extractvalue { ptr, i32 } %794, 0
  store ptr %795, ptr %8, align 8
  %796 = extractvalue { ptr, i32 } %794, 1
  store i32 %796, ptr %9, align 4
  br label %964

797:                                              ; preds = %783
  call void @llvm.lifetime.start.p0(i64 8, ptr %68) #7
  %798 = invoke noundef nonnull align 8 dereferenceable(16) ptr @_ZN16HighsMatrixSliceI25HighsTripletPositionSliceE8iteratordeEv(ptr noundef nonnull align 8 dereferenceable(28) %66)
          to label %799 unwind label %809

799:                                              ; preds = %797
  store ptr %798, ptr %68, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %69) #7
  %800 = load ptr, ptr %68, align 8, !tbaa !5
  %801 = invoke noundef i32 @_ZNK17HighsSliceNonzero5indexEv(ptr noundef nonnull align 8 dereferenceable(16) %800)
          to label %802 unwind label %813

802:                                              ; preds = %799
  %803 = load i32, ptr %22, align 4, !tbaa !77
  %804 = icmp eq i32 %801, %803
  br i1 %804, label %805, label %817

805:                                              ; preds = %802
  %806 = load ptr, ptr %60, align 8, !tbaa !5
  %807 = invoke noundef double @_ZNK17HighsSliceNonzero5valueEv(ptr noundef nonnull align 8 dereferenceable(16) %806)
          to label %808 unwind label %813

808:                                              ; preds = %805
  store double %807, ptr %69, align 8, !tbaa !76
  br label %843

809:                                              ; preds = %797
  %810 = landingpad { ptr, i32 }
          cleanup
  %811 = extractvalue { ptr, i32 } %810, 0
  store ptr %811, ptr %8, align 8
  %812 = extractvalue { ptr, i32 } %810, 1
  store i32 %812, ptr %9, align 4
  br label %962

813:                                              ; preds = %805, %799
  %814 = landingpad { ptr, i32 }
          cleanup
  %815 = extractvalue { ptr, i32 } %814, 0
  store ptr %815, ptr %8, align 8
  %816 = extractvalue { ptr, i32 } %814, 1
  store i32 %816, ptr %9, align 4
  br label %961

817:                                              ; preds = %802
  call void @llvm.lifetime.start.p0(i64 4, ptr %70) #7
  %818 = load i32, ptr %61, align 4, !tbaa !77
  %819 = load ptr, ptr %68, align 8, !tbaa !5
  %820 = invoke noundef i32 @_ZNK17HighsSliceNonzero5indexEv(ptr noundef nonnull align 8 dereferenceable(16) %819)
          to label %821 unwind label %830

821:                                              ; preds = %817
  %822 = invoke noundef i32 @_ZN8presolve9HPresolve11findNonzeroEii(ptr noundef nonnull align 8 dereferenceable(1720) %99, i32 noundef %818, i32 noundef %820)
          to label %823 unwind label %830

823:                                              ; preds = %821
  store i32 %822, ptr %70, align 4, !tbaa !77
  %824 = load i32, ptr %70, align 4, !tbaa !77
  %825 = icmp eq i32 %824, -1
  %826 = zext i1 %825 to i8
  store i8 %826, ptr %63, align 1, !tbaa !96
  %827 = load i8, ptr %63, align 1, !tbaa !96, !range !97, !noundef !98
  %828 = trunc i8 %827 to i1
  br i1 %828, label %829, label %834

829:                                              ; preds = %823
  store i32 21, ptr %10, align 4
  br label %840

830:                                              ; preds = %821, %817
  %831 = landingpad { ptr, i32 }
          cleanup
  %832 = extractvalue { ptr, i32 } %831, 0
  store ptr %832, ptr %8, align 8
  %833 = extractvalue { ptr, i32 } %831, 1
  store i32 %833, ptr %9, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %70) #7
  br label %961

834:                                              ; preds = %823
  %835 = getelementptr inbounds %"class.presolve::HPresolve", ptr %99, i32 0, i32 5
  %836 = load i32, ptr %70, align 4, !tbaa !77
  %837 = sext i32 %836 to i64
  %838 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt6vectorIdSaIdEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %835, i64 noundef %837) #7
  %839 = load double, ptr %838, align 8, !tbaa !76
  store double %839, ptr %69, align 8, !tbaa !76
  store i32 0, ptr %10, align 4
  br label %840

840:                                              ; preds = %834, %829
  call void @llvm.lifetime.end.p0(i64 4, ptr %70) #7
  %841 = load i32, ptr %10, align 4
  switch i32 %841, label %949 [
    i32 0, label %842
  ]

842:                                              ; preds = %840
  br label %843

843:                                              ; preds = %842, %808
  call void @llvm.lifetime.start.p0(i64 8, ptr %71) #7
  %844 = load double, ptr %69, align 8, !tbaa !76
  %845 = fneg double %844
  %846 = load ptr, ptr %68, align 8, !tbaa !5
  %847 = invoke noundef double @_ZNK17HighsSliceNonzero5valueEv(ptr noundef nonnull align 8 dereferenceable(16) %846)
          to label %848 unwind label %855

848:                                              ; preds = %843
  %849 = fdiv double %845, %847
  store double %849, ptr %71, align 8, !tbaa !76
  %850 = load double, ptr %71, align 8, !tbaa !76
  %851 = invoke noundef double @_ZSt3absd(double noundef %850)
          to label %852 unwind label %855

852:                                              ; preds = %848
  %853 = fcmp ogt double %851, 1.000000e+03
  br i1 %853, label %854, label %859

854:                                              ; preds = %852
  store i32 22, ptr %10, align 4
  br label %948

855:                                              ; preds = %848, %843
  %856 = landingpad { ptr, i32 }
          cleanup
  %857 = extractvalue { ptr, i32 } %856, 0
  store ptr %857, ptr %8, align 8
  %858 = extractvalue { ptr, i32 } %856, 1
  store i32 %858, ptr %9, align 4
  br label %960

859:                                              ; preds = %852
  call void @llvm.lifetime.start.p0(i64 8, ptr %72) #7
  %860 = load double, ptr %13, align 8, !tbaa !76
  %861 = load ptr, ptr %68, align 8, !tbaa !5
  %862 = invoke noundef double @_ZNK17HighsSliceNonzero5valueEv(ptr noundef nonnull align 8 dereferenceable(16) %861)
          to label %863 unwind label %894

863:                                              ; preds = %859
  %864 = invoke noundef double @_ZSt3absd(double noundef %862)
          to label %865 unwind label %894

865:                                              ; preds = %863
  %866 = fdiv double %860, %864
  store double %866, ptr %72, align 8, !tbaa !76
  call void @llvm.lifetime.start.p0(i64 8, ptr %73) #7
  call void @llvm.lifetime.start.p0(i64 8, ptr %74) #7
  %867 = load double, ptr %71, align 8, !tbaa !76
  %868 = load double, ptr %72, align 8, !tbaa !76
  %869 = fsub double %867, %868
  store double %869, ptr %74, align 8, !tbaa !76
  %870 = invoke ptr @_ZNSt3mapIdiSt4lessIdESaISt4pairIKdiEEE11lower_boundERS3_(ptr noundef nonnull align 8 dereferenceable(48) %27, ptr noundef nonnull align 8 dereferenceable(8) %74)
          to label %871 unwind label %898

871:                                              ; preds = %865
  %872 = getelementptr inbounds %"struct.std::_Rb_tree_iterator.545", ptr %73, i32 0, i32 0
  store ptr %870, ptr %872, align 8
  call void @llvm.lifetime.end.p0(i64 8, ptr %74) #7
  call void @llvm.lifetime.start.p0(i64 8, ptr %75) #7
  %873 = call ptr @_ZNSt3mapIdiSt4lessIdESaISt4pairIKdiEEE3endEv(ptr noundef nonnull align 8 dereferenceable(48) %27) #7
  %874 = getelementptr inbounds %"struct.std::_Rb_tree_iterator.545", ptr %75, i32 0, i32 0
  store ptr %873, ptr %874, align 8
  %875 = call noundef zeroext i1 @_ZStneRKSt17_Rb_tree_iteratorISt4pairIKdiEES5_(ptr noundef nonnull align 8 dereferenceable(8) %73, ptr noundef nonnull align 8 dereferenceable(8) %75) #7
  br i1 %875, label %876, label %886

876:                                              ; preds = %871
  %877 = call noundef ptr @_ZNKSt17_Rb_tree_iteratorISt4pairIKdiEEptEv(ptr noundef nonnull align 8 dereferenceable(8) %73) #7
  %878 = getelementptr inbounds %"struct.std::pair.546", ptr %877, i32 0, i32 0
  %879 = load double, ptr %878, align 8, !tbaa !85
  %880 = load double, ptr %71, align 8, !tbaa !76
  %881 = fsub double %879, %880
  %882 = invoke noundef double @_ZSt3absd(double noundef %881)
          to label %883 unwind label %902

883:                                              ; preds = %876
  %884 = load double, ptr %72, align 8, !tbaa !76
  %885 = fcmp ole double %882, %884
  br label %886

886:                                              ; preds = %883, %871
  %887 = phi i1 [ false, %871 ], [ %885, %883 ]
  call void @llvm.lifetime.end.p0(i64 8, ptr %75) #7
  br i1 %887, label %888, label %935

888:                                              ; preds = %886
  %889 = call noundef ptr @_ZNKSt17_Rb_tree_iteratorISt4pairIKdiEEptEv(ptr noundef nonnull align 8 dereferenceable(8) %73) #7
  %890 = getelementptr inbounds %"struct.std::pair.546", ptr %889, i32 0, i32 1
  %891 = load i32, ptr %890, align 8, !tbaa !87
  %892 = icmp eq i32 %891, -1
  br i1 %892, label %893, label %906

893:                                              ; preds = %888
  store i32 22, ptr %10, align 4
  br label %947

894:                                              ; preds = %863, %859
  %895 = landingpad { ptr, i32 }
          cleanup
  %896 = extractvalue { ptr, i32 } %895, 0
  store ptr %896, ptr %8, align 8
  %897 = extractvalue { ptr, i32 } %895, 1
  store i32 %897, ptr %9, align 4
  br label %959

898:                                              ; preds = %865
  %899 = landingpad { ptr, i32 }
          cleanup
  %900 = extractvalue { ptr, i32 } %899, 0
  store ptr %900, ptr %8, align 8
  %901 = extractvalue { ptr, i32 } %899, 1
  store i32 %901, ptr %9, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %74) #7
  br label %958

902:                                              ; preds = %876
  %903 = landingpad { ptr, i32 }
          cleanup
  %904 = extractvalue { ptr, i32 } %903, 0
  store ptr %904, ptr %8, align 8
  %905 = extractvalue { ptr, i32 } %903, 1
  store i32 %905, ptr %9, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %75) #7
  br label %958

906:                                              ; preds = %888
  %907 = call noundef ptr @_ZNKSt17_Rb_tree_iteratorISt4pairIKdiEEptEv(ptr noundef nonnull align 8 dereferenceable(8) %73) #7
  %908 = getelementptr inbounds %"struct.std::pair.546", ptr %907, i32 0, i32 0
  %909 = load double, ptr %908, align 8, !tbaa !85
  %910 = load ptr, ptr %68, align 8, !tbaa !5
  %911 = invoke noundef double @_ZNK17HighsSliceNonzero5valueEv(ptr noundef nonnull align 8 dereferenceable(16) %910)
          to label %912 unwind label %927

912:                                              ; preds = %906
  %913 = load double, ptr %69, align 8, !tbaa !76
  %914 = call double @llvm.fmuladd.f64(double %909, double %911, double %913)
  %915 = invoke noundef double @_ZSt3absd(double noundef %914)
          to label %916 unwind label %927

916:                                              ; preds = %912
  %917 = getelementptr inbounds %"class.presolve::HPresolve", ptr %99, i32 0, i32 1
  %918 = load ptr, ptr %917, align 8, !tbaa !88
  %919 = getelementptr inbounds %struct.HighsOptionsStruct, ptr %918, i32 0, i32 12
  %920 = load double, ptr %919, align 8, !tbaa !89
  %921 = fcmp ole double %915, %920
  br i1 %921, label %922, label %931

922:                                              ; preds = %916
  %923 = call noundef ptr @_ZNKSt17_Rb_tree_iteratorISt4pairIKdiEEptEv(ptr noundef nonnull align 8 dereferenceable(8) %73) #7
  %924 = getelementptr inbounds %"struct.std::pair.546", ptr %923, i32 0, i32 1
  %925 = load i32, ptr %924, align 8, !tbaa !87
  %926 = add nsw i32 %925, 1
  store i32 %926, ptr %924, align 8, !tbaa !87
  br label %934

927:                                              ; preds = %912, %906
  %928 = landingpad { ptr, i32 }
          cleanup
  %929 = extractvalue { ptr, i32 } %928, 0
  store ptr %929, ptr %8, align 8
  %930 = extractvalue { ptr, i32 } %928, 1
  store i32 %930, ptr %9, align 4
  br label %958

931:                                              ; preds = %916
  %932 = call noundef ptr @_ZNKSt17_Rb_tree_iteratorISt4pairIKdiEEptEv(ptr noundef nonnull align 8 dereferenceable(8) %73) #7
  %933 = getelementptr inbounds %"struct.std::pair.546", ptr %932, i32 0, i32 1
  store i32 -1, ptr %933, align 8, !tbaa !87
  store i32 22, ptr %10, align 4
  br label %947

934:                                              ; preds = %922
  br label %946

935:                                              ; preds = %886
  call void @llvm.lifetime.start.p0(i64 4, ptr %76) #7
  store i32 1, ptr %76, align 4, !tbaa !77
  %936 = invoke { ptr, i8 } @_ZNSt3mapIdiSt4lessIdESaISt4pairIKdiEEE7emplaceIJRdiEEES2_ISt17_Rb_tree_iteratorIS4_EbEDpOT_(ptr noundef nonnull align 8 dereferenceable(48) %27, ptr noundef nonnull align 8 dereferenceable(8) %71, ptr noundef nonnull align 4 dereferenceable(4) %76)
          to label %937 unwind label %942

937:                                              ; preds = %935
  %938 = getelementptr inbounds { ptr, i8 }, ptr %77, i32 0, i32 0
  %939 = extractvalue { ptr, i8 } %936, 0
  store ptr %939, ptr %938, align 8
  %940 = getelementptr inbounds { ptr, i8 }, ptr %77, i32 0, i32 1
  %941 = extractvalue { ptr, i8 } %936, 1
  store i8 %941, ptr %940, align 8
  call void @llvm.lifetime.end.p0(i64 4, ptr %76) #7
  br label %946

942:                                              ; preds = %935
  %943 = landingpad { ptr, i32 }
          cleanup
  %944 = extractvalue { ptr, i32 } %943, 0
  store ptr %944, ptr %8, align 8
  %945 = extractvalue { ptr, i32 } %943, 1
  store i32 %945, ptr %9, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %76) #7
  br label %958

946:                                              ; preds = %937, %934
  store i32 0, ptr %10, align 4
  br label %947

947:                                              ; preds = %946, %931, %893
  call void @llvm.lifetime.end.p0(i64 8, ptr %73) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %72) #7
  br label %948

948:                                              ; preds = %947, %854
  call void @llvm.lifetime.end.p0(i64 8, ptr %71) #7
  br label %949

949:                                              ; preds = %948, %840
  call void @llvm.lifetime.end.p0(i64 8, ptr %69) #7
  %950 = load i32, ptr %10, align 4
  switch i32 %950, label %952 [
    i32 0, label %951
  ]

951:                                              ; preds = %949
  store i32 0, ptr %10, align 4
  br label %952

952:                                              ; preds = %951, %949
  call void @llvm.lifetime.end.p0(i64 8, ptr %68) #7
  %953 = load i32, ptr %10, align 4
  switch i32 %953, label %963 [
    i32 0, label %954
    i32 22, label %955
  ]

954:                                              ; preds = %952
  br label %955

955:                                              ; preds = %954, %952
  %956 = invoke noundef nonnull align 8 dereferenceable(28) ptr @_ZN16HighsMatrixSliceI25HighsTripletPositionSliceE8iteratorppEv(ptr noundef nonnull align 8 dereferenceable(28) %66)
          to label %957 unwind label %793

957:                                              ; preds = %955
  br label %781

958:                                              ; preds = %942, %927, %902, %898
  call void @llvm.lifetime.end.p0(i64 8, ptr %73) #7
  br label %959

959:                                              ; preds = %958, %894
  call void @llvm.lifetime.end.p0(i64 8, ptr %72) #7
  br label %960

960:                                              ; preds = %959, %855
  call void @llvm.lifetime.end.p0(i64 8, ptr %71) #7
  br label %961

961:                                              ; preds = %960, %830, %813
  call void @llvm.lifetime.end.p0(i64 8, ptr %69) #7
  br label %962

962:                                              ; preds = %961, %809
  call void @llvm.lifetime.end.p0(i64 8, ptr %68) #7
  br label %964

963:                                              ; preds = %952, %784
  call void @llvm.lifetime.end.p0(i64 32, ptr %67) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr %66) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr %65) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %64) #7
  br label %967

964:                                              ; preds = %962, %793
  call void @llvm.lifetime.end.p0(i64 32, ptr %67) #7
  br label %965

965:                                              ; preds = %964, %789
  call void @llvm.lifetime.end.p0(i64 32, ptr %66) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr %65) #7
  br label %966

966:                                              ; preds = %965, %785
  call void @llvm.lifetime.end.p0(i64 8, ptr %64) #7
  br label %1063

967:                                              ; preds = %963
  %968 = load i8, ptr %63, align 1, !tbaa !96, !range !97, !noundef !98
  %969 = trunc i8 %968 to i1
  br i1 %969, label %972, label %970

970:                                              ; preds = %967
  %971 = call noundef zeroext i1 @_ZNKSt3mapIdiSt4lessIdESaISt4pairIKdiEEE5emptyEv(ptr noundef nonnull align 8 dereferenceable(48) %27) #7
  br i1 %971, label %972, label %973

972:                                              ; preds = %970, %967
  store i32 20, ptr %10, align 4
  br label %1051

973:                                              ; preds = %970
  call void @llvm.lifetime.start.p0(i64 4, ptr %78) #7
  store i32 0, ptr %78, align 4, !tbaa !77
  call void @llvm.lifetime.start.p0(i64 8, ptr %79) #7
  store double 0.000000e+00, ptr %79, align 8, !tbaa !76
  call void @llvm.lifetime.start.p0(i64 8, ptr %80) #7
  store ptr %27, ptr %80, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %81) #7
  %974 = load ptr, ptr %80, align 8, !tbaa !5
  %975 = call ptr @_ZNSt3mapIdiSt4lessIdESaISt4pairIKdiEEE5beginEv(ptr noundef nonnull align 8 dereferenceable(48) %974) #7
  %976 = getelementptr inbounds %"struct.std::_Rb_tree_iterator.545", ptr %81, i32 0, i32 0
  store ptr %975, ptr %976, align 8
  call void @llvm.lifetime.start.p0(i64 8, ptr %82) #7
  %977 = load ptr, ptr %80, align 8, !tbaa !5
  %978 = call ptr @_ZNSt3mapIdiSt4lessIdESaISt4pairIKdiEEE3endEv(ptr noundef nonnull align 8 dereferenceable(48) %977) #7
  %979 = getelementptr inbounds %"struct.std::_Rb_tree_iterator.545", ptr %82, i32 0, i32 0
  store ptr %978, ptr %979, align 8
  br label %980

980:                                              ; preds = %1027, %973
  %981 = call noundef zeroext i1 @_ZStneRKSt17_Rb_tree_iteratorISt4pairIKdiEES5_(ptr noundef nonnull align 8 dereferenceable(8) %81, ptr noundef nonnull align 8 dereferenceable(8) %82) #7
  br i1 %981, label %983, label %982

982:                                              ; preds = %980
  store i32 23, ptr %10, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %82) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %81) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %80) #7
  br label %1029

983:                                              ; preds = %980
  call void @llvm.lifetime.start.p0(i64 8, ptr %83) #7
  %984 = call noundef nonnull align 8 dereferenceable(12) ptr @_ZNKSt17_Rb_tree_iteratorISt4pairIKdiEEdeEv(ptr noundef nonnull align 8 dereferenceable(8) %81) #7
  store ptr %984, ptr %83, align 8, !tbaa !5
  %985 = load ptr, ptr %83, align 8, !tbaa !5
  %986 = getelementptr inbounds %"struct.std::pair.546", ptr %985, i32 0, i32 1
  %987 = load i32, ptr %986, align 8, !tbaa !87
  %988 = icmp sle i32 %987, 1
  br i1 %988, label %989, label %990

989:                                              ; preds = %983
  store i32 24, ptr %10, align 4
  br label %1024

990:                                              ; preds = %983
  %991 = load ptr, ptr %83, align 8, !tbaa !5
  %992 = getelementptr inbounds %"struct.std::pair.546", ptr %991, i32 0, i32 1
  %993 = load i32, ptr %992, align 8, !tbaa !87
  %994 = load i32, ptr %78, align 4, !tbaa !77
  %995 = icmp sgt i32 %993, %994
  br i1 %995, label %1012, label %996

996:                                              ; preds = %990
  %997 = load ptr, ptr %83, align 8, !tbaa !5
  %998 = getelementptr inbounds %"struct.std::pair.546", ptr %997, i32 0, i32 1
  %999 = load i32, ptr %998, align 8, !tbaa !87
  %1000 = load i32, ptr %78, align 4, !tbaa !77
  %1001 = icmp eq i32 %999, %1000
  br i1 %1001, label %1002, label %1023

1002:                                             ; preds = %996
  %1003 = load ptr, ptr %83, align 8, !tbaa !5
  %1004 = getelementptr inbounds %"struct.std::pair.546", ptr %1003, i32 0, i32 0
  %1005 = load double, ptr %1004, align 8, !tbaa !85
  %1006 = invoke noundef double @_ZSt3absd(double noundef %1005)
          to label %1007 unwind label %1019

1007:                                             ; preds = %1002
  %1008 = load double, ptr %79, align 8, !tbaa !76
  %1009 = invoke noundef double @_ZSt3absd(double noundef %1008)
          to label %1010 unwind label %1019

1010:                                             ; preds = %1007
  %1011 = fcmp olt double %1006, %1009
  br i1 %1011, label %1012, label %1023

1012:                                             ; preds = %1010, %990
  %1013 = load ptr, ptr %83, align 8, !tbaa !5
  %1014 = getelementptr inbounds %"struct.std::pair.546", ptr %1013, i32 0, i32 0
  %1015 = load double, ptr %1014, align 8, !tbaa !85
  store double %1015, ptr %79, align 8, !tbaa !76
  %1016 = load ptr, ptr %83, align 8, !tbaa !5
  %1017 = getelementptr inbounds %"struct.std::pair.546", ptr %1016, i32 0, i32 1
  %1018 = load i32, ptr %1017, align 8, !tbaa !87
  store i32 %1018, ptr %78, align 4, !tbaa !77
  br label %1023

1019:                                             ; preds = %1007, %1002
  %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
  call void @llvm.lifetime.end.p0(i64 8, ptr %83) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %82) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %81) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %80) #7
  br label %1062

1023:                                             ; preds = %1012, %1010, %996
  store i32 0, ptr %10, align 4
  br label %1024

1024:                                             ; preds = %1023, %989
  call void @llvm.lifetime.end.p0(i64 8, ptr %83) #7
  %1025 = load i32, ptr %10, align 4
  switch i32 %1025, label %1271 [
    i32 0, label %1026
    i32 24, label %1027
  ]

1026:                                             ; preds = %1024
  br label %1027

1027:                                             ; preds = %1026, %1024
  %1028 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt17_Rb_tree_iteratorISt4pairIKdiEEppEv(ptr noundef nonnull align 8 dereferenceable(8) %81) #7
  br label %980

1029:                                             ; preds = %982
  %1030 = load double, ptr %79, align 8, !tbaa !76
  %1031 = fcmp une double %1030, 0.000000e+00
  br i1 %1031, label %1035, label %1032

1032:                                             ; preds = %1029
  %1033 = load i32, ptr %78, align 4, !tbaa !77
  %1034 = icmp eq i32 %1033, 0
  br label %1035

1035:                                             ; preds = %1032, %1029
  %1036 = phi i1 [ true, %1029 ], [ %1034, %1032 ]
  br i1 %1036, label %1037, label %1038

1037:                                             ; preds = %1035
  br label %1040

1038:                                             ; preds = %1035
  call void @__assert_fail(ptr noundef @.str.172, ptr noundef @.str.55, i32 noundef 6837, ptr noundef @__PRETTY_FUNCTION__._ZN8presolve9HPresolve8sparsifyERNS_19HighsPostsolveStackE) #8
  unreachable

1039:                                             ; No predecessors!
  br label %1040

1040:                                             ; preds = %1039, %1037
  %1041 = load i32, ptr %78, align 4, !tbaa !77
  %1042 = icmp sgt i32 %1041, 1
  br i1 %1042, label %1043, label %1050

1043:                                             ; preds = %1040
  %1044 = invoke noundef nonnull align 8 dereferenceable(16) ptr @_ZNSt6vectorIN8presolve19HighsPostsolveStack7NonzeroESaIS2_EE12emplace_backIJRiRdEEERS2_DpOT_(ptr noundef nonnull align 8 dereferenceable(24) %6, ptr noundef nonnull align 4 dereferenceable(4) %61, ptr noundef nonnull align 8 dereferenceable(8) %79)
          to label %1045 unwind label %1046

1045:                                             ; preds = %1043
  br label %1050

1046:                                             ; preds = %1043
  %1047 = landingpad { ptr, i32 }
          cleanup
  %1048 = extractvalue { ptr, i32 } %1047, 0
  store ptr %1048, ptr %8, align 8
  %1049 = extractvalue { ptr, i32 } %1047, 1
  store i32 %1049, ptr %9, align 4
  br label %1062

1050:                                             ; preds = %1045, %1040
  call void @llvm.lifetime.end.p0(i64 8, ptr %79) #7
  call void @llvm.lifetime.end.p0(i64 4, ptr %78) #7
  store i32 0, ptr %10, align 4
  br label %1051

1051:                                             ; preds = %1050, %972
  call void @llvm.lifetime.end.p0(i64 1, ptr %63) #7
  br label %1052

1052:                                             ; preds = %1051, %770
  call void @llvm.lifetime.end.p0(i64 4, ptr %62) #7
  br label %1053

1053:                                             ; preds = %1052, %762, %739
  call void @llvm.lifetime.end.p0(i64 4, ptr %61) #7
  %1054 = load i32, ptr %10, align 4
  switch i32 %1054, label %1056 [
    i32 0, label %1055
  ]

1055:                                             ; preds = %1053
  store i32 0, ptr %10, align 4
  br label %1056

1056:                                             ; preds = %1055, %1053
  call void @llvm.lifetime.end.p0(i64 8, ptr %60) #7
  %1057 = load i32, ptr %10, align 4
  switch i32 %1057, label %1271 [
    i32 0, label %1058
    i32 20, label %1059
  ]

1058:                                             ; preds = %1056
  br label %1059

1059:                                             ; preds = %1058, %1056
  %1060 = invoke noundef nonnull align 8 dereferenceable(28) ptr @_ZN16HighsMatrixSliceI21HighsTripletListSliceE8iteratorppEv(ptr noundef nonnull align 8 dereferenceable(28) %58)
          to label %1061 unwind label %726

1061:                                             ; preds = %1059
  br label %714

1062:                                             ; preds = %1046, %1019
  call void @llvm.lifetime.end.p0(i64 8, ptr %79) #7
  call void @llvm.lifetime.end.p0(i64 4, ptr %78) #7
  br label %1063

1063:                                             ; preds = %1062, %966
  call void @llvm.lifetime.end.p0(i64 1, ptr %63) #7
  br label %1064

1064:                                             ; preds = %1063, %771
  call void @llvm.lifetime.end.p0(i64 4, ptr %62) #7
  br label %1065

1065:                                             ; preds = %1064, %744
  call void @llvm.lifetime.end.p0(i64 4, ptr %61) #7
  br label %1066

1066:                                             ; preds = %1065, %740
  call void @llvm.lifetime.end.p0(i64 8, ptr %60) #7
  br label %1067

1067:                                             ; preds = %1066, %726
  call void @llvm.lifetime.end.p0(i64 32, ptr %59) #7
  br label %1068

1068:                                             ; preds = %1067, %722
  call void @llvm.lifetime.end.p0(i64 32, ptr %58) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr %57) #7
  br label %1069

1069:                                             ; preds = %1068, %718
  call void @llvm.lifetime.end.p0(i64 8, ptr %56) #7
  br label %1255

1070:                                             ; preds = %717
  br label %1071

1071:                                             ; preds = %1070, %690
  %1072 = call noundef zeroext i1 @_ZNKSt6vectorIN8presolve19HighsPostsolveStack7NonzeroESaIS2_EE5emptyEv(ptr noundef nonnull align 8 dereferenceable(24) %6) #7
  br i1 %1072, label %1073, label %1074

1073:                                             ; preds = %1071
  store i32 9, ptr %10, align 4
  br label %1246

1074:                                             ; preds = %1071
  %1075 = load ptr, ptr %5, align 8, !tbaa !5
  %1076 = load i32, ptr %21, align 4, !tbaa !77
  call void @llvm.lifetime.start.p0(i64 32, ptr %84) #7
  invoke void @_ZNK8presolve9HPresolve12getStoredRowEv(ptr dead_on_unwind writable sret(%struct.HighsTripletPositionSlice) align 8 %84, ptr noundef nonnull align 8 dereferenceable(1720) %99)
          to label %1077 unwind label %1095

1077:                                             ; preds = %1074
  invoke void @_ZN8presolve19HighsPostsolveStack20equalityRowAdditionsI25HighsTripletPositionSliceEEviRK16HighsMatrixSliceIT_ERKSt6vectorINS0_7NonzeroESaIS9_EE(ptr noundef nonnull align 8 dereferenceable(224) %1075, i32 noundef %1076, ptr noundef nonnull align 8 dereferenceable(28) %84, ptr noundef nonnull align 8 dereferenceable(24) %6)
          to label %1078 unwind label %1095

1078:                                             ; preds = %1077
  call void @llvm.lifetime.end.p0(i64 32, ptr %84) #7
  call void @llvm.lifetime.start.p0(i64 8, ptr %85) #7
  %1079 = getelementptr inbounds %"class.presolve::HPresolve", ptr %99, i32 0, i32 0
  %1080 = load ptr, ptr %1079, align 8, !tbaa !79
  %1081 = getelementptr inbounds %class.HighsLp, ptr %1080, i32 0, i32 5
  %1082 = load i32, ptr %21, align 4, !tbaa !77
  %1083 = sext i32 %1082 to i64
  %1084 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt6vectorIdSaIdEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %1081, i64 noundef %1083) #7
  %1085 = load double, ptr %1084, align 8, !tbaa !76
  store double %1085, ptr %85, align 8, !tbaa !76
  call void @llvm.lifetime.start.p0(i64 8, ptr %86) #7
  store ptr %6, ptr %86, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %87) #7
  %1086 = load ptr, ptr %86, align 8, !tbaa !5
  %1087 = call ptr @_ZNSt6vectorIN8presolve19HighsPostsolveStack7NonzeroESaIS2_EE5beginEv(ptr noundef nonnull align 8 dereferenceable(24) %1086) #7
  %1088 = getelementptr inbounds %"class.__gnu_cxx::__normal_iterator.552", ptr %87, i32 0, i32 0
  store ptr %1087, ptr %1088, align 8
  call void @llvm.lifetime.start.p0(i64 8, ptr %88) #7
  %1089 = load ptr, ptr %86, align 8, !tbaa !5
  %1090 = call ptr @_ZNSt6vectorIN8presolve19HighsPostsolveStack7NonzeroESaIS2_EE3endEv(ptr noundef nonnull align 8 dereferenceable(24) %1089) #7
  %1091 = getelementptr inbounds %"class.__gnu_cxx::__normal_iterator.552", ptr %88, i32 0, i32 0
  store ptr %1090, ptr %1091, align 8
  br label %1092

1092:                                             ; preds = %1183, %1078
  %1093 = call noundef zeroext i1 @_ZN9__gnu_cxxneIPN8presolve19HighsPostsolveStack7NonzeroESt6vectorIS3_SaIS3_EEEEbRKNS_17__normal_iteratorIT_T0_EESD_(ptr noundef nonnull align 8 dereferenceable(8) %87, ptr noundef nonnull align 8 dereferenceable(8) %88) #7
  br i1 %1093, label %1099, label %1094

1094:                                             ; preds = %1092
  store i32 25, ptr %10, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %88) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %87) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %86) #7
  br label %1190

1095:                                             ; preds = %1077, %1074
  %1096 = landingpad { ptr, i32 }
          cleanup
  %1097 = extractvalue { ptr, i32 } %1096, 0
  store ptr %1097, ptr %8, align 8
  %1098 = extractvalue { ptr, i32 } %1096, 1
  store i32 %1098, ptr %9, align 4
  call void @llvm.lifetime.end.p0(i64 32, ptr %84) #7
  br label %1255

1099:                                             ; preds = %1092
  call void @llvm.lifetime.start.p0(i64 8, ptr %89) #7
  %1100 = call noundef nonnull align 8 dereferenceable(16) ptr @_ZNK9__gnu_cxx17__normal_iteratorIPN8presolve19HighsPostsolveStack7NonzeroESt6vectorIS3_SaIS3_EEEdeEv(ptr noundef nonnull align 8 dereferenceable(8) %87) #7
  store ptr %1100, ptr %89, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 4, ptr %90) #7
  %1101 = load ptr, ptr %89, align 8, !tbaa !5
  %1102 = getelementptr inbounds %"struct.presolve::HighsPostsolveStack::Nonzero", ptr %1101, i32 0, i32 0
  %1103 = load i32, ptr %1102, align 8, !tbaa !99
  store i32 %1103, ptr %90, align 4, !tbaa !77
  call void @llvm.lifetime.start.p0(i64 8, ptr %91) #7
  %1104 = load ptr, ptr %89, align 8, !tbaa !5
  %1105 = getelementptr inbounds %"struct.presolve::HighsPostsolveStack::Nonzero", ptr %1104, i32 0, i32 1
  %1106 = load double, ptr %1105, align 8, !tbaa !101
  store double %1106, ptr %91, align 8, !tbaa !76
  %1107 = getelementptr inbounds %"class.presolve::HPresolve", ptr %99, i32 0, i32 0
  %1108 = load ptr, ptr %1107, align 8, !tbaa !79
  %1109 = getelementptr inbounds %class.HighsLp, ptr %1108, i32 0, i32 5
  %1110 = load i32, ptr %90, align 4, !tbaa !77
  %1111 = sext i32 %1110 to i64
  %1112 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt6vectorIdSaIdEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %1109, i64 noundef %1111) #7
  %1113 = load double, ptr %1112, align 8, !tbaa !76
  %1114 = fcmp une double %1113, 0xFFF0000000000000
  br i1 %1114, label %1115, label %1126

1115:                                             ; preds = %1099
  %1116 = load double, ptr %91, align 8, !tbaa !76
  %1117 = load double, ptr %85, align 8, !tbaa !76
  %1118 = getelementptr inbounds %"class.presolve::HPresolve", ptr %99, i32 0, i32 0
  %1119 = load ptr, ptr %1118, align 8, !tbaa !79
  %1120 = getelementptr inbounds %class.HighsLp, ptr %1119, i32 0, i32 5
  %1121 = load i32, ptr %90, align 4, !tbaa !77
  %1122 = sext i32 %1121 to i64
  %1123 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt6vectorIdSaIdEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %1120, i64 noundef %1122) #7
  %1124 = load double, ptr %1123, align 8, !tbaa !76
  %1125 = call double @llvm.fmuladd.f64(double %1116, double %1117, double %1124)
  store double %1125, ptr %1123, align 8, !tbaa !76
  br label %1126

1126:                                             ; preds = %1115, %1099
  %1127 = getelementptr inbounds %"class.presolve::HPresolve", ptr %99, i32 0, i32 0
  %1128 = load ptr, ptr %1127, align 8, !tbaa !79
  %1129 = getelementptr inbounds %class.HighsLp, ptr %1128, i32 0, i32 6
  %1130 = load i32, ptr %90, align 4, !tbaa !77
  %1131 = sext i32 %1130 to i64
  %1132 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt6vectorIdSaIdEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %1129, i64 noundef %1131) #7
  %1133 = load double, ptr %1132, align 8, !tbaa !76
  %1134 = fcmp une double %1133, 0x7FF0000000000000
  br i1 %1134, label %1135, label %1146

1135:                                             ; preds = %1126
  %1136 = load double, ptr %91, align 8, !tbaa !76
  %1137 = load double, ptr %85, align 8, !tbaa !76
  %1138 = getelementptr inbounds %"class.presolve::HPresolve", ptr %99, i32 0, i32 0
  %1139 = load ptr, ptr %1138, align 8, !tbaa !79
  %1140 = getelementptr inbounds %class.HighsLp, ptr %1139, i32 0, i32 6
  %1141 = load i32, ptr %90, align 4, !tbaa !77
  %1142 = sext i32 %1141 to i64
  %1143 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt6vectorIdSaIdEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %1140, i64 noundef %1142) #7
  %1144 = load double, ptr %1143, align 8, !tbaa !76
  %1145 = call double @llvm.fmuladd.f64(double %1136, double %1137, double %1144)
  store double %1145, ptr %1143, align 8, !tbaa !76
  br label %1146

1146:                                             ; preds = %1135, %1126
  call void @llvm.lifetime.start.p0(i64 8, ptr %92) #7
  %1147 = getelementptr inbounds %"class.presolve::HPresolve", ptr %99, i32 0, i32 18
  store ptr %1147, ptr %92, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %93) #7
  %1148 = load ptr, ptr %92, align 8, !tbaa !5
  %1149 = call ptr @_ZNSt6vectorIiSaIiEE5beginEv(ptr noundef nonnull align 8 dereferenceable(24) %1148) #7
  %1150 = getelementptr inbounds %"class.__gnu_cxx::__normal_iterator", ptr %93, i32 0, i32 0
  store ptr %1149, ptr %1150, align 8
  call void @llvm.lifetime.start.p0(i64 8, ptr %94) #7
  %1151 = load ptr, ptr %92, align 8, !tbaa !5
  %1152 = call ptr @_ZNSt6vectorIiSaIiEE3endEv(ptr noundef nonnull align 8 dereferenceable(24) %1151) #7
  %1153 = getelementptr inbounds %"class.__gnu_cxx::__normal_iterator", ptr %94, i32 0, i32 0
  store ptr %1152, ptr %1153, align 8
  br label %1154

1154:                                             ; preds = %1174, %1146
  %1155 = call noundef zeroext i1 @_ZN9__gnu_cxxneIPiSt6vectorIiSaIiEEEEbRKNS_17__normal_iteratorIT_T0_EESA_(ptr noundef nonnull align 8 dereferenceable(8) %93, ptr noundef nonnull align 8 dereferenceable(8) %94) #7
  br i1 %1155, label %1157, label %1156

1156:                                             ; preds = %1154
  store i32 27, ptr %10, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %94) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %93) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %92) #7
  br label %1180

1157:                                             ; preds = %1154
  call void @llvm.lifetime.start.p0(i64 4, ptr %95) #7
  %1158 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNK9__gnu_cxx17__normal_iteratorIPiSt6vectorIiSaIiEEEdeEv(ptr noundef nonnull align 8 dereferenceable(8) %93) #7
  %1159 = load i32, ptr %1158, align 4, !tbaa !77
  store i32 %1159, ptr %95, align 4, !tbaa !77
  %1160 = load i32, ptr %90, align 4, !tbaa !77
  %1161 = getelementptr inbounds %"class.presolve::HPresolve", ptr %99, i32 0, i32 7
  %1162 = load i32, ptr %95, align 4, !tbaa !77
  %1163 = sext i32 %1162 to i64
  %1164 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNSt6vectorIiSaIiEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %1161, i64 noundef %1163) #7
  %1165 = load i32, ptr %1164, align 4, !tbaa !77
  %1166 = load double, ptr %91, align 8, !tbaa !76
  %1167 = getelementptr inbounds %"class.presolve::HPresolve", ptr %99, i32 0, i32 5
  %1168 = load i32, ptr %95, align 4, !tbaa !77
  %1169 = sext i32 %1168 to i64
  %1170 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt6vectorIdSaIdEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %1167, i64 noundef %1169) #7
  %1171 = load double, ptr %1170, align 8, !tbaa !76
  %1172 = fmul double %1166, %1171
  invoke void @_ZN8presolve9HPresolve11addToMatrixEiid(ptr noundef nonnull align 8 dereferenceable(1720) %99, i32 noundef %1160, i32 noundef %1165, double noundef %1172)
          to label %1173 unwind label %1176

1173:                                             ; preds = %1157
  call void @llvm.lifetime.end.p0(i64 4, ptr %95) #7
  br label %1174

1174:                                             ; preds = %1173
  %1175 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZN9__gnu_cxx17__normal_iteratorIPiSt6vectorIiSaIiEEEppEv(ptr noundef nonnull align 8 dereferenceable(8) %93) #7
  br label %1154

1176:                                             ; preds = %1157
  %1177 = landingpad { ptr, i32 }
          cleanup
  %1178 = extractvalue { ptr, i32 } %1177, 0
  store ptr %1178, ptr %8, align 8
  %1179 = extractvalue { ptr, i32 } %1177, 1
  store i32 %1179, ptr %9, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %95) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %94) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %93) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %92) #7
  br label %1189

1180:                                             ; preds = %1156
  %1181 = load i32, ptr %90, align 4, !tbaa !77
  invoke void @_ZN8presolve9HPresolve16reinsertEquationEi(ptr noundef nonnull align 8 dereferenceable(1720) %99, i32 noundef %1181)
          to label %1182 unwind label %1185

1182:                                             ; preds = %1180
  call void @llvm.lifetime.end.p0(i64 8, ptr %91) #7
  call void @llvm.lifetime.end.p0(i64 4, ptr %90) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %89) #7
  br label %1183

1183:                                             ; preds = %1182
  %1184 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZN9__gnu_cxx17__normal_iteratorIPN8presolve19HighsPostsolveStack7NonzeroESt6vectorIS3_SaIS3_EEEppEv(ptr noundef nonnull align 8 dereferenceable(8) %87) #7
  br label %1092

1185:                                             ; preds = %1180
  %1186 = landingpad { ptr, i32 }
          cleanup
  %1187 = extractvalue { ptr, i32 } %1186, 0
  store ptr %1187, ptr %8, align 8
  %1188 = extractvalue { ptr, i32 } %1186, 1
  store i32 %1188, ptr %9, align 4
  br label %1189

1189:                                             ; preds = %1185, %1176
  call void @llvm.lifetime.end.p0(i64 8, ptr %91) #7
  call void @llvm.lifetime.end.p0(i64 4, ptr %90) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %89) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %88) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %87) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %86) #7
  br label %1254

1190:                                             ; preds = %1094
  br label %1191

1191:                                             ; preds = %1190
  call void @llvm.lifetime.start.p0(i64 4, ptr %96) #7
  %1192 = load ptr, ptr %5, align 8, !tbaa !5
  %1193 = invoke noundef i32 @_ZN8presolve9HPresolve11checkLimitsERNS_19HighsPostsolveStackE(ptr noundef nonnull align 8 dereferenceable(1720) %99, ptr noundef nonnull align 8 dereferenceable(224) %1192)
          to label %1194 unwind label %1199

1194:                                             ; preds = %1191
  store i32 %1193, ptr %96, align 4, !tbaa !9
  %1195 = load i32, ptr %96, align 4, !tbaa !9
  %1196 = icmp ne i32 %1195, 0
  br i1 %1196, label %1197, label %1203

1197:                                             ; preds = %1194
  %1198 = load i32, ptr %96, align 4, !tbaa !9
  store i32 %1198, ptr %3, align 4
  store i32 1, ptr %10, align 4
  br label %1204

1199:                                             ; preds = %1191
  %1200 = landingpad { ptr, i32 }
          cleanup
  %1201 = extractvalue { ptr, i32 } %1200, 0
  store ptr %1201, ptr %8, align 8
  %1202 = extractvalue { ptr, i32 } %1200, 1
  store i32 %1202, ptr %9, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %96) #7
  br label %1254

1203:                                             ; preds = %1194
  store i32 0, ptr %10, align 4
  br label %1204

1204:                                             ; preds = %1203, %1197
  call void @llvm.lifetime.end.p0(i64 4, ptr %96) #7
  %1205 = load i32, ptr %10, align 4
  switch i32 %1205, label %1245 [
    i32 0, label %1206
  ]

1206:                                             ; preds = %1204
  br label %1207

1207:                                             ; preds = %1206
  br label %1208

1208:                                             ; preds = %1207
  br label %1209

1209:                                             ; preds = %1208
  call void @llvm.lifetime.start.p0(i64 4, ptr %97) #7
  %1210 = load ptr, ptr %5, align 8, !tbaa !5
  %1211 = invoke noundef i32 @_ZN8presolve9HPresolve19removeRowSingletonsERNS_19HighsPostsolveStackE(ptr noundef nonnull align 8 dereferenceable(1720) %99, ptr noundef nonnull align 8 dereferenceable(224) %1210)
          to label %1212 unwind label %1217

1212:                                             ; preds = %1209
  store i32 %1211, ptr %97, align 4, !tbaa !9
  %1213 = load i32, ptr %97, align 4, !tbaa !9
  %1214 = icmp ne i32 %1213, 0
  br i1 %1214, label %1215, label %1221

1215:                                             ; preds = %1212
  %1216 = load i32, ptr %97, align 4, !tbaa !9
  store i32 %1216, ptr %3, align 4
  store i32 1, ptr %10, align 4
  br label %1222

1217:                                             ; preds = %1209
  %1218 = landingpad { ptr, i32 }
          cleanup
  %1219 = extractvalue { ptr, i32 } %1218, 0
  store ptr %1219, ptr %8, align 8
  %1220 = extractvalue { ptr, i32 } %1218, 1
  store i32 %1220, ptr %9, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %97) #7
  br label %1254

1221:                                             ; preds = %1212
  store i32 0, ptr %10, align 4
  br label %1222

1222:                                             ; preds = %1221, %1215
  call void @llvm.lifetime.end.p0(i64 4, ptr %97) #7
  %1223 = load i32, ptr %10, align 4
  switch i32 %1223, label %1245 [
    i32 0, label %1224
  ]

1224:                                             ; preds = %1222
  br label %1225

1225:                                             ; preds = %1224
  br label %1226

1226:                                             ; preds = %1225
  br label %1227

1227:                                             ; preds = %1226
  call void @llvm.lifetime.start.p0(i64 4, ptr %98) #7
  %1228 = load ptr, ptr %5, align 8, !tbaa !5
  %1229 = invoke noundef i32 @_ZN8presolve9HPresolve24removeDoubletonEquationsERNS_19HighsPostsolveStackE(ptr noundef nonnull align 8 dereferenceable(1720) %99, ptr noundef nonnull align 8 dereferenceable(224) %1228)
          to label %1230 unwind label %1235

1230:                                             ; preds = %1227
  store i32 %1229, ptr %98, align 4, !tbaa !9
  %1231 = load i32, ptr %98, align 4, !tbaa !9
  %1232 = icmp ne i32 %1231, 0
  br i1 %1232, label %1233, label %1239

1233:                                             ; preds = %1230
  %1234 = load i32, ptr %98, align 4, !tbaa !9
  store i32 %1234, ptr %3, align 4
  store i32 1, ptr %10, align 4
  br label %1240

1235:                                             ; preds = %1227
  %1236 = landingpad { ptr, i32 }
          cleanup
  %1237 = extractvalue { ptr, i32 } %1236, 0
  store ptr %1237, ptr %8, align 8
  %1238 = extractvalue { ptr, i32 } %1236, 1
  store i32 %1238, ptr %9, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %98) #7
  br label %1254

1239:                                             ; preds = %1230
  store i32 0, ptr %10, align 4
  br label %1240

1240:                                             ; preds = %1239, %1233
  call void @llvm.lifetime.end.p0(i64 4, ptr %98) #7
  %1241 = load i32, ptr %10, align 4
  switch i32 %1241, label %1245 [
    i32 0, label %1242
  ]

1242:                                             ; preds = %1240
  br label %1243

1243:                                             ; preds = %1242
  br label %1244

1244:                                             ; preds = %1243
  store i32 0, ptr %10, align 4
  br label %1245

1245:                                             ; preds = %1244, %1240, %1222, %1204
  call void @llvm.lifetime.end.p0(i64 8, ptr %85) #7
  br label %1246

1246:                                             ; preds = %1245, %1073
  call void @_ZNSt3mapIdiSt4lessIdESaISt4pairIKdiEEED2Ev(ptr noundef nonnull align 8 dereferenceable(48) %27) #7
  call void @llvm.lifetime.end.p0(i64 48, ptr %27) #7
  call void @llvm.lifetime.end.p0(i64 4, ptr %24) #7
  call void @llvm.lifetime.end.p0(i64 4, ptr %23) #7
  call void @llvm.lifetime.end.p0(i64 4, ptr %22) #7
  %1247 = load i32, ptr %10, align 4
  switch i32 %1247, label %1249 [
    i32 0, label %1248
  ]

1248:                                             ; preds = %1246
  store i32 0, ptr %10, align 4
  br label %1249

1249:                                             ; preds = %1248, %1246, %187
  call void @llvm.lifetime.end.p0(i64 4, ptr %21) #7
  %1250 = load i32, ptr %10, align 4
  switch i32 %1250, label %1257 [
    i32 0, label %1251
    i32 9, label %1252
  ]

1251:                                             ; preds = %1249
  br label %1252

1252:                                             ; preds = %1251, %1249
  %1253 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZN9__gnu_cxx17__normal_iteratorIPiSt6vectorIiSaIiEEEppEv(ptr noundef nonnull align 8 dereferenceable(8) %19) #7
  br label %175

1254:                                             ; preds = %1235, %1217, %1199, %1189
  call void @llvm.lifetime.end.p0(i64 8, ptr %85) #7
  br label %1255

1255:                                             ; preds = %1254, %1095, %1069, %680
  call void @_ZNSt3mapIdiSt4lessIdESaISt4pairIKdiEEED2Ev(ptr noundef nonnull align 8 dereferenceable(48) %27) #7
  call void @llvm.lifetime.end.p0(i64 48, ptr %27) #7
  call void @llvm.lifetime.end.p0(i64 4, ptr %24) #7
  call void @llvm.lifetime.end.p0(i64 4, ptr %23) #7
  call void @llvm.lifetime.end.p0(i64 4, ptr %22) #7
  br label %1256

1256:                                             ; preds = %1255, %234
  call void @llvm.lifetime.end.p0(i64 4, ptr %21) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %20) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %19) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %18) #7
  br label %1261

1257:                                             ; preds = %1249, %177
  call void @llvm.lifetime.end.p0(i64 8, ptr %20) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %19) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %18) #7
  %1258 = load i32, ptr %10, align 4
  switch i32 %1258, label %1260 [
    i32 8, label %1259
  ]

1259:                                             ; preds = %1257
  store i32 0, ptr %3, align 4
  store i32 1, ptr %10, align 4
  br label %1260

1260:                                             ; preds = %1259, %1257
  call void @llvm.lifetime.end.p0(i64 8, ptr %13) #7
  call void @_ZNSt6vectorIiSaIiEED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %12) #7
  call void @llvm.lifetime.end.p0(i64 24, ptr %12) #7
  br label %1263

1261:                                             ; preds = %1256, %164
  call void @llvm.lifetime.end.p0(i64 8, ptr %13) #7
  br label %1262

1262:                                             ; preds = %1261, %152
  call void @_ZNSt6vectorIiSaIiEED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %12) #7
  call void @llvm.lifetime.end.p0(i64 24, ptr %12) #7
  br label %1265

1263:                                             ; preds = %1260, %131, %113
  call void @_ZNSt6vectorIN8presolve19HighsPostsolveStack7NonzeroESaIS2_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %6) #7
  call void @llvm.lifetime.end.p0(i64 24, ptr %6) #7
  %1264 = load i32, ptr %3, align 4
  ret i32 %1264

1265:                                             ; preds = %1262, %126, %108
  call void @_ZNSt6vectorIN8presolve19HighsPostsolveStack7NonzeroESaIS2_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %6) #7
  call void @llvm.lifetime.end.p0(i64 24, ptr %6) #7
  br label %1266

1266:                                             ; preds = %1265
  %1267 = load ptr, ptr %8, align 8
  %1268 = load i32, ptr %9, align 4
  %1269 = insertvalue { ptr, i32 } poison, ptr %1267, 0
  %1270 = insertvalue { ptr, i32 } %1269, i32 %1268, 1
  resume { ptr, i32 } %1270

1271:                                             ; preds = %1056, %1024, %668, %636
  unreachable
}

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

; Function Attrs: mustprogress uwtable
declare dso_local void @_ZN8presolve19HighsPostsolveStack20equalityRowAdditionsI25HighsTripletPositionSliceEEviRK16HighsMatrixSliceIT_ERKSt6vectorINS0_7NonzeroESaIS9_EE(ptr noundef nonnull align 8 dereferenceable(224), i32 noundef, ptr noundef nonnull align 8 dereferenceable(28), ptr noundef nonnull align 8 dereferenceable(24)) #4 align 2

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

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

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

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

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

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

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

attributes #0 = { nocallback nofree nosync nounwind willreturn memory(argmem: readwrite) }
attributes #1 = { mustprogress nounwind uwtable "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }
attributes #2 = { 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 #3 = { 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 #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 = { nocallback nofree nosync nounwind speculatable willreturn memory(none) }
attributes #6 = { nounwind "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }
attributes #7 = { 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, !10, i64 0}
!10 = !{!"_ZTSN8presolve9HPresolve6ResultE", !7, i64 0}
!11 = !{!12, !13, i64 32}
!12 = !{!"_ZTSN8presolve9HPresolveE", !6, i64 0, !6, i64 8, !6, i64 16, !6, i64 24, !13, i64 32, !14, i64 40, !18, i64 64, !18, i64 88, !18, i64 112, !18, i64 136, !18, i64 160, !18, i64 184, !18, i64 208, !18, i64 232, !18, i64 256, !18, i64 280, !18, i64 304, !18, i64 328, !18, i64 352, !18, i64 376, !14, i64 400, !14, i64 424, !18, i64 448, !18, i64 472, !14, i64 496, !14, i64 520, !14, i64 544, !14, i64 568, !18, i64 592, !18, i64 616, !22, i64 640, !22, i64 664, !26, i64 688, !26, i64 928, !18, i64 1168, !31, i64 1192, !18, i64 1216, !31, i64 1240, !35, i64 1264, !39, i64 1288, !45, i64 1344, !53, i64 1392, !57, i64 1416, !41, i64 1424, !18, i64 1432, !18, i64 1456, !31, i64 1480, !31, i64 1504, !58, i64 1528, !41, i64 1552, !62, i64 1560, !62, i64 1564, !62, i64 1568, !62, i64 1572, !62, i64 1576, !62, i64 1580, !57, i64 1584, !63, i64 1588, !64, i64 1592}
!13 = !{!"double", !7, i64 0}
!14 = !{!"_ZTSSt6vectorIdSaIdEE", !15, i64 0}
!15 = !{!"_ZTSSt12_Vector_baseIdSaIdEE", !16, i64 0}
!16 = !{!"_ZTSNSt12_Vector_baseIdSaIdEE12_Vector_implE", !17, i64 0}
!17 = !{!"_ZTSNSt12_Vector_baseIdSaIdEE17_Vector_impl_dataE", !6, i64 0, !6, i64 8, !6, i64 16}
!18 = !{!"_ZTSSt6vectorIiSaIiEE", !19, i64 0}
!19 = !{!"_ZTSSt12_Vector_baseIiSaIiEE", !20, i64 0}
!20 = !{!"_ZTSNSt12_Vector_baseIiSaIiEE12_Vector_implE", !21, i64 0}
!21 = !{!"_ZTSNSt12_Vector_baseIiSaIiEE17_Vector_impl_dataE", !6, i64 0, !6, i64 8, !6, i64 16}
!22 = !{!"_ZTSSt6vectorISt3setIiSt4lessIiESaIiEESaIS4_EE", !23, i64 0}
!23 = !{!"_ZTSSt12_Vector_baseISt3setIiSt4lessIiESaIiEESaIS4_EE", !24, i64 0}
!24 = !{!"_ZTSNSt12_Vector_baseISt3setIiSt4lessIiESaIiEESaIS4_EE12_Vector_implE", !25, i64 0}
!25 = !{!"_ZTSNSt12_Vector_baseISt3setIiSt4lessIiESaIiEESaIS4_EE17_Vector_impl_dataE", !6, i64 0, !6, i64 8, !6, i64 16}
!26 = !{!"_ZTS20HighsLinearSumBounds", !27, i64 0, !27, i64 24, !18, i64 48, !18, i64 72, !27, i64 96, !27, i64 120, !18, i64 144, !18, i64 168, !6, i64 192, !6, i64 200, !6, i64 208, !6, i64 216, !6, i64 224, !6, i64 232}
!27 = !{!"_ZTSSt6vectorI12HighsCDoubleSaIS0_EE", !28, i64 0}
!28 = !{!"_ZTSSt12_Vector_baseI12HighsCDoubleSaIS0_EE", !29, i64 0}
!29 = !{!"_ZTSNSt12_Vector_baseI12HighsCDoubleSaIS0_EE12_Vector_implE", !30, i64 0}
!30 = !{!"_ZTSNSt12_Vector_baseI12HighsCDoubleSaIS0_EE17_Vector_impl_dataE", !6, i64 0, !6, i64 8, !6, i64 16}
!31 = !{!"_ZTSSt6vectorIhSaIhEE", !32, i64 0}
!32 = !{!"_ZTSSt12_Vector_baseIhSaIhEE", !33, i64 0}
!33 = !{!"_ZTSNSt12_Vector_baseIhSaIhEE12_Vector_implE", !34, i64 0}
!34 = !{!"_ZTSNSt12_Vector_baseIhSaIhEE17_Vector_impl_dataE", !6, i64 0, !6, i64 8, !6, i64 16}
!35 = !{!"_ZTSSt6vectorISt4pairIiiESaIS1_EE", !36, i64 0}
!36 = !{!"_ZTSSt12_Vector_baseISt4pairIiiESaIS1_EE", !37, i64 0}
!37 = !{!"_ZTSNSt12_Vector_baseISt4pairIiiESaIS1_EE12_Vector_implE", !38, i64 0}
!38 = !{!"_ZTSNSt12_Vector_baseISt4pairIiiESaIS1_EE17_Vector_impl_dataE", !6, i64 0, !6, i64 8, !6, i64 16}
!39 = !{!"_ZTSSt13unordered_mapIi13HighsHashTreeISt4pairIiiEdESt4hashIiESt8equal_toIiESaIS1_IKiS3_EEE", !40, i64 0}
!40 = !{!"_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, !41, i64 8, !42, i64 16, !41, i64 24, !43, i64 32, !6, i64 48}
!41 = !{!"long", !7, i64 0}
!42 = !{!"_ZTSNSt8__detail15_Hash_node_baseE", !6, i64 0}
!43 = !{!"_ZTSNSt8__detail20_Prime_rehash_policyE", !44, i64 0, !41, i64 8}
!44 = !{!"float", !7, i64 0}
!45 = !{!"_ZTSSt3setISt4pairIiiESt4lessIS1_ESaIS1_EE", !46, i64 0}
!46 = !{!"_ZTSSt8_Rb_treeISt4pairIiiES1_St9_IdentityIS1_ESt4lessIS1_ESaIS1_EE", !47, i64 0}
!47 = !{!"_ZTSNSt8_Rb_treeISt4pairIiiES1_St9_IdentityIS1_ESt4lessIS1_ESaIS1_EE13_Rb_tree_implIS5_Lb1EEE", !48, i64 0, !50, i64 8}
!48 = !{!"_ZTSSt20_Rb_tree_key_compareISt4lessISt4pairIiiEEE", !49, i64 0}
!49 = !{!"_ZTSSt4lessISt4pairIiiEE"}
!50 = !{!"_ZTSSt15_Rb_tree_header", !51, i64 0, !41, i64 32}
!51 = !{!"_ZTSSt18_Rb_tree_node_base", !52, i64 0, !6, i64 8, !6, i64 16, !6, i64 24}
!52 = !{!"_ZTSSt14_Rb_tree_color", !7, i64 0}
!53 = !{!"_ZTSSt6vectorISt23_Rb_tree_const_iteratorISt4pairIiiEESaIS3_EE", !54, i64 0}
!54 = !{!"_ZTSSt12_Vector_baseISt23_Rb_tree_const_iteratorISt4pairIiiEESaIS3_EE", !55, i64 0}
!55 = !{!"_ZTSNSt12_Vector_baseISt23_Rb_tree_const_iteratorISt4pairIiiEESaIS3_EE12_Vector_implE", !56, i64 0}
!56 = !{!"_ZTSNSt12_Vector_baseISt23_Rb_tree_const_iteratorISt4pairIiiEESaIS3_EE17_Vector_impl_dataE", !6, i64 0, !6, i64 8, !6, i64 16}
!57 = !{!"bool", !7, i64 0}
!58 = !{!"_ZTSSt6vectorItSaItEE", !59, i64 0}
!59 = !{!"_ZTSSt12_Vector_baseItSaItEE", !60, i64 0}
!60 = !{!"_ZTSNSt12_Vector_baseItSaItEE12_Vector_implE", !61, i64 0}
!61 = !{!"_ZTSNSt12_Vector_baseItSaItEE17_Vector_impl_dataE", !6, i64 0, !6, i64 8, !6, i64 16}
!62 = !{!"int", !7, i64 0}
!63 = !{!"_ZTS19HighsPresolveStatus", !7, i64 0}
!64 = !{!"_ZTS17HPresolveAnalysis", !6, i64 0, !6, i64 8, !6, i64 16, !6, i64 24, !6, i64 32, !62, i64 40, !62, i64 44, !65, i64 48, !57, i64 88, !57, i64 89, !62, i64 92, !62, i64 96, !62, i64 100, !71, i64 104}
!65 = !{!"_ZTSSt6vectorIbSaIbEE", !66, i64 0}
!66 = !{!"_ZTSSt13_Bvector_baseISaIbEE", !67, i64 0}
!67 = !{!"_ZTSNSt13_Bvector_baseISaIbEE13_Bvector_implE", !68, i64 0}
!68 = !{!"_ZTSNSt13_Bvector_baseISaIbEE18_Bvector_impl_dataE", !69, i64 0, !69, i64 16, !6, i64 32}
!69 = !{!"_ZTSSt13_Bit_iterator", !70, i64 0}
!70 = !{!"_ZTSSt18_Bit_iterator_base", !6, i64 0, !62, i64 8}
!71 = !{!"_ZTS16HighsPresolveLog", !72, i64 0}
!72 = !{!"_ZTSSt6vectorI20HighsPresolveRuleLogSaIS0_EE", !73, i64 0}
!73 = !{!"_ZTSSt12_Vector_baseI20HighsPresolveRuleLogSaIS0_EE", !74, i64 0}
!74 = !{!"_ZTSNSt12_Vector_baseI20HighsPresolveRuleLogSaIS0_EE12_Vector_implE", !75, i64 0}
!75 = !{!"_ZTSNSt12_Vector_baseI20HighsPresolveRuleLogSaIS0_EE17_Vector_impl_dataE", !6, i64 0, !6, i64 8, !6, i64 16}
!76 = !{!13, !13, i64 0}
!77 = !{!62, !62, i64 0}
!78 = !{!7, !7, i64 0}
!79 = !{!12, !6, i64 0}
!80 = !{!41, !41, i64 0}
!81 = distinct !{!81, !82}
!82 = !{!"llvm.loop.mustprogress"}
!83 = !{!84, !84, i64 0}
!84 = !{!"_ZTS12HighsVarType", !7, i64 0}
!85 = !{!86, !13, i64 0}
!86 = !{!"_ZTSSt4pairIKdiE", !13, i64 0, !62, i64 8}
!87 = !{!86, !62, i64 8}
!88 = !{!12, !6, i64 8}
!89 = !{!90, !13, i64 264}
!90 = !{!"_ZTS18HighsOptionsStruct", !91, i64 8, !91, i64 40, !91, i64 72, !91, i64 104, !13, i64 136, !91, i64 144, !91, i64 176, !62, i64 208, !91, i64 216, !13, i64 248, !13, i64 256, !13, i64 264, !13, i64 272, !13, i64 280, !13, i64 288, !13, i64 296, !13, i64 304, !13, i64 312, !13, i64 320, !13, i64 328, !62, i64 336, !62, i64 340, !62, i64 344, !62, i64 348, !62, i64 352, !62, i64 356, !62, i64 360, !62, i64 364, !62, i64 368, !62, i64 372, !62, i64 376, !62, i64 380, !62, i64 384, !62, i64 388, !91, i64 392, !57, i64 424, !57, i64 425, !57, i64 426, !62, i64 428, !62, i64 432, !91, i64 440, !57, i64 472, !57, i64 473, !57, i64 474, !62, i64 476, !57, i64 480, !57, i64 481, !62, i64 484, !62, i64 488, !13, i64 496, !62, i64 504, !62, i64 508, !62, i64 512, !57, i64 516, !62, i64 520, !57, i64 524, !57, i64 525, !57, i64 526, !57, i64 527, !57, i64 528, !57, i64 529, !57, i64 530, !62, i64 532, !62, i64 536, !62, i64 540, !62, i64 544, !62, i64 548, !62, i64 552, !62, i64 556, !62, i64 560, !62, i64 564, !62, i64 568, !62, i64 572, !62, i64 576, !62, i64 580, !62, i64 584, !62, i64 588, !57, i64 592, !57, i64 593, !57, i64 594, !57, i64 595, !13, i64 600, !13, i64 608, !13, i64 616, !13, i64 624, !13, i64 632, !13, i64 640, !13, i64 648, !13, i64 656, !13, i64 664, !13, i64 672, !13, i64 680, !57, i64 688, !57, i64 689, !57, i64 690, !57, i64 691, !62, i64 692, !13, i64 696, !57, i64 704, !57, i64 705, !91, i64 712, !13, i64 744, !62, i64 752, !62, i64 756, !57, i64 760, !57, i64 761, !57, i64 762, !57, i64 763, !62, i64 764, !62, i64 768, !62, i64 772, !62, i64 776, !62, i64 780, !62, i64 784, !62, i64 788, !62, i64 792, !62, i64 796, !62, i64 800, !62, i64 804, !13, i64 808, !13, i64 816, !13, i64 824, !13, i64 832, !13, i64 840, !57, i64 848, !57, i64 849, !91, i64 856, !57, i64 888, !62, i64 892, !93, i64 896}
!91 = !{!"_ZTSNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE", !92, i64 0, !41, i64 8, !7, i64 16}
!92 = !{!"_ZTSNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE12_Alloc_hiderE", !6, i64 0}
!93 = !{!"_ZTS15HighsLogOptions", !6, i64 0, !6, i64 8, !6, i64 16, !6, i64 24, !6, i64 32, !6, i64 40, !94, i64 48, !6, i64 80, !57, i64 88}
!94 = !{!"_ZTSSt8functionIFviRKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEPK20HighsCallbackDataOutP19HighsCallbackDataInPvEE", !95, i64 0, !6, i64 24}
!95 = !{!"_ZTSSt14_Function_base", !7, i64 0, !6, i64 16}
!96 = !{!57, !57, i64 0}
!97 = !{i8 0, i8 2}
!98 = !{}
!99 = !{!100, !62, i64 0}
!100 = !{!"_ZTSN8presolve19HighsPostsolveStack7NonzeroE", !62, i64 0, !13, i64 8}
!101 = !{!100, !13, i64 8}


; Optimized IR (opt -passes='default<O3>'):
target datalayout = "e-m:e-p270:32:32-p271:32:32-p272:64:64-i64:64-i128:128-f80:128-n8:16:32:64-S128"
target triple = "x86_64-unknown-linux-gnu"

%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 }
%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] }>
%"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 }
%"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 }
%"struct.std::_Rb_tree_const_iterator.408" = type { ptr }
%"class.__gnu_cxx::__normal_iterator" = type { ptr }
%"class.std::map.539" = type { %"class.std::_Rb_tree.540" }
%"class.std::_Rb_tree.540" = type { %"struct.std::_Rb_tree<double, std::pair<const double, int>, std::_Select1st<std::pair<const double, int>>, std::less<double>>::_Rb_tree_impl" }
%"struct.std::_Rb_tree<double, std::pair<const double, int>, std::_Select1st<std::pair<const double, int>>, std::less<double>>::_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 }
%"struct.std::_Rb_tree_iterator.545" = type { ptr }
%"class.__gnu_cxx::__normal_iterator.552" = type { ptr }

@.str.55 = external hidden unnamed_addr constant [76 x i8], align 1
@.str.147 = external hidden unnamed_addr constant [19 x i8], align 1
@.str.149 = external hidden unnamed_addr constant [53 x i8], align 1
@__PRETTY_FUNCTION__._ZN8presolve9HPresolve8sparsifyERNS_19HighsPostsolveStackE = external hidden unnamed_addr constant [71 x i8], align 1
@.str.171 = external hidden unnamed_addr constant [48 x i8], align 1
@.str.172 = external hidden unnamed_addr constant [31 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 nonnull align 1 dereferenceable(1) ptr @_ZNSt6vectorI12HighsVarTypeSaIS0_EEixEm(ptr noundef nonnull align 8 dereferenceable(24), i64 noundef) local_unnamed_addr #1 align 2

; Function Attrs: mustprogress nounwind uwtable
declare dso_local noundef 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: inlinehint mustprogress nounwind uwtable
declare dso_local noundef double @_ZSt3absd(double noundef) local_unnamed_addr #2

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

; 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 nocallback nofree nosync nounwind speculatable willreturn memory(none)
declare double @llvm.fmuladd.f64(double, double, double) #5

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

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

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

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

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

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

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

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

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

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

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

; Function Attrs: mustprogress uwtable
declare dso_local noundef i32 @_ZN8presolve9HPresolve11checkLimitsERNS_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 zeroext i1 @_ZStneRKSt23_Rb_tree_const_iteratorISt4pairIiiEES4_(ptr noundef nonnull align 8 dereferenceable(8), ptr noundef nonnull align 8 dereferenceable(8)) local_unnamed_addr #1

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

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

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

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

; Function Attrs: mustprogress uwtable
define dso_local noundef i32 @_ZN8presolve9HPresolve8sparsifyERNS_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.15", align 8
  %4 = alloca %"class.std::vector.5", align 8
  %5 = alloca %"struct.std::_Rb_tree_const_iterator.408", align 8
  %6 = alloca %"struct.std::_Rb_tree_const_iterator.408", align 8
  %7 = alloca %"class.__gnu_cxx::__normal_iterator", align 8
  %8 = alloca %"class.__gnu_cxx::__normal_iterator", align 8
  %9 = alloca i32, align 4
  %10 = alloca i32, align 4
  %11 = alloca %"class.std::map.539", align 8
  %12 = alloca %struct.HighsTripletListSlice, align 8
  %13 = alloca %"class.HighsMatrixSlice<HighsTripletListSlice>::iterator", align 8
  %14 = alloca %"class.HighsMatrixSlice<HighsTripletListSlice>::iterator", align 8
  %15 = alloca i32, align 4
  %16 = alloca %struct.HighsTripletPositionSlice, align 8
  %17 = alloca %"class.HighsMatrixSlice<HighsTripletPositionSlice>::iterator", align 8
  %18 = alloca %"class.HighsMatrixSlice<HighsTripletPositionSlice>::iterator", align 8
  %19 = alloca double, align 8
  %20 = alloca %"struct.std::_Rb_tree_iterator.545", align 8
  %21 = alloca double, align 8
  %22 = alloca %"struct.std::_Rb_tree_iterator.545", align 8
  %23 = alloca i32, align 4
  %24 = alloca double, align 8
  %25 = alloca %"struct.std::_Rb_tree_iterator.545", align 8
  %26 = alloca %"struct.std::_Rb_tree_iterator.545", align 8
  %27 = alloca %struct.HighsTripletListSlice, align 8
  %28 = alloca %"class.HighsMatrixSlice<HighsTripletListSlice>::iterator", align 8
  %29 = alloca %"class.HighsMatrixSlice<HighsTripletListSlice>::iterator", align 8
  %30 = alloca i32, align 4
  %31 = alloca %struct.HighsTripletPositionSlice, align 8
  %32 = alloca %"class.HighsMatrixSlice<HighsTripletPositionSlice>::iterator", align 8
  %33 = alloca %"class.HighsMatrixSlice<HighsTripletPositionSlice>::iterator", align 8
  %34 = alloca double, align 8
  %35 = alloca %"struct.std::_Rb_tree_iterator.545", align 8
  %36 = alloca double, align 8
  %37 = alloca %"struct.std::_Rb_tree_iterator.545", align 8
  %38 = alloca i32, align 4
  %39 = alloca double, align 8
  %40 = alloca %"struct.std::_Rb_tree_iterator.545", align 8
  %41 = alloca %"struct.std::_Rb_tree_iterator.545", align 8
  %42 = alloca %struct.HighsTripletPositionSlice, align 8
  %43 = alloca %"class.__gnu_cxx::__normal_iterator.552", align 8
  %44 = alloca %"class.__gnu_cxx::__normal_iterator.552", align 8
  %45 = alloca %"class.__gnu_cxx::__normal_iterator", align 8
  %46 = alloca %"class.__gnu_cxx::__normal_iterator", align 8
  call void @llvm.lifetime.start.p0(i64 24, ptr nonnull %3) #7
  call void @_ZNSt6vectorIN8presolve19HighsPostsolveStack7NonzeroESaIS2_EEC2Ev(ptr noundef nonnull align 8 dereferenceable(24) %3) #7
  %47 = invoke noundef i32 @_ZN8presolve9HPresolve19removeRowSingletonsERNS_19HighsPostsolveStackE(ptr noundef nonnull align 8 dereferenceable(1720) %0, ptr noundef nonnull align 8 dereferenceable(224) %1)
          to label %48 unwind label %49

48:                                               ; preds = %2
  %.not = icmp eq i32 %47, 0
  br i1 %.not, label %51, label %591

49:                                               ; preds = %2
  %50 = landingpad { ptr, i32 }
          cleanup
  br label %592

51:                                               ; preds = %48
  %52 = invoke noundef i32 @_ZN8presolve9HPresolve24removeDoubletonEquationsERNS_19HighsPostsolveStackE(ptr noundef nonnull align 8 dereferenceable(1720) %0, ptr noundef nonnull align 8 dereferenceable(224) %1)
          to label %53 unwind label %54

53:                                               ; preds = %51
  %.not280 = icmp eq i32 %52, 0
  br i1 %.not280, label %56, label %591

54:                                               ; preds = %51
  %55 = landingpad { ptr, i32 }
          cleanup
  br label %592

56:                                               ; preds = %53
  call void @llvm.lifetime.start.p0(i64 24, ptr nonnull %4) #7
  call void @_ZNSt6vectorIiSaIiEEC2Ev(ptr noundef nonnull align 8 dereferenceable(24) %4) #7
  %57 = getelementptr inbounds i8, ptr %0, i64 1344
  %58 = call noundef i64 @_ZNKSt3setISt4pairIiiESt4lessIS1_ESaIS1_EE4sizeEv(ptr noundef nonnull align 8 dereferenceable(48) %57) #7
  invoke void @_ZNSt6vectorIiSaIiEE7reserveEm(ptr noundef nonnull align 8 dereferenceable(24) %4, i64 noundef %58)
          to label %59 unwind label %76

59:                                               ; preds = %56
  %60 = getelementptr inbounds i8, ptr %0, i64 32
  %61 = load double, ptr %60, align 8, !tbaa !5
  %62 = call double @sqrt(double noundef %61) #7
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %5) #7
  %63 = call ptr @_ZNKSt3setISt4pairIiiESt4lessIS1_ESaIS1_EE5beginEv(ptr noundef nonnull align 8 dereferenceable(48) %57) #7
  store ptr %63, ptr %5, align 8
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %6) #7
  %64 = call ptr @_ZNKSt3setISt4pairIiiESt4lessIS1_ESaIS1_EE3endEv(ptr noundef nonnull align 8 dereferenceable(48) %57) #7
  store ptr %64, ptr %6, align 8
  %65 = call noundef zeroext i1 @_ZStneRKSt23_Rb_tree_const_iteratorISt4pairIiiEES4_(ptr noundef nonnull align 8 dereferenceable(8) %5, ptr noundef nonnull align 8 dereferenceable(8) %6) #7
  br i1 %65, label %.lr.ph, label %._crit_edge

._crit_edge:                                      ; preds = %81, %59
  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 @llvm.lifetime.start.p0(i64 8, ptr nonnull %7) #7
  %66 = call ptr @_ZNSt6vectorIiSaIiEE5beginEv(ptr noundef nonnull align 8 dereferenceable(24) %4) #7
  store ptr %66, ptr %7, align 8
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %8) #7
  %67 = call ptr @_ZNSt6vectorIiSaIiEE3endEv(ptr noundef nonnull align 8 dereferenceable(24) %4) #7
  store ptr %67, ptr %8, align 8
  %68 = call noundef zeroext i1 @_ZN9__gnu_cxxneIPiSt6vectorIiSaIiEEEEbRKNS_17__normal_iteratorIT_T0_EESA_(ptr noundef nonnull align 8 dereferenceable(8) %7, ptr noundef nonnull align 8 dereferenceable(8) %8) #7
  br i1 %68, label %.lr.ph439, label %.loopexit

.lr.ph439:                                        ; preds = %._crit_edge
  %69 = getelementptr inbounds i8, ptr %0, i64 1480
  %70 = getelementptr inbounds i8, ptr %0, i64 88
  %71 = getelementptr inbounds i8, ptr %0, i64 352
  %72 = getelementptr inbounds i8, ptr %0, i64 328
  %73 = getelementptr inbounds i8, ptr %0, i64 280
  %74 = getelementptr inbounds i8, ptr %0, i64 40
  %75 = getelementptr inbounds i8, ptr %0, i64 8
  br label %86

76:                                               ; preds = %56
  %77 = landingpad { ptr, i32 }
          cleanup
  br label %590

.lr.ph:                                           ; preds = %59, %81
  %78 = call noundef nonnull align 4 dereferenceable(8) ptr @_ZNKSt23_Rb_tree_const_iteratorISt4pairIiiEEdeEv(ptr noundef nonnull align 8 dereferenceable(8) %5) #7
  %79 = getelementptr inbounds i8, ptr %78, i64 4
  %80 = invoke noundef nonnull align 4 dereferenceable(4) ptr @_ZNSt6vectorIiSaIiEE12emplace_backIJRKiEEERiDpOT_(ptr noundef nonnull align 8 dereferenceable(24) %4, ptr noundef nonnull align 4 dereferenceable(4) %79)
          to label %81 unwind label %84

81:                                               ; preds = %.lr.ph
  %82 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt23_Rb_tree_const_iteratorISt4pairIiiEEppEv(ptr noundef nonnull align 8 dereferenceable(8) %5) #7
  %83 = call noundef zeroext i1 @_ZStneRKSt23_Rb_tree_const_iteratorISt4pairIiiEES4_(ptr noundef nonnull align 8 dereferenceable(8) %5, ptr noundef nonnull align 8 dereferenceable(8) %6) #7
  br i1 %83, label %.lr.ph, label %._crit_edge

84:                                               ; preds = %.lr.ph
  %85 = landingpad { ptr, i32 }
          cleanup
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %6) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %5) #7
  br label %590

86:                                               ; preds = %.lr.ph439, %.thread342
  %87 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNK9__gnu_cxx17__normal_iteratorIPiSt6vectorIiSaIiEEEdeEv(ptr noundef nonnull align 8 dereferenceable(8) %7) #7
  %88 = load i32, ptr %87, align 4, !tbaa !73
  %89 = sext i32 %88 to i64
  %90 = call noundef nonnull align 1 dereferenceable(1) ptr @_ZNSt6vectorIhSaIhEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %69, i64 noundef %89) #7
  %91 = load i8, ptr %90, align 1, !tbaa !74
  %.not281 = icmp eq i8 %91, 0
  br i1 %.not281, label %92, label %.thread342

92:                                               ; preds = %86
  %93 = call noundef nonnull align 1 dereferenceable(1) ptr @_ZNSt6vectorIhSaIhEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %69, i64 noundef %89) #7
  %94 = load i8, ptr %93, align 1, !tbaa !74
  %.not282 = icmp eq i8 %94, 0
  br i1 %.not282, label %96, label %95

95:                                               ; preds = %92
  call void @__assert_fail(ptr noundef nonnull @.str.147, ptr noundef nonnull @.str.55, i32 noundef 6648, ptr noundef nonnull @__PRETTY_FUNCTION__._ZN8presolve9HPresolve8sparsifyERNS_19HighsPostsolveStackE) #8
  unreachable

96:                                               ; preds = %92
  %97 = load ptr, ptr %0, align 8, !tbaa !75
  %98 = getelementptr inbounds i8, ptr %97, i64 80
  %99 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt6vectorIdSaIdEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %98, i64 noundef %89) #7
  %100 = load double, ptr %99, align 8, !tbaa !76
  %101 = load ptr, ptr %0, align 8, !tbaa !75
  %102 = getelementptr inbounds i8, ptr %101, i64 104
  %103 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt6vectorIdSaIdEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %102, i64 noundef %89) #7
  %104 = load double, ptr %103, align 8, !tbaa !76
  %105 = fcmp oeq double %100, %104
  br i1 %105, label %107, label %106

106:                                              ; preds = %96
  call void @__assert_fail(ptr noundef nonnull @.str.149, ptr noundef nonnull @.str.55, i32 noundef 6649, ptr noundef nonnull @__PRETTY_FUNCTION__._ZN8presolve9HPresolve8sparsifyERNS_19HighsPostsolveStackE) #8
  unreachable

107:                                              ; preds = %96
  invoke void @_ZN8presolve9HPresolve8storeRowEi(ptr noundef nonnull align 8 dereferenceable(1720) %0, i32 noundef %88)
          to label %108 unwind label %125

108:                                              ; preds = %107
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %9) #7
  store i32 -1, ptr %9, align 4, !tbaa !73
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %10) #7
  %109 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNSt6vectorIiSaIiEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %71, i64 noundef 0) #7
  %110 = load i32, ptr %109, align 4, !tbaa !73
  %111 = sext i32 %110 to i64
  %112 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNSt6vectorIiSaIiEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %70, i64 noundef %111) #7
  %113 = load i32, ptr %112, align 4, !tbaa !73
  store i32 %113, ptr %10, align 4, !tbaa !73
  %114 = call noundef i64 @_ZNKSt6vectorIiSaIiEE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24) %71) #7
  %115 = icmp ugt i64 %114, 1
  br i1 %115, label %.lr.ph399, label %._crit_edge400

._crit_edge400:                                   ; preds = %140, %108
  %116 = load i32, ptr %9, align 4, !tbaa !73
  %117 = sext i32 %116 to i64
  %118 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNSt6vectorIiSaIiEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %72, i64 noundef %117) #7
  %119 = load i32, ptr %118, align 4, !tbaa !73
  %120 = load i32, ptr %10, align 4, !tbaa !73
  %121 = sext i32 %120 to i64
  %122 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNSt6vectorIiSaIiEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %72, i64 noundef %121) #7
  %123 = load i32, ptr %122, align 4, !tbaa !73
  %124 = icmp slt i32 %119, %123
  br i1 %124, label %144, label %145

125:                                              ; preds = %107
  %126 = landingpad { ptr, i32 }
          cleanup
  br label %589

.lr.ph399:                                        ; preds = %108, %140
  %.0232397 = phi i32 [ %.1233, %140 ], [ 2147483647, %108 ]
  %.0234396 = phi i64 [ %141, %140 ], [ 1, %108 ]
  %127 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNSt6vectorIiSaIiEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %71, i64 noundef %.0234396) #7
  %128 = load i32, ptr %127, align 4, !tbaa !73
  %129 = sext i32 %128 to i64
  %130 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNSt6vectorIiSaIiEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %70, i64 noundef %129) #7
  %131 = load i32, ptr %130, align 4, !tbaa !73
  %132 = sext i32 %131 to i64
  %133 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNSt6vectorIiSaIiEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %72, i64 noundef %132) #7
  %134 = load i32, ptr %133, align 4, !tbaa !73
  %135 = icmp slt i32 %134, %.0232397
  br i1 %135, label %136, label %140

136:                                              ; preds = %.lr.ph399
  %137 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNSt6vectorIiSaIiEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %72, i64 noundef %132) #7
  %138 = load i32, ptr %137, align 4, !tbaa !73
  %139 = load i32, ptr %10, align 4, !tbaa !73
  store i32 %139, ptr %9, align 4, !tbaa !73
  store i32 %131, ptr %10, align 4, !tbaa !73
  br label %140

140:                                              ; preds = %136, %.lr.ph399
  %.1233 = phi i32 [ %138, %136 ], [ %.0232397, %.lr.ph399 ]
  %141 = add nuw i64 %.0234396, 1
  %142 = call noundef i64 @_ZNKSt6vectorIiSaIiEE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24) %71) #7
  %143 = icmp ult i64 %141, %142
  br i1 %143, label %.lr.ph399, label %._crit_edge400, !llvm.loop !77

144:                                              ; preds = %._crit_edge400
  call void @_ZSt4swapIiENSt9enable_ifIXsr6__and_ISt6__not_ISt15__is_tuple_likeIT_EESt21is_move_constructibleIS3_ESt18is_move_assignableIS3_EEE5valueEvE4typeERS3_SC_(ptr noundef nonnull align 4 dereferenceable(4) %10, ptr noundef nonnull align 4 dereferenceable(4) %9) #7
  br label %145

145:                                              ; preds = %144, %._crit_edge400
  %146 = load i32, ptr %10, align 4, !tbaa !73
  %147 = icmp ne i32 %146, -1
  %148 = load i32, ptr %9, align 4
  %149 = icmp ne i32 %148, -1
  %150 = select i1 %147, i1 %149, i1 false
  br i1 %150, label %152, label %151

151:                                              ; preds = %145
  call void @__assert_fail(ptr noundef nonnull @.str.171, ptr noundef nonnull @.str.55, i32 noundef 6668, ptr noundef nonnull @__PRETTY_FUNCTION__._ZN8presolve9HPresolve8sparsifyERNS_19HighsPostsolveStackE) #8
  unreachable

152:                                              ; preds = %145
  call void @llvm.lifetime.start.p0(i64 48, ptr nonnull %11) #7
  call void @_ZNSt3mapIdiSt4lessIdESaISt4pairIKdiEEEC2Ev(ptr noundef nonnull align 8 dereferenceable(48) %11) #7
  call void @_ZNSt6vectorIN8presolve19HighsPostsolveStack7NonzeroESaIS2_EE5clearEv(ptr noundef nonnull align 8 dereferenceable(24) %3) #7
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %12) #7
  %153 = load i32, ptr %10, align 4, !tbaa !73
  invoke void @_ZNK8presolve9HPresolve15getColumnVectorEi(ptr dead_on_unwind nonnull writable sret(%struct.HighsTripletListSlice) align 8 %12, ptr noundef nonnull align 8 dereferenceable(1720) %0, i32 noundef %153)
          to label %154 unwind label %163

154:                                              ; preds = %152
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %13) #7
  invoke void @_ZNK16HighsMatrixSliceI21HighsTripletListSliceE5beginEv(ptr dead_on_unwind nonnull writable sret(%"class.HighsMatrixSlice<HighsTripletListSlice>::iterator") align 8 %13, ptr noundef nonnull align 8 dereferenceable(28) %12)
          to label %155 unwind label %165

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

.preheader370:                                    ; preds = %155
  %156 = call noundef zeroext i1 @_ZNK16HighsMatrixSliceI21HighsTripletListSliceE8iteratorneERKS2_(ptr noundef nonnull align 8 dereferenceable(28) %13, ptr noundef nonnull align 8 dereferenceable(28) %14)
  br i1 %156, label %.lr.ph414, label %._crit_edge415

._crit_edge415:                                   ; preds = %327, %.preheader370
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %14) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %13) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %12) #7
  %157 = load ptr, ptr %0, align 8, !tbaa !75
  %158 = getelementptr inbounds i8, ptr %157, i64 376
  %159 = load i32, ptr %10, align 4, !tbaa !73
  %160 = sext i32 %159 to i64
  %161 = call noundef nonnull align 1 dereferenceable(1) ptr @_ZNSt6vectorI12HighsVarTypeSaIS0_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %158, i64 noundef %160) #7
  %162 = load i8, ptr %161, align 1, !tbaa !79
  %.not283 = icmp eq i8 %162, 1
  br i1 %.not283, label %333, label %348

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

165:                                              ; preds = %154
  %166 = landingpad { ptr, i32 }
          cleanup
  br label %332

167:                                              ; preds = %155
  %168 = landingpad { ptr, i32 }
          cleanup
  br label %331

.lr.ph414:                                        ; preds = %.preheader370, %327
  %169 = call noundef nonnull align 8 dereferenceable(16) ptr @_ZN16HighsMatrixSliceI21HighsTripletListSliceE8iteratordeEv(ptr noundef nonnull align 8 dereferenceable(28) %13)
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %15) #7
  %170 = call noundef i32 @_ZNK17HighsSliceNonzero5indexEv(ptr noundef nonnull align 8 dereferenceable(16) %169)
  store i32 %170, ptr %15, align 4, !tbaa !73
  %171 = icmp eq i32 %170, %88
  br i1 %171, label %327, label %172

172:                                              ; preds = %.lr.ph414
  call void @_ZNSt3mapIdiSt4lessIdESaISt4pairIKdiEEE5clearEv(ptr noundef nonnull align 8 dereferenceable(48) %11) #7
  %173 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNSt6vectorIiSaIiEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %73, i64 noundef %89) #7
  %174 = load i32, ptr %173, align 4, !tbaa !73
  %175 = icmp eq i32 %174, 0
  br i1 %175, label %176, label %181

176:                                              ; preds = %172
  %177 = load i32, ptr %15, align 4, !tbaa !73
  %178 = sext i32 %177 to i64
  %179 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNSt6vectorIiSaIiEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %73, i64 noundef %178) #7
  %180 = load i32, ptr %179, align 4, !tbaa !73
  %.not303 = icmp eq i32 %180, 0
  %spec.select = zext i1 %.not303 to i32
  br label %181

181:                                              ; preds = %176, %172
  %.0240 = phi i32 [ 1, %172 ], [ %spec.select, %176 ]
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %16) #7
  invoke void @_ZNK8presolve9HPresolve12getStoredRowEv(ptr dead_on_unwind nonnull writable sret(%struct.HighsTripletPositionSlice) align 8 %16, ptr noundef nonnull align 8 dereferenceable(1720) %0)
          to label %182 unwind label %185

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

183:                                              ; preds = %182
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %18) #7
  invoke void @_ZNK16HighsMatrixSliceI25HighsTripletPositionSliceE3endEv(ptr dead_on_unwind nonnull writable sret(%"class.HighsMatrixSlice<HighsTripletPositionSlice>::iterator") align 8 %18, ptr noundef nonnull align 8 dereferenceable(28) %16)
          to label %.preheader368 unwind label %189

.preheader368:                                    ; preds = %183
  %184 = call noundef zeroext i1 @_ZNK16HighsMatrixSliceI25HighsTripletPositionSliceE8iteratorneERKS2_(ptr noundef nonnull align 8 dereferenceable(28) %17, ptr noundef nonnull align 8 dereferenceable(28) %18)
  br i1 %184, label %.lr.ph403, label %.thread.thread.thread453

.thread.thread.thread453:                         ; preds = %.preheader368
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %18) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %17) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %16) #7
  br label %290

185:                                              ; preds = %181
  %186 = landingpad { ptr, i32 }
          cleanup
  br label %330

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

189:                                              ; preds = %183
  %190 = landingpad { ptr, i32 }
          cleanup
  br label %288

.lr.ph403:                                        ; preds = %.preheader368, %.thread.thread358
  %.0235402 = phi i32 [ %.3238363, %.thread.thread358 ], [ 0, %.preheader368 ]
  %191 = call noundef nonnull align 8 dereferenceable(16) ptr @_ZN16HighsMatrixSliceI25HighsTripletPositionSliceE8iteratordeEv(ptr noundef nonnull align 8 dereferenceable(28) %17)
  %192 = call noundef i32 @_ZNK17HighsSliceNonzero5indexEv(ptr noundef nonnull align 8 dereferenceable(16) %191)
  %193 = load i32, ptr %10, align 4, !tbaa !73
  %194 = icmp eq i32 %192, %193
  br i1 %194, label %195, label %197

195:                                              ; preds = %.lr.ph403
  %196 = call noundef double @_ZNK17HighsSliceNonzero5valueEv(ptr noundef nonnull align 8 dereferenceable(16) %169)
  br label %233

197:                                              ; preds = %.lr.ph403
  %198 = load i32, ptr %15, align 4, !tbaa !73
  %199 = call noundef i32 @_ZNK17HighsSliceNonzero5indexEv(ptr noundef nonnull align 8 dereferenceable(16) %191)
  %200 = invoke noundef i32 @_ZN8presolve9HPresolve11findNonzeroEii(ptr noundef nonnull align 8 dereferenceable(1720) %0, i32 noundef %198, i32 noundef %199)
          to label %201 unwind label %225

201:                                              ; preds = %197
  %.not305 = icmp eq i32 %200, -1
  br i1 %.not305, label %202, label %229

202:                                              ; preds = %201
  %203 = load ptr, ptr %0, align 8, !tbaa !75
  %204 = getelementptr inbounds i8, ptr %203, i64 376
  %205 = call noundef i32 @_ZNK17HighsSliceNonzero5indexEv(ptr noundef nonnull align 8 dereferenceable(16) %191)
  %206 = sext i32 %205 to i64
  %207 = call noundef nonnull align 1 dereferenceable(1) ptr @_ZNSt6vectorI12HighsVarTypeSaIS0_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %204, i64 noundef %206) #7
  %208 = load i8, ptr %207, align 1, !tbaa !79
  %209 = icmp eq i8 %208, 1
  br i1 %209, label %210, label %227

210:                                              ; preds = %202
  %211 = load ptr, ptr %0, align 8, !tbaa !75
  %212 = getelementptr inbounds i8, ptr %211, i64 56
  %213 = call noundef i32 @_ZNK17HighsSliceNonzero5indexEv(ptr noundef nonnull align 8 dereferenceable(16) %191)
  %214 = sext i32 %213 to i64
  %215 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt6vectorIdSaIdEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %212, i64 noundef %214) #7
  %216 = load double, ptr %215, align 8, !tbaa !76
  %217 = load ptr, ptr %0, align 8, !tbaa !75
  %218 = getelementptr inbounds i8, ptr %217, i64 32
  %219 = call noundef i32 @_ZNK17HighsSliceNonzero5indexEv(ptr noundef nonnull align 8 dereferenceable(16) %191)
  %220 = sext i32 %219 to i64
  %221 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt6vectorIdSaIdEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %218, i64 noundef %220) #7
  %222 = load double, ptr %221, align 8, !tbaa !76
  %223 = fsub double %216, %222
  %224 = fcmp ogt double %223, 1.500000e+00
  br i1 %224, label %.thread.thread.thread, label %227

.thread.thread.thread:                            ; preds = %210
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %18) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %17) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %16) #7
  br label %327

225:                                              ; preds = %197
  %226 = landingpad { ptr, i32 }
          cleanup
  br label %288

227:                                              ; preds = %210, %202
  %228 = add nsw i32 %.0235402, 1
  %.not304 = icmp slt i32 %.0235402, %.0240
  br i1 %.not304, label %.thread.thread358, label %.thread.thread

229:                                              ; preds = %201
  %230 = sext i32 %200 to i64
  %231 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt6vectorIdSaIdEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %74, i64 noundef %230) #7
  %232 = load double, ptr %231, align 8, !tbaa !76
  br label %233

233:                                              ; preds = %229, %195
  %.4245 = phi double [ %196, %195 ], [ %232, %229 ]
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %19) #7
  %234 = fneg double %.4245
  %235 = call noundef double @_ZNK17HighsSliceNonzero5valueEv(ptr noundef nonnull align 8 dereferenceable(16) %191)
  %236 = fdiv double %234, %235
  store double %236, ptr %19, align 8, !tbaa !76
  %237 = call noundef double @_ZSt3absd(double noundef %236)
  %238 = fcmp ogt double %237, 1.000000e+03
  br i1 %238, label %.thread.thread364, label %239

.thread.thread364:                                ; preds = %233
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %19) #7
  br label %.thread.thread358

239:                                              ; preds = %233
  %240 = call noundef double @_ZNK17HighsSliceNonzero5valueEv(ptr noundef nonnull align 8 dereferenceable(16) %191)
  %241 = call noundef double @_ZSt3absd(double noundef %240)
  %242 = fdiv double %62, %241
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %20) #7
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %21) #7
  %243 = load double, ptr %19, align 8, !tbaa !76
  %244 = fsub double %243, %242
  store double %244, ptr %21, align 8, !tbaa !76
  %245 = invoke ptr @_ZNSt3mapIdiSt4lessIdESaISt4pairIKdiEEE11lower_boundERS3_(ptr noundef nonnull align 8 dereferenceable(48) %11, ptr noundef nonnull align 8 dereferenceable(8) %21)
          to label %246 unwind label %261

246:                                              ; preds = %239
  store ptr %245, ptr %20, align 8
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %21) #7
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %22) #7
  %247 = call ptr @_ZNSt3mapIdiSt4lessIdESaISt4pairIKdiEEE3endEv(ptr noundef nonnull align 8 dereferenceable(48) %11) #7
  store ptr %247, ptr %22, align 8
  %248 = call noundef zeroext i1 @_ZStneRKSt17_Rb_tree_iteratorISt4pairIKdiEES5_(ptr noundef nonnull align 8 dereferenceable(8) %20, ptr noundef nonnull align 8 dereferenceable(8) %22) #7
  br i1 %248, label %249, label %.critedge

249:                                              ; preds = %246
  %250 = call noundef ptr @_ZNKSt17_Rb_tree_iteratorISt4pairIKdiEEptEv(ptr noundef nonnull align 8 dereferenceable(8) %20) #7
  %251 = load double, ptr %250, align 8, !tbaa !81
  %252 = load double, ptr %19, align 8, !tbaa !76
  %253 = fsub double %251, %252
  %254 = call noundef double @_ZSt3absd(double noundef %253)
  %255 = fcmp ugt double %254, %242
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %22) #7
  br i1 %255, label %279, label %256

256:                                              ; preds = %249
  %257 = call noundef ptr @_ZNKSt17_Rb_tree_iteratorISt4pairIKdiEEptEv(ptr noundef nonnull align 8 dereferenceable(8) %20) #7
  %258 = getelementptr inbounds i8, ptr %257, i64 8
  %259 = load i32, ptr %258, align 8, !tbaa !83
  %260 = icmp eq i32 %259, -1
  br i1 %260, label %.thread, label %263

261:                                              ; preds = %239
  %262 = landingpad { ptr, i32 }
          cleanup
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %21) #7
  br label %286

263:                                              ; preds = %256
  %264 = call noundef ptr @_ZNKSt17_Rb_tree_iteratorISt4pairIKdiEEptEv(ptr noundef nonnull align 8 dereferenceable(8) %20) #7
  %265 = load double, ptr %264, align 8, !tbaa !81
  %266 = call noundef double @_ZNK17HighsSliceNonzero5valueEv(ptr noundef nonnull align 8 dereferenceable(16) %191)
  %267 = call double @llvm.fmuladd.f64(double %265, double %266, double %.4245)
  %268 = call noundef double @_ZSt3absd(double noundef %267)
  %269 = load ptr, ptr %75, align 8, !tbaa !84
  %270 = getelementptr inbounds i8, ptr %269, i64 264
  %271 = load double, ptr %270, align 8, !tbaa !85
  %272 = fcmp ugt double %268, %271
  %273 = call noundef ptr @_ZNKSt17_Rb_tree_iteratorISt4pairIKdiEEptEv(ptr noundef nonnull align 8 dereferenceable(8) %20) #7
  %274 = getelementptr inbounds i8, ptr %273, i64 8
  br i1 %272, label %278, label %275

275:                                              ; preds = %263
  %276 = load i32, ptr %274, align 8, !tbaa !83
  %277 = add nsw i32 %276, 1
  store i32 %277, ptr %274, align 8, !tbaa !83
  br label %.thread

278:                                              ; preds = %263
  store i32 -1, ptr %274, align 8, !tbaa !83
  br label %.thread

.critedge:                                        ; preds = %246
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %22) #7
  br label %279

279:                                              ; preds = %.critedge, %249
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %23) #7
  store i32 1, ptr %23, align 4, !tbaa !73
  %280 = invoke { ptr, i8 } @_ZNSt3mapIdiSt4lessIdESaISt4pairIKdiEEE7emplaceIJRdiEEES2_ISt17_Rb_tree_iteratorIS4_EbEDpOT_(ptr noundef nonnull align 8 dereferenceable(48) %11, ptr noundef nonnull align 8 dereferenceable(8) %19, ptr noundef nonnull align 4 dereferenceable(4) %23)
          to label %281 unwind label %282

281:                                              ; preds = %279
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %23) #7
  br label %.thread

282:                                              ; preds = %279
  %283 = landingpad { ptr, i32 }
          cleanup
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %23) #7
  br label %286

.thread:                                          ; preds = %256, %275, %278, %281
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %20) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %19) #7
  br label %.thread.thread358

.thread.thread358:                                ; preds = %227, %.thread, %.thread.thread364
  %.3238363 = phi i32 [ %.0235402, %.thread ], [ %.0235402, %.thread.thread364 ], [ %228, %227 ]
  %284 = call noundef nonnull align 8 dereferenceable(28) ptr @_ZN16HighsMatrixSliceI25HighsTripletPositionSliceE8iteratorppEv(ptr noundef nonnull align 8 dereferenceable(28) %17)
  %285 = call noundef zeroext i1 @_ZNK16HighsMatrixSliceI25HighsTripletPositionSliceE8iteratorneERKS2_(ptr noundef nonnull align 8 dereferenceable(28) %17, ptr noundef nonnull align 8 dereferenceable(28) %18)
  br i1 %285, label %.lr.ph403, label %.thread.thread

286:                                              ; preds = %282, %261
  %.pn306 = phi { ptr, i32 } [ %283, %282 ], [ %262, %261 ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %20) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %19) #7
  br label %288

.thread.thread:                                   ; preds = %.thread.thread358, %227
  %.4239 = phi i32 [ %.3238363, %.thread.thread358 ], [ %228, %227 ]
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %18) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %17) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %16) #7
  %287 = icmp sgt i32 %.4239, %.0240
  br i1 %287, label %327, label %290

288:                                              ; preds = %225, %286, %189
  %.pn306.pn.pn = phi { ptr, i32 } [ %190, %189 ], [ %.pn306, %286 ], [ %226, %225 ]
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %18) #7
  br label %289

289:                                              ; preds = %288, %187
  %.pn306.pn.pn.pn = phi { ptr, i32 } [ %.pn306.pn.pn, %288 ], [ %188, %187 ]
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %17) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %16) #7
  br label %330

290:                                              ; preds = %.thread.thread.thread453, %.thread.thread
  %.4239455 = phi i32 [ 0, %.thread.thread.thread453 ], [ %.4239, %.thread.thread ]
  %291 = call noundef zeroext i1 @_ZNKSt3mapIdiSt4lessIdESaISt4pairIKdiEEE5emptyEv(ptr noundef nonnull align 8 dereferenceable(48) %11) #7
  br i1 %291, label %327, label %292

292:                                              ; preds = %290
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %24) #7
  store double 0.000000e+00, ptr %24, align 8, !tbaa !76
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %25) #7
  %293 = call ptr @_ZNSt3mapIdiSt4lessIdESaISt4pairIKdiEEE5beginEv(ptr noundef nonnull align 8 dereferenceable(48) %11) #7
  store ptr %293, ptr %25, align 8
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %26) #7
  %294 = call ptr @_ZNSt3mapIdiSt4lessIdESaISt4pairIKdiEEE3endEv(ptr noundef nonnull align 8 dereferenceable(48) %11) #7
  store ptr %294, ptr %26, align 8
  %295 = call noundef zeroext i1 @_ZStneRKSt17_Rb_tree_iteratorISt4pairIKdiEES5_(ptr noundef nonnull align 8 dereferenceable(8) %25, ptr noundef nonnull align 8 dereferenceable(8) %26) #7
  br i1 %295, label %.lr.ph410, label %._crit_edge411.thread

._crit_edge411.thread:                            ; preds = %292
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %26) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %25) #7
  br label %320

._crit_edge411:                                   ; preds = %316
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %26) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %25) #7
  %296 = load double, ptr %24, align 8, !tbaa !76
  %297 = fcmp une double %296, 0.000000e+00
  %298 = icmp eq i32 %.2252, 0
  %299 = select i1 %297, i1 true, i1 %298
  br i1 %299, label %320, label %319

.lr.ph410:                                        ; preds = %292, %316
  %.0250408 = phi i32 [ %.2252, %316 ], [ 0, %292 ]
  %300 = call noundef nonnull align 8 dereferenceable(12) ptr @_ZNKSt17_Rb_tree_iteratorISt4pairIKdiEEdeEv(ptr noundef nonnull align 8 dereferenceable(8) %25) #7
  %301 = getelementptr inbounds i8, ptr %300, i64 8
  %302 = load i32, ptr %301, align 8, !tbaa !83
  %.not319 = icmp sgt i32 %302, %.4239455
  br i1 %.not319, label %303, label %316

303:                                              ; preds = %.lr.ph410
  %304 = icmp sgt i32 %302, %.0250408
  br i1 %304, label %313, label %305

305:                                              ; preds = %303
  %306 = icmp eq i32 %302, %.0250408
  br i1 %306, label %307, label %316

307:                                              ; preds = %305
  %308 = load double, ptr %300, align 8, !tbaa !81
  %309 = call noundef double @_ZSt3absd(double noundef %308)
  %310 = load double, ptr %24, align 8, !tbaa !76
  %311 = call noundef double @_ZSt3absd(double noundef %310)
  %312 = fcmp olt double %309, %311
  br i1 %312, label %._crit_edge450, label %316

._crit_edge450:                                   ; preds = %307
  %.pre = load i32, ptr %301, align 8, !tbaa !83
  br label %313

313:                                              ; preds = %._crit_edge450, %303
  %314 = phi i32 [ %.pre, %._crit_edge450 ], [ %302, %303 ]
  %315 = load double, ptr %300, align 8, !tbaa !81
  store double %315, ptr %24, align 8, !tbaa !76
  br label %316

316:                                              ; preds = %305, %307, %313, %.lr.ph410
  %.2252 = phi i32 [ %.0250408, %.lr.ph410 ], [ %314, %313 ], [ %.0250408, %307 ], [ %.0250408, %305 ]
  %317 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt17_Rb_tree_iteratorISt4pairIKdiEEppEv(ptr noundef nonnull align 8 dereferenceable(8) %25) #7
  %318 = call noundef zeroext i1 @_ZStneRKSt17_Rb_tree_iteratorISt4pairIKdiEES5_(ptr noundef nonnull align 8 dereferenceable(8) %25, ptr noundef nonnull align 8 dereferenceable(8) %26) #7
  br i1 %318, label %.lr.ph410, label %._crit_edge411

319:                                              ; preds = %._crit_edge411
  call void @__assert_fail(ptr noundef nonnull @.str.172, ptr noundef nonnull @.str.55, i32 noundef 6751, ptr noundef nonnull @__PRETTY_FUNCTION__._ZN8presolve9HPresolve8sparsifyERNS_19HighsPostsolveStackE) #8
  unreachable

320:                                              ; preds = %._crit_edge411.thread, %._crit_edge411
  %.0250.lcssa457 = phi i32 [ 0, %._crit_edge411.thread ], [ %.2252, %._crit_edge411 ]
  %321 = icmp sgt i32 %.0250.lcssa457, %.4239455
  br i1 %321, label %322, label %326

322:                                              ; preds = %320
  %323 = invoke noundef nonnull align 8 dereferenceable(16) ptr @_ZNSt6vectorIN8presolve19HighsPostsolveStack7NonzeroESaIS2_EE12emplace_backIJRiRdEEERS2_DpOT_(ptr noundef nonnull align 8 dereferenceable(24) %3, ptr noundef nonnull align 4 dereferenceable(4) %15, ptr noundef nonnull align 8 dereferenceable(8) %24)
          to label %326 unwind label %324

324:                                              ; preds = %322
  %325 = landingpad { ptr, i32 }
          cleanup
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %24) #7
  br label %330

326:                                              ; preds = %322, %320
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %24) #7
  br label %327

327:                                              ; preds = %.thread.thread.thread, %326, %290, %.thread.thread, %.lr.ph414
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %15) #7
  %328 = call noundef nonnull align 8 dereferenceable(28) ptr @_ZN16HighsMatrixSliceI21HighsTripletListSliceE8iteratorppEv(ptr noundef nonnull align 8 dereferenceable(28) %13)
  %329 = call noundef zeroext i1 @_ZNK16HighsMatrixSliceI21HighsTripletListSliceE8iteratorneERKS2_(ptr noundef nonnull align 8 dereferenceable(28) %13, ptr noundef nonnull align 8 dereferenceable(28) %14)
  br i1 %329, label %.lr.ph414, label %._crit_edge415

330:                                              ; preds = %185, %289, %324
  %.pn312 = phi { ptr, i32 } [ %325, %324 ], [ %.pn306.pn.pn.pn, %289 ], [ %186, %185 ]
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %15) #7
  br label %331

331:                                              ; preds = %330, %167
  %.pn312.pn = phi { ptr, i32 } [ %.pn312, %330 ], [ %168, %167 ]
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %14) #7
  br label %332

332:                                              ; preds = %331, %165
  %.pn312.pn.pn = phi { ptr, i32 } [ %.pn312.pn, %331 ], [ %166, %165 ]
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %13) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %12) #7
  br label %588

333:                                              ; preds = %._crit_edge415
  %334 = load ptr, ptr %0, align 8, !tbaa !75
  %335 = getelementptr inbounds i8, ptr %334, i64 56
  %336 = load i32, ptr %10, align 4, !tbaa !73
  %337 = sext i32 %336 to i64
  %338 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt6vectorIdSaIdEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %335, i64 noundef %337) #7
  %339 = load double, ptr %338, align 8, !tbaa !76
  %340 = load ptr, ptr %0, align 8, !tbaa !75
  %341 = getelementptr inbounds i8, ptr %340, i64 32
  %342 = load i32, ptr %10, align 4, !tbaa !73
  %343 = sext i32 %342 to i64
  %344 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt6vectorIdSaIdEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %341, i64 noundef %343) #7
  %345 = load double, ptr %344, align 8, !tbaa !76
  %346 = fsub double %339, %345
  %347 = fcmp olt double %346, 1.500000e+00
  br i1 %347, label %348, label %507

348:                                              ; preds = %333, %._crit_edge415
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %27) #7
  %349 = load i32, ptr %9, align 4, !tbaa !73
  invoke void @_ZNK8presolve9HPresolve15getColumnVectorEi(ptr dead_on_unwind nonnull writable sret(%struct.HighsTripletListSlice) align 8 %27, ptr noundef nonnull align 8 dereferenceable(1720) %0, i32 noundef %349)
          to label %350 unwind label %353

350:                                              ; preds = %348
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %28) #7
  invoke void @_ZNK16HighsMatrixSliceI21HighsTripletListSliceE5beginEv(ptr dead_on_unwind nonnull writable sret(%"class.HighsMatrixSlice<HighsTripletListSlice>::iterator") align 8 %28, ptr noundef nonnull align 8 dereferenceable(28) %27)
          to label %351 unwind label %355

351:                                              ; preds = %350
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %29) #7
  invoke void @_ZNK16HighsMatrixSliceI21HighsTripletListSliceE3endEv(ptr dead_on_unwind nonnull writable sret(%"class.HighsMatrixSlice<HighsTripletListSlice>::iterator") align 8 %29, ptr noundef nonnull align 8 dereferenceable(28) %27)
          to label %.preheader369 unwind label %357

.preheader369:                                    ; preds = %351
  %352 = call noundef zeroext i1 @_ZNK16HighsMatrixSliceI21HighsTripletListSliceE8iteratorneERKS2_(ptr noundef nonnull align 8 dereferenceable(28) %28, ptr noundef nonnull align 8 dereferenceable(28) %29)
  br i1 %352, label %.lr.ph427, label %._crit_edge428

._crit_edge428:                                   ; preds = %501, %.preheader369
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %29) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %28) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %27) #7
  br label %507

353:                                              ; preds = %348
  %354 = landingpad { ptr, i32 }
          cleanup
  br label %588

355:                                              ; preds = %350
  %356 = landingpad { ptr, i32 }
          cleanup
  br label %506

357:                                              ; preds = %351
  %358 = landingpad { ptr, i32 }
          cleanup
  br label %505

.lr.ph427:                                        ; preds = %.preheader369, %501
  %359 = call noundef nonnull align 8 dereferenceable(16) ptr @_ZN16HighsMatrixSliceI21HighsTripletListSliceE8iteratordeEv(ptr noundef nonnull align 8 dereferenceable(28) %28)
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %30) #7
  %360 = call noundef i32 @_ZNK17HighsSliceNonzero5indexEv(ptr noundef nonnull align 8 dereferenceable(16) %359)
  store i32 %360, ptr %30, align 4, !tbaa !73
  %361 = icmp eq i32 %360, %88
  br i1 %361, label %501, label %362

362:                                              ; preds = %.lr.ph427
  %363 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNSt6vectorIiSaIiEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %73, i64 noundef %89) #7
  %364 = load i32, ptr %363, align 4, !tbaa !73
  %365 = icmp eq i32 %364, 0
  br i1 %365, label %366, label %371

366:                                              ; preds = %362
  %367 = load i32, ptr %30, align 4, !tbaa !73
  %368 = sext i32 %367 to i64
  %369 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNSt6vectorIiSaIiEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %73, i64 noundef %368) #7
  %370 = load i32, ptr %369, align 4, !tbaa !73
  %.not289 = icmp eq i32 %370, 0
  br i1 %.not289, label %371, label %501

371:                                              ; preds = %366, %362
  %372 = load i32, ptr %30, align 4, !tbaa !73
  %373 = load i32, ptr %10, align 4, !tbaa !73
  %374 = invoke noundef i32 @_ZN8presolve9HPresolve11findNonzeroEii(ptr noundef nonnull align 8 dereferenceable(1720) %0, i32 noundef %372, i32 noundef %373)
          to label %375 unwind label %376

375:                                              ; preds = %371
  %.not290 = icmp eq i32 %374, -1
  br i1 %.not290, label %378, label %501

376:                                              ; preds = %371
  %377 = landingpad { ptr, i32 }
          cleanup
  br label %504

378:                                              ; preds = %375
  call void @_ZNSt3mapIdiSt4lessIdESaISt4pairIKdiEEE5clearEv(ptr noundef nonnull align 8 dereferenceable(48) %11) #7
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %31) #7
  invoke void @_ZNK8presolve9HPresolve12getStoredRowEv(ptr dead_on_unwind nonnull writable sret(%struct.HighsTripletPositionSlice) align 8 %31, ptr noundef nonnull align 8 dereferenceable(1720) %0)
          to label %379 unwind label %382

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

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

.preheader:                                       ; preds = %380
  %381 = call noundef zeroext i1 @_ZNK16HighsMatrixSliceI25HighsTripletPositionSliceE8iteratorneERKS2_(ptr noundef nonnull align 8 dereferenceable(28) %32, ptr noundef nonnull align 8 dereferenceable(28) %33)
  br i1 %381, label %.lr.ph418, label %._crit_edge419

382:                                              ; preds = %378
  %383 = landingpad { ptr, i32 }
          cleanup
  br label %504

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

386:                                              ; preds = %380
  %387 = landingpad { ptr, i32 }
          cleanup
  br label %463

.lr.ph418:                                        ; preds = %.preheader, %458
  %388 = call noundef nonnull align 8 dereferenceable(16) ptr @_ZN16HighsMatrixSliceI25HighsTripletPositionSliceE8iteratordeEv(ptr noundef nonnull align 8 dereferenceable(28) %32)
  %389 = call noundef i32 @_ZNK17HighsSliceNonzero5indexEv(ptr noundef nonnull align 8 dereferenceable(16) %388)
  %390 = load i32, ptr %9, align 4, !tbaa !73
  %391 = icmp eq i32 %389, %390
  br i1 %391, label %392, label %394

392:                                              ; preds = %.lr.ph418
  %393 = call noundef double @_ZNK17HighsSliceNonzero5valueEv(ptr noundef nonnull align 8 dereferenceable(16) %359)
  br label %406

394:                                              ; preds = %.lr.ph418
  %395 = load i32, ptr %30, align 4, !tbaa !73
  %396 = call noundef i32 @_ZNK17HighsSliceNonzero5indexEv(ptr noundef nonnull align 8 dereferenceable(16) %388)
  %397 = invoke noundef i32 @_ZN8presolve9HPresolve11findNonzeroEii(ptr noundef nonnull align 8 dereferenceable(1720) %0, i32 noundef %395, i32 noundef %396)
          to label %398 unwind label %400

398:                                              ; preds = %394
  %399 = icmp eq i32 %397, -1
  br i1 %399, label %.thread339, label %402

.thread339:                                       ; preds = %398
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %33) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %32) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %31) #7
  br label %501

400:                                              ; preds = %394
  %401 = landingpad { ptr, i32 }
          cleanup
  br label %463

402:                                              ; preds = %398
  %403 = sext i32 %397 to i64
  %404 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt6vectorIdSaIdEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %74, i64 noundef %403) #7
  %405 = load double, ptr %404, align 8, !tbaa !76
  br label %406

406:                                              ; preds = %402, %392
  %.4261 = phi double [ %393, %392 ], [ %405, %402 ]
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %34) #7
  %407 = fneg double %.4261
  %408 = call noundef double @_ZNK17HighsSliceNonzero5valueEv(ptr noundef nonnull align 8 dereferenceable(16) %388)
  %409 = fdiv double %407, %408
  store double %409, ptr %34, align 8, !tbaa !76
  %410 = call noundef double @_ZSt3absd(double noundef %409)
  %411 = fcmp ogt double %410, 1.000000e+03
  br i1 %411, label %.thread337, label %412

.thread337:                                       ; preds = %406
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %34) #7
  br label %458

412:                                              ; preds = %406
  %413 = call noundef double @_ZNK17HighsSliceNonzero5valueEv(ptr noundef nonnull align 8 dereferenceable(16) %388)
  %414 = call noundef double @_ZSt3absd(double noundef %413)
  %415 = fdiv double %62, %414
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %35) #7
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %36) #7
  %416 = load double, ptr %34, align 8, !tbaa !76
  %417 = fsub double %416, %415
  store double %417, ptr %36, align 8, !tbaa !76
  %418 = invoke ptr @_ZNSt3mapIdiSt4lessIdESaISt4pairIKdiEEE11lower_boundERS3_(ptr noundef nonnull align 8 dereferenceable(48) %11, ptr noundef nonnull align 8 dereferenceable(8) %36)
          to label %419 unwind label %434

419:                                              ; preds = %412
  store ptr %418, ptr %35, align 8
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %36) #7
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %37) #7
  %420 = call ptr @_ZNSt3mapIdiSt4lessIdESaISt4pairIKdiEEE3endEv(ptr noundef nonnull align 8 dereferenceable(48) %11) #7
  store ptr %420, ptr %37, align 8
  %421 = call noundef zeroext i1 @_ZStneRKSt17_Rb_tree_iteratorISt4pairIKdiEES5_(ptr noundef nonnull align 8 dereferenceable(8) %35, ptr noundef nonnull align 8 dereferenceable(8) %37) #7
  br i1 %421, label %422, label %.critedge15

422:                                              ; preds = %419
  %423 = call noundef ptr @_ZNKSt17_Rb_tree_iteratorISt4pairIKdiEEptEv(ptr noundef nonnull align 8 dereferenceable(8) %35) #7
  %424 = load double, ptr %423, align 8, !tbaa !81
  %425 = load double, ptr %34, align 8, !tbaa !76
  %426 = fsub double %424, %425
  %427 = call noundef double @_ZSt3absd(double noundef %426)
  %428 = fcmp ugt double %427, %415
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %37) #7
  br i1 %428, label %452, label %429

429:                                              ; preds = %422
  %430 = call noundef ptr @_ZNKSt17_Rb_tree_iteratorISt4pairIKdiEEptEv(ptr noundef nonnull align 8 dereferenceable(8) %35) #7
  %431 = getelementptr inbounds i8, ptr %430, i64 8
  %432 = load i32, ptr %431, align 8, !tbaa !83
  %433 = icmp eq i32 %432, -1
  br i1 %433, label %457, label %436

434:                                              ; preds = %412
  %435 = landingpad { ptr, i32 }
          cleanup
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %36) #7
  br label %461

436:                                              ; preds = %429
  %437 = call noundef ptr @_ZNKSt17_Rb_tree_iteratorISt4pairIKdiEEptEv(ptr noundef nonnull align 8 dereferenceable(8) %35) #7
  %438 = load double, ptr %437, align 8, !tbaa !81
  %439 = call noundef double @_ZNK17HighsSliceNonzero5valueEv(ptr noundef nonnull align 8 dereferenceable(16) %388)
  %440 = call double @llvm.fmuladd.f64(double %438, double %439, double %.4261)
  %441 = call noundef double @_ZSt3absd(double noundef %440)
  %442 = load ptr, ptr %75, align 8, !tbaa !84
  %443 = getelementptr inbounds i8, ptr %442, i64 264
  %444 = load double, ptr %443, align 8, !tbaa !85
  %445 = fcmp ugt double %441, %444
  %446 = call noundef ptr @_ZNKSt17_Rb_tree_iteratorISt4pairIKdiEEptEv(ptr noundef nonnull align 8 dereferenceable(8) %35) #7
  %447 = getelementptr inbounds i8, ptr %446, i64 8
  br i1 %445, label %451, label %448

448:                                              ; preds = %436
  %449 = load i32, ptr %447, align 8, !tbaa !83
  %450 = add nsw i32 %449, 1
  store i32 %450, ptr %447, align 8, !tbaa !83
  br label %457

451:                                              ; preds = %436
  store i32 -1, ptr %447, align 8, !tbaa !83
  br label %457

.critedge15:                                      ; preds = %419
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %37) #7
  br label %452

452:                                              ; preds = %.critedge15, %422
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %38) #7
  store i32 1, ptr %38, align 4, !tbaa !73
  %453 = invoke { ptr, i8 } @_ZNSt3mapIdiSt4lessIdESaISt4pairIKdiEEE7emplaceIJRdiEEES2_ISt17_Rb_tree_iteratorIS4_EbEDpOT_(ptr noundef nonnull align 8 dereferenceable(48) %11, ptr noundef nonnull align 8 dereferenceable(8) %34, ptr noundef nonnull align 4 dereferenceable(4) %38)
          to label %454 unwind label %455

454:                                              ; preds = %452
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %38) #7
  br label %457

455:                                              ; preds = %452
  %456 = landingpad { ptr, i32 }
          cleanup
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %38) #7
  br label %461

457:                                              ; preds = %451, %429, %454, %448
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %35) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %34) #7
  br label %458

458:                                              ; preds = %457, %.thread337
  %459 = call noundef nonnull align 8 dereferenceable(28) ptr @_ZN16HighsMatrixSliceI25HighsTripletPositionSliceE8iteratorppEv(ptr noundef nonnull align 8 dereferenceable(28) %32)
  %460 = call noundef zeroext i1 @_ZNK16HighsMatrixSliceI25HighsTripletPositionSliceE8iteratorneERKS2_(ptr noundef nonnull align 8 dereferenceable(28) %32, ptr noundef nonnull align 8 dereferenceable(28) %33)
  br i1 %460, label %.lr.ph418, label %._crit_edge419

461:                                              ; preds = %455, %434
  %.pn291 = phi { ptr, i32 } [ %456, %455 ], [ %435, %434 ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %35) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %34) #7
  br label %463

._crit_edge419:                                   ; preds = %458, %.preheader
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %33) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %32) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %31) #7
  %462 = call noundef zeroext i1 @_ZNKSt3mapIdiSt4lessIdESaISt4pairIKdiEEE5emptyEv(ptr noundef nonnull align 8 dereferenceable(48) %11) #7
  br i1 %462, label %501, label %465

463:                                              ; preds = %400, %461, %386
  %.pn291.pn.pn = phi { ptr, i32 } [ %387, %386 ], [ %.pn291, %461 ], [ %401, %400 ]
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %33) #7
  br label %464

464:                                              ; preds = %463, %384
  %.pn291.pn.pn.pn = phi { ptr, i32 } [ %.pn291.pn.pn, %463 ], [ %385, %384 ]
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %32) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %31) #7
  br label %504

465:                                              ; preds = %._crit_edge419
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %39) #7
  store double 0.000000e+00, ptr %39, align 8, !tbaa !76
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %40) #7
  %466 = call ptr @_ZNSt3mapIdiSt4lessIdESaISt4pairIKdiEEE5beginEv(ptr noundef nonnull align 8 dereferenceable(48) %11) #7
  store ptr %466, ptr %40, align 8
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %41) #7
  %467 = call ptr @_ZNSt3mapIdiSt4lessIdESaISt4pairIKdiEEE3endEv(ptr noundef nonnull align 8 dereferenceable(48) %11) #7
  store ptr %467, ptr %41, align 8
  %468 = call noundef zeroext i1 @_ZStneRKSt17_Rb_tree_iteratorISt4pairIKdiEES5_(ptr noundef nonnull align 8 dereferenceable(8) %40, ptr noundef nonnull align 8 dereferenceable(8) %41) #7
  br i1 %468, label %.lr.ph423, label %.thread460

.thread460:                                       ; preds = %465
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %41) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %40) #7
  br label %500

._crit_edge424:                                   ; preds = %490
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %41) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %40) #7
  %469 = load double, ptr %39, align 8, !tbaa !76
  %470 = fcmp une double %469, 0.000000e+00
  %471 = icmp eq i32 %.2270, 0
  %472 = select i1 %470, i1 true, i1 %471
  br i1 %472, label %494, label %493

.lr.ph423:                                        ; preds = %465, %490
  %.0268421 = phi i32 [ %.2270, %490 ], [ 0, %465 ]
  %473 = call noundef nonnull align 8 dereferenceable(12) ptr @_ZNKSt17_Rb_tree_iteratorISt4pairIKdiEEdeEv(ptr noundef nonnull align 8 dereferenceable(8) %40) #7
  %474 = getelementptr inbounds i8, ptr %473, i64 8
  %475 = load i32, ptr %474, align 8, !tbaa !83
  %476 = icmp slt i32 %475, 2
  br i1 %476, label %490, label %477

477:                                              ; preds = %.lr.ph423
  %478 = icmp sgt i32 %475, %.0268421
  br i1 %478, label %487, label %479

479:                                              ; preds = %477
  %480 = icmp eq i32 %475, %.0268421
  br i1 %480, label %481, label %490

481:                                              ; preds = %479
  %482 = load double, ptr %473, align 8, !tbaa !81
  %483 = call noundef double @_ZSt3absd(double noundef %482)
  %484 = load double, ptr %39, align 8, !tbaa !76
  %485 = call noundef double @_ZSt3absd(double noundef %484)
  %486 = fcmp olt double %483, %485
  br i1 %486, label %._crit_edge451, label %490

._crit_edge451:                                   ; preds = %481
  %.pre452 = load i32, ptr %474, align 8, !tbaa !83
  br label %487

487:                                              ; preds = %._crit_edge451, %477
  %488 = phi i32 [ %.pre452, %._crit_edge451 ], [ %475, %477 ]
  %489 = load double, ptr %473, align 8, !tbaa !81
  store double %489, ptr %39, align 8, !tbaa !76
  br label %490

490:                                              ; preds = %479, %481, %487, %.lr.ph423
  %.2270 = phi i32 [ %.0268421, %.lr.ph423 ], [ %488, %487 ], [ %.0268421, %481 ], [ %.0268421, %479 ]
  %491 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt17_Rb_tree_iteratorISt4pairIKdiEEppEv(ptr noundef nonnull align 8 dereferenceable(8) %40) #7
  %492 = call noundef zeroext i1 @_ZStneRKSt17_Rb_tree_iteratorISt4pairIKdiEES5_(ptr noundef nonnull align 8 dereferenceable(8) %40, ptr noundef nonnull align 8 dereferenceable(8) %41) #7
  br i1 %492, label %.lr.ph423, label %._crit_edge424

493:                                              ; preds = %._crit_edge424
  call void @__assert_fail(ptr noundef nonnull @.str.172, ptr noundef nonnull @.str.55, i32 noundef 6837, ptr noundef nonnull @__PRETTY_FUNCTION__._ZN8presolve9HPresolve8sparsifyERNS_19HighsPostsolveStackE) #8
  unreachable

494:                                              ; preds = %._crit_edge424
  %495 = icmp sgt i32 %.2270, 1
  br i1 %495, label %496, label %500

496:                                              ; preds = %494
  %497 = invoke noundef nonnull align 8 dereferenceable(16) ptr @_ZNSt6vectorIN8presolve19HighsPostsolveStack7NonzeroESaIS2_EE12emplace_backIJRiRdEEERS2_DpOT_(ptr noundef nonnull align 8 dereferenceable(24) %3, ptr noundef nonnull align 4 dereferenceable(4) %30, ptr noundef nonnull align 8 dereferenceable(8) %39)
          to label %500 unwind label %498

498:                                              ; preds = %496
  %499 = landingpad { ptr, i32 }
          cleanup
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %39) #7
  br label %504

500:                                              ; preds = %.thread460, %496, %494
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %39) #7
  br label %501

501:                                              ; preds = %.thread339, %375, %._crit_edge419, %500, %366, %.lr.ph427
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %30) #7
  %502 = call noundef nonnull align 8 dereferenceable(28) ptr @_ZN16HighsMatrixSliceI21HighsTripletListSliceE8iteratorppEv(ptr noundef nonnull align 8 dereferenceable(28) %28)
  %503 = call noundef zeroext i1 @_ZNK16HighsMatrixSliceI21HighsTripletListSliceE8iteratorneERKS2_(ptr noundef nonnull align 8 dereferenceable(28) %28, ptr noundef nonnull align 8 dereferenceable(28) %29)
  br i1 %503, label %.lr.ph427, label %._crit_edge428

504:                                              ; preds = %498, %464, %382, %376
  %.pn297.pn = phi { ptr, i32 } [ %377, %376 ], [ %499, %498 ], [ %.pn291.pn.pn.pn, %464 ], [ %383, %382 ]
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %30) #7
  br label %505

505:                                              ; preds = %504, %357
  %.pn297.pn.pn = phi { ptr, i32 } [ %.pn297.pn, %504 ], [ %358, %357 ]
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %29) #7
  br label %506

506:                                              ; preds = %505, %355
  %.pn297.pn.pn.pn = phi { ptr, i32 } [ %.pn297.pn.pn, %505 ], [ %356, %355 ]
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %28) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %27) #7
  br label %588

507:                                              ; preds = %._crit_edge428, %333
  %508 = call noundef zeroext i1 @_ZNKSt6vectorIN8presolve19HighsPostsolveStack7NonzeroESaIS2_EE5emptyEv(ptr noundef nonnull align 8 dereferenceable(24) %3) #7
  br i1 %508, label %select.unfold, label %509

509:                                              ; preds = %507
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %42) #7
  invoke void @_ZNK8presolve9HPresolve12getStoredRowEv(ptr dead_on_unwind nonnull writable sret(%struct.HighsTripletPositionSlice) align 8 %42, ptr noundef nonnull align 8 dereferenceable(1720) %0)
          to label %510 unwind label %520

510:                                              ; preds = %509
  invoke void @_ZN8presolve19HighsPostsolveStack20equalityRowAdditionsI25HighsTripletPositionSliceEEviRK16HighsMatrixSliceIT_ERKSt6vectorINS0_7NonzeroESaIS9_EE(ptr noundef nonnull align 8 dereferenceable(224) %1, i32 noundef %88, ptr noundef nonnull align 8 dereferenceable(28) %42, ptr noundef nonnull align 8 dereferenceable(24) %3)
          to label %511 unwind label %520

511:                                              ; preds = %510
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %42) #7
  %512 = load ptr, ptr %0, align 8, !tbaa !75
  %513 = getelementptr inbounds i8, ptr %512, i64 80
  %514 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt6vectorIdSaIdEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %513, i64 noundef %89) #7
  %515 = load double, ptr %514, align 8, !tbaa !76
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %43) #7
  %516 = call ptr @_ZNSt6vectorIN8presolve19HighsPostsolveStack7NonzeroESaIS2_EE5beginEv(ptr noundef nonnull align 8 dereferenceable(24) %3) #7
  store ptr %516, ptr %43, align 8
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %44) #7
  %517 = call ptr @_ZNSt6vectorIN8presolve19HighsPostsolveStack7NonzeroESaIS2_EE3endEv(ptr noundef nonnull align 8 dereferenceable(24) %3) #7
  store ptr %517, ptr %44, align 8
  %518 = call noundef zeroext i1 @_ZN9__gnu_cxxneIPN8presolve19HighsPostsolveStack7NonzeroESt6vectorIS3_SaIS3_EEEEbRKNS_17__normal_iteratorIT_T0_EESD_(ptr noundef nonnull align 8 dereferenceable(8) %43, ptr noundef nonnull align 8 dereferenceable(8) %44) #7
  br i1 %518, label %.lr.ph434, label %._crit_edge435

._crit_edge435:                                   ; preds = %567, %511
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %44) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %43) #7
  %519 = invoke noundef i32 @_ZN8presolve9HPresolve11checkLimitsERNS_19HighsPostsolveStackE(ptr noundef nonnull align 8 dereferenceable(1720) %0, ptr noundef nonnull align 8 dereferenceable(224) %1)
          to label %573 unwind label %574

520:                                              ; preds = %510, %509
  %521 = landingpad { ptr, i32 }
          cleanup
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %42) #7
  br label %588

.lr.ph434:                                        ; preds = %511, %567
  %522 = call noundef nonnull align 8 dereferenceable(16) ptr @_ZNK9__gnu_cxx17__normal_iteratorIPN8presolve19HighsPostsolveStack7NonzeroESt6vectorIS3_SaIS3_EEEdeEv(ptr noundef nonnull align 8 dereferenceable(8) %43) #7
  %523 = load i32, ptr %522, align 8, !tbaa !92
  %524 = getelementptr inbounds i8, ptr %522, i64 8
  %525 = load double, ptr %524, align 8, !tbaa !94
  %526 = load ptr, ptr %0, align 8, !tbaa !75
  %527 = getelementptr inbounds i8, ptr %526, i64 80
  %528 = sext i32 %523 to i64
  %529 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt6vectorIdSaIdEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %527, i64 noundef %528) #7
  %530 = load double, ptr %529, align 8, !tbaa !76
  %531 = fcmp une double %530, 0xFFF0000000000000
  br i1 %531, label %532, label %538

532:                                              ; preds = %.lr.ph434
  %533 = load ptr, ptr %0, align 8, !tbaa !75
  %534 = getelementptr inbounds i8, ptr %533, i64 80
  %535 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt6vectorIdSaIdEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %534, i64 noundef %528) #7
  %536 = load double, ptr %535, align 8, !tbaa !76
  %537 = call double @llvm.fmuladd.f64(double %525, double %515, double %536)
  store double %537, ptr %535, align 8, !tbaa !76
  br label %538

538:                                              ; preds = %532, %.lr.ph434
  %539 = load ptr, ptr %0, align 8, !tbaa !75
  %540 = getelementptr inbounds i8, ptr %539, i64 104
  %541 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt6vectorIdSaIdEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %540, i64 noundef %528) #7
  %542 = load double, ptr %541, align 8, !tbaa !76
  %543 = fcmp une double %542, 0x7FF0000000000000
  br i1 %543, label %544, label %550

544:                                              ; preds = %538
  %545 = load ptr, ptr %0, align 8, !tbaa !75
  %546 = getelementptr inbounds i8, ptr %545, i64 104
  %547 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt6vectorIdSaIdEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %546, i64 noundef %528) #7
  %548 = load double, ptr %547, align 8, !tbaa !76
  %549 = call double @llvm.fmuladd.f64(double %525, double %515, double %548)
  store double %549, ptr %547, align 8, !tbaa !76
  br label %550

550:                                              ; preds = %544, %538
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %45) #7
  %551 = call ptr @_ZNSt6vectorIiSaIiEE5beginEv(ptr noundef nonnull align 8 dereferenceable(24) %71) #7
  store ptr %551, ptr %45, align 8
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %46) #7
  %552 = call ptr @_ZNSt6vectorIiSaIiEE3endEv(ptr noundef nonnull align 8 dereferenceable(24) %71) #7
  store ptr %552, ptr %46, align 8
  %553 = call noundef zeroext i1 @_ZN9__gnu_cxxneIPiSt6vectorIiSaIiEEEEbRKNS_17__normal_iteratorIT_T0_EESA_(ptr noundef nonnull align 8 dereferenceable(8) %45, ptr noundef nonnull align 8 dereferenceable(8) %46) #7
  br i1 %553, label %.lr.ph431, label %._crit_edge432

._crit_edge432:                                   ; preds = %562, %550
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %46) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %45) #7
  invoke void @_ZN8presolve9HPresolve16reinsertEquationEi(ptr noundef nonnull align 8 dereferenceable(1720) %0, i32 noundef %523)
          to label %567 unwind label %570

.lr.ph431:                                        ; preds = %550, %562
  %554 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNK9__gnu_cxx17__normal_iteratorIPiSt6vectorIiSaIiEEEdeEv(ptr noundef nonnull align 8 dereferenceable(8) %45) #7
  %555 = load i32, ptr %554, align 4, !tbaa !73
  %556 = sext i32 %555 to i64
  %557 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNSt6vectorIiSaIiEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %70, i64 noundef %556) #7
  %558 = load i32, ptr %557, align 4, !tbaa !73
  %559 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt6vectorIdSaIdEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %74, i64 noundef %556) #7
  %560 = load double, ptr %559, align 8, !tbaa !76
  %561 = fmul double %525, %560
  invoke void @_ZN8presolve9HPresolve11addToMatrixEiid(ptr noundef nonnull align 8 dereferenceable(1720) %0, i32 noundef %523, i32 noundef %558, double noundef %561)
          to label %562 unwind label %565

562:                                              ; preds = %.lr.ph431
  %563 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZN9__gnu_cxx17__normal_iteratorIPiSt6vectorIiSaIiEEEppEv(ptr noundef nonnull align 8 dereferenceable(8) %45) #7
  %564 = call noundef zeroext i1 @_ZN9__gnu_cxxneIPiSt6vectorIiSaIiEEEEbRKNS_17__normal_iteratorIT_T0_EESA_(ptr noundef nonnull align 8 dereferenceable(8) %45, ptr noundef nonnull align 8 dereferenceable(8) %46) #7
  br i1 %564, label %.lr.ph431, label %._crit_edge432

565:                                              ; preds = %.lr.ph431
  %566 = landingpad { ptr, i32 }
          cleanup
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %46) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %45) #7
  br label %572

567:                                              ; preds = %._crit_edge432
  %568 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZN9__gnu_cxx17__normal_iteratorIPN8presolve19HighsPostsolveStack7NonzeroESt6vectorIS3_SaIS3_EEEppEv(ptr noundef nonnull align 8 dereferenceable(8) %43) #7
  %569 = call noundef zeroext i1 @_ZN9__gnu_cxxneIPN8presolve19HighsPostsolveStack7NonzeroESt6vectorIS3_SaIS3_EEEEbRKNS_17__normal_iteratorIT_T0_EESD_(ptr noundef nonnull align 8 dereferenceable(8) %43, ptr noundef nonnull align 8 dereferenceable(8) %44) #7
  br i1 %569, label %.lr.ph434, label %._crit_edge435

570:                                              ; preds = %._crit_edge432
  %571 = landingpad { ptr, i32 }
          cleanup
  br label %572

572:                                              ; preds = %570, %565
  %.pn = phi { ptr, i32 } [ %566, %565 ], [ %571, %570 ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %44) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %43) #7
  br label %588

573:                                              ; preds = %._crit_edge435
  %.not284 = icmp eq i32 %519, 0
  br i1 %.not284, label %576, label %.thread351

574:                                              ; preds = %._crit_edge435
  %575 = landingpad { ptr, i32 }
          cleanup
  br label %588

576:                                              ; preds = %573
  %577 = invoke noundef i32 @_ZN8presolve9HPresolve19removeRowSingletonsERNS_19HighsPostsolveStackE(ptr noundef nonnull align 8 dereferenceable(1720) %0, ptr noundef nonnull align 8 dereferenceable(224) %1)
          to label %578 unwind label %579

578:                                              ; preds = %576
  %.not285 = icmp eq i32 %577, 0
  br i1 %.not285, label %581, label %.thread351

579:                                              ; preds = %576
  %580 = landingpad { ptr, i32 }
          cleanup
  br label %588

581:                                              ; preds = %578
  %582 = invoke noundef i32 @_ZN8presolve9HPresolve24removeDoubletonEquationsERNS_19HighsPostsolveStackE(ptr noundef nonnull align 8 dereferenceable(1720) %0, ptr noundef nonnull align 8 dereferenceable(224) %1)
          to label %583 unwind label %584

583:                                              ; preds = %581
  %.not286 = icmp eq i32 %582, 0
  br i1 %.not286, label %select.unfold, label %.thread351

584:                                              ; preds = %581
  %585 = landingpad { ptr, i32 }
          cleanup
  br label %588

.thread351:                                       ; preds = %583, %578, %573
  %.7.ph = phi i32 [ %519, %573 ], [ %577, %578 ], [ %582, %583 ]
  call void @_ZNSt3mapIdiSt4lessIdESaISt4pairIKdiEEED2Ev(ptr noundef nonnull align 8 dereferenceable(48) %11) #7
  call void @llvm.lifetime.end.p0(i64 48, ptr nonnull %11) #7
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %10) #7
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %9) #7
  br label %.loopexit

select.unfold:                                    ; preds = %583, %507
  call void @_ZNSt3mapIdiSt4lessIdESaISt4pairIKdiEEED2Ev(ptr noundef nonnull align 8 dereferenceable(48) %11) #7
  call void @llvm.lifetime.end.p0(i64 48, ptr nonnull %11) #7
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %10) #7
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %9) #7
  br label %.thread342

.thread342:                                       ; preds = %86, %select.unfold
  %586 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZN9__gnu_cxx17__normal_iteratorIPiSt6vectorIiSaIiEEEppEv(ptr noundef nonnull align 8 dereferenceable(8) %7) #7
  %587 = call noundef zeroext i1 @_ZN9__gnu_cxxneIPiSt6vectorIiSaIiEEEEbRKNS_17__normal_iteratorIT_T0_EESA_(ptr noundef nonnull align 8 dereferenceable(8) %7, ptr noundef nonnull align 8 dereferenceable(8) %8) #7
  br i1 %587, label %86, label %.loopexit

588:                                              ; preds = %572, %574, %579, %584, %353, %506, %163, %332, %520
  %.pn312.pn.pn.pn.pn = phi { ptr, i32 } [ %521, %520 ], [ %.pn312.pn.pn, %332 ], [ %164, %163 ], [ %.pn297.pn.pn.pn, %506 ], [ %354, %353 ], [ %.pn, %572 ], [ %585, %584 ], [ %580, %579 ], [ %575, %574 ]
  call void @_ZNSt3mapIdiSt4lessIdESaISt4pairIKdiEEED2Ev(ptr noundef nonnull align 8 dereferenceable(48) %11) #7
  call void @llvm.lifetime.end.p0(i64 48, ptr nonnull %11) #7
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %10) #7
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %9) #7
  br label %589

589:                                              ; preds = %588, %125
  %.pn312.pn.pn.pn.pn.pn = phi { ptr, i32 } [ %.pn312.pn.pn.pn.pn, %588 ], [ %126, %125 ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %8) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %7) #7
  br label %590

.loopexit:                                        ; preds = %.thread342, %._crit_edge, %.thread351
  %spec.select326 = phi i32 [ %.7.ph, %.thread351 ], [ 0, %._crit_edge ], [ 0, %.thread342 ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %8) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %7) #7
  call void @_ZNSt6vectorIiSaIiEED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %4) #7
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %4) #7
  br label %591

590:                                              ; preds = %84, %589, %76
  %.pn320.pn = phi { ptr, i32 } [ %77, %76 ], [ %85, %84 ], [ %.pn312.pn.pn.pn.pn.pn, %589 ]
  call void @_ZNSt6vectorIiSaIiEED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %4) #7
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %4) #7
  br label %592

591:                                              ; preds = %53, %48, %.loopexit
  %.11 = phi i32 [ %spec.select326, %.loopexit ], [ %52, %53 ], [ %47, %48 ]
  call void @_ZNSt6vectorIN8presolve19HighsPostsolveStack7NonzeroESaIS2_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %3) #7
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %3) #7
  ret i32 %.11

592:                                              ; preds = %590, %54, %49
  %.pn320.pn.pn = phi { ptr, i32 } [ %.pn320.pn, %590 ], [ %55, %54 ], [ %50, %49 ]
  call void @_ZNSt6vectorIN8presolve19HighsPostsolveStack7NonzeroESaIS2_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %3) #7
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %3) #7
  resume { ptr, i32 } %.pn320.pn.pn
}

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

attributes #0 = { mustprogress nocallback nofree nosync nounwind willreturn memory(argmem: readwrite) }
attributes #1 = { mustprogress nounwind uwtable "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }
attributes #2 = { 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 #3 = { 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 #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 = { mustprogress nocallback nofree nosync nounwind speculatable willreturn memory(none) }
attributes #6 = { mustprogress nofree nounwind willreturn memory(write) "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }
attributes #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, !10, i64 32}
!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 = !{!59, !59, i64 0}
!74 = !{!8, !8, i64 0}
!75 = !{!6, !7, i64 0}
!76 = !{!10, !10, i64 0}
!77 = distinct !{!77, !78}
!78 = !{!"llvm.loop.mustprogress"}
!79 = !{!80, !80, i64 0}
!80 = !{!"_ZTS12HighsVarType", !8, i64 0}
!81 = !{!82, !10, i64 0}
!82 = !{!"_ZTSSt4pairIKdiE", !10, i64 0, !59, i64 8}
!83 = !{!82, !59, i64 8}
!84 = !{!6, !7, i64 8}
!85 = !{!86, !10, i64 264}
!86 = !{!"_ZTS18HighsOptionsStruct", !87, i64 8, !87, i64 40, !87, i64 72, !87, i64 104, !10, i64 136, !87, i64 144, !87, i64 176, !59, i64 208, !87, 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, !87, i64 392, !54, i64 424, !54, i64 425, !54, i64 426, !59, i64 428, !59, i64 432, !87, 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, !87, 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, !87, i64 856, !54, i64 888, !59, i64 892, !89, i64 896}
!87 = !{!"_ZTSNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE", !88, i64 0, !38, i64 8, !8, i64 16}
!88 = !{!"_ZTSNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE12_Alloc_hiderE", !7, i64 0}
!89 = !{!"_ZTS15HighsLogOptions", !7, i64 0, !7, i64 8, !7, i64 16, !7, i64 24, !7, i64 32, !7, i64 40, !90, i64 48, !7, i64 80, !54, i64 88}
!90 = !{!"_ZTSSt8functionIFviRKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEPK20HighsCallbackDataOutP19HighsCallbackDataInPvEE", !91, i64 0, !7, i64 24}
!91 = !{!"_ZTSSt14_Function_base", !8, i64 0, !7, i64 16}
!92 = !{!93, !59, i64 0}
!93 = !{!"_ZTSN8presolve19HighsPostsolveStack7NonzeroE", !59, i64 0, !10, i64 8}
!94 = !{!93, !10, i64 8}


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