; LLVM IR from ERGO-Code/HiGHS :: src/mip/HighsCutGeneration.ll (ZN18HighsCutGeneration31separateLiftedMixedIntegerCoverEv)

; 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.std::vector.8" = type { %"struct.std::_Vector_base.9" }
%"struct.std::_Vector_base.9" = type { %"struct.std::_Vector_base<unsigned char, std::allocator<unsigned char>>::_Vector_impl" }
%"struct.std::_Vector_base<unsigned char, std::allocator<unsigned char>>::_Vector_impl" = type { %"struct.std::_Vector_base<unsigned char, std::allocator<unsigned char>>::_Vector_impl_data" }
%"struct.std::_Vector_base<unsigned char, std::allocator<unsigned char>>::_Vector_impl_data" = type { ptr, ptr, ptr }
%"class.__gnu_cxx::__normal_iterator" = type { ptr }
%class.anon.353 = type { ptr }
%"class.std::vector.140" = type { %"struct.std::_Vector_base.141" }
%"struct.std::_Vector_base.141" = type { %"struct.std::_Vector_base<HighsCDouble, std::allocator<HighsCDouble>>::_Vector_impl" }
%"struct.std::_Vector_base<HighsCDouble, std::allocator<HighsCDouble>>::_Vector_impl" = type { %"struct.std::_Vector_base<HighsCDouble, std::allocator<HighsCDouble>>::_Vector_impl_data" }
%"struct.std::_Vector_base<HighsCDouble, std::allocator<HighsCDouble>>::_Vector_impl_data" = type { ptr, ptr, ptr }
%class.HighsCDouble = type { double, double }
%class.anon.354 = type { ptr }
%"class.__gnu_cxx::__normal_iterator.356" = type { ptr }
%"class.__gnu_cxx::__normal_iterator.355" = type { ptr }
%"class.__gnu_cxx::__normal_iterator.357" = type { ptr }
%class.anon.358 = type { ptr, ptr, ptr, ptr }
%class.anon.359 = type { ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr }
%class.HighsCutGeneration = type { ptr, ptr, %class.HighsRandom, %"class.std::vector", %class.HighsCDouble, %class.HighsCDouble, %"class.std::vector.3", %"class.std::vector.3", %"class.std::vector.8", %"class.std::vector.8", double, double, ptr, ptr, %class.HighsCDouble, i8, i8, i32, double, %"class.std::vector", %"class.std::vector.3" }
%class.HighsRandom = type { i64 }
%"class.std::vector" = type { %"struct.std::_Vector_base" }
%"struct.std::_Vector_base" = type { %"struct.std::_Vector_base<int, std::allocator<int>>::_Vector_impl" }
%"struct.std::_Vector_base<int, std::allocator<int>>::_Vector_impl" = type { %"struct.std::_Vector_base<int, std::allocator<int>>::_Vector_impl_data" }
%"struct.std::_Vector_base<int, std::allocator<int>>::_Vector_impl_data" = type { ptr, ptr, ptr }
%"class.std::vector.3" = type { %"struct.std::_Vector_base.4" }
%"struct.std::_Vector_base.4" = 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 }

@.str.52 = external hidden unnamed_addr constant [80 x i8], align 1
@.str.55 = external hidden unnamed_addr constant [18 x i8], align 1
@__PRETTY_FUNCTION__._ZN18HighsCutGeneration31separateLiftedMixedIntegerCoverEv = external hidden unnamed_addr constant [59 x i8], align 1

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

declare i32 @__gxx_personality_v0(...)

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

; 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 } @_ZNK12HighsCDoublemiERKS_(ptr noundef nonnull align 8 dereferenceable(16), ptr noundef nonnull align 8 dereferenceable(16)) #2 align 2

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

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

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

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

; Function Attrs: mustprogress uwtable
declare dso_local noundef nonnull align 8 dereferenceable(16) ptr @_ZN12HighsCDoublemIERKS_(ptr noundef nonnull align 8 dereferenceable(16), ptr noundef nonnull align 8 dereferenceable(16)) #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 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 void @_ZNSt6vectorIhSaIhEE6resizeEm(ptr noundef nonnull align 8 dereferenceable(24), i64 noundef) #2 align 2

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

; Function Attrs: mustprogress uwtable
define dso_local noundef zeroext i1 @_ZN18HighsCutGeneration31separateLiftedMixedIntegerCoverEv(ptr noundef nonnull align 8 dereferenceable(288) %0) #2 align 2 personality ptr @__gxx_personality_v0 {
  %2 = alloca i1, align 1
  %3 = alloca ptr, align 8
  %4 = alloca i32, align 4
  %5 = alloca i32, align 4
  %6 = alloca %"class.std::vector.8", align 8
  %7 = alloca ptr, align 8
  %8 = alloca i32, align 4
  %9 = alloca ptr, align 8
  %10 = alloca %"class.__gnu_cxx::__normal_iterator", align 8
  %11 = alloca %"class.__gnu_cxx::__normal_iterator", align 8
  %12 = alloca i32, align 4
  %13 = alloca %class.anon.353, align 8
  %14 = alloca %"class.__gnu_cxx::__normal_iterator", align 8
  %15 = alloca %"class.__gnu_cxx::__normal_iterator", align 8
  %16 = alloca %class.anon.353, align 8
  %17 = alloca %"class.std::vector.140", align 8
  %18 = alloca %"class.std::vector.140", align 8
  %19 = alloca %"class.std::vector.140", align 8
  %20 = alloca %class.HighsCDouble, align 8
  %21 = alloca %class.HighsCDouble, align 8
  %22 = alloca i32, align 4
  %23 = alloca i32, align 4
  %24 = alloca %class.HighsCDouble, align 8
  %25 = alloca double, align 8
  %26 = alloca %class.HighsCDouble, align 8
  %27 = alloca i32, align 4
  %28 = alloca i32, align 4
  %29 = alloca double, align 8
  %30 = alloca i8, align 1
  %31 = alloca i32, align 4
  %32 = alloca i32, align 4
  %33 = alloca i32, align 4
  %34 = alloca double, align 8
  %35 = alloca i8, align 1
  %36 = alloca double, align 8
  %37 = alloca %class.HighsCDouble, align 8
  %38 = alloca double, align 8
  %39 = alloca %class.HighsCDouble, align 8
  %40 = alloca double, 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 i32, align 4
  %46 = alloca %"class.__gnu_cxx::__normal_iterator", align 8
  %47 = alloca %"class.__gnu_cxx::__normal_iterator", align 8
  %48 = alloca %"class.__gnu_cxx::__normal_iterator", align 8
  %49 = alloca double, align 8
  %50 = alloca %class.anon.354, align 8
  %51 = alloca %"class.__gnu_cxx::__normal_iterator", align 8
  %52 = alloca %class.HighsCDouble, align 8
  %53 = alloca double, align 8
  %54 = alloca %class.HighsCDouble, align 8
  %55 = alloca %class.HighsCDouble, align 8
  %56 = alloca double, align 8
  %57 = alloca %class.HighsCDouble, align 8
  %58 = alloca %class.HighsCDouble, align 8
  %59 = alloca %"class.__gnu_cxx::__normal_iterator.356", align 8
  %60 = alloca %"class.__gnu_cxx::__normal_iterator.355", align 8
  %61 = alloca %"class.__gnu_cxx::__normal_iterator.355", align 8
  %62 = alloca %"class.__gnu_cxx::__normal_iterator.355", align 8
  %63 = alloca %"class.__gnu_cxx::__normal_iterator.357", align 8
  %64 = alloca %"class.__gnu_cxx::__normal_iterator", align 8
  %65 = alloca %"class.__gnu_cxx::__normal_iterator", align 8
  %66 = alloca %"class.__gnu_cxx::__normal_iterator", align 8
  %67 = alloca %"class.__gnu_cxx::__normal_iterator.356", align 8
  %68 = alloca %"class.__gnu_cxx::__normal_iterator.355", align 8
  %69 = alloca %"class.__gnu_cxx::__normal_iterator.355", align 8
  %70 = alloca %"class.__gnu_cxx::__normal_iterator.355", align 8
  %71 = alloca %"class.__gnu_cxx::__normal_iterator.355", align 8
  %72 = alloca %"class.__gnu_cxx::__normal_iterator.356", align 8
  %73 = alloca %"class.__gnu_cxx::__normal_iterator.355", align 8
  %74 = alloca %"class.__gnu_cxx::__normal_iterator.355", align 8
  %75 = alloca %"class.__gnu_cxx::__normal_iterator.355", align 8
  %76 = alloca %"class.__gnu_cxx::__normal_iterator.355", align 8
  %77 = alloca i32, align 4
  %78 = alloca i32, align 4
  %79 = alloca double, align 8
  %80 = alloca %class.HighsCDouble, align 8
  %81 = alloca double, align 8
  %82 = alloca %class.HighsCDouble, align 8
  %83 = alloca %class.HighsCDouble, align 8
  %84 = alloca %class.HighsCDouble, align 8
  %85 = alloca %class.HighsCDouble, align 8
  %86 = alloca %class.HighsCDouble, align 8
  %87 = alloca %class.HighsCDouble, align 8
  %88 = alloca %class.HighsCDouble, align 8
  %89 = alloca %class.HighsCDouble, align 8
  %90 = alloca i32, align 4
  %91 = alloca %class.anon.358, align 8
  %92 = alloca i64, align 8
  %93 = alloca %class.anon.359, align 8
  %94 = alloca %class.HighsCDouble, align 8
  %95 = alloca %class.HighsCDouble, align 8
  %96 = alloca %class.HighsCDouble, align 8
  %97 = alloca %class.HighsCDouble, align 8
  %98 = alloca i32, align 4
  store ptr %0, ptr %3, align 8, !tbaa !5
  %99 = load ptr, ptr %3, align 8
  %100 = getelementptr inbounds %class.HighsCutGeneration, ptr %99, i32 0, i32 15
  store i8 0, ptr %100, align 8, !tbaa !9
  %101 = getelementptr inbounds %class.HighsCutGeneration, ptr %99, i32 0, i32 16
  store i8 0, ptr %101, align 1, !tbaa !29
  call void @llvm.lifetime.start.p0(i64 4, ptr %4) #8
  %102 = getelementptr inbounds %class.HighsCutGeneration, ptr %99, i32 0, i32 3
  %103 = call noundef i64 @_ZNKSt6vectorIiSaIiEE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24) %102) #8
  %104 = trunc i64 %103 to i32
  store i32 %104, ptr %4, align 4, !tbaa !30
  call void @llvm.lifetime.start.p0(i64 4, ptr %5) #8
  store i32 -1, ptr %5, align 4, !tbaa !30
  call void @llvm.lifetime.start.p0(i64 24, ptr %6) #8
  call void @_ZNSt6vectorIhSaIhEEC2Ev(ptr noundef nonnull align 8 dereferenceable(24) %6) #8
  %105 = getelementptr inbounds %class.HighsCutGeneration, ptr %99, i32 0, i32 17
  %106 = load i32, ptr %105, align 4, !tbaa !31
  %107 = sext i32 %106 to i64
  invoke void @_ZNSt6vectorIhSaIhEE6resizeEm(ptr noundef nonnull align 8 dereferenceable(24) %6, i64 noundef %107)
          to label %108 unwind label %119

108:                                              ; preds = %1
  call void @llvm.lifetime.start.p0(i64 8, ptr %9) #8
  %109 = getelementptr inbounds %class.HighsCutGeneration, ptr %99, i32 0, i32 3
  store ptr %109, ptr %9, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %10) #8
  %110 = load ptr, ptr %9, align 8, !tbaa !5
  %111 = call ptr @_ZNSt6vectorIiSaIiEE5beginEv(ptr noundef nonnull align 8 dereferenceable(24) %110) #8
  %112 = getelementptr inbounds %"class.__gnu_cxx::__normal_iterator", ptr %10, i32 0, i32 0
  store ptr %111, ptr %112, align 8
  call void @llvm.lifetime.start.p0(i64 8, ptr %11) #8
  %113 = load ptr, ptr %9, align 8, !tbaa !5
  %114 = call ptr @_ZNSt6vectorIiSaIiEE3endEv(ptr noundef nonnull align 8 dereferenceable(24) %113) #8
  %115 = getelementptr inbounds %"class.__gnu_cxx::__normal_iterator", ptr %11, i32 0, i32 0
  store ptr %114, ptr %115, align 8
  br label %116

116:                                              ; preds = %129, %108
  %117 = call noundef zeroext i1 @_ZN9__gnu_cxxneIPiSt6vectorIiSaIiEEEEbRKNS_17__normal_iteratorIT_T0_EESA_(ptr noundef nonnull align 8 dereferenceable(8) %10, ptr noundef nonnull align 8 dereferenceable(8) %11) #8
  br i1 %117, label %123, label %118

118:                                              ; preds = %116
  call void @llvm.lifetime.end.p0(i64 8, ptr %11) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %10) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %9) #8
  br label %131

119:                                              ; preds = %1
  %120 = landingpad { ptr, i32 }
          cleanup
  %121 = extractvalue { ptr, i32 } %120, 0
  store ptr %121, ptr %7, align 8
  %122 = extractvalue { ptr, i32 } %120, 1
  store i32 %122, ptr %8, align 4
  br label %900

123:                                              ; preds = %116
  call void @llvm.lifetime.start.p0(i64 4, ptr %12) #8
  %124 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNK9__gnu_cxx17__normal_iteratorIPiSt6vectorIiSaIiEEEdeEv(ptr noundef nonnull align 8 dereferenceable(8) %10) #8
  %125 = load i32, ptr %124, align 4, !tbaa !30
  store i32 %125, ptr %12, align 4, !tbaa !30
  %126 = load i32, ptr %12, align 4, !tbaa !30
  %127 = sext i32 %126 to i64
  %128 = call noundef nonnull align 1 dereferenceable(1) ptr @_ZNSt6vectorIhSaIhEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %6, i64 noundef %127) #8
  store i8 1, ptr %128, align 1, !tbaa !32
  call void @llvm.lifetime.end.p0(i64 4, ptr %12) #8
  br label %129

129:                                              ; preds = %123
  %130 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZN9__gnu_cxx17__normal_iteratorIPiSt6vectorIiSaIiEEEppEv(ptr noundef nonnull align 8 dereferenceable(8) %10) #8
  br label %116

131:                                              ; preds = %118
  call void @llvm.lifetime.start.p0(i64 8, ptr %13) #8
  %132 = getelementptr inbounds %class.anon.353, ptr %13, i32 0, i32 0
  store ptr %99, ptr %132, align 8, !tbaa !33
  %133 = getelementptr inbounds %class.HighsCutGeneration, ptr %99, i32 0, i32 3
  %134 = call ptr @_ZNSt6vectorIiSaIiEE5beginEv(ptr noundef nonnull align 8 dereferenceable(24) %133) #8
  %135 = getelementptr inbounds %"class.__gnu_cxx::__normal_iterator", ptr %14, i32 0, i32 0
  store ptr %134, ptr %135, align 8
  %136 = getelementptr inbounds %class.HighsCutGeneration, ptr %99, i32 0, i32 3
  %137 = call ptr @_ZNSt6vectorIiSaIiEE3endEv(ptr noundef nonnull align 8 dereferenceable(24) %136) #8
  %138 = getelementptr inbounds %"class.__gnu_cxx::__normal_iterator", ptr %15, i32 0, i32 0
  store ptr %137, ptr %138, align 8
  call void @llvm.memcpy.p0.p0.i64(ptr align 8 %16, ptr align 8 %13, i64 8, i1 false), !tbaa.struct !35
  %139 = getelementptr inbounds %"class.__gnu_cxx::__normal_iterator", ptr %14, i32 0, i32 0
  %140 = load ptr, ptr %139, align 8
  %141 = getelementptr inbounds %"class.__gnu_cxx::__normal_iterator", ptr %15, i32 0, i32 0
  %142 = load ptr, ptr %141, align 8
  %143 = getelementptr inbounds %class.anon.353, ptr %16, i32 0, i32 0
  %144 = load ptr, ptr %143, align 8
  invoke void @"_Z18pdqsort_branchlessIN9__gnu_cxx17__normal_iteratorIPiSt6vectorIiSaIiEEEEZN18HighsCutGeneration31separateLiftedMixedIntegerCoverEvE3$_0EvT_S9_T0_"(ptr %140, ptr %142, ptr %144)
          to label %145 unwind label %164

145:                                              ; preds = %131
  call void @llvm.lifetime.start.p0(i64 24, ptr %17) #8
  call void @_ZNSt6vectorI12HighsCDoubleSaIS0_EEC2Ev(ptr noundef nonnull align 8 dereferenceable(24) %17) #8
  call void @llvm.lifetime.start.p0(i64 24, ptr %18) #8
  call void @_ZNSt6vectorI12HighsCDoubleSaIS0_EEC2Ev(ptr noundef nonnull align 8 dereferenceable(24) %18) #8
  call void @llvm.lifetime.start.p0(i64 24, ptr %19) #8
  call void @_ZNSt6vectorI12HighsCDoubleSaIS0_EEC2Ev(ptr noundef nonnull align 8 dereferenceable(24) %19) #8
  %146 = load i32, ptr %4, align 4, !tbaa !30
  %147 = sext i32 %146 to i64
  invoke void @_ZNSt6vectorI12HighsCDoubleSaIS0_EE6resizeEm(ptr noundef nonnull align 8 dereferenceable(24) %17, i64 noundef %147)
          to label %148 unwind label %168

148:                                              ; preds = %145
  %149 = load i32, ptr %4, align 4, !tbaa !30
  %150 = add nsw i32 %149, 1
  %151 = sext i32 %150 to i64
  invoke void @_ZNSt6vectorI12HighsCDoubleSaIS0_EE6resizeEm(ptr noundef nonnull align 8 dereferenceable(24) %18, i64 noundef %151)
          to label %152 unwind label %168

152:                                              ; preds = %148
  %153 = load i32, ptr %4, align 4, !tbaa !30
  %154 = add nsw i32 %153, 1
  %155 = sext i32 %154 to i64
  invoke void @_ZNSt6vectorI12HighsCDoubleSaIS0_EE6resizeEm(ptr noundef nonnull align 8 dereferenceable(24) %19, i64 noundef %155)
          to label %156 unwind label %168

156:                                              ; preds = %152
  call void @llvm.lifetime.start.p0(i64 16, ptr %20) #8
  invoke void @_ZN12HighsCDoubleC2Ed(ptr noundef nonnull align 8 dereferenceable(16) %20, double noundef 0.000000e+00)
          to label %157 unwind label %172

157:                                              ; preds = %156
  call void @llvm.lifetime.start.p0(i64 16, ptr %21) #8
  invoke void @_ZN12HighsCDoubleC2Ed(ptr noundef nonnull align 8 dereferenceable(16) %21, double noundef 0.000000e+00)
          to label %158 unwind label %176

158:                                              ; preds = %157
  call void @llvm.lifetime.start.p0(i64 4, ptr %22) #8
  store i32 0, ptr %22, align 4, !tbaa !30
  br label %159

159:                                              ; preds = %222, %158
  %160 = load i32, ptr %22, align 4, !tbaa !30
  %161 = load i32, ptr %4, align 4, !tbaa !30
  %162 = icmp ne i32 %160, %161
  br i1 %162, label %180, label %163

163:                                              ; preds = %159
  call void @llvm.lifetime.end.p0(i64 4, ptr %22) #8
  br label %239

164:                                              ; preds = %131
  %165 = landingpad { ptr, i32 }
          cleanup
  %166 = extractvalue { ptr, i32 } %165, 0
  store ptr %166, ptr %7, align 8
  %167 = extractvalue { ptr, i32 } %165, 1
  store i32 %167, ptr %8, align 4
  br label %899

168:                                              ; preds = %152, %148, %145
  %169 = landingpad { ptr, i32 }
          cleanup
  %170 = extractvalue { ptr, i32 } %169, 0
  store ptr %170, ptr %7, align 8
  %171 = extractvalue { ptr, i32 } %169, 1
  store i32 %171, ptr %8, align 4
  br label %898

172:                                              ; preds = %156
  %173 = landingpad { ptr, i32 }
          cleanup
  %174 = extractvalue { ptr, i32 } %173, 0
  store ptr %174, ptr %7, align 8
  %175 = extractvalue { ptr, i32 } %173, 1
  store i32 %175, ptr %8, align 4
  br label %897

176:                                              ; preds = %157
  %177 = landingpad { ptr, i32 }
          cleanup
  %178 = extractvalue { ptr, i32 } %177, 0
  store ptr %178, ptr %7, align 8
  %179 = extractvalue { ptr, i32 } %177, 1
  store i32 %179, ptr %8, align 4
  br label %896

180:                                              ; preds = %159
  call void @llvm.lifetime.start.p0(i64 4, ptr %23) #8
  %181 = getelementptr inbounds %class.HighsCutGeneration, ptr %99, i32 0, i32 3
  %182 = load i32, ptr %22, align 4, !tbaa !30
  %183 = sext i32 %182 to i64
  %184 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNSt6vectorIiSaIiEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %181, i64 noundef %183) #8
  %185 = load i32, ptr %184, align 4, !tbaa !30
  store i32 %185, ptr %23, align 4, !tbaa !30
  %186 = load i32, ptr %22, align 4, !tbaa !30
  %187 = sext i32 %186 to i64
  %188 = call noundef nonnull align 8 dereferenceable(16) ptr @_ZNSt6vectorI12HighsCDoubleSaIS0_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %18, i64 noundef %187) #8
  call void @llvm.memcpy.p0.p0.i64(ptr align 8 %188, ptr align 8 %20, i64 16, i1 false), !tbaa.struct !36
  %189 = load i32, ptr %22, align 4, !tbaa !30
  %190 = sext i32 %189 to i64
  %191 = call noundef nonnull align 8 dereferenceable(16) ptr @_ZNSt6vectorI12HighsCDoubleSaIS0_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %19, i64 noundef %190) #8
  call void @llvm.memcpy.p0.p0.i64(ptr align 8 %191, ptr align 8 %21, i64 16, i1 false), !tbaa.struct !36
  call void @llvm.lifetime.start.p0(i64 16, ptr %24) #8
  %192 = getelementptr inbounds %class.HighsCutGeneration, ptr %99, i32 0, i32 12
  %193 = load ptr, ptr %192, align 8, !tbaa !38
  %194 = load i32, ptr %23, align 4, !tbaa !30
  %195 = sext i32 %194 to i64
  %196 = getelementptr inbounds double, ptr %193, i64 %195
  %197 = load double, ptr %196, align 8, !tbaa !37
  invoke void @_ZN12HighsCDoubleC2Ed(ptr noundef nonnull align 8 dereferenceable(16) %24, double noundef %197)
          to label %198 unwind label %225

