; LLVM IR from OpenMathLib/OpenBLAS :: lapack-netlib/SRC (dptrfs)

; 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"

@.str = external hidden unnamed_addr constant [7 x i8], align 1
@.str.1 = external hidden unnamed_addr constant [8 x i8], align 1
@.str.2 = external hidden unnamed_addr constant [13 x i8], align 1
@c__1 = external hidden global i32, align 4
@c_b11 = external hidden global double, align 8

; Function Attrs: nounwind uwtable
define dso_local void @dptrfs_(ptr noundef %0, ptr noundef %1, ptr noundef %2, ptr noundef %3, ptr noundef %4, ptr noundef %5, ptr noundef %6, ptr noundef %7, ptr noundef %8, ptr noundef %9, ptr noundef %10, ptr noundef %11, ptr noundef %12, ptr noundef %13) #0 {
  %15 = alloca ptr, align 8
  %16 = alloca ptr, align 8
  %17 = alloca ptr, align 8
  %18 = alloca ptr, align 8
  %19 = alloca ptr, align 8
  %20 = alloca ptr, align 8
  %21 = alloca ptr, align 8
  %22 = alloca ptr, align 8
  %23 = alloca ptr, align 8
  %24 = alloca ptr, align 8
  %25 = alloca ptr, align 8
  %26 = alloca ptr, align 8
  %27 = alloca ptr, align 8
  %28 = alloca ptr, align 8
  %29 = alloca i32, align 4
  %30 = alloca i32, align 4
  %31 = alloca i32, align 4
  %32 = alloca i32, align 4
  %33 = alloca i32, align 4
  %34 = alloca i32, align 4
  %35 = alloca double, align 8
  %36 = alloca double, align 8
  %37 = alloca double, align 8
  %38 = alloca double, align 8
  %39 = alloca double, align 8
  %40 = alloca i32, align 4
  %41 = alloca i32, align 4
  %42 = alloca double, align 8
  %43 = alloca i32, align 4
  %44 = alloca double, align 8
  %45 = alloca double, align 8
  %46 = alloca double, align 8
  %47 = alloca double, align 8
  %48 = alloca i32, align 4
  %49 = alloca i32, align 4
  %50 = alloca double, align 8
  %51 = alloca double, align 8
  %52 = alloca double, align 8
  %53 = alloca i32, align 4
  store ptr %0, ptr %15, align 8, !tbaa !5
  store ptr %1, ptr %16, align 8, !tbaa !5
  store ptr %2, ptr %17, align 8, !tbaa !5
  store ptr %3, ptr %18, align 8, !tbaa !5
  store ptr %4, ptr %19, align 8, !tbaa !5
  store ptr %5, ptr %20, align 8, !tbaa !5
  store ptr %6, ptr %21, align 8, !tbaa !5
  store ptr %7, ptr %22, align 8, !tbaa !5
  store ptr %8, ptr %23, align 8, !tbaa !5
  store ptr %9, ptr %24, align 8, !tbaa !5
  store ptr %10, ptr %25, align 8, !tbaa !5
  store ptr %11, ptr %26, align 8, !tbaa !5
  store ptr %12, ptr %27, align 8, !tbaa !5
  store ptr %13, ptr %28, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 4, ptr %29) #4
  call void @llvm.lifetime.start.p0(i64 4, ptr %30) #4
  call void @llvm.lifetime.start.p0(i64 4, ptr %31) #4
  call void @llvm.lifetime.start.p0(i64 4, ptr %32) #4
  call void @llvm.lifetime.start.p0(i64 4, ptr %33) #4
  call void @llvm.lifetime.start.p0(i64 4, ptr %34) #4
  call void @llvm.lifetime.start.p0(i64 8, ptr %35) #4
  call void @llvm.lifetime.start.p0(i64 8, ptr %36) #4
  call void @llvm.lifetime.start.p0(i64 8, ptr %37) #4
  call void @llvm.lifetime.start.p0(i64 8, ptr %38) #4
  call void @llvm.lifetime.start.p0(i64 8, ptr %39) #4
  call void @llvm.lifetime.start.p0(i64 4, ptr %40) #4
  call void @llvm.lifetime.start.p0(i64 4, ptr %41) #4
  call void @llvm.lifetime.start.p0(i64 8, ptr %42) #4
  call void @llvm.lifetime.start.p0(i64 4, ptr %43) #4
  call void @llvm.lifetime.start.p0(i64 8, ptr %44) #4
  call void @llvm.lifetime.start.p0(i64 8, ptr %45) #4
  call void @llvm.lifetime.start.p0(i64 8, ptr %46) #4
  call void @llvm.lifetime.start.p0(i64 8, ptr %47) #4
  call void @llvm.lifetime.start.p0(i64 4, ptr %48) #4
  call void @llvm.lifetime.start.p0(i64 4, ptr %49) #4
  call void @llvm.lifetime.start.p0(i64 8, ptr %50) #4
  call void @llvm.lifetime.start.p0(i64 8, ptr %51) #4
  call void @llvm.lifetime.start.p0(i64 8, ptr %52) #4
  %54 = load ptr, ptr %17, align 8, !tbaa !5
  %55 = getelementptr inbounds double, ptr %54, i32 -1
  store ptr %55, ptr %17, align 8, !tbaa !5
  %56 = load ptr, ptr %18, align 8, !tbaa !5
  %57 = getelementptr inbounds double, ptr %56, i32 -1
  store ptr %57, ptr %18, align 8, !tbaa !5
  %58 = load ptr, ptr %19, align 8, !tbaa !5
  %59 = getelementptr inbounds double, ptr %58, i32 -1
  store ptr %59, ptr %19, align 8, !tbaa !5
  %60 = load ptr, ptr %20, align 8, !tbaa !5
  %61 = getelementptr inbounds double, ptr %60, i32 -1
  store ptr %61, ptr %20, align 8, !tbaa !5
  %62 = load ptr, ptr %22, align 8, !tbaa !5
  %63 = load i32, ptr %62, align 4, !tbaa !9
  store i32 %63, ptr %29, align 4, !tbaa !9
  %64 = load i32, ptr %29, align 4, !tbaa !9
  %65 = mul nsw i32 %64, 1
  %66 = add nsw i32 1, %65
  store i32 %66, ptr %30, align 4, !tbaa !9
  %67 = load i32, ptr %30, align 4, !tbaa !9
  %68 = load ptr, ptr %21, align 8, !tbaa !5
  %69 = sext i32 %67 to i64
  %70 = sub i64 0, %69
  %71 = getelementptr inbounds double, ptr %68, i64 %70
  store ptr %71, ptr %21, align 8, !tbaa !5
  %72 = load ptr, ptr %24, align 8, !tbaa !5
  %73 = load i32, ptr %72, align 4, !tbaa !9
  store i32 %73, ptr %31, align 4, !tbaa !9
  %74 = load i32, ptr %31, align 4, !tbaa !9
  %75 = mul nsw i32 %74, 1
  %76 = add nsw i32 1, %75
  store i32 %76, ptr %32, align 4, !tbaa !9
  %77 = load i32, ptr %32, align 4, !tbaa !9
  %78 = load ptr, ptr %23, align 8, !tbaa !5
  %79 = sext i32 %77 to i64
  %80 = sub i64 0, %79
  %81 = getelementptr inbounds double, ptr %78, i64 %80
  store ptr %81, ptr %23, align 8, !tbaa !5
  %82 = load ptr, ptr %25, align 8, !tbaa !5
  %83 = getelementptr inbounds double, ptr %82, i32 -1
  store ptr %83, ptr %25, align 8, !tbaa !5
  %84 = load ptr, ptr %26, align 8, !tbaa !5
  %85 = getelementptr inbounds double, ptr %84, i32 -1
  store ptr %85, ptr %26, align 8, !tbaa !5
  %86 = load ptr, ptr %27, align 8, !tbaa !5
  %87 = getelementptr inbounds double, ptr %86, i32 -1
  store ptr %87, ptr %27, align 8, !tbaa !5
  %88 = load ptr, ptr %28, align 8, !tbaa !5
  store i32 0, ptr %88, align 4, !tbaa !9
  %89 = load ptr, ptr %15, align 8, !tbaa !5
  %90 = load i32, ptr %89, align 4, !tbaa !9
  %91 = icmp slt i32 %90, 0
  br i1 %91, label %92, label %94

92:                                               ; preds = %14
  %93 = load ptr, ptr %28, align 8, !tbaa !5
  store i32 -1, ptr %93, align 4, !tbaa !9
  br label %133

94:                                               ; preds = %14
  %95 = load ptr, ptr %16, align 8, !tbaa !5
  %96 = load i32, ptr %95, align 4, !tbaa !9
  %97 = icmp slt i32 %96, 0
  br i1 %97, label %98, label %100

98:                                               ; preds = %94
  %99 = load ptr, ptr %28, align 8, !tbaa !5
  store i32 -2, ptr %99, align 4, !tbaa !9
  br label %132

100:                                              ; preds = %94
  %101 = load ptr, ptr %22, align 8, !tbaa !5
  %102 = load i32, ptr %101, align 4, !tbaa !9
  %103 = load ptr, ptr %15, align 8, !tbaa !5
  %104 = load i32, ptr %103, align 4, !tbaa !9
  %105 = icmp sge i32 1, %104
  br i1 %105, label %106, label %107

106:                                              ; preds = %100
  br label %110

107:                                              ; preds = %100
  %108 = load ptr, ptr %15, align 8, !tbaa !5
  %109 = load i32, ptr %108, align 4, !tbaa !9
  br label %110

110:                                              ; preds = %107, %106
  %111 = phi i32 [ 1, %106 ], [ %109, %107 ]
  %112 = icmp slt i32 %102, %111
  br i1 %112, label %113, label %115

113:                                              ; preds = %110
  %114 = load ptr, ptr %28, align 8, !tbaa !5
  store i32 -8, ptr %114, align 4, !tbaa !9
  br label %131

115:                                              ; preds = %110
  %116 = load ptr, ptr %24, align 8, !tbaa !5
  %117 = load i32, ptr %116, align 4, !tbaa !9
  %118 = load ptr, ptr %15, align 8, !tbaa !5
  %119 = load i32, ptr %118, align 4, !tbaa !9
  %120 = icmp sge i32 1, %119
  br i1 %120, label %121, label %122

121:                                              ; preds = %115
  br label %125

122:                                              ; preds = %115
  %123 = load ptr, ptr %15, align 8, !tbaa !5
  %124 = load i32, ptr %123, align 4, !tbaa !9
  br label %125

125:                                              ; preds = %122, %121
  %126 = phi i32 [ 1, %121 ], [ %124, %122 ]
  %127 = icmp slt i32 %117, %126
  br i1 %127, label %128, label %130

128:                                              ; preds = %125
  %129 = load ptr, ptr %28, align 8, !tbaa !5
  store i32 -10, ptr %129, align 4, !tbaa !9
  br label %130

130:                                              ; preds = %128, %125
  br label %131

131:                                              ; preds = %130, %113
  br label %132

132:                                              ; preds = %131, %98
  br label %133

133:                                              ; preds = %132, %92
  %134 = load ptr, ptr %28, align 8, !tbaa !5
  %135 = load i32, ptr %134, align 4, !tbaa !9
  %136 = icmp ne i32 %135, 0
  br i1 %136, label %137, label %142

137:                                              ; preds = %133
  %138 = load ptr, ptr %28, align 8, !tbaa !5
  %139 = load i32, ptr %138, align 4, !tbaa !9
  %140 = sub nsw i32 0, %139
  store i32 %140, ptr %33, align 4, !tbaa !9
  %141 = call i32 @xerbla_(ptr noundef @.str, ptr noundef %33, i32 noundef 6)
  store i32 1, ptr %53, align 4
  br label %963

142:                                              ; preds = %133
  %143 = load ptr, ptr %15, align 8, !tbaa !5
  %144 = load i32, ptr %143, align 4, !tbaa !9
  %145 = icmp eq i32 %144, 0
  br i1 %145, label %150, label %146

146:                                              ; preds = %142
  %147 = load ptr, ptr %16, align 8, !tbaa !5
  %148 = load i32, ptr %147, align 4, !tbaa !9
  %149 = icmp eq i32 %148, 0
  br i1 %149, label %150, label %170

150:                                              ; preds = %146, %142
  %151 = load ptr, ptr %16, align 8, !tbaa !5
  %152 = load i32, ptr %151, align 4, !tbaa !9
  store i32 %152, ptr %33, align 4, !tbaa !9
  store i32 1, ptr %41, align 4, !tbaa !9
  br label %153

153:                                              ; preds = %166, %150
  %154 = load i32, ptr %41, align 4, !tbaa !9
  %155 = load i32, ptr %33, align 4, !tbaa !9
  %156 = icmp sle i32 %154, %155
  br i1 %156, label %157, label %169

157:                                              ; preds = %153
  %158 = load ptr, ptr %25, align 8, !tbaa !5
  %159 = load i32, ptr %41, align 4, !tbaa !9
  %160 = sext i32 %159 to i64
  %161 = getelementptr inbounds double, ptr %158, i64 %160
  store double 0.000000e+00, ptr %161, align 8, !tbaa !11
  %162 = load ptr, ptr %26, align 8, !tbaa !5
  %163 = load i32, ptr %41, align 4, !tbaa !9
  %164 = sext i32 %163 to i64
  %165 = getelementptr inbounds double, ptr %162, i64 %164
  store double 0.000000e+00, ptr %165, align 8, !tbaa !11
  br label %166

166:                                              ; preds = %157
  %167 = load i32, ptr %41, align 4, !tbaa !9
  %168 = add nsw i32 %167, 1
  store i32 %168, ptr %41, align 4, !tbaa !9
  br label %153, !llvm.loop !13

169:                                              ; preds = %153
  store i32 1, ptr %53, align 4
  br label %963

170:                                              ; preds = %146
  store i32 4, ptr %49, align 4, !tbaa !9
  %171 = call double @dlamch_(ptr noundef @.str.1)
  store double %171, ptr %52, align 8, !tbaa !11
  %172 = call double @dlamch_(ptr noundef @.str.2)
  store double %172, ptr %50, align 8, !tbaa !11
  %173 = load i32, ptr %49, align 4, !tbaa !9
  %174 = sitofp i32 %173 to double
  %175 = load double, ptr %50, align 8, !tbaa !11
  %176 = fmul double %174, %175
  store double %176, ptr %38, align 8, !tbaa !11
  %177 = load double, ptr %38, align 8, !tbaa !11
  %178 = load double, ptr %52, align 8, !tbaa !11
  %179 = fdiv double %177, %178
  store double %179, ptr %39, align 8, !tbaa !11
  %180 = load ptr, ptr %16, align 8, !tbaa !5
  %181 = load i32, ptr %180, align 4, !tbaa !9
  store i32 %181, ptr %33, align 4, !tbaa !9
  store i32 1, ptr %41, align 4, !tbaa !9
  br label %182

