; 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.std::_Expr" = type { %"struct.std::__detail::_BinClos" }
%"struct.std::__detail::_BinClos" = type { %"class.std::__detail::_BinBase" }
%"class.std::__detail::_BinBase" = type { 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.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 }
%struct.ipx_info = type { i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, double, double, double, double, double, double, double, double, double, double, double, double, double, double, i32, i32, i32, i32, i32, i32, i32, double, double, double, double, double, double, double, double, double, double, double, double, double, double, double, double, double, double, double, double, double, double, double, double, i32, i32, i32, i32, double, double, double, double }

@.str.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
@.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
@__PRETTY_FUNCTION__._ZNK3ipx5Model24EvaluateInteriorSolutionERKSt8valarrayIdES4_S4_S4_S4_S4_PNS_4InfoE = external hidden unnamed_addr constant [152 x i8], align 1
@.str.27 = external hidden unnamed_addr constant [18 x i8], align 1
@.str.28 = external hidden unnamed_addr constant [18 x i8], align 1
@.str.29 = external hidden unnamed_addr constant [26 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

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

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

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

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

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

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

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

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

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

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

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

58:                                               ; preds = %8
  br label %61

59:                                               ; preds = %8
  call void @__assert_fail(ptr noundef @.str.20, ptr noundef @.str.18, i32 noundef 284, ptr noundef @__PRETTY_FUNCTION__._ZNK3ipx5Model24EvaluateInteriorSolutionERKSt8valarrayIdES4_S4_S4_S4_S4_PNS_4InfoE) #9
  unreachable

60:                                               ; No predecessors!
  br label %61

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

69:                                               ; preds = %61
  br label %72

70:                                               ; preds = %61
  call void @__assert_fail(ptr noundef @.str.23, ptr noundef @.str.18, i32 noundef 285, ptr noundef @__PRETTY_FUNCTION__._ZNK3ipx5Model24EvaluateInteriorSolutionERKSt8valarrayIdES4_S4_S4_S4_S4_PNS_4InfoE) #9
  unreachable

71:                                               ; No predecessors!
  br label %72

72:                                               ; preds = %71, %69
  %73 = load ptr, ptr %12, align 8, !tbaa !5
  %74 = call noundef i64 @_ZNKSt8valarrayIdE4sizeEv(ptr noundef nonnull align 8 dereferenceable(16) %73)
  %75 = trunc i64 %74 to i32
  %76 = load i32, ptr %18, align 4, !tbaa !9
  %77 = load i32, ptr %17, align 4, !tbaa !9
  %78 = add nsw i32 %76, %77
  %79 = icmp eq i32 %75, %78
  br i1 %79, label %80, label %81

80:                                               ; preds = %72
  br label %83

81:                                               ; preds = %72
  call void @__assert_fail(ptr noundef @.str.24, ptr noundef @.str.18, i32 noundef 286, ptr noundef @__PRETTY_FUNCTION__._ZNK3ipx5Model24EvaluateInteriorSolutionERKSt8valarrayIdES4_S4_S4_S4_S4_PNS_4InfoE) #9
  unreachable

82:                                               ; No predecessors!
  br label %83

83:                                               ; preds = %82, %80
  %84 = load ptr, ptr %13, align 8, !tbaa !5
  %85 = call noundef i64 @_ZNKSt8valarrayIdE4sizeEv(ptr noundef nonnull align 8 dereferenceable(16) %84)
  %86 = trunc i64 %85 to i32
  %87 = load i32, ptr %17, align 4, !tbaa !9
  %88 = icmp eq i32 %86, %87
  br i1 %88, label %89, label %90

89:                                               ; preds = %83
  br label %92

90:                                               ; preds = %83
  call void @__assert_fail(ptr noundef @.str.21, ptr noundef @.str.18, i32 noundef 287, ptr noundef @__PRETTY_FUNCTION__._ZNK3ipx5Model24EvaluateInteriorSolutionERKSt8valarrayIdES4_S4_S4_S4_S4_PNS_4InfoE) #9
  unreachable

91:                                               ; No predecessors!
  br label %92

92:                                               ; preds = %91, %89
  %93 = load ptr, ptr %14, align 8, !tbaa !5
  %94 = call noundef i64 @_ZNKSt8valarrayIdE4sizeEv(ptr noundef nonnull align 8 dereferenceable(16) %93)
  %95 = trunc i64 %94 to i32
  %96 = load i32, ptr %18, align 4, !tbaa !9
  %97 = load i32, ptr %17, align 4, !tbaa !9
  %98 = add nsw i32 %96, %97
  %99 = icmp eq i32 %95, %98
  br i1 %99, label %100, label %101

100:                                              ; preds = %92
  br label %103

101:                                              ; preds = %92
  call void @__assert_fail(ptr noundef @.str.25, ptr noundef @.str.18, i32 noundef 288, ptr noundef @__PRETTY_FUNCTION__._ZNK3ipx5Model24EvaluateInteriorSolutionERKSt8valarrayIdES4_S4_S4_S4_S4_PNS_4InfoE) #9
  unreachable

102:                                              ; No predecessors!
  br label %103

103:                                              ; preds = %102, %100
  %104 = load ptr, ptr %15, align 8, !tbaa !5
  %105 = call noundef i64 @_ZNKSt8valarrayIdE4sizeEv(ptr noundef nonnull align 8 dereferenceable(16) %104)
  %106 = trunc i64 %105 to i32
  %107 = load i32, ptr %18, align 4, !tbaa !9
  %108 = load i32, ptr %17, align 4, !tbaa !9
  %109 = add nsw i32 %107, %108
  %110 = icmp eq i32 %106, %109
  br i1 %110, label %111, label %112

111:                                              ; preds = %103
  br label %114

112:                                              ; preds = %103
  call void @__assert_fail(ptr noundef @.str.26, ptr noundef @.str.18, i32 noundef 289, ptr noundef @__PRETTY_FUNCTION__._ZNK3ipx5Model24EvaluateInteriorSolutionERKSt8valarrayIdES4_S4_S4_S4_S4_PNS_4InfoE) #9
  unreachable

113:                                              ; No predecessors!
  br label %114

114:                                              ; preds = %113, %111
  call void @llvm.lifetime.start.p0(i64 16, ptr %19) #8
  %115 = getelementptr inbounds %"class.ipx::Model", ptr %48, i32 0, i32 15
  %116 = load i32, ptr %115, align 8, !tbaa !11
  %117 = sext i32 %116 to i64
  call void @_ZNSt8valarrayIdEC2Em(ptr noundef nonnull align 8 dereferenceable(16) %19, i64 noundef %117)
  call void @llvm.lifetime.start.p0(i64 16, ptr %20) #8
  %118 = getelementptr inbounds %"class.ipx::Model", ptr %48, i32 0, i32 15
  %119 = load i32, ptr %118, align 8, !tbaa !11
  %120 = sext i32 %119 to i64
  invoke void @_ZNSt8valarrayIdEC2Em(ptr noundef nonnull align 8 dereferenceable(16) %20, i64 noundef %120)
          to label %121 unwind label %159

121:                                              ; preds = %114
  call void @llvm.lifetime.start.p0(i64 16, ptr %23) #8
  %122 = getelementptr inbounds %"class.ipx::Model", ptr %48, i32 0, i32 15
  %123 = load i32, ptr %122, align 8, !tbaa !11
  %124 = sext i32 %123 to i64
  invoke void @_ZNSt8valarrayIdEC2Em(ptr noundef nonnull align 8 dereferenceable(16) %23, i64 noundef %124)
          to label %125 unwind label %163

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

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

133:                                              ; preds = %129
  call void @llvm.lifetime.start.p0(i64 16, ptr %26) #8
  %134 = getelementptr inbounds %"class.ipx::Model", ptr %48, i32 0, i32 15
  %135 = load i32, ptr %134, align 8, !tbaa !11
  %136 = sext i32 %135 to i64
  invoke void @_ZNSt8valarrayIdEC2Em(ptr noundef nonnull align 8 dereferenceable(16) %26, i64 noundef %136)
          to label %137 unwind label %175

137:                                              ; preds = %133
  call void @llvm.lifetime.start.p0(i64 16, ptr %27) #8
  %138 = getelementptr inbounds %"class.ipx::Model", ptr %48, i32 0, i32 15
  %139 = load i32, ptr %138, align 8, !tbaa !11
  %140 = sext i32 %139 to i64
  invoke void @_ZNSt8valarrayIdEC2Em(ptr noundef nonnull align 8 dereferenceable(16) %27, i64 noundef %140)
          to label %141 unwind label %179

141:                                              ; preds = %137
  %142 = load ptr, ptr %10, align 8, !tbaa !5
  %143 = load ptr, ptr %11, align 8, !tbaa !5
  %144 = load ptr, ptr %12, align 8, !tbaa !5
  %145 = load ptr, ptr %13, align 8, !tbaa !5
  %146 = load ptr, ptr %14, align 8, !tbaa !5
  %147 = load ptr, ptr %15, 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) %48, ptr noundef nonnull align 8 dereferenceable(16) %142, ptr noundef nonnull align 8 dereferenceable(16) %143, ptr noundef nonnull align 8 dereferenceable(16) %144, ptr noundef nonnull align 8 dereferenceable(16) %145, ptr noundef nonnull align 8 dereferenceable(16) %146, ptr noundef nonnull align 8 dereferenceable(16) %147, ptr noundef nonnull align 8 dereferenceable(16) %19, ptr noundef nonnull align 8 dereferenceable(16) %20, ptr noundef nonnull align 8 dereferenceable(16) %23, ptr noundef nonnull align 8 dereferenceable(16) %24, ptr noundef nonnull align 8 dereferenceable(16) %25, ptr noundef nonnull align 8 dereferenceable(16) %26, ptr noundef nonnull align 8 dereferenceable(16) %27)
          to label %148 unwind label %183

148:                                              ; preds = %141
  call void @llvm.lifetime.start.p0(i64 16, ptr %28) #8
  %149 = getelementptr inbounds %"class.ipx::Model", ptr %48, i32 0, i32 15
  %150 = load i32, ptr %149, align 8, !tbaa !11
  %151 = sext i32 %150 to i64
  invoke void @_ZNSt8valarrayIdEC2Em(ptr noundef nonnull align 8 dereferenceable(16) %28, i64 noundef %151)
          to label %152 unwind label %187

152:                                              ; preds = %148
  call void @llvm.lifetime.start.p0(i64 4, ptr %29) #8
  store i32 0, ptr %29, align 4, !tbaa !9
  br label %153

153:                                              ; preds = %233, %152
  %154 = load i32, ptr %29, align 4, !tbaa !9
  %155 = getelementptr inbounds %"class.ipx::Model", ptr %48, i32 0, i32 15
  %156 = load i32, ptr %155, align 8, !tbaa !11
  %157 = icmp slt i32 %154, %156
  br i1 %157, label %191, label %158

158:                                              ; preds = %153
  call void @llvm.lifetime.end.p0(i64 4, ptr %29) #8
  br label %236

159:                                              ; preds = %114
  %160 = landingpad { ptr, i32 }
          cleanup
  %161 = extractvalue { ptr, i32 } %160, 0
  store ptr %161, ptr %21, align 8
  %162 = extractvalue { ptr, i32 } %160, 1
  store i32 %162, ptr %22, align 4
  br label %631

163:                                              ; preds = %121
  %164 = landingpad { ptr, i32 }
          cleanup
  %165 = extractvalue { ptr, i32 } %164, 0
  store ptr %165, ptr %21, align 8
  %166 = extractvalue { ptr, i32 } %164, 1
  store i32 %166, ptr %22, align 4
  br label %630

167:                                              ; preds = %125
  %168 = landingpad { ptr, i32 }
          cleanup
  %169 = extractvalue { ptr, i32 } %168, 0
  store ptr %169, ptr %21, align 8
  %170 = extractvalue { ptr, i32 } %168, 1
  store i32 %170, ptr %22, align 4
  br label %629

171:                                              ; preds = %129
  %172 = landingpad { ptr, i32 }
          cleanup
  %173 = extractvalue { ptr, i32 } %172, 0
  store ptr %173, ptr %21, align 8
  %174 = extractvalue { ptr, i32 } %172, 1
  store i32 %174, ptr %22, align 4
  br label %628

175:                                              ; preds = %133
  %176 = landingpad { ptr, i32 }
          cleanup
  %177 = extractvalue { ptr, i32 } %176, 0
  store ptr %177, ptr %21, align 8
  %178 = extractvalue { ptr, i32 } %176, 1
  store i32 %178, ptr %22, align 4
  br label %627

179:                                              ; preds = %137
  %180 = landingpad { ptr, i32 }
          cleanup
  %181 = extractvalue { ptr, i32 } %180, 0
  store ptr %181, ptr %21, align 8
  %182 = extractvalue { ptr, i32 } %180, 1
  store i32 %182, ptr %22, align 4
  br label %626

183:                                              ; preds = %141
  %184 = landingpad { ptr, i32 }
          cleanup
  %185 = extractvalue { ptr, i32 } %184, 0
  store ptr %185, ptr %21, align 8
  %186 = extractvalue { ptr, i32 } %184, 1
  store i32 %186, ptr %22, align 4
  br label %625

187:                                              ; preds = %148
  %188 = landingpad { ptr, i32 }
          cleanup
  %189 = extractvalue { ptr, i32 } %188, 0
  store ptr %189, ptr %21, align 8
  %190 = extractvalue { ptr, i32 } %188, 1
  store i32 %190, ptr %22, align 4
  br label %624

191:                                              ; preds = %153
  %192 = getelementptr inbounds %"class.ipx::Model", ptr %48, i32 0, i32 25
  %193 = load i32, ptr %29, align 4, !tbaa !9
  %194 = sext i32 %193 to i64
  %195 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNKSt8valarrayIdEixEm(ptr noundef nonnull align 8 dereferenceable(16) %192, i64 noundef %194) #8
  %196 = load double, ptr %195, align 8, !tbaa !31
  %197 = invoke noundef zeroext i1 @_ZSt8isfinited(double noundef %196)
          to label %198 unwind label %218

