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

; Unoptimized IR (clang -disable-llvm-passes):
target datalayout = "e-m:e-p270:32:32-p271:32:32-p272:64:64-i64:64-i128:128-f80:128-n8:16:32:64-S128"
target triple = "x86_64-unknown-linux-gnu"

%struct.HighsTripletTreeSlicePreOrder = type { %class.HighsMatrixSlice.base.109, [4 x i8] }
%class.HighsMatrixSlice.base.109 = type <{ ptr, ptr, ptr, ptr, i32 }>
%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] }>
%"struct.std::_Bit_reference" = type { ptr, i64 }
%"class.std::vector.519" = type { %"struct.std::_Vector_base.520" }
%"struct.std::_Vector_base.520" = type { %"struct.std::_Vector_base<unsigned long, std::allocator<unsigned long>>::_Vector_impl" }
%"struct.std::_Vector_base<unsigned long, std::allocator<unsigned long>>::_Vector_impl" = type { %"struct.std::_Vector_base<unsigned long, std::allocator<unsigned long>>::_Vector_impl_data" }
%"struct.std::_Vector_base<unsigned long, std::allocator<unsigned long>>::_Vector_impl_data" = type { ptr, ptr, ptr }
%"class.std::vector.171" = type { %"struct.std::_Vector_base.172" }
%"struct.std::_Vector_base.172" = type { %"struct.std::_Vector_base<std::pair<double, int>, std::allocator<std::pair<double, int>>>::_Vector_impl" }
%"struct.std::_Vector_base<std::pair<double, int>, std::allocator<std::pair<double, int>>>::_Vector_impl" = type { %"struct.std::_Vector_base<std::pair<double, int>, std::allocator<std::pair<double, int>>>::_Vector_impl_data" }
%"struct.std::_Vector_base<std::pair<double, int>, std::allocator<std::pair<double, int>>>::_Vector_impl_data" = type { ptr, ptr, ptr }
%"class.std::allocator.173" = type { i8 }
%class.HighsHashTable.352 = type { %"class.std::unique_ptr.353", %"class.std::unique_ptr.203", i64, i64, i64 }
%"class.std::unique_ptr.353" = type { %"struct.std::__uniq_ptr_data.354" }
%"struct.std::__uniq_ptr_data.354" = type { %"class.std::__uniq_ptr_impl.355" }
%"class.std::__uniq_ptr_impl.355" = type { %"class.std::tuple.356" }
%"class.std::tuple.356" = type { %"struct.std::_Tuple_impl.357" }
%"struct.std::_Tuple_impl.357" = type { %"struct.std::_Head_base.360" }
%"struct.std::_Head_base.360" = type { ptr }
%"class.std::unique_ptr.203" = type { %"struct.std::__uniq_ptr_data.204" }
%"struct.std::__uniq_ptr_data.204" = type { %"class.std::__uniq_ptr_impl.205" }
%"class.std::__uniq_ptr_impl.205" = type { %"class.std::tuple.206" }
%"class.std::tuple.206" = type { %"struct.std::_Tuple_impl.207" }
%"struct.std::_Tuple_impl.207" = type { %"struct.std::_Head_base.210" }
%"struct.std::_Head_base.210" = type { ptr }
%"class.__gnu_cxx::__normal_iterator" = type { ptr }
%"class.std::unordered_multimap" = type { %"class.std::_Hashtable.122" }
%"class.std::_Hashtable.122" = type { ptr, i64, %"struct.std::__detail::_Hash_node_base", i64, %"struct.std::__detail::_Prime_rehash_policy", ptr }
%"struct.std::__detail::_Hash_node_base" = type { ptr }
%"struct.std::__detail::_Prime_rehash_policy" = type { float, i64 }
%"struct.std::__detail::_Node_iterator.521" = type { %"struct.std::__detail::_Node_iterator_base.522" }
%"struct.std::__detail::_Node_iterator_base.522" = type { ptr }
%class.anon.526 = type { ptr }
%class.anon.527 = type { ptr }
%class.anon.528 = type { ptr, ptr, ptr, ptr, ptr, ptr }
%class.anon.529 = type { ptr, ptr, ptr, ptr, ptr, ptr }
%class.anon.530 = type { ptr, ptr, ptr, ptr }
%class.anon.531 = type { ptr, ptr, ptr, ptr }
%class.HighsCDouble = type { double, double }
%"struct.std::__detail::_Node_const_iterator" = type { %"struct.std::__detail::_Node_iterator_base.522" }
%class.anon.532 = 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 }
%"class.std::set" = type { %"class.std::_Rb_tree" }
%"class.std::_Rb_tree" = type { %"struct.std::_Rb_tree<std::pair<int, int>, std::pair<int, int>, std::_Identity<std::pair<int, int>>, std::less<std::pair<int, int>>>::_Rb_tree_impl" }
%"struct.std::_Rb_tree<std::pair<int, int>, std::pair<int, int>, std::_Identity<std::pair<int, int>>, std::less<std::pair<int, int>>>::_Rb_tree_impl" = type { [8 x i8], %"struct.std::_Rb_tree_header" }
%"struct.std::_Rb_tree_header" = type { %"struct.std::_Rb_tree_node_base", i64 }
%"struct.std::_Rb_tree_node_base" = type { i32, ptr, ptr, ptr }
%"class.std::vector.48" = type { %"struct.std::_Vector_base.49" }
%"struct.std::_Vector_base.49" = type { %"struct.std::_Vector_base<std::_Rb_tree_const_iterator<std::pair<int, int>>, std::allocator<std::_Rb_tree_const_iterator<std::pair<int, int>>>>::_Vector_impl" }
%"struct.std::_Vector_base<std::_Rb_tree_const_iterator<std::pair<int, int>>, std::allocator<std::_Rb_tree_const_iterator<std::pair<int, int>>>>::_Vector_impl" = type { %"struct.std::_Vector_base<std::_Rb_tree_const_iterator<std::pair<int, int>>, std::allocator<std::_Rb_tree_const_iterator<std::pair<int, int>>>>::_Vector_impl_data" }
%"struct.std::_Vector_base<std::_Rb_tree_const_iterator<std::pair<int, int>>, std::allocator<std::_Rb_tree_const_iterator<std::pair<int, int>>>>::_Vector_impl_data" = type { ptr, ptr, ptr }
%"class.std::vector.5" = type { %"struct.std::_Vector_base.6" }
%"struct.std::_Vector_base.6" = type { %"struct.std::_Vector_base<int, std::allocator<int>>::_Vector_impl" }
%"struct.std::_Vector_base<int, std::allocator<int>>::_Vector_impl" = type { %"struct.std::_Vector_base<int, std::allocator<int>>::_Vector_impl_data" }
%"struct.std::_Vector_base<int, std::allocator<int>>::_Vector_impl_data" = type { ptr, ptr, ptr }
%"class.std::vector.10" = type { %"struct.std::_Vector_base.11" }
%"struct.std::_Vector_base.11" = type { %"struct.std::_Vector_base<unsigned char, std::allocator<unsigned char>>::_Vector_impl" }
%"struct.std::_Vector_base<unsigned char, std::allocator<unsigned char>>::_Vector_impl" = type { %"struct.std::_Vector_base<unsigned char, std::allocator<unsigned char>>::_Vector_impl_data" }
%"struct.std::_Vector_base<unsigned char, std::allocator<unsigned char>>::_Vector_impl_data" = type { ptr, ptr, ptr }
%"class.std::vector.53" = type { %"struct.std::_Vector_base.54" }
%"struct.std::_Vector_base.54" = type { %"struct.std::_Vector_base<unsigned short, std::allocator<unsigned short>>::_Vector_impl" }
%"struct.std::_Vector_base<unsigned short, std::allocator<unsigned short>>::_Vector_impl" = type { %"struct.std::_Vector_base<unsigned short, std::allocator<unsigned short>>::_Vector_impl_data" }
%"struct.std::_Vector_base<unsigned short, std::allocator<unsigned short>>::_Vector_impl_data" = type { ptr, ptr, ptr }
%class.HPresolveAnalysis = type { ptr, ptr, ptr, ptr, ptr, i32, i32, %"class.std::vector.58", i8, i8, i32, i32, i32, %struct.HighsPresolveLog }
%"class.std::vector.58" = type { %"struct.std::_Bvector_base" }
%"struct.std::_Bvector_base" = type { %"struct.std::_Bvector_base<std::allocator<bool>>::_Bvector_impl" }
%"struct.std::_Bvector_base<std::allocator<bool>>::_Bvector_impl" = type { %"struct.std::_Bvector_base<std::allocator<bool>>::_Bvector_impl_data" }
%"struct.std::_Bvector_base<std::allocator<bool>>::_Bvector_impl_data" = type { %"struct.std::_Bit_iterator", %"struct.std::_Bit_iterator", ptr }
%"struct.std::_Bit_iterator" = type { %"struct.std::_Bit_iterator_base.base", [4 x i8] }
%"struct.std::_Bit_iterator_base.base" = type <{ ptr, i32 }>
%struct.HighsPresolveLog = type { %"class.std::vector.62" }
%"class.std::vector.62" = type { %"struct.std::_Vector_base.63" }
%"struct.std::_Vector_base.63" = type { %"struct.std::_Vector_base<HighsPresolveRuleLog, std::allocator<HighsPresolveRuleLog>>::_Vector_impl" }
%"struct.std::_Vector_base<HighsPresolveRuleLog, std::allocator<HighsPresolveRuleLog>>::_Vector_impl" = type { %"struct.std::_Vector_base<HighsPresolveRuleLog, std::allocator<HighsPresolveRuleLog>>::_Vector_impl_data" }
%"struct.std::_Vector_base<HighsPresolveRuleLog, std::allocator<HighsPresolveRuleLog>>::_Vector_impl_data" = type { ptr, ptr, ptr }
%"struct.std::pair.468" = 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 }
%"class.std::__cxx11::basic_string" = type { %"struct.std::__cxx11::basic_string<char>::_Alloc_hider", i64, %union.anon }
%"struct.std::__cxx11::basic_string<char>::_Alloc_hider" = type { ptr }
%union.anon = type { i64, [8 x i8] }
%struct.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 } }
%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::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.523" = type <{ i64, i32, [4 x i8] }>

@.str.55 = external hidden unnamed_addr constant [76 x i8], align 1
@.str.150 = external hidden unnamed_addr constant [56 x i8], align 1
@__PRETTY_FUNCTION__._ZN8presolve9HPresolve25detectParallelRowsAndColsERNS_19HighsPostsolveStackE = external hidden unnamed_addr constant [88 x i8], align 1
@.str.151 = external hidden unnamed_addr constant [21 x i8], align 1
@.str.152 = external hidden unnamed_addr constant [45 x i8], align 1
@.str.153 = external hidden unnamed_addr constant [26 x i8], align 1
@.str.154 = external hidden unnamed_addr constant [7 x i8], align 1
@.str.155 = external hidden unnamed_addr constant [85 x i8], align 1
@.str.156 = external hidden unnamed_addr constant [4 x i8], align 1
@.str.157 = external hidden unnamed_addr constant [4 x i8], align 1
@.str.158 = external hidden unnamed_addr constant [15 x i8], align 1
@.str.159 = external hidden unnamed_addr constant [17 x i8], align 1
@.str.160 = external hidden unnamed_addr constant [62 x i8], align 1
@.str.161 = external hidden unnamed_addr constant [30 x i8], align 1
@.str.162 = external hidden unnamed_addr constant [25 x i8], align 1
@.str.163 = external hidden unnamed_addr constant [18 x i8], align 1
@.str.164 = external hidden unnamed_addr constant [27 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

declare i32 @printf(ptr noundef, ...) #1

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

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

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

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

; Function Attrs: inlinehint mustprogress nounwind uwtable
declare dso_local noundef double @_ZSt3absd(double noundef) #3

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

; Function Attrs: mustprogress uwtable
declare dso_local void @_ZN8presolve9HPresolve8storeRowEi(ptr noundef nonnull align 8 dereferenceable(1720), i32 noundef) #5 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)) #5 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)) #5 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)) #5 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)) #2 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)) #2 align 2

; Function Attrs: mustprogress uwtable
declare dso_local noundef zeroext i1 @_ZN8presolve9HPresolve24fixColToLowerOrUnboundedERNS_19HighsPostsolveStackEi(ptr noundef nonnull align 8 dereferenceable(1720), ptr noundef nonnull align 8 dereferenceable(224), i32 noundef) #5 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)) #5 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)) #2 align 2

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

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

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

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

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

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

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

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

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

; Function Attrs: mustprogress uwtable
declare dso_local { double, double } @_ZmidRK12HighsCDouble(double noundef, ptr noundef nonnull align 8 dereferenceable(16)) #5

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

; Function Attrs: mustprogress uwtable
declare dso_local { ptr, i64 } @_ZNSt6vectorIbSaIbEEixEm(ptr noundef nonnull align 8 dereferenceable(40), i64 noundef) #5 align 2

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

declare void @_ZN17HPresolveAnalysis20startPresolveRuleLogEi(ptr noundef nonnull align 8 dereferenceable(128), i32 noundef) #1

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

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

declare void @_ZN17HPresolveAnalysis19stopPresolveRuleLogEi(ptr noundef nonnull align 8 dereferenceable(128), i32 noundef) #1

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

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

; Function Attrs: mustprogress uwtable
define dso_local noundef i32 @_ZN8presolve9HPresolve25detectParallelRowsAndColsERNS_19HighsPostsolveStackE(ptr noundef nonnull align 8 dereferenceable(1720) %0, ptr noundef nonnull align 8 dereferenceable(224) %1) #5 align 2 personality ptr @__gxx_personality_v0 {
  %3 = alloca i32, align 4
  %4 = alloca ptr, align 8
  %5 = alloca ptr, align 8
  %6 = alloca %"struct.std::_Bit_reference", align 8
  %7 = alloca i8, align 1
  %8 = alloca %"class.std::vector.519", align 8
  %9 = alloca %"class.std::vector.519", align 8
  %10 = alloca %"class.std::vector.171", align 8
  %11 = alloca %"class.std::allocator.173", align 1
  %12 = alloca ptr, align 8
  %13 = alloca i32, align 4
  %14 = alloca %"class.std::vector.171", align 8
  %15 = alloca %"class.std::allocator.173", align 1
  %16 = alloca %class.HighsHashTable.352, align 8
  %17 = alloca i32, align 4
  %18 = alloca %"class.__gnu_cxx::__normal_iterator", align 8
  %19 = alloca %"class.__gnu_cxx::__normal_iterator", align 8
  %20 = alloca %"class.__gnu_cxx::__normal_iterator", align 8
  %21 = alloca %"class.__gnu_cxx::__normal_iterator", align 8
  %22 = alloca i32, align 4
  %23 = alloca double, align 8
  %24 = alloca double, align 8
  %25 = alloca double, align 8
  %26 = alloca i32, align 4
  %27 = alloca %"class.std::unordered_multimap", align 8
  %28 = alloca i8, align 1
  %29 = alloca i32, align 4
  %30 = alloca i32, align 4
  %31 = alloca i32, align 4
  %32 = alloca %"struct.std::__detail::_Node_iterator.521", align 8
  %33 = alloca %"struct.std::__detail::_Node_iterator.521", align 8
  %34 = alloca i32, align 4
  %35 = alloca i32, align 4
  %36 = alloca %"struct.std::__detail::_Node_iterator.521", align 8
  %37 = alloca %"struct.std::__detail::_Node_iterator.521", align 8
  %38 = alloca i32, align 4
  %39 = alloca i32, align 4
  %40 = alloca double, align 8
  %41 = alloca i8, align 1
  %42 = alloca i8, align 1
  %43 = alloca %class.anon.526, align 8
  %44 = alloca %class.anon.527, align 8
  %45 = alloca %class.anon.528, align 8
  %46 = alloca %class.anon.529, align 8
  %47 = alloca %class.anon.530, align 8
  %48 = alloca %class.anon.531, align 8
  %49 = alloca double, align 8
  %50 = alloca double, align 8
  %51 = alloca %class.HighsCDouble, align 8
  %52 = alloca %class.HighsCDouble, align 8
  %53 = alloca %class.HighsCDouble, align 8
  %54 = alloca i32, align 4
  %55 = alloca i32, align 4
  %56 = alloca i32, align 4
  %57 = alloca i32, align 4
  %58 = alloca i32, align 4
  %59 = alloca i32, align 4
  %60 = alloca i8, align 1
  %61 = alloca i8, align 1
  %62 = alloca i8, align 1
  %63 = alloca double, align 8
  %64 = alloca i8, align 1
  %65 = alloca ptr, align 8
  %66 = alloca %struct.HighsTripletListSlice, align 8
  %67 = alloca %"class.HighsMatrixSlice<HighsTripletListSlice>::iterator", align 8
  %68 = alloca %"class.HighsMatrixSlice<HighsTripletListSlice>::iterator", align 8
  %69 = alloca ptr, align 8
  %70 = alloca i32, align 4
  %71 = alloca %class.HighsCDouble, align 8
  %72 = alloca %class.HighsCDouble, align 8
  %73 = alloca %class.HighsCDouble, align 8
  %74 = alloca i32, align 4
  %75 = alloca i32, align 4
  %76 = alloca i32, align 4
  %77 = alloca i32, align 4
  %78 = alloca i8, align 1
  %79 = alloca i32, align 4
  %80 = alloca i32, align 4
  %81 = alloca double, align 8
  %82 = alloca double, align 8
  %83 = alloca i32, align 4
  %84 = alloca i32, align 4
  %85 = alloca i32, align 4
  %86 = alloca %"struct.std::__detail::_Node_iterator.521", align 8
  %87 = alloca %"struct.std::__detail::_Node_iterator.521", align 8
  %88 = alloca i32, align 4
  %89 = alloca i32, align 4
  %90 = alloca %"struct.std::__detail::_Node_const_iterator", align 8
  %91 = alloca %"struct.std::__detail::_Node_iterator.521", align 8
  %92 = alloca i32, align 4
  %93 = alloca i32, align 4
  %94 = alloca %"struct.std::__detail::_Node_iterator.521", align 8
  %95 = alloca %"struct.std::__detail::_Node_iterator.521", align 8
  %96 = alloca %class.anon.532, align 8
  %97 = alloca i32, align 4
  %98 = alloca i32, align 4
  %99 = alloca %"struct.std::__detail::_Node_iterator.521", align 8
  %100 = alloca %"struct.std::__detail::_Node_iterator.521", align 8
  %101 = alloca i32, align 4
  %102 = alloca %"struct.std::__detail::_Node_iterator.521", align 8
  %103 = alloca i32, align 4
  %104 = alloca double, align 8
  %105 = alloca i8, align 1
  %106 = alloca ptr, align 8
  %107 = alloca %struct.HighsTripletPositionSlice, align 8
  %108 = alloca %"class.HighsMatrixSlice<HighsTripletPositionSlice>::iterator", align 8
  %109 = alloca %"class.HighsMatrixSlice<HighsTripletPositionSlice>::iterator", align 8
  %110 = alloca ptr, align 8
  %111 = alloca i32, align 4
  %112 = alloca %class.HighsCDouble, align 8
  %113 = alloca %class.HighsCDouble, align 8
  %114 = alloca %class.HighsCDouble, align 8
  %115 = alloca i8, align 1
  %116 = alloca i8, align 1
  %117 = alloca double, align 8
  %118 = alloca double, align 8
  %119 = alloca double, align 8
  %120 = alloca double, align 8
  %121 = alloca double, align 8
  %122 = alloca double, align 8
  %123 = alloca ptr, align 8
  %124 = alloca %"class.__gnu_cxx::__normal_iterator", align 8
  %125 = alloca %"class.__gnu_cxx::__normal_iterator", align 8
  %126 = alloca i32, align 4
  %127 = alloca i32, align 4
  %128 = alloca %struct.HighsTripletPositionSlice, align 8
  %129 = alloca i32, align 4
  %130 = alloca %struct.HighsTripletTreeSlicePreOrder, align 8
  %131 = alloca double, align 8
  %132 = alloca double, align 8
  %133 = alloca %"struct.std::__detail::_Node_iterator.521", align 8
  %134 = alloca %"struct.std::__detail::_Node_iterator.521", align 8
  %135 = alloca i32, align 4
  %136 = alloca %"struct.std::__detail::_Node_const_iterator", align 8
  %137 = alloca %"struct.std::__detail::_Node_iterator.521", align 8
  store ptr %0, ptr %4, align 8, !tbaa !5
  store ptr %1, ptr %5, align 8, !tbaa !5
  %138 = load ptr, ptr %4, align 8
  call void @llvm.lifetime.start.p0(i64 16, ptr %6) #9
  %139 = getelementptr inbounds %"class.presolve::HPresolve", ptr %138, i32 0, i32 58
  %140 = getelementptr inbounds %class.HPresolveAnalysis, ptr %139, i32 0, i32 7
  %141 = call { ptr, i64 } @_ZNSt6vectorIbSaIbEEixEm(ptr noundef nonnull align 8 dereferenceable(40) %140, i64 noundef 13)
  %142 = getelementptr inbounds { ptr, i64 }, ptr %6, i32 0, i32 0
  %143 = extractvalue { ptr, i64 } %141, 0
  store ptr %143, ptr %142, align 8
  %144 = getelementptr inbounds { ptr, i64 }, ptr %6, i32 0, i32 1
  %145 = extractvalue { ptr, i64 } %141, 1
  store i64 %145, ptr %144, align 8
  %146 = call noundef zeroext i1 @_ZNKSt14_Bit_referencecvbEv(ptr noundef nonnull align 8 dereferenceable(16) %6) #9
  br i1 %146, label %147, label %148

147:                                              ; preds = %2
  br label %150

148:                                              ; preds = %2
  call void @__assert_fail(ptr noundef @.str.150, ptr noundef @.str.55, i32 noundef 5634, ptr noundef @__PRETTY_FUNCTION__._ZN8presolve9HPresolve25detectParallelRowsAndColsERNS_19HighsPostsolveStackE) #10
  unreachable

149:                                              ; No predecessors!
  br label %150

150:                                              ; preds = %149, %147
  call void @llvm.lifetime.end.p0(i64 16, ptr %6) #9
  call void @llvm.lifetime.start.p0(i64 1, ptr %7) #9
  %151 = getelementptr inbounds %"class.presolve::HPresolve", ptr %138, i32 0, i32 58
  %152 = getelementptr inbounds %class.HPresolveAnalysis, ptr %151, i32 0, i32 9
  %153 = load i8, ptr %152, align 1, !tbaa !9, !range !74, !noundef !75
  %154 = trunc i8 %153 to i1
  %155 = zext i1 %154 to i8
  store i8 %155, ptr %7, align 1, !tbaa !76
  %156 = load i8, ptr %7, align 1, !tbaa !76, !range !74, !noundef !75
  %157 = trunc i8 %156 to i1
  br i1 %157, label %158, label %160

158:                                              ; preds = %150
  %159 = getelementptr inbounds %"class.presolve::HPresolve", ptr %138, i32 0, i32 58
  call void @_ZN17HPresolveAnalysis20startPresolveRuleLogEi(ptr noundef nonnull align 8 dereferenceable(128) %159, i32 noundef 13)
  br label %160

160:                                              ; preds = %158, %150
  call void @llvm.lifetime.start.p0(i64 24, ptr %8) #9
  call void @_ZNSt6vectorImSaImEEC2Ev(ptr noundef nonnull align 8 dereferenceable(24) %8) #9
  call void @llvm.lifetime.start.p0(i64 24, ptr %9) #9
  call void @_ZNSt6vectorImSaImEEC2Ev(ptr noundef nonnull align 8 dereferenceable(24) %9) #9
  call void @llvm.lifetime.start.p0(i64 24, ptr %10) #9
  %161 = getelementptr inbounds %"class.presolve::HPresolve", ptr %138, i32 0, i32 14
  %162 = call noundef i64 @_ZNKSt6vectorIiSaIiEE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24) %161) #9
  call void @llvm.lifetime.start.p0(i64 1, ptr %11) #9
  call void @_ZNSaISt4pairIdiEEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %11) #9
  invoke void @_ZNSt6vectorISt4pairIdiESaIS1_EEC2EmRKS2_(ptr noundef nonnull align 8 dereferenceable(24) %10, i64 noundef %162, ptr noundef nonnull align 1 dereferenceable(1) %11)
          to label %163 unwind label %198

163:                                              ; preds = %160
  call void @_ZNSt15__new_allocatorISt4pairIdiEED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %11) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr %11) #9
  call void @llvm.lifetime.start.p0(i64 24, ptr %14) #9
  %164 = getelementptr inbounds %"class.presolve::HPresolve", ptr %138, i32 0, i32 17
  %165 = call noundef i64 @_ZNKSt6vectorIiSaIiEE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24) %164) #9
  call void @llvm.lifetime.start.p0(i64 1, ptr %15) #9
  call void @_ZNSaISt4pairIdiEEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %15) #9
  invoke void @_ZNSt6vectorISt4pairIdiESaIS1_EEC2EmRKS2_(ptr noundef nonnull align 8 dereferenceable(24) %14, i64 noundef %165, ptr noundef nonnull align 1 dereferenceable(1) %15)
          to label %166 unwind label %202

166:                                              ; preds = %163
  call void @_ZNSt15__new_allocatorISt4pairIdiEED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %15) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr %15) #9
  call void @llvm.lifetime.start.p0(i64 40, ptr %16) #9
  invoke void @_ZN14HighsHashTableIiiEC2Ev(ptr noundef nonnull align 8 dereferenceable(40) %16)
          to label %167 unwind label %206

167:                                              ; preds = %166
  call void @llvm.lifetime.start.p0(i64 4, ptr %17) #9
  %168 = getelementptr inbounds %"class.presolve::HPresolve", ptr %138, i32 0, i32 5
  %169 = call noundef i64 @_ZNKSt6vectorIdSaIdEE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24) %168) #9
  %170 = trunc i64 %169 to i32
  store i32 %170, ptr %17, align 4, !tbaa !77
  %171 = getelementptr inbounds %"class.presolve::HPresolve", ptr %138, i32 0, i32 14
  %172 = call ptr @_ZNSt6vectorIiSaIiEE5beginEv(ptr noundef nonnull align 8 dereferenceable(24) %171) #9
  %173 = getelementptr inbounds %"class.__gnu_cxx::__normal_iterator", ptr %18, i32 0, i32 0
  store ptr %172, ptr %173, align 8
  %174 = getelementptr inbounds %"class.presolve::HPresolve", ptr %138, i32 0, i32 14
  %175 = call ptr @_ZNSt6vectorIiSaIiEE3endEv(ptr noundef nonnull align 8 dereferenceable(24) %174) #9
  %176 = getelementptr inbounds %"class.__gnu_cxx::__normal_iterator", ptr %19, i32 0, i32 0
  store ptr %175, ptr %176, align 8
  %177 = getelementptr inbounds %"class.__gnu_cxx::__normal_iterator", ptr %18, i32 0, i32 0
  %178 = load ptr, ptr %177, align 8
  %179 = getelementptr inbounds %"class.__gnu_cxx::__normal_iterator", ptr %19, i32 0, i32 0
  %180 = load ptr, ptr %179, align 8
  invoke void @_ZNSt6vectorImSaImEE6assignIN9__gnu_cxx17__normal_iteratorIPiS_IiSaIiEEEEvEEvT_S9_(ptr noundef nonnull align 8 dereferenceable(24) %8, ptr %178, ptr %180)
          to label %181 unwind label %210

181:                                              ; preds = %167
  %182 = getelementptr inbounds %"class.presolve::HPresolve", ptr %138, i32 0, i32 17
  %183 = call ptr @_ZNSt6vectorIiSaIiEE5beginEv(ptr noundef nonnull align 8 dereferenceable(24) %182) #9
  %184 = getelementptr inbounds %"class.__gnu_cxx::__normal_iterator", ptr %20, i32 0, i32 0
  store ptr %183, ptr %184, align 8
  %185 = getelementptr inbounds %"class.presolve::HPresolve", ptr %138, i32 0, i32 17
  %186 = call ptr @_ZNSt6vectorIiSaIiEE3endEv(ptr noundef nonnull align 8 dereferenceable(24) %185) #9
  %187 = getelementptr inbounds %"class.__gnu_cxx::__normal_iterator", ptr %21, i32 0, i32 0
  store ptr %186, ptr %187, align 8
  %188 = getelementptr inbounds %"class.__gnu_cxx::__normal_iterator", ptr %20, i32 0, i32 0
  %189 = load ptr, ptr %188, align 8
  %190 = getelementptr inbounds %"class.__gnu_cxx::__normal_iterator", ptr %21, i32 0, i32 0
  %191 = load ptr, ptr %190, align 8
  invoke void @_ZNSt6vectorImSaImEE6assignIN9__gnu_cxx17__normal_iteratorIPiS_IiSaIiEEEEvEEvT_S9_(ptr noundef nonnull align 8 dereferenceable(24) %9, ptr %189, ptr %191)
          to label %192 unwind label %210

192:                                              ; preds = %181
  call void @llvm.lifetime.start.p0(i64 4, ptr %22) #9
  store i32 0, ptr %22, align 4, !tbaa !77
  br label %193

193:                                              ; preds = %449, %192
  %194 = load i32, ptr %22, align 4, !tbaa !77
  %195 = load i32, ptr %17, align 4, !tbaa !77
  %196 = icmp ne i32 %194, %195
  br i1 %196, label %214, label %197

197:                                              ; preds = %193
  call void @llvm.lifetime.end.p0(i64 4, ptr %22) #9
  br label %455

198:                                              ; preds = %160
  %199 = landingpad { ptr, i32 }
          cleanup
  %200 = extractvalue { ptr, i32 } %199, 0
  store ptr %200, ptr %12, align 8
  %201 = extractvalue { ptr, i32 } %199, 1
  store i32 %201, ptr %13, align 4
  call void @_ZNSt15__new_allocatorISt4pairIdiEED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %11) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr %11) #9
  br label %2957

202:                                              ; preds = %163
  %203 = landingpad { ptr, i32 }
          cleanup
  %204 = extractvalue { ptr, i32 } %203, 0
  store ptr %204, ptr %12, align 8
  %205 = extractvalue { ptr, i32 } %203, 1
  store i32 %205, ptr %13, align 4
  call void @_ZNSt15__new_allocatorISt4pairIdiEED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %15) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr %15) #9
  br label %2956

206:                                              ; preds = %166
  %207 = landingpad { ptr, i32 }
          cleanup
  %208 = extractvalue { ptr, i32 } %207, 0
  store ptr %208, ptr %12, align 8
  %209 = extractvalue { ptr, i32 } %207, 1
  store i32 %209, ptr %13, align 4
  br label %2955

210:                                              ; preds = %181, %167
  %211 = landingpad { ptr, i32 }
          cleanup
  %212 = extractvalue { ptr, i32 } %211, 0
  store ptr %212, ptr %12, align 8
  %213 = extractvalue { ptr, i32 } %211, 1
  store i32 %213, ptr %13, align 4
  br label %2954

214:                                              ; preds = %193
  %215 = getelementptr inbounds %"class.presolve::HPresolve", ptr %138, i32 0, i32 5
  %216 = load i32, ptr %22, align 4, !tbaa !77
  %217 = sext i32 %216 to i64
  %218 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt6vectorIdSaIdEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %215, i64 noundef %217) #9
  %219 = load double, ptr %218, align 8, !tbaa !78
  %220 = fcmp oeq double %219, 0.000000e+00
  br i1 %220, label %221, label %222

221:                                              ; preds = %214
  br label %449

222:                                              ; preds = %214
  %223 = getelementptr inbounds %"class.presolve::HPresolve", ptr %138, i32 0, i32 47
  %224 = getelementptr inbounds %"class.presolve::HPresolve", ptr %138, i32 0, i32 7
  %225 = load i32, ptr %22, align 4, !tbaa !77
  %226 = sext i32 %225 to i64
  %227 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNSt6vectorIiSaIiEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %224, i64 noundef %226) #9
  %228 = load i32, ptr %227, align 4, !tbaa !77
  %229 = sext i32 %228 to i64
  %230 = call noundef nonnull align 1 dereferenceable(1) ptr @_ZNSt6vectorIhSaIhEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %223, i64 noundef %229) #9
  %231 = load i8, ptr %230, align 1, !tbaa !79
  %232 = icmp ne i8 %231, 0
  %233 = xor i1 %232, true
  br i1 %233, label %234, label %235

234:                                              ; preds = %222
  br label %237

235:                                              ; preds = %222
  call void @__assert_fail(ptr noundef @.str.151, ptr noundef @.str.55, i32 noundef 5654, ptr noundef @__PRETTY_FUNCTION__._ZN8presolve9HPresolve25detectParallelRowsAndColsERNS_19HighsPostsolveStackE) #10
  unreachable

236:                                              ; No predecessors!
  br label %237

237:                                              ; preds = %236, %234
  %238 = getelementptr inbounds %"class.presolve::HPresolve", ptr %138, i32 0, i32 17
  %239 = getelementptr inbounds %"class.presolve::HPresolve", ptr %138, i32 0, i32 7
  %240 = load i32, ptr %22, align 4, !tbaa !77
  %241 = sext i32 %240 to i64
  %242 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNSt6vectorIiSaIiEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %239, i64 noundef %241) #9
  %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) %238, i64 noundef %244) #9
  %246 = load i32, ptr %245, align 4, !tbaa !77
  %247 = icmp eq i32 %246, 1
  br i1 %247, label %248, label %283

248:                                              ; preds = %237
  %249 = getelementptr inbounds %"class.presolve::HPresolve", ptr %138, i32 0, i32 5
  %250 = load i32, ptr %22, align 4, !tbaa !77
  %251 = sext i32 %250 to i64
  %252 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt6vectorIdSaIdEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %249, i64 noundef %251) #9
  %253 = load double, ptr %252, align 8, !tbaa !78
  %254 = getelementptr inbounds %"class.presolve::HPresolve", ptr %138, i32 0, i32 7
  %255 = load i32, ptr %22, align 4, !tbaa !77
  %256 = sext i32 %255 to i64
  %257 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNSt6vectorIiSaIiEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %254, i64 noundef %256) #9
  %258 = load i32, ptr %257, align 4, !tbaa !77
  %259 = sext i32 %258 to i64
  %260 = call noundef nonnull align 8 dereferenceable(12) ptr @_ZNSt6vectorISt4pairIdiESaIS1_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %14, i64 noundef %259) #9
  %261 = getelementptr inbounds %"struct.std::pair.468", ptr %260, i32 0, i32 0
  store double %253, ptr %261, align 8, !tbaa !80
  %262 = getelementptr inbounds %"class.presolve::HPresolve", ptr %138, i32 0, i32 6
  %263 = load i32, ptr %22, align 4, !tbaa !77
  %264 = sext i32 %263 to i64
  %265 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNSt6vectorIiSaIiEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %262, i64 noundef %264) #9
  %266 = load i32, ptr %265, align 4, !tbaa !77
  %267 = sext i32 %266 to i64
  %268 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt6vectorImSaImEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %8, i64 noundef %267) #9
  %269 = load i64, ptr %268, align 8, !tbaa !82
  %270 = add i64 %269, -1
  store i64 %270, ptr %268, align 8, !tbaa !82
  %271 = getelementptr inbounds %"class.presolve::HPresolve", ptr %138, i32 0, i32 6
  %272 = load i32, ptr %22, align 4, !tbaa !77
  %273 = sext i32 %272 to i64
  %274 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNSt6vectorIiSaIiEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %271, i64 noundef %273) #9
  %275 = invoke noundef nonnull align 4 dereferenceable(4) ptr @_ZN14HighsHashTableIiiEixERKi(ptr noundef nonnull align 8 dereferenceable(40) %16, ptr noundef nonnull align 4 dereferenceable(4) %274)
          to label %276 unwind label %279

276:                                              ; preds = %248
  %277 = load i32, ptr %275, align 4, !tbaa !77
  %278 = add nsw i32 %277, 1
  store i32 %278, ptr %275, align 4, !tbaa !77
  br label %449

279:                                              ; preds = %248
  %280 = landingpad { ptr, i32 }
          cleanup
  %281 = extractvalue { ptr, i32 } %280, 0
  store ptr %281, ptr %12, align 8
  %282 = extractvalue { ptr, i32 } %280, 1
  store i32 %282, ptr %13, align 4
  br label %454

283:                                              ; preds = %237
  call void @llvm.lifetime.start.p0(i64 8, ptr %23) #9
  %284 = getelementptr inbounds %"class.presolve::HPresolve", ptr %138, i32 0, i32 5
  %285 = load i32, ptr %22, align 4, !tbaa !77
  %286 = sext i32 %285 to i64
  %287 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt6vectorIdSaIdEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %284, i64 noundef %286) #9
  %288 = load double, ptr %287, align 8, !tbaa !78
  %289 = invoke noundef double @_ZSt3absd(double noundef %288)
          to label %290 unwind label %362

290:                                              ; preds = %283
  store double %289, ptr %23, align 8, !tbaa !78
  call void @llvm.lifetime.start.p0(i64 8, ptr %24) #9
  %291 = getelementptr inbounds %"class.presolve::HPresolve", ptr %138, i32 0, i32 6
  %292 = load i32, ptr %22, align 4, !tbaa !77
  %293 = sext i32 %292 to i64
  %294 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNSt6vectorIiSaIiEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %291, i64 noundef %293) #9
  %295 = load i32, ptr %294, align 4, !tbaa !77
  %296 = sext i32 %295 to i64
  %297 = call noundef nonnull align 8 dereferenceable(12) ptr @_ZNSt6vectorISt4pairIdiESaIS1_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %10, i64 noundef %296) #9
  %298 = getelementptr inbounds %"struct.std::pair.468", ptr %297, i32 0, i32 0
  %299 = load double, ptr %298, align 8, !tbaa !80
  %300 = invoke noundef double @_ZSt3absd(double noundef %299)
          to label %301 unwind label %366

301:                                              ; preds = %290
  store double %300, ptr %24, align 8, !tbaa !78
  %302 = load double, ptr %23, align 8, !tbaa !78
  %303 = load double, ptr %24, align 8, !tbaa !78
  %304 = getelementptr inbounds %"class.presolve::HPresolve", ptr %138, i32 0, i32 1
  %305 = load ptr, ptr %304, align 8, !tbaa !83
  %306 = getelementptr inbounds %struct.HighsOptionsStruct, ptr %305, i32 0, i32 12
  %307 = load double, ptr %306, align 8, !tbaa !84
  %308 = fsub double %303, %307
  %309 = fcmp oge double %302, %308
  br i1 %309, label %310, label %371

310:                                              ; preds = %301
  %311 = load double, ptr %23, align 8, !tbaa !78
  %312 = load double, ptr %24, align 8, !tbaa !78
  %313 = getelementptr inbounds %"class.presolve::HPresolve", ptr %138, i32 0, i32 1
  %314 = load ptr, ptr %313, align 8, !tbaa !83
  %315 = getelementptr inbounds %struct.HighsOptionsStruct, ptr %314, i32 0, i32 12
  %316 = load double, ptr %315, align 8, !tbaa !84
  %317 = fadd double %312, %316
  %318 = fcmp ogt double %311, %317
  br i1 %318, label %335, label %319

319:                                              ; preds = %310
  %320 = getelementptr inbounds %"class.presolve::HPresolve", ptr %138, i32 0, i32 7
  %321 = load i32, ptr %22, align 4, !tbaa !77
  %322 = sext i32 %321 to i64
  %323 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNSt6vectorIiSaIiEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %320, i64 noundef %322) #9
  %324 = load i32, ptr %323, align 4, !tbaa !77
  %325 = getelementptr inbounds %"class.presolve::HPresolve", ptr %138, i32 0, i32 6
  %326 = load i32, ptr %22, align 4, !tbaa !77
  %327 = sext i32 %326 to i64
  %328 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNSt6vectorIiSaIiEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %325, i64 noundef %327) #9
  %329 = load i32, ptr %328, align 4, !tbaa !77
  %330 = sext i32 %329 to i64
  %331 = call noundef nonnull align 8 dereferenceable(12) ptr @_ZNSt6vectorISt4pairIdiESaIS1_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %10, i64 noundef %330) #9
  %332 = getelementptr inbounds %"struct.std::pair.468", ptr %331, i32 0, i32 1
  %333 = load i32, ptr %332, align 8, !tbaa !91
  %334 = icmp slt i32 %324, %333
  br i1 %334, label %335, label %370

335:                                              ; preds = %319, %310
  %336 = getelementptr inbounds %"class.presolve::HPresolve", ptr %138, i32 0, i32 5
  %337 = load i32, ptr %22, align 4, !tbaa !77
  %338 = sext i32 %337 to i64
  %339 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt6vectorIdSaIdEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %336, i64 noundef %338) #9
  %340 = load double, ptr %339, align 8, !tbaa !78
  %341 = getelementptr inbounds %"class.presolve::HPresolve", ptr %138, i32 0, i32 6
  %342 = load i32, ptr %22, align 4, !tbaa !77
  %343 = sext i32 %342 to i64
  %344 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNSt6vectorIiSaIiEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %341, i64 noundef %343) #9
  %345 = load i32, ptr %344, align 4, !tbaa !77
  %346 = sext i32 %345 to i64
  %347 = call noundef nonnull align 8 dereferenceable(12) ptr @_ZNSt6vectorISt4pairIdiESaIS1_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %10, i64 noundef %346) #9
  %348 = getelementptr inbounds %"struct.std::pair.468", ptr %347, i32 0, i32 0
  store double %340, ptr %348, align 8, !tbaa !80
  %349 = getelementptr inbounds %"class.presolve::HPresolve", ptr %138, i32 0, i32 7
  %350 = load i32, ptr %22, align 4, !tbaa !77
  %351 = sext i32 %350 to i64
  %352 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNSt6vectorIiSaIiEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %349, i64 noundef %351) #9
  %353 = load i32, ptr %352, align 4, !tbaa !77
  %354 = getelementptr inbounds %"class.presolve::HPresolve", ptr %138, i32 0, i32 6
  %355 = load i32, ptr %22, align 4, !tbaa !77
  %356 = sext i32 %355 to i64
  %357 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNSt6vectorIiSaIiEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %354, i64 noundef %356) #9
  %358 = load i32, ptr %357, align 4, !tbaa !77
  %359 = sext i32 %358 to i64
  %360 = call noundef nonnull align 8 dereferenceable(12) ptr @_ZNSt6vectorISt4pairIdiESaIS1_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %10, i64 noundef %359) #9
  %361 = getelementptr inbounds %"struct.std::pair.468", ptr %360, i32 0, i32 1
  store i32 %353, ptr %361, align 8, !tbaa !91
  br label %370

362:                                              ; preds = %283
  %363 = landingpad { ptr, i32 }
          cleanup
  %364 = extractvalue { ptr, i32 } %363, 0
  store ptr %364, ptr %12, align 8
  %365 = extractvalue { ptr, i32 } %363, 1
  store i32 %365, ptr %13, align 4
  br label %453

366:                                              ; preds = %290
  %367 = landingpad { ptr, i32 }
          cleanup
  %368 = extractvalue { ptr, i32 } %367, 0
  store ptr %368, ptr %12, align 8
  %369 = extractvalue { ptr, i32 } %367, 1
  store i32 %369, ptr %13, align 4
  br label %452

370:                                              ; preds = %335, %319
  br label %371

371:                                              ; preds = %370, %301
  call void @llvm.lifetime.start.p0(i64 8, ptr %25) #9
  %372 = getelementptr inbounds %"class.presolve::HPresolve", ptr %138, i32 0, i32 7
  %373 = load i32, ptr %22, align 4, !tbaa !77
  %374 = sext i32 %373 to i64
  %375 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNSt6vectorIiSaIiEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %372, i64 noundef %374) #9
  %376 = load i32, ptr %375, align 4, !tbaa !77
  %377 = sext i32 %376 to i64
  %378 = call noundef nonnull align 8 dereferenceable(12) ptr @_ZNSt6vectorISt4pairIdiESaIS1_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %14, i64 noundef %377) #9
  %379 = getelementptr inbounds %"struct.std::pair.468", ptr %378, i32 0, i32 0
  %380 = load double, ptr %379, align 8, !tbaa !80
  %381 = invoke noundef double @_ZSt3absd(double noundef %380)
          to label %382 unwind label %443

382:                                              ; preds = %371
  store double %381, ptr %25, align 8, !tbaa !78
  %383 = load double, ptr %23, align 8, !tbaa !78
  %384 = load double, ptr %25, align 8, !tbaa !78
  %385 = getelementptr inbounds %"class.presolve::HPresolve", ptr %138, i32 0, i32 1
  %386 = load ptr, ptr %385, align 8, !tbaa !83
  %387 = getelementptr inbounds %struct.HighsOptionsStruct, ptr %386, i32 0, i32 12
  %388 = load double, ptr %387, align 8, !tbaa !84
  %389 = fsub double %384, %388
  %390 = fcmp oge double %383, %389
  br i1 %390, label %391, label %448

391:                                              ; preds = %382
  %392 = load double, ptr %23, align 8, !tbaa !78
  %393 = load double, ptr %25, align 8, !tbaa !78
  %394 = getelementptr inbounds %"class.presolve::HPresolve", ptr %138, i32 0, i32 1
  %395 = load ptr, ptr %394, align 8, !tbaa !83
  %396 = getelementptr inbounds %struct.HighsOptionsStruct, ptr %395, i32 0, i32 12
  %397 = load double, ptr %396, align 8, !tbaa !84
  %398 = fadd double %393, %397
  %399 = fcmp ogt double %392, %398
  br i1 %399, label %416, label %400

400:                                              ; preds = %391
  %401 = getelementptr inbounds %"class.presolve::HPresolve", ptr %138, i32 0, i32 6
  %402 = load i32, ptr %22, align 4, !tbaa !77
  %403 = sext i32 %402 to i64
  %404 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNSt6vectorIiSaIiEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %401, i64 noundef %403) #9
  %405 = load i32, ptr %404, align 4, !tbaa !77
  %406 = getelementptr inbounds %"class.presolve::HPresolve", ptr %138, i32 0, i32 7
  %407 = load i32, ptr %22, align 4, !tbaa !77
  %408 = sext i32 %407 to i64
  %409 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNSt6vectorIiSaIiEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %406, i64 noundef %408) #9
  %410 = load i32, ptr %409, align 4, !tbaa !77
  %411 = sext i32 %410 to i64
  %412 = call noundef nonnull align 8 dereferenceable(12) ptr @_ZNSt6vectorISt4pairIdiESaIS1_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %14, i64 noundef %411) #9
  %413 = getelementptr inbounds %"struct.std::pair.468", ptr %412, i32 0, i32 1
  %414 = load i32, ptr %413, align 8, !tbaa !91
  %415 = icmp slt i32 %405, %414
  br i1 %415, label %416, label %447

416:                                              ; preds = %400, %391
  %417 = getelementptr inbounds %"class.presolve::HPresolve", ptr %138, i32 0, i32 5
  %418 = load i32, ptr %22, align 4, !tbaa !77
  %419 = sext i32 %418 to i64
  %420 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt6vectorIdSaIdEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %417, i64 noundef %419) #9
  %421 = load double, ptr %420, align 8, !tbaa !78
  %422 = getelementptr inbounds %"class.presolve::HPresolve", ptr %138, i32 0, i32 7
  %423 = load i32, ptr %22, align 4, !tbaa !77
  %424 = sext i32 %423 to i64
  %425 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNSt6vectorIiSaIiEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %422, i64 noundef %424) #9
  %426 = load i32, ptr %425, align 4, !tbaa !77
  %427 = sext i32 %426 to i64
  %428 = call noundef nonnull align 8 dereferenceable(12) ptr @_ZNSt6vectorISt4pairIdiESaIS1_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %14, i64 noundef %427) #9
  %429 = getelementptr inbounds %"struct.std::pair.468", ptr %428, i32 0, i32 0
  store double %421, ptr %429, align 8, !tbaa !80
  %430 = getelementptr inbounds %"class.presolve::HPresolve", ptr %138, i32 0, i32 6
  %431 = load i32, ptr %22, align 4, !tbaa !77
  %432 = sext i32 %431 to i64
  %433 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNSt6vectorIiSaIiEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %430, i64 noundef %432) #9
  %434 = load i32, ptr %433, align 4, !tbaa !77
  %435 = getelementptr inbounds %"class.presolve::HPresolve", ptr %138, i32 0, i32 7
  %436 = load i32, ptr %22, align 4, !tbaa !77
  %437 = sext i32 %436 to i64
  %438 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNSt6vectorIiSaIiEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %435, i64 noundef %437) #9
  %439 = load i32, ptr %438, align 4, !tbaa !77
  %440 = sext i32 %439 to i64
  %441 = call noundef nonnull align 8 dereferenceable(12) ptr @_ZNSt6vectorISt4pairIdiESaIS1_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %14, i64 noundef %440) #9
  %442 = getelementptr inbounds %"struct.std::pair.468", ptr %441, i32 0, i32 1
  store i32 %434, ptr %442, align 8, !tbaa !91
  br label %447

443:                                              ; preds = %371
  %444 = landingpad { ptr, i32 }
          cleanup
  %445 = extractvalue { ptr, i32 } %444, 0
  store ptr %445, ptr %12, align 8
  %446 = extractvalue { ptr, i32 } %444, 1
  store i32 %446, ptr %13, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %25) #9
  br label %452

447:                                              ; preds = %416, %400
  br label %448

448:                                              ; preds = %447, %382
  call void @llvm.lifetime.end.p0(i64 8, ptr %25) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr %24) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr %23) #9
  br label %449

449:                                              ; preds = %448, %276, %221
  %450 = load i32, ptr %22, align 4, !tbaa !77
  %451 = add nsw i32 %450, 1
  store i32 %451, ptr %22, align 4, !tbaa !77
  br label %193, !llvm.loop !92

452:                                              ; preds = %443, %366
  call void @llvm.lifetime.end.p0(i64 8, ptr %24) #9
  br label %453

453:                                              ; preds = %452, %362
  call void @llvm.lifetime.end.p0(i64 8, ptr %23) #9
  br label %454

454:                                              ; preds = %453, %279
  call void @llvm.lifetime.end.p0(i64 4, ptr %22) #9
  br label %2954

455:                                              ; preds = %197
  call void @llvm.lifetime.start.p0(i64 4, ptr %26) #9
  store i32 0, ptr %26, align 4, !tbaa !77
  br label %456

456:                                              ; preds = %590, %455
  %457 = load i32, ptr %26, align 4, !tbaa !77
  %458 = load i32, ptr %17, align 4, !tbaa !77
  %459 = icmp ne i32 %457, %458
  br i1 %459, label %461, label %460

460:                                              ; preds = %456
  call void @llvm.lifetime.end.p0(i64 4, ptr %26) #9
  br label %593

461:                                              ; preds = %456
  %462 = getelementptr inbounds %"class.presolve::HPresolve", ptr %138, i32 0, i32 5
  %463 = load i32, ptr %26, align 4, !tbaa !77
  %464 = sext i32 %463 to i64
  %465 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt6vectorIdSaIdEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %462, i64 noundef %464) #9
  %466 = load double, ptr %465, align 8, !tbaa !78
  %467 = fcmp oeq double %466, 0.000000e+00
  br i1 %467, label %468, label %469

468:                                              ; preds = %461
  br label %590

469:                                              ; preds = %461
  %470 = getelementptr inbounds %"class.presolve::HPresolve", ptr %138, i32 0, i32 46
  %471 = getelementptr inbounds %"class.presolve::HPresolve", ptr %138, i32 0, i32 6
  %472 = load i32, ptr %26, align 4, !tbaa !77
  %473 = sext i32 %472 to i64
  %474 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNSt6vectorIiSaIiEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %471, i64 noundef %473) #9
  %475 = load i32, ptr %474, align 4, !tbaa !77
  %476 = sext i32 %475 to i64
  %477 = call noundef nonnull align 1 dereferenceable(1) ptr @_ZNSt6vectorIhSaIhEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %470, i64 noundef %476) #9
  %478 = load i8, ptr %477, align 1, !tbaa !79
  %479 = icmp ne i8 %478, 0
  br i1 %479, label %492, label %480

480:                                              ; preds = %469
  %481 = getelementptr inbounds %"class.presolve::HPresolve", ptr %138, i32 0, i32 47
  %482 = getelementptr inbounds %"class.presolve::HPresolve", ptr %138, i32 0, i32 7
  %483 = load i32, ptr %26, align 4, !tbaa !77
  %484 = sext i32 %483 to i64
  %485 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNSt6vectorIiSaIiEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %482, i64 noundef %484) #9
  %486 = load i32, ptr %485, align 4, !tbaa !77
  %487 = sext i32 %486 to i64
  %488 = call noundef nonnull align 1 dereferenceable(1) ptr @_ZNSt6vectorIhSaIhEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %481, i64 noundef %487) #9
  %489 = load i8, ptr %488, align 1, !tbaa !79
  %490 = icmp ne i8 %489, 0
  %491 = xor i1 %490, true
  br label %492

492:                                              ; preds = %480, %469
  %493 = phi i1 [ false, %469 ], [ %491, %480 ]
  br i1 %493, label %494, label %495

494:                                              ; preds = %492
  br label %497

495:                                              ; preds = %492
  call void @__assert_fail(ptr noundef @.str.152, ptr noundef @.str.55, i32 noundef 5693, ptr noundef @__PRETTY_FUNCTION__._ZN8presolve9HPresolve25detectParallelRowsAndColsERNS_19HighsPostsolveStackE) #10
  unreachable

496:                                              ; No predecessors!
  br label %497

497:                                              ; preds = %496, %494
  %498 = getelementptr inbounds %"class.presolve::HPresolve", ptr %138, i32 0, i32 17
  %499 = getelementptr inbounds %"class.presolve::HPresolve", ptr %138, i32 0, i32 7
  %500 = load i32, ptr %26, align 4, !tbaa !77
  %501 = sext i32 %500 to i64
  %502 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNSt6vectorIiSaIiEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %499, i64 noundef %501) #9
  %503 = load i32, ptr %502, align 4, !tbaa !77
  %504 = sext i32 %503 to i64
  %505 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNSt6vectorIiSaIiEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %498, i64 noundef %504) #9
  %506 = load i32, ptr %505, align 4, !tbaa !77
  %507 = icmp eq i32 %506, 1
  br i1 %507, label %508, label %522

508:                                              ; preds = %497
  %509 = getelementptr inbounds %"class.presolve::HPresolve", ptr %138, i32 0, i32 6
  %510 = load i32, ptr %26, align 4, !tbaa !77
  %511 = sext i32 %510 to i64
  %512 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNSt6vectorIiSaIiEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %509, i64 noundef %511) #9
  %513 = load i32, ptr %512, align 4, !tbaa !77
  %514 = sext i32 %513 to i64
  %515 = getelementptr inbounds %"class.presolve::HPresolve", ptr %138, i32 0, i32 7
  %516 = load i32, ptr %26, align 4, !tbaa !77
  %517 = sext i32 %516 to i64
  %518 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNSt6vectorIiSaIiEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %515, i64 noundef %517) #9
  %519 = load i32, ptr %518, align 4, !tbaa !77
  %520 = sext i32 %519 to i64
  %521 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt6vectorImSaImEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %9, i64 noundef %520) #9
  store i64 %514, ptr %521, align 8, !tbaa !82
  br label %589

522:                                              ; preds = %497
  %523 = getelementptr inbounds %"class.presolve::HPresolve", ptr %138, i32 0, i32 6
  %524 = load i32, ptr %26, align 4, !tbaa !77
  %525 = sext i32 %524 to i64
  %526 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNSt6vectorIiSaIiEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %523, i64 noundef %525) #9
  %527 = load i32, ptr %526, align 4, !tbaa !77
  %528 = sext i32 %527 to i64
  %529 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt6vectorImSaImEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %8, i64 noundef %528) #9
  %530 = getelementptr inbounds %"class.presolve::HPresolve", ptr %138, i32 0, i32 7
  %531 = load i32, ptr %26, align 4, !tbaa !77
  %532 = sext i32 %531 to i64
  %533 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNSt6vectorIiSaIiEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %530, i64 noundef %532) #9
  %534 = load i32, ptr %533, align 4, !tbaa !77
  %535 = getelementptr inbounds %"class.presolve::HPresolve", ptr %138, i32 0, i32 5
  %536 = load i32, ptr %26, align 4, !tbaa !77
  %537 = sext i32 %536 to i64
  %538 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt6vectorIdSaIdEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %535, i64 noundef %537) #9
  %539 = load double, ptr %538, align 8, !tbaa !78
  %540 = getelementptr inbounds %"class.presolve::HPresolve", ptr %138, i32 0, i32 6
  %541 = load i32, ptr %26, align 4, !tbaa !77
  %542 = sext i32 %541 to i64
  %543 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNSt6vectorIiSaIiEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %540, i64 noundef %542) #9
  %544 = load i32, ptr %543, align 4, !tbaa !77
  %545 = sext i32 %544 to i64
  %546 = call noundef nonnull align 8 dereferenceable(12) ptr @_ZNSt6vectorISt4pairIdiESaIS1_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %10, i64 noundef %545) #9
  %547 = getelementptr inbounds %"struct.std::pair.468", ptr %546, i32 0, i32 0
  %548 = load double, ptr %547, align 8, !tbaa !80
  %549 = fdiv double %539, %548
  %550 = invoke noundef i32 @_ZN16HighsHashHelpers16double_hash_codeEd(double noundef %549)
          to label %551 unwind label %585

551:                                              ; preds = %522
  %552 = zext i32 %550 to i64
  invoke void @_ZN16HighsHashHelpers14sparse_combineERmim(ptr noundef nonnull align 8 dereferenceable(8) %529, i32 noundef %534, i64 noundef %552)
          to label %553 unwind label %585

553:                                              ; preds = %551
  %554 = getelementptr inbounds %"class.presolve::HPresolve", ptr %138, i32 0, i32 7
  %555 = load i32, ptr %26, align 4, !tbaa !77
  %556 = sext i32 %555 to i64
  %557 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNSt6vectorIiSaIiEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %554, i64 noundef %556) #9
  %558 = load i32, ptr %557, align 4, !tbaa !77
  %559 = sext i32 %558 to i64
  %560 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt6vectorImSaImEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %9, i64 noundef %559) #9
  %561 = getelementptr inbounds %"class.presolve::HPresolve", ptr %138, i32 0, i32 6
  %562 = load i32, ptr %26, align 4, !tbaa !77
  %563 = sext i32 %562 to i64
  %564 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNSt6vectorIiSaIiEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %561, i64 noundef %563) #9
  %565 = load i32, ptr %564, align 4, !tbaa !77
  %566 = getelementptr inbounds %"class.presolve::HPresolve", ptr %138, i32 0, i32 5
  %567 = load i32, ptr %26, align 4, !tbaa !77
  %568 = sext i32 %567 to i64
  %569 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt6vectorIdSaIdEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %566, i64 noundef %568) #9
  %570 = load double, ptr %569, align 8, !tbaa !78
  %571 = getelementptr inbounds %"class.presolve::HPresolve", ptr %138, i32 0, i32 7
  %572 = load i32, ptr %26, align 4, !tbaa !77
  %573 = sext i32 %572 to i64
  %574 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNSt6vectorIiSaIiEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %571, i64 noundef %573) #9
  %575 = load i32, ptr %574, align 4, !tbaa !77
  %576 = sext i32 %575 to i64
  %577 = call noundef nonnull align 8 dereferenceable(12) ptr @_ZNSt6vectorISt4pairIdiESaIS1_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %14, i64 noundef %576) #9
  %578 = getelementptr inbounds %"struct.std::pair.468", ptr %577, i32 0, i32 0
  %579 = load double, ptr %578, align 8, !tbaa !80
  %580 = fdiv double %570, %579
  %581 = invoke noundef i32 @_ZN16HighsHashHelpers16double_hash_codeEd(double noundef %580)
          to label %582 unwind label %585

582:                                              ; preds = %553
  %583 = zext i32 %581 to i64
  invoke void @_ZN16HighsHashHelpers14sparse_combineERmim(ptr noundef nonnull align 8 dereferenceable(8) %560, i32 noundef %565, i64 noundef %583)
          to label %584 unwind label %585

584:                                              ; preds = %582
  br label %589

585:                                              ; preds = %582, %553, %551, %522
  %586 = landingpad { ptr, i32 }
          cleanup
  %587 = extractvalue { ptr, i32 } %586, 0
  store ptr %587, ptr %12, align 8
  %588 = extractvalue { ptr, i32 } %586, 1
  store i32 %588, ptr %13, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %26) #9
  br label %2954

589:                                              ; preds = %584, %508
  br label %590

590:                                              ; preds = %589, %468
  %591 = load i32, ptr %26, align 4, !tbaa !77
  %592 = add nsw i32 %591, 1
  store i32 %592, ptr %26, align 4, !tbaa !77
  br label %456, !llvm.loop !94

593:                                              ; preds = %460
  call void @llvm.lifetime.start.p0(i64 56, ptr %27) #9
  call void @_ZNSt18unordered_multimapImiSt4hashImESt8equal_toImESaISt4pairIKmiEEEC2Ev(ptr noundef nonnull align 8 dereferenceable(56) %27) #9
  call void @llvm.lifetime.start.p0(i64 1, ptr %28) #9
  store i8 0, ptr %28, align 1, !tbaa !76
  call void @llvm.lifetime.start.p0(i64 4, ptr %29) #9
  store i32 0, ptr %29, align 4, !tbaa !77
  br label %594

594:                                              ; preds = %2008, %593
  %595 = load i32, ptr %29, align 4, !tbaa !77
  %596 = getelementptr inbounds %"class.presolve::HPresolve", ptr %138, i32 0, i32 0
  %597 = load ptr, ptr %596, align 8, !tbaa !95
  %598 = getelementptr inbounds %class.HighsLp, ptr %597, i32 0, i32 0
  %599 = load i32, ptr %598, align 8, !tbaa !96
  %600 = icmp ne i32 %595, %599
  br i1 %600, label %602, label %601

601:                                              ; preds = %594
  store i32 8, ptr %30, align 4
  br label %2013

602:                                              ; preds = %594
  %603 = getelementptr inbounds %"class.presolve::HPresolve", ptr %138, i32 0, i32 47
  %604 = load i32, ptr %29, align 4, !tbaa !77
  %605 = sext i32 %604 to i64
  %606 = call noundef nonnull align 1 dereferenceable(1) ptr @_ZNSt6vectorIhSaIhEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %603, i64 noundef %605) #9
  %607 = load i8, ptr %606, align 1, !tbaa !79
  %608 = icmp ne i8 %607, 0
  br i1 %608, label %609, label %610

609:                                              ; preds = %602
  br label %2008

610:                                              ; preds = %602
  %611 = getelementptr inbounds %"class.presolve::HPresolve", ptr %138, i32 0, i32 17
  %612 = load i32, ptr %29, align 4, !tbaa !77
  %613 = sext i32 %612 to i64
  %614 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNSt6vectorIiSaIiEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %611, i64 noundef %613) #9
  %615 = load i32, ptr %614, align 4, !tbaa !77
  %616 = icmp eq i32 %615, 0
  br i1 %616, label %617, label %637

617:                                              ; preds = %610
  br label %618

618:                                              ; preds = %617
  call void @llvm.lifetime.start.p0(i64 4, ptr %31) #9
  %619 = load ptr, ptr %5, align 8, !tbaa !5
  %620 = load i32, ptr %29, align 4, !tbaa !77
  %621 = invoke noundef i32 @_ZN8presolve9HPresolve11colPresolveERNS_19HighsPostsolveStackEi(ptr noundef nonnull align 8 dereferenceable(1720) %138, ptr noundef nonnull align 8 dereferenceable(224) %619, i32 noundef %620)
          to label %622 unwind label %627

622:                                              ; preds = %618
  store i32 %621, ptr %31, align 4, !tbaa !114
  %623 = load i32, ptr %31, align 4, !tbaa !114
  %624 = icmp ne i32 %623, 0
  br i1 %624, label %625, label %631

625:                                              ; preds = %622
  %626 = load i32, ptr %31, align 4, !tbaa !114
  store i32 %626, ptr %3, align 4
  store i32 1, ptr %30, align 4
  br label %632

627:                                              ; preds = %618
  %628 = landingpad { ptr, i32 }
          cleanup
  %629 = extractvalue { ptr, i32 } %628, 0
  store ptr %629, ptr %12, align 8
  %630 = extractvalue { ptr, i32 } %628, 1
  store i32 %630, ptr %13, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %31) #9
  br label %2015

631:                                              ; preds = %622
  store i32 0, ptr %30, align 4
  br label %632

632:                                              ; preds = %631, %625
  call void @llvm.lifetime.end.p0(i64 4, ptr %31) #9
  %633 = load i32, ptr %30, align 4
  switch i32 %633, label %2013 [
    i32 0, label %634
  ]

634:                                              ; preds = %632
  br label %635

635:                                              ; preds = %634
  br label %636

636:                                              ; preds = %635
  br label %2008

637:                                              ; preds = %610
  call void @llvm.lifetime.start.p0(i64 8, ptr %32) #9
  %638 = load i32, ptr %29, align 4, !tbaa !77
  %639 = sext i32 %638 to i64
  %640 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt6vectorImSaImEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %9, i64 noundef %639) #9
  %641 = invoke ptr @_ZNSt18unordered_multimapImiSt4hashImESt8equal_toImESaISt4pairIKmiEEE4findERS5_(ptr noundef nonnull align 8 dereferenceable(56) %27, ptr noundef nonnull align 8 dereferenceable(8) %640)
          to label %642 unwind label %680

642:                                              ; preds = %637
  %643 = getelementptr inbounds %"struct.std::__detail::_Node_iterator.521", ptr %32, i32 0, i32 0
  %644 = getelementptr inbounds %"struct.std::__detail::_Node_iterator_base.522", ptr %643, i32 0, i32 0
  store ptr %641, ptr %644, align 8
  call void @llvm.lifetime.start.p0(i64 8, ptr %33) #9
  call void @llvm.memcpy.p0.p0.i64(ptr align 8 %33, ptr align 8 %32, i64 8, i1 false)
  call void @llvm.lifetime.start.p0(i64 4, ptr %34) #9
  store i32 -1, ptr %34, align 4, !tbaa !77
  call void @llvm.lifetime.start.p0(i64 4, ptr %35) #9
  store i32 -2, ptr %35, align 4, !tbaa !77
  br label %645

645:                                              ; preds = %1934, %679, %642
  call void @llvm.lifetime.start.p0(i64 8, ptr %36) #9
  %646 = call ptr @_ZNSt18unordered_multimapImiSt4hashImESt8equal_toImESaISt4pairIKmiEEE3endEv(ptr noundef nonnull align 8 dereferenceable(56) %27) #9
  %647 = getelementptr inbounds %"struct.std::__detail::_Node_iterator.521", ptr %36, i32 0, i32 0
  %648 = getelementptr inbounds %"struct.std::__detail::_Node_iterator_base.522", ptr %647, i32 0, i32 0
  store ptr %646, ptr %648, align 8
  %649 = call noundef zeroext i1 @_ZNSt8__detailneERKNS_19_Node_iterator_baseISt4pairIKmiELb0EEES6_(ptr noundef nonnull align 8 dereferenceable(8) %32, ptr noundef nonnull align 8 dereferenceable(8) %36) #9
  br i1 %649, label %650, label %659

650:                                              ; preds = %645
  %651 = call noundef ptr @_ZNKSt8__detail14_Node_iteratorISt4pairIKmiELb0ELb0EEptEv(ptr noundef nonnull align 8 dereferenceable(8) %32) #9
  %652 = getelementptr inbounds %"struct.std::pair.523", ptr %651, i32 0, i32 0
  %653 = load i64, ptr %652, align 8, !tbaa !116
  %654 = load i32, ptr %29, align 4, !tbaa !77
  %655 = sext i32 %654 to i64
  %656 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt6vectorImSaImEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %9, i64 noundef %655) #9
  %657 = load i64, ptr %656, align 8, !tbaa !82
  %658 = icmp eq i64 %653, %657
  br label %659

659:                                              ; preds = %650, %645
  %660 = phi i1 [ false, %645 ], [ %658, %650 ]
  call void @llvm.lifetime.end.p0(i64 8, ptr %36) #9
  br i1 %660, label %661, label %1937

661:                                              ; preds = %659
  %662 = call noundef ptr @_ZNKSt8__detail14_Node_iteratorISt4pairIKmiELb0ELb0EEptEv(ptr noundef nonnull align 8 dereferenceable(8) %32) #9
  %663 = getelementptr inbounds %"struct.std::pair.523", ptr %662, i32 0, i32 1
  %664 = load i32, ptr %663, align 8, !tbaa !118
  store i32 %664, ptr %35, align 4, !tbaa !77
  call void @llvm.lifetime.start.p0(i64 8, ptr %37) #9
  %665 = call ptr @_ZNSt8__detail14_Node_iteratorISt4pairIKmiELb0ELb0EEppEi(ptr noundef nonnull align 8 dereferenceable(8) %32, i32 noundef 0) #9
  %666 = getelementptr inbounds %"struct.std::__detail::_Node_iterator.521", ptr %37, i32 0, i32 0
  %667 = getelementptr inbounds %"struct.std::__detail::_Node_iterator_base.522", ptr %666, i32 0, i32 0
  store ptr %665, ptr %667, align 8
  call void @llvm.memcpy.p0.p0.i64(ptr align 8 %33, ptr align 8 %37, i64 8, i1 false)
  call void @llvm.lifetime.end.p0(i64 8, ptr %37) #9
  %668 = getelementptr inbounds %"class.presolve::HPresolve", ptr %138, i32 0, i32 17
  %669 = load i32, ptr %29, align 4, !tbaa !77
  %670 = sext i32 %669 to i64
  %671 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNSt6vectorIiSaIiEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %668, i64 noundef %670) #9
  %672 = load i32, ptr %671, align 4, !tbaa !77
  %673 = getelementptr inbounds %"class.presolve::HPresolve", ptr %138, i32 0, i32 17
  %674 = load i32, ptr %35, align 4, !tbaa !77
  %675 = sext i32 %674 to i64
  %676 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNSt6vectorIiSaIiEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %673, i64 noundef %675) #9
  %677 = load i32, ptr %676, align 4, !tbaa !77
  %678 = icmp ne i32 %672, %677
  br i1 %678, label %679, label %684

679:                                              ; preds = %661
  br label %645, !llvm.loop !119

680:                                              ; preds = %637
  %681 = landingpad { ptr, i32 }
          cleanup
  %682 = extractvalue { ptr, i32 } %681, 0
  store ptr %682, ptr %12, align 8
  %683 = extractvalue { ptr, i32 } %681, 1
  store i32 %683, ptr %13, align 4
  br label %2012

684:                                              ; preds = %661
  call void @llvm.lifetime.start.p0(i64 4, ptr %38) #9
  store i32 -1, ptr %38, align 4, !tbaa !77
  call void @llvm.lifetime.start.p0(i64 4, ptr %39) #9
  store i32 -1, ptr %39, align 4, !tbaa !77
  call void @llvm.lifetime.start.p0(i64 8, ptr %40) #9
  call void @llvm.lifetime.start.p0(i64 1, ptr %41) #9
  store i8 1, ptr %41, align 1, !tbaa !76
  call void @llvm.lifetime.start.p0(i64 1, ptr %42) #9
  store i8 1, ptr %42, align 1, !tbaa !76
  call void @llvm.lifetime.start.p0(i64 8, ptr %43) #9
  %685 = getelementptr inbounds %class.anon.526, ptr %43, i32 0, i32 0
  store ptr %138, ptr %685, align 8, !tbaa !120
  call void @llvm.lifetime.start.p0(i64 8, ptr %44) #9
  %686 = getelementptr inbounds %class.anon.527, ptr %44, i32 0, i32 0
  store ptr %138, ptr %686, align 8, !tbaa !122
  call void @llvm.lifetime.start.p0(i64 48, ptr %45) #9
  %687 = getelementptr inbounds %class.anon.528, ptr %45, i32 0, i32 0
  store ptr %41, ptr %687, align 8, !tbaa !5
  %688 = getelementptr inbounds %class.anon.528, ptr %45, i32 0, i32 1
  store ptr %138, ptr %688, align 8, !tbaa !124
  %689 = getelementptr inbounds %class.anon.528, ptr %45, i32 0, i32 2
  store ptr %40, ptr %689, align 8, !tbaa !5
  %690 = getelementptr inbounds %class.anon.528, ptr %45, i32 0, i32 3
  store ptr %44, ptr %690, align 8, !tbaa !5
  %691 = getelementptr inbounds %class.anon.528, ptr %45, i32 0, i32 4
  store ptr %38, ptr %691, align 8, !tbaa !5
  %692 = getelementptr inbounds %class.anon.528, ptr %45, i32 0, i32 5
  store ptr %43, ptr %692, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 48, ptr %46) #9
  %693 = getelementptr inbounds %class.anon.529, ptr %46, i32 0, i32 0
  store ptr %41, ptr %693, align 8, !tbaa !5
  %694 = getelementptr inbounds %class.anon.529, ptr %46, i32 0, i32 1
  store ptr %138, ptr %694, align 8, !tbaa !126
  %695 = getelementptr inbounds %class.anon.529, ptr %46, i32 0, i32 2
  store ptr %40, ptr %695, align 8, !tbaa !5
  %696 = getelementptr inbounds %class.anon.529, ptr %46, i32 0, i32 3
  store ptr %43, ptr %696, align 8, !tbaa !5
  %697 = getelementptr inbounds %class.anon.529, ptr %46, i32 0, i32 4
  store ptr %38, ptr %697, align 8, !tbaa !5
  %698 = getelementptr inbounds %class.anon.529, ptr %46, i32 0, i32 5
  store ptr %44, ptr %698, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 32, ptr %47) #9
  %699 = getelementptr inbounds %class.anon.530, ptr %47, i32 0, i32 0
  store ptr %42, ptr %699, align 8, !tbaa !5
  %700 = getelementptr inbounds %class.anon.530, ptr %47, i32 0, i32 1
  store ptr %138, ptr %700, align 8, !tbaa !128
  %701 = getelementptr inbounds %class.anon.530, ptr %47, i32 0, i32 2
  store ptr %44, ptr %701, align 8, !tbaa !5
  %702 = getelementptr inbounds %class.anon.530, ptr %47, i32 0, i32 3
  store ptr %39, ptr %702, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 32, ptr %48) #9
  %703 = getelementptr inbounds %class.anon.531, ptr %48, i32 0, i32 0
  store ptr %42, ptr %703, align 8, !tbaa !5
  %704 = getelementptr inbounds %class.anon.531, ptr %48, i32 0, i32 1
  store ptr %138, ptr %704, align 8, !tbaa !130
  %705 = getelementptr inbounds %class.anon.531, ptr %48, i32 0, i32 2
  store ptr %43, ptr %705, align 8, !tbaa !5
  %706 = getelementptr inbounds %class.anon.531, ptr %48, i32 0, i32 3
  store ptr %39, ptr %706, align 8, !tbaa !5
  %707 = getelementptr inbounds %"class.presolve::HPresolve", ptr %138, i32 0, i32 0
  %708 = load ptr, ptr %707, align 8, !tbaa !95
  %709 = getelementptr inbounds %class.HighsLp, ptr %708, i32 0, i32 16
  %710 = load i32, ptr %29, align 4, !tbaa !77
  %711 = sext i32 %710 to i64
  %712 = call noundef nonnull align 1 dereferenceable(1) ptr @_ZNSt6vectorI12HighsVarTypeSaIS0_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %709, i64 noundef %711) #9
  %713 = load i8, ptr %712, align 1, !tbaa !132
  %714 = icmp eq i8 %713, 1
  br i1 %714, label %715, label %791

715:                                              ; preds = %684
  %716 = getelementptr inbounds %"class.presolve::HPresolve", ptr %138, i32 0, i32 0
  %717 = load ptr, ptr %716, align 8, !tbaa !95
  %718 = getelementptr inbounds %class.HighsLp, ptr %717, i32 0, i32 16
  %719 = load i32, ptr %35, align 4, !tbaa !77
  %720 = sext i32 %719 to i64
  %721 = call noundef nonnull align 1 dereferenceable(1) ptr @_ZNSt6vectorI12HighsVarTypeSaIS0_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %718, i64 noundef %720) #9
  %722 = load i8, ptr %721, align 1, !tbaa !132
  %723 = icmp eq i8 %722, 1
  br i1 %723, label %724, label %791

724:                                              ; preds = %715
  %725 = load i32, ptr %29, align 4, !tbaa !77
  %726 = sext i32 %725 to i64
  %727 = call noundef nonnull align 8 dereferenceable(12) ptr @_ZNSt6vectorISt4pairIdiESaIS1_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %14, i64 noundef %726) #9
  %728 = getelementptr inbounds %"struct.std::pair.468", ptr %727, i32 0, i32 0
  %729 = load double, ptr %728, align 8, !tbaa !80
  %730 = invoke noundef double @_ZSt3absd(double noundef %729)
          to label %731 unwind label %743

731:                                              ; preds = %724
  %732 = load i32, ptr %35, align 4, !tbaa !77
  %733 = sext i32 %732 to i64
  %734 = call noundef nonnull align 8 dereferenceable(12) ptr @_ZNSt6vectorISt4pairIdiESaIS1_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %14, i64 noundef %733) #9
  %735 = getelementptr inbounds %"struct.std::pair.468", ptr %734, i32 0, i32 0
  %736 = load double, ptr %735, align 8, !tbaa !80
  %737 = invoke noundef double @_ZSt3absd(double noundef %736)
          to label %738 unwind label %743

738:                                              ; preds = %731
  %739 = fcmp olt double %730, %737
  br i1 %739, label %740, label %747

740:                                              ; preds = %738
  %741 = load i32, ptr %29, align 4, !tbaa !77
  store i32 %741, ptr %38, align 4, !tbaa !77
  %742 = load i32, ptr %35, align 4, !tbaa !77
  store i32 %742, ptr %39, align 4, !tbaa !77
  br label %750

743:                                              ; preds = %731, %724
  %744 = landingpad { ptr, i32 }
          cleanup
  %745 = extractvalue { ptr, i32 } %744, 0
  store ptr %745, ptr %12, align 8
  %746 = extractvalue { ptr, i32 } %744, 1
  store i32 %746, ptr %13, align 4
  br label %1936

747:                                              ; preds = %738
  %748 = load i32, ptr %35, align 4, !tbaa !77
  store i32 %748, ptr %38, align 4, !tbaa !77
  %749 = load i32, ptr %29, align 4, !tbaa !77
  store i32 %749, ptr %39, align 4, !tbaa !77
  br label %750

750:                                              ; preds = %747, %740
  call void @llvm.lifetime.start.p0(i64 8, ptr %49) #9
  %751 = load i32, ptr %39, align 4, !tbaa !77
  %752 = sext i32 %751 to i64
  %753 = call noundef nonnull align 8 dereferenceable(12) ptr @_ZNSt6vectorISt4pairIdiESaIS1_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %14, i64 noundef %752) #9
  %754 = getelementptr inbounds %"struct.std::pair.468", ptr %753, i32 0, i32 0
  %755 = load double, ptr %754, align 8, !tbaa !80
  %756 = load i32, ptr %38, align 4, !tbaa !77
  %757 = sext i32 %756 to i64
  %758 = call noundef nonnull align 8 dereferenceable(12) ptr @_ZNSt6vectorISt4pairIdiESaIS1_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %14, i64 noundef %757) #9
  %759 = getelementptr inbounds %"struct.std::pair.468", ptr %758, i32 0, i32 0
  %760 = load double, ptr %759, align 8, !tbaa !80
  %761 = fdiv double %755, %760
  store double %761, ptr %49, align 8, !tbaa !78
  %762 = load double, ptr %49, align 8, !tbaa !78
  %763 = invoke noundef double @_Z13fractionalityIdET_S0_PS0_(double noundef %762, ptr noundef %40)
          to label %764 unwind label %771

764:                                              ; preds = %750
  %765 = getelementptr inbounds %"class.presolve::HPresolve", ptr %138, i32 0, i32 1
  %766 = load ptr, ptr %765, align 8, !tbaa !83
  %767 = getelementptr inbounds %struct.HighsOptionsStruct, ptr %766, i32 0, i32 12
  %768 = load double, ptr %767, align 8, !tbaa !84
  %769 = fcmp ogt double %763, %768
  br i1 %769, label %770, label %775

770:                                              ; preds = %764
  store i32 13, ptr %30, align 4
  br label %788, !llvm.loop !119

771:                                              ; preds = %775, %750
  %772 = landingpad { ptr, i32 }
          cleanup
  %773 = extractvalue { ptr, i32 } %772, 0
  store ptr %773, ptr %12, align 8
  %774 = extractvalue { ptr, i32 } %772, 1
  store i32 %774, ptr %13, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %49) #9
  br label %1936

775:                                              ; preds = %764
  %776 = load double, ptr %40, align 8, !tbaa !78
  %777 = invoke noundef double @_ZSt3absd(double noundef %776)
          to label %778 unwind label %771

778:                                              ; preds = %775
  %779 = fcmp oge double %777, 1.000000e+00
  br i1 %779, label %780, label %781

780:                                              ; preds = %778
  br label %783

781:                                              ; preds = %778
  call void @__assert_fail(ptr noundef @.str.153, ptr noundef @.str.55, i32 noundef 5834, ptr noundef @__PRETTY_FUNCTION__._ZN8presolve9HPresolve25detectParallelRowsAndColsERNS_19HighsPostsolveStackE) #10
  unreachable

782:                                              ; No predecessors!
  br label %783

783:                                              ; preds = %782, %780
  %784 = load double, ptr %40, align 8, !tbaa !78
  %785 = fcmp une double %784, 1.000000e+00
  br i1 %785, label %786, label %787

786:                                              ; preds = %783
  store i8 0, ptr %42, align 1, !tbaa !76
  br label %787

787:                                              ; preds = %786, %783
  store i32 0, ptr %30, align 4
  br label %788

788:                                              ; preds = %787, %770
  call void @llvm.lifetime.end.p0(i64 8, ptr %49) #9
  %789 = load i32, ptr %30, align 4
  switch i32 %789, label %1934 [
    i32 0, label %790
  ]

790:                                              ; preds = %788
  br label %838

791:                                              ; preds = %715, %684
  %792 = getelementptr inbounds %"class.presolve::HPresolve", ptr %138, i32 0, i32 0
  %793 = load ptr, ptr %792, align 8, !tbaa !95
  %794 = getelementptr inbounds %class.HighsLp, ptr %793, i32 0, i32 16
  %795 = load i32, ptr %29, align 4, !tbaa !77
  %796 = sext i32 %795 to i64
  %797 = call noundef nonnull align 1 dereferenceable(1) ptr @_ZNSt6vectorI12HighsVarTypeSaIS0_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %794, i64 noundef %796) #9
  %798 = load i8, ptr %797, align 1, !tbaa !132
  %799 = icmp eq i8 %798, 1
  br i1 %799, label %800, label %814

800:                                              ; preds = %791
  %801 = load i32, ptr %29, align 4, !tbaa !77
  store i32 %801, ptr %38, align 4, !tbaa !77
  %802 = load i32, ptr %35, align 4, !tbaa !77
  store i32 %802, ptr %39, align 4, !tbaa !77
  %803 = load i32, ptr %39, align 4, !tbaa !77
  %804 = sext i32 %803 to i64
  %805 = call noundef nonnull align 8 dereferenceable(12) ptr @_ZNSt6vectorISt4pairIdiESaIS1_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %14, i64 noundef %804) #9
  %806 = getelementptr inbounds %"struct.std::pair.468", ptr %805, i32 0, i32 0
  %807 = load double, ptr %806, align 8, !tbaa !80
  %808 = load i32, ptr %38, align 4, !tbaa !77
  %809 = sext i32 %808 to i64
  %810 = call noundef nonnull align 8 dereferenceable(12) ptr @_ZNSt6vectorISt4pairIdiESaIS1_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %14, i64 noundef %809) #9
  %811 = getelementptr inbounds %"struct.std::pair.468", ptr %810, i32 0, i32 0
  %812 = load double, ptr %811, align 8, !tbaa !80
  %813 = fdiv double %807, %812
  store double %813, ptr %40, align 8, !tbaa !78
  store i8 0, ptr %41, align 1, !tbaa !76
  br label %837

814:                                              ; preds = %791
  %815 = load i32, ptr %35, align 4, !tbaa !77
  store i32 %815, ptr %38, align 4, !tbaa !77
  %816 = load i32, ptr %29, align 4, !tbaa !77
  store i32 %816, ptr %39, align 4, !tbaa !77
  %817 = load i32, ptr %39, align 4, !tbaa !77
  %818 = sext i32 %817 to i64
  %819 = call noundef nonnull align 8 dereferenceable(12) ptr @_ZNSt6vectorISt4pairIdiESaIS1_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %14, i64 noundef %818) #9
  %820 = getelementptr inbounds %"struct.std::pair.468", ptr %819, i32 0, i32 0
  %821 = load double, ptr %820, align 8, !tbaa !80
  %822 = load i32, ptr %38, align 4, !tbaa !77
  %823 = sext i32 %822 to i64
  %824 = call noundef nonnull align 8 dereferenceable(12) ptr @_ZNSt6vectorISt4pairIdiESaIS1_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %14, i64 noundef %823) #9
  %825 = getelementptr inbounds %"struct.std::pair.468", ptr %824, i32 0, i32 0
  %826 = load double, ptr %825, align 8, !tbaa !80
  %827 = fdiv double %821, %826
  store double %827, ptr %40, align 8, !tbaa !78
  %828 = getelementptr inbounds %"class.presolve::HPresolve", ptr %138, i32 0, i32 0
  %829 = load ptr, ptr %828, align 8, !tbaa !95
  %830 = getelementptr inbounds %class.HighsLp, ptr %829, i32 0, i32 16
  %831 = load i32, ptr %35, align 4, !tbaa !77
  %832 = sext i32 %831 to i64
  %833 = call noundef nonnull align 1 dereferenceable(1) ptr @_ZNSt6vectorI12HighsVarTypeSaIS0_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %830, i64 noundef %832) #9
  %834 = load i8, ptr %833, align 1, !tbaa !132
  %835 = icmp ne i8 %834, 1
  %836 = zext i1 %835 to i8
  store i8 %836, ptr %41, align 1, !tbaa !76
  br label %837

837:                                              ; preds = %814, %800
  br label %838

838:                                              ; preds = %837, %790
  call void @llvm.lifetime.start.p0(i64 8, ptr %50) #9
  call void @llvm.lifetime.start.p0(i64 16, ptr %51) #9
  call void @llvm.lifetime.start.p0(i64 16, ptr %52) #9
  %839 = getelementptr inbounds %"class.presolve::HPresolve", ptr %138, i32 0, i32 0
  %840 = load ptr, ptr %839, align 8, !tbaa !95
  %841 = getelementptr inbounds %class.HighsLp, ptr %840, i32 0, i32 2
  %842 = load i32, ptr %38, align 4, !tbaa !77
  %843 = sext i32 %842 to i64
  %844 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt6vectorIdSaIdEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %841, i64 noundef %843) #9
  %845 = load double, ptr %844, align 8, !tbaa !78
  call void @llvm.lifetime.start.p0(i64 16, ptr %53) #9
  %846 = load double, ptr %40, align 8, !tbaa !78
  invoke void @_ZN12HighsCDoubleC2Ed(ptr noundef nonnull align 8 dereferenceable(16) %53, double noundef %846)
          to label %847 unwind label %889

847:                                              ; preds = %838
  %848 = invoke { double, double } @_ZmldRK12HighsCDouble(double noundef %845, ptr noundef nonnull align 8 dereferenceable(16) %53)
          to label %849 unwind label %889

849:                                              ; preds = %847
  %850 = getelementptr inbounds { double, double }, ptr %52, i32 0, i32 0
  %851 = extractvalue { double, double } %848, 0
  store double %851, ptr %850, align 8
  %852 = getelementptr inbounds { double, double }, ptr %52, i32 0, i32 1
  %853 = extractvalue { double, double } %848, 1
  store double %853, ptr %852, align 8
  %854 = getelementptr inbounds %"class.presolve::HPresolve", ptr %138, i32 0, i32 0
  %855 = load ptr, ptr %854, align 8, !tbaa !95
  %856 = getelementptr inbounds %class.HighsLp, ptr %855, i32 0, i32 2
  %857 = load i32, ptr %39, align 4, !tbaa !77
  %858 = sext i32 %857 to i64
  %859 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt6vectorIdSaIdEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %856, i64 noundef %858) #9
  %860 = load double, ptr %859, align 8, !tbaa !78
  %861 = invoke { double, double } @_ZNK12HighsCDoublemiEd(ptr noundef nonnull align 8 dereferenceable(16) %52, double noundef %860)
          to label %862 unwind label %889

862:                                              ; preds = %849
  %863 = getelementptr inbounds { double, double }, ptr %51, i32 0, i32 0
  %864 = extractvalue { double, double } %861, 0
  store double %864, ptr %863, align 8
  %865 = getelementptr inbounds { double, double }, ptr %51, i32 0, i32 1
  %866 = extractvalue { double, double } %861, 1
  store double %866, ptr %865, align 8
  %867 = invoke noundef double @_ZNK12HighsCDoublecvdEv(ptr noundef nonnull align 8 dereferenceable(16) %51)
          to label %868 unwind label %889

868:                                              ; preds = %862
  call void @llvm.lifetime.end.p0(i64 16, ptr %53) #9
  call void @llvm.lifetime.end.p0(i64 16, ptr %52) #9
  call void @llvm.lifetime.end.p0(i64 16, ptr %51) #9
  store double %867, ptr %50, align 8, !tbaa !78
  call void @llvm.lifetime.start.p0(i64 4, ptr %54) #9
  store i32 0, ptr %54, align 4, !tbaa !77
  call void @llvm.lifetime.start.p0(i64 4, ptr %55) #9
  store i32 1, ptr %55, align 4, !tbaa !77
  call void @llvm.lifetime.start.p0(i64 4, ptr %56) #9
  store i32 2, ptr %56, align 4, !tbaa !77
  call void @llvm.lifetime.start.p0(i64 4, ptr %57) #9
  store i32 3, ptr %57, align 4, !tbaa !77
  call void @llvm.lifetime.start.p0(i64 4, ptr %58) #9
  store i32 4, ptr %58, align 4, !tbaa !77
  call void @llvm.lifetime.start.p0(i64 4, ptr %59) #9
  store i32 0, ptr %59, align 4, !tbaa !77
  %869 = load double, ptr %50, align 8, !tbaa !78
  %870 = getelementptr inbounds %"class.presolve::HPresolve", ptr %138, i32 0, i32 1
  %871 = load ptr, ptr %870, align 8, !tbaa !83
  %872 = getelementptr inbounds %struct.HighsOptionsStruct, ptr %871, i32 0, i32 15
  %873 = load double, ptr %872, align 8, !tbaa !134
  %874 = fneg double %873
  %875 = fcmp olt double %869, %874
  br i1 %875, label %876, label %932

876:                                              ; preds = %868
  %877 = invoke noundef zeroext i1 @"_ZZN8presolve9HPresolve25detectParallelRowsAndColsERNS_19HighsPostsolveStackEENK3$_2clEv"(ptr noundef nonnull align 8 dereferenceable(48) %45)
          to label %878 unwind label %893

878:                                              ; preds = %876
  br i1 %877, label %879, label %897

879:                                              ; preds = %878
  %880 = getelementptr inbounds %"class.presolve::HPresolve", ptr %138, i32 0, i32 0
  %881 = load ptr, ptr %880, align 8, !tbaa !95
  %882 = getelementptr inbounds %class.HighsLp, ptr %881, i32 0, i32 3
  %883 = load i32, ptr %39, align 4, !tbaa !77
  %884 = sext i32 %883 to i64
  %885 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt6vectorIdSaIdEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %882, i64 noundef %884) #9
  %886 = load double, ptr %885, align 8, !tbaa !78
  %887 = fcmp une double %886, 0xFFF0000000000000
  br i1 %887, label %888, label %897

888:                                              ; preds = %879
  store i32 4, ptr %59, align 4, !tbaa !77
  br label %931

889:                                              ; preds = %862, %849, %847, %838
  %890 = landingpad { ptr, i32 }
          cleanup
  %891 = extractvalue { ptr, i32 } %890, 0
  store ptr %891, ptr %12, align 8
  %892 = extractvalue { ptr, i32 } %890, 1
  store i32 %892, ptr %13, align 4
  call void @llvm.lifetime.end.p0(i64 16, ptr %53) #9
  call void @llvm.lifetime.end.p0(i64 16, ptr %52) #9
  call void @llvm.lifetime.end.p0(i64 16, ptr %51) #9
  br label %1933

893:                                              ; preds = %1045, %1013, %1000, %987, %952, %939, %897, %876
  %894 = landingpad { ptr, i32 }
          cleanup
  %895 = extractvalue { ptr, i32 } %894, 0
  store ptr %895, ptr %12, align 8
  %896 = extractvalue { ptr, i32 } %894, 1
  store i32 %896, ptr %13, align 4
  br label %1932

897:                                              ; preds = %879, %878
  %898 = invoke noundef zeroext i1 @"_ZZN8presolve9HPresolve25detectParallelRowsAndColsERNS_19HighsPostsolveStackEENK3$_5clEv"(ptr noundef nonnull align 8 dereferenceable(32) %48)
          to label %899 unwind label %893

899:                                              ; preds = %897
  br i1 %898, label %900, label %929

900:                                              ; preds = %899
  %901 = load double, ptr %40, align 8, !tbaa !78
  %902 = fcmp olt double %901, 0.000000e+00
  br i1 %902, label %912, label %903

903:                                              ; preds = %900
  %904 = getelementptr inbounds %"class.presolve::HPresolve", ptr %138, i32 0, i32 0
  %905 = load ptr, ptr %904, align 8, !tbaa !95
  %906 = getelementptr inbounds %class.HighsLp, ptr %905, i32 0, i32 4
  %907 = load i32, ptr %38, align 4, !tbaa !77
  %908 = sext i32 %907 to i64
  %909 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt6vectorIdSaIdEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %906, i64 noundef %908) #9
  %910 = load double, ptr %909, align 8, !tbaa !78
  %911 = fcmp une double %910, 0x7FF0000000000000
  br i1 %911, label %912, label %929

912:                                              ; preds = %903, %900
  %913 = load double, ptr %40, align 8, !tbaa !78
  %914 = fcmp ogt double %913, 0.000000e+00
  br i1 %914, label %924, label %915

915:                                              ; preds = %912
  %916 = getelementptr inbounds %"class.presolve::HPresolve", ptr %138, i32 0, i32 0
  %917 = load ptr, ptr %916, align 8, !tbaa !95
  %918 = getelementptr inbounds %class.HighsLp, ptr %917, i32 0, i32 3
  %919 = load i32, ptr %38, align 4, !tbaa !77
  %920 = sext i32 %919 to i64
  %921 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt6vectorIdSaIdEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %918, i64 noundef %920) #9
  %922 = load double, ptr %921, align 8, !tbaa !78
  %923 = fcmp une double %922, 0xFFF0000000000000
  br i1 %923, label %924, label %929

924:                                              ; preds = %915, %912
  %925 = load double, ptr %40, align 8, !tbaa !78
  %926 = fcmp ogt double %925, 0.000000e+00
  %927 = zext i1 %926 to i64
  %928 = select i1 %926, i32 1, i32 2
  store i32 %928, ptr %59, align 4, !tbaa !77
  br label %930

929:                                              ; preds = %915, %903, %899
  store i32 13, ptr %30, align 4
  br label %1931, !llvm.loop !119

930:                                              ; preds = %924
  br label %931

931:                                              ; preds = %930, %888
  br label %1082

932:                                              ; preds = %868
  %933 = load double, ptr %50, align 8, !tbaa !78
  %934 = getelementptr inbounds %"class.presolve::HPresolve", ptr %138, i32 0, i32 1
  %935 = load ptr, ptr %934, align 8, !tbaa !83
  %936 = getelementptr inbounds %struct.HighsOptionsStruct, ptr %935, i32 0, i32 15
  %937 = load double, ptr %936, align 8, !tbaa !134
  %938 = fcmp ogt double %933, %937
  br i1 %938, label %939, label %987

939:                                              ; preds = %932
  %940 = invoke noundef zeroext i1 @"_ZZN8presolve9HPresolve25detectParallelRowsAndColsERNS_19HighsPostsolveStackEENK3$_3clEv"(ptr noundef nonnull align 8 dereferenceable(48) %46)
          to label %941 unwind label %893

941:                                              ; preds = %939
  br i1 %940, label %942, label %952

942:                                              ; preds = %941
  %943 = getelementptr inbounds %"class.presolve::HPresolve", ptr %138, i32 0, i32 0
  %944 = load ptr, ptr %943, align 8, !tbaa !95
  %945 = getelementptr inbounds %class.HighsLp, ptr %944, i32 0, i32 4
  %946 = load i32, ptr %39, align 4, !tbaa !77
  %947 = sext i32 %946 to i64
  %948 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt6vectorIdSaIdEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %945, i64 noundef %947) #9
  %949 = load double, ptr %948, align 8, !tbaa !78
  %950 = fcmp une double %949, 0x7FF0000000000000
  br i1 %950, label %951, label %952

951:                                              ; preds = %942
  store i32 3, ptr %59, align 4, !tbaa !77
  br label %986

952:                                              ; preds = %942, %941
  %953 = invoke noundef zeroext i1 @"_ZZN8presolve9HPresolve25detectParallelRowsAndColsERNS_19HighsPostsolveStackEENK3$_4clEv"(ptr noundef nonnull align 8 dereferenceable(32) %47)
          to label %954 unwind label %893

954:                                              ; preds = %952
  br i1 %953, label %955, label %984

955:                                              ; preds = %954
  %956 = load double, ptr %40, align 8, !tbaa !78
  %957 = fcmp olt double %956, 0.000000e+00
  br i1 %957, label %967, label %958

958:                                              ; preds = %955
  %959 = getelementptr inbounds %"class.presolve::HPresolve", ptr %138, i32 0, i32 0
  %960 = load ptr, ptr %959, align 8, !tbaa !95
  %961 = getelementptr inbounds %class.HighsLp, ptr %960, i32 0, i32 3
  %962 = load i32, ptr %38, align 4, !tbaa !77
  %963 = sext i32 %962 to i64
  %964 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt6vectorIdSaIdEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %961, i64 noundef %963) #9
  %965 = load double, ptr %964, align 8, !tbaa !78
  %966 = fcmp une double %965, 0xFFF0000000000000
  br i1 %966, label %967, label %984

967:                                              ; preds = %958, %955
  %968 = load double, ptr %40, align 8, !tbaa !78
  %969 = fcmp ogt double %968, 0.000000e+00
  br i1 %969, label %979, label %970

970:                                              ; preds = %967
  %971 = getelementptr inbounds %"class.presolve::HPresolve", ptr %138, i32 0, i32 0
  %972 = load ptr, ptr %971, align 8, !tbaa !95
  %973 = getelementptr inbounds %class.HighsLp, ptr %972, i32 0, i32 4
  %974 = load i32, ptr %38, align 4, !tbaa !77
  %975 = sext i32 %974 to i64
  %976 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt6vectorIdSaIdEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %973, i64 noundef %975) #9
  %977 = load double, ptr %976, align 8, !tbaa !78
  %978 = fcmp une double %977, 0x7FF0000000000000
  br i1 %978, label %979, label %984

979:                                              ; preds = %970, %967
  %980 = load double, ptr %40, align 8, !tbaa !78
  %981 = fcmp ogt double %980, 0.000000e+00
  %982 = zext i1 %981 to i64
  %983 = select i1 %981, i32 2, i32 1
  store i32 %983, ptr %59, align 4, !tbaa !77
  br label %985

984:                                              ; preds = %970, %958, %954
  store i32 13, ptr %30, align 4
  br label %1931, !llvm.loop !119

985:                                              ; preds = %979
  br label %986

986:                                              ; preds = %985, %951
  br label %1081

987:                                              ; preds = %932
  %988 = invoke noundef zeroext i1 @"_ZZN8presolve9HPresolve25detectParallelRowsAndColsERNS_19HighsPostsolveStackEENK3$_2clEv"(ptr noundef nonnull align 8 dereferenceable(48) %45)
          to label %989 unwind label %893

989:                                              ; preds = %987
  br i1 %988, label %990, label %1000

990:                                              ; preds = %989
  %991 = getelementptr inbounds %"class.presolve::HPresolve", ptr %138, i32 0, i32 0
  %992 = load ptr, ptr %991, align 8, !tbaa !95
  %993 = getelementptr inbounds %class.HighsLp, ptr %992, i32 0, i32 3
  %994 = load i32, ptr %39, align 4, !tbaa !77
  %995 = sext i32 %994 to i64
  %996 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt6vectorIdSaIdEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %993, i64 noundef %995) #9
  %997 = load double, ptr %996, align 8, !tbaa !78
  %998 = fcmp une double %997, 0xFFF0000000000000
  br i1 %998, label %999, label %1000

999:                                              ; preds = %990
  store i32 4, ptr %59, align 4, !tbaa !77
  br label %1080

1000:                                             ; preds = %990, %989
  %1001 = invoke noundef zeroext i1 @"_ZZN8presolve9HPresolve25detectParallelRowsAndColsERNS_19HighsPostsolveStackEENK3$_3clEv"(ptr noundef nonnull align 8 dereferenceable(48) %46)
          to label %1002 unwind label %893

1002:                                             ; preds = %1000
  br i1 %1001, label %1003, label %1013

1003:                                             ; preds = %1002
  %1004 = getelementptr inbounds %"class.presolve::HPresolve", ptr %138, i32 0, i32 0
  %1005 = load ptr, ptr %1004, align 8, !tbaa !95
  %1006 = getelementptr inbounds %class.HighsLp, ptr %1005, i32 0, i32 4
  %1007 = load i32, ptr %39, align 4, !tbaa !77
  %1008 = sext i32 %1007 to i64
  %1009 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt6vectorIdSaIdEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %1006, i64 noundef %1008) #9
  %1010 = load double, ptr %1009, align 8, !tbaa !78
  %1011 = fcmp une double %1010, 0x7FF0000000000000
  br i1 %1011, label %1012, label %1013

1012:                                             ; preds = %1003
  store i32 3, ptr %59, align 4, !tbaa !77
  br label %1079

1013:                                             ; preds = %1003, %1002
  %1014 = invoke noundef zeroext i1 @"_ZZN8presolve9HPresolve25detectParallelRowsAndColsERNS_19HighsPostsolveStackEENK3$_4clEv"(ptr noundef nonnull align 8 dereferenceable(32) %47)
          to label %1015 unwind label %893

1015:                                             ; preds = %1013
  br i1 %1014, label %1016, label %1045

1016:                                             ; preds = %1015
  %1017 = load double, ptr %40, align 8, !tbaa !78
  %1018 = fcmp olt double %1017, 0.000000e+00
  br i1 %1018, label %1028, label %1019

1019:                                             ; preds = %1016
  %1020 = getelementptr inbounds %"class.presolve::HPresolve", ptr %138, i32 0, i32 0
  %1021 = load ptr, ptr %1020, align 8, !tbaa !95
  %1022 = getelementptr inbounds %class.HighsLp, ptr %1021, i32 0, i32 3
  %1023 = load i32, ptr %38, align 4, !tbaa !77
  %1024 = sext i32 %1023 to i64
  %1025 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt6vectorIdSaIdEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %1022, i64 noundef %1024) #9
  %1026 = load double, ptr %1025, align 8, !tbaa !78
  %1027 = fcmp une double %1026, 0xFFF0000000000000
  br i1 %1027, label %1028, label %1045

1028:                                             ; preds = %1019, %1016
  %1029 = load double, ptr %40, align 8, !tbaa !78
  %1030 = fcmp ogt double %1029, 0.000000e+00
  br i1 %1030, label %1040, label %1031

1031:                                             ; preds = %1028
  %1032 = getelementptr inbounds %"class.presolve::HPresolve", ptr %138, i32 0, i32 0
  %1033 = load ptr, ptr %1032, align 8, !tbaa !95
  %1034 = getelementptr inbounds %class.HighsLp, ptr %1033, i32 0, i32 4
  %1035 = load i32, ptr %38, align 4, !tbaa !77
  %1036 = sext i32 %1035 to i64
  %1037 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt6vectorIdSaIdEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %1034, i64 noundef %1036) #9
  %1038 = load double, ptr %1037, align 8, !tbaa !78
  %1039 = fcmp une double %1038, 0x7FF0000000000000
  br i1 %1039, label %1040, label %1045

1040:                                             ; preds = %1031, %1028
  %1041 = load double, ptr %40, align 8, !tbaa !78
  %1042 = fcmp ogt double %1041, 0.000000e+00
  %1043 = zext i1 %1042 to i64
  %1044 = select i1 %1042, i32 2, i32 1
  store i32 %1044, ptr %59, align 4, !tbaa !77
  br label %1078

1045:                                             ; preds = %1031, %1019, %1015
  %1046 = invoke noundef zeroext i1 @"_ZZN8presolve9HPresolve25detectParallelRowsAndColsERNS_19HighsPostsolveStackEENK3$_5clEv"(ptr noundef nonnull align 8 dereferenceable(32) %48)
          to label %1047 unwind label %893

1047:                                             ; preds = %1045
  br i1 %1046, label %1048, label %1077

1048:                                             ; preds = %1047
  %1049 = load double, ptr %40, align 8, !tbaa !78
  %1050 = fcmp olt double %1049, 0.000000e+00
  br i1 %1050, label %1060, label %1051

1051:                                             ; preds = %1048
  %1052 = getelementptr inbounds %"class.presolve::HPresolve", ptr %138, i32 0, i32 0
  %1053 = load ptr, ptr %1052, align 8, !tbaa !95
  %1054 = getelementptr inbounds %class.HighsLp, ptr %1053, i32 0, i32 4
  %1055 = load i32, ptr %38, align 4, !tbaa !77
  %1056 = sext i32 %1055 to i64
  %1057 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt6vectorIdSaIdEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %1054, i64 noundef %1056) #9
  %1058 = load double, ptr %1057, align 8, !tbaa !78
  %1059 = fcmp une double %1058, 0x7FF0000000000000
  br i1 %1059, label %1060, label %1077

1060:                                             ; preds = %1051, %1048
  %1061 = load double, ptr %40, align 8, !tbaa !78
  %1062 = fcmp ogt double %1061, 0.000000e+00
  br i1 %1062, label %1072, label %1063

1063:                                             ; preds = %1060
  %1064 = getelementptr inbounds %"class.presolve::HPresolve", ptr %138, i32 0, i32 0
  %1065 = load ptr, ptr %1064, align 8, !tbaa !95
  %1066 = getelementptr inbounds %class.HighsLp, ptr %1065, i32 0, i32 3
  %1067 = load i32, ptr %38, align 4, !tbaa !77
  %1068 = sext i32 %1067 to i64
  %1069 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt6vectorIdSaIdEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %1066, i64 noundef %1068) #9
  %1070 = load double, ptr %1069, align 8, !tbaa !78
  %1071 = fcmp une double %1070, 0xFFF0000000000000
  br i1 %1071, label %1072, label %1077

1072:                                             ; preds = %1063, %1060
  %1073 = load double, ptr %40, align 8, !tbaa !78
  %1074 = fcmp ogt double %1073, 0.000000e+00
  %1075 = zext i1 %1074 to i64
  %1076 = select i1 %1074, i32 1, i32 2
  store i32 %1076, ptr %59, align 4, !tbaa !77
  br label %1077

1077:                                             ; preds = %1072, %1063, %1051, %1047
  br label %1078

1078:                                             ; preds = %1077, %1040
  br label %1079

1079:                                             ; preds = %1078, %1012
  br label %1080

1080:                                             ; preds = %1079, %999
  br label %1081

1081:                                             ; preds = %1080, %986
  br label %1082

1082:                                             ; preds = %1081, %931
  %1083 = load i32, ptr %59, align 4, !tbaa !77
  %1084 = icmp eq i32 %1083, 0
  br i1 %1084, label %1085, label %1238

1085:                                             ; preds = %1082
  call void @llvm.lifetime.start.p0(i64 1, ptr %60) #9
  %1086 = getelementptr inbounds %"class.presolve::HPresolve", ptr %138, i32 0, i32 0
  %1087 = load ptr, ptr %1086, align 8, !tbaa !95
  %1088 = getelementptr inbounds %class.HighsLp, ptr %1087, i32 0, i32 16
  %1089 = load i32, ptr %38, align 4, !tbaa !77
  %1090 = sext i32 %1089 to i64
  %1091 = call noundef nonnull align 1 dereferenceable(1) ptr @_ZNSt6vectorI12HighsVarTypeSaIS0_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %1088, i64 noundef %1090) #9
  %1092 = load i8, ptr %1091, align 1, !tbaa !132
  %1093 = icmp eq i8 %1092, 1
  %1094 = zext i1 %1093 to i8
  store i8 %1094, ptr %60, align 1, !tbaa !76
  call void @llvm.lifetime.start.p0(i64 1, ptr %61) #9
  %1095 = getelementptr inbounds %"class.presolve::HPresolve", ptr %138, i32 0, i32 0
  %1096 = load ptr, ptr %1095, align 8, !tbaa !95
  %1097 = getelementptr inbounds %class.HighsLp, ptr %1096, i32 0, i32 16
  %1098 = load i32, ptr %39, align 4, !tbaa !77
  %1099 = sext i32 %1098 to i64
  %1100 = call noundef nonnull align 1 dereferenceable(1) ptr @_ZNSt6vectorI12HighsVarTypeSaIS0_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %1097, i64 noundef %1099) #9
  %1101 = load i8, ptr %1100, align 1, !tbaa !132
  %1102 = icmp eq i8 %1101, 1
  %1103 = zext i1 %1102 to i8
  store i8 %1103, ptr %61, align 1, !tbaa !76
  call void @llvm.lifetime.start.p0(i64 1, ptr %62) #9
  store i8 1, ptr %62, align 1, !tbaa !76
  %1104 = load i8, ptr %60, align 1, !tbaa !76, !range !74, !noundef !75
  %1105 = trunc i8 %1104 to i1
  br i1 %1105, label %1106, label %1221

1106:                                             ; preds = %1085
  %1107 = getelementptr inbounds %"class.presolve::HPresolve", ptr %138, i32 0, i32 0
  %1108 = load ptr, ptr %1107, align 8, !tbaa !95
  %1109 = getelementptr inbounds %class.HighsLp, ptr %1108, i32 0, i32 16
  %1110 = load i32, ptr %39, align 4, !tbaa !77
  %1111 = sext i32 %1110 to i64
  %1112 = call noundef nonnull align 1 dereferenceable(1) ptr @_ZNSt6vectorI12HighsVarTypeSaIS0_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %1109, i64 noundef %1111) #9
  %1113 = load i8, ptr %1112, align 1, !tbaa !132
  %1114 = icmp ne i8 %1113, 1
  br i1 %1114, label %1115, label %1180

1115:                                             ; preds = %1106
  %1116 = load i8, ptr %61, align 1, !tbaa !76, !range !74, !noundef !75
  %1117 = trunc i8 %1116 to i1
  %1118 = xor i1 %1117, true
  br i1 %1118, label %1119, label %1120

1119:                                             ; preds = %1115
  br label %1122

1120:                                             ; preds = %1115
  call void @__assert_fail(ptr noundef @.str.154, ptr noundef @.str.55, i32 noundef 5926, ptr noundef @__PRETTY_FUNCTION__._ZN8presolve9HPresolve25detectParallelRowsAndColsERNS_19HighsPostsolveStackE) #10
  unreachable

1121:                                             ; No predecessors!
  br label %1122

1122:                                             ; preds = %1121, %1119
  %1123 = load double, ptr %40, align 8, !tbaa !78
  %1124 = getelementptr inbounds %"class.presolve::HPresolve", ptr %138, i32 0, i32 0
  %1125 = load ptr, ptr %1124, align 8, !tbaa !95
  %1126 = getelementptr inbounds %class.HighsLp, ptr %1125, i32 0, i32 4
  %1127 = load i32, ptr %39, align 4, !tbaa !77
  %1128 = sext i32 %1127 to i64
  %1129 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt6vectorIdSaIdEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %1126, i64 noundef %1128) #9
  %1130 = load double, ptr %1129, align 8, !tbaa !78
  %1131 = getelementptr inbounds %"class.presolve::HPresolve", ptr %138, i32 0, i32 0
  %1132 = load ptr, ptr %1131, align 8, !tbaa !95
  %1133 = getelementptr inbounds %class.HighsLp, ptr %1132, i32 0, i32 3
  %1134 = load i32, ptr %39, align 4, !tbaa !77
  %1135 = sext i32 %1134 to i64
  %1136 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt6vectorIdSaIdEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %1133, i64 noundef %1135) #9
  %1137 = load double, ptr %1136, align 8, !tbaa !78
  %1138 = fsub double %1130, %1137
  %1139 = fmul double %1123, %1138
  %1140 = invoke noundef double @_ZSt3absd(double noundef %1139)
          to label %1141 unwind label %1175

1141:                                             ; preds = %1122
  %1142 = getelementptr inbounds %"class.presolve::HPresolve", ptr %138, i32 0, i32 4
  %1143 = load double, ptr %1142, align 8, !tbaa !135
  %1144 = fsub double 1.000000e+00, %1143
  %1145 = fcmp olt double %1140, %1144
  %1146 = zext i1 %1145 to i8
  store i8 %1146, ptr %62, align 1, !tbaa !76
  %1147 = load i8, ptr %62, align 1, !tbaa !76, !range !74, !noundef !75
  %1148 = trunc i8 %1147 to i1
  br i1 %1148, label %1179, label %1149

1149:                                             ; preds = %1141
  br i1 false, label %1150, label %1179

1150:                                             ; preds = %1149
  %1151 = load i8, ptr %62, align 1, !tbaa !76, !range !74, !noundef !75
  %1152 = trunc i8 %1151 to i1
  br i1 %1152, label %1153, label %1154

1153:                                             ; preds = %1150
  br label %1155

1154:                                             ; preds = %1150
  br label %1155

1155:                                             ; preds = %1154, %1153
  %1156 = phi ptr [ @.str.156, %1153 ], [ @.str.157, %1154 ]
  %1157 = getelementptr inbounds [4 x i8], ptr %1156, i64 0, i64 0
  %1158 = load double, ptr %40, align 8, !tbaa !78
  %1159 = getelementptr inbounds %"class.presolve::HPresolve", ptr %138, i32 0, i32 0
  %1160 = load ptr, ptr %1159, align 8, !tbaa !95
  %1161 = getelementptr inbounds %class.HighsLp, ptr %1160, i32 0, i32 3
  %1162 = load i32, ptr %39, align 4, !tbaa !77
  %1163 = sext i32 %1162 to i64
  %1164 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt6vectorIdSaIdEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %1161, i64 noundef %1163) #9
  %1165 = load double, ptr %1164, align 8, !tbaa !78
  %1166 = getelementptr inbounds %"class.presolve::HPresolve", ptr %138, i32 0, i32 0
  %1167 = load ptr, ptr %1166, align 8, !tbaa !95
  %1168 = getelementptr inbounds %class.HighsLp, ptr %1167, i32 0, i32 4
  %1169 = load i32, ptr %39, align 4, !tbaa !77
  %1170 = sext i32 %1169 to i64
  %1171 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt6vectorIdSaIdEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %1168, i64 noundef %1170) #9
  %1172 = load double, ptr %1171, align 8, !tbaa !78
  %1173 = invoke i32 (ptr, ...) @printf(ptr noundef @.str.155, ptr noundef %1157, double noundef %1158, double noundef %1165, double noundef %1172)
          to label %1174 unwind label %1175

1174:                                             ; preds = %1155
  br label %1179

1175:                                             ; preds = %1155, %1122
  %1176 = landingpad { ptr, i32 }
          cleanup
  %1177 = extractvalue { ptr, i32 } %1176, 0
  store ptr %1177, ptr %12, align 8
  %1178 = extractvalue { ptr, i32 } %1176, 1
  store i32 %1178, ptr %13, align 4
  call void @llvm.lifetime.end.p0(i64 1, ptr %62) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr %61) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr %60) #9
  br label %1932

1179:                                             ; preds = %1174, %1149, %1141
  br label %1216

1180:                                             ; preds = %1106
  %1181 = load i8, ptr %60, align 1, !tbaa !76, !range !74, !noundef !75
  %1182 = trunc i8 %1181 to i1
  br i1 %1182, label %1183, label %1186

1183:                                             ; preds = %1180
  %1184 = load i8, ptr %61, align 1, !tbaa !76, !range !74, !noundef !75
  %1185 = trunc i8 %1184 to i1
  br label %1186

1186:                                             ; preds = %1183, %1180
  %1187 = phi i1 [ false, %1180 ], [ %1185, %1183 ]
  br i1 %1187, label %1188, label %1189

1188:                                             ; preds = %1186
  br label %1191

1189:                                             ; preds = %1186
  call void @__assert_fail(ptr noundef @.str.158, ptr noundef @.str.55, i32 noundef 5944, ptr noundef @__PRETTY_FUNCTION__._ZN8presolve9HPresolve25detectParallelRowsAndColsERNS_19HighsPostsolveStackE) #10
  unreachable

1190:                                             ; No predecessors!
  br label %1191

1191:                                             ; preds = %1190, %1188
  call void @llvm.lifetime.start.p0(i64 8, ptr %63) #9
  %1192 = getelementptr inbounds %"class.presolve::HPresolve", ptr %138, i32 0, i32 0
  %1193 = load ptr, ptr %1192, align 8, !tbaa !95
  %1194 = getelementptr inbounds %class.HighsLp, ptr %1193, i32 0, i32 4
  %1195 = load i32, ptr %38, align 4, !tbaa !77
  %1196 = sext i32 %1195 to i64
  %1197 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt6vectorIdSaIdEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %1194, i64 noundef %1196) #9
  %1198 = load double, ptr %1197, align 8, !tbaa !78
  %1199 = getelementptr inbounds %"class.presolve::HPresolve", ptr %138, i32 0, i32 0
  %1200 = load ptr, ptr %1199, align 8, !tbaa !95
  %1201 = getelementptr inbounds %class.HighsLp, ptr %1200, i32 0, i32 3
  %1202 = load i32, ptr %38, align 4, !tbaa !77
  %1203 = sext i32 %1202 to i64
  %1204 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt6vectorIdSaIdEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %1201, i64 noundef %1203) #9
  %1205 = load double, ptr %1204, align 8, !tbaa !78
  %1206 = fsub double %1198, %1205
  %1207 = fadd double %1206, 1.000000e+00
  %1208 = getelementptr inbounds %"class.presolve::HPresolve", ptr %138, i32 0, i32 4
  %1209 = load double, ptr %1208, align 8, !tbaa !135
  %1210 = fadd double %1207, %1209
  store double %1210, ptr %63, align 8, !tbaa !78
  %1211 = load double, ptr %40, align 8, !tbaa !78
  %1212 = call double @llvm.fabs.f64(double %1211)
  %1213 = load double, ptr %63, align 8, !tbaa !78
  %1214 = fcmp ogt double %1212, %1213
  %1215 = zext i1 %1214 to i8
  store i8 %1215, ptr %62, align 1, !tbaa !76
  call void @llvm.lifetime.end.p0(i64 8, ptr %63) #9
  br label %1216

1216:                                             ; preds = %1191, %1179
  %1217 = load i8, ptr %62, align 1, !tbaa !76, !range !74, !noundef !75
  %1218 = trunc i8 %1217 to i1
  br i1 %1218, label %1219, label %1220

1219:                                             ; preds = %1216
  store i32 13, ptr %30, align 4
  br label %1235, !llvm.loop !119

1220:                                             ; preds = %1216
  br label %1234

1221:                                             ; preds = %1085
  %1222 = load i8, ptr %60, align 1, !tbaa !76, !range !74, !noundef !75
  %1223 = trunc i8 %1222 to i1
  br i1 %1223, label %1228, label %1224

1224:                                             ; preds = %1221
  %1225 = load i8, ptr %61, align 1, !tbaa !76, !range !74, !noundef !75
  %1226 = trunc i8 %1225 to i1
  %1227 = xor i1 %1226, true
  br label %1228

1228:                                             ; preds = %1224, %1221
  %1229 = phi i1 [ false, %1221 ], [ %1227, %1224 ]
  br i1 %1229, label %1230, label %1231

1230:                                             ; preds = %1228
  br label %1233

1231:                                             ; preds = %1228
  call void @__assert_fail(ptr noundef @.str.159, ptr noundef @.str.55, i32 noundef 5954, ptr noundef @__PRETTY_FUNCTION__._ZN8presolve9HPresolve25detectParallelRowsAndColsERNS_19HighsPostsolveStackE) #10
  unreachable

1232:                                             ; No predecessors!
  br label %1233

1233:                                             ; preds = %1232, %1230
  br label %1234

1234:                                             ; preds = %1233, %1220
  store i32 0, ptr %30, align 4
  br label %1235

1235:                                             ; preds = %1234, %1219
  call void @llvm.lifetime.end.p0(i64 1, ptr %62) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr %61) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr %60) #9
  %1236 = load i32, ptr %30, align 4
  switch i32 %1236, label %1931 [
    i32 0, label %1237
  ]

1237:                                             ; preds = %1235
  br label %1238

1238:                                             ; preds = %1237, %1082
  call void @llvm.lifetime.start.p0(i64 1, ptr %64) #9
  store i8 1, ptr %64, align 1, !tbaa !76
  call void @llvm.lifetime.start.p0(i64 8, ptr %65) #9
  call void @llvm.lifetime.start.p0(i64 32, ptr %66) #9
  %1239 = load i32, ptr %38, align 4, !tbaa !77
  invoke void @_ZNK8presolve9HPresolve15getColumnVectorEi(ptr dead_on_unwind writable sret(%struct.HighsTripletListSlice) align 8 %66, ptr noundef nonnull align 8 dereferenceable(1720) %138, i32 noundef %1239)
          to label %1240 unwind label %1249

1240:                                             ; preds = %1238
  store ptr %66, ptr %65, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 32, ptr %67) #9
  %1241 = load ptr, ptr %65, align 8, !tbaa !5
  invoke void @_ZNK16HighsMatrixSliceI21HighsTripletListSliceE5beginEv(ptr dead_on_unwind writable sret(%"class.HighsMatrixSlice<HighsTripletListSlice>::iterator") align 8 %67, ptr noundef nonnull align 8 dereferenceable(28) %1241)
          to label %1242 unwind label %1253

1242:                                             ; preds = %1240
  call void @llvm.lifetime.start.p0(i64 32, ptr %68) #9
  %1243 = load ptr, ptr %65, align 8, !tbaa !5
  invoke void @_ZNK16HighsMatrixSliceI21HighsTripletListSliceE3endEv(ptr dead_on_unwind writable sret(%"class.HighsMatrixSlice<HighsTripletListSlice>::iterator") align 8 %68, ptr noundef nonnull align 8 dereferenceable(28) %1243)
          to label %1244 unwind label %1257

1244:                                             ; preds = %1242
  br label %1245

1245:                                             ; preds = %1333, %1244
  %1246 = invoke noundef zeroext i1 @_ZNK16HighsMatrixSliceI21HighsTripletListSliceE8iteratorneERKS2_(ptr noundef nonnull align 8 dereferenceable(28) %67, ptr noundef nonnull align 8 dereferenceable(28) %68)
          to label %1247 unwind label %1257

1247:                                             ; preds = %1245
  br i1 %1246, label %1261, label %1248

1248:                                             ; preds = %1247
  store i32 15, ptr %30, align 4
  br label %1336

1249:                                             ; preds = %1238
  %1250 = landingpad { ptr, i32 }
          cleanup
  %1251 = extractvalue { ptr, i32 } %1250, 0
  store ptr %1251, ptr %12, align 8
  %1252 = extractvalue { ptr, i32 } %1250, 1
  store i32 %1252, ptr %13, align 4
  br label %1339

1253:                                             ; preds = %1240
  %1254 = landingpad { ptr, i32 }
          cleanup
  %1255 = extractvalue { ptr, i32 } %1254, 0
  store ptr %1255, ptr %12, align 8
  %1256 = extractvalue { ptr, i32 } %1254, 1
  store i32 %1256, ptr %13, align 4
  br label %1338

1257:                                             ; preds = %1331, %1245, %1242
  %1258 = landingpad { ptr, i32 }
          cleanup
  %1259 = extractvalue { ptr, i32 } %1258, 0
  store ptr %1259, ptr %12, align 8
  %1260 = extractvalue { ptr, i32 } %1258, 1
  store i32 %1260, ptr %13, align 4
  br label %1337

1261:                                             ; preds = %1247
  call void @llvm.lifetime.start.p0(i64 8, ptr %69) #9
  %1262 = invoke noundef nonnull align 8 dereferenceable(16) ptr @_ZN16HighsMatrixSliceI21HighsTripletListSliceE8iteratordeEv(ptr noundef nonnull align 8 dereferenceable(28) %67)
          to label %1263 unwind label %1276

1263:                                             ; preds = %1261
  store ptr %1262, ptr %69, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 4, ptr %70) #9
  %1264 = load ptr, ptr %69, align 8, !tbaa !5
  %1265 = invoke noundef i32 @_ZNK17HighsSliceNonzero5indexEv(ptr noundef nonnull align 8 dereferenceable(16) %1264)
          to label %1266 unwind label %1280

1266:                                             ; preds = %1263
  %1267 = load i32, ptr %39, align 4, !tbaa !77
  %1268 = invoke noundef i32 @_ZN8presolve9HPresolve11findNonzeroEii(ptr noundef nonnull align 8 dereferenceable(1720) %138, i32 noundef %1265, i32 noundef %1267)
          to label %1269 unwind label %1280

1269:                                             ; preds = %1266
  store i32 %1268, ptr %70, align 4, !tbaa !77
  %1270 = load i32, ptr %70, align 4, !tbaa !77
  %1271 = icmp ne i32 %1270, -1
  %1272 = zext i1 %1271 to i8
  store i8 %1272, ptr %64, align 1, !tbaa !76
  %1273 = load i8, ptr %64, align 1, !tbaa !76, !range !74, !noundef !75
  %1274 = trunc i8 %1273 to i1
  br i1 %1274, label %1284, label %1275

1275:                                             ; preds = %1269
  store i32 15, ptr %30, align 4
  br label %1325

1276:                                             ; preds = %1261
  %1277 = landingpad { ptr, i32 }
          cleanup
  %1278 = extractvalue { ptr, i32 } %1277, 0
  store ptr %1278, ptr %12, align 8
  %1279 = extractvalue { ptr, i32 } %1277, 1
  store i32 %1279, ptr %13, align 4
  br label %1335

1280:                                             ; preds = %1266, %1263
  %1281 = landingpad { ptr, i32 }
          cleanup
  %1282 = extractvalue { ptr, i32 } %1281, 0
  store ptr %1282, ptr %12, align 8
  %1283 = extractvalue { ptr, i32 } %1281, 1
  store i32 %1283, ptr %13, align 4
  br label %1334

1284:                                             ; preds = %1269
  call void @llvm.lifetime.start.p0(i64 16, ptr %71) #9
  %1285 = getelementptr inbounds %"class.presolve::HPresolve", ptr %138, i32 0, i32 5
  %1286 = load i32, ptr %70, align 4, !tbaa !77
  %1287 = sext i32 %1286 to i64
  %1288 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt6vectorIdSaIdEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %1285, i64 noundef %1287) #9
  %1289 = load double, ptr %1288, align 8, !tbaa !78
  call void @llvm.lifetime.start.p0(i64 16, ptr %72) #9
  call void @llvm.lifetime.start.p0(i64 16, ptr %73) #9
  %1290 = load double, ptr %40, align 8, !tbaa !78
  invoke void @_ZN12HighsCDoubleC2Ed(ptr noundef nonnull align 8 dereferenceable(16) %73, double noundef %1290)
          to label %1291 unwind label %1320

1291:                                             ; preds = %1284
  %1292 = load ptr, ptr %69, align 8, !tbaa !5
  %1293 = invoke noundef double @_ZNK17HighsSliceNonzero5valueEv(ptr noundef nonnull align 8 dereferenceable(16) %1292)
          to label %1294 unwind label %1320

1294:                                             ; preds = %1291
  %1295 = invoke { double, double } @_ZNK12HighsCDoublemlEd(ptr noundef nonnull align 8 dereferenceable(16) %73, double noundef %1293)
          to label %1296 unwind label %1320

1296:                                             ; preds = %1294
  %1297 = getelementptr inbounds { double, double }, ptr %72, i32 0, i32 0
  %1298 = extractvalue { double, double } %1295, 0
  store double %1298, ptr %1297, align 8
  %1299 = getelementptr inbounds { double, double }, ptr %72, i32 0, i32 1
  %1300 = extractvalue { double, double } %1295, 1
  store double %1300, ptr %1299, align 8
  %1301 = invoke { double, double } @_ZmidRK12HighsCDouble(double noundef %1289, ptr noundef nonnull align 8 dereferenceable(16) %72)
          to label %1302 unwind label %1320

1302:                                             ; preds = %1296
  %1303 = getelementptr inbounds { double, double }, ptr %71, i32 0, i32 0
  %1304 = extractvalue { double, double } %1301, 0
  store double %1304, ptr %1303, align 8
  %1305 = getelementptr inbounds { double, double }, ptr %71, i32 0, i32 1
  %1306 = extractvalue { double, double } %1301, 1
  store double %1306, ptr %1305, align 8
  %1307 = invoke noundef double @_ZNK12HighsCDoublecvdEv(ptr noundef nonnull align 8 dereferenceable(16) %71)
          to label %1308 unwind label %1320

1308:                                             ; preds = %1302
  %1309 = invoke noundef double @_ZSt3absd(double noundef %1307)
          to label %1310 unwind label %1320

1310:                                             ; preds = %1308
  %1311 = getelementptr inbounds %"class.presolve::HPresolve", ptr %138, i32 0, i32 1
  %1312 = load ptr, ptr %1311, align 8, !tbaa !83
  %1313 = getelementptr inbounds %struct.HighsOptionsStruct, ptr %1312, i32 0, i32 12
  %1314 = load double, ptr %1313, align 8, !tbaa !84
  %1315 = fcmp ole double %1309, %1314
  %1316 = zext i1 %1315 to i8
  store i8 %1316, ptr %64, align 1, !tbaa !76
  call void @llvm.lifetime.end.p0(i64 16, ptr %73) #9
  call void @llvm.lifetime.end.p0(i64 16, ptr %72) #9
  call void @llvm.lifetime.end.p0(i64 16, ptr %71) #9
  %1317 = load i8, ptr %64, align 1, !tbaa !76, !range !74, !noundef !75
  %1318 = trunc i8 %1317 to i1
  br i1 %1318, label %1324, label %1319

1319:                                             ; preds = %1310
  store i32 15, ptr %30, align 4
  br label %1325

1320:                                             ; preds = %1308, %1302, %1296, %1294, %1291, %1284
  %1321 = landingpad { ptr, i32 }
          cleanup
  %1322 = extractvalue { ptr, i32 } %1321, 0
  store ptr %1322, ptr %12, align 8
  %1323 = extractvalue { ptr, i32 } %1321, 1
  store i32 %1323, ptr %13, align 4
  call void @llvm.lifetime.end.p0(i64 16, ptr %73) #9
  call void @llvm.lifetime.end.p0(i64 16, ptr %72) #9
  call void @llvm.lifetime.end.p0(i64 16, ptr %71) #9
  br label %1334

1324:                                             ; preds = %1310
  store i32 0, ptr %30, align 4
  br label %1325

1325:                                             ; preds = %1324, %1319, %1275
  call void @llvm.lifetime.end.p0(i64 4, ptr %70) #9
  %1326 = load i32, ptr %30, align 4
  switch i32 %1326, label %1328 [
    i32 0, label %1327
  ]

1327:                                             ; preds = %1325
  store i32 0, ptr %30, align 4
  br label %1328

1328:                                             ; preds = %1327, %1325
  call void @llvm.lifetime.end.p0(i64 8, ptr %69) #9
  %1329 = load i32, ptr %30, align 4
  switch i32 %1329, label %1336 [
    i32 0, label %1330
  ]

1330:                                             ; preds = %1328
  br label %1331

1331:                                             ; preds = %1330
  %1332 = invoke noundef nonnull align 8 dereferenceable(28) ptr @_ZN16HighsMatrixSliceI21HighsTripletListSliceE8iteratorppEv(ptr noundef nonnull align 8 dereferenceable(28) %67)
          to label %1333 unwind label %1257

1333:                                             ; preds = %1331
  br label %1245

1334:                                             ; preds = %1320, %1280
  call void @llvm.lifetime.end.p0(i64 4, ptr %70) #9
  br label %1335

1335:                                             ; preds = %1334, %1276
  call void @llvm.lifetime.end.p0(i64 8, ptr %69) #9
  br label %1337

1336:                                             ; preds = %1328, %1248
  call void @llvm.lifetime.end.p0(i64 32, ptr %68) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr %67) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr %66) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr %65) #9
  br label %1340

1337:                                             ; preds = %1335, %1257
  call void @llvm.lifetime.end.p0(i64 32, ptr %68) #9
  br label %1338

1338:                                             ; preds = %1337, %1253
  call void @llvm.lifetime.end.p0(i64 32, ptr %67) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr %66) #9
  br label %1339

1339:                                             ; preds = %1338, %1249
  call void @llvm.lifetime.end.p0(i64 8, ptr %65) #9
  br label %1930

1340:                                             ; preds = %1336
  %1341 = load i8, ptr %64, align 1, !tbaa !76, !range !74, !noundef !75
  %1342 = trunc i8 %1341 to i1
  br i1 %1342, label %1344, label %1343

1343:                                             ; preds = %1340
  store i32 13, ptr %30, align 4
  br label %1929, !llvm.loop !119

1344:                                             ; preds = %1340
  %1345 = load i32, ptr %59, align 4, !tbaa !77
  switch i32 %1345, label %1928 [
    i32 4, label %1346
    i32 3, label %1384
    i32 2, label %1418
    i32 1, label %1452
    i32 0, label %1486
  ]

1346:                                             ; preds = %1344
  %1347 = load i32, ptr %39, align 4, !tbaa !77
  store i32 %1347, ptr %34, align 4, !tbaa !77
  %1348 = getelementptr inbounds %"class.presolve::HPresolve", ptr %138, i32 0, i32 17
  %1349 = load i32, ptr %39, align 4, !tbaa !77
  %1350 = sext i32 %1349 to i64
  %1351 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNSt6vectorIiSaIiEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %1348, i64 noundef %1350) #9
  %1352 = load i32, ptr %1351, align 4, !tbaa !77
  %1353 = icmp eq i32 %1352, 1
  br i1 %1353, label %1354, label %1372

1354:                                             ; preds = %1346
  call void @llvm.lifetime.start.p0(i64 4, ptr %74) #9
  %1355 = getelementptr inbounds %"class.presolve::HPresolve", ptr %138, i32 0, i32 6
  %1356 = getelementptr inbounds %"class.presolve::HPresolve", ptr %138, i32 0, i32 8
  %1357 = load i32, ptr %39, align 4, !tbaa !77
  %1358 = sext i32 %1357 to i64
  %1359 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNSt6vectorIiSaIiEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %1356, i64 noundef %1358) #9
  %1360 = load i32, ptr %1359, align 4, !tbaa !77
  %1361 = sext i32 %1360 to i64
  %1362 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNSt6vectorIiSaIiEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %1355, i64 noundef %1361) #9
  %1363 = load i32, ptr %1362, align 4, !tbaa !77
  store i32 %1363, ptr %74, align 4, !tbaa !77
  %1364 = invoke noundef nonnull align 4 dereferenceable(4) ptr @_ZN14HighsHashTableIiiEixERKi(ptr noundef nonnull align 8 dereferenceable(40) %16, ptr noundef nonnull align 4 dereferenceable(4) %74)
          to label %1365 unwind label %1368

1365:                                             ; preds = %1354
  %1366 = load i32, ptr %1364, align 4, !tbaa !77
  %1367 = sub nsw i32 %1366, 1
  store i32 %1367, ptr %1364, align 4, !tbaa !77
  call void @llvm.lifetime.end.p0(i64 4, ptr %74) #9
  br label %1372

1368:                                             ; preds = %1354
  %1369 = landingpad { ptr, i32 }
          cleanup
  %1370 = extractvalue { ptr, i32 } %1369, 0
  store ptr %1370, ptr %12, align 8
  %1371 = extractvalue { ptr, i32 } %1369, 1
  store i32 %1371, ptr %13, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %74) #9
  br label %1930

1372:                                             ; preds = %1365, %1346
  %1373 = load ptr, ptr %5, align 8, !tbaa !5
  %1374 = load i32, ptr %39, align 4, !tbaa !77
  %1375 = invoke noundef zeroext i1 @_ZN8presolve9HPresolve24fixColToLowerOrUnboundedERNS_19HighsPostsolveStackEi(ptr noundef nonnull align 8 dereferenceable(1720) %138, ptr noundef nonnull align 8 dereferenceable(224) %1373, i32 noundef %1374)
          to label %1376 unwind label %1379

1376:                                             ; preds = %1372
  br i1 %1375, label %1377, label %1383

1377:                                             ; preds = %1376
  %1378 = getelementptr inbounds %"class.presolve::HPresolve", ptr %138, i32 0, i32 57
  store i32 2, ptr %1378, align 4, !tbaa !136
  store i32 2, ptr %3, align 4
  store i32 1, ptr %30, align 4
  br label %1929

1379:                                             ; preds = %1478, %1444, %1410, %1372
  %1380 = landingpad { ptr, i32 }
          cleanup
  %1381 = extractvalue { ptr, i32 } %1380, 0
  store ptr %1381, ptr %12, align 8
  %1382 = extractvalue { ptr, i32 } %1380, 1
  store i32 %1382, ptr %13, align 4
  br label %1930

1383:                                             ; preds = %1376
  br label %1928

1384:                                             ; preds = %1344
  %1385 = load i32, ptr %39, align 4, !tbaa !77
  store i32 %1385, ptr %34, align 4, !tbaa !77
  %1386 = getelementptr inbounds %"class.presolve::HPresolve", ptr %138, i32 0, i32 17
  %1387 = load i32, ptr %39, align 4, !tbaa !77
  %1388 = sext i32 %1387 to i64
  %1389 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNSt6vectorIiSaIiEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %1386, i64 noundef %1388) #9
  %1390 = load i32, ptr %1389, align 4, !tbaa !77
  %1391 = icmp eq i32 %1390, 1
  br i1 %1391, label %1392, label %1410

1392:                                             ; preds = %1384
  call void @llvm.lifetime.start.p0(i64 4, ptr %75) #9
  %1393 = getelementptr inbounds %"class.presolve::HPresolve", ptr %138, i32 0, i32 6
  %1394 = getelementptr inbounds %"class.presolve::HPresolve", ptr %138, i32 0, i32 8
  %1395 = load i32, ptr %39, align 4, !tbaa !77
  %1396 = sext i32 %1395 to i64
  %1397 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNSt6vectorIiSaIiEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %1394, i64 noundef %1396) #9
  %1398 = load i32, ptr %1397, align 4, !tbaa !77
  %1399 = sext i32 %1398 to i64
  %1400 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNSt6vectorIiSaIiEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %1393, i64 noundef %1399) #9
  %1401 = load i32, ptr %1400, align 4, !tbaa !77
  store i32 %1401, ptr %75, align 4, !tbaa !77
  %1402 = invoke noundef nonnull align 4 dereferenceable(4) ptr @_ZN14HighsHashTableIiiEixERKi(ptr noundef nonnull align 8 dereferenceable(40) %16, ptr noundef nonnull align 4 dereferenceable(4) %75)
          to label %1403 unwind label %1406

1403:                                             ; preds = %1392
  %1404 = load i32, ptr %1402, align 4, !tbaa !77
  %1405 = sub nsw i32 %1404, 1
  store i32 %1405, ptr %1402, align 4, !tbaa !77
  call void @llvm.lifetime.end.p0(i64 4, ptr %75) #9
  br label %1410

1406:                                             ; preds = %1392
  %1407 = landingpad { ptr, i32 }
          cleanup
  %1408 = extractvalue { ptr, i32 } %1407, 0
  store ptr %1408, ptr %12, align 8
  %1409 = extractvalue { ptr, i32 } %1407, 1
  store i32 %1409, ptr %13, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %75) #9
  br label %1930

1410:                                             ; preds = %1403, %1384
  %1411 = load ptr, ptr %5, align 8, !tbaa !5
  %1412 = load i32, ptr %39, align 4, !tbaa !77
  %1413 = invoke noundef zeroext i1 @_ZN8presolve9HPresolve24fixColToUpperOrUnboundedERNS_19HighsPostsolveStackEi(ptr noundef nonnull align 8 dereferenceable(1720) %138, ptr noundef nonnull align 8 dereferenceable(224) %1411, i32 noundef %1412)
          to label %1414 unwind label %1379

1414:                                             ; preds = %1410
  br i1 %1413, label %1415, label %1417

1415:                                             ; preds = %1414
  %1416 = getelementptr inbounds %"class.presolve::HPresolve", ptr %138, i32 0, i32 57
  store i32 2, ptr %1416, align 4, !tbaa !136
  store i32 2, ptr %3, align 4
  store i32 1, ptr %30, align 4
  br label %1929

1417:                                             ; preds = %1414
  br label %1928

1418:                                             ; preds = %1344
  %1419 = load i32, ptr %38, align 4, !tbaa !77
  store i32 %1419, ptr %34, align 4, !tbaa !77
  %1420 = getelementptr inbounds %"class.presolve::HPresolve", ptr %138, i32 0, i32 17
  %1421 = load i32, ptr %38, align 4, !tbaa !77
  %1422 = sext i32 %1421 to i64
  %1423 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNSt6vectorIiSaIiEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %1420, i64 noundef %1422) #9
  %1424 = load i32, ptr %1423, align 4, !tbaa !77
  %1425 = icmp eq i32 %1424, 1
  br i1 %1425, label %1426, label %1444

1426:                                             ; preds = %1418
  call void @llvm.lifetime.start.p0(i64 4, ptr %76) #9
  %1427 = getelementptr inbounds %"class.presolve::HPresolve", ptr %138, i32 0, i32 6
  %1428 = getelementptr inbounds %"class.presolve::HPresolve", ptr %138, i32 0, i32 8
  %1429 = load i32, ptr %38, align 4, !tbaa !77
  %1430 = sext i32 %1429 to i64
  %1431 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNSt6vectorIiSaIiEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %1428, i64 noundef %1430) #9
  %1432 = load i32, ptr %1431, align 4, !tbaa !77
  %1433 = sext i32 %1432 to i64
  %1434 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNSt6vectorIiSaIiEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %1427, i64 noundef %1433) #9
  %1435 = load i32, ptr %1434, align 4, !tbaa !77
  store i32 %1435, ptr %76, align 4, !tbaa !77
  %1436 = invoke noundef nonnull align 4 dereferenceable(4) ptr @_ZN14HighsHashTableIiiEixERKi(ptr noundef nonnull align 8 dereferenceable(40) %16, ptr noundef nonnull align 4 dereferenceable(4) %76)
          to label %1437 unwind label %1440

1437:                                             ; preds = %1426
  %1438 = load i32, ptr %1436, align 4, !tbaa !77
  %1439 = sub nsw i32 %1438, 1
  store i32 %1439, ptr %1436, align 4, !tbaa !77
  call void @llvm.lifetime.end.p0(i64 4, ptr %76) #9
  br label %1444

1440:                                             ; preds = %1426
  %1441 = landingpad { ptr, i32 }
          cleanup
  %1442 = extractvalue { ptr, i32 } %1441, 0
  store ptr %1442, ptr %12, align 8
  %1443 = extractvalue { ptr, i32 } %1441, 1
  store i32 %1443, ptr %13, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %76) #9
  br label %1930

1444:                                             ; preds = %1437, %1418
  %1445 = load ptr, ptr %5, align 8, !tbaa !5
  %1446 = load i32, ptr %38, align 4, !tbaa !77
  %1447 = invoke noundef zeroext i1 @_ZN8presolve9HPresolve24fixColToLowerOrUnboundedERNS_19HighsPostsolveStackEi(ptr noundef nonnull align 8 dereferenceable(1720) %138, ptr noundef nonnull align 8 dereferenceable(224) %1445, i32 noundef %1446)
          to label %1448 unwind label %1379

1448:                                             ; preds = %1444
  br i1 %1447, label %1449, label %1451

1449:                                             ; preds = %1448
  %1450 = getelementptr inbounds %"class.presolve::HPresolve", ptr %138, i32 0, i32 57
  store i32 2, ptr %1450, align 4, !tbaa !136
  store i32 2, ptr %3, align 4
  store i32 1, ptr %30, align 4
  br label %1929

1451:                                             ; preds = %1448
  br label %1928

1452:                                             ; preds = %1344
  %1453 = load i32, ptr %38, align 4, !tbaa !77
  store i32 %1453, ptr %34, align 4, !tbaa !77
  %1454 = getelementptr inbounds %"class.presolve::HPresolve", ptr %138, i32 0, i32 17
  %1455 = load i32, ptr %38, align 4, !tbaa !77
  %1456 = sext i32 %1455 to i64
  %1457 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNSt6vectorIiSaIiEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %1454, i64 noundef %1456) #9
  %1458 = load i32, ptr %1457, align 4, !tbaa !77
  %1459 = icmp eq i32 %1458, 1
  br i1 %1459, label %1460, label %1478

1460:                                             ; preds = %1452
  call void @llvm.lifetime.start.p0(i64 4, ptr %77) #9
  %1461 = getelementptr inbounds %"class.presolve::HPresolve", ptr %138, i32 0, i32 6
  %1462 = getelementptr inbounds %"class.presolve::HPresolve", ptr %138, i32 0, i32 8
  %1463 = load i32, ptr %38, align 4, !tbaa !77
  %1464 = sext i32 %1463 to i64
  %1465 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNSt6vectorIiSaIiEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %1462, i64 noundef %1464) #9
  %1466 = load i32, ptr %1465, align 4, !tbaa !77
  %1467 = sext i32 %1466 to i64
  %1468 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNSt6vectorIiSaIiEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %1461, i64 noundef %1467) #9
  %1469 = load i32, ptr %1468, align 4, !tbaa !77
  store i32 %1469, ptr %77, align 4, !tbaa !77
  %1470 = invoke noundef nonnull align 4 dereferenceable(4) ptr @_ZN14HighsHashTableIiiEixERKi(ptr noundef nonnull align 8 dereferenceable(40) %16, ptr noundef nonnull align 4 dereferenceable(4) %77)
          to label %1471 unwind label %1474

1471:                                             ; preds = %1460
  %1472 = load i32, ptr %1470, align 4, !tbaa !77
  %1473 = sub nsw i32 %1472, 1
  store i32 %1473, ptr %1470, align 4, !tbaa !77
  call void @llvm.lifetime.end.p0(i64 4, ptr %77) #9
  br label %1478

1474:                                             ; preds = %1460
  %1475 = landingpad { ptr, i32 }
          cleanup
  %1476 = extractvalue { ptr, i32 } %1475, 0
  store ptr %1476, ptr %12, align 8
  %1477 = extractvalue { ptr, i32 } %1475, 1
  store i32 %1477, ptr %13, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %77) #9
  br label %1930

1478:                                             ; preds = %1471, %1452
  %1479 = load ptr, ptr %5, align 8, !tbaa !5
  %1480 = load i32, ptr %38, align 4, !tbaa !77
  %1481 = invoke noundef zeroext i1 @_ZN8presolve9HPresolve24fixColToUpperOrUnboundedERNS_19HighsPostsolveStackEi(ptr noundef nonnull align 8 dereferenceable(1720) %138, ptr noundef nonnull align 8 dereferenceable(224) %1479, i32 noundef %1480)
          to label %1482 unwind label %1379

1482:                                             ; preds = %1478
  br i1 %1481, label %1483, label %1485

1483:                                             ; preds = %1482
  %1484 = getelementptr inbounds %"class.presolve::HPresolve", ptr %138, i32 0, i32 57
  store i32 2, ptr %1484, align 4, !tbaa !136
  store i32 2, ptr %3, align 4
  store i32 1, ptr %30, align 4
  br label %1929

1485:                                             ; preds = %1482
  br label %1928

1486:                                             ; preds = %1344
  call void @llvm.lifetime.start.p0(i64 1, ptr %78) #9
  %1487 = load ptr, ptr %5, align 8, !tbaa !5
  %1488 = load double, ptr %40, align 8, !tbaa !78
  %1489 = getelementptr inbounds %"class.presolve::HPresolve", ptr %138, i32 0, i32 0
  %1490 = load ptr, ptr %1489, align 8, !tbaa !95
  %1491 = getelementptr inbounds %class.HighsLp, ptr %1490, i32 0, i32 3
  %1492 = load i32, ptr %38, align 4, !tbaa !77
  %1493 = sext i32 %1492 to i64
  %1494 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt6vectorIdSaIdEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %1491, i64 noundef %1493) #9
  %1495 = load double, ptr %1494, align 8, !tbaa !78
  %1496 = getelementptr inbounds %"class.presolve::HPresolve", ptr %138, i32 0, i32 0
  %1497 = load ptr, ptr %1496, align 8, !tbaa !95
  %1498 = getelementptr inbounds %class.HighsLp, ptr %1497, i32 0, i32 4
  %1499 = load i32, ptr %38, align 4, !tbaa !77
  %1500 = sext i32 %1499 to i64
  %1501 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt6vectorIdSaIdEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %1498, i64 noundef %1500) #9
  %1502 = load double, ptr %1501, align 8, !tbaa !78
  %1503 = getelementptr inbounds %"class.presolve::HPresolve", ptr %138, i32 0, i32 0
  %1504 = load ptr, ptr %1503, align 8, !tbaa !95
  %1505 = getelementptr inbounds %class.HighsLp, ptr %1504, i32 0, i32 3
  %1506 = load i32, ptr %39, align 4, !tbaa !77
  %1507 = sext i32 %1506 to i64
  %1508 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt6vectorIdSaIdEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %1505, i64 noundef %1507) #9
  %1509 = load double, ptr %1508, align 8, !tbaa !78
  %1510 = getelementptr inbounds %"class.presolve::HPresolve", ptr %138, i32 0, i32 0
  %1511 = load ptr, ptr %1510, align 8, !tbaa !95
  %1512 = getelementptr inbounds %class.HighsLp, ptr %1511, i32 0, i32 4
  %1513 = load i32, ptr %39, align 4, !tbaa !77
  %1514 = sext i32 %1513 to i64
  %1515 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt6vectorIdSaIdEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %1512, i64 noundef %1514) #9
  %1516 = load double, ptr %1515, align 8, !tbaa !78
  %1517 = load i32, ptr %38, align 4, !tbaa !77
  %1518 = load i32, ptr %39, align 4, !tbaa !77
  %1519 = getelementptr inbounds %"class.presolve::HPresolve", ptr %138, i32 0, i32 0
  %1520 = load ptr, ptr %1519, align 8, !tbaa !95
  %1521 = getelementptr inbounds %class.HighsLp, ptr %1520, i32 0, i32 16
  %1522 = load i32, ptr %38, align 4, !tbaa !77
  %1523 = sext i32 %1522 to i64
  %1524 = call noundef nonnull align 1 dereferenceable(1) ptr @_ZNSt6vectorI12HighsVarTypeSaIS0_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %1521, i64 noundef %1523) #9
  %1525 = load i8, ptr %1524, align 1, !tbaa !132
  %1526 = icmp eq i8 %1525, 1
  %1527 = getelementptr inbounds %"class.presolve::HPresolve", ptr %138, i32 0, i32 0
  %1528 = load ptr, ptr %1527, align 8, !tbaa !95
  %1529 = getelementptr inbounds %class.HighsLp, ptr %1528, i32 0, i32 16
  %1530 = load i32, ptr %39, align 4, !tbaa !77
  %1531 = sext i32 %1530 to i64
  %1532 = call noundef nonnull align 1 dereferenceable(1) ptr @_ZNSt6vectorI12HighsVarTypeSaIS0_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %1529, i64 noundef %1531) #9
  %1533 = load i8, ptr %1532, align 1, !tbaa !132
  %1534 = icmp eq i8 %1533, 1
  %1535 = getelementptr inbounds %"class.presolve::HPresolve", ptr %138, i32 0, i32 1
  %1536 = load ptr, ptr %1535, align 8, !tbaa !83
  %1537 = getelementptr inbounds %struct.HighsOptionsStruct, ptr %1536, i32 0, i32 120
  %1538 = load double, ptr %1537, align 8, !tbaa !137
  %1539 = invoke noundef zeroext i1 @_ZN8presolve19HighsPostsolveStack15duplicateColumnEdddddiibbd(ptr noundef nonnull align 8 dereferenceable(224) %1487, double noundef %1488, double noundef %1495, double noundef %1502, double noundef %1509, double noundef %1516, i32 noundef %1517, i32 noundef %1518, i1 noundef zeroext %1526, i1 noundef zeroext %1534, double noundef %1538)
          to label %1540 unwind label %1548

1540:                                             ; preds = %1486
  %1541 = zext i1 %1539 to i8
  store i8 %1541, ptr %78, align 1, !tbaa !76
  %1542 = load i8, ptr %78, align 1, !tbaa !76, !range !74, !noundef !75
  %1543 = trunc i8 %1542 to i1
  br i1 %1543, label %1552, label %1544

1544:                                             ; preds = %1540
  br i1 false, label %1545, label %1552

1545:                                             ; preds = %1544
  %1546 = invoke i32 (ptr, ...) @printf(ptr noundef @.str.160)
          to label %1547 unwind label %1548

1547:                                             ; preds = %1545
  store i32 17, ptr %30, align 4
  br label %1926

1548:                                             ; preds = %1545, %1486
  %1549 = landingpad { ptr, i32 }
          cleanup
  %1550 = extractvalue { ptr, i32 } %1549, 0
  store ptr %1550, ptr %12, align 8
  %1551 = extractvalue { ptr, i32 } %1549, 1
  store i32 %1551, ptr %13, align 4
  br label %1927

1552:                                             ; preds = %1544, %1540
  call void @llvm.lifetime.start.p0(i64 4, ptr %79) #9
  store i32 0, ptr %79, align 4, !tbaa !77
  %1553 = getelementptr inbounds %"class.presolve::HPresolve", ptr %138, i32 0, i32 0
  %1554 = load ptr, ptr %1553, align 8, !tbaa !95
  %1555 = getelementptr inbounds %class.HighsLp, ptr %1554, i32 0, i32 16
  %1556 = load i32, ptr %39, align 4, !tbaa !77
  %1557 = sext i32 %1556 to i64
  %1558 = call noundef nonnull align 1 dereferenceable(1) ptr @_ZNSt6vectorI12HighsVarTypeSaIS0_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %1555, i64 noundef %1557) #9
  %1559 = load i8, ptr %1558, align 1, !tbaa !132
  %1560 = icmp ne i8 %1559, 1
  br i1 %1560, label %1561, label %1577

1561:                                             ; preds = %1552
  %1562 = getelementptr inbounds %"class.presolve::HPresolve", ptr %138, i32 0, i32 0
  %1563 = load ptr, ptr %1562, align 8, !tbaa !95
  %1564 = getelementptr inbounds %class.HighsLp, ptr %1563, i32 0, i32 16
  %1565 = load i32, ptr %38, align 4, !tbaa !77
  %1566 = sext i32 %1565 to i64
  %1567 = call noundef nonnull align 1 dereferenceable(1) ptr @_ZNSt6vectorI12HighsVarTypeSaIS0_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %1564, i64 noundef %1566) #9
  %1568 = load i8, ptr %1567, align 1, !tbaa !132
  %1569 = icmp eq i8 %1568, 1
  br i1 %1569, label %1570, label %1577

1570:                                             ; preds = %1561
  store i32 1, ptr %79, align 4, !tbaa !77
  %1571 = getelementptr inbounds %"class.presolve::HPresolve", ptr %138, i32 0, i32 0
  %1572 = load ptr, ptr %1571, align 8, !tbaa !95
  %1573 = getelementptr inbounds %class.HighsLp, ptr %1572, i32 0, i32 16
  %1574 = load i32, ptr %38, align 4, !tbaa !77
  %1575 = sext i32 %1574 to i64
  %1576 = call noundef nonnull align 1 dereferenceable(1) ptr @_ZNSt6vectorI12HighsVarTypeSaIS0_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %1573, i64 noundef %1575) #9
  store i8 0, ptr %1576, align 1, !tbaa !132
  br label %1577

1577:                                             ; preds = %1570, %1561, %1552
  %1578 = load i32, ptr %38, align 4, !tbaa !77
  invoke void @_ZN8presolve9HPresolve14markChangedColEi(ptr noundef nonnull align 8 dereferenceable(1720) %138, i32 noundef %1578)
          to label %1579 unwind label %1600

1579:                                             ; preds = %1577
  %1580 = getelementptr inbounds %"class.presolve::HPresolve", ptr %138, i32 0, i32 17
  %1581 = load i32, ptr %39, align 4, !tbaa !77
  %1582 = sext i32 %1581 to i64
  %1583 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNSt6vectorIiSaIiEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %1580, i64 noundef %1582) #9
  %1584 = load i32, ptr %1583, align 4, !tbaa !77
  %1585 = icmp eq i32 %1584, 1
  br i1 %1585, label %1586, label %1608

1586:                                             ; preds = %1579
  call void @llvm.lifetime.start.p0(i64 4, ptr %80) #9
  %1587 = getelementptr inbounds %"class.presolve::HPresolve", ptr %138, i32 0, i32 6
  %1588 = getelementptr inbounds %"class.presolve::HPresolve", ptr %138, i32 0, i32 8
  %1589 = load i32, ptr %39, align 4, !tbaa !77
  %1590 = sext i32 %1589 to i64
  %1591 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNSt6vectorIiSaIiEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %1588, i64 noundef %1590) #9
  %1592 = load i32, ptr %1591, align 4, !tbaa !77
  %1593 = sext i32 %1592 to i64
  %1594 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNSt6vectorIiSaIiEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %1587, i64 noundef %1593) #9
  %1595 = load i32, ptr %1594, align 4, !tbaa !77
  store i32 %1595, ptr %80, align 4, !tbaa !77
  %1596 = invoke noundef nonnull align 4 dereferenceable(4) ptr @_ZN14HighsHashTableIiiEixERKi(ptr noundef nonnull align 8 dereferenceable(40) %16, ptr noundef nonnull align 4 dereferenceable(4) %80)
          to label %1597 unwind label %1604

1597:                                             ; preds = %1586
  %1598 = load i32, ptr %1596, align 4, !tbaa !77
  %1599 = sub nsw i32 %1598, 1
  store i32 %1599, ptr %1596, align 4, !tbaa !77
  call void @llvm.lifetime.end.p0(i64 4, ptr %80) #9
  br label %1608

1600:                                             ; preds = %1577
  %1601 = landingpad { ptr, i32 }
          cleanup
  %1602 = extractvalue { ptr, i32 } %1601, 0
  store ptr %1602, ptr %12, align 8
  %1603 = extractvalue { ptr, i32 } %1601, 1
  store i32 %1603, ptr %13, align 4
  br label %1925

1604:                                             ; preds = %1586
  %1605 = landingpad { ptr, i32 }
          cleanup
  %1606 = extractvalue { ptr, i32 } %1605, 0
  store ptr %1606, ptr %12, align 8
  %1607 = extractvalue { ptr, i32 } %1605, 1
  store i32 %1607, ptr %13, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %80) #9
  br label %1925

1608:                                             ; preds = %1597, %1579
  call void @llvm.lifetime.start.p0(i64 8, ptr %81) #9
  store double 0.000000e+00, ptr %81, align 8, !tbaa !78
  call void @llvm.lifetime.start.p0(i64 8, ptr %82) #9
  store double 0.000000e+00, ptr %82, align 8, !tbaa !78
  %1609 = load double, ptr %40, align 8, !tbaa !78
  %1610 = fcmp ogt double %1609, 0.000000e+00
  br i1 %1610, label %1611, label %1714

1611:                                             ; preds = %1608
  %1612 = getelementptr inbounds %"class.presolve::HPresolve", ptr %138, i32 0, i32 0
  %1613 = load ptr, ptr %1612, align 8, !tbaa !95
  %1614 = getelementptr inbounds %class.HighsLp, ptr %1613, i32 0, i32 3
  %1615 = load i32, ptr %38, align 4, !tbaa !77
  %1616 = sext i32 %1615 to i64
  %1617 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt6vectorIdSaIdEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %1614, i64 noundef %1616) #9
  %1618 = load double, ptr %1617, align 8, !tbaa !78
  %1619 = load double, ptr %40, align 8, !tbaa !78
  %1620 = getelementptr inbounds %"class.presolve::HPresolve", ptr %138, i32 0, i32 0
  %1621 = load ptr, ptr %1620, align 8, !tbaa !95
  %1622 = getelementptr inbounds %class.HighsLp, ptr %1621, i32 0, i32 3
  %1623 = load i32, ptr %39, align 4, !tbaa !77
  %1624 = sext i32 %1623 to i64
  %1625 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt6vectorIdSaIdEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %1622, i64 noundef %1624) #9
  %1626 = load double, ptr %1625, align 8, !tbaa !78
  %1627 = call double @llvm.fmuladd.f64(double %1619, double %1626, double %1618)
  store double %1627, ptr %81, align 8, !tbaa !78
  %1628 = getelementptr inbounds %"class.presolve::HPresolve", ptr %138, i32 0, i32 0
  %1629 = load ptr, ptr %1628, align 8, !tbaa !95
  %1630 = getelementptr inbounds %class.HighsLp, ptr %1629, i32 0, i32 4
  %1631 = load i32, ptr %38, align 4, !tbaa !77
  %1632 = sext i32 %1631 to i64
  %1633 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt6vectorIdSaIdEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %1630, i64 noundef %1632) #9
  %1634 = load double, ptr %1633, align 8, !tbaa !78
  %1635 = load double, ptr %40, align 8, !tbaa !78
  %1636 = getelementptr inbounds %"class.presolve::HPresolve", ptr %138, i32 0, i32 0
  %1637 = load ptr, ptr %1636, align 8, !tbaa !95
  %1638 = getelementptr inbounds %class.HighsLp, ptr %1637, i32 0, i32 4
  %1639 = load i32, ptr %39, align 4, !tbaa !77
  %1640 = sext i32 %1639 to i64
  %1641 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt6vectorIdSaIdEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %1638, i64 noundef %1640) #9
  %1642 = load double, ptr %1641, align 8, !tbaa !78
  %1643 = call double @llvm.fmuladd.f64(double %1635, double %1642, double %1634)
  store double %1643, ptr %82, align 8, !tbaa !78
  %1644 = load double, ptr %82, align 8, !tbaa !78
  %1645 = fcmp oeq double %1644, 0x7FF0000000000000
  br i1 %1645, label %1646, label %1671

1646:                                             ; preds = %1611
  %1647 = getelementptr inbounds %"class.presolve::HPresolve", ptr %138, i32 0, i32 0
  %1648 = load ptr, ptr %1647, align 8, !tbaa !95
  %1649 = getelementptr inbounds %class.HighsLp, ptr %1648, i32 0, i32 4
  %1650 = load i32, ptr %38, align 4, !tbaa !77
  %1651 = sext i32 %1650 to i64
  %1652 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt6vectorIdSaIdEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %1649, i64 noundef %1651) #9
  %1653 = load double, ptr %1652, align 8, !tbaa !78
  %1654 = fcmp une double %1653, 0x7FF0000000000000
  br i1 %1654, label %1655, label %1671

1655:                                             ; preds = %1646
  %1656 = getelementptr inbounds %"class.presolve::HPresolve", ptr %138, i32 0, i32 0
  %1657 = load ptr, ptr %1656, align 8, !tbaa !95
  %1658 = getelementptr inbounds %class.HighsLp, ptr %1657, i32 0, i32 4
  %1659 = load i32, ptr %38, align 4, !tbaa !77
  %1660 = sext i32 %1659 to i64
  %1661 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt6vectorIdSaIdEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %1658, i64 noundef %1660) #9
  %1662 = load double, ptr %1661, align 8, !tbaa !78
  %1663 = load double, ptr %40, align 8, !tbaa !78
  %1664 = fdiv double %1662, %1663
  %1665 = getelementptr inbounds %"class.presolve::HPresolve", ptr %138, i32 0, i32 0
  %1666 = load ptr, ptr %1665, align 8, !tbaa !95
  %1667 = getelementptr inbounds %class.HighsLp, ptr %1666, i32 0, i32 4
  %1668 = load i32, ptr %39, align 4, !tbaa !77
  %1669 = sext i32 %1668 to i64
  %1670 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt6vectorIdSaIdEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %1667, i64 noundef %1669) #9
  store double %1664, ptr %1670, align 8, !tbaa !78
  br label %1678

1671:                                             ; preds = %1646, %1611
  %1672 = getelementptr inbounds %"class.presolve::HPresolve", ptr %138, i32 0, i32 0
  %1673 = load ptr, ptr %1672, align 8, !tbaa !95
  %1674 = getelementptr inbounds %class.HighsLp, ptr %1673, i32 0, i32 4
  %1675 = load i32, ptr %39, align 4, !tbaa !77
  %1676 = sext i32 %1675 to i64
  %1677 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt6vectorIdSaIdEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %1674, i64 noundef %1676) #9
  store double 0.000000e+00, ptr %1677, align 8, !tbaa !78
  br label %1678

1678:                                             ; preds = %1671, %1655
  %1679 = load double, ptr %81, align 8, !tbaa !78
  %1680 = fcmp oeq double %1679, 0xFFF0000000000000
  br i1 %1680, label %1681, label %1706

1681:                                             ; preds = %1678
  %1682 = getelementptr inbounds %"class.presolve::HPresolve", ptr %138, i32 0, i32 0
  %1683 = load ptr, ptr %1682, align 8, !tbaa !95
  %1684 = getelementptr inbounds %class.HighsLp, ptr %1683, i32 0, i32 3
  %1685 = load i32, ptr %38, align 4, !tbaa !77
  %1686 = sext i32 %1685 to i64
  %1687 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt6vectorIdSaIdEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %1684, i64 noundef %1686) #9
  %1688 = load double, ptr %1687, align 8, !tbaa !78
  %1689 = fcmp une double %1688, 0xFFF0000000000000
  br i1 %1689, label %1690, label %1706

1690:                                             ; preds = %1681
  %1691 = getelementptr inbounds %"class.presolve::HPresolve", ptr %138, i32 0, i32 0
  %1692 = load ptr, ptr %1691, align 8, !tbaa !95
  %1693 = getelementptr inbounds %class.HighsLp, ptr %1692, i32 0, i32 3
  %1694 = load i32, ptr %38, align 4, !tbaa !77
  %1695 = sext i32 %1694 to i64
  %1696 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt6vectorIdSaIdEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %1693, i64 noundef %1695) #9
  %1697 = load double, ptr %1696, align 8, !tbaa !78
  %1698 = load double, ptr %40, align 8, !tbaa !78
  %1699 = fdiv double %1697, %1698
  %1700 = getelementptr inbounds %"class.presolve::HPresolve", ptr %138, i32 0, i32 0
  %1701 = load ptr, ptr %1700, align 8, !tbaa !95
  %1702 = getelementptr inbounds %class.HighsLp, ptr %1701, i32 0, i32 3
  %1703 = load i32, ptr %39, align 4, !tbaa !77
  %1704 = sext i32 %1703 to i64
  %1705 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt6vectorIdSaIdEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %1702, i64 noundef %1704) #9
  store double %1699, ptr %1705, align 8, !tbaa !78
  br label %1713

1706:                                             ; preds = %1681, %1678
  %1707 = getelementptr inbounds %"class.presolve::HPresolve", ptr %138, i32 0, i32 0
  %1708 = load ptr, ptr %1707, align 8, !tbaa !95
  %1709 = getelementptr inbounds %class.HighsLp, ptr %1708, i32 0, i32 3
  %1710 = load i32, ptr %39, align 4, !tbaa !77
  %1711 = sext i32 %1710 to i64
  %1712 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt6vectorIdSaIdEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %1709, i64 noundef %1711) #9
  store double 0.000000e+00, ptr %1712, align 8, !tbaa !78
  br label %1713

1713:                                             ; preds = %1706, %1690
  br label %1817

1714:                                             ; preds = %1608
  %1715 = getelementptr inbounds %"class.presolve::HPresolve", ptr %138, i32 0, i32 0
  %1716 = load ptr, ptr %1715, align 8, !tbaa !95
  %1717 = getelementptr inbounds %class.HighsLp, ptr %1716, i32 0, i32 3
  %1718 = load i32, ptr %38, align 4, !tbaa !77
  %1719 = sext i32 %1718 to i64
  %1720 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt6vectorIdSaIdEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %1717, i64 noundef %1719) #9
  %1721 = load double, ptr %1720, align 8, !tbaa !78
  %1722 = load double, ptr %40, align 8, !tbaa !78
  %1723 = getelementptr inbounds %"class.presolve::HPresolve", ptr %138, i32 0, i32 0
  %1724 = load ptr, ptr %1723, align 8, !tbaa !95
  %1725 = getelementptr inbounds %class.HighsLp, ptr %1724, i32 0, i32 4
  %1726 = load i32, ptr %39, align 4, !tbaa !77
  %1727 = sext i32 %1726 to i64
  %1728 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt6vectorIdSaIdEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %1725, i64 noundef %1727) #9
  %1729 = load double, ptr %1728, align 8, !tbaa !78
  %1730 = call double @llvm.fmuladd.f64(double %1722, double %1729, double %1721)
  store double %1730, ptr %81, align 8, !tbaa !78
  %1731 = getelementptr inbounds %"class.presolve::HPresolve", ptr %138, i32 0, i32 0
  %1732 = load ptr, ptr %1731, align 8, !tbaa !95
  %1733 = getelementptr inbounds %class.HighsLp, ptr %1732, i32 0, i32 4
  %1734 = load i32, ptr %38, align 4, !tbaa !77
  %1735 = sext i32 %1734 to i64
  %1736 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt6vectorIdSaIdEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %1733, i64 noundef %1735) #9
  %1737 = load double, ptr %1736, align 8, !tbaa !78
  %1738 = load double, ptr %40, align 8, !tbaa !78
  %1739 = getelementptr inbounds %"class.presolve::HPresolve", ptr %138, i32 0, i32 0
  %1740 = load ptr, ptr %1739, align 8, !tbaa !95
  %1741 = getelementptr inbounds %class.HighsLp, ptr %1740, i32 0, i32 3
  %1742 = load i32, ptr %39, align 4, !tbaa !77
  %1743 = sext i32 %1742 to i64
  %1744 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt6vectorIdSaIdEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %1741, i64 noundef %1743) #9
  %1745 = load double, ptr %1744, align 8, !tbaa !78
  %1746 = call double @llvm.fmuladd.f64(double %1738, double %1745, double %1737)
  store double %1746, ptr %82, align 8, !tbaa !78
  %1747 = load double, ptr %82, align 8, !tbaa !78
  %1748 = fcmp oeq double %1747, 0x7FF0000000000000
  br i1 %1748, label %1749, label %1774

1749:                                             ; preds = %1714
  %1750 = getelementptr inbounds %"class.presolve::HPresolve", ptr %138, i32 0, i32 0
  %1751 = load ptr, ptr %1750, align 8, !tbaa !95
  %1752 = getelementptr inbounds %class.HighsLp, ptr %1751, i32 0, i32 4
  %1753 = load i32, ptr %38, align 4, !tbaa !77
  %1754 = sext i32 %1753 to i64
  %1755 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt6vectorIdSaIdEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %1752, i64 noundef %1754) #9
  %1756 = load double, ptr %1755, align 8, !tbaa !78
  %1757 = fcmp une double %1756, 0x7FF0000000000000
  br i1 %1757, label %1758, label %1774

1758:                                             ; preds = %1749
  %1759 = getelementptr inbounds %"class.presolve::HPresolve", ptr %138, i32 0, i32 0
  %1760 = load ptr, ptr %1759, align 8, !tbaa !95
  %1761 = getelementptr inbounds %class.HighsLp, ptr %1760, i32 0, i32 4
  %1762 = load i32, ptr %38, align 4, !tbaa !77
  %1763 = sext i32 %1762 to i64
  %1764 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt6vectorIdSaIdEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %1761, i64 noundef %1763) #9
  %1765 = load double, ptr %1764, align 8, !tbaa !78
  %1766 = load double, ptr %40, align 8, !tbaa !78
  %1767 = fdiv double %1765, %1766
  %1768 = getelementptr inbounds %"class.presolve::HPresolve", ptr %138, i32 0, i32 0
  %1769 = load ptr, ptr %1768, align 8, !tbaa !95
  %1770 = getelementptr inbounds %class.HighsLp, ptr %1769, i32 0, i32 3
  %1771 = load i32, ptr %39, align 4, !tbaa !77
  %1772 = sext i32 %1771 to i64
  %1773 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt6vectorIdSaIdEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %1770, i64 noundef %1772) #9
  store double %1767, ptr %1773, align 8, !tbaa !78
  br label %1781

1774:                                             ; preds = %1749, %1714
  %1775 = getelementptr inbounds %"class.presolve::HPresolve", ptr %138, i32 0, i32 0
  %1776 = load ptr, ptr %1775, align 8, !tbaa !95
  %1777 = getelementptr inbounds %class.HighsLp, ptr %1776, i32 0, i32 3
  %1778 = load i32, ptr %39, align 4, !tbaa !77
  %1779 = sext i32 %1778 to i64
  %1780 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt6vectorIdSaIdEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %1777, i64 noundef %1779) #9
  store double 0.000000e+00, ptr %1780, align 8, !tbaa !78
  br label %1781

1781:                                             ; preds = %1774, %1758
  %1782 = load double, ptr %81, align 8, !tbaa !78
  %1783 = fcmp oeq double %1782, 0xFFF0000000000000
  br i1 %1783, label %1784, label %1809

1784:                                             ; preds = %1781
  %1785 = getelementptr inbounds %"class.presolve::HPresolve", ptr %138, i32 0, i32 0
  %1786 = load ptr, ptr %1785, align 8, !tbaa !95
  %1787 = getelementptr inbounds %class.HighsLp, ptr %1786, i32 0, i32 3
  %1788 = load i32, ptr %38, align 4, !tbaa !77
  %1789 = sext i32 %1788 to i64
  %1790 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt6vectorIdSaIdEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %1787, i64 noundef %1789) #9
  %1791 = load double, ptr %1790, align 8, !tbaa !78
  %1792 = fcmp une double %1791, 0xFFF0000000000000
  br i1 %1792, label %1793, label %1809

1793:                                             ; preds = %1784
  %1794 = getelementptr inbounds %"class.presolve::HPresolve", ptr %138, i32 0, i32 0
  %1795 = load ptr, ptr %1794, align 8, !tbaa !95
  %1796 = getelementptr inbounds %class.HighsLp, ptr %1795, i32 0, i32 3
  %1797 = load i32, ptr %38, align 4, !tbaa !77
  %1798 = sext i32 %1797 to i64
  %1799 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt6vectorIdSaIdEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %1796, i64 noundef %1798) #9
  %1800 = load double, ptr %1799, align 8, !tbaa !78
  %1801 = load double, ptr %40, align 8, !tbaa !78
  %1802 = fdiv double %1800, %1801
  %1803 = getelementptr inbounds %"class.presolve::HPresolve", ptr %138, i32 0, i32 0
  %1804 = load ptr, ptr %1803, align 8, !tbaa !95
  %1805 = getelementptr inbounds %class.HighsLp, ptr %1804, i32 0, i32 4
  %1806 = load i32, ptr %39, align 4, !tbaa !77
  %1807 = sext i32 %1806 to i64
  %1808 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt6vectorIdSaIdEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %1805, i64 noundef %1807) #9
  store double %1802, ptr %1808, align 8, !tbaa !78
  br label %1816

1809:                                             ; preds = %1784, %1781
  %1810 = getelementptr inbounds %"class.presolve::HPresolve", ptr %138, i32 0, i32 0
  %1811 = load ptr, ptr %1810, align 8, !tbaa !95
  %1812 = getelementptr inbounds %class.HighsLp, ptr %1811, i32 0, i32 4
  %1813 = load i32, ptr %39, align 4, !tbaa !77
  %1814 = sext i32 %1813 to i64
  %1815 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt6vectorIdSaIdEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %1812, i64 noundef %1814) #9
  store double 0.000000e+00, ptr %1815, align 8, !tbaa !78
  br label %1816

1816:                                             ; preds = %1809, %1793
  br label %1817

1817:                                             ; preds = %1816, %1713
  %1818 = load double, ptr %81, align 8, !tbaa !78
  %1819 = getelementptr inbounds %"class.presolve::HPresolve", ptr %138, i32 0, i32 0
  %1820 = load ptr, ptr %1819, align 8, !tbaa !95
  %1821 = getelementptr inbounds %class.HighsLp, ptr %1820, i32 0, i32 3
  %1822 = load i32, ptr %38, align 4, !tbaa !77
  %1823 = sext i32 %1822 to i64
  %1824 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt6vectorIdSaIdEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %1821, i64 noundef %1823) #9
  store double %1818, ptr %1824, align 8, !tbaa !78
  %1825 = load double, ptr %82, align 8, !tbaa !78
  %1826 = getelementptr inbounds %"class.presolve::HPresolve", ptr %138, i32 0, i32 0
  %1827 = load ptr, ptr %1826, align 8, !tbaa !95
  %1828 = getelementptr inbounds %class.HighsLp, ptr %1827, i32 0, i32 4
  %1829 = load i32, ptr %38, align 4, !tbaa !77
  %1830 = sext i32 %1829 to i64
  %1831 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt6vectorIdSaIdEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %1828, i64 noundef %1830) #9
  store double %1825, ptr %1831, align 8, !tbaa !78
  %1832 = load i32, ptr %39, align 4, !tbaa !77
  call void @_ZN8presolve9HPresolve14markColDeletedEi(ptr noundef nonnull align 8 dereferenceable(1720) %138, i32 noundef %1832)
  call void @llvm.lifetime.start.p0(i64 4, ptr %83) #9
  %1833 = getelementptr inbounds %"class.presolve::HPresolve", ptr %138, i32 0, i32 8
  %1834 = load i32, ptr %39, align 4, !tbaa !77
  %1835 = sext i32 %1834 to i64
  %1836 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNSt6vectorIiSaIiEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %1833, i64 noundef %1835) #9
  %1837 = load i32, ptr %1836, align 4, !tbaa !77
  store i32 %1837, ptr %83, align 4, !tbaa !77
  br label %1838

1838:                                             ; preds = %1885, %1817
  %1839 = load i32, ptr %83, align 4, !tbaa !77
  %1840 = icmp ne i32 %1839, -1
  br i1 %1840, label %1842, label %1841

1841:                                             ; preds = %1838
  store i32 18, ptr %30, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %83) #9
  br label %1890

1842:                                             ; preds = %1838
  %1843 = getelementptr inbounds %"class.presolve::HPresolve", ptr %138, i32 0, i32 7
  %1844 = load i32, ptr %83, align 4, !tbaa !77
  %1845 = sext i32 %1844 to i64
  %1846 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNSt6vectorIiSaIiEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %1843, i64 noundef %1845) #9
  %1847 = load i32, ptr %1846, align 4, !tbaa !77
  %1848 = load i32, ptr %39, align 4, !tbaa !77
  %1849 = icmp eq i32 %1847, %1848
  br i1 %1849, label %1850, label %1851

1850:                                             ; preds = %1842
  br label %1853

1851:                                             ; preds = %1842
  call void @__assert_fail(ptr noundef @.str.161, ptr noundef @.str.55, i32 noundef 6117, ptr noundef @__PRETTY_FUNCTION__._ZN8presolve9HPresolve25detectParallelRowsAndColsERNS_19HighsPostsolveStackE) #10
  unreachable

1852:                                             ; No predecessors!
  br label %1853

1853:                                             ; preds = %1852, %1850
  call void @llvm.lifetime.start.p0(i64 4, ptr %84) #9
  %1854 = load i32, ptr %83, align 4, !tbaa !77
  store i32 %1854, ptr %84, align 4, !tbaa !77
  call void @llvm.lifetime.start.p0(i64 4, ptr %85) #9
  %1855 = getelementptr inbounds %"class.presolve::HPresolve", ptr %138, i32 0, i32 6
  %1856 = load i32, ptr %83, align 4, !tbaa !77
  %1857 = sext i32 %1856 to i64
  %1858 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNSt6vectorIiSaIiEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %1855, i64 noundef %1857) #9
  %1859 = load i32, ptr %1858, align 4, !tbaa !77
  store i32 %1859, ptr %85, align 4, !tbaa !77
  %1860 = load i32, ptr %79, align 4, !tbaa !77
  %1861 = icmp ne i32 %1860, 0
  br i1 %1861, label %1862, label %1876

1862:                                             ; preds = %1853
  %1863 = load i32, ptr %79, align 4, !tbaa !77
  %1864 = icmp eq i32 %1863, 1
  br i1 %1864, label %1865, label %1866

1865:                                             ; preds = %1862
  br label %1868

1866:                                             ; preds = %1862
  call void @__assert_fail(ptr noundef @.str.162, ptr noundef @.str.55, i32 noundef 6124, ptr noundef @__PRETTY_FUNCTION__._ZN8presolve9HPresolve25detectParallelRowsAndColsERNS_19HighsPostsolveStackE) #10
  unreachable

1867:                                             ; No predecessors!
  br label %1868

1868:                                             ; preds = %1867, %1865
  %1869 = load i32, ptr %79, align 4, !tbaa !77
  %1870 = getelementptr inbounds %"class.presolve::HPresolve", ptr %138, i32 0, i32 15
  %1871 = load i32, ptr %85, align 4, !tbaa !77
  %1872 = sext i32 %1871 to i64
  %1873 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNSt6vectorIiSaIiEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %1870, i64 noundef %1872) #9
  %1874 = load i32, ptr %1873, align 4, !tbaa !77
  %1875 = sub nsw i32 %1874, %1869
  store i32 %1875, ptr %1873, align 4, !tbaa !77
  br label %1876

1876:                                             ; preds = %1868, %1853
  %1877 = getelementptr inbounds %"class.presolve::HPresolve", ptr %138, i32 0, i32 9
  %1878 = load i32, ptr %83, align 4, !tbaa !77
  %1879 = sext i32 %1878 to i64
  %1880 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNSt6vectorIiSaIiEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %1877, i64 noundef %1879) #9
  %1881 = load i32, ptr %1880, align 4, !tbaa !77
  store i32 %1881, ptr %83, align 4, !tbaa !77
  %1882 = load i32, ptr %84, align 4, !tbaa !77
  invoke void @_ZN8presolve9HPresolve6unlinkEi(ptr noundef nonnull align 8 dereferenceable(1720) %138, i32 noundef %1882)
          to label %1883 unwind label %1886

1883:                                             ; preds = %1876
  %1884 = load i32, ptr %85, align 4, !tbaa !77
  invoke void @_ZN8presolve9HPresolve16reinsertEquationEi(ptr noundef nonnull align 8 dereferenceable(1720) %138, i32 noundef %1884)
          to label %1885 unwind label %1886

1885:                                             ; preds = %1883
  call void @llvm.lifetime.end.p0(i64 4, ptr %85) #9
  call void @llvm.lifetime.end.p0(i64 4, ptr %84) #9
  br label %1838, !llvm.loop !138

1886:                                             ; preds = %1883, %1876
  %1887 = landingpad { ptr, i32 }
          cleanup
  %1888 = extractvalue { ptr, i32 } %1887, 0
  store ptr %1888, ptr %12, align 8
  %1889 = extractvalue { ptr, i32 } %1887, 1
  store i32 %1889, ptr %13, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %85) #9
  call void @llvm.lifetime.end.p0(i64 4, ptr %84) #9
  call void @llvm.lifetime.end.p0(i64 4, ptr %83) #9
  br label %1924

1890:                                             ; preds = %1841
  %1891 = getelementptr inbounds %"class.presolve::HPresolve", ptr %138, i32 0, i32 0
  %1892 = load ptr, ptr %1891, align 8, !tbaa !95
  %1893 = getelementptr inbounds %class.HighsLp, ptr %1892, i32 0, i32 2
  %1894 = load i32, ptr %39, align 4, !tbaa !77
  %1895 = sext i32 %1894 to i64
  %1896 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt6vectorIdSaIdEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %1893, i64 noundef %1895) #9
  store double 0.000000e+00, ptr %1896, align 8, !tbaa !78
  %1897 = load i32, ptr %39, align 4, !tbaa !77
  store i32 %1897, ptr %34, align 4, !tbaa !77
  %1898 = load i32, ptr %38, align 4, !tbaa !77
  invoke void @_ZN8presolve9HPresolve21resetColImpliedBoundsEii(ptr noundef nonnull align 8 dereferenceable(1720) %138, i32 noundef %1898, i32 noundef -1)
          to label %1899 unwind label %1919

1899:                                             ; preds = %1890
  %1900 = load i32, ptr %79, align 4, !tbaa !77
  %1901 = icmp ne i32 %1900, 0
  br i1 %1901, label %1902, label %1923

1902:                                             ; preds = %1899
  %1903 = getelementptr inbounds %"class.presolve::HPresolve", ptr %138, i32 0, i32 0
  %1904 = load ptr, ptr %1903, align 8, !tbaa !95
  %1905 = getelementptr inbounds %class.HighsLp, ptr %1904, i32 0, i32 16
  %1906 = load i32, ptr %39, align 4, !tbaa !77
  %1907 = sext i32 %1906 to i64
  %1908 = call noundef nonnull align 1 dereferenceable(1) ptr @_ZNSt6vectorI12HighsVarTypeSaIS0_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %1905, i64 noundef %1907) #9
  %1909 = load i8, ptr %1908, align 1, !tbaa !132
  %1910 = icmp eq i8 %1909, 4
  br i1 %1910, label %1911, label %1923

1911:                                             ; preds = %1902
  %1912 = load i32, ptr %38, align 4, !tbaa !77
  %1913 = invoke noundef zeroext i1 @_ZN8presolve9HPresolve16isImpliedIntegerEi(ptr noundef nonnull align 8 dereferenceable(1720) %138, i32 noundef %1912)
          to label %1914 unwind label %1919

1914:                                             ; preds = %1911
  br i1 %1913, label %1915, label %1923

1915:                                             ; preds = %1914
  %1916 = load i32, ptr %38, align 4, !tbaa !77
  %1917 = invoke noundef zeroext i1 @_ZN8presolve9HPresolve21convertImpliedIntegerEiib(ptr noundef nonnull align 8 dereferenceable(1720) %138, i32 noundef %1916, i32 noundef -1, i1 noundef zeroext true)
          to label %1918 unwind label %1919

1918:                                             ; preds = %1915
  br label %1923

1919:                                             ; preds = %1915, %1911, %1890
  %1920 = landingpad { ptr, i32 }
          cleanup
  %1921 = extractvalue { ptr, i32 } %1920, 0
  store ptr %1921, ptr %12, align 8
  %1922 = extractvalue { ptr, i32 } %1920, 1
  store i32 %1922, ptr %13, align 4
  br label %1924

1923:                                             ; preds = %1918, %1914, %1902, %1899
  store i32 17, ptr %30, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %82) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr %81) #9
  call void @llvm.lifetime.end.p0(i64 4, ptr %79) #9
  br label %1926

1924:                                             ; preds = %1919, %1886
  call void @llvm.lifetime.end.p0(i64 8, ptr %82) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr %81) #9
  br label %1925

1925:                                             ; preds = %1924, %1604, %1600
  call void @llvm.lifetime.end.p0(i64 4, ptr %79) #9
  br label %1927

1926:                                             ; preds = %1923, %1547
  call void @llvm.lifetime.end.p0(i64 1, ptr %78) #9
  br label %1928

1927:                                             ; preds = %1925, %1548
  call void @llvm.lifetime.end.p0(i64 1, ptr %78) #9
  br label %1930

1928:                                             ; preds = %1926, %1485, %1451, %1417, %1383, %1344
  store i32 14, ptr %30, align 4
  br label %1929

1929:                                             ; preds = %1928, %1483, %1449, %1415, %1377, %1343
  call void @llvm.lifetime.end.p0(i64 1, ptr %64) #9
  br label %1931

1930:                                             ; preds = %1927, %1474, %1440, %1406, %1379, %1368, %1339
  call void @llvm.lifetime.end.p0(i64 1, ptr %64) #9
  br label %1932

1931:                                             ; preds = %1929, %1235, %984, %929
  call void @llvm.lifetime.end.p0(i64 4, ptr %59) #9
  call void @llvm.lifetime.end.p0(i64 4, ptr %58) #9
  call void @llvm.lifetime.end.p0(i64 4, ptr %57) #9
  call void @llvm.lifetime.end.p0(i64 4, ptr %56) #9
  call void @llvm.lifetime.end.p0(i64 4, ptr %55) #9
  call void @llvm.lifetime.end.p0(i64 4, ptr %54) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr %50) #9
  br label %1934

1932:                                             ; preds = %1930, %1175, %893
  call void @llvm.lifetime.end.p0(i64 4, ptr %59) #9
  call void @llvm.lifetime.end.p0(i64 4, ptr %58) #9
  call void @llvm.lifetime.end.p0(i64 4, ptr %57) #9
  call void @llvm.lifetime.end.p0(i64 4, ptr %56) #9
  call void @llvm.lifetime.end.p0(i64 4, ptr %55) #9
  call void @llvm.lifetime.end.p0(i64 4, ptr %54) #9
  br label %1933

1933:                                             ; preds = %1932, %889
  call void @llvm.lifetime.end.p0(i64 8, ptr %50) #9
  br label %1936

1934:                                             ; preds = %1931, %788
  call void @llvm.lifetime.end.p0(i64 32, ptr %48) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr %47) #9
  call void @llvm.lifetime.end.p0(i64 48, ptr %46) #9
  call void @llvm.lifetime.end.p0(i64 48, ptr %45) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr %44) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr %43) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr %42) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr %41) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr %40) #9
  call void @llvm.lifetime.end.p0(i64 4, ptr %39) #9
  call void @llvm.lifetime.end.p0(i64 4, ptr %38) #9
  %1935 = load i32, ptr %30, align 4
  switch i32 %1935, label %2005 [
    i32 13, label %645
    i32 14, label %1937
  ]

1936:                                             ; preds = %1933, %771, %743
  call void @llvm.lifetime.end.p0(i64 32, ptr %48) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr %47) #9
  call void @llvm.lifetime.end.p0(i64 48, ptr %46) #9
  call void @llvm.lifetime.end.p0(i64 48, ptr %45) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr %44) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr %43) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr %42) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr %41) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr %40) #9
  call void @llvm.lifetime.end.p0(i64 4, ptr %39) #9
  call void @llvm.lifetime.end.p0(i64 4, ptr %38) #9
  br label %2011

1937:                                             ; preds = %1934, %659
  %1938 = load i32, ptr %34, align 4, !tbaa !77
  %1939 = icmp ne i32 %1938, -1
  br i1 %1939, label %1940, label %1993

1940:                                             ; preds = %1937
  %1941 = load i32, ptr %34, align 4, !tbaa !77
  %1942 = load i32, ptr %29, align 4, !tbaa !77
  %1943 = icmp ne i32 %1941, %1942
  br i1 %1943, label %1944, label %1956

1944:                                             ; preds = %1940
  call void @llvm.memcpy.p0.p0.i64(ptr align 8 %86, ptr align 8 %33, i64 8, i1 false)
  %1945 = getelementptr inbounds %"struct.std::__detail::_Node_iterator.521", ptr %86, i32 0, i32 0
  %1946 = getelementptr inbounds %"struct.std::__detail::_Node_iterator_base.522", ptr %1945, i32 0, i32 0
  %1947 = load ptr, ptr %1946, align 8
  %1948 = invoke ptr @_ZNSt18unordered_multimapImiSt4hashImESt8equal_toImESaISt4pairIKmiEEE5eraseENSt8__detail14_Node_iteratorIS6_Lb0ELb0EEE(ptr noundef nonnull align 8 dereferenceable(56) %27, ptr %1947)
          to label %1949 unwind label %1952

1949:                                             ; preds = %1944
  %1950 = getelementptr inbounds %"struct.std::__detail::_Node_iterator.521", ptr %87, i32 0, i32 0
  %1951 = getelementptr inbounds %"struct.std::__detail::_Node_iterator_base.522", ptr %1950, i32 0, i32 0
  store ptr %1948, ptr %1951, align 8
  br label %1956

1952:                                             ; preds = %1993, %1944
  %1953 = landingpad { ptr, i32 }
          cleanup
  %1954 = extractvalue { ptr, i32 } %1953, 0
  store ptr %1954, ptr %12, align 8
  %1955 = extractvalue { ptr, i32 } %1953, 1
  store i32 %1955, ptr %13, align 4
  br label %2011

1956:                                             ; preds = %1949, %1940
  br label %1957

1957:                                             ; preds = %1956
  call void @llvm.lifetime.start.p0(i64 4, ptr %88) #9
  %1958 = load ptr, ptr %5, align 8, !tbaa !5
  %1959 = invoke noundef i32 @_ZN8presolve9HPresolve11checkLimitsERNS_19HighsPostsolveStackE(ptr noundef nonnull align 8 dereferenceable(1720) %138, ptr noundef nonnull align 8 dereferenceable(224) %1958)
          to label %1960 unwind label %1965

1960:                                             ; preds = %1957
  store i32 %1959, ptr %88, align 4, !tbaa !114
  %1961 = load i32, ptr %88, align 4, !tbaa !114
  %1962 = icmp ne i32 %1961, 0
  br i1 %1962, label %1963, label %1969

1963:                                             ; preds = %1960
  %1964 = load i32, ptr %88, align 4, !tbaa !114
  store i32 %1964, ptr %3, align 4
  store i32 1, ptr %30, align 4
  br label %1970

1965:                                             ; preds = %1957
  %1966 = landingpad { ptr, i32 }
          cleanup
  %1967 = extractvalue { ptr, i32 } %1966, 0
  store ptr %1967, ptr %12, align 8
  %1968 = extractvalue { ptr, i32 } %1966, 1
  store i32 %1968, ptr %13, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %88) #9
  br label %2011

1969:                                             ; preds = %1960
  store i32 0, ptr %30, align 4
  br label %1970

1970:                                             ; preds = %1969, %1963
  call void @llvm.lifetime.end.p0(i64 4, ptr %88) #9
  %1971 = load i32, ptr %30, align 4
  switch i32 %1971, label %2005 [
    i32 0, label %1972
  ]

1972:                                             ; preds = %1970
  br label %1973

1973:                                             ; preds = %1972
  br label %1974

1974:                                             ; preds = %1973
  br label %1975

1975:                                             ; preds = %1974
  call void @llvm.lifetime.start.p0(i64 4, ptr %89) #9
  %1976 = load ptr, ptr %5, align 8, !tbaa !5
  %1977 = invoke noundef i32 @_ZN8presolve9HPresolve19removeRowSingletonsERNS_19HighsPostsolveStackE(ptr noundef nonnull align 8 dereferenceable(1720) %138, ptr noundef nonnull align 8 dereferenceable(224) %1976)
          to label %1978 unwind label %1983

1978:                                             ; preds = %1975
  store i32 %1977, ptr %89, align 4, !tbaa !114
  %1979 = load i32, ptr %89, align 4, !tbaa !114
  %1980 = icmp ne i32 %1979, 0
  br i1 %1980, label %1981, label %1987

1981:                                             ; preds = %1978
  %1982 = load i32, ptr %89, align 4, !tbaa !114
  store i32 %1982, ptr %3, align 4
  store i32 1, ptr %30, align 4
  br label %1988

1983:                                             ; preds = %1975
  %1984 = landingpad { ptr, i32 }
          cleanup
  %1985 = extractvalue { ptr, i32 } %1984, 0
  store ptr %1985, ptr %12, align 8
  %1986 = extractvalue { ptr, i32 } %1984, 1
  store i32 %1986, ptr %13, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %89) #9
  br label %2011

1987:                                             ; preds = %1978
  store i32 0, ptr %30, align 4
  br label %1988

1988:                                             ; preds = %1987, %1981
  call void @llvm.lifetime.end.p0(i64 4, ptr %89) #9
  %1989 = load i32, ptr %30, align 4
  switch i32 %1989, label %2005 [
    i32 0, label %1990
  ]

1990:                                             ; preds = %1988
  br label %1991

1991:                                             ; preds = %1990
  br label %1992

1992:                                             ; preds = %1991
  br label %2004

1993:                                             ; preds = %1937
  call void @_ZNSt8__detail20_Node_const_iteratorISt4pairIKmiELb0ELb0EEC2ERKNS_14_Node_iteratorIS3_Lb0ELb0EEE(ptr noundef nonnull align 8 dereferenceable(8) %90, ptr noundef nonnull align 8 dereferenceable(8) %33) #9
  %1994 = load i32, ptr %29, align 4, !tbaa !77
  %1995 = sext i32 %1994 to i64
  %1996 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt6vectorImSaImEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %9, i64 noundef %1995) #9
  %1997 = getelementptr inbounds %"struct.std::__detail::_Node_const_iterator", ptr %90, i32 0, i32 0
  %1998 = getelementptr inbounds %"struct.std::__detail::_Node_iterator_base.522", ptr %1997, i32 0, i32 0
  %1999 = load ptr, ptr %1998, align 8
  %2000 = invoke ptr @_ZNSt18unordered_multimapImiSt4hashImESt8equal_toImESaISt4pairIKmiEEE12emplace_hintIJRmRiEEENSt8__detail14_Node_iteratorIS6_Lb0ELb0EEENSC_20_Node_const_iteratorIS6_Lb0ELb0EEEDpOT_(ptr noundef nonnull align 8 dereferenceable(56) %27, ptr %1999, ptr noundef nonnull align 8 dereferenceable(8) %1996, ptr noundef nonnull align 4 dereferenceable(4) %29)
          to label %2001 unwind label %1952

2001:                                             ; preds = %1993
  %2002 = getelementptr inbounds %"struct.std::__detail::_Node_iterator.521", ptr %91, i32 0, i32 0
  %2003 = getelementptr inbounds %"struct.std::__detail::_Node_iterator_base.522", ptr %2002, i32 0, i32 0
  store ptr %2000, ptr %2003, align 8
  br label %2004

2004:                                             ; preds = %2001, %1992
  store i32 0, ptr %30, align 4
  br label %2005

2005:                                             ; preds = %2004, %1988, %1970, %1934
  call void @llvm.lifetime.end.p0(i64 4, ptr %35) #9
  call void @llvm.lifetime.end.p0(i64 4, ptr %34) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr %33) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr %32) #9
  %2006 = load i32, ptr %30, align 4
  switch i32 %2006, label %2013 [
    i32 0, label %2007
  ]

2007:                                             ; preds = %2005
  br label %2008

2008:                                             ; preds = %2007, %636, %609
  %2009 = load i32, ptr %29, align 4, !tbaa !77
  %2010 = add nsw i32 %2009, 1
  store i32 %2010, ptr %29, align 4, !tbaa !77
  br label %594, !llvm.loop !139

2011:                                             ; preds = %1983, %1965, %1952, %1936
  call void @llvm.lifetime.end.p0(i64 4, ptr %35) #9
  call void @llvm.lifetime.end.p0(i64 4, ptr %34) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr %33) #9
  br label %2012

2012:                                             ; preds = %2011, %680
  call void @llvm.lifetime.end.p0(i64 8, ptr %32) #9
  br label %2015

2013:                                             ; preds = %2005, %632, %601
  call void @llvm.lifetime.end.p0(i64 4, ptr %29) #9
  %2014 = load i32, ptr %30, align 4
  switch i32 %2014, label %2951 [
    i32 8, label %2016
  ]

2015:                                             ; preds = %2012, %627
  call void @llvm.lifetime.end.p0(i64 4, ptr %29) #9
  br label %2953

2016:                                             ; preds = %2013
  call void @_ZNSt18unordered_multimapImiSt4hashImESt8equal_toImESaISt4pairIKmiEEE5clearEv(ptr noundef nonnull align 8 dereferenceable(56) %27) #9
  call void @llvm.lifetime.start.p0(i64 4, ptr %92) #9
  store i32 0, ptr %92, align 4, !tbaa !77
  br label %2017

2017:                                             ; preds = %2926, %2016
  %2018 = load i32, ptr %92, align 4, !tbaa !77
  %2019 = getelementptr inbounds %"class.presolve::HPresolve", ptr %138, i32 0, i32 0
  %2020 = load ptr, ptr %2019, align 8, !tbaa !95
  %2021 = getelementptr inbounds %class.HighsLp, ptr %2020, i32 0, i32 1
  %2022 = load i32, ptr %2021, align 4, !tbaa !140
  %2023 = icmp ne i32 %2018, %2022
  br i1 %2023, label %2025, label %2024

2024:                                             ; preds = %2017
  store i32 24, ptr %30, align 4
  br label %2932

2025:                                             ; preds = %2017
  %2026 = getelementptr inbounds %"class.presolve::HPresolve", ptr %138, i32 0, i32 46
  %2027 = load i32, ptr %92, align 4, !tbaa !77
  %2028 = sext i32 %2027 to i64
  %2029 = call noundef nonnull align 1 dereferenceable(1) ptr @_ZNSt6vectorIhSaIhEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %2026, i64 noundef %2028) #9
  %2030 = load i8, ptr %2029, align 1, !tbaa !79
  %2031 = icmp ne i8 %2030, 0
  br i1 %2031, label %2032, label %2033

2032:                                             ; preds = %2025
  br label %2926

2033:                                             ; preds = %2025
  %2034 = getelementptr inbounds %"class.presolve::HPresolve", ptr %138, i32 0, i32 14
  %2035 = load i32, ptr %92, align 4, !tbaa !77
  %2036 = sext i32 %2035 to i64
  %2037 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNSt6vectorIiSaIiEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %2034, i64 noundef %2036) #9
  %2038 = load i32, ptr %2037, align 4, !tbaa !77
  %2039 = icmp sle i32 %2038, 1
  br i1 %2039, label %2063, label %2040

2040:                                             ; preds = %2033
  %2041 = getelementptr inbounds %"class.presolve::HPresolve", ptr %138, i32 0, i32 14
  %2042 = load i32, ptr %92, align 4, !tbaa !77
  %2043 = sext i32 %2042 to i64
  %2044 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNSt6vectorIiSaIiEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %2041, i64 noundef %2043) #9
  %2045 = load i32, ptr %2044, align 4, !tbaa !77
  %2046 = icmp eq i32 %2045, 2
  br i1 %2046, label %2047, label %2083

2047:                                             ; preds = %2040
  %2048 = getelementptr inbounds %"class.presolve::HPresolve", ptr %138, i32 0, i32 0
  %2049 = load ptr, ptr %2048, align 8, !tbaa !95
  %2050 = getelementptr inbounds %class.HighsLp, ptr %2049, i32 0, i32 5
  %2051 = load i32, ptr %92, align 4, !tbaa !77
  %2052 = sext i32 %2051 to i64
  %2053 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt6vectorIdSaIdEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %2050, i64 noundef %2052) #9
  %2054 = load double, ptr %2053, align 8, !tbaa !78
  %2055 = getelementptr inbounds %"class.presolve::HPresolve", ptr %138, i32 0, i32 0
  %2056 = load ptr, ptr %2055, align 8, !tbaa !95
  %2057 = getelementptr inbounds %class.HighsLp, ptr %2056, i32 0, i32 6
  %2058 = load i32, ptr %92, align 4, !tbaa !77
  %2059 = sext i32 %2058 to i64
  %2060 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt6vectorIdSaIdEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %2057, i64 noundef %2059) #9
  %2061 = load double, ptr %2060, align 8, !tbaa !78
  %2062 = fcmp oeq double %2054, %2061
  br i1 %2062, label %2063, label %2083

2063:                                             ; preds = %2047, %2033
  br label %2064

2064:                                             ; preds = %2063
  call void @llvm.lifetime.start.p0(i64 4, ptr %93) #9
  %2065 = load ptr, ptr %5, align 8, !tbaa !5
  %2066 = load i32, ptr %92, align 4, !tbaa !77
  %2067 = invoke noundef i32 @_ZN8presolve9HPresolve11rowPresolveERNS_19HighsPostsolveStackEi(ptr noundef nonnull align 8 dereferenceable(1720) %138, ptr noundef nonnull align 8 dereferenceable(224) %2065, i32 noundef %2066)
          to label %2068 unwind label %2073

2068:                                             ; preds = %2064
  store i32 %2067, ptr %93, align 4, !tbaa !114
  %2069 = load i32, ptr %93, align 4, !tbaa !114
  %2070 = icmp ne i32 %2069, 0
  br i1 %2070, label %2071, label %2077

2071:                                             ; preds = %2068
  %2072 = load i32, ptr %93, align 4, !tbaa !114
  store i32 %2072, ptr %3, align 4
  store i32 1, ptr %30, align 4
  br label %2078

2073:                                             ; preds = %2064
  %2074 = landingpad { ptr, i32 }
          cleanup
  %2075 = extractvalue { ptr, i32 } %2074, 0
  store ptr %2075, ptr %12, align 8
  %2076 = extractvalue { ptr, i32 } %2074, 1
  store i32 %2076, ptr %13, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %93) #9
  br label %2934

2077:                                             ; preds = %2068
  store i32 0, ptr %30, align 4
  br label %2078

2078:                                             ; preds = %2077, %2071
  call void @llvm.lifetime.end.p0(i64 4, ptr %93) #9
  %2079 = load i32, ptr %30, align 4
  switch i32 %2079, label %2932 [
    i32 0, label %2080
  ]

2080:                                             ; preds = %2078
  br label %2081

2081:                                             ; preds = %2080
  br label %2082

2082:                                             ; preds = %2081
  br label %2926

2083:                                             ; preds = %2047, %2040
  call void @llvm.lifetime.start.p0(i64 8, ptr %94) #9
  %2084 = load i32, ptr %92, align 4, !tbaa !77
  %2085 = sext i32 %2084 to i64
  %2086 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt6vectorImSaImEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %8, i64 noundef %2085) #9
  %2087 = invoke ptr @_ZNSt18unordered_multimapImiSt4hashImESt8equal_toImESaISt4pairIKmiEEE4findERS5_(ptr noundef nonnull align 8 dereferenceable(56) %27, ptr noundef nonnull align 8 dereferenceable(8) %2086)
          to label %2088 unwind label %2108

2088:                                             ; preds = %2083
  %2089 = getelementptr inbounds %"struct.std::__detail::_Node_iterator.521", ptr %94, i32 0, i32 0
  %2090 = getelementptr inbounds %"struct.std::__detail::_Node_iterator_base.522", ptr %2089, i32 0, i32 0
  store ptr %2087, ptr %2090, align 8
  call void @llvm.lifetime.start.p0(i64 8, ptr %95) #9
  call void @llvm.memcpy.p0.p0.i64(ptr align 8 %95, ptr align 8 %94, i64 8, i1 false)
  call void @llvm.lifetime.start.p0(i64 8, ptr %96) #9
  %2091 = getelementptr inbounds %class.anon.532, ptr %96, i32 0, i32 0
  store ptr %16, ptr %2091, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 4, ptr %97) #9
  %2092 = load i32, ptr %92, align 4, !tbaa !77
  %2093 = invoke noundef i32 @"_ZZN8presolve9HPresolve25detectParallelRowsAndColsERNS_19HighsPostsolveStackEENK3$_6clEi"(ptr noundef nonnull align 8 dereferenceable(8) %96, i32 noundef %2092)
          to label %2094 unwind label %2112

2094:                                             ; preds = %2088
  store i32 %2093, ptr %97, align 4, !tbaa !77
  %2095 = getelementptr inbounds %"class.presolve::HPresolve", ptr %138, i32 0, i32 3
  %2096 = load ptr, ptr %2095, align 8, !tbaa !141
  %2097 = icmp eq ptr %2096, null
  br i1 %2097, label %2098, label %2116

2098:                                             ; preds = %2094
  %2099 = getelementptr inbounds %"class.presolve::HPresolve", ptr %138, i32 0, i32 1
  %2100 = load ptr, ptr %2099, align 8, !tbaa !83
  %2101 = getelementptr inbounds %struct.HighsOptionsStruct, ptr %2100, i32 0, i32 60
  %2102 = load i8, ptr %2101, align 8, !tbaa !142, !range !74, !noundef !75
  %2103 = trunc i8 %2102 to i1
  br i1 %2103, label %2104, label %2116

2104:                                             ; preds = %2098
  %2105 = load i32, ptr %97, align 4, !tbaa !77
  %2106 = icmp ne i32 %2105, 0
  br i1 %2106, label %2107, label %2116

2107:                                             ; preds = %2104
  store i32 26, ptr %30, align 4
  br label %2923

2108:                                             ; preds = %2083
  %2109 = landingpad { ptr, i32 }
          cleanup
  %2110 = extractvalue { ptr, i32 } %2109, 0
  store ptr %2110, ptr %12, align 8
  %2111 = extractvalue { ptr, i32 } %2109, 1
  store i32 %2111, ptr %13, align 4
  br label %2931

2112:                                             ; preds = %2088
  %2113 = landingpad { ptr, i32 }
          cleanup
  %2114 = extractvalue { ptr, i32 } %2113, 0
  store ptr %2114, ptr %12, align 8
  %2115 = extractvalue { ptr, i32 } %2113, 1
  store i32 %2115, ptr %13, align 4
  br label %2930

2116:                                             ; preds = %2104, %2098, %2094
  call void @llvm.lifetime.start.p0(i64 4, ptr %98) #9
  store i32 -1, ptr %98, align 4, !tbaa !77
  call void @llvm.lifetime.start.p0(i64 8, ptr %99) #9
  %2117 = call ptr @_ZNSt18unordered_multimapImiSt4hashImESt8equal_toImESaISt4pairIKmiEEE3endEv(ptr noundef nonnull align 8 dereferenceable(56) %27) #9
  %2118 = getelementptr inbounds %"struct.std::__detail::_Node_iterator.521", ptr %99, i32 0, i32 0
  %2119 = getelementptr inbounds %"struct.std::__detail::_Node_iterator_base.522", ptr %2118, i32 0, i32 0
  store ptr %2117, ptr %2119, align 8
  %2120 = call noundef zeroext i1 @_ZNSt8__detailneERKNS_19_Node_iterator_baseISt4pairIKmiELb0EEES6_(ptr noundef nonnull align 8 dereferenceable(8) %94, ptr noundef nonnull align 8 dereferenceable(8) %99) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr %99) #9
  br i1 %2120, label %2121, label %2128

2121:                                             ; preds = %2116
  %2122 = load i32, ptr %92, align 4, !tbaa !77
  invoke void @_ZN8presolve9HPresolve8storeRowEi(ptr noundef nonnull align 8 dereferenceable(1720) %138, i32 noundef %2122)
          to label %2123 unwind label %2124

2123:                                             ; preds = %2121
  br label %2128

2124:                                             ; preds = %2910, %2883, %2121
  %2125 = landingpad { ptr, i32 }
          cleanup
  %2126 = extractvalue { ptr, i32 } %2125, 0
  store ptr %2126, ptr %12, align 8
  %2127 = extractvalue { ptr, i32 } %2125, 1
  store i32 %2127, ptr %13, align 4
  br label %2929

2128:                                             ; preds = %2123, %2116
  br label %2129

2129:                                             ; preds = %2873, %2871, %2128
  call void @llvm.lifetime.start.p0(i64 8, ptr %100) #9
  %2130 = call ptr @_ZNSt18unordered_multimapImiSt4hashImESt8equal_toImESaISt4pairIKmiEEE3endEv(ptr noundef nonnull align 8 dereferenceable(56) %27) #9
  %2131 = getelementptr inbounds %"struct.std::__detail::_Node_iterator.521", ptr %100, i32 0, i32 0
  %2132 = getelementptr inbounds %"struct.std::__detail::_Node_iterator_base.522", ptr %2131, i32 0, i32 0
  store ptr %2130, ptr %2132, align 8
  %2133 = call noundef zeroext i1 @_ZNSt8__detailneERKNS_19_Node_iterator_baseISt4pairIKmiELb0EEES6_(ptr noundef nonnull align 8 dereferenceable(8) %94, ptr noundef nonnull align 8 dereferenceable(8) %100) #9
  br i1 %2133, label %2134, label %2143

2134:                                             ; preds = %2129
  %2135 = call noundef ptr @_ZNKSt8__detail14_Node_iteratorISt4pairIKmiELb0ELb0EEptEv(ptr noundef nonnull align 8 dereferenceable(8) %94) #9
  %2136 = getelementptr inbounds %"struct.std::pair.523", ptr %2135, i32 0, i32 0
  %2137 = load i64, ptr %2136, align 8, !tbaa !116
  %2138 = load i32, ptr %92, align 4, !tbaa !77
  %2139 = sext i32 %2138 to i64
  %2140 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt6vectorImSaImEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %8, i64 noundef %2139) #9
  %2141 = load i64, ptr %2140, align 8, !tbaa !82
  %2142 = icmp eq i64 %2137, %2141
  br label %2143

2143:                                             ; preds = %2134, %2129
  %2144 = phi i1 [ false, %2129 ], [ %2142, %2134 ]
  call void @llvm.lifetime.end.p0(i64 8, ptr %100) #9
  br i1 %2144, label %2145, label %2876

2145:                                             ; preds = %2143
  call void @llvm.lifetime.start.p0(i64 4, ptr %101) #9
  %2146 = call noundef ptr @_ZNKSt8__detail14_Node_iteratorISt4pairIKmiELb0ELb0EEptEv(ptr noundef nonnull align 8 dereferenceable(8) %94) #9
  %2147 = getelementptr inbounds %"struct.std::pair.523", ptr %2146, i32 0, i32 1
  %2148 = load i32, ptr %2147, align 8, !tbaa !118
  store i32 %2148, ptr %101, align 4, !tbaa !77
  call void @llvm.lifetime.start.p0(i64 8, ptr %102) #9
  %2149 = call ptr @_ZNSt8__detail14_Node_iteratorISt4pairIKmiELb0ELb0EEppEi(ptr noundef nonnull align 8 dereferenceable(8) %94, i32 noundef 0) #9
  %2150 = getelementptr inbounds %"struct.std::__detail::_Node_iterator.521", ptr %102, i32 0, i32 0
  %2151 = getelementptr inbounds %"struct.std::__detail::_Node_iterator_base.522", ptr %2150, i32 0, i32 0
  store ptr %2149, ptr %2151, align 8
  call void @llvm.memcpy.p0.p0.i64(ptr align 8 %95, ptr align 8 %102, i64 8, i1 false)
  call void @llvm.lifetime.end.p0(i64 8, ptr %102) #9
  call void @llvm.lifetime.start.p0(i64 4, ptr %103) #9
  %2152 = load i32, ptr %101, align 4, !tbaa !77
  %2153 = invoke noundef i32 @"_ZZN8presolve9HPresolve25detectParallelRowsAndColsERNS_19HighsPostsolveStackEENK3$_6clEi"(ptr noundef nonnull align 8 dereferenceable(8) %96, i32 noundef %2152)
          to label %2154 unwind label %2168

2154:                                             ; preds = %2145
  store i32 %2153, ptr %103, align 4, !tbaa !77
  %2155 = getelementptr inbounds %"class.presolve::HPresolve", ptr %138, i32 0, i32 3
  %2156 = load ptr, ptr %2155, align 8, !tbaa !141
  %2157 = icmp eq ptr %2156, null
  br i1 %2157, label %2158, label %2172

2158:                                             ; preds = %2154
  %2159 = getelementptr inbounds %"class.presolve::HPresolve", ptr %138, i32 0, i32 1
  %2160 = load ptr, ptr %2159, align 8, !tbaa !83
  %2161 = getelementptr inbounds %struct.HighsOptionsStruct, ptr %2160, i32 0, i32 60
  %2162 = load i8, ptr %2161, align 8, !tbaa !142, !range !74, !noundef !75
  %2163 = trunc i8 %2162 to i1
  br i1 %2163, label %2164, label %2172

2164:                                             ; preds = %2158
  %2165 = load i32, ptr %103, align 4, !tbaa !77
  %2166 = icmp ne i32 %2165, 0
  br i1 %2166, label %2167, label %2172

2167:                                             ; preds = %2164
  store i32 29, ptr %30, align 4
  br label %2871, !llvm.loop !143

2168:                                             ; preds = %2145
  %2169 = landingpad { ptr, i32 }
          cleanup
  %2170 = extractvalue { ptr, i32 } %2169, 0
  store ptr %2170, ptr %12, align 8
  %2171 = extractvalue { ptr, i32 } %2169, 1
  store i32 %2171, ptr %13, align 4
  br label %2875

2172:                                             ; preds = %2164, %2158, %2154
  %2173 = getelementptr inbounds %"class.presolve::HPresolve", ptr %138, i32 0, i32 14
  %2174 = load i32, ptr %92, align 4, !tbaa !77
  %2175 = sext i32 %2174 to i64
  %2176 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNSt6vectorIiSaIiEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %2173, i64 noundef %2175) #9
  %2177 = load i32, ptr %2176, align 4, !tbaa !77
  %2178 = load i32, ptr %97, align 4, !tbaa !77
  %2179 = sub nsw i32 %2177, %2178
  %2180 = getelementptr inbounds %"class.presolve::HPresolve", ptr %138, i32 0, i32 14
  %2181 = load i32, ptr %101, align 4, !tbaa !77
  %2182 = sext i32 %2181 to i64
  %2183 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNSt6vectorIiSaIiEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %2180, i64 noundef %2182) #9
  %2184 = load i32, ptr %2183, align 4, !tbaa !77
  %2185 = load i32, ptr %103, align 4, !tbaa !77
  %2186 = sub nsw i32 %2184, %2185
  %2187 = icmp ne i32 %2179, %2186
  br i1 %2187, label %2188, label %2189

2188:                                             ; preds = %2172
  store i32 29, ptr %30, align 4
  br label %2871, !llvm.loop !143

2189:                                             ; preds = %2172
  %2190 = load i32, ptr %103, align 4, !tbaa !77
  %2191 = icmp sgt i32 %2190, 1
  br i1 %2191, label %2195, label %2192

2192:                                             ; preds = %2189
  %2193 = load i32, ptr %97, align 4, !tbaa !77
  %2194 = icmp sgt i32 %2193, 1
  br i1 %2194, label %2195, label %2235

2195:                                             ; preds = %2192, %2189
  %2196 = load i32, ptr %97, align 4, !tbaa !77
  %2197 = icmp ne i32 %2196, 0
  br i1 %2197, label %2214, label %2198

2198:                                             ; preds = %2195
  %2199 = getelementptr inbounds %"class.presolve::HPresolve", ptr %138, i32 0, i32 0
  %2200 = load ptr, ptr %2199, align 8, !tbaa !95
  %2201 = getelementptr inbounds %class.HighsLp, ptr %2200, i32 0, i32 5
  %2202 = load i32, ptr %92, align 4, !tbaa !77
  %2203 = sext i32 %2202 to i64
  %2204 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt6vectorIdSaIdEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %2201, i64 noundef %2203) #9
  %2205 = load double, ptr %2204, align 8, !tbaa !78
  %2206 = getelementptr inbounds %"class.presolve::HPresolve", ptr %138, i32 0, i32 0
  %2207 = load ptr, ptr %2206, align 8, !tbaa !95
  %2208 = getelementptr inbounds %class.HighsLp, ptr %2207, i32 0, i32 6
  %2209 = load i32, ptr %92, align 4, !tbaa !77
  %2210 = sext i32 %2209 to i64
  %2211 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt6vectorIdSaIdEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %2208, i64 noundef %2210) #9
  %2212 = load double, ptr %2211, align 8, !tbaa !78
  %2213 = fcmp une double %2205, %2212
  br i1 %2213, label %2214, label %2234

2214:                                             ; preds = %2198, %2195
  %2215 = load i32, ptr %103, align 4, !tbaa !77
  %2216 = icmp ne i32 %2215, 0
  br i1 %2216, label %2233, label %2217

2217:                                             ; preds = %2214
  %2218 = getelementptr inbounds %"class.presolve::HPresolve", ptr %138, i32 0, i32 0
  %2219 = load ptr, ptr %2218, align 8, !tbaa !95
  %2220 = getelementptr inbounds %class.HighsLp, ptr %2219, i32 0, i32 5
  %2221 = load i32, ptr %101, align 4, !tbaa !77
  %2222 = sext i32 %2221 to i64
  %2223 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt6vectorIdSaIdEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %2220, i64 noundef %2222) #9
  %2224 = load double, ptr %2223, align 8, !tbaa !78
  %2225 = getelementptr inbounds %"class.presolve::HPresolve", ptr %138, i32 0, i32 0
  %2226 = load ptr, ptr %2225, align 8, !tbaa !95
  %2227 = getelementptr inbounds %class.HighsLp, ptr %2226, i32 0, i32 6
  %2228 = load i32, ptr %101, align 4, !tbaa !77
  %2229 = sext i32 %2228 to i64
  %2230 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt6vectorIdSaIdEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %2227, i64 noundef %2229) #9
  %2231 = load double, ptr %2230, align 8, !tbaa !78
  %2232 = fcmp une double %2224, %2231
  br i1 %2232, label %2233, label %2234

2233:                                             ; preds = %2217, %2214
  store i32 29, ptr %30, align 4
  br label %2871, !llvm.loop !143

2234:                                             ; preds = %2217, %2198
  br label %2274

2235:                                             ; preds = %2192
  %2236 = load i32, ptr %103, align 4, !tbaa !77
  %2237 = load i32, ptr %97, align 4, !tbaa !77
  %2238 = icmp ne i32 %2236, %2237
  br i1 %2238, label %2239, label %2273

2239:                                             ; preds = %2235
  %2240 = getelementptr inbounds %"class.presolve::HPresolve", ptr %138, i32 0, i32 0
  %2241 = load ptr, ptr %2240, align 8, !tbaa !95
  %2242 = getelementptr inbounds %class.HighsLp, ptr %2241, i32 0, i32 5
  %2243 = load i32, ptr %92, align 4, !tbaa !77
  %2244 = sext i32 %2243 to i64
  %2245 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt6vectorIdSaIdEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %2242, i64 noundef %2244) #9
  %2246 = load double, ptr %2245, align 8, !tbaa !78
  %2247 = getelementptr inbounds %"class.presolve::HPresolve", ptr %138, i32 0, i32 0
  %2248 = load ptr, ptr %2247, align 8, !tbaa !95
  %2249 = getelementptr inbounds %class.HighsLp, ptr %2248, i32 0, i32 6
  %2250 = load i32, ptr %92, align 4, !tbaa !77
  %2251 = sext i32 %2250 to i64
  %2252 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt6vectorIdSaIdEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %2249, i64 noundef %2251) #9
  %2253 = load double, ptr %2252, align 8, !tbaa !78
  %2254 = fcmp une double %2246, %2253
  br i1 %2254, label %2255, label %2272

2255:                                             ; preds = %2239
  %2256 = getelementptr inbounds %"class.presolve::HPresolve", ptr %138, i32 0, i32 0
  %2257 = load ptr, ptr %2256, align 8, !tbaa !95
  %2258 = getelementptr inbounds %class.HighsLp, ptr %2257, i32 0, i32 5
  %2259 = load i32, ptr %101, align 4, !tbaa !77
  %2260 = sext i32 %2259 to i64
  %2261 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt6vectorIdSaIdEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %2258, i64 noundef %2260) #9
  %2262 = load double, ptr %2261, align 8, !tbaa !78
  %2263 = getelementptr inbounds %"class.presolve::HPresolve", ptr %138, i32 0, i32 0
  %2264 = load ptr, ptr %2263, align 8, !tbaa !95
  %2265 = getelementptr inbounds %class.HighsLp, ptr %2264, i32 0, i32 6
  %2266 = load i32, ptr %101, align 4, !tbaa !77
  %2267 = sext i32 %2266 to i64
  %2268 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt6vectorIdSaIdEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %2265, i64 noundef %2267) #9
  %2269 = load double, ptr %2268, align 8, !tbaa !78
  %2270 = fcmp une double %2262, %2269
  br i1 %2270, label %2271, label %2272

2271:                                             ; preds = %2255
  store i32 29, ptr %30, align 4
  br label %2871, !llvm.loop !143

2272:                                             ; preds = %2255, %2239
  br label %2273

2273:                                             ; preds = %2272, %2235
  br label %2274

2274:                                             ; preds = %2273, %2234
  call void @llvm.lifetime.start.p0(i64 8, ptr %104) #9
  %2275 = load i32, ptr %101, align 4, !tbaa !77
  %2276 = sext i32 %2275 to i64
  %2277 = call noundef nonnull align 8 dereferenceable(12) ptr @_ZNSt6vectorISt4pairIdiESaIS1_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %10, i64 noundef %2276) #9
  %2278 = getelementptr inbounds %"struct.std::pair.468", ptr %2277, i32 0, i32 0
  %2279 = load double, ptr %2278, align 8, !tbaa !80
  %2280 = load i32, ptr %92, align 4, !tbaa !77
  %2281 = sext i32 %2280 to i64
  %2282 = call noundef nonnull align 8 dereferenceable(12) ptr @_ZNSt6vectorISt4pairIdiESaIS1_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %10, i64 noundef %2281) #9
  %2283 = getelementptr inbounds %"struct.std::pair.468", ptr %2282, i32 0, i32 0
  %2284 = load double, ptr %2283, align 8, !tbaa !80
  %2285 = fdiv double %2279, %2284
  store double %2285, ptr %104, align 8, !tbaa !78
  call void @llvm.lifetime.start.p0(i64 1, ptr %105) #9
  store i8 1, ptr %105, align 1, !tbaa !76
  call void @llvm.lifetime.start.p0(i64 8, ptr %106) #9
  call void @llvm.lifetime.start.p0(i64 32, ptr %107) #9
  invoke void @_ZNK8presolve9HPresolve12getStoredRowEv(ptr dead_on_unwind writable sret(%struct.HighsTripletPositionSlice) align 8 %107, ptr noundef nonnull align 8 dereferenceable(1720) %138)
          to label %2286 unwind label %2295

2286:                                             ; preds = %2274
  store ptr %107, ptr %106, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 32, ptr %108) #9
  %2287 = load ptr, ptr %106, align 8, !tbaa !5
  invoke void @_ZNK16HighsMatrixSliceI25HighsTripletPositionSliceE5beginEv(ptr dead_on_unwind writable sret(%"class.HighsMatrixSlice<HighsTripletPositionSlice>::iterator") align 8 %108, ptr noundef nonnull align 8 dereferenceable(28) %2287)
          to label %2288 unwind label %2299

2288:                                             ; preds = %2286
  call void @llvm.lifetime.start.p0(i64 32, ptr %109) #9
  %2289 = load ptr, ptr %106, align 8, !tbaa !5
  invoke void @_ZNK16HighsMatrixSliceI25HighsTripletPositionSliceE3endEv(ptr dead_on_unwind writable sret(%"class.HighsMatrixSlice<HighsTripletPositionSlice>::iterator") align 8 %109, ptr noundef nonnull align 8 dereferenceable(28) %2289)
          to label %2290 unwind label %2303

2290:                                             ; preds = %2288
  br label %2291

2291:                                             ; preds = %2389, %2290
  %2292 = invoke noundef zeroext i1 @_ZNK16HighsMatrixSliceI25HighsTripletPositionSliceE8iteratorneERKS2_(ptr noundef nonnull align 8 dereferenceable(28) %108, ptr noundef nonnull align 8 dereferenceable(28) %109)
          to label %2293 unwind label %2303

2293:                                             ; preds = %2291
  br i1 %2292, label %2307, label %2294

2294:                                             ; preds = %2293
  store i32 31, ptr %30, align 4
  br label %2392

2295:                                             ; preds = %2274
  %2296 = landingpad { ptr, i32 }
          cleanup
  %2297 = extractvalue { ptr, i32 } %2296, 0
  store ptr %2297, ptr %12, align 8
  %2298 = extractvalue { ptr, i32 } %2296, 1
  store i32 %2298, ptr %13, align 4
  br label %2395

2299:                                             ; preds = %2286
  %2300 = landingpad { ptr, i32 }
          cleanup
  %2301 = extractvalue { ptr, i32 } %2300, 0
  store ptr %2301, ptr %12, align 8
  %2302 = extractvalue { ptr, i32 } %2300, 1
  store i32 %2302, ptr %13, align 4
  br label %2394

2303:                                             ; preds = %2387, %2291, %2288
  %2304 = landingpad { ptr, i32 }
          cleanup
  %2305 = extractvalue { ptr, i32 } %2304, 0
  store ptr %2305, ptr %12, align 8
  %2306 = extractvalue { ptr, i32 } %2304, 1
  store i32 %2306, ptr %13, align 4
  br label %2393

2307:                                             ; preds = %2293
  call void @llvm.lifetime.start.p0(i64 8, ptr %110) #9
  %2308 = invoke noundef nonnull align 8 dereferenceable(16) ptr @_ZN16HighsMatrixSliceI25HighsTripletPositionSliceE8iteratordeEv(ptr noundef nonnull align 8 dereferenceable(28) %108)
          to label %2309 unwind label %2319

2309:                                             ; preds = %2307
  store ptr %2308, ptr %110, align 8, !tbaa !5
  %2310 = getelementptr inbounds %"class.presolve::HPresolve", ptr %138, i32 0, i32 17
  %2311 = load ptr, ptr %110, align 8, !tbaa !5
  %2312 = invoke noundef i32 @_ZNK17HighsSliceNonzero5indexEv(ptr noundef nonnull align 8 dereferenceable(16) %2311)
          to label %2313 unwind label %2319

2313:                                             ; preds = %2309
  %2314 = sext i32 %2312 to i64
  %2315 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNSt6vectorIiSaIiEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %2310, i64 noundef %2314) #9
  %2316 = load i32, ptr %2315, align 4, !tbaa !77
  %2317 = icmp eq i32 %2316, 1
  br i1 %2317, label %2318, label %2323

2318:                                             ; preds = %2313
  store i32 32, ptr %30, align 4
  br label %2384

2319:                                             ; preds = %2309, %2307
  %2320 = landingpad { ptr, i32 }
          cleanup
  %2321 = extractvalue { ptr, i32 } %2320, 0
  store ptr %2321, ptr %12, align 8
  %2322 = extractvalue { ptr, i32 } %2320, 1
  store i32 %2322, ptr %13, align 4
  br label %2391

2323:                                             ; preds = %2313
  call void @llvm.lifetime.start.p0(i64 4, ptr %111) #9
  %2324 = load i32, ptr %101, align 4, !tbaa !77
  %2325 = load ptr, ptr %110, align 8, !tbaa !5
  %2326 = invoke noundef i32 @_ZNK17HighsSliceNonzero5indexEv(ptr noundef nonnull align 8 dereferenceable(16) %2325)
          to label %2327 unwind label %2336

2327:                                             ; preds = %2323
  %2328 = invoke noundef i32 @_ZN8presolve9HPresolve11findNonzeroEii(ptr noundef nonnull align 8 dereferenceable(1720) %138, i32 noundef %2324, i32 noundef %2326)
          to label %2329 unwind label %2336

2329:                                             ; preds = %2327
  store i32 %2328, ptr %111, align 4, !tbaa !77
  %2330 = load i32, ptr %111, align 4, !tbaa !77
  %2331 = icmp ne i32 %2330, -1
  %2332 = zext i1 %2331 to i8
  store i8 %2332, ptr %105, align 1, !tbaa !76
  %2333 = load i8, ptr %105, align 1, !tbaa !76, !range !74, !noundef !75
  %2334 = trunc i8 %2333 to i1
  br i1 %2334, label %2340, label %2335

2335:                                             ; preds = %2329
  store i32 31, ptr %30, align 4
  br label %2381

2336:                                             ; preds = %2327, %2323
  %2337 = landingpad { ptr, i32 }
          cleanup
  %2338 = extractvalue { ptr, i32 } %2337, 0
  store ptr %2338, ptr %12, align 8
  %2339 = extractvalue { ptr, i32 } %2337, 1
  store i32 %2339, ptr %13, align 4
  br label %2390

2340:                                             ; preds = %2329
  call void @llvm.lifetime.start.p0(i64 16, ptr %112) #9
  %2341 = getelementptr inbounds %"class.presolve::HPresolve", ptr %138, i32 0, i32 5
  %2342 = load i32, ptr %111, align 4, !tbaa !77
  %2343 = sext i32 %2342 to i64
  %2344 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt6vectorIdSaIdEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %2341, i64 noundef %2343) #9
  %2345 = load double, ptr %2344, align 8, !tbaa !78
  call void @llvm.lifetime.start.p0(i64 16, ptr %113) #9
  call void @llvm.lifetime.start.p0(i64 16, ptr %114) #9
  %2346 = load double, ptr %104, align 8, !tbaa !78
  invoke void @_ZN12HighsCDoubleC2Ed(ptr noundef nonnull align 8 dereferenceable(16) %114, double noundef %2346)
          to label %2347 unwind label %2376

2347:                                             ; preds = %2340
  %2348 = load ptr, ptr %110, align 8, !tbaa !5
  %2349 = invoke noundef double @_ZNK17HighsSliceNonzero5valueEv(ptr noundef nonnull align 8 dereferenceable(16) %2348)
          to label %2350 unwind label %2376

2350:                                             ; preds = %2347
  %2351 = invoke { double, double } @_ZNK12HighsCDoublemlEd(ptr noundef nonnull align 8 dereferenceable(16) %114, double noundef %2349)
          to label %2352 unwind label %2376

2352:                                             ; preds = %2350
  %2353 = getelementptr inbounds { double, double }, ptr %113, i32 0, i32 0
  %2354 = extractvalue { double, double } %2351, 0
  store double %2354, ptr %2353, align 8
  %2355 = getelementptr inbounds { double, double }, ptr %113, i32 0, i32 1
  %2356 = extractvalue { double, double } %2351, 1
  store double %2356, ptr %2355, align 8
  %2357 = invoke { double, double } @_ZmidRK12HighsCDouble(double noundef %2345, ptr noundef nonnull align 8 dereferenceable(16) %113)
          to label %2358 unwind label %2376

2358:                                             ; preds = %2352
  %2359 = getelementptr inbounds { double, double }, ptr %112, i32 0, i32 0
  %2360 = extractvalue { double, double } %2357, 0
  store double %2360, ptr %2359, align 8
  %2361 = getelementptr inbounds { double, double }, ptr %112, i32 0, i32 1
  %2362 = extractvalue { double, double } %2357, 1
  store double %2362, ptr %2361, align 8
  %2363 = invoke noundef double @_ZNK12HighsCDoublecvdEv(ptr noundef nonnull align 8 dereferenceable(16) %112)
          to label %2364 unwind label %2376

2364:                                             ; preds = %2358
  %2365 = invoke noundef double @_ZSt3absd(double noundef %2363)
          to label %2366 unwind label %2376

2366:                                             ; preds = %2364
  %2367 = getelementptr inbounds %"class.presolve::HPresolve", ptr %138, i32 0, i32 1
  %2368 = load ptr, ptr %2367, align 8, !tbaa !83
  %2369 = getelementptr inbounds %struct.HighsOptionsStruct, ptr %2368, i32 0, i32 12
  %2370 = load double, ptr %2369, align 8, !tbaa !84
  %2371 = fcmp ole double %2365, %2370
  %2372 = zext i1 %2371 to i8
  store i8 %2372, ptr %105, align 1, !tbaa !76
  call void @llvm.lifetime.end.p0(i64 16, ptr %114) #9
  call void @llvm.lifetime.end.p0(i64 16, ptr %113) #9
  call void @llvm.lifetime.end.p0(i64 16, ptr %112) #9
  %2373 = load i8, ptr %105, align 1, !tbaa !76, !range !74, !noundef !75
  %2374 = trunc i8 %2373 to i1
  br i1 %2374, label %2380, label %2375

2375:                                             ; preds = %2366
  store i32 31, ptr %30, align 4
  br label %2381

2376:                                             ; preds = %2364, %2358, %2352, %2350, %2347, %2340
  %2377 = landingpad { ptr, i32 }
          cleanup
  %2378 = extractvalue { ptr, i32 } %2377, 0
  store ptr %2378, ptr %12, align 8
  %2379 = extractvalue { ptr, i32 } %2377, 1
  store i32 %2379, ptr %13, align 4
  call void @llvm.lifetime.end.p0(i64 16, ptr %114) #9
  call void @llvm.lifetime.end.p0(i64 16, ptr %113) #9
  call void @llvm.lifetime.end.p0(i64 16, ptr %112) #9
  br label %2390

2380:                                             ; preds = %2366
  store i32 0, ptr %30, align 4
  br label %2381

2381:                                             ; preds = %2380, %2375, %2335
  call void @llvm.lifetime.end.p0(i64 4, ptr %111) #9
  %2382 = load i32, ptr %30, align 4
  switch i32 %2382, label %2384 [
    i32 0, label %2383
  ]

2383:                                             ; preds = %2381
  store i32 0, ptr %30, align 4
  br label %2384

2384:                                             ; preds = %2383, %2381, %2318
  call void @llvm.lifetime.end.p0(i64 8, ptr %110) #9
  %2385 = load i32, ptr %30, align 4
  switch i32 %2385, label %2392 [
    i32 0, label %2386
    i32 32, label %2387
  ]

2386:                                             ; preds = %2384
  br label %2387

2387:                                             ; preds = %2386, %2384
  %2388 = invoke noundef nonnull align 8 dereferenceable(28) ptr @_ZN16HighsMatrixSliceI25HighsTripletPositionSliceE8iteratorppEv(ptr noundef nonnull align 8 dereferenceable(28) %108)
          to label %2389 unwind label %2303

2389:                                             ; preds = %2387
  br label %2291

2390:                                             ; preds = %2376, %2336
  call void @llvm.lifetime.end.p0(i64 4, ptr %111) #9
  br label %2391

2391:                                             ; preds = %2390, %2319
  call void @llvm.lifetime.end.p0(i64 8, ptr %110) #9
  br label %2393

2392:                                             ; preds = %2384, %2294
  call void @llvm.lifetime.end.p0(i64 32, ptr %109) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr %108) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr %107) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr %106) #9
  br label %2396

2393:                                             ; preds = %2391, %2303
  call void @llvm.lifetime.end.p0(i64 32, ptr %109) #9
  br label %2394

2394:                                             ; preds = %2393, %2299
  call void @llvm.lifetime.end.p0(i64 32, ptr %108) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr %107) #9
  br label %2395

2395:                                             ; preds = %2394, %2295
  call void @llvm.lifetime.end.p0(i64 8, ptr %106) #9
  br label %2874

2396:                                             ; preds = %2392
  %2397 = load i8, ptr %105, align 1, !tbaa !76, !range !74, !noundef !75
  %2398 = trunc i8 %2397 to i1
  br i1 %2398, label %2400, label %2399

2399:                                             ; preds = %2396
  store i32 29, ptr %30, align 4
  br label %2870, !llvm.loop !143

2400:                                             ; preds = %2396
  %2401 = load i32, ptr %97, align 4, !tbaa !77
  %2402 = icmp eq i32 %2401, 0
  br i1 %2402, label %2403, label %2720

2403:                                             ; preds = %2400
  %2404 = load i32, ptr %103, align 4, !tbaa !77
  %2405 = icmp eq i32 %2404, 0
  br i1 %2405, label %2406, label %2720

2406:                                             ; preds = %2403
  call void @llvm.lifetime.start.p0(i64 1, ptr %115) #9
  store i8 0, ptr %115, align 1, !tbaa !76
  call void @llvm.lifetime.start.p0(i64 1, ptr %116) #9
  store i8 0, ptr %116, align 1, !tbaa !76
  call void @llvm.lifetime.start.p0(i64 8, ptr %117) #9
  call void @llvm.lifetime.start.p0(i64 8, ptr %118) #9
  %2407 = load double, ptr %104, align 8, !tbaa !78
  %2408 = fcmp ogt double %2407, 0.000000e+00
  br i1 %2408, label %2409, label %2428

2409:                                             ; preds = %2406
  %2410 = getelementptr inbounds %"class.presolve::HPresolve", ptr %138, i32 0, i32 0
  %2411 = load ptr, ptr %2410, align 8, !tbaa !95
  %2412 = getelementptr inbounds %class.HighsLp, ptr %2411, i32 0, i32 6
  %2413 = load i32, ptr %92, align 4, !tbaa !77
  %2414 = sext i32 %2413 to i64
  %2415 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt6vectorIdSaIdEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %2412, i64 noundef %2414) #9
  %2416 = load double, ptr %2415, align 8, !tbaa !78
  %2417 = load double, ptr %104, align 8, !tbaa !78
  %2418 = fmul double %2416, %2417
  store double %2418, ptr %117, align 8, !tbaa !78
  %2419 = getelementptr inbounds %"class.presolve::HPresolve", ptr %138, i32 0, i32 0
  %2420 = load ptr, ptr %2419, align 8, !tbaa !95
  %2421 = getelementptr inbounds %class.HighsLp, ptr %2420, i32 0, i32 5
  %2422 = load i32, ptr %92, align 4, !tbaa !77
  %2423 = sext i32 %2422 to i64
  %2424 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt6vectorIdSaIdEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %2421, i64 noundef %2423) #9
  %2425 = load double, ptr %2424, align 8, !tbaa !78
  %2426 = load double, ptr %104, align 8, !tbaa !78
  %2427 = fmul double %2425, %2426
  store double %2427, ptr %118, align 8, !tbaa !78
  br label %2447

2428:                                             ; preds = %2406
  %2429 = getelementptr inbounds %"class.presolve::HPresolve", ptr %138, i32 0, i32 0
  %2430 = load ptr, ptr %2429, align 8, !tbaa !95
  %2431 = getelementptr inbounds %class.HighsLp, ptr %2430, i32 0, i32 6
  %2432 = load i32, ptr %92, align 4, !tbaa !77
  %2433 = sext i32 %2432 to i64
  %2434 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt6vectorIdSaIdEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %2431, i64 noundef %2433) #9
  %2435 = load double, ptr %2434, align 8, !tbaa !78
  %2436 = load double, ptr %104, align 8, !tbaa !78
  %2437 = fmul double %2435, %2436
  store double %2437, ptr %118, align 8, !tbaa !78
  %2438 = getelementptr inbounds %"class.presolve::HPresolve", ptr %138, i32 0, i32 0
  %2439 = load ptr, ptr %2438, align 8, !tbaa !95
  %2440 = getelementptr inbounds %class.HighsLp, ptr %2439, i32 0, i32 5
  %2441 = load i32, ptr %92, align 4, !tbaa !77
  %2442 = sext i32 %2441 to i64
  %2443 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt6vectorIdSaIdEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %2440, i64 noundef %2442) #9
  %2444 = load double, ptr %2443, align 8, !tbaa !78
  %2445 = load double, ptr %104, align 8, !tbaa !78
  %2446 = fmul double %2444, %2445
  store double %2446, ptr %117, align 8, !tbaa !78
  br label %2447

2447:                                             ; preds = %2428, %2409
  %2448 = load double, ptr %117, align 8, !tbaa !78
  %2449 = getelementptr inbounds %"class.presolve::HPresolve", ptr %138, i32 0, i32 0
  %2450 = load ptr, ptr %2449, align 8, !tbaa !95
  %2451 = getelementptr inbounds %class.HighsLp, ptr %2450, i32 0, i32 6
  %2452 = load i32, ptr %101, align 4, !tbaa !77
  %2453 = sext i32 %2452 to i64
  %2454 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt6vectorIdSaIdEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %2451, i64 noundef %2453) #9
  %2455 = load double, ptr %2454, align 8, !tbaa !78
  %2456 = fcmp olt double %2448, %2455
  br i1 %2456, label %2457, label %2562

2457:                                             ; preds = %2447
  %2458 = load double, ptr %117, align 8, !tbaa !78
  %2459 = getelementptr inbounds %"class.presolve::HPresolve", ptr %138, i32 0, i32 0
  %2460 = load ptr, ptr %2459, align 8, !tbaa !95
  %2461 = getelementptr inbounds %class.HighsLp, ptr %2460, i32 0, i32 5
  %2462 = load i32, ptr %101, align 4, !tbaa !77
  %2463 = sext i32 %2462 to i64
  %2464 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt6vectorIdSaIdEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %2461, i64 noundef %2463) #9
  %2465 = load double, ptr %2464, align 8, !tbaa !78
  %2466 = getelementptr inbounds %"class.presolve::HPresolve", ptr %138, i32 0, i32 4
  %2467 = load double, ptr %2466, align 8, !tbaa !135
  %2468 = fsub double %2465, %2467
  %2469 = fcmp olt double %2458, %2468
  br i1 %2469, label %2470, label %2471

2470:                                             ; preds = %2457
  store i32 1, ptr %3, align 4
  store i32 1, ptr %30, align 4
  br label %2718

2471:                                             ; preds = %2457
  %2472 = load double, ptr %117, align 8, !tbaa !78
  %2473 = getelementptr inbounds %"class.presolve::HPresolve", ptr %138, i32 0, i32 0
  %2474 = load ptr, ptr %2473, align 8, !tbaa !95
  %2475 = getelementptr inbounds %class.HighsLp, ptr %2474, i32 0, i32 5
  %2476 = load i32, ptr %101, align 4, !tbaa !77
  %2477 = sext i32 %2476 to i64
  %2478 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt6vectorIdSaIdEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %2475, i64 noundef %2477) #9
  %2479 = load double, ptr %2478, align 8, !tbaa !78
  %2480 = getelementptr inbounds %"class.presolve::HPresolve", ptr %138, i32 0, i32 4
  %2481 = load double, ptr %2480, align 8, !tbaa !135
  %2482 = fadd double %2479, %2481
  %2483 = fcmp ole double %2472, %2482
  br i1 %2483, label %2484, label %2492

2484:                                             ; preds = %2471
  %2485 = getelementptr inbounds %"class.presolve::HPresolve", ptr %138, i32 0, i32 0
  %2486 = load ptr, ptr %2485, align 8, !tbaa !95
  %2487 = getelementptr inbounds %class.HighsLp, ptr %2486, i32 0, i32 5
  %2488 = load i32, ptr %101, align 4, !tbaa !77
  %2489 = sext i32 %2488 to i64
  %2490 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt6vectorIdSaIdEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %2487, i64 noundef %2489) #9
  %2491 = load double, ptr %2490, align 8, !tbaa !78
  store double %2491, ptr %117, align 8, !tbaa !78
  br label %2492

2492:                                             ; preds = %2484, %2471
  %2493 = load double, ptr %117, align 8, !tbaa !78
  %2494 = getelementptr inbounds %"class.presolve::HPresolve", ptr %138, i32 0, i32 0
  %2495 = load ptr, ptr %2494, align 8, !tbaa !95
  %2496 = getelementptr inbounds %class.HighsLp, ptr %2495, i32 0, i32 6
  %2497 = load i32, ptr %101, align 4, !tbaa !77
  %2498 = sext i32 %2497 to i64
  %2499 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt6vectorIdSaIdEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %2496, i64 noundef %2498) #9
  %2500 = load double, ptr %2499, align 8, !tbaa !78
  %2501 = fcmp olt double %2493, %2500
  br i1 %2501, label %2502, label %2561

2502:                                             ; preds = %2492
  store i8 1, ptr %116, align 1, !tbaa !76
  %2503 = load double, ptr %104, align 8, !tbaa !78
  %2504 = fcmp ogt double %2503, 0.000000e+00
  br i1 %2504, label %2505, label %2529

2505:                                             ; preds = %2502
  call void @llvm.lifetime.start.p0(i64 8, ptr %119) #9
  %2506 = getelementptr inbounds %"class.presolve::HPresolve", ptr %138, i32 0, i32 24
  %2507 = load i32, ptr %92, align 4, !tbaa !77
  %2508 = sext i32 %2507 to i64
  %2509 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt6vectorIdSaIdEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %2506, i64 noundef %2508) #9
  %2510 = load double, ptr %2509, align 8, !tbaa !78
  %2511 = load double, ptr %104, align 8, !tbaa !78
  %2512 = fdiv double %2510, %2511
  store double %2512, ptr %119, align 8, !tbaa !78
  %2513 = getelementptr inbounds %"class.presolve::HPresolve", ptr %138, i32 0, i32 24
  %2514 = load i32, ptr %101, align 4, !tbaa !77
  %2515 = sext i32 %2514 to i64
  %2516 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt6vectorIdSaIdEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %2513, i64 noundef %2515) #9
  %2517 = load double, ptr %2516, align 8, !tbaa !78
  %2518 = load double, ptr %104, align 8, !tbaa !78
  %2519 = fmul double %2517, %2518
  %2520 = getelementptr inbounds %"class.presolve::HPresolve", ptr %138, i32 0, i32 24
  %2521 = load i32, ptr %92, align 4, !tbaa !77
  %2522 = sext i32 %2521 to i64
  %2523 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt6vectorIdSaIdEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %2520, i64 noundef %2522) #9
  store double %2519, ptr %2523, align 8, !tbaa !78
  %2524 = load double, ptr %119, align 8, !tbaa !78
  %2525 = getelementptr inbounds %"class.presolve::HPresolve", ptr %138, i32 0, i32 24
  %2526 = load i32, ptr %101, align 4, !tbaa !77
  %2527 = sext i32 %2526 to i64
  %2528 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt6vectorIdSaIdEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %2525, i64 noundef %2527) #9
  store double %2524, ptr %2528, align 8, !tbaa !78
  call void @llvm.lifetime.end.p0(i64 8, ptr %119) #9
  br label %2553

2529:                                             ; preds = %2502
  call void @llvm.lifetime.start.p0(i64 8, ptr %120) #9
  %2530 = getelementptr inbounds %"class.presolve::HPresolve", ptr %138, i32 0, i32 25
  %2531 = load i32, ptr %92, align 4, !tbaa !77
  %2532 = sext i32 %2531 to i64
  %2533 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt6vectorIdSaIdEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %2530, i64 noundef %2532) #9
  %2534 = load double, ptr %2533, align 8, !tbaa !78
  %2535 = load double, ptr %104, align 8, !tbaa !78
  %2536 = fdiv double %2534, %2535
  store double %2536, ptr %120, align 8, !tbaa !78
  %2537 = getelementptr inbounds %"class.presolve::HPresolve", ptr %138, i32 0, i32 24
  %2538 = load i32, ptr %101, align 4, !tbaa !77
  %2539 = sext i32 %2538 to i64
  %2540 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt6vectorIdSaIdEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %2537, i64 noundef %2539) #9
  %2541 = load double, ptr %2540, align 8, !tbaa !78
  %2542 = load double, ptr %104, align 8, !tbaa !78
  %2543 = fmul double %2541, %2542
  %2544 = getelementptr inbounds %"class.presolve::HPresolve", ptr %138, i32 0, i32 25
  %2545 = load i32, ptr %92, align 4, !tbaa !77
  %2546 = sext i32 %2545 to i64
  %2547 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt6vectorIdSaIdEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %2544, i64 noundef %2546) #9
  store double %2543, ptr %2547, align 8, !tbaa !78
  %2548 = load double, ptr %120, align 8, !tbaa !78
  %2549 = getelementptr inbounds %"class.presolve::HPresolve", ptr %138, i32 0, i32 24
  %2550 = load i32, ptr %101, align 4, !tbaa !77
  %2551 = sext i32 %2550 to i64
  %2552 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt6vectorIdSaIdEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %2549, i64 noundef %2551) #9
  store double %2548, ptr %2552, align 8, !tbaa !78
  call void @llvm.lifetime.end.p0(i64 8, ptr %120) #9
  br label %2553

2553:                                             ; preds = %2529, %2505
  %2554 = load double, ptr %117, align 8, !tbaa !78
  %2555 = getelementptr inbounds %"class.presolve::HPresolve", ptr %138, i32 0, i32 0
  %2556 = load ptr, ptr %2555, align 8, !tbaa !95
  %2557 = getelementptr inbounds %class.HighsLp, ptr %2556, i32 0, i32 6
  %2558 = load i32, ptr %101, align 4, !tbaa !77
  %2559 = sext i32 %2558 to i64
  %2560 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt6vectorIdSaIdEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %2557, i64 noundef %2559) #9
  store double %2554, ptr %2560, align 8, !tbaa !78
  br label %2561

2561:                                             ; preds = %2553, %2492
  br label %2562

2562:                                             ; preds = %2561, %2447
  %2563 = load double, ptr %118, align 8, !tbaa !78
  %2564 = getelementptr inbounds %"class.presolve::HPresolve", ptr %138, i32 0, i32 0
  %2565 = load ptr, ptr %2564, align 8, !tbaa !95
  %2566 = getelementptr inbounds %class.HighsLp, ptr %2565, i32 0, i32 5
  %2567 = load i32, ptr %101, align 4, !tbaa !77
  %2568 = sext i32 %2567 to i64
  %2569 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt6vectorIdSaIdEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %2566, i64 noundef %2568) #9
  %2570 = load double, ptr %2569, align 8, !tbaa !78
  %2571 = fcmp ogt double %2563, %2570
  br i1 %2571, label %2572, label %2677

2572:                                             ; preds = %2562
  %2573 = load double, ptr %118, align 8, !tbaa !78
  %2574 = getelementptr inbounds %"class.presolve::HPresolve", ptr %138, i32 0, i32 0
  %2575 = load ptr, ptr %2574, align 8, !tbaa !95
  %2576 = getelementptr inbounds %class.HighsLp, ptr %2575, i32 0, i32 6
  %2577 = load i32, ptr %101, align 4, !tbaa !77
  %2578 = sext i32 %2577 to i64
  %2579 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt6vectorIdSaIdEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %2576, i64 noundef %2578) #9
  %2580 = load double, ptr %2579, align 8, !tbaa !78
  %2581 = getelementptr inbounds %"class.presolve::HPresolve", ptr %138, i32 0, i32 4
  %2582 = load double, ptr %2581, align 8, !tbaa !135
  %2583 = fadd double %2580, %2582
  %2584 = fcmp ogt double %2573, %2583
  br i1 %2584, label %2585, label %2586

2585:                                             ; preds = %2572
  store i32 1, ptr %3, align 4
  store i32 1, ptr %30, align 4
  br label %2718

2586:                                             ; preds = %2572
  %2587 = load double, ptr %118, align 8, !tbaa !78
  %2588 = getelementptr inbounds %"class.presolve::HPresolve", ptr %138, i32 0, i32 0
  %2589 = load ptr, ptr %2588, align 8, !tbaa !95
  %2590 = getelementptr inbounds %class.HighsLp, ptr %2589, i32 0, i32 6
  %2591 = load i32, ptr %101, align 4, !tbaa !77
  %2592 = sext i32 %2591 to i64
  %2593 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt6vectorIdSaIdEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %2590, i64 noundef %2592) #9
  %2594 = load double, ptr %2593, align 8, !tbaa !78
  %2595 = getelementptr inbounds %"class.presolve::HPresolve", ptr %138, i32 0, i32 4
  %2596 = load double, ptr %2595, align 8, !tbaa !135
  %2597 = fsub double %2594, %2596
  %2598 = fcmp oge double %2587, %2597
  br i1 %2598, label %2599, label %2607

2599:                                             ; preds = %2586
  %2600 = getelementptr inbounds %"class.presolve::HPresolve", ptr %138, i32 0, i32 0
  %2601 = load ptr, ptr %2600, align 8, !tbaa !95
  %2602 = getelementptr inbounds %class.HighsLp, ptr %2601, i32 0, i32 6
  %2603 = load i32, ptr %101, align 4, !tbaa !77
  %2604 = sext i32 %2603 to i64
  %2605 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt6vectorIdSaIdEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %2602, i64 noundef %2604) #9
  %2606 = load double, ptr %2605, align 8, !tbaa !78
  store double %2606, ptr %118, align 8, !tbaa !78
  br label %2607

2607:                                             ; preds = %2599, %2586
  %2608 = load double, ptr %118, align 8, !tbaa !78
  %2609 = getelementptr inbounds %"class.presolve::HPresolve", ptr %138, i32 0, i32 0
  %2610 = load ptr, ptr %2609, align 8, !tbaa !95
  %2611 = getelementptr inbounds %class.HighsLp, ptr %2610, i32 0, i32 5
  %2612 = load i32, ptr %101, align 4, !tbaa !77
  %2613 = sext i32 %2612 to i64
  %2614 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt6vectorIdSaIdEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %2611, i64 noundef %2613) #9
  %2615 = load double, ptr %2614, align 8, !tbaa !78
  %2616 = fcmp ogt double %2608, %2615
  br i1 %2616, label %2617, label %2676

2617:                                             ; preds = %2607
  store i8 1, ptr %115, align 1, !tbaa !76
  %2618 = load double, ptr %104, align 8, !tbaa !78
  %2619 = fcmp ogt double %2618, 0.000000e+00
  br i1 %2619, label %2620, label %2644

2620:                                             ; preds = %2617
  call void @llvm.lifetime.start.p0(i64 8, ptr %121) #9
  %2621 = getelementptr inbounds %"class.presolve::HPresolve", ptr %138, i32 0, i32 25
  %2622 = load i32, ptr %92, align 4, !tbaa !77
  %2623 = sext i32 %2622 to i64
  %2624 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt6vectorIdSaIdEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %2621, i64 noundef %2623) #9
  %2625 = load double, ptr %2624, align 8, !tbaa !78
  %2626 = load double, ptr %104, align 8, !tbaa !78
  %2627 = fdiv double %2625, %2626
  store double %2627, ptr %121, align 8, !tbaa !78
  %2628 = getelementptr inbounds %"class.presolve::HPresolve", ptr %138, i32 0, i32 25
  %2629 = load i32, ptr %101, align 4, !tbaa !77
  %2630 = sext i32 %2629 to i64
  %2631 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt6vectorIdSaIdEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %2628, i64 noundef %2630) #9
  %2632 = load double, ptr %2631, align 8, !tbaa !78
  %2633 = load double, ptr %104, align 8, !tbaa !78
  %2634 = fmul double %2632, %2633
  %2635 = getelementptr inbounds %"class.presolve::HPresolve", ptr %138, i32 0, i32 25
  %2636 = load i32, ptr %92, align 4, !tbaa !77
  %2637 = sext i32 %2636 to i64
  %2638 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt6vectorIdSaIdEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %2635, i64 noundef %2637) #9
  store double %2634, ptr %2638, align 8, !tbaa !78
  %2639 = load double, ptr %121, align 8, !tbaa !78
  %2640 = getelementptr inbounds %"class.presolve::HPresolve", ptr %138, i32 0, i32 25
  %2641 = load i32, ptr %101, align 4, !tbaa !77
  %2642 = sext i32 %2641 to i64
  %2643 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt6vectorIdSaIdEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %2640, i64 noundef %2642) #9
  store double %2639, ptr %2643, align 8, !tbaa !78
  call void @llvm.lifetime.end.p0(i64 8, ptr %121) #9
  br label %2668

2644:                                             ; preds = %2617
  call void @llvm.lifetime.start.p0(i64 8, ptr %122) #9
  %2645 = getelementptr inbounds %"class.presolve::HPresolve", ptr %138, i32 0, i32 24
  %2646 = load i32, ptr %92, align 4, !tbaa !77
  %2647 = sext i32 %2646 to i64
  %2648 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt6vectorIdSaIdEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %2645, i64 noundef %2647) #9
  %2649 = load double, ptr %2648, align 8, !tbaa !78
  %2650 = load double, ptr %104, align 8, !tbaa !78
  %2651 = fdiv double %2649, %2650
  store double %2651, ptr %122, align 8, !tbaa !78
  %2652 = getelementptr inbounds %"class.presolve::HPresolve", ptr %138, i32 0, i32 25
  %2653 = load i32, ptr %101, align 4, !tbaa !77
  %2654 = sext i32 %2653 to i64
  %2655 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt6vectorIdSaIdEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %2652, i64 noundef %2654) #9
  %2656 = load double, ptr %2655, align 8, !tbaa !78
  %2657 = load double, ptr %104, align 8, !tbaa !78
  %2658 = fmul double %2656, %2657
  %2659 = getelementptr inbounds %"class.presolve::HPresolve", ptr %138, i32 0, i32 24
  %2660 = load i32, ptr %92, align 4, !tbaa !77
  %2661 = sext i32 %2660 to i64
  %2662 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt6vectorIdSaIdEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %2659, i64 noundef %2661) #9
  store double %2658, ptr %2662, align 8, !tbaa !78
  %2663 = load double, ptr %122, align 8, !tbaa !78
  %2664 = getelementptr inbounds %"class.presolve::HPresolve", ptr %138, i32 0, i32 25
  %2665 = load i32, ptr %101, align 4, !tbaa !77
  %2666 = sext i32 %2665 to i64
  %2667 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt6vectorIdSaIdEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %2664, i64 noundef %2666) #9
  store double %2663, ptr %2667, align 8, !tbaa !78
  call void @llvm.lifetime.end.p0(i64 8, ptr %122) #9
  br label %2668

2668:                                             ; preds = %2644, %2620
  %2669 = load double, ptr %118, align 8, !tbaa !78
  %2670 = getelementptr inbounds %"class.presolve::HPresolve", ptr %138, i32 0, i32 0
  %2671 = load ptr, ptr %2670, align 8, !tbaa !95
  %2672 = getelementptr inbounds %class.HighsLp, ptr %2671, i32 0, i32 5
  %2673 = load i32, ptr %101, align 4, !tbaa !77
  %2674 = sext i32 %2673 to i64
  %2675 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt6vectorIdSaIdEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %2672, i64 noundef %2674) #9
  store double %2669, ptr %2675, align 8, !tbaa !78
  br label %2676

2676:                                             ; preds = %2668, %2607
  br label %2677

2677:                                             ; preds = %2676, %2562
  %2678 = load i32, ptr %101, align 4, !tbaa !77
  invoke void @_ZN8presolve9HPresolve25resetRowDualImpliedBoundsEii(ptr noundef nonnull align 8 dereferenceable(1720) %138, i32 noundef %2678, i32 noundef -1)
          to label %2679 unwind label %2702

2679:                                             ; preds = %2677
  %2680 = load ptr, ptr %5, align 8, !tbaa !5
  %2681 = load i32, ptr %101, align 4, !tbaa !77
  %2682 = load i8, ptr %116, align 1, !tbaa !76, !range !74, !noundef !75
  %2683 = trunc i8 %2682 to i1
  %2684 = load i8, ptr %115, align 1, !tbaa !76, !range !74, !noundef !75
  %2685 = trunc i8 %2684 to i1
  %2686 = load i32, ptr %92, align 4, !tbaa !77
  %2687 = load double, ptr %104, align 8, !tbaa !78
  invoke void @_ZN8presolve19HighsPostsolveStack12duplicateRowEibbid(ptr noundef nonnull align 8 dereferenceable(224) %2680, i32 noundef %2681, i1 noundef zeroext %2683, i1 noundef zeroext %2685, i32 noundef %2686, double noundef %2687)
          to label %2688 unwind label %2702

2688:                                             ; preds = %2679
  %2689 = load i32, ptr %92, align 4, !tbaa !77
  store i32 %2689, ptr %98, align 4, !tbaa !77
  %2690 = load i32, ptr %92, align 4, !tbaa !77
  invoke void @_ZN8presolve9HPresolve14markRowDeletedEi(ptr noundef nonnull align 8 dereferenceable(1720) %138, i32 noundef %2690)
          to label %2691 unwind label %2702

2691:                                             ; preds = %2688
  call void @llvm.lifetime.start.p0(i64 8, ptr %123) #9
  %2692 = getelementptr inbounds %"class.presolve::HPresolve", ptr %138, i32 0, i32 18
  store ptr %2692, ptr %123, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %124) #9
  %2693 = load ptr, ptr %123, align 8, !tbaa !5
  %2694 = call ptr @_ZNSt6vectorIiSaIiEE5beginEv(ptr noundef nonnull align 8 dereferenceable(24) %2693) #9
  %2695 = getelementptr inbounds %"class.__gnu_cxx::__normal_iterator", ptr %124, i32 0, i32 0
  store ptr %2694, ptr %2695, align 8
  call void @llvm.lifetime.start.p0(i64 8, ptr %125) #9
  %2696 = load ptr, ptr %123, align 8, !tbaa !5
  %2697 = call ptr @_ZNSt6vectorIiSaIiEE3endEv(ptr noundef nonnull align 8 dereferenceable(24) %2696) #9
  %2698 = getelementptr inbounds %"class.__gnu_cxx::__normal_iterator", ptr %125, i32 0, i32 0
  store ptr %2697, ptr %2698, align 8
  br label %2699

2699:                                             ; preds = %2711, %2691
  %2700 = call noundef zeroext i1 @_ZN9__gnu_cxxneIPiSt6vectorIiSaIiEEEEbRKNS_17__normal_iteratorIT_T0_EESA_(ptr noundef nonnull align 8 dereferenceable(8) %124, ptr noundef nonnull align 8 dereferenceable(8) %125) #9
  br i1 %2700, label %2706, label %2701

2701:                                             ; preds = %2699
  store i32 33, ptr %30, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %125) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr %124) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr %123) #9
  br label %2717

2702:                                             ; preds = %2688, %2679, %2677
  %2703 = landingpad { ptr, i32 }
          cleanup
  %2704 = extractvalue { ptr, i32 } %2703, 0
  store ptr %2704, ptr %12, align 8
  %2705 = extractvalue { ptr, i32 } %2703, 1
  store i32 %2705, ptr %13, align 4
  br label %2719

2706:                                             ; preds = %2699
  call void @llvm.lifetime.start.p0(i64 4, ptr %126) #9
  %2707 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNK9__gnu_cxx17__normal_iteratorIPiSt6vectorIiSaIiEEEdeEv(ptr noundef nonnull align 8 dereferenceable(8) %124) #9
  %2708 = load i32, ptr %2707, align 4, !tbaa !77
  store i32 %2708, ptr %126, align 4, !tbaa !77
  %2709 = load i32, ptr %126, align 4, !tbaa !77
  invoke void @_ZN8presolve9HPresolve6unlinkEi(ptr noundef nonnull align 8 dereferenceable(1720) %138, i32 noundef %2709)
          to label %2710 unwind label %2713

2710:                                             ; preds = %2706
  call void @llvm.lifetime.end.p0(i64 4, ptr %126) #9
  br label %2711

2711:                                             ; preds = %2710
  %2712 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZN9__gnu_cxx17__normal_iteratorIPiSt6vectorIiSaIiEEEppEv(ptr noundef nonnull align 8 dereferenceable(8) %124) #9
  br label %2699

2713:                                             ; preds = %2706
  %2714 = landingpad { ptr, i32 }
          cleanup
  %2715 = extractvalue { ptr, i32 } %2714, 0
  store ptr %2715, ptr %12, align 8
  %2716 = extractvalue { ptr, i32 } %2714, 1
  store i32 %2716, ptr %13, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %126) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr %125) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr %124) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr %123) #9
  br label %2719

2717:                                             ; preds = %2701
  store i32 30, ptr %30, align 4
  br label %2718

2718:                                             ; preds = %2717, %2585, %2470
  call void @llvm.lifetime.end.p0(i64 8, ptr %118) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr %117) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr %116) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr %115) #9
  br label %2870

2719:                                             ; preds = %2713, %2702
  call void @llvm.lifetime.end.p0(i64 8, ptr %118) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr %117) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr %116) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr %115) #9
  br label %2874

2720:                                             ; preds = %2403, %2400
  %2721 = getelementptr inbounds %"class.presolve::HPresolve", ptr %138, i32 0, i32 0
  %2722 = load ptr, ptr %2721, align 8, !tbaa !95
  %2723 = getelementptr inbounds %class.HighsLp, ptr %2722, i32 0, i32 5
  %2724 = load i32, ptr %92, align 4, !tbaa !77
  %2725 = sext i32 %2724 to i64
  %2726 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt6vectorIdSaIdEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %2723, i64 noundef %2725) #9
  %2727 = load double, ptr %2726, align 8, !tbaa !78
  %2728 = getelementptr inbounds %"class.presolve::HPresolve", ptr %138, i32 0, i32 0
  %2729 = load ptr, ptr %2728, align 8, !tbaa !95
  %2730 = getelementptr inbounds %class.HighsLp, ptr %2729, i32 0, i32 6
  %2731 = load i32, ptr %92, align 4, !tbaa !77
  %2732 = sext i32 %2731 to i64
  %2733 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt6vectorIdSaIdEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %2730, i64 noundef %2732) #9
  %2734 = load double, ptr %2733, align 8, !tbaa !78
  %2735 = fcmp oeq double %2727, %2734
  br i1 %2735, label %2736, label %2761

2736:                                             ; preds = %2720
  br label %2737

2737:                                             ; preds = %2736
  call void @llvm.lifetime.start.p0(i64 4, ptr %127) #9
  %2738 = load ptr, ptr %5, align 8, !tbaa !5
  %2739 = load i32, ptr %92, align 4, !tbaa !77
  %2740 = load i32, ptr %101, align 4, !tbaa !77
  %2741 = load double, ptr %104, align 8, !tbaa !78
  %2742 = fneg double %2741
  call void @llvm.lifetime.start.p0(i64 32, ptr %128) #9
  invoke void @_ZNK8presolve9HPresolve12getStoredRowEv(ptr dead_on_unwind writable sret(%struct.HighsTripletPositionSlice) align 8 %128, ptr noundef nonnull align 8 dereferenceable(1720) %138)
          to label %2743 unwind label %2750

2743:                                             ; preds = %2737
  %2744 = invoke noundef i32 @_ZN8presolve9HPresolve19equalityRowAdditionI25HighsTripletPositionSliceEENS0_6ResultERNS_19HighsPostsolveStackEiidRK16HighsMatrixSliceIT_E(ptr noundef nonnull align 8 dereferenceable(1720) %138, ptr noundef nonnull align 8 dereferenceable(224) %2738, i32 noundef %2739, i32 noundef %2740, double noundef %2742, ptr noundef nonnull align 8 dereferenceable(28) %128)
          to label %2745 unwind label %2750

2745:                                             ; preds = %2743
  call void @llvm.lifetime.end.p0(i64 32, ptr %128) #9
  store i32 %2744, ptr %127, align 4, !tbaa !114
  %2746 = load i32, ptr %127, align 4, !tbaa !114
  %2747 = icmp ne i32 %2746, 0
  br i1 %2747, label %2748, label %2754

2748:                                             ; preds = %2745
  %2749 = load i32, ptr %127, align 4, !tbaa !114
  store i32 %2749, ptr %3, align 4
  store i32 1, ptr %30, align 4
  br label %2755

2750:                                             ; preds = %2743, %2737
  %2751 = landingpad { ptr, i32 }
          cleanup
  %2752 = extractvalue { ptr, i32 } %2751, 0
  store ptr %2752, ptr %12, align 8
  %2753 = extractvalue { ptr, i32 } %2751, 1
  store i32 %2753, ptr %13, align 4
  call void @llvm.lifetime.end.p0(i64 32, ptr %128) #9
  call void @llvm.lifetime.end.p0(i64 4, ptr %127) #9
  br label %2874

2754:                                             ; preds = %2745
  store i32 0, ptr %30, align 4
  br label %2755

2755:                                             ; preds = %2754, %2748
  call void @llvm.lifetime.end.p0(i64 4, ptr %127) #9
  %2756 = load i32, ptr %30, align 4
  switch i32 %2756, label %2870 [
    i32 0, label %2757
  ]

2757:                                             ; preds = %2755
  br label %2758

2758:                                             ; preds = %2757
  br label %2759

2759:                                             ; preds = %2758
  %2760 = load i32, ptr %101, align 4, !tbaa !77
  store i32 %2760, ptr %98, align 4, !tbaa !77
  br label %2868

2761:                                             ; preds = %2720
  %2762 = getelementptr inbounds %"class.presolve::HPresolve", ptr %138, i32 0, i32 0
  %2763 = load ptr, ptr %2762, align 8, !tbaa !95
  %2764 = getelementptr inbounds %class.HighsLp, ptr %2763, i32 0, i32 5
  %2765 = load i32, ptr %101, align 4, !tbaa !77
  %2766 = sext i32 %2765 to i64
  %2767 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt6vectorIdSaIdEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %2764, i64 noundef %2766) #9
  %2768 = load double, ptr %2767, align 8, !tbaa !78
  %2769 = getelementptr inbounds %"class.presolve::HPresolve", ptr %138, i32 0, i32 0
  %2770 = load ptr, ptr %2769, align 8, !tbaa !95
  %2771 = getelementptr inbounds %class.HighsLp, ptr %2770, i32 0, i32 6
  %2772 = load i32, ptr %101, align 4, !tbaa !77
  %2773 = sext i32 %2772 to i64
  %2774 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt6vectorIdSaIdEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %2771, i64 noundef %2773) #9
  %2775 = load double, ptr %2774, align 8, !tbaa !78
  %2776 = fcmp oeq double %2768, %2775
  br i1 %2776, label %2777, label %2813

2777:                                             ; preds = %2761
  br label %2778

2778:                                             ; preds = %2777
  call void @llvm.lifetime.start.p0(i64 4, ptr %129) #9
  %2779 = load ptr, ptr %5, align 8, !tbaa !5
  %2780 = load i32, ptr %101, align 4, !tbaa !77
  %2781 = load i32, ptr %92, align 4, !tbaa !77
  %2782 = load i32, ptr %92, align 4, !tbaa !77
  %2783 = sext i32 %2782 to i64
  %2784 = call noundef nonnull align 8 dereferenceable(12) ptr @_ZNSt6vectorISt4pairIdiESaIS1_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %10, i64 noundef %2783) #9
  %2785 = getelementptr inbounds %"struct.std::pair.468", ptr %2784, i32 0, i32 0
  %2786 = load double, ptr %2785, align 8, !tbaa !80
  %2787 = fneg double %2786
  %2788 = load i32, ptr %101, align 4, !tbaa !77
  %2789 = sext i32 %2788 to i64
  %2790 = call noundef nonnull align 8 dereferenceable(12) ptr @_ZNSt6vectorISt4pairIdiESaIS1_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %10, i64 noundef %2789) #9
  %2791 = getelementptr inbounds %"struct.std::pair.468", ptr %2790, i32 0, i32 0
  %2792 = load double, ptr %2791, align 8, !tbaa !80
  %2793 = fdiv double %2787, %2792
  call void @llvm.lifetime.start.p0(i64 40, ptr %130) #9
  %2794 = load i32, ptr %101, align 4, !tbaa !77
  invoke void @_ZNK8presolve9HPresolve12getRowVectorEi(ptr dead_on_unwind writable sret(%struct.HighsTripletTreeSlicePreOrder) align 8 %130, ptr noundef nonnull align 8 dereferenceable(1720) %138, i32 noundef %2794)
          to label %2795 unwind label %2802

2795:                                             ; preds = %2778
  %2796 = invoke noundef i32 @_ZN8presolve9HPresolve19equalityRowAdditionI29HighsTripletTreeSlicePreOrderEENS0_6ResultERNS_19HighsPostsolveStackEiidRK16HighsMatrixSliceIT_E(ptr noundef nonnull align 8 dereferenceable(1720) %138, ptr noundef nonnull align 8 dereferenceable(224) %2779, i32 noundef %2780, i32 noundef %2781, double noundef %2793, ptr noundef nonnull align 8 dereferenceable(36) %130)
          to label %2797 unwind label %2802

2797:                                             ; preds = %2795
  call void @llvm.lifetime.end.p0(i64 40, ptr %130) #9
  store i32 %2796, ptr %129, align 4, !tbaa !114
  %2798 = load i32, ptr %129, align 4, !tbaa !114
  %2799 = icmp ne i32 %2798, 0
  br i1 %2799, label %2800, label %2806

2800:                                             ; preds = %2797
  %2801 = load i32, ptr %129, align 4, !tbaa !114
  store i32 %2801, ptr %3, align 4
  store i32 1, ptr %30, align 4
  br label %2807

2802:                                             ; preds = %2795, %2778
  %2803 = landingpad { ptr, i32 }
          cleanup
  %2804 = extractvalue { ptr, i32 } %2803, 0
  store ptr %2804, ptr %12, align 8
  %2805 = extractvalue { ptr, i32 } %2803, 1
  store i32 %2805, ptr %13, align 4
  call void @llvm.lifetime.end.p0(i64 40, ptr %130) #9
  call void @llvm.lifetime.end.p0(i64 4, ptr %129) #9
  br label %2874

2806:                                             ; preds = %2797
  store i32 0, ptr %30, align 4
  br label %2807

2807:                                             ; preds = %2806, %2800
  call void @llvm.lifetime.end.p0(i64 4, ptr %129) #9
  %2808 = load i32, ptr %30, align 4
  switch i32 %2808, label %2870 [
    i32 0, label %2809
  ]

2809:                                             ; preds = %2807
  br label %2810

2810:                                             ; preds = %2809
  br label %2811

2811:                                             ; preds = %2810
  %2812 = load i32, ptr %92, align 4, !tbaa !77
  store i32 %2812, ptr %98, align 4, !tbaa !77
  br label %2867

2813:                                             ; preds = %2761
  %2814 = load i32, ptr %97, align 4, !tbaa !77
  %2815 = icmp eq i32 %2814, 1
  br i1 %2815, label %2816, label %2817

2816:                                             ; preds = %2813
  br label %2819

2817:                                             ; preds = %2813
  call void @__assert_fail(ptr noundef @.str.163, ptr noundef @.str.55, i32 noundef 6355, ptr noundef @__PRETTY_FUNCTION__._ZN8presolve9HPresolve25detectParallelRowsAndColsERNS_19HighsPostsolveStackE) #10
  unreachable

2818:                                             ; No predecessors!
  br label %2819

2819:                                             ; preds = %2818, %2816
  %2820 = load i32, ptr %103, align 4, !tbaa !77
  %2821 = icmp eq i32 %2820, 1
  br i1 %2821, label %2822, label %2823

2822:                                             ; preds = %2819
  br label %2825

2823:                                             ; preds = %2819
  call void @__assert_fail(ptr noundef @.str.164, ptr noundef @.str.55, i32 noundef 6356, ptr noundef @__PRETTY_FUNCTION__._ZN8presolve9HPresolve25detectParallelRowsAndColsERNS_19HighsPostsolveStackE) #10
  unreachable

2824:                                             ; No predecessors!
  br label %2825

2825:                                             ; preds = %2824, %2822
  call void @llvm.lifetime.start.p0(i64 8, ptr %131) #9
  call void @llvm.lifetime.start.p0(i64 8, ptr %132) #9
  %2826 = load double, ptr %104, align 8, !tbaa !78
  %2827 = fcmp ogt double %2826, 0.000000e+00
  br i1 %2827, label %2828, label %2847

2828:                                             ; preds = %2825
  %2829 = getelementptr inbounds %"class.presolve::HPresolve", ptr %138, i32 0, i32 0
  %2830 = load ptr, ptr %2829, align 8, !tbaa !95
  %2831 = getelementptr inbounds %class.HighsLp, ptr %2830, i32 0, i32 6
  %2832 = load i32, ptr %92, align 4, !tbaa !77
  %2833 = sext i32 %2832 to i64
  %2834 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt6vectorIdSaIdEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %2831, i64 noundef %2833) #9
  %2835 = load double, ptr %2834, align 8, !tbaa !78
  %2836 = load double, ptr %104, align 8, !tbaa !78
  %2837 = fmul double %2835, %2836
  store double %2837, ptr %131, align 8, !tbaa !78
  %2838 = getelementptr inbounds %"class.presolve::HPresolve", ptr %138, i32 0, i32 0
  %2839 = load ptr, ptr %2838, align 8, !tbaa !95
  %2840 = getelementptr inbounds %class.HighsLp, ptr %2839, i32 0, i32 5
  %2841 = load i32, ptr %92, align 4, !tbaa !77
  %2842 = sext i32 %2841 to i64
  %2843 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt6vectorIdSaIdEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %2840, i64 noundef %2842) #9
  %2844 = load double, ptr %2843, align 8, !tbaa !78
  %2845 = load double, ptr %104, align 8, !tbaa !78
  %2846 = fmul double %2844, %2845
  store double %2846, ptr %132, align 8, !tbaa !78
  br label %2866

2847:                                             ; preds = %2825
  %2848 = getelementptr inbounds %"class.presolve::HPresolve", ptr %138, i32 0, i32 0
  %2849 = load ptr, ptr %2848, align 8, !tbaa !95
  %2850 = getelementptr inbounds %class.HighsLp, ptr %2849, i32 0, i32 6
  %2851 = load i32, ptr %92, align 4, !tbaa !77
  %2852 = sext i32 %2851 to i64
  %2853 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt6vectorIdSaIdEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %2850, i64 noundef %2852) #9
  %2854 = load double, ptr %2853, align 8, !tbaa !78
  %2855 = load double, ptr %104, align 8, !tbaa !78
  %2856 = fmul double %2854, %2855
  store double %2856, ptr %132, align 8, !tbaa !78
  %2857 = getelementptr inbounds %"class.presolve::HPresolve", ptr %138, i32 0, i32 0
  %2858 = load ptr, ptr %2857, align 8, !tbaa !95
  %2859 = getelementptr inbounds %class.HighsLp, ptr %2858, i32 0, i32 5
  %2860 = load i32, ptr %92, align 4, !tbaa !77
  %2861 = sext i32 %2860 to i64
  %2862 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt6vectorIdSaIdEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %2859, i64 noundef %2861) #9
  %2863 = load double, ptr %2862, align 8, !tbaa !78
  %2864 = load double, ptr %104, align 8, !tbaa !78
  %2865 = fmul double %2863, %2864
  store double %2865, ptr %131, align 8, !tbaa !78
  br label %2866

2866:                                             ; preds = %2847, %2828
  call void @llvm.lifetime.end.p0(i64 8, ptr %132) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr %131) #9
  br label %2867

2867:                                             ; preds = %2866, %2811
  br label %2868

2868:                                             ; preds = %2867, %2759
  br label %2869

2869:                                             ; preds = %2868
  store i32 0, ptr %30, align 4
  br label %2870

2870:                                             ; preds = %2869, %2807, %2755, %2718, %2399
  call void @llvm.lifetime.end.p0(i64 1, ptr %105) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr %104) #9
  br label %2871

2871:                                             ; preds = %2870, %2271, %2233, %2188, %2167
  call void @llvm.lifetime.end.p0(i64 4, ptr %103) #9
  call void @llvm.lifetime.end.p0(i64 4, ptr %101) #9
  %2872 = load i32, ptr %30, align 4
  switch i32 %2872, label %2922 [
    i32 0, label %2873
    i32 29, label %2129
    i32 30, label %2876
  ]

2873:                                             ; preds = %2871
  br label %2129, !llvm.loop !143

2874:                                             ; preds = %2802, %2750, %2719, %2395
  call void @llvm.lifetime.end.p0(i64 1, ptr %105) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr %104) #9
  br label %2875

2875:                                             ; preds = %2874, %2168
  call void @llvm.lifetime.end.p0(i64 4, ptr %103) #9
  call void @llvm.lifetime.end.p0(i64 4, ptr %101) #9
  br label %2929

2876:                                             ; preds = %2871, %2143
  %2877 = load i32, ptr %98, align 4, !tbaa !77
  %2878 = icmp ne i32 %2877, -1
  br i1 %2878, label %2879, label %2910

2879:                                             ; preds = %2876
  %2880 = load i32, ptr %98, align 4, !tbaa !77
  %2881 = load i32, ptr %92, align 4, !tbaa !77
  %2882 = icmp ne i32 %2880, %2881
  br i1 %2882, label %2883, label %2891

2883:                                             ; preds = %2879
  call void @llvm.memcpy.p0.p0.i64(ptr align 8 %133, ptr align 8 %95, i64 8, i1 false)
  %2884 = getelementptr inbounds %"struct.std::__detail::_Node_iterator.521", ptr %133, i32 0, i32 0
  %2885 = getelementptr inbounds %"struct.std::__detail::_Node_iterator_base.522", ptr %2884, i32 0, i32 0
  %2886 = load ptr, ptr %2885, align 8
  %2887 = invoke ptr @_ZNSt18unordered_multimapImiSt4hashImESt8equal_toImESaISt4pairIKmiEEE5eraseENSt8__detail14_Node_iteratorIS6_Lb0ELb0EEE(ptr noundef nonnull align 8 dereferenceable(56) %27, ptr %2886)
          to label %2888 unwind label %2124

2888:                                             ; preds = %2883
  %2889 = getelementptr inbounds %"struct.std::__detail::_Node_iterator.521", ptr %134, i32 0, i32 0
  %2890 = getelementptr inbounds %"struct.std::__detail::_Node_iterator_base.522", ptr %2889, i32 0, i32 0
  store ptr %2887, ptr %2890, align 8
  br label %2891

2891:                                             ; preds = %2888, %2879
  br label %2892

2892:                                             ; preds = %2891
  call void @llvm.lifetime.start.p0(i64 4, ptr %135) #9
  %2893 = load ptr, ptr %5, align 8, !tbaa !5
  %2894 = invoke noundef i32 @_ZN8presolve9HPresolve11checkLimitsERNS_19HighsPostsolveStackE(ptr noundef nonnull align 8 dereferenceable(1720) %138, ptr noundef nonnull align 8 dereferenceable(224) %2893)
          to label %2895 unwind label %2900

2895:                                             ; preds = %2892
  store i32 %2894, ptr %135, align 4, !tbaa !114
  %2896 = load i32, ptr %135, align 4, !tbaa !114
  %2897 = icmp ne i32 %2896, 0
  br i1 %2897, label %2898, label %2904

2898:                                             ; preds = %2895
  %2899 = load i32, ptr %135, align 4, !tbaa !114
  store i32 %2899, ptr %3, align 4
  store i32 1, ptr %30, align 4
  br label %2905

2900:                                             ; preds = %2892
  %2901 = landingpad { ptr, i32 }
          cleanup
  %2902 = extractvalue { ptr, i32 } %2901, 0
  store ptr %2902, ptr %12, align 8
  %2903 = extractvalue { ptr, i32 } %2901, 1
  store i32 %2903, ptr %13, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %135) #9
  br label %2929

2904:                                             ; preds = %2895
  store i32 0, ptr %30, align 4
  br label %2905

2905:                                             ; preds = %2904, %2898
  call void @llvm.lifetime.end.p0(i64 4, ptr %135) #9
  %2906 = load i32, ptr %30, align 4
  switch i32 %2906, label %2922 [
    i32 0, label %2907
  ]

2907:                                             ; preds = %2905
  br label %2908

2908:                                             ; preds = %2907
  br label %2909

2909:                                             ; preds = %2908
  br label %2921

2910:                                             ; preds = %2876
  call void @_ZNSt8__detail20_Node_const_iteratorISt4pairIKmiELb0ELb0EEC2ERKNS_14_Node_iteratorIS3_Lb0ELb0EEE(ptr noundef nonnull align 8 dereferenceable(8) %136, ptr noundef nonnull align 8 dereferenceable(8) %95) #9
  %2911 = load i32, ptr %92, align 4, !tbaa !77
  %2912 = sext i32 %2911 to i64
  %2913 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt6vectorImSaImEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %8, i64 noundef %2912) #9
  %2914 = getelementptr inbounds %"struct.std::__detail::_Node_const_iterator", ptr %136, i32 0, i32 0
  %2915 = getelementptr inbounds %"struct.std::__detail::_Node_iterator_base.522", ptr %2914, i32 0, i32 0
  %2916 = load ptr, ptr %2915, align 8
  %2917 = invoke ptr @_ZNSt18unordered_multimapImiSt4hashImESt8equal_toImESaISt4pairIKmiEEE12emplace_hintIJRmRiEEENSt8__detail14_Node_iteratorIS6_Lb0ELb0EEENSC_20_Node_const_iteratorIS6_Lb0ELb0EEEDpOT_(ptr noundef nonnull align 8 dereferenceable(56) %27, ptr %2916, ptr noundef nonnull align 8 dereferenceable(8) %2913, ptr noundef nonnull align 4 dereferenceable(4) %92)
          to label %2918 unwind label %2124

2918:                                             ; preds = %2910
  %2919 = getelementptr inbounds %"struct.std::__detail::_Node_iterator.521", ptr %137, i32 0, i32 0
  %2920 = getelementptr inbounds %"struct.std::__detail::_Node_iterator_base.522", ptr %2919, i32 0, i32 0
  store ptr %2917, ptr %2920, align 8
  br label %2921

2921:                                             ; preds = %2918, %2909
  store i32 0, ptr %30, align 4
  br label %2922

2922:                                             ; preds = %2921, %2905, %2871
  call void @llvm.lifetime.end.p0(i64 4, ptr %98) #9
  br label %2923

2923:                                             ; preds = %2922, %2107
  call void @llvm.lifetime.end.p0(i64 4, ptr %97) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr %96) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr %95) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr %94) #9
  %2924 = load i32, ptr %30, align 4
  switch i32 %2924, label %2932 [
    i32 0, label %2925
    i32 26, label %2926
  ]

2925:                                             ; preds = %2923
  br label %2926

2926:                                             ; preds = %2925, %2923, %2082, %2032
  %2927 = load i32, ptr %92, align 4, !tbaa !77
  %2928 = add nsw i32 %2927, 1
  store i32 %2928, ptr %92, align 4, !tbaa !77
  br label %2017, !llvm.loop !144

2929:                                             ; preds = %2900, %2875, %2124
  call void @llvm.lifetime.end.p0(i64 4, ptr %98) #9
  br label %2930

2930:                                             ; preds = %2929, %2112
  call void @llvm.lifetime.end.p0(i64 4, ptr %97) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr %96) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr %95) #9
  br label %2931

2931:                                             ; preds = %2930, %2108
  call void @llvm.lifetime.end.p0(i64 8, ptr %94) #9
  br label %2934

2932:                                             ; preds = %2923, %2078, %2024
  call void @llvm.lifetime.end.p0(i64 4, ptr %92) #9
  %2933 = load i32, ptr %30, align 4
  switch i32 %2933, label %2951 [
    i32 24, label %2935
  ]

2934:                                             ; preds = %2931, %2073
  call void @llvm.lifetime.end.p0(i64 4, ptr %92) #9
  br label %2953

2935:                                             ; preds = %2932
  %2936 = load i8, ptr %7, align 1, !tbaa !76, !range !74, !noundef !75
  %2937 = trunc i8 %2936 to i1
  %2938 = getelementptr inbounds %"class.presolve::HPresolve", ptr %138, i32 0, i32 58
  %2939 = getelementptr inbounds %class.HPresolveAnalysis, ptr %2938, i32 0, i32 9
  %2940 = zext i1 %2937 to i8
  store i8 %2940, ptr %2939, align 1, !tbaa !9
  %2941 = load i8, ptr %7, align 1, !tbaa !76, !range !74, !noundef !75
  %2942 = trunc i8 %2941 to i1
  br i1 %2942, label %2943, label %2950

2943:                                             ; preds = %2935
  %2944 = getelementptr inbounds %"class.presolve::HPresolve", ptr %138, i32 0, i32 58
  invoke void @_ZN17HPresolveAnalysis19stopPresolveRuleLogEi(ptr noundef nonnull align 8 dereferenceable(128) %2944, i32 noundef 13)
          to label %2945 unwind label %2946

2945:                                             ; preds = %2943
  br label %2950

2946:                                             ; preds = %2943
  %2947 = landingpad { ptr, i32 }
          cleanup
  %2948 = extractvalue { ptr, i32 } %2947, 0
  store ptr %2948, ptr %12, align 8
  %2949 = extractvalue { ptr, i32 } %2947, 1
  store i32 %2949, ptr %13, align 4
  br label %2953

2950:                                             ; preds = %2945, %2935
  store i32 0, ptr %3, align 4
  store i32 1, ptr %30, align 4
  br label %2951

2951:                                             ; preds = %2950, %2932, %2013
  call void @llvm.lifetime.end.p0(i64 1, ptr %28) #9
  call void @_ZNSt18unordered_multimapImiSt4hashImESt8equal_toImESaISt4pairIKmiEEED2Ev(ptr noundef nonnull align 8 dereferenceable(56) %27) #9
  call void @llvm.lifetime.end.p0(i64 56, ptr %27) #9
  call void @llvm.lifetime.end.p0(i64 4, ptr %17) #9
  call void @_ZN14HighsHashTableIiiED2Ev(ptr noundef nonnull align 8 dereferenceable(40) %16) #9
  call void @llvm.lifetime.end.p0(i64 40, ptr %16) #9
  call void @_ZNSt6vectorISt4pairIdiESaIS1_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %14) #9
  call void @llvm.lifetime.end.p0(i64 24, ptr %14) #9
  call void @_ZNSt6vectorISt4pairIdiESaIS1_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %10) #9
  call void @llvm.lifetime.end.p0(i64 24, ptr %10) #9
  call void @_ZNSt6vectorImSaImEED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %9) #9
  call void @llvm.lifetime.end.p0(i64 24, ptr %9) #9
  call void @_ZNSt6vectorImSaImEED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %8) #9
  call void @llvm.lifetime.end.p0(i64 24, ptr %8) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr %7) #9
  %2952 = load i32, ptr %3, align 4
  ret i32 %2952

2953:                                             ; preds = %2946, %2934, %2015
  call void @llvm.lifetime.end.p0(i64 1, ptr %28) #9
  call void @_ZNSt18unordered_multimapImiSt4hashImESt8equal_toImESaISt4pairIKmiEEED2Ev(ptr noundef nonnull align 8 dereferenceable(56) %27) #9
  call void @llvm.lifetime.end.p0(i64 56, ptr %27) #9
  br label %2954

2954:                                             ; preds = %2953, %585, %454, %210
  call void @llvm.lifetime.end.p0(i64 4, ptr %17) #9
  call void @_ZN14HighsHashTableIiiED2Ev(ptr noundef nonnull align 8 dereferenceable(40) %16) #9
  br label %2955

2955:                                             ; preds = %2954, %206
  call void @llvm.lifetime.end.p0(i64 40, ptr %16) #9
  call void @_ZNSt6vectorISt4pairIdiESaIS1_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %14) #9
  br label %2956

2956:                                             ; preds = %2955, %202
  call void @llvm.lifetime.end.p0(i64 24, ptr %14) #9
  call void @_ZNSt6vectorISt4pairIdiESaIS1_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %10) #9
  br label %2957

2957:                                             ; preds = %2956, %198
  call void @llvm.lifetime.end.p0(i64 24, ptr %10) #9
  call void @_ZNSt6vectorImSaImEED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %9) #9
  call void @llvm.lifetime.end.p0(i64 24, ptr %9) #9
  call void @_ZNSt6vectorImSaImEED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %8) #9
  call void @llvm.lifetime.end.p0(i64 24, ptr %8) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr %7) #9
  br label %2958

2958:                                             ; preds = %2957
  %2959 = load ptr, ptr %12, align 8
  %2960 = load i32, ptr %13, align 4
  %2961 = insertvalue { ptr, i32 } poison, ptr %2959, 0
  %2962 = insertvalue { ptr, i32 } %2961, i32 %2960, 1
  resume { ptr, i32 } %2962
}

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

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

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

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

; Function Attrs: mustprogress uwtable
declare dso_local void @_ZN14HighsHashTableIiiEC2Ev(ptr noundef nonnull align 8 dereferenceable(40)) unnamed_addr #5 align 2

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

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

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

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

; Function Attrs: mustprogress uwtable
declare dso_local noundef i32 @_ZN16HighsHashHelpers16double_hash_codeEd(double noundef) #5 align 2

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

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

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

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

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

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

; Function Attrs: mustprogress uwtable
declare dso_local { double, double } @_ZmldRK12HighsCDouble(double noundef, ptr noundef nonnull align 8 dereferenceable(16)) #5

; Function Attrs: inlinehint mustprogress uwtable
declare hidden noundef zeroext i1 @"_ZZN8presolve9HPresolve25detectParallelRowsAndColsERNS_19HighsPostsolveStackEENK3$_2clEv"(ptr noundef nonnull align 8 dereferenceable(48)) #8 align 2

; Function Attrs: inlinehint mustprogress nounwind uwtable
declare hidden noundef zeroext i1 @"_ZZN8presolve9HPresolve25detectParallelRowsAndColsERNS_19HighsPostsolveStackEENK3$_5clEv"(ptr noundef nonnull align 8 dereferenceable(32)) #3 align 2

; Function Attrs: inlinehint mustprogress nounwind uwtable
declare hidden noundef zeroext i1 @"_ZZN8presolve9HPresolve25detectParallelRowsAndColsERNS_19HighsPostsolveStackEENK3$_3clEv"(ptr noundef nonnull align 8 dereferenceable(48)) #3 align 2

; Function Attrs: inlinehint mustprogress nounwind uwtable
declare hidden noundef zeroext i1 @"_ZZN8presolve9HPresolve25detectParallelRowsAndColsERNS_19HighsPostsolveStackEENK3$_4clEv"(ptr noundef nonnull align 8 dereferenceable(32)) #3 align 2

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

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

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

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

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

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

; Function Attrs: mustprogress uwtable
declare dso_local void @_ZN8presolve19HighsPostsolveStack12duplicateRowEibbid(ptr noundef nonnull align 8 dereferenceable(224), i32 noundef, i1 noundef zeroext, i1 noundef zeroext, i32 noundef, double noundef) #5 align 2

; Function Attrs: mustprogress uwtable
declare dso_local noundef i32 @_ZN8presolve9HPresolve19equalityRowAdditionI25HighsTripletPositionSliceEENS0_6ResultERNS_19HighsPostsolveStackEiidRK16HighsMatrixSliceIT_E(ptr noundef nonnull align 8 dereferenceable(1720), ptr noundef nonnull align 8 dereferenceable(224), i32 noundef, i32 noundef, double noundef, ptr noundef nonnull align 8 dereferenceable(28)) #5 align 2

; Function Attrs: mustprogress uwtable
declare dso_local noundef i32 @_ZN8presolve9HPresolve19equalityRowAdditionI29HighsTripletTreeSlicePreOrderEENS0_6ResultERNS_19HighsPostsolveStackEiidRK16HighsMatrixSliceIT_E(ptr noundef nonnull align 8 dereferenceable(1720), ptr noundef nonnull align 8 dereferenceable(224), i32 noundef, i32 noundef, double noundef, ptr noundef nonnull align 8 dereferenceable(36)) #5 align 2

; Function Attrs: inlinehint mustprogress nounwind uwtable
declare dso_local void @_ZNSt18unordered_multimapImiSt4hashImESt8equal_toImESaISt4pairIKmiEEED2Ev(ptr noundef nonnull align 8 dereferenceable(56)) unnamed_addr #3 align 2

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

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

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

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


; 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.HighsTripletTreeSlicePreOrder = type { %class.HighsMatrixSlice.base.109, [4 x i8] }
%class.HighsMatrixSlice.base.109 = type <{ ptr, ptr, ptr, ptr, i32 }>
%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] }>
%"struct.std::_Bit_reference" = type { ptr, i64 }
%"class.std::vector.519" = type { %"struct.std::_Vector_base.520" }
%"struct.std::_Vector_base.520" = type { %"struct.std::_Vector_base<unsigned long, std::allocator<unsigned long>>::_Vector_impl" }
%"struct.std::_Vector_base<unsigned long, std::allocator<unsigned long>>::_Vector_impl" = type { %"struct.std::_Vector_base<unsigned long, std::allocator<unsigned long>>::_Vector_impl_data" }
%"struct.std::_Vector_base<unsigned long, std::allocator<unsigned long>>::_Vector_impl_data" = type { ptr, ptr, ptr }
%"class.std::vector.171" = type { %"struct.std::_Vector_base.172" }
%"struct.std::_Vector_base.172" = type { %"struct.std::_Vector_base<std::pair<double, int>, std::allocator<std::pair<double, int>>>::_Vector_impl" }
%"struct.std::_Vector_base<std::pair<double, int>, std::allocator<std::pair<double, int>>>::_Vector_impl" = type { %"struct.std::_Vector_base<std::pair<double, int>, std::allocator<std::pair<double, int>>>::_Vector_impl_data" }
%"struct.std::_Vector_base<std::pair<double, int>, std::allocator<std::pair<double, int>>>::_Vector_impl_data" = type { ptr, ptr, ptr }
%"class.std::allocator.173" = type { i8 }
%class.HighsHashTable.352 = type { %"class.std::unique_ptr.353", %"class.std::unique_ptr.203", i64, i64, i64 }
%"class.std::unique_ptr.353" = type { %"struct.std::__uniq_ptr_data.354" }
%"struct.std::__uniq_ptr_data.354" = type { %"class.std::__uniq_ptr_impl.355" }
%"class.std::__uniq_ptr_impl.355" = type { %"class.std::tuple.356" }
%"class.std::tuple.356" = type { %"struct.std::_Tuple_impl.357" }
%"struct.std::_Tuple_impl.357" = type { %"struct.std::_Head_base.360" }
%"struct.std::_Head_base.360" = type { ptr }
%"class.std::unique_ptr.203" = type { %"struct.std::__uniq_ptr_data.204" }
%"struct.std::__uniq_ptr_data.204" = type { %"class.std::__uniq_ptr_impl.205" }
%"class.std::__uniq_ptr_impl.205" = type { %"class.std::tuple.206" }
%"class.std::tuple.206" = type { %"struct.std::_Tuple_impl.207" }
%"struct.std::_Tuple_impl.207" = type { %"struct.std::_Head_base.210" }
%"struct.std::_Head_base.210" = type { ptr }
%"class.std::unordered_multimap" = type { %"class.std::_Hashtable.122" }
%"class.std::_Hashtable.122" = type { ptr, i64, %"struct.std::__detail::_Hash_node_base", i64, %"struct.std::__detail::_Prime_rehash_policy", ptr }
%"struct.std::__detail::_Hash_node_base" = type { ptr }
%"struct.std::__detail::_Prime_rehash_policy" = type { float, i64 }
%"struct.std::__detail::_Node_iterator.521" = type { %"struct.std::__detail::_Node_iterator_base.522" }
%"struct.std::__detail::_Node_iterator_base.522" = type { ptr }
%class.anon.526 = type { ptr }
%class.anon.527 = type { ptr }
%class.anon.528 = type { ptr, ptr, ptr, ptr, ptr, ptr }
%class.anon.529 = type { ptr, ptr, ptr, ptr, ptr, ptr }
%class.anon.530 = type { ptr, ptr, ptr, ptr }
%class.anon.531 = type { ptr, ptr, ptr, ptr }
%class.HighsCDouble = type { double, double }
%"struct.std::__detail::_Node_const_iterator" = type { %"struct.std::__detail::_Node_iterator_base.522" }
%class.anon.532 = type { ptr }
%"class.__gnu_cxx::__normal_iterator" = type { ptr }

@.str.55 = external hidden unnamed_addr constant [76 x i8], align 1
@.str.150 = external hidden unnamed_addr constant [56 x i8], align 1
@__PRETTY_FUNCTION__._ZN8presolve9HPresolve25detectParallelRowsAndColsERNS_19HighsPostsolveStackE = external hidden unnamed_addr constant [88 x i8], align 1
@.str.151 = external hidden unnamed_addr constant [21 x i8], align 1
@.str.152 = external hidden unnamed_addr constant [45 x i8], align 1
@.str.153 = external hidden unnamed_addr constant [26 x i8], align 1
@.str.154 = external hidden unnamed_addr constant [7 x i8], align 1
@.str.158 = external hidden unnamed_addr constant [15 x i8], align 1
@.str.159 = external hidden unnamed_addr constant [17 x i8], align 1
@.str.161 = external hidden unnamed_addr constant [30 x i8], align 1
@.str.163 = external hidden unnamed_addr constant [18 x i8], align 1
@.str.164 = external hidden unnamed_addr constant [27 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 @_ZNK8presolve9HPresolve12getRowVectorEi(ptr dead_on_unwind noalias writable sret(%struct.HighsTripletTreeSlicePreOrder) align 8, ptr noundef nonnull align 8 dereferenceable(1720), i32 noundef) local_unnamed_addr #4 align 2

; Function Attrs: inlinehint mustprogress nounwind uwtable
declare dso_local noundef double @_Z13fractionalityIdET_S0_PS0_(double noundef, ptr noundef) local_unnamed_addr #2

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

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

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

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

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

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

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

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

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

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

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

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

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

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

; Function Attrs: mustprogress uwtable
declare dso_local void @_ZN8presolve9HPresolve25resetRowDualImpliedBoundsEii(ptr noundef nonnull align 8 dereferenceable(1720), i32 noundef, i32 noundef) local_unnamed_addr #4 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 noundef i64 @_ZNKSt6vectorIdSaIdEE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24)) local_unnamed_addr #1 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 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 zeroext i1 @_ZN8presolve9HPresolve24fixColToLowerOrUnboundedERNS_19HighsPostsolveStackEi(ptr noundef nonnull align 8 dereferenceable(1720), ptr noundef nonnull align 8 dereferenceable(224), i32 noundef) local_unnamed_addr #4 align 2

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

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

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

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

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

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

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

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

; 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: mustprogress uwtable
declare dso_local { double, double } @_ZmidRK12HighsCDouble(double noundef, ptr noundef nonnull align 8 dereferenceable(16)) local_unnamed_addr #4

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

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

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

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

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

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

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

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

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

; Function Attrs: mustprogress uwtable
define dso_local noundef i32 @_ZN8presolve9HPresolve25detectParallelRowsAndColsERNS_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 %"struct.std::_Bit_reference", align 8
  %4 = alloca %"class.std::vector.519", align 8
  %5 = alloca %"class.std::vector.519", align 8
  %6 = alloca %"class.std::vector.171", align 8
  %7 = alloca %"class.std::allocator.173", align 1
  %8 = alloca %"class.std::vector.171", align 8
  %9 = alloca %"class.std::allocator.173", align 1
  %10 = alloca %class.HighsHashTable.352, align 8
  %11 = alloca %"class.std::unordered_multimap", align 8
  %12 = alloca i32, align 4
  %13 = alloca %"struct.std::__detail::_Node_iterator.521", align 8
  %14 = alloca %"struct.std::__detail::_Node_iterator.521", align 8
  %15 = alloca %"struct.std::__detail::_Node_iterator.521", align 8
  %16 = alloca i32, align 4
  %17 = alloca i32, align 4
  %18 = alloca double, align 8
  %19 = alloca i8, align 1
  %20 = alloca i8, align 1
  %21 = alloca %class.anon.526, align 8
  %22 = alloca %class.anon.527, align 8
  %23 = alloca %class.anon.528, align 8
  %24 = alloca %class.anon.529, align 8
  %25 = alloca %class.anon.530, align 8
  %26 = alloca %class.anon.531, align 8
  %27 = alloca %class.HighsCDouble, align 8
  %28 = alloca %class.HighsCDouble, align 8
  %29 = alloca %class.HighsCDouble, align 8
  %30 = alloca %struct.HighsTripletListSlice, align 8
  %31 = alloca %"class.HighsMatrixSlice<HighsTripletListSlice>::iterator", align 8
  %32 = alloca %"class.HighsMatrixSlice<HighsTripletListSlice>::iterator", align 8
  %33 = alloca %class.HighsCDouble, align 8
  %34 = alloca %class.HighsCDouble, align 8
  %35 = alloca %class.HighsCDouble, align 8
  %36 = alloca i32, align 4
  %37 = alloca i32, align 4
  %38 = alloca i32, align 4
  %39 = alloca i32, align 4
  %40 = alloca i32, align 4
  %41 = alloca %"struct.std::__detail::_Node_const_iterator", align 8
  %42 = alloca i32, align 4
  %43 = alloca %"struct.std::__detail::_Node_iterator.521", align 8
  %44 = alloca %"struct.std::__detail::_Node_iterator.521", align 8
  %45 = alloca %class.anon.532, align 8
  %46 = alloca %"struct.std::__detail::_Node_iterator.521", align 8
  %47 = alloca %"struct.std::__detail::_Node_iterator.521", align 8
  %48 = alloca %struct.HighsTripletPositionSlice, align 8
  %49 = alloca %"class.HighsMatrixSlice<HighsTripletPositionSlice>::iterator", align 8
  %50 = alloca %"class.HighsMatrixSlice<HighsTripletPositionSlice>::iterator", align 8
  %51 = alloca %class.HighsCDouble, align 8
  %52 = alloca %class.HighsCDouble, align 8
  %53 = alloca %class.HighsCDouble, align 8
  %54 = alloca %"class.__gnu_cxx::__normal_iterator", align 8
  %55 = alloca %"class.__gnu_cxx::__normal_iterator", align 8
  %56 = alloca %struct.HighsTripletPositionSlice, align 8
  %57 = alloca %struct.HighsTripletTreeSlicePreOrder, align 8
  %58 = alloca %"struct.std::__detail::_Node_const_iterator", align 8
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %3) #8
  %59 = getelementptr inbounds i8, ptr %0, i64 1592
  %60 = getelementptr inbounds i8, ptr %0, i64 1640
  %61 = tail call { ptr, i64 } @_ZNSt6vectorIbSaIbEEixEm(ptr noundef nonnull align 8 dereferenceable(40) %60, i64 noundef 13)
  %62 = extractvalue { ptr, i64 } %61, 0
  store ptr %62, ptr %3, align 8
  %63 = getelementptr inbounds i8, ptr %3, i64 8
  %64 = extractvalue { ptr, i64 } %61, 1
  store i64 %64, ptr %63, align 8
  %65 = call noundef zeroext i1 @_ZNKSt14_Bit_referencecvbEv(ptr noundef nonnull align 8 dereferenceable(16) %3) #8
  br i1 %65, label %67, label %66

66:                                               ; preds = %2
  call void @__assert_fail(ptr noundef nonnull @.str.150, ptr noundef nonnull @.str.55, i32 noundef 5634, ptr noundef nonnull @__PRETTY_FUNCTION__._ZN8presolve9HPresolve25detectParallelRowsAndColsERNS_19HighsPostsolveStackE) #9
  unreachable

67:                                               ; preds = %2
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %3) #8
  %68 = getelementptr inbounds i8, ptr %0, i64 1681
  %69 = load i8, ptr %68, align 1, !tbaa !5, !range !73, !noundef !74
  %70 = trunc nuw i8 %69 to i1
  br i1 %70, label %71, label %72

71:                                               ; preds = %67
  call void @_ZN17HPresolveAnalysis20startPresolveRuleLogEi(ptr noundef nonnull align 8 dereferenceable(128) %59, i32 noundef 13)
  br label %72

72:                                               ; preds = %71, %67
  call void @llvm.lifetime.start.p0(i64 24, ptr nonnull %4) #8
  call void @_ZNSt6vectorImSaImEEC2Ev(ptr noundef nonnull align 8 dereferenceable(24) %4) #8
  call void @llvm.lifetime.start.p0(i64 24, ptr nonnull %5) #8
  call void @_ZNSt6vectorImSaImEEC2Ev(ptr noundef nonnull align 8 dereferenceable(24) %5) #8
  call void @llvm.lifetime.start.p0(i64 24, ptr nonnull %6) #8
  %73 = getelementptr inbounds i8, ptr %0, i64 256
  %74 = call noundef i64 @_ZNKSt6vectorIiSaIiEE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24) %73) #8
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %7) #8
  call void @_ZNSaISt4pairIdiEEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %7) #8
  invoke void @_ZNSt6vectorISt4pairIdiESaIS1_EEC2EmRKS2_(ptr noundef nonnull align 8 dereferenceable(24) %6, i64 noundef %74, ptr noundef nonnull align 1 dereferenceable(1) %7)
          to label %75 unwind label %98

75:                                               ; preds = %72
  call void @_ZNSt15__new_allocatorISt4pairIdiEED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %7) #8
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %7) #8
  call void @llvm.lifetime.start.p0(i64 24, ptr nonnull %8) #8
  %76 = getelementptr inbounds i8, ptr %0, i64 328
  %77 = call noundef i64 @_ZNKSt6vectorIiSaIiEE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24) %76) #8
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %9) #8
  call void @_ZNSaISt4pairIdiEEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %9) #8
  invoke void @_ZNSt6vectorISt4pairIdiESaIS1_EEC2EmRKS2_(ptr noundef nonnull align 8 dereferenceable(24) %8, i64 noundef %77, ptr noundef nonnull align 1 dereferenceable(1) %9)
          to label %78 unwind label %100

78:                                               ; preds = %75
  call void @_ZNSt15__new_allocatorISt4pairIdiEED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %9) #8
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %9) #8
  call void @llvm.lifetime.start.p0(i64 40, ptr nonnull %10) #8
  invoke void @_ZN14HighsHashTableIiiEC2Ev(ptr noundef nonnull align 8 dereferenceable(40) %10)
          to label %79 unwind label %102

79:                                               ; preds = %78
  %80 = getelementptr inbounds i8, ptr %0, i64 40
  %81 = call noundef i64 @_ZNKSt6vectorIdSaIdEE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24) %80) #8
  %82 = call ptr @_ZNSt6vectorIiSaIiEE5beginEv(ptr noundef nonnull align 8 dereferenceable(24) %73) #8
  %83 = call ptr @_ZNSt6vectorIiSaIiEE3endEv(ptr noundef nonnull align 8 dereferenceable(24) %73) #8
  invoke void @_ZNSt6vectorImSaImEE6assignIN9__gnu_cxx17__normal_iteratorIPiS_IiSaIiEEEEvEEvT_S9_(ptr noundef nonnull align 8 dereferenceable(24) %4, ptr %82, ptr %83)
          to label %84 unwind label %104

84:                                               ; preds = %79
  %85 = call ptr @_ZNSt6vectorIiSaIiEE5beginEv(ptr noundef nonnull align 8 dereferenceable(24) %76) #8
  %86 = call ptr @_ZNSt6vectorIiSaIiEE3endEv(ptr noundef nonnull align 8 dereferenceable(24) %76) #8
  invoke void @_ZNSt6vectorImSaImEE6assignIN9__gnu_cxx17__normal_iteratorIPiS_IiSaIiEEEEvEEvT_S9_(ptr noundef nonnull align 8 dereferenceable(24) %5, ptr %85, ptr %86)
          to label %.preheader598 unwind label %104

.preheader598:                                    ; preds = %84
  %87 = and i64 %81, 4294967295
  %.not661 = icmp eq i64 %87, 0
  br i1 %.not661, label %._crit_edge, label %.lr.ph

.lr.ph:                                           ; preds = %.preheader598
  %88 = getelementptr inbounds i8, ptr %0, i64 1504
  %89 = getelementptr inbounds i8, ptr %0, i64 88
  %90 = getelementptr inbounds i8, ptr %0, i64 64
  %91 = getelementptr inbounds i8, ptr %0, i64 8
  %92 = and i64 %81, 4294967295
  br label %106

.preheader597:                                    ; preds = %223
  br i1 %.not661, label %._crit_edge, label %.lr.ph665

.lr.ph665:                                        ; preds = %.preheader597
  %93 = getelementptr inbounds i8, ptr %0, i64 1480
  %94 = getelementptr inbounds i8, ptr %0, i64 64
  %95 = getelementptr inbounds i8, ptr %0, i64 1504
  %96 = getelementptr inbounds i8, ptr %0, i64 88
  %97 = and i64 %81, 4294967295
  br label %254

98:                                               ; preds = %72
  %99 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt15__new_allocatorISt4pairIdiEED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %7) #8
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %7) #8
  br label %1604

100:                                              ; preds = %75
  %101 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt15__new_allocatorISt4pairIdiEED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %9) #8
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %9) #8
  br label %1603

102:                                              ; preds = %78
  %103 = landingpad { ptr, i32 }
          cleanup
  br label %1602

104:                                              ; preds = %84, %79
  %105 = landingpad { ptr, i32 }
          cleanup
  br label %1601

106:                                              ; preds = %.lr.ph, %223
  %indvars.iv = phi i64 [ 0, %.lr.ph ], [ %indvars.iv.next, %223 ]
  %107 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt6vectorIdSaIdEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %80, i64 noundef %indvars.iv) #8
  %108 = load double, ptr %107, align 8, !tbaa !75
  %109 = fcmp oeq double %108, 0.000000e+00
  br i1 %109, label %223, label %110

110:                                              ; preds = %106
  %111 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNSt6vectorIiSaIiEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %89, i64 noundef %indvars.iv) #8
  %112 = load i32, ptr %111, align 4, !tbaa !76
  %113 = sext i32 %112 to i64
  %114 = call noundef nonnull align 1 dereferenceable(1) ptr @_ZNSt6vectorIhSaIhEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %88, i64 noundef %113) #8
  %115 = load i8, ptr %114, align 1, !tbaa !77
  %.not503 = icmp eq i8 %115, 0
  br i1 %.not503, label %117, label %116

116:                                              ; preds = %110
  call void @__assert_fail(ptr noundef nonnull @.str.151, ptr noundef nonnull @.str.55, i32 noundef 5654, ptr noundef nonnull @__PRETTY_FUNCTION__._ZN8presolve9HPresolve25detectParallelRowsAndColsERNS_19HighsPostsolveStackE) #9
  unreachable

117:                                              ; preds = %110
  %118 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNSt6vectorIiSaIiEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %89, i64 noundef %indvars.iv) #8
  %119 = load i32, ptr %118, align 4, !tbaa !76
  %120 = sext i32 %119 to i64
  %121 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNSt6vectorIiSaIiEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %76, i64 noundef %120) #8
  %122 = load i32, ptr %121, align 4, !tbaa !76
  %123 = icmp eq i32 %122, 1
  %124 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt6vectorIdSaIdEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %80, i64 noundef %indvars.iv) #8
  %125 = load double, ptr %124, align 8, !tbaa !75
  br i1 %123, label %126, label %144

126:                                              ; preds = %117
  %127 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNSt6vectorIiSaIiEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %89, i64 noundef %indvars.iv) #8
  %128 = load i32, ptr %127, align 4, !tbaa !76
  %129 = sext i32 %128 to i64
  %130 = call noundef nonnull align 8 dereferenceable(12) ptr @_ZNSt6vectorISt4pairIdiESaIS1_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %8, i64 noundef %129) #8
  store double %125, ptr %130, align 8, !tbaa !78
  %131 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNSt6vectorIiSaIiEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %90, i64 noundef %indvars.iv) #8
  %132 = load i32, ptr %131, align 4, !tbaa !76
  %133 = sext i32 %132 to i64
  %134 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt6vectorImSaImEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %4, i64 noundef %133) #8
  %135 = load i64, ptr %134, align 8, !tbaa !80
  %136 = add i64 %135, -1
  store i64 %136, ptr %134, align 8, !tbaa !80
  %137 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNSt6vectorIiSaIiEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %90, i64 noundef %indvars.iv) #8
  %138 = invoke noundef nonnull align 4 dereferenceable(4) ptr @_ZN14HighsHashTableIiiEixERKi(ptr noundef nonnull align 8 dereferenceable(40) %10, ptr noundef nonnull align 4 dereferenceable(4) %137)
          to label %139 unwind label %142

139:                                              ; preds = %126
  %140 = load i32, ptr %138, align 4, !tbaa !76
  %141 = add nsw i32 %140, 1
  store i32 %141, ptr %138, align 4, !tbaa !76
  br label %223

142:                                              ; preds = %126
  %143 = landingpad { ptr, i32 }
          cleanup
  br label %1601

144:                                              ; preds = %117
  %145 = call noundef double @_ZSt3absd(double noundef %125)
  %146 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNSt6vectorIiSaIiEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %90, i64 noundef %indvars.iv) #8
  %147 = load i32, ptr %146, align 4, !tbaa !76
  %148 = sext i32 %147 to i64
  %149 = call noundef nonnull align 8 dereferenceable(12) ptr @_ZNSt6vectorISt4pairIdiESaIS1_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %6, i64 noundef %148) #8
  %150 = load double, ptr %149, align 8, !tbaa !78
  %151 = call noundef double @_ZSt3absd(double noundef %150)
  %152 = load ptr, ptr %91, align 8, !tbaa !81
  %153 = getelementptr inbounds i8, ptr %152, i64 264
  %154 = load double, ptr %153, align 8, !tbaa !82
  %155 = fsub double %151, %154
  %156 = fcmp ult double %145, %155
  br i1 %156, label %184, label %157

157:                                              ; preds = %144
  %158 = fadd double %151, %154
  %159 = fcmp ogt double %145, %158
  br i1 %159, label %170, label %160

160:                                              ; preds = %157
  %161 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNSt6vectorIiSaIiEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %89, i64 noundef %indvars.iv) #8
  %162 = load i32, ptr %161, align 4, !tbaa !76
  %163 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNSt6vectorIiSaIiEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %90, i64 noundef %indvars.iv) #8
  %164 = load i32, ptr %163, align 4, !tbaa !76
  %165 = sext i32 %164 to i64
  %166 = call noundef nonnull align 8 dereferenceable(12) ptr @_ZNSt6vectorISt4pairIdiESaIS1_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %6, i64 noundef %165) #8
  %167 = getelementptr inbounds i8, ptr %166, i64 8
  %168 = load i32, ptr %167, align 8, !tbaa !89
  %169 = icmp slt i32 %162, %168
  br i1 %169, label %170, label %184

170:                                              ; preds = %160, %157
  %171 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt6vectorIdSaIdEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %80, i64 noundef %indvars.iv) #8
  %172 = load double, ptr %171, align 8, !tbaa !75
  %173 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNSt6vectorIiSaIiEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %90, i64 noundef %indvars.iv) #8
  %174 = load i32, ptr %173, align 4, !tbaa !76
  %175 = sext i32 %174 to i64
  %176 = call noundef nonnull align 8 dereferenceable(12) ptr @_ZNSt6vectorISt4pairIdiESaIS1_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %6, i64 noundef %175) #8
  store double %172, ptr %176, align 8, !tbaa !78
  %177 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNSt6vectorIiSaIiEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %89, i64 noundef %indvars.iv) #8
  %178 = load i32, ptr %177, align 4, !tbaa !76
  %179 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNSt6vectorIiSaIiEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %90, i64 noundef %indvars.iv) #8
  %180 = load i32, ptr %179, align 4, !tbaa !76
  %181 = sext i32 %180 to i64
  %182 = call noundef nonnull align 8 dereferenceable(12) ptr @_ZNSt6vectorISt4pairIdiESaIS1_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %6, i64 noundef %181) #8
  %183 = getelementptr inbounds i8, ptr %182, i64 8
  store i32 %178, ptr %183, align 8, !tbaa !89
  br label %184

184:                                              ; preds = %160, %170, %144
  %185 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNSt6vectorIiSaIiEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %89, i64 noundef %indvars.iv) #8
  %186 = load i32, ptr %185, align 4, !tbaa !76
  %187 = sext i32 %186 to i64
  %188 = call noundef nonnull align 8 dereferenceable(12) ptr @_ZNSt6vectorISt4pairIdiESaIS1_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %8, i64 noundef %187) #8
  %189 = load double, ptr %188, align 8, !tbaa !78
  %190 = call noundef double @_ZSt3absd(double noundef %189)
  %191 = load ptr, ptr %91, align 8, !tbaa !81
  %192 = getelementptr inbounds i8, ptr %191, i64 264
  %193 = load double, ptr %192, align 8, !tbaa !82
  %194 = fsub double %190, %193
  %195 = fcmp ult double %145, %194
  br i1 %195, label %223, label %196

196:                                              ; preds = %184
  %197 = fadd double %190, %193
  %198 = fcmp ogt double %145, %197
  br i1 %198, label %209, label %199

199:                                              ; preds = %196
  %200 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNSt6vectorIiSaIiEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %90, i64 noundef %indvars.iv) #8
  %201 = load i32, ptr %200, align 4, !tbaa !76
  %202 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNSt6vectorIiSaIiEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %89, i64 noundef %indvars.iv) #8
  %203 = load i32, ptr %202, align 4, !tbaa !76
  %204 = sext i32 %203 to i64
  %205 = call noundef nonnull align 8 dereferenceable(12) ptr @_ZNSt6vectorISt4pairIdiESaIS1_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %8, i64 noundef %204) #8
  %206 = getelementptr inbounds i8, ptr %205, i64 8
  %207 = load i32, ptr %206, align 8, !tbaa !89
  %208 = icmp slt i32 %201, %207
  br i1 %208, label %209, label %223

209:                                              ; preds = %199, %196
  %210 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt6vectorIdSaIdEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %80, i64 noundef %indvars.iv) #8
  %211 = load double, ptr %210, align 8, !tbaa !75
  %212 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNSt6vectorIiSaIiEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %89, i64 noundef %indvars.iv) #8
  %213 = load i32, ptr %212, align 4, !tbaa !76
  %214 = sext i32 %213 to i64
  %215 = call noundef nonnull align 8 dereferenceable(12) ptr @_ZNSt6vectorISt4pairIdiESaIS1_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %8, i64 noundef %214) #8
  store double %211, ptr %215, align 8, !tbaa !78
  %216 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNSt6vectorIiSaIiEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %90, i64 noundef %indvars.iv) #8
  %217 = load i32, ptr %216, align 4, !tbaa !76
  %218 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNSt6vectorIiSaIiEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %89, i64 noundef %indvars.iv) #8
  %219 = load i32, ptr %218, align 4, !tbaa !76
  %220 = sext i32 %219 to i64
  %221 = call noundef nonnull align 8 dereferenceable(12) ptr @_ZNSt6vectorISt4pairIdiESaIS1_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %8, i64 noundef %220) #8
  %222 = getelementptr inbounds i8, ptr %221, i64 8
  store i32 %217, ptr %222, align 8, !tbaa !89
  br label %223

223:                                              ; preds = %184, %209, %199, %106, %139
  %indvars.iv.next = add nuw nsw i64 %indvars.iv, 1
  %.not = icmp eq i64 %indvars.iv.next, %92
  br i1 %.not, label %.preheader597, label %106, !llvm.loop !90

._crit_edge:                                      ; preds = %320, %.preheader598, %.preheader597
  call void @llvm.lifetime.start.p0(i64 56, ptr nonnull %11) #8
  call void @_ZNSt18unordered_multimapImiSt4hashImESt8equal_toImESaISt4pairIKmiEEEC2Ev(ptr noundef nonnull align 8 dereferenceable(56) %11) #8
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %12) #8
  store i32 0, ptr %12, align 4, !tbaa !76
  %224 = load ptr, ptr %0, align 8, !tbaa !92
  %225 = load i32, ptr %224, align 8, !tbaa !93
  %.not437673 = icmp eq i32 %225, 0
  br i1 %.not437673, label %._crit_edge677, label %.lr.ph676

.lr.ph676:                                        ; preds = %._crit_edge
  %226 = getelementptr inbounds i8, ptr %0, i64 1504
  %227 = getelementptr inbounds i8, ptr %23, i64 8
  %228 = getelementptr inbounds i8, ptr %23, i64 16
  %229 = getelementptr inbounds i8, ptr %23, i64 24
  %230 = getelementptr inbounds i8, ptr %23, i64 32
  %231 = getelementptr inbounds i8, ptr %23, i64 40
  %232 = getelementptr inbounds i8, ptr %24, i64 8
  %233 = getelementptr inbounds i8, ptr %24, i64 16
  %234 = getelementptr inbounds i8, ptr %24, i64 24
  %235 = getelementptr inbounds i8, ptr %24, i64 32
  %236 = getelementptr inbounds i8, ptr %24, i64 40
  %237 = getelementptr inbounds i8, ptr %25, i64 8
  %238 = getelementptr inbounds i8, ptr %25, i64 16
  %239 = getelementptr inbounds i8, ptr %25, i64 24
  %240 = getelementptr inbounds i8, ptr %26, i64 8
  %241 = getelementptr inbounds i8, ptr %26, i64 16
  %242 = getelementptr inbounds i8, ptr %26, i64 24
  %243 = getelementptr inbounds i8, ptr %0, i64 8
  %244 = getelementptr inbounds i8, ptr %28, i64 8
  %245 = getelementptr inbounds i8, ptr %27, i64 8
  %246 = getelementptr inbounds i8, ptr %0, i64 32
  %247 = getelementptr inbounds i8, ptr %34, i64 8
  %248 = getelementptr inbounds i8, ptr %33, i64 8
  %249 = getelementptr inbounds i8, ptr %0, i64 64
  %250 = getelementptr inbounds i8, ptr %0, i64 112
  %251 = getelementptr inbounds i8, ptr %0, i64 88
  %252 = getelementptr inbounds i8, ptr %0, i64 280
  %253 = getelementptr inbounds i8, ptr %0, i64 136
  br label %321

254:                                              ; preds = %.lr.ph665, %320
  %indvars.iv750 = phi i64 [ 0, %.lr.ph665 ], [ %indvars.iv.next751, %320 ]
  %255 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt6vectorIdSaIdEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %80, i64 noundef %indvars.iv750) #8
  %256 = load double, ptr %255, align 8, !tbaa !75
  %257 = fcmp oeq double %256, 0.000000e+00
  br i1 %257, label %320, label %258

258:                                              ; preds = %254
  %259 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNSt6vectorIiSaIiEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %94, i64 noundef %indvars.iv750) #8
  %260 = load i32, ptr %259, align 4, !tbaa !76
  %261 = sext i32 %260 to i64
  %262 = call noundef nonnull align 1 dereferenceable(1) ptr @_ZNSt6vectorIhSaIhEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %93, i64 noundef %261) #8
  %263 = load i8, ptr %262, align 1, !tbaa !77
  %.not501 = icmp eq i8 %263, 0
  br i1 %.not501, label %264, label %.critedge

264:                                              ; preds = %258
  %265 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNSt6vectorIiSaIiEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %96, i64 noundef %indvars.iv750) #8
  %266 = load i32, ptr %265, align 4, !tbaa !76
  %267 = sext i32 %266 to i64
  %268 = call noundef nonnull align 1 dereferenceable(1) ptr @_ZNSt6vectorIhSaIhEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %95, i64 noundef %267) #8
  %269 = load i8, ptr %268, align 1, !tbaa !77
  %.not502 = icmp eq i8 %269, 0
  br i1 %.not502, label %270, label %.critedge

.critedge:                                        ; preds = %258, %264
  call void @__assert_fail(ptr noundef nonnull @.str.152, ptr noundef nonnull @.str.55, i32 noundef 5693, ptr noundef nonnull @__PRETTY_FUNCTION__._ZN8presolve9HPresolve25detectParallelRowsAndColsERNS_19HighsPostsolveStackE) #9
  unreachable

270:                                              ; preds = %264
  %271 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNSt6vectorIiSaIiEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %96, i64 noundef %indvars.iv750) #8
  %272 = load i32, ptr %271, align 4, !tbaa !76
  %273 = sext i32 %272 to i64
  %274 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNSt6vectorIiSaIiEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %76, i64 noundef %273) #8
  %275 = load i32, ptr %274, align 4, !tbaa !76
  %276 = icmp eq i32 %275, 1
  %277 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNSt6vectorIiSaIiEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %94, i64 noundef %indvars.iv750) #8
  %278 = load i32, ptr %277, align 4, !tbaa !76
  %279 = sext i32 %278 to i64
  br i1 %276, label %280, label %285

280:                                              ; preds = %270
  %281 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNSt6vectorIiSaIiEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %96, i64 noundef %indvars.iv750) #8
  %282 = load i32, ptr %281, align 4, !tbaa !76
  %283 = sext i32 %282 to i64
  %284 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt6vectorImSaImEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %5, i64 noundef %283) #8
  store i64 %279, ptr %284, align 8, !tbaa !80
  br label %320

285:                                              ; preds = %270
  %286 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt6vectorImSaImEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %4, i64 noundef %279) #8
  %287 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNSt6vectorIiSaIiEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %96, i64 noundef %indvars.iv750) #8
  %288 = load i32, ptr %287, align 4, !tbaa !76
  %289 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt6vectorIdSaIdEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %80, i64 noundef %indvars.iv750) #8
  %290 = load double, ptr %289, align 8, !tbaa !75
  %291 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNSt6vectorIiSaIiEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %94, i64 noundef %indvars.iv750) #8
  %292 = load i32, ptr %291, align 4, !tbaa !76
  %293 = sext i32 %292 to i64
  %294 = call noundef nonnull align 8 dereferenceable(12) ptr @_ZNSt6vectorISt4pairIdiESaIS1_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %6, i64 noundef %293) #8
  %295 = load double, ptr %294, align 8, !tbaa !78
  %296 = fdiv double %290, %295
  %297 = invoke noundef i32 @_ZN16HighsHashHelpers16double_hash_codeEd(double noundef %296)
          to label %298 unwind label %318

298:                                              ; preds = %285
  %299 = zext i32 %297 to i64
  invoke void @_ZN16HighsHashHelpers14sparse_combineERmim(ptr noundef nonnull align 8 dereferenceable(8) %286, i32 noundef %288, i64 noundef %299)
          to label %300 unwind label %318

300:                                              ; preds = %298
  %301 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNSt6vectorIiSaIiEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %96, i64 noundef %indvars.iv750) #8
  %302 = load i32, ptr %301, align 4, !tbaa !76
  %303 = sext i32 %302 to i64
  %304 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt6vectorImSaImEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %5, i64 noundef %303) #8
  %305 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNSt6vectorIiSaIiEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %94, i64 noundef %indvars.iv750) #8
  %306 = load i32, ptr %305, align 4, !tbaa !76
  %307 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt6vectorIdSaIdEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %80, i64 noundef %indvars.iv750) #8
  %308 = load double, ptr %307, align 8, !tbaa !75
  %309 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNSt6vectorIiSaIiEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %96, i64 noundef %indvars.iv750) #8
  %310 = load i32, ptr %309, align 4, !tbaa !76
  %311 = sext i32 %310 to i64
  %312 = call noundef nonnull align 8 dereferenceable(12) ptr @_ZNSt6vectorISt4pairIdiESaIS1_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %8, i64 noundef %311) #8
  %313 = load double, ptr %312, align 8, !tbaa !78
  %314 = fdiv double %308, %313
  %315 = invoke noundef i32 @_ZN16HighsHashHelpers16double_hash_codeEd(double noundef %314)
          to label %316 unwind label %318

316:                                              ; preds = %300
  %317 = zext i32 %315 to i64
  invoke void @_ZN16HighsHashHelpers14sparse_combineERmim(ptr noundef nonnull align 8 dereferenceable(8) %304, i32 noundef %306, i64 noundef %317)
          to label %320 unwind label %318

318:                                              ; preds = %316, %300, %298, %285
  %319 = landingpad { ptr, i32 }
          cleanup
  br label %1601

320:                                              ; preds = %280, %316, %254
  %indvars.iv.next751 = add nuw nsw i64 %indvars.iv750, 1
  %.not436 = icmp eq i64 %indvars.iv.next751, %97
  br i1 %.not436, label %._crit_edge, label %254, !llvm.loop !111

321:                                              ; preds = %.lr.ph676, %1154
  %storemerge674 = phi i32 [ 0, %.lr.ph676 ], [ %1156, %1154 ]
  %322 = sext i32 %storemerge674 to i64
  %323 = call noundef nonnull align 1 dereferenceable(1) ptr @_ZNSt6vectorIhSaIhEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %226, i64 noundef %322) #8
  %324 = load i8, ptr %323, align 1, !tbaa !77
  %.not438 = icmp eq i8 %324, 0
  br i1 %.not438, label %325, label %1154

325:                                              ; preds = %321
  %326 = load i32, ptr %12, align 4, !tbaa !76
  %327 = sext i32 %326 to i64
  %328 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNSt6vectorIiSaIiEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %76, i64 noundef %327) #8
  %329 = load i32, ptr %328, align 4, !tbaa !76
  %330 = icmp eq i32 %329, 0
  br i1 %330, label %331, label %337

331:                                              ; preds = %325
  %332 = load i32, ptr %12, align 4, !tbaa !76
  %333 = invoke noundef i32 @_ZN8presolve9HPresolve11colPresolveERNS_19HighsPostsolveStackEi(ptr noundef nonnull align 8 dereferenceable(1720) %0, ptr noundef nonnull align 8 dereferenceable(224) %1, i32 noundef %332)
          to label %334 unwind label %335

334:                                              ; preds = %331
  %.not467 = icmp eq i32 %333, 0
  br i1 %.not467, label %1154, label %.thread554

335:                                              ; preds = %331
  %336 = landingpad { ptr, i32 }
          cleanup
  br label %1161

337:                                              ; preds = %325
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %13) #8
  %338 = load i32, ptr %12, align 4, !tbaa !76
  %339 = sext i32 %338 to i64
  %340 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt6vectorImSaImEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %5, i64 noundef %339) #8
  %341 = invoke ptr @_ZNSt18unordered_multimapImiSt4hashImESt8equal_toImESaISt4pairIKmiEEE4findERS5_(ptr noundef nonnull align 8 dereferenceable(56) %11, ptr noundef nonnull align 8 dereferenceable(8) %340)
          to label %342 unwind label %366

342:                                              ; preds = %337
  store ptr %341, ptr %13, align 8
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %14) #8
  %.cast = ptrtoint ptr %341 to i64
  store i64 %.cast, ptr %14, align 8
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %15) #8
  %343 = call ptr @_ZNSt18unordered_multimapImiSt4hashImESt8equal_toImESaISt4pairIKmiEEE3endEv(ptr noundef nonnull align 8 dereferenceable(56) %11) #8
  store ptr %343, ptr %15, align 8
  %344 = call noundef zeroext i1 @_ZNSt8__detailneERKNS_19_Node_iterator_baseISt4pairIKmiELb0EEES6_(ptr noundef nonnull align 8 dereferenceable(8) %13, ptr noundef nonnull align 8 dereferenceable(8) %15) #8
  br i1 %344, label %.lr.ph672, label %.critedge16

.lr.ph672:                                        ; preds = %342, %.backedge
  %345 = call noundef ptr @_ZNKSt8__detail14_Node_iteratorISt4pairIKmiELb0ELb0EEptEv(ptr noundef nonnull align 8 dereferenceable(8) %13) #8
  %346 = load i64, ptr %345, align 8, !tbaa !112
  %347 = load i32, ptr %12, align 4, !tbaa !76
  %348 = sext i32 %347 to i64
  %349 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt6vectorImSaImEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %5, i64 noundef %348) #8
  %350 = load i64, ptr %349, align 8, !tbaa !80
  %351 = icmp eq i64 %346, %350
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %15) #8
  br i1 %351, label %352, label %.loopexit596.thread

352:                                              ; preds = %.lr.ph672
  %353 = call noundef ptr @_ZNKSt8__detail14_Node_iteratorISt4pairIKmiELb0ELb0EEptEv(ptr noundef nonnull align 8 dereferenceable(8) %13) #8
  %354 = getelementptr inbounds i8, ptr %353, i64 8
  %355 = load i32, ptr %354, align 8, !tbaa !114
  %356 = call ptr @_ZNSt8__detail14_Node_iteratorISt4pairIKmiELb0ELb0EEppEi(ptr noundef nonnull align 8 dereferenceable(8) %13, i32 noundef 0) #8
  store ptr %356, ptr %14, align 8
  %357 = load i32, ptr %12, align 4, !tbaa !76
  %358 = sext i32 %357 to i64
  %359 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNSt6vectorIiSaIiEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %76, i64 noundef %358) #8
  %360 = load i32, ptr %359, align 4, !tbaa !76
  %361 = sext i32 %355 to i64
  %362 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNSt6vectorIiSaIiEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %76, i64 noundef %361) #8
  %363 = load i32, ptr %362, align 4, !tbaa !76
  %.not439 = icmp eq i32 %360, %363
  br i1 %.not439, label %368, label %.backedge

.backedge:                                        ; preds = %352, %.thread528
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %15) #8
  %364 = call ptr @_ZNSt18unordered_multimapImiSt4hashImESt8equal_toImESaISt4pairIKmiEEE3endEv(ptr noundef nonnull align 8 dereferenceable(56) %11) #8
  store ptr %364, ptr %15, align 8
  %365 = call noundef zeroext i1 @_ZNSt8__detailneERKNS_19_Node_iterator_baseISt4pairIKmiELb0EEES6_(ptr noundef nonnull align 8 dereferenceable(8) %13, ptr noundef nonnull align 8 dereferenceable(8) %15) #8
  br i1 %365, label %.lr.ph672, label %.critedge16, !llvm.loop !115

366:                                              ; preds = %337
  %367 = landingpad { ptr, i32 }
          cleanup
  br label %1160

368:                                              ; preds = %352
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %16) #8
  store i32 -1, ptr %16, align 4, !tbaa !76
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %17) #8
  store i32 -1, ptr %17, align 4, !tbaa !76
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %18) #8
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %19) #8
  store i8 1, ptr %19, align 1, !tbaa !116
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %20) #8
  store i8 1, ptr %20, align 1, !tbaa !116
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %21) #8
  store ptr %0, ptr %21, align 8, !tbaa !117
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %22) #8
  store ptr %0, ptr %22, align 8, !tbaa !119
  call void @llvm.lifetime.start.p0(i64 48, ptr nonnull %23) #8
  store ptr %19, ptr %23, align 8, !tbaa !121
  store ptr %0, ptr %227, align 8, !tbaa !122
  store ptr %18, ptr %228, align 8, !tbaa !121
  store ptr %22, ptr %229, align 8, !tbaa !121
  store ptr %16, ptr %230, align 8, !tbaa !121
  store ptr %21, ptr %231, align 8, !tbaa !121
  call void @llvm.lifetime.start.p0(i64 48, ptr nonnull %24) #8
  store ptr %19, ptr %24, align 8, !tbaa !121
  store ptr %0, ptr %232, align 8, !tbaa !124
  store ptr %18, ptr %233, align 8, !tbaa !121
  store ptr %21, ptr %234, align 8, !tbaa !121
  store ptr %16, ptr %235, align 8, !tbaa !121
  store ptr %22, ptr %236, align 8, !tbaa !121
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %25) #8
  store ptr %20, ptr %25, align 8, !tbaa !121
  store ptr %0, ptr %237, align 8, !tbaa !126
  store ptr %22, ptr %238, align 8, !tbaa !121
  store ptr %17, ptr %239, align 8, !tbaa !121
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %26) #8
  store ptr %20, ptr %26, align 8, !tbaa !121
  store ptr %0, ptr %240, align 8, !tbaa !128
  store ptr %21, ptr %241, align 8, !tbaa !121
  store ptr %17, ptr %242, align 8, !tbaa !121
  %369 = load ptr, ptr %0, align 8, !tbaa !92
  %370 = getelementptr inbounds i8, ptr %369, i64 376
  %371 = load i32, ptr %12, align 4, !tbaa !76
  %372 = sext i32 %371 to i64
  %373 = call noundef nonnull align 1 dereferenceable(1) ptr @_ZNSt6vectorI12HighsVarTypeSaIS0_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %370, i64 noundef %372) #8
  %374 = load i8, ptr %373, align 1, !tbaa !130
  %375 = icmp eq i8 %374, 1
  br i1 %375, label %376, label %414

376:                                              ; preds = %368
  %377 = load ptr, ptr %0, align 8, !tbaa !92
  %378 = getelementptr inbounds i8, ptr %377, i64 376
  %379 = call noundef nonnull align 1 dereferenceable(1) ptr @_ZNSt6vectorI12HighsVarTypeSaIS0_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %378, i64 noundef %361) #8
  %380 = load i8, ptr %379, align 1, !tbaa !130
  %381 = icmp eq i8 %380, 1
  br i1 %381, label %382, label %414

382:                                              ; preds = %376
  %383 = load i32, ptr %12, align 4, !tbaa !76
  %384 = sext i32 %383 to i64
  %385 = call noundef nonnull align 8 dereferenceable(12) ptr @_ZNSt6vectorISt4pairIdiESaIS1_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %8, i64 noundef %384) #8
  %386 = load double, ptr %385, align 8, !tbaa !78
  %387 = call noundef double @_ZSt3absd(double noundef %386)
  %388 = call noundef nonnull align 8 dereferenceable(12) ptr @_ZNSt6vectorISt4pairIdiESaIS1_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %8, i64 noundef %361) #8
  %389 = load double, ptr %388, align 8, !tbaa !78
  %390 = call noundef double @_ZSt3absd(double noundef %389)
  %391 = fcmp olt double %387, %390
  %392 = load i32, ptr %12, align 4, !tbaa !76
  %.pre760 = sext i32 %392 to i64
  %.pre-phi = select i1 %391, i64 %361, i64 %.pre760
  %.sink = select i1 %391, i32 %392, i32 %355
  %storemerge440 = select i1 %391, i32 %355, i32 %392
  store i32 %.sink, ptr %16, align 4
  store i32 %storemerge440, ptr %17, align 4, !tbaa !76
  %393 = call noundef nonnull align 8 dereferenceable(12) ptr @_ZNSt6vectorISt4pairIdiESaIS1_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %8, i64 noundef %.pre-phi) #8
  %394 = load double, ptr %393, align 8, !tbaa !78
  %395 = load i32, ptr %16, align 4, !tbaa !76
  %396 = sext i32 %395 to i64
  %397 = call noundef nonnull align 8 dereferenceable(12) ptr @_ZNSt6vectorISt4pairIdiESaIS1_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %8, i64 noundef %396) #8
  %398 = load double, ptr %397, align 8, !tbaa !78
  %399 = fdiv double %394, %398
  %400 = call noundef double @_Z13fractionalityIdET_S0_PS0_(double noundef %399, ptr noundef nonnull %18)
  %401 = load ptr, ptr %243, align 8, !tbaa !81
  %402 = getelementptr inbounds i8, ptr %401, i64 264
  %403 = load double, ptr %402, align 8, !tbaa !82
  %404 = fcmp ule double %400, %403
  br i1 %404, label %405, label %.thread528, !llvm.loop !115

405:                                              ; preds = %382
  %406 = load double, ptr %18, align 8, !tbaa !75
  %407 = call noundef double @_ZSt3absd(double noundef %406)
  %408 = fcmp ult double %407, 1.000000e+00
  br i1 %408, label %409, label %410

409:                                              ; preds = %405
  call void @__assert_fail(ptr noundef nonnull @.str.153, ptr noundef nonnull @.str.55, i32 noundef 5834, ptr noundef nonnull @__PRETTY_FUNCTION__._ZN8presolve9HPresolve25detectParallelRowsAndColsERNS_19HighsPostsolveStackE) #9
  unreachable

410:                                              ; preds = %405
  %411 = load double, ptr %18, align 8, !tbaa !75
  %412 = fcmp une double %411, 1.000000e+00
  br i1 %412, label %413, label %.thread

413:                                              ; preds = %410
  store i8 0, ptr %20, align 1, !tbaa !116
  br label %.thread

414:                                              ; preds = %376, %368
  %415 = load ptr, ptr %0, align 8, !tbaa !92
  %416 = getelementptr inbounds i8, ptr %415, i64 376
  %417 = load i32, ptr %12, align 4, !tbaa !76
  %418 = sext i32 %417 to i64
  %419 = call noundef nonnull align 1 dereferenceable(1) ptr @_ZNSt6vectorI12HighsVarTypeSaIS0_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %416, i64 noundef %418) #8
  %420 = load i8, ptr %419, align 1, !tbaa !130
  %421 = icmp eq i8 %420, 1
  br i1 %421, label %422, label %431

422:                                              ; preds = %414
  %423 = load i32, ptr %12, align 4, !tbaa !76
  store i32 %423, ptr %16, align 4, !tbaa !76
  store i32 %355, ptr %17, align 4, !tbaa !76
  %424 = call noundef nonnull align 8 dereferenceable(12) ptr @_ZNSt6vectorISt4pairIdiESaIS1_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %8, i64 noundef %361) #8
  %425 = load double, ptr %424, align 8, !tbaa !78
  %426 = load i32, ptr %16, align 4, !tbaa !76
  %427 = sext i32 %426 to i64
  %428 = call noundef nonnull align 8 dereferenceable(12) ptr @_ZNSt6vectorISt4pairIdiESaIS1_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %8, i64 noundef %427) #8
  %429 = load double, ptr %428, align 8, !tbaa !78
  %430 = fdiv double %425, %429
  store double %430, ptr %18, align 8, !tbaa !75
  store i8 0, ptr %19, align 1, !tbaa !116
  br label %.thread

431:                                              ; preds = %414
  store i32 %355, ptr %16, align 4, !tbaa !76
  %432 = load i32, ptr %12, align 4, !tbaa !76
  store i32 %432, ptr %17, align 4, !tbaa !76
  %433 = sext i32 %432 to i64
  %434 = call noundef nonnull align 8 dereferenceable(12) ptr @_ZNSt6vectorISt4pairIdiESaIS1_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %8, i64 noundef %433) #8
  %435 = load double, ptr %434, align 8, !tbaa !78
  %436 = load i32, ptr %16, align 4, !tbaa !76
  %437 = sext i32 %436 to i64
  %438 = call noundef nonnull align 8 dereferenceable(12) ptr @_ZNSt6vectorISt4pairIdiESaIS1_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %8, i64 noundef %437) #8
  %439 = load double, ptr %438, align 8, !tbaa !78
  %440 = fdiv double %435, %439
  store double %440, ptr %18, align 8, !tbaa !75
  %441 = load ptr, ptr %0, align 8, !tbaa !92
  %442 = getelementptr inbounds i8, ptr %441, i64 376
  %443 = call noundef nonnull align 1 dereferenceable(1) ptr @_ZNSt6vectorI12HighsVarTypeSaIS0_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %442, i64 noundef %361) #8
  %444 = load i8, ptr %443, align 1, !tbaa !130
  %445 = icmp ne i8 %444, 1
  %446 = zext i1 %445 to i8
  store i8 %446, ptr %19, align 1, !tbaa !116
  br label %.thread

.thread:                                          ; preds = %413, %410, %422, %431
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %27) #8
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %28) #8
  %447 = load ptr, ptr %0, align 8, !tbaa !92
  %448 = getelementptr inbounds i8, ptr %447, i64 8
  %449 = load i32, ptr %16, align 4, !tbaa !76
  %450 = sext i32 %449 to i64
  %451 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt6vectorIdSaIdEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %448, i64 noundef %450) #8
  %452 = load double, ptr %451, align 8, !tbaa !75
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %29) #8
  %453 = load double, ptr %18, align 8, !tbaa !75
  call void @_ZN12HighsCDoubleC2Ed(ptr noundef nonnull align 8 dereferenceable(16) %29, double noundef %453)
  %454 = invoke { double, double } @_ZmldRK12HighsCDouble(double noundef %452, ptr noundef nonnull align 8 dereferenceable(16) %29)
          to label %455 unwind label %484

455:                                              ; preds = %.thread
  %456 = extractvalue { double, double } %454, 0
  store double %456, ptr %28, align 8
  %457 = extractvalue { double, double } %454, 1
  store double %457, ptr %244, align 8
  %458 = load ptr, ptr %0, align 8, !tbaa !92
  %459 = getelementptr inbounds i8, ptr %458, i64 8
  %460 = load i32, ptr %17, align 4, !tbaa !76
  %461 = sext i32 %460 to i64
  %462 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt6vectorIdSaIdEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %459, i64 noundef %461) #8
  %463 = load double, ptr %462, align 8, !tbaa !75
  %464 = call { double, double } @_ZNK12HighsCDoublemiEd(ptr noundef nonnull align 8 dereferenceable(16) %28, double noundef %463)
  %465 = extractvalue { double, double } %464, 0
  store double %465, ptr %27, align 8
  %466 = extractvalue { double, double } %464, 1
  store double %466, ptr %245, align 8
  %467 = call noundef double @_ZNK12HighsCDoublecvdEv(ptr noundef nonnull align 8 dereferenceable(16) %27)
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %29) #8
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %28) #8
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %27) #8
  %468 = load ptr, ptr %243, align 8, !tbaa !81
  %469 = getelementptr inbounds i8, ptr %468, i64 288
  %470 = load double, ptr %469, align 8, !tbaa !132
  %471 = fneg double %470
  %472 = fcmp olt double %467, %471
  br i1 %472, label %473, label %516

473:                                              ; preds = %455
  %474 = invoke noundef zeroext i1 @"_ZZN8presolve9HPresolve25detectParallelRowsAndColsERNS_19HighsPostsolveStackEENK3$_2clEv"(ptr noundef nonnull align 8 dereferenceable(48) %23)
          to label %475 unwind label %486

475:                                              ; preds = %473
  br i1 %474, label %476, label %488

476:                                              ; preds = %475
  %477 = load ptr, ptr %0, align 8, !tbaa !92
  %478 = getelementptr inbounds i8, ptr %477, i64 32
  %479 = load i32, ptr %17, align 4, !tbaa !76
  %480 = sext i32 %479 to i64
  %481 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt6vectorIdSaIdEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %478, i64 noundef %480) #8
  %482 = load double, ptr %481, align 8, !tbaa !75
  %483 = fcmp une double %482, 0xFFF0000000000000
  br i1 %483, label %.thread524, label %488

484:                                              ; preds = %.thread
  %485 = landingpad { ptr, i32 }
          cleanup
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %29) #8
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %28) #8
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %27) #8
  br label %1131

486:                                              ; preds = %556, %473
  %487 = landingpad { ptr, i32 }
          cleanup
  br label %1131

488:                                              ; preds = %476, %475
  %489 = call noundef zeroext i1 @"_ZZN8presolve9HPresolve25detectParallelRowsAndColsERNS_19HighsPostsolveStackEENK3$_5clEv"(ptr noundef nonnull align 8 dereferenceable(32) %26)
  br i1 %489, label %490, label %.thread528, !llvm.loop !115

490:                                              ; preds = %488
  %491 = load double, ptr %18, align 8, !tbaa !75
  %492 = fcmp olt double %491, 0.000000e+00
  br i1 %492, label %501, label %493

493:                                              ; preds = %490
  %494 = load ptr, ptr %0, align 8, !tbaa !92
  %495 = getelementptr inbounds i8, ptr %494, i64 56
  %496 = load i32, ptr %16, align 4, !tbaa !76
  %497 = sext i32 %496 to i64
  %498 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt6vectorIdSaIdEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %495, i64 noundef %497) #8
  %499 = load double, ptr %498, align 8, !tbaa !75
  %500 = fcmp une double %499, 0x7FF0000000000000
  br i1 %500, label %thread-pre-split, label %.thread528, !llvm.loop !115

thread-pre-split:                                 ; preds = %493
  %.pr = load double, ptr %18, align 8, !tbaa !75
  br label %501

501:                                              ; preds = %thread-pre-split, %490
  %502 = phi double [ %.pr, %thread-pre-split ], [ %491, %490 ]
  %503 = fcmp ogt double %502, 0.000000e+00
  br i1 %503, label %512, label %504

504:                                              ; preds = %501
  %505 = load ptr, ptr %0, align 8, !tbaa !92
  %506 = getelementptr inbounds i8, ptr %505, i64 32
  %507 = load i32, ptr %16, align 4, !tbaa !76
  %508 = sext i32 %507 to i64
  %509 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt6vectorIdSaIdEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %506, i64 noundef %508) #8
  %510 = load double, ptr %509, align 8, !tbaa !75
  %511 = fcmp une double %510, 0xFFF0000000000000
  br i1 %511, label %._crit_edge758, label %.thread528, !llvm.loop !115

._crit_edge758:                                   ; preds = %504
  %.pre759 = load double, ptr %18, align 8, !tbaa !75
  br label %512

512:                                              ; preds = %._crit_edge758, %501
  %513 = phi double [ %.pre759, %._crit_edge758 ], [ %502, %501 ]
  %514 = fcmp ogt double %513, 0.000000e+00
  %515 = select i1 %514, i32 1, i32 2
  br label %.thread524

516:                                              ; preds = %455
  %517 = fcmp ogt double %467, %470
  br i1 %517, label %518, label %556

518:                                              ; preds = %516
  %519 = call noundef zeroext i1 @"_ZZN8presolve9HPresolve25detectParallelRowsAndColsERNS_19HighsPostsolveStackEENK3$_3clEv"(ptr noundef nonnull align 8 dereferenceable(48) %24)
  br i1 %519, label %520, label %528

520:                                              ; preds = %518
  %521 = load ptr, ptr %0, align 8, !tbaa !92
  %522 = getelementptr inbounds i8, ptr %521, i64 56
  %523 = load i32, ptr %17, align 4, !tbaa !76
  %524 = sext i32 %523 to i64
  %525 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt6vectorIdSaIdEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %522, i64 noundef %524) #8
  %526 = load double, ptr %525, align 8, !tbaa !75
  %527 = fcmp une double %526, 0x7FF0000000000000
  br i1 %527, label %.thread524, label %528

528:                                              ; preds = %520, %518
  %529 = call noundef zeroext i1 @"_ZZN8presolve9HPresolve25detectParallelRowsAndColsERNS_19HighsPostsolveStackEENK3$_4clEv"(ptr noundef nonnull align 8 dereferenceable(32) %25)
  br i1 %529, label %530, label %.thread528, !llvm.loop !115

530:                                              ; preds = %528
  %531 = load double, ptr %18, align 8, !tbaa !75
  %532 = fcmp olt double %531, 0.000000e+00
  br i1 %532, label %541, label %533

533:                                              ; preds = %530
  %534 = load ptr, ptr %0, align 8, !tbaa !92
  %535 = getelementptr inbounds i8, ptr %534, i64 32
  %536 = load i32, ptr %16, align 4, !tbaa !76
  %537 = sext i32 %536 to i64
  %538 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt6vectorIdSaIdEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %535, i64 noundef %537) #8
  %539 = load double, ptr %538, align 8, !tbaa !75
  %540 = fcmp une double %539, 0xFFF0000000000000
  br i1 %540, label %thread-pre-split517, label %.thread528, !llvm.loop !115

thread-pre-split517:                              ; preds = %533
  %.pr518 = load double, ptr %18, align 8, !tbaa !75
  br label %541

541:                                              ; preds = %thread-pre-split517, %530
  %542 = phi double [ %.pr518, %thread-pre-split517 ], [ %531, %530 ]
  %543 = fcmp ogt double %542, 0.000000e+00
  br i1 %543, label %552, label %544

544:                                              ; preds = %541
  %545 = load ptr, ptr %0, align 8, !tbaa !92
  %546 = getelementptr inbounds i8, ptr %545, i64 56
  %547 = load i32, ptr %16, align 4, !tbaa !76
  %548 = sext i32 %547 to i64
  %549 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt6vectorIdSaIdEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %546, i64 noundef %548) #8
  %550 = load double, ptr %549, align 8, !tbaa !75
  %551 = fcmp une double %550, 0x7FF0000000000000
  br i1 %551, label %._crit_edge756, label %.thread528, !llvm.loop !115

._crit_edge756:                                   ; preds = %544
  %.pre757 = load double, ptr %18, align 8, !tbaa !75
  br label %552

552:                                              ; preds = %._crit_edge756, %541
  %553 = phi double [ %.pre757, %._crit_edge756 ], [ %542, %541 ]
  %554 = fcmp ogt double %553, 0.000000e+00
  %555 = select i1 %554, i32 2, i32 1
  br label %.thread524

556:                                              ; preds = %516
  %557 = invoke noundef zeroext i1 @"_ZZN8presolve9HPresolve25detectParallelRowsAndColsERNS_19HighsPostsolveStackEENK3$_2clEv"(ptr noundef nonnull align 8 dereferenceable(48) %23)
          to label %558 unwind label %486

558:                                              ; preds = %556
  br i1 %557, label %559, label %567

559:                                              ; preds = %558
  %560 = load ptr, ptr %0, align 8, !tbaa !92
  %561 = getelementptr inbounds i8, ptr %560, i64 32
  %562 = load i32, ptr %17, align 4, !tbaa !76
  %563 = sext i32 %562 to i64
  %564 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt6vectorIdSaIdEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %561, i64 noundef %563) #8
  %565 = load double, ptr %564, align 8, !tbaa !75
  %566 = fcmp une double %565, 0xFFF0000000000000
  br i1 %566, label %.thread524, label %567

567:                                              ; preds = %559, %558
  %568 = call noundef zeroext i1 @"_ZZN8presolve9HPresolve25detectParallelRowsAndColsERNS_19HighsPostsolveStackEENK3$_3clEv"(ptr noundef nonnull align 8 dereferenceable(48) %24)
  br i1 %568, label %569, label %577

569:                                              ; preds = %567
  %570 = load ptr, ptr %0, align 8, !tbaa !92
  %571 = getelementptr inbounds i8, ptr %570, i64 56
  %572 = load i32, ptr %17, align 4, !tbaa !76
  %573 = sext i32 %572 to i64
  %574 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt6vectorIdSaIdEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %571, i64 noundef %573) #8
  %575 = load double, ptr %574, align 8, !tbaa !75
  %576 = fcmp une double %575, 0x7FF0000000000000
  br i1 %576, label %.thread524, label %577

577:                                              ; preds = %569, %567
  %578 = call noundef zeroext i1 @"_ZZN8presolve9HPresolve25detectParallelRowsAndColsERNS_19HighsPostsolveStackEENK3$_4clEv"(ptr noundef nonnull align 8 dereferenceable(32) %25)
  br i1 %578, label %579, label %605

579:                                              ; preds = %577
  %580 = load double, ptr %18, align 8, !tbaa !75
  %581 = fcmp olt double %580, 0.000000e+00
  br i1 %581, label %590, label %582

582:                                              ; preds = %579
  %583 = load ptr, ptr %0, align 8, !tbaa !92
  %584 = getelementptr inbounds i8, ptr %583, i64 32
  %585 = load i32, ptr %16, align 4, !tbaa !76
  %586 = sext i32 %585 to i64
  %587 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt6vectorIdSaIdEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %584, i64 noundef %586) #8
  %588 = load double, ptr %587, align 8, !tbaa !75
  %589 = fcmp une double %588, 0xFFF0000000000000
  br i1 %589, label %thread-pre-split519, label %605

thread-pre-split519:                              ; preds = %582
  %.pr520 = load double, ptr %18, align 8, !tbaa !75
  br label %590

590:                                              ; preds = %thread-pre-split519, %579
  %591 = phi double [ %.pr520, %thread-pre-split519 ], [ %580, %579 ]
  %592 = fcmp ogt double %591, 0.000000e+00
  br i1 %592, label %601, label %593

593:                                              ; preds = %590
  %594 = load ptr, ptr %0, align 8, !tbaa !92
  %595 = getelementptr inbounds i8, ptr %594, i64 56
  %596 = load i32, ptr %16, align 4, !tbaa !76
  %597 = sext i32 %596 to i64
  %598 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt6vectorIdSaIdEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %595, i64 noundef %597) #8
  %599 = load double, ptr %598, align 8, !tbaa !75
  %600 = fcmp une double %599, 0x7FF0000000000000
  br i1 %600, label %._crit_edge754, label %605

._crit_edge754:                                   ; preds = %593
  %.pre755 = load double, ptr %18, align 8, !tbaa !75
  br label %601

601:                                              ; preds = %._crit_edge754, %590
  %602 = phi double [ %.pre755, %._crit_edge754 ], [ %591, %590 ]
  %603 = fcmp ogt double %602, 0.000000e+00
  %604 = select i1 %603, i32 2, i32 1
  br label %.thread524

605:                                              ; preds = %593, %582, %577
  %606 = call noundef zeroext i1 @"_ZZN8presolve9HPresolve25detectParallelRowsAndColsERNS_19HighsPostsolveStackEENK3$_5clEv"(ptr noundef nonnull align 8 dereferenceable(32) %26)
  br i1 %606, label %607, label %633

607:                                              ; preds = %605
  %608 = load double, ptr %18, align 8, !tbaa !75
  %609 = fcmp olt double %608, 0.000000e+00
  br i1 %609, label %618, label %610

610:                                              ; preds = %607
  %611 = load ptr, ptr %0, align 8, !tbaa !92
  %612 = getelementptr inbounds i8, ptr %611, i64 56
  %613 = load i32, ptr %16, align 4, !tbaa !76
  %614 = sext i32 %613 to i64
  %615 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt6vectorIdSaIdEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %612, i64 noundef %614) #8
  %616 = load double, ptr %615, align 8, !tbaa !75
  %617 = fcmp une double %616, 0x7FF0000000000000
  br i1 %617, label %thread-pre-split521, label %633

thread-pre-split521:                              ; preds = %610
  %.pr522 = load double, ptr %18, align 8, !tbaa !75
  br label %618

618:                                              ; preds = %thread-pre-split521, %607
  %619 = phi double [ %.pr522, %thread-pre-split521 ], [ %608, %607 ]
  %620 = fcmp ogt double %619, 0.000000e+00
  br i1 %620, label %629, label %621

621:                                              ; preds = %618
  %622 = load ptr, ptr %0, align 8, !tbaa !92
  %623 = getelementptr inbounds i8, ptr %622, i64 32
  %624 = load i32, ptr %16, align 4, !tbaa !76
  %625 = sext i32 %624 to i64
  %626 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt6vectorIdSaIdEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %623, i64 noundef %625) #8
  %627 = load double, ptr %626, align 8, !tbaa !75
  %628 = fcmp une double %627, 0xFFF0000000000000
  br i1 %628, label %._crit_edge753, label %633

._crit_edge753:                                   ; preds = %621
  %.pre = load double, ptr %18, align 8, !tbaa !75
  br label %629

629:                                              ; preds = %._crit_edge753, %618
  %630 = phi double [ %.pre, %._crit_edge753 ], [ %619, %618 ]
  %631 = fcmp ogt double %630, 0.000000e+00
  %632 = select i1 %631, i32 1, i32 2
  br label %.thread524

633:                                              ; preds = %621, %610, %605
  %634 = load ptr, ptr %0, align 8, !tbaa !92
  %635 = getelementptr inbounds i8, ptr %634, i64 376
  %636 = load i32, ptr %16, align 4, !tbaa !76
  %637 = sext i32 %636 to i64
  %638 = call noundef nonnull align 1 dereferenceable(1) ptr @_ZNSt6vectorI12HighsVarTypeSaIS0_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %635, i64 noundef %637) #8
  %639 = load i8, ptr %638, align 1, !tbaa !130
  %640 = icmp eq i8 %639, 1
  %641 = load ptr, ptr %0, align 8, !tbaa !92
  %642 = getelementptr inbounds i8, ptr %641, i64 376
  %643 = load i32, ptr %17, align 4, !tbaa !76
  %644 = sext i32 %643 to i64
  %645 = call noundef nonnull align 1 dereferenceable(1) ptr @_ZNSt6vectorI12HighsVarTypeSaIS0_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %642, i64 noundef %644) #8
  %646 = load i8, ptr %645, align 1, !tbaa !130
  %.not442 = icmp eq i8 %646, 1
  br i1 %640, label %647, label %698

647:                                              ; preds = %633
  %648 = load ptr, ptr %0, align 8, !tbaa !92
  %649 = getelementptr inbounds i8, ptr %648, i64 376
  %650 = load i32, ptr %17, align 4, !tbaa !76
  %651 = sext i32 %650 to i64
  %652 = call noundef nonnull align 1 dereferenceable(1) ptr @_ZNSt6vectorI12HighsVarTypeSaIS0_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %649, i64 noundef %651) #8
  %653 = load i8, ptr %652, align 1, !tbaa !130
  %.not441 = icmp eq i8 %653, 1
  br i1 %.not441, label %676, label %654

654:                                              ; preds = %647
  br i1 %.not442, label %655, label %656

655:                                              ; preds = %654
  call void @__assert_fail(ptr noundef nonnull @.str.154, ptr noundef nonnull @.str.55, i32 noundef 5926, ptr noundef nonnull @__PRETTY_FUNCTION__._ZN8presolve9HPresolve25detectParallelRowsAndColsERNS_19HighsPostsolveStackE) #9
  unreachable

656:                                              ; preds = %654
  %657 = load double, ptr %18, align 8, !tbaa !75
  %658 = load ptr, ptr %0, align 8, !tbaa !92
  %659 = getelementptr inbounds i8, ptr %658, i64 56
  %660 = load i32, ptr %17, align 4, !tbaa !76
  %661 = sext i32 %660 to i64
  %662 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt6vectorIdSaIdEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %659, i64 noundef %661) #8
  %663 = load double, ptr %662, align 8, !tbaa !75
  %664 = load ptr, ptr %0, align 8, !tbaa !92
  %665 = getelementptr inbounds i8, ptr %664, i64 32
  %666 = load i32, ptr %17, align 4, !tbaa !76
  %667 = sext i32 %666 to i64
  %668 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt6vectorIdSaIdEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %665, i64 noundef %667) #8
  %669 = load double, ptr %668, align 8, !tbaa !75
  %670 = fsub double %663, %669
  %671 = fmul double %657, %670
  %672 = call noundef double @_ZSt3absd(double noundef %671)
  %673 = load double, ptr %246, align 8, !tbaa !133
  %674 = fsub double 1.000000e+00, %673
  %675 = fcmp olt double %672, %674
  br i1 %675, label %.thread528, label %.thread524, !llvm.loop !115

676:                                              ; preds = %647
  br i1 %.not442, label %678, label %677

677:                                              ; preds = %676
  call void @__assert_fail(ptr noundef nonnull @.str.158, ptr noundef nonnull @.str.55, i32 noundef 5944, ptr noundef nonnull @__PRETTY_FUNCTION__._ZN8presolve9HPresolve25detectParallelRowsAndColsERNS_19HighsPostsolveStackE) #9
  unreachable

678:                                              ; preds = %676
  %679 = load ptr, ptr %0, align 8, !tbaa !92
  %680 = getelementptr inbounds i8, ptr %679, i64 56
  %681 = load i32, ptr %16, align 4, !tbaa !76
  %682 = sext i32 %681 to i64
  %683 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt6vectorIdSaIdEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %680, i64 noundef %682) #8
  %684 = load double, ptr %683, align 8, !tbaa !75
  %685 = load ptr, ptr %0, align 8, !tbaa !92
  %686 = getelementptr inbounds i8, ptr %685, i64 32
  %687 = load i32, ptr %16, align 4, !tbaa !76
  %688 = sext i32 %687 to i64
  %689 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt6vectorIdSaIdEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %686, i64 noundef %688) #8
  %690 = load double, ptr %689, align 8, !tbaa !75
  %691 = fsub double %684, %690
  %692 = fadd double %691, 1.000000e+00
  %693 = load double, ptr %246, align 8, !tbaa !133
  %694 = fadd double %693, %692
  %695 = load double, ptr %18, align 8, !tbaa !75
  %696 = call double @llvm.fabs.f64(double %695)
  %697 = fcmp ogt double %696, %694
  br i1 %697, label %.thread528, label %.thread524, !llvm.loop !115

698:                                              ; preds = %633
  br i1 %.not442, label %699, label %.thread524

699:                                              ; preds = %698
  call void @__assert_fail(ptr noundef nonnull @.str.159, ptr noundef nonnull @.str.55, i32 noundef 5954, ptr noundef nonnull @__PRETTY_FUNCTION__._ZN8presolve9HPresolve25detectParallelRowsAndColsERNS_19HighsPostsolveStackE) #9
  unreachable

.thread524:                                       ; preds = %569, %559, %520, %476, %629, %601, %552, %512, %656, %698, %678
  %.0385526 = phi i32 [ 0, %678 ], [ 0, %698 ], [ 0, %656 ], [ 3, %569 ], [ 4, %559 ], [ 3, %520 ], [ 4, %476 ], [ %632, %629 ], [ %604, %601 ], [ %555, %552 ], [ %515, %512 ]
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %30) #8
  %700 = load i32, ptr %16, align 4, !tbaa !76
  invoke void @_ZNK8presolve9HPresolve15getColumnVectorEi(ptr dead_on_unwind nonnull writable sret(%struct.HighsTripletListSlice) align 8 %30, ptr noundef nonnull align 8 dereferenceable(1720) %0, i32 noundef %700)
          to label %701 unwind label %704

701:                                              ; preds = %.thread524
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %31) #8
  invoke void @_ZNK16HighsMatrixSliceI21HighsTripletListSliceE5beginEv(ptr dead_on_unwind nonnull writable sret(%"class.HighsMatrixSlice<HighsTripletListSlice>::iterator") align 8 %31, ptr noundef nonnull align 8 dereferenceable(28) %30)
          to label %702 unwind label %706

702:                                              ; preds = %701
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %32) #8
  invoke void @_ZNK16HighsMatrixSliceI21HighsTripletListSliceE3endEv(ptr dead_on_unwind nonnull writable sret(%"class.HighsMatrixSlice<HighsTripletListSlice>::iterator") align 8 %32, ptr noundef nonnull align 8 dereferenceable(28) %30)
          to label %.preheader595 unwind label %708

.preheader595:                                    ; preds = %702
  %703 = call noundef zeroext i1 @_ZNK16HighsMatrixSliceI21HighsTripletListSliceE8iteratorneERKS2_(ptr noundef nonnull align 8 dereferenceable(28) %31, ptr noundef nonnull align 8 dereferenceable(28) %32)
  br i1 %703, label %.lr.ph666, label %.preheader595._crit_edge

704:                                              ; preds = %.thread524
  %705 = landingpad { ptr, i32 }
          cleanup
  br label %1131

706:                                              ; preds = %701
  %707 = landingpad { ptr, i32 }
          cleanup
  br label %743

708:                                              ; preds = %702
  %709 = landingpad { ptr, i32 }
          cleanup
  br label %742

.lr.ph666:                                        ; preds = %.preheader595, %739
  %710 = call noundef nonnull align 8 dereferenceable(16) ptr @_ZN16HighsMatrixSliceI21HighsTripletListSliceE8iteratordeEv(ptr noundef nonnull align 8 dereferenceable(28) %31)
  %711 = call noundef i32 @_ZNK17HighsSliceNonzero5indexEv(ptr noundef nonnull align 8 dereferenceable(16) %710)
  %712 = load i32, ptr %17, align 4, !tbaa !76
  %713 = invoke noundef i32 @_ZN8presolve9HPresolve11findNonzeroEii(ptr noundef nonnull align 8 dereferenceable(1720) %0, i32 noundef %711, i32 noundef %712)
          to label %714 unwind label %715

714:                                              ; preds = %.lr.ph666
  %.not591 = icmp eq i32 %713, -1
  br i1 %.not591, label %.thread535, label %717

715:                                              ; preds = %.lr.ph666
  %716 = landingpad { ptr, i32 }
          cleanup
  br label %742

717:                                              ; preds = %714
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %33) #8
  %718 = sext i32 %713 to i64
  %719 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt6vectorIdSaIdEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %80, i64 noundef %718) #8
  %720 = load double, ptr %719, align 8, !tbaa !75
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %34) #8
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %35) #8
  %721 = load double, ptr %18, align 8, !tbaa !75
  call void @_ZN12HighsCDoubleC2Ed(ptr noundef nonnull align 8 dereferenceable(16) %35, double noundef %721)
  %722 = call noundef double @_ZNK17HighsSliceNonzero5valueEv(ptr noundef nonnull align 8 dereferenceable(16) %710)
  %723 = invoke { double, double } @_ZNK12HighsCDoublemlEd(ptr noundef nonnull align 8 dereferenceable(16) %35, double noundef %722)
          to label %724 unwind label %728

724:                                              ; preds = %717
  %725 = extractvalue { double, double } %723, 0
  store double %725, ptr %34, align 8
  %726 = extractvalue { double, double } %723, 1
  store double %726, ptr %247, align 8
  %727 = invoke { double, double } @_ZmidRK12HighsCDouble(double noundef %720, ptr noundef nonnull align 8 dereferenceable(16) %34)
          to label %730 unwind label %728

728:                                              ; preds = %724, %717
  %729 = landingpad { ptr, i32 }
          cleanup
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %35) #8
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %34) #8
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %33) #8
  br label %742

730:                                              ; preds = %724
  %731 = extractvalue { double, double } %727, 0
  store double %731, ptr %33, align 8
  %732 = extractvalue { double, double } %727, 1
  store double %732, ptr %248, align 8
  %733 = call noundef double @_ZNK12HighsCDoublecvdEv(ptr noundef nonnull align 8 dereferenceable(16) %33)
  %734 = call noundef double @_ZSt3absd(double noundef %733)
  %735 = load ptr, ptr %243, align 8, !tbaa !81
  %736 = getelementptr inbounds i8, ptr %735, i64 264
  %737 = load double, ptr %736, align 8, !tbaa !82
  %738 = fcmp ugt double %734, %737
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %35) #8
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %34) #8
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %33) #8
  br i1 %738, label %.thread535, label %739

739:                                              ; preds = %730
  %740 = call noundef nonnull align 8 dereferenceable(28) ptr @_ZN16HighsMatrixSliceI21HighsTripletListSliceE8iteratorppEv(ptr noundef nonnull align 8 dereferenceable(28) %31)
  %741 = call noundef zeroext i1 @_ZNK16HighsMatrixSliceI21HighsTripletListSliceE8iteratorneERKS2_(ptr noundef nonnull align 8 dereferenceable(28) %31, ptr noundef nonnull align 8 dereferenceable(28) %32)
  br i1 %741, label %.lr.ph666, label %.preheader595._crit_edge

.thread535:                                       ; preds = %730, %714
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %32) #8
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %31) #8
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %30) #8
  br label %.thread528

742:                                              ; preds = %715, %728, %708
  %.pn.pn = phi { ptr, i32 } [ %709, %708 ], [ %729, %728 ], [ %716, %715 ]
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %32) #8
  br label %743

743:                                              ; preds = %742, %706
  %.pn.pn.pn = phi { ptr, i32 } [ %.pn.pn, %742 ], [ %707, %706 ]
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %31) #8
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %30) #8
  br label %1131

.preheader595._crit_edge:                         ; preds = %.preheader595, %739
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %32) #8
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %31) #8
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %30) #8
  switch i32 %.0385526, label %default.unreachable761 [
    i32 4, label %744
    i32 3, label %770
    i32 2, label %794
    i32 1, label %818
    i32 0, label %842
  ]

744:                                              ; preds = %.preheader595._crit_edge
  %745 = load i32, ptr %17, align 4, !tbaa !76
  %746 = sext i32 %745 to i64
  %747 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNSt6vectorIiSaIiEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %76, i64 noundef %746) #8
  %748 = load i32, ptr %747, align 4, !tbaa !76
  %749 = icmp eq i32 %748, 1
  br i1 %749, label %750, label %764

750:                                              ; preds = %744
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %36) #8
  %751 = load i32, ptr %17, align 4, !tbaa !76
  %752 = sext i32 %751 to i64
  %753 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNSt6vectorIiSaIiEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %250, i64 noundef %752) #8
  %754 = load i32, ptr %753, align 4, !tbaa !76
  %755 = sext i32 %754 to i64
  %756 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNSt6vectorIiSaIiEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %249, i64 noundef %755) #8
  %757 = load i32, ptr %756, align 4, !tbaa !76
  store i32 %757, ptr %36, align 4, !tbaa !76
  %758 = invoke noundef nonnull align 4 dereferenceable(4) ptr @_ZN14HighsHashTableIiiEixERKi(ptr noundef nonnull align 8 dereferenceable(40) %10, ptr noundef nonnull align 4 dereferenceable(4) %36)
          to label %759 unwind label %762

759:                                              ; preds = %750
  %760 = load i32, ptr %758, align 4, !tbaa !76
  %761 = add nsw i32 %760, -1
  store i32 %761, ptr %758, align 4, !tbaa !76
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %36) #8
  br label %764

762:                                              ; preds = %750
  %763 = landingpad { ptr, i32 }
          cleanup
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %36) #8
  br label %1131

764:                                              ; preds = %759, %744
  %765 = load i32, ptr %17, align 4, !tbaa !76
  %766 = invoke noundef zeroext i1 @_ZN8presolve9HPresolve24fixColToLowerOrUnboundedERNS_19HighsPostsolveStackEi(ptr noundef nonnull align 8 dereferenceable(1720) %0, ptr noundef nonnull align 8 dereferenceable(224) %1, i32 noundef %765)
          to label %767 unwind label %768

767:                                              ; preds = %764
  br i1 %766, label %.thread544, label %.loopexit596

768:                                              ; preds = %838, %814, %790, %764
  %769 = landingpad { ptr, i32 }
          cleanup
  br label %1131

770:                                              ; preds = %.preheader595._crit_edge
  %771 = load i32, ptr %17, align 4, !tbaa !76
  %772 = sext i32 %771 to i64
  %773 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNSt6vectorIiSaIiEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %76, i64 noundef %772) #8
  %774 = load i32, ptr %773, align 4, !tbaa !76
  %775 = icmp eq i32 %774, 1
  br i1 %775, label %776, label %790

776:                                              ; preds = %770
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %37) #8
  %777 = load i32, ptr %17, align 4, !tbaa !76
  %778 = sext i32 %777 to i64
  %779 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNSt6vectorIiSaIiEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %250, i64 noundef %778) #8
  %780 = load i32, ptr %779, align 4, !tbaa !76
  %781 = sext i32 %780 to i64
  %782 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNSt6vectorIiSaIiEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %249, i64 noundef %781) #8
  %783 = load i32, ptr %782, align 4, !tbaa !76
  store i32 %783, ptr %37, align 4, !tbaa !76
  %784 = invoke noundef nonnull align 4 dereferenceable(4) ptr @_ZN14HighsHashTableIiiEixERKi(ptr noundef nonnull align 8 dereferenceable(40) %10, ptr noundef nonnull align 4 dereferenceable(4) %37)
          to label %785 unwind label %788

785:                                              ; preds = %776
  %786 = load i32, ptr %784, align 4, !tbaa !76
  %787 = add nsw i32 %786, -1
  store i32 %787, ptr %784, align 4, !tbaa !76
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %37) #8
  br label %790

788:                                              ; preds = %776
  %789 = landingpad { ptr, i32 }
          cleanup
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %37) #8
  br label %1131

790:                                              ; preds = %785, %770
  %791 = load i32, ptr %17, align 4, !tbaa !76
  %792 = invoke noundef zeroext i1 @_ZN8presolve9HPresolve24fixColToUpperOrUnboundedERNS_19HighsPostsolveStackEi(ptr noundef nonnull align 8 dereferenceable(1720) %0, ptr noundef nonnull align 8 dereferenceable(224) %1, i32 noundef %791)
          to label %793 unwind label %768

793:                                              ; preds = %790
  br i1 %792, label %.thread544, label %.loopexit596

794:                                              ; preds = %.preheader595._crit_edge
  %795 = load i32, ptr %16, align 4, !tbaa !76
  %796 = sext i32 %795 to i64
  %797 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNSt6vectorIiSaIiEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %76, i64 noundef %796) #8
  %798 = load i32, ptr %797, align 4, !tbaa !76
  %799 = icmp eq i32 %798, 1
  br i1 %799, label %800, label %814

800:                                              ; preds = %794
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %38) #8
  %801 = load i32, ptr %16, align 4, !tbaa !76
  %802 = sext i32 %801 to i64
  %803 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNSt6vectorIiSaIiEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %250, i64 noundef %802) #8
  %804 = load i32, ptr %803, align 4, !tbaa !76
  %805 = sext i32 %804 to i64
  %806 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNSt6vectorIiSaIiEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %249, i64 noundef %805) #8
  %807 = load i32, ptr %806, align 4, !tbaa !76
  store i32 %807, ptr %38, align 4, !tbaa !76
  %808 = invoke noundef nonnull align 4 dereferenceable(4) ptr @_ZN14HighsHashTableIiiEixERKi(ptr noundef nonnull align 8 dereferenceable(40) %10, ptr noundef nonnull align 4 dereferenceable(4) %38)
          to label %809 unwind label %812

809:                                              ; preds = %800
  %810 = load i32, ptr %808, align 4, !tbaa !76
  %811 = add nsw i32 %810, -1
  store i32 %811, ptr %808, align 4, !tbaa !76
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %38) #8
  br label %814

812:                                              ; preds = %800
  %813 = landingpad { ptr, i32 }
          cleanup
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %38) #8
  br label %1131

814:                                              ; preds = %809, %794
  %815 = load i32, ptr %16, align 4, !tbaa !76
  %816 = invoke noundef zeroext i1 @_ZN8presolve9HPresolve24fixColToLowerOrUnboundedERNS_19HighsPostsolveStackEi(ptr noundef nonnull align 8 dereferenceable(1720) %0, ptr noundef nonnull align 8 dereferenceable(224) %1, i32 noundef %815)
          to label %817 unwind label %768

817:                                              ; preds = %814
  br i1 %816, label %.thread544, label %.loopexit596

818:                                              ; preds = %.preheader595._crit_edge
  %819 = load i32, ptr %16, align 4, !tbaa !76
  %820 = sext i32 %819 to i64
  %821 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNSt6vectorIiSaIiEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %76, i64 noundef %820) #8
  %822 = load i32, ptr %821, align 4, !tbaa !76
  %823 = icmp eq i32 %822, 1
  br i1 %823, label %824, label %838

824:                                              ; preds = %818
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %39) #8
  %825 = load i32, ptr %16, align 4, !tbaa !76
  %826 = sext i32 %825 to i64
  %827 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNSt6vectorIiSaIiEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %250, i64 noundef %826) #8
  %828 = load i32, ptr %827, align 4, !tbaa !76
  %829 = sext i32 %828 to i64
  %830 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNSt6vectorIiSaIiEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %249, i64 noundef %829) #8
  %831 = load i32, ptr %830, align 4, !tbaa !76
  store i32 %831, ptr %39, align 4, !tbaa !76
  %832 = invoke noundef nonnull align 4 dereferenceable(4) ptr @_ZN14HighsHashTableIiiEixERKi(ptr noundef nonnull align 8 dereferenceable(40) %10, ptr noundef nonnull align 4 dereferenceable(4) %39)
          to label %833 unwind label %836

833:                                              ; preds = %824
  %834 = load i32, ptr %832, align 4, !tbaa !76
  %835 = add nsw i32 %834, -1
  store i32 %835, ptr %832, align 4, !tbaa !76
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %39) #8
  br label %838

836:                                              ; preds = %824
  %837 = landingpad { ptr, i32 }
          cleanup
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %39) #8
  br label %1131

838:                                              ; preds = %833, %818
  %839 = load i32, ptr %16, align 4, !tbaa !76
  %840 = invoke noundef zeroext i1 @_ZN8presolve9HPresolve24fixColToUpperOrUnboundedERNS_19HighsPostsolveStackEi(ptr noundef nonnull align 8 dereferenceable(1720) %0, ptr noundef nonnull align 8 dereferenceable(224) %1, i32 noundef %839)
          to label %841 unwind label %768

841:                                              ; preds = %838
  br i1 %840, label %.thread544, label %.loopexit596

842:                                              ; preds = %.preheader595._crit_edge
  %843 = load double, ptr %18, align 8, !tbaa !75
  %844 = load ptr, ptr %0, align 8, !tbaa !92
  %845 = getelementptr inbounds i8, ptr %844, i64 32
  %846 = load i32, ptr %16, align 4, !tbaa !76
  %847 = sext i32 %846 to i64
  %848 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt6vectorIdSaIdEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %845, i64 noundef %847) #8
  %849 = load double, ptr %848, align 8, !tbaa !75
  %850 = load ptr, ptr %0, align 8, !tbaa !92
  %851 = getelementptr inbounds i8, ptr %850, i64 56
  %852 = load i32, ptr %16, align 4, !tbaa !76
  %853 = sext i32 %852 to i64
  %854 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt6vectorIdSaIdEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %851, i64 noundef %853) #8
  %855 = load double, ptr %854, align 8, !tbaa !75
  %856 = load ptr, ptr %0, align 8, !tbaa !92
  %857 = getelementptr inbounds i8, ptr %856, i64 32
  %858 = load i32, ptr %17, align 4, !tbaa !76
  %859 = sext i32 %858 to i64
  %860 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt6vectorIdSaIdEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %857, i64 noundef %859) #8
  %861 = load double, ptr %860, align 8, !tbaa !75
  %862 = load ptr, ptr %0, align 8, !tbaa !92
  %863 = getelementptr inbounds i8, ptr %862, i64 56
  %864 = load i32, ptr %17, align 4, !tbaa !76
  %865 = sext i32 %864 to i64
  %866 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt6vectorIdSaIdEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %863, i64 noundef %865) #8
  %867 = load double, ptr %866, align 8, !tbaa !75
  %868 = load i32, ptr %16, align 4, !tbaa !76
  %869 = load i32, ptr %17, align 4, !tbaa !76
  %870 = load ptr, ptr %0, align 8, !tbaa !92
  %871 = getelementptr inbounds i8, ptr %870, i64 376
  %872 = sext i32 %868 to i64
  %873 = call noundef nonnull align 1 dereferenceable(1) ptr @_ZNSt6vectorI12HighsVarTypeSaIS0_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %871, i64 noundef %872) #8
  %874 = load i8, ptr %873, align 1, !tbaa !130
  %875 = icmp eq i8 %874, 1
  %876 = load ptr, ptr %0, align 8, !tbaa !92
  %877 = getelementptr inbounds i8, ptr %876, i64 376
  %878 = load i32, ptr %17, align 4, !tbaa !76
  %879 = sext i32 %878 to i64
  %880 = call noundef nonnull align 1 dereferenceable(1) ptr @_ZNSt6vectorI12HighsVarTypeSaIS0_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %877, i64 noundef %879) #8
  %881 = load i8, ptr %880, align 1, !tbaa !130
  %882 = icmp eq i8 %881, 1
  %883 = load ptr, ptr %243, align 8, !tbaa !81
  %884 = getelementptr inbounds i8, ptr %883, i64 808
  %885 = load double, ptr %884, align 8, !tbaa !134
  %886 = invoke noundef zeroext i1 @_ZN8presolve19HighsPostsolveStack15duplicateColumnEdddddiibbd(ptr noundef nonnull align 8 dereferenceable(224) %1, double noundef %843, double noundef %849, double noundef %855, double noundef %861, double noundef %867, i32 noundef %868, i32 noundef %869, i1 noundef zeroext %875, i1 noundef zeroext %882, double noundef %885)
          to label %887 unwind label %894

887:                                              ; preds = %842
  %888 = load ptr, ptr %0, align 8, !tbaa !92
  %889 = getelementptr inbounds i8, ptr %888, i64 376
  %890 = load i32, ptr %17, align 4, !tbaa !76
  %891 = sext i32 %890 to i64
  %892 = call noundef nonnull align 1 dereferenceable(1) ptr @_ZNSt6vectorI12HighsVarTypeSaIS0_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %889, i64 noundef %891) #8
  %893 = load i8, ptr %892, align 1, !tbaa !130
  %.not447 = icmp eq i8 %893, 1
  br i1 %.not447, label %910, label %896

894:                                              ; preds = %842
  %895 = landingpad { ptr, i32 }
          cleanup
  br label %1131

896:                                              ; preds = %887
  %897 = load ptr, ptr %0, align 8, !tbaa !92
  %898 = getelementptr inbounds i8, ptr %897, i64 376
  %899 = load i32, ptr %16, align 4, !tbaa !76
  %900 = sext i32 %899 to i64
  %901 = call noundef nonnull align 1 dereferenceable(1) ptr @_ZNSt6vectorI12HighsVarTypeSaIS0_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %898, i64 noundef %900) #8
  %902 = load i8, ptr %901, align 1, !tbaa !130
  %903 = icmp eq i8 %902, 1
  br i1 %903, label %904, label %910

904:                                              ; preds = %896
  %905 = load ptr, ptr %0, align 8, !tbaa !92
  %906 = getelementptr inbounds i8, ptr %905, i64 376
  %907 = load i32, ptr %16, align 4, !tbaa !76
  %908 = sext i32 %907 to i64
  %909 = call noundef nonnull align 1 dereferenceable(1) ptr @_ZNSt6vectorI12HighsVarTypeSaIS0_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %906, i64 noundef %908) #8
  store i8 0, ptr %909, align 1, !tbaa !130
  br label %910

910:                                              ; preds = %904, %896, %887
  %.not449 = phi i1 [ false, %904 ], [ true, %896 ], [ true, %887 ]
  %911 = load i32, ptr %16, align 4, !tbaa !76
  invoke void @_ZN8presolve9HPresolve14markChangedColEi(ptr noundef nonnull align 8 dereferenceable(1720) %0, i32 noundef %911)
          to label %912 unwind label %930

912:                                              ; preds = %910
  %913 = load i32, ptr %17, align 4, !tbaa !76
  %914 = sext i32 %913 to i64
  %915 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNSt6vectorIiSaIiEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %76, i64 noundef %914) #8
  %916 = load i32, ptr %915, align 4, !tbaa !76
  %917 = icmp eq i32 %916, 1
  br i1 %917, label %918, label %934

918:                                              ; preds = %912
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %40) #8
  %919 = load i32, ptr %17, align 4, !tbaa !76
  %920 = sext i32 %919 to i64
  %921 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNSt6vectorIiSaIiEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %250, i64 noundef %920) #8
  %922 = load i32, ptr %921, align 4, !tbaa !76
  %923 = sext i32 %922 to i64
  %924 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNSt6vectorIiSaIiEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %249, i64 noundef %923) #8
  %925 = load i32, ptr %924, align 4, !tbaa !76
  store i32 %925, ptr %40, align 4, !tbaa !76
  %926 = invoke noundef nonnull align 4 dereferenceable(4) ptr @_ZN14HighsHashTableIiiEixERKi(ptr noundef nonnull align 8 dereferenceable(40) %10, ptr noundef nonnull align 4 dereferenceable(4) %40)
          to label %927 unwind label %932

927:                                              ; preds = %918
  %928 = load i32, ptr %926, align 4, !tbaa !76
  %929 = add nsw i32 %928, -1
  store i32 %929, ptr %926, align 4, !tbaa !76
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %40) #8
  br label %934

930:                                              ; preds = %910
  %931 = landingpad { ptr, i32 }
          cleanup
  br label %1131

932:                                              ; preds = %918
  %933 = landingpad { ptr, i32 }
          cleanup
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %40) #8
  br label %1131

934:                                              ; preds = %927, %912
  %935 = load double, ptr %18, align 8, !tbaa !75
  %936 = fcmp ogt double %935, 0.000000e+00
  %937 = load ptr, ptr %0, align 8, !tbaa !92
  %938 = getelementptr inbounds i8, ptr %937, i64 32
  %939 = load i32, ptr %16, align 4, !tbaa !76
  %940 = sext i32 %939 to i64
  %941 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt6vectorIdSaIdEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %938, i64 noundef %940) #8
  %942 = load double, ptr %941, align 8, !tbaa !75
  %943 = load double, ptr %18, align 8, !tbaa !75
  %944 = load ptr, ptr %0, align 8, !tbaa !92
  %945 = load i32, ptr %17, align 4, !tbaa !76
  %946 = sext i32 %945 to i64
  br i1 %936, label %947, label %1005

947:                                              ; preds = %934
  %948 = getelementptr inbounds i8, ptr %944, i64 32
  %949 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt6vectorIdSaIdEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %948, i64 noundef %946) #8
  %950 = load double, ptr %949, align 8, !tbaa !75
  %951 = call double @llvm.fmuladd.f64(double %943, double %950, double %942)
  %952 = load ptr, ptr %0, align 8, !tbaa !92
  %953 = getelementptr inbounds i8, ptr %952, i64 56
  %954 = load i32, ptr %16, align 4, !tbaa !76
  %955 = sext i32 %954 to i64
  %956 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt6vectorIdSaIdEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %953, i64 noundef %955) #8
  %957 = load double, ptr %956, align 8, !tbaa !75
  %958 = load double, ptr %18, align 8, !tbaa !75
  %959 = load ptr, ptr %0, align 8, !tbaa !92
  %960 = getelementptr inbounds i8, ptr %959, i64 56
  %961 = load i32, ptr %17, align 4, !tbaa !76
  %962 = sext i32 %961 to i64
  %963 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt6vectorIdSaIdEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %960, i64 noundef %962) #8
  %964 = load double, ptr %963, align 8, !tbaa !75
  %965 = call double @llvm.fmuladd.f64(double %958, double %964, double %957)
  %966 = fcmp oeq double %965, 0x7FF0000000000000
  br i1 %966, label %967, label %984

967:                                              ; preds = %947
  %968 = load ptr, ptr %0, align 8, !tbaa !92
  %969 = getelementptr inbounds i8, ptr %968, i64 56
  %970 = load i32, ptr %16, align 4, !tbaa !76
  %971 = sext i32 %970 to i64
  %972 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt6vectorIdSaIdEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %969, i64 noundef %971) #8
  %973 = load double, ptr %972, align 8, !tbaa !75
  %974 = fcmp une double %973, 0x7FF0000000000000
  br i1 %974, label %975, label %984

975:                                              ; preds = %967
  %976 = load ptr, ptr %0, align 8, !tbaa !92
  %977 = getelementptr inbounds i8, ptr %976, i64 56
  %978 = load i32, ptr %16, align 4, !tbaa !76
  %979 = sext i32 %978 to i64
  %980 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt6vectorIdSaIdEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %977, i64 noundef %979) #8
  %981 = load double, ptr %980, align 8, !tbaa !75
  %982 = load double, ptr %18, align 8, !tbaa !75
  %983 = fdiv double %981, %982
  br label %984

984:                                              ; preds = %947, %967, %975
  %.sink822 = phi double [ %983, %975 ], [ 0.000000e+00, %967 ], [ 0.000000e+00, %947 ]
  %.pn853 = load ptr, ptr %0, align 8, !tbaa !92
  %.sink824 = getelementptr inbounds i8, ptr %.pn853, i64 56
  %.sink826 = load i32, ptr %17, align 4, !tbaa !76
  %985 = sext i32 %.sink826 to i64
  %986 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt6vectorIdSaIdEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %.sink824, i64 noundef %985) #8
  store double %.sink822, ptr %986, align 8, !tbaa !75
  %987 = fcmp oeq double %951, 0xFFF0000000000000
  br i1 %987, label %988, label %1063

988:                                              ; preds = %984
  %989 = load ptr, ptr %0, align 8, !tbaa !92
  %990 = getelementptr inbounds i8, ptr %989, i64 32
  %991 = load i32, ptr %16, align 4, !tbaa !76
  %992 = sext i32 %991 to i64
  %993 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt6vectorIdSaIdEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %990, i64 noundef %992) #8
  %994 = load double, ptr %993, align 8, !tbaa !75
  %995 = fcmp une double %994, 0xFFF0000000000000
  br i1 %995, label %996, label %1063

996:                                              ; preds = %988
  %997 = load ptr, ptr %0, align 8, !tbaa !92
  %998 = getelementptr inbounds i8, ptr %997, i64 32
  %999 = load i32, ptr %16, align 4, !tbaa !76
  %1000 = sext i32 %999 to i64
  %1001 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt6vectorIdSaIdEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %998, i64 noundef %1000) #8
  %1002 = load double, ptr %1001, align 8, !tbaa !75
  %1003 = load double, ptr %18, align 8, !tbaa !75
  %1004 = fdiv double %1002, %1003
  br label %1063

1005:                                             ; preds = %934
  %1006 = getelementptr inbounds i8, ptr %944, i64 56
  %1007 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt6vectorIdSaIdEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %1006, i64 noundef %946) #8
  %1008 = load double, ptr %1007, align 8, !tbaa !75
  %1009 = call double @llvm.fmuladd.f64(double %943, double %1008, double %942)
  %1010 = load ptr, ptr %0, align 8, !tbaa !92
  %1011 = getelementptr inbounds i8, ptr %1010, i64 56
  %1012 = load i32, ptr %16, align 4, !tbaa !76
  %1013 = sext i32 %1012 to i64
  %1014 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt6vectorIdSaIdEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %1011, i64 noundef %1013) #8
  %1015 = load double, ptr %1014, align 8, !tbaa !75
  %1016 = load double, ptr %18, align 8, !tbaa !75
  %1017 = load ptr, ptr %0, align 8, !tbaa !92
  %1018 = getelementptr inbounds i8, ptr %1017, i64 32
  %1019 = load i32, ptr %17, align 4, !tbaa !76
  %1020 = sext i32 %1019 to i64
  %1021 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt6vectorIdSaIdEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %1018, i64 noundef %1020) #8
  %1022 = load double, ptr %1021, align 8, !tbaa !75
  %1023 = call double @llvm.fmuladd.f64(double %1016, double %1022, double %1015)
  %1024 = fcmp oeq double %1023, 0x7FF0000000000000
  br i1 %1024, label %1025, label %1042

1025:                                             ; preds = %1005
  %1026 = load ptr, ptr %0, align 8, !tbaa !92
  %1027 = getelementptr inbounds i8, ptr %1026, i64 56
  %1028 = load i32, ptr %16, align 4, !tbaa !76
  %1029 = sext i32 %1028 to i64
  %1030 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt6vectorIdSaIdEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %1027, i64 noundef %1029) #8
  %1031 = load double, ptr %1030, align 8, !tbaa !75
  %1032 = fcmp une double %1031, 0x7FF0000000000000
  br i1 %1032, label %1033, label %1042

1033:                                             ; preds = %1025
  %1034 = load ptr, ptr %0, align 8, !tbaa !92
  %1035 = getelementptr inbounds i8, ptr %1034, i64 56
  %1036 = load i32, ptr %16, align 4, !tbaa !76
  %1037 = sext i32 %1036 to i64
  %1038 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt6vectorIdSaIdEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %1035, i64 noundef %1037) #8
  %1039 = load double, ptr %1038, align 8, !tbaa !75
  %1040 = load double, ptr %18, align 8, !tbaa !75
  %1041 = fdiv double %1039, %1040
  br label %1042

1042:                                             ; preds = %1005, %1025, %1033
  %.sink827 = phi double [ %1041, %1033 ], [ 0.000000e+00, %1025 ], [ 0.000000e+00, %1005 ]
  %.pn = load ptr, ptr %0, align 8, !tbaa !92
  %.sink829 = getelementptr inbounds i8, ptr %.pn, i64 32
  %.sink831 = load i32, ptr %17, align 4, !tbaa !76
  %1043 = sext i32 %.sink831 to i64
  %1044 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt6vectorIdSaIdEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %.sink829, i64 noundef %1043) #8
  store double %.sink827, ptr %1044, align 8, !tbaa !75
  %1045 = fcmp oeq double %1009, 0xFFF0000000000000
  br i1 %1045, label %1046, label %1063

1046:                                             ; preds = %1042
  %1047 = load ptr, ptr %0, align 8, !tbaa !92
  %1048 = getelementptr inbounds i8, ptr %1047, i64 32
  %1049 = load i32, ptr %16, align 4, !tbaa !76
  %1050 = sext i32 %1049 to i64
  %1051 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt6vectorIdSaIdEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %1048, i64 noundef %1050) #8
  %1052 = load double, ptr %1051, align 8, !tbaa !75
  %1053 = fcmp une double %1052, 0xFFF0000000000000
  br i1 %1053, label %1054, label %1063

1054:                                             ; preds = %1046
  %1055 = load ptr, ptr %0, align 8, !tbaa !92
  %1056 = getelementptr inbounds i8, ptr %1055, i64 32
  %1057 = load i32, ptr %16, align 4, !tbaa !76
  %1058 = sext i32 %1057 to i64
  %1059 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt6vectorIdSaIdEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %1056, i64 noundef %1058) #8
  %1060 = load double, ptr %1059, align 8, !tbaa !75
  %1061 = load double, ptr %18, align 8, !tbaa !75
  %1062 = fdiv double %1060, %1061
  br label %1063

1063:                                             ; preds = %1042, %1046, %984, %988, %1054, %996
  %.sink917 = phi i64 [ 56, %1054 ], [ 32, %996 ], [ 32, %988 ], [ 32, %984 ], [ 56, %1046 ], [ 56, %1042 ]
  %.sink832 = phi double [ %1062, %1054 ], [ %1004, %996 ], [ 0.000000e+00, %988 ], [ 0.000000e+00, %984 ], [ 0.000000e+00, %1046 ], [ 0.000000e+00, %1042 ]
  %.0398 = phi double [ %1023, %1054 ], [ %965, %996 ], [ %965, %988 ], [ %965, %984 ], [ %1023, %1046 ], [ %1023, %1042 ]
  %.0397 = phi double [ 0xFFF0000000000000, %1054 ], [ 0xFFF0000000000000, %996 ], [ %951, %988 ], [ %951, %984 ], [ %1009, %1046 ], [ %1009, %1042 ]
  %1064 = load ptr, ptr %0, align 8, !tbaa !92
  %1065 = getelementptr inbounds i8, ptr %1064, i64 %.sink917
  %.sink836 = load i32, ptr %17, align 4, !tbaa !76
  %1066 = sext i32 %.sink836 to i64
  %1067 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt6vectorIdSaIdEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %1065, i64 noundef %1066) #8
  store double %.sink832, ptr %1067, align 8, !tbaa !75
  %1068 = load ptr, ptr %0, align 8, !tbaa !92
  %1069 = getelementptr inbounds i8, ptr %1068, i64 32
  %1070 = load i32, ptr %16, align 4, !tbaa !76
  %1071 = sext i32 %1070 to i64
  %1072 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt6vectorIdSaIdEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %1069, i64 noundef %1071) #8
  store double %.0397, ptr %1072, align 8, !tbaa !75
  %1073 = load ptr, ptr %0, align 8, !tbaa !92
  %1074 = getelementptr inbounds i8, ptr %1073, i64 56
  %1075 = load i32, ptr %16, align 4, !tbaa !76
  %1076 = sext i32 %1075 to i64
  %1077 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt6vectorIdSaIdEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %1074, i64 noundef %1076) #8
  store double %.0398, ptr %1077, align 8, !tbaa !75
  %1078 = load i32, ptr %17, align 4, !tbaa !76
  call void @_ZN8presolve9HPresolve14markColDeletedEi(ptr noundef nonnull align 8 dereferenceable(1720) %0, i32 noundef %1078)
  %1079 = load i32, ptr %17, align 4, !tbaa !76
  %1080 = sext i32 %1079 to i64
  %1081 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNSt6vectorIiSaIiEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %250, i64 noundef %1080) #8
  %1082 = load i32, ptr %1081, align 4, !tbaa !76
  br label %1083

1083:                                             ; preds = %1110, %1063
  %.0399 = phi i32 [ %1082, %1063 ], [ %1109, %1110 ]
  %.not448 = icmp eq i32 %.0399, -1
  br i1 %.not448, label %1084, label %1092

1084:                                             ; preds = %1083
  %1085 = load ptr, ptr %0, align 8, !tbaa !92
  %1086 = getelementptr inbounds i8, ptr %1085, i64 8
  %1087 = load i32, ptr %17, align 4, !tbaa !76
  %1088 = sext i32 %1087 to i64
  %1089 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt6vectorIdSaIdEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %1086, i64 noundef %1088) #8
  store double 0.000000e+00, ptr %1089, align 8, !tbaa !75
  %1090 = load i32, ptr %17, align 4, !tbaa !76
  %1091 = load i32, ptr %16, align 4, !tbaa !76
  invoke void @_ZN8presolve9HPresolve21resetColImpliedBoundsEii(ptr noundef nonnull align 8 dereferenceable(1720) %0, i32 noundef %1091, i32 noundef -1)
          to label %1113 unwind label %1129

1092:                                             ; preds = %1083
  %1093 = sext i32 %.0399 to i64
  %1094 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNSt6vectorIiSaIiEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %251, i64 noundef %1093) #8
  %1095 = load i32, ptr %1094, align 4, !tbaa !76
  %1096 = load i32, ptr %17, align 4, !tbaa !76
  %1097 = icmp eq i32 %1095, %1096
  br i1 %1097, label %1099, label %1098

1098:                                             ; preds = %1092
  call void @__assert_fail(ptr noundef nonnull @.str.161, ptr noundef nonnull @.str.55, i32 noundef 6117, ptr noundef nonnull @__PRETTY_FUNCTION__._ZN8presolve9HPresolve25detectParallelRowsAndColsERNS_19HighsPostsolveStackE) #9
  unreachable

1099:                                             ; preds = %1092
  %1100 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNSt6vectorIiSaIiEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %249, i64 noundef %1093) #8
  %1101 = load i32, ptr %1100, align 4, !tbaa !76
  br i1 %.not449, label %1107, label %1102

1102:                                             ; preds = %1099
  %1103 = sext i32 %1101 to i64
  %1104 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNSt6vectorIiSaIiEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %252, i64 noundef %1103) #8
  %1105 = load i32, ptr %1104, align 4, !tbaa !76
  %1106 = add nsw i32 %1105, -1
  store i32 %1106, ptr %1104, align 4, !tbaa !76
  br label %1107

1107:                                             ; preds = %1102, %1099
  %1108 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNSt6vectorIiSaIiEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %253, i64 noundef %1093) #8
  %1109 = load i32, ptr %1108, align 4, !tbaa !76
  invoke void @_ZN8presolve9HPresolve6unlinkEi(ptr noundef nonnull align 8 dereferenceable(1720) %0, i32 noundef %.0399)
          to label %1110 unwind label %1111

1110:                                             ; preds = %1107
  invoke void @_ZN8presolve9HPresolve16reinsertEquationEi(ptr noundef nonnull align 8 dereferenceable(1720) %0, i32 noundef %1101)
          to label %1083 unwind label %1111, !llvm.loop !135

1111:                                             ; preds = %1110, %1107
  %1112 = landingpad { ptr, i32 }
          cleanup
  br label %1131

1113:                                             ; preds = %1084
  br i1 %.not449, label %.loopexit596, label %1114

1114:                                             ; preds = %1113
  %1115 = load ptr, ptr %0, align 8, !tbaa !92
  %1116 = getelementptr inbounds i8, ptr %1115, i64 376
  %1117 = load i32, ptr %17, align 4, !tbaa !76
  %1118 = sext i32 %1117 to i64
  %1119 = call noundef nonnull align 1 dereferenceable(1) ptr @_ZNSt6vectorI12HighsVarTypeSaIS0_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %1116, i64 noundef %1118) #8
  %1120 = load i8, ptr %1119, align 1, !tbaa !130
  %1121 = icmp eq i8 %1120, 4
  br i1 %1121, label %1122, label %.loopexit596

1122:                                             ; preds = %1114
  %1123 = load i32, ptr %16, align 4, !tbaa !76
  %1124 = invoke noundef zeroext i1 @_ZN8presolve9HPresolve16isImpliedIntegerEi(ptr noundef nonnull align 8 dereferenceable(1720) %0, i32 noundef %1123)
          to label %1125 unwind label %1129

1125:                                             ; preds = %1122
  br i1 %1124, label %1126, label %.loopexit596

1126:                                             ; preds = %1125
  %1127 = load i32, ptr %16, align 4, !tbaa !76
  %1128 = invoke noundef zeroext i1 @_ZN8presolve9HPresolve21convertImpliedIntegerEiib(ptr noundef nonnull align 8 dereferenceable(1720) %0, i32 noundef %1127, i32 noundef -1, i1 noundef zeroext true)
          to label %.loopexit596 unwind label %1129

1129:                                             ; preds = %1126, %1122, %1084
  %1130 = landingpad { ptr, i32 }
          cleanup
  br label %1131

default.unreachable761:                           ; preds = %.preheader595._crit_edge
  unreachable

1131:                                             ; preds = %486, %894, %1111, %1129, %932, %930, %704, %743, %836, %812, %788, %768, %762, %484
  %.pn451.pn.pn.pn.pn.pn = phi { ptr, i32 } [ %485, %484 ], [ %487, %486 ], [ %769, %768 ], [ %837, %836 ], [ %813, %812 ], [ %789, %788 ], [ %763, %762 ], [ %.pn.pn.pn, %743 ], [ %705, %704 ], [ %895, %894 ], [ %933, %932 ], [ %931, %930 ], [ %1112, %1111 ], [ %1130, %1129 ]
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %26) #8
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %25) #8
  call void @llvm.lifetime.end.p0(i64 48, ptr nonnull %24) #8
  call void @llvm.lifetime.end.p0(i64 48, ptr nonnull %23) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %22) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %21) #8
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %20) #8
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %19) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %18) #8
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %17) #8
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %16) #8
  br label %1159

.thread544:                                       ; preds = %841, %817, %793, %767
  %1132 = getelementptr inbounds i8, ptr %0, i64 1588
  store i32 2, ptr %1132, align 4, !tbaa !136
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %26) #8
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %25) #8
  call void @llvm.lifetime.end.p0(i64 48, ptr nonnull %24) #8
  call void @llvm.lifetime.end.p0(i64 48, ptr nonnull %23) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %22) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %21) #8
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %20) #8
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %19) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %18) #8
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %17) #8
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %16) #8
  br label %.thread549

.thread528:                                       ; preds = %656, %678, %.thread535, %382, %504, %493, %488, %544, %533, %528
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %26) #8
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %25) #8
  call void @llvm.lifetime.end.p0(i64 48, ptr nonnull %24) #8
  call void @llvm.lifetime.end.p0(i64 48, ptr nonnull %23) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %22) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %21) #8
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %20) #8
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %19) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %18) #8
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %17) #8
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %16) #8
  br label %.backedge

.critedge16:                                      ; preds = %.backedge, %342
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %15) #8
  br label %.loopexit596.thread

.loopexit596:                                     ; preds = %767, %793, %817, %841, %1126, %1125, %1114, %1113
  %.4383.ph = phi i32 [ %1090, %1113 ], [ %1090, %1114 ], [ %1090, %1125 ], [ %1090, %1126 ], [ %745, %767 ], [ %771, %793 ], [ %795, %817 ], [ %819, %841 ]
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %26) #8
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %25) #8
  call void @llvm.lifetime.end.p0(i64 48, ptr nonnull %24) #8
  call void @llvm.lifetime.end.p0(i64 48, ptr nonnull %23) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %22) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %21) #8
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %20) #8
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %19) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %18) #8
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %17) #8
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %16) #8
  %.not458 = icmp eq i32 %.4383.ph, -1
  br i1 %.not458, label %.loopexit596.thread, label %1133

1133:                                             ; preds = %.loopexit596
  %1134 = load i32, ptr %12, align 4, !tbaa !76
  %.not459 = icmp eq i32 %.4383.ph, %1134
  br i1 %.not459, label %1139, label %1135

1135:                                             ; preds = %1133
  %.sroa.0147.0.copyload = load ptr, ptr %14, align 8
  %1136 = invoke ptr @_ZNSt18unordered_multimapImiSt4hashImESt8equal_toImESaISt4pairIKmiEEE5eraseENSt8__detail14_Node_iteratorIS6_Lb0ELb0EEE(ptr noundef nonnull align 8 dereferenceable(56) %11, ptr %.sroa.0147.0.copyload)
          to label %1139 unwind label %1137

1137:                                             ; preds = %.loopexit596.thread, %1135
  %1138 = landingpad { ptr, i32 }
          cleanup
  br label %1159

1139:                                             ; preds = %1135, %1133
  %1140 = invoke noundef i32 @_ZN8presolve9HPresolve11checkLimitsERNS_19HighsPostsolveStackE(ptr noundef nonnull align 8 dereferenceable(1720) %0, ptr noundef nonnull align 8 dereferenceable(224) %1)
          to label %1141 unwind label %1142

1141:                                             ; preds = %1139
  %.not460 = icmp eq i32 %1140, 0
  br i1 %.not460, label %1144, label %.thread549

1142:                                             ; preds = %1139
  %1143 = landingpad { ptr, i32 }
          cleanup
  br label %1159

1144:                                             ; preds = %1141
  %1145 = invoke noundef i32 @_ZN8presolve9HPresolve19removeRowSingletonsERNS_19HighsPostsolveStackE(ptr noundef nonnull align 8 dereferenceable(1720) %0, ptr noundef nonnull align 8 dereferenceable(224) %1)
          to label %1146 unwind label %1147

1146:                                             ; preds = %1144
  %.not464 = icmp eq i32 %1145, 0
  br i1 %.not464, label %select.unfold, label %.thread549

1147:                                             ; preds = %1144
  %1148 = landingpad { ptr, i32 }
          cleanup
  br label %1159

.loopexit596.thread:                              ; preds = %.lr.ph672, %.critedge16, %.loopexit596
  call void @_ZNSt8__detail20_Node_const_iteratorISt4pairIKmiELb0ELb0EEC2ERKNS_14_Node_iteratorIS3_Lb0ELb0EEE(ptr noundef nonnull align 8 dereferenceable(8) %41, ptr noundef nonnull align 8 dereferenceable(8) %14) #8
  %1149 = load i32, ptr %12, align 4, !tbaa !76
  %1150 = sext i32 %1149 to i64
  %1151 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt6vectorImSaImEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %5, i64 noundef %1150) #8
  %1152 = load ptr, ptr %41, align 8
  %1153 = invoke ptr @_ZNSt18unordered_multimapImiSt4hashImESt8equal_toImESaISt4pairIKmiEEE12emplace_hintIJRmRiEEENSt8__detail14_Node_iteratorIS6_Lb0ELb0EEENSC_20_Node_const_iteratorIS6_Lb0ELb0EEEDpOT_(ptr noundef nonnull align 8 dereferenceable(56) %11, ptr %1152, ptr noundef nonnull align 8 dereferenceable(8) %1151, ptr noundef nonnull align 4 dereferenceable(4) %12)
          to label %select.unfold unwind label %1137

.thread549:                                       ; preds = %1141, %1146, %.thread544
  %.10.ph = phi i32 [ 2, %.thread544 ], [ %1140, %1141 ], [ %1145, %1146 ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %14) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %13) #8
  br label %.thread554

select.unfold:                                    ; preds = %1146, %.loopexit596.thread
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %14) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %13) #8
  br label %1154

1154:                                             ; preds = %select.unfold, %334, %321
  %1155 = load i32, ptr %12, align 4, !tbaa !76
  %1156 = add nsw i32 %1155, 1
  store i32 %1156, ptr %12, align 4, !tbaa !76
  %1157 = load ptr, ptr %0, align 8, !tbaa !92
  %1158 = load i32, ptr %1157, align 8, !tbaa !93
  %.not437 = icmp eq i32 %1156, %1158
  br i1 %.not437, label %._crit_edge677, label %321, !llvm.loop !137

1159:                                             ; preds = %1147, %1142, %1137, %1131
  %.pn461 = phi { ptr, i32 } [ %1148, %1147 ], [ %1143, %1142 ], [ %1138, %1137 ], [ %.pn451.pn.pn.pn.pn.pn, %1131 ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %14) #8
  br label %1160

1160:                                             ; preds = %1159, %366
  %.pn461.pn = phi { ptr, i32 } [ %.pn461, %1159 ], [ %367, %366 ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %13) #8
  br label %1161

.thread554:                                       ; preds = %334, %.thread549
  %.12.ph = phi i32 [ %.10.ph, %.thread549 ], [ %333, %334 ]
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %12) #8
  br label %1599

1161:                                             ; preds = %1160, %335
  %.pn465 = phi { ptr, i32 } [ %336, %335 ], [ %.pn461.pn, %1160 ]
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %12) #8
  br label %1600

._crit_edge677:                                   ; preds = %1154, %._crit_edge
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %12) #8
  call void @_ZNSt18unordered_multimapImiSt4hashImESt8equal_toImESaISt4pairIKmiEEE5clearEv(ptr noundef nonnull align 8 dereferenceable(56) %11) #8
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %42) #8
  store i32 0, ptr %42, align 4, !tbaa !76
  %1162 = load ptr, ptr %0, align 8, !tbaa !92
  %1163 = getelementptr inbounds i8, ptr %1162, i64 4
  %1164 = load i32, ptr %1163, align 4, !tbaa !138
  %.not469686 = icmp eq i32 %1164, 0
  br i1 %.not469686, label %._crit_edge690, label %.lr.ph689

.lr.ph689:                                        ; preds = %._crit_edge677
  %1165 = getelementptr inbounds i8, ptr %0, i64 1480
  %1166 = getelementptr inbounds i8, ptr %0, i64 24
  %1167 = getelementptr inbounds i8, ptr %0, i64 8
  %1168 = getelementptr inbounds i8, ptr %52, i64 8
  %1169 = getelementptr inbounds i8, ptr %51, i64 8
  %1170 = getelementptr inbounds i8, ptr %0, i64 32
  %1171 = getelementptr inbounds i8, ptr %0, i64 520
  %1172 = getelementptr inbounds i8, ptr %0, i64 496
  %1173 = getelementptr inbounds i8, ptr %0, i64 352
  br label %1174

1174:                                             ; preds = %.lr.ph689, %1587
  %storemerge468687 = phi i32 [ 0, %.lr.ph689 ], [ %1589, %1587 ]
  %1175 = sext i32 %storemerge468687 to i64
  %1176 = call noundef nonnull align 1 dereferenceable(1) ptr @_ZNSt6vectorIhSaIhEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %1165, i64 noundef %1175) #8
  %1177 = load i8, ptr %1176, align 1, !tbaa !77
  %.not470 = icmp eq i8 %1177, 0
  br i1 %.not470, label %1178, label %1587

1178:                                             ; preds = %1174
  %1179 = load i32, ptr %42, align 4, !tbaa !76
  %1180 = sext i32 %1179 to i64
  %1181 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNSt6vectorIiSaIiEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %73, i64 noundef %1180) #8
  %1182 = load i32, ptr %1181, align 4, !tbaa !76
  %1183 = icmp slt i32 %1182, 2
  br i1 %1183, label %1204, label %1184

1184:                                             ; preds = %1178
  %1185 = load i32, ptr %42, align 4, !tbaa !76
  %1186 = sext i32 %1185 to i64
  %1187 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNSt6vectorIiSaIiEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %73, i64 noundef %1186) #8
  %1188 = load i32, ptr %1187, align 4, !tbaa !76
  %1189 = icmp eq i32 %1188, 2
  br i1 %1189, label %1190, label %1210

1190:                                             ; preds = %1184
  %1191 = load ptr, ptr %0, align 8, !tbaa !92
  %1192 = getelementptr inbounds i8, ptr %1191, i64 80
  %1193 = load i32, ptr %42, align 4, !tbaa !76
  %1194 = sext i32 %1193 to i64
  %1195 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt6vectorIdSaIdEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %1192, i64 noundef %1194) #8
  %1196 = load double, ptr %1195, align 8, !tbaa !75
  %1197 = load ptr, ptr %0, align 8, !tbaa !92
  %1198 = getelementptr inbounds i8, ptr %1197, i64 104
  %1199 = load i32, ptr %42, align 4, !tbaa !76
  %1200 = sext i32 %1199 to i64
  %1201 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt6vectorIdSaIdEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %1198, i64 noundef %1200) #8
  %1202 = load double, ptr %1201, align 8, !tbaa !75
  %1203 = fcmp oeq double %1196, %1202
  br i1 %1203, label %1204, label %1210

1204:                                             ; preds = %1178, %1190
  %1205 = load i32, ptr %42, align 4, !tbaa !76
  %1206 = invoke noundef i32 @_ZN8presolve9HPresolve11rowPresolveERNS_19HighsPostsolveStackEi(ptr noundef nonnull align 8 dereferenceable(1720) %0, ptr noundef nonnull align 8 dereferenceable(224) %1, i32 noundef %1205)
          to label %1207 unwind label %1208

1207:                                             ; preds = %1204
  %.not498 = icmp eq i32 %1206, 0
  br i1 %.not498, label %1587, label %.thread587

1208:                                             ; preds = %1204
  %1209 = landingpad { ptr, i32 }
          cleanup
  br label %1595

1210:                                             ; preds = %1190, %1184
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %43) #8
  %1211 = load i32, ptr %42, align 4, !tbaa !76
  %1212 = sext i32 %1211 to i64
  %1213 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt6vectorImSaImEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %4, i64 noundef %1212) #8
  %1214 = invoke ptr @_ZNSt18unordered_multimapImiSt4hashImESt8equal_toImESaISt4pairIKmiEEE4findERS5_(ptr noundef nonnull align 8 dereferenceable(56) %11, ptr noundef nonnull align 8 dereferenceable(8) %1213)
          to label %1215 unwind label %1227

1215:                                             ; preds = %1210
  store ptr %1214, ptr %43, align 8
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %44) #8
  %.cast471 = ptrtoint ptr %1214 to i64
  store i64 %.cast471, ptr %44, align 8
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %45) #8
  store ptr %10, ptr %45, align 8, !tbaa !121
  %1216 = load i32, ptr %42, align 4, !tbaa !76
  %1217 = invoke noundef i32 @"_ZZN8presolve9HPresolve25detectParallelRowsAndColsERNS_19HighsPostsolveStackEENK3$_6clEi"(ptr noundef nonnull align 8 dereferenceable(8) %45, i32 noundef %1216)
          to label %1218 unwind label %1229

1218:                                             ; preds = %1215
  %1219 = load ptr, ptr %1166, align 8, !tbaa !139
  %1220 = icmp eq ptr %1219, null
  br i1 %1220, label %1221, label %1231

1221:                                             ; preds = %1218
  %1222 = load ptr, ptr %1167, align 8, !tbaa !81
  %1223 = getelementptr inbounds i8, ptr %1222, i64 528
  %1224 = load i8, ptr %1223, align 8, !tbaa !140, !range !73, !noundef !74
  %1225 = trunc nuw i8 %1224 to i1
  %1226 = icmp ne i32 %1217, 0
  %or.cond = and i1 %1226, %1225
  br i1 %or.cond, label %.thread583, label %1231

1227:                                             ; preds = %1210
  %1228 = landingpad { ptr, i32 }
          cleanup
  br label %1594

1229:                                             ; preds = %1215
  %1230 = landingpad { ptr, i32 }
          cleanup
  br label %1593

1231:                                             ; preds = %1221, %1218
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %46) #8
  %1232 = call ptr @_ZNSt18unordered_multimapImiSt4hashImESt8equal_toImESaISt4pairIKmiEEE3endEv(ptr noundef nonnull align 8 dereferenceable(56) %11) #8
  store ptr %1232, ptr %46, align 8
  %1233 = call noundef zeroext i1 @_ZNSt8__detailneERKNS_19_Node_iterator_baseISt4pairIKmiELb0EEES6_(ptr noundef nonnull align 8 dereferenceable(8) %43, ptr noundef nonnull align 8 dereferenceable(8) %46) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %46) #8
  br i1 %1233, label %1234, label %1238

1234:                                             ; preds = %1231
  %1235 = load i32, ptr %42, align 4, !tbaa !76
  invoke void @_ZN8presolve9HPresolve8storeRowEi(ptr noundef nonnull align 8 dereferenceable(1720) %0, i32 noundef %1235)
          to label %1238 unwind label %1236

1236:                                             ; preds = %1581, %1574, %1234
  %1237 = landingpad { ptr, i32 }
          cleanup
  br label %1593

1238:                                             ; preds = %1234, %1231
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %47) #8
  %1239 = call ptr @_ZNSt18unordered_multimapImiSt4hashImESt8equal_toImESaISt4pairIKmiEEE3endEv(ptr noundef nonnull align 8 dereferenceable(56) %11) #8
  store ptr %1239, ptr %47, align 8
  %1240 = call noundef zeroext i1 @_ZNSt8__detailneERKNS_19_Node_iterator_baseISt4pairIKmiELb0EEES6_(ptr noundef nonnull align 8 dereferenceable(8) %43, ptr noundef nonnull align 8 dereferenceable(8) %47) #8
  br i1 %1240, label %.lr.ph682, label %.critedge19

.lr.ph682:                                        ; preds = %1238
  %1241 = icmp sgt i32 %1217, 1
  %.not474 = icmp eq i32 %1217, 0
  %1242 = icmp eq i32 %1217, 1
  br label %1243

1243:                                             ; preds = %.lr.ph682, %select.unfold570
  %.0404680 = phi i32 [ -1, %.lr.ph682 ], [ %.4408, %select.unfold570 ]
  %1244 = call noundef ptr @_ZNKSt8__detail14_Node_iteratorISt4pairIKmiELb0ELb0EEptEv(ptr noundef nonnull align 8 dereferenceable(8) %43) #8
  %1245 = load i64, ptr %1244, align 8, !tbaa !112
  %1246 = load i32, ptr %42, align 4, !tbaa !76
  %1247 = sext i32 %1246 to i64
  %1248 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt6vectorImSaImEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %4, i64 noundef %1247) #8
  %1249 = load i64, ptr %1248, align 8, !tbaa !80
  %1250 = icmp eq i64 %1245, %1249
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %47) #8
  br i1 %1250, label %1251, label %.loopexit

1251:                                             ; preds = %1243
  %1252 = call noundef ptr @_ZNKSt8__detail14_Node_iteratorISt4pairIKmiELb0ELb0EEptEv(ptr noundef nonnull align 8 dereferenceable(8) %43) #8
  %1253 = getelementptr inbounds i8, ptr %1252, i64 8
  %1254 = load i32, ptr %1253, align 8, !tbaa !114
  %1255 = call ptr @_ZNSt8__detail14_Node_iteratorISt4pairIKmiELb0ELb0EEppEi(ptr noundef nonnull align 8 dereferenceable(8) %43, i32 noundef 0) #8
  store ptr %1255, ptr %44, align 8
  %1256 = invoke noundef i32 @"_ZZN8presolve9HPresolve25detectParallelRowsAndColsERNS_19HighsPostsolveStackEENK3$_6clEi"(ptr noundef nonnull align 8 dereferenceable(8) %45, i32 noundef %1254)
          to label %1257 unwind label %1266

1257:                                             ; preds = %1251
  %1258 = load ptr, ptr %1166, align 8, !tbaa !139
  %1259 = icmp eq ptr %1258, null
  br i1 %1259, label %1260, label %1268

1260:                                             ; preds = %1257
  %1261 = load ptr, ptr %1167, align 8, !tbaa !81
  %1262 = getelementptr inbounds i8, ptr %1261, i64 528
  %1263 = load i8, ptr %1262, align 8, !tbaa !140, !range !73, !noundef !74
  %1264 = trunc nuw i8 %1263 to i1
  %1265 = icmp ne i32 %1256, 0
  %or.cond21 = and i1 %1265, %1264
  br i1 %or.cond21, label %select.unfold570, label %1268, !llvm.loop !141

1266:                                             ; preds = %1251
  %1267 = landingpad { ptr, i32 }
          cleanup
  br label %1593

1268:                                             ; preds = %1260, %1257
  %1269 = load i32, ptr %42, align 4, !tbaa !76
  %1270 = sext i32 %1269 to i64
  %1271 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNSt6vectorIiSaIiEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %73, i64 noundef %1270) #8
  %1272 = load i32, ptr %1271, align 4, !tbaa !76
  %1273 = sub nsw i32 %1272, %1217
  %1274 = sext i32 %1254 to i64
  %1275 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNSt6vectorIiSaIiEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %73, i64 noundef %1274) #8
  %1276 = load i32, ptr %1275, align 4, !tbaa !76
  %1277 = sub nsw i32 %1276, %1256
  %.not472 = icmp eq i32 %1273, %1277
  br i1 %.not472, label %1278, label %select.unfold570, !llvm.loop !141

1278:                                             ; preds = %1268
  %1279 = icmp sgt i32 %1256, 1
  %or.cond23 = or i1 %1241, %1279
  br i1 %or.cond23, label %1280, label %1306

1280:                                             ; preds = %1278
  br i1 %.not474, label %1281, label %1295

1281:                                             ; preds = %1280
  %1282 = load ptr, ptr %0, align 8, !tbaa !92
  %1283 = getelementptr inbounds i8, ptr %1282, i64 80
  %1284 = load i32, ptr %42, align 4, !tbaa !76
  %1285 = sext i32 %1284 to i64
  %1286 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt6vectorIdSaIdEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %1283, i64 noundef %1285) #8
  %1287 = load double, ptr %1286, align 8, !tbaa !75
  %1288 = load ptr, ptr %0, align 8, !tbaa !92
  %1289 = getelementptr inbounds i8, ptr %1288, i64 104
  %1290 = load i32, ptr %42, align 4, !tbaa !76
  %1291 = sext i32 %1290 to i64
  %1292 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt6vectorIdSaIdEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %1289, i64 noundef %1291) #8
  %1293 = load double, ptr %1292, align 8, !tbaa !75
  %1294 = fcmp une double %1287, %1293
  br i1 %1294, label %1295, label %1331

1295:                                             ; preds = %1281, %1280
  %.not475 = icmp eq i32 %1256, 0
  br i1 %.not475, label %1296, label %select.unfold570, !llvm.loop !141

1296:                                             ; preds = %1295
  %1297 = load ptr, ptr %0, align 8, !tbaa !92
  %1298 = getelementptr inbounds i8, ptr %1297, i64 80
  %1299 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt6vectorIdSaIdEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %1298, i64 noundef %1274) #8
  %1300 = load double, ptr %1299, align 8, !tbaa !75
  %1301 = load ptr, ptr %0, align 8, !tbaa !92
  %1302 = getelementptr inbounds i8, ptr %1301, i64 104
  %1303 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt6vectorIdSaIdEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %1302, i64 noundef %1274) #8
  %1304 = load double, ptr %1303, align 8, !tbaa !75
  %1305 = fcmp une double %1300, %1304
  br i1 %1305, label %select.unfold570, label %1331, !llvm.loop !141

1306:                                             ; preds = %1278
  %.not473 = icmp eq i32 %1256, %1217
  br i1 %.not473, label %1331, label %1307

1307:                                             ; preds = %1306
  %1308 = load ptr, ptr %0, align 8, !tbaa !92
  %1309 = getelementptr inbounds i8, ptr %1308, i64 80
  %1310 = load i32, ptr %42, align 4, !tbaa !76
  %1311 = sext i32 %1310 to i64
  %1312 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt6vectorIdSaIdEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %1309, i64 noundef %1311) #8
  %1313 = load double, ptr %1312, align 8, !tbaa !75
  %1314 = load ptr, ptr %0, align 8, !tbaa !92
  %1315 = getelementptr inbounds i8, ptr %1314, i64 104
  %1316 = load i32, ptr %42, align 4, !tbaa !76
  %1317 = sext i32 %1316 to i64
  %1318 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt6vectorIdSaIdEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %1315, i64 noundef %1317) #8
  %1319 = load double, ptr %1318, align 8, !tbaa !75
  %1320 = fcmp une double %1313, %1319
  br i1 %1320, label %1321, label %1331

1321:                                             ; preds = %1307
  %1322 = load ptr, ptr %0, align 8, !tbaa !92
  %1323 = getelementptr inbounds i8, ptr %1322, i64 80
  %1324 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt6vectorIdSaIdEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %1323, i64 noundef %1274) #8
  %1325 = load double, ptr %1324, align 8, !tbaa !75
  %1326 = load ptr, ptr %0, align 8, !tbaa !92
  %1327 = getelementptr inbounds i8, ptr %1326, i64 104
  %1328 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt6vectorIdSaIdEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %1327, i64 noundef %1274) #8
  %1329 = load double, ptr %1328, align 8, !tbaa !75
  %1330 = fcmp une double %1325, %1329
  br i1 %1330, label %select.unfold570, label %1331, !llvm.loop !141

1331:                                             ; preds = %1306, %1321, %1307, %1281, %1296
  %1332 = call noundef nonnull align 8 dereferenceable(12) ptr @_ZNSt6vectorISt4pairIdiESaIS1_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %6, i64 noundef %1274) #8
  %1333 = load double, ptr %1332, align 8, !tbaa !78
  %1334 = load i32, ptr %42, align 4, !tbaa !76
  %1335 = sext i32 %1334 to i64
  %1336 = call noundef nonnull align 8 dereferenceable(12) ptr @_ZNSt6vectorISt4pairIdiESaIS1_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %6, i64 noundef %1335) #8
  %1337 = load double, ptr %1336, align 8, !tbaa !78
  %1338 = fdiv double %1333, %1337
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %48) #8
  invoke void @_ZNK8presolve9HPresolve12getStoredRowEv(ptr dead_on_unwind nonnull writable sret(%struct.HighsTripletPositionSlice) align 8 %48, ptr noundef nonnull align 8 dereferenceable(1720) %0)
          to label %1339 unwind label %1342

1339:                                             ; preds = %1331
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %49) #8
  invoke void @_ZNK16HighsMatrixSliceI25HighsTripletPositionSliceE5beginEv(ptr dead_on_unwind nonnull writable sret(%"class.HighsMatrixSlice<HighsTripletPositionSlice>::iterator") align 8 %49, ptr noundef nonnull align 8 dereferenceable(28) %48)
          to label %1340 unwind label %1344

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

.preheader:                                       ; preds = %1340
  %1341 = call noundef zeroext i1 @_ZNK16HighsMatrixSliceI25HighsTripletPositionSliceE8iteratorneERKS2_(ptr noundef nonnull align 8 dereferenceable(28) %49, ptr noundef nonnull align 8 dereferenceable(28) %50)
  br i1 %1341, label %.lr.ph678, label %._crit_edge679

1342:                                             ; preds = %1331
  %1343 = landingpad { ptr, i32 }
          cleanup
  br label %1593

1344:                                             ; preds = %1339
  %1345 = landingpad { ptr, i32 }
          cleanup
  br label %1385

1346:                                             ; preds = %1340
  %1347 = landingpad { ptr, i32 }
          cleanup
  br label %1384

.lr.ph678:                                        ; preds = %.preheader, %.thread558
  %1348 = call noundef nonnull align 8 dereferenceable(16) ptr @_ZN16HighsMatrixSliceI25HighsTripletPositionSliceE8iteratordeEv(ptr noundef nonnull align 8 dereferenceable(28) %49)
  %1349 = call noundef i32 @_ZNK17HighsSliceNonzero5indexEv(ptr noundef nonnull align 8 dereferenceable(16) %1348)
  %1350 = sext i32 %1349 to i64
  %1351 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNSt6vectorIiSaIiEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %76, i64 noundef %1350) #8
  %1352 = load i32, ptr %1351, align 4, !tbaa !76
  %1353 = icmp eq i32 %1352, 1
  br i1 %1353, label %.thread558, label %1354

1354:                                             ; preds = %.lr.ph678
  %1355 = call noundef i32 @_ZNK17HighsSliceNonzero5indexEv(ptr noundef nonnull align 8 dereferenceable(16) %1348)
  %1356 = invoke noundef i32 @_ZN8presolve9HPresolve11findNonzeroEii(ptr noundef nonnull align 8 dereferenceable(1720) %0, i32 noundef %1254, i32 noundef %1355)
          to label %1357 unwind label %1358

1357:                                             ; preds = %1354
  %.not592 = icmp eq i32 %1356, -1
  br i1 %.not592, label %.thread568, label %1360

1358:                                             ; preds = %1354
  %1359 = landingpad { ptr, i32 }
          cleanup
  br label %1384

1360:                                             ; preds = %1357
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %51) #8
  %1361 = sext i32 %1356 to i64
  %1362 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt6vectorIdSaIdEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %80, i64 noundef %1361) #8
  %1363 = load double, ptr %1362, align 8, !tbaa !75
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %52) #8
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %53) #8
  call void @_ZN12HighsCDoubleC2Ed(ptr noundef nonnull align 8 dereferenceable(16) %53, double noundef %1338)
  %1364 = call noundef double @_ZNK17HighsSliceNonzero5valueEv(ptr noundef nonnull align 8 dereferenceable(16) %1348)
  %1365 = invoke { double, double } @_ZNK12HighsCDoublemlEd(ptr noundef nonnull align 8 dereferenceable(16) %53, double noundef %1364)
          to label %1366 unwind label %1379

1366:                                             ; preds = %1360
  %1367 = extractvalue { double, double } %1365, 0
  store double %1367, ptr %52, align 8
  %1368 = extractvalue { double, double } %1365, 1
  store double %1368, ptr %1168, align 8
  %1369 = invoke { double, double } @_ZmidRK12HighsCDouble(double noundef %1363, ptr noundef nonnull align 8 dereferenceable(16) %52)
          to label %1370 unwind label %1379

1370:                                             ; preds = %1366
  %1371 = extractvalue { double, double } %1369, 0
  store double %1371, ptr %51, align 8
  %1372 = extractvalue { double, double } %1369, 1
  store double %1372, ptr %1169, align 8
  %1373 = call noundef double @_ZNK12HighsCDoublecvdEv(ptr noundef nonnull align 8 dereferenceable(16) %51)
  %1374 = call noundef double @_ZSt3absd(double noundef %1373)
  %1375 = load ptr, ptr %1167, align 8, !tbaa !81
  %1376 = getelementptr inbounds i8, ptr %1375, i64 264
  %1377 = load double, ptr %1376, align 8, !tbaa !82
  %1378 = fcmp ugt double %1374, %1377
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %53) #8
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %52) #8
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %51) #8
  br i1 %1378, label %.thread568, label %.thread558

1379:                                             ; preds = %1366, %1360
  %1380 = landingpad { ptr, i32 }
          cleanup
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %53) #8
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %52) #8
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %51) #8
  br label %1384

.thread568:                                       ; preds = %1370, %1357
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %50) #8
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %49) #8
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %48) #8
  br label %select.unfold570

.thread558:                                       ; preds = %1370, %.lr.ph678
  %1381 = call noundef nonnull align 8 dereferenceable(28) ptr @_ZN16HighsMatrixSliceI25HighsTripletPositionSliceE8iteratorppEv(ptr noundef nonnull align 8 dereferenceable(28) %49)
  %1382 = call noundef zeroext i1 @_ZNK16HighsMatrixSliceI25HighsTripletPositionSliceE8iteratorneERKS2_(ptr noundef nonnull align 8 dereferenceable(28) %49, ptr noundef nonnull align 8 dereferenceable(28) %50)
  br i1 %1382, label %.lr.ph678, label %._crit_edge679

._crit_edge679:                                   ; preds = %.thread558, %.preheader
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %50) #8
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %49) #8
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %48) #8
  %1383 = or i32 %1256, %1217
  %or.cond26 = icmp eq i32 %1383, 0
  br i1 %or.cond26, label %1386, label %1507

1384:                                             ; preds = %1358, %1379, %1346
  %.pn476.pn = phi { ptr, i32 } [ %1347, %1346 ], [ %1380, %1379 ], [ %1359, %1358 ]
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %50) #8
  br label %1385

1385:                                             ; preds = %1384, %1344
  %.pn476.pn.pn = phi { ptr, i32 } [ %.pn476.pn, %1384 ], [ %1345, %1344 ]
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %49) #8
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %48) #8
  br label %1593

1386:                                             ; preds = %._crit_edge679
  %1387 = fcmp ogt double %1338, 0.000000e+00
  %1388 = load ptr, ptr %0, align 8, !tbaa !92
  %1389 = getelementptr inbounds i8, ptr %1388, i64 104
  %1390 = load i32, ptr %42, align 4, !tbaa !76
  %1391 = sext i32 %1390 to i64
  %1392 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt6vectorIdSaIdEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %1389, i64 noundef %1391) #8
  %1393 = load double, ptr %1392, align 8, !tbaa !75
  %1394 = load ptr, ptr %0, align 8, !tbaa !92
  %1395 = getelementptr inbounds i8, ptr %1394, i64 80
  %1396 = load i32, ptr %42, align 4, !tbaa !76
  %1397 = sext i32 %1396 to i64
  %1398 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt6vectorIdSaIdEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %1395, i64 noundef %1397) #8
  %1399 = load double, ptr %1398, align 8, !tbaa !75
  %. = select i1 %1387, double %1393, double %1399
  %.838 = select i1 %1387, double %1399, double %1393
  %.0391 = fmul double %1338, %.838
  %.0393 = fmul double %1338, %.
  %1400 = load ptr, ptr %0, align 8, !tbaa !92
  %1401 = getelementptr inbounds i8, ptr %1400, i64 104
  %1402 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt6vectorIdSaIdEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %1401, i64 noundef %1274) #8
  %1403 = load double, ptr %1402, align 8, !tbaa !75
  %1404 = fcmp olt double %.0393, %1403
  br i1 %1404, label %1405, label %1444

1405:                                             ; preds = %1386
  %1406 = load ptr, ptr %0, align 8, !tbaa !92
  %1407 = getelementptr inbounds i8, ptr %1406, i64 80
  %1408 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt6vectorIdSaIdEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %1407, i64 noundef %1274) #8
  %1409 = load double, ptr %1408, align 8, !tbaa !75
  %1410 = load double, ptr %1170, align 8, !tbaa !133
  %1411 = fsub double %1409, %1410
  %1412 = fcmp olt double %.0393, %1411
  br i1 %1412, label %.thread573, label %1413

1413:                                             ; preds = %1405
  %1414 = load ptr, ptr %0, align 8, !tbaa !92
  %1415 = getelementptr inbounds i8, ptr %1414, i64 80
  %1416 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt6vectorIdSaIdEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %1415, i64 noundef %1274) #8
  %1417 = load double, ptr %1416, align 8, !tbaa !75
  %1418 = load double, ptr %1170, align 8, !tbaa !133
  %1419 = fadd double %1417, %1418
  %1420 = fcmp ugt double %.0393, %1419
  br i1 %1420, label %1426, label %1421

1421:                                             ; preds = %1413
  %1422 = load ptr, ptr %0, align 8, !tbaa !92
  %1423 = getelementptr inbounds i8, ptr %1422, i64 80
  %1424 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt6vectorIdSaIdEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %1423, i64 noundef %1274) #8
  %1425 = load double, ptr %1424, align 8, !tbaa !75
  br label %1426

1426:                                             ; preds = %1421, %1413
  %.1394 = phi double [ %1425, %1421 ], [ %.0393, %1413 ]
  %1427 = load ptr, ptr %0, align 8, !tbaa !92
  %1428 = getelementptr inbounds i8, ptr %1427, i64 104
  %1429 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt6vectorIdSaIdEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %1428, i64 noundef %1274) #8
  %1430 = load double, ptr %1429, align 8, !tbaa !75
  %1431 = fcmp olt double %.1394, %1430
  br i1 %1431, label %1432, label %1444

1432:                                             ; preds = %1426
  %1433 = load i32, ptr %42, align 4, !tbaa !76
  %1434 = sext i32 %1433 to i64
  %.922 = select i1 %1387, ptr %1172, ptr %1171
  %1435 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt6vectorIdSaIdEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %.922, i64 noundef %1434) #8
  %1436 = load double, ptr %1435, align 8, !tbaa !75
  %1437 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt6vectorIdSaIdEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %1172, i64 noundef %1274) #8
  %.sink839 = fdiv double %1436, %1338
  %.pn854 = load double, ptr %1437, align 8, !tbaa !75
  %.sink841 = fmul double %1338, %.pn854
  %.sink845 = load i32, ptr %42, align 4, !tbaa !76
  %1438 = sext i32 %.sink845 to i64
  %1439 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt6vectorIdSaIdEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %.922, i64 noundef %1438) #8
  store double %.sink841, ptr %1439, align 8, !tbaa !75
  %1440 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt6vectorIdSaIdEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %1172, i64 noundef %1274) #8
  store double %.sink839, ptr %1440, align 8, !tbaa !75
  %1441 = load ptr, ptr %0, align 8, !tbaa !92
  %1442 = getelementptr inbounds i8, ptr %1441, i64 104
  %1443 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt6vectorIdSaIdEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %1442, i64 noundef %1274) #8
  store double %.1394, ptr %1443, align 8, !tbaa !75
  br label %1444

1444:                                             ; preds = %1426, %1432, %1386
  %.0395 = phi i1 [ true, %1432 ], [ false, %1426 ], [ false, %1386 ]
  %1445 = load ptr, ptr %0, align 8, !tbaa !92
  %1446 = getelementptr inbounds i8, ptr %1445, i64 80
  %1447 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt6vectorIdSaIdEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %1446, i64 noundef %1274) #8
  %1448 = load double, ptr %1447, align 8, !tbaa !75
  %1449 = fcmp ogt double %.0391, %1448
  br i1 %1449, label %1450, label %1489

1450:                                             ; preds = %1444
  %1451 = load ptr, ptr %0, align 8, !tbaa !92
  %1452 = getelementptr inbounds i8, ptr %1451, i64 104
  %1453 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt6vectorIdSaIdEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %1452, i64 noundef %1274) #8
  %1454 = load double, ptr %1453, align 8, !tbaa !75
  %1455 = load double, ptr %1170, align 8, !tbaa !133
  %1456 = fadd double %1454, %1455
  %1457 = fcmp ogt double %.0391, %1456
  br i1 %1457, label %.thread573, label %1458

1458:                                             ; preds = %1450
  %1459 = load ptr, ptr %0, align 8, !tbaa !92
  %1460 = getelementptr inbounds i8, ptr %1459, i64 104
  %1461 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt6vectorIdSaIdEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %1460, i64 noundef %1274) #8
  %1462 = load double, ptr %1461, align 8, !tbaa !75
  %1463 = load double, ptr %1170, align 8, !tbaa !133
  %1464 = fsub double %1462, %1463
  %1465 = fcmp ult double %.0391, %1464
  br i1 %1465, label %1471, label %1466

1466:                                             ; preds = %1458
  %1467 = load ptr, ptr %0, align 8, !tbaa !92
  %1468 = getelementptr inbounds i8, ptr %1467, i64 104
  %1469 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt6vectorIdSaIdEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %1468, i64 noundef %1274) #8
  %1470 = load double, ptr %1469, align 8, !tbaa !75
  br label %1471

1471:                                             ; preds = %1466, %1458
  %.1392 = phi double [ %1470, %1466 ], [ %.0391, %1458 ]
  %1472 = load ptr, ptr %0, align 8, !tbaa !92
  %1473 = getelementptr inbounds i8, ptr %1472, i64 80
  %1474 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt6vectorIdSaIdEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %1473, i64 noundef %1274) #8
  %1475 = load double, ptr %1474, align 8, !tbaa !75
  %1476 = fcmp ogt double %.1392, %1475
  br i1 %1476, label %1477, label %1489

1477:                                             ; preds = %1471
  %1478 = load i32, ptr %42, align 4, !tbaa !76
  %1479 = sext i32 %1478 to i64
  %.923 = select i1 %1387, ptr %1171, ptr %1172
  %1480 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt6vectorIdSaIdEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %.923, i64 noundef %1479) #8
  %1481 = load double, ptr %1480, align 8, !tbaa !75
  %1482 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt6vectorIdSaIdEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %1171, i64 noundef %1274) #8
  %.sink846 = fdiv double %1481, %1338
  %.pn856 = load double, ptr %1482, align 8, !tbaa !75
  %.sink848 = fmul double %1338, %.pn856
  %.sink852 = load i32, ptr %42, align 4, !tbaa !76
  %1483 = sext i32 %.sink852 to i64
  %1484 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt6vectorIdSaIdEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %.923, i64 noundef %1483) #8
  store double %.sink848, ptr %1484, align 8, !tbaa !75
  %1485 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt6vectorIdSaIdEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %1171, i64 noundef %1274) #8
  store double %.sink846, ptr %1485, align 8, !tbaa !75
  %1486 = load ptr, ptr %0, align 8, !tbaa !92
  %1487 = getelementptr inbounds i8, ptr %1486, i64 80
  %1488 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt6vectorIdSaIdEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %1487, i64 noundef %1274) #8
  store double %.1392, ptr %1488, align 8, !tbaa !75
  br label %1489

1489:                                             ; preds = %1471, %1477, %1444
  %.0396 = phi i1 [ true, %1477 ], [ false, %1471 ], [ false, %1444 ]
  invoke void @_ZN8presolve9HPresolve25resetRowDualImpliedBoundsEii(ptr noundef nonnull align 8 dereferenceable(1720) %0, i32 noundef %1254, i32 noundef -1)
          to label %1490 unwind label %1498

1490:                                             ; preds = %1489
  %1491 = load i32, ptr %42, align 4, !tbaa !76
  invoke void @_ZN8presolve19HighsPostsolveStack12duplicateRowEibbid(ptr noundef nonnull align 8 dereferenceable(224) %1, i32 noundef %1254, i1 noundef zeroext %.0395, i1 noundef zeroext %.0396, i32 noundef %1491, double noundef %1338)
          to label %1492 unwind label %1498

1492:                                             ; preds = %1490
  %1493 = load i32, ptr %42, align 4, !tbaa !76
  invoke void @_ZN8presolve9HPresolve14markRowDeletedEi(ptr noundef nonnull align 8 dereferenceable(1720) %0, i32 noundef %1493)
          to label %1494 unwind label %1498

1494:                                             ; preds = %1492
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %54) #8
  %1495 = call ptr @_ZNSt6vectorIiSaIiEE5beginEv(ptr noundef nonnull align 8 dereferenceable(24) %1173) #8
  store ptr %1495, ptr %54, align 8
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %55) #8
  %1496 = call ptr @_ZNSt6vectorIiSaIiEE3endEv(ptr noundef nonnull align 8 dereferenceable(24) %1173) #8
  store ptr %1496, ptr %55, align 8
  %1497 = call noundef zeroext i1 @_ZN9__gnu_cxxneIPiSt6vectorIiSaIiEEEEbRKNS_17__normal_iteratorIT_T0_EESA_(ptr noundef nonnull align 8 dereferenceable(8) %54, ptr noundef nonnull align 8 dereferenceable(8) %55) #8
  br i1 %1497, label %.lr.ph685, label %.thread577

.thread577:                                       ; preds = %1502, %1494
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %55) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %54) #8
  br label %.loopexit

1498:                                             ; preds = %1492, %1490, %1489
  %1499 = landingpad { ptr, i32 }
          cleanup
  br label %1593

.lr.ph685:                                        ; preds = %1494, %1502
  %1500 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNK9__gnu_cxx17__normal_iteratorIPiSt6vectorIiSaIiEEEdeEv(ptr noundef nonnull align 8 dereferenceable(8) %54) #8
  %1501 = load i32, ptr %1500, align 4, !tbaa !76
  invoke void @_ZN8presolve9HPresolve6unlinkEi(ptr noundef nonnull align 8 dereferenceable(1720) %0, i32 noundef %1501)
          to label %1502 unwind label %1505

1502:                                             ; preds = %.lr.ph685
  %1503 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZN9__gnu_cxx17__normal_iteratorIPiSt6vectorIiSaIiEEEppEv(ptr noundef nonnull align 8 dereferenceable(8) %54) #8
  %1504 = call noundef zeroext i1 @_ZN9__gnu_cxxneIPiSt6vectorIiSaIiEEEEbRKNS_17__normal_iteratorIT_T0_EESA_(ptr noundef nonnull align 8 dereferenceable(8) %54, ptr noundef nonnull align 8 dereferenceable(8) %55) #8
  br i1 %1504, label %.lr.ph685, label %.thread577

1505:                                             ; preds = %.lr.ph685
  %1506 = landingpad { ptr, i32 }
          cleanup
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %55) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %54) #8
  br label %1593

1507:                                             ; preds = %._crit_edge679
  %1508 = load ptr, ptr %0, align 8, !tbaa !92
  %1509 = getelementptr inbounds i8, ptr %1508, i64 80
  %1510 = load i32, ptr %42, align 4, !tbaa !76
  %1511 = sext i32 %1510 to i64
  %1512 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt6vectorIdSaIdEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %1509, i64 noundef %1511) #8
  %1513 = load double, ptr %1512, align 8, !tbaa !75
  %1514 = load ptr, ptr %0, align 8, !tbaa !92
  %1515 = getelementptr inbounds i8, ptr %1514, i64 104
  %1516 = load i32, ptr %42, align 4, !tbaa !76
  %1517 = sext i32 %1516 to i64
  %1518 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt6vectorIdSaIdEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %1515, i64 noundef %1517) #8
  %1519 = load double, ptr %1518, align 8, !tbaa !75
  %1520 = fcmp oeq double %1513, %1519
  br i1 %1520, label %1521, label %1529

1521:                                             ; preds = %1507
  %1522 = load i32, ptr %42, align 4, !tbaa !76
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %56) #8
  invoke void @_ZNK8presolve9HPresolve12getStoredRowEv(ptr dead_on_unwind nonnull writable sret(%struct.HighsTripletPositionSlice) align 8 %56, ptr noundef nonnull align 8 dereferenceable(1720) %0)
          to label %1523 unwind label %1527

1523:                                             ; preds = %1521
  %1524 = fneg double %1338
  %1525 = invoke noundef i32 @_ZN8presolve9HPresolve19equalityRowAdditionI25HighsTripletPositionSliceEENS0_6ResultERNS_19HighsPostsolveStackEiidRK16HighsMatrixSliceIT_E(ptr noundef nonnull align 8 dereferenceable(1720) %0, ptr noundef nonnull align 8 dereferenceable(224) %1, i32 noundef %1522, i32 noundef %1254, double noundef %1524, ptr noundef nonnull align 8 dereferenceable(28) %56)
          to label %1526 unwind label %1527

1526:                                             ; preds = %1523
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %56) #8
  %.not482 = icmp eq i32 %1525, 0
  br i1 %.not482, label %select.unfold570, label %.thread573

1527:                                             ; preds = %1523, %1521
  %1528 = landingpad { ptr, i32 }
          cleanup
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %56) #8
  br label %1593

1529:                                             ; preds = %1507
  %1530 = load ptr, ptr %0, align 8, !tbaa !92
  %1531 = getelementptr inbounds i8, ptr %1530, i64 80
  %1532 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt6vectorIdSaIdEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %1531, i64 noundef %1274) #8
  %1533 = load double, ptr %1532, align 8, !tbaa !75
  %1534 = load ptr, ptr %0, align 8, !tbaa !92
  %1535 = getelementptr inbounds i8, ptr %1534, i64 104
  %1536 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt6vectorIdSaIdEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %1535, i64 noundef %1274) #8
  %1537 = load double, ptr %1536, align 8, !tbaa !75
  %1538 = fcmp oeq double %1533, %1537
  br i1 %1538, label %1539, label %1554

1539:                                             ; preds = %1529
  %1540 = load i32, ptr %42, align 4, !tbaa !76
  %1541 = sext i32 %1540 to i64
  %1542 = call noundef nonnull align 8 dereferenceable(12) ptr @_ZNSt6vectorISt4pairIdiESaIS1_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %6, i64 noundef %1541) #8
  %1543 = load double, ptr %1542, align 8, !tbaa !78
  %1544 = call noundef nonnull align 8 dereferenceable(12) ptr @_ZNSt6vectorISt4pairIdiESaIS1_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %6, i64 noundef %1274) #8
  %1545 = load double, ptr %1544, align 8, !tbaa !78
  call void @llvm.lifetime.start.p0(i64 40, ptr nonnull %57) #8
  invoke void @_ZNK8presolve9HPresolve12getRowVectorEi(ptr dead_on_unwind nonnull writable sret(%struct.HighsTripletTreeSlicePreOrder) align 8 %57, ptr noundef nonnull align 8 dereferenceable(1720) %0, i32 noundef %1254)
          to label %1546 unwind label %1552

1546:                                             ; preds = %1539
  %1547 = fneg double %1543
  %1548 = fdiv double %1547, %1545
  %1549 = invoke noundef i32 @_ZN8presolve9HPresolve19equalityRowAdditionI29HighsTripletTreeSlicePreOrderEENS0_6ResultERNS_19HighsPostsolveStackEiidRK16HighsMatrixSliceIT_E(ptr noundef nonnull align 8 dereferenceable(1720) %0, ptr noundef nonnull align 8 dereferenceable(224) %1, i32 noundef %1254, i32 noundef %1540, double noundef %1548, ptr noundef nonnull align 8 dereferenceable(36) %57)
          to label %1550 unwind label %1552

1550:                                             ; preds = %1546
  call void @llvm.lifetime.end.p0(i64 40, ptr nonnull %57) #8
  %.not481 = icmp eq i32 %1549, 0
  %1551 = load i32, ptr %42, align 4
  br i1 %.not481, label %select.unfold570, label %.thread573

1552:                                             ; preds = %1546, %1539
  %1553 = landingpad { ptr, i32 }
          cleanup
  call void @llvm.lifetime.end.p0(i64 40, ptr nonnull %57) #8
  br label %1593

1554:                                             ; preds = %1529
  br i1 %1242, label %1556, label %1555

1555:                                             ; preds = %1554
  call void @__assert_fail(ptr noundef nonnull @.str.163, ptr noundef nonnull @.str.55, i32 noundef 6355, ptr noundef nonnull @__PRETTY_FUNCTION__._ZN8presolve9HPresolve25detectParallelRowsAndColsERNS_19HighsPostsolveStackE) #9
  unreachable

1556:                                             ; preds = %1554
  %1557 = icmp eq i32 %1256, 1
  br i1 %1557, label %1559, label %1558

1558:                                             ; preds = %1556
  call void @__assert_fail(ptr noundef nonnull @.str.164, ptr noundef nonnull @.str.55, i32 noundef 6356, ptr noundef nonnull @__PRETTY_FUNCTION__._ZN8presolve9HPresolve25detectParallelRowsAndColsERNS_19HighsPostsolveStackE) #9
  unreachable

1559:                                             ; preds = %1556
  %1560 = load ptr, ptr %0, align 8, !tbaa !92
  %1561 = getelementptr inbounds i8, ptr %1560, i64 104
  %1562 = load i32, ptr %42, align 4, !tbaa !76
  %1563 = sext i32 %1562 to i64
  %1564 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt6vectorIdSaIdEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %1561, i64 noundef %1563) #8
  %1565 = load ptr, ptr %0, align 8, !tbaa !92
  %1566 = getelementptr inbounds i8, ptr %1565, i64 80
  %1567 = load i32, ptr %42, align 4, !tbaa !76
  %1568 = sext i32 %1567 to i64
  %1569 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt6vectorIdSaIdEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %1566, i64 noundef %1568) #8
  br label %select.unfold570

select.unfold570:                                 ; preds = %1559, %1526, %1550, %.thread568, %1321, %1295, %1296, %1268, %1260
  %.4408 = phi i32 [ %.0404680, %1260 ], [ %.0404680, %1268 ], [ %.0404680, %1296 ], [ %.0404680, %1295 ], [ %.0404680, %1321 ], [ %.0404680, %.thread568 ], [ %1551, %1550 ], [ %1254, %1526 ], [ %.0404680, %1559 ]
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %47) #8
  %1570 = call ptr @_ZNSt18unordered_multimapImiSt4hashImESt8equal_toImESaISt4pairIKmiEEE3endEv(ptr noundef nonnull align 8 dereferenceable(56) %11) #8
  store ptr %1570, ptr %47, align 8
  %1571 = call noundef zeroext i1 @_ZNSt8__detailneERKNS_19_Node_iterator_baseISt4pairIKmiELb0EEES6_(ptr noundef nonnull align 8 dereferenceable(8) %43, ptr noundef nonnull align 8 dereferenceable(8) %47) #8
  br i1 %1571, label %1243, label %.critedge19

.critedge19:                                      ; preds = %select.unfold570, %1238
  %.0404.lcssa = phi i32 [ -1, %1238 ], [ %.4408, %select.unfold570 ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %47) #8
  br label %.loopexit

.loopexit:                                        ; preds = %1243, %.thread577, %.critedge19
  %.5409 = phi i32 [ %.0404.lcssa, %.critedge19 ], [ %1493, %.thread577 ], [ %.0404680, %1243 ]
  %.not489 = icmp eq i32 %.5409, -1
  br i1 %.not489, label %1581, label %1572

1572:                                             ; preds = %.loopexit
  %1573 = load i32, ptr %42, align 4, !tbaa !76
  %.not490 = icmp eq i32 %.5409, %1573
  br i1 %.not490, label %1576, label %1574

1574:                                             ; preds = %1572
  %.sroa.029.0.copyload = load ptr, ptr %44, align 8
  %1575 = invoke ptr @_ZNSt18unordered_multimapImiSt4hashImESt8equal_toImESaISt4pairIKmiEEE5eraseENSt8__detail14_Node_iteratorIS6_Lb0ELb0EEE(ptr noundef nonnull align 8 dereferenceable(56) %11, ptr %.sroa.029.0.copyload)
          to label %1576 unwind label %1236

1576:                                             ; preds = %1574, %1572
  %1577 = invoke noundef i32 @_ZN8presolve9HPresolve11checkLimitsERNS_19HighsPostsolveStackE(ptr noundef nonnull align 8 dereferenceable(1720) %0, ptr noundef nonnull align 8 dereferenceable(224) %1)
          to label %1578 unwind label %1579

1578:                                             ; preds = %1576
  %.not495 = icmp eq i32 %1577, 0
  br i1 %.not495, label %.thread583, label %.thread573

1579:                                             ; preds = %1576
  %1580 = landingpad { ptr, i32 }
          cleanup
  br label %1593

1581:                                             ; preds = %.loopexit
  call void @_ZNSt8__detail20_Node_const_iteratorISt4pairIKmiELb0ELb0EEC2ERKNS_14_Node_iteratorIS3_Lb0ELb0EEE(ptr noundef nonnull align 8 dereferenceable(8) %58, ptr noundef nonnull align 8 dereferenceable(8) %44) #8
  %1582 = load i32, ptr %42, align 4, !tbaa !76
  %1583 = sext i32 %1582 to i64
  %1584 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt6vectorImSaImEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %4, i64 noundef %1583) #8
  %1585 = load ptr, ptr %58, align 8
  %1586 = invoke ptr @_ZNSt18unordered_multimapImiSt4hashImESt8equal_toImESaISt4pairIKmiEEE12emplace_hintIJRmRiEEENSt8__detail14_Node_iteratorIS6_Lb0ELb0EEENSC_20_Node_const_iteratorIS6_Lb0ELb0EEEDpOT_(ptr noundef nonnull align 8 dereferenceable(56) %11, ptr %1585, ptr noundef nonnull align 8 dereferenceable(8) %1584, ptr noundef nonnull align 4 dereferenceable(4) %42)
          to label %.thread583 unwind label %1236

.thread583:                                       ; preds = %1221, %1581, %1578
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %45) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %44) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %43) #8
  br label %1587

.thread573:                                       ; preds = %1450, %1405, %1578, %1526, %1550
  %.26 = phi i32 [ %1549, %1550 ], [ %1525, %1526 ], [ 1, %1405 ], [ 1, %1450 ], [ %1577, %1578 ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %45) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %44) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %43) #8
  br label %.thread587

1587:                                             ; preds = %.thread583, %1207, %1174
  %1588 = load i32, ptr %42, align 4, !tbaa !76
  %1589 = add nsw i32 %1588, 1
  store i32 %1589, ptr %42, align 4, !tbaa !76
  %1590 = load ptr, ptr %0, align 8, !tbaa !92
  %1591 = getelementptr inbounds i8, ptr %1590, i64 4
  %1592 = load i32, ptr %1591, align 4, !tbaa !138
  %.not469 = icmp eq i32 %1589, %1592
  br i1 %.not469, label %._crit_edge690, label %1174, !llvm.loop !142

1593:                                             ; preds = %1236, %1579, %1527, %1552, %1385, %1342, %1505, %1498, %1266, %1229
  %.pn491.pn = phi { ptr, i32 } [ %1230, %1229 ], [ %1580, %1579 ], [ %1237, %1236 ], [ %1267, %1266 ], [ %1528, %1527 ], [ %1553, %1552 ], [ %.pn476.pn.pn, %1385 ], [ %1343, %1342 ], [ %1506, %1505 ], [ %1499, %1498 ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %45) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %44) #8
  br label %1594

1594:                                             ; preds = %1593, %1227
  %.pn491.pn.pn = phi { ptr, i32 } [ %.pn491.pn, %1593 ], [ %1228, %1227 ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %43) #8
  br label %1595

.thread587:                                       ; preds = %1207, %.thread573
  %.28.ph = phi i32 [ %.26, %.thread573 ], [ %1206, %1207 ]
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %42) #8
  br label %1599

1595:                                             ; preds = %1594, %1208
  %.pn496 = phi { ptr, i32 } [ %1209, %1208 ], [ %.pn491.pn.pn, %1594 ]
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %42) #8
  br label %1600

._crit_edge690:                                   ; preds = %1587, %._crit_edge677
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %42) #8
  store i8 %69, ptr %68, align 1, !tbaa !5
  br i1 %70, label %1596, label %1599

1596:                                             ; preds = %._crit_edge690
  invoke void @_ZN17HPresolveAnalysis19stopPresolveRuleLogEi(ptr noundef nonnull align 8 dereferenceable(128) %59, i32 noundef 13)
          to label %1599 unwind label %1597

1597:                                             ; preds = %1596
  %1598 = landingpad { ptr, i32 }
          cleanup
  br label %1600

1599:                                             ; preds = %.thread587, %.thread554, %._crit_edge690, %1596
  %.29 = phi i32 [ 0, %1596 ], [ 0, %._crit_edge690 ], [ %.12.ph, %.thread554 ], [ %.28.ph, %.thread587 ]
  call void @_ZNSt18unordered_multimapImiSt4hashImESt8equal_toImESaISt4pairIKmiEEED2Ev(ptr noundef nonnull align 8 dereferenceable(56) %11) #8
  call void @llvm.lifetime.end.p0(i64 56, ptr nonnull %11) #8
  call void @_ZN14HighsHashTableIiiED2Ev(ptr noundef nonnull align 8 dereferenceable(40) %10) #8
  call void @llvm.lifetime.end.p0(i64 40, ptr nonnull %10) #8
  call void @_ZNSt6vectorISt4pairIdiESaIS1_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %8) #8
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %8) #8
  call void @_ZNSt6vectorISt4pairIdiESaIS1_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %6) #8
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %6) #8
  call void @_ZNSt6vectorImSaImEED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %5) #8
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %5) #8
  call void @_ZNSt6vectorImSaImEED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %4) #8
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %4) #8
  ret i32 %.29

1600:                                             ; preds = %1597, %1595, %1161
  %.pn499 = phi { ptr, i32 } [ %1598, %1597 ], [ %.pn496, %1595 ], [ %.pn465, %1161 ]
  call void @_ZNSt18unordered_multimapImiSt4hashImESt8equal_toImESaISt4pairIKmiEEED2Ev(ptr noundef nonnull align 8 dereferenceable(56) %11) #8
  call void @llvm.lifetime.end.p0(i64 56, ptr nonnull %11) #8
  br label %1601

1601:                                             ; preds = %1600, %318, %142, %104
  %.pn504 = phi { ptr, i32 } [ %143, %142 ], [ %319, %318 ], [ %.pn499, %1600 ], [ %105, %104 ]
  call void @_ZN14HighsHashTableIiiED2Ev(ptr noundef nonnull align 8 dereferenceable(40) %10) #8
  br label %1602

1602:                                             ; preds = %1601, %102
  %.pn504.pn = phi { ptr, i32 } [ %.pn504, %1601 ], [ %103, %102 ]
  call void @llvm.lifetime.end.p0(i64 40, ptr nonnull %10) #8
  call void @_ZNSt6vectorISt4pairIdiESaIS1_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %8) #8
  br label %1603

1603:                                             ; preds = %1602, %100
  %.pn504.pn.pn = phi { ptr, i32 } [ %.pn504.pn, %1602 ], [ %101, %100 ]
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %8) #8
  call void @_ZNSt6vectorISt4pairIdiESaIS1_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %6) #8
  br label %1604

1604:                                             ; preds = %1603, %98
  %.pn504.pn.pn.pn = phi { ptr, i32 } [ %.pn504.pn.pn, %1603 ], [ %99, %98 ]
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %6) #8
  call void @_ZNSt6vectorImSaImEED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %5) #8
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %5) #8
  call void @_ZNSt6vectorImSaImEED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %4) #8
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %4) #8
  resume { ptr, i32 } %.pn504.pn.pn.pn
}

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

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

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

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

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

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

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

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

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

; Function Attrs: mustprogress uwtable
declare dso_local noundef i32 @_ZN16HighsHashHelpers16double_hash_codeEd(double noundef) local_unnamed_addr #4 align 2

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

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

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

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

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

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

; Function Attrs: mustprogress uwtable
declare dso_local { double, double } @_ZmldRK12HighsCDouble(double noundef, ptr noundef nonnull align 8 dereferenceable(16)) local_unnamed_addr #4

; Function Attrs: inlinehint mustprogress uwtable
declare hidden noundef zeroext i1 @"_ZZN8presolve9HPresolve25detectParallelRowsAndColsERNS_19HighsPostsolveStackEENK3$_2clEv"(ptr noundef nonnull align 8 dereferenceable(48)) local_unnamed_addr #7 align 2

; Function Attrs: inlinehint mustprogress nounwind uwtable
declare hidden noundef zeroext i1 @"_ZZN8presolve9HPresolve25detectParallelRowsAndColsERNS_19HighsPostsolveStackEENK3$_5clEv"(ptr noundef nonnull align 8 dereferenceable(32)) local_unnamed_addr #2 align 2

; Function Attrs: inlinehint mustprogress nounwind uwtable
declare hidden noundef zeroext i1 @"_ZZN8presolve9HPresolve25detectParallelRowsAndColsERNS_19HighsPostsolveStackEENK3$_3clEv"(ptr noundef nonnull align 8 dereferenceable(48)) local_unnamed_addr #2 align 2

; Function Attrs: inlinehint mustprogress nounwind uwtable
declare hidden noundef zeroext i1 @"_ZZN8presolve9HPresolve25detectParallelRowsAndColsERNS_19HighsPostsolveStackEENK3$_4clEv"(ptr noundef nonnull align 8 dereferenceable(32)) local_unnamed_addr #2 align 2

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

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

; Function Attrs: mustprogress uwtable
declare dso_local ptr @_ZNSt18unordered_multimapImiSt4hashImESt8equal_toImESaISt4pairIKmiEEE12emplace_hintIJRmRiEEENSt8__detail14_Node_iteratorIS6_Lb0ELb0EEENSC_20_Node_const_iteratorIS6_Lb0ELb0EEEDpOT_(ptr noundef nonnull align 8 dereferenceable(56), ptr, 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 void @_ZNSt8__detail20_Node_const_iteratorISt4pairIKmiELb0ELb0EEC2ERKNS_14_Node_iteratorIS3_Lb0ELb0EEE(ptr noundef nonnull align 8 dereferenceable(8), ptr noundef nonnull align 8 dereferenceable(8)) unnamed_addr #1 align 2

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

; Function Attrs: inlinehint mustprogress uwtable
declare hidden noundef i32 @"_ZZN8presolve9HPresolve25detectParallelRowsAndColsERNS_19HighsPostsolveStackEENK3$_6clEi"(ptr noundef nonnull align 8 dereferenceable(8), i32 noundef) local_unnamed_addr #7 align 2

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

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

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

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

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

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

; Function Attrs: mustprogress nounwind uwtable
declare dso_local void @_ZNSt6vectorImSaImEED2Ev(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 = { "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 = { inlinehint mustprogress uwtable "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }
attributes #8 = { nounwind }
attributes #9 = { 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, !54, i64 1681}
!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 = !{i8 0, i8 2}
!74 = !{}
!75 = !{!10, !10, i64 0}
!76 = !{!59, !59, i64 0}
!77 = !{!8, !8, i64 0}
!78 = !{!79, !10, i64 0}
!79 = !{!"_ZTSSt4pairIdiE", !10, i64 0, !59, i64 8}
!80 = !{!38, !38, i64 0}
!81 = !{!6, !7, i64 8}
!82 = !{!83, !10, i64 264}
!83 = !{!"_ZTS18HighsOptionsStruct", !84, i64 8, !84, i64 40, !84, i64 72, !84, i64 104, !10, i64 136, !84, i64 144, !84, i64 176, !59, i64 208, !84, 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, !84, i64 392, !54, i64 424, !54, i64 425, !54, i64 426, !59, i64 428, !59, i64 432, !84, 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, !84, 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, !84, i64 856, !54, i64 888, !59, i64 892, !86, i64 896}
!84 = !{!"_ZTSNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE", !85, i64 0, !38, i64 8, !8, i64 16}
!85 = !{!"_ZTSNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE12_Alloc_hiderE", !7, i64 0}
!86 = !{!"_ZTS15HighsLogOptions", !7, i64 0, !7, i64 8, !7, i64 16, !7, i64 24, !7, i64 32, !7, i64 40, !87, i64 48, !7, i64 80, !54, i64 88}
!87 = !{!"_ZTSSt8functionIFviRKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEPK20HighsCallbackDataOutP19HighsCallbackDataInPvEE", !88, i64 0, !7, i64 24}
!88 = !{!"_ZTSSt14_Function_base", !8, i64 0, !7, i64 16}
!89 = !{!79, !59, i64 8}
!90 = distinct !{!90, !91}
!91 = !{!"llvm.loop.mustprogress"}
!92 = !{!6, !7, i64 0}
!93 = !{!94, !59, i64 0}
!94 = !{!"_ZTS7HighsLp", !59, i64 0, !59, i64 4, !11, i64 8, !11, i64 32, !11, i64 56, !11, i64 80, !11, i64 104, !95, i64 128, !97, i64 240, !10, i64 248, !84, i64 256, !84, i64 288, !59, i64 320, !59, i64 324, !98, i64 328, !98, i64 352, !102, i64 376, !106, i64 400, !106, i64 456, !59, i64 512, !59, i64 516, !109, i64 520, !54, i64 592, !54, i64 593, !59, i64 596, !54, i64 600, !110, i64 608}
!95 = !{!"_ZTS17HighsSparseMatrix", !96, i64 0, !59, i64 4, !59, i64 8, !15, i64 16, !15, i64 40, !15, i64 64, !11, i64 88}
!96 = !{!"_ZTS12MatrixFormat", !8, i64 0}
!97 = !{!"_ZTS8ObjSense", !8, i64 0}
!98 = !{!"_ZTSSt6vectorINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESaIS5_EE", !99, i64 0}
!99 = !{!"_ZTSSt12_Vector_baseINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESaIS5_EE", !100, i64 0}
!100 = !{!"_ZTSNSt12_Vector_baseINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESaIS5_EE12_Vector_implE", !101, i64 0}
!101 = !{!"_ZTSNSt12_Vector_baseINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESaIS5_EE17_Vector_impl_dataE", !7, i64 0, !7, i64 8, !7, i64 16}
!102 = !{!"_ZTSSt6vectorI12HighsVarTypeSaIS0_EE", !103, i64 0}
!103 = !{!"_ZTSSt12_Vector_baseI12HighsVarTypeSaIS0_EE", !104, i64 0}
!104 = !{!"_ZTSNSt12_Vector_baseI12HighsVarTypeSaIS0_EE12_Vector_implE", !105, i64 0}
!105 = !{!"_ZTSNSt12_Vector_baseI12HighsVarTypeSaIS0_EE17_Vector_impl_dataE", !7, i64 0, !7, i64 8, !7, i64 16}
!106 = !{!"_ZTS13HighsNameHash", !107, i64 0}
!107 = !{!"_ZTSSt13unordered_mapINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEiSt4hashIS5_ESt8equal_toIS5_ESaISt4pairIKS5_iEEE", !108, i64 0}
!108 = !{!"_ZTSSt10_HashtableINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESt4pairIKS5_iESaIS8_ENSt8__detail10_Select1stESt8equal_toIS5_ESt4hashIS5_ENSA_18_Mod_range_hashingENSA_20_Default_ranged_hashENSA_20_Prime_rehash_policyENSA_17_Hashtable_traitsILb1ELb0ELb1EEEE", !7, i64 0, !38, i64 8, !39, i64 16, !38, i64 24, !40, i64 32, !7, i64 48}
!109 = !{!"_ZTS10HighsScale", !59, i64 0, !54, i64 4, !59, i64 8, !59, i64 12, !10, i64 16, !11, i64 24, !11, i64 48}
!110 = !{!"_ZTS11HighsLpMods", !15, i64 0, !15, i64 24, !11, i64 48, !11, i64 72, !102, i64 96, !15, i64 120, !11, i64 144, !15, i64 168, !11, i64 192, !15, i64 216, !11, i64 240, !11, i64 264, !11, i64 288}
!111 = distinct !{!111, !91}
!112 = !{!113, !38, i64 0}
!113 = !{!"_ZTSSt4pairIKmiE", !38, i64 0, !59, i64 8}
!114 = !{!113, !59, i64 8}
!115 = distinct !{!115, !91}
!116 = !{!54, !54, i64 0}
!117 = !{!118, !7, i64 0}
!118 = !{!"_ZTSZN8presolve9HPresolve25detectParallelRowsAndColsERNS_19HighsPostsolveStackEE3$_0", !7, i64 0}
!119 = !{!120, !7, i64 0}
!120 = !{!"_ZTSZN8presolve9HPresolve25detectParallelRowsAndColsERNS_19HighsPostsolveStackEE3$_1", !7, i64 0}
!121 = !{!7, !7, i64 0}
!122 = !{!123, !7, i64 8}
!123 = !{!"_ZTSZN8presolve9HPresolve25detectParallelRowsAndColsERNS_19HighsPostsolveStackEE3$_2", !7, i64 0, !7, i64 8, !7, i64 16, !7, i64 24, !7, i64 32, !7, i64 40}
!124 = !{!125, !7, i64 8}
!125 = !{!"_ZTSZN8presolve9HPresolve25detectParallelRowsAndColsERNS_19HighsPostsolveStackEE3$_3", !7, i64 0, !7, i64 8, !7, i64 16, !7, i64 24, !7, i64 32, !7, i64 40}
!126 = !{!127, !7, i64 8}
!127 = !{!"_ZTSZN8presolve9HPresolve25detectParallelRowsAndColsERNS_19HighsPostsolveStackEE3$_4", !7, i64 0, !7, i64 8, !7, i64 16, !7, i64 24}
!128 = !{!129, !7, i64 8}
!129 = !{!"_ZTSZN8presolve9HPresolve25detectParallelRowsAndColsERNS_19HighsPostsolveStackEE3$_5", !7, i64 0, !7, i64 8, !7, i64 16, !7, i64 24}
!130 = !{!131, !131, i64 0}
!131 = !{!"_ZTS12HighsVarType", !8, i64 0}
!132 = !{!83, !10, i64 288}
!133 = !{!6, !10, i64 32}
!134 = !{!83, !10, i64 808}
!135 = distinct !{!135, !91}
!136 = !{!6, !60, i64 1588}
!137 = distinct !{!137, !91}
!138 = !{!94, !59, i64 4}
!139 = !{!6, !7, i64 24}
!140 = !{!83, !54, i64 528}
!141 = distinct !{!141, !91}
!142 = distinct !{!142, !91}


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