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

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

; Function Attrs: nounwind uwtable
define dso_local void @dlasq4_(ptr noundef %0, ptr noundef %1, ptr noundef %2, ptr noundef %3, ptr noundef %4, ptr noundef %5, ptr noundef %6, ptr noundef %7, ptr noundef %8, ptr noundef %9, ptr noundef %10, ptr noundef %11, ptr noundef %12, ptr noundef %13) #0 {
  %15 = alloca ptr, align 8
  %16 = alloca ptr, align 8
  %17 = alloca ptr, align 8
  %18 = alloca ptr, align 8
  %19 = alloca ptr, align 8
  %20 = alloca ptr, align 8
  %21 = alloca ptr, align 8
  %22 = alloca ptr, align 8
  %23 = alloca ptr, align 8
  %24 = alloca ptr, align 8
  %25 = alloca ptr, align 8
  %26 = alloca ptr, align 8
  %27 = alloca ptr, align 8
  %28 = alloca ptr, align 8
  %29 = alloca i32, align 4
  %30 = alloca double, align 8
  %31 = alloca double, align 8
  %32 = alloca double, align 8
  %33 = alloca double, align 8
  %34 = alloca double, align 8
  %35 = alloca double, align 8
  %36 = alloca i32, align 4
  %37 = alloca i32, align 4
  %38 = alloca i32, align 4
  %39 = alloca double, align 8
  %40 = alloca double, align 8
  %41 = alloca double, align 8
  %42 = alloca i32, align 4
  store ptr %0, ptr %15, align 8, !tbaa !5
  store ptr %1, ptr %16, align 8, !tbaa !5
  store ptr %2, ptr %17, align 8, !tbaa !5
  store ptr %3, ptr %18, align 8, !tbaa !5
  store ptr %4, ptr %19, align 8, !tbaa !5
  store ptr %5, ptr %20, align 8, !tbaa !5
  store ptr %6, ptr %21, align 8, !tbaa !5
  store ptr %7, ptr %22, align 8, !tbaa !5
  store ptr %8, ptr %23, align 8, !tbaa !5
  store ptr %9, ptr %24, align 8, !tbaa !5
  store ptr %10, ptr %25, align 8, !tbaa !5
  store ptr %11, ptr %26, align 8, !tbaa !5
  store ptr %12, ptr %27, align 8, !tbaa !5
  store ptr %13, ptr %28, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 4, ptr %29) #4
  call void @llvm.lifetime.start.p0(i64 8, ptr %30) #4
  call void @llvm.lifetime.start.p0(i64 8, ptr %31) #4
  call void @llvm.lifetime.start.p0(i64 8, ptr %32) #4
  call void @llvm.lifetime.start.p0(i64 8, ptr %33) #4
  call void @llvm.lifetime.start.p0(i64 8, ptr %34) #4
  call void @llvm.lifetime.start.p0(i64 8, ptr %35) #4
  call void @llvm.lifetime.start.p0(i64 4, ptr %36) #4
  call void @llvm.lifetime.start.p0(i64 4, ptr %37) #4
  call void @llvm.lifetime.start.p0(i64 4, ptr %38) #4
  call void @llvm.lifetime.start.p0(i64 8, ptr %39) #4
  call void @llvm.lifetime.start.p0(i64 8, ptr %40) #4
  call void @llvm.lifetime.start.p0(i64 8, ptr %41) #4
  %43 = load ptr, ptr %17, align 8, !tbaa !5
  %44 = getelementptr inbounds double, ptr %43, i32 -1
  store ptr %44, ptr %17, align 8, !tbaa !5
  %45 = load ptr, ptr %20, align 8, !tbaa !5
  %46 = load double, ptr %45, align 8, !tbaa !9
  %47 = fcmp ole double %46, 0.000000e+00
  br i1 %47, label %48, label %54

48:                                               ; preds = %14
  %49 = load ptr, ptr %20, align 8, !tbaa !5
  %50 = load double, ptr %49, align 8, !tbaa !9
  %51 = fneg double %50
  %52 = load ptr, ptr %26, align 8, !tbaa !5
  store double %51, ptr %52, align 8, !tbaa !9
  %53 = load ptr, ptr %27, align 8, !tbaa !5
  store i32 -1, ptr %53, align 4, !tbaa !11
  store i32 1, ptr %42, align 4
  br label %1092

54:                                               ; preds = %14
  %55 = load ptr, ptr %16, align 8, !tbaa !5
  %56 = load i32, ptr %55, align 4, !tbaa !11
  %57 = shl i32 %56, 2
  %58 = load ptr, ptr %18, align 8, !tbaa !5
  %59 = load i32, ptr %58, align 4, !tbaa !11
  %60 = add nsw i32 %57, %59
  store i32 %60, ptr %37, align 4, !tbaa !11
  %61 = load ptr, ptr %19, align 8, !tbaa !5
  %62 = load i32, ptr %61, align 4, !tbaa !11
  %63 = load ptr, ptr %16, align 8, !tbaa !5
  %64 = load i32, ptr %63, align 4, !tbaa !11
  %65 = icmp eq i32 %62, %64
  br i1 %65, label %66, label %650

66:                                               ; preds = %54
  %67 = load ptr, ptr %20, align 8, !tbaa !5
  %68 = load double, ptr %67, align 8, !tbaa !9
  %69 = load ptr, ptr %23, align 8, !tbaa !5
  %70 = load double, ptr %69, align 8, !tbaa !9
  %71 = fcmp oeq double %68, %70
  br i1 %71, label %78, label %72

72:                                               ; preds = %66
  %73 = load ptr, ptr %20, align 8, !tbaa !5
  %74 = load double, ptr %73, align 8, !tbaa !9
  %75 = load ptr, ptr %24, align 8, !tbaa !5
  %76 = load double, ptr %75, align 8, !tbaa !9
  %77 = fcmp oeq double %74, %76
  br i1 %77, label %78, label %444

78:                                               ; preds = %72, %66
  %79 = load ptr, ptr %17, align 8, !tbaa !5
  %80 = load i32, ptr %37, align 4, !tbaa !11
  %81 = sub nsw i32 %80, 3
  %82 = sext i32 %81 to i64
  %83 = getelementptr inbounds double, ptr %79, i64 %82
  %84 = load double, ptr %83, align 8, !tbaa !9
  %85 = call double @sqrt(double noundef %84) #4
  %86 = load ptr, ptr %17, align 8, !tbaa !5
  %87 = load i32, ptr %37, align 4, !tbaa !11
  %88 = sub nsw i32 %87, 5
  %89 = sext i32 %88 to i64
  %90 = getelementptr inbounds double, ptr %86, i64 %89
  %91 = load double, ptr %90, align 8, !tbaa !9
  %92 = call double @sqrt(double noundef %91) #4
  %93 = fmul double %85, %92
  store double %93, ptr %34, align 8, !tbaa !9
  %94 = load ptr, ptr %17, align 8, !tbaa !5
  %95 = load i32, ptr %37, align 4, !tbaa !11
  %96 = sub nsw i32 %95, 7
  %97 = sext i32 %96 to i64
  %98 = getelementptr inbounds double, ptr %94, i64 %97
  %99 = load double, ptr %98, align 8, !tbaa !9
  %100 = call double @sqrt(double noundef %99) #4
  %101 = load ptr, ptr %17, align 8, !tbaa !5
  %102 = load i32, ptr %37, align 4, !tbaa !11
  %103 = sub nsw i32 %102, 9
  %104 = sext i32 %103 to i64
  %105 = getelementptr inbounds double, ptr %101, i64 %104
  %106 = load double, ptr %105, align 8, !tbaa !9
  %107 = call double @sqrt(double noundef %106) #4
  %108 = fmul double %100, %107
  store double %108, ptr %35, align 8, !tbaa !9
  %109 = load ptr, ptr %17, align 8, !tbaa !5
  %110 = load i32, ptr %37, align 4, !tbaa !11
  %111 = sub nsw i32 %110, 7
  %112 = sext i32 %111 to i64
  %113 = getelementptr inbounds double, ptr %109, i64 %112
  %114 = load double, ptr %113, align 8, !tbaa !9
  %115 = load ptr, ptr %17, align 8, !tbaa !5
  %116 = load i32, ptr %37, align 4, !tbaa !11
  %117 = sub nsw i32 %116, 5
  %118 = sext i32 %117 to i64
  %119 = getelementptr inbounds double, ptr %115, i64 %118
  %120 = load double, ptr %119, align 8, !tbaa !9
  %121 = fadd double %114, %120
  store double %121, ptr %33, align 8, !tbaa !9
  %122 = load ptr, ptr %20, align 8, !tbaa !5
  %123 = load double, ptr %122, align 8, !tbaa !9
  %124 = load ptr, ptr %23, align 8, !tbaa !5
  %125 = load double, ptr %124, align 8, !tbaa !9
  %126 = fcmp oeq double %123, %125
  br i1 %126, label %127, label %245

127:                                              ; preds = %78
  %128 = load ptr, ptr %21, align 8, !tbaa !5
  %129 = load double, ptr %128, align 8, !tbaa !9
  %130 = load ptr, ptr %24, align 8, !tbaa !5
  %131 = load double, ptr %130, align 8, !tbaa !9
  %132 = fcmp oeq double %129, %131
  br i1 %132, label %133, label %245

133:                                              ; preds = %127
  %134 = load ptr, ptr %22, align 8, !tbaa !5
  %135 = load double, ptr %134, align 8, !tbaa !9
  %136 = load double, ptr %33, align 8, !tbaa !9
  %137 = fsub double %135, %136
  %138 = load ptr, ptr %22, align 8, !tbaa !5
  %139 = load double, ptr %138, align 8, !tbaa !9
  %140 = fneg double %139
  %141 = call double @llvm.fmuladd.f64(double %140, double 2.500000e-01, double %137)
  store double %141, ptr %41, align 8, !tbaa !9
  %142 = load double, ptr %41, align 8, !tbaa !9
  %143 = fcmp ogt double %142, 0.000000e+00
  br i1 %143, label %144, label %159

144:                                              ; preds = %133
  %145 = load double, ptr %41, align 8, !tbaa !9
  %146 = load double, ptr %35, align 8, !tbaa !9
  %147 = fcmp ogt double %145, %146
  br i1 %147, label %148, label %159

148:                                              ; preds = %144
  %149 = load double, ptr %33, align 8, !tbaa !9
  %150 = load ptr, ptr %23, align 8, !tbaa !5
  %151 = load double, ptr %150, align 8, !tbaa !9
  %152 = fsub double %149, %151
  %153 = load double, ptr %35, align 8, !tbaa !9
  %154 = load double, ptr %41, align 8, !tbaa !9
  %155 = fdiv double %153, %154
  %156 = load double, ptr %35, align 8, !tbaa !9
  %157 = fneg double %155
  %158 = call double @llvm.fmuladd.f64(double %157, double %156, double %152)
  store double %158, ptr %40, align 8, !tbaa !9
  br label %168

159:                                              ; preds = %144, %133
  %160 = load double, ptr %33, align 8, !tbaa !9
  %161 = load ptr, ptr %23, align 8, !tbaa !5
  %162 = load double, ptr %161, align 8, !tbaa !9
  %163 = fsub double %160, %162
  %164 = load double, ptr %34, align 8, !tbaa !9
  %165 = load double, ptr %35, align 8, !tbaa !9
  %166 = fadd double %164, %165
  %167 = fsub double %163, %166
  store double %167, ptr %40, align 8, !tbaa !9
  br label %168

168:                                              ; preds = %159, %148
  %169 = load double, ptr %40, align 8, !tbaa !9
  %170 = fcmp ogt double %169, 0.000000e+00
  br i1 %170, label %171, label %197

171:                                              ; preds = %168
  %172 = load double, ptr %40, align 8, !tbaa !9
  %173 = load double, ptr %34, align 8, !tbaa !9
  %174 = fcmp ogt double %172, %173
  br i1 %174, label %175, label %197

175:                                              ; preds = %171
  %176 = load ptr, ptr %23, align 8, !tbaa !5
  %177 = load double, ptr %176, align 8, !tbaa !9
  %178 = load double, ptr %34, align 8, !tbaa !9
  %179 = load double, ptr %40, align 8, !tbaa !9
  %180 = fdiv double %178, %179
  %181 = load double, ptr %34, align 8, !tbaa !9
  %182 = fneg double %180
  %183 = call double @llvm.fmuladd.f64(double %182, double %181, double %177)
  store double %183, ptr %30, align 8, !tbaa !9
  %184 = load ptr, ptr %20, align 8, !tbaa !5
  %185 = load double, ptr %184, align 8, !tbaa !9
  %186 = fmul double %185, 5.000000e-01
  store double %186, ptr %31, align 8, !tbaa !9
  %187 = load double, ptr %30, align 8, !tbaa !9
  %188 = load double, ptr %31, align 8, !tbaa !9
  %189 = fcmp oge double %187, %188
  br i1 %189, label %190, label %192

190:                                              ; preds = %175
  %191 = load double, ptr %30, align 8, !tbaa !9
  br label %194

192:                                              ; preds = %175
  %193 = load double, ptr %31, align 8, !tbaa !9
  br label %194

