; LLVM IR from ERGO-Code/HiGHS :: src/test (DevKkt)

; 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::basic_ostream" = type { ptr, %"class.std::basic_ios" }
%"class.std::basic_ios" = type { %"class.std::ios_base", ptr, i8, i8, ptr, ptr, ptr, ptr }
%"class.std::ios_base" = type { ptr, i64, i64, i32, i32, i32, ptr, %"struct.std::ios_base::_Words", [8 x %"struct.std::ios_base::_Words"], i32, ptr, %"class.std::locale" }
%"struct.std::ios_base::_Words" = type { ptr, i64 }
%"class.std::locale" = type { ptr }
%"struct.presolve::dev_kkt_check::State" = type { i32, i32, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr }
%"struct.presolve::dev_kkt_check::KktConditionDetails" = type { i32, double, double, i32, i32 }

@_ZSt4cout = external global %"class.std::basic_ostream", align 8
@.str.15 = external hidden unnamed_addr constant [5 x i8], align 1
@.str.45 = external hidden unnamed_addr constant [69 x i8], align 1
@.str.52 = external hidden unnamed_addr constant [45 x i8], align 1
@__PRETTY_FUNCTION__._ZN8presolve13dev_kkt_check26checkBasicFeasibleSolutionERKNS0_5StateERNS0_19KktConditionDetailsE = external hidden unnamed_addr constant [95 x i8], align 1
@.str.53 = external hidden unnamed_addr constant [42 x i8], align 1
@.str.54 = external hidden unnamed_addr constant [5 x i8], align 1
@.str.55 = external hidden unnamed_addr constant [32 x i8], align 1
@.str.56 = external hidden unnamed_addr constant [2 x i8], align 1
@.str.57 = external hidden unnamed_addr constant [45 x i8], align 1
@.str.58 = external hidden unnamed_addr constant [42 x i8], align 1
@.str.59 = external hidden unnamed_addr constant [33 x i8], align 1
@.str.60 = external hidden unnamed_addr constant [5 x i8], align 1
@.str.61 = external hidden unnamed_addr constant [17 x i8], align 1
@.str.62 = external hidden unnamed_addr constant [35 x i8], align 1
@.str.63 = external hidden unnamed_addr constant [2 x i8], align 1

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

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

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

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

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

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

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

; Function Attrs: mustprogress uwtable
declare noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEPFRSoS_E(ptr noundef nonnull align 8 dereferenceable(8), ptr noundef) #4 align 2

; Function Attrs: inlinehint mustprogress uwtable
declare noundef nonnull align 8 dereferenceable(8) ptr @_ZSt4endlIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_(ptr noundef nonnull align 8 dereferenceable(8)) #2

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

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

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

; Function Attrs: mustprogress uwtable
define dso_local void @_ZN8presolve13dev_kkt_check26checkBasicFeasibleSolutionERKNS0_5StateERNS0_19KktConditionDetailsE(ptr noundef nonnull align 8 dereferenceable(168) %0, ptr noundef nonnull align 8 dereferenceable(32) %1) #4 {
  %3 = alloca ptr, align 8
  %4 = alloca ptr, align 8
  %5 = alloca i32, align 4
  %6 = alloca double, align 8
  %7 = alloca i32, align 4
  %8 = alloca double, align 8
  %9 = alloca i32, align 4
  %10 = alloca i32, align 4
  %11 = alloca i32, align 4
  %12 = alloca i32, align 4
  %13 = alloca i32, align 4
  %14 = alloca i8, align 1
  store ptr %0, ptr %3, align 8, !tbaa !5
  store ptr %1, ptr %4, align 8, !tbaa !5
  %15 = load ptr, ptr %3, align 8, !tbaa !5
  %16 = getelementptr inbounds %"struct.presolve::dev_kkt_check::State", ptr %15, i32 0, i32 20
  %17 = load ptr, ptr %16, align 8, !tbaa !9
  %18 = call noundef i64 @_ZNKSt6vectorI16HighsBasisStatusSaIS0_EE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24) %17) #7
  %19 = trunc i64 %18 to i32
  %20 = load ptr, ptr %3, align 8, !tbaa !5
  %21 = getelementptr inbounds %"struct.presolve::dev_kkt_check::State", ptr %20, i32 0, i32 0
  %22 = load i32, ptr %21, align 8, !tbaa !12
  %23 = icmp eq i32 %19, %22
  br i1 %23, label %24, label %25

24:                                               ; preds = %2
  br label %27

25:                                               ; preds = %2
  call void @__assert_fail(ptr noundef @.str.52, ptr noundef @.str.45, i32 noundef 349, ptr noundef @__PRETTY_FUNCTION__._ZN8presolve13dev_kkt_check26checkBasicFeasibleSolutionERKNS0_5StateERNS0_19KktConditionDetailsE) #8
  unreachable

26:                                               ; No predecessors!
  br label %27

27:                                               ; preds = %26, %24
  %28 = load ptr, ptr %3, align 8, !tbaa !5
  %29 = getelementptr inbounds %"struct.presolve::dev_kkt_check::State", ptr %28, i32 0, i32 17
  %30 = load ptr, ptr %29, align 8, !tbaa !13
  %31 = call noundef i64 @_ZNKSt6vectorIdSaIdEE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24) %30) #7
  %32 = trunc i64 %31 to i32
  %33 = load ptr, ptr %3, align 8, !tbaa !5
  %34 = getelementptr inbounds %"struct.presolve::dev_kkt_check::State", ptr %33, i32 0, i32 0
  %35 = load i32, ptr %34, align 8, !tbaa !12
  %36 = icmp eq i32 %32, %35
  br i1 %36, label %37, label %38

37:                                               ; preds = %27
  br label %40

38:                                               ; preds = %27
  call void @__assert_fail(ptr noundef @.str.53, ptr noundef @.str.45, i32 noundef 350, ptr noundef @__PRETTY_FUNCTION__._ZN8presolve13dev_kkt_check26checkBasicFeasibleSolutionERKNS0_5StateERNS0_19KktConditionDetailsE) #8
  unreachable

39:                                               ; No predecessors!
  br label %40

40:                                               ; preds = %39, %37
  call void @llvm.lifetime.start.p0(i64 4, ptr %5) #7
  store i32 0, ptr %5, align 4, !tbaa !14
  br label %41

41:                                               ; preds = %129, %40
  %42 = load i32, ptr %5, align 4, !tbaa !14
  %43 = load ptr, ptr %3, align 8, !tbaa !5
  %44 = getelementptr inbounds %"struct.presolve::dev_kkt_check::State", ptr %43, i32 0, i32 0
  %45 = load i32, ptr %44, align 8, !tbaa !12
  %46 = icmp slt i32 %42, %45
  br i1 %46, label %48, label %47

47:                                               ; preds = %41
  call void @llvm.lifetime.end.p0(i64 4, ptr %5) #7
  br label %132

48:                                               ; preds = %41
  %49 = load ptr, ptr %3, align 8, !tbaa !5
  %50 = getelementptr inbounds %"struct.presolve::dev_kkt_check::State", ptr %49, i32 0, i32 14
  %51 = load ptr, ptr %50, align 8, !tbaa !15
  %52 = load i32, ptr %5, align 4, !tbaa !14
  %53 = sext i32 %52 to i64
  %54 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNKSt6vectorIiSaIiEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %51, i64 noundef %53) #7
  %55 = load i32, ptr %54, align 4, !tbaa !14
  %56 = icmp ne i32 %55, 0
  br i1 %56, label %57, label %128

