; LLVM IR from ERGO-Code/HiGHS :: src/ipm (IpxWrapper)

; 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::__cxx11::basic_string" = type { %"struct.std::__cxx11::basic_string<char>::_Alloc_hider", i64, %union.anon }
%"struct.std::__cxx11::basic_string<char>::_Alloc_hider" = type { ptr }
%union.anon = type { i64, [8 x i8] }
%"class.ipx::LpSolver" = type { %"class.ipx::Control", %"struct.ipx::Info", %"class.ipx::Model", %"class.std::unique_ptr", %"class.std::unique_ptr.52", %"class.std::valarray", %"class.std::valarray", %"class.std::valarray", %"class.std::valarray", %"class.std::vector.3", %"class.std::valarray", %"class.std::valarray", %"class.std::valarray", %"class.std::valarray", %"class.std::valarray", %"class.std::valarray" }
%"class.ipx::Control" = type { %"struct.ipx::Parameters", ptr, %"class.std::basic_ofstream", %"class.ipx::Timer", %"class.ipx::Timer", %"class.ipx::Multistream", %"class.ipx::Multistream" }
%"struct.ipx::Parameters" = type { %struct.ipx_parameters }
%struct.ipx_parameters = type { i32, ptr, double, double, i8, i32, i32, i32, double, double, double, double, double, i32, double, double, i32, i32, i32, double, i32, double, double, double, i32, i32, i32, i32, i32, i32, i32, double, double, double, i32, i8, i8, ptr }
%"class.std::basic_ofstream" = type { %"class.std::basic_ostream.base", %"class.std::basic_filebuf", %"class.std::basic_ios" }
%"class.std::basic_ostream.base" = type { ptr }
%"class.std::basic_filebuf" = type { %"class.std::basic_streambuf", %union.pthread_mutex_t, %"class.std::__basic_file", i32, %struct.__mbstate_t, %struct.__mbstate_t, %struct.__mbstate_t, ptr, i64, i8, i8, i8, i8, ptr, ptr, i8, ptr, ptr, i64, ptr, ptr }
%"class.std::basic_streambuf" = type { ptr, ptr, ptr, ptr, ptr, ptr, ptr, %"class.std::locale" }
%"class.std::locale" = type { ptr }
%union.pthread_mutex_t = type { %struct.__pthread_mutex_s }
%struct.__pthread_mutex_s = type { i32, i32, i32, i32, i32, i16, i16, %struct.__pthread_internal_list }
%struct.__pthread_internal_list = type { ptr, ptr }
%"class.std::__basic_file" = type <{ ptr, i8, [7 x i8] }>
%struct.__mbstate_t = type { i32, %union.anon.42 }
%union.anon.42 = type { i32 }
%"class.std::basic_ios" = type { %"class.std::ios_base", ptr, i8, i8, ptr, ptr, ptr, ptr }
%"class.std::ios_base" = type { ptr, i64, i64, i32, i32, i32, ptr, %"struct.std::ios_base::_Words", [8 x %"struct.std::ios_base::_Words"], i32, ptr, %"class.std::locale" }
%"struct.std::ios_base::_Words" = type { ptr, i64 }
%"class.ipx::Timer" = type { %"class.std::chrono::time_point" }
%"class.std::chrono::time_point" = type { %"class.std::chrono::duration" }
%"class.std::chrono::duration" = type { i64 }
%"class.ipx::Multistream" = type { %"class.std::basic_ostream.base", %"struct.ipx::Multistream::multibuffer", %"class.std::basic_ios" }
%"struct.ipx::Multistream::multibuffer" = type { %"class.std::basic_streambuf", %"class.std::vector.43" }
%"class.std::vector.43" = type { %"struct.std::_Vector_base.44" }
%"struct.std::_Vector_base.44" = type { %"struct.std::_Vector_base<std::basic_streambuf<char> *, std::allocator<std::basic_streambuf<char> *>>::_Vector_impl" }
%"struct.std::_Vector_base<std::basic_streambuf<char> *, std::allocator<std::basic_streambuf<char> *>>::_Vector_impl" = type { %"struct.std::_Vector_base<std::basic_streambuf<char> *, std::allocator<std::basic_streambuf<char> *>>::_Vector_impl_data" }
%"struct.std::_Vector_base<std::basic_streambuf<char> *, std::allocator<std::basic_streambuf<char> *>>::_Vector_impl_data" = type { ptr, ptr, ptr }
%"struct.ipx::Info" = type { %struct.ipx_info }
%struct.ipx_info = type { i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, double, double, double, double, double, double, double, double, double, double, double, double, double, double, i32, i32, i32, i32, i32, i32, i32, double, double, double, double, double, double, double, double, double, double, double, double, double, double, double, double, double, double, double, double, double, double, double, double, i32, i32, i32, i32, double, double, double, double }
%"class.ipx::Model" = type { i8, i32, i32, i32, i32, %"class.ipx::SparseMatrix", %"class.ipx::SparseMatrix", %"class.std::valarray", %"class.std::valarray", %"class.std::valarray", %"class.std::valarray", double, double, i32, i32, i32, i32, i32, %"class.std::vector.3", %"class.std::vector.48", double, double, double, %"class.std::valarray", %"class.std::valarray", %"class.std::valarray", %"class.std::valarray", %"class.ipx::SparseMatrix", %"class.std::vector.3", %"class.std::valarray", %"class.std::valarray" }
%"class.std::vector.48" = type { %"struct.std::_Vector_base.49" }
%"struct.std::_Vector_base.49" = type { %"struct.std::_Vector_base<char, std::allocator<char>>::_Vector_impl" }
%"struct.std::_Vector_base<char, std::allocator<char>>::_Vector_impl" = type { %"struct.std::_Vector_base<char, std::allocator<char>>::_Vector_impl_data" }
%"struct.std::_Vector_base<char, std::allocator<char>>::_Vector_impl_data" = type { ptr, ptr, ptr }
%"class.ipx::SparseMatrix" = type { i32, %"class.std::vector.3", %"class.std::vector.3", %"class.std::vector.8", %"class.std::vector.3", %"class.std::vector.8" }
%"class.std::vector.8" = type { %"struct.std::_Vector_base.9" }
%"struct.std::_Vector_base.9" = type { %"struct.std::_Vector_base<double, std::allocator<double>>::_Vector_impl" }
%"struct.std::_Vector_base<double, std::allocator<double>>::_Vector_impl" = type { %"struct.std::_Vector_base<double, std::allocator<double>>::_Vector_impl_data" }
%"struct.std::_Vector_base<double, std::allocator<double>>::_Vector_impl_data" = type { ptr, ptr, ptr }
%"class.std::unique_ptr" = type { %"struct.std::__uniq_ptr_data" }
%"struct.std::__uniq_ptr_data" = type { %"class.std::__uniq_ptr_impl" }
%"class.std::__uniq_ptr_impl" = type { %"class.std::tuple" }
%"class.std::tuple" = type { %"struct.std::_Tuple_impl" }
%"struct.std::_Tuple_impl" = type { %"struct.std::_Head_base.51" }
%"struct.std::_Head_base.51" = type { ptr }
%"class.std::unique_ptr.52" = type { %"struct.std::__uniq_ptr_data.53" }
%"struct.std::__uniq_ptr_data.53" = type { %"class.std::__uniq_ptr_impl.54" }
%"class.std::__uniq_ptr_impl.54" = type { %"class.std::tuple.55" }
%"class.std::tuple.55" = type { %"struct.std::_Tuple_impl.56" }
%"struct.std::_Tuple_impl.56" = type { %"struct.std::_Head_base.59" }
%"struct.std::_Head_base.59" = type { ptr }
%"class.std::vector.3" = type { %"struct.std::_Vector_base.4" }
%"struct.std::_Vector_base.4" = 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::valarray" = type { i64, ptr }
%"class.std::allocator" = type { i8 }
%struct.IpxSolution = type { i32, i32, %"class.std::vector.8", %"class.std::vector.8", %"class.std::vector.8", %"class.std::vector.8", %"class.std::vector.3", %"class.std::vector.3" }
%struct.HighsBasis = type { i8, i8, i8, i8, i32, i32, %"class.std::__cxx11::basic_string", %"class.std::vector.28", %"class.std::vector.28" }
%"class.std::vector.28" = type { %"struct.std::_Vector_base.29" }
%"struct.std::_Vector_base.29" = type { %"struct.std::_Vector_base<HighsBasisStatus, std::allocator<HighsBasisStatus>>::_Vector_impl" }
%"struct.std::_Vector_base<HighsBasisStatus, std::allocator<HighsBasisStatus>>::_Vector_impl" = type { %"struct.std::_Vector_base<HighsBasisStatus, std::allocator<HighsBasisStatus>>::_Vector_impl_data" }
%"struct.std::_Vector_base<HighsBasisStatus, std::allocator<HighsBasisStatus>>::_Vector_impl_data" = type { ptr, ptr, ptr }
%struct.HighsSolution = type { i8, i8, %"class.std::vector.8", %"class.std::vector.8", %"class.std::vector.8", %"class.std::vector.8" }
%struct.HighsOptionsStruct = type { ptr, %"class.std::__cxx11::basic_string", %"class.std::__cxx11::basic_string", %"class.std::__cxx11::basic_string", %"class.std::__cxx11::basic_string", double, %"class.std::__cxx11::basic_string", %"class.std::__cxx11::basic_string", i32, %"class.std::__cxx11::basic_string", double, double, double, double, double, double, double, double, double, double, double, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, %"class.std::__cxx11::basic_string", i8, i8, i8, i32, i32, %"class.std::__cxx11::basic_string", i8, i8, i8, i32, i8, i8, i32, i32, double, i32, i32, i32, i8, i32, i8, i8, i8, i8, i8, i8, i8, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i8, i8, i8, i8, double, double, double, double, double, double, double, double, double, double, double, i8, i8, i8, i8, i32, double, i8, i8, %"class.std::__cxx11::basic_string", double, i32, i32, i8, i8, i8, i8, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, double, double, double, double, double, i8, i8, %"class.std::__cxx11::basic_string", i8, i32, %struct.HighsLogOptions }
%struct.HighsLogOptions = type <{ ptr, ptr, ptr, ptr, ptr, ptr, %"class.std::function", ptr, i8, [7 x i8] }>
%"class.std::function" = type { %"class.std::_Function_base", ptr }
%"class.std::_Function_base" = type { %"union.std::_Any_data", ptr }
%"union.std::_Any_data" = type { %"union.std::_Nocopy_types" }
%"union.std::_Nocopy_types" = type { { i64, i64 } }
%struct.HighsInfoStruct = type { i8, i64, i32, i32, i32, i32, i32, i32, i32, i32, double, double, double, double, i32, double, double, i32, double, double, double, double, double }

@_ZL15kHighsOffStringB5cxx11 = external hidden global %"class.std::__cxx11::basic_string", align 8
@_ZL18kHighsChooseStringB5cxx11 = external hidden global %"class.std::__cxx11::basic_string", align 8
@_ZL14kHighsOnStringB5cxx11 = external hidden global %"class.std::__cxx11::basic_string", align 8
@.str.51 = external hidden unnamed_addr constant [11 x i8], align 1
@.str.52 = external hidden unnamed_addr constant [72 x i8], align 1
@__PRETTY_FUNCTION__._Z10solveLpIpxRK12HighsOptionsR10HighsTimerRK7HighsLpR10HighsBasisR13HighsSolutionR16HighsModelStatusR9HighsInfoR13HighsCallback = external hidden unnamed_addr constant [157 x i8], align 1
@.str.53 = external hidden unnamed_addr constant [44 x i8], align 1
@.str.54 = external hidden unnamed_addr constant [51 x i8], align 1
@.str.55 = external hidden unnamed_addr constant [59 x i8], align 1
@.str.56 = external hidden unnamed_addr constant [46 x i8], align 1
@.str.57 = external hidden unnamed_addr constant [48 x i8], align 1
@.str.58 = external hidden unnamed_addr constant [64 x i8], align 1
@.str.59 = external hidden unnamed_addr constant [70 x i8], align 1
@.str.60 = external hidden unnamed_addr constant [49 x i8], align 1
@.str.61 = external hidden unnamed_addr constant [62 x i8], align 1
@.str.62 = external hidden unnamed_addr constant [19 x i8], align 1

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

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

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

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 void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32)) unnamed_addr #1 align 2

; Function Attrs: mustprogress uwtable
define dso_local noundef i32 @_Z10solveLpIpxRK12HighsOptionsR10HighsTimerRK7HighsLpR10HighsBasisR13HighsSolutionR16HighsModelStatusR9HighsInfoR13HighsCallback(ptr noundef nonnull align 8 dereferenceable(1020) %0, ptr noundef nonnull align 8 dereferenceable(132) %1, ptr noundef nonnull align 8 dereferenceable(920) %2, ptr noundef nonnull align 8 dereferenceable(96) %3, ptr noundef nonnull align 8 dereferenceable(104) %4, ptr noundef nonnull align 4 dereferenceable(4) %5, ptr noundef nonnull align 8 dereferenceable(184) %6, ptr noundef nonnull align 8 dereferenceable(256) %7) #2 personality ptr @__gxx_personality_v0 {
  %9 = alloca i32, align 4
  %10 = alloca ptr, align 8
  %11 = alloca ptr, align 8
  %12 = alloca ptr, align 8
  %13 = alloca ptr, align 8
  %14 = alloca ptr, align 8
  %15 = alloca ptr, align 8
  %16 = alloca ptr, align 8
  %17 = alloca ptr, align 8
  %18 = alloca %"class.ipx::LpSolver", align 8
  %19 = alloca %"struct.ipx::Parameters", align 8
  %20 = alloca ptr, align 8
  %21 = alloca i32, align 4
  %22 = alloca %"struct.ipx::Parameters", align 8
  %23 = alloca i32, align 4
  %24 = alloca i32, align 4
  %25 = alloca double, align 8
  %26 = alloca %"class.std::vector.3", align 8
  %27 = alloca %"class.std::vector.3", align 8
  %28 = alloca %"class.std::vector.8", align 8
  %29 = alloca %"class.std::vector.8", align 8
  %30 = alloca %"class.std::vector.8", align 8
  %31 = alloca %"class.std::vector.8", align 8
  %32 = alloca %"class.std::vector.8", align 8
  %33 = alloca %"class.std::vector.48", align 8
  %34 = alloca i32, align 4
  %35 = alloca i32, align 4
  %36 = alloca i32, align 4
  %37 = alloca i8, align 1
  %38 = alloca %"struct.ipx::Info", align 8
  %39 = alloca i32, align 4
  %40 = alloca i8, align 1
  %41 = alloca i32, align 4
  %42 = alloca i32, align 4
  %43 = alloca %"class.std::__cxx11::basic_string", align 8
  %44 = alloca %"class.std::allocator", align 1
  %45 = alloca i32, align 4
  %46 = alloca %"class.std::__cxx11::basic_string", align 8
  %47 = alloca %"class.std::allocator", align 1
  %48 = alloca %"class.std::__cxx11::basic_string", align 8
  %49 = alloca %"class.std::allocator", align 1
  %50 = alloca %"class.std::__cxx11::basic_string", align 8
  %51 = alloca %"class.std::allocator", align 1
  %52 = alloca i8, align 1
  %53 = alloca i8, align 1
  %54 = alloca %struct.IpxSolution, align 8
  %55 = alloca i32, align 4
  %56 = alloca i32, align 4
  %57 = alloca i32, align 4
  %58 = alloca i32, align 4
  store ptr %0, ptr %10, align 8, !tbaa !5
  store ptr %1, ptr %11, align 8, !tbaa !5
  store ptr %2, ptr %12, align 8, !tbaa !5
  store ptr %3, ptr %13, align 8, !tbaa !5
  store ptr %4, ptr %14, align 8, !tbaa !5
  store ptr %5, ptr %15, align 8, !tbaa !5
  store ptr %6, ptr %16, align 8, !tbaa !5
  store ptr %7, ptr %17, align 8, !tbaa !5
  %59 = load ptr, ptr %13, align 8, !tbaa !5
  %60 = getelementptr inbounds %struct.HighsBasis, ptr %59, i32 0, i32 0
  store i8 0, ptr %60, align 8, !tbaa !9
  %61 = load ptr, ptr %14, align 8, !tbaa !5
  %62 = getelementptr inbounds %struct.HighsSolution, ptr %61, i32 0, i32 0
  store i8 0, ptr %62, align 8, !tbaa !20
  %63 = load ptr, ptr %14, align 8, !tbaa !5
  %64 = getelementptr inbounds %struct.HighsSolution, ptr %63, i32 0, i32 1
  store i8 0, ptr %64, align 1, !tbaa !26
  %65 = load ptr, ptr %15, align 8, !tbaa !5
  %66 = load ptr, ptr %16, align 8, !tbaa !5
  call void @_Z28resetModelStatusAndHighsInfoR16HighsModelStatusR9HighsInfo(ptr noundef nonnull align 4 dereferenceable(4) %65, ptr noundef nonnull align 8 dereferenceable(184) %66)
  call void @llvm.lifetime.start.p0(i64 2864, ptr %18) #8
  call void @_ZN3ipx8LpSolverC2Ev(ptr noundef nonnull align 8 dereferenceable(2864) %18)
  call void @llvm.lifetime.start.p0(i64 240, ptr %19) #8
  invoke void @_ZN3ipx10ParametersC2Ev(ptr noundef nonnull align 8 dereferenceable(240) %19)
          to label %67 unwind label %85

67:                                               ; preds = %8
  %68 = getelementptr inbounds %struct.ipx_parameters, ptr %19, i32 0, i32 0
  store i32 1, ptr %68, align 8, !tbaa !27
  %69 = load ptr, ptr %10, align 8, !tbaa !5
  %70 = getelementptr inbounds %struct.HighsOptionsStruct, ptr %69, i32 0, i32 42
  %71 = load i8, ptr %70, align 8, !tbaa !30, !range !35, !noundef !36
  %72 = trunc i8 %71 to i1
  %73 = xor i1 %72, true
  %74 = zext i1 %73 to i32
  %75 = load ptr, ptr %10, align 8, !tbaa !5
  %76 = getelementptr inbounds %struct.HighsOptionsStruct, ptr %75, i32 0, i32 43
  %77 = load i8, ptr %76, align 1, !tbaa !37, !range !35, !noundef !36
  %78 = trunc i8 %77 to i1
  %79 = xor i1 %78, true
  %80 = zext i1 %79 to i32
  %81 = or i32 %74, %80
  %82 = icmp ne i32 %81, 0
  br i1 %82, label %83, label %89

83:                                               ; preds = %67
  %84 = getelementptr inbounds %struct.ipx_parameters, ptr %19, i32 0, i32 0
  store i32 0, ptr %84, align 8, !tbaa !27
  br label %89

85:                                               ; preds = %247, %231, %161, %155, %8
  %86 = landingpad { ptr, i32 }
          cleanup
  %87 = extractvalue { ptr, i32 } %86, 0
  store ptr %87, ptr %20, align 8
  %88 = extractvalue { ptr, i32 } %86, 1
  store i32 %88, ptr %21, align 4
  br label %722

89:                                               ; preds = %83, %67
  %90 = getelementptr inbounds %struct.ipx_parameters, ptr %19, i32 0, i32 24
  store i32 0, ptr %90, align 8, !tbaa !38
  %91 = load ptr, ptr %10, align 8, !tbaa !5
  %92 = getelementptr inbounds %struct.HighsOptionsStruct, ptr %91, i32 0, i32 55
  %93 = load i32, ptr %92, align 8, !tbaa !39
  %94 = icmp eq i32 %93, 2
  br i1 %94, label %95, label %97

95:                                               ; preds = %89
  %96 = getelementptr inbounds %struct.ipx_parameters, ptr %19, i32 0, i32 24
  store i32 0, ptr %96, align 8, !tbaa !38
  br label %113

97:                                               ; preds = %89
  %98 = load ptr, ptr %10, align 8, !tbaa !5
  %99 = getelementptr inbounds %struct.HighsOptionsStruct, ptr %98, i32 0, i32 55
  %100 = load i32, ptr %99, align 8, !tbaa !39
  %101 = icmp eq i32 %100, 1
  br i1 %101, label %102, label %104

102:                                              ; preds = %97
  %103 = getelementptr inbounds %struct.ipx_parameters, ptr %19, i32 0, i32 24
  store i32 2, ptr %103, align 8, !tbaa !38
  br label %112

104:                                              ; preds = %97
  %105 = load ptr, ptr %10, align 8, !tbaa !5
  %106 = getelementptr inbounds %struct.HighsOptionsStruct, ptr %105, i32 0, i32 55
  %107 = load i32, ptr %106, align 8, !tbaa !39
  %108 = icmp eq i32 %107, 3
  br i1 %108, label %109, label %111

109:                                              ; preds = %104
  %110 = getelementptr inbounds %struct.ipx_parameters, ptr %19, i32 0, i32 24
  store i32 4, ptr %110, align 8, !tbaa !38
  br label %111

111:                                              ; preds = %109, %104
  br label %112

112:                                              ; preds = %111, %102
  br label %113

113:                                              ; preds = %112, %95
  %114 = getelementptr inbounds %struct.ipx_parameters, ptr %19, i32 0, i32 35
  store i8 1, ptr %114, align 4, !tbaa !40
  %115 = load ptr, ptr %10, align 8, !tbaa !5
  %116 = getelementptr inbounds %struct.HighsOptionsStruct, ptr %115, i32 0, i32 44
  %117 = load i8, ptr %116, align 2, !tbaa !41, !range !35, !noundef !36
  %118 = trunc i8 %117 to i1
  %119 = getelementptr inbounds %struct.ipx_parameters, ptr %19, i32 0, i32 36
  %120 = zext i1 %118 to i8
  store i8 %120, ptr %119, align 1, !tbaa !42
  %121 = load ptr, ptr %10, align 8, !tbaa !5
  %122 = getelementptr inbounds %struct.HighsOptionsStruct, ptr %121, i32 0, i32 130
  %123 = getelementptr inbounds %struct.ipx_parameters, ptr %19, i32 0, i32 37
  store ptr %122, ptr %123, align 8, !tbaa !43
  %124 = load ptr, ptr %10, align 8, !tbaa !5
  %125 = getelementptr inbounds %struct.HighsOptionsStruct, ptr %124, i32 0, i32 67
  %126 = load i32, ptr %125, align 4, !tbaa !44
  %127 = icmp eq i32 %126, 1
  br i1 %127, label %128, label %130

128:                                              ; preds = %113
  %129 = getelementptr inbounds %struct.ipx_parameters, ptr %19, i32 0, i32 5
  store i32 1, ptr %129, align 4, !tbaa !45
  br label %155

130:                                              ; preds = %113
  %131 = load ptr, ptr %10, align 8, !tbaa !5
  %132 = getelementptr inbounds %struct.HighsOptionsStruct, ptr %131, i32 0, i32 67
  %133 = load i32, ptr %132, align 4, !tbaa !44
  %134 = icmp eq i32 %133, -1
  br i1 %134, label %135, label %137

