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

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

%struct.HighsTripletListSlice = type { %class.HighsMatrixSlice.base.391, [4 x i8] }
%class.HighsMatrixSlice.base.391 = type <{ ptr, ptr, ptr, i32 }>
%"class.HighsMatrixSlice<HighsTripletListSlice>::iterator" = type <{ %class.HighsSliceNonzero, ptr, i32, [4 x i8] }>
%class.HighsSliceNonzero = type { ptr, ptr }
%"class.presolve::HPresolve" = type { ptr, ptr, ptr, ptr, double, %"class.std::vector.20", %"class.std::vector.5", %"class.std::vector.5", %"class.std::vector.5", %"class.std::vector.5", %"class.std::vector.5", %"class.std::vector.5", %"class.std::vector.5", %"class.std::vector.5", %"class.std::vector.5", %"class.std::vector.5", %"class.std::vector.5", %"class.std::vector.5", %"class.std::vector.5", %"class.std::vector.5", %"class.std::vector.20", %"class.std::vector.20", %"class.std::vector.5", %"class.std::vector.5", %"class.std::vector.20", %"class.std::vector.20", %"class.std::vector.20", %"class.std::vector.20", %"class.std::vector.5", %"class.std::vector.5", %"class.std::vector.25", %"class.std::vector.25", %class.HighsLinearSumBounds, %class.HighsLinearSumBounds, %"class.std::vector.5", %"class.std::vector.10", %"class.std::vector.5", %"class.std::vector.10", %"class.std::vector.35", %"class.std::unordered_map", %"class.std::set", %"class.std::vector.48", i8, i64, %"class.std::vector.5", %"class.std::vector.5", %"class.std::vector.10", %"class.std::vector.10", %"class.std::vector.53", i64, i32, i32, i32, i32, i32, i32, i8, i32, %class.HPresolveAnalysis }
%"class.std::vector.20" = type { %"struct.std::_Vector_base.21" }
%"struct.std::_Vector_base.21" = type { %"struct.std::_Vector_base<double, std::allocator<double>>::_Vector_impl" }
%"struct.std::_Vector_base<double, std::allocator<double>>::_Vector_impl" = type { %"struct.std::_Vector_base<double, std::allocator<double>>::_Vector_impl_data" }
%"struct.std::_Vector_base<double, std::allocator<double>>::_Vector_impl_data" = type { ptr, ptr, ptr }
%"class.std::vector.25" = type { %"struct.std::_Vector_base.26" }
%"struct.std::_Vector_base.26" = type { %"struct.std::_Vector_base<std::set<int>, std::allocator<std::set<int>>>::_Vector_impl" }
%"struct.std::_Vector_base<std::set<int>, std::allocator<std::set<int>>>::_Vector_impl" = type { %"struct.std::_Vector_base<std::set<int>, std::allocator<std::set<int>>>::_Vector_impl_data" }
%"struct.std::_Vector_base<std::set<int>, std::allocator<std::set<int>>>::_Vector_impl_data" = type { ptr, ptr, ptr }
%class.HighsLinearSumBounds = type { %"class.std::vector.30", %"class.std::vector.30", %"class.std::vector.5", %"class.std::vector.5", %"class.std::vector.30", %"class.std::vector.30", %"class.std::vector.5", %"class.std::vector.5", ptr, ptr, ptr, ptr, ptr, ptr }
%"class.std::vector.30" = type { %"struct.std::_Vector_base.31" }
%"struct.std::_Vector_base.31" = type { %"struct.std::_Vector_base<HighsCDouble, std::allocator<HighsCDouble>>::_Vector_impl" }
%"struct.std::_Vector_base<HighsCDouble, std::allocator<HighsCDouble>>::_Vector_impl" = type { %"struct.std::_Vector_base<HighsCDouble, std::allocator<HighsCDouble>>::_Vector_impl_data" }
%"struct.std::_Vector_base<HighsCDouble, std::allocator<HighsCDouble>>::_Vector_impl_data" = type { ptr, ptr, ptr }
%"class.std::vector.35" = type { %"struct.std::_Vector_base.36" }
%"struct.std::_Vector_base.36" = type { %"struct.std::_Vector_base<std::pair<int, int>, std::allocator<std::pair<int, int>>>::_Vector_impl" }
%"struct.std::_Vector_base<std::pair<int, int>, std::allocator<std::pair<int, int>>>::_Vector_impl" = type { %"struct.std::_Vector_base<std::pair<int, int>, std::allocator<std::pair<int, int>>>::_Vector_impl_data" }
%"struct.std::_Vector_base<std::pair<int, int>, std::allocator<std::pair<int, int>>>::_Vector_impl_data" = type { ptr, ptr, ptr }
%"class.std::unordered_map" = type { %"class.std::_Hashtable" }
%"class.std::_Hashtable" = type { ptr, i64, %"struct.std::__detail::_Hash_node_base", i64, %"struct.std::__detail::_Prime_rehash_policy", ptr }
%"struct.std::__detail::_Hash_node_base" = type { ptr }
%"struct.std::__detail::_Prime_rehash_policy" = type { float, i64 }
%"class.std::set" = type { %"class.std::_Rb_tree" }
%"class.std::_Rb_tree" = type { %"struct.std::_Rb_tree<std::pair<int, int>, std::pair<int, int>, std::_Identity<std::pair<int, int>>, std::less<std::pair<int, int>>>::_Rb_tree_impl" }
%"struct.std::_Rb_tree<std::pair<int, int>, std::pair<int, int>, std::_Identity<std::pair<int, int>>, std::less<std::pair<int, int>>>::_Rb_tree_impl" = type { [8 x i8], %"struct.std::_Rb_tree_header" }
%"struct.std::_Rb_tree_header" = type { %"struct.std::_Rb_tree_node_base", i64 }
%"struct.std::_Rb_tree_node_base" = type { i32, ptr, ptr, ptr }
%"class.std::vector.48" = type { %"struct.std::_Vector_base.49" }
%"struct.std::_Vector_base.49" = type { %"struct.std::_Vector_base<std::_Rb_tree_const_iterator<std::pair<int, int>>, std::allocator<std::_Rb_tree_const_iterator<std::pair<int, int>>>>::_Vector_impl" }
%"struct.std::_Vector_base<std::_Rb_tree_const_iterator<std::pair<int, int>>, std::allocator<std::_Rb_tree_const_iterator<std::pair<int, int>>>>::_Vector_impl" = type { %"struct.std::_Vector_base<std::_Rb_tree_const_iterator<std::pair<int, int>>, std::allocator<std::_Rb_tree_const_iterator<std::pair<int, int>>>>::_Vector_impl_data" }
%"struct.std::_Vector_base<std::_Rb_tree_const_iterator<std::pair<int, int>>, std::allocator<std::_Rb_tree_const_iterator<std::pair<int, int>>>>::_Vector_impl_data" = type { ptr, ptr, ptr }
%"class.std::vector.5" = type { %"struct.std::_Vector_base.6" }
%"struct.std::_Vector_base.6" = type { %"struct.std::_Vector_base<int, std::allocator<int>>::_Vector_impl" }
%"struct.std::_Vector_base<int, std::allocator<int>>::_Vector_impl" = type { %"struct.std::_Vector_base<int, std::allocator<int>>::_Vector_impl_data" }
%"struct.std::_Vector_base<int, std::allocator<int>>::_Vector_impl_data" = type { ptr, ptr, ptr }
%"class.std::vector.10" = type { %"struct.std::_Vector_base.11" }
%"struct.std::_Vector_base.11" = type { %"struct.std::_Vector_base<unsigned char, std::allocator<unsigned char>>::_Vector_impl" }
%"struct.std::_Vector_base<unsigned char, std::allocator<unsigned char>>::_Vector_impl" = type { %"struct.std::_Vector_base<unsigned char, std::allocator<unsigned char>>::_Vector_impl_data" }
%"struct.std::_Vector_base<unsigned char, std::allocator<unsigned char>>::_Vector_impl_data" = type { ptr, ptr, ptr }
%"class.std::vector.53" = type { %"struct.std::_Vector_base.54" }
%"struct.std::_Vector_base.54" = type { %"struct.std::_Vector_base<unsigned short, std::allocator<unsigned short>>::_Vector_impl" }
%"struct.std::_Vector_base<unsigned short, std::allocator<unsigned short>>::_Vector_impl" = type { %"struct.std::_Vector_base<unsigned short, std::allocator<unsigned short>>::_Vector_impl_data" }
%"struct.std::_Vector_base<unsigned short, std::allocator<unsigned short>>::_Vector_impl_data" = type { ptr, ptr, ptr }
%class.HPresolveAnalysis = type { ptr, ptr, ptr, ptr, ptr, i32, i32, %"class.std::vector.58", i8, i8, i32, i32, i32, %struct.HighsPresolveLog }
%"class.std::vector.58" = type { %"struct.std::_Bvector_base" }
%"struct.std::_Bvector_base" = type { %"struct.std::_Bvector_base<std::allocator<bool>>::_Bvector_impl" }
%"struct.std::_Bvector_base<std::allocator<bool>>::_Bvector_impl" = type { %"struct.std::_Bvector_base<std::allocator<bool>>::_Bvector_impl_data" }
%"struct.std::_Bvector_base<std::allocator<bool>>::_Bvector_impl_data" = type { %"struct.std::_Bit_iterator", %"struct.std::_Bit_iterator", ptr }
%"struct.std::_Bit_iterator" = type { %"struct.std::_Bit_iterator_base.base", [4 x i8] }
%"struct.std::_Bit_iterator_base.base" = type <{ ptr, i32 }>
%struct.HighsPresolveLog = type { %"class.std::vector.62" }
%"class.std::vector.62" = type { %"struct.std::_Vector_base.63" }
%"struct.std::_Vector_base.63" = type { %"struct.std::_Vector_base<HighsPresolveRuleLog, std::allocator<HighsPresolveRuleLog>>::_Vector_impl" }
%"struct.std::_Vector_base<HighsPresolveRuleLog, std::allocator<HighsPresolveRuleLog>>::_Vector_impl" = type { %"struct.std::_Vector_base<HighsPresolveRuleLog, std::allocator<HighsPresolveRuleLog>>::_Vector_impl_data" }
%"struct.std::_Vector_base<HighsPresolveRuleLog, std::allocator<HighsPresolveRuleLog>>::_Vector_impl_data" = type { ptr, ptr, ptr }
%class.HighsLp = type { i32, i32, %"class.std::vector.20", %"class.std::vector.20", %"class.std::vector.20", %"class.std::vector.20", %"class.std::vector.20", %class.HighsSparseMatrix, i32, double, %"class.std::__cxx11::basic_string", %"class.std::__cxx11::basic_string", i32, i32, %"class.std::vector.67", %"class.std::vector.67", %"class.std::vector.72", %struct.HighsNameHash, %struct.HighsNameHash, i32, i32, %struct.HighsScale, i8, i8, i32, i8, %struct.HighsLpMods }
%class.HighsSparseMatrix = type { i32, i32, i32, %"class.std::vector.5", %"class.std::vector.5", %"class.std::vector.5", %"class.std::vector.20" }
%"class.std::__cxx11::basic_string" = type { %"struct.std::__cxx11::basic_string<char>::_Alloc_hider", i64, %union.anon }
%"struct.std::__cxx11::basic_string<char>::_Alloc_hider" = type { ptr }
%union.anon = type { i64, [8 x i8] }
%"class.std::vector.67" = type { %"struct.std::_Vector_base.68" }
%"struct.std::_Vector_base.68" = type { %"struct.std::_Vector_base<std::__cxx11::basic_string<char>, std::allocator<std::__cxx11::basic_string<char>>>::_Vector_impl" }
%"struct.std::_Vector_base<std::__cxx11::basic_string<char>, std::allocator<std::__cxx11::basic_string<char>>>::_Vector_impl" = type { %"struct.std::_Vector_base<std::__cxx11::basic_string<char>, std::allocator<std::__cxx11::basic_string<char>>>::_Vector_impl_data" }
%"struct.std::_Vector_base<std::__cxx11::basic_string<char>, std::allocator<std::__cxx11::basic_string<char>>>::_Vector_impl_data" = type { ptr, ptr, ptr }
%"class.std::vector.72" = type { %"struct.std::_Vector_base.73" }
%"struct.std::_Vector_base.73" = type { %"struct.std::_Vector_base<HighsVarType, std::allocator<HighsVarType>>::_Vector_impl" }
%"struct.std::_Vector_base<HighsVarType, std::allocator<HighsVarType>>::_Vector_impl" = type { %"struct.std::_Vector_base<HighsVarType, std::allocator<HighsVarType>>::_Vector_impl_data" }
%"struct.std::_Vector_base<HighsVarType, std::allocator<HighsVarType>>::_Vector_impl_data" = type { ptr, ptr, ptr }
%struct.HighsNameHash = type { %"class.std::unordered_map.77" }
%"class.std::unordered_map.77" = type { %"class.std::_Hashtable.78" }
%"class.std::_Hashtable.78" = type { ptr, i64, %"struct.std::__detail::_Hash_node_base", i64, %"struct.std::__detail::_Prime_rehash_policy", ptr }
%struct.HighsScale = type { i32, i8, i32, i32, double, %"class.std::vector.20", %"class.std::vector.20" }
%struct.HighsLpMods = type { %"class.std::vector.5", %"class.std::vector.5", %"class.std::vector.20", %"class.std::vector.20", %"class.std::vector.72", %"class.std::vector.5", %"class.std::vector.20", %"class.std::vector.5", %"class.std::vector.20", %"class.std::vector.5", %"class.std::vector.20", %"class.std::vector.20", %"class.std::vector.20" }
%struct.HighsOptionsStruct = type { ptr, %"class.std::__cxx11::basic_string", %"class.std::__cxx11::basic_string", %"class.std::__cxx11::basic_string", %"class.std::__cxx11::basic_string", double, %"class.std::__cxx11::basic_string", %"class.std::__cxx11::basic_string", i32, %"class.std::__cxx11::basic_string", double, double, double, double, double, double, double, double, double, double, double, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, %"class.std::__cxx11::basic_string", i8, i8, i8, i32, i32, %"class.std::__cxx11::basic_string", i8, i8, i8, i32, i8, i8, i32, i32, double, i32, i32, i32, i8, i32, i8, i8, i8, i8, i8, i8, i8, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i8, i8, i8, i8, double, double, double, double, double, double, double, double, double, double, double, i8, i8, i8, i8, i32, double, i8, i8, %"class.std::__cxx11::basic_string", double, i32, i32, i8, i8, i8, i8, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, double, double, double, double, double, i8, i8, %"class.std::__cxx11::basic_string", i8, i32, %struct.HighsLogOptions }
%struct.HighsLogOptions = type <{ ptr, ptr, ptr, ptr, ptr, ptr, %"class.std::function", ptr, i8, [7 x i8] }>
%"class.std::function" = type { %"class.std::_Function_base", ptr }
%"class.std::_Function_base" = type { %"union.std::_Any_data", ptr }
%"union.std::_Any_data" = type { %"union.std::_Nocopy_types" }
%"union.std::_Nocopy_types" = type { { i64, i64 } }