57:                                               ; preds = %48
  %58 = load ptr, ptr %4, align 8, !tbaa !5
  %59 = getelementptr inbounds %"struct.presolve::dev_kkt_check::KktConditionDetails", ptr %58, i32 0, i32 3
  %60 = load i32, ptr %59, align 8, !tbaa !16
  %61 = add nsw i32 %60, 1
  store i32 %61, ptr %59, align 8, !tbaa !16
  call void @llvm.lifetime.start.p0(i64 8, ptr %6) #7
  store double 0.000000e+00, ptr %6, align 8, !tbaa !20
  %62 = load ptr, ptr %3, align 8, !tbaa !5
  %63 = getelementptr inbounds %"struct.presolve::dev_kkt_check::State", ptr %62, i32 0, i32 20
  %64 = load ptr, ptr %63, align 8, !tbaa !9
  %65 = load i32, ptr %5, align 4, !tbaa !14
  %66 = sext i32 %65 to i64
  %67 = call noundef nonnull align 1 dereferenceable(1) ptr @_ZNKSt6vectorI16HighsBasisStatusSaIS0_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %64, i64 noundef %66) #7
  %68 = load i8, ptr %67, align 1, !tbaa !21
  %69 = icmp eq i8 %68, 1
  br i1 %69, label %70, label %103

70:                                               ; preds = %57
  %71 = load ptr, ptr %3, align 8, !tbaa !5
  %72 = getelementptr inbounds %"struct.presolve::dev_kkt_check::State", ptr %71, i32 0, i32 17
  %73 = load ptr, ptr %72, align 8, !tbaa !13
  %74 = load i32, ptr %5, align 4, !tbaa !14
  %75 = sext i32 %74 to i64
  %76 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNKSt6vectorIdSaIdEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %73, i64 noundef %75) #7
  %77 = load double, ptr %76, align 8, !tbaa !20
  %78 = call double @llvm.fabs.f64(double %77)
  %79 = fcmp ogt double %78, 0x3E7AD7F29ABCAF48
  br i1 %79, label %80, label %103

80:                                               ; preds = %70
  %81 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) @_ZSt4cout, ptr noundef @.str.54)
  %82 = load i32, ptr %5, align 4, !tbaa !14
  %83 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEi(ptr noundef nonnull align 8 dereferenceable(8) %81, i32 noundef %82)
  %84 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) %83, ptr noundef @.str.55)
  %85 = load ptr, ptr %3, align 8, !tbaa !5
  %86 = getelementptr inbounds %"struct.presolve::dev_kkt_check::State", ptr %85, i32 0, i32 17
  %87 = load ptr, ptr %86, align 8, !tbaa !13
  %88 = load i32, ptr %5, align 4, !tbaa !14
  %89 = sext i32 %88 to i64
  %90 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNKSt6vectorIdSaIdEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %87, i64 noundef %89) #7
  %91 = load double, ptr %90, align 8, !tbaa !20
  %92 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEd(ptr noundef nonnull align 8 dereferenceable(8) %84, double noundef %91)
  %93 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) %92, ptr noundef @.str.56)
  %94 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEPFRSoS_E(ptr noundef nonnull align 8 dereferenceable(8) %93, ptr noundef @_ZSt4endlIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_)
  %95 = load ptr, ptr %3, align 8, !tbaa !5
  %96 = getelementptr inbounds %"struct.presolve::dev_kkt_check::State", ptr %95, i32 0, i32 17
  %97 = load ptr, ptr %96, align 8, !tbaa !13
  %98 = load i32, ptr %5, align 4, !tbaa !14
  %99 = sext i32 %98 to i64
  %100 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNKSt6vectorIdSaIdEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %97, i64 noundef %99) #7
  %101 = load double, ptr %100, align 8, !tbaa !20
  %102 = call double @llvm.fabs.f64(double %101)
  store double %102, ptr %6, align 8, !tbaa !20
  br label %103

103:                                              ; preds = %80, %70, %57
  %104 = load double, ptr %6, align 8, !tbaa !20
  %105 = fcmp ogt double %104, 0.000000e+00
  br i1 %105, label %106, label %127

106:                                              ; preds = %103
  %107 = load ptr, ptr %4, align 8, !tbaa !5
  %108 = getelementptr inbounds %"struct.presolve::dev_kkt_check::KktConditionDetails", ptr %107, i32 0, i32 4
  %109 = load i32, ptr %108, align 4, !tbaa !23
  %110 = add nsw i32 %109, 1
  store i32 %110, ptr %108, align 4, !tbaa !23
  %111 = load double, ptr %6, align 8, !tbaa !20
  %112 = load double, ptr %6, align 8, !tbaa !20
  %113 = load ptr, ptr %4, align 8, !tbaa !5
  %114 = getelementptr inbounds %"struct.presolve::dev_kkt_check::KktConditionDetails", ptr %113, i32 0, i32 2
  %115 = load double, ptr %114, align 8, !tbaa !24
  %116 = call double @llvm.fmuladd.f64(double %111, double %112, double %115)
  store double %116, ptr %114, align 8, !tbaa !24
  %117 = load ptr, ptr %4, align 8, !tbaa !5
  %118 = getelementptr inbounds %"struct.presolve::dev_kkt_check::KktConditionDetails", ptr %117, i32 0, i32 1
  %119 = load double, ptr %118, align 8, !tbaa !25
  %120 = load double, ptr %6, align 8, !tbaa !20
  %121 = fcmp olt double %119, %120
  br i1 %121, label %122, label %126

122:                                              ; preds = %106
  %123 = load double, ptr %6, align 8, !tbaa !20
  %124 = load ptr, ptr %4, align 8, !tbaa !5
  %125 = getelementptr inbounds %"struct.presolve::dev_kkt_check::KktConditionDetails", ptr %124, i32 0, i32 1
  store double %123, ptr %125, align 8, !tbaa !25
  br label %126

126:                                              ; preds = %122, %106
  br label %127

127:                                              ; preds = %126, %103
  call void @llvm.lifetime.end.p0(i64 8, ptr %6) #7
  br label %128

128:                                              ; preds = %127, %48
  br label %129

129:                                              ; preds = %128
  %130 = load i32, ptr %5, align 4, !tbaa !14
  %131 = add nsw i32 %130, 1
  store i32 %131, ptr %5, align 4, !tbaa !14
  br label %41, !llvm.loop !26

132:                                              ; preds = %47
  %133 = load ptr, ptr %3, align 8, !tbaa !5
  %134 = getelementptr inbounds %"struct.presolve::dev_kkt_check::State", ptr %133, i32 0, i32 21
  %135 = load ptr, ptr %134, align 8, !tbaa !28
  %136 = call noundef i64 @_ZNKSt6vectorI16HighsBasisStatusSaIS0_EE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24) %135) #7
  %137 = trunc i64 %136 to i32
  %138 = load ptr, ptr %3, align 8, !tbaa !5
  %139 = getelementptr inbounds %"struct.presolve::dev_kkt_check::State", ptr %138, i32 0, i32 1
  %140 = load i32, ptr %139, align 4, !tbaa !29
  %141 = icmp eq i32 %137, %140
  br i1 %141, label %142, label %143

142:                                              ; preds = %132
  br label %145

143:                                              ; preds = %132
  call void @__assert_fail(ptr noundef @.str.57, ptr noundef @.str.45, i32 noundef 373, ptr noundef @__PRETTY_FUNCTION__._ZN8presolve13dev_kkt_check26checkBasicFeasibleSolutionERKNS0_5StateERNS0_19KktConditionDetailsE) #8
  unreachable

144:                                              ; No predecessors!
  br label %145

145:                                              ; preds = %144, %142
  %146 = load ptr, ptr %3, align 8, !tbaa !5
  %147 = getelementptr inbounds %"struct.presolve::dev_kkt_check::State", ptr %146, i32 0, i32 19
  %148 = load ptr, ptr %147, align 8, !tbaa !30
  %149 = call noundef i64 @_ZNKSt6vectorIdSaIdEE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24) %148) #7
  %150 = trunc i64 %149 to i32
  %151 = load ptr, ptr %3, align 8, !tbaa !5
  %152 = getelementptr inbounds %"struct.presolve::dev_kkt_check::State", ptr %151, i32 0, i32 1
  %153 = load i32, ptr %152, align 4, !tbaa !29
  %154 = icmp eq i32 %150, %153
  br i1 %154, label %155, label %156