135:                                              ; preds = %130
  %136 = getelementptr inbounds %struct.ipx_parameters, ptr %19, i32 0, i32 5
  store i32 0, ptr %136, align 4, !tbaa !45
  br label %154

137:                                              ; preds = %130
  %138 = load ptr, ptr %10, align 8, !tbaa !5
  %139 = getelementptr inbounds %struct.HighsOptionsStruct, ptr %138, i32 0, i32 67
  %140 = load i32, ptr %139, align 4, !tbaa !44
  %141 = icmp eq i32 %140, 2
  br i1 %141, label %142, label %144

142:                                              ; preds = %137
  %143 = getelementptr inbounds %struct.ipx_parameters, ptr %19, i32 0, i32 5
  store i32 -1, ptr %143, align 4, !tbaa !45
  br label %153

144:                                              ; preds = %137
  %145 = load ptr, ptr %10, align 8, !tbaa !5
  %146 = getelementptr inbounds %struct.HighsOptionsStruct, ptr %145, i32 0, i32 67
  %147 = load i32, ptr %146, align 4, !tbaa !44
  %148 = icmp eq i32 %147, 3
  br i1 %148, label %149, label %151

149:                                              ; preds = %144
  %150 = getelementptr inbounds %struct.ipx_parameters, ptr %19, i32 0, i32 5
  store i32 -2, ptr %150, align 4, !tbaa !45
  br label %152

151:                                              ; preds = %144
  call void @__assert_fail(ptr noundef @.str.51, ptr noundef @.str.52, i32 noundef 108, ptr noundef @__PRETTY_FUNCTION__._Z10solveLpIpxRK12HighsOptionsR10HighsTimerRK7HighsLpR10HighsBasisR13HighsSolutionR16HighsModelStatusR9HighsInfoR13HighsCallback) #9
  unreachable

152:                                              ; preds = %149
  br label %153

153:                                              ; preds = %152, %142
  br label %154

154:                                              ; preds = %153, %135
  br label %155

155:                                              ; preds = %154, %128
  %156 = load ptr, ptr %10, align 8, !tbaa !5
  %157 = getelementptr inbounds %struct.HighsOptionsStruct, ptr %156, i32 0, i32 14
  %158 = load ptr, ptr %10, align 8, !tbaa !5
  %159 = getelementptr inbounds %struct.HighsOptionsStruct, ptr %158, i32 0, i32 15
  %160 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZSt3minIdERKT_S2_S2_(ptr noundef nonnull align 8 dereferenceable(8) %157, ptr noundef nonnull align 8 dereferenceable(8) %159)
          to label %161 unwind label %85

161:                                              ; preds = %155
  %162 = load double, ptr %160, align 8, !tbaa !46
  %163 = getelementptr inbounds %struct.ipx_parameters, ptr %19, i32 0, i32 8
  store double %162, ptr %163, align 8, !tbaa !47
  %164 = load ptr, ptr %10, align 8, !tbaa !5
  %165 = getelementptr inbounds %struct.HighsOptionsStruct, ptr %164, i32 0, i32 16
  %166 = load double, ptr %165, align 8, !tbaa !48
  %167 = getelementptr inbounds %struct.ipx_parameters, ptr %19, i32 0, i32 9
  store double %166, ptr %167, align 8, !tbaa !49
  %168 = load ptr, ptr %10, align 8, !tbaa !5
  %169 = getelementptr inbounds %struct.HighsOptionsStruct, ptr %168, i32 0, i32 92
  %170 = load double, ptr %169, align 8, !tbaa !50
  %171 = getelementptr inbounds %struct.ipx_parameters, ptr %19, i32 0, i32 21
  store double %170, ptr %171, align 8, !tbaa !51
  %172 = load ptr, ptr %10, align 8, !tbaa !5
  %173 = getelementptr inbounds %struct.HighsOptionsStruct, ptr %172, i32 0, i32 25
  %174 = load i32, ptr %173, align 8, !tbaa !52
  %175 = and i32 16, %174
  %176 = icmp ne i32 %175, 0
  %177 = getelementptr inbounds %struct.ipx_parameters, ptr %19, i32 0, i32 4
  %178 = zext i1 %176 to i8
  store i8 %178, ptr %177, align 8, !tbaa !53
  %179 = load ptr, ptr %10, align 8, !tbaa !5
  %180 = getelementptr inbounds %struct.HighsOptionsStruct, ptr %179, i32 0, i32 5
  %181 = load double, ptr %180, align 8, !tbaa !54
  %182 = load ptr, ptr %11, align 8, !tbaa !5
  %183 = invoke noundef double @_ZNK10HighsTimer4readEi(ptr noundef nonnull align 8 dereferenceable(132) %182, i32 noundef 0)
          to label %184 unwind label %85

184:                                              ; preds = %161
  %185 = fsub double %181, %183
  %186 = getelementptr inbounds %struct.ipx_parameters, ptr %19, i32 0, i32 3
  store double %185, ptr %186, align 8, !tbaa !55
  %187 = load ptr, ptr %10, align 8, !tbaa !5
  %188 = getelementptr inbounds %struct.HighsOptionsStruct, ptr %187, i32 0, i32 45
  %189 = load i32, ptr %188, align 4, !tbaa !56
  %190 = load ptr, ptr %16, align 8, !tbaa !5
  %191 = getelementptr inbounds i8, ptr %190, i64 8
  %192 = getelementptr inbounds %struct.HighsInfoStruct, ptr %191, i32 0, i32 3
  %193 = load i32, ptr %192, align 4, !tbaa !57
  %194 = sub nsw i32 %189, %193
  %195 = getelementptr inbounds %struct.ipx_parameters, ptr %19, i32 0, i32 7
  store i32 %194, ptr %195, align 4, !tbaa !59
  %196 = load ptr, ptr %10, align 8, !tbaa !5
  %197 = getelementptr inbounds %struct.HighsOptionsStruct, ptr %196, i32 0, i32 96
  %198 = load i8, ptr %197, align 1, !tbaa !60, !range !35, !noundef !36
  %199 = trunc i8 %198 to i1
  br i1 %199, label %200, label %202

200:                                              ; preds = %184
  %201 = getelementptr inbounds %struct.ipx_parameters, ptr %19, i32 0, i32 20
  store i32 0, ptr %201, align 8, !tbaa !61
  br label %225

202:                                              ; preds = %184
  %203 = load ptr, ptr %10, align 8, !tbaa !5
  %204 = getelementptr inbounds %struct.HighsOptionsStruct, ptr %203, i32 0, i32 4
  %205 = call noundef zeroext i1 @_ZSteqIcEN9__gnu_cxx11__enable_ifIXsr9__is_charIT_EE7__valueEbE6__typeERKNSt7__cxx1112basic_stringIS2_St11char_traitsIS2_ESaIS2_EEESC_(ptr noundef nonnull align 8 dereferenceable(32) %204, ptr noundef nonnull align 8 dereferenceable(32) @_ZL14kHighsOnStringB5cxx11) #8
  br i1 %205, label %206, label %208

206:                                              ; preds = %202
  %207 = getelementptr inbounds %struct.ipx_parameters, ptr %19, i32 0, i32 20
  store i32 1, ptr %207, align 8, !tbaa !61
  br label %224

208:                                              ; preds = %202
  %209 = load ptr, ptr %10, align 8, !tbaa !5
  %210 = getelementptr inbounds %struct.HighsOptionsStruct, ptr %209, i32 0, i32 4
  %211 = call noundef zeroext i1 @_ZSteqIcEN9__gnu_cxx11__enable_ifIXsr9__is_charIT_EE7__valueEbE6__typeERKNSt7__cxx1112basic_stringIS2_St11char_traitsIS2_ESaIS2_EEESC_(ptr noundef nonnull align 8 dereferenceable(32) %210, ptr noundef nonnull align 8 dereferenceable(32) @_ZL15kHighsOffStringB5cxx11) #8
  br i1 %211, label %212, label %214

212:                                              ; preds = %208
  %213 = getelementptr inbounds %struct.ipx_parameters, ptr %19, i32 0, i32 20
  store i32 0, ptr %213, align 8, !tbaa !61
  br label %223

214:                                              ; preds = %208
  %215 = load ptr, ptr %10, align 8, !tbaa !5
  %216 = getelementptr inbounds %struct.HighsOptionsStruct, ptr %215, i32 0, i32 4
  %217 = call noundef zeroext i1 @_ZSteqIcEN9__gnu_cxx11__enable_ifIXsr9__is_charIT_EE7__valueEbE6__typeERKNSt7__cxx1112basic_stringIS2_St11char_traitsIS2_ESaIS2_EEESC_(ptr noundef nonnull align 8 dereferenceable(32) %216, ptr noundef nonnull align 8 dereferenceable(32) @_ZL18kHighsChooseStringB5cxx11) #8
  br i1 %217, label %218, label %219

218:                                              ; preds = %214
  br label %221

219:                                              ; preds = %214
  call void @__assert_fail(ptr noundef @.str.53, ptr noundef @.str.52, i32 noundef 133, ptr noundef @__PRETTY_FUNCTION__._Z10solveLpIpxRK12HighsOptionsR10HighsTimerRK7HighsLpR10HighsBasisR13HighsSolutionR16HighsModelStatusR9HighsInfoR13HighsCallback) #9
  unreachable

220:                                              ; No predecessors!
  br label %221

221:                                              ; preds = %220, %218
  %222 = getelementptr inbounds %struct.ipx_parameters, ptr %19, i32 0, i32 20
  store i32 -1, ptr %222, align 8, !tbaa !61
  br label %223

223:                                              ; preds = %221, %212
  br label %224

224:                                              ; preds = %223, %206
  br label %225

225:                                              ; preds = %224, %200
  %226 = getelementptr inbounds %struct.ipx_parameters, ptr %19, i32 0, i32 20
  %227 = load i32, ptr %226, align 8, !tbaa !61
  %228 = icmp ne i32 %227, 0
  br i1 %228, label %231, label %229

229:                                              ; preds = %225
  %230 = getelementptr inbounds %struct.ipx_parameters, ptr %19, i32 0, i32 21
  store double -1.000000e+00, ptr %230, align 8, !tbaa !51
  br label %231

231:                                              ; preds = %229, %225
  %232 = load ptr, ptr %10, align 8, !tbaa !5
  %233 = getelementptr inbounds %struct.HighsOptionsStruct, ptr %232, i32 0, i32 96
  %234 = load i8, ptr %233, align 1, !tbaa !60, !range !35, !noundef !36
  %235 = trunc i8 %234 to i1
  %236 = zext i1 %235 to i64
  %237 = select i1 %235, i32 1, i32 0
  %238 = getelementptr inbounds %struct.ipx_parameters, ptr %19, i32 0, i32 29
  store i32 %237, ptr %238, align 4, !tbaa !62
  %239 = load ptr, ptr %10, align 8, !tbaa !5
  %240 = getelementptr inbounds %struct.HighsOptionsStruct, ptr %239, i32 0, i32 97
  %241 = load i32, ptr %240, align 4, !tbaa !63
  %242 = getelementptr inbounds %struct.ipx_parameters, ptr %19, i32 0, i32 30
  store i32 %241, ptr %242, align 8, !tbaa !64
  %243 = load ptr, ptr %10, align 8, !tbaa !5
  %244 = getelementptr inbounds %struct.HighsOptionsStruct, ptr %243, i32 0, i32 98
  %245 = load double, ptr %244, align 8, !tbaa !65
  %246 = getelementptr inbounds %struct.ipx_parameters, ptr %19, i32 0, i32 31
  store double %245, ptr %246, align 8, !tbaa !66
  call void @llvm.memcpy.p0.p0.i64(ptr align 8 %22, ptr align 8 %19, i64 240, i1 false)
  invoke void @_ZN3ipx8LpSolver13SetParametersENS_10ParametersE(ptr noundef nonnull align 8 dereferenceable(2864) %18, ptr noundef byval(%"struct.ipx::Parameters") align 8 %22)
          to label %247 unwind label %85

247:                                              ; preds = %231
  %248 = load ptr, ptr %17, align 8, !tbaa !5
  invoke void @_ZN3ipx8LpSolver11SetCallbackEP13HighsCallback(ptr noundef nonnull align 8 dereferenceable(2864) %18, ptr noundef %248)
          to label %249 unwind label %85

249:                                              ; preds = %247
  call void @llvm.lifetime.start.p0(i64 4, ptr %23) #8
  call void @llvm.lifetime.start.p0(i64 4, ptr %24) #8
  call void @llvm.lifetime.start.p0(i64 8, ptr %25) #8
  call void @llvm.lifetime.start.p0(i64 24, ptr %26) #8
  call void @_ZNSt6vectorIiSaIiEEC2Ev(ptr noundef nonnull align 8 dereferenceable(24) %26) #8
  call void @llvm.lifetime.start.p0(i64 24, ptr %27) #8
  call void @_ZNSt6vectorIiSaIiEEC2Ev(ptr noundef nonnull align 8 dereferenceable(24) %27) #8
  call void @llvm.lifetime.start.p0(i64 24, ptr %28) #8
  call void @_ZNSt6vectorIdSaIdEEC2Ev(ptr noundef nonnull align 8 dereferenceable(24) %28) #8
  call void @llvm.lifetime.start.p0(i64 24, ptr %29) #8
  call void @_ZNSt6vectorIdSaIdEEC2Ev(ptr noundef nonnull align 8 dereferenceable(24) %29) #8
  call void @llvm.lifetime.start.p0(i64 24, ptr %30) #8
  call void @_ZNSt6vectorIdSaIdEEC2Ev(ptr noundef nonnull align 8 dereferenceable(24) %30) #8
  call void @llvm.lifetime.start.p0(i64 24, ptr %31) #8
  call void @_ZNSt6vectorIdSaIdEEC2Ev(ptr noundef nonnull align 8 dereferenceable(24) %31) #8
  call void @llvm.lifetime.start.p0(i64 24, ptr %32) #8
  call void @_ZNSt6vectorIdSaIdEEC2Ev(ptr noundef nonnull align 8 dereferenceable(24) %32) #8
  call void @llvm.lifetime.start.p0(i64 24, ptr %33) #8
  call void @_ZNSt6vectorIcSaIcEEC2Ev(ptr noundef nonnull align 8 dereferenceable(24) %33) #8
  %250 = load ptr, ptr %12, align 8, !tbaa !5
  invoke void @_Z13fillInIpxDataRK7HighsLpRiS2_RdRSt6vectorIdSaIdEES7_S7_RS4_IiSaIiEESA_S7_S7_RS4_IcSaIcEE(ptr noundef nonnull align 8 dereferenceable(920) %250, ptr noundef nonnull align 4 dereferenceable(4) %23, ptr noundef nonnull align 4 dereferenceable(4) %24, ptr noundef nonnull align 8 dereferenceable(8) %25, ptr noundef nonnull align 8 dereferenceable(24) %28, ptr noundef nonnull align 8 dereferenceable(24) %29, ptr noundef nonnull align 8 dereferenceable(24) %30, ptr noundef nonnull align 8 dereferenceable(24) %26, ptr noundef nonnull align 8 dereferenceable(24) %27, ptr noundef nonnull align 8 dereferenceable(24) %31, ptr noundef nonnull align 8 dereferenceable(24) %32, ptr noundef nonnull align 8 dereferenceable(24) %33)
          to label %251 unwind label %278

251:                                              ; preds = %249
  %252 = load ptr, ptr %10, align 8, !tbaa !5
  %253 = getelementptr inbounds %struct.HighsOptionsStruct, ptr %252, i32 0, i32 130
  %254 = load i32, ptr %24, align 4, !tbaa !67
  %255 = load i32, ptr %23, align 4, !tbaa !67
  %256 = load i32, ptr %23, align 4, !tbaa !67
  %257 = sext i32 %256 to i64
  %258 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNSt6vectorIiSaIiEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %26, i64 noundef %257) #8
  %259 = load i32, ptr %258, align 4, !tbaa !67
  invoke void (ptr, i32, ptr, ...) @_Z12highsLogUserRK15HighsLogOptions12HighsLogTypePKcz(ptr noundef nonnull align 8 dereferenceable(89) %253, i32 noundef 1, ptr noundef @.str.54, i32 noundef %254, i32 noundef %255, i32 noundef %259)
          to label %260 unwind label %278

260:                                              ; preds = %251
  call void @llvm.lifetime.start.p0(i64 4, ptr %34) #8
  %261 = load i32, ptr %23, align 4, !tbaa !67
  %262 = load double, ptr %25, align 8, !tbaa !46
  %263 = call noundef ptr @_ZNSt6vectorIdSaIdEE4dataEv(ptr noundef nonnull align 8 dereferenceable(24) %28) #8
  %264 = call noundef ptr @_ZNSt6vectorIdSaIdEE4dataEv(ptr noundef nonnull align 8 dereferenceable(24) %29) #8
  %265 = call noundef ptr @_ZNSt6vectorIdSaIdEE4dataEv(ptr noundef nonnull align 8 dereferenceable(24) %30) #8
  %266 = load i32, ptr %24, align 4, !tbaa !67
  %267 = call noundef ptr @_ZNSt6vectorIiSaIiEE4dataEv(ptr noundef nonnull align 8 dereferenceable(24) %26) #8
  %268 = call noundef ptr @_ZNSt6vectorIiSaIiEE4dataEv(ptr noundef nonnull align 8 dereferenceable(24) %27) #8
  %269 = call noundef ptr @_ZNSt6vectorIdSaIdEE4dataEv(ptr noundef nonnull align 8 dereferenceable(24) %31) #8
  %270 = call noundef ptr @_ZNSt6vectorIdSaIdEE4dataEv(ptr noundef nonnull align 8 dereferenceable(24) %32) #8
  %271 = call noundef ptr @_ZNSt6vectorIcSaIcEE4dataEv(ptr noundef nonnull align 8 dereferenceable(24) %33) #8
  %272 = invoke noundef i32 @_ZN3ipx8LpSolver9LoadModelEidPKdS2_S2_iPKiS4_S2_S2_PKc(ptr noundef nonnull align 8 dereferenceable(2864) %18, i32 noundef %261, double noundef %262, ptr noundef %263, ptr noundef %264, ptr noundef %265, i32 noundef %266, ptr noundef %267, ptr noundef %268, ptr noundef %269, ptr noundef %270, ptr noundef %271)
          to label %273 unwind label %282

273:                                              ; preds = %260
  store i32 %272, ptr %34, align 4, !tbaa !67
  %274 = load i32, ptr %34, align 4, !tbaa !67
  %275 = icmp ne i32 %274, 0
  br i1 %275, label %276, label %286

276:                                              ; preds = %273
  %277 = load ptr, ptr %15, align 8, !tbaa !5
  store i32 4, ptr %277, align 4, !tbaa !68
  store i32 -1, ptr %9, align 4
  store i32 1, ptr %35, align 4
  br label %718

278:                                              ; preds = %251, %249
  %279 = landingpad { ptr, i32 }
          cleanup
  %280 = extractvalue { ptr, i32 } %279, 0
  store ptr %280, ptr %20, align 8
  %281 = extractvalue { ptr, i32 } %279, 1
  store i32 %281, ptr %21, align 4
  br label %721

282:                                              ; preds = %260
  %283 = landingpad { ptr, i32 }
          cleanup
  %284 = extractvalue { ptr, i32 } %283, 0
  store ptr %284, ptr %20, align 8
  %285 = extractvalue { ptr, i32 } %283, 1
  store i32 %285, ptr %21, align 4
  br label %720

286:                                              ; preds = %273
  call void @llvm.lifetime.start.p0(i64 4, ptr %36) #8
  %287 = invoke noundef i32 @_ZN3ipx8LpSolver5SolveEv(ptr noundef nonnull align 8 dereferenceable(2864) %18)
          to label %288 unwind label %302

288:                                              ; preds = %286
  store i32 %287, ptr %36, align 4, !tbaa !67
  call void @llvm.lifetime.start.p0(i64 1, ptr %37) #8
  %289 = load ptr, ptr %10, align 8, !tbaa !5
  %290 = getelementptr inbounds %struct.HighsOptionsStruct, ptr %289, i32 0, i32 25
  %291 = load i32, ptr %290, align 8, !tbaa !52
  %292 = and i32 2, %291
  %293 = icmp ne i32 %292, 0
  %294 = zext i1 %293 to i8
  store i8 %294, ptr %37, align 1, !tbaa !70
  call void @llvm.lifetime.start.p0(i64 464, ptr %38) #8
  invoke void @_ZNK3ipx8LpSolver7GetInfoEv(ptr dead_on_unwind writable sret(%"struct.ipx::Info") align 8 %38, ptr noundef nonnull align 8 dereferenceable(2864) %18)
          to label %295 unwind label %306

295:                                              ; preds = %288
  %296 = load i8, ptr %37, align 1, !tbaa !70, !range !35, !noundef !36
  %297 = trunc i8 %296 to i1
  br i1 %297, label %298, label %310

298:                                              ; preds = %295
  %299 = load ptr, ptr %10, align 8, !tbaa !5
  %300 = getelementptr inbounds %struct.HighsOptionsStruct, ptr %299, i32 0, i32 130
  invoke void @_Z15reportSolveDataRK15HighsLogOptionsRKN3ipx4InfoE(ptr noundef nonnull align 8 dereferenceable(89) %300, ptr noundef nonnull align 8 dereferenceable(464) %38)
          to label %301 unwind label %306

301:                                              ; preds = %298
  br label %310

302:                                              ; preds = %286
  %303 = landingpad { ptr, i32 }
          cleanup
  %304 = extractvalue { ptr, i32 } %303, 0
  store ptr %304, ptr %20, align 8
  %305 = extractvalue { ptr, i32 } %303, 1
  store i32 %305, ptr %21, align 4
  br label %717

306:                                              ; preds = %298, %288
  %307 = landingpad { ptr, i32 }
          cleanup
  %308 = extractvalue { ptr, i32 } %307, 0
  store ptr %308, ptr %20, align 8
  %309 = extractvalue { ptr, i32 } %307, 1
  store i32 %309, ptr %21, align 4
  br label %716

310:                                              ; preds = %301, %295
  %311 = getelementptr inbounds %struct.ipx_info, ptr %38, i32 0, i32 34
  %312 = load i32, ptr %311, align 8, !tbaa !71
  %313 = load ptr, ptr %16, align 8, !tbaa !5
  %314 = getelementptr inbounds i8, ptr %313, i64 8
  %315 = getelementptr inbounds %struct.HighsInfoStruct, ptr %314, i32 0, i32 3
  %316 = load i32, ptr %315, align 4, !tbaa !57
  %317 = add nsw i32 %316, %312
  store i32 %317, ptr %315, align 4, !tbaa !57
  %318 = getelementptr inbounds %struct.ipx_info, ptr %38, i32 0, i32 40
  %319 = load i32, ptr %318, align 8, !tbaa !73
  %320 = load ptr, ptr %16, align 8, !tbaa !5
  %321 = getelementptr inbounds i8, ptr %320, i64 8
  %322 = getelementptr inbounds %struct.HighsInfoStruct, ptr %321, i32 0, i32 4
  %323 = load i32, ptr %322, align 8, !tbaa !74
  %324 = add nsw i32 %323, %319
  store i32 %324, ptr %322, align 8, !tbaa !74
  %325 = load i32, ptr %36, align 4, !tbaa !67
  %326 = icmp ne i32 %325, 1000
  br i1 %326, label %327, label %346

