; 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::_Expr.17" = type { %"struct.std::__detail::_UnClos" }
%"struct.std::__detail::_UnClos" = type { %"class.std::__detail::_UnBase" }
%"class.std::__detail::_UnBase" = type { ptr }
%"class.__gnu_cxx::__normal_iterator.16" = type { 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 }
%"class.std::valarray" = type { i64, ptr }

@.str.18 = external hidden unnamed_addr constant [70 x i8], align 1
@.str.55 = external hidden unnamed_addr constant [14 x i8], align 1
@.str.57 = external hidden unnamed_addr constant [17 x i8], align 1
@.str.58 = external hidden unnamed_addr constant [14 x i8], align 1
@__PRETTY_FUNCTION__._ZNK3ipx5Model27DualizeBackInteriorSolutionERKSt8valarrayIdES4_S4_S4_S4_S4_RS2_S5_S5_S5_S5_S5_S5_ = external hidden unnamed_addr constant [217 x i8], align 1
@.str.63 = external hidden unnamed_addr constant [43 x i8], align 1
@.str.64 = external hidden unnamed_addr constant [25 x i8], align 1
@.str.65 = external hidden unnamed_addr constant [7 x i8], align 1
@.str.66 = external hidden unnamed_addr constant [41 x i8], align 1
@.str.67 = external hidden unnamed_addr constant [40 x i8], align 1
@.str.68 = external hidden unnamed_addr constant [35 x i8], align 1
@.str.69 = external hidden unnamed_addr constant [29 x i8], align 1

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

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

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

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

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

; 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 uwtable
declare dso_local noundef ptr @_ZSt6copy_nIPKdiPdET1_T_T0_S3_(ptr noundef, i32 noundef, ptr noundef) #4

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

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

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

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

55:                                               ; preds = %14
  %56 = getelementptr inbounds %"class.ipx::Model", ptr %49, i32 0, i32 15
  %57 = load i32, ptr %56, align 8, !tbaa !32
  %58 = load i32, ptr %29, align 4, !tbaa !9
  %59 = icmp eq i32 %57, %58
  br i1 %59, label %60, label %61

60:                                               ; preds = %55
  br label %63

61:                                               ; preds = %55
  call void @__assert_fail(ptr noundef @.str.55, ptr noundef @.str.18, i32 noundef 1205, ptr noundef @__PRETTY_FUNCTION__._ZNK3ipx5Model27DualizeBackInteriorSolutionERKSt8valarrayIdES4_S4_S4_S4_S4_RS2_S5_S5_S5_S5_S5_S5_) #7
  unreachable

62:                                               ; No predecessors!
  br label %63

63:                                               ; preds = %62, %60
  %64 = getelementptr inbounds %"class.ipx::Model", ptr %49, i32 0, i32 13
  %65 = load i32, ptr %64, align 8, !tbaa !33
  %66 = getelementptr inbounds %"class.ipx::Model", ptr %49, i32 0, i32 18
  %67 = call noundef i64 @_ZNKSt6vectorIiSaIiEE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24) %66) #6
  %68 = trunc i64 %67 to i32
  %69 = add nsw i32 %65, %68
  %70 = load i32, ptr %30, align 4, !tbaa !9
  %71 = icmp eq i32 %69, %70
  br i1 %71, label %72, label %73

72:                                               ; preds = %63
  br label %75

73:                                               ; preds = %63
  call void @__assert_fail(ptr noundef @.str.63, ptr noundef @.str.18, i32 noundef 1206, ptr noundef @__PRETTY_FUNCTION__._ZNK3ipx5Model27DualizeBackInteriorSolutionERKSt8valarrayIdES4_S4_S4_S4_S4_RS2_S5_S5_S5_S5_S5_S5_) #7
  unreachable

74:                                               ; No predecessors!
  br label %75

75:                                               ; preds = %74, %72
  call void @llvm.lifetime.start.p0(i64 8, ptr %31) #6
  %76 = load ptr, ptr %19, align 8, !tbaa !5
  %77 = call ptr @_ZNKSt8valarrayIdEngEv(ptr noundef nonnull align 8 dereferenceable(16) %76)
  %78 = getelementptr inbounds %"class.std::_Expr.17", ptr %31, i32 0, i32 0
  %79 = getelementptr inbounds %"struct.std::__detail::_UnClos", ptr %78, i32 0, i32 0
  %80 = getelementptr inbounds %"class.std::__detail::_UnBase", ptr %79, i32 0, i32 0
  store ptr %77, ptr %80, align 8
  %81 = load ptr, ptr %22, align 8, !tbaa !5
  %82 = call noundef nonnull align 8 dereferenceable(16) ptr @_ZNSt8valarrayIdEaSINSt8__detail7_UnClosISt8__negateSt9_ValArraydEEEERS0_RKSt5_ExprIT_dE(ptr noundef nonnull align 8 dereferenceable(16) %81, ptr noundef nonnull align 8 dereferenceable(8) %31)
  call void @llvm.lifetime.end.p0(i64 8, ptr %31) #6
  call void @llvm.lifetime.start.p0(i64 4, ptr %32) #6
  store i32 0, ptr %32, align 4, !tbaa !9
  br label %83

83:                                               ; preds = %138, %75
  %84 = load i32, ptr %32, align 4, !tbaa !9
  %85 = getelementptr inbounds %"class.ipx::Model", ptr %49, i32 0, i32 13
  %86 = load i32, ptr %85, align 8, !tbaa !33
  %87 = icmp slt i32 %84, %86
  br i1 %87, label %89, label %88

88:                                               ; preds = %83
  call void @llvm.lifetime.end.p0(i64 4, ptr %32) #6
  br label %141

89:                                               ; preds = %83
  %90 = getelementptr inbounds %"class.ipx::Model", ptr %49, i32 0, i32 19
  %91 = load i32, ptr %32, align 4, !tbaa !9
  %92 = sext i32 %91 to i64
  %93 = call noundef nonnull align 1 dereferenceable(1) ptr @_ZNKSt6vectorIcSaIcEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %90, i64 noundef %92) #6
  %94 = load i8, ptr %93, align 1, !tbaa !34
  %95 = sext i8 %94 to i32
  switch i32 %95, label %127 [
    i32 61, label %96
    i32 60, label %106
    i32 62, label %117
  ]

96:                                               ; preds = %89
  %97 = load ptr, ptr %16, align 8, !tbaa !5
  %98 = load i32, ptr %32, align 4, !tbaa !9
  %99 = sext i32 %98 to i64
  %100 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNKSt8valarrayIdEixEm(ptr noundef nonnull align 8 dereferenceable(16) %97, i64 noundef %99) #6
  %101 = load double, ptr %100, align 8, !tbaa !35
  %102 = load ptr, ptr %26, align 8, !tbaa !5
  %103 = load i32, ptr %32, align 4, !tbaa !9
  %104 = sext i32 %103 to i64
  %105 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt8valarrayIdEixEm(ptr noundef nonnull align 8 dereferenceable(16) %102, i64 noundef %104) #6
  store double %101, ptr %105, align 8, !tbaa !35
  br label %127

106:                                              ; preds = %89
  %107 = load ptr, ptr %18, align 8, !tbaa !5
  %108 = load i32, ptr %32, align 4, !tbaa !9
  %109 = sext i32 %108 to i64
  %110 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNKSt8valarrayIdEixEm(ptr noundef nonnull align 8 dereferenceable(16) %107, i64 noundef %109) #6
  %111 = load double, ptr %110, align 8, !tbaa !35
  %112 = fneg double %111
  %113 = load ptr, ptr %26, align 8, !tbaa !5
  %114 = load i32, ptr %32, align 4, !tbaa !9
  %115 = sext i32 %114 to i64
  %116 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt8valarrayIdEixEm(ptr noundef nonnull align 8 dereferenceable(16) %113, i64 noundef %115) #6
  store double %112, ptr %116, align 8, !tbaa !35
  br label %127

117:                                              ; preds = %89
  %118 = load ptr, ptr %17, align 8, !tbaa !5
  %119 = load i32, ptr %32, align 4, !tbaa !9
  %120 = sext i32 %119 to i64
  %121 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNKSt8valarrayIdEixEm(ptr noundef nonnull align 8 dereferenceable(16) %118, i64 noundef %120) #6
  %122 = load double, ptr %121, align 8, !tbaa !35
  %123 = load ptr, ptr %26, align 8, !tbaa !5
  %124 = load i32, ptr %32, align 4, !tbaa !9
  %125 = sext i32 %124 to i64
  %126 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt8valarrayIdEixEm(ptr noundef nonnull align 8 dereferenceable(16) %123, i64 noundef %125) #6
  store double %122, ptr %126, align 8, !tbaa !35
  br label %127

127:                                              ; preds = %117, %106, %96, %89
  %128 = load ptr, ptr %26, align 8, !tbaa !5
  %129 = load i32, ptr %32, align 4, !tbaa !9
  %130 = sext i32 %129 to i64
  %131 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt8valarrayIdEixEm(ptr noundef nonnull align 8 dereferenceable(16) %128, i64 noundef %130) #6
  %132 = load double, ptr %131, align 8, !tbaa !35
  %133 = call noundef zeroext i1 @_ZSt8isfinited(double noundef %132)
  br i1 %133, label %134, label %135

134:                                              ; preds = %127
  br label %137

135:                                              ; preds = %127
  call void @__assert_fail(ptr noundef @.str.64, ptr noundef @.str.18, i32 noundef 1226, ptr noundef @__PRETTY_FUNCTION__._ZNK3ipx5Model27DualizeBackInteriorSolutionERKSt8valarrayIdES4_S4_S4_S4_S4_RS2_S5_S5_S5_S5_S5_S5_) #7
  unreachable

136:                                              ; No predecessors!
  br label %137

137:                                              ; preds = %136, %134
  br label %138

138:                                              ; preds = %137
  %139 = load i32, ptr %32, align 4, !tbaa !9
  %140 = add nsw i32 %139, 1
  store i32 %140, ptr %32, align 4, !tbaa !9
  br label %83, !llvm.loop !36

141:                                              ; preds = %88
  %142 = load ptr, ptr %17, align 8, !tbaa !5
  %143 = call noundef ptr @_ZSt5beginIdEPKT_RKSt8valarrayIS0_E(ptr noundef nonnull align 8 dereferenceable(16) %142) #6
  %144 = load i32, ptr %30, align 4, !tbaa !9
  %145 = sext i32 %144 to i64
  %146 = getelementptr inbounds double, ptr %143, i64 %145
  %147 = getelementptr inbounds %"class.ipx::Model", ptr %49, i32 0, i32 15
  %148 = load i32, ptr %147, align 8, !tbaa !32
  %149 = load ptr, ptr %27, align 8, !tbaa !5
  %150 = call noundef ptr @_ZSt5beginIdEPT_RSt8valarrayIS0_E(ptr noundef nonnull align 8 dereferenceable(16) %149) #6
  %151 = call noundef ptr @_ZSt6copy_nIPKdiPdET1_T_T0_S3_(ptr noundef %146, i32 noundef %148, ptr noundef %150)
  call void @llvm.lifetime.start.p0(i64 4, ptr %33) #6
  store i32 0, ptr %33, align 4, !tbaa !9
  br label %152

152:                                              ; preds = %171, %141
  %153 = load i32, ptr %33, align 4, !tbaa !9
  %154 = getelementptr inbounds %"class.ipx::Model", ptr %49, i32 0, i32 15
  %155 = load i32, ptr %154, align 8, !tbaa !32
  %156 = icmp slt i32 %153, %155
  br i1 %156, label %158, label %157

157:                                              ; preds = %152
  call void @llvm.lifetime.end.p0(i64 4, ptr %33) #6
  br label %174

