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

; 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.ipx::IndexedVector" = type <{ %"class.std::valarray", %"class.std::vector", i32, [4 x i8] }>
%"class.std::valarray" = type { i64, ptr }
%"class.std::vector" = type { %"struct.std::_Vector_base" }
%"struct.std::_Vector_base" = type { %"struct.std::_Vector_base<int, std::allocator<int>>::_Vector_impl" }
%"struct.std::_Vector_base<int, std::allocator<int>>::_Vector_impl" = type { %"struct.std::_Vector_base<int, std::allocator<int>>::_Vector_impl_data" }
%"struct.std::_Vector_base<int, std::allocator<int>>::_Vector_impl_data" = type { ptr, ptr, ptr }
%class.anon = type { ptr, ptr, ptr, ptr }
%"class.std::__cxx11::basic_string" = type { %"struct.std::__cxx11::basic_string<char>::_Alloc_hider", i64, %union.anon }
%"struct.std::__cxx11::basic_string<char>::_Alloc_hider" = type { ptr }
%union.anon = type { i64, [8 x i8] }
%"class.ipx::KKTSolverBasis" = type { %"class.ipx::KKTSolver", ptr, ptr, ptr, %"class.ipx::SplittedNormalMatrix", %"class.std::valarray", i8, i32, i32, i32 }
%"class.ipx::KKTSolver" = type { ptr }
%"class.ipx::SplittedNormalMatrix" = type { %"class.ipx::LinearOperator", ptr, %"class.ipx::SparseMatrix", %"class.ipx::SparseMatrix", %"class.ipx::SparseMatrix", %"class.std::vector", %"class.std::vector", %"class.std::vector", %"class.std::valarray", i8, double, double, double }
%"class.ipx::LinearOperator" = type { ptr }
%"class.ipx::SparseMatrix" = type { i32, %"class.std::vector", %"class.std::vector", %"class.std::vector.3", %"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 }
%struct.ipx_info = type { i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, double, double, double, double, double, double, double, double, double, double, double, double, double, double, i32, i32, i32, i32, i32, i32, i32, double, double, double, double, double, double, double, double, double, double, double, double, double, double, double, double, double, double, double, double, double, double, double, double, i32, i32, i32, i32, double, double, double, double }

@.str.12 = external hidden unnamed_addr constant [81 x i8], align 1
@.str.19 = external hidden unnamed_addr constant [47 x i8], align 1
@__PRETTY_FUNCTION__._ZN3ipx14KKTSolverBasis10DropPrimalEPNS_7IterateEPNS_4InfoE = external hidden unnamed_addr constant [56 x i8], align 1
@.str.20 = external hidden unnamed_addr constant [13 x i8], align 1
@.str.21 = external hidden unnamed_addr constant [13 x i8], align 1
@.str.22 = external hidden unnamed_addr constant [33 x i8], align 1
@.str.23 = external hidden unnamed_addr constant [25 x i8], align 1
@.str.24 = external hidden unnamed_addr constant [7 x i8], align 1
@.str.25 = external hidden unnamed_addr constant [12 x i8], align 1
@.str.26 = external hidden unnamed_addr constant [41 x i8], align 1
@.str.27 = external hidden unnamed_addr constant [41 x i8], align 1

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

declare i32 @__gxx_personality_v0(...)

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

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

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

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

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

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

; Function Attrs: mustprogress uwtable
define dso_local void @_ZN3ipx14KKTSolverBasis10DropPrimalEPNS_7IterateEPNS_4InfoE(ptr noundef nonnull align 8 dereferenceable(584) %0, ptr noundef %1, ptr noundef %2) #3 align 2 personality ptr @__gxx_personality_v0 {
  %4 = alloca ptr, align 8
  %5 = alloca ptr, align 8
  %6 = alloca ptr, align 8
  %7 = alloca i32, align 4
  %8 = alloca i32, align 4
  %9 = alloca ptr, align 8
  %10 = alloca ptr, align 8
  %11 = alloca ptr, align 8
  %12 = alloca ptr, align 8
  %13 = alloca %"class.ipx::IndexedVector", align 8
  %14 = alloca %"class.ipx::IndexedVector", align 8
  %15 = alloca ptr, align 8
  %16 = alloca i32, align 4
  %17 = alloca double, align 8
  %18 = alloca double, align 8
  %19 = alloca %"class.std::vector", align 8
  %20 = alloca i32, align 4
  %21 = alloca i32, align 4
  %22 = alloca i32, align 4
  %23 = alloca double, align 8
  %24 = alloca double, align 8
  %25 = alloca %"class.std::valarray", align 8
  %26 = alloca i32, align 4
  %27 = alloca i32, align 4
  %28 = alloca i32, align 4
  %29 = alloca i32, align 4
  %30 = alloca double, align 8
  %31 = alloca i32, align 4
  %32 = alloca double, align 8
  %33 = alloca %class.anon, align 8
  %34 = alloca double, align 8
  %35 = alloca %"class.std::__cxx11::basic_string", align 8
  %36 = alloca i8, align 1
  store ptr %0, ptr %4, align 8, !tbaa !5
  store ptr %1, ptr %5, align 8, !tbaa !5
  store ptr %2, ptr %6, align 8, !tbaa !5
  %37 = load ptr, ptr %4, align 8
  call void @llvm.lifetime.start.p0(i64 4, ptr %7) #7
  %38 = getelementptr inbounds %"class.ipx::KKTSolverBasis", ptr %37, i32 0, i32 2
  %39 = load ptr, ptr %38, align 8, !tbaa !9
  %40 = call noundef i32 @_ZNK3ipx5Model4rowsEv(ptr noundef nonnull align 8 dereferenceable(704) %39)
  store i32 %40, ptr %7, align 4, !tbaa !28
  call void @llvm.lifetime.start.p0(i64 4, ptr %8) #7
  %41 = getelementptr inbounds %"class.ipx::KKTSolverBasis", ptr %37, i32 0, i32 2
  %42 = load ptr, ptr %41, align 8, !tbaa !9
  %43 = call noundef i32 @_ZNK3ipx5Model4colsEv(ptr noundef nonnull align 8 dereferenceable(704) %42)
  store i32 %43, ptr %8, align 4, !tbaa !28
  call void @llvm.lifetime.start.p0(i64 8, ptr %9) #7
  %44 = load ptr, ptr %5, align 8, !tbaa !5
  %45 = call noundef nonnull align 8 dereferenceable(16) ptr @_ZNK3ipx7Iterate2xlEv(ptr noundef nonnull align 8 dereferenceable(296) %44)
  store ptr %45, ptr %9, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %10) #7
  %46 = load ptr, ptr %5, align 8, !tbaa !5
  %47 = call noundef nonnull align 8 dereferenceable(16) ptr @_ZNK3ipx7Iterate2xuEv(ptr noundef nonnull align 8 dereferenceable(296) %46)
  store ptr %47, ptr %10, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %11) #7
  %48 = load ptr, ptr %5, align 8, !tbaa !5
  %49 = call noundef nonnull align 8 dereferenceable(16) ptr @_ZNK3ipx7Iterate2zlEv(ptr noundef nonnull align 8 dereferenceable(296) %48)
  store ptr %49, ptr %11, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %12) #7
  %50 = load ptr, ptr %5, align 8, !tbaa !5
  %51 = call noundef nonnull align 8 dereferenceable(16) ptr @_ZNK3ipx7Iterate2zuEv(ptr noundef nonnull align 8 dereferenceable(296) %50)
  store ptr %51, ptr %12, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 48, ptr %13) #7
  %52 = load i32, ptr %7, align 4, !tbaa !28
  call void @_ZN3ipx13IndexedVectorC1Ei(ptr noundef nonnull align 8 dereferenceable(44) %13, i32 noundef %52)
  call void @llvm.lifetime.start.p0(i64 48, ptr %14) #7
  %53 = load i32, ptr %8, align 4, !tbaa !28
  %54 = load i32, ptr %7, align 4, !tbaa !28
  %55 = add nsw i32 %53, %54
  invoke void @_ZN3ipx13IndexedVectorC1Ei(ptr noundef nonnull align 8 dereferenceable(44) %14, i32 noundef %55)
          to label %56 unwind label %68

56:                                               ; preds = %3
  call void @llvm.lifetime.start.p0(i64 8, ptr %17) #7
  %57 = getelementptr inbounds %"class.ipx::KKTSolverBasis", ptr %37, i32 0, i32 1
  %58 = load ptr, ptr %57, align 8, !tbaa !29
  %59 = invoke noundef double @_ZNK3ipx7Control15ipm_drop_primalEv(ptr noundef nonnull align 8 dereferenceable(1496) %58)
          to label %60 unwind label %72

60:                                               ; preds = %56
  store double %59, ptr %17, align 8, !tbaa !30
  call void @llvm.lifetime.start.p0(i64 8, ptr %18) #7
  store double 2.000000e+00, ptr %18, align 8, !tbaa !30
  %61 = load ptr, ptr %6, align 8, !tbaa !5
  %62 = getelementptr inbounds %struct.ipx_info, ptr %61, i32 0, i32 3
  store i32 0, ptr %62, align 4, !tbaa !31
  call void @llvm.lifetime.start.p0(i64 24, ptr %19) #7
  call void @_ZNSt6vectorIiSaIiEEC2Ev(ptr noundef nonnull align 8 dereferenceable(24) %19) #7
  call void @llvm.lifetime.start.p0(i64 4, ptr %20) #7
  store i32 0, ptr %20, align 4, !tbaa !28
  br label %63

63:                                               ; preds = %187, %60
  %64 = load i32, ptr %20, align 4, !tbaa !28
  %65 = load i32, ptr %7, align 4, !tbaa !28
  %66 = icmp slt i32 %64, %65
  br i1 %66, label %76, label %67

67:                                               ; preds = %63
  store i32 2, ptr %21, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %20) #7
  br label %191

68:                                               ; preds = %3
  %69 = landingpad { ptr, i32 }
          cleanup
  %70 = extractvalue { ptr, i32 } %69, 0
  store ptr %70, ptr %15, align 8
  %71 = extractvalue { ptr, i32 } %69, 1
  store i32 %71, ptr %16, align 4
  br label %467

72:                                               ; preds = %56
  %73 = landingpad { ptr, i32 }
          cleanup
  %74 = extractvalue { ptr, i32 } %73, 0
  store ptr %74, ptr %15, align 8
  %75 = extractvalue { ptr, i32 } %73, 1
  store i32 %75, ptr %16, align 4
  br label %466

76:                                               ; preds = %63
  call void @llvm.lifetime.start.p0(i64 4, ptr %22) #7
  %77 = getelementptr inbounds %"class.ipx::KKTSolverBasis", ptr %37, i32 0, i32 3
  %78 = load ptr, ptr %77, align 8, !tbaa !33
  %79 = load i32, ptr %20, align 4, !tbaa !28
  %80 = invoke noundef i32 @_ZNK3ipx5BasisixEi(ptr noundef nonnull align 8 dereferenceable(176) %78, i32 noundef %79)
          to label %81 unwind label %89

81:                                               ; preds = %76
  store i32 %80, ptr %22, align 4, !tbaa !28
  %82 = getelementptr inbounds %"class.ipx::KKTSolverBasis", ptr %37, i32 0, i32 3
  %83 = load ptr, ptr %82, align 8, !tbaa !33
  %84 = load i32, ptr %22, align 4, !tbaa !28
  %85 = invoke noundef i32 @_ZNK3ipx5Basis8StatusOfEi(ptr noundef nonnull align 8 dereferenceable(176) %83, i32 noundef %84)
          to label %86 unwind label %89

86:                                               ; preds = %81
  %87 = icmp ne i32 %85, 0
  br i1 %87, label %88, label %93

88:                                               ; preds = %86
  store i32 4, ptr %21, align 4
  br label %184

89:                                               ; preds = %101, %93, %81, %76
  %90 = landingpad { ptr, i32 }
          cleanup
  %91 = extractvalue { ptr, i32 } %90, 0
  store ptr %91, ptr %15, align 8
  %92 = extractvalue { ptr, i32 } %90, 1
  store i32 %92, ptr %16, align 4
  br label %190

