; LLVM IR from niuyishuai/PDCABB :: LAPACK_BLAS/LAPACK (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 i32 @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 i32, align 4
  %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 ptr, align 8
  %30 = alloca i64, 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 double, align 8
  %37 = alloca i64, align 8
  %38 = alloca i64, align 8
  %39 = alloca i64, align 8
  %40 = alloca double, align 8
  %41 = alloca double, align 8
  %42 = alloca double, align 8
  %43 = alloca i32, align 4
  store ptr %0, ptr %16, align 8, !tbaa !5
  store ptr %1, ptr %17, align 8, !tbaa !5
  store ptr %2, ptr %18, align 8, !tbaa !5
  store ptr %3, ptr %19, align 8, !tbaa !5
  store ptr %4, ptr %20, align 8, !tbaa !5
  store ptr %5, ptr %21, align 8, !tbaa !5
  store ptr %6, ptr %22, align 8, !tbaa !5
  store ptr %7, ptr %23, align 8, !tbaa !5
  store ptr %8, ptr %24, align 8, !tbaa !5
  store ptr %9, ptr %25, align 8, !tbaa !5
  store ptr %10, ptr %26, align 8, !tbaa !5
  store ptr %11, ptr %27, align 8, !tbaa !5
  store ptr %12, ptr %28, align 8, !tbaa !5
  store ptr %13, ptr %29, align 8, !tbaa !5
  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 8, ptr %36) #4
  call void @llvm.lifetime.start.p0(i64 8, ptr %37) #4
  call void @llvm.lifetime.start.p0(i64 8, ptr %38) #4
  call void @llvm.lifetime.start.p0(i64 8, ptr %39) #4
  call void @llvm.lifetime.start.p0(i64 8, ptr %40) #4
  call void @llvm.lifetime.start.p0(i64 8, ptr %41) #4
  call void @llvm.lifetime.start.p0(i64 8, ptr %42) #4
  %44 = load ptr, ptr %18, align 8, !tbaa !5
  %45 = getelementptr inbounds double, ptr %44, i32 -1
  store ptr %45, ptr %18, align 8, !tbaa !5
  %46 = load ptr, ptr %21, align 8, !tbaa !5
  %47 = load double, ptr %46, align 8, !tbaa !9
  %48 = fcmp ole double %47, 0.000000e+00
  br i1 %48, label %49, label %55

49:                                               ; preds = %14
  %50 = load ptr, ptr %21, align 8, !tbaa !5
  %51 = load double, ptr %50, align 8, !tbaa !9
  %52 = fneg double %51
  %53 = load ptr, ptr %27, align 8, !tbaa !5
  store double %52, ptr %53, align 8, !tbaa !9
  %54 = load ptr, ptr %28, align 8, !tbaa !5
  store i64 -1, ptr %54, align 8, !tbaa !11
  store i32 0, ptr %15, align 4
  store i32 1, ptr %43, align 4
  br label %1042

55:                                               ; preds = %14
  %56 = load ptr, ptr %17, align 8, !tbaa !5
  %57 = load i64, ptr %56, align 8, !tbaa !11
  %58 = shl i64 %57, 2
  %59 = load ptr, ptr %19, align 8, !tbaa !5
  %60 = load i64, ptr %59, align 8, !tbaa !11
  %61 = add nsw i64 %58, %60
  store i64 %61, ptr %38, align 8, !tbaa !11
  %62 = load ptr, ptr %20, align 8, !tbaa !5
  %63 = load i64, ptr %62, align 8, !tbaa !11
  %64 = load ptr, ptr %17, align 8, !tbaa !5
  %65 = load i64, ptr %64, align 8, !tbaa !11
  %66 = icmp eq i64 %63, %65
  br i1 %66, label %67, label %622

67:                                               ; preds = %55
  %68 = load ptr, ptr %21, align 8, !tbaa !5
  %69 = load double, ptr %68, align 8, !tbaa !9
  %70 = load ptr, ptr %24, align 8, !tbaa !5
  %71 = load double, ptr %70, align 8, !tbaa !9
  %72 = fcmp oeq double %69, %71
  br i1 %72, label %79, label %73

73:                                               ; preds = %67
  %74 = load ptr, ptr %21, align 8, !tbaa !5
  %75 = load double, ptr %74, align 8, !tbaa !9
  %76 = load ptr, ptr %25, align 8, !tbaa !5
  %77 = load double, ptr %76, align 8, !tbaa !9
  %78 = fcmp oeq double %75, %77
  br i1 %78, label %79, label %428

79:                                               ; preds = %73, %67
  %80 = load ptr, ptr %18, align 8, !tbaa !5
  %81 = load i64, ptr %38, align 8, !tbaa !11
  %82 = sub nsw i64 %81, 3
  %83 = getelementptr inbounds double, ptr %80, i64 %82
  %84 = load double, ptr %83, align 8, !tbaa !9
  %85 = call double @sqrt(double noundef %84) #4
  %86 = load ptr, ptr %18, align 8, !tbaa !5
  %87 = load i64, ptr %38, align 8, !tbaa !11
  %88 = sub nsw i64 %87, 5
  %89 = getelementptr inbounds double, ptr %86, i64 %88
  %90 = load double, ptr %89, align 8, !tbaa !9
  %91 = call double @sqrt(double noundef %90) #4
  %92 = fmul double %85, %91
  store double %92, ptr %35, align 8, !tbaa !9
  %93 = load ptr, ptr %18, align 8, !tbaa !5
  %94 = load i64, ptr %38, align 8, !tbaa !11
  %95 = sub nsw i64 %94, 7
  %96 = getelementptr inbounds double, ptr %93, i64 %95
  %97 = load double, ptr %96, align 8, !tbaa !9
  %98 = call double @sqrt(double noundef %97) #4
  %99 = load ptr, ptr %18, align 8, !tbaa !5
  %100 = load i64, ptr %38, align 8, !tbaa !11
  %101 = sub nsw i64 %100, 9
  %102 = getelementptr inbounds double, ptr %99, i64 %101
  %103 = load double, ptr %102, align 8, !tbaa !9
  %104 = call double @sqrt(double noundef %103) #4
  %105 = fmul double %98, %104
  store double %105, ptr %36, align 8, !tbaa !9
  %106 = load ptr, ptr %18, align 8, !tbaa !5
  %107 = load i64, ptr %38, align 8, !tbaa !11
  %108 = sub nsw i64 %107, 7
  %109 = getelementptr inbounds double, ptr %106, i64 %108
  %110 = load double, ptr %109, align 8, !tbaa !9
  %111 = load ptr, ptr %18, align 8, !tbaa !5
  %112 = load i64, ptr %38, align 8, !tbaa !11
  %113 = sub nsw i64 %112, 5
  %114 = getelementptr inbounds double, ptr %111, i64 %113
  %115 = load double, ptr %114, align 8, !tbaa !9
  %116 = fadd double %110, %115
  store double %116, ptr %34, align 8, !tbaa !9
  %117 = load ptr, ptr %21, align 8, !tbaa !5
  %118 = load double, ptr %117, align 8, !tbaa !9
  %119 = load ptr, ptr %24, align 8, !tbaa !5
  %120 = load double, ptr %119, align 8, !tbaa !9
  %121 = fcmp oeq double %118, %120
  br i1 %121, label %122, label %240

122:                                              ; preds = %79
  %123 = load ptr, ptr %22, align 8, !tbaa !5
  %124 = load double, ptr %123, align 8, !tbaa !9
  %125 = load ptr, ptr %25, align 8, !tbaa !5
  %126 = load double, ptr %125, align 8, !tbaa !9
  %127 = fcmp oeq double %124, %126
  br i1 %127, label %128, label %240

128:                                              ; preds = %122
  %129 = load ptr, ptr %23, align 8, !tbaa !5
  %130 = load double, ptr %129, align 8, !tbaa !9
  %131 = load double, ptr %34, align 8, !tbaa !9
  %132 = fsub double %130, %131
  %133 = load ptr, ptr %23, align 8, !tbaa !5
  %134 = load double, ptr %133, align 8, !tbaa !9
  %135 = fneg double %134
  %136 = call double @llvm.fmuladd.f64(double %135, double 2.500000e-01, double %132)
  store double %136, ptr %42, align 8, !tbaa !9
  %137 = load double, ptr %42, align 8, !tbaa !9
  %138 = fcmp ogt double %137, 0.000000e+00
  br i1 %138, label %139, label %154

139:                                              ; preds = %128
  %140 = load double, ptr %42, align 8, !tbaa !9
  %141 = load double, ptr %36, align 8, !tbaa !9
  %142 = fcmp ogt double %140, %141
  br i1 %142, label %143, label %154

143:                                              ; preds = %139
  %144 = load double, ptr %34, align 8, !tbaa !9
  %145 = load ptr, ptr %24, align 8, !tbaa !5
  %146 = load double, ptr %145, align 8, !tbaa !9
  %147 = fsub double %144, %146
  %148 = load double, ptr %36, align 8, !tbaa !9
  %149 = load double, ptr %42, align 8, !tbaa !9
  %150 = fdiv double %148, %149
  %151 = load double, ptr %36, align 8, !tbaa !9
  %152 = fneg double %150
  %153 = call double @llvm.fmuladd.f64(double %152, double %151, double %147)
  store double %153, ptr %41, align 8, !tbaa !9
  br label %163

154:                                              ; preds = %139, %128
  %155 = load double, ptr %34, align 8, !tbaa !9
  %156 = load ptr, ptr %24, align 8, !tbaa !5
  %157 = load double, ptr %156, align 8, !tbaa !9
  %158 = fsub double %155, %157
  %159 = load double, ptr %35, align 8, !tbaa !9
  %160 = load double, ptr %36, align 8, !tbaa !9
  %161 = fadd double %159, %160
  %162 = fsub double %158, %161
  store double %162, ptr %41, align 8, !tbaa !9
  br label %163

163:                                              ; preds = %154, %143
  %164 = load double, ptr %41, align 8, !tbaa !9
  %165 = fcmp ogt double %164, 0.000000e+00
  br i1 %165, label %166, label %192

166:                                              ; preds = %163
  %167 = load double, ptr %41, align 8, !tbaa !9
  %168 = load double, ptr %35, align 8, !tbaa !9
  %169 = fcmp ogt double %167, %168
  br i1 %169, label %170, label %192

170:                                              ; preds = %166
  %171 = load ptr, ptr %24, align 8, !tbaa !5
  %172 = load double, ptr %171, align 8, !tbaa !9
  %173 = load double, ptr %35, align 8, !tbaa !9
  %174 = load double, ptr %41, align 8, !tbaa !9
  %175 = fdiv double %173, %174
  %176 = load double, ptr %35, align 8, !tbaa !9
  %177 = fneg double %175
  %178 = call double @llvm.fmuladd.f64(double %177, double %176, double %172)
  store double %178, ptr %31, align 8, !tbaa !9
  %179 = load ptr, ptr %21, align 8, !tbaa !5
  %180 = load double, ptr %179, align 8, !tbaa !9
  %181 = fmul double %180, 5.000000e-01
  store double %181, ptr %32, align 8, !tbaa !9
  %182 = load double, ptr %31, align 8, !tbaa !9
  %183 = load double, ptr %32, align 8, !tbaa !9
  %184 = fcmp oge double %182, %183
  br i1 %184, label %185, label %187

185:                                              ; preds = %170
  %186 = load double, ptr %31, align 8, !tbaa !9
  br label %189

187:                                              ; preds = %170
  %188 = load double, ptr %32, align 8, !tbaa !9
  br label %189

189:                                              ; preds = %187, %185
  %190 = phi double [ %186, %185 ], [ %188, %187 ]
  store double %190, ptr %33, align 8, !tbaa !9
  %191 = load ptr, ptr %28, align 8, !tbaa !5
  store i64 -2, ptr %191, align 8, !tbaa !11
  br label %239

