; LLVM IR from cvanaret/Uno :: uno/ingredients/inequality_handling_methods/interior_point_methods/PrimalDualInte_5fdee8e1 (235cb831)

; 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.uno::Range" = type { %"class.uno::Collection", i64, i64 }
%"class.uno::Collection" = type { ptr }
%"class.uno::Collection<unsigned long>::iterator" = type { ptr, i64 }
%"class.uno::SparseVector<unsigned long>::iterator" = type { ptr, i64 }
%"struct.std::pair" = type { i64, i64 }
%"class.uno::OptimizationProblem" = type { ptr, ptr, i64, i64 }
%"class.uno::Iterate" = type <{ i64, i64, %"class.uno::Vector", %"class.uno::Multipliers", %"class.uno::Multipliers", double, %"struct.uno::Evaluations", i8, i8, i8, i8, [4 x i8], double, %"class.uno::DualResiduals", %"class.uno::DualResiduals", %"struct.uno::ProgressMeasures", i32, [4 x i8] }>
%"class.uno::Vector" = type { %"class.std::vector.0" }
%"class.std::vector.0" = type { %"struct.std::_Vector_base.1" }
%"struct.std::_Vector_base.1" = type { %"struct.std::_Vector_base<double, std::allocator<double>>::_Vector_impl" }
%"struct.std::_Vector_base<double, std::allocator<double>>::_Vector_impl" = type { %"struct.std::_Vector_base<double, std::allocator<double>>::_Vector_impl_data" }
%"struct.std::_Vector_base<double, std::allocator<double>>::_Vector_impl_data" = type { ptr, ptr, ptr }
%"class.uno::Multipliers" = type { %"class.uno::Vector", %"class.uno::Vector", %"class.uno::Vector" }
%"struct.uno::Evaluations" = type { double, %"class.std::vector.0", %"class.uno::SparseVector", %"class.uno::RectangularMatrix" }
%"class.uno::SparseVector" = type { %"class.std::vector", %"class.std::vector.0", i64 }
%"class.std::vector" = type { %"struct.std::_Vector_base" }
%"struct.std::_Vector_base" = type { %"struct.std::_Vector_base<unsigned long, std::allocator<unsigned long>>::_Vector_impl" }
%"struct.std::_Vector_base<unsigned long, std::allocator<unsigned long>>::_Vector_impl" = type { %"struct.std::_Vector_base<unsigned long, std::allocator<unsigned long>>::_Vector_impl_data" }
%"struct.std::_Vector_base<unsigned long, std::allocator<unsigned long>>::_Vector_impl_data" = type { ptr, ptr, ptr }
%"class.uno::RectangularMatrix" = type { %"class.std::vector.5" }
%"class.std::vector.5" = type { %"struct.std::_Vector_base.6" }
%"struct.std::_Vector_base.6" = type { %"struct.std::_Vector_base<uno::SparseVector<double>, std::allocator<uno::SparseVector<double>>>::_Vector_impl" }
%"struct.std::_Vector_base<uno::SparseVector<double>, std::allocator<uno::SparseVector<double>>>::_Vector_impl" = type { %"struct.std::_Vector_base<uno::SparseVector<double>, std::allocator<uno::SparseVector<double>>>::_Vector_impl_data" }
%"struct.std::_Vector_base<uno::SparseVector<double>, std::allocator<uno::SparseVector<double>>>::_Vector_impl_data" = type { ptr, ptr, ptr }
%"class.uno::DualResiduals" = type { double, double, double, double, %"class.uno::LagrangianGradient" }
%"class.uno::LagrangianGradient" = type { %"class.uno::Vector", %"class.uno::Vector" }
%"struct.uno::ProgressMeasures" = type { double, %"class.std::function", double }
%"class.std::function" = type { %"class.std::_Function_base", ptr }
%"class.std::_Function_base" = type { %"union.std::_Any_data", ptr }
%"union.std::_Any_data" = type { %"union.std::_Nocopy_types" }
%"union.std::_Nocopy_types" = type { { i64, i64 } }
%"class.uno::PrimalDualInteriorPointMethod" = type <{ %"class.uno::InequalityHandlingMethod", %"class.uno::SparseVector", %"class.std::vector.0", %"class.uno::RectangularMatrix", %"class.uno::SymmetricMatrix", %"class.uno::SymmetricIndefiniteLinearSystem", %"class.std::unique_ptr.12", %"class.uno::BarrierParameterUpdateStrategy", double, double, %"struct.uno::InteriorPointParameters", double, double, double, i8, i8, [6 x i8] }>
%"class.uno::InequalityHandlingMethod" = type { ptr, i64, i8, double }
%"class.uno::SymmetricMatrix" = type { %"class.std::unique_ptr" }
%"class.std::unique_ptr" = type { %"struct.std::__uniq_ptr_data" }
%"struct.std::__uniq_ptr_data" = type { %"class.std::__uniq_ptr_impl" }
%"class.std::__uniq_ptr_impl" = type { %"class.std::tuple" }
%"class.std::tuple" = type { %"struct.std::_Tuple_impl" }
%"struct.std::_Tuple_impl" = type { %"struct.std::_Head_base.11" }
%"struct.std::_Head_base.11" = type { ptr }
%"class.uno::SymmetricIndefiniteLinearSystem" = type { %"class.uno::SymmetricMatrix", %"class.uno::Vector", %"class.uno::Vector", double, double, double, double, double, double, double, double, double, double, i64 }
%"class.std::unique_ptr.12" = type { %"struct.std::__uniq_ptr_data.13" }
%"struct.std::__uniq_ptr_data.13" = type { %"class.std::__uniq_ptr_impl.14" }
%"class.std::__uniq_ptr_impl.14" = type { %"class.std::tuple.15" }
%"class.std::tuple.15" = type { %"struct.std::_Tuple_impl.16" }
%"struct.std::_Tuple_impl.16" = type { %"struct.std::_Head_base.19" }
%"struct.std::_Head_base.19" = type { ptr }
%"class.uno::BarrierParameterUpdateStrategy" = type { double, double, %"struct.uno::UpdateParameters" }
%"struct.uno::UpdateParameters" = type { double, double, double, double }
%"struct.uno::InteriorPointParameters" = type { double, double, double, double, double, double }

@.str.16 = external hidden unnamed_addr constant [98 x i8], align 1
@_ZTISt13runtime_error = external constant ptr
@.str.17 = external hidden unnamed_addr constant [78 x i8], align 1

declare i32 @__gxx_personality_v0(...)

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

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

; Function Attrs: mustprogress uwtable
define dso_local void @_ZN3uno29PrimalDualInteriorPointMethod24generate_initial_iterateERKNS_19OptimizationProblemERNS_7IterateE(ptr noundef nonnull align 8 dereferenceable(434) %0, ptr noundef nonnull align 8 dereferenceable(32) %1, ptr noundef nonnull align 8 dereferenceable(532) %2) unnamed_addr #1 align 2 personality ptr @__gxx_personality_v0 {
  %4 = alloca ptr, align 8
  %5 = alloca ptr, align 8
  %6 = alloca ptr, align 8
  %7 = alloca ptr, align 8
  %8 = alloca i32, align 4
  %9 = alloca ptr, align 8
  %10 = alloca %"class.uno::Range", align 8
  %11 = alloca %"class.uno::Collection<unsigned long>::iterator", align 8
  %12 = alloca %"class.uno::Collection<unsigned long>::iterator", align 8
  %13 = alloca i64, align 8
  %14 = alloca ptr, align 8
  %15 = alloca %"class.uno::SparseVector<unsigned long>::iterator", align 8
  %16 = alloca %"class.uno::SparseVector<unsigned long>::iterator", align 8
  %17 = alloca %"struct.std::pair", align 8
  %18 = alloca ptr, align 8
  %19 = alloca ptr, align 8
  %20 = alloca ptr, align 8
  %21 = alloca %"class.uno::Collection<unsigned long>::iterator", align 8
  %22 = alloca %"class.uno::Collection<unsigned long>::iterator", align 8
  %23 = alloca i64, align 8
  %24 = alloca ptr, align 8
  %25 = alloca %"class.uno::Collection<unsigned long>::iterator", align 8
  %26 = alloca %"class.uno::Collection<unsigned long>::iterator", align 8
  %27 = alloca i64, align 8
  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
  %28 = load ptr, ptr %4, align 8
  %29 = load ptr, ptr %5, align 8, !tbaa !5
  %30 = call noundef zeroext i1 @_ZNK3uno19OptimizationProblem26has_inequality_constraintsEv(ptr noundef nonnull align 8 dereferenceable(32) %29)
  br i1 %30, label %31, label %38

31:                                               ; preds = %3
  %32 = call ptr @__cxa_allocate_exception(i64 16) #6
  invoke void @_ZNSt13runtime_errorC1EPKc(ptr noundef nonnull align 8 dereferenceable(16) %32, ptr noundef @.str.16)
          to label %33 unwind label %34

33:                                               ; preds = %31
  call void @__cxa_throw(ptr %32, ptr @_ZTISt13runtime_error, ptr @_ZNSt13runtime_errorD1Ev) #7
  unreachable

34:                                               ; preds = %31
  %35 = landingpad { ptr, i32 }
          cleanup
  %36 = extractvalue { ptr, i32 } %35, 0
  store ptr %36, ptr %7, align 8
  %37 = extractvalue { ptr, i32 } %35, 1
  store i32 %37, ptr %8, align 4
  call void @__cxa_free_exception(ptr %32) #6
  br label %276

38:                                               ; preds = %3
  %39 = load ptr, ptr %5, align 8, !tbaa !5
  %40 = call noundef zeroext i1 @_ZNK3uno19OptimizationProblem19has_fixed_variablesEv(ptr noundef nonnull align 8 dereferenceable(32) %39)
  br i1 %40, label %41, label %48

41:                                               ; preds = %38
  %42 = call ptr @__cxa_allocate_exception(i64 16) #6
  invoke void @_ZNSt13runtime_errorC1EPKc(ptr noundef nonnull align 8 dereferenceable(16) %42, ptr noundef @.str.17)
          to label %43 unwind label %44

43:                                               ; preds = %41
  call void @__cxa_throw(ptr %42, ptr @_ZTISt13runtime_error, ptr @_ZNSt13runtime_errorD1Ev) #7
  unreachable

