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

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

%class.HighsCDouble = type { double, double }
%"class.__gnu_cxx::__normal_iterator.25" = type { ptr }
%"struct.presolve::HighsPostsolveStack::DoubletonEquation" = type { double, double, double, double, double, double, i32, i32, i32, i8, i8, i32 }
%struct.HighsSolution = type { i8, i8, %"class.std::vector.20", %"class.std::vector.20", %"class.std::vector.20", %"class.std::vector.20" }
%"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 }
%struct.HighsBasis = type { i8, i8, i8, i8, i32, i32, %"class.std::__cxx11::basic_string", %"class.std::vector.26", %"class.std::vector.26" }
%"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.26" = type { %"struct.std::_Vector_base.27" }
%"struct.std::_Vector_base.27" = type { %"struct.std::_Vector_base<HighsBasisStatus, std::allocator<HighsBasisStatus>>::_Vector_impl" }
%"struct.std::_Vector_base<HighsBasisStatus, std::allocator<HighsBasisStatus>>::_Vector_impl" = type { %"struct.std::_Vector_base<HighsBasisStatus, std::allocator<HighsBasisStatus>>::_Vector_impl_data" }
%"struct.std::_Vector_base<HighsBasisStatus, std::allocator<HighsBasisStatus>>::_Vector_impl_data" = type { ptr, ptr, ptr }
%struct.HighsOptionsStruct = type { ptr, %"class.std::__cxx11::basic_string", %"class.std::__cxx11::basic_string", %"class.std::__cxx11::basic_string", %"class.std::__cxx11::basic_string", double, %"class.std::__cxx11::basic_string", %"class.std::__cxx11::basic_string", i32, %"class.std::__cxx11::basic_string", double, double, double, double, double, double, double, double, double, double, double, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, %"class.std::__cxx11::basic_string", i8, i8, i8, i32, i32, %"class.std::__cxx11::basic_string", i8, i8, i8, i32, i8, i8, i32, i32, double, i32, i32, i32, i8, i32, i8, i8, i8, i8, i8, i8, i8, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i8, i8, i8, i8, double, double, double, double, double, double, double, double, double, double, double, i8, i8, i8, i8, i32, double, i8, i8, %"class.std::__cxx11::basic_string", double, i32, i32, i8, i8, i8, i8, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, double, double, double, double, double, i8, i8, %"class.std::__cxx11::basic_string", i8, i32, %struct.HighsLogOptions }
%struct.HighsLogOptions = type <{ ptr, ptr, ptr, ptr, ptr, ptr, %"class.std::function", ptr, i8, [7 x i8] }>
%"class.std::function" = type { %"class.std::_Function_base", ptr }
%"class.std::_Function_base" = type { %"union.std::_Any_data", ptr }
%"union.std::_Any_data" = type { %"union.std::_Nocopy_types" }
%"union.std::_Nocopy_types" = type { { i64, i64 } }
%"struct.presolve::HighsPostsolveStack::Nonzero" = type { i32, double }

; 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 i64 @_ZNKSt6vectorIdSaIdEE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24)) #1 align 2

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

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

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

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

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

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

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

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

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

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

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

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

; Function Attrs: mustprogress nounwind uwtable
declare hidden noundef zeroext i8 @_ZN8presolveL16computeRowStatusEdNS_19HighsPostsolveStack7RowTypeE(double noundef, i32 noundef) #1

; Function Attrs: mustprogress uwtable
define dso_local void @_ZNK8presolve19HighsPostsolveStack17DoubletonEquation4undoERK12HighsOptionsRKSt6vectorINS0_7NonzeroESaIS6_EER13HighsSolutionR10HighsBasis(ptr noundef nonnull align 8 dereferenceable(72) %0, ptr noundef nonnull align 8 dereferenceable(1020) %1, ptr noundef nonnull align 8 dereferenceable(24) %2, ptr noundef nonnull align 8 dereferenceable(104) %3, ptr noundef nonnull align 8 dereferenceable(96) %4) #3 align 2 {
  %6 = alloca ptr, align 8
  %7 = alloca ptr, align 8
  %8 = alloca ptr, align 8
  %9 = alloca ptr, align 8
  %10 = alloca ptr, align 8
  %11 = alloca %class.HighsCDouble, align 8
  %12 = alloca %class.HighsCDouble, align 8
  %13 = alloca %class.HighsCDouble, align 8
  %14 = alloca %class.HighsCDouble, align 8
  %15 = alloca i8, align 1
  %16 = alloca i8, align 1
  %17 = alloca %class.HighsCDouble, align 8
  %18 = alloca ptr, align 8
  %19 = alloca %"class.__gnu_cxx::__normal_iterator.25", align 8
  %20 = alloca %"class.__gnu_cxx::__normal_iterator.25", align 8
  %21 = alloca ptr, align 8
  %22 = alloca double, align 8
  %23 = alloca %class.HighsCDouble, align 8
  %24 = alloca %class.HighsCDouble, align 8
  %25 = alloca %class.HighsCDouble, align 8
  %26 = alloca double, align 8
  %27 = alloca %class.HighsCDouble, align 8
  %28 = alloca %class.HighsCDouble, align 8
  %29 = alloca %class.HighsCDouble, align 8
  %30 = alloca i32, align 4
  store ptr %0, ptr %6, align 8, !tbaa !5
  store ptr %1, ptr %7, align 8, !tbaa !5
  store ptr %2, ptr %8, align 8, !tbaa !5
  store ptr %3, ptr %9, align 8, !tbaa !5
  store ptr %4, ptr %10, align 8, !tbaa !5
  %31 = load ptr, ptr %6, align 8
  call void @llvm.lifetime.start.p0(i64 16, ptr %11) #4
  call void @llvm.lifetime.start.p0(i64 16, ptr %12) #4
  %32 = getelementptr inbounds %"struct.presolve::HighsPostsolveStack::DoubletonEquation", ptr %31, i32 0, i32 2
  %33 = load double, ptr %32, align 8, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 16, ptr %13) #4
  call void @llvm.lifetime.start.p0(i64 16, ptr %14) #4
  %34 = getelementptr inbounds %"struct.presolve::HighsPostsolveStack::DoubletonEquation", ptr %31, i32 0, i32 0
  %35 = load double, ptr %34, align 8, !tbaa !15
  call void @_ZN12HighsCDoubleC2Ed(ptr noundef nonnull align 8 dereferenceable(16) %14, double noundef %35)
  %36 = load ptr, ptr %9, align 8, !tbaa !5
  %37 = getelementptr inbounds %struct.HighsSolution, ptr %36, i32 0, i32 2
  %38 = getelementptr inbounds %"struct.presolve::HighsPostsolveStack::DoubletonEquation", ptr %31, i32 0, i32 8
  %39 = load i32, ptr %38, align 8, !tbaa !16
  %40 = sext i32 %39 to i64
  %41 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt6vectorIdSaIdEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %37, i64 noundef %40) #4
  %42 = load double, ptr %41, align 8, !tbaa !17
  %43 = call { double, double } @_ZNK12HighsCDoublemlEd(ptr noundef nonnull align 8 dereferenceable(16) %14, double noundef %42)
  %44 = getelementptr inbounds { double, double }, ptr %13, i32 0, i32 0
  %45 = extractvalue { double, double } %43, 0
  store double %45, ptr %44, align 8
  %46 = getelementptr inbounds { double, double }, ptr %13, i32 0, i32 1
  %47 = extractvalue { double, double } %43, 1
  store double %47, ptr %46, align 8
  %48 = call { double, double } @_ZmidRK12HighsCDouble(double noundef %33, ptr noundef nonnull align 8 dereferenceable(16) %13)
  %49 = getelementptr inbounds { double, double }, ptr %12, i32 0, i32 0
  %50 = extractvalue { double, double } %48, 0
  store double %50, ptr %49, align 8
  %51 = getelementptr inbounds { double, double }, ptr %12, i32 0, i32 1
  %52 = extractvalue { double, double } %48, 1
  store double %52, ptr %51, align 8
  %53 = getelementptr inbounds %"struct.presolve::HighsPostsolveStack::DoubletonEquation", ptr %31, i32 0, i32 1
  %54 = load double, ptr %53, align 8, !tbaa !18
  %55 = call { double, double } @_ZNK12HighsCDoubledvEd(ptr noundef nonnull align 8 dereferenceable(16) %12, double noundef %54)
  %56 = getelementptr inbounds { double, double }, ptr %11, i32 0, i32 0
  %57 = extractvalue { double, double } %55, 0
  store double %57, ptr %56, align 8
  %58 = getelementptr inbounds { double, double }, ptr %11, i32 0, i32 1
  %59 = extractvalue { double, double } %55, 1
  store double %59, ptr %58, align 8
  %60 = call noundef double @_ZNK12HighsCDoublecvdEv(ptr noundef nonnull align 8 dereferenceable(16) %11)
  %61 = load ptr, ptr %9, align 8, !tbaa !5
  %62 = getelementptr inbounds %struct.HighsSolution, ptr %61, i32 0, i32 2
  %63 = getelementptr inbounds %"struct.presolve::HighsPostsolveStack::DoubletonEquation", ptr %31, i32 0, i32 7
  %64 = load i32, ptr %63, align 4, !tbaa !19
  %65 = sext i32 %64 to i64
  %66 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt6vectorIdSaIdEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %62, i64 noundef %65) #4
  store double %60, ptr %66, align 8, !tbaa !17
  call void @llvm.lifetime.end.p0(i64 16, ptr %14) #4
  call void @llvm.lifetime.end.p0(i64 16, ptr %13) #4
  call void @llvm.lifetime.end.p0(i64 16, ptr %12) #4
  call void @llvm.lifetime.end.p0(i64 16, ptr %11) #4
  %67 = getelementptr inbounds %"struct.presolve::HighsPostsolveStack::DoubletonEquation", ptr %31, i32 0, i32 6
  %68 = load i32, ptr %67, align 8, !tbaa !20
  %69 = icmp eq i32 %68, -1
  br i1 %69, label %75, label %70

70:                                               ; preds = %5
  %71 = load ptr, ptr %9, align 8, !tbaa !5
  %72 = getelementptr inbounds %struct.HighsSolution, ptr %71, i32 0, i32 1
  %73 = load i8, ptr %72, align 1, !tbaa !21, !range !27, !noundef !28
  %74 = trunc i8 %73 to i1
  br i1 %74, label %76, label %75

75:                                               ; preds = %70, %5
  br label %435

76:                                               ; preds = %70
  call void @llvm.lifetime.start.p0(i64 1, ptr %15) #4
  %77 = load ptr, ptr %10, align 8, !tbaa !5
  %78 = getelementptr inbounds %struct.HighsBasis, ptr %77, i32 0, i32 0
  %79 = load i8, ptr %78, align 8, !tbaa !29, !range !27, !noundef !28
  %80 = trunc i8 %79 to i1
  br i1 %80, label %93, label %81