182:                                              ; preds = %959, %170
  %183 = load i32, ptr %41, align 4, !tbaa !9
  %184 = load i32, ptr %33, align 4, !tbaa !9
  %185 = icmp sle i32 %183, %184
  br i1 %185, label %186, label %962

186:                                              ; preds = %182
  store i32 1, ptr %43, align 4, !tbaa !9
  store double 3.000000e+00, ptr %51, align 8, !tbaa !11
  br label %187

187:                                              ; preds = %652, %186
  %188 = load ptr, ptr %15, align 8, !tbaa !5
  %189 = load i32, ptr %188, align 4, !tbaa !9
  %190 = icmp eq i32 %189, 1
  br i1 %190, label %191, label %242

191:                                              ; preds = %187
  %192 = load ptr, ptr %21, align 8, !tbaa !5
  %193 = load i32, ptr %41, align 4, !tbaa !9
  %194 = load i32, ptr %29, align 4, !tbaa !9
  %195 = mul nsw i32 %193, %194
  %196 = add nsw i32 %195, 1
  %197 = sext i32 %196 to i64
  %198 = getelementptr inbounds double, ptr %192, i64 %197
  %199 = load double, ptr %198, align 8, !tbaa !11
  store double %199, ptr %44, align 8, !tbaa !11
  %200 = load ptr, ptr %17, align 8, !tbaa !5
  %201 = getelementptr inbounds double, ptr %200, i64 1
  %202 = load double, ptr %201, align 8, !tbaa !11
  %203 = load ptr, ptr %23, align 8, !tbaa !5
  %204 = load i32, ptr %41, align 4, !tbaa !9
  %205 = load i32, ptr %31, align 4, !tbaa !9
  %206 = mul nsw i32 %204, %205
  %207 = add nsw i32 %206, 1
  %208 = sext i32 %207 to i64
  %209 = getelementptr inbounds double, ptr %203, i64 %208
  %210 = load double, ptr %209, align 8, !tbaa !11
  %211 = fmul double %202, %210
  store double %211, ptr %46, align 8, !tbaa !11
  %212 = load double, ptr %44, align 8, !tbaa !11
  %213 = load double, ptr %46, align 8, !tbaa !11
  %214 = fsub double %212, %213
  %215 = load ptr, ptr %27, align 8, !tbaa !5
  %216 = load ptr, ptr %15, align 8, !tbaa !5
  %217 = load i32, ptr %216, align 4, !tbaa !9
  %218 = add nsw i32 %217, 1
  %219 = sext i32 %218 to i64
  %220 = getelementptr inbounds double, ptr %215, i64 %219
  store double %214, ptr %220, align 8, !tbaa !11
  %221 = load double, ptr %44, align 8, !tbaa !11
  %222 = fcmp oge double %221, 0.000000e+00
  br i1 %222, label %223, label %225

223:                                              ; preds = %191
  %224 = load double, ptr %44, align 8, !tbaa !11
  br label %228

225:                                              ; preds = %191
  %226 = load double, ptr %44, align 8, !tbaa !11
  %227 = fneg double %226
  br label %228

228:                                              ; preds = %225, %223
  %229 = phi double [ %224, %223 ], [ %227, %225 ]
  %230 = load double, ptr %46, align 8, !tbaa !11
  %231 = fcmp oge double %230, 0.000000e+00
  br i1 %231, label %232, label %234

232:                                              ; preds = %228
  %233 = load double, ptr %46, align 8, !tbaa !11
  br label %237

234:                                              ; preds = %228
  %235 = load double, ptr %46, align 8, !tbaa !11
  %236 = fneg double %235
  br label %237

237:                                              ; preds = %234, %232
  %238 = phi double [ %233, %232 ], [ %236, %234 ]
  %239 = fadd double %229, %238
  %240 = load ptr, ptr %27, align 8, !tbaa !5
  %241 = getelementptr inbounds double, ptr %240, i64 1
  store double %239, ptr %241, align 8, !tbaa !11
  br label %536

242:                                              ; preds = %187
  %243 = load ptr, ptr %21, align 8, !tbaa !5
  %244 = load i32, ptr %41, align 4, !tbaa !9
  %245 = load i32, ptr %29, align 4, !tbaa !9
  %246 = mul nsw i32 %244, %245
  %247 = add nsw i32 %246, 1
  %248 = sext i32 %247 to i64
  %249 = getelementptr inbounds double, ptr %243, i64 %248
  %250 = load double, ptr %249, align 8, !tbaa !11
  store double %250, ptr %44, align 8, !tbaa !11
  %251 = load ptr, ptr %17, align 8, !tbaa !5
  %252 = getelementptr inbounds double, ptr %251, i64 1
  %253 = load double, ptr %252, align 8, !tbaa !11
  %254 = load ptr, ptr %23, align 8, !tbaa !5
  %255 = load i32, ptr %41, align 4, !tbaa !9
  %256 = load i32, ptr %31, align 4, !tbaa !9
  %257 = mul nsw i32 %255, %256
  %258 = add nsw i32 %257, 1
  %259 = sext i32 %258 to i64
  %260 = getelementptr inbounds double, ptr %254, i64 %259
  %261 = load double, ptr %260, align 8, !tbaa !11
  %262 = fmul double %253, %261
  store double %262, ptr %46, align 8, !tbaa !11
  %263 = load ptr, ptr %18, align 8, !tbaa !5
  %264 = getelementptr inbounds double, ptr %263, i64 1
  %265 = load double, ptr %264, align 8, !tbaa !11
  %266 = load ptr, ptr %23, align 8, !tbaa !5
  %267 = load i32, ptr %41, align 4, !tbaa !9
  %268 = load i32, ptr %31, align 4, !tbaa !9
  %269 = mul nsw i32 %267, %268
  %270 = add nsw i32 %269, 2
  %271 = sext i32 %270 to i64
  %272 = getelementptr inbounds double, ptr %266, i64 %271
  %273 = load double, ptr %272, align 8, !tbaa !11
  %274 = fmul double %265, %273
  store double %274, ptr %47, align 8, !tbaa !11
  %275 = load double, ptr %44, align 8, !tbaa !11
  %276 = load double, ptr %46, align 8, !tbaa !11
  %277 = fsub double %275, %276
  %278 = load double, ptr %47, align 8, !tbaa !11
  %279 = fsub double %277, %278
  %280 = load ptr, ptr %27, align 8, !tbaa !5
  %281 = load ptr, ptr %15, align 8, !tbaa !5
  %282 = load i32, ptr %281, align 4, !tbaa !9
  %283 = add nsw i32 %282, 1
  %284 = sext i32 %283 to i64
  %285 = getelementptr inbounds double, ptr %280, i64 %284
  store double %279, ptr %285, align 8, !tbaa !11
  %286 = load double, ptr %44, align 8, !tbaa !11
  %287 = fcmp oge double %286, 0.000000e+00
  br i1 %287, label %288, label %290

288:                                              ; preds = %242
  %289 = load double, ptr %44, align 8, !tbaa !11
  br label %293

290:                                              ; preds = %242
  %291 = load double, ptr %44, align 8, !tbaa !11
  %292 = fneg double %291
  br label %293

293:                                              ; preds = %290, %288
  %294 = phi double [ %289, %288 ], [ %292, %290 ]
  %295 = load double, ptr %46, align 8, !tbaa !11
  %296 = fcmp oge double %295, 0.000000e+00
  br i1 %296, label %297, label %299

297:                                              ; preds = %293
  %298 = load double, ptr %46, align 8, !tbaa !11
  br label %302

299:                                              ; preds = %293
  %300 = load double, ptr %46, align 8, !tbaa !11
  %301 = fneg double %300
  br label %302

302:                                              ; preds = %299, %297
  %303 = phi double [ %298, %297 ], [ %301, %299 ]
  %304 = fadd double %294, %303
  %305 = load double, ptr %47, align 8, !tbaa !11
  %306 = fcmp oge double %305, 0.000000e+00
  br i1 %306, label %307, label %309

307:                                              ; preds = %302
  %308 = load double, ptr %47, align 8, !tbaa !11
  br label %312

309:                                              ; preds = %302
  %310 = load double, ptr %47, align 8, !tbaa !11
  %311 = fneg double %310
  br label %312

312:                                              ; preds = %309, %307
  %313 = phi double [ %308, %307 ], [ %311, %309 ]
  %314 = fadd double %304, %313
  %315 = load ptr, ptr %27, align 8, !tbaa !5
  %316 = getelementptr inbounds double, ptr %315, i64 1
  store double %314, ptr %316, align 8, !tbaa !11
  %317 = load ptr, ptr %15, align 8, !tbaa !5
  %318 = load i32, ptr %317, align 4, !tbaa !9
  %319 = sub nsw i32 %318, 1
  store i32 %319, ptr %34, align 4, !tbaa !9
  store i32 2, ptr %40, align 4, !tbaa !9
  br label %320

320:                                              ; preds = %439, %312
  %321 = load i32, ptr %40, align 4, !tbaa !9
  %322 = load i32, ptr %34, align 4, !tbaa !9
  %323 = icmp sle i32 %321, %322
  br i1 %323, label %324, label %442

324:                                              ; preds = %320
  %325 = load ptr, ptr %21, align 8, !tbaa !5
  %326 = load i32, ptr %40, align 4, !tbaa !9
  %327 = load i32, ptr %41, align 4, !tbaa !9
  %328 = load i32, ptr %29, align 4, !tbaa !9
  %329 = mul nsw i32 %327, %328
  %330 = add nsw i32 %326, %329
  %331 = sext i32 %330 to i64
  %332 = getelementptr inbounds double, ptr %325, i64 %331
  %333 = load double, ptr %332, align 8, !tbaa !11
  store double %333, ptr %44, align 8, !tbaa !11
  %334 = load ptr, ptr %18, align 8, !tbaa !5
  %335 = load i32, ptr %40, align 4, !tbaa !9
  %336 = sub nsw i32 %335, 1
  %337 = sext i32 %336 to i64
  %338 = getelementptr inbounds double, ptr %334, i64 %337
  %339 = load double, ptr %338, align 8, !tbaa !11
  %340 = load ptr, ptr %23, align 8, !tbaa !5
  %341 = load i32, ptr %40, align 4, !tbaa !9
  %342 = sub nsw i32 %341, 1
  %343 = load i32, ptr %41, align 4, !tbaa !9
  %344 = load i32, ptr %31, align 4, !tbaa !9
  %345 = mul nsw i32 %343, %344
  %346 = add nsw i32 %342, %345
  %347 = sext i32 %346 to i64
  %348 = getelementptr inbounds double, ptr %340, i64 %347
  %349 = load double, ptr %348, align 8, !tbaa !11
  %350 = fmul double %339, %349
  store double %350, ptr %45, align 8, !tbaa !11
  %351 = load ptr, ptr %17, align 8, !tbaa !5
  %352 = load i32, ptr %40, align 4, !tbaa !9
  %353 = sext i32 %352 to i64
  %354 = getelementptr inbounds double, ptr %351, i64 %353
  %355 = load double, ptr %354, align 8, !tbaa !11
  %356 = load ptr, ptr %23, align 8, !tbaa !5
  %357 = load i32, ptr %40, align 4, !tbaa !9
  %358 = load i32, ptr %41, align 4, !tbaa !9
  %359 = load i32, ptr %31, align 4, !tbaa !9
  %360 = mul nsw i32 %358, %359
  %361 = add nsw i32 %357, %360
  %362 = sext i32 %361 to i64
  %363 = getelementptr inbounds double, ptr %356, i64 %362
  %364 = load double, ptr %363, align 8, !tbaa !11
  %365 = fmul double %355, %364
  store double %365, ptr %46, align 8, !tbaa !11
  %366 = load ptr, ptr %18, align 8, !tbaa !5
  %367 = load i32, ptr %40, align 4, !tbaa !9
  %368 = sext i32 %367 to i64
  %369 = getelementptr inbounds double, ptr %366, i64 %368
  %370 = load double, ptr %369, align 8, !tbaa !11
  %371 = load ptr, ptr %23, align 8, !tbaa !5
  %372 = load i32, ptr %40, align 4, !tbaa !9
  %373 = add nsw i32 %372, 1
  %374 = load i32, ptr %41, align 4, !tbaa !9
  %375 = load i32, ptr %31, align 4, !tbaa !9
  %376 = mul nsw i32 %374, %375
  %377 = add nsw i32 %373, %376
  %378 = sext i32 %377 to i64
  %379 = getelementptr inbounds double, ptr %371, i64 %378
  %380 = load double, ptr %379, align 8, !tbaa !11
  %381 = fmul double %370, %380
  store double %381, ptr %47, align 8, !tbaa !11
  %382 = load double, ptr %44, align 8, !tbaa !11
  %383 = load double, ptr %45, align 8, !tbaa !11
  %384 = fsub double %382, %383
  %385 = load double, ptr %46, align 8, !tbaa !11
  %386 = fsub double %384, %385
  %387 = load double, ptr %47, align 8, !tbaa !11
  %388 = fsub double %386, %387
  %389 = load ptr, ptr %27, align 8, !tbaa !5
  %390 = load ptr, ptr %15, align 8, !tbaa !5
  %391 = load i32, ptr %390, align 4, !tbaa !9
  %392 = load i32, ptr %40, align 4, !tbaa !9
  %393 = add nsw i32 %391, %392
  %394 = sext i32 %393 to i64
  %395 = getelementptr inbounds double, ptr %389, i64 %394
  store double %388, ptr %395, align 8, !tbaa !11
  %396 = load double, ptr %44, align 8, !tbaa !11
  %397 = fcmp oge double %396, 0.000000e+00
  br i1 %397, label %398, label %400

398:                                              ; preds = %324
  %399 = load double, ptr %44, align 8, !tbaa !11
  br label %403

400:                                              ; preds = %324
  %401 = load double, ptr %44, align 8, !tbaa !11
  %402 = fneg double %401
  br label %403

403:                                              ; preds = %400, %398
  %404 = phi double [ %399, %398 ], [ %402, %400 ]
  %405 = load double, ptr %45, align 8, !tbaa !11
  %406 = fcmp oge double %405, 0.000000e+00
  br i1 %406, label %407, label %409

407:                                              ; preds = %403
  %408 = load double, ptr %45, align 8, !tbaa !11
  br label %412

409:                                              ; preds = %403
  %410 = load double, ptr %45, align 8, !tbaa !11
  %411 = fneg double %410
  br label %412

412:                                              ; preds = %409, %407
  %413 = phi double [ %408, %407 ], [ %411, %409 ]
  %414 = fadd double %404, %413
  %415 = load double, ptr %46, align 8, !tbaa !11
  %416 = fcmp oge double %415, 0.000000e+00
  br i1 %416, label %417, label %419

