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

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

%"class.std::valarray" = type { i64, ptr }
%"class.std::_Expr" = type { %"struct.std::__detail::_BinClos" }
%"struct.std::__detail::_BinClos" = type { %"class.std::__detail::_BinBase1" }
%"class.std::__detail::_BinBase1" = type { double, ptr }
%"class.ipx::IPM" = type <{ ptr, ptr, ptr, ptr, double, double, i32, [4 x i8], double, i32, [4 x i8], double, i32, [4 x i8] }>
%struct.ipx_info = type { i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, double, double, double, double, double, double, double, double, double, double, double, double, double, double, i32, i32, i32, i32, i32, i32, i32, double, double, double, double, double, double, double, double, double, double, double, double, double, double, double, double, double, double, double, double, double, double, double, double, i32, i32, i32, i32, double, double, double, double }

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

declare i32 @__gxx_personality_v0(...)

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

; Function Attrs: mustprogress uwtable
define dso_local void @_ZN3ipx3IPM20ComputeStartingPointEv(ptr noundef nonnull align 8 dereferenceable(84) %0) #1 align 2 personality ptr @__gxx_personality_v0 {
  %2 = alloca ptr, align 8
  %3 = alloca ptr, align 8
  %4 = alloca i32, align 4
  %5 = alloca i32, align 4
  %6 = alloca ptr, align 8
  %7 = alloca ptr, align 8
  %8 = alloca ptr, align 8
  %9 = alloca ptr, align 8
  %10 = alloca ptr, align 8
  %11 = alloca %"class.std::valarray", align 8
  %12 = alloca %"class.std::valarray", align 8
  %13 = alloca ptr, align 8
  %14 = alloca i32, align 4
  %15 = alloca %"class.std::valarray", align 8
  %16 = alloca %"class.std::valarray", align 8
  %17 = alloca %"class.std::valarray", align 8
  %18 = alloca %"class.std::valarray", align 8
  %19 = alloca %"class.std::valarray", align 8
  %20 = alloca i32, align 4
  %21 = alloca i32, align 4
  %22 = alloca double, align 8
  %23 = alloca double, align 8
  %24 = alloca double, align 8
  %25 = alloca double, align 8
  %26 = alloca i32, align 4
  %27 = alloca double, align 8
  %28 = alloca double, align 8
  %29 = alloca double, align 8
  %30 = alloca double, align 8
  %31 = alloca i32, align 4
  %32 = alloca double, align 8
  %33 = alloca double, align 8
  %34 = alloca double, align 8
  %35 = alloca double, align 8
  %36 = alloca %"class.std::_Expr", align 8
  %37 = alloca double, align 8
  %38 = alloca double, align 8
  %39 = alloca i32, align 4
  %40 = alloca double, align 8
  %41 = alloca double, align 8
  %42 = alloca double, align 8
  %43 = alloca double, align 8
  %44 = alloca i32, align 4
  %45 = alloca double, align 8
  %46 = alloca double, align 8
  %47 = alloca double, align 8
  %48 = alloca i32, align 4
  %49 = alloca double, align 8
  %50 = alloca double, align 8
  %51 = alloca i32, align 4
  store ptr %0, ptr %2, align 8, !tbaa !5
  %52 = load ptr, ptr %2, align 8
  call void @llvm.lifetime.start.p0(i64 8, ptr %3) #7
  %53 = getelementptr inbounds %"class.ipx::IPM", ptr %52, i32 0, i32 2
  %54 = load ptr, ptr %53, align 8, !tbaa !9
  %55 = call noundef nonnull align 8 dereferenceable(704) ptr @_ZNK3ipx7Iterate5modelEv(ptr noundef nonnull align 8 dereferenceable(296) %54)
  store ptr %55, ptr %3, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 4, ptr %4) #7
  %56 = load ptr, ptr %3, align 8, !tbaa !5
  %57 = call noundef i32 @_ZNK3ipx5Model4rowsEv(ptr noundef nonnull align 8 dereferenceable(704) %56)
  store i32 %57, ptr %4, align 4, !tbaa !13
  call void @llvm.lifetime.start.p0(i64 4, ptr %5) #7
  %58 = load ptr, ptr %3, align 8, !tbaa !5
  %59 = call noundef i32 @_ZNK3ipx5Model4colsEv(ptr noundef nonnull align 8 dereferenceable(704) %58)
  store i32 %59, ptr %5, align 4, !tbaa !13
  call void @llvm.lifetime.start.p0(i64 8, ptr %6) #7
  %60 = load ptr, ptr %3, align 8, !tbaa !5
  %61 = call noundef nonnull align 8 dereferenceable(128) ptr @_ZNK3ipx5Model2AIEv(ptr noundef nonnull align 8 dereferenceable(704) %60)
  store ptr %61, ptr %6, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %7) #7
  %62 = load ptr, ptr %3, align 8, !tbaa !5
  %63 = call noundef nonnull align 8 dereferenceable(16) ptr @_ZNK3ipx5Model1bEv(ptr noundef nonnull align 8 dereferenceable(704) %62)
  store ptr %63, ptr %7, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %8) #7
  %64 = load ptr, ptr %3, align 8, !tbaa !5
  %65 = call noundef nonnull align 8 dereferenceable(16) ptr @_ZNK3ipx5Model1cEv(ptr noundef nonnull align 8 dereferenceable(704) %64)
  store ptr %65, ptr %8, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %9) #7
  %66 = load ptr, ptr %3, align 8, !tbaa !5
  %67 = call noundef nonnull align 8 dereferenceable(16) ptr @_ZNK3ipx5Model2lbEv(ptr noundef nonnull align 8 dereferenceable(704) %66)
  store ptr %67, ptr %9, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %10) #7
  %68 = load ptr, ptr %3, align 8, !tbaa !5
  %69 = call noundef nonnull align 8 dereferenceable(16) ptr @_ZNK3ipx5Model2ubEv(ptr noundef nonnull align 8 dereferenceable(704) %68)
  store ptr %69, ptr %10, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 16, ptr %11) #7
  %70 = load i32, ptr %5, align 4, !tbaa !13
  %71 = load i32, ptr %4, align 4, !tbaa !13
  %72 = add nsw i32 %70, %71
  %73 = sext i32 %72 to i64
  call void @_ZNSt8valarrayIdEC2Em(ptr noundef nonnull align 8 dereferenceable(16) %11, i64 noundef %73)
  call void @llvm.lifetime.start.p0(i64 16, ptr %12) #7
  %74 = load i32, ptr %5, align 4, !tbaa !13
  %75 = load i32, ptr %4, align 4, !tbaa !13
  %76 = add nsw i32 %74, %75
  %77 = sext i32 %76 to i64
  invoke void @_ZNSt8valarrayIdEC2Em(ptr noundef nonnull align 8 dereferenceable(16) %12, i64 noundef %77)
          to label %78 unwind label %111

78:                                               ; preds = %1
  call void @llvm.lifetime.start.p0(i64 16, ptr %15) #7
  %79 = load i32, ptr %5, align 4, !tbaa !13
  %80 = load i32, ptr %4, align 4, !tbaa !13
  %81 = add nsw i32 %79, %80
  %82 = sext i32 %81 to i64
  invoke void @_ZNSt8valarrayIdEC2Em(ptr noundef nonnull align 8 dereferenceable(16) %15, i64 noundef %82)
          to label %83 unwind label %115

83:                                               ; preds = %78
  call void @llvm.lifetime.start.p0(i64 16, ptr %16) #7
  %84 = load i32, ptr %4, align 4, !tbaa !13
  %85 = sext i32 %84 to i64
  invoke void @_ZNSt8valarrayIdEC2Em(ptr noundef nonnull align 8 dereferenceable(16) %16, i64 noundef %85)
          to label %86 unwind label %119

86:                                               ; preds = %83
  call void @llvm.lifetime.start.p0(i64 16, ptr %17) #7
  %87 = load i32, ptr %5, align 4, !tbaa !13
  %88 = load i32, ptr %4, align 4, !tbaa !13
  %89 = add nsw i32 %87, %88
  %90 = sext i32 %89 to i64
  invoke void @_ZNSt8valarrayIdEC2Em(ptr noundef nonnull align 8 dereferenceable(16) %17, i64 noundef %90)
          to label %91 unwind label %123

91:                                               ; preds = %86
  call void @llvm.lifetime.start.p0(i64 16, ptr %18) #7
  %92 = load i32, ptr %5, align 4, !tbaa !13
  %93 = load i32, ptr %4, align 4, !tbaa !13
  %94 = add nsw i32 %92, %93
  %95 = sext i32 %94 to i64
  invoke void @_ZNSt8valarrayIdEC2Em(ptr noundef nonnull align 8 dereferenceable(16) %18, i64 noundef %95)
          to label %96 unwind label %127

96:                                               ; preds = %91
  call void @llvm.lifetime.start.p0(i64 16, ptr %19) #7
  %97 = load i32, ptr %4, align 4, !tbaa !13
  %98 = sext i32 %97 to i64
  invoke void @_ZNSt8valarrayIdEC2Em(ptr noundef nonnull align 8 dereferenceable(16) %19, i64 noundef %98)
          to label %99 unwind label %131

99:                                               ; preds = %96
  %100 = getelementptr inbounds %"class.ipx::IPM", ptr %52, i32 0, i32 1
  %101 = load ptr, ptr %100, align 8, !tbaa !14
  %102 = getelementptr inbounds %"class.ipx::IPM", ptr %52, i32 0, i32 3
  %103 = load ptr, ptr %102, align 8, !tbaa !15
  invoke void @_ZN3ipx9KKTSolver9FactorizeEPNS_7IterateEPNS_4InfoE(ptr noundef nonnull align 8 dereferenceable(8) %101, ptr noundef null, ptr noundef %103)
          to label %104 unwind label %135

104:                                              ; preds = %99
  %105 = getelementptr inbounds %"class.ipx::IPM", ptr %52, i32 0, i32 3
  %106 = load ptr, ptr %105, align 8, !tbaa !15
  %107 = getelementptr inbounds %struct.ipx_info, ptr %106, i32 0, i32 3
  %108 = load i32, ptr %107, align 4, !tbaa !16
  %109 = icmp ne i32 %108, 0
  br i1 %109, label %110, label %139

110:                                              ; preds = %104
  store i32 1, ptr %20, align 4
  br label %731

111:                                              ; preds = %1
  %112 = landingpad { ptr, i32 }
          cleanup
  %113 = extractvalue { ptr, i32 } %112, 0
  store ptr %113, ptr %13, align 8
  %114 = extractvalue { ptr, i32 } %112, 1
  store i32 %114, ptr %14, align 4
  br label %746

115:                                              ; preds = %78
  %116 = landingpad { ptr, i32 }
          cleanup
  %117 = extractvalue { ptr, i32 } %116, 0
  store ptr %117, ptr %13, align 8
  %118 = extractvalue { ptr, i32 } %116, 1
  store i32 %118, ptr %14, align 4
  br label %745

119:                                              ; preds = %83
  %120 = landingpad { ptr, i32 }
          cleanup
  %121 = extractvalue { ptr, i32 } %120, 0
  store ptr %121, ptr %13, align 8
  %122 = extractvalue { ptr, i32 } %120, 1
  store i32 %122, ptr %14, align 4
  br label %744

123:                                              ; preds = %86
  %124 = landingpad { ptr, i32 }
          cleanup
  %125 = extractvalue { ptr, i32 } %124, 0
  store ptr %125, ptr %13, align 8
  %126 = extractvalue { ptr, i32 } %124, 1
  store i32 %126, ptr %14, align 4
  br label %743

127:                                              ; preds = %91
  %128 = landingpad { ptr, i32 }
          cleanup
  %129 = extractvalue { ptr, i32 } %128, 0
  store ptr %129, ptr %13, align 8
  %130 = extractvalue { ptr, i32 } %128, 1
  store i32 %130, ptr %14, align 4
  br label %742

131:                                              ; preds = %96
  %132 = landingpad { ptr, i32 }
          cleanup
  %133 = extractvalue { ptr, i32 } %132, 0
  store ptr %133, ptr %13, align 8
  %134 = extractvalue { ptr, i32 } %132, 1
  store i32 %134, ptr %14, align 4
  br label %741

135:                                              ; preds = %139, %99
  %136 = landingpad { ptr, i32 }
          cleanup
  %137 = extractvalue { ptr, i32 } %136, 0
  store ptr %137, ptr %13, align 8
  %138 = extractvalue { ptr, i32 } %136, 1
  store i32 %138, ptr %14, align 4
  br label %740

139:                                              ; preds = %104
  %140 = load ptr, ptr %7, align 8, !tbaa !5
  %141 = invoke noundef nonnull align 8 dereferenceable(16) ptr @_ZNSt8valarrayIdEaSERKS0_(ptr noundef nonnull align 8 dereferenceable(16) %19, ptr noundef nonnull align 8 dereferenceable(16) %140)
          to label %142 unwind label %135

142:                                              ; preds = %139
  call void @llvm.lifetime.start.p0(i64 4, ptr %21) #7
  store i32 0, ptr %21, align 4, !tbaa !13
  br label %143

143:                                              ; preds = %196, %142
  %144 = load i32, ptr %21, align 4, !tbaa !13
  %145 = load i32, ptr %5, align 4, !tbaa !13
  %146 = load i32, ptr %4, align 4, !tbaa !13
  %147 = add nsw i32 %145, %146
  %148 = icmp slt i32 %144, %147
  br i1 %148, label %150, label %149

149:                                              ; preds = %143
  store i32 2, ptr %20, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %21) #7
  br label %199

150:                                              ; preds = %143
  call void @llvm.lifetime.start.p0(i64 8, ptr %22) #7
  store double 0.000000e+00, ptr %22, align 8, !tbaa !18
  %151 = load double, ptr %22, align 8, !tbaa !18
  %152 = load ptr, ptr %9, align 8, !tbaa !5
  %153 = load i32, ptr %21, align 4, !tbaa !13
  %154 = sext i32 %153 to i64
  %155 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNKSt8valarrayIdEixEm(ptr noundef nonnull align 8 dereferenceable(16) %152, i64 noundef %154) #7
  %156 = load double, ptr %155, align 8, !tbaa !18
  %157 = fcmp olt double %151, %156
  br i1 %157, label %158, label %164

158:                                              ; preds = %150
  %159 = load ptr, ptr %9, align 8, !tbaa !5
  %160 = load i32, ptr %21, align 4, !tbaa !13
  %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) #7
  %163 = load double, ptr %162, align 8, !tbaa !18
  store double %163, ptr %22, align 8, !tbaa !18
  br label %164

164:                                              ; preds = %158, %150
  %165 = load double, ptr %22, align 8, !tbaa !18
  %166 = load ptr, ptr %10, align 8, !tbaa !5
  %167 = load i32, ptr %21, align 4, !tbaa !13
  %168 = sext i32 %167 to i64
  %169 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNKSt8valarrayIdEixEm(ptr noundef nonnull align 8 dereferenceable(16) %166, i64 noundef %168) #7
  %170 = load double, ptr %169, align 8, !tbaa !18
  %171 = fcmp ogt double %165, %170
  br i1 %171, label %172, label %178

172:                                              ; preds = %164
  %173 = load ptr, ptr %10, align 8, !tbaa !5
  %174 = load i32, ptr %21, align 4, !tbaa !13
  %175 = sext i32 %174 to i64
  %176 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNKSt8valarrayIdEixEm(ptr noundef nonnull align 8 dereferenceable(16) %173, i64 noundef %175) #7
  %177 = load double, ptr %176, align 8, !tbaa !18
  store double %177, ptr %22, align 8, !tbaa !18
  br label %178

178:                                              ; preds = %172, %164
  %179 = load double, ptr %22, align 8, !tbaa !18
  %180 = load i32, ptr %21, align 4, !tbaa !13
  %181 = sext i32 %180 to i64
  %182 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt8valarrayIdEixEm(ptr noundef nonnull align 8 dereferenceable(16) %11, i64 noundef %181) #7
  store double %179, ptr %182, align 8, !tbaa !18
  %183 = load double, ptr %22, align 8, !tbaa !18
  %184 = fcmp une double %183, 0.000000e+00
  br i1 %184, label %185, label %195

