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

; 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::valarray" = type { i64, 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.ipx::SparseMatrix" = type { i32, %"class.std::vector", %"class.std::vector", %"class.std::vector.3", %"class.std::vector", %"class.std::vector.3" }
%"class.std::vector.3" = type { %"struct.std::_Vector_base.4" }
%"struct.std::_Vector_base.4" = type { %"struct.std::_Vector_base<double, std::allocator<double>>::_Vector_impl" }
%"struct.std::_Vector_base<double, std::allocator<double>>::_Vector_impl" = type { %"struct.std::_Vector_base<double, std::allocator<double>>::_Vector_impl_data" }
%"struct.std::_Vector_base<double, std::allocator<double>>::_Vector_impl_data" = type { ptr, ptr, ptr }
%"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 }

@.str.18 = external hidden unnamed_addr constant [70 x i8], align 1
@.str.20 = external hidden unnamed_addr constant [28 x i8], align 1
@.str.21 = external hidden unnamed_addr constant [26 x i8], align 1
@__PRETTY_FUNCTION__._ZNK3ipx5Model25PostsolveInteriorSolutionERKSt8valarrayIdES4_S4_S4_S4_S4_PdS5_S5_S5_S5_S5_S5_ = external hidden unnamed_addr constant [215 x i8], align 1
@.str.23 = external hidden unnamed_addr constant [29 x i8], align 1
@.str.24 = external hidden unnamed_addr constant [29 x i8], align 1
@.str.25 = external hidden unnamed_addr constant [29 x i8], align 1
@.str.26 = external hidden unnamed_addr constant [29 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: noreturn nounwind
declare void @__assert_fail(ptr noundef, ptr noundef, i32 noundef, ptr noundef) #1

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

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

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

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

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

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

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

; Function Attrs: mustprogress uwtable
define dso_local void @_ZNK3ipx5Model25PostsolveInteriorSolutionERKSt8valarrayIdES4_S4_S4_S4_S4_PdS5_S5_S5_S5_S5_S5_(ptr noundef nonnull align 8 dereferenceable(704) %0, ptr noundef nonnull align 8 dereferenceable(16) %1, ptr noundef nonnull align 8 dereferenceable(16) %2, ptr noundef nonnull align 8 dereferenceable(16) %3, ptr noundef nonnull align 8 dereferenceable(16) %4, ptr noundef nonnull align 8 dereferenceable(16) %5, ptr noundef nonnull align 8 dereferenceable(16) %6, ptr noundef %7, ptr noundef %8, ptr noundef %9, ptr noundef %10, ptr noundef %11, ptr noundef %12, ptr noundef %13) #5 align 2 personality ptr @__gxx_personality_v0 {
  %15 = alloca ptr, align 8
  %16 = alloca ptr, align 8
  %17 = alloca ptr, align 8
  %18 = alloca ptr, align 8
  %19 = alloca ptr, align 8
  %20 = alloca ptr, align 8
  %21 = alloca ptr, align 8
  %22 = alloca ptr, align 8
  %23 = alloca ptr, align 8
  %24 = alloca ptr, align 8
  %25 = alloca ptr, align 8
  %26 = alloca ptr, align 8
  %27 = alloca ptr, align 8
  %28 = alloca ptr, align 8
  %29 = alloca i32, align 4
  %30 = alloca i32, align 4
  %31 = alloca %"class.std::valarray", align 8
  %32 = alloca %"class.std::valarray", align 8
  %33 = alloca ptr, align 8
  %34 = alloca i32, align 4
  %35 = alloca %"class.std::valarray", align 8
  %36 = alloca %"class.std::valarray", align 8
  %37 = alloca %"class.std::valarray", align 8
  %38 = alloca %"class.std::valarray", align 8
  %39 = alloca %"class.std::valarray", align 8
  store ptr %0, ptr %15, align 8, !tbaa !5
  store ptr %1, ptr %16, align 8, !tbaa !5
  store ptr %2, ptr %17, align 8, !tbaa !5
  store ptr %3, ptr %18, align 8, !tbaa !5
  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 ptr %9, ptr %24, align 8, !tbaa !5
  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
  store ptr %13, ptr %28, align 8, !tbaa !5
  %40 = load ptr, ptr %15, align 8
  call void @llvm.lifetime.start.p0(i64 4, ptr %29) #6
  %41 = call noundef i32 @_ZNK3ipx5Model4rowsEv(ptr noundef nonnull align 8 dereferenceable(704) %40)
  store i32 %41, ptr %29, align 4, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 4, ptr %30) #6
  %42 = call noundef i32 @_ZNK3ipx5Model4colsEv(ptr noundef nonnull align 8 dereferenceable(704) %40)
  store i32 %42, ptr %30, align 4, !tbaa !9
  %43 = load ptr, ptr %16, align 8, !tbaa !5
  %44 = call noundef i64 @_ZNKSt8valarrayIdE4sizeEv(ptr noundef nonnull align 8 dereferenceable(16) %43)
  %45 = trunc i64 %44 to i32
  %46 = load i32, ptr %30, align 4, !tbaa !9
  %47 = load i32, ptr %29, align 4, !tbaa !9
  %48 = add nsw i32 %46, %47
  %49 = icmp eq i32 %45, %48
  br i1 %49, label %50, label %51

50:                                               ; preds = %14
  br label %53

51:                                               ; preds = %14
  call void @__assert_fail(ptr noundef @.str.20, ptr noundef @.str.18, i32 noundef 240, ptr noundef @__PRETTY_FUNCTION__._ZNK3ipx5Model25PostsolveInteriorSolutionERKSt8valarrayIdES4_S4_S4_S4_S4_PdS5_S5_S5_S5_S5_S5_) #7
  unreachable

52:                                               ; No predecessors!
  br label %53

53:                                               ; preds = %52, %50
  %54 = load ptr, ptr %17, align 8, !tbaa !5
  %55 = call noundef i64 @_ZNKSt8valarrayIdE4sizeEv(ptr noundef nonnull align 8 dereferenceable(16) %54)
  %56 = trunc i64 %55 to i32
  %57 = load i32, ptr %30, align 4, !tbaa !9
  %58 = load i32, ptr %29, align 4, !tbaa !9
  %59 = add nsw i32 %57, %58
  %60 = icmp eq i32 %56, %59
  br i1 %60, label %61, label %62