417:                                              ; preds = %412
  %418 = load double, ptr %46, align 8, !tbaa !11
  br label %422

419:                                              ; preds = %412
  %420 = load double, ptr %46, align 8, !tbaa !11
  %421 = fneg double %420
  br label %422

422:                                              ; preds = %419, %417
  %423 = phi double [ %418, %417 ], [ %421, %419 ]
  %424 = fadd double %414, %423
  %425 = load double, ptr %47, align 8, !tbaa !11
  %426 = fcmp oge double %425, 0.000000e+00
  br i1 %426, label %427, label %429

427:                                              ; preds = %422
  %428 = load double, ptr %47, align 8, !tbaa !11
  br label %432

429:                                              ; preds = %422
  %430 = load double, ptr %47, align 8, !tbaa !11
  %431 = fneg double %430
  br label %432

432:                                              ; preds = %429, %427
  %433 = phi double [ %428, %427 ], [ %431, %429 ]
  %434 = fadd double %424, %433
  %435 = load ptr, ptr %27, align 8, !tbaa !5
  %436 = load i32, ptr %40, align 4, !tbaa !9
  %437 = sext i32 %436 to i64
  %438 = getelementptr inbounds double, ptr %435, i64 %437
  store double %434, ptr %438, align 8, !tbaa !11
  br label %439

439:                                              ; preds = %432
  %440 = load i32, ptr %40, align 4, !tbaa !9
  %441 = add nsw i32 %440, 1
  store i32 %441, ptr %40, align 4, !tbaa !9
  br label %320, !llvm.loop !15

442:                                              ; preds = %320
  %443 = load ptr, ptr %21, align 8, !tbaa !5
  %444 = load ptr, ptr %15, align 8, !tbaa !5
  %445 = load i32, ptr %444, align 4, !tbaa !9
  %446 = load i32, ptr %41, align 4, !tbaa !9
  %447 = load i32, ptr %29, align 4, !tbaa !9
  %448 = mul nsw i32 %446, %447
  %449 = add nsw i32 %445, %448
  %450 = sext i32 %449 to i64
  %451 = getelementptr inbounds double, ptr %443, i64 %450
  %452 = load double, ptr %451, align 8, !tbaa !11
  store double %452, ptr %44, align 8, !tbaa !11
  %453 = load ptr, ptr %18, align 8, !tbaa !5
  %454 = load ptr, ptr %15, align 8, !tbaa !5
  %455 = load i32, ptr %454, align 4, !tbaa !9
  %456 = sub nsw i32 %455, 1
  %457 = sext i32 %456 to i64
  %458 = getelementptr inbounds double, ptr %453, i64 %457
  %459 = load double, ptr %458, align 8, !tbaa !11
  %460 = load ptr, ptr %23, align 8, !tbaa !5
  %461 = load ptr, ptr %15, align 8, !tbaa !5
  %462 = load i32, ptr %461, align 4, !tbaa !9
  %463 = sub nsw i32 %462, 1
  %464 = load i32, ptr %41, align 4, !tbaa !9
  %465 = load i32, ptr %31, align 4, !tbaa !9
  %466 = mul nsw i32 %464, %465
  %467 = add nsw i32 %463, %466
  %468 = sext i32 %467 to i64
  %469 = getelementptr inbounds double, ptr %460, i64 %468
  %470 = load double, ptr %469, align 8, !tbaa !11
  %471 = fmul double %459, %470
  store double %471, ptr %45, align 8, !tbaa !11
  %472 = load ptr, ptr %17, align 8, !tbaa !5
  %473 = load ptr, ptr %15, align 8, !tbaa !5
  %474 = load i32, ptr %473, align 4, !tbaa !9
  %475 = sext i32 %474 to i64
  %476 = getelementptr inbounds double, ptr %472, i64 %475
  %477 = load double, ptr %476, align 8, !tbaa !11
  %478 = load ptr, ptr %23, align 8, !tbaa !5
  %479 = load ptr, ptr %15, align 8, !tbaa !5
  %480 = load i32, ptr %479, align 4, !tbaa !9
  %481 = load i32, ptr %41, align 4, !tbaa !9
  %482 = load i32, ptr %31, align 4, !tbaa !9
  %483 = mul nsw i32 %481, %482
  %484 = add nsw i32 %480, %483
  %485 = sext i32 %484 to i64
  %486 = getelementptr inbounds double, ptr %478, i64 %485
  %487 = load double, ptr %486, align 8, !tbaa !11
  %488 = fmul double %477, %487
  store double %488, ptr %46, align 8, !tbaa !11
  %489 = load double, ptr %44, align 8, !tbaa !11
  %490 = load double, ptr %45, align 8, !tbaa !11
  %491 = fsub double %489, %490
  %492 = load double, ptr %46, align 8, !tbaa !11
  %493 = fsub double %491, %492
  %494 = load ptr, ptr %27, align 8, !tbaa !5
  %495 = load ptr, ptr %15, align 8, !tbaa !5
  %496 = load i32, ptr %495, align 4, !tbaa !9
  %497 = load ptr, ptr %15, align 8, !tbaa !5
  %498 = load i32, ptr %497, align 4, !tbaa !9
  %499 = add nsw i32 %496, %498
  %500 = sext i32 %499 to i64
  %501 = getelementptr inbounds double, ptr %494, i64 %500
  store double %493, ptr %501, align 8, !tbaa !11
  %502 = load double, ptr %44, align 8, !tbaa !11
  %503 = fcmp oge double %502, 0.000000e+00
  br i1 %503, label %504, label %506

504:                                              ; preds = %442
  %505 = load double, ptr %44, align 8, !tbaa !11
  br label %509

506:                                              ; preds = %442
  %507 = load double, ptr %44, align 8, !tbaa !11
  %508 = fneg double %507
  br label %509

509:                                              ; preds = %506, %504
  %510 = phi double [ %505, %504 ], [ %508, %506 ]
  %511 = load double, ptr %45, align 8, !tbaa !11
  %512 = fcmp oge double %511, 0.000000e+00
  br i1 %512, label %513, label %515

513:                                              ; preds = %509
  %514 = load double, ptr %45, align 8, !tbaa !11
  br label %518

515:                                              ; preds = %509
  %516 = load double, ptr %45, align 8, !tbaa !11
  %517 = fneg double %516
  br label %518

518:                                              ; preds = %515, %513
  %519 = phi double [ %514, %513 ], [ %517, %515 ]
  %520 = fadd double %510, %519
  %521 = load double, ptr %46, align 8, !tbaa !11
  %522 = fcmp oge double %521, 0.000000e+00
  br i1 %522, label %523, label %525

523:                                              ; preds = %518
  %524 = load double, ptr %46, align 8, !tbaa !11
  br label %528

525:                                              ; preds = %518
  %526 = load double, ptr %46, align 8, !tbaa !11
  %527 = fneg double %526
  br label %528

528:                                              ; preds = %525, %523
  %529 = phi double [ %524, %523 ], [ %527, %525 ]
  %530 = fadd double %520, %529
  %531 = load ptr, ptr %27, align 8, !tbaa !5
  %532 = load ptr, ptr %15, align 8, !tbaa !5
  %533 = load i32, ptr %532, align 4, !tbaa !9
  %534 = sext i32 %533 to i64
  %535 = getelementptr inbounds double, ptr %531, i64 %534
  store double %530, ptr %535, align 8, !tbaa !11
  br label %536

536:                                              ; preds = %528, %237
  store double 0.000000e+00, ptr %42, align 8, !tbaa !11
  %537 = load ptr, ptr %15, align 8, !tbaa !5
  %538 = load i32, ptr %537, align 4, !tbaa !9
  store i32 %538, ptr %34, align 4, !tbaa !9
  store i32 1, ptr %40, align 4, !tbaa !9
  br label %539

539:                                              ; preds = %624, %536
  %540 = load i32, ptr %40, align 4, !tbaa !9
  %541 = load i32, ptr %34, align 4, !tbaa !9
  %542 = icmp sle i32 %540, %541
  br i1 %542, label %543, label %627

543:                                              ; preds = %539
  %544 = load ptr, ptr %27, align 8, !tbaa !5
  %545 = load i32, ptr %40, align 4, !tbaa !9
  %546 = sext i32 %545 to i64
  %547 = getelementptr inbounds double, ptr %544, i64 %546
  %548 = load double, ptr %547, align 8, !tbaa !11
  %549 = load double, ptr %39, align 8, !tbaa !11
  %550 = fcmp ogt double %548, %549
  br i1 %550, label %551, label %585

551:                                              ; preds = %543
  %552 = load double, ptr %42, align 8, !tbaa !11
  store double %552, ptr %36, align 8, !tbaa !11
  %553 = load ptr, ptr %27, align 8, !tbaa !5
  %554 = load ptr, ptr %15, align 8, !tbaa !5
  %555 = load i32, ptr %554, align 4, !tbaa !9
  %556 = load i32, ptr %40, align 4, !tbaa !9
  %557 = add nsw i32 %555, %556
  %558 = sext i32 %557 to i64
  %559 = getelementptr inbounds double, ptr %553, i64 %558
  %560 = load double, ptr %559, align 8, !tbaa !11
  store double %560, ptr %35, align 8, !tbaa !11
  %561 = load double, ptr %35, align 8, !tbaa !11
  %562 = fcmp oge double %561, 0.000000e+00
  br i1 %562, label %563, label %565

563:                                              ; preds = %551
  %564 = load double, ptr %35, align 8, !tbaa !11
  br label %568

565:                                              ; preds = %551
  %566 = load double, ptr %35, align 8, !tbaa !11
  %567 = fneg double %566
  br label %568

568:                                              ; preds = %565, %563
  %569 = phi double [ %564, %563 ], [ %567, %565 ]
  %570 = load ptr, ptr %27, align 8, !tbaa !5
  %571 = load i32, ptr %40, align 4, !tbaa !9
  %572 = sext i32 %571 to i64
  %573 = getelementptr inbounds double, ptr %570, i64 %572
  %574 = load double, ptr %573, align 8, !tbaa !11
  %575 = fdiv double %569, %574
  store double %575, ptr %37, align 8, !tbaa !11
  %576 = load double, ptr %36, align 8, !tbaa !11
  %577 = load double, ptr %37, align 8, !tbaa !11
  %578 = fcmp oge double %576, %577
  br i1 %578, label %579, label %581

579:                                              ; preds = %568
  %580 = load double, ptr %36, align 8, !tbaa !11
  br label %583

581:                                              ; preds = %568
  %582 = load double, ptr %37, align 8, !tbaa !11
  br label %583

583:                                              ; preds = %581, %579
  %584 = phi double [ %580, %579 ], [ %582, %581 ]
  store double %584, ptr %42, align 8, !tbaa !11
  br label %623

585:                                              ; preds = %543
  %586 = load double, ptr %42, align 8, !tbaa !11
  store double %586, ptr %36, align 8, !tbaa !11
  %587 = load ptr, ptr %27, align 8, !tbaa !5
  %588 = load ptr, ptr %15, align 8, !tbaa !5
  %589 = load i32, ptr %588, align 4, !tbaa !9
  %590 = load i32, ptr %40, align 4, !tbaa !9
  %591 = add nsw i32 %589, %590
  %592 = sext i32 %591 to i64
  %593 = getelementptr inbounds double, ptr %587, i64 %592
  %594 = load double, ptr %593, align 8, !tbaa !11
  store double %594, ptr %35, align 8, !tbaa !11
  %595 = load double, ptr %35, align 8, !tbaa !11
  %596 = fcmp oge double %595, 0.000000e+00
  br i1 %596, label %597, label %599

597:                                              ; preds = %585
  %598 = load double, ptr %35, align 8, !tbaa !11
  br label %602

599:                                              ; preds = %585
  %600 = load double, ptr %35, align 8, !tbaa !11
  %601 = fneg double %600
  br label %602

602:                                              ; preds = %599, %597
  %603 = phi double [ %598, %597 ], [ %601, %599 ]
  %604 = load double, ptr %38, align 8, !tbaa !11
  %605 = fadd double %603, %604
  %606 = load ptr, ptr %27, align 8, !tbaa !5
  %607 = load i32, ptr %40, align 4, !tbaa !9
  %608 = sext i32 %607 to i64
  %609 = getelementptr inbounds double, ptr %606, i64 %608
  %610 = load double, ptr %609, align 8, !tbaa !11
  %611 = load double, ptr %38, align 8, !tbaa !11
  %612 = fadd double %610, %611
  %613 = fdiv double %605, %612
  store double %613, ptr %37, align 8, !tbaa !11
  %614 = load double, ptr %36, align 8, !tbaa !11
  %615 = load double, ptr %37, align 8, !tbaa !11
  %616 = fcmp oge double %614, %615
  br i1 %616, label %617, label %619

617:                                              ; preds = %602
  %618 = load double, ptr %36, align 8, !tbaa !11
  br label %621

619:                                              ; preds = %602
  %620 = load double, ptr %37, align 8, !tbaa !11
  br label %621

621:                                              ; preds = %619, %617
  %622 = phi double [ %618, %617 ], [ %620, %619 ]
  store double %622, ptr %42, align 8, !tbaa !11
  br label %623

623:                                              ; preds = %621, %583
  br label %624

624:                                              ; preds = %623
  %625 = load i32, ptr %40, align 4, !tbaa !9
  %626 = add nsw i32 %625, 1
  store i32 %626, ptr %40, align 4, !tbaa !9
  br label %539, !llvm.loop !16

627:                                              ; preds = %539
  %628 = load double, ptr %42, align 8, !tbaa !11
  %629 = load ptr, ptr %26, align 8, !tbaa !5
  %630 = load i32, ptr %41, align 4, !tbaa !9
  %631 = sext i32 %630 to i64
  %632 = getelementptr inbounds double, ptr %629, i64 %631
  store double %628, ptr %632, align 8, !tbaa !11
  %633 = load ptr, ptr %26, align 8, !tbaa !5
  %634 = load i32, ptr %41, align 4, !tbaa !9
  %635 = sext i32 %634 to i64
  %636 = getelementptr inbounds double, ptr %633, i64 %635
  %637 = load double, ptr %636, align 8, !tbaa !11
  %638 = load double, ptr %52, align 8, !tbaa !11
  %639 = fcmp ogt double %637, %638
  br i1 %639, label %640, label %687

640:                                              ; preds = %627
  %641 = load ptr, ptr %26, align 8, !tbaa !5
  %642 = load i32, ptr %41, align 4, !tbaa !9
  %643 = sext i32 %642 to i64
  %644 = getelementptr inbounds double, ptr %641, i64 %643
  %645 = load double, ptr %644, align 8, !tbaa !11
  %646 = fmul double %645, 2.000000e+00
  %647 = load double, ptr %51, align 8, !tbaa !11
  %648 = fcmp ole double %646, %647
  br i1 %648, label %649, label %687