81:                                               ; preds = %76
  %82 = load ptr, ptr %9, align 8, !tbaa !5
  %83 = getelementptr inbounds %struct.HighsSolution, ptr %82, i32 0, i32 3
  %84 = getelementptr inbounds %"struct.presolve::HighsPostsolveStack::DoubletonEquation", ptr %31, i32 0, i32 8
  %85 = load i32, ptr %84, align 8, !tbaa !16
  %86 = sext i32 %85 to i64
  %87 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt6vectorIdSaIdEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %83, i64 noundef %86) #4
  %88 = load double, ptr %87, align 8, !tbaa !17
  %89 = load ptr, ptr %7, align 8, !tbaa !5
  %90 = getelementptr inbounds %struct.HighsOptionsStruct, ptr %89, i32 0, i32 15
  %91 = load double, ptr %90, align 8, !tbaa !38
  %92 = call noundef zeroext i8 @_ZN8presolveL13computeStatusEdd(double noundef %88, double noundef %91)
  br label %111

93:                                               ; preds = %76
  %94 = load ptr, ptr %9, align 8, !tbaa !5
  %95 = getelementptr inbounds %struct.HighsSolution, ptr %94, i32 0, i32 3
  %96 = getelementptr inbounds %"struct.presolve::HighsPostsolveStack::DoubletonEquation", ptr %31, i32 0, i32 8
  %97 = load i32, ptr %96, align 8, !tbaa !16
  %98 = sext i32 %97 to i64
  %99 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt6vectorIdSaIdEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %95, i64 noundef %98) #4
  %100 = load double, ptr %99, align 8, !tbaa !17
  %101 = load ptr, ptr %10, align 8, !tbaa !5
  %102 = getelementptr inbounds %struct.HighsBasis, ptr %101, i32 0, i32 7
  %103 = getelementptr inbounds %"struct.presolve::HighsPostsolveStack::DoubletonEquation", ptr %31, i32 0, i32 8
  %104 = load i32, ptr %103, align 8, !tbaa !16
  %105 = sext i32 %104 to i64
  %106 = call noundef nonnull align 1 dereferenceable(1) ptr @_ZNSt6vectorI16HighsBasisStatusSaIS0_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %102, i64 noundef %105) #4
  %107 = load ptr, ptr %7, align 8, !tbaa !5
  %108 = getelementptr inbounds %struct.HighsOptionsStruct, ptr %107, i32 0, i32 15
  %109 = load double, ptr %108, align 8, !tbaa !38
  %110 = call noundef zeroext i8 @_ZN8presolveL13computeStatusEdR16HighsBasisStatusd(double noundef %100, ptr noundef nonnull align 1 dereferenceable(1) %106, double noundef %109)
  br label %111

111:                                              ; preds = %93, %81
  %112 = phi i8 [ %92, %81 ], [ %110, %93 ]
  store i8 %112, ptr %15, align 1, !tbaa !43
  call void @llvm.lifetime.start.p0(i64 1, ptr %16) #4
  %113 = getelementptr inbounds %"struct.presolve::HighsPostsolveStack::DoubletonEquation", ptr %31, i32 0, i32 6
  %114 = load i32, ptr %113, align 8, !tbaa !20
  %115 = sext i32 %114 to i64
  %116 = load ptr, ptr %9, align 8, !tbaa !5
  %117 = getelementptr inbounds %struct.HighsSolution, ptr %116, i32 0, i32 4
  %118 = call noundef i64 @_ZNKSt6vectorIdSaIdEE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24) %117) #4
  %119 = icmp ult i64 %115, %118
  %120 = zext i1 %119 to i8
  store i8 %120, ptr %16, align 1, !tbaa !45
  call void @llvm.lifetime.start.p0(i64 16, ptr %17) #4
  call void @_ZN12HighsCDoubleC2Ed(ptr noundef nonnull align 8 dereferenceable(16) %17, double noundef 0.000000e+00)
  %121 = load i8, ptr %16, align 1, !tbaa !45, !range !27, !noundef !28
  %122 = trunc i8 %121 to i1
  br i1 %122, label %123, label %178

123:                                              ; preds = %111
  %124 = load ptr, ptr %9, align 8, !tbaa !5
  %125 = getelementptr inbounds %struct.HighsSolution, ptr %124, i32 0, i32 5
  %126 = getelementptr inbounds %"struct.presolve::HighsPostsolveStack::DoubletonEquation", ptr %31, i32 0, i32 6
  %127 = load i32, ptr %126, align 8, !tbaa !20
  %128 = sext i32 %127 to i64
  %129 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt6vectorIdSaIdEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %125, i64 noundef %128) #4
  store double 0.000000e+00, ptr %129, align 8, !tbaa !17
  call void @llvm.lifetime.start.p0(i64 8, ptr %18) #4
  %130 = load ptr, ptr %8, align 8, !tbaa !5
  store ptr %130, ptr %18, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %19) #4
  %131 = load ptr, ptr %18, align 8, !tbaa !5
  %132 = call ptr @_ZNKSt6vectorIN8presolve19HighsPostsolveStack7NonzeroESaIS2_EE5beginEv(ptr noundef nonnull align 8 dereferenceable(24) %131) #4
  %133 = getelementptr inbounds %"class.__gnu_cxx::__normal_iterator.25", ptr %19, i32 0, i32 0
  store ptr %132, ptr %133, align 8
  call void @llvm.lifetime.start.p0(i64 8, ptr %20) #4
  %134 = load ptr, ptr %18, align 8, !tbaa !5
  %135 = call ptr @_ZNKSt6vectorIN8presolve19HighsPostsolveStack7NonzeroESaIS2_EE3endEv(ptr noundef nonnull align 8 dereferenceable(24) %134) #4
  %136 = getelementptr inbounds %"class.__gnu_cxx::__normal_iterator.25", ptr %20, i32 0, i32 0
  store ptr %135, ptr %136, align 8
  br label %137

137:                                              ; preds = %165, %123
  %138 = call noundef zeroext i1 @_ZN9__gnu_cxxneIPKN8presolve19HighsPostsolveStack7NonzeroESt6vectorIS3_SaIS3_EEEEbRKNS_17__normal_iteratorIT_T0_EESE_(ptr noundef nonnull align 8 dereferenceable(8) %19, ptr noundef nonnull align 8 dereferenceable(8) %20) #4
  br i1 %138, label %140, label %139

139:                                              ; preds = %137
  call void @llvm.lifetime.end.p0(i64 8, ptr %20) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %19) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %18) #4
  br label %167

140:                                              ; preds = %137
  call void @llvm.lifetime.start.p0(i64 8, ptr %21) #4
  %141 = call noundef nonnull align 8 dereferenceable(16) ptr @_ZNK9__gnu_cxx17__normal_iteratorIPKN8presolve19HighsPostsolveStack7NonzeroESt6vectorIS3_SaIS3_EEEdeEv(ptr noundef nonnull align 8 dereferenceable(8) %19) #4
  store ptr %141, ptr %21, align 8, !tbaa !5
  %142 = load ptr, ptr %21, align 8, !tbaa !5
  %143 = getelementptr inbounds %"struct.presolve::HighsPostsolveStack::Nonzero", ptr %142, i32 0, i32 0
  %144 = load i32, ptr %143, align 8, !tbaa !46
  %145 = sext i32 %144 to i64
  %146 = load ptr, ptr %9, align 8, !tbaa !5
  %147 = getelementptr inbounds %struct.HighsSolution, ptr %146, i32 0, i32 5
  %148 = call noundef i64 @_ZNKSt6vectorIdSaIdEE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24) %147) #4
  %149 = icmp ult i64 %145, %148
  br i1 %149, label %150, label %164

150:                                              ; preds = %140
  %151 = load ptr, ptr %21, align 8, !tbaa !5
  %152 = getelementptr inbounds %"struct.presolve::HighsPostsolveStack::Nonzero", ptr %151, i32 0, i32 1
  %153 = load double, ptr %152, align 8, !tbaa !48
  %154 = load ptr, ptr %9, align 8, !tbaa !5
  %155 = getelementptr inbounds %struct.HighsSolution, ptr %154, i32 0, i32 5
  %156 = load ptr, ptr %21, align 8, !tbaa !5
  %157 = getelementptr inbounds %"struct.presolve::HighsPostsolveStack::Nonzero", ptr %156, i32 0, i32 0
  %158 = load i32, ptr %157, align 8, !tbaa !46
  %159 = sext i32 %158 to i64
  %160 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt6vectorIdSaIdEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %155, i64 noundef %159) #4
  %161 = load double, ptr %160, align 8, !tbaa !17
  %162 = fmul double %153, %161
  %163 = call noundef nonnull align 8 dereferenceable(16) ptr @_ZN12HighsCDoublemIEd(ptr noundef nonnull align 8 dereferenceable(16) %17, double noundef %162)
  br label %164

164:                                              ; preds = %150, %140
  call void @llvm.lifetime.end.p0(i64 8, ptr %21) #4
  br label %165

165:                                              ; preds = %164
  %166 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZN9__gnu_cxx17__normal_iteratorIPKN8presolve19HighsPostsolveStack7NonzeroESt6vectorIS3_SaIS3_EEEppEv(ptr noundef nonnull align 8 dereferenceable(8) %19) #4
  br label %137

167:                                              ; preds = %139
  %168 = getelementptr inbounds %"struct.presolve::HighsPostsolveStack::DoubletonEquation", ptr %31, i32 0, i32 1
  %169 = load double, ptr %168, align 8, !tbaa !18
  %170 = call noundef nonnull align 8 dereferenceable(16) ptr @_ZN12HighsCDoubledVEd(ptr noundef nonnull align 8 dereferenceable(16) %17, double noundef %169)
  %171 = call noundef double @_ZNK12HighsCDoublecvdEv(ptr noundef nonnull align 8 dereferenceable(16) %17)
  %172 = load ptr, ptr %9, align 8, !tbaa !5
  %173 = getelementptr inbounds %struct.HighsSolution, ptr %172, i32 0, i32 5
  %174 = getelementptr inbounds %"struct.presolve::HighsPostsolveStack::DoubletonEquation", ptr %31, i32 0, i32 6
  %175 = load i32, ptr %174, align 8, !tbaa !20
  %176 = sext i32 %175 to i64
  %177 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt6vectorIdSaIdEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %173, i64 noundef %176) #4
  store double %171, ptr %177, align 8, !tbaa !17
  br label %178