158:                                              ; preds = %152
  %159 = getelementptr inbounds %"class.ipx::Model", ptr %49, i32 0, i32 25
  %160 = load i32, ptr %33, align 4, !tbaa !9
  %161 = sext i32 %160 to i64
  %162 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNKSt8valarrayIdEixEm(ptr noundef nonnull align 8 dereferenceable(16) %159, i64 noundef %161) #6
  %163 = load double, ptr %162, align 8, !tbaa !35
  %164 = call noundef zeroext i1 @_ZSt8isfinited(double noundef %163)
  br i1 %164, label %170, label %165

165:                                              ; preds = %158
  %166 = load ptr, ptr %27, align 8, !tbaa !5
  %167 = load i32, ptr %33, align 4, !tbaa !9
  %168 = sext i32 %167 to i64
  %169 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt8valarrayIdEixEm(ptr noundef nonnull align 8 dereferenceable(16) %166, i64 noundef %168) #6
  store double 0.000000e+00, ptr %169, align 8, !tbaa !35
  br label %170

170:                                              ; preds = %165, %158
  br label %171

171:                                              ; preds = %170
  %172 = load i32, ptr %33, align 4, !tbaa !9
  %173 = add nsw i32 %172, 1
  store i32 %173, ptr %33, align 4, !tbaa !9
  br label %152, !llvm.loop !38

174:                                              ; preds = %157
  call void @llvm.lifetime.start.p0(i64 8, ptr %34) #6
  store double 0.000000e+00, ptr %34, align 8, !tbaa !35
  %175 = load ptr, ptr %28, align 8, !tbaa !5
  %176 = call noundef nonnull align 8 dereferenceable(16) ptr @_ZNSt8valarrayIdEaSERKd(ptr noundef nonnull align 8 dereferenceable(16) %175, ptr noundef nonnull align 8 dereferenceable(8) %34)
  call void @llvm.lifetime.end.p0(i64 8, ptr %34) #6
  call void @llvm.lifetime.start.p0(i64 4, ptr %35) #6
  %177 = getelementptr inbounds %"class.ipx::Model", ptr %49, i32 0, i32 13
  %178 = load i32, ptr %177, align 8, !tbaa !33
  store i32 %178, ptr %35, align 4, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 8, ptr %36) #6
  %179 = getelementptr inbounds %"class.ipx::Model", ptr %49, i32 0, i32 18
  store ptr %179, ptr %36, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %37) #6
  %180 = load ptr, ptr %36, align 8, !tbaa !5
  %181 = call ptr @_ZNKSt6vectorIiSaIiEE5beginEv(ptr noundef nonnull align 8 dereferenceable(24) %180) #6
  %182 = getelementptr inbounds %"class.__gnu_cxx::__normal_iterator.16", ptr %37, i32 0, i32 0
  store ptr %181, ptr %182, align 8
  call void @llvm.lifetime.start.p0(i64 8, ptr %38) #6
  %183 = load ptr, ptr %36, align 8, !tbaa !5
  %184 = call ptr @_ZNKSt6vectorIiSaIiEE3endEv(ptr noundef nonnull align 8 dereferenceable(24) %183) #6
  %185 = getelementptr inbounds %"class.__gnu_cxx::__normal_iterator.16", ptr %38, i32 0, i32 0
  store ptr %184, ptr %185, align 8
  br label %186

186:                                              ; preds = %202, %174
  %187 = call noundef zeroext i1 @_ZN9__gnu_cxxneIPKiSt6vectorIiSaIiEEEEbRKNS_17__normal_iteratorIT_T0_EESB_(ptr noundef nonnull align 8 dereferenceable(8) %37, ptr noundef nonnull align 8 dereferenceable(8) %38) #6
  br i1 %187, label %189, label %188

188:                                              ; preds = %186
  call void @llvm.lifetime.end.p0(i64 8, ptr %38) #6
  call void @llvm.lifetime.end.p0(i64 8, ptr %37) #6
  call void @llvm.lifetime.end.p0(i64 8, ptr %36) #6
  br label %204

189:                                              ; preds = %186
  call void @llvm.lifetime.start.p0(i64 4, ptr %39) #6
  %190 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNK9__gnu_cxx17__normal_iteratorIPKiSt6vectorIiSaIiEEEdeEv(ptr noundef nonnull align 8 dereferenceable(8) %37) #6
  %191 = load i32, ptr %190, align 4, !tbaa !9
  store i32 %191, ptr %39, align 4, !tbaa !9
  %192 = load ptr, ptr %17, align 8, !tbaa !5
  %193 = load i32, ptr %35, align 4, !tbaa !9
  %194 = add nsw i32 %193, 1
  store i32 %194, ptr %35, align 4, !tbaa !9
  %195 = sext i32 %193 to i64
  %196 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNKSt8valarrayIdEixEm(ptr noundef nonnull align 8 dereferenceable(16) %192, i64 noundef %195) #6
  %197 = load double, ptr %196, align 8, !tbaa !35
  %198 = load ptr, ptr %28, align 8, !tbaa !5
  %199 = load i32, ptr %39, align 4, !tbaa !9
  %200 = sext i32 %199 to i64
  %201 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt8valarrayIdEixEm(ptr noundef nonnull align 8 dereferenceable(16) %198, i64 noundef %200) #6
  store double %197, ptr %201, align 8, !tbaa !35
  call void @llvm.lifetime.end.p0(i64 4, ptr %39) #6
  br label %202

202:                                              ; preds = %189
  %203 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZN9__gnu_cxx17__normal_iteratorIPKiSt6vectorIiSaIiEEEppEv(ptr noundef nonnull align 8 dereferenceable(8) %37) #6
  br label %186

204:                                              ; preds = %188
  %205 = load i32, ptr %35, align 4, !tbaa !9
  %206 = load i32, ptr %30, align 4, !tbaa !9
  %207 = icmp eq i32 %205, %206
  br i1 %207, label %208, label %209

208:                                              ; preds = %204
  br label %211

209:                                              ; preds = %204
  call void @__assert_fail(ptr noundef @.str.65, ptr noundef @.str.18, i32 noundef 1248, ptr noundef @__PRETTY_FUNCTION__._ZNK3ipx5Model27DualizeBackInteriorSolutionERKSt8valarrayIdES4_S4_S4_S4_S4_RS2_S5_S5_S5_S5_S5_S5_) #7
  unreachable

210:                                              ; No predecessors!
  br label %211

211:                                              ; preds = %210, %208
  call void @llvm.lifetime.start.p0(i64 4, ptr %40) #6
  store i32 0, ptr %40, align 4, !tbaa !9
  br label %212

212:                                              ; preds = %242, %211
  %213 = load i32, ptr %40, align 4, !tbaa !9
  %214 = load i32, ptr %29, align 4, !tbaa !9
  %215 = icmp slt i32 %213, %214
  br i1 %215, label %217, label %216

216:                                              ; preds = %212
  call void @llvm.lifetime.end.p0(i64 4, ptr %40) #6
  br label %245

217:                                              ; preds = %212
  %218 = getelementptr inbounds %"class.ipx::Model", ptr %49, i32 0, i32 25
  %219 = load i32, ptr %40, align 4, !tbaa !9
  %220 = sext i32 %219 to i64
  %221 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNKSt8valarrayIdEixEm(ptr noundef nonnull align 8 dereferenceable(16) %218, i64 noundef %220) #6
  %222 = load double, ptr %221, align 8, !tbaa !35
  %223 = call noundef zeroext i1 @_ZSt8isfinited(double noundef %222)
  br i1 %223, label %224, label %236

224:                                              ; preds = %217
  %225 = load ptr, ptr %20, align 8, !tbaa !5
  %226 = load i32, ptr %30, align 4, !tbaa !9
  %227 = load i32, ptr %40, align 4, !tbaa !9
  %228 = add nsw i32 %226, %227
  %229 = sext i32 %228 to i64
  %230 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNKSt8valarrayIdEixEm(ptr noundef nonnull align 8 dereferenceable(16) %225, i64 noundef %229) #6
  %231 = load double, ptr %230, align 8, !tbaa !35
  %232 = load ptr, ptr %23, align 8, !tbaa !5
  %233 = load i32, ptr %40, align 4, !tbaa !9
  %234 = sext i32 %233 to i64
  %235 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt8valarrayIdEixEm(ptr noundef nonnull align 8 dereferenceable(16) %232, i64 noundef %234) #6
  store double %231, ptr %235, align 8, !tbaa !35
  br label %241

236:                                              ; preds = %217
  %237 = load ptr, ptr %23, align 8, !tbaa !5
  %238 = load i32, ptr %40, align 4, !tbaa !9
  %239 = sext i32 %238 to i64
  %240 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt8valarrayIdEixEm(ptr noundef nonnull align 8 dereferenceable(16) %237, i64 noundef %239) #6
  store double 0x7FF0000000000000, ptr %240, align 8, !tbaa !35
  br label %241

241:                                              ; preds = %236, %224
  br label %242

242:                                              ; preds = %241
  %243 = load i32, ptr %40, align 4, !tbaa !9
  %244 = add nsw i32 %243, 1
  store i32 %244, ptr %40, align 4, !tbaa !9
  br label %212, !llvm.loop !39

245:                                              ; preds = %216
  call void @llvm.lifetime.start.p0(i64 8, ptr %41) #6
  store double 0x7FF0000000000000, ptr %41, align 8, !tbaa !35
  %246 = load ptr, ptr %24, align 8, !tbaa !5
  %247 = call noundef nonnull align 8 dereferenceable(16) ptr @_ZNSt8valarrayIdEaSERKd(ptr noundef nonnull align 8 dereferenceable(16) %246, ptr noundef nonnull align 8 dereferenceable(8) %41)
  call void @llvm.lifetime.end.p0(i64 8, ptr %41) #6
  %248 = getelementptr inbounds %"class.ipx::Model", ptr %49, i32 0, i32 13
  %249 = load i32, ptr %248, align 8, !tbaa !33
  store i32 %249, ptr %35, align 4, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 8, ptr %42) #6
  %250 = getelementptr inbounds %"class.ipx::Model", ptr %49, i32 0, i32 18
  store ptr %250, ptr %42, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %43) #6
  %251 = load ptr, ptr %42, align 8, !tbaa !5
  %252 = call ptr @_ZNKSt6vectorIiSaIiEE5beginEv(ptr noundef nonnull align 8 dereferenceable(24) %251) #6
  %253 = getelementptr inbounds %"class.__gnu_cxx::__normal_iterator.16", ptr %43, i32 0, i32 0
  store ptr %252, ptr %253, align 8
  call void @llvm.lifetime.start.p0(i64 8, ptr %44) #6
  %254 = load ptr, ptr %42, align 8, !tbaa !5
  %255 = call ptr @_ZNKSt6vectorIiSaIiEE3endEv(ptr noundef nonnull align 8 dereferenceable(24) %254) #6
  %256 = getelementptr inbounds %"class.__gnu_cxx::__normal_iterator.16", ptr %44, i32 0, i32 0
  store ptr %255, ptr %256, align 8
  br label %257

257:                                              ; preds = %273, %245
  %258 = call noundef zeroext i1 @_ZN9__gnu_cxxneIPKiSt6vectorIiSaIiEEEEbRKNS_17__normal_iteratorIT_T0_EESB_(ptr noundef nonnull align 8 dereferenceable(8) %43, ptr noundef nonnull align 8 dereferenceable(8) %44) #6
  br i1 %258, label %260, label %259

259:                                              ; preds = %257
  call void @llvm.lifetime.end.p0(i64 8, ptr %44) #6
  call void @llvm.lifetime.end.p0(i64 8, ptr %43) #6
  call void @llvm.lifetime.end.p0(i64 8, ptr %42) #6
  br label %275