649:                                              ; preds = %640
  %650 = load i32, ptr %43, align 4, !tbaa !9
  %651 = icmp sle i32 %650, 5
  br i1 %651, label %652, label %687

652:                                              ; preds = %649
  %653 = load ptr, ptr %15, align 8, !tbaa !5
  %654 = load ptr, ptr %19, align 8, !tbaa !5
  %655 = getelementptr inbounds double, ptr %654, i64 1
  %656 = load ptr, ptr %20, align 8, !tbaa !5
  %657 = getelementptr inbounds double, ptr %656, i64 1
  %658 = load ptr, ptr %27, align 8, !tbaa !5
  %659 = load ptr, ptr %15, align 8, !tbaa !5
  %660 = load i32, ptr %659, align 4, !tbaa !9
  %661 = add nsw i32 %660, 1
  %662 = sext i32 %661 to i64
  %663 = getelementptr inbounds double, ptr %658, i64 %662
  %664 = load ptr, ptr %15, align 8, !tbaa !5
  %665 = load ptr, ptr %28, align 8, !tbaa !5
  call void @dpttrs_(ptr noundef %653, ptr noundef @c__1, ptr noundef %655, ptr noundef %657, ptr noundef %663, ptr noundef %664, ptr noundef %665)
  %666 = load ptr, ptr %15, align 8, !tbaa !5
  %667 = load ptr, ptr %27, align 8, !tbaa !5
  %668 = load ptr, ptr %15, align 8, !tbaa !5
  %669 = load i32, ptr %668, align 4, !tbaa !9
  %670 = add nsw i32 %669, 1
  %671 = sext i32 %670 to i64
  %672 = getelementptr inbounds double, ptr %667, i64 %671
  %673 = load ptr, ptr %23, align 8, !tbaa !5
  %674 = load i32, ptr %41, align 4, !tbaa !9
  %675 = load i32, ptr %31, align 4, !tbaa !9
  %676 = mul nsw i32 %674, %675
  %677 = add nsw i32 %676, 1
  %678 = sext i32 %677 to i64
  %679 = getelementptr inbounds double, ptr %673, i64 %678
  call void @daxpy_(ptr noundef %666, ptr noundef @c_b11, ptr noundef %672, ptr noundef @c__1, ptr noundef %679, ptr noundef @c__1)
  %680 = load ptr, ptr %26, align 8, !tbaa !5
  %681 = load i32, ptr %41, align 4, !tbaa !9
  %682 = sext i32 %681 to i64
  %683 = getelementptr inbounds double, ptr %680, i64 %682
  %684 = load double, ptr %683, align 8, !tbaa !11
  store double %684, ptr %51, align 8, !tbaa !11
  %685 = load i32, ptr %43, align 4, !tbaa !9
  %686 = add nsw i32 %685, 1
  store i32 %686, ptr %43, align 4, !tbaa !9
  br label %187

687:                                              ; preds = %649, %640, %627
  %688 = load ptr, ptr %15, align 8, !tbaa !5
  %689 = load i32, ptr %688, align 4, !tbaa !9
  store i32 %689, ptr %34, align 4, !tbaa !9
  store i32 1, ptr %40, align 4, !tbaa !9
  br label %690

690:                                              ; preds = %769, %687
  %691 = load i32, ptr %40, align 4, !tbaa !9
  %692 = load i32, ptr %34, align 4, !tbaa !9
  %693 = icmp sle i32 %691, %692
  br i1 %693, label %694, label %772

694:                                              ; preds = %690
  %695 = load ptr, ptr %27, align 8, !tbaa !5
  %696 = load i32, ptr %40, align 4, !tbaa !9
  %697 = sext i32 %696 to i64
  %698 = getelementptr inbounds double, ptr %695, i64 %697
  %699 = load double, ptr %698, align 8, !tbaa !11
  %700 = load double, ptr %39, align 8, !tbaa !11
  %701 = fcmp ogt double %699, %700
  br i1 %701, label %702, label %734

702:                                              ; preds = %694
  %703 = load ptr, ptr %27, align 8, !tbaa !5
  %704 = load ptr, ptr %15, align 8, !tbaa !5
  %705 = load i32, ptr %704, align 4, !tbaa !9
  %706 = load i32, ptr %40, align 4, !tbaa !9
  %707 = add nsw i32 %705, %706
  %708 = sext i32 %707 to i64
  %709 = getelementptr inbounds double, ptr %703, i64 %708
  %710 = load double, ptr %709, align 8, !tbaa !11
  store double %710, ptr %35, align 8, !tbaa !11
  %711 = load double, ptr %35, align 8, !tbaa !11
  %712 = fcmp oge double %711, 0.000000e+00
  br i1 %712, label %713, label %715

713:                                              ; preds = %702
  %714 = load double, ptr %35, align 8, !tbaa !11
  br label %718

715:                                              ; preds = %702
  %716 = load double, ptr %35, align 8, !tbaa !11
  %717 = fneg double %716
  br label %718

718:                                              ; preds = %715, %713
  %719 = phi double [ %714, %713 ], [ %717, %715 ]
  %720 = load i32, ptr %49, align 4, !tbaa !9
  %721 = sitofp i32 %720 to double
  %722 = load double, ptr %52, align 8, !tbaa !11
  %723 = fmul double %721, %722
  %724 = load ptr, ptr %27, align 8, !tbaa !5
  %725 = load i32, ptr %40, align 4, !tbaa !9
  %726 = sext i32 %725 to i64
  %727 = getelementptr inbounds double, ptr %724, i64 %726
  %728 = load double, ptr %727, align 8, !tbaa !11
  %729 = call double @llvm.fmuladd.f64(double %723, double %728, double %719)
  %730 = load ptr, ptr %27, align 8, !tbaa !5
  %731 = load i32, ptr %40, align 4, !tbaa !9
  %732 = sext i32 %731 to i64
  %733 = getelementptr inbounds double, ptr %730, i64 %732
  store double %729, ptr %733, align 8, !tbaa !11
  br label %768

734:                                              ; preds = %694
  %735 = load ptr, ptr %27, align 8, !tbaa !5
  %736 = load ptr, ptr %15, align 8, !tbaa !5
  %737 = load i32, ptr %736, align 4, !tbaa !9
  %738 = load i32, ptr %40, align 4, !tbaa !9
  %739 = add nsw i32 %737, %738
  %740 = sext i32 %739 to i64
  %741 = getelementptr inbounds double, ptr %735, i64 %740
  %742 = load double, ptr %741, align 8, !tbaa !11
  store double %742, ptr %35, align 8, !tbaa !11
  %743 = load double, ptr %35, align 8, !tbaa !11
  %744 = fcmp oge double %743, 0.000000e+00
  br i1 %744, label %745, label %747

745:                                              ; preds = %734
  %746 = load double, ptr %35, align 8, !tbaa !11
  br label %750

747:                                              ; preds = %734
  %748 = load double, ptr %35, align 8, !tbaa !11
  %749 = fneg double %748
  br label %750

750:                                              ; preds = %747, %745
  %751 = phi double [ %746, %745 ], [ %749, %747 ]
  %752 = load i32, ptr %49, align 4, !tbaa !9
  %753 = sitofp i32 %752 to double
  %754 = load double, ptr %52, align 8, !tbaa !11
  %755 = fmul double %753, %754
  %756 = load ptr, ptr %27, align 8, !tbaa !5
  %757 = load i32, ptr %40, align 4, !tbaa !9
  %758 = sext i32 %757 to i64
  %759 = getelementptr inbounds double, ptr %756, i64 %758
  %760 = load double, ptr %759, align 8, !tbaa !11
  %761 = call double @llvm.fmuladd.f64(double %755, double %760, double %751)
  %762 = load double, ptr %38, align 8, !tbaa !11
  %763 = fadd double %761, %762
  %764 = load ptr, ptr %27, align 8, !tbaa !5
  %765 = load i32, ptr %40, align 4, !tbaa !9
  %766 = sext i32 %765 to i64
  %767 = getelementptr inbounds double, ptr %764, i64 %766
  store double %763, ptr %767, align 8, !tbaa !11
  br label %768

768:                                              ; preds = %750, %718
  br label %769

769:                                              ; preds = %768
  %770 = load i32, ptr %40, align 4, !tbaa !9
  %771 = add nsw i32 %770, 1
  store i32 %771, ptr %40, align 4, !tbaa !9
  br label %690, !llvm.loop !17

772:                                              ; preds = %690
  %773 = load ptr, ptr %15, align 8, !tbaa !5
  %774 = load ptr, ptr %27, align 8, !tbaa !5
  %775 = getelementptr inbounds double, ptr %774, i64 1
  %776 = call i32 @idamax_(ptr noundef %773, ptr noundef %775, ptr noundef @c__1)
  store i32 %776, ptr %48, align 4, !tbaa !9
  %777 = load ptr, ptr %27, align 8, !tbaa !5
  %778 = load i32, ptr %48, align 4, !tbaa !9
  %779 = sext i32 %778 to i64
  %780 = getelementptr inbounds double, ptr %777, i64 %779
  %781 = load double, ptr %780, align 8, !tbaa !11
  %782 = load ptr, ptr %25, align 8, !tbaa !5
  %783 = load i32, ptr %41, align 4, !tbaa !9
  %784 = sext i32 %783 to i64
  %785 = getelementptr inbounds double, ptr %782, i64 %784
  store double %781, ptr %785, align 8, !tbaa !11
  %786 = load ptr, ptr %27, align 8, !tbaa !5
  %787 = getelementptr inbounds double, ptr %786, i64 1
  store double 1.000000e+00, ptr %787, align 8, !tbaa !11
  %788 = load ptr, ptr %15, align 8, !tbaa !5
  %789 = load i32, ptr %788, align 4, !tbaa !9
  store i32 %789, ptr %34, align 4, !tbaa !9
  store i32 2, ptr %40, align 4, !tbaa !9
  br label %790

790:                                              ; preds = %821, %772
  %791 = load i32, ptr %40, align 4, !tbaa !9
  %792 = load i32, ptr %34, align 4, !tbaa !9
  %793 = icmp sle i32 %791, %792
  br i1 %793, label %794, label %824

794:                                              ; preds = %790
  %795 = load ptr, ptr %27, align 8, !tbaa !5
  %796 = load i32, ptr %40, align 4, !tbaa !9
  %797 = sub nsw i32 %796, 1
  %798 = sext i32 %797 to i64
  %799 = getelementptr inbounds double, ptr %795, i64 %798
  %800 = load double, ptr %799, align 8, !tbaa !11
  %801 = load ptr, ptr %20, align 8, !tbaa !5
  %802 = load i32, ptr %40, align 4, !tbaa !9
  %803 = sub nsw i32 %802, 1
  %804 = sext i32 %803 to i64
  %805 = getelementptr inbounds double, ptr %801, i64 %804
  %806 = load double, ptr %805, align 8, !tbaa !11
  store double %806, ptr %35, align 8, !tbaa !11
  %807 = load double, ptr %35, align 8, !tbaa !11
  %808 = fcmp oge double %807, 0.000000e+00
  br i1 %808, label %809, label %811

809:                                              ; preds = %794
  %810 = load double, ptr %35, align 8, !tbaa !11
  br label %814

811:                                              ; preds = %794
  %812 = load double, ptr %35, align 8, !tbaa !11
  %813 = fneg double %812
  br label %814

814:                                              ; preds = %811, %809
  %815 = phi double [ %810, %809 ], [ %813, %811 ]
  %816 = call double @llvm.fmuladd.f64(double %800, double %815, double 1.000000e+00)
  %817 = load ptr, ptr %27, align 8, !tbaa !5
  %818 = load i32, ptr %40, align 4, !tbaa !9
  %819 = sext i32 %818 to i64
  %820 = getelementptr inbounds double, ptr %817, i64 %819
  store double %816, ptr %820, align 8, !tbaa !11
  br label %821

821:                                              ; preds = %814
  %822 = load i32, ptr %40, align 4, !tbaa !9
  %823 = add nsw i32 %822, 1
  store i32 %823, ptr %40, align 4, !tbaa !9
  br label %790, !llvm.loop !18

824:                                              ; preds = %790
  %825 = load ptr, ptr %19, align 8, !tbaa !5
  %826 = load ptr, ptr %15, align 8, !tbaa !5
  %827 = load i32, ptr %826, align 4, !tbaa !9
  %828 = sext i32 %827 to i64
  %829 = getelementptr inbounds double, ptr %825, i64 %828
  %830 = load double, ptr %829, align 8, !tbaa !11
  %831 = load ptr, ptr %27, align 8, !tbaa !5
  %832 = load ptr, ptr %15, align 8, !tbaa !5
  %833 = load i32, ptr %832, align 4, !tbaa !9
  %834 = sext i32 %833 to i64
  %835 = getelementptr inbounds double, ptr %831, i64 %834
  %836 = load double, ptr %835, align 8, !tbaa !11
  %837 = fdiv double %836, %830
  store double %837, ptr %835, align 8, !tbaa !11
  %838 = load ptr, ptr %15, align 8, !tbaa !5
  %839 = load i32, ptr %838, align 4, !tbaa !9
  %840 = sub nsw i32 %839, 1
  store i32 %840, ptr %40, align 4, !tbaa !9
  br label %841

841:                                              ; preds = %881, %824
  %842 = load i32, ptr %40, align 4, !tbaa !9
  %843 = icmp sge i32 %842, 1
  br i1 %843, label %844, label %884

844:                                              ; preds = %841
  %845 = load ptr, ptr %27, align 8, !tbaa !5
  %846 = load i32, ptr %40, align 4, !tbaa !9
  %847 = sext i32 %846 to i64
  %848 = getelementptr inbounds double, ptr %845, i64 %847
  %849 = load double, ptr %848, align 8, !tbaa !11
  %850 = load ptr, ptr %19, align 8, !tbaa !5
  %851 = load i32, ptr %40, align 4, !tbaa !9
  %852 = sext i32 %851 to i64
  %853 = getelementptr inbounds double, ptr %850, i64 %852
  %854 = load double, ptr %853, align 8, !tbaa !11
  %855 = fdiv double %849, %854
  %856 = load ptr, ptr %27, align 8, !tbaa !5
  %857 = load i32, ptr %40, align 4, !tbaa !9
  %858 = add nsw i32 %857, 1
  %859 = sext i32 %858 to i64
  %860 = getelementptr inbounds double, ptr %856, i64 %859
  %861 = load double, ptr %860, align 8, !tbaa !11
  %862 = load ptr, ptr %20, align 8, !tbaa !5
  %863 = load i32, ptr %40, align 4, !tbaa !9
  %864 = sext i32 %863 to i64
  %865 = getelementptr inbounds double, ptr %862, i64 %864
  %866 = load double, ptr %865, align 8, !tbaa !11
  store double %866, ptr %35, align 8, !tbaa !11
  %867 = load double, ptr %35, align 8, !tbaa !11
  %868 = fcmp oge double %867, 0.000000e+00
  br i1 %868, label %869, label %871