93:                                               ; preds = %86
  %94 = load ptr, ptr %9, align 8, !tbaa !5
  %95 = load i32, ptr %22, align 4, !tbaa !28
  %96 = sext i32 %95 to i64
  %97 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNKSt8valarrayIdEixEm(ptr noundef nonnull align 8 dereferenceable(16) %94, i64 noundef %96) #7
  %98 = load double, ptr %97, align 8, !tbaa !30
  %99 = invoke noundef zeroext i1 @_ZSt8isfinited(double noundef %98)
          to label %100 unwind label %89

100:                                              ; preds = %93
  br i1 %99, label %109, label %101

101:                                              ; preds = %100
  %102 = load ptr, ptr %10, align 8, !tbaa !5
  %103 = load i32, ptr %22, align 4, !tbaa !28
  %104 = sext i32 %103 to i64
  %105 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNKSt8valarrayIdEixEm(ptr noundef nonnull align 8 dereferenceable(16) %102, i64 noundef %104) #7
  %106 = load double, ptr %105, align 8, !tbaa !30
  %107 = invoke noundef zeroext i1 @_ZSt8isfinited(double noundef %106)
          to label %108 unwind label %89

108:                                              ; preds = %101
  br label %109

109:                                              ; preds = %108, %100
  %110 = phi i1 [ true, %100 ], [ %107, %108 ]
  br i1 %110, label %111, label %112

111:                                              ; preds = %109
  br label %114

112:                                              ; preds = %109
  call void @__assert_fail(ptr noundef @.str.19, ptr noundef @.str.12, i32 noundef 211, ptr noundef @__PRETTY_FUNCTION__._ZN3ipx14KKTSolverBasis10DropPrimalEPNS_7IterateEPNS_4InfoE) #8
  unreachable

113:                                              ; No predecessors!
  br label %114

114:                                              ; preds = %113, %111
  %115 = load ptr, ptr %9, align 8, !tbaa !5
  %116 = load i32, ptr %22, align 4, !tbaa !28
  %117 = sext i32 %116 to i64
  %118 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNKSt8valarrayIdEixEm(ptr noundef nonnull align 8 dereferenceable(16) %115, i64 noundef %117) #7
  %119 = load double, ptr %118, align 8, !tbaa !30
  %120 = fcmp ogt double %119, 0.000000e+00
  br i1 %120, label %121, label %122

121:                                              ; preds = %114
  br label %124

122:                                              ; preds = %114
  call void @__assert_fail(ptr noundef @.str.20, ptr noundef @.str.12, i32 noundef 212, ptr noundef @__PRETTY_FUNCTION__._ZN3ipx14KKTSolverBasis10DropPrimalEPNS_7IterateEPNS_4InfoE) #8
  unreachable

123:                                              ; No predecessors!
  br label %124

124:                                              ; preds = %123, %121
  %125 = load ptr, ptr %10, align 8, !tbaa !5
  %126 = load i32, ptr %22, align 4, !tbaa !28
  %127 = sext i32 %126 to i64
  %128 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNKSt8valarrayIdEixEm(ptr noundef nonnull align 8 dereferenceable(16) %125, i64 noundef %127) #7
  %129 = load double, ptr %128, align 8, !tbaa !30
  %130 = fcmp ogt double %129, 0.000000e+00
  br i1 %130, label %131, label %132

131:                                              ; preds = %124
  br label %134

132:                                              ; preds = %124
  call void @__assert_fail(ptr noundef @.str.21, ptr noundef @.str.12, i32 noundef 213, ptr noundef @__PRETTY_FUNCTION__._ZN3ipx14KKTSolverBasis10DropPrimalEPNS_7IterateEPNS_4InfoE) #8
  unreachable

133:                                              ; No predecessors!
  br label %134

134:                                              ; preds = %133, %131
  call void @llvm.lifetime.start.p0(i64 8, ptr %23) #7
  call void @llvm.lifetime.start.p0(i64 8, ptr %24) #7
  %135 = load ptr, ptr %9, align 8, !tbaa !5
  %136 = load i32, ptr %22, align 4, !tbaa !28
  %137 = sext i32 %136 to i64
  %138 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNKSt8valarrayIdEixEm(ptr noundef nonnull align 8 dereferenceable(16) %135, i64 noundef %137) #7
  %139 = load double, ptr %138, align 8, !tbaa !30
  %140 = load ptr, ptr %10, align 8, !tbaa !5
  %141 = load i32, ptr %22, align 4, !tbaa !28
  %142 = sext i32 %141 to i64
  %143 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNKSt8valarrayIdEixEm(ptr noundef nonnull align 8 dereferenceable(16) %140, i64 noundef %142) #7
  %144 = load double, ptr %143, align 8, !tbaa !30
  %145 = fcmp ole double %139, %144
  br i1 %145, label %146, label %157

146:                                              ; preds = %134
  %147 = load ptr, ptr %9, align 8, !tbaa !5
  %148 = load i32, ptr %22, align 4, !tbaa !28
  %149 = sext i32 %148 to i64
  %150 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNKSt8valarrayIdEixEm(ptr noundef nonnull align 8 dereferenceable(16) %147, i64 noundef %149) #7
  %151 = load double, ptr %150, align 8, !tbaa !30
  store double %151, ptr %23, align 8, !tbaa !30
  %152 = load ptr, ptr %11, align 8, !tbaa !5
  %153 = load i32, ptr %22, align 4, !tbaa !28
  %154 = sext i32 %153 to i64
  %155 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNKSt8valarrayIdEixEm(ptr noundef nonnull align 8 dereferenceable(16) %152, i64 noundef %154) #7
  %156 = load double, ptr %155, align 8, !tbaa !30
  store double %156, ptr %24, align 8, !tbaa !30
  br label %168

157:                                              ; preds = %134
  %158 = load ptr, ptr %10, align 8, !tbaa !5
  %159 = load i32, ptr %22, align 4, !tbaa !28
  %160 = sext i32 %159 to i64
  %161 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNKSt8valarrayIdEixEm(ptr noundef nonnull align 8 dereferenceable(16) %158, i64 noundef %160) #7
  %162 = load double, ptr %161, align 8, !tbaa !30
  store double %162, ptr %23, align 8, !tbaa !30
  %163 = load ptr, ptr %12, align 8, !tbaa !5
  %164 = load i32, ptr %22, align 4, !tbaa !28
  %165 = sext i32 %164 to i64
  %166 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNKSt8valarrayIdEixEm(ptr noundef nonnull align 8 dereferenceable(16) %163, i64 noundef %165) #7
  %167 = load double, ptr %166, align 8, !tbaa !30
  store double %167, ptr %24, align 8, !tbaa !30
  br label %168

168:                                              ; preds = %157, %146
  %169 = load double, ptr %23, align 8, !tbaa !30
  %170 = load double, ptr %24, align 8, !tbaa !30
  %171 = fmul double 1.000000e-02, %170
  %172 = fcmp olt double %169, %171
  br i1 %172, label %173, label %183

173:                                              ; preds = %168
  %174 = load double, ptr %23, align 8, !tbaa !30
  %175 = load double, ptr %17, align 8, !tbaa !30
  %176 = fcmp ole double %174, %175
  br i1 %176, label %177, label %183

177:                                              ; preds = %173
  invoke void @_ZNSt6vectorIiSaIiEE9push_backERKi(ptr noundef nonnull align 8 dereferenceable(24) %19, ptr noundef nonnull align 4 dereferenceable(4) %22)
          to label %178 unwind label %179

178:                                              ; preds = %177
  br label %183

179:                                              ; preds = %177
  %180 = landingpad { ptr, i32 }
          cleanup
  %181 = extractvalue { ptr, i32 } %180, 0
  store ptr %181, ptr %15, align 8
  %182 = extractvalue { ptr, i32 } %180, 1
  store i32 %182, ptr %16, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %24) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %23) #7
  br label %190

183:                                              ; preds = %178, %173, %168
  call void @llvm.lifetime.end.p0(i64 8, ptr %24) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %23) #7
  store i32 0, ptr %21, align 4
  br label %184

184:                                              ; preds = %183, %88
  call void @llvm.lifetime.end.p0(i64 4, ptr %22) #7
  %185 = load i32, ptr %21, align 4
  switch i32 %185, label %473 [
    i32 0, label %186
    i32 4, label %187
  ]

186:                                              ; preds = %184
  br label %187

187:                                              ; preds = %186, %184
  %188 = load i32, ptr %20, align 4, !tbaa !28
  %189 = add nsw i32 %188, 1
  store i32 %189, ptr %20, align 4, !tbaa !28
  br label %63, !llvm.loop !34

190:                                              ; preds = %179, %89
  call void @llvm.lifetime.end.p0(i64 4, ptr %22) #7
  call void @llvm.lifetime.end.p0(i64 4, ptr %20) #7
  br label %465

191:                                              ; preds = %67
  %192 = call noundef zeroext i1 @_ZNKSt6vectorIiSaIiEE5emptyEv(ptr noundef nonnull align 8 dereferenceable(24) %19) #7
  br i1 %192, label %193, label %194

193:                                              ; preds = %191
  store i32 1, ptr %21, align 4
  br label %460

194:                                              ; preds = %191
  call void @llvm.lifetime.start.p0(i64 16, ptr %25) #7
  %195 = load i32, ptr %7, align 4, !tbaa !28
  %196 = sext i32 %195 to i64
  invoke void @_ZNSt8valarrayIdEC2Em(ptr noundef nonnull align 8 dereferenceable(16) %25, i64 noundef %196)
          to label %197 unwind label %203

197:                                              ; preds = %194
  call void @llvm.lifetime.start.p0(i64 4, ptr %26) #7
  store i32 0, ptr %26, align 4, !tbaa !28
  br label %198

198:                                              ; preds = %245, %197
  %199 = load i32, ptr %26, align 4, !tbaa !28
  %200 = load i32, ptr %7, align 4, !tbaa !28
  %201 = icmp slt i32 %199, %200
  br i1 %201, label %207, label %202

202:                                              ; preds = %198
  store i32 5, ptr %21, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %26) #7
  br label %248

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

207:                                              ; preds = %198
  call void @llvm.lifetime.start.p0(i64 4, ptr %27) #7
  %208 = getelementptr inbounds %"class.ipx::KKTSolverBasis", ptr %37, i32 0, i32 3
  %209 = load ptr, ptr %208, align 8, !tbaa !33
  %210 = load i32, ptr %26, align 4, !tbaa !28
  %211 = invoke noundef i32 @_ZNK3ipx5BasisixEi(ptr noundef nonnull align 8 dereferenceable(176) %209, i32 noundef %210)
          to label %212 unwind label %230

212:                                              ; preds = %207
  store i32 %211, ptr %27, align 4, !tbaa !28
  %213 = getelementptr inbounds %"class.ipx::KKTSolverBasis", ptr %37, i32 0, i32 5
  %214 = load i32, ptr %27, align 4, !tbaa !28
  %215 = sext i32 %214 to i64
  %216 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt8valarrayIdEixEm(ptr noundef nonnull align 8 dereferenceable(16) %213, i64 noundef %215) #7
  %217 = load double, ptr %216, align 8, !tbaa !30
  %218 = fdiv double 1.000000e+00, %217
  %219 = load i32, ptr %26, align 4, !tbaa !28
  %220 = sext i32 %219 to i64
  %221 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt8valarrayIdEixEm(ptr noundef nonnull align 8 dereferenceable(16) %25, i64 noundef %220) #7
  store double %218, ptr %221, align 8, !tbaa !30
  %222 = load i32, ptr %26, align 4, !tbaa !28
  %223 = sext i32 %222 to i64
  %224 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt8valarrayIdEixEm(ptr noundef nonnull align 8 dereferenceable(16) %25, i64 noundef %223) #7
  %225 = load double, ptr %224, align 8, !tbaa !30
  %226 = invoke noundef zeroext i1 @_ZSt8isfinited(double noundef %225)
          to label %227 unwind label %230

227:                                              ; preds = %212
  br i1 %226, label %228, label %229

228:                                              ; preds = %227
  br label %235

229:                                              ; preds = %227
  call void @__assert_fail(ptr noundef @.str.22, ptr noundef @.str.12, i32 noundef 234, ptr noundef @__PRETTY_FUNCTION__._ZN3ipx14KKTSolverBasis10DropPrimalEPNS_7IterateEPNS_4InfoE) #8
  unreachable

230:                                              ; preds = %212, %207
  %231 = landingpad { ptr, i32 }
          cleanup
  %232 = extractvalue { ptr, i32 } %231, 0
  store ptr %232, ptr %15, align 8
  %233 = extractvalue { ptr, i32 } %231, 1
  store i32 %233, ptr %16, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %27) #7
  call void @llvm.lifetime.end.p0(i64 4, ptr %26) #7
  br label %463