198:                                              ; preds = %191
  br i1 %197, label %199, label %222

199:                                              ; preds = %198
  %200 = getelementptr inbounds %"class.ipx::Model", ptr %48, i32 0, i32 25
  %201 = load i32, ptr %29, align 4, !tbaa !9
  %202 = sext i32 %201 to i64
  %203 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNKSt8valarrayIdEixEm(ptr noundef nonnull align 8 dereferenceable(16) %200, i64 noundef %202) #8
  %204 = load double, ptr %203, align 8, !tbaa !31
  %205 = load i32, ptr %29, align 4, !tbaa !9
  %206 = sext i32 %205 to i64
  %207 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt8valarrayIdEixEm(ptr noundef nonnull align 8 dereferenceable(16) %19, i64 noundef %206) #8
  %208 = load double, ptr %207, align 8, !tbaa !31
  %209 = fsub double %204, %208
  %210 = load i32, ptr %29, align 4, !tbaa !9
  %211 = sext i32 %210 to i64
  %212 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt8valarrayIdEixEm(ptr noundef nonnull align 8 dereferenceable(16) %20, i64 noundef %211) #8
  %213 = load double, ptr %212, align 8, !tbaa !31
  %214 = fadd double %209, %213
  %215 = load i32, ptr %29, align 4, !tbaa !9
  %216 = sext i32 %215 to i64
  %217 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt8valarrayIdEixEm(ptr noundef nonnull align 8 dereferenceable(16) %28, i64 noundef %216) #8
  store double %214, ptr %217, align 8, !tbaa !31
  br label %232

218:                                              ; preds = %191
  %219 = landingpad { ptr, i32 }
          cleanup
  %220 = extractvalue { ptr, i32 } %219, 0
  store ptr %220, ptr %21, align 8
  %221 = extractvalue { ptr, i32 } %219, 1
  store i32 %221, ptr %22, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %29) #8
  br label %623

222:                                              ; preds = %198
  %223 = load i32, ptr %29, align 4, !tbaa !9
  %224 = sext i32 %223 to i64
  %225 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt8valarrayIdEixEm(ptr noundef nonnull align 8 dereferenceable(16) %20, i64 noundef %224) #8
  %226 = load double, ptr %225, align 8, !tbaa !31
  %227 = fcmp oeq double %226, 0x7FF0000000000000
  br i1 %227, label %228, label %229

228:                                              ; preds = %222
  br label %231

229:                                              ; preds = %222
  call void @__assert_fail(ptr noundef @.str.27, ptr noundef @.str.18, i32 noundef 310, ptr noundef @__PRETTY_FUNCTION__._ZNK3ipx5Model24EvaluateInteriorSolutionERKSt8valarrayIdES4_S4_S4_S4_S4_PNS_4InfoE) #9
  unreachable

230:                                              ; No predecessors!
  br label %231

231:                                              ; preds = %230, %228
  br label %232

232:                                              ; preds = %231, %199
  br label %233

233:                                              ; preds = %232
  %234 = load i32, ptr %29, align 4, !tbaa !9
  %235 = add nsw i32 %234, 1
  store i32 %235, ptr %29, align 4, !tbaa !9
  br label %153, !llvm.loop !32

236:                                              ; preds = %158
  call void @llvm.lifetime.start.p0(i64 16, ptr %30) #8
  %237 = getelementptr inbounds %"class.ipx::Model", ptr %48, i32 0, i32 15
  %238 = load i32, ptr %237, align 8, !tbaa !11
  %239 = sext i32 %238 to i64
  invoke void @_ZNSt8valarrayIdEC2Em(ptr noundef nonnull align 8 dereferenceable(16) %30, i64 noundef %239)
          to label %240 unwind label %247

240:                                              ; preds = %236
  call void @llvm.lifetime.start.p0(i64 4, ptr %31) #8
  store i32 0, ptr %31, align 4, !tbaa !9
  br label %241

241:                                              ; preds = %293, %240
  %242 = load i32, ptr %31, align 4, !tbaa !9
  %243 = getelementptr inbounds %"class.ipx::Model", ptr %48, i32 0, i32 15
  %244 = load i32, ptr %243, align 8, !tbaa !11
  %245 = icmp slt i32 %242, %244
  br i1 %245, label %251, label %246

246:                                              ; preds = %241
  call void @llvm.lifetime.end.p0(i64 4, ptr %31) #8
  br label %296

247:                                              ; preds = %236
  %248 = landingpad { ptr, i32 }
          cleanup
  %249 = extractvalue { ptr, i32 } %248, 0
  store ptr %249, ptr %21, align 8
  %250 = extractvalue { ptr, i32 } %248, 1
  store i32 %250, ptr %22, align 4
  br label %622

251:                                              ; preds = %241
  %252 = getelementptr inbounds %"class.ipx::Model", ptr %48, i32 0, i32 26
  %253 = load i32, ptr %31, align 4, !tbaa !9
  %254 = sext i32 %253 to i64
  %255 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNKSt8valarrayIdEixEm(ptr noundef nonnull align 8 dereferenceable(16) %252, i64 noundef %254) #8
  %256 = load double, ptr %255, align 8, !tbaa !31
  %257 = invoke noundef zeroext i1 @_ZSt8isfinited(double noundef %256)
          to label %258 unwind label %278

258:                                              ; preds = %251
  br i1 %257, label %259, label %282

259:                                              ; preds = %258
  %260 = getelementptr inbounds %"class.ipx::Model", ptr %48, i32 0, i32 26
  %261 = load i32, ptr %31, align 4, !tbaa !9
  %262 = sext i32 %261 to i64
  %263 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNKSt8valarrayIdEixEm(ptr noundef nonnull align 8 dereferenceable(16) %260, i64 noundef %262) #8
  %264 = load double, ptr %263, align 8, !tbaa !31
  %265 = load i32, ptr %31, align 4, !tbaa !9
  %266 = sext i32 %265 to i64
  %267 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt8valarrayIdEixEm(ptr noundef nonnull align 8 dereferenceable(16) %19, i64 noundef %266) #8
  %268 = load double, ptr %267, align 8, !tbaa !31
  %269 = fsub double %264, %268
  %270 = load i32, ptr %31, align 4, !tbaa !9
  %271 = sext i32 %270 to i64
  %272 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt8valarrayIdEixEm(ptr noundef nonnull align 8 dereferenceable(16) %23, i64 noundef %271) #8
  %273 = load double, ptr %272, align 8, !tbaa !31
  %274 = fsub double %269, %273
  %275 = load i32, ptr %31, align 4, !tbaa !9
  %276 = sext i32 %275 to i64
  %277 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt8valarrayIdEixEm(ptr noundef nonnull align 8 dereferenceable(16) %30, i64 noundef %276) #8
  store double %274, ptr %277, align 8, !tbaa !31
  br label %292

278:                                              ; preds = %251
  %279 = landingpad { ptr, i32 }
          cleanup
  %280 = extractvalue { ptr, i32 } %279, 0
  store ptr %280, ptr %21, align 8
  %281 = extractvalue { ptr, i32 } %279, 1
  store i32 %281, ptr %22, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %31) #8
  br label %621

282:                                              ; preds = %258
  %283 = load i32, ptr %31, align 4, !tbaa !9
  %284 = sext i32 %283 to i64
  %285 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt8valarrayIdEixEm(ptr noundef nonnull align 8 dereferenceable(16) %23, i64 noundef %284) #8
  %286 = load double, ptr %285, align 8, !tbaa !31
  %287 = fcmp oeq double %286, 0x7FF0000000000000
  br i1 %287, label %288, label %289

288:                                              ; preds = %282
  br label %291

289:                                              ; preds = %282
  call void @__assert_fail(ptr noundef @.str.28, ptr noundef @.str.18, i32 noundef 318, ptr noundef @__PRETTY_FUNCTION__._ZNK3ipx5Model24EvaluateInteriorSolutionERKSt8valarrayIdES4_S4_S4_S4_S4_PNS_4InfoE) #9
  unreachable

290:                                              ; No predecessors!
  br label %291

291:                                              ; preds = %290, %288
  br label %292

292:                                              ; preds = %291, %259
  br label %293

293:                                              ; preds = %292
  %294 = load i32, ptr %31, align 4, !tbaa !9
  %295 = add nsw i32 %294, 1
  store i32 %295, ptr %31, align 4, !tbaa !9
  br label %241, !llvm.loop !34

296:                                              ; preds = %246
  call void @llvm.lifetime.start.p0(i64 16, ptr %32) #8
  %297 = getelementptr inbounds %"class.ipx::Model", ptr %48, i32 0, i32 13
  %298 = load i32, ptr %297, align 8, !tbaa !30
  %299 = sext i32 %298 to i64
  invoke void @_ZNSt8valarrayIdEC2Em(ptr noundef nonnull align 8 dereferenceable(16) %32, i64 noundef %299)
          to label %300 unwind label %358

300:                                              ; preds = %296
  invoke void @_ZNK3ipx5Model24MultiplyWithScaledMatrixERKSt8valarrayIdEdRS2_c(ptr noundef nonnull align 8 dereferenceable(704) %48, ptr noundef nonnull align 8 dereferenceable(16) %19, double noundef -1.000000e+00, ptr noundef nonnull align 8 dereferenceable(16) %32, i8 noundef signext 78)
          to label %301 unwind label %362

301:                                              ; preds = %300
  %302 = invoke noundef nonnull align 8 dereferenceable(16) ptr @_ZNSt8valarrayIdEmIERKS0_(ptr noundef nonnull align 8 dereferenceable(16) %32, ptr noundef nonnull align 8 dereferenceable(16) %24)
          to label %303 unwind label %362

303:                                              ; preds = %301
  %304 = getelementptr inbounds %"class.ipx::Model", ptr %48, i32 0, i32 24
  %305 = invoke noundef nonnull align 8 dereferenceable(16) ptr @_ZNSt8valarrayIdEpLERKS0_(ptr noundef nonnull align 8 dereferenceable(16) %32, ptr noundef nonnull align 8 dereferenceable(16) %304)
          to label %306 unwind label %362

306:                                              ; preds = %303
  call void @llvm.lifetime.start.p0(i64 16, ptr %33) #8
  %307 = getelementptr inbounds %"class.ipx::Model", ptr %48, i32 0, i32 15
  %308 = load i32, ptr %307, align 8, !tbaa !11
  %309 = sext i32 %308 to i64
  invoke void @_ZNSt8valarrayIdEC2Em(ptr noundef nonnull align 8 dereferenceable(16) %33, i64 noundef %309)
          to label %310 unwind label %366

310:                                              ; preds = %306
  invoke void @_ZNK3ipx5Model24MultiplyWithScaledMatrixERKSt8valarrayIdEdRS2_c(ptr noundef nonnull align 8 dereferenceable(704) %48, ptr noundef nonnull align 8 dereferenceable(16) %25, double noundef -1.000000e+00, ptr noundef nonnull align 8 dereferenceable(16) %33, i8 noundef signext 84)
          to label %311 unwind label %370

311:                                              ; preds = %310
  call void @llvm.lifetime.start.p0(i64 16, ptr %34) #8
  %312 = invoke { ptr, ptr } @_ZStmiIdESt5_ExprINSt8__detail8_BinClosISt7__minusSt9_ValArrayS4_T_S5_EENSt5__funIS3_S5_E11result_typeEERKSt8valarrayIS5_ESE_(ptr noundef nonnull align 8 dereferenceable(16) %26, ptr noundef nonnull align 8 dereferenceable(16) %27)
          to label %313 unwind label %374

313:                                              ; preds = %311
  %314 = getelementptr inbounds %"class.std::_Expr", ptr %34, i32 0, i32 0
  %315 = getelementptr inbounds %"struct.std::__detail::_BinClos", ptr %314, i32 0, i32 0
  %316 = getelementptr inbounds { ptr, ptr }, ptr %315, i32 0, i32 0
  %317 = extractvalue { ptr, ptr } %312, 0
  store ptr %317, ptr %316, align 8
  %318 = getelementptr inbounds { ptr, ptr }, ptr %315, i32 0, i32 1
  %319 = extractvalue { ptr, ptr } %312, 1
  store ptr %319, ptr %318, align 8
  %320 = invoke noundef nonnull align 8 dereferenceable(16) ptr @_ZNSt8valarrayIdEmIINSt8__detail8_BinClosISt7__minusSt9_ValArrayS5_ddEEEERS0_RKSt5_ExprIT_dE(ptr noundef nonnull align 8 dereferenceable(16) %33, ptr noundef nonnull align 8 dereferenceable(16) %34)
          to label %321 unwind label %374

321:                                              ; preds = %313
  call void @llvm.lifetime.end.p0(i64 16, ptr %34) #8
  %322 = getelementptr inbounds %"class.ipx::Model", ptr %48, i32 0, i32 23
  %323 = invoke noundef nonnull align 8 dereferenceable(16) ptr @_ZNSt8valarrayIdEpLERKS0_(ptr noundef nonnull align 8 dereferenceable(16) %33, ptr noundef nonnull align 8 dereferenceable(16) %322)
          to label %324 unwind label %370

324:                                              ; preds = %321
  invoke void @_ZNK3ipx5Model18ScaleBackResidualsERSt8valarrayIdES3_S3_S3_(ptr noundef nonnull align 8 dereferenceable(704) %48, ptr noundef nonnull align 8 dereferenceable(16) %32, ptr noundef nonnull align 8 dereferenceable(16) %33, ptr noundef nonnull align 8 dereferenceable(16) %28, ptr noundef nonnull align 8 dereferenceable(16) %30)
          to label %325 unwind label %370