260:                                              ; preds = %257
  call void @llvm.lifetime.start.p0(i64 4, ptr %45) #6
  %261 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNK9__gnu_cxx17__normal_iteratorIPKiSt6vectorIiSaIiEEEdeEv(ptr noundef nonnull align 8 dereferenceable(8) %43) #6
  %262 = load i32, ptr %261, align 4, !tbaa !9
  store i32 %262, ptr %45, align 4, !tbaa !9
  %263 = load ptr, ptr %20, align 8, !tbaa !5
  %264 = load i32, ptr %35, align 4, !tbaa !9
  %265 = add nsw i32 %264, 1
  store i32 %265, ptr %35, align 4, !tbaa !9
  %266 = sext i32 %264 to i64
  %267 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNKSt8valarrayIdEixEm(ptr noundef nonnull align 8 dereferenceable(16) %263, i64 noundef %266) #6
  %268 = load double, ptr %267, align 8, !tbaa !35
  %269 = load ptr, ptr %24, align 8, !tbaa !5
  %270 = load i32, ptr %45, 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) %269, i64 noundef %271) #6
  store double %268, ptr %272, align 8, !tbaa !35
  call void @llvm.lifetime.end.p0(i64 4, ptr %45) #6
  br label %273

273:                                              ; preds = %260
  %274 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZN9__gnu_cxx17__normal_iteratorIPKiSt6vectorIiSaIiEEEppEv(ptr noundef nonnull align 8 dereferenceable(8) %43) #6
  br label %257

275:                                              ; preds = %259
  %276 = load i32, ptr %35, align 4, !tbaa !9
  %277 = load i32, ptr %30, align 4, !tbaa !9
  %278 = icmp eq i32 %276, %277
  br i1 %278, label %279, label %280

279:                                              ; preds = %275
  br label %282

280:                                              ; preds = %275
  call void @__assert_fail(ptr noundef @.str.65, ptr noundef @.str.18, i32 noundef 1265, ptr noundef @__PRETTY_FUNCTION__._ZNK3ipx5Model27DualizeBackInteriorSolutionERKSt8valarrayIdES4_S4_S4_S4_S4_RS2_S5_S5_S5_S5_S5_S5_) #7
  unreachable

281:                                              ; No predecessors!
  br label %282

282:                                              ; preds = %281, %279
  call void @llvm.lifetime.start.p0(i64 4, ptr %46) #6
  store i32 0, ptr %46, align 4, !tbaa !9
  br label %283

283:                                              ; preds = %323, %282
  %284 = load i32, ptr %46, align 4, !tbaa !9
  %285 = getelementptr inbounds %"class.ipx::Model", ptr %49, i32 0, i32 13
  %286 = load i32, ptr %285, align 8, !tbaa !33
  %287 = icmp slt i32 %284, %286
  br i1 %287, label %289, label %288

288:                                              ; preds = %283
  call void @llvm.lifetime.end.p0(i64 4, ptr %46) #6
  br label %326

289:                                              ; preds = %283
  %290 = getelementptr inbounds %"class.ipx::Model", ptr %49, i32 0, i32 19
  %291 = load i32, ptr %46, align 4, !tbaa !9
  %292 = sext i32 %291 to i64
  %293 = call noundef nonnull align 1 dereferenceable(1) ptr @_ZNKSt6vectorIcSaIcEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %290, i64 noundef %292) #6
  %294 = load i8, ptr %293, align 1, !tbaa !34
  %295 = sext i8 %294 to i32
  switch i32 %295, label %322 [
    i32 61, label %296
    i32 60, label %301
    i32 62, label %311
  ]

296:                                              ; preds = %289
  %297 = load ptr, ptr %25, align 8, !tbaa !5
  %298 = load i32, ptr %46, align 4, !tbaa !9
  %299 = sext i32 %298 to i64
  %300 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt8valarrayIdEixEm(ptr noundef nonnull align 8 dereferenceable(16) %297, i64 noundef %299) #6
  store double 0.000000e+00, ptr %300, align 8, !tbaa !35
  br label %322

301:                                              ; preds = %289
  %302 = load ptr, ptr %21, align 8, !tbaa !5
  %303 = load i32, ptr %46, align 4, !tbaa !9
  %304 = sext i32 %303 to i64
  %305 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNKSt8valarrayIdEixEm(ptr noundef nonnull align 8 dereferenceable(16) %302, i64 noundef %304) #6
  %306 = load double, ptr %305, align 8, !tbaa !35
  %307 = load ptr, ptr %25, align 8, !tbaa !5
  %308 = load i32, ptr %46, align 4, !tbaa !9
  %309 = sext i32 %308 to i64
  %310 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt8valarrayIdEixEm(ptr noundef nonnull align 8 dereferenceable(16) %307, i64 noundef %309) #6
  store double %306, ptr %310, align 8, !tbaa !35
  br label %322

311:                                              ; preds = %289
  %312 = load ptr, ptr %20, align 8, !tbaa !5
  %313 = load i32, ptr %46, align 4, !tbaa !9
  %314 = sext i32 %313 to i64
  %315 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNKSt8valarrayIdEixEm(ptr noundef nonnull align 8 dereferenceable(16) %312, i64 noundef %314) #6
  %316 = load double, ptr %315, align 8, !tbaa !35
  %317 = fneg double %316
  %318 = load ptr, ptr %25, align 8, !tbaa !5
  %319 = load i32, ptr %46, align 4, !tbaa !9
  %320 = sext i32 %319 to i64
  %321 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt8valarrayIdEixEm(ptr noundef nonnull align 8 dereferenceable(16) %318, i64 noundef %320) #6
  store double %317, ptr %321, align 8, !tbaa !35
  br label %322

322:                                              ; preds = %311, %301, %296, %289
  br label %323

323:                                              ; preds = %322
  %324 = load i32, ptr %46, align 4, !tbaa !9
  %325 = add nsw i32 %324, 1
  store i32 %325, ptr %46, align 4, !tbaa !9
  br label %283, !llvm.loop !40

326:                                              ; preds = %288
  call void @llvm.lifetime.end.p0(i64 4, ptr %35) #6
  br label %567

327:                                              ; preds = %14
  %328 = getelementptr inbounds %"class.ipx::Model", ptr %49, i32 0, i32 13
  %329 = load i32, ptr %328, align 8, !tbaa !33
  %330 = load i32, ptr %29, align 4, !tbaa !9
  %331 = icmp eq i32 %329, %330
  br i1 %331, label %332, label %333

332:                                              ; preds = %327
  br label %335

333:                                              ; preds = %327
  call void @__assert_fail(ptr noundef @.str.57, ptr noundef @.str.18, i32 noundef 1282, ptr noundef @__PRETTY_FUNCTION__._ZNK3ipx5Model27DualizeBackInteriorSolutionERKSt8valarrayIdES4_S4_S4_S4_S4_RS2_S5_S5_S5_S5_S5_S5_) #7
  unreachable

334:                                              ; No predecessors!
  br label %335

335:                                              ; preds = %334, %332
  %336 = getelementptr inbounds %"class.ipx::Model", ptr %49, i32 0, i32 15
  %337 = load i32, ptr %336, align 8, !tbaa !32
  %338 = load i32, ptr %30, align 4, !tbaa !9
  %339 = icmp eq i32 %337, %338
  br i1 %339, label %340, label %341

340:                                              ; preds = %335
  br label %343

341:                                              ; preds = %335
  call void @__assert_fail(ptr noundef @.str.58, ptr noundef @.str.18, i32 noundef 1283, ptr noundef @__PRETTY_FUNCTION__._ZNK3ipx5Model27DualizeBackInteriorSolutionERKSt8valarrayIdES4_S4_S4_S4_S4_RS2_S5_S5_S5_S5_S5_S5_) #7
  unreachable

342:                                              ; No predecessors!
  br label %343

343:                                              ; preds = %342, %340
  %344 = load ptr, ptr %16, align 8, !tbaa !5
  %345 = call noundef ptr @_ZSt5beginIdEPKT_RKSt8valarrayIS0_E(ptr noundef nonnull align 8 dereferenceable(16) %344) #6
  %346 = getelementptr inbounds %"class.ipx::Model", ptr %49, i32 0, i32 15
  %347 = load i32, ptr %346, align 8, !tbaa !32
  %348 = load ptr, ptr %22, align 8, !tbaa !5
  %349 = call noundef ptr @_ZSt5beginIdEPT_RSt8valarrayIS0_E(ptr noundef nonnull align 8 dereferenceable(16) %348) #6
  %350 = call noundef ptr @_ZSt6copy_nIPKdiPdET1_T_T0_S3_(ptr noundef %345, i32 noundef %347, ptr noundef %349)
  call void @llvm.lifetime.start.p0(i64 4, ptr %47) #6
  store i32 0, ptr %47, align 4, !tbaa !9
  br label %351

351:                                              ; preds = %478, %343
  %352 = load i32, ptr %47, align 4, !tbaa !9
  %353 = load i32, ptr %29, align 4, !tbaa !9
  %354 = icmp slt i32 %352, %353
  br i1 %354, label %356, label %355

355:                                              ; preds = %351
  call void @llvm.lifetime.end.p0(i64 4, ptr %47) #6
  br label %481

356:                                              ; preds = %351
  %357 = getelementptr inbounds %"class.ipx::Model", ptr %49, i32 0, i32 9
  %358 = load i32, ptr %30, align 4, !tbaa !9
  %359 = load i32, ptr %47, align 4, !tbaa !9
  %360 = add nsw i32 %358, %359
  %361 = sext i32 %360 to i64
  %362 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNKSt8valarrayIdEixEm(ptr noundef nonnull align 8 dereferenceable(16) %357, i64 noundef %361) #6
  %363 = load double, ptr %362, align 8, !tbaa !35
  %364 = fcmp oeq double %363, 0.000000e+00
  br i1 %364, label %374, label %365

365:                                              ; preds = %356
  %366 = getelementptr inbounds %"class.ipx::Model", ptr %49, i32 0, i32 9
  %367 = load i32, ptr %30, align 4, !tbaa !9
  %368 = load i32, ptr %47, align 4, !tbaa !9
  %369 = add nsw i32 %367, %368
  %370 = sext i32 %369 to i64
  %371 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNKSt8valarrayIdEixEm(ptr noundef nonnull align 8 dereferenceable(16) %366, i64 noundef %370) #6
  %372 = load double, ptr %371, align 8, !tbaa !35
  %373 = fcmp oeq double %372, 0xFFF0000000000000
  br label %374

374:                                              ; preds = %365, %356
  %375 = phi i1 [ true, %356 ], [ %373, %365 ]
  br i1 %375, label %376, label %377

376:                                              ; preds = %374
  br label %379

377:                                              ; preds = %374
  call void @__assert_fail(ptr noundef @.str.66, ptr noundef @.str.18, i32 noundef 1290, ptr noundef @__PRETTY_FUNCTION__._ZNK3ipx5Model27DualizeBackInteriorSolutionERKSt8valarrayIdES4_S4_S4_S4_S4_RS2_S5_S5_S5_S5_S5_S5_) #7
  unreachable

378:                                              ; No predecessors!
  br label %379

379:                                              ; preds = %378, %376
  %380 = getelementptr inbounds %"class.ipx::Model", ptr %49, i32 0, i32 10
  %381 = load i32, ptr %30, align 4, !tbaa !9
  %382 = load i32, ptr %47, align 4, !tbaa !9
  %383 = add nsw i32 %381, %382
  %384 = sext i32 %383 to i64
  %385 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNKSt8valarrayIdEixEm(ptr noundef nonnull align 8 dereferenceable(16) %380, i64 noundef %384) #6
  %386 = load double, ptr %385, align 8, !tbaa !35
  %387 = fcmp oeq double %386, 0.000000e+00
  br i1 %387, label %397, label %388

