; 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.anon.39 = type { ptr }
%class.anon.40 = type { ptr }
%class.HighsCDouble = type { double, double }
%struct.HighsOptionsStruct = type { ptr, %"class.std::__cxx11::basic_string", %"class.std::__cxx11::basic_string", %"class.std::__cxx11::basic_string", %"class.std::__cxx11::basic_string", double, %"class.std::__cxx11::basic_string", %"class.std::__cxx11::basic_string", i32, %"class.std::__cxx11::basic_string", double, double, double, double, double, double, double, double, double, double, double, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, %"class.std::__cxx11::basic_string", i8, i8, i8, i32, i32, %"class.std::__cxx11::basic_string", i8, i8, i8, i32, i8, i8, i32, i32, double, i32, i32, i32, i8, i32, i8, i8, i8, i8, i8, i8, i8, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i8, i8, i8, i8, double, double, double, double, double, double, double, double, double, double, double, i8, i8, i8, i8, i32, double, i8, i8, %"class.std::__cxx11::basic_string", double, i32, i32, i8, i8, i8, i8, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, double, double, double, double, double, i8, i8, %"class.std::__cxx11::basic_string", i8, i32, %struct.HighsLogOptions }
%"class.std::__cxx11::basic_string" = type { %"struct.std::__cxx11::basic_string<char>::_Alloc_hider", i64, %union.anon }
%"struct.std::__cxx11::basic_string<char>::_Alloc_hider" = type { ptr }
%union.anon = type { i64, [8 x i8] }
%struct.HighsLogOptions = type <{ ptr, ptr, ptr, ptr, ptr, ptr, %"class.std::function", ptr, i8, [7 x i8] }>
%"class.std::function" = type { %"class.std::_Function_base", ptr }
%"class.std::_Function_base" = type { %"union.std::_Any_data", ptr }
%"union.std::_Any_data" = type { %"union.std::_Nocopy_types" }
%"union.std::_Nocopy_types" = type { { i64, i64 } }
%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.presolve::HighsPostsolveStack::DuplicateColumn" = type { double, double, double, double, double, i32, i32, i8, i8 }

@.str.64 = external hidden unnamed_addr constant [33 x i8], align 1
@.str.65 = external hidden unnamed_addr constant [33 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 void @_ZN12HighsCDoubleC2Ed(ptr noundef nonnull align 8 dereferenceable(16), double noundef) unnamed_addr #1 align 2

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

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

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

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

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

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

; Function Attrs: mustprogress uwtable
define dso_local void @_ZNK8presolve19HighsPostsolveStack15DuplicateColumn7undoFixERK12HighsOptionsR13HighsSolution(ptr noundef nonnull align 8 dereferenceable(56) %0, ptr noundef nonnull align 8 dereferenceable(1020) %1, ptr noundef nonnull align 8 dereferenceable(104) %2) #2 align 2 {
  %4 = alloca ptr, align 8
  %5 = alloca ptr, align 8
  %6 = alloca ptr, align 8
  %7 = alloca double, align 8
  %8 = alloca double, align 8
  %9 = alloca ptr, align 8
  %10 = alloca i8, align 1
  %11 = alloca i8, align 1
  %12 = alloca %class.anon.39, align 8
  %13 = alloca %class.anon.40, align 8
  %14 = alloca double, align 8
  %15 = alloca double, align 8
  %16 = alloca double, align 8
  %17 = alloca double, align 8
  %18 = alloca i8, align 1
  %19 = alloca i8, align 1
  %20 = alloca i32, align 4
  %21 = alloca i32, align 4
  %22 = alloca double, align 8
  %23 = alloca double, align 8
  %24 = alloca double, align 8
  %25 = alloca double, align 8
  %26 = alloca double, align 8
  %27 = alloca double, align 8
  %28 = alloca double, align 8
  %29 = alloca double, align 8
  %30 = alloca double, align 8
  %31 = alloca double, align 8
  %32 = alloca i8, align 1
  %33 = alloca %class.HighsCDouble, align 8
  %34 = alloca %class.HighsCDouble, align 8
  %35 = alloca %class.HighsCDouble, align 8
  %36 = alloca double, align 8
  %37 = alloca double, align 8
  %38 = alloca double, align 8
  %39 = alloca double, align 8
  %40 = alloca i8, align 1
  %41 = alloca %class.HighsCDouble, align 8
  %42 = alloca %class.HighsCDouble, align 8
  %43 = alloca %class.HighsCDouble, align 8
  %44 = alloca %class.HighsCDouble, align 8
  %45 = alloca double, align 8
  %46 = alloca double, align 8
  %47 = alloca %class.HighsCDouble, align 8
  %48 = alloca %class.HighsCDouble, align 8
  %49 = alloca %class.HighsCDouble, align 8
  %50 = alloca %class.HighsCDouble, align 8
  %51 = alloca %class.HighsCDouble, align 8
  %52 = alloca %class.HighsCDouble, align 8
  %53 = alloca %class.HighsCDouble, align 8
  %54 = alloca %class.HighsCDouble, align 8
  %55 = alloca %class.HighsCDouble, align 8
  %56 = alloca %class.HighsCDouble, align 8
  %57 = alloca %class.HighsCDouble, align 8
  %58 = alloca %class.HighsCDouble, align 8
  %59 = alloca %class.HighsCDouble, align 8
  %60 = alloca %class.HighsCDouble, align 8
  %61 = alloca %class.HighsCDouble, align 8
  %62 = alloca %class.HighsCDouble, align 8
  %63 = alloca %class.HighsCDouble, align 8
  %64 = alloca %class.HighsCDouble, align 8
  %65 = alloca %class.HighsCDouble, align 8
  %66 = alloca %class.HighsCDouble, align 8
  %67 = alloca double, align 8
  %68 = alloca %class.HighsCDouble, align 8
  %69 = alloca %class.HighsCDouble, align 8
  %70 = alloca %class.HighsCDouble, align 8
  %71 = alloca %class.HighsCDouble, align 8
  %72 = alloca %class.HighsCDouble, align 8
  %73 = alloca %class.HighsCDouble, align 8
  %74 = alloca %class.HighsCDouble, align 8
  %75 = alloca %class.HighsCDouble, align 8
  %76 = alloca %class.HighsCDouble, align 8
  %77 = alloca %class.HighsCDouble, align 8
  %78 = alloca %class.HighsCDouble, align 8
  %79 = alloca %class.HighsCDouble, align 8
  %80 = alloca %class.HighsCDouble, align 8
  %81 = alloca %class.HighsCDouble, align 8
  %82 = alloca %class.HighsCDouble, align 8
  %83 = alloca double, align 8
  %84 = alloca %class.HighsCDouble, align 8
  %85 = alloca %class.HighsCDouble, align 8
  %86 = alloca %class.HighsCDouble, align 8
  %87 = alloca double, align 8
  %88 = alloca double, align 8
  %89 = alloca %class.HighsCDouble, align 8
  %90 = alloca %class.HighsCDouble, align 8
  %91 = alloca %class.HighsCDouble, align 8
  %92 = alloca %class.HighsCDouble, align 8
  %93 = alloca %class.HighsCDouble, align 8
  %94 = alloca %class.HighsCDouble, align 8
  %95 = alloca i8, align 1
  %96 = alloca i8, align 1
  store ptr %0, ptr %4, align 8, !tbaa !5
  store ptr %1, ptr %5, align 8, !tbaa !5
  store ptr %2, ptr %6, align 8, !tbaa !5
  %97 = load ptr, ptr %4, align 8
  call void @llvm.lifetime.start.p0(i64 8, ptr %7) #7
  %98 = load ptr, ptr %5, align 8, !tbaa !5
  %99 = getelementptr inbounds %struct.HighsOptionsStruct, ptr %98, i32 0, i32 120
  %100 = load double, ptr %99, align 8, !tbaa !9
  store double %100, ptr %7, align 8, !tbaa !20
  call void @llvm.lifetime.start.p0(i64 8, ptr %8) #7
  %101 = load ptr, ptr %5, align 8, !tbaa !5
  %102 = getelementptr inbounds %struct.HighsOptionsStruct, ptr %101, i32 0, i32 14
  %103 = load double, ptr %102, align 8, !tbaa !21
  store double %103, ptr %8, align 8, !tbaa !20
  call void @llvm.lifetime.start.p0(i64 8, ptr %9) #7
  %104 = load ptr, ptr %6, align 8, !tbaa !5
  %105 = getelementptr inbounds %struct.HighsSolution, ptr %104, i32 0, i32 2
  store ptr %105, ptr %9, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 1, ptr %10) #7
  store i8 0, ptr %10, align 1, !tbaa !22
  call void @llvm.lifetime.start.p0(i64 1, ptr %11) #7
  store i8 0, ptr %11, align 1, !tbaa !22
  call void @llvm.lifetime.start.p0(i64 8, ptr %12) #7
  %106 = getelementptr inbounds %class.anon.39, ptr %12, i32 0, i32 0
  store ptr %7, ptr %106, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %13) #7
  %107 = getelementptr inbounds %class.anon.40, ptr %13, i32 0, i32 0
  store ptr %8, ptr %107, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %14) #7
  %108 = load ptr, ptr %9, align 8, !tbaa !5
  %109 = getelementptr inbounds %"struct.presolve::HighsPostsolveStack::DuplicateColumn", ptr %97, i32 0, i32 5
  %110 = load i32, ptr %109, align 8, !tbaa !23
  %111 = sext i32 %110 to i64
  %112 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt6vectorIdSaIdEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %108, i64 noundef %111) #7
  %113 = load double, ptr %112, align 8, !tbaa !20
  store double %113, ptr %14, align 8, !tbaa !20
  call void @llvm.lifetime.start.p0(i64 8, ptr %15) #7
  store double 1.000000e+03, ptr %15, align 8, !tbaa !20
  call void @llvm.lifetime.start.p0(i64 8, ptr %16) #7
  store double 1.000000e-08, ptr %16, align 8, !tbaa !20
  call void @llvm.lifetime.start.p0(i64 8, ptr %17) #7
  %114 = getelementptr inbounds %"struct.presolve::HighsPostsolveStack::DuplicateColumn", ptr %97, i32 0, i32 0
  %115 = load double, ptr %114, align 8, !tbaa !25
  store double %115, ptr %17, align 8, !tbaa !20
  call void @llvm.lifetime.start.p0(i64 1, ptr %18) #7
  %116 = getelementptr inbounds %"struct.presolve::HighsPostsolveStack::DuplicateColumn", ptr %97, i32 0, i32 7
  %117 = load i8, ptr %116, align 8, !tbaa !26, !range !27, !noundef !28
  %118 = trunc i8 %117 to i1
  %119 = zext i1 %118 to i8
  store i8 %119, ptr %18, align 1, !tbaa !22
  call void @llvm.lifetime.start.p0(i64 1, ptr %19) #7
  %120 = getelementptr inbounds %"struct.presolve::HighsPostsolveStack::DuplicateColumn", ptr %97, i32 0, i32 8
  %121 = load i8, ptr %120, align 1, !tbaa !29, !range !27, !noundef !28
  %122 = trunc i8 %121 to i1
  %123 = zext i1 %122 to i8
  store i8 %123, ptr %19, align 1, !tbaa !22
  call void @llvm.lifetime.start.p0(i64 4, ptr %20) #7
  %124 = getelementptr inbounds %"struct.presolve::HighsPostsolveStack::DuplicateColumn", ptr %97, i32 0, i32 5
  %125 = load i32, ptr %124, align 8, !tbaa !23
  store i32 %125, ptr %20, align 4, !tbaa !30
  call void @llvm.lifetime.start.p0(i64 4, ptr %21) #7
  %126 = getelementptr inbounds %"struct.presolve::HighsPostsolveStack::DuplicateColumn", ptr %97, i32 0, i32 6
  %127 = load i32, ptr %126, align 4, !tbaa !31
  store i32 %127, ptr %21, align 4, !tbaa !30
  call void @llvm.lifetime.start.p0(i64 8, ptr %22) #7
  %128 = load i8, ptr %18, align 1, !tbaa !22, !range !27, !noundef !28
  %129 = trunc i8 %128 to i1
  br i1 %129, label %130, label %136

130:                                              ; preds = %3
  %131 = getelementptr inbounds %"struct.presolve::HighsPostsolveStack::DuplicateColumn", ptr %97, i32 0, i32 1
  %132 = load double, ptr %131, align 8, !tbaa !32
  %133 = load double, ptr %7, align 8, !tbaa !20
  %134 = fsub double %132, %133
  %135 = call double @llvm.ceil.f64(double %134)
  br label %139

136:                                              ; preds = %3
  %137 = getelementptr inbounds %"struct.presolve::HighsPostsolveStack::DuplicateColumn", ptr %97, i32 0, i32 1
  %138 = load double, ptr %137, align 8, !tbaa !32
  br label %139

139:                                              ; preds = %136, %130
  %140 = phi double [ %135, %130 ], [ %138, %136 ]
  store double %140, ptr %22, align 8, !tbaa !20
  call void @llvm.lifetime.start.p0(i64 8, ptr %23) #7
  %141 = load i8, ptr %18, align 1, !tbaa !22, !range !27, !noundef !28
  %142 = trunc i8 %141 to i1
  br i1 %142, label %143, label %149

143:                                              ; preds = %139
  %144 = getelementptr inbounds %"struct.presolve::HighsPostsolveStack::DuplicateColumn", ptr %97, i32 0, i32 2
  %145 = load double, ptr %144, align 8, !tbaa !33
  %146 = load double, ptr %7, align 8, !tbaa !20
  %147 = fadd double %145, %146
  %148 = call double @llvm.floor.f64(double %147)
  br label %152

149:                                              ; preds = %139
  %150 = getelementptr inbounds %"struct.presolve::HighsPostsolveStack::DuplicateColumn", ptr %97, i32 0, i32 2
  %151 = load double, ptr %150, align 8, !tbaa !33
  br label %152

152:                                              ; preds = %149, %143
  %153 = phi double [ %148, %143 ], [ %151, %149 ]
  store double %153, ptr %23, align 8, !tbaa !20
  call void @llvm.lifetime.start.p0(i64 8, ptr %24) #7
  %154 = load i8, ptr %19, align 1, !tbaa !22, !range !27, !noundef !28
  %155 = trunc i8 %154 to i1
  br i1 %155, label %156, label %162

156:                                              ; preds = %152
  %157 = getelementptr inbounds %"struct.presolve::HighsPostsolveStack::DuplicateColumn", ptr %97, i32 0, i32 3
  %158 = load double, ptr %157, align 8, !tbaa !34
  %159 = load double, ptr %7, align 8, !tbaa !20
  %160 = fsub double %158, %159
  %161 = call double @llvm.ceil.f64(double %160)
  br label %165

162:                                              ; preds = %152
  %163 = getelementptr inbounds %"struct.presolve::HighsPostsolveStack::DuplicateColumn", ptr %97, i32 0, i32 3
  %164 = load double, ptr %163, align 8, !tbaa !34
  br label %165

165:                                              ; preds = %162, %156
  %166 = phi double [ %161, %156 ], [ %164, %162 ]
  store double %166, ptr %24, align 8, !tbaa !20
  call void @llvm.lifetime.start.p0(i64 8, ptr %25) #7
  %167 = load i8, ptr %19, align 1, !tbaa !22, !range !27, !noundef !28
  %168 = trunc i8 %167 to i1
  br i1 %168, label %169, label %175

169:                                              ; preds = %165
  %170 = getelementptr inbounds %"struct.presolve::HighsPostsolveStack::DuplicateColumn", ptr %97, i32 0, i32 4
  %171 = load double, ptr %170, align 8, !tbaa !35
  %172 = load double, ptr %7, align 8, !tbaa !20
  %173 = fadd double %171, %172
  %174 = call double @llvm.floor.f64(double %173)
  br label %178

175:                                              ; preds = %165
  %176 = getelementptr inbounds %"struct.presolve::HighsPostsolveStack::DuplicateColumn", ptr %97, i32 0, i32 4
  %177 = load double, ptr %176, align 8, !tbaa !35
  br label %178

178:                                              ; preds = %175, %169
  %179 = phi double [ %174, %169 ], [ %177, %175 ]
  store double %179, ptr %25, align 8, !tbaa !20
  call void @llvm.lifetime.start.p0(i64 8, ptr %26) #7
  %180 = load double, ptr %14, align 8, !tbaa !20
  store double %180, ptr %26, align 8, !tbaa !20
  call void @llvm.lifetime.start.p0(i64 8, ptr %27) #7
  %181 = load i8, ptr %18, align 1, !tbaa !22, !range !27, !noundef !28
  %182 = trunc i8 %181 to i1
  br i1 %182, label %183, label %270

183:                                              ; preds = %178
  call void @llvm.lifetime.start.p0(i64 8, ptr %28) #7
  store double 0.000000e+00, ptr %28, align 8, !tbaa !20
  call void @llvm.lifetime.start.p0(i64 8, ptr %29) #7
  store double 0.000000e+00, ptr %29, align 8, !tbaa !20
  call void @llvm.lifetime.start.p0(i64 8, ptr %30) #7
  store double 0.000000e+00, ptr %30, align 8, !tbaa !20
  call void @llvm.lifetime.start.p0(i64 8, ptr %31) #7
  store double 0.000000e+00, ptr %31, align 8, !tbaa !20
  %184 = load double, ptr %22, align 8, !tbaa !20
  %185 = fcmp ole double %184, 0xFFF0000000000000
  br i1 %185, label %186, label %193

186:                                              ; preds = %183
  %187 = load double, ptr %23, align 8, !tbaa !20
  %188 = fcmp oge double %187, 0x7FF0000000000000
  br i1 %188, label %189, label %190

189:                                              ; preds = %186
  store double 1.000000e+00, ptr %31, align 8, !tbaa !20
  store double 0.000000e+00, ptr %28, align 8, !tbaa !20
  store double 1.000000e+00, ptr %29, align 8, !tbaa !20
  store double 1.000000e+03, ptr %30, align 8, !tbaa !20
  br label %192