325:                                              ; preds = %324
  call void @llvm.lifetime.start.p0(i64 8, ptr %35) #8
  %326 = invoke noundef double @_ZN3ipx7InfnormERKSt8valarrayIdE(ptr noundef nonnull align 8 dereferenceable(16) %32)
          to label %327 unwind label %378

327:                                              ; preds = %325
  store double %326, ptr %35, align 8, !tbaa !31
  call void @llvm.lifetime.start.p0(i64 8, ptr %36) #8
  %328 = invoke noundef double @_ZN3ipx7InfnormERKSt8valarrayIdE(ptr noundef nonnull align 8 dereferenceable(16) %28)
          to label %329 unwind label %382

329:                                              ; preds = %327
  store double %328, ptr %36, align 8, !tbaa !31
  %330 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZSt3maxIdERKT_S2_S2_(ptr noundef nonnull align 8 dereferenceable(8) %35, ptr noundef nonnull align 8 dereferenceable(8) %36)
          to label %331 unwind label %382

331:                                              ; preds = %329
  %332 = load double, ptr %330, align 8, !tbaa !31
  store double %332, ptr %35, align 8, !tbaa !31
  call void @llvm.lifetime.end.p0(i64 8, ptr %36) #8
  call void @llvm.lifetime.start.p0(i64 8, ptr %37) #8
  %333 = invoke noundef double @_ZN3ipx7InfnormERKSt8valarrayIdE(ptr noundef nonnull align 8 dereferenceable(16) %30)
          to label %334 unwind label %386

334:                                              ; preds = %331
  store double %333, ptr %37, align 8, !tbaa !31
  %335 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZSt3maxIdERKT_S2_S2_(ptr noundef nonnull align 8 dereferenceable(8) %35, ptr noundef nonnull align 8 dereferenceable(8) %37)
          to label %336 unwind label %386

336:                                              ; preds = %334
  %337 = load double, ptr %335, align 8, !tbaa !31
  store double %337, ptr %35, align 8, !tbaa !31
  call void @llvm.lifetime.end.p0(i64 8, ptr %37) #8
  call void @llvm.lifetime.start.p0(i64 8, ptr %38) #8
  %338 = invoke noundef double @_ZN3ipx7InfnormERKSt8valarrayIdE(ptr noundef nonnull align 8 dereferenceable(16) %33)
          to label %339 unwind label %390

339:                                              ; preds = %336
  store double %338, ptr %38, align 8, !tbaa !31
  call void @llvm.lifetime.start.p0(i64 8, ptr %39) #8
  %340 = getelementptr inbounds %"class.ipx::Model", ptr %48, i32 0, i32 22
  %341 = load double, ptr %340, align 8, !tbaa !35
  %342 = getelementptr inbounds %"class.ipx::Model", ptr %48, i32 0, i32 23
  %343 = invoke noundef double @_ZN3ipx3DotERKSt8valarrayIdES3_(ptr noundef nonnull align 8 dereferenceable(16) %342, ptr noundef nonnull align 8 dereferenceable(16) %19)
          to label %344 unwind label %394

344:                                              ; preds = %339
  %345 = fadd double %341, %343
  store double %345, ptr %39, align 8, !tbaa !31
  call void @llvm.lifetime.start.p0(i64 8, ptr %40) #8
  %346 = getelementptr inbounds %"class.ipx::Model", ptr %48, i32 0, i32 22
  %347 = load double, ptr %346, align 8, !tbaa !35
  %348 = getelementptr inbounds %"class.ipx::Model", ptr %48, i32 0, i32 24
  %349 = invoke noundef double @_ZN3ipx3DotERKSt8valarrayIdES3_(ptr noundef nonnull align 8 dereferenceable(16) %348, ptr noundef nonnull align 8 dereferenceable(16) %25)
          to label %350 unwind label %398

350:                                              ; preds = %344
  %351 = fadd double %347, %349
  store double %351, ptr %40, align 8, !tbaa !31
  call void @llvm.lifetime.start.p0(i64 4, ptr %41) #8
  store i32 0, ptr %41, align 4, !tbaa !9
  br label %352

352:                                              ; preds = %448, %350
  %353 = load i32, ptr %41, align 4, !tbaa !9
  %354 = getelementptr inbounds %"class.ipx::Model", ptr %48, i32 0, i32 15
  %355 = load i32, ptr %354, align 8, !tbaa !11
  %356 = icmp slt i32 %353, %355
  br i1 %356, label %402, label %357

357:                                              ; preds = %352
  call void @llvm.lifetime.end.p0(i64 4, ptr %41) #8
  br label %451

358:                                              ; preds = %296
  %359 = landingpad { ptr, i32 }
          cleanup
  %360 = extractvalue { ptr, i32 } %359, 0
  store ptr %360, ptr %21, align 8
  %361 = extractvalue { ptr, i32 } %359, 1
  store i32 %361, ptr %22, align 4
  br label %620

362:                                              ; preds = %303, %301, %300
  %363 = landingpad { ptr, i32 }
          cleanup
  %364 = extractvalue { ptr, i32 } %363, 0
  store ptr %364, ptr %21, align 8
  %365 = extractvalue { ptr, i32 } %363, 1
  store i32 %365, ptr %22, align 4
  br label %619

366:                                              ; preds = %306
  %367 = landingpad { ptr, i32 }
          cleanup
  %368 = extractvalue { ptr, i32 } %367, 0
  store ptr %368, ptr %21, align 8
  %369 = extractvalue { ptr, i32 } %367, 1
  store i32 %369, ptr %22, align 4
  br label %618

370:                                              ; preds = %324, %321, %310
  %371 = landingpad { ptr, i32 }
          cleanup
  %372 = extractvalue { ptr, i32 } %371, 0
  store ptr %372, ptr %21, align 8
  %373 = extractvalue { ptr, i32 } %371, 1
  store i32 %373, ptr %22, align 4
  br label %617

374:                                              ; preds = %313, %311
  %375 = landingpad { ptr, i32 }
          cleanup
  %376 = extractvalue { ptr, i32 } %375, 0
  store ptr %376, ptr %21, align 8
  %377 = extractvalue { ptr, i32 } %375, 1
  store i32 %377, ptr %22, align 4
  call void @llvm.lifetime.end.p0(i64 16, ptr %34) #8
  br label %617

378:                                              ; preds = %325
  %379 = landingpad { ptr, i32 }
          cleanup
  %380 = extractvalue { ptr, i32 } %379, 0
  store ptr %380, ptr %21, align 8
  %381 = extractvalue { ptr, i32 } %379, 1
  store i32 %381, ptr %22, align 4
  br label %616

382:                                              ; preds = %329, %327
  %383 = landingpad { ptr, i32 }
          cleanup
  %384 = extractvalue { ptr, i32 } %383, 0
  store ptr %384, ptr %21, align 8
  %385 = extractvalue { ptr, i32 } %383, 1
  store i32 %385, ptr %22, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %36) #8
  br label %616

386:                                              ; preds = %334, %331
  %387 = landingpad { ptr, i32 }
          cleanup
  %388 = extractvalue { ptr, i32 } %387, 0
  store ptr %388, ptr %21, align 8
  %389 = extractvalue { ptr, i32 } %387, 1
  store i32 %389, ptr %22, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %37) #8
  br label %616

390:                                              ; preds = %336
  %391 = landingpad { ptr, i32 }
          cleanup
  %392 = extractvalue { ptr, i32 } %391, 0
  store ptr %392, ptr %21, align 8
  %393 = extractvalue { ptr, i32 } %391, 1
  store i32 %393, ptr %22, align 4
  br label %615

394:                                              ; preds = %339
  %395 = landingpad { ptr, i32 }
          cleanup
  %396 = extractvalue { ptr, i32 } %395, 0
  store ptr %396, ptr %21, align 8
  %397 = extractvalue { ptr, i32 } %395, 1
  store i32 %397, ptr %22, align 4
  br label %614

398:                                              ; preds = %451, %344
  %399 = landingpad { ptr, i32 }
          cleanup
  %400 = extractvalue { ptr, i32 } %399, 0
  store ptr %400, ptr %21, align 8
  %401 = extractvalue { ptr, i32 } %399, 1
  store i32 %401, ptr %22, align 4
  br label %613

402:                                              ; preds = %352
  %403 = getelementptr inbounds %"class.ipx::Model", ptr %48, i32 0, i32 25
  %404 = load i32, ptr %41, align 4, !tbaa !9
  %405 = sext i32 %404 to i64
  %406 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNKSt8valarrayIdEixEm(ptr noundef nonnull align 8 dereferenceable(16) %403, i64 noundef %405) #8
  %407 = load double, ptr %406, align 8, !tbaa !31
  %408 = invoke noundef zeroext i1 @_ZSt8isfinited(double noundef %407)
          to label %409 unwind label %422

409:                                              ; preds = %402
  br i1 %408, label %410, label %426

410:                                              ; preds = %409
  %411 = getelementptr inbounds %"class.ipx::Model", ptr %48, i32 0, i32 25
  %412 = load i32, ptr %41, align 4, !tbaa !9
  %413 = sext i32 %412 to i64
  %414 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNKSt8valarrayIdEixEm(ptr noundef nonnull align 8 dereferenceable(16) %411, i64 noundef %413) #8
  %415 = load double, ptr %414, align 8, !tbaa !31
  %416 = load i32, ptr %41, align 4, !tbaa !9
  %417 = sext i32 %416 to i64
  %418 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt8valarrayIdEixEm(ptr noundef nonnull align 8 dereferenceable(16) %26, i64 noundef %417) #8
  %419 = load double, ptr %418, align 8, !tbaa !31
  %420 = load double, ptr %40, align 8, !tbaa !31
  %421 = call double @llvm.fmuladd.f64(double %415, double %419, double %420)
  store double %421, ptr %40, align 8, !tbaa !31
  br label %426

422:                                              ; preds = %426, %402
  %423 = landingpad { ptr, i32 }
          cleanup
  %424 = extractvalue { ptr, i32 } %423, 0
  store ptr %424, ptr %21, align 8
  %425 = extractvalue { ptr, i32 } %423, 1
  store i32 %425, ptr %22, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %41) #8
  br label %613

426:                                              ; preds = %410, %409
  %427 = getelementptr inbounds %"class.ipx::Model", ptr %48, i32 0, i32 26
  %428 = load i32, ptr %41, align 4, !tbaa !9
  %429 = sext i32 %428 to i64
  %430 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNKSt8valarrayIdEixEm(ptr noundef nonnull align 8 dereferenceable(16) %427, i64 noundef %429) #8
  %431 = load double, ptr %430, align 8, !tbaa !31
  %432 = invoke noundef zeroext i1 @_ZSt8isfinited(double noundef %431)
          to label %433 unwind label %422

433:                                              ; preds = %426
  br i1 %432, label %434, label %447

434:                                              ; preds = %433
  %435 = getelementptr inbounds %"class.ipx::Model", ptr %48, i32 0, i32 26
  %436 = load i32, ptr %41, align 4, !tbaa !9
  %437 = sext i32 %436 to i64
  %438 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNKSt8valarrayIdEixEm(ptr noundef nonnull align 8 dereferenceable(16) %435, i64 noundef %437) #8
  %439 = load double, ptr %438, align 8, !tbaa !31
  %440 = load i32, ptr %41, align 4, !tbaa !9
  %441 = sext i32 %440 to i64
  %442 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt8valarrayIdEixEm(ptr noundef nonnull align 8 dereferenceable(16) %27, i64 noundef %441) #8
  %443 = load double, ptr %442, align 8, !tbaa !31
  %444 = load double, ptr %40, align 8, !tbaa !31
  %445 = fneg double %439
  %446 = call double @llvm.fmuladd.f64(double %445, double %443, double %444)
  store double %446, ptr %40, align 8, !tbaa !31
  br label %447

447:                                              ; preds = %434, %433
  br label %448

448:                                              ; preds = %447
  %449 = load i32, ptr %41, align 4, !tbaa !9
  %450 = add nsw i32 %449, 1
  store i32 %450, ptr %41, align 4, !tbaa !9
  br label %352, !llvm.loop !36

451:                                              ; preds = %357
  %452 = load double, ptr %40, align 8, !tbaa !31
  %453 = invoke noundef zeroext i1 @_ZSt8isfinited(double noundef %452)
          to label %454 unwind label %398

454:                                              ; preds = %451
  br i1 %453, label %455, label %456

455:                                              ; preds = %454
  br label %458

456:                                              ; preds = %454
  call void @__assert_fail(ptr noundef @.str.29, ptr noundef @.str.18, i32 noundef 347, ptr noundef @__PRETTY_FUNCTION__._ZNK3ipx5Model24EvaluateInteriorSolutionERKSt8valarrayIdES4_S4_S4_S4_S4_PNS_4InfoE) #9
  unreachable

457:                                              ; No predecessors!
  br label %458

458:                                              ; preds = %457, %455
  call void @llvm.lifetime.start.p0(i64 8, ptr %42) #8
  %459 = load double, ptr %39, align 8, !tbaa !31
  %460 = load double, ptr %40, align 8, !tbaa !31
  %461 = fsub double %459, %460
  %462 = load double, ptr %39, align 8, !tbaa !31
  %463 = load double, ptr %40, align 8, !tbaa !31
  %464 = fadd double %462, %463
  %465 = invoke noundef double @_ZSt3absd(double noundef %464)
          to label %466 unwind label %475

466:                                              ; preds = %458
  %467 = call double @llvm.fmuladd.f64(double 5.000000e-01, double %465, double 1.000000e+00)
  %468 = fdiv double %461, %467
  store double %468, ptr %42, align 8, !tbaa !31
  call void @llvm.lifetime.start.p0(i64 8, ptr %43) #8
  store double 0.000000e+00, ptr %43, align 8, !tbaa !31
  call void @llvm.lifetime.start.p0(i64 4, ptr %44) #8
  store i32 0, ptr %44, align 4, !tbaa !9
  br label %469