388:                                              ; preds = %379
  %389 = getelementptr inbounds %"class.ipx::Model", ptr %49, i32 0, i32 10
  %390 = load i32, ptr %30, align 4, !tbaa !9
  %391 = load i32, ptr %47, align 4, !tbaa !9
  %392 = add nsw i32 %390, %391
  %393 = sext i32 %392 to i64
  %394 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNKSt8valarrayIdEixEm(ptr noundef nonnull align 8 dereferenceable(16) %389, i64 noundef %393) #6
  %395 = load double, ptr %394, align 8, !tbaa !35
  %396 = fcmp oeq double %395, 0x7FF0000000000000
  br label %397

397:                                              ; preds = %388, %379
  %398 = phi i1 [ true, %379 ], [ %396, %388 ]
  br i1 %398, label %399, label %400

399:                                              ; preds = %397
  br label %402

400:                                              ; preds = %397
  call void @__assert_fail(ptr noundef @.str.67, ptr noundef @.str.18, i32 noundef 1291, ptr noundef @__PRETTY_FUNCTION__._ZNK3ipx5Model27DualizeBackInteriorSolutionERKSt8valarrayIdES4_S4_S4_S4_S4_RS2_S5_S5_S5_S5_S5_S5_) #7
  unreachable

401:                                              ; No predecessors!
  br label %402

402:                                              ; preds = %401, %399
  %403 = getelementptr inbounds %"class.ipx::Model", ptr %49, i32 0, i32 9
  %404 = load i32, ptr %30, align 4, !tbaa !9
  %405 = load i32, ptr %47, align 4, !tbaa !9
  %406 = add nsw i32 %404, %405
  %407 = sext i32 %406 to i64
  %408 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNKSt8valarrayIdEixEm(ptr noundef nonnull align 8 dereferenceable(16) %403, i64 noundef %407) #6
  %409 = load double, ptr %408, align 8, !tbaa !35
  %410 = fcmp oeq double %409, 0.000000e+00
  br i1 %410, label %420, label %411

411:                                              ; preds = %402
  %412 = getelementptr inbounds %"class.ipx::Model", ptr %49, i32 0, i32 10
  %413 = load i32, ptr %30, align 4, !tbaa !9
  %414 = load i32, ptr %47, align 4, !tbaa !9
  %415 = add nsw i32 %413, %414
  %416 = sext i32 %415 to i64
  %417 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNKSt8valarrayIdEixEm(ptr noundef nonnull align 8 dereferenceable(16) %412, i64 noundef %416) #6
  %418 = load double, ptr %417, align 8, !tbaa !35
  %419 = fcmp oeq double %418, 0.000000e+00
  br label %420

420:                                              ; preds = %411, %402
  %421 = phi i1 [ true, %402 ], [ %419, %411 ]
  br i1 %421, label %422, label %423

422:                                              ; preds = %420
  br label %425

423:                                              ; preds = %420
  call void @__assert_fail(ptr noundef @.str.68, ptr noundef @.str.18, i32 noundef 1292, ptr noundef @__PRETTY_FUNCTION__._ZNK3ipx5Model27DualizeBackInteriorSolutionERKSt8valarrayIdES4_S4_S4_S4_S4_RS2_S5_S5_S5_S5_S5_S5_) #7
  unreachable

424:                                              ; No predecessors!
  br label %425

425:                                              ; preds = %424, %422
  %426 = getelementptr inbounds %"class.ipx::Model", ptr %49, i32 0, i32 19
  %427 = load i32, ptr %47, align 4, !tbaa !9
  %428 = sext i32 %427 to i64
  %429 = call noundef nonnull align 1 dereferenceable(1) ptr @_ZNKSt6vectorIcSaIcEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %426, i64 noundef %428) #6
  %430 = load i8, ptr %429, align 1, !tbaa !34
  %431 = sext i8 %430 to i32
  switch i32 %431, label %467 [
    i32 61, label %432
    i32 60, label %442
    i32 62, label %455
  ]

432:                                              ; preds = %425
  %433 = load ptr, ptr %19, align 8, !tbaa !5
  %434 = load i32, ptr %47, align 4, !tbaa !9
  %435 = sext i32 %434 to i64
  %436 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNKSt8valarrayIdEixEm(ptr noundef nonnull align 8 dereferenceable(16) %433, i64 noundef %435) #6
  %437 = load double, ptr %436, align 8, !tbaa !35
  %438 = load ptr, ptr %26, align 8, !tbaa !5
  %439 = load i32, ptr %47, align 4, !tbaa !9
  %440 = sext i32 %439 to i64
  %441 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt8valarrayIdEixEm(ptr noundef nonnull align 8 dereferenceable(16) %438, i64 noundef %440) #6
  store double %437, ptr %441, align 8, !tbaa !35
  br label %467

442:                                              ; preds = %425
  %443 = load ptr, ptr %20, align 8, !tbaa !5
  %444 = load i32, ptr %30, align 4, !tbaa !9
  %445 = load i32, ptr %47, align 4, !tbaa !9
  %446 = add nsw i32 %444, %445
  %447 = sext i32 %446 to i64
  %448 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNKSt8valarrayIdEixEm(ptr noundef nonnull align 8 dereferenceable(16) %443, i64 noundef %447) #6
  %449 = load double, ptr %448, align 8, !tbaa !35
  %450 = fneg double %449
  %451 = load ptr, ptr %26, align 8, !tbaa !5
  %452 = load i32, ptr %47, align 4, !tbaa !9
  %453 = sext i32 %452 to i64
  %454 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt8valarrayIdEixEm(ptr noundef nonnull align 8 dereferenceable(16) %451, i64 noundef %453) #6
  store double %450, ptr %454, align 8, !tbaa !35
  br label %467

455:                                              ; preds = %425
  %456 = load ptr, ptr %21, align 8, !tbaa !5
  %457 = load i32, ptr %30, align 4, !tbaa !9
  %458 = load i32, ptr %47, align 4, !tbaa !9
  %459 = add nsw i32 %457, %458
  %460 = sext i32 %459 to i64
  %461 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNKSt8valarrayIdEixEm(ptr noundef nonnull align 8 dereferenceable(16) %456, i64 noundef %460) #6
  %462 = load double, ptr %461, align 8, !tbaa !35
  %463 = load ptr, ptr %26, align 8, !tbaa !5
  %464 = load i32, ptr %47, align 4, !tbaa !9
  %465 = sext i32 %464 to i64
  %466 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt8valarrayIdEixEm(ptr noundef nonnull align 8 dereferenceable(16) %463, i64 noundef %465) #6
  store double %462, ptr %466, align 8, !tbaa !35
  br label %467

467:                                              ; preds = %455, %442, %432, %425
  %468 = load ptr, ptr %26, align 8, !tbaa !5
  %469 = load i32, ptr %47, align 4, !tbaa !9
  %470 = sext i32 %469 to i64
  %471 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt8valarrayIdEixEm(ptr noundef nonnull align 8 dereferenceable(16) %468, i64 noundef %470) #6
  %472 = load double, ptr %471, align 8, !tbaa !35
  %473 = call noundef zeroext i1 @_ZSt8isfinited(double noundef %472)
  br i1 %473, label %474, label %475

474:                                              ; preds = %467
  br label %477

475:                                              ; preds = %467
  call void @__assert_fail(ptr noundef @.str.64, ptr noundef @.str.18, i32 noundef 1304, ptr noundef @__PRETTY_FUNCTION__._ZNK3ipx5Model27DualizeBackInteriorSolutionERKSt8valarrayIdES4_S4_S4_S4_S4_RS2_S5_S5_S5_S5_S5_S5_) #7
  unreachable

476:                                              ; No predecessors!
  br label %477

477:                                              ; preds = %476, %474
  br label %478

478:                                              ; preds = %477
  %479 = load i32, ptr %47, align 4, !tbaa !9
  %480 = add nsw i32 %479, 1
  store i32 %480, ptr %47, align 4, !tbaa !9
  br label %351, !llvm.loop !41

481:                                              ; preds = %355
  %482 = load ptr, ptr %20, align 8, !tbaa !5
  %483 = call noundef ptr @_ZSt5beginIdEPKT_RKSt8valarrayIS0_E(ptr noundef nonnull align 8 dereferenceable(16) %482) #6
  %484 = getelementptr inbounds %"class.ipx::Model", ptr %49, i32 0, i32 15
  %485 = load i32, ptr %484, align 8, !tbaa !32
  %486 = load ptr, ptr %27, align 8, !tbaa !5
  %487 = call noundef ptr @_ZSt5beginIdEPT_RSt8valarrayIS0_E(ptr noundef nonnull align 8 dereferenceable(16) %486) #6
  %488 = call noundef ptr @_ZSt6copy_nIPKdiPdET1_T_T0_S3_(ptr noundef %483, i32 noundef %485, ptr noundef %487)
  %489 = load ptr, ptr %21, align 8, !tbaa !5
  %490 = call noundef ptr @_ZSt5beginIdEPKT_RKSt8valarrayIS0_E(ptr noundef nonnull align 8 dereferenceable(16) %489) #6
  %491 = getelementptr inbounds %"class.ipx::Model", ptr %49, i32 0, i32 15
  %492 = load i32, ptr %491, align 8, !tbaa !32
  %493 = load ptr, ptr %28, align 8, !tbaa !5
  %494 = call noundef ptr @_ZSt5beginIdEPT_RSt8valarrayIS0_E(ptr noundef nonnull align 8 dereferenceable(16) %493) #6
  %495 = call noundef ptr @_ZSt6copy_nIPKdiPdET1_T_T0_S3_(ptr noundef %490, i32 noundef %492, ptr noundef %494)
  %496 = load ptr, ptr %17, align 8, !tbaa !5
  %497 = call noundef ptr @_ZSt5beginIdEPKT_RKSt8valarrayIS0_E(ptr noundef nonnull align 8 dereferenceable(16) %496) #6
  %498 = getelementptr inbounds %"class.ipx::Model", ptr %49, i32 0, i32 15
  %499 = load i32, ptr %498, align 8, !tbaa !32
  %500 = load ptr, ptr %23, align 8, !tbaa !5
  %501 = call noundef ptr @_ZSt5beginIdEPT_RSt8valarrayIS0_E(ptr noundef nonnull align 8 dereferenceable(16) %500) #6
  %502 = call noundef ptr @_ZSt6copy_nIPKdiPdET1_T_T0_S3_(ptr noundef %497, i32 noundef %499, ptr noundef %501)
  %503 = load ptr, ptr %18, align 8, !tbaa !5
  %504 = call noundef ptr @_ZSt5beginIdEPKT_RKSt8valarrayIS0_E(ptr noundef nonnull align 8 dereferenceable(16) %503) #6
  %505 = getelementptr inbounds %"class.ipx::Model", ptr %49, i32 0, i32 15
  %506 = load i32, ptr %505, align 8, !tbaa !32
  %507 = load ptr, ptr %24, align 8, !tbaa !5
  %508 = call noundef ptr @_ZSt5beginIdEPT_RSt8valarrayIS0_E(ptr noundef nonnull align 8 dereferenceable(16) %507) #6
  %509 = call noundef ptr @_ZSt6copy_nIPKdiPdET1_T_T0_S3_(ptr noundef %504, i32 noundef %506, ptr noundef %508)
  call void @llvm.lifetime.start.p0(i64 4, ptr %48) #6
  store i32 0, ptr %48, align 4, !tbaa !9
  br label %510