190:                                              ; preds = %186
  %191 = load double, ptr %23, align 8, !tbaa !20
  store double %191, ptr %28, align 8, !tbaa !20
  store double -1.000000e+00, ptr %29, align 8, !tbaa !20
  store double -1.000000e+03, ptr %30, align 8, !tbaa !20
  br label %192

192:                                              ; preds = %190, %189
  br label %202

193:                                              ; preds = %183
  %194 = load double, ptr %23, align 8, !tbaa !20
  %195 = fcmp oge double %194, 0x7FF0000000000000
  br i1 %195, label %196, label %198

196:                                              ; preds = %193
  %197 = load double, ptr %22, align 8, !tbaa !20
  store double %197, ptr %28, align 8, !tbaa !20
  store double 1.000000e+00, ptr %29, align 8, !tbaa !20
  store double 1.000000e+03, ptr %30, align 8, !tbaa !20
  br label %201

198:                                              ; preds = %193
  %199 = load double, ptr %22, align 8, !tbaa !20
  store double %199, ptr %28, align 8, !tbaa !20
  store double 1.000000e+00, ptr %29, align 8, !tbaa !20
  %200 = load double, ptr %23, align 8, !tbaa !20
  store double %200, ptr %30, align 8, !tbaa !20
  br label %201

201:                                              ; preds = %198, %196
  br label %202

202:                                              ; preds = %201, %192
  %203 = load double, ptr %31, align 8, !tbaa !20
  %204 = fcmp une double %203, 0.000000e+00
  br i1 %204, label %205, label %208

205:                                              ; preds = %202
  br i1 false, label %206, label %208

206:                                              ; preds = %205
  %207 = call i32 (ptr, ...) @printf(ptr noundef @.str.64)
  br label %208

208:                                              ; preds = %206, %205, %202
  call void @llvm.lifetime.start.p0(i64 1, ptr %32) #7
  store i8 0, ptr %32, align 1, !tbaa !22
  %209 = load double, ptr %28, align 8, !tbaa !20
  store double %209, ptr %26, align 8, !tbaa !20
  br label %210

210:                                              ; preds = %265, %208
  call void @llvm.lifetime.start.p0(i64 16, ptr %33) #7
  call void @llvm.lifetime.start.p0(i64 16, ptr %34) #7
  call void @llvm.lifetime.start.p0(i64 16, ptr %35) #7
  %211 = load double, ptr %14, align 8, !tbaa !20
  call void @_ZN12HighsCDoubleC2Ed(ptr noundef nonnull align 8 dereferenceable(16) %35, double noundef %211)
  %212 = load double, ptr %26, align 8, !tbaa !20
  %213 = call { double, double } @_ZNK12HighsCDoublemiEd(ptr noundef nonnull align 8 dereferenceable(16) %35, double noundef %212)
  %214 = getelementptr inbounds { double, double }, ptr %34, i32 0, i32 0
  %215 = extractvalue { double, double } %213, 0
  store double %215, ptr %214, align 8
  %216 = getelementptr inbounds { double, double }, ptr %34, i32 0, i32 1
  %217 = extractvalue { double, double } %213, 1
  store double %217, ptr %216, align 8
  %218 = load double, ptr %17, align 8, !tbaa !20
  %219 = call { double, double } @_ZNK12HighsCDoubledvEd(ptr noundef nonnull align 8 dereferenceable(16) %34, double noundef %218)
  %220 = getelementptr inbounds { double, double }, ptr %33, i32 0, i32 0
  %221 = extractvalue { double, double } %219, 0
  store double %221, ptr %220, align 8
  %222 = getelementptr inbounds { double, double }, ptr %33, i32 0, i32 1
  %223 = extractvalue { double, double } %219, 1
  store double %223, ptr %222, align 8
  %224 = call noundef double @_ZNK12HighsCDoublecvdEv(ptr noundef nonnull align 8 dereferenceable(16) %33)
  store double %224, ptr %27, align 8, !tbaa !20
  call void @llvm.lifetime.end.p0(i64 16, ptr %35) #7
  call void @llvm.lifetime.end.p0(i64 16, ptr %34) #7
  call void @llvm.lifetime.end.p0(i64 16, ptr %33) #7
  %225 = load double, ptr %24, align 8, !tbaa !20
  %226 = load double, ptr %27, align 8, !tbaa !20
  %227 = load double, ptr %25, align 8, !tbaa !20
  %228 = call noundef zeroext i1 @"_ZZNK8presolve19HighsPostsolveStack15DuplicateColumn7undoFixERK12HighsOptionsR13HighsSolutionENK3$_1clEddd"(ptr noundef nonnull align 8 dereferenceable(8) %13, double noundef %225, double noundef %226, double noundef %227)
  br i1 %228, label %229, label %242

229:                                              ; preds = %210
  %230 = load i8, ptr %19, align 1, !tbaa !22, !range !27, !noundef !28
  %231 = trunc i8 %230 to i1
  br i1 %231, label %232, label %235

232:                                              ; preds = %229
  %233 = load double, ptr %27, align 8, !tbaa !20
  %234 = call noundef zeroext i1 @"_ZZNK8presolve19HighsPostsolveStack15DuplicateColumn7undoFixERK12HighsOptionsR13HighsSolutionENK3$_0clEd"(ptr noundef nonnull align 8 dereferenceable(8) %12, double noundef %233)
  br label %235

235:                                              ; preds = %232, %229
  %236 = phi i1 [ true, %229 ], [ %234, %232 ]
  %237 = zext i1 %236 to i8
  store i8 %237, ptr %32, align 1, !tbaa !22
  %238 = load i8, ptr %32, align 1, !tbaa !22, !range !27, !noundef !28
  %239 = trunc i8 %238 to i1
  br i1 %239, label %240, label %241

240:                                              ; preds = %235
  br label %269

241:                                              ; preds = %235
  br label %242

242:                                              ; preds = %241, %210
  %243 = load double, ptr %29, align 8, !tbaa !20
  %244 = fcmp ogt double %243, 0.000000e+00
  br i1 %244, label %245, label %253

245:                                              ; preds = %242
  %246 = load double, ptr %26, align 8, !tbaa !20
  %247 = load double, ptr %29, align 8, !tbaa !20
  %248 = fadd double %246, %247
  %249 = load double, ptr %30, align 8, !tbaa !20
  %250 = fadd double %249, 1.000000e-08
  %251 = fcmp oge double %248, %250
  br i1 %251, label %252, label %253

252:                                              ; preds = %245
  br label %269

253:                                              ; preds = %245, %242
  %254 = load double, ptr %29, align 8, !tbaa !20
  %255 = fcmp olt double %254, 0.000000e+00
  br i1 %255, label %256, label %264

256:                                              ; preds = %253
  %257 = load double, ptr %26, align 8, !tbaa !20
  %258 = load double, ptr %29, align 8, !tbaa !20
  %259 = fadd double %257, %258
  %260 = load double, ptr %30, align 8, !tbaa !20
  %261 = fsub double %260, 1.000000e-08
  %262 = fcmp ole double %259, %261
  br i1 %262, label %263, label %264

263:                                              ; preds = %256
  br label %269

264:                                              ; preds = %256, %253
  br label %265

265:                                              ; preds = %264
  %266 = load double, ptr %29, align 8, !tbaa !20
  %267 = load double, ptr %26, align 8, !tbaa !20
  %268 = fadd double %267, %266
  store double %268, ptr %26, align 8, !tbaa !20
  br label %210, !llvm.loop !36

269:                                              ; preds = %263, %252, %240
  call void @llvm.lifetime.end.p0(i64 1, ptr %32) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %31) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %30) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %29) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %28) #7
  br label %657

270:                                              ; preds = %178
  %271 = load i8, ptr %19, align 1, !tbaa !22, !range !27, !noundef !28
  %272 = trunc i8 %271 to i1
  br i1 %272, label %273, label %360

273:                                              ; preds = %270
  call void @llvm.lifetime.start.p0(i64 8, ptr %36) #7
  store double 0.000000e+00, ptr %36, align 8, !tbaa !20
  call void @llvm.lifetime.start.p0(i64 8, ptr %37) #7
  store double 0.000000e+00, ptr %37, align 8, !tbaa !20
  call void @llvm.lifetime.start.p0(i64 8, ptr %38) #7
  store double 0.000000e+00, ptr %38, align 8, !tbaa !20
  call void @llvm.lifetime.start.p0(i64 8, ptr %39) #7
  store double 0.000000e+00, ptr %39, align 8, !tbaa !20
  %274 = load double, ptr %24, align 8, !tbaa !20
  %275 = fcmp ole double %274, 0xFFF0000000000000
  br i1 %275, label %276, label %283

276:                                              ; preds = %273
  %277 = load double, ptr %25, align 8, !tbaa !20
  %278 = fcmp oge double %277, 0x7FF0000000000000
  br i1 %278, label %279, label %280

279:                                              ; preds = %276
  store double 1.000000e+00, ptr %39, align 8, !tbaa !20
  store double 0.000000e+00, ptr %36, align 8, !tbaa !20
  store double 1.000000e+00, ptr %37, align 8, !tbaa !20
  store double 1.000000e+03, ptr %38, align 8, !tbaa !20
  br label %282

280:                                              ; preds = %276
  %281 = load double, ptr %25, align 8, !tbaa !20
  store double %281, ptr %36, align 8, !tbaa !20
  store double -1.000000e+00, ptr %37, align 8, !tbaa !20
  store double -1.000000e+03, ptr %38, align 8, !tbaa !20
  br label %282

282:                                              ; preds = %280, %279
  br label %292

283:                                              ; preds = %273
  %284 = load double, ptr %25, align 8, !tbaa !20
  %285 = fcmp oge double %284, 0x7FF0000000000000
  br i1 %285, label %286, label %288

286:                                              ; preds = %283
  %287 = load double, ptr %24, align 8, !tbaa !20
  store double %287, ptr %36, align 8, !tbaa !20
  store double 1.000000e+00, ptr %37, align 8, !tbaa !20
  store double 1.000000e+03, ptr %38, align 8, !tbaa !20
  br label %291

288:                                              ; preds = %283
  %289 = load double, ptr %24, align 8, !tbaa !20
  store double %289, ptr %36, align 8, !tbaa !20
  store double 1.000000e+00, ptr %37, align 8, !tbaa !20
  %290 = load double, ptr %25, align 8, !tbaa !20
  store double %290, ptr %38, align 8, !tbaa !20
  br label %291

291:                                              ; preds = %288, %286
  br label %292

292:                                              ; preds = %291, %282
  %293 = load double, ptr %39, align 8, !tbaa !20
  %294 = fcmp une double %293, 0.000000e+00
  br i1 %294, label %295, label %298

295:                                              ; preds = %292
  br i1 false, label %296, label %298

296:                                              ; preds = %295
  %297 = call i32 (ptr, ...) @printf(ptr noundef @.str.65)
  br label %298

298:                                              ; preds = %296, %295, %292
  call void @llvm.lifetime.start.p0(i64 1, ptr %40) #7
  store i8 0, ptr %40, align 1, !tbaa !22
  %299 = load double, ptr %36, align 8, !tbaa !20
  store double %299, ptr %27, align 8, !tbaa !20
  br label %300

300:                                              ; preds = %355, %298
  call void @llvm.lifetime.start.p0(i64 16, ptr %41) #7
  call void @llvm.lifetime.start.p0(i64 16, ptr %42) #7
  %301 = load double, ptr %14, align 8, !tbaa !20
  call void @_ZN12HighsCDoubleC2Ed(ptr noundef nonnull align 8 dereferenceable(16) %42, double noundef %301)
  call void @llvm.lifetime.start.p0(i64 16, ptr %43) #7
  call void @llvm.lifetime.start.p0(i64 16, ptr %44) #7
  %302 = load double, ptr %27, align 8, !tbaa !20
  call void @_ZN12HighsCDoubleC2Ed(ptr noundef nonnull align 8 dereferenceable(16) %44, double noundef %302)
  %303 = load double, ptr %17, align 8, !tbaa !20
  %304 = call { double, double } @_ZNK12HighsCDoublemlEd(ptr noundef nonnull align 8 dereferenceable(16) %44, double noundef %303)
  %305 = getelementptr inbounds { double, double }, ptr %43, i32 0, i32 0
  %306 = extractvalue { double, double } %304, 0
  store double %306, ptr %305, align 8
  %307 = getelementptr inbounds { double, double }, ptr %43, i32 0, i32 1
  %308 = extractvalue { double, double } %304, 1
  store double %308, ptr %307, align 8
  %309 = call { double, double } @_ZNK12HighsCDoublemiERKS_(ptr noundef nonnull align 8 dereferenceable(16) %42, ptr noundef nonnull align 8 dereferenceable(16) %43)
  %310 = getelementptr inbounds { double, double }, ptr %41, i32 0, i32 0
  %311 = extractvalue { double, double } %309, 0
  store double %311, ptr %310, align 8
  %312 = getelementptr inbounds { double, double }, ptr %41, i32 0, i32 1
  %313 = extractvalue { double, double } %309, 1
  store double %313, ptr %312, align 8
  %314 = call noundef double @_ZNK12HighsCDoublecvdEv(ptr noundef nonnull align 8 dereferenceable(16) %41)
  store double %314, ptr %26, align 8, !tbaa !20
  call void @llvm.lifetime.end.p0(i64 16, ptr %44) #7
  call void @llvm.lifetime.end.p0(i64 16, ptr %43) #7
  call void @llvm.lifetime.end.p0(i64 16, ptr %42) #7
  call void @llvm.lifetime.end.p0(i64 16, ptr %41) #7
  %315 = load double, ptr %22, align 8, !tbaa !20
  %316 = load double, ptr %26, align 8, !tbaa !20
  %317 = load double, ptr %23, align 8, !tbaa !20
  %318 = call noundef zeroext i1 @"_ZZNK8presolve19HighsPostsolveStack15DuplicateColumn7undoFixERK12HighsOptionsR13HighsSolutionENK3$_1clEddd"(ptr noundef nonnull align 8 dereferenceable(8) %13, double noundef %315, double noundef %316, double noundef %317)
  br i1 %318, label %319, label %332

319:                                              ; preds = %300
  %320 = load i8, ptr %18, align 1, !tbaa !22, !range !27, !noundef !28
  %321 = trunc i8 %320 to i1
  br i1 %321, label %322, label %325

322:                                              ; preds = %319
  %323 = load double, ptr %26, align 8, !tbaa !20
  %324 = call noundef zeroext i1 @"_ZZNK8presolve19HighsPostsolveStack15DuplicateColumn7undoFixERK12HighsOptionsR13HighsSolutionENK3$_0clEd"(ptr noundef nonnull align 8 dereferenceable(8) %12, double noundef %323)
  br label %325

325:                                              ; preds = %322, %319
  %326 = phi i1 [ true, %319 ], [ %324, %322 ]
  %327 = zext i1 %326 to i8
  store i8 %327, ptr %40, align 1, !tbaa !22
  %328 = load i8, ptr %40, align 1, !tbaa !22, !range !27, !noundef !28
  %329 = trunc i8 %328 to i1
  br i1 %329, label %330, label %331

330:                                              ; preds = %325
  br label %359

331:                                              ; preds = %325
  br label %332

332:                                              ; preds = %331, %300
  %333 = load double, ptr %37, align 8, !tbaa !20
  %334 = fcmp ogt double %333, 0.000000e+00
  br i1 %334, label %335, label %343

335:                                              ; preds = %332
  %336 = load double, ptr %27, align 8, !tbaa !20
  %337 = load double, ptr %37, align 8, !tbaa !20
  %338 = fadd double %336, %337
  %339 = load double, ptr %38, align 8, !tbaa !20
  %340 = fadd double %339, 1.000000e-08
  %341 = fcmp oge double %338, %340
  br i1 %341, label %342, label %343

342:                                              ; preds = %335
  br label %359

343:                                              ; preds = %335, %332
  %344 = load double, ptr %37, align 8, !tbaa !20
  %345 = fcmp olt double %344, 0.000000e+00
  br i1 %345, label %346, label %354

346:                                              ; preds = %343
  %347 = load double, ptr %27, align 8, !tbaa !20
  %348 = load double, ptr %37, align 8, !tbaa !20
  %349 = fadd double %347, %348
  %350 = load double, ptr %38, align 8, !tbaa !20
  %351 = fsub double %350, 1.000000e-08
  %352 = fcmp ole double %349, %351
  br i1 %352, label %353, label %354

353:                                              ; preds = %346
  br label %359

354:                                              ; preds = %346, %343
  br label %355

355:                                              ; preds = %354
  %356 = load double, ptr %37, align 8, !tbaa !20
  %357 = load double, ptr %27, align 8, !tbaa !20
  %358 = fadd double %357, %356
  store double %358, ptr %27, align 8, !tbaa !20
  br label %300, !llvm.loop !38

359:                                              ; preds = %353, %342, %330
  call void @llvm.lifetime.end.p0(i64 1, ptr %40) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %39) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %38) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %37) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %36) #7
  br label %656

360:                                              ; preds = %270
  call void @llvm.lifetime.start.p0(i64 8, ptr %45) #7
  store double 0.000000e+00, ptr %45, align 8, !tbaa !20
  call void @llvm.lifetime.start.p0(i64 8, ptr %46) #7
  store double 0.000000e+00, ptr %46, align 8, !tbaa !20
  %361 = load double, ptr %24, align 8, !tbaa !20
  %362 = fcmp ole double %361, 0xFFF0000000000000
  br i1 %362, label %363, label %368

363:                                              ; preds = %360
  %364 = load double, ptr %17, align 8, !tbaa !20
  %365 = fcmp ogt double %364, 0.000000e+00
  %366 = zext i1 %365 to i64
  %367 = select i1 %365, double 0x7FF0000000000000, double 0xFFF0000000000000
  store double %367, ptr %45, align 8, !tbaa !20
  br label %383