185:                                              ; preds = %178
  %186 = load ptr, ptr %6, align 8, !tbaa !5
  %187 = load i32, ptr %21, align 4, !tbaa !13
  %188 = load double, ptr %22, align 8, !tbaa !18
  %189 = fneg double %188
  invoke void @_ZN3ipx13ScatterColumnERKNS_12SparseMatrixEidRSt8valarrayIdE(ptr noundef nonnull align 8 dereferenceable(128) %186, i32 noundef %187, double noundef %189, ptr noundef nonnull align 8 dereferenceable(16) %19)
          to label %190 unwind label %191

190:                                              ; preds = %185
  br label %195

191:                                              ; preds = %185
  %192 = landingpad { ptr, i32 }
          cleanup
  %193 = extractvalue { ptr, i32 } %192, 0
  store ptr %193, ptr %13, align 8
  %194 = extractvalue { ptr, i32 } %192, 1
  store i32 %194, ptr %14, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %22) #7
  call void @llvm.lifetime.end.p0(i64 4, ptr %21) #7
  br label %740

195:                                              ; preds = %190, %178
  call void @llvm.lifetime.end.p0(i64 8, ptr %22) #7
  br label %196

196:                                              ; preds = %195
  %197 = load i32, ptr %21, align 4, !tbaa !13
  %198 = add nsw i32 %197, 1
  store i32 %198, ptr %21, align 4, !tbaa !13
  br label %143, !llvm.loop !19

199:                                              ; preds = %149
  call void @llvm.lifetime.start.p0(i64 8, ptr %23) #7
  %200 = invoke noundef double @_ZN3ipx7InfnormERKSt8valarrayIdE(ptr noundef nonnull align 8 dereferenceable(16) %19)
          to label %201 unwind label %217

201:                                              ; preds = %199
  %202 = fmul double 1.000000e-01, %200
  store double %202, ptr %23, align 8, !tbaa !18
  call void @llvm.lifetime.start.p0(i64 8, ptr %24) #7
  store double 0.000000e+00, ptr %24, align 8, !tbaa !18
  %203 = invoke noundef nonnull align 8 dereferenceable(16) ptr @_ZNSt8valarrayIdEaSERKd(ptr noundef nonnull align 8 dereferenceable(16) %17, ptr noundef nonnull align 8 dereferenceable(8) %24)
          to label %204 unwind label %221

204:                                              ; preds = %201
  call void @llvm.lifetime.end.p0(i64 8, ptr %24) #7
  %205 = getelementptr inbounds %"class.ipx::IPM", ptr %52, i32 0, i32 1
  %206 = load ptr, ptr %205, align 8, !tbaa !14
  %207 = load double, ptr %23, align 8, !tbaa !18
  %208 = getelementptr inbounds %"class.ipx::IPM", ptr %52, i32 0, i32 3
  %209 = load ptr, ptr %208, align 8, !tbaa !15
  invoke void @_ZN3ipx9KKTSolver5SolveERKSt8valarrayIdES4_dRS2_S5_PNS_4InfoE(ptr noundef nonnull align 8 dereferenceable(8) %206, ptr noundef nonnull align 8 dereferenceable(16) %17, ptr noundef nonnull align 8 dereferenceable(16) %19, double noundef %207, ptr noundef nonnull align 8 dereferenceable(16) %12, ptr noundef nonnull align 8 dereferenceable(16) %16, ptr noundef %209)
          to label %210 unwind label %217

210:                                              ; preds = %204
  %211 = getelementptr inbounds %"class.ipx::IPM", ptr %52, i32 0, i32 3
  %212 = load ptr, ptr %211, align 8, !tbaa !15
  %213 = getelementptr inbounds %struct.ipx_info, ptr %212, i32 0, i32 3
  %214 = load i32, ptr %213, align 4, !tbaa !16
  %215 = icmp ne i32 %214, 0
  br i1 %215, label %216, label %225

216:                                              ; preds = %210
  store i32 1, ptr %20, align 4
  br label %730

217:                                              ; preds = %225, %204, %199
  %218 = landingpad { ptr, i32 }
          cleanup
  %219 = extractvalue { ptr, i32 } %218, 0
  store ptr %219, ptr %13, align 8
  %220 = extractvalue { ptr, i32 } %218, 1
  store i32 %220, ptr %14, align 4
  br label %739

221:                                              ; preds = %201
  %222 = landingpad { ptr, i32 }
          cleanup
  %223 = extractvalue { ptr, i32 } %222, 0
  store ptr %223, ptr %13, align 8
  %224 = extractvalue { ptr, i32 } %222, 1
  store i32 %224, ptr %14, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %24) #7
  br label %739

225:                                              ; preds = %210
  %226 = invoke noundef nonnull align 8 dereferenceable(16) ptr @_ZNSt8valarrayIdEpLERKS0_(ptr noundef nonnull align 8 dereferenceable(16) %11, ptr noundef nonnull align 8 dereferenceable(16) %12)
          to label %227 unwind label %217

227:                                              ; preds = %225
  call void @llvm.lifetime.start.p0(i64 8, ptr %25) #7
  store double 0.000000e+00, ptr %25, align 8, !tbaa !18
  call void @llvm.lifetime.start.p0(i64 4, ptr %26) #7
  store i32 0, ptr %26, align 4, !tbaa !13
  br label %228

228:                                              ; preds = %278, %227
  %229 = load i32, ptr %26, align 4, !tbaa !13
  %230 = load i32, ptr %5, align 4, !tbaa !13
  %231 = load i32, ptr %4, align 4, !tbaa !13
  %232 = add nsw i32 %230, %231
  %233 = icmp slt i32 %229, %232
  br i1 %233, label %235, label %234

234:                                              ; preds = %228
  store i32 5, ptr %20, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %26) #7
  br label %290

235:                                              ; preds = %228
  %236 = load i32, ptr %26, align 4, !tbaa !13
  %237 = sext i32 %236 to i64
  %238 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt8valarrayIdEixEm(ptr noundef nonnull align 8 dereferenceable(16) %11, i64 noundef %237) #7
  %239 = load double, ptr %238, align 8, !tbaa !18
  %240 = load ptr, ptr %9, align 8, !tbaa !5
  %241 = load i32, ptr %26, align 4, !tbaa !13
  %242 = sext i32 %241 to i64
  %243 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNKSt8valarrayIdEixEm(ptr noundef nonnull align 8 dereferenceable(16) %240, i64 noundef %242) #7
  %244 = load double, ptr %243, align 8, !tbaa !18
  %245 = fsub double %239, %244
  %246 = load i32, ptr %26, align 4, !tbaa !13
  %247 = sext i32 %246 to i64
  %248 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt8valarrayIdEixEm(ptr noundef nonnull align 8 dereferenceable(16) %12, i64 noundef %247) #7
  store double %245, ptr %248, align 8, !tbaa !18
  call void @llvm.lifetime.start.p0(i64 8, ptr %27) #7
  %249 = load i32, ptr %26, align 4, !tbaa !13
  %250 = sext i32 %249 to i64
  %251 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt8valarrayIdEixEm(ptr noundef nonnull align 8 dereferenceable(16) %12, i64 noundef %250) #7
  %252 = load double, ptr %251, align 8, !tbaa !18
  %253 = fneg double %252
  store double %253, ptr %27, align 8, !tbaa !18
  %254 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZSt3maxIdERKT_S2_S2_(ptr noundef nonnull align 8 dereferenceable(8) %25, ptr noundef nonnull align 8 dereferenceable(8) %27)
          to label %255 unwind label %281

255:                                              ; preds = %235
  %256 = load double, ptr %254, align 8, !tbaa !18
  store double %256, ptr %25, align 8, !tbaa !18
  call void @llvm.lifetime.end.p0(i64 8, ptr %27) #7
  %257 = load ptr, ptr %10, align 8, !tbaa !5
  %258 = load i32, ptr %26, align 4, !tbaa !13
  %259 = sext i32 %258 to i64
  %260 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNKSt8valarrayIdEixEm(ptr noundef nonnull align 8 dereferenceable(16) %257, i64 noundef %259) #7
  %261 = load double, ptr %260, align 8, !tbaa !18
  %262 = load i32, ptr %26, align 4, !tbaa !13
  %263 = sext i32 %262 to i64
  %264 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt8valarrayIdEixEm(ptr noundef nonnull align 8 dereferenceable(16) %11, i64 noundef %263) #7
  %265 = load double, ptr %264, align 8, !tbaa !18
  %266 = fsub double %261, %265
  %267 = load i32, ptr %26, align 4, !tbaa !13
  %268 = sext i32 %267 to i64
  %269 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt8valarrayIdEixEm(ptr noundef nonnull align 8 dereferenceable(16) %15, i64 noundef %268) #7
  store double %266, ptr %269, align 8, !tbaa !18
  call void @llvm.lifetime.start.p0(i64 8, ptr %28) #7
  %270 = load i32, ptr %26, align 4, !tbaa !13
  %271 = sext i32 %270 to i64
  %272 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt8valarrayIdEixEm(ptr noundef nonnull align 8 dereferenceable(16) %15, i64 noundef %271) #7
  %273 = load double, ptr %272, align 8, !tbaa !18
  %274 = fneg double %273
  store double %274, ptr %28, align 8, !tbaa !18
  %275 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZSt3maxIdERKT_S2_S2_(ptr noundef nonnull align 8 dereferenceable(8) %25, ptr noundef nonnull align 8 dereferenceable(8) %28)
          to label %276 unwind label %285

276:                                              ; preds = %255
  %277 = load double, ptr %275, align 8, !tbaa !18
  store double %277, ptr %25, align 8, !tbaa !18
  call void @llvm.lifetime.end.p0(i64 8, ptr %28) #7
  br label %278

278:                                              ; preds = %276
  %279 = load i32, ptr %26, align 4, !tbaa !13
  %280 = add nsw i32 %279, 1
  store i32 %280, ptr %26, align 4, !tbaa !13
  br label %228, !llvm.loop !21

281:                                              ; preds = %235
  %282 = landingpad { ptr, i32 }
          cleanup
  %283 = extractvalue { ptr, i32 } %282, 0
  store ptr %283, ptr %13, align 8
  %284 = extractvalue { ptr, i32 } %282, 1
  store i32 %284, ptr %14, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %27) #7
  br label %289

285:                                              ; preds = %255
  %286 = landingpad { ptr, i32 }
          cleanup
  %287 = extractvalue { ptr, i32 } %286, 0
  store ptr %287, ptr %13, align 8
  %288 = extractvalue { ptr, i32 } %286, 1
  store i32 %288, ptr %14, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %28) #7
  br label %289

289:                                              ; preds = %285, %281
  call void @llvm.lifetime.end.p0(i64 4, ptr %26) #7
  br label %738

290:                                              ; preds = %234
  call void @llvm.lifetime.start.p0(i64 8, ptr %29) #7
  %291 = load double, ptr %25, align 8, !tbaa !18
  %292 = call double @llvm.fmuladd.f64(double 1.500000e+00, double %291, double 1.000000e+00)
  store double %292, ptr %29, align 8, !tbaa !18
  %293 = invoke noundef nonnull align 8 dereferenceable(16) ptr @_ZNSt8valarrayIdEpLERKd(ptr noundef nonnull align 8 dereferenceable(16) %12, ptr noundef nonnull align 8 dereferenceable(8) %29)
          to label %294 unwind label %310

294:                                              ; preds = %290
  %295 = invoke noundef nonnull align 8 dereferenceable(16) ptr @_ZNSt8valarrayIdEpLERKd(ptr noundef nonnull align 8 dereferenceable(16) %15, ptr noundef nonnull align 8 dereferenceable(8) %29)
          to label %296 unwind label %310

296:                                              ; preds = %294
  call void @llvm.lifetime.start.p0(i64 8, ptr %30) #7
  %297 = load ptr, ptr %8, align 8, !tbaa !5
  %298 = invoke noundef double @_ZN3ipx7TwonormERKSt8valarrayIdE(ptr noundef nonnull align 8 dereferenceable(16) %297)
          to label %299 unwind label %314

299:                                              ; preds = %296
  store double %298, ptr %30, align 8, !tbaa !18
  %300 = load double, ptr %30, align 8, !tbaa !18
  %301 = fcmp oeq double %300, 0.000000e+00
  br i1 %301, label %302, label %351

302:                                              ; preds = %299
  call void @llvm.lifetime.start.p0(i64 4, ptr %31) #7
  store i32 0, ptr %31, align 4, !tbaa !13
  br label %303

303:                                              ; preds = %343, %302
  %304 = load i32, ptr %31, align 4, !tbaa !13
  %305 = load i32, ptr %5, align 4, !tbaa !13
  %306 = load i32, ptr %4, align 4, !tbaa !13
  %307 = add nsw i32 %305, %306
  %308 = icmp slt i32 %304, %307
  br i1 %308, label %318, label %309

309:                                              ; preds = %303
  store i32 8, ptr %20, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %31) #7
  br label %350

310:                                              ; preds = %294, %290
  %311 = landingpad { ptr, i32 }
          cleanup
  %312 = extractvalue { ptr, i32 } %311, 0
  store ptr %312, ptr %13, align 8
  %313 = extractvalue { ptr, i32 } %311, 1
  store i32 %313, ptr %14, align 4
  br label %737

314:                                              ; preds = %296
  %315 = landingpad { ptr, i32 }
          cleanup
  %316 = extractvalue { ptr, i32 } %315, 0
  store ptr %316, ptr %13, align 8
  %317 = extractvalue { ptr, i32 } %315, 1
  store i32 %317, ptr %14, align 4
  br label %736

318:                                              ; preds = %303
  %319 = load ptr, ptr %9, align 8, !tbaa !5
  %320 = load i32, ptr %31, align 4, !tbaa !13
  %321 = sext i32 %320 to i64
  %322 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNKSt8valarrayIdEixEm(ptr noundef nonnull align 8 dereferenceable(16) %319, i64 noundef %321) #7
  %323 = load double, ptr %322, align 8, !tbaa !18
  %324 = invoke noundef zeroext i1 @_ZSt8isfinited(double noundef %323)
          to label %325 unwind label %346

325:                                              ; preds = %318
  %326 = zext i1 %324 to i64
  %327 = select i1 %324, double 1.000000e+00, double 0.000000e+00
  %328 = load i32, ptr %31, align 4, !tbaa !13
  %329 = sext i32 %328 to i64
  %330 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt8valarrayIdEixEm(ptr noundef nonnull align 8 dereferenceable(16) %17, i64 noundef %329) #7
  store double %327, ptr %330, align 8, !tbaa !18
  %331 = load ptr, ptr %10, align 8, !tbaa !5
  %332 = load i32, ptr %31, align 4, !tbaa !13
  %333 = sext i32 %332 to i64
  %334 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNKSt8valarrayIdEixEm(ptr noundef nonnull align 8 dereferenceable(16) %331, i64 noundef %333) #7
  %335 = load double, ptr %334, align 8, !tbaa !18
  %336 = invoke noundef zeroext i1 @_ZSt8isfinited(double noundef %335)
          to label %337 unwind label %346

337:                                              ; preds = %325
  %338 = zext i1 %336 to i64
  %339 = select i1 %336, double 1.000000e+00, double 0.000000e+00
  %340 = load i32, ptr %31, align 4, !tbaa !13
  %341 = sext i32 %340 to i64
  %342 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt8valarrayIdEixEm(ptr noundef nonnull align 8 dereferenceable(16) %18, i64 noundef %341) #7
  store double %339, ptr %342, align 8, !tbaa !18
  br label %343

343:                                              ; preds = %337
  %344 = load i32, ptr %31, align 4, !tbaa !13
  %345 = add nsw i32 %344, 1
  store i32 %345, ptr %31, align 4, !tbaa !13
  br label %303, !llvm.loop !22

346:                                              ; preds = %325, %318
  %347 = landingpad { ptr, i32 }
          cleanup
  %348 = extractvalue { ptr, i32 } %347, 0
  store ptr %348, ptr %13, align 8
  %349 = extractvalue { ptr, i32 } %347, 1
  store i32 %349, ptr %14, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %31) #7
  br label %736

350:                                              ; preds = %309
  br label %580