@.str.55 = external hidden unnamed_addr constant [76 x i8], align 1
@.str.80 = external hidden unnamed_addr constant [17 x i8], align 1
@__PRETTY_FUNCTION__._ZN8presolve9HPresolve11colPresolveERNS_19HighsPostsolveStackEi = external hidden unnamed_addr constant [84 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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

; Function Attrs: mustprogress uwtable
define dso_local noundef i32 @_ZN8presolve9HPresolve11colPresolveERNS_19HighsPostsolveStackEi(ptr noundef nonnull align 8 dereferenceable(1720) %0, ptr noundef nonnull align 8 dereferenceable(224) %1, i32 noundef %2) #4 align 2 {
  %4 = alloca i32, align 4
  %5 = alloca ptr, align 8
  %6 = alloca ptr, align 8
  %7 = alloca i32, align 4
  %8 = alloca i8, align 1
  %9 = alloca double, align 8
  %10 = alloca i32, align 4
  %11 = alloca %struct.HighsTripletListSlice, align 8
  %12 = alloca i32, align 4
  %13 = alloca i8, align 1
  %14 = alloca i8, align 1
  %15 = alloca i32, align 4
  %16 = alloca i32, align 4
  %17 = alloca i32, align 4
  %18 = alloca i32, align 4
  %19 = alloca ptr, align 8
  %20 = alloca %struct.HighsTripletListSlice, align 8
  %21 = alloca %"class.HighsMatrixSlice<HighsTripletListSlice>::iterator", align 8
  %22 = alloca %"class.HighsMatrixSlice<HighsTripletListSlice>::iterator", align 8
  %23 = alloca ptr, align 8
  store ptr %0, ptr %5, align 8, !tbaa !5
  store ptr %1, ptr %6, align 8, !tbaa !5
  store i32 %2, ptr %7, align 4, !tbaa !9
  %24 = load ptr, ptr %5, align 8
  %25 = getelementptr inbounds %"class.presolve::HPresolve", ptr %24, i32 0, i32 47
  %26 = load i32, ptr %7, align 4, !tbaa !9
  %27 = sext i32 %26 to i64
  %28 = call noundef nonnull align 1 dereferenceable(1) ptr @_ZNSt6vectorIhSaIhEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %25, i64 noundef %27) #5
  %29 = load i8, ptr %28, align 1, !tbaa !11
  %30 = icmp ne i8 %29, 0
  %31 = xor i1 %30, true
  br i1 %31, label %32, label %33

32:                                               ; preds = %3
  br label %35

33:                                               ; preds = %3
  call void @__assert_fail(ptr noundef @.str.80, ptr noundef @.str.55, i32 noundef 3990, ptr noundef @__PRETTY_FUNCTION__._ZN8presolve9HPresolve11colPresolveERNS_19HighsPostsolveStackEi) #6
  unreachable

34:                                               ; No predecessors!
  br label %35

35:                                               ; preds = %34, %32
  call void @llvm.lifetime.start.p0(i64 1, ptr %8) #5
  %36 = getelementptr inbounds %"class.presolve::HPresolve", ptr %24, i32 0, i32 58
  %37 = getelementptr inbounds %class.HPresolveAnalysis, ptr %36, i32 0, i32 9
  %38 = load i8, ptr %37, align 1, !tbaa !12, !range !76, !noundef !77
  %39 = trunc i8 %38 to i1
  %40 = zext i1 %39 to i8
  store i8 %40, ptr %8, align 1, !tbaa !78
  call void @llvm.lifetime.start.p0(i64 8, ptr %9) #5
  %41 = getelementptr inbounds %"class.presolve::HPresolve", ptr %24, i32 0, i32 0
  %42 = load ptr, ptr %41, align 8, !tbaa !79
  %43 = getelementptr inbounds %class.HighsLp, ptr %42, i32 0, i32 4
  %44 = load i32, ptr %7, align 4, !tbaa !9
  %45 = sext i32 %44 to i64
  %46 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt6vectorIdSaIdEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %43, i64 noundef %45) #5
  %47 = load double, ptr %46, align 8, !tbaa !80
  %48 = getelementptr inbounds %"class.presolve::HPresolve", ptr %24, i32 0, i32 0
  %49 = load ptr, ptr %48, align 8, !tbaa !79
  %50 = getelementptr inbounds %class.HighsLp, ptr %49, i32 0, i32 3
  %51 = load i32, ptr %7, align 4, !tbaa !9
  %52 = sext i32 %51 to i64
  %53 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt6vectorIdSaIdEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %50, i64 noundef %52) #5
  %54 = load double, ptr %53, align 8, !tbaa !80
  %55 = fsub double %47, %54
  store double %55, ptr %9, align 8, !tbaa !80
  %56 = load double, ptr %9, align 8, !tbaa !80
  %57 = getelementptr inbounds %"class.presolve::HPresolve", ptr %24, i32 0, i32 4
  %58 = load double, ptr %57, align 8, !tbaa !81
  %59 = fcmp ole double %56, %58
  br i1 %59, label %60, label %104

60:                                               ; preds = %35
  %61 = load double, ptr %9, align 8, !tbaa !80
  %62 = getelementptr inbounds %"class.presolve::HPresolve", ptr %24, i32 0, i32 1
  %63 = load ptr, ptr %62, align 8, !tbaa !82
  %64 = getelementptr inbounds %struct.HighsOptionsStruct, ptr %63, i32 0, i32 12
  %65 = load double, ptr %64, align 8, !tbaa !83
  %66 = fcmp ole double %61, %65
  br i1 %66, label %75, label %67

67:                                               ; preds = %60
  %68 = load i32, ptr %7, align 4, !tbaa !9
  %69 = call noundef double @_ZNK8presolve9HPresolve15getMaxAbsColValEi(ptr noundef nonnull align 8 dereferenceable(1720) %24, i32 noundef %68)
  %70 = load double, ptr %9, align 8, !tbaa !80
  %71 = fmul double %69, %70
  %72 = getelementptr inbounds %"class.presolve::HPresolve", ptr %24, i32 0, i32 4
  %73 = load double, ptr %72, align 8, !tbaa !81
  %74 = fcmp ole double %71, %73
  br i1 %74, label %75, label %103

75:                                               ; preds = %67, %60
  %76 = load double, ptr %9, align 8, !tbaa !80
  %77 = getelementptr inbounds %"class.presolve::HPresolve", ptr %24, i32 0, i32 4
  %78 = load double, ptr %77, align 8, !tbaa !81
  %79 = fneg double %78
  %80 = fcmp olt double %76, %79
  br i1 %80, label %81, label %82

81:                                               ; preds = %75
  store i32 1, ptr %4, align 4
  store i32 1, ptr %10, align 4
  br label %505

82:                                               ; preds = %75
  %83 = load ptr, ptr %6, align 8, !tbaa !5
  %84 = load i32, ptr %7, align 4, !tbaa !9
  %85 = getelementptr inbounds %"class.presolve::HPresolve", ptr %24, i32 0, i32 0
  %86 = load ptr, ptr %85, align 8, !tbaa !79
  %87 = getelementptr inbounds %class.HighsLp, ptr %86, i32 0, i32 3
  %88 = load i32, ptr %7, align 4, !tbaa !9
  %89 = sext i32 %88 to i64
  %90 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt6vectorIdSaIdEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %87, i64 noundef %89) #5
  %91 = load double, ptr %90, align 8, !tbaa !80
  %92 = getelementptr inbounds %"class.presolve::HPresolve", ptr %24, i32 0, i32 0
  %93 = load ptr, ptr %92, align 8, !tbaa !79
  %94 = getelementptr inbounds %class.HighsLp, ptr %93, i32 0, i32 2
  %95 = load i32, ptr %7, align 4, !tbaa !9
  %96 = sext i32 %95 to i64
  %97 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt6vectorIdSaIdEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %94, i64 noundef %96) #5
  %98 = load double, ptr %97, align 8, !tbaa !80
  call void @llvm.lifetime.start.p0(i64 32, ptr %11) #5
  %99 = load i32, ptr %7, align 4, !tbaa !9
  call void @_ZNK8presolve9HPresolve15getColumnVectorEi(ptr dead_on_unwind writable sret(%struct.HighsTripletListSlice) align 8 %11, ptr noundef nonnull align 8 dereferenceable(1720) %24, i32 noundef %99)
  call void @_ZN8presolve19HighsPostsolveStack15removedFixedColI21HighsTripletListSliceEEviddRK16HighsMatrixSliceIT_E(ptr noundef nonnull align 8 dereferenceable(224) %83, i32 noundef %84, double noundef %91, double noundef %98, ptr noundef nonnull align 8 dereferenceable(28) %11)
  call void @llvm.lifetime.end.p0(i64 32, ptr %11) #5
  %100 = load i32, ptr %7, align 4, !tbaa !9
  call void @_ZN8presolve9HPresolve14removeFixedColEi(ptr noundef nonnull align 8 dereferenceable(1720) %24, i32 noundef %100)
  %101 = load ptr, ptr %6, align 8, !tbaa !5
  %102 = call noundef i32 @_ZN8presolve9HPresolve11checkLimitsERNS_19HighsPostsolveStackE(ptr noundef nonnull align 8 dereferenceable(1720) %24, ptr noundef nonnull align 8 dereferenceable(224) %101)
  store i32 %102, ptr %4, align 4
  store i32 1, ptr %10, align 4
  br label %505

103:                                              ; preds = %67
  br label %104

104:                                              ; preds = %103, %35
  %105 = getelementptr inbounds %"class.presolve::HPresolve", ptr %24, i32 0, i32 17
  %106 = load i32, ptr %7, align 4, !tbaa !9
  %107 = sext i32 %106 to i64
  %108 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNSt6vectorIiSaIiEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %105, i64 noundef %107) #5
  %109 = load i32, ptr %108, align 4, !tbaa !9
  switch i32 %109, label %118 [
    i32 0, label %110
    i32 1, label %114
  ]