61:                                               ; preds = %53
  br label %64

62:                                               ; preds = %53
  call void @__assert_fail(ptr noundef @.str.23, ptr noundef @.str.18, i32 noundef 241, ptr noundef @__PRETTY_FUNCTION__._ZNK3ipx5Model25PostsolveInteriorSolutionERKSt8valarrayIdES4_S4_S4_S4_S4_PdS5_S5_S5_S5_S5_S5_) #7
  unreachable

63:                                               ; No predecessors!
  br label %64

64:                                               ; preds = %63, %61
  %65 = load ptr, ptr %18, align 8, !tbaa !5
  %66 = call noundef i64 @_ZNKSt8valarrayIdE4sizeEv(ptr noundef nonnull align 8 dereferenceable(16) %65)
  %67 = trunc i64 %66 to i32
  %68 = load i32, ptr %30, align 4, !tbaa !9
  %69 = load i32, ptr %29, align 4, !tbaa !9
  %70 = add nsw i32 %68, %69
  %71 = icmp eq i32 %67, %70
  br i1 %71, label %72, label %73

72:                                               ; preds = %64
  br label %75

73:                                               ; preds = %64
  call void @__assert_fail(ptr noundef @.str.24, ptr noundef @.str.18, i32 noundef 242, ptr noundef @__PRETTY_FUNCTION__._ZNK3ipx5Model25PostsolveInteriorSolutionERKSt8valarrayIdES4_S4_S4_S4_S4_PdS5_S5_S5_S5_S5_S5_) #7
  unreachable

74:                                               ; No predecessors!
  br label %75

75:                                               ; preds = %74, %72
  %76 = load ptr, ptr %19, align 8, !tbaa !5
  %77 = call noundef i64 @_ZNKSt8valarrayIdE4sizeEv(ptr noundef nonnull align 8 dereferenceable(16) %76)
  %78 = trunc i64 %77 to i32
  %79 = load i32, ptr %29, align 4, !tbaa !9
  %80 = icmp eq i32 %78, %79
  br i1 %80, label %81, label %82

81:                                               ; preds = %75
  br label %84

82:                                               ; preds = %75
  call void @__assert_fail(ptr noundef @.str.21, ptr noundef @.str.18, i32 noundef 243, ptr noundef @__PRETTY_FUNCTION__._ZNK3ipx5Model25PostsolveInteriorSolutionERKSt8valarrayIdES4_S4_S4_S4_S4_PdS5_S5_S5_S5_S5_S5_) #7
  unreachable

83:                                               ; No predecessors!
  br label %84

84:                                               ; preds = %83, %81
  %85 = load ptr, ptr %20, align 8, !tbaa !5
  %86 = call noundef i64 @_ZNKSt8valarrayIdE4sizeEv(ptr noundef nonnull align 8 dereferenceable(16) %85)
  %87 = trunc i64 %86 to i32
  %88 = load i32, ptr %30, align 4, !tbaa !9
  %89 = load i32, ptr %29, align 4, !tbaa !9
  %90 = add nsw i32 %88, %89
  %91 = icmp eq i32 %87, %90
  br i1 %91, label %92, label %93

92:                                               ; preds = %84
  br label %95

93:                                               ; preds = %84
  call void @__assert_fail(ptr noundef @.str.25, ptr noundef @.str.18, i32 noundef 244, ptr noundef @__PRETTY_FUNCTION__._ZNK3ipx5Model25PostsolveInteriorSolutionERKSt8valarrayIdES4_S4_S4_S4_S4_PdS5_S5_S5_S5_S5_S5_) #7
  unreachable

94:                                               ; No predecessors!
  br label %95

95:                                               ; preds = %94, %92
  %96 = load ptr, ptr %21, align 8, !tbaa !5
  %97 = call noundef i64 @_ZNKSt8valarrayIdE4sizeEv(ptr noundef nonnull align 8 dereferenceable(16) %96)
  %98 = trunc i64 %97 to i32
  %99 = load i32, ptr %30, align 4, !tbaa !9
  %100 = load i32, ptr %29, align 4, !tbaa !9
  %101 = add nsw i32 %99, %100
  %102 = icmp eq i32 %98, %101
  br i1 %102, label %103, label %104

103:                                              ; preds = %95
  br label %106

104:                                              ; preds = %95
  call void @__assert_fail(ptr noundef @.str.26, ptr noundef @.str.18, i32 noundef 245, ptr noundef @__PRETTY_FUNCTION__._ZNK3ipx5Model25PostsolveInteriorSolutionERKSt8valarrayIdES4_S4_S4_S4_S4_PdS5_S5_S5_S5_S5_S5_) #7
  unreachable

105:                                              ; No predecessors!
  br label %106

106:                                              ; preds = %105, %103
  call void @llvm.lifetime.start.p0(i64 16, ptr %31) #6
  %107 = getelementptr inbounds %"class.ipx::Model", ptr %40, i32 0, i32 15
  %108 = load i32, ptr %107, align 8, !tbaa !11
  %109 = sext i32 %108 to i64
  call void @_ZNSt8valarrayIdEC2Em(ptr noundef nonnull align 8 dereferenceable(16) %31, i64 noundef %109)
  call void @llvm.lifetime.start.p0(i64 16, ptr %32) #6
  %110 = getelementptr inbounds %"class.ipx::Model", ptr %40, i32 0, i32 15
  %111 = load i32, ptr %110, align 8, !tbaa !11
  %112 = sext i32 %111 to i64
  invoke void @_ZNSt8valarrayIdEC2Em(ptr noundef nonnull align 8 dereferenceable(16) %32, i64 noundef %112)
          to label %113 unwind label %150

