; LLVM IR from ERGO-Code/HiGHS :: src/qpsolver (a_asm)

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

%"class.std::vector.47" = type { %"struct.std::_Vector_base.48" }
%"struct.std::_Vector_base.48" = type { %"struct.std::_Vector_base<HighsCDouble, std::allocator<HighsCDouble>>::_Vector_impl" }
%"struct.std::_Vector_base<HighsCDouble, std::allocator<HighsCDouble>>::_Vector_impl" = type { %"struct.std::_Vector_base<HighsCDouble, std::allocator<HighsCDouble>>::_Vector_impl_data" }
%"struct.std::_Vector_base<HighsCDouble, std::allocator<HighsCDouble>>::_Vector_impl_data" = type { ptr, ptr, ptr }
%class.HighsCDouble = type { double, double }
%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.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 }
%struct.Matrix = type { %struct.MatrixBase, i8, %struct.MatrixBase }
%struct.MatrixBase = type { i32, i32, %"class.std::vector", %"class.std::vector", %"class.std::vector.3" }
%"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 }

; 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 @_Z25assessQpPrimalFeasibilityRK8InstancedRKSt6vectorIdSaIdEES6_RiRdS8_S7_S8_S8_S8_S8_(ptr noundef nonnull align 8 dereferenceable(512) %0, double noundef %1, ptr noundef nonnull align 8 dereferenceable(24) %2, ptr noundef nonnull align 8 dereferenceable(24) %3, ptr noundef nonnull align 4 dereferenceable(4) %4, ptr noundef nonnull align 8 dereferenceable(8) %5, ptr noundef nonnull align 8 dereferenceable(8) %6, ptr noundef nonnull align 4 dereferenceable(4) %7, ptr noundef nonnull align 8 dereferenceable(8) %8, ptr noundef nonnull align 8 dereferenceable(8) %9, ptr noundef nonnull align 8 dereferenceable(8) %10, ptr noundef nonnull align 8 dereferenceable(8) %11) #1 personality ptr @__gxx_personality_v0 {
  %13 = alloca ptr, align 8
  %14 = alloca double, align 8
  %15 = alloca ptr, align 8
  %16 = alloca ptr, align 8
  %17 = alloca ptr, align 8
  %18 = alloca ptr, align 8
  %19 = alloca ptr, align 8
  %20 = alloca ptr, align 8
  %21 = alloca ptr, align 8
  %22 = alloca ptr, align 8
  %23 = alloca ptr, align 8
  %24 = alloca ptr, align 8
  %25 = alloca %"class.std::vector.47", align 8
  %26 = alloca %class.HighsCDouble, align 8
  %27 = alloca ptr, align 8
  %28 = alloca i32, align 4
  %29 = alloca i32, align 4
  %30 = alloca i32, align 4
  %31 = alloca double, align 8
  %32 = alloca double, align 8
  %33 = alloca double, align 8
  %34 = alloca double, align 8
  %35 = alloca i32, align 4
  %36 = alloca i32, align 4
  %37 = alloca double, align 8
  %38 = alloca double, align 8
  %39 = alloca double, align 8
  %40 = alloca double, align 8
  %41 = alloca double, align 8
  store ptr %0, ptr %13, align 8, !tbaa !5
  store double %1, ptr %14, align 8, !tbaa !9
  store ptr %2, ptr %15, align 8, !tbaa !5
  store ptr %3, ptr %16, align 8, !tbaa !5
  store ptr %4, ptr %17, align 8, !tbaa !5
  store ptr %5, ptr %18, align 8, !tbaa !5
  store ptr %6, ptr %19, align 8, !tbaa !5
  store ptr %7, ptr %20, align 8, !tbaa !5
  store ptr %8, ptr %21, align 8, !tbaa !5
  store ptr %9, ptr %22, align 8, !tbaa !5
  store ptr %10, ptr %23, align 8, !tbaa !5
  store ptr %11, ptr %24, align 8, !tbaa !5
  %42 = load ptr, ptr %17, align 8, !tbaa !5
  store i32 0, ptr %42, align 4, !tbaa !11
  %43 = load ptr, ptr %18, align 8, !tbaa !5
  store double 0.000000e+00, ptr %43, align 8, !tbaa !9
  %44 = load ptr, ptr %19, align 8, !tbaa !5
  store double 0.000000e+00, ptr %44, align 8, !tbaa !9
  %45 = load ptr, ptr %20, align 8, !tbaa !5
  store i32 0, ptr %45, align 4, !tbaa !11
  %46 = load ptr, ptr %21, align 8, !tbaa !5
  store double 0.000000e+00, ptr %46, align 8, !tbaa !9
  %47 = load ptr, ptr %22, align 8, !tbaa !5
  store double 0.000000e+00, ptr %47, align 8, !tbaa !9
  %48 = load ptr, ptr %23, align 8, !tbaa !5
  store double 0.000000e+00, ptr %48, align 8, !tbaa !9
  %49 = load ptr, ptr %24, align 8, !tbaa !5
  store double 0.000000e+00, ptr %49, align 8, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 24, ptr %25) #5
  call void @_ZNSt6vectorI12HighsCDoubleSaIS0_EEC2Ev(ptr noundef nonnull align 8 dereferenceable(24) %25) #5
  %50 = load ptr, ptr %13, align 8, !tbaa !5
  %51 = getelementptr inbounds %struct.Instance, ptr %50, i32 0, i32 2
  %52 = load i32, ptr %51, align 8, !tbaa !13
  %53 = sext i32 %52 to i64
  call void @llvm.lifetime.start.p0(i64 16, ptr %26) #5
  invoke void @_ZN12HighsCDoubleC2Ed(ptr noundef nonnull align 8 dereferenceable(16) %26, double noundef 0.000000e+00)
          to label %54 unwind label %63