155:                                              ; preds = %145
  br label %158

156:                                              ; preds = %145
  call void @__assert_fail(ptr noundef @.str.58, ptr noundef @.str.45, i32 noundef 374, ptr noundef @__PRETTY_FUNCTION__._ZN8presolve13dev_kkt_check26checkBasicFeasibleSolutionERKNS0_5StateERNS0_19KktConditionDetailsE) #8
  unreachable

157:                                              ; No predecessors!
  br label %158

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

159:                                              ; preds = %247, %158
  %160 = load i32, ptr %7, align 4, !tbaa !14
  %161 = load ptr, ptr %3, align 8, !tbaa !5
  %162 = getelementptr inbounds %"struct.presolve::dev_kkt_check::State", ptr %161, i32 0, i32 1
  %163 = load i32, ptr %162, align 4, !tbaa !29
  %164 = icmp slt i32 %160, %163
  br i1 %164, label %166, label %165

165:                                              ; preds = %159
  call void @llvm.lifetime.end.p0(i64 4, ptr %7) #7
  br label %250

166:                                              ; preds = %159
  %167 = load ptr, ptr %3, align 8, !tbaa !5
  %168 = getelementptr inbounds %"struct.presolve::dev_kkt_check::State", ptr %167, i32 0, i32 15
  %169 = load ptr, ptr %168, align 8, !tbaa !31
  %170 = load i32, ptr %7, align 4, !tbaa !14
  %171 = sext i32 %170 to i64
  %172 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNKSt6vectorIiSaIiEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %169, i64 noundef %171) #7
  %173 = load i32, ptr %172, align 4, !tbaa !14
  %174 = icmp ne i32 %173, 0
  br i1 %174, label %175, label %246

175:                                              ; preds = %166
  %176 = load ptr, ptr %4, align 8, !tbaa !5
  %177 = getelementptr inbounds %"struct.presolve::dev_kkt_check::KktConditionDetails", ptr %176, i32 0, i32 3
  %178 = load i32, ptr %177, align 8, !tbaa !16
  %179 = add nsw i32 %178, 1
  store i32 %179, ptr %177, align 8, !tbaa !16
  call void @llvm.lifetime.start.p0(i64 8, ptr %8) #7
  store double 0.000000e+00, ptr %8, align 8, !tbaa !20
  %180 = load ptr, ptr %3, align 8, !tbaa !5
  %181 = getelementptr inbounds %"struct.presolve::dev_kkt_check::State", ptr %180, i32 0, i32 21
  %182 = load ptr, ptr %181, align 8, !tbaa !28
  %183 = load i32, ptr %7, align 4, !tbaa !14
  %184 = sext i32 %183 to i64
  %185 = call noundef nonnull align 1 dereferenceable(1) ptr @_ZNKSt6vectorI16HighsBasisStatusSaIS0_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %182, i64 noundef %184) #7
  %186 = load i8, ptr %185, align 1, !tbaa !21
  %187 = icmp eq i8 %186, 1
  br i1 %187, label %188, label %221

188:                                              ; preds = %175
  %189 = load ptr, ptr %3, align 8, !tbaa !5
  %190 = getelementptr inbounds %"struct.presolve::dev_kkt_check::State", ptr %189, i32 0, i32 19
  %191 = load ptr, ptr %190, align 8, !tbaa !30
  %192 = load i32, ptr %7, align 4, !tbaa !14
  %193 = sext i32 %192 to i64
  %194 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNKSt6vectorIdSaIdEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %191, i64 noundef %193) #7
  %195 = load double, ptr %194, align 8, !tbaa !20
  %196 = call double @llvm.fabs.f64(double %195)
  %197 = fcmp ogt double %196, 0x3E7AD7F29ABCAF48
  br i1 %197, label %198, label %221

198:                                              ; preds = %188
  %199 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) @_ZSt4cout, ptr noundef @.str.15)
  %200 = load i32, ptr %7, align 4, !tbaa !14
  %201 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEi(ptr noundef nonnull align 8 dereferenceable(8) %199, i32 noundef %200)
  %202 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) %201, ptr noundef @.str.59)
  %203 = load ptr, ptr %3, align 8, !tbaa !5
  %204 = getelementptr inbounds %"struct.presolve::dev_kkt_check::State", ptr %203, i32 0, i32 19
  %205 = load ptr, ptr %204, align 8, !tbaa !30
  %206 = load i32, ptr %7, align 4, !tbaa !14
  %207 = sext i32 %206 to i64
  %208 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNKSt6vectorIdSaIdEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %205, i64 noundef %207) #7
  %209 = load double, ptr %208, align 8, !tbaa !20
  %210 = call double @llvm.fabs.f64(double %209)
  %211 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEd(ptr noundef nonnull align 8 dereferenceable(8) %202, double noundef %210)
  %212 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEPFRSoS_E(ptr noundef nonnull align 8 dereferenceable(8) %211, ptr noundef @_ZSt4endlIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_)
  %213 = load ptr, ptr %3, align 8, !tbaa !5
  %214 = getelementptr inbounds %"struct.presolve::dev_kkt_check::State", ptr %213, i32 0, i32 19
  %215 = load ptr, ptr %214, align 8, !tbaa !30
  %216 = load i32, ptr %7, align 4, !tbaa !14
  %217 = sext i32 %216 to i64
  %218 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNKSt6vectorIdSaIdEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %215, i64 noundef %217) #7
  %219 = load double, ptr %218, align 8, !tbaa !20
  %220 = call double @llvm.fabs.f64(double %219)
  store double %220, ptr %8, align 8, !tbaa !20
  br label %221

221:                                              ; preds = %198, %188, %175
  %222 = load double, ptr %8, align 8, !tbaa !20
  %223 = fcmp ogt double %222, 0.000000e+00
  br i1 %223, label %224, label %245

224:                                              ; preds = %221
  %225 = load ptr, ptr %4, align 8, !tbaa !5
  %226 = getelementptr inbounds %"struct.presolve::dev_kkt_check::KktConditionDetails", ptr %225, i32 0, i32 4
  %227 = load i32, ptr %226, align 4, !tbaa !23
  %228 = add nsw i32 %227, 1
  store i32 %228, ptr %226, align 4, !tbaa !23
  %229 = load double, ptr %8, align 8, !tbaa !20
  %230 = load double, ptr %8, align 8, !tbaa !20
  %231 = load ptr, ptr %4, align 8, !tbaa !5
  %232 = getelementptr inbounds %"struct.presolve::dev_kkt_check::KktConditionDetails", ptr %231, i32 0, i32 2
  %233 = load double, ptr %232, align 8, !tbaa !24
  %234 = call double @llvm.fmuladd.f64(double %229, double %230, double %233)
  store double %234, ptr %232, align 8, !tbaa !24
  %235 = load ptr, ptr %4, align 8, !tbaa !5
  %236 = getelementptr inbounds %"struct.presolve::dev_kkt_check::KktConditionDetails", ptr %235, i32 0, i32 1
  %237 = load double, ptr %236, align 8, !tbaa !25
  %238 = load double, ptr %8, align 8, !tbaa !20
  %239 = fcmp olt double %237, %238
  br i1 %239, label %240, label %244

240:                                              ; preds = %224
  %241 = load double, ptr %8, align 8, !tbaa !20
  %242 = load ptr, ptr %4, align 8, !tbaa !5
  %243 = getelementptr inbounds %"struct.presolve::dev_kkt_check::KktConditionDetails", ptr %242, i32 0, i32 1
  store double %241, ptr %243, align 8, !tbaa !25
  br label %244

244:                                              ; preds = %240, %224
  br label %245

245:                                              ; preds = %244, %221
  call void @llvm.lifetime.end.p0(i64 8, ptr %8) #7
  br label %246