44:                                               ; preds = %41
  %45 = landingpad { ptr, i32 }
          cleanup
  %46 = extractvalue { ptr, i32 } %45, 0
  store ptr %46, ptr %7, align 8
  %47 = extractvalue { ptr, i32 } %45, 1
  store i32 %47, ptr %8, align 4
  call void @__cxa_free_exception(ptr %42) #6
  br label %276

48:                                               ; preds = %38
  %49 = load ptr, ptr %6, align 8, !tbaa !5
  %50 = load ptr, ptr %5, align 8, !tbaa !5
  %51 = getelementptr inbounds %"class.uno::OptimizationProblem", ptr %50, i32 0, i32 2
  %52 = load i64, ptr %51, align 8, !tbaa !9
  call void @_ZN3uno7Iterate20set_number_variablesEm(ptr noundef nonnull align 8 dereferenceable(532) %49, i64 noundef %52)
  call void @llvm.lifetime.start.p0(i64 8, ptr %9) #6
  call void @llvm.lifetime.start.p0(i64 24, ptr %10) #6
  %53 = load ptr, ptr %5, align 8, !tbaa !5
  %54 = getelementptr inbounds %"class.uno::OptimizationProblem", ptr %53, i32 0, i32 2
  %55 = load i64, ptr %54, align 8, !tbaa !9
  call void @_ZN3uno5RangeILNS_14RangeDirectionE0EEC2Em(ptr noundef nonnull align 8 dereferenceable(24) %10, i64 noundef %55)
  store ptr %10, ptr %9, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 16, ptr %11) #6
  %56 = load ptr, ptr %9, align 8, !tbaa !5
  %57 = invoke { ptr, i64 } @_ZNK3uno10CollectionImE5beginEv(ptr noundef nonnull align 8 dereferenceable(8) %56)
          to label %58 unwind label %74

58:                                               ; preds = %48
  %59 = getelementptr inbounds { ptr, i64 }, ptr %11, i32 0, i32 0
  %60 = extractvalue { ptr, i64 } %57, 0
  store ptr %60, ptr %59, align 8
  %61 = getelementptr inbounds { ptr, i64 }, ptr %11, i32 0, i32 1
  %62 = extractvalue { ptr, i64 } %57, 1
  store i64 %62, ptr %61, align 8
  call void @llvm.lifetime.start.p0(i64 16, ptr %12) #6
  %63 = load ptr, ptr %9, align 8, !tbaa !5
  %64 = invoke { ptr, i64 } @_ZNK3uno10CollectionImE3endEv(ptr noundef nonnull align 8 dereferenceable(8) %63)
          to label %65 unwind label %78

65:                                               ; preds = %58
  %66 = getelementptr inbounds { ptr, i64 }, ptr %12, i32 0, i32 0
  %67 = extractvalue { ptr, i64 } %64, 0
  store ptr %67, ptr %66, align 8
  %68 = getelementptr inbounds { ptr, i64 }, ptr %12, i32 0, i32 1
  %69 = extractvalue { ptr, i64 } %64, 1
  store i64 %69, ptr %68, align 8
  br label %70

70:                                               ; preds = %114, %65
  %71 = invoke noundef zeroext i1 @_ZN3unoneERKNS_10CollectionImE8iteratorES4_(ptr noundef nonnull align 8 dereferenceable(16) %11, ptr noundef nonnull align 8 dereferenceable(16) %12)
          to label %72 unwind label %78

72:                                               ; preds = %70
  br i1 %71, label %82, label %73

73:                                               ; preds = %72
  call void @llvm.lifetime.end.p0(i64 16, ptr %12) #6
  call void @llvm.lifetime.end.p0(i64 16, ptr %11) #6
  call void @_ZN3uno10CollectionImED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %10) #6
  call void @llvm.lifetime.end.p0(i64 24, ptr %10) #6
  call void @llvm.lifetime.end.p0(i64 8, ptr %9) #6
  br label %121

74:                                               ; preds = %48
  %75 = landingpad { ptr, i32 }
          cleanup
  %76 = extractvalue { ptr, i32 } %75, 0
  store ptr %76, ptr %7, align 8
  %77 = extractvalue { ptr, i32 } %75, 1
  store i32 %77, ptr %8, align 4
  br label %120

78:                                               ; preds = %112, %70, %58
  %79 = landingpad { ptr, i32 }
          cleanup
  %80 = extractvalue { ptr, i32 } %79, 0
  store ptr %80, ptr %7, align 8
  %81 = extractvalue { ptr, i32 } %79, 1
  store i32 %81, ptr %8, align 4
  br label %119

82:                                               ; preds = %72
  call void @llvm.lifetime.start.p0(i64 8, ptr %13) #6
  %83 = invoke noundef i64 @_ZNK3uno10CollectionImE8iteratordeEv(ptr noundef nonnull align 8 dereferenceable(16) %11)
          to label %84 unwind label %115

84:                                               ; preds = %82
  store i64 %83, ptr %13, align 8, !tbaa !12
  %85 = load ptr, ptr %6, align 8, !tbaa !5
  %86 = getelementptr inbounds %"class.uno::Iterate", ptr %85, i32 0, i32 2
  %87 = load i64, ptr %13, align 8, !tbaa !12
  %88 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZN3uno6VectorIdEixEm(ptr noundef nonnull align 8 dereferenceable(24) %86, i64 noundef %87)
          to label %89 unwind label %115

89:                                               ; preds = %84
  %90 = load double, ptr %88, align 8, !tbaa !13
  %91 = load ptr, ptr %5, align 8, !tbaa !5
  %92 = load i64, ptr %13, align 8, !tbaa !12
  %93 = load ptr, ptr %91, align 8, !tbaa !15
  %94 = getelementptr inbounds ptr, ptr %93, i64 8
  %95 = load ptr, ptr %94, align 8
  %96 = invoke noundef double %95(ptr noundef nonnull align 8 dereferenceable(32) %91, i64 noundef %92)
          to label %97 unwind label %115

97:                                               ; preds = %89
  %98 = load ptr, ptr %5, align 8, !tbaa !5
  %99 = load i64, ptr %13, align 8, !tbaa !12
  %100 = load ptr, ptr %98, align 8, !tbaa !15
  %101 = getelementptr inbounds ptr, ptr %100, i64 9
  %102 = load ptr, ptr %101, align 8
  %103 = invoke noundef double %102(ptr noundef nonnull align 8 dereferenceable(32) %98, i64 noundef %99)
          to label %104 unwind label %115

104:                                              ; preds = %97
  %105 = invoke noundef double @_ZNK3uno29PrimalDualInteriorPointMethod25push_variable_to_interiorEddd(ptr noundef nonnull align 8 dereferenceable(434) %28, double noundef %90, double noundef %96, double noundef %103)
          to label %106 unwind label %115

106:                                              ; preds = %104
  %107 = load ptr, ptr %6, align 8, !tbaa !5
  %108 = getelementptr inbounds %"class.uno::Iterate", ptr %107, i32 0, i32 2
  %109 = load i64, ptr %13, align 8, !tbaa !12
  %110 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZN3uno6VectorIdEixEm(ptr noundef nonnull align 8 dereferenceable(24) %108, i64 noundef %109)
          to label %111 unwind label %115

111:                                              ; preds = %106
  store double %105, ptr %110, align 8, !tbaa !13
  call void @llvm.lifetime.end.p0(i64 8, ptr %13) #6
  br label %112

112:                                              ; preds = %111
  %113 = invoke noundef nonnull align 8 dereferenceable(16) ptr @_ZN3uno10CollectionImE8iteratorppEv(ptr noundef nonnull align 8 dereferenceable(16) %11)
          to label %114 unwind label %78

114:                                              ; preds = %112
  br label %70

115:                                              ; preds = %106, %104, %97, %89, %84, %82
  %116 = landingpad { ptr, i32 }
          cleanup
  %117 = extractvalue { ptr, i32 } %116, 0
  store ptr %117, ptr %7, align 8
  %118 = extractvalue { ptr, i32 } %116, 1
  store i32 %118, ptr %8, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %13) #6
  br label %119

119:                                              ; preds = %115, %78
  call void @llvm.lifetime.end.p0(i64 16, ptr %12) #6
  br label %120

120:                                              ; preds = %119, %74
  call void @llvm.lifetime.end.p0(i64 16, ptr %11) #6
  call void @_ZN3uno10CollectionImED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %10) #6
  call void @llvm.lifetime.end.p0(i64 24, ptr %10) #6
  call void @llvm.lifetime.end.p0(i64 8, ptr %9) #6
  br label %276

121:                                              ; preds = %73
  %122 = load ptr, ptr %5, align 8, !tbaa !5
  %123 = getelementptr inbounds %"class.uno::OptimizationProblem", ptr %122, i32 0, i32 1
  %124 = load ptr, ptr %123, align 8, !tbaa !17
  %125 = load ptr, ptr %124, align 8, !tbaa !15
  %126 = getelementptr inbounds ptr, ptr %125, i64 14
  %127 = load ptr, ptr %126, align 8
  %128 = call noundef nonnull align 8 dereferenceable(56) ptr %127(ptr noundef nonnull align 8 dereferenceable(64) %124)
  %129 = call noundef zeroext i1 @_ZNK3uno12SparseVectorImE8is_emptyEv(ptr noundef nonnull align 8 dereferenceable(56) %128)
  br i1 %129, label %201, label %130