113:                                              ; preds = %106
  call void @llvm.lifetime.start.p0(i64 16, ptr %35) #6
  %114 = getelementptr inbounds %"class.ipx::Model", ptr %40, i32 0, i32 15
  %115 = load i32, ptr %114, align 8, !tbaa !11
  %116 = sext i32 %115 to i64
  invoke void @_ZNSt8valarrayIdEC2Em(ptr noundef nonnull align 8 dereferenceable(16) %35, i64 noundef %116)
          to label %117 unwind label %154

117:                                              ; preds = %113
  call void @llvm.lifetime.start.p0(i64 16, ptr %36) #6
  %118 = getelementptr inbounds %"class.ipx::Model", ptr %40, i32 0, i32 13
  %119 = load i32, ptr %118, align 8, !tbaa !30
  %120 = sext i32 %119 to i64
  invoke void @_ZNSt8valarrayIdEC2Em(ptr noundef nonnull align 8 dereferenceable(16) %36, i64 noundef %120)
          to label %121 unwind label %158

121:                                              ; preds = %117
  call void @llvm.lifetime.start.p0(i64 16, ptr %37) #6
  %122 = getelementptr inbounds %"class.ipx::Model", ptr %40, i32 0, i32 13
  %123 = load i32, ptr %122, align 8, !tbaa !30
  %124 = sext i32 %123 to i64
  invoke void @_ZNSt8valarrayIdEC2Em(ptr noundef nonnull align 8 dereferenceable(16) %37, i64 noundef %124)
          to label %125 unwind label %162

125:                                              ; preds = %121
  call void @llvm.lifetime.start.p0(i64 16, ptr %38) #6
  %126 = getelementptr inbounds %"class.ipx::Model", ptr %40, i32 0, i32 15
  %127 = load i32, ptr %126, align 8, !tbaa !11
  %128 = sext i32 %127 to i64
  invoke void @_ZNSt8valarrayIdEC2Em(ptr noundef nonnull align 8 dereferenceable(16) %38, i64 noundef %128)
          to label %129 unwind label %166

129:                                              ; preds = %125
  call void @llvm.lifetime.start.p0(i64 16, ptr %39) #6
  %130 = getelementptr inbounds %"class.ipx::Model", ptr %40, i32 0, i32 15
  %131 = load i32, ptr %130, align 8, !tbaa !11
  %132 = sext i32 %131 to i64
  invoke void @_ZNSt8valarrayIdEC2Em(ptr noundef nonnull align 8 dereferenceable(16) %39, i64 noundef %132)
          to label %133 unwind label %170

133:                                              ; preds = %129
  %134 = load ptr, ptr %16, align 8, !tbaa !5
  %135 = load ptr, ptr %17, align 8, !tbaa !5
  %136 = load ptr, ptr %18, align 8, !tbaa !5
  %137 = load ptr, ptr %19, align 8, !tbaa !5
  %138 = load ptr, ptr %20, align 8, !tbaa !5
  %139 = load ptr, ptr %21, align 8, !tbaa !5
  invoke void @_ZNK3ipx5Model27DualizeBackInteriorSolutionERKSt8valarrayIdES4_S4_S4_S4_S4_RS2_S5_S5_S5_S5_S5_S5_(ptr noundef nonnull align 8 dereferenceable(704) %40, ptr noundef nonnull align 8 dereferenceable(16) %134, ptr noundef nonnull align 8 dereferenceable(16) %135, ptr noundef nonnull align 8 dereferenceable(16) %136, ptr noundef nonnull align 8 dereferenceable(16) %137, ptr noundef nonnull align 8 dereferenceable(16) %138, ptr noundef nonnull align 8 dereferenceable(16) %139, ptr noundef nonnull align 8 dereferenceable(16) %31, ptr noundef nonnull align 8 dereferenceable(16) %32, ptr noundef nonnull align 8 dereferenceable(16) %35, ptr noundef nonnull align 8 dereferenceable(16) %36, ptr noundef nonnull align 8 dereferenceable(16) %37, ptr noundef nonnull align 8 dereferenceable(16) %38, ptr noundef nonnull align 8 dereferenceable(16) %39)
          to label %140 unwind label %174

140:                                              ; preds = %133
  invoke void @_ZNK3ipx5Model25ScaleBackInteriorSolutionERSt8valarrayIdES3_S3_S3_S3_S3_S3_(ptr noundef nonnull align 8 dereferenceable(704) %40, ptr noundef nonnull align 8 dereferenceable(16) %31, ptr noundef nonnull align 8 dereferenceable(16) %32, ptr noundef nonnull align 8 dereferenceable(16) %35, ptr noundef nonnull align 8 dereferenceable(16) %36, ptr noundef nonnull align 8 dereferenceable(16) %37, ptr noundef nonnull align 8 dereferenceable(16) %38, ptr noundef nonnull align 8 dereferenceable(16) %39)
          to label %141 unwind label %174

141:                                              ; preds = %140
  %142 = load ptr, ptr %22, align 8, !tbaa !5
  %143 = icmp ne ptr %142, null
  br i1 %143, label %144, label %178

144:                                              ; preds = %141
  %145 = call noundef ptr @_ZSt5beginIdEPT_RSt8valarrayIS0_E(ptr noundef nonnull align 8 dereferenceable(16) %31) #6
  %146 = call noundef ptr @_ZSt3endIdEPT_RSt8valarrayIS0_E(ptr noundef nonnull align 8 dereferenceable(16) %31) #6
  %147 = load ptr, ptr %22, align 8, !tbaa !5
  %148 = invoke noundef ptr @_ZSt4copyIPdS0_ET0_T_S2_S1_(ptr noundef %145, ptr noundef %146, ptr noundef %147)
          to label %149 unwind label %174

149:                                              ; preds = %144
  br label %178

150:                                              ; preds = %106
  %151 = landingpad { ptr, i32 }
          cleanup
  %152 = extractvalue { ptr, i32 } %151, 0
  store ptr %152, ptr %33, align 8
  %153 = extractvalue { ptr, i32 } %151, 1
  store i32 %153, ptr %34, align 4
  br label %238

154:                                              ; preds = %113
  %155 = landingpad { ptr, i32 }
          cleanup
  %156 = extractvalue { ptr, i32 } %155, 0
  store ptr %156, ptr %33, align 8
  %157 = extractvalue { ptr, i32 } %155, 1
  store i32 %157, ptr %34, align 4
  br label %237