246:                                              ; preds = %245, %166
  br label %247

247:                                              ; preds = %246
  %248 = load i32, ptr %7, align 4, !tbaa !14
  %249 = add nsw i32 %248, 1
  store i32 %249, ptr %7, align 4, !tbaa !14
  br label %159, !llvm.loop !32

250:                                              ; preds = %165
  %251 = load ptr, ptr %4, align 8, !tbaa !5
  %252 = getelementptr inbounds %"struct.presolve::dev_kkt_check::KktConditionDetails", ptr %251, i32 0, i32 4
  %253 = load i32, ptr %252, align 4, !tbaa !23
  %254 = icmp eq i32 %253, 0
  br i1 %254, label %255, label %258

255:                                              ; preds = %250
  %256 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) @_ZSt4cout, ptr noundef @.str.60)
  %257 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEPFRSoS_E(ptr noundef nonnull align 8 dereferenceable(8) %256, ptr noundef @_ZSt4endlIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_)
  br label %265

258:                                              ; preds = %250
  %259 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) @_ZSt4cout, ptr noundef @.str.61)
  %260 = load ptr, ptr %4, align 8, !tbaa !5
  %261 = getelementptr inbounds %"struct.presolve::dev_kkt_check::KktConditionDetails", ptr %260, i32 0, i32 4
  %262 = load i32, ptr %261, align 4, !tbaa !23
  %263 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEi(ptr noundef nonnull align 8 dereferenceable(8) %259, i32 noundef %262)
  %264 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEPFRSoS_E(ptr noundef nonnull align 8 dereferenceable(8) %263, ptr noundef @_ZSt4endlIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_)
  br label %265

265:                                              ; preds = %258, %255
  call void @llvm.lifetime.start.p0(i64 4, ptr %9) #7
  store i32 0, ptr %9, align 4, !tbaa !14
  call void @llvm.lifetime.start.p0(i64 4, ptr %10) #7
  store i32 0, ptr %10, align 4, !tbaa !14
  call void @llvm.lifetime.start.p0(i64 4, ptr %11) #7
  store i32 0, ptr %11, align 4, !tbaa !14
  call void @llvm.lifetime.start.p0(i64 4, ptr %12) #7
  store i32 0, ptr %12, align 4, !tbaa !14
  br label %266

266:                                              ; preds = %307, %265
  %267 = load i32, ptr %12, align 4, !tbaa !14
  %268 = load ptr, ptr %3, align 8, !tbaa !5
  %269 = getelementptr inbounds %"struct.presolve::dev_kkt_check::State", ptr %268, i32 0, i32 1
  %270 = load i32, ptr %269, align 4, !tbaa !29
  %271 = icmp slt i32 %267, %270
  br i1 %271, label %273, label %272

272:                                              ; preds = %266
  call void @llvm.lifetime.end.p0(i64 4, ptr %12) #7
  br label %310

273:                                              ; preds = %266
  %274 = load ptr, ptr %3, align 8, !tbaa !5
  %275 = getelementptr inbounds %"struct.presolve::dev_kkt_check::State", ptr %274, i32 0, i32 15
  %276 = load ptr, ptr %275, align 8, !tbaa !31
  %277 = load i32, ptr %12, align 4, !tbaa !14
  %278 = sext i32 %277 to i64
  %279 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNKSt6vectorIiSaIiEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %276, i64 noundef %278) #7
  %280 = load i32, ptr %279, align 4, !tbaa !14
  %281 = icmp ne i32 %280, 0
  br i1 %281, label %282, label %285

282:                                              ; preds = %273
  %283 = load i32, ptr %9, align 4, !tbaa !14
  %284 = add nsw i32 %283, 1
  store i32 %284, ptr %9, align 4, !tbaa !14
  br label %285

285:                                              ; preds = %282, %273
  %286 = load ptr, ptr %3, align 8, !tbaa !5
  %287 = getelementptr inbounds %"struct.presolve::dev_kkt_check::State", ptr %286, i32 0, i32 15
  %288 = load ptr, ptr %287, align 8, !tbaa !31
  %289 = load i32, ptr %12, align 4, !tbaa !14
  %290 = sext i32 %289 to i64
  %291 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNKSt6vectorIiSaIiEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %288, i64 noundef %290) #7
  %292 = load i32, ptr %291, align 4, !tbaa !14
  %293 = icmp ne i32 %292, 0
  br i1 %293, label %294, label %306

294:                                              ; preds = %285
  %295 = load ptr, ptr %3, align 8, !tbaa !5
  %296 = getelementptr inbounds %"struct.presolve::dev_kkt_check::State", ptr %295, i32 0, i32 21
  %297 = load ptr, ptr %296, align 8, !tbaa !28
  %298 = load i32, ptr %12, align 4, !tbaa !14
  %299 = sext i32 %298 to i64
  %300 = call noundef nonnull align 1 dereferenceable(1) ptr @_ZNKSt6vectorI16HighsBasisStatusSaIS0_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %297, i64 noundef %299) #7
  %301 = load i8, ptr %300, align 1, !tbaa !21
  %302 = icmp eq i8 %301, 1
  br i1 %302, label %303, label %306

303:                                              ; preds = %294
  %304 = load i32, ptr %10, align 4, !tbaa !14
  %305 = add nsw i32 %304, 1
  store i32 %305, ptr %10, align 4, !tbaa !14
  br label %306

306:                                              ; preds = %303, %294, %285
  br label %307

307:                                              ; preds = %306
  %308 = load i32, ptr %12, align 4, !tbaa !14
  %309 = add nsw i32 %308, 1
  store i32 %309, ptr %12, align 4, !tbaa !14
  br label %266, !llvm.loop !33

310:                                              ; preds = %272
  call void @llvm.lifetime.start.p0(i64 4, ptr %13) #7
  store i32 0, ptr %13, align 4, !tbaa !14
  br label %311

311:                                              ; preds = %340, %310
  %312 = load i32, ptr %13, align 4, !tbaa !14
  %313 = load ptr, ptr %3, align 8, !tbaa !5
  %314 = getelementptr inbounds %"struct.presolve::dev_kkt_check::State", ptr %313, i32 0, i32 0
  %315 = load i32, ptr %314, align 8, !tbaa !12
  %316 = icmp slt i32 %312, %315
  br i1 %316, label %318, label %317

317:                                              ; preds = %311
  call void @llvm.lifetime.end.p0(i64 4, ptr %13) #7
  br label %343

318:                                              ; preds = %311
  %319 = load ptr, ptr %3, align 8, !tbaa !5
  %320 = getelementptr inbounds %"struct.presolve::dev_kkt_check::State", ptr %319, i32 0, i32 14
  %321 = load ptr, ptr %320, align 8, !tbaa !15
  %322 = load i32, ptr %13, align 4, !tbaa !14
  %323 = sext i32 %322 to i64
  %324 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNKSt6vectorIiSaIiEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %321, i64 noundef %323) #7
  %325 = load i32, ptr %324, align 4, !tbaa !14
  %326 = icmp ne i32 %325, 0
  br i1 %326, label %327, label %339

327:                                              ; preds = %318
  %328 = load ptr, ptr %3, align 8, !tbaa !5
  %329 = getelementptr inbounds %"struct.presolve::dev_kkt_check::State", ptr %328, i32 0, i32 20
  %330 = load ptr, ptr %329, align 8, !tbaa !9
  %331 = load i32, ptr %13, align 4, !tbaa !14
  %332 = sext i32 %331 to i64
  %333 = call noundef nonnull align 1 dereferenceable(1) ptr @_ZNKSt6vectorI16HighsBasisStatusSaIS0_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %330, i64 noundef %332) #7
  %334 = load i8, ptr %333, align 1, !tbaa !21
  %335 = icmp eq i8 %334, 1
  br i1 %335, label %336, label %339

