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

; 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 [10 x i8], align 1
@.str.1 = external hidden unnamed_addr constant [2 x i8], align 1
@c__1 = external hidden global i32, align 4

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

99:                                               ; preds = %18
  store i32 1, ptr %76, align 4
  br label %1106

100:                                              ; preds = %18
  store double 2.000000e+00, ptr %43, align 8, !tbaa !11
  %101 = call double @dlamch_(ptr noundef @.str)
  store double %101, ptr %68, align 8, !tbaa !11
  store i32 0, ptr %54, align 4, !tbaa !9
  store i32 0, ptr %63, align 4, !tbaa !9
  store i32 0, ptr %59, align 4, !tbaa !9
  %102 = load ptr, ptr %25, align 8, !tbaa !5
  %103 = load ptr, ptr %24, align 8, !tbaa !5
  %104 = load i32, ptr %103, align 4, !tbaa !9
  %105 = sext i32 %104 to i64
  %106 = getelementptr inbounds double, ptr %102, i64 %105
  %107 = load double, ptr %106, align 8, !tbaa !11
  %108 = load ptr, ptr %25, align 8, !tbaa !5
  %109 = load ptr, ptr %23, align 8, !tbaa !5
  %110 = load i32, ptr %109, align 4, !tbaa !9
  %111 = sext i32 %110 to i64
  %112 = getelementptr inbounds double, ptr %108, i64 %111
  %113 = load double, ptr %112, align 8, !tbaa !11
  %114 = fsub double %107, %113
  store double %114, ptr %38, align 8, !tbaa !11
  %115 = load double, ptr %38, align 8, !tbaa !11
  %116 = fcmp oge double %115, 0.000000e+00
  br i1 %116, label %117, label %119

117:                                              ; preds = %100
  %118 = load double, ptr %38, align 8, !tbaa !11
  br label %122

119:                                              ; preds = %100
  %120 = load double, ptr %38, align 8, !tbaa !11
  %121 = fneg double %120
  br label %122

122:                                              ; preds = %119, %117
  %123 = phi double [ %118, %117 ], [ %121, %119 ]
  %124 = load ptr, ptr %27, align 8, !tbaa !5
  %125 = load ptr, ptr %24, align 8, !tbaa !5
  %126 = load i32, ptr %125, align 4, !tbaa !9
  %127 = sext i32 %126 to i64
  %128 = getelementptr inbounds double, ptr %124, i64 %127
  %129 = load double, ptr %128, align 8, !tbaa !11
  %130 = fadd double %123, %129
  %131 = load ptr, ptr %27, align 8, !tbaa !5
  %132 = load ptr, ptr %23, align 8, !tbaa !5
  %133 = load i32, ptr %132, align 4, !tbaa !9
  %134 = sext i32 %133 to i64
  %135 = getelementptr inbounds double, ptr %131, i64 %134
  %136 = load double, ptr %135, align 8, !tbaa !11
  %137 = fadd double %130, %136
  store double %137, ptr %65, align 8, !tbaa !11
  %138 = load double, ptr %65, align 8, !tbaa !11
  %139 = load ptr, ptr %24, align 8, !tbaa !5
  %140 = load i32, ptr %139, align 4, !tbaa !9
  %141 = load ptr, ptr %23, align 8, !tbaa !5
  %142 = load i32, ptr %141, align 4, !tbaa !9
  %143 = sub nsw i32 %140, %142
  %144 = sitofp i32 %143 to double
  %145 = fdiv double %138, %144
  store double %145, ptr %51, align 8, !tbaa !11
  %146 = load ptr, ptr %29, align 8, !tbaa !5
  %147 = load double, ptr %146, align 8, !tbaa !11
  %148 = load ptr, ptr %30, align 8, !tbaa !5
  %149 = load double, ptr %148, align 8, !tbaa !11
  %150 = fcmp ole double %147, %149
  br i1 %150, label %151, label %154

151:                                              ; preds = %122
  %152 = load ptr, ptr %29, align 8, !tbaa !5
  %153 = load double, ptr %152, align 8, !tbaa !11
  br label %157

154:                                              ; preds = %122
  %155 = load ptr, ptr %30, align 8, !tbaa !5
  %156 = load double, ptr %155, align 8, !tbaa !11
  br label %157

157:                                              ; preds = %154, %151
  %158 = phi double [ %153, %151 ], [ %156, %154 ]
  store double %158, ptr %60, align 8, !tbaa !11
  %159 = load ptr, ptr %25, align 8, !tbaa !5
  %160 = load ptr, ptr %23, align 8, !tbaa !5
  %161 = load i32, ptr %160, align 4, !tbaa !9
  %162 = sext i32 %161 to i64
  %163 = getelementptr inbounds double, ptr %159, i64 %162
  %164 = load double, ptr %163, align 8, !tbaa !11
  store double %164, ptr %38, align 8, !tbaa !11
  %165 = load ptr, ptr %25, align 8, !tbaa !5
  %166 = load ptr, ptr %24, align 8, !tbaa !5
  %167 = load i32, ptr %166, align 4, !tbaa !9
  %168 = sext i32 %167 to i64
  %169 = getelementptr inbounds double, ptr %165, i64 %168
  %170 = load double, ptr %169, align 8, !tbaa !11
  store double %170, ptr %39, align 8, !tbaa !11
  %171 = load double, ptr %38, align 8, !tbaa !11
  %172 = load double, ptr %39, align 8, !tbaa !11
  %173 = fcmp ole double %171, %172
  br i1 %173, label %174, label %176

174:                                              ; preds = %157
  %175 = load double, ptr %38, align 8, !tbaa !11
  br label %178

176:                                              ; preds = %157
  %177 = load double, ptr %39, align 8, !tbaa !11
  br label %178

178:                                              ; preds = %176, %174
  %179 = phi double [ %175, %174 ], [ %177, %176 ]
  %180 = load ptr, ptr %27, align 8, !tbaa !5
  %181 = load ptr, ptr %23, align 8, !tbaa !5
  %182 = load i32, ptr %181, align 4, !tbaa !9
  %183 = sext i32 %182 to i64
  %184 = getelementptr inbounds double, ptr %180, i64 %183
  %185 = load double, ptr %184, align 8, !tbaa !11
  %186 = fsub double %179, %185
  store double %186, ptr %61, align 8, !tbaa !11
  %187 = load ptr, ptr %25, align 8, !tbaa !5
  %188 = load ptr, ptr %23, align 8, !tbaa !5
  %189 = load i32, ptr %188, align 4, !tbaa !9
  %190 = sext i32 %189 to i64
  %191 = getelementptr inbounds double, ptr %187, i64 %190
  %192 = load double, ptr %191, align 8, !tbaa !11
  store double %192, ptr %38, align 8, !tbaa !11
  %193 = load ptr, ptr %25, align 8, !tbaa !5
  %194 = load ptr, ptr %24, align 8, !tbaa !5
  %195 = load i32, ptr %194, align 4, !tbaa !9
  %196 = sext i32 %195 to i64
  %197 = getelementptr inbounds double, ptr %193, i64 %196
  %198 = load double, ptr %197, align 8, !tbaa !11
  store double %198, ptr %39, align 8, !tbaa !11
  %199 = load double, ptr %38, align 8, !tbaa !11
  %200 = load double, ptr %39, align 8, !tbaa !11
  %201 = fcmp oge double %199, %200
  br i1 %201, label %202, label %204

202:                                              ; preds = %178
  %203 = load double, ptr %38, align 8, !tbaa !11
  br label %206

204:                                              ; preds = %178
  %205 = load double, ptr %39, align 8, !tbaa !11
  br label %206

206:                                              ; preds = %204, %202
  %207 = phi double [ %203, %202 ], [ %205, %204 ]
  %208 = load ptr, ptr %27, align 8, !tbaa !5
  %209 = load ptr, ptr %24, align 8, !tbaa !5
  %210 = load i32, ptr %209, align 4, !tbaa !9
  %211 = sext i32 %210 to i64
  %212 = getelementptr inbounds double, ptr %208, i64 %211
  %213 = load double, ptr %212, align 8, !tbaa !11
  %214 = fadd double %207, %213
  store double %214, ptr %64, align 8, !tbaa !11
  %215 = load double, ptr %61, align 8, !tbaa !11
  %216 = fcmp oge double %215, 0.000000e+00
  br i1 %216, label %217, label %219

217:                                              ; preds = %206
  %218 = load double, ptr %61, align 8, !tbaa !11
  br label %222

219:                                              ; preds = %206
  %220 = load double, ptr %61, align 8, !tbaa !11
  %221 = fneg double %220
  br label %222

222:                                              ; preds = %219, %217
  %223 = phi double [ %218, %217 ], [ %221, %219 ]
  %224 = fmul double %223, 4.000000e+00
  %225 = load double, ptr %68, align 8, !tbaa !11
  %226 = load double, ptr %61, align 8, !tbaa !11
  %227 = fneg double %224
  %228 = call double @llvm.fmuladd.f64(double %227, double %225, double %226)
  store double %228, ptr %61, align 8, !tbaa !11
  %229 = load double, ptr %64, align 8, !tbaa !11
  %230 = fcmp oge double %229, 0.000000e+00
  br i1 %230, label %231, label %233

231:                                              ; preds = %222
  %232 = load double, ptr %64, align 8, !tbaa !11
  br label %236

233:                                              ; preds = %222
  %234 = load double, ptr %64, align 8, !tbaa !11
  %235 = fneg double %234
  br label %236

236:                                              ; preds = %233, %231
  %237 = phi double [ %232, %231 ], [ %235, %233 ]
  %238 = fmul double %237, 4.000000e+00
  %239 = load double, ptr %68, align 8, !tbaa !11
  %240 = load double, ptr %64, align 8, !tbaa !11
  %241 = call double @llvm.fmuladd.f64(double %238, double %239, double %240)
  store double %241, ptr %64, align 8, !tbaa !11
  %242 = load double, ptr %60, align 8, !tbaa !11
  %243 = load ptr, ptr %31, align 8, !tbaa !5
  %244 = load double, ptr %243, align 8, !tbaa !11
  %245 = fmul double %244, 2.000000e+00
  %246 = call double @llvm.fmuladd.f64(double %242, double 2.500000e-01, double %245)
  store double %246, ptr %52, align 8, !tbaa !11
  %247 = load double, ptr %60, align 8, !tbaa !11
  %248 = load ptr, ptr %31, align 8, !tbaa !5
  %249 = load double, ptr %248, align 8, !tbaa !11
  %250 = fmul double %249, 2.000000e+00
  %251 = call double @llvm.fmuladd.f64(double %247, double 2.500000e-01, double %250)
  store double %251, ptr %53, align 8, !tbaa !11
  %252 = load double, ptr %51, align 8, !tbaa !11
  store double %252, ptr %38, align 8, !tbaa !11
  %253 = load ptr, ptr %26, align 8, !tbaa !5
  %254 = load ptr, ptr %23, align 8, !tbaa !5
  %255 = load i32, ptr %254, align 4, !tbaa !9
  %256 = sext i32 %255 to i64
  %257 = getelementptr inbounds double, ptr %253, i64 %256
  %258 = load double, ptr %257, align 8, !tbaa !11
  store double %258, ptr %39, align 8, !tbaa !11
  %259 = load double, ptr %38, align 8, !tbaa !11
  %260 = load double, ptr %39, align 8, !tbaa !11
  %261 = fcmp oge double %259, %260
  br i1 %261, label %262, label %264

262:                                              ; preds = %236
  %263 = load double, ptr %38, align 8, !tbaa !11
  br label %266

264:                                              ; preds = %236
  %265 = load double, ptr %39, align 8, !tbaa !11
  br label %266

266:                                              ; preds = %264, %262
  %267 = phi double [ %263, %262 ], [ %265, %264 ]
  %268 = load double, ptr %43, align 8, !tbaa !11
  %269 = fdiv double %267, %268
  store double %269, ptr %58, align 8, !tbaa !11
  %270 = load double, ptr %51, align 8, !tbaa !11
  store double %270, ptr %38, align 8, !tbaa !11
  %271 = load ptr, ptr %26, align 8, !tbaa !5
  %272 = load ptr, ptr %24, align 8, !tbaa !5
  %273 = load i32, ptr %272, align 4, !tbaa !9
  %274 = sub nsw i32 %273, 1
  %275 = sext i32 %274 to i64
  %276 = getelementptr inbounds double, ptr %271, i64 %275
  %277 = load double, ptr %276, align 8, !tbaa !11
  store double %277, ptr %39, align 8, !tbaa !11
  %278 = load double, ptr %38, align 8, !tbaa !11
  %279 = load double, ptr %39, align 8, !tbaa !11
  %280 = fcmp oge double %278, %279
  br i1 %280, label %281, label %283

281:                                              ; preds = %266
  %282 = load double, ptr %38, align 8, !tbaa !11
  br label %285

283:                                              ; preds = %266
  %284 = load double, ptr %39, align 8, !tbaa !11
  br label %285