158:                                              ; preds = %117
  %159 = landingpad { ptr, i32 }
          cleanup
  %160 = extractvalue { ptr, i32 } %159, 0
  store ptr %160, ptr %33, align 8
  %161 = extractvalue { ptr, i32 } %159, 1
  store i32 %161, ptr %34, align 4
  br label %236

162:                                              ; preds = %121
  %163 = landingpad { ptr, i32 }
          cleanup
  %164 = extractvalue { ptr, i32 } %163, 0
  store ptr %164, ptr %33, align 8
  %165 = extractvalue { ptr, i32 } %163, 1
  store i32 %165, ptr %34, align 4
  br label %235

166:                                              ; preds = %125
  %167 = landingpad { ptr, i32 }
          cleanup
  %168 = extractvalue { ptr, i32 } %167, 0
  store ptr %168, ptr %33, align 8
  %169 = extractvalue { ptr, i32 } %167, 1
  store i32 %169, ptr %34, align 4
  br label %234

170:                                              ; preds = %129
  %171 = landingpad { ptr, i32 }
          cleanup
  %172 = extractvalue { ptr, i32 } %171, 0
  store ptr %172, ptr %33, align 8
  %173 = extractvalue { ptr, i32 } %171, 1
  store i32 %173, ptr %34, align 4
  br label %233

174:                                              ; preds = %226, %217, %208, %199, %190, %181, %144, %140, %133
  %175 = landingpad { ptr, i32 }
          cleanup
  %176 = extractvalue { ptr, i32 } %175, 0
  store ptr %176, ptr %33, align 8
  %177 = extractvalue { ptr, i32 } %175, 1
  store i32 %177, ptr %34, align 4
  call void @_ZNSt8valarrayIdED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %39) #6
  br label %233

178:                                              ; preds = %149, %141
  %179 = load ptr, ptr %23, align 8, !tbaa !5
  %180 = icmp ne ptr %179, null
  br i1 %180, label %181, label %187

181:                                              ; preds = %178
  %182 = call noundef ptr @_ZSt5beginIdEPT_RSt8valarrayIS0_E(ptr noundef nonnull align 8 dereferenceable(16) %32) #6
  %183 = call noundef ptr @_ZSt3endIdEPT_RSt8valarrayIS0_E(ptr noundef nonnull align 8 dereferenceable(16) %32) #6
  %184 = load ptr, ptr %23, align 8, !tbaa !5
  %185 = invoke noundef ptr @_ZSt4copyIPdS0_ET0_T_S2_S1_(ptr noundef %182, ptr noundef %183, ptr noundef %184)
          to label %186 unwind label %174

186:                                              ; preds = %181
  br label %187

187:                                              ; preds = %186, %178
  %188 = load ptr, ptr %24, align 8, !tbaa !5
  %189 = icmp ne ptr %188, null
  br i1 %189, label %190, label %196

190:                                              ; preds = %187
  %191 = call noundef ptr @_ZSt5beginIdEPT_RSt8valarrayIS0_E(ptr noundef nonnull align 8 dereferenceable(16) %35) #6
  %192 = call noundef ptr @_ZSt3endIdEPT_RSt8valarrayIS0_E(ptr noundef nonnull align 8 dereferenceable(16) %35) #6
  %193 = load ptr, ptr %24, align 8, !tbaa !5
  %194 = invoke noundef ptr @_ZSt4copyIPdS0_ET0_T_S2_S1_(ptr noundef %191, ptr noundef %192, ptr noundef %193)
          to label %195 unwind label %174

195:                                              ; preds = %190
  br label %196

196:                                              ; preds = %195, %187
  %197 = load ptr, ptr %25, align 8, !tbaa !5
  %198 = icmp ne ptr %197, null
  br i1 %198, label %199, label %205

199:                                              ; preds = %196
  %200 = call noundef ptr @_ZSt5beginIdEPT_RSt8valarrayIS0_E(ptr noundef nonnull align 8 dereferenceable(16) %36) #6
  %201 = call noundef ptr @_ZSt3endIdEPT_RSt8valarrayIS0_E(ptr noundef nonnull align 8 dereferenceable(16) %36) #6
  %202 = load ptr, ptr %25, align 8, !tbaa !5
  %203 = invoke noundef ptr @_ZSt4copyIPdS0_ET0_T_S2_S1_(ptr noundef %200, ptr noundef %201, ptr noundef %202)
          to label %204 unwind label %174

204:                                              ; preds = %199
  br label %205

205:                                              ; preds = %204, %196
  %206 = load ptr, ptr %26, align 8, !tbaa !5
  %207 = icmp ne ptr %206, null
  br i1 %207, label %208, label %214

208:                                              ; preds = %205
  %209 = call noundef ptr @_ZSt5beginIdEPT_RSt8valarrayIS0_E(ptr noundef nonnull align 8 dereferenceable(16) %37) #6
  %210 = call noundef ptr @_ZSt3endIdEPT_RSt8valarrayIS0_E(ptr noundef nonnull align 8 dereferenceable(16) %37) #6
  %211 = load ptr, ptr %26, align 8, !tbaa !5
  %212 = invoke noundef ptr @_ZSt4copyIPdS0_ET0_T_S2_S1_(ptr noundef %209, ptr noundef %210, ptr noundef %211)
          to label %213 unwind label %174

213:                                              ; preds = %208
  br label %214

214:                                              ; preds = %213, %205
  %215 = load ptr, ptr %27, align 8, !tbaa !5
  %216 = icmp ne ptr %215, null
  br i1 %216, label %217, label %223

217:                                              ; preds = %214
  %218 = call noundef ptr @_ZSt5beginIdEPT_RSt8valarrayIS0_E(ptr noundef nonnull align 8 dereferenceable(16) %38) #6
  %219 = call noundef ptr @_ZSt3endIdEPT_RSt8valarrayIS0_E(ptr noundef nonnull align 8 dereferenceable(16) %38) #6
  %220 = load ptr, ptr %27, align 8, !tbaa !5
  %221 = invoke noundef ptr @_ZSt4copyIPdS0_ET0_T_S2_S1_(ptr noundef %218, ptr noundef %219, ptr noundef %220)
          to label %222 unwind label %174

