; LLVM IR from ERGO-Code/HiGHS :: src/ipm/ipx/model.ll (ZN3ipx5Model4LoadERKNS_7ControlEiiPKiS5_PKdS7_PKcdS7_S7_S7_)

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

%"class.std::__cxx11::basic_stringstream" = type { %"class.std::basic_iostream.base", %"class.std::__cxx11::basic_stringbuf", %"class.std::basic_ios" }
%"class.std::basic_iostream.base" = type { %"class.std::basic_istream.base", %"class.std::basic_ostream.base" }
%"class.std::basic_istream.base" = type { ptr, i64 }
%"class.std::basic_ostream.base" = type { ptr }
%"class.std::__cxx11::basic_stringbuf" = type { %"class.std::basic_streambuf", i32, %"class.std::__cxx11::basic_string" }
%"class.std::basic_streambuf" = type { ptr, ptr, ptr, ptr, ptr, ptr, ptr, %"class.std::locale" }
%"class.std::locale" = type { 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.std::basic_ios" = type { %"class.std::ios_base", ptr, i8, i8, ptr, ptr, ptr, ptr }
%"class.std::ios_base" = type { ptr, i64, i64, i32, i32, i32, ptr, %"struct.std::ios_base::_Words", [8 x %"struct.std::ios_base::_Words"], i32, ptr, %"class.std::locale" }
%"struct.std::ios_base::_Words" = type { ptr, i64 }
%"class.ipx::SparseMatrix" = type { i32, %"class.std::vector", %"class.std::vector", %"class.std::vector.3", %"class.std::vector", %"class.std::vector.3" }
%"class.std::vector" = type { %"struct.std::_Vector_base" }
%"struct.std::_Vector_base" = type { %"struct.std::_Vector_base<int, std::allocator<int>>::_Vector_impl" }
%"struct.std::_Vector_base<int, std::allocator<int>>::_Vector_impl" = type { %"struct.std::_Vector_base<int, std::allocator<int>>::_Vector_impl_data" }
%"struct.std::_Vector_base<int, std::allocator<int>>::_Vector_impl_data" = type { ptr, ptr, ptr }
%"class.std::vector.3" = type { %"struct.std::_Vector_base.4" }
%"struct.std::_Vector_base.4" = type { %"struct.std::_Vector_base<double, std::allocator<double>>::_Vector_impl" }
%"struct.std::_Vector_base<double, std::allocator<double>>::_Vector_impl" = type { %"struct.std::_Vector_base<double, std::allocator<double>>::_Vector_impl_data" }
%"struct.std::_Vector_base<double, std::allocator<double>>::_Vector_impl_data" = type { ptr, ptr, ptr }
%"class.ipx::Model" = type { i8, i32, i32, i32, i32, %"class.ipx::SparseMatrix", %"class.ipx::SparseMatrix", %"class.std::valarray", %"class.std::valarray", %"class.std::valarray", %"class.std::valarray", double, double, i32, i32, i32, i32, i32, %"class.std::vector", %"class.std::vector.8", double, double, double, %"class.std::valarray", %"class.std::valarray", %"class.std::valarray", %"class.std::valarray", %"class.ipx::SparseMatrix", %"class.std::vector", %"class.std::valarray", %"class.std::valarray" }
%"class.std::vector.8" = type { %"struct.std::_Vector_base.9" }
%"struct.std::_Vector_base.9" = type { %"struct.std::_Vector_base<char, std::allocator<char>>::_Vector_impl" }
%"struct.std::_Vector_base<char, std::allocator<char>>::_Vector_impl" = type { %"struct.std::_Vector_base<char, std::allocator<char>>::_Vector_impl_data" }
%"struct.std::_Vector_base<char, std::allocator<char>>::_Vector_impl_data" = type { ptr, ptr, ptr }
%"class.std::valarray" = type { i64, ptr }

@.str.11 = external hidden unnamed_addr constant [7 x i8], align 1
@.str.12 = external hidden unnamed_addr constant [21 x i8], align 1
@.str.13 = external hidden unnamed_addr constant [26 x i8], align 1
@.str.14 = external hidden unnamed_addr constant [23 x i8], align 1
@.str.15 = external hidden unnamed_addr constant [32 x i8], align 1
@.str.16 = external hidden unnamed_addr constant [26 x i8], align 1
@.str.17 = external hidden unnamed_addr constant [14 x i8], align 1
@.str.18 = external hidden unnamed_addr constant [70 x i8], align 1
@__PRETTY_FUNCTION__._ZN3ipx5Model4LoadERKNS_7ControlEiiPKiS5_PKdS7_PKcdS7_S7_S7_ = external hidden unnamed_addr constant [182 x i8], align 1
@.str.19 = external hidden unnamed_addr constant [58 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 uwtable
define dso_local noundef i32 @_ZN3ipx5Model4LoadERKNS_7ControlEiiPKiS5_PKdS7_PKcdS7_S7_S7_(ptr noundef nonnull align 8 dereferenceable(704) %0, ptr noundef nonnull align 8 dereferenceable(1496) %1, i32 noundef %2, i32 noundef %3, ptr noundef %4, ptr noundef %5, ptr noundef %6, ptr noundef %7, ptr noundef %8, double noundef %9, ptr noundef %10, ptr noundef %11, ptr noundef %12) #2 align 2 personality ptr @__gxx_personality_v0 {
  %14 = alloca i32, align 4
  %15 = alloca ptr, align 8
  %16 = alloca ptr, align 8
  %17 = alloca i32, align 4
  %18 = alloca i32, align 4
  %19 = alloca ptr, align 8
  %20 = alloca ptr, align 8
  %21 = alloca ptr, align 8
  %22 = alloca ptr, align 8
  %23 = alloca ptr, align 8
  %24 = alloca double, align 8
  %25 = alloca ptr, align 8
  %26 = alloca ptr, align 8
  %27 = alloca ptr, align 8
  %28 = alloca i32, align 4
  %29 = alloca i32, align 4
  %30 = alloca %"class.std::__cxx11::basic_stringstream", align 8
  %31 = alloca %"class.std::__cxx11::basic_string", align 8
  %32 = alloca ptr, align 8
  %33 = alloca i32, align 4
  %34 = alloca %"class.std::__cxx11::basic_string", align 8
  %35 = alloca %"class.std::__cxx11::basic_string", align 8
  %36 = alloca %"class.std::__cxx11::basic_string", align 8
  %37 = alloca %"class.std::__cxx11::basic_string", align 8
  %38 = alloca %"class.std::__cxx11::basic_string", align 8
  %39 = alloca i32, align 4
  %40 = alloca i8, align 1
  %41 = alloca i8, align 1
  %42 = alloca %"class.ipx::SparseMatrix", align 8
  %43 = alloca ptr, align 8
  %44 = alloca ptr, align 8
  %45 = alloca ptr, align 8
  %46 = alloca double, align 8
  %47 = alloca double, align 8
  %48 = alloca ptr, align 8
  %49 = alloca ptr, align 8
  %50 = alloca ptr, align 8
  %51 = alloca double, align 8
  %52 = alloca double, align 8
  store ptr %0, ptr %15, align 8, !tbaa !5
  store ptr %1, ptr %16, align 8, !tbaa !5
  store i32 %2, ptr %17, align 4, !tbaa !9
  store i32 %3, ptr %18, align 4, !tbaa !9
  store ptr %4, ptr %19, align 8, !tbaa !5
  store ptr %5, ptr %20, align 8, !tbaa !5
  store ptr %6, ptr %21, align 8, !tbaa !5
  store ptr %7, ptr %22, align 8, !tbaa !5
  store ptr %8, ptr %23, align 8, !tbaa !5
  store double %9, ptr %24, align 8, !tbaa !11
  store ptr %10, ptr %25, align 8, !tbaa !5
  store ptr %11, ptr %26, align 8, !tbaa !5
  store ptr %12, ptr %27, align 8, !tbaa !5
  %53 = load ptr, ptr %15, align 8
  call void @_ZN3ipx5Model5clearEv(ptr noundef nonnull align 8 dereferenceable(704) %53)
  call void @llvm.lifetime.start.p0(i64 4, ptr %28) #7
  %54 = load i32, ptr %17, align 4, !tbaa !9
  %55 = load i32, ptr %18, align 4, !tbaa !9
  %56 = load ptr, ptr %19, align 8, !tbaa !5
  %57 = load ptr, ptr %20, align 8, !tbaa !5
  %58 = load ptr, ptr %21, align 8, !tbaa !5
  %59 = load ptr, ptr %22, align 8, !tbaa !5
  %60 = load ptr, ptr %23, align 8, !tbaa !5
  %61 = load double, ptr %24, align 8, !tbaa !11
  %62 = load ptr, ptr %25, align 8, !tbaa !5
  %63 = load ptr, ptr %26, align 8, !tbaa !5
  %64 = load ptr, ptr %27, align 8, !tbaa !5
  %65 = call noundef i32 @_ZN3ipx5Model9CopyInputEiiPKiS2_PKdS4_PKcdS4_S4_S4_(ptr noundef nonnull align 8 dereferenceable(704) %53, i32 noundef %54, i32 noundef %55, ptr noundef %56, ptr noundef %57, ptr noundef %58, ptr noundef %59, ptr noundef %60, double noundef %61, ptr noundef %62, ptr noundef %63, ptr noundef %64)
  store i32 %65, ptr %28, align 4, !tbaa !9
  %66 = load i32, ptr %28, align 4, !tbaa !9
  %67 = icmp ne i32 %66, 0
  br i1 %67, label %68, label %70

68:                                               ; preds = %13
  %69 = load i32, ptr %28, align 4, !tbaa !9
  store i32 %69, ptr %14, align 4
  store i32 1, ptr %29, align 4
  br label %350

70:                                               ; preds = %13
  call void @llvm.lifetime.start.p0(i64 392, ptr %30) #7
  call void @_ZNSt7__cxx1118basic_stringstreamIcSt11char_traitsIcESaIcEEC1Ev(ptr noundef nonnull align 8 dereferenceable(128) %30)
  call void @llvm.lifetime.start.p0(i64 32, ptr %31) #7
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2Ev(ptr noundef nonnull align 8 dereferenceable(32) %31) #7
  invoke void @_ZNSt7__cxx1118basic_stringstreamIcSt11char_traitsIcESaIcEE3strERKNS_12basic_stringIcS2_S3_EE(ptr noundef nonnull align 8 dereferenceable(128) %30, ptr noundef nonnull align 8 dereferenceable(32) %31)
          to label %71 unwind label %133

71:                                               ; preds = %70
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %31) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr %31) #7
  %72 = getelementptr inbounds i8, ptr %30, i64 16
  %73 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) %72, ptr noundef @.str.11)
          to label %74 unwind label %137