351:                                              ; preds = %299
  call void @llvm.lifetime.start.p0(i64 8, ptr %32) #7
  store double 0.000000e+00, ptr %32, align 8, !tbaa !18
  %352 = invoke noundef nonnull align 8 dereferenceable(16) ptr @_ZNSt8valarrayIdEaSERKd(ptr noundef nonnull align 8 dereferenceable(16) %19, ptr noundef nonnull align 8 dereferenceable(8) %32)
          to label %353 unwind label %371

353:                                              ; preds = %351
  call void @llvm.lifetime.end.p0(i64 8, ptr %32) #7
  call void @llvm.lifetime.start.p0(i64 8, ptr %33) #7
  %354 = load ptr, ptr %8, align 8, !tbaa !5
  %355 = invoke noundef double @_ZN3ipx7InfnormERKSt8valarrayIdE(ptr noundef nonnull align 8 dereferenceable(16) %354)
          to label %356 unwind label %375

356:                                              ; preds = %353
  %357 = fmul double 1.000000e-01, %355
  store double %357, ptr %33, align 8, !tbaa !18
  %358 = getelementptr inbounds %"class.ipx::IPM", ptr %52, i32 0, i32 1
  %359 = load ptr, ptr %358, align 8, !tbaa !14
  %360 = load ptr, ptr %8, align 8, !tbaa !5
  %361 = load double, ptr %33, align 8, !tbaa !18
  %362 = getelementptr inbounds %"class.ipx::IPM", ptr %52, i32 0, i32 3
  %363 = load ptr, ptr %362, align 8, !tbaa !15
  invoke void @_ZN3ipx9KKTSolver5SolveERKSt8valarrayIdES4_dRS2_S5_PNS_4InfoE(ptr noundef nonnull align 8 dereferenceable(8) %359, ptr noundef nonnull align 8 dereferenceable(16) %360, ptr noundef nonnull align 8 dereferenceable(16) %19, double noundef %361, ptr noundef nonnull align 8 dereferenceable(16) %17, ptr noundef nonnull align 8 dereferenceable(16) %16, ptr noundef %363)
          to label %364 unwind label %375

364:                                              ; preds = %356
  %365 = getelementptr inbounds %"class.ipx::IPM", ptr %52, i32 0, i32 3
  %366 = load ptr, ptr %365, align 8, !tbaa !15
  %367 = getelementptr inbounds %struct.ipx_info, ptr %366, i32 0, i32 3
  %368 = load i32, ptr %367, align 4, !tbaa !16
  %369 = icmp ne i32 %368, 0
  br i1 %369, label %370, label %379

370:                                              ; preds = %364
  store i32 1, ptr %20, align 4
  br label %573

371:                                              ; preds = %351
  %372 = landingpad { ptr, i32 }
          cleanup
  %373 = extractvalue { ptr, i32 } %372, 0
  store ptr %373, ptr %13, align 8
  %374 = extractvalue { ptr, i32 } %372, 1
  store i32 %374, ptr %14, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %32) #7
  br label %736

375:                                              ; preds = %382, %379, %356, %353
  %376 = landingpad { ptr, i32 }
          cleanup
  %377 = extractvalue { ptr, i32 } %376, 0
  store ptr %377, ptr %13, align 8
  %378 = extractvalue { ptr, i32 } %376, 1
  store i32 %378, ptr %14, align 4
  br label %579

379:                                              ; preds = %364
  %380 = load ptr, ptr %8, align 8, !tbaa !5
  %381 = invoke noundef nonnull align 8 dereferenceable(16) ptr @_ZNSt8valarrayIdEaSERKS0_(ptr noundef nonnull align 8 dereferenceable(16) %17, ptr noundef nonnull align 8 dereferenceable(16) %380)
          to label %382 unwind label %375

382:                                              ; preds = %379
  %383 = load ptr, ptr %6, align 8, !tbaa !5
  invoke void @_ZN3ipx11MultiplyAddERKNS_12SparseMatrixERKSt8valarrayIdEdRS4_c(ptr noundef nonnull align 8 dereferenceable(128) %383, ptr noundef nonnull align 8 dereferenceable(16) %16, double noundef -1.000000e+00, ptr noundef nonnull align 8 dereferenceable(16) %17, i8 noundef signext 84)
          to label %384 unwind label %375

384:                                              ; preds = %382
  call void @llvm.lifetime.start.p0(i64 8, ptr %34) #7
  %385 = invoke noundef double @_ZN3ipx7TwonormERKSt8valarrayIdE(ptr noundef nonnull align 8 dereferenceable(16) %17)
          to label %386 unwind label %405

386:                                              ; preds = %384
  store double %385, ptr %34, align 8, !tbaa !18
  call void @llvm.lifetime.start.p0(i64 8, ptr %35) #7
  store double 5.000000e-02, ptr %35, align 8, !tbaa !18
  %387 = load double, ptr %34, align 8, !tbaa !18
  %388 = load double, ptr %30, align 8, !tbaa !18
  %389 = fmul double 5.000000e-02, %388
  %390 = fcmp olt double %387, %389
  br i1 %390, label %391, label %417

391:                                              ; preds = %386
  call void @llvm.lifetime.start.p0(i64 16, ptr %36) #7
  %392 = load ptr, ptr %8, align 8, !tbaa !5
  %393 = invoke { double, ptr } @_ZStmlIdESt5_ExprINSt8__detail8_BinClosISt12__multipliesSt9_ConstantSt9_ValArrayT_S6_EENSt5__funIS3_S6_E11result_typeEERKNSt8valarrayIS6_E10value_typeERKSD_(ptr noundef nonnull align 8 dereferenceable(8) %35, ptr noundef nonnull align 8 dereferenceable(16) %392)
          to label %394 unwind label %409

394:                                              ; preds = %391
  %395 = getelementptr inbounds %"class.std::_Expr", ptr %36, i32 0, i32 0
  %396 = getelementptr inbounds %"struct.std::__detail::_BinClos", ptr %395, i32 0, i32 0
  %397 = getelementptr inbounds { double, ptr }, ptr %396, i32 0, i32 0
  %398 = extractvalue { double, ptr } %393, 0
  store double %398, ptr %397, align 8
  %399 = getelementptr inbounds { double, ptr }, ptr %396, i32 0, i32 1
  %400 = extractvalue { double, ptr } %393, 1
  store ptr %400, ptr %399, align 8
  %401 = invoke noundef nonnull align 8 dereferenceable(16) ptr @_ZNSt8valarrayIdEpLINSt8__detail8_BinClosISt12__multipliesSt9_ConstantSt9_ValArrayddEEEERS0_RKSt5_ExprIT_dE(ptr noundef nonnull align 8 dereferenceable(16) %17, ptr noundef nonnull align 8 dereferenceable(16) %36)
          to label %402 unwind label %409

402:                                              ; preds = %394
  call void @llvm.lifetime.end.p0(i64 16, ptr %36) #7
  call void @llvm.lifetime.start.p0(i64 8, ptr %37) #7
  store double 0x3FEE666666666666, ptr %37, align 8, !tbaa !18
  %403 = invoke noundef nonnull align 8 dereferenceable(16) ptr @_ZNSt8valarrayIdEmLERKd(ptr noundef nonnull align 8 dereferenceable(16) %16, ptr noundef nonnull align 8 dereferenceable(8) %37)
          to label %404 unwind label %413

404:                                              ; preds = %402
  call void @llvm.lifetime.end.p0(i64 8, ptr %37) #7
  br label %417

405:                                              ; preds = %384
  %406 = landingpad { ptr, i32 }
          cleanup
  %407 = extractvalue { ptr, i32 } %406, 0
  store ptr %407, ptr %13, align 8
  %408 = extractvalue { ptr, i32 } %406, 1
  store i32 %408, ptr %14, align 4
  br label %578

409:                                              ; preds = %394, %391
  %410 = landingpad { ptr, i32 }
          cleanup
  %411 = extractvalue { ptr, i32 } %410, 0
  store ptr %411, ptr %13, align 8
  %412 = extractvalue { ptr, i32 } %410, 1
  store i32 %412, ptr %14, align 4
  call void @llvm.lifetime.end.p0(i64 16, ptr %36) #7
  br label %577

413:                                              ; preds = %402
  %414 = landingpad { ptr, i32 }
          cleanup
  %415 = extractvalue { ptr, i32 } %414, 0
  store ptr %415, ptr %13, align 8
  %416 = extractvalue { ptr, i32 } %414, 1
  store i32 %416, ptr %14, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %37) #7
  br label %577

417:                                              ; preds = %404, %386
  call void @llvm.lifetime.start.p0(i64 8, ptr %38) #7
  store double 0.000000e+00, ptr %38, align 8, !tbaa !18
  call void @llvm.lifetime.start.p0(i64 4, ptr %39) #7
  store i32 0, ptr %39, align 4, !tbaa !13
  br label %418

418:                                              ; preds = %512, %417
  %419 = load i32, ptr %39, align 4, !tbaa !13
  %420 = load i32, ptr %5, align 4, !tbaa !13
  %421 = load i32, ptr %4, align 4, !tbaa !13
  %422 = add nsw i32 %420, %421
  %423 = icmp slt i32 %419, %422
  br i1 %423, label %425, label %424

424:                                              ; preds = %418
  store i32 11, ptr %20, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %39) #7
  br label %524

425:                                              ; preds = %418
  call void @llvm.lifetime.start.p0(i64 8, ptr %40) #7
  %426 = load i32, ptr %39, align 4, !tbaa !13
  %427 = sext i32 %426 to i64
  %428 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt8valarrayIdEixEm(ptr noundef nonnull align 8 dereferenceable(16) %17, i64 noundef %427) #7
  %429 = load double, ptr %428, align 8, !tbaa !18
  store double %429, ptr %40, align 8, !tbaa !18
  %430 = load i32, ptr %39, align 4, !tbaa !13
  %431 = sext i32 %430 to i64
  %432 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt8valarrayIdEixEm(ptr noundef nonnull align 8 dereferenceable(16) %17, i64 noundef %431) #7
  store double 0.000000e+00, ptr %432, align 8, !tbaa !18
  %433 = load i32, ptr %39, align 4, !tbaa !13
  %434 = sext i32 %433 to i64
  %435 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt8valarrayIdEixEm(ptr noundef nonnull align 8 dereferenceable(16) %18, i64 noundef %434) #7
  store double 0.000000e+00, ptr %435, align 8, !tbaa !18
  %436 = load ptr, ptr %9, align 8, !tbaa !5
  %437 = load i32, ptr %39, align 4, !tbaa !13
  %438 = sext i32 %437 to i64
  %439 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNKSt8valarrayIdEixEm(ptr noundef nonnull align 8 dereferenceable(16) %436, i64 noundef %438) #7
  %440 = load double, ptr %439, align 8, !tbaa !18
  %441 = invoke noundef zeroext i1 @_ZSt8isfinited(double noundef %440)
          to label %442 unwind label %462

442:                                              ; preds = %425
  br i1 %441, label %443, label %466

443:                                              ; preds = %442
  %444 = load ptr, ptr %10, align 8, !tbaa !5
  %445 = load i32, ptr %39, align 4, !tbaa !13
  %446 = sext i32 %445 to i64
  %447 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNKSt8valarrayIdEixEm(ptr noundef nonnull align 8 dereferenceable(16) %444, i64 noundef %446) #7
  %448 = load double, ptr %447, align 8, !tbaa !18
  %449 = invoke noundef zeroext i1 @_ZSt8isfinited(double noundef %448)
          to label %450 unwind label %462

450:                                              ; preds = %443
  br i1 %449, label %451, label %466

451:                                              ; preds = %450
  %452 = load double, ptr %40, align 8, !tbaa !18
  %453 = fmul double 5.000000e-01, %452
  %454 = load i32, ptr %39, align 4, !tbaa !13
  %455 = sext i32 %454 to i64
  %456 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt8valarrayIdEixEm(ptr noundef nonnull align 8 dereferenceable(16) %17, i64 noundef %455) #7
  store double %453, ptr %456, align 8, !tbaa !18
  %457 = load double, ptr %40, align 8, !tbaa !18
  %458 = fmul double -5.000000e-01, %457
  %459 = load i32, ptr %39, align 4, !tbaa !13
  %460 = sext i32 %459 to i64
  %461 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt8valarrayIdEixEm(ptr noundef nonnull align 8 dereferenceable(16) %18, i64 noundef %460) #7
  store double %458, ptr %461, align 8, !tbaa !18
  br label %495

462:                                              ; preds = %479, %466, %443, %425
  %463 = landingpad { ptr, i32 }
          cleanup
  %464 = extractvalue { ptr, i32 } %463, 0
  store ptr %464, ptr %13, align 8
  %465 = extractvalue { ptr, i32 } %463, 1
  store i32 %465, ptr %14, align 4
  br label %523

466:                                              ; preds = %450, %442
  %467 = load ptr, ptr %9, align 8, !tbaa !5
  %468 = load i32, ptr %39, align 4, !tbaa !13
  %469 = sext i32 %468 to i64
  %470 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNKSt8valarrayIdEixEm(ptr noundef nonnull align 8 dereferenceable(16) %467, i64 noundef %469) #7
  %471 = load double, ptr %470, align 8, !tbaa !18
  %472 = invoke noundef zeroext i1 @_ZSt8isfinited(double noundef %471)
          to label %473 unwind label %462

473:                                              ; preds = %466
  br i1 %472, label %474, label %479

474:                                              ; preds = %473
  %475 = load double, ptr %40, align 8, !tbaa !18
  %476 = load i32, ptr %39, align 4, !tbaa !13
  %477 = sext i32 %476 to i64
  %478 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt8valarrayIdEixEm(ptr noundef nonnull align 8 dereferenceable(16) %17, i64 noundef %477) #7
  store double %475, ptr %478, align 8, !tbaa !18
  br label %494

479:                                              ; preds = %473
  %480 = load ptr, ptr %10, align 8, !tbaa !5
  %481 = load i32, ptr %39, align 4, !tbaa !13
  %482 = sext i32 %481 to i64
  %483 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNKSt8valarrayIdEixEm(ptr noundef nonnull align 8 dereferenceable(16) %480, i64 noundef %482) #7
  %484 = load double, ptr %483, align 8, !tbaa !18
  %485 = invoke noundef zeroext i1 @_ZSt8isfinited(double noundef %484)
          to label %486 unwind label %462

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

487:                                              ; preds = %486
  %488 = load double, ptr %40, align 8, !tbaa !18
  %489 = fneg double %488
  %490 = load i32, ptr %39, align 4, !tbaa !13
  %491 = sext i32 %490 to i64
  %492 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt8valarrayIdEixEm(ptr noundef nonnull align 8 dereferenceable(16) %18, i64 noundef %491) #7
  store double %489, ptr %492, align 8, !tbaa !18
  br label %493

493:                                              ; preds = %487, %486
  br label %494

494:                                              ; preds = %493, %474
  br label %495

495:                                              ; preds = %494, %451
  call void @llvm.lifetime.start.p0(i64 8, ptr %41) #7
  %496 = load i32, ptr %39, align 4, !tbaa !13
  %497 = sext i32 %496 to i64
  %498 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt8valarrayIdEixEm(ptr noundef nonnull align 8 dereferenceable(16) %17, i64 noundef %497) #7
  %499 = load double, ptr %498, align 8, !tbaa !18
  %500 = fneg double %499
  store double %500, ptr %41, align 8, !tbaa !18
  %501 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZSt3maxIdERKT_S2_S2_(ptr noundef nonnull align 8 dereferenceable(8) %38, ptr noundef nonnull align 8 dereferenceable(8) %41)
          to label %502 unwind label %515

502:                                              ; preds = %495
  %503 = load double, ptr %501, align 8, !tbaa !18
  store double %503, ptr %38, align 8, !tbaa !18
  call void @llvm.lifetime.end.p0(i64 8, ptr %41) #7
  call void @llvm.lifetime.start.p0(i64 8, ptr %42) #7
  %504 = load i32, ptr %39, align 4, !tbaa !13
  %505 = sext i32 %504 to i64
  %506 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt8valarrayIdEixEm(ptr noundef nonnull align 8 dereferenceable(16) %18, i64 noundef %505) #7
  %507 = load double, ptr %506, align 8, !tbaa !18
  %508 = fneg double %507
  store double %508, ptr %42, align 8, !tbaa !18
  %509 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZSt3maxIdERKT_S2_S2_(ptr noundef nonnull align 8 dereferenceable(8) %38, ptr noundef nonnull align 8 dereferenceable(8) %42)
          to label %510 unwind label %519