198:                                              ; preds = %180
  %199 = load i32, ptr %22, align 4, !tbaa !30
  %200 = sext i32 %199 to i64
  %201 = call noundef nonnull align 8 dereferenceable(16) ptr @_ZNSt6vectorI12HighsCDoubleSaIS0_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %17, i64 noundef %200) #8
  call void @llvm.memcpy.p0.p0.i64(ptr align 8 %201, ptr align 8 %24, i64 16, i1 false), !tbaa.struct !36
  call void @llvm.lifetime.end.p0(i64 16, ptr %24) #8
  call void @llvm.lifetime.start.p0(i64 8, ptr %25) #8
  %202 = getelementptr inbounds %class.HighsCutGeneration, ptr %99, i32 0, i32 6
  %203 = load i32, ptr %23, align 4, !tbaa !30
  %204 = sext i32 %203 to i64
  %205 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt6vectorIdSaIdEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %202, i64 noundef %204) #8
  %206 = load double, ptr %205, align 8, !tbaa !37
  store double %206, ptr %25, align 8, !tbaa !37
  %207 = load double, ptr %25, align 8, !tbaa !37
  %208 = invoke noundef nonnull align 8 dereferenceable(16) ptr @_ZN12HighsCDoublepLEd(ptr noundef nonnull align 8 dereferenceable(16) %20, double noundef %207)
          to label %209 unwind label %229

209:                                              ; preds = %198
  call void @llvm.lifetime.start.p0(i64 16, ptr %26) #8
  %210 = load double, ptr %25, align 8, !tbaa !37
  %211 = load i32, ptr %22, align 4, !tbaa !30
  %212 = sext i32 %211 to i64
  %213 = call noundef nonnull align 8 dereferenceable(16) ptr @_ZNSt6vectorI12HighsCDoubleSaIS0_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %17, i64 noundef %212) #8
  %214 = invoke { double, double } @_ZmldRK12HighsCDouble(double noundef %210, ptr noundef nonnull align 8 dereferenceable(16) %213)
          to label %215 unwind label %233

215:                                              ; preds = %209
  %216 = getelementptr inbounds { double, double }, ptr %26, i32 0, i32 0
  %217 = extractvalue { double, double } %214, 0
  store double %217, ptr %216, align 8
  %218 = getelementptr inbounds { double, double }, ptr %26, i32 0, i32 1
  %219 = extractvalue { double, double } %214, 1
  store double %219, ptr %218, align 8
  %220 = invoke noundef nonnull align 8 dereferenceable(16) ptr @_ZN12HighsCDoublepLERKS_(ptr noundef nonnull align 8 dereferenceable(16) %21, ptr noundef nonnull align 8 dereferenceable(16) %26)
          to label %221 unwind label %233

221:                                              ; preds = %215
  call void @llvm.lifetime.end.p0(i64 16, ptr %26) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %25) #8
  call void @llvm.lifetime.end.p0(i64 4, ptr %23) #8
  br label %222

222:                                              ; preds = %221
  %223 = load i32, ptr %22, align 4, !tbaa !30
  %224 = add nsw i32 %223, 1
  store i32 %224, ptr %22, align 4, !tbaa !30
  br label %159, !llvm.loop !39

225:                                              ; preds = %180
  %226 = landingpad { ptr, i32 }
          cleanup
  %227 = extractvalue { ptr, i32 } %226, 0
  store ptr %227, ptr %7, align 8
  %228 = extractvalue { ptr, i32 } %226, 1
  store i32 %228, ptr %8, align 4
  call void @llvm.lifetime.end.p0(i64 16, ptr %24) #8
  br label %238

229:                                              ; preds = %198
  %230 = landingpad { ptr, i32 }
          cleanup
  %231 = extractvalue { ptr, i32 } %230, 0
  store ptr %231, ptr %7, align 8
  %232 = extractvalue { ptr, i32 } %230, 1
  store i32 %232, ptr %8, align 4
  br label %237

233:                                              ; preds = %215, %209
  %234 = landingpad { ptr, i32 }
          cleanup
  %235 = extractvalue { ptr, i32 } %234, 0
  store ptr %235, ptr %7, align 8
  %236 = extractvalue { ptr, i32 } %234, 1
  store i32 %236, ptr %8, align 4
  call void @llvm.lifetime.end.p0(i64 16, ptr %26) #8
  br label %237

237:                                              ; preds = %233, %229
  call void @llvm.lifetime.end.p0(i64 8, ptr %25) #8
  br label %238

238:                                              ; preds = %237, %225
  call void @llvm.lifetime.end.p0(i64 4, ptr %23) #8
  call void @llvm.lifetime.end.p0(i64 4, ptr %22) #8
  br label %896

239:                                              ; preds = %163
  %240 = load i32, ptr %4, align 4, !tbaa !30
  %241 = sext i32 %240 to i64
  %242 = call noundef nonnull align 8 dereferenceable(16) ptr @_ZNSt6vectorI12HighsCDoubleSaIS0_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %18, i64 noundef %241) #8
  call void @llvm.memcpy.p0.p0.i64(ptr align 8 %242, ptr align 8 %20, i64 16, i1 false), !tbaa.struct !36
  %243 = load i32, ptr %4, align 4, !tbaa !30
  %244 = sext i32 %243 to i64
  %245 = call noundef nonnull align 8 dereferenceable(16) ptr @_ZNSt6vectorI12HighsCDoubleSaIS0_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %19, i64 noundef %244) #8
  call void @llvm.memcpy.p0.p0.i64(ptr align 8 %245, ptr align 8 %21, i64 16, i1 false), !tbaa.struct !36
  call void @llvm.lifetime.start.p0(i64 4, ptr %27) #8
  store i32 -1, ptr %27, align 4, !tbaa !30
  call void @llvm.lifetime.start.p0(i64 4, ptr %28) #8
  store i32 -1, ptr %28, align 4, !tbaa !30
  call void @llvm.lifetime.start.p0(i64 8, ptr %29) #8
  store double 0.000000e+00, ptr %29, align 8, !tbaa !37
  call void @llvm.lifetime.start.p0(i64 1, ptr %30) #8
  store i8 1, ptr %30, align 1, !tbaa !41
  call void @llvm.lifetime.start.p0(i64 4, ptr %31) #8
  store i32 0, ptr %31, align 4, !tbaa !30
  br label %246

246:                                              ; preds = %471, %239
  %247 = load i32, ptr %31, align 4, !tbaa !30
  %248 = load i32, ptr %4, align 4, !tbaa !30
  %249 = icmp ne i32 %247, %248
  br i1 %249, label %251, label %250

250:                                              ; preds = %246
  store i32 7, ptr %32, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %31) #8
  br label %480

251:                                              ; preds = %246
  call void @llvm.lifetime.start.p0(i64 4, ptr %33) #8
  %252 = getelementptr inbounds %class.HighsCutGeneration, ptr %99, i32 0, i32 3
  %253 = load i32, ptr %31, align 4, !tbaa !30
  %254 = sext i32 %253 to i64
  %255 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNSt6vectorIiSaIiEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %252, i64 noundef %254) #8
  %256 = load i32, ptr %255, align 4, !tbaa !30
  store i32 %256, ptr %33, align 4, !tbaa !30
  call void @llvm.lifetime.start.p0(i64 8, ptr %34) #8
  %257 = getelementptr inbounds %class.HighsCutGeneration, ptr %99, i32 0, i32 6
  %258 = load i32, ptr %33, align 4, !tbaa !30
  %259 = sext i32 %258 to i64
  %260 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt6vectorIdSaIdEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %257, i64 noundef %259) #8
  %261 = load double, ptr %260, align 8, !tbaa !37
  store double %261, ptr %34, align 8, !tbaa !37
  call void @llvm.lifetime.start.p0(i64 1, ptr %35) #8
  %262 = getelementptr inbounds %class.HighsCutGeneration, ptr %99, i32 0, i32 7
  %263 = load i32, ptr %33, align 4, !tbaa !30
  %264 = sext i32 %263 to i64
  %265 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt6vectorIdSaIdEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %262, i64 noundef %264) #8
  %266 = load double, ptr %265, align 8, !tbaa !37
  %267 = load double, ptr %34, align 8, !tbaa !37
  %268 = getelementptr inbounds %class.HighsCutGeneration, ptr %99, i32 0, i32 10
  %269 = load double, ptr %268, align 8, !tbaa !42
  %270 = fsub double %267, %269
  %271 = fcmp oge double %266, %270
  %272 = zext i1 %271 to i8
  store i8 %272, ptr %35, align 1, !tbaa !41
  %273 = load i8, ptr %35, align 1, !tbaa !41, !range !43, !noundef !44
  %274 = trunc i8 %273 to i1
  br i1 %274, label %275, label %279

275:                                              ; preds = %251
  %276 = load i8, ptr %30, align 1, !tbaa !41, !range !43, !noundef !44
  %277 = trunc i8 %276 to i1
  br i1 %277, label %279, label %278

278:                                              ; preds = %275
  store i32 9, ptr %32, align 4
  br label %468

279:                                              ; preds = %275, %251
  call void @llvm.lifetime.start.p0(i64 8, ptr %36) #8
  %280 = load double, ptr %34, align 8, !tbaa !37
  %281 = getelementptr inbounds %class.HighsCutGeneration, ptr %99, i32 0, i32 12
  %282 = load ptr, ptr %281, align 8, !tbaa !38
  %283 = load i32, ptr %33, align 4, !tbaa !30
  %284 = sext i32 %283 to i64
  %285 = getelementptr inbounds double, ptr %282, i64 %284
  %286 = load double, ptr %285, align 8, !tbaa !37
  %287 = fmul double %280, %286
  store double %287, ptr %36, align 8, !tbaa !37
  call void @llvm.lifetime.start.p0(i64 16, ptr %37) #8
  %288 = load double, ptr %36, align 8, !tbaa !37
  %289 = getelementptr inbounds %class.HighsCutGeneration, ptr %99, i32 0, i32 5
  %290 = invoke { double, double } @_ZmidRK12HighsCDouble(double noundef %288, ptr noundef nonnull align 8 dereferenceable(16) %289)
          to label %291 unwind label %302

291:                                              ; preds = %279
  %292 = getelementptr inbounds { double, double }, ptr %37, i32 0, i32 0
  %293 = extractvalue { double, double } %290, 0
  store double %293, ptr %292, align 8
  %294 = getelementptr inbounds { double, double }, ptr %37, i32 0, i32 1
  %295 = extractvalue { double, double } %290, 1
  store double %295, ptr %294, align 8
  %296 = getelementptr inbounds %class.HighsCutGeneration, ptr %99, i32 0, i32 10
  %297 = load double, ptr %296, align 8, !tbaa !42
  %298 = fmul double 1.000000e+01, %297
  %299 = invoke noundef zeroext i1 @_ZNK12HighsCDoubleleEd(ptr noundef nonnull align 8 dereferenceable(16) %37, double noundef %298)
          to label %300 unwind label %302

300:                                              ; preds = %291
  br i1 %299, label %301, label %306

301:                                              ; preds = %300
  store i32 9, ptr %32, align 4
  br label %467

302:                                              ; preds = %306, %291, %279
  %303 = landingpad { ptr, i32 }
          cleanup
  %304 = extractvalue { ptr, i32 } %303, 0
  store ptr %304, ptr %7, align 8
  %305 = extractvalue { ptr, i32 } %303, 1
  store i32 %305, ptr %8, align 4
  br label %479

306:                                              ; preds = %300
  %307 = getelementptr inbounds %class.HighsCutGeneration, ptr %99, i32 0, i32 12
  %308 = load ptr, ptr %307, align 8, !tbaa !38
  %309 = load i32, ptr %33, align 4, !tbaa !30
  %310 = sext i32 %309 to i64
  %311 = getelementptr inbounds double, ptr %308, i64 %310
  %312 = load double, ptr %311, align 8, !tbaa !37
  %313 = invoke noundef double @_ZSt3absd(double noundef %312)
          to label %314 unwind label %302

314:                                              ; preds = %306
  %315 = getelementptr inbounds %class.HighsCutGeneration, ptr %99, i32 0, i32 10
  %316 = load double, ptr %315, align 8, !tbaa !42
  %317 = fmul double 1.000000e+03, %316
  %318 = fcmp olt double %313, %317
  br i1 %318, label %319, label %320

319:                                              ; preds = %314
  store i32 9, ptr %32, align 4
  br label %467

320:                                              ; preds = %314
  call void @llvm.lifetime.start.p0(i64 8, ptr %38) #8
  call void @llvm.lifetime.start.p0(i64 16, ptr %39) #8
  %321 = getelementptr inbounds %class.HighsCutGeneration, ptr %99, i32 0, i32 12
  %322 = load ptr, ptr %321, align 8, !tbaa !38
  %323 = load i32, ptr %33, align 4, !tbaa !30
  %324 = sext i32 %323 to i64
  %325 = getelementptr inbounds double, ptr %322, i64 %324
  %326 = load double, ptr %325, align 8, !tbaa !37
  %327 = invoke { double, double } @_ZNK12HighsCDoubledvEd(ptr noundef nonnull align 8 dereferenceable(16) %37, double noundef %326)
          to label %328 unwind label %341

328:                                              ; preds = %320
  %329 = getelementptr inbounds { double, double }, ptr %39, i32 0, i32 0
  %330 = extractvalue { double, double } %327, 0
  store double %330, ptr %329, align 8
  %331 = getelementptr inbounds { double, double }, ptr %39, i32 0, i32 1
  %332 = extractvalue { double, double } %327, 1
  store double %332, ptr %331, align 8
  %333 = invoke noundef double @_ZNK12HighsCDoublecvdEv(ptr noundef nonnull align 8 dereferenceable(16) %39)
          to label %334 unwind label %341

334:                                              ; preds = %328
  call void @llvm.lifetime.end.p0(i64 16, ptr %39) #8
  store double %333, ptr %38, align 8, !tbaa !37
  %335 = load double, ptr %38, align 8, !tbaa !37
  %336 = getelementptr inbounds %class.HighsCutGeneration, ptr %99, i32 0, i32 10
  %337 = load double, ptr %336, align 8, !tbaa !42
  %338 = invoke noundef zeroext i1 @_ZN13HighsIntegers10isIntegralEdd(double noundef %335, double noundef %337)
          to label %339 unwind label %345

339:                                              ; preds = %334
  br i1 %338, label %340, label %349

340:                                              ; preds = %339
  store i32 9, ptr %32, align 4
  br label %466

341:                                              ; preds = %328, %320
  %342 = landingpad { ptr, i32 }
          cleanup
  %343 = extractvalue { ptr, i32 } %342, 0
  store ptr %343, ptr %7, align 8
  %344 = extractvalue { ptr, i32 } %342, 1
  store i32 %344, ptr %8, align 4
  call void @llvm.lifetime.end.p0(i64 16, ptr %39) #8
  br label %478

345:                                              ; preds = %334
  %346 = landingpad { ptr, i32 }
          cleanup
  %347 = extractvalue { ptr, i32 } %346, 0
  store ptr %347, ptr %7, align 8
  %348 = extractvalue { ptr, i32 } %346, 1
  store i32 %348, ptr %8, align 4
  br label %478

349:                                              ; preds = %339
  call void @llvm.lifetime.start.p0(i64 8, ptr %40) #8
  %350 = load double, ptr %38, align 8, !tbaa !37
  %351 = call double @llvm.ceil.f64(double %350)
  store double %351, ptr %40, align 8, !tbaa !37
  call void @llvm.lifetime.start.p0(i64 16, ptr %41) #8
  call void @llvm.lifetime.start.p0(i64 16, ptr %42) #8
  call void @llvm.lifetime.start.p0(i64 16, ptr %43) #8
  %352 = load double, ptr %34, align 8, !tbaa !37
  invoke void @_ZN12HighsCDoubleC2Ed(ptr noundef nonnull align 8 dereferenceable(16) %43, double noundef %352)
          to label %353 unwind label %412

353:                                              ; preds = %349
  %354 = load double, ptr %40, align 8, !tbaa !37
  %355 = invoke { double, double } @_ZNK12HighsCDoublemiEd(ptr noundef nonnull align 8 dereferenceable(16) %43, double noundef %354)
          to label %356 unwind label %412

356:                                              ; preds = %353
  %357 = getelementptr inbounds { double, double }, ptr %42, i32 0, i32 0
  %358 = extractvalue { double, double } %355, 0
  store double %358, ptr %357, align 8
  %359 = getelementptr inbounds { double, double }, ptr %42, i32 0, i32 1
  %360 = extractvalue { double, double } %355, 1
  store double %360, ptr %359, align 8
  %361 = invoke { double, double } @_ZNK12HighsCDoubleplEd(ptr noundef nonnull align 8 dereferenceable(16) %42, double noundef 1.000000e+00)
          to label %362 unwind label %412

362:                                              ; preds = %356
  %363 = getelementptr inbounds { double, double }, ptr %41, i32 0, i32 0
  %364 = extractvalue { double, double } %361, 0
  store double %364, ptr %363, align 8
  %365 = getelementptr inbounds { double, double }, ptr %41, i32 0, i32 1
  %366 = extractvalue { double, double } %361, 1
  store double %366, ptr %365, align 8
  call void @llvm.lifetime.end.p0(i64 16, ptr %43) #8
  call void @llvm.lifetime.end.p0(i64 16, ptr %42) #8
  call void @llvm.lifetime.start.p0(i64 16, ptr %44) #8
  %367 = getelementptr inbounds %class.HighsCutGeneration, ptr %99, i32 0, i32 12
  %368 = load ptr, ptr %367, align 8, !tbaa !38
  %369 = load i32, ptr %33, align 4, !tbaa !30
  %370 = sext i32 %369 to i64
  %371 = getelementptr inbounds double, ptr %368, i64 %370
  %372 = load double, ptr %371, align 8, !tbaa !37
  %373 = invoke { double, double } @_ZNK12HighsCDoublemlEd(ptr noundef nonnull align 8 dereferenceable(16) %41, double noundef %372)
          to label %374 unwind label %416

374:                                              ; preds = %362
  %375 = getelementptr inbounds { double, double }, ptr %44, i32 0, i32 0
  %376 = extractvalue { double, double } %373, 0
  store double %376, ptr %375, align 8
  %377 = getelementptr inbounds { double, double }, ptr %44, i32 0, i32 1
  %378 = extractvalue { double, double } %373, 1
  store double %378, ptr %377, align 8
  call void @llvm.lifetime.start.p0(i64 4, ptr %45) #8
  call void @llvm.lifetime.start.p0(i64 8, ptr %46) #8
  %379 = getelementptr inbounds %class.HighsCutGeneration, ptr %99, i32 0, i32 3
  %380 = call ptr @_ZNSt6vectorIiSaIiEE5beginEv(ptr noundef nonnull align 8 dereferenceable(24) %379) #8
  %381 = getelementptr inbounds %"class.__gnu_cxx::__normal_iterator", ptr %47, i32 0, i32 0
  store ptr %380, ptr %381, align 8
  %382 = getelementptr inbounds %class.HighsCutGeneration, ptr %99, i32 0, i32 3
  %383 = call ptr @_ZNSt6vectorIiSaIiEE3endEv(ptr noundef nonnull align 8 dereferenceable(24) %382) #8
  %384 = getelementptr inbounds %"class.__gnu_cxx::__normal_iterator", ptr %48, i32 0, i32 0
  store ptr %383, ptr %384, align 8
  call void @llvm.lifetime.start.p0(i64 8, ptr %49) #8
  %385 = invoke noundef double @_ZNK12HighsCDoublecvdEv(ptr noundef nonnull align 8 dereferenceable(16) %44)
          to label %386 unwind label %420

386:                                              ; preds = %374
  store double %385, ptr %49, align 8, !tbaa !37
  %387 = getelementptr inbounds %class.anon.354, ptr %50, i32 0, i32 0
  store ptr %99, ptr %387, align 8, !tbaa !45
  %388 = getelementptr inbounds %"class.__gnu_cxx::__normal_iterator", ptr %47, i32 0, i32 0
  %389 = load ptr, ptr %388, align 8
  %390 = getelementptr inbounds %"class.__gnu_cxx::__normal_iterator", ptr %48, i32 0, i32 0
  %391 = load ptr, ptr %390, align 8
  %392 = getelementptr inbounds %class.anon.354, ptr %50, i32 0, i32 0
  %393 = load ptr, ptr %392, align 8
  %394 = invoke ptr @"_ZSt11upper_boundIN9__gnu_cxx17__normal_iteratorIPiSt6vectorIiSaIiEEEEdZN18HighsCutGeneration31separateLiftedMixedIntegerCoverEvE3$_1ET_S9_S9_RKT0_T1_"(ptr %389, ptr %391, ptr noundef nonnull align 8 dereferenceable(8) %49, ptr %393)
          to label %395 unwind label %420