74:                                               ; preds = %71
  call void @llvm.lifetime.start.p0(i64 32, ptr %34) #7
  invoke void @_ZN3ipx8TextlineIA21_cEENSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEERKT_(ptr dead_on_unwind writable sret(%"class.std::__cxx11::basic_string") align 8 %34, ptr noundef nonnull align 1 dereferenceable(21) @.str.12)
          to label %75 unwind label %141

75:                                               ; preds = %74
  %76 = 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) %73, ptr noundef nonnull align 8 dereferenceable(32) %34)
          to label %77 unwind label %145

77:                                               ; preds = %75
  %78 = getelementptr inbounds %"class.ipx::Model", ptr %53, i32 0, i32 15
  %79 = load i32, ptr %78, align 8, !tbaa !13
  %80 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEi(ptr noundef nonnull align 8 dereferenceable(8) %76, i32 noundef %79)
          to label %81 unwind label %145

81:                                               ; preds = %77
  %82 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_c(ptr noundef nonnull align 8 dereferenceable(8) %80, i8 noundef signext 10)
          to label %83 unwind label %145

83:                                               ; preds = %81
  call void @llvm.lifetime.start.p0(i64 32, ptr %35) #7
  invoke void @_ZN3ipx8TextlineIA26_cEENSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEERKT_(ptr dead_on_unwind writable sret(%"class.std::__cxx11::basic_string") align 8 %35, ptr noundef nonnull align 1 dereferenceable(26) @.str.13)
          to label %84 unwind label %149

84:                                               ; preds = %83
  %85 = 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) %82, ptr noundef nonnull align 8 dereferenceable(32) %35)
          to label %86 unwind label %153

86:                                               ; preds = %84
  %87 = getelementptr inbounds %"class.ipx::Model", ptr %53, i32 0, i32 16
  %88 = load i32, ptr %87, align 4, !tbaa !31
  %89 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEi(ptr noundef nonnull align 8 dereferenceable(8) %85, i32 noundef %88)
          to label %90 unwind label %153

90:                                               ; preds = %86
  %91 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_c(ptr noundef nonnull align 8 dereferenceable(8) %89, i8 noundef signext 10)
          to label %92 unwind label %153

92:                                               ; preds = %90
  call void @llvm.lifetime.start.p0(i64 32, ptr %36) #7
  invoke void @_ZN3ipx8TextlineIA23_cEENSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEERKT_(ptr dead_on_unwind writable sret(%"class.std::__cxx11::basic_string") align 8 %36, ptr noundef nonnull align 1 dereferenceable(23) @.str.14)
          to label %93 unwind label %157

93:                                               ; preds = %92
  %94 = 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) %91, ptr noundef nonnull align 8 dereferenceable(32) %36)
          to label %95 unwind label %161

95:                                               ; preds = %93
  %96 = getelementptr inbounds %"class.ipx::Model", ptr %53, i32 0, i32 13
  %97 = load i32, ptr %96, align 8, !tbaa !32
  %98 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEi(ptr noundef nonnull align 8 dereferenceable(8) %94, i32 noundef %97)
          to label %99 unwind label %161

99:                                               ; preds = %95
  %100 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_c(ptr noundef nonnull align 8 dereferenceable(8) %98, i8 noundef signext 10)
          to label %101 unwind label %161

101:                                              ; preds = %99
  call void @llvm.lifetime.start.p0(i64 32, ptr %37) #7
  invoke void @_ZN3ipx8TextlineIA32_cEENSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEERKT_(ptr dead_on_unwind writable sret(%"class.std::__cxx11::basic_string") align 8 %37, ptr noundef nonnull align 1 dereferenceable(32) @.str.15)
          to label %102 unwind label %165

102:                                              ; preds = %101
  %103 = 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) %100, ptr noundef nonnull align 8 dereferenceable(32) %37)
          to label %104 unwind label %169

104:                                              ; preds = %102
  %105 = getelementptr inbounds %"class.ipx::Model", ptr %53, i32 0, i32 14
  %106 = load i32, ptr %105, align 4, !tbaa !33
  %107 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEi(ptr noundef nonnull align 8 dereferenceable(8) %103, i32 noundef %106)
          to label %108 unwind label %169

108:                                              ; preds = %104
  %109 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_c(ptr noundef nonnull align 8 dereferenceable(8) %107, i8 noundef signext 10)
          to label %110 unwind label %169

110:                                              ; preds = %108
  call void @llvm.lifetime.start.p0(i64 32, ptr %38) #7
  invoke void @_ZN3ipx8TextlineIA26_cEENSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEERKT_(ptr dead_on_unwind writable sret(%"class.std::__cxx11::basic_string") align 8 %38, ptr noundef nonnull align 1 dereferenceable(26) @.str.16)
          to label %111 unwind label %173

111:                                              ; preds = %110
  %112 = 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) %109, ptr noundef nonnull align 8 dereferenceable(32) %38)
          to label %113 unwind label %177

113:                                              ; preds = %111
  %114 = getelementptr inbounds %"class.ipx::Model", ptr %53, i32 0, i32 17
  %115 = load i32, ptr %114, align 8, !tbaa !34
  %116 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEi(ptr noundef nonnull align 8 dereferenceable(8) %112, i32 noundef %115)
          to label %117 unwind label %177

117:                                              ; preds = %113
  %118 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_c(ptr noundef nonnull align 8 dereferenceable(8) %116, i8 noundef signext 10)
          to label %119 unwind label %177

119:                                              ; preds = %117
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %38) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr %38) #7
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %37) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr %37) #7
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %36) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr %36) #7
  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
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %34) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr %34) #7
  %120 = load ptr, ptr %16, align 8, !tbaa !5
  invoke void @_ZNK3ipx7Control4hLogERNSt7__cxx1118basic_stringstreamIcSt11char_traitsIcESaIcEEE(ptr noundef nonnull align 8 dereferenceable(1496) %120, ptr noundef nonnull align 8 dereferenceable(128) %30)
          to label %121 unwind label %137

121:                                              ; preds = %119
  %122 = load ptr, ptr %16, align 8, !tbaa !5
  invoke void @_ZNK3ipx5Model21PrintCoefficientRangeERKNS_7ControlE(ptr noundef nonnull align 8 dereferenceable(704) %53, ptr noundef nonnull align 8 dereferenceable(1496) %122)
          to label %123 unwind label %137

123:                                              ; preds = %121
  %124 = load ptr, ptr %16, align 8, !tbaa !5
  invoke void @_ZN3ipx5Model10ScaleModelERKNS_7ControlE(ptr noundef nonnull align 8 dereferenceable(704) %53, ptr noundef nonnull align 8 dereferenceable(1496) %124)
          to label %125 unwind label %137

125:                                              ; preds = %123
  call void @llvm.lifetime.start.p0(i64 4, ptr %39) #7
  %126 = load ptr, ptr %16, align 8, !tbaa !5
  %127 = invoke noundef i32 @_ZNK3ipx7Control7dualizeEv(ptr noundef nonnull align 8 dereferenceable(1496) %126)
          to label %128 unwind label %190

128:                                              ; preds = %125
  store i32 %127, ptr %39, align 4, !tbaa !9
  %129 = load i32, ptr %39, align 4, !tbaa !9
  %130 = icmp eq i32 %129, -1
  br i1 %130, label %131, label %132

131:                                              ; preds = %128
  br label %195

132:                                              ; preds = %128
  call void @__assert_fail(ptr noundef @.str.17, ptr noundef @.str.18, i32 noundef 38, ptr noundef @__PRETTY_FUNCTION__._ZN3ipx5Model4LoadERKNS_7ControlEiiPKiS5_PKdS7_PKcdS7_S7_S7_) #8
  unreachable

133:                                              ; preds = %70
  %134 = landingpad { ptr, i32 }
          cleanup
  %135 = extractvalue { ptr, i32 } %134, 0
  store ptr %135, ptr %32, align 8
  %136 = extractvalue { ptr, i32 } %134, 1
  store i32 %136, ptr %33, align 4
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %31) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr %31) #7
  br label %349

137:                                              ; preds = %123, %121, %119, %71
  %138 = landingpad { ptr, i32 }
          cleanup
  %139 = extractvalue { ptr, i32 } %138, 0
  store ptr %139, ptr %32, align 8
  %140 = extractvalue { ptr, i32 } %138, 1
  store i32 %140, ptr %33, align 4
  br label %349

141:                                              ; preds = %74
  %142 = landingpad { ptr, i32 }
          cleanup
  %143 = extractvalue { ptr, i32 } %142, 0
  store ptr %143, ptr %32, align 8
  %144 = extractvalue { ptr, i32 } %142, 1
  store i32 %144, ptr %33, align 4
  br label %189

145:                                              ; preds = %81, %77, %75
  %146 = landingpad { ptr, i32 }
          cleanup
  %147 = extractvalue { ptr, i32 } %146, 0
  store ptr %147, ptr %32, align 8
  %148 = extractvalue { ptr, i32 } %146, 1
  store i32 %148, ptr %33, align 4
  br label %188

149:                                              ; preds = %83
  %150 = landingpad { ptr, i32 }
          cleanup
  %151 = extractvalue { ptr, i32 } %150, 0
  store ptr %151, ptr %32, align 8
  %152 = extractvalue { ptr, i32 } %150, 1
  store i32 %152, ptr %33, align 4
  br label %187

153:                                              ; preds = %90, %86, %84
  %154 = landingpad { ptr, i32 }
          cleanup
  %155 = extractvalue { ptr, i32 } %154, 0
  store ptr %155, ptr %32, align 8
  %156 = extractvalue { ptr, i32 } %154, 1
  store i32 %156, ptr %33, align 4
  br label %186

157:                                              ; preds = %92
  %158 = landingpad { ptr, i32 }
          cleanup
  %159 = extractvalue { ptr, i32 } %158, 0
  store ptr %159, ptr %32, align 8
  %160 = extractvalue { ptr, i32 } %158, 1
  store i32 %160, ptr %33, align 4
  br label %185

161:                                              ; preds = %99, %95, %93
  %162 = landingpad { ptr, i32 }
          cleanup
  %163 = extractvalue { ptr, i32 } %162, 0
  store ptr %163, ptr %32, align 8
  %164 = extractvalue { ptr, i32 } %162, 1
  store i32 %164, ptr %33, align 4
  br label %184