869:                                              ; preds = %844
  %870 = load double, ptr %35, align 8, !tbaa !11
  br label %874

871:                                              ; preds = %844
  %872 = load double, ptr %35, align 8, !tbaa !11
  %873 = fneg double %872
  br label %874

874:                                              ; preds = %871, %869
  %875 = phi double [ %870, %869 ], [ %873, %871 ]
  %876 = call double @llvm.fmuladd.f64(double %861, double %875, double %855)
  %877 = load ptr, ptr %27, align 8, !tbaa !5
  %878 = load i32, ptr %40, align 4, !tbaa !9
  %879 = sext i32 %878 to i64
  %880 = getelementptr inbounds double, ptr %877, i64 %879
  store double %876, ptr %880, align 8, !tbaa !11
  br label %881

881:                                              ; preds = %874
  %882 = load i32, ptr %40, align 4, !tbaa !9
  %883 = add nsw i32 %882, -1
  store i32 %883, ptr %40, align 4, !tbaa !9
  br label %841, !llvm.loop !19

884:                                              ; preds = %841
  %885 = load ptr, ptr %15, align 8, !tbaa !5
  %886 = load ptr, ptr %27, align 8, !tbaa !5
  %887 = getelementptr inbounds double, ptr %886, i64 1
  %888 = call i32 @idamax_(ptr noundef %885, ptr noundef %887, ptr noundef @c__1)
  store i32 %888, ptr %48, align 4, !tbaa !9
  %889 = load ptr, ptr %27, align 8, !tbaa !5
  %890 = load i32, ptr %48, align 4, !tbaa !9
  %891 = sext i32 %890 to i64
  %892 = getelementptr inbounds double, ptr %889, i64 %891
  %893 = load double, ptr %892, align 8, !tbaa !11
  store double %893, ptr %35, align 8, !tbaa !11
  %894 = load double, ptr %35, align 8, !tbaa !11
  %895 = fcmp oge double %894, 0.000000e+00
  br i1 %895, label %896, label %898

896:                                              ; preds = %884
  %897 = load double, ptr %35, align 8, !tbaa !11
  br label %901

898:                                              ; preds = %884
  %899 = load double, ptr %35, align 8, !tbaa !11
  %900 = fneg double %899
  br label %901

901:                                              ; preds = %898, %896
  %902 = phi double [ %897, %896 ], [ %900, %898 ]
  %903 = load ptr, ptr %25, align 8, !tbaa !5
  %904 = load i32, ptr %41, align 4, !tbaa !9
  %905 = sext i32 %904 to i64
  %906 = getelementptr inbounds double, ptr %903, i64 %905
  %907 = load double, ptr %906, align 8, !tbaa !11
  %908 = fmul double %907, %902
  store double %908, ptr %906, align 8, !tbaa !11
  store double 0.000000e+00, ptr %51, align 8, !tbaa !11
  %909 = load ptr, ptr %15, align 8, !tbaa !5
  %910 = load i32, ptr %909, align 4, !tbaa !9
  store i32 %910, ptr %34, align 4, !tbaa !9
  store i32 1, ptr %40, align 4, !tbaa !9
  br label %911

911:                                              ; preds = %944, %901
  %912 = load i32, ptr %40, align 4, !tbaa !9
  %913 = load i32, ptr %34, align 4, !tbaa !9
  %914 = icmp sle i32 %912, %913
  br i1 %914, label %915, label %947

915:                                              ; preds = %911
  %916 = load double, ptr %51, align 8, !tbaa !11
  store double %916, ptr %36, align 8, !tbaa !11
  %917 = load ptr, ptr %23, align 8, !tbaa !5
  %918 = load i32, ptr %40, align 4, !tbaa !9
  %919 = load i32, ptr %41, align 4, !tbaa !9
  %920 = load i32, ptr %31, align 4, !tbaa !9
  %921 = mul nsw i32 %919, %920
  %922 = add nsw i32 %918, %921
  %923 = sext i32 %922 to i64
  %924 = getelementptr inbounds double, ptr %917, i64 %923
  %925 = load double, ptr %924, align 8, !tbaa !11
  store double %925, ptr %35, align 8, !tbaa !11
  %926 = load double, ptr %35, align 8, !tbaa !11
  %927 = fcmp oge double %926, 0.000000e+00
  br i1 %927, label %928, label %930

928:                                              ; preds = %915
  %929 = load double, ptr %35, align 8, !tbaa !11
  br label %933

930:                                              ; preds = %915
  %931 = load double, ptr %35, align 8, !tbaa !11
  %932 = fneg double %931
  br label %933

933:                                              ; preds = %930, %928
  %934 = phi double [ %929, %928 ], [ %932, %930 ]
  store double %934, ptr %37, align 8, !tbaa !11
  %935 = load double, ptr %36, align 8, !tbaa !11
  %936 = load double, ptr %37, align 8, !tbaa !11
  %937 = fcmp oge double %935, %936
  br i1 %937, label %938, label %940

938:                                              ; preds = %933
  %939 = load double, ptr %36, align 8, !tbaa !11
  br label %942

940:                                              ; preds = %933
  %941 = load double, ptr %37, align 8, !tbaa !11
  br label %942

942:                                              ; preds = %940, %938
  %943 = phi double [ %939, %938 ], [ %941, %940 ]
  store double %943, ptr %51, align 8, !tbaa !11
  br label %944

944:                                              ; preds = %942
  %945 = load i32, ptr %40, align 4, !tbaa !9
  %946 = add nsw i32 %945, 1
  store i32 %946, ptr %40, align 4, !tbaa !9
  br label %911, !llvm.loop !20

947:                                              ; preds = %911
  %948 = load double, ptr %51, align 8, !tbaa !11
  %949 = fcmp une double %948, 0.000000e+00
  br i1 %949, label %950, label %958

950:                                              ; preds = %947
  %951 = load double, ptr %51, align 8, !tbaa !11
  %952 = load ptr, ptr %25, align 8, !tbaa !5
  %953 = load i32, ptr %41, align 4, !tbaa !9
  %954 = sext i32 %953 to i64
  %955 = getelementptr inbounds double, ptr %952, i64 %954
  %956 = load double, ptr %955, align 8, !tbaa !11
  %957 = fdiv double %956, %951
  store double %957, ptr %955, align 8, !tbaa !11
  br label %958

958:                                              ; preds = %950, %947
  br label %959

959:                                              ; preds = %958
  %960 = load i32, ptr %41, align 4, !tbaa !9
  %961 = add nsw i32 %960, 1
  store i32 %961, ptr %41, align 4, !tbaa !9
  br label %182, !llvm.loop !21

962:                                              ; preds = %182
  store i32 1, ptr %53, align 4
  br label %963

963:                                              ; preds = %962, %169, %137
  call void @llvm.lifetime.end.p0(i64 8, ptr %52) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %51) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %50) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %49) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %48) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %47) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %46) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %45) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %44) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %43) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %42) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %41) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %40) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %39) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %38) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %37) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %36) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %35) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %34) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %33) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %32) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %31) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %30) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %29) #4
  ret void
}

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

declare i32 @xerbla_(ptr noundef, ptr noundef, i32 noundef) #2

declare double @dlamch_(ptr noundef) #2

declare void @dpttrs_(ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef) #2

declare void @daxpy_(ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef) #2

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

declare i32 @idamax_(ptr noundef, ptr noundef, ptr noundef) #2

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

attributes #0 = { 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 #1 = { nocallback nofree nosync nounwind willreturn memory(argmem: readwrite) }
attributes #2 = { "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }
attributes #3 = { nocallback nofree nosync nounwind speculatable willreturn memory(none) }
attributes #4 = { 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/C++ TBAA"}
!9 = !{!10, !10, i64 0}
!10 = !{!"int", !7, i64 0}
!11 = !{!12, !12, i64 0}
!12 = !{!"double", !7, i64 0}
!13 = distinct !{!13, !14}
!14 = !{!"llvm.loop.mustprogress"}
!15 = distinct !{!15, !14}
!16 = distinct !{!16, !14}
!17 = distinct !{!17, !14}
!18 = distinct !{!18, !14}
!19 = distinct !{!19, !14}
!20 = distinct !{!20, !14}
!21 = distinct !{!21, !14}


; 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"

@.str = external hidden unnamed_addr constant [7 x i8], align 1
@.str.1 = external hidden unnamed_addr constant [8 x i8], align 1
@.str.2 = external hidden unnamed_addr constant [13 x i8], align 1
@c__1 = external hidden global i32, align 4
@c_b11 = external hidden global double, align 8

; Function Attrs: nounwind uwtable
define dso_local void @dptrfs_(ptr noundef %0, ptr nocapture noundef readonly %1, ptr nocapture noundef readonly %2, ptr nocapture noundef readonly %3, ptr noundef %4, ptr noundef %5, ptr nocapture noundef readonly %6, ptr nocapture noundef readonly %7, ptr noundef %8, ptr nocapture noundef readonly %9, ptr nocapture noundef %10, ptr nocapture noundef %11, ptr noundef %12, ptr noundef %13) local_unnamed_addr #0 {
  %15 = ptrtoint ptr %10 to i64
  %16 = ptrtoint ptr %11 to i64
  %17 = alloca i32, align 4
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %17) #5
  %18 = getelementptr inbounds i8, ptr %2, i64 -8
  %19 = getelementptr inbounds i8, ptr %3, i64 -8
  %20 = getelementptr inbounds i8, ptr %4, i64 -8
  %21 = getelementptr inbounds i8, ptr %5, i64 -8
  %22 = load i32, ptr %7, align 4, !tbaa !5
  %narrow = xor i32 %22, -1
  %23 = sext i32 %narrow to i64
  %24 = getelementptr inbounds double, ptr %6, i64 %23
  %25 = load i32, ptr %9, align 4, !tbaa !5
  %narrow349 = xor i32 %25, -1
  %26 = sext i32 %narrow349 to i64
  %27 = getelementptr inbounds double, ptr %8, i64 %26
  %28 = getelementptr inbounds i8, ptr %10, i64 -8
  %29 = getelementptr inbounds i8, ptr %11, i64 -8
  %30 = getelementptr inbounds i8, ptr %12, i64 -8
  store i32 0, ptr %13, align 4, !tbaa !5
  %31 = load i32, ptr %0, align 4, !tbaa !5
  %32 = icmp slt i32 %31, 0
  br i1 %32, label %.thread, label %33

33:                                               ; preds = %14
  %34 = load i32, ptr %1, align 4, !tbaa !5
  %35 = icmp slt i32 %34, 0
  br i1 %35, label %.thread, label %36

36:                                               ; preds = %33
  %37 = load i32, ptr %7, align 4, !tbaa !5
  %spec.select = tail call i32 @llvm.umax.i32(i32 %31, i32 1)
  %38 = icmp slt i32 %37, %spec.select
  br i1 %38, label %.thread, label %39

39:                                               ; preds = %36
  %40 = load i32, ptr %9, align 4, !tbaa !5
  %41 = icmp slt i32 %40, %spec.select
  br i1 %41, label %.thread, label %43

.thread:                                          ; preds = %39, %36, %33, %14
  %.sink = phi i32 [ -1, %14 ], [ -2, %33 ], [ -8, %36 ], [ -10, %39 ]
  %.neg = phi i32 [ 1, %14 ], [ 2, %33 ], [ 8, %36 ], [ 10, %39 ]
  store i32 %.sink, ptr %13, align 4, !tbaa !5
  store i32 %.neg, ptr %17, align 4, !tbaa !5
  %42 = call i32 @xerbla_(ptr noundef nonnull @.str, ptr noundef nonnull %17, i32 noundef 6) #5
  br label %.loopexit

43:                                               ; preds = %39
  %44 = icmp eq i32 %31, 0
  %.not356401 = icmp eq i32 %34, 0
  br i1 %44, label %46, label %45

45:                                               ; preds = %43
  br i1 %.not356401, label %.loopexit, label %69

46:                                               ; preds = %43
  br i1 %.not356401, label %.loopexit, label %.lr.ph404.preheader

.lr.ph404.preheader:                              ; preds = %46
  %47 = add nuw i32 %34, 1
  %wide.trip.count439 = zext i32 %47 to i64
  %48 = zext nneg i32 %34 to i64
  %min.iters.check533 = icmp ult i32 %34, 4
  %49 = sub i64 %16, %15
  %diff.check = icmp ult i64 %49, 32
  %or.cond544 = or i1 %min.iters.check533, %diff.check
  br i1 %or.cond544, label %.lr.ph404.preheader545, label %vector.ph534

vector.ph534:                                     ; preds = %.lr.ph404.preheader
  %n.vec536 = and i64 %48, 2147483644
  %ind.end537 = or disjoint i64 %n.vec536, 1
  br label %vector.body539

vector.body539:                                   ; preds = %vector.body539, %vector.ph534
  %index540 = phi i64 [ 0, %vector.ph534 ], [ %index.next542, %vector.body539 ]
  %50 = getelementptr double, ptr %10, i64 %index540
  %51 = getelementptr inbounds i8, ptr %50, i64 16
  store <2 x double> zeroinitializer, ptr %50, align 8, !tbaa !9
  store <2 x double> zeroinitializer, ptr %51, align 8, !tbaa !9
  %52 = getelementptr double, ptr %11, i64 %index540
  %53 = getelementptr inbounds i8, ptr %52, i64 16
  store <2 x double> zeroinitializer, ptr %52, align 8, !tbaa !9
  store <2 x double> zeroinitializer, ptr %53, align 8, !tbaa !9
  %index.next542 = add nuw i64 %index540, 4
  %54 = icmp eq i64 %index.next542, %n.vec536
  br i1 %54, label %middle.block531, label %vector.body539, !llvm.loop !11

middle.block531:                                  ; preds = %vector.body539
  %cmp.n543 = icmp eq i64 %n.vec536, %48
  br i1 %cmp.n543, label %.loopexit, label %.lr.ph404.preheader545

.lr.ph404.preheader545:                           ; preds = %middle.block531, %.lr.ph404.preheader
  %indvars.iv436.ph = phi i64 [ 1, %.lr.ph404.preheader ], [ %ind.end537, %middle.block531 ]
  %55 = sub nsw i64 %wide.trip.count439, %indvars.iv436.ph
  %56 = zext nneg i32 %34 to i64
  %57 = sub nsw i64 %56, %indvars.iv436.ph
  %xtraiter555 = and i64 %55, 3
  %lcmp.mod556.not = icmp eq i64 %xtraiter555, 0
  br i1 %lcmp.mod556.not, label %.lr.ph404.prol.loopexit, label %.lr.ph404.prol