395:                                              ; preds = %386
  %396 = getelementptr inbounds %"class.__gnu_cxx::__normal_iterator", ptr %46, i32 0, i32 0
  store ptr %394, ptr %396, align 8
  call void @llvm.lifetime.start.p0(i64 8, ptr %51) #8
  %397 = getelementptr inbounds %class.HighsCutGeneration, ptr %99, i32 0, i32 3
  %398 = call ptr @_ZNSt6vectorIiSaIiEE5beginEv(ptr noundef nonnull align 8 dereferenceable(24) %397) #8
  %399 = getelementptr inbounds %"class.__gnu_cxx::__normal_iterator", ptr %51, i32 0, i32 0
  store ptr %398, ptr %399, align 8
  %400 = call noundef i64 @_ZN9__gnu_cxxmiIPiSt6vectorIiSaIiEEEENS_17__normal_iteratorIT_T0_E15difference_typeERKS8_SB_(ptr noundef nonnull align 8 dereferenceable(8) %46, ptr noundef nonnull align 8 dereferenceable(8) %51) #8
  %401 = trunc i64 %400 to i32
  call void @llvm.lifetime.end.p0(i64 8, ptr %51) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %49) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %46) #8
  store i32 %401, ptr %45, align 4, !tbaa !30
  call void @llvm.lifetime.start.p0(i64 16, ptr %52) #8
  %402 = load i32, ptr %45, align 4, !tbaa !30
  %403 = sext i32 %402 to i64
  %404 = call noundef nonnull align 8 dereferenceable(16) ptr @_ZNSt6vectorI12HighsCDoubleSaIS0_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %19, i64 noundef %403) #8
  call void @llvm.memcpy.p0.p0.i64(ptr align 8 %52, ptr align 8 %404, i64 16, i1 false), !tbaa.struct !36
  %405 = load i32, ptr %31, align 4, !tbaa !30
  %406 = load i32, ptr %45, align 4, !tbaa !30
  %407 = icmp slt i32 %405, %406
  br i1 %407, label %408, label %428

408:                                              ; preds = %395
  %409 = load double, ptr %36, align 8, !tbaa !37
  %410 = invoke noundef nonnull align 8 dereferenceable(16) ptr @_ZN12HighsCDoublemIEd(ptr noundef nonnull align 8 dereferenceable(16) %52, double noundef %409)
          to label %411 unwind label %424

411:                                              ; preds = %408
  br label %428

412:                                              ; preds = %356, %353, %349
  %413 = landingpad { ptr, i32 }
          cleanup
  %414 = extractvalue { ptr, i32 } %413, 0
  store ptr %414, ptr %7, align 8
  %415 = extractvalue { ptr, i32 } %413, 1
  store i32 %415, ptr %8, align 4
  call void @llvm.lifetime.end.p0(i64 16, ptr %43) #8
  call void @llvm.lifetime.end.p0(i64 16, ptr %42) #8
  br label %477

416:                                              ; preds = %362
  %417 = landingpad { ptr, i32 }
          cleanup
  %418 = extractvalue { ptr, i32 } %417, 0
  store ptr %418, ptr %7, align 8
  %419 = extractvalue { ptr, i32 } %417, 1
  store i32 %419, ptr %8, align 4
  br label %476

420:                                              ; preds = %386, %374
  %421 = landingpad { ptr, i32 }
          cleanup
  %422 = extractvalue { ptr, i32 } %421, 0
  store ptr %422, ptr %7, align 8
  %423 = extractvalue { ptr, i32 } %421, 1
  store i32 %423, ptr %8, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %49) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %46) #8
  br label %475

424:                                              ; preds = %408
  %425 = landingpad { ptr, i32 }
          cleanup
  %426 = extractvalue { ptr, i32 } %425, 0
  store ptr %426, ptr %7, align 8
  %427 = extractvalue { ptr, i32 } %425, 1
  store i32 %427, ptr %8, align 4
  br label %474

428:                                              ; preds = %411, %395
  call void @llvm.lifetime.start.p0(i64 8, ptr %53) #8
  call void @llvm.lifetime.start.p0(i64 16, ptr %54) #8
  %429 = load double, ptr %40, align 8, !tbaa !37
  %430 = getelementptr inbounds %class.HighsCutGeneration, ptr %99, i32 0, i32 12
  %431 = load ptr, ptr %430, align 8, !tbaa !38
  %432 = load i32, ptr %33, align 4, !tbaa !30
  %433 = sext i32 %432 to i64
  %434 = getelementptr inbounds double, ptr %431, i64 %433
  %435 = load double, ptr %434, align 8, !tbaa !37
  %436 = fmul double %429, %435
  %437 = invoke { double, double } @_ZNK12HighsCDoubleplEd(ptr noundef nonnull align 8 dereferenceable(16) %52, double noundef %436)
          to label %438 unwind label %461

438:                                              ; preds = %428
  %439 = getelementptr inbounds { double, double }, ptr %54, i32 0, i32 0
  %440 = extractvalue { double, double } %437, 0
  store double %440, ptr %439, align 8
  %441 = getelementptr inbounds { double, double }, ptr %54, i32 0, i32 1
  %442 = extractvalue { double, double } %437, 1
  store double %442, ptr %441, align 8
  %443 = invoke noundef double @_ZNK12HighsCDoublecvdEv(ptr noundef nonnull align 8 dereferenceable(16) %54)
          to label %444 unwind label %461

444:                                              ; preds = %438
  call void @llvm.lifetime.end.p0(i64 16, ptr %54) #8
  store double %443, ptr %53, align 8, !tbaa !37
  %445 = load double, ptr %53, align 8, !tbaa !37
  %446 = load double, ptr %29, align 8, !tbaa !37
  %447 = fcmp ogt double %445, %446
  br i1 %447, label %454, label %448

448:                                              ; preds = %444
  %449 = load i8, ptr %35, align 1, !tbaa !41, !range !43, !noundef !44
  %450 = trunc i8 %449 to i1
  br i1 %450, label %465, label %451

451:                                              ; preds = %448
  %452 = load i8, ptr %30, align 1, !tbaa !41, !range !43, !noundef !44
  %453 = trunc i8 %452 to i1
  br i1 %453, label %454, label %465

454:                                              ; preds = %451, %444
  %455 = load i32, ptr %31, align 4, !tbaa !30
  store i32 %455, ptr %27, align 4, !tbaa !30
  %456 = load i32, ptr %45, align 4, !tbaa !30
  store i32 %456, ptr %28, align 4, !tbaa !30
  %457 = load double, ptr %53, align 8, !tbaa !37
  store double %457, ptr %29, align 8, !tbaa !37
  %458 = load i8, ptr %35, align 1, !tbaa !41, !range !43, !noundef !44
  %459 = trunc i8 %458 to i1
  %460 = zext i1 %459 to i8
  store i8 %460, ptr %30, align 1, !tbaa !41
  br label %465

461:                                              ; preds = %438, %428
  %462 = landingpad { ptr, i32 }
          cleanup
  %463 = extractvalue { ptr, i32 } %462, 0
  store ptr %463, ptr %7, align 8
  %464 = extractvalue { ptr, i32 } %462, 1
  store i32 %464, ptr %8, align 4
  call void @llvm.lifetime.end.p0(i64 16, ptr %54) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %53) #8
  br label %474

465:                                              ; preds = %454, %451, %448
  call void @llvm.lifetime.end.p0(i64 8, ptr %53) #8
  call void @llvm.lifetime.end.p0(i64 16, ptr %52) #8
  call void @llvm.lifetime.end.p0(i64 4, ptr %45) #8
  call void @llvm.lifetime.end.p0(i64 16, ptr %44) #8
  call void @llvm.lifetime.end.p0(i64 16, ptr %41) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %40) #8
  store i32 0, ptr %32, align 4
  br label %466

466:                                              ; preds = %465, %340
  call void @llvm.lifetime.end.p0(i64 8, ptr %38) #8
  br label %467

467:                                              ; preds = %466, %319, %301
  call void @llvm.lifetime.end.p0(i64 16, ptr %37) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %36) #8
  br label %468

468:                                              ; preds = %467, %278
  call void @llvm.lifetime.end.p0(i64 1, ptr %35) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %34) #8
  call void @llvm.lifetime.end.p0(i64 4, ptr %33) #8
  %469 = load i32, ptr %32, align 4
  switch i32 %469, label %906 [
    i32 0, label %470
    i32 9, label %471
  ]

470:                                              ; preds = %468
  br label %471

471:                                              ; preds = %470, %468
  %472 = load i32, ptr %31, align 4, !tbaa !30
  %473 = add nsw i32 %472, 1
  store i32 %473, ptr %31, align 4, !tbaa !30
  br label %246, !llvm.loop !47

474:                                              ; preds = %461, %424
  call void @llvm.lifetime.end.p0(i64 16, ptr %52) #8
  br label %475

475:                                              ; preds = %474, %420
  call void @llvm.lifetime.end.p0(i64 4, ptr %45) #8
  br label %476

476:                                              ; preds = %475, %416
  call void @llvm.lifetime.end.p0(i64 16, ptr %44) #8
  br label %477

477:                                              ; preds = %476, %412
  call void @llvm.lifetime.end.p0(i64 16, ptr %41) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %40) #8
  br label %478

478:                                              ; preds = %477, %345, %341
  call void @llvm.lifetime.end.p0(i64 8, ptr %38) #8
  br label %479

479:                                              ; preds = %478, %302
  call void @llvm.lifetime.end.p0(i64 16, ptr %37) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %36) #8
  call void @llvm.lifetime.end.p0(i64 1, ptr %35) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %34) #8
  call void @llvm.lifetime.end.p0(i64 4, ptr %33) #8
  call void @llvm.lifetime.end.p0(i64 4, ptr %31) #8
  br label %895

480:                                              ; preds = %250
  %481 = load i32, ptr %27, align 4, !tbaa !30
  %482 = icmp eq i32 %481, -1
  br i1 %482, label %483, label %484

483:                                              ; preds = %480
  store i1 false, ptr %2, align 1
  store i32 1, ptr %32, align 4
  br label %893

484:                                              ; preds = %480
  %485 = getelementptr inbounds %class.HighsCutGeneration, ptr %99, i32 0, i32 3
  %486 = load i32, ptr %27, align 4, !tbaa !30
  %487 = sext i32 %486 to i64
  %488 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNSt6vectorIiSaIiEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %485, i64 noundef %487) #8
  %489 = load i32, ptr %488, align 4, !tbaa !30
  store i32 %489, ptr %5, align 4, !tbaa !30
  call void @llvm.lifetime.start.p0(i64 16, ptr %55) #8
  %490 = getelementptr inbounds %class.HighsCutGeneration, ptr %99, i32 0, i32 12
  %491 = load ptr, ptr %490, align 8, !tbaa !38
  %492 = load i32, ptr %5, align 4, !tbaa !30
  %493 = sext i32 %492 to i64
  %494 = getelementptr inbounds double, ptr %491, i64 %493
  %495 = load double, ptr %494, align 8, !tbaa !37
  invoke void @_ZN12HighsCDoubleC2Ed(ptr noundef nonnull align 8 dereferenceable(16) %55, double noundef %495)
          to label %496 unwind label %592

496:                                              ; preds = %484
  call void @llvm.lifetime.start.p0(i64 8, ptr %56) #8
  %497 = getelementptr inbounds %class.HighsCutGeneration, ptr %99, i32 0, i32 6
  %498 = load i32, ptr %5, align 4, !tbaa !30
  %499 = sext i32 %498 to i64
  %500 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt6vectorIdSaIdEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %497, i64 noundef %499) #8
  %501 = load double, ptr %500, align 8, !tbaa !37
  store double %501, ptr %56, align 8, !tbaa !37
  call void @llvm.lifetime.start.p0(i64 16, ptr %57) #8
  %502 = load double, ptr %56, align 8, !tbaa !37
  %503 = invoke { double, double } @_ZmldRK12HighsCDouble(double noundef %502, ptr noundef nonnull align 8 dereferenceable(16) %55)
          to label %504 unwind label %596

504:                                              ; preds = %496
  %505 = getelementptr inbounds { double, double }, ptr %57, i32 0, i32 0
  %506 = extractvalue { double, double } %503, 0
  store double %506, ptr %505, align 8
  %507 = getelementptr inbounds { double, double }, ptr %57, i32 0, i32 1
  %508 = extractvalue { double, double } %503, 1
  store double %508, ptr %507, align 8
  call void @llvm.lifetime.start.p0(i64 16, ptr %58) #8
  %509 = getelementptr inbounds %class.HighsCutGeneration, ptr %99, i32 0, i32 5
  %510 = invoke { double, double } @_ZNK12HighsCDoublemiERKS_(ptr noundef nonnull align 8 dereferenceable(16) %57, ptr noundef nonnull align 8 dereferenceable(16) %509)
          to label %511 unwind label %600

511:                                              ; preds = %504
  %512 = getelementptr inbounds { double, double }, ptr %58, i32 0, i32 0
  %513 = extractvalue { double, double } %510, 0
  store double %513, ptr %512, align 8
  %514 = getelementptr inbounds { double, double }, ptr %58, i32 0, i32 1
  %515 = extractvalue { double, double } %510, 1
  store double %515, ptr %514, align 8
  %516 = load i32, ptr %28, align 4, !tbaa !30
  %517 = sext i32 %516 to i64
  invoke void @_ZNSt6vectorI12HighsCDoubleSaIS0_EE6resizeEm(ptr noundef nonnull align 8 dereferenceable(24) %17, i64 noundef %517)
          to label %518 unwind label %600

518:                                              ; preds = %511
  %519 = getelementptr inbounds %class.HighsCutGeneration, ptr %99, i32 0, i32 3
  %520 = load i32, ptr %28, align 4, !tbaa !30
  %521 = sext i32 %520 to i64
  invoke void @_ZNSt6vectorIiSaIiEE6resizeEm(ptr noundef nonnull align 8 dereferenceable(24) %519, i64 noundef %521)
          to label %522 unwind label %600

522:                                              ; preds = %518
  %523 = load i32, ptr %28, align 4, !tbaa !30
  %524 = add nsw i32 %523, 1
  %525 = sext i32 %524 to i64
  invoke void @_ZNSt6vectorI12HighsCDoubleSaIS0_EE6resizeEm(ptr noundef nonnull align 8 dereferenceable(24) %18, i64 noundef %525)
          to label %526 unwind label %600

526:                                              ; preds = %522
  %527 = load i32, ptr %28, align 4, !tbaa !30
  %528 = add nsw i32 %527, 1
  %529 = sext i32 %528 to i64
  invoke void @_ZNSt6vectorI12HighsCDoubleSaIS0_EE6resizeEm(ptr noundef nonnull align 8 dereferenceable(24) %19, i64 noundef %529)
          to label %530 unwind label %600

530:                                              ; preds = %526
  %531 = load i32, ptr %27, align 4, !tbaa !30
  %532 = load i32, ptr %28, align 4, !tbaa !30
  %533 = icmp slt i32 %531, %532
  br i1 %533, label %534, label %640

534:                                              ; preds = %530
  call void @llvm.lifetime.start.p0(i64 8, ptr %60) #8
  call void @llvm.lifetime.start.p0(i64 8, ptr %61) #8
  %535 = call ptr @_ZNSt6vectorI12HighsCDoubleSaIS0_EE5beginEv(ptr noundef nonnull align 8 dereferenceable(24) %17) #8
  %536 = getelementptr inbounds %"class.__gnu_cxx::__normal_iterator.355", ptr %61, i32 0, i32 0
  store ptr %535, ptr %536, align 8
  %537 = load i32, ptr %27, align 4, !tbaa !30
  %538 = sext i32 %537 to i64
  %539 = call ptr @_ZNK9__gnu_cxx17__normal_iteratorIP12HighsCDoubleSt6vectorIS1_SaIS1_EEEplEl(ptr noundef nonnull align 8 dereferenceable(8) %61, i64 noundef %538) #8
  %540 = getelementptr inbounds %"class.__gnu_cxx::__normal_iterator.355", ptr %60, i32 0, i32 0
  store ptr %539, ptr %540, align 8
  call void @_ZN9__gnu_cxx17__normal_iteratorIPK12HighsCDoubleSt6vectorIS1_SaIS1_EEEC2IPS1_vEERKNS0_IT_S6_EE(ptr noundef nonnull align 8 dereferenceable(8) %59, ptr noundef nonnull align 8 dereferenceable(8) %60) #8
  %541 = getelementptr inbounds %"class.__gnu_cxx::__normal_iterator.356", ptr %59, i32 0, i32 0
  %542 = load ptr, ptr %541, align 8
  %543 = invoke ptr @_ZNSt6vectorI12HighsCDoubleSaIS0_EE5eraseEN9__gnu_cxx17__normal_iteratorIPKS0_S2_EE(ptr noundef nonnull align 8 dereferenceable(24) %17, ptr %542)
          to label %544 unwind label %604

544:                                              ; preds = %534
  %545 = getelementptr inbounds %"class.__gnu_cxx::__normal_iterator.355", ptr %62, i32 0, i32 0
  store ptr %543, ptr %545, align 8
  call void @llvm.lifetime.end.p0(i64 8, ptr %61) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %60) #8
  %546 = getelementptr inbounds %class.HighsCutGeneration, ptr %99, i32 0, i32 3
  call void @llvm.lifetime.start.p0(i64 8, ptr %64) #8
  call void @llvm.lifetime.start.p0(i64 8, ptr %65) #8
  %547 = getelementptr inbounds %class.HighsCutGeneration, ptr %99, i32 0, i32 3
  %548 = call ptr @_ZNSt6vectorIiSaIiEE5beginEv(ptr noundef nonnull align 8 dereferenceable(24) %547) #8
  %549 = getelementptr inbounds %"class.__gnu_cxx::__normal_iterator", ptr %65, i32 0, i32 0
  store ptr %548, ptr %549, align 8
  %550 = load i32, ptr %27, align 4, !tbaa !30
  %551 = sext i32 %550 to i64
  %552 = call ptr @_ZNK9__gnu_cxx17__normal_iteratorIPiSt6vectorIiSaIiEEEplEl(ptr noundef nonnull align 8 dereferenceable(8) %65, i64 noundef %551) #8
  %553 = getelementptr inbounds %"class.__gnu_cxx::__normal_iterator", ptr %64, i32 0, i32 0
  store ptr %552, ptr %553, align 8
  call void @_ZN9__gnu_cxx17__normal_iteratorIPKiSt6vectorIiSaIiEEEC2IPivEERKNS0_IT_S5_EE(ptr noundef nonnull align 8 dereferenceable(8) %63, ptr noundef nonnull align 8 dereferenceable(8) %64) #8
  %554 = getelementptr inbounds %"class.__gnu_cxx::__normal_iterator.357", ptr %63, i32 0, i32 0
  %555 = load ptr, ptr %554, align 8
  %556 = invoke ptr @_ZNSt6vectorIiSaIiEE5eraseEN9__gnu_cxx17__normal_iteratorIPKiS1_EE(ptr noundef nonnull align 8 dereferenceable(24) %546, ptr %555)
          to label %557 unwind label %608

557:                                              ; preds = %544
  %558 = getelementptr inbounds %"class.__gnu_cxx::__normal_iterator", ptr %66, i32 0, i32 0
  store ptr %556, ptr %558, align 8
  call void @llvm.lifetime.end.p0(i64 8, ptr %65) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %64) #8
  call void @llvm.lifetime.start.p0(i64 8, ptr %68) #8
  call void @llvm.lifetime.start.p0(i64 8, ptr %69) #8
  call void @llvm.lifetime.start.p0(i64 8, ptr %70) #8
  %559 = call ptr @_ZNSt6vectorI12HighsCDoubleSaIS0_EE5beginEv(ptr noundef nonnull align 8 dereferenceable(24) %18) #8
  %560 = getelementptr inbounds %"class.__gnu_cxx::__normal_iterator.355", ptr %70, i32 0, i32 0
  store ptr %559, ptr %560, align 8
  %561 = load i32, ptr %27, align 4, !tbaa !30
  %562 = sext i32 %561 to i64
  %563 = call ptr @_ZNK9__gnu_cxx17__normal_iteratorIP12HighsCDoubleSt6vectorIS1_SaIS1_EEEplEl(ptr noundef nonnull align 8 dereferenceable(8) %70, i64 noundef %562) #8
  %564 = getelementptr inbounds %"class.__gnu_cxx::__normal_iterator.355", ptr %69, i32 0, i32 0
  store ptr %563, ptr %564, align 8
  %565 = call ptr @_ZNK9__gnu_cxx17__normal_iteratorIP12HighsCDoubleSt6vectorIS1_SaIS1_EEEplEl(ptr noundef nonnull align 8 dereferenceable(8) %69, i64 noundef 1) #8
  %566 = getelementptr inbounds %"class.__gnu_cxx::__normal_iterator.355", ptr %68, i32 0, i32 0
  store ptr %565, ptr %566, align 8
  call void @_ZN9__gnu_cxx17__normal_iteratorIPK12HighsCDoubleSt6vectorIS1_SaIS1_EEEC2IPS1_vEERKNS0_IT_S6_EE(ptr noundef nonnull align 8 dereferenceable(8) %67, ptr noundef nonnull align 8 dereferenceable(8) %68) #8
  %567 = getelementptr inbounds %"class.__gnu_cxx::__normal_iterator.356", ptr %67, i32 0, i32 0
  %568 = load ptr, ptr %567, align 8
  %569 = invoke ptr @_ZNSt6vectorI12HighsCDoubleSaIS0_EE5eraseEN9__gnu_cxx17__normal_iteratorIPKS0_S2_EE(ptr noundef nonnull align 8 dereferenceable(24) %18, ptr %568)
          to label %570 unwind label %612

570:                                              ; preds = %557
  %571 = getelementptr inbounds %"class.__gnu_cxx::__normal_iterator.355", ptr %71, i32 0, i32 0
  store ptr %569, ptr %571, align 8
  call void @llvm.lifetime.end.p0(i64 8, ptr %70) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %69) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %68) #8
  call void @llvm.lifetime.start.p0(i64 8, ptr %73) #8
  call void @llvm.lifetime.start.p0(i64 8, ptr %74) #8
  call void @llvm.lifetime.start.p0(i64 8, ptr %75) #8
  %572 = call ptr @_ZNSt6vectorI12HighsCDoubleSaIS0_EE5beginEv(ptr noundef nonnull align 8 dereferenceable(24) %19) #8
  %573 = getelementptr inbounds %"class.__gnu_cxx::__normal_iterator.355", ptr %75, i32 0, i32 0
  store ptr %572, ptr %573, align 8
  %574 = load i32, ptr %27, align 4, !tbaa !30
  %575 = sext i32 %574 to i64
  %576 = call ptr @_ZNK9__gnu_cxx17__normal_iteratorIP12HighsCDoubleSt6vectorIS1_SaIS1_EEEplEl(ptr noundef nonnull align 8 dereferenceable(8) %75, i64 noundef %575) #8
  %577 = getelementptr inbounds %"class.__gnu_cxx::__normal_iterator.355", ptr %74, i32 0, i32 0
  store ptr %576, ptr %577, align 8
  %578 = call ptr @_ZNK9__gnu_cxx17__normal_iteratorIP12HighsCDoubleSt6vectorIS1_SaIS1_EEEplEl(ptr noundef nonnull align 8 dereferenceable(8) %74, i64 noundef 1) #8
  %579 = getelementptr inbounds %"class.__gnu_cxx::__normal_iterator.355", ptr %73, i32 0, i32 0
  store ptr %578, ptr %579, align 8
  call void @_ZN9__gnu_cxx17__normal_iteratorIPK12HighsCDoubleSt6vectorIS1_SaIS1_EEEC2IPS1_vEERKNS0_IT_S6_EE(ptr noundef nonnull align 8 dereferenceable(8) %72, ptr noundef nonnull align 8 dereferenceable(8) %73) #8
  %580 = getelementptr inbounds %"class.__gnu_cxx::__normal_iterator.356", ptr %72, i32 0, i32 0
  %581 = load ptr, ptr %580, align 8
  %582 = invoke ptr @_ZNSt6vectorI12HighsCDoubleSaIS0_EE5eraseEN9__gnu_cxx17__normal_iteratorIPKS0_S2_EE(ptr noundef nonnull align 8 dereferenceable(24) %19, ptr %581)
          to label %583 unwind label %616