165:                                              ; preds = %101
  %166 = landingpad { ptr, i32 }
          cleanup
  %167 = extractvalue { ptr, i32 } %166, 0
  store ptr %167, ptr %32, align 8
  %168 = extractvalue { ptr, i32 } %166, 1
  store i32 %168, ptr %33, align 4
  br label %183

169:                                              ; preds = %108, %104, %102
  %170 = landingpad { ptr, i32 }
          cleanup
  %171 = extractvalue { ptr, i32 } %170, 0
  store ptr %171, ptr %32, align 8
  %172 = extractvalue { ptr, i32 } %170, 1
  store i32 %172, ptr %33, align 4
  br label %182

173:                                              ; preds = %110
  %174 = landingpad { ptr, i32 }
          cleanup
  %175 = extractvalue { ptr, i32 } %174, 0
  store ptr %175, ptr %32, align 8
  %176 = extractvalue { ptr, i32 } %174, 1
  store i32 %176, ptr %33, align 4
  br label %181

177:                                              ; preds = %117, %113, %111
  %178 = landingpad { ptr, i32 }
          cleanup
  %179 = extractvalue { ptr, i32 } %178, 0
  store ptr %179, ptr %32, align 8
  %180 = extractvalue { ptr, i32 } %178, 1
  store i32 %180, ptr %33, align 4
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %38) #7
  br label %181

181:                                              ; preds = %177, %173
  call void @llvm.lifetime.end.p0(i64 32, ptr %38) #7
  br label %182

182:                                              ; preds = %181, %169
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %37) #7
  br label %183

183:                                              ; preds = %182, %165
  call void @llvm.lifetime.end.p0(i64 32, ptr %37) #7
  br label %184

184:                                              ; preds = %183, %161
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %36) #7
  br label %185

185:                                              ; preds = %184, %157
  call void @llvm.lifetime.end.p0(i64 32, ptr %36) #7
  br label %186

186:                                              ; preds = %185, %153
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %35) #7
  br label %187

187:                                              ; preds = %186, %149
  call void @llvm.lifetime.end.p0(i64 32, ptr %35) #7
  br label %188

188:                                              ; preds = %187, %145
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %34) #7
  br label %189

189:                                              ; preds = %188, %141
  call void @llvm.lifetime.end.p0(i64 32, ptr %34) #7
  br label %349

190:                                              ; preds = %125
  %191 = landingpad { ptr, i32 }
          cleanup
  %192 = extractvalue { ptr, i32 } %191, 0
  store ptr %192, ptr %32, align 8
  %193 = extractvalue { ptr, i32 } %191, 1
  store i32 %193, ptr %33, align 4
  br label %348

194:                                              ; No predecessors!
  br label %195

195:                                              ; preds = %194, %131
  call void @llvm.lifetime.start.p0(i64 1, ptr %40) #7
  %196 = load i32, ptr %17, align 4, !tbaa !9
  %197 = load i32, ptr %18, align 4, !tbaa !9
  %198 = mul nsw i32 2, %197
  %199 = icmp sgt i32 %196, %198
  %200 = zext i1 %199 to i8
  store i8 %200, ptr %40, align 1, !tbaa !35
  call void @llvm.lifetime.start.p0(i64 1, ptr %41) #7
  %201 = invoke noundef zeroext i1 @_ZNK3ipx5Model22filippoDualizationTestEv(ptr noundef nonnull align 8 dereferenceable(704) %53)
          to label %202 unwind label %210

202:                                              ; preds = %195
  %203 = zext i1 %201 to i8
  store i8 %203, ptr %41, align 1, !tbaa !35
  %204 = load i32, ptr %39, align 4, !tbaa !9
  %205 = icmp eq i32 %204, -1
  br i1 %205, label %206, label %214

206:                                              ; preds = %202
  %207 = load i8, ptr %40, align 1, !tbaa !35, !range !36, !noundef !37
  %208 = trunc i8 %207 to i1
  %209 = zext i1 %208 to i32
  store i32 %209, ptr %39, align 4, !tbaa !9
  br label %222

210:                                              ; preds = %344, %261, %258, %257, %243, %233, %229, %227, %225, %195
  %211 = landingpad { ptr, i32 }
          cleanup
  %212 = extractvalue { ptr, i32 } %211, 0
  store ptr %212, ptr %32, align 8
  %213 = extractvalue { ptr, i32 } %211, 1
  store i32 %213, ptr %33, align 4
  br label %347

214:                                              ; preds = %202
  %215 = load i32, ptr %39, align 4, !tbaa !9
  %216 = icmp eq i32 %215, -2
  br i1 %216, label %217, label %221

217:                                              ; preds = %214
  %218 = load i8, ptr %41, align 1, !tbaa !35, !range !36, !noundef !37
  %219 = trunc i8 %218 to i1
  %220 = zext i1 %219 to i32
  store i32 %220, ptr %39, align 4, !tbaa !9
  br label %221

221:                                              ; preds = %217, %214
  br label %222

222:                                              ; preds = %221, %206
  %223 = load i32, ptr %39, align 4, !tbaa !9
  %224 = icmp ne i32 %223, 0
  br i1 %224, label %225, label %227

225:                                              ; preds = %222
  invoke void @_ZN3ipx5Model8LoadDualEv(ptr noundef nonnull align 8 dereferenceable(704) %53)
          to label %226 unwind label %210

226:                                              ; preds = %225
  br label %229

227:                                              ; preds = %222
  invoke void @_ZN3ipx5Model10LoadPrimalEv(ptr noundef nonnull align 8 dereferenceable(704) %53)
          to label %228 unwind label %210

228:                                              ; preds = %227
  br label %229

229:                                              ; preds = %228, %226
  %230 = getelementptr inbounds %"class.ipx::Model", ptr %53, i32 0, i32 27
  invoke void @_ZN3ipx12SparseMatrix5clearEv(ptr noundef nonnull align 8 dereferenceable(128) %230)
          to label %231 unwind label %210

231:                                              ; preds = %229
  call void @llvm.lifetime.start.p0(i64 128, ptr %42) #7
  %232 = getelementptr inbounds %"class.ipx::Model", ptr %53, i32 0, i32 5
  invoke void @_ZN3ipx9TransposeERKNS_12SparseMatrixE(ptr dead_on_unwind writable sret(%"class.ipx::SparseMatrix") align 8 %42, ptr noundef nonnull align 8 dereferenceable(128) %232)
          to label %233 unwind label %252

233:                                              ; preds = %231
  %234 = getelementptr inbounds %"class.ipx::Model", ptr %53, i32 0, i32 6
  %235 = call noundef nonnull align 8 dereferenceable(128) ptr @_ZN3ipx12SparseMatrixaSEOS0_(ptr noundef nonnull align 8 dereferenceable(128) %234, ptr noundef nonnull align 8 dereferenceable(128) %42) #7
  call void @_ZN3ipx12SparseMatrixD2Ev(ptr noundef nonnull align 8 dereferenceable(128) %42) #7
  call void @llvm.lifetime.end.p0(i64 128, ptr %42) #7
  %236 = getelementptr inbounds %"class.ipx::Model", ptr %53, i32 0, i32 5
  %237 = getelementptr inbounds %"class.ipx::Model", ptr %53, i32 0, i32 2
  %238 = load i32, ptr %237, align 8, !tbaa !38
  %239 = getelementptr inbounds %"class.ipx::Model", ptr %53, i32 0, i32 1
  %240 = load i32, ptr %239, align 4, !tbaa !39
  %241 = add nsw i32 %238, %240
  %242 = invoke noundef i32 @_ZNK3ipx12SparseMatrix5beginEi(ptr noundef nonnull align 8 dereferenceable(128) %236, i32 noundef %241)
          to label %243 unwind label %210

243:                                              ; preds = %233
  %244 = getelementptr inbounds %"class.ipx::Model", ptr %53, i32 0, i32 6
  %245 = getelementptr inbounds %"class.ipx::Model", ptr %53, i32 0, i32 1
  %246 = load i32, ptr %245, align 4, !tbaa !39
  %247 = invoke noundef i32 @_ZNK3ipx12SparseMatrix5beginEi(ptr noundef nonnull align 8 dereferenceable(128) %244, i32 noundef %246)
          to label %248 unwind label %210

248:                                              ; preds = %243
  %249 = icmp eq i32 %242, %247
  br i1 %249, label %250, label %251

250:                                              ; preds = %248
  br label %257

251:                                              ; preds = %248
  call void @__assert_fail(ptr noundef @.str.19, ptr noundef @.str.18, i32 noundef 53, ptr noundef @__PRETTY_FUNCTION__._ZN3ipx5Model4LoadERKNS_7ControlEiiPKiS5_PKdS7_PKcdS7_S7_S7_) #8
  unreachable

252:                                              ; preds = %231
  %253 = landingpad { ptr, i32 }
          cleanup
  %254 = extractvalue { ptr, i32 } %253, 0
  store ptr %254, ptr %32, align 8
  %255 = extractvalue { ptr, i32 } %253, 1
  store i32 %255, ptr %33, align 4
  call void @llvm.lifetime.end.p0(i64 128, ptr %42) #7
  br label %347

256:                                              ; No predecessors!
  br label %257

257:                                              ; preds = %256, %250
  invoke void @_ZN3ipx5Model16FindDenseColumnsEv(ptr noundef nonnull align 8 dereferenceable(704) %53)
          to label %258 unwind label %210

258:                                              ; preds = %257
  %259 = getelementptr inbounds %"class.ipx::Model", ptr %53, i32 0, i32 8
  %260 = invoke noundef double @_ZN3ipx7InfnormERKSt8valarrayIdE(ptr noundef nonnull align 8 dereferenceable(16) %259)
          to label %261 unwind label %210

261:                                              ; preds = %258
  %262 = getelementptr inbounds %"class.ipx::Model", ptr %53, i32 0, i32 12
  store double %260, ptr %262, align 8, !tbaa !40
  %263 = getelementptr inbounds %"class.ipx::Model", ptr %53, i32 0, i32 7
  %264 = invoke noundef double @_ZN3ipx7InfnormERKSt8valarrayIdE(ptr noundef nonnull align 8 dereferenceable(16) %263)
          to label %265 unwind label %210

265:                                              ; preds = %261
  %266 = getelementptr inbounds %"class.ipx::Model", ptr %53, i32 0, i32 11
  store double %264, ptr %266, align 8, !tbaa !41
  call void @llvm.lifetime.start.p0(i64 8, ptr %43) #7
  %267 = getelementptr inbounds %"class.ipx::Model", ptr %53, i32 0, i32 9
  store ptr %267, ptr %43, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %44) #7
  %268 = load ptr, ptr %43, align 8, !tbaa !5
  %269 = call noundef ptr @_ZSt5beginIdEPT_RSt8valarrayIS0_E(ptr noundef nonnull align 8 dereferenceable(16) %268) #7
  store ptr %269, ptr %44, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %45) #7
  %270 = load ptr, ptr %43, align 8, !tbaa !5
  %271 = call noundef ptr @_ZSt3endIdEPT_RSt8valarrayIS0_E(ptr noundef nonnull align 8 dereferenceable(16) %270) #7
  store ptr %271, ptr %45, align 8, !tbaa !5
  br label %272