192:                                              ; preds = %166, %163
  store double 0.000000e+00, ptr %33, align 8, !tbaa !9
  %193 = load ptr, ptr %24, align 8, !tbaa !5
  %194 = load double, ptr %193, align 8, !tbaa !9
  %195 = load double, ptr %35, align 8, !tbaa !9
  %196 = fcmp ogt double %194, %195
  br i1 %196, label %197, label %202

197:                                              ; preds = %192
  %198 = load ptr, ptr %24, align 8, !tbaa !5
  %199 = load double, ptr %198, align 8, !tbaa !9
  %200 = load double, ptr %35, align 8, !tbaa !9
  %201 = fsub double %199, %200
  store double %201, ptr %33, align 8, !tbaa !9
  br label %202

202:                                              ; preds = %197, %192
  %203 = load double, ptr %34, align 8, !tbaa !9
  %204 = load double, ptr %35, align 8, !tbaa !9
  %205 = load double, ptr %36, align 8, !tbaa !9
  %206 = fadd double %204, %205
  %207 = fcmp ogt double %203, %206
  br i1 %207, label %208, label %224

208:                                              ; preds = %202
  %209 = load double, ptr %33, align 8, !tbaa !9
  store double %209, ptr %31, align 8, !tbaa !9
  %210 = load double, ptr %34, align 8, !tbaa !9
  %211 = load double, ptr %35, align 8, !tbaa !9
  %212 = load double, ptr %36, align 8, !tbaa !9
  %213 = fadd double %211, %212
  %214 = fsub double %210, %213
  store double %214, ptr %32, align 8, !tbaa !9
  %215 = load double, ptr %31, align 8, !tbaa !9
  %216 = load double, ptr %32, align 8, !tbaa !9
  %217 = fcmp ole double %215, %216
  br i1 %217, label %218, label %220

218:                                              ; preds = %208
  %219 = load double, ptr %31, align 8, !tbaa !9
  br label %222

220:                                              ; preds = %208
  %221 = load double, ptr %32, align 8, !tbaa !9
  br label %222

222:                                              ; preds = %220, %218
  %223 = phi double [ %219, %218 ], [ %221, %220 ]
  store double %223, ptr %33, align 8, !tbaa !9
  br label %224

224:                                              ; preds = %222, %202
  %225 = load double, ptr %33, align 8, !tbaa !9
  store double %225, ptr %31, align 8, !tbaa !9
  %226 = load ptr, ptr %21, align 8, !tbaa !5
  %227 = load double, ptr %226, align 8, !tbaa !9
  %228 = fmul double %227, 3.330000e-01
  store double %228, ptr %32, align 8, !tbaa !9
  %229 = load double, ptr %31, align 8, !tbaa !9
  %230 = load double, ptr %32, align 8, !tbaa !9
  %231 = fcmp oge double %229, %230
  br i1 %231, label %232, label %234

232:                                              ; preds = %224
  %233 = load double, ptr %31, align 8, !tbaa !9
  br label %236

234:                                              ; preds = %224
  %235 = load double, ptr %32, align 8, !tbaa !9
  br label %236

236:                                              ; preds = %234, %232
  %237 = phi double [ %233, %232 ], [ %235, %234 ]
  store double %237, ptr %33, align 8, !tbaa !9
  %238 = load ptr, ptr %28, align 8, !tbaa !5
  store i64 -3, ptr %238, align 8, !tbaa !11
  br label %239

239:                                              ; preds = %236, %189
  br label %427

240:                                              ; preds = %122, %79
  %241 = load ptr, ptr %28, align 8, !tbaa !5
  store i64 -4, ptr %241, align 8, !tbaa !11
  %242 = load ptr, ptr %21, align 8, !tbaa !5
  %243 = load double, ptr %242, align 8, !tbaa !9
  %244 = fmul double %243, 2.500000e-01
  store double %244, ptr %33, align 8, !tbaa !9
  %245 = load ptr, ptr %21, align 8, !tbaa !5
  %246 = load double, ptr %245, align 8, !tbaa !9
  %247 = load ptr, ptr %24, align 8, !tbaa !5
  %248 = load double, ptr %247, align 8, !tbaa !9
  %249 = fcmp oeq double %246, %248
  br i1 %249, label %250, label %279

250:                                              ; preds = %240
  %251 = load ptr, ptr %24, align 8, !tbaa !5
  %252 = load double, ptr %251, align 8, !tbaa !9
  store double %252, ptr %40, align 8, !tbaa !9
  store double 0.000000e+00, ptr %34, align 8, !tbaa !9
  %253 = load ptr, ptr %18, align 8, !tbaa !5
  %254 = load i64, ptr %38, align 8, !tbaa !11
  %255 = sub nsw i64 %254, 5
  %256 = getelementptr inbounds double, ptr %253, i64 %255
  %257 = load double, ptr %256, align 8, !tbaa !9
  %258 = load ptr, ptr %18, align 8, !tbaa !5
  %259 = load i64, ptr %38, align 8, !tbaa !11
  %260 = sub nsw i64 %259, 7
  %261 = getelementptr inbounds double, ptr %258, i64 %260
  %262 = load double, ptr %261, align 8, !tbaa !9
  %263 = fcmp ogt double %257, %262
  br i1 %263, label %264, label %265

264:                                              ; preds = %250
  store i32 0, ptr %15, align 4
  store i32 1, ptr %43, align 4
  br label %1042

265:                                              ; preds = %250
  %266 = load ptr, ptr %18, align 8, !tbaa !5
  %267 = load i64, ptr %38, align 8, !tbaa !11
  %268 = sub nsw i64 %267, 5
  %269 = getelementptr inbounds double, ptr %266, i64 %268
  %270 = load double, ptr %269, align 8, !tbaa !9
  %271 = load ptr, ptr %18, align 8, !tbaa !5
  %272 = load i64, ptr %38, align 8, !tbaa !11
  %273 = sub nsw i64 %272, 7
  %274 = getelementptr inbounds double, ptr %271, i64 %273
  %275 = load double, ptr %274, align 8, !tbaa !9
  %276 = fdiv double %270, %275
  store double %276, ptr %36, align 8, !tbaa !9
  %277 = load i64, ptr %38, align 8, !tbaa !11
  %278 = sub nsw i64 %277, 9
  store i64 %278, ptr %39, align 8, !tbaa !11
  br label %342

279:                                              ; preds = %240
  %280 = load i64, ptr %38, align 8, !tbaa !11
  %281 = load ptr, ptr %19, align 8, !tbaa !5
  %282 = load i64, ptr %281, align 8, !tbaa !11
  %283 = shl i64 %282, 1
  %284 = sub nsw i64 %280, %283
  store i64 %284, ptr %39, align 8, !tbaa !11
  %285 = load ptr, ptr %18, align 8, !tbaa !5
  %286 = load i64, ptr %39, align 8, !tbaa !11
  %287 = sub nsw i64 %286, 2
  %288 = getelementptr inbounds double, ptr %285, i64 %287
  %289 = load double, ptr %288, align 8, !tbaa !9
  store double %289, ptr %36, align 8, !tbaa !9
  %290 = load ptr, ptr %25, align 8, !tbaa !5
  %291 = load double, ptr %290, align 8, !tbaa !9
  store double %291, ptr %40, align 8, !tbaa !9
  %292 = load ptr, ptr %18, align 8, !tbaa !5
  %293 = load i64, ptr %39, align 8, !tbaa !11
  %294 = sub nsw i64 %293, 4
  %295 = getelementptr inbounds double, ptr %292, i64 %294
  %296 = load double, ptr %295, align 8, !tbaa !9
  %297 = load ptr, ptr %18, align 8, !tbaa !5
  %298 = load i64, ptr %39, align 8, !tbaa !11
  %299 = sub nsw i64 %298, 2
  %300 = getelementptr inbounds double, ptr %297, i64 %299
  %301 = load double, ptr %300, align 8, !tbaa !9
  %302 = fcmp ogt double %296, %301
  br i1 %302, label %303, label %304

303:                                              ; preds = %279
  store i32 0, ptr %15, align 4
  store i32 1, ptr %43, align 4
  br label %1042

304:                                              ; preds = %279
  %305 = load ptr, ptr %18, align 8, !tbaa !5
  %306 = load i64, ptr %39, align 8, !tbaa !11
  %307 = sub nsw i64 %306, 4
  %308 = getelementptr inbounds double, ptr %305, i64 %307
  %309 = load double, ptr %308, align 8, !tbaa !9
  %310 = load ptr, ptr %18, align 8, !tbaa !5
  %311 = load i64, ptr %39, align 8, !tbaa !11
  %312 = sub nsw i64 %311, 2
  %313 = getelementptr inbounds double, ptr %310, i64 %312
  %314 = load double, ptr %313, align 8, !tbaa !9
  %315 = fdiv double %309, %314
  store double %315, ptr %34, align 8, !tbaa !9
  %316 = load ptr, ptr %18, align 8, !tbaa !5
  %317 = load i64, ptr %38, align 8, !tbaa !11
  %318 = sub nsw i64 %317, 9
  %319 = getelementptr inbounds double, ptr %316, i64 %318
  %320 = load double, ptr %319, align 8, !tbaa !9
  %321 = load ptr, ptr %18, align 8, !tbaa !5
  %322 = load i64, ptr %38, align 8, !tbaa !11
  %323 = sub nsw i64 %322, 11
  %324 = getelementptr inbounds double, ptr %321, i64 %323
  %325 = load double, ptr %324, align 8, !tbaa !9
  %326 = fcmp ogt double %320, %325
  br i1 %326, label %327, label %328

327:                                              ; preds = %304
  store i32 0, ptr %15, align 4
  store i32 1, ptr %43, align 4
  br label %1042

328:                                              ; preds = %304
  %329 = load ptr, ptr %18, align 8, !tbaa !5
  %330 = load i64, ptr %38, align 8, !tbaa !11
  %331 = sub nsw i64 %330, 9
  %332 = getelementptr inbounds double, ptr %329, i64 %331
  %333 = load double, ptr %332, align 8, !tbaa !9
  %334 = load ptr, ptr %18, align 8, !tbaa !5
  %335 = load i64, ptr %38, align 8, !tbaa !11
  %336 = sub nsw i64 %335, 11
  %337 = getelementptr inbounds double, ptr %334, i64 %336
  %338 = load double, ptr %337, align 8, !tbaa !9
  %339 = fdiv double %333, %338
  store double %339, ptr %36, align 8, !tbaa !9
  %340 = load i64, ptr %38, align 8, !tbaa !11
  %341 = sub nsw i64 %340, 13
  store i64 %341, ptr %39, align 8, !tbaa !11
  br label %342

342:                                              ; preds = %328, %265
  %343 = load double, ptr %36, align 8, !tbaa !9
  %344 = load double, ptr %34, align 8, !tbaa !9
  %345 = fadd double %344, %343
  store double %345, ptr %34, align 8, !tbaa !9
  %346 = load ptr, ptr %16, align 8, !tbaa !5
  %347 = load i64, ptr %346, align 8, !tbaa !11
  %348 = shl i64 %347, 2
  %349 = sub nsw i64 %348, 1
  %350 = load ptr, ptr %19, align 8, !tbaa !5
  %351 = load i64, ptr %350, align 8, !tbaa !11
  %352 = add nsw i64 %349, %351
  store i64 %352, ptr %30, align 8, !tbaa !11
  %353 = load i64, ptr %39, align 8, !tbaa !11
  store i64 %353, ptr %37, align 8, !tbaa !11
  br label %354

354:                                              ; preds = %408, %342
  %355 = load i64, ptr %37, align 8, !tbaa !11
  %356 = load i64, ptr %30, align 8, !tbaa !11
  %357 = icmp sge i64 %355, %356
  br i1 %357, label %358, label %411

358:                                              ; preds = %354
  %359 = load double, ptr %36, align 8, !tbaa !9
  %360 = fcmp oeq double %359, 0.000000e+00
  br i1 %360, label %361, label %362