54:                                               ; preds = %12
  invoke void @_ZNSt6vectorI12HighsCDoubleSaIS0_EE6assignEmRKS0_(ptr noundef nonnull align 8 dereferenceable(24) %25, i64 noundef %53, ptr noundef nonnull align 8 dereferenceable(16) %26)
          to label %55 unwind label %63

55:                                               ; preds = %54
  call void @llvm.lifetime.end.p0(i64 16, ptr %26) #5
  call void @llvm.lifetime.start.p0(i64 4, ptr %29) #5
  store i32 0, ptr %29, align 4, !tbaa !11
  br label %56

56:                                               ; preds = %183, %55
  %57 = load i32, ptr %29, align 4, !tbaa !11
  %58 = load ptr, ptr %13, align 8, !tbaa !5
  %59 = getelementptr inbounds %struct.Instance, ptr %58, i32 0, i32 1
  %60 = load i32, ptr %59, align 4, !tbaa !27
  %61 = icmp slt i32 %57, %60
  br i1 %61, label %67, label %62

62:                                               ; preds = %56
  store i32 2, ptr %30, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %29) #5
  br label %187

63:                                               ; preds = %54, %12
  %64 = landingpad { ptr, i32 }
          cleanup
  %65 = extractvalue { ptr, i32 } %64, 0
  store ptr %65, ptr %27, align 8
  %66 = extractvalue { ptr, i32 } %64, 1
  store i32 %66, ptr %28, align 4
  call void @llvm.lifetime.end.p0(i64 16, ptr %26) #5
  br label %285

67:                                               ; preds = %56
  call void @llvm.lifetime.start.p0(i64 8, ptr %31) #5
  %68 = load ptr, ptr %13, align 8, !tbaa !5
  %69 = getelementptr inbounds %struct.Instance, ptr %68, i32 0, i32 9
  %70 = load i32, ptr %29, align 4, !tbaa !11
  %71 = sext i32 %70 to i64
  %72 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNKSt6vectorIdSaIdEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %69, i64 noundef %71) #5
  %73 = load double, ptr %72, align 8, !tbaa !9
  store double %73, ptr %31, align 8, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 8, ptr %32) #5
  %74 = load ptr, ptr %13, align 8, !tbaa !5
  %75 = getelementptr inbounds %struct.Instance, ptr %74, i32 0, i32 10
  %76 = load i32, ptr %29, align 4, !tbaa !11
  %77 = sext i32 %76 to i64
  %78 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNKSt6vectorIdSaIdEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %75, i64 noundef %77) #5
  %79 = load double, ptr %78, align 8, !tbaa !9
  store double %79, ptr %32, align 8, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 8, ptr %33) #5
  %80 = load ptr, ptr %15, align 8, !tbaa !5
  %81 = load i32, ptr %29, align 4, !tbaa !11
  %82 = sext i32 %81 to i64
  %83 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNKSt6vectorIdSaIdEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %80, i64 noundef %82) #5
  %84 = load double, ptr %83, align 8, !tbaa !9
  store double %84, ptr %33, align 8, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 8, ptr %34) #5
  store double 0.000000e+00, ptr %34, align 8, !tbaa !9
  %85 = load double, ptr %33, align 8, !tbaa !9
  %86 = load double, ptr %31, align 8, !tbaa !9
  %87 = load double, ptr %14, align 8, !tbaa !9
  %88 = fsub double %86, %87
  %89 = fcmp olt double %85, %88
  br i1 %89, label %90, label %94

90:                                               ; preds = %67
  %91 = load double, ptr %31, align 8, !tbaa !9
  %92 = load double, ptr %33, align 8, !tbaa !9
  %93 = fsub double %91, %92
  store double %93, ptr %34, align 8, !tbaa !9
  br label %105

94:                                               ; preds = %67
  %95 = load double, ptr %33, align 8, !tbaa !9
  %96 = load double, ptr %32, align 8, !tbaa !9
  %97 = load double, ptr %14, align 8, !tbaa !9
  %98 = fadd double %96, %97
  %99 = fcmp ogt double %95, %98
  br i1 %99, label %100, label %104

100:                                              ; preds = %94
  %101 = load double, ptr %33, align 8, !tbaa !9
  %102 = load double, ptr %32, align 8, !tbaa !9
  %103 = fsub double %101, %102
  store double %103, ptr %34, align 8, !tbaa !9
  br label %104

104:                                              ; preds = %100, %94
  br label %105

105:                                              ; preds = %104, %90
  %106 = load double, ptr %34, align 8, !tbaa !9
  %107 = fcmp ogt double %106, 0.000000e+00
  br i1 %107, label %108, label %130

108:                                              ; preds = %105
  %109 = load double, ptr %34, align 8, !tbaa !9
  %110 = load double, ptr %14, align 8, !tbaa !9
  %111 = fcmp ogt double %109, %110
  br i1 %111, label %112, label %116

112:                                              ; preds = %108
  %113 = load ptr, ptr %17, align 8, !tbaa !5
  %114 = load i32, ptr %113, align 4, !tbaa !11
  %115 = add nsw i32 %114, 1
  store i32 %115, ptr %113, align 4, !tbaa !11
  br label %116

116:                                              ; preds = %112, %108
  %117 = load ptr, ptr %18, align 8, !tbaa !5
  %118 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZSt3maxIdERKT_S2_S2_(ptr noundef nonnull align 8 dereferenceable(8) %34, ptr noundef nonnull align 8 dereferenceable(8) %117)
          to label %119 unwind label %126