285:                                              ; preds = %283, %281
  %286 = phi double [ %282, %281 ], [ %284, %283 ]
  %287 = load double, ptr %43, align 8, !tbaa !11
  %288 = fdiv double %286, %287
  store double %288, ptr %62, align 8, !tbaa !11
  %289 = call double @dlamch_(ptr noundef @.str.1)
  store double %289, ptr %50, align 8, !tbaa !11
  %290 = load double, ptr %50, align 8, !tbaa !11
  %291 = fdiv double 1.000000e+00, %290
  store double %291, ptr %56, align 8, !tbaa !11
  %292 = load ptr, ptr %19, align 8, !tbaa !5
  %293 = load i32, ptr %292, align 4, !tbaa !9
  %294 = sub nsw i32 %293, 1
  %295 = sitofp i32 %294 to double
  %296 = load double, ptr %60, align 8, !tbaa !11
  %297 = fmul double %295, %296
  %298 = load ptr, ptr %28, align 8, !tbaa !5
  %299 = load double, ptr %298, align 8, !tbaa !11
  %300 = load double, ptr %68, align 8, !tbaa !11
  %301 = fmul double %299, %300
  %302 = fdiv double %297, %301
  store double %302, ptr %42, align 8, !tbaa !11
  %303 = load ptr, ptr %19, align 8, !tbaa !5
  %304 = load i32, ptr %303, align 4, !tbaa !9
  %305 = sub nsw i32 %304, 1
  %306 = sitofp i32 %305 to double
  %307 = load double, ptr %60, align 8, !tbaa !11
  %308 = fmul double %306, %307
  %309 = load ptr, ptr %28, align 8, !tbaa !5
  %310 = load double, ptr %309, align 8, !tbaa !11
  %311 = load double, ptr %68, align 8, !tbaa !11
  %312 = call double @sqrt(double noundef %311) #5
  %313 = fmul double %310, %312
  %314 = fdiv double %308, %313
  store double %314, ptr %48, align 8, !tbaa !11
  %315 = load double, ptr %61, align 8, !tbaa !11
  store double %315, ptr %55, align 8, !tbaa !11
  store i32 0, ptr %47, align 4, !tbaa !9
  %316 = load ptr, ptr %28, align 8, !tbaa !5
  %317 = load double, ptr %316, align 8, !tbaa !11
  %318 = fmul double %317, 8.000000e+00
  store double %318, ptr %41, align 8, !tbaa !11
  br label %319

319:                                              ; preds = %1075, %1060, %285
  store i32 0, ptr %66, align 4, !tbaa !9
  store i32 0, ptr %67, align 4, !tbaa !9
  %320 = load double, ptr %52, align 8, !tbaa !11
  %321 = load double, ptr %58, align 8, !tbaa !11
  %322 = fcmp ole double %320, %321
  br i1 %322, label %323, label %325

323:                                              ; preds = %319
  %324 = load double, ptr %52, align 8, !tbaa !11
  br label %327

325:                                              ; preds = %319
  %326 = load double, ptr %58, align 8, !tbaa !11
  br label %327

327:                                              ; preds = %325, %323
  %328 = phi double [ %324, %323 ], [ %326, %325 ]
  store double %328, ptr %58, align 8, !tbaa !11
  %329 = load double, ptr %53, align 8, !tbaa !11
  %330 = load double, ptr %62, align 8, !tbaa !11
  %331 = fcmp ole double %329, %330
  br i1 %331, label %332, label %334

332:                                              ; preds = %327
  %333 = load double, ptr %53, align 8, !tbaa !11
  br label %336

334:                                              ; preds = %327
  %335 = load double, ptr %62, align 8, !tbaa !11
  br label %336

336:                                              ; preds = %334, %332
  %337 = phi double [ %333, %332 ], [ %335, %334 ]
  store double %337, ptr %62, align 8, !tbaa !11
  %338 = load double, ptr %61, align 8, !tbaa !11
  %339 = fneg double %338
  store double %339, ptr %50, align 8, !tbaa !11
  %340 = load ptr, ptr %20, align 8, !tbaa !5
  %341 = getelementptr inbounds double, ptr %340, i64 1
  %342 = load double, ptr %341, align 8, !tbaa !11
  %343 = load double, ptr %50, align 8, !tbaa !11
  %344 = fadd double %342, %343
  %345 = load ptr, ptr %33, align 8, !tbaa !5
  %346 = getelementptr inbounds double, ptr %345, i64 1
  store double %344, ptr %346, align 8, !tbaa !11
  %347 = load ptr, ptr %33, align 8, !tbaa !5
  %348 = getelementptr inbounds double, ptr %347, i64 1
  %349 = load double, ptr %348, align 8, !tbaa !11
  %350 = fcmp oge double %349, 0.000000e+00
  br i1 %350, label %351, label %355

351:                                              ; preds = %336
  %352 = load ptr, ptr %33, align 8, !tbaa !5
  %353 = getelementptr inbounds double, ptr %352, i64 1
  %354 = load double, ptr %353, align 8, !tbaa !11
  br label %360

355:                                              ; preds = %336
  %356 = load ptr, ptr %33, align 8, !tbaa !5
  %357 = getelementptr inbounds double, ptr %356, i64 1
  %358 = load double, ptr %357, align 8, !tbaa !11
  %359 = fneg double %358
  br label %360

360:                                              ; preds = %355, %351
  %361 = phi double [ %354, %351 ], [ %359, %355 ]
  %362 = load ptr, ptr %31, align 8, !tbaa !5
  %363 = load double, ptr %362, align 8, !tbaa !11
  %364 = fcmp olt double %361, %363
  br i1 %364, label %365, label %371

365:                                              ; preds = %360
  %366 = load ptr, ptr %31, align 8, !tbaa !5
  %367 = load double, ptr %366, align 8, !tbaa !11
  %368 = fneg double %367
  %369 = load ptr, ptr %33, align 8, !tbaa !5
  %370 = getelementptr inbounds double, ptr %369, i64 1
  store double %368, ptr %370, align 8, !tbaa !11
  store i32 1, ptr %66, align 4, !tbaa !9
  br label %371

371:                                              ; preds = %365, %360
  %372 = load ptr, ptr %33, align 8, !tbaa !5
  %373 = getelementptr inbounds double, ptr %372, i64 1
  %374 = load double, ptr %373, align 8, !tbaa !11
  %375 = fcmp oge double %374, 0.000000e+00
  br i1 %375, label %376, label %380

376:                                              ; preds = %371
  %377 = load ptr, ptr %33, align 8, !tbaa !5
  %378 = getelementptr inbounds double, ptr %377, i64 1
  %379 = load double, ptr %378, align 8, !tbaa !11
  br label %385

380:                                              ; preds = %371
  %381 = load ptr, ptr %33, align 8, !tbaa !5
  %382 = getelementptr inbounds double, ptr %381, i64 1
  %383 = load double, ptr %382, align 8, !tbaa !11
  %384 = fneg double %383
  br label %385

385:                                              ; preds = %380, %376
  %386 = phi double [ %379, %376 ], [ %384, %380 ]
  store double %386, ptr %71, align 8, !tbaa !11
  %387 = load ptr, ptr %19, align 8, !tbaa !5
  %388 = load i32, ptr %387, align 4, !tbaa !9
  %389 = sub nsw i32 %388, 1
  store i32 %389, ptr %37, align 4, !tbaa !9
  store i32 1, ptr %49, align 4, !tbaa !9
  br label %390

390:                                              ; preds = %491, %385
  %391 = load i32, ptr %49, align 4, !tbaa !9
  %392 = load i32, ptr %37, align 4, !tbaa !9
  %393 = icmp sle i32 %391, %392
  br i1 %393, label %394, label %494

394:                                              ; preds = %390
  %395 = load ptr, ptr %22, align 8, !tbaa !5
  %396 = load i32, ptr %49, align 4, !tbaa !9
  %397 = sext i32 %396 to i64
  %398 = getelementptr inbounds double, ptr %395, i64 %397
  %399 = load double, ptr %398, align 8, !tbaa !11
  %400 = load ptr, ptr %33, align 8, !tbaa !5
  %401 = load i32, ptr %49, align 4, !tbaa !9
  %402 = sext i32 %401 to i64
  %403 = getelementptr inbounds double, ptr %400, i64 %402
  %404 = load double, ptr %403, align 8, !tbaa !11
  %405 = fdiv double %399, %404
  %406 = load ptr, ptr %34, align 8, !tbaa !5
  %407 = load i32, ptr %49, align 4, !tbaa !9
  %408 = sext i32 %407 to i64
  %409 = getelementptr inbounds double, ptr %406, i64 %408
  store double %405, ptr %409, align 8, !tbaa !11
  %410 = load double, ptr %50, align 8, !tbaa !11
  %411 = load ptr, ptr %34, align 8, !tbaa !5
  %412 = load i32, ptr %49, align 4, !tbaa !9
  %413 = sext i32 %412 to i64
  %414 = getelementptr inbounds double, ptr %411, i64 %413
  %415 = load double, ptr %414, align 8, !tbaa !11
  %416 = fmul double %410, %415
  %417 = load ptr, ptr %21, align 8, !tbaa !5
  %418 = load i32, ptr %49, align 4, !tbaa !9
  %419 = sext i32 %418 to i64
  %420 = getelementptr inbounds double, ptr %417, i64 %419
  %421 = load double, ptr %420, align 8, !tbaa !11
  %422 = load double, ptr %61, align 8, !tbaa !11
  %423 = fneg double %422
  %424 = call double @llvm.fmuladd.f64(double %416, double %421, double %423)
  store double %424, ptr %50, align 8, !tbaa !11
  %425 = load ptr, ptr %20, align 8, !tbaa !5
  %426 = load i32, ptr %49, align 4, !tbaa !9
  %427 = add nsw i32 %426, 1
  %428 = sext i32 %427 to i64
  %429 = getelementptr inbounds double, ptr %425, i64 %428
  %430 = load double, ptr %429, align 8, !tbaa !11
  %431 = load double, ptr %50, align 8, !tbaa !11
  %432 = fadd double %430, %431
  %433 = load ptr, ptr %33, align 8, !tbaa !5
  %434 = load i32, ptr %49, align 4, !tbaa !9
  %435 = add nsw i32 %434, 1
  %436 = sext i32 %435 to i64
  %437 = getelementptr inbounds double, ptr %433, i64 %436
  store double %432, ptr %437, align 8, !tbaa !11
  %438 = load ptr, ptr %33, align 8, !tbaa !5
  %439 = load i32, ptr %49, align 4, !tbaa !9
  %440 = add nsw i32 %439, 1
  %441 = sext i32 %440 to i64
  %442 = getelementptr inbounds double, ptr %438, i64 %441
  %443 = load double, ptr %442, align 8, !tbaa !11
  store double %443, ptr %38, align 8, !tbaa !11
  %444 = load double, ptr %38, align 8, !tbaa !11
  %445 = fcmp oge double %444, 0.000000e+00
  br i1 %445, label %446, label %448

446:                                              ; preds = %394
  %447 = load double, ptr %38, align 8, !tbaa !11
  br label %451

448:                                              ; preds = %394
  %449 = load double, ptr %38, align 8, !tbaa !11
  %450 = fneg double %449
  br label %451

451:                                              ; preds = %448, %446
  %452 = phi double [ %447, %446 ], [ %450, %448 ]
  %453 = load ptr, ptr %31, align 8, !tbaa !5
  %454 = load double, ptr %453, align 8, !tbaa !11
  %455 = fcmp olt double %452, %454
  br i1 %455, label %456, label %465

456:                                              ; preds = %451
  %457 = load ptr, ptr %31, align 8, !tbaa !5
  %458 = load double, ptr %457, align 8, !tbaa !11
  %459 = fneg double %458
  %460 = load ptr, ptr %33, align 8, !tbaa !5
  %461 = load i32, ptr %49, align 4, !tbaa !9
  %462 = add nsw i32 %461, 1
  %463 = sext i32 %462 to i64
  %464 = getelementptr inbounds double, ptr %460, i64 %463
  store double %459, ptr %464, align 8, !tbaa !11
  store i32 1, ptr %66, align 4, !tbaa !9
  br label %465

465:                                              ; preds = %456, %451
  %466 = load double, ptr %71, align 8, !tbaa !11
  store double %466, ptr %39, align 8, !tbaa !11
  %467 = load ptr, ptr %33, align 8, !tbaa !5
  %468 = load i32, ptr %49, align 4, !tbaa !9
  %469 = add nsw i32 %468, 1
  %470 = sext i32 %469 to i64
  %471 = getelementptr inbounds double, ptr %467, i64 %470
  %472 = load double, ptr %471, align 8, !tbaa !11
  store double %472, ptr %38, align 8, !tbaa !11
  %473 = load double, ptr %38, align 8, !tbaa !11
  %474 = fcmp oge double %473, 0.000000e+00
  br i1 %474, label %475, label %477

475:                                              ; preds = %465
  %476 = load double, ptr %38, align 8, !tbaa !11
  br label %480