222:                                              ; preds = %217
  br label %223

223:                                              ; preds = %222, %214
  %224 = load ptr, ptr %28, align 8, !tbaa !5
  %225 = icmp ne ptr %224, null
  br i1 %225, label %226, label %232

226:                                              ; preds = %223
  %227 = call noundef ptr @_ZSt5beginIdEPT_RSt8valarrayIS0_E(ptr noundef nonnull align 8 dereferenceable(16) %39) #6
  %228 = call noundef ptr @_ZSt3endIdEPT_RSt8valarrayIS0_E(ptr noundef nonnull align 8 dereferenceable(16) %39) #6
  %229 = load ptr, ptr %28, align 8, !tbaa !5
  %230 = invoke noundef ptr @_ZSt4copyIPdS0_ET0_T_S2_S1_(ptr noundef %227, ptr noundef %228, ptr noundef %229)
          to label %231 unwind label %174

231:                                              ; preds = %226
  br label %232

232:                                              ; preds = %231, %223
  call void @_ZNSt8valarrayIdED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %39) #6
  call void @llvm.lifetime.end.p0(i64 16, ptr %39) #6
  call void @_ZNSt8valarrayIdED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %38) #6
  call void @llvm.lifetime.end.p0(i64 16, ptr %38) #6
  call void @_ZNSt8valarrayIdED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %37) #6
  call void @llvm.lifetime.end.p0(i64 16, ptr %37) #6
  call void @_ZNSt8valarrayIdED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %36) #6
  call void @llvm.lifetime.end.p0(i64 16, ptr %36) #6
  call void @_ZNSt8valarrayIdED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %35) #6
  call void @llvm.lifetime.end.p0(i64 16, ptr %35) #6
  call void @_ZNSt8valarrayIdED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %32) #6
  call void @llvm.lifetime.end.p0(i64 16, ptr %32) #6
  call void @_ZNSt8valarrayIdED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %31) #6
  call void @llvm.lifetime.end.p0(i64 16, ptr %31) #6
  call void @llvm.lifetime.end.p0(i64 4, ptr %30) #6
  call void @llvm.lifetime.end.p0(i64 4, ptr %29) #6
  ret void

233:                                              ; preds = %174, %170
  call void @llvm.lifetime.end.p0(i64 16, ptr %39) #6
  call void @_ZNSt8valarrayIdED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %38) #6
  br label %234

234:                                              ; preds = %233, %166
  call void @llvm.lifetime.end.p0(i64 16, ptr %38) #6
  call void @_ZNSt8valarrayIdED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %37) #6
  br label %235

235:                                              ; preds = %234, %162
  call void @llvm.lifetime.end.p0(i64 16, ptr %37) #6
  call void @_ZNSt8valarrayIdED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %36) #6
  br label %236

236:                                              ; preds = %235, %158
  call void @llvm.lifetime.end.p0(i64 16, ptr %36) #6
  call void @_ZNSt8valarrayIdED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %35) #6
  br label %237

237:                                              ; preds = %236, %154
  call void @llvm.lifetime.end.p0(i64 16, ptr %35) #6
  call void @_ZNSt8valarrayIdED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %32) #6
  br label %238

238:                                              ; preds = %237, %150
  call void @llvm.lifetime.end.p0(i64 16, ptr %32) #6
  call void @_ZNSt8valarrayIdED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %31) #6
  call void @llvm.lifetime.end.p0(i64 16, ptr %31) #6
  call void @llvm.lifetime.end.p0(i64 4, ptr %30) #6
  call void @llvm.lifetime.end.p0(i64 4, ptr %29) #6
  br label %239

239:                                              ; preds = %238
  %240 = load ptr, ptr %33, align 8
  %241 = load i32, ptr %34, align 4
  %242 = insertvalue { ptr, i32 } poison, ptr %240, 0
  %243 = insertvalue { ptr, i32 } %242, i32 %241, 1
  resume { ptr, i32 } %243
}

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

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

; Function Attrs: inlinehint mustprogress uwtable
declare dso_local noundef ptr @_ZSt4copyIPdS0_ET0_T_S2_S1_(ptr noundef, ptr noundef, ptr noundef) #4

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


; 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::valarray" = type { i64, ptr }

