; LLVM IR from ERGO-Code/HiGHS :: src/lp_data (HighsSolution)

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

%"class.std::vector.3" = type { %"struct.std::_Vector_base.4" }
%"struct.std::_Vector_base.4" = type { %"struct.std::_Vector_base<double, std::allocator<double>>::_Vector_impl" }
%"struct.std::_Vector_base<double, std::allocator<double>>::_Vector_impl" = type { %"struct.std::_Vector_base<double, std::allocator<double>>::_Vector_impl_data" }
%"struct.std::_Vector_base<double, std::allocator<double>>::_Vector_impl_data" = type { ptr, ptr, ptr }
%struct.HighsOptionsStruct = type { ptr, %"class.std::__cxx11::basic_string", %"class.std::__cxx11::basic_string", %"class.std::__cxx11::basic_string", %"class.std::__cxx11::basic_string", double, %"class.std::__cxx11::basic_string", %"class.std::__cxx11::basic_string", i32, %"class.std::__cxx11::basic_string", double, double, double, double, double, double, double, double, double, double, double, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, %"class.std::__cxx11::basic_string", i8, i8, i8, i32, i32, %"class.std::__cxx11::basic_string", i8, i8, i8, i32, i8, i8, i32, i32, double, i32, i32, i32, i8, i32, i8, i8, i8, i8, i8, i8, i8, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i8, i8, i8, i8, double, double, double, double, double, double, double, double, double, double, double, i8, i8, i8, i8, i32, double, i8, i8, %"class.std::__cxx11::basic_string", double, i32, i32, i8, i8, i8, i8, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, double, double, double, double, double, i8, i8, %"class.std::__cxx11::basic_string", i8, i32, %struct.HighsLogOptions }
%"class.std::__cxx11::basic_string" = type { %"struct.std::__cxx11::basic_string<char>::_Alloc_hider", i64, %union.anon }
%"struct.std::__cxx11::basic_string<char>::_Alloc_hider" = type { ptr }
%union.anon = type { i64, [8 x i8] }
%struct.HighsLogOptions = type <{ ptr, ptr, ptr, ptr, ptr, ptr, %"class.std::function", ptr, i8, [7 x i8] }>
%"class.std::function" = type { %"class.std::_Function_base", ptr }
%"class.std::_Function_base" = type { %"union.std::_Any_data", ptr }
%"union.std::_Any_data" = type { %"union.std::_Nocopy_types" }
%"union.std::_Nocopy_types" = type { { i64, i64 } }
%struct.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 }
%struct.HighsPrimalDualErrors = type { i32, i32, double, double, i32, double, double, i32, double, i32, double, %struct.HighsError, %struct.HighsError, %struct.HighsError, %struct.HighsError }
%struct.HighsError = type { double, i32, double, i32 }
%struct.HighsSolution = type { i8, i8, %"class.std::vector.3", %"class.std::vector.3", %"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 }
%class.HighsLp = type { i32, i32, %"class.std::vector.3", %"class.std::vector.3", %"class.std::vector.3", %"class.std::vector.3", %"class.std::vector.3", %class.HighsSparseMatrix, i32, double, %"class.std::__cxx11::basic_string", %"class.std::__cxx11::basic_string", i32, i32, %"class.std::vector.13", %"class.std::vector.13", %"class.std::vector.18", %struct.HighsNameHash, %struct.HighsNameHash, i32, i32, %struct.HighsScale, i8, i8, i32, i8, %struct.HighsLpMods }
%class.HighsSparseMatrix = type { i32, i32, i32, %"class.std::vector.8", %"class.std::vector.8", %"class.std::vector.8", %"class.std::vector.3" }
%"class.std::vector.8" = type { %"struct.std::_Vector_base.9" }
%"struct.std::_Vector_base.9" = type { %"struct.std::_Vector_base<int, std::allocator<int>>::_Vector_impl" }
%"struct.std::_Vector_base<int, std::allocator<int>>::_Vector_impl" = type { %"struct.std::_Vector_base<int, std::allocator<int>>::_Vector_impl_data" }
%"struct.std::_Vector_base<int, std::allocator<int>>::_Vector_impl_data" = type { ptr, ptr, ptr }
%"class.std::vector.13" = type { %"struct.std::_Vector_base.14" }
%"struct.std::_Vector_base.14" = type { %"struct.std::_Vector_base<std::__cxx11::basic_string<char>, std::allocator<std::__cxx11::basic_string<char>>>::_Vector_impl" }
%"struct.std::_Vector_base<std::__cxx11::basic_string<char>, std::allocator<std::__cxx11::basic_string<char>>>::_Vector_impl" = type { %"struct.std::_Vector_base<std::__cxx11::basic_string<char>, std::allocator<std::__cxx11::basic_string<char>>>::_Vector_impl_data" }
%"struct.std::_Vector_base<std::__cxx11::basic_string<char>, std::allocator<std::__cxx11::basic_string<char>>>::_Vector_impl_data" = type { ptr, ptr, ptr }
%"class.std::vector.18" = type { %"struct.std::_Vector_base.19" }
%"struct.std::_Vector_base.19" = type { %"struct.std::_Vector_base<HighsVarType, std::allocator<HighsVarType>>::_Vector_impl" }
%"struct.std::_Vector_base<HighsVarType, std::allocator<HighsVarType>>::_Vector_impl" = type { %"struct.std::_Vector_base<HighsVarType, std::allocator<HighsVarType>>::_Vector_impl_data" }
%"struct.std::_Vector_base<HighsVarType, std::allocator<HighsVarType>>::_Vector_impl_data" = type { ptr, ptr, ptr }
%struct.HighsNameHash = type { %"class.std::unordered_map" }
%"class.std::unordered_map" = type { %"class.std::_Hashtable" }
%"class.std::_Hashtable" = type { ptr, i64, %"struct.std::__detail::_Hash_node_base", i64, %"struct.std::__detail::_Prime_rehash_policy", ptr }
%"struct.std::__detail::_Hash_node_base" = type { ptr }
%"struct.std::__detail::_Prime_rehash_policy" = type { float, i64 }
%struct.HighsScale = type { i32, i8, i32, i32, double, %"class.std::vector.3", %"class.std::vector.3" }
%struct.HighsLpMods = type { %"class.std::vector.8", %"class.std::vector.8", %"class.std::vector.3", %"class.std::vector.3", %"class.std::vector.18", %"class.std::vector.8", %"class.std::vector.3", %"class.std::vector.8", %"class.std::vector.3", %"class.std::vector.8", %"class.std::vector.3", %"class.std::vector.3", %"class.std::vector.3" }

@.str.51 = external hidden unnamed_addr constant [44 x i8], align 1
@.str.52 = external hidden unnamed_addr constant [79 x i8], align 1
@__PRETTY_FUNCTION__._Z14getKktFailuresRK12HighsOptionsRK7HighsLpRKSt6vectorIdSaIdEERK13HighsSolutionRK10HighsBasisR9HighsInfoR21HighsPrimalDualErrorsb = external hidden unnamed_addr constant [181 x i8], align 1
@.str.53 = external hidden unnamed_addr constant [34 x i8], align 1
@.str.54 = external hidden unnamed_addr constant [46 x i8], align 1
@.str.55 = external hidden unnamed_addr constant [46 x i8], align 1
@.str.56 = external hidden unnamed_addr constant [45 x i8], align 1
@.str.57 = external hidden unnamed_addr constant [45 x i8], align 1
@.str.58 = external hidden unnamed_addr constant [87 x i8], align 1
@.str.59 = external hidden unnamed_addr constant [7 x i8], align 1
@.str.60 = external hidden unnamed_addr constant [7 x i8], align 1
@.str.61 = external hidden unnamed_addr constant [16 x i8], align 1
@.str.62 = external hidden unnamed_addr constant [12 x i8], align 1
@.str.63 = external hidden unnamed_addr constant [69 x i8], align 1
@.str.64 = external hidden unnamed_addr constant [71 x i8], align 1
@.str.65 = external hidden unnamed_addr constant [31 x i8], align 1
@.str.66 = external hidden unnamed_addr constant [31 x i8], align 1
@.str.67 = external hidden unnamed_addr constant [29 x i8], align 1
@.str.68 = external hidden unnamed_addr constant [29 x i8], align 1

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

declare i32 @__gxx_personality_v0(...)

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

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

; Function Attrs: mustprogress uwtable
define dso_local void @_Z14getKktFailuresRK12HighsOptionsRK7HighsLpRKSt6vectorIdSaIdEERK13HighsSolutionRK10HighsBasisR9HighsInfoR21HighsPrimalDualErrorsb(ptr noundef nonnull align 8 dereferenceable(1020) %0, ptr noundef nonnull align 8 dereferenceable(920) %1, ptr noundef nonnull align 8 dereferenceable(24) %2, ptr noundef nonnull align 8 dereferenceable(104) %3, ptr noundef nonnull align 8 dereferenceable(96) %4, ptr noundef nonnull align 8 dereferenceable(184) %5, ptr noundef nonnull align 8 dereferenceable(208) %6, i1 noundef zeroext %7) #2 personality ptr @__gxx_personality_v0 {
  %9 = alloca ptr, align 8
  %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 i8, align 1
  %17 = alloca double, align 8
  %18 = alloca double, align 8
  %19 = alloca ptr, align 8
  %20 = alloca ptr, align 8
  %21 = alloca ptr, align 8
  %22 = alloca ptr, align 8
  %23 = alloca ptr, align 8
  %24 = alloca ptr, align 8
  %25 = alloca ptr, align 8
  %26 = alloca ptr, align 8
  %27 = alloca ptr, align 8
  %28 = alloca ptr, align 8
  %29 = alloca ptr, align 8
  %30 = alloca ptr, align 8
  %31 = alloca ptr, align 8
  %32 = alloca ptr, align 8
  %33 = alloca ptr, align 8
  %34 = alloca i8, align 1
  %35 = alloca ptr, align 8
  %36 = alloca ptr, align 8
  %37 = alloca ptr, align 8
  %38 = alloca ptr, align 8
  %39 = alloca ptr, align 8
  %40 = alloca ptr, align 8
  %41 = alloca ptr, align 8
  %42 = alloca ptr, align 8
  %43 = alloca ptr, align 8
  %44 = alloca ptr, align 8
  %45 = alloca ptr, align 8
  %46 = alloca ptr, align 8
  %47 = alloca ptr, align 8
  %48 = alloca ptr, align 8
  %49 = alloca ptr, align 8
  %50 = alloca ptr, align 8
  %51 = alloca ptr, align 8
  %52 = alloca ptr, align 8
  %53 = alloca ptr, align 8
  %54 = alloca i32, align 4
  %55 = alloca %"class.std::vector.3", align 8
  %56 = alloca %"class.std::vector.3", align 8
  %57 = alloca %"class.std::vector.3", align 8
  %58 = alloca %"class.std::vector.3", align 8
  %59 = alloca double, align 8
  %60 = alloca ptr, align 8
  %61 = alloca i32, align 4
  %62 = alloca double, align 8
  %63 = alloca i8, align 1
  %64 = alloca ptr, align 8
  %65 = alloca double, align 8
  %66 = alloca double, align 8
  %67 = alloca double, align 8
  %68 = alloca double, align 8
  %69 = alloca double, align 8
  %70 = alloca double, align 8
  %71 = alloca double, align 8
  %72 = alloca double, align 8
  %73 = alloca i8, align 1
  %74 = alloca i32, align 4
  %75 = alloca i32, align 4
  %76 = alloca i32, align 4
  %77 = alloca i8, align 1
  %78 = alloca double, align 8
  %79 = alloca double, align 8
  %80 = alloca i32, align 4
  %81 = alloca i32, align 4
  %82 = alloca i32, align 4
  %83 = alloca double, align 8
  %84 = alloca double, align 8
  %85 = alloca double, align 8
  %86 = alloca double, align 8
  %87 = alloca i32, align 4
  %88 = alloca i8, align 1
  %89 = alloca i32, align 4
  %90 = alloca double, align 8
  %91 = alloca double, align 8
  %92 = alloca double, align 8
  %93 = alloca double, align 8
  %94 = alloca double, align 8
  %95 = alloca double, align 8
  %96 = alloca double, align 8
  %97 = alloca double, align 8
  %98 = alloca double, align 8
  %99 = alloca i8, align 1
  %100 = alloca double, align 8
  %101 = alloca i32, align 4
  %102 = alloca double, align 8
  %103 = alloca double, align 8
  %104 = alloca double, align 8
  %105 = alloca i32, align 4
  %106 = alloca double, align 8
  %107 = alloca double, align 8
  %108 = alloca double, align 8
  store ptr %0, ptr %9, align 8, !tbaa !5
  store ptr %1, ptr %10, align 8, !tbaa !5
  store ptr %2, ptr %11, align 8, !tbaa !5
  store ptr %3, ptr %12, align 8, !tbaa !5
  store ptr %4, ptr %13, align 8, !tbaa !5
  store ptr %5, ptr %14, align 8, !tbaa !5
  store ptr %6, ptr %15, align 8, !tbaa !5
  %109 = zext i1 %7 to i8
  store i8 %109, ptr %16, align 1, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 8, ptr %17) #7
  %110 = load ptr, ptr %9, align 8, !tbaa !5
  %111 = getelementptr inbounds %struct.HighsOptionsStruct, ptr %110, i32 0, i32 14
  %112 = load double, ptr %111, align 8, !tbaa !11
  store double %112, ptr %17, align 8, !tbaa !21
  call void @llvm.lifetime.start.p0(i64 8, ptr %18) #7
  %113 = load ptr, ptr %9, align 8, !tbaa !5
  %114 = getelementptr inbounds %struct.HighsOptionsStruct, ptr %113, i32 0, i32 15
  %115 = load double, ptr %114, align 8, !tbaa !22
  store double %115, ptr %18, align 8, !tbaa !21
  call void @llvm.lifetime.start.p0(i64 8, ptr %19) #7
  %116 = load ptr, ptr %14, align 8, !tbaa !5
  %117 = getelementptr inbounds i8, ptr %116, i64 8
  %118 = getelementptr inbounds %struct.HighsInfoStruct, ptr %117, i32 0, i32 14
  store ptr %118, ptr %19, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %20) #7
  %119 = load ptr, ptr %15, align 8, !tbaa !5
  %120 = getelementptr inbounds %struct.HighsPrimalDualErrors, ptr %119, i32 0, i32 12
  %121 = getelementptr inbounds %struct.HighsError, ptr %120, i32 0, i32 1
  store ptr %121, ptr %20, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %21) #7
  %122 = load ptr, ptr %14, align 8, !tbaa !5
  %123 = getelementptr inbounds i8, ptr %122, i64 8
  %124 = getelementptr inbounds %struct.HighsInfoStruct, ptr %123, i32 0, i32 15
  store ptr %124, ptr %21, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %22) #7
  %125 = load ptr, ptr %15, align 8, !tbaa !5
  %126 = getelementptr inbounds %struct.HighsPrimalDualErrors, ptr %125, i32 0, i32 12
  %127 = getelementptr inbounds %struct.HighsError, ptr %126, i32 0, i32 3
  store ptr %127, ptr %22, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %23) #7
  %128 = load ptr, ptr %15, align 8, !tbaa !5
  %129 = getelementptr inbounds %struct.HighsPrimalDualErrors, ptr %128, i32 0, i32 12
  %130 = getelementptr inbounds %struct.HighsError, ptr %129, i32 0, i32 2
  store ptr %130, ptr %23, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %24) #7
  %131 = load ptr, ptr %14, align 8, !tbaa !5
  %132 = getelementptr inbounds i8, ptr %131, i64 8
  %133 = getelementptr inbounds %struct.HighsInfoStruct, ptr %132, i32 0, i32 16
  store ptr %133, ptr %24, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %25) #7
  %134 = load ptr, ptr %14, align 8, !tbaa !5
  %135 = getelementptr inbounds i8, ptr %134, i64 8
  %136 = getelementptr inbounds %struct.HighsInfoStruct, ptr %135, i32 0, i32 17
  store ptr %136, ptr %25, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %26) #7
  %137 = load ptr, ptr %15, align 8, !tbaa !5
  %138 = getelementptr inbounds %struct.HighsPrimalDualErrors, ptr %137, i32 0, i32 14
  %139 = getelementptr inbounds %struct.HighsError, ptr %138, i32 0, i32 1
  store ptr %139, ptr %26, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %27) #7
  %140 = load ptr, ptr %14, align 8, !tbaa !5
  %141 = getelementptr inbounds i8, ptr %140, i64 8
  %142 = getelementptr inbounds %struct.HighsInfoStruct, ptr %141, i32 0, i32 18
  store ptr %142, ptr %27, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %28) #7
  %143 = load ptr, ptr %14, align 8, !tbaa !5
  %144 = getelementptr inbounds i8, ptr %143, i64 8
  %145 = getelementptr inbounds %struct.HighsInfoStruct, ptr %144, i32 0, i32 19
  store ptr %145, ptr %28, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %29) #7
  %146 = load ptr, ptr %14, align 8, !tbaa !5
  %147 = getelementptr inbounds i8, ptr %146, i64 8
  %148 = getelementptr inbounds %struct.HighsInfoStruct, ptr %147, i32 0, i32 20
  store ptr %148, ptr %29, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %30) #7
  %149 = load ptr, ptr %14, align 8, !tbaa !5
  %150 = getelementptr inbounds i8, ptr %149, i64 8
  %151 = getelementptr inbounds %struct.HighsInfoStruct, ptr %150, i32 0, i32 21
  store ptr %151, ptr %30, align 8, !tbaa !5
  %152 = load ptr, ptr %19, align 8, !tbaa !5
  store i32 -1, ptr %152, align 4, !tbaa !23
  %153 = load ptr, ptr %21, align 8, !tbaa !5
  store double 0x7FF0000000000000, ptr %153, align 8, !tbaa !21
  %154 = load ptr, ptr %24, align 8, !tbaa !5
  store double 0x7FF0000000000000, ptr %154, align 8, !tbaa !21
  %155 = load ptr, ptr %15, align 8, !tbaa !5
  %156 = getelementptr inbounds %struct.HighsPrimalDualErrors, ptr %155, i32 0, i32 12
  call void @_ZN10HighsError10invalidateEv(ptr noundef nonnull align 8 dereferenceable(32) %156)
  %157 = load ptr, ptr %14, align 8, !tbaa !5
  %158 = getelementptr inbounds i8, ptr %157, i64 8
  %159 = getelementptr inbounds %struct.HighsInfoStruct, ptr %158, i32 0, i32 7
  store i32 0, ptr %159, align 4, !tbaa !24
  %160 = load ptr, ptr %25, align 8, !tbaa !5
  store i32 -1, ptr %160, align 4, !tbaa !23
  %161 = load ptr, ptr %27, align 8, !tbaa !5
  store double 0x7FF0000000000000, ptr %161, align 8, !tbaa !21
  %162 = load ptr, ptr %28, align 8, !tbaa !5
  store double 0x7FF0000000000000, ptr %162, align 8, !tbaa !21
  %163 = load ptr, ptr %15, align 8, !tbaa !5
  %164 = getelementptr inbounds %struct.HighsPrimalDualErrors, ptr %163, i32 0, i32 14
  call void @_ZN10HighsError10invalidateEv(ptr noundef nonnull align 8 dereferenceable(32) %164)
  %165 = load ptr, ptr %14, align 8, !tbaa !5
  %166 = getelementptr inbounds i8, ptr %165, i64 8
  %167 = getelementptr inbounds %struct.HighsInfoStruct, ptr %166, i32 0, i32 8
  store i32 0, ptr %167, align 8, !tbaa !26
  %168 = load ptr, ptr %29, align 8, !tbaa !5
  store double 0x7FF0000000000000, ptr %168, align 8, !tbaa !21
  %169 = load ptr, ptr %30, align 8, !tbaa !5
  store double 0x7FF0000000000000, ptr %169, align 8, !tbaa !21
  call void @llvm.lifetime.start.p0(i64 8, ptr %31) #7
  %170 = load ptr, ptr %12, align 8, !tbaa !5
  %171 = getelementptr inbounds %struct.HighsSolution, ptr %170, i32 0, i32 0
  store ptr %171, ptr %31, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %32) #7
  %172 = load ptr, ptr %12, align 8, !tbaa !5
  %173 = getelementptr inbounds %struct.HighsSolution, ptr %172, i32 0, i32 1
  store ptr %173, ptr %32, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %33) #7
  %174 = load ptr, ptr %13, align 8, !tbaa !5
  %175 = getelementptr inbounds %struct.HighsBasis, ptr %174, i32 0, i32 0
  store ptr %175, ptr %33, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 1, ptr %34) #7
  %176 = load ptr, ptr %10, align 8, !tbaa !5
  %177 = getelementptr inbounds %class.HighsLp, ptr %176, i32 0, i32 16
  %178 = call noundef i64 @_ZNKSt6vectorI12HighsVarTypeSaIS0_EE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24) %177) #7
  %179 = icmp ne i64 %178, 0
  %180 = zext i1 %179 to i8
  store i8 %180, ptr %34, align 1, !tbaa !9
  %181 = load ptr, ptr %31, align 8, !tbaa !5
  %182 = load i8, ptr %181, align 1, !tbaa !9, !range !27, !noundef !28
  %183 = trunc i8 %182 to i1
  br i1 %183, label %189, label %184

184:                                              ; preds = %8
  %185 = load ptr, ptr %32, align 8, !tbaa !5
  %186 = load i8, ptr %185, align 1, !tbaa !9, !range !27, !noundef !28
  %187 = trunc i8 %186 to i1
  %188 = xor i1 %187, true
  br label %189

189:                                              ; preds = %184, %8
  %190 = phi i1 [ true, %8 ], [ %188, %184 ]
  br i1 %190, label %191, label %192

191:                                              ; preds = %189
  br label %194

192:                                              ; preds = %189
  call void @__assert_fail(ptr noundef @.str.51, ptr noundef @.str.52, i32 noundef 117, ptr noundef @__PRETTY_FUNCTION__._Z14getKktFailuresRK12HighsOptionsRK7HighsLpRKSt6vectorIdSaIdEERK13HighsSolutionRK10HighsBasisR9HighsInfoR21HighsPrimalDualErrorsb) #8
  unreachable

193:                                              ; No predecessors!
  br label %194

194:                                              ; preds = %193, %191
  %195 = load ptr, ptr %32, align 8, !tbaa !5
  %196 = load i8, ptr %195, align 1, !tbaa !9, !range !27, !noundef !28
  %197 = trunc i8 %196 to i1
  br i1 %197, label %203, label %198

198:                                              ; preds = %194
  %199 = load ptr, ptr %33, align 8, !tbaa !5
  %200 = load i8, ptr %199, align 1, !tbaa !9, !range !27, !noundef !28
  %201 = trunc i8 %200 to i1
  %202 = xor i1 %201, true
  br label %203

203:                                              ; preds = %198, %194
  %204 = phi i1 [ true, %194 ], [ %202, %198 ]
  br i1 %204, label %205, label %206

205:                                              ; preds = %203
  br label %208

206:                                              ; preds = %203
  call void @__assert_fail(ptr noundef @.str.53, ptr noundef @.str.52, i32 noundef 119, ptr noundef @__PRETTY_FUNCTION__._Z14getKktFailuresRK12HighsOptionsRK7HighsLpRKSt6vectorIdSaIdEERK13HighsSolutionRK10HighsBasisR9HighsInfoR21HighsPrimalDualErrorsb) #8
  unreachable

207:                                              ; No predecessors!
  br label %208

208:                                              ; preds = %207, %205
  %209 = load ptr, ptr %31, align 8, !tbaa !5
  %210 = load i8, ptr %209, align 1, !tbaa !9, !range !27, !noundef !28
  %211 = trunc i8 %210 to i1
  br i1 %211, label %212, label %276

212:                                              ; preds = %208
  %213 = load ptr, ptr %12, align 8, !tbaa !5
  %214 = getelementptr inbounds %struct.HighsSolution, ptr %213, i32 0, i32 2
  %215 = call noundef i64 @_ZNKSt6vectorIdSaIdEE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24) %214) #7
  %216 = trunc i64 %215 to i32
  %217 = load ptr, ptr %10, align 8, !tbaa !5
  %218 = getelementptr inbounds %class.HighsLp, ptr %217, i32 0, i32 0
  %219 = load i32, ptr %218, align 8, !tbaa !29
  %220 = icmp sge i32 %216, %219
  br i1 %220, label %221, label %222

221:                                              ; preds = %212
  br label %224

222:                                              ; preds = %212
  call void @__assert_fail(ptr noundef @.str.54, ptr noundef @.str.52, i32 noundef 124, ptr noundef @__PRETTY_FUNCTION__._Z14getKktFailuresRK12HighsOptionsRK7HighsLpRKSt6vectorIdSaIdEERK13HighsSolutionRK10HighsBasisR9HighsInfoR21HighsPrimalDualErrorsb) #8
  unreachable

223:                                              ; No predecessors!
  br label %224

224:                                              ; preds = %223, %221
  %225 = load ptr, ptr %12, align 8, !tbaa !5
  %226 = getelementptr inbounds %struct.HighsSolution, ptr %225, i32 0, i32 4
  %227 = call noundef i64 @_ZNKSt6vectorIdSaIdEE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24) %226) #7
  %228 = trunc i64 %227 to i32
  %229 = load ptr, ptr %10, align 8, !tbaa !5
  %230 = getelementptr inbounds %class.HighsLp, ptr %229, i32 0, i32 1
  %231 = load i32, ptr %230, align 4, !tbaa !58
  %232 = icmp sge i32 %228, %231
  br i1 %232, label %233, label %234

233:                                              ; preds = %224
  br label %236

234:                                              ; preds = %224
  call void @__assert_fail(ptr noundef @.str.55, ptr noundef @.str.52, i32 noundef 125, ptr noundef @__PRETTY_FUNCTION__._Z14getKktFailuresRK12HighsOptionsRK7HighsLpRKSt6vectorIdSaIdEERK13HighsSolutionRK10HighsBasisR9HighsInfoR21HighsPrimalDualErrorsb) #8
  unreachable

235:                                              ; No predecessors!
  br label %236

236:                                              ; preds = %235, %233
  %237 = load ptr, ptr %19, align 8, !tbaa !5
  store i32 0, ptr %237, align 4, !tbaa !23
  %238 = load ptr, ptr %21, align 8, !tbaa !5
  store double 0.000000e+00, ptr %238, align 8, !tbaa !21
  %239 = load ptr, ptr %24, align 8, !tbaa !5
  store double 0.000000e+00, ptr %239, align 8, !tbaa !21
  %240 = load ptr, ptr %15, align 8, !tbaa !5
  %241 = getelementptr inbounds %struct.HighsPrimalDualErrors, ptr %240, i32 0, i32 12
  call void @_ZN10HighsError5resetEv(ptr noundef nonnull align 8 dereferenceable(32) %241)
  %242 = load ptr, ptr %32, align 8, !tbaa !5
  %243 = load i8, ptr %242, align 1, !tbaa !9, !range !27, !noundef !28
  %244 = trunc i8 %243 to i1
  br i1 %244, label %245, label %275

