; LLVM IR from ERGO-Code/HiGHS :: src/qpsolver/quass.ll (ZN5Quass5solveERK8QpVectorS2_R5BasisR10HighsTimer)

; 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::chrono::time_point" = type { %"class.std::chrono::duration" }
%"class.std::chrono::duration" = type { i64 }
%class.Gradient = type { ptr, %struct.QpVector, i8, i32 }
%struct.QpVector = type { i32, i32, %"class.std::vector", %"class.std::vector.3" }
%"class.std::vector" = type { %"struct.std::_Vector_base" }
%"struct.std::_Vector_base" = type { %"struct.std::_Vector_base<int, std::allocator<int>>::_Vector_impl" }
%"struct.std::_Vector_base<int, std::allocator<int>>::_Vector_impl" = type { %"struct.std::_Vector_base<int, std::allocator<int>>::_Vector_impl_data" }
%"struct.std::_Vector_base<int, std::allocator<int>>::_Vector_impl_data" = type { ptr, ptr, ptr }
%"class.std::vector.3" = type { %"struct.std::_Vector_base.4" }
%"struct.std::_Vector_base.4" = type { %"struct.std::_Vector_base<double, std::allocator<double>>::_Vector_impl" }
%"struct.std::_Vector_base<double, std::allocator<double>>::_Vector_impl" = type { %"struct.std::_Vector_base<double, std::allocator<double>>::_Vector_impl_data" }
%"struct.std::_Vector_base<double, std::allocator<double>>::_Vector_impl_data" = type { ptr, ptr, ptr }
%class.ReducedCosts = type <{ ptr, ptr, %struct.QpVector, i8, [7 x i8] }>
%class.ReducedGradient = type { %struct.QpVector, i8, ptr, ptr }
%class.CholeskyFactor = type { i8, i32, ptr, ptr, i32, i32, %"class.std::vector.3", i8, %"class.std::vector.3" }
%"class.std::unique_ptr.42" = type { %"struct.std::__uniq_ptr_data.43" }
%"struct.std::__uniq_ptr_data.43" = type { %"class.std::__uniq_ptr_impl.44" }
%"class.std::__uniq_ptr_impl.44" = type { %"class.std::tuple.45" }
%"class.std::tuple.45" = type { %"struct.std::_Tuple_impl.46" }
%"struct.std::_Tuple_impl.46" = type { %"struct.std::_Head_base.49" }
%"struct.std::_Head_base.49" = type { ptr }
%struct.Instance = type { i32, i32, i32, double, %struct.QpVector, %struct.Matrix, %"class.std::vector.3", %"class.std::vector.3", %struct.Matrix, %"class.std::vector.3", %"class.std::vector.3" }
%struct.Matrix = type { %struct.MatrixBase, i8, %struct.MatrixBase }
%struct.MatrixBase = type { i32, i32, %"class.std::vector", %"class.std::vector", %"class.std::vector.3" }
%struct.RatiotestResult = type { double, i32, i8 }
%struct.SumNum = type <{ double, i32, [4 x i8] }>
%"class.__gnu_cxx::__normal_iterator" = type { ptr }
%struct.Quass = type { ptr }
%struct.Runtime = type { %struct.Instance, %struct.Instance, %struct.Instance, %struct.Instance, %struct.Settings, ptr, %struct.QpVector, %struct.QpVector, %struct.QpVector, %struct.QpVector, i32, %"class.std::vector.25", %"class.std::vector.25" }
%struct.Settings = type <{ i32, [4 x i8], double, double, i32, [4 x i8], double, double, double, double, double, i8, [7 x i8], double, i32, i8, i8, [2 x i8], i32, [4 x i8], %class.Eventhandler, %class.Eventhandler.13, %class.Eventhandler.19, i32, i32, i32, i32, i32, i32, double, i8, i8, i8, [5 x i8] }>
%class.Eventhandler = type { %"class.std::vector.8" }
%"class.std::vector.8" = type { %"struct.std::_Vector_base.9" }
%"struct.std::_Vector_base.9" = type { %"struct.std::_Vector_base<std::function<void (Statistics &)>, std::allocator<std::function<void (Statistics &)>>>::_Vector_impl" }
%"struct.std::_Vector_base<std::function<void (Statistics &)>, std::allocator<std::function<void (Statistics &)>>>::_Vector_impl" = type { %"struct.std::_Vector_base<std::function<void (Statistics &)>, std::allocator<std::function<void (Statistics &)>>>::_Vector_impl_data" }
%"struct.std::_Vector_base<std::function<void (Statistics &)>, std::allocator<std::function<void (Statistics &)>>>::_Vector_impl_data" = type { ptr, ptr, ptr }
%class.Eventhandler.13 = type { %"class.std::vector.14" }
%"class.std::vector.14" = type { %"struct.std::_Vector_base.15" }
%"struct.std::_Vector_base.15" = type { %"struct.std::_Vector_base<std::function<void (QpModelStatus &)>, std::allocator<std::function<void (QpModelStatus &)>>>::_Vector_impl" }
%"struct.std::_Vector_base<std::function<void (QpModelStatus &)>, std::allocator<std::function<void (QpModelStatus &)>>>::_Vector_impl" = type { %"struct.std::_Vector_base<std::function<void (QpModelStatus &)>, std::allocator<std::function<void (QpModelStatus &)>>>::_Vector_impl_data" }
%"struct.std::_Vector_base<std::function<void (QpModelStatus &)>, std::allocator<std::function<void (QpModelStatus &)>>>::_Vector_impl_data" = type { ptr, ptr, ptr }
%class.Eventhandler.19 = type { %"class.std::vector.20" }
%"class.std::vector.20" = type { %"struct.std::_Vector_base.21" }
%"struct.std::_Vector_base.21" = type { %"struct.std::_Vector_base<std::function<void (int &)>, std::allocator<std::function<void (int &)>>>::_Vector_impl" }
%"struct.std::_Vector_base<std::function<void (int &)>, std::allocator<std::function<void (int &)>>>::_Vector_impl" = type { %"struct.std::_Vector_base<std::function<void (int &)>, std::allocator<std::function<void (int &)>>>::_Vector_impl_data" }
%"struct.std::_Vector_base<std::function<void (int &)>, std::allocator<std::function<void (int &)>>>::_Vector_impl_data" = type { ptr, ptr, ptr }
%"class.std::vector.25" = type { %"struct.std::_Vector_base.26" }
%"struct.std::_Vector_base.26" = type { %"struct.std::_Vector_base<BasisStatus, std::allocator<BasisStatus>>::_Vector_impl" }
%"struct.std::_Vector_base<BasisStatus, std::allocator<BasisStatus>>::_Vector_impl" = type { %"struct.std::_Vector_base<BasisStatus, std::allocator<BasisStatus>>::_Vector_impl_data" }
%"struct.std::_Vector_base<BasisStatus, std::allocator<BasisStatus>>::_Vector_impl_data" = type { ptr, ptr, ptr }
%struct.Statistics = type { i32, i32, %"class.std::chrono::time_point", %"class.std::chrono::time_point", %"class.std::vector", %"class.std::vector", %"class.std::vector.3", %"class.std::vector.3", %"class.std::vector.3", %"class.std::vector", %"class.std::vector.3", %"class.std::vector.3" }

; 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 uwtable
define dso_local void @_ZN5Quass5solveERK8QpVectorS2_R5BasisR10HighsTimer(ptr noundef nonnull align 8 dereferenceable(8) %0, ptr noundef nonnull align 8 dereferenceable(56) %1, ptr noundef nonnull align 8 dereferenceable(56) %2, ptr noundef nonnull align 8 dereferenceable(2913) %3, ptr noundef nonnull align 8 dereferenceable(132) %4) #1 align 2 personality ptr @__gxx_personality_v0 {
  %6 = alloca ptr, align 8
  %7 = alloca ptr, align 8
  %8 = alloca ptr, align 8
  %9 = alloca ptr, align 8
  %10 = alloca ptr, align 8
  %11 = alloca %"class.std::chrono::time_point", align 8
  %12 = alloca ptr, align 8
  %13 = alloca %class.Gradient, align 8
  %14 = alloca %class.ReducedCosts, align 8
  %15 = alloca ptr, align 8
  %16 = alloca i32, align 4
  %17 = alloca %class.ReducedGradient, align 8
  %18 = alloca %class.CholeskyFactor, align 8
  %19 = alloca %"class.std::unique_ptr.42", align 8
  %20 = alloca %struct.QpVector, align 8
  %21 = alloca %struct.QpVector, align 8
  %22 = alloca %struct.QpVector, align 8
  %23 = alloca %struct.QpVector, align 8
  %24 = alloca %struct.QpVector, align 8
  %25 = alloca %struct.QpVector, align 8
  %26 = alloca %struct.QpVector, align 8
  %27 = alloca %struct.QpVector, align 8
  %28 = alloca %struct.Instance, align 8
  %29 = alloca i32, align 4
  %30 = alloca double, align 8
  %31 = alloca double, align 8
  %32 = alloca i32, align 4
  %33 = alloca i8, align 1
  %34 = alloca i32, align 4
  %35 = alloca double, align 8
  %36 = alloca i8, align 1
  %37 = alloca i32, align 4
  %38 = alloca i8, align 1
  %39 = alloca double, align 8
  %40 = alloca i32, align 4
  %41 = alloca i32, align 4
  %42 = alloca %struct.RatiotestResult, align 8
  %43 = alloca i32, align 4
  %44 = alloca i32, align 4
  %45 = alloca %struct.QpVector, align 8
  %46 = alloca %struct.SumNum, align 8
  %47 = alloca ptr, align 8
  %48 = alloca ptr, align 8
  %49 = alloca %"class.__gnu_cxx::__normal_iterator", align 8
  %50 = alloca %"class.__gnu_cxx::__normal_iterator", align 8
  %51 = alloca i32, align 4
  %52 = alloca i32, align 4
  %53 = alloca i32, align 4
  %54 = alloca i32, align 4
  %55 = alloca i32, align 4
  %56 = alloca %struct.QpVector, align 8
  %57 = alloca %"class.std::chrono::time_point", align 8
  store ptr %0, ptr %6, align 8, !tbaa !5
  store ptr %1, ptr %7, align 8, !tbaa !5
  store ptr %2, ptr %8, align 8, !tbaa !5
  store ptr %3, ptr %9, align 8, !tbaa !5
  store ptr %4, ptr %10, align 8, !tbaa !5
  %58 = load ptr, ptr %6, align 8
  call void @llvm.lifetime.start.p0(i64 8, ptr %11) #8
  %59 = call i64 @_ZNSt6chrono3_V212system_clock3nowEv() #8
  %60 = getelementptr inbounds %"class.std::chrono::time_point", ptr %11, i32 0, i32 0
  %61 = getelementptr inbounds %"class.std::chrono::duration", ptr %60, i32 0, i32 0
  store i64 %59, ptr %61, align 8
  %62 = getelementptr inbounds %struct.Quass, ptr %58, i32 0, i32 0
  %63 = load ptr, ptr %62, align 8, !tbaa !9
  %64 = getelementptr inbounds %struct.Runtime, ptr %63, i32 0, i32 5
  %65 = load ptr, ptr %64, align 8, !tbaa !11
  %66 = getelementptr inbounds %struct.Statistics, ptr %65, i32 0, i32 2
  call void @llvm.memcpy.p0.p0.i64(ptr align 8 %66, ptr align 8 %11, i64 8, i1 false), !tbaa.struct !52
  call void @llvm.lifetime.end.p0(i64 8, ptr %11) #8
  call void @llvm.lifetime.start.p0(i64 8, ptr %12) #8
  %67 = load ptr, ptr %9, align 8, !tbaa !5
  store ptr %67, ptr %12, align 8, !tbaa !5
  %68 = load ptr, ptr %7, align 8, !tbaa !5
  %69 = getelementptr inbounds %struct.Quass, ptr %58, i32 0, i32 0
  %70 = load ptr, ptr %69, align 8, !tbaa !9
  %71 = getelementptr inbounds %struct.Runtime, ptr %70, i32 0, i32 6
  %72 = call noundef nonnull align 8 dereferenceable(56) ptr @_ZN8QpVectoraSERKS_(ptr noundef nonnull align 8 dereferenceable(56) %71, ptr noundef nonnull align 8 dereferenceable(56) %68)
  call void @llvm.lifetime.start.p0(i64 72, ptr %13) #8
  %73 = getelementptr inbounds %struct.Quass, ptr %58, i32 0, i32 0
  %74 = load ptr, ptr %73, align 8, !tbaa !9
  call void @_ZN8GradientC2ER7Runtime(ptr noundef nonnull align 8 dereferenceable(72) %13, ptr noundef nonnull align 8 dereferenceable(2552) %74)
  call void @llvm.lifetime.start.p0(i64 80, ptr %14) #8
  %75 = getelementptr inbounds %struct.Quass, ptr %58, i32 0, i32 0
  %76 = load ptr, ptr %75, align 8, !tbaa !9
  %77 = load ptr, ptr %12, align 8, !tbaa !5
  invoke void @_ZN12ReducedCostsC2ER7RuntimeR5BasisR8Gradient(ptr noundef nonnull align 8 dereferenceable(73) %14, ptr noundef nonnull align 8 dereferenceable(2552) %76, ptr noundef nonnull align 8 dereferenceable(2913) %77, ptr noundef nonnull align 8 dereferenceable(72) %13)
          to label %78 unwind label %198

78:                                               ; preds = %5
  call void @llvm.lifetime.start.p0(i64 80, ptr %17) #8
  %79 = getelementptr inbounds %struct.Quass, ptr %58, i32 0, i32 0
  %80 = load ptr, ptr %79, align 8, !tbaa !9
  %81 = load ptr, ptr %12, align 8, !tbaa !5
  invoke void @_ZN15ReducedGradientC2ER7RuntimeR5BasisR8Gradient(ptr noundef nonnull align 8 dereferenceable(80) %17, ptr noundef nonnull align 8 dereferenceable(2552) %80, ptr noundef nonnull align 8 dereferenceable(2913) %81, ptr noundef nonnull align 8 dereferenceable(72) %13)
          to label %82 unwind label %202

82:                                               ; preds = %78
  call void @llvm.lifetime.start.p0(i64 88, ptr %18) #8
  %83 = getelementptr inbounds %struct.Quass, ptr %58, i32 0, i32 0
  %84 = load ptr, ptr %83, align 8, !tbaa !9
  %85 = load ptr, ptr %12, align 8, !tbaa !5
  invoke void @_ZN14CholeskyFactorC2ER7RuntimeR5Basis(ptr noundef nonnull align 8 dereferenceable(88) %18, ptr noundef nonnull align 8 dereferenceable(2552) %84, ptr noundef nonnull align 8 dereferenceable(2913) %85)
          to label %86 unwind label %206

86:                                               ; preds = %82
  %87 = getelementptr inbounds %struct.Quass, ptr %58, i32 0, i32 0
  %88 = load ptr, ptr %87, align 8, !tbaa !9
  %89 = getelementptr inbounds %struct.Runtime, ptr %88, i32 0, i32 0
  %90 = getelementptr inbounds %struct.Instance, ptr %89, i32 0, i32 8
  %91 = getelementptr inbounds %struct.Quass, ptr %58, i32 0, i32 0
  %92 = load ptr, ptr %91, align 8, !tbaa !9
  %93 = getelementptr inbounds %struct.Runtime, ptr %92, i32 0, i32 6
  %94 = getelementptr inbounds %struct.Quass, ptr %58, i32 0, i32 0
  %95 = load ptr, ptr %94, align 8, !tbaa !9
  %96 = getelementptr inbounds %struct.Runtime, ptr %95, i32 0, i32 7
  %97 = invoke noundef nonnull align 8 dereferenceable(56) ptr @_ZN6Matrix7mat_vecERK8QpVectorRS0_(ptr noundef nonnull align 8 dereferenceable(168) %90, ptr noundef nonnull align 8 dereferenceable(56) %93, ptr noundef nonnull align 8 dereferenceable(56) %96)
          to label %98 unwind label %210

98:                                               ; preds = %86
  call void @llvm.lifetime.start.p0(i64 8, ptr %19) #8
  %99 = getelementptr inbounds %struct.Quass, ptr %58, i32 0, i32 0
  %100 = load ptr, ptr %99, align 8, !tbaa !9
  %101 = load ptr, ptr %12, align 8, !tbaa !5
  invoke void @_ZL10getPricingR7RuntimeR5BasisR12ReducedCosts(ptr dead_on_unwind writable sret(%"class.std::unique_ptr.42") align 8 %19, ptr noundef nonnull align 8 dereferenceable(2552) %100, ptr noundef nonnull align 8 dereferenceable(2913) %101, ptr noundef nonnull align 8 dereferenceable(73) %14)
          to label %102 unwind label %214

102:                                              ; preds = %98
  call void @llvm.lifetime.start.p0(i64 56, ptr %20) #8
  %103 = getelementptr inbounds %struct.Quass, ptr %58, i32 0, i32 0
  %104 = load ptr, ptr %103, align 8, !tbaa !9
  %105 = getelementptr inbounds %struct.Runtime, ptr %104, i32 0, i32 0
  %106 = getelementptr inbounds %struct.Instance, ptr %105, i32 0, i32 1
  %107 = load i32, ptr %106, align 4, !tbaa !55
  invoke void @_ZN8QpVectorC2Ei(ptr noundef nonnull align 8 dereferenceable(56) %20, i32 noundef %107)
          to label %108 unwind label %218

108:                                              ; preds = %102
  call void @llvm.lifetime.start.p0(i64 56, ptr %21) #8
  %109 = getelementptr inbounds %struct.Quass, ptr %58, i32 0, i32 0
  %110 = load ptr, ptr %109, align 8, !tbaa !9
  %111 = getelementptr inbounds %struct.Runtime, ptr %110, i32 0, i32 0
  %112 = getelementptr inbounds %struct.Instance, ptr %111, i32 0, i32 2
  %113 = load i32, ptr %112, align 8, !tbaa !56
  invoke void @_ZN8QpVectorC2Ei(ptr noundef nonnull align 8 dereferenceable(56) %21, i32 noundef %113)
          to label %114 unwind label %222

114:                                              ; preds = %108
  call void @llvm.lifetime.start.p0(i64 56, ptr %22) #8
  %115 = getelementptr inbounds %struct.Quass, ptr %58, i32 0, i32 0
  %116 = load ptr, ptr %115, align 8, !tbaa !9
  %117 = getelementptr inbounds %struct.Runtime, ptr %116, i32 0, i32 0
  %118 = getelementptr inbounds %struct.Instance, ptr %117, i32 0, i32 1
  %119 = load i32, ptr %118, align 4, !tbaa !55
  invoke void @_ZN8QpVectorC2Ei(ptr noundef nonnull align 8 dereferenceable(56) %22, i32 noundef %119)
          to label %120 unwind label %226

120:                                              ; preds = %114
  call void @llvm.lifetime.start.p0(i64 56, ptr %23) #8
  %121 = getelementptr inbounds %struct.Quass, ptr %58, i32 0, i32 0
  %122 = load ptr, ptr %121, align 8, !tbaa !9
  %123 = getelementptr inbounds %struct.Runtime, ptr %122, i32 0, i32 0
  %124 = getelementptr inbounds %struct.Instance, ptr %123, i32 0, i32 1
  %125 = load i32, ptr %124, align 4, !tbaa !55
  invoke void @_ZN8QpVectorC2Ei(ptr noundef nonnull align 8 dereferenceable(56) %23, i32 noundef %125)
          to label %126 unwind label %230

126:                                              ; preds = %120
  call void @llvm.lifetime.start.p0(i64 56, ptr %24) #8
  %127 = getelementptr inbounds %struct.Quass, ptr %58, i32 0, i32 0
  %128 = load ptr, ptr %127, align 8, !tbaa !9
  %129 = getelementptr inbounds %struct.Runtime, ptr %128, i32 0, i32 0
  %130 = getelementptr inbounds %struct.Instance, ptr %129, i32 0, i32 1
  %131 = load i32, ptr %130, align 4, !tbaa !55
  invoke void @_ZN8QpVectorC2Ei(ptr noundef nonnull align 8 dereferenceable(56) %24, i32 noundef %131)
          to label %132 unwind label %234

132:                                              ; preds = %126
  call void @llvm.lifetime.start.p0(i64 56, ptr %25) #8
  %133 = getelementptr inbounds %struct.Quass, ptr %58, i32 0, i32 0
  %134 = load ptr, ptr %133, align 8, !tbaa !9
  %135 = getelementptr inbounds %struct.Runtime, ptr %134, i32 0, i32 0
  %136 = getelementptr inbounds %struct.Instance, ptr %135, i32 0, i32 1
  %137 = load i32, ptr %136, align 4, !tbaa !55
  invoke void @_ZN8QpVectorC2Ei(ptr noundef nonnull align 8 dereferenceable(56) %25, i32 noundef %137)
          to label %138 unwind label %238

138:                                              ; preds = %132
  call void @llvm.lifetime.start.p0(i64 56, ptr %26) #8
  %139 = getelementptr inbounds %struct.Quass, ptr %58, i32 0, i32 0
  %140 = load ptr, ptr %139, align 8, !tbaa !9
  %141 = getelementptr inbounds %struct.Runtime, ptr %140, i32 0, i32 0
  %142 = getelementptr inbounds %struct.Instance, ptr %141, i32 0, i32 1
  %143 = load i32, ptr %142, align 4, !tbaa !55
  invoke void @_ZN8QpVectorC2Ei(ptr noundef nonnull align 8 dereferenceable(56) %26, i32 noundef %143)
          to label %144 unwind label %242

144:                                              ; preds = %138
  call void @llvm.lifetime.start.p0(i64 56, ptr %27) #8
  %145 = getelementptr inbounds %struct.Quass, ptr %58, i32 0, i32 0
  %146 = load ptr, ptr %145, align 8, !tbaa !9
  %147 = getelementptr inbounds %struct.Runtime, ptr %146, i32 0, i32 0
  %148 = getelementptr inbounds %struct.Instance, ptr %147, i32 0, i32 1
  %149 = load i32, ptr %148, align 4, !tbaa !55
  invoke void @_ZN8QpVectorC2Ei(ptr noundef nonnull align 8 dereferenceable(56) %27, i32 noundef %149)
          to label %150 unwind label %246

150:                                              ; preds = %144
  %151 = getelementptr inbounds %struct.Quass, ptr %58, i32 0, i32 0
  %152 = load ptr, ptr %151, align 8, !tbaa !9
  invoke void @_ZL10regularizeR7Runtime(ptr noundef nonnull align 8 dereferenceable(2552) %152)
          to label %153 unwind label %250

153:                                              ; preds = %150
  call void @llvm.lifetime.start.p0(i64 512, ptr %28) #8
  %154 = getelementptr inbounds %struct.Quass, ptr %58, i32 0, i32 0
  %155 = load ptr, ptr %154, align 8, !tbaa !9
  invoke void @_Z24ratiotest_relax_instanceR7Runtime(ptr dead_on_unwind writable sret(%struct.Instance) align 8 %28, ptr noundef nonnull align 8 dereferenceable(2552) %155)
          to label %156 unwind label %254

156:                                              ; preds = %153
  %157 = getelementptr inbounds %struct.Quass, ptr %58, i32 0, i32 0
  %158 = load ptr, ptr %157, align 8, !tbaa !9
  %159 = getelementptr inbounds %struct.Runtime, ptr %158, i32 0, i32 1
  %160 = invoke noundef nonnull align 8 dereferenceable(512) ptr @_ZN8InstanceaSEOS_(ptr noundef nonnull align 8 dereferenceable(512) %159, ptr noundef nonnull align 8 dereferenceable(512) %28)
          to label %161 unwind label %258

161:                                              ; preds = %156
  call void @_ZN8InstanceD2Ev(ptr noundef nonnull align 8 dereferenceable(512) %28) #8
  call void @llvm.lifetime.end.p0(i64 512, ptr %28) #8
  call void @llvm.lifetime.start.p0(i64 4, ptr %29) #8
  %162 = getelementptr inbounds %struct.Quass, ptr %58, i32 0, i32 0
  %163 = load ptr, ptr %162, align 8, !tbaa !9
  %164 = getelementptr inbounds %struct.Runtime, ptr %163, i32 0, i32 5
  %165 = load ptr, ptr %164, align 8, !tbaa !11
  %166 = getelementptr inbounds %struct.Statistics, ptr %165, i32 0, i32 1
  %167 = load i32, ptr %166, align 4, !tbaa !57
  %168 = sub nsw i32 %167, 1
  store i32 %168, ptr %29, align 4, !tbaa !61
  call void @llvm.lifetime.start.p0(i64 8, ptr %30) #8
  store double 0.000000e+00, ptr %30, align 8, !tbaa !62
  call void @llvm.lifetime.start.p0(i64 8, ptr %31) #8
  store double 1.000000e+01, ptr %31, align 8, !tbaa !62
  call void @llvm.lifetime.start.p0(i64 4, ptr %32) #8
  %169 = load ptr, ptr %12, align 8, !tbaa !5
  %170 = invoke noundef i32 @_ZNK5Basis12getnumactiveEv(ptr noundef nonnull align 8 dereferenceable(2913) %169)
          to label %171 unwind label %263

171:                                              ; preds = %161
  store i32 %170, ptr %32, align 4, !tbaa !61
  call void @llvm.lifetime.start.p0(i64 1, ptr %33) #8
  %172 = load i32, ptr %32, align 4, !tbaa !61
  %173 = getelementptr inbounds %struct.Quass, ptr %58, i32 0, i32 0
  %174 = load ptr, ptr %173, align 8, !tbaa !9
  %175 = getelementptr inbounds %struct.Runtime, ptr %174, i32 0, i32 0
  %176 = getelementptr inbounds %struct.Instance, ptr %175, i32 0, i32 1
  %177 = load i32, ptr %176, align 4, !tbaa !55
  %178 = icmp eq i32 %172, %177
  %179 = zext i1 %178 to i8
  store i8 %179, ptr %33, align 1, !tbaa !63
  br label %180

180:                                              ; preds = %687, %171
  br label %181

181:                                              ; preds = %180
  %182 = getelementptr inbounds %struct.Quass, ptr %58, i32 0, i32 0
  %183 = load ptr, ptr %182, align 8, !tbaa !9
  %184 = getelementptr inbounds %struct.Runtime, ptr %183, i32 0, i32 5
  %185 = load ptr, ptr %184, align 8, !tbaa !11
  %186 = getelementptr inbounds %struct.Statistics, ptr %185, i32 0, i32 1
  %187 = load i32, ptr %186, align 4, !tbaa !57
  %188 = getelementptr inbounds %struct.Quass, ptr %58, i32 0, i32 0
  %189 = load ptr, ptr %188, align 8, !tbaa !9
  %190 = getelementptr inbounds %struct.Runtime, ptr %189, i32 0, i32 4
  %191 = getelementptr inbounds %struct.Settings, ptr %190, i32 0, i32 28
  %192 = load i32, ptr %191, align 4, !tbaa !64
  %193 = icmp sge i32 %187, %192
  br i1 %193, label %194, label %267

194:                                              ; preds = %181
  %195 = getelementptr inbounds %struct.Quass, ptr %58, i32 0, i32 0
  %196 = load ptr, ptr %195, align 8, !tbaa !9
  %197 = getelementptr inbounds %struct.Runtime, ptr %196, i32 0, i32 10
  store i32 5, ptr %197, align 8, !tbaa !65
  br label %690