510:                                              ; preds = %502
  %511 = load double, ptr %509, align 8, !tbaa !18
  store double %511, ptr %38, align 8, !tbaa !18
  call void @llvm.lifetime.end.p0(i64 8, ptr %42) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %40) #7
  br label %512

512:                                              ; preds = %510
  %513 = load i32, ptr %39, align 4, !tbaa !13
  %514 = add nsw i32 %513, 1
  store i32 %514, ptr %39, align 4, !tbaa !13
  br label %418, !llvm.loop !23

515:                                              ; preds = %495
  %516 = landingpad { ptr, i32 }
          cleanup
  %517 = extractvalue { ptr, i32 } %516, 0
  store ptr %517, ptr %13, align 8
  %518 = extractvalue { ptr, i32 } %516, 1
  store i32 %518, ptr %14, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %41) #7
  br label %523

519:                                              ; preds = %502
  %520 = landingpad { ptr, i32 }
          cleanup
  %521 = extractvalue { ptr, i32 } %520, 0
  store ptr %521, ptr %13, align 8
  %522 = extractvalue { ptr, i32 } %520, 1
  store i32 %522, ptr %14, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %42) #7
  br label %523

523:                                              ; preds = %519, %515, %462
  call void @llvm.lifetime.end.p0(i64 8, ptr %40) #7
  call void @llvm.lifetime.end.p0(i64 4, ptr %39) #7
  br label %576

524:                                              ; preds = %424
  call void @llvm.lifetime.start.p0(i64 8, ptr %43) #7
  %525 = load double, ptr %38, align 8, !tbaa !18
  %526 = call double @llvm.fmuladd.f64(double 1.500000e+00, double %525, double 1.000000e+00)
  store double %526, ptr %43, align 8, !tbaa !18
  call void @llvm.lifetime.start.p0(i64 4, ptr %44) #7
  store i32 0, ptr %44, align 4, !tbaa !13
  br label %527

527:                                              ; preds = %569, %524
  %528 = load i32, ptr %44, align 4, !tbaa !13
  %529 = load i32, ptr %5, align 4, !tbaa !13
  %530 = load i32, ptr %4, align 4, !tbaa !13
  %531 = add nsw i32 %529, %530
  %532 = icmp slt i32 %528, %531
  br i1 %532, label %534, label %533

533:                                              ; preds = %527
  store i32 14, ptr %20, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %44) #7
  br label %572

534:                                              ; preds = %527
  %535 = load ptr, ptr %9, align 8, !tbaa !5
  %536 = load i32, ptr %44, align 4, !tbaa !13
  %537 = sext i32 %536 to i64
  %538 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNKSt8valarrayIdEixEm(ptr noundef nonnull align 8 dereferenceable(16) %535, i64 noundef %537) #7
  %539 = load double, ptr %538, align 8, !tbaa !18
  %540 = invoke noundef zeroext i1 @_ZSt8isfinited(double noundef %539)
          to label %541 unwind label %549

541:                                              ; preds = %534
  br i1 %540, label %542, label %553

542:                                              ; preds = %541
  %543 = load double, ptr %43, align 8, !tbaa !18
  %544 = load i32, ptr %44, align 4, !tbaa !13
  %545 = sext i32 %544 to i64
  %546 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt8valarrayIdEixEm(ptr noundef nonnull align 8 dereferenceable(16) %17, i64 noundef %545) #7
  %547 = load double, ptr %546, align 8, !tbaa !18
  %548 = fadd double %547, %543
  store double %548, ptr %546, align 8, !tbaa !18
  br label %553

549:                                              ; preds = %553, %534
  %550 = landingpad { ptr, i32 }
          cleanup
  %551 = extractvalue { ptr, i32 } %550, 0
  store ptr %551, ptr %13, align 8
  %552 = extractvalue { ptr, i32 } %550, 1
  store i32 %552, ptr %14, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %44) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %43) #7
  br label %576

553:                                              ; preds = %542, %541
  %554 = load ptr, ptr %10, align 8, !tbaa !5
  %555 = load i32, ptr %44, align 4, !tbaa !13
  %556 = sext i32 %555 to i64
  %557 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNKSt8valarrayIdEixEm(ptr noundef nonnull align 8 dereferenceable(16) %554, i64 noundef %556) #7
  %558 = load double, ptr %557, align 8, !tbaa !18
  %559 = invoke noundef zeroext i1 @_ZSt8isfinited(double noundef %558)
          to label %560 unwind label %549

560:                                              ; preds = %553
  br i1 %559, label %561, label %568

561:                                              ; preds = %560
  %562 = load double, ptr %43, align 8, !tbaa !18
  %563 = load i32, ptr %44, align 4, !tbaa !13
  %564 = sext i32 %563 to i64
  %565 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt8valarrayIdEixEm(ptr noundef nonnull align 8 dereferenceable(16) %18, i64 noundef %564) #7
  %566 = load double, ptr %565, align 8, !tbaa !18
  %567 = fadd double %566, %562
  store double %567, ptr %565, align 8, !tbaa !18
  br label %568

568:                                              ; preds = %561, %560
  br label %569

569:                                              ; preds = %568
  %570 = load i32, ptr %44, align 4, !tbaa !13
  %571 = add nsw i32 %570, 1
  store i32 %571, ptr %44, align 4, !tbaa !13
  br label %527, !llvm.loop !24

572:                                              ; preds = %533
  call void @llvm.lifetime.end.p0(i64 8, ptr %43) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %38) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %35) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %34) #7
  store i32 0, ptr %20, align 4
  br label %573

573:                                              ; preds = %572, %370
  call void @llvm.lifetime.end.p0(i64 8, ptr %33) #7
  %574 = load i32, ptr %20, align 4
  switch i32 %574, label %729 [
    i32 0, label %575
  ]

575:                                              ; preds = %573
  br label %580

576:                                              ; preds = %549, %523
  call void @llvm.lifetime.end.p0(i64 8, ptr %38) #7
  br label %577

577:                                              ; preds = %576, %413, %409
  call void @llvm.lifetime.end.p0(i64 8, ptr %35) #7
  br label %578

578:                                              ; preds = %577, %405
  call void @llvm.lifetime.end.p0(i64 8, ptr %34) #7
  br label %579

579:                                              ; preds = %578, %375
  call void @llvm.lifetime.end.p0(i64 8, ptr %33) #7
  br label %736

580:                                              ; preds = %575, %350
  call void @llvm.lifetime.start.p0(i64 8, ptr %45) #7
  store double 1.000000e+00, ptr %45, align 8, !tbaa !18
  call void @llvm.lifetime.start.p0(i64 8, ptr %46) #7
  store double 1.000000e+00, ptr %46, align 8, !tbaa !18
  call void @llvm.lifetime.start.p0(i64 8, ptr %47) #7
  store double 1.000000e+00, ptr %47, align 8, !tbaa !18
  call void @llvm.lifetime.start.p0(i64 4, ptr %48) #7
  store i32 0, ptr %48, align 4, !tbaa !13
  br label %581

581:                                              ; preds = %655, %580
  %582 = load i32, ptr %48, align 4, !tbaa !13
  %583 = load i32, ptr %5, align 4, !tbaa !13
  %584 = load i32, ptr %4, align 4, !tbaa !13
  %585 = add nsw i32 %583, %584
  %586 = icmp slt i32 %582, %585
  br i1 %586, label %588, label %587

587:                                              ; preds = %581
  store i32 17, ptr %20, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %48) #7
  br label %658

588:                                              ; preds = %581
  %589 = load ptr, ptr %9, align 8, !tbaa !5
  %590 = load i32, ptr %48, align 4, !tbaa !13
  %591 = sext i32 %590 to i64
  %592 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNKSt8valarrayIdEixEm(ptr noundef nonnull align 8 dereferenceable(16) %589, i64 noundef %591) #7
  %593 = load double, ptr %592, align 8, !tbaa !18
  %594 = invoke noundef zeroext i1 @_ZSt8isfinited(double noundef %593)
          to label %595 unwind label %619

595:                                              ; preds = %588
  br i1 %594, label %596, label %623

596:                                              ; preds = %595
  %597 = load i32, ptr %48, align 4, !tbaa !13
  %598 = sext i32 %597 to i64
  %599 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt8valarrayIdEixEm(ptr noundef nonnull align 8 dereferenceable(16) %12, i64 noundef %598) #7
  %600 = load double, ptr %599, align 8, !tbaa !18
  %601 = load double, ptr %45, align 8, !tbaa !18
  %602 = fadd double %601, %600
  store double %602, ptr %45, align 8, !tbaa !18
  %603 = load i32, ptr %48, align 4, !tbaa !13
  %604 = sext i32 %603 to i64
  %605 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt8valarrayIdEixEm(ptr noundef nonnull align 8 dereferenceable(16) %17, i64 noundef %604) #7
  %606 = load double, ptr %605, align 8, !tbaa !18
  %607 = load double, ptr %46, align 8, !tbaa !18
  %608 = fadd double %607, %606
  store double %608, ptr %46, align 8, !tbaa !18
  %609 = load i32, ptr %48, align 4, !tbaa !13
  %610 = sext i32 %609 to i64
  %611 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt8valarrayIdEixEm(ptr noundef nonnull align 8 dereferenceable(16) %12, i64 noundef %610) #7
  %612 = load double, ptr %611, align 8, !tbaa !18
  %613 = load i32, ptr %48, align 4, !tbaa !13
  %614 = sext i32 %613 to i64
  %615 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt8valarrayIdEixEm(ptr noundef nonnull align 8 dereferenceable(16) %17, i64 noundef %614) #7
  %616 = load double, ptr %615, align 8, !tbaa !18
  %617 = load double, ptr %47, align 8, !tbaa !18
  %618 = call double @llvm.fmuladd.f64(double %612, double %616, double %617)
  store double %618, ptr %47, align 8, !tbaa !18
  br label %623

619:                                              ; preds = %623, %588
  %620 = landingpad { ptr, i32 }
          cleanup
  %621 = extractvalue { ptr, i32 } %620, 0
  store ptr %621, ptr %13, align 8
  %622 = extractvalue { ptr, i32 } %620, 1
  store i32 %622, ptr %14, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %48) #7
  br label %735

623:                                              ; preds = %596, %595
  %624 = load ptr, ptr %10, align 8, !tbaa !5
  %625 = load i32, ptr %48, align 4, !tbaa !13
  %626 = sext i32 %625 to i64
  %627 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNKSt8valarrayIdEixEm(ptr noundef nonnull align 8 dereferenceable(16) %624, i64 noundef %626) #7
  %628 = load double, ptr %627, align 8, !tbaa !18
  %629 = invoke noundef zeroext i1 @_ZSt8isfinited(double noundef %628)
          to label %630 unwind label %619

630:                                              ; preds = %623
  br i1 %629, label %631, label %654

631:                                              ; preds = %630
  %632 = load i32, ptr %48, align 4, !tbaa !13
  %633 = sext i32 %632 to i64
  %634 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt8valarrayIdEixEm(ptr noundef nonnull align 8 dereferenceable(16) %15, i64 noundef %633) #7
  %635 = load double, ptr %634, align 8, !tbaa !18
  %636 = load double, ptr %45, align 8, !tbaa !18
  %637 = fadd double %636, %635
  store double %637, ptr %45, align 8, !tbaa !18
  %638 = load i32, ptr %48, align 4, !tbaa !13
  %639 = sext i32 %638 to i64
  %640 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt8valarrayIdEixEm(ptr noundef nonnull align 8 dereferenceable(16) %18, i64 noundef %639) #7
  %641 = load double, ptr %640, align 8, !tbaa !18
  %642 = load double, ptr %46, align 8, !tbaa !18
  %643 = fadd double %642, %641
  store double %643, ptr %46, align 8, !tbaa !18
  %644 = load i32, ptr %48, align 4, !tbaa !13
  %645 = sext i32 %644 to i64
  %646 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt8valarrayIdEixEm(ptr noundef nonnull align 8 dereferenceable(16) %15, i64 noundef %645) #7
  %647 = load double, ptr %646, align 8, !tbaa !18
  %648 = load i32, ptr %48, align 4, !tbaa !13
  %649 = sext i32 %648 to i64
  %650 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt8valarrayIdEixEm(ptr noundef nonnull align 8 dereferenceable(16) %18, i64 noundef %649) #7
  %651 = load double, ptr %650, align 8, !tbaa !18
  %652 = load double, ptr %47, align 8, !tbaa !18
  %653 = call double @llvm.fmuladd.f64(double %647, double %651, double %652)
  store double %653, ptr %47, align 8, !tbaa !18
  br label %654

654:                                              ; preds = %631, %630
  br label %655

655:                                              ; preds = %654
  %656 = load i32, ptr %48, align 4, !tbaa !13
  %657 = add nsw i32 %656, 1
  store i32 %657, ptr %48, align 4, !tbaa !13
  br label %581, !llvm.loop !25

658:                                              ; preds = %587
  call void @llvm.lifetime.start.p0(i64 8, ptr %49) #7
  %659 = load double, ptr %47, align 8, !tbaa !18
  %660 = fmul double 5.000000e-01, %659
  %661 = load double, ptr %46, align 8, !tbaa !18
  %662 = fdiv double %660, %661
  store double %662, ptr %49, align 8, !tbaa !18
  call void @llvm.lifetime.start.p0(i64 8, ptr %50) #7
  %663 = load double, ptr %47, align 8, !tbaa !18
  %664 = fmul double 5.000000e-01, %663
  %665 = load double, ptr %45, align 8, !tbaa !18
  %666 = fdiv double %664, %665
  store double %666, ptr %50, align 8, !tbaa !18
  %667 = invoke noundef nonnull align 8 dereferenceable(16) ptr @_ZNSt8valarrayIdEpLERKd(ptr noundef nonnull align 8 dereferenceable(16) %12, ptr noundef nonnull align 8 dereferenceable(8) %49)
          to label %668 unwind label %678

668:                                              ; preds = %658
  %669 = invoke noundef nonnull align 8 dereferenceable(16) ptr @_ZNSt8valarrayIdEpLERKd(ptr noundef nonnull align 8 dereferenceable(16) %15, ptr noundef nonnull align 8 dereferenceable(8) %49)
          to label %670 unwind label %678

670:                                              ; preds = %668
  call void @llvm.lifetime.start.p0(i64 4, ptr %51) #7
  store i32 0, ptr %51, align 4, !tbaa !13
  br label %671

671:                                              ; preds = %717, %670
  %672 = load i32, ptr %51, align 4, !tbaa !13
  %673 = load i32, ptr %5, align 4, !tbaa !13
  %674 = load i32, ptr %4, align 4, !tbaa !13
  %675 = add nsw i32 %673, %674
  %676 = icmp slt i32 %672, %675
  br i1 %676, label %682, label %677

677:                                              ; preds = %671
  store i32 20, ptr %20, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %51) #7
  br label %720

678:                                              ; preds = %723, %720, %668, %658
  %679 = landingpad { ptr, i32 }
          cleanup
  %680 = extractvalue { ptr, i32 } %679, 0
  store ptr %680, ptr %13, align 8
  %681 = extractvalue { ptr, i32 } %679, 1
  store i32 %681, ptr %14, align 4
  br label %734

682:                                              ; preds = %671
  %683 = load ptr, ptr %9, align 8, !tbaa !5
  %684 = load i32, ptr %51, align 4, !tbaa !13
  %685 = sext i32 %684 to i64
  %686 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNKSt8valarrayIdEixEm(ptr noundef nonnull align 8 dereferenceable(16) %683, i64 noundef %685) #7
  %687 = load double, ptr %686, align 8, !tbaa !18
  %688 = invoke noundef zeroext i1 @_ZSt8isfinited(double noundef %687)
          to label %689 unwind label %697

689:                                              ; preds = %682
  br i1 %688, label %690, label %701

690:                                              ; preds = %689
  %691 = load double, ptr %50, align 8, !tbaa !18
  %692 = load i32, ptr %51, align 4, !tbaa !13
  %693 = sext i32 %692 to i64
  %694 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt8valarrayIdEixEm(ptr noundef nonnull align 8 dereferenceable(16) %17, i64 noundef %693) #7
  %695 = load double, ptr %694, align 8, !tbaa !18
  %696 = fadd double %695, %691
  store double %696, ptr %694, align 8, !tbaa !18
  br label %701