245:                                              ; preds = %236
  %246 = load ptr, ptr %12, align 8, !tbaa !5
  %247 = getelementptr inbounds %struct.HighsSolution, ptr %246, i32 0, i32 3
  %248 = call noundef i64 @_ZNKSt6vectorIdSaIdEE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24) %247) #7
  %249 = trunc i64 %248 to i32
  %250 = load ptr, ptr %10, align 8, !tbaa !5
  %251 = getelementptr inbounds %class.HighsLp, ptr %250, i32 0, i32 0
  %252 = load i32, ptr %251, align 8, !tbaa !29
  %253 = icmp sge i32 %249, %252
  br i1 %253, label %254, label %255

254:                                              ; preds = %245
  br label %257

255:                                              ; preds = %245
  call void @__assert_fail(ptr noundef @.str.56, ptr noundef @.str.52, i32 noundef 133, ptr noundef @__PRETTY_FUNCTION__._Z14getKktFailuresRK12HighsOptionsRK7HighsLpRKSt6vectorIdSaIdEERK13HighsSolutionRK10HighsBasisR9HighsInfoR21HighsPrimalDualErrorsb) #8
  unreachable

256:                                              ; No predecessors!
  br label %257

257:                                              ; preds = %256, %254
  %258 = load ptr, ptr %12, align 8, !tbaa !5
  %259 = getelementptr inbounds %struct.HighsSolution, ptr %258, i32 0, i32 5
  %260 = call noundef i64 @_ZNKSt6vectorIdSaIdEE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24) %259) #7
  %261 = trunc i64 %260 to i32
  %262 = load ptr, ptr %10, align 8, !tbaa !5
  %263 = getelementptr inbounds %class.HighsLp, ptr %262, i32 0, i32 1
  %264 = load i32, ptr %263, align 4, !tbaa !58
  %265 = icmp sge i32 %261, %264
  br i1 %265, label %266, label %267

266:                                              ; preds = %257
  br label %269

267:                                              ; preds = %257
  call void @__assert_fail(ptr noundef @.str.57, ptr noundef @.str.52, i32 noundef 134, ptr noundef @__PRETTY_FUNCTION__._Z14getKktFailuresRK12HighsOptionsRK7HighsLpRKSt6vectorIdSaIdEERK13HighsSolutionRK10HighsBasisR9HighsInfoR21HighsPrimalDualErrorsb) #8
  unreachable

268:                                              ; No predecessors!
  br label %269

269:                                              ; preds = %268, %266
  %270 = load ptr, ptr %25, align 8, !tbaa !5
  store i32 0, ptr %270, align 4, !tbaa !23
  %271 = load ptr, ptr %27, align 8, !tbaa !5
  store double 0.000000e+00, ptr %271, align 8, !tbaa !21
  %272 = load ptr, ptr %28, align 8, !tbaa !5
  store double 0.000000e+00, ptr %272, align 8, !tbaa !21
  %273 = load ptr, ptr %15, align 8, !tbaa !5
  %274 = getelementptr inbounds %struct.HighsPrimalDualErrors, ptr %273, i32 0, i32 14
  call void @_ZN10HighsError5resetEv(ptr noundef nonnull align 8 dereferenceable(32) %274)
  br label %275

275:                                              ; preds = %269, %236
  br label %276

276:                                              ; preds = %275, %208
  call void @llvm.lifetime.start.p0(i64 8, ptr %35) #7
  %277 = load ptr, ptr %15, align 8, !tbaa !5
  %278 = getelementptr inbounds %struct.HighsPrimalDualErrors, ptr %277, i32 0, i32 7
  store ptr %278, ptr %35, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %36) #7
  %279 = load ptr, ptr %15, align 8, !tbaa !5
  %280 = getelementptr inbounds %struct.HighsPrimalDualErrors, ptr %279, i32 0, i32 11
  %281 = getelementptr inbounds %struct.HighsError, ptr %280, i32 0, i32 1
  store ptr %281, ptr %36, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %37) #7
  %282 = load ptr, ptr %15, align 8, !tbaa !5
  %283 = getelementptr inbounds %struct.HighsPrimalDualErrors, ptr %282, i32 0, i32 11
  %284 = getelementptr inbounds %struct.HighsError, ptr %283, i32 0, i32 0
  store ptr %284, ptr %37, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %38) #7
  %285 = load ptr, ptr %15, align 8, !tbaa !5
  %286 = getelementptr inbounds %struct.HighsPrimalDualErrors, ptr %285, i32 0, i32 11
  %287 = getelementptr inbounds %struct.HighsError, ptr %286, i32 0, i32 3
  store ptr %287, ptr %38, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %39) #7
  %288 = load ptr, ptr %15, align 8, !tbaa !5
  %289 = getelementptr inbounds %struct.HighsPrimalDualErrors, ptr %288, i32 0, i32 11
  %290 = getelementptr inbounds %struct.HighsError, ptr %289, i32 0, i32 2
  store ptr %290, ptr %39, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %40) #7
  %291 = load ptr, ptr %15, align 8, !tbaa !5
  %292 = getelementptr inbounds %struct.HighsPrimalDualErrors, ptr %291, i32 0, i32 8
  store ptr %292, ptr %40, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %41) #7
  %293 = load ptr, ptr %15, align 8, !tbaa !5
  %294 = getelementptr inbounds %struct.HighsPrimalDualErrors, ptr %293, i32 0, i32 9
  store ptr %294, ptr %41, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %42) #7
  %295 = load ptr, ptr %15, align 8, !tbaa !5
  %296 = getelementptr inbounds %struct.HighsPrimalDualErrors, ptr %295, i32 0, i32 13
  %297 = getelementptr inbounds %struct.HighsError, ptr %296, i32 0, i32 1
  store ptr %297, ptr %42, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %43) #7
  %298 = load ptr, ptr %15, align 8, !tbaa !5
  %299 = getelementptr inbounds %struct.HighsPrimalDualErrors, ptr %298, i32 0, i32 13
  %300 = getelementptr inbounds %struct.HighsError, ptr %299, i32 0, i32 0
  store ptr %300, ptr %43, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %44) #7
  %301 = load ptr, ptr %15, align 8, !tbaa !5
  %302 = getelementptr inbounds %struct.HighsPrimalDualErrors, ptr %301, i32 0, i32 13
  %303 = getelementptr inbounds %struct.HighsError, ptr %302, i32 0, i32 3
  store ptr %303, ptr %44, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %45) #7
  %304 = load ptr, ptr %15, align 8, !tbaa !5
  %305 = getelementptr inbounds %struct.HighsPrimalDualErrors, ptr %304, i32 0, i32 13
  %306 = getelementptr inbounds %struct.HighsError, ptr %305, i32 0, i32 2
  store ptr %306, ptr %45, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %46) #7
  %307 = load ptr, ptr %15, align 8, !tbaa !5
  %308 = getelementptr inbounds %struct.HighsPrimalDualErrors, ptr %307, i32 0, i32 10
  store ptr %308, ptr %46, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %47) #7
  %309 = load ptr, ptr %15, align 8, !tbaa !5
  %310 = getelementptr inbounds %struct.HighsPrimalDualErrors, ptr %309, i32 0, i32 0
  store ptr %310, ptr %47, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %48) #7
  %311 = load ptr, ptr %15, align 8, !tbaa !5
  %312 = getelementptr inbounds %struct.HighsPrimalDualErrors, ptr %311, i32 0, i32 1
  store ptr %312, ptr %48, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %49) #7
  %313 = load ptr, ptr %15, align 8, !tbaa !5
  %314 = getelementptr inbounds %struct.HighsPrimalDualErrors, ptr %313, i32 0, i32 2
  store ptr %314, ptr %49, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %50) #7
  %315 = load ptr, ptr %15, align 8, !tbaa !5
  %316 = getelementptr inbounds %struct.HighsPrimalDualErrors, ptr %315, i32 0, i32 3
  store ptr %316, ptr %50, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %51) #7
  %317 = load ptr, ptr %15, align 8, !tbaa !5
  %318 = getelementptr inbounds %struct.HighsPrimalDualErrors, ptr %317, i32 0, i32 4
  store ptr %318, ptr %51, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %52) #7
  %319 = load ptr, ptr %15, align 8, !tbaa !5
  %320 = getelementptr inbounds %struct.HighsPrimalDualErrors, ptr %319, i32 0, i32 5
  store ptr %320, ptr %52, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %53) #7
  %321 = load ptr, ptr %15, align 8, !tbaa !5
  %322 = getelementptr inbounds %struct.HighsPrimalDualErrors, ptr %321, i32 0, i32 6
  store ptr %322, ptr %53, align 8, !tbaa !5
  %323 = load ptr, ptr %31, align 8, !tbaa !5
  %324 = load i8, ptr %323, align 1, !tbaa !9, !range !27, !noundef !28
  %325 = trunc i8 %324 to i1
  br i1 %325, label %326, label %335

326:                                              ; preds = %276
  %327 = load i8, ptr %16, align 1, !tbaa !9, !range !27, !noundef !28
  %328 = trunc i8 %327 to i1
  br i1 %328, label %329, label %335

329:                                              ; preds = %326
  %330 = load ptr, ptr %35, align 8, !tbaa !5
  store i32 0, ptr %330, align 4, !tbaa !23
  %331 = load ptr, ptr %37, align 8, !tbaa !5
  store double 0.000000e+00, ptr %331, align 8, !tbaa !21
  %332 = load ptr, ptr %40, align 8, !tbaa !5
  store double 0.000000e+00, ptr %332, align 8, !tbaa !21
  %333 = load ptr, ptr %15, align 8, !tbaa !5
  %334 = getelementptr inbounds %struct.HighsPrimalDualErrors, ptr %333, i32 0, i32 11
  call void @_ZN10HighsError5resetEv(ptr noundef nonnull align 8 dereferenceable(32) %334)
  br label %341

335:                                              ; preds = %326, %276
  %336 = load ptr, ptr %35, align 8, !tbaa !5
  store i32 -1, ptr %336, align 4, !tbaa !23
  %337 = load ptr, ptr %37, align 8, !tbaa !5
  store double 0x7FF0000000000000, ptr %337, align 8, !tbaa !21
  %338 = load ptr, ptr %40, align 8, !tbaa !5
  store double 0x7FF0000000000000, ptr %338, align 8, !tbaa !21
  %339 = load ptr, ptr %15, align 8, !tbaa !5
  %340 = getelementptr inbounds %struct.HighsPrimalDualErrors, ptr %339, i32 0, i32 11
  call void @_ZN10HighsError10invalidateEv(ptr noundef nonnull align 8 dereferenceable(32) %340)
  br label %341

341:                                              ; preds = %335, %329
  %342 = load ptr, ptr %32, align 8, !tbaa !5
  %343 = load i8, ptr %342, align 1, !tbaa !9, !range !27, !noundef !28
  %344 = trunc i8 %343 to i1
  br i1 %344, label %345, label %354

345:                                              ; preds = %341
  %346 = load i8, ptr %16, align 1, !tbaa !9, !range !27, !noundef !28
  %347 = trunc i8 %346 to i1
  br i1 %347, label %348, label %354

348:                                              ; preds = %345
  %349 = load ptr, ptr %41, align 8, !tbaa !5
  store i32 0, ptr %349, align 4, !tbaa !23
  %350 = load ptr, ptr %43, align 8, !tbaa !5
  store double 0.000000e+00, ptr %350, align 8, !tbaa !21
  %351 = load ptr, ptr %46, align 8, !tbaa !5
  store double 0.000000e+00, ptr %351, align 8, !tbaa !21
  %352 = load ptr, ptr %15, align 8, !tbaa !5
  %353 = getelementptr inbounds %struct.HighsPrimalDualErrors, ptr %352, i32 0, i32 13
  call void @_ZN10HighsError5resetEv(ptr noundef nonnull align 8 dereferenceable(32) %353)
  br label %360

354:                                              ; preds = %345, %341
  %355 = load ptr, ptr %41, align 8, !tbaa !5
  store i32 -1, ptr %355, align 4, !tbaa !23
  %356 = load ptr, ptr %43, align 8, !tbaa !5
  store double 0x7FF0000000000000, ptr %356, align 8, !tbaa !21
  %357 = load ptr, ptr %46, align 8, !tbaa !5
  store double 0x7FF0000000000000, ptr %357, align 8, !tbaa !21
  %358 = load ptr, ptr %15, align 8, !tbaa !5
  %359 = getelementptr inbounds %struct.HighsPrimalDualErrors, ptr %358, i32 0, i32 13
  call void @_ZN10HighsError10invalidateEv(ptr noundef nonnull align 8 dereferenceable(32) %359)
  br label %360

360:                                              ; preds = %354, %348
  %361 = load ptr, ptr %33, align 8, !tbaa !5
  %362 = load i8, ptr %361, align 1, !tbaa !9, !range !27, !noundef !28
  %363 = trunc i8 %362 to i1
  br i1 %363, label %364, label %372

364:                                              ; preds = %360
  %365 = load ptr, ptr %47, align 8, !tbaa !5
  store i32 0, ptr %365, align 4, !tbaa !23
  %366 = load ptr, ptr %48, align 8, !tbaa !5
  store i32 0, ptr %366, align 4, !tbaa !23
  %367 = load ptr, ptr %49, align 8, !tbaa !5
  store double 0.000000e+00, ptr %367, align 8, !tbaa !21
  %368 = load ptr, ptr %50, align 8, !tbaa !5
  store double 0.000000e+00, ptr %368, align 8, !tbaa !21
  %369 = load ptr, ptr %51, align 8, !tbaa !5
  store i32 0, ptr %369, align 4, !tbaa !23
  %370 = load ptr, ptr %52, align 8, !tbaa !5
  store double 0.000000e+00, ptr %370, align 8, !tbaa !21
  %371 = load ptr, ptr %53, align 8, !tbaa !5
  store double 0.000000e+00, ptr %371, align 8, !tbaa !21
  br label %380

372:                                              ; preds = %360
  %373 = load ptr, ptr %47, align 8, !tbaa !5
  store i32 -1, ptr %373, align 4, !tbaa !23
  %374 = load ptr, ptr %48, align 8, !tbaa !5
  store i32 -1, ptr %374, align 4, !tbaa !23
  %375 = load ptr, ptr %49, align 8, !tbaa !5
  store double 0x7FF0000000000000, ptr %375, align 8, !tbaa !21
  %376 = load ptr, ptr %50, align 8, !tbaa !5
  store double 0x7FF0000000000000, ptr %376, align 8, !tbaa !21
  %377 = load ptr, ptr %51, align 8, !tbaa !5
  store i32 -1, ptr %377, align 4, !tbaa !23
  %378 = load ptr, ptr %52, align 8, !tbaa !5
  store double 0x7FF0000000000000, ptr %378, align 8, !tbaa !21
  %379 = load ptr, ptr %53, align 8, !tbaa !5
  store double 0x7FF0000000000000, ptr %379, align 8, !tbaa !21
  br label %380

380:                                              ; preds = %372, %364
  %381 = load ptr, ptr %31, align 8, !tbaa !5
  %382 = load i8, ptr %381, align 1, !tbaa !9, !range !27, !noundef !28
  %383 = trunc i8 %382 to i1
  br i1 %383, label %385, label %384

384:                                              ; preds = %380
  store i32 1, ptr %54, align 4
  br label %1331

385:                                              ; preds = %380
  call void @llvm.lifetime.start.p0(i64 24, ptr %55) #7
  call void @_ZNSt6vectorIdSaIdEEC2Ev(ptr noundef nonnull align 8 dereferenceable(24) %55) #7
  call void @llvm.lifetime.start.p0(i64 24, ptr %56) #7
  call void @_ZNSt6vectorIdSaIdEEC2Ev(ptr noundef nonnull align 8 dereferenceable(24) %56) #7
  call void @llvm.lifetime.start.p0(i64 24, ptr %57) #7
  call void @_ZNSt6vectorIdSaIdEEC2Ev(ptr noundef nonnull align 8 dereferenceable(24) %57) #7
  call void @llvm.lifetime.start.p0(i64 24, ptr %58) #7
  call void @_ZNSt6vectorIdSaIdEEC2Ev(ptr noundef nonnull align 8 dereferenceable(24) %58) #7
  %386 = load i8, ptr %16, align 1, !tbaa !9, !range !27, !noundef !28
  %387 = trunc i8 %386 to i1
  br i1 %387, label %388, label %426

388:                                              ; preds = %385
  %389 = load ptr, ptr %10, align 8, !tbaa !5
  %390 = getelementptr inbounds %class.HighsLp, ptr %389, i32 0, i32 1
  %391 = load i32, ptr %390, align 4, !tbaa !58
  %392 = sext i32 %391 to i64
  call void @llvm.lifetime.start.p0(i64 8, ptr %59) #7
  store double 0.000000e+00, ptr %59, align 8, !tbaa !21
  invoke void @_ZNSt6vectorIdSaIdEE6assignEmRKd(ptr noundef nonnull align 8 dereferenceable(24) %55, i64 noundef %392, ptr noundef nonnull align 8 dereferenceable(8) %59)
          to label %393 unwind label %413

393:                                              ; preds = %388
  call void @llvm.lifetime.end.p0(i64 8, ptr %59) #7
  %394 = load ptr, ptr %10, align 8, !tbaa !5
  %395 = getelementptr inbounds %class.HighsLp, ptr %394, i32 0, i32 1
  %396 = load i32, ptr %395, align 4, !tbaa !58
  %397 = sext i32 %396 to i64
  call void @llvm.lifetime.start.p0(i64 8, ptr %62) #7
  store double 0.000000e+00, ptr %62, align 8, !tbaa !21
  invoke void @_ZNSt6vectorIdSaIdEE6assignEmRKd(ptr noundef nonnull align 8 dereferenceable(24) %56, i64 noundef %397, ptr noundef nonnull align 8 dereferenceable(8) %62)
          to label %398 unwind label %417

398:                                              ; preds = %393
  call void @llvm.lifetime.end.p0(i64 8, ptr %62) #7
  %399 = load ptr, ptr %32, align 8, !tbaa !5
  %400 = load i8, ptr %399, align 1, !tbaa !9, !range !27, !noundef !28
  %401 = trunc i8 %400 to i1
  br i1 %401, label %402, label %425

402:                                              ; preds = %398
  %403 = load ptr, ptr %10, align 8, !tbaa !5
  %404 = getelementptr inbounds %class.HighsLp, ptr %403, i32 0, i32 0
  %405 = load i32, ptr %404, align 8, !tbaa !29
  %406 = sext i32 %405 to i64
  invoke void @_ZNSt6vectorIdSaIdEE6resizeEm(ptr noundef nonnull align 8 dereferenceable(24) %57, i64 noundef %406)
          to label %407 unwind label %421

407:                                              ; preds = %402
  %408 = load ptr, ptr %10, align 8, !tbaa !5
  %409 = getelementptr inbounds %class.HighsLp, ptr %408, i32 0, i32 0
  %410 = load i32, ptr %409, align 8, !tbaa !29
  %411 = sext i32 %410 to i64
  invoke void @_ZNSt6vectorIdSaIdEE6resizeEm(ptr noundef nonnull align 8 dereferenceable(24) %58, i64 noundef %411)
          to label %412 unwind label %421

412:                                              ; preds = %407
  br label %425

413:                                              ; preds = %388
  %414 = landingpad { ptr, i32 }
          cleanup
  %415 = extractvalue { ptr, i32 } %414, 0
  store ptr %415, ptr %60, align 8
  %416 = extractvalue { ptr, i32 } %414, 1
  store i32 %416, ptr %61, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %59) #7
  br label %1335

417:                                              ; preds = %393
  %418 = landingpad { ptr, i32 }
          cleanup
  %419 = extractvalue { ptr, i32 } %418, 0
  store ptr %419, ptr %60, align 8
  %420 = extractvalue { ptr, i32 } %418, 1
  store i32 %420, ptr %61, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %62) #7
  br label %1335

421:                                              ; preds = %407, %402
  %422 = landingpad { ptr, i32 }
          cleanup
  %423 = extractvalue { ptr, i32 } %422, 0
  store ptr %423, ptr %60, align 8
  %424 = extractvalue { ptr, i32 } %422, 1
  store i32 %424, ptr %61, align 4
  br label %1335

425:                                              ; preds = %412, %398
  br label %426

426:                                              ; preds = %425, %385
  call void @llvm.lifetime.start.p0(i64 1, ptr %63) #7
  store i8 4, ptr %63, align 1, !tbaa !59
  call void @llvm.lifetime.start.p0(i64 8, ptr %64) #7
  %427 = load ptr, ptr %33, align 8, !tbaa !5
  %428 = load i8, ptr %427, align 1, !tbaa !9, !range !27, !noundef !28
  %429 = trunc i8 %428 to i1
  br i1 %429, label %430, label %431

430:                                              ; preds = %426
  br label %432

431:                                              ; preds = %426
  br label %432

432:                                              ; preds = %431, %430
  %433 = phi ptr [ %63, %430 ], [ null, %431 ]
  store ptr %433, ptr %64, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %65) #7
  call void @llvm.lifetime.start.p0(i64 8, ptr %66) #7
  call void @llvm.lifetime.start.p0(i64 8, ptr %67) #7
  call void @llvm.lifetime.start.p0(i64 8, ptr %68) #7
  call void @llvm.lifetime.start.p0(i64 8, ptr %69) #7
  call void @llvm.lifetime.start.p0(i64 8, ptr %70) #7
  call void @llvm.lifetime.start.p0(i64 8, ptr %71) #7
  call void @llvm.lifetime.start.p0(i64 8, ptr %72) #7
  store double 0.000000e+00, ptr %72, align 8, !tbaa !21
  call void @llvm.lifetime.start.p0(i64 1, ptr %73) #7
  store i8 0, ptr %73, align 1, !tbaa !61
  call void @llvm.lifetime.start.p0(i64 4, ptr %74) #7
  store i32 0, ptr %74, align 4, !tbaa !23
  br label %434

434:                                              ; preds = %863, %432
  %435 = load i32, ptr %74, align 4, !tbaa !23
  %436 = load ptr, ptr %10, align 8, !tbaa !5
  %437 = getelementptr inbounds %class.HighsLp, ptr %436, i32 0, i32 0
  %438 = load i32, ptr %437, align 8, !tbaa !29
  %439 = load ptr, ptr %10, align 8, !tbaa !5
  %440 = getelementptr inbounds %class.HighsLp, ptr %439, i32 0, i32 1
  %441 = load i32, ptr %440, align 4, !tbaa !58
  %442 = add nsw i32 %438, %441
  %443 = icmp slt i32 %435, %442
  br i1 %443, label %445, label %444

444:                                              ; preds = %434
  store i32 2, ptr %54, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %74) #7
  br label %867

445:                                              ; preds = %434
  %446 = load i32, ptr %74, align 4, !tbaa !23
  %447 = load ptr, ptr %10, align 8, !tbaa !5
  %448 = getelementptr inbounds %class.HighsLp, ptr %447, i32 0, i32 0
  %449 = load i32, ptr %448, align 8, !tbaa !29
  %450 = icmp slt i32 %446, %449
  br i1 %450, label %451, label %503

451:                                              ; preds = %445
  call void @llvm.lifetime.start.p0(i64 4, ptr %75) #7
  %452 = load i32, ptr %74, align 4, !tbaa !23
  store i32 %452, ptr %75, align 4, !tbaa !23
  %453 = load ptr, ptr %10, align 8, !tbaa !5
  %454 = getelementptr inbounds %class.HighsLp, ptr %453, i32 0, i32 3
  %455 = load i32, ptr %75, align 4, !tbaa !23
  %456 = sext i32 %455 to i64
  %457 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNKSt6vectorIdSaIdEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %454, i64 noundef %456) #7
  %458 = load double, ptr %457, align 8, !tbaa !21
  store double %458, ptr %69, align 8, !tbaa !21
  %459 = load ptr, ptr %10, align 8, !tbaa !5
  %460 = getelementptr inbounds %class.HighsLp, ptr %459, i32 0, i32 4
  %461 = load i32, ptr %75, align 4, !tbaa !23
  %462 = sext i32 %461 to i64
  %463 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNKSt6vectorIdSaIdEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %460, i64 noundef %462) #7
  %464 = load double, ptr %463, align 8, !tbaa !21
  store double %464, ptr %70, align 8, !tbaa !21
  %465 = load ptr, ptr %12, align 8, !tbaa !5
  %466 = getelementptr inbounds %struct.HighsSolution, ptr %465, i32 0, i32 2
  %467 = load i32, ptr %75, align 4, !tbaa !23
  %468 = sext i32 %467 to i64
  %469 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNKSt6vectorIdSaIdEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %466, i64 noundef %468) #7
  %470 = load double, ptr %469, align 8, !tbaa !21
  store double %470, ptr %71, align 8, !tbaa !21
  %471 = load ptr, ptr %32, align 8, !tbaa !5
  %472 = load i8, ptr %471, align 1, !tbaa !9, !range !27, !noundef !28
  %473 = trunc i8 %472 to i1
  br i1 %473, label %474, label %481

474:                                              ; preds = %451
  %475 = load ptr, ptr %12, align 8, !tbaa !5
  %476 = getelementptr inbounds %struct.HighsSolution, ptr %475, i32 0, i32 3
  %477 = load i32, ptr %75, align 4, !tbaa !23
  %478 = sext i32 %477 to i64
  %479 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNKSt6vectorIdSaIdEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %476, i64 noundef %478) #7
  %480 = load double, ptr %479, align 8, !tbaa !21
  store double %480, ptr %72, align 8, !tbaa !21
  br label %481

481:                                              ; preds = %474, %451
  %482 = load ptr, ptr %33, align 8, !tbaa !5
  %483 = load i8, ptr %482, align 1, !tbaa !9, !range !27, !noundef !28
  %484 = trunc i8 %483 to i1
  br i1 %484, label %485, label %492

485:                                              ; preds = %481
  %486 = load ptr, ptr %13, align 8, !tbaa !5
  %487 = getelementptr inbounds %struct.HighsBasis, ptr %486, i32 0, i32 7
  %488 = load i32, ptr %75, align 4, !tbaa !23
  %489 = sext i32 %488 to i64
  %490 = call noundef nonnull align 1 dereferenceable(1) ptr @_ZNKSt6vectorI16HighsBasisStatusSaIS0_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %487, i64 noundef %489) #7
  %491 = load i8, ptr %490, align 1, !tbaa !59
  store i8 %491, ptr %63, align 1, !tbaa !59
  br label %492