130:                                              ; preds = %121
  %131 = load ptr, ptr %6, align 8, !tbaa !5
  %132 = load ptr, ptr %5, align 8, !tbaa !5
  %133 = getelementptr inbounds %"class.uno::OptimizationProblem", ptr %132, i32 0, i32 1
  %134 = load ptr, ptr %133, align 8, !tbaa !17
  call void @_ZN3uno7Iterate20evaluate_constraintsERKNS_5ModelE(ptr noundef nonnull align 8 dereferenceable(532) %131, ptr noundef nonnull align 8 dereferenceable(64) %134)
  call void @llvm.lifetime.start.p0(i64 8, ptr %14) #6
  %135 = load ptr, ptr %5, align 8, !tbaa !5
  %136 = getelementptr inbounds %"class.uno::OptimizationProblem", ptr %135, i32 0, i32 1
  %137 = load ptr, ptr %136, align 8, !tbaa !17
  %138 = load ptr, ptr %137, align 8, !tbaa !15
  %139 = getelementptr inbounds ptr, ptr %138, i64 14
  %140 = load ptr, ptr %139, align 8
  %141 = call noundef nonnull align 8 dereferenceable(56) ptr %140(ptr noundef nonnull align 8 dereferenceable(64) %137)
  store ptr %141, ptr %14, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 16, ptr %15) #6
  %142 = load ptr, ptr %14, align 8, !tbaa !5
  %143 = call { ptr, i64 } @_ZNK3uno12SparseVectorImE5beginEv(ptr noundef nonnull align 8 dereferenceable(56) %142)
  %144 = getelementptr inbounds { ptr, i64 }, ptr %15, i32 0, i32 0
  %145 = extractvalue { ptr, i64 } %143, 0
  store ptr %145, ptr %144, align 8
  %146 = getelementptr inbounds { ptr, i64 }, ptr %15, i32 0, i32 1
  %147 = extractvalue { ptr, i64 } %143, 1
  store i64 %147, ptr %146, align 8
  call void @llvm.lifetime.start.p0(i64 16, ptr %16) #6
  %148 = load ptr, ptr %14, align 8, !tbaa !5
  %149 = call { ptr, i64 } @_ZNK3uno12SparseVectorImE3endEv(ptr noundef nonnull align 8 dereferenceable(56) %148)
  %150 = getelementptr inbounds { ptr, i64 }, ptr %16, i32 0, i32 0
  %151 = extractvalue { ptr, i64 } %149, 0
  store ptr %151, ptr %150, align 8
  %152 = getelementptr inbounds { ptr, i64 }, ptr %16, i32 0, i32 1
  %153 = extractvalue { ptr, i64 } %149, 1
  store i64 %153, ptr %152, align 8
  br label %154

154:                                              ; preds = %192, %130
  %155 = call noundef zeroext i1 @_ZN3unoneERKNS_12SparseVectorImE8iteratorES4_(ptr noundef nonnull align 8 dereferenceable(16) %15, ptr noundef nonnull align 8 dereferenceable(16) %16)
  br i1 %155, label %157, label %156

156:                                              ; preds = %154
  call void @llvm.lifetime.end.p0(i64 16, ptr %16) #6
  call void @llvm.lifetime.end.p0(i64 16, ptr %15) #6
  call void @llvm.lifetime.end.p0(i64 8, ptr %14) #6
  br label %194

157:                                              ; preds = %154
  call void @llvm.lifetime.start.p0(i64 16, ptr %17) #6
  %158 = call { i64, i64 } @_ZNK3uno12SparseVectorImE8iteratordeEv(ptr noundef nonnull align 8 dereferenceable(16) %15)
  %159 = getelementptr inbounds { i64, i64 }, ptr %17, i32 0, i32 0
  %160 = extractvalue { i64, i64 } %158, 0
  store i64 %160, ptr %159, align 8
  %161 = getelementptr inbounds { i64, i64 }, ptr %17, i32 0, i32 1
  %162 = extractvalue { i64, i64 } %158, 1
  store i64 %162, ptr %161, align 8
  call void @llvm.lifetime.start.p0(i64 8, ptr %18) #6
  %163 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZSt3getILm0EmmEOKNSt13tuple_elementIXT_ESt4pairIT0_T1_EE4typeEOKS4_(ptr noundef nonnull align 8 dereferenceable(16) %17) #6
  store ptr %163, ptr %18, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %19) #6
  %164 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZSt3getILm1EmmEOKNSt13tuple_elementIXT_ESt4pairIT0_T1_EE4typeEOKS4_(ptr noundef nonnull align 8 dereferenceable(16) %17) #6
  store ptr %164, ptr %19, align 8, !tbaa !5
  %165 = load ptr, ptr %6, align 8, !tbaa !5
  %166 = getelementptr inbounds %"class.uno::Iterate", ptr %165, i32 0, i32 6
  %167 = getelementptr inbounds %"struct.uno::Evaluations", ptr %166, i32 0, i32 1
  %168 = load ptr, ptr %18, align 8, !tbaa !5
  %169 = load i64, ptr %168, align 8, !tbaa !12
  %170 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt6vectorIdSaIdEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %167, i64 noundef %169) #6
  %171 = load double, ptr %170, align 8, !tbaa !13
  %172 = load ptr, ptr %5, align 8, !tbaa !5
  %173 = load ptr, ptr %19, align 8, !tbaa !5
  %174 = load i64, ptr %173, align 8, !tbaa !12
  %175 = load ptr, ptr %172, align 8, !tbaa !15
  %176 = getelementptr inbounds ptr, ptr %175, i64 8
  %177 = load ptr, ptr %176, align 8
  %178 = call noundef double %177(ptr noundef nonnull align 8 dereferenceable(32) %172, i64 noundef %174)
  %179 = load ptr, ptr %5, align 8, !tbaa !5
  %180 = load ptr, ptr %19, align 8, !tbaa !5
  %181 = load i64, ptr %180, align 8, !tbaa !12
  %182 = load ptr, ptr %179, align 8, !tbaa !15
  %183 = getelementptr inbounds ptr, ptr %182, i64 9
  %184 = load ptr, ptr %183, align 8
  %185 = call noundef double %184(ptr noundef nonnull align 8 dereferenceable(32) %179, i64 noundef %181)
  %186 = call noundef double @_ZNK3uno29PrimalDualInteriorPointMethod25push_variable_to_interiorEddd(ptr noundef nonnull align 8 dereferenceable(434) %28, double noundef %171, double noundef %178, double noundef %185)
  %187 = load ptr, ptr %6, align 8, !tbaa !5
  %188 = getelementptr inbounds %"class.uno::Iterate", ptr %187, i32 0, i32 2
  %189 = load ptr, ptr %19, align 8, !tbaa !5
  %190 = load i64, ptr %189, align 8, !tbaa !12
  %191 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZN3uno6VectorIdEixEm(ptr noundef nonnull align 8 dereferenceable(24) %188, i64 noundef %190)
  store double %186, ptr %191, align 8, !tbaa !13
  call void @llvm.lifetime.end.p0(i64 8, ptr %19) #6
  call void @llvm.lifetime.end.p0(i64 8, ptr %18) #6
  call void @llvm.lifetime.end.p0(i64 16, ptr %17) #6
  br label %192

192:                                              ; preds = %157
  %193 = call noundef nonnull align 8 dereferenceable(16) ptr @_ZN3uno12SparseVectorImE8iteratorppEv(ptr noundef nonnull align 8 dereferenceable(16) %15)
  br label %154

194:                                              ; preds = %156
  %195 = load ptr, ptr %6, align 8, !tbaa !5
  %196 = getelementptr inbounds %"class.uno::Iterate", ptr %195, i32 0, i32 9
  store i8 0, ptr %196, align 2, !tbaa !18
  %197 = load ptr, ptr %6, align 8, !tbaa !5
  %198 = getelementptr inbounds %"class.uno::Iterate", ptr %197, i32 0, i32 8
  store i8 0, ptr %198, align 1, !tbaa !44
  %199 = load ptr, ptr %6, align 8, !tbaa !5
  %200 = getelementptr inbounds %"class.uno::Iterate", ptr %199, i32 0, i32 10
  store i8 0, ptr %200, align 1, !tbaa !45
  br label %201

201:                                              ; preds = %194, %121
  call void @llvm.lifetime.start.p0(i64 8, ptr %20) #6
  %202 = load ptr, ptr %5, align 8, !tbaa !5
  %203 = load ptr, ptr %202, align 8, !tbaa !15
  %204 = getelementptr inbounds ptr, ptr %203, i64 12
  %205 = load ptr, ptr %204, align 8
  %206 = call noundef nonnull align 8 dereferenceable(8) ptr %205(ptr noundef nonnull align 8 dereferenceable(32) %202)
  store ptr %206, ptr %20, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 16, ptr %21) #6
  %207 = load ptr, ptr %20, align 8, !tbaa !5
  %208 = call { ptr, i64 } @_ZNK3uno10CollectionImE5beginEv(ptr noundef nonnull align 8 dereferenceable(8) %207)
  %209 = getelementptr inbounds { ptr, i64 }, ptr %21, i32 0, i32 0
  %210 = extractvalue { ptr, i64 } %208, 0
  store ptr %210, ptr %209, align 8
  %211 = getelementptr inbounds { ptr, i64 }, ptr %21, i32 0, i32 1
  %212 = extractvalue { ptr, i64 } %208, 1
  store i64 %212, ptr %211, align 8
  call void @llvm.lifetime.start.p0(i64 16, ptr %22) #6
  %213 = load ptr, ptr %20, align 8, !tbaa !5
  %214 = call { ptr, i64 } @_ZNK3uno10CollectionImE3endEv(ptr noundef nonnull align 8 dereferenceable(8) %213)
  %215 = getelementptr inbounds { ptr, i64 }, ptr %22, i32 0, i32 0
  %216 = extractvalue { ptr, i64 } %214, 0
  store ptr %216, ptr %215, align 8
  %217 = getelementptr inbounds { ptr, i64 }, ptr %22, i32 0, i32 1
  %218 = extractvalue { ptr, i64 } %214, 1
  store i64 %218, ptr %217, align 8
  br label %219

219:                                              ; preds = %231, %201
  %220 = call noundef zeroext i1 @_ZN3unoneERKNS_10CollectionImE8iteratorES4_(ptr noundef nonnull align 8 dereferenceable(16) %21, ptr noundef nonnull align 8 dereferenceable(16) %22)
  br i1 %220, label %222, label %221

221:                                              ; preds = %219
  call void @llvm.lifetime.end.p0(i64 16, ptr %22) #6
  call void @llvm.lifetime.end.p0(i64 16, ptr %21) #6
  call void @llvm.lifetime.end.p0(i64 8, ptr %20) #6
  br label %233