110:                                              ; preds = %104
  %111 = load ptr, ptr %6, align 8, !tbaa !5
  %112 = load i32, ptr %7, align 4, !tbaa !9
  %113 = call noundef i32 @_ZN8presolve9HPresolve8emptyColERNS_19HighsPostsolveStackEi(ptr noundef nonnull align 8 dereferenceable(1720) %24, ptr noundef nonnull align 8 dereferenceable(224) %111, i32 noundef %112)
  store i32 %113, ptr %4, align 4
  store i32 1, ptr %10, align 4
  br label %505

114:                                              ; preds = %104
  %115 = load ptr, ptr %6, align 8, !tbaa !5
  %116 = load i32, ptr %7, align 4, !tbaa !9
  %117 = call noundef i32 @_ZN8presolve9HPresolve12singletonColERNS_19HighsPostsolveStackEi(ptr noundef nonnull align 8 dereferenceable(1720) %24, ptr noundef nonnull align 8 dereferenceable(224) %115, i32 noundef %116)
  store i32 %117, ptr %4, align 4
  store i32 1, ptr %10, align 4
  br label %505

118:                                              ; preds = %104
  br label %119

119:                                              ; preds = %118
  br label %120

120:                                              ; preds = %119
  call void @llvm.lifetime.start.p0(i64 4, ptr %12) #5
  %121 = load ptr, ptr %6, align 8, !tbaa !5
  %122 = load i32, ptr %7, align 4, !tbaa !9
  %123 = call noundef i32 @_ZN8presolve9HPresolve18detectDominatedColERNS_19HighsPostsolveStackEib(ptr noundef nonnull align 8 dereferenceable(1720) %24, ptr noundef nonnull align 8 dereferenceable(224) %121, i32 noundef %122, i1 noundef zeroext true)
  store i32 %123, ptr %12, align 4, !tbaa !90
  %124 = load i32, ptr %12, align 4, !tbaa !90
  %125 = icmp ne i32 %124, 0
  br i1 %125, label %126, label %128

126:                                              ; preds = %120
  %127 = load i32, ptr %12, align 4, !tbaa !90
  store i32 %127, ptr %4, align 4
  store i32 1, ptr %10, align 4
  br label %129

128:                                              ; preds = %120
  store i32 0, ptr %10, align 4
  br label %129

129:                                              ; preds = %128, %126
  call void @llvm.lifetime.end.p0(i64 4, ptr %12) #5
  %130 = load i32, ptr %10, align 4
  switch i32 %130, label %505 [
    i32 0, label %131
  ]

131:                                              ; preds = %129
  br label %132

132:                                              ; preds = %131
  br label %133

133:                                              ; preds = %132
  %134 = getelementptr inbounds %"class.presolve::HPresolve", ptr %24, i32 0, i32 47
  %135 = load i32, ptr %7, align 4, !tbaa !9
  %136 = sext i32 %135 to i64
  %137 = call noundef nonnull align 1 dereferenceable(1) ptr @_ZNSt6vectorIhSaIhEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %134, i64 noundef %136) #5
  %138 = load i8, ptr %137, align 1, !tbaa !11
  %139 = icmp ne i8 %138, 0
  br i1 %139, label %140, label %141

140:                                              ; preds = %133
  store i32 0, ptr %4, align 4
  store i32 1, ptr %10, align 4
  br label %505

141:                                              ; preds = %133
  call void @llvm.lifetime.start.p0(i64 1, ptr %13) #5
  %142 = load i32, ptr %7, align 4, !tbaa !9
  %143 = call noundef zeroext i1 @_ZNK8presolve9HPresolve14isUpperImpliedEi(ptr noundef nonnull align 8 dereferenceable(1720) %24, i32 noundef %142)
  %144 = zext i1 %143 to i8
  store i8 %144, ptr %13, align 1, !tbaa !78
  call void @llvm.lifetime.start.p0(i64 1, ptr %14) #5
  %145 = load i32, ptr %7, align 4, !tbaa !9
  %146 = call noundef zeroext i1 @_ZNK8presolve9HPresolve14isLowerImpliedEi(ptr noundef nonnull align 8 dereferenceable(1720) %24, i32 noundef %145)
  %147 = zext i1 %146 to i8
  store i8 %147, ptr %14, align 1, !tbaa !78
  %148 = getelementptr inbounds %"class.presolve::HPresolve", ptr %24, i32 0, i32 3
  %149 = load ptr, ptr %148, align 8, !tbaa !92
  %150 = icmp ne ptr %149, null
  br i1 %150, label %151, label %470

151:                                              ; preds = %141
  %152 = load i8, ptr %14, align 1, !tbaa !78, !range !76, !noundef !77
  %153 = trunc i8 %152 to i1
  br i1 %153, label %154, label %247

154:                                              ; preds = %151
  %155 = getelementptr inbounds %"class.presolve::HPresolve", ptr %24, i32 0, i32 22
  %156 = load i32, ptr %7, align 4, !tbaa !9
  %157 = sext i32 %156 to i64
  %158 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNSt6vectorIiSaIiEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %155, i64 noundef %157) #5
  %159 = load i32, ptr %158, align 4, !tbaa !9
  %160 = icmp ne i32 %159, -1
  br i1 %160, label %161, label %247

161:                                              ; preds = %154
  %162 = getelementptr inbounds %"class.presolve::HPresolve", ptr %24, i32 0, i32 33
  %163 = load i32, ptr %7, align 4, !tbaa !9
  %164 = call noundef i32 @_ZNK20HighsLinearSumBounds21getNumInfSumUpperOrigEi(ptr noundef nonnull align 8 dereferenceable(240) %162, i32 noundef %163)
  %165 = icmp eq i32 %164, 1
  br i1 %165, label %166, label %247

166:                                              ; preds = %161
  %167 = getelementptr inbounds %"class.presolve::HPresolve", ptr %24, i32 0, i32 0
  %168 = load ptr, ptr %167, align 8, !tbaa !79
  %169 = getelementptr inbounds %class.HighsLp, ptr %168, i32 0, i32 2
  %170 = load i32, ptr %7, align 4, !tbaa !9
  %171 = sext i32 %170 to i64
  %172 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt6vectorIdSaIdEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %169, i64 noundef %171) #5
  %173 = load double, ptr %172, align 8, !tbaa !80
  %174 = fcmp oge double %173, 0.000000e+00
  br i1 %174, label %175, label %247

175:                                              ; preds = %166
  call void @llvm.lifetime.start.p0(i64 4, ptr %15) #5
  %176 = getelementptr inbounds %"class.presolve::HPresolve", ptr %24, i32 0, i32 22
  %177 = load i32, ptr %7, align 4, !tbaa !9
  %178 = sext i32 %177 to i64
  %179 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNSt6vectorIiSaIiEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %176, i64 noundef %178) #5
  %180 = load i32, ptr %179, align 4, !tbaa !9
  store i32 %180, ptr %15, align 4, !tbaa !9
  %181 = getelementptr inbounds %"class.presolve::HPresolve", ptr %24, i32 0, i32 0
  %182 = load ptr, ptr %181, align 8, !tbaa !79
  %183 = getelementptr inbounds %class.HighsLp, ptr %182, i32 0, i32 5
  %184 = load i32, ptr %15, align 4, !tbaa !9
  %185 = sext i32 %184 to i64
  %186 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt6vectorIdSaIdEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %183, i64 noundef %185) #5
  %187 = load double, ptr %186, align 8, !tbaa !80
  %188 = fcmp oeq double %187, 0xFFF0000000000000
  br i1 %188, label %198, label %189

189:                                              ; preds = %175
  %190 = getelementptr inbounds %"class.presolve::HPresolve", ptr %24, i32 0, i32 0
  %191 = load ptr, ptr %190, align 8, !tbaa !79
  %192 = getelementptr inbounds %class.HighsLp, ptr %191, i32 0, i32 6
  %193 = load i32, ptr %15, align 4, !tbaa !9
  %194 = sext i32 %193 to i64
  %195 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt6vectorIdSaIdEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %192, i64 noundef %194) #5
  %196 = load double, ptr %195, align 8, !tbaa !80
  %197 = fcmp oeq double %196, 0x7FF0000000000000
  br i1 %197, label %198, label %246

198:                                              ; preds = %189, %175
  call void @llvm.lifetime.start.p0(i64 4, ptr %16) #5
  %199 = load i32, ptr %15, align 4, !tbaa !9
  %200 = load i32, ptr %7, align 4, !tbaa !9
  %201 = call noundef i32 @_ZN8presolve9HPresolve11findNonzeroEii(ptr noundef nonnull align 8 dereferenceable(1720) %24, i32 noundef %199, i32 noundef %200)
  store i32 %201, ptr %16, align 4, !tbaa !9
  %202 = getelementptr inbounds %"class.presolve::HPresolve", ptr %24, i32 0, i32 0
  %203 = load ptr, ptr %202, align 8, !tbaa !79
  %204 = getelementptr inbounds %class.HighsLp, ptr %203, i32 0, i32 16
  %205 = load i32, ptr %7, align 4, !tbaa !9
  %206 = sext i32 %205 to i64
  %207 = call noundef nonnull align 1 dereferenceable(1) ptr @_ZNSt6vectorI12HighsVarTypeSaIS0_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %204, i64 noundef %206) #5
  %208 = load i8, ptr %207, align 1, !tbaa !93
  %209 = icmp ne i8 %208, 1
  br i1 %209, label %231, label %210

210:                                              ; preds = %198
  %211 = getelementptr inbounds %"class.presolve::HPresolve", ptr %24, i32 0, i32 15
  %212 = load i32, ptr %15, align 4, !tbaa !9
  %213 = sext i32 %212 to i64
  %214 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNSt6vectorIiSaIiEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %211, i64 noundef %213) #5
  %215 = load i32, ptr %214, align 4, !tbaa !9
  %216 = getelementptr inbounds %"class.presolve::HPresolve", ptr %24, i32 0, i32 14
  %217 = load i32, ptr %15, align 4, !tbaa !9
  %218 = sext i32 %217 to i64
  %219 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNSt6vectorIiSaIiEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %216, i64 noundef %218) #5
  %220 = load i32, ptr %219, align 4, !tbaa !9
  %221 = icmp eq i32 %215, %220
  br i1 %221, label %222, label %245

222:                                              ; preds = %210
  %223 = load i32, ptr %15, align 4, !tbaa !9
  %224 = getelementptr inbounds %"class.presolve::HPresolve", ptr %24, i32 0, i32 5
  %225 = load i32, ptr %16, align 4, !tbaa !9
  %226 = sext i32 %225 to i64
  %227 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt6vectorIdSaIdEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %224, i64 noundef %226) #5
  %228 = load double, ptr %227, align 8, !tbaa !80
  %229 = fdiv double 1.000000e+00, %228
  %230 = call noundef zeroext i1 @_ZNK8presolve9HPresolve23rowCoefficientsIntegralEid(ptr noundef nonnull align 8 dereferenceable(1720) %24, i32 noundef %223, double noundef %229)
  br i1 %230, label %231, label %245

231:                                              ; preds = %222, %198
  %232 = getelementptr inbounds %"class.presolve::HPresolve", ptr %24, i32 0, i32 5
  %233 = load i32, ptr %16, align 4, !tbaa !9
  %234 = sext i32 %233 to i64
  %235 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt6vectorIdSaIdEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %232, i64 noundef %234) #5
  %236 = load double, ptr %235, align 8, !tbaa !80
  %237 = fcmp ogt double %236, 0.000000e+00
  br i1 %237, label %238, label %241

238:                                              ; preds = %231
  %239 = load i32, ptr %15, align 4, !tbaa !9
  %240 = load i32, ptr %7, align 4, !tbaa !9
  call void @_ZN8presolve9HPresolve22changeImplRowDualLowerEidi(ptr noundef nonnull align 8 dereferenceable(1720) %24, i32 noundef %239, double noundef 0.000000e+00, i32 noundef %240)
  br label %244

241:                                              ; preds = %231
  %242 = load i32, ptr %15, align 4, !tbaa !9
  %243 = load i32, ptr %7, align 4, !tbaa !9
  call void @_ZN8presolve9HPresolve22changeImplRowDualUpperEidi(ptr noundef nonnull align 8 dereferenceable(1720) %24, i32 noundef %242, double noundef 0.000000e+00, i32 noundef %243)
  br label %244