492:                                              ; preds = %485, %481
  %493 = load i8, ptr %34, align 1, !tbaa !9, !range !27, !noundef !28
  %494 = trunc i8 %493 to i1
  br i1 %494, label %495, label %502

495:                                              ; preds = %492
  %496 = load ptr, ptr %10, align 8, !tbaa !5
  %497 = getelementptr inbounds %class.HighsLp, ptr %496, i32 0, i32 16
  %498 = load i32, ptr %75, align 4, !tbaa !23
  %499 = sext i32 %498 to i64
  %500 = call noundef nonnull align 1 dereferenceable(1) ptr @_ZNKSt6vectorI12HighsVarTypeSaIS0_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %497, i64 noundef %499) #7
  %501 = load i8, ptr %500, align 1, !tbaa !61
  store i8 %501, ptr %73, align 1, !tbaa !61
  br label %502

502:                                              ; preds = %495, %492
  call void @llvm.lifetime.end.p0(i64 4, ptr %75) #7
  br label %549

503:                                              ; preds = %445
  call void @llvm.lifetime.start.p0(i64 4, ptr %76) #7
  %504 = load i32, ptr %74, align 4, !tbaa !23
  %505 = load ptr, ptr %10, align 8, !tbaa !5
  %506 = getelementptr inbounds %class.HighsLp, ptr %505, i32 0, i32 0
  %507 = load i32, ptr %506, align 8, !tbaa !29
  %508 = sub nsw i32 %504, %507
  store i32 %508, ptr %76, align 4, !tbaa !23
  %509 = load ptr, ptr %10, align 8, !tbaa !5
  %510 = getelementptr inbounds %class.HighsLp, ptr %509, i32 0, i32 5
  %511 = load i32, ptr %76, align 4, !tbaa !23
  %512 = sext i32 %511 to i64
  %513 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNKSt6vectorIdSaIdEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %510, i64 noundef %512) #7
  %514 = load double, ptr %513, align 8, !tbaa !21
  store double %514, ptr %69, align 8, !tbaa !21
  %515 = load ptr, ptr %10, align 8, !tbaa !5
  %516 = getelementptr inbounds %class.HighsLp, ptr %515, i32 0, i32 6
  %517 = load i32, ptr %76, align 4, !tbaa !23
  %518 = sext i32 %517 to i64
  %519 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNKSt6vectorIdSaIdEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %516, i64 noundef %518) #7
  %520 = load double, ptr %519, align 8, !tbaa !21
  store double %520, ptr %70, align 8, !tbaa !21
  %521 = load ptr, ptr %12, align 8, !tbaa !5
  %522 = getelementptr inbounds %struct.HighsSolution, ptr %521, i32 0, i32 4
  %523 = load i32, ptr %76, align 4, !tbaa !23
  %524 = sext i32 %523 to i64
  %525 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNKSt6vectorIdSaIdEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %522, i64 noundef %524) #7
  %526 = load double, ptr %525, align 8, !tbaa !21
  store double %526, ptr %71, align 8, !tbaa !21
  %527 = load ptr, ptr %32, align 8, !tbaa !5
  %528 = load i8, ptr %527, align 1, !tbaa !9, !range !27, !noundef !28
  %529 = trunc i8 %528 to i1
  br i1 %529, label %530, label %537

530:                                              ; preds = %503
  %531 = load ptr, ptr %12, align 8, !tbaa !5
  %532 = getelementptr inbounds %struct.HighsSolution, ptr %531, i32 0, i32 5
  %533 = load i32, ptr %76, align 4, !tbaa !23
  %534 = sext i32 %533 to i64
  %535 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNKSt6vectorIdSaIdEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %532, i64 noundef %534) #7
  %536 = load double, ptr %535, align 8, !tbaa !21
  store double %536, ptr %72, align 8, !tbaa !21
  br label %537

537:                                              ; preds = %530, %503
  %538 = load ptr, ptr %33, align 8, !tbaa !5
  %539 = load i8, ptr %538, align 1, !tbaa !9, !range !27, !noundef !28
  %540 = trunc i8 %539 to i1
  br i1 %540, label %541, label %548

541:                                              ; preds = %537
  %542 = load ptr, ptr %13, align 8, !tbaa !5
  %543 = getelementptr inbounds %struct.HighsBasis, ptr %542, i32 0, i32 8
  %544 = load i32, ptr %76, align 4, !tbaa !23
  %545 = sext i32 %544 to i64
  %546 = call noundef nonnull align 1 dereferenceable(1) ptr @_ZNKSt6vectorI16HighsBasisStatusSaIS0_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %543, i64 noundef %545) #7
  %547 = load i8, ptr %546, align 1, !tbaa !59
  store i8 %547, ptr %63, align 1, !tbaa !59
  br label %548

548:                                              ; preds = %541, %537
  store i8 0, ptr %73, align 1, !tbaa !61
  call void @llvm.lifetime.end.p0(i64 4, ptr %76) #7
  br label %549

549:                                              ; preds = %548, %502
  %550 = load ptr, ptr %10, align 8, !tbaa !5
  %551 = getelementptr inbounds %class.HighsLp, ptr %550, i32 0, i32 8
  %552 = load i32, ptr %551, align 8, !tbaa !63
  %553 = sitofp i32 %552 to double
  %554 = load double, ptr %72, align 8, !tbaa !21
  %555 = fmul double %554, %553
  store double %555, ptr %72, align 8, !tbaa !21
  call void @llvm.lifetime.start.p0(i64 1, ptr %77) #7
  %556 = load double, ptr %17, align 8, !tbaa !21
  %557 = load double, ptr %18, align 8, !tbaa !21
  %558 = load double, ptr %69, align 8, !tbaa !21
  %559 = load double, ptr %70, align 8, !tbaa !21
  %560 = load double, ptr %71, align 8, !tbaa !21
  %561 = load double, ptr %72, align 8, !tbaa !21
  %562 = load ptr, ptr %64, align 8, !tbaa !5
  %563 = load i8, ptr %73, align 1, !tbaa !61
  %564 = invoke noundef zeroext i1 @_Z22getVariableKktFailuresddddddPK16HighsBasisStatus12HighsVarTypeRdS3_S3_S3_(double noundef %556, double noundef %557, double noundef %558, double noundef %559, double noundef %560, double noundef %561, ptr noundef %562, i8 noundef zeroext %563, ptr noundef nonnull align 8 dereferenceable(8) %65, ptr noundef nonnull align 8 dereferenceable(8) %66, ptr noundef nonnull align 8 dereferenceable(8) %67, ptr noundef nonnull align 8 dereferenceable(8) %68)
          to label %565 unwind label %602

565:                                              ; preds = %549
  %566 = zext i1 %564 to i8
  store i8 %566, ptr %77, align 1, !tbaa !9
  %567 = load i8, ptr %77, align 1, !tbaa !9, !range !27, !noundef !28
  %568 = trunc i8 %567 to i1
  br i1 %568, label %606, label %569

569:                                              ; preds = %565
  %570 = load ptr, ptr %9, align 8, !tbaa !5
  %571 = getelementptr inbounds %struct.HighsOptionsStruct, ptr %570, i32 0, i32 130
  %572 = load i32, ptr %74, align 4, !tbaa !23
  %573 = load ptr, ptr %10, align 8, !tbaa !5
  %574 = getelementptr inbounds %class.HighsLp, ptr %573, i32 0, i32 0
  %575 = load i32, ptr %574, align 8, !tbaa !29
  %576 = icmp slt i32 %572, %575
  br i1 %576, label %577, label %578

577:                                              ; preds = %569
  br label %579

578:                                              ; preds = %569
  br label %579

579:                                              ; preds = %578, %577
  %580 = phi ptr [ @.str.59, %577 ], [ @.str.60, %578 ]
  %581 = getelementptr inbounds [7 x i8], ptr %580, i64 0, i64 0
  %582 = load i32, ptr %74, align 4, !tbaa !23
  %583 = load ptr, ptr %10, align 8, !tbaa !5
  %584 = getelementptr inbounds %class.HighsLp, ptr %583, i32 0, i32 0
  %585 = load i32, ptr %584, align 8, !tbaa !29
  %586 = icmp slt i32 %582, %585
  br i1 %586, label %587, label %589

587:                                              ; preds = %579
  %588 = load i32, ptr %74, align 4, !tbaa !23
  br label %595

589:                                              ; preds = %579
  %590 = load i32, ptr %74, align 4, !tbaa !23
  %591 = load ptr, ptr %10, align 8, !tbaa !5
  %592 = getelementptr inbounds %class.HighsLp, ptr %591, i32 0, i32 0
  %593 = load i32, ptr %592, align 8, !tbaa !29
  %594 = sub nsw i32 %590, %593
  br label %595

595:                                              ; preds = %589, %587
  %596 = phi i32 [ %588, %587 ], [ %594, %589 ]
  %597 = load double, ptr %69, align 8, !tbaa !21
  %598 = load double, ptr %71, align 8, !tbaa !21
  %599 = load double, ptr %70, align 8, !tbaa !21
  %600 = load double, ptr %68, align 8, !tbaa !21
  invoke void (ptr, i32, ptr, ...) @_Z12highsLogUserRK15HighsLogOptions12HighsLogTypePKcz(ptr noundef nonnull align 8 dereferenceable(89) %571, i32 noundef 5, ptr noundef @.str.58, ptr noundef %581, i32 noundef %596, double noundef %597, double noundef %598, double noundef %599, double noundef %600)
          to label %601 unwind label %602

601:                                              ; preds = %595
  br label %606

602:                                              ; preds = %595, %549
  %603 = landingpad { ptr, i32 }
          cleanup
  %604 = extractvalue { ptr, i32 } %603, 0
  store ptr %604, ptr %60, align 8
  %605 = extractvalue { ptr, i32 } %603, 1
  store i32 %605, ptr %61, align 4
  br label %866

606:                                              ; preds = %601, %565
  %607 = load i8, ptr %77, align 1, !tbaa !9, !range !27, !noundef !28
  %608 = trunc i8 %607 to i1
  br i1 %608, label %609, label %610

609:                                              ; preds = %606
  br label %612

610:                                              ; preds = %606
  call void @__assert_fail(ptr noundef @.str.61, ptr noundef @.str.52, i32 noundef 288, ptr noundef @__PRETTY_FUNCTION__._Z14getKktFailuresRK12HighsOptionsRK7HighsLpRKSt6vectorIdSaIdEERK13HighsSolutionRK10HighsBasisR9HighsInfoR21HighsPrimalDualErrorsb) #8
  unreachable

611:                                              ; No predecessors!
  br label %612

612:                                              ; preds = %611, %609
  %613 = load double, ptr %65, align 8, !tbaa !21
  %614 = load double, ptr %17, align 8, !tbaa !21
  %615 = fcmp ogt double %613, %614
  br i1 %615, label %616, label %620

616:                                              ; preds = %612
  %617 = load ptr, ptr %19, align 8, !tbaa !5
  %618 = load i32, ptr %617, align 4, !tbaa !23
  %619 = add nsw i32 %618, 1
  store i32 %619, ptr %617, align 4, !tbaa !23
  br label %620

620:                                              ; preds = %616, %612
  %621 = load ptr, ptr %21, align 8, !tbaa !5
  %622 = load double, ptr %621, align 8, !tbaa !21
  %623 = load double, ptr %65, align 8, !tbaa !21
  %624 = fcmp olt double %622, %623
  br i1 %624, label %625, label %630

625:                                              ; preds = %620
  %626 = load i32, ptr %74, align 4, !tbaa !23
  %627 = load ptr, ptr %20, align 8, !tbaa !5
  store i32 %626, ptr %627, align 4, !tbaa !23
  %628 = load double, ptr %65, align 8, !tbaa !21
  %629 = load ptr, ptr %21, align 8, !tbaa !5
  store double %628, ptr %629, align 8, !tbaa !21
  br label %630

630:                                              ; preds = %625, %620
  %631 = load ptr, ptr %23, align 8, !tbaa !5
  %632 = load double, ptr %631, align 8, !tbaa !21
  %633 = load double, ptr %66, align 8, !tbaa !21
  %634 = fcmp olt double %632, %633
  br i1 %634, label %635, label %640

635:                                              ; preds = %630
  %636 = load i32, ptr %74, align 4, !tbaa !23
  %637 = load ptr, ptr %22, align 8, !tbaa !5
  store i32 %636, ptr %637, align 4, !tbaa !23
  %638 = load double, ptr %66, align 8, !tbaa !21
  %639 = load ptr, ptr %23, align 8, !tbaa !5
  store double %638, ptr %639, align 8, !tbaa !21
  br label %640

640:                                              ; preds = %635, %630
  %641 = load double, ptr %65, align 8, !tbaa !21
  %642 = load ptr, ptr %24, align 8, !tbaa !5
  %643 = load double, ptr %642, align 8, !tbaa !21
  %644 = fadd double %643, %641
  store double %644, ptr %642, align 8, !tbaa !21
  %645 = load ptr, ptr %32, align 8, !tbaa !5
  %646 = load i8, ptr %645, align 1, !tbaa !9, !range !27, !noundef !28
  %647 = trunc i8 %646 to i1
  br i1 %647, label %648, label %671

648:                                              ; preds = %640
  %649 = load double, ptr %67, align 8, !tbaa !21
  %650 = load double, ptr %18, align 8, !tbaa !21
  %651 = fcmp ogt double %649, %650
  br i1 %651, label %652, label %656

652:                                              ; preds = %648
  %653 = load ptr, ptr %25, align 8, !tbaa !5
  %654 = load i32, ptr %653, align 4, !tbaa !23
  %655 = add nsw i32 %654, 1
  store i32 %655, ptr %653, align 4, !tbaa !23
  br label %656

656:                                              ; preds = %652, %648
  %657 = load ptr, ptr %27, align 8, !tbaa !5
  %658 = load double, ptr %657, align 8, !tbaa !21
  %659 = load double, ptr %67, align 8, !tbaa !21
  %660 = fcmp olt double %658, %659
  br i1 %660, label %661, label %666

661:                                              ; preds = %656
  %662 = load double, ptr %67, align 8, !tbaa !21
  %663 = load ptr, ptr %27, align 8, !tbaa !5
  store double %662, ptr %663, align 8, !tbaa !21
  %664 = load i32, ptr %74, align 4, !tbaa !23
  %665 = load ptr, ptr %26, align 8, !tbaa !5
  store i32 %664, ptr %665, align 4, !tbaa !23
  br label %666

666:                                              ; preds = %661, %656
  %667 = load double, ptr %67, align 8, !tbaa !21
  %668 = load ptr, ptr %28, align 8, !tbaa !5
  %669 = load double, ptr %668, align 8, !tbaa !21
  %670 = fadd double %669, %667
  store double %670, ptr %668, align 8, !tbaa !21
  br label %671

671:                                              ; preds = %666, %640
  %672 = load ptr, ptr %33, align 8, !tbaa !5
  %673 = load i8, ptr %672, align 1, !tbaa !9, !range !27, !noundef !28
  %674 = trunc i8 %673 to i1
  br i1 %674, label %675, label %731

675:                                              ; preds = %671
  %676 = load i8, ptr %63, align 1, !tbaa !59
  %677 = icmp eq i8 %676, 1
  br i1 %677, label %678, label %708

678:                                              ; preds = %675
  call void @llvm.lifetime.start.p0(i64 8, ptr %78) #7
  %679 = load double, ptr %67, align 8, !tbaa !21
  store double %679, ptr %78, align 8, !tbaa !21
  %680 = load double, ptr %78, align 8, !tbaa !21
  %681 = fcmp ogt double %680, 0.000000e+00
  br i1 %681, label %682, label %707

682:                                              ; preds = %678
  %683 = load ptr, ptr %47, align 8, !tbaa !5
  %684 = load i32, ptr %683, align 4, !tbaa !23
  %685 = add nsw i32 %684, 1
  store i32 %685, ptr %683, align 4, !tbaa !23
  %686 = load double, ptr %78, align 8, !tbaa !21
  %687 = load double, ptr %18, align 8, !tbaa !21
  %688 = fcmp ogt double %686, %687
  br i1 %688, label %689, label %693

689:                                              ; preds = %682
  %690 = load ptr, ptr %48, align 8, !tbaa !5
  %691 = load i32, ptr %690, align 4, !tbaa !23
  %692 = add nsw i32 %691, 1
  store i32 %692, ptr %690, align 4, !tbaa !23
  br label %693

693:                                              ; preds = %689, %682
  %694 = load ptr, ptr %49, align 8, !tbaa !5
  %695 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZSt3maxIdERKT_S2_S2_(ptr noundef nonnull align 8 dereferenceable(8) %78, ptr noundef nonnull align 8 dereferenceable(8) %694)
          to label %696 unwind label %703

696:                                              ; preds = %693
  %697 = load double, ptr %695, align 8, !tbaa !21
  %698 = load ptr, ptr %49, align 8, !tbaa !5
  store double %697, ptr %698, align 8, !tbaa !21
  %699 = load double, ptr %78, align 8, !tbaa !21
  %700 = load ptr, ptr %50, align 8, !tbaa !5
  %701 = load double, ptr %700, align 8, !tbaa !21
  %702 = fadd double %701, %699
  store double %702, ptr %700, align 8, !tbaa !21
  br label %707

703:                                              ; preds = %693
  %704 = landingpad { ptr, i32 }
          cleanup
  %705 = extractvalue { ptr, i32 } %704, 0
  store ptr %705, ptr %60, align 8
  %706 = extractvalue { ptr, i32 } %704, 1
  store i32 %706, ptr %61, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %78) #7
  br label %866

707:                                              ; preds = %696, %678
  call void @llvm.lifetime.end.p0(i64 8, ptr %78) #7
  br label %730

708:                                              ; preds = %675
  call void @llvm.lifetime.start.p0(i64 8, ptr %79) #7
  %709 = load double, ptr %68, align 8, !tbaa !21
  store double %709, ptr %79, align 8, !tbaa !21
  %710 = load double, ptr %79, align 8, !tbaa !21
  %711 = fcmp ogt double %710, 0.000000e+00
  br i1 %711, label %712, label %716

712:                                              ; preds = %708
  %713 = load ptr, ptr %51, align 8, !tbaa !5
  %714 = load i32, ptr %713, align 4, !tbaa !23
  %715 = add nsw i32 %714, 1
  store i32 %715, ptr %713, align 4, !tbaa !23
  br label %716

716:                                              ; preds = %712, %708
  %717 = load ptr, ptr %52, align 8, !tbaa !5
  %718 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZSt3maxIdERKT_S2_S2_(ptr noundef nonnull align 8 dereferenceable(8) %79, ptr noundef nonnull align 8 dereferenceable(8) %717)
          to label %719 unwind label %726

719:                                              ; preds = %716
  %720 = load double, ptr %718, align 8, !tbaa !21
  %721 = load ptr, ptr %52, align 8, !tbaa !5
  store double %720, ptr %721, align 8, !tbaa !21
  %722 = load double, ptr %79, align 8, !tbaa !21
  %723 = load ptr, ptr %53, align 8, !tbaa !5
  %724 = load double, ptr %723, align 8, !tbaa !21
  %725 = fadd double %724, %722
  store double %725, ptr %723, align 8, !tbaa !21
  call void @llvm.lifetime.end.p0(i64 8, ptr %79) #7
  br label %730

726:                                              ; preds = %716
  %727 = landingpad { ptr, i32 }
          cleanup
  %728 = extractvalue { ptr, i32 } %727, 0
  store ptr %728, ptr %60, align 8
  %729 = extractvalue { ptr, i32 } %727, 1
  store i32 %729, ptr %61, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %79) #7
  br label %866

730:                                              ; preds = %719, %707
  br label %731

731:                                              ; preds = %730, %671
  %732 = load i32, ptr %74, align 4, !tbaa !23
  %733 = load ptr, ptr %10, align 8, !tbaa !5
  %734 = getelementptr inbounds %class.HighsLp, ptr %733, i32 0, i32 0
  %735 = load i32, ptr %734, align 8, !tbaa !29
  %736 = icmp slt i32 %732, %735
  br i1 %736, label %737, label %862

737:                                              ; preds = %731
  %738 = load i8, ptr %16, align 1, !tbaa !9, !range !27, !noundef !28
  %739 = trunc i8 %738 to i1
  br i1 %739, label %740, label %862

740:                                              ; preds = %737
  call void @llvm.lifetime.start.p0(i64 4, ptr %80) #7
  %741 = load i32, ptr %74, align 4, !tbaa !23
  store i32 %741, ptr %80, align 4, !tbaa !23
  %742 = load ptr, ptr %32, align 8, !tbaa !5
  %743 = load i8, ptr %742, align 1, !tbaa !9, !range !27, !noundef !28
  %744 = trunc i8 %743 to i1
  br i1 %744, label %745, label %772

745:                                              ; preds = %740
  %746 = load ptr, ptr %11, align 8, !tbaa !5
  %747 = load i32, ptr %80, align 4, !tbaa !23
  %748 = sext i32 %747 to i64
  %749 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNKSt6vectorIdSaIdEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %746, i64 noundef %748) #7
  %750 = load double, ptr %749, align 8, !tbaa !21
  %751 = fcmp ogt double %750, 0.000000e+00
  br i1 %751, label %752, label %761

752:                                              ; preds = %745
  %753 = load ptr, ptr %11, align 8, !tbaa !5
  %754 = load i32, ptr %80, align 4, !tbaa !23
  %755 = sext i32 %754 to i64
  %756 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNKSt6vectorIdSaIdEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %753, i64 noundef %755) #7
  %757 = load double, ptr %756, align 8, !tbaa !21
  %758 = load i32, ptr %80, align 4, !tbaa !23
  %759 = sext i32 %758 to i64
  %760 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt6vectorIdSaIdEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %57, i64 noundef %759) #7
  store double %757, ptr %760, align 8, !tbaa !21
  br label %771

761:                                              ; preds = %745
  %762 = load ptr, ptr %11, align 8, !tbaa !5
  %763 = load i32, ptr %80, align 4, !tbaa !23
  %764 = sext i32 %763 to i64
  %765 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNKSt6vectorIdSaIdEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %762, i64 noundef %764) #7
  %766 = load double, ptr %765, align 8, !tbaa !21
  %767 = fneg double %766
  %768 = load i32, ptr %80, align 4, !tbaa !23
  %769 = sext i32 %768 to i64
  %770 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt6vectorIdSaIdEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %58, i64 noundef %769) #7
  store double %767, ptr %770, align 8, !tbaa !21
  br label %771

771:                                              ; preds = %761, %752
  br label %772

772:                                              ; preds = %771, %740
  call void @llvm.lifetime.start.p0(i64 4, ptr %81) #7
  %773 = load ptr, ptr %10, align 8, !tbaa !5
  %774 = getelementptr inbounds %class.HighsLp, ptr %773, i32 0, i32 7
  %775 = getelementptr inbounds %class.HighsSparseMatrix, ptr %774, i32 0, i32 3
  %776 = load i32, ptr %80, align 4, !tbaa !23
  %777 = sext i32 %776 to i64
  %778 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNKSt6vectorIiSaIiEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %775, i64 noundef %777) #7
  %779 = load i32, ptr %778, align 4, !tbaa !23
  store i32 %779, ptr %81, align 4, !tbaa !23
  br label %780

780:                                              ; preds = %858, %772
  %781 = load i32, ptr %81, align 4, !tbaa !23
  %782 = load ptr, ptr %10, align 8, !tbaa !5
  %783 = getelementptr inbounds %class.HighsLp, ptr %782, i32 0, i32 7
  %784 = getelementptr inbounds %class.HighsSparseMatrix, ptr %783, i32 0, i32 3
  %785 = load i32, ptr %80, align 4, !tbaa !23
  %786 = add nsw i32 %785, 1
  %787 = sext i32 %786 to i64
  %788 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNKSt6vectorIiSaIiEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %784, i64 noundef %787) #7
  %789 = load i32, ptr %788, align 4, !tbaa !23
  %790 = icmp slt i32 %781, %789
  br i1 %790, label %792, label %791

791:                                              ; preds = %780
  store i32 5, ptr %54, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %81) #7
  br label %861

792:                                              ; preds = %780
  call void @llvm.lifetime.start.p0(i64 4, ptr %82) #7
  %793 = load ptr, ptr %10, align 8, !tbaa !5
  %794 = getelementptr inbounds %class.HighsLp, ptr %793, i32 0, i32 7
  %795 = getelementptr inbounds %class.HighsSparseMatrix, ptr %794, i32 0, i32 5
  %796 = load i32, ptr %81, align 4, !tbaa !23
  %797 = sext i32 %796 to i64
  %798 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNKSt6vectorIiSaIiEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %795, i64 noundef %797) #7
  %799 = load i32, ptr %798, align 4, !tbaa !23
  store i32 %799, ptr %82, align 4, !tbaa !23
  call void @llvm.lifetime.start.p0(i64 8, ptr %83) #7
  %800 = load ptr, ptr %10, align 8, !tbaa !5
  %801 = getelementptr inbounds %class.HighsLp, ptr %800, i32 0, i32 7
  %802 = getelementptr inbounds %class.HighsSparseMatrix, ptr %801, i32 0, i32 6
  %803 = load i32, ptr %81, align 4, !tbaa !23
  %804 = sext i32 %803 to i64
  %805 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNKSt6vectorIdSaIdEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %802, i64 noundef %804) #7
  %806 = load double, ptr %805, align 8, !tbaa !21
  store double %806, ptr %83, align 8, !tbaa !21
  call void @llvm.lifetime.start.p0(i64 8, ptr %84) #7
  %807 = load double, ptr %71, align 8, !tbaa !21
  %808 = load double, ptr %83, align 8, !tbaa !21
  %809 = fmul double %807, %808
  store double %809, ptr %84, align 8, !tbaa !21
  %810 = load double, ptr %84, align 8, !tbaa !21
  %811 = fcmp ogt double %810, 0.000000e+00
  br i1 %811, label %812, label %819

812:                                              ; preds = %792
  %813 = load double, ptr %84, align 8, !tbaa !21
  %814 = load i32, ptr %82, align 4, !tbaa !23
  %815 = sext i32 %814 to i64
  %816 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt6vectorIdSaIdEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %55, i64 noundef %815) #7
  %817 = load double, ptr %816, align 8, !tbaa !21
  %818 = fadd double %817, %813
  store double %818, ptr %816, align 8, !tbaa !21
  br label %826

819:                                              ; preds = %792
  %820 = load double, ptr %84, align 8, !tbaa !21
  %821 = load i32, ptr %82, align 4, !tbaa !23
  %822 = sext i32 %821 to i64
  %823 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt6vectorIdSaIdEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %56, i64 noundef %822) #7
  %824 = load double, ptr %823, align 8, !tbaa !21
  %825 = fsub double %824, %820
  store double %825, ptr %823, align 8, !tbaa !21
  br label %826