119:                                              ; preds = %116
  %120 = load double, ptr %118, align 8, !tbaa !9
  %121 = load ptr, ptr %18, align 8, !tbaa !5
  store double %120, ptr %121, align 8, !tbaa !9
  %122 = load double, ptr %34, align 8, !tbaa !9
  %123 = load ptr, ptr %19, align 8, !tbaa !5
  %124 = load double, ptr %123, align 8, !tbaa !9
  %125 = fadd double %124, %122
  store double %125, ptr %123, align 8, !tbaa !9
  br label %130

126:                                              ; preds = %116
  %127 = landingpad { ptr, i32 }
          cleanup
  %128 = extractvalue { ptr, i32 } %127, 0
  store ptr %128, ptr %27, align 8
  %129 = extractvalue { ptr, i32 } %127, 1
  store i32 %129, ptr %28, align 4
  br label %186

130:                                              ; preds = %119, %105
  call void @llvm.lifetime.start.p0(i64 4, ptr %35) #5
  %131 = load ptr, ptr %13, align 8, !tbaa !5
  %132 = getelementptr inbounds %struct.Instance, ptr %131, i32 0, i32 8
  %133 = getelementptr inbounds %struct.Matrix, ptr %132, i32 0, i32 2
  %134 = getelementptr inbounds %struct.MatrixBase, ptr %133, i32 0, i32 2
  %135 = load i32, ptr %29, align 4, !tbaa !11
  %136 = sext i32 %135 to i64
  %137 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNKSt6vectorIiSaIiEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %134, i64 noundef %136) #5
  %138 = load i32, ptr %137, align 4, !tbaa !11
  store i32 %138, ptr %35, align 4, !tbaa !11
  br label %139

139:                                              ; preds = %175, %130
  %140 = load i32, ptr %35, align 4, !tbaa !11
  %141 = load ptr, ptr %13, align 8, !tbaa !5
  %142 = getelementptr inbounds %struct.Instance, ptr %141, i32 0, i32 8
  %143 = getelementptr inbounds %struct.Matrix, ptr %142, i32 0, i32 2
  %144 = getelementptr inbounds %struct.MatrixBase, ptr %143, i32 0, i32 2
  %145 = load i32, ptr %29, align 4, !tbaa !11
  %146 = add nsw i32 %145, 1
  %147 = sext i32 %146 to i64
  %148 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNKSt6vectorIiSaIiEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %144, i64 noundef %147) #5
  %149 = load i32, ptr %148, align 4, !tbaa !11
  %150 = icmp slt i32 %140, %149
  br i1 %150, label %152, label %151

151:                                              ; preds = %139
  store i32 5, ptr %30, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %35) #5
  br label %182

152:                                              ; preds = %139
  %153 = load double, ptr %33, align 8, !tbaa !9
  %154 = load ptr, ptr %13, align 8, !tbaa !5
  %155 = getelementptr inbounds %struct.Instance, ptr %154, i32 0, i32 8
  %156 = getelementptr inbounds %struct.Matrix, ptr %155, i32 0, i32 2
  %157 = getelementptr inbounds %struct.MatrixBase, ptr %156, i32 0, i32 4
  %158 = load i32, ptr %35, align 4, !tbaa !11
  %159 = sext i32 %158 to i64
  %160 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNKSt6vectorIdSaIdEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %157, i64 noundef %159) #5
  %161 = load double, ptr %160, align 8, !tbaa !9
  %162 = fmul double %153, %161
  %163 = load ptr, ptr %13, align 8, !tbaa !5
  %164 = getelementptr inbounds %struct.Instance, ptr %163, i32 0, i32 8
  %165 = getelementptr inbounds %struct.Matrix, ptr %164, i32 0, i32 2
  %166 = getelementptr inbounds %struct.MatrixBase, ptr %165, i32 0, i32 3
  %167 = load i32, ptr %35, align 4, !tbaa !11
  %168 = sext i32 %167 to i64
  %169 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNKSt6vectorIiSaIiEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %166, i64 noundef %168) #5
  %170 = load i32, ptr %169, align 4, !tbaa !11
  %171 = sext i32 %170 to i64
  %172 = call noundef nonnull align 8 dereferenceable(16) ptr @_ZNSt6vectorI12HighsCDoubleSaIS0_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %25, i64 noundef %171) #5
  %173 = invoke noundef nonnull align 8 dereferenceable(16) ptr @_ZN12HighsCDoublepLEd(ptr noundef nonnull align 8 dereferenceable(16) %172, double noundef %162)
          to label %174 unwind label %178

174:                                              ; preds = %152
  br label %175

175:                                              ; preds = %174
  %176 = load i32, ptr %35, align 4, !tbaa !11
  %177 = add nsw i32 %176, 1
  store i32 %177, ptr %35, align 4, !tbaa !11
  br label %139, !llvm.loop !28

178:                                              ; preds = %152
  %179 = landingpad { ptr, i32 }
          cleanup
  %180 = extractvalue { ptr, i32 } %179, 0
  store ptr %180, ptr %27, align 8
  %181 = extractvalue { ptr, i32 } %179, 1
  store i32 %181, ptr %28, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %35) #5
  br label %186

182:                                              ; preds = %151
  call void @llvm.lifetime.end.p0(i64 8, ptr %34) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %33) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %32) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %31) #5
  br label %183

183:                                              ; preds = %182
  %184 = load i32, ptr %29, align 4, !tbaa !11
  %185 = add nsw i32 %184, 1
  store i32 %185, ptr %29, align 4, !tbaa !11
  br label %56, !llvm.loop !30