477:                                              ; preds = %465
  %478 = load double, ptr %38, align 8, !tbaa !11
  %479 = fneg double %478
  br label %480

480:                                              ; preds = %477, %475
  %481 = phi double [ %476, %475 ], [ %479, %477 ]
  store double %481, ptr %40, align 8, !tbaa !11
  %482 = load double, ptr %39, align 8, !tbaa !11
  %483 = load double, ptr %40, align 8, !tbaa !11
  %484 = fcmp oge double %482, %483
  br i1 %484, label %485, label %487

485:                                              ; preds = %480
  %486 = load double, ptr %39, align 8, !tbaa !11
  br label %489

487:                                              ; preds = %480
  %488 = load double, ptr %40, align 8, !tbaa !11
  br label %489

489:                                              ; preds = %487, %485
  %490 = phi double [ %486, %485 ], [ %488, %487 ]
  store double %490, ptr %71, align 8, !tbaa !11
  br label %491

491:                                              ; preds = %489
  %492 = load i32, ptr %49, align 4, !tbaa !9
  %493 = add nsw i32 %492, 1
  store i32 %493, ptr %49, align 4, !tbaa !9
  br label %390, !llvm.loop !13

494:                                              ; preds = %390
  %495 = load i32, ptr %66, align 4, !tbaa !9
  %496 = icmp ne i32 %495, 0
  br i1 %496, label %500, label %497

497:                                              ; preds = %494
  %498 = call i32 @disnan_(ptr noundef %71)
  %499 = icmp ne i32 %498, 0
  br label %500

500:                                              ; preds = %497, %494
  %501 = phi i1 [ true, %494 ], [ %499, %497 ]
  %502 = zext i1 %501 to i32
  store i32 %502, ptr %66, align 4, !tbaa !9
  %503 = load i32, ptr %63, align 4, !tbaa !9
  %504 = icmp ne i32 %503, 0
  br i1 %504, label %512, label %505

505:                                              ; preds = %500
  %506 = load double, ptr %71, align 8, !tbaa !11
  %507 = load double, ptr %41, align 8, !tbaa !11
  %508 = fcmp ole double %506, %507
  br i1 %508, label %509, label %515

509:                                              ; preds = %505
  %510 = load i32, ptr %66, align 4, !tbaa !9
  %511 = icmp ne i32 %510, 0
  br i1 %511, label %515, label %512

512:                                              ; preds = %509, %500
  %513 = load double, ptr %61, align 8, !tbaa !11
  %514 = load ptr, ptr %32, align 8, !tbaa !5
  store double %513, ptr %514, align 8, !tbaa !11
  store i32 1, ptr %54, align 4, !tbaa !9
  br label %1080

515:                                              ; preds = %509, %505
  %516 = load double, ptr %64, align 8, !tbaa !11
  %517 = fneg double %516
  store double %517, ptr %50, align 8, !tbaa !11
  %518 = load ptr, ptr %20, align 8, !tbaa !5
  %519 = getelementptr inbounds double, ptr %518, i64 1
  %520 = load double, ptr %519, align 8, !tbaa !11
  %521 = load double, ptr %50, align 8, !tbaa !11
  %522 = fadd double %520, %521
  %523 = load ptr, ptr %35, align 8, !tbaa !5
  %524 = getelementptr inbounds double, ptr %523, i64 1
  store double %522, ptr %524, align 8, !tbaa !11
  %525 = load ptr, ptr %35, align 8, !tbaa !5
  %526 = getelementptr inbounds double, ptr %525, i64 1
  %527 = load double, ptr %526, align 8, !tbaa !11
  %528 = fcmp oge double %527, 0.000000e+00
  br i1 %528, label %529, label %533

529:                                              ; preds = %515
  %530 = load ptr, ptr %35, align 8, !tbaa !5
  %531 = getelementptr inbounds double, ptr %530, i64 1
  %532 = load double, ptr %531, align 8, !tbaa !11
  br label %538

533:                                              ; preds = %515
  %534 = load ptr, ptr %35, align 8, !tbaa !5
  %535 = getelementptr inbounds double, ptr %534, i64 1
  %536 = load double, ptr %535, align 8, !tbaa !11
  %537 = fneg double %536
  br label %538

538:                                              ; preds = %533, %529
  %539 = phi double [ %532, %529 ], [ %537, %533 ]
  %540 = load ptr, ptr %31, align 8, !tbaa !5
  %541 = load double, ptr %540, align 8, !tbaa !11
  %542 = fcmp olt double %539, %541
  br i1 %542, label %543, label %549

543:                                              ; preds = %538
  %544 = load ptr, ptr %31, align 8, !tbaa !5
  %545 = load double, ptr %544, align 8, !tbaa !11
  %546 = fneg double %545
  %547 = load ptr, ptr %35, align 8, !tbaa !5
  %548 = getelementptr inbounds double, ptr %547, i64 1
  store double %546, ptr %548, align 8, !tbaa !11
  store i32 1, ptr %67, align 4, !tbaa !9
  br label %549

549:                                              ; preds = %543, %538
  %550 = load ptr, ptr %35, align 8, !tbaa !5
  %551 = getelementptr inbounds double, ptr %550, i64 1
  %552 = load double, ptr %551, align 8, !tbaa !11
  %553 = fcmp oge double %552, 0.000000e+00
  br i1 %553, label %554, label %558

554:                                              ; preds = %549
  %555 = load ptr, ptr %35, align 8, !tbaa !5
  %556 = getelementptr inbounds double, ptr %555, i64 1
  %557 = load double, ptr %556, align 8, !tbaa !11
  br label %563

558:                                              ; preds = %549
  %559 = load ptr, ptr %35, align 8, !tbaa !5
  %560 = getelementptr inbounds double, ptr %559, i64 1
  %561 = load double, ptr %560, align 8, !tbaa !11
  %562 = fneg double %561
  br label %563

563:                                              ; preds = %558, %554
  %564 = phi double [ %557, %554 ], [ %562, %558 ]
  store double %564, ptr %72, align 8, !tbaa !11
  %565 = load ptr, ptr %19, align 8, !tbaa !5
  %566 = load i32, ptr %565, align 4, !tbaa !9
  %567 = sub nsw i32 %566, 1
  store i32 %567, ptr %37, align 4, !tbaa !9
  store i32 1, ptr %49, align 4, !tbaa !9
  br label %568

568:                                              ; preds = %675, %563
  %569 = load i32, ptr %49, align 4, !tbaa !9
  %570 = load i32, ptr %37, align 4, !tbaa !9
  %571 = icmp sle i32 %569, %570
  br i1 %571, label %572, label %678

572:                                              ; preds = %568
  %573 = load ptr, ptr %22, align 8, !tbaa !5
  %574 = load i32, ptr %49, align 4, !tbaa !9
  %575 = sext i32 %574 to i64
  %576 = getelementptr inbounds double, ptr %573, i64 %575
  %577 = load double, ptr %576, align 8, !tbaa !11
  %578 = load ptr, ptr %35, align 8, !tbaa !5
  %579 = load i32, ptr %49, align 4, !tbaa !9
  %580 = sext i32 %579 to i64
  %581 = getelementptr inbounds double, ptr %578, i64 %580
  %582 = load double, ptr %581, align 8, !tbaa !11
  %583 = fdiv double %577, %582
  %584 = load ptr, ptr %35, align 8, !tbaa !5
  %585 = load ptr, ptr %19, align 8, !tbaa !5
  %586 = load i32, ptr %585, align 4, !tbaa !9
  %587 = load i32, ptr %49, align 4, !tbaa !9
  %588 = add nsw i32 %586, %587
  %589 = sext i32 %588 to i64
  %590 = getelementptr inbounds double, ptr %584, i64 %589
  store double %583, ptr %590, align 8, !tbaa !11
  %591 = load double, ptr %50, align 8, !tbaa !11
  %592 = load ptr, ptr %35, align 8, !tbaa !5
  %593 = load ptr, ptr %19, align 8, !tbaa !5
  %594 = load i32, ptr %593, align 4, !tbaa !9
  %595 = load i32, ptr %49, align 4, !tbaa !9
  %596 = add nsw i32 %594, %595
  %597 = sext i32 %596 to i64
  %598 = getelementptr inbounds double, ptr %592, i64 %597
  %599 = load double, ptr %598, align 8, !tbaa !11
  %600 = fmul double %591, %599
  %601 = load ptr, ptr %21, align 8, !tbaa !5
  %602 = load i32, ptr %49, align 4, !tbaa !9
  %603 = sext i32 %602 to i64
  %604 = getelementptr inbounds double, ptr %601, i64 %603
  %605 = load double, ptr %604, align 8, !tbaa !11
  %606 = load double, ptr %64, align 8, !tbaa !11
  %607 = fneg double %606
  %608 = call double @llvm.fmuladd.f64(double %600, double %605, double %607)
  store double %608, ptr %50, align 8, !tbaa !11
  %609 = load ptr, ptr %20, align 8, !tbaa !5
  %610 = load i32, ptr %49, align 4, !tbaa !9
  %611 = add nsw i32 %610, 1
  %612 = sext i32 %611 to i64
  %613 = getelementptr inbounds double, ptr %609, i64 %612
  %614 = load double, ptr %613, align 8, !tbaa !11
  %615 = load double, ptr %50, align 8, !tbaa !11
  %616 = fadd double %614, %615
  %617 = load ptr, ptr %35, align 8, !tbaa !5
  %618 = load i32, ptr %49, align 4, !tbaa !9
  %619 = add nsw i32 %618, 1
  %620 = sext i32 %619 to i64
  %621 = getelementptr inbounds double, ptr %617, i64 %620
  store double %616, ptr %621, align 8, !tbaa !11
  %622 = load ptr, ptr %35, align 8, !tbaa !5
  %623 = load i32, ptr %49, align 4, !tbaa !9
  %624 = add nsw i32 %623, 1
  %625 = sext i32 %624 to i64
  %626 = getelementptr inbounds double, ptr %622, i64 %625
  %627 = load double, ptr %626, align 8, !tbaa !11
  store double %627, ptr %38, align 8, !tbaa !11
  %628 = load double, ptr %38, align 8, !tbaa !11
  %629 = fcmp oge double %628, 0.000000e+00
  br i1 %629, label %630, label %632

630:                                              ; preds = %572
  %631 = load double, ptr %38, align 8, !tbaa !11
  br label %635

632:                                              ; preds = %572
  %633 = load double, ptr %38, align 8, !tbaa !11
  %634 = fneg double %633
  br label %635

635:                                              ; preds = %632, %630
  %636 = phi double [ %631, %630 ], [ %634, %632 ]
  %637 = load ptr, ptr %31, align 8, !tbaa !5
  %638 = load double, ptr %637, align 8, !tbaa !11
  %639 = fcmp olt double %636, %638
  br i1 %639, label %640, label %649

640:                                              ; preds = %635
  %641 = load ptr, ptr %31, align 8, !tbaa !5
  %642 = load double, ptr %641, align 8, !tbaa !11
  %643 = fneg double %642
  %644 = load ptr, ptr %35, align 8, !tbaa !5
  %645 = load i32, ptr %49, align 4, !tbaa !9
  %646 = add nsw i32 %645, 1
  %647 = sext i32 %646 to i64
  %648 = getelementptr inbounds double, ptr %644, i64 %647
  store double %643, ptr %648, align 8, !tbaa !11
  store i32 1, ptr %67, align 4, !tbaa !9
  br label %649

649:                                              ; preds = %640, %635
  %650 = load double, ptr %72, align 8, !tbaa !11
  store double %650, ptr %39, align 8, !tbaa !11
  %651 = load ptr, ptr %35, align 8, !tbaa !5
  %652 = load i32, ptr %49, align 4, !tbaa !9
  %653 = add nsw i32 %652, 1
  %654 = sext i32 %653 to i64
  %655 = getelementptr inbounds double, ptr %651, i64 %654
  %656 = load double, ptr %655, align 8, !tbaa !11
  store double %656, ptr %38, align 8, !tbaa !11
  %657 = load double, ptr %38, align 8, !tbaa !11
  %658 = fcmp oge double %657, 0.000000e+00
  br i1 %658, label %659, label %661

659:                                              ; preds = %649
  %660 = load double, ptr %38, align 8, !tbaa !11
  br label %664

661:                                              ; preds = %649
  %662 = load double, ptr %38, align 8, !tbaa !11
  %663 = fneg double %662
  br label %664

664:                                              ; preds = %661, %659
  %665 = phi double [ %660, %659 ], [ %663, %661 ]
  store double %665, ptr %40, align 8, !tbaa !11
  %666 = load double, ptr %39, align 8, !tbaa !11
  %667 = load double, ptr %40, align 8, !tbaa !11
  %668 = fcmp oge double %666, %667
  br i1 %668, label %669, label %671

669:                                              ; preds = %664
  %670 = load double, ptr %39, align 8, !tbaa !11
  br label %673