327:                                              ; preds = %310
  call void @llvm.lifetime.start.p0(i64 4, ptr %39) #8
  %328 = load ptr, ptr %10, align 8, !tbaa !5
  %329 = load i32, ptr %36, align 4, !tbaa !67
  %330 = getelementptr inbounds %struct.ipx_info, ptr %38, i32 0, i32 3
  %331 = load i32, ptr %330, align 4, !tbaa !75
  %332 = invoke noundef i32 @_Z20reportIpxSolveStatusRK12HighsOptionsii(ptr noundef nonnull align 8 dereferenceable(1020) %328, i32 noundef %329, i32 noundef %331)
          to label %333 unwind label %338

333:                                              ; preds = %327
  store i32 %332, ptr %39, align 4, !tbaa !76
  %334 = load i32, ptr %39, align 4, !tbaa !76
  %335 = icmp eq i32 %334, -1
  br i1 %335, label %336, label %342

336:                                              ; preds = %333
  %337 = load ptr, ptr %15, align 8, !tbaa !5
  store i32 4, ptr %337, align 4, !tbaa !68
  store i32 -1, ptr %9, align 4
  store i32 1, ptr %35, align 4
  br label %343

338:                                              ; preds = %327
  %339 = landingpad { ptr, i32 }
          cleanup
  %340 = extractvalue { ptr, i32 } %339, 0
  store ptr %340, ptr %20, align 8
  %341 = extractvalue { ptr, i32 } %339, 1
  store i32 %341, ptr %21, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %39) #8
  br label %716

342:                                              ; preds = %333
  store i32 0, ptr %35, align 4
  br label %343

343:                                              ; preds = %342, %336
  call void @llvm.lifetime.end.p0(i64 4, ptr %39) #8
  %344 = load i32, ptr %35, align 4
  switch i32 %344, label %715 [
    i32 0, label %345
  ]

345:                                              ; preds = %343
  br label %346

346:                                              ; preds = %345, %310
  call void @llvm.lifetime.start.p0(i64 1, ptr %40) #8
  store i8 1, ptr %40, align 1, !tbaa !70
  call void @llvm.lifetime.start.p0(i64 4, ptr %41) #8
  %347 = load ptr, ptr %10, align 8, !tbaa !5
  %348 = getelementptr inbounds %struct.ipx_info, ptr %38, i32 0, i32 1
  %349 = load i32, ptr %348, align 4, !tbaa !78
  %350 = load i8, ptr %40, align 1, !tbaa !70, !range !35, !noundef !36
  %351 = trunc i8 %350 to i1
  %352 = invoke noundef i32 @_Z27reportIpxIpmCrossoverStatusRK12HighsOptionsib(ptr noundef nonnull align 8 dereferenceable(1020) %347, i32 noundef %349, i1 noundef zeroext %351)
          to label %353 unwind label %368

353:                                              ; preds = %346
  store i32 %352, ptr %41, align 4, !tbaa !76
  store i8 0, ptr %40, align 1, !tbaa !70
  call void @llvm.lifetime.start.p0(i64 4, ptr %42) #8
  %354 = load ptr, ptr %10, align 8, !tbaa !5
  %355 = getelementptr inbounds %struct.ipx_info, ptr %38, i32 0, i32 2
  %356 = load i32, ptr %355, align 8, !tbaa !79
  %357 = load i8, ptr %40, align 1, !tbaa !70, !range !35, !noundef !36
  %358 = trunc i8 %357 to i1
  %359 = invoke noundef i32 @_Z27reportIpxIpmCrossoverStatusRK12HighsOptionsib(ptr noundef nonnull align 8 dereferenceable(1020) %354, i32 noundef %356, i1 noundef zeroext %358)
          to label %360 unwind label %372

360:                                              ; preds = %353
  store i32 %359, ptr %42, align 4, !tbaa !76
  %361 = load i32, ptr %41, align 4, !tbaa !76
  %362 = icmp eq i32 %361, -1
  br i1 %362, label %366, label %363

363:                                              ; preds = %360
  %364 = load i32, ptr %42, align 4, !tbaa !76
  %365 = icmp eq i32 %364, -1
  br i1 %365, label %366, label %376

366:                                              ; preds = %363, %360
  %367 = load ptr, ptr %15, align 8, !tbaa !5
  store i32 4, ptr %367, align 4, !tbaa !68
  store i32 -1, ptr %9, align 4
  store i32 1, ptr %35, align 4
  br label %712

368:                                              ; preds = %346
  %369 = landingpad { ptr, i32 }
          cleanup
  %370 = extractvalue { ptr, i32 } %369, 0
  store ptr %370, ptr %20, align 8
  %371 = extractvalue { ptr, i32 } %369, 1
  store i32 %371, ptr %21, align 4
  br label %714

372:                                              ; preds = %502, %476, %353
  %373 = landingpad { ptr, i32 }
          cleanup
  %374 = extractvalue { ptr, i32 } %373, 0
  store ptr %374, ptr %20, align 8
  %375 = extractvalue { ptr, i32 } %373, 1
  store i32 %375, ptr %21, align 4
  br label %713

376:                                              ; preds = %363
  %377 = load i32, ptr %36, align 4, !tbaa !67
  %378 = icmp ne i32 %377, 1000
  br i1 %378, label %379, label %382

379:                                              ; preds = %376
  %380 = load i32, ptr %36, align 4, !tbaa !67
  %381 = icmp ne i32 %380, 1005
  br label %382

382:                                              ; preds = %379, %376
  %383 = phi i1 [ false, %376 ], [ %381, %379 ]
  %384 = load ptr, ptr %10, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 1, ptr %44) #8
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %44) #8
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %43, ptr noundef @.str.55, ptr noundef nonnull align 1 dereferenceable(1) %44)
          to label %385 unwind label %390

385:                                              ; preds = %382
  %386 = load i32, ptr %36, align 4, !tbaa !67
  %387 = invoke noundef zeroext i1 @_Z14ipxStatusErrorbRK12HighsOptionsNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEi(i1 noundef zeroext %383, ptr noundef nonnull align 8 dereferenceable(1020) %384, ptr noundef %43, i32 noundef %386)
          to label %388 unwind label %394

388:                                              ; preds = %385
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %43) #8
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %44) #8
  call void @llvm.lifetime.end.p0(i64 1, ptr %44) #8
  br i1 %387, label %389, label %399

389:                                              ; preds = %388
  store i32 -1, ptr %9, align 4
  store i32 1, ptr %35, align 4
  br label %712

390:                                              ; preds = %382
  %391 = landingpad { ptr, i32 }
          cleanup
  %392 = extractvalue { ptr, i32 } %391, 0
  store ptr %392, ptr %20, align 8
  %393 = extractvalue { ptr, i32 } %391, 1
  store i32 %393, ptr %21, align 4
  br label %398

394:                                              ; preds = %385
  %395 = landingpad { ptr, i32 }
          cleanup
  %396 = extractvalue { ptr, i32 } %395, 0
  store ptr %396, ptr %20, align 8
  %397 = extractvalue { ptr, i32 } %395, 1
  store i32 %397, ptr %21, align 4
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %43) #8
  br label %398

398:                                              ; preds = %394, %390
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %44) #8
  call void @llvm.lifetime.end.p0(i64 1, ptr %44) #8
  br label %713

399:                                              ; preds = %388
  %400 = load i32, ptr %36, align 4, !tbaa !67
  %401 = icmp eq i32 %400, 1005
  br i1 %401, label %402, label %458

402:                                              ; preds = %399
  call void @llvm.lifetime.start.p0(i64 4, ptr %45) #8
  store i32 15, ptr %45, align 4, !tbaa !68
  %403 = load ptr, ptr %10, align 8, !tbaa !5
  %404 = load ptr, ptr %12, align 8, !tbaa !5
  %405 = load i32, ptr %23, align 4, !tbaa !67
  %406 = load i32, ptr %24, align 4, !tbaa !67
  %407 = load ptr, ptr %14, align 8, !tbaa !5
  invoke void @_Z25getHighsNonVertexSolutionRK12HighsOptionsRK7HighsLpiiRKSt6vectorIdSaIdEERKS5_IcSaIcEERKN3ipx8LpSolverE16HighsModelStatusR13HighsSolution(ptr noundef nonnull align 8 dereferenceable(1020) %403, ptr noundef nonnull align 8 dereferenceable(920) %404, i32 noundef %405, i32 noundef %406, ptr noundef nonnull align 8 dereferenceable(24) %32, ptr noundef nonnull align 8 dereferenceable(24) %33, ptr noundef nonnull align 8 dereferenceable(2864) %18, i32 noundef 15, ptr noundef nonnull align 8 dereferenceable(104) %407)
          to label %408 unwind label %413

408:                                              ; preds = %402
  %409 = load ptr, ptr %10, align 8, !tbaa !5
  %410 = invoke noundef zeroext i1 @_Z32illegalIpxStoppedCrossoverStatusRKN3ipx4InfoERK12HighsOptions(ptr noundef nonnull align 8 dereferenceable(464) %38, ptr noundef nonnull align 8 dereferenceable(1020) %409)
          to label %411 unwind label %413

411:                                              ; preds = %408
  br i1 %410, label %412, label %417

412:                                              ; preds = %411
  store i32 -1, ptr %9, align 4
  store i32 1, ptr %35, align 4
  br label %457

413:                                              ; preds = %453, %423, %408, %402
  %414 = landingpad { ptr, i32 }
          cleanup
  %415 = extractvalue { ptr, i32 } %414, 0
  store ptr %415, ptr %20, align 8
  %416 = extractvalue { ptr, i32 } %414, 1
  store i32 %416, ptr %21, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %45) #8
  br label %713

417:                                              ; preds = %411
  %418 = getelementptr inbounds %struct.ipx_info, ptr %38, i32 0, i32 2
  %419 = load i32, ptr %418, align 8, !tbaa !79
  %420 = icmp eq i32 %419, 6
  br i1 %420, label %421, label %423

421:                                              ; preds = %417
  %422 = load ptr, ptr %15, align 8, !tbaa !5
  store i32 13, ptr %422, align 4, !tbaa !68
  store i32 1, ptr %9, align 4
  store i32 1, ptr %35, align 4
  br label %457

423:                                              ; preds = %417
  %424 = load ptr, ptr %10, align 8, !tbaa !5
  %425 = invoke noundef zeroext i1 @_Z26illegalIpxStoppedIpmStatusRKN3ipx4InfoERK12HighsOptions(ptr noundef nonnull align 8 dereferenceable(464) %38, ptr noundef nonnull align 8 dereferenceable(1020) %424)
          to label %426 unwind label %413

426:                                              ; preds = %423
  br i1 %425, label %427, label %428

427:                                              ; preds = %426
  store i32 -1, ptr %9, align 4
  store i32 1, ptr %35, align 4
  br label %457

428:                                              ; preds = %426
  %429 = getelementptr inbounds %struct.ipx_info, ptr %38, i32 0, i32 1
  %430 = load i32, ptr %429, align 4, !tbaa !78
  %431 = icmp eq i32 %430, 5
  br i1 %431, label %432, label %434

432:                                              ; preds = %428
  %433 = load ptr, ptr %15, align 8, !tbaa !5
  store i32 17, ptr %433, align 4, !tbaa !68
  store i32 1, ptr %9, align 4
  store i32 1, ptr %35, align 4
  br label %457

434:                                              ; preds = %428
  %435 = getelementptr inbounds %struct.ipx_info, ptr %38, i32 0, i32 1
  %436 = load i32, ptr %435, align 4, !tbaa !78
  %437 = icmp eq i32 %436, 6
  br i1 %437, label %438, label %440

438:                                              ; preds = %434
  %439 = load ptr, ptr %15, align 8, !tbaa !5
  store i32 13, ptr %439, align 4, !tbaa !68
  store i32 1, ptr %9, align 4
  store i32 1, ptr %35, align 4
  br label %457

440:                                              ; preds = %434
  %441 = getelementptr inbounds %struct.ipx_info, ptr %38, i32 0, i32 1
  %442 = load i32, ptr %441, align 4, !tbaa !78
  %443 = icmp eq i32 %442, 7
  br i1 %443, label %444, label %446

444:                                              ; preds = %440
  %445 = load ptr, ptr %15, align 8, !tbaa !5
  store i32 14, ptr %445, align 4, !tbaa !68
  store i32 1, ptr %9, align 4
  store i32 1, ptr %35, align 4
  br label %457

446:                                              ; preds = %440
  %447 = getelementptr inbounds %struct.ipx_info, ptr %38, i32 0, i32 1
  %448 = load i32, ptr %447, align 4, !tbaa !78
  %449 = icmp eq i32 %448, 8
  br i1 %449, label %450, label %451

450:                                              ; preds = %446
  br label %453

451:                                              ; preds = %446
  call void @__assert_fail(ptr noundef @.str.56, ptr noundef @.str.52, i32 noundef 267, ptr noundef @__PRETTY_FUNCTION__._Z10solveLpIpxRK12HighsOptionsR10HighsTimerRK7HighsLpR10HighsBasisR13HighsSolutionR16HighsModelStatusR9HighsInfoR13HighsCallback) #9
  unreachable

452:                                              ; No predecessors!
  br label %453

453:                                              ; preds = %452, %450
  %454 = load ptr, ptr %10, align 8, !tbaa !5
  invoke void @_Z19reportIpmNoProgressRK12HighsOptionsRKN3ipx4InfoE(ptr noundef nonnull align 8 dereferenceable(1020) %454, ptr noundef nonnull align 8 dereferenceable(464) %38)
          to label %455 unwind label %413

455:                                              ; preds = %453
  %456 = load ptr, ptr %15, align 8, !tbaa !5
  store i32 15, ptr %456, align 4, !tbaa !68
  store i32 1, ptr %9, align 4
  store i32 1, ptr %35, align 4
  br label %457

457:                                              ; preds = %455, %444, %438, %432, %427, %421, %412
  call void @llvm.lifetime.end.p0(i64 4, ptr %45) #8
  br label %712

458:                                              ; preds = %399
  %459 = load i32, ptr %36, align 4, !tbaa !67
  %460 = icmp ne i32 %459, 1000
  %461 = load ptr, ptr %10, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 1, ptr %47) #8
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %47) #8
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %46, ptr noundef @.str.57, ptr noundef nonnull align 1 dereferenceable(1) %47)
          to label %462 unwind label %467

462:                                              ; preds = %458
  %463 = load i32, ptr %36, align 4, !tbaa !67
  %464 = invoke noundef zeroext i1 @_Z14ipxStatusErrorbRK12HighsOptionsNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEi(i1 noundef zeroext %460, ptr noundef nonnull align 8 dereferenceable(1020) %461, ptr noundef %46, i32 noundef %463)
          to label %465 unwind label %471

465:                                              ; preds = %462
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %46) #8
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %47) #8
  call void @llvm.lifetime.end.p0(i64 1, ptr %47) #8
  br i1 %464, label %466, label %476

466:                                              ; preds = %465
  store i32 -1, ptr %9, align 4
  store i32 1, ptr %35, align 4
  br label %712

467:                                              ; preds = %458
  %468 = landingpad { ptr, i32 }
          cleanup
  %469 = extractvalue { ptr, i32 } %468, 0
  store ptr %469, ptr %20, align 8
  %470 = extractvalue { ptr, i32 } %468, 1
  store i32 %470, ptr %21, align 4
  br label %475

471:                                              ; preds = %462
  %472 = landingpad { ptr, i32 }
          cleanup
  %473 = extractvalue { ptr, i32 } %472, 0
  store ptr %473, ptr %20, align 8
  %474 = extractvalue { ptr, i32 } %472, 1
  store i32 %474, ptr %21, align 4
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %46) #8
  br label %475

475:                                              ; preds = %471, %467
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %47) #8
  call void @llvm.lifetime.end.p0(i64 1, ptr %47) #8
  br label %713

476:                                              ; preds = %465
  %477 = load ptr, ptr %10, align 8, !tbaa !5
  %478 = invoke noundef zeroext i1 @_Z22illegalIpxSolvedStatusRKN3ipx4InfoERK12HighsOptions(ptr noundef nonnull align 8 dereferenceable(464) %38, ptr noundef nonnull align 8 dereferenceable(1020) %477)
          to label %479 unwind label %372

479:                                              ; preds = %476
  br i1 %478, label %480, label %481

480:                                              ; preds = %479
  store i32 -1, ptr %9, align 4
  store i32 1, ptr %35, align 4
  br label %712

481:                                              ; preds = %479
  %482 = getelementptr inbounds %struct.ipx_info, ptr %38, i32 0, i32 1
  %483 = load i32, ptr %482, align 4, !tbaa !78
  %484 = icmp eq i32 %483, 3
  br i1 %484, label %489, label %485

485:                                              ; preds = %481
  %486 = getelementptr inbounds %struct.ipx_info, ptr %38, i32 0, i32 1
  %487 = load i32, ptr %486, align 4, !tbaa !78
  %488 = icmp eq i32 %487, 4
  br i1 %488, label %489, label %511

489:                                              ; preds = %485, %481
  %490 = getelementptr inbounds %struct.ipx_info, ptr %38, i32 0, i32 1
  %491 = load i32, ptr %490, align 4, !tbaa !78
  %492 = icmp eq i32 %491, 3
  br i1 %492, label %493, label %495

493:                                              ; preds = %489
  %494 = load ptr, ptr %15, align 8, !tbaa !5
  store i32 8, ptr %494, align 4, !tbaa !68
  br label %502

495:                                              ; preds = %489
  %496 = getelementptr inbounds %struct.ipx_info, ptr %38, i32 0, i32 1
  %497 = load i32, ptr %496, align 4, !tbaa !78
  %498 = icmp eq i32 %497, 4
  br i1 %498, label %499, label %501

499:                                              ; preds = %495
  %500 = load ptr, ptr %15, align 8, !tbaa !5
  store i32 9, ptr %500, align 4, !tbaa !68
  br label %501

501:                                              ; preds = %499, %495
  br label %502

502:                                              ; preds = %501, %493
  %503 = load ptr, ptr %10, align 8, !tbaa !5
  %504 = load ptr, ptr %12, align 8, !tbaa !5
  %505 = load i32, ptr %23, align 4, !tbaa !67
  %506 = load i32, ptr %24, align 4, !tbaa !67
  %507 = load ptr, ptr %15, align 8, !tbaa !5
  %508 = load i32, ptr %507, align 4, !tbaa !68
  %509 = load ptr, ptr %14, align 8, !tbaa !5
  invoke void @_Z25getHighsNonVertexSolutionRK12HighsOptionsRK7HighsLpiiRKSt6vectorIdSaIdEERKS5_IcSaIcEERKN3ipx8LpSolverE16HighsModelStatusR13HighsSolution(ptr noundef nonnull align 8 dereferenceable(1020) %503, ptr noundef nonnull align 8 dereferenceable(920) %504, i32 noundef %505, i32 noundef %506, ptr noundef nonnull align 8 dereferenceable(24) %32, ptr noundef nonnull align 8 dereferenceable(24) %33, ptr noundef nonnull align 8 dereferenceable(2864) %18, i32 noundef %508, ptr noundef nonnull align 8 dereferenceable(104) %509)
          to label %510 unwind label %372

510:                                              ; preds = %502
  store i32 0, ptr %9, align 4
  store i32 1, ptr %35, align 4
  br label %712

511:                                              ; preds = %485
  %512 = getelementptr inbounds %struct.ipx_info, ptr %38, i32 0, i32 1
  %513 = load i32, ptr %512, align 4, !tbaa !78
  %514 = icmp ne i32 %513, 1
  br i1 %514, label %515, label %519

515:                                              ; preds = %511
  %516 = getelementptr inbounds %struct.ipx_info, ptr %38, i32 0, i32 1
  %517 = load i32, ptr %516, align 4, !tbaa !78
  %518 = icmp ne i32 %517, 2
  br label %519

519:                                              ; preds = %515, %511
  %520 = phi i1 [ false, %511 ], [ %518, %515 ]
  %521 = load ptr, ptr %10, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 1, ptr %49) #8
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %49) #8
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %48, ptr noundef @.str.58, ptr noundef nonnull align 1 dereferenceable(1) %49)
          to label %522 unwind label %528

522:                                              ; preds = %519
  %523 = getelementptr inbounds %struct.ipx_info, ptr %38, i32 0, i32 1
  %524 = load i32, ptr %523, align 4, !tbaa !78
  %525 = invoke noundef zeroext i1 @_Z14ipxStatusErrorbRK12HighsOptionsNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEi(i1 noundef zeroext %520, ptr noundef nonnull align 8 dereferenceable(1020) %521, ptr noundef %48, i32 noundef %524)
          to label %526 unwind label %532

526:                                              ; preds = %522
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %48) #8
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %49) #8
  call void @llvm.lifetime.end.p0(i64 1, ptr %49) #8
  br i1 %525, label %527, label %537

527:                                              ; preds = %526
  store i32 -1, ptr %9, align 4
  store i32 1, ptr %35, align 4
  br label %712

528:                                              ; preds = %519
  %529 = landingpad { ptr, i32 }
          cleanup
  %530 = extractvalue { ptr, i32 } %529, 0
  store ptr %530, ptr %20, align 8
  %531 = extractvalue { ptr, i32 } %529, 1
  store i32 %531, ptr %21, align 4
  br label %536

532:                                              ; preds = %522
  %533 = landingpad { ptr, i32 }
          cleanup
  %534 = extractvalue { ptr, i32 } %533, 0
  store ptr %534, ptr %20, align 8
  %535 = extractvalue { ptr, i32 } %533, 1
  store i32 %535, ptr %21, align 4
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %48) #8
  br label %536

536:                                              ; preds = %532, %528
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %49) #8
  call void @llvm.lifetime.end.p0(i64 1, ptr %49) #8
  br label %713

537:                                              ; preds = %526
  %538 = getelementptr inbounds %struct.ipx_info, ptr %38, i32 0, i32 2
  %539 = load i32, ptr %538, align 8, !tbaa !79
  %540 = icmp ne i32 %539, 0
  br i1 %540, label %541, label %549

541:                                              ; preds = %537
  %542 = getelementptr inbounds %struct.ipx_info, ptr %38, i32 0, i32 2
  %543 = load i32, ptr %542, align 8, !tbaa !79
  %544 = icmp ne i32 %543, 1
  br i1 %544, label %545, label %549

545:                                              ; preds = %541
  %546 = getelementptr inbounds %struct.ipx_info, ptr %38, i32 0, i32 2
  %547 = load i32, ptr %546, align 8, !tbaa !79
  %548 = icmp ne i32 %547, 2
  br label %549