244:                                              ; preds = %241, %238
  br label %245

245:                                              ; preds = %244, %222, %210
  call void @llvm.lifetime.end.p0(i64 4, ptr %16) #5
  br label %246

246:                                              ; preds = %245, %189
  call void @llvm.lifetime.end.p0(i64 4, ptr %15) #5
  br label %247

247:                                              ; preds = %246, %166, %161, %154, %151
  %248 = load i8, ptr %13, align 1, !tbaa !78, !range !76, !noundef !77
  %249 = trunc i8 %248 to i1
  br i1 %249, label %250, label %343

250:                                              ; preds = %247
  %251 = getelementptr inbounds %"class.presolve::HPresolve", ptr %24, i32 0, i32 23
  %252 = load i32, ptr %7, align 4, !tbaa !9
  %253 = sext i32 %252 to i64
  %254 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNSt6vectorIiSaIiEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %251, i64 noundef %253) #5
  %255 = load i32, ptr %254, align 4, !tbaa !9
  %256 = icmp ne i32 %255, -1
  br i1 %256, label %257, label %343

257:                                              ; preds = %250
  %258 = getelementptr inbounds %"class.presolve::HPresolve", ptr %24, i32 0, i32 33
  %259 = load i32, ptr %7, align 4, !tbaa !9
  %260 = call noundef i32 @_ZNK20HighsLinearSumBounds21getNumInfSumLowerOrigEi(ptr noundef nonnull align 8 dereferenceable(240) %258, i32 noundef %259)
  %261 = icmp eq i32 %260, 1
  br i1 %261, label %262, label %343

262:                                              ; preds = %257
  %263 = getelementptr inbounds %"class.presolve::HPresolve", ptr %24, i32 0, i32 0
  %264 = load ptr, ptr %263, align 8, !tbaa !79
  %265 = getelementptr inbounds %class.HighsLp, ptr %264, i32 0, i32 2
  %266 = load i32, ptr %7, align 4, !tbaa !9
  %267 = sext i32 %266 to i64
  %268 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt6vectorIdSaIdEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %265, i64 noundef %267) #5
  %269 = load double, ptr %268, align 8, !tbaa !80
  %270 = fcmp ole double %269, 0.000000e+00
  br i1 %270, label %271, label %343

271:                                              ; preds = %262
  call void @llvm.lifetime.start.p0(i64 4, ptr %17) #5
  %272 = getelementptr inbounds %"class.presolve::HPresolve", ptr %24, i32 0, i32 23
  %273 = load i32, ptr %7, align 4, !tbaa !9
  %274 = sext i32 %273 to i64
  %275 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNSt6vectorIiSaIiEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %272, i64 noundef %274) #5
  %276 = load i32, ptr %275, align 4, !tbaa !9
  store i32 %276, ptr %17, align 4, !tbaa !9
  %277 = getelementptr inbounds %"class.presolve::HPresolve", ptr %24, i32 0, i32 0
  %278 = load ptr, ptr %277, align 8, !tbaa !79
  %279 = getelementptr inbounds %class.HighsLp, ptr %278, i32 0, i32 5
  %280 = load i32, ptr %17, align 4, !tbaa !9
  %281 = sext i32 %280 to i64
  %282 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt6vectorIdSaIdEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %279, i64 noundef %281) #5
  %283 = load double, ptr %282, align 8, !tbaa !80
  %284 = fcmp oeq double %283, 0xFFF0000000000000
  br i1 %284, label %294, label %285

285:                                              ; preds = %271
  %286 = getelementptr inbounds %"class.presolve::HPresolve", ptr %24, i32 0, i32 0
  %287 = load ptr, ptr %286, align 8, !tbaa !79
  %288 = getelementptr inbounds %class.HighsLp, ptr %287, i32 0, i32 6
  %289 = load i32, ptr %17, align 4, !tbaa !9
  %290 = sext i32 %289 to i64
  %291 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt6vectorIdSaIdEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %288, i64 noundef %290) #5
  %292 = load double, ptr %291, align 8, !tbaa !80
  %293 = fcmp oeq double %292, 0x7FF0000000000000
  br i1 %293, label %294, label %342

294:                                              ; preds = %285, %271
  call void @llvm.lifetime.start.p0(i64 4, ptr %18) #5
  %295 = load i32, ptr %17, align 4, !tbaa !9
  %296 = load i32, ptr %7, align 4, !tbaa !9
  %297 = call noundef i32 @_ZN8presolve9HPresolve11findNonzeroEii(ptr noundef nonnull align 8 dereferenceable(1720) %24, i32 noundef %295, i32 noundef %296)
  store i32 %297, ptr %18, align 4, !tbaa !9
  %298 = getelementptr inbounds %"class.presolve::HPresolve", ptr %24, i32 0, i32 0
  %299 = load ptr, ptr %298, align 8, !tbaa !79
  %300 = getelementptr inbounds %class.HighsLp, ptr %299, i32 0, i32 16
  %301 = load i32, ptr %7, align 4, !tbaa !9
  %302 = sext i32 %301 to i64
  %303 = call noundef nonnull align 1 dereferenceable(1) ptr @_ZNSt6vectorI12HighsVarTypeSaIS0_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %300, i64 noundef %302) #5
  %304 = load i8, ptr %303, align 1, !tbaa !93
  %305 = icmp ne i8 %304, 1
  br i1 %305, label %327, label %306

306:                                              ; preds = %294
  %307 = getelementptr inbounds %"class.presolve::HPresolve", ptr %24, i32 0, i32 15
  %308 = load i32, ptr %17, align 4, !tbaa !9
  %309 = sext i32 %308 to i64
  %310 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNSt6vectorIiSaIiEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %307, i64 noundef %309) #5
  %311 = load i32, ptr %310, align 4, !tbaa !9
  %312 = getelementptr inbounds %"class.presolve::HPresolve", ptr %24, i32 0, i32 14
  %313 = load i32, ptr %17, align 4, !tbaa !9
  %314 = sext i32 %313 to i64
  %315 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNSt6vectorIiSaIiEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %312, i64 noundef %314) #5
  %316 = load i32, ptr %315, align 4, !tbaa !9
  %317 = icmp eq i32 %311, %316
  br i1 %317, label %318, label %341

318:                                              ; preds = %306
  %319 = load i32, ptr %17, align 4, !tbaa !9
  %320 = getelementptr inbounds %"class.presolve::HPresolve", ptr %24, i32 0, i32 5
  %321 = load i32, ptr %18, align 4, !tbaa !9
  %322 = sext i32 %321 to i64
  %323 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt6vectorIdSaIdEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %320, i64 noundef %322) #5
  %324 = load double, ptr %323, align 8, !tbaa !80
  %325 = fdiv double 1.000000e+00, %324
  %326 = call noundef zeroext i1 @_ZNK8presolve9HPresolve23rowCoefficientsIntegralEid(ptr noundef nonnull align 8 dereferenceable(1720) %24, i32 noundef %319, double noundef %325)
  br i1 %326, label %327, label %341

327:                                              ; preds = %318, %294
  %328 = getelementptr inbounds %"class.presolve::HPresolve", ptr %24, i32 0, i32 5
  %329 = load i32, ptr %18, align 4, !tbaa !9
  %330 = sext i32 %329 to i64
  %331 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt6vectorIdSaIdEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %328, i64 noundef %330) #5
  %332 = load double, ptr %331, align 8, !tbaa !80
  %333 = fcmp ogt double %332, 0.000000e+00
  br i1 %333, label %334, label %337

334:                                              ; preds = %327
  %335 = load i32, ptr %17, align 4, !tbaa !9
  %336 = load i32, ptr %7, align 4, !tbaa !9
  call void @_ZN8presolve9HPresolve22changeImplRowDualUpperEidi(ptr noundef nonnull align 8 dereferenceable(1720) %24, i32 noundef %335, double noundef 0.000000e+00, i32 noundef %336)
  br label %340

337:                                              ; preds = %327
  %338 = load i32, ptr %17, align 4, !tbaa !9
  %339 = load i32, ptr %7, align 4, !tbaa !9
  call void @_ZN8presolve9HPresolve22changeImplRowDualLowerEidi(ptr noundef nonnull align 8 dereferenceable(1720) %24, i32 noundef %338, double noundef 0.000000e+00, i32 noundef %339)
  br label %340

340:                                              ; preds = %337, %334
  br label %341

341:                                              ; preds = %340, %318, %306
  call void @llvm.lifetime.end.p0(i64 4, ptr %18) #5
  br label %342

342:                                              ; preds = %341, %285
  call void @llvm.lifetime.end.p0(i64 4, ptr %17) #5
  br label %343

343:                                              ; preds = %342, %262, %257, %250, %247
  %344 = load i32, ptr %7, align 4, !tbaa !9
  %345 = call noundef zeroext i1 @_ZN8presolve9HPresolve21convertImpliedIntegerEiib(ptr noundef nonnull align 8 dereferenceable(1720) %24, i32 noundef %344, i32 noundef -1, i1 noundef zeroext false)
  %346 = getelementptr inbounds %"class.presolve::HPresolve", ptr %24, i32 0, i32 0
  %347 = load ptr, ptr %346, align 8, !tbaa !79
  %348 = getelementptr inbounds %class.HighsLp, ptr %347, i32 0, i32 16
  %349 = load i32, ptr %7, align 4, !tbaa !9
  %350 = sext i32 %349 to i64
  %351 = call noundef nonnull align 1 dereferenceable(1) ptr @_ZNSt6vectorI12HighsVarTypeSaIS0_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %348, i64 noundef %350) #5
  %352 = load i8, ptr %351, align 1, !tbaa !93
  %353 = icmp ne i8 %352, 0
  br i1 %353, label %354, label %459

354:                                              ; preds = %343
  %355 = getelementptr inbounds %"class.presolve::HPresolve", ptr %24, i32 0, i32 0
  %356 = load ptr, ptr %355, align 8, !tbaa !79
  %357 = getelementptr inbounds %class.HighsLp, ptr %356, i32 0, i32 3
  %358 = load i32, ptr %7, align 4, !tbaa !9
  %359 = sext i32 %358 to i64
  %360 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt6vectorIdSaIdEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %357, i64 noundef %359) #5
  %361 = load double, ptr %360, align 8, !tbaa !80
  %362 = fcmp une double %361, 0.000000e+00
  br i1 %362, label %363, label %459

363:                                              ; preds = %354
  %364 = getelementptr inbounds %"class.presolve::HPresolve", ptr %24, i32 0, i32 0
  %365 = load ptr, ptr %364, align 8, !tbaa !79
  %366 = getelementptr inbounds %class.HighsLp, ptr %365, i32 0, i32 3
  %367 = load i32, ptr %7, align 4, !tbaa !9
  %368 = sext i32 %367 to i64
  %369 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt6vectorIdSaIdEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %366, i64 noundef %368) #5
  %370 = load double, ptr %369, align 8, !tbaa !80
  %371 = fcmp une double %370, 0xFFF0000000000000
  br i1 %371, label %381, label %372

372:                                              ; preds = %363
  %373 = getelementptr inbounds %"class.presolve::HPresolve", ptr %24, i32 0, i32 0
  %374 = load ptr, ptr %373, align 8, !tbaa !79
  %375 = getelementptr inbounds %class.HighsLp, ptr %374, i32 0, i32 4
  %376 = load i32, ptr %7, align 4, !tbaa !9
  %377 = sext i32 %376 to i64
  %378 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt6vectorIdSaIdEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %375, i64 noundef %377) #5
  %379 = load double, ptr %378, align 8, !tbaa !80
  %380 = fcmp une double %379, 0x7FF0000000000000
  br i1 %380, label %381, label %459

381:                                              ; preds = %372, %363
  %382 = getelementptr inbounds %"class.presolve::HPresolve", ptr %24, i32 0, i32 0
  %383 = load ptr, ptr %382, align 8, !tbaa !79
  %384 = getelementptr inbounds %class.HighsLp, ptr %383, i32 0, i32 4
  %385 = load i32, ptr %7, align 4, !tbaa !9
  %386 = sext i32 %385 to i64
  %387 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt6vectorIdSaIdEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %384, i64 noundef %386) #5
  %388 = load double, ptr %387, align 8, !tbaa !80
  %389 = getelementptr inbounds %"class.presolve::HPresolve", ptr %24, i32 0, i32 0
  %390 = load ptr, ptr %389, align 8, !tbaa !79
  %391 = getelementptr inbounds %class.HighsLp, ptr %390, i32 0, i32 3
  %392 = load i32, ptr %7, align 4, !tbaa !9
  %393 = sext i32 %392 to i64
  %394 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt6vectorIdSaIdEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %391, i64 noundef %393) #5
  %395 = load double, ptr %394, align 8, !tbaa !80
  %396 = fsub double %388, %395
  %397 = fcmp ogt double %396, 5.000000e-01
  br i1 %397, label %398, label %459