583:                                              ; preds = %570
  %584 = getelementptr inbounds %"class.__gnu_cxx::__normal_iterator.355", ptr %76, i32 0, i32 0
  store ptr %582, ptr %584, align 8
  call void @llvm.lifetime.end.p0(i64 8, ptr %75) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %74) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %73) #8
  call void @llvm.lifetime.start.p0(i64 4, ptr %77) #8
  %585 = load i32, ptr %27, align 4, !tbaa !30
  %586 = add nsw i32 %585, 1
  store i32 %586, ptr %77, align 4, !tbaa !30
  br label %587

587:                                              ; preds = %632, %583
  %588 = load i32, ptr %77, align 4, !tbaa !30
  %589 = load i32, ptr %28, align 4, !tbaa !30
  %590 = icmp slt i32 %588, %589
  br i1 %590, label %620, label %591

591:                                              ; preds = %587
  store i32 10, ptr %32, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %77) #8
  br label %639

592:                                              ; preds = %484
  %593 = landingpad { ptr, i32 }
          cleanup
  %594 = extractvalue { ptr, i32 } %593, 0
  store ptr %594, ptr %7, align 8
  %595 = extractvalue { ptr, i32 } %593, 1
  store i32 %595, ptr %8, align 4
  br label %892

596:                                              ; preds = %496
  %597 = landingpad { ptr, i32 }
          cleanup
  %598 = extractvalue { ptr, i32 } %597, 0
  store ptr %598, ptr %7, align 8
  %599 = extractvalue { ptr, i32 } %597, 1
  store i32 %599, ptr %8, align 4
  br label %891

600:                                              ; preds = %526, %522, %518, %511, %504
  %601 = landingpad { ptr, i32 }
          cleanup
  %602 = extractvalue { ptr, i32 } %601, 0
  store ptr %602, ptr %7, align 8
  %603 = extractvalue { ptr, i32 } %601, 1
  store i32 %603, ptr %8, align 4
  br label %890

604:                                              ; preds = %534
  %605 = landingpad { ptr, i32 }
          cleanup
  %606 = extractvalue { ptr, i32 } %605, 0
  store ptr %606, ptr %7, align 8
  %607 = extractvalue { ptr, i32 } %605, 1
  store i32 %607, ptr %8, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %61) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %60) #8
  br label %890

608:                                              ; preds = %544
  %609 = landingpad { ptr, i32 }
          cleanup
  %610 = extractvalue { ptr, i32 } %609, 0
  store ptr %610, ptr %7, align 8
  %611 = extractvalue { ptr, i32 } %609, 1
  store i32 %611, ptr %8, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %65) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %64) #8
  br label %890

612:                                              ; preds = %557
  %613 = landingpad { ptr, i32 }
          cleanup
  %614 = extractvalue { ptr, i32 } %613, 0
  store ptr %614, ptr %7, align 8
  %615 = extractvalue { ptr, i32 } %613, 1
  store i32 %615, ptr %8, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %70) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %69) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %68) #8
  br label %890

616:                                              ; preds = %570
  %617 = landingpad { ptr, i32 }
          cleanup
  %618 = extractvalue { ptr, i32 } %617, 0
  store ptr %618, ptr %7, align 8
  %619 = extractvalue { ptr, i32 } %617, 1
  store i32 %619, ptr %8, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %75) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %74) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %73) #8
  br label %890

620:                                              ; preds = %587
  %621 = load double, ptr %56, align 8, !tbaa !37
  %622 = load i32, ptr %77, align 4, !tbaa !30
  %623 = sext i32 %622 to i64
  %624 = call noundef nonnull align 8 dereferenceable(16) ptr @_ZNSt6vectorI12HighsCDoubleSaIS0_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %18, i64 noundef %623) #8
  %625 = invoke noundef nonnull align 8 dereferenceable(16) ptr @_ZN12HighsCDoublemIEd(ptr noundef nonnull align 8 dereferenceable(16) %624, double noundef %621)
          to label %626 unwind label %635

626:                                              ; preds = %620
  %627 = load i32, ptr %77, align 4, !tbaa !30
  %628 = sext i32 %627 to i64
  %629 = call noundef nonnull align 8 dereferenceable(16) ptr @_ZNSt6vectorI12HighsCDoubleSaIS0_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %19, i64 noundef %628) #8
  %630 = invoke noundef nonnull align 8 dereferenceable(16) ptr @_ZN12HighsCDoublemIERKS_(ptr noundef nonnull align 8 dereferenceable(16) %629, ptr noundef nonnull align 8 dereferenceable(16) %57)
          to label %631 unwind label %635

631:                                              ; preds = %626
  br label %632

632:                                              ; preds = %631
  %633 = load i32, ptr %77, align 4, !tbaa !30
  %634 = add nsw i32 %633, 1
  store i32 %634, ptr %77, align 4, !tbaa !30
  br label %587, !llvm.loop !48

635:                                              ; preds = %626, %620
  %636 = landingpad { ptr, i32 }
          cleanup
  %637 = extractvalue { ptr, i32 } %636, 0
  store ptr %637, ptr %7, align 8
  %638 = extractvalue { ptr, i32 } %636, 1
  store i32 %638, ptr %8, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %77) #8
  br label %890

639:                                              ; preds = %591
  br label %640

640:                                              ; preds = %639, %530
  call void @llvm.lifetime.start.p0(i64 4, ptr %78) #8
  %641 = call noundef i64 @_ZNKSt6vectorI12HighsCDoubleSaIS0_EE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24) %17) #8
  %642 = trunc i64 %641 to i32
  store i32 %642, ptr %78, align 4, !tbaa !30
  %643 = getelementptr inbounds %class.HighsCutGeneration, ptr %99, i32 0, i32 10
  %644 = load double, ptr %643, align 8, !tbaa !42
  %645 = fmul double 1.000000e+01, %644
  %646 = invoke noundef zeroext i1 @_ZNK12HighsCDoublegtEd(ptr noundef nonnull align 8 dereferenceable(16) %58, double noundef %645)
          to label %647 unwind label %650

647:                                              ; preds = %640
  br i1 %646, label %648, label %649

648:                                              ; preds = %647
  br label %655

649:                                              ; preds = %647
  call void @__assert_fail(ptr noundef @.str.55, ptr noundef @.str.52, i32 noundef 397, ptr noundef @__PRETTY_FUNCTION__._ZN18HighsCutGeneration31separateLiftedMixedIntegerCoverEv) #9
  unreachable

650:                                              ; preds = %640
  %651 = landingpad { ptr, i32 }
          cleanup
  %652 = extractvalue { ptr, i32 } %651, 0
  store ptr %652, ptr %7, align 8
  %653 = extractvalue { ptr, i32 } %651, 1
  store i32 %653, ptr %8, align 4
  br label %889

654:                                              ; No predecessors!
  br label %655

655:                                              ; preds = %654, %648
  call void @llvm.lifetime.start.p0(i64 8, ptr %79) #8
  call void @llvm.lifetime.start.p0(i64 16, ptr %80) #8
  %656 = invoke { double, double } @_ZNK12HighsCDoubledvERKS_(ptr noundef nonnull align 8 dereferenceable(16) %58, ptr noundef nonnull align 8 dereferenceable(16) %55)
          to label %657 unwind label %684

657:                                              ; preds = %655
  %658 = getelementptr inbounds { double, double }, ptr %80, i32 0, i32 0
  %659 = extractvalue { double, double } %656, 0
  store double %659, ptr %658, align 8
  %660 = getelementptr inbounds { double, double }, ptr %80, i32 0, i32 1
  %661 = extractvalue { double, double } %656, 1
  store double %661, ptr %660, align 8
  %662 = invoke noundef double @_ZNK12HighsCDoublecvdEv(ptr noundef nonnull align 8 dereferenceable(16) %80)
          to label %663 unwind label %684

663:                                              ; preds = %657
  call void @llvm.lifetime.end.p0(i64 16, ptr %80) #8
  store double %662, ptr %79, align 8, !tbaa !37
  call void @llvm.lifetime.start.p0(i64 8, ptr %81) #8
  %664 = load double, ptr %79, align 8, !tbaa !37
  %665 = call double @llvm.ceil.f64(double %664)
  store double %665, ptr %81, align 8, !tbaa !37
  call void @llvm.lifetime.start.p0(i64 16, ptr %82) #8
  call void @llvm.lifetime.start.p0(i64 16, ptr %83) #8
  %666 = load double, ptr %79, align 8, !tbaa !37
  %667 = call double @llvm.floor.f64(double %666)
  call void @llvm.lifetime.start.p0(i64 16, ptr %84) #8
  call void @llvm.memcpy.p0.p0.i64(ptr align 8 %84, ptr align 8 %55, i64 16, i1 false), !tbaa.struct !36
  %668 = invoke { double, double } @_ZmldRK12HighsCDouble(double noundef %667, ptr noundef nonnull align 8 dereferenceable(16) %84)
          to label %669 unwind label %688

669:                                              ; preds = %663
  %670 = getelementptr inbounds { double, double }, ptr %83, i32 0, i32 0
  %671 = extractvalue { double, double } %668, 0
  store double %671, ptr %670, align 8
  %672 = getelementptr inbounds { double, double }, ptr %83, i32 0, i32 1
  %673 = extractvalue { double, double } %668, 1
  store double %673, ptr %672, align 8
  %674 = invoke { double, double } @_ZNK12HighsCDoublemiERKS_(ptr noundef nonnull align 8 dereferenceable(16) %58, ptr noundef nonnull align 8 dereferenceable(16) %83)
          to label %675 unwind label %688

675:                                              ; preds = %669
  %676 = getelementptr inbounds { double, double }, ptr %82, i32 0, i32 0
  %677 = extractvalue { double, double } %674, 0
  store double %677, ptr %676, align 8
  %678 = getelementptr inbounds { double, double }, ptr %82, i32 0, i32 1
  %679 = extractvalue { double, double } %674, 1
  store double %679, ptr %678, align 8
  call void @llvm.lifetime.end.p0(i64 16, ptr %84) #8
  call void @llvm.lifetime.end.p0(i64 16, ptr %83) #8
  %680 = invoke noundef zeroext i1 @_ZNK12HighsCDoubleltEd(ptr noundef nonnull align 8 dereferenceable(16) %82, double noundef 0.000000e+00)
          to label %681 unwind label %692

681:                                              ; preds = %675
  br i1 %680, label %682, label %700

682:                                              ; preds = %681
  call void @llvm.lifetime.start.p0(i64 16, ptr %85) #8
  invoke void @_ZN12HighsCDoubleC2Ed(ptr noundef nonnull align 8 dereferenceable(16) %85, double noundef 0.000000e+00)
          to label %683 unwind label %696

683:                                              ; preds = %682
  call void @llvm.memcpy.p0.p0.i64(ptr align 8 %82, ptr align 8 %85, i64 16, i1 false), !tbaa.struct !36
  call void @llvm.lifetime.end.p0(i64 16, ptr %85) #8
  br label %700

684:                                              ; preds = %657, %655
  %685 = landingpad { ptr, i32 }
          cleanup
  %686 = extractvalue { ptr, i32 } %685, 0
  store ptr %686, ptr %7, align 8
  %687 = extractvalue { ptr, i32 } %685, 1
  store i32 %687, ptr %8, align 4
  call void @llvm.lifetime.end.p0(i64 16, ptr %80) #8
  br label %888

688:                                              ; preds = %669, %663
  %689 = landingpad { ptr, i32 }
          cleanup
  %690 = extractvalue { ptr, i32 } %689, 0
  store ptr %690, ptr %7, align 8
  %691 = extractvalue { ptr, i32 } %689, 1
  store i32 %691, ptr %8, align 4
  call void @llvm.lifetime.end.p0(i64 16, ptr %84) #8
  call void @llvm.lifetime.end.p0(i64 16, ptr %83) #8
  br label %887

692:                                              ; preds = %675
  %693 = landingpad { ptr, i32 }
          cleanup
  %694 = extractvalue { ptr, i32 } %693, 0
  store ptr %694, ptr %7, align 8
  %695 = extractvalue { ptr, i32 } %693, 1
  store i32 %695, ptr %8, align 4
  br label %887

696:                                              ; preds = %682
  %697 = landingpad { ptr, i32 }
          cleanup
  %698 = extractvalue { ptr, i32 } %697, 0
  store ptr %698, ptr %7, align 8
  %699 = extractvalue { ptr, i32 } %697, 1
  store i32 %699, ptr %8, align 4
  call void @llvm.lifetime.end.p0(i64 16, ptr %85) #8
  br label %887

700:                                              ; preds = %683, %681
  call void @llvm.lifetime.start.p0(i64 16, ptr %86) #8
  call void @llvm.lifetime.start.p0(i64 16, ptr %87) #8
  call void @llvm.lifetime.start.p0(i64 16, ptr %88) #8
  %701 = load double, ptr %56, align 8, !tbaa !37
  invoke void @_ZN12HighsCDoubleC2Ed(ptr noundef nonnull align 8 dereferenceable(16) %88, double noundef %701)
          to label %702 unwind label %779

702:                                              ; preds = %700
  %703 = load double, ptr %81, align 8, !tbaa !37
  %704 = invoke { double, double } @_ZNK12HighsCDoublemiEd(ptr noundef nonnull align 8 dereferenceable(16) %88, double noundef %703)
          to label %705 unwind label %779

705:                                              ; preds = %702
  %706 = getelementptr inbounds { double, double }, ptr %87, i32 0, i32 0
  %707 = extractvalue { double, double } %704, 0
  store double %707, ptr %706, align 8
  %708 = getelementptr inbounds { double, double }, ptr %87, i32 0, i32 1
  %709 = extractvalue { double, double } %704, 1
  store double %709, ptr %708, align 8
  %710 = invoke { double, double } @_ZNK12HighsCDoubleplEd(ptr noundef nonnull align 8 dereferenceable(16) %87, double noundef 1.000000e+00)
          to label %711 unwind label %779

711:                                              ; preds = %705
  %712 = getelementptr inbounds { double, double }, ptr %86, i32 0, i32 0
  %713 = extractvalue { double, double } %710, 0
  store double %713, ptr %712, align 8
  %714 = getelementptr inbounds { double, double }, ptr %86, i32 0, i32 1
  %715 = extractvalue { double, double } %710, 1
  store double %715, ptr %714, align 8
  call void @llvm.lifetime.end.p0(i64 16, ptr %88) #8
  call void @llvm.lifetime.end.p0(i64 16, ptr %87) #8
  call void @llvm.lifetime.start.p0(i64 16, ptr %89) #8
  %716 = invoke { double, double } @_ZNK12HighsCDoublemlERKS_(ptr noundef nonnull align 8 dereferenceable(16) %86, ptr noundef nonnull align 8 dereferenceable(16) %55)
          to label %717 unwind label %783

717:                                              ; preds = %711
  %718 = getelementptr inbounds { double, double }, ptr %89, i32 0, i32 0
  %719 = extractvalue { double, double } %716, 0
  store double %719, ptr %718, align 8
  %720 = getelementptr inbounds { double, double }, ptr %89, i32 0, i32 1
  %721 = extractvalue { double, double } %716, 1
  store double %721, ptr %720, align 8
  call void @llvm.lifetime.start.p0(i64 4, ptr %90) #8
  %722 = load double, ptr %81, align 8, !tbaa !37
  %723 = load double, ptr %56, align 8, !tbaa !37
  %724 = fsub double %722, %723
  %725 = fsub double %724, 5.000000e-01
  %726 = call double @llvm.floor.f64(double %725)
  %727 = fptosi double %726 to i32
  store i32 %727, ptr %90, align 4, !tbaa !30
  call void @llvm.lifetime.start.p0(i64 32, ptr %91) #8
  %728 = getelementptr inbounds %class.anon.358, ptr %91, i32 0, i32 0
  store ptr %55, ptr %728, align 8, !tbaa !5
  %729 = getelementptr inbounds %class.anon.358, ptr %91, i32 0, i32 1
  store ptr %90, ptr %729, align 8, !tbaa !5
  %730 = getelementptr inbounds %class.anon.358, ptr %91, i32 0, i32 2
  store ptr %82, ptr %730, align 8, !tbaa !5
  %731 = getelementptr inbounds %class.anon.358, ptr %91, i32 0, i32 3
  store ptr %99, ptr %731, align 8, !tbaa !49
  call void @llvm.lifetime.start.p0(i64 8, ptr %92) #8
  %732 = load double, ptr %56, align 8, !tbaa !37
  %733 = load double, ptr %81, align 8, !tbaa !37
  %734 = fsub double %732, %733
  %735 = fadd double %734, 5.000000e-01
  %736 = call double @llvm.floor.f64(double %735)
  %737 = fptosi double %736 to i64
  store i64 %737, ptr %92, align 8, !tbaa !51
  call void @llvm.lifetime.start.p0(i64 80, ptr %93) #8
  %738 = getelementptr inbounds %class.anon.359, ptr %93, i32 0, i32 0
  store ptr %78, ptr %738, align 8, !tbaa !5
  %739 = getelementptr inbounds %class.anon.359, ptr %93, i32 0, i32 1
  store ptr %99, ptr %739, align 8, !tbaa !52
  %740 = getelementptr inbounds %class.anon.359, ptr %93, i32 0, i32 2
  store ptr %19, ptr %740, align 8, !tbaa !5
  %741 = getelementptr inbounds %class.anon.359, ptr %93, i32 0, i32 3
  store ptr %17, ptr %741, align 8, !tbaa !5
  %742 = getelementptr inbounds %class.anon.359, ptr %93, i32 0, i32 4
  store ptr %18, ptr %742, align 8, !tbaa !5
  %743 = getelementptr inbounds %class.anon.359, ptr %93, i32 0, i32 5
  store ptr %89, ptr %743, align 8, !tbaa !5
  %744 = getelementptr inbounds %class.anon.359, ptr %93, i32 0, i32 6
  store ptr %86, ptr %744, align 8, !tbaa !5
  %745 = getelementptr inbounds %class.anon.359, ptr %93, i32 0, i32 7
  store ptr %55, ptr %745, align 8, !tbaa !5
  %746 = getelementptr inbounds %class.anon.359, ptr %93, i32 0, i32 8
  store ptr %82, ptr %746, align 8, !tbaa !5
  %747 = getelementptr inbounds %class.anon.359, ptr %93, i32 0, i32 9
  store ptr %92, ptr %747, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 16, ptr %94) #8
  call void @llvm.lifetime.start.p0(i64 16, ptr %95) #8
  call void @llvm.lifetime.start.p0(i64 16, ptr %96) #8
  call void @llvm.lifetime.start.p0(i64 16, ptr %97) #8
  %748 = load double, ptr %56, align 8, !tbaa !37
  invoke void @_ZN12HighsCDoubleC2Ed(ptr noundef nonnull align 8 dereferenceable(16) %97, double noundef %748)
          to label %749 unwind label %787

749:                                              ; preds = %717
  %750 = load double, ptr %81, align 8, !tbaa !37
  %751 = invoke { double, double } @_ZNK12HighsCDoublemiEd(ptr noundef nonnull align 8 dereferenceable(16) %97, double noundef %750)
          to label %752 unwind label %787

752:                                              ; preds = %749
  %753 = getelementptr inbounds { double, double }, ptr %96, i32 0, i32 0
  %754 = extractvalue { double, double } %751, 0
  store double %754, ptr %753, align 8
  %755 = getelementptr inbounds { double, double }, ptr %96, i32 0, i32 1
  %756 = extractvalue { double, double } %751, 1
  store double %756, ptr %755, align 8
  %757 = invoke { double, double } @_ZNK12HighsCDoublemlERKS_(ptr noundef nonnull align 8 dereferenceable(16) %96, ptr noundef nonnull align 8 dereferenceable(16) %82)
          to label %758 unwind label %787

758:                                              ; preds = %752
  %759 = getelementptr inbounds { double, double }, ptr %95, i32 0, i32 0
  %760 = extractvalue { double, double } %757, 0
  store double %760, ptr %759, align 8
  %761 = getelementptr inbounds { double, double }, ptr %95, i32 0, i32 1
  %762 = extractvalue { double, double } %757, 1
  store double %762, ptr %761, align 8
  %763 = getelementptr inbounds %class.HighsCutGeneration, ptr %99, i32 0, i32 5
  %764 = invoke { double, double } @_ZNK12HighsCDoublemiERKS_(ptr noundef nonnull align 8 dereferenceable(16) %95, ptr noundef nonnull align 8 dereferenceable(16) %763)
          to label %765 unwind label %787