@.str.18 = external hidden unnamed_addr constant [70 x i8], align 1
@.str.20 = external hidden unnamed_addr constant [28 x i8], align 1
@.str.21 = external hidden unnamed_addr constant [26 x i8], align 1
@__PRETTY_FUNCTION__._ZNK3ipx5Model25PostsolveInteriorSolutionERKSt8valarrayIdES4_S4_S4_S4_S4_PdS5_S5_S5_S5_S5_S5_ = external hidden unnamed_addr constant [215 x i8], align 1
@.str.23 = external hidden unnamed_addr constant [29 x i8], align 1
@.str.24 = external hidden unnamed_addr constant [29 x i8], align 1
@.str.25 = external hidden unnamed_addr constant [29 x i8], align 1
@.str.26 = external hidden unnamed_addr constant [29 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: noreturn nounwind
declare void @__assert_fail(ptr noundef, ptr noundef, i32 noundef, ptr noundef) local_unnamed_addr #1

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

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

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

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

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

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

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

; Function Attrs: mustprogress uwtable
define dso_local void @_ZNK3ipx5Model25PostsolveInteriorSolutionERKSt8valarrayIdES4_S4_S4_S4_S4_PdS5_S5_S5_S5_S5_S5_(ptr noundef nonnull align 8 dereferenceable(704) %0, ptr noundef nonnull align 8 dereferenceable(16) %1, ptr noundef nonnull align 8 dereferenceable(16) %2, ptr noundef nonnull align 8 dereferenceable(16) %3, ptr noundef nonnull align 8 dereferenceable(16) %4, ptr noundef nonnull align 8 dereferenceable(16) %5, ptr noundef nonnull align 8 dereferenceable(16) %6, ptr noundef %7, ptr noundef %8, ptr noundef %9, ptr noundef %10, ptr noundef %11, ptr noundef %12, ptr noundef %13) local_unnamed_addr #5 align 2 personality ptr @__gxx_personality_v0 {
  %15 = alloca %"class.std::valarray", align 8
  %16 = alloca %"class.std::valarray", align 8
  %17 = alloca %"class.std::valarray", align 8
  %18 = alloca %"class.std::valarray", align 8
  %19 = alloca %"class.std::valarray", align 8
  %20 = alloca %"class.std::valarray", align 8
  %21 = alloca %"class.std::valarray", align 8
  %22 = tail call noundef i32 @_ZNK3ipx5Model4rowsEv(ptr noundef nonnull align 8 dereferenceable(704) %0)
  %23 = tail call noundef i32 @_ZNK3ipx5Model4colsEv(ptr noundef nonnull align 8 dereferenceable(704) %0)
  %24 = tail call noundef i64 @_ZNKSt8valarrayIdE4sizeEv(ptr noundef nonnull align 8 dereferenceable(16) %1)
  %25 = trunc i64 %24 to i32
  %26 = add nsw i32 %23, %22
  %27 = icmp eq i32 %26, %25
  br i1 %27, label %29, label %28

28:                                               ; preds = %14
  tail call void @__assert_fail(ptr noundef nonnull @.str.20, ptr noundef nonnull @.str.18, i32 noundef 240, ptr noundef nonnull @__PRETTY_FUNCTION__._ZNK3ipx5Model25PostsolveInteriorSolutionERKSt8valarrayIdES4_S4_S4_S4_S4_PdS5_S5_S5_S5_S5_S5_) #6
  unreachable

29:                                               ; preds = %14
  %30 = tail call noundef i64 @_ZNKSt8valarrayIdE4sizeEv(ptr noundef nonnull align 8 dereferenceable(16) %2)
  %31 = trunc i64 %30 to i32
  %32 = icmp eq i32 %25, %31
  br i1 %32, label %34, label %33

33:                                               ; preds = %29
  tail call void @__assert_fail(ptr noundef nonnull @.str.23, ptr noundef nonnull @.str.18, i32 noundef 241, ptr noundef nonnull @__PRETTY_FUNCTION__._ZNK3ipx5Model25PostsolveInteriorSolutionERKSt8valarrayIdES4_S4_S4_S4_S4_PdS5_S5_S5_S5_S5_S5_) #6
  unreachable

34:                                               ; preds = %29
  %35 = tail call noundef i64 @_ZNKSt8valarrayIdE4sizeEv(ptr noundef nonnull align 8 dereferenceable(16) %3)
  %36 = trunc i64 %35 to i32
  %37 = icmp eq i32 %25, %36
  br i1 %37, label %39, label %38

38:                                               ; preds = %34
  tail call void @__assert_fail(ptr noundef nonnull @.str.24, ptr noundef nonnull @.str.18, i32 noundef 242, ptr noundef nonnull @__PRETTY_FUNCTION__._ZNK3ipx5Model25PostsolveInteriorSolutionERKSt8valarrayIdES4_S4_S4_S4_S4_PdS5_S5_S5_S5_S5_S5_) #6
  unreachable

39:                                               ; preds = %34
  %40 = tail call noundef i64 @_ZNKSt8valarrayIdE4sizeEv(ptr noundef nonnull align 8 dereferenceable(16) %4)
  %41 = trunc i64 %40 to i32
  %42 = icmp eq i32 %22, %41
  br i1 %42, label %44, label %43

43:                                               ; preds = %39
  tail call void @__assert_fail(ptr noundef nonnull @.str.21, ptr noundef nonnull @.str.18, i32 noundef 243, ptr noundef nonnull @__PRETTY_FUNCTION__._ZNK3ipx5Model25PostsolveInteriorSolutionERKSt8valarrayIdES4_S4_S4_S4_S4_PdS5_S5_S5_S5_S5_S5_) #6
  unreachable

44:                                               ; preds = %39
  %45 = tail call noundef i64 @_ZNKSt8valarrayIdE4sizeEv(ptr noundef nonnull align 8 dereferenceable(16) %5)
  %46 = trunc i64 %45 to i32
  %47 = icmp eq i32 %25, %46
  br i1 %47, label %49, label %48

48:                                               ; preds = %44
  tail call void @__assert_fail(ptr noundef nonnull @.str.25, ptr noundef nonnull @.str.18, i32 noundef 244, ptr noundef nonnull @__PRETTY_FUNCTION__._ZNK3ipx5Model25PostsolveInteriorSolutionERKSt8valarrayIdES4_S4_S4_S4_S4_PdS5_S5_S5_S5_S5_S5_) #6
  unreachable

49:                                               ; preds = %44
  %50 = tail call noundef i64 @_ZNKSt8valarrayIdE4sizeEv(ptr noundef nonnull align 8 dereferenceable(16) %6)
  %51 = trunc i64 %50 to i32
  %52 = icmp eq i32 %25, %51
  br i1 %52, label %54, label %53

53:                                               ; preds = %49
  tail call void @__assert_fail(ptr noundef nonnull @.str.26, ptr noundef nonnull @.str.18, i32 noundef 245, ptr noundef nonnull @__PRETTY_FUNCTION__._ZNK3ipx5Model25PostsolveInteriorSolutionERKSt8valarrayIdES4_S4_S4_S4_S4_PdS5_S5_S5_S5_S5_S5_) #6
  unreachable

54:                                               ; preds = %49
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %15) #7
  %55 = getelementptr inbounds i8, ptr %0, i64 368
  %56 = load i32, ptr %55, align 8, !tbaa !5
  %57 = sext i32 %56 to i64
  call void @_ZNSt8valarrayIdEC2Em(ptr noundef nonnull align 8 dereferenceable(16) %15, i64 noundef %57)
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %16) #7
  %58 = load i32, ptr %55, align 8, !tbaa !5
  %59 = sext i32 %58 to i64
  invoke void @_ZNSt8valarrayIdEC2Em(ptr noundef nonnull align 8 dereferenceable(16) %16, i64 noundef %59)
          to label %60 unwind label %83