398:                                              ; preds = %381
  %399 = getelementptr inbounds %"class.presolve::HPresolve", ptr %24, i32 0, i32 0
  %400 = load ptr, ptr %399, align 8, !tbaa !79
  %401 = getelementptr inbounds %class.HighsLp, ptr %400, i32 0, i32 4
  %402 = load i32, ptr %7, align 4, !tbaa !9
  %403 = sext i32 %402 to i64
  %404 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt6vectorIdSaIdEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %401, i64 noundef %403) #5
  %405 = load double, ptr %404, align 8, !tbaa !80
  %406 = call noundef double @_ZSt3absd(double noundef %405)
  %407 = getelementptr inbounds %"class.presolve::HPresolve", ptr %24, i32 0, i32 0
  %408 = load ptr, ptr %407, align 8, !tbaa !79
  %409 = getelementptr inbounds %class.HighsLp, ptr %408, i32 0, i32 3
  %410 = load i32, ptr %7, align 4, !tbaa !9
  %411 = sext i32 %410 to i64
  %412 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt6vectorIdSaIdEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %409, i64 noundef %411) #5
  %413 = load double, ptr %412, align 8, !tbaa !80
  %414 = call noundef double @_ZSt3absd(double noundef %413)
  %415 = fcmp ogt double %406, %414
  br i1 %415, label %416, label %437

416:                                              ; preds = %398
  %417 = getelementptr inbounds %"class.presolve::HPresolve", ptr %24, i32 0, i32 0
  %418 = load ptr, ptr %417, align 8, !tbaa !79
  %419 = getelementptr inbounds %class.HighsLp, ptr %418, i32 0, i32 3
  %420 = load i32, ptr %7, align 4, !tbaa !9
  %421 = sext i32 %420 to i64
  %422 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt6vectorIdSaIdEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %419, i64 noundef %421) #5
  %423 = load double, ptr %422, align 8, !tbaa !80
  %424 = call noundef double @_ZSt3absd(double noundef %423)
  %425 = fcmp olt double %424, 1.000500e+03
  br i1 %425, label %426, label %436

426:                                              ; preds = %416
  %427 = load ptr, ptr %6, align 8, !tbaa !5
  %428 = load i32, ptr %7, align 4, !tbaa !9
  %429 = getelementptr inbounds %"class.presolve::HPresolve", ptr %24, i32 0, i32 0
  %430 = load ptr, ptr %429, align 8, !tbaa !79
  %431 = getelementptr inbounds %class.HighsLp, ptr %430, i32 0, i32 3
  %432 = load i32, ptr %7, align 4, !tbaa !9
  %433 = sext i32 %432 to i64
  %434 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt6vectorIdSaIdEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %431, i64 noundef %433) #5
  %435 = load double, ptr %434, align 8, !tbaa !80
  call void @_ZN8presolve9HPresolve15transformColumnERNS_19HighsPostsolveStackEidd(ptr noundef nonnull align 8 dereferenceable(1720) %24, ptr noundef nonnull align 8 dereferenceable(224) %427, i32 noundef %428, double noundef 1.000000e+00, double noundef %435)
  br label %436

436:                                              ; preds = %426, %416
  br label %458

437:                                              ; preds = %398
  %438 = getelementptr inbounds %"class.presolve::HPresolve", ptr %24, i32 0, i32 0
  %439 = load ptr, ptr %438, align 8, !tbaa !79
  %440 = getelementptr inbounds %class.HighsLp, ptr %439, i32 0, i32 4
  %441 = load i32, ptr %7, align 4, !tbaa !9
  %442 = sext i32 %441 to i64
  %443 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt6vectorIdSaIdEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %440, i64 noundef %442) #5
  %444 = load double, ptr %443, align 8, !tbaa !80
  %445 = call noundef double @_ZSt3absd(double noundef %444)
  %446 = fcmp olt double %445, 1.000500e+03
  br i1 %446, label %447, label %457

447:                                              ; preds = %437
  %448 = load ptr, ptr %6, align 8, !tbaa !5
  %449 = load i32, ptr %7, align 4, !tbaa !9
  %450 = getelementptr inbounds %"class.presolve::HPresolve", ptr %24, i32 0, i32 0
  %451 = load ptr, ptr %450, align 8, !tbaa !79
  %452 = getelementptr inbounds %class.HighsLp, ptr %451, i32 0, i32 4
  %453 = load i32, ptr %7, align 4, !tbaa !9
  %454 = sext i32 %453 to i64
  %455 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt6vectorIdSaIdEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %452, i64 noundef %454) #5
  %456 = load double, ptr %455, align 8, !tbaa !80
  call void @_ZN8presolve9HPresolve15transformColumnERNS_19HighsPostsolveStackEidd(ptr noundef nonnull align 8 dereferenceable(1720) %24, ptr noundef nonnull align 8 dereferenceable(224) %448, i32 noundef %449, double noundef -1.000000e+00, double noundef %456)
  br label %457

457:                                              ; preds = %447, %437
  br label %458

458:                                              ; preds = %457, %436
  br label %459

459:                                              ; preds = %458, %381, %372, %354, %343
  %460 = getelementptr inbounds %"class.presolve::HPresolve", ptr %24, i32 0, i32 0
  %461 = load ptr, ptr %460, align 8, !tbaa !79
  %462 = getelementptr inbounds %class.HighsLp, ptr %461, i32 0, i32 16
  %463 = load i32, ptr %7, align 4, !tbaa !9
  %464 = sext i32 %463 to i64
  %465 = call noundef nonnull align 1 dereferenceable(1) ptr @_ZNSt6vectorI12HighsVarTypeSaIS0_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %462, i64 noundef %464) #5
  %466 = load i8, ptr %465, align 1, !tbaa !93
  %467 = icmp eq i8 %466, 1
  br i1 %467, label %468, label %469

468:                                              ; preds = %459
  store i32 0, ptr %4, align 4
  store i32 1, ptr %10, align 4
  br label %504

469:                                              ; preds = %459
  br label %470

470:                                              ; preds = %469, %141
  %471 = load i8, ptr %14, align 1, !tbaa !78, !range !76, !noundef !77
  %472 = trunc i8 %471 to i1
  br i1 %472, label %473, label %478

473:                                              ; preds = %470
  %474 = getelementptr inbounds %"class.presolve::HPresolve", ptr %24, i32 0, i32 33
  %475 = load i32, ptr %7, align 4, !tbaa !9
  %476 = call noundef i32 @_ZNK20HighsLinearSumBounds17getNumInfSumUpperEi(ptr noundef nonnull align 8 dereferenceable(240) %474, i32 noundef %475)
  %477 = icmp sle i32 %476, 1
  br i1 %477, label %486, label %478

478:                                              ; preds = %473, %470
  %479 = load i8, ptr %13, align 1, !tbaa !78, !range !76, !noundef !77
  %480 = trunc i8 %479 to i1
  br i1 %480, label %481, label %503

481:                                              ; preds = %478
  %482 = getelementptr inbounds %"class.presolve::HPresolve", ptr %24, i32 0, i32 33
  %483 = load i32, ptr %7, align 4, !tbaa !9
  %484 = call noundef i32 @_ZNK20HighsLinearSumBounds17getNumInfSumLowerEi(ptr noundef nonnull align 8 dereferenceable(240) %482, i32 noundef %483)
  %485 = icmp sle i32 %484, 1
  br i1 %485, label %486, label %503

486:                                              ; preds = %481, %473
  call void @llvm.lifetime.start.p0(i64 8, ptr %19) #5
  call void @llvm.lifetime.start.p0(i64 32, ptr %20) #5
  %487 = load i32, ptr %7, align 4, !tbaa !9
  call void @_ZNK8presolve9HPresolve15getColumnVectorEi(ptr dead_on_unwind writable sret(%struct.HighsTripletListSlice) align 8 %20, ptr noundef nonnull align 8 dereferenceable(1720) %24, i32 noundef %487)
  store ptr %20, ptr %19, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 32, ptr %21) #5
  %488 = load ptr, ptr %19, align 8, !tbaa !5
  call void @_ZNK16HighsMatrixSliceI21HighsTripletListSliceE5beginEv(ptr dead_on_unwind writable sret(%"class.HighsMatrixSlice<HighsTripletListSlice>::iterator") align 8 %21, ptr noundef nonnull align 8 dereferenceable(28) %488)
  call void @llvm.lifetime.start.p0(i64 32, ptr %22) #5
  %489 = load ptr, ptr %19, align 8, !tbaa !5
  call void @_ZNK16HighsMatrixSliceI21HighsTripletListSliceE3endEv(ptr dead_on_unwind writable sret(%"class.HighsMatrixSlice<HighsTripletListSlice>::iterator") align 8 %22, ptr noundef nonnull align 8 dereferenceable(28) %489)
  br label %490

490:                                              ; preds = %500, %486
  %491 = call noundef zeroext i1 @_ZNK16HighsMatrixSliceI21HighsTripletListSliceE8iteratorneERKS2_(ptr noundef nonnull align 8 dereferenceable(28) %21, ptr noundef nonnull align 8 dereferenceable(28) %22)
  br i1 %491, label %493, label %492

492:                                              ; preds = %490
  store i32 5, ptr %10, align 4
  call void @llvm.lifetime.end.p0(i64 32, ptr %22) #5
  call void @llvm.lifetime.end.p0(i64 32, ptr %21) #5
  call void @llvm.lifetime.end.p0(i64 32, ptr %20) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %19) #5
  br label %502

493:                                              ; preds = %490
  call void @llvm.lifetime.start.p0(i64 8, ptr %23) #5
  %494 = call noundef nonnull align 8 dereferenceable(16) ptr @_ZN16HighsMatrixSliceI21HighsTripletListSliceE8iteratordeEv(ptr noundef nonnull align 8 dereferenceable(28) %21)
  store ptr %494, ptr %23, align 8, !tbaa !5
  %495 = load ptr, ptr %23, align 8, !tbaa !5
  %496 = call noundef i32 @_ZNK17HighsSliceNonzero5indexEv(ptr noundef nonnull align 8 dereferenceable(16) %495)
  %497 = load i32, ptr %7, align 4, !tbaa !9
  %498 = load ptr, ptr %23, align 8, !tbaa !5
  %499 = call noundef double @_ZNK17HighsSliceNonzero5valueEv(ptr noundef nonnull align 8 dereferenceable(16) %498)
  call void @_ZN8presolve9HPresolve26updateRowDualImpliedBoundsEiid(ptr noundef nonnull align 8 dereferenceable(1720) %24, i32 noundef %496, i32 noundef %497, double noundef %499)
  call void @llvm.lifetime.end.p0(i64 8, ptr %23) #5
  br label %500

500:                                              ; preds = %493
  %501 = call noundef nonnull align 8 dereferenceable(28) ptr @_ZN16HighsMatrixSliceI21HighsTripletListSliceE8iteratorppEv(ptr noundef nonnull align 8 dereferenceable(28) %21)
  br label %490

502:                                              ; preds = %492
  br label %503

503:                                              ; preds = %502, %481, %478
  store i32 0, ptr %4, align 4
  store i32 1, ptr %10, align 4
  br label %504

504:                                              ; preds = %503, %468
  call void @llvm.lifetime.end.p0(i64 1, ptr %14) #5
  call void @llvm.lifetime.end.p0(i64 1, ptr %13) #5
  br label %505

505:                                              ; preds = %504, %140, %129, %114, %110, %82, %81
  call void @llvm.lifetime.end.p0(i64 8, ptr %9) #5
  call void @llvm.lifetime.end.p0(i64 1, ptr %8) #5
  %506 = load i32, ptr %4, align 4
  ret i32 %506
}

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

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

attributes #0 = { nocallback nofree nosync nounwind willreturn memory(argmem: readwrite) }
attributes #1 = { mustprogress nounwind uwtable "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }
attributes #2 = { inlinehint mustprogress nounwind uwtable "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }
attributes #3 = { noreturn nounwind "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }
attributes #4 = { mustprogress uwtable "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }
attributes #5 = { nounwind }
attributes #6 = { noreturn nounwind }

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

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


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