361:                                              ; preds = %358
  br label %412

362:                                              ; preds = %358
  %363 = load double, ptr %36, align 8, !tbaa !9
  store double %363, ptr %35, align 8, !tbaa !9
  %364 = load ptr, ptr %18, align 8, !tbaa !5
  %365 = load i64, ptr %37, align 8, !tbaa !11
  %366 = getelementptr inbounds double, ptr %364, i64 %365
  %367 = load double, ptr %366, align 8, !tbaa !9
  %368 = load ptr, ptr %18, align 8, !tbaa !5
  %369 = load i64, ptr %37, align 8, !tbaa !11
  %370 = sub nsw i64 %369, 2
  %371 = getelementptr inbounds double, ptr %368, i64 %370
  %372 = load double, ptr %371, align 8, !tbaa !9
  %373 = fcmp ogt double %367, %372
  br i1 %373, label %374, label %375

374:                                              ; preds = %362
  store i32 0, ptr %15, align 4
  store i32 1, ptr %43, align 4
  br label %1042

375:                                              ; preds = %362
  %376 = load ptr, ptr %18, align 8, !tbaa !5
  %377 = load i64, ptr %37, align 8, !tbaa !11
  %378 = getelementptr inbounds double, ptr %376, i64 %377
  %379 = load double, ptr %378, align 8, !tbaa !9
  %380 = load ptr, ptr %18, align 8, !tbaa !5
  %381 = load i64, ptr %37, align 8, !tbaa !11
  %382 = sub nsw i64 %381, 2
  %383 = getelementptr inbounds double, ptr %380, i64 %382
  %384 = load double, ptr %383, align 8, !tbaa !9
  %385 = fdiv double %379, %384
  %386 = load double, ptr %36, align 8, !tbaa !9
  %387 = fmul double %386, %385
  store double %387, ptr %36, align 8, !tbaa !9
  %388 = load double, ptr %36, align 8, !tbaa !9
  %389 = load double, ptr %34, align 8, !tbaa !9
  %390 = fadd double %389, %388
  store double %390, ptr %34, align 8, !tbaa !9
  %391 = load double, ptr %36, align 8, !tbaa !9
  %392 = load double, ptr %35, align 8, !tbaa !9
  %393 = fcmp oge double %391, %392
  br i1 %393, label %394, label %396

394:                                              ; preds = %375
  %395 = load double, ptr %36, align 8, !tbaa !9
  br label %398

396:                                              ; preds = %375
  %397 = load double, ptr %35, align 8, !tbaa !9
  br label %398

398:                                              ; preds = %396, %394
  %399 = phi double [ %395, %394 ], [ %397, %396 ]
  %400 = fmul double %399, 1.000000e+02
  %401 = load double, ptr %34, align 8, !tbaa !9
  %402 = fcmp olt double %400, %401
  br i1 %402, label %406, label %403

403:                                              ; preds = %398
  %404 = load double, ptr %34, align 8, !tbaa !9
  %405 = fcmp olt double 5.630000e-01, %404
  br i1 %405, label %406, label %407

406:                                              ; preds = %403, %398
  br label %412

407:                                              ; preds = %403
  br label %408

408:                                              ; preds = %407
  %409 = load i64, ptr %37, align 8, !tbaa !11
  %410 = add nsw i64 %409, -4
  store i64 %410, ptr %37, align 8, !tbaa !11
  br label %354, !llvm.loop !13

411:                                              ; preds = %354
  br label %412

412:                                              ; preds = %411, %406, %361
  %413 = load double, ptr %34, align 8, !tbaa !9
  %414 = fmul double %413, 1.050000e+00
  store double %414, ptr %34, align 8, !tbaa !9
  %415 = load double, ptr %34, align 8, !tbaa !9
  %416 = fcmp olt double %415, 5.630000e-01
  br i1 %416, label %417, label %426

417:                                              ; preds = %412
  %418 = load double, ptr %40, align 8, !tbaa !9
  %419 = load double, ptr %34, align 8, !tbaa !9
  %420 = call double @sqrt(double noundef %419) #4
  %421 = fsub double 1.000000e+00, %420
  %422 = fmul double %418, %421
  %423 = load double, ptr %34, align 8, !tbaa !9
  %424 = fadd double %423, 1.000000e+00
  %425 = fdiv double %422, %424
  store double %425, ptr %33, align 8, !tbaa !9
  br label %426

426:                                              ; preds = %417, %412
  br label %427

427:                                              ; preds = %426, %239
  br label %621

428:                                              ; preds = %73
  %429 = load ptr, ptr %21, align 8, !tbaa !5
  %430 = load double, ptr %429, align 8, !tbaa !9
  %431 = load ptr, ptr %26, align 8, !tbaa !5
  %432 = load double, ptr %431, align 8, !tbaa !9
  %433 = fcmp oeq double %430, %432
  br i1 %433, label %434, label %593

434:                                              ; preds = %428
  %435 = load ptr, ptr %28, align 8, !tbaa !5
  store i64 -5, ptr %435, align 8, !tbaa !11
  %436 = load ptr, ptr %21, align 8, !tbaa !5
  %437 = load double, ptr %436, align 8, !tbaa !9
  %438 = fmul double %437, 2.500000e-01
  store double %438, ptr %33, align 8, !tbaa !9
  %439 = load i64, ptr %38, align 8, !tbaa !11
  %440 = load ptr, ptr %19, align 8, !tbaa !5
  %441 = load i64, ptr %440, align 8, !tbaa !11
  %442 = shl i64 %441, 1
  %443 = sub nsw i64 %439, %442
  store i64 %443, ptr %39, align 8, !tbaa !11
  %444 = load ptr, ptr %18, align 8, !tbaa !5
  %445 = load i64, ptr %39, align 8, !tbaa !11
  %446 = sub nsw i64 %445, 2
  %447 = getelementptr inbounds double, ptr %444, i64 %446
  %448 = load double, ptr %447, align 8, !tbaa !9
  store double %448, ptr %35, align 8, !tbaa !9
  %449 = load ptr, ptr %18, align 8, !tbaa !5
  %450 = load i64, ptr %39, align 8, !tbaa !11
  %451 = sub nsw i64 %450, 6
  %452 = getelementptr inbounds double, ptr %449, i64 %451
  %453 = load double, ptr %452, align 8, !tbaa !9
  store double %453, ptr %36, align 8, !tbaa !9
  %454 = load ptr, ptr %26, align 8, !tbaa !5
  %455 = load double, ptr %454, align 8, !tbaa !9
  store double %455, ptr %40, align 8, !tbaa !9
  %456 = load ptr, ptr %18, align 8, !tbaa !5
  %457 = load i64, ptr %39, align 8, !tbaa !11
  %458 = sub nsw i64 %457, 8
  %459 = getelementptr inbounds double, ptr %456, i64 %458
  %460 = load double, ptr %459, align 8, !tbaa !9
  %461 = load double, ptr %36, align 8, !tbaa !9
  %462 = fcmp ogt double %460, %461
  br i1 %462, label %471, label %463

463:                                              ; preds = %434
  %464 = load ptr, ptr %18, align 8, !tbaa !5
  %465 = load i64, ptr %39, align 8, !tbaa !11
  %466 = sub nsw i64 %465, 4
  %467 = getelementptr inbounds double, ptr %464, i64 %466
  %468 = load double, ptr %467, align 8, !tbaa !9
  %469 = load double, ptr %35, align 8, !tbaa !9
  %470 = fcmp ogt double %468, %469
  br i1 %470, label %471, label %472

471:                                              ; preds = %463, %434
  store i32 0, ptr %15, align 4
  store i32 1, ptr %43, align 4
  br label %1042

472:                                              ; preds = %463
  %473 = load ptr, ptr %18, align 8, !tbaa !5
  %474 = load i64, ptr %39, align 8, !tbaa !11
  %475 = sub nsw i64 %474, 8
  %476 = getelementptr inbounds double, ptr %473, i64 %475
  %477 = load double, ptr %476, align 8, !tbaa !9
  %478 = load double, ptr %36, align 8, !tbaa !9
  %479 = fdiv double %477, %478
  %480 = load ptr, ptr %18, align 8, !tbaa !5
  %481 = load i64, ptr %39, align 8, !tbaa !11
  %482 = sub nsw i64 %481, 4
  %483 = getelementptr inbounds double, ptr %480, i64 %482
  %484 = load double, ptr %483, align 8, !tbaa !9
  %485 = load double, ptr %35, align 8, !tbaa !9
  %486 = fdiv double %484, %485
  %487 = fadd double %486, 1.000000e+00
  %488 = fmul double %479, %487
  store double %488, ptr %34, align 8, !tbaa !9
  %489 = load ptr, ptr %17, align 8, !tbaa !5
  %490 = load i64, ptr %489, align 8, !tbaa !11
  %491 = load ptr, ptr %16, align 8, !tbaa !5
  %492 = load i64, ptr %491, align 8, !tbaa !11
  %493 = sub nsw i64 %490, %492
  %494 = icmp sgt i64 %493, 2
  br i1 %494, label %495, label %580

495:                                              ; preds = %472
  %496 = load ptr, ptr %18, align 8, !tbaa !5
  %497 = load i64, ptr %38, align 8, !tbaa !11
  %498 = sub nsw i64 %497, 13
  %499 = getelementptr inbounds double, ptr %496, i64 %498
  %500 = load double, ptr %499, align 8, !tbaa !9
  %501 = load ptr, ptr %18, align 8, !tbaa !5
  %502 = load i64, ptr %38, align 8, !tbaa !11
  %503 = sub nsw i64 %502, 15
  %504 = getelementptr inbounds double, ptr %501, i64 %503
  %505 = load double, ptr %504, align 8, !tbaa !9
  %506 = fdiv double %500, %505
  store double %506, ptr %36, align 8, !tbaa !9
  %507 = load double, ptr %36, align 8, !tbaa !9
  %508 = load double, ptr %34, align 8, !tbaa !9
  %509 = fadd double %508, %507
  store double %509, ptr %34, align 8, !tbaa !9
  %510 = load ptr, ptr %16, align 8, !tbaa !5
  %511 = load i64, ptr %510, align 8, !tbaa !11
  %512 = shl i64 %511, 2
  %513 = sub nsw i64 %512, 1
  %514 = load ptr, ptr %19, align 8, !tbaa !5
  %515 = load i64, ptr %514, align 8, !tbaa !11
  %516 = add nsw i64 %513, %515
  store i64 %516, ptr %30, align 8, !tbaa !11
  %517 = load i64, ptr %38, align 8, !tbaa !11
  %518 = sub nsw i64 %517, 17
  store i64 %518, ptr %37, align 8, !tbaa !11
  br label %519

519:                                              ; preds = %573, %495
  %520 = load i64, ptr %37, align 8, !tbaa !11
  %521 = load i64, ptr %30, align 8, !tbaa !11
  %522 = icmp sge i64 %520, %521
  br i1 %522, label %523, label %576

523:                                              ; preds = %519
  %524 = load double, ptr %36, align 8, !tbaa !9
  %525 = fcmp oeq double %524, 0.000000e+00
  br i1 %525, label %526, label %527

526:                                              ; preds = %523
  br label %577

527:                                              ; preds = %523
  %528 = load double, ptr %36, align 8, !tbaa !9
  store double %528, ptr %35, align 8, !tbaa !9
  %529 = load ptr, ptr %18, align 8, !tbaa !5
  %530 = load i64, ptr %37, align 8, !tbaa !11
  %531 = getelementptr inbounds double, ptr %529, i64 %530
  %532 = load double, ptr %531, align 8, !tbaa !9
  %533 = load ptr, ptr %18, align 8, !tbaa !5
  %534 = load i64, ptr %37, align 8, !tbaa !11
  %535 = sub nsw i64 %534, 2
  %536 = getelementptr inbounds double, ptr %533, i64 %535
  %537 = load double, ptr %536, align 8, !tbaa !9
  %538 = fcmp ogt double %532, %537
  br i1 %538, label %539, label %540