60:                                               ; preds = %54
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %17) #7
  %61 = load i32, ptr %55, align 8, !tbaa !5
  %62 = sext i32 %61 to i64
  invoke void @_ZNSt8valarrayIdEC2Em(ptr noundef nonnull align 8 dereferenceable(16) %17, i64 noundef %62)
          to label %63 unwind label %85

63:                                               ; preds = %60
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %18) #7
  %64 = getelementptr inbounds i8, ptr %0, i64 360
  %65 = load i32, ptr %64, align 8, !tbaa !28
  %66 = sext i32 %65 to i64
  invoke void @_ZNSt8valarrayIdEC2Em(ptr noundef nonnull align 8 dereferenceable(16) %18, i64 noundef %66)
          to label %67 unwind label %87

67:                                               ; preds = %63
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %19) #7
  %68 = load i32, ptr %64, align 8, !tbaa !28
  %69 = sext i32 %68 to i64
  invoke void @_ZNSt8valarrayIdEC2Em(ptr noundef nonnull align 8 dereferenceable(16) %19, i64 noundef %69)
          to label %70 unwind label %89

70:                                               ; preds = %67
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %20) #7
  %71 = load i32, ptr %55, align 8, !tbaa !5
  %72 = sext i32 %71 to i64
  invoke void @_ZNSt8valarrayIdEC2Em(ptr noundef nonnull align 8 dereferenceable(16) %20, i64 noundef %72)
          to label %73 unwind label %91

73:                                               ; preds = %70
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %21) #7
  %74 = load i32, ptr %55, align 8, !tbaa !5
  %75 = sext i32 %74 to i64
  invoke void @_ZNSt8valarrayIdEC2Em(ptr noundef nonnull align 8 dereferenceable(16) %21, i64 noundef %75)
          to label %76 unwind label %93

76:                                               ; preds = %73
  invoke void @_ZNK3ipx5Model27DualizeBackInteriorSolutionERKSt8valarrayIdES4_S4_S4_S4_S4_RS2_S5_S5_S5_S5_S5_S5_(ptr noundef nonnull align 8 dereferenceable(704) %0, ptr noundef nonnull align 8 dereferenceable(16) %1, ptr noundef nonnull align 8 dereferenceable(16) %2, ptr noundef nonnull align 8 dereferenceable(16) %3, ptr noundef nonnull align 8 dereferenceable(16) %4, ptr noundef nonnull align 8 dereferenceable(16) %5, ptr noundef nonnull align 8 dereferenceable(16) %6, ptr noundef nonnull align 8 dereferenceable(16) %15, ptr noundef nonnull align 8 dereferenceable(16) %16, ptr noundef nonnull align 8 dereferenceable(16) %17, ptr noundef nonnull align 8 dereferenceable(16) %18, ptr noundef nonnull align 8 dereferenceable(16) %19, ptr noundef nonnull align 8 dereferenceable(16) %20, ptr noundef nonnull align 8 dereferenceable(16) %21)
          to label %77 unwind label %95

77:                                               ; preds = %76
  invoke void @_ZNK3ipx5Model25ScaleBackInteriorSolutionERSt8valarrayIdES3_S3_S3_S3_S3_S3_(ptr noundef nonnull align 8 dereferenceable(704) %0, ptr noundef nonnull align 8 dereferenceable(16) %15, ptr noundef nonnull align 8 dereferenceable(16) %16, ptr noundef nonnull align 8 dereferenceable(16) %17, ptr noundef nonnull align 8 dereferenceable(16) %18, ptr noundef nonnull align 8 dereferenceable(16) %19, ptr noundef nonnull align 8 dereferenceable(16) %20, ptr noundef nonnull align 8 dereferenceable(16) %21)
          to label %78 unwind label %95

78:                                               ; preds = %77
  %.not = icmp eq ptr %7, null
  br i1 %.not, label %97, label %79

79:                                               ; preds = %78
  %80 = call noundef ptr @_ZSt5beginIdEPT_RSt8valarrayIS0_E(ptr noundef nonnull align 8 dereferenceable(16) %15) #7
  %81 = call noundef ptr @_ZSt3endIdEPT_RSt8valarrayIS0_E(ptr noundef nonnull align 8 dereferenceable(16) %15) #7
  %82 = invoke noundef ptr @_ZSt4copyIPdS0_ET0_T_S2_S1_(ptr noundef %80, ptr noundef %81, ptr noundef nonnull %7)
          to label %97 unwind label %95

83:                                               ; preds = %54
  %84 = landingpad { ptr, i32 }
          cleanup
  br label %133

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

87:                                               ; preds = %63
  %88 = landingpad { ptr, i32 }
          cleanup
  br label %131

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

91:                                               ; preds = %70
  %92 = landingpad { ptr, i32 }
          cleanup
  br label %129

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

95:                                               ; preds = %123, %118, %113, %108, %103, %98, %79, %77, %76
  %96 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt8valarrayIdED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %21) #7
  br label %128

97:                                               ; preds = %79, %78
  %.not53 = icmp eq ptr %8, null
  br i1 %.not53, label %102, label %98

98:                                               ; preds = %97
  %99 = call noundef ptr @_ZSt5beginIdEPT_RSt8valarrayIS0_E(ptr noundef nonnull align 8 dereferenceable(16) %16) #7
  %100 = call noundef ptr @_ZSt3endIdEPT_RSt8valarrayIS0_E(ptr noundef nonnull align 8 dereferenceable(16) %16) #7
  %101 = invoke noundef ptr @_ZSt4copyIPdS0_ET0_T_S2_S1_(ptr noundef %99, ptr noundef %100, ptr noundef nonnull %8)
          to label %102 unwind label %95

102:                                              ; preds = %98, %97
  %.not54 = icmp eq ptr %9, null
  br i1 %.not54, label %107, label %103