178:                                              ; preds = %167, %111
  %179 = getelementptr inbounds %"struct.presolve::HighsPostsolveStack::DoubletonEquation", ptr %31, i32 0, i32 5
  %180 = load double, ptr %179, align 8, !tbaa !49
  %181 = load ptr, ptr %9, align 8, !tbaa !5
  %182 = getelementptr inbounds %struct.HighsSolution, ptr %181, i32 0, i32 3
  %183 = getelementptr inbounds %"struct.presolve::HighsPostsolveStack::DoubletonEquation", ptr %31, i32 0, i32 7
  %184 = load i32, ptr %183, align 4, !tbaa !19
  %185 = sext i32 %184 to i64
  %186 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt6vectorIdSaIdEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %182, i64 noundef %185) #4
  store double %180, ptr %186, align 8, !tbaa !17
  %187 = getelementptr inbounds %"struct.presolve::HighsPostsolveStack::DoubletonEquation", ptr %31, i32 0, i32 5
  %188 = load double, ptr %187, align 8, !tbaa !49
  %189 = getelementptr inbounds %"struct.presolve::HighsPostsolveStack::DoubletonEquation", ptr %31, i32 0, i32 0
  %190 = load double, ptr %189, align 8, !tbaa !15
  %191 = fmul double %188, %190
  %192 = getelementptr inbounds %"struct.presolve::HighsPostsolveStack::DoubletonEquation", ptr %31, i32 0, i32 1
  %193 = load double, ptr %192, align 8, !tbaa !18
  %194 = fdiv double %191, %193
  %195 = load ptr, ptr %9, align 8, !tbaa !5
  %196 = getelementptr inbounds %struct.HighsSolution, ptr %195, i32 0, i32 3
  %197 = getelementptr inbounds %"struct.presolve::HighsPostsolveStack::DoubletonEquation", ptr %31, i32 0, i32 8
  %198 = load i32, ptr %197, align 8, !tbaa !16
  %199 = sext i32 %198 to i64
  %200 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt6vectorIdSaIdEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %196, i64 noundef %199) #4
  %201 = load double, ptr %200, align 8, !tbaa !17
  %202 = fadd double %201, %194
  store double %202, ptr %200, align 8, !tbaa !17
  %203 = getelementptr inbounds %"struct.presolve::HighsPostsolveStack::DoubletonEquation", ptr %31, i32 0, i32 10
  %204 = load i8, ptr %203, align 1, !tbaa !50, !range !27, !noundef !28
  %205 = trunc i8 %204 to i1
  br i1 %205, label %206, label %209

206:                                              ; preds = %178
  %207 = load i8, ptr %15, align 1, !tbaa !43
  %208 = icmp eq i8 %207, 2
  br i1 %208, label %216, label %209

209:                                              ; preds = %206, %178
  %210 = getelementptr inbounds %"struct.presolve::HighsPostsolveStack::DoubletonEquation", ptr %31, i32 0, i32 9
  %211 = load i8, ptr %210, align 4, !tbaa !51, !range !27, !noundef !28
  %212 = trunc i8 %211 to i1
  br i1 %212, label %213, label %337

213:                                              ; preds = %209
  %214 = load i8, ptr %15, align 1, !tbaa !43
  %215 = icmp eq i8 %214, 0
  br i1 %215, label %216, label %337

216:                                              ; preds = %213, %206
  call void @llvm.lifetime.start.p0(i64 8, ptr %22) #4
  %217 = load ptr, ptr %9, align 8, !tbaa !5
  %218 = getelementptr inbounds %struct.HighsSolution, ptr %217, i32 0, i32 3
  %219 = getelementptr inbounds %"struct.presolve::HighsPostsolveStack::DoubletonEquation", ptr %31, i32 0, i32 8
  %220 = load i32, ptr %219, align 8, !tbaa !16
  %221 = sext i32 %220 to i64
  %222 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt6vectorIdSaIdEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %218, i64 noundef %221) #4
  %223 = load double, ptr %222, align 8, !tbaa !17
  %224 = getelementptr inbounds %"struct.presolve::HighsPostsolveStack::DoubletonEquation", ptr %31, i32 0, i32 0
  %225 = load double, ptr %224, align 8, !tbaa !15
  %226 = fdiv double %223, %225
  store double %226, ptr %22, align 8, !tbaa !17
  %227 = load i8, ptr %16, align 1, !tbaa !45, !range !27, !noundef !28
  %228 = trunc i8 %227 to i1
  br i1 %228, label %229, label %243

229:                                              ; preds = %216
  call void @llvm.lifetime.start.p0(i64 16, ptr %23) #4
  %230 = load double, ptr %22, align 8, !tbaa !17
  %231 = call { double, double } @_ZNK12HighsCDoubleplEd(ptr noundef nonnull align 8 dereferenceable(16) %17, double noundef %230)
  %232 = getelementptr inbounds { double, double }, ptr %23, i32 0, i32 0
  %233 = extractvalue { double, double } %231, 0
  store double %233, ptr %232, align 8
  %234 = getelementptr inbounds { double, double }, ptr %23, i32 0, i32 1
  %235 = extractvalue { double, double } %231, 1
  store double %235, ptr %234, align 8
  %236 = call noundef double @_ZNK12HighsCDoublecvdEv(ptr noundef nonnull align 8 dereferenceable(16) %23)
  %237 = load ptr, ptr %9, align 8, !tbaa !5
  %238 = getelementptr inbounds %struct.HighsSolution, ptr %237, i32 0, i32 5
  %239 = getelementptr inbounds %"struct.presolve::HighsPostsolveStack::DoubletonEquation", ptr %31, i32 0, i32 6
  %240 = load i32, ptr %239, align 8, !tbaa !20
  %241 = sext i32 %240 to i64
  %242 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt6vectorIdSaIdEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %238, i64 noundef %241) #4
  store double %236, ptr %242, align 8, !tbaa !17
  call void @llvm.lifetime.end.p0(i64 16, ptr %23) #4
  br label %243

243:                                              ; preds = %229, %216
  %244 = load ptr, ptr %9, align 8, !tbaa !5
  %245 = getelementptr inbounds %struct.HighsSolution, ptr %244, i32 0, i32 3
  %246 = getelementptr inbounds %"struct.presolve::HighsPostsolveStack::DoubletonEquation", ptr %31, i32 0, i32 8
  %247 = load i32, ptr %246, align 8, !tbaa !16
  %248 = sext i32 %247 to i64
  %249 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt6vectorIdSaIdEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %245, i64 noundef %248) #4
  store double 0.000000e+00, ptr %249, align 8, !tbaa !17
  call void @llvm.lifetime.start.p0(i64 16, ptr %24) #4
  call void @llvm.lifetime.start.p0(i64 16, ptr %25) #4
  %250 = load ptr, ptr %9, align 8, !tbaa !5
  %251 = getelementptr inbounds %struct.HighsSolution, ptr %250, i32 0, i32 3
  %252 = getelementptr inbounds %"struct.presolve::HighsPostsolveStack::DoubletonEquation", ptr %31, i32 0, i32 7
  %253 = load i32, ptr %252, align 4, !tbaa !19
  %254 = sext i32 %253 to i64
  %255 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt6vectorIdSaIdEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %251, i64 noundef %254) #4
  %256 = load double, ptr %255, align 8, !tbaa !17
  call void @_ZN12HighsCDoubleC2Ed(ptr noundef nonnull align 8 dereferenceable(16) %25, double noundef %256)
  %257 = load double, ptr %22, align 8, !tbaa !17
  %258 = getelementptr inbounds %"struct.presolve::HighsPostsolveStack::DoubletonEquation", ptr %31, i32 0, i32 1
  %259 = load double, ptr %258, align 8, !tbaa !18
  %260 = fmul double %257, %259
  %261 = call { double, double } @_ZNK12HighsCDoublemiEd(ptr noundef nonnull align 8 dereferenceable(16) %25, double noundef %260)
  %262 = getelementptr inbounds { double, double }, ptr %24, i32 0, i32 0
  %263 = extractvalue { double, double } %261, 0
  store double %263, ptr %262, align 8
  %264 = getelementptr inbounds { double, double }, ptr %24, i32 0, i32 1
  %265 = extractvalue { double, double } %261, 1
  store double %265, ptr %264, align 8
  %266 = call noundef double @_ZNK12HighsCDoublecvdEv(ptr noundef nonnull align 8 dereferenceable(16) %24)
  %267 = load ptr, ptr %9, align 8, !tbaa !5
  %268 = getelementptr inbounds %struct.HighsSolution, ptr %267, i32 0, i32 3
  %269 = getelementptr inbounds %"struct.presolve::HighsPostsolveStack::DoubletonEquation", ptr %31, i32 0, i32 7
  %270 = load i32, ptr %269, align 4, !tbaa !19
  %271 = sext i32 %270 to i64
  %272 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt6vectorIdSaIdEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %268, i64 noundef %271) #4
  store double %266, ptr %272, align 8, !tbaa !17
  call void @llvm.lifetime.end.p0(i64 16, ptr %25) #4
  call void @llvm.lifetime.end.p0(i64 16, ptr %24) #4
  %273 = load ptr, ptr %10, align 8, !tbaa !5
  %274 = getelementptr inbounds %struct.HighsBasis, ptr %273, i32 0, i32 0
  %275 = load i8, ptr %274, align 8, !tbaa !29, !range !27, !noundef !28
  %276 = trunc i8 %275 to i1
  br i1 %276, label %277, label %336

277:                                              ; preds = %243
  %278 = getelementptr inbounds %"struct.presolve::HighsPostsolveStack::DoubletonEquation", ptr %31, i32 0, i32 0
  %279 = load double, ptr %278, align 8, !tbaa !15
  %280 = call noundef zeroext i1 @_ZSt7signbitd(double noundef %279)
  %281 = zext i1 %280 to i32
  %282 = getelementptr inbounds %"struct.presolve::HighsPostsolveStack::DoubletonEquation", ptr %31, i32 0, i32 1
  %283 = load double, ptr %282, align 8, !tbaa !18
  %284 = call noundef zeroext i1 @_ZSt7signbitd(double noundef %283)
  %285 = zext i1 %284 to i32
  %286 = icmp eq i32 %281, %285
  br i1 %286, label %287, label %296

287:                                              ; preds = %277
  %288 = load ptr, ptr %10, align 8, !tbaa !5
  %289 = getelementptr inbounds %struct.HighsBasis, ptr %288, i32 0, i32 7
  %290 = getelementptr inbounds %"struct.presolve::HighsPostsolveStack::DoubletonEquation", ptr %31, i32 0, i32 8
  %291 = load i32, ptr %290, align 8, !tbaa !16
  %292 = sext i32 %291 to i64
  %293 = call noundef nonnull align 1 dereferenceable(1) ptr @_ZNSt6vectorI16HighsBasisStatusSaIS0_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %289, i64 noundef %292) #4
  %294 = load i8, ptr %293, align 1, !tbaa !43
  %295 = icmp eq i8 %294, 2
  br i1 %295, label %315, label %296