671:                                              ; preds = %664
  %672 = load double, ptr %40, align 8, !tbaa !11
  br label %673

673:                                              ; preds = %671, %669
  %674 = phi double [ %670, %669 ], [ %672, %671 ]
  store double %674, ptr %72, align 8, !tbaa !11
  br label %675

675:                                              ; preds = %673
  %676 = load i32, ptr %49, align 4, !tbaa !9
  %677 = add nsw i32 %676, 1
  store i32 %677, ptr %49, align 4, !tbaa !9
  br label %568, !llvm.loop !15

678:                                              ; preds = %568
  %679 = load i32, ptr %67, align 4, !tbaa !9
  %680 = icmp ne i32 %679, 0
  br i1 %680, label %684, label %681

681:                                              ; preds = %678
  %682 = call i32 @disnan_(ptr noundef %72)
  %683 = icmp ne i32 %682, 0
  br label %684

684:                                              ; preds = %681, %678
  %685 = phi i1 [ true, %678 ], [ %683, %681 ]
  %686 = zext i1 %685 to i32
  store i32 %686, ptr %67, align 4, !tbaa !9
  %687 = load i32, ptr %63, align 4, !tbaa !9
  %688 = icmp ne i32 %687, 0
  br i1 %688, label %696, label %689

689:                                              ; preds = %684
  %690 = load double, ptr %72, align 8, !tbaa !11
  %691 = load double, ptr %41, align 8, !tbaa !11
  %692 = fcmp ole double %690, %691
  br i1 %692, label %693, label %699

693:                                              ; preds = %689
  %694 = load i32, ptr %67, align 4, !tbaa !9
  %695 = icmp ne i32 %694, 0
  br i1 %695, label %699, label %696

696:                                              ; preds = %693, %684
  %697 = load double, ptr %64, align 8, !tbaa !11
  %698 = load ptr, ptr %32, align 8, !tbaa !5
  store double %697, ptr %698, align 8, !tbaa !11
  store i32 2, ptr %54, align 4, !tbaa !9
  br label %1080

699:                                              ; preds = %693, %689
  %700 = load i32, ptr %66, align 4, !tbaa !9
  %701 = icmp ne i32 %700, 0
  br i1 %701, label %702, label %706

702:                                              ; preds = %699
  %703 = load i32, ptr %67, align 4, !tbaa !9
  %704 = icmp ne i32 %703, 0
  br i1 %704, label %705, label %706

705:                                              ; preds = %702
  br label %1028

706:                                              ; preds = %702, %699
  %707 = load i32, ptr %66, align 4, !tbaa !9
  %708 = icmp ne i32 %707, 0
  br i1 %708, label %717, label %709

709:                                              ; preds = %706
  store i32 1, ptr %45, align 4, !tbaa !9
  %710 = load double, ptr %71, align 8, !tbaa !11
  %711 = load double, ptr %56, align 8, !tbaa !11
  %712 = fcmp ole double %710, %711
  br i1 %712, label %713, label %716

713:                                              ; preds = %709
  %714 = load double, ptr %71, align 8, !tbaa !11
  store double %714, ptr %56, align 8, !tbaa !11
  %715 = load double, ptr %61, align 8, !tbaa !11
  store double %715, ptr %55, align 8, !tbaa !11
  br label %716

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

717:                                              ; preds = %716, %706
  %718 = load i32, ptr %67, align 4, !tbaa !9
  %719 = icmp ne i32 %718, 0
  br i1 %719, label %736, label %720

720:                                              ; preds = %717
  %721 = load i32, ptr %66, align 4, !tbaa !9
  %722 = icmp ne i32 %721, 0
  br i1 %722, label %727, label %723

723:                                              ; preds = %720
  %724 = load double, ptr %72, align 8, !tbaa !11
  %725 = load double, ptr %71, align 8, !tbaa !11
  %726 = fcmp ole double %724, %725
  br i1 %726, label %727, label %728

727:                                              ; preds = %723, %720
  store i32 2, ptr %45, align 4, !tbaa !9
  br label %728

728:                                              ; preds = %727, %723
  %729 = load double, ptr %72, align 8, !tbaa !11
  %730 = load double, ptr %56, align 8, !tbaa !11
  %731 = fcmp ole double %729, %730
  br i1 %731, label %732, label %735

732:                                              ; preds = %728
  %733 = load double, ptr %72, align 8, !tbaa !11
  store double %733, ptr %56, align 8, !tbaa !11
  %734 = load double, ptr %64, align 8, !tbaa !11
  store double %734, ptr %55, align 8, !tbaa !11
  br label %735

735:                                              ; preds = %732, %728
  br label %736

736:                                              ; preds = %735, %717
  br label %737

737:                                              ; preds = %736
  %738 = load double, ptr %65, align 8, !tbaa !11
  %739 = load double, ptr %60, align 8, !tbaa !11
  %740 = fdiv double %739, 1.280000e+02
  %741 = fcmp olt double %738, %740
  br i1 %741, label %742, label %761

742:                                              ; preds = %737
  %743 = load double, ptr %71, align 8, !tbaa !11
  %744 = load double, ptr %72, align 8, !tbaa !11
  %745 = fcmp ole double %743, %744
  br i1 %745, label %746, label %748

746:                                              ; preds = %742
  %747 = load double, ptr %71, align 8, !tbaa !11
  br label %750

748:                                              ; preds = %742
  %749 = load double, ptr %72, align 8, !tbaa !11
  br label %750

750:                                              ; preds = %748, %746
  %751 = phi double [ %747, %746 ], [ %749, %748 ]
  %752 = load double, ptr %48, align 8, !tbaa !11
  %753 = fcmp olt double %751, %752
  br i1 %753, label %754, label %761

754:                                              ; preds = %750
  %755 = load i32, ptr %66, align 4, !tbaa !9
  %756 = icmp ne i32 %755, 0
  br i1 %756, label %761, label %757

757:                                              ; preds = %754
  %758 = load i32, ptr %67, align 4, !tbaa !9
  %759 = icmp ne i32 %758, 0
  br i1 %759, label %761, label %760

760:                                              ; preds = %757
  store i32 1, ptr %57, align 4, !tbaa !9
  br label %762

761:                                              ; preds = %757, %754, %750, %737
  store i32 0, ptr %57, align 4, !tbaa !9
  br label %762

762:                                              ; preds = %761, %760
  store i32 1, ptr %70, align 4, !tbaa !9
  %763 = load i32, ptr %70, align 4, !tbaa !9
  %764 = icmp ne i32 %763, 0
  br i1 %764, label %765, label %1027

765:                                              ; preds = %762
  %766 = load i32, ptr %57, align 4, !tbaa !9
  %767 = icmp ne i32 %766, 0
  br i1 %767, label %768, label %1027

768:                                              ; preds = %765
  %769 = load i32, ptr %45, align 4, !tbaa !9
  %770 = icmp eq i32 %769, 1
  br i1 %770, label %771, label %901

771:                                              ; preds = %768
  %772 = load ptr, ptr %33, align 8, !tbaa !5
  %773 = load ptr, ptr %19, align 8, !tbaa !5
  %774 = load i32, ptr %773, align 4, !tbaa !9
  %775 = sext i32 %774 to i64
  %776 = getelementptr inbounds double, ptr %772, i64 %775
  %777 = load double, ptr %776, align 8, !tbaa !11
  store double %777, ptr %38, align 8, !tbaa !11
  %778 = load double, ptr %38, align 8, !tbaa !11
  %779 = fcmp oge double %778, 0.000000e+00
  br i1 %779, label %780, label %782

780:                                              ; preds = %771
  %781 = load double, ptr %38, align 8, !tbaa !11
  br label %785

782:                                              ; preds = %771
  %783 = load double, ptr %38, align 8, !tbaa !11
  %784 = fneg double %783
  br label %785

785:                                              ; preds = %782, %780
  %786 = phi double [ %781, %780 ], [ %784, %782 ]
  store double %786, ptr %69, align 8, !tbaa !11
  store double 1.000000e+00, ptr %75, align 8, !tbaa !11
  store double 1.000000e+00, ptr %46, align 8, !tbaa !11
  store double 1.000000e+00, ptr %44, align 8, !tbaa !11
  %787 = load ptr, ptr %19, align 8, !tbaa !5
  %788 = load i32, ptr %787, align 4, !tbaa !9
  %789 = sub nsw i32 %788, 1
  store i32 %789, ptr %49, align 4, !tbaa !9
  br label %790

790:                                              ; preds = %884, %785
  %791 = load i32, ptr %49, align 4, !tbaa !9
  %792 = icmp sge i32 %791, 1
  br i1 %792, label %793, label %887

793:                                              ; preds = %790
  %794 = load double, ptr %46, align 8, !tbaa !11
  %795 = load double, ptr %68, align 8, !tbaa !11
  %796 = fcmp ole double %794, %795
  br i1 %796, label %797, label %831

797:                                              ; preds = %793
  %798 = load ptr, ptr %33, align 8, !tbaa !5
  %799 = load i32, ptr %49, align 4, !tbaa !9
  %800 = add nsw i32 %799, 1
  %801 = sext i32 %800 to i64
  %802 = getelementptr inbounds double, ptr %798, i64 %801
  %803 = load double, ptr %802, align 8, !tbaa !11
  %804 = load ptr, ptr %35, align 8, !tbaa !5
  %805 = load ptr, ptr %19, align 8, !tbaa !5
  %806 = load i32, ptr %805, align 4, !tbaa !9
  %807 = load i32, ptr %49, align 4, !tbaa !9
  %808 = add nsw i32 %806, %807
  %809 = add nsw i32 %808, 1
  %810 = sext i32 %809 to i64
  %811 = getelementptr inbounds double, ptr %804, i64 %810
  %812 = load double, ptr %811, align 8, !tbaa !11
  %813 = fmul double %803, %812
  %814 = load ptr, ptr %33, align 8, !tbaa !5
  %815 = load i32, ptr %49, align 4, !tbaa !9
  %816 = sext i32 %815 to i64
  %817 = getelementptr inbounds double, ptr %814, i64 %816
  %818 = load double, ptr %817, align 8, !tbaa !11
  %819 = load ptr, ptr %35, align 8, !tbaa !5
  %820 = load ptr, ptr %19, align 8, !tbaa !5
  %821 = load i32, ptr %820, align 4, !tbaa !9
  %822 = load i32, ptr %49, align 4, !tbaa !9
  %823 = add nsw i32 %821, %822
  %824 = sext i32 %823 to i64
  %825 = getelementptr inbounds double, ptr %819, i64 %824
  %826 = load double, ptr %825, align 8, !tbaa !11
  %827 = fmul double %818, %826
  %828 = fdiv double %813, %827
  %829 = load double, ptr %44, align 8, !tbaa !11
  %830 = fmul double %828, %829
  store double %830, ptr %46, align 8, !tbaa !11
  br label %851

831:                                              ; preds = %793
  %832 = load ptr, ptr %35, align 8, !tbaa !5
  %833 = load ptr, ptr %19, align 8, !tbaa !5
  %834 = load i32, ptr %833, align 4, !tbaa !9
  %835 = load i32, ptr %49, align 4, !tbaa !9
  %836 = add nsw i32 %834, %835
  %837 = sext i32 %836 to i64
  %838 = getelementptr inbounds double, ptr %832, i64 %837
  %839 = load double, ptr %838, align 8, !tbaa !11
  store double %839, ptr %38, align 8, !tbaa !11
  %840 = load double, ptr %38, align 8, !tbaa !11
  %841 = fcmp oge double %840, 0.000000e+00
  br i1 %841, label %842, label %844

842:                                              ; preds = %831
  %843 = load double, ptr %38, align 8, !tbaa !11
  br label %847

844:                                              ; preds = %831
  %845 = load double, ptr %38, align 8, !tbaa !11
  %846 = fneg double %845
  br label %847

847:                                              ; preds = %844, %842
  %848 = phi double [ %843, %842 ], [ %846, %844 ]
  %849 = load double, ptr %46, align 8, !tbaa !11
  %850 = fmul double %849, %848
  store double %850, ptr %46, align 8, !tbaa !11
  br label %851

851:                                              ; preds = %847, %797
  %852 = load double, ptr %46, align 8, !tbaa !11
  store double %852, ptr %44, align 8, !tbaa !11
  %853 = load double, ptr %46, align 8, !tbaa !11
  store double %853, ptr %38, align 8, !tbaa !11
  %854 = load double, ptr %38, align 8, !tbaa !11
  %855 = load double, ptr %38, align 8, !tbaa !11
  %856 = load double, ptr %75, align 8, !tbaa !11
  %857 = call double @llvm.fmuladd.f64(double %854, double %855, double %856)
  store double %857, ptr %75, align 8, !tbaa !11
  %858 = load double, ptr %69, align 8, !tbaa !11
  store double %858, ptr %39, align 8, !tbaa !11
  %859 = load ptr, ptr %33, align 8, !tbaa !5
  %860 = load i32, ptr %49, align 4, !tbaa !9
  %861 = sext i32 %860 to i64
  %862 = getelementptr inbounds double, ptr %859, i64 %861
  %863 = load double, ptr %862, align 8, !tbaa !11
  %864 = load double, ptr %46, align 8, !tbaa !11
  %865 = fmul double %863, %864
  store double %865, ptr %38, align 8, !tbaa !11
  %866 = load double, ptr %38, align 8, !tbaa !11
  %867 = fcmp oge double %866, 0.000000e+00
  br i1 %867, label %868, label %870