697:                                              ; preds = %701, %682
  %698 = landingpad { ptr, i32 }
          cleanup
  %699 = extractvalue { ptr, i32 } %698, 0
  store ptr %699, ptr %13, align 8
  %700 = extractvalue { ptr, i32 } %698, 1
  store i32 %700, ptr %14, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %51) #7
  br label %734

701:                                              ; preds = %690, %689
  %702 = load ptr, ptr %10, align 8, !tbaa !5
  %703 = load i32, ptr %51, align 4, !tbaa !13
  %704 = sext i32 %703 to i64
  %705 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNKSt8valarrayIdEixEm(ptr noundef nonnull align 8 dereferenceable(16) %702, i64 noundef %704) #7
  %706 = load double, ptr %705, align 8, !tbaa !18
  %707 = invoke noundef zeroext i1 @_ZSt8isfinited(double noundef %706)
          to label %708 unwind label %697

708:                                              ; preds = %701
  br i1 %707, label %709, label %716

709:                                              ; preds = %708
  %710 = load double, ptr %50, align 8, !tbaa !18
  %711 = load i32, ptr %51, align 4, !tbaa !13
  %712 = sext i32 %711 to i64
  %713 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt8valarrayIdEixEm(ptr noundef nonnull align 8 dereferenceable(16) %18, i64 noundef %712) #7
  %714 = load double, ptr %713, align 8, !tbaa !18
  %715 = fadd double %714, %710
  store double %715, ptr %713, align 8, !tbaa !18
  br label %716

716:                                              ; preds = %709, %708
  br label %717

717:                                              ; preds = %716
  %718 = load i32, ptr %51, align 4, !tbaa !13
  %719 = add nsw i32 %718, 1
  store i32 %719, ptr %51, align 4, !tbaa !13
  br label %671, !llvm.loop !26

720:                                              ; preds = %677
  %721 = getelementptr inbounds %"class.ipx::IPM", ptr %52, i32 0, i32 2
  %722 = load ptr, ptr %721, align 8, !tbaa !9
  invoke void @_ZN3ipx7Iterate10InitializeERKSt8valarrayIdES4_S4_S4_S4_S4_(ptr noundef nonnull align 8 dereferenceable(296) %722, ptr noundef nonnull align 8 dereferenceable(16) %11, ptr noundef nonnull align 8 dereferenceable(16) %12, ptr noundef nonnull align 8 dereferenceable(16) %15, ptr noundef nonnull align 8 dereferenceable(16) %16, ptr noundef nonnull align 8 dereferenceable(16) %17, ptr noundef nonnull align 8 dereferenceable(16) %18)
          to label %723 unwind label %678

723:                                              ; preds = %720
  %724 = getelementptr inbounds %"class.ipx::IPM", ptr %52, i32 0, i32 2
  %725 = load ptr, ptr %724, align 8, !tbaa !9
  %726 = invoke noundef double @_ZNK3ipx7Iterate15complementarityEv(ptr noundef nonnull align 8 dereferenceable(296) %725)
          to label %727 unwind label %678

727:                                              ; preds = %723
  %728 = getelementptr inbounds %"class.ipx::IPM", ptr %52, i32 0, i32 8
  store double %726, ptr %728, align 8, !tbaa !27
  call void @llvm.lifetime.end.p0(i64 8, ptr %50) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %49) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %47) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %46) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %45) #7
  store i32 0, ptr %20, align 4
  br label %729

729:                                              ; preds = %727, %573
  call void @llvm.lifetime.end.p0(i64 8, ptr %30) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %29) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %25) #7
  br label %730

730:                                              ; preds = %729, %216
  call void @llvm.lifetime.end.p0(i64 8, ptr %23) #7
  br label %731

731:                                              ; preds = %730, %110
  call void @_ZNSt8valarrayIdED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %19) #7
  call void @llvm.lifetime.end.p0(i64 16, ptr %19) #7
  call void @_ZNSt8valarrayIdED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %18) #7
  call void @llvm.lifetime.end.p0(i64 16, ptr %18) #7
  call void @_ZNSt8valarrayIdED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %17) #7
  call void @llvm.lifetime.end.p0(i64 16, ptr %17) #7
  call void @_ZNSt8valarrayIdED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %16) #7
  call void @llvm.lifetime.end.p0(i64 16, ptr %16) #7
  call void @_ZNSt8valarrayIdED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %15) #7
  call void @llvm.lifetime.end.p0(i64 16, ptr %15) #7
  call void @_ZNSt8valarrayIdED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %12) #7
  call void @llvm.lifetime.end.p0(i64 16, ptr %12) #7
  call void @_ZNSt8valarrayIdED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %11) #7
  call void @llvm.lifetime.end.p0(i64 16, ptr %11) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %10) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %9) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %8) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %7) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %6) #7
  call void @llvm.lifetime.end.p0(i64 4, ptr %5) #7
  call void @llvm.lifetime.end.p0(i64 4, ptr %4) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %3) #7
  %732 = load i32, ptr %20, align 4
  switch i32 %732, label %752 [
    i32 0, label %733
    i32 1, label %733
  ]

733:                                              ; preds = %731, %731
  ret void

734:                                              ; preds = %697, %678
  call void @llvm.lifetime.end.p0(i64 8, ptr %50) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %49) #7
  br label %735

735:                                              ; preds = %734, %619
  call void @llvm.lifetime.end.p0(i64 8, ptr %47) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %46) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %45) #7
  br label %736

736:                                              ; preds = %735, %579, %371, %346, %314
  call void @llvm.lifetime.end.p0(i64 8, ptr %30) #7
  br label %737

737:                                              ; preds = %736, %310
  call void @llvm.lifetime.end.p0(i64 8, ptr %29) #7
  br label %738

738:                                              ; preds = %737, %289
  call void @llvm.lifetime.end.p0(i64 8, ptr %25) #7
  br label %739

739:                                              ; preds = %738, %221, %217
  call void @llvm.lifetime.end.p0(i64 8, ptr %23) #7
  br label %740

740:                                              ; preds = %739, %191, %135
  call void @_ZNSt8valarrayIdED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %19) #7
  br label %741

741:                                              ; preds = %740, %131
  call void @llvm.lifetime.end.p0(i64 16, ptr %19) #7
  call void @_ZNSt8valarrayIdED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %18) #7
  br label %742

742:                                              ; preds = %741, %127
  call void @llvm.lifetime.end.p0(i64 16, ptr %18) #7
  call void @_ZNSt8valarrayIdED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %17) #7
  br label %743

743:                                              ; preds = %742, %123
  call void @llvm.lifetime.end.p0(i64 16, ptr %17) #7
  call void @_ZNSt8valarrayIdED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %16) #7
  br label %744

744:                                              ; preds = %743, %119
  call void @llvm.lifetime.end.p0(i64 16, ptr %16) #7
  call void @_ZNSt8valarrayIdED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %15) #7
  br label %745

745:                                              ; preds = %744, %115
  call void @llvm.lifetime.end.p0(i64 16, ptr %15) #7
  call void @_ZNSt8valarrayIdED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %12) #7
  br label %746

746:                                              ; preds = %745, %111
  call void @llvm.lifetime.end.p0(i64 16, ptr %12) #7
  call void @_ZNSt8valarrayIdED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %11) #7
  call void @llvm.lifetime.end.p0(i64 16, ptr %11) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %10) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %9) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %8) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %7) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %6) #7
  call void @llvm.lifetime.end.p0(i64 4, ptr %5) #7
  call void @llvm.lifetime.end.p0(i64 4, ptr %4) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %3) #7
  br label %747

747:                                              ; preds = %746
  %748 = load ptr, ptr %13, align 8
  %749 = load i32, ptr %14, align 4
  %750 = insertvalue { ptr, i32 } poison, ptr %748, 0
  %751 = insertvalue { ptr, i32 } %750, i32 %749, 1
  resume { ptr, i32 } %751

752:                                              ; preds = %731
  unreachable
}

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

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

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

declare noundef double @_ZNK3ipx7Iterate15complementarityEv(ptr noundef nonnull align 8 dereferenceable(296)) #3

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

declare void @_ZN3ipx9KKTSolver9FactorizeEPNS_7IterateEPNS_4InfoE(ptr noundef nonnull align 8 dereferenceable(8), ptr noundef, ptr noundef) #3

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

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

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

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

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

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

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

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

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

; Function Attrs: inlinehint mustprogress uwtable
declare dso_local void @_ZN3ipx13ScatterColumnERKNS_12SparseMatrixEidRSt8valarrayIdE(ptr noundef nonnull align 8 dereferenceable(128), i32 noundef, double noundef, ptr noundef nonnull align 8 dereferenceable(16)) #5

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

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

declare void @_ZN3ipx9KKTSolver5SolveERKSt8valarrayIdES4_dRS2_S5_PNS_4InfoE(ptr noundef nonnull align 8 dereferenceable(8), ptr noundef nonnull align 8 dereferenceable(16), ptr noundef nonnull align 8 dereferenceable(16), double noundef, ptr noundef nonnull align 8 dereferenceable(16), ptr noundef nonnull align 8 dereferenceable(16), ptr noundef) #3

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

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

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

declare noundef double @_ZN3ipx7TwonormERKSt8valarrayIdE(ptr noundef nonnull align 8 dereferenceable(16)) #3

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

declare void @_ZN3ipx11MultiplyAddERKNS_12SparseMatrixERKSt8valarrayIdEdRS4_c(ptr noundef nonnull align 8 dereferenceable(128), ptr noundef nonnull align 8 dereferenceable(16), double noundef, ptr noundef nonnull align 8 dereferenceable(16), i8 noundef signext) #3

; Function Attrs: inlinehint mustprogress uwtable
declare dso_local { double, ptr } @_ZStmlIdESt5_ExprINSt8__detail8_BinClosISt12__multipliesSt9_ConstantSt9_ValArrayT_S6_EENSt5__funIS3_S6_E11result_typeEERKNSt8valarrayIS6_E10value_typeERKSD_(ptr noundef nonnull align 8 dereferenceable(8), ptr noundef nonnull align 8 dereferenceable(16)) #5

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

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

declare void @_ZN3ipx7Iterate10InitializeERKSt8valarrayIdES4_S4_S4_S4_S4_(ptr noundef nonnull align 8 dereferenceable(296), ptr noundef nonnull align 8 dereferenceable(16), ptr noundef nonnull align 8 dereferenceable(16), ptr noundef nonnull align 8 dereferenceable(16), ptr noundef nonnull align 8 dereferenceable(16), ptr noundef nonnull align 8 dereferenceable(16), ptr noundef nonnull align 8 dereferenceable(16)) #3

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

attributes #0 = { nocallback nofree nosync nounwind willreturn memory(argmem: readwrite) }
attributes #1 = { mustprogress uwtable "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }
attributes #2 = { 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 = { "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }
attributes #4 = { inlinehint mustprogress nounwind uwtable "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }
attributes #5 = { inlinehint mustprogress uwtable "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }
attributes #6 = { nocallback nofree nosync nounwind speculatable willreturn memory(none) }
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, !6, i64 0}
!6 = !{!"any pointer", !7, i64 0}
!7 = !{!"omnipotent char", !8, i64 0}
!8 = !{!"Simple C++ TBAA"}
!9 = !{!10, !6, i64 16}
!10 = !{!"_ZTSN3ipx3IPME", !6, i64 0, !6, i64 8, !6, i64 16, !6, i64 24, !11, i64 32, !11, i64 40, !12, i64 48, !11, i64 56, !12, i64 64, !11, i64 72, !12, i64 80}
!11 = !{!"double", !7, i64 0}
!12 = !{!"int", !7, i64 0}
!13 = !{!12, !12, i64 0}
!14 = !{!10, !6, i64 8}
!15 = !{!10, !6, i64 24}
!16 = !{!17, !12, i64 12}
!17 = !{!"_ZTS8ipx_info", !12, i64 0, !12, i64 4, !12, i64 8, !12, i64 12, !12, i64 16, !12, i64 20, !12, i64 24, !12, i64 28, !12, i64 32, !12, i64 36, !12, i64 40, !12, i64 44, !12, i64 48, !12, i64 52, !12, i64 56, !12, i64 60, !12, i64 64, !12, i64 68, !12, i64 72, !12, i64 76, !11, i64 80, !11, i64 88, !11, i64 96, !11, i64 104, !11, i64 112, !11, i64 120, !11, i64 128, !11, i64 136, !11, i64 144, !11, i64 152, !11, i64 160, !11, i64 168, !11, i64 176, !11, i64 184, !12, i64 192, !12, i64 196, !12, i64 200, !12, i64 204, !12, i64 208, !12, i64 212, !12, i64 216, !11, i64 224, !11, i64 232, !11, i64 240, !11, i64 248, !11, i64 256, !11, i64 264, !11, i64 272, !11, i64 280, !11, i64 288, !11, i64 296, !11, i64 304, !11, i64 312, !11, i64 320, !11, i64 328, !11, i64 336, !11, i64 344, !11, i64 352, !11, i64 360, !11, i64 368, !11, i64 376, !11, i64 384, !11, i64 392, !11, i64 400, !11, i64 408, !12, i64 416, !12, i64 420, !12, i64 424, !12, i64 428, !11, i64 432, !11, i64 440, !11, i64 448, !11, i64 456}
!18 = !{!11, !11, i64 0}
!19 = distinct !{!19, !20}
!20 = !{!"llvm.loop.mustprogress"}
!21 = distinct !{!21, !20}
!22 = distinct !{!22, !20}
!23 = distinct !{!23, !20}
!24 = distinct !{!24, !20}
!25 = distinct !{!25, !20}
!26 = distinct !{!26, !20}
!27 = !{!10, !11, i64 56}


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

%"class.std::valarray" = type { i64, ptr }
%"class.std::_Expr" = type { %"struct.std::__detail::_BinClos" }
%"struct.std::__detail::_BinClos" = type { %"class.std::__detail::_BinBase1" }
%"class.std::__detail::_BinBase1" = type { double, ptr }

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

declare i32 @__gxx_personality_v0(...)

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

; Function Attrs: mustprogress uwtable
define dso_local void @_ZN3ipx3IPM20ComputeStartingPointEv(ptr nocapture noundef nonnull align 8 dereferenceable(84) %0) local_unnamed_addr #1 align 2 personality ptr @__gxx_personality_v0 {
  %2 = alloca %"class.std::valarray", align 8
  %3 = alloca %"class.std::valarray", align 8
  %4 = alloca %"class.std::valarray", align 8
  %5 = alloca %"class.std::valarray", align 8
  %6 = alloca %"class.std::valarray", align 8
  %7 = alloca %"class.std::valarray", align 8
  %8 = alloca %"class.std::valarray", align 8
  %9 = alloca double, align 8
  %10 = alloca double, align 8
  %11 = alloca double, align 8
  %12 = alloca double, align 8
  %13 = alloca double, align 8
  %14 = alloca double, align 8
  %15 = alloca double, align 8
  %16 = alloca %"class.std::_Expr", align 8
  %17 = alloca double, align 8
  %18 = alloca double, align 8
  %19 = alloca double, align 8
  %20 = alloca double, align 8
  %21 = alloca double, align 8
  %22 = getelementptr inbounds i8, ptr %0, i64 16
  %23 = load ptr, ptr %22, align 8, !tbaa !5
  %24 = tail call noundef nonnull align 8 dereferenceable(704) ptr @_ZNK3ipx7Iterate5modelEv(ptr noundef nonnull align 8 dereferenceable(296) %23)
  %25 = tail call noundef i32 @_ZNK3ipx5Model4rowsEv(ptr noundef nonnull align 8 dereferenceable(704) %24)
  %26 = tail call noundef i32 @_ZNK3ipx5Model4colsEv(ptr noundef nonnull align 8 dereferenceable(704) %24)
  %27 = tail call noundef nonnull align 8 dereferenceable(128) ptr @_ZNK3ipx5Model2AIEv(ptr noundef nonnull align 8 dereferenceable(704) %24)
  %28 = tail call noundef nonnull align 8 dereferenceable(16) ptr @_ZNK3ipx5Model1bEv(ptr noundef nonnull align 8 dereferenceable(704) %24)
  %29 = tail call noundef nonnull align 8 dereferenceable(16) ptr @_ZNK3ipx5Model1cEv(ptr noundef nonnull align 8 dereferenceable(704) %24)
  %30 = tail call noundef nonnull align 8 dereferenceable(16) ptr @_ZNK3ipx5Model2lbEv(ptr noundef nonnull align 8 dereferenceable(704) %24)
  %31 = tail call noundef nonnull align 8 dereferenceable(16) ptr @_ZNK3ipx5Model2ubEv(ptr noundef nonnull align 8 dereferenceable(704) %24)
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %2) #7
  %32 = add nsw i32 %26, %25
  %33 = sext i32 %32 to i64
  call void @_ZNSt8valarrayIdEC2Em(ptr noundef nonnull align 8 dereferenceable(16) %2, i64 noundef %33)
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %3) #7
  invoke void @_ZNSt8valarrayIdEC2Em(ptr noundef nonnull align 8 dereferenceable(16) %3, i64 noundef %33)
          to label %34 unwind label %49