272:                                              ; preds = %301, %265
  %273 = load ptr, ptr %44, align 8, !tbaa !5
  %274 = load ptr, ptr %45, align 8, !tbaa !5
  %275 = icmp ne ptr %273, %274
  br i1 %275, label %277, label %276

276:                                              ; preds = %272
  store i32 2, ptr %29, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %45) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %44) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %43) #7
  br label %305

277:                                              ; preds = %272
  call void @llvm.lifetime.start.p0(i64 8, ptr %46) #7
  %278 = load ptr, ptr %44, align 8, !tbaa !5
  %279 = load double, ptr %278, align 8, !tbaa !11
  store double %279, ptr %46, align 8, !tbaa !11
  %280 = load double, ptr %46, align 8, !tbaa !11
  %281 = invoke noundef zeroext i1 @_ZSt8isfinited(double noundef %280)
          to label %282 unwind label %292

282:                                              ; preds = %277
  br i1 %281, label %283, label %300

283:                                              ; preds = %282
  %284 = getelementptr inbounds %"class.ipx::Model", ptr %53, i32 0, i32 11
  call void @llvm.lifetime.start.p0(i64 8, ptr %47) #7
  %285 = load double, ptr %46, align 8, !tbaa !11
  %286 = invoke noundef double @_ZSt3absd(double noundef %285)
          to label %287 unwind label %296

287:                                              ; preds = %283
  store double %286, ptr %47, align 8, !tbaa !11
  %288 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZSt3maxIdERKT_S2_S2_(ptr noundef nonnull align 8 dereferenceable(8) %284, ptr noundef nonnull align 8 dereferenceable(8) %47)
          to label %289 unwind label %296

289:                                              ; preds = %287
  %290 = load double, ptr %288, align 8, !tbaa !11
  %291 = getelementptr inbounds %"class.ipx::Model", ptr %53, i32 0, i32 11
  store double %290, ptr %291, align 8, !tbaa !41
  call void @llvm.lifetime.end.p0(i64 8, ptr %47) #7
  br label %300

292:                                              ; preds = %277
  %293 = landingpad { ptr, i32 }
          cleanup
  %294 = extractvalue { ptr, i32 } %293, 0
  store ptr %294, ptr %32, align 8
  %295 = extractvalue { ptr, i32 } %293, 1
  store i32 %295, ptr %33, align 4
  br label %304

296:                                              ; preds = %287, %283
  %297 = landingpad { ptr, i32 }
          cleanup
  %298 = extractvalue { ptr, i32 } %297, 0
  store ptr %298, ptr %32, align 8
  %299 = extractvalue { ptr, i32 } %297, 1
  store i32 %299, ptr %33, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %47) #7
  br label %304

300:                                              ; preds = %289, %282
  call void @llvm.lifetime.end.p0(i64 8, ptr %46) #7
  br label %301

301:                                              ; preds = %300
  %302 = load ptr, ptr %44, align 8, !tbaa !5
  %303 = getelementptr inbounds double, ptr %302, i32 1
  store ptr %303, ptr %44, align 8, !tbaa !5
  br label %272

304:                                              ; preds = %296, %292
  call void @llvm.lifetime.end.p0(i64 8, ptr %46) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %45) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %44) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %43) #7
  br label %347

305:                                              ; preds = %276
  call void @llvm.lifetime.start.p0(i64 8, ptr %48) #7
  %306 = getelementptr inbounds %"class.ipx::Model", ptr %53, i32 0, i32 10
  store ptr %306, ptr %48, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %49) #7
  %307 = load ptr, ptr %48, align 8, !tbaa !5
  %308 = call noundef ptr @_ZSt5beginIdEPT_RSt8valarrayIS0_E(ptr noundef nonnull align 8 dereferenceable(16) %307) #7
  store ptr %308, ptr %49, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %50) #7
  %309 = load ptr, ptr %48, align 8, !tbaa !5
  %310 = call noundef ptr @_ZSt3endIdEPT_RSt8valarrayIS0_E(ptr noundef nonnull align 8 dereferenceable(16) %309) #7
  store ptr %310, ptr %50, align 8, !tbaa !5
  br label %311

311:                                              ; preds = %340, %305
  %312 = load ptr, ptr %49, align 8, !tbaa !5
  %313 = load ptr, ptr %50, align 8, !tbaa !5
  %314 = icmp ne ptr %312, %313
  br i1 %314, label %316, label %315

315:                                              ; preds = %311
  store i32 4, ptr %29, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %50) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %49) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %48) #7
  br label %344

316:                                              ; preds = %311
  call void @llvm.lifetime.start.p0(i64 8, ptr %51) #7
  %317 = load ptr, ptr %49, align 8, !tbaa !5
  %318 = load double, ptr %317, align 8, !tbaa !11
  store double %318, ptr %51, align 8, !tbaa !11
  %319 = load double, ptr %51, align 8, !tbaa !11
  %320 = invoke noundef zeroext i1 @_ZSt8isfinited(double noundef %319)
          to label %321 unwind label %331

321:                                              ; preds = %316
  br i1 %320, label %322, label %339

322:                                              ; preds = %321
  %323 = getelementptr inbounds %"class.ipx::Model", ptr %53, i32 0, i32 11
  call void @llvm.lifetime.start.p0(i64 8, ptr %52) #7
  %324 = load double, ptr %51, align 8, !tbaa !11
  %325 = invoke noundef double @_ZSt3absd(double noundef %324)
          to label %326 unwind label %335

326:                                              ; preds = %322
  store double %325, ptr %52, align 8, !tbaa !11
  %327 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZSt3maxIdERKT_S2_S2_(ptr noundef nonnull align 8 dereferenceable(8) %323, ptr noundef nonnull align 8 dereferenceable(8) %52)
          to label %328 unwind label %335

328:                                              ; preds = %326
  %329 = load double, ptr %327, align 8, !tbaa !11
  %330 = getelementptr inbounds %"class.ipx::Model", ptr %53, i32 0, i32 11
  store double %329, ptr %330, align 8, !tbaa !41
  call void @llvm.lifetime.end.p0(i64 8, ptr %52) #7
  br label %339

331:                                              ; preds = %316
  %332 = landingpad { ptr, i32 }
          cleanup
  %333 = extractvalue { ptr, i32 } %332, 0
  store ptr %333, ptr %32, align 8
  %334 = extractvalue { ptr, i32 } %332, 1
  store i32 %334, ptr %33, align 4
  br label %343

335:                                              ; preds = %326, %322
  %336 = landingpad { ptr, i32 }
          cleanup
  %337 = extractvalue { ptr, i32 } %336, 0
  store ptr %337, ptr %32, align 8
  %338 = extractvalue { ptr, i32 } %336, 1
  store i32 %338, ptr %33, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %52) #7
  br label %343

339:                                              ; preds = %328, %321
  call void @llvm.lifetime.end.p0(i64 8, ptr %51) #7
  br label %340

340:                                              ; preds = %339
  %341 = load ptr, ptr %49, align 8, !tbaa !5
  %342 = getelementptr inbounds double, ptr %341, i32 1
  store ptr %342, ptr %49, align 8, !tbaa !5
  br label %311

343:                                              ; preds = %335, %331
  call void @llvm.lifetime.end.p0(i64 8, ptr %51) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %50) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %49) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %48) #7
  br label %347

344:                                              ; preds = %315
  %345 = load ptr, ptr %16, align 8, !tbaa !5
  invoke void @_ZNK3ipx5Model21PrintPreprocessingLogERKNS_7ControlE(ptr noundef nonnull align 8 dereferenceable(704) %53, ptr noundef nonnull align 8 dereferenceable(1496) %345)
          to label %346 unwind label %210

346:                                              ; preds = %344
  store i32 0, ptr %14, align 4
  store i32 1, ptr %29, align 4
  call void @llvm.lifetime.end.p0(i64 1, ptr %41) #7
  call void @llvm.lifetime.end.p0(i64 1, ptr %40) #7
  call void @llvm.lifetime.end.p0(i64 4, ptr %39) #7
  call void @_ZNSt7__cxx1118basic_stringstreamIcSt11char_traitsIcESaIcEED1Ev(ptr noundef nonnull align 8 dereferenceable(128) %30) #7
  call void @llvm.lifetime.end.p0(i64 392, ptr %30) #7
  br label %350

347:                                              ; preds = %343, %304, %252, %210
  call void @llvm.lifetime.end.p0(i64 1, ptr %41) #7
  call void @llvm.lifetime.end.p0(i64 1, ptr %40) #7
  br label %348

348:                                              ; preds = %347, %190
  call void @llvm.lifetime.end.p0(i64 4, ptr %39) #7
  br label %349

349:                                              ; preds = %348, %189, %137, %133
  call void @_ZNSt7__cxx1118basic_stringstreamIcSt11char_traitsIcESaIcEED1Ev(ptr noundef nonnull align 8 dereferenceable(128) %30) #7
  call void @llvm.lifetime.end.p0(i64 392, ptr %30) #7
  call void @llvm.lifetime.end.p0(i64 4, ptr %28) #7
  br label %352

350:                                              ; preds = %346, %68
  call void @llvm.lifetime.end.p0(i64 4, ptr %28) #7
  %351 = load i32, ptr %14, align 4
  ret i32 %351

352:                                              ; preds = %349
  %353 = load ptr, ptr %32, align 8
  %354 = load i32, ptr %33, align 4
  %355 = insertvalue { ptr, i32 } poison, ptr %353, 0
  %356 = insertvalue { ptr, i32 } %355, i32 %354, 1
  resume { ptr, i32 } %356
}

; Function Attrs: mustprogress uwtable
declare dso_local void @_ZN3ipx5Model5clearEv(ptr noundef nonnull align 8 dereferenceable(704)) #2 align 2

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

; Function Attrs: mustprogress uwtable
declare void @_ZNSt7__cxx1118basic_stringstreamIcSt11char_traitsIcESaIcEEC1Ev(ptr noundef nonnull align 8 dereferenceable(128)) unnamed_addr #2 align 2