234:                                              ; No predecessors!
  br label %235

235:                                              ; preds = %234, %228
  %236 = load i32, ptr %26, align 4, !tbaa !28
  %237 = sext i32 %236 to i64
  %238 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt8valarrayIdEixEm(ptr noundef nonnull align 8 dereferenceable(16) %25, i64 noundef %237) #7
  %239 = load double, ptr %238, align 8, !tbaa !30
  %240 = fcmp oge double %239, 0.000000e+00
  br i1 %240, label %241, label %242

241:                                              ; preds = %235
  br label %244

242:                                              ; preds = %235
  call void @__assert_fail(ptr noundef @.str.23, ptr noundef @.str.12, i32 noundef 235, ptr noundef @__PRETTY_FUNCTION__._ZN3ipx14KKTSolverBasis10DropPrimalEPNS_7IterateEPNS_4InfoE) #8
  unreachable

243:                                              ; No predecessors!
  br label %244

244:                                              ; preds = %243, %241
  call void @llvm.lifetime.end.p0(i64 4, ptr %27) #7
  br label %245

245:                                              ; preds = %244
  %246 = load i32, ptr %26, align 4, !tbaa !28
  %247 = add nsw i32 %246, 1
  store i32 %247, ptr %26, align 4, !tbaa !28
  br label %198, !llvm.loop !36

248:                                              ; preds = %202
  br label %249

249:                                              ; preds = %454, %452, %248
  %250 = call noundef zeroext i1 @_ZNKSt6vectorIiSaIiEE5emptyEv(ptr noundef nonnull align 8 dereferenceable(24) %19) #7
  %251 = xor i1 %250, true
  br i1 %251, label %252, label %458

252:                                              ; preds = %249
  call void @llvm.lifetime.start.p0(i64 4, ptr %28) #7
  %253 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNSt6vectorIiSaIiEE4backEv(ptr noundef nonnull align 8 dereferenceable(24) %19) #7
  %254 = load i32, ptr %253, align 4, !tbaa !28
  store i32 %254, ptr %28, align 4, !tbaa !28
  call void @llvm.lifetime.start.p0(i64 4, ptr %29) #7
  %255 = getelementptr inbounds %"class.ipx::KKTSolverBasis", ptr %37, i32 0, i32 3
  %256 = load ptr, ptr %255, align 8, !tbaa !33
  %257 = load i32, ptr %28, align 4, !tbaa !28
  %258 = invoke noundef i32 @_ZNK3ipx5Basis10PositionOfEi(ptr noundef nonnull align 8 dereferenceable(176) %256, i32 noundef %257)
          to label %259 unwind label %264

259:                                              ; preds = %252
  store i32 %258, ptr %29, align 4, !tbaa !28
  %260 = load i32, ptr %29, align 4, !tbaa !28
  %261 = icmp sge i32 %260, 0
  br i1 %261, label %262, label %263

262:                                              ; preds = %259
  br label %269

263:                                              ; preds = %259
  call void @__assert_fail(ptr noundef @.str.24, ptr noundef @.str.12, i32 noundef 241, ptr noundef @__PRETTY_FUNCTION__._ZN3ipx14KKTSolverBasis10DropPrimalEPNS_7IterateEPNS_4InfoE) #8
  unreachable

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

268:                                              ; No predecessors!
  br label %269

269:                                              ; preds = %268, %262
  call void @llvm.lifetime.start.p0(i64 8, ptr %30) #7
  %270 = load i32, ptr %29, align 4, !tbaa !28
  %271 = sext i32 %270 to i64
  %272 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt8valarrayIdEixEm(ptr noundef nonnull align 8 dereferenceable(16) %25, i64 noundef %271) #7
  %273 = load double, ptr %272, align 8, !tbaa !30
  store double %273, ptr %30, align 8, !tbaa !30
  %274 = getelementptr inbounds %"class.ipx::KKTSolverBasis", ptr %37, i32 0, i32 3
  %275 = load ptr, ptr %274, align 8, !tbaa !33
  %276 = load i32, ptr %28, align 4, !tbaa !28
  invoke void @_ZN3ipx5Basis10TableauRowEiRNS_13IndexedVectorES2_b(ptr noundef nonnull align 8 dereferenceable(176) %275, i32 noundef %276, ptr noundef nonnull align 8 dereferenceable(44) %13, ptr noundef nonnull align 8 dereferenceable(44) %14, i1 noundef zeroext true)
          to label %277 unwind label %309

277:                                              ; preds = %269
  call void @llvm.lifetime.start.p0(i64 4, ptr %31) #7
  store i32 -1, ptr %31, align 4, !tbaa !28
  call void @llvm.lifetime.start.p0(i64 8, ptr %32) #7
  store double 2.000000e+00, ptr %32, align 8, !tbaa !30
  call void @llvm.lifetime.start.p0(i64 32, ptr %33) #7
  %278 = getelementptr inbounds %class.anon, ptr %33, i32 0, i32 0
  store ptr %37, ptr %278, align 8, !tbaa !37
  %279 = getelementptr inbounds %class.anon, ptr %33, i32 0, i32 1
  store ptr %30, ptr %279, align 8, !tbaa !5
  %280 = getelementptr inbounds %class.anon, ptr %33, i32 0, i32 2
  store ptr %32, ptr %280, align 8, !tbaa !5
  %281 = getelementptr inbounds %class.anon, ptr %33, i32 0, i32 3
  store ptr %31, ptr %281, align 8, !tbaa !5
  invoke void @"_ZN3ipx16for_each_nonzeroIZNS_14KKTSolverBasis10DropPrimalEPNS_7IterateEPNS_4InfoEE3$_0EEvRNS_13IndexedVectorERT_"(ptr noundef nonnull align 8 dereferenceable(44) %14, ptr noundef nonnull align 8 dereferenceable(32) %33)
          to label %282 unwind label %313

282:                                              ; preds = %277
  %283 = load i32, ptr %31, align 4, !tbaa !28
  %284 = icmp sge i32 %283, 0
  br i1 %284, label %285, label %403

285:                                              ; preds = %282
  call void @llvm.lifetime.start.p0(i64 8, ptr %34) #7
  %286 = load i32, ptr %31, align 4, !tbaa !28
  %287 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZN3ipx13IndexedVectorixEi(ptr noundef nonnull align 8 dereferenceable(44) %14, i32 noundef %286)
          to label %288 unwind label %317

288:                                              ; preds = %285
  %289 = load double, ptr %287, align 8, !tbaa !30
  store double %289, ptr %34, align 8, !tbaa !30
  %290 = load double, ptr %34, align 8, !tbaa !30
  %291 = invoke noundef double @_ZSt3absd(double noundef %290)
          to label %292 unwind label %317

292:                                              ; preds = %288
  %293 = fcmp olt double %291, 1.000000e-03
  br i1 %293, label %294, label %330

294:                                              ; preds = %292
  %295 = getelementptr inbounds %"class.ipx::KKTSolverBasis", ptr %37, i32 0, i32 1
  %296 = load ptr, ptr %295, align 8, !tbaa !29
  %297 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNK3ipx7Control5DebugEi(ptr noundef nonnull align 8 dereferenceable(1496) %296, i32 noundef 3)
          to label %298 unwind label %317

298:                                              ; preds = %294
  %299 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) %297, ptr noundef @.str.25)
          to label %300 unwind label %317

300:                                              ; preds = %298
  call void @llvm.lifetime.start.p0(i64 32, ptr %35) #7
  %301 = load double, ptr %34, align 8, !tbaa !30
  %302 = invoke noundef double @_ZSt3absd(double noundef %301)
          to label %303 unwind label %321

303:                                              ; preds = %300
  invoke void @_ZN3ipx4sci2B5cxx11Ed(ptr dead_on_unwind writable sret(%"class.std::__cxx11::basic_string") align 8 %35, double noundef %302)
          to label %304 unwind label %321

304:                                              ; preds = %303
  %305 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsIcSt11char_traitsIcESaIcEERSt13basic_ostreamIT_T0_ES7_RKNSt7__cxx1112basic_stringIS4_S5_T1_EE(ptr noundef nonnull align 8 dereferenceable(8) %299, ptr noundef nonnull align 8 dereferenceable(32) %35)
          to label %306 unwind label %325

306:                                              ; preds = %304
  %307 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) %305, ptr noundef @.str.26)
          to label %308 unwind label %325

308:                                              ; preds = %306
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %35) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr %35) #7
  br label %330

309:                                              ; preds = %269
  %310 = landingpad { ptr, i32 }
          cleanup
  %311 = extractvalue { ptr, i32 } %310, 0
  store ptr %311, ptr %15, align 8
  %312 = extractvalue { ptr, i32 } %310, 1
  store i32 %312, ptr %16, align 4
  br label %456

313:                                              ; preds = %435, %431, %427, %277
  %314 = landingpad { ptr, i32 }
          cleanup
  %315 = extractvalue { ptr, i32 } %314, 0
  store ptr %315, ptr %15, align 8
  %316 = extractvalue { ptr, i32 } %314, 1
  store i32 %316, ptr %16, align 4
  br label %455

317:                                              ; preds = %330, %298, %294, %288, %285
  %318 = landingpad { ptr, i32 }
          cleanup
  %319 = extractvalue { ptr, i32 } %318, 0
  store ptr %319, ptr %15, align 8
  %320 = extractvalue { ptr, i32 } %318, 1
  store i32 %320, ptr %16, align 4
  br label %402

321:                                              ; preds = %303, %300
  %322 = landingpad { ptr, i32 }
          cleanup
  %323 = extractvalue { ptr, i32 } %322, 0
  store ptr %323, ptr %15, align 8
  %324 = extractvalue { ptr, i32 } %322, 1
  store i32 %324, ptr %16, align 4
  br label %329

325:                                              ; preds = %306, %304
  %326 = landingpad { ptr, i32 }
          cleanup
  %327 = extractvalue { ptr, i32 } %326, 0
  store ptr %327, ptr %15, align 8
  %328 = extractvalue { ptr, i32 } %326, 1
  store i32 %328, ptr %16, align 4
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %35) #7
  br label %329

329:                                              ; preds = %325, %321
  call void @llvm.lifetime.end.p0(i64 32, ptr %35) #7
  br label %402

330:                                              ; preds = %308, %292
  %331 = getelementptr inbounds %"class.ipx::KKTSolverBasis", ptr %37, i32 0, i32 3
  %332 = load ptr, ptr %331, align 8, !tbaa !33
  %333 = load i32, ptr %31, align 4, !tbaa !28
  %334 = invoke noundef i32 @_ZNK3ipx5Basis8StatusOfEi(ptr noundef nonnull align 8 dereferenceable(176) %332, i32 noundef %333)
          to label %335 unwind label %317

335:                                              ; preds = %330
  %336 = icmp eq i32 %334, -1
  br i1 %336, label %337, label %338

337:                                              ; preds = %335
  br label %340

338:                                              ; preds = %335
  call void @__assert_fail(ptr noundef @.str.27, ptr noundef @.str.12, i32 noundef 265, ptr noundef @__PRETTY_FUNCTION__._ZN3ipx14KKTSolverBasis10DropPrimalEPNS_7IterateEPNS_4InfoE) #8
  unreachable

339:                                              ; No predecessors!
  br label %340

340:                                              ; preds = %339, %337
  call void @llvm.lifetime.start.p0(i64 1, ptr %36) #7
  %341 = getelementptr inbounds %"class.ipx::KKTSolverBasis", ptr %37, i32 0, i32 3
  %342 = load ptr, ptr %341, align 8, !tbaa !33
  %343 = load i32, ptr %28, align 4, !tbaa !28
  %344 = load i32, ptr %31, align 4, !tbaa !28
  %345 = load double, ptr %34, align 8, !tbaa !30
  %346 = invoke noundef i32 @_ZN3ipx5Basis16ExchangeIfStableEiidiPb(ptr noundef nonnull align 8 dereferenceable(176) %342, i32 noundef %343, i32 noundef %344, double noundef %345, i32 noundef 1, ptr noundef %36)
          to label %347 unwind label %355