194:                                              ; preds = %192, %190
  %195 = phi double [ %191, %190 ], [ %193, %192 ]
  store double %195, ptr %32, align 8, !tbaa !9
  %196 = load ptr, ptr %27, align 8, !tbaa !5
  store i32 -2, ptr %196, align 4, !tbaa !11
  br label %244

197:                                              ; preds = %171, %168
  store double 0.000000e+00, ptr %32, align 8, !tbaa !9
  %198 = load ptr, ptr %23, align 8, !tbaa !5
  %199 = load double, ptr %198, align 8, !tbaa !9
  %200 = load double, ptr %34, align 8, !tbaa !9
  %201 = fcmp ogt double %199, %200
  br i1 %201, label %202, label %207

202:                                              ; preds = %197
  %203 = load ptr, ptr %23, align 8, !tbaa !5
  %204 = load double, ptr %203, align 8, !tbaa !9
  %205 = load double, ptr %34, align 8, !tbaa !9
  %206 = fsub double %204, %205
  store double %206, ptr %32, align 8, !tbaa !9
  br label %207

207:                                              ; preds = %202, %197
  %208 = load double, ptr %33, align 8, !tbaa !9
  %209 = load double, ptr %34, align 8, !tbaa !9
  %210 = load double, ptr %35, align 8, !tbaa !9
  %211 = fadd double %209, %210
  %212 = fcmp ogt double %208, %211
  br i1 %212, label %213, label %229

213:                                              ; preds = %207
  %214 = load double, ptr %32, align 8, !tbaa !9
  store double %214, ptr %30, align 8, !tbaa !9
  %215 = load double, ptr %33, align 8, !tbaa !9
  %216 = load double, ptr %34, align 8, !tbaa !9
  %217 = load double, ptr %35, align 8, !tbaa !9
  %218 = fadd double %216, %217
  %219 = fsub double %215, %218
  store double %219, ptr %31, align 8, !tbaa !9
  %220 = load double, ptr %30, align 8, !tbaa !9
  %221 = load double, ptr %31, align 8, !tbaa !9
  %222 = fcmp ole double %220, %221
  br i1 %222, label %223, label %225

223:                                              ; preds = %213
  %224 = load double, ptr %30, align 8, !tbaa !9
  br label %227

225:                                              ; preds = %213
  %226 = load double, ptr %31, align 8, !tbaa !9
  br label %227

227:                                              ; preds = %225, %223
  %228 = phi double [ %224, %223 ], [ %226, %225 ]
  store double %228, ptr %32, align 8, !tbaa !9
  br label %229

229:                                              ; preds = %227, %207
  %230 = load double, ptr %32, align 8, !tbaa !9
  store double %230, ptr %30, align 8, !tbaa !9
  %231 = load ptr, ptr %20, align 8, !tbaa !5
  %232 = load double, ptr %231, align 8, !tbaa !9
  %233 = fmul double %232, 3.330000e-01
  store double %233, ptr %31, align 8, !tbaa !9
  %234 = load double, ptr %30, align 8, !tbaa !9
  %235 = load double, ptr %31, align 8, !tbaa !9
  %236 = fcmp oge double %234, %235
  br i1 %236, label %237, label %239

237:                                              ; preds = %229
  %238 = load double, ptr %30, align 8, !tbaa !9
  br label %241

239:                                              ; preds = %229
  %240 = load double, ptr %31, align 8, !tbaa !9
  br label %241

241:                                              ; preds = %239, %237
  %242 = phi double [ %238, %237 ], [ %240, %239 ]
  store double %242, ptr %32, align 8, !tbaa !9
  %243 = load ptr, ptr %27, align 8, !tbaa !5
  store i32 -3, ptr %243, align 4, !tbaa !11
  br label %244

244:                                              ; preds = %241, %194
  br label %443

245:                                              ; preds = %127, %78
  %246 = load ptr, ptr %27, align 8, !tbaa !5
  store i32 -4, ptr %246, align 4, !tbaa !11
  %247 = load ptr, ptr %20, align 8, !tbaa !5
  %248 = load double, ptr %247, align 8, !tbaa !9
  %249 = fmul double %248, 2.500000e-01
  store double %249, ptr %32, align 8, !tbaa !9
  %250 = load ptr, ptr %20, align 8, !tbaa !5
  %251 = load double, ptr %250, align 8, !tbaa !9
  %252 = load ptr, ptr %23, align 8, !tbaa !5
  %253 = load double, ptr %252, align 8, !tbaa !9
  %254 = fcmp oeq double %251, %253
  br i1 %254, label %255, label %288

255:                                              ; preds = %245
  %256 = load ptr, ptr %23, align 8, !tbaa !5
  %257 = load double, ptr %256, align 8, !tbaa !9
  store double %257, ptr %39, align 8, !tbaa !9
  store double 0.000000e+00, ptr %33, align 8, !tbaa !9
  %258 = load ptr, ptr %17, align 8, !tbaa !5
  %259 = load i32, ptr %37, align 4, !tbaa !11
  %260 = sub nsw i32 %259, 5
  %261 = sext i32 %260 to i64
  %262 = getelementptr inbounds double, ptr %258, i64 %261
  %263 = load double, ptr %262, align 8, !tbaa !9
  %264 = load ptr, ptr %17, align 8, !tbaa !5
  %265 = load i32, ptr %37, align 4, !tbaa !11
  %266 = sub nsw i32 %265, 7
  %267 = sext i32 %266 to i64
  %268 = getelementptr inbounds double, ptr %264, i64 %267
  %269 = load double, ptr %268, align 8, !tbaa !9
  %270 = fcmp ogt double %263, %269
  br i1 %270, label %271, label %272

271:                                              ; preds = %255
  store i32 1, ptr %42, align 4
  br label %1092

272:                                              ; preds = %255
  %273 = load ptr, ptr %17, align 8, !tbaa !5
  %274 = load i32, ptr %37, align 4, !tbaa !11
  %275 = sub nsw i32 %274, 5
  %276 = sext i32 %275 to i64
  %277 = getelementptr inbounds double, ptr %273, i64 %276
  %278 = load double, ptr %277, align 8, !tbaa !9
  %279 = load ptr, ptr %17, align 8, !tbaa !5
  %280 = load i32, ptr %37, align 4, !tbaa !11
  %281 = sub nsw i32 %280, 7
  %282 = sext i32 %281 to i64
  %283 = getelementptr inbounds double, ptr %279, i64 %282
  %284 = load double, ptr %283, align 8, !tbaa !9
  %285 = fdiv double %278, %284
  store double %285, ptr %35, align 8, !tbaa !9
  %286 = load i32, ptr %37, align 4, !tbaa !11
  %287 = sub nsw i32 %286, 9
  store i32 %287, ptr %38, align 4, !tbaa !11
  br label %354

288:                                              ; preds = %245
  %289 = load i32, ptr %37, align 4, !tbaa !11
  %290 = load ptr, ptr %18, align 8, !tbaa !5
  %291 = load i32, ptr %290, align 4, !tbaa !11
  %292 = shl i32 %291, 1
  %293 = sub nsw i32 %289, %292
  store i32 %293, ptr %38, align 4, !tbaa !11
  %294 = load ptr, ptr %24, align 8, !tbaa !5
  %295 = load double, ptr %294, align 8, !tbaa !9
  store double %295, ptr %39, align 8, !tbaa !9
  %296 = load ptr, ptr %17, align 8, !tbaa !5
  %297 = load i32, ptr %38, align 4, !tbaa !11
  %298 = sub nsw i32 %297, 4
  %299 = sext i32 %298 to i64
  %300 = getelementptr inbounds double, ptr %296, i64 %299
  %301 = load double, ptr %300, align 8, !tbaa !9
  %302 = load ptr, ptr %17, align 8, !tbaa !5
  %303 = load i32, ptr %38, align 4, !tbaa !11
  %304 = sub nsw i32 %303, 2
  %305 = sext i32 %304 to i64
  %306 = getelementptr inbounds double, ptr %302, i64 %305
  %307 = load double, ptr %306, align 8, !tbaa !9
  %308 = fcmp ogt double %301, %307
  br i1 %308, label %309, label %310

309:                                              ; preds = %288
  store i32 1, ptr %42, align 4
  br label %1092

310:                                              ; preds = %288
  %311 = load ptr, ptr %17, align 8, !tbaa !5
  %312 = load i32, ptr %38, align 4, !tbaa !11
  %313 = sub nsw i32 %312, 4
  %314 = sext i32 %313 to i64
  %315 = getelementptr inbounds double, ptr %311, i64 %314
  %316 = load double, ptr %315, align 8, !tbaa !9
  %317 = load ptr, ptr %17, align 8, !tbaa !5
  %318 = load i32, ptr %38, align 4, !tbaa !11
  %319 = sub nsw i32 %318, 2
  %320 = sext i32 %319 to i64
  %321 = getelementptr inbounds double, ptr %317, i64 %320
  %322 = load double, ptr %321, align 8, !tbaa !9
  %323 = fdiv double %316, %322
  store double %323, ptr %33, align 8, !tbaa !9
  %324 = load ptr, ptr %17, align 8, !tbaa !5
  %325 = load i32, ptr %37, align 4, !tbaa !11
  %326 = sub nsw i32 %325, 9
  %327 = sext i32 %326 to i64
  %328 = getelementptr inbounds double, ptr %324, i64 %327
  %329 = load double, ptr %328, align 8, !tbaa !9
  %330 = load ptr, ptr %17, align 8, !tbaa !5
  %331 = load i32, ptr %37, align 4, !tbaa !11
  %332 = sub nsw i32 %331, 11
  %333 = sext i32 %332 to i64
  %334 = getelementptr inbounds double, ptr %330, i64 %333
  %335 = load double, ptr %334, align 8, !tbaa !9
  %336 = fcmp ogt double %329, %335
  br i1 %336, label %337, label %338

337:                                              ; preds = %310
  store i32 1, ptr %42, align 4
  br label %1092

338:                                              ; preds = %310
  %339 = load ptr, ptr %17, align 8, !tbaa !5
  %340 = load i32, ptr %37, align 4, !tbaa !11
  %341 = sub nsw i32 %340, 9
  %342 = sext i32 %341 to i64
  %343 = getelementptr inbounds double, ptr %339, i64 %342
  %344 = load double, ptr %343, align 8, !tbaa !9
  %345 = load ptr, ptr %17, align 8, !tbaa !5
  %346 = load i32, ptr %37, align 4, !tbaa !11
  %347 = sub nsw i32 %346, 11
  %348 = sext i32 %347 to i64
  %349 = getelementptr inbounds double, ptr %345, i64 %348
  %350 = load double, ptr %349, align 8, !tbaa !9
  %351 = fdiv double %344, %350
  store double %351, ptr %35, align 8, !tbaa !9
  %352 = load i32, ptr %37, align 4, !tbaa !11
  %353 = sub nsw i32 %352, 13
  store i32 %353, ptr %38, align 4, !tbaa !11
  br label %354

354:                                              ; preds = %338, %272
  %355 = load double, ptr %35, align 8, !tbaa !9
  %356 = load double, ptr %33, align 8, !tbaa !9
  %357 = fadd double %356, %355
  store double %357, ptr %33, align 8, !tbaa !9
  %358 = load ptr, ptr %15, align 8, !tbaa !5
  %359 = load i32, ptr %358, align 4, !tbaa !11
  %360 = shl i32 %359, 2
  %361 = sub nsw i32 %360, 1
  %362 = load ptr, ptr %18, align 8, !tbaa !5
  %363 = load i32, ptr %362, align 4, !tbaa !11
  %364 = add nsw i32 %361, %363
  store i32 %364, ptr %29, align 4, !tbaa !11
  %365 = load i32, ptr %38, align 4, !tbaa !11
  store i32 %365, ptr %36, align 4, !tbaa !11
  br label %366

366:                                              ; preds = %424, %354
  %367 = load i32, ptr %36, align 4, !tbaa !11
  %368 = load i32, ptr %29, align 4, !tbaa !11
  %369 = icmp sge i32 %367, %368
  br i1 %369, label %370, label %427

370:                                              ; preds = %366
  %371 = load double, ptr %35, align 8, !tbaa !9
  %372 = fcmp oeq double %371, 0.000000e+00
  br i1 %372, label %373, label %374

373:                                              ; preds = %370
  br label %428

374:                                              ; preds = %370
  %375 = load double, ptr %35, align 8, !tbaa !9
  store double %375, ptr %34, align 8, !tbaa !9
  %376 = load ptr, ptr %17, align 8, !tbaa !5
  %377 = load i32, ptr %36, align 4, !tbaa !11
  %378 = sext i32 %377 to i64
  %379 = getelementptr inbounds double, ptr %376, i64 %378
  %380 = load double, ptr %379, align 8, !tbaa !9
  %381 = load ptr, ptr %17, align 8, !tbaa !5
  %382 = load i32, ptr %36, align 4, !tbaa !11
  %383 = sub nsw i32 %382, 2
  %384 = sext i32 %383 to i64
  %385 = getelementptr inbounds double, ptr %381, i64 %384
  %386 = load double, ptr %385, align 8, !tbaa !9
  %387 = fcmp ogt double %380, %386
  br i1 %387, label %388, label %389