.lr.ph404.prol:                                   ; preds = %.lr.ph404.preheader545, %.lr.ph404.prol
  %indvars.iv436.prol = phi i64 [ %indvars.iv.next437.prol, %.lr.ph404.prol ], [ %indvars.iv436.ph, %.lr.ph404.preheader545 ]
  %prol.iter = phi i64 [ %prol.iter.next, %.lr.ph404.prol ], [ 0, %.lr.ph404.preheader545 ]
  %58 = getelementptr inbounds double, ptr %28, i64 %indvars.iv436.prol
  store double 0.000000e+00, ptr %58, align 8, !tbaa !9
  %59 = getelementptr inbounds double, ptr %29, i64 %indvars.iv436.prol
  store double 0.000000e+00, ptr %59, align 8, !tbaa !9
  %indvars.iv.next437.prol = add nuw nsw i64 %indvars.iv436.prol, 1
  %prol.iter.next = add i64 %prol.iter, 1
  %prol.iter.cmp.not = icmp eq i64 %prol.iter.next, %xtraiter555
  br i1 %prol.iter.cmp.not, label %.lr.ph404.prol.loopexit, label %.lr.ph404.prol, !llvm.loop !15

.lr.ph404.prol.loopexit:                          ; preds = %.lr.ph404.prol, %.lr.ph404.preheader545
  %indvars.iv436.unr = phi i64 [ %indvars.iv436.ph, %.lr.ph404.preheader545 ], [ %indvars.iv.next437.prol, %.lr.ph404.prol ]
  %60 = icmp ult i64 %57, 3
  br i1 %60, label %.loopexit, label %.lr.ph404

.lr.ph404:                                        ; preds = %.lr.ph404.prol.loopexit, %.lr.ph404
  %indvars.iv436 = phi i64 [ %indvars.iv.next437.3, %.lr.ph404 ], [ %indvars.iv436.unr, %.lr.ph404.prol.loopexit ]
  %61 = getelementptr inbounds double, ptr %28, i64 %indvars.iv436
  store double 0.000000e+00, ptr %61, align 8, !tbaa !9
  %62 = getelementptr inbounds double, ptr %29, i64 %indvars.iv436
  store double 0.000000e+00, ptr %62, align 8, !tbaa !9
  %63 = getelementptr double, ptr %10, i64 %indvars.iv436
  store double 0.000000e+00, ptr %63, align 8, !tbaa !9
  %64 = getelementptr double, ptr %11, i64 %indvars.iv436
  store double 0.000000e+00, ptr %64, align 8, !tbaa !9
  %indvars.iv.next437.1 = add nuw nsw i64 %indvars.iv436, 2
  %65 = getelementptr inbounds double, ptr %28, i64 %indvars.iv.next437.1
  store double 0.000000e+00, ptr %65, align 8, !tbaa !9
  %66 = getelementptr inbounds double, ptr %29, i64 %indvars.iv.next437.1
  store double 0.000000e+00, ptr %66, align 8, !tbaa !9
  %indvars.iv.next437.2 = add nuw nsw i64 %indvars.iv436, 3
  %67 = getelementptr inbounds double, ptr %28, i64 %indvars.iv.next437.2
  store double 0.000000e+00, ptr %67, align 8, !tbaa !9
  %68 = getelementptr inbounds double, ptr %29, i64 %indvars.iv.next437.2
  store double 0.000000e+00, ptr %68, align 8, !tbaa !9
  %indvars.iv.next437.3 = add nuw nsw i64 %indvars.iv436, 4
  %exitcond440.not.3 = icmp eq i64 %indvars.iv.next437.3, %wide.trip.count439
  br i1 %exitcond440.not.3, label %.loopexit, label %.lr.ph404, !llvm.loop !17

69:                                               ; preds = %45
  %70 = tail call double @dlamch_(ptr noundef nonnull @.str.1) #5
  %71 = tail call double @dlamch_(ptr noundef nonnull @.str.2) #5
  %72 = fmul double %71, 4.000000e+00
  %73 = fdiv double %72, %70
  %74 = load i32, ptr %1, align 4, !tbaa !5
  %.not350399 = icmp slt i32 %74, 1
  br i1 %.not350399, label %.loopexit, label %.preheader.lr.ph

.preheader.lr.ph:                                 ; preds = %69
  %invariant.gep = getelementptr i8, ptr %24, i64 8
  %invariant.gep370 = getelementptr i8, ptr %27, i64 8
  %75 = getelementptr inbounds i8, ptr %12, i64 8
  %76 = fmul double %70, 4.000000e+00
  %77 = sext i32 %22 to i64
  %78 = sext i32 %25 to i64
  %79 = add nuw i32 %74, 1
  %wide.trip.count434 = zext i32 %79 to i64
  %invariant.gep471 = getelementptr i8, ptr %5, i64 -16
  %scevgep = getelementptr i8, ptr %12, i64 8
  %scevgep481 = getelementptr i8, ptr %12, i64 -8
  %80 = add nsw i64 %77, %23
  %81 = shl nsw i64 %80, 3
  %82 = shl nsw i64 %77, 3
  %scevgep486 = getelementptr i8, ptr %3, i64 -8
  %83 = add nsw i64 %78, %26
  %84 = shl nsw i64 %83, 3
  %85 = shl nsw i64 %78, 3
  %scevgep490 = getelementptr i8, ptr %2, i64 8
  %scevgep491 = getelementptr i8, ptr %2, i64 -8
  %scevgep493 = getelementptr i8, ptr %12, i64 8
  %scevgep495 = getelementptr i8, ptr %12, i64 -8
  %86 = getelementptr i8, ptr %6, i64 %81
  %87 = getelementptr i8, ptr %86, i64 16
  %88 = getelementptr i8, ptr %6, i64 %81
  %89 = getelementptr i8, ptr %8, i64 %84
  %90 = getelementptr i8, ptr %89, i64 8
  br label %.preheader

.preheader:                                       ; preds = %.preheader.lr.ph, %._crit_edge397.thread
  %indvar = phi i64 [ 0, %.preheader.lr.ph ], [ %indvar.next, %._crit_edge397.thread ]
  %indvars.iv431 = phi i64 [ 1, %.preheader.lr.ph ], [ %indvars.iv.next432, %._crit_edge397.thread ]
  %91 = mul i64 %82, %indvar
  %scevgep483 = getelementptr i8, ptr %87, i64 %91
  %scevgep484 = getelementptr i8, ptr %88, i64 %91
  %92 = mul i64 %85, %indvar
  %scevgep488 = getelementptr i8, ptr %90, i64 %92
  %93 = getelementptr inbounds double, ptr %29, i64 %indvars.iv431
  %94 = mul nsw i64 %indvars.iv431, %77
  %gep = getelementptr double, ptr %invariant.gep, i64 %94
  %95 = mul nsw i64 %indvars.iv431, %78
  %96 = getelementptr double, ptr %27, i64 %95
  %97 = getelementptr i8, ptr %96, i64 8
  %98 = getelementptr i8, ptr %96, i64 16
  %gep371 = getelementptr double, ptr %invariant.gep370, i64 %95
  %invariant.gep453 = getelementptr double, ptr %24, i64 %94
  %invariant.gep455 = getelementptr double, ptr %27, i64 %95
  %invariant.gep457 = getelementptr double, ptr %27, i64 %95
  %invariant.gep459 = getelementptr double, ptr %27, i64 %95
  %99 = getelementptr double, ptr %24, i64 %94
  %100 = getelementptr double, ptr %27, i64 %95
  %101 = getelementptr double, ptr %27, i64 %95
  %invariant.gep560 = getelementptr i8, ptr %invariant.gep459, i64 24
  br label %102

102:                                              ; preds = %.preheader, %264
  %.0333 = phi i32 [ %269, %264 ], [ 1, %.preheader ]
  %.0 = phi double [ %268, %264 ], [ 3.000000e+00, %.preheader ]
  %103 = load i32, ptr %0, align 4, !tbaa !5
  %104 = icmp eq i32 %103, 1
  %105 = load double, ptr %gep, align 8, !tbaa !9
  %106 = load double, ptr %2, align 8, !tbaa !9
  br i1 %104, label %.thread445, label %117

.thread445:                                       ; preds = %102
  %107 = load double, ptr %gep371, align 8, !tbaa !9
  %108 = fmul double %106, %107
  %109 = fsub double %105, %108
  store double %109, ptr %75, align 8, !tbaa !9
  %110 = fcmp oge double %105, 0.000000e+00
  %111 = fneg double %105
  %112 = select i1 %110, double %105, double %111
  %113 = fcmp oge double %108, 0.000000e+00
  %114 = fneg double %108
  %115 = select i1 %113, double %108, double %114
  %116 = fadd double %112, %115
  store double %116, ptr %12, align 8, !tbaa !9
  br label %.lr.ph366.preheader

117:                                              ; preds = %102
  %118 = load double, ptr %97, align 8, !tbaa !9
  %119 = fmul double %106, %118
  %120 = load double, ptr %3, align 8, !tbaa !9
  %121 = load double, ptr %98, align 8, !tbaa !9
  %122 = fmul double %120, %121
  %123 = fsub double %105, %119
  %124 = fsub double %123, %122
  %125 = sext i32 %103 to i64
  %126 = getelementptr double, ptr %30, i64 %125
  %127 = getelementptr i8, ptr %126, i64 8
  store double %124, ptr %127, align 8, !tbaa !9
  %128 = fcmp oge double %105, 0.000000e+00
  %129 = fneg double %105
  %130 = select i1 %128, double %105, double %129
  %131 = fcmp oge double %119, 0.000000e+00
  %132 = fneg double %119
  %133 = select i1 %131, double %119, double %132
  %134 = fadd double %130, %133
  %135 = fcmp oge double %122, 0.000000e+00
  %136 = fneg double %122
  %137 = select i1 %135, double %122, double %136
  %138 = fadd double %134, %137
  store double %138, ptr %12, align 8, !tbaa !9
  %.not351.not360 = icmp sgt i32 %103, 2
  br i1 %.not351.not360, label %.lr.ph.preheader, label %.loopexit450

.lr.ph.preheader:                                 ; preds = %117
  %wide.trip.count = zext nneg i32 %103 to i64
  %invariant.gep461 = getelementptr double, ptr %30, i64 %125
  %139 = add nsw i64 %wide.trip.count, -2
  %min.iters.check = icmp ult i64 %139, 4
  br i1 %min.iters.check, label %.lr.ph.preheader546, label %vector.memcheck

vector.memcheck:                                  ; preds = %.lr.ph.preheader
  %140 = shl nuw nsw i64 %wide.trip.count, 3
  %scevgep482 = getelementptr i8, ptr %scevgep481, i64 %140
  %scevgep485 = getelementptr i8, ptr %scevgep484, i64 %140
  %scevgep487 = getelementptr i8, ptr %scevgep486, i64 %140
  %scevgep489 = getelementptr i8, ptr %scevgep488, i64 %140
  %scevgep492 = getelementptr i8, ptr %scevgep491, i64 %140
  %141 = shl nuw nsw i64 %125, 3
  %scevgep494 = getelementptr i8, ptr %scevgep493, i64 %141
  %142 = getelementptr i8, ptr %scevgep495, i64 %141
  %scevgep496 = getelementptr i8, ptr %142, i64 %140
  %bound0 = icmp ult ptr %scevgep, %scevgep485
  %bound1 = icmp ult ptr %scevgep483, %scevgep482
  %found.conflict = and i1 %bound0, %bound1
  %bound0497 = icmp ult ptr %scevgep, %scevgep487
  %bound1498 = icmp ugt ptr %scevgep482, %3
  %found.conflict499 = and i1 %bound0497, %bound1498
  %conflict.rdx = or i1 %found.conflict, %found.conflict499
  %bound0500 = icmp ult ptr %scevgep, %scevgep489
  %bound1501 = icmp ult ptr %scevgep488, %scevgep482
  %found.conflict502 = and i1 %bound0500, %bound1501
  %conflict.rdx503 = or i1 %conflict.rdx, %found.conflict502
  %bound0504 = icmp ult ptr %scevgep, %scevgep492
  %bound1505 = icmp ult ptr %scevgep490, %scevgep482
  %found.conflict506 = and i1 %bound0504, %bound1505
  %conflict.rdx507 = or i1 %conflict.rdx503, %found.conflict506
  %bound0508 = icmp ult ptr %scevgep494, %scevgep485
  %bound1509 = icmp ult ptr %scevgep483, %scevgep496
  %found.conflict510 = and i1 %bound0508, %bound1509
  %conflict.rdx511 = or i1 %conflict.rdx507, %found.conflict510
  %bound0512 = icmp ult ptr %scevgep494, %scevgep487
  %bound1513 = icmp ugt ptr %scevgep496, %3
  %found.conflict514 = and i1 %bound0512, %bound1513
  %conflict.rdx515 = or i1 %conflict.rdx511, %found.conflict514
  %bound0516 = icmp ult ptr %scevgep494, %scevgep489
  %bound1517 = icmp ult ptr %scevgep488, %scevgep496
  %found.conflict518 = and i1 %bound0516, %bound1517
  %conflict.rdx519 = or i1 %conflict.rdx515, %found.conflict518
  %bound0520 = icmp ult ptr %scevgep494, %scevgep492
  %bound1521 = icmp ult ptr %scevgep490, %scevgep496
  %found.conflict522 = and i1 %bound0520, %bound1521
  %conflict.rdx523 = or i1 %conflict.rdx519, %found.conflict522
  br i1 %conflict.rdx523, label %.lr.ph.preheader546, label %vector.ph

vector.ph:                                        ; preds = %vector.memcheck
  %n.vec = and i64 %139, -2
  %ind.end = add nsw i64 %n.vec, 2
  br label %vector.body