347:                                              ; preds = %340
  %348 = load ptr, ptr %6, align 8, !tbaa !5
  %349 = getelementptr inbounds %struct.ipx_info, ptr %348, i32 0, i32 3
  store i32 %346, ptr %349, align 4, !tbaa !31
  %350 = load ptr, ptr %6, align 8, !tbaa !5
  %351 = getelementptr inbounds %struct.ipx_info, ptr %350, i32 0, i32 3
  %352 = load i32, ptr %351, align 4, !tbaa !31
  %353 = icmp ne i32 %352, 0
  br i1 %353, label %354, label %359

354:                                              ; preds = %347
  store i32 1, ptr %21, align 4
  br label %399

355:                                              ; preds = %363, %340
  %356 = landingpad { ptr, i32 }
          cleanup
  %357 = extractvalue { ptr, i32 } %356, 0
  store ptr %357, ptr %15, align 8
  %358 = extractvalue { ptr, i32 } %356, 1
  store i32 %358, ptr %16, align 4
  call void @llvm.lifetime.end.p0(i64 1, ptr %36) #7
  br label %402

359:                                              ; preds = %347
  %360 = load i8, ptr %36, align 1, !tbaa !39, !range !40, !noundef !41
  %361 = trunc i8 %360 to i1
  br i1 %361, label %363, label %362

362:                                              ; preds = %359
  store i32 8, ptr %21, align 4
  br label %399, !llvm.loop !42

363:                                              ; preds = %359
  %364 = getelementptr inbounds %"class.ipx::KKTSolverBasis", ptr %37, i32 0, i32 5
  %365 = load i32, ptr %31, align 4, !tbaa !28
  %366 = sext i32 %365 to i64
  %367 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt8valarrayIdEixEm(ptr noundef nonnull align 8 dereferenceable(16) %364, i64 noundef %366) #7
  %368 = load double, ptr %367, align 8, !tbaa !30
  %369 = fdiv double 1.000000e+00, %368
  %370 = load i32, ptr %29, align 4, !tbaa !28
  %371 = sext i32 %370 to i64
  %372 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt8valarrayIdEixEm(ptr noundef nonnull align 8 dereferenceable(16) %25, i64 noundef %371) #7
  store double %369, ptr %372, align 8, !tbaa !30
  %373 = load i32, ptr %29, align 4, !tbaa !28
  %374 = sext i32 %373 to i64
  %375 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt8valarrayIdEixEm(ptr noundef nonnull align 8 dereferenceable(16) %25, i64 noundef %374) #7
  %376 = load double, ptr %375, align 8, !tbaa !30
  %377 = invoke noundef zeroext i1 @_ZSt8isfinited(double noundef %376)
          to label %378 unwind label %355

378:                                              ; preds = %363
  br i1 %377, label %379, label %380

379:                                              ; preds = %378
  br label %382

380:                                              ; preds = %378
  call void @__assert_fail(ptr noundef @.str.22, ptr noundef @.str.12, i32 noundef 274, ptr noundef @__PRETTY_FUNCTION__._ZN3ipx14KKTSolverBasis10DropPrimalEPNS_7IterateEPNS_4InfoE) #8
  unreachable

381:                                              ; No predecessors!
  br label %382

382:                                              ; preds = %381, %379
  %383 = load i32, ptr %29, align 4, !tbaa !28
  %384 = sext i32 %383 to i64
  %385 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt8valarrayIdEixEm(ptr noundef nonnull align 8 dereferenceable(16) %25, i64 noundef %384) #7
  %386 = load double, ptr %385, align 8, !tbaa !30
  %387 = fcmp oge double %386, 0.000000e+00
  br i1 %387, label %388, label %389

388:                                              ; preds = %382
  br label %391

389:                                              ; preds = %382
  call void @__assert_fail(ptr noundef @.str.23, ptr noundef @.str.12, i32 noundef 275, ptr noundef @__PRETTY_FUNCTION__._ZN3ipx14KKTSolverBasis10DropPrimalEPNS_7IterateEPNS_4InfoE) #8
  unreachable

390:                                              ; No predecessors!
  br label %391

391:                                              ; preds = %390, %388
  %392 = load ptr, ptr %6, align 8, !tbaa !5
  %393 = getelementptr inbounds %struct.ipx_info, ptr %392, i32 0, i32 39
  %394 = load i32, ptr %393, align 4, !tbaa !43
  %395 = add nsw i32 %394, 1
  store i32 %395, ptr %393, align 4, !tbaa !43
  %396 = getelementptr inbounds %"class.ipx::KKTSolverBasis", ptr %37, i32 0, i32 9
  %397 = load i32, ptr %396, align 4, !tbaa !44
  %398 = add nsw i32 %397, 1
  store i32 %398, ptr %396, align 4, !tbaa !44
  store i32 0, ptr %21, align 4
  br label %399

399:                                              ; preds = %391, %362, %354
  call void @llvm.lifetime.end.p0(i64 1, ptr %36) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %34) #7
  %400 = load i32, ptr %21, align 4
  switch i32 %400, label %452 [
    i32 0, label %401
  ]

401:                                              ; preds = %399
  br label %451

402:                                              ; preds = %355, %329, %317
  call void @llvm.lifetime.end.p0(i64 8, ptr %34) #7
  br label %455

403:                                              ; preds = %282
  %404 = load ptr, ptr %11, align 8, !tbaa !5
  %405 = load i32, ptr %28, align 4, !tbaa !28
  %406 = sext i32 %405 to i64
  %407 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNKSt8valarrayIdEixEm(ptr noundef nonnull align 8 dereferenceable(16) %404, i64 noundef %406) #7
  %408 = load double, ptr %407, align 8, !tbaa !30
  %409 = load ptr, ptr %9, align 8, !tbaa !5
  %410 = load i32, ptr %28, align 4, !tbaa !28
  %411 = sext i32 %410 to i64
  %412 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNKSt8valarrayIdEixEm(ptr noundef nonnull align 8 dereferenceable(16) %409, i64 noundef %411) #7
  %413 = load double, ptr %412, align 8, !tbaa !30
  %414 = fdiv double %408, %413
  %415 = load ptr, ptr %12, align 8, !tbaa !5
  %416 = load i32, ptr %28, align 4, !tbaa !28
  %417 = sext i32 %416 to i64
  %418 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNKSt8valarrayIdEixEm(ptr noundef nonnull align 8 dereferenceable(16) %415, i64 noundef %417) #7
  %419 = load double, ptr %418, align 8, !tbaa !30
  %420 = load ptr, ptr %10, align 8, !tbaa !5
  %421 = load i32, ptr %28, align 4, !tbaa !28
  %422 = sext i32 %421 to i64
  %423 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNKSt8valarrayIdEixEm(ptr noundef nonnull align 8 dereferenceable(16) %420, i64 noundef %422) #7
  %424 = load double, ptr %423, align 8, !tbaa !30
  %425 = fdiv double %419, %424
  %426 = fcmp ogt double %414, %425
  br i1 %426, label %427, label %431

427:                                              ; preds = %403
  %428 = load ptr, ptr %5, align 8, !tbaa !5
  %429 = load i32, ptr %28, align 4, !tbaa !28
  invoke void @_ZN3ipx7Iterate15make_implied_lbEi(ptr noundef nonnull align 8 dereferenceable(296) %428, i32 noundef %429)
          to label %430 unwind label %313

430:                                              ; preds = %427
  br label %435

431:                                              ; preds = %403
  %432 = load ptr, ptr %5, align 8, !tbaa !5
  %433 = load i32, ptr %28, align 4, !tbaa !28
  invoke void @_ZN3ipx7Iterate15make_implied_ubEi(ptr noundef nonnull align 8 dereferenceable(296) %432, i32 noundef %433)
          to label %434 unwind label %313

434:                                              ; preds = %431
  br label %435

435:                                              ; preds = %434, %430
  %436 = getelementptr inbounds %"class.ipx::KKTSolverBasis", ptr %37, i32 0, i32 3
  %437 = load ptr, ptr %436, align 8, !tbaa !33
  %438 = load i32, ptr %28, align 4, !tbaa !28
  invoke void @_ZN3ipx5Basis17FreeBasicVariableEi(ptr noundef nonnull align 8 dereferenceable(176) %437, i32 noundef %438)
          to label %439 unwind label %313

439:                                              ; preds = %435
  %440 = load i32, ptr %29, align 4, !tbaa !28
  %441 = sext i32 %440 to i64
  %442 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt8valarrayIdEixEm(ptr noundef nonnull align 8 dereferenceable(16) %25, i64 noundef %441) #7
  store double 0.000000e+00, ptr %442, align 8, !tbaa !30
  %443 = getelementptr inbounds %"class.ipx::KKTSolverBasis", ptr %37, i32 0, i32 5
  %444 = load i32, ptr %28, align 4, !tbaa !28
  %445 = sext i32 %444 to i64
  %446 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt8valarrayIdEixEm(ptr noundef nonnull align 8 dereferenceable(16) %443, i64 noundef %445) #7
  store double 0x7FF0000000000000, ptr %446, align 8, !tbaa !30
  %447 = load ptr, ptr %6, align 8, !tbaa !5
  %448 = getelementptr inbounds %struct.ipx_info, ptr %447, i32 0, i32 18
  %449 = load i32, ptr %448, align 8, !tbaa !45
  %450 = add nsw i32 %449, 1
  store i32 %450, ptr %448, align 8, !tbaa !45
  br label %451

451:                                              ; preds = %439, %401
  call void @_ZNSt6vectorIiSaIiEE8pop_backEv(ptr noundef nonnull align 8 dereferenceable(24) %19) #7
  store i32 0, ptr %21, align 4
  br label %452

452:                                              ; preds = %451, %399
  call void @llvm.lifetime.end.p0(i64 32, ptr %33) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %32) #7
  call void @llvm.lifetime.end.p0(i64 4, ptr %31) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %30) #7
  call void @llvm.lifetime.end.p0(i64 4, ptr %29) #7
  call void @llvm.lifetime.end.p0(i64 4, ptr %28) #7
  %453 = load i32, ptr %21, align 4
  switch i32 %453, label %459 [
    i32 0, label %454
    i32 8, label %249
  ]

454:                                              ; preds = %452
  br label %249, !llvm.loop !42

455:                                              ; preds = %402, %313
  call void @llvm.lifetime.end.p0(i64 32, ptr %33) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %32) #7
  call void @llvm.lifetime.end.p0(i64 4, ptr %31) #7
  br label %456

456:                                              ; preds = %455, %309
  call void @llvm.lifetime.end.p0(i64 8, ptr %30) #7
  br label %457

457:                                              ; preds = %456, %264
  call void @llvm.lifetime.end.p0(i64 4, ptr %29) #7
  call void @llvm.lifetime.end.p0(i64 4, ptr %28) #7
  br label %463

458:                                              ; preds = %249
  store i32 0, ptr %21, align 4
  br label %459

459:                                              ; preds = %458, %452
  call void @_ZNSt8valarrayIdED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %25) #7
  call void @llvm.lifetime.end.p0(i64 16, ptr %25) #7
  br label %460

460:                                              ; preds = %459, %193
  call void @_ZNSt6vectorIiSaIiEED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %19) #7
  call void @llvm.lifetime.end.p0(i64 24, ptr %19) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %18) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %17) #7
  call void @_ZN3ipx13IndexedVectorD2Ev(ptr noundef nonnull align 8 dereferenceable(44) %14) #7
  call void @llvm.lifetime.end.p0(i64 48, ptr %14) #7
  call void @_ZN3ipx13IndexedVectorD2Ev(ptr noundef nonnull align 8 dereferenceable(44) %13) #7
  call void @llvm.lifetime.end.p0(i64 48, ptr %13) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %12) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %11) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %10) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %9) #7
  call void @llvm.lifetime.end.p0(i64 4, ptr %8) #7
  call void @llvm.lifetime.end.p0(i64 4, ptr %7) #7
  %461 = load i32, ptr %21, align 4
  switch i32 %461, label %473 [
    i32 0, label %462
    i32 1, label %462
  ]

462:                                              ; preds = %460, %460
  ret void

463:                                              ; preds = %457, %230
  call void @_ZNSt8valarrayIdED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %25) #7
  br label %464

464:                                              ; preds = %463, %203
  call void @llvm.lifetime.end.p0(i64 16, ptr %25) #7
  br label %465

465:                                              ; preds = %464, %190
  call void @_ZNSt6vectorIiSaIiEED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %19) #7
  call void @llvm.lifetime.end.p0(i64 24, ptr %19) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %18) #7
  br label %466