296:                                              ; preds = %287, %277
  %297 = getelementptr inbounds %"struct.presolve::HighsPostsolveStack::DoubletonEquation", ptr %31, i32 0, i32 0
  %298 = load double, ptr %297, align 8, !tbaa !15
  %299 = call noundef zeroext i1 @_ZSt7signbitd(double noundef %298)
  %300 = zext i1 %299 to i32
  %301 = getelementptr inbounds %"struct.presolve::HighsPostsolveStack::DoubletonEquation", ptr %31, i32 0, i32 1
  %302 = load double, ptr %301, align 8, !tbaa !18
  %303 = call noundef zeroext i1 @_ZSt7signbitd(double noundef %302)
  %304 = zext i1 %303 to i32
  %305 = icmp ne i32 %300, %304
  br i1 %305, label %306, label %322

306:                                              ; preds = %296
  %307 = load ptr, ptr %10, align 8, !tbaa !5
  %308 = getelementptr inbounds %struct.HighsBasis, ptr %307, i32 0, i32 7
  %309 = getelementptr inbounds %"struct.presolve::HighsPostsolveStack::DoubletonEquation", ptr %31, i32 0, i32 8
  %310 = load i32, ptr %309, align 8, !tbaa !16
  %311 = sext i32 %310 to i64
  %312 = call noundef nonnull align 1 dereferenceable(1) ptr @_ZNSt6vectorI16HighsBasisStatusSaIS0_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %308, i64 noundef %311) #4
  %313 = load i8, ptr %312, align 1, !tbaa !43
  %314 = icmp eq i8 %313, 0
  br i1 %314, label %315, label %322

315:                                              ; preds = %306, %287
  %316 = load ptr, ptr %10, align 8, !tbaa !5
  %317 = getelementptr inbounds %struct.HighsBasis, ptr %316, i32 0, i32 7
  %318 = getelementptr inbounds %"struct.presolve::HighsPostsolveStack::DoubletonEquation", ptr %31, i32 0, i32 7
  %319 = load i32, ptr %318, align 4, !tbaa !19
  %320 = sext i32 %319 to i64
  %321 = call noundef nonnull align 1 dereferenceable(1) ptr @_ZNSt6vectorI16HighsBasisStatusSaIS0_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %317, i64 noundef %320) #4
  store i8 0, ptr %321, align 1, !tbaa !43
  br label %329

322:                                              ; preds = %306, %296
  %323 = load ptr, ptr %10, align 8, !tbaa !5
  %324 = getelementptr inbounds %struct.HighsBasis, ptr %323, i32 0, i32 7
  %325 = getelementptr inbounds %"struct.presolve::HighsPostsolveStack::DoubletonEquation", ptr %31, i32 0, i32 7
  %326 = load i32, ptr %325, align 4, !tbaa !19
  %327 = sext i32 %326 to i64
  %328 = call noundef nonnull align 1 dereferenceable(1) ptr @_ZNSt6vectorI16HighsBasisStatusSaIS0_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %324, i64 noundef %327) #4
  store i8 2, ptr %328, align 1, !tbaa !43
  br label %329

329:                                              ; preds = %322, %315
  %330 = load ptr, ptr %10, align 8, !tbaa !5
  %331 = getelementptr inbounds %struct.HighsBasis, ptr %330, i32 0, i32 7
  %332 = getelementptr inbounds %"struct.presolve::HighsPostsolveStack::DoubletonEquation", ptr %31, i32 0, i32 8
  %333 = load i32, ptr %332, align 8, !tbaa !16
  %334 = sext i32 %333 to i64
  %335 = call noundef nonnull align 1 dereferenceable(1) ptr @_ZNSt6vectorI16HighsBasisStatusSaIS0_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %331, i64 noundef %334) #4
  store i8 1, ptr %335, align 1, !tbaa !43
  br label %336

336:                                              ; preds = %329, %243
  call void @llvm.lifetime.end.p0(i64 8, ptr %22) #4
  br label %406

337:                                              ; preds = %213, %209
  call void @llvm.lifetime.start.p0(i64 8, ptr %26) #4
  %338 = load ptr, ptr %9, align 8, !tbaa !5
  %339 = getelementptr inbounds %struct.HighsSolution, ptr %338, i32 0, i32 3
  %340 = getelementptr inbounds %"struct.presolve::HighsPostsolveStack::DoubletonEquation", ptr %31, i32 0, i32 7
  %341 = load i32, ptr %340, align 4, !tbaa !19
  %342 = sext i32 %341 to i64
  %343 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt6vectorIdSaIdEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %339, i64 noundef %342) #4
  %344 = load double, ptr %343, align 8, !tbaa !17
  %345 = getelementptr inbounds %"struct.presolve::HighsPostsolveStack::DoubletonEquation", ptr %31, i32 0, i32 1
  %346 = load double, ptr %345, align 8, !tbaa !18
  %347 = fdiv double %344, %346
  store double %347, ptr %26, align 8, !tbaa !17
  %348 = load i8, ptr %16, align 1, !tbaa !45, !range !27, !noundef !28
  %349 = trunc i8 %348 to i1
  br i1 %349, label %350, label %364

350:                                              ; preds = %337
  call void @llvm.lifetime.start.p0(i64 16, ptr %27) #4
  %351 = load double, ptr %26, align 8, !tbaa !17
  %352 = call { double, double } @_ZNK12HighsCDoubleplEd(ptr noundef nonnull align 8 dereferenceable(16) %17, double noundef %351)
  %353 = getelementptr inbounds { double, double }, ptr %27, i32 0, i32 0
  %354 = extractvalue { double, double } %352, 0
  store double %354, ptr %353, align 8
  %355 = getelementptr inbounds { double, double }, ptr %27, i32 0, i32 1
  %356 = extractvalue { double, double } %352, 1
  store double %356, ptr %355, align 8
  %357 = call noundef double @_ZNK12HighsCDoublecvdEv(ptr noundef nonnull align 8 dereferenceable(16) %27)
  %358 = load ptr, ptr %9, align 8, !tbaa !5
  %359 = getelementptr inbounds %struct.HighsSolution, ptr %358, i32 0, i32 5
  %360 = getelementptr inbounds %"struct.presolve::HighsPostsolveStack::DoubletonEquation", ptr %31, i32 0, i32 6
  %361 = load i32, ptr %360, align 8, !tbaa !20
  %362 = sext i32 %361 to i64
  %363 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt6vectorIdSaIdEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %359, i64 noundef %362) #4
  store double %357, ptr %363, align 8, !tbaa !17
  call void @llvm.lifetime.end.p0(i64 16, ptr %27) #4
  br label %364

364:                                              ; preds = %350, %337
  %365 = load ptr, ptr %9, align 8, !tbaa !5
  %366 = getelementptr inbounds %struct.HighsSolution, ptr %365, i32 0, i32 3
  %367 = getelementptr inbounds %"struct.presolve::HighsPostsolveStack::DoubletonEquation", ptr %31, i32 0, i32 7
  %368 = load i32, ptr %367, align 4, !tbaa !19
  %369 = sext i32 %368 to i64
  %370 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt6vectorIdSaIdEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %366, i64 noundef %369) #4
  store double 0.000000e+00, ptr %370, align 8, !tbaa !17
  call void @llvm.lifetime.start.p0(i64 16, ptr %28) #4
  call void @llvm.lifetime.start.p0(i64 16, ptr %29) #4
  %371 = load ptr, ptr %9, align 8, !tbaa !5
  %372 = getelementptr inbounds %struct.HighsSolution, ptr %371, i32 0, i32 3
  %373 = getelementptr inbounds %"struct.presolve::HighsPostsolveStack::DoubletonEquation", ptr %31, i32 0, i32 8
  %374 = load i32, ptr %373, align 8, !tbaa !16
  %375 = sext i32 %374 to i64
  %376 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt6vectorIdSaIdEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %372, i64 noundef %375) #4
  %377 = load double, ptr %376, align 8, !tbaa !17
  call void @_ZN12HighsCDoubleC2Ed(ptr noundef nonnull align 8 dereferenceable(16) %29, double noundef %377)
  %378 = load double, ptr %26, align 8, !tbaa !17
  %379 = getelementptr inbounds %"struct.presolve::HighsPostsolveStack::DoubletonEquation", ptr %31, i32 0, i32 0
  %380 = load double, ptr %379, align 8, !tbaa !15
  %381 = fmul double %378, %380
  %382 = call { double, double } @_ZNK12HighsCDoublemiEd(ptr noundef nonnull align 8 dereferenceable(16) %29, double noundef %381)
  %383 = getelementptr inbounds { double, double }, ptr %28, i32 0, i32 0
  %384 = extractvalue { double, double } %382, 0
  store double %384, ptr %383, align 8
  %385 = getelementptr inbounds { double, double }, ptr %28, i32 0, i32 1
  %386 = extractvalue { double, double } %382, 1
  store double %386, ptr %385, align 8
  %387 = call noundef double @_ZNK12HighsCDoublecvdEv(ptr noundef nonnull align 8 dereferenceable(16) %28)
  %388 = load ptr, ptr %9, align 8, !tbaa !5
  %389 = getelementptr inbounds %struct.HighsSolution, ptr %388, i32 0, i32 3
  %390 = getelementptr inbounds %"struct.presolve::HighsPostsolveStack::DoubletonEquation", ptr %31, i32 0, i32 8
  %391 = load i32, ptr %390, align 8, !tbaa !16
  %392 = sext i32 %391 to i64
  %393 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt6vectorIdSaIdEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %389, i64 noundef %392) #4
  store double %387, ptr %393, align 8, !tbaa !17
  call void @llvm.lifetime.end.p0(i64 16, ptr %29) #4
  call void @llvm.lifetime.end.p0(i64 16, ptr %28) #4
  %394 = load ptr, ptr %10, align 8, !tbaa !5
  %395 = getelementptr inbounds %struct.HighsBasis, ptr %394, i32 0, i32 0
  %396 = load i8, ptr %395, align 8, !tbaa !29, !range !27, !noundef !28
  %397 = trunc i8 %396 to i1
  br i1 %397, label %398, label %405