510:                                              ; preds = %563, %481
  %511 = load i32, ptr %48, align 4, !tbaa !9
  %512 = load i32, ptr %29, align 4, !tbaa !9
  %513 = icmp slt i32 %511, %512
  br i1 %513, label %515, label %514

514:                                              ; preds = %510
  call void @llvm.lifetime.end.p0(i64 4, ptr %48) #6
  br label %566

515:                                              ; preds = %510
  %516 = getelementptr inbounds %"class.ipx::Model", ptr %49, i32 0, i32 19
  %517 = load i32, ptr %48, align 4, !tbaa !9
  %518 = sext i32 %517 to i64
  %519 = call noundef nonnull align 1 dereferenceable(1) ptr @_ZNKSt6vectorIcSaIcEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %516, i64 noundef %518) #6
  %520 = load i8, ptr %519, align 1, !tbaa !34
  %521 = sext i8 %520 to i32
  switch i32 %521, label %552 [
    i32 61, label %522
    i32 60, label %527
    i32 62, label %539
  ]

522:                                              ; preds = %515
  %523 = load ptr, ptr %25, align 8, !tbaa !5
  %524 = load i32, ptr %48, align 4, !tbaa !9
  %525 = sext i32 %524 to i64
  %526 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt8valarrayIdEixEm(ptr noundef nonnull align 8 dereferenceable(16) %523, i64 noundef %525) #6
  store double 0.000000e+00, ptr %526, align 8, !tbaa !35
  br label %552

527:                                              ; preds = %515
  %528 = load ptr, ptr %17, align 8, !tbaa !5
  %529 = load i32, ptr %30, align 4, !tbaa !9
  %530 = load i32, ptr %48, align 4, !tbaa !9
  %531 = add nsw i32 %529, %530
  %532 = sext i32 %531 to i64
  %533 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNKSt8valarrayIdEixEm(ptr noundef nonnull align 8 dereferenceable(16) %528, i64 noundef %532) #6
  %534 = load double, ptr %533, align 8, !tbaa !35
  %535 = load ptr, ptr %25, align 8, !tbaa !5
  %536 = load i32, ptr %48, align 4, !tbaa !9
  %537 = sext i32 %536 to i64
  %538 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt8valarrayIdEixEm(ptr noundef nonnull align 8 dereferenceable(16) %535, i64 noundef %537) #6
  store double %534, ptr %538, align 8, !tbaa !35
  br label %552

539:                                              ; preds = %515
  %540 = load ptr, ptr %18, align 8, !tbaa !5
  %541 = load i32, ptr %30, align 4, !tbaa !9
  %542 = load i32, ptr %48, align 4, !tbaa !9
  %543 = add nsw i32 %541, %542
  %544 = sext i32 %543 to i64
  %545 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNKSt8valarrayIdEixEm(ptr noundef nonnull align 8 dereferenceable(16) %540, i64 noundef %544) #6
  %546 = load double, ptr %545, align 8, !tbaa !35
  %547 = fneg double %546
  %548 = load ptr, ptr %25, align 8, !tbaa !5
  %549 = load i32, ptr %48, align 4, !tbaa !9
  %550 = sext i32 %549 to i64
  %551 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt8valarrayIdEixEm(ptr noundef nonnull align 8 dereferenceable(16) %548, i64 noundef %550) #6
  store double %547, ptr %551, align 8, !tbaa !35
  br label %552

552:                                              ; preds = %539, %527, %522, %515
  %553 = load ptr, ptr %25, align 8, !tbaa !5
  %554 = load i32, ptr %48, align 4, !tbaa !9
  %555 = sext i32 %554 to i64
  %556 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt8valarrayIdEixEm(ptr noundef nonnull align 8 dereferenceable(16) %553, i64 noundef %555) #6
  %557 = load double, ptr %556, align 8, !tbaa !35
  %558 = call noundef zeroext i1 @_ZSt8isfinited(double noundef %557)
  br i1 %558, label %559, label %560

559:                                              ; preds = %552
  br label %562

560:                                              ; preds = %552
  call void @__assert_fail(ptr noundef @.str.69, ptr noundef @.str.18, i32 noundef 1328, ptr noundef @__PRETTY_FUNCTION__._ZNK3ipx5Model27DualizeBackInteriorSolutionERKSt8valarrayIdES4_S4_S4_S4_S4_RS2_S5_S5_S5_S5_S5_S5_) #7
  unreachable

561:                                              ; No predecessors!
  br label %562

562:                                              ; preds = %561, %559
  br label %563

563:                                              ; preds = %562
  %564 = load i32, ptr %48, align 4, !tbaa !9
  %565 = add nsw i32 %564, 1
  store i32 %565, ptr %48, align 4, !tbaa !9
  br label %510, !llvm.loop !42

566:                                              ; preds = %514
  br label %567

567:                                              ; preds = %566, %326
  call void @llvm.lifetime.end.p0(i64 4, ptr %30) #6
  call void @llvm.lifetime.end.p0(i64 4, ptr %29) #6
  ret void
}

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

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

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

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

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

; Function Attrs: inlinehint mustprogress nounwind uwtable
declare dso_local noundef zeroext i1 @_ZN9__gnu_cxxneIPKiSt6vectorIiSaIiEEEEbRKNS_17__normal_iteratorIT_T0_EESB_(ptr noundef nonnull align 8 dereferenceable(8), ptr noundef nonnull align 8 dereferenceable(8)) #2

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

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

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

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

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

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

!0 = !{i32 1, !"wchar_size", i32 4}
!1 = !{i32 8, !"PIC Level", i32 2}
!2 = !{i32 7, !"PIE Level", i32 2}
!3 = !{i32 7, !"uwtable", i32 2}
!4 = !{!"clang version 19.1.0 (git@github.com:llvm/llvm-project.git a4bf6cd7cfb1a1421ba92bca9d017b49936c55e4)"}
!5 = !{!6, !6, i64 0}
!6 = !{!"any pointer", !7, i64 0}
!7 = !{!"omnipotent char", !8, i64 0}
!8 = !{!"Simple C++ TBAA"}
!9 = !{!10, !10, i64 0}
!10 = !{!"int", !7, i64 0}
!11 = !{!12, !13, i64 0}
!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 = !{i8 0, i8 2}
!31 = !{}
!32 = !{!12, !10, i64 368}
!33 = !{!12, !10, i64 360}
!34 = !{!7, !7, i64 0}
!35 = !{!25, !25, i64 0}
!36 = distinct !{!36, !37}
!37 = !{!"llvm.loop.mustprogress"}
!38 = distinct !{!38, !37}
!39 = distinct !{!39, !37}
!40 = distinct !{!40, !37}
!41 = distinct !{!41, !37}
!42 = distinct !{!42, !37}


; 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::_Expr.17" = type { %"struct.std::__detail::_UnClos" }
%"struct.std::__detail::_UnClos" = type { %"class.std::__detail::_UnBase" }
%"class.std::__detail::_UnBase" = type { ptr }
%"class.__gnu_cxx::__normal_iterator.16" = type { ptr }

@.str.18 = external hidden unnamed_addr constant [70 x i8], align 1
@.str.55 = external hidden unnamed_addr constant [14 x i8], align 1
@.str.57 = external hidden unnamed_addr constant [17 x i8], align 1
@.str.58 = external hidden unnamed_addr constant [14 x i8], align 1
@__PRETTY_FUNCTION__._ZNK3ipx5Model27DualizeBackInteriorSolutionERKSt8valarrayIdES4_S4_S4_S4_S4_RS2_S5_S5_S5_S5_S5_S5_ = external hidden unnamed_addr constant [217 x i8], align 1
@.str.63 = external hidden unnamed_addr constant [43 x i8], align 1
@.str.64 = external hidden unnamed_addr constant [25 x i8], align 1
@.str.65 = external hidden unnamed_addr constant [7 x i8], align 1
@.str.66 = external hidden unnamed_addr constant [41 x i8], align 1
@.str.67 = external hidden unnamed_addr constant [40 x i8], align 1
@.str.68 = external hidden unnamed_addr constant [35 x i8], align 1
@.str.69 = external hidden unnamed_addr constant [29 x i8], align 1

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

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

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

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

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

; 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 uwtable
declare dso_local noundef ptr @_ZSt6copy_nIPKdiPdET1_T_T0_S3_(ptr noundef, i32 noundef, ptr noundef) local_unnamed_addr #4

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

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

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

; Function Attrs: mustprogress uwtable
define dso_local 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) %7, ptr noundef nonnull align 8 dereferenceable(16) %8, 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) local_unnamed_addr #5 align 2 {
  %15 = alloca %"class.std::_Expr.17", align 8
  %16 = alloca double, align 8
  %17 = alloca %"class.__gnu_cxx::__normal_iterator.16", align 8
  %18 = alloca %"class.__gnu_cxx::__normal_iterator.16", align 8
  %19 = alloca double, align 8
  %20 = alloca %"class.__gnu_cxx::__normal_iterator.16", align 8
  %21 = alloca %"class.__gnu_cxx::__normal_iterator.16", align 8
  %22 = tail call noundef i32 @_ZNK3ipx5Model4rowsEv(ptr noundef nonnull align 8 dereferenceable(704) %0)
  %23 = tail call noundef i32 @_ZNK3ipx5Model4colsEv(ptr noundef nonnull align 8 dereferenceable(704) %0)
  %24 = load i8, ptr %0, align 8, !tbaa !5, !range !28, !noundef !29
  %25 = trunc nuw i8 %24 to i1
  br i1 %25, label %26, label %152

26:                                               ; preds = %14
  %27 = getelementptr inbounds i8, ptr %0, i64 368
  %28 = load i32, ptr %27, align 8, !tbaa !30
  %29 = icmp eq i32 %28, %22
  br i1 %29, label %31, label %30

30:                                               ; preds = %26
  tail call void @__assert_fail(ptr noundef nonnull @.str.55, ptr noundef nonnull @.str.18, i32 noundef 1205, ptr noundef nonnull @__PRETTY_FUNCTION__._ZNK3ipx5Model27DualizeBackInteriorSolutionERKSt8valarrayIdES4_S4_S4_S4_S4_RS2_S5_S5_S5_S5_S5_S5_) #6
  unreachable

31:                                               ; preds = %26
  %32 = getelementptr inbounds i8, ptr %0, i64 360
  %33 = load i32, ptr %32, align 8, !tbaa !31
  %34 = getelementptr inbounds i8, ptr %0, i64 384
  %35 = tail call noundef i64 @_ZNKSt6vectorIiSaIiEE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24) %34) #7
  %36 = trunc i64 %35 to i32
  %37 = add nsw i32 %33, %36
  %38 = icmp eq i32 %37, %23
  br i1 %38, label %40, label %39

39:                                               ; preds = %31
  tail call void @__assert_fail(ptr noundef nonnull @.str.63, ptr noundef nonnull @.str.18, i32 noundef 1206, ptr noundef nonnull @__PRETTY_FUNCTION__._ZNK3ipx5Model27DualizeBackInteriorSolutionERKSt8valarrayIdES4_S4_S4_S4_S4_RS2_S5_S5_S5_S5_S5_S5_) #6
  unreachable

40:                                               ; preds = %31
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %15) #7
  %41 = tail call ptr @_ZNKSt8valarrayIdEngEv(ptr noundef nonnull align 8 dereferenceable(16) %4)
  store ptr %41, ptr %15, align 8
  %42 = call noundef nonnull align 8 dereferenceable(16) ptr @_ZNSt8valarrayIdEaSINSt8__detail7_UnClosISt8__negateSt9_ValArraydEEEERS0_RKSt5_ExprIT_dE(ptr noundef nonnull align 8 dereferenceable(16) %7, ptr noundef nonnull align 8 dereferenceable(8) %15)
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %15) #7
  %43 = load i32, ptr %32, align 8, !tbaa !31
  %44 = icmp sgt i32 %43, 0
  br i1 %44, label %.lr.ph154, label %._crit_edge155