469:                                              ; preds = %522, %466
  %470 = load i32, ptr %44, align 4, !tbaa !9
  %471 = getelementptr inbounds %"class.ipx::Model", ptr %48, i32 0, i32 15
  %472 = load i32, ptr %471, align 8, !tbaa !11
  %473 = icmp slt i32 %470, %472
  br i1 %473, label %479, label %474

474:                                              ; preds = %469
  call void @llvm.lifetime.end.p0(i64 4, ptr %44) #8
  br label %525

475:                                              ; preds = %458
  %476 = landingpad { ptr, i32 }
          cleanup
  %477 = extractvalue { ptr, i32 } %476, 0
  store ptr %477, ptr %21, align 8
  %478 = extractvalue { ptr, i32 } %476, 1
  store i32 %478, ptr %22, align 4
  br label %612

479:                                              ; preds = %469
  %480 = getelementptr inbounds %"class.ipx::Model", ptr %48, i32 0, i32 25
  %481 = load i32, ptr %44, align 4, !tbaa !9
  %482 = sext i32 %481 to i64
  %483 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNKSt8valarrayIdEixEm(ptr noundef nonnull align 8 dereferenceable(16) %480, i64 noundef %482) #8
  %484 = load double, ptr %483, align 8, !tbaa !31
  %485 = invoke noundef zeroext i1 @_ZSt8isfinited(double noundef %484)
          to label %486 unwind label %498

486:                                              ; preds = %479
  br i1 %485, label %487, label %502

487:                                              ; preds = %486
  %488 = load i32, ptr %44, align 4, !tbaa !9
  %489 = sext i32 %488 to i64
  %490 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt8valarrayIdEixEm(ptr noundef nonnull align 8 dereferenceable(16) %20, i64 noundef %489) #8
  %491 = load double, ptr %490, align 8, !tbaa !31
  %492 = load i32, ptr %44, align 4, !tbaa !9
  %493 = sext i32 %492 to i64
  %494 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt8valarrayIdEixEm(ptr noundef nonnull align 8 dereferenceable(16) %26, i64 noundef %493) #8
  %495 = load double, ptr %494, align 8, !tbaa !31
  %496 = load double, ptr %43, align 8, !tbaa !31
  %497 = call double @llvm.fmuladd.f64(double %491, double %495, double %496)
  store double %497, ptr %43, align 8, !tbaa !31
  br label %502

498:                                              ; preds = %502, %479
  %499 = landingpad { ptr, i32 }
          cleanup
  %500 = extractvalue { ptr, i32 } %499, 0
  store ptr %500, ptr %21, align 8
  %501 = extractvalue { ptr, i32 } %499, 1
  store i32 %501, ptr %22, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %44) #8
  br label %611

502:                                              ; preds = %487, %486
  %503 = getelementptr inbounds %"class.ipx::Model", ptr %48, i32 0, i32 26
  %504 = load i32, ptr %44, align 4, !tbaa !9
  %505 = sext i32 %504 to i64
  %506 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNKSt8valarrayIdEixEm(ptr noundef nonnull align 8 dereferenceable(16) %503, i64 noundef %505) #8
  %507 = load double, ptr %506, align 8, !tbaa !31
  %508 = invoke noundef zeroext i1 @_ZSt8isfinited(double noundef %507)
          to label %509 unwind label %498

509:                                              ; preds = %502
  br i1 %508, label %510, label %521

510:                                              ; preds = %509
  %511 = load i32, ptr %44, align 4, !tbaa !9
  %512 = sext i32 %511 to i64
  %513 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt8valarrayIdEixEm(ptr noundef nonnull align 8 dereferenceable(16) %23, i64 noundef %512) #8
  %514 = load double, ptr %513, align 8, !tbaa !31
  %515 = load i32, ptr %44, align 4, !tbaa !9
  %516 = sext i32 %515 to i64
  %517 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt8valarrayIdEixEm(ptr noundef nonnull align 8 dereferenceable(16) %27, i64 noundef %516) #8
  %518 = load double, ptr %517, align 8, !tbaa !31
  %519 = load double, ptr %43, align 8, !tbaa !31
  %520 = call double @llvm.fmuladd.f64(double %514, double %518, double %519)
  store double %520, ptr %43, align 8, !tbaa !31
  br label %521

521:                                              ; preds = %510, %509
  br label %522

522:                                              ; preds = %521
  %523 = load i32, ptr %44, align 4, !tbaa !9
  %524 = add nsw i32 %523, 1
  store i32 %524, ptr %44, align 4, !tbaa !9
  br label %469, !llvm.loop !37

525:                                              ; preds = %474
  call void @llvm.lifetime.start.p0(i64 4, ptr %45) #8
  store i32 0, ptr %45, align 4, !tbaa !9
  br label %526

526:                                              ; preds = %544, %525
  %527 = load i32, ptr %45, align 4, !tbaa !9
  %528 = getelementptr inbounds %"class.ipx::Model", ptr %48, i32 0, i32 13
  %529 = load i32, ptr %528, align 8, !tbaa !30
  %530 = icmp slt i32 %527, %529
  br i1 %530, label %532, label %531

531:                                              ; preds = %526
  call void @llvm.lifetime.end.p0(i64 4, ptr %45) #8
  br label %547

532:                                              ; preds = %526
  %533 = load i32, ptr %45, align 4, !tbaa !9
  %534 = sext i32 %533 to i64
  %535 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt8valarrayIdEixEm(ptr noundef nonnull align 8 dereferenceable(16) %25, i64 noundef %534) #8
  %536 = load double, ptr %535, align 8, !tbaa !31
  %537 = load i32, ptr %45, align 4, !tbaa !9
  %538 = sext i32 %537 to i64
  %539 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt8valarrayIdEixEm(ptr noundef nonnull align 8 dereferenceable(16) %24, i64 noundef %538) #8
  %540 = load double, ptr %539, align 8, !tbaa !31
  %541 = load double, ptr %43, align 8, !tbaa !31
  %542 = fneg double %536
  %543 = call double @llvm.fmuladd.f64(double %542, double %540, double %541)
  store double %543, ptr %43, align 8, !tbaa !31
  br label %544

544:                                              ; preds = %532
  %545 = load i32, ptr %45, align 4, !tbaa !9
  %546 = add nsw i32 %545, 1
  store i32 %546, ptr %45, align 4, !tbaa !9
  br label %526, !llvm.loop !38

547:                                              ; preds = %531
  invoke void @_ZNK3ipx5Model25ScaleBackInteriorSolutionERSt8valarrayIdES3_S3_S3_S3_S3_S3_(ptr noundef nonnull align 8 dereferenceable(704) %48, ptr noundef nonnull align 8 dereferenceable(16) %19, ptr noundef nonnull align 8 dereferenceable(16) %20, ptr noundef nonnull align 8 dereferenceable(16) %23, ptr noundef nonnull align 8 dereferenceable(16) %24, ptr noundef nonnull align 8 dereferenceable(16) %25, ptr noundef nonnull align 8 dereferenceable(16) %26, ptr noundef nonnull align 8 dereferenceable(16) %27)
          to label %548 unwind label %598

548:                                              ; preds = %547
  %549 = load double, ptr %35, align 8, !tbaa !31
  %550 = load ptr, ptr %16, align 8, !tbaa !5
  %551 = getelementptr inbounds %struct.ipx_info, ptr %550, i32 0, i32 20
  store double %549, ptr %551, align 8, !tbaa !39
  %552 = load double, ptr %38, align 8, !tbaa !31
  %553 = load ptr, ptr %16, align 8, !tbaa !5
  %554 = getelementptr inbounds %struct.ipx_info, ptr %553, i32 0, i32 21
  store double %552, ptr %554, align 8, !tbaa !41
  %555 = load double, ptr %35, align 8, !tbaa !31
  %556 = getelementptr inbounds %"class.ipx::Model", ptr %48, i32 0, i32 21
  %557 = load double, ptr %556, align 8, !tbaa !42
  %558 = fadd double 1.000000e+00, %557
  %559 = fdiv double %555, %558
  %560 = load ptr, ptr %16, align 8, !tbaa !5
  %561 = getelementptr inbounds %struct.ipx_info, ptr %560, i32 0, i32 22
  store double %559, ptr %561, align 8, !tbaa !43
  %562 = load double, ptr %38, align 8, !tbaa !31
  %563 = getelementptr inbounds %"class.ipx::Model", ptr %48, i32 0, i32 20
  %564 = load double, ptr %563, align 8, !tbaa !44
  %565 = fadd double 1.000000e+00, %564
  %566 = fdiv double %562, %565
  %567 = load ptr, ptr %16, align 8, !tbaa !5
  %568 = getelementptr inbounds %struct.ipx_info, ptr %567, i32 0, i32 23
  store double %566, ptr %568, align 8, !tbaa !45
  %569 = load double, ptr %39, align 8, !tbaa !31
  %570 = load ptr, ptr %16, align 8, !tbaa !5
  %571 = getelementptr inbounds %struct.ipx_info, ptr %570, i32 0, i32 24
  store double %569, ptr %571, align 8, !tbaa !46
  %572 = load double, ptr %40, align 8, !tbaa !31
  %573 = load ptr, ptr %16, align 8, !tbaa !5
  %574 = getelementptr inbounds %struct.ipx_info, ptr %573, i32 0, i32 25
  store double %572, ptr %574, align 8, !tbaa !47
  %575 = load double, ptr %42, align 8, !tbaa !31
  %576 = load ptr, ptr %16, align 8, !tbaa !5
  %577 = getelementptr inbounds %struct.ipx_info, ptr %576, i32 0, i32 26
  store double %575, ptr %577, align 8, !tbaa !48
  %578 = load double, ptr %43, align 8, !tbaa !31
  %579 = load ptr, ptr %16, align 8, !tbaa !5
  %580 = getelementptr inbounds %struct.ipx_info, ptr %579, i32 0, i32 27
  store double %578, ptr %580, align 8, !tbaa !49
  %581 = invoke noundef double @_ZN3ipx7InfnormERKSt8valarrayIdE(ptr noundef nonnull align 8 dereferenceable(16) %19)
          to label %582 unwind label %598

582:                                              ; preds = %548
  %583 = load ptr, ptr %16, align 8, !tbaa !5
  %584 = getelementptr inbounds %struct.ipx_info, ptr %583, i32 0, i32 28
  store double %581, ptr %584, align 8, !tbaa !50
  %585 = invoke noundef double @_ZN3ipx7InfnormERKSt8valarrayIdE(ptr noundef nonnull align 8 dereferenceable(16) %25)
          to label %586 unwind label %598

586:                                              ; preds = %582
  %587 = load ptr, ptr %16, align 8, !tbaa !5
  %588 = getelementptr inbounds %struct.ipx_info, ptr %587, i32 0, i32 29
  store double %585, ptr %588, align 8, !tbaa !51
  call void @llvm.lifetime.start.p0(i64 8, ptr %46) #8
  %589 = invoke noundef double @_ZN3ipx7InfnormERKSt8valarrayIdE(ptr noundef nonnull align 8 dereferenceable(16) %26)
          to label %590 unwind label %602

590:                                              ; preds = %586
  store double %589, ptr %46, align 8, !tbaa !31
  call void @llvm.lifetime.start.p0(i64 8, ptr %47) #8
  %591 = invoke noundef double @_ZN3ipx7InfnormERKSt8valarrayIdE(ptr noundef nonnull align 8 dereferenceable(16) %27)
          to label %592 unwind label %606

592:                                              ; preds = %590
  store double %591, ptr %47, align 8, !tbaa !31
  %593 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZSt3maxIdERKT_S2_S2_(ptr noundef nonnull align 8 dereferenceable(8) %46, ptr noundef nonnull align 8 dereferenceable(8) %47)
          to label %594 unwind label %606

594:                                              ; preds = %592
  %595 = load double, ptr %593, align 8, !tbaa !31
  %596 = load ptr, ptr %16, align 8, !tbaa !5
  %597 = getelementptr inbounds %struct.ipx_info, ptr %596, i32 0, i32 30
  store double %595, ptr %597, align 8, !tbaa !52
  call void @llvm.lifetime.end.p0(i64 8, ptr %47) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %46) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %43) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %42) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %40) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %39) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %38) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %35) #8
  call void @_ZNSt8valarrayIdED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %33) #8
  call void @llvm.lifetime.end.p0(i64 16, ptr %33) #8
  call void @_ZNSt8valarrayIdED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %32) #8
  call void @llvm.lifetime.end.p0(i64 16, ptr %32) #8
  call void @_ZNSt8valarrayIdED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %30) #8
  call void @llvm.lifetime.end.p0(i64 16, ptr %30) #8
  call void @_ZNSt8valarrayIdED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %28) #8
  call void @llvm.lifetime.end.p0(i64 16, ptr %28) #8
  call void @_ZNSt8valarrayIdED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %27) #8
  call void @llvm.lifetime.end.p0(i64 16, ptr %27) #8
  call void @_ZNSt8valarrayIdED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %26) #8
  call void @llvm.lifetime.end.p0(i64 16, ptr %26) #8
  call void @_ZNSt8valarrayIdED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %25) #8
  call void @llvm.lifetime.end.p0(i64 16, ptr %25) #8
  call void @_ZNSt8valarrayIdED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %24) #8
  call void @llvm.lifetime.end.p0(i64 16, ptr %24) #8
  call void @_ZNSt8valarrayIdED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %23) #8
  call void @llvm.lifetime.end.p0(i64 16, ptr %23) #8
  call void @_ZNSt8valarrayIdED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %20) #8
  call void @llvm.lifetime.end.p0(i64 16, ptr %20) #8
  call void @_ZNSt8valarrayIdED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %19) #8
  call void @llvm.lifetime.end.p0(i64 16, ptr %19) #8
  call void @llvm.lifetime.end.p0(i64 4, ptr %18) #8
  call void @llvm.lifetime.end.p0(i64 4, ptr %17) #8
  ret void