549:                                              ; preds = %545, %541, %537
  %550 = phi i1 [ false, %541 ], [ false, %537 ], [ %548, %545 ]
  %551 = load ptr, ptr %10, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 1, ptr %51) #8
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %51) #8
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %50, ptr noundef @.str.59, ptr noundef nonnull align 1 dereferenceable(1) %51)
          to label %552 unwind label %558

552:                                              ; preds = %549
  %553 = getelementptr inbounds %struct.ipx_info, ptr %38, i32 0, i32 2
  %554 = load i32, ptr %553, align 8, !tbaa !79
  %555 = invoke noundef zeroext i1 @_Z14ipxStatusErrorbRK12HighsOptionsNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEi(i1 noundef zeroext %550, ptr noundef nonnull align 8 dereferenceable(1020) %551, ptr noundef %50, i32 noundef %554)
          to label %556 unwind label %562

556:                                              ; preds = %552
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %50) #8
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %51) #8
  call void @llvm.lifetime.end.p0(i64 1, ptr %51) #8
  br i1 %555, label %557, label %567

557:                                              ; preds = %556
  store i32 -1, ptr %9, align 4
  store i32 1, ptr %35, align 4
  br label %712

558:                                              ; preds = %549
  %559 = landingpad { ptr, i32 }
          cleanup
  %560 = extractvalue { ptr, i32 } %559, 0
  store ptr %560, ptr %20, align 8
  %561 = extractvalue { ptr, i32 } %559, 1
  store i32 %561, ptr %21, align 4
  br label %566

562:                                              ; preds = %552
  %563 = landingpad { ptr, i32 }
          cleanup
  %564 = extractvalue { ptr, i32 } %563, 0
  store ptr %564, ptr %20, align 8
  %565 = extractvalue { ptr, i32 } %563, 1
  store i32 %565, ptr %21, align 4
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %50) #8
  br label %566

566:                                              ; preds = %562, %558
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %51) #8
  call void @llvm.lifetime.end.p0(i64 1, ptr %51) #8
  br label %713

567:                                              ; preds = %556
  call void @llvm.lifetime.start.p0(i64 1, ptr %52) #8
  %568 = getelementptr inbounds %struct.ipx_info, ptr %38, i32 0, i32 2
  %569 = load i32, ptr %568, align 8, !tbaa !79
  %570 = icmp ne i32 %569, 0
  %571 = zext i1 %570 to i8
  store i8 %571, ptr %52, align 1, !tbaa !70
  call void @llvm.lifetime.start.p0(i64 1, ptr %53) #8
  %572 = getelementptr inbounds %struct.ipx_info, ptr %38, i32 0, i32 2
  %573 = load i32, ptr %572, align 8, !tbaa !79
  %574 = icmp eq i32 %573, 2
  br i1 %574, label %579, label %575

575:                                              ; preds = %567
  %576 = getelementptr inbounds %struct.ipx_info, ptr %38, i32 0, i32 1
  %577 = load i32, ptr %576, align 4, !tbaa !78
  %578 = icmp eq i32 %577, 2
  br label %579

579:                                              ; preds = %575, %567
  %580 = phi i1 [ true, %567 ], [ %578, %575 ]
  %581 = zext i1 %580 to i8
  store i8 %581, ptr %53, align 1, !tbaa !70
  %582 = load i8, ptr %52, align 1, !tbaa !70, !range !35, !noundef !36
  %583 = trunc i8 %582 to i1
  br i1 %583, label %584, label %667

584:                                              ; preds = %579
  call void @llvm.lifetime.start.p0(i64 152, ptr %54) #8
  call void @_ZN11IpxSolutionC2Ev(ptr noundef nonnull align 8 dereferenceable(152) %54) #8
  %585 = load i32, ptr %23, align 4, !tbaa !67
  %586 = getelementptr inbounds %struct.IpxSolution, ptr %54, i32 0, i32 0
  store i32 %585, ptr %586, align 8, !tbaa !80
  %587 = load i32, ptr %24, align 4, !tbaa !67
  %588 = getelementptr inbounds %struct.IpxSolution, ptr %54, i32 0, i32 1
  store i32 %587, ptr %588, align 4, !tbaa !86
  %589 = getelementptr inbounds %struct.IpxSolution, ptr %54, i32 0, i32 2
  %590 = load i32, ptr %23, align 4, !tbaa !67
  %591 = sext i32 %590 to i64
  invoke void @_ZNSt6vectorIdSaIdEE6resizeEm(ptr noundef nonnull align 8 dereferenceable(24) %589, i64 noundef %591)
          to label %592 unwind label %634

592:                                              ; preds = %584
  %593 = getelementptr inbounds %struct.IpxSolution, ptr %54, i32 0, i32 3
  %594 = load i32, ptr %24, align 4, !tbaa !67
  %595 = sext i32 %594 to i64
  invoke void @_ZNSt6vectorIdSaIdEE6resizeEm(ptr noundef nonnull align 8 dereferenceable(24) %593, i64 noundef %595)
          to label %596 unwind label %634

596:                                              ; preds = %592
  %597 = getelementptr inbounds %struct.IpxSolution, ptr %54, i32 0, i32 4
  %598 = load i32, ptr %23, align 4, !tbaa !67
  %599 = sext i32 %598 to i64
  invoke void @_ZNSt6vectorIdSaIdEE6resizeEm(ptr noundef nonnull align 8 dereferenceable(24) %597, i64 noundef %599)
          to label %600 unwind label %634

600:                                              ; preds = %596
  %601 = getelementptr inbounds %struct.IpxSolution, ptr %54, i32 0, i32 5
  %602 = load i32, ptr %24, align 4, !tbaa !67
  %603 = sext i32 %602 to i64
  invoke void @_ZNSt6vectorIdSaIdEE6resizeEm(ptr noundef nonnull align 8 dereferenceable(24) %601, i64 noundef %603)
          to label %604 unwind label %634

604:                                              ; preds = %600
  %605 = getelementptr inbounds %struct.IpxSolution, ptr %54, i32 0, i32 7
  %606 = load i32, ptr %24, align 4, !tbaa !67
  %607 = sext i32 %606 to i64
  invoke void @_ZNSt6vectorIiSaIiEE6resizeEm(ptr noundef nonnull align 8 dereferenceable(24) %605, i64 noundef %607)
          to label %608 unwind label %634

608:                                              ; preds = %604
  %609 = getelementptr inbounds %struct.IpxSolution, ptr %54, i32 0, i32 6
  %610 = load i32, ptr %23, align 4, !tbaa !67
  %611 = sext i32 %610 to i64
  invoke void @_ZNSt6vectorIiSaIiEE6resizeEm(ptr noundef nonnull align 8 dereferenceable(24) %609, i64 noundef %611)
          to label %612 unwind label %634

612:                                              ; preds = %608
  call void @llvm.lifetime.start.p0(i64 4, ptr %55) #8
  %613 = getelementptr inbounds %struct.IpxSolution, ptr %54, i32 0, i32 2
  %614 = call noundef ptr @_ZNSt6vectorIdSaIdEE4dataEv(ptr noundef nonnull align 8 dereferenceable(24) %613) #8
  %615 = getelementptr inbounds %struct.IpxSolution, ptr %54, i32 0, i32 3
  %616 = call noundef ptr @_ZNSt6vectorIdSaIdEE4dataEv(ptr noundef nonnull align 8 dereferenceable(24) %615) #8
  %617 = getelementptr inbounds %struct.IpxSolution, ptr %54, i32 0, i32 5
  %618 = call noundef ptr @_ZNSt6vectorIdSaIdEE4dataEv(ptr noundef nonnull align 8 dereferenceable(24) %617) #8
  %619 = getelementptr inbounds %struct.IpxSolution, ptr %54, i32 0, i32 4
  %620 = call noundef ptr @_ZNSt6vectorIdSaIdEE4dataEv(ptr noundef nonnull align 8 dereferenceable(24) %619) #8
  %621 = getelementptr inbounds %struct.IpxSolution, ptr %54, i32 0, i32 7
  %622 = call noundef ptr @_ZNSt6vectorIiSaIiEE4dataEv(ptr noundef nonnull align 8 dereferenceable(24) %621) #8
  %623 = getelementptr inbounds %struct.IpxSolution, ptr %54, i32 0, i32 6
  %624 = call noundef ptr @_ZNSt6vectorIiSaIiEE4dataEv(ptr noundef nonnull align 8 dereferenceable(24) %623) #8
  %625 = invoke noundef i32 @_ZNK3ipx8LpSolver16GetBasicSolutionEPdS1_S1_S1_PiS2_(ptr noundef nonnull align 8 dereferenceable(2864) %18, ptr noundef %614, ptr noundef %616, ptr noundef %618, ptr noundef %620, ptr noundef %622, ptr noundef %624)
          to label %626 unwind label %638

626:                                              ; preds = %612
  store i32 %625, ptr %55, align 4, !tbaa !67
  %627 = load i32, ptr %55, align 4, !tbaa !67
  %628 = icmp ne i32 %627, 0
  br i1 %628, label %629, label %642

629:                                              ; preds = %626
  %630 = load ptr, ptr %10, align 8, !tbaa !5
  %631 = getelementptr inbounds %struct.HighsOptionsStruct, ptr %630, i32 0, i32 130
  %632 = load i32, ptr %55, align 4, !tbaa !67
  invoke void (ptr, i32, ptr, ...) @_Z12highsLogUserRK15HighsLogOptions12HighsLogTypePKcz(ptr noundef nonnull align 8 dereferenceable(89) %631, i32 noundef 5, ptr noundef @.str.60, i32 noundef %632)
          to label %633 unwind label %638

633:                                              ; preds = %629
  store i32 -1, ptr %9, align 4
  store i32 1, ptr %35, align 4
  br label %662

634:                                              ; preds = %608, %604, %600, %596, %592, %584
  %635 = landingpad { ptr, i32 }
          cleanup
  %636 = extractvalue { ptr, i32 } %635, 0
  store ptr %636, ptr %20, align 8
  %637 = extractvalue { ptr, i32 } %635, 1
  store i32 %637, ptr %21, align 4
  br label %666

638:                                              ; preds = %629, %612
  %639 = landingpad { ptr, i32 }
          cleanup
  %640 = extractvalue { ptr, i32 } %639, 0
  store ptr %640, ptr %20, align 8
  %641 = extractvalue { ptr, i32 } %639, 1
  store i32 %641, ptr %21, align 4
  br label %665

642:                                              ; preds = %626
  call void @llvm.lifetime.start.p0(i64 4, ptr %56) #8
  %643 = load ptr, ptr %10, align 8, !tbaa !5
  %644 = getelementptr inbounds %struct.HighsOptionsStruct, ptr %643, i32 0, i32 130
  %645 = load ptr, ptr %12, align 8, !tbaa !5
  %646 = load ptr, ptr %13, align 8, !tbaa !5
  %647 = load ptr, ptr %14, align 8, !tbaa !5
  %648 = invoke noundef i32 @_Z36ipxBasicSolutionToHighsBasicSolutionRK15HighsLogOptionsRK7HighsLpRKSt6vectorIdSaIdEERKS5_IcSaIcEERK11IpxSolutionR10HighsBasisR13HighsSolution(ptr noundef nonnull align 8 dereferenceable(89) %644, ptr noundef nonnull align 8 dereferenceable(920) %645, ptr noundef nonnull align 8 dereferenceable(24) %32, ptr noundef nonnull align 8 dereferenceable(24) %33, ptr noundef nonnull align 8 dereferenceable(152) %54, ptr noundef nonnull align 8 dereferenceable(96) %646, ptr noundef nonnull align 8 dereferenceable(104) %647)
          to label %649 unwind label %656

649:                                              ; preds = %642
  store i32 %648, ptr %56, align 4, !tbaa !76
  %650 = load i32, ptr %56, align 4, !tbaa !76
  %651 = icmp ne i32 %650, 0
  br i1 %651, label %652, label %660

652:                                              ; preds = %649
  %653 = load ptr, ptr %10, align 8, !tbaa !5
  %654 = getelementptr inbounds %struct.HighsOptionsStruct, ptr %653, i32 0, i32 130
  invoke void (ptr, i32, ptr, ...) @_Z12highsLogUserRK15HighsLogOptions12HighsLogTypePKcz(ptr noundef nonnull align 8 dereferenceable(89) %654, i32 noundef 5, ptr noundef @.str.61)
          to label %655 unwind label %656

655:                                              ; preds = %652
  store i32 -1, ptr %9, align 4
  store i32 1, ptr %35, align 4
  br label %661

656:                                              ; preds = %652, %642
  %657 = landingpad { ptr, i32 }
          cleanup
  %658 = extractvalue { ptr, i32 } %657, 0
  store ptr %658, ptr %20, align 8
  %659 = extractvalue { ptr, i32 } %657, 1
  store i32 %659, ptr %21, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %56) #8
  br label %665

660:                                              ; preds = %649
  store i32 0, ptr %35, align 4
  br label %661

661:                                              ; preds = %660, %655
  call void @llvm.lifetime.end.p0(i64 4, ptr %56) #8
  br label %662

662:                                              ; preds = %661, %633
  call void @llvm.lifetime.end.p0(i64 4, ptr %55) #8
  call void @_ZN11IpxSolutionD2Ev(ptr noundef nonnull align 8 dereferenceable(152) %54) #8
  call void @llvm.lifetime.end.p0(i64 152, ptr %54) #8
  %663 = load i32, ptr %35, align 4
  switch i32 %663, label %710 [
    i32 0, label %664
  ]

664:                                              ; preds = %662
  br label %692

665:                                              ; preds = %656, %638
  call void @llvm.lifetime.end.p0(i64 4, ptr %55) #8
  br label %666

666:                                              ; preds = %665, %634
  call void @_ZN11IpxSolutionD2Ev(ptr noundef nonnull align 8 dereferenceable(152) %54) #8
  call void @llvm.lifetime.end.p0(i64 152, ptr %54) #8
  br label %711

667:                                              ; preds = %579
  call void @llvm.lifetime.start.p0(i64 4, ptr %57) #8
  %668 = load i8, ptr %53, align 1, !tbaa !70, !range !35, !noundef !36
  %669 = trunc i8 %668 to i1
  %670 = zext i1 %669 to i64
  %671 = select i1 %669, i32 15, i32 7
  store i32 %671, ptr %57, align 4, !tbaa !68
  %672 = load ptr, ptr %10, align 8, !tbaa !5
  %673 = load ptr, ptr %12, align 8, !tbaa !5
  %674 = load i32, ptr %23, align 4, !tbaa !67
  %675 = load i32, ptr %24, align 4, !tbaa !67
  %676 = load i32, ptr %57, align 4, !tbaa !68
  %677 = load ptr, ptr %14, align 8, !tbaa !5
  invoke void @_Z25getHighsNonVertexSolutionRK12HighsOptionsRK7HighsLpiiRKSt6vectorIdSaIdEERKS5_IcSaIcEERKN3ipx8LpSolverE16HighsModelStatusR13HighsSolution(ptr noundef nonnull align 8 dereferenceable(1020) %672, ptr noundef nonnull align 8 dereferenceable(920) %673, i32 noundef %674, i32 noundef %675, ptr noundef nonnull align 8 dereferenceable(24) %32, ptr noundef nonnull align 8 dereferenceable(24) %33, ptr noundef nonnull align 8 dereferenceable(2864) %18, i32 noundef %676, ptr noundef nonnull align 8 dereferenceable(104) %677)
          to label %678 unwind label %686

678:                                              ; preds = %667
  %679 = load ptr, ptr %13, align 8, !tbaa !5
  %680 = getelementptr inbounds %struct.HighsBasis, ptr %679, i32 0, i32 0
  %681 = load i8, ptr %680, align 8, !tbaa !9, !range !35, !noundef !36
  %682 = trunc i8 %681 to i1
  %683 = xor i1 %682, true
  br i1 %683, label %684, label %685

684:                                              ; preds = %678
  br label %691

685:                                              ; preds = %678
  call void @__assert_fail(ptr noundef @.str.62, ptr noundef @.str.52, i32 noundef 376, ptr noundef @__PRETTY_FUNCTION__._Z10solveLpIpxRK12HighsOptionsR10HighsTimerRK7HighsLpR10HighsBasisR13HighsSolutionR16HighsModelStatusR9HighsInfoR13HighsCallback) #9
  unreachable

686:                                              ; preds = %667
  %687 = landingpad { ptr, i32 }
          cleanup
  %688 = extractvalue { ptr, i32 } %687, 0
  store ptr %688, ptr %20, align 8
  %689 = extractvalue { ptr, i32 } %687, 1
  store i32 %689, ptr %21, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %57) #8
  br label %711

690:                                              ; No predecessors!
  br label %691

691:                                              ; preds = %690, %684
  call void @llvm.lifetime.end.p0(i64 4, ptr %57) #8
  br label %692

692:                                              ; preds = %691, %664
  %693 = load ptr, ptr %13, align 8, !tbaa !5
  %694 = getelementptr inbounds %struct.HighsBasis, ptr %693, i32 0, i32 0
  %695 = load i8, ptr %694, align 8, !tbaa !9, !range !35, !noundef !36
  %696 = trunc i8 %695 to i1
  %697 = zext i1 %696 to i64
  %698 = select i1 %696, i32 1, i32 0
  %699 = load ptr, ptr %16, align 8, !tbaa !5
  %700 = getelementptr inbounds i8, ptr %699, i64 8
  %701 = getelementptr inbounds %struct.HighsInfoStruct, ptr %700, i32 0, i32 9
  store i32 %698, ptr %701, align 4, !tbaa !87
  call void @llvm.lifetime.start.p0(i64 4, ptr %58) #8
  %702 = load i8, ptr %53, align 1, !tbaa !70, !range !35, !noundef !36
  %703 = trunc i8 %702 to i1
  br i1 %703, label %704, label %706

704:                                              ; preds = %692
  %705 = load ptr, ptr %15, align 8, !tbaa !5
  store i32 15, ptr %705, align 4, !tbaa !68
  store i32 1, ptr %58, align 4, !tbaa !76
  br label %708

706:                                              ; preds = %692
  %707 = load ptr, ptr %15, align 8, !tbaa !5
  store i32 7, ptr %707, align 4, !tbaa !68
  store i32 0, ptr %58, align 4, !tbaa !76
  br label %708

708:                                              ; preds = %706, %704
  %709 = load i32, ptr %58, align 4, !tbaa !76
  store i32 %709, ptr %9, align 4
  store i32 1, ptr %35, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %58) #8
  br label %710

710:                                              ; preds = %708, %662
  call void @llvm.lifetime.end.p0(i64 1, ptr %53) #8
  call void @llvm.lifetime.end.p0(i64 1, ptr %52) #8
  br label %712

711:                                              ; preds = %686, %666
  call void @llvm.lifetime.end.p0(i64 1, ptr %53) #8
  call void @llvm.lifetime.end.p0(i64 1, ptr %52) #8
  br label %713

712:                                              ; preds = %710, %557, %527, %510, %480, %466, %457, %389, %366
  call void @llvm.lifetime.end.p0(i64 4, ptr %42) #8
  call void @llvm.lifetime.end.p0(i64 4, ptr %41) #8
  call void @llvm.lifetime.end.p0(i64 1, ptr %40) #8
  br label %715

713:                                              ; preds = %711, %566, %536, %475, %413, %398, %372
  call void @llvm.lifetime.end.p0(i64 4, ptr %42) #8
  br label %714

714:                                              ; preds = %713, %368
  call void @llvm.lifetime.end.p0(i64 4, ptr %41) #8
  call void @llvm.lifetime.end.p0(i64 1, ptr %40) #8
  br label %716

715:                                              ; preds = %712, %343
  call void @llvm.lifetime.end.p0(i64 464, ptr %38) #8
  call void @llvm.lifetime.end.p0(i64 1, ptr %37) #8
  call void @llvm.lifetime.end.p0(i64 4, ptr %36) #8
  br label %718

716:                                              ; preds = %714, %338, %306
  call void @llvm.lifetime.end.p0(i64 464, ptr %38) #8
  call void @llvm.lifetime.end.p0(i64 1, ptr %37) #8
  br label %717

717:                                              ; preds = %716, %302
  call void @llvm.lifetime.end.p0(i64 4, ptr %36) #8
  br label %720

718:                                              ; preds = %715, %276
  call void @llvm.lifetime.end.p0(i64 4, ptr %34) #8
  call void @_ZNSt6vectorIcSaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %33) #8
  call void @llvm.lifetime.end.p0(i64 24, ptr %33) #8
  call void @_ZNSt6vectorIdSaIdEED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %32) #8
  call void @llvm.lifetime.end.p0(i64 24, ptr %32) #8
  call void @_ZNSt6vectorIdSaIdEED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %31) #8
  call void @llvm.lifetime.end.p0(i64 24, ptr %31) #8
  call void @_ZNSt6vectorIdSaIdEED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %30) #8
  call void @llvm.lifetime.end.p0(i64 24, ptr %30) #8
  call void @_ZNSt6vectorIdSaIdEED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %29) #8
  call void @llvm.lifetime.end.p0(i64 24, ptr %29) #8
  call void @_ZNSt6vectorIdSaIdEED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %28) #8
  call void @llvm.lifetime.end.p0(i64 24, ptr %28) #8
  call void @_ZNSt6vectorIiSaIiEED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %27) #8
  call void @llvm.lifetime.end.p0(i64 24, ptr %27) #8
  call void @_ZNSt6vectorIiSaIiEED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %26) #8
  call void @llvm.lifetime.end.p0(i64 24, ptr %26) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %25) #8
  call void @llvm.lifetime.end.p0(i64 4, ptr %24) #8
  call void @llvm.lifetime.end.p0(i64 4, ptr %23) #8
  call void @llvm.lifetime.end.p0(i64 240, ptr %19) #8
  call void @_ZN3ipx8LpSolverD2Ev(ptr noundef nonnull align 8 dereferenceable(2864) %18) #8
  call void @llvm.lifetime.end.p0(i64 2864, ptr %18) #8
  %719 = load i32, ptr %9, align 4
  ret i32 %719

720:                                              ; preds = %717, %282
  call void @llvm.lifetime.end.p0(i64 4, ptr %34) #8
  br label %721

721:                                              ; preds = %720, %278
  call void @_ZNSt6vectorIcSaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %33) #8
  call void @llvm.lifetime.end.p0(i64 24, ptr %33) #8
  call void @_ZNSt6vectorIdSaIdEED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %32) #8
  call void @llvm.lifetime.end.p0(i64 24, ptr %32) #8
  call void @_ZNSt6vectorIdSaIdEED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %31) #8
  call void @llvm.lifetime.end.p0(i64 24, ptr %31) #8
  call void @_ZNSt6vectorIdSaIdEED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %30) #8
  call void @llvm.lifetime.end.p0(i64 24, ptr %30) #8
  call void @_ZNSt6vectorIdSaIdEED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %29) #8
  call void @llvm.lifetime.end.p0(i64 24, ptr %29) #8
  call void @_ZNSt6vectorIdSaIdEED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %28) #8
  call void @llvm.lifetime.end.p0(i64 24, ptr %28) #8
  call void @_ZNSt6vectorIiSaIiEED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %27) #8
  call void @llvm.lifetime.end.p0(i64 24, ptr %27) #8
  call void @_ZNSt6vectorIiSaIiEED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %26) #8
  call void @llvm.lifetime.end.p0(i64 24, ptr %26) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %25) #8
  call void @llvm.lifetime.end.p0(i64 4, ptr %24) #8
  call void @llvm.lifetime.end.p0(i64 4, ptr %23) #8
  br label %722