368:                                              ; preds = %360
  call void @llvm.lifetime.start.p0(i64 16, ptr %47) #7
  call void @llvm.lifetime.start.p0(i64 16, ptr %48) #7
  %369 = load double, ptr %14, align 8, !tbaa !20
  call void @_ZN12HighsCDoubleC2Ed(ptr noundef nonnull align 8 dereferenceable(16) %48, double noundef %369)
  call void @llvm.lifetime.start.p0(i64 16, ptr %49) #7
  call void @llvm.lifetime.start.p0(i64 16, ptr %50) #7
  %370 = load double, ptr %24, align 8, !tbaa !20
  call void @_ZN12HighsCDoubleC2Ed(ptr noundef nonnull align 8 dereferenceable(16) %50, double noundef %370)
  %371 = load double, ptr %17, align 8, !tbaa !20
  %372 = call { double, double } @_ZNK12HighsCDoublemlEd(ptr noundef nonnull align 8 dereferenceable(16) %50, double noundef %371)
  %373 = getelementptr inbounds { double, double }, ptr %49, i32 0, i32 0
  %374 = extractvalue { double, double } %372, 0
  store double %374, ptr %373, align 8
  %375 = getelementptr inbounds { double, double }, ptr %49, i32 0, i32 1
  %376 = extractvalue { double, double } %372, 1
  store double %376, ptr %375, align 8
  %377 = call { double, double } @_ZNK12HighsCDoublemiERKS_(ptr noundef nonnull align 8 dereferenceable(16) %48, ptr noundef nonnull align 8 dereferenceable(16) %49)
  %378 = getelementptr inbounds { double, double }, ptr %47, i32 0, i32 0
  %379 = extractvalue { double, double } %377, 0
  store double %379, ptr %378, align 8
  %380 = getelementptr inbounds { double, double }, ptr %47, i32 0, i32 1
  %381 = extractvalue { double, double } %377, 1
  store double %381, ptr %380, align 8
  %382 = call noundef double @_ZNK12HighsCDoublecvdEv(ptr noundef nonnull align 8 dereferenceable(16) %47)
  store double %382, ptr %45, align 8, !tbaa !20
  call void @llvm.lifetime.end.p0(i64 16, ptr %50) #7
  call void @llvm.lifetime.end.p0(i64 16, ptr %49) #7
  call void @llvm.lifetime.end.p0(i64 16, ptr %48) #7
  call void @llvm.lifetime.end.p0(i64 16, ptr %47) #7
  br label %383

383:                                              ; preds = %368, %363
  %384 = load double, ptr %25, align 8, !tbaa !20
  %385 = fcmp oge double %384, 0x7FF0000000000000
  br i1 %385, label %386, label %391

386:                                              ; preds = %383
  %387 = load double, ptr %17, align 8, !tbaa !20
  %388 = fcmp ogt double %387, 0.000000e+00
  %389 = zext i1 %388 to i64
  %390 = select i1 %388, double 0xFFF0000000000000, double 0x7FF0000000000000
  store double %390, ptr %46, align 8, !tbaa !20
  br label %406

391:                                              ; preds = %383
  call void @llvm.lifetime.start.p0(i64 16, ptr %51) #7
  call void @llvm.lifetime.start.p0(i64 16, ptr %52) #7
  %392 = load double, ptr %14, align 8, !tbaa !20
  call void @_ZN12HighsCDoubleC2Ed(ptr noundef nonnull align 8 dereferenceable(16) %52, double noundef %392)
  call void @llvm.lifetime.start.p0(i64 16, ptr %53) #7
  call void @llvm.lifetime.start.p0(i64 16, ptr %54) #7
  %393 = load double, ptr %25, align 8, !tbaa !20
  call void @_ZN12HighsCDoubleC2Ed(ptr noundef nonnull align 8 dereferenceable(16) %54, double noundef %393)
  %394 = load double, ptr %17, align 8, !tbaa !20
  %395 = call { double, double } @_ZNK12HighsCDoublemlEd(ptr noundef nonnull align 8 dereferenceable(16) %54, double noundef %394)
  %396 = getelementptr inbounds { double, double }, ptr %53, i32 0, i32 0
  %397 = extractvalue { double, double } %395, 0
  store double %397, ptr %396, align 8
  %398 = getelementptr inbounds { double, double }, ptr %53, i32 0, i32 1
  %399 = extractvalue { double, double } %395, 1
  store double %399, ptr %398, align 8
  %400 = call { double, double } @_ZNK12HighsCDoublemiERKS_(ptr noundef nonnull align 8 dereferenceable(16) %52, ptr noundef nonnull align 8 dereferenceable(16) %53)
  %401 = getelementptr inbounds { double, double }, ptr %51, i32 0, i32 0
  %402 = extractvalue { double, double } %400, 0
  store double %402, ptr %401, align 8
  %403 = getelementptr inbounds { double, double }, ptr %51, i32 0, i32 1
  %404 = extractvalue { double, double } %400, 1
  store double %404, ptr %403, align 8
  %405 = call noundef double @_ZNK12HighsCDoublecvdEv(ptr noundef nonnull align 8 dereferenceable(16) %51)
  store double %405, ptr %46, align 8, !tbaa !20
  call void @llvm.lifetime.end.p0(i64 16, ptr %54) #7
  call void @llvm.lifetime.end.p0(i64 16, ptr %53) #7
  call void @llvm.lifetime.end.p0(i64 16, ptr %52) #7
  call void @llvm.lifetime.end.p0(i64 16, ptr %51) #7
  br label %406

406:                                              ; preds = %391, %386
  %407 = load double, ptr %17, align 8, !tbaa !20
  %408 = fcmp ogt double %407, 0.000000e+00
  br i1 %408, label %409, label %532

409:                                              ; preds = %406
  %410 = load double, ptr %25, align 8, !tbaa !20
  %411 = fcmp olt double %410, 0x7FF0000000000000
  br i1 %411, label %412, label %461

412:                                              ; preds = %409
  %413 = load double, ptr %25, align 8, !tbaa !20
  store double %413, ptr %27, align 8, !tbaa !20
  %414 = load double, ptr %46, align 8, !tbaa !20
  store double %414, ptr %26, align 8, !tbaa !20
  %415 = load double, ptr %26, align 8, !tbaa !20
  %416 = load double, ptr %22, align 8, !tbaa !20
  %417 = load double, ptr %8, align 8, !tbaa !20
  %418 = fsub double %416, %417
  %419 = fcmp olt double %415, %418
  br i1 %419, label %420, label %460

420:                                              ; preds = %412
  %421 = load double, ptr %22, align 8, !tbaa !20
  store double %421, ptr %26, align 8, !tbaa !20
  call void @llvm.lifetime.start.p0(i64 16, ptr %55) #7
  call void @llvm.lifetime.start.p0(i64 16, ptr %56) #7
  call void @llvm.lifetime.start.p0(i64 16, ptr %57) #7
  %422 = load double, ptr %14, align 8, !tbaa !20
  call void @_ZN12HighsCDoubleC2Ed(ptr noundef nonnull align 8 dereferenceable(16) %57, double noundef %422)
  %423 = load double, ptr %26, align 8, !tbaa !20
  %424 = call { double, double } @_ZNK12HighsCDoublemiEd(ptr noundef nonnull align 8 dereferenceable(16) %57, double noundef %423)
  %425 = getelementptr inbounds { double, double }, ptr %56, i32 0, i32 0
  %426 = extractvalue { double, double } %424, 0
  store double %426, ptr %425, align 8
  %427 = getelementptr inbounds { double, double }, ptr %56, i32 0, i32 1
  %428 = extractvalue { double, double } %424, 1
  store double %428, ptr %427, align 8
  %429 = load double, ptr %17, align 8, !tbaa !20
  %430 = call { double, double } @_ZNK12HighsCDoubledvEd(ptr noundef nonnull align 8 dereferenceable(16) %56, double noundef %429)
  %431 = getelementptr inbounds { double, double }, ptr %55, i32 0, i32 0
  %432 = extractvalue { double, double } %430, 0
  store double %432, ptr %431, align 8
  %433 = getelementptr inbounds { double, double }, ptr %55, i32 0, i32 1
  %434 = extractvalue { double, double } %430, 1
  store double %434, ptr %433, align 8
  %435 = call noundef double @_ZNK12HighsCDoublecvdEv(ptr noundef nonnull align 8 dereferenceable(16) %55)
  store double %435, ptr %27, align 8, !tbaa !20
  call void @llvm.lifetime.end.p0(i64 16, ptr %57) #7
  call void @llvm.lifetime.end.p0(i64 16, ptr %56) #7
  call void @llvm.lifetime.end.p0(i64 16, ptr %55) #7
  %436 = load double, ptr %27, align 8, !tbaa !20
  %437 = load double, ptr %24, align 8, !tbaa !20
  %438 = load double, ptr %8, align 8, !tbaa !20
  %439 = fsub double %437, %438
  %440 = fcmp olt double %436, %439
  br i1 %440, label %441, label %459

441:                                              ; preds = %420
  %442 = load double, ptr %22, align 8, !tbaa !20
  %443 = load double, ptr %8, align 8, !tbaa !20
  %444 = fsub double %442, %443
  store double %444, ptr %26, align 8, !tbaa !20
  call void @llvm.lifetime.start.p0(i64 16, ptr %58) #7
  call void @llvm.lifetime.start.p0(i64 16, ptr %59) #7
  call void @llvm.lifetime.start.p0(i64 16, ptr %60) #7
  %445 = load double, ptr %14, align 8, !tbaa !20
  call void @_ZN12HighsCDoubleC2Ed(ptr noundef nonnull align 8 dereferenceable(16) %60, double noundef %445)
  %446 = load double, ptr %26, align 8, !tbaa !20
  %447 = call { double, double } @_ZNK12HighsCDoublemiEd(ptr noundef nonnull align 8 dereferenceable(16) %60, double noundef %446)
  %448 = getelementptr inbounds { double, double }, ptr %59, i32 0, i32 0
  %449 = extractvalue { double, double } %447, 0
  store double %449, ptr %448, align 8
  %450 = getelementptr inbounds { double, double }, ptr %59, i32 0, i32 1
  %451 = extractvalue { double, double } %447, 1
  store double %451, ptr %450, align 8
  %452 = load double, ptr %17, align 8, !tbaa !20
  %453 = call { double, double } @_ZNK12HighsCDoubledvEd(ptr noundef nonnull align 8 dereferenceable(16) %59, double noundef %452)
  %454 = getelementptr inbounds { double, double }, ptr %58, i32 0, i32 0
  %455 = extractvalue { double, double } %453, 0
  store double %455, ptr %454, align 8
  %456 = getelementptr inbounds { double, double }, ptr %58, i32 0, i32 1
  %457 = extractvalue { double, double } %453, 1
  store double %457, ptr %456, align 8
  %458 = call noundef double @_ZNK12HighsCDoublecvdEv(ptr noundef nonnull align 8 dereferenceable(16) %58)
  store double %458, ptr %27, align 8, !tbaa !20
  call void @llvm.lifetime.end.p0(i64 16, ptr %60) #7
  call void @llvm.lifetime.end.p0(i64 16, ptr %59) #7
  call void @llvm.lifetime.end.p0(i64 16, ptr %58) #7
  br label %459

459:                                              ; preds = %441, %420
  br label %460

460:                                              ; preds = %459, %412
  br label %531

461:                                              ; preds = %409
  %462 = load double, ptr %24, align 8, !tbaa !20
  %463 = fcmp ogt double %462, 0xFFF0000000000000
  br i1 %463, label %464, label %513

464:                                              ; preds = %461
  %465 = load double, ptr %24, align 8, !tbaa !20
  store double %465, ptr %27, align 8, !tbaa !20
  %466 = load double, ptr %45, align 8, !tbaa !20
  store double %466, ptr %26, align 8, !tbaa !20
  %467 = load double, ptr %26, align 8, !tbaa !20
  %468 = load double, ptr %23, align 8, !tbaa !20
  %469 = load double, ptr %8, align 8, !tbaa !20
  %470 = fadd double %468, %469
  %471 = fcmp ogt double %467, %470
  br i1 %471, label %472, label %512

472:                                              ; preds = %464
  %473 = load double, ptr %23, align 8, !tbaa !20
  store double %473, ptr %26, align 8, !tbaa !20
  call void @llvm.lifetime.start.p0(i64 16, ptr %61) #7
  call void @llvm.lifetime.start.p0(i64 16, ptr %62) #7
  call void @llvm.lifetime.start.p0(i64 16, ptr %63) #7
  %474 = load double, ptr %14, align 8, !tbaa !20
  call void @_ZN12HighsCDoubleC2Ed(ptr noundef nonnull align 8 dereferenceable(16) %63, double noundef %474)
  %475 = load double, ptr %26, align 8, !tbaa !20
  %476 = call { double, double } @_ZNK12HighsCDoublemiEd(ptr noundef nonnull align 8 dereferenceable(16) %63, double noundef %475)
  %477 = getelementptr inbounds { double, double }, ptr %62, i32 0, i32 0
  %478 = extractvalue { double, double } %476, 0
  store double %478, ptr %477, align 8
  %479 = getelementptr inbounds { double, double }, ptr %62, i32 0, i32 1
  %480 = extractvalue { double, double } %476, 1
  store double %480, ptr %479, align 8
  %481 = load double, ptr %17, align 8, !tbaa !20
  %482 = call { double, double } @_ZNK12HighsCDoubledvEd(ptr noundef nonnull align 8 dereferenceable(16) %62, double noundef %481)
  %483 = getelementptr inbounds { double, double }, ptr %61, i32 0, i32 0
  %484 = extractvalue { double, double } %482, 0
  store double %484, ptr %483, align 8
  %485 = getelementptr inbounds { double, double }, ptr %61, i32 0, i32 1
  %486 = extractvalue { double, double } %482, 1
  store double %486, ptr %485, align 8
  %487 = call noundef double @_ZNK12HighsCDoublecvdEv(ptr noundef nonnull align 8 dereferenceable(16) %61)
  store double %487, ptr %27, align 8, !tbaa !20
  call void @llvm.lifetime.end.p0(i64 16, ptr %63) #7
  call void @llvm.lifetime.end.p0(i64 16, ptr %62) #7
  call void @llvm.lifetime.end.p0(i64 16, ptr %61) #7
  %488 = load double, ptr %27, align 8, !tbaa !20
  %489 = load double, ptr %25, align 8, !tbaa !20
  %490 = load double, ptr %8, align 8, !tbaa !20
  %491 = fadd double %489, %490
  %492 = fcmp ogt double %488, %491
  br i1 %492, label %493, label %511

493:                                              ; preds = %472
  %494 = load double, ptr %23, align 8, !tbaa !20
  %495 = load double, ptr %8, align 8, !tbaa !20
  %496 = fadd double %494, %495
  store double %496, ptr %26, align 8, !tbaa !20
  call void @llvm.lifetime.start.p0(i64 16, ptr %64) #7
  call void @llvm.lifetime.start.p0(i64 16, ptr %65) #7
  call void @llvm.lifetime.start.p0(i64 16, ptr %66) #7
  %497 = load double, ptr %14, align 8, !tbaa !20
  call void @_ZN12HighsCDoubleC2Ed(ptr noundef nonnull align 8 dereferenceable(16) %66, double noundef %497)
  %498 = load double, ptr %26, align 8, !tbaa !20
  %499 = call { double, double } @_ZNK12HighsCDoublemiEd(ptr noundef nonnull align 8 dereferenceable(16) %66, double noundef %498)
  %500 = getelementptr inbounds { double, double }, ptr %65, i32 0, i32 0
  %501 = extractvalue { double, double } %499, 0
  store double %501, ptr %500, align 8
  %502 = getelementptr inbounds { double, double }, ptr %65, i32 0, i32 1
  %503 = extractvalue { double, double } %499, 1
  store double %503, ptr %502, align 8
  %504 = load double, ptr %17, align 8, !tbaa !20
  %505 = call { double, double } @_ZNK12HighsCDoubledvEd(ptr noundef nonnull align 8 dereferenceable(16) %65, double noundef %504)
  %506 = getelementptr inbounds { double, double }, ptr %64, i32 0, i32 0
  %507 = extractvalue { double, double } %505, 0
  store double %507, ptr %506, align 8
  %508 = getelementptr inbounds { double, double }, ptr %64, i32 0, i32 1
  %509 = extractvalue { double, double } %505, 1
  store double %509, ptr %508, align 8
  %510 = call noundef double @_ZNK12HighsCDoublecvdEv(ptr noundef nonnull align 8 dereferenceable(16) %64)
  store double %510, ptr %27, align 8, !tbaa !20
  call void @llvm.lifetime.end.p0(i64 16, ptr %66) #7
  call void @llvm.lifetime.end.p0(i64 16, ptr %65) #7
  call void @llvm.lifetime.end.p0(i64 16, ptr %64) #7
  br label %511

511:                                              ; preds = %493, %472
  br label %512

512:                                              ; preds = %511, %464
  br label %530