%struct.HighsTripletListSlice = type { %class.HighsMatrixSlice.base.391, [4 x i8] }
%class.HighsMatrixSlice.base.391 = type <{ ptr, ptr, ptr, i32 }>
%"class.HighsMatrixSlice<HighsTripletListSlice>::iterator" = type <{ %class.HighsSliceNonzero, ptr, i32, [4 x i8] }>
%class.HighsSliceNonzero = type { ptr, ptr }

@.str.55 = external hidden unnamed_addr constant [76 x i8], align 1
@.str.80 = external hidden unnamed_addr constant [17 x i8], align 1
@__PRETTY_FUNCTION__._ZN8presolve9HPresolve11colPresolveERNS_19HighsPostsolveStackEi = external hidden unnamed_addr constant [84 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

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

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

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

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

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

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

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

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

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

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

; Function Attrs: mustprogress 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 noundef double @_ZNK8presolve9HPresolve15getMaxAbsColValEi(ptr noundef nonnull align 8 dereferenceable(1720), i32 noundef) local_unnamed_addr #4 align 2

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

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

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

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

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

; Function Attrs: mustprogress uwtable
declare dso_local void @_ZN8presolve19HighsPostsolveStack15removedFixedColI21HighsTripletListSliceEEviddRK16HighsMatrixSliceIT_E(ptr noundef nonnull align 8 dereferenceable(224), i32 noundef, double 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 @_ZN8presolve9HPresolve8emptyColERNS_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 @_ZN8presolve9HPresolve12singletonColERNS_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 @_ZN8presolve9HPresolve18detectDominatedColERNS_19HighsPostsolveStackEib(ptr noundef nonnull align 8 dereferenceable(1720), ptr noundef nonnull align 8 dereferenceable(224), i32 noundef, i1 noundef zeroext) local_unnamed_addr #4 align 2

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

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

; Function Attrs: mustprogress uwtable
define dso_local noundef i32 @_ZN8presolve9HPresolve11colPresolveERNS_19HighsPostsolveStackEi(ptr noundef nonnull align 8 dereferenceable(1720) %0, ptr noundef nonnull align 8 dereferenceable(224) %1, i32 noundef %2) local_unnamed_addr #4 align 2 {
  %4 = alloca %struct.HighsTripletListSlice, align 8
  %5 = alloca %struct.HighsTripletListSlice, align 8
  %6 = alloca %"class.HighsMatrixSlice<HighsTripletListSlice>::iterator", align 8
  %7 = alloca %"class.HighsMatrixSlice<HighsTripletListSlice>::iterator", align 8
  %8 = getelementptr inbounds i8, ptr %0, i64 1504
  %9 = sext i32 %2 to i64
  %10 = tail call noundef nonnull align 1 dereferenceable(1) ptr @_ZNSt6vectorIhSaIhEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %8, i64 noundef %9) #5
  %11 = load i8, ptr %10, align 1, !tbaa !5
  %.not = icmp eq i8 %11, 0
  br i1 %.not, label %13, label %12

12:                                               ; preds = %3
  tail call void @__assert_fail(ptr noundef nonnull @.str.80, ptr noundef nonnull @.str.55, i32 noundef 3990, ptr noundef nonnull @__PRETTY_FUNCTION__._ZN8presolve9HPresolve11colPresolveERNS_19HighsPostsolveStackEi) #6
  unreachable

13:                                               ; preds = %3
  %14 = load ptr, ptr %0, align 8, !tbaa !8
  %15 = getelementptr inbounds i8, ptr %14, i64 56
  %16 = tail call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt6vectorIdSaIdEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %15, i64 noundef %9) #5
  %17 = load double, ptr %16, align 8, !tbaa !74
  %18 = load ptr, ptr %0, align 8, !tbaa !8
  %19 = getelementptr inbounds i8, ptr %18, i64 32
  %20 = tail call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt6vectorIdSaIdEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %19, i64 noundef %9) #5
  %21 = load double, ptr %20, align 8, !tbaa !74
  %22 = fsub double %17, %21
  %23 = getelementptr inbounds i8, ptr %0, i64 32
  %24 = load double, ptr %23, align 8, !tbaa !75
  %25 = fcmp ugt double %22, %24
  br i1 %25, label %51, label %26

26:                                               ; preds = %13
  %27 = getelementptr inbounds i8, ptr %0, i64 8
  %28 = load ptr, ptr %27, align 8, !tbaa !76
  %29 = getelementptr inbounds i8, ptr %28, i64 264
  %30 = load double, ptr %29, align 8, !tbaa !77
  %31 = fcmp ugt double %22, %30
  br i1 %31, label %32, label %37

32:                                               ; preds = %26
  %33 = tail call noundef double @_ZNK8presolve9HPresolve15getMaxAbsColValEi(ptr noundef nonnull align 8 dereferenceable(1720) %0, i32 noundef %2)
  %34 = fmul double %22, %33
  %35 = load double, ptr %23, align 8, !tbaa !75
  %36 = fcmp ugt double %34, %35
  br i1 %36, label %51, label %37

37:                                               ; preds = %32, %26
  %38 = phi double [ %35, %32 ], [ %24, %26 ]
  %39 = fneg double %38
  %40 = fcmp olt double %22, %39
  br i1 %40, label %272, label %41

41:                                               ; preds = %37
  %42 = load ptr, ptr %0, align 8, !tbaa !8
  %43 = getelementptr inbounds i8, ptr %42, i64 32
  %44 = tail call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt6vectorIdSaIdEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %43, i64 noundef %9) #5
  %45 = load double, ptr %44, align 8, !tbaa !74
  %46 = load ptr, ptr %0, align 8, !tbaa !8
  %47 = getelementptr inbounds i8, ptr %46, i64 8
  %48 = tail call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt6vectorIdSaIdEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %47, i64 noundef %9) #5
  %49 = load double, ptr %48, align 8, !tbaa !74
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %4) #5
  call void @_ZNK8presolve9HPresolve15getColumnVectorEi(ptr dead_on_unwind nonnull writable sret(%struct.HighsTripletListSlice) align 8 %4, ptr noundef nonnull align 8 dereferenceable(1720) %0, i32 noundef %2)
  call void @_ZN8presolve19HighsPostsolveStack15removedFixedColI21HighsTripletListSliceEEviddRK16HighsMatrixSliceIT_E(ptr noundef nonnull align 8 dereferenceable(224) %1, i32 noundef %2, double noundef %45, double noundef %49, ptr noundef nonnull align 8 dereferenceable(28) %4)
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %4) #5
  call void @_ZN8presolve9HPresolve14removeFixedColEi(ptr noundef nonnull align 8 dereferenceable(1720) %0, i32 noundef %2)
  %50 = call noundef i32 @_ZN8presolve9HPresolve11checkLimitsERNS_19HighsPostsolveStackE(ptr noundef nonnull align 8 dereferenceable(1720) %0, ptr noundef nonnull align 8 dereferenceable(224) %1)
  br label %272

51:                                               ; preds = %32, %13
  %52 = getelementptr inbounds i8, ptr %0, i64 328
  %53 = tail call noundef nonnull align 4 dereferenceable(4) ptr @_ZNSt6vectorIiSaIiEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %52, i64 noundef %9) #5
  %54 = load i32, ptr %53, align 4, !tbaa !84
  switch i32 %54, label %59 [
    i32 0, label %55
    i32 1, label %57
  ]

55:                                               ; preds = %51
  %56 = tail call noundef i32 @_ZN8presolve9HPresolve8emptyColERNS_19HighsPostsolveStackEi(ptr noundef nonnull align 8 dereferenceable(1720) %0, ptr noundef nonnull align 8 dereferenceable(224) %1, i32 noundef %2)
  br label %272

57:                                               ; preds = %51
  %58 = tail call noundef i32 @_ZN8presolve9HPresolve12singletonColERNS_19HighsPostsolveStackEi(ptr noundef nonnull align 8 dereferenceable(1720) %0, ptr noundef nonnull align 8 dereferenceable(224) %1, i32 noundef %2)
  br label %272

59:                                               ; preds = %51
  %60 = tail call noundef i32 @_ZN8presolve9HPresolve18detectDominatedColERNS_19HighsPostsolveStackEib(ptr noundef nonnull align 8 dereferenceable(1720) %0, ptr noundef nonnull align 8 dereferenceable(224) %1, i32 noundef %2, i1 noundef zeroext true)
  %.not96 = icmp eq i32 %60, 0
  br i1 %.not96, label %61, label %272

61:                                               ; preds = %59
  %62 = tail call noundef nonnull align 1 dereferenceable(1) ptr @_ZNSt6vectorIhSaIhEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %8, i64 noundef %9) #5
  %63 = load i8, ptr %62, align 1, !tbaa !5
  %.not97 = icmp eq i8 %63, 0
  br i1 %.not97, label %64, label %272

64:                                               ; preds = %61
  %65 = tail call noundef zeroext i1 @_ZNK8presolve9HPresolve14isUpperImpliedEi(ptr noundef nonnull align 8 dereferenceable(1720) %0, i32 noundef %2)
  %66 = tail call noundef zeroext i1 @_ZNK8presolve9HPresolve14isLowerImpliedEi(ptr noundef nonnull align 8 dereferenceable(1720) %0, i32 noundef %2)
  %67 = getelementptr inbounds i8, ptr %0, i64 24
  %68 = load ptr, ptr %67, align 8, !tbaa !85
  %.not98 = icmp eq ptr %68, null
  br i1 %.not98, label %255, label %69

69:                                               ; preds = %64
  br i1 %66, label %70, label %127

70:                                               ; preds = %69
  %71 = getelementptr inbounds i8, ptr %0, i64 448
  %72 = tail call noundef nonnull align 4 dereferenceable(4) ptr @_ZNSt6vectorIiSaIiEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %71, i64 noundef %9) #5
  %73 = load i32, ptr %72, align 4, !tbaa !84
  %.not99 = icmp eq i32 %73, -1
  br i1 %.not99, label %127, label %74

74:                                               ; preds = %70
  %75 = getelementptr inbounds i8, ptr %0, i64 928
  %76 = tail call noundef i32 @_ZNK20HighsLinearSumBounds21getNumInfSumUpperOrigEi(ptr noundef nonnull align 8 dereferenceable(240) %75, i32 noundef %2)
  %77 = icmp eq i32 %76, 1
  br i1 %77, label %78, label %127

78:                                               ; preds = %74
  %79 = load ptr, ptr %0, align 8, !tbaa !8
  %80 = getelementptr inbounds i8, ptr %79, i64 8
  %81 = tail call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt6vectorIdSaIdEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %80, i64 noundef %9) #5
  %82 = load double, ptr %81, align 8, !tbaa !74
  %83 = fcmp ult double %82, 0.000000e+00
  br i1 %83, label %127, label %84

84:                                               ; preds = %78
  %85 = tail call noundef nonnull align 4 dereferenceable(4) ptr @_ZNSt6vectorIiSaIiEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %71, i64 noundef %9) #5
  %86 = load i32, ptr %85, align 4, !tbaa !84
  %87 = load ptr, ptr %0, align 8, !tbaa !8
  %88 = getelementptr inbounds i8, ptr %87, i64 80
  %89 = sext i32 %86 to i64
  %90 = tail call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt6vectorIdSaIdEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %88, i64 noundef %89) #5
  %91 = load double, ptr %90, align 8, !tbaa !74
  %92 = fcmp oeq double %91, 0xFFF0000000000000
  br i1 %92, label %99, label %93

93:                                               ; preds = %84
  %94 = load ptr, ptr %0, align 8, !tbaa !8
  %95 = getelementptr inbounds i8, ptr %94, i64 104
  %96 = tail call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt6vectorIdSaIdEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %95, i64 noundef %89) #5
  %97 = load double, ptr %96, align 8, !tbaa !74
  %98 = fcmp oeq double %97, 0x7FF0000000000000
  br i1 %98, label %99, label %127

99:                                               ; preds = %93, %84
  %100 = tail call noundef i32 @_ZN8presolve9HPresolve11findNonzeroEii(ptr noundef nonnull align 8 dereferenceable(1720) %0, i32 noundef %86, i32 noundef %2)
  %101 = load ptr, ptr %0, align 8, !tbaa !8
  %102 = getelementptr inbounds i8, ptr %101, i64 376
  %103 = tail call noundef nonnull align 1 dereferenceable(1) ptr @_ZNSt6vectorI12HighsVarTypeSaIS0_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %102, i64 noundef %9) #5
  %104 = load i8, ptr %103, align 1, !tbaa !86
  %.not100 = icmp eq i8 %104, 1
  br i1 %.not100, label %105, label %._crit_edge104