222:                                              ; preds = %219
  call void @llvm.lifetime.start.p0(i64 8, ptr %23) #6
  %223 = call noundef i64 @_ZNK3uno10CollectionImE8iteratordeEv(ptr noundef nonnull align 8 dereferenceable(16) %21)
  store i64 %223, ptr %23, align 8, !tbaa !12
  %224 = getelementptr inbounds %"class.uno::PrimalDualInteriorPointMethod", ptr %28, i32 0, i32 9
  %225 = load double, ptr %224, align 8, !tbaa !46
  %226 = load ptr, ptr %6, align 8, !tbaa !5
  %227 = getelementptr inbounds %"class.uno::Iterate", ptr %226, i32 0, i32 3
  %228 = getelementptr inbounds %"class.uno::Multipliers", ptr %227, i32 0, i32 0
  %229 = load i64, ptr %23, align 8, !tbaa !12
  %230 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZN3uno6VectorIdEixEm(ptr noundef nonnull align 8 dereferenceable(24) %228, i64 noundef %229)
  store double %225, ptr %230, align 8, !tbaa !13
  call void @llvm.lifetime.end.p0(i64 8, ptr %23) #6
  br label %231

231:                                              ; preds = %222
  %232 = call noundef nonnull align 8 dereferenceable(16) ptr @_ZN3uno10CollectionImE8iteratorppEv(ptr noundef nonnull align 8 dereferenceable(16) %21)
  br label %219

233:                                              ; preds = %221
  call void @llvm.lifetime.start.p0(i64 8, ptr %24) #6
  %234 = load ptr, ptr %5, align 8, !tbaa !5
  %235 = load ptr, ptr %234, align 8, !tbaa !15
  %236 = getelementptr inbounds ptr, ptr %235, i64 13
  %237 = load ptr, ptr %236, align 8
  %238 = call noundef nonnull align 8 dereferenceable(8) ptr %237(ptr noundef nonnull align 8 dereferenceable(32) %234)
  store ptr %238, ptr %24, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 16, ptr %25) #6
  %239 = load ptr, ptr %24, align 8, !tbaa !5
  %240 = call { ptr, i64 } @_ZNK3uno10CollectionImE5beginEv(ptr noundef nonnull align 8 dereferenceable(8) %239)
  %241 = getelementptr inbounds { ptr, i64 }, ptr %25, i32 0, i32 0
  %242 = extractvalue { ptr, i64 } %240, 0
  store ptr %242, ptr %241, align 8
  %243 = getelementptr inbounds { ptr, i64 }, ptr %25, i32 0, i32 1
  %244 = extractvalue { ptr, i64 } %240, 1
  store i64 %244, ptr %243, align 8
  call void @llvm.lifetime.start.p0(i64 16, ptr %26) #6
  %245 = load ptr, ptr %24, align 8, !tbaa !5
  %246 = call { ptr, i64 } @_ZNK3uno10CollectionImE3endEv(ptr noundef nonnull align 8 dereferenceable(8) %245)
  %247 = getelementptr inbounds { ptr, i64 }, ptr %26, i32 0, i32 0
  %248 = extractvalue { ptr, i64 } %246, 0
  store ptr %248, ptr %247, align 8
  %249 = getelementptr inbounds { ptr, i64 }, ptr %26, i32 0, i32 1
  %250 = extractvalue { ptr, i64 } %246, 1
  store i64 %250, ptr %249, align 8
  br label %251

251:                                              ; preds = %264, %233
  %252 = call noundef zeroext i1 @_ZN3unoneERKNS_10CollectionImE8iteratorES4_(ptr noundef nonnull align 8 dereferenceable(16) %25, ptr noundef nonnull align 8 dereferenceable(16) %26)
  br i1 %252, label %254, label %253

253:                                              ; preds = %251
  call void @llvm.lifetime.end.p0(i64 16, ptr %26) #6
  call void @llvm.lifetime.end.p0(i64 16, ptr %25) #6
  call void @llvm.lifetime.end.p0(i64 8, ptr %24) #6
  br label %266

254:                                              ; preds = %251
  call void @llvm.lifetime.start.p0(i64 8, ptr %27) #6
  %255 = call noundef i64 @_ZNK3uno10CollectionImE8iteratordeEv(ptr noundef nonnull align 8 dereferenceable(16) %25)
  store i64 %255, ptr %27, align 8, !tbaa !12
  %256 = getelementptr inbounds %"class.uno::PrimalDualInteriorPointMethod", ptr %28, i32 0, i32 9
  %257 = load double, ptr %256, align 8, !tbaa !46
  %258 = fneg double %257
  %259 = load ptr, ptr %6, align 8, !tbaa !5
  %260 = getelementptr inbounds %"class.uno::Iterate", ptr %259, i32 0, i32 3
  %261 = getelementptr inbounds %"class.uno::Multipliers", ptr %260, i32 0, i32 1
  %262 = load i64, ptr %27, align 8, !tbaa !12
  %263 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZN3uno6VectorIdEixEm(ptr noundef nonnull align 8 dereferenceable(24) %261, i64 noundef %262)
  store double %258, ptr %263, align 8, !tbaa !13
  call void @llvm.lifetime.end.p0(i64 8, ptr %27) #6
  br label %264

264:                                              ; preds = %254
  %265 = call noundef nonnull align 8 dereferenceable(16) ptr @_ZN3uno10CollectionImE8iteratorppEv(ptr noundef nonnull align 8 dereferenceable(16) %25)
  br label %251

266:                                              ; preds = %253
  %267 = load ptr, ptr %5, align 8, !tbaa !5
  %268 = call noundef zeroext i1 @_ZNK3uno19OptimizationProblem14is_constrainedEv(ptr noundef nonnull align 8 dereferenceable(32) %267)
  br i1 %268, label %269, label %275

269:                                              ; preds = %266
  %270 = load ptr, ptr %5, align 8, !tbaa !5
  %271 = load ptr, ptr %6, align 8, !tbaa !5
  %272 = load ptr, ptr %6, align 8, !tbaa !5
  %273 = getelementptr inbounds %"class.uno::Iterate", ptr %272, i32 0, i32 3
  %274 = getelementptr inbounds %"class.uno::Multipliers", ptr %273, i32 0, i32 2
  call void @_ZN3uno29PrimalDualInteriorPointMethod32compute_least_square_multipliersERKNS_19OptimizationProblemERNS_7IterateERNS_6VectorIdEE(ptr noundef nonnull align 8 dereferenceable(434) %28, ptr noundef nonnull align 8 dereferenceable(32) %270, ptr noundef nonnull align 8 dereferenceable(532) %271, ptr noundef nonnull align 8 dereferenceable(24) %274)
  br label %275

275:                                              ; preds = %269, %266
  ret void

276:                                              ; preds = %120, %44, %34
  %277 = load ptr, ptr %7, align 8
  %278 = load i32, ptr %8, align 4
  %279 = insertvalue { ptr, i32 } poison, ptr %277, 0
  %280 = insertvalue { ptr, i32 } %279, i32 %278, 1
  resume { ptr, i32 } %280
}

declare noundef zeroext i1 @_ZNK3uno19OptimizationProblem26has_inequality_constraintsEv(ptr noundef nonnull align 8 dereferenceable(32)) #2

declare ptr @__cxa_allocate_exception(i64)

declare void @_ZNSt13runtime_errorC1EPKc(ptr noundef nonnull align 8 dereferenceable(16), ptr noundef) unnamed_addr #2

declare void @__cxa_free_exception(ptr)

; Function Attrs: nounwind
declare void @_ZNSt13runtime_errorD1Ev(ptr noundef nonnull align 8 dereferenceable(16)) unnamed_addr #3

declare void @__cxa_throw(ptr, ptr, ptr)

declare noundef zeroext i1 @_ZNK3uno19OptimizationProblem19has_fixed_variablesEv(ptr noundef nonnull align 8 dereferenceable(32)) #2

declare void @_ZN3uno7Iterate20set_number_variablesEm(ptr noundef nonnull align 8 dereferenceable(532), i64 noundef) #2

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

; Function Attrs: mustprogress uwtable
declare dso_local { ptr, i64 } @_ZNK3uno10CollectionImE5beginEv(ptr noundef nonnull align 8 dereferenceable(8)) #1 align 2

; Function Attrs: mustprogress uwtable
declare dso_local { ptr, i64 } @_ZNK3uno10CollectionImE3endEv(ptr noundef nonnull align 8 dereferenceable(8)) #1 align 2

; Function Attrs: mustprogress nounwind uwtable
declare dso_local noundef zeroext i1 @_ZN3unoneERKNS_10CollectionImE8iteratorES4_(ptr noundef nonnull align 8 dereferenceable(16), ptr noundef nonnull align 8 dereferenceable(16)) #5

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

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

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

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

; Function Attrs: mustprogress nounwind uwtable
declare dso_local noundef zeroext i1 @_ZNK3uno12SparseVectorImE8is_emptyEv(ptr noundef nonnull align 8 dereferenceable(56)) #5 align 2

declare void @_ZN3uno7Iterate20evaluate_constraintsERKNS_5ModelE(ptr noundef nonnull align 8 dereferenceable(532), ptr noundef nonnull align 8 dereferenceable(64)) #2

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

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

; Function Attrs: mustprogress nounwind uwtable
declare dso_local noundef zeroext i1 @_ZN3unoneERKNS_12SparseVectorImE8iteratorES4_(ptr noundef nonnull align 8 dereferenceable(16), ptr noundef nonnull align 8 dereferenceable(16)) #5

; Function Attrs: mustprogress uwtable
declare dso_local { i64, i64 } @_ZNK3uno12SparseVectorImE8iteratordeEv(ptr noundef nonnull align 8 dereferenceable(16)) #1 align 2

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

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

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

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

declare noundef zeroext i1 @_ZNK3uno19OptimizationProblem14is_constrainedEv(ptr noundef nonnull align 8 dereferenceable(32)) #2

; Function Attrs: mustprogress uwtable
declare dso_local void @_ZN3uno29PrimalDualInteriorPointMethod32compute_least_square_multipliersERKNS_19OptimizationProblemERNS_7IterateERNS_6VectorIdEE(ptr noundef nonnull align 8 dereferenceable(434), ptr noundef nonnull align 8 dereferenceable(32), ptr noundef nonnull align 8 dereferenceable(532), ptr noundef nonnull align 8 dereferenceable(24)) #1 align 2

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

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