; Function Attrs: mustprogress uwtable
declare void @_ZNSt7__cxx1118basic_stringstreamIcSt11char_traitsIcESaIcEE3strERKNS_12basic_stringIcS2_S3_EE(ptr noundef nonnull align 8 dereferenceable(128), ptr noundef nonnull align 8 dereferenceable(32)) #2 align 2

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

; Function Attrs: inlinehint mustprogress uwtable
declare noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_c(ptr noundef nonnull align 8 dereferenceable(8), i8 noundef signext) #3

; 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)) #3

; 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) #3

; Function Attrs: mustprogress uwtable
declare dso_local void @_ZN3ipx8TextlineIA21_cEENSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEERKT_(ptr dead_on_unwind noalias writable sret(%"class.std::__cxx11::basic_string") align 8, ptr noundef nonnull align 1 dereferenceable(21)) #2

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

; Function Attrs: mustprogress uwtable
declare dso_local void @_ZN3ipx8TextlineIA26_cEENSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEERKT_(ptr dead_on_unwind noalias writable sret(%"class.std::__cxx11::basic_string") align 8, ptr noundef nonnull align 1 dereferenceable(26)) #2

; Function Attrs: mustprogress uwtable
declare dso_local void @_ZN3ipx8TextlineIA23_cEENSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEERKT_(ptr dead_on_unwind noalias writable sret(%"class.std::__cxx11::basic_string") align 8, ptr noundef nonnull align 1 dereferenceable(23)) #2

; Function Attrs: mustprogress uwtable
declare dso_local void @_ZN3ipx8TextlineIA32_cEENSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEERKT_(ptr dead_on_unwind noalias writable sret(%"class.std::__cxx11::basic_string") align 8, ptr noundef nonnull align 1 dereferenceable(32)) #2

declare void @_ZNK3ipx7Control4hLogERNSt7__cxx1118basic_stringstreamIcSt11char_traitsIcESaIcEEE(ptr noundef nonnull align 8 dereferenceable(1496), ptr noundef nonnull align 8 dereferenceable(128)) #4

; Function Attrs: mustprogress uwtable
declare dso_local void @_ZNK3ipx5Model21PrintCoefficientRangeERKNS_7ControlE(ptr noundef nonnull align 8 dereferenceable(704), ptr noundef nonnull align 8 dereferenceable(1496)) #2 align 2

; Function Attrs: mustprogress uwtable
declare dso_local void @_ZN3ipx5Model10ScaleModelERKNS_7ControlE(ptr noundef nonnull align 8 dereferenceable(704), ptr noundef nonnull align 8 dereferenceable(1496)) #2 align 2

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

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

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

; Function Attrs: mustprogress uwtable
declare dso_local void @_ZN3ipx5Model8LoadDualEv(ptr noundef nonnull align 8 dereferenceable(704)) #2 align 2

; Function Attrs: mustprogress uwtable
declare dso_local void @_ZN3ipx5Model10LoadPrimalEv(ptr noundef nonnull align 8 dereferenceable(704)) #2 align 2

declare void @_ZN3ipx12SparseMatrix5clearEv(ptr noundef nonnull align 8 dereferenceable(128)) #4

declare void @_ZN3ipx9TransposeERKNS_12SparseMatrixE(ptr dead_on_unwind writable sret(%"class.ipx::SparseMatrix") align 8, ptr noundef nonnull align 8 dereferenceable(128)) #4

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

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

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

; Function Attrs: mustprogress uwtable
declare dso_local void @_ZN3ipx5Model16FindDenseColumnsEv(ptr noundef nonnull align 8 dereferenceable(704)) #2 align 2

declare noundef double @_ZN3ipx7InfnormERKSt8valarrayIdE(ptr noundef nonnull align 8 dereferenceable(16)) #4

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

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

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

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

; Function Attrs: inlinehint mustprogress nounwind uwtable
declare dso_local noundef double @_ZSt3absd(double noundef) #6

; Function Attrs: mustprogress uwtable
declare dso_local void @_ZNK3ipx5Model21PrintPreprocessingLogERKNS_7ControlE(ptr noundef nonnull align 8 dereferenceable(704), ptr noundef nonnull align 8 dereferenceable(1496)) #2 align 2

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

attributes #0 = { nocallback nofree nosync nounwind willreturn memory(argmem: readwrite) }
attributes #1 = { mustprogress nounwind uwtable "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }
attributes #2 = { mustprogress uwtable "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }
attributes #3 = { 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 #4 = { "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }
attributes #5 = { 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 = { inlinehint mustprogress nounwind uwtable "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }
attributes #7 = { nounwind }
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, !10, i64 0}
!10 = !{!"int", !7, i64 0}
!11 = !{!12, !12, i64 0}
!12 = !{!"double", !7, i64 0}
!13 = !{!14, !10, i64 368}
!14 = !{!"_ZTSN3ipx5ModelE", !15, i64 0, !10, i64 4, !10, i64 8, !10, i64 12, !10, i64 16, !16, i64 24, !16, i64 152, !25, i64 280, !25, i64 296, !25, i64 312, !25, i64 328, !12, i64 344, !12, i64 352, !10, i64 360, !10, i64 364, !10, i64 368, !10, i64 372, !10, i64 376, !17, i64 384, !27, i64 408, !12, i64 432, !12, i64 440, !12, i64 448, !25, i64 456, !25, i64 472, !25, i64 488, !25, i64 504, !16, i64 520, !17, i64 648, !25, i64 672, !25, i64 688}
!15 = !{!"bool", !7, i64 0}
!16 = !{!"_ZTSN3ipx12SparseMatrixE", !10, i64 0, !17, i64 8, !17, i64 32, !21, i64 56, !17, i64 80, !21, i64 104}
!17 = !{!"_ZTSSt6vectorIiSaIiEE", !18, i64 0}
!18 = !{!"_ZTSSt12_Vector_baseIiSaIiEE", !19, i64 0}
!19 = !{!"_ZTSNSt12_Vector_baseIiSaIiEE12_Vector_implE", !20, i64 0}
!20 = !{!"_ZTSNSt12_Vector_baseIiSaIiEE17_Vector_impl_dataE", !6, i64 0, !6, i64 8, !6, i64 16}
!21 = !{!"_ZTSSt6vectorIdSaIdEE", !22, i64 0}
!22 = !{!"_ZTSSt12_Vector_baseIdSaIdEE", !23, i64 0}
!23 = !{!"_ZTSNSt12_Vector_baseIdSaIdEE12_Vector_implE", !24, i64 0}
!24 = !{!"_ZTSNSt12_Vector_baseIdSaIdEE17_Vector_impl_dataE", !6, i64 0, !6, i64 8, !6, i64 16}
!25 = !{!"_ZTSSt8valarrayIdE", !26, i64 0, !6, i64 8}
!26 = !{!"long", !7, i64 0}
!27 = !{!"_ZTSSt6vectorIcSaIcEE", !28, i64 0}
!28 = !{!"_ZTSSt12_Vector_baseIcSaIcEE", !29, i64 0}
!29 = !{!"_ZTSNSt12_Vector_baseIcSaIcEE12_Vector_implE", !30, i64 0}
!30 = !{!"_ZTSNSt12_Vector_baseIcSaIcEE17_Vector_impl_dataE", !6, i64 0, !6, i64 8, !6, i64 16}
!31 = !{!14, !10, i64 372}
!32 = !{!14, !10, i64 360}
!33 = !{!14, !10, i64 364}
!34 = !{!14, !10, i64 376}
!35 = !{!15, !15, i64 0}
!36 = !{i8 0, i8 2}
!37 = !{}
!38 = !{!14, !10, i64 8}
!39 = !{!14, !10, i64 4}
!40 = !{!14, !12, i64 352}
!41 = !{!14, !12, i64 344}


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