198:                                              ; preds = %5
  %199 = landingpad { ptr, i32 }
          cleanup
  %200 = extractvalue { ptr, i32 } %199, 0
  store ptr %200, ptr %15, align 8
  %201 = extractvalue { ptr, i32 } %199, 1
  store i32 %201, ptr %16, align 4
  br label %944

202:                                              ; preds = %78
  %203 = landingpad { ptr, i32 }
          cleanup
  %204 = extractvalue { ptr, i32 } %203, 0
  store ptr %204, ptr %15, align 8
  %205 = extractvalue { ptr, i32 } %203, 1
  store i32 %205, ptr %16, align 4
  br label %943

206:                                              ; preds = %82
  %207 = landingpad { ptr, i32 }
          cleanup
  %208 = extractvalue { ptr, i32 } %207, 0
  store ptr %208, ptr %15, align 8
  %209 = extractvalue { ptr, i32 } %207, 1
  store i32 %209, ptr %16, align 4
  br label %942

210:                                              ; preds = %86
  %211 = landingpad { ptr, i32 }
          cleanup
  %212 = extractvalue { ptr, i32 } %211, 0
  store ptr %212, ptr %15, align 8
  %213 = extractvalue { ptr, i32 } %211, 1
  store i32 %213, ptr %16, align 4
  br label %941

214:                                              ; preds = %98
  %215 = landingpad { ptr, i32 }
          cleanup
  %216 = extractvalue { ptr, i32 } %215, 0
  store ptr %216, ptr %15, align 8
  %217 = extractvalue { ptr, i32 } %215, 1
  store i32 %217, ptr %16, align 4
  br label %940

218:                                              ; preds = %102
  %219 = landingpad { ptr, i32 }
          cleanup
  %220 = extractvalue { ptr, i32 } %219, 0
  store ptr %220, ptr %15, align 8
  %221 = extractvalue { ptr, i32 } %219, 1
  store i32 %221, ptr %16, align 4
  br label %939

222:                                              ; preds = %108
  %223 = landingpad { ptr, i32 }
          cleanup
  %224 = extractvalue { ptr, i32 } %223, 0
  store ptr %224, ptr %15, align 8
  %225 = extractvalue { ptr, i32 } %223, 1
  store i32 %225, ptr %16, align 4
  br label %938

226:                                              ; preds = %114
  %227 = landingpad { ptr, i32 }
          cleanup
  %228 = extractvalue { ptr, i32 } %227, 0
  store ptr %228, ptr %15, align 8
  %229 = extractvalue { ptr, i32 } %227, 1
  store i32 %229, ptr %16, align 4
  br label %937

230:                                              ; preds = %120
  %231 = landingpad { ptr, i32 }
          cleanup
  %232 = extractvalue { ptr, i32 } %231, 0
  store ptr %232, ptr %15, align 8
  %233 = extractvalue { ptr, i32 } %231, 1
  store i32 %233, ptr %16, align 4
  br label %936

234:                                              ; preds = %126
  %235 = landingpad { ptr, i32 }
          cleanup
  %236 = extractvalue { ptr, i32 } %235, 0
  store ptr %236, ptr %15, align 8
  %237 = extractvalue { ptr, i32 } %235, 1
  store i32 %237, ptr %16, align 4
  br label %935

238:                                              ; preds = %132
  %239 = landingpad { ptr, i32 }
          cleanup
  %240 = extractvalue { ptr, i32 } %239, 0
  store ptr %240, ptr %15, align 8
  %241 = extractvalue { ptr, i32 } %239, 1
  store i32 %241, ptr %16, align 4
  br label %934

242:                                              ; preds = %138
  %243 = landingpad { ptr, i32 }
          cleanup
  %244 = extractvalue { ptr, i32 } %243, 0
  store ptr %244, ptr %15, align 8
  %245 = extractvalue { ptr, i32 } %243, 1
  store i32 %245, ptr %16, align 4
  br label %933

246:                                              ; preds = %144
  %247 = landingpad { ptr, i32 }
          cleanup
  %248 = extractvalue { ptr, i32 } %247, 0
  store ptr %248, ptr %15, align 8
  %249 = extractvalue { ptr, i32 } %247, 1
  store i32 %249, ptr %16, align 4
  br label %932

250:                                              ; preds = %150
  %251 = landingpad { ptr, i32 }
          cleanup
  %252 = extractvalue { ptr, i32 } %251, 0
  store ptr %252, ptr %15, align 8
  %253 = extractvalue { ptr, i32 } %251, 1
  store i32 %253, ptr %16, align 4
  br label %931

254:                                              ; preds = %153
  %255 = landingpad { ptr, i32 }
          cleanup
  %256 = extractvalue { ptr, i32 } %255, 0
  store ptr %256, ptr %15, align 8
  %257 = extractvalue { ptr, i32 } %255, 1
  store i32 %257, ptr %16, align 4
  br label %262

258:                                              ; preds = %156
  %259 = landingpad { ptr, i32 }
          cleanup
  %260 = extractvalue { ptr, i32 } %259, 0
  store ptr %260, ptr %15, align 8
  %261 = extractvalue { ptr, i32 } %259, 1
  store i32 %261, ptr %16, align 4
  call void @_ZN8InstanceD2Ev(ptr noundef nonnull align 8 dereferenceable(512) %28) #8
  br label %262

262:                                              ; preds = %258, %254
  call void @llvm.lifetime.end.p0(i64 512, ptr %28) #8
  br label %931

263:                                              ; preds = %161
  %264 = landingpad { ptr, i32 }
          cleanup
  %265 = extractvalue { ptr, i32 } %264, 0
  store ptr %265, ptr %15, align 8
  %266 = extractvalue { ptr, i32 } %264, 1
  store i32 %266, ptr %16, align 4
  br label %930

267:                                              ; preds = %181
  %268 = load ptr, ptr %10, align 8, !tbaa !5
  %269 = invoke noundef double @_ZNK10HighsTimer4readEi(ptr noundef nonnull align 8 dereferenceable(132) %268, i32 noundef 0)
          to label %270 unwind label %281

270:                                              ; preds = %267
  %271 = getelementptr inbounds %struct.Quass, ptr %58, i32 0, i32 0
  %272 = load ptr, ptr %271, align 8, !tbaa !9
  %273 = getelementptr inbounds %struct.Runtime, ptr %272, i32 0, i32 4
  %274 = getelementptr inbounds %struct.Settings, ptr %273, i32 0, i32 29
  %275 = load double, ptr %274, align 8, !tbaa !66
  %276 = fcmp oge double %269, %275
  br i1 %276, label %277, label %285

277:                                              ; preds = %270
  %278 = getelementptr inbounds %struct.Quass, ptr %58, i32 0, i32 0
  %279 = load ptr, ptr %278, align 8, !tbaa !9
  %280 = getelementptr inbounds %struct.Runtime, ptr %279, i32 0, i32 10
  store i32 6, ptr %280, align 8, !tbaa !65
  br label %690

281:                                              ; preds = %695, %690, %295, %285, %267
  %282 = landingpad { ptr, i32 }
          cleanup
  %283 = extractvalue { ptr, i32 } %282, 0
  store ptr %283, ptr %15, align 8
  %284 = extractvalue { ptr, i32 } %282, 1
  store i32 %284, ptr %16, align 4
  br label %929

285:                                              ; preds = %270
  %286 = load ptr, ptr %12, align 8, !tbaa !5
  %287 = invoke noundef i32 @_ZNK5Basis14getnuminactiveEv(ptr noundef nonnull align 8 dereferenceable(2913) %286)
          to label %288 unwind label %281

288:                                              ; preds = %285
  %289 = getelementptr inbounds %struct.Quass, ptr %58, i32 0, i32 0
  %290 = load ptr, ptr %289, align 8, !tbaa !9
  %291 = getelementptr inbounds %struct.Runtime, ptr %290, i32 0, i32 4
  %292 = getelementptr inbounds %struct.Settings, ptr %291, i32 0, i32 23
  %293 = load i32, ptr %292, align 8, !tbaa !67
  %294 = icmp sgt i32 %287, %293
  br i1 %294, label %295, label %308

295:                                              ; preds = %288
  %296 = getelementptr inbounds %struct.Quass, ptr %58, i32 0, i32 0
  %297 = load ptr, ptr %296, align 8, !tbaa !9
  %298 = getelementptr inbounds %struct.Runtime, ptr %297, i32 0, i32 4
  %299 = getelementptr inbounds %struct.Settings, ptr %298, i32 0, i32 22
  %300 = getelementptr inbounds %struct.Quass, ptr %58, i32 0, i32 0
  %301 = load ptr, ptr %300, align 8, !tbaa !9
  %302 = getelementptr inbounds %struct.Runtime, ptr %301, i32 0, i32 4
  %303 = getelementptr inbounds %struct.Settings, ptr %302, i32 0, i32 23
  invoke void @_ZN12EventhandlerIRiE4fireES0_(ptr noundef nonnull align 8 dereferenceable(24) %299, ptr noundef nonnull align 4 dereferenceable(4) %303)
          to label %304 unwind label %281

304:                                              ; preds = %295
  %305 = getelementptr inbounds %struct.Quass, ptr %58, i32 0, i32 0
  %306 = load ptr, ptr %305, align 8, !tbaa !9
  %307 = getelementptr inbounds %struct.Runtime, ptr %306, i32 0, i32 10
  store i32 7, ptr %307, align 8, !tbaa !65
  store i32 1, ptr %34, align 4
  br label %925

308:                                              ; preds = %288
  call void @llvm.lifetime.start.p0(i64 8, ptr %35) #8
  %309 = load ptr, ptr %10, align 8, !tbaa !5
  %310 = invoke noundef double @_ZNK10HighsTimer4readEi(ptr noundef nonnull align 8 dereferenceable(132) %309, i32 noundef 0)
          to label %311 unwind label %361

311:                                              ; preds = %308
  store double %310, ptr %35, align 8, !tbaa !62
  %312 = getelementptr inbounds %struct.Quass, ptr %58, i32 0, i32 0
  %313 = load ptr, ptr %312, align 8, !tbaa !9
  %314 = getelementptr inbounds %struct.Runtime, ptr %313, i32 0, i32 5
  %315 = load ptr, ptr %314, align 8, !tbaa !11
  %316 = getelementptr inbounds %struct.Statistics, ptr %315, i32 0, i32 1
  %317 = load i32, ptr %316, align 4, !tbaa !57
  %318 = getelementptr inbounds %struct.Quass, ptr %58, i32 0, i32 0
  %319 = load ptr, ptr %318, align 8, !tbaa !9
  %320 = getelementptr inbounds %struct.Runtime, ptr %319, i32 0, i32 4
  %321 = getelementptr inbounds %struct.Settings, ptr %320, i32 0, i32 18
  %322 = load i32, ptr %321, align 8, !tbaa !68
  %323 = srem i32 %317, %322
  %324 = icmp eq i32 %323, 0
  br i1 %324, label %331, label %325

325:                                              ; preds = %311
  %326 = load double, ptr %35, align 8, !tbaa !62
  %327 = load double, ptr %30, align 8, !tbaa !62
  %328 = fsub double %326, %327
  %329 = load double, ptr %31, align 8, !tbaa !62
  %330 = fcmp ogt double %328, %329
  br i1 %330, label %331, label %403

331:                                              ; preds = %325, %311
  %332 = getelementptr inbounds %struct.Quass, ptr %58, i32 0, i32 0
  %333 = load ptr, ptr %332, align 8, !tbaa !9
  %334 = getelementptr inbounds %struct.Runtime, ptr %333, i32 0, i32 5
  %335 = load ptr, ptr %334, align 8, !tbaa !11
  %336 = getelementptr inbounds %struct.Statistics, ptr %335, i32 0, i32 1
  %337 = load i32, ptr %336, align 4, !tbaa !57
  %338 = load i32, ptr %29, align 4, !tbaa !61
  %339 = icmp sgt i32 %337, %338
  br i1 %339, label %340, label %403

340:                                              ; preds = %331
  call void @llvm.lifetime.start.p0(i64 1, ptr %36) #8
  store i8 1, ptr %36, align 1, !tbaa !63
  %341 = getelementptr inbounds %struct.Quass, ptr %58, i32 0, i32 0
  %342 = load ptr, ptr %341, align 8, !tbaa !9
  %343 = getelementptr inbounds %struct.Runtime, ptr %342, i32 0, i32 5
  %344 = load ptr, ptr %343, align 8, !tbaa !11
  %345 = getelementptr inbounds %struct.Statistics, ptr %344, i32 0, i32 1
  %346 = load i32, ptr %345, align 4, !tbaa !57
  %347 = getelementptr inbounds %struct.Quass, ptr %58, i32 0, i32 0
  %348 = load ptr, ptr %347, align 8, !tbaa !9
  %349 = getelementptr inbounds %struct.Runtime, ptr %348, i32 0, i32 4
  %350 = getelementptr inbounds %struct.Settings, ptr %349, i32 0, i32 18
  %351 = load i32, ptr %350, align 8, !tbaa !68
  %352 = mul nsw i32 10, %351
  %353 = icmp sgt i32 %346, %352
  br i1 %353, label %354, label %365

354:                                              ; preds = %340
  %355 = getelementptr inbounds %struct.Quass, ptr %58, i32 0, i32 0
  %356 = load ptr, ptr %355, align 8, !tbaa !9
  %357 = getelementptr inbounds %struct.Runtime, ptr %356, i32 0, i32 4
  %358 = getelementptr inbounds %struct.Settings, ptr %357, i32 0, i32 18
  %359 = load i32, ptr %358, align 8, !tbaa !68
  %360 = mul nsw i32 %359, 10
  store i32 %360, ptr %358, align 8, !tbaa !68
  store i8 0, ptr %36, align 1, !tbaa !63
  br label %365

361:                                              ; preds = %407, %403, %308
  %362 = landingpad { ptr, i32 }
          cleanup
  %363 = extractvalue { ptr, i32 } %362, 0
  store ptr %363, ptr %15, align 8
  %364 = extractvalue { ptr, i32 } %362, 1
  store i32 %364, ptr %16, align 4
  br label %689

365:                                              ; preds = %354, %340
  %366 = load double, ptr %35, align 8, !tbaa !62
  %367 = load double, ptr %31, align 8, !tbaa !62
  %368 = fmul double 1.000000e+01, %367
  %369 = fcmp ogt double %366, %368
  br i1 %369, label %370, label %373

370:                                              ; preds = %365
  %371 = load double, ptr %31, align 8, !tbaa !62
  %372 = fmul double %371, 2.000000e+00
  store double %372, ptr %31, align 8, !tbaa !62
  br label %373

373:                                              ; preds = %370, %365
  %374 = load i8, ptr %36, align 1, !tbaa !63, !range !69, !noundef !70
  %375 = trunc i8 %374 to i1
  br i1 %375, label %376, label %402

376:                                              ; preds = %373
  %377 = load double, ptr %35, align 8, !tbaa !62
  store double %377, ptr %30, align 8, !tbaa !62
  %378 = getelementptr inbounds %struct.Quass, ptr %58, i32 0, i32 0
  %379 = load ptr, ptr %378, align 8, !tbaa !9
  %380 = getelementptr inbounds %struct.Runtime, ptr %379, i32 0, i32 5
  %381 = load ptr, ptr %380, align 8, !tbaa !11
  %382 = getelementptr inbounds %struct.Statistics, ptr %381, i32 0, i32 1
  %383 = load i32, ptr %382, align 4, !tbaa !57
  store i32 %383, ptr %29, align 4, !tbaa !61
  %384 = getelementptr inbounds %struct.Quass, ptr %58, i32 0, i32 0
  %385 = load ptr, ptr %384, align 8, !tbaa !9
  %386 = load ptr, ptr %12, align 8, !tbaa !5
  %387 = load ptr, ptr %10, align 8, !tbaa !5
  invoke void @_ZL14loginformationR7RuntimeR5BasisR14CholeskyFactorR10HighsTimer(ptr noundef nonnull align 8 dereferenceable(2552) %385, ptr noundef nonnull align 8 dereferenceable(2913) %386, ptr noundef nonnull align 8 dereferenceable(88) %18, ptr noundef nonnull align 8 dereferenceable(132) %387)
          to label %388 unwind label %398

388:                                              ; preds = %376
  %389 = getelementptr inbounds %struct.Quass, ptr %58, i32 0, i32 0
  %390 = load ptr, ptr %389, align 8, !tbaa !9
  %391 = getelementptr inbounds %struct.Runtime, ptr %390, i32 0, i32 4
  %392 = getelementptr inbounds %struct.Settings, ptr %391, i32 0, i32 20
  %393 = getelementptr inbounds %struct.Quass, ptr %58, i32 0, i32 0
  %394 = load ptr, ptr %393, align 8, !tbaa !9
  %395 = getelementptr inbounds %struct.Runtime, ptr %394, i32 0, i32 5
  %396 = load ptr, ptr %395, align 8, !tbaa !11
  invoke void @_ZN12EventhandlerIR10StatisticsE4fireES1_(ptr noundef nonnull align 8 dereferenceable(24) %392, ptr noundef nonnull align 8 dereferenceable(216) %396)
          to label %397 unwind label %398

397:                                              ; preds = %388
  br label %402

398:                                              ; preds = %388, %376
  %399 = landingpad { ptr, i32 }
          cleanup
  %400 = extractvalue { ptr, i32 } %399, 0
  store ptr %400, ptr %15, align 8
  %401 = extractvalue { ptr, i32 } %399, 1
  store i32 %401, ptr %16, align 4
  call void @llvm.lifetime.end.p0(i64 1, ptr %36) #8
  br label %689

402:                                              ; preds = %397, %373
  call void @llvm.lifetime.end.p0(i64 1, ptr %36) #8
  br label %403

403:                                              ; preds = %402, %331, %325
  %404 = load ptr, ptr %12, align 8, !tbaa !5
  %405 = invoke noundef zeroext i1 @_ZL18check_reinvert_dueR5Basis(ptr noundef nonnull align 8 dereferenceable(2913) %404)
          to label %406 unwind label %361

406:                                              ; preds = %403
  br i1 %405, label %407, label %410

407:                                              ; preds = %406
  %408 = load ptr, ptr %12, align 8, !tbaa !5
  invoke void @_ZL8reinvertR5BasisR14CholeskyFactorR8GradientR12ReducedCostsR15ReducedGradientRSt10unique_ptrI7PricingSt14default_deleteISA_EE(ptr noundef nonnull align 8 dereferenceable(2913) %408, ptr noundef nonnull align 8 dereferenceable(88) %18, ptr noundef nonnull align 8 dereferenceable(72) %13, ptr noundef nonnull align 8 dereferenceable(73) %14, ptr noundef nonnull align 8 dereferenceable(80) %17, ptr noundef nonnull align 8 dereferenceable(8) %19)
          to label %409 unwind label %361

409:                                              ; preds = %407
  br label %410

410:                                              ; preds = %409, %406
  call void @llvm.lifetime.start.p0(i64 4, ptr %37) #8
  call void @llvm.lifetime.start.p0(i64 1, ptr %38) #8
  store i8 0, ptr %38, align 1, !tbaa !63
  call void @llvm.lifetime.start.p0(i64 8, ptr %39) #8
  store double 1.000000e+00, ptr %39, align 8, !tbaa !62
  %411 = load i8, ptr %33, align 1, !tbaa !63, !range !69, !noundef !70
  %412 = trunc i8 %411 to i1
  br i1 %412, label %413, label %514

413:                                              ; preds = %410
  call void @llvm.lifetime.start.p0(i64 4, ptr %40) #8
  %414 = call noundef ptr @_ZNKSt10unique_ptrI7PricingSt14default_deleteIS0_EEptEv(ptr noundef nonnull align 8 dereferenceable(8) %19) #8
  %415 = getelementptr inbounds %struct.Quass, ptr %58, i32 0, i32 0
  %416 = load ptr, ptr %415, align 8, !tbaa !9
  %417 = getelementptr inbounds %struct.Runtime, ptr %416, i32 0, i32 6
  %418 = invoke noundef nonnull align 8 dereferenceable(56) ptr @_ZN8Gradient11getGradientEv(ptr noundef nonnull align 8 dereferenceable(72) %13)
          to label %419 unwind label %431

419:                                              ; preds = %413
  %420 = load ptr, ptr %414, align 8, !tbaa !71
  %421 = getelementptr inbounds ptr, ptr %420, i64 0
  %422 = load ptr, ptr %421, align 8
  %423 = invoke noundef i32 %422(ptr noundef nonnull align 8 dereferenceable(8) %414, ptr noundef nonnull align 8 dereferenceable(56) %417, ptr noundef nonnull align 8 dereferenceable(56) %418)
          to label %424 unwind label %431

424:                                              ; preds = %419
  store i32 %423, ptr %40, align 4, !tbaa !61
  %425 = load i32, ptr %40, align 4, !tbaa !61
  %426 = icmp eq i32 %425, -1
  br i1 %426, label %427, label %435

427:                                              ; preds = %424
  %428 = getelementptr inbounds %struct.Quass, ptr %58, i32 0, i32 0
  %429 = load ptr, ptr %428, align 8, !tbaa !9
  %430 = getelementptr inbounds %struct.Runtime, ptr %429, i32 0, i32 10
  store i32 2, ptr %430, align 8, !tbaa !65
  store i32 3, ptr %34, align 4
  br label %510

431:                                              ; preds = %419, %413
  %432 = landingpad { ptr, i32 }
          cleanup
  %433 = extractvalue { ptr, i32 } %432, 0
  store ptr %433, ptr %15, align 8
  %434 = extractvalue { ptr, i32 } %432, 1
  store i32 %434, ptr %16, align 4
  br label %513

435:                                              ; preds = %424
  %436 = getelementptr inbounds %struct.Quass, ptr %58, i32 0, i32 0
  %437 = load ptr, ptr %436, align 8, !tbaa !9
  %438 = getelementptr inbounds %struct.Runtime, ptr %437, i32 0, i32 5
  %439 = load ptr, ptr %438, align 8, !tbaa !11
  %440 = getelementptr inbounds %struct.Statistics, ptr %439, i32 0, i32 1
  %441 = load i32, ptr %440, align 4, !tbaa !57
  %442 = add nsw i32 %441, 1
  store i32 %442, ptr %440, align 4, !tbaa !57
  call void @llvm.lifetime.start.p0(i64 4, ptr %41) #8
  %443 = load ptr, ptr %12, align 8, !tbaa !5
  %444 = invoke noundef nonnull align 8 dereferenceable(24) ptr @_ZNK5Basis16getindexinfactorEv(ptr noundef nonnull align 8 dereferenceable(2913) %443)
          to label %445 unwind label %502

445:                                              ; preds = %435
  %446 = load i32, ptr %40, align 4, !tbaa !61
  %447 = sext i32 %446 to i64
  %448 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNKSt6vectorIiSaIiEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %444, i64 noundef %447) #8
  %449 = load i32, ptr %448, align 4, !tbaa !61
  store i32 %449, ptr %41, align 4, !tbaa !61
  %450 = getelementptr inbounds %struct.Quass, ptr %58, i32 0, i32 0
  %451 = load ptr, ptr %450, align 8, !tbaa !9
  %452 = getelementptr inbounds %struct.Runtime, ptr %451, i32 0, i32 0
  %453 = getelementptr inbounds %struct.Instance, ptr %452, i32 0, i32 1
  %454 = load i32, ptr %453, align 4, !tbaa !55
  %455 = load i32, ptr %41, align 4, !tbaa !61
  %456 = invoke noundef nonnull align 8 dereferenceable(56) ptr @_ZN8QpVector4unitEiiRS_(i32 noundef %454, i32 noundef %455, ptr noundef nonnull align 8 dereferenceable(56) %22)
          to label %457 unwind label %502

457:                                              ; preds = %445
  %458 = load ptr, ptr %12, align 8, !tbaa !5
  %459 = load i32, ptr %40, align 4, !tbaa !61
  %460 = invoke noundef nonnull align 8 dereferenceable(56) ptr @_ZN5Basis5btranERK8QpVectorRS0_bi(ptr noundef nonnull align 8 dereferenceable(2913) %458, ptr noundef nonnull align 8 dereferenceable(56) %22, ptr noundef nonnull align 8 dereferenceable(56) %22, i1 noundef zeroext true, i32 noundef %459)
          to label %461 unwind label %502

461:                                              ; preds = %457
  %462 = load ptr, ptr %12, align 8, !tbaa !5
  %463 = invoke noundef i32 @_ZNK5Basis14getnuminactiveEv(ptr noundef nonnull align 8 dereferenceable(2913) %462)
          to label %464 unwind label %502

464:                                              ; preds = %461
  %465 = getelementptr inbounds %struct.QpVector, ptr %24, i32 0, i32 1
  store i32 %463, ptr %465, align 4, !tbaa !73
  %466 = load ptr, ptr %12, align 8, !tbaa !5
  %467 = invoke noundef i32 @_ZNK5Basis14getnuminactiveEv(ptr noundef nonnull align 8 dereferenceable(2913) %466)
          to label %468 unwind label %502

468:                                              ; preds = %464
  %469 = getelementptr inbounds %struct.QpVector, ptr %25, i32 0, i32 1
  store i32 %467, ptr %469, align 4, !tbaa !73
  %470 = getelementptr inbounds %struct.Quass, ptr %58, i32 0, i32 0
  %471 = load ptr, ptr %470, align 8, !tbaa !9
  %472 = load ptr, ptr %12, align 8, !tbaa !5
  %473 = invoke noundef nonnull align 8 dereferenceable(56) ptr @_ZL28computesearchdirection_majorR7RuntimeR5BasisR14CholeskyFactorRK8QpVectorR8GradientRS5_SA_SA_SA_(ptr noundef nonnull align 8 dereferenceable(2552) %471, ptr noundef nonnull align 8 dereferenceable(2913) %472, ptr noundef nonnull align 8 dereferenceable(88) %18, ptr noundef nonnull align 8 dereferenceable(56) %22, ptr noundef nonnull align 8 dereferenceable(72) %13, ptr noundef nonnull align 8 dereferenceable(56) %23, ptr noundef nonnull align 8 dereferenceable(56) %24, ptr noundef nonnull align 8 dereferenceable(56) %25, ptr noundef nonnull align 8 dereferenceable(56) %20)
          to label %474 unwind label %502

474:                                              ; preds = %468
  %475 = load ptr, ptr %12, align 8, !tbaa !5
  %476 = load i32, ptr %40, align 4, !tbaa !61
  invoke void @_ZN5Basis10deactivateEi(ptr noundef nonnull align 8 dereferenceable(2913) %475, i32 noundef %476)
          to label %477 unwind label %502

477:                                              ; preds = %474
  %478 = getelementptr inbounds %struct.Quass, ptr %58, i32 0, i32 0
  %479 = load ptr, ptr %478, align 8, !tbaa !9
  %480 = load ptr, ptr %12, align 8, !tbaa !5
  invoke void @_ZL14computerowmoveR7RuntimeR5BasisR8QpVectorS4_(ptr noundef nonnull align 8 dereferenceable(2552) %479, ptr noundef nonnull align 8 dereferenceable(2913) %480, ptr noundef nonnull align 8 dereferenceable(56) %20, ptr noundef nonnull align 8 dereferenceable(56) %21)
          to label %481 unwind label %502

481:                                              ; preds = %477
  %482 = load ptr, ptr %12, align 8, !tbaa !5
  %483 = getelementptr inbounds %struct.Quass, ptr %58, i32 0, i32 0
  %484 = load ptr, ptr %483, align 8, !tbaa !9
  invoke void @_ZL6tidyupR8QpVectorS0_R5BasisR7Runtime(ptr noundef nonnull align 8 dereferenceable(56) %20, ptr noundef nonnull align 8 dereferenceable(56) %21, ptr noundef nonnull align 8 dereferenceable(2913) %482, ptr noundef nonnull align 8 dereferenceable(2552) %484)
          to label %485 unwind label %502