826:                                              ; preds = %819, %812
  %827 = load ptr, ptr %32, align 8, !tbaa !5
  %828 = load i8, ptr %827, align 1, !tbaa !9, !range !27, !noundef !28
  %829 = trunc i8 %828 to i1
  br i1 %829, label %830, label %857

830:                                              ; preds = %826
  call void @llvm.lifetime.start.p0(i64 8, ptr %85) #7
  %831 = load ptr, ptr %12, align 8, !tbaa !5
  %832 = getelementptr inbounds %struct.HighsSolution, ptr %831, i32 0, i32 5
  %833 = load i32, ptr %82, align 4, !tbaa !23
  %834 = sext i32 %833 to i64
  %835 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNKSt6vectorIdSaIdEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %832, i64 noundef %834) #7
  %836 = load double, ptr %835, align 8, !tbaa !21
  %837 = fneg double %836
  %838 = load double, ptr %83, align 8, !tbaa !21
  %839 = fmul double %837, %838
  store double %839, ptr %85, align 8, !tbaa !21
  %840 = load double, ptr %85, align 8, !tbaa !21
  %841 = fcmp ogt double %840, 0.000000e+00
  br i1 %841, label %842, label %849

842:                                              ; preds = %830
  %843 = load double, ptr %85, align 8, !tbaa !21
  %844 = load i32, ptr %80, align 4, !tbaa !23
  %845 = sext i32 %844 to i64
  %846 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt6vectorIdSaIdEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %57, i64 noundef %845) #7
  %847 = load double, ptr %846, align 8, !tbaa !21
  %848 = fadd double %847, %843
  store double %848, ptr %846, align 8, !tbaa !21
  br label %856

849:                                              ; preds = %830
  %850 = load double, ptr %85, align 8, !tbaa !21
  %851 = load i32, ptr %80, align 4, !tbaa !23
  %852 = sext i32 %851 to i64
  %853 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt6vectorIdSaIdEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %58, i64 noundef %852) #7
  %854 = load double, ptr %853, align 8, !tbaa !21
  %855 = fsub double %854, %850
  store double %855, ptr %853, align 8, !tbaa !21
  br label %856

856:                                              ; preds = %849, %842
  call void @llvm.lifetime.end.p0(i64 8, ptr %85) #7
  br label %857

857:                                              ; preds = %856, %826
  call void @llvm.lifetime.end.p0(i64 8, ptr %84) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %83) #7
  call void @llvm.lifetime.end.p0(i64 4, ptr %82) #7
  br label %858

858:                                              ; preds = %857
  %859 = load i32, ptr %81, align 4, !tbaa !23
  %860 = add nsw i32 %859, 1
  store i32 %860, ptr %81, align 4, !tbaa !23
  br label %780, !llvm.loop !64

861:                                              ; preds = %791
  call void @llvm.lifetime.end.p0(i64 4, ptr %80) #7
  br label %862

862:                                              ; preds = %861, %737, %731
  call void @llvm.lifetime.end.p0(i64 1, ptr %77) #7
  br label %863

863:                                              ; preds = %862
  %864 = load i32, ptr %74, align 4, !tbaa !23
  %865 = add nsw i32 %864, 1
  store i32 %865, ptr %74, align 4, !tbaa !23
  br label %434, !llvm.loop !66

866:                                              ; preds = %726, %703, %602
  call void @llvm.lifetime.end.p0(i64 1, ptr %77) #7
  call void @llvm.lifetime.end.p0(i64 4, ptr %74) #7
  br label %1334

867:                                              ; preds = %444
  %868 = load ptr, ptr %32, align 8, !tbaa !5
  %869 = load i8, ptr %868, align 1, !tbaa !9, !range !27, !noundef !28
  %870 = trunc i8 %869 to i1
  br i1 %870, label %871, label %1050

871:                                              ; preds = %867
  %872 = load ptr, ptr %29, align 8, !tbaa !5
  store double 0.000000e+00, ptr %872, align 8, !tbaa !21
  %873 = load ptr, ptr %30, align 8, !tbaa !5
  store double 0.000000e+00, ptr %873, align 8, !tbaa !21
  call void @llvm.lifetime.start.p0(i64 8, ptr %86) #7
  store double 0.000000e+00, ptr %86, align 8, !tbaa !21
  call void @llvm.lifetime.start.p0(i64 4, ptr %87) #7
  store i32 0, ptr %87, align 4, !tbaa !23
  br label %874

874:                                              ; preds = %1010, %871
  %875 = load i32, ptr %87, align 4, !tbaa !23
  %876 = load ptr, ptr %10, align 8, !tbaa !5
  %877 = getelementptr inbounds %class.HighsLp, ptr %876, i32 0, i32 0
  %878 = load i32, ptr %877, align 8, !tbaa !29
  %879 = load ptr, ptr %10, align 8, !tbaa !5
  %880 = getelementptr inbounds %class.HighsLp, ptr %879, i32 0, i32 1
  %881 = load i32, ptr %880, align 4, !tbaa !58
  %882 = add nsw i32 %878, %881
  %883 = icmp slt i32 %875, %882
  br i1 %883, label %885, label %884

884:                                              ; preds = %874
  store i32 8, ptr %54, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %87) #7
  br label %1017

885:                                              ; preds = %874
  call void @llvm.lifetime.start.p0(i64 1, ptr %88) #7
  %886 = load i32, ptr %87, align 4, !tbaa !23
  %887 = load ptr, ptr %10, align 8, !tbaa !5
  %888 = getelementptr inbounds %class.HighsLp, ptr %887, i32 0, i32 0
  %889 = load i32, ptr %888, align 8, !tbaa !29
  %890 = icmp slt i32 %886, %889
  %891 = zext i1 %890 to i8
  store i8 %891, ptr %88, align 1, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 4, ptr %89) #7
  %892 = load i32, ptr %87, align 4, !tbaa !23
  %893 = load ptr, ptr %10, align 8, !tbaa !5
  %894 = getelementptr inbounds %class.HighsLp, ptr %893, i32 0, i32 0
  %895 = load i32, ptr %894, align 8, !tbaa !29
  %896 = sub nsw i32 %892, %895
  store i32 %896, ptr %89, align 4, !tbaa !23
  call void @llvm.lifetime.start.p0(i64 8, ptr %90) #7
  %897 = load i8, ptr %88, align 1, !tbaa !9, !range !27, !noundef !28
  %898 = trunc i8 %897 to i1
  br i1 %898, label %899, label %906

899:                                              ; preds = %885
  %900 = load ptr, ptr %12, align 8, !tbaa !5
  %901 = getelementptr inbounds %struct.HighsSolution, ptr %900, i32 0, i32 2
  %902 = load i32, ptr %87, align 4, !tbaa !23
  %903 = sext i32 %902 to i64
  %904 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNKSt6vectorIdSaIdEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %901, i64 noundef %903) #7
  %905 = load double, ptr %904, align 8, !tbaa !21
  br label %913

906:                                              ; preds = %885
  %907 = load ptr, ptr %12, align 8, !tbaa !5
  %908 = getelementptr inbounds %struct.HighsSolution, ptr %907, i32 0, i32 4
  %909 = load i32, ptr %89, align 4, !tbaa !23
  %910 = sext i32 %909 to i64
  %911 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNKSt6vectorIdSaIdEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %908, i64 noundef %910) #7
  %912 = load double, ptr %911, align 8, !tbaa !21
  br label %913

913:                                              ; preds = %906, %899
  %914 = phi double [ %905, %899 ], [ %912, %906 ]
  store double %914, ptr %90, align 8, !tbaa !21
  call void @llvm.lifetime.start.p0(i64 8, ptr %91) #7
  %915 = load i8, ptr %88, align 1, !tbaa !9, !range !27, !noundef !28
  %916 = trunc i8 %915 to i1
  br i1 %916, label %917, label %924

917:                                              ; preds = %913
  %918 = load ptr, ptr %12, align 8, !tbaa !5
  %919 = getelementptr inbounds %struct.HighsSolution, ptr %918, i32 0, i32 3
  %920 = load i32, ptr %87, align 4, !tbaa !23
  %921 = sext i32 %920 to i64
  %922 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNKSt6vectorIdSaIdEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %919, i64 noundef %921) #7
  %923 = load double, ptr %922, align 8, !tbaa !21
  br label %931

924:                                              ; preds = %913
  %925 = load ptr, ptr %12, align 8, !tbaa !5
  %926 = getelementptr inbounds %struct.HighsSolution, ptr %925, i32 0, i32 5
  %927 = load i32, ptr %89, align 4, !tbaa !23
  %928 = sext i32 %927 to i64
  %929 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNKSt6vectorIdSaIdEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %926, i64 noundef %928) #7
  %930 = load double, ptr %929, align 8, !tbaa !21
  br label %931

931:                                              ; preds = %924, %917
  %932 = phi double [ %923, %917 ], [ %930, %924 ]
  store double %932, ptr %91, align 8, !tbaa !21
  call void @llvm.lifetime.start.p0(i64 8, ptr %92) #7
  %933 = load i8, ptr %88, align 1, !tbaa !9, !range !27, !noundef !28
  %934 = trunc i8 %933 to i1
  br i1 %934, label %935, label %942

935:                                              ; preds = %931
  %936 = load ptr, ptr %10, align 8, !tbaa !5
  %937 = getelementptr inbounds %class.HighsLp, ptr %936, i32 0, i32 3
  %938 = load i32, ptr %87, align 4, !tbaa !23
  %939 = sext i32 %938 to i64
  %940 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNKSt6vectorIdSaIdEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %937, i64 noundef %939) #7
  %941 = load double, ptr %940, align 8, !tbaa !21
  br label %949

942:                                              ; preds = %931
  %943 = load ptr, ptr %10, align 8, !tbaa !5
  %944 = getelementptr inbounds %class.HighsLp, ptr %943, i32 0, i32 5
  %945 = load i32, ptr %89, align 4, !tbaa !23
  %946 = sext i32 %945 to i64
  %947 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNKSt6vectorIdSaIdEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %944, i64 noundef %946) #7
  %948 = load double, ptr %947, align 8, !tbaa !21
  br label %949

949:                                              ; preds = %942, %935
  %950 = phi double [ %941, %935 ], [ %948, %942 ]
  store double %950, ptr %92, align 8, !tbaa !21
  call void @llvm.lifetime.start.p0(i64 8, ptr %93) #7
  %951 = load i8, ptr %88, align 1, !tbaa !9, !range !27, !noundef !28
  %952 = trunc i8 %951 to i1
  br i1 %952, label %953, label %960

953:                                              ; preds = %949
  %954 = load ptr, ptr %10, align 8, !tbaa !5
  %955 = getelementptr inbounds %class.HighsLp, ptr %954, i32 0, i32 4
  %956 = load i32, ptr %87, align 4, !tbaa !23
  %957 = sext i32 %956 to i64
  %958 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNKSt6vectorIdSaIdEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %955, i64 noundef %957) #7
  %959 = load double, ptr %958, align 8, !tbaa !21
  br label %967

960:                                              ; preds = %949
  %961 = load ptr, ptr %10, align 8, !tbaa !5
  %962 = getelementptr inbounds %class.HighsLp, ptr %961, i32 0, i32 6
  %963 = load i32, ptr %89, align 4, !tbaa !23
  %964 = sext i32 %963 to i64
  %965 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNKSt6vectorIdSaIdEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %962, i64 noundef %964) #7
  %966 = load double, ptr %965, align 8, !tbaa !21
  br label %967

967:                                              ; preds = %960, %953
  %968 = phi double [ %959, %953 ], [ %966, %960 ]
  store double %968, ptr %93, align 8, !tbaa !21
  %969 = load double, ptr %92, align 8, !tbaa !21
  %970 = fcmp ole double %969, 0xFFF0000000000000
  br i1 %970, label %971, label %975

971:                                              ; preds = %967
  %972 = load double, ptr %93, align 8, !tbaa !21
  %973 = fcmp oge double %972, 0x7FF0000000000000
  br i1 %973, label %974, label %975

974:                                              ; preds = %971
  store double 1.000000e+00, ptr %86, align 8, !tbaa !21
  br label %995

975:                                              ; preds = %971, %967
  call void @llvm.lifetime.start.p0(i64 8, ptr %94) #7
  %976 = load double, ptr %92, align 8, !tbaa !21
  %977 = load double, ptr %93, align 8, !tbaa !21
  %978 = fadd double %976, %977
  %979 = fmul double %978, 5.000000e-01
  store double %979, ptr %94, align 8, !tbaa !21
  %980 = load double, ptr %90, align 8, !tbaa !21
  %981 = load double, ptr %94, align 8, !tbaa !21
  %982 = fcmp olt double %980, %981
  br i1 %982, label %983, label %988

983:                                              ; preds = %975
  %984 = load double, ptr %92, align 8, !tbaa !21
  %985 = load double, ptr %90, align 8, !tbaa !21
  %986 = fsub double %984, %985
  %987 = call double @llvm.fabs.f64(double %986)
  br label %993

988:                                              ; preds = %975
  %989 = load double, ptr %93, align 8, !tbaa !21
  %990 = load double, ptr %90, align 8, !tbaa !21
  %991 = fsub double %989, %990
  %992 = call double @llvm.fabs.f64(double %991)
  br label %993

993:                                              ; preds = %988, %983
  %994 = phi double [ %987, %983 ], [ %992, %988 ]
  store double %994, ptr %86, align 8, !tbaa !21
  call void @llvm.lifetime.end.p0(i64 8, ptr %94) #7
  br label %995

995:                                              ; preds = %993, %974
  call void @llvm.lifetime.start.p0(i64 8, ptr %95) #7
  %996 = load double, ptr %91, align 8, !tbaa !21
  %997 = call double @llvm.fabs.f64(double %996)
  store double %997, ptr %95, align 8, !tbaa !21
  call void @llvm.lifetime.start.p0(i64 8, ptr %96) #7
  %998 = load double, ptr %86, align 8, !tbaa !21
  %999 = load double, ptr %95, align 8, !tbaa !21
  %1000 = fmul double %998, %999
  store double %1000, ptr %96, align 8, !tbaa !21
  %1001 = load double, ptr %96, align 8, !tbaa !21
  %1002 = load ptr, ptr %30, align 8, !tbaa !5
  %1003 = load double, ptr %1002, align 8, !tbaa !21
  %1004 = fadd double %1003, %1001
  store double %1004, ptr %1002, align 8, !tbaa !21
  %1005 = load ptr, ptr %29, align 8, !tbaa !5
  %1006 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZSt3maxIdERKT_S2_S2_(ptr noundef nonnull align 8 dereferenceable(8) %96, ptr noundef nonnull align 8 dereferenceable(8) %1005)
          to label %1007 unwind label %1013

1007:                                             ; preds = %995
  %1008 = load double, ptr %1006, align 8, !tbaa !21
  %1009 = load ptr, ptr %29, align 8, !tbaa !5
  store double %1008, ptr %1009, align 8, !tbaa !21
  call void @llvm.lifetime.end.p0(i64 8, ptr %96) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %95) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %93) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %92) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %91) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %90) #7
  call void @llvm.lifetime.end.p0(i64 4, ptr %89) #7
  call void @llvm.lifetime.end.p0(i64 1, ptr %88) #7
  br label %1010

1010:                                             ; preds = %1007
  %1011 = load i32, ptr %87, align 4, !tbaa !23
  %1012 = add nsw i32 %1011, 1
  store i32 %1012, ptr %87, align 4, !tbaa !23
  br label %874, !llvm.loop !67

1013:                                             ; preds = %995
  %1014 = landingpad { ptr, i32 }
          cleanup
  %1015 = extractvalue { ptr, i32 } %1014, 0
  store ptr %1015, ptr %60, align 8
  %1016 = extractvalue { ptr, i32 } %1014, 1
  store i32 %1016, ptr %61, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %96) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %95) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %93) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %92) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %91) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %90) #7
  call void @llvm.lifetime.end.p0(i64 4, ptr %89) #7
  call void @llvm.lifetime.end.p0(i64 1, ptr %88) #7
  call void @llvm.lifetime.end.p0(i64 4, ptr %87) #7
  br label %1049

1017:                                             ; preds = %884
  call void @llvm.lifetime.start.p0(i64 8, ptr %97) #7
  call void @llvm.lifetime.start.p0(i64 8, ptr %98) #7
  call void @llvm.lifetime.start.p0(i64 1, ptr %99) #7
  %1018 = load ptr, ptr %10, align 8, !tbaa !5
  %1019 = load ptr, ptr %12, align 8, !tbaa !5
  %1020 = invoke noundef zeroext i1 @_Z28getComplementarityViolationsRK7HighsLpRK13HighsSolutionRdS5_(ptr noundef nonnull align 8 dereferenceable(920) %1018, ptr noundef nonnull align 8 dereferenceable(104) %1019, ptr noundef nonnull align 8 dereferenceable(8) %97, ptr noundef nonnull align 8 dereferenceable(8) %98)
          to label %1021 unwind label %1027

1021:                                             ; preds = %1017
  %1022 = zext i1 %1020 to i8
  store i8 %1022, ptr %99, align 1, !tbaa !9
  %1023 = load i8, ptr %99, align 1, !tbaa !9, !range !27, !noundef !28
  %1024 = trunc i8 %1023 to i1
  br i1 %1024, label %1025, label %1026

1025:                                             ; preds = %1021
  br label %1032

1026:                                             ; preds = %1021
  call void @__assert_fail(ptr noundef @.str.62, ptr noundef @.str.52, i32 noundef 398, ptr noundef @__PRETTY_FUNCTION__._Z14getKktFailuresRK12HighsOptionsRK7HighsLpRKSt6vectorIdSaIdEERK13HighsSolutionRK10HighsBasisR9HighsInfoR21HighsPrimalDualErrorsb) #8
  unreachable

1027:                                             ; preds = %1017
  %1028 = landingpad { ptr, i32 }
          cleanup
  %1029 = extractvalue { ptr, i32 } %1028, 0
  store ptr %1029, ptr %60, align 8
  %1030 = extractvalue { ptr, i32 } %1028, 1
  store i32 %1030, ptr %61, align 4
  call void @llvm.lifetime.end.p0(i64 1, ptr %99) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %98) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %97) #7
  br label %1049

1031:                                             ; No predecessors!
  br label %1032

1032:                                             ; preds = %1031, %1025
  %1033 = load double, ptr %97, align 8, !tbaa !21
  %1034 = load ptr, ptr %29, align 8, !tbaa !5
  %1035 = load double, ptr %1034, align 8, !tbaa !21
  %1036 = fcmp oeq double %1033, %1035
  br i1 %1036, label %1037, label %1038

1037:                                             ; preds = %1032
  br label %1040

1038:                                             ; preds = %1032
  call void @__assert_fail(ptr noundef @.str.63, ptr noundef @.str.52, i32 noundef 400, ptr noundef @__PRETTY_FUNCTION__._Z14getKktFailuresRK12HighsOptionsRK7HighsLpRKSt6vectorIdSaIdEERK13HighsSolutionRK10HighsBasisR9HighsInfoR21HighsPrimalDualErrorsb) #8
  unreachable

1039:                                             ; No predecessors!
  br label %1040

1040:                                             ; preds = %1039, %1037
  %1041 = load double, ptr %98, align 8, !tbaa !21
  %1042 = load ptr, ptr %30, align 8, !tbaa !5
  %1043 = load double, ptr %1042, align 8, !tbaa !21
  %1044 = fcmp oeq double %1041, %1043
  br i1 %1044, label %1045, label %1046

1045:                                             ; preds = %1040
  br label %1048

1046:                                             ; preds = %1040
  call void @__assert_fail(ptr noundef @.str.64, ptr noundef @.str.52, i32 noundef 402, ptr noundef @__PRETTY_FUNCTION__._Z14getKktFailuresRK12HighsOptionsRK7HighsLpRKSt6vectorIdSaIdEERK13HighsSolutionRK10HighsBasisR9HighsInfoR21HighsPrimalDualErrorsb) #8
  unreachable

1047:                                             ; No predecessors!
  br label %1048

1048:                                             ; preds = %1047, %1045
  call void @llvm.lifetime.end.p0(i64 1, ptr %99) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %98) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %97) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %86) #7
  br label %1050

1049:                                             ; preds = %1027, %1013
  call void @llvm.lifetime.end.p0(i64 8, ptr %86) #7
  br label %1334

1050:                                             ; preds = %1048, %867
  %1051 = load i8, ptr %16, align 1, !tbaa !9, !range !27, !noundef !28
  %1052 = trunc i8 %1051 to i1
  br i1 %1052, label %1053, label %1273

1053:                                             ; preds = %1050
  call void @llvm.lifetime.start.p0(i64 8, ptr %100) #7
  store double 0x3D719799812DEA11, ptr %100, align 8, !tbaa !21
  call void @llvm.lifetime.start.p0(i64 4, ptr %101) #7
  store i32 0, ptr %101, align 4, !tbaa !23
  br label %1054

1054:                                             ; preds = %1157, %1053
  %1055 = load i32, ptr %101, align 4, !tbaa !23
  %1056 = load ptr, ptr %10, align 8, !tbaa !5
  %1057 = getelementptr inbounds %class.HighsLp, ptr %1056, i32 0, i32 1
  %1058 = load i32, ptr %1057, align 4, !tbaa !58
  %1059 = icmp slt i32 %1055, %1058
  br i1 %1059, label %1061, label %1060

1060:                                             ; preds = %1054
  store i32 11, ptr %54, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %101) #7
  br label %1160

1061:                                             ; preds = %1054
  call void @llvm.lifetime.start.p0(i64 8, ptr %102) #7
  %1062 = load ptr, ptr %12, align 8, !tbaa !5
  %1063 = getelementptr inbounds %struct.HighsSolution, ptr %1062, i32 0, i32 4
  %1064 = load i32, ptr %101, align 4, !tbaa !23
  %1065 = sext i32 %1064 to i64
  %1066 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNKSt6vectorIdSaIdEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %1063, i64 noundef %1065) #7
  %1067 = load double, ptr %1066, align 8, !tbaa !21
  %1068 = fneg double %1067
  store double %1068, ptr %102, align 8, !tbaa !21
  %1069 = load double, ptr %102, align 8, !tbaa !21
  %1070 = fcmp ogt double %1069, 0.000000e+00
  br i1 %1070, label %1071, label %1078

1071:                                             ; preds = %1061
  %1072 = load double, ptr %102, align 8, !tbaa !21
  %1073 = load i32, ptr %101, align 4, !tbaa !23
  %1074 = sext i32 %1073 to i64
  %1075 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt6vectorIdSaIdEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %55, i64 noundef %1074) #7
  %1076 = load double, ptr %1075, align 8, !tbaa !21
  %1077 = fadd double %1076, %1072
  store double %1077, ptr %1075, align 8, !tbaa !21
  br label %1085

1078:                                             ; preds = %1061
  %1079 = load double, ptr %102, align 8, !tbaa !21
  %1080 = load i32, ptr %101, align 4, !tbaa !23
  %1081 = sext i32 %1080 to i64
  %1082 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt6vectorIdSaIdEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %56, i64 noundef %1081) #7
  %1083 = load double, ptr %1082, align 8, !tbaa !21
  %1084 = fsub double %1083, %1079
  store double %1084, ptr %1082, align 8, !tbaa !21
  br label %1085

1085:                                             ; preds = %1078, %1071
  %1086 = load i32, ptr %101, align 4, !tbaa !23
  %1087 = sext i32 %1086 to i64
  %1088 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt6vectorIdSaIdEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %55, i64 noundef %1087) #7
  %1089 = load double, ptr %1088, align 8, !tbaa !21
  %1090 = fcmp oge double %1089, 0.000000e+00
  br i1 %1090, label %1091, label %1092

1091:                                             ; preds = %1085
  br label %1094

1092:                                             ; preds = %1085
  call void @__assert_fail(ptr noundef @.str.65, ptr noundef @.str.52, i32 noundef 414, ptr noundef @__PRETTY_FUNCTION__._Z14getKktFailuresRK12HighsOptionsRK7HighsLpRKSt6vectorIdSaIdEERK13HighsSolutionRK10HighsBasisR9HighsInfoR21HighsPrimalDualErrorsb) #8
  unreachable

1093:                                             ; No predecessors!
  br label %1094

1094:                                             ; preds = %1093, %1091
  %1095 = load i32, ptr %101, align 4, !tbaa !23
  %1096 = sext i32 %1095 to i64
  %1097 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt6vectorIdSaIdEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %56, i64 noundef %1096) #7
  %1098 = load double, ptr %1097, align 8, !tbaa !21
  %1099 = fcmp oge double %1098, 0.000000e+00
  br i1 %1099, label %1100, label %1101

1100:                                             ; preds = %1094
  br label %1103

1101:                                             ; preds = %1094
  call void @__assert_fail(ptr noundef @.str.66, ptr noundef @.str.52, i32 noundef 415, ptr noundef @__PRETTY_FUNCTION__._Z14getKktFailuresRK12HighsOptionsRK7HighsLpRKSt6vectorIdSaIdEERK13HighsSolutionRK10HighsBasisR9HighsInfoR21HighsPrimalDualErrorsb) #8
  unreachable

1102:                                             ; No predecessors!
  br label %1103

1103:                                             ; preds = %1102, %1100
  call void @llvm.lifetime.start.p0(i64 8, ptr %103) #7
  %1104 = load i32, ptr %101, align 4, !tbaa !23
  %1105 = sext i32 %1104 to i64
  %1106 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt6vectorIdSaIdEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %55, i64 noundef %1105) #7
  %1107 = load double, ptr %1106, align 8, !tbaa !21
  %1108 = load i32, ptr %101, align 4, !tbaa !23
  %1109 = sext i32 %1108 to i64
  %1110 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt6vectorIdSaIdEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %56, i64 noundef %1109) #7
  %1111 = load double, ptr %1110, align 8, !tbaa !21
  %1112 = fsub double %1107, %1111
  %1113 = call double @llvm.fabs.f64(double %1112)
  store double %1113, ptr %103, align 8, !tbaa !21
  call void @llvm.lifetime.start.p0(i64 8, ptr %104) #7
  %1114 = load double, ptr %103, align 8, !tbaa !21
  %1115 = load i32, ptr %101, align 4, !tbaa !23
  %1116 = sext i32 %1115 to i64
  %1117 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt6vectorIdSaIdEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %55, i64 noundef %1116) #7
  %1118 = load double, ptr %1117, align 8, !tbaa !21
  %1119 = fadd double 1.000000e+00, %1118
  %1120 = load i32, ptr %101, align 4, !tbaa !23
  %1121 = sext i32 %1120 to i64
  %1122 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt6vectorIdSaIdEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %56, i64 noundef %1121) #7
  %1123 = load double, ptr %1122, align 8, !tbaa !21
  %1124 = fadd double %1119, %1123
  %1125 = fdiv double %1114, %1124
  store double %1125, ptr %104, align 8, !tbaa !21
  %1126 = load double, ptr %103, align 8, !tbaa !21
  %1127 = fcmp ogt double %1126, 0x3D719799812DEA11
  br i1 %1127, label %1128, label %1132