103:                                              ; preds = %102
  %104 = call noundef ptr @_ZSt5beginIdEPT_RSt8valarrayIS0_E(ptr noundef nonnull align 8 dereferenceable(16) %17) #7
  %105 = call noundef ptr @_ZSt3endIdEPT_RSt8valarrayIS0_E(ptr noundef nonnull align 8 dereferenceable(16) %17) #7
  %106 = invoke noundef ptr @_ZSt4copyIPdS0_ET0_T_S2_S1_(ptr noundef %104, ptr noundef %105, ptr noundef nonnull %9)
          to label %107 unwind label %95

107:                                              ; preds = %103, %102
  %.not55 = icmp eq ptr %10, null
  br i1 %.not55, label %112, label %108

108:                                              ; preds = %107
  %109 = call noundef ptr @_ZSt5beginIdEPT_RSt8valarrayIS0_E(ptr noundef nonnull align 8 dereferenceable(16) %18) #7
  %110 = call noundef ptr @_ZSt3endIdEPT_RSt8valarrayIS0_E(ptr noundef nonnull align 8 dereferenceable(16) %18) #7
  %111 = invoke noundef ptr @_ZSt4copyIPdS0_ET0_T_S2_S1_(ptr noundef %109, ptr noundef %110, ptr noundef nonnull %10)
          to label %112 unwind label %95

112:                                              ; preds = %108, %107
  %.not56 = icmp eq ptr %11, null
  br i1 %.not56, label %117, label %113

113:                                              ; preds = %112
  %114 = call noundef ptr @_ZSt5beginIdEPT_RSt8valarrayIS0_E(ptr noundef nonnull align 8 dereferenceable(16) %19) #7
  %115 = call noundef ptr @_ZSt3endIdEPT_RSt8valarrayIS0_E(ptr noundef nonnull align 8 dereferenceable(16) %19) #7
  %116 = invoke noundef ptr @_ZSt4copyIPdS0_ET0_T_S2_S1_(ptr noundef %114, ptr noundef %115, ptr noundef nonnull %11)
          to label %117 unwind label %95

117:                                              ; preds = %113, %112
  %.not57 = icmp eq ptr %12, null
  br i1 %.not57, label %122, label %118

118:                                              ; preds = %117
  %119 = call noundef ptr @_ZSt5beginIdEPT_RSt8valarrayIS0_E(ptr noundef nonnull align 8 dereferenceable(16) %20) #7
  %120 = call noundef ptr @_ZSt3endIdEPT_RSt8valarrayIS0_E(ptr noundef nonnull align 8 dereferenceable(16) %20) #7
  %121 = invoke noundef ptr @_ZSt4copyIPdS0_ET0_T_S2_S1_(ptr noundef %119, ptr noundef %120, ptr noundef nonnull %12)
          to label %122 unwind label %95

122:                                              ; preds = %118, %117
  %.not58 = icmp eq ptr %13, null
  br i1 %.not58, label %127, label %123

123:                                              ; preds = %122
  %124 = call noundef ptr @_ZSt5beginIdEPT_RSt8valarrayIS0_E(ptr noundef nonnull align 8 dereferenceable(16) %21) #7
  %125 = call noundef ptr @_ZSt3endIdEPT_RSt8valarrayIS0_E(ptr noundef nonnull align 8 dereferenceable(16) %21) #7
  %126 = invoke noundef ptr @_ZSt4copyIPdS0_ET0_T_S2_S1_(ptr noundef %124, ptr noundef %125, ptr noundef nonnull %13)
          to label %127 unwind label %95

127:                                              ; preds = %123, %122
  call void @_ZNSt8valarrayIdED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %21) #7
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %21) #7
  call void @_ZNSt8valarrayIdED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %20) #7
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %20) #7
  call void @_ZNSt8valarrayIdED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %19) #7
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %19) #7
  call void @_ZNSt8valarrayIdED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %18) #7
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %18) #7
  call void @_ZNSt8valarrayIdED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %17) #7
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %17) #7
  call void @_ZNSt8valarrayIdED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %16) #7
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %16) #7
  call void @_ZNSt8valarrayIdED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %15) #7
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %15) #7
  ret void

128:                                              ; preds = %95, %93
  %.pn = phi { ptr, i32 } [ %96, %95 ], [ %94, %93 ]
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %21) #7
  call void @_ZNSt8valarrayIdED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %20) #7
  br label %129

129:                                              ; preds = %128, %91
  %.pn.pn = phi { ptr, i32 } [ %.pn, %128 ], [ %92, %91 ]
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %20) #7
  call void @_ZNSt8valarrayIdED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %19) #7
  br label %130

130:                                              ; preds = %129, %89
  %.pn.pn.pn = phi { ptr, i32 } [ %.pn.pn, %129 ], [ %90, %89 ]
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %19) #7
  call void @_ZNSt8valarrayIdED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %18) #7
  br label %131

131:                                              ; preds = %130, %87
  %.pn.pn.pn.pn = phi { ptr, i32 } [ %.pn.pn.pn, %130 ], [ %88, %87 ]
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %18) #7
  call void @_ZNSt8valarrayIdED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %17) #7
  br label %132

132:                                              ; preds = %131, %85
  %.pn.pn.pn.pn.pn = phi { ptr, i32 } [ %.pn.pn.pn.pn, %131 ], [ %86, %85 ]
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %17) #7
  call void @_ZNSt8valarrayIdED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %16) #7
  br label %133

133:                                              ; preds = %132, %83
  %.pn.pn.pn.pn.pn.pn = phi { ptr, i32 } [ %.pn.pn.pn.pn.pn, %132 ], [ %84, %83 ]
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %16) #7
  call void @_ZNSt8valarrayIdED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %15) #7
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %15) #7
  resume { ptr, i32 } %.pn.pn.pn.pn.pn.pn
}

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

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

; Function Attrs: inlinehint mustprogress uwtable
declare dso_local noundef ptr @_ZSt4copyIPdS0_ET0_T_S2_S1_(ptr noundef, ptr noundef, ptr noundef) local_unnamed_addr #4

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


; Effective O3 passes: EarlyCSEPass,GVNPass,GlobalOptPass,InferFunctionAttrsPass,InstCombinePass,SROAPass,SimplifyCFGPass,TailCallElimPass