._crit_edge104:                                   ; preds = %99
  %.pre106 = sext i32 %100 to i64
  br label %120

105:                                              ; preds = %99
  %106 = getelementptr inbounds i8, ptr %0, i64 280
  %107 = tail call noundef nonnull align 4 dereferenceable(4) ptr @_ZNSt6vectorIiSaIiEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %106, i64 noundef %89) #5
  %108 = load i32, ptr %107, align 4, !tbaa !84
  %109 = getelementptr inbounds i8, ptr %0, i64 256
  %110 = tail call noundef nonnull align 4 dereferenceable(4) ptr @_ZNSt6vectorIiSaIiEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %109, i64 noundef %89) #5
  %111 = load i32, ptr %110, align 4, !tbaa !84
  %112 = icmp eq i32 %108, %111
  br i1 %112, label %113, label %127

113:                                              ; preds = %105
  %114 = getelementptr inbounds i8, ptr %0, i64 40
  %115 = sext i32 %100 to i64
  %116 = tail call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt6vectorIdSaIdEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %114, i64 noundef %115) #5
  %117 = load double, ptr %116, align 8, !tbaa !74
  %118 = fdiv double 1.000000e+00, %117
  %119 = tail call noundef zeroext i1 @_ZNK8presolve9HPresolve23rowCoefficientsIntegralEid(ptr noundef nonnull align 8 dereferenceable(1720) %0, i32 noundef %86, double noundef %118)
  br i1 %119, label %120, label %127

120:                                              ; preds = %._crit_edge104, %113
  %.pre-phi107 = phi i64 [ %.pre106, %._crit_edge104 ], [ %115, %113 ]
  %121 = getelementptr inbounds i8, ptr %0, i64 40
  %122 = tail call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt6vectorIdSaIdEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %121, i64 noundef %.pre-phi107) #5
  %123 = load double, ptr %122, align 8, !tbaa !74
  %124 = fcmp ogt double %123, 0.000000e+00
  br i1 %124, label %125, label %126

125:                                              ; preds = %120
  tail call void @_ZN8presolve9HPresolve22changeImplRowDualLowerEidi(ptr noundef nonnull align 8 dereferenceable(1720) %0, i32 noundef %86, double noundef 0.000000e+00, i32 noundef %2)
  br label %127

126:                                              ; preds = %120
  tail call void @_ZN8presolve9HPresolve22changeImplRowDualUpperEidi(ptr noundef nonnull align 8 dereferenceable(1720) %0, i32 noundef %86, double noundef 0.000000e+00, i32 noundef %2)
  br label %127

127:                                              ; preds = %93, %125, %126, %113, %105, %78, %74, %70, %69
  br i1 %65, label %128, label %185

128:                                              ; preds = %127
  %129 = getelementptr inbounds i8, ptr %0, i64 472
  %130 = tail call noundef nonnull align 4 dereferenceable(4) ptr @_ZNSt6vectorIiSaIiEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %129, i64 noundef %9) #5
  %131 = load i32, ptr %130, align 4, !tbaa !84
  %.not101 = icmp eq i32 %131, -1
  br i1 %.not101, label %185, label %132

132:                                              ; preds = %128
  %133 = getelementptr inbounds i8, ptr %0, i64 928
  %134 = tail call noundef i32 @_ZNK20HighsLinearSumBounds21getNumInfSumLowerOrigEi(ptr noundef nonnull align 8 dereferenceable(240) %133, i32 noundef %2)
  %135 = icmp eq i32 %134, 1
  br i1 %135, label %136, label %185

136:                                              ; preds = %132
  %137 = load ptr, ptr %0, align 8, !tbaa !8
  %138 = getelementptr inbounds i8, ptr %137, i64 8
  %139 = tail call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt6vectorIdSaIdEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %138, i64 noundef %9) #5
  %140 = load double, ptr %139, align 8, !tbaa !74
  %141 = fcmp ugt double %140, 0.000000e+00
  br i1 %141, label %185, label %142

142:                                              ; preds = %136
  %143 = tail call noundef nonnull align 4 dereferenceable(4) ptr @_ZNSt6vectorIiSaIiEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %129, i64 noundef %9) #5
  %144 = load i32, ptr %143, align 4, !tbaa !84
  %145 = load ptr, ptr %0, align 8, !tbaa !8
  %146 = getelementptr inbounds i8, ptr %145, i64 80
  %147 = sext i32 %144 to i64
  %148 = tail call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt6vectorIdSaIdEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %146, i64 noundef %147) #5
  %149 = load double, ptr %148, align 8, !tbaa !74
  %150 = fcmp oeq double %149, 0xFFF0000000000000
  br i1 %150, label %157, label %151

151:                                              ; preds = %142
  %152 = load ptr, ptr %0, align 8, !tbaa !8
  %153 = getelementptr inbounds i8, ptr %152, i64 104
  %154 = tail call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt6vectorIdSaIdEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %153, i64 noundef %147) #5
  %155 = load double, ptr %154, align 8, !tbaa !74
  %156 = fcmp oeq double %155, 0x7FF0000000000000
  br i1 %156, label %157, label %185

157:                                              ; preds = %151, %142
  %158 = tail call noundef i32 @_ZN8presolve9HPresolve11findNonzeroEii(ptr noundef nonnull align 8 dereferenceable(1720) %0, i32 noundef %144, i32 noundef %2)
  %159 = load ptr, ptr %0, align 8, !tbaa !8
  %160 = getelementptr inbounds i8, ptr %159, i64 376
  %161 = tail call noundef nonnull align 1 dereferenceable(1) ptr @_ZNSt6vectorI12HighsVarTypeSaIS0_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %160, i64 noundef %9) #5
  %162 = load i8, ptr %161, align 1, !tbaa !86
  %.not102 = icmp eq i8 %162, 1
  br i1 %.not102, label %163, label %._crit_edge105

._crit_edge105:                                   ; preds = %157
  %.pre = sext i32 %158 to i64
  br label %178

163:                                              ; preds = %157
  %164 = getelementptr inbounds i8, ptr %0, i64 280
  %165 = tail call noundef nonnull align 4 dereferenceable(4) ptr @_ZNSt6vectorIiSaIiEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %164, i64 noundef %147) #5
  %166 = load i32, ptr %165, align 4, !tbaa !84
  %167 = getelementptr inbounds i8, ptr %0, i64 256
  %168 = tail call noundef nonnull align 4 dereferenceable(4) ptr @_ZNSt6vectorIiSaIiEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %167, i64 noundef %147) #5
  %169 = load i32, ptr %168, align 4, !tbaa !84
  %170 = icmp eq i32 %166, %169
  br i1 %170, label %171, label %185

171:                                              ; preds = %163
  %172 = getelementptr inbounds i8, ptr %0, i64 40
  %173 = sext i32 %158 to i64
  %174 = tail call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt6vectorIdSaIdEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %172, i64 noundef %173) #5
  %175 = load double, ptr %174, align 8, !tbaa !74
  %176 = fdiv double 1.000000e+00, %175
  %177 = tail call noundef zeroext i1 @_ZNK8presolve9HPresolve23rowCoefficientsIntegralEid(ptr noundef nonnull align 8 dereferenceable(1720) %0, i32 noundef %144, double noundef %176)
  br i1 %177, label %178, label %185

178:                                              ; preds = %._crit_edge105, %171
  %.pre-phi = phi i64 [ %.pre, %._crit_edge105 ], [ %173, %171 ]
  %179 = getelementptr inbounds i8, ptr %0, i64 40
  %180 = tail call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt6vectorIdSaIdEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %179, i64 noundef %.pre-phi) #5
  %181 = load double, ptr %180, align 8, !tbaa !74
  %182 = fcmp ogt double %181, 0.000000e+00
  br i1 %182, label %183, label %184

183:                                              ; preds = %178
  tail call void @_ZN8presolve9HPresolve22changeImplRowDualUpperEidi(ptr noundef nonnull align 8 dereferenceable(1720) %0, i32 noundef %144, double noundef 0.000000e+00, i32 noundef %2)
  br label %185

184:                                              ; preds = %178
  tail call void @_ZN8presolve9HPresolve22changeImplRowDualLowerEidi(ptr noundef nonnull align 8 dereferenceable(1720) %0, i32 noundef %144, double noundef 0.000000e+00, i32 noundef %2)
  br label %185

185:                                              ; preds = %151, %183, %184, %171, %163, %136, %132, %128, %127
  %186 = tail call noundef zeroext i1 @_ZN8presolve9HPresolve21convertImpliedIntegerEiib(ptr noundef nonnull align 8 dereferenceable(1720) %0, i32 noundef %2, i32 noundef -1, i1 noundef zeroext false)
  %187 = load ptr, ptr %0, align 8, !tbaa !8
  %188 = getelementptr inbounds i8, ptr %187, i64 376
  %189 = tail call noundef nonnull align 1 dereferenceable(1) ptr @_ZNSt6vectorI12HighsVarTypeSaIS0_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %188, i64 noundef %9) #5
  %190 = load i8, ptr %189, align 1, !tbaa !86
  %.not103 = icmp eq i8 %190, 0
  br i1 %.not103, label %249, label %191

191:                                              ; preds = %185
  %192 = load ptr, ptr %0, align 8, !tbaa !8
  %193 = getelementptr inbounds i8, ptr %192, i64 32
  %194 = tail call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt6vectorIdSaIdEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %193, i64 noundef %9) #5
  %195 = load double, ptr %194, align 8, !tbaa !74
  %196 = fcmp une double %195, 0.000000e+00
  br i1 %196, label %197, label %249

197:                                              ; preds = %191
  %198 = load ptr, ptr %0, align 8, !tbaa !8
  %199 = getelementptr inbounds i8, ptr %198, i64 32
  %200 = tail call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt6vectorIdSaIdEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %199, i64 noundef %9) #5
  %201 = load double, ptr %200, align 8, !tbaa !74
  %202 = fcmp une double %201, 0xFFF0000000000000
  br i1 %202, label %209, label %203

203:                                              ; preds = %197
  %204 = load ptr, ptr %0, align 8, !tbaa !8
  %205 = getelementptr inbounds i8, ptr %204, i64 56
  %206 = tail call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt6vectorIdSaIdEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %205, i64 noundef %9) #5
  %207 = load double, ptr %206, align 8, !tbaa !74
  %208 = fcmp une double %207, 0x7FF0000000000000
  br i1 %208, label %209, label %249

209:                                              ; preds = %203, %197
  %210 = load ptr, ptr %0, align 8, !tbaa !8
  %211 = getelementptr inbounds i8, ptr %210, i64 56
  %212 = tail call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt6vectorIdSaIdEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %211, i64 noundef %9) #5
  %213 = load double, ptr %212, align 8, !tbaa !74
  %214 = load ptr, ptr %0, align 8, !tbaa !8
  %215 = getelementptr inbounds i8, ptr %214, i64 32
  %216 = tail call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt6vectorIdSaIdEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %215, i64 noundef %9) #5
  %217 = load double, ptr %216, align 8, !tbaa !74
  %218 = fsub double %213, %217
  %219 = fcmp ogt double %218, 5.000000e-01
  br i1 %219, label %220, label %249

220:                                              ; preds = %209
  %221 = load ptr, ptr %0, align 8, !tbaa !8
  %222 = getelementptr inbounds i8, ptr %221, i64 56
  %223 = tail call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt6vectorIdSaIdEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %222, i64 noundef %9) #5
  %224 = load double, ptr %223, align 8, !tbaa !74
  %225 = tail call noundef double @_ZSt3absd(double noundef %224)
  %226 = load ptr, ptr %0, align 8, !tbaa !8
  %227 = getelementptr inbounds i8, ptr %226, i64 32
  %228 = tail call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt6vectorIdSaIdEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %227, i64 noundef %9) #5
  %229 = load double, ptr %228, align 8, !tbaa !74
  %230 = tail call noundef double @_ZSt3absd(double noundef %229)
  %231 = fcmp ogt double %225, %230
  %232 = load ptr, ptr %0, align 8, !tbaa !8
  br i1 %231, label %233, label %239