485:                                              ; preds = %481
  %486 = call noundef double @_ZNSt14numeric_limitsIdE8infinityEv() #8
  store double %486, ptr %39, align 8, !tbaa !62
  %487 = getelementptr inbounds %struct.Quass, ptr %58, i32 0, i32 0
  %488 = load ptr, ptr %487, align 8, !tbaa !9
  %489 = invoke noundef double @_ZL20computemaxsteplengthR7RuntimeRK8QpVectorR8GradientRS1_Rb(ptr noundef nonnull align 8 dereferenceable(2552) %488, ptr noundef nonnull align 8 dereferenceable(56) %20, ptr noundef nonnull align 8 dereferenceable(72) %13, ptr noundef nonnull align 8 dereferenceable(56) %26, ptr noundef nonnull align 1 dereferenceable(1) %38)
          to label %490 unwind label %502

490:                                              ; preds = %485
  store double %489, ptr %39, align 8, !tbaa !62
  %491 = load i8, ptr %38, align 1, !tbaa !63, !range !69, !noundef !70
  %492 = trunc i8 %491 to i1
  br i1 %492, label %507, label %493

493:                                              ; preds = %490
  %494 = invoke noundef i32 @_ZN14CholeskyFactor6expandERK8QpVectorRS0_S3_S3_(ptr noundef nonnull align 8 dereferenceable(88) %18, ptr noundef nonnull align 8 dereferenceable(56) %22, ptr noundef nonnull align 8 dereferenceable(56) %23, ptr noundef nonnull align 8 dereferenceable(56) %24, ptr noundef nonnull align 8 dereferenceable(56) %25)
          to label %495 unwind label %502

495:                                              ; preds = %493
  store i32 %494, ptr %37, align 4, !tbaa !74
  %496 = load i32, ptr %37, align 4, !tbaa !74
  %497 = icmp ne i32 %496, 0
  br i1 %497, label %498, label %506

498:                                              ; preds = %495
  %499 = getelementptr inbounds %struct.Quass, ptr %58, i32 0, i32 0
  %500 = load ptr, ptr %499, align 8, !tbaa !9
  %501 = getelementptr inbounds %struct.Runtime, ptr %500, i32 0, i32 10
  store i32 1, ptr %501, align 8, !tbaa !65
  store i32 1, ptr %34, align 4
  br label %509

502:                                              ; preds = %507, %493, %485, %481, %477, %474, %468, %464, %461, %457, %445, %435
  %503 = landingpad { ptr, i32 }
          cleanup
  %504 = extractvalue { ptr, i32 } %503, 0
  store ptr %504, ptr %15, align 8
  %505 = extractvalue { ptr, i32 } %503, 1
  store i32 %505, ptr %16, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %41) #8
  br label %513

506:                                              ; preds = %495
  br label %507

507:                                              ; preds = %506, %490
  invoke void @_ZN15ReducedGradient6expandERK8QpVector(ptr noundef nonnull align 8 dereferenceable(80) %17, ptr noundef nonnull align 8 dereferenceable(56) %22)
          to label %508 unwind label %502

508:                                              ; preds = %507
  store i32 0, ptr %34, align 4
  br label %509

509:                                              ; preds = %508, %498
  call void @llvm.lifetime.end.p0(i64 4, ptr %41) #8
  br label %510

510:                                              ; preds = %509, %427
  call void @llvm.lifetime.end.p0(i64 4, ptr %40) #8
  %511 = load i32, ptr %34, align 4
  switch i32 %511, label %685 [
    i32 0, label %512
  ]

512:                                              ; preds = %510
  br label %538

513:                                              ; preds = %502, %431
  call void @llvm.lifetime.end.p0(i64 4, ptr %40) #8
  br label %688

514:                                              ; preds = %410
  %515 = getelementptr inbounds %struct.Quass, ptr %58, i32 0, i32 0
  %516 = load ptr, ptr %515, align 8, !tbaa !9
  %517 = load ptr, ptr %12, align 8, !tbaa !5
  %518 = invoke noundef nonnull align 8 dereferenceable(56) ptr @_ZL28computesearchdirection_minorR7RuntimeR5BasisR14CholeskyFactorR15ReducedGradientR8QpVector(ptr noundef nonnull align 8 dereferenceable(2552) %516, ptr noundef nonnull align 8 dereferenceable(2913) %517, ptr noundef nonnull align 8 dereferenceable(88) %18, ptr noundef nonnull align 8 dereferenceable(80) %17, ptr noundef nonnull align 8 dereferenceable(56) %20)
          to label %519 unwind label %534

519:                                              ; preds = %514
  %520 = getelementptr inbounds %struct.Quass, ptr %58, i32 0, i32 0
  %521 = load ptr, ptr %520, align 8, !tbaa !9
  %522 = load ptr, ptr %12, align 8, !tbaa !5
  invoke void @_ZL14computerowmoveR7RuntimeR5BasisR8QpVectorS4_(ptr noundef nonnull align 8 dereferenceable(2552) %521, ptr noundef nonnull align 8 dereferenceable(2913) %522, ptr noundef nonnull align 8 dereferenceable(56) %20, ptr noundef nonnull align 8 dereferenceable(56) %21)
          to label %523 unwind label %534

523:                                              ; preds = %519
  %524 = load ptr, ptr %12, align 8, !tbaa !5
  %525 = getelementptr inbounds %struct.Quass, ptr %58, i32 0, i32 0
  %526 = load ptr, ptr %525, align 8, !tbaa !9
  invoke void @_ZL6tidyupR8QpVectorS0_R5BasisR7Runtime(ptr noundef nonnull align 8 dereferenceable(56) %20, ptr noundef nonnull align 8 dereferenceable(56) %21, ptr noundef nonnull align 8 dereferenceable(2913) %524, ptr noundef nonnull align 8 dereferenceable(2552) %526)
          to label %527 unwind label %534

527:                                              ; preds = %523
  %528 = getelementptr inbounds %struct.Quass, ptr %58, i32 0, i32 0
  %529 = load ptr, ptr %528, align 8, !tbaa !9
  %530 = getelementptr inbounds %struct.Runtime, ptr %529, i32 0, i32 0
  %531 = getelementptr inbounds %struct.Instance, ptr %530, i32 0, i32 5
  %532 = invoke noundef nonnull align 8 dereferenceable(56) ptr @_ZN6Matrix7mat_vecERK8QpVectorRS0_(ptr noundef nonnull align 8 dereferenceable(168) %531, ptr noundef nonnull align 8 dereferenceable(56) %20, ptr noundef nonnull align 8 dereferenceable(56) %26)
          to label %533 unwind label %534

533:                                              ; preds = %527
  br label %538

534:                                              ; preds = %538, %527, %523, %519, %514
  %535 = landingpad { ptr, i32 }
          cleanup
  %536 = extractvalue { ptr, i32 } %535, 0
  store ptr %536, ptr %15, align 8
  %537 = extractvalue { ptr, i32 } %535, 1
  store i32 %537, ptr %16, align 4
  br label %688

538:                                              ; preds = %533, %512
  %539 = invoke noundef double @_ZN8QpVector5norm2Ev(ptr noundef nonnull align 8 dereferenceable(56) %20)
          to label %540 unwind label %534

540:                                              ; preds = %538
  %541 = getelementptr inbounds %struct.Quass, ptr %58, i32 0, i32 0
  %542 = load ptr, ptr %541, align 8, !tbaa !9
  %543 = getelementptr inbounds %struct.Runtime, ptr %542, i32 0, i32 4
  %544 = getelementptr inbounds %struct.Settings, ptr %543, i32 0, i32 6
  %545 = load double, ptr %544, align 8, !tbaa !76
  %546 = fcmp olt double %539, %545
  br i1 %546, label %550, label %547

547:                                              ; preds = %540
  %548 = load double, ptr %39, align 8, !tbaa !62
  %549 = fcmp oeq double %548, 0.000000e+00
  br i1 %549, label %550, label %551

550:                                              ; preds = %547, %540
  store i8 1, ptr %33, align 1, !tbaa !63
  br label %684

551:                                              ; preds = %547
  %552 = getelementptr inbounds %struct.Quass, ptr %58, i32 0, i32 0
  %553 = load ptr, ptr %552, align 8, !tbaa !9
  %554 = getelementptr inbounds %struct.Runtime, ptr %553, i32 0, i32 5
  %555 = load ptr, ptr %554, align 8, !tbaa !11
  %556 = getelementptr inbounds %struct.Statistics, ptr %555, i32 0, i32 1
  %557 = load i32, ptr %556, align 4, !tbaa !57
  %558 = add nsw i32 %557, 1
  store i32 %558, ptr %556, align 4, !tbaa !57
  call void @llvm.lifetime.start.p0(i64 16, ptr %42) #8
  %559 = getelementptr inbounds %struct.Quass, ptr %58, i32 0, i32 0
  %560 = load ptr, ptr %559, align 8, !tbaa !9
  %561 = load double, ptr %39, align 8, !tbaa !62
  %562 = invoke { double, i64 } @_Z9ratiotestR7RuntimeRK8QpVectorS3_d(ptr noundef nonnull align 8 dereferenceable(2552) %560, ptr noundef nonnull align 8 dereferenceable(56) %20, ptr noundef nonnull align 8 dereferenceable(56) %21, double noundef %561)
          to label %563 unwind label %585

563:                                              ; preds = %551
  %564 = getelementptr inbounds { double, i64 }, ptr %42, i32 0, i32 0
  %565 = extractvalue { double, i64 } %562, 0
  store double %565, ptr %564, align 8
  %566 = getelementptr inbounds { double, i64 }, ptr %42, i32 0, i32 1
  %567 = extractvalue { double, i64 } %562, 1
  store i64 %567, ptr %566, align 8
  %568 = getelementptr inbounds %struct.RatiotestResult, ptr %42, i32 0, i32 1
  %569 = load i32, ptr %568, align 8, !tbaa !77
  %570 = icmp ne i32 %569, -1
  br i1 %570, label %571, label %648

571:                                              ; preds = %563
  call void @llvm.lifetime.start.p0(i64 4, ptr %43) #8
  call void @llvm.lifetime.start.p0(i64 4, ptr %44) #8
  %572 = getelementptr inbounds %struct.Quass, ptr %58, i32 0, i32 0
  %573 = load ptr, ptr %572, align 8, !tbaa !9
  %574 = load ptr, ptr %12, align 8, !tbaa !5
  %575 = getelementptr inbounds %struct.RatiotestResult, ptr %42, i32 0, i32 1
  %576 = load i32, ptr %575, align 8, !tbaa !77
  %577 = invoke noundef i32 @_ZL6reduceR7RuntimeR5BasisiR8QpVectorRiS5_(ptr noundef nonnull align 8 dereferenceable(2552) %573, ptr noundef nonnull align 8 dereferenceable(2913) %574, i32 noundef %576, ptr noundef nonnull align 8 dereferenceable(56) %27, ptr noundef nonnull align 4 dereferenceable(4) %44, ptr noundef nonnull align 4 dereferenceable(4) %43)
          to label %578 unwind label %589

578:                                              ; preds = %571
  store i32 %577, ptr %37, align 4, !tbaa !74
  %579 = load i32, ptr %37, align 4, !tbaa !74
  %580 = icmp ne i32 %579, 0
  br i1 %580, label %581, label %593

581:                                              ; preds = %578
  %582 = getelementptr inbounds %struct.Quass, ptr %58, i32 0, i32 0
  %583 = load ptr, ptr %582, align 8, !tbaa !9
  %584 = getelementptr inbounds %struct.Runtime, ptr %583, i32 0, i32 10
  store i32 1, ptr %584, align 8, !tbaa !65
  store i32 1, ptr %34, align 4
  br label %645

585:                                              ; preds = %678, %675, %668, %661, %657, %551
  %586 = landingpad { ptr, i32 }
          cleanup
  %587 = extractvalue { ptr, i32 } %586, 0
  store ptr %587, ptr %15, align 8
  %588 = extractvalue { ptr, i32 } %586, 1
  store i32 %588, ptr %16, align 4
  br label %683

589:                                              ; preds = %633, %611, %608, %606, %603, %600, %596, %571
  %590 = landingpad { ptr, i32 }
          cleanup
  %591 = extractvalue { ptr, i32 } %590, 0
  store ptr %591, ptr %15, align 8
  %592 = extractvalue { ptr, i32 } %590, 1
  store i32 %592, ptr %16, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %44) #8
  call void @llvm.lifetime.end.p0(i64 4, ptr %43) #8
  br label %683

593:                                              ; preds = %578
  %594 = load i8, ptr %38, align 1, !tbaa !63, !range !69, !noundef !70
  %595 = trunc i8 %594 to i1
  br i1 %595, label %606, label %596

596:                                              ; preds = %593
  %597 = load i32, ptr %44, align 4, !tbaa !61
  %598 = load ptr, ptr %12, align 8, !tbaa !5
  %599 = invoke noundef nonnull align 8 dereferenceable(24) ptr @_ZNK5Basis11getinactiveEv(ptr noundef nonnull align 8 dereferenceable(2913) %598)
          to label %600 unwind label %589

600:                                              ; preds = %596
  %601 = getelementptr inbounds %struct.RatiotestResult, ptr %42, i32 0, i32 1
  %602 = invoke noundef i32 @_Z7indexofIiEiRKSt6vectorIT_SaIS1_EERKS1_(ptr noundef nonnull align 8 dereferenceable(24) %599, ptr noundef nonnull align 4 dereferenceable(4) %601)
          to label %603 unwind label %589

603:                                              ; preds = %600
  %604 = icmp ne i32 %602, -1
  invoke void @_ZN14CholeskyFactor6reduceERK8QpVectorib(ptr noundef nonnull align 8 dereferenceable(88) %18, ptr noundef nonnull align 8 dereferenceable(56) %27, i32 noundef %597, i1 noundef zeroext %604)
          to label %605 unwind label %589

605:                                              ; preds = %603
  br label %606

606:                                              ; preds = %605, %593
  %607 = load i32, ptr %44, align 4, !tbaa !61
  invoke void @_ZN15ReducedGradient6reduceERK8QpVectori(ptr noundef nonnull align 8 dereferenceable(80) %17, ptr noundef nonnull align 8 dereferenceable(56) %27, i32 noundef %607)
          to label %608 unwind label %589

608:                                              ; preds = %606
  %609 = getelementptr inbounds %struct.RatiotestResult, ptr %42, i32 0, i32 0
  %610 = load double, ptr %609, align 8, !tbaa !79
  invoke void @_ZN15ReducedGradient6updateEdb(ptr noundef nonnull align 8 dereferenceable(80) %17, double noundef %610, i1 noundef zeroext false)
          to label %611 unwind label %589

611:                                              ; preds = %608
  %612 = load ptr, ptr %12, align 8, !tbaa !5
  %613 = getelementptr inbounds %struct.Quass, ptr %58, i32 0, i32 0
  %614 = load ptr, ptr %613, align 8, !tbaa !9
  %615 = getelementptr inbounds %struct.Runtime, ptr %614, i32 0, i32 4
  %616 = getelementptr inbounds %struct.RatiotestResult, ptr %42, i32 0, i32 1
  %617 = load i32, ptr %616, align 8, !tbaa !77
  %618 = getelementptr inbounds %struct.RatiotestResult, ptr %42, i32 0, i32 2
  %619 = load i8, ptr %618, align 4, !tbaa !80, !range !69, !noundef !70
  %620 = trunc i8 %619 to i1
  %621 = zext i1 %620 to i64
  %622 = select i1 %620, i32 1, i32 2
  %623 = load i32, ptr %43, align 4, !tbaa !61
  %624 = call noundef ptr @_ZNKSt10unique_ptrI7PricingSt14default_deleteIS0_EE3getEv(ptr noundef nonnull align 8 dereferenceable(8) %19) #8
  %625 = invoke noundef i32 @_ZN5Basis8activateERK8Settingsi11BasisStatusiP7Pricing(ptr noundef nonnull align 8 dereferenceable(2913) %612, ptr noundef nonnull align 8 dereferenceable(211) %615, i32 noundef %617, i32 noundef %622, i32 noundef %623, ptr noundef %624)
          to label %626 unwind label %589

626:                                              ; preds = %611
  store i32 %625, ptr %37, align 4, !tbaa !74
  %627 = load i32, ptr %37, align 4, !tbaa !74
  %628 = icmp ne i32 %627, 0
  br i1 %628, label %629, label %633

629:                                              ; preds = %626
  %630 = getelementptr inbounds %struct.Quass, ptr %58, i32 0, i32 0
  %631 = load ptr, ptr %630, align 8, !tbaa !9
  %632 = getelementptr inbounds %struct.Runtime, ptr %631, i32 0, i32 10
  store i32 1, ptr %632, align 8, !tbaa !65
  store i32 1, ptr %34, align 4
  br label %645

633:                                              ; preds = %626
  %634 = load ptr, ptr %12, align 8, !tbaa !5
  %635 = invoke noundef i32 @_ZNK5Basis12getnumactiveEv(ptr noundef nonnull align 8 dereferenceable(2913) %634)
          to label %636 unwind label %589

636:                                              ; preds = %633
  %637 = getelementptr inbounds %struct.Quass, ptr %58, i32 0, i32 0
  %638 = load ptr, ptr %637, align 8, !tbaa !9
  %639 = getelementptr inbounds %struct.Runtime, ptr %638, i32 0, i32 0
  %640 = getelementptr inbounds %struct.Instance, ptr %639, i32 0, i32 1
  %641 = load i32, ptr %640, align 4, !tbaa !55
  %642 = icmp ne i32 %635, %641
  br i1 %642, label %643, label %644

643:                                              ; preds = %636
  store i8 0, ptr %33, align 1, !tbaa !63
  br label %644

644:                                              ; preds = %643, %636
  store i32 0, ptr %34, align 4
  br label %645

645:                                              ; preds = %644, %629, %581
  call void @llvm.lifetime.end.p0(i64 4, ptr %44) #8
  call void @llvm.lifetime.end.p0(i64 4, ptr %43) #8
  %646 = load i32, ptr %34, align 4
  switch i32 %646, label %680 [
    i32 0, label %647
  ]

647:                                              ; preds = %645
  br label %661

648:                                              ; preds = %563
  %649 = getelementptr inbounds %struct.RatiotestResult, ptr %42, i32 0, i32 0
  %650 = load double, ptr %649, align 8, !tbaa !79
  %651 = call noundef double @_ZNSt14numeric_limitsIdE8infinityEv() #8
  %652 = fcmp oeq double %650, %651
  br i1 %652, label %653, label %657

653:                                              ; preds = %648
  %654 = getelementptr inbounds %struct.Quass, ptr %58, i32 0, i32 0
  %655 = load ptr, ptr %654, align 8, !tbaa !9
  %656 = getelementptr inbounds %struct.Runtime, ptr %655, i32 0, i32 10
  store i32 3, ptr %656, align 8, !tbaa !65
  store i32 1, ptr %34, align 4
  br label %680

657:                                              ; preds = %648
  store i8 0, ptr %33, align 1, !tbaa !63
  %658 = getelementptr inbounds %struct.RatiotestResult, ptr %42, i32 0, i32 0
  %659 = load double, ptr %658, align 8, !tbaa !79
  invoke void @_ZN15ReducedGradient6updateEdb(ptr noundef nonnull align 8 dereferenceable(80) %17, double noundef %659, i1 noundef zeroext false)
          to label %660 unwind label %585

660:                                              ; preds = %657
  br label %661

661:                                              ; preds = %660, %647
  %662 = getelementptr inbounds %struct.Quass, ptr %58, i32 0, i32 0
  %663 = load ptr, ptr %662, align 8, !tbaa !9
  %664 = getelementptr inbounds %struct.Runtime, ptr %663, i32 0, i32 6
  %665 = getelementptr inbounds %struct.RatiotestResult, ptr %42, i32 0, i32 0
  %666 = load double, ptr %665, align 8, !tbaa !79
  %667 = invoke noundef nonnull align 8 dereferenceable(56) ptr @_ZN8QpVector5saxpyEdRKS_(ptr noundef nonnull align 8 dereferenceable(56) %664, double noundef %666, ptr noundef nonnull align 8 dereferenceable(56) %20)
          to label %668 unwind label %585

668:                                              ; preds = %661
  %669 = getelementptr inbounds %struct.Quass, ptr %58, i32 0, i32 0
  %670 = load ptr, ptr %669, align 8, !tbaa !9
  %671 = getelementptr inbounds %struct.Runtime, ptr %670, i32 0, i32 7
  %672 = getelementptr inbounds %struct.RatiotestResult, ptr %42, i32 0, i32 0
  %673 = load double, ptr %672, align 8, !tbaa !79
  %674 = invoke noundef nonnull align 8 dereferenceable(56) ptr @_ZN8QpVector5saxpyEdRKS_(ptr noundef nonnull align 8 dereferenceable(56) %671, double noundef %673, ptr noundef nonnull align 8 dereferenceable(56) %21)
          to label %675 unwind label %585

675:                                              ; preds = %668
  %676 = getelementptr inbounds %struct.RatiotestResult, ptr %42, i32 0, i32 0
  %677 = load double, ptr %676, align 8, !tbaa !79
  invoke void @_ZN8Gradient6updateER8QpVectord(ptr noundef nonnull align 8 dereferenceable(72) %13, ptr noundef nonnull align 8 dereferenceable(56) %26, double noundef %677)
          to label %678 unwind label %585

678:                                              ; preds = %675
  invoke void @_ZN12ReducedCosts6updateEv(ptr noundef nonnull align 8 dereferenceable(73) %14)
          to label %679 unwind label %585

679:                                              ; preds = %678
  store i32 0, ptr %34, align 4
  br label %680

680:                                              ; preds = %679, %653, %645
  call void @llvm.lifetime.end.p0(i64 16, ptr %42) #8
  %681 = load i32, ptr %34, align 4
  switch i32 %681, label %685 [
    i32 0, label %682
  ]

682:                                              ; preds = %680
  br label %684

683:                                              ; preds = %589, %585
  call void @llvm.lifetime.end.p0(i64 16, ptr %42) #8
  br label %688

684:                                              ; preds = %682, %550
  store i32 0, ptr %34, align 4
  br label %685

685:                                              ; preds = %684, %680, %510
  call void @llvm.lifetime.end.p0(i64 8, ptr %39) #8
  call void @llvm.lifetime.end.p0(i64 1, ptr %38) #8
  call void @llvm.lifetime.end.p0(i64 4, ptr %37) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %35) #8
  %686 = load i32, ptr %34, align 4
  switch i32 %686, label %925 [
    i32 0, label %687
    i32 3, label %690
  ]

687:                                              ; preds = %685
  br label %180, !llvm.loop !81

688:                                              ; preds = %683, %534, %513
  call void @llvm.lifetime.end.p0(i64 8, ptr %39) #8
  call void @llvm.lifetime.end.p0(i64 1, ptr %38) #8
  call void @llvm.lifetime.end.p0(i64 4, ptr %37) #8
  br label %689

689:                                              ; preds = %688, %398, %361
  call void @llvm.lifetime.end.p0(i64 8, ptr %35) #8
  br label %929

690:                                              ; preds = %685, %277, %194
  %691 = getelementptr inbounds %struct.Quass, ptr %58, i32 0, i32 0
  %692 = load ptr, ptr %691, align 8, !tbaa !9
  %693 = load ptr, ptr %12, align 8, !tbaa !5
  %694 = load ptr, ptr %10, align 8, !tbaa !5
  invoke void @_ZL14loginformationR7RuntimeR5BasisR14CholeskyFactorR10HighsTimer(ptr noundef nonnull align 8 dereferenceable(2552) %692, ptr noundef nonnull align 8 dereferenceable(2913) %693, ptr noundef nonnull align 8 dereferenceable(88) %18, ptr noundef nonnull align 8 dereferenceable(132) %694)
          to label %695 unwind label %281

695:                                              ; preds = %690
  %696 = getelementptr inbounds %struct.Quass, ptr %58, i32 0, i32 0
  %697 = load ptr, ptr %696, align 8, !tbaa !9
  %698 = getelementptr inbounds %struct.Runtime, ptr %697, i32 0, i32 4
  %699 = getelementptr inbounds %struct.Settings, ptr %698, i32 0, i32 20
  %700 = getelementptr inbounds %struct.Quass, ptr %58, i32 0, i32 0
  %701 = load ptr, ptr %700, align 8, !tbaa !9
  %702 = getelementptr inbounds %struct.Runtime, ptr %701, i32 0, i32 5
  %703 = load ptr, ptr %702, align 8, !tbaa !11
  invoke void @_ZN12EventhandlerIR10StatisticsE4fireES1_(ptr noundef nonnull align 8 dereferenceable(24) %699, ptr noundef nonnull align 8 dereferenceable(216) %703)
          to label %704 unwind label %281

704:                                              ; preds = %695
  %705 = getelementptr inbounds %struct.Quass, ptr %58, i32 0, i32 0
  %706 = load ptr, ptr %705, align 8, !tbaa !9
  %707 = getelementptr inbounds %struct.Runtime, ptr %706, i32 0, i32 0
  %708 = getelementptr inbounds %struct.Quass, ptr %58, i32 0, i32 0
  %709 = load ptr, ptr %708, align 8, !tbaa !9
  %710 = getelementptr inbounds %struct.Runtime, ptr %709, i32 0, i32 6
  call void @llvm.lifetime.start.p0(i64 56, ptr %45) #8
  %711 = getelementptr inbounds %struct.Quass, ptr %58, i32 0, i32 0
  %712 = load ptr, ptr %711, align 8, !tbaa !9
  %713 = getelementptr inbounds %struct.Runtime, ptr %712, i32 0, i32 0
  %714 = getelementptr inbounds %struct.Instance, ptr %713, i32 0, i32 8
  %715 = getelementptr inbounds %struct.Quass, ptr %58, i32 0, i32 0
  %716 = load ptr, ptr %715, align 8, !tbaa !9
  %717 = getelementptr inbounds %struct.Runtime, ptr %716, i32 0, i32 6
  invoke void @_ZN6Matrix7mat_vecERK8QpVector(ptr dead_on_unwind writable sret(%struct.QpVector) align 8 %45, ptr noundef nonnull align 8 dereferenceable(168) %714, ptr noundef nonnull align 8 dereferenceable(56) %717)
          to label %718 unwind label %739

718:                                              ; preds = %704
  %719 = invoke { double, i32 } @_ZN8Instance27sumnumprimalinfeasibilitiesERK8QpVectorS2_(ptr noundef nonnull align 8 dereferenceable(512) %707, ptr noundef nonnull align 8 dereferenceable(56) %710, ptr noundef nonnull align 8 dereferenceable(56) %45)
          to label %720 unwind label %743

720:                                              ; preds = %718
  %721 = getelementptr inbounds { double, i32 }, ptr %46, i32 0, i32 0
  %722 = extractvalue { double, i32 } %719, 0
  store double %722, ptr %721, align 8
  %723 = getelementptr inbounds { double, i32 }, ptr %46, i32 0, i32 1
  %724 = extractvalue { double, i32 } %719, 1
  store i32 %724, ptr %723, align 8
  call void @_ZN8QpVectorD2Ev(ptr noundef nonnull align 8 dereferenceable(56) %45) #8
  call void @llvm.lifetime.end.p0(i64 56, ptr %45) #8
  call void @llvm.lifetime.start.p0(i64 8, ptr %47) #8
  %725 = invoke noundef nonnull align 8 dereferenceable(56) ptr @_ZN12ReducedCosts15getReducedCostsEv(ptr noundef nonnull align 8 dereferenceable(73) %14)
          to label %726 unwind label %748