vector.body:                                      ; preds = %vector.body, %vector.ph
  %index = phi i64 [ 0, %vector.ph ], [ %index.next, %vector.body ]
  %offset.idx = add i64 %index, 2
  %143 = getelementptr double, ptr %invariant.gep453, i64 %offset.idx
  %wide.load = load <2 x double>, ptr %143, align 8, !tbaa !9, !alias.scope !18
  %144 = or disjoint i64 %index, 1
  %145 = getelementptr double, ptr %3, i64 %index
  %wide.load524 = load <2 x double>, ptr %145, align 8, !tbaa !9, !alias.scope !21
  %146 = getelementptr double, ptr %invariant.gep455, i64 %144
  %wide.load525 = load <2 x double>, ptr %146, align 8, !tbaa !9, !alias.scope !23
  %147 = fmul <2 x double> %wide.load524, %wide.load525
  %148 = getelementptr inbounds double, ptr %18, i64 %offset.idx
  %wide.load526 = load <2 x double>, ptr %148, align 8, !tbaa !9, !alias.scope !25
  %149 = getelementptr double, ptr %invariant.gep457, i64 %offset.idx
  %wide.load527 = load <2 x double>, ptr %149, align 8, !tbaa !9, !alias.scope !23
  %150 = fmul <2 x double> %wide.load526, %wide.load527
  %151 = getelementptr inbounds double, ptr %19, i64 %offset.idx
  %wide.load528 = load <2 x double>, ptr %151, align 8, !tbaa !9, !alias.scope !21
  %gep561 = getelementptr double, ptr %invariant.gep560, i64 %index
  %wide.load529 = load <2 x double>, ptr %gep561, align 8, !tbaa !9, !alias.scope !23
  %152 = fmul <2 x double> %wide.load528, %wide.load529
  %153 = fsub <2 x double> %wide.load, %147
  %154 = fsub <2 x double> %153, %150
  %155 = fsub <2 x double> %154, %152
  %156 = getelementptr double, ptr %invariant.gep461, i64 %offset.idx
  store <2 x double> %155, ptr %156, align 8, !tbaa !9, !alias.scope !27, !noalias !29
  %157 = fcmp oge <2 x double> %wide.load, zeroinitializer
  %158 = fneg <2 x double> %wide.load
  %159 = select <2 x i1> %157, <2 x double> %wide.load, <2 x double> %158
  %160 = fcmp oge <2 x double> %147, zeroinitializer
  %161 = fneg <2 x double> %147
  %162 = select <2 x i1> %160, <2 x double> %147, <2 x double> %161
  %163 = fadd <2 x double> %159, %162
  %164 = fcmp oge <2 x double> %150, zeroinitializer
  %165 = fneg <2 x double> %150
  %166 = select <2 x i1> %164, <2 x double> %150, <2 x double> %165
  %167 = fadd <2 x double> %163, %166
  %168 = fcmp oge <2 x double> %152, zeroinitializer
  %169 = fneg <2 x double> %152
  %170 = select <2 x i1> %168, <2 x double> %152, <2 x double> %169
  %171 = fadd <2 x double> %167, %170
  %172 = getelementptr inbounds double, ptr %30, i64 %offset.idx
  store <2 x double> %171, ptr %172, align 8, !tbaa !9, !alias.scope !30, !noalias !29
  %index.next = add nuw i64 %index, 2
  %173 = icmp eq i64 %index.next, %n.vec
  br i1 %173, label %middle.block, label %vector.body, !llvm.loop !32

middle.block:                                     ; preds = %vector.body
  %cmp.n = icmp eq i64 %139, %n.vec
  br i1 %cmp.n, label %.loopexit450, label %.lr.ph.preheader546

.lr.ph.preheader546:                              ; preds = %middle.block, %vector.memcheck, %.lr.ph.preheader
  %indvars.iv.ph = phi i64 [ 2, %vector.memcheck ], [ 2, %.lr.ph.preheader ], [ %ind.end, %middle.block ]
  br label %.lr.ph

.lr.ph:                                           ; preds = %.lr.ph.preheader546, %.lr.ph
  %indvars.iv = phi i64 [ %indvars.iv.next, %.lr.ph ], [ %indvars.iv.ph, %.lr.ph.preheader546 ]
  %gep454 = getelementptr double, ptr %invariant.gep453, i64 %indvars.iv
  %174 = load double, ptr %gep454, align 8, !tbaa !9
  %175 = add nsw i64 %indvars.iv, -1
  %176 = getelementptr inbounds double, ptr %19, i64 %175
  %177 = load double, ptr %176, align 8, !tbaa !9
  %gep456 = getelementptr double, ptr %invariant.gep455, i64 %175
  %178 = load double, ptr %gep456, align 8, !tbaa !9
  %179 = fmul double %177, %178
  %180 = getelementptr inbounds double, ptr %18, i64 %indvars.iv
  %181 = load double, ptr %180, align 8, !tbaa !9
  %gep458 = getelementptr double, ptr %invariant.gep457, i64 %indvars.iv
  %182 = load double, ptr %gep458, align 8, !tbaa !9
  %183 = fmul double %181, %182
  %184 = getelementptr inbounds double, ptr %19, i64 %indvars.iv
  %185 = load double, ptr %184, align 8, !tbaa !9
  %indvars.iv.next = add nuw nsw i64 %indvars.iv, 1
  %gep460 = getelementptr double, ptr %invariant.gep459, i64 %indvars.iv.next
  %186 = load double, ptr %gep460, align 8, !tbaa !9
  %187 = fmul double %185, %186
  %188 = fsub double %174, %179
  %189 = fsub double %188, %183
  %190 = fsub double %189, %187
  %gep462 = getelementptr double, ptr %invariant.gep461, i64 %indvars.iv
  store double %190, ptr %gep462, align 8, !tbaa !9
  %191 = fcmp oge double %174, 0.000000e+00
  %192 = fneg double %174
  %193 = select i1 %191, double %174, double %192
  %194 = fcmp oge double %179, 0.000000e+00
  %195 = fneg double %179
  %196 = select i1 %194, double %179, double %195
  %197 = fadd double %193, %196
  %198 = fcmp oge double %183, 0.000000e+00
  %199 = fneg double %183
  %200 = select i1 %198, double %183, double %199
  %201 = fadd double %197, %200
  %202 = fcmp oge double %187, 0.000000e+00
  %203 = fneg double %187
  %204 = select i1 %202, double %187, double %203
  %205 = fadd double %201, %204
  %206 = getelementptr inbounds double, ptr %30, i64 %indvars.iv
  store double %205, ptr %206, align 8, !tbaa !9
  %exitcond.not = icmp eq i64 %indvars.iv.next, %wide.trip.count
  br i1 %exitcond.not, label %.loopexit450, label %.lr.ph, !llvm.loop !33

.loopexit450:                                     ; preds = %.lr.ph, %middle.block, %117
  %207 = getelementptr double, ptr %99, i64 %125
  %208 = load double, ptr %207, align 8, !tbaa !9
  %209 = add nsw i32 %103, -1
  %210 = sext i32 %209 to i64
  %211 = getelementptr inbounds double, ptr %19, i64 %210
  %212 = load double, ptr %211, align 8, !tbaa !9
  %213 = getelementptr double, ptr %100, i64 %210
  %214 = load double, ptr %213, align 8, !tbaa !9
  %215 = fmul double %212, %214
  %216 = getelementptr inbounds double, ptr %18, i64 %125
  %217 = load double, ptr %216, align 8, !tbaa !9
  %218 = getelementptr double, ptr %101, i64 %125
  %219 = load double, ptr %218, align 8, !tbaa !9
  %220 = fmul double %217, %219
  %221 = fsub double %208, %215
  %222 = fsub double %221, %220
  %223 = shl nsw i32 %103, 1
  %224 = sext i32 %223 to i64
  %225 = getelementptr inbounds double, ptr %30, i64 %224
  store double %222, ptr %225, align 8, !tbaa !9
  %226 = fcmp oge double %208, 0.000000e+00
  %227 = fneg double %208
  %228 = select i1 %226, double %208, double %227
  %229 = fcmp oge double %215, 0.000000e+00
  %230 = fneg double %215
  %231 = select i1 %229, double %215, double %230
  %232 = fadd double %228, %231
  %233 = fcmp oge double %220, 0.000000e+00
  %234 = fneg double %220
  %235 = select i1 %233, double %220, double %234
  %236 = fadd double %232, %235
  store double %236, ptr %126, align 8, !tbaa !9
  %.not352362 = icmp slt i32 %103, 1
  br i1 %.not352362, label %._crit_edge367, label %.lr.ph366.preheader

.lr.ph366.preheader:                              ; preds = %.thread445, %.loopexit450
  %237 = zext nneg i32 %103 to i64
  %238 = add nuw i32 %103, 1
  %wide.trip.count411 = zext i32 %238 to i64
  %invariant.gep463 = getelementptr inbounds double, ptr %30, i64 %237
  %invariant.gep465 = getelementptr inbounds double, ptr %30, i64 %237
  br label %.lr.ph366

.lr.ph366:                                        ; preds = %.lr.ph366.preheader, %256
  %indvars.iv408 = phi i64 [ 1, %.lr.ph366.preheader ], [ %indvars.iv.next409, %256 ]
  %.0334364 = phi double [ 0.000000e+00, %.lr.ph366.preheader ], [ %258, %256 ]
  %239 = getelementptr inbounds double, ptr %30, i64 %indvars.iv408
  %240 = load double, ptr %239, align 8, !tbaa !9
  %241 = fcmp ogt double %240, %73
  br i1 %241, label %242, label %248

242:                                              ; preds = %.lr.ph366
  %gep466 = getelementptr inbounds double, ptr %invariant.gep465, i64 %indvars.iv408
  %243 = load double, ptr %gep466, align 8, !tbaa !9
  %244 = fcmp oge double %243, 0.000000e+00
  %245 = fneg double %243
  %246 = select i1 %244, double %243, double %245
  %247 = fdiv double %246, %240
  br label %256

248:                                              ; preds = %.lr.ph366
  %gep464 = getelementptr inbounds double, ptr %invariant.gep463, i64 %indvars.iv408
  %249 = load double, ptr %gep464, align 8, !tbaa !9
  %250 = fcmp oge double %249, 0.000000e+00
  %251 = fneg double %249
  %252 = select i1 %250, double %249, double %251
  %253 = fadd double %72, %252
  %254 = fadd double %72, %240
  %255 = fdiv double %253, %254
  br label %256

256:                                              ; preds = %242, %248
  %.sink477 = phi double [ %247, %242 ], [ %255, %248 ]
  %257 = fcmp oge double %.0334364, %.sink477
  %258 = select i1 %257, double %.0334364, double %.sink477
  %indvars.iv.next409 = add nuw nsw i64 %indvars.iv408, 1
  %exitcond412.not = icmp eq i64 %indvars.iv.next409, %wide.trip.count411
  br i1 %exitcond412.not, label %._crit_edge367, label %.lr.ph366, !llvm.loop !34

._crit_edge367:                                   ; preds = %256, %.loopexit450
  %.not352362448 = phi i1 [ true, %.loopexit450 ], [ false, %256 ]
  %.0334.lcssa = phi double [ 0.000000e+00, %.loopexit450 ], [ %258, %256 ]
  store double %.0334.lcssa, ptr %93, align 8, !tbaa !9
  %259 = fcmp ogt double %.0334.lcssa, %70
  br i1 %259, label %260, label %270

260:                                              ; preds = %._crit_edge367
  %261 = fmul double %.0334.lcssa, 2.000000e+00
  %262 = fcmp ole double %261, %.0
  %263 = icmp ult i32 %.0333, 6
  %or.cond = select i1 %262, i1 %263, i1 false
  br i1 %or.cond, label %264, label %270

264:                                              ; preds = %260
  %265 = sext i32 %103 to i64
  %gep373 = getelementptr double, ptr %12, i64 %265
  tail call void @dpttrs_(ptr noundef nonnull %0, ptr noundef nonnull @c__1, ptr noundef %4, ptr noundef %5, ptr noundef %gep373, ptr noundef nonnull %0, ptr noundef nonnull %13) #5
  %266 = load i32, ptr %0, align 4, !tbaa !5
  %267 = sext i32 %266 to i64
  %gep375 = getelementptr double, ptr %12, i64 %267
  tail call void @daxpy_(ptr noundef nonnull %0, ptr noundef nonnull @c_b11, ptr noundef %gep375, ptr noundef nonnull @c__1, ptr noundef %gep371, ptr noundef nonnull @c__1) #5
  %268 = load double, ptr %93, align 8, !tbaa !9
  %269 = add nuw nsw i32 %.0333, 1
  br label %102

270:                                              ; preds = %260, %._crit_edge367
  br i1 %.not352362448, label %._crit_edge382, label %.lr.ph381.preheader

.lr.ph381.preheader:                              ; preds = %270
  %271 = zext nneg i32 %103 to i64
  %272 = add nuw i32 %103, 1
  %wide.trip.count416 = zext i32 %272 to i64
  %invariant.gep467 = getelementptr inbounds double, ptr %30, i64 %271
  %invariant.gep469 = getelementptr inbounds double, ptr %30, i64 %271
  br label %.lr.ph381

.lr.ph381:                                        ; preds = %.lr.ph381.preheader, %289
  %indvars.iv413 = phi i64 [ 1, %.lr.ph381.preheader ], [ %indvars.iv.next414, %289 ]
  %273 = getelementptr inbounds double, ptr %30, i64 %indvars.iv413
  %274 = load double, ptr %273, align 8, !tbaa !9
  %275 = fcmp ogt double %274, %73
  br i1 %275, label %276, label %282

276:                                              ; preds = %.lr.ph381
  %gep470 = getelementptr inbounds double, ptr %invariant.gep469, i64 %indvars.iv413
  %277 = load double, ptr %gep470, align 8, !tbaa !9
  %278 = fcmp oge double %277, 0.000000e+00
  %279 = fneg double %277
  %280 = select i1 %278, double %277, double %279
  %281 = tail call double @llvm.fmuladd.f64(double %76, double %274, double %280)
  br label %289

282:                                              ; preds = %.lr.ph381
  %gep468 = getelementptr inbounds double, ptr %invariant.gep467, i64 %indvars.iv413
  %283 = load double, ptr %gep468, align 8, !tbaa !9
  %284 = fcmp oge double %283, 0.000000e+00
  %285 = fneg double %283
  %286 = select i1 %284, double %283, double %285
  %287 = tail call double @llvm.fmuladd.f64(double %76, double %274, double %286)
  %288 = fadd double %72, %287
  br label %289

289:                                              ; preds = %276, %282
  %storemerge = phi double [ %288, %282 ], [ %281, %276 ]
  store double %storemerge, ptr %273, align 8, !tbaa !9
  %indvars.iv.next414 = add nuw nsw i64 %indvars.iv413, 1
  %exitcond417.not = icmp eq i64 %indvars.iv.next414, %wide.trip.count416
  br i1 %exitcond417.not, label %._crit_edge382, label %.lr.ph381, !llvm.loop !35

._crit_edge382:                                   ; preds = %289, %270
  %290 = tail call i32 @idamax_(ptr noundef nonnull %0, ptr noundef nonnull %12, ptr noundef nonnull @c__1) #5
  %291 = sext i32 %290 to i64
  %292 = getelementptr inbounds double, ptr %30, i64 %291
  %293 = load double, ptr %292, align 8, !tbaa !9
  %294 = getelementptr inbounds double, ptr %28, i64 %indvars.iv431
  store double %293, ptr %294, align 8, !tbaa !9
  store double 1.000000e+00, ptr %12, align 8, !tbaa !9
  %295 = load i32, ptr %0, align 4, !tbaa !5
  %.not354383 = icmp slt i32 %295, 2
  br i1 %.not354383, label %._crit_edge387.thread, label %.lr.ph386.preheader