388:                                              ; preds = %374
  store i32 1, ptr %42, align 4
  br label %1092

389:                                              ; preds = %374
  %390 = load ptr, ptr %17, align 8, !tbaa !5
  %391 = load i32, ptr %36, align 4, !tbaa !11
  %392 = sext i32 %391 to i64
  %393 = getelementptr inbounds double, ptr %390, i64 %392
  %394 = load double, ptr %393, align 8, !tbaa !9
  %395 = load ptr, ptr %17, align 8, !tbaa !5
  %396 = load i32, ptr %36, align 4, !tbaa !11
  %397 = sub nsw i32 %396, 2
  %398 = sext i32 %397 to i64
  %399 = getelementptr inbounds double, ptr %395, i64 %398
  %400 = load double, ptr %399, align 8, !tbaa !9
  %401 = fdiv double %394, %400
  %402 = load double, ptr %35, align 8, !tbaa !9
  %403 = fmul double %402, %401
  store double %403, ptr %35, align 8, !tbaa !9
  %404 = load double, ptr %35, align 8, !tbaa !9
  %405 = load double, ptr %33, align 8, !tbaa !9
  %406 = fadd double %405, %404
  store double %406, ptr %33, align 8, !tbaa !9
  %407 = load double, ptr %35, align 8, !tbaa !9
  %408 = load double, ptr %34, align 8, !tbaa !9
  %409 = fcmp oge double %407, %408
  br i1 %409, label %410, label %412

410:                                              ; preds = %389
  %411 = load double, ptr %35, align 8, !tbaa !9
  br label %414

412:                                              ; preds = %389
  %413 = load double, ptr %34, align 8, !tbaa !9
  br label %414

414:                                              ; preds = %412, %410
  %415 = phi double [ %411, %410 ], [ %413, %412 ]
  %416 = fmul double %415, 1.000000e+02
  %417 = load double, ptr %33, align 8, !tbaa !9
  %418 = fcmp olt double %416, %417
  br i1 %418, label %422, label %419

419:                                              ; preds = %414
  %420 = load double, ptr %33, align 8, !tbaa !9
  %421 = fcmp olt double 5.630000e-01, %420
  br i1 %421, label %422, label %423

422:                                              ; preds = %419, %414
  br label %428

423:                                              ; preds = %419
  br label %424

424:                                              ; preds = %423
  %425 = load i32, ptr %36, align 4, !tbaa !11
  %426 = add nsw i32 %425, -4
  store i32 %426, ptr %36, align 4, !tbaa !11
  br label %366, !llvm.loop !13

427:                                              ; preds = %366
  br label %428

428:                                              ; preds = %427, %422, %373
  %429 = load double, ptr %33, align 8, !tbaa !9
  %430 = fmul double %429, 1.050000e+00
  store double %430, ptr %33, align 8, !tbaa !9
  %431 = load double, ptr %33, align 8, !tbaa !9
  %432 = fcmp olt double %431, 5.630000e-01
  br i1 %432, label %433, label %442

433:                                              ; preds = %428
  %434 = load double, ptr %39, align 8, !tbaa !9
  %435 = load double, ptr %33, align 8, !tbaa !9
  %436 = call double @sqrt(double noundef %435) #4
  %437 = fsub double 1.000000e+00, %436
  %438 = fmul double %434, %437
  %439 = load double, ptr %33, align 8, !tbaa !9
  %440 = fadd double %439, 1.000000e+00
  %441 = fdiv double %438, %440
  store double %441, ptr %32, align 8, !tbaa !9
  br label %442

442:                                              ; preds = %433, %428
  br label %443

443:                                              ; preds = %442, %244
  br label %649

444:                                              ; preds = %72
  %445 = load ptr, ptr %20, align 8, !tbaa !5
  %446 = load double, ptr %445, align 8, !tbaa !9
  %447 = load ptr, ptr %25, align 8, !tbaa !5
  %448 = load double, ptr %447, align 8, !tbaa !9
  %449 = fcmp oeq double %446, %448
  br i1 %449, label %450, label %621

450:                                              ; preds = %444
  %451 = load ptr, ptr %27, align 8, !tbaa !5
  store i32 -5, ptr %451, align 4, !tbaa !11
  %452 = load ptr, ptr %20, align 8, !tbaa !5
  %453 = load double, ptr %452, align 8, !tbaa !9
  %454 = fmul double %453, 2.500000e-01
  store double %454, ptr %32, align 8, !tbaa !9
  %455 = load i32, ptr %37, align 4, !tbaa !11
  %456 = load ptr, ptr %18, align 8, !tbaa !5
  %457 = load i32, ptr %456, align 4, !tbaa !11
  %458 = shl i32 %457, 1
  %459 = sub nsw i32 %455, %458
  store i32 %459, ptr %38, align 4, !tbaa !11
  %460 = load ptr, ptr %17, align 8, !tbaa !5
  %461 = load i32, ptr %38, align 4, !tbaa !11
  %462 = sub nsw i32 %461, 2
  %463 = sext i32 %462 to i64
  %464 = getelementptr inbounds double, ptr %460, i64 %463
  %465 = load double, ptr %464, align 8, !tbaa !9
  store double %465, ptr %34, align 8, !tbaa !9
  %466 = load ptr, ptr %17, align 8, !tbaa !5
  %467 = load i32, ptr %38, align 4, !tbaa !11
  %468 = sub nsw i32 %467, 6
  %469 = sext i32 %468 to i64
  %470 = getelementptr inbounds double, ptr %466, i64 %469
  %471 = load double, ptr %470, align 8, !tbaa !9
  store double %471, ptr %35, align 8, !tbaa !9
  %472 = load ptr, ptr %25, align 8, !tbaa !5
  %473 = load double, ptr %472, align 8, !tbaa !9
  store double %473, ptr %39, align 8, !tbaa !9
  %474 = load ptr, ptr %17, align 8, !tbaa !5
  %475 = load i32, ptr %38, align 4, !tbaa !11
  %476 = sub nsw i32 %475, 8
  %477 = sext i32 %476 to i64
  %478 = getelementptr inbounds double, ptr %474, i64 %477
  %479 = load double, ptr %478, align 8, !tbaa !9
  %480 = load double, ptr %35, align 8, !tbaa !9
  %481 = fcmp ogt double %479, %480
  br i1 %481, label %491, label %482

482:                                              ; preds = %450
  %483 = load ptr, ptr %17, align 8, !tbaa !5
  %484 = load i32, ptr %38, align 4, !tbaa !11
  %485 = sub nsw i32 %484, 4
  %486 = sext i32 %485 to i64
  %487 = getelementptr inbounds double, ptr %483, i64 %486
  %488 = load double, ptr %487, align 8, !tbaa !9
  %489 = load double, ptr %34, align 8, !tbaa !9
  %490 = fcmp ogt double %488, %489
  br i1 %490, label %491, label %492

491:                                              ; preds = %482, %450
  store i32 1, ptr %42, align 4
  br label %1092

492:                                              ; preds = %482
  %493 = load ptr, ptr %17, align 8, !tbaa !5
  %494 = load i32, ptr %38, align 4, !tbaa !11
  %495 = sub nsw i32 %494, 8
  %496 = sext i32 %495 to i64
  %497 = getelementptr inbounds double, ptr %493, i64 %496
  %498 = load double, ptr %497, align 8, !tbaa !9
  %499 = load double, ptr %35, align 8, !tbaa !9
  %500 = fdiv double %498, %499
  %501 = load ptr, ptr %17, align 8, !tbaa !5
  %502 = load i32, ptr %38, align 4, !tbaa !11
  %503 = sub nsw i32 %502, 4
  %504 = sext i32 %503 to i64
  %505 = getelementptr inbounds double, ptr %501, i64 %504
  %506 = load double, ptr %505, align 8, !tbaa !9
  %507 = load double, ptr %34, align 8, !tbaa !9
  %508 = fdiv double %506, %507
  %509 = fadd double %508, 1.000000e+00
  %510 = fmul double %500, %509
  store double %510, ptr %33, align 8, !tbaa !9
  %511 = load ptr, ptr %16, align 8, !tbaa !5
  %512 = load i32, ptr %511, align 4, !tbaa !11
  %513 = load ptr, ptr %15, align 8, !tbaa !5
  %514 = load i32, ptr %513, align 4, !tbaa !11
  %515 = sub nsw i32 %512, %514
  %516 = icmp sgt i32 %515, 2
  br i1 %516, label %517, label %608

517:                                              ; preds = %492
  %518 = load ptr, ptr %17, align 8, !tbaa !5
  %519 = load i32, ptr %37, align 4, !tbaa !11
  %520 = sub nsw i32 %519, 13
  %521 = sext i32 %520 to i64
  %522 = getelementptr inbounds double, ptr %518, i64 %521
  %523 = load double, ptr %522, align 8, !tbaa !9
  %524 = load ptr, ptr %17, align 8, !tbaa !5
  %525 = load i32, ptr %37, align 4, !tbaa !11
  %526 = sub nsw i32 %525, 15
  %527 = sext i32 %526 to i64
  %528 = getelementptr inbounds double, ptr %524, i64 %527
  %529 = load double, ptr %528, align 8, !tbaa !9
  %530 = fdiv double %523, %529
  store double %530, ptr %35, align 8, !tbaa !9
  %531 = load double, ptr %35, align 8, !tbaa !9
  %532 = load double, ptr %33, align 8, !tbaa !9
  %533 = fadd double %532, %531
  store double %533, ptr %33, align 8, !tbaa !9
  %534 = load ptr, ptr %15, align 8, !tbaa !5
  %535 = load i32, ptr %534, align 4, !tbaa !11
  %536 = shl i32 %535, 2
  %537 = sub nsw i32 %536, 1
  %538 = load ptr, ptr %18, align 8, !tbaa !5
  %539 = load i32, ptr %538, align 4, !tbaa !11
  %540 = add nsw i32 %537, %539
  store i32 %540, ptr %29, align 4, !tbaa !11
  %541 = load i32, ptr %37, align 4, !tbaa !11
  %542 = sub nsw i32 %541, 17
  store i32 %542, ptr %36, align 4, !tbaa !11
  br label %543

543:                                              ; preds = %601, %517
  %544 = load i32, ptr %36, align 4, !tbaa !11
  %545 = load i32, ptr %29, align 4, !tbaa !11
  %546 = icmp sge i32 %544, %545
  br i1 %546, label %547, label %604

547:                                              ; preds = %543
  %548 = load double, ptr %35, align 8, !tbaa !9
  %549 = fcmp oeq double %548, 0.000000e+00
  br i1 %549, label %550, label %551

550:                                              ; preds = %547
  br label %605

551:                                              ; preds = %547
  %552 = load double, ptr %35, align 8, !tbaa !9
  store double %552, ptr %34, align 8, !tbaa !9
  %553 = load ptr, ptr %17, align 8, !tbaa !5
  %554 = load i32, ptr %36, align 4, !tbaa !11
  %555 = sext i32 %554 to i64
  %556 = getelementptr inbounds double, ptr %553, i64 %555
  %557 = load double, ptr %556, align 8, !tbaa !9
  %558 = load ptr, ptr %17, align 8, !tbaa !5
  %559 = load i32, ptr %36, align 4, !tbaa !11
  %560 = sub nsw i32 %559, 2
  %561 = sext i32 %560 to i64
  %562 = getelementptr inbounds double, ptr %558, i64 %561
  %563 = load double, ptr %562, align 8, !tbaa !9
  %564 = fcmp ogt double %557, %563
  br i1 %564, label %565, label %566

565:                                              ; preds = %551
  store i32 1, ptr %42, align 4
  br label %1092

566:                                              ; preds = %551
  %567 = load ptr, ptr %17, align 8, !tbaa !5
  %568 = load i32, ptr %36, align 4, !tbaa !11
  %569 = sext i32 %568 to i64
  %570 = getelementptr inbounds double, ptr %567, i64 %569
  %571 = load double, ptr %570, align 8, !tbaa !9
  %572 = load ptr, ptr %17, align 8, !tbaa !5
  %573 = load i32, ptr %36, align 4, !tbaa !11
  %574 = sub nsw i32 %573, 2
  %575 = sext i32 %574 to i64
  %576 = getelementptr inbounds double, ptr %572, i64 %575
  %577 = load double, ptr %576, align 8, !tbaa !9
  %578 = fdiv double %571, %577
  %579 = load double, ptr %35, align 8, !tbaa !9
  %580 = fmul double %579, %578
  store double %580, ptr %35, align 8, !tbaa !9
  %581 = load double, ptr %35, align 8, !tbaa !9
  %582 = load double, ptr %33, align 8, !tbaa !9
  %583 = fadd double %582, %581
  store double %583, ptr %33, align 8, !tbaa !9
  %584 = load double, ptr %35, align 8, !tbaa !9
  %585 = load double, ptr %34, align 8, !tbaa !9
  %586 = fcmp oge double %584, %585
  br i1 %586, label %587, label %589

587:                                              ; preds = %566
  %588 = load double, ptr %35, align 8, !tbaa !9
  br label %591

589:                                              ; preds = %566
  %590 = load double, ptr %34, align 8, !tbaa !9
  br label %591