726:                                              ; preds = %720
  store ptr %725, ptr %47, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %48) #8
  %727 = load ptr, ptr %12, align 8, !tbaa !5
  %728 = invoke noundef nonnull align 8 dereferenceable(24) ptr @_ZNK5Basis9getactiveEv(ptr noundef nonnull align 8 dereferenceable(2913) %727)
          to label %729 unwind label %752

729:                                              ; preds = %726
  store ptr %728, ptr %48, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %49) #8
  %730 = load ptr, ptr %48, align 8, !tbaa !5
  %731 = call ptr @_ZNKSt6vectorIiSaIiEE5beginEv(ptr noundef nonnull align 8 dereferenceable(24) %730) #8
  %732 = getelementptr inbounds %"class.__gnu_cxx::__normal_iterator", ptr %49, i32 0, i32 0
  store ptr %731, ptr %732, align 8
  call void @llvm.lifetime.start.p0(i64 8, ptr %50) #8
  %733 = load ptr, ptr %48, align 8, !tbaa !5
  %734 = call ptr @_ZNKSt6vectorIiSaIiEE3endEv(ptr noundef nonnull align 8 dereferenceable(24) %733) #8
  %735 = getelementptr inbounds %"class.__gnu_cxx::__normal_iterator", ptr %50, i32 0, i32 0
  store ptr %734, ptr %735, align 8
  br label %736

736:                                              ; preds = %813, %729
  %737 = call noundef zeroext i1 @_ZN9__gnu_cxxneIPKiSt6vectorIiSaIiEEEEbRKNS_17__normal_iteratorIT_T0_EESB_(ptr noundef nonnull align 8 dereferenceable(8) %49, ptr noundef nonnull align 8 dereferenceable(8) %50) #8
  br i1 %737, label %756, label %738

738:                                              ; preds = %736
  store i32 4, ptr %34, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %50) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %49) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %48) #8
  br label %816

739:                                              ; preds = %704
  %740 = landingpad { ptr, i32 }
          cleanup
  %741 = extractvalue { ptr, i32 } %740, 0
  store ptr %741, ptr %15, align 8
  %742 = extractvalue { ptr, i32 } %740, 1
  store i32 %742, ptr %16, align 4
  br label %747

743:                                              ; preds = %718
  %744 = landingpad { ptr, i32 }
          cleanup
  %745 = extractvalue { ptr, i32 } %744, 0
  store ptr %745, ptr %15, align 8
  %746 = extractvalue { ptr, i32 } %744, 1
  store i32 %746, ptr %16, align 4
  call void @_ZN8QpVectorD2Ev(ptr noundef nonnull align 8 dereferenceable(56) %45) #8
  br label %747

747:                                              ; preds = %743, %739
  call void @llvm.lifetime.end.p0(i64 56, ptr %45) #8
  br label %929

748:                                              ; preds = %886, %820, %816, %720
  %749 = landingpad { ptr, i32 }
          cleanup
  %750 = extractvalue { ptr, i32 } %749, 0
  store ptr %750, ptr %15, align 8
  %751 = extractvalue { ptr, i32 } %749, 1
  store i32 %751, ptr %16, align 4
  br label %928

752:                                              ; preds = %726
  %753 = landingpad { ptr, i32 }
          cleanup
  %754 = extractvalue { ptr, i32 } %753, 0
  store ptr %754, ptr %15, align 8
  %755 = extractvalue { ptr, i32 } %753, 1
  store i32 %755, ptr %16, align 4
  br label %815

756:                                              ; preds = %736
  call void @llvm.lifetime.start.p0(i64 4, ptr %51) #8
  %757 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNK9__gnu_cxx17__normal_iteratorIPKiSt6vectorIiSaIiEEEdeEv(ptr noundef nonnull align 8 dereferenceable(8) %49) #8
  %758 = load i32, ptr %757, align 4, !tbaa !61
  store i32 %758, ptr %51, align 4, !tbaa !61
  call void @llvm.lifetime.start.p0(i64 4, ptr %52) #8
  %759 = load ptr, ptr %12, align 8, !tbaa !5
  %760 = invoke noundef nonnull align 8 dereferenceable(24) ptr @_ZNK5Basis16getindexinfactorEv(ptr noundef nonnull align 8 dereferenceable(2913) %759)
          to label %761 unwind label %794

761:                                              ; preds = %756
  %762 = load i32, ptr %51, align 4, !tbaa !61
  %763 = sext i32 %762 to i64
  %764 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNKSt6vectorIiSaIiEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %760, i64 noundef %763) #8
  %765 = load i32, ptr %764, align 4, !tbaa !61
  store i32 %765, ptr %52, align 4, !tbaa !61
  %766 = load i32, ptr %51, align 4, !tbaa !61
  %767 = getelementptr inbounds %struct.Quass, ptr %58, i32 0, i32 0
  %768 = load ptr, ptr %767, align 8, !tbaa !9
  %769 = getelementptr inbounds %struct.Runtime, ptr %768, i32 0, i32 0
  %770 = getelementptr inbounds %struct.Instance, ptr %769, i32 0, i32 2
  %771 = load i32, ptr %770, align 8, !tbaa !56
  %772 = icmp sge i32 %766, %771
  br i1 %772, label %773, label %798

773:                                              ; preds = %761
  call void @llvm.lifetime.start.p0(i64 4, ptr %53) #8
  %774 = load i32, ptr %51, align 4, !tbaa !61
  %775 = getelementptr inbounds %struct.Quass, ptr %58, i32 0, i32 0
  %776 = load ptr, ptr %775, align 8, !tbaa !9
  %777 = getelementptr inbounds %struct.Runtime, ptr %776, i32 0, i32 0
  %778 = getelementptr inbounds %struct.Instance, ptr %777, i32 0, i32 2
  %779 = load i32, ptr %778, align 8, !tbaa !56
  %780 = sub nsw i32 %774, %779
  store i32 %780, ptr %53, align 4, !tbaa !61
  %781 = load ptr, ptr %47, align 8, !tbaa !5
  %782 = getelementptr inbounds %struct.QpVector, ptr %781, i32 0, i32 3
  %783 = load i32, ptr %52, align 4, !tbaa !61
  %784 = sext i32 %783 to i64
  %785 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt6vectorIdSaIdEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %782, i64 noundef %784) #8
  %786 = load double, ptr %785, align 8, !tbaa !62
  %787 = getelementptr inbounds %struct.Quass, ptr %58, i32 0, i32 0
  %788 = load ptr, ptr %787, align 8, !tbaa !9
  %789 = getelementptr inbounds %struct.Runtime, ptr %788, i32 0, i32 8
  %790 = getelementptr inbounds %struct.QpVector, ptr %789, i32 0, i32 3
  %791 = load i32, ptr %53, align 4, !tbaa !61
  %792 = sext i32 %791 to i64
  %793 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt6vectorIdSaIdEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %790, i64 noundef %792) #8
  store double %786, ptr %793, align 8, !tbaa !62
  call void @llvm.lifetime.end.p0(i64 4, ptr %53) #8
  br label %812

794:                                              ; preds = %756
  %795 = landingpad { ptr, i32 }
          cleanup
  %796 = extractvalue { ptr, i32 } %795, 0
  store ptr %796, ptr %15, align 8
  %797 = extractvalue { ptr, i32 } %795, 1
  store i32 %797, ptr %16, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %52) #8
  call void @llvm.lifetime.end.p0(i64 4, ptr %51) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %50) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %49) #8
  br label %815

798:                                              ; preds = %761
  %799 = load ptr, ptr %47, align 8, !tbaa !5
  %800 = getelementptr inbounds %struct.QpVector, ptr %799, i32 0, i32 3
  %801 = load i32, ptr %52, align 4, !tbaa !61
  %802 = sext i32 %801 to i64
  %803 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt6vectorIdSaIdEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %800, i64 noundef %802) #8
  %804 = load double, ptr %803, align 8, !tbaa !62
  %805 = getelementptr inbounds %struct.Quass, ptr %58, i32 0, i32 0
  %806 = load ptr, ptr %805, align 8, !tbaa !9
  %807 = getelementptr inbounds %struct.Runtime, ptr %806, i32 0, i32 9
  %808 = getelementptr inbounds %struct.QpVector, ptr %807, i32 0, i32 3
  %809 = load i32, ptr %51, align 4, !tbaa !61
  %810 = sext i32 %809 to i64
  %811 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt6vectorIdSaIdEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %808, i64 noundef %810) #8
  store double %804, ptr %811, align 8, !tbaa !62
  br label %812

812:                                              ; preds = %798, %773
  call void @llvm.lifetime.end.p0(i64 4, ptr %52) #8
  call void @llvm.lifetime.end.p0(i64 4, ptr %51) #8
  br label %813

813:                                              ; preds = %812
  %814 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZN9__gnu_cxx17__normal_iteratorIPKiSt6vectorIiSaIiEEEppEv(ptr noundef nonnull align 8 dereferenceable(8) %49) #8
  br label %736

815:                                              ; preds = %794, %752
  call void @llvm.lifetime.end.p0(i64 8, ptr %48) #8
  br label %928

816:                                              ; preds = %738
  %817 = getelementptr inbounds %struct.Quass, ptr %58, i32 0, i32 0
  %818 = load ptr, ptr %817, align 8, !tbaa !9
  %819 = getelementptr inbounds %struct.Runtime, ptr %818, i32 0, i32 9
  invoke void @_ZN8QpVector10resparsifyEv(ptr noundef nonnull align 8 dereferenceable(56) %819)
          to label %820 unwind label %748

820:                                              ; preds = %816
  %821 = getelementptr inbounds %struct.Quass, ptr %58, i32 0, i32 0
  %822 = load ptr, ptr %821, align 8, !tbaa !9
  %823 = getelementptr inbounds %struct.Runtime, ptr %822, i32 0, i32 8
  invoke void @_ZN8QpVector10resparsifyEv(ptr noundef nonnull align 8 dereferenceable(56) %823)
          to label %824 unwind label %748

824:                                              ; preds = %820
  call void @llvm.lifetime.start.p0(i64 4, ptr %54) #8
  store i32 0, ptr %54, align 4, !tbaa !61
  br label %825

825:                                              ; preds = %851, %824
  %826 = load i32, ptr %54, align 4, !tbaa !61
  %827 = getelementptr inbounds %struct.Quass, ptr %58, i32 0, i32 0
  %828 = load ptr, ptr %827, align 8, !tbaa !9
  %829 = getelementptr inbounds %struct.Runtime, ptr %828, i32 0, i32 0
  %830 = getelementptr inbounds %struct.Instance, ptr %829, i32 0, i32 1
  %831 = load i32, ptr %830, align 4, !tbaa !55
  %832 = icmp slt i32 %826, %831
  br i1 %832, label %834, label %833

833:                                              ; preds = %825
  store i32 6, ptr %34, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %54) #8
  br label %858

834:                                              ; preds = %825
  %835 = load ptr, ptr %12, align 8, !tbaa !5
  %836 = getelementptr inbounds %struct.Quass, ptr %58, i32 0, i32 0
  %837 = load ptr, ptr %836, align 8, !tbaa !9
  %838 = getelementptr inbounds %struct.Runtime, ptr %837, i32 0, i32 0
  %839 = getelementptr inbounds %struct.Instance, ptr %838, i32 0, i32 2
  %840 = load i32, ptr %839, align 8, !tbaa !56
  %841 = load i32, ptr %54, align 4, !tbaa !61
  %842 = add nsw i32 %840, %841
  %843 = invoke noundef i32 @_ZN5Basis9getstatusEi(ptr noundef nonnull align 8 dereferenceable(2913) %835, i32 noundef %842)
          to label %844 unwind label %854

844:                                              ; preds = %834
  %845 = getelementptr inbounds %struct.Quass, ptr %58, i32 0, i32 0
  %846 = load ptr, ptr %845, align 8, !tbaa !9
  %847 = getelementptr inbounds %struct.Runtime, ptr %846, i32 0, i32 11
  %848 = load i32, ptr %54, align 4, !tbaa !61
  %849 = sext i32 %848 to i64
  %850 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNSt6vectorI11BasisStatusSaIS0_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %847, i64 noundef %849) #8
  store i32 %843, ptr %850, align 4, !tbaa !83
  br label %851

851:                                              ; preds = %844
  %852 = load i32, ptr %54, align 4, !tbaa !61
  %853 = add nsw i32 %852, 1
  store i32 %853, ptr %54, align 4, !tbaa !61
  br label %825, !llvm.loop !85

854:                                              ; preds = %834
  %855 = landingpad { ptr, i32 }
          cleanup
  %856 = extractvalue { ptr, i32 } %855, 0
  store ptr %856, ptr %15, align 8
  %857 = extractvalue { ptr, i32 } %855, 1
  store i32 %857, ptr %16, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %54) #8
  br label %928

858:                                              ; preds = %833
  call void @llvm.lifetime.start.p0(i64 4, ptr %55) #8
  store i32 0, ptr %55, align 4, !tbaa !61
  br label %859

859:                                              ; preds = %879, %858
  %860 = load i32, ptr %55, align 4, !tbaa !61
  %861 = getelementptr inbounds %struct.Quass, ptr %58, i32 0, i32 0
  %862 = load ptr, ptr %861, align 8, !tbaa !9
  %863 = getelementptr inbounds %struct.Runtime, ptr %862, i32 0, i32 0
  %864 = getelementptr inbounds %struct.Instance, ptr %863, i32 0, i32 2
  %865 = load i32, ptr %864, align 8, !tbaa !56
  %866 = icmp slt i32 %860, %865
  br i1 %866, label %868, label %867

867:                                              ; preds = %859
  store i32 9, ptr %34, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %55) #8
  br label %886

868:                                              ; preds = %859
  %869 = load ptr, ptr %12, align 8, !tbaa !5
  %870 = load i32, ptr %55, align 4, !tbaa !61
  %871 = invoke noundef i32 @_ZN5Basis9getstatusEi(ptr noundef nonnull align 8 dereferenceable(2913) %869, i32 noundef %870)
          to label %872 unwind label %882

872:                                              ; preds = %868
  %873 = getelementptr inbounds %struct.Quass, ptr %58, i32 0, i32 0
  %874 = load ptr, ptr %873, align 8, !tbaa !9
  %875 = getelementptr inbounds %struct.Runtime, ptr %874, i32 0, i32 12
  %876 = load i32, ptr %55, align 4, !tbaa !61
  %877 = sext i32 %876 to i64
  %878 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNSt6vectorI11BasisStatusSaIS0_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %875, i64 noundef %877) #8
  store i32 %871, ptr %878, align 4, !tbaa !83
  br label %879

879:                                              ; preds = %872
  %880 = load i32, ptr %55, align 4, !tbaa !61
  %881 = add nsw i32 %880, 1
  store i32 %881, ptr %55, align 4, !tbaa !61
  br label %859, !llvm.loop !86

882:                                              ; preds = %868
  %883 = landingpad { ptr, i32 }
          cleanup
  %884 = extractvalue { ptr, i32 } %883, 0
  store ptr %884, ptr %15, align 8
  %885 = extractvalue { ptr, i32 } %883, 1
  store i32 %885, ptr %16, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %55) #8
  br label %928

886:                                              ; preds = %867
  %887 = load ptr, ptr %12, align 8, !tbaa !5
  %888 = invoke noundef i32 @_ZNK5Basis12getnumactiveEv(ptr noundef nonnull align 8 dereferenceable(2913) %887)
          to label %889 unwind label %748

889:                                              ; preds = %886
  %890 = getelementptr inbounds %struct.Quass, ptr %58, i32 0, i32 0
  %891 = load ptr, ptr %890, align 8, !tbaa !9
  %892 = getelementptr inbounds %struct.Runtime, ptr %891, i32 0, i32 0
  %893 = getelementptr inbounds %struct.Instance, ptr %892, i32 0, i32 1
  %894 = load i32, ptr %893, align 4, !tbaa !55
  %895 = icmp eq i32 %888, %894
  br i1 %895, label %896, label %916

896:                                              ; preds = %889
  call void @llvm.lifetime.start.p0(i64 56, ptr %56) #8
  %897 = load ptr, ptr %12, align 8, !tbaa !5
  %898 = getelementptr inbounds %struct.Quass, ptr %58, i32 0, i32 0
  %899 = load ptr, ptr %898, align 8, !tbaa !9
  %900 = getelementptr inbounds %struct.Runtime, ptr %899, i32 0, i32 0
  invoke void @_ZN5Basis10recomputexERK8Instance(ptr dead_on_unwind writable sret(%struct.QpVector) align 8 %56, ptr noundef nonnull align 8 dereferenceable(2913) %897, ptr noundef nonnull align 8 dereferenceable(512) %900)
          to label %901 unwind label %907

901:                                              ; preds = %896
  %902 = getelementptr inbounds %struct.Quass, ptr %58, i32 0, i32 0
  %903 = load ptr, ptr %902, align 8, !tbaa !9
  %904 = getelementptr inbounds %struct.Runtime, ptr %903, i32 0, i32 6
  %905 = invoke noundef nonnull align 8 dereferenceable(56) ptr @_ZN8QpVectoraSERKS_(ptr noundef nonnull align 8 dereferenceable(56) %904, ptr noundef nonnull align 8 dereferenceable(56) %56)
          to label %906 unwind label %911

906:                                              ; preds = %901
  call void @_ZN8QpVectorD2Ev(ptr noundef nonnull align 8 dereferenceable(56) %56) #8
  call void @llvm.lifetime.end.p0(i64 56, ptr %56) #8
  br label %916

907:                                              ; preds = %896
  %908 = landingpad { ptr, i32 }
          cleanup
  %909 = extractvalue { ptr, i32 } %908, 0
  store ptr %909, ptr %15, align 8
  %910 = extractvalue { ptr, i32 } %908, 1
  store i32 %910, ptr %16, align 4
  br label %915

911:                                              ; preds = %901
  %912 = landingpad { ptr, i32 }
          cleanup
  %913 = extractvalue { ptr, i32 } %912, 0
  store ptr %913, ptr %15, align 8
  %914 = extractvalue { ptr, i32 } %912, 1
  store i32 %914, ptr %16, align 4
  call void @_ZN8QpVectorD2Ev(ptr noundef nonnull align 8 dereferenceable(56) %56) #8
  br label %915

915:                                              ; preds = %911, %907
  call void @llvm.lifetime.end.p0(i64 56, ptr %56) #8
  br label %928

916:                                              ; preds = %906, %889
  call void @llvm.lifetime.start.p0(i64 8, ptr %57) #8
  %917 = call i64 @_ZNSt6chrono3_V212system_clock3nowEv() #8
  %918 = getelementptr inbounds %"class.std::chrono::time_point", ptr %57, i32 0, i32 0
  %919 = getelementptr inbounds %"class.std::chrono::duration", ptr %918, i32 0, i32 0
  store i64 %917, ptr %919, align 8
  %920 = getelementptr inbounds %struct.Quass, ptr %58, i32 0, i32 0
  %921 = load ptr, ptr %920, align 8, !tbaa !9
  %922 = getelementptr inbounds %struct.Runtime, ptr %921, i32 0, i32 5
  %923 = load ptr, ptr %922, align 8, !tbaa !11
  %924 = getelementptr inbounds %struct.Statistics, ptr %923, i32 0, i32 3
  call void @llvm.memcpy.p0.p0.i64(ptr align 8 %924, ptr align 8 %57, i64 8, i1 false), !tbaa.struct !52
  call void @llvm.lifetime.end.p0(i64 8, ptr %57) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %47) #8
  store i32 0, ptr %34, align 4
  br label %925

925:                                              ; preds = %916, %685, %304
  call void @llvm.lifetime.end.p0(i64 1, ptr %33) #8
  call void @llvm.lifetime.end.p0(i64 4, ptr %32) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %31) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %30) #8
  call void @llvm.lifetime.end.p0(i64 4, ptr %29) #8
  call void @_ZN8QpVectorD2Ev(ptr noundef nonnull align 8 dereferenceable(56) %27) #8
  call void @llvm.lifetime.end.p0(i64 56, ptr %27) #8
  call void @_ZN8QpVectorD2Ev(ptr noundef nonnull align 8 dereferenceable(56) %26) #8
  call void @llvm.lifetime.end.p0(i64 56, ptr %26) #8
  call void @_ZN8QpVectorD2Ev(ptr noundef nonnull align 8 dereferenceable(56) %25) #8
  call void @llvm.lifetime.end.p0(i64 56, ptr %25) #8
  call void @_ZN8QpVectorD2Ev(ptr noundef nonnull align 8 dereferenceable(56) %24) #8
  call void @llvm.lifetime.end.p0(i64 56, ptr %24) #8
  call void @_ZN8QpVectorD2Ev(ptr noundef nonnull align 8 dereferenceable(56) %23) #8
  call void @llvm.lifetime.end.p0(i64 56, ptr %23) #8
  call void @_ZN8QpVectorD2Ev(ptr noundef nonnull align 8 dereferenceable(56) %22) #8
  call void @llvm.lifetime.end.p0(i64 56, ptr %22) #8
  call void @_ZN8QpVectorD2Ev(ptr noundef nonnull align 8 dereferenceable(56) %21) #8
  call void @llvm.lifetime.end.p0(i64 56, ptr %21) #8
  call void @_ZN8QpVectorD2Ev(ptr noundef nonnull align 8 dereferenceable(56) %20) #8
  call void @llvm.lifetime.end.p0(i64 56, ptr %20) #8
  call void @_ZNSt10unique_ptrI7PricingSt14default_deleteIS0_EED2Ev(ptr noundef nonnull align 8 dereferenceable(8) %19) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %19) #8
  call void @_ZN14CholeskyFactorD2Ev(ptr noundef nonnull align 8 dereferenceable(88) %18) #8
  call void @llvm.lifetime.end.p0(i64 88, ptr %18) #8
  call void @_ZN15ReducedGradientD2Ev(ptr noundef nonnull align 8 dereferenceable(80) %17) #8
  call void @llvm.lifetime.end.p0(i64 80, ptr %17) #8
  call void @_ZN12ReducedCostsD2Ev(ptr noundef nonnull align 8 dereferenceable(73) %14) #8
  call void @llvm.lifetime.end.p0(i64 80, ptr %14) #8
  call void @_ZN8GradientD2Ev(ptr noundef nonnull align 8 dereferenceable(72) %13) #8
  call void @llvm.lifetime.end.p0(i64 72, ptr %13) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %12) #8
  %926 = load i32, ptr %34, align 4
  switch i32 %926, label %950 [
    i32 0, label %927
    i32 1, label %927
  ]

927:                                              ; preds = %925, %925
  ret void

928:                                              ; preds = %915, %882, %854, %815, %748
  call void @llvm.lifetime.end.p0(i64 8, ptr %47) #8
  br label %929

929:                                              ; preds = %928, %747, %689, %281
  call void @llvm.lifetime.end.p0(i64 1, ptr %33) #8
  br label %930

930:                                              ; preds = %929, %263
  call void @llvm.lifetime.end.p0(i64 4, ptr %32) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %31) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %30) #8
  call void @llvm.lifetime.end.p0(i64 4, ptr %29) #8
  br label %931

931:                                              ; preds = %930, %262, %250
  call void @_ZN8QpVectorD2Ev(ptr noundef nonnull align 8 dereferenceable(56) %27) #8
  br label %932

932:                                              ; preds = %931, %246
  call void @llvm.lifetime.end.p0(i64 56, ptr %27) #8
  call void @_ZN8QpVectorD2Ev(ptr noundef nonnull align 8 dereferenceable(56) %26) #8
  br label %933

933:                                              ; preds = %932, %242
  call void @llvm.lifetime.end.p0(i64 56, ptr %26) #8
  call void @_ZN8QpVectorD2Ev(ptr noundef nonnull align 8 dereferenceable(56) %25) #8
  br label %934

934:                                              ; preds = %933, %238
  call void @llvm.lifetime.end.p0(i64 56, ptr %25) #8
  call void @_ZN8QpVectorD2Ev(ptr noundef nonnull align 8 dereferenceable(56) %24) #8
  br label %935

935:                                              ; preds = %934, %234
  call void @llvm.lifetime.end.p0(i64 56, ptr %24) #8
  call void @_ZN8QpVectorD2Ev(ptr noundef nonnull align 8 dereferenceable(56) %23) #8
  br label %936

936:                                              ; preds = %935, %230
  call void @llvm.lifetime.end.p0(i64 56, ptr %23) #8
  call void @_ZN8QpVectorD2Ev(ptr noundef nonnull align 8 dereferenceable(56) %22) #8
  br label %937

937:                                              ; preds = %936, %226
  call void @llvm.lifetime.end.p0(i64 56, ptr %22) #8
  call void @_ZN8QpVectorD2Ev(ptr noundef nonnull align 8 dereferenceable(56) %21) #8
  br label %938

938:                                              ; preds = %937, %222
  call void @llvm.lifetime.end.p0(i64 56, ptr %21) #8
  call void @_ZN8QpVectorD2Ev(ptr noundef nonnull align 8 dereferenceable(56) %20) #8
  br label %939

939:                                              ; preds = %938, %218
  call void @llvm.lifetime.end.p0(i64 56, ptr %20) #8
  call void @_ZNSt10unique_ptrI7PricingSt14default_deleteIS0_EED2Ev(ptr noundef nonnull align 8 dereferenceable(8) %19) #8
  br label %940

940:                                              ; preds = %939, %214
  call void @llvm.lifetime.end.p0(i64 8, ptr %19) #8
  br label %941

941:                                              ; preds = %940, %210
  call void @_ZN14CholeskyFactorD2Ev(ptr noundef nonnull align 8 dereferenceable(88) %18) #8
  br label %942

942:                                              ; preds = %941, %206
  call void @llvm.lifetime.end.p0(i64 88, ptr %18) #8
  call void @_ZN15ReducedGradientD2Ev(ptr noundef nonnull align 8 dereferenceable(80) %17) #8
  br label %943

943:                                              ; preds = %942, %202
  call void @llvm.lifetime.end.p0(i64 80, ptr %17) #8
  call void @_ZN12ReducedCostsD2Ev(ptr noundef nonnull align 8 dereferenceable(73) %14) #8
  br label %944

944:                                              ; preds = %943, %198
  call void @llvm.lifetime.end.p0(i64 80, ptr %14) #8
  call void @_ZN8GradientD2Ev(ptr noundef nonnull align 8 dereferenceable(72) %13) #8
  call void @llvm.lifetime.end.p0(i64 72, ptr %13) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %12) #8
  br label %945

945:                                              ; preds = %944
  %946 = load ptr, ptr %15, align 8
  %947 = load i32, ptr %16, align 4
  %948 = insertvalue { ptr, i32 } poison, ptr %946, 0
  %949 = insertvalue { ptr, i32 } %948, i32 %947, 1
  resume { ptr, i32 } %949

950:                                              ; preds = %925
  unreachable
}

; Function Attrs: nounwind
declare i64 @_ZNSt6chrono3_V212system_clock3nowEv() #2

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

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

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

; Function Attrs: mustprogress uwtable
declare dso_local void @_ZN12ReducedCostsC2ER7RuntimeR5BasisR8Gradient(ptr noundef nonnull align 8 dereferenceable(73), ptr noundef nonnull align 8 dereferenceable(2552), ptr noundef nonnull align 8 dereferenceable(2913), ptr noundef nonnull align 8 dereferenceable(72)) unnamed_addr #1 align 2