513:                                              ; preds = %461
  call void @llvm.lifetime.start.p0(i64 8, ptr %67) #7
  store double 0.000000e+00, ptr %67, align 8, !tbaa !20
  %514 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZSt3maxIdERKT_S2_S2_(ptr noundef nonnull align 8 dereferenceable(8) %67, ptr noundef nonnull align 8 dereferenceable(8) %22)
  %515 = load double, ptr %514, align 8, !tbaa !20
  store double %515, ptr %26, align 8, !tbaa !20
  call void @llvm.lifetime.end.p0(i64 8, ptr %67) #7
  call void @llvm.lifetime.start.p0(i64 16, ptr %68) #7
  call void @llvm.lifetime.start.p0(i64 16, ptr %69) #7
  call void @llvm.lifetime.start.p0(i64 16, ptr %70) #7
  %516 = load double, ptr %14, align 8, !tbaa !20
  call void @_ZN12HighsCDoubleC2Ed(ptr noundef nonnull align 8 dereferenceable(16) %70, double noundef %516)
  %517 = load double, ptr %26, align 8, !tbaa !20
  %518 = call { double, double } @_ZNK12HighsCDoublemiEd(ptr noundef nonnull align 8 dereferenceable(16) %70, double noundef %517)
  %519 = getelementptr inbounds { double, double }, ptr %69, i32 0, i32 0
  %520 = extractvalue { double, double } %518, 0
  store double %520, ptr %519, align 8
  %521 = getelementptr inbounds { double, double }, ptr %69, i32 0, i32 1
  %522 = extractvalue { double, double } %518, 1
  store double %522, ptr %521, align 8
  %523 = load double, ptr %17, align 8, !tbaa !20
  %524 = call { double, double } @_ZNK12HighsCDoubledvEd(ptr noundef nonnull align 8 dereferenceable(16) %69, double noundef %523)
  %525 = getelementptr inbounds { double, double }, ptr %68, i32 0, i32 0
  %526 = extractvalue { double, double } %524, 0
  store double %526, ptr %525, align 8
  %527 = getelementptr inbounds { double, double }, ptr %68, i32 0, i32 1
  %528 = extractvalue { double, double } %524, 1
  store double %528, ptr %527, align 8
  %529 = call noundef double @_ZNK12HighsCDoublecvdEv(ptr noundef nonnull align 8 dereferenceable(16) %68)
  store double %529, ptr %27, align 8, !tbaa !20
  call void @llvm.lifetime.end.p0(i64 16, ptr %70) #7
  call void @llvm.lifetime.end.p0(i64 16, ptr %69) #7
  call void @llvm.lifetime.end.p0(i64 16, ptr %68) #7
  br label %530

530:                                              ; preds = %513, %512
  br label %531

531:                                              ; preds = %530, %460
  br label %655

532:                                              ; preds = %406
  %533 = load double, ptr %24, align 8, !tbaa !20
  %534 = fcmp ogt double %533, 0xFFF0000000000000
  br i1 %534, label %535, label %584

535:                                              ; preds = %532
  %536 = load double, ptr %24, align 8, !tbaa !20
  store double %536, ptr %27, align 8, !tbaa !20
  %537 = load double, ptr %45, align 8, !tbaa !20
  store double %537, ptr %26, align 8, !tbaa !20
  %538 = load double, ptr %26, align 8, !tbaa !20
  %539 = load double, ptr %22, align 8, !tbaa !20
  %540 = load double, ptr %8, align 8, !tbaa !20
  %541 = fsub double %539, %540
  %542 = fcmp olt double %538, %541
  br i1 %542, label %543, label %583

543:                                              ; preds = %535
  %544 = load double, ptr %22, align 8, !tbaa !20
  store double %544, ptr %26, align 8, !tbaa !20
  call void @llvm.lifetime.start.p0(i64 16, ptr %71) #7
  call void @llvm.lifetime.start.p0(i64 16, ptr %72) #7
  call void @llvm.lifetime.start.p0(i64 16, ptr %73) #7
  %545 = load double, ptr %14, align 8, !tbaa !20
  call void @_ZN12HighsCDoubleC2Ed(ptr noundef nonnull align 8 dereferenceable(16) %73, double noundef %545)
  %546 = load double, ptr %26, align 8, !tbaa !20
  %547 = call { double, double } @_ZNK12HighsCDoublemiEd(ptr noundef nonnull align 8 dereferenceable(16) %73, double noundef %546)
  %548 = getelementptr inbounds { double, double }, ptr %72, i32 0, i32 0
  %549 = extractvalue { double, double } %547, 0
  store double %549, ptr %548, align 8
  %550 = getelementptr inbounds { double, double }, ptr %72, i32 0, i32 1
  %551 = extractvalue { double, double } %547, 1
  store double %551, ptr %550, align 8
  %552 = load double, ptr %17, align 8, !tbaa !20
  %553 = call { double, double } @_ZNK12HighsCDoubledvEd(ptr noundef nonnull align 8 dereferenceable(16) %72, double noundef %552)
  %554 = getelementptr inbounds { double, double }, ptr %71, i32 0, i32 0
  %555 = extractvalue { double, double } %553, 0
  store double %555, ptr %554, align 8
  %556 = getelementptr inbounds { double, double }, ptr %71, i32 0, i32 1
  %557 = extractvalue { double, double } %553, 1
  store double %557, ptr %556, align 8
  %558 = call noundef double @_ZNK12HighsCDoublecvdEv(ptr noundef nonnull align 8 dereferenceable(16) %71)
  store double %558, ptr %27, align 8, !tbaa !20
  call void @llvm.lifetime.end.p0(i64 16, ptr %73) #7
  call void @llvm.lifetime.end.p0(i64 16, ptr %72) #7
  call void @llvm.lifetime.end.p0(i64 16, ptr %71) #7
  %559 = load double, ptr %27, align 8, !tbaa !20
  %560 = load double, ptr %25, align 8, !tbaa !20
  %561 = load double, ptr %8, align 8, !tbaa !20
  %562 = fadd double %560, %561
  %563 = fcmp ogt double %559, %562
  br i1 %563, label %564, label %582

564:                                              ; preds = %543
  %565 = load double, ptr %22, align 8, !tbaa !20
  %566 = load double, ptr %8, align 8, !tbaa !20
  %567 = fsub double %565, %566
  store double %567, ptr %26, align 8, !tbaa !20
  call void @llvm.lifetime.start.p0(i64 16, ptr %74) #7
  call void @llvm.lifetime.start.p0(i64 16, ptr %75) #7
  call void @llvm.lifetime.start.p0(i64 16, ptr %76) #7
  %568 = load double, ptr %14, align 8, !tbaa !20
  call void @_ZN12HighsCDoubleC2Ed(ptr noundef nonnull align 8 dereferenceable(16) %76, double noundef %568)
  %569 = load double, ptr %26, align 8, !tbaa !20
  %570 = call { double, double } @_ZNK12HighsCDoublemiEd(ptr noundef nonnull align 8 dereferenceable(16) %76, double noundef %569)
  %571 = getelementptr inbounds { double, double }, ptr %75, i32 0, i32 0
  %572 = extractvalue { double, double } %570, 0
  store double %572, ptr %571, align 8
  %573 = getelementptr inbounds { double, double }, ptr %75, i32 0, i32 1
  %574 = extractvalue { double, double } %570, 1
  store double %574, ptr %573, align 8
  %575 = load double, ptr %17, align 8, !tbaa !20
  %576 = call { double, double } @_ZNK12HighsCDoubledvEd(ptr noundef nonnull align 8 dereferenceable(16) %75, double noundef %575)
  %577 = getelementptr inbounds { double, double }, ptr %74, i32 0, i32 0
  %578 = extractvalue { double, double } %576, 0
  store double %578, ptr %577, align 8
  %579 = getelementptr inbounds { double, double }, ptr %74, i32 0, i32 1
  %580 = extractvalue { double, double } %576, 1
  store double %580, ptr %579, align 8
  %581 = call noundef double @_ZNK12HighsCDoublecvdEv(ptr noundef nonnull align 8 dereferenceable(16) %74)
  store double %581, ptr %27, align 8, !tbaa !20
  call void @llvm.lifetime.end.p0(i64 16, ptr %76) #7
  call void @llvm.lifetime.end.p0(i64 16, ptr %75) #7
  call void @llvm.lifetime.end.p0(i64 16, ptr %74) #7
  br label %582

582:                                              ; preds = %564, %543
  br label %583

583:                                              ; preds = %582, %535
  br label %654

584:                                              ; preds = %532
  %585 = load double, ptr %25, align 8, !tbaa !20
  %586 = fcmp olt double %585, 0x7FF0000000000000
  br i1 %586, label %587, label %636

587:                                              ; preds = %584
  %588 = load double, ptr %25, align 8, !tbaa !20
  store double %588, ptr %27, align 8, !tbaa !20
  %589 = load double, ptr %46, align 8, !tbaa !20
  store double %589, ptr %26, align 8, !tbaa !20
  %590 = load double, ptr %26, align 8, !tbaa !20
  %591 = load double, ptr %23, align 8, !tbaa !20
  %592 = load double, ptr %8, align 8, !tbaa !20
  %593 = fadd double %591, %592
  %594 = fcmp ogt double %590, %593
  br i1 %594, label %595, label %635

595:                                              ; preds = %587
  %596 = load double, ptr %23, align 8, !tbaa !20
  store double %596, ptr %26, align 8, !tbaa !20
  call void @llvm.lifetime.start.p0(i64 16, ptr %77) #7
  call void @llvm.lifetime.start.p0(i64 16, ptr %78) #7
  call void @llvm.lifetime.start.p0(i64 16, ptr %79) #7
  %597 = load double, ptr %14, align 8, !tbaa !20
  call void @_ZN12HighsCDoubleC2Ed(ptr noundef nonnull align 8 dereferenceable(16) %79, double noundef %597)
  %598 = load double, ptr %26, align 8, !tbaa !20
  %599 = call { double, double } @_ZNK12HighsCDoublemiEd(ptr noundef nonnull align 8 dereferenceable(16) %79, double noundef %598)
  %600 = getelementptr inbounds { double, double }, ptr %78, i32 0, i32 0
  %601 = extractvalue { double, double } %599, 0
  store double %601, ptr %600, align 8
  %602 = getelementptr inbounds { double, double }, ptr %78, i32 0, i32 1
  %603 = extractvalue { double, double } %599, 1
  store double %603, ptr %602, align 8
  %604 = load double, ptr %17, align 8, !tbaa !20
  %605 = call { double, double } @_ZNK12HighsCDoubledvEd(ptr noundef nonnull align 8 dereferenceable(16) %78, double noundef %604)
  %606 = getelementptr inbounds { double, double }, ptr %77, i32 0, i32 0
  %607 = extractvalue { double, double } %605, 0
  store double %607, ptr %606, align 8
  %608 = getelementptr inbounds { double, double }, ptr %77, i32 0, i32 1
  %609 = extractvalue { double, double } %605, 1
  store double %609, ptr %608, align 8
  %610 = call noundef double @_ZNK12HighsCDoublecvdEv(ptr noundef nonnull align 8 dereferenceable(16) %77)
  store double %610, ptr %27, align 8, !tbaa !20
  call void @llvm.lifetime.end.p0(i64 16, ptr %79) #7
  call void @llvm.lifetime.end.p0(i64 16, ptr %78) #7
  call void @llvm.lifetime.end.p0(i64 16, ptr %77) #7
  %611 = load double, ptr %27, align 8, !tbaa !20
  %612 = load double, ptr %24, align 8, !tbaa !20
  %613 = load double, ptr %8, align 8, !tbaa !20
  %614 = fsub double %612, %613
  %615 = fcmp olt double %611, %614
  br i1 %615, label %616, label %634

616:                                              ; preds = %595
  %617 = load double, ptr %23, align 8, !tbaa !20
  %618 = load double, ptr %8, align 8, !tbaa !20
  %619 = fadd double %617, %618
  store double %619, ptr %26, align 8, !tbaa !20
  call void @llvm.lifetime.start.p0(i64 16, ptr %80) #7
  call void @llvm.lifetime.start.p0(i64 16, ptr %81) #7
  call void @llvm.lifetime.start.p0(i64 16, ptr %82) #7
  %620 = load double, ptr %14, align 8, !tbaa !20
  call void @_ZN12HighsCDoubleC2Ed(ptr noundef nonnull align 8 dereferenceable(16) %82, double noundef %620)
  %621 = load double, ptr %26, align 8, !tbaa !20
  %622 = call { double, double } @_ZNK12HighsCDoublemiEd(ptr noundef nonnull align 8 dereferenceable(16) %82, double noundef %621)
  %623 = getelementptr inbounds { double, double }, ptr %81, i32 0, i32 0
  %624 = extractvalue { double, double } %622, 0
  store double %624, ptr %623, align 8
  %625 = getelementptr inbounds { double, double }, ptr %81, i32 0, i32 1
  %626 = extractvalue { double, double } %622, 1
  store double %626, ptr %625, align 8
  %627 = load double, ptr %17, align 8, !tbaa !20
  %628 = call { double, double } @_ZNK12HighsCDoubledvEd(ptr noundef nonnull align 8 dereferenceable(16) %81, double noundef %627)
  %629 = getelementptr inbounds { double, double }, ptr %80, i32 0, i32 0
  %630 = extractvalue { double, double } %628, 0
  store double %630, ptr %629, align 8
  %631 = getelementptr inbounds { double, double }, ptr %80, i32 0, i32 1
  %632 = extractvalue { double, double } %628, 1
  store double %632, ptr %631, align 8
  %633 = call noundef double @_ZNK12HighsCDoublecvdEv(ptr noundef nonnull align 8 dereferenceable(16) %80)
  store double %633, ptr %27, align 8, !tbaa !20
  call void @llvm.lifetime.end.p0(i64 16, ptr %82) #7
  call void @llvm.lifetime.end.p0(i64 16, ptr %81) #7
  call void @llvm.lifetime.end.p0(i64 16, ptr %80) #7
  br label %634

634:                                              ; preds = %616, %595
  br label %635

635:                                              ; preds = %634, %587
  br label %653

636:                                              ; preds = %584
  call void @llvm.lifetime.start.p0(i64 8, ptr %83) #7
  store double 0.000000e+00, ptr %83, align 8, !tbaa !20
  %637 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZSt3maxIdERKT_S2_S2_(ptr noundef nonnull align 8 dereferenceable(8) %83, ptr noundef nonnull align 8 dereferenceable(8) %22)
  %638 = load double, ptr %637, align 8, !tbaa !20
  store double %638, ptr %26, align 8, !tbaa !20
  call void @llvm.lifetime.end.p0(i64 8, ptr %83) #7
  call void @llvm.lifetime.start.p0(i64 16, ptr %84) #7
  call void @llvm.lifetime.start.p0(i64 16, ptr %85) #7
  call void @llvm.lifetime.start.p0(i64 16, ptr %86) #7
  %639 = load double, ptr %14, align 8, !tbaa !20
  call void @_ZN12HighsCDoubleC2Ed(ptr noundef nonnull align 8 dereferenceable(16) %86, double noundef %639)
  %640 = load double, ptr %26, align 8, !tbaa !20
  %641 = call { double, double } @_ZNK12HighsCDoublemiEd(ptr noundef nonnull align 8 dereferenceable(16) %86, double noundef %640)
  %642 = getelementptr inbounds { double, double }, ptr %85, i32 0, i32 0
  %643 = extractvalue { double, double } %641, 0
  store double %643, ptr %642, align 8
  %644 = getelementptr inbounds { double, double }, ptr %85, i32 0, i32 1
  %645 = extractvalue { double, double } %641, 1
  store double %645, ptr %644, align 8
  %646 = load double, ptr %17, align 8, !tbaa !20
  %647 = call { double, double } @_ZNK12HighsCDoubledvEd(ptr noundef nonnull align 8 dereferenceable(16) %85, double noundef %646)
  %648 = getelementptr inbounds { double, double }, ptr %84, i32 0, i32 0
  %649 = extractvalue { double, double } %647, 0
  store double %649, ptr %648, align 8
  %650 = getelementptr inbounds { double, double }, ptr %84, i32 0, i32 1
  %651 = extractvalue { double, double } %647, 1
  store double %651, ptr %650, align 8
  %652 = call noundef double @_ZNK12HighsCDoublecvdEv(ptr noundef nonnull align 8 dereferenceable(16) %84)
  store double %652, ptr %27, align 8, !tbaa !20
  call void @llvm.lifetime.end.p0(i64 16, ptr %86) #7
  call void @llvm.lifetime.end.p0(i64 16, ptr %85) #7
  call void @llvm.lifetime.end.p0(i64 16, ptr %84) #7
  br label %653

653:                                              ; preds = %636, %635
  br label %654

654:                                              ; preds = %653, %583
  br label %655

655:                                              ; preds = %654, %531
  call void @llvm.lifetime.end.p0(i64 8, ptr %46) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %45) #7
  br label %656

656:                                              ; preds = %655, %359
  br label %657