!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, !11, i64 16}
!10 = !{!"_ZTSN3uno19OptimizationProblemE", !6, i64 8, !11, i64 16, !11, i64 24}
!11 = !{!"long", !7, i64 0}
!12 = !{!11, !11, i64 0}
!13 = !{!14, !14, i64 0}
!14 = !{!"double", !7, i64 0}
!15 = !{!16, !16, i64 0}
!16 = !{!"vtable pointer", !8, i64 0}
!17 = !{!10, !6, i64 8}
!18 = !{!19, !37, i64 306}
!19 = !{!"_ZTSN3uno7IterateE", !11, i64 0, !11, i64 8, !20, i64 16, !25, i64 40, !25, i64 112, !14, i64 184, !26, i64 192, !37, i64 304, !37, i64 305, !37, i64 306, !37, i64 307, !14, i64 312, !38, i64 320, !38, i64 400, !40, i64 480, !43, i64 528}
!20 = !{!"_ZTSN3uno6VectorIdEE", !21, i64 0}
!21 = !{!"_ZTSSt6vectorIdSaIdEE", !22, i64 0}
!22 = !{!"_ZTSSt12_Vector_baseIdSaIdEE", !23, i64 0}
!23 = !{!"_ZTSNSt12_Vector_baseIdSaIdEE12_Vector_implE", !24, i64 0}
!24 = !{!"_ZTSNSt12_Vector_baseIdSaIdEE17_Vector_impl_dataE", !6, i64 0, !6, i64 8, !6, i64 16}
!25 = !{!"_ZTSN3uno11MultipliersE", !20, i64 0, !20, i64 24, !20, i64 48}
!26 = !{!"_ZTSN3uno11EvaluationsE", !14, i64 0, !21, i64 8, !27, i64 32, !32, i64 88}
!27 = !{!"_ZTSN3uno12SparseVectorIdEE", !28, i64 0, !21, i64 24, !11, i64 48}
!28 = !{!"_ZTSSt6vectorImSaImEE", !29, i64 0}
!29 = !{!"_ZTSSt12_Vector_baseImSaImEE", !30, i64 0}
!30 = !{!"_ZTSNSt12_Vector_baseImSaImEE12_Vector_implE", !31, i64 0}
!31 = !{!"_ZTSNSt12_Vector_baseImSaImEE17_Vector_impl_dataE", !6, i64 0, !6, i64 8, !6, i64 16}
!32 = !{!"_ZTSN3uno17RectangularMatrixIdEE", !33, i64 0}
!33 = !{!"_ZTSSt6vectorIN3uno12SparseVectorIdEESaIS2_EE", !34, i64 0}
!34 = !{!"_ZTSSt12_Vector_baseIN3uno12SparseVectorIdEESaIS2_EE", !35, i64 0}
!35 = !{!"_ZTSNSt12_Vector_baseIN3uno12SparseVectorIdEESaIS2_EE12_Vector_implE", !36, i64 0}
!36 = !{!"_ZTSNSt12_Vector_baseIN3uno12SparseVectorIdEESaIS2_EE17_Vector_impl_dataE", !6, i64 0, !6, i64 8, !6, i64 16}
!37 = !{!"bool", !7, i64 0}
!38 = !{!"_ZTSN3uno13DualResidualsE", !14, i64 0, !14, i64 8, !14, i64 16, !14, i64 24, !39, i64 32}
!39 = !{!"_ZTSN3uno18LagrangianGradientIdEE", !20, i64 0, !20, i64 24}
!40 = !{!"_ZTSN3uno16ProgressMeasuresE", !14, i64 0, !41, i64 8, !14, i64 40}
!41 = !{!"_ZTSSt8functionIFddEE", !42, i64 0, !6, i64 24}
!42 = !{!"_ZTSSt14_Function_base", !7, i64 0, !6, i64 16}
!43 = !{!"_ZTSN3uno13IterateStatusE", !7, i64 0}
!44 = !{!19, !37, i64 305}
!45 = !{!19, !37, i64 307}
!46 = !{!47, !14, i64 352}
!47 = !{!"_ZTSN3uno29PrimalDualInteriorPointMethodE", !48, i64 0, !27, i64 32, !21, i64 88, !32, i64 112, !49, i64 136, !56, i64 144, !57, i64 288, !63, i64 296, !14, i64 344, !14, i64 352, !65, i64 360, !14, i64 408, !14, i64 416, !14, i64 424, !37, i64 432, !37, i64 433}
!48 = !{!"_ZTSN3uno24InequalityHandlingMethodE", !11, i64 8, !37, i64 16, !14, i64 24}
!49 = !{!"_ZTSN3uno15SymmetricMatrixImdEE", !50, i64 0}
!50 = !{!"_ZTSSt10unique_ptrIN3uno13SparseStorageImdEESt14default_deleteIS2_EE", !51, i64 0}
!51 = !{!"_ZTSSt15__uniq_ptr_dataIN3uno13SparseStorageImdEESt14default_deleteIS2_ELb1ELb1EE", !52, i64 0}
!52 = !{!"_ZTSSt15__uniq_ptr_implIN3uno13SparseStorageImdEESt14default_deleteIS2_EE", !53, i64 0}
!53 = !{!"_ZTSSt5tupleIJPN3uno13SparseStorageImdEESt14default_deleteIS2_EEE", !54, i64 0}
!54 = !{!"_ZTSSt11_Tuple_implILm0EJPN3uno13SparseStorageImdEESt14default_deleteIS2_EEE", !55, i64 0}
!55 = !{!"_ZTSSt10_Head_baseILm0EPN3uno13SparseStorageImdEELb0EE", !6, i64 0}
!56 = !{!"_ZTSN3uno31SymmetricIndefiniteLinearSystemIdEE", !49, i64 0, !20, i64 8, !20, i64 32, !14, i64 56, !14, i64 64, !14, i64 72, !14, i64 80, !14, i64 88, !14, i64 96, !14, i64 104, !14, i64 112, !14, i64 120, !14, i64 128, !11, i64 136}
!57 = !{!"_ZTSSt10unique_ptrIN3uno37DirectSymmetricIndefiniteLinearSolverImdEESt14default_deleteIS2_EE", !58, i64 0}
!58 = !{!"_ZTSSt15__uniq_ptr_dataIN3uno37DirectSymmetricIndefiniteLinearSolverImdEESt14default_deleteIS2_ELb1ELb1EE", !59, i64 0}
!59 = !{!"_ZTSSt15__uniq_ptr_implIN3uno37DirectSymmetricIndefiniteLinearSolverImdEESt14default_deleteIS2_EE", !60, i64 0}
!60 = !{!"_ZTSSt5tupleIJPN3uno37DirectSymmetricIndefiniteLinearSolverImdEESt14default_deleteIS2_EEE", !61, i64 0}
!61 = !{!"_ZTSSt11_Tuple_implILm0EJPN3uno37DirectSymmetricIndefiniteLinearSolverImdEESt14default_deleteIS2_EEE", !62, i64 0}
!62 = !{!"_ZTSSt10_Head_baseILm0EPN3uno37DirectSymmetricIndefiniteLinearSolverImdEELb0EE", !6, i64 0}
!63 = !{!"_ZTSN3uno30BarrierParameterUpdateStrategyE", !14, i64 0, !14, i64 8, !64, i64 16}
!64 = !{!"_ZTSN3uno16UpdateParametersE", !14, i64 0, !14, i64 8, !14, i64 16, !14, i64 24}
!65 = !{!"_ZTSN3uno23InteriorPointParametersE", !14, i64 0, !14, i64 8, !14, i64 16, !14, i64 24, !14, i64 32, !14, i64 40}


; 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.uno::Range" = type { %"class.uno::Collection", i64, i64 }
%"class.uno::Collection" = type { ptr }
%"class.uno::Collection<unsigned long>::iterator" = type { ptr, i64 }
%"class.uno::SparseVector<unsigned long>::iterator" = type { ptr, i64 }
%"struct.std::pair" = type { i64, i64 }

@.str.16 = external hidden unnamed_addr constant [98 x i8], align 1
@_ZTISt13runtime_error = external constant ptr
@.str.17 = external hidden unnamed_addr constant [78 x i8], align 1

declare i32 @__gxx_personality_v0(...)

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

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

; Function Attrs: mustprogress uwtable
define dso_local void @_ZN3uno29PrimalDualInteriorPointMethod24generate_initial_iterateERKNS_19OptimizationProblemERNS_7IterateE(ptr noundef nonnull align 8 dereferenceable(434) %0, ptr noundef nonnull align 8 dereferenceable(32) %1, ptr noundef nonnull align 8 dereferenceable(532) %2) unnamed_addr #1 align 2 personality ptr @__gxx_personality_v0 {
  %4 = alloca %"class.uno::Range", align 8
  %5 = alloca %"class.uno::Collection<unsigned long>::iterator", align 8
  %6 = alloca %"class.uno::Collection<unsigned long>::iterator", align 8
  %7 = alloca %"class.uno::SparseVector<unsigned long>::iterator", align 8
  %8 = alloca %"class.uno::SparseVector<unsigned long>::iterator", align 8
  %9 = alloca %"struct.std::pair", align 8
  %10 = alloca %"class.uno::Collection<unsigned long>::iterator", align 8
  %11 = alloca %"class.uno::Collection<unsigned long>::iterator", align 8
  %12 = alloca %"class.uno::Collection<unsigned long>::iterator", align 8
  %13 = alloca %"class.uno::Collection<unsigned long>::iterator", align 8
  %14 = tail call noundef zeroext i1 @_ZNK3uno19OptimizationProblem26has_inequality_constraintsEv(ptr noundef nonnull align 8 dereferenceable(32) %1)
  br i1 %14, label %15, label %20

15:                                               ; preds = %3
  %16 = tail call ptr @__cxa_allocate_exception(i64 16) #6
  invoke void @_ZNSt13runtime_errorC1EPKc(ptr noundef nonnull align 8 dereferenceable(16) %16, ptr noundef nonnull @.str.16)
          to label %17 unwind label %18

17:                                               ; preds = %15
  tail call void @__cxa_throw(ptr nonnull %16, ptr nonnull @_ZTISt13runtime_error, ptr nonnull @_ZNSt13runtime_errorD1Ev) #7
  unreachable