466:                                              ; preds = %465, %72
  call void @llvm.lifetime.end.p0(i64 8, ptr %17) #7
  call void @_ZN3ipx13IndexedVectorD2Ev(ptr noundef nonnull align 8 dereferenceable(44) %14) #7
  br label %467

467:                                              ; preds = %466, %68
  call void @llvm.lifetime.end.p0(i64 48, ptr %14) #7
  call void @_ZN3ipx13IndexedVectorD2Ev(ptr noundef nonnull align 8 dereferenceable(44) %13) #7
  call void @llvm.lifetime.end.p0(i64 48, ptr %13) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %12) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %11) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %10) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %9) #7
  call void @llvm.lifetime.end.p0(i64 4, ptr %8) #7
  call void @llvm.lifetime.end.p0(i64 4, ptr %7) #7
  br label %468

468:                                              ; preds = %467
  %469 = load ptr, ptr %15, align 8
  %470 = load i32, ptr %16, align 4
  %471 = insertvalue { ptr, i32 } poison, ptr %469, 0
  %472 = insertvalue { ptr, i32 } %471, i32 %470, 1
  resume { ptr, i32 } %472

473:                                              ; preds = %460, %184
  unreachable
}

; Function Attrs: inlinehint mustprogress uwtable
declare dso_local void @_ZNSt8valarrayIdEC2Em(ptr noundef nonnull align 8 dereferenceable(16), i64 noundef) unnamed_addr #4 align 2

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

; Function Attrs: inlinehint mustprogress nounwind uwtable
declare dso_local noundef i32 @_ZNK3ipx5BasisixEi(ptr noundef nonnull align 8 dereferenceable(176), i32 noundef) #2 align 2

; Function Attrs: inlinehint mustprogress nounwind uwtable
declare dso_local noundef i32 @_ZNK3ipx5Basis8StatusOfEi(ptr noundef nonnull align 8 dereferenceable(176), i32 noundef) #2 align 2

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

; Function Attrs: mustprogress nounwind uwtable
declare dso_local noundef zeroext i1 @_ZSt8isfinited(double noundef) #1

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

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

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

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

declare void @_ZN3ipx13IndexedVectorC1Ei(ptr noundef nonnull align 8 dereferenceable(44), i32 noundef) unnamed_addr #6

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

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

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

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

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

; Function Attrs: inlinehint mustprogress nounwind uwtable
declare dso_local noundef i32 @_ZNK3ipx5Basis10PositionOfEi(ptr noundef nonnull align 8 dereferenceable(176), i32 noundef) #2 align 2

declare void @_ZN3ipx5Basis10TableauRowEiRNS_13IndexedVectorES2_b(ptr noundef nonnull align 8 dereferenceable(176), i32 noundef, ptr noundef nonnull align 8 dereferenceable(44), ptr noundef nonnull align 8 dereferenceable(44), i1 noundef zeroext) #6

; Function Attrs: mustprogress uwtable
declare hidden void @"_ZN3ipx16for_each_nonzeroIZNS_14KKTSolverBasis10DropPrimalEPNS_7IterateEPNS_4InfoEE3$_0EEvRNS_13IndexedVectorERT_"(ptr noundef nonnull align 8 dereferenceable(44), ptr noundef nonnull align 8 dereferenceable(32)) #3

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

; Function Attrs: inlinehint mustprogress nounwind uwtable
declare dso_local noundef double @_ZSt3absd(double noundef) #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) #4

; Function Attrs: inlinehint mustprogress uwtable
declare noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsIcSt11char_traitsIcESaIcEERSt13basic_ostreamIT_T0_ES7_RKNSt7__cxx1112basic_stringIS4_S5_T1_EE(ptr noundef nonnull align 8 dereferenceable(8), ptr noundef nonnull align 8 dereferenceable(32)) #4

declare noundef nonnull align 8 dereferenceable(8) ptr @_ZNK3ipx7Control5DebugEi(ptr noundef nonnull align 8 dereferenceable(1496), i32 noundef) #6

; Function Attrs: inlinehint mustprogress uwtable
declare dso_local void @_ZN3ipx4sci2B5cxx11Ed(ptr dead_on_unwind noalias writable sret(%"class.std::__cxx11::basic_string") align 8, double noundef) #4

declare noundef i32 @_ZN3ipx5Basis16ExchangeIfStableEiidiPb(ptr noundef nonnull align 8 dereferenceable(176), i32 noundef, i32 noundef, double noundef, i32 noundef, ptr noundef) #6

declare void @_ZN3ipx7Iterate15make_implied_lbEi(ptr noundef nonnull align 8 dereferenceable(296), i32 noundef) #6

declare void @_ZN3ipx7Iterate15make_implied_ubEi(ptr noundef nonnull align 8 dereferenceable(296), i32 noundef) #6

declare void @_ZN3ipx5Basis17FreeBasicVariableEi(ptr noundef nonnull align 8 dereferenceable(176), i32 noundef) #6

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

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

; Function Attrs: inlinehint mustprogress nounwind uwtable
declare dso_local void @_ZN3ipx13IndexedVectorD2Ev(ptr noundef nonnull align 8 dereferenceable(44)) unnamed_addr #2 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 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 = { 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 = { inlinehint mustprogress uwtable "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }
attributes #5 = { noreturn nounwind "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }
attributes #6 = { "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 16}
!10 = !{!"_ZTSN3ipx14KKTSolverBasisE", !11, i64 0, !6, i64 8, !6, i64 16, !6, i64 24, !12, i64 32, !24, i64 552, !26, i64 568, !15, i64 572, !15, i64 576, !15, i64 580}
!11 = !{!"_ZTSN3ipx9KKTSolverE"}
!12 = !{!"_ZTSN3ipx20SplittedNormalMatrixE", !13, i64 0, !6, i64 8, !14, i64 16, !14, i64 144, !14, i64 272, !16, i64 400, !16, i64 424, !16, i64 448, !24, i64 472, !26, i64 488, !27, i64 496, !27, i64 504, !27, i64 512}
!13 = !{!"_ZTSN3ipx14LinearOperatorE"}
!14 = !{!"_ZTSN3ipx12SparseMatrixE", !15, i64 0, !16, i64 8, !16, i64 32, !20, i64 56, !16, i64 80, !20, i64 104}
!15 = !{!"int", !7, i64 0}
!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 = !{!"_ZTSSt8valarrayIdE", !25, i64 0, !6, i64 8}
!25 = !{!"long", !7, i64 0}
!26 = !{!"bool", !7, i64 0}
!27 = !{!"double", !7, i64 0}
!28 = !{!15, !15, i64 0}
!29 = !{!10, !6, i64 8}
!30 = !{!27, !27, i64 0}
!31 = !{!32, !15, i64 12}
!32 = !{!"_ZTS8ipx_info", !15, i64 0, !15, i64 4, !15, i64 8, !15, i64 12, !15, i64 16, !15, i64 20, !15, i64 24, !15, i64 28, !15, i64 32, !15, i64 36, !15, i64 40, !15, i64 44, !15, i64 48, !15, i64 52, !15, i64 56, !15, i64 60, !15, i64 64, !15, i64 68, !15, i64 72, !15, i64 76, !27, i64 80, !27, i64 88, !27, i64 96, !27, i64 104, !27, i64 112, !27, i64 120, !27, i64 128, !27, i64 136, !27, i64 144, !27, i64 152, !27, i64 160, !27, i64 168, !27, i64 176, !27, i64 184, !15, i64 192, !15, i64 196, !15, i64 200, !15, i64 204, !15, i64 208, !15, i64 212, !15, i64 216, !27, i64 224, !27, i64 232, !27, i64 240, !27, i64 248, !27, i64 256, !27, i64 264, !27, i64 272, !27, i64 280, !27, i64 288, !27, i64 296, !27, i64 304, !27, i64 312, !27, i64 320, !27, i64 328, !27, i64 336, !27, i64 344, !27, i64 352, !27, i64 360, !27, i64 368, !27, i64 376, !27, i64 384, !27, i64 392, !27, i64 400, !27, i64 408, !15, i64 416, !15, i64 420, !15, i64 424, !15, i64 428, !27, i64 432, !27, i64 440, !27, i64 448, !27, i64 456}
!33 = !{!10, !6, i64 24}
!34 = distinct !{!34, !35}
!35 = !{!"llvm.loop.mustprogress"}
!36 = distinct !{!36, !35}
!37 = !{!38, !6, i64 0}
!38 = !{!"_ZTSZN3ipx14KKTSolverBasis10DropPrimalEPNS_7IterateEPNS_4InfoEE3$_0", !6, i64 0, !6, i64 8, !6, i64 16, !6, i64 24}
!39 = !{!26, !26, i64 0}
!40 = !{i8 0, i8 2}
!41 = !{}
!42 = distinct !{!42, !35}
!43 = !{!32, !15, i64 212}
!44 = !{!10, !15, i64 580}
!45 = !{!32, !15, i64 72}


; 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.ipx::IndexedVector" = type <{ %"class.std::valarray", %"class.std::vector", i32, [4 x i8] }>
%"class.std::valarray" = type { i64, ptr }
%"class.std::vector" = type { %"struct.std::_Vector_base" }
%"struct.std::_Vector_base" = type { %"struct.std::_Vector_base<int, std::allocator<int>>::_Vector_impl" }
%"struct.std::_Vector_base<int, std::allocator<int>>::_Vector_impl" = type { %"struct.std::_Vector_base<int, std::allocator<int>>::_Vector_impl_data" }
%"struct.std::_Vector_base<int, std::allocator<int>>::_Vector_impl_data" = type { ptr, ptr, ptr }
%class.anon = type { ptr, ptr, ptr, ptr }
%"class.std::__cxx11::basic_string" = type { %"struct.std::__cxx11::basic_string<char>::_Alloc_hider", i64, %union.anon }
%"struct.std::__cxx11::basic_string<char>::_Alloc_hider" = type { ptr }
%union.anon = type { i64, [8 x i8] }

@.str.12 = external hidden unnamed_addr constant [81 x i8], align 1
@.str.19 = external hidden unnamed_addr constant [47 x i8], align 1
@__PRETTY_FUNCTION__._ZN3ipx14KKTSolverBasis10DropPrimalEPNS_7IterateEPNS_4InfoE = external hidden unnamed_addr constant [56 x i8], align 1
@.str.20 = external hidden unnamed_addr constant [13 x i8], align 1
@.str.21 = external hidden unnamed_addr constant [13 x i8], align 1
@.str.22 = external hidden unnamed_addr constant [33 x i8], align 1
@.str.23 = external hidden unnamed_addr constant [25 x i8], align 1
@.str.24 = external hidden unnamed_addr constant [7 x i8], align 1
@.str.25 = external hidden unnamed_addr constant [12 x i8], align 1
@.str.26 = external hidden unnamed_addr constant [41 x i8], align 1
@.str.27 = external hidden unnamed_addr constant [41 x i8], align 1

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

declare i32 @__gxx_personality_v0(...)

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

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

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

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

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

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

; Function Attrs: mustprogress uwtable
define dso_local void @_ZN3ipx14KKTSolverBasis10DropPrimalEPNS_7IterateEPNS_4InfoE(ptr noundef nonnull align 8 dereferenceable(584) %0, ptr noundef %1, ptr nocapture noundef %2) local_unnamed_addr #3 align 2 personality ptr @__gxx_personality_v0 {
  %4 = alloca %"class.ipx::IndexedVector", align 8
  %5 = alloca %"class.ipx::IndexedVector", align 8
  %6 = alloca %"class.std::vector", align 8
  %7 = alloca i32, align 4
  %8 = alloca %"class.std::valarray", align 8
  %9 = alloca double, align 8
  %10 = alloca i32, align 4
  %11 = alloca double, align 8
  %12 = alloca %class.anon, align 8
  %13 = alloca %"class.std::__cxx11::basic_string", align 8
  %14 = alloca i8, align 1
  %15 = getelementptr inbounds i8, ptr %0, i64 16
  %16 = load ptr, ptr %15, align 8, !tbaa !5
  %17 = tail call noundef i32 @_ZNK3ipx5Model4rowsEv(ptr noundef nonnull align 8 dereferenceable(704) %16)
  %18 = load ptr, ptr %15, align 8, !tbaa !5
  %19 = tail call noundef i32 @_ZNK3ipx5Model4colsEv(ptr noundef nonnull align 8 dereferenceable(704) %18)
  %20 = tail call noundef nonnull align 8 dereferenceable(16) ptr @_ZNK3ipx7Iterate2xlEv(ptr noundef nonnull align 8 dereferenceable(296) %1)
  %21 = tail call noundef nonnull align 8 dereferenceable(16) ptr @_ZNK3ipx7Iterate2xuEv(ptr noundef nonnull align 8 dereferenceable(296) %1)
  %22 = tail call noundef nonnull align 8 dereferenceable(16) ptr @_ZNK3ipx7Iterate2zlEv(ptr noundef nonnull align 8 dereferenceable(296) %1)
  %23 = tail call noundef nonnull align 8 dereferenceable(16) ptr @_ZNK3ipx7Iterate2zuEv(ptr noundef nonnull align 8 dereferenceable(296) %1)
  call void @llvm.lifetime.start.p0(i64 48, ptr nonnull %4) #7
  call void @_ZN3ipx13IndexedVectorC1Ei(ptr noundef nonnull align 8 dereferenceable(44) %4, i32 noundef %17)
  call void @llvm.lifetime.start.p0(i64 48, ptr nonnull %5) #7
  %24 = add nsw i32 %19, %17
  invoke void @_ZN3ipx13IndexedVectorC1Ei(ptr noundef nonnull align 8 dereferenceable(44) %5, i32 noundef %24)
          to label %25 unwind label %33