539:                                              ; preds = %527
  store i32 0, ptr %15, align 4
  store i32 1, ptr %43, align 4
  br label %1042

540:                                              ; preds = %527
  %541 = load ptr, ptr %18, align 8, !tbaa !5
  %542 = load i64, ptr %37, align 8, !tbaa !11
  %543 = getelementptr inbounds double, ptr %541, i64 %542
  %544 = load double, ptr %543, align 8, !tbaa !9
  %545 = load ptr, ptr %18, align 8, !tbaa !5
  %546 = load i64, ptr %37, align 8, !tbaa !11
  %547 = sub nsw i64 %546, 2
  %548 = getelementptr inbounds double, ptr %545, i64 %547
  %549 = load double, ptr %548, align 8, !tbaa !9
  %550 = fdiv double %544, %549
  %551 = load double, ptr %36, align 8, !tbaa !9
  %552 = fmul double %551, %550
  store double %552, ptr %36, align 8, !tbaa !9
  %553 = load double, ptr %36, align 8, !tbaa !9
  %554 = load double, ptr %34, align 8, !tbaa !9
  %555 = fadd double %554, %553
  store double %555, ptr %34, align 8, !tbaa !9
  %556 = load double, ptr %36, align 8, !tbaa !9
  %557 = load double, ptr %35, align 8, !tbaa !9
  %558 = fcmp oge double %556, %557
  br i1 %558, label %559, label %561

559:                                              ; preds = %540
  %560 = load double, ptr %36, align 8, !tbaa !9
  br label %563

561:                                              ; preds = %540
  %562 = load double, ptr %35, align 8, !tbaa !9
  br label %563

563:                                              ; preds = %561, %559
  %564 = phi double [ %560, %559 ], [ %562, %561 ]
  %565 = fmul double %564, 1.000000e+02
  %566 = load double, ptr %34, align 8, !tbaa !9
  %567 = fcmp olt double %565, %566
  br i1 %567, label %571, label %568

568:                                              ; preds = %563
  %569 = load double, ptr %34, align 8, !tbaa !9
  %570 = fcmp olt double 5.630000e-01, %569
  br i1 %570, label %571, label %572

571:                                              ; preds = %568, %563
  br label %577

572:                                              ; preds = %568
  br label %573

573:                                              ; preds = %572
  %574 = load i64, ptr %37, align 8, !tbaa !11
  %575 = add nsw i64 %574, -4
  store i64 %575, ptr %37, align 8, !tbaa !11
  br label %519, !llvm.loop !15

576:                                              ; preds = %519
  br label %577

577:                                              ; preds = %576, %571, %526
  %578 = load double, ptr %34, align 8, !tbaa !9
  %579 = fmul double %578, 1.050000e+00
  store double %579, ptr %34, align 8, !tbaa !9
  br label %580

580:                                              ; preds = %577, %472
  %581 = load double, ptr %34, align 8, !tbaa !9
  %582 = fcmp olt double %581, 5.630000e-01
  br i1 %582, label %583, label %592

583:                                              ; preds = %580
  %584 = load double, ptr %40, align 8, !tbaa !9
  %585 = load double, ptr %34, align 8, !tbaa !9
  %586 = call double @sqrt(double noundef %585) #4
  %587 = fsub double 1.000000e+00, %586
  %588 = fmul double %584, %587
  %589 = load double, ptr %34, align 8, !tbaa !9
  %590 = fadd double %589, 1.000000e+00
  %591 = fdiv double %588, %590
  store double %591, ptr %33, align 8, !tbaa !9
  br label %592

592:                                              ; preds = %583, %580
  br label %620

593:                                              ; preds = %428
  %594 = load ptr, ptr %28, align 8, !tbaa !5
  %595 = load i64, ptr %594, align 8, !tbaa !11
  %596 = icmp eq i64 %595, -6
  br i1 %596, label %597, label %604

597:                                              ; preds = %593
  %598 = load ptr, ptr %29, align 8, !tbaa !5
  %599 = load double, ptr %598, align 8, !tbaa !9
  %600 = fsub double 1.000000e+00, %599
  %601 = load ptr, ptr %29, align 8, !tbaa !5
  %602 = load double, ptr %601, align 8, !tbaa !9
  %603 = call double @llvm.fmuladd.f64(double %600, double 3.330000e-01, double %602)
  store double %603, ptr %601, align 8, !tbaa !9
  br label %613

604:                                              ; preds = %593
  %605 = load ptr, ptr %28, align 8, !tbaa !5
  %606 = load i64, ptr %605, align 8, !tbaa !11
  %607 = icmp eq i64 %606, -18
  br i1 %607, label %608, label %610

608:                                              ; preds = %604
  %609 = load ptr, ptr %29, align 8, !tbaa !5
  store double 8.325000e-02, ptr %609, align 8, !tbaa !9
  br label %612

610:                                              ; preds = %604
  %611 = load ptr, ptr %29, align 8, !tbaa !5
  store double 2.500000e-01, ptr %611, align 8, !tbaa !9
  br label %612

612:                                              ; preds = %610, %608
  br label %613

613:                                              ; preds = %612, %597
  %614 = load ptr, ptr %29, align 8, !tbaa !5
  %615 = load double, ptr %614, align 8, !tbaa !9
  %616 = load ptr, ptr %21, align 8, !tbaa !5
  %617 = load double, ptr %616, align 8, !tbaa !9
  %618 = fmul double %615, %617
  store double %618, ptr %33, align 8, !tbaa !9
  %619 = load ptr, ptr %28, align 8, !tbaa !5
  store i64 -6, ptr %619, align 8, !tbaa !11
  br label %620

620:                                              ; preds = %613, %592
  br label %621

621:                                              ; preds = %620, %427
  br label %1039

622:                                              ; preds = %55
  %623 = load ptr, ptr %20, align 8, !tbaa !5
  %624 = load i64, ptr %623, align 8, !tbaa !11
  %625 = load ptr, ptr %17, align 8, !tbaa !5
  %626 = load i64, ptr %625, align 8, !tbaa !11
  %627 = add nsw i64 %626, 1
  %628 = icmp eq i64 %624, %627
  br i1 %628, label %629, label %820

629:                                              ; preds = %622
  %630 = load ptr, ptr %22, align 8, !tbaa !5
  %631 = load double, ptr %630, align 8, !tbaa !9
  %632 = load ptr, ptr %25, align 8, !tbaa !5
  %633 = load double, ptr %632, align 8, !tbaa !9
  %634 = fcmp oeq double %631, %633
  br i1 %634, label %635, label %804

635:                                              ; preds = %629
  %636 = load ptr, ptr %23, align 8, !tbaa !5
  %637 = load double, ptr %636, align 8, !tbaa !9
  %638 = load ptr, ptr %26, align 8, !tbaa !5
  %639 = load double, ptr %638, align 8, !tbaa !9
  %640 = fcmp oeq double %637, %639
  br i1 %640, label %641, label %804

641:                                              ; preds = %635
  %642 = load ptr, ptr %28, align 8, !tbaa !5
  store i64 -7, ptr %642, align 8, !tbaa !11
  %643 = load ptr, ptr %22, align 8, !tbaa !5
  %644 = load double, ptr %643, align 8, !tbaa !9
  %645 = fmul double %644, 3.330000e-01
  store double %645, ptr %33, align 8, !tbaa !9
  %646 = load ptr, ptr %18, align 8, !tbaa !5
  %647 = load i64, ptr %38, align 8, !tbaa !11
  %648 = sub nsw i64 %647, 5
  %649 = getelementptr inbounds double, ptr %646, i64 %648
  %650 = load double, ptr %649, align 8, !tbaa !9
  %651 = load ptr, ptr %18, align 8, !tbaa !5
  %652 = load i64, ptr %38, align 8, !tbaa !11
  %653 = sub nsw i64 %652, 7
  %654 = getelementptr inbounds double, ptr %651, i64 %653
  %655 = load double, ptr %654, align 8, !tbaa !9
  %656 = fcmp ogt double %650, %655
  br i1 %656, label %657, label %658

657:                                              ; preds = %641
  store i32 0, ptr %15, align 4
  store i32 1, ptr %43, align 4
  br label %1042

658:                                              ; preds = %641
  %659 = load ptr, ptr %18, align 8, !tbaa !5
  %660 = load i64, ptr %38, align 8, !tbaa !11
  %661 = sub nsw i64 %660, 5
  %662 = getelementptr inbounds double, ptr %659, i64 %661
  %663 = load double, ptr %662, align 8, !tbaa !9
  %664 = load ptr, ptr %18, align 8, !tbaa !5
  %665 = load i64, ptr %38, align 8, !tbaa !11
  %666 = sub nsw i64 %665, 7
  %667 = getelementptr inbounds double, ptr %664, i64 %666
  %668 = load double, ptr %667, align 8, !tbaa !9
  %669 = fdiv double %663, %668
  store double %669, ptr %35, align 8, !tbaa !9
  %670 = load double, ptr %35, align 8, !tbaa !9
  store double %670, ptr %36, align 8, !tbaa !9
  %671 = load double, ptr %36, align 8, !tbaa !9
  %672 = fcmp oeq double %671, 0.000000e+00
  br i1 %672, label %673, label %674

673:                                              ; preds = %658
  br label %740

674:                                              ; preds = %658
  %675 = load ptr, ptr %16, align 8, !tbaa !5
  %676 = load i64, ptr %675, align 8, !tbaa !11
  %677 = shl i64 %676, 2
  %678 = sub nsw i64 %677, 1
  %679 = load ptr, ptr %19, align 8, !tbaa !5
  %680 = load i64, ptr %679, align 8, !tbaa !11
  %681 = add nsw i64 %678, %680
  store i64 %681, ptr %30, align 8, !tbaa !11
  %682 = load ptr, ptr %17, align 8, !tbaa !5
  %683 = load i64, ptr %682, align 8, !tbaa !11
  %684 = shl i64 %683, 2
  %685 = sub nsw i64 %684, 9
  %686 = load ptr, ptr %19, align 8, !tbaa !5
  %687 = load i64, ptr %686, align 8, !tbaa !11
  %688 = add nsw i64 %685, %687
  store i64 %688, ptr %37, align 8, !tbaa !11
  br label %689

689:                                              ; preds = %736, %674
  %690 = load i64, ptr %37, align 8, !tbaa !11
  %691 = load i64, ptr %30, align 8, !tbaa !11
  %692 = icmp sge i64 %690, %691
  br i1 %692, label %693, label %739

693:                                              ; preds = %689
  %694 = load double, ptr %35, align 8, !tbaa !9
  store double %694, ptr %34, align 8, !tbaa !9
  %695 = load ptr, ptr %18, align 8, !tbaa !5
  %696 = load i64, ptr %37, align 8, !tbaa !11
  %697 = getelementptr inbounds double, ptr %695, i64 %696
  %698 = load double, ptr %697, align 8, !tbaa !9
  %699 = load ptr, ptr %18, align 8, !tbaa !5
  %700 = load i64, ptr %37, align 8, !tbaa !11
  %701 = sub nsw i64 %700, 2
  %702 = getelementptr inbounds double, ptr %699, i64 %701
  %703 = load double, ptr %702, align 8, !tbaa !9
  %704 = fcmp ogt double %698, %703
  br i1 %704, label %705, label %706

705:                                              ; preds = %693
  store i32 0, ptr %15, align 4
  store i32 1, ptr %43, align 4
  br label %1042