18:                                               ; preds = %15
  %19 = landingpad { ptr, i32 }
          cleanup
  tail call void @__cxa_free_exception(ptr %16) #6
  br label %170

20:                                               ; preds = %3
  %21 = tail call noundef zeroext i1 @_ZNK3uno19OptimizationProblem19has_fixed_variablesEv(ptr noundef nonnull align 8 dereferenceable(32) %1)
  br i1 %21, label %22, label %27

22:                                               ; preds = %20
  %23 = tail call ptr @__cxa_allocate_exception(i64 16) #6
  invoke void @_ZNSt13runtime_errorC1EPKc(ptr noundef nonnull align 8 dereferenceable(16) %23, ptr noundef nonnull @.str.17)
          to label %24 unwind label %25

24:                                               ; preds = %22
  tail call void @__cxa_throw(ptr nonnull %23, ptr nonnull @_ZTISt13runtime_error, ptr nonnull @_ZNSt13runtime_errorD1Ev) #7
  unreachable

25:                                               ; preds = %22
  %26 = landingpad { ptr, i32 }
          cleanup
  tail call void @__cxa_free_exception(ptr %23) #6
  br label %170

27:                                               ; preds = %20
  %28 = getelementptr inbounds i8, ptr %1, i64 16
  %29 = load i64, ptr %28, align 8, !tbaa !5
  tail call void @_ZN3uno7Iterate20set_number_variablesEm(ptr noundef nonnull align 8 dereferenceable(532) %2, i64 noundef %29)
  call void @llvm.lifetime.start.p0(i64 24, ptr nonnull %4) #6
  %30 = load i64, ptr %28, align 8, !tbaa !5
  call void @_ZN3uno5RangeILNS_14RangeDirectionE0EEC2Em(ptr noundef nonnull align 8 dereferenceable(24) %4, i64 noundef %30)
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %5) #6
  %31 = invoke { ptr, i64 } @_ZNK3uno10CollectionImE5beginEv(ptr noundef nonnull align 8 dereferenceable(8) %4)
          to label %32 unwind label %52

32:                                               ; preds = %27
  %33 = extractvalue { ptr, i64 } %31, 0
  store ptr %33, ptr %5, align 8
  %34 = getelementptr inbounds i8, ptr %5, i64 8
  %35 = extractvalue { ptr, i64 } %31, 1
  store i64 %35, ptr %34, align 8
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %6) #6
  %36 = invoke { ptr, i64 } @_ZNK3uno10CollectionImE3endEv(ptr noundef nonnull align 8 dereferenceable(8) %4)
          to label %37 unwind label %.loopexit.split-lp

37:                                               ; preds = %32
  %38 = extractvalue { ptr, i64 } %36, 0
  store ptr %38, ptr %6, align 8
  %39 = getelementptr inbounds i8, ptr %6, i64 8
  %40 = extractvalue { ptr, i64 } %36, 1
  store i64 %40, ptr %39, align 8
  %41 = getelementptr inbounds i8, ptr %2, i64 16
  br label %42

42:                                               ; preds = %70, %37
  %43 = call noundef zeroext i1 @_ZN3unoneERKNS_10CollectionImE8iteratorES4_(ptr noundef nonnull align 8 dereferenceable(16) %5, ptr noundef nonnull align 8 dereferenceable(16) %6)
  br i1 %43, label %54, label %44

44:                                               ; preds = %42
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %6) #6
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %5) #6
  call void @_ZN3uno10CollectionImED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %4) #6
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %4) #6
  %45 = getelementptr inbounds i8, ptr %1, i64 8
  %46 = load ptr, ptr %45, align 8, !tbaa !11
  %47 = load ptr, ptr %46, align 8, !tbaa !12
  %48 = getelementptr inbounds i8, ptr %47, i64 112
  %49 = load ptr, ptr %48, align 8
  %50 = call noundef nonnull align 8 dereferenceable(56) ptr %49(ptr noundef nonnull align 8 dereferenceable(64) %46)
  %51 = call noundef zeroext i1 @_ZNK3uno12SparseVectorImE8is_emptyEv(ptr noundef nonnull align 8 dereferenceable(56) %50)
  br i1 %51, label %122, label %77

52:                                               ; preds = %27
  %53 = landingpad { ptr, i32 }
          cleanup
  br label %76

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

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

54:                                               ; preds = %42
  %55 = invoke noundef i64 @_ZNK3uno10CollectionImE8iteratordeEv(ptr noundef nonnull align 8 dereferenceable(16) %5)
          to label %56 unwind label %73

56:                                               ; preds = %54
  %57 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZN3uno6VectorIdEixEm(ptr noundef nonnull align 8 dereferenceable(24) %41, i64 noundef %55)
  %58 = load double, ptr %57, align 8, !tbaa !14
  %59 = load ptr, ptr %1, align 8, !tbaa !12
  %60 = getelementptr inbounds i8, ptr %59, i64 64
  %61 = load ptr, ptr %60, align 8
  %62 = invoke noundef double %61(ptr noundef nonnull align 8 dereferenceable(32) %1, i64 noundef %55)
          to label %63 unwind label %73

63:                                               ; preds = %56
  %64 = load ptr, ptr %1, align 8, !tbaa !12
  %65 = getelementptr inbounds i8, ptr %64, i64 72
  %66 = load ptr, ptr %65, align 8
  %67 = invoke noundef double %66(ptr noundef nonnull align 8 dereferenceable(32) %1, i64 noundef %55)
          to label %68 unwind label %73

68:                                               ; preds = %63
  %69 = invoke noundef double @_ZNK3uno29PrimalDualInteriorPointMethod25push_variable_to_interiorEddd(ptr noundef nonnull align 8 dereferenceable(434) %0, double noundef %58, double noundef %62, double noundef %67)
          to label %70 unwind label %73

70:                                               ; preds = %68
  %71 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZN3uno6VectorIdEixEm(ptr noundef nonnull align 8 dereferenceable(24) %41, i64 noundef %55)
  store double %69, ptr %71, align 8, !tbaa !14
  %72 = invoke noundef nonnull align 8 dereferenceable(16) ptr @_ZN3uno10CollectionImE8iteratorppEv(ptr noundef nonnull align 8 dereferenceable(16) %5)
          to label %42 unwind label %.loopexit

73:                                               ; preds = %68, %63, %56, %54
  %74 = landingpad { ptr, i32 }
          cleanup
  br label %75

75:                                               ; preds = %.loopexit, %.loopexit.split-lp, %73
  %.pn = phi { ptr, i32 } [ %74, %73 ], [ %lpad.loopexit, %.loopexit ], [ %lpad.loopexit.split-lp, %.loopexit.split-lp ]
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %6) #6
  br label %76

76:                                               ; preds = %75, %52
  %.pn.pn = phi { ptr, i32 } [ %.pn, %75 ], [ %53, %52 ]
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %5) #6
  call void @_ZN3uno10CollectionImED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %4) #6
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %4) #6
  br label %170

77:                                               ; preds = %44
  %78 = load ptr, ptr %45, align 8, !tbaa !11
  call void @_ZN3uno7Iterate20evaluate_constraintsERKNS_5ModelE(ptr noundef nonnull align 8 dereferenceable(532) %2, ptr noundef nonnull align 8 dereferenceable(64) %78)
  %79 = load ptr, ptr %45, align 8, !tbaa !11
  %80 = load ptr, ptr %79, align 8, !tbaa !12
  %81 = getelementptr inbounds i8, ptr %80, i64 112
  %82 = load ptr, ptr %81, align 8
  %83 = call noundef nonnull align 8 dereferenceable(56) ptr %82(ptr noundef nonnull align 8 dereferenceable(64) %79)
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %7) #6
  %84 = call { ptr, i64 } @_ZNK3uno12SparseVectorImE5beginEv(ptr noundef nonnull align 8 dereferenceable(56) %83)
  %85 = extractvalue { ptr, i64 } %84, 0
  store ptr %85, ptr %7, align 8
  %86 = getelementptr inbounds i8, ptr %7, i64 8
  %87 = extractvalue { ptr, i64 } %84, 1
  store i64 %87, ptr %86, align 8
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %8) #6
  %88 = call { ptr, i64 } @_ZNK3uno12SparseVectorImE3endEv(ptr noundef nonnull align 8 dereferenceable(56) %83)
  %89 = extractvalue { ptr, i64 } %88, 0
  store ptr %89, ptr %8, align 8
  %90 = getelementptr inbounds i8, ptr %8, i64 8
  %91 = extractvalue { ptr, i64 } %88, 1
  store i64 %91, ptr %90, align 8
  %92 = call noundef zeroext i1 @_ZN3unoneERKNS_12SparseVectorImE8iteratorES4_(ptr noundef nonnull align 8 dereferenceable(16) %7, ptr noundef nonnull align 8 dereferenceable(16) %8)
  br i1 %92, label %.lr.ph, label %._crit_edge

.lr.ph:                                           ; preds = %77
  %93 = getelementptr inbounds i8, ptr %9, i64 8
  %94 = getelementptr inbounds i8, ptr %2, i64 200
  br label %98

._crit_edge:                                      ; preds = %98, %77
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %8) #6
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %7) #6
  %95 = getelementptr inbounds i8, ptr %2, i64 306
  store i8 0, ptr %95, align 2, !tbaa !16
  %96 = getelementptr inbounds i8, ptr %2, i64 305
  store i8 0, ptr %96, align 1, !tbaa !42
  %97 = getelementptr inbounds i8, ptr %2, i64 307
  store i8 0, ptr %97, align 1, !tbaa !43
  br label %122