25:                                               ; preds = %3
  %26 = getelementptr inbounds i8, ptr %0, i64 8
  %27 = load ptr, ptr %26, align 8, !tbaa !27
  %28 = call noundef double @_ZNK3ipx7Control15ipm_drop_primalEv(ptr noundef nonnull align 8 dereferenceable(1496) %27)
  %29 = getelementptr inbounds i8, ptr %2, i64 12
  store i32 0, ptr %29, align 4, !tbaa !28
  call void @llvm.lifetime.start.p0(i64 24, ptr nonnull %6) #7
  call void @_ZNSt6vectorIiSaIiEEC2Ev(ptr noundef nonnull align 8 dereferenceable(24) %6) #7
  %30 = icmp sgt i32 %17, 0
  br i1 %30, label %.lr.ph, label %._crit_edge

.lr.ph:                                           ; preds = %25
  %31 = getelementptr inbounds i8, ptr %0, i64 24
  br label %35

._crit_edge:                                      ; preds = %87, %25
  %32 = call noundef zeroext i1 @_ZNKSt6vectorIiSaIiEE5emptyEv(ptr noundef nonnull align 8 dereferenceable(24) %6) #7
  br i1 %32, label %235, label %89

33:                                               ; preds = %3
  %34 = landingpad { ptr, i32 }
          cleanup
  br label %238

35:                                               ; preds = %.lr.ph, %87
  %.07698 = phi i32 [ 0, %.lr.ph ], [ %88, %87 ]
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %7) #7
  %36 = load ptr, ptr %31, align 8, !tbaa !30
  %37 = call noundef i32 @_ZNK3ipx5BasisixEi(ptr noundef nonnull align 8 dereferenceable(176) %36, i32 noundef %.07698)
  store i32 %37, ptr %7, align 4, !tbaa !31
  %38 = load ptr, ptr %31, align 8, !tbaa !30
  %39 = call noundef i32 @_ZNK3ipx5Basis8StatusOfEi(ptr noundef nonnull align 8 dereferenceable(176) %38, i32 noundef %37)
  %.not91 = icmp eq i32 %39, 0
  br i1 %.not91, label %40, label %87

40:                                               ; preds = %35
  %41 = load i32, ptr %7, align 4, !tbaa !31
  %42 = sext i32 %41 to i64
  %43 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNKSt8valarrayIdEixEm(ptr noundef nonnull align 8 dereferenceable(16) %20, i64 noundef %42) #7
  %44 = load double, ptr %43, align 8, !tbaa !32
  %45 = call noundef zeroext i1 @_ZSt8isfinited(double noundef %44)
  br i1 %45, label %.critedge, label %46

46:                                               ; preds = %40
  %47 = load i32, ptr %7, align 4, !tbaa !31
  %48 = sext i32 %47 to i64
  %49 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNKSt8valarrayIdEixEm(ptr noundef nonnull align 8 dereferenceable(16) %21, i64 noundef %48) #7
  %50 = load double, ptr %49, align 8, !tbaa !32
  %51 = call noundef zeroext i1 @_ZSt8isfinited(double noundef %50)
  br i1 %51, label %.critedge, label %52

52:                                               ; preds = %46
  call void @__assert_fail(ptr noundef nonnull @.str.19, ptr noundef nonnull @.str.12, i32 noundef 211, ptr noundef nonnull @__PRETTY_FUNCTION__._ZN3ipx14KKTSolverBasis10DropPrimalEPNS_7IterateEPNS_4InfoE) #8
  unreachable

.critedge:                                        ; preds = %40, %46
  %53 = load i32, ptr %7, align 4, !tbaa !31
  %54 = sext i32 %53 to i64
  %55 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNKSt8valarrayIdEixEm(ptr noundef nonnull align 8 dereferenceable(16) %20, i64 noundef %54) #7
  %56 = load double, ptr %55, align 8, !tbaa !32
  %57 = fcmp ogt double %56, 0.000000e+00
  br i1 %57, label %59, label %58

58:                                               ; preds = %.critedge
  call void @__assert_fail(ptr noundef nonnull @.str.20, ptr noundef nonnull @.str.12, i32 noundef 212, ptr noundef nonnull @__PRETTY_FUNCTION__._ZN3ipx14KKTSolverBasis10DropPrimalEPNS_7IterateEPNS_4InfoE) #8
  unreachable

59:                                               ; preds = %.critedge
  %60 = load i32, ptr %7, align 4, !tbaa !31
  %61 = sext i32 %60 to i64
  %62 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNKSt8valarrayIdEixEm(ptr noundef nonnull align 8 dereferenceable(16) %21, i64 noundef %61) #7
  %63 = load double, ptr %62, align 8, !tbaa !32
  %64 = fcmp ogt double %63, 0.000000e+00
  br i1 %64, label %66, label %65

65:                                               ; preds = %59
  call void @__assert_fail(ptr noundef nonnull @.str.21, ptr noundef nonnull @.str.12, i32 noundef 213, ptr noundef nonnull @__PRETTY_FUNCTION__._ZN3ipx14KKTSolverBasis10DropPrimalEPNS_7IterateEPNS_4InfoE) #8
  unreachable

66:                                               ; preds = %59
  %67 = load i32, ptr %7, align 4, !tbaa !31
  %68 = sext i32 %67 to i64
  %69 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNKSt8valarrayIdEixEm(ptr noundef nonnull align 8 dereferenceable(16) %20, i64 noundef %68) #7
  %70 = load double, ptr %69, align 8, !tbaa !32
  %71 = load i32, ptr %7, align 4, !tbaa !31
  %72 = sext i32 %71 to i64
  %73 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNKSt8valarrayIdEixEm(ptr noundef nonnull align 8 dereferenceable(16) %21, i64 noundef %72) #7
  %74 = load double, ptr %73, align 8, !tbaa !32
  %75 = fcmp ugt double %70, %74
  %76 = load i32, ptr %7, align 4, !tbaa !31
  %77 = sext i32 %76 to i64
  %. = select i1 %75, ptr %21, ptr %20
  %.113 = select i1 %75, ptr %23, ptr %22
  %78 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNKSt8valarrayIdEixEm(ptr noundef nonnull align 8 dereferenceable(16) %., i64 noundef %77) #7
  %.081 = load double, ptr %78, align 8, !tbaa !32
  %.sink111 = load i32, ptr %7, align 4, !tbaa !31
  %79 = sext i32 %.sink111 to i64
  %80 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNKSt8valarrayIdEixEm(ptr noundef nonnull align 8 dereferenceable(16) %.113, i64 noundef %79) #7
  %.080 = load double, ptr %80, align 8, !tbaa !32
  %81 = fmul double %.080, 1.000000e-02
  %82 = fcmp uge double %.081, %81
  %83 = fcmp ugt double %.081, %28
  %or.cond = or i1 %83, %82
  br i1 %or.cond, label %87, label %84

84:                                               ; preds = %66
  invoke void @_ZNSt6vectorIiSaIiEE9push_backERKi(ptr noundef nonnull align 8 dereferenceable(24) %6, ptr noundef nonnull align 4 dereferenceable(4) %7)
          to label %87 unwind label %85

85:                                               ; preds = %84
  %86 = landingpad { ptr, i32 }
          cleanup
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %7) #7
  br label %237

87:                                               ; preds = %66, %84, %35
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %7) #7
  %88 = add nuw nsw i32 %.07698, 1
  %exitcond.not = icmp eq i32 %88, %17
  br i1 %exitcond.not, label %._crit_edge, label %35, !llvm.loop !33

89:                                               ; preds = %._crit_edge
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %8) #7
  %90 = sext i32 %17 to i64
  invoke void @_ZNSt8valarrayIdEC2Em(ptr noundef nonnull align 8 dereferenceable(16) %8, i64 noundef %90)
          to label %.preheader97 unwind label %103

.preheader97:                                     ; preds = %89
  br i1 %30, label %.lr.ph100, label %.preheader

.lr.ph100:                                        ; preds = %.preheader97
  %91 = getelementptr inbounds i8, ptr %0, i64 24
  %92 = getelementptr inbounds i8, ptr %0, i64 552
  %wide.trip.count = zext nneg i32 %17 to i64
  br label %105

93:                                               ; preds = %118
  %indvars.iv.next = add nuw nsw i64 %indvars.iv, 1
  %exitcond105.not = icmp eq i64 %indvars.iv.next, %wide.trip.count
  br i1 %exitcond105.not, label %.preheader, label %105, !llvm.loop !35

.preheader:                                       ; preds = %93, %.preheader97
  %94 = call noundef zeroext i1 @_ZNKSt6vectorIiSaIiEE5emptyEv(ptr noundef nonnull align 8 dereferenceable(24) %6) #7
  br i1 %94, label %._crit_edge102, label %.lr.ph101

.lr.ph101:                                        ; preds = %.preheader
  %95 = getelementptr inbounds i8, ptr %0, i64 24
  %96 = getelementptr inbounds i8, ptr %12, i64 8
  %97 = getelementptr inbounds i8, ptr %12, i64 16
  %98 = getelementptr inbounds i8, ptr %12, i64 24
  %99 = getelementptr inbounds i8, ptr %0, i64 552
  %100 = getelementptr inbounds i8, ptr %2, i64 72
  %101 = getelementptr inbounds i8, ptr %2, i64 212
  %102 = getelementptr inbounds i8, ptr %0, i64 580
  br label %123

103:                                              ; preds = %89
  %104 = landingpad { ptr, i32 }
          cleanup
  br label %236

105:                                              ; preds = %.lr.ph100, %93
  %indvars.iv = phi i64 [ 0, %.lr.ph100 ], [ %indvars.iv.next, %93 ]
  %106 = load ptr, ptr %91, align 8, !tbaa !30
  %107 = trunc nuw nsw i64 %indvars.iv to i32
  %108 = call noundef i32 @_ZNK3ipx5BasisixEi(ptr noundef nonnull align 8 dereferenceable(176) %106, i32 noundef %107)
  %109 = sext i32 %108 to i64
  %110 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt8valarrayIdEixEm(ptr noundef nonnull align 8 dereferenceable(16) %92, i64 noundef %109) #7
  %111 = load double, ptr %110, align 8, !tbaa !32
  %112 = fdiv double 1.000000e+00, %111
  %113 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt8valarrayIdEixEm(ptr noundef nonnull align 8 dereferenceable(16) %8, i64 noundef %indvars.iv) #7
  store double %112, ptr %113, align 8, !tbaa !32
  %114 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt8valarrayIdEixEm(ptr noundef nonnull align 8 dereferenceable(16) %8, i64 noundef %indvars.iv) #7
  %115 = load double, ptr %114, align 8, !tbaa !32
  %116 = call noundef zeroext i1 @_ZSt8isfinited(double noundef %115)
  br i1 %116, label %118, label %117

117:                                              ; preds = %105
  call void @__assert_fail(ptr noundef nonnull @.str.22, ptr noundef nonnull @.str.12, i32 noundef 234, ptr noundef nonnull @__PRETTY_FUNCTION__._ZN3ipx14KKTSolverBasis10DropPrimalEPNS_7IterateEPNS_4InfoE) #8
  unreachable