1128:                                             ; preds = %1103
  %1129 = load ptr, ptr %35, align 8, !tbaa !5
  %1130 = load i32, ptr %1129, align 4, !tbaa !23
  %1131 = add nsw i32 %1130, 1
  store i32 %1131, ptr %1129, align 4, !tbaa !23
  br label %1132

1132:                                             ; preds = %1128, %1103
  %1133 = load ptr, ptr %37, align 8, !tbaa !5
  %1134 = load double, ptr %1133, align 8, !tbaa !21
  %1135 = load double, ptr %103, align 8, !tbaa !21
  %1136 = fcmp olt double %1134, %1135
  br i1 %1136, label %1137, label %1142

1137:                                             ; preds = %1132
  %1138 = load double, ptr %103, align 8, !tbaa !21
  %1139 = load ptr, ptr %37, align 8, !tbaa !5
  store double %1138, ptr %1139, align 8, !tbaa !21
  %1140 = load i32, ptr %101, align 4, !tbaa !23
  %1141 = load ptr, ptr %36, align 8, !tbaa !5
  store i32 %1140, ptr %1141, align 4, !tbaa !23
  br label %1142

1142:                                             ; preds = %1137, %1132
  %1143 = load ptr, ptr %39, align 8, !tbaa !5
  %1144 = load double, ptr %1143, align 8, !tbaa !21
  %1145 = load double, ptr %104, align 8, !tbaa !21
  %1146 = fcmp olt double %1144, %1145
  br i1 %1146, label %1147, label %1152

1147:                                             ; preds = %1142
  %1148 = load double, ptr %104, align 8, !tbaa !21
  %1149 = load ptr, ptr %39, align 8, !tbaa !5
  store double %1148, ptr %1149, align 8, !tbaa !21
  %1150 = load i32, ptr %101, align 4, !tbaa !23
  %1151 = load ptr, ptr %38, align 8, !tbaa !5
  store i32 %1150, ptr %1151, align 4, !tbaa !23
  br label %1152

1152:                                             ; preds = %1147, %1142
  %1153 = load double, ptr %103, align 8, !tbaa !21
  %1154 = load ptr, ptr %40, align 8, !tbaa !5
  %1155 = load double, ptr %1154, align 8, !tbaa !21
  %1156 = fadd double %1155, %1153
  store double %1156, ptr %1154, align 8, !tbaa !21
  call void @llvm.lifetime.end.p0(i64 8, ptr %104) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %103) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %102) #7
  br label %1157

1157:                                             ; preds = %1152
  %1158 = load i32, ptr %101, align 4, !tbaa !23
  %1159 = add nsw i32 %1158, 1
  store i32 %1159, ptr %101, align 4, !tbaa !23
  br label %1054, !llvm.loop !68

1160:                                             ; preds = %1060
  %1161 = load ptr, ptr %32, align 8, !tbaa !5
  %1162 = load i8, ptr %1161, align 1, !tbaa !9, !range !27, !noundef !28
  %1163 = trunc i8 %1162 to i1
  br i1 %1163, label %1164, label %1272

1164:                                             ; preds = %1160
  call void @llvm.lifetime.start.p0(i64 4, ptr %105) #7
  store i32 0, ptr %105, align 4, !tbaa !23
  br label %1165

1165:                                             ; preds = %1268, %1164
  %1166 = load i32, ptr %105, align 4, !tbaa !23
  %1167 = load ptr, ptr %10, align 8, !tbaa !5
  %1168 = getelementptr inbounds %class.HighsLp, ptr %1167, i32 0, i32 0
  %1169 = load i32, ptr %1168, align 8, !tbaa !29
  %1170 = icmp slt i32 %1166, %1169
  br i1 %1170, label %1172, label %1171

1171:                                             ; preds = %1165
  store i32 14, ptr %54, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %105) #7
  br label %1271

1172:                                             ; preds = %1165
  call void @llvm.lifetime.start.p0(i64 8, ptr %106) #7
  %1173 = load ptr, ptr %12, align 8, !tbaa !5
  %1174 = getelementptr inbounds %struct.HighsSolution, ptr %1173, i32 0, i32 3
  %1175 = load i32, ptr %105, align 4, !tbaa !23
  %1176 = sext i32 %1175 to i64
  %1177 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNKSt6vectorIdSaIdEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %1174, i64 noundef %1176) #7
  %1178 = load double, ptr %1177, align 8, !tbaa !21
  %1179 = fneg double %1178
  store double %1179, ptr %106, align 8, !tbaa !21
  %1180 = load double, ptr %106, align 8, !tbaa !21
  %1181 = fcmp ogt double %1180, 0.000000e+00
  br i1 %1181, label %1182, label %1189

1182:                                             ; preds = %1172
  %1183 = load double, ptr %106, align 8, !tbaa !21
  %1184 = load i32, ptr %105, align 4, !tbaa !23
  %1185 = sext i32 %1184 to i64
  %1186 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt6vectorIdSaIdEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %57, i64 noundef %1185) #7
  %1187 = load double, ptr %1186, align 8, !tbaa !21
  %1188 = fadd double %1187, %1183
  store double %1188, ptr %1186, align 8, !tbaa !21
  br label %1196

1189:                                             ; preds = %1172
  %1190 = load double, ptr %106, align 8, !tbaa !21
  %1191 = load i32, ptr %105, align 4, !tbaa !23
  %1192 = sext i32 %1191 to i64
  %1193 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt6vectorIdSaIdEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %58, i64 noundef %1192) #7
  %1194 = load double, ptr %1193, align 8, !tbaa !21
  %1195 = fsub double %1194, %1190
  store double %1195, ptr %1193, align 8, !tbaa !21
  br label %1196

1196:                                             ; preds = %1189, %1182
  %1197 = load i32, ptr %105, align 4, !tbaa !23
  %1198 = sext i32 %1197 to i64
  %1199 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt6vectorIdSaIdEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %57, i64 noundef %1198) #7
  %1200 = load double, ptr %1199, align 8, !tbaa !21
  %1201 = fcmp oge double %1200, 0.000000e+00
  br i1 %1201, label %1202, label %1203

1202:                                             ; preds = %1196
  br label %1205

1203:                                             ; preds = %1196
  call void @__assert_fail(ptr noundef @.str.67, ptr noundef @.str.52, i32 noundef 442, ptr noundef @__PRETTY_FUNCTION__._Z14getKktFailuresRK12HighsOptionsRK7HighsLpRKSt6vectorIdSaIdEERK13HighsSolutionRK10HighsBasisR9HighsInfoR21HighsPrimalDualErrorsb) #8
  unreachable

1204:                                             ; No predecessors!
  br label %1205

1205:                                             ; preds = %1204, %1202
  %1206 = load i32, ptr %105, align 4, !tbaa !23
  %1207 = sext i32 %1206 to i64
  %1208 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt6vectorIdSaIdEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %58, i64 noundef %1207) #7
  %1209 = load double, ptr %1208, align 8, !tbaa !21
  %1210 = fcmp oge double %1209, 0.000000e+00
  br i1 %1210, label %1211, label %1212

1211:                                             ; preds = %1205
  br label %1214

1212:                                             ; preds = %1205
  call void @__assert_fail(ptr noundef @.str.68, ptr noundef @.str.52, i32 noundef 443, ptr noundef @__PRETTY_FUNCTION__._Z14getKktFailuresRK12HighsOptionsRK7HighsLpRKSt6vectorIdSaIdEERK13HighsSolutionRK10HighsBasisR9HighsInfoR21HighsPrimalDualErrorsb) #8
  unreachable

1213:                                             ; No predecessors!
  br label %1214

1214:                                             ; preds = %1213, %1211
  call void @llvm.lifetime.start.p0(i64 8, ptr %107) #7
  %1215 = load i32, ptr %105, align 4, !tbaa !23
  %1216 = sext i32 %1215 to i64
  %1217 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt6vectorIdSaIdEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %57, i64 noundef %1216) #7
  %1218 = load double, ptr %1217, align 8, !tbaa !21
  %1219 = load i32, ptr %105, align 4, !tbaa !23
  %1220 = sext i32 %1219 to i64
  %1221 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt6vectorIdSaIdEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %58, i64 noundef %1220) #7
  %1222 = load double, ptr %1221, align 8, !tbaa !21
  %1223 = fsub double %1218, %1222
  %1224 = call double @llvm.fabs.f64(double %1223)
  store double %1224, ptr %107, align 8, !tbaa !21
  call void @llvm.lifetime.start.p0(i64 8, ptr %108) #7
  %1225 = load double, ptr %107, align 8, !tbaa !21
  %1226 = load i32, ptr %105, align 4, !tbaa !23
  %1227 = sext i32 %1226 to i64
  %1228 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt6vectorIdSaIdEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %57, i64 noundef %1227) #7
  %1229 = load double, ptr %1228, align 8, !tbaa !21
  %1230 = fadd double 1.000000e+00, %1229
  %1231 = load i32, ptr %105, align 4, !tbaa !23
  %1232 = sext i32 %1231 to i64
  %1233 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt6vectorIdSaIdEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %58, i64 noundef %1232) #7
  %1234 = load double, ptr %1233, align 8, !tbaa !21
  %1235 = fadd double %1230, %1234
  %1236 = fdiv double %1225, %1235
  store double %1236, ptr %108, align 8, !tbaa !21
  %1237 = load double, ptr %107, align 8, !tbaa !21
  %1238 = fcmp ogt double %1237, 0x3D719799812DEA11
  br i1 %1238, label %1239, label %1243

1239:                                             ; preds = %1214
  %1240 = load ptr, ptr %41, align 8, !tbaa !5
  %1241 = load i32, ptr %1240, align 4, !tbaa !23
  %1242 = add nsw i32 %1241, 1
  store i32 %1242, ptr %1240, align 4, !tbaa !23
  br label %1243

1243:                                             ; preds = %1239, %1214
  %1244 = load ptr, ptr %43, align 8, !tbaa !5
  %1245 = load double, ptr %1244, align 8, !tbaa !21
  %1246 = load double, ptr %107, align 8, !tbaa !21
  %1247 = fcmp olt double %1245, %1246
  br i1 %1247, label %1248, label %1253

1248:                                             ; preds = %1243
  %1249 = load double, ptr %107, align 8, !tbaa !21
  %1250 = load ptr, ptr %43, align 8, !tbaa !5
  store double %1249, ptr %1250, align 8, !tbaa !21
  %1251 = load i32, ptr %105, align 4, !tbaa !23
  %1252 = load ptr, ptr %42, align 8, !tbaa !5
  store i32 %1251, ptr %1252, align 4, !tbaa !23
  br label %1253

1253:                                             ; preds = %1248, %1243
  %1254 = load ptr, ptr %45, align 8, !tbaa !5
  %1255 = load double, ptr %1254, align 8, !tbaa !21
  %1256 = load double, ptr %108, align 8, !tbaa !21
  %1257 = fcmp olt double %1255, %1256
  br i1 %1257, label %1258, label %1263

1258:                                             ; preds = %1253
  %1259 = load double, ptr %108, align 8, !tbaa !21
  %1260 = load ptr, ptr %45, align 8, !tbaa !5
  store double %1259, ptr %1260, align 8, !tbaa !21
  %1261 = load i32, ptr %105, align 4, !tbaa !23
  %1262 = load ptr, ptr %44, align 8, !tbaa !5
  store i32 %1261, ptr %1262, align 4, !tbaa !23
  br label %1263

1263:                                             ; preds = %1258, %1253
  %1264 = load double, ptr %107, align 8, !tbaa !21
  %1265 = load ptr, ptr %46, align 8, !tbaa !5
  %1266 = load double, ptr %1265, align 8, !tbaa !21
  %1267 = fadd double %1266, %1264
  store double %1267, ptr %1265, align 8, !tbaa !21
  call void @llvm.lifetime.end.p0(i64 8, ptr %108) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %107) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %106) #7
  br label %1268

1268:                                             ; preds = %1263
  %1269 = load i32, ptr %105, align 4, !tbaa !23
  %1270 = add nsw i32 %1269, 1
  store i32 %1270, ptr %105, align 4, !tbaa !23
  br label %1165, !llvm.loop !69

1271:                                             ; preds = %1171
  br label %1272

1272:                                             ; preds = %1271, %1160
  call void @llvm.lifetime.end.p0(i64 8, ptr %100) #7
  br label %1273

1273:                                             ; preds = %1272, %1050
  %1274 = load ptr, ptr %19, align 8, !tbaa !5
  %1275 = load i32, ptr %1274, align 4, !tbaa !23
  %1276 = icmp ne i32 %1275, 0
  br i1 %1276, label %1277, label %1281

1277:                                             ; preds = %1273
  %1278 = load ptr, ptr %14, align 8, !tbaa !5
  %1279 = getelementptr inbounds i8, ptr %1278, i64 8
  %1280 = getelementptr inbounds %struct.HighsInfoStruct, ptr %1279, i32 0, i32 7
  store i32 1, ptr %1280, align 4, !tbaa !24
  br label %1285

1281:                                             ; preds = %1273
  %1282 = load ptr, ptr %14, align 8, !tbaa !5
  %1283 = getelementptr inbounds i8, ptr %1282, i64 8
  %1284 = getelementptr inbounds %struct.HighsInfoStruct, ptr %1283, i32 0, i32 7
  store i32 2, ptr %1284, align 4, !tbaa !24
  br label %1285

1285:                                             ; preds = %1281, %1277
  %1286 = load ptr, ptr %32, align 8, !tbaa !5
  %1287 = load i8, ptr %1286, align 1, !tbaa !9, !range !27, !noundef !28
  %1288 = trunc i8 %1287 to i1
  br i1 %1288, label %1289, label %1302

1289:                                             ; preds = %1285
  %1290 = load ptr, ptr %25, align 8, !tbaa !5
  %1291 = load i32, ptr %1290, align 4, !tbaa !23
  %1292 = icmp ne i32 %1291, 0
  br i1 %1292, label %1293, label %1297

1293:                                             ; preds = %1289
  %1294 = load ptr, ptr %14, align 8, !tbaa !5
  %1295 = getelementptr inbounds i8, ptr %1294, i64 8
  %1296 = getelementptr inbounds %struct.HighsInfoStruct, ptr %1295, i32 0, i32 8
  store i32 1, ptr %1296, align 8, !tbaa !26
  br label %1301

1297:                                             ; preds = %1289
  %1298 = load ptr, ptr %14, align 8, !tbaa !5
  %1299 = getelementptr inbounds i8, ptr %1298, i64 8
  %1300 = getelementptr inbounds %struct.HighsInfoStruct, ptr %1299, i32 0, i32 8
  store i32 2, ptr %1300, align 8, !tbaa !26
  br label %1301

1301:                                             ; preds = %1297, %1293
  br label %1302

1302:                                             ; preds = %1301, %1285
  %1303 = load ptr, ptr %14, align 8, !tbaa !5
  %1304 = getelementptr inbounds i8, ptr %1303, i64 8
  %1305 = getelementptr inbounds %struct.HighsInfoStruct, ptr %1304, i32 0, i32 15
  %1306 = load double, ptr %1305, align 8, !tbaa !70
  %1307 = load ptr, ptr %15, align 8, !tbaa !5
  %1308 = getelementptr inbounds %struct.HighsPrimalDualErrors, ptr %1307, i32 0, i32 12
  %1309 = getelementptr inbounds %struct.HighsError, ptr %1308, i32 0, i32 0
  store double %1306, ptr %1309, align 8, !tbaa !71
  %1310 = load ptr, ptr %14, align 8, !tbaa !5
  %1311 = getelementptr inbounds i8, ptr %1310, i64 8
  %1312 = getelementptr inbounds %struct.HighsInfoStruct, ptr %1311, i32 0, i32 18
  %1313 = load double, ptr %1312, align 8, !tbaa !74
  %1314 = load ptr, ptr %15, align 8, !tbaa !5
  %1315 = getelementptr inbounds %struct.HighsPrimalDualErrors, ptr %1314, i32 0, i32 14
  %1316 = getelementptr inbounds %struct.HighsError, ptr %1315, i32 0, i32 0
  store double %1313, ptr %1316, align 8, !tbaa !75
  %1317 = load ptr, ptr %15, align 8, !tbaa !5
  %1318 = getelementptr inbounds %struct.HighsPrimalDualErrors, ptr %1317, i32 0, i32 14
  %1319 = getelementptr inbounds %struct.HighsError, ptr %1318, i32 0, i32 0
  %1320 = load double, ptr %1319, align 8, !tbaa !75
  %1321 = load ptr, ptr %15, align 8, !tbaa !5
  %1322 = getelementptr inbounds %struct.HighsPrimalDualErrors, ptr %1321, i32 0, i32 14
  %1323 = getelementptr inbounds %struct.HighsError, ptr %1322, i32 0, i32 2
  store double %1320, ptr %1323, align 8, !tbaa !76
  %1324 = load ptr, ptr %15, align 8, !tbaa !5
  %1325 = getelementptr inbounds %struct.HighsPrimalDualErrors, ptr %1324, i32 0, i32 14
  %1326 = getelementptr inbounds %struct.HighsError, ptr %1325, i32 0, i32 1
  %1327 = load i32, ptr %1326, align 8, !tbaa !77
  %1328 = load ptr, ptr %15, align 8, !tbaa !5
  %1329 = getelementptr inbounds %struct.HighsPrimalDualErrors, ptr %1328, i32 0, i32 14
  %1330 = getelementptr inbounds %struct.HighsError, ptr %1329, i32 0, i32 3
  store i32 %1327, ptr %1330, align 8, !tbaa !78
  call void @llvm.lifetime.end.p0(i64 1, ptr %73) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %72) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %71) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %70) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %69) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %68) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %67) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %66) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %65) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %64) #7
  call void @llvm.lifetime.end.p0(i64 1, ptr %63) #7
  call void @_ZNSt6vectorIdSaIdEED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %58) #7
  call void @llvm.lifetime.end.p0(i64 24, ptr %58) #7
  call void @_ZNSt6vectorIdSaIdEED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %57) #7
  call void @llvm.lifetime.end.p0(i64 24, ptr %57) #7
  call void @_ZNSt6vectorIdSaIdEED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %56) #7
  call void @llvm.lifetime.end.p0(i64 24, ptr %56) #7
  call void @_ZNSt6vectorIdSaIdEED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %55) #7
  call void @llvm.lifetime.end.p0(i64 24, ptr %55) #7
  store i32 0, ptr %54, align 4
  br label %1331

1331:                                             ; preds = %1302, %384
  call void @llvm.lifetime.end.p0(i64 8, ptr %53) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %52) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %51) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %50) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %49) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %48) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %47) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %46) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %45) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %44) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %43) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %42) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %41) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %40) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %39) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %38) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %37) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %36) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %35) #7
  call void @llvm.lifetime.end.p0(i64 1, ptr %34) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %33) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %32) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %31) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %30) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %29) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %28) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %27) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %26) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %25) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %24) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %23) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %22) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %21) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %20) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %19) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %18) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %17) #7
  %1332 = load i32, ptr %54, align 4
  switch i32 %1332, label %1341 [
    i32 0, label %1333
    i32 1, label %1333
  ]

1333:                                             ; preds = %1331, %1331
  ret void

1334:                                             ; preds = %1049, %866
  call void @llvm.lifetime.end.p0(i64 1, ptr %73) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %72) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %71) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %70) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %69) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %68) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %67) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %66) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %65) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %64) #7
  call void @llvm.lifetime.end.p0(i64 1, ptr %63) #7
  br label %1335

1335:                                             ; preds = %1334, %421, %417, %413
  call void @_ZNSt6vectorIdSaIdEED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %58) #7
  call void @llvm.lifetime.end.p0(i64 24, ptr %58) #7
  call void @_ZNSt6vectorIdSaIdEED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %57) #7
  call void @llvm.lifetime.end.p0(i64 24, ptr %57) #7
  call void @_ZNSt6vectorIdSaIdEED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %56) #7
  call void @llvm.lifetime.end.p0(i64 24, ptr %56) #7
  call void @_ZNSt6vectorIdSaIdEED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %55) #7
  call void @llvm.lifetime.end.p0(i64 24, ptr %55) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %53) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %52) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %51) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %50) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %49) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %48) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %47) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %46) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %45) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %44) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %43) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %42) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %41) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %40) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %39) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %38) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %37) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %36) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %35) #7
  call void @llvm.lifetime.end.p0(i64 1, ptr %34) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %33) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %32) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %31) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %30) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %29) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %28) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %27) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %26) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %25) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %24) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %23) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %22) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %21) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %20) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %19) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %18) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %17) #7
  br label %1336

1336:                                             ; preds = %1335
  %1337 = load ptr, ptr %60, align 8
  %1338 = load i32, ptr %61, align 4
  %1339 = insertvalue { ptr, i32 } poison, ptr %1337, 0
  %1340 = insertvalue { ptr, i32 } %1339, i32 %1338, 1
  resume { ptr, i32 } %1340

1341:                                             ; preds = %1331
  unreachable
}

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

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

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

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

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

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

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

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

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

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

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

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

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

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

; Function Attrs: mustprogress uwtable
declare dso_local noundef zeroext i1 @_Z28getComplementarityViolationsRK7HighsLpRK13HighsSolutionRdS5_(ptr noundef nonnull align 8 dereferenceable(920), ptr noundef nonnull align 8 dereferenceable(104), ptr noundef nonnull align 8 dereferenceable(8), ptr noundef nonnull align 8 dereferenceable(8)) #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 = { noreturn nounwind "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }
attributes #4 = { "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }
attributes #5 = { inlinehint mustprogress nounwind uwtable "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }
attributes #6 = { nocallback nofree nosync nounwind speculatable willreturn memory(none) }
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, !6, i64 0}
!6 = !{!"any pointer", !7, i64 0}
!7 = !{!"omnipotent char", !8, i64 0}
!8 = !{!"Simple C++ TBAA"}
!9 = !{!10, !10, i64 0}
!10 = !{!"bool", !7, i64 0}
!11 = !{!12, !16, i64 280}
!12 = !{!"_ZTS18HighsOptionsStruct", !13, i64 8, !13, i64 40, !13, i64 72, !13, i64 104, !16, i64 136, !13, i64 144, !13, i64 176, !17, i64 208, !13, i64 216, !16, i64 248, !16, i64 256, !16, i64 264, !16, i64 272, !16, i64 280, !16, i64 288, !16, i64 296, !16, i64 304, !16, i64 312, !16, i64 320, !16, i64 328, !17, i64 336, !17, i64 340, !17, i64 344, !17, i64 348, !17, i64 352, !17, i64 356, !17, i64 360, !17, i64 364, !17, i64 368, !17, i64 372, !17, i64 376, !17, i64 380, !17, i64 384, !17, i64 388, !13, i64 392, !10, i64 424, !10, i64 425, !10, i64 426, !17, i64 428, !17, i64 432, !13, i64 440, !10, i64 472, !10, i64 473, !10, i64 474, !17, i64 476, !10, i64 480, !10, i64 481, !17, i64 484, !17, i64 488, !16, i64 496, !17, i64 504, !17, i64 508, !17, i64 512, !10, i64 516, !17, i64 520, !10, i64 524, !10, i64 525, !10, i64 526, !10, i64 527, !10, i64 528, !10, i64 529, !10, i64 530, !17, i64 532, !17, i64 536, !17, i64 540, !17, i64 544, !17, i64 548, !17, i64 552, !17, i64 556, !17, i64 560, !17, i64 564, !17, i64 568, !17, i64 572, !17, i64 576, !17, i64 580, !17, i64 584, !17, i64 588, !10, i64 592, !10, i64 593, !10, i64 594, !10, i64 595, !16, i64 600, !16, i64 608, !16, i64 616, !16, i64 624, !16, i64 632, !16, i64 640, !16, i64 648, !16, i64 656, !16, i64 664, !16, i64 672, !16, i64 680, !10, i64 688, !10, i64 689, !10, i64 690, !10, i64 691, !17, i64 692, !16, i64 696, !10, i64 704, !10, i64 705, !13, i64 712, !16, i64 744, !17, i64 752, !17, i64 756, !10, i64 760, !10, i64 761, !10, i64 762, !10, i64 763, !17, i64 764, !17, i64 768, !17, i64 772, !17, i64 776, !17, i64 780, !17, i64 784, !17, i64 788, !17, i64 792, !17, i64 796, !17, i64 800, !17, i64 804, !16, i64 808, !16, i64 816, !16, i64 824, !16, i64 832, !16, i64 840, !10, i64 848, !10, i64 849, !13, i64 856, !10, i64 888, !17, i64 892, !18, i64 896}
!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 = !{!"double", !7, i64 0}
!17 = !{!"int", !7, i64 0}
!18 = !{!"_ZTS15HighsLogOptions", !6, i64 0, !6, i64 8, !6, i64 16, !6, i64 24, !6, i64 32, !6, i64 40, !19, i64 48, !6, i64 80, !10, i64 88}
!19 = !{!"_ZTSSt8functionIFviRKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEPK20HighsCallbackDataOutP19HighsCallbackDataInPvEE", !20, i64 0, !6, i64 24}
!20 = !{!"_ZTSSt14_Function_base", !7, i64 0, !6, i64 16}
!21 = !{!16, !16, i64 0}
!22 = !{!12, !16, i64 288}
!23 = !{!17, !17, i64 0}
!24 = !{!25, !17, i64 36}
!25 = !{!"_ZTS15HighsInfoStruct", !10, i64 0, !15, i64 8, !17, i64 16, !17, i64 20, !17, i64 24, !17, i64 28, !17, i64 32, !17, i64 36, !17, i64 40, !17, i64 44, !16, i64 48, !16, i64 56, !16, i64 64, !16, i64 72, !17, i64 80, !16, i64 88, !16, i64 96, !17, i64 104, !16, i64 112, !16, i64 120, !16, i64 128, !16, i64 136, !16, i64 144}
!26 = !{!25, !17, i64 40}
!27 = !{i8 0, i8 2}
!28 = !{}
!29 = !{!30, !17, i64 0}
!30 = !{!"_ZTS7HighsLp", !17, i64 0, !17, i64 4, !31, i64 8, !31, i64 32, !31, i64 56, !31, i64 80, !31, i64 104, !35, i64 128, !41, i64 240, !16, i64 248, !13, i64 256, !13, i64 288, !17, i64 320, !17, i64 324, !42, i64 328, !42, i64 352, !46, i64 376, !50, i64 400, !50, i64 456, !17, i64 512, !17, i64 516, !56, i64 520, !10, i64 592, !10, i64 593, !17, i64 596, !10, i64 600, !57, i64 608}
!31 = !{!"_ZTSSt6vectorIdSaIdEE", !32, i64 0}
!32 = !{!"_ZTSSt12_Vector_baseIdSaIdEE", !33, i64 0}
!33 = !{!"_ZTSNSt12_Vector_baseIdSaIdEE12_Vector_implE", !34, i64 0}
!34 = !{!"_ZTSNSt12_Vector_baseIdSaIdEE17_Vector_impl_dataE", !6, i64 0, !6, i64 8, !6, i64 16}
!35 = !{!"_ZTS17HighsSparseMatrix", !36, i64 0, !17, i64 4, !17, i64 8, !37, i64 16, !37, i64 40, !37, i64 64, !31, i64 88}
!36 = !{!"_ZTS12MatrixFormat", !7, i64 0}
!37 = !{!"_ZTSSt6vectorIiSaIiEE", !38, i64 0}
!38 = !{!"_ZTSSt12_Vector_baseIiSaIiEE", !39, i64 0}
!39 = !{!"_ZTSNSt12_Vector_baseIiSaIiEE12_Vector_implE", !40, i64 0}
!40 = !{!"_ZTSNSt12_Vector_baseIiSaIiEE17_Vector_impl_dataE", !6, i64 0, !6, i64 8, !6, i64 16}
!41 = !{!"_ZTS8ObjSense", !7, i64 0}
!42 = !{!"_ZTSSt6vectorINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESaIS5_EE", !43, i64 0}
!43 = !{!"_ZTSSt12_Vector_baseINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESaIS5_EE", !44, i64 0}
!44 = !{!"_ZTSNSt12_Vector_baseINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESaIS5_EE12_Vector_implE", !45, i64 0}
!45 = !{!"_ZTSNSt12_Vector_baseINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESaIS5_EE17_Vector_impl_dataE", !6, i64 0, !6, i64 8, !6, i64 16}
!46 = !{!"_ZTSSt6vectorI12HighsVarTypeSaIS0_EE", !47, i64 0}
!47 = !{!"_ZTSSt12_Vector_baseI12HighsVarTypeSaIS0_EE", !48, i64 0}
!48 = !{!"_ZTSNSt12_Vector_baseI12HighsVarTypeSaIS0_EE12_Vector_implE", !49, i64 0}
!49 = !{!"_ZTSNSt12_Vector_baseI12HighsVarTypeSaIS0_EE17_Vector_impl_dataE", !6, i64 0, !6, i64 8, !6, i64 16}
!50 = !{!"_ZTS13HighsNameHash", !51, i64 0}
!51 = !{!"_ZTSSt13unordered_mapINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEiSt4hashIS5_ESt8equal_toIS5_ESaISt4pairIKS5_iEEE", !52, i64 0}
!52 = !{!"_ZTSSt10_HashtableINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESt4pairIKS5_iESaIS8_ENSt8__detail10_Select1stESt8equal_toIS5_ESt4hashIS5_ENSA_18_Mod_range_hashingENSA_20_Default_ranged_hashENSA_20_Prime_rehash_policyENSA_17_Hashtable_traitsILb1ELb0ELb1EEEE", !6, i64 0, !15, i64 8, !53, i64 16, !15, i64 24, !54, i64 32, !6, i64 48}
!53 = !{!"_ZTSNSt8__detail15_Hash_node_baseE", !6, i64 0}
!54 = !{!"_ZTSNSt8__detail20_Prime_rehash_policyE", !55, i64 0, !15, i64 8}
!55 = !{!"float", !7, i64 0}
!56 = !{!"_ZTS10HighsScale", !17, i64 0, !10, i64 4, !17, i64 8, !17, i64 12, !16, i64 16, !31, i64 24, !31, i64 48}
!57 = !{!"_ZTS11HighsLpMods", !37, i64 0, !37, i64 24, !31, i64 48, !31, i64 72, !46, i64 96, !37, i64 120, !31, i64 144, !37, i64 168, !31, i64 192, !37, i64 216, !31, i64 240, !31, i64 264, !31, i64 288}
!58 = !{!30, !17, i64 4}
!59 = !{!60, !60, i64 0}
!60 = !{!"_ZTS16HighsBasisStatus", !7, i64 0}
!61 = !{!62, !62, i64 0}
!62 = !{!"_ZTS12HighsVarType", !7, i64 0}
!63 = !{!30, !41, i64 240}
!64 = distinct !{!64, !65}
!65 = !{!"llvm.loop.mustprogress"}
!66 = distinct !{!66, !65}
!67 = distinct !{!67, !65}
!68 = distinct !{!68, !65}
!69 = distinct !{!69, !65}
!70 = !{!25, !16, i64 88}
!71 = !{!72, !16, i64 112}
!72 = !{!"_ZTS21HighsPrimalDualErrors", !17, i64 0, !17, i64 4, !16, i64 8, !16, i64 16, !17, i64 24, !16, i64 32, !16, i64 40, !17, i64 48, !16, i64 56, !17, i64 64, !16, i64 72, !73, i64 80, !73, i64 112, !73, i64 144, !73, i64 176}
!73 = !{!"_ZTS10HighsError", !16, i64 0, !17, i64 8, !16, i64 16, !17, i64 24}
!74 = !{!25, !16, i64 112}
!75 = !{!72, !16, i64 176}
!76 = !{!72, !16, i64 192}
!77 = !{!72, !17, i64 184}
!78 = !{!72, !17, i64 200}


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