591:                                              ; preds = %589, %587
  %592 = phi double [ %588, %587 ], [ %590, %589 ]
  %593 = fmul double %592, 1.000000e+02
  %594 = load double, ptr %33, align 8, !tbaa !9
  %595 = fcmp olt double %593, %594
  br i1 %595, label %599, label %596

596:                                              ; preds = %591
  %597 = load double, ptr %33, align 8, !tbaa !9
  %598 = fcmp olt double 5.630000e-01, %597
  br i1 %598, label %599, label %600

599:                                              ; preds = %596, %591
  br label %605

600:                                              ; preds = %596
  br label %601

601:                                              ; preds = %600
  %602 = load i32, ptr %36, align 4, !tbaa !11
  %603 = add nsw i32 %602, -4
  store i32 %603, ptr %36, align 4, !tbaa !11
  br label %543, !llvm.loop !15

604:                                              ; preds = %543
  br label %605

605:                                              ; preds = %604, %599, %550
  %606 = load double, ptr %33, align 8, !tbaa !9
  %607 = fmul double %606, 1.050000e+00
  store double %607, ptr %33, align 8, !tbaa !9
  br label %608

608:                                              ; preds = %605, %492
  %609 = load double, ptr %33, align 8, !tbaa !9
  %610 = fcmp olt double %609, 5.630000e-01
  br i1 %610, label %611, label %620

611:                                              ; preds = %608
  %612 = load double, ptr %39, align 8, !tbaa !9
  %613 = load double, ptr %33, align 8, !tbaa !9
  %614 = call double @sqrt(double noundef %613) #4
  %615 = fsub double 1.000000e+00, %614
  %616 = fmul double %612, %615
  %617 = load double, ptr %33, align 8, !tbaa !9
  %618 = fadd double %617, 1.000000e+00
  %619 = fdiv double %616, %618
  store double %619, ptr %32, align 8, !tbaa !9
  br label %620

620:                                              ; preds = %611, %608
  br label %648

621:                                              ; preds = %444
  %622 = load ptr, ptr %27, align 8, !tbaa !5
  %623 = load i32, ptr %622, align 4, !tbaa !11
  %624 = icmp eq i32 %623, -6
  br i1 %624, label %625, label %632

625:                                              ; preds = %621
  %626 = load ptr, ptr %28, align 8, !tbaa !5
  %627 = load double, ptr %626, align 8, !tbaa !9
  %628 = fsub double 1.000000e+00, %627
  %629 = load ptr, ptr %28, align 8, !tbaa !5
  %630 = load double, ptr %629, align 8, !tbaa !9
  %631 = call double @llvm.fmuladd.f64(double %628, double 3.330000e-01, double %630)
  store double %631, ptr %629, align 8, !tbaa !9
  br label %641

632:                                              ; preds = %621
  %633 = load ptr, ptr %27, align 8, !tbaa !5
  %634 = load i32, ptr %633, align 4, !tbaa !11
  %635 = icmp eq i32 %634, -18
  br i1 %635, label %636, label %638

636:                                              ; preds = %632
  %637 = load ptr, ptr %28, align 8, !tbaa !5
  store double 8.325000e-02, ptr %637, align 8, !tbaa !9
  br label %640

638:                                              ; preds = %632
  %639 = load ptr, ptr %28, align 8, !tbaa !5
  store double 2.500000e-01, ptr %639, align 8, !tbaa !9
  br label %640

640:                                              ; preds = %638, %636
  br label %641

641:                                              ; preds = %640, %625
  %642 = load ptr, ptr %28, align 8, !tbaa !5
  %643 = load double, ptr %642, align 8, !tbaa !9
  %644 = load ptr, ptr %20, align 8, !tbaa !5
  %645 = load double, ptr %644, align 8, !tbaa !9
  %646 = fmul double %643, %645
  store double %646, ptr %32, align 8, !tbaa !9
  %647 = load ptr, ptr %27, align 8, !tbaa !5
  store i32 -6, ptr %647, align 4, !tbaa !11
  br label %648

648:                                              ; preds = %641, %620
  br label %649

649:                                              ; preds = %648, %443
  br label %1089

650:                                              ; preds = %54
  %651 = load ptr, ptr %19, align 8, !tbaa !5
  %652 = load i32, ptr %651, align 4, !tbaa !11
  %653 = load ptr, ptr %16, align 8, !tbaa !5
  %654 = load i32, ptr %653, align 4, !tbaa !11
  %655 = add nsw i32 %654, 1
  %656 = icmp eq i32 %652, %655
  br i1 %656, label %657, label %856

657:                                              ; preds = %650
  %658 = load ptr, ptr %21, align 8, !tbaa !5
  %659 = load double, ptr %658, align 8, !tbaa !9
  %660 = load ptr, ptr %24, align 8, !tbaa !5
  %661 = load double, ptr %660, align 8, !tbaa !9
  %662 = fcmp oeq double %659, %661
  br i1 %662, label %663, label %840

663:                                              ; preds = %657
  %664 = load ptr, ptr %22, align 8, !tbaa !5
  %665 = load double, ptr %664, align 8, !tbaa !9
  %666 = load ptr, ptr %25, align 8, !tbaa !5
  %667 = load double, ptr %666, align 8, !tbaa !9
  %668 = fcmp oeq double %665, %667
  br i1 %668, label %669, label %840

669:                                              ; preds = %663
  %670 = load ptr, ptr %27, align 8, !tbaa !5
  store i32 -7, ptr %670, align 4, !tbaa !11
  %671 = load ptr, ptr %21, align 8, !tbaa !5
  %672 = load double, ptr %671, align 8, !tbaa !9
  %673 = fmul double %672, 3.330000e-01
  store double %673, ptr %32, align 8, !tbaa !9
  %674 = load ptr, ptr %17, align 8, !tbaa !5
  %675 = load i32, ptr %37, align 4, !tbaa !11
  %676 = sub nsw i32 %675, 5
  %677 = sext i32 %676 to i64
  %678 = getelementptr inbounds double, ptr %674, i64 %677
  %679 = load double, ptr %678, align 8, !tbaa !9
  %680 = load ptr, ptr %17, align 8, !tbaa !5
  %681 = load i32, ptr %37, align 4, !tbaa !11
  %682 = sub nsw i32 %681, 7
  %683 = sext i32 %682 to i64
  %684 = getelementptr inbounds double, ptr %680, i64 %683
  %685 = load double, ptr %684, align 8, !tbaa !9
  %686 = fcmp ogt double %679, %685
  br i1 %686, label %687, label %688

687:                                              ; preds = %669
  store i32 1, ptr %42, align 4
  br label %1092

688:                                              ; preds = %669
  %689 = load ptr, ptr %17, align 8, !tbaa !5
  %690 = load i32, ptr %37, align 4, !tbaa !11
  %691 = sub nsw i32 %690, 5
  %692 = sext i32 %691 to i64
  %693 = getelementptr inbounds double, ptr %689, i64 %692
  %694 = load double, ptr %693, align 8, !tbaa !9
  %695 = load ptr, ptr %17, align 8, !tbaa !5
  %696 = load i32, ptr %37, align 4, !tbaa !11
  %697 = sub nsw i32 %696, 7
  %698 = sext i32 %697 to i64
  %699 = getelementptr inbounds double, ptr %695, i64 %698
  %700 = load double, ptr %699, align 8, !tbaa !9
  %701 = fdiv double %694, %700
  store double %701, ptr %34, align 8, !tbaa !9
  %702 = load double, ptr %34, align 8, !tbaa !9
  store double %702, ptr %35, align 8, !tbaa !9
  %703 = load double, ptr %35, align 8, !tbaa !9
  %704 = fcmp oeq double %703, 0.000000e+00
  br i1 %704, label %705, label %706

705:                                              ; preds = %688
  br label %776

706:                                              ; preds = %688
  %707 = load ptr, ptr %15, align 8, !tbaa !5
  %708 = load i32, ptr %707, align 4, !tbaa !11
  %709 = shl i32 %708, 2
  %710 = sub nsw i32 %709, 1
  %711 = load ptr, ptr %18, align 8, !tbaa !5
  %712 = load i32, ptr %711, align 4, !tbaa !11
  %713 = add nsw i32 %710, %712
  store i32 %713, ptr %29, align 4, !tbaa !11
  %714 = load ptr, ptr %16, align 8, !tbaa !5
  %715 = load i32, ptr %714, align 4, !tbaa !11
  %716 = shl i32 %715, 2
  %717 = sub nsw i32 %716, 9
  %718 = load ptr, ptr %18, align 8, !tbaa !5
  %719 = load i32, ptr %718, align 4, !tbaa !11
  %720 = add nsw i32 %717, %719
  store i32 %720, ptr %36, align 4, !tbaa !11
  br label %721

721:                                              ; preds = %772, %706
  %722 = load i32, ptr %36, align 4, !tbaa !11
  %723 = load i32, ptr %29, align 4, !tbaa !11
  %724 = icmp sge i32 %722, %723
  br i1 %724, label %725, label %775

725:                                              ; preds = %721
  %726 = load double, ptr %34, align 8, !tbaa !9
  store double %726, ptr %33, align 8, !tbaa !9
  %727 = load ptr, ptr %17, align 8, !tbaa !5
  %728 = load i32, ptr %36, align 4, !tbaa !11
  %729 = sext i32 %728 to i64
  %730 = getelementptr inbounds double, ptr %727, i64 %729
  %731 = load double, ptr %730, align 8, !tbaa !9
  %732 = load ptr, ptr %17, align 8, !tbaa !5
  %733 = load i32, ptr %36, align 4, !tbaa !11
  %734 = sub nsw i32 %733, 2
  %735 = sext i32 %734 to i64
  %736 = getelementptr inbounds double, ptr %732, i64 %735
  %737 = load double, ptr %736, align 8, !tbaa !9
  %738 = fcmp ogt double %731, %737
  br i1 %738, label %739, label %740

739:                                              ; preds = %725
  store i32 1, ptr %42, align 4
  br label %1092

740:                                              ; preds = %725
  %741 = load ptr, ptr %17, align 8, !tbaa !5
  %742 = load i32, ptr %36, align 4, !tbaa !11
  %743 = sext i32 %742 to i64
  %744 = getelementptr inbounds double, ptr %741, i64 %743
  %745 = load double, ptr %744, align 8, !tbaa !9
  %746 = load ptr, ptr %17, align 8, !tbaa !5
  %747 = load i32, ptr %36, align 4, !tbaa !11
  %748 = sub nsw i32 %747, 2
  %749 = sext i32 %748 to i64
  %750 = getelementptr inbounds double, ptr %746, i64 %749
  %751 = load double, ptr %750, align 8, !tbaa !9
  %752 = fdiv double %745, %751
  %753 = load double, ptr %34, align 8, !tbaa !9
  %754 = fmul double %753, %752
  store double %754, ptr %34, align 8, !tbaa !9
  %755 = load double, ptr %34, align 8, !tbaa !9
  %756 = load double, ptr %35, align 8, !tbaa !9
  %757 = fadd double %756, %755
  store double %757, ptr %35, align 8, !tbaa !9
  %758 = load double, ptr %34, align 8, !tbaa !9
  %759 = load double, ptr %33, align 8, !tbaa !9
  %760 = fcmp oge double %758, %759
  br i1 %760, label %761, label %763

761:                                              ; preds = %740
  %762 = load double, ptr %34, align 8, !tbaa !9
  br label %765

763:                                              ; preds = %740
  %764 = load double, ptr %33, align 8, !tbaa !9
  br label %765

765:                                              ; preds = %763, %761
  %766 = phi double [ %762, %761 ], [ %764, %763 ]
  %767 = fmul double %766, 1.000000e+02
  %768 = load double, ptr %35, align 8, !tbaa !9
  %769 = fcmp olt double %767, %768
  br i1 %769, label %770, label %771

770:                                              ; preds = %765
  br label %776

771:                                              ; preds = %765
  br label %772

772:                                              ; preds = %771
  %773 = load i32, ptr %36, align 4, !tbaa !11
  %774 = add nsw i32 %773, -4
  store i32 %774, ptr %36, align 4, !tbaa !11
  br label %721, !llvm.loop !16

775:                                              ; preds = %721
  br label %776

776:                                              ; preds = %775, %770, %705
  %777 = load double, ptr %35, align 8, !tbaa !9
  %778 = fmul double %777, 1.050000e+00
  %779 = call double @sqrt(double noundef %778) #4
  store double %779, ptr %35, align 8, !tbaa !9
  %780 = load double, ptr %35, align 8, !tbaa !9
  store double %780, ptr %30, align 8, !tbaa !9
  %781 = load ptr, ptr %21, align 8, !tbaa !5
  %782 = load double, ptr %781, align 8, !tbaa !9
  %783 = load double, ptr %30, align 8, !tbaa !9
  %784 = load double, ptr %30, align 8, !tbaa !9
  %785 = call double @llvm.fmuladd.f64(double %783, double %784, double 1.000000e+00)
  %786 = fdiv double %782, %785
  store double %786, ptr %33, align 8, !tbaa !9
  %787 = load ptr, ptr %22, align 8, !tbaa !5
  %788 = load double, ptr %787, align 8, !tbaa !9
  %789 = load double, ptr %33, align 8, !tbaa !9
  %790 = fneg double %789
  %791 = call double @llvm.fmuladd.f64(double %788, double 5.000000e-01, double %790)
  store double %791, ptr %41, align 8, !tbaa !9
  %792 = load double, ptr %41, align 8, !tbaa !9
  %793 = fcmp ogt double %792, 0.000000e+00
  br i1 %793, label %794, label %822