336:                                              ; preds = %327
  %337 = load i32, ptr %11, align 4, !tbaa !14
  %338 = add nsw i32 %337, 1
  store i32 %338, ptr %11, align 4, !tbaa !14
  br label %339

339:                                              ; preds = %336, %327, %318
  br label %340

340:                                              ; preds = %339
  %341 = load i32, ptr %13, align 4, !tbaa !14
  %342 = add nsw i32 %341, 1
  store i32 %342, ptr %13, align 4, !tbaa !14
  br label %311, !llvm.loop !34

343:                                              ; preds = %317
  call void @llvm.lifetime.start.p0(i64 1, ptr %14) #7
  %344 = load i32, ptr %11, align 4, !tbaa !14
  %345 = load i32, ptr %10, align 4, !tbaa !14
  %346 = add nsw i32 %344, %345
  %347 = load i32, ptr %9, align 4, !tbaa !14
  %348 = icmp eq i32 %346, %347
  %349 = zext i1 %348 to i8
  store i8 %349, ptr %14, align 1, !tbaa !35
  %350 = load i8, ptr %14, align 1, !tbaa !35, !range !37, !noundef !38
  %351 = trunc i8 %350 to i1
  br i1 %351, label %364, label %352

352:                                              ; preds = %343
  %353 = load ptr, ptr %4, align 8, !tbaa !5
  %354 = getelementptr inbounds %"struct.presolve::dev_kkt_check::KktConditionDetails", ptr %353, i32 0, i32 4
  store i32 -1, ptr %354, align 4, !tbaa !23
  %355 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) @_ZSt4cout, ptr noundef @.str.62)
  %356 = load i32, ptr %11, align 4, !tbaa !14
  %357 = load i32, ptr %10, align 4, !tbaa !14
  %358 = add nsw i32 %356, %357
  %359 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEi(ptr noundef nonnull align 8 dereferenceable(8) %355, i32 noundef %358)
  %360 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) %359, ptr noundef @.str.63)
  %361 = load i32, ptr %9, align 4, !tbaa !14
  %362 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEi(ptr noundef nonnull align 8 dereferenceable(8) %360, i32 noundef %361)
  %363 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEPFRSoS_E(ptr noundef nonnull align 8 dereferenceable(8) %362, ptr noundef @_ZSt4endlIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_)
  br label %364

364:                                              ; preds = %352, %343
  call void @llvm.lifetime.end.p0(i64 1, ptr %14) #7
  call void @llvm.lifetime.end.p0(i64 4, ptr %11) #7
  call void @llvm.lifetime.end.p0(i64 4, ptr %10) #7
  call void @llvm.lifetime.end.p0(i64 4, ptr %9) #7
  ret void
}

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

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

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

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

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

!0 = !{i32 1, !"wchar_size", i32 4}
!1 = !{i32 8, !"PIC Level", i32 2}
!2 = !{i32 7, !"PIE Level", i32 2}
!3 = !{i32 7, !"uwtable", i32 2}
!4 = !{!"clang version 19.1.0 (git@github.com:llvm/llvm-project.git a4bf6cd7cfb1a1421ba92bca9d017b49936c55e4)"}
!5 = !{!6, !6, i64 0}
!6 = !{!"any pointer", !7, i64 0}
!7 = !{!"omnipotent char", !8, i64 0}
!8 = !{!"Simple C++ TBAA"}
!9 = !{!10, !6, i64 152}
!10 = !{!"_ZTSN8presolve13dev_kkt_check5StateE", !11, i64 0, !11, i64 4, !6, i64 8, !6, i64 16, !6, i64 24, !6, i64 32, !6, i64 40, !6, i64 48, !6, i64 56, !6, i64 64, !6, i64 72, !6, i64 80, !6, i64 88, !6, i64 96, !6, i64 104, !6, i64 112, !6, i64 120, !6, i64 128, !6, i64 136, !6, i64 144, !6, i64 152, !6, i64 160}
!11 = !{!"int", !7, i64 0}
!12 = !{!10, !11, i64 0}
!13 = !{!10, !6, i64 128}
!14 = !{!11, !11, i64 0}
!15 = !{!10, !6, i64 104}
!16 = !{!17, !11, i64 24}
!17 = !{!"_ZTSN8presolve13dev_kkt_check19KktConditionDetailsE", !18, i64 0, !19, i64 8, !19, i64 16, !11, i64 24, !11, i64 28}
!18 = !{!"_ZTSN8presolve13dev_kkt_check12KktConditionE", !7, i64 0}
!19 = !{!"double", !7, i64 0}
!20 = !{!19, !19, i64 0}
!21 = !{!22, !22, i64 0}
!22 = !{!"_ZTS16HighsBasisStatus", !7, i64 0}
!23 = !{!17, !11, i64 28}
!24 = !{!17, !19, i64 16}
!25 = !{!17, !19, i64 8}
!26 = distinct !{!26, !27}
!27 = !{!"llvm.loop.mustprogress"}
!28 = !{!10, !6, i64 160}
!29 = !{!10, !11, i64 4}
!30 = !{!10, !6, i64 144}
!31 = !{!10, !6, i64 112}
!32 = distinct !{!32, !27}
!33 = distinct !{!33, !27}
!34 = distinct !{!34, !27}
!35 = !{!36, !36, i64 0}
!36 = !{!"bool", !7, i64 0}
!37 = !{i8 0, i8 2}
!38 = !{}


; 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::basic_ostream" = type { ptr, %"class.std::basic_ios" }
%"class.std::basic_ios" = type { %"class.std::ios_base", ptr, i8, i8, ptr, ptr, ptr, ptr }
%"class.std::ios_base" = type { ptr, i64, i64, i32, i32, i32, ptr, %"struct.std::ios_base::_Words", [8 x %"struct.std::ios_base::_Words"], i32, ptr, %"class.std::locale" }
%"struct.std::ios_base::_Words" = type { ptr, i64 }
%"class.std::locale" = type { ptr }

@_ZSt4cout = external global %"class.std::basic_ostream", align 8
@.str.15 = external hidden unnamed_addr constant [5 x i8], align 1
@.str.45 = external hidden unnamed_addr constant [69 x i8], align 1
@.str.52 = external hidden unnamed_addr constant [45 x i8], align 1
@__PRETTY_FUNCTION__._ZN8presolve13dev_kkt_check26checkBasicFeasibleSolutionERKNS0_5StateERNS0_19KktConditionDetailsE = external hidden unnamed_addr constant [95 x i8], align 1
@.str.53 = external hidden unnamed_addr constant [42 x i8], align 1
@.str.54 = external hidden unnamed_addr constant [5 x i8], align 1
@.str.55 = external hidden unnamed_addr constant [32 x i8], align 1
@.str.56 = external hidden unnamed_addr constant [2 x i8], align 1
@.str.57 = external hidden unnamed_addr constant [45 x i8], align 1
@.str.58 = external hidden unnamed_addr constant [42 x i8], align 1
@.str.59 = external hidden unnamed_addr constant [33 x i8], align 1
@.str.60 = external hidden unnamed_addr constant [5 x i8], align 1
@.str.61 = external hidden unnamed_addr constant [17 x i8], align 1
@.str.62 = external hidden unnamed_addr constant [35 x i8], align 1
@.str.63 = external hidden unnamed_addr constant [2 x i8], align 1

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

; Function Attrs: inlinehint mustprogress uwtable
declare noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8), ptr noundef) local_unnamed_addr #1

declare noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEi(ptr noundef nonnull align 8 dereferenceable(8), i32 noundef) local_unnamed_addr #2

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

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

; Function Attrs: inlinehint mustprogress uwtable
declare noundef nonnull align 8 dereferenceable(8) ptr @_ZSt4endlIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_(ptr noundef nonnull align 8 dereferenceable(8)) #1

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

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

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