%"class.std::__cxx11::basic_stringstream" = type { %"class.std::basic_iostream.base", %"class.std::__cxx11::basic_stringbuf", %"class.std::basic_ios" }
%"class.std::basic_iostream.base" = type { %"class.std::basic_istream.base", %"class.std::basic_ostream.base" }
%"class.std::basic_istream.base" = type { ptr, i64 }
%"class.std::basic_ostream.base" = type { ptr }
%"class.std::__cxx11::basic_stringbuf" = type { %"class.std::basic_streambuf", i32, %"class.std::__cxx11::basic_string" }
%"class.std::basic_streambuf" = type { ptr, ptr, ptr, ptr, ptr, ptr, ptr, %"class.std::locale" }
%"class.std::locale" = type { 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.std::basic_ios" = type { %"class.std::ios_base", ptr, i8, i8, ptr, ptr, ptr, ptr }
%"class.std::ios_base" = type { ptr, i64, i64, i32, i32, i32, ptr, %"struct.std::ios_base::_Words", [8 x %"struct.std::ios_base::_Words"], i32, ptr, %"class.std::locale" }
%"struct.std::ios_base::_Words" = type { ptr, i64 }
%"class.ipx::SparseMatrix" = type { i32, %"class.std::vector", %"class.std::vector", %"class.std::vector.3", %"class.std::vector", %"class.std::vector.3" }
%"class.std::vector" = type { %"struct.std::_Vector_base" }
%"struct.std::_Vector_base" = type { %"struct.std::_Vector_base<int, std::allocator<int>>::_Vector_impl" }
%"struct.std::_Vector_base<int, std::allocator<int>>::_Vector_impl" = type { %"struct.std::_Vector_base<int, std::allocator<int>>::_Vector_impl_data" }
%"struct.std::_Vector_base<int, std::allocator<int>>::_Vector_impl_data" = type { ptr, ptr, ptr }
%"class.std::vector.3" = type { %"struct.std::_Vector_base.4" }
%"struct.std::_Vector_base.4" = type { %"struct.std::_Vector_base<double, std::allocator<double>>::_Vector_impl" }
%"struct.std::_Vector_base<double, std::allocator<double>>::_Vector_impl" = type { %"struct.std::_Vector_base<double, std::allocator<double>>::_Vector_impl_data" }
%"struct.std::_Vector_base<double, std::allocator<double>>::_Vector_impl_data" = type { ptr, ptr, ptr }

@.str.11 = external hidden unnamed_addr constant [7 x i8], align 1
@.str.12 = external hidden unnamed_addr constant [21 x i8], align 1
@.str.13 = external hidden unnamed_addr constant [26 x i8], align 1
@.str.14 = external hidden unnamed_addr constant [23 x i8], align 1
@.str.15 = external hidden unnamed_addr constant [32 x i8], align 1
@.str.16 = external hidden unnamed_addr constant [26 x i8], align 1
@.str.17 = external hidden unnamed_addr constant [14 x i8], align 1
@.str.18 = external hidden unnamed_addr constant [70 x i8], align 1
@__PRETTY_FUNCTION__._ZN3ipx5Model4LoadERKNS_7ControlEiiPKiS5_PKdS7_PKcdS7_S7_S7_ = external hidden unnamed_addr constant [182 x i8], align 1
@.str.19 = external hidden unnamed_addr constant [58 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 uwtable
define dso_local noundef i32 @_ZN3ipx5Model4LoadERKNS_7ControlEiiPKiS5_PKdS7_PKcdS7_S7_S7_(ptr noundef nonnull align 8 dereferenceable(704) %0, ptr noundef nonnull align 8 dereferenceable(1496) %1, i32 noundef %2, i32 noundef %3, ptr noundef %4, ptr noundef %5, ptr noundef %6, ptr noundef %7, ptr noundef %8, double noundef %9, ptr noundef %10, ptr noundef %11, ptr noundef %12) local_unnamed_addr #2 align 2 personality ptr @__gxx_personality_v0 {
  %14 = alloca %"class.std::__cxx11::basic_stringstream", align 8
  %15 = alloca %"class.std::__cxx11::basic_string", align 8
  %16 = alloca %"class.std::__cxx11::basic_string", align 8
  %17 = alloca %"class.std::__cxx11::basic_string", align 8
  %18 = alloca %"class.std::__cxx11::basic_string", align 8
  %19 = alloca %"class.std::__cxx11::basic_string", align 8
  %20 = alloca %"class.std::__cxx11::basic_string", align 8
  %21 = alloca %"class.ipx::SparseMatrix", align 8
  %22 = alloca double, align 8
  %23 = alloca double, align 8
  tail call void @_ZN3ipx5Model5clearEv(ptr noundef nonnull align 8 dereferenceable(704) %0)
  %24 = tail call noundef i32 @_ZN3ipx5Model9CopyInputEiiPKiS2_PKdS4_PKcdS4_S4_S4_(ptr noundef nonnull align 8 dereferenceable(704) %0, i32 noundef %2, i32 noundef %3, ptr noundef %4, ptr noundef %5, ptr noundef %6, ptr noundef %7, ptr noundef %8, double noundef %9, ptr noundef %10, ptr noundef %11, ptr noundef %12)
  %.not = icmp eq i32 %24, 0
  br i1 %.not, label %25, label %175

25:                                               ; preds = %13
  call void @llvm.lifetime.start.p0(i64 392, ptr nonnull %14) #7
  call void @_ZNSt7__cxx1118basic_stringstreamIcSt11char_traitsIcESaIcEEC1Ev(ptr noundef nonnull align 8 dereferenceable(128) %14)
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %15) #7
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2Ev(ptr noundef nonnull align 8 dereferenceable(32) %15) #7
  invoke void @_ZNSt7__cxx1118basic_stringstreamIcSt11char_traitsIcESaIcEE3strERKNS_12basic_stringIcS2_S3_EE(ptr noundef nonnull align 8 dereferenceable(128) %14, ptr noundef nonnull align 8 dereferenceable(32) %15)
          to label %26 unwind label %81

26:                                               ; preds = %25
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %15) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %15) #7
  %27 = getelementptr inbounds i8, ptr %14, i64 16
  %28 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) %27, ptr noundef nonnull @.str.11)
          to label %29 unwind label %83

29:                                               ; preds = %26
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %16) #7
  invoke void @_ZN3ipx8TextlineIA21_cEENSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEERKT_(ptr dead_on_unwind nonnull writable sret(%"class.std::__cxx11::basic_string") align 8 %16, ptr noundef nonnull align 1 dereferenceable(21) @.str.12)
          to label %30 unwind label %85

30:                                               ; preds = %29
  %31 = 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) %28, ptr noundef nonnull align 8 dereferenceable(32) %16)
          to label %32 unwind label %87

32:                                               ; preds = %30
  %33 = getelementptr inbounds i8, ptr %0, i64 368
  %34 = load i32, ptr %33, align 8, !tbaa !5
  %35 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEi(ptr noundef nonnull align 8 dereferenceable(8) %31, i32 noundef %34)
          to label %36 unwind label %87

36:                                               ; preds = %32
  %37 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_c(ptr noundef nonnull align 8 dereferenceable(8) %35, i8 noundef signext 10)
          to label %38 unwind label %87

38:                                               ; preds = %36
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %17) #7
  invoke void @_ZN3ipx8TextlineIA26_cEENSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEERKT_(ptr dead_on_unwind nonnull writable sret(%"class.std::__cxx11::basic_string") align 8 %17, ptr noundef nonnull align 1 dereferenceable(26) @.str.13)
          to label %39 unwind label %89

39:                                               ; preds = %38
  %40 = 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) %37, ptr noundef nonnull align 8 dereferenceable(32) %17)
          to label %41 unwind label %91

41:                                               ; preds = %39
  %42 = getelementptr inbounds i8, ptr %0, i64 372
  %43 = load i32, ptr %42, align 4, !tbaa !28
  %44 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEi(ptr noundef nonnull align 8 dereferenceable(8) %40, i32 noundef %43)
          to label %45 unwind label %91

45:                                               ; preds = %41
  %46 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_c(ptr noundef nonnull align 8 dereferenceable(8) %44, i8 noundef signext 10)
          to label %47 unwind label %91

47:                                               ; preds = %45
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %18) #7
  invoke void @_ZN3ipx8TextlineIA23_cEENSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEERKT_(ptr dead_on_unwind nonnull writable sret(%"class.std::__cxx11::basic_string") align 8 %18, ptr noundef nonnull align 1 dereferenceable(23) @.str.14)
          to label %48 unwind label %93

48:                                               ; preds = %47
  %49 = 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) %46, ptr noundef nonnull align 8 dereferenceable(32) %18)
          to label %50 unwind label %95

50:                                               ; preds = %48
  %51 = getelementptr inbounds i8, ptr %0, i64 360
  %52 = load i32, ptr %51, align 8, !tbaa !29
  %53 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEi(ptr noundef nonnull align 8 dereferenceable(8) %49, i32 noundef %52)
          to label %54 unwind label %95

54:                                               ; preds = %50
  %55 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_c(ptr noundef nonnull align 8 dereferenceable(8) %53, i8 noundef signext 10)
          to label %56 unwind label %95

56:                                               ; preds = %54
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %19) #7
  invoke void @_ZN3ipx8TextlineIA32_cEENSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEERKT_(ptr dead_on_unwind nonnull writable sret(%"class.std::__cxx11::basic_string") align 8 %19, ptr noundef nonnull align 1 dereferenceable(32) @.str.15)
          to label %57 unwind label %97

57:                                               ; preds = %56
  %58 = 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) %55, ptr noundef nonnull align 8 dereferenceable(32) %19)
          to label %59 unwind label %99

59:                                               ; preds = %57
  %60 = getelementptr inbounds i8, ptr %0, i64 364
  %61 = load i32, ptr %60, align 4, !tbaa !30
  %62 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEi(ptr noundef nonnull align 8 dereferenceable(8) %58, i32 noundef %61)
          to label %63 unwind label %99

63:                                               ; preds = %59
  %64 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_c(ptr noundef nonnull align 8 dereferenceable(8) %62, i8 noundef signext 10)
          to label %65 unwind label %99

65:                                               ; preds = %63
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %20) #7
  invoke void @_ZN3ipx8TextlineIA26_cEENSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEERKT_(ptr dead_on_unwind nonnull writable sret(%"class.std::__cxx11::basic_string") align 8 %20, ptr noundef nonnull align 1 dereferenceable(26) @.str.16)
          to label %66 unwind label %101

66:                                               ; preds = %65
  %67 = 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) %64, ptr noundef nonnull align 8 dereferenceable(32) %20)
          to label %68 unwind label %103

68:                                               ; preds = %66
  %69 = getelementptr inbounds i8, ptr %0, i64 376
  %70 = load i32, ptr %69, align 8, !tbaa !31
  %71 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEi(ptr noundef nonnull align 8 dereferenceable(8) %67, i32 noundef %70)
          to label %72 unwind label %103

72:                                               ; preds = %68
  %73 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_c(ptr noundef nonnull align 8 dereferenceable(8) %71, i8 noundef signext 10)
          to label %74 unwind label %103

74:                                               ; preds = %72
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %20) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %20) #7
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %19) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %19) #7
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %18) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %18) #7
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %17) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %17) #7
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %16) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %16) #7
  invoke void @_ZNK3ipx7Control4hLogERNSt7__cxx1118basic_stringstreamIcSt11char_traitsIcESaIcEEE(ptr noundef nonnull align 8 dereferenceable(1496) %1, ptr noundef nonnull align 8 dereferenceable(128) %14)
          to label %75 unwind label %83

75:                                               ; preds = %74
  invoke void @_ZNK3ipx5Model21PrintCoefficientRangeERKNS_7ControlE(ptr noundef nonnull align 8 dereferenceable(704) %0, ptr noundef nonnull align 8 dereferenceable(1496) %1)
          to label %76 unwind label %83

76:                                               ; preds = %75
  invoke void @_ZN3ipx5Model10ScaleModelERKNS_7ControlE(ptr noundef nonnull align 8 dereferenceable(704) %0, ptr noundef nonnull align 8 dereferenceable(1496) %1)
          to label %77 unwind label %83

77:                                               ; preds = %76
  %78 = call noundef i32 @_ZNK3ipx7Control7dualizeEv(ptr noundef nonnull align 8 dereferenceable(1496) %1)
  %79 = icmp eq i32 %78, -1
  br i1 %79, label %114, label %80

80:                                               ; preds = %77
  call void @__assert_fail(ptr noundef nonnull @.str.17, ptr noundef nonnull @.str.18, i32 noundef 38, ptr noundef nonnull @__PRETTY_FUNCTION__._ZN3ipx5Model4LoadERKNS_7ControlEiiPKiS5_PKdS7_PKcdS7_S7_S7_) #8
  unreachable

81:                                               ; preds = %25
  %82 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %15) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %15) #7
  br label %174

83:                                               ; preds = %76, %75, %74, %26
  %84 = landingpad { ptr, i32 }
          cleanup
  br label %174

85:                                               ; preds = %29
  %86 = landingpad { ptr, i32 }
          cleanup
  br label %113

87:                                               ; preds = %36, %32, %30
  %88 = landingpad { ptr, i32 }
          cleanup
  br label %112

89:                                               ; preds = %38
  %90 = landingpad { ptr, i32 }
          cleanup
  br label %111

91:                                               ; preds = %45, %41, %39
  %92 = landingpad { ptr, i32 }
          cleanup
  br label %110