._crit_edge387.thread:                            ; preds = %._crit_edge382
  %296 = sext i32 %295 to i64
  %297 = getelementptr inbounds double, ptr %20, i64 %296
  %298 = load double, ptr %297, align 8, !tbaa !9
  %299 = getelementptr inbounds double, ptr %30, i64 %296
  %300 = load double, ptr %299, align 8, !tbaa !9
  %301 = fdiv double %300, %298
  store double %301, ptr %299, align 8, !tbaa !9
  br label %._crit_edge391

.lr.ph386.preheader:                              ; preds = %._crit_edge382
  %302 = add nuw i32 %295, 1
  %wide.trip.count421 = zext i32 %302 to i64
  %xtraiter = and i64 %wide.trip.count421, 1
  %303 = icmp eq i32 %302, 3
  br i1 %303, label %._crit_edge387.unr-lcssa, label %.lr.ph386.preheader.new

.lr.ph386.preheader.new:                          ; preds = %.lr.ph386.preheader
  %304 = and i64 %wide.trip.count421, 4294967294
  %305 = add nsw i64 %304, -4
  br label %.lr.ph386

.lr.ph386:                                        ; preds = %.lr.ph386, %.lr.ph386.preheader.new
  %306 = phi double [ 1.000000e+00, %.lr.ph386.preheader.new ], [ %317, %.lr.ph386 ]
  %indvars.iv418 = phi i64 [ 2, %.lr.ph386.preheader.new ], [ %indvars.iv.next419.1, %.lr.ph386 ]
  %niter = phi i64 [ 0, %.lr.ph386.preheader.new ], [ %niter.next.1, %.lr.ph386 ]
  %gep472 = getelementptr double, ptr %invariant.gep471, i64 %indvars.iv418
  %307 = load double, ptr %gep472, align 8, !tbaa !9
  %308 = fcmp oge double %307, 0.000000e+00
  %309 = fneg double %307
  %310 = select i1 %308, double %307, double %309
  %311 = tail call double @llvm.fmuladd.f64(double %306, double %310, double 1.000000e+00)
  %312 = getelementptr inbounds double, ptr %30, i64 %indvars.iv418
  store double %311, ptr %312, align 8, !tbaa !9
  %indvars.iv.next419 = or disjoint i64 %indvars.iv418, 1
  %gep472.1 = getelementptr double, ptr %invariant.gep471, i64 %indvars.iv.next419
  %313 = load double, ptr %gep472.1, align 8, !tbaa !9
  %314 = fcmp oge double %313, 0.000000e+00
  %315 = fneg double %313
  %316 = select i1 %314, double %313, double %315
  %317 = tail call double @llvm.fmuladd.f64(double %311, double %316, double 1.000000e+00)
  %318 = getelementptr double, ptr %12, i64 %indvars.iv418
  store double %317, ptr %318, align 8, !tbaa !9
  %indvars.iv.next419.1 = add nuw nsw i64 %indvars.iv418, 2
  %niter.next.1 = add i64 %niter, 2
  %niter.ncmp.1 = icmp eq i64 %niter, %305
  br i1 %niter.ncmp.1, label %._crit_edge387.unr-lcssa, label %.lr.ph386, !llvm.loop !36

._crit_edge387.unr-lcssa:                         ; preds = %.lr.ph386, %.lr.ph386.preheader
  %.unr = phi double [ 1.000000e+00, %.lr.ph386.preheader ], [ %317, %.lr.ph386 ]
  %indvars.iv418.unr = phi i64 [ 2, %.lr.ph386.preheader ], [ %indvars.iv.next419.1, %.lr.ph386 ]
  %lcmp.mod.not = icmp eq i64 %xtraiter, 0
  br i1 %lcmp.mod.not, label %._crit_edge387, label %.lr.ph386.epil

.lr.ph386.epil:                                   ; preds = %._crit_edge387.unr-lcssa
  %gep472.epil = getelementptr double, ptr %invariant.gep471, i64 %indvars.iv418.unr
  %319 = load double, ptr %gep472.epil, align 8, !tbaa !9
  %320 = fcmp oge double %319, 0.000000e+00
  %321 = fneg double %319
  %322 = select i1 %320, double %319, double %321
  %323 = tail call double @llvm.fmuladd.f64(double %.unr, double %322, double 1.000000e+00)
  %324 = getelementptr inbounds double, ptr %30, i64 %indvars.iv418.unr
  store double %323, ptr %324, align 8, !tbaa !9
  br label %._crit_edge387

._crit_edge387:                                   ; preds = %._crit_edge387.unr-lcssa, %.lr.ph386.epil
  %325 = zext nneg i32 %295 to i64
  %326 = getelementptr inbounds double, ptr %20, i64 %325
  %327 = load double, ptr %326, align 8, !tbaa !9
  %328 = getelementptr inbounds double, ptr %30, i64 %325
  %329 = load double, ptr %328, align 8, !tbaa !9
  %330 = fdiv double %329, %327
  store double %330, ptr %328, align 8, !tbaa !9
  %331 = zext nneg i32 %295 to i64
  %.phi.trans.insert441 = getelementptr inbounds double, ptr %30, i64 %331
  %.pre442 = load double, ptr %.phi.trans.insert441, align 8, !tbaa !9
  br label %.lr.ph390

.lr.ph390:                                        ; preds = %._crit_edge387, %.lr.ph390
  %332 = phi double [ %.pre442, %._crit_edge387 ], [ %343, %.lr.ph390 ]
  %indvars.iv423 = phi i64 [ %331, %._crit_edge387 ], [ %indvars.iv.next424, %.lr.ph390 ]
  %indvars.iv.next424 = add nsw i64 %indvars.iv423, -1
  %333 = getelementptr inbounds double, ptr %30, i64 %indvars.iv.next424
  %334 = load double, ptr %333, align 8, !tbaa !9
  %335 = getelementptr inbounds double, ptr %20, i64 %indvars.iv.next424
  %336 = load double, ptr %335, align 8, !tbaa !9
  %337 = fdiv double %334, %336
  %338 = getelementptr inbounds double, ptr %21, i64 %indvars.iv.next424
  %339 = load double, ptr %338, align 8, !tbaa !9
  %340 = fcmp oge double %339, 0.000000e+00
  %341 = fneg double %339
  %342 = select i1 %340, double %339, double %341
  %343 = tail call double @llvm.fmuladd.f64(double %332, double %342, double %337)
  store double %343, ptr %333, align 8, !tbaa !9
  %344 = icmp ugt i64 %indvars.iv423, 2
  br i1 %344, label %.lr.ph390, label %._crit_edge391, !llvm.loop !37

._crit_edge391:                                   ; preds = %.lr.ph390, %._crit_edge387.thread
  %345 = tail call i32 @idamax_(ptr noundef nonnull %0, ptr noundef nonnull %12, ptr noundef nonnull @c__1) #5
  %346 = sext i32 %345 to i64
  %347 = getelementptr inbounds double, ptr %30, i64 %346
  %348 = load double, ptr %347, align 8, !tbaa !9
  %349 = fcmp oge double %348, 0.000000e+00
  %350 = fneg double %348
  %351 = select i1 %349, double %348, double %350
  %352 = load double, ptr %294, align 8, !tbaa !9
  %353 = fmul double %352, %351
  store double %353, ptr %294, align 8, !tbaa !9
  %354 = load i32, ptr %0, align 4, !tbaa !5
  %.not355392 = icmp slt i32 %354, 1
  br i1 %.not355392, label %._crit_edge397.thread, label %.lr.ph396

.lr.ph396:                                        ; preds = %._crit_edge391
  %invariant.gep473 = getelementptr double, ptr %27, i64 %95
  %355 = zext nneg i32 %354 to i64
  %xtraiter550 = and i64 %355, 1
  %356 = icmp eq i32 %354, 1
  br i1 %356, label %._crit_edge397.unr-lcssa, label %.lr.ph396.new

.lr.ph396.new:                                    ; preds = %.lr.ph396
  %unroll_iter553 = and i64 %355, 2147483646
  %invariant.gep562 = getelementptr i8, ptr %invariant.gep473, i64 8
  br label %357

357:                                              ; preds = %357, %.lr.ph396.new
  %indvars.iv426 = phi i64 [ 1, %.lr.ph396.new ], [ %indvars.iv.next427.1, %357 ]
  %.1394 = phi double [ 0.000000e+00, %.lr.ph396.new ], [ %369, %357 ]
  %niter554 = phi i64 [ 0, %.lr.ph396.new ], [ %niter554.next.1, %357 ]
  %gep474 = getelementptr double, ptr %invariant.gep473, i64 %indvars.iv426
  %358 = load double, ptr %gep474, align 8, !tbaa !9
  %359 = fcmp oge double %358, 0.000000e+00
  %360 = fneg double %358
  %361 = select i1 %359, double %358, double %360
  %362 = fcmp oge double %.1394, %361
  %363 = select i1 %362, double %.1394, double %361
  %gep563 = getelementptr double, ptr %invariant.gep562, i64 %indvars.iv426
  %364 = load double, ptr %gep563, align 8, !tbaa !9
  %365 = fcmp oge double %364, 0.000000e+00
  %366 = fneg double %364
  %367 = select i1 %365, double %364, double %366
  %368 = fcmp oge double %363, %367
  %369 = select i1 %368, double %363, double %367
  %indvars.iv.next427.1 = add nuw nsw i64 %indvars.iv426, 2
  %niter554.next.1 = add i64 %niter554, 2
  %niter554.ncmp.1 = icmp eq i64 %niter554.next.1, %unroll_iter553
  br i1 %niter554.ncmp.1, label %._crit_edge397.unr-lcssa, label %357, !llvm.loop !38

._crit_edge397.unr-lcssa:                         ; preds = %357, %.lr.ph396
  %.lcssa549.ph = phi double [ poison, %.lr.ph396 ], [ %369, %357 ]
  %indvars.iv426.unr = phi i64 [ 1, %.lr.ph396 ], [ %indvars.iv.next427.1, %357 ]
  %.1394.unr = phi double [ 0.000000e+00, %.lr.ph396 ], [ %369, %357 ]
  %lcmp.mod551.not = icmp eq i64 %xtraiter550, 0
  br i1 %lcmp.mod551.not, label %._crit_edge397, label %._crit_edge397.epilog-lcssa

._crit_edge397.epilog-lcssa:                      ; preds = %._crit_edge397.unr-lcssa
  %gep474.epil = getelementptr double, ptr %invariant.gep473, i64 %indvars.iv426.unr
  %370 = load double, ptr %gep474.epil, align 8, !tbaa !9
  %371 = fcmp oge double %370, 0.000000e+00
  %372 = fneg double %370
  %373 = select i1 %371, double %370, double %372
  %374 = fcmp oge double %.1394.unr, %373
  %375 = select i1 %374, double %.1394.unr, double %373
  br label %._crit_edge397

._crit_edge397:                                   ; preds = %._crit_edge397.unr-lcssa, %._crit_edge397.epilog-lcssa
  %.lcssa549 = phi double [ %.lcssa549.ph, %._crit_edge397.unr-lcssa ], [ %375, %._crit_edge397.epilog-lcssa ]
  %376 = fcmp une double %.lcssa549, 0.000000e+00
  br i1 %376, label %377, label %._crit_edge397.thread

377:                                              ; preds = %._crit_edge397
  %378 = fdiv double %353, %.lcssa549
  store double %378, ptr %294, align 8, !tbaa !9
  br label %._crit_edge397.thread

._crit_edge397.thread:                            ; preds = %._crit_edge391, %._crit_edge397, %377
  %indvars.iv.next432 = add nuw nsw i64 %indvars.iv431, 1
  %exitcond435.not = icmp eq i64 %indvars.iv.next432, %wide.trip.count434
  %indvar.next = add i64 %indvar, 1
  br i1 %exitcond435.not, label %.loopexit, label %.preheader, !llvm.loop !39

.loopexit:                                        ; preds = %._crit_edge397.thread, %.lr.ph404.prol.loopexit, %.lr.ph404, %middle.block531, %45, %69, %46, %.thread
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %17) #5
  ret void
}

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

declare i32 @xerbla_(ptr noundef, ptr noundef, i32 noundef) local_unnamed_addr #2

declare double @dlamch_(ptr noundef) local_unnamed_addr #2

declare void @dpttrs_(ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef) local_unnamed_addr #2

declare void @daxpy_(ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef) local_unnamed_addr #2

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

declare i32 @idamax_(ptr noundef, ptr noundef, ptr noundef) local_unnamed_addr #2

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

; Function Attrs: nocallback nofree nosync nounwind speculatable willreturn memory(none)
declare i32 @llvm.umax.i32(i32, i32) #4

attributes #0 = { 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 #1 = { mustprogress nocallback nofree nosync nounwind willreturn memory(argmem: readwrite) }
attributes #2 = { "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }
attributes #3 = { mustprogress nocallback nofree nosync nounwind speculatable willreturn memory(none) }
attributes #4 = { nocallback nofree nosync nounwind speculatable willreturn memory(none) }
attributes #5 = { 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 = !{!"int", !7, i64 0}
!7 = !{!"omnipotent char", !8, i64 0}
!8 = !{!"Simple C/C++ TBAA"}
!9 = !{!10, !10, i64 0}
!10 = !{!"double", !7, i64 0}
!11 = distinct !{!11, !12, !13, !14}
!12 = !{!"llvm.loop.mustprogress"}
!13 = !{!"llvm.loop.isvectorized", i32 1}
!14 = !{!"llvm.loop.unroll.runtime.disable"}
!15 = distinct !{!15, !16}
!16 = !{!"llvm.loop.unroll.disable"}
!17 = distinct !{!17, !12, !13}
!18 = !{!19}
!19 = distinct !{!19, !20}
!20 = distinct !{!20, !"LVerDomain"}
!21 = !{!22}
!22 = distinct !{!22, !20}
!23 = !{!24}
!24 = distinct !{!24, !20}
!25 = !{!26}
!26 = distinct !{!26, !20}
!27 = !{!28}
!28 = distinct !{!28, !20}
!29 = !{!19, !22, !24, !26}
!30 = !{!31}
!31 = distinct !{!31, !20}
!32 = distinct !{!32, !12, !13, !14}
!33 = distinct !{!33, !12, !13}
!34 = distinct !{!34, !12}
!35 = distinct !{!35, !12}
!36 = distinct !{!36, !12}
!37 = distinct !{!37, !12}
!38 = distinct !{!38, !12}
!39 = distinct !{!39, !12}


; Effective O3 passes: BDCEPass,CorrelatedValuePropagationPass,DSEPass,EarlyCSEPass,GVNPass,GlobalOptPass,IPSCCPPass,IndVarSimplifyPass,InferFunctionAttrsPass,InstCombinePass,InstSimplifyPass,JumpThreadingPass,LCSSAPass,LICMPass,LoopLoadEliminationPass,LoopRotatePass,LoopSimplifyPass,LoopUnrollPass,LoopVectorizePass,PostOrderFunctionAttrsPass,ReassociatePass,SCCPPass,SROAPass,SimplifyCFGPass,TailCallElimPass