186:                                              ; preds = %178, %126
  call void @llvm.lifetime.end.p0(i64 8, ptr %34) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %33) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %32) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %31) #5
  call void @llvm.lifetime.end.p0(i64 4, ptr %29) #5
  br label %285

187:                                              ; preds = %62
  call void @llvm.lifetime.start.p0(i64 4, ptr %36) #5
  store i32 0, ptr %36, align 4, !tbaa !11
  br label %188

188:                                              ; preds = %276, %187
  %189 = load i32, ptr %36, align 4, !tbaa !11
  %190 = load ptr, ptr %13, align 8, !tbaa !5
  %191 = getelementptr inbounds %struct.Instance, ptr %190, i32 0, i32 2
  %192 = load i32, ptr %191, align 8, !tbaa !13
  %193 = icmp slt i32 %189, %192
  br i1 %193, label %195, label %194

194:                                              ; preds = %188
  store i32 8, ptr %30, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %36) #5
  br label %284

195:                                              ; preds = %188
  call void @llvm.lifetime.start.p0(i64 8, ptr %37) #5
  %196 = load ptr, ptr %13, align 8, !tbaa !5
  %197 = getelementptr inbounds %struct.Instance, ptr %196, i32 0, i32 6
  %198 = load i32, ptr %36, align 4, !tbaa !11
  %199 = sext i32 %198 to i64
  %200 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNKSt6vectorIdSaIdEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %197, i64 noundef %199) #5
  %201 = load double, ptr %200, align 8, !tbaa !9
  store double %201, ptr %37, align 8, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 8, ptr %38) #5
  %202 = load ptr, ptr %13, align 8, !tbaa !5
  %203 = getelementptr inbounds %struct.Instance, ptr %202, i32 0, i32 7
  %204 = load i32, ptr %36, align 4, !tbaa !11
  %205 = sext i32 %204 to i64
  %206 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNKSt6vectorIdSaIdEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %203, i64 noundef %205) #5
  %207 = load double, ptr %206, align 8, !tbaa !9
  store double %207, ptr %38, align 8, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 8, ptr %39) #5
  %208 = load ptr, ptr %16, align 8, !tbaa !5
  %209 = load i32, ptr %36, align 4, !tbaa !11
  %210 = sext i32 %209 to i64
  %211 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNKSt6vectorIdSaIdEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %208, i64 noundef %210) #5
  %212 = load double, ptr %211, align 8, !tbaa !9
  store double %212, ptr %39, align 8, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 8, ptr %40) #5
  store double 0.000000e+00, ptr %40, align 8, !tbaa !9
  %213 = load double, ptr %39, align 8, !tbaa !9
  %214 = load double, ptr %37, align 8, !tbaa !9
  %215 = load double, ptr %14, align 8, !tbaa !9
  %216 = fsub double %214, %215
  %217 = fcmp olt double %213, %216
  br i1 %217, label %218, label %222

218:                                              ; preds = %195
  %219 = load double, ptr %37, align 8, !tbaa !9
  %220 = load double, ptr %39, align 8, !tbaa !9
  %221 = fsub double %219, %220
  store double %221, ptr %40, align 8, !tbaa !9
  br label %233

222:                                              ; preds = %195
  %223 = load double, ptr %39, align 8, !tbaa !9
  %224 = load double, ptr %38, align 8, !tbaa !9
  %225 = load double, ptr %14, align 8, !tbaa !9
  %226 = fadd double %224, %225
  %227 = fcmp ogt double %223, %226
  br i1 %227, label %228, label %232

228:                                              ; preds = %222
  %229 = load double, ptr %39, align 8, !tbaa !9
  %230 = load double, ptr %38, align 8, !tbaa !9
  %231 = fsub double %229, %230
  store double %231, ptr %40, align 8, !tbaa !9
  br label %232

232:                                              ; preds = %228, %222
  br label %233

233:                                              ; preds = %232, %218
  %234 = load double, ptr %40, align 8, !tbaa !9
  %235 = fcmp ogt double %234, 0.000000e+00
  br i1 %235, label %236, label %258

236:                                              ; preds = %233
  %237 = load double, ptr %40, align 8, !tbaa !9
  %238 = load double, ptr %14, align 8, !tbaa !9
  %239 = fcmp ogt double %237, %238
  br i1 %239, label %240, label %244

240:                                              ; preds = %236
  %241 = load ptr, ptr %20, align 8, !tbaa !5
  %242 = load i32, ptr %241, align 4, !tbaa !11
  %243 = add nsw i32 %242, 1
  store i32 %243, ptr %241, align 4, !tbaa !11
  br label %244

244:                                              ; preds = %240, %236
  %245 = load ptr, ptr %21, align 8, !tbaa !5
  %246 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZSt3maxIdERKT_S2_S2_(ptr noundef nonnull align 8 dereferenceable(8) %40, ptr noundef nonnull align 8 dereferenceable(8) %245)
          to label %247 unwind label %254

247:                                              ; preds = %244
  %248 = load double, ptr %246, align 8, !tbaa !9
  %249 = load ptr, ptr %21, align 8, !tbaa !5
  store double %248, ptr %249, align 8, !tbaa !9
  %250 = load double, ptr %40, align 8, !tbaa !9
  %251 = load ptr, ptr %22, align 8, !tbaa !5
  %252 = load double, ptr %251, align 8, !tbaa !9
  %253 = fadd double %252, %250
  store double %253, ptr %251, align 8, !tbaa !9
  br label %258

254:                                              ; preds = %244
  %255 = landingpad { ptr, i32 }
          cleanup
  %256 = extractvalue { ptr, i32 } %255, 0
  store ptr %256, ptr %27, align 8
  %257 = extractvalue { ptr, i32 } %255, 1
  store i32 %257, ptr %28, align 4
  br label %283