868:                                              ; preds = %851
  %869 = load double, ptr %38, align 8, !tbaa !11
  br label %873

870:                                              ; preds = %851
  %871 = load double, ptr %38, align 8, !tbaa !11
  %872 = fneg double %871
  br label %873

873:                                              ; preds = %870, %868
  %874 = phi double [ %869, %868 ], [ %872, %870 ]
  store double %874, ptr %40, align 8, !tbaa !11
  %875 = load double, ptr %39, align 8, !tbaa !11
  %876 = load double, ptr %40, align 8, !tbaa !11
  %877 = fcmp oge double %875, %876
  br i1 %877, label %878, label %880

878:                                              ; preds = %873
  %879 = load double, ptr %39, align 8, !tbaa !11
  br label %882

880:                                              ; preds = %873
  %881 = load double, ptr %40, align 8, !tbaa !11
  br label %882

882:                                              ; preds = %880, %878
  %883 = phi double [ %879, %878 ], [ %881, %880 ]
  store double %883, ptr %69, align 8, !tbaa !11
  br label %884

884:                                              ; preds = %882
  %885 = load i32, ptr %49, align 4, !tbaa !9
  %886 = add nsw i32 %885, -1
  store i32 %886, ptr %49, align 4, !tbaa !9
  br label %790, !llvm.loop !16

887:                                              ; preds = %790
  %888 = load double, ptr %69, align 8, !tbaa !11
  %889 = load ptr, ptr %28, align 8, !tbaa !5
  %890 = load double, ptr %889, align 8, !tbaa !11
  %891 = load double, ptr %75, align 8, !tbaa !11
  %892 = call double @sqrt(double noundef %891) #5
  %893 = fmul double %890, %892
  %894 = fdiv double %888, %893
  store double %894, ptr %73, align 8, !tbaa !11
  %895 = load double, ptr %73, align 8, !tbaa !11
  %896 = fcmp ole double %895, 8.000000e+00
  br i1 %896, label %897, label %900

897:                                              ; preds = %887
  %898 = load double, ptr %61, align 8, !tbaa !11
  %899 = load ptr, ptr %32, align 8, !tbaa !5
  store double %898, ptr %899, align 8, !tbaa !11
  store i32 1, ptr %54, align 4, !tbaa !9
  br label %1080

900:                                              ; preds = %887
  br label %1026

901:                                              ; preds = %768
  %902 = load i32, ptr %45, align 4, !tbaa !9
  %903 = icmp eq i32 %902, 2
  br i1 %903, label %904, label %1025

904:                                              ; preds = %901
  %905 = load ptr, ptr %35, align 8, !tbaa !5
  %906 = load ptr, ptr %19, align 8, !tbaa !5
  %907 = load i32, ptr %906, align 4, !tbaa !9
  %908 = sext i32 %907 to i64
  %909 = getelementptr inbounds double, ptr %905, i64 %908
  %910 = load double, ptr %909, align 8, !tbaa !11
  store double %910, ptr %38, align 8, !tbaa !11
  %911 = load double, ptr %38, align 8, !tbaa !11
  %912 = fcmp oge double %911, 0.000000e+00
  br i1 %912, label %913, label %915

913:                                              ; preds = %904
  %914 = load double, ptr %38, align 8, !tbaa !11
  br label %918

915:                                              ; preds = %904
  %916 = load double, ptr %38, align 8, !tbaa !11
  %917 = fneg double %916
  br label %918

918:                                              ; preds = %915, %913
  %919 = phi double [ %914, %913 ], [ %917, %915 ]
  store double %919, ptr %69, align 8, !tbaa !11
  store double 1.000000e+00, ptr %75, align 8, !tbaa !11
  store double 1.000000e+00, ptr %46, align 8, !tbaa !11
  store double 1.000000e+00, ptr %44, align 8, !tbaa !11
  %920 = load ptr, ptr %19, align 8, !tbaa !5
  %921 = load i32, ptr %920, align 4, !tbaa !9
  %922 = sub nsw i32 %921, 1
  store i32 %922, ptr %49, align 4, !tbaa !9
  br label %923

923:                                              ; preds = %1008, %918
  %924 = load i32, ptr %49, align 4, !tbaa !9
  %925 = icmp sge i32 %924, 1
  br i1 %925, label %926, label %1011

926:                                              ; preds = %923
  %927 = load double, ptr %46, align 8, !tbaa !11
  %928 = load double, ptr %68, align 8, !tbaa !11
  %929 = fcmp ole double %927, %928
  br i1 %929, label %930, label %958

930:                                              ; preds = %926
  %931 = load ptr, ptr %35, align 8, !tbaa !5
  %932 = load i32, ptr %49, align 4, !tbaa !9
  %933 = add nsw i32 %932, 1
  %934 = sext i32 %933 to i64
  %935 = getelementptr inbounds double, ptr %931, i64 %934
  %936 = load double, ptr %935, align 8, !tbaa !11
  %937 = load ptr, ptr %34, align 8, !tbaa !5
  %938 = load i32, ptr %49, align 4, !tbaa !9
  %939 = add nsw i32 %938, 1
  %940 = sext i32 %939 to i64
  %941 = getelementptr inbounds double, ptr %937, i64 %940
  %942 = load double, ptr %941, align 8, !tbaa !11
  %943 = fmul double %936, %942
  %944 = load ptr, ptr %35, align 8, !tbaa !5
  %945 = load i32, ptr %49, align 4, !tbaa !9
  %946 = sext i32 %945 to i64
  %947 = getelementptr inbounds double, ptr %944, i64 %946
  %948 = load double, ptr %947, align 8, !tbaa !11
  %949 = load ptr, ptr %34, align 8, !tbaa !5
  %950 = load i32, ptr %49, align 4, !tbaa !9
  %951 = sext i32 %950 to i64
  %952 = getelementptr inbounds double, ptr %949, i64 %951
  %953 = load double, ptr %952, align 8, !tbaa !11
  %954 = fmul double %948, %953
  %955 = fdiv double %943, %954
  %956 = load double, ptr %44, align 8, !tbaa !11
  %957 = fmul double %955, %956
  store double %957, ptr %46, align 8, !tbaa !11
  br label %975

958:                                              ; preds = %926
  %959 = load ptr, ptr %34, align 8, !tbaa !5
  %960 = load i32, ptr %49, align 4, !tbaa !9
  %961 = sext i32 %960 to i64
  %962 = getelementptr inbounds double, ptr %959, i64 %961
  %963 = load double, ptr %962, align 8, !tbaa !11
  store double %963, ptr %38, align 8, !tbaa !11
  %964 = load double, ptr %38, align 8, !tbaa !11
  %965 = fcmp oge double %964, 0.000000e+00
  br i1 %965, label %966, label %968

966:                                              ; preds = %958
  %967 = load double, ptr %38, align 8, !tbaa !11
  br label %971

968:                                              ; preds = %958
  %969 = load double, ptr %38, align 8, !tbaa !11
  %970 = fneg double %969
  br label %971

971:                                              ; preds = %968, %966
  %972 = phi double [ %967, %966 ], [ %970, %968 ]
  %973 = load double, ptr %46, align 8, !tbaa !11
  %974 = fmul double %973, %972
  store double %974, ptr %46, align 8, !tbaa !11
  br label %975

975:                                              ; preds = %971, %930
  %976 = load double, ptr %46, align 8, !tbaa !11
  store double %976, ptr %44, align 8, !tbaa !11
  %977 = load double, ptr %46, align 8, !tbaa !11
  store double %977, ptr %38, align 8, !tbaa !11
  %978 = load double, ptr %38, align 8, !tbaa !11
  %979 = load double, ptr %38, align 8, !tbaa !11
  %980 = load double, ptr %75, align 8, !tbaa !11
  %981 = call double @llvm.fmuladd.f64(double %978, double %979, double %980)
  store double %981, ptr %75, align 8, !tbaa !11
  %982 = load double, ptr %69, align 8, !tbaa !11
  store double %982, ptr %39, align 8, !tbaa !11
  %983 = load ptr, ptr %35, align 8, !tbaa !5
  %984 = load i32, ptr %49, align 4, !tbaa !9
  %985 = sext i32 %984 to i64
  %986 = getelementptr inbounds double, ptr %983, i64 %985
  %987 = load double, ptr %986, align 8, !tbaa !11
  %988 = load double, ptr %46, align 8, !tbaa !11
  %989 = fmul double %987, %988
  store double %989, ptr %38, align 8, !tbaa !11
  %990 = load double, ptr %38, align 8, !tbaa !11
  %991 = fcmp oge double %990, 0.000000e+00
  br i1 %991, label %992, label %994

992:                                              ; preds = %975
  %993 = load double, ptr %38, align 8, !tbaa !11
  br label %997

994:                                              ; preds = %975
  %995 = load double, ptr %38, align 8, !tbaa !11
  %996 = fneg double %995
  br label %997

997:                                              ; preds = %994, %992
  %998 = phi double [ %993, %992 ], [ %996, %994 ]
  store double %998, ptr %40, align 8, !tbaa !11
  %999 = load double, ptr %39, align 8, !tbaa !11
  %1000 = load double, ptr %40, align 8, !tbaa !11
  %1001 = fcmp oge double %999, %1000
  br i1 %1001, label %1002, label %1004

1002:                                             ; preds = %997
  %1003 = load double, ptr %39, align 8, !tbaa !11
  br label %1006

1004:                                             ; preds = %997
  %1005 = load double, ptr %40, align 8, !tbaa !11
  br label %1006

1006:                                             ; preds = %1004, %1002
  %1007 = phi double [ %1003, %1002 ], [ %1005, %1004 ]
  store double %1007, ptr %69, align 8, !tbaa !11
  br label %1008

1008:                                             ; preds = %1006
  %1009 = load i32, ptr %49, align 4, !tbaa !9
  %1010 = add nsw i32 %1009, -1
  store i32 %1010, ptr %49, align 4, !tbaa !9
  br label %923, !llvm.loop !17

1011:                                             ; preds = %923
  %1012 = load double, ptr %69, align 8, !tbaa !11
  %1013 = load ptr, ptr %28, align 8, !tbaa !5
  %1014 = load double, ptr %1013, align 8, !tbaa !11
  %1015 = load double, ptr %75, align 8, !tbaa !11
  %1016 = call double @sqrt(double noundef %1015) #5
  %1017 = fmul double %1014, %1016
  %1018 = fdiv double %1012, %1017
  store double %1018, ptr %74, align 8, !tbaa !11
  %1019 = load double, ptr %74, align 8, !tbaa !11
  %1020 = fcmp ole double %1019, 8.000000e+00
  br i1 %1020, label %1021, label %1024

1021:                                             ; preds = %1011
  %1022 = load double, ptr %64, align 8, !tbaa !11
  %1023 = load ptr, ptr %32, align 8, !tbaa !5
  store double %1022, ptr %1023, align 8, !tbaa !11
  store i32 2, ptr %54, align 4, !tbaa !9
  br label %1080

1024:                                             ; preds = %1011
  br label %1025

1025:                                             ; preds = %1024, %901
  br label %1026

1026:                                             ; preds = %1025, %900
  br label %1027

1027:                                             ; preds = %1026, %765, %762
  br label %1028

1028:                                             ; preds = %1027, %705
  %1029 = load i32, ptr %47, align 4, !tbaa !9
  %1030 = icmp slt i32 %1029, 1
  br i1 %1030, label %1031, label %1068

1031:                                             ; preds = %1028
  %1032 = load double, ptr %61, align 8, !tbaa !11
  %1033 = load double, ptr %58, align 8, !tbaa !11
  %1034 = fsub double %1032, %1033
  store double %1034, ptr %38, align 8, !tbaa !11
  %1035 = load double, ptr %61, align 8, !tbaa !11
  %1036 = load double, ptr %52, align 8, !tbaa !11
  %1037 = fsub double %1035, %1036
  store double %1037, ptr %39, align 8, !tbaa !11
  %1038 = load double, ptr %38, align 8, !tbaa !11
  %1039 = load double, ptr %39, align 8, !tbaa !11
  %1040 = fcmp oge double %1038, %1039
  br i1 %1040, label %1041, label %1043

1041:                                             ; preds = %1031
  %1042 = load double, ptr %38, align 8, !tbaa !11
  br label %1045

1043:                                             ; preds = %1031
  %1044 = load double, ptr %39, align 8, !tbaa !11
  br label %1045