794:                                              ; preds = %776
  %795 = load double, ptr %41, align 8, !tbaa !9
  %796 = load double, ptr %35, align 8, !tbaa !9
  %797 = load double, ptr %33, align 8, !tbaa !9
  %798 = fmul double %796, %797
  %799 = fcmp ogt double %795, %798
  br i1 %799, label %800, label %822

800:                                              ; preds = %794
  %801 = load double, ptr %32, align 8, !tbaa !9
  store double %801, ptr %30, align 8, !tbaa !9
  %802 = load double, ptr %33, align 8, !tbaa !9
  %803 = load double, ptr %33, align 8, !tbaa !9
  %804 = fmul double %803, 1.010000e+00
  %805 = load double, ptr %35, align 8, !tbaa !9
  %806 = load double, ptr %41, align 8, !tbaa !9
  %807 = fdiv double %805, %806
  %808 = fmul double %804, %807
  %809 = load double, ptr %35, align 8, !tbaa !9
  %810 = fneg double %808
  %811 = call double @llvm.fmuladd.f64(double %810, double %809, double 1.000000e+00)
  %812 = fmul double %802, %811
  store double %812, ptr %31, align 8, !tbaa !9
  %813 = load double, ptr %30, align 8, !tbaa !9
  %814 = load double, ptr %31, align 8, !tbaa !9
  %815 = fcmp oge double %813, %814
  br i1 %815, label %816, label %818

816:                                              ; preds = %800
  %817 = load double, ptr %30, align 8, !tbaa !9
  br label %820

818:                                              ; preds = %800
  %819 = load double, ptr %31, align 8, !tbaa !9
  br label %820

820:                                              ; preds = %818, %816
  %821 = phi double [ %817, %816 ], [ %819, %818 ]
  store double %821, ptr %32, align 8, !tbaa !9
  br label %839

822:                                              ; preds = %794, %776
  %823 = load double, ptr %32, align 8, !tbaa !9
  store double %823, ptr %30, align 8, !tbaa !9
  %824 = load double, ptr %33, align 8, !tbaa !9
  %825 = load double, ptr %35, align 8, !tbaa !9
  %826 = fneg double %825
  %827 = call double @llvm.fmuladd.f64(double %826, double 1.010000e+00, double 1.000000e+00)
  %828 = fmul double %824, %827
  store double %828, ptr %31, align 8, !tbaa !9
  %829 = load double, ptr %30, align 8, !tbaa !9
  %830 = load double, ptr %31, align 8, !tbaa !9
  %831 = fcmp oge double %829, %830
  br i1 %831, label %832, label %834

832:                                              ; preds = %822
  %833 = load double, ptr %30, align 8, !tbaa !9
  br label %836

834:                                              ; preds = %822
  %835 = load double, ptr %31, align 8, !tbaa !9
  br label %836

836:                                              ; preds = %834, %832
  %837 = phi double [ %833, %832 ], [ %835, %834 ]
  store double %837, ptr %32, align 8, !tbaa !9
  %838 = load ptr, ptr %27, align 8, !tbaa !5
  store i32 -8, ptr %838, align 4, !tbaa !11
  br label %839

839:                                              ; preds = %836, %820
  br label %855

840:                                              ; preds = %663, %657
  %841 = load ptr, ptr %21, align 8, !tbaa !5
  %842 = load double, ptr %841, align 8, !tbaa !9
  %843 = fmul double %842, 2.500000e-01
  store double %843, ptr %32, align 8, !tbaa !9
  %844 = load ptr, ptr %21, align 8, !tbaa !5
  %845 = load double, ptr %844, align 8, !tbaa !9
  %846 = load ptr, ptr %24, align 8, !tbaa !5
  %847 = load double, ptr %846, align 8, !tbaa !9
  %848 = fcmp oeq double %845, %847
  br i1 %848, label %849, label %853

849:                                              ; preds = %840
  %850 = load ptr, ptr %21, align 8, !tbaa !5
  %851 = load double, ptr %850, align 8, !tbaa !9
  %852 = fmul double %851, 5.000000e-01
  store double %852, ptr %32, align 8, !tbaa !9
  br label %853

853:                                              ; preds = %849, %840
  %854 = load ptr, ptr %27, align 8, !tbaa !5
  store i32 -9, ptr %854, align 4, !tbaa !11
  br label %855

855:                                              ; preds = %853, %839
  br label %1088

856:                                              ; preds = %650
  %857 = load ptr, ptr %19, align 8, !tbaa !5
  %858 = load i32, ptr %857, align 4, !tbaa !11
  %859 = load ptr, ptr %16, align 8, !tbaa !5
  %860 = load i32, ptr %859, align 4, !tbaa !11
  %861 = add nsw i32 %860, 2
  %862 = icmp eq i32 %858, %861
  br i1 %862, label %863, label %1077

863:                                              ; preds = %856
  %864 = load ptr, ptr %22, align 8, !tbaa !5
  %865 = load double, ptr %864, align 8, !tbaa !9
  %866 = load ptr, ptr %25, align 8, !tbaa !5
  %867 = load double, ptr %866, align 8, !tbaa !9
  %868 = fcmp oeq double %865, %867
  br i1 %868, label %869, label %1071

869:                                              ; preds = %863
  %870 = load ptr, ptr %17, align 8, !tbaa !5
  %871 = load i32, ptr %37, align 4, !tbaa !11
  %872 = sub nsw i32 %871, 5
  %873 = sext i32 %872 to i64
  %874 = getelementptr inbounds double, ptr %870, i64 %873
  %875 = load double, ptr %874, align 8, !tbaa !9
  %876 = fmul double %875, 2.000000e+00
  %877 = load ptr, ptr %17, align 8, !tbaa !5
  %878 = load i32, ptr %37, align 4, !tbaa !11
  %879 = sub nsw i32 %878, 7
  %880 = sext i32 %879 to i64
  %881 = getelementptr inbounds double, ptr %877, i64 %880
  %882 = load double, ptr %881, align 8, !tbaa !9
  %883 = fcmp olt double %876, %882
  br i1 %883, label %884, label %1071

884:                                              ; preds = %869
  %885 = load ptr, ptr %27, align 8, !tbaa !5
  store i32 -10, ptr %885, align 4, !tbaa !11
  %886 = load ptr, ptr %22, align 8, !tbaa !5
  %887 = load double, ptr %886, align 8, !tbaa !9
  %888 = fmul double %887, 3.330000e-01
  store double %888, ptr %32, align 8, !tbaa !9
  %889 = load ptr, ptr %17, align 8, !tbaa !5
  %890 = load i32, ptr %37, align 4, !tbaa !11
  %891 = sub nsw i32 %890, 5
  %892 = sext i32 %891 to i64
  %893 = getelementptr inbounds double, ptr %889, i64 %892
  %894 = load double, ptr %893, align 8, !tbaa !9
  %895 = load ptr, ptr %17, align 8, !tbaa !5
  %896 = load i32, ptr %37, align 4, !tbaa !11
  %897 = sub nsw i32 %896, 7
  %898 = sext i32 %897 to i64
  %899 = getelementptr inbounds double, ptr %895, i64 %898
  %900 = load double, ptr %899, align 8, !tbaa !9
  %901 = fcmp ogt double %894, %900
  br i1 %901, label %902, label %903

902:                                              ; preds = %884
  store i32 1, ptr %42, align 4
  br label %1092

903:                                              ; preds = %884
  %904 = load ptr, ptr %17, align 8, !tbaa !5
  %905 = load i32, ptr %37, align 4, !tbaa !11
  %906 = sub nsw i32 %905, 5
  %907 = sext i32 %906 to i64
  %908 = getelementptr inbounds double, ptr %904, i64 %907
  %909 = load double, ptr %908, align 8, !tbaa !9
  %910 = load ptr, ptr %17, align 8, !tbaa !5
  %911 = load i32, ptr %37, align 4, !tbaa !11
  %912 = sub nsw i32 %911, 7
  %913 = sext i32 %912 to i64
  %914 = getelementptr inbounds double, ptr %910, i64 %913
  %915 = load double, ptr %914, align 8, !tbaa !9
  %916 = fdiv double %909, %915
  store double %916, ptr %34, align 8, !tbaa !9
  %917 = load double, ptr %34, align 8, !tbaa !9
  store double %917, ptr %35, align 8, !tbaa !9
  %918 = load double, ptr %35, align 8, !tbaa !9
  %919 = fcmp oeq double %918, 0.000000e+00
  br i1 %919, label %920, label %921

920:                                              ; preds = %903
  br label %982

921:                                              ; preds = %903
  %922 = load ptr, ptr %15, align 8, !tbaa !5
  %923 = load i32, ptr %922, align 4, !tbaa !11
  %924 = shl i32 %923, 2
  %925 = sub nsw i32 %924, 1
  %926 = load ptr, ptr %18, align 8, !tbaa !5
  %927 = load i32, ptr %926, align 4, !tbaa !11
  %928 = add nsw i32 %925, %927
  store i32 %928, ptr %29, align 4, !tbaa !11
  %929 = load ptr, ptr %16, align 8, !tbaa !5
  %930 = load i32, ptr %929, align 4, !tbaa !11
  %931 = shl i32 %930, 2
  %932 = sub nsw i32 %931, 9
  %933 = load ptr, ptr %18, align 8, !tbaa !5
  %934 = load i32, ptr %933, align 4, !tbaa !11
  %935 = add nsw i32 %932, %934
  store i32 %935, ptr %36, align 4, !tbaa !11
  br label %936

936:                                              ; preds = %978, %921
  %937 = load i32, ptr %36, align 4, !tbaa !11
  %938 = load i32, ptr %29, align 4, !tbaa !11
  %939 = icmp sge i32 %937, %938
  br i1 %939, label %940, label %981

940:                                              ; preds = %936
  %941 = load ptr, ptr %17, align 8, !tbaa !5
  %942 = load i32, ptr %36, align 4, !tbaa !11
  %943 = sext i32 %942 to i64
  %944 = getelementptr inbounds double, ptr %941, i64 %943
  %945 = load double, ptr %944, align 8, !tbaa !9
  %946 = load ptr, ptr %17, align 8, !tbaa !5
  %947 = load i32, ptr %36, align 4, !tbaa !11
  %948 = sub nsw i32 %947, 2
  %949 = sext i32 %948 to i64
  %950 = getelementptr inbounds double, ptr %946, i64 %949
  %951 = load double, ptr %950, align 8, !tbaa !9
  %952 = fcmp ogt double %945, %951
  br i1 %952, label %953, label %954

953:                                              ; preds = %940
  store i32 1, ptr %42, align 4
  br label %1092

954:                                              ; preds = %940
  %955 = load ptr, ptr %17, align 8, !tbaa !5
  %956 = load i32, ptr %36, align 4, !tbaa !11
  %957 = sext i32 %956 to i64
  %958 = getelementptr inbounds double, ptr %955, i64 %957
  %959 = load double, ptr %958, align 8, !tbaa !9
  %960 = load ptr, ptr %17, align 8, !tbaa !5
  %961 = load i32, ptr %36, align 4, !tbaa !11
  %962 = sub nsw i32 %961, 2
  %963 = sext i32 %962 to i64
  %964 = getelementptr inbounds double, ptr %960, i64 %963
  %965 = load double, ptr %964, align 8, !tbaa !9
  %966 = fdiv double %959, %965
  %967 = load double, ptr %34, align 8, !tbaa !9
  %968 = fmul double %967, %966
  store double %968, ptr %34, align 8, !tbaa !9
  %969 = load double, ptr %34, align 8, !tbaa !9
  %970 = load double, ptr %35, align 8, !tbaa !9
  %971 = fadd double %970, %969
  store double %971, ptr %35, align 8, !tbaa !9
  %972 = load double, ptr %34, align 8, !tbaa !9
  %973 = fmul double %972, 1.000000e+02
  %974 = load double, ptr %35, align 8, !tbaa !9
  %975 = fcmp olt double %973, %974
  br i1 %975, label %976, label %977

976:                                              ; preds = %954
  br label %982

977:                                              ; preds = %954
  br label %978

978:                                              ; preds = %977
  %979 = load i32, ptr %36, align 4, !tbaa !11
  %980 = add nsw i32 %979, -4
  store i32 %980, ptr %36, align 4, !tbaa !11
  br label %936, !llvm.loop !17

981:                                              ; preds = %936
  br label %982