; Function Attrs: mustprogress uwtable
declare dso_local void @_ZN15ReducedGradientC2ER7RuntimeR5BasisR8Gradient(ptr noundef nonnull align 8 dereferenceable(80), ptr noundef nonnull align 8 dereferenceable(2552), ptr noundef nonnull align 8 dereferenceable(2913), ptr noundef nonnull align 8 dereferenceable(72)) unnamed_addr #1 align 2

; Function Attrs: mustprogress uwtable
declare dso_local void @_ZN14CholeskyFactorC2ER7RuntimeR5Basis(ptr noundef nonnull align 8 dereferenceable(88), ptr noundef nonnull align 8 dereferenceable(2552), ptr noundef nonnull align 8 dereferenceable(2913)) unnamed_addr #1 align 2

; Function Attrs: mustprogress uwtable
declare dso_local noundef nonnull align 8 dereferenceable(56) ptr @_ZN6Matrix7mat_vecERK8QpVectorRS0_(ptr noundef nonnull align 8 dereferenceable(168), ptr noundef nonnull align 8 dereferenceable(56), ptr noundef nonnull align 8 dereferenceable(56)) #1 align 2

; Function Attrs: mustprogress uwtable
declare hidden void @_ZL10getPricingR7RuntimeR5BasisR12ReducedCosts(ptr dead_on_unwind noalias writable sret(%"class.std::unique_ptr.42") align 8, ptr noundef nonnull align 8 dereferenceable(2552), ptr noundef nonnull align 8 dereferenceable(2913), ptr noundef nonnull align 8 dereferenceable(73)) #1

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

; Function Attrs: mustprogress nounwind uwtable
declare hidden void @_ZL10regularizeR7Runtime(ptr noundef nonnull align 8 dereferenceable(2552)) #4

declare void @_Z24ratiotest_relax_instanceR7Runtime(ptr dead_on_unwind writable sret(%struct.Instance) align 8, ptr noundef nonnull align 8 dereferenceable(2552)) #5

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

; Function Attrs: inlinehint mustprogress nounwind uwtable
declare dso_local void @_ZN8InstanceD2Ev(ptr noundef nonnull align 8 dereferenceable(512)) unnamed_addr #7 align 2

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

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

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

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

; Function Attrs: mustprogress uwtable
declare hidden void @_ZL14loginformationR7RuntimeR5BasisR14CholeskyFactorR10HighsTimer(ptr noundef nonnull align 8 dereferenceable(2552), ptr noundef nonnull align 8 dereferenceable(2913), ptr noundef nonnull align 8 dereferenceable(88), ptr noundef nonnull align 8 dereferenceable(132)) #1

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

; Function Attrs: mustprogress uwtable
declare hidden noundef zeroext i1 @_ZL18check_reinvert_dueR5Basis(ptr noundef nonnull align 8 dereferenceable(2913)) #1

; Function Attrs: mustprogress uwtable
declare hidden void @_ZL8reinvertR5BasisR14CholeskyFactorR8GradientR12ReducedCostsR15ReducedGradientRSt10unique_ptrI7PricingSt14default_deleteISA_EE(ptr noundef nonnull align 8 dereferenceable(2913), ptr noundef nonnull align 8 dereferenceable(88), ptr noundef nonnull align 8 dereferenceable(72), ptr noundef nonnull align 8 dereferenceable(73), ptr noundef nonnull align 8 dereferenceable(80), ptr noundef nonnull align 8 dereferenceable(8)) #1

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

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

; Function Attrs: mustprogress nounwind uwtable
declare dso_local noundef nonnull align 8 dereferenceable(24) ptr @_ZNK5Basis16getindexinfactorEv(ptr noundef nonnull align 8 dereferenceable(2913)) #4 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) #4 align 2

; Function Attrs: mustprogress nounwind uwtable
declare dso_local noundef nonnull align 8 dereferenceable(56) ptr @_ZN8QpVector4unitEiiRS_(i32 noundef, i32 noundef, ptr noundef nonnull align 8 dereferenceable(56)) #4 align 2

declare noundef nonnull align 8 dereferenceable(56) ptr @_ZN5Basis5btranERK8QpVectorRS0_bi(ptr noundef nonnull align 8 dereferenceable(2913), ptr noundef nonnull align 8 dereferenceable(56), ptr noundef nonnull align 8 dereferenceable(56), i1 noundef zeroext, i32 noundef) #5

; Function Attrs: mustprogress uwtable
declare hidden noundef nonnull align 8 dereferenceable(56) ptr @_ZL28computesearchdirection_majorR7RuntimeR5BasisR14CholeskyFactorRK8QpVectorR8GradientRS5_SA_SA_SA_(ptr noundef nonnull align 8 dereferenceable(2552), ptr noundef nonnull align 8 dereferenceable(2913), ptr noundef nonnull align 8 dereferenceable(88), ptr noundef nonnull align 8 dereferenceable(56), ptr noundef nonnull align 8 dereferenceable(72), ptr noundef nonnull align 8 dereferenceable(56), ptr noundef nonnull align 8 dereferenceable(56), ptr noundef nonnull align 8 dereferenceable(56), ptr noundef nonnull align 8 dereferenceable(56)) #1

declare void @_ZN5Basis10deactivateEi(ptr noundef nonnull align 8 dereferenceable(2913), i32 noundef) #5

; Function Attrs: mustprogress uwtable
declare hidden void @_ZL14computerowmoveR7RuntimeR5BasisR8QpVectorS4_(ptr noundef nonnull align 8 dereferenceable(2552), ptr noundef nonnull align 8 dereferenceable(2913), ptr noundef nonnull align 8 dereferenceable(56), ptr noundef nonnull align 8 dereferenceable(56)) #1

; Function Attrs: mustprogress uwtable
declare hidden void @_ZL6tidyupR8QpVectorS0_R5BasisR7Runtime(ptr noundef nonnull align 8 dereferenceable(56), ptr noundef nonnull align 8 dereferenceable(56), ptr noundef nonnull align 8 dereferenceable(2913), ptr noundef nonnull align 8 dereferenceable(2552)) #1

; Function Attrs: mustprogress nounwind uwtable
declare dso_local noundef double @_ZNSt14numeric_limitsIdE8infinityEv() #4 align 2

; Function Attrs: mustprogress uwtable
declare hidden noundef double @_ZL20computemaxsteplengthR7RuntimeRK8QpVectorR8GradientRS1_Rb(ptr noundef nonnull align 8 dereferenceable(2552), ptr noundef nonnull align 8 dereferenceable(56), ptr noundef nonnull align 8 dereferenceable(72), ptr noundef nonnull align 8 dereferenceable(56), ptr noundef nonnull align 1 dereferenceable(1)) #1

; Function Attrs: mustprogress uwtable
declare dso_local noundef i32 @_ZN14CholeskyFactor6expandERK8QpVectorRS0_S3_S3_(ptr noundef nonnull align 8 dereferenceable(88), ptr noundef nonnull align 8 dereferenceable(56), ptr noundef nonnull align 8 dereferenceable(56), ptr noundef nonnull align 8 dereferenceable(56), ptr noundef nonnull align 8 dereferenceable(56)) #1 align 2

; Function Attrs: mustprogress uwtable
declare dso_local void @_ZN15ReducedGradient6expandERK8QpVector(ptr noundef nonnull align 8 dereferenceable(80), ptr noundef nonnull align 8 dereferenceable(56)) #1 align 2

; Function Attrs: mustprogress uwtable
declare hidden noundef nonnull align 8 dereferenceable(56) ptr @_ZL28computesearchdirection_minorR7RuntimeR5BasisR14CholeskyFactorR15ReducedGradientR8QpVector(ptr noundef nonnull align 8 dereferenceable(2552), ptr noundef nonnull align 8 dereferenceable(2913), ptr noundef nonnull align 8 dereferenceable(88), ptr noundef nonnull align 8 dereferenceable(80), ptr noundef nonnull align 8 dereferenceable(56)) #1

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

declare { double, i64 } @_Z9ratiotestR7RuntimeRK8QpVectorS3_d(ptr noundef nonnull align 8 dereferenceable(2552), ptr noundef nonnull align 8 dereferenceable(56), ptr noundef nonnull align 8 dereferenceable(56), double noundef) #5

; Function Attrs: mustprogress uwtable
declare hidden noundef i32 @_ZL6reduceR7RuntimeR5BasisiR8QpVectorRiS5_(ptr noundef nonnull align 8 dereferenceable(2552), ptr noundef nonnull align 8 dereferenceable(2913), i32 noundef, ptr noundef nonnull align 8 dereferenceable(56), ptr noundef nonnull align 4 dereferenceable(4), ptr noundef nonnull align 4 dereferenceable(4)) #1

; Function Attrs: mustprogress uwtable
declare dso_local void @_ZN14CholeskyFactor6reduceERK8QpVectorib(ptr noundef nonnull align 8 dereferenceable(88), ptr noundef nonnull align 8 dereferenceable(56), i32 noundef, i1 noundef zeroext) #1 align 2

; Function Attrs: mustprogress uwtable
declare dso_local noundef i32 @_Z7indexofIiEiRKSt6vectorIT_SaIS1_EERKS1_(ptr noundef nonnull align 8 dereferenceable(24), ptr noundef nonnull align 4 dereferenceable(4)) #1

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

; Function Attrs: mustprogress uwtable
declare dso_local void @_ZN15ReducedGradient6reduceERK8QpVectori(ptr noundef nonnull align 8 dereferenceable(80), ptr noundef nonnull align 8 dereferenceable(56), i32 noundef) #1 align 2

; Function Attrs: mustprogress nounwind uwtable
declare dso_local void @_ZN15ReducedGradient6updateEdb(ptr noundef nonnull align 8 dereferenceable(80), double noundef, i1 noundef zeroext) #4 align 2

declare noundef i32 @_ZN5Basis8activateERK8Settingsi11BasisStatusiP7Pricing(ptr noundef nonnull align 8 dereferenceable(2913), ptr noundef nonnull align 8 dereferenceable(211), i32 noundef, i32 noundef, i32 noundef, ptr noundef) #5

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

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

; Function Attrs: mustprogress uwtable
declare dso_local void @_ZN8Gradient6updateER8QpVectord(ptr noundef nonnull align 8 dereferenceable(72), ptr noundef nonnull align 8 dereferenceable(56), double noundef) #1 align 2

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

; Function Attrs: mustprogress nounwind uwtable
declare dso_local { double, i32 } @_ZN8Instance27sumnumprimalinfeasibilitiesERK8QpVectorS2_(ptr noundef nonnull align 8 dereferenceable(512), ptr noundef nonnull align 8 dereferenceable(56), ptr noundef nonnull align 8 dereferenceable(56)) #4 align 2

; Function Attrs: mustprogress uwtable
declare dso_local void @_ZN6Matrix7mat_vecERK8QpVector(ptr dead_on_unwind noalias writable sret(%struct.QpVector) align 8, ptr noundef nonnull align 8 dereferenceable(168), ptr noundef nonnull align 8 dereferenceable(56)) #1 align 2

; Function Attrs: inlinehint mustprogress nounwind uwtable
declare dso_local void @_ZN8QpVectorD2Ev(ptr noundef nonnull align 8 dereferenceable(56)) unnamed_addr #7 align 2

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

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

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

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

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

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

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

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

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

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

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

declare void @_ZN5Basis10recomputexERK8Instance(ptr dead_on_unwind writable sret(%struct.QpVector) align 8, ptr noundef nonnull align 8 dereferenceable(2913), ptr noundef nonnull align 8 dereferenceable(512)) #5

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

; Function Attrs: inlinehint mustprogress nounwind uwtable
declare dso_local void @_ZN14CholeskyFactorD2Ev(ptr noundef nonnull align 8 dereferenceable(88)) unnamed_addr #7 align 2

; Function Attrs: inlinehint mustprogress nounwind uwtable
declare dso_local void @_ZN15ReducedGradientD2Ev(ptr noundef nonnull align 8 dereferenceable(80)) unnamed_addr #7 align 2

; Function Attrs: inlinehint mustprogress nounwind uwtable
declare dso_local void @_ZN12ReducedCostsD2Ev(ptr noundef nonnull align 8 dereferenceable(73)) unnamed_addr #7 align 2

; Function Attrs: inlinehint mustprogress nounwind uwtable
declare dso_local void @_ZN8GradientD2Ev(ptr noundef nonnull align 8 dereferenceable(72)) unnamed_addr #7 align 2

attributes #0 = { nocallback nofree nosync nounwind willreturn memory(argmem: readwrite) }
attributes #1 = { 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 #2 = { 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 #3 = { nocallback nofree nounwind willreturn memory(argmem: readwrite) }
attributes #4 = { mustprogress nounwind uwtable "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }
attributes #5 = { "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }
attributes #6 = { inlinehint mustprogress uwtable "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }
attributes #7 = { 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 #8 = { 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, !6, i64 0}
!10 = !{!"_ZTS5Quass", !6, i64 0}
!11 = !{!12, !6, i64 2264}
!12 = !{!"_ZTS7Runtime", !13, i64 0, !13, i64 512, !13, i64 1024, !13, i64 1536, !28, i64 2048, !6, i64 2264, !16, i64 2272, !16, i64 2328, !16, i64 2384, !16, i64 2440, !47, i64 2496, !48, i64 2504, !48, i64 2528}
!13 = !{!"_ZTS8Instance", !14, i64 0, !14, i64 4, !14, i64 8, !15, i64 16, !16, i64 24, !25, i64 80, !21, i64 248, !21, i64 272, !25, i64 296, !21, i64 464, !21, i64 488}
!14 = !{!"int", !7, i64 0}
!15 = !{!"double", !7, i64 0}
!16 = !{!"_ZTS8QpVector", !14, i64 0, !14, i64 4, !17, i64 8, !21, i64 32}
!17 = !{!"_ZTSSt6vectorIiSaIiEE", !18, i64 0}
!18 = !{!"_ZTSSt12_Vector_baseIiSaIiEE", !19, i64 0}
!19 = !{!"_ZTSNSt12_Vector_baseIiSaIiEE12_Vector_implE", !20, i64 0}
!20 = !{!"_ZTSNSt12_Vector_baseIiSaIiEE17_Vector_impl_dataE", !6, i64 0, !6, i64 8, !6, i64 16}
!21 = !{!"_ZTSSt6vectorIdSaIdEE", !22, i64 0}
!22 = !{!"_ZTSSt12_Vector_baseIdSaIdEE", !23, i64 0}
!23 = !{!"_ZTSNSt12_Vector_baseIdSaIdEE12_Vector_implE", !24, i64 0}
!24 = !{!"_ZTSNSt12_Vector_baseIdSaIdEE17_Vector_impl_dataE", !6, i64 0, !6, i64 8, !6, i64 16}
!25 = !{!"_ZTS6Matrix", !26, i64 0, !27, i64 80, !26, i64 88}
!26 = !{!"_ZTS10MatrixBase", !14, i64 0, !14, i64 4, !17, i64 8, !17, i64 32, !21, i64 56}
!27 = !{!"bool", !7, i64 0}
!28 = !{!"_ZTS8Settings", !29, i64 0, !15, i64 8, !15, i64 16, !30, i64 24, !15, i64 32, !15, i64 40, !15, i64 48, !15, i64 56, !15, i64 64, !27, i64 72, !15, i64 80, !31, i64 88, !27, i64 92, !27, i64 93, !14, i64 96, !32, i64 104, !37, i64 128, !42, i64 152, !14, i64 176, !14, i64 180, !14, i64 184, !14, i64 188, !14, i64 192, !14, i64 196, !15, i64 200, !27, i64 208, !27, i64 209, !27, i64 210}
!29 = !{!"_ZTS17RatiotestStrategy", !7, i64 0}
!30 = !{!"_ZTS15PricingStrategy", !7, i64 0}
!31 = !{!"_ZTS14Phase1Strategy", !7, i64 0}
!32 = !{!"_ZTS12EventhandlerIR10StatisticsE", !33, i64 0}
!33 = !{!"_ZTSSt6vectorISt8functionIFvR10StatisticsEESaIS4_EE", !34, i64 0}
!34 = !{!"_ZTSSt12_Vector_baseISt8functionIFvR10StatisticsEESaIS4_EE", !35, i64 0}
!35 = !{!"_ZTSNSt12_Vector_baseISt8functionIFvR10StatisticsEESaIS4_EE12_Vector_implE", !36, i64 0}
!36 = !{!"_ZTSNSt12_Vector_baseISt8functionIFvR10StatisticsEESaIS4_EE17_Vector_impl_dataE", !6, i64 0, !6, i64 8, !6, i64 16}
!37 = !{!"_ZTS12EventhandlerIR13QpModelStatusE", !38, i64 0}
!38 = !{!"_ZTSSt6vectorISt8functionIFvR13QpModelStatusEESaIS4_EE", !39, i64 0}
!39 = !{!"_ZTSSt12_Vector_baseISt8functionIFvR13QpModelStatusEESaIS4_EE", !40, i64 0}
!40 = !{!"_ZTSNSt12_Vector_baseISt8functionIFvR13QpModelStatusEESaIS4_EE12_Vector_implE", !41, i64 0}
!41 = !{!"_ZTSNSt12_Vector_baseISt8functionIFvR13QpModelStatusEESaIS4_EE17_Vector_impl_dataE", !6, i64 0, !6, i64 8, !6, i64 16}
!42 = !{!"_ZTS12EventhandlerIRiE", !43, i64 0}
!43 = !{!"_ZTSSt6vectorISt8functionIFvRiEESaIS3_EE", !44, i64 0}
!44 = !{!"_ZTSSt12_Vector_baseISt8functionIFvRiEESaIS3_EE", !45, i64 0}
!45 = !{!"_ZTSNSt12_Vector_baseISt8functionIFvRiEESaIS3_EE12_Vector_implE", !46, i64 0}
!46 = !{!"_ZTSNSt12_Vector_baseISt8functionIFvRiEESaIS3_EE17_Vector_impl_dataE", !6, i64 0, !6, i64 8, !6, i64 16}
!47 = !{!"_ZTS13QpModelStatus", !7, i64 0}
!48 = !{!"_ZTSSt6vectorI11BasisStatusSaIS0_EE", !49, i64 0}
!49 = !{!"_ZTSSt12_Vector_baseI11BasisStatusSaIS0_EE", !50, i64 0}
!50 = !{!"_ZTSNSt12_Vector_baseI11BasisStatusSaIS0_EE12_Vector_implE", !51, i64 0}
!51 = !{!"_ZTSNSt12_Vector_baseI11BasisStatusSaIS0_EE17_Vector_impl_dataE", !6, i64 0, !6, i64 8, !6, i64 16}
!52 = !{i64 0, i64 8, !53}
!53 = !{!54, !54, i64 0}
!54 = !{!"long", !7, i64 0}
!55 = !{!12, !14, i64 4}
!56 = !{!12, !14, i64 8}
!57 = !{!58, !14, i64 4}
!58 = !{!"_ZTS10Statistics", !14, i64 0, !14, i64 4, !59, i64 8, !59, i64 16, !17, i64 24, !17, i64 48, !21, i64 72, !21, i64 96, !21, i64 120, !17, i64 144, !21, i64 168, !21, i64 192}
!59 = !{!"_ZTSNSt6chrono10time_pointINS_3_V212system_clockENS_8durationIlSt5ratioILl1ELl1000000000EEEEEE", !60, i64 0}
!60 = !{!"_ZTSNSt6chrono8durationIlSt5ratioILl1ELl1000000000EEEE", !54, i64 0}
!61 = !{!14, !14, i64 0}
!62 = !{!15, !15, i64 0}
!63 = !{!27, !27, i64 0}
!64 = !{!12, !14, i64 2244}
!65 = !{!12, !47, i64 2496}
!66 = !{!12, !15, i64 2248}
!67 = !{!12, !14, i64 2224}
!68 = !{!12, !14, i64 2144}
!69 = !{i8 0, i8 2}
!70 = !{}
!71 = !{!72, !72, i64 0}
!72 = !{!"vtable pointer", !8, i64 0}
!73 = !{!16, !14, i64 4}
!74 = !{!75, !75, i64 0}
!75 = !{!"_ZTS14QpSolverStatus", !7, i64 0}
!76 = !{!12, !15, i64 2080}
!77 = !{!78, !14, i64 8}
!78 = !{!"_ZTS15RatiotestResult", !15, i64 0, !14, i64 8, !27, i64 12}
!79 = !{!78, !15, i64 0}
!80 = !{!78, !27, i64 12}
!81 = distinct !{!81, !82}
!82 = !{!"llvm.loop.mustprogress"}
!83 = !{!84, !84, i64 0}
!84 = !{!"_ZTS11BasisStatus", !7, i64 0}
!85 = distinct !{!85, !82}
!86 = distinct !{!86, !82}


; 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.Gradient = type { ptr, %struct.QpVector, i8, i32 }
%struct.QpVector = type { i32, i32, %"class.std::vector", %"class.std::vector.3" }
%"class.std::vector" = type { %"struct.std::_Vector_base" }
%"struct.std::_Vector_base" = type { %"struct.std::_Vector_base<int, std::allocator<int>>::_Vector_impl" }
%"struct.std::_Vector_base<int, std::allocator<int>>::_Vector_impl" = type { %"struct.std::_Vector_base<int, std::allocator<int>>::_Vector_impl_data" }
%"struct.std::_Vector_base<int, std::allocator<int>>::_Vector_impl_data" = type { ptr, ptr, ptr }
%"class.std::vector.3" = type { %"struct.std::_Vector_base.4" }
%"struct.std::_Vector_base.4" = type { %"struct.std::_Vector_base<double, std::allocator<double>>::_Vector_impl" }
%"struct.std::_Vector_base<double, std::allocator<double>>::_Vector_impl" = type { %"struct.std::_Vector_base<double, std::allocator<double>>::_Vector_impl_data" }
%"struct.std::_Vector_base<double, std::allocator<double>>::_Vector_impl_data" = type { ptr, ptr, ptr }
%class.ReducedCosts = type <{ ptr, ptr, %struct.QpVector, i8, [7 x i8] }>
%class.ReducedGradient = type { %struct.QpVector, i8, ptr, ptr }
%class.CholeskyFactor = type { i8, i32, ptr, ptr, i32, i32, %"class.std::vector.3", i8, %"class.std::vector.3" }
%"class.std::unique_ptr.42" = type { %"struct.std::__uniq_ptr_data.43" }
%"struct.std::__uniq_ptr_data.43" = type { %"class.std::__uniq_ptr_impl.44" }
%"class.std::__uniq_ptr_impl.44" = type { %"class.std::tuple.45" }
%"class.std::tuple.45" = type { %"struct.std::_Tuple_impl.46" }
%"struct.std::_Tuple_impl.46" = type { %"struct.std::_Head_base.49" }
%"struct.std::_Head_base.49" = type { ptr }
%struct.Instance = type { i32, i32, i32, double, %struct.QpVector, %struct.Matrix, %"class.std::vector.3", %"class.std::vector.3", %struct.Matrix, %"class.std::vector.3", %"class.std::vector.3" }
%struct.Matrix = type { %struct.MatrixBase, i8, %struct.MatrixBase }
%struct.MatrixBase = type { i32, i32, %"class.std::vector", %"class.std::vector", %"class.std::vector.3" }
%struct.RatiotestResult = type { double, i32, i8 }
%"class.__gnu_cxx::__normal_iterator" = type { ptr }

; 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 uwtable
define dso_local void @_ZN5Quass5solveERK8QpVectorS2_R5BasisR10HighsTimer(ptr nocapture noundef nonnull readonly align 8 dereferenceable(8) %0, ptr noundef nonnull align 8 dereferenceable(56) %1, ptr nocapture noundef nonnull readnone align 8 dereferenceable(56) %2, ptr noundef nonnull align 8 dereferenceable(2913) %3, ptr noundef nonnull align 8 dereferenceable(132) %4) local_unnamed_addr #1 align 2 personality ptr @__gxx_personality_v0 {
  %6 = alloca %class.Gradient, align 8
  %7 = alloca %class.ReducedCosts, align 8
  %8 = alloca %class.ReducedGradient, align 8
  %9 = alloca %class.CholeskyFactor, align 8
  %10 = alloca %"class.std::unique_ptr.42", align 8
  %11 = alloca %struct.QpVector, align 8
  %12 = alloca %struct.QpVector, align 8
  %13 = alloca %struct.QpVector, align 8
  %14 = alloca %struct.QpVector, align 8
  %15 = alloca %struct.QpVector, align 8
  %16 = alloca %struct.QpVector, align 8
  %17 = alloca %struct.QpVector, align 8
  %18 = alloca %struct.QpVector, align 8
  %19 = alloca %struct.Instance, align 8
  %20 = alloca i8, align 1
  %21 = alloca %struct.RatiotestResult, align 8
  %22 = alloca i32, align 4
  %23 = alloca i32, align 4
  %24 = alloca %struct.QpVector, align 8
  %25 = alloca %"class.__gnu_cxx::__normal_iterator", align 8
  %26 = alloca %"class.__gnu_cxx::__normal_iterator", align 8
  %27 = alloca %struct.QpVector, align 8
  %28 = tail call i64 @_ZNSt6chrono3_V212system_clock3nowEv() #7
  %29 = load ptr, ptr %0, align 8, !tbaa !5
  %30 = getelementptr inbounds i8, ptr %29, i64 2264
  %31 = load ptr, ptr %30, align 8, !tbaa !10
  %32 = getelementptr inbounds i8, ptr %31, i64 8
  store i64 %28, ptr %32, align 8, !tbaa !51
  %33 = getelementptr inbounds i8, ptr %29, i64 2272
  %34 = tail call noundef nonnull align 8 dereferenceable(56) ptr @_ZN8QpVectoraSERKS_(ptr noundef nonnull align 8 dereferenceable(56) %33, ptr noundef nonnull align 8 dereferenceable(56) %1)
  call void @llvm.lifetime.start.p0(i64 72, ptr nonnull %6) #7
  %35 = load ptr, ptr %0, align 8, !tbaa !5
  call void @_ZN8GradientC2ER7Runtime(ptr noundef nonnull align 8 dereferenceable(72) %6, ptr noundef nonnull align 8 dereferenceable(2552) %35)
  call void @llvm.lifetime.start.p0(i64 80, ptr nonnull %7) #7
  %36 = load ptr, ptr %0, align 8, !tbaa !5
  invoke void @_ZN12ReducedCostsC2ER7RuntimeR5BasisR8Gradient(ptr noundef nonnull align 8 dereferenceable(73) %7, ptr noundef nonnull align 8 dereferenceable(2552) %36, ptr noundef nonnull align 8 dereferenceable(2913) %3, ptr noundef nonnull align 8 dereferenceable(72) %6)
          to label %37 unwind label %111

37:                                               ; preds = %5
  call void @llvm.lifetime.start.p0(i64 80, ptr nonnull %8) #7
  %38 = load ptr, ptr %0, align 8, !tbaa !5
  invoke void @_ZN15ReducedGradientC2ER7RuntimeR5BasisR8Gradient(ptr noundef nonnull align 8 dereferenceable(80) %8, ptr noundef nonnull align 8 dereferenceable(2552) %38, ptr noundef nonnull align 8 dereferenceable(2913) %3, ptr noundef nonnull align 8 dereferenceable(72) %6)
          to label %39 unwind label %113

39:                                               ; preds = %37
  call void @llvm.lifetime.start.p0(i64 88, ptr nonnull %9) #7
  %40 = load ptr, ptr %0, align 8, !tbaa !5
  invoke void @_ZN14CholeskyFactorC2ER7RuntimeR5Basis(ptr noundef nonnull align 8 dereferenceable(88) %9, ptr noundef nonnull align 8 dereferenceable(2552) %40, ptr noundef nonnull align 8 dereferenceable(2913) %3)
          to label %41 unwind label %115