657:                                              ; preds = %656, %269
  call void @llvm.lifetime.start.p0(i64 8, ptr %87) #7
  store double 0x3D719799812DEA11, ptr %87, align 8, !tbaa !20
  call void @llvm.lifetime.start.p0(i64 8, ptr %88) #7
  call void @llvm.lifetime.start.p0(i64 16, ptr %89) #7
  call void @llvm.lifetime.start.p0(i64 16, ptr %90) #7
  call void @llvm.lifetime.start.p0(i64 16, ptr %91) #7
  %658 = load double, ptr %26, align 8, !tbaa !20
  call void @_ZN12HighsCDoubleC2Ed(ptr noundef nonnull align 8 dereferenceable(16) %91, double noundef %658)
  call void @llvm.lifetime.start.p0(i64 16, ptr %92) #7
  call void @llvm.lifetime.start.p0(i64 16, ptr %93) #7
  %659 = load double, ptr %27, align 8, !tbaa !20
  call void @_ZN12HighsCDoubleC2Ed(ptr noundef nonnull align 8 dereferenceable(16) %93, double noundef %659)
  %660 = load double, ptr %17, align 8, !tbaa !20
  %661 = call { double, double } @_ZNK12HighsCDoublemlEd(ptr noundef nonnull align 8 dereferenceable(16) %93, double noundef %660)
  %662 = getelementptr inbounds { double, double }, ptr %92, i32 0, i32 0
  %663 = extractvalue { double, double } %661, 0
  store double %663, ptr %662, align 8
  %664 = getelementptr inbounds { double, double }, ptr %92, i32 0, i32 1
  %665 = extractvalue { double, double } %661, 1
  store double %665, ptr %664, align 8
  %666 = call { double, double } @_ZNK12HighsCDoubleplERKS_(ptr noundef nonnull align 8 dereferenceable(16) %91, ptr noundef nonnull align 8 dereferenceable(16) %92)
  %667 = getelementptr inbounds { double, double }, ptr %90, i32 0, i32 0
  %668 = extractvalue { double, double } %666, 0
  store double %668, ptr %667, align 8
  %669 = getelementptr inbounds { double, double }, ptr %90, i32 0, i32 1
  %670 = extractvalue { double, double } %666, 1
  store double %670, ptr %669, align 8
  call void @llvm.lifetime.start.p0(i64 16, ptr %94) #7
  %671 = load double, ptr %14, align 8, !tbaa !20
  call void @_ZN12HighsCDoubleC2Ed(ptr noundef nonnull align 8 dereferenceable(16) %94, double noundef %671)
  %672 = call { double, double } @_ZNK12HighsCDoublemiERKS_(ptr noundef nonnull align 8 dereferenceable(16) %90, ptr noundef nonnull align 8 dereferenceable(16) %94)
  %673 = getelementptr inbounds { double, double }, ptr %89, i32 0, i32 0
  %674 = extractvalue { double, double } %672, 0
  store double %674, ptr %673, align 8
  %675 = getelementptr inbounds { double, double }, ptr %89, i32 0, i32 1
  %676 = extractvalue { double, double } %672, 1
  store double %676, ptr %675, align 8
  %677 = call noundef double @_ZNK12HighsCDoublecvdEv(ptr noundef nonnull align 8 dereferenceable(16) %89)
  %678 = call double @llvm.fabs.f64(double %677)
  call void @llvm.lifetime.end.p0(i64 16, ptr %94) #7
  call void @llvm.lifetime.end.p0(i64 16, ptr %93) #7
  call void @llvm.lifetime.end.p0(i64 16, ptr %92) #7
  call void @llvm.lifetime.end.p0(i64 16, ptr %91) #7
  call void @llvm.lifetime.end.p0(i64 16, ptr %90) #7
  call void @llvm.lifetime.end.p0(i64 16, ptr %89) #7
  store double %678, ptr %88, align 8, !tbaa !20
  call void @llvm.lifetime.start.p0(i64 1, ptr %95) #7
  %679 = load double, ptr %22, align 8, !tbaa !20
  %680 = load double, ptr %26, align 8, !tbaa !20
  %681 = load double, ptr %23, align 8, !tbaa !20
  %682 = call noundef zeroext i1 @"_ZZNK8presolve19HighsPostsolveStack15DuplicateColumn7undoFixERK12HighsOptionsR13HighsSolutionENK3$_1clEddd"(ptr noundef nonnull align 8 dereferenceable(8) %13, double noundef %679, double noundef %680, double noundef %681)
  br i1 %682, label %683, label %711

683:                                              ; preds = %657
  %684 = load double, ptr %24, align 8, !tbaa !20
  %685 = load double, ptr %27, align 8, !tbaa !20
  %686 = load double, ptr %25, align 8, !tbaa !20
  %687 = call noundef zeroext i1 @"_ZZNK8presolve19HighsPostsolveStack15DuplicateColumn7undoFixERK12HighsOptionsR13HighsSolutionENK3$_1clEddd"(ptr noundef nonnull align 8 dereferenceable(8) %13, double noundef %684, double noundef %685, double noundef %686)
  br i1 %687, label %688, label %711

688:                                              ; preds = %683
  %689 = load i8, ptr %18, align 1, !tbaa !22, !range !27, !noundef !28
  %690 = trunc i8 %689 to i1
  br i1 %690, label %691, label %694

691:                                              ; preds = %688
  %692 = load double, ptr %26, align 8, !tbaa !20
  %693 = call noundef zeroext i1 @"_ZZNK8presolve19HighsPostsolveStack15DuplicateColumn7undoFixERK12HighsOptionsR13HighsSolutionENK3$_0clEd"(ptr noundef nonnull align 8 dereferenceable(8) %12, double noundef %692)
  br i1 %693, label %694, label %711

694:                                              ; preds = %691, %688
  %695 = load i8, ptr %19, align 1, !tbaa !22, !range !27, !noundef !28
  %696 = trunc i8 %695 to i1
  br i1 %696, label %697, label %700

697:                                              ; preds = %694
  %698 = load double, ptr %27, align 8, !tbaa !20
  %699 = call noundef zeroext i1 @"_ZZNK8presolve19HighsPostsolveStack15DuplicateColumn7undoFixERK12HighsOptionsR13HighsSolutionENK3$_0clEd"(ptr noundef nonnull align 8 dereferenceable(8) %12, double noundef %698)
  br i1 %699, label %700, label %711

700:                                              ; preds = %697, %694
  %701 = load double, ptr %26, align 8, !tbaa !20
  %702 = call double @llvm.fabs.f64(double %701)
  %703 = fcmp olt double %702, 0x7FF0000000000000
  br i1 %703, label %704, label %711

704:                                              ; preds = %700
  %705 = load double, ptr %27, align 8, !tbaa !20
  %706 = call double @llvm.fabs.f64(double %705)
  %707 = fcmp olt double %706, 0x7FF0000000000000
  br i1 %707, label %708, label %711

708:                                              ; preds = %704
  %709 = load double, ptr %88, align 8, !tbaa !20
  %710 = fcmp ole double %709, 0x3D719799812DEA11
  br label %711

711:                                              ; preds = %708, %704, %700, %697, %691, %683, %657
  %712 = phi i1 [ false, %704 ], [ false, %700 ], [ false, %697 ], [ false, %691 ], [ false, %683 ], [ false, %657 ], [ %710, %708 ]
  %713 = zext i1 %712 to i8
  store i8 %713, ptr %95, align 1, !tbaa !22
  call void @llvm.lifetime.start.p0(i64 1, ptr %96) #7
  %714 = load double, ptr %22, align 8, !tbaa !20
  %715 = load double, ptr %26, align 8, !tbaa !20
  %716 = load double, ptr %23, align 8, !tbaa !20
  %717 = call noundef zeroext i1 @"_ZZNK8presolve19HighsPostsolveStack15DuplicateColumn7undoFixERK12HighsOptionsR13HighsSolutionENK3$_1clEddd"(ptr noundef nonnull align 8 dereferenceable(8) %13, double noundef %714, double noundef %715, double noundef %716)
  %718 = zext i1 %717 to i8
  store i8 %718, ptr %96, align 1, !tbaa !22
  %719 = load i8, ptr %96, align 1, !tbaa !22, !range !27, !noundef !28
  %720 = trunc i8 %719 to i1
  br i1 %720, label %722, label %721

721:                                              ; preds = %711
  br label %722

722:                                              ; preds = %721, %711
  %723 = load double, ptr %24, align 8, !tbaa !20
  %724 = load double, ptr %27, align 8, !tbaa !20
  %725 = load double, ptr %25, align 8, !tbaa !20
  %726 = call noundef zeroext i1 @"_ZZNK8presolve19HighsPostsolveStack15DuplicateColumn7undoFixERK12HighsOptionsR13HighsSolutionENK3$_1clEddd"(ptr noundef nonnull align 8 dereferenceable(8) %13, double noundef %723, double noundef %724, double noundef %725)
  %727 = zext i1 %726 to i8
  store i8 %727, ptr %96, align 1, !tbaa !22
  %728 = load i8, ptr %96, align 1, !tbaa !22, !range !27, !noundef !28
  %729 = trunc i8 %728 to i1
  br i1 %729, label %731, label %730

730:                                              ; preds = %722
  br label %731

731:                                              ; preds = %730, %722
  %732 = load i8, ptr %18, align 1, !tbaa !22, !range !27, !noundef !28
  %733 = trunc i8 %732 to i1
  br i1 %733, label %734, label %737

734:                                              ; preds = %731
  %735 = load double, ptr %26, align 8, !tbaa !20
  %736 = call noundef zeroext i1 @"_ZZNK8presolve19HighsPostsolveStack15DuplicateColumn7undoFixERK12HighsOptionsR13HighsSolutionENK3$_0clEd"(ptr noundef nonnull align 8 dereferenceable(8) %12, double noundef %735)
  br label %737

737:                                              ; preds = %734, %731
  %738 = phi i1 [ true, %731 ], [ %736, %734 ]
  %739 = zext i1 %738 to i8
  store i8 %739, ptr %96, align 1, !tbaa !22
  %740 = load i8, ptr %96, align 1, !tbaa !22, !range !27, !noundef !28
  %741 = trunc i8 %740 to i1
  br i1 %741, label %743, label %742

742:                                              ; preds = %737
  br label %743

743:                                              ; preds = %742, %737
  %744 = load i8, ptr %19, align 1, !tbaa !22, !range !27, !noundef !28
  %745 = trunc i8 %744 to i1
  br i1 %745, label %746, label %749

746:                                              ; preds = %743
  %747 = load double, ptr %27, align 8, !tbaa !20
  %748 = call noundef zeroext i1 @"_ZZNK8presolve19HighsPostsolveStack15DuplicateColumn7undoFixERK12HighsOptionsR13HighsSolutionENK3$_0clEd"(ptr noundef nonnull align 8 dereferenceable(8) %12, double noundef %747)
  br label %749

749:                                              ; preds = %746, %743
  %750 = phi i1 [ true, %743 ], [ %748, %746 ]
  %751 = zext i1 %750 to i8
  store i8 %751, ptr %96, align 1, !tbaa !22
  %752 = load i8, ptr %96, align 1, !tbaa !22, !range !27, !noundef !28
  %753 = trunc i8 %752 to i1
  br i1 %753, label %755, label %754

754:                                              ; preds = %749
  br label %755

755:                                              ; preds = %754, %749
  %756 = load double, ptr %26, align 8, !tbaa !20
  %757 = call double @llvm.fabs.f64(double %756)
  %758 = fcmp olt double %757, 0x7FF0000000000000
  %759 = zext i1 %758 to i8
  store i8 %759, ptr %96, align 1, !tbaa !22
  %760 = load i8, ptr %96, align 1, !tbaa !22, !range !27, !noundef !28
  %761 = trunc i8 %760 to i1
  br i1 %761, label %763, label %762

762:                                              ; preds = %755
  br label %763

763:                                              ; preds = %762, %755
  %764 = load double, ptr %27, align 8, !tbaa !20
  %765 = call double @llvm.fabs.f64(double %764)
  %766 = fcmp olt double %765, 0x7FF0000000000000
  %767 = zext i1 %766 to i8
  store i8 %767, ptr %96, align 1, !tbaa !22
  %768 = load i8, ptr %96, align 1, !tbaa !22, !range !27, !noundef !28
  %769 = trunc i8 %768 to i1
  br i1 %769, label %771, label %770

770:                                              ; preds = %763
  br label %771

771:                                              ; preds = %770, %763
  %772 = load double, ptr %88, align 8, !tbaa !20
  %773 = fcmp ole double %772, 0x3D719799812DEA11
  %774 = zext i1 %773 to i8
  store i8 %774, ptr %96, align 1, !tbaa !22
  %775 = load i8, ptr %96, align 1, !tbaa !22, !range !27, !noundef !28
  %776 = trunc i8 %775 to i1
  br i1 %776, label %778, label %777

777:                                              ; preds = %771
  br label %778

778:                                              ; preds = %777, %771
  %779 = load double, ptr %88, align 8, !tbaa !20
  %780 = fcmp ole double %779, 0x3D719799812DEA11
  %781 = zext i1 %780 to i8
  store i8 %781, ptr %96, align 1, !tbaa !22
  %782 = load i8, ptr %95, align 1, !tbaa !22, !range !27, !noundef !28
  %783 = trunc i8 %782 to i1
  br i1 %783, label %784, label %785

784:                                              ; preds = %778
  br label %791

785:                                              ; preds = %778
  %786 = load i8, ptr %96, align 1, !tbaa !22, !range !27, !noundef !28
  %787 = trunc i8 %786 to i1
  br i1 %787, label %788, label %789

788:                                              ; preds = %785
  br label %790

789:                                              ; preds = %785
  br label %790

790:                                              ; preds = %789, %788
  br label %791

791:                                              ; preds = %790, %784
  %792 = load i8, ptr %95, align 1, !tbaa !22, !range !27, !noundef !28
  %793 = trunc i8 %792 to i1
  br i1 %793, label %794, label %805

794:                                              ; preds = %791
  %795 = load double, ptr %26, align 8, !tbaa !20
  %796 = load ptr, ptr %9, align 8, !tbaa !5
  %797 = load i32, ptr %20, align 4, !tbaa !30
  %798 = sext i32 %797 to i64
  %799 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt6vectorIdSaIdEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %796, i64 noundef %798) #7
  store double %795, ptr %799, align 8, !tbaa !20
  %800 = load double, ptr %27, align 8, !tbaa !20
  %801 = load ptr, ptr %9, align 8, !tbaa !5
  %802 = load i32, ptr %21, align 4, !tbaa !30
  %803 = sext i32 %802 to i64
  %804 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt6vectorIdSaIdEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %801, i64 noundef %803) #7
  store double %800, ptr %804, align 8, !tbaa !20
  br label %805

805:                                              ; preds = %794, %791
  call void @llvm.lifetime.end.p0(i64 1, ptr %96) #7
  call void @llvm.lifetime.end.p0(i64 1, ptr %95) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %88) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %87) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %27) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %26) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %25) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %24) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %23) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %22) #7
  call void @llvm.lifetime.end.p0(i64 4, ptr %21) #7
  call void @llvm.lifetime.end.p0(i64 4, ptr %20) #7
  call void @llvm.lifetime.end.p0(i64 1, ptr %19) #7
  call void @llvm.lifetime.end.p0(i64 1, ptr %18) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %17) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %16) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %15) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %14) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %13) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %12) #7
  call void @llvm.lifetime.end.p0(i64 1, ptr %11) #7
  call void @llvm.lifetime.end.p0(i64 1, ptr %10) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %9) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %8) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %7) #7
  ret void
}

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

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

; Function Attrs: inlinehint mustprogress uwtable
declare hidden noundef zeroext i1 @"_ZZNK8presolve19HighsPostsolveStack15DuplicateColumn7undoFixERK12HighsOptionsR13HighsSolutionENK3$_0clEd"(ptr noundef nonnull align 8 dereferenceable(8), double noundef) #6 align 2

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

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

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

!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, !14, i64 808}
!10 = !{!"_ZTS18HighsOptionsStruct", !11, i64 8, !11, i64 40, !11, i64 72, !11, i64 104, !14, i64 136, !11, i64 144, !11, i64 176, !15, i64 208, !11, 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, !15, i64 336, !15, i64 340, !15, i64 344, !15, i64 348, !15, i64 352, !15, i64 356, !15, i64 360, !15, i64 364, !15, i64 368, !15, i64 372, !15, i64 376, !15, i64 380, !15, i64 384, !15, i64 388, !11, i64 392, !16, i64 424, !16, i64 425, !16, i64 426, !15, i64 428, !15, i64 432, !11, i64 440, !16, i64 472, !16, i64 473, !16, i64 474, !15, i64 476, !16, i64 480, !16, i64 481, !15, i64 484, !15, i64 488, !14, i64 496, !15, i64 504, !15, i64 508, !15, i64 512, !16, i64 516, !15, i64 520, !16, i64 524, !16, i64 525, !16, i64 526, !16, i64 527, !16, i64 528, !16, i64 529, !16, i64 530, !15, i64 532, !15, i64 536, !15, i64 540, !15, i64 544, !15, i64 548, !15, i64 552, !15, i64 556, !15, i64 560, !15, i64 564, !15, i64 568, !15, i64 572, !15, i64 576, !15, i64 580, !15, i64 584, !15, i64 588, !16, i64 592, !16, i64 593, !16, i64 594, !16, 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, !16, i64 688, !16, i64 689, !16, i64 690, !16, i64 691, !15, i64 692, !14, i64 696, !16, i64 704, !16, i64 705, !11, i64 712, !14, i64 744, !15, i64 752, !15, i64 756, !16, i64 760, !16, i64 761, !16, i64 762, !16, i64 763, !15, i64 764, !15, i64 768, !15, i64 772, !15, i64 776, !15, i64 780, !15, i64 784, !15, i64 788, !15, i64 792, !15, i64 796, !15, i64 800, !15, i64 804, !14, i64 808, !14, i64 816, !14, i64 824, !14, i64 832, !14, i64 840, !16, i64 848, !16, i64 849, !11, i64 856, !16, i64 888, !15, i64 892, !17, i64 896}
!11 = !{!"_ZTSNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE", !12, i64 0, !13, i64 8, !7, i64 16}
!12 = !{!"_ZTSNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE12_Alloc_hiderE", !6, i64 0}
!13 = !{!"long", !7, i64 0}
!14 = !{!"double", !7, i64 0}
!15 = !{!"int", !7, i64 0}
!16 = !{!"bool", !7, i64 0}
!17 = !{!"_ZTS15HighsLogOptions", !6, i64 0, !6, i64 8, !6, i64 16, !6, i64 24, !6, i64 32, !6, i64 40, !18, i64 48, !6, i64 80, !16, i64 88}
!18 = !{!"_ZTSSt8functionIFviRKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEPK20HighsCallbackDataOutP19HighsCallbackDataInPvEE", !19, i64 0, !6, i64 24}
!19 = !{!"_ZTSSt14_Function_base", !7, i64 0, !6, i64 16}
!20 = !{!14, !14, i64 0}
!21 = !{!10, !14, i64 280}
!22 = !{!16, !16, i64 0}
!23 = !{!24, !15, i64 40}
!24 = !{!"_ZTSN8presolve19HighsPostsolveStack15DuplicateColumnE", !14, i64 0, !14, i64 8, !14, i64 16, !14, i64 24, !14, i64 32, !15, i64 40, !15, i64 44, !16, i64 48, !16, i64 49}
!25 = !{!24, !14, i64 0}
!26 = !{!24, !16, i64 48}
!27 = !{i8 0, i8 2}
!28 = !{}
!29 = !{!24, !16, i64 49}
!30 = !{!15, !15, i64 0}
!31 = !{!24, !15, i64 44}
!32 = !{!24, !14, i64 8}
!33 = !{!24, !14, i64 16}
!34 = !{!24, !14, i64 24}
!35 = !{!24, !14, i64 32}
!36 = distinct !{!36, !37}
!37 = !{!"llvm.loop.mustprogress"}
!38 = distinct !{!38, !37}