.lr.ph154:                                        ; preds = %40
  %45 = getelementptr inbounds i8, ptr %0, i64 408
  br label %59

46:                                               ; preds = %73
  %indvars.iv.next183 = add nuw nsw i64 %indvars.iv182, 1
  %47 = load i32, ptr %32, align 8, !tbaa !31
  %48 = sext i32 %47 to i64
  %49 = icmp slt i64 %indvars.iv.next183, %48
  br i1 %49, label %59, label %._crit_edge155, !llvm.loop !32

._crit_edge155:                                   ; preds = %46, %40
  %50 = call noundef ptr @_ZSt5beginIdEPKT_RKSt8valarrayIS0_E(ptr noundef nonnull align 8 dereferenceable(16) %2) #7
  %51 = sext i32 %23 to i64
  %52 = getelementptr inbounds double, ptr %50, i64 %51
  %53 = load i32, ptr %27, align 8, !tbaa !30
  %54 = call noundef ptr @_ZSt5beginIdEPT_RSt8valarrayIS0_E(ptr noundef nonnull align 8 dereferenceable(16) %12) #7
  %55 = call noundef ptr @_ZSt6copy_nIPKdiPdET1_T_T0_S3_(ptr noundef %52, i32 noundef %53, ptr noundef %54)
  %56 = load i32, ptr %27, align 8, !tbaa !30
  %57 = icmp sgt i32 %56, 0
  br i1 %57, label %.lr.ph158, label %._crit_edge159

.lr.ph158:                                        ; preds = %._crit_edge155
  %58 = getelementptr inbounds i8, ptr %0, i64 488
  br label %84

59:                                               ; preds = %.lr.ph154, %46
  %indvars.iv182 = phi i64 [ 0, %.lr.ph154 ], [ %indvars.iv.next183, %46 ]
  %60 = call noundef nonnull align 1 dereferenceable(1) ptr @_ZNKSt6vectorIcSaIcEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %45, i64 noundef %indvars.iv182) #7
  %61 = load i8, ptr %60, align 1, !tbaa !34
  switch i8 %61, label %73 [
    i8 61, label %62
    i8 60, label %65
    i8 62, label %69
  ]

62:                                               ; preds = %59
  %63 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNKSt8valarrayIdEixEm(ptr noundef nonnull align 8 dereferenceable(16) %1, i64 noundef %indvars.iv182) #7
  %64 = load double, ptr %63, align 8, !tbaa !35
  br label %.sink.split

65:                                               ; preds = %59
  %66 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNKSt8valarrayIdEixEm(ptr noundef nonnull align 8 dereferenceable(16) %3, i64 noundef %indvars.iv182) #7
  %67 = load double, ptr %66, align 8, !tbaa !35
  %68 = fneg double %67
  br label %.sink.split

69:                                               ; preds = %59
  %70 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNKSt8valarrayIdEixEm(ptr noundef nonnull align 8 dereferenceable(16) %2, i64 noundef %indvars.iv182) #7
  %71 = load double, ptr %70, align 8, !tbaa !35
  br label %.sink.split

.sink.split:                                      ; preds = %62, %65, %69
  %.sink = phi double [ %71, %69 ], [ %68, %65 ], [ %64, %62 ]
  %72 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt8valarrayIdEixEm(ptr noundef nonnull align 8 dereferenceable(16) %11, i64 noundef %indvars.iv182) #7
  store double %.sink, ptr %72, align 8, !tbaa !35
  br label %73

73:                                               ; preds = %.sink.split, %59
  %74 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt8valarrayIdEixEm(ptr noundef nonnull align 8 dereferenceable(16) %11, i64 noundef %indvars.iv182) #7
  %75 = load double, ptr %74, align 8, !tbaa !35
  %76 = call noundef zeroext i1 @_ZSt8isfinited(double noundef %75)
  br i1 %76, label %46, label %77

77:                                               ; preds = %73
  call void @__assert_fail(ptr noundef nonnull @.str.64, ptr noundef nonnull @.str.18, i32 noundef 1226, ptr noundef nonnull @__PRETTY_FUNCTION__._ZNK3ipx5Model27DualizeBackInteriorSolutionERKSt8valarrayIdES4_S4_S4_S4_S4_RS2_S5_S5_S5_S5_S5_S5_) #6
  unreachable

._crit_edge159:                                   ; preds = %90, %._crit_edge155
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %16) #7
  store double 0.000000e+00, ptr %16, align 8, !tbaa !35
  %78 = call noundef nonnull align 8 dereferenceable(16) ptr @_ZNSt8valarrayIdEaSERKd(ptr noundef nonnull align 8 dereferenceable(16) %13, ptr noundef nonnull align 8 dereferenceable(8) %16)
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %16) #7
  %79 = load i32, ptr %32, align 8, !tbaa !31
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %17) #7
  %80 = call ptr @_ZNKSt6vectorIiSaIiEE5beginEv(ptr noundef nonnull align 8 dereferenceable(24) %34) #7
  store ptr %80, ptr %17, align 8
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %18) #7
  %81 = call ptr @_ZNKSt6vectorIiSaIiEE3endEv(ptr noundef nonnull align 8 dereferenceable(24) %34) #7
  store ptr %81, ptr %18, align 8
  %82 = call noundef zeroext i1 @_ZN9__gnu_cxxneIPKiSt6vectorIiSaIiEEEEbRKNS_17__normal_iteratorIT_T0_EESB_(ptr noundef nonnull align 8 dereferenceable(8) %17, ptr noundef nonnull align 8 dereferenceable(8) %18) #7
  br i1 %82, label %.lr.ph162.preheader, label %._crit_edge163

.lr.ph162.preheader:                              ; preds = %._crit_edge159
  %83 = sext i32 %79 to i64
  br label %.lr.ph162

84:                                               ; preds = %.lr.ph158, %90
  %indvars.iv185 = phi i64 [ 0, %.lr.ph158 ], [ %indvars.iv.next186, %90 ]
  %85 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNKSt8valarrayIdEixEm(ptr noundef nonnull align 8 dereferenceable(16) %58, i64 noundef %indvars.iv185) #7
  %86 = load double, ptr %85, align 8, !tbaa !35
  %87 = call noundef zeroext i1 @_ZSt8isfinited(double noundef %86)
  br i1 %87, label %90, label %88

88:                                               ; preds = %84
  %89 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt8valarrayIdEixEm(ptr noundef nonnull align 8 dereferenceable(16) %12, i64 noundef %indvars.iv185) #7
  store double 0.000000e+00, ptr %89, align 8, !tbaa !35
  br label %90

90:                                               ; preds = %84, %88
  %indvars.iv.next186 = add nuw nsw i64 %indvars.iv185, 1
  %91 = load i32, ptr %27, align 8, !tbaa !30
  %92 = sext i32 %91 to i64
  %93 = icmp slt i64 %indvars.iv.next186, %92
  br i1 %93, label %84, label %._crit_edge159, !llvm.loop !36

._crit_edge163.loopexit:                          ; preds = %.lr.ph162
  %94 = trunc nsw i64 %indvars.iv.next189 to i32
  br label %._crit_edge163

._crit_edge163:                                   ; preds = %._crit_edge163.loopexit, %._crit_edge159
  %.0142.lcssa = phi i32 [ %79, %._crit_edge159 ], [ %94, %._crit_edge163.loopexit ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %18) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %17) #7
  %95 = icmp eq i32 %.0142.lcssa, %23
  br i1 %95, label %.preheader146, label %106

.preheader146:                                    ; preds = %._crit_edge163
  %96 = icmp sgt i32 %22, 0
  br i1 %96, label %.lr.ph165, label %._crit_edge166

.lr.ph165:                                        ; preds = %.preheader146
  %97 = getelementptr inbounds i8, ptr %0, i64 488
  %wide.trip.count194 = zext nneg i32 %22 to i64
  br label %113

.lr.ph162:                                        ; preds = %.lr.ph162.preheader, %.lr.ph162
  %indvars.iv188 = phi i64 [ %83, %.lr.ph162.preheader ], [ %indvars.iv.next189, %.lr.ph162 ]
  %98 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNK9__gnu_cxx17__normal_iteratorIPKiSt6vectorIiSaIiEEEdeEv(ptr noundef nonnull align 8 dereferenceable(8) %17) #7
  %99 = load i32, ptr %98, align 4, !tbaa !37
  %indvars.iv.next189 = add nsw i64 %indvars.iv188, 1
  %100 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNKSt8valarrayIdEixEm(ptr noundef nonnull align 8 dereferenceable(16) %2, i64 noundef %indvars.iv188) #7
  %101 = load double, ptr %100, align 8, !tbaa !35
  %102 = sext i32 %99 to i64
  %103 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt8valarrayIdEixEm(ptr noundef nonnull align 8 dereferenceable(16) %13, i64 noundef %102) #7
  store double %101, ptr %103, align 8, !tbaa !35
  %104 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZN9__gnu_cxx17__normal_iteratorIPKiSt6vectorIiSaIiEEEppEv(ptr noundef nonnull align 8 dereferenceable(8) %17) #7
  %105 = call noundef zeroext i1 @_ZN9__gnu_cxxneIPKiSt6vectorIiSaIiEEEEbRKNS_17__normal_iteratorIT_T0_EESB_(ptr noundef nonnull align 8 dereferenceable(8) %17, ptr noundef nonnull align 8 dereferenceable(8) %18) #7
  br i1 %105, label %.lr.ph162, label %._crit_edge163.loopexit

106:                                              ; preds = %._crit_edge163
  call void @__assert_fail(ptr noundef nonnull @.str.65, ptr noundef nonnull @.str.18, i32 noundef 1248, ptr noundef nonnull @__PRETTY_FUNCTION__._ZNK3ipx5Model27DualizeBackInteriorSolutionERKSt8valarrayIdES4_S4_S4_S4_S4_RS2_S5_S5_S5_S5_S5_S5_) #6
  unreachable

._crit_edge166:                                   ; preds = %121, %.preheader146
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %19) #7
  store double 0x7FF0000000000000, ptr %19, align 8, !tbaa !35
  %107 = call noundef nonnull align 8 dereferenceable(16) ptr @_ZNSt8valarrayIdEaSERKd(ptr noundef nonnull align 8 dereferenceable(16) %9, ptr noundef nonnull align 8 dereferenceable(8) %19)
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %19) #7
  %108 = load i32, ptr %32, align 8, !tbaa !31
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %20) #7
  %109 = call ptr @_ZNKSt6vectorIiSaIiEE5beginEv(ptr noundef nonnull align 8 dereferenceable(24) %34) #7
  store ptr %109, ptr %20, align 8
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %21) #7
  %110 = call ptr @_ZNKSt6vectorIiSaIiEE3endEv(ptr noundef nonnull align 8 dereferenceable(24) %34) #7
  store ptr %110, ptr %21, align 8
  %111 = call noundef zeroext i1 @_ZN9__gnu_cxxneIPKiSt6vectorIiSaIiEEEEbRKNS_17__normal_iteratorIT_T0_EESB_(ptr noundef nonnull align 8 dereferenceable(8) %20, ptr noundef nonnull align 8 dereferenceable(8) %21) #7
  br i1 %111, label %.lr.ph169.preheader, label %._crit_edge170

.lr.ph169.preheader:                              ; preds = %._crit_edge166
  %112 = sext i32 %108 to i64
  br label %.lr.ph169