34:                                               ; preds = %1
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %4) #7
  invoke void @_ZNSt8valarrayIdEC2Em(ptr noundef nonnull align 8 dereferenceable(16) %4, i64 noundef %33)
          to label %35 unwind label %51

35:                                               ; preds = %34
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %5) #7
  %36 = sext i32 %25 to i64
  invoke void @_ZNSt8valarrayIdEC2Em(ptr noundef nonnull align 8 dereferenceable(16) %5, i64 noundef %36)
          to label %37 unwind label %53

37:                                               ; preds = %35
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %6) #7
  invoke void @_ZNSt8valarrayIdEC2Em(ptr noundef nonnull align 8 dereferenceable(16) %6, i64 noundef %33)
          to label %38 unwind label %55

38:                                               ; preds = %37
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %7) #7
  invoke void @_ZNSt8valarrayIdEC2Em(ptr noundef nonnull align 8 dereferenceable(16) %7, i64 noundef %33)
          to label %39 unwind label %57

39:                                               ; preds = %38
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %8) #7
  invoke void @_ZNSt8valarrayIdEC2Em(ptr noundef nonnull align 8 dereferenceable(16) %8, i64 noundef %36)
          to label %40 unwind label %59

40:                                               ; preds = %39
  %41 = getelementptr inbounds i8, ptr %0, i64 8
  %42 = load ptr, ptr %41, align 8, !tbaa !12
  %43 = getelementptr inbounds i8, ptr %0, i64 24
  %44 = load ptr, ptr %43, align 8, !tbaa !13
  invoke void @_ZN3ipx9KKTSolver9FactorizeEPNS_7IterateEPNS_4InfoE(ptr noundef nonnull align 8 dereferenceable(8) %42, ptr noundef null, ptr noundef %44)
          to label %45 unwind label %61

45:                                               ; preds = %40
  %46 = load ptr, ptr %43, align 8, !tbaa !13
  %47 = getelementptr inbounds i8, ptr %46, i64 12
  %48 = load i32, ptr %47, align 4, !tbaa !14
  %.not = icmp eq i32 %48, 0
  br i1 %.not, label %63, label %317

49:                                               ; preds = %1
  %50 = landingpad { ptr, i32 }
          cleanup
  br label %325

51:                                               ; preds = %34
  %52 = landingpad { ptr, i32 }
          cleanup
  br label %324

53:                                               ; preds = %35
  %54 = landingpad { ptr, i32 }
          cleanup
  br label %323

55:                                               ; preds = %37
  %56 = landingpad { ptr, i32 }
          cleanup
  br label %322

57:                                               ; preds = %38
  %58 = landingpad { ptr, i32 }
          cleanup
  br label %321

59:                                               ; preds = %39
  %60 = landingpad { ptr, i32 }
          cleanup
  br label %320

61:                                               ; preds = %63, %40
  %62 = landingpad { ptr, i32 }
          cleanup
  br label %319

63:                                               ; preds = %45
  %64 = invoke noundef nonnull align 8 dereferenceable(16) ptr @_ZNSt8valarrayIdEaSERKS0_(ptr noundef nonnull align 8 dereferenceable(16) %8, ptr noundef nonnull align 8 dereferenceable(16) %28)
          to label %.preheader205 unwind label %61

.preheader205:                                    ; preds = %63
  %65 = icmp sgt i32 %32, 0
  br i1 %65, label %.lr.ph.preheader, label %._crit_edge

.lr.ph.preheader:                                 ; preds = %.preheader205
  %wide.trip.count = zext nneg i32 %32 to i64
  br label %.lr.ph

._crit_edge:                                      ; preds = %88, %.preheader205
  %66 = invoke noundef double @_ZN3ipx7InfnormERKSt8valarrayIdE(ptr noundef nonnull align 8 dereferenceable(16) %8)
          to label %89 unwind label %99

.lr.ph:                                           ; preds = %.lr.ph.preheader, %88
  %indvars.iv = phi i64 [ 0, %.lr.ph.preheader ], [ %indvars.iv.next, %88 ]
  %67 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNKSt8valarrayIdEixEm(ptr noundef nonnull align 8 dereferenceable(16) %30, i64 noundef %indvars.iv) #7
  %68 = load double, ptr %67, align 8, !tbaa !16
  %69 = fcmp ogt double %68, 0.000000e+00
  br i1 %69, label %70, label %73

70:                                               ; preds = %.lr.ph
  %71 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNKSt8valarrayIdEixEm(ptr noundef nonnull align 8 dereferenceable(16) %30, i64 noundef %indvars.iv) #7
  %72 = load double, ptr %71, align 8, !tbaa !16
  br label %73

73:                                               ; preds = %70, %.lr.ph
  %.0181 = phi double [ %72, %70 ], [ 0.000000e+00, %.lr.ph ]
  %74 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNKSt8valarrayIdEixEm(ptr noundef nonnull align 8 dereferenceable(16) %31, i64 noundef %indvars.iv) #7
  %75 = load double, ptr %74, align 8, !tbaa !16
  %76 = fcmp ogt double %.0181, %75
  br i1 %76, label %77, label %80

77:                                               ; preds = %73
  %78 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNKSt8valarrayIdEixEm(ptr noundef nonnull align 8 dereferenceable(16) %31, i64 noundef %indvars.iv) #7
  %79 = load double, ptr %78, align 8, !tbaa !16
  br label %80

80:                                               ; preds = %77, %73
  %.1182 = phi double [ %79, %77 ], [ %.0181, %73 ]
  %81 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt8valarrayIdEixEm(ptr noundef nonnull align 8 dereferenceable(16) %2, i64 noundef %indvars.iv) #7
  store double %.1182, ptr %81, align 8, !tbaa !16
  %82 = fcmp une double %.1182, 0.000000e+00
  br i1 %82, label %83, label %88

83:                                               ; preds = %80
  %84 = fneg double %.1182
  %85 = trunc nuw nsw i64 %indvars.iv to i32
  invoke void @_ZN3ipx13ScatterColumnERKNS_12SparseMatrixEidRSt8valarrayIdE(ptr noundef nonnull align 8 dereferenceable(128) %27, i32 noundef %85, double noundef %84, ptr noundef nonnull align 8 dereferenceable(16) %8)
          to label %88 unwind label %86

86:                                               ; preds = %83
  %87 = landingpad { ptr, i32 }
          cleanup
  br label %319

88:                                               ; preds = %83, %80
  %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 %.lr.ph, !llvm.loop !17

89:                                               ; preds = %._crit_edge
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %9) #7
  store double 0.000000e+00, ptr %9, align 8, !tbaa !16
  %90 = invoke noundef nonnull align 8 dereferenceable(16) ptr @_ZNSt8valarrayIdEaSERKd(ptr noundef nonnull align 8 dereferenceable(16) %6, ptr noundef nonnull align 8 dereferenceable(8) %9)
          to label %91 unwind label %101

91:                                               ; preds = %89
  %92 = fmul double %66, 1.000000e-01
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %9) #7
  %93 = load ptr, ptr %41, align 8, !tbaa !12
  %94 = load ptr, ptr %43, align 8, !tbaa !13
  invoke void @_ZN3ipx9KKTSolver5SolveERKSt8valarrayIdES4_dRS2_S5_PNS_4InfoE(ptr noundef nonnull align 8 dereferenceable(8) %93, ptr noundef nonnull align 8 dereferenceable(16) %6, ptr noundef nonnull align 8 dereferenceable(16) %8, double noundef %92, ptr noundef nonnull align 8 dereferenceable(16) %3, ptr noundef nonnull align 8 dereferenceable(16) %5, ptr noundef %94)
          to label %95 unwind label %99

95:                                               ; preds = %91
  %96 = load ptr, ptr %43, align 8, !tbaa !13
  %97 = getelementptr inbounds i8, ptr %96, i64 12
  %98 = load i32, ptr %97, align 4, !tbaa !14
  %.not187 = icmp eq i32 %98, 0
  br i1 %.not187, label %103, label %317

99:                                               ; preds = %103, %91, %._crit_edge
  %100 = landingpad { ptr, i32 }
          cleanup
  br label %319

101:                                              ; preds = %89
  %102 = landingpad { ptr, i32 }
          cleanup
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %9) #7
  br label %319

103:                                              ; preds = %95
  %104 = invoke noundef nonnull align 8 dereferenceable(16) ptr @_ZNSt8valarrayIdEpLERKS0_(ptr noundef nonnull align 8 dereferenceable(16) %2, ptr noundef nonnull align 8 dereferenceable(16) %3)
          to label %105 unwind label %99

105:                                              ; preds = %103
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %10) #7
  store double 0.000000e+00, ptr %10, align 8, !tbaa !16
  br i1 %65, label %.lr.ph209.preheader, label %._crit_edge210

.lr.ph209.preheader:                              ; preds = %105
  %wide.trip.count237 = zext nneg i32 %32 to i64
  br label %.lr.ph209

._crit_edge210:                                   ; preds = %.lr.ph209, %105
  %106 = phi double [ 0.000000e+00, %105 ], [ %130, %.lr.ph209 ]
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %13) #7
  %107 = call double @llvm.fmuladd.f64(double %106, double 1.500000e+00, double 1.000000e+00)
  store double %107, ptr %13, align 8, !tbaa !16
  %108 = invoke noundef nonnull align 8 dereferenceable(16) ptr @_ZNSt8valarrayIdEpLERKd(ptr noundef nonnull align 8 dereferenceable(16) %3, ptr noundef nonnull align 8 dereferenceable(8) %13)
          to label %131 unwind label %137

.lr.ph209:                                        ; preds = %.lr.ph209.preheader, %.lr.ph209
  %indvars.iv234 = phi i64 [ 0, %.lr.ph209.preheader ], [ %indvars.iv.next235, %.lr.ph209 ]
  %109 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt8valarrayIdEixEm(ptr noundef nonnull align 8 dereferenceable(16) %2, i64 noundef %indvars.iv234) #7
  %110 = load double, ptr %109, align 8, !tbaa !16
  %111 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNKSt8valarrayIdEixEm(ptr noundef nonnull align 8 dereferenceable(16) %30, i64 noundef %indvars.iv234) #7
  %112 = load double, ptr %111, align 8, !tbaa !16
  %113 = fsub double %110, %112
  %114 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt8valarrayIdEixEm(ptr noundef nonnull align 8 dereferenceable(16) %3, i64 noundef %indvars.iv234) #7
  store double %113, ptr %114, align 8, !tbaa !16
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %11) #7
  %115 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt8valarrayIdEixEm(ptr noundef nonnull align 8 dereferenceable(16) %3, i64 noundef %indvars.iv234) #7
  %116 = load double, ptr %115, align 8, !tbaa !16
  %117 = fneg double %116
  store double %117, ptr %11, align 8, !tbaa !16
  %118 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZSt3maxIdERKT_S2_S2_(ptr noundef nonnull align 8 dereferenceable(8) %10, ptr noundef nonnull align 8 dereferenceable(8) %11)
  %119 = load double, ptr %118, align 8, !tbaa !16
  store double %119, ptr %10, align 8, !tbaa !16
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %11) #7
  %120 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNKSt8valarrayIdEixEm(ptr noundef nonnull align 8 dereferenceable(16) %31, i64 noundef %indvars.iv234) #7
  %121 = load double, ptr %120, align 8, !tbaa !16
  %122 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt8valarrayIdEixEm(ptr noundef nonnull align 8 dereferenceable(16) %2, i64 noundef %indvars.iv234) #7
  %123 = load double, ptr %122, align 8, !tbaa !16
  %124 = fsub double %121, %123
  %125 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt8valarrayIdEixEm(ptr noundef nonnull align 8 dereferenceable(16) %4, i64 noundef %indvars.iv234) #7
  store double %124, ptr %125, align 8, !tbaa !16
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %12) #7
  %126 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt8valarrayIdEixEm(ptr noundef nonnull align 8 dereferenceable(16) %4, i64 noundef %indvars.iv234) #7
  %127 = load double, ptr %126, align 8, !tbaa !16
  %128 = fneg double %127
  store double %128, ptr %12, align 8, !tbaa !16
  %129 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZSt3maxIdERKT_S2_S2_(ptr noundef nonnull align 8 dereferenceable(8) %10, ptr noundef nonnull align 8 dereferenceable(8) %12)
  %130 = load double, ptr %129, align 8, !tbaa !16
  store double %130, ptr %10, align 8, !tbaa !16
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %12) #7
  %indvars.iv.next235 = add nuw nsw i64 %indvars.iv234, 1
  %exitcond238.not = icmp eq i64 %indvars.iv.next235, %wide.trip.count237
  br i1 %exitcond238.not, label %._crit_edge210, label %.lr.ph209, !llvm.loop !19

131:                                              ; preds = %._crit_edge210
  %132 = invoke noundef nonnull align 8 dereferenceable(16) ptr @_ZNSt8valarrayIdEpLERKd(ptr noundef nonnull align 8 dereferenceable(16) %4, ptr noundef nonnull align 8 dereferenceable(8) %13)
          to label %133 unwind label %137

133:                                              ; preds = %131
  %134 = invoke noundef double @_ZN3ipx7TwonormERKSt8valarrayIdE(ptr noundef nonnull align 8 dereferenceable(16) %29)
          to label %135 unwind label %139

135:                                              ; preds = %133
  %136 = fcmp oeq double %134, 0.000000e+00
  br i1 %136, label %.preheader204, label %151

.preheader204:                                    ; preds = %135
  br i1 %65, label %.lr.ph220.preheader, label %._crit_edge227

.lr.ph220.preheader:                              ; preds = %.preheader204
  %wide.trip.count252 = zext nneg i32 %32 to i64
  br label %.lr.ph220

137:                                              ; preds = %131, %._crit_edge210
  %138 = landingpad { ptr, i32 }
          cleanup
  br label %318

139:                                              ; preds = %133
  %140 = landingpad { ptr, i32 }
          cleanup
  br label %318

.lr.ph220:                                        ; preds = %.lr.ph220.preheader, %.lr.ph220
  %indvars.iv249 = phi i64 [ 0, %.lr.ph220.preheader ], [ %indvars.iv.next250, %.lr.ph220 ]
  %141 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNKSt8valarrayIdEixEm(ptr noundef nonnull align 8 dereferenceable(16) %30, i64 noundef %indvars.iv249) #7
  %142 = load double, ptr %141, align 8, !tbaa !16
  %143 = call noundef zeroext i1 @_ZSt8isfinited(double noundef %142)
  %144 = select i1 %143, double 1.000000e+00, double 0.000000e+00
  %145 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt8valarrayIdEixEm(ptr noundef nonnull align 8 dereferenceable(16) %6, i64 noundef %indvars.iv249) #7
  store double %144, ptr %145, align 8, !tbaa !16
  %146 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNKSt8valarrayIdEixEm(ptr noundef nonnull align 8 dereferenceable(16) %31, i64 noundef %indvars.iv249) #7
  %147 = load double, ptr %146, align 8, !tbaa !16
  %148 = call noundef zeroext i1 @_ZSt8isfinited(double noundef %147)
  %149 = select i1 %148, double 1.000000e+00, double 0.000000e+00
  %150 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt8valarrayIdEixEm(ptr noundef nonnull align 8 dereferenceable(16) %7, i64 noundef %indvars.iv249) #7
  store double %149, ptr %150, align 8, !tbaa !16
  %indvars.iv.next250 = add nuw nsw i64 %indvars.iv249, 1
  %exitcond253.not = icmp eq i64 %indvars.iv.next250, %wide.trip.count252
  br i1 %exitcond253.not, label %.loopexit, label %.lr.ph220, !llvm.loop !20