41:                                               ; preds = %39
  %42 = load ptr, ptr %0, align 8, !tbaa !5
  %43 = getelementptr inbounds i8, ptr %42, i64 296
  %44 = getelementptr inbounds i8, ptr %42, i64 2272
  %45 = getelementptr inbounds i8, ptr %42, i64 2328
  %46 = invoke noundef nonnull align 8 dereferenceable(56) ptr @_ZN6Matrix7mat_vecERK8QpVectorRS0_(ptr noundef nonnull align 8 dereferenceable(168) %43, ptr noundef nonnull align 8 dereferenceable(56) %44, ptr noundef nonnull align 8 dereferenceable(56) %45)
          to label %47 unwind label %117

47:                                               ; preds = %41
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %10) #7
  %48 = load ptr, ptr %0, align 8, !tbaa !5
  invoke void @_ZL10getPricingR7RuntimeR5BasisR12ReducedCosts(ptr dead_on_unwind nonnull writable sret(%"class.std::unique_ptr.42") align 8 %10, ptr noundef nonnull align 8 dereferenceable(2552) %48, ptr noundef nonnull align 8 dereferenceable(2913) %3, ptr noundef nonnull align 8 dereferenceable(73) %7)
          to label %49 unwind label %119

49:                                               ; preds = %47
  call void @llvm.lifetime.start.p0(i64 56, ptr nonnull %11) #7
  %50 = load ptr, ptr %0, align 8, !tbaa !5
  %51 = getelementptr inbounds i8, ptr %50, i64 4
  %52 = load i32, ptr %51, align 4, !tbaa !53
  invoke void @_ZN8QpVectorC2Ei(ptr noundef nonnull align 8 dereferenceable(56) %11, i32 noundef %52)
          to label %53 unwind label %121

53:                                               ; preds = %49
  call void @llvm.lifetime.start.p0(i64 56, ptr nonnull %12) #7
  %54 = load ptr, ptr %0, align 8, !tbaa !5
  %55 = getelementptr inbounds i8, ptr %54, i64 8
  %56 = load i32, ptr %55, align 8, !tbaa !54
  invoke void @_ZN8QpVectorC2Ei(ptr noundef nonnull align 8 dereferenceable(56) %12, i32 noundef %56)
          to label %57 unwind label %123

57:                                               ; preds = %53
  call void @llvm.lifetime.start.p0(i64 56, ptr nonnull %13) #7
  %58 = load ptr, ptr %0, align 8, !tbaa !5
  %59 = getelementptr inbounds i8, ptr %58, i64 4
  %60 = load i32, ptr %59, align 4, !tbaa !53
  invoke void @_ZN8QpVectorC2Ei(ptr noundef nonnull align 8 dereferenceable(56) %13, i32 noundef %60)
          to label %61 unwind label %125

61:                                               ; preds = %57
  call void @llvm.lifetime.start.p0(i64 56, ptr nonnull %14) #7
  %62 = load ptr, ptr %0, align 8, !tbaa !5
  %63 = getelementptr inbounds i8, ptr %62, i64 4
  %64 = load i32, ptr %63, align 4, !tbaa !53
  invoke void @_ZN8QpVectorC2Ei(ptr noundef nonnull align 8 dereferenceable(56) %14, i32 noundef %64)
          to label %65 unwind label %127

65:                                               ; preds = %61
  call void @llvm.lifetime.start.p0(i64 56, ptr nonnull %15) #7
  %66 = load ptr, ptr %0, align 8, !tbaa !5
  %67 = getelementptr inbounds i8, ptr %66, i64 4
  %68 = load i32, ptr %67, align 4, !tbaa !53
  invoke void @_ZN8QpVectorC2Ei(ptr noundef nonnull align 8 dereferenceable(56) %15, i32 noundef %68)
          to label %69 unwind label %129

69:                                               ; preds = %65
  call void @llvm.lifetime.start.p0(i64 56, ptr nonnull %16) #7
  %70 = load ptr, ptr %0, align 8, !tbaa !5
  %71 = getelementptr inbounds i8, ptr %70, i64 4
  %72 = load i32, ptr %71, align 4, !tbaa !53
  invoke void @_ZN8QpVectorC2Ei(ptr noundef nonnull align 8 dereferenceable(56) %16, i32 noundef %72)
          to label %73 unwind label %131

73:                                               ; preds = %69
  call void @llvm.lifetime.start.p0(i64 56, ptr nonnull %17) #7
  %74 = load ptr, ptr %0, align 8, !tbaa !5
  %75 = getelementptr inbounds i8, ptr %74, i64 4
  %76 = load i32, ptr %75, align 4, !tbaa !53
  invoke void @_ZN8QpVectorC2Ei(ptr noundef nonnull align 8 dereferenceable(56) %17, i32 noundef %76)
          to label %77 unwind label %133

77:                                               ; preds = %73
  call void @llvm.lifetime.start.p0(i64 56, ptr nonnull %18) #7
  %78 = load ptr, ptr %0, align 8, !tbaa !5
  %79 = getelementptr inbounds i8, ptr %78, i64 4
  %80 = load i32, ptr %79, align 4, !tbaa !53
  invoke void @_ZN8QpVectorC2Ei(ptr noundef nonnull align 8 dereferenceable(56) %18, i32 noundef %80)
          to label %81 unwind label %135

81:                                               ; preds = %77
  %82 = load ptr, ptr %0, align 8, !tbaa !5
  call void @_ZL10regularizeR7Runtime(ptr noundef nonnull align 8 dereferenceable(2552) %82)
  call void @llvm.lifetime.start.p0(i64 512, ptr nonnull %19) #7
  %83 = load ptr, ptr %0, align 8, !tbaa !5
  invoke void @_Z24ratiotest_relax_instanceR7Runtime(ptr dead_on_unwind nonnull writable sret(%struct.Instance) align 8 %19, ptr noundef nonnull align 8 dereferenceable(2552) %83)
          to label %84 unwind label %137

84:                                               ; preds = %81
  %85 = load ptr, ptr %0, align 8, !tbaa !5
  %86 = getelementptr inbounds i8, ptr %85, i64 512
  %87 = invoke noundef nonnull align 8 dereferenceable(512) ptr @_ZN8InstanceaSEOS_(ptr noundef nonnull align 8 dereferenceable(512) %86, ptr noundef nonnull align 8 dereferenceable(512) %19)
          to label %88 unwind label %139

88:                                               ; preds = %84
  call void @_ZN8InstanceD2Ev(ptr noundef nonnull align 8 dereferenceable(512) %19) #7
  call void @llvm.lifetime.end.p0(i64 512, ptr nonnull %19) #7
  %89 = load ptr, ptr %0, align 8, !tbaa !5
  %90 = getelementptr inbounds i8, ptr %89, i64 2264
  %91 = load ptr, ptr %90, align 8, !tbaa !10
  %92 = getelementptr inbounds i8, ptr %91, i64 4
  %93 = load i32, ptr %92, align 4, !tbaa !55
  %94 = call noundef i32 @_ZNK5Basis12getnumactiveEv(ptr noundef nonnull align 8 dereferenceable(2913) %3)
  %95 = load ptr, ptr %0, align 8, !tbaa !5
  %96 = getelementptr inbounds i8, ptr %95, i64 2264
  %97 = load ptr, ptr %96, align 8, !tbaa !10
  %98 = getelementptr inbounds i8, ptr %97, i64 4
  %99 = load i32, ptr %98, align 4, !tbaa !55
  %100 = getelementptr inbounds i8, ptr %95, i64 2244
  %101 = load i32, ptr %100, align 4, !tbaa !59
  %.not256 = icmp slt i32 %99, %101
  br i1 %.not256, label %.lr.ph, label %._crit_edge

.lr.ph:                                           ; preds = %88
  %102 = getelementptr inbounds i8, ptr %95, i64 4
  %103 = load i32, ptr %102, align 4, !tbaa !53
  %104 = icmp eq i32 %94, %103
  %105 = add nsw i32 %93, -1
  %106 = getelementptr inbounds i8, ptr %15, i64 4
  %107 = getelementptr inbounds i8, ptr %16, i64 4
  %108 = getelementptr inbounds i8, ptr %21, i64 8
  %109 = getelementptr inbounds i8, ptr %21, i64 12
  br label %142

._crit_edge:                                      ; preds = %.thread178, %88
  %.lcssa = phi ptr [ %95, %88 ], [ %347, %.thread178 ]
  %110 = getelementptr inbounds i8, ptr %.lcssa, i64 2496
  store i32 5, ptr %110, align 8, !tbaa !60
  br label %355

111:                                              ; preds = %5
  %112 = landingpad { ptr, i32 }
          cleanup
  br label %486

113:                                              ; preds = %37
  %114 = landingpad { ptr, i32 }
          cleanup
  br label %485

115:                                              ; preds = %39
  %116 = landingpad { ptr, i32 }
          cleanup
  br label %484

117:                                              ; preds = %41
  %118 = landingpad { ptr, i32 }
          cleanup
  br label %483

119:                                              ; preds = %47
  %120 = landingpad { ptr, i32 }
          cleanup
  br label %482

121:                                              ; preds = %49
  %122 = landingpad { ptr, i32 }
          cleanup
  br label %481

123:                                              ; preds = %53
  %124 = landingpad { ptr, i32 }
          cleanup
  br label %480

125:                                              ; preds = %57
  %126 = landingpad { ptr, i32 }
          cleanup
  br label %479

127:                                              ; preds = %61
  %128 = landingpad { ptr, i32 }
          cleanup
  br label %478

129:                                              ; preds = %65
  %130 = landingpad { ptr, i32 }
          cleanup
  br label %477

131:                                              ; preds = %69
  %132 = landingpad { ptr, i32 }
          cleanup
  br label %476

133:                                              ; preds = %73
  %134 = landingpad { ptr, i32 }
          cleanup
  br label %475

135:                                              ; preds = %77
  %136 = landingpad { ptr, i32 }
          cleanup
  br label %474

137:                                              ; preds = %81
  %138 = landingpad { ptr, i32 }
          cleanup
  br label %141

139:                                              ; preds = %84
  %140 = landingpad { ptr, i32 }
          cleanup
  call void @_ZN8InstanceD2Ev(ptr noundef nonnull align 8 dereferenceable(512) %19) #7
  br label %141

141:                                              ; preds = %139, %137
  %.pn = phi { ptr, i32 } [ %140, %139 ], [ %138, %137 ]
  call void @llvm.lifetime.end.p0(i64 512, ptr nonnull %19) #7
  br label %473

142:                                              ; preds = %.lr.ph, %.thread178
  %.0112260 = phi i32 [ %105, %.lr.ph ], [ %.2114, %.thread178 ]
  %.0115259 = phi double [ 0.000000e+00, %.lr.ph ], [ %.2117, %.thread178 ]
  %.0118258 = phi double [ 1.000000e+01, %.lr.ph ], [ %.2120, %.thread178 ]
  %.0121257 = phi i1 [ %104, %.lr.ph ], [ %.6127, %.thread178 ]
  %143 = invoke noundef double @_ZNK10HighsTimer4readEi(ptr noundef nonnull align 8 dereferenceable(132) %4, i32 noundef 0)
          to label %144 unwind label %.loopexit

144:                                              ; preds = %142
  %145 = load ptr, ptr %0, align 8, !tbaa !5
  %146 = getelementptr inbounds i8, ptr %145, i64 2248
  %147 = load double, ptr %146, align 8, !tbaa !61
  %148 = fcmp ult double %143, %147
  br i1 %148, label %151, label %149

149:                                              ; preds = %144
  %150 = getelementptr inbounds i8, ptr %145, i64 2496
  store i32 6, ptr %150, align 8, !tbaa !60
  br label %355

.loopexit:                                        ; preds = %142
  %lpad.loopexit = landingpad { ptr, i32 }
          cleanup
  br label %473

.loopexit.split-lp:                               ; preds = %157, %355, %357
  %lpad.loopexit.split-lp = landingpad { ptr, i32 }
          cleanup
  br label %473

151:                                              ; preds = %144
  %152 = call noundef i32 @_ZNK5Basis14getnuminactiveEv(ptr noundef nonnull align 8 dereferenceable(2913) %3)
  %153 = load ptr, ptr %0, align 8, !tbaa !5
  %154 = getelementptr inbounds i8, ptr %153, i64 2224
  %155 = load i32, ptr %154, align 8, !tbaa !62
  %156 = icmp sgt i32 %152, %155
  br i1 %156, label %157, label %163

157:                                              ; preds = %151
  %158 = getelementptr inbounds i8, ptr %153, i64 2224
  %159 = getelementptr inbounds i8, ptr %153, i64 2200
  invoke void @_ZN12EventhandlerIRiE4fireES0_(ptr noundef nonnull align 8 dereferenceable(24) %159, ptr noundef nonnull align 4 dereferenceable(4) %158)
          to label %160 unwind label %.loopexit.split-lp

160:                                              ; preds = %157
  %161 = load ptr, ptr %0, align 8, !tbaa !5
  %162 = getelementptr inbounds i8, ptr %161, i64 2496
  store i32 7, ptr %162, align 8, !tbaa !60
  br label %472

163:                                              ; preds = %151
  %164 = invoke noundef double @_ZNK10HighsTimer4readEi(ptr noundef nonnull align 8 dereferenceable(132) %4, i32 noundef 0)
          to label %165 unwind label %183

165:                                              ; preds = %163
  %166 = load ptr, ptr %0, align 8, !tbaa !5
  %167 = getelementptr inbounds i8, ptr %166, i64 2264
  %168 = load ptr, ptr %167, align 8, !tbaa !10
  %169 = getelementptr inbounds i8, ptr %168, i64 4
  %170 = load i32, ptr %169, align 4, !tbaa !55
  %171 = getelementptr inbounds i8, ptr %166, i64 2144
  %172 = load i32, ptr %171, align 8, !tbaa !63
  %173 = srem i32 %170, %172
  %174 = icmp eq i32 %173, 0
  %175 = fsub double %164, %.0115259
  %176 = fcmp ogt double %175, %.0118258
  %or.cond175 = select i1 %174, i1 true, i1 %176
  %177 = icmp sgt i32 %170, %.0112260
  %or.cond199 = select i1 %or.cond175, i1 %177, i1 false
  br i1 %or.cond199, label %178, label %196

178:                                              ; preds = %165
  %179 = mul nsw i32 %172, 10
  %.not142 = icmp sgt i32 %170, %179
  br i1 %.not142, label %.thread, label %185

.thread:                                          ; preds = %178
  store i32 %179, ptr %171, align 8, !tbaa !63
  %180 = fmul double %.0118258, 1.000000e+01
  %181 = fcmp ogt double %164, %180
  %182 = fmul double %.0118258, 2.000000e+00
  %.1119177 = select i1 %181, double %182, double %.0118258
  br label %196

183:                                              ; preds = %199, %196, %163
  %184 = landingpad { ptr, i32 }
          cleanup
  br label %473

185:                                              ; preds = %178
  invoke void @_ZL14loginformationR7RuntimeR5BasisR14CholeskyFactorR10HighsTimer(ptr noundef nonnull align 8 dereferenceable(2552) %166, ptr noundef nonnull align 8 dereferenceable(2913) %3, ptr noundef nonnull align 8 dereferenceable(88) %9, ptr noundef nonnull align 8 dereferenceable(132) %4)
          to label %186 unwind label %194

186:                                              ; preds = %185
  %187 = fmul double %.0118258, 1.000000e+01
  %188 = fcmp ogt double %164, %187
  %189 = fmul double %.0118258, 2.000000e+00
  %.1119 = select i1 %188, double %189, double %.0118258
  %190 = load ptr, ptr %0, align 8, !tbaa !5
  %191 = getelementptr inbounds i8, ptr %190, i64 2152
  %192 = getelementptr inbounds i8, ptr %190, i64 2264
  %193 = load ptr, ptr %192, align 8, !tbaa !10
  invoke void @_ZN12EventhandlerIR10StatisticsE4fireES1_(ptr noundef nonnull align 8 dereferenceable(24) %191, ptr noundef nonnull align 8 dereferenceable(216) %193)
          to label %196 unwind label %194

194:                                              ; preds = %186, %185
  %195 = landingpad { ptr, i32 }
          cleanup
  br label %473

196:                                              ; preds = %.thread, %186, %165
  %.2120 = phi double [ %.0118258, %165 ], [ %.1119, %186 ], [ %.1119177, %.thread ]
  %.2117 = phi double [ %.0115259, %165 ], [ %164, %186 ], [ %.0115259, %.thread ]
  %.2114 = phi i32 [ %.0112260, %165 ], [ %170, %186 ], [ %.0112260, %.thread ]
  %197 = invoke noundef zeroext i1 @_ZL18check_reinvert_dueR5Basis(ptr noundef nonnull align 8 dereferenceable(2913) %3)
          to label %198 unwind label %183

198:                                              ; preds = %196
  br i1 %197, label %199, label %200

199:                                              ; preds = %198
  invoke void @_ZL8reinvertR5BasisR14CholeskyFactorR8GradientR12ReducedCostsR15ReducedGradientRSt10unique_ptrI7PricingSt14default_deleteISA_EE(ptr noundef nonnull align 8 dereferenceable(2913) %3, ptr noundef nonnull align 8 dereferenceable(88) %9, ptr noundef nonnull align 8 dereferenceable(72) %6, ptr noundef nonnull align 8 dereferenceable(73) %7, ptr noundef nonnull align 8 dereferenceable(80) %8, ptr noundef nonnull align 8 dereferenceable(8) %10)
          to label %200 unwind label %183

200:                                              ; preds = %199, %198
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %20) #7
  store i8 0, ptr %20, align 1, !tbaa !64
  br i1 %.0121257, label %201, label %256

201:                                              ; preds = %200
  %202 = call noundef ptr @_ZNKSt10unique_ptrI7PricingSt14default_deleteIS0_EEptEv(ptr noundef nonnull align 8 dereferenceable(8) %10) #7
  %203 = load ptr, ptr %0, align 8, !tbaa !5
  %204 = invoke noundef nonnull align 8 dereferenceable(56) ptr @_ZN8Gradient11getGradientEv(ptr noundef nonnull align 8 dereferenceable(72) %6)
          to label %205 unwind label %214

205:                                              ; preds = %201
  %206 = getelementptr inbounds i8, ptr %203, i64 2272
  %207 = load ptr, ptr %202, align 8, !tbaa !65
  %208 = load ptr, ptr %207, align 8
  %209 = invoke noundef i32 %208(ptr noundef nonnull align 8 dereferenceable(8) %202, ptr noundef nonnull align 8 dereferenceable(56) %206, ptr noundef nonnull align 8 dereferenceable(56) %204)
          to label %210 unwind label %214

210:                                              ; preds = %205
  %211 = icmp eq i32 %209, -1
  %212 = load ptr, ptr %0, align 8, !tbaa !5
  br i1 %211, label %.thread178.thread196, label %216

.thread178.thread196:                             ; preds = %210
  %213 = getelementptr inbounds i8, ptr %212, i64 2496
  store i32 2, ptr %213, align 8, !tbaa !60
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %20) #7
  br label %355

214:                                              ; preds = %205, %201
  %215 = landingpad { ptr, i32 }
          cleanup
  br label %354

216:                                              ; preds = %210
  %217 = getelementptr inbounds i8, ptr %212, i64 2264
  %218 = load ptr, ptr %217, align 8, !tbaa !10
  %219 = getelementptr inbounds i8, ptr %218, i64 4
  %220 = load i32, ptr %219, align 4, !tbaa !55
  %221 = add nsw i32 %220, 1
  store i32 %221, ptr %219, align 4, !tbaa !55
  %222 = call noundef nonnull align 8 dereferenceable(24) ptr @_ZNK5Basis16getindexinfactorEv(ptr noundef nonnull align 8 dereferenceable(2913) %3)
  %223 = sext i32 %209 to i64
  %224 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNKSt6vectorIiSaIiEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %222, i64 noundef %223) #7
  %225 = load i32, ptr %224, align 4, !tbaa !67
  %226 = load ptr, ptr %0, align 8, !tbaa !5
  %227 = getelementptr inbounds i8, ptr %226, i64 4
  %228 = load i32, ptr %227, align 4, !tbaa !53
  %229 = call noundef nonnull align 8 dereferenceable(56) ptr @_ZN8QpVector4unitEiiRS_(i32 noundef %228, i32 noundef %225, ptr noundef nonnull align 8 dereferenceable(56) %13)
  %230 = invoke noundef nonnull align 8 dereferenceable(56) ptr @_ZN5Basis5btranERK8QpVectorRS0_bi(ptr noundef nonnull align 8 dereferenceable(2913) %3, ptr noundef nonnull align 8 dereferenceable(56) %13, ptr noundef nonnull align 8 dereferenceable(56) %13, i1 noundef zeroext true, i32 noundef %209)
          to label %231 unwind label %253

231:                                              ; preds = %216
  %232 = call noundef i32 @_ZNK5Basis14getnuminactiveEv(ptr noundef nonnull align 8 dereferenceable(2913) %3)
  store i32 %232, ptr %106, align 4, !tbaa !68
  %233 = call noundef i32 @_ZNK5Basis14getnuminactiveEv(ptr noundef nonnull align 8 dereferenceable(2913) %3)
  store i32 %233, ptr %107, align 4, !tbaa !68
  %234 = load ptr, ptr %0, align 8, !tbaa !5
  %235 = invoke noundef nonnull align 8 dereferenceable(56) ptr @_ZL28computesearchdirection_majorR7RuntimeR5BasisR14CholeskyFactorRK8QpVectorR8GradientRS5_SA_SA_SA_(ptr noundef nonnull align 8 dereferenceable(2552) %234, ptr noundef nonnull align 8 dereferenceable(2913) %3, ptr noundef nonnull align 8 dereferenceable(88) %9, ptr noundef nonnull align 8 dereferenceable(56) %13, ptr noundef nonnull align 8 dereferenceable(72) %6, ptr noundef nonnull align 8 dereferenceable(56) %14, ptr noundef nonnull align 8 dereferenceable(56) %15, ptr noundef nonnull align 8 dereferenceable(56) %16, ptr noundef nonnull align 8 dereferenceable(56) %11)
          to label %236 unwind label %253

236:                                              ; preds = %231
  invoke void @_ZN5Basis10deactivateEi(ptr noundef nonnull align 8 dereferenceable(2913) %3, i32 noundef %209)
          to label %237 unwind label %253

237:                                              ; preds = %236
  %238 = load ptr, ptr %0, align 8, !tbaa !5
  invoke void @_ZL14computerowmoveR7RuntimeR5BasisR8QpVectorS4_(ptr noundef nonnull align 8 dereferenceable(2552) %238, ptr noundef nonnull align 8 dereferenceable(2913) %3, ptr noundef nonnull align 8 dereferenceable(56) %11, ptr noundef nonnull align 8 dereferenceable(56) %12)
          to label %239 unwind label %253

239:                                              ; preds = %237
  %240 = load ptr, ptr %0, align 8, !tbaa !5
  invoke void @_ZL6tidyupR8QpVectorS0_R5BasisR7Runtime(ptr noundef nonnull align 8 dereferenceable(56) %11, ptr noundef nonnull align 8 dereferenceable(56) %12, ptr noundef nonnull align 8 dereferenceable(2913) %3, ptr noundef nonnull align 8 dereferenceable(2552) %240)
          to label %241 unwind label %253

241:                                              ; preds = %239
  %242 = call noundef double @_ZNSt14numeric_limitsIdE8infinityEv() #7
  %243 = load ptr, ptr %0, align 8, !tbaa !5
  %244 = invoke noundef double @_ZL20computemaxsteplengthR7RuntimeRK8QpVectorR8GradientRS1_Rb(ptr noundef nonnull align 8 dereferenceable(2552) %243, ptr noundef nonnull align 8 dereferenceable(56) %11, ptr noundef nonnull align 8 dereferenceable(72) %6, ptr noundef nonnull align 8 dereferenceable(56) %17, ptr noundef nonnull align 1 dereferenceable(1) %20)
          to label %245 unwind label %253

245:                                              ; preds = %241
  %246 = load i8, ptr %20, align 1, !tbaa !64, !range !69, !noundef !70
  %247 = trunc nuw i8 %246 to i1
  br i1 %247, label %255, label %248

248:                                              ; preds = %245
  %249 = invoke noundef i32 @_ZN14CholeskyFactor6expandERK8QpVectorRS0_S3_S3_(ptr noundef nonnull align 8 dereferenceable(88) %9, ptr noundef nonnull align 8 dereferenceable(56) %13, ptr noundef nonnull align 8 dereferenceable(56) %14, ptr noundef nonnull align 8 dereferenceable(56) %15, ptr noundef nonnull align 8 dereferenceable(56) %16)
          to label %250 unwind label %253

250:                                              ; preds = %248
  %.not143 = icmp eq i32 %249, 0
  br i1 %.not143, label %255, label %.thread178.thread

.thread178.thread:                                ; preds = %250
  %251 = load ptr, ptr %0, align 8, !tbaa !5
  %252 = getelementptr inbounds i8, ptr %251, i64 2496
  store i32 1, ptr %252, align 8, !tbaa !60
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %20) #7
  br label %472

253:                                              ; preds = %255, %248, %241, %239, %237, %236, %231, %216
  %254 = landingpad { ptr, i32 }
          cleanup
  br label %354

255:                                              ; preds = %250, %245
  invoke void @_ZN15ReducedGradient6expandERK8QpVector(ptr noundef nonnull align 8 dereferenceable(80) %8, ptr noundef nonnull align 8 dereferenceable(56) %13)
          to label %269 unwind label %253

256:                                              ; preds = %200
  %257 = load ptr, ptr %0, align 8, !tbaa !5
  %258 = invoke noundef nonnull align 8 dereferenceable(56) ptr @_ZL28computesearchdirection_minorR7RuntimeR5BasisR14CholeskyFactorR15ReducedGradientR8QpVector(ptr noundef nonnull align 8 dereferenceable(2552) %257, ptr noundef nonnull align 8 dereferenceable(2913) %3, ptr noundef nonnull align 8 dereferenceable(88) %9, ptr noundef nonnull align 8 dereferenceable(80) %8, ptr noundef nonnull align 8 dereferenceable(56) %11)
          to label %259 unwind label %267

259:                                              ; preds = %256
  %260 = load ptr, ptr %0, align 8, !tbaa !5
  invoke void @_ZL14computerowmoveR7RuntimeR5BasisR8QpVectorS4_(ptr noundef nonnull align 8 dereferenceable(2552) %260, ptr noundef nonnull align 8 dereferenceable(2913) %3, ptr noundef nonnull align 8 dereferenceable(56) %11, ptr noundef nonnull align 8 dereferenceable(56) %12)
          to label %261 unwind label %267

261:                                              ; preds = %259
  %262 = load ptr, ptr %0, align 8, !tbaa !5
  invoke void @_ZL6tidyupR8QpVectorS0_R5BasisR7Runtime(ptr noundef nonnull align 8 dereferenceable(56) %11, ptr noundef nonnull align 8 dereferenceable(56) %12, ptr noundef nonnull align 8 dereferenceable(2913) %3, ptr noundef nonnull align 8 dereferenceable(2552) %262)
          to label %263 unwind label %267

263:                                              ; preds = %261
  %264 = load ptr, ptr %0, align 8, !tbaa !5
  %265 = getelementptr inbounds i8, ptr %264, i64 80
  %266 = invoke noundef nonnull align 8 dereferenceable(56) ptr @_ZN6Matrix7mat_vecERK8QpVectorRS0_(ptr noundef nonnull align 8 dereferenceable(168) %265, ptr noundef nonnull align 8 dereferenceable(56) %11, ptr noundef nonnull align 8 dereferenceable(56) %17)
          to label %269 unwind label %267