113:                                              ; preds = %.lr.ph165, %121
  %indvars.iv191 = phi i64 [ 0, %.lr.ph165 ], [ %indvars.iv.next192, %121 ]
  %114 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNKSt8valarrayIdEixEm(ptr noundef nonnull align 8 dereferenceable(16) %97, i64 noundef %indvars.iv191) #7
  %115 = load double, ptr %114, align 8, !tbaa !35
  %116 = call noundef zeroext i1 @_ZSt8isfinited(double noundef %115)
  br i1 %116, label %117, label %121

117:                                              ; preds = %113
  %118 = add nsw i64 %indvars.iv191, %51
  %119 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNKSt8valarrayIdEixEm(ptr noundef nonnull align 8 dereferenceable(16) %5, i64 noundef %118) #7
  %120 = load double, ptr %119, align 8, !tbaa !35
  br label %121

121:                                              ; preds = %113, %117
  %.sink204 = phi double [ %120, %117 ], [ 0x7FF0000000000000, %113 ]
  %122 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt8valarrayIdEixEm(ptr noundef nonnull align 8 dereferenceable(16) %8, i64 noundef %indvars.iv191) #7
  store double %.sink204, ptr %122, align 8, !tbaa !35
  %indvars.iv.next192 = add nuw nsw i64 %indvars.iv191, 1
  %exitcond195.not = icmp eq i64 %indvars.iv.next192, %wide.trip.count194
  br i1 %exitcond195.not, label %._crit_edge166, label %113, !llvm.loop !38

._crit_edge170.loopexit:                          ; preds = %.lr.ph169
  %123 = trunc nsw i64 %indvars.iv.next197 to i32
  br label %._crit_edge170

._crit_edge170:                                   ; preds = %._crit_edge170.loopexit, %._crit_edge166
  %.1.lcssa = phi i32 [ %108, %._crit_edge166 ], [ %123, %._crit_edge170.loopexit ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %21) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %20) #7
  %124 = icmp eq i32 %.1.lcssa, %23
  br i1 %124, label %.preheader, label %136

.preheader:                                       ; preds = %._crit_edge170
  %125 = load i32, ptr %32, align 8, !tbaa !31
  %126 = icmp sgt i32 %125, 0
  br i1 %126, label %.lr.ph173, label %.loopexit

.lr.ph173:                                        ; preds = %.preheader
  %127 = getelementptr inbounds i8, ptr %0, i64 408
  br label %137

.lr.ph169:                                        ; preds = %.lr.ph169.preheader, %.lr.ph169
  %indvars.iv196 = phi i64 [ %112, %.lr.ph169.preheader ], [ %indvars.iv.next197, %.lr.ph169 ]
  %128 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNK9__gnu_cxx17__normal_iteratorIPKiSt6vectorIiSaIiEEEdeEv(ptr noundef nonnull align 8 dereferenceable(8) %20) #7
  %129 = load i32, ptr %128, align 4, !tbaa !37
  %indvars.iv.next197 = add nsw i64 %indvars.iv196, 1
  %130 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNKSt8valarrayIdEixEm(ptr noundef nonnull align 8 dereferenceable(16) %5, i64 noundef %indvars.iv196) #7
  %131 = load double, ptr %130, align 8, !tbaa !35
  %132 = sext i32 %129 to i64
  %133 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt8valarrayIdEixEm(ptr noundef nonnull align 8 dereferenceable(16) %9, i64 noundef %132) #7
  store double %131, ptr %133, align 8, !tbaa !35
  %134 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZN9__gnu_cxx17__normal_iteratorIPKiSt6vectorIiSaIiEEEppEv(ptr noundef nonnull align 8 dereferenceable(8) %20) #7
  %135 = call noundef zeroext i1 @_ZN9__gnu_cxxneIPKiSt6vectorIiSaIiEEEEbRKNS_17__normal_iteratorIT_T0_EESB_(ptr noundef nonnull align 8 dereferenceable(8) %20, ptr noundef nonnull align 8 dereferenceable(8) %21) #7
  br i1 %135, label %.lr.ph169, label %._crit_edge170.loopexit

136:                                              ; preds = %._crit_edge170
  call void @__assert_fail(ptr noundef nonnull @.str.65, ptr noundef nonnull @.str.18, i32 noundef 1265, ptr noundef nonnull @__PRETTY_FUNCTION__._ZNK3ipx5Model27DualizeBackInteriorSolutionERKSt8valarrayIdES4_S4_S4_S4_S4_RS2_S5_S5_S5_S5_S5_S5_) #6
  unreachable

137:                                              ; preds = %.lr.ph173, %148
  %indvars.iv199 = phi i64 [ 0, %.lr.ph173 ], [ %indvars.iv.next200, %148 ]
  %138 = call noundef nonnull align 1 dereferenceable(1) ptr @_ZNKSt6vectorIcSaIcEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %127, i64 noundef %indvars.iv199) #7
  %139 = load i8, ptr %138, align 1, !tbaa !34
  switch i8 %139, label %148 [
    i8 61, label %.sink.split206
    i8 60, label %140
    i8 62, label %143
  ]

140:                                              ; preds = %137
  %141 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNKSt8valarrayIdEixEm(ptr noundef nonnull align 8 dereferenceable(16) %6, i64 noundef %indvars.iv199) #7
  %142 = load double, ptr %141, align 8, !tbaa !35
  br label %.sink.split206

143:                                              ; preds = %137
  %144 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNKSt8valarrayIdEixEm(ptr noundef nonnull align 8 dereferenceable(16) %5, i64 noundef %indvars.iv199) #7
  %145 = load double, ptr %144, align 8, !tbaa !35
  %146 = fneg double %145
  br label %.sink.split206

.sink.split206:                                   ; preds = %137, %143, %140
  %.sink207 = phi double [ %142, %140 ], [ %146, %143 ], [ 0.000000e+00, %137 ]
  %147 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt8valarrayIdEixEm(ptr noundef nonnull align 8 dereferenceable(16) %10, i64 noundef %indvars.iv199) #7
  store double %.sink207, ptr %147, align 8, !tbaa !35
  br label %148

148:                                              ; preds = %.sink.split206, %137
  %indvars.iv.next200 = add nuw nsw i64 %indvars.iv199, 1
  %149 = load i32, ptr %32, align 8, !tbaa !31
  %150 = sext i32 %149 to i64
  %151 = icmp slt i64 %indvars.iv.next200, %150
  br i1 %151, label %137, label %.loopexit, !llvm.loop !39

152:                                              ; preds = %14
  %153 = getelementptr inbounds i8, ptr %0, i64 360
  %154 = load i32, ptr %153, align 8, !tbaa !31
  %155 = icmp eq i32 %154, %22
  br i1 %155, label %157, label %156

156:                                              ; preds = %152
  tail call void @__assert_fail(ptr noundef nonnull @.str.57, ptr noundef nonnull @.str.18, i32 noundef 1282, ptr noundef nonnull @__PRETTY_FUNCTION__._ZNK3ipx5Model27DualizeBackInteriorSolutionERKSt8valarrayIdES4_S4_S4_S4_S4_RS2_S5_S5_S5_S5_S5_S5_) #6
  unreachable

157:                                              ; preds = %152
  %158 = getelementptr inbounds i8, ptr %0, i64 368
  %159 = load i32, ptr %158, align 8, !tbaa !30
  %160 = icmp eq i32 %159, %23
  br i1 %160, label %162, label %161

161:                                              ; preds = %157
  tail call void @__assert_fail(ptr noundef nonnull @.str.58, ptr noundef nonnull @.str.18, i32 noundef 1283, ptr noundef nonnull @__PRETTY_FUNCTION__._ZNK3ipx5Model27DualizeBackInteriorSolutionERKSt8valarrayIdES4_S4_S4_S4_S4_RS2_S5_S5_S5_S5_S5_S5_) #6
  unreachable

162:                                              ; preds = %157
  %163 = tail call noundef ptr @_ZSt5beginIdEPKT_RKSt8valarrayIS0_E(ptr noundef nonnull align 8 dereferenceable(16) %1) #7
  %164 = load i32, ptr %158, align 8, !tbaa !30
  %165 = tail call noundef ptr @_ZSt5beginIdEPT_RSt8valarrayIS0_E(ptr noundef nonnull align 8 dereferenceable(16) %7) #7
  %166 = tail call noundef ptr @_ZSt6copy_nIPKdiPdET1_T_T0_S3_(ptr noundef %163, i32 noundef %164, ptr noundef %165)
  %167 = icmp sgt i32 %22, 0
  br i1 %167, label %.lr.ph, label %._crit_edge

.lr.ph:                                           ; preds = %162
  %168 = getelementptr inbounds i8, ptr %0, i64 312
  %169 = getelementptr inbounds i8, ptr %0, i64 328
  %170 = getelementptr inbounds i8, ptr %0, i64 408
  %171 = sext i32 %23 to i64
  %wide.trip.count = zext nneg i32 %22 to i64
  br label %191

172:                                              ; preds = %230
  %indvars.iv.next = add nuw nsw i64 %indvars.iv, 1
  %exitcond.not = icmp eq i64 %indvars.iv.next, %wide.trip.count
  br i1 %exitcond.not, label %._crit_edge, label %191, !llvm.loop !40

._crit_edge:                                      ; preds = %172, %162
  %173 = tail call noundef ptr @_ZSt5beginIdEPKT_RKSt8valarrayIS0_E(ptr noundef nonnull align 8 dereferenceable(16) %5) #7
  %174 = load i32, ptr %158, align 8, !tbaa !30
  %175 = tail call noundef ptr @_ZSt5beginIdEPT_RSt8valarrayIS0_E(ptr noundef nonnull align 8 dereferenceable(16) %12) #7
  %176 = tail call noundef ptr @_ZSt6copy_nIPKdiPdET1_T_T0_S3_(ptr noundef %173, i32 noundef %174, ptr noundef %175)
  %177 = tail call noundef ptr @_ZSt5beginIdEPKT_RKSt8valarrayIS0_E(ptr noundef nonnull align 8 dereferenceable(16) %6) #7
  %178 = load i32, ptr %158, align 8, !tbaa !30
  %179 = tail call noundef ptr @_ZSt5beginIdEPT_RSt8valarrayIS0_E(ptr noundef nonnull align 8 dereferenceable(16) %13) #7
  %180 = tail call noundef ptr @_ZSt6copy_nIPKdiPdET1_T_T0_S3_(ptr noundef %177, i32 noundef %178, ptr noundef %179)
  %181 = tail call noundef ptr @_ZSt5beginIdEPKT_RKSt8valarrayIS0_E(ptr noundef nonnull align 8 dereferenceable(16) %2) #7
  %182 = load i32, ptr %158, align 8, !tbaa !30
  %183 = tail call noundef ptr @_ZSt5beginIdEPT_RSt8valarrayIS0_E(ptr noundef nonnull align 8 dereferenceable(16) %8) #7
  %184 = tail call noundef ptr @_ZSt6copy_nIPKdiPdET1_T_T0_S3_(ptr noundef %181, i32 noundef %182, ptr noundef %183)
  %185 = tail call noundef ptr @_ZSt5beginIdEPKT_RKSt8valarrayIS0_E(ptr noundef nonnull align 8 dereferenceable(16) %3) #7
  %186 = load i32, ptr %158, align 8, !tbaa !30
  %187 = tail call noundef ptr @_ZSt5beginIdEPT_RSt8valarrayIS0_E(ptr noundef nonnull align 8 dereferenceable(16) %9) #7
  %188 = tail call noundef ptr @_ZSt6copy_nIPKdiPdET1_T_T0_S3_(ptr noundef %185, i32 noundef %186, ptr noundef %187)
  br i1 %167, label %.lr.ph151, label %.loopexit