%"class.std::vector.3" = type { %"struct.std::_Vector_base.4" }
%"struct.std::_Vector_base.4" = type { %"struct.std::_Vector_base<double, std::allocator<double>>::_Vector_impl" }
%"struct.std::_Vector_base<double, std::allocator<double>>::_Vector_impl" = type { %"struct.std::_Vector_base<double, std::allocator<double>>::_Vector_impl_data" }
%"struct.std::_Vector_base<double, std::allocator<double>>::_Vector_impl_data" = type { ptr, ptr, ptr }

@.str.51 = external hidden unnamed_addr constant [44 x i8], align 1
@.str.52 = external hidden unnamed_addr constant [79 x i8], align 1
@__PRETTY_FUNCTION__._Z14getKktFailuresRK12HighsOptionsRK7HighsLpRKSt6vectorIdSaIdEERK13HighsSolutionRK10HighsBasisR9HighsInfoR21HighsPrimalDualErrorsb = external hidden unnamed_addr constant [181 x i8], align 1
@.str.53 = external hidden unnamed_addr constant [34 x i8], align 1
@.str.54 = external hidden unnamed_addr constant [46 x i8], align 1
@.str.55 = external hidden unnamed_addr constant [46 x i8], align 1
@.str.56 = external hidden unnamed_addr constant [45 x i8], align 1
@.str.57 = external hidden unnamed_addr constant [45 x i8], align 1
@.str.58 = external hidden unnamed_addr constant [87 x i8], align 1
@.str.59 = external hidden unnamed_addr constant [7 x i8], align 1
@.str.60 = external hidden unnamed_addr constant [7 x i8], align 1
@.str.61 = external hidden unnamed_addr constant [16 x i8], align 1
@.str.62 = external hidden unnamed_addr constant [12 x i8], align 1
@.str.63 = external hidden unnamed_addr constant [69 x i8], align 1
@.str.64 = external hidden unnamed_addr constant [71 x i8], align 1
@.str.65 = external hidden unnamed_addr constant [31 x i8], align 1
@.str.66 = external hidden unnamed_addr constant [31 x i8], align 1
@.str.67 = external hidden unnamed_addr constant [29 x i8], align 1
@.str.68 = external hidden unnamed_addr constant [29 x i8], align 1

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

declare i32 @__gxx_personality_v0(...)

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

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

; Function Attrs: mustprogress uwtable
define dso_local void @_Z14getKktFailuresRK12HighsOptionsRK7HighsLpRKSt6vectorIdSaIdEERK13HighsSolutionRK10HighsBasisR9HighsInfoR21HighsPrimalDualErrorsb(ptr noundef nonnull align 8 dereferenceable(1020) %0, ptr noundef nonnull align 8 dereferenceable(920) %1, ptr noundef nonnull align 8 dereferenceable(24) %2, ptr noundef nonnull align 8 dereferenceable(104) %3, ptr noundef nonnull align 8 dereferenceable(96) %4, ptr noundef nonnull align 8 dereferenceable(184) %5, ptr noundef nonnull align 8 dereferenceable(208) %6, i1 noundef zeroext %7) local_unnamed_addr #2 personality ptr @__gxx_personality_v0 {
  %9 = alloca %"class.std::vector.3", align 8
  %10 = alloca %"class.std::vector.3", align 8
  %11 = alloca %"class.std::vector.3", align 8
  %12 = alloca %"class.std::vector.3", align 8
  %13 = alloca double, align 8
  %14 = alloca double, align 8
  %15 = alloca i8, align 1
  %16 = alloca double, align 8
  %17 = alloca double, align 8
  %18 = alloca double, align 8
  %19 = alloca double, align 8
  %20 = alloca double, align 8
  %21 = alloca double, align 8
  %22 = alloca double, align 8
  %23 = alloca double, align 8
  %24 = alloca double, align 8
  %25 = getelementptr inbounds i8, ptr %0, i64 280
  %26 = load double, ptr %25, align 8, !tbaa !5
  %27 = getelementptr inbounds i8, ptr %0, i64 288
  %28 = load double, ptr %27, align 8, !tbaa !19
  %29 = getelementptr inbounds i8, ptr %5, i64 88
  %30 = getelementptr inbounds i8, ptr %6, i64 112
  %31 = getelementptr inbounds i8, ptr %6, i64 120
  %32 = getelementptr inbounds i8, ptr %5, i64 96
  %33 = getelementptr inbounds i8, ptr %6, i64 136
  %34 = getelementptr inbounds i8, ptr %6, i64 128
  %35 = getelementptr inbounds i8, ptr %5, i64 104
  %36 = getelementptr inbounds i8, ptr %5, i64 112
  %37 = getelementptr inbounds i8, ptr %6, i64 176
  %38 = getelementptr inbounds i8, ptr %6, i64 184
  %39 = getelementptr inbounds i8, ptr %5, i64 120
  %40 = getelementptr inbounds i8, ptr %5, i64 128
  %41 = getelementptr inbounds i8, ptr %5, i64 136
  %42 = getelementptr inbounds i8, ptr %5, i64 144
  store i32 -1, ptr %29, align 8, !tbaa !20
  store <2 x double> <double 0x7FF0000000000000, double 0x7FF0000000000000>, ptr %32, align 8, !tbaa !21
  tail call void @_ZN10HighsError10invalidateEv(ptr noundef nonnull align 8 dereferenceable(32) %30)
  %43 = getelementptr inbounds i8, ptr %5, i64 44
  store i32 0, ptr %43, align 4, !tbaa !22
  store i32 -1, ptr %36, align 8, !tbaa !20
  store <2 x double> <double 0x7FF0000000000000, double 0x7FF0000000000000>, ptr %39, align 8, !tbaa !21
  tail call void @_ZN10HighsError10invalidateEv(ptr noundef nonnull align 8 dereferenceable(32) %37)
  %44 = getelementptr inbounds i8, ptr %5, i64 48
  store i32 0, ptr %44, align 8, !tbaa !24
  store <2 x double> <double 0x7FF0000000000000, double 0x7FF0000000000000>, ptr %41, align 8, !tbaa !21
  %45 = getelementptr inbounds i8, ptr %3, i64 1
  %46 = getelementptr inbounds i8, ptr %1, i64 376
  %47 = tail call noundef i64 @_ZNKSt6vectorI12HighsVarTypeSaIS0_EE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24) %46) #8
  %.not = icmp eq i64 %47, 0
  %48 = load i8, ptr %3, align 8, !tbaa !25, !range !26, !noundef !27
  %49 = trunc nuw i8 %48 to i1
  %.pre = load i8, ptr %45, align 1, !tbaa !25, !range !26
  %.pre497 = trunc nuw i8 %.pre to i1
  br i1 %49, label %.critedge, label %50

50:                                               ; preds = %8
  br i1 %.pre497, label %51, label %.thread

51:                                               ; preds = %50
  tail call void @__assert_fail(ptr noundef nonnull @.str.51, ptr noundef nonnull @.str.52, i32 noundef 117, ptr noundef nonnull @__PRETTY_FUNCTION__._Z14getKktFailuresRK12HighsOptionsRK7HighsLpRKSt6vectorIdSaIdEERK13HighsSolutionRK10HighsBasisR9HighsInfoR21HighsPrimalDualErrorsb) #9
  unreachable

.critedge:                                        ; preds = %8
  br i1 %.pre497, label %.critedge2, label %52

52:                                               ; preds = %.critedge
  %53 = load i8, ptr %4, align 8, !tbaa !25, !range !26, !noundef !27
  %54 = trunc nuw i8 %53 to i1
  br i1 %54, label %57, label %.critedge2

.thread:                                          ; preds = %50
  %55 = load i8, ptr %4, align 8, !tbaa !25, !range !26, !noundef !27
  %56 = trunc nuw i8 %55 to i1
  br i1 %56, label %57, label %.critedge2.thread500

57:                                               ; preds = %.thread, %52
  tail call void @__assert_fail(ptr noundef nonnull @.str.53, ptr noundef nonnull @.str.52, i32 noundef 119, ptr noundef nonnull @__PRETTY_FUNCTION__._Z14getKktFailuresRK12HighsOptionsRK7HighsLpRKSt6vectorIdSaIdEERK13HighsSolutionRK10HighsBasisR9HighsInfoR21HighsPrimalDualErrorsb) #9
  unreachable

.critedge2:                                       ; preds = %.critedge, %52
  %58 = getelementptr inbounds i8, ptr %3, i64 8
  %59 = tail call noundef i64 @_ZNKSt6vectorIdSaIdEE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24) %58) #8
  %60 = trunc i64 %59 to i32
  %61 = load i32, ptr %1, align 8, !tbaa !28
  %.not414 = icmp sgt i32 %61, %60
  br i1 %.not414, label %62, label %63

62:                                               ; preds = %.critedge2
  tail call void @__assert_fail(ptr noundef nonnull @.str.54, ptr noundef nonnull @.str.52, i32 noundef 124, ptr noundef nonnull @__PRETTY_FUNCTION__._Z14getKktFailuresRK12HighsOptionsRK7HighsLpRKSt6vectorIdSaIdEERK13HighsSolutionRK10HighsBasisR9HighsInfoR21HighsPrimalDualErrorsb) #9
  unreachable

63:                                               ; preds = %.critedge2
  %64 = getelementptr inbounds i8, ptr %3, i64 56
  %65 = tail call noundef i64 @_ZNKSt6vectorIdSaIdEE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24) %64) #8
  %66 = trunc i64 %65 to i32
  %67 = getelementptr inbounds i8, ptr %1, i64 4
  %68 = load i32, ptr %67, align 4, !tbaa !57
  %.not415 = icmp sgt i32 %68, %66
  br i1 %.not415, label %69, label %70

69:                                               ; preds = %63
  tail call void @__assert_fail(ptr noundef nonnull @.str.55, ptr noundef nonnull @.str.52, i32 noundef 125, ptr noundef nonnull @__PRETTY_FUNCTION__._Z14getKktFailuresRK12HighsOptionsRK7HighsLpRKSt6vectorIdSaIdEERK13HighsSolutionRK10HighsBasisR9HighsInfoR21HighsPrimalDualErrorsb) #9
  unreachable

70:                                               ; preds = %63
  store i32 0, ptr %29, align 8, !tbaa !20
  tail call void @llvm.memset.p0.i64(ptr noundef nonnull align 8 dereferenceable(16) %32, i8 0, i64 16, i1 false)
  tail call void @_ZN10HighsError5resetEv(ptr noundef nonnull align 8 dereferenceable(32) %30)
  %71 = load i8, ptr %45, align 1, !tbaa !25, !range !26, !noundef !27
  %72 = trunc nuw i8 %71 to i1
  br i1 %72, label %73, label %.critedge2.thread500

73:                                               ; preds = %70
  %74 = getelementptr inbounds i8, ptr %3, i64 32
  %75 = tail call noundef i64 @_ZNKSt6vectorIdSaIdEE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24) %74) #8
  %76 = trunc i64 %75 to i32
  %77 = load i32, ptr %1, align 8, !tbaa !28
  %.not416 = icmp sgt i32 %77, %76
  br i1 %.not416, label %78, label %79

78:                                               ; preds = %73
  tail call void @__assert_fail(ptr noundef nonnull @.str.56, ptr noundef nonnull @.str.52, i32 noundef 133, ptr noundef nonnull @__PRETTY_FUNCTION__._Z14getKktFailuresRK12HighsOptionsRK7HighsLpRKSt6vectorIdSaIdEERK13HighsSolutionRK10HighsBasisR9HighsInfoR21HighsPrimalDualErrorsb) #9
  unreachable

79:                                               ; preds = %73
  %80 = getelementptr inbounds i8, ptr %3, i64 80
  %81 = tail call noundef i64 @_ZNKSt6vectorIdSaIdEE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24) %80) #8
  %82 = trunc i64 %81 to i32
  %83 = load i32, ptr %67, align 4, !tbaa !57
  %.not417 = icmp sgt i32 %83, %82
  br i1 %.not417, label %84, label %85

84:                                               ; preds = %79
  tail call void @__assert_fail(ptr noundef nonnull @.str.57, ptr noundef nonnull @.str.52, i32 noundef 134, ptr noundef nonnull @__PRETTY_FUNCTION__._Z14getKktFailuresRK12HighsOptionsRK7HighsLpRKSt6vectorIdSaIdEERK13HighsSolutionRK10HighsBasisR9HighsInfoR21HighsPrimalDualErrorsb) #9
  unreachable

85:                                               ; preds = %79
  store i32 0, ptr %36, align 8, !tbaa !20
  tail call void @llvm.memset.p0.i64(ptr noundef nonnull align 8 dereferenceable(16) %39, i8 0, i64 16, i1 false)
  tail call void @_ZN10HighsError5resetEv(ptr noundef nonnull align 8 dereferenceable(32) %37)
  br label %.critedge2.thread500

.critedge2.thread500:                             ; preds = %.thread, %70, %85
  %86 = getelementptr inbounds i8, ptr %6, i64 48
  %87 = getelementptr inbounds i8, ptr %6, i64 80
  %88 = getelementptr inbounds i8, ptr %6, i64 88
  %89 = getelementptr inbounds i8, ptr %6, i64 104
  %90 = getelementptr inbounds i8, ptr %6, i64 96
  %91 = getelementptr inbounds i8, ptr %6, i64 56
  %92 = getelementptr inbounds i8, ptr %6, i64 64
  %93 = getelementptr inbounds i8, ptr %6, i64 144
  %94 = getelementptr inbounds i8, ptr %6, i64 152
  %95 = getelementptr inbounds i8, ptr %6, i64 168
  %96 = getelementptr inbounds i8, ptr %6, i64 160
  %97 = getelementptr inbounds i8, ptr %6, i64 72
  %98 = getelementptr inbounds i8, ptr %6, i64 4
  %99 = getelementptr inbounds i8, ptr %6, i64 8
  %100 = getelementptr inbounds i8, ptr %6, i64 16
  %101 = getelementptr inbounds i8, ptr %6, i64 24
  %102 = getelementptr inbounds i8, ptr %6, i64 32
  %103 = getelementptr inbounds i8, ptr %6, i64 40
  %104 = load i8, ptr %3, align 8, !tbaa !25, !range !26, !noundef !27
  %105 = trunc nuw i8 %104 to i1
  %brmerge.not = and i1 %105, %7
  br i1 %brmerge.not, label %106, label %107

106:                                              ; preds = %.critedge2.thread500
  store i32 0, ptr %86, align 8, !tbaa !20
  store double 0.000000e+00, ptr %87, align 8, !tbaa !21
  store double 0.000000e+00, ptr %91, align 8, !tbaa !21
  tail call void @_ZN10HighsError5resetEv(ptr noundef nonnull align 8 dereferenceable(32) %87)
  br label %108

107:                                              ; preds = %.critedge2.thread500
  store i32 -1, ptr %86, align 8, !tbaa !20
  store double 0x7FF0000000000000, ptr %87, align 8, !tbaa !21
  store double 0x7FF0000000000000, ptr %91, align 8, !tbaa !21
  tail call void @_ZN10HighsError10invalidateEv(ptr noundef nonnull align 8 dereferenceable(32) %87)
  br label %108

108:                                              ; preds = %107, %106
  %109 = load i8, ptr %45, align 1, !tbaa !25, !range !26, !noundef !27
  %110 = trunc nuw i8 %109 to i1
  %brmerge436.not = and i1 %110, %7
  br i1 %brmerge436.not, label %111, label %112

111:                                              ; preds = %108
  store i32 0, ptr %92, align 8, !tbaa !20
  store double 0.000000e+00, ptr %93, align 8, !tbaa !21
  store double 0.000000e+00, ptr %97, align 8, !tbaa !21
  tail call void @_ZN10HighsError5resetEv(ptr noundef nonnull align 8 dereferenceable(32) %93)
  br label %113

112:                                              ; preds = %108
  store i32 -1, ptr %92, align 8, !tbaa !20
  store double 0x7FF0000000000000, ptr %93, align 8, !tbaa !21
  store double 0x7FF0000000000000, ptr %97, align 8, !tbaa !21
  tail call void @_ZN10HighsError10invalidateEv(ptr noundef nonnull align 8 dereferenceable(32) %93)
  br label %113

113:                                              ; preds = %112, %111
  %114 = load i8, ptr %4, align 8, !tbaa !25, !range !26, !noundef !27
  %115 = trunc nuw i8 %114 to i1
  %not. = xor i1 %115, true
  %.437 = sext i1 %not. to i32
  %.438 = select i1 %115, double 0.000000e+00, double 0x7FF0000000000000
  store i32 %.437, ptr %6, align 8, !tbaa !20
  store i32 %.437, ptr %98, align 4, !tbaa !20
  store double %.438, ptr %99, align 8, !tbaa !21
  store double %.438, ptr %100, align 8, !tbaa !21
  store i32 %.437, ptr %101, align 8, !tbaa !20
  store double %.438, ptr %102, align 8, !tbaa !21
  store double %.438, ptr %103, align 8, !tbaa !21
  %116 = load i8, ptr %3, align 8, !tbaa !25, !range !26, !noundef !27
  %117 = trunc nuw i8 %116 to i1
  br i1 %117, label %118, label %574

118:                                              ; preds = %113
  call void @llvm.lifetime.start.p0(i64 24, ptr nonnull %9) #8
  call void @_ZNSt6vectorIdSaIdEEC2Ev(ptr noundef nonnull align 8 dereferenceable(24) %9) #8
  call void @llvm.lifetime.start.p0(i64 24, ptr nonnull %10) #8
  call void @_ZNSt6vectorIdSaIdEEC2Ev(ptr noundef nonnull align 8 dereferenceable(24) %10) #8
  call void @llvm.lifetime.start.p0(i64 24, ptr nonnull %11) #8
  call void @_ZNSt6vectorIdSaIdEEC2Ev(ptr noundef nonnull align 8 dereferenceable(24) %11) #8
  call void @llvm.lifetime.start.p0(i64 24, ptr nonnull %12) #8
  call void @_ZNSt6vectorIdSaIdEEC2Ev(ptr noundef nonnull align 8 dereferenceable(24) %12) #8
  br i1 %7, label %119, label %141

119:                                              ; preds = %118
  %120 = getelementptr inbounds i8, ptr %1, i64 4
  %121 = load i32, ptr %120, align 4, !tbaa !57
  %122 = sext i32 %121 to i64
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %13) #8
  store double 0.000000e+00, ptr %13, align 8, !tbaa !21
  invoke void @_ZNSt6vectorIdSaIdEE6assignEmRKd(ptr noundef nonnull align 8 dereferenceable(24) %9, i64 noundef %122, ptr noundef nonnull align 8 dereferenceable(8) %13)
          to label %123 unwind label %135

123:                                              ; preds = %119
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %13) #8
  %124 = load i32, ptr %120, align 4, !tbaa !57
  %125 = sext i32 %124 to i64
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %14) #8
  store double 0.000000e+00, ptr %14, align 8, !tbaa !21
  invoke void @_ZNSt6vectorIdSaIdEE6assignEmRKd(ptr noundef nonnull align 8 dereferenceable(24) %10, i64 noundef %125, ptr noundef nonnull align 8 dereferenceable(8) %14)
          to label %126 unwind label %137

126:                                              ; preds = %123
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %14) #8
  %127 = load i8, ptr %45, align 1, !tbaa !25, !range !26, !noundef !27
  %128 = trunc nuw i8 %127 to i1
  br i1 %128, label %129, label %141

129:                                              ; preds = %126
  %130 = load i32, ptr %1, align 8, !tbaa !28
  %131 = sext i32 %130 to i64
  invoke void @_ZNSt6vectorIdSaIdEE6resizeEm(ptr noundef nonnull align 8 dereferenceable(24) %11, i64 noundef %131)
          to label %132 unwind label %139

132:                                              ; preds = %129
  %133 = load i32, ptr %1, align 8, !tbaa !28
  %134 = sext i32 %133 to i64
  invoke void @_ZNSt6vectorIdSaIdEE6resizeEm(ptr noundef nonnull align 8 dereferenceable(24) %12, i64 noundef %134)
          to label %141 unwind label %139

135:                                              ; preds = %119
  %136 = landingpad { ptr, i32 }
          cleanup
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %13) #8
  br label %576

137:                                              ; preds = %123
  %138 = landingpad { ptr, i32 }
          cleanup
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %14) #8
  br label %576

139:                                              ; preds = %132, %129
  %140 = landingpad { ptr, i32 }
          cleanup
  br label %576

141:                                              ; preds = %126, %132, %118
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %15) #8
  store i8 4, ptr %15, align 1, !tbaa !58
  %142 = load i8, ptr %4, align 8, !tbaa !25, !range !26, !noundef !27
  %143 = trunc nuw i8 %142 to i1
  %. = select i1 %143, ptr %15, ptr null
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %16) #8
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %17) #8
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %18) #8
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %19) #8
  %144 = getelementptr inbounds i8, ptr %1, i64 4
  %145 = load i32, ptr %1, align 8, !tbaa !28
  %146 = load i32, ptr %144, align 4, !tbaa !57
  %147 = add nsw i32 %146, %145
  %148 = icmp sgt i32 %147, 0
  br i1 %148, label %.lr.ph465, label %._crit_edge