258:                                              ; preds = %247, %233
  call void @llvm.lifetime.start.p0(i64 8, ptr %41) #5
  %259 = load double, ptr %39, align 8, !tbaa !9
  %260 = load i32, ptr %36, align 4, !tbaa !11
  %261 = sext i32 %260 to i64
  %262 = call noundef nonnull align 8 dereferenceable(16) ptr @_ZNSt6vectorI12HighsCDoubleSaIS0_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %25, i64 noundef %261) #5
  %263 = invoke noundef double @_ZNK12HighsCDoublecvdEv(ptr noundef nonnull align 8 dereferenceable(16) %262)
          to label %264 unwind label %279

264:                                              ; preds = %258
  %265 = fsub double %259, %263
  %266 = call double @llvm.fabs.f64(double %265)
  store double %266, ptr %41, align 8, !tbaa !9
  %267 = load ptr, ptr %23, align 8, !tbaa !5
  %268 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZSt3maxIdERKT_S2_S2_(ptr noundef nonnull align 8 dereferenceable(8) %41, ptr noundef nonnull align 8 dereferenceable(8) %267)
          to label %269 unwind label %279

269:                                              ; preds = %264
  %270 = load double, ptr %268, align 8, !tbaa !9
  %271 = load ptr, ptr %23, align 8, !tbaa !5
  store double %270, ptr %271, align 8, !tbaa !9
  %272 = load double, ptr %41, align 8, !tbaa !9
  %273 = load ptr, ptr %24, align 8, !tbaa !5
  %274 = load double, ptr %273, align 8, !tbaa !9
  %275 = fadd double %274, %272
  store double %275, ptr %273, align 8, !tbaa !9
  call void @llvm.lifetime.end.p0(i64 8, ptr %41) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %40) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %39) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %38) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %37) #5
  br label %276

276:                                              ; preds = %269
  %277 = load i32, ptr %36, align 4, !tbaa !11
  %278 = add nsw i32 %277, 1
  store i32 %278, ptr %36, align 4, !tbaa !11
  br label %188, !llvm.loop !31

279:                                              ; preds = %264, %258
  %280 = landingpad { ptr, i32 }
          cleanup
  %281 = extractvalue { ptr, i32 } %280, 0
  store ptr %281, ptr %27, align 8
  %282 = extractvalue { ptr, i32 } %280, 1
  store i32 %282, ptr %28, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %41) #5
  br label %283

283:                                              ; preds = %279, %254
  call void @llvm.lifetime.end.p0(i64 8, ptr %40) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %39) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %38) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %37) #5
  call void @llvm.lifetime.end.p0(i64 4, ptr %36) #5
  br label %285

284:                                              ; preds = %194
  call void @_ZNSt6vectorI12HighsCDoubleSaIS0_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %25) #5
  call void @llvm.lifetime.end.p0(i64 24, ptr %25) #5
  ret void

285:                                              ; preds = %283, %186, %63
  call void @_ZNSt6vectorI12HighsCDoubleSaIS0_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %25) #5
  call void @llvm.lifetime.end.p0(i64 24, ptr %25) #5
  br label %286

286:                                              ; preds = %285
  %287 = load ptr, ptr %27, align 8
  %288 = load i32, ptr %28, align 4
  %289 = insertvalue { ptr, i32 } poison, ptr %287, 0
  %290 = insertvalue { ptr, i32 } %289, i32 %288, 1
  resume { ptr, i32 } %290
}

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

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

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

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

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

; 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) #2 align 2

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

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

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

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

; Function Attrs: mustprogress nounwind uwtable
declare dso_local void @_ZNSt6vectorI12HighsCDoubleSaIS0_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24)) unnamed_addr #2 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 = { 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 #3 = { 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 #4 = { nocallback nofree nosync nounwind speculatable willreturn memory(none) }
attributes #5 = { nounwind }

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

!0 = !{i32 1, !"wchar_size", i32 4}
!1 = !{i32 8, !"PIC Level", i32 2}
!2 = !{i32 7, !"PIE Level", i32 2}
!3 = !{i32 7, !"uwtable", i32 2}
!4 = !{!"clang version 19.1.0 (git@github.com:llvm/llvm-project.git a4bf6cd7cfb1a1421ba92bca9d017b49936c55e4)"}
!5 = !{!6, !6, i64 0}
!6 = !{!"any pointer", !7, i64 0}
!7 = !{!"omnipotent char", !8, i64 0}
!8 = !{!"Simple C++ TBAA"}
!9 = !{!10, !10, i64 0}
!10 = !{!"double", !7, i64 0}
!11 = !{!12, !12, i64 0}
!12 = !{!"int", !7, i64 0}
!13 = !{!14, !12, i64 8}
!14 = !{!"_ZTS8Instance", !12, i64 0, !12, i64 4, !12, i64 8, !10, i64 16, !15, i64 24, !24, i64 80, !20, i64 248, !20, i64 272, !24, i64 296, !20, i64 464, !20, i64 488}
!15 = !{!"_ZTS8QpVector", !12, i64 0, !12, 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", !6, i64 0, !6, i64 8, !6, 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", !6, i64 0, !6, i64 8, !6, i64 16}
!24 = !{!"_ZTS6Matrix", !25, i64 0, !26, i64 80, !25, i64 88}
!25 = !{!"_ZTS10MatrixBase", !12, i64 0, !12, i64 4, !16, i64 8, !16, i64 32, !20, i64 56}
!26 = !{!"bool", !7, i64 0}
!27 = !{!14, !12, i64 4}
!28 = distinct !{!28, !29}
!29 = !{!"llvm.loop.mustprogress"}
!30 = distinct !{!30, !29}
!31 = distinct !{!31, !29}


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

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