; Function Attrs: mustprogress uwtable
define dso_local void @_ZN8presolve13dev_kkt_check26checkBasicFeasibleSolutionERKNS0_5StateERNS0_19KktConditionDetailsE(ptr nocapture noundef nonnull readonly align 8 dereferenceable(168) %0, ptr nocapture noundef nonnull align 8 dereferenceable(32) %1) local_unnamed_addr #3 {
  %3 = getelementptr inbounds i8, ptr %0, i64 152
  %4 = load ptr, ptr %3, align 8, !tbaa !5
  %5 = tail call noundef i64 @_ZNKSt6vectorI16HighsBasisStatusSaIS0_EE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24) %4) #6
  %6 = trunc i64 %5 to i32
  %7 = load i32, ptr %0, align 8, !tbaa !11
  %8 = icmp eq i32 %7, %6
  br i1 %8, label %10, label %9

9:                                                ; preds = %2
  tail call void @__assert_fail(ptr noundef nonnull @.str.52, ptr noundef nonnull @.str.45, i32 noundef 349, ptr noundef nonnull @__PRETTY_FUNCTION__._ZN8presolve13dev_kkt_check26checkBasicFeasibleSolutionERKNS0_5StateERNS0_19KktConditionDetailsE) #7
  unreachable

10:                                               ; preds = %2
  %11 = getelementptr inbounds i8, ptr %0, i64 128
  %12 = load ptr, ptr %11, align 8, !tbaa !12
  %13 = tail call noundef i64 @_ZNKSt6vectorIdSaIdEE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24) %12) #6
  %14 = trunc i64 %13 to i32
  %15 = load i32, ptr %0, align 8, !tbaa !11
  %16 = icmp eq i32 %15, %14
  br i1 %16, label %.preheader106, label %23

.preheader106:                                    ; preds = %10
  %17 = icmp sgt i32 %14, 0
  br i1 %17, label %.lr.ph, label %._crit_edge

.lr.ph:                                           ; preds = %.preheader106
  %18 = getelementptr inbounds i8, ptr %0, i64 104
  %19 = getelementptr inbounds i8, ptr %1, i64 24
  %20 = getelementptr inbounds i8, ptr %1, i64 28
  %21 = getelementptr inbounds i8, ptr %1, i64 16
  %22 = getelementptr inbounds i8, ptr %1, i64 8
  br label %31

23:                                               ; preds = %10
  tail call void @__assert_fail(ptr noundef nonnull @.str.53, ptr noundef nonnull @.str.45, i32 noundef 350, ptr noundef nonnull @__PRETTY_FUNCTION__._ZN8presolve13dev_kkt_check26checkBasicFeasibleSolutionERKNS0_5StateERNS0_19KktConditionDetailsE) #7
  unreachable

._crit_edge:                                      ; preds = %.thread, %.preheader106
  %24 = getelementptr inbounds i8, ptr %0, i64 160
  %25 = load ptr, ptr %24, align 8, !tbaa !13
  %26 = tail call noundef i64 @_ZNKSt6vectorI16HighsBasisStatusSaIS0_EE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24) %25) #6
  %27 = trunc i64 %26 to i32
  %28 = getelementptr inbounds i8, ptr %0, i64 4
  %29 = load i32, ptr %28, align 4, !tbaa !14
  %30 = icmp eq i32 %29, %27
  br i1 %30, label %76, label %75

31:                                               ; preds = %.lr.ph, %.thread
  %indvars.iv = phi i64 [ 0, %.lr.ph ], [ %indvars.iv.next, %.thread ]
  %32 = load ptr, ptr %18, align 8, !tbaa !15
  %33 = tail call noundef nonnull align 4 dereferenceable(4) ptr @_ZNKSt6vectorIiSaIiEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %32, i64 noundef %indvars.iv) #6
  %34 = load i32, ptr %33, align 4, !tbaa !16
  %.not98 = icmp eq i32 %34, 0
  br i1 %.not98, label %.thread, label %35

35:                                               ; preds = %31
  %36 = load i32, ptr %19, align 8, !tbaa !17
  %37 = add nsw i32 %36, 1
  store i32 %37, ptr %19, align 8, !tbaa !17
  %38 = load ptr, ptr %3, align 8, !tbaa !5
  %39 = tail call noundef nonnull align 1 dereferenceable(1) ptr @_ZNKSt6vectorI16HighsBasisStatusSaIS0_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %38, i64 noundef %indvars.iv) #6
  %40 = load i8, ptr %39, align 1, !tbaa !21
  %41 = icmp eq i8 %40, 1
  br i1 %41, label %42, label %.thread

42:                                               ; preds = %35
  %43 = load ptr, ptr %11, align 8, !tbaa !12
  %44 = tail call noundef nonnull align 8 dereferenceable(8) ptr @_ZNKSt6vectorIdSaIdEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %43, i64 noundef %indvars.iv) #6
  %45 = load double, ptr %44, align 8, !tbaa !23
  %46 = tail call double @llvm.fabs.f64(double %45)
  %47 = fcmp ogt double %46, 0x3E7AD7F29ABCAF48
  br i1 %47, label %48, label %.thread

48:                                               ; preds = %42
  %49 = tail call noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) @_ZSt4cout, ptr noundef nonnull @.str.54)
  %50 = trunc nuw nsw i64 %indvars.iv to i32
  %51 = tail call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEi(ptr noundef nonnull align 8 dereferenceable(8) %49, i32 noundef %50)
  %52 = tail call noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) %51, ptr noundef nonnull @.str.55)
  %53 = load ptr, ptr %11, align 8, !tbaa !12
  %54 = tail call noundef nonnull align 8 dereferenceable(8) ptr @_ZNKSt6vectorIdSaIdEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %53, i64 noundef %indvars.iv) #6
  %55 = load double, ptr %54, align 8, !tbaa !23
  %56 = tail call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEd(ptr noundef nonnull align 8 dereferenceable(8) %52, double noundef %55)
  %57 = tail call noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) %56, ptr noundef nonnull @.str.56)
  %58 = tail call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEPFRSoS_E(ptr noundef nonnull align 8 dereferenceable(8) %57, ptr noundef nonnull @_ZSt4endlIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_)
  %59 = load ptr, ptr %11, align 8, !tbaa !12
  %60 = tail call noundef nonnull align 8 dereferenceable(8) ptr @_ZNKSt6vectorIdSaIdEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %59, i64 noundef %indvars.iv) #6
  %61 = load double, ptr %60, align 8, !tbaa !23
  %62 = tail call double @llvm.fabs.f64(double %61)
  %63 = fcmp ueq double %61, 0.000000e+00
  br i1 %63, label %.thread, label %64

64:                                               ; preds = %48
  %65 = load i32, ptr %20, align 4, !tbaa !24
  %66 = add nsw i32 %65, 1
  store i32 %66, ptr %20, align 4, !tbaa !24
  %67 = load double, ptr %21, align 8, !tbaa !25
  %68 = tail call double @llvm.fmuladd.f64(double %61, double %61, double %67)
  store double %68, ptr %21, align 8, !tbaa !25
  %69 = load double, ptr %22, align 8, !tbaa !26
  %70 = fcmp olt double %69, %62
  br i1 %70, label %71, label %.thread

71:                                               ; preds = %64
  store double %62, ptr %22, align 8, !tbaa !26
  br label %.thread

.thread:                                          ; preds = %35, %42, %48, %71, %64, %31
  %indvars.iv.next = add nuw nsw i64 %indvars.iv, 1
  %72 = load i32, ptr %0, align 8, !tbaa !11
  %73 = sext i32 %72 to i64
  %74 = icmp slt i64 %indvars.iv.next, %73
  br i1 %74, label %31, label %._crit_edge, !llvm.loop !27

75:                                               ; preds = %._crit_edge
  tail call void @__assert_fail(ptr noundef nonnull @.str.57, ptr noundef nonnull @.str.45, i32 noundef 373, ptr noundef nonnull @__PRETTY_FUNCTION__._ZN8presolve13dev_kkt_check26checkBasicFeasibleSolutionERKNS0_5StateERNS0_19KktConditionDetailsE) #7
  unreachable