765:                                              ; preds = %758
  %766 = getelementptr inbounds { double, double }, ptr %94, i32 0, i32 0
  %767 = extractvalue { double, double } %764, 0
  store double %767, ptr %766, align 8
  %768 = getelementptr inbounds { double, double }, ptr %94, i32 0, i32 1
  %769 = extractvalue { double, double } %764, 1
  store double %769, ptr %768, align 8
  %770 = getelementptr inbounds %class.HighsCutGeneration, ptr %99, i32 0, i32 14
  call void @llvm.memcpy.p0.p0.i64(ptr align 8 %770, ptr align 8 %94, i64 16, i1 false), !tbaa.struct !36
  call void @llvm.lifetime.end.p0(i64 16, ptr %97) #8
  call void @llvm.lifetime.end.p0(i64 16, ptr %96) #8
  call void @llvm.lifetime.end.p0(i64 16, ptr %95) #8
  call void @llvm.lifetime.end.p0(i64 16, ptr %94) #8
  %771 = getelementptr inbounds %class.HighsCutGeneration, ptr %99, i32 0, i32 15
  store i8 1, ptr %771, align 8, !tbaa !9
  %772 = getelementptr inbounds %class.HighsCutGeneration, ptr %99, i32 0, i32 16
  store i8 0, ptr %772, align 1, !tbaa !29
  call void @llvm.lifetime.start.p0(i64 4, ptr %98) #8
  store i32 0, ptr %98, align 4, !tbaa !30
  br label %773

773:                                              ; preds = %880, %765
  %774 = load i32, ptr %98, align 4, !tbaa !30
  %775 = getelementptr inbounds %class.HighsCutGeneration, ptr %99, i32 0, i32 17
  %776 = load i32, ptr %775, align 4, !tbaa !31
  %777 = icmp ne i32 %774, %776
  br i1 %777, label %791, label %778

778:                                              ; preds = %773
  store i32 13, ptr %32, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %98) #8
  br label %883

779:                                              ; preds = %705, %702, %700
  %780 = landingpad { ptr, i32 }
          cleanup
  %781 = extractvalue { ptr, i32 } %780, 0
  store ptr %781, ptr %7, align 8
  %782 = extractvalue { ptr, i32 } %780, 1
  store i32 %782, ptr %8, align 4
  call void @llvm.lifetime.end.p0(i64 16, ptr %88) #8
  call void @llvm.lifetime.end.p0(i64 16, ptr %87) #8
  br label %886

783:                                              ; preds = %711
  %784 = landingpad { ptr, i32 }
          cleanup
  %785 = extractvalue { ptr, i32 } %784, 0
  store ptr %785, ptr %7, align 8
  %786 = extractvalue { ptr, i32 } %784, 1
  store i32 %786, ptr %8, align 4
  br label %885

787:                                              ; preds = %758, %752, %749, %717
  %788 = landingpad { ptr, i32 }
          cleanup
  %789 = extractvalue { ptr, i32 } %788, 0
  store ptr %789, ptr %7, align 8
  %790 = extractvalue { ptr, i32 } %788, 1
  store i32 %790, ptr %8, align 4
  call void @llvm.lifetime.end.p0(i64 16, ptr %97) #8
  call void @llvm.lifetime.end.p0(i64 16, ptr %96) #8
  call void @llvm.lifetime.end.p0(i64 16, ptr %95) #8
  call void @llvm.lifetime.end.p0(i64 16, ptr %94) #8
  br label %884

791:                                              ; preds = %773
  %792 = getelementptr inbounds %class.HighsCutGeneration, ptr %99, i32 0, i32 12
  %793 = load ptr, ptr %792, align 8, !tbaa !38
  %794 = load i32, ptr %98, align 4, !tbaa !30
  %795 = sext i32 %794 to i64
  %796 = getelementptr inbounds double, ptr %793, i64 %795
  %797 = load double, ptr %796, align 8, !tbaa !37
  %798 = fcmp oeq double %797, 0.000000e+00
  br i1 %798, label %799, label %800

799:                                              ; preds = %791
  br label %880

800:                                              ; preds = %791
  %801 = getelementptr inbounds %class.HighsCutGeneration, ptr %99, i32 0, i32 9
  %802 = load i32, ptr %98, align 4, !tbaa !30
  %803 = sext i32 %802 to i64
  %804 = call noundef nonnull align 1 dereferenceable(1) ptr @_ZNSt6vectorIhSaIhEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %801, i64 noundef %803) #8
  %805 = load i8, ptr %804, align 1, !tbaa !32
  %806 = icmp ne i8 %805, 0
  br i1 %806, label %824, label %807

807:                                              ; preds = %800
  %808 = getelementptr inbounds %class.HighsCutGeneration, ptr %99, i32 0, i32 12
  %809 = load ptr, ptr %808, align 8, !tbaa !38
  %810 = load i32, ptr %98, align 4, !tbaa !30
  %811 = sext i32 %810 to i64
  %812 = getelementptr inbounds double, ptr %809, i64 %811
  %813 = load double, ptr %812, align 8, !tbaa !37
  %814 = fcmp olt double %813, 0.000000e+00
  br i1 %814, label %815, label %817

815:                                              ; preds = %807
  %816 = getelementptr inbounds %class.HighsCutGeneration, ptr %99, i32 0, i32 15
  store i8 0, ptr %816, align 8, !tbaa !9
  br label %823

817:                                              ; preds = %807
  %818 = getelementptr inbounds %class.HighsCutGeneration, ptr %99, i32 0, i32 12
  %819 = load ptr, ptr %818, align 8, !tbaa !38
  %820 = load i32, ptr %98, align 4, !tbaa !30
  %821 = sext i32 %820 to i64
  %822 = getelementptr inbounds double, ptr %819, i64 %821
  store double 0.000000e+00, ptr %822, align 8, !tbaa !37
  br label %823

823:                                              ; preds = %817, %815
  br label %880

824:                                              ; preds = %800
  %825 = load i32, ptr %98, align 4, !tbaa !30
  %826 = sext i32 %825 to i64
  %827 = call noundef nonnull align 1 dereferenceable(1) ptr @_ZNSt6vectorIhSaIhEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %6, i64 noundef %826) #8
  %828 = load i8, ptr %827, align 1, !tbaa !32
  %829 = icmp ne i8 %828, 0
  br i1 %829, label %830, label %865

830:                                              ; preds = %824
  %831 = getelementptr inbounds %class.HighsCutGeneration, ptr %99, i32 0, i32 12
  %832 = load ptr, ptr %831, align 8, !tbaa !38
  %833 = load i32, ptr %98, align 4, !tbaa !30
  %834 = sext i32 %833 to i64
  %835 = getelementptr inbounds double, ptr %832, i64 %834
  %836 = load double, ptr %835, align 8, !tbaa !37
  %837 = fneg double %836
  %838 = invoke noundef double @"_ZZN18HighsCutGeneration31separateLiftedMixedIntegerCoverEvENK3$_2clEd"(ptr noundef nonnull align 8 dereferenceable(32) %91, double noundef %837)
          to label %839 unwind label %861

839:                                              ; preds = %830
  %840 = fneg double %838
  %841 = getelementptr inbounds %class.HighsCutGeneration, ptr %99, i32 0, i32 12
  %842 = load ptr, ptr %841, align 8, !tbaa !38
  %843 = load i32, ptr %98, align 4, !tbaa !30
  %844 = sext i32 %843 to i64
  %845 = getelementptr inbounds double, ptr %842, i64 %844
  store double %840, ptr %845, align 8, !tbaa !37
  %846 = getelementptr inbounds %class.HighsCutGeneration, ptr %99, i32 0, i32 12
  %847 = load ptr, ptr %846, align 8, !tbaa !38
  %848 = load i32, ptr %98, align 4, !tbaa !30
  %849 = sext i32 %848 to i64
  %850 = getelementptr inbounds double, ptr %847, i64 %849
  %851 = load double, ptr %850, align 8, !tbaa !37
  %852 = getelementptr inbounds %class.HighsCutGeneration, ptr %99, i32 0, i32 6
  %853 = load i32, ptr %98, align 4, !tbaa !30
  %854 = sext i32 %853 to i64
  %855 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt6vectorIdSaIdEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %852, i64 noundef %854) #8
  %856 = load double, ptr %855, align 8, !tbaa !37
  %857 = fmul double %851, %856
  %858 = getelementptr inbounds %class.HighsCutGeneration, ptr %99, i32 0, i32 14
  %859 = invoke noundef nonnull align 8 dereferenceable(16) ptr @_ZN12HighsCDoublepLEd(ptr noundef nonnull align 8 dereferenceable(16) %858, double noundef %857)
          to label %860 unwind label %861

860:                                              ; preds = %839
  br label %879

861:                                              ; preds = %865, %839, %830
  %862 = landingpad { ptr, i32 }
          cleanup
  %863 = extractvalue { ptr, i32 } %862, 0
  store ptr %863, ptr %7, align 8
  %864 = extractvalue { ptr, i32 } %862, 1
  store i32 %864, ptr %8, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %98) #8
  br label %884

865:                                              ; preds = %824
  %866 = getelementptr inbounds %class.HighsCutGeneration, ptr %99, i32 0, i32 12
  %867 = load ptr, ptr %866, align 8, !tbaa !38
  %868 = load i32, ptr %98, align 4, !tbaa !30
  %869 = sext i32 %868 to i64
  %870 = getelementptr inbounds double, ptr %867, i64 %869
  %871 = load double, ptr %870, align 8, !tbaa !37
  %872 = invoke noundef double @"_ZZN18HighsCutGeneration31separateLiftedMixedIntegerCoverEvENK3$_3clEd"(ptr noundef nonnull align 8 dereferenceable(80) %93, double noundef %871)
          to label %873 unwind label %861

873:                                              ; preds = %865
  %874 = getelementptr inbounds %class.HighsCutGeneration, ptr %99, i32 0, i32 12
  %875 = load ptr, ptr %874, align 8, !tbaa !38
  %876 = load i32, ptr %98, align 4, !tbaa !30
  %877 = sext i32 %876 to i64
  %878 = getelementptr inbounds double, ptr %875, i64 %877
  store double %872, ptr %878, align 8, !tbaa !37
  br label %879

879:                                              ; preds = %873, %860
  br label %880

880:                                              ; preds = %879, %823, %799
  %881 = load i32, ptr %98, align 4, !tbaa !30
  %882 = add nsw i32 %881, 1
  store i32 %882, ptr %98, align 4, !tbaa !30
  br label %773, !llvm.loop !54

883:                                              ; preds = %778
  store i1 true, ptr %2, align 1
  store i32 1, ptr %32, align 4
  call void @llvm.lifetime.end.p0(i64 80, ptr %93) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %92) #8
  call void @llvm.lifetime.end.p0(i64 32, ptr %91) #8
  call void @llvm.lifetime.end.p0(i64 4, ptr %90) #8
  call void @llvm.lifetime.end.p0(i64 16, ptr %89) #8
  call void @llvm.lifetime.end.p0(i64 16, ptr %86) #8
  call void @llvm.lifetime.end.p0(i64 16, ptr %82) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %81) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %79) #8
  call void @llvm.lifetime.end.p0(i64 4, ptr %78) #8
  call void @llvm.lifetime.end.p0(i64 16, ptr %58) #8
  call void @llvm.lifetime.end.p0(i64 16, ptr %57) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %56) #8
  call void @llvm.lifetime.end.p0(i64 16, ptr %55) #8
  br label %893

884:                                              ; preds = %861, %787
  call void @llvm.lifetime.end.p0(i64 80, ptr %93) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %92) #8
  call void @llvm.lifetime.end.p0(i64 32, ptr %91) #8
  call void @llvm.lifetime.end.p0(i64 4, ptr %90) #8
  br label %885

885:                                              ; preds = %884, %783
  call void @llvm.lifetime.end.p0(i64 16, ptr %89) #8
  br label %886

886:                                              ; preds = %885, %779
  call void @llvm.lifetime.end.p0(i64 16, ptr %86) #8
  br label %887

887:                                              ; preds = %886, %696, %692, %688
  call void @llvm.lifetime.end.p0(i64 16, ptr %82) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %81) #8
  br label %888

888:                                              ; preds = %887, %684
  call void @llvm.lifetime.end.p0(i64 8, ptr %79) #8
  br label %889

889:                                              ; preds = %888, %650
  call void @llvm.lifetime.end.p0(i64 4, ptr %78) #8
  br label %890

890:                                              ; preds = %889, %635, %616, %612, %608, %604, %600
  call void @llvm.lifetime.end.p0(i64 16, ptr %58) #8
  br label %891

891:                                              ; preds = %890, %596
  call void @llvm.lifetime.end.p0(i64 16, ptr %57) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %56) #8
  br label %892

892:                                              ; preds = %891, %592
  call void @llvm.lifetime.end.p0(i64 16, ptr %55) #8
  br label %895

893:                                              ; preds = %883, %483
  call void @llvm.lifetime.end.p0(i64 1, ptr %30) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %29) #8
  call void @llvm.lifetime.end.p0(i64 4, ptr %28) #8
  call void @llvm.lifetime.end.p0(i64 4, ptr %27) #8
  call void @llvm.lifetime.end.p0(i64 16, ptr %21) #8
  call void @llvm.lifetime.end.p0(i64 16, ptr %20) #8
  call void @_ZNSt6vectorI12HighsCDoubleSaIS0_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %19) #8
  call void @llvm.lifetime.end.p0(i64 24, ptr %19) #8
  call void @_ZNSt6vectorI12HighsCDoubleSaIS0_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %18) #8
  call void @llvm.lifetime.end.p0(i64 24, ptr %18) #8
  call void @_ZNSt6vectorI12HighsCDoubleSaIS0_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %17) #8
  call void @llvm.lifetime.end.p0(i64 24, ptr %17) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %13) #8
  call void @_ZNSt6vectorIhSaIhEED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %6) #8
  call void @llvm.lifetime.end.p0(i64 24, ptr %6) #8
  call void @llvm.lifetime.end.p0(i64 4, ptr %5) #8
  call void @llvm.lifetime.end.p0(i64 4, ptr %4) #8
  %894 = load i1, ptr %2, align 1
  ret i1 %894

895:                                              ; preds = %892, %479
  call void @llvm.lifetime.end.p0(i64 1, ptr %30) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %29) #8
  call void @llvm.lifetime.end.p0(i64 4, ptr %28) #8
  call void @llvm.lifetime.end.p0(i64 4, ptr %27) #8
  br label %896

896:                                              ; preds = %895, %238, %176
  call void @llvm.lifetime.end.p0(i64 16, ptr %21) #8
  br label %897

897:                                              ; preds = %896, %172
  call void @llvm.lifetime.end.p0(i64 16, ptr %20) #8
  br label %898

898:                                              ; preds = %897, %168
  call void @_ZNSt6vectorI12HighsCDoubleSaIS0_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %19) #8
  call void @llvm.lifetime.end.p0(i64 24, ptr %19) #8
  call void @_ZNSt6vectorI12HighsCDoubleSaIS0_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %18) #8
  call void @llvm.lifetime.end.p0(i64 24, ptr %18) #8
  call void @_ZNSt6vectorI12HighsCDoubleSaIS0_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %17) #8
  call void @llvm.lifetime.end.p0(i64 24, ptr %17) #8
  br label %899

899:                                              ; preds = %898, %164
  call void @llvm.lifetime.end.p0(i64 8, ptr %13) #8
  br label %900

900:                                              ; preds = %899, %119
  call void @_ZNSt6vectorIhSaIhEED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %6) #8
  call void @llvm.lifetime.end.p0(i64 24, ptr %6) #8
  call void @llvm.lifetime.end.p0(i64 4, ptr %5) #8
  call void @llvm.lifetime.end.p0(i64 4, ptr %4) #8
  br label %901

901:                                              ; preds = %900
  %902 = load ptr, ptr %7, align 8
  %903 = load i32, ptr %8, align 4
  %904 = insertvalue { ptr, i32 } poison, ptr %902, 0
  %905 = insertvalue { ptr, i32 } %904, i32 %903, 1
  resume { ptr, i32 } %905

906:                                              ; preds = %468
  unreachable
}

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

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

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

; Function Attrs: inlinehint mustprogress uwtable
declare hidden void @"_Z18pdqsort_branchlessIN9__gnu_cxx17__normal_iteratorIPiSt6vectorIiSaIiEEEEZN18HighsCutGeneration31separateLiftedMixedIntegerCoverEvE3$_0EvT_S9_T0_"(ptr, ptr, ptr) #6

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

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

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

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

; Function Attrs: mustprogress nounwind uwtable
declare dso_local noundef zeroext i1 @_ZN13HighsIntegers10isIntegralEdd(double noundef, double noundef) #1 align 2

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

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

; Function Attrs: inlinehint mustprogress uwtable
declare hidden ptr @"_ZSt11upper_boundIN9__gnu_cxx17__normal_iteratorIPiSt6vectorIiSaIiEEEEdZN18HighsCutGeneration31separateLiftedMixedIntegerCoverEvE3$_1ET_S9_S9_RKT0_T1_"(ptr, ptr, ptr noundef nonnull align 8 dereferenceable(8), ptr) #6

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

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

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

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

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

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

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

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

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

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

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

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

; Function Attrs: inlinehint mustprogress uwtable
declare hidden noundef double @"_ZZN18HighsCutGeneration31separateLiftedMixedIntegerCoverEvENK3$_2clEd"(ptr noundef nonnull align 8 dereferenceable(32), double noundef) #6 align 2

; Function Attrs: inlinehint mustprogress uwtable
declare hidden noundef double @"_ZZN18HighsCutGeneration31separateLiftedMixedIntegerCoverEvENK3$_3clEd"(ptr noundef nonnull align 8 dereferenceable(80), double noundef) #6 align 2

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

attributes #0 = { nocallback nofree nosync nounwind willreturn memory(argmem: readwrite) }
attributes #1 = { mustprogress nounwind uwtable "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }
attributes #2 = { 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 = { nocallback nofree nounwind willreturn memory(argmem: readwrite) }
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 = { noreturn nounwind "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }
attributes #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 = { nocallback nofree nosync nounwind speculatable willreturn memory(none) }
attributes #8 = { nounwind }
attributes #9 = { noreturn nounwind }

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

!0 = !{i32 1, !"wchar_size", i32 4}
!1 = !{i32 8, !"PIC Level", i32 2}
!2 = !{i32 7, !"PIE Level", i32 2}
!3 = !{i32 7, !"uwtable", i32 2}
!4 = !{!"clang version 19.1.0 (git@github.com:llvm/llvm-project.git a4bf6cd7cfb1a1421ba92bca9d017b49936c55e4)"}
!5 = !{!6, !6, i64 0}
!6 = !{!"any pointer", !7, i64 0}
!7 = !{!"omnipotent char", !8, i64 0}
!8 = !{!"Simple C++ TBAA"}
!9 = !{!10, !27, i64 224}
!10 = !{!"_ZTS18HighsCutGeneration", !6, i64 0, !6, i64 8, !11, i64 16, !13, i64 24, !17, i64 48, !17, i64 64, !19, i64 80, !19, i64 104, !23, i64 128, !23, i64 152, !18, i64 176, !18, i64 184, !6, i64 192, !6, i64 200, !17, i64 208, !27, i64 224, !27, i64 225, !28, i64 228, !18, i64 232, !13, i64 240, !19, i64 264}
!11 = !{!"_ZTS11HighsRandom", !12, i64 0}
!12 = !{!"long", !7, i64 0}
!13 = !{!"_ZTSSt6vectorIiSaIiEE", !14, i64 0}
!14 = !{!"_ZTSSt12_Vector_baseIiSaIiEE", !15, i64 0}
!15 = !{!"_ZTSNSt12_Vector_baseIiSaIiEE12_Vector_implE", !16, i64 0}
!16 = !{!"_ZTSNSt12_Vector_baseIiSaIiEE17_Vector_impl_dataE", !6, i64 0, !6, i64 8, !6, i64 16}
!17 = !{!"_ZTS12HighsCDouble", !18, i64 0, !18, i64 8}
!18 = !{!"double", !7, i64 0}
!19 = !{!"_ZTSSt6vectorIdSaIdEE", !20, i64 0}
!20 = !{!"_ZTSSt12_Vector_baseIdSaIdEE", !21, i64 0}
!21 = !{!"_ZTSNSt12_Vector_baseIdSaIdEE12_Vector_implE", !22, i64 0}
!22 = !{!"_ZTSNSt12_Vector_baseIdSaIdEE17_Vector_impl_dataE", !6, i64 0, !6, i64 8, !6, i64 16}
!23 = !{!"_ZTSSt6vectorIhSaIhEE", !24, i64 0}
!24 = !{!"_ZTSSt12_Vector_baseIhSaIhEE", !25, i64 0}
!25 = !{!"_ZTSNSt12_Vector_baseIhSaIhEE12_Vector_implE", !26, i64 0}
!26 = !{!"_ZTSNSt12_Vector_baseIhSaIhEE17_Vector_impl_dataE", !6, i64 0, !6, i64 8, !6, i64 16}
!27 = !{!"bool", !7, i64 0}
!28 = !{!"int", !7, i64 0}
!29 = !{!10, !27, i64 225}
!30 = !{!28, !28, i64 0}
!31 = !{!10, !28, i64 228}
!32 = !{!7, !7, i64 0}
!33 = !{!34, !6, i64 0}
!34 = !{!"_ZTSZN18HighsCutGeneration31separateLiftedMixedIntegerCoverEvE3$_0", !6, i64 0}
!35 = !{i64 0, i64 8, !5}
!36 = !{i64 0, i64 8, !37, i64 8, i64 8, !37}
!37 = !{!18, !18, i64 0}
!38 = !{!10, !6, i64 192}
!39 = distinct !{!39, !40}
!40 = !{!"llvm.loop.mustprogress"}
!41 = !{!27, !27, i64 0}
!42 = !{!10, !18, i64 176}
!43 = !{i8 0, i8 2}
!44 = !{}
!45 = !{!46, !6, i64 0}
!46 = !{!"_ZTSZN18HighsCutGeneration31separateLiftedMixedIntegerCoverEvE3$_1", !6, i64 0}
!47 = distinct !{!47, !40}
!48 = distinct !{!48, !40}
!49 = !{!50, !6, i64 24}
!50 = !{!"_ZTSZN18HighsCutGeneration31separateLiftedMixedIntegerCoverEvE3$_2", !6, i64 0, !6, i64 8, !6, i64 16, !6, i64 24}
!51 = !{!12, !12, i64 0}
!52 = !{!53, !6, i64 8}
!53 = !{!"_ZTSZN18HighsCutGeneration31separateLiftedMixedIntegerCoverEvE3$_3", !6, i64 0, !6, i64 8, !6, i64 16, !6, i64 24, !6, i64 32, !6, i64 40, !6, i64 48, !6, i64 56, !6, i64 64, !6, i64 72}
!54 = distinct !{!54, !40}


; 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.std::vector.8" = type { %"struct.std::_Vector_base.9" }
%"struct.std::_Vector_base.9" = type { %"struct.std::_Vector_base<unsigned char, std::allocator<unsigned char>>::_Vector_impl" }
%"struct.std::_Vector_base<unsigned char, std::allocator<unsigned char>>::_Vector_impl" = type { %"struct.std::_Vector_base<unsigned char, std::allocator<unsigned char>>::_Vector_impl_data" }
%"struct.std::_Vector_base<unsigned char, std::allocator<unsigned char>>::_Vector_impl_data" = type { ptr, ptr, ptr }
%"class.__gnu_cxx::__normal_iterator" = type { ptr }
%"class.std::vector.140" = type { %"struct.std::_Vector_base.141" }
%"struct.std::_Vector_base.141" = type { %"struct.std::_Vector_base<HighsCDouble, std::allocator<HighsCDouble>>::_Vector_impl" }
%"struct.std::_Vector_base<HighsCDouble, std::allocator<HighsCDouble>>::_Vector_impl" = type { %"struct.std::_Vector_base<HighsCDouble, std::allocator<HighsCDouble>>::_Vector_impl_data" }
%"struct.std::_Vector_base<HighsCDouble, std::allocator<HighsCDouble>>::_Vector_impl_data" = type { ptr, ptr, ptr }
%class.HighsCDouble = type { double, double }
%"class.__gnu_cxx::__normal_iterator.356" = type { ptr }
%"class.__gnu_cxx::__normal_iterator.355" = type { ptr }
%"class.__gnu_cxx::__normal_iterator.357" = type { ptr }
%class.anon.358 = type { ptr, ptr, ptr, ptr }
%class.anon.359 = type { ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr }

@.str.52 = external hidden unnamed_addr constant [80 x i8], align 1
@.str.55 = external hidden unnamed_addr constant [18 x i8], align 1
@__PRETTY_FUNCTION__._ZN18HighsCutGeneration31separateLiftedMixedIntegerCoverEv = external hidden unnamed_addr constant [59 x i8], align 1

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

declare i32 @__gxx_personality_v0(...)

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

; 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 } @_ZNK12HighsCDoublemiERKS_(ptr noundef nonnull align 8 dereferenceable(16), ptr noundef nonnull align 8 dereferenceable(16)) local_unnamed_addr #2 align 2

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

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