; 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 @_Z25assessQpPrimalFeasibilityRK8InstancedRKSt6vectorIdSaIdEES6_RiRdS8_S7_S8_S8_S8_S8_(ptr noundef nonnull align 8 dereferenceable(512) %0, double noundef %1, ptr noundef nonnull align 8 dereferenceable(24) %2, ptr noundef nonnull align 8 dereferenceable(24) %3, ptr nocapture noundef nonnull align 4 dereferenceable(4) %4, ptr noundef nonnull align 8 dereferenceable(8) %5, ptr nocapture noundef nonnull align 8 dereferenceable(8) %6, ptr nocapture noundef nonnull align 4 dereferenceable(4) %7, ptr noundef nonnull align 8 dereferenceable(8) %8, ptr nocapture noundef nonnull align 8 dereferenceable(8) %9, ptr noundef nonnull align 8 dereferenceable(8) %10, ptr nocapture noundef nonnull align 8 dereferenceable(8) %11) local_unnamed_addr #1 personality ptr @__gxx_personality_v0 {
  %13 = alloca %"class.std::vector.47", align 8
  %14 = alloca %class.HighsCDouble, align 8
  %15 = alloca double, align 8
  %16 = alloca double, align 8
  %17 = alloca double, align 8
  store i32 0, ptr %4, align 4, !tbaa !5
  store double 0.000000e+00, ptr %5, align 8, !tbaa !9
  store double 0.000000e+00, ptr %6, align 8, !tbaa !9
  store i32 0, ptr %7, align 4, !tbaa !5
  store double 0.000000e+00, ptr %8, align 8, !tbaa !9
  store double 0.000000e+00, ptr %9, align 8, !tbaa !9
  store double 0.000000e+00, ptr %10, align 8, !tbaa !9
  store double 0.000000e+00, ptr %11, align 8, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 24, ptr nonnull %13) #5
  call void @_ZNSt6vectorI12HighsCDoubleSaIS0_EEC2Ev(ptr noundef nonnull align 8 dereferenceable(24) %13) #5
  %18 = getelementptr inbounds i8, ptr %0, i64 8
  %19 = load i32, ptr %18, align 8, !tbaa !11
  %20 = sext i32 %19 to i64
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %14) #5
  call void @_ZN12HighsCDoubleC2Ed(ptr noundef nonnull align 8 dereferenceable(16) %14, double noundef 0.000000e+00)
  invoke void @_ZNSt6vectorI12HighsCDoubleSaIS0_EE6assignEmRKS0_(ptr noundef nonnull align 8 dereferenceable(24) %13, i64 noundef %20, ptr noundef nonnull align 8 dereferenceable(16) %14)
          to label %21 unwind label %34

21:                                               ; preds = %12
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %14) #5
  %22 = getelementptr inbounds i8, ptr %0, i64 4
  %23 = load i32, ptr %22, align 4, !tbaa !26
  %24 = icmp sgt i32 %23, 0
  br i1 %24, label %.lr.ph90, label %.preheader

.lr.ph90:                                         ; preds = %21
  %25 = getelementptr inbounds i8, ptr %0, i64 464
  %26 = getelementptr inbounds i8, ptr %0, i64 488
  %27 = getelementptr inbounds i8, ptr %0, i64 392
  %28 = getelementptr inbounds i8, ptr %0, i64 440
  %29 = getelementptr inbounds i8, ptr %0, i64 416
  br label %36

.preheader:                                       ; preds = %._crit_edge, %21
  %30 = load i32, ptr %18, align 8, !tbaa !11
  %31 = icmp sgt i32 %30, 0
  br i1 %31, label %.lr.ph92, label %._crit_edge93

.lr.ph92:                                         ; preds = %.preheader
  %32 = getelementptr inbounds i8, ptr %0, i64 248
  %33 = getelementptr inbounds i8, ptr %0, i64 272
  br label %89

34:                                               ; preds = %12
  %35 = landingpad { ptr, i32 }
          cleanup
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %14) #5
  br label %130

36:                                               ; preds = %.lr.ph90, %._crit_edge
  %indvars.iv95 = phi i64 [ 0, %.lr.ph90 ], [ %indvars.iv.next96, %._crit_edge ]
  %37 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNKSt6vectorIdSaIdEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %25, i64 noundef %indvars.iv95) #5
  %38 = load double, ptr %37, align 8, !tbaa !9
  %39 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNKSt6vectorIdSaIdEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %26, i64 noundef %indvars.iv95) #5
  %40 = load double, ptr %39, align 8, !tbaa !9
  %41 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNKSt6vectorIdSaIdEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %2, i64 noundef %indvars.iv95) #5
  %42 = load double, ptr %41, align 8, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %15) #5
  store double 0.000000e+00, ptr %15, align 8, !tbaa !9
  %43 = fsub double %38, %1
  %44 = fcmp olt double %42, %43
  br i1 %44, label %45, label %47

45:                                               ; preds = %36
  %46 = fsub double %38, %42
  br label %thread-pre-split

47:                                               ; preds = %36
  %48 = fadd double %40, %1
  %49 = fcmp ogt double %42, %48
  br i1 %49, label %50, label %thread-pre-split.thread

50:                                               ; preds = %47
  %51 = fsub double %42, %40
  br label %thread-pre-split

thread-pre-split:                                 ; preds = %50, %45
  %52 = phi double [ %51, %50 ], [ %46, %45 ]
  store double %52, ptr %15, align 8, !tbaa !9
  %53 = fcmp ogt double %52, 0.000000e+00
  br i1 %53, label %54, label %thread-pre-split.thread