.lr.ph151:                                        ; preds = %._crit_edge
  %189 = getelementptr inbounds i8, ptr %0, i64 408
  %190 = sext i32 %23 to i64
  %wide.trip.count180 = zext nneg i32 %22 to i64
  br label %236

191:                                              ; preds = %.lr.ph, %172
  %indvars.iv = phi i64 [ 0, %.lr.ph ], [ %indvars.iv.next, %172 ]
  %192 = add nsw i64 %indvars.iv, %171
  %193 = tail call noundef nonnull align 8 dereferenceable(8) ptr @_ZNKSt8valarrayIdEixEm(ptr noundef nonnull align 8 dereferenceable(16) %168, i64 noundef %192) #7
  %194 = load double, ptr %193, align 8, !tbaa !35
  %195 = fcmp oeq double %194, 0.000000e+00
  br i1 %195, label %.critedge, label %196

196:                                              ; preds = %191
  %197 = tail call noundef nonnull align 8 dereferenceable(8) ptr @_ZNKSt8valarrayIdEixEm(ptr noundef nonnull align 8 dereferenceable(16) %168, i64 noundef %192) #7
  %198 = load double, ptr %197, align 8, !tbaa !35
  %199 = fcmp oeq double %198, 0xFFF0000000000000
  br i1 %199, label %.critedge, label %200

200:                                              ; preds = %196
  tail call void @__assert_fail(ptr noundef nonnull @.str.66, ptr noundef nonnull @.str.18, i32 noundef 1290, ptr noundef nonnull @__PRETTY_FUNCTION__._ZNK3ipx5Model27DualizeBackInteriorSolutionERKSt8valarrayIdES4_S4_S4_S4_S4_RS2_S5_S5_S5_S5_S5_S5_) #6
  unreachable

.critedge:                                        ; preds = %191, %196
  %201 = tail call noundef nonnull align 8 dereferenceable(8) ptr @_ZNKSt8valarrayIdEixEm(ptr noundef nonnull align 8 dereferenceable(16) %169, i64 noundef %192) #7
  %202 = load double, ptr %201, align 8, !tbaa !35
  %203 = fcmp oeq double %202, 0.000000e+00
  br i1 %203, label %.critedge2, label %204

204:                                              ; preds = %.critedge
  %205 = tail call noundef nonnull align 8 dereferenceable(8) ptr @_ZNKSt8valarrayIdEixEm(ptr noundef nonnull align 8 dereferenceable(16) %169, i64 noundef %192) #7
  %206 = load double, ptr %205, align 8, !tbaa !35
  %207 = fcmp oeq double %206, 0x7FF0000000000000
  br i1 %207, label %.critedge2, label %208

208:                                              ; preds = %204
  tail call void @__assert_fail(ptr noundef nonnull @.str.67, ptr noundef nonnull @.str.18, i32 noundef 1291, ptr noundef nonnull @__PRETTY_FUNCTION__._ZNK3ipx5Model27DualizeBackInteriorSolutionERKSt8valarrayIdES4_S4_S4_S4_S4_RS2_S5_S5_S5_S5_S5_S5_) #6
  unreachable

.critedge2:                                       ; preds = %.critedge, %204
  %209 = tail call noundef nonnull align 8 dereferenceable(8) ptr @_ZNKSt8valarrayIdEixEm(ptr noundef nonnull align 8 dereferenceable(16) %168, i64 noundef %192) #7
  %210 = load double, ptr %209, align 8, !tbaa !35
  %211 = fcmp oeq double %210, 0.000000e+00
  br i1 %211, label %.critedge4, label %212

212:                                              ; preds = %.critedge2
  %213 = tail call noundef nonnull align 8 dereferenceable(8) ptr @_ZNKSt8valarrayIdEixEm(ptr noundef nonnull align 8 dereferenceable(16) %169, i64 noundef %192) #7
  %214 = load double, ptr %213, align 8, !tbaa !35
  %215 = fcmp oeq double %214, 0.000000e+00
  br i1 %215, label %.critedge4, label %216

216:                                              ; preds = %212
  tail call void @__assert_fail(ptr noundef nonnull @.str.68, ptr noundef nonnull @.str.18, i32 noundef 1292, ptr noundef nonnull @__PRETTY_FUNCTION__._ZNK3ipx5Model27DualizeBackInteriorSolutionERKSt8valarrayIdES4_S4_S4_S4_S4_RS2_S5_S5_S5_S5_S5_S5_) #6
  unreachable

.critedge4:                                       ; preds = %.critedge2, %212
  %217 = tail call noundef nonnull align 1 dereferenceable(1) ptr @_ZNKSt6vectorIcSaIcEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %170, i64 noundef %indvars.iv) #7
  %218 = load i8, ptr %217, align 1, !tbaa !34
  switch i8 %218, label %230 [
    i8 61, label %219
    i8 60, label %222
    i8 62, label %226
  ]

219:                                              ; preds = %.critedge4
  %220 = tail call noundef nonnull align 8 dereferenceable(8) ptr @_ZNKSt8valarrayIdEixEm(ptr noundef nonnull align 8 dereferenceable(16) %4, i64 noundef %indvars.iv) #7
  %221 = load double, ptr %220, align 8, !tbaa !35
  br label %.sink.split209

222:                                              ; preds = %.critedge4
  %223 = tail call noundef nonnull align 8 dereferenceable(8) ptr @_ZNKSt8valarrayIdEixEm(ptr noundef nonnull align 8 dereferenceable(16) %5, i64 noundef %192) #7
  %224 = load double, ptr %223, align 8, !tbaa !35
  %225 = fneg double %224
  br label %.sink.split209

226:                                              ; preds = %.critedge4
  %227 = tail call noundef nonnull align 8 dereferenceable(8) ptr @_ZNKSt8valarrayIdEixEm(ptr noundef nonnull align 8 dereferenceable(16) %6, i64 noundef %192) #7
  %228 = load double, ptr %227, align 8, !tbaa !35
  br label %.sink.split209

.sink.split209:                                   ; preds = %219, %222, %226
  %.sink210 = phi double [ %228, %226 ], [ %225, %222 ], [ %221, %219 ]
  %229 = tail call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt8valarrayIdEixEm(ptr noundef nonnull align 8 dereferenceable(16) %11, i64 noundef %indvars.iv) #7
  store double %.sink210, ptr %229, align 8, !tbaa !35
  br label %230

230:                                              ; preds = %.sink.split209, %.critedge4
  %231 = tail call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt8valarrayIdEixEm(ptr noundef nonnull align 8 dereferenceable(16) %11, i64 noundef %indvars.iv) #7
  %232 = load double, ptr %231, align 8, !tbaa !35
  %233 = tail call noundef zeroext i1 @_ZSt8isfinited(double noundef %232)
  br i1 %233, label %172, label %234

234:                                              ; preds = %230
  tail call void @__assert_fail(ptr noundef nonnull @.str.64, ptr noundef nonnull @.str.18, i32 noundef 1304, ptr noundef nonnull @__PRETTY_FUNCTION__._ZNK3ipx5Model27DualizeBackInteriorSolutionERKSt8valarrayIdES4_S4_S4_S4_S4_RS2_S5_S5_S5_S5_S5_S5_) #6
  unreachable

235:                                              ; preds = %249
  %indvars.iv.next178 = add nuw nsw i64 %indvars.iv177, 1
  %exitcond181.not = icmp eq i64 %indvars.iv.next178, %wide.trip.count180
  br i1 %exitcond181.not, label %.loopexit, label %236, !llvm.loop !41

236:                                              ; preds = %.lr.ph151, %235
  %indvars.iv177 = phi i64 [ 0, %.lr.ph151 ], [ %indvars.iv.next178, %235 ]
  %237 = tail call noundef nonnull align 1 dereferenceable(1) ptr @_ZNKSt6vectorIcSaIcEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %189, i64 noundef %indvars.iv177) #7
  %238 = load i8, ptr %237, align 1, !tbaa !34
  switch i8 %238, label %249 [
    i8 61, label %.sink.split212
    i8 60, label %239
    i8 62, label %243
  ]

239:                                              ; preds = %236
  %240 = add nsw i64 %indvars.iv177, %190
  %241 = tail call noundef nonnull align 8 dereferenceable(8) ptr @_ZNKSt8valarrayIdEixEm(ptr noundef nonnull align 8 dereferenceable(16) %2, i64 noundef %240) #7
  %242 = load double, ptr %241, align 8, !tbaa !35
  br label %.sink.split212

243:                                              ; preds = %236
  %244 = add nsw i64 %indvars.iv177, %190
  %245 = tail call noundef nonnull align 8 dereferenceable(8) ptr @_ZNKSt8valarrayIdEixEm(ptr noundef nonnull align 8 dereferenceable(16) %3, i64 noundef %244) #7
  %246 = load double, ptr %245, align 8, !tbaa !35
  %247 = fneg double %246
  br label %.sink.split212

.sink.split212:                                   ; preds = %236, %239, %243
  %.sink213 = phi double [ %247, %243 ], [ %242, %239 ], [ 0.000000e+00, %236 ]
  %248 = tail call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt8valarrayIdEixEm(ptr noundef nonnull align 8 dereferenceable(16) %10, i64 noundef %indvars.iv177) #7
  store double %.sink213, ptr %248, align 8, !tbaa !35
  br label %249

249:                                              ; preds = %.sink.split212, %236
  %250 = tail call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt8valarrayIdEixEm(ptr noundef nonnull align 8 dereferenceable(16) %10, i64 noundef %indvars.iv177) #7
  %251 = load double, ptr %250, align 8, !tbaa !35
  %252 = tail call noundef zeroext i1 @_ZSt8isfinited(double noundef %251)
  br i1 %252, label %235, label %253

253:                                              ; preds = %249
  tail call void @__assert_fail(ptr noundef nonnull @.str.69, ptr noundef nonnull @.str.18, i32 noundef 1328, ptr noundef nonnull @__PRETTY_FUNCTION__._ZNK3ipx5Model27DualizeBackInteriorSolutionERKSt8valarrayIdES4_S4_S4_S4_S4_RS2_S5_S5_S5_S5_S5_S5_) #6
  unreachable

.loopexit:                                        ; preds = %235, %148, %._crit_edge, %.preheader
  ret void
}

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

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

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

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

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

; Function Attrs: inlinehint mustprogress nounwind uwtable
declare dso_local noundef zeroext i1 @_ZN9__gnu_cxxneIPKiSt6vectorIiSaIiEEEEbRKNS_17__normal_iteratorIT_T0_EESB_(ptr noundef nonnull align 8 dereferenceable(8), ptr noundef nonnull align 8 dereferenceable(8)) local_unnamed_addr #2

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

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

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

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

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

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

!0 = !{i32 1, !"wchar_size", i32 4}
!1 = !{i32 8, !"PIC Level", i32 2}
!2 = !{i32 7, !"PIE Level", i32 2}
!3 = !{i32 7, !"uwtable", i32 2}
!4 = !{!"clang version 19.1.0 (git@github.com:llvm/llvm-project.git a4bf6cd7cfb1a1421ba92bca9d017b49936c55e4)"}
!5 = !{!6, !7, i64 0}
!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 = !{i8 0, i8 2}
!29 = !{}
!30 = !{!6, !10, i64 368}
!31 = !{!6, !10, i64 360}
!32 = distinct !{!32, !33}
!33 = !{!"llvm.loop.mustprogress"}
!34 = !{!8, !8, i64 0}
!35 = !{!23, !23, i64 0}
!36 = distinct !{!36, !33}
!37 = !{!10, !10, i64 0}
!38 = distinct !{!38, !33}
!39 = distinct !{!39, !33}
!40 = distinct !{!40, !33}
!41 = distinct !{!41, !33}


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