1045:                                             ; preds = %1043, %1041
  %1046 = phi double [ %1042, %1041 ], [ %1044, %1043 ]
  store double %1046, ptr %61, align 8, !tbaa !11
  %1047 = load double, ptr %64, align 8, !tbaa !11
  %1048 = load double, ptr %62, align 8, !tbaa !11
  %1049 = fadd double %1047, %1048
  store double %1049, ptr %38, align 8, !tbaa !11
  %1050 = load double, ptr %64, align 8, !tbaa !11
  %1051 = load double, ptr %53, align 8, !tbaa !11
  %1052 = fadd double %1050, %1051
  store double %1052, ptr %39, align 8, !tbaa !11
  %1053 = load double, ptr %38, align 8, !tbaa !11
  %1054 = load double, ptr %39, align 8, !tbaa !11
  %1055 = fcmp ole double %1053, %1054
  br i1 %1055, label %1056, label %1058

1056:                                             ; preds = %1045
  %1057 = load double, ptr %38, align 8, !tbaa !11
  br label %1060

1058:                                             ; preds = %1045
  %1059 = load double, ptr %39, align 8, !tbaa !11
  br label %1060

1060:                                             ; preds = %1058, %1056
  %1061 = phi double [ %1057, %1056 ], [ %1059, %1058 ]
  store double %1061, ptr %64, align 8, !tbaa !11
  %1062 = load double, ptr %58, align 8, !tbaa !11
  %1063 = fmul double %1062, 2.000000e+00
  store double %1063, ptr %58, align 8, !tbaa !11
  %1064 = load double, ptr %62, align 8, !tbaa !11
  %1065 = fmul double %1064, 2.000000e+00
  store double %1065, ptr %62, align 8, !tbaa !11
  %1066 = load i32, ptr %47, align 4, !tbaa !9
  %1067 = add nsw i32 %1066, 1
  store i32 %1067, ptr %47, align 4, !tbaa !9
  br label %319

1068:                                             ; preds = %1028
  %1069 = load double, ptr %56, align 8, !tbaa !11
  %1070 = load double, ptr %42, align 8, !tbaa !11
  %1071 = fcmp olt double %1069, %1070
  br i1 %1071, label %1075, label %1072

1072:                                             ; preds = %1068
  %1073 = load i32, ptr %59, align 4, !tbaa !9
  %1074 = icmp ne i32 %1073, 0
  br i1 %1074, label %1075, label %1078

1075:                                             ; preds = %1072, %1068
  %1076 = load double, ptr %55, align 8, !tbaa !11
  store double %1076, ptr %61, align 8, !tbaa !11
  %1077 = load double, ptr %55, align 8, !tbaa !11
  store double %1077, ptr %64, align 8, !tbaa !11
  store i32 1, ptr %63, align 4, !tbaa !9
  br label %319

1078:                                             ; preds = %1072
  %1079 = load ptr, ptr %36, align 8, !tbaa !5
  store i32 1, ptr %1079, align 4, !tbaa !9
  store i32 1, ptr %76, align 4
  br label %1106

1080:                                             ; preds = %1021, %897, %696, %512
  %1081 = load i32, ptr %54, align 4, !tbaa !9
  %1082 = icmp eq i32 %1081, 1
  br i1 %1082, label %1083, label %1084

1083:                                             ; preds = %1080
  br label %1105

1084:                                             ; preds = %1080
  %1085 = load i32, ptr %54, align 4, !tbaa !9
  %1086 = icmp eq i32 %1085, 2
  br i1 %1086, label %1087, label %1104

1087:                                             ; preds = %1084
  %1088 = load ptr, ptr %19, align 8, !tbaa !5
  %1089 = load ptr, ptr %35, align 8, !tbaa !5
  %1090 = getelementptr inbounds double, ptr %1089, i64 1
  %1091 = load ptr, ptr %33, align 8, !tbaa !5
  %1092 = getelementptr inbounds double, ptr %1091, i64 1
  call void @dcopy_(ptr noundef %1088, ptr noundef %1090, ptr noundef @c__1, ptr noundef %1092, ptr noundef @c__1)
  %1093 = load ptr, ptr %19, align 8, !tbaa !5
  %1094 = load i32, ptr %1093, align 4, !tbaa !9
  %1095 = sub nsw i32 %1094, 1
  store i32 %1095, ptr %37, align 4, !tbaa !9
  %1096 = load ptr, ptr %35, align 8, !tbaa !5
  %1097 = load ptr, ptr %19, align 8, !tbaa !5
  %1098 = load i32, ptr %1097, align 4, !tbaa !9
  %1099 = add nsw i32 %1098, 1
  %1100 = sext i32 %1099 to i64
  %1101 = getelementptr inbounds double, ptr %1096, i64 %1100
  %1102 = load ptr, ptr %34, align 8, !tbaa !5
  %1103 = getelementptr inbounds double, ptr %1102, i64 1
  call void @dcopy_(ptr noundef %37, ptr noundef %1101, ptr noundef @c__1, ptr noundef %1103, ptr noundef @c__1)
  br label %1104

1104:                                             ; preds = %1087, %1084
  br label %1105

1105:                                             ; preds = %1104, %1083
  store i32 1, ptr %76, align 4
  br label %1106

1106:                                             ; preds = %1105, %1078, %99
  call void @llvm.lifetime.end.p0(i64 8, ptr %75) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %74) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %73) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %72) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %71) #5
  call void @llvm.lifetime.end.p0(i64 4, ptr %70) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %69) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %68) #5
  call void @llvm.lifetime.end.p0(i64 4, ptr %67) #5
  call void @llvm.lifetime.end.p0(i64 4, ptr %66) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %65) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %64) #5
  call void @llvm.lifetime.end.p0(i64 4, ptr %63) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %62) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %61) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %60) #5
  call void @llvm.lifetime.end.p0(i64 4, ptr %59) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %58) #5
  call void @llvm.lifetime.end.p0(i64 4, ptr %57) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %56) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %55) #5
  call void @llvm.lifetime.end.p0(i64 4, ptr %54) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %53) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %52) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %51) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %50) #5
  call void @llvm.lifetime.end.p0(i64 4, ptr %49) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %48) #5
  call void @llvm.lifetime.end.p0(i64 4, ptr %47) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %46) #5
  call void @llvm.lifetime.end.p0(i64 4, ptr %45) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %44) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %43) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %42) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %41) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %40) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %39) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %38) #5
  call void @llvm.lifetime.end.p0(i64 4, ptr %37) #5
  ret void
}

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

declare double @dlamch_(ptr noundef) #2

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

; Function Attrs: nounwind
declare double @sqrt(double noundef) #4

declare i32 @disnan_(ptr noundef) #2