54:                                               ; preds = %thread-pre-split
  %55 = fcmp ogt double %52, %1
  br i1 %55, label %56, label %59

56:                                               ; preds = %54
  %57 = load i32, ptr %4, align 4, !tbaa !5
  %58 = add nsw i32 %57, 1
  store i32 %58, ptr %4, align 4, !tbaa !5
  br label %59

59:                                               ; preds = %56, %54
  %60 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZSt3maxIdERKT_S2_S2_(ptr noundef nonnull align 8 dereferenceable(8) %15, ptr noundef nonnull align 8 dereferenceable(8) %5)
  %61 = load double, ptr %60, align 8, !tbaa !9
  store double %61, ptr %5, align 8, !tbaa !9
  %62 = load double, ptr %15, align 8, !tbaa !9
  %63 = load double, ptr %6, align 8, !tbaa !9
  %64 = fadd double %62, %63
  store double %64, ptr %6, align 8, !tbaa !9
  br label %thread-pre-split.thread

thread-pre-split.thread:                          ; preds = %47, %59, %thread-pre-split
  %65 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNKSt6vectorIiSaIiEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %27, i64 noundef %indvars.iv95) #5
  %66 = load i32, ptr %65, align 4, !tbaa !5
  %indvars.iv.next96 = add nuw nsw i64 %indvars.iv95, 1
  %67 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNKSt6vectorIiSaIiEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %27, i64 noundef %indvars.iv.next96) #5
  %68 = load i32, ptr %67, align 4, !tbaa !5
  %69 = icmp slt i32 %66, %68
  br i1 %69, label %.lr.ph.preheader, label %._crit_edge

.lr.ph.preheader:                                 ; preds = %thread-pre-split.thread
  %70 = sext i32 %66 to i64
  br label %.lr.ph

._crit_edge:                                      ; preds = %82, %thread-pre-split.thread
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %15) #5
  %71 = load i32, ptr %22, align 4, !tbaa !26
  %72 = sext i32 %71 to i64
  %73 = icmp slt i64 %indvars.iv.next96, %72
  br i1 %73, label %36, label %.preheader, !llvm.loop !27

.lr.ph:                                           ; preds = %.lr.ph.preheader, %82
  %indvars.iv = phi i64 [ %70, %.lr.ph.preheader ], [ %indvars.iv.next, %82 ]
  %74 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNKSt6vectorIdSaIdEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %28, i64 noundef %indvars.iv) #5
  %75 = load double, ptr %74, align 8, !tbaa !9
  %76 = fmul double %42, %75
  %77 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNKSt6vectorIiSaIiEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %29, i64 noundef %indvars.iv) #5
  %78 = load i32, ptr %77, align 4, !tbaa !5
  %79 = sext i32 %78 to i64
  %80 = call noundef nonnull align 8 dereferenceable(16) ptr @_ZNSt6vectorI12HighsCDoubleSaIS0_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %13, i64 noundef %79) #5
  %81 = invoke noundef nonnull align 8 dereferenceable(16) ptr @_ZN12HighsCDoublepLEd(ptr noundef nonnull align 8 dereferenceable(16) %80, double noundef %76)
          to label %82 unwind label %87

82:                                               ; preds = %.lr.ph
  %indvars.iv.next = add nsw i64 %indvars.iv, 1
  %83 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNKSt6vectorIiSaIiEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %27, i64 noundef %indvars.iv.next96) #5
  %84 = load i32, ptr %83, align 4, !tbaa !5
  %85 = sext i32 %84 to i64
  %86 = icmp slt i64 %indvars.iv.next, %85
  br i1 %86, label %.lr.ph, label %._crit_edge, !llvm.loop !29

87:                                               ; preds = %.lr.ph
  %88 = landingpad { ptr, i32 }
          cleanup
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %15) #5
  br label %130

._crit_edge93:                                    ; preds = %thread-pre-split84.thread, %.preheader
  call void @_ZNSt6vectorI12HighsCDoubleSaIS0_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %13) #5
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %13) #5
  ret void

89:                                               ; preds = %.lr.ph92, %thread-pre-split84.thread
  %indvars.iv98 = phi i64 [ 0, %.lr.ph92 ], [ %indvars.iv.next99, %thread-pre-split84.thread ]
  %90 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNKSt6vectorIdSaIdEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %32, i64 noundef %indvars.iv98) #5
  %91 = load double, ptr %90, align 8, !tbaa !9
  %92 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNKSt6vectorIdSaIdEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %33, i64 noundef %indvars.iv98) #5
  %93 = load double, ptr %92, align 8, !tbaa !9
  %94 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNKSt6vectorIdSaIdEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %3, i64 noundef %indvars.iv98) #5
  %95 = load double, ptr %94, align 8, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %16) #5
  store double 0.000000e+00, ptr %16, align 8, !tbaa !9
  %96 = fsub double %91, %1
  %97 = fcmp olt double %95, %96
  br i1 %97, label %98, label %100

98:                                               ; preds = %89
  %99 = fsub double %91, %95
  br label %thread-pre-split84

100:                                              ; preds = %89
  %101 = fadd double %93, %1
  %102 = fcmp ogt double %95, %101
  br i1 %102, label %103, label %thread-pre-split84.thread

103:                                              ; preds = %100
  %104 = fsub double %95, %93
  br label %thread-pre-split84

thread-pre-split84:                               ; preds = %103, %98
  %105 = phi double [ %104, %103 ], [ %99, %98 ]
  store double %105, ptr %16, align 8, !tbaa !9
  %106 = fcmp ogt double %105, 0.000000e+00
  br i1 %106, label %107, label %thread-pre-split84.thread