.lr.ph465:                                        ; preds = %141
  %149 = getelementptr inbounds i8, ptr %1, i64 80
  %150 = getelementptr inbounds i8, ptr %1, i64 104
  %151 = getelementptr inbounds i8, ptr %3, i64 56
  %152 = getelementptr inbounds i8, ptr %3, i64 80
  %153 = getelementptr inbounds i8, ptr %4, i64 72
  %154 = getelementptr inbounds i8, ptr %1, i64 32
  %155 = getelementptr inbounds i8, ptr %1, i64 56
  %156 = getelementptr inbounds i8, ptr %3, i64 8
  %157 = getelementptr inbounds i8, ptr %3, i64 32
  %158 = getelementptr inbounds i8, ptr %4, i64 48
  %159 = getelementptr inbounds i8, ptr %1, i64 240
  %160 = getelementptr inbounds i8, ptr %1, i64 144
  %161 = getelementptr inbounds i8, ptr %1, i64 192
  %162 = getelementptr inbounds i8, ptr %1, i64 216
  br label %167

._crit_edge:                                      ; preds = %.loopexit452, %141
  %163 = phi i32 [ %146, %141 ], [ %360, %.loopexit452 ]
  %164 = phi i32 [ %145, %141 ], [ %359, %.loopexit452 ]
  %165 = load i8, ptr %45, align 1, !tbaa !25, !range !26, !noundef !27
  %166 = trunc nuw i8 %165 to i1
  br i1 %166, label %364, label %443

167:                                              ; preds = %.lr.ph465, %.loopexit452
  %indvars.iv486 = phi i64 [ 0, %.lr.ph465 ], [ %indvars.iv.next487.pre-phi, %.loopexit452 ]
  %168 = phi i32 [ %145, %.lr.ph465 ], [ %359, %.loopexit452 ]
  %.0388464 = phi double [ 0.000000e+00, %.lr.ph465 ], [ %217, %.loopexit452 ]
  %.0390463 = phi i8 [ 0, %.lr.ph465 ], [ %.2392, %.loopexit452 ]
  %169 = sext i32 %168 to i64
  %170 = icmp slt i64 %indvars.iv486, %169
  br i1 %170, label %171, label %193

171:                                              ; preds = %167
  %172 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNKSt6vectorIdSaIdEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %154, i64 noundef %indvars.iv486) #8
  %173 = load double, ptr %172, align 8, !tbaa !21
  %174 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNKSt6vectorIdSaIdEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %155, i64 noundef %indvars.iv486) #8
  %175 = load double, ptr %174, align 8, !tbaa !21
  %176 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNKSt6vectorIdSaIdEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %156, i64 noundef %indvars.iv486) #8
  %177 = load double, ptr %176, align 8, !tbaa !21
  %178 = load i8, ptr %45, align 1, !tbaa !25, !range !26, !noundef !27
  %179 = trunc nuw i8 %178 to i1
  br i1 %179, label %180, label %183

180:                                              ; preds = %171
  %181 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNKSt6vectorIdSaIdEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %157, i64 noundef %indvars.iv486) #8
  %182 = load double, ptr %181, align 8, !tbaa !21
  br label %183

183:                                              ; preds = %180, %171
  %.1389 = phi double [ %182, %180 ], [ %.0388464, %171 ]
  %184 = load i8, ptr %4, align 8, !tbaa !25, !range !26, !noundef !27
  %185 = trunc nuw i8 %184 to i1
  br i1 %185, label %186, label %189

186:                                              ; preds = %183
  %187 = call noundef nonnull align 1 dereferenceable(1) ptr @_ZNKSt6vectorI16HighsBasisStatusSaIS0_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %158, i64 noundef %indvars.iv486) #8
  %188 = load i8, ptr %187, align 1, !tbaa !58
  store i8 %188, ptr %15, align 1, !tbaa !58
  br label %189

189:                                              ; preds = %186, %183
  br i1 %.not, label %214, label %190

190:                                              ; preds = %189
  %191 = call noundef nonnull align 1 dereferenceable(1) ptr @_ZNKSt6vectorI12HighsVarTypeSaIS0_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %46, i64 noundef %indvars.iv486) #8
  %192 = load i8, ptr %191, align 1, !tbaa !60
  br label %214

193:                                              ; preds = %167
  %194 = trunc nuw nsw i64 %indvars.iv486 to i32
  %195 = sub nsw i32 %194, %168
  %196 = sext i32 %195 to i64
  %197 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNKSt6vectorIdSaIdEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %149, i64 noundef %196) #8
  %198 = load double, ptr %197, align 8, !tbaa !21
  %199 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNKSt6vectorIdSaIdEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %150, i64 noundef %196) #8
  %200 = load double, ptr %199, align 8, !tbaa !21
  %201 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNKSt6vectorIdSaIdEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %151, i64 noundef %196) #8
  %202 = load double, ptr %201, align 8, !tbaa !21
  %203 = load i8, ptr %45, align 1, !tbaa !25, !range !26, !noundef !27
  %204 = trunc nuw i8 %203 to i1
  br i1 %204, label %205, label %208

205:                                              ; preds = %193
  %206 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNKSt6vectorIdSaIdEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %152, i64 noundef %196) #8
  %207 = load double, ptr %206, align 8, !tbaa !21
  br label %208

208:                                              ; preds = %205, %193
  %.2 = phi double [ %207, %205 ], [ %.0388464, %193 ]
  %209 = load i8, ptr %4, align 8, !tbaa !25, !range !26, !noundef !27
  %210 = trunc nuw i8 %209 to i1
  br i1 %210, label %211, label %214

211:                                              ; preds = %208
  %212 = call noundef nonnull align 1 dereferenceable(1) ptr @_ZNKSt6vectorI16HighsBasisStatusSaIS0_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %153, i64 noundef %196) #8
  %213 = load i8, ptr %212, align 1, !tbaa !58
  store i8 %213, ptr %15, align 1, !tbaa !58
  br label %214

214:                                              ; preds = %208, %211, %189, %190
  %.2392 = phi i8 [ %192, %190 ], [ %.0390463, %189 ], [ 0, %211 ], [ 0, %208 ]
  %.3 = phi double [ %.1389, %190 ], [ %.1389, %189 ], [ %.2, %211 ], [ %.2, %208 ]
  %.0386 = phi double [ %177, %190 ], [ %177, %189 ], [ %202, %211 ], [ %202, %208 ]
  %.0385 = phi double [ %175, %190 ], [ %175, %189 ], [ %200, %211 ], [ %200, %208 ]
  %.0384 = phi double [ %173, %190 ], [ %173, %189 ], [ %198, %211 ], [ %198, %208 ]
  %215 = load i32, ptr %159, align 8, !tbaa !62
  %216 = sitofp i32 %215 to double
  %217 = fmul double %.3, %216
  %218 = invoke noundef zeroext i1 @_Z22getVariableKktFailuresddddddPK16HighsBasisStatus12HighsVarTypeRdS3_S3_S3_(double noundef %26, double noundef %28, double noundef %.0384, double noundef %.0385, double noundef %.0386, double noundef %217, ptr noundef %., i8 noundef zeroext %.2392, ptr noundef nonnull align 8 dereferenceable(8) %16, ptr noundef nonnull align 8 dereferenceable(8) %17, ptr noundef nonnull align 8 dereferenceable(8) %18, ptr noundef nonnull align 8 dereferenceable(8) %19)
          to label %219 unwind label %.loopexit453

219:                                              ; preds = %214
  br i1 %218, label %.critedge440, label %220

220:                                              ; preds = %219
  %221 = trunc nuw nsw i64 %indvars.iv486 to i32
  %222 = getelementptr inbounds i8, ptr %0, i64 896
  %223 = load i32, ptr %1, align 8, !tbaa !28
  %224 = icmp sgt i32 %223, %221
  %.str.59..str.60 = select i1 %224, ptr @.str.59, ptr @.str.60
  %225 = select i1 %224, i32 0, i32 %223
  %226 = sub nsw i32 %221, %225
  %227 = load double, ptr %19, align 8, !tbaa !21
  invoke void (ptr, i32, ptr, ...) @_Z12highsLogUserRK15HighsLogOptions12HighsLogTypePKcz(ptr noundef nonnull align 8 dereferenceable(89) %222, i32 noundef 5, ptr noundef nonnull @.str.58, ptr noundef nonnull %.str.59..str.60, i32 noundef %226, double noundef %.0384, double noundef %.0386, double noundef %.0385, double noundef %227)
          to label %228 unwind label %.loopexit.split-lp

.loopexit453:                                     ; preds = %214
  %lpad.loopexit = landingpad { ptr, i32 }
          cleanup
  br label %575

.loopexit.split-lp:                               ; preds = %220
  %lpad.loopexit.split-lp = landingpad { ptr, i32 }
          cleanup
  br label %575

228:                                              ; preds = %220
  call void @__assert_fail(ptr noundef nonnull @.str.61, ptr noundef nonnull @.str.52, i32 noundef 288, ptr noundef nonnull @__PRETTY_FUNCTION__._Z14getKktFailuresRK12HighsOptionsRK7HighsLpRKSt6vectorIdSaIdEERK13HighsSolutionRK10HighsBasisR9HighsInfoR21HighsPrimalDualErrorsb) #9
  unreachable

.critedge440:                                     ; preds = %219
  %229 = load double, ptr %16, align 8, !tbaa !21
  %230 = fcmp ogt double %229, %26
  br i1 %230, label %231, label %234

231:                                              ; preds = %.critedge440
  %232 = load i32, ptr %29, align 8, !tbaa !20
  %233 = add nsw i32 %232, 1
  store i32 %233, ptr %29, align 8, !tbaa !20
  br label %234

234:                                              ; preds = %231, %.critedge440
  %235 = load double, ptr %32, align 8, !tbaa !21
  %236 = fcmp olt double %235, %229
  br i1 %236, label %237, label %239

237:                                              ; preds = %234
  %238 = trunc nuw nsw i64 %indvars.iv486 to i32
  store i32 %238, ptr %31, align 8, !tbaa !20
  store double %229, ptr %32, align 8, !tbaa !21
  br label %239

239:                                              ; preds = %237, %234
  %240 = load double, ptr %34, align 8, !tbaa !21
  %241 = load double, ptr %17, align 8, !tbaa !21
  %242 = fcmp olt double %240, %241
  br i1 %242, label %243, label %245

243:                                              ; preds = %239
  %244 = trunc nuw nsw i64 %indvars.iv486 to i32
  store i32 %244, ptr %33, align 8, !tbaa !20
  store double %241, ptr %34, align 8, !tbaa !21
  br label %245

245:                                              ; preds = %243, %239
  %246 = load double, ptr %35, align 8, !tbaa !21
  %247 = fadd double %229, %246
  store double %247, ptr %35, align 8, !tbaa !21
  %248 = load i8, ptr %45, align 1, !tbaa !25, !range !26, !noundef !27
  %249 = trunc nuw i8 %248 to i1
  br i1 %249, label %250, label %264

250:                                              ; preds = %245
  %251 = load double, ptr %18, align 8, !tbaa !21
  %252 = fcmp ogt double %251, %28
  br i1 %252, label %253, label %256

253:                                              ; preds = %250
  %254 = load i32, ptr %36, align 8, !tbaa !20
  %255 = add nsw i32 %254, 1
  store i32 %255, ptr %36, align 8, !tbaa !20
  br label %256

256:                                              ; preds = %253, %250
  %257 = load double, ptr %39, align 8, !tbaa !21
  %258 = fcmp olt double %257, %251
  br i1 %258, label %259, label %261

259:                                              ; preds = %256
  store double %251, ptr %39, align 8, !tbaa !21
  %260 = trunc nuw nsw i64 %indvars.iv486 to i32
  store i32 %260, ptr %38, align 8, !tbaa !20
  br label %261

261:                                              ; preds = %259, %256
  %262 = load double, ptr %40, align 8, !tbaa !21
  %263 = fadd double %251, %262
  store double %263, ptr %40, align 8, !tbaa !21
  br label %264

264:                                              ; preds = %261, %245
  %265 = load i8, ptr %4, align 8, !tbaa !25, !range !26, !noundef !27
  %266 = trunc nuw i8 %265 to i1
  br i1 %266, label %267, label %299

267:                                              ; preds = %264
  %268 = load i8, ptr %15, align 1, !tbaa !58
  %269 = icmp eq i8 %268, 1
  br i1 %269, label %270, label %287

270:                                              ; preds = %267
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %20) #8
  %271 = load double, ptr %18, align 8, !tbaa !21
  store double %271, ptr %20, align 8, !tbaa !21
  %272 = fcmp ogt double %271, 0.000000e+00
  br i1 %272, label %273, label %286

273:                                              ; preds = %270
  %274 = load i32, ptr %6, align 8, !tbaa !20
  %275 = add nsw i32 %274, 1
  store i32 %275, ptr %6, align 8, !tbaa !20
  %276 = fcmp ogt double %271, %28
  br i1 %276, label %277, label %280

277:                                              ; preds = %273
  %278 = load i32, ptr %98, align 4, !tbaa !20
  %279 = add nsw i32 %278, 1
  store i32 %279, ptr %98, align 4, !tbaa !20
  br label %280

280:                                              ; preds = %277, %273
  %281 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZSt3maxIdERKT_S2_S2_(ptr noundef nonnull align 8 dereferenceable(8) %20, ptr noundef nonnull align 8 dereferenceable(8) %99)
  %282 = load double, ptr %281, align 8, !tbaa !21
  store double %282, ptr %99, align 8, !tbaa !21
  %283 = load double, ptr %20, align 8, !tbaa !21
  %284 = load double, ptr %100, align 8, !tbaa !21
  %285 = fadd double %283, %284
  store double %285, ptr %100, align 8, !tbaa !21
  br label %286

286:                                              ; preds = %280, %270
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %20) #8
  br label %299

287:                                              ; preds = %267
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %21) #8
  %288 = load double, ptr %19, align 8, !tbaa !21
  store double %288, ptr %21, align 8, !tbaa !21
  %289 = fcmp ogt double %288, 0.000000e+00
  br i1 %289, label %290, label %293

290:                                              ; preds = %287
  %291 = load i32, ptr %101, align 8, !tbaa !20
  %292 = add nsw i32 %291, 1
  store i32 %292, ptr %101, align 8, !tbaa !20
  br label %293

293:                                              ; preds = %290, %287
  %294 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZSt3maxIdERKT_S2_S2_(ptr noundef nonnull align 8 dereferenceable(8) %21, ptr noundef nonnull align 8 dereferenceable(8) %102)
  %295 = load double, ptr %294, align 8, !tbaa !21
  store double %295, ptr %102, align 8, !tbaa !21
  %296 = load double, ptr %21, align 8, !tbaa !21
  %297 = load double, ptr %103, align 8, !tbaa !21
  %298 = fadd double %296, %297
  store double %298, ptr %103, align 8, !tbaa !21
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %21) #8
  br label %299

299:                                              ; preds = %286, %293, %264
  %300 = load i32, ptr %1, align 8, !tbaa !28
  %301 = sext i32 %300 to i64
  %302 = icmp slt i64 %indvars.iv486, %301
  %brmerge443.not = and i1 %302, %7
  br i1 %brmerge443.not, label %303, label %..loopexit452_crit_edge

..loopexit452_crit_edge:                          ; preds = %299
  %.pre498 = add nuw nsw i64 %indvars.iv486, 1
  br label %.loopexit452

303:                                              ; preds = %299
  %304 = load i8, ptr %45, align 1, !tbaa !25, !range !26, !noundef !27
  %305 = trunc nuw i8 %304 to i1
  br i1 %305, label %.sink.split, label %313

.sink.split:                                      ; preds = %303
  %306 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNKSt6vectorIdSaIdEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %2, i64 noundef %indvars.iv486) #8
  %307 = load double, ptr %306, align 8, !tbaa !21
  %308 = fcmp ogt double %307, 0.000000e+00
  %309 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNKSt6vectorIdSaIdEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %2, i64 noundef %indvars.iv486) #8
  %310 = load double, ptr %309, align 8, !tbaa !21
  %311 = fneg double %310
  %.sink511 = select i1 %308, ptr %11, ptr %12
  %.sink = select i1 %308, double %310, double %311
  %312 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt6vectorIdSaIdEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %.sink511, i64 noundef %indvars.iv486) #8
  store double %.sink, ptr %312, align 8, !tbaa !21
  br label %313

313:                                              ; preds = %.sink.split, %303
  %314 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNKSt6vectorIiSaIiEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %160, i64 noundef %indvars.iv486) #8
  %315 = load i32, ptr %314, align 4, !tbaa !20
  %316 = add nuw nsw i64 %indvars.iv486, 1
  %317 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNKSt6vectorIiSaIiEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %160, i64 noundef %316) #8
  %318 = load i32, ptr %317, align 4, !tbaa !20
  %319 = icmp slt i32 %315, %318
  br i1 %319, label %.lr.ph.preheader, label %.loopexit452

.lr.ph.preheader:                                 ; preds = %313
  %320 = sext i32 %315 to i64
  br label %.lr.ph

.lr.ph:                                           ; preds = %.lr.ph.preheader, %354
  %indvars.iv = phi i64 [ %320, %.lr.ph.preheader ], [ %indvars.iv.next, %354 ]
  %321 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNKSt6vectorIiSaIiEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %161, i64 noundef %indvars.iv) #8
  %322 = load i32, ptr %321, align 4, !tbaa !20
  %323 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNKSt6vectorIdSaIdEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %162, i64 noundef %indvars.iv) #8
  %324 = load double, ptr %323, align 8, !tbaa !21
  %325 = fmul double %.0386, %324
  %326 = fcmp ogt double %325, 0.000000e+00
  %327 = sext i32 %322 to i64
  br i1 %326, label %328, label %332

328:                                              ; preds = %.lr.ph
  %329 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt6vectorIdSaIdEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %9, i64 noundef %327) #8
  %330 = load double, ptr %329, align 8, !tbaa !21
  %331 = fadd double %325, %330
  store double %331, ptr %329, align 8, !tbaa !21
  br label %336

332:                                              ; preds = %.lr.ph
  %333 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt6vectorIdSaIdEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %10, i64 noundef %327) #8
  %334 = load double, ptr %333, align 8, !tbaa !21
  %335 = fsub double %334, %325
  store double %335, ptr %333, align 8, !tbaa !21
  br label %336

336:                                              ; preds = %332, %328
  %337 = load i8, ptr %45, align 1, !tbaa !25, !range !26, !noundef !27
  %338 = trunc nuw i8 %337 to i1
  br i1 %338, label %339, label %354

339:                                              ; preds = %336
  %340 = sext i32 %322 to i64
  %341 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNKSt6vectorIdSaIdEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %152, i64 noundef %340) #8
  %342 = load double, ptr %341, align 8, !tbaa !21
  %343 = fneg double %342
  %344 = fmul double %324, %343
  %345 = fcmp ogt double %344, 0.000000e+00
  br i1 %345, label %346, label %350

346:                                              ; preds = %339
  %347 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt6vectorIdSaIdEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %11, i64 noundef %indvars.iv486) #8
  %348 = load double, ptr %347, align 8, !tbaa !21
  %349 = fadd double %344, %348
  store double %349, ptr %347, align 8, !tbaa !21
  br label %354

350:                                              ; preds = %339
  %351 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt6vectorIdSaIdEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %12, i64 noundef %indvars.iv486) #8
  %352 = load double, ptr %351, align 8, !tbaa !21
  %353 = fsub double %352, %344
  store double %353, ptr %351, align 8, !tbaa !21
  br label %354

354:                                              ; preds = %346, %350, %336
  %indvars.iv.next = add nsw i64 %indvars.iv, 1
  %355 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNKSt6vectorIiSaIiEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %160, i64 noundef %316) #8
  %356 = load i32, ptr %355, align 4, !tbaa !20
  %357 = sext i32 %356 to i64
  %358 = icmp slt i64 %indvars.iv.next, %357
  br i1 %358, label %.lr.ph, label %.loopexit452, !llvm.loop !63

.loopexit452:                                     ; preds = %354, %..loopexit452_crit_edge, %313
  %indvars.iv.next487.pre-phi = phi i64 [ %.pre498, %..loopexit452_crit_edge ], [ %316, %313 ], [ %316, %354 ]
  %359 = load i32, ptr %1, align 8, !tbaa !28
  %360 = load i32, ptr %144, align 4, !tbaa !57
  %361 = add nsw i32 %360, %359
  %362 = sext i32 %361 to i64
  %363 = icmp slt i64 %indvars.iv.next487.pre-phi, %362
  br i1 %363, label %167, label %._crit_edge, !llvm.loop !65

364:                                              ; preds = %._crit_edge
  %365 = add nsw i32 %163, %164
  %366 = icmp sgt i32 %365, 0
  call void @llvm.memset.p0.i64(ptr noundef nonnull align 8 dereferenceable(16) %41, i8 0, i64 16, i1 false)
  br i1 %366, label %.lr.ph468, label %._crit_edge469

.lr.ph468:                                        ; preds = %364
  %367 = getelementptr inbounds i8, ptr %3, i64 56
  %368 = getelementptr inbounds i8, ptr %3, i64 80
  %369 = getelementptr inbounds i8, ptr %1, i64 80
  %370 = getelementptr inbounds i8, ptr %1, i64 104
  %371 = getelementptr inbounds i8, ptr %3, i64 8
  %372 = getelementptr inbounds i8, ptr %3, i64 32
  %373 = getelementptr inbounds i8, ptr %1, i64 32
  %374 = getelementptr inbounds i8, ptr %1, i64 56
  br label %376

._crit_edge469:                                   ; preds = %416, %364
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %23) #8
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %24) #8
  %375 = invoke noundef zeroext i1 @_Z28getComplementarityViolationsRK7HighsLpRK13HighsSolutionRdS5_(ptr noundef nonnull align 8 dereferenceable(920) %1, ptr noundef nonnull align 8 dereferenceable(104) %3, ptr noundef nonnull align 8 dereferenceable(8) %23, ptr noundef nonnull align 8 dereferenceable(8) %24)
          to label %428 unwind label %430

376:                                              ; preds = %.lr.ph468, %416
  %indvars.iv488 = phi i64 [ 0, %.lr.ph468 ], [ %indvars.iv.next489, %416 ]
  %377 = phi i32 [ %164, %.lr.ph468 ], [ %423, %416 ]
  %378 = sext i32 %377 to i64
  %379 = icmp slt i64 %indvars.iv488, %378
  br i1 %379, label %380, label %388

380:                                              ; preds = %376
  %381 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNKSt6vectorIdSaIdEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %371, i64 noundef %indvars.iv488) #8
  %382 = load double, ptr %381, align 8, !tbaa !21
  %383 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNKSt6vectorIdSaIdEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %372, i64 noundef %indvars.iv488) #8
  %384 = load double, ptr %383, align 8, !tbaa !21
  %385 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNKSt6vectorIdSaIdEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %373, i64 noundef %indvars.iv488) #8
  %386 = load double, ptr %385, align 8, !tbaa !21
  %387 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNKSt6vectorIdSaIdEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %374, i64 noundef %indvars.iv488) #8
  br label %399

388:                                              ; preds = %376
  %389 = trunc nuw nsw i64 %indvars.iv488 to i32
  %390 = sub nsw i32 %389, %377
  %391 = sext i32 %390 to i64
  %392 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNKSt6vectorIdSaIdEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %367, i64 noundef %391) #8
  %393 = load double, ptr %392, align 8, !tbaa !21
  %394 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNKSt6vectorIdSaIdEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %368, i64 noundef %391) #8
  %395 = load double, ptr %394, align 8, !tbaa !21
  %396 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNKSt6vectorIdSaIdEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %369, i64 noundef %391) #8
  %397 = load double, ptr %396, align 8, !tbaa !21
  %398 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNKSt6vectorIdSaIdEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %370, i64 noundef %391) #8
  br label %399

399:                                              ; preds = %388, %380
  %400 = phi double [ %386, %380 ], [ %397, %388 ]
  %401 = phi double [ %382, %380 ], [ %393, %388 ]
  %402 = phi double [ %384, %380 ], [ %395, %388 ]
  %.in429 = phi ptr [ %387, %380 ], [ %398, %388 ]
  %403 = load double, ptr %.in429, align 8, !tbaa !21
  %404 = fcmp oeq double %400, 0xFFF0000000000000
  %405 = fcmp oeq double %403, 0x7FF0000000000000
  %or.cond = select i1 %404, i1 %405, i1 false
  br i1 %or.cond, label %416, label %406

406:                                              ; preds = %399
  %407 = fadd double %400, %403
  %408 = fmul double %407, 5.000000e-01
  %409 = fcmp olt double %401, %408
  br i1 %409, label %410, label %413

410:                                              ; preds = %406
  %411 = fsub double %400, %401
  %412 = call double @llvm.fabs.f64(double %411)
  br label %416

413:                                              ; preds = %406
  %414 = fsub double %403, %401
  %415 = call double @llvm.fabs.f64(double %414)
  br label %416

416:                                              ; preds = %410, %413, %399
  %.0395 = phi double [ 1.000000e+00, %399 ], [ %412, %410 ], [ %415, %413 ]
  %417 = call double @llvm.fabs.f64(double %402)
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %22) #8
  %418 = fmul double %417, %.0395
  store double %418, ptr %22, align 8, !tbaa !21
  %419 = load double, ptr %42, align 8, !tbaa !21
  %420 = fadd double %418, %419
  store double %420, ptr %42, align 8, !tbaa !21
  %421 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZSt3maxIdERKT_S2_S2_(ptr noundef nonnull align 8 dereferenceable(8) %22, ptr noundef nonnull align 8 dereferenceable(8) %41)
  %422 = load double, ptr %421, align 8, !tbaa !21
  store double %422, ptr %41, align 8, !tbaa !21
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %22) #8
  %indvars.iv.next489 = add nuw nsw i64 %indvars.iv488, 1
  %423 = load i32, ptr %1, align 8, !tbaa !28
  %424 = load i32, ptr %144, align 4, !tbaa !57
  %425 = add nsw i32 %424, %423
  %426 = sext i32 %425 to i64
  %427 = icmp slt i64 %indvars.iv.next489, %426
  br i1 %427, label %376, label %._crit_edge469, !llvm.loop !66

428:                                              ; preds = %._crit_edge469
  br i1 %375, label %432, label %429

429:                                              ; preds = %428
  call void @__assert_fail(ptr noundef nonnull @.str.62, ptr noundef nonnull @.str.52, i32 noundef 398, ptr noundef nonnull @__PRETTY_FUNCTION__._Z14getKktFailuresRK12HighsOptionsRK7HighsLpRKSt6vectorIdSaIdEERK13HighsSolutionRK10HighsBasisR9HighsInfoR21HighsPrimalDualErrorsb) #9
  unreachable

430:                                              ; preds = %._crit_edge469
  %431 = landingpad { ptr, i32 }
          cleanup
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %24) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %23) #8
  br label %575

432:                                              ; preds = %428
  %433 = load double, ptr %23, align 8, !tbaa !21
  %434 = load double, ptr %41, align 8, !tbaa !21
  %435 = fcmp oeq double %433, %434
  br i1 %435, label %437, label %436