233:                                              ; preds = %220
  %234 = getelementptr inbounds i8, ptr %232, i64 32
  %235 = tail call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt6vectorIdSaIdEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %234, i64 noundef %9) #5
  %236 = load double, ptr %235, align 8, !tbaa !74
  %237 = tail call noundef double @_ZSt3absd(double noundef %236)
  %238 = fcmp olt double %237, 1.000500e+03
  br i1 %238, label %.sink.split, label %249

239:                                              ; preds = %220
  %240 = getelementptr inbounds i8, ptr %232, i64 56
  %241 = tail call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt6vectorIdSaIdEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %240, i64 noundef %9) #5
  %242 = load double, ptr %241, align 8, !tbaa !74
  %243 = tail call noundef double @_ZSt3absd(double noundef %242)
  %244 = fcmp olt double %243, 1.000500e+03
  br i1 %244, label %.sink.split, label %249

.sink.split:                                      ; preds = %239, %233
  %.sink112 = phi i64 [ 32, %233 ], [ 56, %239 ]
  %.sink = phi double [ 1.000000e+00, %233 ], [ -1.000000e+00, %239 ]
  %245 = load ptr, ptr %0, align 8, !tbaa !8
  %246 = getelementptr inbounds i8, ptr %245, i64 %.sink112
  %247 = tail call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt6vectorIdSaIdEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %246, i64 noundef %9) #5
  %248 = load double, ptr %247, align 8, !tbaa !74
  tail call void @_ZN8presolve9HPresolve15transformColumnERNS_19HighsPostsolveStackEidd(ptr noundef nonnull align 8 dereferenceable(1720) %0, ptr noundef nonnull align 8 dereferenceable(224) %1, i32 noundef %2, double noundef %.sink, double noundef %248)
  br label %249

249:                                              ; preds = %.sink.split, %233, %239, %209, %203, %191, %185
  %250 = load ptr, ptr %0, align 8, !tbaa !8
  %251 = getelementptr inbounds i8, ptr %250, i64 376
  %252 = tail call noundef nonnull align 1 dereferenceable(1) ptr @_ZNSt6vectorI12HighsVarTypeSaIS0_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %251, i64 noundef %9) #5
  %253 = load i8, ptr %252, align 1, !tbaa !86
  %254 = icmp eq i8 %253, 1
  br i1 %254, label %272, label %255

255:                                              ; preds = %249, %64
  br i1 %66, label %256, label %260

256:                                              ; preds = %255
  %257 = getelementptr inbounds i8, ptr %0, i64 928
  %258 = tail call noundef i32 @_ZNK20HighsLinearSumBounds17getNumInfSumUpperEi(ptr noundef nonnull align 8 dereferenceable(240) %257, i32 noundef %2)
  %259 = icmp slt i32 %258, 2
  br i1 %259, label %265, label %260

260:                                              ; preds = %256, %255
  br i1 %65, label %261, label %272

261:                                              ; preds = %260
  %262 = getelementptr inbounds i8, ptr %0, i64 928
  %263 = tail call noundef i32 @_ZNK20HighsLinearSumBounds17getNumInfSumLowerEi(ptr noundef nonnull align 8 dereferenceable(240) %262, i32 noundef %2)
  %264 = icmp slt i32 %263, 2
  br i1 %264, label %265, label %272

265:                                              ; preds = %261, %256
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %5) #5
  call void @_ZNK8presolve9HPresolve15getColumnVectorEi(ptr dead_on_unwind nonnull writable sret(%struct.HighsTripletListSlice) align 8 %5, ptr noundef nonnull align 8 dereferenceable(1720) %0, i32 noundef %2)
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %6) #5
  call void @_ZNK16HighsMatrixSliceI21HighsTripletListSliceE5beginEv(ptr dead_on_unwind nonnull writable sret(%"class.HighsMatrixSlice<HighsTripletListSlice>::iterator") align 8 %6, ptr noundef nonnull align 8 dereferenceable(28) %5)
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %7) #5
  call void @_ZNK16HighsMatrixSliceI21HighsTripletListSliceE3endEv(ptr dead_on_unwind nonnull writable sret(%"class.HighsMatrixSlice<HighsTripletListSlice>::iterator") align 8 %7, ptr noundef nonnull align 8 dereferenceable(28) %5)
  %266 = call noundef zeroext i1 @_ZNK16HighsMatrixSliceI21HighsTripletListSliceE8iteratorneERKS2_(ptr noundef nonnull align 8 dereferenceable(28) %6, ptr noundef nonnull align 8 dereferenceable(28) %7)
  br i1 %266, label %.lr.ph, label %._crit_edge

._crit_edge:                                      ; preds = %.lr.ph, %265
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %7) #5
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %6) #5
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %5) #5
  br label %272

.lr.ph:                                           ; preds = %265, %.lr.ph
  %267 = call noundef nonnull align 8 dereferenceable(16) ptr @_ZN16HighsMatrixSliceI21HighsTripletListSliceE8iteratordeEv(ptr noundef nonnull align 8 dereferenceable(28) %6)
  %268 = call noundef i32 @_ZNK17HighsSliceNonzero5indexEv(ptr noundef nonnull align 8 dereferenceable(16) %267)
  %269 = call noundef double @_ZNK17HighsSliceNonzero5valueEv(ptr noundef nonnull align 8 dereferenceable(16) %267)
  call void @_ZN8presolve9HPresolve26updateRowDualImpliedBoundsEiid(ptr noundef nonnull align 8 dereferenceable(1720) %0, i32 noundef %268, i32 noundef %2, double noundef %269)
  %270 = call noundef nonnull align 8 dereferenceable(28) ptr @_ZN16HighsMatrixSliceI21HighsTripletListSliceE8iteratorppEv(ptr noundef nonnull align 8 dereferenceable(28) %6)
  %271 = call noundef zeroext i1 @_ZNK16HighsMatrixSliceI21HighsTripletListSliceE8iteratorneERKS2_(ptr noundef nonnull align 8 dereferenceable(28) %6, ptr noundef nonnull align 8 dereferenceable(28) %7)
  br i1 %271, label %.lr.ph, label %._crit_edge

272:                                              ; preds = %249, %._crit_edge, %261, %260, %61, %37, %59, %57, %55, %41
  %.2 = phi i32 [ %50, %41 ], [ %60, %59 ], [ %58, %57 ], [ %56, %55 ], [ 1, %37 ], [ 0, %61 ], [ 0, %260 ], [ 0, %261 ], [ 0, %._crit_edge ], [ 0, %249 ]
  ret i32 %.2
}

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

; Function Attrs: mustprogress nounwind uwtable
declare dso_local noundef i32 @_ZNK20HighsLinearSumBounds17getNumInfSumLowerEi(ptr noundef nonnull align 8 dereferenceable(240), i32 noundef) local_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 = { nounwind }
attributes #6 = { 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 = !{!"omnipotent char", !7, i64 0}
!7 = !{!"Simple C++ TBAA"}
!8 = !{!9, !10, i64 0}
!9 = !{!"_ZTSN8presolve9HPresolveE", !10, i64 0, !10, i64 8, !10, i64 16, !10, 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}
!10 = !{!"any pointer", !6, i64 0}
!11 = !{!"double", !6, 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", !10, i64 0, !10, i64 8, !10, 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", !10, i64 0, !10, i64 8, !10, 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", !10, i64 0, !10, i64 8, !10, 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, !10, i64 192, !10, i64 200, !10, i64 208, !10, i64 216, !10, i64 224, !10, 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", !10, i64 0, !10, i64 8, !10, 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", !10, i64 0, !10, i64 8, !10, 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", !10, i64 0, !10, i64 8, !10, 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", !10, i64 0, !39, i64 8, !40, i64 16, !39, i64 24, !41, i64 32, !10, i64 48}
!39 = !{!"long", !6, i64 0}
!40 = !{!"_ZTSNSt8__detail15_Hash_node_baseE", !10, i64 0}
!41 = !{!"_ZTSNSt8__detail20_Prime_rehash_policyE", !42, i64 0, !39, i64 8}
!42 = !{!"float", !6, 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, !10, i64 8, !10, i64 16, !10, i64 24}
!50 = !{!"_ZTSSt14_Rb_tree_color", !6, 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", !10, i64 0, !10, i64 8, !10, i64 16}
!55 = !{!"bool", !6, 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", !10, i64 0, !10, i64 8, !10, i64 16}
!60 = !{!"int", !6, i64 0}
!61 = !{!"_ZTS19HighsPresolveStatus", !6, i64 0}
!62 = !{!"_ZTS17HPresolveAnalysis", !10, i64 0, !10, i64 8, !10, i64 16, !10, i64 24, !10, 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, !10, i64 32}
!67 = !{!"_ZTSSt13_Bit_iterator", !68, i64 0}
!68 = !{!"_ZTSSt18_Bit_iterator_base", !10, 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", !10, i64 0, !10, i64 8, !10, i64 16}
!74 = !{!11, !11, i64 0}
!75 = !{!9, !11, i64 32}
!76 = !{!9, !10, i64 8}
!77 = !{!78, !11, i64 264}
!78 = !{!"_ZTS18HighsOptionsStruct", !79, i64 8, !79, i64 40, !79, i64 72, !79, i64 104, !11, i64 136, !79, i64 144, !79, i64 176, !60, i64 208, !79, i64 216, !11, i64 248, !11, i64 256, !11, i64 264, !11, i64 272, !11, i64 280, !11, i64 288, !11, i64 296, !11, i64 304, !11, i64 312, !11, i64 320, !11, i64 328, !60, i64 336, !60, i64 340, !60, i64 344, !60, i64 348, !60, i64 352, !60, i64 356, !60, i64 360, !60, i64 364, !60, i64 368, !60, i64 372, !60, i64 376, !60, i64 380, !60, i64 384, !60, i64 388, !79, i64 392, !55, i64 424, !55, i64 425, !55, i64 426, !60, i64 428, !60, i64 432, !79, i64 440, !55, i64 472, !55, i64 473, !55, i64 474, !60, i64 476, !55, i64 480, !55, i64 481, !60, i64 484, !60, i64 488, !11, i64 496, !60, i64 504, !60, i64 508, !60, i64 512, !55, i64 516, !60, i64 520, !55, i64 524, !55, i64 525, !55, i64 526, !55, i64 527, !55, i64 528, !55, i64 529, !55, i64 530, !60, i64 532, !60, i64 536, !60, i64 540, !60, i64 544, !60, i64 548, !60, i64 552, !60, i64 556, !60, i64 560, !60, i64 564, !60, i64 568, !60, i64 572, !60, i64 576, !60, i64 580, !60, i64 584, !60, i64 588, !55, i64 592, !55, i64 593, !55, i64 594, !55, i64 595, !11, i64 600, !11, i64 608, !11, i64 616, !11, i64 624, !11, i64 632, !11, i64 640, !11, i64 648, !11, i64 656, !11, i64 664, !11, i64 672, !11, i64 680, !55, i64 688, !55, i64 689, !55, i64 690, !55, i64 691, !60, i64 692, !11, i64 696, !55, i64 704, !55, i64 705, !79, i64 712, !11, i64 744, !60, i64 752, !60, i64 756, !55, i64 760, !55, i64 761, !55, i64 762, !55, i64 763, !60, i64 764, !60, i64 768, !60, i64 772, !60, i64 776, !60, i64 780, !60, i64 784, !60, i64 788, !60, i64 792, !60, i64 796, !60, i64 800, !60, i64 804, !11, i64 808, !11, i64 816, !11, i64 824, !11, i64 832, !11, i64 840, !55, i64 848, !55, i64 849, !79, i64 856, !55, i64 888, !60, i64 892, !81, i64 896}
!79 = !{!"_ZTSNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE", !80, i64 0, !39, i64 8, !6, i64 16}
!80 = !{!"_ZTSNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE12_Alloc_hiderE", !10, i64 0}
!81 = !{!"_ZTS15HighsLogOptions", !10, i64 0, !10, i64 8, !10, i64 16, !10, i64 24, !10, i64 32, !10, i64 40, !82, i64 48, !10, i64 80, !55, i64 88}
!82 = !{!"_ZTSSt8functionIFviRKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEPK20HighsCallbackDataOutP19HighsCallbackDataInPvEE", !83, i64 0, !10, i64 24}
!83 = !{!"_ZTSSt14_Function_base", !6, i64 0, !10, i64 16}
!84 = !{!60, !60, i64 0}
!85 = !{!9, !10, i64 24}
!86 = !{!87, !87, i64 0}
!87 = !{!"_ZTS12HighsVarType", !6, i64 0}


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