267:                                              ; preds = %263, %261, %259, %256
  %268 = landingpad { ptr, i32 }
          cleanup
  br label %354

269:                                              ; preds = %255, %263
  %.1135 = phi double [ 1.000000e+00, %263 ], [ %244, %255 ]
  %270 = call noundef double @_ZN8QpVector5norm2Ev(ptr noundef nonnull align 8 dereferenceable(56) %11)
  %271 = load ptr, ptr %0, align 8, !tbaa !5
  %272 = getelementptr inbounds i8, ptr %271, i64 2080
  %273 = load double, ptr %272, align 8, !tbaa !71
  %274 = fcmp olt double %270, %273
  %275 = fcmp oeq double %.1135, 0.000000e+00
  %or.cond = or i1 %275, %274
  br i1 %or.cond, label %.thread178, label %276

276:                                              ; preds = %269
  %277 = getelementptr inbounds i8, ptr %271, i64 2264
  %278 = load ptr, ptr %277, align 8, !tbaa !10
  %279 = getelementptr inbounds i8, ptr %278, i64 4
  %280 = load i32, ptr %279, align 4, !tbaa !55
  %281 = add nsw i32 %280, 1
  store i32 %281, ptr %279, align 4, !tbaa !55
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %21) #7
  %282 = invoke { double, i64 } @_Z9ratiotestR7RuntimeRK8QpVectorS3_d(ptr noundef nonnull align 8 dereferenceable(2552) %271, ptr noundef nonnull align 8 dereferenceable(56) %11, ptr noundef nonnull align 8 dereferenceable(56) %12, double noundef %.1135)
          to label %283 unwind label %291

283:                                              ; preds = %276
  %284 = extractvalue { double, i64 } %282, 0
  store double %284, ptr %21, align 8
  %285 = extractvalue { double, i64 } %282, 1
  store i64 %285, ptr %108, align 8
  %286 = trunc i64 %285 to i32
  %.not146 = icmp eq i32 %286, -1
  br i1 %.not146, label %325, label %287

287:                                              ; preds = %283
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %22) #7
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %23) #7
  %288 = load ptr, ptr %0, align 8, !tbaa !5
  %289 = invoke noundef i32 @_ZL6reduceR7RuntimeR5BasisiR8QpVectorRiS5_(ptr noundef nonnull align 8 dereferenceable(2552) %288, ptr noundef nonnull align 8 dereferenceable(2913) %3, i32 noundef %286, ptr noundef nonnull align 8 dereferenceable(56) %18, ptr noundef nonnull align 4 dereferenceable(4) %23, ptr noundef nonnull align 4 dereferenceable(4) %22)
          to label %290 unwind label %293

290:                                              ; preds = %287
  %.not147 = icmp eq i32 %289, 0
  br i1 %.not147, label %295, label %.thread183

291:                                              ; preds = %343, %338, %333, %276
  %292 = landingpad { ptr, i32 }
          cleanup
  br label %346

293:                                              ; preds = %306, %304, %302, %298, %287
  %294 = landingpad { ptr, i32 }
          cleanup
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %23) #7
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %22) #7
  br label %346

295:                                              ; preds = %290
  %296 = load i8, ptr %20, align 1, !tbaa !64, !range !69, !noundef !70
  %297 = trunc nuw i8 %296 to i1
  br i1 %297, label %304, label %298

298:                                              ; preds = %295
  %299 = load i32, ptr %23, align 4, !tbaa !67
  %300 = call noundef nonnull align 8 dereferenceable(24) ptr @_ZNK5Basis11getinactiveEv(ptr noundef nonnull align 8 dereferenceable(2913) %3)
  %301 = invoke noundef i32 @_Z7indexofIiEiRKSt6vectorIT_SaIS1_EERKS1_(ptr noundef nonnull align 8 dereferenceable(24) %300, ptr noundef nonnull align 4 dereferenceable(4) %108)
          to label %302 unwind label %293

302:                                              ; preds = %298
  %303 = icmp ne i32 %301, -1
  invoke void @_ZN14CholeskyFactor6reduceERK8QpVectorib(ptr noundef nonnull align 8 dereferenceable(88) %9, ptr noundef nonnull align 8 dereferenceable(56) %18, i32 noundef %299, i1 noundef zeroext %303)
          to label %304 unwind label %293

304:                                              ; preds = %302, %295
  %305 = load i32, ptr %23, align 4, !tbaa !67
  invoke void @_ZN15ReducedGradient6reduceERK8QpVectori(ptr noundef nonnull align 8 dereferenceable(80) %8, ptr noundef nonnull align 8 dereferenceable(56) %18, i32 noundef %305)
          to label %306 unwind label %293

306:                                              ; preds = %304
  %307 = load double, ptr %21, align 8, !tbaa !72
  call void @_ZN15ReducedGradient6updateEdb(ptr noundef nonnull align 8 dereferenceable(80) %8, double noundef %307, i1 noundef zeroext false)
  %308 = load ptr, ptr %0, align 8, !tbaa !5
  %309 = getelementptr inbounds i8, ptr %308, i64 2048
  %310 = load i32, ptr %108, align 8, !tbaa !74
  %311 = load i8, ptr %109, align 4, !tbaa !75, !range !69, !noundef !70
  %312 = trunc nuw i8 %311 to i1
  %313 = select i1 %312, i32 1, i32 2
  %314 = load i32, ptr %22, align 4, !tbaa !67
  %315 = call noundef ptr @_ZNKSt10unique_ptrI7PricingSt14default_deleteIS0_EE3getEv(ptr noundef nonnull align 8 dereferenceable(8) %10) #7
  %316 = invoke noundef i32 @_ZN5Basis8activateERK8Settingsi11BasisStatusiP7Pricing(ptr noundef nonnull align 8 dereferenceable(2913) %3, ptr noundef nonnull align 8 dereferenceable(211) %309, i32 noundef %310, i32 noundef %313, i32 noundef %314, ptr noundef %315)
          to label %317 unwind label %293

317:                                              ; preds = %306
  %.not148 = icmp eq i32 %316, 0
  br i1 %.not148, label %320, label %.thread183

.thread183:                                       ; preds = %317, %290
  %318 = load ptr, ptr %0, align 8, !tbaa !5
  %319 = getelementptr inbounds i8, ptr %318, i64 2496
  store i32 1, ptr %319, align 8, !tbaa !60
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %23) #7
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %22) #7
  br label %.thread191

320:                                              ; preds = %317
  %321 = call noundef i32 @_ZNK5Basis12getnumactiveEv(ptr noundef nonnull align 8 dereferenceable(2913) %3)
  %322 = load ptr, ptr %0, align 8, !tbaa !5
  %323 = getelementptr inbounds i8, ptr %322, i64 4
  %324 = load i32, ptr %323, align 4, !tbaa !53
  %.not149 = icmp eq i32 %321, %324
  %spec.select = select i1 %.not149, i1 %.0121257, i1 false
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %23) #7
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %22) #7
  br label %333

325:                                              ; preds = %283
  %326 = call noundef double @_ZNSt14numeric_limitsIdE8infinityEv() #7
  %327 = fcmp oeq double %284, %326
  br i1 %327, label %328, label %331

328:                                              ; preds = %325
  %329 = load ptr, ptr %0, align 8, !tbaa !5
  %330 = getelementptr inbounds i8, ptr %329, i64 2496
  store i32 3, ptr %330, align 8, !tbaa !60
  br label %.thread191

331:                                              ; preds = %325
  %332 = load double, ptr %21, align 8, !tbaa !72
  call void @_ZN15ReducedGradient6updateEdb(ptr noundef nonnull align 8 dereferenceable(80) %8, double noundef %332, i1 noundef zeroext false)
  %.pre = load ptr, ptr %0, align 8, !tbaa !5
  br label %333

333:                                              ; preds = %320, %331
  %334 = phi ptr [ %322, %320 ], [ %.pre, %331 ]
  %.3124 = phi i1 [ %spec.select, %320 ], [ false, %331 ]
  %335 = getelementptr inbounds i8, ptr %334, i64 2272
  %336 = load double, ptr %21, align 8, !tbaa !72
  %337 = invoke noundef nonnull align 8 dereferenceable(56) ptr @_ZN8QpVector5saxpyEdRKS_(ptr noundef nonnull align 8 dereferenceable(56) %335, double noundef %336, ptr noundef nonnull align 8 dereferenceable(56) %11)
          to label %338 unwind label %291

338:                                              ; preds = %333
  %339 = load ptr, ptr %0, align 8, !tbaa !5
  %340 = getelementptr inbounds i8, ptr %339, i64 2328
  %341 = load double, ptr %21, align 8, !tbaa !72
  %342 = invoke noundef nonnull align 8 dereferenceable(56) ptr @_ZN8QpVector5saxpyEdRKS_(ptr noundef nonnull align 8 dereferenceable(56) %340, double noundef %341, ptr noundef nonnull align 8 dereferenceable(56) %12)
          to label %343 unwind label %291

343:                                              ; preds = %338
  %344 = load double, ptr %21, align 8, !tbaa !72
  invoke void @_ZN8Gradient6updateER8QpVectord(ptr noundef nonnull align 8 dereferenceable(72) %6, ptr noundef nonnull align 8 dereferenceable(56) %17, double noundef %344)
          to label %345 unwind label %291

.thread191:                                       ; preds = %.thread183, %328
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %21) #7
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %20) #7
  br label %472

345:                                              ; preds = %343
  call void @_ZN12ReducedCosts6updateEv(ptr noundef nonnull align 8 dereferenceable(73) %7)
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %21) #7
  %.pre304 = load ptr, ptr %0, align 8, !tbaa !5
  br label %.thread178

346:                                              ; preds = %293, %291
  %.pn150 = phi { ptr, i32 } [ %292, %291 ], [ %294, %293 ]
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %21) #7
  br label %354

.thread178:                                       ; preds = %345, %269
  %347 = phi ptr [ %271, %269 ], [ %.pre304, %345 ]
  %.6127 = phi i1 [ true, %269 ], [ %.3124, %345 ]
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %20) #7
  %348 = getelementptr inbounds i8, ptr %347, i64 2264
  %349 = load ptr, ptr %348, align 8, !tbaa !10
  %350 = getelementptr inbounds i8, ptr %349, i64 4
  %351 = load i32, ptr %350, align 4, !tbaa !55
  %352 = getelementptr inbounds i8, ptr %347, i64 2244
  %353 = load i32, ptr %352, align 4, !tbaa !59
  %.not = icmp slt i32 %351, %353
  br i1 %.not, label %142, label %._crit_edge

354:                                              ; preds = %214, %253, %346, %267
  %.pn150.pn = phi { ptr, i32 } [ %.pn150, %346 ], [ %268, %267 ], [ %254, %253 ], [ %215, %214 ]
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %20) #7
  br label %473

355:                                              ; preds = %.thread178.thread196, %149, %._crit_edge
  %356 = phi ptr [ %212, %.thread178.thread196 ], [ %145, %149 ], [ %.lcssa, %._crit_edge ]
  invoke void @_ZL14loginformationR7RuntimeR5BasisR14CholeskyFactorR10HighsTimer(ptr noundef nonnull align 8 dereferenceable(2552) %356, ptr noundef nonnull align 8 dereferenceable(2913) %3, ptr noundef nonnull align 8 dereferenceable(88) %9, ptr noundef nonnull align 8 dereferenceable(132) %4)
          to label %357 unwind label %.loopexit.split-lp

357:                                              ; preds = %355
  %358 = load ptr, ptr %0, align 8, !tbaa !5
  %359 = getelementptr inbounds i8, ptr %358, i64 2152
  %360 = getelementptr inbounds i8, ptr %358, i64 2264
  %361 = load ptr, ptr %360, align 8, !tbaa !10
  invoke void @_ZN12EventhandlerIR10StatisticsE4fireES1_(ptr noundef nonnull align 8 dereferenceable(24) %359, ptr noundef nonnull align 8 dereferenceable(216) %361)
          to label %362 unwind label %.loopexit.split-lp

362:                                              ; preds = %357
  %363 = load ptr, ptr %0, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 56, ptr nonnull %24) #7
  %364 = getelementptr inbounds i8, ptr %363, i64 296
  %365 = getelementptr inbounds i8, ptr %363, i64 2272
  invoke void @_ZN6Matrix7mat_vecERK8QpVector(ptr dead_on_unwind nonnull writable sret(%struct.QpVector) align 8 %24, ptr noundef nonnull align 8 dereferenceable(168) %364, ptr noundef nonnull align 8 dereferenceable(56) %365)
          to label %366 unwind label %383

366:                                              ; preds = %362
  %367 = call { double, i32 } @_ZN8Instance27sumnumprimalinfeasibilitiesERK8QpVectorS2_(ptr noundef nonnull align 8 dereferenceable(512) %363, ptr noundef nonnull align 8 dereferenceable(56) %365, ptr noundef nonnull align 8 dereferenceable(56) %24)
  call void @_ZN8QpVectorD2Ev(ptr noundef nonnull align 8 dereferenceable(56) %24) #7
  call void @llvm.lifetime.end.p0(i64 56, ptr nonnull %24) #7
  %368 = invoke noundef nonnull align 8 dereferenceable(56) ptr @_ZN12ReducedCosts15getReducedCostsEv(ptr noundef nonnull align 8 dereferenceable(73) %7)
          to label %369 unwind label %385

369:                                              ; preds = %366
  %370 = call noundef nonnull align 8 dereferenceable(24) ptr @_ZNK5Basis9getactiveEv(ptr noundef nonnull align 8 dereferenceable(2913) %3)
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %25) #7
  %371 = call ptr @_ZNKSt6vectorIiSaIiEE5beginEv(ptr noundef nonnull align 8 dereferenceable(24) %370) #7
  store ptr %371, ptr %25, align 8
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %26) #7
  %372 = call ptr @_ZNKSt6vectorIiSaIiEE3endEv(ptr noundef nonnull align 8 dereferenceable(24) %370) #7
  store ptr %372, ptr %26, align 8
  %373 = call noundef zeroext i1 @_ZN9__gnu_cxxneIPKiSt6vectorIiSaIiEEEEbRKNS_17__normal_iteratorIT_T0_EESB_(ptr noundef nonnull align 8 dereferenceable(8) %25, ptr noundef nonnull align 8 dereferenceable(8) %26) #7
  br i1 %373, label %.lr.ph262, label %._crit_edge263

.lr.ph262:                                        ; preds = %369
  %374 = getelementptr inbounds i8, ptr %368, i64 32
  br label %387

._crit_edge263:                                   ; preds = %413, %369
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %26) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %25) #7
  %375 = load ptr, ptr %0, align 8, !tbaa !5
  %376 = getelementptr inbounds i8, ptr %375, i64 2440
  call void @_ZN8QpVector10resparsifyEv(ptr noundef nonnull align 8 dereferenceable(56) %376)
  %377 = load ptr, ptr %0, align 8, !tbaa !5
  %378 = getelementptr inbounds i8, ptr %377, i64 2384
  call void @_ZN8QpVector10resparsifyEv(ptr noundef nonnull align 8 dereferenceable(56) %378)
  %379 = load ptr, ptr %0, align 8, !tbaa !5
  %380 = getelementptr inbounds i8, ptr %379, i64 4
  %381 = load i32, ptr %380, align 4, !tbaa !53
  %382 = icmp sgt i32 %381, 0
  br i1 %382, label %.lr.ph266, label %.preheader

383:                                              ; preds = %362
  %384 = landingpad { ptr, i32 }
          cleanup
  call void @llvm.lifetime.end.p0(i64 56, ptr nonnull %24) #7
  br label %473

385:                                              ; preds = %366
  %386 = landingpad { ptr, i32 }
          cleanup
  br label %473

387:                                              ; preds = %.lr.ph262, %413
  %388 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNK9__gnu_cxx17__normal_iteratorIPKiSt6vectorIiSaIiEEEdeEv(ptr noundef nonnull align 8 dereferenceable(8) %25) #7
  %389 = load i32, ptr %388, align 4, !tbaa !67
  %390 = call noundef nonnull align 8 dereferenceable(24) ptr @_ZNK5Basis16getindexinfactorEv(ptr noundef nonnull align 8 dereferenceable(2913) %3)
  %391 = sext i32 %389 to i64
  %392 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNKSt6vectorIiSaIiEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %390, i64 noundef %391) #7
  %393 = load i32, ptr %392, align 4, !tbaa !67
  %394 = load ptr, ptr %0, align 8, !tbaa !5
  %395 = getelementptr inbounds i8, ptr %394, i64 8
  %396 = load i32, ptr %395, align 8, !tbaa !54
  %.not173 = icmp slt i32 %389, %396
  br i1 %.not173, label %406, label %397

397:                                              ; preds = %387
  %398 = sub nsw i32 %389, %396
  %399 = sext i32 %393 to i64
  %400 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt6vectorIdSaIdEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %374, i64 noundef %399) #7
  %401 = load double, ptr %400, align 8, !tbaa !76
  %402 = load ptr, ptr %0, align 8, !tbaa !5
  %403 = getelementptr inbounds i8, ptr %402, i64 2416
  %404 = sext i32 %398 to i64
  %405 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt6vectorIdSaIdEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %403, i64 noundef %404) #7
  store double %401, ptr %405, align 8, !tbaa !76
  br label %413

406:                                              ; preds = %387
  %407 = sext i32 %393 to i64
  %408 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt6vectorIdSaIdEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %374, i64 noundef %407) #7
  %409 = load double, ptr %408, align 8, !tbaa !76
  %410 = load ptr, ptr %0, align 8, !tbaa !5
  %411 = getelementptr inbounds i8, ptr %410, i64 2472
  %412 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt6vectorIdSaIdEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %411, i64 noundef %391) #7
  store double %409, ptr %412, align 8, !tbaa !76
  br label %413

413:                                              ; preds = %406, %397
  %414 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZN9__gnu_cxx17__normal_iteratorIPKiSt6vectorIiSaIiEEEppEv(ptr noundef nonnull align 8 dereferenceable(8) %25) #7
  %415 = call noundef zeroext i1 @_ZN9__gnu_cxxneIPKiSt6vectorIiSaIiEEEEbRKNS_17__normal_iteratorIT_T0_EESB_(ptr noundef nonnull align 8 dereferenceable(8) %25, ptr noundef nonnull align 8 dereferenceable(8) %26) #7
  br i1 %415, label %387, label %._crit_edge263

.preheader:                                       ; preds = %426, %._crit_edge263
  %416 = phi ptr [ %379, %._crit_edge263 ], [ %430, %426 ]
  %417 = getelementptr inbounds i8, ptr %416, i64 8
  %418 = load i32, ptr %417, align 8, !tbaa !54
  %419 = icmp sgt i32 %418, 0
  br i1 %419, label %.lr.ph268, label %._crit_edge269

.lr.ph266:                                        ; preds = %._crit_edge263, %426
  %indvars.iv = phi i64 [ %indvars.iv.next, %426 ], [ 0, %._crit_edge263 ]
  %420 = phi ptr [ %430, %426 ], [ %379, %._crit_edge263 ]
  %421 = getelementptr inbounds i8, ptr %420, i64 8
  %422 = load i32, ptr %421, align 8, !tbaa !54
  %423 = trunc nuw nsw i64 %indvars.iv to i32
  %424 = add nsw i32 %422, %423
  %425 = invoke noundef i32 @_ZN5Basis9getstatusEi(ptr noundef nonnull align 8 dereferenceable(2913) %3, i32 noundef %424)
          to label %426 unwind label %435

426:                                              ; preds = %.lr.ph266
  %427 = load ptr, ptr %0, align 8, !tbaa !5
  %428 = getelementptr inbounds i8, ptr %427, i64 2504
  %429 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNSt6vectorI11BasisStatusSaIS0_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %428, i64 noundef %indvars.iv) #7
  store i32 %425, ptr %429, align 4, !tbaa !77
  %indvars.iv.next = add nuw nsw i64 %indvars.iv, 1
  %430 = load ptr, ptr %0, align 8, !tbaa !5
  %431 = getelementptr inbounds i8, ptr %430, i64 4
  %432 = load i32, ptr %431, align 4, !tbaa !53
  %433 = sext i32 %432 to i64
  %434 = icmp slt i64 %indvars.iv.next, %433
  br i1 %434, label %.lr.ph266, label %.preheader, !llvm.loop !79

435:                                              ; preds = %.lr.ph266
  %436 = landingpad { ptr, i32 }
          cleanup
  br label %473

._crit_edge269:                                   ; preds = %444, %.preheader
  %437 = call noundef i32 @_ZNK5Basis12getnumactiveEv(ptr noundef nonnull align 8 dereferenceable(2913) %3)
  %438 = load ptr, ptr %0, align 8, !tbaa !5
  %439 = getelementptr inbounds i8, ptr %438, i64 4
  %440 = load i32, ptr %439, align 4, !tbaa !53
  %441 = icmp eq i32 %437, %440
  br i1 %441, label %455, label %466

.lr.ph268:                                        ; preds = %.preheader, %444
  %indvars.iv301 = phi i64 [ %indvars.iv.next302, %444 ], [ 0, %.preheader ]
  %442 = trunc nuw nsw i64 %indvars.iv301 to i32
  %443 = invoke noundef i32 @_ZN5Basis9getstatusEi(ptr noundef nonnull align 8 dereferenceable(2913) %3, i32 noundef %442)
          to label %444 unwind label %453

444:                                              ; preds = %.lr.ph268
  %445 = load ptr, ptr %0, align 8, !tbaa !5
  %446 = getelementptr inbounds i8, ptr %445, i64 2528
  %447 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNSt6vectorI11BasisStatusSaIS0_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %446, i64 noundef %indvars.iv301) #7
  store i32 %443, ptr %447, align 4, !tbaa !77
  %indvars.iv.next302 = add nuw nsw i64 %indvars.iv301, 1
  %448 = load ptr, ptr %0, align 8, !tbaa !5
  %449 = getelementptr inbounds i8, ptr %448, i64 8
  %450 = load i32, ptr %449, align 8, !tbaa !54
  %451 = sext i32 %450 to i64
  %452 = icmp slt i64 %indvars.iv.next302, %451
  br i1 %452, label %.lr.ph268, label %._crit_edge269, !llvm.loop !81

453:                                              ; preds = %.lr.ph268
  %454 = landingpad { ptr, i32 }
          cleanup
  br label %473

455:                                              ; preds = %._crit_edge269
  call void @llvm.lifetime.start.p0(i64 56, ptr nonnull %27) #7
  invoke void @_ZN5Basis10recomputexERK8Instance(ptr dead_on_unwind nonnull writable sret(%struct.QpVector) align 8 %27, ptr noundef nonnull align 8 dereferenceable(2913) %3, ptr noundef nonnull align 8 dereferenceable(512) %438)
          to label %456 unwind label %461

456:                                              ; preds = %455
  %457 = load ptr, ptr %0, align 8, !tbaa !5
  %458 = getelementptr inbounds i8, ptr %457, i64 2272
  %459 = invoke noundef nonnull align 8 dereferenceable(56) ptr @_ZN8QpVectoraSERKS_(ptr noundef nonnull align 8 dereferenceable(56) %458, ptr noundef nonnull align 8 dereferenceable(56) %27)
          to label %460 unwind label %463

460:                                              ; preds = %456
  call void @_ZN8QpVectorD2Ev(ptr noundef nonnull align 8 dereferenceable(56) %27) #7
  call void @llvm.lifetime.end.p0(i64 56, ptr nonnull %27) #7
  br label %466

461:                                              ; preds = %455
  %462 = landingpad { ptr, i32 }
          cleanup
  br label %465

463:                                              ; preds = %456
  %464 = landingpad { ptr, i32 }
          cleanup
  call void @_ZN8QpVectorD2Ev(ptr noundef nonnull align 8 dereferenceable(56) %27) #7
  br label %465

465:                                              ; preds = %463, %461
  %.pn154 = phi { ptr, i32 } [ %464, %463 ], [ %462, %461 ]
  call void @llvm.lifetime.end.p0(i64 56, ptr nonnull %27) #7
  br label %473

466:                                              ; preds = %460, %._crit_edge269
  %467 = call i64 @_ZNSt6chrono3_V212system_clock3nowEv() #7
  %468 = load ptr, ptr %0, align 8, !tbaa !5
  %469 = getelementptr inbounds i8, ptr %468, i64 2264
  %470 = load ptr, ptr %469, align 8, !tbaa !10
  %471 = getelementptr inbounds i8, ptr %470, i64 16
  store i64 %467, ptr %471, align 8, !tbaa !51
  br label %472

472:                                              ; preds = %.thread178.thread, %.thread191, %466, %160
  call void @_ZN8QpVectorD2Ev(ptr noundef nonnull align 8 dereferenceable(56) %18) #7
  call void @llvm.lifetime.end.p0(i64 56, ptr nonnull %18) #7
  call void @_ZN8QpVectorD2Ev(ptr noundef nonnull align 8 dereferenceable(56) %17) #7
  call void @llvm.lifetime.end.p0(i64 56, ptr nonnull %17) #7
  call void @_ZN8QpVectorD2Ev(ptr noundef nonnull align 8 dereferenceable(56) %16) #7
  call void @llvm.lifetime.end.p0(i64 56, ptr nonnull %16) #7
  call void @_ZN8QpVectorD2Ev(ptr noundef nonnull align 8 dereferenceable(56) %15) #7
  call void @llvm.lifetime.end.p0(i64 56, ptr nonnull %15) #7
  call void @_ZN8QpVectorD2Ev(ptr noundef nonnull align 8 dereferenceable(56) %14) #7
  call void @llvm.lifetime.end.p0(i64 56, ptr nonnull %14) #7
  call void @_ZN8QpVectorD2Ev(ptr noundef nonnull align 8 dereferenceable(56) %13) #7
  call void @llvm.lifetime.end.p0(i64 56, ptr nonnull %13) #7
  call void @_ZN8QpVectorD2Ev(ptr noundef nonnull align 8 dereferenceable(56) %12) #7
  call void @llvm.lifetime.end.p0(i64 56, ptr nonnull %12) #7
  call void @_ZN8QpVectorD2Ev(ptr noundef nonnull align 8 dereferenceable(56) %11) #7
  call void @llvm.lifetime.end.p0(i64 56, ptr nonnull %11) #7
  call void @_ZNSt10unique_ptrI7PricingSt14default_deleteIS0_EED2Ev(ptr noundef nonnull align 8 dereferenceable(8) %10) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %10) #7
  call void @_ZN14CholeskyFactorD2Ev(ptr noundef nonnull align 8 dereferenceable(88) %9) #7
  call void @llvm.lifetime.end.p0(i64 88, ptr nonnull %9) #7
  call void @_ZN15ReducedGradientD2Ev(ptr noundef nonnull align 8 dereferenceable(80) %8) #7
  call void @llvm.lifetime.end.p0(i64 80, ptr nonnull %8) #7
  call void @_ZN12ReducedCostsD2Ev(ptr noundef nonnull align 8 dereferenceable(73) %7) #7
  call void @llvm.lifetime.end.p0(i64 80, ptr nonnull %7) #7
  call void @_ZN8GradientD2Ev(ptr noundef nonnull align 8 dereferenceable(72) %6) #7
  call void @llvm.lifetime.end.p0(i64 72, ptr nonnull %6) #7
  ret void