76:                                               ; preds = %._crit_edge
  %77 = getelementptr inbounds i8, ptr %0, i64 144
  %78 = load ptr, ptr %77, align 8, !tbaa !29
  %79 = tail call noundef i64 @_ZNKSt6vectorIdSaIdEE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24) %78) #6
  %80 = trunc i64 %79 to i32
  %81 = load i32, ptr %28, align 4, !tbaa !14
  %82 = icmp eq i32 %81, %80
  br i1 %82, label %.preheader105, label %89

.preheader105:                                    ; preds = %76
  %83 = icmp sgt i32 %80, 0
  br i1 %83, label %.lr.ph109, label %._crit_edge110

.lr.ph109:                                        ; preds = %.preheader105
  %84 = getelementptr inbounds i8, ptr %0, i64 112
  %85 = getelementptr inbounds i8, ptr %1, i64 24
  %86 = getelementptr inbounds i8, ptr %1, i64 28
  %87 = getelementptr inbounds i8, ptr %1, i64 16
  %88 = getelementptr inbounds i8, ptr %1, i64 8
  br label %93

89:                                               ; preds = %76
  tail call void @__assert_fail(ptr noundef nonnull @.str.58, ptr noundef nonnull @.str.45, i32 noundef 374, ptr noundef nonnull @__PRETTY_FUNCTION__._ZN8presolve13dev_kkt_check26checkBasicFeasibleSolutionERKNS0_5StateERNS0_19KktConditionDetailsE) #7
  unreachable

._crit_edge110:                                   ; preds = %.thread103, %.preheader105
  %90 = getelementptr inbounds i8, ptr %1, i64 28
  %91 = load i32, ptr %90, align 4, !tbaa !24
  %92 = icmp eq i32 %91, 0
  br i1 %92, label %137, label %139

93:                                               ; preds = %.lr.ph109, %.thread103
  %indvars.iv123 = phi i64 [ 0, %.lr.ph109 ], [ %indvars.iv.next124, %.thread103 ]
  %94 = load ptr, ptr %84, align 8, !tbaa !30
  %95 = tail call noundef nonnull align 4 dereferenceable(4) ptr @_ZNKSt6vectorIiSaIiEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %94, i64 noundef %indvars.iv123) #6
  %96 = load i32, ptr %95, align 4, !tbaa !16
  %.not97 = icmp eq i32 %96, 0
  br i1 %.not97, label %.thread103, label %97

97:                                               ; preds = %93
  %98 = load i32, ptr %85, align 8, !tbaa !17
  %99 = add nsw i32 %98, 1
  store i32 %99, ptr %85, align 8, !tbaa !17
  %100 = load ptr, ptr %24, align 8, !tbaa !13
  %101 = tail call noundef nonnull align 1 dereferenceable(1) ptr @_ZNKSt6vectorI16HighsBasisStatusSaIS0_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %100, i64 noundef %indvars.iv123) #6
  %102 = load i8, ptr %101, align 1, !tbaa !21
  %103 = icmp eq i8 %102, 1
  br i1 %103, label %104, label %.thread103

104:                                              ; preds = %97
  %105 = load ptr, ptr %77, align 8, !tbaa !29
  %106 = tail call noundef nonnull align 8 dereferenceable(8) ptr @_ZNKSt6vectorIdSaIdEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %105, i64 noundef %indvars.iv123) #6
  %107 = load double, ptr %106, align 8, !tbaa !23
  %108 = tail call double @llvm.fabs.f64(double %107)
  %109 = fcmp ogt double %108, 0x3E7AD7F29ABCAF48
  br i1 %109, label %110, label %.thread103

110:                                              ; preds = %104
  %111 = tail call noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) @_ZSt4cout, ptr noundef nonnull @.str.15)
  %112 = trunc nuw nsw i64 %indvars.iv123 to i32
  %113 = tail call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEi(ptr noundef nonnull align 8 dereferenceable(8) %111, i32 noundef %112)
  %114 = tail call noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) %113, ptr noundef nonnull @.str.59)
  %115 = load ptr, ptr %77, align 8, !tbaa !29
  %116 = tail call noundef nonnull align 8 dereferenceable(8) ptr @_ZNKSt6vectorIdSaIdEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %115, i64 noundef %indvars.iv123) #6
  %117 = load double, ptr %116, align 8, !tbaa !23
  %118 = tail call double @llvm.fabs.f64(double %117)
  %119 = tail call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEd(ptr noundef nonnull align 8 dereferenceable(8) %114, double noundef %118)
  %120 = tail call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEPFRSoS_E(ptr noundef nonnull align 8 dereferenceable(8) %119, ptr noundef nonnull @_ZSt4endlIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_)
  %121 = load ptr, ptr %77, align 8, !tbaa !29
  %122 = tail call noundef nonnull align 8 dereferenceable(8) ptr @_ZNKSt6vectorIdSaIdEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %121, i64 noundef %indvars.iv123) #6
  %123 = load double, ptr %122, align 8, !tbaa !23
  %124 = tail call double @llvm.fabs.f64(double %123)
  %125 = fcmp ueq double %123, 0.000000e+00
  br i1 %125, label %.thread103, label %126

126:                                              ; preds = %110
  %127 = load i32, ptr %86, align 4, !tbaa !24
  %128 = add nsw i32 %127, 1
  store i32 %128, ptr %86, align 4, !tbaa !24
  %129 = load double, ptr %87, align 8, !tbaa !25
  %130 = tail call double @llvm.fmuladd.f64(double %123, double %123, double %129)
  store double %130, ptr %87, align 8, !tbaa !25
  %131 = load double, ptr %88, align 8, !tbaa !26
  %132 = fcmp olt double %131, %124
  br i1 %132, label %133, label %.thread103

133:                                              ; preds = %126
  store double %124, ptr %88, align 8, !tbaa !26
  br label %.thread103

.thread103:                                       ; preds = %97, %104, %110, %133, %126, %93
  %indvars.iv.next124 = add nuw nsw i64 %indvars.iv123, 1
  %134 = load i32, ptr %28, align 4, !tbaa !14
  %135 = sext i32 %134 to i64
  %136 = icmp slt i64 %indvars.iv.next124, %135
  br i1 %136, label %93, label %._crit_edge110, !llvm.loop !31

137:                                              ; preds = %._crit_edge110
  %138 = tail call noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) @_ZSt4cout, ptr noundef nonnull @.str.60)
  br label %143

139:                                              ; preds = %._crit_edge110
  %140 = tail call noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) @_ZSt4cout, ptr noundef nonnull @.str.61)
  %141 = load i32, ptr %90, align 4, !tbaa !24
  %142 = tail call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEi(ptr noundef nonnull align 8 dereferenceable(8) %140, i32 noundef %141)
  br label %143

143:                                              ; preds = %139, %137
  %.sink = phi ptr [ %142, %139 ], [ %138, %137 ]
  %144 = tail call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEPFRSoS_E(ptr noundef nonnull align 8 dereferenceable(8) %.sink, ptr noundef nonnull @_ZSt4endlIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_)
  %145 = load i32, ptr %28, align 4, !tbaa !14
  %146 = icmp sgt i32 %145, 0
  br i1 %146, label %.lr.ph115, label %.preheader

.lr.ph115:                                        ; preds = %143
  %147 = getelementptr inbounds i8, ptr %0, i64 112
  br label %151

.preheader:                                       ; preds = %165, %143
  %.089.lcssa = phi i32 [ 0, %143 ], [ %spec.select, %165 ]
  %.087.lcssa = phi i32 [ 0, %143 ], [ %.188, %165 ]
  %148 = load i32, ptr %0, align 8, !tbaa !11
  %149 = icmp sgt i32 %148, 0
  br i1 %149, label %.lr.ph119, label %._crit_edge120