398:                                              ; preds = %364
  %399 = load ptr, ptr %10, align 8, !tbaa !5
  %400 = getelementptr inbounds %struct.HighsBasis, ptr %399, i32 0, i32 7
  %401 = getelementptr inbounds %"struct.presolve::HighsPostsolveStack::DoubletonEquation", ptr %31, i32 0, i32 7
  %402 = load i32, ptr %401, align 4, !tbaa !19
  %403 = sext i32 %402 to i64
  %404 = call noundef nonnull align 1 dereferenceable(1) ptr @_ZNSt6vectorI16HighsBasisStatusSaIS0_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %400, i64 noundef %403) #4
  store i8 1, ptr %404, align 1, !tbaa !43
  br label %405

405:                                              ; preds = %398, %364
  call void @llvm.lifetime.end.p0(i64 8, ptr %26) #4
  br label %406

406:                                              ; preds = %405, %336
  %407 = load ptr, ptr %10, align 8, !tbaa !5
  %408 = getelementptr inbounds %struct.HighsBasis, ptr %407, i32 0, i32 0
  %409 = load i8, ptr %408, align 8, !tbaa !29, !range !27, !noundef !28
  %410 = trunc i8 %409 to i1
  br i1 %410, label %412, label %411

411:                                              ; preds = %406
  store i32 1, ptr %30, align 4
  br label %433

412:                                              ; preds = %406
  %413 = load i8, ptr %16, align 1, !tbaa !45, !range !27, !noundef !28
  %414 = trunc i8 %413 to i1
  br i1 %414, label %415, label %432

415:                                              ; preds = %412
  %416 = load ptr, ptr %9, align 8, !tbaa !5
  %417 = getelementptr inbounds %struct.HighsSolution, ptr %416, i32 0, i32 5
  %418 = getelementptr inbounds %"struct.presolve::HighsPostsolveStack::DoubletonEquation", ptr %31, i32 0, i32 6
  %419 = load i32, ptr %418, align 8, !tbaa !20
  %420 = sext i32 %419 to i64
  %421 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt6vectorIdSaIdEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %417, i64 noundef %420) #4
  %422 = load double, ptr %421, align 8, !tbaa !17
  %423 = getelementptr inbounds %"struct.presolve::HighsPostsolveStack::DoubletonEquation", ptr %31, i32 0, i32 11
  %424 = load i32, ptr %423, align 8, !tbaa !52
  %425 = call noundef zeroext i8 @_ZN8presolveL16computeRowStatusEdNS_19HighsPostsolveStack7RowTypeE(double noundef %422, i32 noundef %424)
  %426 = load ptr, ptr %10, align 8, !tbaa !5
  %427 = getelementptr inbounds %struct.HighsBasis, ptr %426, i32 0, i32 8
  %428 = getelementptr inbounds %"struct.presolve::HighsPostsolveStack::DoubletonEquation", ptr %31, i32 0, i32 6
  %429 = load i32, ptr %428, align 8, !tbaa !20
  %430 = sext i32 %429 to i64
  %431 = call noundef nonnull align 1 dereferenceable(1) ptr @_ZNSt6vectorI16HighsBasisStatusSaIS0_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %427, i64 noundef %430) #4
  store i8 %425, ptr %431, align 1, !tbaa !43
  br label %432

432:                                              ; preds = %415, %412
  store i32 0, ptr %30, align 4
  br label %433

433:                                              ; preds = %432, %411
  call void @llvm.lifetime.end.p0(i64 16, ptr %17) #4
  call void @llvm.lifetime.end.p0(i64 1, ptr %16) #4
  call void @llvm.lifetime.end.p0(i64 1, ptr %15) #4
  %434 = load i32, ptr %30, align 4
  switch i32 %434, label %436 [
    i32 0, label %435
    i32 1, label %435
  ]

435:                                              ; preds = %433, %433, %75
  ret void

436:                                              ; preds = %433
  unreachable
}

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

; Function Attrs: mustprogress nounwind uwtable
declare hidden noundef zeroext i8 @_ZN8presolveL13computeStatusEdd(double noundef, double noundef) #1

; Function Attrs: mustprogress nounwind uwtable
declare hidden noundef zeroext i8 @_ZN8presolveL13computeStatusEdR16HighsBasisStatusd(double noundef, ptr noundef nonnull align 1 dereferenceable(1), double noundef) #1

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

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

; Function Attrs: mustprogress nounwind uwtable
declare dso_local noundef zeroext i1 @_ZSt7signbitd(double noundef) #1

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 = { 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 #4 = { nounwind }

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

!0 = !{i32 1, !"wchar_size", i32 4}
!1 = !{i32 8, !"PIC Level", i32 2}
!2 = !{i32 7, !"PIE Level", i32 2}
!3 = !{i32 7, !"uwtable", i32 2}
!4 = !{!"clang version 19.1.0 (git@github.com:llvm/llvm-project.git a4bf6cd7cfb1a1421ba92bca9d017b49936c55e4)"}
!5 = !{!6, !6, i64 0}
!6 = !{!"any pointer", !7, i64 0}
!7 = !{!"omnipotent char", !8, i64 0}
!8 = !{!"Simple C++ TBAA"}
!9 = !{!10, !11, i64 16}
!10 = !{!"_ZTSN8presolve19HighsPostsolveStack17DoubletonEquationE", !11, i64 0, !11, i64 8, !11, i64 16, !11, i64 24, !11, i64 32, !11, i64 40, !12, i64 48, !12, i64 52, !12, i64 56, !13, i64 60, !13, i64 61, !14, i64 64}
!11 = !{!"double", !7, i64 0}
!12 = !{!"int", !7, i64 0}
!13 = !{!"bool", !7, i64 0}
!14 = !{!"_ZTSN8presolve19HighsPostsolveStack7RowTypeE", !7, i64 0}
!15 = !{!10, !11, i64 0}
!16 = !{!10, !12, i64 56}
!17 = !{!11, !11, i64 0}
!18 = !{!10, !11, i64 8}
!19 = !{!10, !12, i64 52}
!20 = !{!10, !12, i64 48}
!21 = !{!22, !13, i64 1}
!22 = !{!"_ZTS13HighsSolution", !13, i64 0, !13, i64 1, !23, i64 8, !23, i64 32, !23, i64 56, !23, i64 80}
!23 = !{!"_ZTSSt6vectorIdSaIdEE", !24, i64 0}
!24 = !{!"_ZTSSt12_Vector_baseIdSaIdEE", !25, i64 0}
!25 = !{!"_ZTSNSt12_Vector_baseIdSaIdEE12_Vector_implE", !26, i64 0}
!26 = !{!"_ZTSNSt12_Vector_baseIdSaIdEE17_Vector_impl_dataE", !6, i64 0, !6, i64 8, !6, i64 16}
!27 = !{i8 0, i8 2}
!28 = !{}
!29 = !{!30, !13, i64 0}
!30 = !{!"_ZTS10HighsBasis", !13, i64 0, !13, i64 1, !13, i64 2, !13, i64 3, !12, i64 4, !12, i64 8, !31, i64 16, !34, i64 48, !34, i64 72}
!31 = !{!"_ZTSNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE", !32, i64 0, !33, i64 8, !7, i64 16}
!32 = !{!"_ZTSNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE12_Alloc_hiderE", !6, i64 0}
!33 = !{!"long", !7, i64 0}
!34 = !{!"_ZTSSt6vectorI16HighsBasisStatusSaIS0_EE", !35, i64 0}
!35 = !{!"_ZTSSt12_Vector_baseI16HighsBasisStatusSaIS0_EE", !36, i64 0}
!36 = !{!"_ZTSNSt12_Vector_baseI16HighsBasisStatusSaIS0_EE12_Vector_implE", !37, i64 0}
!37 = !{!"_ZTSNSt12_Vector_baseI16HighsBasisStatusSaIS0_EE17_Vector_impl_dataE", !6, i64 0, !6, i64 8, !6, i64 16}
!38 = !{!39, !11, i64 288}
!39 = !{!"_ZTS18HighsOptionsStruct", !31, i64 8, !31, i64 40, !31, i64 72, !31, i64 104, !11, i64 136, !31, i64 144, !31, i64 176, !12, i64 208, !31, 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, !12, i64 336, !12, i64 340, !12, i64 344, !12, i64 348, !12, i64 352, !12, i64 356, !12, i64 360, !12, i64 364, !12, i64 368, !12, i64 372, !12, i64 376, !12, i64 380, !12, i64 384, !12, i64 388, !31, i64 392, !13, i64 424, !13, i64 425, !13, i64 426, !12, i64 428, !12, i64 432, !31, i64 440, !13, i64 472, !13, i64 473, !13, i64 474, !12, i64 476, !13, i64 480, !13, i64 481, !12, i64 484, !12, i64 488, !11, i64 496, !12, i64 504, !12, i64 508, !12, i64 512, !13, i64 516, !12, i64 520, !13, i64 524, !13, i64 525, !13, i64 526, !13, i64 527, !13, i64 528, !13, i64 529, !13, i64 530, !12, i64 532, !12, i64 536, !12, i64 540, !12, i64 544, !12, i64 548, !12, i64 552, !12, i64 556, !12, i64 560, !12, i64 564, !12, i64 568, !12, i64 572, !12, i64 576, !12, i64 580, !12, i64 584, !12, i64 588, !13, i64 592, !13, i64 593, !13, i64 594, !13, 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, !13, i64 688, !13, i64 689, !13, i64 690, !13, i64 691, !12, i64 692, !11, i64 696, !13, i64 704, !13, i64 705, !31, i64 712, !11, i64 744, !12, i64 752, !12, i64 756, !13, i64 760, !13, i64 761, !13, i64 762, !13, i64 763, !12, i64 764, !12, i64 768, !12, i64 772, !12, i64 776, !12, i64 780, !12, i64 784, !12, i64 788, !12, i64 792, !12, i64 796, !12, i64 800, !12, i64 804, !11, i64 808, !11, i64 816, !11, i64 824, !11, i64 832, !11, i64 840, !13, i64 848, !13, i64 849, !31, i64 856, !13, i64 888, !12, i64 892, !40, i64 896}
!40 = !{!"_ZTS15HighsLogOptions", !6, i64 0, !6, i64 8, !6, i64 16, !6, i64 24, !6, i64 32, !6, i64 40, !41, i64 48, !6, i64 80, !13, i64 88}
!41 = !{!"_ZTSSt8functionIFviRKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEPK20HighsCallbackDataOutP19HighsCallbackDataInPvEE", !42, i64 0, !6, i64 24}
!42 = !{!"_ZTSSt14_Function_base", !7, i64 0, !6, i64 16}
!43 = !{!44, !44, i64 0}
!44 = !{!"_ZTS16HighsBasisStatus", !7, i64 0}
!45 = !{!13, !13, i64 0}
!46 = !{!47, !12, i64 0}
!47 = !{!"_ZTSN8presolve19HighsPostsolveStack7NonzeroE", !12, i64 0, !11, i64 8}
!48 = !{!47, !11, i64 8}
!49 = !{!10, !11, i64 40}
!50 = !{!10, !13, i64 61}
!51 = !{!10, !13, i64 60}
!52 = !{!10, !14, i64 64}


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

%class.HighsCDouble = type { double, double }
%"class.__gnu_cxx::__normal_iterator.25" = type { ptr }

; 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 i64 @_ZNKSt6vectorIdSaIdEE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24)) local_unnamed_addr #1 align 2

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

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

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

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

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

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

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

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

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

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

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

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