151:                                              ; preds = %135
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %14) #7
  store double 0.000000e+00, ptr %14, align 8, !tbaa !16
  %152 = invoke noundef nonnull align 8 dereferenceable(16) ptr @_ZNSt8valarrayIdEaSERKd(ptr noundef nonnull align 8 dereferenceable(16) %8, ptr noundef nonnull align 8 dereferenceable(8) %14)
          to label %153 unwind label %163

153:                                              ; preds = %151
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %14) #7
  %154 = invoke noundef double @_ZN3ipx7InfnormERKSt8valarrayIdE(ptr noundef nonnull align 8 dereferenceable(16) %29)
          to label %155 unwind label %165

155:                                              ; preds = %153
  %156 = fmul double %154, 1.000000e-01
  %157 = load ptr, ptr %41, align 8, !tbaa !12
  %158 = load ptr, ptr %43, align 8, !tbaa !13
  invoke void @_ZN3ipx9KKTSolver5SolveERKSt8valarrayIdES4_dRS2_S5_PNS_4InfoE(ptr noundef nonnull align 8 dereferenceable(8) %157, ptr noundef nonnull align 8 dereferenceable(16) %29, ptr noundef nonnull align 8 dereferenceable(16) %8, double noundef %156, ptr noundef nonnull align 8 dereferenceable(16) %6, ptr noundef nonnull align 8 dereferenceable(16) %5, ptr noundef %158)
          to label %159 unwind label %165

159:                                              ; preds = %155
  %160 = load ptr, ptr %43, align 8, !tbaa !13
  %161 = getelementptr inbounds i8, ptr %160, i64 12
  %162 = load i32, ptr %161, align 4, !tbaa !14
  %.not188 = icmp eq i32 %162, 0
  br i1 %.not188, label %167, label %.critedge

163:                                              ; preds = %151
  %164 = landingpad { ptr, i32 }
          cleanup
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %14) #7
  br label %318

165:                                              ; preds = %169, %167, %155, %153
  %166 = landingpad { ptr, i32 }
          cleanup
  br label %318

167:                                              ; preds = %159
  %168 = invoke noundef nonnull align 8 dereferenceable(16) ptr @_ZNSt8valarrayIdEaSERKS0_(ptr noundef nonnull align 8 dereferenceable(16) %6, ptr noundef nonnull align 8 dereferenceable(16) %29)
          to label %169 unwind label %165

169:                                              ; preds = %167
  invoke void @_ZN3ipx11MultiplyAddERKNS_12SparseMatrixERKSt8valarrayIdEdRS4_c(ptr noundef nonnull align 8 dereferenceable(128) %27, ptr noundef nonnull align 8 dereferenceable(16) %5, double noundef -1.000000e+00, ptr noundef nonnull align 8 dereferenceable(16) %6, i8 noundef signext 84)
          to label %170 unwind label %165

170:                                              ; preds = %169
  %171 = invoke noundef double @_ZN3ipx7TwonormERKSt8valarrayIdE(ptr noundef nonnull align 8 dereferenceable(16) %6)
          to label %172 unwind label %185

172:                                              ; preds = %170
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %15) #7
  store double 5.000000e-02, ptr %15, align 8, !tbaa !16
  %173 = fmul double %134, 5.000000e-02
  %174 = fcmp olt double %171, %173
  br i1 %174, label %175, label %191

175:                                              ; preds = %172
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %16) #7
  %176 = invoke { double, ptr } @_ZStmlIdESt5_ExprINSt8__detail8_BinClosISt12__multipliesSt9_ConstantSt9_ValArrayT_S6_EENSt5__funIS3_S6_E11result_typeEERKNSt8valarrayIS6_E10value_typeERKSD_(ptr noundef nonnull align 8 dereferenceable(8) %15, ptr noundef nonnull align 8 dereferenceable(16) %29)
          to label %177 unwind label %187

177:                                              ; preds = %175
  %178 = extractvalue { double, ptr } %176, 0
  store double %178, ptr %16, align 8
  %179 = getelementptr inbounds i8, ptr %16, i64 8
  %180 = extractvalue { double, ptr } %176, 1
  store ptr %180, ptr %179, align 8
  %181 = invoke noundef nonnull align 8 dereferenceable(16) ptr @_ZNSt8valarrayIdEpLINSt8__detail8_BinClosISt12__multipliesSt9_ConstantSt9_ValArrayddEEEERS0_RKSt5_ExprIT_dE(ptr noundef nonnull align 8 dereferenceable(16) %6, ptr noundef nonnull align 8 dereferenceable(16) %16)
          to label %182 unwind label %187

182:                                              ; preds = %177
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %16) #7
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %17) #7
  store double 0x3FEE666666666666, ptr %17, align 8, !tbaa !16
  %183 = invoke noundef nonnull align 8 dereferenceable(16) ptr @_ZNSt8valarrayIdEmLERKd(ptr noundef nonnull align 8 dereferenceable(16) %5, ptr noundef nonnull align 8 dereferenceable(8) %17)
          to label %184 unwind label %189

184:                                              ; preds = %182
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %17) #7
  br label %191

185:                                              ; preds = %170
  %186 = landingpad { ptr, i32 }
          cleanup
  br label %318

187:                                              ; preds = %177, %175
  %188 = landingpad { ptr, i32 }
          cleanup
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %16) #7
  br label %246

189:                                              ; preds = %182
  %190 = landingpad { ptr, i32 }
          cleanup
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %17) #7
  br label %246

191:                                              ; preds = %184, %172
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %18) #7
  store double 0.000000e+00, ptr %18, align 8, !tbaa !16
  br i1 %65, label %.lr.ph213.preheader, label %._crit_edge218

.lr.ph213.preheader:                              ; preds = %191
  %wide.trip.count242 = zext nneg i32 %32 to i64
  br label %.lr.ph213

._crit_edge214:                                   ; preds = %219
  %192 = call double @llvm.fmuladd.f64(double %229, double 1.500000e+00, double 1.000000e+00)
  br i1 %65, label %.lr.ph217.preheader, label %._crit_edge218

.lr.ph217.preheader:                              ; preds = %._crit_edge214
  %wide.trip.count247 = zext nneg i32 %32 to i64
  br label %.lr.ph217

.lr.ph213:                                        ; preds = %.lr.ph213.preheader, %219
  %indvars.iv239 = phi i64 [ 0, %.lr.ph213.preheader ], [ %indvars.iv.next240, %219 ]
  %193 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt8valarrayIdEixEm(ptr noundef nonnull align 8 dereferenceable(16) %6, i64 noundef %indvars.iv239) #7
  %194 = load double, ptr %193, align 8, !tbaa !16
  %195 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt8valarrayIdEixEm(ptr noundef nonnull align 8 dereferenceable(16) %6, i64 noundef %indvars.iv239) #7
  store double 0.000000e+00, ptr %195, align 8, !tbaa !16
  %196 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt8valarrayIdEixEm(ptr noundef nonnull align 8 dereferenceable(16) %7, i64 noundef %indvars.iv239) #7
  store double 0.000000e+00, ptr %196, align 8, !tbaa !16
  %197 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNKSt8valarrayIdEixEm(ptr noundef nonnull align 8 dereferenceable(16) %30, i64 noundef %indvars.iv239) #7
  %198 = load double, ptr %197, align 8, !tbaa !16
  %199 = call noundef zeroext i1 @_ZSt8isfinited(double noundef %198)
  br i1 %199, label %200, label %208

200:                                              ; preds = %.lr.ph213
  %201 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNKSt8valarrayIdEixEm(ptr noundef nonnull align 8 dereferenceable(16) %31, i64 noundef %indvars.iv239) #7
  %202 = load double, ptr %201, align 8, !tbaa !16
  %203 = call noundef zeroext i1 @_ZSt8isfinited(double noundef %202)
  br i1 %203, label %204, label %208

204:                                              ; preds = %200
  %205 = fmul double %194, 5.000000e-01
  %206 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt8valarrayIdEixEm(ptr noundef nonnull align 8 dereferenceable(16) %6, i64 noundef %indvars.iv239) #7
  store double %205, ptr %206, align 8, !tbaa !16
  %207 = fmul double %194, -5.000000e-01
  br label %.sink.split

208:                                              ; preds = %200, %.lr.ph213
  %209 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNKSt8valarrayIdEixEm(ptr noundef nonnull align 8 dereferenceable(16) %30, i64 noundef %indvars.iv239) #7
  %210 = load double, ptr %209, align 8, !tbaa !16
  %211 = call noundef zeroext i1 @_ZSt8isfinited(double noundef %210)
  br i1 %211, label %.sink.split, label %212

212:                                              ; preds = %208
  %213 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNKSt8valarrayIdEixEm(ptr noundef nonnull align 8 dereferenceable(16) %31, i64 noundef %indvars.iv239) #7
  %214 = load double, ptr %213, align 8, !tbaa !16
  %215 = call noundef zeroext i1 @_ZSt8isfinited(double noundef %214)
  br i1 %215, label %216, label %219

216:                                              ; preds = %212
  %217 = fneg double %194
  br label %.sink.split

.sink.split:                                      ; preds = %208, %204, %216
  %.sink266 = phi ptr [ %7, %216 ], [ %7, %204 ], [ %6, %208 ]
  %.sink = phi double [ %217, %216 ], [ %207, %204 ], [ %194, %208 ]
  %218 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt8valarrayIdEixEm(ptr noundef nonnull align 8 dereferenceable(16) %.sink266, i64 noundef %indvars.iv239) #7
  store double %.sink, ptr %218, align 8, !tbaa !16
  br label %219

219:                                              ; preds = %.sink.split, %212
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %19) #7
  %220 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt8valarrayIdEixEm(ptr noundef nonnull align 8 dereferenceable(16) %6, i64 noundef %indvars.iv239) #7
  %221 = load double, ptr %220, align 8, !tbaa !16
  %222 = fneg double %221
  store double %222, ptr %19, align 8, !tbaa !16
  %223 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZSt3maxIdERKT_S2_S2_(ptr noundef nonnull align 8 dereferenceable(8) %18, ptr noundef nonnull align 8 dereferenceable(8) %19)
  %224 = load double, ptr %223, align 8, !tbaa !16
  store double %224, ptr %18, align 8, !tbaa !16
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %19) #7
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %20) #7
  %225 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt8valarrayIdEixEm(ptr noundef nonnull align 8 dereferenceable(16) %7, i64 noundef %indvars.iv239) #7
  %226 = load double, ptr %225, align 8, !tbaa !16
  %227 = fneg double %226
  store double %227, ptr %20, align 8, !tbaa !16
  %228 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZSt3maxIdERKT_S2_S2_(ptr noundef nonnull align 8 dereferenceable(8) %18, ptr noundef nonnull align 8 dereferenceable(8) %20)
  %229 = load double, ptr %228, align 8, !tbaa !16
  store double %229, ptr %18, align 8, !tbaa !16
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %20) #7
  %indvars.iv.next240 = add nuw nsw i64 %indvars.iv239, 1
  %exitcond243.not = icmp eq i64 %indvars.iv.next240, %wide.trip.count242
  br i1 %exitcond243.not, label %._crit_edge214, label %.lr.ph213, !llvm.loop !21

._crit_edge218:                                   ; preds = %245, %191, %._crit_edge214
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %18) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %15) #7
  br label %.loopexit

.lr.ph217:                                        ; preds = %.lr.ph217.preheader, %245
  %indvars.iv244 = phi i64 [ 0, %.lr.ph217.preheader ], [ %indvars.iv.next245, %245 ]
  %230 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNKSt8valarrayIdEixEm(ptr noundef nonnull align 8 dereferenceable(16) %30, i64 noundef %indvars.iv244) #7
  %231 = load double, ptr %230, align 8, !tbaa !16
  %232 = call noundef zeroext i1 @_ZSt8isfinited(double noundef %231)
  br i1 %232, label %233, label %237

233:                                              ; preds = %.lr.ph217
  %234 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt8valarrayIdEixEm(ptr noundef nonnull align 8 dereferenceable(16) %6, i64 noundef %indvars.iv244) #7
  %235 = load double, ptr %234, align 8, !tbaa !16
  %236 = fadd double %192, %235
  store double %236, ptr %234, align 8, !tbaa !16
  br label %237

237:                                              ; preds = %233, %.lr.ph217
  %238 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNKSt8valarrayIdEixEm(ptr noundef nonnull align 8 dereferenceable(16) %31, i64 noundef %indvars.iv244) #7
  %239 = load double, ptr %238, align 8, !tbaa !16
  %240 = call noundef zeroext i1 @_ZSt8isfinited(double noundef %239)
  br i1 %240, label %241, label %245

241:                                              ; preds = %237
  %242 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt8valarrayIdEixEm(ptr noundef nonnull align 8 dereferenceable(16) %7, i64 noundef %indvars.iv244) #7
  %243 = load double, ptr %242, align 8, !tbaa !16
  %244 = fadd double %192, %243
  store double %244, ptr %242, align 8, !tbaa !16
  br label %245

245:                                              ; preds = %237, %241
  %indvars.iv.next245 = add nuw nsw i64 %indvars.iv244, 1
  %exitcond248.not = icmp eq i64 %indvars.iv.next245, %wide.trip.count247
  br i1 %exitcond248.not, label %._crit_edge218, label %.lr.ph217, !llvm.loop !22

246:                                              ; preds = %189, %187
  %.pn = phi { ptr, i32 } [ %190, %189 ], [ %188, %187 ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %15) #7
  br label %318

.loopexit:                                        ; preds = %.lr.ph220, %._crit_edge218
  br i1 %65, label %.lr.ph226.preheader, label %._crit_edge227

.lr.ph226.preheader:                              ; preds = %.loopexit
  %wide.trip.count257 = zext nneg i32 %32 to i64
  br label %.lr.ph226

._crit_edge227.loopexit:                          ; preds = %289
  %247 = fmul double %.2157, 5.000000e-01
  br label %._crit_edge227

._crit_edge227:                                   ; preds = %.preheader204, %._crit_edge227.loopexit, %.loopexit
  %.0155.lcssa = phi double [ 5.000000e-01, %.loopexit ], [ %247, %._crit_edge227.loopexit ], [ 5.000000e-01, %.preheader204 ]
  %248 = phi <2 x double> [ <double 1.000000e+00, double 1.000000e+00>, %.loopexit ], [ %290, %._crit_edge227.loopexit ], [ <double 1.000000e+00, double 1.000000e+00>, %.preheader204 ]
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %21) #7
  %249 = extractelement <2 x double> %248, i64 1
  %250 = fdiv double %.0155.lcssa, %249
  store double %250, ptr %21, align 8, !tbaa !16
  %251 = extractelement <2 x double> %248, i64 0
  %252 = fdiv double %.0155.lcssa, %251
  %253 = invoke noundef nonnull align 8 dereferenceable(16) ptr @_ZNSt8valarrayIdEpLERKd(ptr noundef nonnull align 8 dereferenceable(16) %3, ptr noundef nonnull align 8 dereferenceable(8) %21)
          to label %291 unwind label %294

.lr.ph226:                                        ; preds = %.lr.ph226.preheader, %289
  %indvars.iv254 = phi i64 [ 0, %.lr.ph226.preheader ], [ %indvars.iv.next255, %289 ]
  %.0155223 = phi double [ 1.000000e+00, %.lr.ph226.preheader ], [ %.2157, %289 ]
  %254 = phi <2 x double> [ <double 1.000000e+00, double 1.000000e+00>, %.lr.ph226.preheader ], [ %290, %289 ]
  %255 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNKSt8valarrayIdEixEm(ptr noundef nonnull align 8 dereferenceable(16) %30, i64 noundef %indvars.iv254) #7
  %256 = load double, ptr %255, align 8, !tbaa !16
  %257 = call noundef zeroext i1 @_ZSt8isfinited(double noundef %256)
  br i1 %257, label %258, label %271