706:                                              ; preds = %693
  %707 = load ptr, ptr %18, align 8, !tbaa !5
  %708 = load i64, ptr %37, align 8, !tbaa !11
  %709 = getelementptr inbounds double, ptr %707, i64 %708
  %710 = load double, ptr %709, align 8, !tbaa !9
  %711 = load ptr, ptr %18, align 8, !tbaa !5
  %712 = load i64, ptr %37, align 8, !tbaa !11
  %713 = sub nsw i64 %712, 2
  %714 = getelementptr inbounds double, ptr %711, i64 %713
  %715 = load double, ptr %714, align 8, !tbaa !9
  %716 = fdiv double %710, %715
  %717 = load double, ptr %35, align 8, !tbaa !9
  %718 = fmul double %717, %716
  store double %718, ptr %35, align 8, !tbaa !9
  %719 = load double, ptr %35, align 8, !tbaa !9
  %720 = load double, ptr %36, align 8, !tbaa !9
  %721 = fadd double %720, %719
  store double %721, ptr %36, align 8, !tbaa !9
  %722 = load double, ptr %35, align 8, !tbaa !9
  %723 = load double, ptr %34, align 8, !tbaa !9
  %724 = fcmp oge double %722, %723
  br i1 %724, label %725, label %727

725:                                              ; preds = %706
  %726 = load double, ptr %35, align 8, !tbaa !9
  br label %729

727:                                              ; preds = %706
  %728 = load double, ptr %34, align 8, !tbaa !9
  br label %729

729:                                              ; preds = %727, %725
  %730 = phi double [ %726, %725 ], [ %728, %727 ]
  %731 = fmul double %730, 1.000000e+02
  %732 = load double, ptr %36, align 8, !tbaa !9
  %733 = fcmp olt double %731, %732
  br i1 %733, label %734, label %735

734:                                              ; preds = %729
  br label %740

735:                                              ; preds = %729
  br label %736

736:                                              ; preds = %735
  %737 = load i64, ptr %37, align 8, !tbaa !11
  %738 = add nsw i64 %737, -4
  store i64 %738, ptr %37, align 8, !tbaa !11
  br label %689, !llvm.loop !16

739:                                              ; preds = %689
  br label %740

740:                                              ; preds = %739, %734, %673
  %741 = load double, ptr %36, align 8, !tbaa !9
  %742 = fmul double %741, 1.050000e+00
  %743 = call double @sqrt(double noundef %742) #4
  store double %743, ptr %36, align 8, !tbaa !9
  %744 = load double, ptr %36, align 8, !tbaa !9
  store double %744, ptr %31, align 8, !tbaa !9
  %745 = load ptr, ptr %22, align 8, !tbaa !5
  %746 = load double, ptr %745, align 8, !tbaa !9
  %747 = load double, ptr %31, align 8, !tbaa !9
  %748 = load double, ptr %31, align 8, !tbaa !9
  %749 = call double @llvm.fmuladd.f64(double %747, double %748, double 1.000000e+00)
  %750 = fdiv double %746, %749
  store double %750, ptr %34, align 8, !tbaa !9
  %751 = load ptr, ptr %23, align 8, !tbaa !5
  %752 = load double, ptr %751, align 8, !tbaa !9
  %753 = load double, ptr %34, align 8, !tbaa !9
  %754 = fneg double %753
  %755 = call double @llvm.fmuladd.f64(double %752, double 5.000000e-01, double %754)
  store double %755, ptr %42, align 8, !tbaa !9
  %756 = load double, ptr %42, align 8, !tbaa !9
  %757 = fcmp ogt double %756, 0.000000e+00
  br i1 %757, label %758, label %786

758:                                              ; preds = %740
  %759 = load double, ptr %42, align 8, !tbaa !9
  %760 = load double, ptr %36, align 8, !tbaa !9
  %761 = load double, ptr %34, align 8, !tbaa !9
  %762 = fmul double %760, %761
  %763 = fcmp ogt double %759, %762
  br i1 %763, label %764, label %786

764:                                              ; preds = %758
  %765 = load double, ptr %33, align 8, !tbaa !9
  store double %765, ptr %31, align 8, !tbaa !9
  %766 = load double, ptr %34, align 8, !tbaa !9
  %767 = load double, ptr %34, align 8, !tbaa !9
  %768 = fmul double %767, 1.010000e+00
  %769 = load double, ptr %36, align 8, !tbaa !9
  %770 = load double, ptr %42, align 8, !tbaa !9
  %771 = fdiv double %769, %770
  %772 = fmul double %768, %771
  %773 = load double, ptr %36, align 8, !tbaa !9
  %774 = fneg double %772
  %775 = call double @llvm.fmuladd.f64(double %774, double %773, double 1.000000e+00)
  %776 = fmul double %766, %775
  store double %776, ptr %32, align 8, !tbaa !9
  %777 = load double, ptr %31, align 8, !tbaa !9
  %778 = load double, ptr %32, align 8, !tbaa !9
  %779 = fcmp oge double %777, %778
  br i1 %779, label %780, label %782

780:                                              ; preds = %764
  %781 = load double, ptr %31, align 8, !tbaa !9
  br label %784

782:                                              ; preds = %764
  %783 = load double, ptr %32, align 8, !tbaa !9
  br label %784

784:                                              ; preds = %782, %780
  %785 = phi double [ %781, %780 ], [ %783, %782 ]
  store double %785, ptr %33, align 8, !tbaa !9
  br label %803

786:                                              ; preds = %758, %740
  %787 = load double, ptr %33, align 8, !tbaa !9
  store double %787, ptr %31, align 8, !tbaa !9
  %788 = load double, ptr %34, align 8, !tbaa !9
  %789 = load double, ptr %36, align 8, !tbaa !9
  %790 = fneg double %789
  %791 = call double @llvm.fmuladd.f64(double %790, double 1.010000e+00, double 1.000000e+00)
  %792 = fmul double %788, %791
  store double %792, ptr %32, align 8, !tbaa !9
  %793 = load double, ptr %31, align 8, !tbaa !9
  %794 = load double, ptr %32, align 8, !tbaa !9
  %795 = fcmp oge double %793, %794
  br i1 %795, label %796, label %798

796:                                              ; preds = %786
  %797 = load double, ptr %31, align 8, !tbaa !9
  br label %800

798:                                              ; preds = %786
  %799 = load double, ptr %32, align 8, !tbaa !9
  br label %800

800:                                              ; preds = %798, %796
  %801 = phi double [ %797, %796 ], [ %799, %798 ]
  store double %801, ptr %33, align 8, !tbaa !9
  %802 = load ptr, ptr %28, align 8, !tbaa !5
  store i64 -8, ptr %802, align 8, !tbaa !11
  br label %803

803:                                              ; preds = %800, %784
  br label %819

804:                                              ; preds = %635, %629
  %805 = load ptr, ptr %22, align 8, !tbaa !5
  %806 = load double, ptr %805, align 8, !tbaa !9
  %807 = fmul double %806, 2.500000e-01
  store double %807, ptr %33, align 8, !tbaa !9
  %808 = load ptr, ptr %22, align 8, !tbaa !5
  %809 = load double, ptr %808, align 8, !tbaa !9
  %810 = load ptr, ptr %25, align 8, !tbaa !5
  %811 = load double, ptr %810, align 8, !tbaa !9
  %812 = fcmp oeq double %809, %811
  br i1 %812, label %813, label %817

813:                                              ; preds = %804
  %814 = load ptr, ptr %22, align 8, !tbaa !5
  %815 = load double, ptr %814, align 8, !tbaa !9
  %816 = fmul double %815, 5.000000e-01
  store double %816, ptr %33, align 8, !tbaa !9
  br label %817

817:                                              ; preds = %813, %804
  %818 = load ptr, ptr %28, align 8, !tbaa !5
  store i64 -9, ptr %818, align 8, !tbaa !11
  br label %819

819:                                              ; preds = %817, %803
  br label %1038

820:                                              ; preds = %622
  %821 = load ptr, ptr %20, align 8, !tbaa !5
  %822 = load i64, ptr %821, align 8, !tbaa !11
  %823 = load ptr, ptr %17, align 8, !tbaa !5
  %824 = load i64, ptr %823, align 8, !tbaa !11
  %825 = add nsw i64 %824, 2
  %826 = icmp eq i64 %822, %825
  br i1 %826, label %827, label %1027

827:                                              ; preds = %820
  %828 = load ptr, ptr %23, align 8, !tbaa !5
  %829 = load double, ptr %828, align 8, !tbaa !9
  %830 = load ptr, ptr %26, align 8, !tbaa !5
  %831 = load double, ptr %830, align 8, !tbaa !9
  %832 = fcmp oeq double %829, %831
  br i1 %832, label %833, label %1021

833:                                              ; preds = %827
  %834 = load ptr, ptr %18, align 8, !tbaa !5
  %835 = load i64, ptr %38, align 8, !tbaa !11
  %836 = sub nsw i64 %835, 5
  %837 = getelementptr inbounds double, ptr %834, i64 %836
  %838 = load double, ptr %837, align 8, !tbaa !9
  %839 = fmul double %838, 2.000000e+00
  %840 = load ptr, ptr %18, align 8, !tbaa !5
  %841 = load i64, ptr %38, align 8, !tbaa !11
  %842 = sub nsw i64 %841, 7
  %843 = getelementptr inbounds double, ptr %840, i64 %842
  %844 = load double, ptr %843, align 8, !tbaa !9
  %845 = fcmp olt double %839, %844
  br i1 %845, label %846, label %1021

846:                                              ; preds = %833
  %847 = load ptr, ptr %28, align 8, !tbaa !5
  store i64 -10, ptr %847, align 8, !tbaa !11
  %848 = load ptr, ptr %23, align 8, !tbaa !5
  %849 = load double, ptr %848, align 8, !tbaa !9
  %850 = fmul double %849, 3.330000e-01
  store double %850, ptr %33, align 8, !tbaa !9
  %851 = load ptr, ptr %18, align 8, !tbaa !5
  %852 = load i64, ptr %38, align 8, !tbaa !11
  %853 = sub nsw i64 %852, 5
  %854 = getelementptr inbounds double, ptr %851, i64 %853
  %855 = load double, ptr %854, align 8, !tbaa !9
  %856 = load ptr, ptr %18, align 8, !tbaa !5
  %857 = load i64, ptr %38, align 8, !tbaa !11
  %858 = sub nsw i64 %857, 7
  %859 = getelementptr inbounds double, ptr %856, i64 %858
  %860 = load double, ptr %859, align 8, !tbaa !9
  %861 = fcmp ogt double %855, %860
  br i1 %861, label %862, label %863

862:                                              ; preds = %846
  store i32 0, ptr %15, align 4
  store i32 1, ptr %43, align 4
  br label %1042

863:                                              ; preds = %846
  %864 = load ptr, ptr %18, align 8, !tbaa !5
  %865 = load i64, ptr %38, align 8, !tbaa !11
  %866 = sub nsw i64 %865, 5
  %867 = getelementptr inbounds double, ptr %864, i64 %866
  %868 = load double, ptr %867, align 8, !tbaa !9
  %869 = load ptr, ptr %18, align 8, !tbaa !5
  %870 = load i64, ptr %38, align 8, !tbaa !11
  %871 = sub nsw i64 %870, 7
  %872 = getelementptr inbounds double, ptr %869, i64 %871
  %873 = load double, ptr %872, align 8, !tbaa !9
  %874 = fdiv double %868, %873
  store double %874, ptr %35, align 8, !tbaa !9
  %875 = load double, ptr %35, align 8, !tbaa !9
  store double %875, ptr %36, align 8, !tbaa !9
  %876 = load double, ptr %36, align 8, !tbaa !9
  %877 = fcmp oeq double %876, 0.000000e+00
  br i1 %877, label %878, label %879

878:                                              ; preds = %863
  br label %936