982:                                              ; preds = %981, %976, %920
  %983 = load double, ptr %35, align 8, !tbaa !9
  %984 = fmul double %983, 1.050000e+00
  %985 = call double @sqrt(double noundef %984) #4
  store double %985, ptr %35, align 8, !tbaa !9
  %986 = load double, ptr %35, align 8, !tbaa !9
  store double %986, ptr %30, align 8, !tbaa !9
  %987 = load ptr, ptr %22, align 8, !tbaa !5
  %988 = load double, ptr %987, align 8, !tbaa !9
  %989 = load double, ptr %30, align 8, !tbaa !9
  %990 = load double, ptr %30, align 8, !tbaa !9
  %991 = call double @llvm.fmuladd.f64(double %989, double %990, double 1.000000e+00)
  %992 = fdiv double %988, %991
  store double %992, ptr %33, align 8, !tbaa !9
  %993 = load ptr, ptr %17, align 8, !tbaa !5
  %994 = load i32, ptr %37, align 4, !tbaa !11
  %995 = sub nsw i32 %994, 7
  %996 = sext i32 %995 to i64
  %997 = getelementptr inbounds double, ptr %993, i64 %996
  %998 = load double, ptr %997, align 8, !tbaa !9
  %999 = load ptr, ptr %17, align 8, !tbaa !5
  %1000 = load i32, ptr %37, align 4, !tbaa !11
  %1001 = sub nsw i32 %1000, 9
  %1002 = sext i32 %1001 to i64
  %1003 = getelementptr inbounds double, ptr %999, i64 %1002
  %1004 = load double, ptr %1003, align 8, !tbaa !9
  %1005 = fadd double %998, %1004
  %1006 = load ptr, ptr %17, align 8, !tbaa !5
  %1007 = load i32, ptr %37, align 4, !tbaa !11
  %1008 = sub nsw i32 %1007, 11
  %1009 = sext i32 %1008 to i64
  %1010 = getelementptr inbounds double, ptr %1006, i64 %1009
  %1011 = load double, ptr %1010, align 8, !tbaa !9
  %1012 = call double @sqrt(double noundef %1011) #4
  %1013 = load ptr, ptr %17, align 8, !tbaa !5
  %1014 = load i32, ptr %37, align 4, !tbaa !11
  %1015 = sub nsw i32 %1014, 9
  %1016 = sext i32 %1015 to i64
  %1017 = getelementptr inbounds double, ptr %1013, i64 %1016
  %1018 = load double, ptr %1017, align 8, !tbaa !9
  %1019 = call double @sqrt(double noundef %1018) #4
  %1020 = fneg double %1012
  %1021 = call double @llvm.fmuladd.f64(double %1020, double %1019, double %1005)
  %1022 = load double, ptr %33, align 8, !tbaa !9
  %1023 = fsub double %1021, %1022
  store double %1023, ptr %41, align 8, !tbaa !9
  %1024 = load double, ptr %41, align 8, !tbaa !9
  %1025 = fcmp ogt double %1024, 0.000000e+00
  br i1 %1025, label %1026, label %1054

1026:                                             ; preds = %982
  %1027 = load double, ptr %41, align 8, !tbaa !9
  %1028 = load double, ptr %35, align 8, !tbaa !9
  %1029 = load double, ptr %33, align 8, !tbaa !9
  %1030 = fmul double %1028, %1029
  %1031 = fcmp ogt double %1027, %1030
  br i1 %1031, label %1032, label %1054

1032:                                             ; preds = %1026
  %1033 = load double, ptr %32, align 8, !tbaa !9
  store double %1033, ptr %30, align 8, !tbaa !9
  %1034 = load double, ptr %33, align 8, !tbaa !9
  %1035 = load double, ptr %33, align 8, !tbaa !9
  %1036 = fmul double %1035, 1.010000e+00
  %1037 = load double, ptr %35, align 8, !tbaa !9
  %1038 = load double, ptr %41, align 8, !tbaa !9
  %1039 = fdiv double %1037, %1038
  %1040 = fmul double %1036, %1039
  %1041 = load double, ptr %35, align 8, !tbaa !9
  %1042 = fneg double %1040
  %1043 = call double @llvm.fmuladd.f64(double %1042, double %1041, double 1.000000e+00)
  %1044 = fmul double %1034, %1043
  store double %1044, ptr %31, align 8, !tbaa !9
  %1045 = load double, ptr %30, align 8, !tbaa !9
  %1046 = load double, ptr %31, align 8, !tbaa !9
  %1047 = fcmp oge double %1045, %1046
  br i1 %1047, label %1048, label %1050

1048:                                             ; preds = %1032
  %1049 = load double, ptr %30, align 8, !tbaa !9
  br label %1052

1050:                                             ; preds = %1032
  %1051 = load double, ptr %31, align 8, !tbaa !9
  br label %1052

1052:                                             ; preds = %1050, %1048
  %1053 = phi double [ %1049, %1048 ], [ %1051, %1050 ]
  store double %1053, ptr %32, align 8, !tbaa !9
  br label %1070

1054:                                             ; preds = %1026, %982
  %1055 = load double, ptr %32, align 8, !tbaa !9
  store double %1055, ptr %30, align 8, !tbaa !9
  %1056 = load double, ptr %33, align 8, !tbaa !9
  %1057 = load double, ptr %35, align 8, !tbaa !9
  %1058 = fneg double %1057
  %1059 = call double @llvm.fmuladd.f64(double %1058, double 1.010000e+00, double 1.000000e+00)
  %1060 = fmul double %1056, %1059
  store double %1060, ptr %31, align 8, !tbaa !9
  %1061 = load double, ptr %30, align 8, !tbaa !9
  %1062 = load double, ptr %31, align 8, !tbaa !9
  %1063 = fcmp oge double %1061, %1062
  br i1 %1063, label %1064, label %1066

1064:                                             ; preds = %1054
  %1065 = load double, ptr %30, align 8, !tbaa !9
  br label %1068

1066:                                             ; preds = %1054
  %1067 = load double, ptr %31, align 8, !tbaa !9
  br label %1068

1068:                                             ; preds = %1066, %1064
  %1069 = phi double [ %1065, %1064 ], [ %1067, %1066 ]
  store double %1069, ptr %32, align 8, !tbaa !9
  br label %1070

1070:                                             ; preds = %1068, %1052
  br label %1076

1071:                                             ; preds = %869, %863
  %1072 = load ptr, ptr %22, align 8, !tbaa !5
  %1073 = load double, ptr %1072, align 8, !tbaa !9
  %1074 = fmul double %1073, 2.500000e-01
  store double %1074, ptr %32, align 8, !tbaa !9
  %1075 = load ptr, ptr %27, align 8, !tbaa !5
  store i32 -11, ptr %1075, align 4, !tbaa !11
  br label %1076

1076:                                             ; preds = %1071, %1070
  br label %1087

1077:                                             ; preds = %856
  %1078 = load ptr, ptr %19, align 8, !tbaa !5
  %1079 = load i32, ptr %1078, align 4, !tbaa !11
  %1080 = load ptr, ptr %16, align 8, !tbaa !5
  %1081 = load i32, ptr %1080, align 4, !tbaa !11
  %1082 = add nsw i32 %1081, 2
  %1083 = icmp sgt i32 %1079, %1082
  br i1 %1083, label %1084, label %1086

1084:                                             ; preds = %1077
  store double 0.000000e+00, ptr %32, align 8, !tbaa !9
  %1085 = load ptr, ptr %27, align 8, !tbaa !5
  store i32 -12, ptr %1085, align 4, !tbaa !11
  br label %1086

1086:                                             ; preds = %1084, %1077
  br label %1087

1087:                                             ; preds = %1086, %1076
  br label %1088

1088:                                             ; preds = %1087, %855
  br label %1089

1089:                                             ; preds = %1088, %649
  %1090 = load double, ptr %32, align 8, !tbaa !9
  %1091 = load ptr, ptr %26, align 8, !tbaa !5
  store double %1090, ptr %1091, align 8, !tbaa !9
  store i32 1, ptr %42, align 4
  br label %1092

1092:                                             ; preds = %1089, %953, %902, %739, %687, %565, %491, %388, %337, %309, %271, %48
  call void @llvm.lifetime.end.p0(i64 8, ptr %41) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %40) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %39) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %38) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %37) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %36) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %35) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %34) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %33) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %32) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %31) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %30) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %29) #4
  ret void
}

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

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

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