93:                                               ; preds = %47
  %94 = landingpad { ptr, i32 }
          cleanup
  br label %109

95:                                               ; preds = %54, %50, %48
  %96 = landingpad { ptr, i32 }
          cleanup
  br label %108

97:                                               ; preds = %56
  %98 = landingpad { ptr, i32 }
          cleanup
  br label %107

99:                                               ; preds = %63, %59, %57
  %100 = landingpad { ptr, i32 }
          cleanup
  br label %106

101:                                              ; preds = %65
  %102 = landingpad { ptr, i32 }
          cleanup
  br label %105

103:                                              ; preds = %72, %68, %66
  %104 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %20) #7
  br label %105

105:                                              ; preds = %103, %101
  %.pn = phi { ptr, i32 } [ %104, %103 ], [ %102, %101 ]
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %20) #7
  br label %106

106:                                              ; preds = %105, %99
  %.pn.pn = phi { ptr, i32 } [ %.pn, %105 ], [ %100, %99 ]
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %19) #7
  br label %107

107:                                              ; preds = %106, %97
  %.pn.pn.pn = phi { ptr, i32 } [ %.pn.pn, %106 ], [ %98, %97 ]
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %19) #7
  br label %108

108:                                              ; preds = %107, %95
  %.pn.pn.pn.pn = phi { ptr, i32 } [ %.pn.pn.pn, %107 ], [ %96, %95 ]
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %18) #7
  br label %109

109:                                              ; preds = %108, %93
  %.pn.pn.pn.pn.pn = phi { ptr, i32 } [ %.pn.pn.pn.pn, %108 ], [ %94, %93 ]
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %18) #7
  br label %110

110:                                              ; preds = %109, %91
  %.pn.pn.pn.pn.pn.pn = phi { ptr, i32 } [ %.pn.pn.pn.pn.pn, %109 ], [ %92, %91 ]
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %17) #7
  br label %111

111:                                              ; preds = %110, %89
  %.pn.pn.pn.pn.pn.pn.pn = phi { ptr, i32 } [ %.pn.pn.pn.pn.pn.pn, %110 ], [ %90, %89 ]
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %17) #7
  br label %112

112:                                              ; preds = %111, %87
  %.pn.pn.pn.pn.pn.pn.pn.pn = phi { ptr, i32 } [ %.pn.pn.pn.pn.pn.pn.pn, %111 ], [ %88, %87 ]
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %16) #7
  br label %113

113:                                              ; preds = %112, %85
  %.pn.pn.pn.pn.pn.pn.pn.pn.pn = phi { ptr, i32 } [ %.pn.pn.pn.pn.pn.pn.pn.pn, %112 ], [ %86, %85 ]
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %16) #7
  br label %174

114:                                              ; preds = %77
  %115 = call noundef zeroext i1 @_ZNK3ipx5Model22filippoDualizationTestEv(ptr noundef nonnull align 8 dereferenceable(704) %0)
  %116 = shl nsw i32 %3, 1
  %117 = icmp slt i32 %116, %2
  br i1 %117, label %120, label %121

118:                                              ; preds = %._crit_edge82, %145, %142, %141, %122, %121, %120
  %119 = landingpad { ptr, i32 }
          cleanup
  br label %174

120:                                              ; preds = %114
  invoke void @_ZN3ipx5Model8LoadDualEv(ptr noundef nonnull align 8 dereferenceable(704) %0)
          to label %122 unwind label %118

121:                                              ; preds = %114
  invoke void @_ZN3ipx5Model10LoadPrimalEv(ptr noundef nonnull align 8 dereferenceable(704) %0)
          to label %122 unwind label %118

122:                                              ; preds = %121, %120
  %123 = getelementptr inbounds i8, ptr %0, i64 520
  invoke void @_ZN3ipx12SparseMatrix5clearEv(ptr noundef nonnull align 8 dereferenceable(128) %123)
          to label %124 unwind label %118

124:                                              ; preds = %122
  call void @llvm.lifetime.start.p0(i64 128, ptr nonnull %21) #7
  %125 = getelementptr inbounds i8, ptr %0, i64 24
  invoke void @_ZN3ipx9TransposeERKNS_12SparseMatrixE(ptr dead_on_unwind nonnull writable sret(%"class.ipx::SparseMatrix") align 8 %21, ptr noundef nonnull align 8 dereferenceable(128) %125)
          to label %126 unwind label %139

126:                                              ; preds = %124
  %127 = getelementptr inbounds i8, ptr %0, i64 152
  %128 = call noundef nonnull align 8 dereferenceable(128) ptr @_ZN3ipx12SparseMatrixaSEOS0_(ptr noundef nonnull align 8 dereferenceable(128) %127, ptr noundef nonnull align 8 dereferenceable(128) %21) #7
  call void @_ZN3ipx12SparseMatrixD2Ev(ptr noundef nonnull align 8 dereferenceable(128) %21) #7
  call void @llvm.lifetime.end.p0(i64 128, ptr nonnull %21) #7
  %129 = getelementptr inbounds i8, ptr %0, i64 8
  %130 = load i32, ptr %129, align 8, !tbaa !32
  %131 = getelementptr inbounds i8, ptr %0, i64 4
  %132 = load i32, ptr %131, align 4, !tbaa !33
  %133 = add nsw i32 %132, %130
  %134 = call noundef i32 @_ZNK3ipx12SparseMatrix5beginEi(ptr noundef nonnull align 8 dereferenceable(128) %125, i32 noundef %133)
  %135 = load i32, ptr %131, align 4, !tbaa !33
  %136 = call noundef i32 @_ZNK3ipx12SparseMatrix5beginEi(ptr noundef nonnull align 8 dereferenceable(128) %127, i32 noundef %135)
  %137 = icmp eq i32 %134, %136
  br i1 %137, label %141, label %138

138:                                              ; preds = %126
  call void @__assert_fail(ptr noundef nonnull @.str.19, ptr noundef nonnull @.str.18, i32 noundef 53, ptr noundef nonnull @__PRETTY_FUNCTION__._ZN3ipx5Model4LoadERKNS_7ControlEiiPKiS5_PKdS7_PKcdS7_S7_S7_) #8
  unreachable

139:                                              ; preds = %124
  %140 = landingpad { ptr, i32 }
          cleanup
  call void @llvm.lifetime.end.p0(i64 128, ptr nonnull %21) #7
  br label %174

141:                                              ; preds = %126
  invoke void @_ZN3ipx5Model16FindDenseColumnsEv(ptr noundef nonnull align 8 dereferenceable(704) %0)
          to label %142 unwind label %118

142:                                              ; preds = %141
  %143 = getelementptr inbounds i8, ptr %0, i64 296
  %144 = invoke noundef double @_ZN3ipx7InfnormERKSt8valarrayIdE(ptr noundef nonnull align 8 dereferenceable(16) %143)
          to label %145 unwind label %118

145:                                              ; preds = %142
  %146 = getelementptr inbounds i8, ptr %0, i64 352
  store double %144, ptr %146, align 8, !tbaa !34
  %147 = getelementptr inbounds i8, ptr %0, i64 280
  %148 = invoke noundef double @_ZN3ipx7InfnormERKSt8valarrayIdE(ptr noundef nonnull align 8 dereferenceable(16) %147)
          to label %149 unwind label %118

149:                                              ; preds = %145
  %150 = getelementptr inbounds i8, ptr %0, i64 344
  store double %148, ptr %150, align 8, !tbaa !35
  %151 = getelementptr inbounds i8, ptr %0, i64 312
  %152 = call noundef ptr @_ZSt5beginIdEPT_RSt8valarrayIS0_E(ptr noundef nonnull align 8 dereferenceable(16) %151) #7
  %153 = call noundef ptr @_ZSt3endIdEPT_RSt8valarrayIS0_E(ptr noundef nonnull align 8 dereferenceable(16) %151) #7
  %.not7176 = icmp eq ptr %152, %153
  br i1 %.not7176, label %._crit_edge, label %.lr.ph

._crit_edge:                                      ; preds = %163, %149
  %154 = getelementptr inbounds i8, ptr %0, i64 328
  %155 = call noundef ptr @_ZSt5beginIdEPT_RSt8valarrayIS0_E(ptr noundef nonnull align 8 dereferenceable(16) %154) #7
  %156 = call noundef ptr @_ZSt3endIdEPT_RSt8valarrayIS0_E(ptr noundef nonnull align 8 dereferenceable(16) %154) #7
  %.not7278 = icmp eq ptr %155, %156
  br i1 %.not7278, label %._crit_edge82, label %.lr.ph81

.lr.ph:                                           ; preds = %149, %163
  %.05977 = phi ptr [ %164, %163 ], [ %152, %149 ]
  %157 = load double, ptr %.05977, align 8, !tbaa !36
  %158 = call noundef zeroext i1 @_ZSt8isfinited(double noundef %157)
  br i1 %158, label %159, label %163

159:                                              ; preds = %.lr.ph
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %22) #7
  %160 = call noundef double @_ZSt3absd(double noundef %157)
  store double %160, ptr %22, align 8, !tbaa !36
  %161 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZSt3maxIdERKT_S2_S2_(ptr noundef nonnull align 8 dereferenceable(8) %150, ptr noundef nonnull align 8 dereferenceable(8) %22)
  %162 = load double, ptr %161, align 8, !tbaa !36
  store double %162, ptr %150, align 8, !tbaa !35
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %22) #7
  br label %163

163:                                              ; preds = %159, %.lr.ph
  %164 = getelementptr inbounds i8, ptr %.05977, i64 8
  %.not71 = icmp eq ptr %164, %153
  br i1 %.not71, label %._crit_edge, label %.lr.ph

._crit_edge82:                                    ; preds = %171, %._crit_edge
  invoke void @_ZNK3ipx5Model21PrintPreprocessingLogERKNS_7ControlE(ptr noundef nonnull align 8 dereferenceable(704) %0, ptr noundef nonnull align 8 dereferenceable(1496) %1)
          to label %173 unwind label %118

.lr.ph81:                                         ; preds = %._crit_edge, %171
  %.04579 = phi ptr [ %172, %171 ], [ %155, %._crit_edge ]
  %165 = load double, ptr %.04579, align 8, !tbaa !36
  %166 = call noundef zeroext i1 @_ZSt8isfinited(double noundef %165)
  br i1 %166, label %167, label %171

167:                                              ; preds = %.lr.ph81
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %23) #7
  %168 = call noundef double @_ZSt3absd(double noundef %165)
  store double %168, ptr %23, align 8, !tbaa !36
  %169 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZSt3maxIdERKT_S2_S2_(ptr noundef nonnull align 8 dereferenceable(8) %150, ptr noundef nonnull align 8 dereferenceable(8) %23)
  %170 = load double, ptr %169, align 8, !tbaa !36
  store double %170, ptr %150, align 8, !tbaa !35
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %23) #7
  br label %171