; Function Attrs: mustprogress uwtable
declare dso_local noundef nonnull align 8 dereferenceable(16) ptr @_ZN12HighsCDoublemIERKS_(ptr noundef nonnull align 8 dereferenceable(16), ptr noundef nonnull align 8 dereferenceable(16)) 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 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 void @_ZNSt6vectorIhSaIhEE6resizeEm(ptr noundef nonnull align 8 dereferenceable(24), i64 noundef) local_unnamed_addr #2 align 2

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

; Function Attrs: mustprogress uwtable
define dso_local noundef zeroext i1 @_ZN18HighsCutGeneration31separateLiftedMixedIntegerCoverEv(ptr noundef nonnull align 8 dereferenceable(288) %0) local_unnamed_addr #2 align 2 personality ptr @__gxx_personality_v0 {
  %2 = alloca %"class.std::vector.8", align 8
  %3 = alloca %"class.__gnu_cxx::__normal_iterator", align 8
  %4 = alloca %"class.__gnu_cxx::__normal_iterator", align 8
  %5 = alloca %"class.std::vector.140", align 8
  %6 = alloca %"class.std::vector.140", align 8
  %7 = alloca %"class.std::vector.140", align 8
  %8 = alloca %class.HighsCDouble, 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.__gnu_cxx::__normal_iterator", align 8
  %19 = alloca double, align 8
  %20 = alloca %"class.__gnu_cxx::__normal_iterator", 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.__gnu_cxx::__normal_iterator.356", align 8
  %27 = alloca %"class.__gnu_cxx::__normal_iterator.355", align 8
  %28 = alloca %"class.__gnu_cxx::__normal_iterator.355", align 8
  %29 = alloca %"class.__gnu_cxx::__normal_iterator.357", align 8
  %30 = alloca %"class.__gnu_cxx::__normal_iterator", align 8
  %31 = alloca %"class.__gnu_cxx::__normal_iterator", align 8
  %32 = alloca %"class.__gnu_cxx::__normal_iterator.356", align 8
  %33 = alloca %"class.__gnu_cxx::__normal_iterator.355", align 8
  %34 = alloca %"class.__gnu_cxx::__normal_iterator.355", align 8
  %35 = alloca %"class.__gnu_cxx::__normal_iterator.355", align 8
  %36 = alloca %"class.__gnu_cxx::__normal_iterator.356", align 8
  %37 = alloca %"class.__gnu_cxx::__normal_iterator.355", align 8
  %38 = alloca %"class.__gnu_cxx::__normal_iterator.355", align 8
  %39 = alloca %"class.__gnu_cxx::__normal_iterator.355", align 8
  %40 = alloca i32, align 4
  %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 i32, align 4
  %51 = alloca %class.anon.358, align 8
  %52 = alloca i64, align 8
  %53 = alloca %class.anon.359, align 8
  %54 = alloca %class.HighsCDouble, align 8
  %55 = alloca %class.HighsCDouble, align 8
  %56 = alloca %class.HighsCDouble, align 8
  %57 = getelementptr inbounds i8, ptr %0, i64 224
  store i8 0, ptr %57, align 8, !tbaa !5
  %58 = getelementptr inbounds i8, ptr %0, i64 225
  store i8 0, ptr %58, align 1, !tbaa !28
  %59 = getelementptr inbounds i8, ptr %0, i64 24
  %60 = tail call noundef i64 @_ZNKSt6vectorIiSaIiEE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24) %59) #8
  call void @llvm.lifetime.start.p0(i64 24, ptr nonnull %2) #8
  call void @_ZNSt6vectorIhSaIhEEC2Ev(ptr noundef nonnull align 8 dereferenceable(24) %2) #8
  %61 = getelementptr inbounds i8, ptr %0, i64 228
  %62 = load i32, ptr %61, align 4, !tbaa !29
  %63 = sext i32 %62 to i64
  invoke void @_ZNSt6vectorIhSaIhEE6resizeEm(ptr noundef nonnull align 8 dereferenceable(24) %2, i64 noundef %63)
          to label %64 unwind label %70

64:                                               ; preds = %1
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %3) #8
  %65 = call ptr @_ZNSt6vectorIiSaIiEE5beginEv(ptr noundef nonnull align 8 dereferenceable(24) %59) #8
  store ptr %65, ptr %3, align 8
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %4) #8
  %66 = call ptr @_ZNSt6vectorIiSaIiEE3endEv(ptr noundef nonnull align 8 dereferenceable(24) %59) #8
  store ptr %66, ptr %4, align 8
  %67 = call noundef zeroext i1 @_ZN9__gnu_cxxneIPiSt6vectorIiSaIiEEEEbRKNS_17__normal_iteratorIT_T0_EESA_(ptr noundef nonnull align 8 dereferenceable(8) %3, ptr noundef nonnull align 8 dereferenceable(8) %4) #8
  br i1 %67, label %.lr.ph, label %._crit_edge

._crit_edge:                                      ; preds = %.lr.ph, %64
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %4) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %3) #8
  %68 = call ptr @_ZNSt6vectorIiSaIiEE5beginEv(ptr noundef nonnull align 8 dereferenceable(24) %59) #8
  %69 = call ptr @_ZNSt6vectorIiSaIiEE3endEv(ptr noundef nonnull align 8 dereferenceable(24) %59) #8
  invoke void @"_Z18pdqsort_branchlessIN9__gnu_cxx17__normal_iteratorIPiSt6vectorIiSaIiEEEEZN18HighsCutGeneration31separateLiftedMixedIntegerCoverEvE3$_0EvT_S9_T0_"(ptr %68, ptr %69, ptr nonnull %0)
          to label %78 unwind label %103

70:                                               ; preds = %1
  %71 = landingpad { ptr, i32 }
          cleanup
  br label %453

.lr.ph:                                           ; preds = %64, %.lr.ph
  %72 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNK9__gnu_cxx17__normal_iteratorIPiSt6vectorIiSaIiEEEdeEv(ptr noundef nonnull align 8 dereferenceable(8) %3) #8
  %73 = load i32, ptr %72, align 4, !tbaa !30
  %74 = sext i32 %73 to i64
  %75 = call noundef nonnull align 1 dereferenceable(1) ptr @_ZNSt6vectorIhSaIhEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %2, i64 noundef %74) #8
  store i8 1, ptr %75, align 1, !tbaa !31
  %76 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZN9__gnu_cxx17__normal_iteratorIPiSt6vectorIiSaIiEEEppEv(ptr noundef nonnull align 8 dereferenceable(8) %3) #8
  %77 = call noundef zeroext i1 @_ZN9__gnu_cxxneIPiSt6vectorIiSaIiEEEEbRKNS_17__normal_iteratorIT_T0_EESA_(ptr noundef nonnull align 8 dereferenceable(8) %3, ptr noundef nonnull align 8 dereferenceable(8) %4) #8
  br i1 %77, label %.lr.ph, label %._crit_edge

78:                                               ; preds = %._crit_edge
  call void @llvm.lifetime.start.p0(i64 24, ptr nonnull %5) #8
  call void @_ZNSt6vectorI12HighsCDoubleSaIS0_EEC2Ev(ptr noundef nonnull align 8 dereferenceable(24) %5) #8
  call void @llvm.lifetime.start.p0(i64 24, ptr nonnull %6) #8
  call void @_ZNSt6vectorI12HighsCDoubleSaIS0_EEC2Ev(ptr noundef nonnull align 8 dereferenceable(24) %6) #8
  call void @llvm.lifetime.start.p0(i64 24, ptr nonnull %7) #8
  call void @_ZNSt6vectorI12HighsCDoubleSaIS0_EEC2Ev(ptr noundef nonnull align 8 dereferenceable(24) %7) #8
  %sext = shl i64 %60, 32
  %79 = ashr exact i64 %sext, 32
  invoke void @_ZNSt6vectorI12HighsCDoubleSaIS0_EE6resizeEm(ptr noundef nonnull align 8 dereferenceable(24) %5, i64 noundef %79)
          to label %80 unwind label %105

80:                                               ; preds = %78
  %sext154 = add i64 %sext, 4294967296
  %81 = ashr exact i64 %sext154, 32
  invoke void @_ZNSt6vectorI12HighsCDoubleSaIS0_EE6resizeEm(ptr noundef nonnull align 8 dereferenceable(24) %6, i64 noundef %81)
          to label %82 unwind label %105

82:                                               ; preds = %80
  invoke void @_ZNSt6vectorI12HighsCDoubleSaIS0_EE6resizeEm(ptr noundef nonnull align 8 dereferenceable(24) %7, i64 noundef %81)
          to label %83 unwind label %105

83:                                               ; preds = %82
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %8) #8
  call void @_ZN12HighsCDoubleC2Ed(ptr noundef nonnull align 8 dereferenceable(16) %8, double noundef 0.000000e+00)
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %9) #8
  call void @_ZN12HighsCDoubleC2Ed(ptr noundef nonnull align 8 dereferenceable(16) %9, double noundef 0.000000e+00)
  %84 = and i64 %60, 4294967295
  %.not189 = icmp eq i64 %84, 0
  br i1 %.not189, label %._crit_edge204.thread.critedge, label %.lr.ph192

.lr.ph192:                                        ; preds = %83
  %85 = getelementptr inbounds i8, ptr %0, i64 192
  %86 = getelementptr inbounds i8, ptr %0, i64 80
  %87 = getelementptr inbounds i8, ptr %11, i64 8
  %88 = and i64 %60, 4294967295
  br label %107

._crit_edge193:                                   ; preds = %127
  %89 = call noundef nonnull align 8 dereferenceable(16) ptr @_ZNSt6vectorI12HighsCDoubleSaIS0_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %6, i64 noundef %79) #8
  call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(16) %89, ptr noundef nonnull align 8 dereferenceable(16) %8, i64 16, i1 false), !tbaa.struct !32
  %90 = call noundef nonnull align 8 dereferenceable(16) ptr @_ZNSt6vectorI12HighsCDoubleSaIS0_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %7, i64 noundef %79) #8
  call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(16) %90, ptr noundef nonnull align 8 dereferenceable(16) %9, i64 16, i1 false), !tbaa.struct !32
  br i1 %.not189, label %._crit_edge204.thread, label %.lr.ph203

.lr.ph203:                                        ; preds = %._crit_edge193
  %91 = getelementptr inbounds i8, ptr %0, i64 80
  %92 = getelementptr inbounds i8, ptr %0, i64 104
  %93 = getelementptr inbounds i8, ptr %0, i64 176
  %94 = getelementptr inbounds i8, ptr %0, i64 192
  %95 = getelementptr inbounds i8, ptr %0, i64 64
  %96 = getelementptr inbounds i8, ptr %12, i64 8
  %97 = getelementptr inbounds i8, ptr %13, i64 8
  %98 = getelementptr inbounds i8, ptr %15, i64 8
  %99 = getelementptr inbounds i8, ptr %14, i64 8
  %100 = getelementptr inbounds i8, ptr %17, i64 8
  %101 = getelementptr inbounds i8, ptr %22, i64 8
  %102 = and i64 %60, 4294967295
  br label %133

103:                                              ; preds = %._crit_edge
  %104 = landingpad { ptr, i32 }
          cleanup
  br label %453

105:                                              ; preds = %82, %80, %78
  %106 = landingpad { ptr, i32 }
          cleanup
  br label %452

107:                                              ; preds = %.lr.ph192, %127
  %indvars.iv = phi i64 [ 0, %.lr.ph192 ], [ %indvars.iv.next, %127 ]
  %108 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNSt6vectorIiSaIiEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %59, i64 noundef %indvars.iv) #8
  %109 = load i32, ptr %108, align 4, !tbaa !30
  %110 = call noundef nonnull align 8 dereferenceable(16) ptr @_ZNSt6vectorI12HighsCDoubleSaIS0_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %6, i64 noundef %indvars.iv) #8
  call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(16) %110, ptr noundef nonnull align 8 dereferenceable(16) %8, i64 16, i1 false), !tbaa.struct !32
  %111 = call noundef nonnull align 8 dereferenceable(16) ptr @_ZNSt6vectorI12HighsCDoubleSaIS0_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %7, i64 noundef %indvars.iv) #8
  call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(16) %111, ptr noundef nonnull align 8 dereferenceable(16) %9, i64 16, i1 false), !tbaa.struct !32
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %10) #8
  %112 = load ptr, ptr %85, align 8, !tbaa !34
  %113 = sext i32 %109 to i64
  %114 = getelementptr inbounds double, ptr %112, i64 %113
  %115 = load double, ptr %114, align 8, !tbaa !33
  call void @_ZN12HighsCDoubleC2Ed(ptr noundef nonnull align 8 dereferenceable(16) %10, double noundef %115)
  %116 = call noundef nonnull align 8 dereferenceable(16) ptr @_ZNSt6vectorI12HighsCDoubleSaIS0_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %5, i64 noundef %indvars.iv) #8
  call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(16) %116, ptr noundef nonnull align 8 dereferenceable(16) %10, i64 16, i1 false), !tbaa.struct !32
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %10) #8
  %117 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt6vectorIdSaIdEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %86, i64 noundef %113) #8
  %118 = load double, ptr %117, align 8, !tbaa !33
  %119 = invoke noundef nonnull align 8 dereferenceable(16) ptr @_ZN12HighsCDoublepLEd(ptr noundef nonnull align 8 dereferenceable(16) %8, double noundef %118)
          to label %120 unwind label %128

120:                                              ; preds = %107
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %11) #8
  %121 = call noundef nonnull align 8 dereferenceable(16) ptr @_ZNSt6vectorI12HighsCDoubleSaIS0_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %5, i64 noundef %indvars.iv) #8
  %122 = invoke { double, double } @_ZmldRK12HighsCDouble(double noundef %118, ptr noundef nonnull align 8 dereferenceable(16) %121)
          to label %123 unwind label %130

123:                                              ; preds = %120
  %124 = extractvalue { double, double } %122, 0
  store double %124, ptr %11, align 8
  %125 = extractvalue { double, double } %122, 1
  store double %125, ptr %87, align 8
  %126 = invoke noundef nonnull align 8 dereferenceable(16) ptr @_ZN12HighsCDoublepLERKS_(ptr noundef nonnull align 8 dereferenceable(16) %9, ptr noundef nonnull align 8 dereferenceable(16) %11)
          to label %127 unwind label %130

127:                                              ; preds = %123
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %11) #8
  %indvars.iv.next = add nuw nsw i64 %indvars.iv, 1
  %.not = icmp eq i64 %indvars.iv.next, %88
  br i1 %.not, label %._crit_edge193, label %107, !llvm.loop !35

128:                                              ; preds = %107
  %129 = landingpad { ptr, i32 }
          cleanup
  br label %451

130:                                              ; preds = %123, %120
  %131 = landingpad { ptr, i32 }
          cleanup
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %11) #8
  br label %451

._crit_edge204:                                   ; preds = %235
  %132 = icmp ne i32 %.4136, -1
  br i1 %132, label %238, label %._crit_edge204.thread

133:                                              ; preds = %.lr.ph203, %235
  %indvars.iv212 = phi i64 [ 0, %.lr.ph203 ], [ %indvars.iv.next213, %235 ]
  %.0132201 = phi i32 [ -1, %.lr.ph203 ], [ %.4136, %235 ]
  %.0137200 = phi i32 [ -1, %.lr.ph203 ], [ %.4141, %235 ]
  %.0142199 = phi double [ 0.000000e+00, %.lr.ph203 ], [ %.4146, %235 ]
  %.0147198 = phi i8 [ 1, %.lr.ph203 ], [ %.4151, %235 ]
  %134 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNSt6vectorIiSaIiEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %59, i64 noundef %indvars.iv212) #8
  %135 = load i32, ptr %134, align 4, !tbaa !30
  %136 = sext i32 %135 to i64
  %137 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt6vectorIdSaIdEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %91, i64 noundef %136) #8
  %138 = load double, ptr %137, align 8, !tbaa !33
  %139 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt6vectorIdSaIdEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %92, i64 noundef %136) #8
  %140 = load double, ptr %139, align 8, !tbaa !33
  %141 = load double, ptr %93, align 8, !tbaa !37
  %142 = fsub double %138, %141
  %143 = fcmp oge double %140, %142
  %144 = zext i1 %143 to i8
  br i1 %143, label %145, label %147

145:                                              ; preds = %133
  %146 = trunc nuw i8 %.0147198 to i1
  br i1 %146, label %147, label %235

147:                                              ; preds = %145, %133
  %148 = load ptr, ptr %94, align 8, !tbaa !34
  %149 = getelementptr inbounds double, ptr %148, i64 %136
  %150 = load double, ptr %149, align 8, !tbaa !33
  %151 = fmul double %138, %150
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %12) #8
  %152 = invoke { double, double } @_ZmidRK12HighsCDouble(double noundef %151, ptr noundef nonnull align 8 dereferenceable(16) %95)
          to label %153 unwind label %160

153:                                              ; preds = %147
  %154 = extractvalue { double, double } %152, 0
  store double %154, ptr %12, align 8
  %155 = extractvalue { double, double } %152, 1
  store double %155, ptr %96, align 8
  %156 = load double, ptr %93, align 8, !tbaa !37
  %157 = fmul double %156, 1.000000e+01
  %158 = invoke noundef zeroext i1 @_ZNK12HighsCDoubleleEd(ptr noundef nonnull align 8 dereferenceable(16) %12, double noundef %157)
          to label %159 unwind label %160

159:                                              ; preds = %153
  br i1 %158, label %234, label %162

160:                                              ; preds = %153, %147
  %161 = landingpad { ptr, i32 }
          cleanup
  br label %237

162:                                              ; preds = %159
  %163 = load ptr, ptr %94, align 8, !tbaa !34
  %164 = getelementptr inbounds double, ptr %163, i64 %136
  %165 = load double, ptr %164, align 8, !tbaa !33
  %166 = call noundef double @_ZSt3absd(double noundef %165)
  %167 = load double, ptr %93, align 8, !tbaa !37
  %168 = fmul double %167, 1.000000e+03
  %169 = fcmp olt double %166, %168
  br i1 %169, label %234, label %170

170:                                              ; preds = %162
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %13) #8
  %171 = load ptr, ptr %94, align 8, !tbaa !34
  %172 = getelementptr inbounds double, ptr %171, i64 %136
  %173 = load double, ptr %172, align 8, !tbaa !33
  %174 = invoke { double, double } @_ZNK12HighsCDoubledvEd(ptr noundef nonnull align 8 dereferenceable(16) %12, double noundef %173)
          to label %175 unwind label %181

175:                                              ; preds = %170
  %176 = extractvalue { double, double } %174, 0
  store double %176, ptr %13, align 8
  %177 = extractvalue { double, double } %174, 1
  store double %177, ptr %97, align 8
  %178 = call noundef double @_ZNK12HighsCDoublecvdEv(ptr noundef nonnull align 8 dereferenceable(16) %13)
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %13) #8
  %179 = load double, ptr %93, align 8, !tbaa !37
  %180 = call noundef zeroext i1 @_ZN13HighsIntegers10isIntegralEdd(double noundef %178, double noundef %179)
  br i1 %180, label %234, label %183

181:                                              ; preds = %170
  %182 = landingpad { ptr, i32 }
          cleanup
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %13) #8
  br label %237