598:                                              ; preds = %582, %548, %547
  %599 = landingpad { ptr, i32 }
          cleanup
  %600 = extractvalue { ptr, i32 } %599, 0
  store ptr %600, ptr %21, align 8
  %601 = extractvalue { ptr, i32 } %599, 1
  store i32 %601, ptr %22, align 4
  br label %611

602:                                              ; preds = %586
  %603 = landingpad { ptr, i32 }
          cleanup
  %604 = extractvalue { ptr, i32 } %603, 0
  store ptr %604, ptr %21, align 8
  %605 = extractvalue { ptr, i32 } %603, 1
  store i32 %605, ptr %22, align 4
  br label %610

606:                                              ; preds = %592, %590
  %607 = landingpad { ptr, i32 }
          cleanup
  %608 = extractvalue { ptr, i32 } %607, 0
  store ptr %608, ptr %21, align 8
  %609 = extractvalue { ptr, i32 } %607, 1
  store i32 %609, ptr %22, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %47) #8
  br label %610

610:                                              ; preds = %606, %602
  call void @llvm.lifetime.end.p0(i64 8, ptr %46) #8
  br label %611

611:                                              ; preds = %610, %598, %498
  call void @llvm.lifetime.end.p0(i64 8, ptr %43) #8
  br label %612

612:                                              ; preds = %611, %475
  call void @llvm.lifetime.end.p0(i64 8, ptr %42) #8
  br label %613

613:                                              ; preds = %612, %422, %398
  call void @llvm.lifetime.end.p0(i64 8, ptr %40) #8
  br label %614

614:                                              ; preds = %613, %394
  call void @llvm.lifetime.end.p0(i64 8, ptr %39) #8
  br label %615

615:                                              ; preds = %614, %390
  call void @llvm.lifetime.end.p0(i64 8, ptr %38) #8
  br label %616

616:                                              ; preds = %615, %386, %382, %378
  call void @llvm.lifetime.end.p0(i64 8, ptr %35) #8
  br label %617

617:                                              ; preds = %616, %374, %370
  call void @_ZNSt8valarrayIdED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %33) #8
  br label %618

618:                                              ; preds = %617, %366
  call void @llvm.lifetime.end.p0(i64 16, ptr %33) #8
  br label %619

619:                                              ; preds = %618, %362
  call void @_ZNSt8valarrayIdED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %32) #8
  br label %620

620:                                              ; preds = %619, %358
  call void @llvm.lifetime.end.p0(i64 16, ptr %32) #8
  br label %621

621:                                              ; preds = %620, %278
  call void @_ZNSt8valarrayIdED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %30) #8
  br label %622

622:                                              ; preds = %621, %247
  call void @llvm.lifetime.end.p0(i64 16, ptr %30) #8
  br label %623

623:                                              ; preds = %622, %218
  call void @_ZNSt8valarrayIdED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %28) #8
  br label %624

624:                                              ; preds = %623, %187
  call void @llvm.lifetime.end.p0(i64 16, ptr %28) #8
  br label %625

625:                                              ; preds = %624, %183
  call void @_ZNSt8valarrayIdED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %27) #8
  br label %626

626:                                              ; preds = %625, %179
  call void @llvm.lifetime.end.p0(i64 16, ptr %27) #8
  call void @_ZNSt8valarrayIdED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %26) #8
  br label %627

627:                                              ; preds = %626, %175
  call void @llvm.lifetime.end.p0(i64 16, ptr %26) #8
  call void @_ZNSt8valarrayIdED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %25) #8
  br label %628

628:                                              ; preds = %627, %171
  call void @llvm.lifetime.end.p0(i64 16, ptr %25) #8
  call void @_ZNSt8valarrayIdED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %24) #8
  br label %629

629:                                              ; preds = %628, %167
  call void @llvm.lifetime.end.p0(i64 16, ptr %24) #8
  call void @_ZNSt8valarrayIdED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %23) #8
  br label %630

630:                                              ; preds = %629, %163
  call void @llvm.lifetime.end.p0(i64 16, ptr %23) #8
  call void @_ZNSt8valarrayIdED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %20) #8
  br label %631

631:                                              ; preds = %630, %159
  call void @llvm.lifetime.end.p0(i64 16, ptr %20) #8
  call void @_ZNSt8valarrayIdED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %19) #8
  call void @llvm.lifetime.end.p0(i64 16, ptr %19) #8
  call void @llvm.lifetime.end.p0(i64 4, ptr %18) #8
  call void @llvm.lifetime.end.p0(i64 4, ptr %17) #8
  br label %632

632:                                              ; preds = %631
  %633 = load ptr, ptr %21, align 8
  %634 = load i32, ptr %22, align 4
  %635 = insertvalue { ptr, i32 } poison, ptr %633, 0
  %636 = insertvalue { ptr, i32 } %635, i32 %634, 1
  resume { ptr, i32 } %636
}

; Function Attrs: mustprogress uwtable
declare dso_local void @_ZNK3ipx5Model24MultiplyWithScaledMatrixERKSt8valarrayIdEdRS2_c(ptr noundef nonnull align 8 dereferenceable(704), ptr noundef nonnull align 8 dereferenceable(16), double noundef, ptr noundef nonnull align 8 dereferenceable(16), i8 noundef signext) #6 align 2

; Function Attrs: inlinehint mustprogress uwtable
declare dso_local noundef nonnull align 8 dereferenceable(16) ptr @_ZNSt8valarrayIdEmIERKS0_(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 nonnull align 8 dereferenceable(16) ptr @_ZNSt8valarrayIdEpLERKS0_(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 { ptr, ptr } @_ZStmiIdESt5_ExprINSt8__detail8_BinClosISt7__minusSt9_ValArrayS4_T_S5_EENSt5__funIS3_S5_E11result_typeEERKSt8valarrayIS5_ESE_(ptr noundef nonnull align 8 dereferenceable(16), ptr noundef nonnull align 8 dereferenceable(16)) #5

; Function Attrs: inlinehint mustprogress uwtable
declare dso_local noundef nonnull align 8 dereferenceable(16) ptr @_ZNSt8valarrayIdEmIINSt8__detail8_BinClosISt7__minusSt9_ValArrayS5_ddEEEERS0_RKSt5_ExprIT_dE(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 @_ZNK3ipx5Model18ScaleBackResidualsERSt8valarrayIdES3_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)) #6 align 2

declare noundef double @_ZN3ipx3DotERKSt8valarrayIdES3_(ptr noundef nonnull align 8 dereferenceable(16), ptr noundef nonnull align 8 dereferenceable(16)) #2

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

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 = { "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 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 #5 = { 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 #6 = { 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 #7 = { nocallback nofree nosync nounwind speculatable willreturn memory(none) }
attributes #8 = { nounwind }
attributes #9 = { 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}
!31 = !{!25, !25, i64 0}
!32 = distinct !{!32, !33}
!33 = !{!"llvm.loop.mustprogress"}
!34 = distinct !{!34, !33}
!35 = !{!12, !25, i64 448}
!36 = distinct !{!36, !33}
!37 = distinct !{!37, !33}
!38 = distinct !{!38, !33}
!39 = !{!40, !25, i64 80}
!40 = !{!"_ZTS8ipx_info", !10, i64 0, !10, i64 4, !10, i64 8, !10, i64 12, !10, i64 16, !10, i64 20, !10, i64 24, !10, i64 28, !10, i64 32, !10, i64 36, !10, i64 40, !10, i64 44, !10, i64 48, !10, i64 52, !10, i64 56, !10, i64 60, !10, i64 64, !10, i64 68, !10, i64 72, !10, i64 76, !25, i64 80, !25, i64 88, !25, i64 96, !25, i64 104, !25, i64 112, !25, i64 120, !25, i64 128, !25, i64 136, !25, i64 144, !25, i64 152, !25, i64 160, !25, i64 168, !25, i64 176, !25, i64 184, !10, i64 192, !10, i64 196, !10, i64 200, !10, i64 204, !10, i64 208, !10, i64 212, !10, i64 216, !25, i64 224, !25, i64 232, !25, i64 240, !25, i64 248, !25, i64 256, !25, i64 264, !25, i64 272, !25, i64 280, !25, i64 288, !25, i64 296, !25, i64 304, !25, i64 312, !25, i64 320, !25, i64 328, !25, i64 336, !25, i64 344, !25, i64 352, !25, i64 360, !25, i64 368, !25, i64 376, !25, i64 384, !25, i64 392, !25, i64 400, !25, i64 408, !10, i64 416, !10, i64 420, !10, i64 424, !10, i64 428, !25, i64 432, !25, i64 440, !25, i64 448, !25, i64 456}
!41 = !{!40, !25, i64 88}
!42 = !{!12, !25, i64 440}
!43 = !{!40, !25, i64 96}
!44 = !{!12, !25, i64 432}
!45 = !{!40, !25, i64 104}
!46 = !{!40, !25, i64 112}
!47 = !{!40, !25, i64 120}
!48 = !{!40, !25, i64 128}
!49 = !{!40, !25, i64 136}
!50 = !{!40, !25, i64 144}
!51 = !{!40, !25, i64 152}
!52 = !{!40, !25, i64 160}


; 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 }
%"class.std::_Expr" = type { %"struct.std::__detail::_BinClos" }
%"struct.std::__detail::_BinClos" = type { %"class.std::__detail::_BinBase" }
%"class.std::__detail::_BinBase" = type { 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
@.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
@__PRETTY_FUNCTION__._ZNK3ipx5Model24EvaluateInteriorSolutionERKSt8valarrayIdES4_S4_S4_S4_S4_PNS_4InfoE = external hidden unnamed_addr constant [152 x i8], align 1
@.str.27 = external hidden unnamed_addr constant [18 x i8], align 1
@.str.28 = external hidden unnamed_addr constant [18 x i8], align 1
@.str.29 = external hidden unnamed_addr constant [26 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

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

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

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

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

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

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

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

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

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

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

; Function Attrs: mustprogress uwtable
define dso_local void @_ZNK3ipx5Model24EvaluateInteriorSolutionERKSt8valarrayIdES4_S4_S4_S4_S4_PNS_4InfoE(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 nocapture noundef writeonly %7) local_unnamed_addr #6 align 2 personality ptr @__gxx_personality_v0 {
  %9 = alloca %"class.std::valarray", align 8
  %10 = alloca %"class.std::valarray", align 8
  %11 = alloca %"class.std::valarray", align 8
  %12 = alloca %"class.std::valarray", align 8
  %13 = alloca %"class.std::valarray", align 8
  %14 = alloca %"class.std::valarray", align 8
  %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::_Expr", align 8
  %21 = alloca double, align 8
  %22 = alloca double, align 8
  %23 = alloca double, align 8
  %24 = alloca double, align 8
  %25 = alloca double, align 8
  %26 = tail call noundef i32 @_ZNK3ipx5Model4rowsEv(ptr noundef nonnull align 8 dereferenceable(704) %0)
  %27 = tail call noundef i32 @_ZNK3ipx5Model4colsEv(ptr noundef nonnull align 8 dereferenceable(704) %0)
  %28 = tail call noundef i64 @_ZNKSt8valarrayIdE4sizeEv(ptr noundef nonnull align 8 dereferenceable(16) %1)
  %29 = trunc i64 %28 to i32
  %30 = add nsw i32 %27, %26
  %31 = icmp eq i32 %30, %29
  br i1 %31, label %33, label %32

32:                                               ; preds = %8
  tail call void @__assert_fail(ptr noundef nonnull @.str.20, ptr noundef nonnull @.str.18, i32 noundef 284, ptr noundef nonnull @__PRETTY_FUNCTION__._ZNK3ipx5Model24EvaluateInteriorSolutionERKSt8valarrayIdES4_S4_S4_S4_S4_PNS_4InfoE) #8
  unreachable

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

37:                                               ; preds = %33
  tail call void @__assert_fail(ptr noundef nonnull @.str.23, ptr noundef nonnull @.str.18, i32 noundef 285, ptr noundef nonnull @__PRETTY_FUNCTION__._ZNK3ipx5Model24EvaluateInteriorSolutionERKSt8valarrayIdES4_S4_S4_S4_S4_PNS_4InfoE) #8
  unreachable

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

42:                                               ; preds = %38
  tail call void @__assert_fail(ptr noundef nonnull @.str.24, ptr noundef nonnull @.str.18, i32 noundef 286, ptr noundef nonnull @__PRETTY_FUNCTION__._ZNK3ipx5Model24EvaluateInteriorSolutionERKSt8valarrayIdES4_S4_S4_S4_S4_PNS_4InfoE) #8
  unreachable

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

47:                                               ; preds = %43
  tail call void @__assert_fail(ptr noundef nonnull @.str.21, ptr noundef nonnull @.str.18, i32 noundef 287, ptr noundef nonnull @__PRETTY_FUNCTION__._ZNK3ipx5Model24EvaluateInteriorSolutionERKSt8valarrayIdES4_S4_S4_S4_S4_PNS_4InfoE) #8
  unreachable

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

52:                                               ; preds = %48
  tail call void @__assert_fail(ptr noundef nonnull @.str.25, ptr noundef nonnull @.str.18, i32 noundef 288, ptr noundef nonnull @__PRETTY_FUNCTION__._ZNK3ipx5Model24EvaluateInteriorSolutionERKSt8valarrayIdES4_S4_S4_S4_S4_PNS_4InfoE) #8
  unreachable

53:                                               ; preds = %48
  %54 = tail call noundef i64 @_ZNKSt8valarrayIdE4sizeEv(ptr noundef nonnull align 8 dereferenceable(16) %6)
  %55 = trunc i64 %54 to i32
  %56 = icmp eq i32 %29, %55
  br i1 %56, label %58, label %57

57:                                               ; preds = %53
  tail call void @__assert_fail(ptr noundef nonnull @.str.26, ptr noundef nonnull @.str.18, i32 noundef 289, ptr noundef nonnull @__PRETTY_FUNCTION__._ZNK3ipx5Model24EvaluateInteriorSolutionERKSt8valarrayIdES4_S4_S4_S4_S4_PNS_4InfoE) #8
  unreachable

58:                                               ; preds = %53
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %9) #9
  %59 = getelementptr inbounds i8, ptr %0, i64 368
  %60 = load i32, ptr %59, align 8, !tbaa !5
  %61 = sext i32 %60 to i64
  call void @_ZNSt8valarrayIdEC2Em(ptr noundef nonnull align 8 dereferenceable(16) %9, i64 noundef %61)
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %10) #9
  %62 = load i32, ptr %59, align 8, !tbaa !5
  %63 = sext i32 %62 to i64
  invoke void @_ZNSt8valarrayIdEC2Em(ptr noundef nonnull align 8 dereferenceable(16) %10, i64 noundef %63)
          to label %64 unwind label %90

64:                                               ; preds = %58
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %11) #9
  %65 = load i32, ptr %59, align 8, !tbaa !5
  %66 = sext i32 %65 to i64
  invoke void @_ZNSt8valarrayIdEC2Em(ptr noundef nonnull align 8 dereferenceable(16) %11, i64 noundef %66)
          to label %67 unwind label %92