; Function Attrs: mustprogress nounwind uwtable
declare hidden noundef zeroext i8 @_ZN8presolveL16computeRowStatusEdNS_19HighsPostsolveStack7RowTypeE(double noundef, i32 noundef) local_unnamed_addr #1

; Function Attrs: mustprogress uwtable
define dso_local void @_ZNK8presolve19HighsPostsolveStack17DoubletonEquation4undoERK12HighsOptionsRKSt6vectorINS0_7NonzeroESaIS6_EER13HighsSolutionR10HighsBasis(ptr nocapture noundef nonnull readonly align 8 dereferenceable(72) %0, ptr nocapture noundef nonnull readonly align 8 dereferenceable(1020) %1, ptr noundef nonnull align 8 dereferenceable(24) %2, ptr noundef nonnull align 8 dereferenceable(104) %3, ptr noundef nonnull align 8 dereferenceable(96) %4) local_unnamed_addr #3 align 2 {
  %6 = alloca %class.HighsCDouble, align 8
  %7 = alloca %class.HighsCDouble, align 8
  %8 = alloca %class.HighsCDouble, align 8
  %9 = alloca %class.HighsCDouble, align 8
  %10 = alloca %class.HighsCDouble, align 8
  %11 = alloca %"class.__gnu_cxx::__normal_iterator.25", align 8
  %12 = alloca %"class.__gnu_cxx::__normal_iterator.25", align 8
  %13 = alloca %class.HighsCDouble, align 8
  %14 = alloca %class.HighsCDouble, align 8
  %15 = alloca %class.HighsCDouble, align 8
  %16 = alloca %class.HighsCDouble, align 8
  %17 = alloca %class.HighsCDouble, align 8
  %18 = alloca %class.HighsCDouble, align 8
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %6) #4
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %7) #4
  %19 = getelementptr inbounds i8, ptr %0, i64 16
  %20 = load double, ptr %19, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %8) #4
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %9) #4
  %21 = load double, ptr %0, align 8, !tbaa !13
  call void @_ZN12HighsCDoubleC2Ed(ptr noundef nonnull align 8 dereferenceable(16) %9, double noundef %21)
  %22 = getelementptr inbounds i8, ptr %3, i64 8
  %23 = getelementptr inbounds i8, ptr %0, i64 56
  %24 = load i32, ptr %23, align 8, !tbaa !14
  %25 = sext i32 %24 to i64
  %26 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt6vectorIdSaIdEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %22, i64 noundef %25) #4
  %27 = load double, ptr %26, align 8, !tbaa !15
  %28 = call { double, double } @_ZNK12HighsCDoublemlEd(ptr noundef nonnull align 8 dereferenceable(16) %9, double noundef %27)
  %29 = extractvalue { double, double } %28, 0
  store double %29, ptr %8, align 8
  %30 = getelementptr inbounds i8, ptr %8, i64 8
  %31 = extractvalue { double, double } %28, 1
  store double %31, ptr %30, align 8
  %32 = call { double, double } @_ZmidRK12HighsCDouble(double noundef %20, ptr noundef nonnull align 8 dereferenceable(16) %8)
  %33 = extractvalue { double, double } %32, 0
  store double %33, ptr %7, align 8
  %34 = getelementptr inbounds i8, ptr %7, i64 8
  %35 = extractvalue { double, double } %32, 1
  store double %35, ptr %34, align 8
  %36 = getelementptr inbounds i8, ptr %0, i64 8
  %37 = load double, ptr %36, align 8, !tbaa !16
  %38 = call { double, double } @_ZNK12HighsCDoubledvEd(ptr noundef nonnull align 8 dereferenceable(16) %7, double noundef %37)
  %39 = extractvalue { double, double } %38, 0
  store double %39, ptr %6, align 8
  %40 = getelementptr inbounds i8, ptr %6, i64 8
  %41 = extractvalue { double, double } %38, 1
  store double %41, ptr %40, align 8
  %42 = call noundef double @_ZNK12HighsCDoublecvdEv(ptr noundef nonnull align 8 dereferenceable(16) %6)
  %43 = getelementptr inbounds i8, ptr %0, i64 52
  %44 = load i32, ptr %43, align 4, !tbaa !17
  %45 = sext i32 %44 to i64
  %46 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt6vectorIdSaIdEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %22, i64 noundef %45) #4
  store double %42, ptr %46, align 8, !tbaa !15
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %9) #4
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %8) #4
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %7) #4
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %6) #4
  %47 = getelementptr inbounds i8, ptr %0, i64 48
  %48 = load i32, ptr %47, align 8, !tbaa !18
  %49 = icmp eq i32 %48, -1
  br i1 %49, label %263, label %50

50:                                               ; preds = %5
  %51 = getelementptr inbounds i8, ptr %3, i64 1
  %52 = load i8, ptr %51, align 1, !tbaa !19, !range !26, !noundef !27
  %53 = trunc nuw i8 %52 to i1
  br i1 %53, label %54, label %263

54:                                               ; preds = %50
  %55 = load i8, ptr %4, align 8, !tbaa !28, !range !26, !noundef !27
  %56 = trunc nuw i8 %55 to i1
  %57 = getelementptr inbounds i8, ptr %3, i64 32
  %58 = load i32, ptr %23, align 8, !tbaa !14
  %59 = sext i32 %58 to i64
  %60 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt6vectorIdSaIdEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %57, i64 noundef %59) #4
  %61 = load double, ptr %60, align 8, !tbaa !15
  br i1 %56, label %66, label %62

62:                                               ; preds = %54
  %63 = getelementptr inbounds i8, ptr %1, i64 288
  %64 = load double, ptr %63, align 8, !tbaa !37
  %65 = call noundef zeroext i8 @_ZN8presolveL13computeStatusEdd(double noundef %61, double noundef %64)
  br label %74

66:                                               ; preds = %54
  %67 = getelementptr inbounds i8, ptr %4, i64 48
  %68 = load i32, ptr %23, align 8, !tbaa !14
  %69 = sext i32 %68 to i64
  %70 = call noundef nonnull align 1 dereferenceable(1) ptr @_ZNSt6vectorI16HighsBasisStatusSaIS0_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %67, i64 noundef %69) #4
  %71 = getelementptr inbounds i8, ptr %1, i64 288
  %72 = load double, ptr %71, align 8, !tbaa !37
  %73 = call noundef zeroext i8 @_ZN8presolveL13computeStatusEdR16HighsBasisStatusd(double noundef %61, ptr noundef nonnull align 1 dereferenceable(1) %70, double noundef %72)
  br label %74

74:                                               ; preds = %66, %62
  %75 = phi i8 [ %65, %62 ], [ %73, %66 ]
  %76 = load i32, ptr %47, align 8, !tbaa !18
  %77 = sext i32 %76 to i64
  %78 = getelementptr inbounds i8, ptr %3, i64 56
  %79 = call noundef i64 @_ZNKSt6vectorIdSaIdEE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24) %78) #4
  %80 = icmp ugt i64 %79, %77
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %10) #4
  call void @_ZN12HighsCDoubleC2Ed(ptr noundef nonnull align 8 dereferenceable(16) %10, double noundef 0.000000e+00)
  br i1 %80, label %81, label %112

81:                                               ; preds = %74
  %82 = getelementptr inbounds i8, ptr %3, i64 80
  %83 = load i32, ptr %47, align 8, !tbaa !18
  %84 = sext i32 %83 to i64
  %85 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt6vectorIdSaIdEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %82, i64 noundef %84) #4
  store double 0.000000e+00, ptr %85, align 8, !tbaa !15
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %11) #4
  %86 = call ptr @_ZNKSt6vectorIN8presolve19HighsPostsolveStack7NonzeroESaIS2_EE5beginEv(ptr noundef nonnull align 8 dereferenceable(24) %2) #4
  store ptr %86, ptr %11, align 8
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %12) #4
  %87 = call ptr @_ZNKSt6vectorIN8presolve19HighsPostsolveStack7NonzeroESaIS2_EE3endEv(ptr noundef nonnull align 8 dereferenceable(24) %2) #4
  store ptr %87, ptr %12, align 8
  %88 = call noundef zeroext i1 @_ZN9__gnu_cxxneIPKN8presolve19HighsPostsolveStack7NonzeroESt6vectorIS3_SaIS3_EEEEbRKNS_17__normal_iteratorIT_T0_EESE_(ptr noundef nonnull align 8 dereferenceable(8) %11, ptr noundef nonnull align 8 dereferenceable(8) %12) #4
  br i1 %88, label %.lr.ph, label %._crit_edge

._crit_edge:                                      ; preds = %109, %81
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %12) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %11) #4
  %89 = load double, ptr %36, align 8, !tbaa !16
  %90 = call noundef nonnull align 8 dereferenceable(16) ptr @_ZN12HighsCDoubledVEd(ptr noundef nonnull align 8 dereferenceable(16) %10, double noundef %89)
  %91 = call noundef double @_ZNK12HighsCDoublecvdEv(ptr noundef nonnull align 8 dereferenceable(16) %10)
  %92 = load i32, ptr %47, align 8, !tbaa !18
  %93 = sext i32 %92 to i64
  %94 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt6vectorIdSaIdEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %82, i64 noundef %93) #4
  store double %91, ptr %94, align 8, !tbaa !15
  br label %112

.lr.ph:                                           ; preds = %81, %109
  %95 = call noundef nonnull align 8 dereferenceable(16) ptr @_ZNK9__gnu_cxx17__normal_iteratorIPKN8presolve19HighsPostsolveStack7NonzeroESt6vectorIS3_SaIS3_EEEdeEv(ptr noundef nonnull align 8 dereferenceable(8) %11) #4
  %96 = load i32, ptr %95, align 8, !tbaa !42
  %97 = sext i32 %96 to i64
  %98 = call noundef i64 @_ZNKSt6vectorIdSaIdEE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24) %82) #4
  %99 = icmp ugt i64 %98, %97
  br i1 %99, label %100, label %109