473:                                              ; preds = %.loopexit, %.loopexit.split-lp, %383, %354, %194, %183, %465, %453, %435, %385, %141
  %.pn156.pn.pn = phi { ptr, i32 } [ %.pn, %141 ], [ %384, %383 ], [ %.pn150.pn, %354 ], [ %184, %183 ], [ %195, %194 ], [ %436, %435 ], [ %454, %453 ], [ %.pn154, %465 ], [ %386, %385 ], [ %lpad.loopexit, %.loopexit ], [ %lpad.loopexit.split-lp, %.loopexit.split-lp ]
  call void @_ZN8QpVectorD2Ev(ptr noundef nonnull align 8 dereferenceable(56) %18) #7
  br label %474

474:                                              ; preds = %473, %135
  %.pn156.pn.pn.pn = phi { ptr, i32 } [ %.pn156.pn.pn, %473 ], [ %136, %135 ]
  call void @llvm.lifetime.end.p0(i64 56, ptr nonnull %18) #7
  call void @_ZN8QpVectorD2Ev(ptr noundef nonnull align 8 dereferenceable(56) %17) #7
  br label %475

475:                                              ; preds = %474, %133
  %.pn156.pn.pn.pn.pn = phi { ptr, i32 } [ %.pn156.pn.pn.pn, %474 ], [ %134, %133 ]
  call void @llvm.lifetime.end.p0(i64 56, ptr nonnull %17) #7
  call void @_ZN8QpVectorD2Ev(ptr noundef nonnull align 8 dereferenceable(56) %16) #7
  br label %476

476:                                              ; preds = %475, %131
  %.pn156.pn.pn.pn.pn.pn = phi { ptr, i32 } [ %.pn156.pn.pn.pn.pn, %475 ], [ %132, %131 ]
  call void @llvm.lifetime.end.p0(i64 56, ptr nonnull %16) #7
  call void @_ZN8QpVectorD2Ev(ptr noundef nonnull align 8 dereferenceable(56) %15) #7
  br label %477

477:                                              ; preds = %476, %129
  %.pn156.pn.pn.pn.pn.pn.pn = phi { ptr, i32 } [ %.pn156.pn.pn.pn.pn.pn, %476 ], [ %130, %129 ]
  call void @llvm.lifetime.end.p0(i64 56, ptr nonnull %15) #7
  call void @_ZN8QpVectorD2Ev(ptr noundef nonnull align 8 dereferenceable(56) %14) #7
  br label %478

478:                                              ; preds = %477, %127
  %.pn156.pn.pn.pn.pn.pn.pn.pn = phi { ptr, i32 } [ %.pn156.pn.pn.pn.pn.pn.pn, %477 ], [ %128, %127 ]
  call void @llvm.lifetime.end.p0(i64 56, ptr nonnull %14) #7
  call void @_ZN8QpVectorD2Ev(ptr noundef nonnull align 8 dereferenceable(56) %13) #7
  br label %479

479:                                              ; preds = %478, %125
  %.pn156.pn.pn.pn.pn.pn.pn.pn.pn = phi { ptr, i32 } [ %.pn156.pn.pn.pn.pn.pn.pn.pn, %478 ], [ %126, %125 ]
  call void @llvm.lifetime.end.p0(i64 56, ptr nonnull %13) #7
  call void @_ZN8QpVectorD2Ev(ptr noundef nonnull align 8 dereferenceable(56) %12) #7
  br label %480

480:                                              ; preds = %479, %123
  %.pn156.pn.pn.pn.pn.pn.pn.pn.pn.pn = phi { ptr, i32 } [ %.pn156.pn.pn.pn.pn.pn.pn.pn.pn, %479 ], [ %124, %123 ]
  call void @llvm.lifetime.end.p0(i64 56, ptr nonnull %12) #7
  call void @_ZN8QpVectorD2Ev(ptr noundef nonnull align 8 dereferenceable(56) %11) #7
  br label %481

481:                                              ; preds = %480, %121
  %.pn156.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn = phi { ptr, i32 } [ %.pn156.pn.pn.pn.pn.pn.pn.pn.pn.pn, %480 ], [ %122, %121 ]
  call void @llvm.lifetime.end.p0(i64 56, ptr nonnull %11) #7
  call void @_ZNSt10unique_ptrI7PricingSt14default_deleteIS0_EED2Ev(ptr noundef nonnull align 8 dereferenceable(8) %10) #7
  br label %482

482:                                              ; preds = %481, %119
  %.pn156.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn = phi { ptr, i32 } [ %.pn156.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn, %481 ], [ %120, %119 ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %10) #7
  br label %483

483:                                              ; preds = %482, %117
  %.pn156.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn = phi { ptr, i32 } [ %.pn156.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn, %482 ], [ %118, %117 ]
  call void @_ZN14CholeskyFactorD2Ev(ptr noundef nonnull align 8 dereferenceable(88) %9) #7
  br label %484

484:                                              ; preds = %483, %115
  %.pn156.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn = phi { ptr, i32 } [ %.pn156.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn, %483 ], [ %116, %115 ]
  call void @llvm.lifetime.end.p0(i64 88, ptr nonnull %9) #7
  call void @_ZN15ReducedGradientD2Ev(ptr noundef nonnull align 8 dereferenceable(80) %8) #7
  br label %485

485:                                              ; preds = %484, %113
  %.pn156.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn = phi { ptr, i32 } [ %.pn156.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn, %484 ], [ %114, %113 ]
  call void @llvm.lifetime.end.p0(i64 80, ptr nonnull %8) #7
  call void @_ZN12ReducedCostsD2Ev(ptr noundef nonnull align 8 dereferenceable(73) %7) #7
  br label %486

486:                                              ; preds = %485, %111
  %.pn156.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn = phi { ptr, i32 } [ %.pn156.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn, %485 ], [ %112, %111 ]
  call void @llvm.lifetime.end.p0(i64 80, ptr nonnull %7) #7
  call void @_ZN8GradientD2Ev(ptr noundef nonnull align 8 dereferenceable(72) %6) #7
  call void @llvm.lifetime.end.p0(i64 72, ptr nonnull %6) #7
  resume { ptr, i32 } %.pn156.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn
}

; Function Attrs: nounwind
declare i64 @_ZNSt6chrono3_V212system_clock3nowEv() local_unnamed_addr #2

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

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

; Function Attrs: mustprogress uwtable
declare dso_local void @_ZN12ReducedCostsC2ER7RuntimeR5BasisR8Gradient(ptr noundef nonnull align 8 dereferenceable(73), ptr noundef nonnull align 8 dereferenceable(2552), ptr noundef nonnull align 8 dereferenceable(2913), ptr noundef nonnull align 8 dereferenceable(72)) unnamed_addr #1 align 2

; Function Attrs: mustprogress uwtable
declare dso_local void @_ZN15ReducedGradientC2ER7RuntimeR5BasisR8Gradient(ptr noundef nonnull align 8 dereferenceable(80), ptr noundef nonnull align 8 dereferenceable(2552), ptr noundef nonnull align 8 dereferenceable(2913), ptr noundef nonnull align 8 dereferenceable(72)) unnamed_addr #1 align 2

; Function Attrs: mustprogress uwtable
declare dso_local void @_ZN14CholeskyFactorC2ER7RuntimeR5Basis(ptr noundef nonnull align 8 dereferenceable(88), ptr noundef nonnull align 8 dereferenceable(2552), ptr noundef nonnull align 8 dereferenceable(2913)) unnamed_addr #1 align 2

; Function Attrs: mustprogress uwtable
declare dso_local noundef nonnull align 8 dereferenceable(56) ptr @_ZN6Matrix7mat_vecERK8QpVectorRS0_(ptr noundef nonnull align 8 dereferenceable(168), ptr noundef nonnull align 8 dereferenceable(56), ptr noundef nonnull align 8 dereferenceable(56)) local_unnamed_addr #1 align 2

; Function Attrs: mustprogress uwtable
declare hidden void @_ZL10getPricingR7RuntimeR5BasisR12ReducedCosts(ptr dead_on_unwind noalias writable sret(%"class.std::unique_ptr.42") align 8, ptr noundef nonnull align 8 dereferenceable(2552), ptr noundef nonnull align 8 dereferenceable(2913), ptr noundef nonnull align 8 dereferenceable(73)) local_unnamed_addr #1

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

; Function Attrs: mustprogress nounwind uwtable
declare hidden void @_ZL10regularizeR7Runtime(ptr noundef nonnull align 8 dereferenceable(2552)) local_unnamed_addr #3

declare void @_Z24ratiotest_relax_instanceR7Runtime(ptr dead_on_unwind writable sret(%struct.Instance) align 8, ptr noundef nonnull align 8 dereferenceable(2552)) local_unnamed_addr #4

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

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

; Function Attrs: mustprogress nounwind uwtable
declare dso_local noundef i32 @_ZNK5Basis12getnumactiveEv(ptr noundef nonnull align 8 dereferenceable(2913)) local_unnamed_addr #3 align 2

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

; Function Attrs: mustprogress nounwind uwtable
declare dso_local noundef i32 @_ZNK5Basis14getnuminactiveEv(ptr noundef nonnull align 8 dereferenceable(2913)) local_unnamed_addr #3 align 2

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

; Function Attrs: mustprogress uwtable
declare hidden void @_ZL14loginformationR7RuntimeR5BasisR14CholeskyFactorR10HighsTimer(ptr noundef nonnull align 8 dereferenceable(2552), ptr noundef nonnull align 8 dereferenceable(2913), ptr noundef nonnull align 8 dereferenceable(88), ptr noundef nonnull align 8 dereferenceable(132)) local_unnamed_addr #1

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

; Function Attrs: mustprogress uwtable
declare hidden noundef zeroext i1 @_ZL18check_reinvert_dueR5Basis(ptr noundef nonnull align 8 dereferenceable(2913)) local_unnamed_addr #1

; Function Attrs: mustprogress uwtable
declare hidden void @_ZL8reinvertR5BasisR14CholeskyFactorR8GradientR12ReducedCostsR15ReducedGradientRSt10unique_ptrI7PricingSt14default_deleteISA_EE(ptr noundef nonnull align 8 dereferenceable(2913), ptr noundef nonnull align 8 dereferenceable(88), ptr noundef nonnull align 8 dereferenceable(72), ptr noundef nonnull align 8 dereferenceable(73), ptr noundef nonnull align 8 dereferenceable(80), ptr noundef nonnull align 8 dereferenceable(8)) local_unnamed_addr #1

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

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

; Function Attrs: mustprogress nounwind uwtable
declare dso_local noundef nonnull align 8 dereferenceable(24) ptr @_ZNK5Basis16getindexinfactorEv(ptr noundef nonnull align 8 dereferenceable(2913)) local_unnamed_addr #3 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 #3 align 2

; Function Attrs: mustprogress nounwind uwtable
declare dso_local noundef nonnull align 8 dereferenceable(56) ptr @_ZN8QpVector4unitEiiRS_(i32 noundef, i32 noundef, ptr noundef nonnull align 8 dereferenceable(56)) local_unnamed_addr #3 align 2

declare noundef nonnull align 8 dereferenceable(56) ptr @_ZN5Basis5btranERK8QpVectorRS0_bi(ptr noundef nonnull align 8 dereferenceable(2913), ptr noundef nonnull align 8 dereferenceable(56), ptr noundef nonnull align 8 dereferenceable(56), i1 noundef zeroext, i32 noundef) local_unnamed_addr #4

; Function Attrs: mustprogress uwtable
declare hidden noundef nonnull align 8 dereferenceable(56) ptr @_ZL28computesearchdirection_majorR7RuntimeR5BasisR14CholeskyFactorRK8QpVectorR8GradientRS5_SA_SA_SA_(ptr noundef nonnull align 8 dereferenceable(2552), ptr noundef nonnull align 8 dereferenceable(2913), ptr noundef nonnull align 8 dereferenceable(88), ptr noundef nonnull align 8 dereferenceable(56), ptr noundef nonnull align 8 dereferenceable(72), ptr noundef nonnull align 8 dereferenceable(56), ptr noundef nonnull align 8 dereferenceable(56), ptr noundef nonnull align 8 dereferenceable(56), ptr noundef nonnull align 8 dereferenceable(56)) local_unnamed_addr #1

declare void @_ZN5Basis10deactivateEi(ptr noundef nonnull align 8 dereferenceable(2913), i32 noundef) local_unnamed_addr #4

; Function Attrs: mustprogress uwtable
declare hidden void @_ZL14computerowmoveR7RuntimeR5BasisR8QpVectorS4_(ptr noundef nonnull align 8 dereferenceable(2552), ptr noundef nonnull align 8 dereferenceable(2913), ptr noundef nonnull align 8 dereferenceable(56), ptr noundef nonnull align 8 dereferenceable(56)) local_unnamed_addr #1

; Function Attrs: mustprogress uwtable
declare hidden void @_ZL6tidyupR8QpVectorS0_R5BasisR7Runtime(ptr noundef nonnull align 8 dereferenceable(56), ptr noundef nonnull align 8 dereferenceable(56), ptr noundef nonnull align 8 dereferenceable(2913), ptr noundef nonnull align 8 dereferenceable(2552)) local_unnamed_addr #1

; Function Attrs: mustprogress nounwind uwtable
declare dso_local noundef double @_ZNSt14numeric_limitsIdE8infinityEv() local_unnamed_addr #3 align 2

; Function Attrs: mustprogress uwtable
declare hidden noundef double @_ZL20computemaxsteplengthR7RuntimeRK8QpVectorR8GradientRS1_Rb(ptr noundef nonnull align 8 dereferenceable(2552), ptr noundef nonnull align 8 dereferenceable(56), ptr noundef nonnull align 8 dereferenceable(72), ptr noundef nonnull align 8 dereferenceable(56), ptr noundef nonnull align 1 dereferenceable(1)) local_unnamed_addr #1

; Function Attrs: mustprogress uwtable
declare dso_local noundef i32 @_ZN14CholeskyFactor6expandERK8QpVectorRS0_S3_S3_(ptr noundef nonnull align 8 dereferenceable(88), ptr noundef nonnull align 8 dereferenceable(56), ptr noundef nonnull align 8 dereferenceable(56), ptr noundef nonnull align 8 dereferenceable(56), ptr noundef nonnull align 8 dereferenceable(56)) local_unnamed_addr #1 align 2

; Function Attrs: mustprogress uwtable
declare dso_local void @_ZN15ReducedGradient6expandERK8QpVector(ptr noundef nonnull align 8 dereferenceable(80), ptr noundef nonnull align 8 dereferenceable(56)) local_unnamed_addr #1 align 2

; Function Attrs: mustprogress uwtable
declare hidden noundef nonnull align 8 dereferenceable(56) ptr @_ZL28computesearchdirection_minorR7RuntimeR5BasisR14CholeskyFactorR15ReducedGradientR8QpVector(ptr noundef nonnull align 8 dereferenceable(2552), ptr noundef nonnull align 8 dereferenceable(2913), ptr noundef nonnull align 8 dereferenceable(88), ptr noundef nonnull align 8 dereferenceable(80), ptr noundef nonnull align 8 dereferenceable(56)) local_unnamed_addr #1

; Function Attrs: mustprogress nounwind uwtable
declare dso_local noundef double @_ZN8QpVector5norm2Ev(ptr noundef nonnull align 8 dereferenceable(56)) local_unnamed_addr #3 align 2

declare { double, i64 } @_Z9ratiotestR7RuntimeRK8QpVectorS3_d(ptr noundef nonnull align 8 dereferenceable(2552), ptr noundef nonnull align 8 dereferenceable(56), ptr noundef nonnull align 8 dereferenceable(56), double noundef) local_unnamed_addr #4

; Function Attrs: mustprogress uwtable
declare hidden noundef i32 @_ZL6reduceR7RuntimeR5BasisiR8QpVectorRiS5_(ptr noundef nonnull align 8 dereferenceable(2552), ptr noundef nonnull align 8 dereferenceable(2913), i32 noundef, ptr noundef nonnull align 8 dereferenceable(56), ptr noundef nonnull align 4 dereferenceable(4), ptr noundef nonnull align 4 dereferenceable(4)) local_unnamed_addr #1

; Function Attrs: mustprogress uwtable
declare dso_local void @_ZN14CholeskyFactor6reduceERK8QpVectorib(ptr noundef nonnull align 8 dereferenceable(88), ptr noundef nonnull align 8 dereferenceable(56), i32 noundef, i1 noundef zeroext) local_unnamed_addr #1 align 2

; Function Attrs: mustprogress uwtable
declare dso_local noundef i32 @_Z7indexofIiEiRKSt6vectorIT_SaIS1_EERKS1_(ptr noundef nonnull align 8 dereferenceable(24), ptr noundef nonnull align 4 dereferenceable(4)) local_unnamed_addr #1

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

; Function Attrs: mustprogress uwtable
declare dso_local void @_ZN15ReducedGradient6reduceERK8QpVectori(ptr noundef nonnull align 8 dereferenceable(80), ptr noundef nonnull align 8 dereferenceable(56), i32 noundef) local_unnamed_addr #1 align 2

; Function Attrs: mustprogress nounwind uwtable
declare dso_local void @_ZN15ReducedGradient6updateEdb(ptr noundef nonnull align 8 dereferenceable(80), double noundef, i1 noundef zeroext) local_unnamed_addr #3 align 2

declare noundef i32 @_ZN5Basis8activateERK8Settingsi11BasisStatusiP7Pricing(ptr noundef nonnull align 8 dereferenceable(2913), ptr noundef nonnull align 8 dereferenceable(211), i32 noundef, i32 noundef, i32 noundef, ptr noundef) local_unnamed_addr #4

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

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

; Function Attrs: mustprogress uwtable
declare dso_local void @_ZN8Gradient6updateER8QpVectord(ptr noundef nonnull align 8 dereferenceable(72), ptr noundef nonnull align 8 dereferenceable(56), double noundef) local_unnamed_addr #1 align 2

; Function Attrs: mustprogress nounwind uwtable
declare dso_local void @_ZN12ReducedCosts6updateEv(ptr noundef nonnull align 8 dereferenceable(73)) local_unnamed_addr #3 align 2

; Function Attrs: mustprogress nounwind uwtable
declare dso_local { double, i32 } @_ZN8Instance27sumnumprimalinfeasibilitiesERK8QpVectorS2_(ptr noundef nonnull align 8 dereferenceable(512), ptr noundef nonnull align 8 dereferenceable(56), ptr noundef nonnull align 8 dereferenceable(56)) local_unnamed_addr #3 align 2

; Function Attrs: mustprogress uwtable
declare dso_local void @_ZN6Matrix7mat_vecERK8QpVector(ptr dead_on_unwind noalias writable sret(%struct.QpVector) align 8, ptr noundef nonnull align 8 dereferenceable(168), ptr noundef nonnull align 8 dereferenceable(56)) local_unnamed_addr #1 align 2

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

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

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

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

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

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

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

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

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

; Function Attrs: mustprogress nounwind uwtable
declare dso_local void @_ZN8QpVector10resparsifyEv(ptr noundef nonnull align 8 dereferenceable(56)) local_unnamed_addr #3 align 2

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

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

declare void @_ZN5Basis10recomputexERK8Instance(ptr dead_on_unwind writable sret(%struct.QpVector) align 8, ptr noundef nonnull align 8 dereferenceable(2913), ptr noundef nonnull align 8 dereferenceable(512)) local_unnamed_addr #4

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

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

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

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

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

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

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

!0 = !{i32 1, !"wchar_size", i32 4}
!1 = !{i32 8, !"PIC Level", i32 2}
!2 = !{i32 7, !"PIE Level", i32 2}
!3 = !{i32 7, !"uwtable", i32 2}
!4 = !{!"clang version 19.1.0 (git@github.com:llvm/llvm-project.git a4bf6cd7cfb1a1421ba92bca9d017b49936c55e4)"}
!5 = !{!6, !7, i64 0}
!6 = !{!"_ZTS5Quass", !7, i64 0}
!7 = !{!"any pointer", !8, i64 0}
!8 = !{!"omnipotent char", !9, i64 0}
!9 = !{!"Simple C++ TBAA"}
!10 = !{!11, !7, i64 2264}
!11 = !{!"_ZTS7Runtime", !12, i64 0, !12, i64 512, !12, i64 1024, !12, i64 1536, !27, i64 2048, !7, i64 2264, !15, i64 2272, !15, i64 2328, !15, i64 2384, !15, i64 2440, !46, i64 2496, !47, i64 2504, !47, i64 2528}
!12 = !{!"_ZTS8Instance", !13, i64 0, !13, i64 4, !13, i64 8, !14, i64 16, !15, i64 24, !24, i64 80, !20, i64 248, !20, i64 272, !24, i64 296, !20, i64 464, !20, i64 488}
!13 = !{!"int", !8, i64 0}
!14 = !{!"double", !8, i64 0}
!15 = !{!"_ZTS8QpVector", !13, i64 0, !13, i64 4, !16, i64 8, !20, i64 32}
!16 = !{!"_ZTSSt6vectorIiSaIiEE", !17, i64 0}
!17 = !{!"_ZTSSt12_Vector_baseIiSaIiEE", !18, i64 0}
!18 = !{!"_ZTSNSt12_Vector_baseIiSaIiEE12_Vector_implE", !19, i64 0}
!19 = !{!"_ZTSNSt12_Vector_baseIiSaIiEE17_Vector_impl_dataE", !7, i64 0, !7, i64 8, !7, i64 16}
!20 = !{!"_ZTSSt6vectorIdSaIdEE", !21, i64 0}
!21 = !{!"_ZTSSt12_Vector_baseIdSaIdEE", !22, i64 0}
!22 = !{!"_ZTSNSt12_Vector_baseIdSaIdEE12_Vector_implE", !23, i64 0}
!23 = !{!"_ZTSNSt12_Vector_baseIdSaIdEE17_Vector_impl_dataE", !7, i64 0, !7, i64 8, !7, i64 16}
!24 = !{!"_ZTS6Matrix", !25, i64 0, !26, i64 80, !25, i64 88}
!25 = !{!"_ZTS10MatrixBase", !13, i64 0, !13, i64 4, !16, i64 8, !16, i64 32, !20, i64 56}
!26 = !{!"bool", !8, i64 0}
!27 = !{!"_ZTS8Settings", !28, i64 0, !14, i64 8, !14, i64 16, !29, i64 24, !14, i64 32, !14, i64 40, !14, i64 48, !14, i64 56, !14, i64 64, !26, i64 72, !14, i64 80, !30, i64 88, !26, i64 92, !26, i64 93, !13, i64 96, !31, i64 104, !36, i64 128, !41, i64 152, !13, i64 176, !13, i64 180, !13, i64 184, !13, i64 188, !13, i64 192, !13, i64 196, !14, i64 200, !26, i64 208, !26, i64 209, !26, i64 210}
!28 = !{!"_ZTS17RatiotestStrategy", !8, i64 0}
!29 = !{!"_ZTS15PricingStrategy", !8, i64 0}
!30 = !{!"_ZTS14Phase1Strategy", !8, i64 0}
!31 = !{!"_ZTS12EventhandlerIR10StatisticsE", !32, i64 0}
!32 = !{!"_ZTSSt6vectorISt8functionIFvR10StatisticsEESaIS4_EE", !33, i64 0}
!33 = !{!"_ZTSSt12_Vector_baseISt8functionIFvR10StatisticsEESaIS4_EE", !34, i64 0}
!34 = !{!"_ZTSNSt12_Vector_baseISt8functionIFvR10StatisticsEESaIS4_EE12_Vector_implE", !35, i64 0}
!35 = !{!"_ZTSNSt12_Vector_baseISt8functionIFvR10StatisticsEESaIS4_EE17_Vector_impl_dataE", !7, i64 0, !7, i64 8, !7, i64 16}
!36 = !{!"_ZTS12EventhandlerIR13QpModelStatusE", !37, i64 0}
!37 = !{!"_ZTSSt6vectorISt8functionIFvR13QpModelStatusEESaIS4_EE", !38, i64 0}
!38 = !{!"_ZTSSt12_Vector_baseISt8functionIFvR13QpModelStatusEESaIS4_EE", !39, i64 0}
!39 = !{!"_ZTSNSt12_Vector_baseISt8functionIFvR13QpModelStatusEESaIS4_EE12_Vector_implE", !40, i64 0}
!40 = !{!"_ZTSNSt12_Vector_baseISt8functionIFvR13QpModelStatusEESaIS4_EE17_Vector_impl_dataE", !7, i64 0, !7, i64 8, !7, i64 16}
!41 = !{!"_ZTS12EventhandlerIRiE", !42, i64 0}
!42 = !{!"_ZTSSt6vectorISt8functionIFvRiEESaIS3_EE", !43, i64 0}
!43 = !{!"_ZTSSt12_Vector_baseISt8functionIFvRiEESaIS3_EE", !44, i64 0}
!44 = !{!"_ZTSNSt12_Vector_baseISt8functionIFvRiEESaIS3_EE12_Vector_implE", !45, i64 0}
!45 = !{!"_ZTSNSt12_Vector_baseISt8functionIFvRiEESaIS3_EE17_Vector_impl_dataE", !7, i64 0, !7, i64 8, !7, i64 16}
!46 = !{!"_ZTS13QpModelStatus", !8, i64 0}
!47 = !{!"_ZTSSt6vectorI11BasisStatusSaIS0_EE", !48, i64 0}
!48 = !{!"_ZTSSt12_Vector_baseI11BasisStatusSaIS0_EE", !49, i64 0}
!49 = !{!"_ZTSNSt12_Vector_baseI11BasisStatusSaIS0_EE12_Vector_implE", !50, i64 0}
!50 = !{!"_ZTSNSt12_Vector_baseI11BasisStatusSaIS0_EE17_Vector_impl_dataE", !7, i64 0, !7, i64 8, !7, i64 16}
!51 = !{!52, !52, i64 0}
!52 = !{!"long", !8, i64 0}
!53 = !{!11, !13, i64 4}
!54 = !{!11, !13, i64 8}
!55 = !{!56, !13, i64 4}
!56 = !{!"_ZTS10Statistics", !13, i64 0, !13, i64 4, !57, i64 8, !57, i64 16, !16, i64 24, !16, i64 48, !20, i64 72, !20, i64 96, !20, i64 120, !16, i64 144, !20, i64 168, !20, i64 192}
!57 = !{!"_ZTSNSt6chrono10time_pointINS_3_V212system_clockENS_8durationIlSt5ratioILl1ELl1000000000EEEEEE", !58, i64 0}
!58 = !{!"_ZTSNSt6chrono8durationIlSt5ratioILl1ELl1000000000EEEE", !52, i64 0}
!59 = !{!11, !13, i64 2244}
!60 = !{!11, !46, i64 2496}
!61 = !{!11, !14, i64 2248}
!62 = !{!11, !13, i64 2224}
!63 = !{!11, !13, i64 2144}
!64 = !{!26, !26, i64 0}
!65 = !{!66, !66, i64 0}
!66 = !{!"vtable pointer", !9, i64 0}
!67 = !{!13, !13, i64 0}
!68 = !{!15, !13, i64 4}
!69 = !{i8 0, i8 2}
!70 = !{}
!71 = !{!11, !14, i64 2080}
!72 = !{!73, !14, i64 0}
!73 = !{!"_ZTS15RatiotestResult", !14, i64 0, !13, i64 8, !26, i64 12}
!74 = !{!73, !13, i64 8}
!75 = !{!73, !26, i64 12}
!76 = !{!14, !14, i64 0}
!77 = !{!78, !78, i64 0}
!78 = !{!"_ZTS11BasisStatus", !8, i64 0}
!79 = distinct !{!79, !80}
!80 = !{!"llvm.loop.mustprogress"}
!81 = distinct !{!81, !80}


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