98:                                               ; preds = %.lr.ph, %98
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %9) #6
  %99 = call { i64, i64 } @_ZNK3uno12SparseVectorImE8iteratordeEv(ptr noundef nonnull align 8 dereferenceable(16) %7)
  %100 = extractvalue { i64, i64 } %99, 0
  store i64 %100, ptr %9, align 8
  %101 = extractvalue { i64, i64 } %99, 1
  store i64 %101, ptr %93, align 8
  %102 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZSt3getILm0EmmEOKNSt13tuple_elementIXT_ESt4pairIT0_T1_EE4typeEOKS4_(ptr noundef nonnull align 8 dereferenceable(16) %9) #6
  %103 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZSt3getILm1EmmEOKNSt13tuple_elementIXT_ESt4pairIT0_T1_EE4typeEOKS4_(ptr noundef nonnull align 8 dereferenceable(16) %9) #6
  %104 = load i64, ptr %102, align 8, !tbaa !44
  %105 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt6vectorIdSaIdEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %94, i64 noundef %104) #6
  %106 = load double, ptr %105, align 8, !tbaa !14
  %107 = load i64, ptr %103, align 8, !tbaa !44
  %108 = load ptr, ptr %1, align 8, !tbaa !12
  %109 = getelementptr inbounds i8, ptr %108, i64 64
  %110 = load ptr, ptr %109, align 8
  %111 = call noundef double %110(ptr noundef nonnull align 8 dereferenceable(32) %1, i64 noundef %107)
  %112 = load i64, ptr %103, align 8, !tbaa !44
  %113 = load ptr, ptr %1, align 8, !tbaa !12
  %114 = getelementptr inbounds i8, ptr %113, i64 72
  %115 = load ptr, ptr %114, align 8
  %116 = call noundef double %115(ptr noundef nonnull align 8 dereferenceable(32) %1, i64 noundef %112)
  %117 = call noundef double @_ZNK3uno29PrimalDualInteriorPointMethod25push_variable_to_interiorEddd(ptr noundef nonnull align 8 dereferenceable(434) %0, double noundef %106, double noundef %111, double noundef %116)
  %118 = load i64, ptr %103, align 8, !tbaa !44
  %119 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZN3uno6VectorIdEixEm(ptr noundef nonnull align 8 dereferenceable(24) %41, i64 noundef %118)
  store double %117, ptr %119, align 8, !tbaa !14
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %9) #6
  %120 = call noundef nonnull align 8 dereferenceable(16) ptr @_ZN3uno12SparseVectorImE8iteratorppEv(ptr noundef nonnull align 8 dereferenceable(16) %7)
  %121 = call noundef zeroext i1 @_ZN3unoneERKNS_12SparseVectorImE8iteratorES4_(ptr noundef nonnull align 8 dereferenceable(16) %7, ptr noundef nonnull align 8 dereferenceable(16) %8)
  br i1 %121, label %98, label %._crit_edge

122:                                              ; preds = %._crit_edge, %44
  %123 = load ptr, ptr %1, align 8, !tbaa !12
  %124 = getelementptr inbounds i8, ptr %123, i64 96
  %125 = load ptr, ptr %124, align 8
  %126 = call noundef nonnull align 8 dereferenceable(8) ptr %125(ptr noundef nonnull align 8 dereferenceable(32) %1)
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %10) #6
  %127 = call { ptr, i64 } @_ZNK3uno10CollectionImE5beginEv(ptr noundef nonnull align 8 dereferenceable(8) %126)
  %128 = extractvalue { ptr, i64 } %127, 0
  store ptr %128, ptr %10, align 8
  %129 = getelementptr inbounds i8, ptr %10, i64 8
  %130 = extractvalue { ptr, i64 } %127, 1
  store i64 %130, ptr %129, align 8
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %11) #6
  %131 = call { ptr, i64 } @_ZNK3uno10CollectionImE3endEv(ptr noundef nonnull align 8 dereferenceable(8) %126)
  %132 = extractvalue { ptr, i64 } %131, 0
  store ptr %132, ptr %11, align 8
  %133 = getelementptr inbounds i8, ptr %11, i64 8
  %134 = extractvalue { ptr, i64 } %131, 1
  store i64 %134, ptr %133, align 8
  %135 = call noundef zeroext i1 @_ZN3unoneERKNS_10CollectionImE8iteratorES4_(ptr noundef nonnull align 8 dereferenceable(16) %10, ptr noundef nonnull align 8 dereferenceable(16) %11)
  br i1 %135, label %.lr.ph56, label %._crit_edge57

.lr.ph56:                                         ; preds = %122
  %136 = getelementptr inbounds i8, ptr %0, i64 352
  %137 = getelementptr inbounds i8, ptr %2, i64 40
  br label %153

._crit_edge57:                                    ; preds = %153, %122
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %11) #6
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %10) #6
  %138 = load ptr, ptr %1, align 8, !tbaa !12
  %139 = getelementptr inbounds i8, ptr %138, i64 104
  %140 = load ptr, ptr %139, align 8
  %141 = call noundef nonnull align 8 dereferenceable(8) ptr %140(ptr noundef nonnull align 8 dereferenceable(32) %1)
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %12) #6
  %142 = call { ptr, i64 } @_ZNK3uno10CollectionImE5beginEv(ptr noundef nonnull align 8 dereferenceable(8) %141)
  %143 = extractvalue { ptr, i64 } %142, 0
  store ptr %143, ptr %12, align 8
  %144 = getelementptr inbounds i8, ptr %12, i64 8
  %145 = extractvalue { ptr, i64 } %142, 1
  store i64 %145, ptr %144, align 8
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %13) #6
  %146 = call { ptr, i64 } @_ZNK3uno10CollectionImE3endEv(ptr noundef nonnull align 8 dereferenceable(8) %141)
  %147 = extractvalue { ptr, i64 } %146, 0
  store ptr %147, ptr %13, align 8
  %148 = getelementptr inbounds i8, ptr %13, i64 8
  %149 = extractvalue { ptr, i64 } %146, 1
  store i64 %149, ptr %148, align 8
  %150 = call noundef zeroext i1 @_ZN3unoneERKNS_10CollectionImE8iteratorES4_(ptr noundef nonnull align 8 dereferenceable(16) %12, ptr noundef nonnull align 8 dereferenceable(16) %13)
  br i1 %150, label %.lr.ph59, label %._crit_edge60

.lr.ph59:                                         ; preds = %._crit_edge57
  %151 = getelementptr inbounds i8, ptr %0, i64 352
  %152 = getelementptr inbounds i8, ptr %2, i64 64
  br label %160

153:                                              ; preds = %.lr.ph56, %153
  %154 = call noundef i64 @_ZNK3uno10CollectionImE8iteratordeEv(ptr noundef nonnull align 8 dereferenceable(16) %10)
  %155 = load double, ptr %136, align 8, !tbaa !45
  %156 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZN3uno6VectorIdEixEm(ptr noundef nonnull align 8 dereferenceable(24) %137, i64 noundef %154)
  store double %155, ptr %156, align 8, !tbaa !14
  %157 = call noundef nonnull align 8 dereferenceable(16) ptr @_ZN3uno10CollectionImE8iteratorppEv(ptr noundef nonnull align 8 dereferenceable(16) %10)
  %158 = call noundef zeroext i1 @_ZN3unoneERKNS_10CollectionImE8iteratorES4_(ptr noundef nonnull align 8 dereferenceable(16) %10, ptr noundef nonnull align 8 dereferenceable(16) %11)
  br i1 %158, label %153, label %._crit_edge57

._crit_edge60:                                    ; preds = %160, %._crit_edge57
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %13) #6
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %12) #6
  %159 = call noundef zeroext i1 @_ZNK3uno19OptimizationProblem14is_constrainedEv(ptr noundef nonnull align 8 dereferenceable(32) %1)
  br i1 %159, label %167, label %169

160:                                              ; preds = %.lr.ph59, %160
  %161 = call noundef i64 @_ZNK3uno10CollectionImE8iteratordeEv(ptr noundef nonnull align 8 dereferenceable(16) %12)
  %162 = load double, ptr %151, align 8, !tbaa !45
  %163 = fneg double %162
  %164 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZN3uno6VectorIdEixEm(ptr noundef nonnull align 8 dereferenceable(24) %152, i64 noundef %161)
  store double %163, ptr %164, align 8, !tbaa !14
  %165 = call noundef nonnull align 8 dereferenceable(16) ptr @_ZN3uno10CollectionImE8iteratorppEv(ptr noundef nonnull align 8 dereferenceable(16) %12)
  %166 = call noundef zeroext i1 @_ZN3unoneERKNS_10CollectionImE8iteratorES4_(ptr noundef nonnull align 8 dereferenceable(16) %12, ptr noundef nonnull align 8 dereferenceable(16) %13)
  br i1 %166, label %160, label %._crit_edge60

167:                                              ; preds = %._crit_edge60
  %168 = getelementptr inbounds i8, ptr %2, i64 88
  call void @_ZN3uno29PrimalDualInteriorPointMethod32compute_least_square_multipliersERKNS_19OptimizationProblemERNS_7IterateERNS_6VectorIdEE(ptr noundef nonnull align 8 dereferenceable(434) %0, ptr noundef nonnull align 8 dereferenceable(32) %1, ptr noundef nonnull align 8 dereferenceable(532) %2, ptr noundef nonnull align 8 dereferenceable(24) %168)
  br label %169

169:                                              ; preds = %167, %._crit_edge60
  ret void

170:                                              ; preds = %76, %25, %18
  %.pn53 = phi { ptr, i32 } [ %19, %18 ], [ %26, %25 ], [ %.pn.pn, %76 ]
  resume { ptr, i32 } %.pn53
}

declare noundef zeroext i1 @_ZNK3uno19OptimizationProblem26has_inequality_constraintsEv(ptr noundef nonnull align 8 dereferenceable(32)) local_unnamed_addr #2

declare ptr @__cxa_allocate_exception(i64) local_unnamed_addr

declare void @_ZNSt13runtime_errorC1EPKc(ptr noundef nonnull align 8 dereferenceable(16), ptr noundef) unnamed_addr #2

declare void @__cxa_free_exception(ptr) local_unnamed_addr

; Function Attrs: nounwind
declare void @_ZNSt13runtime_errorD1Ev(ptr noundef nonnull align 8 dereferenceable(16)) unnamed_addr #3

declare void @__cxa_throw(ptr, ptr, ptr) local_unnamed_addr

declare noundef zeroext i1 @_ZNK3uno19OptimizationProblem19has_fixed_variablesEv(ptr noundef nonnull align 8 dereferenceable(32)) local_unnamed_addr #2

declare void @_ZN3uno7Iterate20set_number_variablesEm(ptr noundef nonnull align 8 dereferenceable(532), i64 noundef) local_unnamed_addr #2

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

; Function Attrs: mustprogress uwtable
declare dso_local { ptr, i64 } @_ZNK3uno10CollectionImE5beginEv(ptr noundef nonnull align 8 dereferenceable(8)) local_unnamed_addr #1 align 2