; 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.anon.39 = type { ptr }
%class.anon.40 = type { ptr }
%class.HighsCDouble = type { double, double }

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

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

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

; Function Attrs: mustprogress uwtable
declare dso_local { double, double } @_ZNK12HighsCDoublemlEd(ptr noundef nonnull align 8 dereferenceable(16), double noundef) local_unnamed_addr #2 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 nocallback nofree nosync nounwind speculatable willreturn memory(none)
declare double @llvm.floor.f64(double) #3

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

; Function Attrs: mustprogress uwtable
define dso_local void @_ZNK8presolve19HighsPostsolveStack15DuplicateColumn7undoFixERK12HighsOptionsR13HighsSolution(ptr nocapture noundef nonnull readonly align 8 dereferenceable(56) %0, ptr nocapture noundef nonnull readonly align 8 dereferenceable(1020) %1, ptr noundef nonnull align 8 dereferenceable(104) %2) local_unnamed_addr #2 align 2 {
  %4 = alloca double, align 8
  %5 = alloca double, align 8
  %6 = alloca %class.anon.39, align 8
  %7 = alloca %class.anon.40, align 8
  %8 = alloca double, align 8
  %9 = alloca %class.HighsCDouble, align 8
  %10 = alloca %class.HighsCDouble, 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 %class.HighsCDouble, align 8
  %16 = alloca %class.HighsCDouble, align 8
  %17 = alloca %class.HighsCDouble, align 8
  %18 = alloca %class.HighsCDouble, align 8
  %19 = alloca %class.HighsCDouble, align 8
  %20 = alloca %class.HighsCDouble, align 8
  %21 = alloca %class.HighsCDouble, align 8
  %22 = alloca %class.HighsCDouble, align 8
  %23 = alloca %class.HighsCDouble, align 8
  %24 = alloca %class.HighsCDouble, align 8
  %25 = alloca %class.HighsCDouble, align 8
  %26 = alloca %class.HighsCDouble, align 8
  %27 = alloca %class.HighsCDouble, align 8
  %28 = alloca %class.HighsCDouble, align 8
  %29 = alloca %class.HighsCDouble, align 8
  %30 = alloca %class.HighsCDouble, align 8
  %31 = alloca %class.HighsCDouble, align 8
  %32 = alloca %class.HighsCDouble, align 8
  %33 = alloca %class.HighsCDouble, align 8
  %34 = alloca %class.HighsCDouble, align 8
  %35 = alloca %class.HighsCDouble, align 8
  %36 = alloca double, align 8
  %37 = alloca %class.HighsCDouble, align 8
  %38 = alloca %class.HighsCDouble, align 8
  %39 = alloca %class.HighsCDouble, align 8
  %40 = alloca %class.HighsCDouble, align 8
  %41 = alloca %class.HighsCDouble, align 8
  %42 = alloca %class.HighsCDouble, align 8
  %43 = alloca %class.HighsCDouble, align 8
  %44 = alloca %class.HighsCDouble, align 8
  %45 = alloca %class.HighsCDouble, align 8
  %46 = alloca %class.HighsCDouble, align 8
  %47 = alloca %class.HighsCDouble, align 8
  %48 = alloca %class.HighsCDouble, align 8
  %49 = alloca %class.HighsCDouble, align 8
  %50 = alloca %class.HighsCDouble, align 8
  %51 = alloca %class.HighsCDouble, align 8
  %52 = alloca double, align 8
  %53 = alloca %class.HighsCDouble, align 8
  %54 = alloca %class.HighsCDouble, align 8
  %55 = alloca %class.HighsCDouble, align 8
  %56 = alloca %class.HighsCDouble, align 8
  %57 = alloca %class.HighsCDouble, align 8
  %58 = alloca %class.HighsCDouble, align 8
  %59 = alloca %class.HighsCDouble, align 8
  %60 = alloca %class.HighsCDouble, align 8
  %61 = alloca %class.HighsCDouble, align 8
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %4) #6
  %62 = getelementptr inbounds i8, ptr %1, i64 808
  %63 = load double, ptr %62, align 8, !tbaa !5
  store double %63, ptr %4, align 8, !tbaa !19
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %5) #6
  %64 = getelementptr inbounds i8, ptr %1, i64 280
  %65 = load double, ptr %64, align 8, !tbaa !20
  store double %65, ptr %5, align 8, !tbaa !19
  %66 = getelementptr inbounds i8, ptr %2, i64 8
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %6) #6
  store ptr %4, ptr %6, align 8, !tbaa !21
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %7) #6
  store ptr %5, ptr %7, align 8, !tbaa !21
  %67 = getelementptr inbounds i8, ptr %0, i64 40
  %68 = load i32, ptr %67, align 8, !tbaa !22
  %69 = sext i32 %68 to i64
  %70 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt6vectorIdSaIdEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %66, i64 noundef %69) #6
  %71 = load double, ptr %70, align 8, !tbaa !19
  %72 = load double, ptr %0, align 8, !tbaa !24
  %73 = getelementptr inbounds i8, ptr %0, i64 48
  %74 = load i8, ptr %73, align 8, !tbaa !25, !range !26, !noundef !27
  %75 = trunc nuw i8 %74 to i1
  %76 = getelementptr inbounds i8, ptr %0, i64 49
  %77 = load i8, ptr %76, align 1, !tbaa !28, !range !26, !noundef !27
  %78 = trunc nuw i8 %77 to i1
  %79 = load i32, ptr %67, align 8, !tbaa !22
  %80 = getelementptr inbounds i8, ptr %0, i64 44
  %81 = load i32, ptr %80, align 4, !tbaa !29
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %8) #6
  %82 = getelementptr inbounds i8, ptr %0, i64 8
  %83 = load double, ptr %82, align 8, !tbaa !30
  br i1 %75, label %84, label %.thread220

84:                                               ; preds = %3
  %85 = load double, ptr %4, align 8, !tbaa !19
  %86 = fsub double %83, %85
  %87 = call double @llvm.ceil.f64(double %86)
  store double %87, ptr %8, align 8, !tbaa !19
  %88 = getelementptr inbounds i8, ptr %0, i64 16
  %89 = load double, ptr %88, align 8, !tbaa !31
  %90 = fadd double %85, %89
  %91 = call double @llvm.floor.f64(double %90)
  br i1 %78, label %94, label %.thread218

.thread220:                                       ; preds = %3
  store double %83, ptr %8, align 8, !tbaa !19
  %92 = getelementptr inbounds i8, ptr %0, i64 16
  %93 = load double, ptr %92, align 8, !tbaa !31
  br i1 %78, label %.thread220._crit_edge, label %.thread219

.thread220._crit_edge:                            ; preds = %.thread220
  %.pre = load double, ptr %4, align 8, !tbaa !19
  br label %94

94:                                               ; preds = %.thread220._crit_edge, %84
  %95 = phi double [ %.pre, %.thread220._crit_edge ], [ %85, %84 ]
  %96 = phi double [ %93, %.thread220._crit_edge ], [ %91, %84 ]
  %97 = phi double [ %83, %.thread220._crit_edge ], [ %87, %84 ]
  %98 = getelementptr inbounds i8, ptr %0, i64 24
  %99 = load double, ptr %98, align 8, !tbaa !32
  %100 = fsub double %99, %95
  %101 = call double @llvm.ceil.f64(double %100)
  %102 = getelementptr inbounds i8, ptr %0, i64 32
  %103 = load double, ptr %102, align 8, !tbaa !33
  %104 = fadd double %95, %103
  %.fr = freeze double %104
  %105 = call double @llvm.floor.f64(double %.fr)
  br i1 %75, label %110, label %142

.thread218:                                       ; preds = %84
  %106 = getelementptr inbounds i8, ptr %0, i64 24
  %107 = load double, ptr %106, align 8, !tbaa !32
  %108 = getelementptr inbounds i8, ptr %0, i64 32
  %109 = load double, ptr %108, align 8, !tbaa !33
  br label %110

110:                                              ; preds = %.thread218, %94
  %111 = phi double [ %91, %.thread218 ], [ %96, %94 ]
  %112 = phi double [ %87, %.thread218 ], [ %97, %94 ]
  %113 = phi double [ %109, %.thread218 ], [ %105, %94 ]
  %114 = phi double [ %107, %.thread218 ], [ %101, %94 ]
  %115 = fcmp oeq double %112, 0xFFF0000000000000
  %116 = fcmp oeq double %111, 0x7FF0000000000000
  br i1 %115, label %117, label %118

117:                                              ; preds = %110
  %. = select i1 %116, double 1.000000e+00, double -1.000000e+00
  %.209 = select i1 %116, double 1.000000e+03, double -1.000000e+03
  %.210 = select i1 %116, double 0.000000e+00, double %111
  br label %119

118:                                              ; preds = %110
  %.211 = select i1 %116, double 1.000000e+03, double %111
  br label %119

119:                                              ; preds = %118, %117
  %.0190 = phi double [ %., %117 ], [ 1.000000e+00, %118 ]
  %.0189 = phi double [ %.209, %117 ], [ %.211, %118 ]
  %.0181 = phi double [ %.210, %117 ], [ %112, %118 ]
  %120 = getelementptr inbounds i8, ptr %10, i64 8
  %121 = getelementptr inbounds i8, ptr %9, i64 8
  %122 = fcmp ule double %.0190, 0.000000e+00
  %123 = fadd double %.0189, 1.000000e-08
  %124 = fcmp uge double %.0190, 0.000000e+00
  %125 = fadd double %.0189, -1.000000e-08
  br label %126

126:                                              ; preds = %138, %119
  %.0 = phi double [ %.0181, %119 ], [ %139, %138 ]
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %9) #6
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %10) #6
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %11) #6
  call void @_ZN12HighsCDoubleC2Ed(ptr noundef nonnull align 8 dereferenceable(16) %11, double noundef %71)
  %127 = call { double, double } @_ZNK12HighsCDoublemiEd(ptr noundef nonnull align 8 dereferenceable(16) %11, double noundef %.0)
  %128 = extractvalue { double, double } %127, 0
  store double %128, ptr %10, align 8
  %129 = extractvalue { double, double } %127, 1
  store double %129, ptr %120, align 8
  %130 = call { double, double } @_ZNK12HighsCDoubledvEd(ptr noundef nonnull align 8 dereferenceable(16) %10, double noundef %72)
  %131 = extractvalue { double, double } %130, 0
  store double %131, ptr %9, align 8
  %132 = extractvalue { double, double } %130, 1
  store double %132, ptr %121, align 8
  %133 = call noundef double @_ZNK12HighsCDoublecvdEv(ptr noundef nonnull align 8 dereferenceable(16) %9)
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %11) #6
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %10) #6
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %9) #6
  %134 = call noundef zeroext i1 @"_ZZNK8presolve19HighsPostsolveStack15DuplicateColumn7undoFixERK12HighsOptionsR13HighsSolutionENK3$_1clEddd"(ptr noundef nonnull align 8 dereferenceable(8) %7, double noundef %114, double noundef %133, double noundef %113)
  br i1 %134, label %135, label %138

135:                                              ; preds = %126
  br i1 %78, label %136, label %.critedge

136:                                              ; preds = %135
  %137 = call noundef zeroext i1 @"_ZZNK8presolve19HighsPostsolveStack15DuplicateColumn7undoFixERK12HighsOptionsR13HighsSolutionENK3$_0clEd"(ptr noundef nonnull align 8 dereferenceable(8) %6, double noundef %133)
  br i1 %137, label %.critedge, label %138

138:                                              ; preds = %136, %126
  %139 = fadd double %.0190, %.0
  %140 = fcmp ult double %139, %123
  %or.cond = select i1 %122, i1 true, i1 %140
  %141 = fcmp ugt double %139, %125
  %or.cond236 = select i1 %124, i1 true, i1 %141
  %or.cond267 = select i1 %or.cond, i1 %or.cond236, i1 false
  br i1 %or.cond267, label %126, label %.critedge, !llvm.loop !34

142:                                              ; preds = %94
  %143 = fcmp oeq double %101, 0xFFF0000000000000
  %144 = fcmp oeq double %105, 0x7FF0000000000000
  br i1 %143, label %145, label %146

145:                                              ; preds = %142
  br i1 %144, label %.split.us.preheader, label %.split.split.us.preheader

146:                                              ; preds = %142
  %147 = fadd double %105, 1.000000e-08
  %148 = select i1 %144, double 0x408F400000015799, double %147
  br label %.split.us.preheader

.split.us.preheader:                              ; preds = %145, %146
  %.0187.ph = phi double [ %101, %146 ], [ 0.000000e+00, %145 ]
  %.0185.ph = phi double [ %148, %146 ], [ 0x408F400000015799, %145 ]
  %149 = getelementptr inbounds i8, ptr %14, i64 8
  %150 = getelementptr inbounds i8, ptr %12, i64 8
  br label %.split.us

.split.us:                                        ; preds = %.split.us, %.split.us.preheader
  %.0178.us = phi double [ %.0187.ph, %.split.us.preheader ], [ %160, %.split.us ]
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %12) #6
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %13) #6
  call void @_ZN12HighsCDoubleC2Ed(ptr noundef nonnull align 8 dereferenceable(16) %13, double noundef %71)
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %14) #6
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %15) #6
  call void @_ZN12HighsCDoubleC2Ed(ptr noundef nonnull align 8 dereferenceable(16) %15, double noundef %.0178.us)
  %151 = call { double, double } @_ZNK12HighsCDoublemlEd(ptr noundef nonnull align 8 dereferenceable(16) %15, double noundef %72)
  %152 = extractvalue { double, double } %151, 0
  store double %152, ptr %14, align 8
  %153 = extractvalue { double, double } %151, 1
  store double %153, ptr %149, align 8
  %154 = call { double, double } @_ZNK12HighsCDoublemiERKS_(ptr noundef nonnull align 8 dereferenceable(16) %13, ptr noundef nonnull align 8 dereferenceable(16) %14)
  %155 = extractvalue { double, double } %154, 0
  store double %155, ptr %12, align 8
  %156 = extractvalue { double, double } %154, 1
  store double %156, ptr %150, align 8
  %157 = call noundef double @_ZNK12HighsCDoublecvdEv(ptr noundef nonnull align 8 dereferenceable(16) %12)
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %15) #6
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %14) #6
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %13) #6
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %12) #6
  %158 = load double, ptr %8, align 8, !tbaa !19
  %159 = call noundef zeroext i1 @"_ZZNK8presolve19HighsPostsolveStack15DuplicateColumn7undoFixERK12HighsOptionsR13HighsSolutionENK3$_1clEddd"(ptr noundef nonnull align 8 dereferenceable(8) %7, double noundef %158, double noundef %157, double noundef %96)
  %160 = fadd double %.0178.us, 1.000000e+00
  %161 = fcmp oge double %160, %.0185.ph
  %or.cond239.not = select i1 %159, i1 true, i1 %161
  br i1 %or.cond239.not, label %.critedge, label %.split.us, !llvm.loop !36

.split.split.us.preheader:                        ; preds = %145
  %162 = getelementptr inbounds i8, ptr %14, i64 8
  %163 = getelementptr inbounds i8, ptr %12, i64 8
  br label %.split.split.us

.split.split.us:                                  ; preds = %.split.split.us, %.split.split.us.preheader
  %.0178.us226 = phi double [ %105, %.split.split.us.preheader ], [ %173, %.split.split.us ]
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %12) #6
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %13) #6
  call void @_ZN12HighsCDoubleC2Ed(ptr noundef nonnull align 8 dereferenceable(16) %13, double noundef %71)
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %14) #6
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %15) #6
  call void @_ZN12HighsCDoubleC2Ed(ptr noundef nonnull align 8 dereferenceable(16) %15, double noundef %.0178.us226)
  %164 = call { double, double } @_ZNK12HighsCDoublemlEd(ptr noundef nonnull align 8 dereferenceable(16) %15, double noundef %72)
  %165 = extractvalue { double, double } %164, 0
  store double %165, ptr %14, align 8
  %166 = extractvalue { double, double } %164, 1
  store double %166, ptr %162, align 8
  %167 = call { double, double } @_ZNK12HighsCDoublemiERKS_(ptr noundef nonnull align 8 dereferenceable(16) %13, ptr noundef nonnull align 8 dereferenceable(16) %14)
  %168 = extractvalue { double, double } %167, 0
  store double %168, ptr %12, align 8
  %169 = extractvalue { double, double } %167, 1
  store double %169, ptr %163, align 8
  %170 = call noundef double @_ZNK12HighsCDoublecvdEv(ptr noundef nonnull align 8 dereferenceable(16) %12)
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %15) #6
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %14) #6
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %13) #6
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %12) #6
  %171 = load double, ptr %8, align 8, !tbaa !19
  %172 = call noundef zeroext i1 @"_ZZNK8presolve19HighsPostsolveStack15DuplicateColumn7undoFixERK12HighsOptionsR13HighsSolutionENK3$_1clEddd"(ptr noundef nonnull align 8 dereferenceable(8) %7, double noundef %171, double noundef %170, double noundef %96)
  %173 = fadd double %.0178.us226, -1.000000e+00
  %174 = fcmp ole double %173, 0xC08F400000015799
  %or.cond247.not = select i1 %172, i1 true, i1 %174
  br i1 %or.cond247.not, label %.critedge, label %.split.split.us, !llvm.loop !36

.thread219:                                       ; preds = %.thread220
  %175 = getelementptr inbounds i8, ptr %0, i64 24
  %176 = load double, ptr %175, align 8, !tbaa !32
  %177 = getelementptr inbounds i8, ptr %0, i64 32
  %178 = load double, ptr %177, align 8, !tbaa !33
  %179 = fcmp oeq double %176, 0xFFF0000000000000
  br i1 %179, label %180, label %183