declare void @dcopy_(ptr noundef, ptr noundef, 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 "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }
attributes #5 = { 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}


; 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 [10 x i8], align 1
@.str.1 = external hidden unnamed_addr constant [2 x i8], align 1
@c__1 = external hidden global i32, align 4

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

29:                                               ; preds = %18
  %30 = getelementptr inbounds i8, ptr %6, i64 -8
  %31 = getelementptr inbounds i8, ptr %7, i64 -8
  %32 = getelementptr inbounds i8, ptr %8, i64 -8
  %33 = tail call double @dlamch_(ptr noundef nonnull @.str) #6
  %34 = load i32, ptr %5, align 4, !tbaa !5
  %35 = sext i32 %34 to i64
  %36 = getelementptr inbounds double, ptr %30, i64 %35
  %37 = load double, ptr %36, align 8, !tbaa !9
  %38 = load i32, ptr %4, align 4, !tbaa !5
  %39 = sext i32 %38 to i64
  %40 = getelementptr inbounds double, ptr %30, i64 %39
  %41 = load double, ptr %40, align 8, !tbaa !9
  %42 = fsub double %37, %41
  %43 = fcmp oge double %42, 0.000000e+00
  %44 = fneg double %42
  %45 = select i1 %43, double %42, double %44
  %46 = getelementptr inbounds double, ptr %32, i64 %35
  %47 = load double, ptr %46, align 8, !tbaa !9
  %48 = fadd double %47, %45
  %49 = getelementptr inbounds double, ptr %32, i64 %39
  %50 = load double, ptr %49, align 8, !tbaa !9
  %51 = fadd double %50, %48
  %52 = sub nsw i32 %34, %38
  %53 = sitofp i32 %52 to double
  %54 = fdiv double %51, %53
  %55 = load double, ptr %10, align 8, !tbaa !9
  %56 = load double, ptr %11, align 8, !tbaa !9
  %.inv = fcmp ole double %55, %56
  %. = select i1 %.inv, double %55, double %56
  %57 = insertelement <2 x double> poison, double %41, i64 0
  %58 = insertelement <2 x double> %57, double %37, i64 1
  %59 = insertelement <2 x double> poison, double %37, i64 0
  %60 = insertelement <2 x double> %59, double %41, i64 1
  %61 = fcmp oge <2 x double> %58, %60
  %62 = shufflevector <2 x double> %57, <2 x double> poison, <2 x i32> zeroinitializer
  %63 = shufflevector <2 x double> %58, <2 x double> poison, <2 x i32> <i32 1, i32 1>
  %64 = select <2 x i1> %61, <2 x double> %62, <2 x double> %63
  %65 = insertelement <2 x double> poison, double %47, i64 0
  %66 = insertelement <2 x double> %65, double %50, i64 1
  %67 = fadd <2 x double> %64, %66
  %68 = fsub <2 x double> %64, %66
  %69 = shufflevector <2 x double> %67, <2 x double> %68, <2 x i32> <i32 3, i32 0>
  %70 = fcmp oge <2 x double> %69, zeroinitializer
  %71 = fneg <2 x double> %69
  %72 = select <2 x i1> %70, <2 x double> %69, <2 x double> %71
  %73 = fmul <2 x double> %72, <double -4.000000e+00, double 4.000000e+00>
  %74 = insertelement <2 x double> poison, double %33, i64 0
  %75 = shufflevector <2 x double> %74, <2 x double> poison, <2 x i32> zeroinitializer
  %76 = tail call <2 x double> @llvm.fmuladd.v2f64(<2 x double> %73, <2 x double> %75, <2 x double> %69)
  %77 = load double, ptr %12, align 8, !tbaa !9
  %78 = fmul double %77, 2.000000e+00
  %79 = tail call double @llvm.fmuladd.f64(double %., double 2.500000e-01, double %78)
  %80 = getelementptr inbounds double, ptr %31, i64 %39
  %81 = load double, ptr %80, align 8, !tbaa !9
  %82 = getelementptr double, ptr %31, i64 %35
  %83 = getelementptr i8, ptr %82, i64 -8
  %84 = load double, ptr %83, align 8, !tbaa !9
  %85 = insertelement <2 x double> poison, double %54, i64 0
  %86 = shufflevector <2 x double> %85, <2 x double> poison, <2 x i32> zeroinitializer
  %87 = insertelement <2 x double> poison, double %81, i64 0
  %88 = insertelement <2 x double> %87, double %84, i64 1
  %89 = fcmp oge <2 x double> %86, %88
  %90 = select <2 x i1> %89, <2 x double> %86, <2 x double> %88
  %91 = fmul <2 x double> %90, <double 5.000000e-01, double 5.000000e-01>
  %92 = tail call double @dlamch_(ptr noundef nonnull @.str.1) #6
  %93 = fdiv double 1.000000e+00, %92
  %94 = load i32, ptr %0, align 4, !tbaa !5
  %95 = add nsw i32 %94, -1
  %96 = sitofp i32 %95 to double
  %97 = fmul double %., %96
  %98 = load double, ptr %9, align 8, !tbaa !9
  %99 = fmul double %33, %98
  %100 = fdiv double %97, %99
  %101 = tail call double @sqrt(double noundef %33) #6
  %102 = fmul double %98, %101
  %103 = fdiv double %97, %102
  %104 = load double, ptr %9, align 8, !tbaa !9
  %105 = fmul double %104, 8.000000e+00
  %106 = fmul double %., 7.812500e-03
  %107 = fcmp olt double %51, %106
  %108 = extractelement <2 x double> %76, i64 0
  %109 = insertelement <2 x double> poison, double %79, i64 0
  %110 = shufflevector <2 x double> %109, <2 x double> poison, <2 x i32> zeroinitializer
  br label %.backedge

.backedge:                                        ; preds = %.backedge.backedge, %29
  %.0410 = phi i32 [ undef, %29 ], [ %.4, %.backedge.backedge ]
  %111 = phi i1 [ true, %29 ], [ false, %.backedge.backedge ]
  %.0391 = phi double [ %93, %29 ], [ %.3, %.backedge.backedge ]
  %.0388 = phi double [ %108, %29 ], [ %.0388.be, %.backedge.backedge ]
  %.not433 = phi i1 [ true, %29 ], [ %111, %.backedge.backedge ]
  %112 = phi <2 x double> [ %91, %29 ], [ %.be, %.backedge.backedge ]
  %113 = phi <2 x double> [ %76, %29 ], [ %.be560, %.backedge.backedge ]
  %114 = fcmp ole <2 x double> %110, %112
  %115 = select <2 x i1> %114, <2 x double> %110, <2 x double> %112
  %116 = fneg double %.0388
  %117 = load double, ptr %1, align 8, !tbaa !9
  %118 = fsub double %117, %.0388
  store double %118, ptr %14, align 8, !tbaa !9
  %119 = fcmp ult double %118, 0.000000e+00
  %120 = fneg double %118
  %121 = select i1 %119, double %120, double %118
  %122 = load double, ptr %12, align 8, !tbaa !9
  %123 = fcmp olt double %121, %122
  br i1 %123, label %124, label %126

124:                                              ; preds = %.backedge
  %125 = fneg double %122
  store double %125, ptr %14, align 8, !tbaa !9
  br label %126

126:                                              ; preds = %124, %.backedge
  %.pre-phi = phi double [ %122, %124 ], [ %120, %.backedge ]
  %.pre = phi double [ %125, %124 ], [ %118, %.backedge ]
  %.0382 = phi i32 [ 1, %124 ], [ 0, %.backedge ]
  %127 = fcmp ult double %.pre, 0.000000e+00
  %128 = select i1 %127, double %.pre-phi, double %.pre
  store double %128, ptr %20, align 8, !tbaa !9
  %129 = load i32, ptr %0, align 4, !tbaa !5
  %.not.not461 = icmp sgt i32 %129, 1
  br i1 %.not.not461, label %.lr.ph.preheader, label %157

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

.lr.ph:                                           ; preds = %.lr.ph.preheader, %151
  %130 = phi double [ %.pre, %.lr.ph.preheader ], [ %152, %151 ]
  %indvars.iv = phi i64 [ 1, %.lr.ph.preheader ], [ %indvars.iv.next, %151 ]
  %.1383464 = phi i32 [ %.0382, %.lr.ph.preheader ], [ %.2384, %151 ]
  %.0399463 = phi double [ %116, %.lr.ph.preheader ], [ %139, %151 ]
  %131 = phi double [ %128, %.lr.ph.preheader ], [ %156, %151 ]
  %132 = getelementptr inbounds double, ptr %25, i64 %indvars.iv
  %133 = load double, ptr %132, align 8, !tbaa !9
  %134 = fdiv double %133, %130
  %135 = getelementptr inbounds double, ptr %23, i64 %indvars.iv
  store double %134, ptr %135, align 8, !tbaa !9
  %136 = fmul double %.0399463, %134
  %137 = getelementptr inbounds double, ptr %26, i64 %indvars.iv
  %138 = load double, ptr %137, align 8, !tbaa !9
  %139 = call double @llvm.fmuladd.f64(double %136, double %138, double %116)
  %indvars.iv.next = add nuw nsw i64 %indvars.iv, 1
  %140 = getelementptr double, ptr %1, i64 %indvars.iv
  %141 = load double, ptr %140, align 8, !tbaa !9
  %142 = fadd double %141, %139
  %143 = getelementptr double, ptr %14, i64 %indvars.iv
  store double %142, ptr %143, align 8, !tbaa !9
  %144 = fcmp oge double %142, 0.000000e+00
  %145 = fneg double %142
  %146 = select i1 %144, double %142, double %145
  %147 = load double, ptr %12, align 8, !tbaa !9
  %148 = fcmp olt double %146, %147
  br i1 %148, label %149, label %151

149:                                              ; preds = %.lr.ph
  %150 = fneg double %147
  store double %150, ptr %143, align 8, !tbaa !9
  br label %151

151:                                              ; preds = %149, %.lr.ph
  %.pre-phi529 = phi double [ %147, %149 ], [ %145, %.lr.ph ]
  %152 = phi double [ %150, %149 ], [ %142, %.lr.ph ]
  %.2384 = phi i32 [ 1, %149 ], [ %.1383464, %.lr.ph ]
  %153 = fcmp oge double %152, 0.000000e+00
  %154 = select i1 %153, double %152, double %.pre-phi529
  %155 = fcmp oge double %131, %154
  %156 = select i1 %155, double %131, double %154
  %exitcond.not = icmp eq i64 %indvars.iv.next, %wide.trip.count
  br i1 %exitcond.not, label %._crit_edge, label %.lr.ph, !llvm.loop !11

._crit_edge:                                      ; preds = %151
  store double %156, ptr %20, align 8, !tbaa !9
  br label %157

157:                                              ; preds = %._crit_edge, %126
  %.1383.lcssa = phi i32 [ %.2384, %._crit_edge ], [ %.0382, %126 ]
  %.not432 = icmp eq i32 %.1383.lcssa, 0
  br i1 %.not432, label %158, label %161

158:                                              ; preds = %157
  %159 = call i32 @disnan_(ptr noundef nonnull %20) #6
  %160 = icmp ne i32 %159, 0
  br label %161

161:                                              ; preds = %158, %157
  %162 = phi i1 [ true, %157 ], [ %160, %158 ]
  br i1 %.not433, label %163, label %166

163:                                              ; preds = %161
  %164 = load double, ptr %20, align 8, !tbaa !9
  %165 = fcmp ugt double %164, %105
  %or.cond = select i1 %165, i1 true, i1 %162
  br i1 %or.cond, label %167, label %166

166:                                              ; preds = %163, %161
  store double %.0388, ptr %13, align 8, !tbaa !9
  br label %.critedge438

167:                                              ; preds = %163
  %168 = extractelement <2 x double> %113, i64 1
  %169 = fneg double %168
  %170 = load double, ptr %1, align 8, !tbaa !9
  %171 = fsub double %170, %168
  store double %171, ptr %16, align 8, !tbaa !9
  %172 = fcmp ult double %171, 0.000000e+00
  %173 = fneg double %171
  %174 = select i1 %172, double %173, double %171
  %175 = load double, ptr %12, align 8, !tbaa !9
  %176 = fcmp olt double %174, %175
  br i1 %176, label %177, label %179

177:                                              ; preds = %167
  %178 = fneg double %175
  store double %178, ptr %16, align 8, !tbaa !9
  br label %179

179:                                              ; preds = %177, %167
  %.pre-phi531 = phi double [ %175, %177 ], [ %173, %167 ]
  %.pre522 = phi double [ %178, %177 ], [ %171, %167 ]
  %.0380 = phi i32 [ 1, %177 ], [ 0, %167 ]
  %180 = fcmp ult double %.pre522, 0.000000e+00
  %181 = select i1 %180, double %.pre-phi531, double %.pre522
  store double %181, ptr %21, align 8, !tbaa !9
  %182 = load i32, ptr %0, align 4, !tbaa !5
  %183 = add nsw i32 %182, -1
  store i32 %183, ptr %19, align 4, !tbaa !5
  %.not434.not466 = icmp sgt i32 %182, 1
  br i1 %.not434.not466, label %.lr.ph471.preheader, label %211

.lr.ph471.preheader:                              ; preds = %179
  %184 = zext nneg i32 %182 to i64
  %invariant.gep = getelementptr inbounds double, ptr %22, i64 %184
  br label %.lr.ph471

.lr.ph471:                                        ; preds = %.lr.ph471.preheader, %205
  %185 = phi double [ %.pre522, %.lr.ph471.preheader ], [ %206, %205 ]
  %indvars.iv510 = phi i64 [ 1, %.lr.ph471.preheader ], [ %indvars.iv.next511, %205 ]
  %.1381469 = phi i32 [ %.0380, %.lr.ph471.preheader ], [ %.2, %205 ]
  %.1400468 = phi double [ %169, %.lr.ph471.preheader ], [ %193, %205 ]
  %186 = phi double [ %181, %.lr.ph471.preheader ], [ %210, %205 ]
  %187 = getelementptr inbounds double, ptr %25, i64 %indvars.iv510
  %188 = load double, ptr %187, align 8, !tbaa !9
  %189 = fdiv double %188, %185
  %gep = getelementptr inbounds double, ptr %invariant.gep, i64 %indvars.iv510
  store double %189, ptr %gep, align 8, !tbaa !9
  %190 = fmul double %.1400468, %189
  %191 = getelementptr inbounds double, ptr %26, i64 %indvars.iv510
  %192 = load double, ptr %191, align 8, !tbaa !9
  %193 = call double @llvm.fmuladd.f64(double %190, double %192, double %169)
  %indvars.iv.next511 = add nuw nsw i64 %indvars.iv510, 1
  %194 = getelementptr double, ptr %1, i64 %indvars.iv510
  %195 = load double, ptr %194, align 8, !tbaa !9
  %196 = fadd double %195, %193
  %197 = getelementptr double, ptr %16, i64 %indvars.iv510
  store double %196, ptr %197, align 8, !tbaa !9
  %198 = fcmp oge double %196, 0.000000e+00
  %199 = fneg double %196
  %200 = select i1 %198, double %196, double %199
  %201 = load double, ptr %12, align 8, !tbaa !9
  %202 = fcmp olt double %200, %201
  br i1 %202, label %203, label %205

203:                                              ; preds = %.lr.ph471
  %204 = fneg double %201
  store double %204, ptr %197, align 8, !tbaa !9
  br label %205

205:                                              ; preds = %203, %.lr.ph471
  %.pre-phi533 = phi double [ %201, %203 ], [ %199, %.lr.ph471 ]
  %206 = phi double [ %204, %203 ], [ %196, %.lr.ph471 ]
  %.2 = phi i32 [ 1, %203 ], [ %.1381469, %.lr.ph471 ]
  %207 = fcmp oge double %206, 0.000000e+00
  %208 = select i1 %207, double %206, double %.pre-phi533
  %209 = fcmp oge double %186, %208
  %210 = select i1 %209, double %186, double %208
  %exitcond514.not = icmp eq i64 %indvars.iv.next511, %184
  br i1 %exitcond514.not, label %._crit_edge472, label %.lr.ph471, !llvm.loop !13

._crit_edge472:                                   ; preds = %205
  store double %210, ptr %21, align 8, !tbaa !9
  br label %211

211:                                              ; preds = %._crit_edge472, %179
  %212 = phi double [ %210, %._crit_edge472 ], [ %181, %179 ]
  %.1381.lcssa = phi i32 [ %.2, %._crit_edge472 ], [ %.0380, %179 ]
  %.not435 = icmp eq i32 %.1381.lcssa, 0
  br i1 %.not435, label %213, label %.thread

213:                                              ; preds = %211
  %214 = call i32 @disnan_(ptr noundef nonnull %21) #6
  %215 = icmp ne i32 %214, 0
  %216 = load double, ptr %21, align 8
  %217 = fcmp ugt double %216, %105
  %or.cond3 = select i1 %217, i1 true, i1 %215
  br i1 %or.cond3, label %.thread, label %342

.thread:                                          ; preds = %211, %213
  %218 = phi double [ %216, %213 ], [ %212, %211 ]
  %219 = phi i1 [ %215, %213 ], [ true, %211 ]
  %or.cond5 = select i1 %162, i1 %219, i1 false
  %220 = extractelement <2 x double> %113, i64 0
  br i1 %or.cond5, label %.critedge, label %221

221:                                              ; preds = %.thread
  br i1 %162, label %.thread440, label %222

222:                                              ; preds = %221
  %223 = load double, ptr %20, align 8, !tbaa !9
  %224 = fcmp ugt double %223, %.0391
  %.1395 = select i1 %224, double %220, double %.0388
  %.1392 = select i1 %224, double %.0391, double %223
  br i1 %219, label %230, label %225

.thread440:                                       ; preds = %221
  br i1 %219, label %230, label %.thread447

225:                                              ; preds = %222
  %226 = fcmp ugt double %218, %223
  br i1 %226, label %.thread447, label %227

227:                                              ; preds = %225
  br label %.thread447

.thread447:                                       ; preds = %.thread440, %227, %225
  %.1395445453 = phi double [ %.1395, %225 ], [ %.1395, %227 ], [ %220, %.thread440 ]
  %.1392446451 = phi double [ %.1392, %225 ], [ %.1392, %227 ], [ %.0391, %.thread440 ]
  %.2412 = phi i32 [ 1, %225 ], [ 2, %227 ], [ 2, %.thread440 ]
  %228 = fcmp ugt double %218, %.1392446451
  br i1 %228, label %230, label %229

229:                                              ; preds = %.thread447
  br label %230

230:                                              ; preds = %.thread440, %222, %229, %.thread447
  %.3413 = phi i32 [ 1, %222 ], [ %.2412, %229 ], [ %.2412, %.thread447 ], [ %.0410, %.thread440 ]
  %.2396 = phi double [ %.1395, %222 ], [ %168, %229 ], [ %.1395445453, %.thread447 ], [ %220, %.thread440 ]
  %.2393 = phi double [ %.1392, %222 ], [ %218, %229 ], [ %.1392446451, %.thread447 ], [ %.0391, %.thread440 ]
  br i1 %107, label %231, label %.critedge

231:                                              ; preds = %230
  %232 = load double, ptr %20, align 8
  %233 = fcmp ole double %232, %218
  %234 = select i1 %233, double %232, double %218
  %235 = fcmp uge double %234, %103
  %or.cond7 = select i1 %235, i1 true, i1 %162
  %or.cond9 = select i1 %or.cond7, i1 true, i1 %219
  br i1 %or.cond9, label %.critedge, label %236

236:                                              ; preds = %231
  switch i32 %.3413, label %.critedge [
    i32 1, label %237
    i32 2, label %281
  ]

237:                                              ; preds = %236
  %238 = load i32, ptr %0, align 4, !tbaa !5
  %239 = sext i32 %238 to i64
  %240 = getelementptr inbounds double, ptr %24, i64 %239
  %241 = load double, ptr %240, align 8, !tbaa !9
  %242 = fcmp oge double %241, 0.000000e+00
  %243 = fneg double %241
  %244 = select i1 %242, double %241, double %243
  %245 = icmp sgt i32 %238, 1
  br i1 %245, label %.lr.ph493.preheader, label %._crit_edge494

.lr.ph493.preheader:                              ; preds = %237
  %invariant.gep545 = getelementptr double, ptr %22, i64 %239
  %invariant.gep547 = getelementptr double, ptr %22, i64 %239
  br label %.lr.ph493

.lr.ph493:                                        ; preds = %.lr.ph493.preheader, %265
  %246 = phi double [ %241, %.lr.ph493.preheader ], [ %266, %265 ]
  %indvars.iv518 = phi i64 [ %239, %.lr.ph493.preheader ], [ %indvars.iv.next519, %265 ]
  %.0490 = phi double [ 1.000000e+00, %.lr.ph493.preheader ], [ %267, %265 ]
  %.0378489 = phi double [ %244, %.lr.ph493.preheader ], [ %273, %265 ]
  %.0406487 = phi double [ 1.000000e+00, %.lr.ph493.preheader ], [ %.1407, %265 ]
  %indvars.iv.next519 = add nsw i64 %indvars.iv518, -1
  %247 = fcmp ugt double %.0406487, %33
  br i1 %247, label %260, label %248

248:                                              ; preds = %.lr.ph493
  %249 = trunc nuw nsw i64 %indvars.iv518 to i32
  %250 = add i32 %238, %249
  %251 = sext i32 %250 to i64
  %252 = getelementptr inbounds double, ptr %22, i64 %251
  %253 = load double, ptr %252, align 8, !tbaa !9
  %254 = fmul double %246, %253
  %255 = getelementptr inbounds double, ptr %24, i64 %indvars.iv.next519
  %256 = load double, ptr %255, align 8, !tbaa !9
  %gep546 = getelementptr double, ptr %invariant.gep545, i64 %indvars.iv.next519
  %257 = load double, ptr %gep546, align 8, !tbaa !9
  %258 = fmul double %256, %257
  %259 = fdiv double %254, %258
  br label %265

260:                                              ; preds = %.lr.ph493
  %gep548 = getelementptr double, ptr %invariant.gep547, i64 %indvars.iv.next519
  %261 = load double, ptr %gep548, align 8, !tbaa !9
  %262 = fcmp oge double %261, 0.000000e+00
  %263 = fneg double %261
  %264 = select i1 %262, double %261, double %263
  %.phi.trans.insert525 = getelementptr inbounds double, ptr %24, i64 %indvars.iv.next519
  %.pre526 = load double, ptr %.phi.trans.insert525, align 8, !tbaa !9
  br label %265

265:                                              ; preds = %260, %248
  %266 = phi double [ %256, %248 ], [ %.pre526, %260 ]
  %.pn497 = phi double [ %259, %248 ], [ %264, %260 ]
  %.1407 = fmul double %.0406487, %.pn497
  %267 = call double @llvm.fmuladd.f64(double %.1407, double %.1407, double %.0490)
  %268 = fmul double %.1407, %266
  %269 = fcmp oge double %268, 0.000000e+00
  %270 = fneg double %268
  %271 = select i1 %269, double %268, double %270
  %272 = fcmp oge double %.0378489, %271
  %273 = select i1 %272, double %.0378489, double %271
  %274 = icmp sgt i64 %indvars.iv518, 2
  br i1 %274, label %.lr.ph493, label %._crit_edge494, !llvm.loop !14

._crit_edge494:                                   ; preds = %265, %237
  %.0378.lcssa = phi double [ %244, %237 ], [ %273, %265 ]
  %.0.lcssa = phi double [ 1.000000e+00, %237 ], [ %267, %265 ]
  %275 = load double, ptr %9, align 8, !tbaa !9
  %276 = call double @sqrt(double noundef %.0.lcssa) #6
  %277 = fmul double %275, %276
  %278 = fdiv double %.0378.lcssa, %277
  %279 = fcmp ugt double %278, 8.000000e+00
  br i1 %279, label %.critedge, label %280

280:                                              ; preds = %._crit_edge494
  store double %.0388, ptr %13, align 8, !tbaa !9
  br label %.critedge438

281:                                              ; preds = %236
  %282 = load i32, ptr %0, align 4, !tbaa !5
  %283 = sext i32 %282 to i64
  %284 = getelementptr inbounds double, ptr %22, i64 %283
  %285 = load double, ptr %284, align 8, !tbaa !9
  %286 = fcmp oge double %285, 0.000000e+00
  %287 = fneg double %285
  %288 = select i1 %286, double %285, double %287
  %289 = icmp sgt i32 %282, 1
  br i1 %289, label %.lr.ph482.preheader, label %._crit_edge483

.lr.ph482.preheader:                              ; preds = %281
  %290 = zext nneg i32 %282 to i64
  br label %.lr.ph482

.lr.ph482:                                        ; preds = %.lr.ph482.preheader, %309
  %indvars.iv515 = phi i64 [ %290, %.lr.ph482.preheader ], [ %indvars.iv.next516, %309 ]
  %.1479 = phi double [ 1.000000e+00, %.lr.ph482.preheader ], [ %310, %309 ]
  %.1379478 = phi double [ %288, %.lr.ph482.preheader ], [ %316, %309 ]
  %.2408476 = phi double [ 1.000000e+00, %.lr.ph482.preheader ], [ %.3409, %309 ]
  %indvars.iv.next516 = add nsw i64 %indvars.iv515, -1
  %291 = fcmp ugt double %.2408476, %33
  %.phi.trans.insert523 = getelementptr inbounds double, ptr %22, i64 %indvars.iv.next516
  %.pre524 = load double, ptr %.phi.trans.insert523, align 8, !tbaa !9
  br i1 %291, label %303, label %292

292:                                              ; preds = %.lr.ph482
  %293 = getelementptr inbounds double, ptr %22, i64 %indvars.iv515
  %294 = load double, ptr %293, align 8, !tbaa !9
  %295 = getelementptr inbounds double, ptr %23, i64 %indvars.iv.next516
  %296 = load <2 x double>, ptr %295, align 8, !tbaa !9
  %297 = insertelement <2 x double> poison, double %.pre524, i64 0
  %298 = insertelement <2 x double> %297, double %294, i64 1
  %299 = fmul <2 x double> %298, %296
  %300 = extractelement <2 x double> %299, i64 0
  %301 = extractelement <2 x double> %299, i64 1
  %302 = fdiv double %301, %300
  br label %309

303:                                              ; preds = %.lr.ph482
  %304 = getelementptr inbounds double, ptr %23, i64 %indvars.iv.next516
  %305 = load double, ptr %304, align 8, !tbaa !9
  %306 = fcmp oge double %305, 0.000000e+00
  %307 = fneg double %305
  %308 = select i1 %306, double %305, double %307
  br label %309

309:                                              ; preds = %303, %292
  %.pn = phi double [ %302, %292 ], [ %308, %303 ]
  %.3409 = fmul double %.2408476, %.pn
  %310 = call double @llvm.fmuladd.f64(double %.3409, double %.3409, double %.1479)
  %311 = fmul double %.3409, %.pre524
  %312 = fcmp oge double %311, 0.000000e+00
  %313 = fneg double %311
  %314 = select i1 %312, double %311, double %313
  %315 = fcmp oge double %.1379478, %314
  %316 = select i1 %315, double %.1379478, double %314
  %317 = icmp ugt i64 %indvars.iv515, 2
  br i1 %317, label %.lr.ph482, label %._crit_edge483, !llvm.loop !15

._crit_edge483:                                   ; preds = %309, %281
  %.1379.lcssa = phi double [ %288, %281 ], [ %316, %309 ]
  %.1.lcssa = phi double [ 1.000000e+00, %281 ], [ %310, %309 ]
  %318 = load double, ptr %9, align 8, !tbaa !9
  %319 = call double @sqrt(double noundef %.1.lcssa) #6
  %320 = fmul double %318, %319
  %321 = fdiv double %.1379.lcssa, %320
  %322 = fcmp ugt double %321, 8.000000e+00
  br i1 %322, label %.critedge, label %342

.critedge:                                        ; preds = %230, %231, %236, %._crit_edge483, %._crit_edge494, %.thread
  %.4 = phi i32 [ %.0410, %.thread ], [ 1, %._crit_edge494 ], [ 2, %._crit_edge483 ], [ %.3413, %236 ], [ %.3413, %231 ], [ %.3413, %230 ]
  %.3397 = phi double [ %220, %.thread ], [ %.2396, %._crit_edge494 ], [ %.2396, %._crit_edge483 ], [ %.2396, %236 ], [ %.2396, %231 ], [ %.2396, %230 ]
  %.3 = phi double [ %.0391, %.thread ], [ %.2393, %._crit_edge494 ], [ %.2393, %._crit_edge483 ], [ %.2393, %236 ], [ %.2393, %231 ], [ %.2393, %230 ]
  br i1 %111, label %323, label %337

323:                                              ; preds = %.critedge
  %324 = extractelement <2 x double> %115, i64 0
  %325 = fsub double %.0388, %324
  %326 = fsub double %.0388, %79
  %327 = fcmp oge double %325, %326
  %328 = select i1 %327, double %325, double %326
  %329 = fadd <2 x double> %113, %115
  %330 = extractelement <2 x double> %329, i64 1
  %331 = fadd double %79, %168
  %332 = fcmp ole double %330, %331
  %333 = select i1 %332, double %330, double %331
  %334 = fmul <2 x double> %115, <double 2.000000e+00, double 2.000000e+00>
  %335 = insertelement <2 x double> poison, double %.3397, i64 0
  %336 = insertelement <2 x double> %335, double %333, i64 1
  br label %.backedge.backedge

.backedge.backedge:                               ; preds = %323, %337
  %.0388.be = phi double [ %328, %323 ], [ %.3397, %337 ]
  %.be = phi <2 x double> [ %334, %323 ], [ %115, %337 ]
  %.be560 = phi <2 x double> [ %336, %323 ], [ %340, %337 ]
  br label %.backedge

337:                                              ; preds = %.critedge
  %338 = fcmp olt double %.3, %100
  %339 = insertelement <2 x double> poison, double %.3397, i64 0
  %340 = shufflevector <2 x double> %339, <2 x double> poison, <2 x i32> zeroinitializer
  br i1 %338, label %.backedge.backedge, label %341

341:                                              ; preds = %337
  store i32 1, ptr %17, align 4, !tbaa !5
  br label %.critedge438

342:                                              ; preds = %._crit_edge483, %213
  store double %168, ptr %13, align 8, !tbaa !9
  call void @dcopy_(ptr noundef nonnull %0, ptr noundef nonnull %16, ptr noundef nonnull @c__1, ptr noundef nonnull %14, ptr noundef nonnull @c__1) #6
  %343 = load i32, ptr %0, align 4, !tbaa !5
  %344 = add nsw i32 %343, -1
  store i32 %344, ptr %19, align 4, !tbaa !5
  %345 = sext i32 %343 to i64
  %346 = getelementptr double, ptr %22, i64 %345
  %347 = getelementptr i8, ptr %346, i64 8
  call void @dcopy_(ptr noundef nonnull %19, ptr noundef %347, ptr noundef nonnull @c__1, ptr noundef %15, ptr noundef nonnull @c__1) #6
  br label %.critedge438

.critedge438:                                     ; preds = %342, %280, %166, %18, %341
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %21) #6
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %20) #6
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %19) #6
  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 double @dlamch_(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

; Function Attrs: mustprogress nofree nounwind willreturn memory(write)
declare double @sqrt(double noundef) local_unnamed_addr #4

declare i32 @disnan_(ptr noundef) local_unnamed_addr #2

declare void @dcopy_(ptr noundef, ptr noundef, 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 <2 x double> @llvm.fmuladd.v2f64(<2 x double>, <2 x double>, <2 x double>) #5

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 = { mustprogress nofree nounwind willreturn memory(write) "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }
attributes #5 = { nocallback nofree nosync nounwind speculatable willreturn memory(none) }
attributes #6 = { 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}
!12 = !{!"llvm.loop.mustprogress"}
!13 = distinct !{!13, !12}
!14 = distinct !{!14, !12}
!15 = distinct !{!15, !12}


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