100:                                              ; preds = %.lr.ph
  %101 = getelementptr inbounds i8, ptr %95, i64 8
  %102 = load double, ptr %101, align 8, !tbaa !44
  %103 = load i32, ptr %95, align 8, !tbaa !42
  %104 = sext i32 %103 to i64
  %105 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt6vectorIdSaIdEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %82, i64 noundef %104) #4
  %106 = load double, ptr %105, align 8, !tbaa !15
  %107 = fmul double %102, %106
  %108 = call noundef nonnull align 8 dereferenceable(16) ptr @_ZN12HighsCDoublemIEd(ptr noundef nonnull align 8 dereferenceable(16) %10, double noundef %107)
  br label %109

109:                                              ; preds = %100, %.lr.ph
  %110 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZN9__gnu_cxx17__normal_iteratorIPKN8presolve19HighsPostsolveStack7NonzeroESt6vectorIS3_SaIS3_EEEppEv(ptr noundef nonnull align 8 dereferenceable(8) %11) #4
  %111 = call noundef zeroext i1 @_ZN9__gnu_cxxneIPKN8presolve19HighsPostsolveStack7NonzeroESt6vectorIS3_SaIS3_EEEEbRKNS_17__normal_iteratorIT_T0_EESE_(ptr noundef nonnull align 8 dereferenceable(8) %11, ptr noundef nonnull align 8 dereferenceable(8) %12) #4
  br i1 %111, label %.lr.ph, label %._crit_edge

112:                                              ; preds = %._crit_edge, %74
  %113 = getelementptr inbounds i8, ptr %0, i64 40
  %114 = load double, ptr %113, align 8, !tbaa !45
  %115 = getelementptr inbounds i8, ptr %3, i64 32
  %116 = load i32, ptr %43, align 4, !tbaa !17
  %117 = sext i32 %116 to i64
  %118 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt6vectorIdSaIdEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %115, i64 noundef %117) #4
  store double %114, ptr %118, align 8, !tbaa !15
  %119 = load double, ptr %113, align 8, !tbaa !45
  %120 = load double, ptr %0, align 8, !tbaa !13
  %121 = fmul double %119, %120
  %122 = load double, ptr %36, align 8, !tbaa !16
  %123 = fdiv double %121, %122
  %124 = load i32, ptr %23, align 8, !tbaa !14
  %125 = sext i32 %124 to i64
  %126 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt6vectorIdSaIdEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %115, i64 noundef %125) #4
  %127 = load double, ptr %126, align 8, !tbaa !15
  %128 = fadd double %123, %127
  store double %128, ptr %126, align 8, !tbaa !15
  %129 = getelementptr inbounds i8, ptr %0, i64 61
  %130 = load i8, ptr %129, align 1, !tbaa !46, !range !26, !noundef !27
  %131 = trunc nuw i8 %130 to i1
  %132 = icmp eq i8 %75, 2
  %or.cond = and i1 %132, %131
  br i1 %or.cond, label %138, label %133

133:                                              ; preds = %112
  %134 = getelementptr inbounds i8, ptr %0, i64 60
  %135 = load i8, ptr %134, align 4, !tbaa !47, !range !26, !noundef !27
  %136 = trunc nuw i8 %135 to i1
  %137 = icmp eq i8 %75, 0
  %or.cond3 = and i1 %137, %136
  br i1 %or.cond3, label %138, label %207

138:                                              ; preds = %133, %112
  %139 = load i32, ptr %23, align 8, !tbaa !14
  %140 = sext i32 %139 to i64
  %141 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt6vectorIdSaIdEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %115, i64 noundef %140) #4
  %142 = load double, ptr %141, align 8, !tbaa !15
  %143 = load double, ptr %0, align 8, !tbaa !13
  %144 = fdiv double %142, %143
  br i1 %80, label %145, label %155

145:                                              ; preds = %138
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %13) #4
  %146 = call { double, double } @_ZNK12HighsCDoubleplEd(ptr noundef nonnull align 8 dereferenceable(16) %10, double noundef %144)
  %147 = extractvalue { double, double } %146, 0
  store double %147, ptr %13, align 8
  %148 = getelementptr inbounds i8, ptr %13, i64 8
  %149 = extractvalue { double, double } %146, 1
  store double %149, ptr %148, align 8
  %150 = call noundef double @_ZNK12HighsCDoublecvdEv(ptr noundef nonnull align 8 dereferenceable(16) %13)
  %151 = getelementptr inbounds i8, ptr %3, i64 80
  %152 = load i32, ptr %47, align 8, !tbaa !18
  %153 = sext i32 %152 to i64
  %154 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt6vectorIdSaIdEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %151, i64 noundef %153) #4
  store double %150, ptr %154, align 8, !tbaa !15
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %13) #4
  br label %155

155:                                              ; preds = %145, %138
  %156 = load i32, ptr %23, align 8, !tbaa !14
  %157 = sext i32 %156 to i64
  %158 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt6vectorIdSaIdEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %115, i64 noundef %157) #4
  store double 0.000000e+00, ptr %158, align 8, !tbaa !15
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %14) #4
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %15) #4
  %159 = load i32, ptr %43, align 4, !tbaa !17
  %160 = sext i32 %159 to i64
  %161 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt6vectorIdSaIdEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %115, i64 noundef %160) #4
  %162 = load double, ptr %161, align 8, !tbaa !15
  call void @_ZN12HighsCDoubleC2Ed(ptr noundef nonnull align 8 dereferenceable(16) %15, double noundef %162)
  %163 = load double, ptr %36, align 8, !tbaa !16
  %164 = fmul double %144, %163
  %165 = call { double, double } @_ZNK12HighsCDoublemiEd(ptr noundef nonnull align 8 dereferenceable(16) %15, double noundef %164)
  %166 = extractvalue { double, double } %165, 0
  store double %166, ptr %14, align 8
  %167 = getelementptr inbounds i8, ptr %14, i64 8
  %168 = extractvalue { double, double } %165, 1
  store double %168, ptr %167, align 8
  %169 = call noundef double @_ZNK12HighsCDoublecvdEv(ptr noundef nonnull align 8 dereferenceable(16) %14)
  %170 = load i32, ptr %43, align 4, !tbaa !17
  %171 = sext i32 %170 to i64
  %172 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt6vectorIdSaIdEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %115, i64 noundef %171) #4
  store double %169, ptr %172, align 8, !tbaa !15
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %15) #4
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %14) #4
  %173 = load i8, ptr %4, align 8, !tbaa !28, !range !26, !noundef !27
  %174 = trunc nuw i8 %173 to i1
  br i1 %174, label %175, label %246

175:                                              ; preds = %155
  %176 = load double, ptr %0, align 8, !tbaa !13
  %177 = call noundef zeroext i1 @_ZSt7signbitd(double noundef %176)
  %178 = load double, ptr %36, align 8, !tbaa !16
  %179 = call noundef zeroext i1 @_ZSt7signbitd(double noundef %178)
  %180 = xor i1 %177, %179
  br i1 %180, label %188, label %181

181:                                              ; preds = %175
  %182 = getelementptr inbounds i8, ptr %4, i64 48
  %183 = load i32, ptr %23, align 8, !tbaa !14
  %184 = sext i32 %183 to i64
  %185 = call noundef nonnull align 1 dereferenceable(1) ptr @_ZNSt6vectorI16HighsBasisStatusSaIS0_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %182, i64 noundef %184) #4
  %186 = load i8, ptr %185, align 1, !tbaa !48
  %187 = icmp eq i8 %186, 2
  br i1 %187, label %202, label %188

188:                                              ; preds = %181, %175
  %189 = load double, ptr %0, align 8, !tbaa !13
  %190 = call noundef zeroext i1 @_ZSt7signbitd(double noundef %189)
  %191 = load double, ptr %36, align 8, !tbaa !16
  %192 = call noundef zeroext i1 @_ZSt7signbitd(double noundef %191)
  %193 = xor i1 %190, %192
  br i1 %193, label %194, label %201

194:                                              ; preds = %188
  %195 = getelementptr inbounds i8, ptr %4, i64 48
  %196 = load i32, ptr %23, align 8, !tbaa !14
  %197 = sext i32 %196 to i64
  %198 = call noundef nonnull align 1 dereferenceable(1) ptr @_ZNSt6vectorI16HighsBasisStatusSaIS0_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %195, i64 noundef %197) #4
  %199 = load i8, ptr %198, align 1, !tbaa !48
  %200 = icmp eq i8 %199, 0
  br i1 %200, label %202, label %201

201:                                              ; preds = %194, %188
  br label %202

202:                                              ; preds = %181, %194, %201
  %.sink = phi i8 [ 2, %201 ], [ 0, %194 ], [ 0, %181 ]
  %203 = getelementptr inbounds i8, ptr %4, i64 48
  %204 = load i32, ptr %43, align 4, !tbaa !17
  %205 = sext i32 %204 to i64
  %206 = call noundef nonnull align 1 dereferenceable(1) ptr @_ZNSt6vectorI16HighsBasisStatusSaIS0_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %203, i64 noundef %205) #4
  store i8 %.sink, ptr %206, align 1, !tbaa !48
  br label %.sink.split

207:                                              ; preds = %133
  %208 = load i32, ptr %43, align 4, !tbaa !17
  %209 = sext i32 %208 to i64
  %210 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt6vectorIdSaIdEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %115, i64 noundef %209) #4
  %211 = load double, ptr %210, align 8, !tbaa !15
  %212 = load double, ptr %36, align 8, !tbaa !16
  %213 = fdiv double %211, %212
  br i1 %80, label %214, label %224

214:                                              ; preds = %207
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %16) #4
  %215 = call { double, double } @_ZNK12HighsCDoubleplEd(ptr noundef nonnull align 8 dereferenceable(16) %10, double noundef %213)
  %216 = extractvalue { double, double } %215, 0
  store double %216, ptr %16, align 8
  %217 = getelementptr inbounds i8, ptr %16, i64 8
  %218 = extractvalue { double, double } %215, 1
  store double %218, ptr %217, align 8
  %219 = call noundef double @_ZNK12HighsCDoublecvdEv(ptr noundef nonnull align 8 dereferenceable(16) %16)
  %220 = getelementptr inbounds i8, ptr %3, i64 80
  %221 = load i32, ptr %47, align 8, !tbaa !18
  %222 = sext i32 %221 to i64
  %223 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt6vectorIdSaIdEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %220, i64 noundef %222) #4
  store double %219, ptr %223, align 8, !tbaa !15
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %16) #4
  br label %224