879:                                              ; preds = %863
  %880 = load ptr, ptr %16, align 8, !tbaa !5
  %881 = load i64, ptr %880, align 8, !tbaa !11
  %882 = shl i64 %881, 2
  %883 = sub nsw i64 %882, 1
  %884 = load ptr, ptr %19, align 8, !tbaa !5
  %885 = load i64, ptr %884, align 8, !tbaa !11
  %886 = add nsw i64 %883, %885
  store i64 %886, ptr %30, align 8, !tbaa !11
  %887 = load ptr, ptr %17, align 8, !tbaa !5
  %888 = load i64, ptr %887, align 8, !tbaa !11
  %889 = shl i64 %888, 2
  %890 = sub nsw i64 %889, 9
  %891 = load ptr, ptr %19, align 8, !tbaa !5
  %892 = load i64, ptr %891, align 8, !tbaa !11
  %893 = add nsw i64 %890, %892
  store i64 %893, ptr %37, align 8, !tbaa !11
  br label %894

894:                                              ; preds = %932, %879
  %895 = load i64, ptr %37, align 8, !tbaa !11
  %896 = load i64, ptr %30, align 8, !tbaa !11
  %897 = icmp sge i64 %895, %896
  br i1 %897, label %898, label %935

898:                                              ; preds = %894
  %899 = load ptr, ptr %18, align 8, !tbaa !5
  %900 = load i64, ptr %37, align 8, !tbaa !11
  %901 = getelementptr inbounds double, ptr %899, i64 %900
  %902 = load double, ptr %901, align 8, !tbaa !9
  %903 = load ptr, ptr %18, align 8, !tbaa !5
  %904 = load i64, ptr %37, align 8, !tbaa !11
  %905 = sub nsw i64 %904, 2
  %906 = getelementptr inbounds double, ptr %903, i64 %905
  %907 = load double, ptr %906, align 8, !tbaa !9
  %908 = fcmp ogt double %902, %907
  br i1 %908, label %909, label %910

909:                                              ; preds = %898
  store i32 0, ptr %15, align 4
  store i32 1, ptr %43, align 4
  br label %1042

910:                                              ; preds = %898
  %911 = load ptr, ptr %18, align 8, !tbaa !5
  %912 = load i64, ptr %37, align 8, !tbaa !11
  %913 = getelementptr inbounds double, ptr %911, i64 %912
  %914 = load double, ptr %913, align 8, !tbaa !9
  %915 = load ptr, ptr %18, align 8, !tbaa !5
  %916 = load i64, ptr %37, align 8, !tbaa !11
  %917 = sub nsw i64 %916, 2
  %918 = getelementptr inbounds double, ptr %915, i64 %917
  %919 = load double, ptr %918, align 8, !tbaa !9
  %920 = fdiv double %914, %919
  %921 = load double, ptr %35, align 8, !tbaa !9
  %922 = fmul double %921, %920
  store double %922, ptr %35, align 8, !tbaa !9
  %923 = load double, ptr %35, align 8, !tbaa !9
  %924 = load double, ptr %36, align 8, !tbaa !9
  %925 = fadd double %924, %923
  store double %925, ptr %36, align 8, !tbaa !9
  %926 = load double, ptr %35, align 8, !tbaa !9
  %927 = fmul double %926, 1.000000e+02
  %928 = load double, ptr %36, align 8, !tbaa !9
  %929 = fcmp olt double %927, %928
  br i1 %929, label %930, label %931

930:                                              ; preds = %910
  br label %936

931:                                              ; preds = %910
  br label %932

932:                                              ; preds = %931
  %933 = load i64, ptr %37, align 8, !tbaa !11
  %934 = add nsw i64 %933, -4
  store i64 %934, ptr %37, align 8, !tbaa !11
  br label %894, !llvm.loop !17

935:                                              ; preds = %894
  br label %936

936:                                              ; preds = %935, %930, %878
  %937 = load double, ptr %36, align 8, !tbaa !9
  %938 = fmul double %937, 1.050000e+00
  %939 = call double @sqrt(double noundef %938) #4
  store double %939, ptr %36, align 8, !tbaa !9
  %940 = load double, ptr %36, align 8, !tbaa !9
  store double %940, ptr %31, align 8, !tbaa !9
  %941 = load ptr, ptr %23, align 8, !tbaa !5
  %942 = load double, ptr %941, align 8, !tbaa !9
  %943 = load double, ptr %31, align 8, !tbaa !9
  %944 = load double, ptr %31, align 8, !tbaa !9
  %945 = call double @llvm.fmuladd.f64(double %943, double %944, double 1.000000e+00)
  %946 = fdiv double %942, %945
  store double %946, ptr %34, align 8, !tbaa !9
  %947 = load ptr, ptr %18, align 8, !tbaa !5
  %948 = load i64, ptr %38, align 8, !tbaa !11
  %949 = sub nsw i64 %948, 7
  %950 = getelementptr inbounds double, ptr %947, i64 %949
  %951 = load double, ptr %950, align 8, !tbaa !9
  %952 = load ptr, ptr %18, align 8, !tbaa !5
  %953 = load i64, ptr %38, align 8, !tbaa !11
  %954 = sub nsw i64 %953, 9
  %955 = getelementptr inbounds double, ptr %952, i64 %954
  %956 = load double, ptr %955, align 8, !tbaa !9
  %957 = fadd double %951, %956
  %958 = load ptr, ptr %18, align 8, !tbaa !5
  %959 = load i64, ptr %38, align 8, !tbaa !11
  %960 = sub nsw i64 %959, 11
  %961 = getelementptr inbounds double, ptr %958, i64 %960
  %962 = load double, ptr %961, align 8, !tbaa !9
  %963 = call double @sqrt(double noundef %962) #4
  %964 = load ptr, ptr %18, align 8, !tbaa !5
  %965 = load i64, ptr %38, align 8, !tbaa !11
  %966 = sub nsw i64 %965, 9
  %967 = getelementptr inbounds double, ptr %964, i64 %966
  %968 = load double, ptr %967, align 8, !tbaa !9
  %969 = call double @sqrt(double noundef %968) #4
  %970 = fneg double %963
  %971 = call double @llvm.fmuladd.f64(double %970, double %969, double %957)
  %972 = load double, ptr %34, align 8, !tbaa !9
  %973 = fsub double %971, %972
  store double %973, ptr %42, align 8, !tbaa !9
  %974 = load double, ptr %42, align 8, !tbaa !9
  %975 = fcmp ogt double %974, 0.000000e+00
  br i1 %975, label %976, label %1004

976:                                              ; preds = %936
  %977 = load double, ptr %42, align 8, !tbaa !9
  %978 = load double, ptr %36, align 8, !tbaa !9
  %979 = load double, ptr %34, align 8, !tbaa !9
  %980 = fmul double %978, %979
  %981 = fcmp ogt double %977, %980
  br i1 %981, label %982, label %1004

982:                                              ; preds = %976
  %983 = load double, ptr %33, align 8, !tbaa !9
  store double %983, ptr %31, align 8, !tbaa !9
  %984 = load double, ptr %34, align 8, !tbaa !9
  %985 = load double, ptr %34, align 8, !tbaa !9
  %986 = fmul double %985, 1.010000e+00
  %987 = load double, ptr %36, align 8, !tbaa !9
  %988 = load double, ptr %42, align 8, !tbaa !9
  %989 = fdiv double %987, %988
  %990 = fmul double %986, %989
  %991 = load double, ptr %36, align 8, !tbaa !9
  %992 = fneg double %990
  %993 = call double @llvm.fmuladd.f64(double %992, double %991, double 1.000000e+00)
  %994 = fmul double %984, %993
  store double %994, ptr %32, align 8, !tbaa !9
  %995 = load double, ptr %31, align 8, !tbaa !9
  %996 = load double, ptr %32, align 8, !tbaa !9
  %997 = fcmp oge double %995, %996
  br i1 %997, label %998, label %1000

998:                                              ; preds = %982
  %999 = load double, ptr %31, align 8, !tbaa !9
  br label %1002

1000:                                             ; preds = %982
  %1001 = load double, ptr %32, align 8, !tbaa !9
  br label %1002

1002:                                             ; preds = %1000, %998
  %1003 = phi double [ %999, %998 ], [ %1001, %1000 ]
  store double %1003, ptr %33, align 8, !tbaa !9
  br label %1020

1004:                                             ; preds = %976, %936
  %1005 = load double, ptr %33, align 8, !tbaa !9
  store double %1005, ptr %31, align 8, !tbaa !9
  %1006 = load double, ptr %34, align 8, !tbaa !9
  %1007 = load double, ptr %36, align 8, !tbaa !9
  %1008 = fneg double %1007
  %1009 = call double @llvm.fmuladd.f64(double %1008, double 1.010000e+00, double 1.000000e+00)
  %1010 = fmul double %1006, %1009
  store double %1010, ptr %32, align 8, !tbaa !9
  %1011 = load double, ptr %31, align 8, !tbaa !9
  %1012 = load double, ptr %32, align 8, !tbaa !9
  %1013 = fcmp oge double %1011, %1012
  br i1 %1013, label %1014, label %1016

1014:                                             ; preds = %1004
  %1015 = load double, ptr %31, align 8, !tbaa !9
  br label %1018

1016:                                             ; preds = %1004
  %1017 = load double, ptr %32, align 8, !tbaa !9
  br label %1018

1018:                                             ; preds = %1016, %1014
  %1019 = phi double [ %1015, %1014 ], [ %1017, %1016 ]
  store double %1019, ptr %33, align 8, !tbaa !9
  br label %1020

1020:                                             ; preds = %1018, %1002
  br label %1026

1021:                                             ; preds = %833, %827
  %1022 = load ptr, ptr %23, align 8, !tbaa !5
  %1023 = load double, ptr %1022, align 8, !tbaa !9
  %1024 = fmul double %1023, 2.500000e-01
  store double %1024, ptr %33, align 8, !tbaa !9
  %1025 = load ptr, ptr %28, align 8, !tbaa !5
  store i64 -11, ptr %1025, align 8, !tbaa !11
  br label %1026

1026:                                             ; preds = %1021, %1020
  br label %1037

1027:                                             ; preds = %820
  %1028 = load ptr, ptr %20, align 8, !tbaa !5
  %1029 = load i64, ptr %1028, align 8, !tbaa !11
  %1030 = load ptr, ptr %17, align 8, !tbaa !5
  %1031 = load i64, ptr %1030, align 8, !tbaa !11
  %1032 = add nsw i64 %1031, 2
  %1033 = icmp sgt i64 %1029, %1032
  br i1 %1033, label %1034, label %1036

1034:                                             ; preds = %1027
  store double 0.000000e+00, ptr %33, align 8, !tbaa !9
  %1035 = load ptr, ptr %28, align 8, !tbaa !5
  store i64 -12, ptr %1035, align 8, !tbaa !11
  br label %1036

1036:                                             ; preds = %1034, %1027
  br label %1037

1037:                                             ; preds = %1036, %1026
  br label %1038

1038:                                             ; preds = %1037, %819
  br label %1039

1039:                                             ; preds = %1038, %621
  %1040 = load double, ptr %33, align 8, !tbaa !9
  %1041 = load ptr, ptr %27, align 8, !tbaa !5
  store double %1040, ptr %1041, align 8, !tbaa !9
  store i32 0, ptr %15, align 4
  store i32 1, ptr %43, align 4
  br label %1042

1042:                                             ; preds = %1039, %909, %862, %705, %657, %539, %471, %374, %327, %303, %264, %49
  call void @llvm.lifetime.end.p0(i64 8, ptr %42) #4
  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 8, ptr %38) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %37) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %36) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %35) #4
  call void @llvm.lifetime.end.p0(i64 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
  %1043 = load i32, ptr %15, align 4
  ret i32 %1043
}