107:                                              ; preds = %thread-pre-split84
  %108 = fcmp ogt double %105, %1
  br i1 %108, label %109, label %112

109:                                              ; preds = %107
  %110 = load i32, ptr %7, align 4, !tbaa !5
  %111 = add nsw i32 %110, 1
  store i32 %111, ptr %7, align 4, !tbaa !5
  br label %112

112:                                              ; preds = %109, %107
  %113 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZSt3maxIdERKT_S2_S2_(ptr noundef nonnull align 8 dereferenceable(8) %16, ptr noundef nonnull align 8 dereferenceable(8) %8)
  %114 = load double, ptr %113, align 8, !tbaa !9
  store double %114, ptr %8, align 8, !tbaa !9
  %115 = load double, ptr %16, align 8, !tbaa !9
  %116 = load double, ptr %9, align 8, !tbaa !9
  %117 = fadd double %115, %116
  store double %117, ptr %9, align 8, !tbaa !9
  br label %thread-pre-split84.thread

thread-pre-split84.thread:                        ; preds = %100, %112, %thread-pre-split84
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %17) #5
  %118 = call noundef nonnull align 8 dereferenceable(16) ptr @_ZNSt6vectorI12HighsCDoubleSaIS0_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %13, i64 noundef %indvars.iv98) #5
  %119 = call noundef double @_ZNK12HighsCDoublecvdEv(ptr noundef nonnull align 8 dereferenceable(16) %118)
  %120 = fsub double %95, %119
  %121 = call double @llvm.fabs.f64(double %120)
  store double %121, ptr %17, align 8, !tbaa !9
  %122 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZSt3maxIdERKT_S2_S2_(ptr noundef nonnull align 8 dereferenceable(8) %17, ptr noundef nonnull align 8 dereferenceable(8) %10)
  %123 = load double, ptr %122, align 8, !tbaa !9
  store double %123, ptr %10, align 8, !tbaa !9
  %124 = load double, ptr %17, align 8, !tbaa !9
  %125 = load double, ptr %11, align 8, !tbaa !9
  %126 = fadd double %124, %125
  store double %126, ptr %11, align 8, !tbaa !9
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %17) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %16) #5
  %indvars.iv.next99 = add nuw nsw i64 %indvars.iv98, 1
  %127 = load i32, ptr %18, align 8, !tbaa !11
  %128 = sext i32 %127 to i64
  %129 = icmp slt i64 %indvars.iv.next99, %128
  br i1 %129, label %89, label %._crit_edge93, !llvm.loop !30

130:                                              ; preds = %87, %34
  %.pn = phi { ptr, i32 } [ %88, %87 ], [ %35, %34 ]
  call void @_ZNSt6vectorI12HighsCDoubleSaIS0_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %13) #5
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %13) #5
  resume { ptr, i32 } %.pn
}

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

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

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

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

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

; 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 #2 align 2

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

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

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

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

; Function Attrs: mustprogress nounwind uwtable
declare dso_local void @_ZNSt6vectorI12HighsCDoubleSaIS0_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24)) unnamed_addr #2 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 = { 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 #3 = { 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 #4 = { mustprogress nocallback nofree nosync nounwind speculatable willreturn memory(none) }
attributes #5 = { 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 = !{!"int", !7, i64 0}
!7 = !{!"omnipotent char", !8, i64 0}
!8 = !{!"Simple C++ TBAA"}
!9 = !{!10, !10, i64 0}
!10 = !{!"double", !7, i64 0}
!11 = !{!12, !6, i64 8}
!12 = !{!"_ZTS8Instance", !6, i64 0, !6, i64 4, !6, i64 8, !10, i64 16, !13, i64 24, !23, i64 80, !19, i64 248, !19, i64 272, !23, i64 296, !19, i64 464, !19, i64 488}
!13 = !{!"_ZTS8QpVector", !6, i64 0, !6, i64 4, !14, i64 8, !19, i64 32}
!14 = !{!"_ZTSSt6vectorIiSaIiEE", !15, i64 0}
!15 = !{!"_ZTSSt12_Vector_baseIiSaIiEE", !16, i64 0}
!16 = !{!"_ZTSNSt12_Vector_baseIiSaIiEE12_Vector_implE", !17, i64 0}
!17 = !{!"_ZTSNSt12_Vector_baseIiSaIiEE17_Vector_impl_dataE", !18, i64 0, !18, i64 8, !18, i64 16}
!18 = !{!"any pointer", !7, i64 0}
!19 = !{!"_ZTSSt6vectorIdSaIdEE", !20, i64 0}
!20 = !{!"_ZTSSt12_Vector_baseIdSaIdEE", !21, i64 0}
!21 = !{!"_ZTSNSt12_Vector_baseIdSaIdEE12_Vector_implE", !22, i64 0}
!22 = !{!"_ZTSNSt12_Vector_baseIdSaIdEE17_Vector_impl_dataE", !18, i64 0, !18, i64 8, !18, i64 16}
!23 = !{!"_ZTS6Matrix", !24, i64 0, !25, i64 80, !24, i64 88}
!24 = !{!"_ZTS10MatrixBase", !6, i64 0, !6, i64 4, !14, i64 8, !14, i64 32, !19, i64 56}
!25 = !{!"bool", !7, i64 0}
!26 = !{!12, !6, i64 4}
!27 = distinct !{!27, !28}
!28 = !{!"llvm.loop.mustprogress"}
!29 = distinct !{!29, !28}
!30 = distinct !{!30, !28}


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