180:                                              ; preds = %.thread219
  %181 = fcmp ogt double %72, 0.000000e+00
  %182 = select i1 %181, double 0x7FF0000000000000, double 0xFFF0000000000000
  br label %193

183:                                              ; preds = %.thread219
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %16) #6
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %17) #6
  call void @_ZN12HighsCDoubleC2Ed(ptr noundef nonnull align 8 dereferenceable(16) %17, double noundef %71)
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %18) #6
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %19) #6
  call void @_ZN12HighsCDoubleC2Ed(ptr noundef nonnull align 8 dereferenceable(16) %19, double noundef %176)
  %184 = call { double, double } @_ZNK12HighsCDoublemlEd(ptr noundef nonnull align 8 dereferenceable(16) %19, double noundef %72)
  %185 = extractvalue { double, double } %184, 0
  store double %185, ptr %18, align 8
  %186 = getelementptr inbounds i8, ptr %18, i64 8
  %187 = extractvalue { double, double } %184, 1
  store double %187, ptr %186, align 8
  %188 = call { double, double } @_ZNK12HighsCDoublemiERKS_(ptr noundef nonnull align 8 dereferenceable(16) %17, ptr noundef nonnull align 8 dereferenceable(16) %18)
  %189 = extractvalue { double, double } %188, 0
  store double %189, ptr %16, align 8
  %190 = getelementptr inbounds i8, ptr %16, i64 8
  %191 = extractvalue { double, double } %188, 1
  store double %191, ptr %190, align 8
  %192 = call noundef double @_ZNK12HighsCDoublecvdEv(ptr noundef nonnull align 8 dereferenceable(16) %16)
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %19) #6
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %18) #6
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %17) #6
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %16) #6
  br label %193

193:                                              ; preds = %183, %180
  %.0183 = phi double [ %182, %180 ], [ %192, %183 ]
  %194 = fcmp oeq double %178, 0x7FF0000000000000
  br i1 %194, label %195, label %198

195:                                              ; preds = %193
  %196 = fcmp ogt double %72, 0.000000e+00
  %197 = select i1 %196, double 0xFFF0000000000000, double 0x7FF0000000000000
  br label %208

198:                                              ; preds = %193
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %20) #6
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %21) #6
  call void @_ZN12HighsCDoubleC2Ed(ptr noundef nonnull align 8 dereferenceable(16) %21, double noundef %71)
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %22) #6
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %23) #6
  call void @_ZN12HighsCDoubleC2Ed(ptr noundef nonnull align 8 dereferenceable(16) %23, double noundef %178)
  %199 = call { double, double } @_ZNK12HighsCDoublemlEd(ptr noundef nonnull align 8 dereferenceable(16) %23, double noundef %72)
  %200 = extractvalue { double, double } %199, 0
  store double %200, ptr %22, align 8
  %201 = getelementptr inbounds i8, ptr %22, i64 8
  %202 = extractvalue { double, double } %199, 1
  store double %202, ptr %201, align 8
  %203 = call { double, double } @_ZNK12HighsCDoublemiERKS_(ptr noundef nonnull align 8 dereferenceable(16) %21, ptr noundef nonnull align 8 dereferenceable(16) %22)
  %204 = extractvalue { double, double } %203, 0
  store double %204, ptr %20, align 8
  %205 = getelementptr inbounds i8, ptr %20, i64 8
  %206 = extractvalue { double, double } %203, 1
  store double %206, ptr %205, align 8
  %207 = call noundef double @_ZNK12HighsCDoublecvdEv(ptr noundef nonnull align 8 dereferenceable(16) %20)
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %23) #6
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %22) #6
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %21) #6
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %20) #6
  br label %208

208:                                              ; preds = %198, %195
  %.0182 = phi double [ %197, %195 ], [ %207, %198 ]
  %209 = fcmp ogt double %72, 0.000000e+00
  br i1 %209, label %210, label %284

210:                                              ; preds = %208
  %211 = fcmp ueq double %178, 0x7FF0000000000000
  br i1 %211, label %242, label %212

212:                                              ; preds = %210
  %213 = load double, ptr %8, align 8, !tbaa !19
  %214 = load double, ptr %5, align 8, !tbaa !19
  %215 = fsub double %213, %214
  %216 = fcmp olt double %.0182, %215
  br i1 %216, label %217, label %.critedge

217:                                              ; preds = %212
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %24) #6
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %25) #6
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %26) #6
  call void @_ZN12HighsCDoubleC2Ed(ptr noundef nonnull align 8 dereferenceable(16) %26, double noundef %71)
  %218 = call { double, double } @_ZNK12HighsCDoublemiEd(ptr noundef nonnull align 8 dereferenceable(16) %26, double noundef %213)
  %219 = extractvalue { double, double } %218, 0
  store double %219, ptr %25, align 8
  %220 = getelementptr inbounds i8, ptr %25, i64 8
  %221 = extractvalue { double, double } %218, 1
  store double %221, ptr %220, align 8
  %222 = call { double, double } @_ZNK12HighsCDoubledvEd(ptr noundef nonnull align 8 dereferenceable(16) %25, double noundef %72)
  %223 = extractvalue { double, double } %222, 0
  store double %223, ptr %24, align 8
  %224 = getelementptr inbounds i8, ptr %24, i64 8
  %225 = extractvalue { double, double } %222, 1
  store double %225, ptr %224, align 8
  %226 = call noundef double @_ZNK12HighsCDoublecvdEv(ptr noundef nonnull align 8 dereferenceable(16) %24)
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %26) #6
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %25) #6
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %24) #6
  %227 = load double, ptr %5, align 8, !tbaa !19
  %228 = fsub double %176, %227
  %229 = fcmp olt double %226, %228
  br i1 %229, label %230, label %.critedge

230:                                              ; preds = %217
  %231 = load double, ptr %8, align 8, !tbaa !19
  %232 = fsub double %231, %227
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %27) #6
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %28) #6
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %29) #6
  call void @_ZN12HighsCDoubleC2Ed(ptr noundef nonnull align 8 dereferenceable(16) %29, double noundef %71)
  %233 = call { double, double } @_ZNK12HighsCDoublemiEd(ptr noundef nonnull align 8 dereferenceable(16) %29, double noundef %232)
  %234 = extractvalue { double, double } %233, 0
  store double %234, ptr %28, align 8
  %235 = getelementptr inbounds i8, ptr %28, i64 8
  %236 = extractvalue { double, double } %233, 1
  store double %236, ptr %235, align 8
  %237 = call { double, double } @_ZNK12HighsCDoubledvEd(ptr noundef nonnull align 8 dereferenceable(16) %28, double noundef %72)
  %238 = extractvalue { double, double } %237, 0
  store double %238, ptr %27, align 8
  %239 = getelementptr inbounds i8, ptr %27, i64 8
  %240 = extractvalue { double, double } %237, 1
  store double %240, ptr %239, align 8
  %241 = call noundef double @_ZNK12HighsCDoublecvdEv(ptr noundef nonnull align 8 dereferenceable(16) %27)
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %29) #6
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %28) #6
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %27) #6
  br label %.critedge

242:                                              ; preds = %210
  %243 = fcmp ueq double %176, 0xFFF0000000000000
  br i1 %243, label %272, label %244

244:                                              ; preds = %242
  %245 = load double, ptr %5, align 8, !tbaa !19
  %246 = fadd double %93, %245
  %247 = fcmp ogt double %.0183, %246
  br i1 %247, label %248, label %.critedge

248:                                              ; preds = %244
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %30) #6
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %31) #6
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %32) #6
  call void @_ZN12HighsCDoubleC2Ed(ptr noundef nonnull align 8 dereferenceable(16) %32, double noundef %71)
  %249 = call { double, double } @_ZNK12HighsCDoublemiEd(ptr noundef nonnull align 8 dereferenceable(16) %32, double noundef %93)
  %250 = extractvalue { double, double } %249, 0
  store double %250, ptr %31, align 8
  %251 = getelementptr inbounds i8, ptr %31, i64 8
  %252 = extractvalue { double, double } %249, 1
  store double %252, ptr %251, align 8
  %253 = call { double, double } @_ZNK12HighsCDoubledvEd(ptr noundef nonnull align 8 dereferenceable(16) %31, double noundef %72)
  %254 = extractvalue { double, double } %253, 0
  store double %254, ptr %30, align 8
  %255 = getelementptr inbounds i8, ptr %30, i64 8
  %256 = extractvalue { double, double } %253, 1
  store double %256, ptr %255, align 8
  %257 = call noundef double @_ZNK12HighsCDoublecvdEv(ptr noundef nonnull align 8 dereferenceable(16) %30)
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %32) #6
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %31) #6
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %30) #6
  %258 = load double, ptr %5, align 8, !tbaa !19
  %259 = fadd double %178, %258
  %260 = fcmp ogt double %257, %259
  br i1 %260, label %261, label %.critedge

261:                                              ; preds = %248
  %262 = fadd double %93, %258
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %33) #6
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %34) #6
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %35) #6
  call void @_ZN12HighsCDoubleC2Ed(ptr noundef nonnull align 8 dereferenceable(16) %35, double noundef %71)
  %263 = call { double, double } @_ZNK12HighsCDoublemiEd(ptr noundef nonnull align 8 dereferenceable(16) %35, double noundef %262)
  %264 = extractvalue { double, double } %263, 0
  store double %264, ptr %34, align 8
  %265 = getelementptr inbounds i8, ptr %34, i64 8
  %266 = extractvalue { double, double } %263, 1
  store double %266, ptr %265, align 8
  %267 = call { double, double } @_ZNK12HighsCDoubledvEd(ptr noundef nonnull align 8 dereferenceable(16) %34, double noundef %72)
  %268 = extractvalue { double, double } %267, 0
  store double %268, ptr %33, align 8
  %269 = getelementptr inbounds i8, ptr %33, i64 8
  %270 = extractvalue { double, double } %267, 1
  store double %270, ptr %269, align 8
  %271 = call noundef double @_ZNK12HighsCDoublecvdEv(ptr noundef nonnull align 8 dereferenceable(16) %33)
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %35) #6
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %34) #6
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %33) #6
  br label %.critedge

272:                                              ; preds = %242
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %36) #6
  store double 0.000000e+00, ptr %36, align 8, !tbaa !19
  %273 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZSt3maxIdERKT_S2_S2_(ptr noundef nonnull align 8 dereferenceable(8) %36, ptr noundef nonnull align 8 dereferenceable(8) %8)
  %274 = load double, ptr %273, align 8, !tbaa !19
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %36) #6
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %37) #6
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %38) #6
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %39) #6
  call void @_ZN12HighsCDoubleC2Ed(ptr noundef nonnull align 8 dereferenceable(16) %39, double noundef %71)
  %275 = call { double, double } @_ZNK12HighsCDoublemiEd(ptr noundef nonnull align 8 dereferenceable(16) %39, double noundef %274)
  %276 = extractvalue { double, double } %275, 0
  store double %276, ptr %38, align 8
  %277 = getelementptr inbounds i8, ptr %38, i64 8
  %278 = extractvalue { double, double } %275, 1
  store double %278, ptr %277, align 8
  %279 = call { double, double } @_ZNK12HighsCDoubledvEd(ptr noundef nonnull align 8 dereferenceable(16) %38, double noundef %72)
  %280 = extractvalue { double, double } %279, 0
  store double %280, ptr %37, align 8
  %281 = getelementptr inbounds i8, ptr %37, i64 8
  %282 = extractvalue { double, double } %279, 1
  store double %282, ptr %281, align 8
  %283 = call noundef double @_ZNK12HighsCDoublecvdEv(ptr noundef nonnull align 8 dereferenceable(16) %37)
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %39) #6
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %38) #6
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %37) #6
  br label %.critedge

284:                                              ; preds = %208
  %285 = fcmp ueq double %176, 0xFFF0000000000000
  br i1 %285, label %316, label %286

286:                                              ; preds = %284
  %287 = load double, ptr %8, align 8, !tbaa !19
  %288 = load double, ptr %5, align 8, !tbaa !19
  %289 = fsub double %287, %288
  %290 = fcmp olt double %.0183, %289
  br i1 %290, label %291, label %.critedge

291:                                              ; preds = %286
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %40) #6
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %41) #6
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %42) #6
  call void @_ZN12HighsCDoubleC2Ed(ptr noundef nonnull align 8 dereferenceable(16) %42, double noundef %71)
  %292 = call { double, double } @_ZNK12HighsCDoublemiEd(ptr noundef nonnull align 8 dereferenceable(16) %42, double noundef %287)
  %293 = extractvalue { double, double } %292, 0
  store double %293, ptr %41, align 8
  %294 = getelementptr inbounds i8, ptr %41, i64 8
  %295 = extractvalue { double, double } %292, 1
  store double %295, ptr %294, align 8
  %296 = call { double, double } @_ZNK12HighsCDoubledvEd(ptr noundef nonnull align 8 dereferenceable(16) %41, double noundef %72)
  %297 = extractvalue { double, double } %296, 0
  store double %297, ptr %40, align 8
  %298 = getelementptr inbounds i8, ptr %40, i64 8
  %299 = extractvalue { double, double } %296, 1
  store double %299, ptr %298, align 8
  %300 = call noundef double @_ZNK12HighsCDoublecvdEv(ptr noundef nonnull align 8 dereferenceable(16) %40)
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %42) #6
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %41) #6
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %40) #6
  %301 = load double, ptr %5, align 8, !tbaa !19
  %302 = fadd double %178, %301
  %303 = fcmp ogt double %300, %302
  br i1 %303, label %304, label %.critedge

304:                                              ; preds = %291
  %305 = load double, ptr %8, align 8, !tbaa !19
  %306 = fsub double %305, %301
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %43) #6
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %44) #6
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %45) #6
  call void @_ZN12HighsCDoubleC2Ed(ptr noundef nonnull align 8 dereferenceable(16) %45, double noundef %71)
  %307 = call { double, double } @_ZNK12HighsCDoublemiEd(ptr noundef nonnull align 8 dereferenceable(16) %45, double noundef %306)
  %308 = extractvalue { double, double } %307, 0
  store double %308, ptr %44, align 8
  %309 = getelementptr inbounds i8, ptr %44, i64 8
  %310 = extractvalue { double, double } %307, 1
  store double %310, ptr %309, align 8
  %311 = call { double, double } @_ZNK12HighsCDoubledvEd(ptr noundef nonnull align 8 dereferenceable(16) %44, double noundef %72)
  %312 = extractvalue { double, double } %311, 0
  store double %312, ptr %43, align 8
  %313 = getelementptr inbounds i8, ptr %43, i64 8
  %314 = extractvalue { double, double } %311, 1
  store double %314, ptr %313, align 8
  %315 = call noundef double @_ZNK12HighsCDoublecvdEv(ptr noundef nonnull align 8 dereferenceable(16) %43)
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %45) #6
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %44) #6
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %43) #6
  br label %.critedge

316:                                              ; preds = %284
  %317 = fcmp ueq double %178, 0x7FF0000000000000
  br i1 %317, label %346, label %318

318:                                              ; preds = %316
  %319 = load double, ptr %5, align 8, !tbaa !19
  %320 = fadd double %93, %319
  %321 = fcmp ogt double %.0182, %320
  br i1 %321, label %322, label %.critedge

322:                                              ; preds = %318
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %46) #6
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %47) #6
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %48) #6
  call void @_ZN12HighsCDoubleC2Ed(ptr noundef nonnull align 8 dereferenceable(16) %48, double noundef %71)
  %323 = call { double, double } @_ZNK12HighsCDoublemiEd(ptr noundef nonnull align 8 dereferenceable(16) %48, double noundef %93)
  %324 = extractvalue { double, double } %323, 0
  store double %324, ptr %47, align 8
  %325 = getelementptr inbounds i8, ptr %47, i64 8
  %326 = extractvalue { double, double } %323, 1
  store double %326, ptr %325, align 8
  %327 = call { double, double } @_ZNK12HighsCDoubledvEd(ptr noundef nonnull align 8 dereferenceable(16) %47, double noundef %72)
  %328 = extractvalue { double, double } %327, 0
  store double %328, ptr %46, align 8
  %329 = getelementptr inbounds i8, ptr %46, i64 8
  %330 = extractvalue { double, double } %327, 1
  store double %330, ptr %329, align 8
  %331 = call noundef double @_ZNK12HighsCDoublecvdEv(ptr noundef nonnull align 8 dereferenceable(16) %46)
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %48) #6
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %47) #6
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %46) #6
  %332 = load double, ptr %5, align 8, !tbaa !19
  %333 = fsub double %176, %332
  %334 = fcmp olt double %331, %333
  br i1 %334, label %335, label %.critedge

335:                                              ; preds = %322
  %336 = fadd double %93, %332
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %49) #6
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %50) #6
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %51) #6
  call void @_ZN12HighsCDoubleC2Ed(ptr noundef nonnull align 8 dereferenceable(16) %51, double noundef %71)
  %337 = call { double, double } @_ZNK12HighsCDoublemiEd(ptr noundef nonnull align 8 dereferenceable(16) %51, double noundef %336)
  %338 = extractvalue { double, double } %337, 0
  store double %338, ptr %50, align 8
  %339 = getelementptr inbounds i8, ptr %50, i64 8
  %340 = extractvalue { double, double } %337, 1
  store double %340, ptr %339, align 8
  %341 = call { double, double } @_ZNK12HighsCDoubledvEd(ptr noundef nonnull align 8 dereferenceable(16) %50, double noundef %72)
  %342 = extractvalue { double, double } %341, 0
  store double %342, ptr %49, align 8
  %343 = getelementptr inbounds i8, ptr %49, i64 8
  %344 = extractvalue { double, double } %341, 1
  store double %344, ptr %343, align 8
  %345 = call noundef double @_ZNK12HighsCDoublecvdEv(ptr noundef nonnull align 8 dereferenceable(16) %49)
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %51) #6
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %50) #6
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %49) #6
  br label %.critedge