722:                                              ; preds = %721, %85
  call void @llvm.lifetime.end.p0(i64 240, ptr %19) #8
  call void @_ZN3ipx8LpSolverD2Ev(ptr noundef nonnull align 8 dereferenceable(2864) %18) #8
  call void @llvm.lifetime.end.p0(i64 2864, ptr %18) #8
  br label %723

723:                                              ; preds = %722
  %724 = load ptr, ptr %20, align 8
  %725 = load i32, ptr %21, align 4
  %726 = insertvalue { ptr, i32 } poison, ptr %724, 0
  %727 = insertvalue { ptr, i32 } %726, i32 %725, 1
  resume { ptr, i32 } %727
}

declare void @_Z28resetModelStatusAndHighsInfoR16HighsModelStatusR9HighsInfo(ptr noundef nonnull align 4 dereferenceable(4), ptr noundef nonnull align 8 dereferenceable(184)) #3

; Function Attrs: inlinehint mustprogress uwtable
declare dso_local void @_ZN3ipx8LpSolverC2Ev(ptr noundef nonnull align 8 dereferenceable(2864)) unnamed_addr #4 align 2

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

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

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

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

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

declare void @_ZN3ipx8LpSolver13SetParametersENS_10ParametersE(ptr noundef nonnull align 8 dereferenceable(2864), ptr noundef byval(%"struct.ipx::Parameters") align 8) #3

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

declare void @_ZN3ipx8LpSolver11SetCallbackEP13HighsCallback(ptr noundef nonnull align 8 dereferenceable(2864), ptr noundef) #3

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

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

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

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

declare void @_Z12highsLogUserRK15HighsLogOptions12HighsLogTypePKcz(ptr noundef nonnull align 8 dereferenceable(89), i32 noundef, ptr noundef, ...) #3

; 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

declare noundef i32 @_ZN3ipx8LpSolver9LoadModelEidPKdS2_S2_iPKiS4_S2_S2_PKc(ptr noundef nonnull align 8 dereferenceable(2864), i32 noundef, double noundef, ptr noundef, ptr noundef, ptr noundef, i32 noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef) #3

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

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

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

declare noundef i32 @_ZN3ipx8LpSolver5SolveEv(ptr noundef nonnull align 8 dereferenceable(2864)) #3

declare void @_ZNK3ipx8LpSolver7GetInfoEv(ptr dead_on_unwind writable sret(%"struct.ipx::Info") align 8, ptr noundef nonnull align 8 dereferenceable(2864)) #3

; Function Attrs: mustprogress uwtable
declare dso_local void @_Z15reportSolveDataRK15HighsLogOptionsRKN3ipx4InfoE(ptr noundef nonnull align 8 dereferenceable(89), ptr noundef nonnull align 8 dereferenceable(464)) #2

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

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

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

; Function Attrs: mustprogress uwtable
declare dso_local void @_Z25getHighsNonVertexSolutionRK12HighsOptionsRK7HighsLpiiRKSt6vectorIdSaIdEERKS5_IcSaIcEERKN3ipx8LpSolverE16HighsModelStatusR13HighsSolution(ptr noundef nonnull align 8 dereferenceable(1020), ptr noundef nonnull align 8 dereferenceable(920), i32 noundef, i32 noundef, ptr noundef nonnull align 8 dereferenceable(24), ptr noundef nonnull align 8 dereferenceable(24), ptr noundef nonnull align 8 dereferenceable(2864), i32 noundef, ptr noundef nonnull align 8 dereferenceable(104)) #2

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

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

; Function Attrs: mustprogress uwtable
declare dso_local void @_Z19reportIpmNoProgressRK12HighsOptionsRKN3ipx4InfoE(ptr noundef nonnull align 8 dereferenceable(1020), ptr noundef nonnull align 8 dereferenceable(464)) #2

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

; Function Attrs: inlinehint mustprogress nounwind uwtable
declare dso_local void @_ZN11IpxSolutionC2Ev(ptr noundef nonnull align 8 dereferenceable(152)) unnamed_addr #6 align 2

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

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

declare noundef i32 @_ZNK3ipx8LpSolver16GetBasicSolutionEPdS1_S1_S1_PiS2_(ptr noundef nonnull align 8 dereferenceable(2864), ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef) #3

declare noundef i32 @_Z36ipxBasicSolutionToHighsBasicSolutionRK15HighsLogOptionsRK7HighsLpRKSt6vectorIdSaIdEERKS5_IcSaIcEERK11IpxSolutionR10HighsBasisR13HighsSolution(ptr noundef nonnull align 8 dereferenceable(89), ptr noundef nonnull align 8 dereferenceable(920), ptr noundef nonnull align 8 dereferenceable(24), ptr noundef nonnull align 8 dereferenceable(24), ptr noundef nonnull align 8 dereferenceable(152), ptr noundef nonnull align 8 dereferenceable(96), ptr noundef nonnull align 8 dereferenceable(104)) #3

; Function Attrs: inlinehint mustprogress nounwind uwtable
declare dso_local void @_ZN11IpxSolutionD2Ev(ptr noundef nonnull align 8 dereferenceable(152)) unnamed_addr #6 align 2

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

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

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

; Function Attrs: inlinehint mustprogress nounwind uwtable
declare dso_local void @_ZN3ipx8LpSolverD2Ev(ptr noundef nonnull align 8 dereferenceable(2864)) unnamed_addr #6 align 2

; Function Attrs: mustprogress nounwind uwtable
declare dso_local void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1)) 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 = { "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }
attributes #4 = { 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 #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 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 #7 = { nocallback nofree nounwind willreturn memory(argmem: readwrite) }
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, !11, i64 0}
!10 = !{!"_ZTS10HighsBasis", !11, i64 0, !11, i64 1, !11, i64 2, !11, i64 3, !12, i64 4, !12, i64 8, !13, i64 16, !16, i64 48, !16, i64 72}
!11 = !{!"bool", !7, i64 0}
!12 = !{!"int", !7, i64 0}
!13 = !{!"_ZTSNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE", !14, i64 0, !15, i64 8, !7, i64 16}
!14 = !{!"_ZTSNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE12_Alloc_hiderE", !6, i64 0}
!15 = !{!"long", !7, i64 0}
!16 = !{!"_ZTSSt6vectorI16HighsBasisStatusSaIS0_EE", !17, i64 0}
!17 = !{!"_ZTSSt12_Vector_baseI16HighsBasisStatusSaIS0_EE", !18, i64 0}
!18 = !{!"_ZTSNSt12_Vector_baseI16HighsBasisStatusSaIS0_EE12_Vector_implE", !19, i64 0}
!19 = !{!"_ZTSNSt12_Vector_baseI16HighsBasisStatusSaIS0_EE17_Vector_impl_dataE", !6, i64 0, !6, i64 8, !6, i64 16}
!20 = !{!21, !11, i64 0}
!21 = !{!"_ZTS13HighsSolution", !11, i64 0, !11, i64 1, !22, i64 8, !22, i64 32, !22, i64 56, !22, i64 80}
!22 = !{!"_ZTSSt6vectorIdSaIdEE", !23, i64 0}
!23 = !{!"_ZTSSt12_Vector_baseIdSaIdEE", !24, i64 0}
!24 = !{!"_ZTSNSt12_Vector_baseIdSaIdEE12_Vector_implE", !25, i64 0}
!25 = !{!"_ZTSNSt12_Vector_baseIdSaIdEE17_Vector_impl_dataE", !6, i64 0, !6, i64 8, !6, i64 16}
!26 = !{!21, !11, i64 1}
!27 = !{!28, !12, i64 0}
!28 = !{!"_ZTS14ipx_parameters", !12, i64 0, !6, i64 8, !29, i64 16, !29, i64 24, !11, i64 32, !12, i64 36, !12, i64 40, !12, i64 44, !29, i64 48, !29, i64 56, !29, i64 64, !29, i64 72, !29, i64 80, !12, i64 88, !29, i64 96, !29, i64 104, !12, i64 112, !12, i64 116, !12, i64 120, !29, i64 128, !12, i64 136, !29, i64 144, !29, i64 152, !29, i64 160, !12, i64 168, !12, i64 172, !12, i64 176, !12, i64 180, !12, i64 184, !12, i64 188, !12, i64 192, !29, i64 200, !29, i64 208, !29, i64 216, !12, i64 224, !11, i64 228, !11, i64 229, !6, i64 232}
!29 = !{!"double", !7, i64 0}
!30 = !{!31, !11, i64 472}
!31 = !{!"_ZTS18HighsOptionsStruct", !13, i64 8, !13, i64 40, !13, i64 72, !13, i64 104, !29, i64 136, !13, i64 144, !13, i64 176, !12, i64 208, !13, i64 216, !29, i64 248, !29, i64 256, !29, i64 264, !29, i64 272, !29, i64 280, !29, i64 288, !29, i64 296, !29, i64 304, !29, i64 312, !29, i64 320, !29, i64 328, !12, i64 336, !12, i64 340, !12, i64 344, !12, i64 348, !12, i64 352, !12, i64 356, !12, i64 360, !12, i64 364, !12, i64 368, !12, i64 372, !12, i64 376, !12, i64 380, !12, i64 384, !12, i64 388, !13, i64 392, !11, i64 424, !11, i64 425, !11, i64 426, !12, i64 428, !12, i64 432, !13, i64 440, !11, i64 472, !11, i64 473, !11, i64 474, !12, i64 476, !11, i64 480, !11, i64 481, !12, i64 484, !12, i64 488, !29, i64 496, !12, i64 504, !12, i64 508, !12, i64 512, !11, i64 516, !12, i64 520, !11, i64 524, !11, i64 525, !11, i64 526, !11, i64 527, !11, i64 528, !11, i64 529, !11, i64 530, !12, i64 532, !12, i64 536, !12, i64 540, !12, i64 544, !12, i64 548, !12, i64 552, !12, i64 556, !12, i64 560, !12, i64 564, !12, i64 568, !12, i64 572, !12, i64 576, !12, i64 580, !12, i64 584, !12, i64 588, !11, i64 592, !11, i64 593, !11, i64 594, !11, i64 595, !29, i64 600, !29, i64 608, !29, i64 616, !29, i64 624, !29, i64 632, !29, i64 640, !29, i64 648, !29, i64 656, !29, i64 664, !29, i64 672, !29, i64 680, !11, i64 688, !11, i64 689, !11, i64 690, !11, i64 691, !12, i64 692, !29, i64 696, !11, i64 704, !11, i64 705, !13, i64 712, !29, i64 744, !12, i64 752, !12, i64 756, !11, i64 760, !11, i64 761, !11, i64 762, !11, i64 763, !12, i64 764, !12, i64 768, !12, i64 772, !12, i64 776, !12, i64 780, !12, i64 784, !12, i64 788, !12, i64 792, !12, i64 796, !12, i64 800, !12, i64 804, !29, i64 808, !29, i64 816, !29, i64 824, !29, i64 832, !29, i64 840, !11, i64 848, !11, i64 849, !13, i64 856, !11, i64 888, !12, i64 892, !32, i64 896}
!32 = !{!"_ZTS15HighsLogOptions", !6, i64 0, !6, i64 8, !6, i64 16, !6, i64 24, !6, i64 32, !6, i64 40, !33, i64 48, !6, i64 80, !11, i64 88}
!33 = !{!"_ZTSSt8functionIFviRKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEPK20HighsCallbackDataOutP19HighsCallbackDataInPvEE", !34, i64 0, !6, i64 24}
!34 = !{!"_ZTSSt14_Function_base", !7, i64 0, !6, i64 16}
!35 = !{i8 0, i8 2}
!36 = !{}
!37 = !{!31, !11, i64 473}
!38 = !{!28, !12, i64 168}
!39 = !{!31, !12, i64 520}
!40 = !{!28, !11, i64 228}
!41 = !{!31, !11, i64 474}
!42 = !{!28, !11, i64 229}
!43 = !{!28, !6, i64 232}
!44 = !{!31, !12, i64 548}
!45 = !{!28, !12, i64 36}
!46 = !{!29, !29, i64 0}
!47 = !{!28, !29, i64 48}
!48 = !{!31, !29, i64 296}
!49 = !{!28, !29, i64 56}
!50 = !{!31, !29, i64 680}
!51 = !{!28, !29, i64 144}
!52 = !{!31, !12, i64 352}
!53 = !{!28, !11, i64 32}
!54 = !{!31, !29, i64 136}
!55 = !{!28, !29, i64 24}
!56 = !{!31, !12, i64 476}
!57 = !{!58, !12, i64 20}
!58 = !{!"_ZTS15HighsInfoStruct", !11, i64 0, !15, i64 8, !12, i64 16, !12, i64 20, !12, i64 24, !12, i64 28, !12, i64 32, !12, i64 36, !12, i64 40, !12, i64 44, !29, i64 48, !29, i64 56, !29, i64 64, !29, i64 72, !12, i64 80, !29, i64 88, !29, i64 96, !12, i64 104, !29, i64 112, !29, i64 120, !29, i64 128, !29, i64 136, !29, i64 144}
!59 = !{!28, !12, i64 44}
!60 = !{!31, !11, i64 691}
!61 = !{!28, !12, i64 136}
!62 = !{!28, !12, i64 188}
!63 = !{!31, !12, i64 692}
!64 = !{!28, !12, i64 192}
!65 = !{!31, !29, i64 696}
!66 = !{!28, !29, i64 200}
!67 = !{!12, !12, i64 0}
!68 = !{!69, !69, i64 0}
!69 = !{!"_ZTS16HighsModelStatus", !7, i64 0}
!70 = !{!11, !11, i64 0}
!71 = !{!72, !12, i64 192}
!72 = !{!"_ZTS8ipx_info", !12, i64 0, !12, i64 4, !12, i64 8, !12, i64 12, !12, i64 16, !12, i64 20, !12, i64 24, !12, i64 28, !12, i64 32, !12, i64 36, !12, i64 40, !12, i64 44, !12, i64 48, !12, i64 52, !12, i64 56, !12, i64 60, !12, i64 64, !12, i64 68, !12, i64 72, !12, i64 76, !29, i64 80, !29, i64 88, !29, i64 96, !29, i64 104, !29, i64 112, !29, i64 120, !29, i64 128, !29, i64 136, !29, i64 144, !29, i64 152, !29, i64 160, !29, i64 168, !29, i64 176, !29, i64 184, !12, i64 192, !12, i64 196, !12, i64 200, !12, i64 204, !12, i64 208, !12, i64 212, !12, i64 216, !29, i64 224, !29, i64 232, !29, i64 240, !29, i64 248, !29, i64 256, !29, i64 264, !29, i64 272, !29, i64 280, !29, i64 288, !29, i64 296, !29, i64 304, !29, i64 312, !29, i64 320, !29, i64 328, !29, i64 336, !29, i64 344, !29, i64 352, !29, i64 360, !29, i64 368, !29, i64 376, !29, i64 384, !29, i64 392, !29, i64 400, !29, i64 408, !12, i64 416, !12, i64 420, !12, i64 424, !12, i64 428, !29, i64 432, !29, i64 440, !29, i64 448, !29, i64 456}
!73 = !{!72, !12, i64 216}
!74 = !{!58, !12, i64 24}
!75 = !{!72, !12, i64 12}
!76 = !{!77, !77, i64 0}
!77 = !{!"_ZTS11HighsStatus", !7, i64 0}
!78 = !{!72, !12, i64 4}
!79 = !{!72, !12, i64 8}
!80 = !{!81, !12, i64 0}
!81 = !{!"_ZTS11IpxSolution", !12, i64 0, !12, i64 4, !22, i64 8, !22, i64 32, !22, i64 56, !22, i64 80, !82, i64 104, !82, i64 128}
!82 = !{!"_ZTSSt6vectorIiSaIiEE", !83, i64 0}
!83 = !{!"_ZTSSt12_Vector_baseIiSaIiEE", !84, i64 0}
!84 = !{!"_ZTSNSt12_Vector_baseIiSaIiEE12_Vector_implE", !85, i64 0}
!85 = !{!"_ZTSNSt12_Vector_baseIiSaIiEE17_Vector_impl_dataE", !6, i64 0, !6, i64 8, !6, i64 16}
!86 = !{!81, !12, i64 4}
!87 = !{!58, !12, i64 44}


; 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::__cxx11::basic_string" = type { %"struct.std::__cxx11::basic_string<char>::_Alloc_hider", i64, %union.anon }
%"struct.std::__cxx11::basic_string<char>::_Alloc_hider" = type { ptr }
%union.anon = type { i64, [8 x i8] }
%"class.ipx::LpSolver" = type { %"class.ipx::Control", %"struct.ipx::Info", %"class.ipx::Model", %"class.std::unique_ptr", %"class.std::unique_ptr.52", %"class.std::valarray", %"class.std::valarray", %"class.std::valarray", %"class.std::valarray", %"class.std::vector.3", %"class.std::valarray", %"class.std::valarray", %"class.std::valarray", %"class.std::valarray", %"class.std::valarray", %"class.std::valarray" }
%"class.ipx::Control" = type { %"struct.ipx::Parameters", ptr, %"class.std::basic_ofstream", %"class.ipx::Timer", %"class.ipx::Timer", %"class.ipx::Multistream", %"class.ipx::Multistream" }
%"struct.ipx::Parameters" = type { %struct.ipx_parameters }
%struct.ipx_parameters = type { i32, ptr, double, double, i8, i32, i32, i32, double, double, double, double, double, i32, double, double, i32, i32, i32, double, i32, double, double, double, i32, i32, i32, i32, i32, i32, i32, double, double, double, i32, i8, i8, ptr }
%"class.std::basic_ofstream" = type { %"class.std::basic_ostream.base", %"class.std::basic_filebuf", %"class.std::basic_ios" }
%"class.std::basic_ostream.base" = type { ptr }
%"class.std::basic_filebuf" = type { %"class.std::basic_streambuf", %union.pthread_mutex_t, %"class.std::__basic_file", i32, %struct.__mbstate_t, %struct.__mbstate_t, %struct.__mbstate_t, ptr, i64, i8, i8, i8, i8, ptr, ptr, i8, ptr, ptr, i64, ptr, ptr }
%"class.std::basic_streambuf" = type { ptr, ptr, ptr, ptr, ptr, ptr, ptr, %"class.std::locale" }
%"class.std::locale" = type { ptr }
%union.pthread_mutex_t = type { %struct.__pthread_mutex_s }
%struct.__pthread_mutex_s = type { i32, i32, i32, i32, i32, i16, i16, %struct.__pthread_internal_list }
%struct.__pthread_internal_list = type { ptr, ptr }
%"class.std::__basic_file" = type <{ ptr, i8, [7 x i8] }>
%struct.__mbstate_t = type { i32, %union.anon.42 }
%union.anon.42 = type { i32 }
%"class.std::basic_ios" = type { %"class.std::ios_base", ptr, i8, i8, ptr, ptr, ptr, ptr }
%"class.std::ios_base" = type { ptr, i64, i64, i32, i32, i32, ptr, %"struct.std::ios_base::_Words", [8 x %"struct.std::ios_base::_Words"], i32, ptr, %"class.std::locale" }
%"struct.std::ios_base::_Words" = type { ptr, i64 }
%"class.ipx::Timer" = type { %"class.std::chrono::time_point" }
%"class.std::chrono::time_point" = type { %"class.std::chrono::duration" }
%"class.std::chrono::duration" = type { i64 }
%"class.ipx::Multistream" = type { %"class.std::basic_ostream.base", %"struct.ipx::Multistream::multibuffer", %"class.std::basic_ios" }
%"struct.ipx::Multistream::multibuffer" = type { %"class.std::basic_streambuf", %"class.std::vector.43" }
%"class.std::vector.43" = type { %"struct.std::_Vector_base.44" }
%"struct.std::_Vector_base.44" = type { %"struct.std::_Vector_base<std::basic_streambuf<char> *, std::allocator<std::basic_streambuf<char> *>>::_Vector_impl" }
%"struct.std::_Vector_base<std::basic_streambuf<char> *, std::allocator<std::basic_streambuf<char> *>>::_Vector_impl" = type { %"struct.std::_Vector_base<std::basic_streambuf<char> *, std::allocator<std::basic_streambuf<char> *>>::_Vector_impl_data" }
%"struct.std::_Vector_base<std::basic_streambuf<char> *, std::allocator<std::basic_streambuf<char> *>>::_Vector_impl_data" = type { ptr, ptr, ptr }
%"struct.ipx::Info" = type { %struct.ipx_info }
%struct.ipx_info = type { i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, double, double, double, double, double, double, double, double, double, double, double, double, double, double, i32, i32, i32, i32, i32, i32, i32, double, double, double, double, double, double, double, double, double, double, double, double, double, double, double, double, double, double, double, double, double, double, double, double, i32, i32, i32, i32, double, double, double, double }
%"class.ipx::Model" = type { i8, i32, i32, i32, i32, %"class.ipx::SparseMatrix", %"class.ipx::SparseMatrix", %"class.std::valarray", %"class.std::valarray", %"class.std::valarray", %"class.std::valarray", double, double, i32, i32, i32, i32, i32, %"class.std::vector.3", %"class.std::vector.48", double, double, double, %"class.std::valarray", %"class.std::valarray", %"class.std::valarray", %"class.std::valarray", %"class.ipx::SparseMatrix", %"class.std::vector.3", %"class.std::valarray", %"class.std::valarray" }
%"class.std::vector.48" = type { %"struct.std::_Vector_base.49" }
%"struct.std::_Vector_base.49" = type { %"struct.std::_Vector_base<char, std::allocator<char>>::_Vector_impl" }
%"struct.std::_Vector_base<char, std::allocator<char>>::_Vector_impl" = type { %"struct.std::_Vector_base<char, std::allocator<char>>::_Vector_impl_data" }
%"struct.std::_Vector_base<char, std::allocator<char>>::_Vector_impl_data" = type { ptr, ptr, ptr }
%"class.ipx::SparseMatrix" = type { i32, %"class.std::vector.3", %"class.std::vector.3", %"class.std::vector.8", %"class.std::vector.3", %"class.std::vector.8" }
%"class.std::vector.8" = type { %"struct.std::_Vector_base.9" }
%"struct.std::_Vector_base.9" = type { %"struct.std::_Vector_base<double, std::allocator<double>>::_Vector_impl" }
%"struct.std::_Vector_base<double, std::allocator<double>>::_Vector_impl" = type { %"struct.std::_Vector_base<double, std::allocator<double>>::_Vector_impl_data" }
%"struct.std::_Vector_base<double, std::allocator<double>>::_Vector_impl_data" = type { ptr, ptr, ptr }
%"class.std::unique_ptr" = type { %"struct.std::__uniq_ptr_data" }
%"struct.std::__uniq_ptr_data" = type { %"class.std::__uniq_ptr_impl" }
%"class.std::__uniq_ptr_impl" = type { %"class.std::tuple" }
%"class.std::tuple" = type { %"struct.std::_Tuple_impl" }
%"struct.std::_Tuple_impl" = type { %"struct.std::_Head_base.51" }
%"struct.std::_Head_base.51" = type { ptr }
%"class.std::unique_ptr.52" = type { %"struct.std::__uniq_ptr_data.53" }
%"struct.std::__uniq_ptr_data.53" = type { %"class.std::__uniq_ptr_impl.54" }
%"class.std::__uniq_ptr_impl.54" = type { %"class.std::tuple.55" }
%"class.std::tuple.55" = type { %"struct.std::_Tuple_impl.56" }
%"struct.std::_Tuple_impl.56" = type { %"struct.std::_Head_base.59" }
%"struct.std::_Head_base.59" = type { ptr }
%"class.std::vector.3" = type { %"struct.std::_Vector_base.4" }
%"struct.std::_Vector_base.4" = 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::valarray" = type { i64, ptr }
%"class.std::allocator" = type { i8 }
%struct.IpxSolution = type { i32, i32, %"class.std::vector.8", %"class.std::vector.8", %"class.std::vector.8", %"class.std::vector.8", %"class.std::vector.3", %"class.std::vector.3" }