; 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 = { 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 #3 = { nocallback nofree nosync nounwind speculatable willreturn memory(none) }
attributes #4 = { nounwind }

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

!0 = !{i32 1, !"wchar_size", i32 4}
!1 = !{i32 8, !"PIC Level", i32 2}
!2 = !{i32 7, !"PIE Level", i32 2}
!3 = !{i32 7, !"uwtable", i32 2}
!4 = !{!"clang version 19.1.0 (git@github.com:llvm/llvm-project.git a4bf6cd7cfb1a1421ba92bca9d017b49936c55e4)"}
!5 = !{!6, !6, i64 0}
!6 = !{!"any pointer", !7, i64 0}
!7 = !{!"omnipotent char", !8, i64 0}
!8 = !{!"Simple C/C++ TBAA"}
!9 = !{!10, !10, i64 0}
!10 = !{!"double", !7, i64 0}
!11 = !{!12, !12, i64 0}
!12 = !{!"int", !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"

; Function Attrs: nofree nounwind memory(write, argmem: readwrite) uwtable
define dso_local void @dlasq4_(ptr nocapture noundef readonly %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 writeonly %11, ptr nocapture noundef %12, ptr nocapture noundef %13) local_unnamed_addr #0 {
  %15 = getelementptr inbounds i8, ptr %2, i64 -8
  %16 = load double, ptr %5, align 8, !tbaa !5
  %17 = fcmp ugt double %16, 0.000000e+00
  br i1 %17, label %20, label %18

18:                                               ; preds = %14
  %19 = fneg double %16
  store double %19, ptr %11, align 8, !tbaa !5
  store i32 -1, ptr %12, align 4, !tbaa !9
  br label %.loopexit

20:                                               ; preds = %14
  %21 = load i32, ptr %1, align 4, !tbaa !9
  %22 = shl i32 %21, 2
  %23 = load i32, ptr %3, align 4, !tbaa !9
  %24 = add nsw i32 %22, %23
  %25 = load i32, ptr %4, align 4, !tbaa !9
  %26 = icmp eq i32 %25, %21
  br i1 %26, label %27, label %257

27:                                               ; preds = %20
  %28 = load double, ptr %8, align 8, !tbaa !5
  %29 = fcmp oeq double %16, %28
  br i1 %29, label %33, label %30

30:                                               ; preds = %27
  %31 = load double, ptr %9, align 8, !tbaa !5
  %32 = fcmp oeq double %16, %31
  br i1 %32, label %33, label %169

33:                                               ; preds = %30, %27
  %34 = sext i32 %24 to i64
  %35 = getelementptr double, ptr %15, i64 %34
  %36 = getelementptr i8, ptr %35, i64 -24
  %37 = load double, ptr %36, align 8, !tbaa !5
  %38 = tail call double @sqrt(double noundef %37) #3
  %39 = getelementptr i8, ptr %35, i64 -40
  %40 = load double, ptr %39, align 8, !tbaa !5
  %41 = tail call double @sqrt(double noundef %40) #3
  %42 = fmul double %38, %41
  %43 = getelementptr i8, ptr %35, i64 -56
  %44 = load double, ptr %43, align 8, !tbaa !5
  %45 = tail call double @sqrt(double noundef %44) #3
  %46 = add nsw i32 %24, -9
  %47 = sext i32 %46 to i64
  %48 = getelementptr inbounds double, ptr %15, i64 %47
  %49 = load double, ptr %48, align 8, !tbaa !5
  %50 = tail call double @sqrt(double noundef %49) #3
  %51 = fmul double %45, %50
  %52 = load double, ptr %43, align 8, !tbaa !5
  %53 = load double, ptr %39, align 8, !tbaa !5
  %54 = fadd double %52, %53
  %55 = load double, ptr %5, align 8, !tbaa !5
  %56 = load double, ptr %8, align 8, !tbaa !5
  %57 = fcmp oeq double %55, %56
  br i1 %57, label %58, label %105

58:                                               ; preds = %33
  %59 = load double, ptr %6, align 8, !tbaa !5
  %60 = load double, ptr %9, align 8, !tbaa !5
  %61 = fcmp oeq double %59, %60
  br i1 %61, label %62, label %100

62:                                               ; preds = %58
  %63 = load double, ptr %7, align 8, !tbaa !5
  %64 = fsub double %63, %54
  %65 = fneg double %63
  %66 = tail call double @llvm.fmuladd.f64(double %65, double 2.500000e-01, double %64)
  %67 = fcmp ogt double %66, 0.000000e+00
  %68 = fcmp ogt double %66, %51
  %or.cond450 = select i1 %67, i1 %68, i1 false
  %69 = fsub double %54, %56
  br i1 %or.cond450, label %70, label %74

70:                                               ; preds = %62
  %71 = fneg double %51
  %72 = fdiv double %71, %66
  %73 = tail call double @llvm.fmuladd.f64(double %72, double %51, double %69)
  br label %77

74:                                               ; preds = %62
  %75 = fadd double %42, %51
  %76 = fsub double %69, %75
  br label %77

77:                                               ; preds = %74, %70
  %.0 = phi double [ %73, %70 ], [ %76, %74 ]
  %78 = fcmp ogt double %.0, 0.000000e+00
  %79 = fcmp ogt double %.0, %42
  %or.cond451 = select i1 %78, i1 %79, i1 false
  br i1 %or.cond451, label %80, label %87

80:                                               ; preds = %77
  %81 = fneg double %42
  %82 = fdiv double %81, %.0
  %83 = tail call double @llvm.fmuladd.f64(double %82, double %42, double %56)
  %84 = fmul double %55, 5.000000e-01
  %85 = fcmp oge double %83, %84
  %86 = select i1 %85, double %83, double %84
  store i32 -2, ptr %12, align 4, !tbaa !9
  br label %415

87:                                               ; preds = %77
  %88 = fcmp ogt double %56, %42
  %89 = fsub double %56, %42
  %.0394 = select i1 %88, double %89, double 0.000000e+00
  %90 = fadd double %42, %51
  %91 = fcmp ogt double %54, %90
  br i1 %91, label %92, label %96

92:                                               ; preds = %87
  %93 = fsub double %54, %90
  %94 = fcmp ole double %.0394, %93
  %95 = select i1 %94, double %.0394, double %93
  br label %96

96:                                               ; preds = %92, %87
  %.1395 = phi double [ %95, %92 ], [ %.0394, %87 ]
  %97 = fmul double %55, 3.330000e-01
  %98 = fcmp oge double %.1395, %97
  %99 = select i1 %98, double %.1395, double %97
  store i32 -3, ptr %12, align 4, !tbaa !9
  br label %415

100:                                              ; preds = %58
  store i32 -4, ptr %12, align 4, !tbaa !9
  %101 = fcmp ogt double %53, %52
  br i1 %101, label %.loopexit, label %102

102:                                              ; preds = %100
  %103 = fdiv double %53, %52
  %.pre = load i32, ptr %3, align 4, !tbaa !9
  %104 = insertelement <2 x double> <double 0.000000e+00, double poison>, double %103, i64 1
  br label %129

105:                                              ; preds = %33
  store i32 -4, ptr %12, align 4, !tbaa !9
  %106 = load i32, ptr %3, align 4, !tbaa !9
  %107 = shl i32 %106, 1
  %108 = sub nsw i32 %24, %107
  %109 = load double, ptr %9, align 8, !tbaa !5
  %110 = sext i32 %108 to i64
  %111 = getelementptr double, ptr %15, i64 %110
  %112 = getelementptr i8, ptr %111, i64 -32
  %113 = load double, ptr %112, align 8, !tbaa !5
  %114 = getelementptr i8, ptr %111, i64 -16
  %115 = load double, ptr %114, align 8, !tbaa !5
  %116 = fcmp ogt double %113, %115
  br i1 %116, label %.loopexit, label %117

117:                                              ; preds = %105
  %118 = load double, ptr %48, align 8, !tbaa !5
  %119 = getelementptr i8, ptr %35, i64 -88
  %120 = load double, ptr %119, align 8, !tbaa !5
  %121 = fcmp ogt double %118, %120
  br i1 %121, label %.loopexit, label %122

122:                                              ; preds = %117
  %123 = insertelement <2 x double> poison, double %113, i64 0
  %124 = insertelement <2 x double> %123, double %118, i64 1
  %125 = insertelement <2 x double> poison, double %115, i64 0
  %126 = insertelement <2 x double> %125, double %120, i64 1
  %127 = fdiv <2 x double> %124, %126
  %128 = add nsw i32 %24, -13
  br label %129

129:                                              ; preds = %122, %102
  %130 = phi i32 [ %.pre, %102 ], [ %106, %122 ]
  %.0380 = phi i32 [ %46, %102 ], [ %128, %122 ]
  %.0379 = phi double [ %56, %102 ], [ %109, %122 ]
  %131 = phi <2 x double> [ %104, %102 ], [ %127, %122 ]
  %132 = fmul double %55, 2.500000e-01
  %133 = extractelement <2 x double> %131, i64 0
  %134 = extractelement <2 x double> %131, i64 1
  %135 = fadd double %133, %134
  %136 = load i32, ptr %0, align 4, !tbaa !9
  %137 = shl i32 %136, 2
  %138 = add nsw i32 %137, -1
  %139 = add nsw i32 %138, %130
  %140 = icmp slt i32 %.0380, %139
  %141 = fcmp oeq double %134, 0.000000e+00
  %or.cond5483 = or i1 %141, %140
  br i1 %or.cond5483, label %._crit_edge489, label %.lr.ph488.preheader

.lr.ph488.preheader:                              ; preds = %129
  %142 = sext i32 %.0380 to i64
  %143 = sext i32 %139 to i64
  br label %.lr.ph488

144:                                              ; preds = %152
  %indvars.iv.next507 = add nsw i64 %indvars.iv506, -4
  %145 = icmp slt i64 %indvars.iv.next507, %143
  %146 = fcmp oeq double %154, 0.000000e+00
  %or.cond5 = or i1 %146, %145
  br i1 %or.cond5, label %._crit_edge489, label %.lr.ph488, !llvm.loop !11

.lr.ph488:                                        ; preds = %.lr.ph488.preheader, %144
  %indvars.iv506 = phi i64 [ %142, %.lr.ph488.preheader ], [ %indvars.iv.next507, %144 ]
  %.1383485 = phi double [ %134, %.lr.ph488.preheader ], [ %154, %144 ]
  %.1389484 = phi double [ %135, %.lr.ph488.preheader ], [ %155, %144 ]
  %147 = getelementptr inbounds double, ptr %15, i64 %indvars.iv506
  %148 = load double, ptr %147, align 8, !tbaa !5
  %149 = getelementptr i8, ptr %147, i64 -16
  %150 = load double, ptr %149, align 8, !tbaa !5
  %151 = fcmp ogt double %148, %150
  br i1 %151, label %.loopexit, label %152

152:                                              ; preds = %.lr.ph488
  %153 = fdiv double %148, %150
  %154 = fmul double %.1383485, %153
  %155 = fadd double %.1389484, %154
  %156 = fcmp oge double %154, %.1383485
  %157 = select i1 %156, double %154, double %.1383485
  %158 = fmul double %157, 1.000000e+02
  %159 = fcmp olt double %158, %155
  %160 = fcmp ogt double %155, 5.630000e-01
  %or.cond = or i1 %160, %159
  br i1 %or.cond, label %._crit_edge489, label %144

._crit_edge489:                                   ; preds = %152, %144, %129
  %.2390 = phi double [ %135, %129 ], [ %155, %144 ], [ %155, %152 ]
  %161 = fmul double %.2390, 1.050000e+00
  %162 = fcmp olt double %161, 5.630000e-01
  br i1 %162, label %163, label %415

163:                                              ; preds = %._crit_edge489
  %164 = tail call double @sqrt(double noundef %161) #3
  %165 = fsub double 1.000000e+00, %164
  %166 = fmul double %.0379, %165
  %167 = fadd double %161, 1.000000e+00
  %168 = fdiv double %166, %167
  br label %415

169:                                              ; preds = %30
  %170 = load double, ptr %10, align 8, !tbaa !5
  %171 = fcmp oeq double %16, %170
  br i1 %171, label %172, label %247

172:                                              ; preds = %169
  store i32 -5, ptr %12, align 4, !tbaa !9
  %173 = fmul double %16, 2.500000e-01
  %174 = load i32, ptr %3, align 4, !tbaa !9
  %175 = shl i32 %174, 1
  %176 = sub nsw i32 %24, %175
  %177 = sext i32 %176 to i64
  %178 = getelementptr double, ptr %15, i64 %177
  %179 = getelementptr i8, ptr %178, i64 -16
  %180 = load double, ptr %179, align 8, !tbaa !5
  %181 = getelementptr i8, ptr %178, i64 -48
  %182 = load double, ptr %181, align 8, !tbaa !5
  %183 = getelementptr i8, ptr %178, i64 -64
  %184 = load double, ptr %183, align 8, !tbaa !5
  %185 = fcmp ogt double %184, %182
  br i1 %185, label %.loopexit, label %186

186:                                              ; preds = %172
  %187 = getelementptr i8, ptr %178, i64 -32
  %188 = load double, ptr %187, align 8, !tbaa !5
  %189 = fcmp ogt double %188, %180
  br i1 %189, label %.loopexit, label %190

190:                                              ; preds = %186
  %191 = insertelement <2 x double> poison, double %184, i64 0
  %192 = insertelement <2 x double> %191, double %188, i64 1
  %193 = insertelement <2 x double> poison, double %182, i64 0
  %194 = insertelement <2 x double> %193, double %180, i64 1
  %195 = fdiv <2 x double> %192, %194
  %196 = extractelement <2 x double> %195, i64 1
  %197 = fadd double %196, 1.000000e+00
  %198 = extractelement <2 x double> %195, i64 0
  %199 = fmul double %198, %197
  %200 = load i32, ptr %1, align 4, !tbaa !9
  %201 = load i32, ptr %0, align 4, !tbaa !9
  %202 = sub nsw i32 %200, %201
  %203 = icmp sgt i32 %202, 2
  br i1 %203, label %204, label %239

204:                                              ; preds = %190
  %205 = sext i32 %24 to i64
  %206 = getelementptr double, ptr %15, i64 %205
  %207 = getelementptr i8, ptr %206, i64 -104
  %208 = load double, ptr %207, align 8, !tbaa !5
  %209 = getelementptr i8, ptr %206, i64 -120
  %210 = load double, ptr %209, align 8, !tbaa !5
  %211 = fdiv double %208, %210
  %212 = fadd double %199, %211
  %213 = shl i32 %201, 2
  %214 = add i32 %174, -1
  %215 = add i32 %214, %213
  %216 = add nsw i32 %24, -17
  %217 = icmp slt i32 %216, %215
  %218 = fcmp oeq double %211, 0.000000e+00
  %or.cond7475 = select i1 %217, i1 true, i1 %218
  br i1 %or.cond7475, label %._crit_edge, label %.lr.ph479.preheader

.lr.ph479.preheader:                              ; preds = %204
  %219 = sext i32 %216 to i64
  %220 = sext i32 %215 to i64
  br label %.lr.ph479

221:                                              ; preds = %229
  %indvars.iv.next504 = add nsw i64 %indvars.iv503, -4
  %222 = icmp slt i64 %indvars.iv.next504, %220
  %223 = fcmp oeq double %231, 0.000000e+00
  %or.cond7 = or i1 %222, %223
  br i1 %or.cond7, label %._crit_edge, label %.lr.ph479, !llvm.loop !13

.lr.ph479:                                        ; preds = %.lr.ph479.preheader, %221
  %indvars.iv503 = phi i64 [ %219, %.lr.ph479.preheader ], [ %indvars.iv.next504, %221 ]
  %.2384477 = phi double [ %211, %.lr.ph479.preheader ], [ %231, %221 ]
  %.3391476 = phi double [ %212, %.lr.ph479.preheader ], [ %232, %221 ]
  %224 = getelementptr inbounds double, ptr %15, i64 %indvars.iv503
  %225 = load double, ptr %224, align 8, !tbaa !5
  %226 = getelementptr i8, ptr %224, i64 -16
  %227 = load double, ptr %226, align 8, !tbaa !5
  %228 = fcmp ogt double %225, %227
  br i1 %228, label %.loopexit, label %229

229:                                              ; preds = %.lr.ph479
  %230 = fdiv double %225, %227
  %231 = fmul double %.2384477, %230
  %232 = fadd double %.3391476, %231
  %233 = fcmp oge double %231, %.2384477
  %234 = select i1 %233, double %231, double %.2384477
  %235 = fmul double %234, 1.000000e+02
  %236 = fcmp olt double %235, %232
  %237 = fcmp ogt double %232, 5.630000e-01
  %or.cond3 = or i1 %237, %236
  br i1 %or.cond3, label %._crit_edge, label %221

._crit_edge:                                      ; preds = %229, %221, %204
  %.4392 = phi double [ %212, %204 ], [ %232, %221 ], [ %232, %229 ]
  %238 = fmul double %.4392, 1.050000e+00
  br label %239

239:                                              ; preds = %._crit_edge, %190
  %.5393 = phi double [ %238, %._crit_edge ], [ %199, %190 ]
  %240 = fcmp olt double %.5393, 5.630000e-01
  br i1 %240, label %241, label %415

241:                                              ; preds = %239
  %242 = tail call double @sqrt(double noundef %.5393) #3
  %243 = fsub double 1.000000e+00, %242
  %244 = fmul double %170, %243
  %245 = fadd double %.5393, 1.000000e+00
  %246 = fdiv double %244, %245
  br label %415

247:                                              ; preds = %169
  %248 = load i32, ptr %12, align 4, !tbaa !9
  switch i32 %248, label %253 [
    i32 -6, label %249
    i32 -18, label %254
  ]

249:                                              ; preds = %247
  %250 = load double, ptr %13, align 8, !tbaa !5
  %251 = fsub double 1.000000e+00, %250
  %252 = tail call double @llvm.fmuladd.f64(double %251, double 3.330000e-01, double %250)
  br label %254

253:                                              ; preds = %247
  br label %254

254:                                              ; preds = %247, %253, %249
  %.sink = phi double [ 2.500000e-01, %253 ], [ %252, %249 ], [ 8.325000e-02, %247 ]
  store double %.sink, ptr %13, align 8, !tbaa !5
  %255 = load double, ptr %5, align 8, !tbaa !5
  %256 = fmul double %.sink, %255
  store i32 -6, ptr %12, align 4, !tbaa !9
  br label %415

257:                                              ; preds = %20
  %258 = add nsw i32 %21, 1
  %259 = icmp eq i32 %25, %258
  br i1 %259, label %260, label %331

260:                                              ; preds = %257
  %261 = load double, ptr %6, align 8, !tbaa !5
  %262 = load double, ptr %9, align 8, !tbaa !5
  %263 = fcmp oeq double %261, %262
  br i1 %263, label %264, label %330

264:                                              ; preds = %260
  %265 = load double, ptr %7, align 8, !tbaa !5
  %266 = load double, ptr %10, align 8, !tbaa !5
  %267 = fcmp oeq double %265, %266
  br i1 %267, label %268, label %330

268:                                              ; preds = %264
  store i32 -7, ptr %12, align 4, !tbaa !9
  %269 = fmul double %261, 3.330000e-01
  %270 = sext i32 %24 to i64
  %271 = getelementptr double, ptr %15, i64 %270
  %272 = getelementptr i8, ptr %271, i64 -40
  %273 = load double, ptr %272, align 8, !tbaa !5
  %274 = getelementptr i8, ptr %271, i64 -56
  %275 = load double, ptr %274, align 8, !tbaa !5
  %276 = fcmp ogt double %273, %275
  br i1 %276, label %.loopexit, label %277

277:                                              ; preds = %268
  %278 = fdiv double %273, %275
  %279 = fcmp oeq double %278, 0.000000e+00
  br i1 %279, label %.loopexit457, label %280

280:                                              ; preds = %277
  %281 = load i32, ptr %0, align 4, !tbaa !9
  %282 = shl i32 %281, 2
  %283 = add nsw i32 %282, -1
  %284 = load i32, ptr %3, align 4, !tbaa !9
  %285 = add nsw i32 %283, %284
  %286 = load i32, ptr %1, align 4, !tbaa !9
  %287 = shl i32 %286, 2
  %288 = add i32 %284, -9
  %289 = add i32 %288, %287
  %.not449467 = icmp slt i32 %289, %285
  br i1 %.not449467, label %.loopexit457, label %.lr.ph471.preheader

.lr.ph471.preheader:                              ; preds = %280
  %290 = sext i32 %289 to i64
  %291 = sext i32 %285 to i64
  br label %.lr.ph471

.lr.ph471:                                        ; preds = %297, %.lr.ph471.preheader
  %indvars.iv500 = phi i64 [ %290, %.lr.ph471.preheader ], [ %indvars.iv.next501, %297 ]
  %.3385469 = phi double [ %278, %.lr.ph471.preheader ], [ %300, %297 ]
  %.0386468 = phi double [ %278, %.lr.ph471.preheader ], [ %299, %297 ]
  %292 = getelementptr inbounds double, ptr %15, i64 %indvars.iv500
  %293 = load double, ptr %292, align 8, !tbaa !5
  %294 = getelementptr i8, ptr %292, i64 -16
  %295 = load double, ptr %294, align 8, !tbaa !5
  %296 = fcmp ogt double %293, %295
  br i1 %296, label %.loopexit, label %297

297:                                              ; preds = %.lr.ph471
  %298 = fdiv double %293, %295
  %299 = fmul double %.0386468, %298
  %300 = fadd double %.3385469, %299
  %301 = fcmp oge double %299, %.0386468
  %302 = select i1 %301, double %299, double %.0386468
  %303 = fmul double %302, 1.000000e+02
  %304 = fcmp olt double %303, %300
  %indvars.iv.next501 = add nsw i64 %indvars.iv500, -4
  %.not449 = icmp slt i64 %indvars.iv.next501, %291
  %or.cond515 = select i1 %304, i1 true, i1 %.not449
  br i1 %or.cond515, label %.loopexit457, label %.lr.ph471, !llvm.loop !14

.loopexit457:                                     ; preds = %297, %280, %277
  %.4 = phi double [ %278, %277 ], [ %278, %280 ], [ %300, %297 ]
  %305 = fmul double %.4, 1.050000e+00
  %306 = tail call double @sqrt(double noundef %305) #3
  %307 = load double, ptr %6, align 8, !tbaa !5
  %308 = tail call double @llvm.fmuladd.f64(double %306, double %306, double 1.000000e+00)
  %309 = fdiv double %307, %308
  %310 = load double, ptr %7, align 8, !tbaa !5
  %311 = fneg double %309
  %312 = tail call double @llvm.fmuladd.f64(double %310, double 5.000000e-01, double %311)
  %313 = fcmp ogt double %312, 0.000000e+00
  %314 = fmul double %306, %309
  %315 = fcmp ogt double %312, %314
  %or.cond453 = select i1 %313, i1 %315, i1 false
  br i1 %or.cond453, label %316, label %324

316:                                              ; preds = %.loopexit457
  %317 = fdiv double %306, %312
  %318 = fmul double %309, -1.010000e+00
  %319 = fmul double %318, %317
  %320 = tail call double @llvm.fmuladd.f64(double %319, double %306, double 1.000000e+00)
  %321 = fmul double %309, %320
  %322 = fcmp oge double %269, %321
  %323 = select i1 %322, double %269, double %321
  br label %415

324:                                              ; preds = %.loopexit457
  %325 = fneg double %306
  %326 = tail call double @llvm.fmuladd.f64(double %325, double 1.010000e+00, double 1.000000e+00)
  %327 = fmul double %326, %309
  %328 = fcmp oge double %269, %327
  %329 = select i1 %328, double %269, double %327
  store i32 -8, ptr %12, align 4, !tbaa !9
  br label %415

330:                                              ; preds = %264, %260
  %.2396.v = phi double [ 5.000000e-01, %264 ], [ 2.500000e-01, %260 ]
  %.2396 = fmul double %261, %.2396.v
  store i32 -9, ptr %12, align 4, !tbaa !9
  br label %415

331:                                              ; preds = %257
  %332 = add nsw i32 %21, 2
  %333 = icmp eq i32 %25, %332
  br i1 %333, label %334, label %412

334:                                              ; preds = %331
  %335 = load double, ptr %7, align 8, !tbaa !5
  %336 = load double, ptr %10, align 8, !tbaa !5
  %337 = fcmp oeq double %335, %336
  br i1 %337, label %338, label %410

338:                                              ; preds = %334
  %339 = sext i32 %24 to i64
  %340 = getelementptr double, ptr %15, i64 %339
  %341 = getelementptr i8, ptr %340, i64 -40
  %342 = load double, ptr %341, align 8, !tbaa !5
  %343 = fmul double %342, 2.000000e+00
  %344 = getelementptr i8, ptr %340, i64 -56
  %345 = load double, ptr %344, align 8, !tbaa !5
  %346 = fcmp olt double %343, %345
  br i1 %346, label %347, label %410

347:                                              ; preds = %338
  store i32 -10, ptr %12, align 4, !tbaa !9
  %348 = fmul double %335, 3.330000e-01
  %349 = fcmp ogt double %342, %345
  br i1 %349, label %.loopexit, label %350

350:                                              ; preds = %347
  %351 = fdiv double %342, %345
  %352 = fcmp oeq double %351, 0.000000e+00
  br i1 %352, label %.loopexit459, label %353

353:                                              ; preds = %350
  %354 = load i32, ptr %0, align 4, !tbaa !9
  %355 = shl i32 %354, 2
  %356 = add nsw i32 %355, -1
  %357 = load i32, ptr %3, align 4, !tbaa !9
  %358 = add nsw i32 %356, %357
  %359 = load i32, ptr %1, align 4, !tbaa !9
  %360 = shl i32 %359, 2
  %361 = add i32 %357, -9
  %362 = add i32 %361, %360
  %.not461 = icmp slt i32 %362, %358
  br i1 %.not461, label %.loopexit459, label %.lr.ph.preheader

.lr.ph.preheader:                                 ; preds = %353
  %363 = sext i32 %362 to i64
  %364 = sext i32 %358 to i64
  br label %.lr.ph

.lr.ph:                                           ; preds = %370, %.lr.ph.preheader
  %indvars.iv = phi i64 [ %363, %.lr.ph.preheader ], [ %indvars.iv.next, %370 ]
  %.5463 = phi double [ %351, %.lr.ph.preheader ], [ %373, %370 ]
  %.1387462 = phi double [ %351, %.lr.ph.preheader ], [ %372, %370 ]
  %365 = getelementptr inbounds double, ptr %15, i64 %indvars.iv
  %366 = load double, ptr %365, align 8, !tbaa !5
  %367 = getelementptr i8, ptr %365, i64 -16
  %368 = load double, ptr %367, align 8, !tbaa !5
  %369 = fcmp ogt double %366, %368
  br i1 %369, label %.loopexit, label %370

370:                                              ; preds = %.lr.ph
  %371 = fdiv double %366, %368
  %372 = fmul double %.1387462, %371
  %373 = fadd double %.5463, %372
  %374 = fmul double %372, 1.000000e+02
  %375 = fcmp olt double %374, %373
  %indvars.iv.next = add nsw i64 %indvars.iv, -4
  %.not = icmp slt i64 %indvars.iv.next, %364
  %or.cond516 = select i1 %375, i1 true, i1 %.not
  br i1 %or.cond516, label %.loopexit459, label %.lr.ph, !llvm.loop !15

.loopexit459:                                     ; preds = %370, %353, %350
  %.6 = phi double [ %351, %350 ], [ %351, %353 ], [ %373, %370 ]
  %376 = fmul double %.6, 1.050000e+00
  %377 = tail call double @sqrt(double noundef %376) #3
  %378 = load double, ptr %7, align 8, !tbaa !5
  %379 = tail call double @llvm.fmuladd.f64(double %377, double %377, double 1.000000e+00)
  %380 = fdiv double %378, %379
  %381 = load double, ptr %344, align 8, !tbaa !5
  %382 = getelementptr i8, ptr %340, i64 -72
  %383 = load double, ptr %382, align 8, !tbaa !5
  %384 = fadd double %381, %383
  %385 = getelementptr i8, ptr %340, i64 -88
  %386 = load double, ptr %385, align 8, !tbaa !5
  %387 = tail call double @sqrt(double noundef %386) #3
  %388 = load double, ptr %382, align 8, !tbaa !5
  %389 = tail call double @sqrt(double noundef %388) #3
  %390 = fneg double %387
  %391 = tail call double @llvm.fmuladd.f64(double %390, double %389, double %384)
  %392 = fsub double %391, %380
  %393 = fcmp ogt double %392, 0.000000e+00
  %394 = fmul double %377, %380
  %395 = fcmp ogt double %392, %394
  %or.cond455 = select i1 %393, i1 %395, i1 false
  br i1 %or.cond455, label %396, label %404

396:                                              ; preds = %.loopexit459
  %397 = fdiv double %377, %392
  %398 = fmul double %380, -1.010000e+00
  %399 = fmul double %398, %397
  %400 = tail call double @llvm.fmuladd.f64(double %399, double %377, double 1.000000e+00)
  %401 = fmul double %380, %400
  %402 = fcmp oge double %348, %401
  %403 = select i1 %402, double %348, double %401
  br label %415

404:                                              ; preds = %.loopexit459
  %405 = fneg double %377
  %406 = tail call double @llvm.fmuladd.f64(double %405, double 1.010000e+00, double 1.000000e+00)
  %407 = fmul double %406, %380
  %408 = fcmp oge double %348, %407
  %409 = select i1 %408, double %348, double %407
  br label %415

410:                                              ; preds = %338, %334
  %411 = fmul double %335, 2.500000e-01
  store i32 -11, ptr %12, align 4, !tbaa !9
  br label %415

412:                                              ; preds = %331
  %413 = icmp sgt i32 %25, %332
  br i1 %413, label %414, label %415

414:                                              ; preds = %412
  store i32 -12, ptr %12, align 4, !tbaa !9
  br label %415

415:                                              ; preds = %316, %324, %330, %412, %414, %410, %404, %396, %._crit_edge489, %163, %80, %96, %239, %241, %254
  %.3397 = phi double [ %86, %80 ], [ %99, %96 ], [ %168, %163 ], [ %132, %._crit_edge489 ], [ %246, %241 ], [ %173, %239 ], [ %256, %254 ], [ %323, %316 ], [ %329, %324 ], [ %.2396, %330 ], [ %403, %396 ], [ %409, %404 ], [ %411, %410 ], [ 0.000000e+00, %414 ], [ undef, %412 ]
  store double %.3397, ptr %11, align 8, !tbaa !5
  br label %.loopexit

.loopexit:                                        ; preds = %.lr.ph, %.lr.ph471, %.lr.ph479, %.lr.ph488, %347, %268, %172, %186, %117, %105, %100, %415, %18
  ret void
}

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

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

attributes #0 = { nofree nounwind memory(write, argmem: readwrite) 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 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 #2 = { mustprogress nocallback nofree nosync nounwind speculatable willreturn memory(none) }
attributes #3 = { 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 = !{!"double", !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 = distinct !{!11, !12}
!12 = !{!"llvm.loop.mustprogress"}
!13 = distinct !{!13, !12}
!14 = distinct !{!14, !12}
!15 = distinct !{!15, !12}


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