346:                                              ; preds = %316
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %52) #6
  store double 0.000000e+00, ptr %52, align 8, !tbaa !19
  %347 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZSt3maxIdERKT_S2_S2_(ptr noundef nonnull align 8 dereferenceable(8) %52, ptr noundef nonnull align 8 dereferenceable(8) %8)
  %348 = load double, ptr %347, align 8, !tbaa !19
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %52) #6
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %53) #6
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %54) #6
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %55) #6
  call void @_ZN12HighsCDoubleC2Ed(ptr noundef nonnull align 8 dereferenceable(16) %55, double noundef %71)
  %349 = call { double, double } @_ZNK12HighsCDoublemiEd(ptr noundef nonnull align 8 dereferenceable(16) %55, double noundef %348)
  %350 = extractvalue { double, double } %349, 0
  store double %350, ptr %54, align 8
  %351 = getelementptr inbounds i8, ptr %54, i64 8
  %352 = extractvalue { double, double } %349, 1
  store double %352, ptr %351, align 8
  %353 = call { double, double } @_ZNK12HighsCDoubledvEd(ptr noundef nonnull align 8 dereferenceable(16) %54, double noundef %72)
  %354 = extractvalue { double, double } %353, 0
  store double %354, ptr %53, align 8
  %355 = getelementptr inbounds i8, ptr %53, i64 8
  %356 = extractvalue { double, double } %353, 1
  store double %356, ptr %355, align 8
  %357 = call noundef double @_ZNK12HighsCDoublecvdEv(ptr noundef nonnull align 8 dereferenceable(16) %53)
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %55) #6
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %54) #6
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %53) #6
  br label %.critedge

.critedge:                                        ; preds = %.split.split.us, %.split.us, %136, %135, %138, %272, %248, %261, %244, %212, %230, %217, %346, %322, %335, %318, %286, %304, %291
  %358 = phi double [ %93, %230 ], [ %93, %217 ], [ %93, %212 ], [ %93, %261 ], [ %93, %248 ], [ %93, %244 ], [ %93, %272 ], [ %93, %304 ], [ %93, %291 ], [ %93, %286 ], [ %93, %335 ], [ %93, %322 ], [ %93, %318 ], [ %93, %346 ], [ %111, %138 ], [ %111, %135 ], [ %111, %136 ], [ %96, %.split.us ], [ %96, %.split.split.us ]
  %359 = phi double [ %178, %230 ], [ %178, %217 ], [ %178, %212 ], [ %178, %261 ], [ %178, %248 ], [ %178, %244 ], [ %178, %272 ], [ %178, %304 ], [ %178, %291 ], [ %178, %286 ], [ %178, %335 ], [ %178, %322 ], [ %178, %318 ], [ %178, %346 ], [ %113, %138 ], [ %113, %135 ], [ %113, %136 ], [ %105, %.split.us ], [ %105, %.split.split.us ]
  %360 = phi double [ %176, %230 ], [ %176, %217 ], [ %176, %212 ], [ %176, %261 ], [ %176, %248 ], [ %176, %244 ], [ %176, %272 ], [ %176, %304 ], [ %176, %291 ], [ %176, %286 ], [ %176, %335 ], [ %176, %322 ], [ %176, %318 ], [ %176, %346 ], [ %114, %138 ], [ %114, %135 ], [ %114, %136 ], [ %101, %.split.us ], [ %101, %.split.split.us ]
  %.2180 = phi double [ %241, %230 ], [ %226, %217 ], [ %178, %212 ], [ %271, %261 ], [ %257, %248 ], [ %176, %244 ], [ %283, %272 ], [ %315, %304 ], [ %300, %291 ], [ %176, %286 ], [ %345, %335 ], [ %331, %322 ], [ %178, %318 ], [ %357, %346 ], [ %133, %138 ], [ %133, %135 ], [ %133, %136 ], [ %.0178.us, %.split.us ], [ %.0178.us226, %.split.split.us ]
  %.2 = phi double [ %232, %230 ], [ %213, %217 ], [ %.0182, %212 ], [ %262, %261 ], [ %93, %248 ], [ %.0183, %244 ], [ %274, %272 ], [ %306, %304 ], [ %287, %291 ], [ %.0183, %286 ], [ %336, %335 ], [ %93, %322 ], [ %.0182, %318 ], [ %348, %346 ], [ %.0, %138 ], [ %.0, %135 ], [ %.0, %136 ], [ %157, %.split.us ], [ %170, %.split.split.us ]
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %56) #6
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %57) #6
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %58) #6
  call void @_ZN12HighsCDoubleC2Ed(ptr noundef nonnull align 8 dereferenceable(16) %58, double noundef %.2)
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %59) #6
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %60) #6
  call void @_ZN12HighsCDoubleC2Ed(ptr noundef nonnull align 8 dereferenceable(16) %60, double noundef %.2180)
  %361 = call { double, double } @_ZNK12HighsCDoublemlEd(ptr noundef nonnull align 8 dereferenceable(16) %60, double noundef %72)
  %362 = extractvalue { double, double } %361, 0
  store double %362, ptr %59, align 8
  %363 = getelementptr inbounds i8, ptr %59, i64 8
  %364 = extractvalue { double, double } %361, 1
  store double %364, ptr %363, align 8
  %365 = call { double, double } @_ZNK12HighsCDoubleplERKS_(ptr noundef nonnull align 8 dereferenceable(16) %58, ptr noundef nonnull align 8 dereferenceable(16) %59)
  %366 = extractvalue { double, double } %365, 0
  store double %366, ptr %57, align 8
  %367 = getelementptr inbounds i8, ptr %57, i64 8
  %368 = extractvalue { double, double } %365, 1
  store double %368, ptr %367, align 8
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %61) #6
  call void @_ZN12HighsCDoubleC2Ed(ptr noundef nonnull align 8 dereferenceable(16) %61, double noundef %71)
  %369 = call { double, double } @_ZNK12HighsCDoublemiERKS_(ptr noundef nonnull align 8 dereferenceable(16) %57, ptr noundef nonnull align 8 dereferenceable(16) %61)
  %370 = extractvalue { double, double } %369, 0
  store double %370, ptr %56, align 8
  %371 = getelementptr inbounds i8, ptr %56, i64 8
  %372 = extractvalue { double, double } %369, 1
  store double %372, ptr %371, align 8
  %373 = call noundef double @_ZNK12HighsCDoublecvdEv(ptr noundef nonnull align 8 dereferenceable(16) %56)
  %374 = call double @llvm.fabs.f64(double %373)
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %61) #6
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %60) #6
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %59) #6
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %58) #6
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %57) #6
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %56) #6
  %375 = load double, ptr %8, align 8, !tbaa !19
  %376 = call noundef zeroext i1 @"_ZZNK8presolve19HighsPostsolveStack15DuplicateColumn7undoFixERK12HighsOptionsR13HighsSolutionENK3$_1clEddd"(ptr noundef nonnull align 8 dereferenceable(8) %7, double noundef %375, double noundef %.2, double noundef %358)
  br i1 %376, label %377, label %393

377:                                              ; preds = %.critedge
  %378 = call noundef zeroext i1 @"_ZZNK8presolve19HighsPostsolveStack15DuplicateColumn7undoFixERK12HighsOptionsR13HighsSolutionENK3$_1clEddd"(ptr noundef nonnull align 8 dereferenceable(8) %7, double noundef %360, double noundef %.2180, double noundef %359)
  br i1 %378, label %379, label %393

379:                                              ; preds = %377
  br i1 %75, label %380, label %382

380:                                              ; preds = %379
  %381 = call noundef zeroext i1 @"_ZZNK8presolve19HighsPostsolveStack15DuplicateColumn7undoFixERK12HighsOptionsR13HighsSolutionENK3$_0clEd"(ptr noundef nonnull align 8 dereferenceable(8) %6, double noundef %.2)
  br i1 %381, label %382, label %393

382:                                              ; preds = %380, %379
  br i1 %78, label %383, label %387

383:                                              ; preds = %382
  %384 = call noundef zeroext i1 @"_ZZNK8presolve19HighsPostsolveStack15DuplicateColumn7undoFixERK12HighsOptionsR13HighsSolutionENK3$_0clEd"(ptr noundef nonnull align 8 dereferenceable(8) %6, double noundef %.2180)
  %385 = call double @llvm.fabs.f64(double %.2)
  %386 = fcmp one double %385, 0x7FF0000000000000
  %or.cond.not = and i1 %386, %384
  br i1 %or.cond.not, label %388, label %393

387:                                              ; preds = %382
  %.old = call double @llvm.fabs.f64(double %.2)
  %.old216 = fcmp ueq double %.old, 0x7FF0000000000000
  br i1 %.old216, label %393, label %388

388:                                              ; preds = %383, %387
  %389 = call double @llvm.fabs.f64(double %.2180)
  %390 = fcmp ueq double %389, 0x7FF0000000000000
  br i1 %390, label %393, label %391

391:                                              ; preds = %388
  %392 = fcmp ole double %374, 0x3D719799812DEA11
  br label %393

393:                                              ; preds = %391, %388, %387, %383, %380, %377, %.critedge
  %394 = phi i1 [ false, %388 ], [ false, %387 ], [ false, %383 ], [ false, %380 ], [ false, %377 ], [ false, %.critedge ], [ %392, %391 ]
  %395 = load double, ptr %8, align 8, !tbaa !19
  %396 = call noundef zeroext i1 @"_ZZNK8presolve19HighsPostsolveStack15DuplicateColumn7undoFixERK12HighsOptionsR13HighsSolutionENK3$_1clEddd"(ptr noundef nonnull align 8 dereferenceable(8) %7, double noundef %395, double noundef %.2, double noundef %358)
  %397 = call noundef zeroext i1 @"_ZZNK8presolve19HighsPostsolveStack15DuplicateColumn7undoFixERK12HighsOptionsR13HighsSolutionENK3$_1clEddd"(ptr noundef nonnull align 8 dereferenceable(8) %7, double noundef %360, double noundef %.2180, double noundef %359)
  br i1 %75, label %398, label %400

398:                                              ; preds = %393
  %399 = call noundef zeroext i1 @"_ZZNK8presolve19HighsPostsolveStack15DuplicateColumn7undoFixERK12HighsOptionsR13HighsSolutionENK3$_0clEd"(ptr noundef nonnull align 8 dereferenceable(8) %6, double noundef %.2)
  br label %400

400:                                              ; preds = %398, %393
  br i1 %78, label %401, label %403

401:                                              ; preds = %400
  %402 = call noundef zeroext i1 @"_ZZNK8presolve19HighsPostsolveStack15DuplicateColumn7undoFixERK12HighsOptionsR13HighsSolutionENK3$_0clEd"(ptr noundef nonnull align 8 dereferenceable(8) %6, double noundef %.2180)
  br label %403

403:                                              ; preds = %401, %400
  br i1 %394, label %404, label %409

404:                                              ; preds = %403
  %405 = sext i32 %79 to i64
  %406 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt6vectorIdSaIdEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %66, i64 noundef %405) #6
  store double %.2, ptr %406, align 8, !tbaa !19
  %407 = sext i32 %81 to i64
  %408 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt6vectorIdSaIdEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %66, i64 noundef %407) #6
  store double %.2180, ptr %408, align 8, !tbaa !19
  br label %409

409:                                              ; preds = %404, %403
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %8) #6
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %7) #6
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %6) #6
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %5) #6
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %4) #6
  ret void
}

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

; Function Attrs: inlinehint mustprogress nounwind uwtable
declare hidden noundef zeroext i1 @"_ZZNK8presolve19HighsPostsolveStack15DuplicateColumn7undoFixERK12HighsOptionsR13HighsSolutionENK3$_1clEddd"(ptr noundef nonnull align 8 dereferenceable(8), double noundef, double noundef, double noundef) local_unnamed_addr #4 align 2

; Function Attrs: inlinehint mustprogress uwtable
declare hidden noundef zeroext i1 @"_ZZNK8presolve19HighsPostsolveStack15DuplicateColumn7undoFixERK12HighsOptionsR13HighsSolutionENK3$_0clEd"(ptr noundef nonnull align 8 dereferenceable(8), double noundef) local_unnamed_addr #5 align 2

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

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

; Function Attrs: mustprogress nounwind uwtable
declare dso_local { double, double } @_ZNK12HighsCDoubleplERKS_(ptr noundef nonnull align 8 dereferenceable(16), ptr noundef nonnull align 8 dereferenceable(16)) 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 = { 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 #3 = { mustprogress nocallback nofree nosync nounwind speculatable willreturn memory(none) }
attributes #4 = { 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 #5 = { inlinehint mustprogress uwtable "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }
attributes #6 = { 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, !13, i64 808}
!6 = !{!"_ZTS18HighsOptionsStruct", !7, i64 8, !7, i64 40, !7, i64 72, !7, i64 104, !13, i64 136, !7, i64 144, !7, i64 176, !14, i64 208, !7, i64 216, !13, i64 248, !13, i64 256, !13, i64 264, !13, i64 272, !13, i64 280, !13, i64 288, !13, i64 296, !13, i64 304, !13, i64 312, !13, i64 320, !13, i64 328, !14, i64 336, !14, i64 340, !14, i64 344, !14, i64 348, !14, i64 352, !14, i64 356, !14, i64 360, !14, i64 364, !14, i64 368, !14, i64 372, !14, i64 376, !14, i64 380, !14, i64 384, !14, i64 388, !7, i64 392, !15, i64 424, !15, i64 425, !15, i64 426, !14, i64 428, !14, i64 432, !7, i64 440, !15, i64 472, !15, i64 473, !15, i64 474, !14, i64 476, !15, i64 480, !15, i64 481, !14, i64 484, !14, i64 488, !13, i64 496, !14, i64 504, !14, i64 508, !14, i64 512, !15, i64 516, !14, i64 520, !15, i64 524, !15, i64 525, !15, i64 526, !15, i64 527, !15, i64 528, !15, i64 529, !15, i64 530, !14, i64 532, !14, i64 536, !14, i64 540, !14, i64 544, !14, i64 548, !14, i64 552, !14, i64 556, !14, i64 560, !14, i64 564, !14, i64 568, !14, i64 572, !14, i64 576, !14, i64 580, !14, i64 584, !14, i64 588, !15, i64 592, !15, i64 593, !15, i64 594, !15, i64 595, !13, i64 600, !13, i64 608, !13, i64 616, !13, i64 624, !13, i64 632, !13, i64 640, !13, i64 648, !13, i64 656, !13, i64 664, !13, i64 672, !13, i64 680, !15, i64 688, !15, i64 689, !15, i64 690, !15, i64 691, !14, i64 692, !13, i64 696, !15, i64 704, !15, i64 705, !7, i64 712, !13, i64 744, !14, i64 752, !14, i64 756, !15, i64 760, !15, i64 761, !15, i64 762, !15, i64 763, !14, i64 764, !14, i64 768, !14, i64 772, !14, i64 776, !14, i64 780, !14, i64 784, !14, i64 788, !14, i64 792, !14, i64 796, !14, i64 800, !14, i64 804, !13, i64 808, !13, i64 816, !13, i64 824, !13, i64 832, !13, i64 840, !15, i64 848, !15, i64 849, !7, i64 856, !15, i64 888, !14, i64 892, !16, i64 896}
!7 = !{!"_ZTSNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE", !8, i64 0, !12, i64 8, !10, i64 16}
!8 = !{!"_ZTSNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE12_Alloc_hiderE", !9, i64 0}
!9 = !{!"any pointer", !10, i64 0}
!10 = !{!"omnipotent char", !11, i64 0}
!11 = !{!"Simple C++ TBAA"}
!12 = !{!"long", !10, i64 0}
!13 = !{!"double", !10, i64 0}
!14 = !{!"int", !10, i64 0}
!15 = !{!"bool", !10, i64 0}
!16 = !{!"_ZTS15HighsLogOptions", !9, i64 0, !9, i64 8, !9, i64 16, !9, i64 24, !9, i64 32, !9, i64 40, !17, i64 48, !9, i64 80, !15, i64 88}
!17 = !{!"_ZTSSt8functionIFviRKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEPK20HighsCallbackDataOutP19HighsCallbackDataInPvEE", !18, i64 0, !9, i64 24}
!18 = !{!"_ZTSSt14_Function_base", !10, i64 0, !9, i64 16}
!19 = !{!13, !13, i64 0}
!20 = !{!6, !13, i64 280}
!21 = !{!9, !9, i64 0}
!22 = !{!23, !14, i64 40}
!23 = !{!"_ZTSN8presolve19HighsPostsolveStack15DuplicateColumnE", !13, i64 0, !13, i64 8, !13, i64 16, !13, i64 24, !13, i64 32, !14, i64 40, !14, i64 44, !15, i64 48, !15, i64 49}
!24 = !{!23, !13, i64 0}
!25 = !{!23, !15, i64 48}
!26 = !{i8 0, i8 2}
!27 = !{}
!28 = !{!23, !15, i64 49}
!29 = !{!23, !14, i64 44}
!30 = !{!23, !13, i64 8}
!31 = !{!23, !13, i64 16}
!32 = !{!23, !13, i64 24}
!33 = !{!23, !13, i64 32}
!34 = distinct !{!34, !35}
!35 = !{!"llvm.loop.mustprogress"}
!36 = distinct !{!36, !35}


; Effective O3 passes: ADCEPass,CorrelatedValuePropagationPass,EarlyCSEPass,GVNPass,GlobalOptPass,IPSCCPPass,InferFunctionAttrsPass,InstCombinePass,InstSimplifyPass,JumpThreadingPass,LCSSAPass,LICMPass,LoopSimplifyCFGPass,LoopSimplifyPass,LoopUnrollPass,PostOrderFunctionAttrsPass,ReassociatePass,SROAPass,SimplifyCFGPass