@_ZL15kHighsOffStringB5cxx11 = external hidden global %"class.std::__cxx11::basic_string", align 8
@_ZL18kHighsChooseStringB5cxx11 = external hidden global %"class.std::__cxx11::basic_string", align 8
@_ZL14kHighsOnStringB5cxx11 = external hidden global %"class.std::__cxx11::basic_string", align 8
@.str.51 = external hidden unnamed_addr constant [11 x i8], align 1
@.str.52 = external hidden unnamed_addr constant [72 x i8], align 1
@__PRETTY_FUNCTION__._Z10solveLpIpxRK12HighsOptionsR10HighsTimerRK7HighsLpR10HighsBasisR13HighsSolutionR16HighsModelStatusR9HighsInfoR13HighsCallback = external hidden unnamed_addr constant [157 x i8], align 1
@.str.53 = external hidden unnamed_addr constant [44 x i8], align 1
@.str.54 = external hidden unnamed_addr constant [51 x i8], align 1
@.str.55 = external hidden unnamed_addr constant [59 x i8], align 1
@.str.56 = external hidden unnamed_addr constant [46 x i8], align 1
@.str.57 = external hidden unnamed_addr constant [48 x i8], align 1
@.str.58 = external hidden unnamed_addr constant [64 x i8], align 1
@.str.59 = external hidden unnamed_addr constant [70 x i8], align 1
@.str.60 = external hidden unnamed_addr constant [49 x i8], align 1
@.str.61 = external hidden unnamed_addr constant [62 x i8], align 1
@.str.62 = external hidden unnamed_addr constant [19 x i8], align 1
@switch.table._Z10solveLpIpxRK12HighsOptionsR10HighsTimerRK7HighsLpR10HighsBasisR13HighsSolutionR16HighsModelStatusR9HighsInfoR13HighsCallback = private unnamed_addr constant [5 x i32] [i32 0, i32 1, i32 1, i32 -1, i32 -2], align 4

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

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

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

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 void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32)) unnamed_addr #1 align 2

; Function Attrs: mustprogress uwtable
define dso_local noundef range(i32 -1, 2) i32 @_Z10solveLpIpxRK12HighsOptionsR10HighsTimerRK7HighsLpR10HighsBasisR13HighsSolutionR16HighsModelStatusR9HighsInfoR13HighsCallback(ptr noundef nonnull align 8 dereferenceable(1020) %0, ptr noundef nonnull align 8 dereferenceable(132) %1, ptr noundef nonnull align 8 dereferenceable(920) %2, ptr noundef nonnull align 8 dereferenceable(96) %3, ptr noundef nonnull align 8 dereferenceable(104) %4, ptr noundef nonnull align 4 dereferenceable(4) %5, ptr noundef nonnull align 8 dereferenceable(184) %6, ptr noundef nonnull align 8 dereferenceable(256) %7) local_unnamed_addr #2 personality ptr @__gxx_personality_v0 {
  %9 = alloca %"class.ipx::LpSolver", align 8
  %10 = alloca %"struct.ipx::Parameters", align 8
  %11 = alloca i32, align 4
  %12 = alloca i32, align 4
  %13 = alloca double, align 8
  %14 = alloca %"class.std::vector.3", align 8
  %15 = alloca %"class.std::vector.3", align 8
  %16 = alloca %"class.std::vector.8", align 8
  %17 = alloca %"class.std::vector.8", align 8
  %18 = alloca %"class.std::vector.8", align 8
  %19 = alloca %"class.std::vector.8", align 8
  %20 = alloca %"class.std::vector.8", align 8
  %21 = alloca %"class.std::vector.48", align 8
  %22 = alloca %"struct.ipx::Info", align 8
  %23 = alloca %"class.std::__cxx11::basic_string", align 8
  %24 = alloca %"class.std::allocator", align 1
  %25 = alloca %"class.std::__cxx11::basic_string", align 8
  %26 = alloca %"class.std::allocator", align 1
  %27 = alloca %"class.std::__cxx11::basic_string", align 8
  %28 = alloca %"class.std::allocator", align 1
  %29 = alloca %"class.std::__cxx11::basic_string", align 8
  %30 = alloca %"class.std::allocator", align 1
  %31 = alloca %struct.IpxSolution, align 8
  store i8 0, ptr %3, align 8, !tbaa !5
  store i8 0, ptr %4, align 8, !tbaa !19
  %32 = getelementptr inbounds i8, ptr %4, i64 1
  store i8 0, ptr %32, align 1, !tbaa !25
  tail call void @_Z28resetModelStatusAndHighsInfoR16HighsModelStatusR9HighsInfo(ptr noundef nonnull align 4 dereferenceable(4) %5, ptr noundef nonnull align 8 dereferenceable(184) %6)
  call void @llvm.lifetime.start.p0(i64 2864, ptr nonnull %9) #7
  call void @_ZN3ipx8LpSolverC2Ev(ptr noundef nonnull align 8 dereferenceable(2864) %9)
  call void @llvm.lifetime.start.p0(i64 240, ptr nonnull %10) #7
  call void @_ZN3ipx10ParametersC2Ev(ptr noundef nonnull align 8 dereferenceable(240) %10)
  %33 = getelementptr inbounds i8, ptr %0, i64 472
  %34 = load i8, ptr %33, align 8, !tbaa !26, !range !32, !noundef !33
  %35 = getelementptr inbounds i8, ptr %0, i64 473
  %36 = load i8, ptr %35, align 1, !tbaa !34, !range !32, !noundef !33
  %37 = icmp ne i8 %34, 0
  %38 = icmp ne i8 %36, 0
  %.not = and i1 %37, %38
  %spec.store.select = zext i1 %.not to i32
  store i32 %spec.store.select, ptr %10, align 8
  %39 = getelementptr inbounds i8, ptr %10, i64 168
  store i32 0, ptr %39, align 8, !tbaa !35
  %40 = getelementptr inbounds i8, ptr %0, i64 520
  %41 = load i32, ptr %40, align 8, !tbaa !37
  switch i32 %41, label %45 [
    i32 3, label %44
    i32 1, label %.sink.split
  ]

42:                                               ; preds = %114, %104, %switch.lookup
  %43 = landingpad { ptr, i32 }
          cleanup
  br label %334

44:                                               ; preds = %8
  br label %.sink.split

.sink.split:                                      ; preds = %8, %44
  %.sink = phi i32 [ 4, %44 ], [ 2, %8 ]
  store i32 %.sink, ptr %39, align 8, !tbaa !35
  br label %45

45:                                               ; preds = %.sink.split, %8
  %46 = getelementptr inbounds i8, ptr %10, i64 228
  store i8 1, ptr %46, align 4, !tbaa !38
  %47 = getelementptr inbounds i8, ptr %0, i64 474
  %48 = load i8, ptr %47, align 2, !tbaa !39, !range !32, !noundef !33
  %49 = getelementptr inbounds i8, ptr %10, i64 229
  store i8 %48, ptr %49, align 1, !tbaa !40
  %50 = getelementptr inbounds i8, ptr %0, i64 896
  %51 = getelementptr inbounds i8, ptr %10, i64 232
  store ptr %50, ptr %51, align 8, !tbaa !41
  %52 = getelementptr inbounds i8, ptr %0, i64 548
  %53 = load i32, ptr %52, align 4, !tbaa !42
  %switch.tableidx = add i32 %53, 1
  %54 = icmp ult i32 %switch.tableidx, 5
  br i1 %54, label %switch.hole_check, label %55

55:                                               ; preds = %switch.hole_check, %45
  call void @__assert_fail(ptr noundef nonnull @.str.51, ptr noundef nonnull @.str.52, i32 noundef 108, ptr noundef nonnull @__PRETTY_FUNCTION__._Z10solveLpIpxRK12HighsOptionsR10HighsTimerRK7HighsLpR10HighsBasisR13HighsSolutionR16HighsModelStatusR9HighsInfoR13HighsCallback) #8
  unreachable

switch.hole_check:                                ; preds = %45
  %switch.maskindex = trunc nuw i32 %switch.tableidx to i8
  %switch.shifted = lshr i8 29, %switch.maskindex
  %switch.lobit = trunc i8 %switch.shifted to i1
  br i1 %switch.lobit, label %switch.lookup, label %55

switch.lookup:                                    ; preds = %switch.hole_check
  %56 = zext nneg i32 %switch.tableidx to i64
  %switch.gep = getelementptr inbounds [5 x i32], ptr @switch.table._Z10solveLpIpxRK12HighsOptionsR10HighsTimerRK7HighsLpR10HighsBasisR13HighsSolutionR16HighsModelStatusR9HighsInfoR13HighsCallback, i64 0, i64 %56
  %switch.load = load i32, ptr %switch.gep, align 4
  %57 = getelementptr inbounds i8, ptr %10, i64 36
  store i32 %switch.load, ptr %57, align 4, !tbaa !43
  %58 = getelementptr inbounds i8, ptr %0, i64 280
  %59 = getelementptr inbounds i8, ptr %0, i64 288
  %60 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZSt3minIdERKT_S2_S2_(ptr noundef nonnull align 8 dereferenceable(8) %58, ptr noundef nonnull align 8 dereferenceable(8) %59)
  %61 = load double, ptr %60, align 8, !tbaa !44
  %62 = getelementptr inbounds i8, ptr %10, i64 48
  store double %61, ptr %62, align 8, !tbaa !45
  %63 = getelementptr inbounds i8, ptr %0, i64 296
  %64 = load double, ptr %63, align 8, !tbaa !46
  %65 = getelementptr inbounds i8, ptr %10, i64 56
  store double %64, ptr %65, align 8, !tbaa !47
  %66 = getelementptr inbounds i8, ptr %0, i64 680
  %67 = load double, ptr %66, align 8, !tbaa !48
  %68 = getelementptr inbounds i8, ptr %10, i64 144
  store double %67, ptr %68, align 8, !tbaa !49
  %69 = getelementptr inbounds i8, ptr %0, i64 352
  %70 = load i32, ptr %69, align 8, !tbaa !50
  %71 = getelementptr inbounds i8, ptr %10, i64 32
  %72 = trunc i32 %70 to i8
  %73 = lshr i8 %72, 4
  %74 = and i8 %73, 1
  store i8 %74, ptr %71, align 8, !tbaa !51
  %75 = getelementptr inbounds i8, ptr %0, i64 136
  %76 = load double, ptr %75, align 8, !tbaa !52
  %77 = invoke noundef double @_ZNK10HighsTimer4readEi(ptr noundef nonnull align 8 dereferenceable(132) %1, i32 noundef 0)
          to label %78 unwind label %42

78:                                               ; preds = %switch.lookup
  %79 = fsub double %76, %77
  %80 = getelementptr inbounds i8, ptr %10, i64 24
  store double %79, ptr %80, align 8, !tbaa !53
  %81 = getelementptr inbounds i8, ptr %0, i64 476
  %82 = load i32, ptr %81, align 4, !tbaa !54
  %83 = getelementptr inbounds i8, ptr %6, i64 28
  %84 = load i32, ptr %83, align 4, !tbaa !55
  %85 = sub nsw i32 %82, %84
  %86 = getelementptr inbounds i8, ptr %10, i64 44
  store i32 %85, ptr %86, align 4, !tbaa !57
  %87 = getelementptr inbounds i8, ptr %0, i64 691
  %88 = load i8, ptr %87, align 1, !tbaa !58, !range !32, !noundef !33
  %89 = trunc nuw i8 %88 to i1
  br i1 %89, label %102, label %90

90:                                               ; preds = %78
  %91 = getelementptr inbounds i8, ptr %0, i64 104
  %92 = call noundef zeroext i1 @_ZSteqIcEN9__gnu_cxx11__enable_ifIXsr9__is_charIT_EE7__valueEbE6__typeERKNSt7__cxx1112basic_stringIS2_St11char_traitsIS2_ESaIS2_EEESC_(ptr noundef nonnull align 8 dereferenceable(32) %91, ptr noundef nonnull align 8 dereferenceable(32) @_ZL14kHighsOnStringB5cxx11) #7
  br i1 %92, label %93, label %95

93:                                               ; preds = %90
  %94 = getelementptr inbounds i8, ptr %10, i64 136
  store i32 1, ptr %94, align 8, !tbaa !59
  br label %104

95:                                               ; preds = %90
  %96 = call noundef zeroext i1 @_ZSteqIcEN9__gnu_cxx11__enable_ifIXsr9__is_charIT_EE7__valueEbE6__typeERKNSt7__cxx1112basic_stringIS2_St11char_traitsIS2_ESaIS2_EEESC_(ptr noundef nonnull align 8 dereferenceable(32) %91, ptr noundef nonnull align 8 dereferenceable(32) @_ZL15kHighsOffStringB5cxx11) #7
  br i1 %96, label %102, label %97

97:                                               ; preds = %95
  %98 = call noundef zeroext i1 @_ZSteqIcEN9__gnu_cxx11__enable_ifIXsr9__is_charIT_EE7__valueEbE6__typeERKNSt7__cxx1112basic_stringIS2_St11char_traitsIS2_ESaIS2_EEESC_(ptr noundef nonnull align 8 dereferenceable(32) %91, ptr noundef nonnull align 8 dereferenceable(32) @_ZL18kHighsChooseStringB5cxx11) #7
  br i1 %98, label %100, label %99

99:                                               ; preds = %97
  call void @__assert_fail(ptr noundef nonnull @.str.53, ptr noundef nonnull @.str.52, i32 noundef 133, ptr noundef nonnull @__PRETTY_FUNCTION__._Z10solveLpIpxRK12HighsOptionsR10HighsTimerRK7HighsLpR10HighsBasisR13HighsSolutionR16HighsModelStatusR9HighsInfoR13HighsCallback) #8
  unreachable

100:                                              ; preds = %97
  %101 = getelementptr inbounds i8, ptr %10, i64 136
  store i32 -1, ptr %101, align 8, !tbaa !59
  br label %104

102:                                              ; preds = %95, %78
  %103 = getelementptr inbounds i8, ptr %10, i64 136
  store i32 0, ptr %103, align 8, !tbaa !59
  store double -1.000000e+00, ptr %68, align 8, !tbaa !49
  br label %104

104:                                              ; preds = %100, %93, %102
  %105 = load i8, ptr %87, align 1, !tbaa !58, !range !32, !noundef !33
  %106 = zext nneg i8 %105 to i32
  %107 = getelementptr inbounds i8, ptr %10, i64 188
  store i32 %106, ptr %107, align 4, !tbaa !60
  %108 = getelementptr inbounds i8, ptr %0, i64 692
  %109 = load i32, ptr %108, align 4, !tbaa !61
  %110 = getelementptr inbounds i8, ptr %10, i64 192
  store i32 %109, ptr %110, align 8, !tbaa !62
  %111 = getelementptr inbounds i8, ptr %0, i64 696
  %112 = load double, ptr %111, align 8, !tbaa !63
  %113 = getelementptr inbounds i8, ptr %10, i64 200
  store double %112, ptr %113, align 8, !tbaa !64
  invoke void @_ZN3ipx8LpSolver13SetParametersENS_10ParametersE(ptr noundef nonnull align 8 dereferenceable(2864) %9, ptr noundef nonnull byval(%"struct.ipx::Parameters") align 8 %10)
          to label %114 unwind label %42

114:                                              ; preds = %104
  invoke void @_ZN3ipx8LpSolver11SetCallbackEP13HighsCallback(ptr noundef nonnull align 8 dereferenceable(2864) %9, ptr noundef nonnull %7)
          to label %115 unwind label %42

115:                                              ; preds = %114
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %11) #7
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %12) #7
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %13) #7
  call void @llvm.lifetime.start.p0(i64 24, ptr nonnull %14) #7
  call void @_ZNSt6vectorIiSaIiEEC2Ev(ptr noundef nonnull align 8 dereferenceable(24) %14) #7
  call void @llvm.lifetime.start.p0(i64 24, ptr nonnull %15) #7
  call void @_ZNSt6vectorIiSaIiEEC2Ev(ptr noundef nonnull align 8 dereferenceable(24) %15) #7
  call void @llvm.lifetime.start.p0(i64 24, ptr nonnull %16) #7
  call void @_ZNSt6vectorIdSaIdEEC2Ev(ptr noundef nonnull align 8 dereferenceable(24) %16) #7
  call void @llvm.lifetime.start.p0(i64 24, ptr nonnull %17) #7
  call void @_ZNSt6vectorIdSaIdEEC2Ev(ptr noundef nonnull align 8 dereferenceable(24) %17) #7
  call void @llvm.lifetime.start.p0(i64 24, ptr nonnull %18) #7
  call void @_ZNSt6vectorIdSaIdEEC2Ev(ptr noundef nonnull align 8 dereferenceable(24) %18) #7
  call void @llvm.lifetime.start.p0(i64 24, ptr nonnull %19) #7
  call void @_ZNSt6vectorIdSaIdEEC2Ev(ptr noundef nonnull align 8 dereferenceable(24) %19) #7
  call void @llvm.lifetime.start.p0(i64 24, ptr nonnull %20) #7
  call void @_ZNSt6vectorIdSaIdEEC2Ev(ptr noundef nonnull align 8 dereferenceable(24) %20) #7
  call void @llvm.lifetime.start.p0(i64 24, ptr nonnull %21) #7
  call void @_ZNSt6vectorIcSaIcEEC2Ev(ptr noundef nonnull align 8 dereferenceable(24) %21) #7
  invoke void @_Z13fillInIpxDataRK7HighsLpRiS2_RdRSt6vectorIdSaIdEES7_S7_RS4_IiSaIiEESA_S7_S7_RS4_IcSaIcEE(ptr noundef nonnull align 8 dereferenceable(920) %2, ptr noundef nonnull align 4 dereferenceable(4) %11, ptr noundef nonnull align 4 dereferenceable(4) %12, ptr noundef nonnull align 8 dereferenceable(8) %13, ptr noundef nonnull align 8 dereferenceable(24) %16, ptr noundef nonnull align 8 dereferenceable(24) %17, ptr noundef nonnull align 8 dereferenceable(24) %18, ptr noundef nonnull align 8 dereferenceable(24) %14, ptr noundef nonnull align 8 dereferenceable(24) %15, ptr noundef nonnull align 8 dereferenceable(24) %19, ptr noundef nonnull align 8 dereferenceable(24) %20, ptr noundef nonnull align 8 dereferenceable(24) %21)
          to label %116 unwind label %137

116:                                              ; preds = %115
  %117 = load i32, ptr %12, align 4, !tbaa !65
  %118 = load i32, ptr %11, align 4, !tbaa !65
  %119 = sext i32 %118 to i64
  %120 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNSt6vectorIiSaIiEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %14, i64 noundef %119) #7
  %121 = load i32, ptr %120, align 4, !tbaa !65
  invoke void (ptr, i32, ptr, ...) @_Z12highsLogUserRK15HighsLogOptions12HighsLogTypePKcz(ptr noundef nonnull align 8 dereferenceable(89) %50, i32 noundef 1, ptr noundef nonnull @.str.54, i32 noundef %117, i32 noundef %118, i32 noundef %121)
          to label %122 unwind label %137

122:                                              ; preds = %116
  %123 = load i32, ptr %11, align 4, !tbaa !65
  %124 = load double, ptr %13, align 8, !tbaa !44
  %125 = call noundef ptr @_ZNSt6vectorIdSaIdEE4dataEv(ptr noundef nonnull align 8 dereferenceable(24) %16) #7
  %126 = call noundef ptr @_ZNSt6vectorIdSaIdEE4dataEv(ptr noundef nonnull align 8 dereferenceable(24) %17) #7
  %127 = call noundef ptr @_ZNSt6vectorIdSaIdEE4dataEv(ptr noundef nonnull align 8 dereferenceable(24) %18) #7
  %128 = load i32, ptr %12, align 4, !tbaa !65
  %129 = call noundef ptr @_ZNSt6vectorIiSaIiEE4dataEv(ptr noundef nonnull align 8 dereferenceable(24) %14) #7
  %130 = call noundef ptr @_ZNSt6vectorIiSaIiEE4dataEv(ptr noundef nonnull align 8 dereferenceable(24) %15) #7
  %131 = call noundef ptr @_ZNSt6vectorIdSaIdEE4dataEv(ptr noundef nonnull align 8 dereferenceable(24) %19) #7
  %132 = call noundef ptr @_ZNSt6vectorIdSaIdEE4dataEv(ptr noundef nonnull align 8 dereferenceable(24) %20) #7
  %133 = call noundef ptr @_ZNSt6vectorIcSaIcEE4dataEv(ptr noundef nonnull align 8 dereferenceable(24) %21) #7
  %134 = invoke noundef i32 @_ZN3ipx8LpSolver9LoadModelEidPKdS2_S2_iPKiS4_S2_S2_PKc(ptr noundef nonnull align 8 dereferenceable(2864) %9, i32 noundef %123, double noundef %124, ptr noundef %125, ptr noundef %126, ptr noundef %127, i32 noundef %128, ptr noundef %129, ptr noundef %130, ptr noundef %131, ptr noundef %132, ptr noundef %133)
          to label %135 unwind label %139

135:                                              ; preds = %122
  %.not151 = icmp eq i32 %134, 0
  br i1 %.not151, label %141, label %136

136:                                              ; preds = %135
  store i32 4, ptr %5, align 4, !tbaa !66
  br label %332

137:                                              ; preds = %116, %115
  %138 = landingpad { ptr, i32 }
          cleanup
  br label %333

139:                                              ; preds = %122
  %140 = landingpad { ptr, i32 }
          cleanup
  br label %333