.lr.ph119:                                        ; preds = %.preheader
  %150 = getelementptr inbounds i8, ptr %0, i64 104
  br label %171

151:                                              ; preds = %.lr.ph115, %165
  %indvars.iv126 = phi i64 [ 0, %.lr.ph115 ], [ %indvars.iv.next127, %165 ]
  %.087112 = phi i32 [ 0, %.lr.ph115 ], [ %.188, %165 ]
  %.089111 = phi i32 [ 0, %.lr.ph115 ], [ %spec.select, %165 ]
  %152 = load ptr, ptr %147, align 8, !tbaa !30
  %153 = tail call noundef nonnull align 4 dereferenceable(4) ptr @_ZNKSt6vectorIiSaIiEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %152, i64 noundef %indvars.iv126) #6
  %154 = load i32, ptr %153, align 4, !tbaa !16
  %.not95 = icmp ne i32 %154, 0
  %155 = zext i1 %.not95 to i32
  %spec.select = add nuw nsw i32 %.089111, %155
  %156 = load ptr, ptr %147, align 8, !tbaa !30
  %157 = tail call noundef nonnull align 4 dereferenceable(4) ptr @_ZNKSt6vectorIiSaIiEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %156, i64 noundef %indvars.iv126) #6
  %158 = load i32, ptr %157, align 4, !tbaa !16
  %.not96 = icmp eq i32 %158, 0
  br i1 %.not96, label %165, label %159

159:                                              ; preds = %151
  %160 = load ptr, ptr %24, align 8, !tbaa !13
  %161 = tail call noundef nonnull align 1 dereferenceable(1) ptr @_ZNKSt6vectorI16HighsBasisStatusSaIS0_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %160, i64 noundef %indvars.iv126) #6
  %162 = load i8, ptr %161, align 1, !tbaa !21
  %163 = icmp eq i8 %162, 1
  %164 = zext i1 %163 to i32
  %spec.select99 = add nsw i32 %.087112, %164
  br label %165

165:                                              ; preds = %159, %151
  %.188 = phi i32 [ %.087112, %151 ], [ %spec.select99, %159 ]
  %indvars.iv.next127 = add nuw nsw i64 %indvars.iv126, 1
  %166 = load i32, ptr %28, align 4, !tbaa !14
  %167 = sext i32 %166 to i64
  %168 = icmp slt i64 %indvars.iv.next127, %167
  br i1 %168, label %151, label %.preheader, !llvm.loop !32

._crit_edge120:                                   ; preds = %181, %.preheader
  %.086.lcssa = phi i32 [ 0, %.preheader ], [ %.1, %181 ]
  %169 = add nsw i32 %.086.lcssa, %.087.lcssa
  %170 = icmp eq i32 %169, %.089.lcssa
  br i1 %170, label %191, label %185

171:                                              ; preds = %.lr.ph119, %181
  %indvars.iv129 = phi i64 [ 0, %.lr.ph119 ], [ %indvars.iv.next130, %181 ]
  %.086117 = phi i32 [ 0, %.lr.ph119 ], [ %.1, %181 ]
  %172 = load ptr, ptr %150, align 8, !tbaa !15
  %173 = tail call noundef nonnull align 4 dereferenceable(4) ptr @_ZNKSt6vectorIiSaIiEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %172, i64 noundef %indvars.iv129) #6
  %174 = load i32, ptr %173, align 4, !tbaa !16
  %.not = icmp eq i32 %174, 0
  br i1 %.not, label %181, label %175

175:                                              ; preds = %171
  %176 = load ptr, ptr %3, align 8, !tbaa !5
  %177 = tail call noundef nonnull align 1 dereferenceable(1) ptr @_ZNKSt6vectorI16HighsBasisStatusSaIS0_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %176, i64 noundef %indvars.iv129) #6
  %178 = load i8, ptr %177, align 1, !tbaa !21
  %179 = icmp eq i8 %178, 1
  %180 = zext i1 %179 to i32
  %spec.select100 = add nsw i32 %.086117, %180
  br label %181

181:                                              ; preds = %175, %171
  %.1 = phi i32 [ %.086117, %171 ], [ %spec.select100, %175 ]
  %indvars.iv.next130 = add nuw nsw i64 %indvars.iv129, 1
  %182 = load i32, ptr %0, align 8, !tbaa !11
  %183 = sext i32 %182 to i64
  %184 = icmp slt i64 %indvars.iv.next130, %183
  br i1 %184, label %171, label %._crit_edge120, !llvm.loop !33

185:                                              ; preds = %._crit_edge120
  store i32 -1, ptr %90, align 4, !tbaa !24
  %186 = tail call noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) @_ZSt4cout, ptr noundef nonnull @.str.62)
  %187 = tail call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEi(ptr noundef nonnull align 8 dereferenceable(8) %186, i32 noundef %169)
  %188 = tail call noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) %187, ptr noundef nonnull @.str.63)
  %189 = tail call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEi(ptr noundef nonnull align 8 dereferenceable(8) %188, i32 noundef %.089.lcssa)
  %190 = tail call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEPFRSoS_E(ptr noundef nonnull align 8 dereferenceable(8) %189, ptr noundef nonnull @_ZSt4endlIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_)
  br label %191

191:                                              ; preds = %185, %._crit_edge120
  ret void
}

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

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

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

attributes #0 = { 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 #1 = { 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 #2 = { "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 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 = { noreturn nounwind "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }
attributes #6 = { nounwind }
attributes #7 = { noreturn nounwind }

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

!0 = !{i32 1, !"wchar_size", i32 4}
!1 = !{i32 8, !"PIC Level", i32 2}
!2 = !{i32 7, !"PIE Level", i32 2}
!3 = !{i32 7, !"uwtable", i32 2}
!4 = !{!"clang version 19.1.0 (git@github.com:llvm/llvm-project.git a4bf6cd7cfb1a1421ba92bca9d017b49936c55e4)"}
!5 = !{!6, !10, i64 152}
!6 = !{!"_ZTSN8presolve13dev_kkt_check5StateE", !7, i64 0, !7, i64 4, !10, i64 8, !10, i64 16, !10, i64 24, !10, i64 32, !10, i64 40, !10, i64 48, !10, i64 56, !10, i64 64, !10, i64 72, !10, i64 80, !10, i64 88, !10, i64 96, !10, i64 104, !10, i64 112, !10, i64 120, !10, i64 128, !10, i64 136, !10, i64 144, !10, i64 152, !10, i64 160}
!7 = !{!"int", !8, i64 0}
!8 = !{!"omnipotent char", !9, i64 0}
!9 = !{!"Simple C++ TBAA"}
!10 = !{!"any pointer", !8, i64 0}
!11 = !{!6, !7, i64 0}
!12 = !{!6, !10, i64 128}
!13 = !{!6, !10, i64 160}
!14 = !{!6, !7, i64 4}
!15 = !{!6, !10, i64 104}
!16 = !{!7, !7, i64 0}
!17 = !{!18, !7, i64 24}
!18 = !{!"_ZTSN8presolve13dev_kkt_check19KktConditionDetailsE", !19, i64 0, !20, i64 8, !20, i64 16, !7, i64 24, !7, i64 28}
!19 = !{!"_ZTSN8presolve13dev_kkt_check12KktConditionE", !8, i64 0}
!20 = !{!"double", !8, i64 0}
!21 = !{!22, !22, i64 0}
!22 = !{!"_ZTS16HighsBasisStatus", !8, i64 0}
!23 = !{!20, !20, i64 0}
!24 = !{!18, !7, i64 28}
!25 = !{!18, !20, i64 16}
!26 = !{!18, !20, i64 8}
!27 = distinct !{!27, !28}
!28 = !{!"llvm.loop.mustprogress"}
!29 = !{!6, !10, i64 144}
!30 = !{!6, !10, i64 112}
!31 = distinct !{!31, !28}
!32 = distinct !{!32, !28}
!33 = distinct !{!33, !28}


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