118:                                              ; preds = %105
  %119 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt8valarrayIdEixEm(ptr noundef nonnull align 8 dereferenceable(16) %8, i64 noundef %indvars.iv) #7
  %120 = load double, ptr %119, align 8, !tbaa !32
  %121 = fcmp ult double %120, 0.000000e+00
  br i1 %121, label %122, label %93

122:                                              ; preds = %118
  call void @__assert_fail(ptr noundef nonnull @.str.23, ptr noundef nonnull @.str.12, i32 noundef 235, ptr noundef nonnull @__PRETTY_FUNCTION__._ZN3ipx14KKTSolverBasis10DropPrimalEPNS_7IterateEPNS_4InfoE) #8
  unreachable

123:                                              ; preds = %.lr.ph101, %.backedge
  %124 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNSt6vectorIiSaIiEE4backEv(ptr noundef nonnull align 8 dereferenceable(24) %6) #7
  %125 = load i32, ptr %124, align 4, !tbaa !31
  %126 = load ptr, ptr %95, align 8, !tbaa !30
  %127 = call noundef i32 @_ZNK3ipx5Basis10PositionOfEi(ptr noundef nonnull align 8 dereferenceable(176) %126, i32 noundef %125)
  %128 = icmp sgt i32 %127, -1
  br i1 %128, label %130, label %129

129:                                              ; preds = %123
  call void @__assert_fail(ptr noundef nonnull @.str.24, ptr noundef nonnull @.str.12, i32 noundef 241, ptr noundef nonnull @__PRETTY_FUNCTION__._ZN3ipx14KKTSolverBasis10DropPrimalEPNS_7IterateEPNS_4InfoE) #8
  unreachable

130:                                              ; preds = %123
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %9) #7
  %131 = zext nneg i32 %127 to i64
  %132 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt8valarrayIdEixEm(ptr noundef nonnull align 8 dereferenceable(16) %8, i64 noundef %131) #7
  %133 = load double, ptr %132, align 8, !tbaa !32
  store double %133, ptr %9, align 8, !tbaa !32
  %134 = load ptr, ptr %95, align 8, !tbaa !30
  invoke void @_ZN3ipx5Basis10TableauRowEiRNS_13IndexedVectorES2_b(ptr noundef nonnull align 8 dereferenceable(176) %134, i32 noundef %125, ptr noundef nonnull align 8 dereferenceable(44) %4, ptr noundef nonnull align 8 dereferenceable(44) %5, i1 noundef zeroext true)
          to label %135 unwind label %156

135:                                              ; preds = %130
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %10) #7
  store i32 -1, ptr %10, align 4, !tbaa !31
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %11) #7
  store double 2.000000e+00, ptr %11, align 8, !tbaa !32
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %12) #7
  store ptr %0, ptr %12, align 8, !tbaa !36
  store ptr %9, ptr %96, align 8, !tbaa !38
  store ptr %11, ptr %97, align 8, !tbaa !38
  store ptr %10, ptr %98, align 8, !tbaa !38
  invoke void @"_ZN3ipx16for_each_nonzeroIZNS_14KKTSolverBasis10DropPrimalEPNS_7IterateEPNS_4InfoEE3$_0EEvRNS_13IndexedVectorERT_"(ptr noundef nonnull align 8 dereferenceable(44) %5, ptr noundef nonnull align 8 dereferenceable(32) %12)
          to label %136 unwind label %158

136:                                              ; preds = %135
  %137 = load i32, ptr %10, align 4, !tbaa !31
  %138 = icmp sgt i32 %137, -1
  br i1 %138, label %139, label %204

139:                                              ; preds = %136
  %140 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZN3ipx13IndexedVectorixEi(ptr noundef nonnull align 8 dereferenceable(44) %5, i32 noundef %137)
  %141 = load double, ptr %140, align 8, !tbaa !32
  %142 = call noundef double @_ZSt3absd(double noundef %141)
  %143 = fcmp olt double %142, 1.000000e-03
  br i1 %143, label %144, label %167

144:                                              ; preds = %139
  %145 = load ptr, ptr %26, align 8, !tbaa !27
  %146 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNK3ipx7Control5DebugEi(ptr noundef nonnull align 8 dereferenceable(1496) %145, i32 noundef 3)
          to label %147 unwind label %160

147:                                              ; preds = %144
  %148 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) %146, ptr noundef nonnull @.str.25)
          to label %149 unwind label %160

149:                                              ; preds = %147
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %13) #7
  %150 = call noundef double @_ZSt3absd(double noundef %141)
  invoke void @_ZN3ipx4sci2B5cxx11Ed(ptr dead_on_unwind nonnull writable sret(%"class.std::__cxx11::basic_string") align 8 %13, double noundef %150)
          to label %151 unwind label %162

151:                                              ; preds = %149
  %152 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsIcSt11char_traitsIcESaIcEERSt13basic_ostreamIT_T0_ES7_RKNSt7__cxx1112basic_stringIS4_S5_T1_EE(ptr noundef nonnull align 8 dereferenceable(8) %148, ptr noundef nonnull align 8 dereferenceable(32) %13)
          to label %153 unwind label %164

153:                                              ; preds = %151
  %154 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) %152, ptr noundef nonnull @.str.26)
          to label %155 unwind label %164

155:                                              ; preds = %153
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %13) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %13) #7
  br label %167

156:                                              ; preds = %130
  %157 = landingpad { ptr, i32 }
          cleanup
  br label %234

158:                                              ; preds = %224, %223, %222, %135
  %159 = landingpad { ptr, i32 }
          cleanup
  br label %233

160:                                              ; preds = %147, %144
  %161 = landingpad { ptr, i32 }
          cleanup
  br label %233

162:                                              ; preds = %149
  %163 = landingpad { ptr, i32 }
          cleanup
  br label %166

164:                                              ; preds = %153, %151
  %165 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %13) #7
  br label %166

166:                                              ; preds = %164, %162
  %.pn = phi { ptr, i32 } [ %165, %164 ], [ %163, %162 ]
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %13) #7
  br label %233

167:                                              ; preds = %155, %139
  %168 = load ptr, ptr %95, align 8, !tbaa !30
  %169 = load i32, ptr %10, align 4, !tbaa !31
  %170 = call noundef i32 @_ZNK3ipx5Basis8StatusOfEi(ptr noundef nonnull align 8 dereferenceable(176) %168, i32 noundef %169)
  %171 = icmp eq i32 %170, -1
  br i1 %171, label %173, label %172

172:                                              ; preds = %167
  call void @__assert_fail(ptr noundef nonnull @.str.27, ptr noundef nonnull @.str.12, i32 noundef 265, ptr noundef nonnull @__PRETTY_FUNCTION__._ZN3ipx14KKTSolverBasis10DropPrimalEPNS_7IterateEPNS_4InfoE) #8
  unreachable

173:                                              ; preds = %167
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %14) #7
  %174 = load ptr, ptr %95, align 8, !tbaa !30
  %175 = load i32, ptr %10, align 4, !tbaa !31
  %176 = invoke noundef i32 @_ZN3ipx5Basis16ExchangeIfStableEiidiPb(ptr noundef nonnull align 8 dereferenceable(176) %174, i32 noundef %125, i32 noundef %175, double noundef %141, i32 noundef 1, ptr noundef nonnull %14)
          to label %177 unwind label %178

177:                                              ; preds = %173
  store i32 %176, ptr %29, align 4, !tbaa !28
  %.not = icmp eq i32 %176, 0
  br i1 %.not, label %180, label %.thread108

.thread108:                                       ; preds = %177
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %14) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %12) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %11) #7
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %10) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %9) #7
  br label %._crit_edge102

178:                                              ; preds = %173
  %179 = landingpad { ptr, i32 }
          cleanup
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %14) #7
  br label %233

180:                                              ; preds = %177
  %181 = load i8, ptr %14, align 1, !tbaa !39, !range !40, !noundef !41
  %182 = trunc nuw i8 %181 to i1
  br i1 %182, label %183, label %231, !llvm.loop !42

183:                                              ; preds = %180
  %184 = load i32, ptr %10, align 4, !tbaa !31
  %185 = sext i32 %184 to i64
  %186 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt8valarrayIdEixEm(ptr noundef nonnull align 8 dereferenceable(16) %99, i64 noundef %185) #7
  %187 = load double, ptr %186, align 8, !tbaa !32
  %188 = fdiv double 1.000000e+00, %187
  %189 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt8valarrayIdEixEm(ptr noundef nonnull align 8 dereferenceable(16) %8, i64 noundef %131) #7
  store double %188, ptr %189, align 8, !tbaa !32
  %190 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt8valarrayIdEixEm(ptr noundef nonnull align 8 dereferenceable(16) %8, i64 noundef %131) #7
  %191 = load double, ptr %190, align 8, !tbaa !32
  %192 = call noundef zeroext i1 @_ZSt8isfinited(double noundef %191)
  br i1 %192, label %194, label %193

193:                                              ; preds = %183
  call void @__assert_fail(ptr noundef nonnull @.str.22, ptr noundef nonnull @.str.12, i32 noundef 274, ptr noundef nonnull @__PRETTY_FUNCTION__._ZN3ipx14KKTSolverBasis10DropPrimalEPNS_7IterateEPNS_4InfoE) #8
  unreachable

194:                                              ; preds = %183
  %195 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt8valarrayIdEixEm(ptr noundef nonnull align 8 dereferenceable(16) %8, i64 noundef %131) #7
  %196 = load double, ptr %195, align 8, !tbaa !32
  %197 = fcmp ult double %196, 0.000000e+00
  br i1 %197, label %198, label %199

198:                                              ; preds = %194
  call void @__assert_fail(ptr noundef nonnull @.str.23, ptr noundef nonnull @.str.12, i32 noundef 275, ptr noundef nonnull @__PRETTY_FUNCTION__._ZN3ipx14KKTSolverBasis10DropPrimalEPNS_7IterateEPNS_4InfoE) #8
  unreachable

199:                                              ; preds = %194
  %200 = load i32, ptr %101, align 4, !tbaa !43
  %201 = add nsw i32 %200, 1
  store i32 %201, ptr %101, align 4, !tbaa !43
  %202 = load i32, ptr %102, align 4, !tbaa !44
  %203 = add nsw i32 %202, 1
  store i32 %203, ptr %102, align 4, !tbaa !44
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %14) #7
  br label %.thread106

204:                                              ; preds = %136
  %205 = sext i32 %125 to i64
  %206 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNKSt8valarrayIdEixEm(ptr noundef nonnull align 8 dereferenceable(16) %22, i64 noundef %205) #7
  %207 = load double, ptr %206, align 8, !tbaa !32
  %208 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNKSt8valarrayIdEixEm(ptr noundef nonnull align 8 dereferenceable(16) %20, i64 noundef %205) #7
  %209 = load double, ptr %208, align 8, !tbaa !32
  %210 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNKSt8valarrayIdEixEm(ptr noundef nonnull align 8 dereferenceable(16) %23, i64 noundef %205) #7
  %211 = load double, ptr %210, align 8, !tbaa !32
  %212 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNKSt8valarrayIdEixEm(ptr noundef nonnull align 8 dereferenceable(16) %21, i64 noundef %205) #7
  %213 = load double, ptr %212, align 8, !tbaa !32
  %214 = insertelement <2 x double> poison, double %207, i64 0
  %215 = insertelement <2 x double> %214, double %211, i64 1
  %216 = insertelement <2 x double> poison, double %209, i64 0
  %217 = insertelement <2 x double> %216, double %213, i64 1
  %218 = fdiv <2 x double> %215, %217
  %219 = extractelement <2 x double> %218, i64 0
  %220 = extractelement <2 x double> %218, i64 1
  %221 = fcmp ogt double %219, %220
  br i1 %221, label %222, label %223

222:                                              ; preds = %204
  invoke void @_ZN3ipx7Iterate15make_implied_lbEi(ptr noundef nonnull align 8 dereferenceable(296) %1, i32 noundef %125)
          to label %224 unwind label %158

223:                                              ; preds = %204
  invoke void @_ZN3ipx7Iterate15make_implied_ubEi(ptr noundef nonnull align 8 dereferenceable(296) %1, i32 noundef %125)
          to label %224 unwind label %158