183:                                              ; preds = %175
  %184 = call double @llvm.ceil.f64(double %178)
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %14) #8
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %15) #8
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %16) #8
  call void @_ZN12HighsCDoubleC2Ed(ptr noundef nonnull align 8 dereferenceable(16) %16, double noundef %138)
  %185 = call { double, double } @_ZNK12HighsCDoublemiEd(ptr noundef nonnull align 8 dereferenceable(16) %16, double noundef %184)
  %186 = extractvalue { double, double } %185, 0
  store double %186, ptr %15, align 8
  %187 = extractvalue { double, double } %185, 1
  store double %187, ptr %98, align 8
  %188 = call { double, double } @_ZNK12HighsCDoubleplEd(ptr noundef nonnull align 8 dereferenceable(16) %15, double noundef 1.000000e+00)
  %189 = extractvalue { double, double } %188, 0
  store double %189, ptr %14, align 8
  %190 = extractvalue { double, double } %188, 1
  store double %190, ptr %99, align 8
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %16) #8
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %15) #8
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %17) #8
  %191 = load ptr, ptr %94, align 8, !tbaa !34
  %192 = getelementptr inbounds double, ptr %191, i64 %136
  %193 = load double, ptr %192, align 8, !tbaa !33
  %194 = invoke { double, double } @_ZNK12HighsCDoublemlEd(ptr noundef nonnull align 8 dereferenceable(16) %14, double noundef %193)
          to label %195 unwind label %212

195:                                              ; preds = %183
  %196 = extractvalue { double, double } %194, 0
  store double %196, ptr %17, align 8
  %197 = extractvalue { double, double } %194, 1
  store double %197, ptr %100, align 8
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %18) #8
  %198 = call ptr @_ZNSt6vectorIiSaIiEE5beginEv(ptr noundef nonnull align 8 dereferenceable(24) %59) #8
  %199 = call ptr @_ZNSt6vectorIiSaIiEE3endEv(ptr noundef nonnull align 8 dereferenceable(24) %59) #8
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %19) #8
  %200 = call noundef double @_ZNK12HighsCDoublecvdEv(ptr noundef nonnull align 8 dereferenceable(16) %17)
  store double %200, ptr %19, align 8, !tbaa !33
  %201 = invoke ptr @"_ZSt11upper_boundIN9__gnu_cxx17__normal_iteratorIPiSt6vectorIiSaIiEEEEdZN18HighsCutGeneration31separateLiftedMixedIntegerCoverEvE3$_1ET_S9_S9_RKT0_T1_"(ptr %198, ptr %199, ptr noundef nonnull align 8 dereferenceable(8) %19, ptr nonnull %0)
          to label %202 unwind label %214

202:                                              ; preds = %195
  store ptr %201, ptr %18, align 8
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %20) #8
  %203 = call ptr @_ZNSt6vectorIiSaIiEE5beginEv(ptr noundef nonnull align 8 dereferenceable(24) %59) #8
  store ptr %203, ptr %20, align 8
  %204 = call noundef i64 @_ZN9__gnu_cxxmiIPiSt6vectorIiSaIiEEEENS_17__normal_iteratorIT_T0_E15difference_typeERKS8_SB_(ptr noundef nonnull align 8 dereferenceable(8) %18, ptr noundef nonnull align 8 dereferenceable(8) %20) #8
  %205 = trunc i64 %204 to i32
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %20) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %19) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %18) #8
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %21) #8
  %sext166 = shl i64 %204, 32
  %206 = ashr exact i64 %sext166, 32
  %207 = call noundef nonnull align 8 dereferenceable(16) ptr @_ZNSt6vectorI12HighsCDoubleSaIS0_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %7, i64 noundef %206) #8
  call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(16) %21, ptr noundef nonnull align 8 dereferenceable(16) %207, i64 16, i1 false), !tbaa.struct !32
  %sext220 = shl i64 %204, 32
  %208 = ashr exact i64 %sext220, 32
  %209 = icmp slt i64 %indvars.iv212, %208
  br i1 %209, label %210, label %218

210:                                              ; preds = %202
  %211 = invoke noundef nonnull align 8 dereferenceable(16) ptr @_ZN12HighsCDoublemIEd(ptr noundef nonnull align 8 dereferenceable(16) %21, double noundef %151)
          to label %218 unwind label %216

212:                                              ; preds = %183
  %213 = landingpad { ptr, i32 }
          cleanup
  br label %236

214:                                              ; preds = %195
  %215 = landingpad { ptr, i32 }
          cleanup
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %19) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %18) #8
  br label %236

216:                                              ; preds = %210
  %217 = landingpad { ptr, i32 }
          cleanup
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %21) #8
  br label %236

218:                                              ; preds = %210, %202
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %22) #8
  %219 = load ptr, ptr %94, align 8, !tbaa !34
  %220 = getelementptr inbounds double, ptr %219, i64 %136
  %221 = load double, ptr %220, align 8, !tbaa !33
  %222 = fmul double %184, %221
  %223 = call { double, double } @_ZNK12HighsCDoubleplEd(ptr noundef nonnull align 8 dereferenceable(16) %21, double noundef %222)
  %224 = extractvalue { double, double } %223, 0
  store double %224, ptr %22, align 8
  %225 = extractvalue { double, double } %223, 1
  store double %225, ptr %101, align 8
  %226 = call noundef double @_ZNK12HighsCDoublecvdEv(ptr noundef nonnull align 8 dereferenceable(16) %22)
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %22) #8
  %227 = fcmp ogt double %226, %.0142199
  br i1 %227, label %231, label %228

228:                                              ; preds = %218
  br i1 %143, label %233, label %229

229:                                              ; preds = %228
  %230 = trunc nuw i8 %.0147198 to i1
  br i1 %230, label %231, label %233

231:                                              ; preds = %229, %218
  %232 = trunc nuw nsw i64 %indvars.iv212 to i32
  br label %233

233:                                              ; preds = %231, %229, %228
  %.1148 = phi i8 [ %144, %231 ], [ %.0147198, %228 ], [ %.0147198, %229 ]
  %.1143 = phi double [ %226, %231 ], [ %.0142199, %228 ], [ %.0142199, %229 ]
  %.1138 = phi i32 [ %205, %231 ], [ %.0137200, %228 ], [ %.0137200, %229 ]
  %.1133 = phi i32 [ %232, %231 ], [ %.0132201, %228 ], [ %.0132201, %229 ]
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %21) #8
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %17) #8
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %14) #8
  br label %234

234:                                              ; preds = %233, %175, %162, %159
  %.3150 = phi i8 [ %.0147198, %159 ], [ %.0147198, %162 ], [ %.1148, %233 ], [ %.0147198, %175 ]
  %.3145 = phi double [ %.0142199, %159 ], [ %.0142199, %162 ], [ %.1143, %233 ], [ %.0142199, %175 ]
  %.3140 = phi i32 [ %.0137200, %159 ], [ %.0137200, %162 ], [ %.1138, %233 ], [ %.0137200, %175 ]
  %.3135 = phi i32 [ %.0132201, %159 ], [ %.0132201, %162 ], [ %.1133, %233 ], [ %.0132201, %175 ]
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %12) #8
  br label %235

235:                                              ; preds = %145, %234
  %.4151 = phi i8 [ %.3150, %234 ], [ %.0147198, %145 ]
  %.4146 = phi double [ %.3145, %234 ], [ %.0142199, %145 ]
  %.4141 = phi i32 [ %.3140, %234 ], [ %.0137200, %145 ]
  %.4136 = phi i32 [ %.3135, %234 ], [ %.0132201, %145 ]
  %indvars.iv.next213 = add nuw nsw i64 %indvars.iv212, 1
  %.not155 = icmp eq i64 %indvars.iv.next213, %102
  br i1 %.not155, label %._crit_edge204, label %133, !llvm.loop !38

236:                                              ; preds = %214, %216, %212
  %.pn167.pn = phi { ptr, i32 } [ %213, %212 ], [ %217, %216 ], [ %215, %214 ]
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %17) #8
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %14) #8
  br label %237

237:                                              ; preds = %181, %236, %160
  %.pn167.pn.pn.pn = phi { ptr, i32 } [ %161, %160 ], [ %.pn167.pn, %236 ], [ %182, %181 ]
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %12) #8
  br label %451

238:                                              ; preds = %._crit_edge204
  %239 = sext i32 %.4136 to i64
  %240 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNSt6vectorIiSaIiEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %59, i64 noundef %239) #8
  %241 = load i32, ptr %240, align 4, !tbaa !30
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %23) #8
  %242 = getelementptr inbounds i8, ptr %0, i64 192
  %243 = load ptr, ptr %242, align 8, !tbaa !34
  %244 = sext i32 %241 to i64
  %245 = getelementptr inbounds double, ptr %243, i64 %244
  %246 = load double, ptr %245, align 8, !tbaa !33
  call void @_ZN12HighsCDoubleC2Ed(ptr noundef nonnull align 8 dereferenceable(16) %23, double noundef %246)
  %247 = getelementptr inbounds i8, ptr %0, i64 80
  %248 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt6vectorIdSaIdEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %247, i64 noundef %244) #8
  %249 = load double, ptr %248, align 8, !tbaa !33
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %24) #8
  %250 = invoke { double, double } @_ZmldRK12HighsCDouble(double noundef %249, ptr noundef nonnull align 8 dereferenceable(16) %23)
          to label %251 unwind label %294

251:                                              ; preds = %238
  %252 = extractvalue { double, double } %250, 0
  store double %252, ptr %24, align 8
  %253 = getelementptr inbounds i8, ptr %24, i64 8
  %254 = extractvalue { double, double } %250, 1
  store double %254, ptr %253, align 8
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %25) #8
  %255 = getelementptr inbounds i8, ptr %0, i64 64
  %256 = invoke { double, double } @_ZNK12HighsCDoublemiERKS_(ptr noundef nonnull align 8 dereferenceable(16) %24, ptr noundef nonnull align 8 dereferenceable(16) %255)
          to label %257 unwind label %296

257:                                              ; preds = %251
  %258 = extractvalue { double, double } %256, 0
  store double %258, ptr %25, align 8
  %259 = getelementptr inbounds i8, ptr %25, i64 8
  %260 = extractvalue { double, double } %256, 1
  store double %260, ptr %259, align 8
  %261 = sext i32 %.4141 to i64
  invoke void @_ZNSt6vectorI12HighsCDoubleSaIS0_EE6resizeEm(ptr noundef nonnull align 8 dereferenceable(24) %5, i64 noundef %261)
          to label %262 unwind label %296

262:                                              ; preds = %257
  invoke void @_ZNSt6vectorIiSaIiEE6resizeEm(ptr noundef nonnull align 8 dereferenceable(24) %59, i64 noundef %261)
          to label %263 unwind label %296

263:                                              ; preds = %262
  %264 = add nsw i32 %.4141, 1
  %265 = sext i32 %264 to i64
  invoke void @_ZNSt6vectorI12HighsCDoubleSaIS0_EE6resizeEm(ptr noundef nonnull align 8 dereferenceable(24) %6, i64 noundef %265)
          to label %266 unwind label %296

266:                                              ; preds = %263
  invoke void @_ZNSt6vectorI12HighsCDoubleSaIS0_EE6resizeEm(ptr noundef nonnull align 8 dereferenceable(24) %7, i64 noundef %265)
          to label %267 unwind label %296

267:                                              ; preds = %266
  %268 = icmp slt i32 %.4136, %.4141
  br i1 %268, label %269, label %.loopexit

269:                                              ; preds = %267
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %27) #8
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %28) #8
  %270 = call ptr @_ZNSt6vectorI12HighsCDoubleSaIS0_EE5beginEv(ptr noundef nonnull align 8 dereferenceable(24) %5) #8
  store ptr %270, ptr %28, align 8
  %271 = call ptr @_ZNK9__gnu_cxx17__normal_iteratorIP12HighsCDoubleSt6vectorIS1_SaIS1_EEEplEl(ptr noundef nonnull align 8 dereferenceable(8) %28, i64 noundef %239) #8
  store ptr %271, ptr %27, align 8
  call void @_ZN9__gnu_cxx17__normal_iteratorIPK12HighsCDoubleSt6vectorIS1_SaIS1_EEEC2IPS1_vEERKNS0_IT_S6_EE(ptr noundef nonnull align 8 dereferenceable(8) %26, ptr noundef nonnull align 8 dereferenceable(8) %27) #8
  %272 = load ptr, ptr %26, align 8
  %273 = invoke ptr @_ZNSt6vectorI12HighsCDoubleSaIS0_EE5eraseEN9__gnu_cxx17__normal_iteratorIPKS0_S2_EE(ptr noundef nonnull align 8 dereferenceable(24) %5, ptr %272)
          to label %274 unwind label %298

274:                                              ; preds = %269
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %28) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %27) #8
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %30) #8
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %31) #8
  %275 = call ptr @_ZNSt6vectorIiSaIiEE5beginEv(ptr noundef nonnull align 8 dereferenceable(24) %59) #8
  store ptr %275, ptr %31, align 8
  %276 = call ptr @_ZNK9__gnu_cxx17__normal_iteratorIPiSt6vectorIiSaIiEEEplEl(ptr noundef nonnull align 8 dereferenceable(8) %31, i64 noundef %239) #8
  store ptr %276, ptr %30, align 8
  call void @_ZN9__gnu_cxx17__normal_iteratorIPKiSt6vectorIiSaIiEEEC2IPivEERKNS0_IT_S5_EE(ptr noundef nonnull align 8 dereferenceable(8) %29, ptr noundef nonnull align 8 dereferenceable(8) %30) #8
  %277 = load ptr, ptr %29, align 8
  %278 = invoke ptr @_ZNSt6vectorIiSaIiEE5eraseEN9__gnu_cxx17__normal_iteratorIPKiS1_EE(ptr noundef nonnull align 8 dereferenceable(24) %59, ptr %277)
          to label %279 unwind label %300

279:                                              ; preds = %274
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %31) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %30) #8
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %33) #8
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %34) #8
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %35) #8
  %280 = call ptr @_ZNSt6vectorI12HighsCDoubleSaIS0_EE5beginEv(ptr noundef nonnull align 8 dereferenceable(24) %6) #8
  store ptr %280, ptr %35, align 8
  %281 = call ptr @_ZNK9__gnu_cxx17__normal_iteratorIP12HighsCDoubleSt6vectorIS1_SaIS1_EEEplEl(ptr noundef nonnull align 8 dereferenceable(8) %35, i64 noundef %239) #8
  store ptr %281, ptr %34, align 8
  %282 = call ptr @_ZNK9__gnu_cxx17__normal_iteratorIP12HighsCDoubleSt6vectorIS1_SaIS1_EEEplEl(ptr noundef nonnull align 8 dereferenceable(8) %34, i64 noundef 1) #8
  store ptr %282, ptr %33, align 8
  call void @_ZN9__gnu_cxx17__normal_iteratorIPK12HighsCDoubleSt6vectorIS1_SaIS1_EEEC2IPS1_vEERKNS0_IT_S6_EE(ptr noundef nonnull align 8 dereferenceable(8) %32, ptr noundef nonnull align 8 dereferenceable(8) %33) #8
  %283 = load ptr, ptr %32, align 8
  %284 = invoke ptr @_ZNSt6vectorI12HighsCDoubleSaIS0_EE5eraseEN9__gnu_cxx17__normal_iteratorIPKS0_S2_EE(ptr noundef nonnull align 8 dereferenceable(24) %6, ptr %283)
          to label %285 unwind label %302

285:                                              ; preds = %279
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %35) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %34) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %33) #8
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %37) #8
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %38) #8
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %39) #8
  %286 = call ptr @_ZNSt6vectorI12HighsCDoubleSaIS0_EE5beginEv(ptr noundef nonnull align 8 dereferenceable(24) %7) #8
  store ptr %286, ptr %39, align 8
  %287 = call ptr @_ZNK9__gnu_cxx17__normal_iteratorIP12HighsCDoubleSt6vectorIS1_SaIS1_EEEplEl(ptr noundef nonnull align 8 dereferenceable(8) %39, i64 noundef %239) #8
  store ptr %287, ptr %38, align 8
  %288 = call ptr @_ZNK9__gnu_cxx17__normal_iteratorIP12HighsCDoubleSt6vectorIS1_SaIS1_EEEplEl(ptr noundef nonnull align 8 dereferenceable(8) %38, i64 noundef 1) #8
  store ptr %288, ptr %37, align 8
  call void @_ZN9__gnu_cxx17__normal_iteratorIPK12HighsCDoubleSt6vectorIS1_SaIS1_EEEC2IPS1_vEERKNS0_IT_S6_EE(ptr noundef nonnull align 8 dereferenceable(8) %36, ptr noundef nonnull align 8 dereferenceable(8) %37) #8
  %289 = load ptr, ptr %36, align 8
  %290 = invoke ptr @_ZNSt6vectorI12HighsCDoubleSaIS0_EE5eraseEN9__gnu_cxx17__normal_iteratorIPKS0_S2_EE(ptr noundef nonnull align 8 dereferenceable(24) %7, ptr %289)
          to label %291 unwind label %304

291:                                              ; preds = %285
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %39) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %38) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %37) #8
  %292 = add nsw i32 %.4141, -1
  %wide.trip.count = sext i32 %292 to i64
  br label %293

293:                                              ; preds = %309, %291
  %indvars.iv214 = phi i64 [ %indvars.iv.next215, %309 ], [ %239, %291 ]
  %indvars.iv.next215 = add nsw i64 %indvars.iv214, 1
  %exitcond.not = icmp eq i64 %indvars.iv214, %wide.trip.count
  br i1 %exitcond.not, label %.loopexit, label %306

294:                                              ; preds = %238
  %295 = landingpad { ptr, i32 }
          cleanup
  br label %447

296:                                              ; preds = %266, %263, %262, %257, %251
  %297 = landingpad { ptr, i32 }
          cleanup
  br label %446

298:                                              ; preds = %269
  %299 = landingpad { ptr, i32 }
          cleanup
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %28) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %27) #8
  br label %446

300:                                              ; preds = %274
  %301 = landingpad { ptr, i32 }
          cleanup
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %31) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %30) #8
  br label %446

302:                                              ; preds = %279
  %303 = landingpad { ptr, i32 }
          cleanup
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %35) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %34) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %33) #8
  br label %446

304:                                              ; preds = %285
  %305 = landingpad { ptr, i32 }
          cleanup
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %39) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %38) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %37) #8
  br label %446

306:                                              ; preds = %293
  %307 = call noundef nonnull align 8 dereferenceable(16) ptr @_ZNSt6vectorI12HighsCDoubleSaIS0_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %6, i64 noundef %indvars.iv.next215) #8
  %308 = invoke noundef nonnull align 8 dereferenceable(16) ptr @_ZN12HighsCDoublemIEd(ptr noundef nonnull align 8 dereferenceable(16) %307, double noundef %249)
          to label %309 unwind label %312

309:                                              ; preds = %306
  %310 = call noundef nonnull align 8 dereferenceable(16) ptr @_ZNSt6vectorI12HighsCDoubleSaIS0_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %7, i64 noundef %indvars.iv.next215) #8
  %311 = invoke noundef nonnull align 8 dereferenceable(16) ptr @_ZN12HighsCDoublemIERKS_(ptr noundef nonnull align 8 dereferenceable(16) %310, ptr noundef nonnull align 8 dereferenceable(16) %24)
          to label %293 unwind label %312, !llvm.loop !39

312:                                              ; preds = %309, %306
  %313 = landingpad { ptr, i32 }
          cleanup
  br label %446

.loopexit:                                        ; preds = %293, %267
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %40) #8
  %314 = call noundef i64 @_ZNKSt6vectorI12HighsCDoubleSaIS0_EE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24) %5) #8
  %315 = trunc i64 %314 to i32
  store i32 %315, ptr %40, align 4, !tbaa !30
  %316 = getelementptr inbounds i8, ptr %0, i64 176
  %317 = load double, ptr %316, align 8, !tbaa !37
  %318 = fmul double %317, 1.000000e+01
  %319 = call noundef zeroext i1 @_ZNK12HighsCDoublegtEd(ptr noundef nonnull align 8 dereferenceable(16) %25, double noundef %318)
  br i1 %319, label %321, label %320

320:                                              ; preds = %.loopexit
  call void @__assert_fail(ptr noundef nonnull @.str.55, ptr noundef nonnull @.str.52, i32 noundef 397, ptr noundef nonnull @__PRETTY_FUNCTION__._ZN18HighsCutGeneration31separateLiftedMixedIntegerCoverEv) #9
  unreachable

321:                                              ; preds = %.loopexit
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %41) #8
  %322 = invoke { double, double } @_ZNK12HighsCDoubledvERKS_(ptr noundef nonnull align 8 dereferenceable(16) %25, ptr noundef nonnull align 8 dereferenceable(16) %23)
          to label %323 unwind label %342

323:                                              ; preds = %321
  %324 = extractvalue { double, double } %322, 0
  store double %324, ptr %41, align 8
  %325 = getelementptr inbounds i8, ptr %41, i64 8
  %326 = extractvalue { double, double } %322, 1
  store double %326, ptr %325, align 8
  %327 = call noundef double @_ZNK12HighsCDoublecvdEv(ptr noundef nonnull align 8 dereferenceable(16) %41)
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %41) #8
  %328 = call double @llvm.ceil.f64(double %327)
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %42) #8
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %43) #8
  %329 = call double @llvm.floor.f64(double %327)
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %44) #8
  call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(16) %44, ptr noundef nonnull align 8 dereferenceable(16) %23, i64 16, i1 false), !tbaa.struct !32
  %330 = invoke { double, double } @_ZmldRK12HighsCDouble(double noundef %329, ptr noundef nonnull align 8 dereferenceable(16) %44)
          to label %331 unwind label %344

331:                                              ; preds = %323
  %332 = extractvalue { double, double } %330, 0
  store double %332, ptr %43, align 8
  %333 = getelementptr inbounds i8, ptr %43, i64 8
  %334 = extractvalue { double, double } %330, 1
  store double %334, ptr %333, align 8
  %335 = invoke { double, double } @_ZNK12HighsCDoublemiERKS_(ptr noundef nonnull align 8 dereferenceable(16) %25, ptr noundef nonnull align 8 dereferenceable(16) %43)
          to label %336 unwind label %344

336:                                              ; preds = %331
  %337 = extractvalue { double, double } %335, 0
  store double %337, ptr %42, align 8
  %338 = getelementptr inbounds i8, ptr %42, i64 8
  %339 = extractvalue { double, double } %335, 1
  store double %339, ptr %338, align 8
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %44) #8
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %43) #8
  %340 = call noundef zeroext i1 @_ZNK12HighsCDoubleltEd(ptr noundef nonnull align 8 dereferenceable(16) %42, double noundef 0.000000e+00)
  br i1 %340, label %341, label %346