67:                                               ; preds = %64
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %12) #9
  %68 = getelementptr inbounds i8, ptr %0, i64 360
  %69 = load i32, ptr %68, align 8, !tbaa !28
  %70 = sext i32 %69 to i64
  invoke void @_ZNSt8valarrayIdEC2Em(ptr noundef nonnull align 8 dereferenceable(16) %12, i64 noundef %70)
          to label %71 unwind label %94

71:                                               ; preds = %67
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %13) #9
  %72 = load i32, ptr %68, align 8, !tbaa !28
  %73 = sext i32 %72 to i64
  invoke void @_ZNSt8valarrayIdEC2Em(ptr noundef nonnull align 8 dereferenceable(16) %13, i64 noundef %73)
          to label %74 unwind label %96

74:                                               ; preds = %71
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %14) #9
  %75 = load i32, ptr %59, align 8, !tbaa !5
  %76 = sext i32 %75 to i64
  invoke void @_ZNSt8valarrayIdEC2Em(ptr noundef nonnull align 8 dereferenceable(16) %14, i64 noundef %76)
          to label %77 unwind label %98

77:                                               ; preds = %74
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %15) #9
  %78 = load i32, ptr %59, align 8, !tbaa !5
  %79 = sext i32 %78 to i64
  invoke void @_ZNSt8valarrayIdEC2Em(ptr noundef nonnull align 8 dereferenceable(16) %15, i64 noundef %79)
          to label %80 unwind label %100

80:                                               ; preds = %77
  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) %9, ptr noundef nonnull align 8 dereferenceable(16) %10, ptr noundef nonnull align 8 dereferenceable(16) %11, ptr noundef nonnull align 8 dereferenceable(16) %12, ptr noundef nonnull align 8 dereferenceable(16) %13, ptr noundef nonnull align 8 dereferenceable(16) %14, ptr noundef nonnull align 8 dereferenceable(16) %15)
          to label %81 unwind label %102

81:                                               ; preds = %80
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %16) #9
  %82 = load i32, ptr %59, align 8, !tbaa !5
  %83 = sext i32 %82 to i64
  invoke void @_ZNSt8valarrayIdEC2Em(ptr noundef nonnull align 8 dereferenceable(16) %16, i64 noundef %83)
          to label %.preheader140 unwind label %104

.preheader140:                                    ; preds = %81
  %84 = load i32, ptr %59, align 8, !tbaa !5
  %85 = icmp sgt i32 %84, 0
  br i1 %85, label %.lr.ph, label %.preheader140.._crit_edge_crit_edge

.preheader140.._crit_edge_crit_edge:              ; preds = %.preheader140
  %.pre = sext i32 %84 to i64
  br label %._crit_edge

.lr.ph:                                           ; preds = %.preheader140
  %86 = getelementptr inbounds i8, ptr %0, i64 488
  br label %106

._crit_edge:                                      ; preds = %125, %.preheader140.._crit_edge_crit_edge
  %.pre-phi = phi i64 [ %.pre, %.preheader140.._crit_edge_crit_edge ], [ %127, %125 ]
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %17) #9
  invoke void @_ZNSt8valarrayIdEC2Em(ptr noundef nonnull align 8 dereferenceable(16) %17, i64 noundef %.pre-phi)
          to label %.preheader139 unwind label %131

.preheader139:                                    ; preds = %._crit_edge
  %87 = load i32, ptr %59, align 8, !tbaa !5
  %88 = icmp sgt i32 %87, 0
  br i1 %88, label %.lr.ph144, label %._crit_edge145

.lr.ph144:                                        ; preds = %.preheader139
  %89 = getelementptr inbounds i8, ptr %0, i64 504
  br label %133

90:                                               ; preds = %58
  %91 = landingpad { ptr, i32 }
          cleanup
  br label %346

92:                                               ; preds = %64
  %93 = landingpad { ptr, i32 }
          cleanup
  br label %345

94:                                               ; preds = %67
  %95 = landingpad { ptr, i32 }
          cleanup
  br label %344

96:                                               ; preds = %71
  %97 = landingpad { ptr, i32 }
          cleanup
  br label %343

98:                                               ; preds = %74
  %99 = landingpad { ptr, i32 }
          cleanup
  br label %342

100:                                              ; preds = %77
  %101 = landingpad { ptr, i32 }
          cleanup
  br label %341

102:                                              ; preds = %80
  %103 = landingpad { ptr, i32 }
          cleanup
  br label %340

104:                                              ; preds = %81
  %105 = landingpad { ptr, i32 }
          cleanup
  br label %339

106:                                              ; preds = %.lr.ph, %125
  %indvars.iv = phi i64 [ 0, %.lr.ph ], [ %indvars.iv.next, %125 ]
  %107 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNKSt8valarrayIdEixEm(ptr noundef nonnull align 8 dereferenceable(16) %86, i64 noundef %indvars.iv) #9
  %108 = load double, ptr %107, align 8, !tbaa !29
  %109 = call noundef zeroext i1 @_ZSt8isfinited(double noundef %108)
  br i1 %109, label %110, label %120

110:                                              ; preds = %106
  %111 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNKSt8valarrayIdEixEm(ptr noundef nonnull align 8 dereferenceable(16) %86, i64 noundef %indvars.iv) #9
  %112 = load double, ptr %111, align 8, !tbaa !29
  %113 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt8valarrayIdEixEm(ptr noundef nonnull align 8 dereferenceable(16) %9, i64 noundef %indvars.iv) #9
  %114 = load double, ptr %113, align 8, !tbaa !29
  %115 = fsub double %112, %114
  %116 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt8valarrayIdEixEm(ptr noundef nonnull align 8 dereferenceable(16) %10, i64 noundef %indvars.iv) #9
  %117 = load double, ptr %116, align 8, !tbaa !29
  %118 = fadd double %115, %117
  %119 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt8valarrayIdEixEm(ptr noundef nonnull align 8 dereferenceable(16) %16, i64 noundef %indvars.iv) #9
  store double %118, ptr %119, align 8, !tbaa !29
  br label %125

120:                                              ; preds = %106
  %121 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt8valarrayIdEixEm(ptr noundef nonnull align 8 dereferenceable(16) %10, i64 noundef %indvars.iv) #9
  %122 = load double, ptr %121, align 8, !tbaa !29
  %123 = fcmp oeq double %122, 0x7FF0000000000000
  br i1 %123, label %125, label %124

124:                                              ; preds = %120
  call void @__assert_fail(ptr noundef nonnull @.str.27, ptr noundef nonnull @.str.18, i32 noundef 310, ptr noundef nonnull @__PRETTY_FUNCTION__._ZNK3ipx5Model24EvaluateInteriorSolutionERKSt8valarrayIdES4_S4_S4_S4_S4_PNS_4InfoE) #8
  unreachable

125:                                              ; preds = %110, %120
  %indvars.iv.next = add nuw nsw i64 %indvars.iv, 1
  %126 = load i32, ptr %59, align 8, !tbaa !5
  %127 = sext i32 %126 to i64
  %128 = icmp slt i64 %indvars.iv.next, %127
  br i1 %128, label %106, label %._crit_edge, !llvm.loop !30

._crit_edge145:                                   ; preds = %152, %.preheader139
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %18) #9
  %129 = load i32, ptr %68, align 8, !tbaa !28
  %130 = sext i32 %129 to i64
  invoke void @_ZNSt8valarrayIdEC2Em(ptr noundef nonnull align 8 dereferenceable(16) %18, i64 noundef %130)
          to label %156 unwind label %204

131:                                              ; preds = %._crit_edge
  %132 = landingpad { ptr, i32 }
          cleanup
  br label %338

133:                                              ; preds = %.lr.ph144, %152
  %indvars.iv165 = phi i64 [ 0, %.lr.ph144 ], [ %indvars.iv.next166, %152 ]
  %134 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNKSt8valarrayIdEixEm(ptr noundef nonnull align 8 dereferenceable(16) %89, i64 noundef %indvars.iv165) #9
  %135 = load double, ptr %134, align 8, !tbaa !29
  %136 = call noundef zeroext i1 @_ZSt8isfinited(double noundef %135)
  br i1 %136, label %137, label %147

137:                                              ; preds = %133
  %138 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNKSt8valarrayIdEixEm(ptr noundef nonnull align 8 dereferenceable(16) %89, i64 noundef %indvars.iv165) #9
  %139 = load double, ptr %138, align 8, !tbaa !29
  %140 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt8valarrayIdEixEm(ptr noundef nonnull align 8 dereferenceable(16) %9, i64 noundef %indvars.iv165) #9
  %141 = load double, ptr %140, align 8, !tbaa !29
  %142 = fsub double %139, %141
  %143 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt8valarrayIdEixEm(ptr noundef nonnull align 8 dereferenceable(16) %11, i64 noundef %indvars.iv165) #9
  %144 = load double, ptr %143, align 8, !tbaa !29
  %145 = fsub double %142, %144
  %146 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt8valarrayIdEixEm(ptr noundef nonnull align 8 dereferenceable(16) %17, i64 noundef %indvars.iv165) #9
  store double %145, ptr %146, align 8, !tbaa !29
  br label %152

147:                                              ; preds = %133
  %148 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt8valarrayIdEixEm(ptr noundef nonnull align 8 dereferenceable(16) %11, i64 noundef %indvars.iv165) #9
  %149 = load double, ptr %148, align 8, !tbaa !29
  %150 = fcmp oeq double %149, 0x7FF0000000000000
  br i1 %150, label %152, label %151

151:                                              ; preds = %147
  call void @__assert_fail(ptr noundef nonnull @.str.28, ptr noundef nonnull @.str.18, i32 noundef 318, ptr noundef nonnull @__PRETTY_FUNCTION__._ZNK3ipx5Model24EvaluateInteriorSolutionERKSt8valarrayIdES4_S4_S4_S4_S4_PNS_4InfoE) #8
  unreachable

152:                                              ; preds = %137, %147
  %indvars.iv.next166 = add nuw nsw i64 %indvars.iv165, 1
  %153 = load i32, ptr %59, align 8, !tbaa !5
  %154 = sext i32 %153 to i64
  %155 = icmp slt i64 %indvars.iv.next166, %154
  br i1 %155, label %133, label %._crit_edge145, !llvm.loop !32

156:                                              ; preds = %._crit_edge145
  invoke void @_ZNK3ipx5Model24MultiplyWithScaledMatrixERKSt8valarrayIdEdRS2_c(ptr noundef nonnull align 8 dereferenceable(704) %0, ptr noundef nonnull align 8 dereferenceable(16) %9, double noundef -1.000000e+00, ptr noundef nonnull align 8 dereferenceable(16) %18, i8 noundef signext 78)
          to label %157 unwind label %206

157:                                              ; preds = %156
  %158 = invoke noundef nonnull align 8 dereferenceable(16) ptr @_ZNSt8valarrayIdEmIERKS0_(ptr noundef nonnull align 8 dereferenceable(16) %18, ptr noundef nonnull align 8 dereferenceable(16) %12)
          to label %159 unwind label %206

159:                                              ; preds = %157
  %160 = getelementptr inbounds i8, ptr %0, i64 472
  %161 = invoke noundef nonnull align 8 dereferenceable(16) ptr @_ZNSt8valarrayIdEpLERKS0_(ptr noundef nonnull align 8 dereferenceable(16) %18, ptr noundef nonnull align 8 dereferenceable(16) %160)
          to label %162 unwind label %206

162:                                              ; preds = %159
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %19) #9
  %163 = load i32, ptr %59, align 8, !tbaa !5
  %164 = sext i32 %163 to i64
  invoke void @_ZNSt8valarrayIdEC2Em(ptr noundef nonnull align 8 dereferenceable(16) %19, i64 noundef %164)
          to label %165 unwind label %208

165:                                              ; preds = %162
  invoke void @_ZNK3ipx5Model24MultiplyWithScaledMatrixERKSt8valarrayIdEdRS2_c(ptr noundef nonnull align 8 dereferenceable(704) %0, ptr noundef nonnull align 8 dereferenceable(16) %13, double noundef -1.000000e+00, ptr noundef nonnull align 8 dereferenceable(16) %19, i8 noundef signext 84)
          to label %166 unwind label %210

166:                                              ; preds = %165
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %20) #9
  %167 = invoke { ptr, ptr } @_ZStmiIdESt5_ExprINSt8__detail8_BinClosISt7__minusSt9_ValArrayS4_T_S5_EENSt5__funIS3_S5_E11result_typeEERKSt8valarrayIS5_ESE_(ptr noundef nonnull align 8 dereferenceable(16) %14, ptr noundef nonnull align 8 dereferenceable(16) %15)
          to label %168 unwind label %212