; Function Attrs: mustprogress uwtable
declare dso_local { ptr, i64 } @_ZNK3uno10CollectionImE3endEv(ptr noundef nonnull align 8 dereferenceable(8)) local_unnamed_addr #1 align 2

; Function Attrs: mustprogress nounwind uwtable
declare dso_local noundef zeroext i1 @_ZN3unoneERKNS_10CollectionImE8iteratorES4_(ptr noundef nonnull align 8 dereferenceable(16), ptr noundef nonnull align 8 dereferenceable(16)) local_unnamed_addr #5

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

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

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

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

; Function Attrs: mustprogress nounwind uwtable
declare dso_local noundef zeroext i1 @_ZNK3uno12SparseVectorImE8is_emptyEv(ptr noundef nonnull align 8 dereferenceable(56)) local_unnamed_addr #5 align 2

declare void @_ZN3uno7Iterate20evaluate_constraintsERKNS_5ModelE(ptr noundef nonnull align 8 dereferenceable(532), ptr noundef nonnull align 8 dereferenceable(64)) local_unnamed_addr #2

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

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

; Function Attrs: mustprogress nounwind uwtable
declare dso_local noundef zeroext i1 @_ZN3unoneERKNS_12SparseVectorImE8iteratorES4_(ptr noundef nonnull align 8 dereferenceable(16), ptr noundef nonnull align 8 dereferenceable(16)) local_unnamed_addr #5

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

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

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

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

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

declare noundef zeroext i1 @_ZNK3uno19OptimizationProblem14is_constrainedEv(ptr noundef nonnull align 8 dereferenceable(32)) local_unnamed_addr #2

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

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

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

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

!0 = !{i32 1, !"wchar_size", i32 4}
!1 = !{i32 8, !"PIC Level", i32 2}
!2 = !{i32 7, !"PIE Level", i32 2}
!3 = !{i32 7, !"uwtable", i32 2}
!4 = !{!"clang version 19.1.0 (git@github.com:llvm/llvm-project.git a4bf6cd7cfb1a1421ba92bca9d017b49936c55e4)"}
!5 = !{!6, !10, i64 16}
!6 = !{!"_ZTSN3uno19OptimizationProblemE", !7, i64 8, !10, i64 16, !10, i64 24}
!7 = !{!"any pointer", !8, i64 0}
!8 = !{!"omnipotent char", !9, i64 0}
!9 = !{!"Simple C++ TBAA"}
!10 = !{!"long", !8, i64 0}
!11 = !{!6, !7, i64 8}
!12 = !{!13, !13, i64 0}
!13 = !{!"vtable pointer", !9, i64 0}
!14 = !{!15, !15, i64 0}
!15 = !{!"double", !8, i64 0}
!16 = !{!17, !35, i64 306}
!17 = !{!"_ZTSN3uno7IterateE", !10, i64 0, !10, i64 8, !18, i64 16, !23, i64 40, !23, i64 112, !15, i64 184, !24, i64 192, !35, i64 304, !35, i64 305, !35, i64 306, !35, i64 307, !15, i64 312, !36, i64 320, !36, i64 400, !38, i64 480, !41, i64 528}
!18 = !{!"_ZTSN3uno6VectorIdEE", !19, i64 0}
!19 = !{!"_ZTSSt6vectorIdSaIdEE", !20, i64 0}
!20 = !{!"_ZTSSt12_Vector_baseIdSaIdEE", !21, i64 0}
!21 = !{!"_ZTSNSt12_Vector_baseIdSaIdEE12_Vector_implE", !22, i64 0}
!22 = !{!"_ZTSNSt12_Vector_baseIdSaIdEE17_Vector_impl_dataE", !7, i64 0, !7, i64 8, !7, i64 16}
!23 = !{!"_ZTSN3uno11MultipliersE", !18, i64 0, !18, i64 24, !18, i64 48}
!24 = !{!"_ZTSN3uno11EvaluationsE", !15, i64 0, !19, i64 8, !25, i64 32, !30, i64 88}
!25 = !{!"_ZTSN3uno12SparseVectorIdEE", !26, i64 0, !19, i64 24, !10, i64 48}
!26 = !{!"_ZTSSt6vectorImSaImEE", !27, i64 0}
!27 = !{!"_ZTSSt12_Vector_baseImSaImEE", !28, i64 0}
!28 = !{!"_ZTSNSt12_Vector_baseImSaImEE12_Vector_implE", !29, i64 0}
!29 = !{!"_ZTSNSt12_Vector_baseImSaImEE17_Vector_impl_dataE", !7, i64 0, !7, i64 8, !7, i64 16}
!30 = !{!"_ZTSN3uno17RectangularMatrixIdEE", !31, i64 0}
!31 = !{!"_ZTSSt6vectorIN3uno12SparseVectorIdEESaIS2_EE", !32, i64 0}
!32 = !{!"_ZTSSt12_Vector_baseIN3uno12SparseVectorIdEESaIS2_EE", !33, i64 0}
!33 = !{!"_ZTSNSt12_Vector_baseIN3uno12SparseVectorIdEESaIS2_EE12_Vector_implE", !34, i64 0}
!34 = !{!"_ZTSNSt12_Vector_baseIN3uno12SparseVectorIdEESaIS2_EE17_Vector_impl_dataE", !7, i64 0, !7, i64 8, !7, i64 16}
!35 = !{!"bool", !8, i64 0}
!36 = !{!"_ZTSN3uno13DualResidualsE", !15, i64 0, !15, i64 8, !15, i64 16, !15, i64 24, !37, i64 32}
!37 = !{!"_ZTSN3uno18LagrangianGradientIdEE", !18, i64 0, !18, i64 24}
!38 = !{!"_ZTSN3uno16ProgressMeasuresE", !15, i64 0, !39, i64 8, !15, i64 40}
!39 = !{!"_ZTSSt8functionIFddEE", !40, i64 0, !7, i64 24}
!40 = !{!"_ZTSSt14_Function_base", !8, i64 0, !7, i64 16}
!41 = !{!"_ZTSN3uno13IterateStatusE", !8, i64 0}
!42 = !{!17, !35, i64 305}
!43 = !{!17, !35, i64 307}
!44 = !{!10, !10, i64 0}
!45 = !{!46, !15, i64 352}
!46 = !{!"_ZTSN3uno29PrimalDualInteriorPointMethodE", !47, i64 0, !25, i64 32, !19, i64 88, !30, i64 112, !48, i64 136, !55, i64 144, !56, i64 288, !62, i64 296, !15, i64 344, !15, i64 352, !64, i64 360, !15, i64 408, !15, i64 416, !15, i64 424, !35, i64 432, !35, i64 433}
!47 = !{!"_ZTSN3uno24InequalityHandlingMethodE", !10, i64 8, !35, i64 16, !15, i64 24}
!48 = !{!"_ZTSN3uno15SymmetricMatrixImdEE", !49, i64 0}
!49 = !{!"_ZTSSt10unique_ptrIN3uno13SparseStorageImdEESt14default_deleteIS2_EE", !50, i64 0}
!50 = !{!"_ZTSSt15__uniq_ptr_dataIN3uno13SparseStorageImdEESt14default_deleteIS2_ELb1ELb1EE", !51, i64 0}
!51 = !{!"_ZTSSt15__uniq_ptr_implIN3uno13SparseStorageImdEESt14default_deleteIS2_EE", !52, i64 0}
!52 = !{!"_ZTSSt5tupleIJPN3uno13SparseStorageImdEESt14default_deleteIS2_EEE", !53, i64 0}
!53 = !{!"_ZTSSt11_Tuple_implILm0EJPN3uno13SparseStorageImdEESt14default_deleteIS2_EEE", !54, i64 0}
!54 = !{!"_ZTSSt10_Head_baseILm0EPN3uno13SparseStorageImdEELb0EE", !7, i64 0}
!55 = !{!"_ZTSN3uno31SymmetricIndefiniteLinearSystemIdEE", !48, i64 0, !18, i64 8, !18, i64 32, !15, i64 56, !15, i64 64, !15, i64 72, !15, i64 80, !15, i64 88, !15, i64 96, !15, i64 104, !15, i64 112, !15, i64 120, !15, i64 128, !10, i64 136}
!56 = !{!"_ZTSSt10unique_ptrIN3uno37DirectSymmetricIndefiniteLinearSolverImdEESt14default_deleteIS2_EE", !57, i64 0}
!57 = !{!"_ZTSSt15__uniq_ptr_dataIN3uno37DirectSymmetricIndefiniteLinearSolverImdEESt14default_deleteIS2_ELb1ELb1EE", !58, i64 0}
!58 = !{!"_ZTSSt15__uniq_ptr_implIN3uno37DirectSymmetricIndefiniteLinearSolverImdEESt14default_deleteIS2_EE", !59, i64 0}
!59 = !{!"_ZTSSt5tupleIJPN3uno37DirectSymmetricIndefiniteLinearSolverImdEESt14default_deleteIS2_EEE", !60, i64 0}
!60 = !{!"_ZTSSt11_Tuple_implILm0EJPN3uno37DirectSymmetricIndefiniteLinearSolverImdEESt14default_deleteIS2_EEE", !61, i64 0}
!61 = !{!"_ZTSSt10_Head_baseILm0EPN3uno37DirectSymmetricIndefiniteLinearSolverImdEELb0EE", !7, i64 0}
!62 = !{!"_ZTSN3uno30BarrierParameterUpdateStrategyE", !15, i64 0, !15, i64 8, !63, i64 16}
!63 = !{!"_ZTSN3uno16UpdateParametersE", !15, i64 0, !15, i64 8, !15, i64 16, !15, i64 24}
!64 = !{!"_ZTSN3uno23InteriorPointParametersE", !15, i64 0, !15, i64 8, !15, i64 16, !15, i64 24, !15, i64 32, !15, i64 40}


; Effective O3 passes: EarlyCSEPass,GVNPass,GlobalOptPass,InferFunctionAttrsPass,InstCombinePass,JumpThreadingPass,LICMPass,LoopRotatePass,LoopSimplifyPass,LoopUnrollPass,SROAPass,SimplifyCFGPass,TailCallElimPass