141:                                              ; preds = %135
  %142 = invoke noundef i32 @_ZN3ipx8LpSolver5SolveEv(ptr noundef nonnull align 8 dereferenceable(2864) %9)
          to label %143 unwind label %148

143:                                              ; preds = %141
  %144 = load i32, ptr %69, align 8, !tbaa !50
  call void @llvm.lifetime.start.p0(i64 464, ptr nonnull %22) #7
  invoke void @_ZNK3ipx8LpSolver7GetInfoEv(ptr dead_on_unwind nonnull writable sret(%"struct.ipx::Info") align 8 %22, ptr noundef nonnull align 8 dereferenceable(2864) %9)
          to label %145 unwind label %150

145:                                              ; preds = %143
  %146 = and i32 %144, 2
  %.not152 = icmp eq i32 %146, 0
  br i1 %.not152, label %152, label %147

147:                                              ; preds = %145
  invoke void @_Z15reportSolveDataRK15HighsLogOptionsRKN3ipx4InfoE(ptr noundef nonnull align 8 dereferenceable(89) %50, ptr noundef nonnull align 8 dereferenceable(464) %22)
          to label %152 unwind label %150

148:                                              ; preds = %141
  %149 = landingpad { ptr, i32 }
          cleanup
  br label %333

150:                                              ; preds = %147, %143
  %151 = landingpad { ptr, i32 }
          cleanup
  br label %331

152:                                              ; preds = %147, %145
  %153 = getelementptr inbounds i8, ptr %22, i64 192
  %154 = load i32, ptr %153, align 8, !tbaa !68
  %155 = load i32, ptr %83, align 4, !tbaa !55
  %156 = add nsw i32 %155, %154
  store i32 %156, ptr %83, align 4, !tbaa !55
  %157 = getelementptr inbounds i8, ptr %22, i64 216
  %158 = load i32, ptr %157, align 8, !tbaa !70
  %159 = getelementptr inbounds i8, ptr %6, i64 32
  %160 = load i32, ptr %159, align 8, !tbaa !71
  %161 = add nsw i32 %160, %158
  store i32 %161, ptr %159, align 8, !tbaa !71
  %162 = icmp ne i32 %142, 1000
  br i1 %162, label %163, label %.critedge

163:                                              ; preds = %152
  %164 = getelementptr inbounds i8, ptr %22, i64 12
  %165 = load i32, ptr %164, align 4, !tbaa !72
  %166 = invoke noundef i32 @_Z20reportIpxSolveStatusRK12HighsOptionsii(ptr noundef nonnull align 8 dereferenceable(1020) %0, i32 noundef %142, i32 noundef %165)
          to label %167 unwind label %169

167:                                              ; preds = %163
  %.not153 = icmp eq i32 %166, -1
  br i1 %.not153, label %168, label %.critedge

168:                                              ; preds = %167
  store i32 4, ptr %5, align 4, !tbaa !66
  br label %330

169:                                              ; preds = %163
  %170 = landingpad { ptr, i32 }
          cleanup
  br label %331

.critedge:                                        ; preds = %167, %152
  %171 = getelementptr inbounds i8, ptr %22, i64 4
  %172 = load i32, ptr %171, align 4, !tbaa !73
  %173 = invoke noundef i32 @_Z27reportIpxIpmCrossoverStatusRK12HighsOptionsib(ptr noundef nonnull align 8 dereferenceable(1020) %0, i32 noundef %172, i1 noundef zeroext true)
          to label %174 unwind label %182

174:                                              ; preds = %.critedge
  %175 = getelementptr inbounds i8, ptr %22, i64 8
  %176 = load i32, ptr %175, align 8, !tbaa !74
  %177 = invoke noundef i32 @_Z27reportIpxIpmCrossoverStatusRK12HighsOptionsib(ptr noundef nonnull align 8 dereferenceable(1020) %0, i32 noundef %176, i1 noundef zeroext false)
          to label %178 unwind label %184

178:                                              ; preds = %174
  %179 = icmp eq i32 %173, -1
  %180 = icmp eq i32 %177, -1
  %or.cond = or i1 %179, %180
  br i1 %or.cond, label %181, label %186

181:                                              ; preds = %178
  store i32 4, ptr %5, align 4, !tbaa !66
  br label %330

182:                                              ; preds = %.critedge
  %183 = landingpad { ptr, i32 }
          cleanup
  br label %331

184:                                              ; preds = %237, %231, %174
  %185 = landingpad { ptr, i32 }
          cleanup
  br label %331

186:                                              ; preds = %178
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %24) #7
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %24) #7
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %23, ptr noundef nonnull @.str.55, ptr noundef nonnull align 1 dereferenceable(1) %24)
          to label %187 unwind label %192

187:                                              ; preds = %186
  %188 = icmp ne i32 %142, 1005
  %189 = and i1 %162, %188
  %190 = invoke noundef zeroext i1 @_Z14ipxStatusErrorbRK12HighsOptionsNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEi(i1 noundef zeroext %189, ptr noundef nonnull align 8 dereferenceable(1020) %0, ptr noundef nonnull %23, i32 noundef %142)
          to label %191 unwind label %194

191:                                              ; preds = %187
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %23) #7
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %24) #7
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %24) #7
  br i1 %190, label %330, label %197

192:                                              ; preds = %186
  %193 = landingpad { ptr, i32 }
          cleanup
  br label %196

194:                                              ; preds = %187
  %195 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %23) #7
  br label %196

196:                                              ; preds = %194, %192
  %.pn = phi { ptr, i32 } [ %195, %194 ], [ %193, %192 ]
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %24) #7
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %24) #7
  br label %331

197:                                              ; preds = %191
  %198 = icmp eq i32 %142, 1005
  br i1 %198, label %199, label %222

199:                                              ; preds = %197
  %200 = load i32, ptr %11, align 4, !tbaa !65
  %201 = load i32, ptr %12, align 4, !tbaa !65
  invoke void @_Z25getHighsNonVertexSolutionRK12HighsOptionsRK7HighsLpiiRKSt6vectorIdSaIdEERKS5_IcSaIcEERKN3ipx8LpSolverE16HighsModelStatusR13HighsSolution(ptr noundef nonnull align 8 dereferenceable(1020) %0, ptr noundef nonnull align 8 dereferenceable(920) %2, i32 noundef %200, i32 noundef %201, ptr noundef nonnull align 8 dereferenceable(24) %20, ptr noundef nonnull align 8 dereferenceable(24) %21, ptr noundef nonnull align 8 dereferenceable(2864) %9, i32 noundef 15, ptr noundef nonnull align 8 dereferenceable(104) %4)
          to label %202 unwind label %205

202:                                              ; preds = %199
  %203 = invoke noundef zeroext i1 @_Z32illegalIpxStoppedCrossoverStatusRKN3ipx4InfoERK12HighsOptions(ptr noundef nonnull align 8 dereferenceable(464) %22, ptr noundef nonnull align 8 dereferenceable(1020) %0)
          to label %204 unwind label %205

204:                                              ; preds = %202
  br i1 %203, label %330, label %207

205:                                              ; preds = %220, %211, %202, %199
  %206 = landingpad { ptr, i32 }
          cleanup
  br label %331

207:                                              ; preds = %204
  %208 = load i32, ptr %175, align 8, !tbaa !74
  %209 = icmp eq i32 %208, 6
  br i1 %209, label %210, label %211

210:                                              ; preds = %207
  store i32 13, ptr %5, align 4, !tbaa !66
  br label %330

211:                                              ; preds = %207
  %212 = invoke noundef zeroext i1 @_Z26illegalIpxStoppedIpmStatusRKN3ipx4InfoERK12HighsOptions(ptr noundef nonnull align 8 dereferenceable(464) %22, ptr noundef nonnull align 8 dereferenceable(1020) %0)
          to label %213 unwind label %205

213:                                              ; preds = %211
  br i1 %212, label %330, label %214

214:                                              ; preds = %213
  %215 = load i32, ptr %171, align 4, !tbaa !73
  switch i32 %215, label %219 [
    i32 5, label %216
    i32 6, label %217
    i32 7, label %218
    i32 8, label %220
  ]

216:                                              ; preds = %214
  store i32 17, ptr %5, align 4, !tbaa !66
  br label %330

217:                                              ; preds = %214
  store i32 13, ptr %5, align 4, !tbaa !66
  br label %330

218:                                              ; preds = %214
  store i32 14, ptr %5, align 4, !tbaa !66
  br label %330

219:                                              ; preds = %214
  call void @__assert_fail(ptr noundef nonnull @.str.56, ptr noundef nonnull @.str.52, i32 noundef 267, ptr noundef nonnull @__PRETTY_FUNCTION__._Z10solveLpIpxRK12HighsOptionsR10HighsTimerRK7HighsLpR10HighsBasisR13HighsSolutionR16HighsModelStatusR9HighsInfoR13HighsCallback) #8
  unreachable

220:                                              ; preds = %214
  invoke void @_Z19reportIpmNoProgressRK12HighsOptionsRKN3ipx4InfoE(ptr noundef nonnull align 8 dereferenceable(1020) %0, ptr noundef nonnull align 8 dereferenceable(464) %22)
          to label %221 unwind label %205

221:                                              ; preds = %220
  store i32 15, ptr %5, align 4, !tbaa !66
  br label %330

222:                                              ; preds = %197
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %26) #7
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %26) #7
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %25, ptr noundef nonnull @.str.57, ptr noundef nonnull align 1 dereferenceable(1) %26)
          to label %223 unwind label %226

223:                                              ; preds = %222
  %224 = invoke noundef zeroext i1 @_Z14ipxStatusErrorbRK12HighsOptionsNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEi(i1 noundef zeroext %162, ptr noundef nonnull align 8 dereferenceable(1020) %0, ptr noundef nonnull %25, i32 noundef %142)
          to label %225 unwind label %228

225:                                              ; preds = %223
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %25) #7
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %26) #7
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %26) #7
  br i1 %224, label %330, label %231

226:                                              ; preds = %222
  %227 = landingpad { ptr, i32 }
          cleanup
  br label %230

228:                                              ; preds = %223
  %229 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %25) #7
  br label %230

230:                                              ; preds = %228, %226
  %.pn155 = phi { ptr, i32 } [ %229, %228 ], [ %227, %226 ]
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %26) #7
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %26) #7
  br label %331

231:                                              ; preds = %225
  %232 = invoke noundef zeroext i1 @_Z22illegalIpxSolvedStatusRKN3ipx4InfoERK12HighsOptions(ptr noundef nonnull align 8 dereferenceable(464) %22, ptr noundef nonnull align 8 dereferenceable(1020) %0)
          to label %233 unwind label %184

233:                                              ; preds = %231
  br i1 %232, label %330, label %234

234:                                              ; preds = %233
  %235 = load i32, ptr %171, align 4
  %236 = add i32 %235, -3
  %or.cond5 = icmp ult i32 %236, 2
  br i1 %or.cond5, label %237, label %240

237:                                              ; preds = %234
  %switch = icmp eq i32 %235, 3
  %.181 = select i1 %switch, i32 8, i32 9
  store i32 %.181, ptr %5, align 4, !tbaa !66
  %238 = load i32, ptr %11, align 4, !tbaa !65
  %239 = load i32, ptr %12, align 4, !tbaa !65
  invoke void @_Z25getHighsNonVertexSolutionRK12HighsOptionsRK7HighsLpiiRKSt6vectorIdSaIdEERKS5_IcSaIcEERKN3ipx8LpSolverE16HighsModelStatusR13HighsSolution(ptr noundef nonnull align 8 dereferenceable(1020) %0, ptr noundef nonnull align 8 dereferenceable(920) %2, i32 noundef %238, i32 noundef %239, ptr noundef nonnull align 8 dereferenceable(24) %20, ptr noundef nonnull align 8 dereferenceable(24) %21, ptr noundef nonnull align 8 dereferenceable(2864) %9, i32 noundef %.181, ptr noundef nonnull align 8 dereferenceable(104) %4)
          to label %330 unwind label %184

240:                                              ; preds = %234
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %28) #7
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %28) #7
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %27, ptr noundef nonnull @.str.58, ptr noundef nonnull align 1 dereferenceable(1) %28)
          to label %241 unwind label %246

241:                                              ; preds = %240
  %242 = icmp ult i32 %236, -2
  %243 = load i32, ptr %171, align 4, !tbaa !73
  %244 = invoke noundef zeroext i1 @_Z14ipxStatusErrorbRK12HighsOptionsNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEi(i1 noundef zeroext %242, ptr noundef nonnull align 8 dereferenceable(1020) %0, ptr noundef nonnull %27, i32 noundef %243)
          to label %245 unwind label %248

245:                                              ; preds = %241
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %27) #7
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %28) #7
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %28) #7
  br i1 %244, label %330, label %251

246:                                              ; preds = %240
  %247 = landingpad { ptr, i32 }
          cleanup
  br label %250

248:                                              ; preds = %241
  %249 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %27) #7
  br label %250

250:                                              ; preds = %248, %246
  %.pn157 = phi { ptr, i32 } [ %249, %248 ], [ %247, %246 ]
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %28) #7
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %28) #7
  br label %331

251:                                              ; preds = %245
  %252 = load i32, ptr %175, align 8
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %30) #7
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %30) #7
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %29, ptr noundef nonnull @.str.59, ptr noundef nonnull align 1 dereferenceable(1) %30)
          to label %253 unwind label %257

253:                                              ; preds = %251
  %spec.select = icmp ugt i32 %252, 2
  %254 = load i32, ptr %175, align 8, !tbaa !74
  %255 = invoke noundef zeroext i1 @_Z14ipxStatusErrorbRK12HighsOptionsNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEi(i1 noundef zeroext %spec.select, ptr noundef nonnull align 8 dereferenceable(1020) %0, ptr noundef nonnull %29, i32 noundef %254)
          to label %256 unwind label %259

256:                                              ; preds = %253
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %29) #7
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %30) #7
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %30) #7
  br i1 %255, label %330, label %262

257:                                              ; preds = %251
  %258 = landingpad { ptr, i32 }
          cleanup
  br label %261

259:                                              ; preds = %253
  %260 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %29) #7
  br label %261

261:                                              ; preds = %259, %257
  %.pn159 = phi { ptr, i32 } [ %260, %259 ], [ %258, %257 ]
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %30) #7
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %30) #7
  br label %331

262:                                              ; preds = %256
  %263 = load i32, ptr %175, align 8, !tbaa !74
  %.not161 = icmp eq i32 %263, 0
  %264 = icmp eq i32 %263, 2
  %265 = load i32, ptr %171, align 4
  %266 = icmp eq i32 %265, 2
  %267 = select i1 %264, i1 true, i1 %266
  br i1 %.not161, label %316, label %268

268:                                              ; preds = %262
  call void @llvm.lifetime.start.p0(i64 152, ptr nonnull %31) #7
  call void @_ZN11IpxSolutionC2Ev(ptr noundef nonnull align 8 dereferenceable(152) %31) #7
  %269 = load i32, ptr %11, align 4, !tbaa !65
  store i32 %269, ptr %31, align 8, !tbaa !75
  %270 = load i32, ptr %12, align 4, !tbaa !65
  %271 = getelementptr inbounds i8, ptr %31, i64 4
  store i32 %270, ptr %271, align 4, !tbaa !81
  %272 = getelementptr inbounds i8, ptr %31, i64 8
  %273 = sext i32 %269 to i64
  invoke void @_ZNSt6vectorIdSaIdEE6resizeEm(ptr noundef nonnull align 8 dereferenceable(24) %272, i64 noundef %273)
          to label %274 unwind label %304

274:                                              ; preds = %268
  %275 = getelementptr inbounds i8, ptr %31, i64 32
  %276 = load i32, ptr %12, align 4, !tbaa !65
  %277 = sext i32 %276 to i64
  invoke void @_ZNSt6vectorIdSaIdEE6resizeEm(ptr noundef nonnull align 8 dereferenceable(24) %275, i64 noundef %277)
          to label %278 unwind label %304

278:                                              ; preds = %274
  %279 = getelementptr inbounds i8, ptr %31, i64 56
  %280 = load i32, ptr %11, align 4, !tbaa !65
  %281 = sext i32 %280 to i64
  invoke void @_ZNSt6vectorIdSaIdEE6resizeEm(ptr noundef nonnull align 8 dereferenceable(24) %279, i64 noundef %281)
          to label %282 unwind label %304

282:                                              ; preds = %278
  %283 = getelementptr inbounds i8, ptr %31, i64 80
  %284 = load i32, ptr %12, align 4, !tbaa !65
  %285 = sext i32 %284 to i64
  invoke void @_ZNSt6vectorIdSaIdEE6resizeEm(ptr noundef nonnull align 8 dereferenceable(24) %283, i64 noundef %285)
          to label %286 unwind label %304

286:                                              ; preds = %282
  %287 = getelementptr inbounds i8, ptr %31, i64 128
  %288 = load i32, ptr %12, align 4, !tbaa !65
  %289 = sext i32 %288 to i64
  invoke void @_ZNSt6vectorIiSaIiEE6resizeEm(ptr noundef nonnull align 8 dereferenceable(24) %287, i64 noundef %289)
          to label %290 unwind label %304

290:                                              ; preds = %286
  %291 = getelementptr inbounds i8, ptr %31, i64 104
  %292 = load i32, ptr %11, align 4, !tbaa !65
  %293 = sext i32 %292 to i64
  invoke void @_ZNSt6vectorIiSaIiEE6resizeEm(ptr noundef nonnull align 8 dereferenceable(24) %291, i64 noundef %293)
          to label %294 unwind label %304

294:                                              ; preds = %290
  %295 = call noundef ptr @_ZNSt6vectorIdSaIdEE4dataEv(ptr noundef nonnull align 8 dereferenceable(24) %272) #7
  %296 = call noundef ptr @_ZNSt6vectorIdSaIdEE4dataEv(ptr noundef nonnull align 8 dereferenceable(24) %275) #7
  %297 = call noundef ptr @_ZNSt6vectorIdSaIdEE4dataEv(ptr noundef nonnull align 8 dereferenceable(24) %283) #7
  %298 = call noundef ptr @_ZNSt6vectorIdSaIdEE4dataEv(ptr noundef nonnull align 8 dereferenceable(24) %279) #7
  %299 = call noundef ptr @_ZNSt6vectorIiSaIiEE4dataEv(ptr noundef nonnull align 8 dereferenceable(24) %287) #7
  %300 = call noundef ptr @_ZNSt6vectorIiSaIiEE4dataEv(ptr noundef nonnull align 8 dereferenceable(24) %291) #7
  %301 = invoke noundef i32 @_ZNK3ipx8LpSolver16GetBasicSolutionEPdS1_S1_S1_PiS2_(ptr noundef nonnull align 8 dereferenceable(2864) %9, ptr noundef %295, ptr noundef %296, ptr noundef %297, ptr noundef %298, ptr noundef %299, ptr noundef %300)
          to label %302 unwind label %306

302:                                              ; preds = %294
  %.not162 = icmp eq i32 %301, 0
  br i1 %.not162, label %308, label %303

303:                                              ; preds = %302
  invoke void (ptr, i32, ptr, ...) @_Z12highsLogUserRK15HighsLogOptions12HighsLogTypePKcz(ptr noundef nonnull align 8 dereferenceable(89) %50, i32 noundef 5, ptr noundef nonnull @.str.60, i32 noundef %301)
          to label %.critedge177 unwind label %306

304:                                              ; preds = %290, %286, %282, %278, %274, %268
  %305 = landingpad { ptr, i32 }
          cleanup
  br label %315

306:                                              ; preds = %303, %294
  %307 = landingpad { ptr, i32 }
          cleanup
  br label %315

308:                                              ; preds = %302
  %309 = invoke noundef i32 @_Z36ipxBasicSolutionToHighsBasicSolutionRK15HighsLogOptionsRK7HighsLpRKSt6vectorIdSaIdEERKS5_IcSaIcEERK11IpxSolutionR10HighsBasisR13HighsSolution(ptr noundef nonnull align 8 dereferenceable(89) %50, ptr noundef nonnull align 8 dereferenceable(920) %2, ptr noundef nonnull align 8 dereferenceable(24) %20, ptr noundef nonnull align 8 dereferenceable(24) %21, ptr noundef nonnull align 8 dereferenceable(152) %31, ptr noundef nonnull align 8 dereferenceable(96) %3, ptr noundef nonnull align 8 dereferenceable(104) %4)
          to label %310 unwind label %312

310:                                              ; preds = %308
  %.not163 = icmp eq i32 %309, 0
  br i1 %.not163, label %.critedge179, label %311

311:                                              ; preds = %310
  invoke void (ptr, i32, ptr, ...) @_Z12highsLogUserRK15HighsLogOptions12HighsLogTypePKcz(ptr noundef nonnull align 8 dereferenceable(89) %50, i32 noundef 5, ptr noundef nonnull @.str.61)
          to label %314 unwind label %312

312:                                              ; preds = %311, %308
  %313 = landingpad { ptr, i32 }
          cleanup
  br label %315

314:                                              ; preds = %311
  call void @_ZN11IpxSolutionD2Ev(ptr noundef nonnull align 8 dereferenceable(152) %31) #7
  call void @llvm.lifetime.end.p0(i64 152, ptr nonnull %31) #7
  br label %330

315:                                              ; preds = %306, %312, %304
  %.pn164.pn = phi { ptr, i32 } [ %305, %304 ], [ %307, %306 ], [ %313, %312 ]
  call void @_ZN11IpxSolutionD2Ev(ptr noundef nonnull align 8 dereferenceable(152) %31) #7
  call void @llvm.lifetime.end.p0(i64 152, ptr nonnull %31) #7
  br label %331

316:                                              ; preds = %262
  %317 = select i1 %266, i32 15, i32 7
  %318 = load i32, ptr %11, align 4, !tbaa !65
  %319 = load i32, ptr %12, align 4, !tbaa !65
  invoke void @_Z25getHighsNonVertexSolutionRK12HighsOptionsRK7HighsLpiiRKSt6vectorIdSaIdEERKS5_IcSaIcEERKN3ipx8LpSolverE16HighsModelStatusR13HighsSolution(ptr noundef nonnull align 8 dereferenceable(1020) %0, ptr noundef nonnull align 8 dereferenceable(920) %2, i32 noundef %318, i32 noundef %319, ptr noundef nonnull align 8 dereferenceable(24) %20, ptr noundef nonnull align 8 dereferenceable(24) %21, ptr noundef nonnull align 8 dereferenceable(2864) %9, i32 noundef %317, ptr noundef nonnull align 8 dereferenceable(104) %4)
          to label %320 unwind label %324

320:                                              ; preds = %316
  %321 = load i8, ptr %3, align 8, !tbaa !5, !range !32, !noundef !33
  %322 = trunc nuw i8 %321 to i1
  br i1 %322, label %323, label %326

323:                                              ; preds = %320
  call void @__assert_fail(ptr noundef nonnull @.str.62, ptr noundef nonnull @.str.52, i32 noundef 376, ptr noundef nonnull @__PRETTY_FUNCTION__._Z10solveLpIpxRK12HighsOptionsR10HighsTimerRK7HighsLpR10HighsBasisR13HighsSolutionR16HighsModelStatusR9HighsInfoR13HighsCallback) #8
  unreachable