168:                                              ; preds = %166
  %169 = extractvalue { ptr, ptr } %167, 0
  store ptr %169, ptr %20, align 8
  %170 = getelementptr inbounds i8, ptr %20, i64 8
  %171 = extractvalue { ptr, ptr } %167, 1
  store ptr %171, ptr %170, align 8
  %172 = invoke noundef nonnull align 8 dereferenceable(16) ptr @_ZNSt8valarrayIdEmIINSt8__detail8_BinClosISt7__minusSt9_ValArrayS5_ddEEEERS0_RKSt5_ExprIT_dE(ptr noundef nonnull align 8 dereferenceable(16) %19, ptr noundef nonnull align 8 dereferenceable(16) %20)
          to label %173 unwind label %212

173:                                              ; preds = %168
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %20) #9
  %174 = getelementptr inbounds i8, ptr %0, i64 456
  %175 = invoke noundef nonnull align 8 dereferenceable(16) ptr @_ZNSt8valarrayIdEpLERKS0_(ptr noundef nonnull align 8 dereferenceable(16) %19, ptr noundef nonnull align 8 dereferenceable(16) %174)
          to label %176 unwind label %210

176:                                              ; preds = %173
  invoke void @_ZNK3ipx5Model18ScaleBackResidualsERSt8valarrayIdES3_S3_S3_(ptr noundef nonnull align 8 dereferenceable(704) %0, ptr noundef nonnull align 8 dereferenceable(16) %18, ptr noundef nonnull align 8 dereferenceable(16) %19, ptr noundef nonnull align 8 dereferenceable(16) %16, ptr noundef nonnull align 8 dereferenceable(16) %17)
          to label %177 unwind label %210

177:                                              ; preds = %176
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %21) #9
  %178 = invoke noundef double @_ZN3ipx7InfnormERKSt8valarrayIdE(ptr noundef nonnull align 8 dereferenceable(16) %18)
          to label %179 unwind label %214

179:                                              ; preds = %177
  store double %178, ptr %21, align 8, !tbaa !29
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %22) #9
  %180 = invoke noundef double @_ZN3ipx7InfnormERKSt8valarrayIdE(ptr noundef nonnull align 8 dereferenceable(16) %16)
          to label %181 unwind label %216

181:                                              ; preds = %179
  store double %180, ptr %22, align 8, !tbaa !29
  %182 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZSt3maxIdERKT_S2_S2_(ptr noundef nonnull align 8 dereferenceable(8) %21, ptr noundef nonnull align 8 dereferenceable(8) %22)
  %183 = load double, ptr %182, align 8, !tbaa !29
  store double %183, ptr %21, align 8, !tbaa !29
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %22) #9
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %23) #9
  %184 = invoke noundef double @_ZN3ipx7InfnormERKSt8valarrayIdE(ptr noundef nonnull align 8 dereferenceable(16) %17)
          to label %185 unwind label %218

185:                                              ; preds = %181
  store double %184, ptr %23, align 8, !tbaa !29
  %186 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZSt3maxIdERKT_S2_S2_(ptr noundef nonnull align 8 dereferenceable(8) %21, ptr noundef nonnull align 8 dereferenceable(8) %23)
  %187 = load double, ptr %186, align 8, !tbaa !29
  store double %187, ptr %21, align 8, !tbaa !29
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %23) #9
  %188 = invoke noundef double @_ZN3ipx7InfnormERKSt8valarrayIdE(ptr noundef nonnull align 8 dereferenceable(16) %19)
          to label %189 unwind label %220

189:                                              ; preds = %185
  %190 = getelementptr inbounds i8, ptr %0, i64 448
  %191 = load double, ptr %190, align 8, !tbaa !33
  %192 = invoke noundef double @_ZN3ipx3DotERKSt8valarrayIdES3_(ptr noundef nonnull align 8 dereferenceable(16) %174, ptr noundef nonnull align 8 dereferenceable(16) %9)
          to label %193 unwind label %222

193:                                              ; preds = %189
  %194 = fadd double %191, %192
  %195 = load double, ptr %190, align 8, !tbaa !33
  %196 = invoke noundef double @_ZN3ipx3DotERKSt8valarrayIdES3_(ptr noundef nonnull align 8 dereferenceable(16) %160, ptr noundef nonnull align 8 dereferenceable(16) %13)
          to label %197 unwind label %224

197:                                              ; preds = %193
  %198 = fadd double %195, %196
  %199 = load i32, ptr %59, align 8, !tbaa !5
  %200 = icmp sgt i32 %199, 0
  br i1 %200, label %.lr.ph149, label %._crit_edge150

.lr.ph149:                                        ; preds = %197
  %201 = getelementptr inbounds i8, ptr %0, i64 488
  %202 = getelementptr inbounds i8, ptr %0, i64 504
  br label %226

._crit_edge150:                                   ; preds = %247, %197
  %.095.lcssa = phi double [ %198, %197 ], [ %.297, %247 ]
  %203 = call noundef zeroext i1 @_ZSt8isfinited(double noundef %.095.lcssa)
  br i1 %203, label %252, label %251

204:                                              ; preds = %._crit_edge145
  %205 = landingpad { ptr, i32 }
          cleanup
  br label %337

206:                                              ; preds = %159, %157, %156
  %207 = landingpad { ptr, i32 }
          cleanup
  br label %336

208:                                              ; preds = %162
  %209 = landingpad { ptr, i32 }
          cleanup
  br label %335

210:                                              ; preds = %176, %173, %165
  %211 = landingpad { ptr, i32 }
          cleanup
  br label %334

212:                                              ; preds = %168, %166
  %213 = landingpad { ptr, i32 }
          cleanup
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %20) #9
  br label %334

214:                                              ; preds = %177
  %215 = landingpad { ptr, i32 }
          cleanup
  br label %333

216:                                              ; preds = %179
  %217 = landingpad { ptr, i32 }
          cleanup
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %22) #9
  br label %333

218:                                              ; preds = %181
  %219 = landingpad { ptr, i32 }
          cleanup
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %23) #9
  br label %333

220:                                              ; preds = %185
  %221 = landingpad { ptr, i32 }
          cleanup
  br label %333

222:                                              ; preds = %189
  %223 = landingpad { ptr, i32 }
          cleanup
  br label %333

224:                                              ; preds = %193
  %225 = landingpad { ptr, i32 }
          cleanup
  br label %333

226:                                              ; preds = %.lr.ph149, %247
  %indvars.iv168 = phi i64 [ 0, %.lr.ph149 ], [ %indvars.iv.next169, %247 ]
  %.095146 = phi double [ %198, %.lr.ph149 ], [ %.297, %247 ]
  %227 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNKSt8valarrayIdEixEm(ptr noundef nonnull align 8 dereferenceable(16) %201, i64 noundef %indvars.iv168) #9
  %228 = load double, ptr %227, align 8, !tbaa !29
  %229 = call noundef zeroext i1 @_ZSt8isfinited(double noundef %228)
  br i1 %229, label %230, label %236

230:                                              ; preds = %226
  %231 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNKSt8valarrayIdEixEm(ptr noundef nonnull align 8 dereferenceable(16) %201, i64 noundef %indvars.iv168) #9
  %232 = load double, ptr %231, align 8, !tbaa !29
  %233 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt8valarrayIdEixEm(ptr noundef nonnull align 8 dereferenceable(16) %14, i64 noundef %indvars.iv168) #9
  %234 = load double, ptr %233, align 8, !tbaa !29
  %235 = call double @llvm.fmuladd.f64(double %232, double %234, double %.095146)
  br label %236

236:                                              ; preds = %230, %226
  %.196 = phi double [ %235, %230 ], [ %.095146, %226 ]
  %237 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNKSt8valarrayIdEixEm(ptr noundef nonnull align 8 dereferenceable(16) %202, i64 noundef %indvars.iv168) #9
  %238 = load double, ptr %237, align 8, !tbaa !29
  %239 = call noundef zeroext i1 @_ZSt8isfinited(double noundef %238)
  br i1 %239, label %240, label %247

240:                                              ; preds = %236
  %241 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNKSt8valarrayIdEixEm(ptr noundef nonnull align 8 dereferenceable(16) %202, i64 noundef %indvars.iv168) #9
  %242 = load double, ptr %241, align 8, !tbaa !29
  %243 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt8valarrayIdEixEm(ptr noundef nonnull align 8 dereferenceable(16) %15, i64 noundef %indvars.iv168) #9
  %244 = load double, ptr %243, align 8, !tbaa !29
  %245 = fneg double %242
  %246 = call double @llvm.fmuladd.f64(double %245, double %244, double %.196)
  br label %247

247:                                              ; preds = %236, %240
  %.297 = phi double [ %246, %240 ], [ %.196, %236 ]
  %indvars.iv.next169 = add nuw nsw i64 %indvars.iv168, 1
  %248 = load i32, ptr %59, align 8, !tbaa !5
  %249 = sext i32 %248 to i64
  %250 = icmp slt i64 %indvars.iv.next169, %249
  br i1 %250, label %226, label %._crit_edge150, !llvm.loop !34

251:                                              ; preds = %._crit_edge150
  call void @__assert_fail(ptr noundef nonnull @.str.29, ptr noundef nonnull @.str.18, i32 noundef 347, ptr noundef nonnull @__PRETTY_FUNCTION__._ZNK3ipx5Model24EvaluateInteriorSolutionERKSt8valarrayIdES4_S4_S4_S4_S4_PNS_4InfoE) #8
  unreachable

252:                                              ; preds = %._crit_edge150
  %253 = fsub double %194, %.095.lcssa
  %254 = fadd double %194, %.095.lcssa
  %255 = call noundef double @_ZSt3absd(double noundef %254)
  %256 = call double @llvm.fmuladd.f64(double %255, double 5.000000e-01, double 1.000000e+00)
  %257 = fdiv double %253, %256
  %258 = load i32, ptr %59, align 8, !tbaa !5
  %259 = icmp sgt i32 %258, 0
  br i1 %259, label %.lr.ph155, label %.preheader

.lr.ph155:                                        ; preds = %252
  %260 = getelementptr inbounds i8, ptr %0, i64 488
  %261 = getelementptr inbounds i8, ptr %0, i64 504
  br label %264

.preheader:                                       ; preds = %284, %252
  %.089.lcssa = phi double [ 0.000000e+00, %252 ], [ %.2, %284 ]
  %262 = load i32, ptr %68, align 8, !tbaa !28
  %263 = icmp sgt i32 %262, 0
  br i1 %263, label %.lr.ph159, label %._crit_edge160

264:                                              ; preds = %.lr.ph155, %284
  %indvars.iv171 = phi i64 [ 0, %.lr.ph155 ], [ %indvars.iv.next172, %284 ]
  %.089152 = phi double [ 0.000000e+00, %.lr.ph155 ], [ %.2, %284 ]
  %265 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNKSt8valarrayIdEixEm(ptr noundef nonnull align 8 dereferenceable(16) %260, i64 noundef %indvars.iv171) #9
  %266 = load double, ptr %265, align 8, !tbaa !29
  %267 = call noundef zeroext i1 @_ZSt8isfinited(double noundef %266)
  br i1 %267, label %268, label %274

268:                                              ; preds = %264
  %269 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt8valarrayIdEixEm(ptr noundef nonnull align 8 dereferenceable(16) %10, i64 noundef %indvars.iv171) #9
  %270 = load double, ptr %269, align 8, !tbaa !29
  %271 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt8valarrayIdEixEm(ptr noundef nonnull align 8 dereferenceable(16) %14, i64 noundef %indvars.iv171) #9
  %272 = load double, ptr %271, align 8, !tbaa !29
  %273 = call double @llvm.fmuladd.f64(double %270, double %272, double %.089152)
  br label %274

274:                                              ; preds = %268, %264
  %.1 = phi double [ %273, %268 ], [ %.089152, %264 ]
  %275 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNKSt8valarrayIdEixEm(ptr noundef nonnull align 8 dereferenceable(16) %261, i64 noundef %indvars.iv171) #9
  %276 = load double, ptr %275, align 8, !tbaa !29
  %277 = call noundef zeroext i1 @_ZSt8isfinited(double noundef %276)
  br i1 %277, label %278, label %284

278:                                              ; preds = %274
  %279 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt8valarrayIdEixEm(ptr noundef nonnull align 8 dereferenceable(16) %11, i64 noundef %indvars.iv171) #9
  %280 = load double, ptr %279, align 8, !tbaa !29
  %281 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt8valarrayIdEixEm(ptr noundef nonnull align 8 dereferenceable(16) %15, i64 noundef %indvars.iv171) #9
  %282 = load double, ptr %281, align 8, !tbaa !29
  %283 = call double @llvm.fmuladd.f64(double %280, double %282, double %.1)
  br label %284

284:                                              ; preds = %274, %278
  %.2 = phi double [ %283, %278 ], [ %.1, %274 ]
  %indvars.iv.next172 = add nuw nsw i64 %indvars.iv171, 1
  %285 = load i32, ptr %59, align 8, !tbaa !5
  %286 = sext i32 %285 to i64
  %287 = icmp slt i64 %indvars.iv.next172, %286
  br i1 %287, label %264, label %.preheader, !llvm.loop !35

._crit_edge160:                                   ; preds = %.lr.ph159, %.preheader
  %.3.lcssa = phi double [ %.089.lcssa, %.preheader ], [ %293, %.lr.ph159 ]
  invoke void @_ZNK3ipx5Model25ScaleBackInteriorSolutionERSt8valarrayIdES3_S3_S3_S3_S3_S3_(ptr noundef nonnull align 8 dereferenceable(704) %0, ptr noundef nonnull align 8 dereferenceable(16) %9, ptr noundef nonnull align 8 dereferenceable(16) %10, ptr noundef nonnull align 8 dereferenceable(16) %11, ptr noundef nonnull align 8 dereferenceable(16) %12, ptr noundef nonnull align 8 dereferenceable(16) %13, ptr noundef nonnull align 8 dereferenceable(16) %14, ptr noundef nonnull align 8 dereferenceable(16) %15)
          to label %297 unwind label %326