224:                                              ; preds = %214, %207
  %225 = load i32, ptr %43, align 4, !tbaa !17
  %226 = sext i32 %225 to i64
  %227 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt6vectorIdSaIdEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %115, i64 noundef %226) #4
  store double 0.000000e+00, ptr %227, align 8, !tbaa !15
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %17) #4
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %18) #4
  %228 = load i32, ptr %23, align 8, !tbaa !14
  %229 = sext i32 %228 to i64
  %230 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt6vectorIdSaIdEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %115, i64 noundef %229) #4
  %231 = load double, ptr %230, align 8, !tbaa !15
  call void @_ZN12HighsCDoubleC2Ed(ptr noundef nonnull align 8 dereferenceable(16) %18, double noundef %231)
  %232 = load double, ptr %0, align 8, !tbaa !13
  %233 = fmul double %213, %232
  %234 = call { double, double } @_ZNK12HighsCDoublemiEd(ptr noundef nonnull align 8 dereferenceable(16) %18, double noundef %233)
  %235 = extractvalue { double, double } %234, 0
  store double %235, ptr %17, align 8
  %236 = getelementptr inbounds i8, ptr %17, i64 8
  %237 = extractvalue { double, double } %234, 1
  store double %237, ptr %236, align 8
  %238 = call noundef double @_ZNK12HighsCDoublecvdEv(ptr noundef nonnull align 8 dereferenceable(16) %17)
  %239 = load i32, ptr %23, align 8, !tbaa !14
  %240 = sext i32 %239 to i64
  %241 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt6vectorIdSaIdEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %115, i64 noundef %240) #4
  store double %238, ptr %241, align 8, !tbaa !15
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %18) #4
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %17) #4
  %242 = load i8, ptr %4, align 8, !tbaa !28, !range !26, !noundef !27
  %243 = trunc nuw i8 %242 to i1
  br i1 %243, label %.sink.split, label %246

.sink.split:                                      ; preds = %224, %202
  %.sink65.in = phi ptr [ %23, %202 ], [ %43, %224 ]
  %.sink63 = getelementptr inbounds i8, ptr %4, i64 48
  %.sink65 = load i32, ptr %.sink65.in, align 4, !tbaa !50
  %244 = sext i32 %.sink65 to i64
  %245 = call noundef nonnull align 1 dereferenceable(1) ptr @_ZNSt6vectorI16HighsBasisStatusSaIS0_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %.sink63, i64 noundef %244) #4
  store i8 1, ptr %245, align 1, !tbaa !48
  br label %246

246:                                              ; preds = %.sink.split, %224, %155
  %247 = load i8, ptr %4, align 8, !tbaa !28, !range !26, !noundef !27
  %248 = trunc nuw i8 %247 to i1
  %brmerge.not = select i1 %248, i1 %80, i1 false
  br i1 %brmerge.not, label %249, label %262

249:                                              ; preds = %246
  %250 = getelementptr inbounds i8, ptr %3, i64 80
  %251 = load i32, ptr %47, align 8, !tbaa !18
  %252 = sext i32 %251 to i64
  %253 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt6vectorIdSaIdEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %250, i64 noundef %252) #4
  %254 = load double, ptr %253, align 8, !tbaa !15
  %255 = getelementptr inbounds i8, ptr %0, i64 64
  %256 = load i32, ptr %255, align 8, !tbaa !51
  %257 = call noundef zeroext i8 @_ZN8presolveL16computeRowStatusEdNS_19HighsPostsolveStack7RowTypeE(double noundef %254, i32 noundef %256)
  %258 = getelementptr inbounds i8, ptr %4, i64 72
  %259 = load i32, ptr %47, align 8, !tbaa !18
  %260 = sext i32 %259 to i64
  %261 = call noundef nonnull align 1 dereferenceable(1) ptr @_ZNSt6vectorI16HighsBasisStatusSaIS0_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %258, i64 noundef %260) #4
  store i8 %257, ptr %261, align 1, !tbaa !48
  br label %262

262:                                              ; preds = %246, %249
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %10) #4
  br label %263

263:                                              ; preds = %5, %50, %262
  ret void
}

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

; Function Attrs: mustprogress nounwind uwtable
declare hidden noundef zeroext i8 @_ZN8presolveL13computeStatusEdd(double noundef, double noundef) local_unnamed_addr #1

; Function Attrs: mustprogress nounwind uwtable
declare hidden noundef zeroext i8 @_ZN8presolveL13computeStatusEdR16HighsBasisStatusd(double noundef, ptr noundef nonnull align 1 dereferenceable(1), double noundef) local_unnamed_addr #1

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

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

; Function Attrs: mustprogress nounwind uwtable
declare dso_local noundef zeroext i1 @_ZSt7signbitd(double noundef) local_unnamed_addr #1

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 = { 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 #4 = { nounwind }

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

!0 = !{i32 1, !"wchar_size", i32 4}
!1 = !{i32 8, !"PIC Level", i32 2}
!2 = !{i32 7, !"PIE Level", i32 2}
!3 = !{i32 7, !"uwtable", i32 2}
!4 = !{!"clang version 19.1.0 (git@github.com:llvm/llvm-project.git a4bf6cd7cfb1a1421ba92bca9d017b49936c55e4)"}
!5 = !{!6, !7, i64 16}
!6 = !{!"_ZTSN8presolve19HighsPostsolveStack17DoubletonEquationE", !7, i64 0, !7, i64 8, !7, i64 16, !7, i64 24, !7, i64 32, !7, i64 40, !10, i64 48, !10, i64 52, !10, i64 56, !11, i64 60, !11, i64 61, !12, i64 64}
!7 = !{!"double", !8, i64 0}
!8 = !{!"omnipotent char", !9, i64 0}
!9 = !{!"Simple C++ TBAA"}
!10 = !{!"int", !8, i64 0}
!11 = !{!"bool", !8, i64 0}
!12 = !{!"_ZTSN8presolve19HighsPostsolveStack7RowTypeE", !8, i64 0}
!13 = !{!6, !7, i64 0}
!14 = !{!6, !10, i64 56}
!15 = !{!7, !7, i64 0}
!16 = !{!6, !7, i64 8}
!17 = !{!6, !10, i64 52}
!18 = !{!6, !10, i64 48}
!19 = !{!20, !11, i64 1}
!20 = !{!"_ZTS13HighsSolution", !11, i64 0, !11, i64 1, !21, i64 8, !21, i64 32, !21, i64 56, !21, i64 80}
!21 = !{!"_ZTSSt6vectorIdSaIdEE", !22, i64 0}
!22 = !{!"_ZTSSt12_Vector_baseIdSaIdEE", !23, i64 0}
!23 = !{!"_ZTSNSt12_Vector_baseIdSaIdEE12_Vector_implE", !24, i64 0}
!24 = !{!"_ZTSNSt12_Vector_baseIdSaIdEE17_Vector_impl_dataE", !25, i64 0, !25, i64 8, !25, i64 16}
!25 = !{!"any pointer", !8, i64 0}
!26 = !{i8 0, i8 2}
!27 = !{}
!28 = !{!29, !11, i64 0}
!29 = !{!"_ZTS10HighsBasis", !11, i64 0, !11, i64 1, !11, i64 2, !11, i64 3, !10, i64 4, !10, i64 8, !30, i64 16, !33, i64 48, !33, i64 72}
!30 = !{!"_ZTSNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE", !31, i64 0, !32, i64 8, !8, i64 16}
!31 = !{!"_ZTSNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE12_Alloc_hiderE", !25, i64 0}
!32 = !{!"long", !8, i64 0}
!33 = !{!"_ZTSSt6vectorI16HighsBasisStatusSaIS0_EE", !34, i64 0}
!34 = !{!"_ZTSSt12_Vector_baseI16HighsBasisStatusSaIS0_EE", !35, i64 0}
!35 = !{!"_ZTSNSt12_Vector_baseI16HighsBasisStatusSaIS0_EE12_Vector_implE", !36, i64 0}
!36 = !{!"_ZTSNSt12_Vector_baseI16HighsBasisStatusSaIS0_EE17_Vector_impl_dataE", !25, i64 0, !25, i64 8, !25, i64 16}
!37 = !{!38, !7, i64 288}
!38 = !{!"_ZTS18HighsOptionsStruct", !30, i64 8, !30, i64 40, !30, i64 72, !30, i64 104, !7, i64 136, !30, i64 144, !30, i64 176, !10, i64 208, !30, i64 216, !7, i64 248, !7, i64 256, !7, i64 264, !7, i64 272, !7, i64 280, !7, i64 288, !7, i64 296, !7, i64 304, !7, i64 312, !7, i64 320, !7, 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, !30, i64 392, !11, i64 424, !11, i64 425, !11, i64 426, !10, i64 428, !10, i64 432, !30, i64 440, !11, i64 472, !11, i64 473, !11, i64 474, !10, i64 476, !11, i64 480, !11, i64 481, !10, i64 484, !10, i64 488, !7, i64 496, !10, i64 504, !10, i64 508, !10, i64 512, !11, i64 516, !10, i64 520, !11, i64 524, !11, i64 525, !11, i64 526, !11, i64 527, !11, i64 528, !11, i64 529, !11, 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, !11, i64 592, !11, i64 593, !11, i64 594, !11, i64 595, !7, i64 600, !7, i64 608, !7, i64 616, !7, i64 624, !7, i64 632, !7, i64 640, !7, i64 648, !7, i64 656, !7, i64 664, !7, i64 672, !7, i64 680, !11, i64 688, !11, i64 689, !11, i64 690, !11, i64 691, !10, i64 692, !7, i64 696, !11, i64 704, !11, i64 705, !30, i64 712, !7, i64 744, !10, i64 752, !10, i64 756, !11, i64 760, !11, i64 761, !11, i64 762, !11, 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, !7, i64 808, !7, i64 816, !7, i64 824, !7, i64 832, !7, i64 840, !11, i64 848, !11, i64 849, !30, i64 856, !11, i64 888, !10, i64 892, !39, i64 896}
!39 = !{!"_ZTS15HighsLogOptions", !25, i64 0, !25, i64 8, !25, i64 16, !25, i64 24, !25, i64 32, !25, i64 40, !40, i64 48, !25, i64 80, !11, i64 88}
!40 = !{!"_ZTSSt8functionIFviRKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEPK20HighsCallbackDataOutP19HighsCallbackDataInPvEE", !41, i64 0, !25, i64 24}
!41 = !{!"_ZTSSt14_Function_base", !8, i64 0, !25, i64 16}
!42 = !{!43, !10, i64 0}
!43 = !{!"_ZTSN8presolve19HighsPostsolveStack7NonzeroE", !10, i64 0, !7, i64 8}
!44 = !{!43, !7, i64 8}
!45 = !{!6, !7, i64 40}
!46 = !{!6, !11, i64 61}
!47 = !{!6, !11, i64 60}
!48 = !{!49, !49, i64 0}
!49 = !{!"_ZTS16HighsBasisStatus", !8, i64 0}
!50 = !{!10, !10, i64 0}
!51 = !{!6, !12, i64 64}


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