224:                                              ; preds = %223, %222
  %225 = load ptr, ptr %95, align 8, !tbaa !30
  invoke void @_ZN3ipx5Basis17FreeBasicVariableEi(ptr noundef nonnull align 8 dereferenceable(176) %225, i32 noundef %125)
          to label %226 unwind label %158

226:                                              ; preds = %224
  %227 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt8valarrayIdEixEm(ptr noundef nonnull align 8 dereferenceable(16) %8, i64 noundef %131) #7
  store double 0.000000e+00, ptr %227, align 8, !tbaa !32
  %228 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt8valarrayIdEixEm(ptr noundef nonnull align 8 dereferenceable(16) %99, i64 noundef %205) #7
  store double 0x7FF0000000000000, ptr %228, align 8, !tbaa !32
  %229 = load i32, ptr %100, align 8, !tbaa !45
  %230 = add nsw i32 %229, 1
  store i32 %230, ptr %100, align 8, !tbaa !45
  br label %.thread106

.thread106:                                       ; preds = %226, %199
  call void @_ZNSt6vectorIiSaIiEE8pop_backEv(ptr noundef nonnull align 8 dereferenceable(24) %6) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %12) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %11) #7
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %10) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %9) #7
  br label %.backedge

231:                                              ; preds = %180
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %14) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %12) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %11) #7
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %10) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %9) #7
  br label %.backedge

.backedge:                                        ; preds = %231, %.thread106
  %232 = call noundef zeroext i1 @_ZNKSt6vectorIiSaIiEE5emptyEv(ptr noundef nonnull align 8 dereferenceable(24) %6) #7
  br i1 %232, label %._crit_edge102, label %123, !llvm.loop !42

233:                                              ; preds = %160, %166, %178, %158
  %.pn86.pn = phi { ptr, i32 } [ %159, %158 ], [ %179, %178 ], [ %.pn, %166 ], [ %161, %160 ]
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %12) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %11) #7
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %10) #7
  br label %234

234:                                              ; preds = %233, %156
  %.pn86.pn.pn = phi { ptr, i32 } [ %.pn86.pn, %233 ], [ %157, %156 ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %9) #7
  call void @_ZNSt8valarrayIdED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %8) #7
  br label %236

._crit_edge102:                                   ; preds = %.backedge, %.thread108, %.preheader
  call void @_ZNSt8valarrayIdED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %8) #7
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %8) #7
  br label %235

235:                                              ; preds = %._crit_edge, %._crit_edge102
  call void @_ZNSt6vectorIiSaIiEED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %6) #7
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %6) #7
  call void @_ZN3ipx13IndexedVectorD2Ev(ptr noundef nonnull align 8 dereferenceable(44) %5) #7
  call void @llvm.lifetime.end.p0(i64 48, ptr nonnull %5) #7
  call void @_ZN3ipx13IndexedVectorD2Ev(ptr noundef nonnull align 8 dereferenceable(44) %4) #7
  call void @llvm.lifetime.end.p0(i64 48, ptr nonnull %4) #7
  ret void

236:                                              ; preds = %234, %103
  %.pn86.pn.pn.pn = phi { ptr, i32 } [ %.pn86.pn.pn, %234 ], [ %104, %103 ]
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %8) #7
  br label %237

237:                                              ; preds = %236, %85
  %.pn92 = phi { ptr, i32 } [ %86, %85 ], [ %.pn86.pn.pn.pn, %236 ]
  call void @_ZNSt6vectorIiSaIiEED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %6) #7
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %6) #7
  call void @_ZN3ipx13IndexedVectorD2Ev(ptr noundef nonnull align 8 dereferenceable(44) %5) #7
  br label %238

238:                                              ; preds = %237, %33
  %.pn92.pn = phi { ptr, i32 } [ %.pn92, %237 ], [ %34, %33 ]
  call void @llvm.lifetime.end.p0(i64 48, ptr nonnull %5) #7
  call void @_ZN3ipx13IndexedVectorD2Ev(ptr noundef nonnull align 8 dereferenceable(44) %4) #7
  call void @llvm.lifetime.end.p0(i64 48, ptr nonnull %4) #7
  resume { ptr, i32 } %.pn92.pn
}

; Function Attrs: inlinehint mustprogress uwtable
declare dso_local void @_ZNSt8valarrayIdEC2Em(ptr noundef nonnull align 8 dereferenceable(16), i64 noundef) unnamed_addr #4 align 2

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

; Function Attrs: inlinehint mustprogress nounwind uwtable
declare dso_local noundef i32 @_ZNK3ipx5BasisixEi(ptr noundef nonnull align 8 dereferenceable(176), i32 noundef) local_unnamed_addr #2 align 2

; Function Attrs: inlinehint mustprogress nounwind uwtable
declare dso_local noundef i32 @_ZNK3ipx5Basis8StatusOfEi(ptr noundef nonnull align 8 dereferenceable(176), i32 noundef) local_unnamed_addr #2 align 2

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

; Function Attrs: mustprogress nounwind uwtable
declare dso_local noundef zeroext i1 @_ZSt8isfinited(double noundef) local_unnamed_addr #1

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

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

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

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

declare void @_ZN3ipx13IndexedVectorC1Ei(ptr noundef nonnull align 8 dereferenceable(44), i32 noundef) unnamed_addr #6

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

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

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

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

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

; Function Attrs: inlinehint mustprogress nounwind uwtable
declare dso_local noundef i32 @_ZNK3ipx5Basis10PositionOfEi(ptr noundef nonnull align 8 dereferenceable(176), i32 noundef) local_unnamed_addr #2 align 2

declare void @_ZN3ipx5Basis10TableauRowEiRNS_13IndexedVectorES2_b(ptr noundef nonnull align 8 dereferenceable(176), i32 noundef, ptr noundef nonnull align 8 dereferenceable(44), ptr noundef nonnull align 8 dereferenceable(44), i1 noundef zeroext) local_unnamed_addr #6

; Function Attrs: mustprogress uwtable
declare hidden void @"_ZN3ipx16for_each_nonzeroIZNS_14KKTSolverBasis10DropPrimalEPNS_7IterateEPNS_4InfoEE3$_0EEvRNS_13IndexedVectorERT_"(ptr noundef nonnull align 8 dereferenceable(44), ptr noundef nonnull align 8 dereferenceable(32)) local_unnamed_addr #3

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

; Function Attrs: inlinehint mustprogress nounwind uwtable
declare dso_local noundef double @_ZSt3absd(double noundef) local_unnamed_addr #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 #4

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

declare noundef nonnull align 8 dereferenceable(8) ptr @_ZNK3ipx7Control5DebugEi(ptr noundef nonnull align 8 dereferenceable(1496), i32 noundef) local_unnamed_addr #6

; Function Attrs: inlinehint mustprogress uwtable
declare dso_local void @_ZN3ipx4sci2B5cxx11Ed(ptr dead_on_unwind noalias writable sret(%"class.std::__cxx11::basic_string") align 8, double noundef) local_unnamed_addr #4

declare noundef i32 @_ZN3ipx5Basis16ExchangeIfStableEiidiPb(ptr noundef nonnull align 8 dereferenceable(176), i32 noundef, i32 noundef, double noundef, i32 noundef, ptr noundef) local_unnamed_addr #6

declare void @_ZN3ipx7Iterate15make_implied_lbEi(ptr noundef nonnull align 8 dereferenceable(296), i32 noundef) local_unnamed_addr #6

declare void @_ZN3ipx7Iterate15make_implied_ubEi(ptr noundef nonnull align 8 dereferenceable(296), i32 noundef) local_unnamed_addr #6

declare void @_ZN3ipx5Basis17FreeBasicVariableEi(ptr noundef nonnull align 8 dereferenceable(176), i32 noundef) local_unnamed_addr #6

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

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

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

attributes #0 = { mustprogress nocallback nofree nosync nounwind willreturn memory(argmem: readwrite) }
attributes #1 = { mustprogress nounwind uwtable "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }
attributes #2 = { 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 #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 = { inlinehint mustprogress uwtable "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }
attributes #5 = { noreturn nounwind "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }
attributes #6 = { "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, !8, i64 16}
!6 = !{!"_ZTSN3ipx14KKTSolverBasisE", !7, i64 0, !8, i64 8, !8, i64 16, !8, i64 24, !11, i64 32, !23, i64 552, !25, i64 568, !14, i64 572, !14, i64 576, !14, i64 580}
!7 = !{!"_ZTSN3ipx9KKTSolverE"}
!8 = !{!"any pointer", !9, i64 0}
!9 = !{!"omnipotent char", !10, i64 0}
!10 = !{!"Simple C++ TBAA"}
!11 = !{!"_ZTSN3ipx20SplittedNormalMatrixE", !12, i64 0, !8, i64 8, !13, i64 16, !13, i64 144, !13, i64 272, !15, i64 400, !15, i64 424, !15, i64 448, !23, i64 472, !25, i64 488, !26, i64 496, !26, i64 504, !26, i64 512}
!12 = !{!"_ZTSN3ipx14LinearOperatorE"}
!13 = !{!"_ZTSN3ipx12SparseMatrixE", !14, i64 0, !15, i64 8, !15, i64 32, !19, i64 56, !15, i64 80, !19, i64 104}
!14 = !{!"int", !9, i64 0}
!15 = !{!"_ZTSSt6vectorIiSaIiEE", !16, i64 0}
!16 = !{!"_ZTSSt12_Vector_baseIiSaIiEE", !17, i64 0}
!17 = !{!"_ZTSNSt12_Vector_baseIiSaIiEE12_Vector_implE", !18, i64 0}
!18 = !{!"_ZTSNSt12_Vector_baseIiSaIiEE17_Vector_impl_dataE", !8, i64 0, !8, i64 8, !8, i64 16}
!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", !8, i64 0, !8, i64 8, !8, i64 16}
!23 = !{!"_ZTSSt8valarrayIdE", !24, i64 0, !8, i64 8}
!24 = !{!"long", !9, i64 0}
!25 = !{!"bool", !9, i64 0}
!26 = !{!"double", !9, i64 0}
!27 = !{!6, !8, i64 8}
!28 = !{!29, !14, i64 12}
!29 = !{!"_ZTS8ipx_info", !14, i64 0, !14, i64 4, !14, i64 8, !14, i64 12, !14, i64 16, !14, i64 20, !14, i64 24, !14, i64 28, !14, i64 32, !14, i64 36, !14, i64 40, !14, i64 44, !14, i64 48, !14, i64 52, !14, i64 56, !14, i64 60, !14, i64 64, !14, i64 68, !14, i64 72, !14, i64 76, !26, i64 80, !26, i64 88, !26, i64 96, !26, i64 104, !26, i64 112, !26, i64 120, !26, i64 128, !26, i64 136, !26, i64 144, !26, i64 152, !26, i64 160, !26, i64 168, !26, i64 176, !26, i64 184, !14, i64 192, !14, i64 196, !14, i64 200, !14, i64 204, !14, i64 208, !14, i64 212, !14, i64 216, !26, i64 224, !26, i64 232, !26, i64 240, !26, i64 248, !26, i64 256, !26, i64 264, !26, i64 272, !26, i64 280, !26, i64 288, !26, i64 296, !26, i64 304, !26, i64 312, !26, i64 320, !26, i64 328, !26, i64 336, !26, i64 344, !26, i64 352, !26, i64 360, !26, i64 368, !26, i64 376, !26, i64 384, !26, i64 392, !26, i64 400, !26, i64 408, !14, i64 416, !14, i64 420, !14, i64 424, !14, i64 428, !26, i64 432, !26, i64 440, !26, i64 448, !26, i64 456}
!30 = !{!6, !8, i64 24}
!31 = !{!14, !14, i64 0}
!32 = !{!26, !26, i64 0}
!33 = distinct !{!33, !34}
!34 = !{!"llvm.loop.mustprogress"}
!35 = distinct !{!35, !34}
!36 = !{!37, !8, i64 0}
!37 = !{!"_ZTSZN3ipx14KKTSolverBasis10DropPrimalEPNS_7IterateEPNS_4InfoEE3$_0", !8, i64 0, !8, i64 8, !8, i64 16, !8, i64 24}
!38 = !{!8, !8, i64 0}
!39 = !{!25, !25, i64 0}
!40 = !{i8 0, i8 2}
!41 = !{}
!42 = distinct !{!42, !34}
!43 = !{!29, !14, i64 212}
!44 = !{!6, !14, i64 580}
!45 = !{!29, !14, i64 72}


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