258:                                              ; preds = %.lr.ph226
  %259 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt8valarrayIdEixEm(ptr noundef nonnull align 8 dereferenceable(16) %3, i64 noundef %indvars.iv254) #7
  %260 = load double, ptr %259, align 8, !tbaa !16
  %261 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt8valarrayIdEixEm(ptr noundef nonnull align 8 dereferenceable(16) %6, i64 noundef %indvars.iv254) #7
  %262 = load double, ptr %261, align 8, !tbaa !16
  %263 = insertelement <2 x double> poison, double %260, i64 0
  %264 = insertelement <2 x double> %263, double %262, i64 1
  %265 = fadd <2 x double> %254, %264
  %266 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt8valarrayIdEixEm(ptr noundef nonnull align 8 dereferenceable(16) %3, i64 noundef %indvars.iv254) #7
  %267 = load double, ptr %266, align 8, !tbaa !16
  %268 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt8valarrayIdEixEm(ptr noundef nonnull align 8 dereferenceable(16) %6, i64 noundef %indvars.iv254) #7
  %269 = load double, ptr %268, align 8, !tbaa !16
  %270 = call double @llvm.fmuladd.f64(double %267, double %269, double %.0155223)
  br label %271

271:                                              ; preds = %258, %.lr.ph226
  %.1156 = phi double [ %270, %258 ], [ %.0155223, %.lr.ph226 ]
  %272 = phi <2 x double> [ %265, %258 ], [ %254, %.lr.ph226 ]
  %273 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNKSt8valarrayIdEixEm(ptr noundef nonnull align 8 dereferenceable(16) %31, i64 noundef %indvars.iv254) #7
  %274 = load double, ptr %273, align 8, !tbaa !16
  %275 = call noundef zeroext i1 @_ZSt8isfinited(double noundef %274)
  br i1 %275, label %276, label %289

276:                                              ; preds = %271
  %277 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt8valarrayIdEixEm(ptr noundef nonnull align 8 dereferenceable(16) %4, i64 noundef %indvars.iv254) #7
  %278 = load double, ptr %277, align 8, !tbaa !16
  %279 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt8valarrayIdEixEm(ptr noundef nonnull align 8 dereferenceable(16) %7, i64 noundef %indvars.iv254) #7
  %280 = load double, ptr %279, align 8, !tbaa !16
  %281 = insertelement <2 x double> poison, double %278, i64 0
  %282 = insertelement <2 x double> %281, double %280, i64 1
  %283 = fadd <2 x double> %272, %282
  %284 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt8valarrayIdEixEm(ptr noundef nonnull align 8 dereferenceable(16) %4, i64 noundef %indvars.iv254) #7
  %285 = load double, ptr %284, align 8, !tbaa !16
  %286 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt8valarrayIdEixEm(ptr noundef nonnull align 8 dereferenceable(16) %7, i64 noundef %indvars.iv254) #7
  %287 = load double, ptr %286, align 8, !tbaa !16
  %288 = call double @llvm.fmuladd.f64(double %285, double %287, double %.1156)
  br label %289

289:                                              ; preds = %271, %276
  %.2157 = phi double [ %288, %276 ], [ %.1156, %271 ]
  %290 = phi <2 x double> [ %283, %276 ], [ %272, %271 ]
  %indvars.iv.next255 = add nuw nsw i64 %indvars.iv254, 1
  %exitcond258.not = icmp eq i64 %indvars.iv.next255, %wide.trip.count257
  br i1 %exitcond258.not, label %._crit_edge227.loopexit, label %.lr.ph226, !llvm.loop !23

291:                                              ; preds = %._crit_edge227
  %292 = invoke noundef nonnull align 8 dereferenceable(16) ptr @_ZNSt8valarrayIdEpLERKd(ptr noundef nonnull align 8 dereferenceable(16) %4, ptr noundef nonnull align 8 dereferenceable(8) %21)
          to label %.preheader unwind label %294

.preheader:                                       ; preds = %291
  br i1 %65, label %.lr.ph231.preheader, label %._crit_edge232

.lr.ph231.preheader:                              ; preds = %.preheader
  %wide.trip.count262 = zext nneg i32 %32 to i64
  br label %.lr.ph231

._crit_edge232:                                   ; preds = %311, %.preheader
  %293 = load ptr, ptr %22, align 8, !tbaa !5
  invoke void @_ZN3ipx7Iterate10InitializeERKSt8valarrayIdES4_S4_S4_S4_S4_(ptr noundef nonnull align 8 dereferenceable(296) %293, 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)
          to label %312 unwind label %294

294:                                              ; preds = %312, %._crit_edge232, %291, %._crit_edge227
  %295 = landingpad { ptr, i32 }
          cleanup
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %21) #7
  br label %318

.lr.ph231:                                        ; preds = %.lr.ph231.preheader, %311
  %indvars.iv259 = phi i64 [ 0, %.lr.ph231.preheader ], [ %indvars.iv.next260, %311 ]
  %296 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNKSt8valarrayIdEixEm(ptr noundef nonnull align 8 dereferenceable(16) %30, i64 noundef %indvars.iv259) #7
  %297 = load double, ptr %296, align 8, !tbaa !16
  %298 = call noundef zeroext i1 @_ZSt8isfinited(double noundef %297)
  br i1 %298, label %299, label %303

299:                                              ; preds = %.lr.ph231
  %300 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt8valarrayIdEixEm(ptr noundef nonnull align 8 dereferenceable(16) %6, i64 noundef %indvars.iv259) #7
  %301 = load double, ptr %300, align 8, !tbaa !16
  %302 = fadd double %252, %301
  store double %302, ptr %300, align 8, !tbaa !16
  br label %303

303:                                              ; preds = %299, %.lr.ph231
  %304 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNKSt8valarrayIdEixEm(ptr noundef nonnull align 8 dereferenceable(16) %31, i64 noundef %indvars.iv259) #7
  %305 = load double, ptr %304, align 8, !tbaa !16
  %306 = call noundef zeroext i1 @_ZSt8isfinited(double noundef %305)
  br i1 %306, label %307, label %311

307:                                              ; preds = %303
  %308 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt8valarrayIdEixEm(ptr noundef nonnull align 8 dereferenceable(16) %7, i64 noundef %indvars.iv259) #7
  %309 = load double, ptr %308, align 8, !tbaa !16
  %310 = fadd double %252, %309
  store double %310, ptr %308, align 8, !tbaa !16
  br label %311

311:                                              ; preds = %303, %307
  %indvars.iv.next260 = add nuw nsw i64 %indvars.iv259, 1
  %exitcond263.not = icmp eq i64 %indvars.iv.next260, %wide.trip.count262
  br i1 %exitcond263.not, label %._crit_edge232, label %.lr.ph231, !llvm.loop !24

312:                                              ; preds = %._crit_edge232
  %313 = load ptr, ptr %22, align 8, !tbaa !5
  %314 = invoke noundef double @_ZNK3ipx7Iterate15complementarityEv(ptr noundef nonnull align 8 dereferenceable(296) %313)
          to label %315 unwind label %294

315:                                              ; preds = %312
  %316 = getelementptr inbounds i8, ptr %0, i64 56
  store double %314, ptr %316, align 8, !tbaa !25
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %21) #7
  br label %.critedge

.critedge:                                        ; preds = %159, %315
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %13) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %10) #7
  br label %317

317:                                              ; preds = %.critedge, %95, %45
  call void @_ZNSt8valarrayIdED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %8) #7
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %8) #7
  call void @_ZNSt8valarrayIdED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %7) #7
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %7) #7
  call void @_ZNSt8valarrayIdED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %6) #7
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %6) #7
  call void @_ZNSt8valarrayIdED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %5) #7
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %5) #7
  call void @_ZNSt8valarrayIdED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %4) #7
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %4) #7
  call void @_ZNSt8valarrayIdED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %3) #7
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %3) #7
  call void @_ZNSt8valarrayIdED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %2) #7
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %2) #7
  ret void

318:                                              ; preds = %139, %163, %294, %185, %246, %165, %137
  %.pn192.pn = phi { ptr, i32 } [ %138, %137 ], [ %295, %294 ], [ %164, %163 ], [ %140, %139 ], [ %166, %165 ], [ %.pn, %246 ], [ %186, %185 ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %13) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %10) #7
  br label %319

319:                                              ; preds = %99, %101, %318, %86, %61
  %.pn196 = phi { ptr, i32 } [ %87, %86 ], [ %62, %61 ], [ %.pn192.pn, %318 ], [ %100, %99 ], [ %102, %101 ]
  call void @_ZNSt8valarrayIdED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %8) #7
  br label %320

320:                                              ; preds = %319, %59
  %.pn196.pn = phi { ptr, i32 } [ %.pn196, %319 ], [ %60, %59 ]
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %8) #7
  call void @_ZNSt8valarrayIdED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %7) #7
  br label %321

321:                                              ; preds = %320, %57
  %.pn196.pn.pn = phi { ptr, i32 } [ %.pn196.pn, %320 ], [ %58, %57 ]
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %7) #7
  call void @_ZNSt8valarrayIdED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %6) #7
  br label %322

322:                                              ; preds = %321, %55
  %.pn196.pn.pn.pn = phi { ptr, i32 } [ %.pn196.pn.pn, %321 ], [ %56, %55 ]
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %6) #7
  call void @_ZNSt8valarrayIdED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %5) #7
  br label %323

323:                                              ; preds = %322, %53
  %.pn196.pn.pn.pn.pn = phi { ptr, i32 } [ %.pn196.pn.pn.pn, %322 ], [ %54, %53 ]
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %5) #7
  call void @_ZNSt8valarrayIdED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %4) #7
  br label %324

324:                                              ; preds = %323, %51
  %.pn196.pn.pn.pn.pn.pn = phi { ptr, i32 } [ %.pn196.pn.pn.pn.pn, %323 ], [ %52, %51 ]
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %4) #7
  call void @_ZNSt8valarrayIdED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %3) #7
  br label %325

325:                                              ; preds = %324, %49
  %.pn196.pn.pn.pn.pn.pn.pn = phi { ptr, i32 } [ %.pn196.pn.pn.pn.pn.pn, %324 ], [ %50, %49 ]
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %3) #7
  call void @_ZNSt8valarrayIdED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %2) #7
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %2) #7
  resume { ptr, i32 } %.pn196.pn.pn.pn.pn.pn.pn
}

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

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

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

declare noundef double @_ZNK3ipx7Iterate15complementarityEv(ptr noundef nonnull align 8 dereferenceable(296)) local_unnamed_addr #3

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

declare void @_ZN3ipx9KKTSolver9FactorizeEPNS_7IterateEPNS_4InfoE(ptr noundef nonnull align 8 dereferenceable(8), ptr noundef, ptr noundef) local_unnamed_addr #3

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

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

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

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

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

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

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

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

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

; Function Attrs: inlinehint mustprogress uwtable
declare dso_local void @_ZN3ipx13ScatterColumnERKNS_12SparseMatrixEidRSt8valarrayIdE(ptr noundef nonnull align 8 dereferenceable(128), i32 noundef, double noundef, ptr noundef nonnull align 8 dereferenceable(16)) local_unnamed_addr #5

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

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

declare void @_ZN3ipx9KKTSolver5SolveERKSt8valarrayIdES4_dRS2_S5_PNS_4InfoE(ptr noundef nonnull align 8 dereferenceable(8), ptr noundef nonnull align 8 dereferenceable(16), ptr noundef nonnull align 8 dereferenceable(16), double noundef, ptr noundef nonnull align 8 dereferenceable(16), ptr noundef nonnull align 8 dereferenceable(16), ptr noundef) local_unnamed_addr #3

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

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

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

declare noundef double @_ZN3ipx7TwonormERKSt8valarrayIdE(ptr noundef nonnull align 8 dereferenceable(16)) local_unnamed_addr #3

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

declare void @_ZN3ipx11MultiplyAddERKNS_12SparseMatrixERKSt8valarrayIdEdRS4_c(ptr noundef nonnull align 8 dereferenceable(128), ptr noundef nonnull align 8 dereferenceable(16), double noundef, ptr noundef nonnull align 8 dereferenceable(16), i8 noundef signext) local_unnamed_addr #3

; Function Attrs: inlinehint mustprogress uwtable
declare dso_local { double, ptr } @_ZStmlIdESt5_ExprINSt8__detail8_BinClosISt12__multipliesSt9_ConstantSt9_ValArrayT_S6_EENSt5__funIS3_S6_E11result_typeEERKNSt8valarrayIS6_E10value_typeERKSD_(ptr noundef nonnull align 8 dereferenceable(8), ptr noundef nonnull align 8 dereferenceable(16)) local_unnamed_addr #5

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

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

declare void @_ZN3ipx7Iterate10InitializeERKSt8valarrayIdES4_S4_S4_S4_S4_(ptr noundef nonnull align 8 dereferenceable(296), ptr noundef nonnull align 8 dereferenceable(16), ptr noundef nonnull align 8 dereferenceable(16), ptr noundef nonnull align 8 dereferenceable(16), ptr noundef nonnull align 8 dereferenceable(16), ptr noundef nonnull align 8 dereferenceable(16), ptr noundef nonnull align 8 dereferenceable(16)) local_unnamed_addr #3

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

attributes #0 = { mustprogress nocallback nofree nosync nounwind willreturn memory(argmem: readwrite) }
attributes #1 = { mustprogress uwtable "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }
attributes #2 = { 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 = { "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }
attributes #4 = { inlinehint mustprogress nounwind uwtable "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }
attributes #5 = { inlinehint mustprogress uwtable "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }
attributes #6 = { mustprogress nocallback nofree nosync nounwind speculatable willreturn memory(none) }
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 16}
!6 = !{!"_ZTSN3ipx3IPME", !7, i64 0, !7, i64 8, !7, i64 16, !7, i64 24, !10, i64 32, !10, i64 40, !11, i64 48, !10, i64 56, !11, i64 64, !10, i64 72, !11, i64 80}
!7 = !{!"any pointer", !8, i64 0}
!8 = !{!"omnipotent char", !9, i64 0}
!9 = !{!"Simple C++ TBAA"}
!10 = !{!"double", !8, i64 0}
!11 = !{!"int", !8, i64 0}
!12 = !{!6, !7, i64 8}
!13 = !{!6, !7, i64 24}
!14 = !{!15, !11, i64 12}
!15 = !{!"_ZTS8ipx_info", !11, i64 0, !11, i64 4, !11, i64 8, !11, i64 12, !11, i64 16, !11, i64 20, !11, i64 24, !11, i64 28, !11, i64 32, !11, i64 36, !11, i64 40, !11, i64 44, !11, i64 48, !11, i64 52, !11, i64 56, !11, i64 60, !11, i64 64, !11, i64 68, !11, i64 72, !11, i64 76, !10, i64 80, !10, i64 88, !10, i64 96, !10, i64 104, !10, i64 112, !10, i64 120, !10, i64 128, !10, i64 136, !10, i64 144, !10, i64 152, !10, i64 160, !10, i64 168, !10, i64 176, !10, i64 184, !11, i64 192, !11, i64 196, !11, i64 200, !11, i64 204, !11, i64 208, !11, i64 212, !11, i64 216, !10, i64 224, !10, i64 232, !10, i64 240, !10, i64 248, !10, i64 256, !10, i64 264, !10, i64 272, !10, i64 280, !10, i64 288, !10, i64 296, !10, i64 304, !10, i64 312, !10, i64 320, !10, i64 328, !10, i64 336, !10, i64 344, !10, i64 352, !10, i64 360, !10, i64 368, !10, i64 376, !10, i64 384, !10, i64 392, !10, i64 400, !10, i64 408, !11, i64 416, !11, i64 420, !11, i64 424, !11, i64 428, !10, i64 432, !10, i64 440, !10, i64 448, !10, i64 456}
!16 = !{!10, !10, i64 0}
!17 = distinct !{!17, !18}
!18 = !{!"llvm.loop.mustprogress"}
!19 = distinct !{!19, !18}
!20 = distinct !{!20, !18}
!21 = distinct !{!21, !18}
!22 = distinct !{!22, !18}
!23 = distinct !{!23, !18}
!24 = distinct !{!24, !18}
!25 = !{!6, !10, i64 56}


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