.lr.ph159:                                        ; preds = %.preheader, %.lr.ph159
  %indvars.iv174 = phi i64 [ %indvars.iv.next175, %.lr.ph159 ], [ 0, %.preheader ]
  %.3157 = phi double [ %293, %.lr.ph159 ], [ %.089.lcssa, %.preheader ]
  %288 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt8valarrayIdEixEm(ptr noundef nonnull align 8 dereferenceable(16) %13, i64 noundef %indvars.iv174) #9
  %289 = load double, ptr %288, align 8, !tbaa !29
  %290 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt8valarrayIdEixEm(ptr noundef nonnull align 8 dereferenceable(16) %12, i64 noundef %indvars.iv174) #9
  %291 = load double, ptr %290, align 8, !tbaa !29
  %292 = fneg double %289
  %293 = call double @llvm.fmuladd.f64(double %292, double %291, double %.3157)
  %indvars.iv.next175 = add nuw nsw i64 %indvars.iv174, 1
  %294 = load i32, ptr %68, align 8, !tbaa !28
  %295 = sext i32 %294 to i64
  %296 = icmp slt i64 %indvars.iv.next175, %295
  br i1 %296, label %.lr.ph159, label %._crit_edge160, !llvm.loop !36

297:                                              ; preds = %._crit_edge160
  %298 = load double, ptr %21, align 8, !tbaa !29
  %299 = getelementptr inbounds i8, ptr %7, i64 80
  store double %298, ptr %299, align 8, !tbaa !37
  %300 = getelementptr inbounds i8, ptr %7, i64 88
  store double %188, ptr %300, align 8, !tbaa !39
  %301 = getelementptr inbounds i8, ptr %7, i64 96
  %302 = getelementptr inbounds i8, ptr %0, i64 432
  %303 = load <2 x double>, ptr %302, align 8, !tbaa !29
  %304 = fadd <2 x double> %303, <double 1.000000e+00, double 1.000000e+00>
  %305 = insertelement <2 x double> poison, double %188, i64 0
  %306 = insertelement <2 x double> %305, double %298, i64 1
  %307 = fdiv <2 x double> %306, %304
  %308 = shufflevector <2 x double> %307, <2 x double> poison, <2 x i32> <i32 1, i32 0>
  store <2 x double> %308, ptr %301, align 8, !tbaa !29
  %309 = getelementptr inbounds i8, ptr %7, i64 112
  store double %194, ptr %309, align 8, !tbaa !40
  %310 = getelementptr inbounds i8, ptr %7, i64 120
  store double %.095.lcssa, ptr %310, align 8, !tbaa !41
  %311 = getelementptr inbounds i8, ptr %7, i64 128
  store double %257, ptr %311, align 8, !tbaa !42
  %312 = getelementptr inbounds i8, ptr %7, i64 136
  store double %.3.lcssa, ptr %312, align 8, !tbaa !43
  %313 = invoke noundef double @_ZN3ipx7InfnormERKSt8valarrayIdE(ptr noundef nonnull align 8 dereferenceable(16) %9)
          to label %314 unwind label %326

314:                                              ; preds = %297
  %315 = getelementptr inbounds i8, ptr %7, i64 144
  store double %313, ptr %315, align 8, !tbaa !44
  %316 = invoke noundef double @_ZN3ipx7InfnormERKSt8valarrayIdE(ptr noundef nonnull align 8 dereferenceable(16) %13)
          to label %317 unwind label %326

317:                                              ; preds = %314
  %318 = getelementptr inbounds i8, ptr %7, i64 152
  store double %316, ptr %318, align 8, !tbaa !45
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %24) #9
  %319 = invoke noundef double @_ZN3ipx7InfnormERKSt8valarrayIdE(ptr noundef nonnull align 8 dereferenceable(16) %14)
          to label %320 unwind label %328

320:                                              ; preds = %317
  store double %319, ptr %24, align 8, !tbaa !29
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %25) #9
  %321 = invoke noundef double @_ZN3ipx7InfnormERKSt8valarrayIdE(ptr noundef nonnull align 8 dereferenceable(16) %15)
          to label %322 unwind label %330

322:                                              ; preds = %320
  store double %321, ptr %25, align 8, !tbaa !29
  %323 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZSt3maxIdERKT_S2_S2_(ptr noundef nonnull align 8 dereferenceable(8) %24, ptr noundef nonnull align 8 dereferenceable(8) %25)
  %324 = load double, ptr %323, align 8, !tbaa !29
  %325 = getelementptr inbounds i8, ptr %7, i64 160
  store double %324, ptr %325, align 8, !tbaa !46
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %25) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %24) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %21) #9
  call void @_ZNSt8valarrayIdED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %19) #9
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %19) #9
  call void @_ZNSt8valarrayIdED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %18) #9
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %18) #9
  call void @_ZNSt8valarrayIdED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %17) #9
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %17) #9
  call void @_ZNSt8valarrayIdED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %16) #9
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %16) #9
  call void @_ZNSt8valarrayIdED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %15) #9
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %15) #9
  call void @_ZNSt8valarrayIdED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %14) #9
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %14) #9
  call void @_ZNSt8valarrayIdED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %13) #9
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %13) #9
  call void @_ZNSt8valarrayIdED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %12) #9
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %12) #9
  call void @_ZNSt8valarrayIdED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %11) #9
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %11) #9
  call void @_ZNSt8valarrayIdED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %10) #9
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %10) #9
  call void @_ZNSt8valarrayIdED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %9) #9
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %9) #9
  ret void

326:                                              ; preds = %314, %297, %._crit_edge160
  %327 = landingpad { ptr, i32 }
          cleanup
  br label %333

328:                                              ; preds = %317
  %329 = landingpad { ptr, i32 }
          cleanup
  br label %332

330:                                              ; preds = %320
  %331 = landingpad { ptr, i32 }
          cleanup
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %25) #9
  br label %332

332:                                              ; preds = %330, %328
  %.pn = phi { ptr, i32 } [ %331, %330 ], [ %329, %328 ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %24) #9
  br label %333

333:                                              ; preds = %220, %224, %332, %326, %222, %218, %216, %214
  %.pn.pn.pn.pn.pn.pn = phi { ptr, i32 } [ %219, %218 ], [ %217, %216 ], [ %215, %214 ], [ %221, %220 ], [ %223, %222 ], [ %225, %224 ], [ %.pn, %332 ], [ %327, %326 ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %21) #9
  br label %334

334:                                              ; preds = %333, %212, %210
  %.pn.pn.pn.pn.pn.pn.pn = phi { ptr, i32 } [ %.pn.pn.pn.pn.pn.pn, %333 ], [ %211, %210 ], [ %213, %212 ]
  call void @_ZNSt8valarrayIdED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %19) #9
  br label %335

335:                                              ; preds = %334, %208
  %.pn.pn.pn.pn.pn.pn.pn.pn = phi { ptr, i32 } [ %.pn.pn.pn.pn.pn.pn.pn, %334 ], [ %209, %208 ]
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %19) #9
  br label %336

336:                                              ; preds = %335, %206
  %.pn.pn.pn.pn.pn.pn.pn.pn.pn = phi { ptr, i32 } [ %.pn.pn.pn.pn.pn.pn.pn.pn, %335 ], [ %207, %206 ]
  call void @_ZNSt8valarrayIdED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %18) #9
  br label %337

337:                                              ; preds = %336, %204
  %.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn = phi { ptr, i32 } [ %.pn.pn.pn.pn.pn.pn.pn.pn.pn, %336 ], [ %205, %204 ]
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %18) #9
  call void @_ZNSt8valarrayIdED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %17) #9
  br label %338

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

339:                                              ; preds = %338, %104
  %.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn = phi { ptr, i32 } [ %.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn, %338 ], [ %105, %104 ]
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %16) #9
  br label %340

340:                                              ; preds = %339, %102
  %.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn = phi { ptr, i32 } [ %.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn, %339 ], [ %103, %102 ]
  call void @_ZNSt8valarrayIdED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %15) #9
  br label %341

341:                                              ; preds = %340, %100
  %.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn = phi { ptr, i32 } [ %.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn, %340 ], [ %101, %100 ]
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %15) #9
  call void @_ZNSt8valarrayIdED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %14) #9
  br label %342

342:                                              ; preds = %341, %98
  %.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn = phi { ptr, i32 } [ %.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn, %341 ], [ %99, %98 ]
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %14) #9
  call void @_ZNSt8valarrayIdED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %13) #9
  br label %343

343:                                              ; preds = %342, %96
  %.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn = phi { ptr, i32 } [ %.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn, %342 ], [ %97, %96 ]
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %13) #9
  call void @_ZNSt8valarrayIdED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %12) #9
  br label %344

344:                                              ; preds = %343, %94
  %.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn = phi { ptr, i32 } [ %.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn, %343 ], [ %95, %94 ]
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %12) #9
  call void @_ZNSt8valarrayIdED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %11) #9
  br label %345

345:                                              ; preds = %344, %92
  %.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn = phi { ptr, i32 } [ %.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn, %344 ], [ %93, %92 ]
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %11) #9
  call void @_ZNSt8valarrayIdED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %10) #9
  br label %346

346:                                              ; preds = %345, %90
  %.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn = phi { ptr, i32 } [ %.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn, %345 ], [ %91, %90 ]
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %10) #9
  call void @_ZNSt8valarrayIdED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %9) #9
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %9) #9
  resume { ptr, i32 } %.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn
}

; Function Attrs: mustprogress uwtable
declare dso_local void @_ZNK3ipx5Model24MultiplyWithScaledMatrixERKSt8valarrayIdEdRS2_c(ptr noundef nonnull align 8 dereferenceable(704), ptr noundef nonnull align 8 dereferenceable(16), double noundef, ptr noundef nonnull align 8 dereferenceable(16), i8 noundef signext) local_unnamed_addr #6 align 2

; Function Attrs: inlinehint mustprogress uwtable
declare dso_local noundef nonnull align 8 dereferenceable(16) ptr @_ZNSt8valarrayIdEmIERKS0_(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 nonnull align 8 dereferenceable(16) ptr @_ZNSt8valarrayIdEpLERKS0_(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 { ptr, ptr } @_ZStmiIdESt5_ExprINSt8__detail8_BinClosISt7__minusSt9_ValArrayS4_T_S5_EENSt5__funIS3_S5_E11result_typeEERKSt8valarrayIS5_ESE_(ptr noundef nonnull align 8 dereferenceable(16), ptr noundef nonnull align 8 dereferenceable(16)) local_unnamed_addr #5

; Function Attrs: inlinehint mustprogress uwtable
declare dso_local noundef nonnull align 8 dereferenceable(16) ptr @_ZNSt8valarrayIdEmIINSt8__detail8_BinClosISt7__minusSt9_ValArrayS5_ddEEEERS0_RKSt5_ExprIT_dE(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 @_ZNK3ipx5Model18ScaleBackResidualsERSt8valarrayIdES3_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)) local_unnamed_addr #6 align 2

declare noundef double @_ZN3ipx3DotERKSt8valarrayIdES3_(ptr noundef nonnull align 8 dereferenceable(16), ptr noundef nonnull align 8 dereferenceable(16)) local_unnamed_addr #2

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

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 = { "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 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 #5 = { 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 #6 = { 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 #7 = { mustprogress nocallback nofree nosync nounwind speculatable willreturn memory(none) }
attributes #8 = { noreturn nounwind }
attributes #9 = { 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}
!29 = !{!23, !23, i64 0}
!30 = distinct !{!30, !31}
!31 = !{!"llvm.loop.mustprogress"}
!32 = distinct !{!32, !31}
!33 = !{!6, !23, i64 448}
!34 = distinct !{!34, !31}
!35 = distinct !{!35, !31}
!36 = distinct !{!36, !31}
!37 = !{!38, !23, i64 80}
!38 = !{!"_ZTS8ipx_info", !10, i64 0, !10, i64 4, !10, i64 8, !10, i64 12, !10, i64 16, !10, i64 20, !10, i64 24, !10, i64 28, !10, i64 32, !10, i64 36, !10, i64 40, !10, i64 44, !10, i64 48, !10, i64 52, !10, i64 56, !10, i64 60, !10, i64 64, !10, i64 68, !10, i64 72, !10, i64 76, !23, i64 80, !23, i64 88, !23, i64 96, !23, i64 104, !23, i64 112, !23, i64 120, !23, i64 128, !23, i64 136, !23, i64 144, !23, i64 152, !23, i64 160, !23, i64 168, !23, i64 176, !23, i64 184, !10, i64 192, !10, i64 196, !10, i64 200, !10, i64 204, !10, i64 208, !10, i64 212, !10, i64 216, !23, i64 224, !23, i64 232, !23, i64 240, !23, i64 248, !23, i64 256, !23, i64 264, !23, i64 272, !23, i64 280, !23, i64 288, !23, i64 296, !23, i64 304, !23, i64 312, !23, i64 320, !23, i64 328, !23, i64 336, !23, i64 344, !23, i64 352, !23, i64 360, !23, i64 368, !23, i64 376, !23, i64 384, !23, i64 392, !23, i64 400, !23, i64 408, !10, i64 416, !10, i64 420, !10, i64 424, !10, i64 428, !23, i64 432, !23, i64 440, !23, i64 448, !23, i64 456}
!39 = !{!38, !23, i64 88}
!40 = !{!38, !23, i64 112}
!41 = !{!38, !23, i64 120}
!42 = !{!38, !23, i64 128}
!43 = !{!38, !23, i64 136}
!44 = !{!38, !23, i64 144}
!45 = !{!38, !23, i64 152}
!46 = !{!38, !23, i64 160}


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