; 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 = !{!"long", !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 noundef i32 @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 i64 -1, ptr %12, align 8, !tbaa !9
  br label %.loopexit

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

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 %165

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

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

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

68:                                               ; preds = %60
  %69 = fneg double %49
  %70 = fdiv double %69, %64
  %71 = tail call double @llvm.fmuladd.f64(double %70, double %49, double %67)
  br label %75

72:                                               ; preds = %60
  %73 = fadd double %41, %49
  %74 = fsub double %67, %73
  br label %75

75:                                               ; preds = %72, %68
  %.0 = phi double [ %71, %68 ], [ %74, %72 ]
  %76 = fcmp ogt double %.0, 0.000000e+00
  %77 = fcmp ogt double %.0, %41
  %or.cond455 = select i1 %76, i1 %77, i1 false
  br i1 %or.cond455, label %78, label %85

78:                                               ; preds = %75
  %79 = fneg double %41
  %80 = fdiv double %79, %.0
  %81 = tail call double @llvm.fmuladd.f64(double %80, double %41, double %54)
  %82 = fmul double %53, 5.000000e-01
  %83 = fcmp oge double %81, %82
  %84 = select i1 %83, double %81, double %82
  store i64 -2, ptr %12, align 8, !tbaa !9
  br label %404

85:                                               ; preds = %75
  %86 = fcmp ogt double %54, %41
  %87 = fsub double %54, %41
  %.0398 = select i1 %86, double %87, double 0.000000e+00
  %88 = fadd double %41, %49
  %89 = fcmp ogt double %52, %88
  br i1 %89, label %90, label %94

90:                                               ; preds = %85
  %91 = fsub double %52, %88
  %92 = fcmp ole double %.0398, %91
  %93 = select i1 %92, double %.0398, double %91
  br label %94

94:                                               ; preds = %90, %85
  %.1399 = phi double [ %93, %90 ], [ %.0398, %85 ]
  %95 = fmul double %53, 3.330000e-01
  %96 = fcmp oge double %.1399, %95
  %97 = select i1 %96, double %.1399, double %95
  store i64 -3, ptr %12, align 8, !tbaa !9
  br label %404

98:                                               ; preds = %56
  store i64 -4, ptr %12, align 8, !tbaa !9
  %99 = fcmp ogt double %51, %50
  br i1 %99, label %.loopexit, label %100

100:                                              ; preds = %98
  %101 = fdiv double %51, %50
  %.pre = load i64, ptr %3, align 8, !tbaa !9
  %102 = insertelement <2 x double> <double 0.000000e+00, double poison>, double %101, i64 1
  br label %126

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

114:                                              ; preds = %103
  %115 = load double, ptr %46, align 8, !tbaa !5
  %116 = getelementptr i8, ptr %34, i64 -88
  %117 = load double, ptr %116, align 8, !tbaa !5
  %118 = fcmp ogt double %115, %117
  br i1 %118, label %.loopexit, label %119

119:                                              ; preds = %114
  %120 = insertelement <2 x double> poison, double %111, i64 0
  %121 = insertelement <2 x double> %120, double %115, i64 1
  %122 = insertelement <2 x double> poison, double %112, i64 0
  %123 = insertelement <2 x double> %122, double %117, i64 1
  %124 = fdiv <2 x double> %121, %123
  %125 = add nsw i64 %24, -13
  br label %126

126:                                              ; preds = %119, %100
  %127 = phi i64 [ %.pre, %100 ], [ %104, %119 ]
  %.0383 = phi i64 [ %45, %100 ], [ %125, %119 ]
  %.0382 = phi double [ %54, %100 ], [ %109, %119 ]
  %128 = phi <2 x double> [ %102, %100 ], [ %124, %119 ]
  %129 = fmul double %53, 2.500000e-01
  %130 = extractelement <2 x double> %128, i64 0
  %131 = extractelement <2 x double> %128, i64 1
  %132 = fadd double %130, %131
  %133 = load i64, ptr %0, align 8, !tbaa !9
  %134 = shl i64 %133, 2
  %135 = add nsw i64 %134, -1
  %136 = add nsw i64 %135, %127
  %137 = icmp slt i64 %.0383, %136
  %138 = fcmp oeq double %131, 0.000000e+00
  %or.cond5487 = or i1 %138, %137
  br i1 %or.cond5487, label %._crit_edge493, label %.lr.ph492

139:                                              ; preds = %148
  %140 = add nsw i64 %.0385490, -4
  %141 = icmp slt i64 %140, %136
  %142 = fcmp oeq double %150, 0.000000e+00
  %or.cond5 = or i1 %142, %141
  br i1 %or.cond5, label %._crit_edge493, label %.lr.ph492, !llvm.loop !11

.lr.ph492:                                        ; preds = %126, %139
  %.0385490 = phi i64 [ %140, %139 ], [ %.0383, %126 ]
  %.1387489 = phi double [ %150, %139 ], [ %131, %126 ]
  %.1393488 = phi double [ %151, %139 ], [ %132, %126 ]
  %143 = getelementptr inbounds double, ptr %15, i64 %.0385490
  %144 = load double, ptr %143, align 8, !tbaa !5
  %145 = getelementptr i8, ptr %143, i64 -16
  %146 = load double, ptr %145, align 8, !tbaa !5
  %147 = fcmp ogt double %144, %146
  br i1 %147, label %.loopexit, label %148

148:                                              ; preds = %.lr.ph492
  %149 = fdiv double %144, %146
  %150 = fmul double %.1387489, %149
  %151 = fadd double %.1393488, %150
  %152 = fcmp oge double %150, %.1387489
  %153 = select i1 %152, double %150, double %.1387489
  %154 = fmul double %153, 1.000000e+02
  %155 = fcmp olt double %154, %151
  %156 = fcmp ogt double %151, 5.630000e-01
  %or.cond = or i1 %156, %155
  br i1 %or.cond, label %._crit_edge493, label %139

._crit_edge493:                                   ; preds = %148, %139, %126
  %.2394 = phi double [ %132, %126 ], [ %151, %139 ], [ %151, %148 ]
  %157 = fmul double %.2394, 1.050000e+00
  %158 = fcmp olt double %157, 5.630000e-01
  br i1 %158, label %159, label %404

159:                                              ; preds = %._crit_edge493
  %160 = tail call double @sqrt(double noundef %157) #3
  %161 = fsub double 1.000000e+00, %160
  %162 = fmul double %.0382, %161
  %163 = fadd double %157, 1.000000e+00
  %164 = fdiv double %162, %163
  br label %404

165:                                              ; preds = %30
  %166 = load double, ptr %10, align 8, !tbaa !5
  %167 = fcmp oeq double %16, %166
  br i1 %167, label %168, label %240

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

181:                                              ; preds = %168
  %182 = getelementptr i8, ptr %173, i64 -32
  %183 = load double, ptr %182, align 8, !tbaa !5
  %184 = fcmp ogt double %183, %175
  br i1 %184, label %.loopexit, label %185

185:                                              ; preds = %181
  %186 = insertelement <2 x double> poison, double %179, i64 0
  %187 = insertelement <2 x double> %186, double %183, i64 1
  %188 = insertelement <2 x double> poison, double %177, i64 0
  %189 = insertelement <2 x double> %188, double %175, i64 1
  %190 = fdiv <2 x double> %187, %189
  %191 = extractelement <2 x double> %190, i64 1
  %192 = fadd double %191, 1.000000e+00
  %193 = extractelement <2 x double> %190, i64 0
  %194 = fmul double %193, %192
  %195 = load i64, ptr %1, align 8, !tbaa !9
  %196 = load i64, ptr %0, align 8, !tbaa !9
  %197 = sub nsw i64 %195, %196
  %198 = icmp sgt i64 %197, 2
  br i1 %198, label %199, label %232

199:                                              ; preds = %185
  %200 = getelementptr double, ptr %15, i64 %24
  %201 = getelementptr i8, ptr %200, i64 -104
  %202 = load double, ptr %201, align 8, !tbaa !5
  %203 = getelementptr i8, ptr %200, i64 -120
  %204 = load double, ptr %203, align 8, !tbaa !5
  %205 = fdiv double %202, %204
  %206 = fadd double %194, %205
  %207 = shl i64 %196, 2
  %208 = add i64 %170, -1
  %209 = add i64 %208, %207
  %210 = add nsw i64 %24, -17
  %211 = icmp slt i64 %210, %209
  %212 = fcmp oeq double %205, 0.000000e+00
  %or.cond7479 = select i1 %211, i1 true, i1 %212
  br i1 %or.cond7479, label %._crit_edge, label %.lr.ph483

213:                                              ; preds = %222
  %214 = add nsw i64 %.1482, -4
  %215 = icmp slt i64 %214, %209
  %216 = fcmp oeq double %224, 0.000000e+00
  %or.cond7 = or i1 %215, %216
  br i1 %or.cond7, label %._crit_edge, label %.lr.ph483, !llvm.loop !13

.lr.ph483:                                        ; preds = %199, %213
  %.1482 = phi i64 [ %214, %213 ], [ %210, %199 ]
  %.2388481 = phi double [ %224, %213 ], [ %205, %199 ]
  %.3395480 = phi double [ %225, %213 ], [ %206, %199 ]
  %217 = getelementptr inbounds double, ptr %15, i64 %.1482
  %218 = load double, ptr %217, align 8, !tbaa !5
  %219 = getelementptr i8, ptr %217, i64 -16
  %220 = load double, ptr %219, align 8, !tbaa !5
  %221 = fcmp ogt double %218, %220
  br i1 %221, label %.loopexit, label %222

222:                                              ; preds = %.lr.ph483
  %223 = fdiv double %218, %220
  %224 = fmul double %.2388481, %223
  %225 = fadd double %.3395480, %224
  %226 = fcmp oge double %224, %.2388481
  %227 = select i1 %226, double %224, double %.2388481
  %228 = fmul double %227, 1.000000e+02
  %229 = fcmp olt double %228, %225
  %230 = fcmp ogt double %225, 5.630000e-01
  %or.cond3 = or i1 %230, %229
  br i1 %or.cond3, label %._crit_edge, label %213

._crit_edge:                                      ; preds = %222, %213, %199
  %.4396 = phi double [ %206, %199 ], [ %225, %213 ], [ %225, %222 ]
  %231 = fmul double %.4396, 1.050000e+00
  br label %232

232:                                              ; preds = %._crit_edge, %185
  %.5397 = phi double [ %231, %._crit_edge ], [ %194, %185 ]
  %233 = fcmp olt double %.5397, 5.630000e-01
  br i1 %233, label %234, label %404

234:                                              ; preds = %232
  %235 = tail call double @sqrt(double noundef %.5397) #3
  %236 = fsub double 1.000000e+00, %235
  %237 = fmul double %166, %236
  %238 = fadd double %.5397, 1.000000e+00
  %239 = fdiv double %237, %238
  br label %404

240:                                              ; preds = %165
  %241 = load i64, ptr %12, align 8, !tbaa !9
  switch i64 %241, label %246 [
    i64 -6, label %242
    i64 -18, label %247
  ]

242:                                              ; preds = %240
  %243 = load double, ptr %13, align 8, !tbaa !5
  %244 = fsub double 1.000000e+00, %243
  %245 = tail call double @llvm.fmuladd.f64(double %244, double 3.330000e-01, double %243)
  br label %247

246:                                              ; preds = %240
  br label %247

247:                                              ; preds = %240, %246, %242
  %.sink = phi double [ 2.500000e-01, %246 ], [ %245, %242 ], [ 8.325000e-02, %240 ]
  store double %.sink, ptr %13, align 8, !tbaa !5
  %248 = load double, ptr %5, align 8, !tbaa !5
  %249 = fmul double %.sink, %248
  store i64 -6, ptr %12, align 8, !tbaa !9
  br label %404

250:                                              ; preds = %20
  %251 = add nsw i64 %21, 1
  %252 = icmp eq i64 %25, %251
  br i1 %252, label %253, label %322

253:                                              ; preds = %250
  %254 = load double, ptr %6, align 8, !tbaa !5
  %255 = load double, ptr %9, align 8, !tbaa !5
  %256 = fcmp oeq double %254, %255
  br i1 %256, label %257, label %321

257:                                              ; preds = %253
  %258 = load double, ptr %7, align 8, !tbaa !5
  %259 = load double, ptr %10, align 8, !tbaa !5
  %260 = fcmp oeq double %258, %259
  br i1 %260, label %261, label %321

261:                                              ; preds = %257
  store i64 -7, ptr %12, align 8, !tbaa !9
  %262 = fmul double %254, 3.330000e-01
  %263 = getelementptr double, ptr %15, i64 %24
  %264 = getelementptr i8, ptr %263, i64 -40
  %265 = load double, ptr %264, align 8, !tbaa !5
  %266 = getelementptr i8, ptr %263, i64 -56
  %267 = load double, ptr %266, align 8, !tbaa !5
  %268 = fcmp ogt double %265, %267
  br i1 %268, label %.loopexit, label %269

269:                                              ; preds = %261
  %270 = fdiv double %265, %267
  %271 = fcmp oeq double %270, 0.000000e+00
  br i1 %271, label %.loopexit461, label %272

272:                                              ; preds = %269
  %273 = load i64, ptr %0, align 8, !tbaa !9
  %274 = shl i64 %273, 2
  %275 = add nsw i64 %274, -1
  %276 = load i64, ptr %3, align 8, !tbaa !9
  %277 = add nsw i64 %275, %276
  %278 = load i64, ptr %1, align 8, !tbaa !9
  %279 = shl i64 %278, 2
  %280 = add i64 %276, -9
  %281 = add i64 %280, %279
  %.not453471 = icmp slt i64 %281, %277
  br i1 %.not453471, label %.loopexit461, label %.lr.ph475

.lr.ph475:                                        ; preds = %272, %287
  %.2474 = phi i64 [ %295, %287 ], [ %281, %272 ]
  %.3389473 = phi double [ %290, %287 ], [ %270, %272 ]
  %.0390472 = phi double [ %289, %287 ], [ %270, %272 ]
  %282 = getelementptr inbounds double, ptr %15, i64 %.2474
  %283 = load double, ptr %282, align 8, !tbaa !5
  %284 = getelementptr i8, ptr %282, i64 -16
  %285 = load double, ptr %284, align 8, !tbaa !5
  %286 = fcmp ogt double %283, %285
  br i1 %286, label %.loopexit, label %287

287:                                              ; preds = %.lr.ph475
  %288 = fdiv double %283, %285
  %289 = fmul double %.0390472, %288
  %290 = fadd double %.3389473, %289
  %291 = fcmp oge double %289, %.0390472
  %292 = select i1 %291, double %289, double %.0390472
  %293 = fmul double %292, 1.000000e+02
  %294 = fcmp olt double %293, %290
  %295 = add nsw i64 %.2474, -4
  %.not453 = icmp slt i64 %295, %277
  %or.cond509 = select i1 %294, i1 true, i1 %.not453
  br i1 %or.cond509, label %.loopexit461, label %.lr.ph475, !llvm.loop !14

.loopexit461:                                     ; preds = %287, %272, %269
  %.4 = phi double [ %270, %269 ], [ %270, %272 ], [ %290, %287 ]
  %296 = fmul double %.4, 1.050000e+00
  %297 = tail call double @sqrt(double noundef %296) #3
  %298 = load double, ptr %6, align 8, !tbaa !5
  %299 = tail call double @llvm.fmuladd.f64(double %297, double %297, double 1.000000e+00)
  %300 = fdiv double %298, %299
  %301 = load double, ptr %7, align 8, !tbaa !5
  %302 = fneg double %300
  %303 = tail call double @llvm.fmuladd.f64(double %301, double 5.000000e-01, double %302)
  %304 = fcmp ogt double %303, 0.000000e+00
  %305 = fmul double %297, %300
  %306 = fcmp ogt double %303, %305
  %or.cond457 = select i1 %304, i1 %306, i1 false
  br i1 %or.cond457, label %307, label %315

307:                                              ; preds = %.loopexit461
  %308 = fdiv double %297, %303
  %309 = fmul double %300, -1.010000e+00
  %310 = fmul double %309, %308
  %311 = tail call double @llvm.fmuladd.f64(double %310, double %297, double 1.000000e+00)
  %312 = fmul double %300, %311
  %313 = fcmp oge double %262, %312
  %314 = select i1 %313, double %262, double %312
  br label %404

315:                                              ; preds = %.loopexit461
  %316 = fneg double %297
  %317 = tail call double @llvm.fmuladd.f64(double %316, double 1.010000e+00, double 1.000000e+00)
  %318 = fmul double %317, %300
  %319 = fcmp oge double %262, %318
  %320 = select i1 %319, double %262, double %318
  store i64 -8, ptr %12, align 8, !tbaa !9
  br label %404

321:                                              ; preds = %257, %253
  %.2400.v = phi double [ 5.000000e-01, %257 ], [ 2.500000e-01, %253 ]
  %.2400 = fmul double %254, %.2400.v
  store i64 -9, ptr %12, align 8, !tbaa !9
  br label %404

322:                                              ; preds = %250
  %323 = add nsw i64 %21, 2
  %324 = icmp eq i64 %25, %323
  br i1 %324, label %325, label %401

325:                                              ; preds = %322
  %326 = load double, ptr %7, align 8, !tbaa !5
  %327 = load double, ptr %10, align 8, !tbaa !5
  %328 = fcmp oeq double %326, %327
  br i1 %328, label %329, label %399

329:                                              ; preds = %325
  %330 = getelementptr double, ptr %15, i64 %24
  %331 = getelementptr i8, ptr %330, i64 -40
  %332 = load double, ptr %331, align 8, !tbaa !5
  %333 = fmul double %332, 2.000000e+00
  %334 = getelementptr i8, ptr %330, i64 -56
  %335 = load double, ptr %334, align 8, !tbaa !5
  %336 = fcmp olt double %333, %335
  br i1 %336, label %337, label %399

337:                                              ; preds = %329
  store i64 -10, ptr %12, align 8, !tbaa !9
  %338 = fmul double %326, 3.330000e-01
  %339 = fcmp ogt double %332, %335
  br i1 %339, label %.loopexit, label %340

340:                                              ; preds = %337
  %341 = fdiv double %332, %335
  %342 = fcmp oeq double %341, 0.000000e+00
  br i1 %342, label %.loopexit463, label %343

343:                                              ; preds = %340
  %344 = load i64, ptr %0, align 8, !tbaa !9
  %345 = shl i64 %344, 2
  %346 = add nsw i64 %345, -1
  %347 = load i64, ptr %3, align 8, !tbaa !9
  %348 = add nsw i64 %346, %347
  %349 = load i64, ptr %1, align 8, !tbaa !9
  %350 = shl i64 %349, 2
  %351 = add i64 %347, -9
  %352 = add i64 %351, %350
  %.not465 = icmp slt i64 %352, %348
  br i1 %.not465, label %.loopexit463, label %.lr.ph

.lr.ph:                                           ; preds = %343, %358
  %.3468 = phi i64 [ %364, %358 ], [ %352, %343 ]
  %.5467 = phi double [ %361, %358 ], [ %341, %343 ]
  %.1391466 = phi double [ %360, %358 ], [ %341, %343 ]
  %353 = getelementptr inbounds double, ptr %15, i64 %.3468
  %354 = load double, ptr %353, align 8, !tbaa !5
  %355 = getelementptr i8, ptr %353, i64 -16
  %356 = load double, ptr %355, align 8, !tbaa !5
  %357 = fcmp ogt double %354, %356
  br i1 %357, label %.loopexit, label %358

358:                                              ; preds = %.lr.ph
  %359 = fdiv double %354, %356
  %360 = fmul double %.1391466, %359
  %361 = fadd double %.5467, %360
  %362 = fmul double %360, 1.000000e+02
  %363 = fcmp olt double %362, %361
  %364 = add nsw i64 %.3468, -4
  %.not = icmp slt i64 %364, %348
  %or.cond510 = select i1 %363, i1 true, i1 %.not
  br i1 %or.cond510, label %.loopexit463, label %.lr.ph, !llvm.loop !15

.loopexit463:                                     ; preds = %358, %343, %340
  %.6 = phi double [ %341, %340 ], [ %341, %343 ], [ %361, %358 ]
  %365 = fmul double %.6, 1.050000e+00
  %366 = tail call double @sqrt(double noundef %365) #3
  %367 = load double, ptr %7, align 8, !tbaa !5
  %368 = tail call double @llvm.fmuladd.f64(double %366, double %366, double 1.000000e+00)
  %369 = fdiv double %367, %368
  %370 = load double, ptr %334, align 8, !tbaa !5
  %371 = getelementptr i8, ptr %330, i64 -72
  %372 = load double, ptr %371, align 8, !tbaa !5
  %373 = fadd double %370, %372
  %374 = getelementptr i8, ptr %330, i64 -88
  %375 = load double, ptr %374, align 8, !tbaa !5
  %376 = tail call double @sqrt(double noundef %375) #3
  %377 = load double, ptr %371, align 8, !tbaa !5
  %378 = tail call double @sqrt(double noundef %377) #3
  %379 = fneg double %376
  %380 = tail call double @llvm.fmuladd.f64(double %379, double %378, double %373)
  %381 = fsub double %380, %369
  %382 = fcmp ogt double %381, 0.000000e+00
  %383 = fmul double %366, %369
  %384 = fcmp ogt double %381, %383
  %or.cond459 = select i1 %382, i1 %384, i1 false
  br i1 %or.cond459, label %385, label %393

385:                                              ; preds = %.loopexit463
  %386 = fdiv double %366, %381
  %387 = fmul double %369, -1.010000e+00
  %388 = fmul double %387, %386
  %389 = tail call double @llvm.fmuladd.f64(double %388, double %366, double 1.000000e+00)
  %390 = fmul double %369, %389
  %391 = fcmp oge double %338, %390
  %392 = select i1 %391, double %338, double %390
  br label %404

393:                                              ; preds = %.loopexit463
  %394 = fneg double %366
  %395 = tail call double @llvm.fmuladd.f64(double %394, double 1.010000e+00, double 1.000000e+00)
  %396 = fmul double %395, %369
  %397 = fcmp oge double %338, %396
  %398 = select i1 %397, double %338, double %396
  br label %404

399:                                              ; preds = %329, %325
  %400 = fmul double %326, 2.500000e-01
  store i64 -11, ptr %12, align 8, !tbaa !9
  br label %404

401:                                              ; preds = %322
  %402 = icmp sgt i64 %25, %323
  br i1 %402, label %403, label %404

403:                                              ; preds = %401
  store i64 -12, ptr %12, align 8, !tbaa !9
  br label %404

404:                                              ; preds = %307, %315, %321, %401, %403, %399, %393, %385, %._crit_edge493, %159, %78, %94, %232, %234, %247
  %.3401 = phi double [ %84, %78 ], [ %97, %94 ], [ %164, %159 ], [ %129, %._crit_edge493 ], [ %239, %234 ], [ %169, %232 ], [ %249, %247 ], [ %314, %307 ], [ %320, %315 ], [ %.2400, %321 ], [ %392, %385 ], [ %398, %393 ], [ %400, %399 ], [ 0.000000e+00, %403 ], [ undef, %401 ]
  store double %.3401, ptr %11, align 8, !tbaa !5
  br label %.loopexit

.loopexit:                                        ; preds = %.lr.ph, %.lr.ph475, %.lr.ph483, %.lr.ph492, %337, %261, %168, %181, %114, %103, %98, %404, %18
  ret i32 0
}

; 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 = !{!"long", !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,InferFunctionAttrsPass,InstCombinePass,InstSimplifyPass,JumpThreadingPass,LCSSAPass,LoopRotatePass,LoopSimplifyPass,LoopUnrollPass,PostOrderFunctionAttrsPass,ReassociatePass,SLPVectorizerPass,SROAPass,SimplifyCFGPass,TailCallElimPass