171:                                              ; preds = %167, %.lr.ph81
  %172 = getelementptr inbounds i8, ptr %.04579, i64 8
  %.not72 = icmp eq ptr %172, %156
  br i1 %.not72, label %._crit_edge82, label %.lr.ph81

173:                                              ; preds = %._crit_edge82
  call void @_ZNSt7__cxx1118basic_stringstreamIcSt11char_traitsIcESaIcEED1Ev(ptr noundef nonnull align 8 dereferenceable(128) %14) #7
  call void @llvm.lifetime.end.p0(i64 392, ptr nonnull %14) #7
  br label %175

174:                                              ; preds = %118, %139, %113, %83, %81
  %.pn73.pn = phi { ptr, i32 } [ %84, %83 ], [ %.pn.pn.pn.pn.pn.pn.pn.pn.pn, %113 ], [ %82, %81 ], [ %119, %118 ], [ %140, %139 ]
  call void @_ZNSt7__cxx1118basic_stringstreamIcSt11char_traitsIcESaIcEED1Ev(ptr noundef nonnull align 8 dereferenceable(128) %14) #7
  call void @llvm.lifetime.end.p0(i64 392, ptr nonnull %14) #7
  resume { ptr, i32 } %.pn73.pn

175:                                              ; preds = %13, %173
  %.0 = phi i32 [ 0, %173 ], [ %24, %13 ]
  ret i32 %.0
}

; Function Attrs: mustprogress uwtable
declare dso_local void @_ZN3ipx5Model5clearEv(ptr noundef nonnull align 8 dereferenceable(704)) local_unnamed_addr #2 align 2

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

; Function Attrs: mustprogress uwtable
declare void @_ZNSt7__cxx1118basic_stringstreamIcSt11char_traitsIcESaIcEEC1Ev(ptr noundef nonnull align 8 dereferenceable(128)) unnamed_addr #2 align 2

; Function Attrs: mustprogress uwtable
declare void @_ZNSt7__cxx1118basic_stringstreamIcSt11char_traitsIcESaIcEE3strERKNS_12basic_stringIcS2_S3_EE(ptr noundef nonnull align 8 dereferenceable(128), ptr noundef nonnull align 8 dereferenceable(32)) local_unnamed_addr #2 align 2

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

; Function Attrs: inlinehint mustprogress uwtable
declare noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_c(ptr noundef nonnull align 8 dereferenceable(8), i8 noundef signext) local_unnamed_addr #3

; 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 #3

; 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 #3

; Function Attrs: mustprogress uwtable
declare dso_local void @_ZN3ipx8TextlineIA21_cEENSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEERKT_(ptr dead_on_unwind noalias writable sret(%"class.std::__cxx11::basic_string") align 8, ptr noundef nonnull align 1 dereferenceable(21)) local_unnamed_addr #2

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

; Function Attrs: mustprogress uwtable
declare dso_local void @_ZN3ipx8TextlineIA26_cEENSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEERKT_(ptr dead_on_unwind noalias writable sret(%"class.std::__cxx11::basic_string") align 8, ptr noundef nonnull align 1 dereferenceable(26)) local_unnamed_addr #2

; Function Attrs: mustprogress uwtable
declare dso_local void @_ZN3ipx8TextlineIA23_cEENSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEERKT_(ptr dead_on_unwind noalias writable sret(%"class.std::__cxx11::basic_string") align 8, ptr noundef nonnull align 1 dereferenceable(23)) local_unnamed_addr #2

; Function Attrs: mustprogress uwtable
declare dso_local void @_ZN3ipx8TextlineIA32_cEENSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEERKT_(ptr dead_on_unwind noalias writable sret(%"class.std::__cxx11::basic_string") align 8, ptr noundef nonnull align 1 dereferenceable(32)) local_unnamed_addr #2

declare void @_ZNK3ipx7Control4hLogERNSt7__cxx1118basic_stringstreamIcSt11char_traitsIcESaIcEEE(ptr noundef nonnull align 8 dereferenceable(1496), ptr noundef nonnull align 8 dereferenceable(128)) local_unnamed_addr #4

; Function Attrs: mustprogress uwtable
declare dso_local void @_ZNK3ipx5Model21PrintCoefficientRangeERKNS_7ControlE(ptr noundef nonnull align 8 dereferenceable(704), ptr noundef nonnull align 8 dereferenceable(1496)) local_unnamed_addr #2 align 2

; Function Attrs: mustprogress uwtable
declare dso_local void @_ZN3ipx5Model10ScaleModelERKNS_7ControlE(ptr noundef nonnull align 8 dereferenceable(704), ptr noundef nonnull align 8 dereferenceable(1496)) local_unnamed_addr #2 align 2

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

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

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

; Function Attrs: mustprogress uwtable
declare dso_local void @_ZN3ipx5Model8LoadDualEv(ptr noundef nonnull align 8 dereferenceable(704)) local_unnamed_addr #2 align 2

; Function Attrs: mustprogress uwtable
declare dso_local void @_ZN3ipx5Model10LoadPrimalEv(ptr noundef nonnull align 8 dereferenceable(704)) local_unnamed_addr #2 align 2

declare void @_ZN3ipx12SparseMatrix5clearEv(ptr noundef nonnull align 8 dereferenceable(128)) local_unnamed_addr #4

declare void @_ZN3ipx9TransposeERKNS_12SparseMatrixE(ptr dead_on_unwind writable sret(%"class.ipx::SparseMatrix") align 8, ptr noundef nonnull align 8 dereferenceable(128)) local_unnamed_addr #4

; Function Attrs: inlinehint mustprogress nounwind uwtable
declare dso_local noundef nonnull align 8 dereferenceable(128) ptr @_ZN3ipx12SparseMatrixaSEOS0_(ptr noundef nonnull align 8 dereferenceable(128), ptr noundef nonnull align 8 dereferenceable(128)) local_unnamed_addr #6 align 2

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

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

; Function Attrs: mustprogress uwtable
declare dso_local void @_ZN3ipx5Model16FindDenseColumnsEv(ptr noundef nonnull align 8 dereferenceable(704)) local_unnamed_addr #2 align 2

declare noundef double @_ZN3ipx7InfnormERKSt8valarrayIdE(ptr noundef nonnull align 8 dereferenceable(16)) local_unnamed_addr #4

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

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

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

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

; Function Attrs: inlinehint mustprogress nounwind uwtable
declare dso_local noundef double @_ZSt3absd(double noundef) local_unnamed_addr #6

; Function Attrs: mustprogress uwtable
declare dso_local void @_ZNK3ipx5Model21PrintPreprocessingLogERKNS_7ControlE(ptr noundef nonnull align 8 dereferenceable(704), ptr noundef nonnull align 8 dereferenceable(1496)) local_unnamed_addr #2 align 2

; Function Attrs: mustprogress nounwind uwtable
declare void @_ZNSt7__cxx1118basic_stringstreamIcSt11char_traitsIcESaIcEED1Ev(ptr noundef nonnull align 8 dereferenceable(128)) unnamed_addr #1 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 = { mustprogress uwtable "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }
attributes #3 = { 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 #4 = { "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }
attributes #5 = { 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 = { inlinehint mustprogress nounwind uwtable "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }
attributes #7 = { nounwind }
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, !10, i64 368}
!6 = !{!"_ZTSN3ipx5ModelE", !7, i64 0, !10, i64 4, !10, i64 8, !10, i64 12, !10, i64 16, !11, i64 24, !11, i64 152, !21, i64 280, !21, i64 296, !21, i64 312, !21, i64 328, !23, i64 344, !23, i64 352, !10, i64 360, !10, i64 364, !10, i64 368, !10, i64 372, !10, i64 376, !12, i64 384, !24, i64 408, !23, i64 432, !23, i64 440, !23, i64 448, !21, i64 456, !21, i64 472, !21, i64 488, !21, i64 504, !11, i64 520, !12, i64 648, !21, i64 672, !21, i64 688}
!7 = !{!"bool", !8, i64 0}
!8 = !{!"omnipotent char", !9, i64 0}
!9 = !{!"Simple C++ TBAA"}
!10 = !{!"int", !8, i64 0}
!11 = !{!"_ZTSN3ipx12SparseMatrixE", !10, i64 0, !12, i64 8, !12, i64 32, !17, i64 56, !12, i64 80, !17, i64 104}
!12 = !{!"_ZTSSt6vectorIiSaIiEE", !13, i64 0}
!13 = !{!"_ZTSSt12_Vector_baseIiSaIiEE", !14, i64 0}
!14 = !{!"_ZTSNSt12_Vector_baseIiSaIiEE12_Vector_implE", !15, i64 0}
!15 = !{!"_ZTSNSt12_Vector_baseIiSaIiEE17_Vector_impl_dataE", !16, i64 0, !16, i64 8, !16, i64 16}
!16 = !{!"any pointer", !8, i64 0}
!17 = !{!"_ZTSSt6vectorIdSaIdEE", !18, i64 0}
!18 = !{!"_ZTSSt12_Vector_baseIdSaIdEE", !19, i64 0}
!19 = !{!"_ZTSNSt12_Vector_baseIdSaIdEE12_Vector_implE", !20, i64 0}
!20 = !{!"_ZTSNSt12_Vector_baseIdSaIdEE17_Vector_impl_dataE", !16, i64 0, !16, i64 8, !16, i64 16}
!21 = !{!"_ZTSSt8valarrayIdE", !22, i64 0, !16, i64 8}
!22 = !{!"long", !8, i64 0}
!23 = !{!"double", !8, i64 0}
!24 = !{!"_ZTSSt6vectorIcSaIcEE", !25, i64 0}
!25 = !{!"_ZTSSt12_Vector_baseIcSaIcEE", !26, i64 0}
!26 = !{!"_ZTSNSt12_Vector_baseIcSaIcEE12_Vector_implE", !27, i64 0}
!27 = !{!"_ZTSNSt12_Vector_baseIcSaIcEE17_Vector_impl_dataE", !16, i64 0, !16, i64 8, !16, i64 16}
!28 = !{!6, !10, i64 372}
!29 = !{!6, !10, i64 360}
!30 = !{!6, !10, i64 364}
!31 = !{!6, !10, i64 376}
!32 = !{!6, !10, i64 8}
!33 = !{!6, !10, i64 4}
!34 = !{!6, !23, i64 352}
!35 = !{!6, !23, i64 344}
!36 = !{!23, !23, i64 0}


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