324:                                              ; preds = %316
  %325 = landingpad { ptr, i32 }
          cleanup
  br label %331

.critedge179:                                     ; preds = %310
  call void @_ZN11IpxSolutionD2Ev(ptr noundef nonnull align 8 dereferenceable(152) %31) #7
  call void @llvm.lifetime.end.p0(i64 152, ptr nonnull %31) #7
  %.pre = load i8, ptr %3, align 8, !tbaa !5, !range !32
  br label %326

326:                                              ; preds = %320, %.critedge179
  %327 = phi i8 [ %321, %320 ], [ %.pre, %.critedge179 ]
  %328 = zext nneg i8 %327 to i32
  %329 = getelementptr inbounds i8, ptr %6, i64 52
  store i32 %328, ptr %329, align 4, !tbaa !82
  %. = select i1 %267, i32 15, i32 7
  %.180 = zext i1 %267 to i32
  store i32 %., ptr %5, align 4, !tbaa !66
  br label %330

.critedge177:                                     ; preds = %303
  call void @_ZN11IpxSolutionD2Ev(ptr noundef nonnull align 8 dereferenceable(152) %31) #7
  call void @llvm.lifetime.end.p0(i64 152, ptr nonnull %31) #7
  br label %330

330:                                              ; preds = %314, %168, %181, %191, %213, %204, %221, %218, %217, %216, %210, %225, %233, %237, %245, %256, %.critedge177, %326
  %.7 = phi i32 [ -1, %168 ], [ -1, %181 ], [ -1, %191 ], [ 1, %210 ], [ 1, %216 ], [ 1, %217 ], [ 1, %218 ], [ 1, %221 ], [ -1, %204 ], [ -1, %213 ], [ -1, %225 ], [ -1, %233 ], [ 0, %237 ], [ -1, %245 ], [ -1, %256 ], [ %.180, %326 ], [ -1, %314 ], [ -1, %.critedge177 ]
  call void @llvm.lifetime.end.p0(i64 464, ptr nonnull %22) #7
  br label %332

331:                                              ; preds = %182, %315, %324, %261, %250, %230, %205, %196, %184, %169, %150
  %.pn168.pn.pn = phi { ptr, i32 } [ %170, %169 ], [ %151, %150 ], [ %183, %182 ], [ %206, %205 ], [ %185, %184 ], [ %.pn159, %261 ], [ %.pn157, %250 ], [ %.pn155, %230 ], [ %.pn, %196 ], [ %.pn164.pn, %315 ], [ %325, %324 ]
  call void @llvm.lifetime.end.p0(i64 464, ptr nonnull %22) #7
  br label %333

332:                                              ; preds = %330, %136
  %.8 = phi i32 [ -1, %136 ], [ %.7, %330 ]
  call void @_ZNSt6vectorIcSaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %21) #7
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %21) #7
  call void @_ZNSt6vectorIdSaIdEED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %20) #7
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %20) #7
  call void @_ZNSt6vectorIdSaIdEED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %19) #7
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %19) #7
  call void @_ZNSt6vectorIdSaIdEED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %18) #7
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %18) #7
  call void @_ZNSt6vectorIdSaIdEED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %17) #7
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %17) #7
  call void @_ZNSt6vectorIdSaIdEED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %16) #7
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %16) #7
  call void @_ZNSt6vectorIiSaIiEED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %15) #7
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %15) #7
  call void @_ZNSt6vectorIiSaIiEED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %14) #7
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %14) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %13) #7
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %12) #7
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %11) #7
  call void @llvm.lifetime.end.p0(i64 240, ptr nonnull %10) #7
  call void @_ZN3ipx8LpSolverD2Ev(ptr noundef nonnull align 8 dereferenceable(2864) %9) #7
  call void @llvm.lifetime.end.p0(i64 2864, ptr nonnull %9) #7
  ret i32 %.8

333:                                              ; preds = %139, %331, %148, %137
  %.pn168.pn.pn.pn.pn.pn = phi { ptr, i32 } [ %138, %137 ], [ %140, %139 ], [ %.pn168.pn.pn, %331 ], [ %149, %148 ]
  call void @_ZNSt6vectorIcSaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %21) #7
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %21) #7
  call void @_ZNSt6vectorIdSaIdEED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %20) #7
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %20) #7
  call void @_ZNSt6vectorIdSaIdEED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %19) #7
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %19) #7
  call void @_ZNSt6vectorIdSaIdEED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %18) #7
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %18) #7
  call void @_ZNSt6vectorIdSaIdEED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %17) #7
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %17) #7
  call void @_ZNSt6vectorIdSaIdEED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %16) #7
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %16) #7
  call void @_ZNSt6vectorIiSaIiEED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %15) #7
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %15) #7
  call void @_ZNSt6vectorIiSaIiEED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %14) #7
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %14) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %13) #7
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %12) #7
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %11) #7
  br label %334

334:                                              ; preds = %333, %42
  %.pn168.pn.pn.pn.pn.pn.pn = phi { ptr, i32 } [ %.pn168.pn.pn.pn.pn.pn, %333 ], [ %43, %42 ]
  call void @llvm.lifetime.end.p0(i64 240, ptr nonnull %10) #7
  call void @_ZN3ipx8LpSolverD2Ev(ptr noundef nonnull align 8 dereferenceable(2864) %9) #7
  call void @llvm.lifetime.end.p0(i64 2864, ptr nonnull %9) #7
  resume { ptr, i32 } %.pn168.pn.pn.pn.pn.pn.pn
}

declare void @_Z28resetModelStatusAndHighsInfoR16HighsModelStatusR9HighsInfo(ptr noundef nonnull align 4 dereferenceable(4), ptr noundef nonnull align 8 dereferenceable(184)) local_unnamed_addr #3

; Function Attrs: inlinehint mustprogress uwtable
declare dso_local void @_ZN3ipx8LpSolverC2Ev(ptr noundef nonnull align 8 dereferenceable(2864)) unnamed_addr #4 align 2

; Function Attrs: mustprogress nounwind uwtable
declare dso_local void @_ZN3ipx10ParametersC2Ev(ptr noundef nonnull align 8 dereferenceable(240)) 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: inlinehint mustprogress nounwind uwtable
declare dso_local noundef nonnull align 8 dereferenceable(8) ptr @_ZSt3minIdERKT_S2_S2_(ptr noundef nonnull align 8 dereferenceable(8), ptr noundef nonnull align 8 dereferenceable(8)) local_unnamed_addr #6

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

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

declare void @_ZN3ipx8LpSolver13SetParametersENS_10ParametersE(ptr noundef nonnull align 8 dereferenceable(2864), ptr noundef byval(%"struct.ipx::Parameters") align 8) local_unnamed_addr #3

declare void @_ZN3ipx8LpSolver11SetCallbackEP13HighsCallback(ptr noundef nonnull align 8 dereferenceable(2864), ptr noundef) local_unnamed_addr #3

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

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

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

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

declare void @_Z12highsLogUserRK15HighsLogOptions12HighsLogTypePKcz(ptr noundef nonnull align 8 dereferenceable(89), i32 noundef, ptr noundef, ...) local_unnamed_addr #3

; 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

declare noundef i32 @_ZN3ipx8LpSolver9LoadModelEidPKdS2_S2_iPKiS4_S2_S2_PKc(ptr noundef nonnull align 8 dereferenceable(2864), i32 noundef, double noundef, ptr noundef, ptr noundef, ptr noundef, i32 noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef) local_unnamed_addr #3

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

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

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

declare noundef i32 @_ZN3ipx8LpSolver5SolveEv(ptr noundef nonnull align 8 dereferenceable(2864)) local_unnamed_addr #3

declare void @_ZNK3ipx8LpSolver7GetInfoEv(ptr dead_on_unwind writable sret(%"struct.ipx::Info") align 8, ptr noundef nonnull align 8 dereferenceable(2864)) local_unnamed_addr #3

; Function Attrs: mustprogress uwtable
declare dso_local void @_Z15reportSolveDataRK15HighsLogOptionsRKN3ipx4InfoE(ptr noundef nonnull align 8 dereferenceable(89), ptr noundef nonnull align 8 dereferenceable(464)) local_unnamed_addr #2

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

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

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

; Function Attrs: mustprogress uwtable
declare dso_local void @_Z25getHighsNonVertexSolutionRK12HighsOptionsRK7HighsLpiiRKSt6vectorIdSaIdEERKS5_IcSaIcEERKN3ipx8LpSolverE16HighsModelStatusR13HighsSolution(ptr noundef nonnull align 8 dereferenceable(1020), ptr noundef nonnull align 8 dereferenceable(920), i32 noundef, i32 noundef, ptr noundef nonnull align 8 dereferenceable(24), ptr noundef nonnull align 8 dereferenceable(24), ptr noundef nonnull align 8 dereferenceable(2864), i32 noundef, ptr noundef nonnull align 8 dereferenceable(104)) local_unnamed_addr #2

; Function Attrs: mustprogress uwtable
declare dso_local noundef zeroext i1 @_Z32illegalIpxStoppedCrossoverStatusRKN3ipx4InfoERK12HighsOptions(ptr noundef nonnull align 8 dereferenceable(464), ptr noundef nonnull align 8 dereferenceable(1020)) local_unnamed_addr #2

; Function Attrs: mustprogress uwtable
declare dso_local noundef zeroext i1 @_Z26illegalIpxStoppedIpmStatusRKN3ipx4InfoERK12HighsOptions(ptr noundef nonnull align 8 dereferenceable(464), ptr noundef nonnull align 8 dereferenceable(1020)) local_unnamed_addr #2

; Function Attrs: mustprogress uwtable
declare dso_local void @_Z19reportIpmNoProgressRK12HighsOptionsRKN3ipx4InfoE(ptr noundef nonnull align 8 dereferenceable(1020), ptr noundef nonnull align 8 dereferenceable(464)) local_unnamed_addr #2

; Function Attrs: mustprogress uwtable
declare dso_local noundef zeroext i1 @_Z22illegalIpxSolvedStatusRKN3ipx4InfoERK12HighsOptions(ptr noundef nonnull align 8 dereferenceable(464), ptr noundef nonnull align 8 dereferenceable(1020)) local_unnamed_addr #2

; Function Attrs: inlinehint mustprogress nounwind uwtable
declare dso_local void @_ZN11IpxSolutionC2Ev(ptr noundef nonnull align 8 dereferenceable(152)) unnamed_addr #6 align 2

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

declare noundef i32 @_ZNK3ipx8LpSolver16GetBasicSolutionEPdS1_S1_S1_PiS2_(ptr noundef nonnull align 8 dereferenceable(2864), ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef) local_unnamed_addr #3

declare noundef i32 @_Z36ipxBasicSolutionToHighsBasicSolutionRK15HighsLogOptionsRK7HighsLpRKSt6vectorIdSaIdEERKS5_IcSaIcEERK11IpxSolutionR10HighsBasisR13HighsSolution(ptr noundef nonnull align 8 dereferenceable(89), ptr noundef nonnull align 8 dereferenceable(920), ptr noundef nonnull align 8 dereferenceable(24), ptr noundef nonnull align 8 dereferenceable(24), ptr noundef nonnull align 8 dereferenceable(152), ptr noundef nonnull align 8 dereferenceable(96), ptr noundef nonnull align 8 dereferenceable(104)) local_unnamed_addr #3

; Function Attrs: inlinehint mustprogress nounwind uwtable
declare dso_local void @_ZN11IpxSolutionD2Ev(ptr noundef nonnull align 8 dereferenceable(152)) unnamed_addr #6 align 2

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

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

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

; Function Attrs: inlinehint mustprogress nounwind uwtable
declare dso_local void @_ZN3ipx8LpSolverD2Ev(ptr noundef nonnull align 8 dereferenceable(2864)) unnamed_addr #6 align 2

; Function Attrs: mustprogress nounwind uwtable
declare dso_local void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1)) 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 = { "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }
attributes #4 = { 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 #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 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 #7 = { nounwind }
attributes #8 = { 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, !7, i64 0}
!6 = !{!"_ZTS10HighsBasis", !7, i64 0, !7, i64 1, !7, i64 2, !7, i64 3, !10, i64 4, !10, i64 8, !11, i64 16, !15, i64 48, !15, i64 72}
!7 = !{!"bool", !8, i64 0}
!8 = !{!"omnipotent char", !9, i64 0}
!9 = !{!"Simple C++ TBAA"}
!10 = !{!"int", !8, i64 0}
!11 = !{!"_ZTSNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE", !12, i64 0, !14, i64 8, !8, i64 16}
!12 = !{!"_ZTSNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE12_Alloc_hiderE", !13, i64 0}
!13 = !{!"any pointer", !8, i64 0}
!14 = !{!"long", !8, i64 0}
!15 = !{!"_ZTSSt6vectorI16HighsBasisStatusSaIS0_EE", !16, i64 0}
!16 = !{!"_ZTSSt12_Vector_baseI16HighsBasisStatusSaIS0_EE", !17, i64 0}
!17 = !{!"_ZTSNSt12_Vector_baseI16HighsBasisStatusSaIS0_EE12_Vector_implE", !18, i64 0}
!18 = !{!"_ZTSNSt12_Vector_baseI16HighsBasisStatusSaIS0_EE17_Vector_impl_dataE", !13, i64 0, !13, i64 8, !13, i64 16}
!19 = !{!20, !7, i64 0}
!20 = !{!"_ZTS13HighsSolution", !7, i64 0, !7, i64 1, !21, i64 8, !21, i64 32, !21, i64 56, !21, i64 80}
!21 = !{!"_ZTSSt6vectorIdSaIdEE", !22, i64 0}
!22 = !{!"_ZTSSt12_Vector_baseIdSaIdEE", !23, i64 0}
!23 = !{!"_ZTSNSt12_Vector_baseIdSaIdEE12_Vector_implE", !24, i64 0}
!24 = !{!"_ZTSNSt12_Vector_baseIdSaIdEE17_Vector_impl_dataE", !13, i64 0, !13, i64 8, !13, i64 16}
!25 = !{!20, !7, i64 1}
!26 = !{!27, !7, i64 472}
!27 = !{!"_ZTS18HighsOptionsStruct", !11, i64 8, !11, i64 40, !11, i64 72, !11, i64 104, !28, i64 136, !11, i64 144, !11, i64 176, !10, i64 208, !11, i64 216, !28, i64 248, !28, i64 256, !28, i64 264, !28, i64 272, !28, i64 280, !28, i64 288, !28, i64 296, !28, i64 304, !28, i64 312, !28, i64 320, !28, i64 328, !10, i64 336, !10, i64 340, !10, i64 344, !10, i64 348, !10, i64 352, !10, i64 356, !10, i64 360, !10, i64 364, !10, i64 368, !10, i64 372, !10, i64 376, !10, i64 380, !10, i64 384, !10, i64 388, !11, i64 392, !7, i64 424, !7, i64 425, !7, i64 426, !10, i64 428, !10, i64 432, !11, i64 440, !7, i64 472, !7, i64 473, !7, i64 474, !10, i64 476, !7, i64 480, !7, i64 481, !10, i64 484, !10, i64 488, !28, i64 496, !10, i64 504, !10, i64 508, !10, i64 512, !7, i64 516, !10, i64 520, !7, i64 524, !7, i64 525, !7, i64 526, !7, i64 527, !7, i64 528, !7, i64 529, !7, i64 530, !10, i64 532, !10, i64 536, !10, i64 540, !10, i64 544, !10, i64 548, !10, i64 552, !10, i64 556, !10, i64 560, !10, i64 564, !10, i64 568, !10, i64 572, !10, i64 576, !10, i64 580, !10, i64 584, !10, i64 588, !7, i64 592, !7, i64 593, !7, i64 594, !7, i64 595, !28, i64 600, !28, i64 608, !28, i64 616, !28, i64 624, !28, i64 632, !28, i64 640, !28, i64 648, !28, i64 656, !28, i64 664, !28, i64 672, !28, i64 680, !7, i64 688, !7, i64 689, !7, i64 690, !7, i64 691, !10, i64 692, !28, i64 696, !7, i64 704, !7, i64 705, !11, i64 712, !28, i64 744, !10, i64 752, !10, i64 756, !7, i64 760, !7, i64 761, !7, i64 762, !7, i64 763, !10, i64 764, !10, i64 768, !10, i64 772, !10, i64 776, !10, i64 780, !10, i64 784, !10, i64 788, !10, i64 792, !10, i64 796, !10, i64 800, !10, i64 804, !28, i64 808, !28, i64 816, !28, i64 824, !28, i64 832, !28, i64 840, !7, i64 848, !7, i64 849, !11, i64 856, !7, i64 888, !10, i64 892, !29, i64 896}
!28 = !{!"double", !8, i64 0}
!29 = !{!"_ZTS15HighsLogOptions", !13, i64 0, !13, i64 8, !13, i64 16, !13, i64 24, !13, i64 32, !13, i64 40, !30, i64 48, !13, i64 80, !7, i64 88}
!30 = !{!"_ZTSSt8functionIFviRKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEPK20HighsCallbackDataOutP19HighsCallbackDataInPvEE", !31, i64 0, !13, i64 24}
!31 = !{!"_ZTSSt14_Function_base", !8, i64 0, !13, i64 16}
!32 = !{i8 0, i8 2}
!33 = !{}
!34 = !{!27, !7, i64 473}
!35 = !{!36, !10, i64 168}
!36 = !{!"_ZTS14ipx_parameters", !10, i64 0, !13, i64 8, !28, i64 16, !28, i64 24, !7, i64 32, !10, i64 36, !10, i64 40, !10, i64 44, !28, i64 48, !28, i64 56, !28, i64 64, !28, i64 72, !28, i64 80, !10, i64 88, !28, i64 96, !28, i64 104, !10, i64 112, !10, i64 116, !10, i64 120, !28, i64 128, !10, i64 136, !28, i64 144, !28, i64 152, !28, i64 160, !10, i64 168, !10, i64 172, !10, i64 176, !10, i64 180, !10, i64 184, !10, i64 188, !10, i64 192, !28, i64 200, !28, i64 208, !28, i64 216, !10, i64 224, !7, i64 228, !7, i64 229, !13, i64 232}
!37 = !{!27, !10, i64 520}
!38 = !{!36, !7, i64 228}
!39 = !{!27, !7, i64 474}
!40 = !{!36, !7, i64 229}
!41 = !{!36, !13, i64 232}
!42 = !{!27, !10, i64 548}
!43 = !{!36, !10, i64 36}
!44 = !{!28, !28, i64 0}
!45 = !{!36, !28, i64 48}
!46 = !{!27, !28, i64 296}
!47 = !{!36, !28, i64 56}
!48 = !{!27, !28, i64 680}
!49 = !{!36, !28, i64 144}
!50 = !{!27, !10, i64 352}
!51 = !{!36, !7, i64 32}
!52 = !{!27, !28, i64 136}
!53 = !{!36, !28, i64 24}
!54 = !{!27, !10, i64 476}
!55 = !{!56, !10, i64 20}
!56 = !{!"_ZTS15HighsInfoStruct", !7, i64 0, !14, i64 8, !10, i64 16, !10, i64 20, !10, i64 24, !10, i64 28, !10, i64 32, !10, i64 36, !10, i64 40, !10, i64 44, !28, i64 48, !28, i64 56, !28, i64 64, !28, i64 72, !10, i64 80, !28, i64 88, !28, i64 96, !10, i64 104, !28, i64 112, !28, i64 120, !28, i64 128, !28, i64 136, !28, i64 144}
!57 = !{!36, !10, i64 44}
!58 = !{!27, !7, i64 691}
!59 = !{!36, !10, i64 136}
!60 = !{!36, !10, i64 188}
!61 = !{!27, !10, i64 692}
!62 = !{!36, !10, i64 192}
!63 = !{!27, !28, i64 696}
!64 = !{!36, !28, i64 200}
!65 = !{!10, !10, i64 0}
!66 = !{!67, !67, i64 0}
!67 = !{!"_ZTS16HighsModelStatus", !8, i64 0}
!68 = !{!69, !10, i64 192}
!69 = !{!"_ZTS8ipx_info", !10, i64 0, !10, i64 4, !10, i64 8, !10, i64 12, !10, i64 16, !10, i64 20, !10, i64 24, !10, i64 28, !10, i64 32, !10, i64 36, !10, i64 40, !10, i64 44, !10, i64 48, !10, i64 52, !10, i64 56, !10, i64 60, !10, i64 64, !10, i64 68, !10, i64 72, !10, i64 76, !28, i64 80, !28, i64 88, !28, i64 96, !28, i64 104, !28, i64 112, !28, i64 120, !28, i64 128, !28, i64 136, !28, i64 144, !28, i64 152, !28, i64 160, !28, i64 168, !28, i64 176, !28, i64 184, !10, i64 192, !10, i64 196, !10, i64 200, !10, i64 204, !10, i64 208, !10, i64 212, !10, i64 216, !28, i64 224, !28, i64 232, !28, i64 240, !28, i64 248, !28, i64 256, !28, i64 264, !28, i64 272, !28, i64 280, !28, i64 288, !28, i64 296, !28, i64 304, !28, i64 312, !28, i64 320, !28, i64 328, !28, i64 336, !28, i64 344, !28, i64 352, !28, i64 360, !28, i64 368, !28, i64 376, !28, i64 384, !28, i64 392, !28, i64 400, !28, i64 408, !10, i64 416, !10, i64 420, !10, i64 424, !10, i64 428, !28, i64 432, !28, i64 440, !28, i64 448, !28, i64 456}
!70 = !{!69, !10, i64 216}
!71 = !{!56, !10, i64 24}
!72 = !{!69, !10, i64 12}
!73 = !{!69, !10, i64 4}
!74 = !{!69, !10, i64 8}
!75 = !{!76, !10, i64 0}
!76 = !{!"_ZTS11IpxSolution", !10, i64 0, !10, i64 4, !21, i64 8, !21, i64 32, !21, i64 56, !21, i64 80, !77, i64 104, !77, i64 128}
!77 = !{!"_ZTSSt6vectorIiSaIiEE", !78, i64 0}
!78 = !{!"_ZTSSt12_Vector_baseIiSaIiEE", !79, i64 0}
!79 = !{!"_ZTSNSt12_Vector_baseIiSaIiEE12_Vector_implE", !80, i64 0}
!80 = !{!"_ZTSNSt12_Vector_baseIiSaIiEE17_Vector_impl_dataE", !13, i64 0, !13, i64 8, !13, i64 16}
!81 = !{!76, !10, i64 4}
!82 = !{!56, !10, i64 44}


; Effective O3 passes: BDCEPass,CorrelatedValuePropagationPass,DSEPass,EarlyCSEPass,GVNPass,GlobalOptPass,IPSCCPPass,InferFunctionAttrsPass,InstCombinePass,JumpThreadingPass,MemCpyOptPass,SROAPass,SimplifyCFGPass,TailCallElimPass