436:                                              ; preds = %432
  call void @__assert_fail(ptr noundef nonnull @.str.63, ptr noundef nonnull @.str.52, i32 noundef 400, ptr noundef nonnull @__PRETTY_FUNCTION__._Z14getKktFailuresRK12HighsOptionsRK7HighsLpRKSt6vectorIdSaIdEERK13HighsSolutionRK10HighsBasisR9HighsInfoR21HighsPrimalDualErrorsb) #9
  unreachable

437:                                              ; preds = %432
  %438 = load double, ptr %24, align 8, !tbaa !21
  %439 = load double, ptr %42, align 8, !tbaa !21
  %440 = fcmp oeq double %438, %439
  br i1 %440, label %442, label %441

441:                                              ; preds = %437
  call void @__assert_fail(ptr noundef nonnull @.str.64, ptr noundef nonnull @.str.52, i32 noundef 402, ptr noundef nonnull @__PRETTY_FUNCTION__._Z14getKktFailuresRK12HighsOptionsRK7HighsLpRKSt6vectorIdSaIdEERK13HighsSolutionRK10HighsBasisR9HighsInfoR21HighsPrimalDualErrorsb) #9
  unreachable

442:                                              ; preds = %437
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %24) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %23) #8
  br label %443

443:                                              ; preds = %442, %._crit_edge
  br i1 %7, label %.preheader451, label %.loopexit

.preheader451:                                    ; preds = %443
  %444 = load i32, ptr %144, align 4, !tbaa !57
  %445 = icmp sgt i32 %444, 0
  br i1 %445, label %.lr.ph471, label %._crit_edge472

.lr.ph471:                                        ; preds = %.preheader451
  %446 = getelementptr inbounds i8, ptr %3, i64 56
  br label %452

._crit_edge472:                                   ; preds = %502, %.preheader451
  %447 = load i8, ptr %45, align 1, !tbaa !25, !range !26, !noundef !27
  %448 = trunc nuw i8 %447 to i1
  %449 = load i32, ptr %1, align 8
  %450 = icmp sgt i32 %449, 0
  %or.cond476 = select i1 %448, i1 %450, i1 false
  br i1 %or.cond476, label %.lr.ph474, label %.loopexit

.lr.ph474:                                        ; preds = %._crit_edge472
  %451 = getelementptr inbounds i8, ptr %3, i64 32
  br label %508

452:                                              ; preds = %.lr.ph471, %502
  %indvars.iv491 = phi i64 [ 0, %.lr.ph471 ], [ %indvars.iv.next492, %502 ]
  %453 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNKSt6vectorIdSaIdEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %446, i64 noundef %indvars.iv491) #8
  %454 = load double, ptr %453, align 8, !tbaa !21
  %455 = fcmp olt double %454, 0.000000e+00
  br i1 %455, label %456, label %460

456:                                              ; preds = %452
  %457 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt6vectorIdSaIdEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %9, i64 noundef %indvars.iv491) #8
  %458 = load double, ptr %457, align 8, !tbaa !21
  %459 = fsub double %458, %454
  store double %459, ptr %457, align 8, !tbaa !21
  br label %464

460:                                              ; preds = %452
  %461 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt6vectorIdSaIdEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %10, i64 noundef %indvars.iv491) #8
  %462 = load double, ptr %461, align 8, !tbaa !21
  %463 = fadd double %454, %462
  store double %463, ptr %461, align 8, !tbaa !21
  br label %464

464:                                              ; preds = %460, %456
  %465 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt6vectorIdSaIdEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %9, i64 noundef %indvars.iv491) #8
  %466 = load double, ptr %465, align 8, !tbaa !21
  %467 = fcmp ult double %466, 0.000000e+00
  br i1 %467, label %468, label %469

468:                                              ; preds = %464
  call void @__assert_fail(ptr noundef nonnull @.str.65, ptr noundef nonnull @.str.52, i32 noundef 414, ptr noundef nonnull @__PRETTY_FUNCTION__._Z14getKktFailuresRK12HighsOptionsRK7HighsLpRKSt6vectorIdSaIdEERK13HighsSolutionRK10HighsBasisR9HighsInfoR21HighsPrimalDualErrorsb) #9
  unreachable

469:                                              ; preds = %464
  %470 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt6vectorIdSaIdEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %10, i64 noundef %indvars.iv491) #8
  %471 = load double, ptr %470, align 8, !tbaa !21
  %472 = fcmp ult double %471, 0.000000e+00
  br i1 %472, label %473, label %474

473:                                              ; preds = %469
  call void @__assert_fail(ptr noundef nonnull @.str.66, ptr noundef nonnull @.str.52, i32 noundef 415, ptr noundef nonnull @__PRETTY_FUNCTION__._Z14getKktFailuresRK12HighsOptionsRK7HighsLpRKSt6vectorIdSaIdEERK13HighsSolutionRK10HighsBasisR9HighsInfoR21HighsPrimalDualErrorsb) #9
  unreachable

474:                                              ; preds = %469
  %475 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt6vectorIdSaIdEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %9, i64 noundef %indvars.iv491) #8
  %476 = load double, ptr %475, align 8, !tbaa !21
  %477 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt6vectorIdSaIdEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %10, i64 noundef %indvars.iv491) #8
  %478 = load double, ptr %477, align 8, !tbaa !21
  %479 = fsub double %476, %478
  %480 = call double @llvm.fabs.f64(double %479)
  %481 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt6vectorIdSaIdEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %9, i64 noundef %indvars.iv491) #8
  %482 = load double, ptr %481, align 8, !tbaa !21
  %483 = fadd double %482, 1.000000e+00
  %484 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt6vectorIdSaIdEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %10, i64 noundef %indvars.iv491) #8
  %485 = load double, ptr %484, align 8, !tbaa !21
  %486 = fadd double %483, %485
  %487 = fdiv double %480, %486
  %488 = fcmp ogt double %480, 0x3D719799812DEA11
  br i1 %488, label %489, label %492

489:                                              ; preds = %474
  %490 = load i32, ptr %86, align 8, !tbaa !20
  %491 = add nsw i32 %490, 1
  store i32 %491, ptr %86, align 8, !tbaa !20
  br label %492

492:                                              ; preds = %489, %474
  %493 = load double, ptr %87, align 8, !tbaa !21
  %494 = fcmp olt double %493, %480
  br i1 %494, label %495, label %497

495:                                              ; preds = %492
  store double %480, ptr %87, align 8, !tbaa !21
  %496 = trunc nuw nsw i64 %indvars.iv491 to i32
  store i32 %496, ptr %88, align 8, !tbaa !20
  br label %497

497:                                              ; preds = %495, %492
  %498 = load double, ptr %90, align 8, !tbaa !21
  %499 = fcmp olt double %498, %487
  br i1 %499, label %500, label %502

500:                                              ; preds = %497
  store double %487, ptr %90, align 8, !tbaa !21
  %501 = trunc nuw nsw i64 %indvars.iv491 to i32
  store i32 %501, ptr %89, align 8, !tbaa !20
  br label %502

502:                                              ; preds = %500, %497
  %503 = load double, ptr %91, align 8, !tbaa !21
  %504 = fadd double %480, %503
  store double %504, ptr %91, align 8, !tbaa !21
  %indvars.iv.next492 = add nuw nsw i64 %indvars.iv491, 1
  %505 = load i32, ptr %144, align 4, !tbaa !57
  %506 = sext i32 %505 to i64
  %507 = icmp slt i64 %indvars.iv.next492, %506
  br i1 %507, label %452, label %._crit_edge472, !llvm.loop !67

508:                                              ; preds = %.lr.ph474, %558
  %indvars.iv494 = phi i64 [ 0, %.lr.ph474 ], [ %indvars.iv.next495, %558 ]
  %509 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNKSt6vectorIdSaIdEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %451, i64 noundef %indvars.iv494) #8
  %510 = load double, ptr %509, align 8, !tbaa !21
  %511 = fcmp olt double %510, 0.000000e+00
  br i1 %511, label %512, label %516

512:                                              ; preds = %508
  %513 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt6vectorIdSaIdEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %11, i64 noundef %indvars.iv494) #8
  %514 = load double, ptr %513, align 8, !tbaa !21
  %515 = fsub double %514, %510
  store double %515, ptr %513, align 8, !tbaa !21
  br label %520

516:                                              ; preds = %508
  %517 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt6vectorIdSaIdEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %12, i64 noundef %indvars.iv494) #8
  %518 = load double, ptr %517, align 8, !tbaa !21
  %519 = fadd double %510, %518
  store double %519, ptr %517, align 8, !tbaa !21
  br label %520

520:                                              ; preds = %516, %512
  %521 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt6vectorIdSaIdEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %11, i64 noundef %indvars.iv494) #8
  %522 = load double, ptr %521, align 8, !tbaa !21
  %523 = fcmp ult double %522, 0.000000e+00
  br i1 %523, label %524, label %525

524:                                              ; preds = %520
  call void @__assert_fail(ptr noundef nonnull @.str.67, ptr noundef nonnull @.str.52, i32 noundef 442, ptr noundef nonnull @__PRETTY_FUNCTION__._Z14getKktFailuresRK12HighsOptionsRK7HighsLpRKSt6vectorIdSaIdEERK13HighsSolutionRK10HighsBasisR9HighsInfoR21HighsPrimalDualErrorsb) #9
  unreachable

525:                                              ; preds = %520
  %526 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt6vectorIdSaIdEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %12, i64 noundef %indvars.iv494) #8
  %527 = load double, ptr %526, align 8, !tbaa !21
  %528 = fcmp ult double %527, 0.000000e+00
  br i1 %528, label %529, label %530

529:                                              ; preds = %525
  call void @__assert_fail(ptr noundef nonnull @.str.68, ptr noundef nonnull @.str.52, i32 noundef 443, ptr noundef nonnull @__PRETTY_FUNCTION__._Z14getKktFailuresRK12HighsOptionsRK7HighsLpRKSt6vectorIdSaIdEERK13HighsSolutionRK10HighsBasisR9HighsInfoR21HighsPrimalDualErrorsb) #9
  unreachable

530:                                              ; preds = %525
  %531 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt6vectorIdSaIdEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %11, i64 noundef %indvars.iv494) #8
  %532 = load double, ptr %531, align 8, !tbaa !21
  %533 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt6vectorIdSaIdEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %12, i64 noundef %indvars.iv494) #8
  %534 = load double, ptr %533, align 8, !tbaa !21
  %535 = fsub double %532, %534
  %536 = call double @llvm.fabs.f64(double %535)
  %537 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt6vectorIdSaIdEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %11, i64 noundef %indvars.iv494) #8
  %538 = load double, ptr %537, align 8, !tbaa !21
  %539 = fadd double %538, 1.000000e+00
  %540 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt6vectorIdSaIdEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %12, i64 noundef %indvars.iv494) #8
  %541 = load double, ptr %540, align 8, !tbaa !21
  %542 = fadd double %539, %541
  %543 = fdiv double %536, %542
  %544 = fcmp ogt double %536, 0x3D719799812DEA11
  br i1 %544, label %545, label %548

545:                                              ; preds = %530
  %546 = load i32, ptr %92, align 8, !tbaa !20
  %547 = add nsw i32 %546, 1
  store i32 %547, ptr %92, align 8, !tbaa !20
  br label %548

548:                                              ; preds = %545, %530
  %549 = load double, ptr %93, align 8, !tbaa !21
  %550 = fcmp olt double %549, %536
  br i1 %550, label %551, label %553

551:                                              ; preds = %548
  store double %536, ptr %93, align 8, !tbaa !21
  %552 = trunc nuw nsw i64 %indvars.iv494 to i32
  store i32 %552, ptr %94, align 8, !tbaa !20
  br label %553

553:                                              ; preds = %551, %548
  %554 = load double, ptr %96, align 8, !tbaa !21
  %555 = fcmp olt double %554, %543
  br i1 %555, label %556, label %558

556:                                              ; preds = %553
  store double %543, ptr %96, align 8, !tbaa !21
  %557 = trunc nuw nsw i64 %indvars.iv494 to i32
  store i32 %557, ptr %95, align 8, !tbaa !20
  br label %558

558:                                              ; preds = %556, %553
  %559 = load double, ptr %97, align 8, !tbaa !21
  %560 = fadd double %536, %559
  store double %560, ptr %97, align 8, !tbaa !21
  %indvars.iv.next495 = add nuw nsw i64 %indvars.iv494, 1
  %561 = load i32, ptr %1, align 8, !tbaa !28
  %562 = sext i32 %561 to i64
  %563 = icmp slt i64 %indvars.iv.next495, %562
  br i1 %563, label %508, label %.loopexit, !llvm.loop !68

.loopexit:                                        ; preds = %558, %._crit_edge472, %443
  %564 = load i32, ptr %29, align 8, !tbaa !20
  %.not424 = icmp eq i32 %564, 0
  %.444 = select i1 %.not424, i32 2, i32 1
  store i32 %.444, ptr %43, align 4, !tbaa !22
  %565 = load i8, ptr %45, align 1, !tbaa !25, !range !26, !noundef !27
  %566 = trunc nuw i8 %565 to i1
  br i1 %566, label %.sink.split512, label %568

.sink.split512:                                   ; preds = %.loopexit
  %567 = load i32, ptr %36, align 8, !tbaa !20
  %.not426 = icmp eq i32 %567, 0
  %.514 = select i1 %.not426, i32 2, i32 1
  store i32 %.514, ptr %44, align 8, !tbaa !24
  br label %568

568:                                              ; preds = %.sink.split512, %.loopexit
  %569 = load double, ptr %32, align 8, !tbaa !69
  store double %569, ptr %30, align 8, !tbaa !70
  %570 = load double, ptr %39, align 8, !tbaa !73
  store double %570, ptr %37, align 8, !tbaa !74
  %571 = getelementptr inbounds i8, ptr %6, i64 192
  store double %570, ptr %571, align 8, !tbaa !75
  %572 = load i32, ptr %38, align 8, !tbaa !76
  %573 = getelementptr inbounds i8, ptr %6, i64 200
  store i32 %572, ptr %573, align 8, !tbaa !77
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %19) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %18) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %17) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %16) #8
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %15) #8
  call void @_ZNSt6vectorIdSaIdEED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %12) #8
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %12) #8
  call void @_ZNSt6vectorIdSaIdEED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %11) #8
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %11) #8
  call void @_ZNSt6vectorIdSaIdEED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %10) #8
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %10) #8
  call void @_ZNSt6vectorIdSaIdEED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %9) #8
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %9) #8
  br label %574

574:                                              ; preds = %113, %568
  ret void

575:                                              ; preds = %.loopexit453, %.loopexit.split-lp, %430
  %.pn = phi { ptr, i32 } [ %431, %430 ], [ %lpad.loopexit, %.loopexit453 ], [ %lpad.loopexit.split-lp, %.loopexit.split-lp ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %19) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %18) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %17) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %16) #8
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %15) #8
  br label %576

576:                                              ; preds = %575, %139, %137, %135
  %.pn.pn = phi { ptr, i32 } [ %.pn, %575 ], [ %140, %139 ], [ %138, %137 ], [ %136, %135 ]
  call void @_ZNSt6vectorIdSaIdEED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %12) #8
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %12) #8
  call void @_ZNSt6vectorIdSaIdEED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %11) #8
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %11) #8
  call void @_ZNSt6vectorIdSaIdEED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %10) #8
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %10) #8
  call void @_ZNSt6vectorIdSaIdEED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %9) #8
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %9) #8
  resume { ptr, i32 } %.pn.pn
}

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

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

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

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

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

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

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

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

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

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

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

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

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

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

; Function Attrs: mustprogress uwtable
declare dso_local noundef zeroext i1 @_Z28getComplementarityViolationsRK7HighsLpRK13HighsSolutionRdS5_(ptr noundef nonnull align 8 dereferenceable(920), ptr noundef nonnull align 8 dereferenceable(104), ptr noundef nonnull align 8 dereferenceable(8), ptr noundef nonnull align 8 dereferenceable(8)) local_unnamed_addr #2

; Function Attrs: nocallback nofree nounwind willreturn memory(argmem: write)
declare void @llvm.memset.p0.i64(ptr nocapture writeonly, i8, i64, i1 immarg) #7

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 = { noreturn nounwind "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }
attributes #4 = { "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }
attributes #5 = { inlinehint mustprogress nounwind uwtable "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }
attributes #6 = { mustprogress nocallback nofree nosync nounwind speculatable willreturn memory(none) }
attributes #7 = { nocallback nofree nounwind willreturn memory(argmem: write) }
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, !13, i64 280}
!6 = !{!"_ZTS18HighsOptionsStruct", !7, i64 8, !7, i64 40, !7, i64 72, !7, i64 104, !13, i64 136, !7, i64 144, !7, i64 176, !14, i64 208, !7, i64 216, !13, i64 248, !13, i64 256, !13, i64 264, !13, i64 272, !13, i64 280, !13, i64 288, !13, i64 296, !13, i64 304, !13, i64 312, !13, i64 320, !13, i64 328, !14, i64 336, !14, i64 340, !14, i64 344, !14, i64 348, !14, i64 352, !14, i64 356, !14, i64 360, !14, i64 364, !14, i64 368, !14, i64 372, !14, i64 376, !14, i64 380, !14, i64 384, !14, i64 388, !7, i64 392, !15, i64 424, !15, i64 425, !15, i64 426, !14, i64 428, !14, i64 432, !7, i64 440, !15, i64 472, !15, i64 473, !15, i64 474, !14, i64 476, !15, i64 480, !15, i64 481, !14, i64 484, !14, i64 488, !13, i64 496, !14, i64 504, !14, i64 508, !14, i64 512, !15, i64 516, !14, i64 520, !15, i64 524, !15, i64 525, !15, i64 526, !15, i64 527, !15, i64 528, !15, i64 529, !15, i64 530, !14, i64 532, !14, i64 536, !14, i64 540, !14, i64 544, !14, i64 548, !14, i64 552, !14, i64 556, !14, i64 560, !14, i64 564, !14, i64 568, !14, i64 572, !14, i64 576, !14, i64 580, !14, i64 584, !14, i64 588, !15, i64 592, !15, i64 593, !15, i64 594, !15, i64 595, !13, i64 600, !13, i64 608, !13, i64 616, !13, i64 624, !13, i64 632, !13, i64 640, !13, i64 648, !13, i64 656, !13, i64 664, !13, i64 672, !13, i64 680, !15, i64 688, !15, i64 689, !15, i64 690, !15, i64 691, !14, i64 692, !13, i64 696, !15, i64 704, !15, i64 705, !7, i64 712, !13, i64 744, !14, i64 752, !14, i64 756, !15, i64 760, !15, i64 761, !15, i64 762, !15, i64 763, !14, i64 764, !14, i64 768, !14, i64 772, !14, i64 776, !14, i64 780, !14, i64 784, !14, i64 788, !14, i64 792, !14, i64 796, !14, i64 800, !14, i64 804, !13, i64 808, !13, i64 816, !13, i64 824, !13, i64 832, !13, i64 840, !15, i64 848, !15, i64 849, !7, i64 856, !15, i64 888, !14, i64 892, !16, i64 896}
!7 = !{!"_ZTSNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE", !8, i64 0, !12, i64 8, !10, i64 16}
!8 = !{!"_ZTSNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE12_Alloc_hiderE", !9, i64 0}
!9 = !{!"any pointer", !10, i64 0}
!10 = !{!"omnipotent char", !11, i64 0}
!11 = !{!"Simple C++ TBAA"}
!12 = !{!"long", !10, i64 0}
!13 = !{!"double", !10, i64 0}
!14 = !{!"int", !10, i64 0}
!15 = !{!"bool", !10, i64 0}
!16 = !{!"_ZTS15HighsLogOptions", !9, i64 0, !9, i64 8, !9, i64 16, !9, i64 24, !9, i64 32, !9, i64 40, !17, i64 48, !9, i64 80, !15, i64 88}
!17 = !{!"_ZTSSt8functionIFviRKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEPK20HighsCallbackDataOutP19HighsCallbackDataInPvEE", !18, i64 0, !9, i64 24}
!18 = !{!"_ZTSSt14_Function_base", !10, i64 0, !9, i64 16}
!19 = !{!6, !13, i64 288}
!20 = !{!14, !14, i64 0}
!21 = !{!13, !13, i64 0}
!22 = !{!23, !14, i64 36}
!23 = !{!"_ZTS15HighsInfoStruct", !15, i64 0, !12, i64 8, !14, i64 16, !14, i64 20, !14, i64 24, !14, i64 28, !14, i64 32, !14, i64 36, !14, i64 40, !14, i64 44, !13, i64 48, !13, i64 56, !13, i64 64, !13, i64 72, !14, i64 80, !13, i64 88, !13, i64 96, !14, i64 104, !13, i64 112, !13, i64 120, !13, i64 128, !13, i64 136, !13, i64 144}
!24 = !{!23, !14, i64 40}
!25 = !{!15, !15, i64 0}
!26 = !{i8 0, i8 2}
!27 = !{}
!28 = !{!29, !14, i64 0}
!29 = !{!"_ZTS7HighsLp", !14, i64 0, !14, i64 4, !30, i64 8, !30, i64 32, !30, i64 56, !30, i64 80, !30, i64 104, !34, i64 128, !40, i64 240, !13, i64 248, !7, i64 256, !7, i64 288, !14, i64 320, !14, i64 324, !41, i64 328, !41, i64 352, !45, i64 376, !49, i64 400, !49, i64 456, !14, i64 512, !14, i64 516, !55, i64 520, !15, i64 592, !15, i64 593, !14, i64 596, !15, i64 600, !56, i64 608}
!30 = !{!"_ZTSSt6vectorIdSaIdEE", !31, i64 0}
!31 = !{!"_ZTSSt12_Vector_baseIdSaIdEE", !32, i64 0}
!32 = !{!"_ZTSNSt12_Vector_baseIdSaIdEE12_Vector_implE", !33, i64 0}
!33 = !{!"_ZTSNSt12_Vector_baseIdSaIdEE17_Vector_impl_dataE", !9, i64 0, !9, i64 8, !9, i64 16}
!34 = !{!"_ZTS17HighsSparseMatrix", !35, i64 0, !14, i64 4, !14, i64 8, !36, i64 16, !36, i64 40, !36, i64 64, !30, i64 88}
!35 = !{!"_ZTS12MatrixFormat", !10, i64 0}
!36 = !{!"_ZTSSt6vectorIiSaIiEE", !37, i64 0}
!37 = !{!"_ZTSSt12_Vector_baseIiSaIiEE", !38, i64 0}
!38 = !{!"_ZTSNSt12_Vector_baseIiSaIiEE12_Vector_implE", !39, i64 0}
!39 = !{!"_ZTSNSt12_Vector_baseIiSaIiEE17_Vector_impl_dataE", !9, i64 0, !9, i64 8, !9, i64 16}
!40 = !{!"_ZTS8ObjSense", !10, i64 0}
!41 = !{!"_ZTSSt6vectorINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESaIS5_EE", !42, i64 0}
!42 = !{!"_ZTSSt12_Vector_baseINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESaIS5_EE", !43, i64 0}
!43 = !{!"_ZTSNSt12_Vector_baseINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESaIS5_EE12_Vector_implE", !44, i64 0}
!44 = !{!"_ZTSNSt12_Vector_baseINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESaIS5_EE17_Vector_impl_dataE", !9, i64 0, !9, i64 8, !9, i64 16}
!45 = !{!"_ZTSSt6vectorI12HighsVarTypeSaIS0_EE", !46, i64 0}
!46 = !{!"_ZTSSt12_Vector_baseI12HighsVarTypeSaIS0_EE", !47, i64 0}
!47 = !{!"_ZTSNSt12_Vector_baseI12HighsVarTypeSaIS0_EE12_Vector_implE", !48, i64 0}
!48 = !{!"_ZTSNSt12_Vector_baseI12HighsVarTypeSaIS0_EE17_Vector_impl_dataE", !9, i64 0, !9, i64 8, !9, i64 16}
!49 = !{!"_ZTS13HighsNameHash", !50, i64 0}
!50 = !{!"_ZTSSt13unordered_mapINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEiSt4hashIS5_ESt8equal_toIS5_ESaISt4pairIKS5_iEEE", !51, i64 0}
!51 = !{!"_ZTSSt10_HashtableINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESt4pairIKS5_iESaIS8_ENSt8__detail10_Select1stESt8equal_toIS5_ESt4hashIS5_ENSA_18_Mod_range_hashingENSA_20_Default_ranged_hashENSA_20_Prime_rehash_policyENSA_17_Hashtable_traitsILb1ELb0ELb1EEEE", !9, i64 0, !12, i64 8, !52, i64 16, !12, i64 24, !53, i64 32, !9, i64 48}
!52 = !{!"_ZTSNSt8__detail15_Hash_node_baseE", !9, i64 0}
!53 = !{!"_ZTSNSt8__detail20_Prime_rehash_policyE", !54, i64 0, !12, i64 8}
!54 = !{!"float", !10, i64 0}
!55 = !{!"_ZTS10HighsScale", !14, i64 0, !15, i64 4, !14, i64 8, !14, i64 12, !13, i64 16, !30, i64 24, !30, i64 48}
!56 = !{!"_ZTS11HighsLpMods", !36, i64 0, !36, i64 24, !30, i64 48, !30, i64 72, !45, i64 96, !36, i64 120, !30, i64 144, !36, i64 168, !30, i64 192, !36, i64 216, !30, i64 240, !30, i64 264, !30, i64 288}
!57 = !{!29, !14, i64 4}
!58 = !{!59, !59, i64 0}
!59 = !{!"_ZTS16HighsBasisStatus", !10, i64 0}
!60 = !{!61, !61, i64 0}
!61 = !{!"_ZTS12HighsVarType", !10, i64 0}
!62 = !{!29, !40, i64 240}
!63 = distinct !{!63, !64}
!64 = !{!"llvm.loop.mustprogress"}
!65 = distinct !{!65, !64}
!66 = distinct !{!66, !64}
!67 = distinct !{!67, !64}
!68 = distinct !{!68, !64}
!69 = !{!23, !13, i64 88}
!70 = !{!71, !13, i64 112}
!71 = !{!"_ZTS21HighsPrimalDualErrors", !14, i64 0, !14, i64 4, !13, i64 8, !13, i64 16, !14, i64 24, !13, i64 32, !13, i64 40, !14, i64 48, !13, i64 56, !14, i64 64, !13, i64 72, !72, i64 80, !72, i64 112, !72, i64 144, !72, i64 176}
!72 = !{!"_ZTS10HighsError", !13, i64 0, !14, i64 8, !13, i64 16, !14, i64 24}
!73 = !{!23, !13, i64 112}
!74 = !{!71, !13, i64 176}
!75 = !{!71, !13, i64 192}
!76 = !{!71, !14, i64 184}
!77 = !{!71, !14, i64 200}


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