341:                                              ; preds = %336
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %45) #8
  call void @_ZN12HighsCDoubleC2Ed(ptr noundef nonnull align 8 dereferenceable(16) %45, double noundef 0.000000e+00)
  call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(16) %42, ptr noundef nonnull align 8 dereferenceable(16) %45, i64 16, i1 false), !tbaa.struct !32
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %45) #8
  br label %346

342:                                              ; preds = %321
  %343 = landingpad { ptr, i32 }
          cleanup
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %41) #8
  br label %445

344:                                              ; preds = %331, %323
  %345 = landingpad { ptr, i32 }
          cleanup
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %44) #8
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %43) #8
  br label %444

346:                                              ; preds = %341, %336
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %46) #8
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %47) #8
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %48) #8
  call void @_ZN12HighsCDoubleC2Ed(ptr noundef nonnull align 8 dereferenceable(16) %48, double noundef %249)
  %347 = call { double, double } @_ZNK12HighsCDoublemiEd(ptr noundef nonnull align 8 dereferenceable(16) %48, double noundef %328)
  %348 = extractvalue { double, double } %347, 0
  store double %348, ptr %47, align 8
  %349 = getelementptr inbounds i8, ptr %47, i64 8
  %350 = extractvalue { double, double } %347, 1
  store double %350, ptr %349, align 8
  %351 = call { double, double } @_ZNK12HighsCDoubleplEd(ptr noundef nonnull align 8 dereferenceable(16) %47, double noundef 1.000000e+00)
  %352 = extractvalue { double, double } %351, 0
  store double %352, ptr %46, align 8
  %353 = getelementptr inbounds i8, ptr %46, i64 8
  %354 = extractvalue { double, double } %351, 1
  store double %354, ptr %353, align 8
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %48) #8
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %47) #8
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %49) #8
  %355 = invoke { double, double } @_ZNK12HighsCDoublemlERKS_(ptr noundef nonnull align 8 dereferenceable(16) %46, ptr noundef nonnull align 8 dereferenceable(16) %23)
          to label %356 unwind label %396

356:                                              ; preds = %346
  %357 = extractvalue { double, double } %355, 0
  store double %357, ptr %49, align 8
  %358 = getelementptr inbounds i8, ptr %49, i64 8
  %359 = extractvalue { double, double } %355, 1
  store double %359, ptr %358, align 8
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %50) #8
  %360 = fsub double %328, %249
  %361 = fadd double %360, -5.000000e-01
  %362 = call double @llvm.floor.f64(double %361)
  %363 = fptosi double %362 to i32
  store i32 %363, ptr %50, align 4, !tbaa !30
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %51) #8
  store ptr %23, ptr %51, align 8, !tbaa !40
  %364 = getelementptr inbounds i8, ptr %51, i64 8
  store ptr %50, ptr %364, align 8, !tbaa !40
  %365 = getelementptr inbounds i8, ptr %51, i64 16
  store ptr %42, ptr %365, align 8, !tbaa !40
  %366 = getelementptr inbounds i8, ptr %51, i64 24
  store ptr %0, ptr %366, align 8, !tbaa !41
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %52) #8
  %367 = fsub double %249, %328
  %368 = fadd double %367, 5.000000e-01
  %369 = call double @llvm.floor.f64(double %368)
  %370 = fptosi double %369 to i64
  store i64 %370, ptr %52, align 8, !tbaa !43
  call void @llvm.lifetime.start.p0(i64 80, ptr nonnull %53) #8
  store ptr %40, ptr %53, align 8, !tbaa !40
  %371 = getelementptr inbounds i8, ptr %53, i64 8
  store ptr %0, ptr %371, align 8, !tbaa !44
  %372 = getelementptr inbounds i8, ptr %53, i64 16
  store ptr %7, ptr %372, align 8, !tbaa !40
  %373 = getelementptr inbounds i8, ptr %53, i64 24
  store ptr %5, ptr %373, align 8, !tbaa !40
  %374 = getelementptr inbounds i8, ptr %53, i64 32
  store ptr %6, ptr %374, align 8, !tbaa !40
  %375 = getelementptr inbounds i8, ptr %53, i64 40
  store ptr %49, ptr %375, align 8, !tbaa !40
  %376 = getelementptr inbounds i8, ptr %53, i64 48
  store ptr %46, ptr %376, align 8, !tbaa !40
  %377 = getelementptr inbounds i8, ptr %53, i64 56
  store ptr %23, ptr %377, align 8, !tbaa !40
  %378 = getelementptr inbounds i8, ptr %53, i64 64
  store ptr %42, ptr %378, align 8, !tbaa !40
  %379 = getelementptr inbounds i8, ptr %53, i64 72
  store ptr %52, ptr %379, align 8, !tbaa !40
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %54) #8
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %55) #8
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %56) #8
  call void @_ZN12HighsCDoubleC2Ed(ptr noundef nonnull align 8 dereferenceable(16) %56, double noundef %249)
  %380 = call { double, double } @_ZNK12HighsCDoublemiEd(ptr noundef nonnull align 8 dereferenceable(16) %56, double noundef %328)
  %381 = extractvalue { double, double } %380, 0
  store double %381, ptr %55, align 8
  %382 = getelementptr inbounds i8, ptr %55, i64 8
  %383 = extractvalue { double, double } %380, 1
  store double %383, ptr %382, align 8
  %384 = invoke { double, double } @_ZNK12HighsCDoublemlERKS_(ptr noundef nonnull align 8 dereferenceable(16) %55, ptr noundef nonnull align 8 dereferenceable(16) %42)
          to label %385 unwind label %398

385:                                              ; preds = %356
  %386 = extractvalue { double, double } %384, 0
  store double %386, ptr %54, align 8
  %387 = getelementptr inbounds i8, ptr %54, i64 8
  %388 = extractvalue { double, double } %384, 1
  store double %388, ptr %387, align 8
  %389 = invoke { double, double } @_ZNK12HighsCDoublemiERKS_(ptr noundef nonnull align 8 dereferenceable(16) %54, ptr noundef nonnull align 8 dereferenceable(16) %255)
          to label %390 unwind label %398

390:                                              ; preds = %385
  %391 = extractvalue { double, double } %389, 0
  %392 = extractvalue { double, double } %389, 1
  %393 = getelementptr inbounds i8, ptr %0, i64 208
  store double %391, ptr %393, align 8, !tbaa !33
  %.sroa.5.0..sroa_idx = getelementptr inbounds i8, ptr %0, i64 216
  store double %392, ptr %.sroa.5.0..sroa_idx, align 8, !tbaa !33
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %56) #8
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %55) #8
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %54) #8
  store i8 1, ptr %57, align 8, !tbaa !5
  store i8 0, ptr %58, align 1, !tbaa !28
  %394 = load i32, ptr %61, align 4, !tbaa !29
  %.not156206 = icmp eq i32 %394, 0
  br i1 %.not156206, label %._crit_edge210, label %.lr.ph209

.lr.ph209:                                        ; preds = %390
  %395 = getelementptr inbounds i8, ptr %0, i64 152
  br label %400

._crit_edge210:                                   ; preds = %439, %390
  call void @llvm.lifetime.end.p0(i64 80, ptr nonnull %53) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %52) #8
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %51) #8
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %50) #8
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %49) #8
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %46) #8
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %42) #8
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %40) #8
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %25) #8
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %24) #8
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %23) #8
  br label %._crit_edge204.thread

396:                                              ; preds = %346
  %397 = landingpad { ptr, i32 }
          cleanup
  br label %443

398:                                              ; preds = %385, %356
  %399 = landingpad { ptr, i32 }
          cleanup
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %56) #8
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %55) #8
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %54) #8
  br label %442

400:                                              ; preds = %.lr.ph209, %439
  %indvars.iv217 = phi i64 [ 0, %.lr.ph209 ], [ %indvars.iv.next218, %439 ]
  %401 = load ptr, ptr %242, align 8, !tbaa !34
  %402 = getelementptr inbounds double, ptr %401, i64 %indvars.iv217
  %403 = load double, ptr %402, align 8, !tbaa !33
  %404 = fcmp oeq double %403, 0.000000e+00
  br i1 %404, label %439, label %405

405:                                              ; preds = %400
  %406 = call noundef nonnull align 1 dereferenceable(1) ptr @_ZNSt6vectorIhSaIhEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %395, i64 noundef %indvars.iv217) #8
  %407 = load i8, ptr %406, align 1, !tbaa !31
  %.not157 = icmp eq i8 %407, 0
  br i1 %.not157, label %408, label %415

408:                                              ; preds = %405
  %409 = load ptr, ptr %242, align 8, !tbaa !34
  %410 = getelementptr inbounds double, ptr %409, i64 %indvars.iv217
  %411 = load double, ptr %410, align 8, !tbaa !33
  %412 = fcmp olt double %411, 0.000000e+00
  br i1 %412, label %413, label %414

413:                                              ; preds = %408
  store i8 0, ptr %57, align 8, !tbaa !5
  br label %439

414:                                              ; preds = %408
  store double 0.000000e+00, ptr %410, align 8, !tbaa !33
  br label %439

415:                                              ; preds = %405
  %416 = call noundef nonnull align 1 dereferenceable(1) ptr @_ZNSt6vectorIhSaIhEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %2, i64 noundef %indvars.iv217) #8
  %417 = load i8, ptr %416, align 1, !tbaa !31
  %.not158 = icmp eq i8 %417, 0
  %418 = load ptr, ptr %242, align 8, !tbaa !34
  %419 = getelementptr inbounds double, ptr %418, i64 %indvars.iv217
  %420 = load double, ptr %419, align 8, !tbaa !33
  br i1 %.not158, label %434, label %421

421:                                              ; preds = %415
  %422 = fneg double %420
  %423 = invoke noundef double @"_ZZN18HighsCutGeneration31separateLiftedMixedIntegerCoverEvENK3$_2clEd"(ptr noundef nonnull align 8 dereferenceable(32) %51, double noundef %422)
          to label %424 unwind label %432

424:                                              ; preds = %421
  %425 = fneg double %423
  %426 = load ptr, ptr %242, align 8, !tbaa !34
  %427 = getelementptr inbounds double, ptr %426, i64 %indvars.iv217
  store double %425, ptr %427, align 8, !tbaa !33
  %428 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt6vectorIdSaIdEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %247, i64 noundef %indvars.iv217) #8
  %429 = load double, ptr %428, align 8, !tbaa !33
  %430 = fmul double %429, %425
  %431 = invoke noundef nonnull align 8 dereferenceable(16) ptr @_ZN12HighsCDoublepLEd(ptr noundef nonnull align 8 dereferenceable(16) %393, double noundef %430)
          to label %439 unwind label %432

432:                                              ; preds = %434, %424, %421
  %433 = landingpad { ptr, i32 }
          cleanup
  br label %442

434:                                              ; preds = %415
  %435 = invoke noundef double @"_ZZN18HighsCutGeneration31separateLiftedMixedIntegerCoverEvENK3$_3clEd"(ptr noundef nonnull align 8 dereferenceable(80) %53, double noundef %420)
          to label %436 unwind label %432

436:                                              ; preds = %434
  %437 = load ptr, ptr %242, align 8, !tbaa !34
  %438 = getelementptr inbounds double, ptr %437, i64 %indvars.iv217
  store double %435, ptr %438, align 8, !tbaa !33
  br label %439

439:                                              ; preds = %436, %424, %413, %414, %400
  %indvars.iv.next218 = add nuw nsw i64 %indvars.iv217, 1
  %440 = load i32, ptr %61, align 4, !tbaa !29
  %441 = zext i32 %440 to i64
  %.not156 = icmp eq i64 %indvars.iv.next218, %441
  br i1 %.not156, label %._crit_edge210, label %400, !llvm.loop !46

442:                                              ; preds = %432, %398
  %.pn = phi { ptr, i32 } [ %433, %432 ], [ %399, %398 ]
  call void @llvm.lifetime.end.p0(i64 80, ptr nonnull %53) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %52) #8
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %51) #8
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %50) #8
  br label %443

443:                                              ; preds = %442, %396
  %.pn.pn = phi { ptr, i32 } [ %.pn, %442 ], [ %397, %396 ]
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %49) #8
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %46) #8
  br label %444

444:                                              ; preds = %443, %344
  %.pn.pn.pn = phi { ptr, i32 } [ %.pn.pn, %443 ], [ %345, %344 ]
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %42) #8
  br label %445

445:                                              ; preds = %444, %342
  %.pn.pn.pn.pn = phi { ptr, i32 } [ %.pn.pn.pn, %444 ], [ %343, %342 ]
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %40) #8
  br label %446

446:                                              ; preds = %445, %312, %304, %302, %300, %298, %296
  %.pn163 = phi { ptr, i32 } [ %313, %312 ], [ %.pn.pn.pn.pn, %445 ], [ %305, %304 ], [ %303, %302 ], [ %301, %300 ], [ %299, %298 ], [ %297, %296 ]
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %25) #8
  br label %447

447:                                              ; preds = %446, %294
  %.pn163.pn = phi { ptr, i32 } [ %.pn163, %446 ], [ %295, %294 ]
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %24) #8
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %23) #8
  br label %451

._crit_edge204.thread.critedge:                   ; preds = %83
  %448 = call noundef nonnull align 8 dereferenceable(16) ptr @_ZNSt6vectorI12HighsCDoubleSaIS0_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %6, i64 noundef %79) #8
  call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(16) %448, ptr noundef nonnull align 8 dereferenceable(16) %8, i64 16, i1 false), !tbaa.struct !32
  %449 = call noundef nonnull align 8 dereferenceable(16) ptr @_ZNSt6vectorI12HighsCDoubleSaIS0_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %7, i64 noundef %79) #8
  call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(16) %449, ptr noundef nonnull align 8 dereferenceable(16) %9, i64 16, i1 false), !tbaa.struct !32
  br label %._crit_edge204.thread

._crit_edge204.thread:                            ; preds = %._crit_edge204.thread.critedge, %._crit_edge193, %._crit_edge204, %._crit_edge210
  %450 = phi i1 [ false, %._crit_edge204 ], [ %132, %._crit_edge210 ], [ false, %._crit_edge193 ], [ false, %._crit_edge204.thread.critedge ]
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %9) #8
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %8) #8
  call void @_ZNSt6vectorI12HighsCDoubleSaIS0_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %7) #8
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %7) #8
  call void @_ZNSt6vectorI12HighsCDoubleSaIS0_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %6) #8
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %6) #8
  call void @_ZNSt6vectorI12HighsCDoubleSaIS0_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %5) #8
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %5) #8
  call void @_ZNSt6vectorIhSaIhEED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %2) #8
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %2) #8
  ret i1 %450

451:                                              ; preds = %237, %447, %128, %130
  %.pn173.pn = phi { ptr, i32 } [ %131, %130 ], [ %129, %128 ], [ %.pn167.pn.pn.pn, %237 ], [ %.pn163.pn, %447 ]
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %9) #8
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %8) #8
  br label %452

452:                                              ; preds = %451, %105
  %.pn173.pn.pn = phi { ptr, i32 } [ %.pn173.pn, %451 ], [ %106, %105 ]
  call void @_ZNSt6vectorI12HighsCDoubleSaIS0_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %7) #8
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %7) #8
  call void @_ZNSt6vectorI12HighsCDoubleSaIS0_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %6) #8
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %6) #8
  call void @_ZNSt6vectorI12HighsCDoubleSaIS0_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %5) #8
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %5) #8
  br label %453

453:                                              ; preds = %103, %452, %70
  %.pn173.pn.pn.pn.pn = phi { ptr, i32 } [ %71, %70 ], [ %.pn173.pn.pn, %452 ], [ %104, %103 ]
  call void @_ZNSt6vectorIhSaIhEED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %2) #8
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %2) #8
  resume { ptr, i32 } %.pn173.pn.pn.pn.pn
}

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

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

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

; Function Attrs: inlinehint mustprogress uwtable
declare hidden void @"_Z18pdqsort_branchlessIN9__gnu_cxx17__normal_iteratorIPiSt6vectorIiSaIiEEEEZN18HighsCutGeneration31separateLiftedMixedIntegerCoverEvE3$_0EvT_S9_T0_"(ptr, ptr, ptr) local_unnamed_addr #6

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

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

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

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

; Function Attrs: mustprogress nounwind uwtable
declare dso_local noundef zeroext i1 @_ZN13HighsIntegers10isIntegralEdd(double noundef, double noundef) local_unnamed_addr #1 align 2

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

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

; Function Attrs: inlinehint mustprogress uwtable
declare hidden ptr @"_ZSt11upper_boundIN9__gnu_cxx17__normal_iteratorIPiSt6vectorIiSaIiEEEEdZN18HighsCutGeneration31separateLiftedMixedIntegerCoverEvE3$_1ET_S9_S9_RKT0_T1_"(ptr, ptr, ptr noundef nonnull align 8 dereferenceable(8), ptr) local_unnamed_addr #6

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

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

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

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

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

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

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

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

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

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

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

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

; Function Attrs: inlinehint mustprogress uwtable
declare hidden noundef double @"_ZZN18HighsCutGeneration31separateLiftedMixedIntegerCoverEvENK3$_2clEd"(ptr noundef nonnull align 8 dereferenceable(32), double noundef) local_unnamed_addr #6 align 2

; Function Attrs: inlinehint mustprogress uwtable
declare hidden noundef double @"_ZZN18HighsCutGeneration31separateLiftedMixedIntegerCoverEvENK3$_3clEd"(ptr noundef nonnull align 8 dereferenceable(80), double noundef) local_unnamed_addr #6 align 2

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

attributes #0 = { mustprogress nocallback nofree nosync nounwind willreturn memory(argmem: readwrite) }
attributes #1 = { mustprogress nounwind uwtable "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }
attributes #2 = { 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 nounwind willreturn memory(argmem: readwrite) }
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 = { noreturn nounwind "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }
attributes #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 = { mustprogress nocallback nofree nosync nounwind speculatable willreturn memory(none) }
attributes #8 = { nounwind }
attributes #9 = { noreturn nounwind }

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

!0 = !{i32 1, !"wchar_size", i32 4}
!1 = !{i32 8, !"PIC Level", i32 2}
!2 = !{i32 7, !"PIE Level", i32 2}
!3 = !{i32 7, !"uwtable", i32 2}
!4 = !{!"clang version 19.1.0 (git@github.com:llvm/llvm-project.git a4bf6cd7cfb1a1421ba92bca9d017b49936c55e4)"}
!5 = !{!6, !26, i64 224}
!6 = !{!"_ZTS18HighsCutGeneration", !7, i64 0, !7, i64 8, !10, i64 16, !12, i64 24, !16, i64 48, !16, i64 64, !18, i64 80, !18, i64 104, !22, i64 128, !22, i64 152, !17, i64 176, !17, i64 184, !7, i64 192, !7, i64 200, !16, i64 208, !26, i64 224, !26, i64 225, !27, i64 228, !17, i64 232, !12, i64 240, !18, i64 264}
!7 = !{!"any pointer", !8, i64 0}
!8 = !{!"omnipotent char", !9, i64 0}
!9 = !{!"Simple C++ TBAA"}
!10 = !{!"_ZTS11HighsRandom", !11, i64 0}
!11 = !{!"long", !8, i64 0}
!12 = !{!"_ZTSSt6vectorIiSaIiEE", !13, i64 0}
!13 = !{!"_ZTSSt12_Vector_baseIiSaIiEE", !14, i64 0}
!14 = !{!"_ZTSNSt12_Vector_baseIiSaIiEE12_Vector_implE", !15, i64 0}
!15 = !{!"_ZTSNSt12_Vector_baseIiSaIiEE17_Vector_impl_dataE", !7, i64 0, !7, i64 8, !7, i64 16}
!16 = !{!"_ZTS12HighsCDouble", !17, i64 0, !17, i64 8}
!17 = !{!"double", !8, i64 0}
!18 = !{!"_ZTSSt6vectorIdSaIdEE", !19, i64 0}
!19 = !{!"_ZTSSt12_Vector_baseIdSaIdEE", !20, i64 0}
!20 = !{!"_ZTSNSt12_Vector_baseIdSaIdEE12_Vector_implE", !21, i64 0}
!21 = !{!"_ZTSNSt12_Vector_baseIdSaIdEE17_Vector_impl_dataE", !7, i64 0, !7, i64 8, !7, i64 16}
!22 = !{!"_ZTSSt6vectorIhSaIhEE", !23, i64 0}
!23 = !{!"_ZTSSt12_Vector_baseIhSaIhEE", !24, i64 0}
!24 = !{!"_ZTSNSt12_Vector_baseIhSaIhEE12_Vector_implE", !25, i64 0}
!25 = !{!"_ZTSNSt12_Vector_baseIhSaIhEE17_Vector_impl_dataE", !7, i64 0, !7, i64 8, !7, i64 16}
!26 = !{!"bool", !8, i64 0}
!27 = !{!"int", !8, i64 0}
!28 = !{!6, !26, i64 225}
!29 = !{!6, !27, i64 228}
!30 = !{!27, !27, i64 0}
!31 = !{!8, !8, i64 0}
!32 = !{i64 0, i64 8, !33, i64 8, i64 8, !33}
!33 = !{!17, !17, i64 0}
!34 = !{!6, !7, i64 192}
!35 = distinct !{!35, !36}
!36 = !{!"llvm.loop.mustprogress"}
!37 = !{!6, !17, i64 176}
!38 = distinct !{!38, !36}
!39 = distinct !{!39, !36}
!40 = !{!7, !7, i64 0}
!41 = !{!42, !7, i64 24}
!42 = !{!"_ZTSZN18HighsCutGeneration31separateLiftedMixedIntegerCoverEvE3$_2", !7, i64 0, !7, i64 8, !7, i64 16, !7, i64 24}
!43 = !{!11, !11, i64 0}
!44 = !{!45, !7, i64 8}
!45 = !{!"_ZTSZN18HighsCutGeneration31separateLiftedMixedIntegerCoverEvE3$_3", !7, i64 0, !7, i64 8, !7, i64 16, !7, i64 24, !7, i64 32, !7, i64 40, !7, i64 48, !7, i64 56, !7, i64 64, !7, i64 72}
!46 = distinct !{!46, !36}


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