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

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

@.str = external hidden unnamed_addr constant [10 x i8], align 1

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

81:                                               ; preds = %21
  %82 = load ptr, ptr %23, align 8, !tbaa !5
  %83 = load i32, ptr %82, align 4, !tbaa !11
  store i32 %83, ptr %52, align 4, !tbaa !11
  %84 = load ptr, ptr %24, align 8, !tbaa !5
  %85 = load i32, ptr %84, align 4, !tbaa !11
  store i32 %85, ptr %53, align 4, !tbaa !11
  br label %91

86:                                               ; preds = %21
  %87 = load ptr, ptr %37, align 8, !tbaa !5
  %88 = load i32, ptr %87, align 4, !tbaa !11
  store i32 %88, ptr %52, align 4, !tbaa !11
  %89 = load ptr, ptr %37, align 8, !tbaa !5
  %90 = load i32, ptr %89, align 4, !tbaa !11
  store i32 %90, ptr %53, align 4, !tbaa !11
  br label %91

91:                                               ; preds = %86, %81
  store i32 0, ptr %54, align 4, !tbaa !11
  %92 = load ptr, ptr %22, align 8, !tbaa !5
  %93 = load i32, ptr %92, align 4, !tbaa !11
  store i32 %93, ptr %55, align 4, !tbaa !11
  %94 = load ptr, ptr %22, align 8, !tbaa !5
  %95 = load i32, ptr %94, align 4, !tbaa !11
  %96 = shl i32 %95, 1
  %97 = add nsw i32 %96, 1
  store i32 %97, ptr %48, align 4, !tbaa !11
  %98 = load ptr, ptr %22, align 8, !tbaa !5
  %99 = load i32, ptr %98, align 4, !tbaa !11
  %100 = mul nsw i32 %99, 3
  %101 = add nsw i32 %100, 1
  store i32 %101, ptr %47, align 4, !tbaa !11
  %102 = load ptr, ptr %23, align 8, !tbaa !5
  %103 = load i32, ptr %102, align 4, !tbaa !11
  %104 = icmp eq i32 %103, 1
  br i1 %104, label %105, label %110

105:                                              ; preds = %91
  %106 = load ptr, ptr %42, align 8, !tbaa !5
  %107 = load i32, ptr %48, align 4, !tbaa !11
  %108 = sext i32 %107 to i64
  %109 = getelementptr inbounds double, ptr %106, i64 %108
  store double 0.000000e+00, ptr %109, align 8, !tbaa !9
  br label %126

110:                                              ; preds = %91
  %111 = load ptr, ptr %29, align 8, !tbaa !5
  %112 = load ptr, ptr %23, align 8, !tbaa !5
  %113 = load i32, ptr %112, align 4, !tbaa !11
  %114 = sub nsw i32 %113, 1
  %115 = sext i32 %114 to i64
  %116 = getelementptr inbounds double, ptr %111, i64 %115
  %117 = load double, ptr %116, align 8, !tbaa !9
  %118 = load ptr, ptr %42, align 8, !tbaa !5
  %119 = load i32, ptr %48, align 4, !tbaa !11
  %120 = load ptr, ptr %23, align 8, !tbaa !5
  %121 = load i32, ptr %120, align 4, !tbaa !11
  %122 = add nsw i32 %119, %121
  %123 = sub nsw i32 %122, 1
  %124 = sext i32 %123 to i64
  %125 = getelementptr inbounds double, ptr %118, i64 %124
  store double %117, ptr %125, align 8, !tbaa !9
  br label %126

126:                                              ; preds = %110, %105
  store i32 0, ptr %57, align 4, !tbaa !11
  store i32 0, ptr %61, align 4, !tbaa !11
  %127 = load ptr, ptr %42, align 8, !tbaa !5
  %128 = load i32, ptr %48, align 4, !tbaa !11
  %129 = load ptr, ptr %23, align 8, !tbaa !5
  %130 = load i32, ptr %129, align 4, !tbaa !11
  %131 = add nsw i32 %128, %130
  %132 = sub nsw i32 %131, 1
  %133 = sext i32 %132 to i64
  %134 = getelementptr inbounds double, ptr %127, i64 %133
  %135 = load double, ptr %134, align 8, !tbaa !9
  %136 = load ptr, ptr %25, align 8, !tbaa !5
  %137 = load double, ptr %136, align 8, !tbaa !9
  %138 = fsub double %135, %137
  store double %138, ptr %50, align 8, !tbaa !9
  %139 = load i32, ptr %52, align 4, !tbaa !11
  %140 = sub nsw i32 %139, 1
  store i32 %140, ptr %43, align 4, !tbaa !11
  %141 = load ptr, ptr %23, align 8, !tbaa !5
  %142 = load i32, ptr %141, align 4, !tbaa !11
  store i32 %142, ptr %49, align 4, !tbaa !11
  br label %143

143:                                              ; preds = %205, %126
  %144 = load i32, ptr %49, align 4, !tbaa !11
  %145 = load i32, ptr %43, align 4, !tbaa !11
  %146 = icmp sle i32 %144, %145
  br i1 %146, label %147, label %208

147:                                              ; preds = %143
  %148 = load ptr, ptr %26, align 8, !tbaa !5
  %149 = load i32, ptr %49, align 4, !tbaa !11
  %150 = sext i32 %149 to i64
  %151 = getelementptr inbounds double, ptr %148, i64 %150
  %152 = load double, ptr %151, align 8, !tbaa !9
  %153 = load double, ptr %50, align 8, !tbaa !9
  %154 = fadd double %152, %153
  store double %154, ptr %51, align 8, !tbaa !9
  %155 = load ptr, ptr %28, align 8, !tbaa !5
  %156 = load i32, ptr %49, align 4, !tbaa !11
  %157 = sext i32 %156 to i64
  %158 = getelementptr inbounds double, ptr %155, i64 %157
  %159 = load double, ptr %158, align 8, !tbaa !9
  %160 = load double, ptr %51, align 8, !tbaa !9
  %161 = fdiv double %159, %160
  %162 = load ptr, ptr %42, align 8, !tbaa !5
  %163 = load i32, ptr %54, align 4, !tbaa !11
  %164 = load i32, ptr %49, align 4, !tbaa !11
  %165 = add nsw i32 %163, %164
  %166 = sext i32 %165 to i64
  %167 = getelementptr inbounds double, ptr %162, i64 %166
  store double %161, ptr %167, align 8, !tbaa !9
  %168 = load double, ptr %51, align 8, !tbaa !9
  %169 = fcmp olt double %168, 0.000000e+00
  br i1 %169, label %170, label %173

170:                                              ; preds = %147
  %171 = load i32, ptr %61, align 4, !tbaa !11
  %172 = add nsw i32 %171, 1
  store i32 %172, ptr %61, align 4, !tbaa !11
  br label %173

173:                                              ; preds = %170, %147
  %174 = load double, ptr %50, align 8, !tbaa !9
  %175 = load ptr, ptr %42, align 8, !tbaa !5
  %176 = load i32, ptr %54, align 4, !tbaa !11
  %177 = load i32, ptr %49, align 4, !tbaa !11
  %178 = add nsw i32 %176, %177
  %179 = sext i32 %178 to i64
  %180 = getelementptr inbounds double, ptr %175, i64 %179
  %181 = load double, ptr %180, align 8, !tbaa !9
  %182 = fmul double %174, %181
  %183 = load ptr, ptr %27, align 8, !tbaa !5
  %184 = load i32, ptr %49, align 4, !tbaa !11
  %185 = sext i32 %184 to i64
  %186 = getelementptr inbounds double, ptr %183, i64 %185
  %187 = load double, ptr %186, align 8, !tbaa !9
  %188 = fmul double %182, %187
  %189 = load ptr, ptr %42, align 8, !tbaa !5
  %190 = load i32, ptr %48, align 4, !tbaa !11
  %191 = load i32, ptr %49, align 4, !tbaa !11
  %192 = add nsw i32 %190, %191
  %193 = sext i32 %192 to i64
  %194 = getelementptr inbounds double, ptr %189, i64 %193
  store double %188, ptr %194, align 8, !tbaa !9
  %195 = load ptr, ptr %42, align 8, !tbaa !5
  %196 = load i32, ptr %48, align 4, !tbaa !11
  %197 = load i32, ptr %49, align 4, !tbaa !11
  %198 = add nsw i32 %196, %197
  %199 = sext i32 %198 to i64
  %200 = getelementptr inbounds double, ptr %195, i64 %199
  %201 = load double, ptr %200, align 8, !tbaa !9
  %202 = load ptr, ptr %25, align 8, !tbaa !5
  %203 = load double, ptr %202, align 8, !tbaa !9
  %204 = fsub double %201, %203
  store double %204, ptr %50, align 8, !tbaa !9
  br label %205

205:                                              ; preds = %173
  %206 = load i32, ptr %49, align 4, !tbaa !11
  %207 = add nsw i32 %206, 1
  store i32 %207, ptr %49, align 4, !tbaa !11
  br label %143, !llvm.loop !13

208:                                              ; preds = %143
  %209 = call i32 @disnan_(ptr noundef %50)
  store i32 %209, ptr %57, align 4, !tbaa !11
  %210 = load i32, ptr %57, align 4, !tbaa !11
  %211 = icmp ne i32 %210, 0
  br i1 %211, label %212, label %213

212:                                              ; preds = %208
  br label %278

213:                                              ; preds = %208
  %214 = load i32, ptr %53, align 4, !tbaa !11
  %215 = sub nsw i32 %214, 1
  store i32 %215, ptr %43, align 4, !tbaa !11
  %216 = load i32, ptr %52, align 4, !tbaa !11
  store i32 %216, ptr %49, align 4, !tbaa !11
  br label %217

217:                                              ; preds = %273, %213
  %218 = load i32, ptr %49, align 4, !tbaa !11
  %219 = load i32, ptr %43, align 4, !tbaa !11
  %220 = icmp sle i32 %218, %219
  br i1 %220, label %221, label %276

221:                                              ; preds = %217
  %222 = load ptr, ptr %26, align 8, !tbaa !5
  %223 = load i32, ptr %49, align 4, !tbaa !11
  %224 = sext i32 %223 to i64
  %225 = getelementptr inbounds double, ptr %222, i64 %224
  %226 = load double, ptr %225, align 8, !tbaa !9
  %227 = load double, ptr %50, align 8, !tbaa !9
  %228 = fadd double %226, %227
  store double %228, ptr %51, align 8, !tbaa !9
  %229 = load ptr, ptr %28, align 8, !tbaa !5
  %230 = load i32, ptr %49, align 4, !tbaa !11
  %231 = sext i32 %230 to i64
  %232 = getelementptr inbounds double, ptr %229, i64 %231
  %233 = load double, ptr %232, align 8, !tbaa !9
  %234 = load double, ptr %51, align 8, !tbaa !9
  %235 = fdiv double %233, %234
  %236 = load ptr, ptr %42, align 8, !tbaa !5
  %237 = load i32, ptr %54, align 4, !tbaa !11
  %238 = load i32, ptr %49, align 4, !tbaa !11
  %239 = add nsw i32 %237, %238
  %240 = sext i32 %239 to i64
  %241 = getelementptr inbounds double, ptr %236, i64 %240
  store double %235, ptr %241, align 8, !tbaa !9
  %242 = load double, ptr %50, align 8, !tbaa !9
  %243 = load ptr, ptr %42, align 8, !tbaa !5
  %244 = load i32, ptr %54, align 4, !tbaa !11
  %245 = load i32, ptr %49, align 4, !tbaa !11
  %246 = add nsw i32 %244, %245
  %247 = sext i32 %246 to i64
  %248 = getelementptr inbounds double, ptr %243, i64 %247
  %249 = load double, ptr %248, align 8, !tbaa !9
  %250 = fmul double %242, %249
  %251 = load ptr, ptr %27, align 8, !tbaa !5
  %252 = load i32, ptr %49, align 4, !tbaa !11
  %253 = sext i32 %252 to i64
  %254 = getelementptr inbounds double, ptr %251, i64 %253
  %255 = load double, ptr %254, align 8, !tbaa !9
  %256 = fmul double %250, %255
  %257 = load ptr, ptr %42, align 8, !tbaa !5
  %258 = load i32, ptr %48, align 4, !tbaa !11
  %259 = load i32, ptr %49, align 4, !tbaa !11
  %260 = add nsw i32 %258, %259
  %261 = sext i32 %260 to i64
  %262 = getelementptr inbounds double, ptr %257, i64 %261
  store double %256, ptr %262, align 8, !tbaa !9
  %263 = load ptr, ptr %42, align 8, !tbaa !5
  %264 = load i32, ptr %48, align 4, !tbaa !11
  %265 = load i32, ptr %49, align 4, !tbaa !11
  %266 = add nsw i32 %264, %265
  %267 = sext i32 %266 to i64
  %268 = getelementptr inbounds double, ptr %263, i64 %267
  %269 = load double, ptr %268, align 8, !tbaa !9
  %270 = load ptr, ptr %25, align 8, !tbaa !5
  %271 = load double, ptr %270, align 8, !tbaa !9
  %272 = fsub double %269, %271
  store double %272, ptr %50, align 8, !tbaa !9
  br label %273

273:                                              ; preds = %221
  %274 = load i32, ptr %49, align 4, !tbaa !11
  %275 = add nsw i32 %274, 1
  store i32 %275, ptr %49, align 4, !tbaa !11
  br label %217, !llvm.loop !15

276:                                              ; preds = %217
  %277 = call i32 @disnan_(ptr noundef %50)
  store i32 %277, ptr %57, align 4, !tbaa !11
  br label %278

278:                                              ; preds = %276, %212
  %279 = load i32, ptr %57, align 4, !tbaa !11
  %280 = icmp ne i32 %279, 0
  br i1 %280, label %281, label %503

281:                                              ; preds = %278
  store i32 0, ptr %61, align 4, !tbaa !11
  %282 = load ptr, ptr %42, align 8, !tbaa !5
  %283 = load i32, ptr %48, align 4, !tbaa !11
  %284 = load ptr, ptr %23, align 8, !tbaa !5
  %285 = load i32, ptr %284, align 4, !tbaa !11
  %286 = add nsw i32 %283, %285
  %287 = sub nsw i32 %286, 1
  %288 = sext i32 %287 to i64
  %289 = getelementptr inbounds double, ptr %282, i64 %288
  %290 = load double, ptr %289, align 8, !tbaa !9
  %291 = load ptr, ptr %25, align 8, !tbaa !5
  %292 = load double, ptr %291, align 8, !tbaa !9
  %293 = fsub double %290, %292
  store double %293, ptr %50, align 8, !tbaa !9
  %294 = load i32, ptr %52, align 4, !tbaa !11
  %295 = sub nsw i32 %294, 1
  store i32 %295, ptr %43, align 4, !tbaa !11
  %296 = load ptr, ptr %23, align 8, !tbaa !5
  %297 = load i32, ptr %296, align 4, !tbaa !11
  store i32 %297, ptr %49, align 4, !tbaa !11
  br label %298

298:                                              ; preds = %398, %281
  %299 = load i32, ptr %49, align 4, !tbaa !11
  %300 = load i32, ptr %43, align 4, !tbaa !11
  %301 = icmp sle i32 %299, %300
  br i1 %301, label %302, label %401

302:                                              ; preds = %298
  %303 = load ptr, ptr %26, align 8, !tbaa !5
  %304 = load i32, ptr %49, align 4, !tbaa !11
  %305 = sext i32 %304 to i64
  %306 = getelementptr inbounds double, ptr %303, i64 %305
  %307 = load double, ptr %306, align 8, !tbaa !9
  %308 = load double, ptr %50, align 8, !tbaa !9
  %309 = fadd double %307, %308
  store double %309, ptr %51, align 8, !tbaa !9
  %310 = load double, ptr %51, align 8, !tbaa !9
  %311 = fcmp oge double %310, 0.000000e+00
  br i1 %311, label %312, label %314

312:                                              ; preds = %302
  %313 = load double, ptr %51, align 8, !tbaa !9
  br label %317

314:                                              ; preds = %302
  %315 = load double, ptr %51, align 8, !tbaa !9
  %316 = fneg double %315
  br label %317

317:                                              ; preds = %314, %312
  %318 = phi double [ %313, %312 ], [ %316, %314 ]
  %319 = load ptr, ptr %30, align 8, !tbaa !5
  %320 = load double, ptr %319, align 8, !tbaa !9
  %321 = fcmp olt double %318, %320
  br i1 %321, label %322, label %326

322:                                              ; preds = %317
  %323 = load ptr, ptr %30, align 8, !tbaa !5
  %324 = load double, ptr %323, align 8, !tbaa !9
  %325 = fneg double %324
  store double %325, ptr %51, align 8, !tbaa !9
  br label %326

326:                                              ; preds = %322, %317
  %327 = load ptr, ptr %28, align 8, !tbaa !5
  %328 = load i32, ptr %49, align 4, !tbaa !11
  %329 = sext i32 %328 to i64
  %330 = getelementptr inbounds double, ptr %327, i64 %329
  %331 = load double, ptr %330, align 8, !tbaa !9
  %332 = load double, ptr %51, align 8, !tbaa !9
  %333 = fdiv double %331, %332
  %334 = load ptr, ptr %42, align 8, !tbaa !5
  %335 = load i32, ptr %54, align 4, !tbaa !11
  %336 = load i32, ptr %49, align 4, !tbaa !11
  %337 = add nsw i32 %335, %336
  %338 = sext i32 %337 to i64
  %339 = getelementptr inbounds double, ptr %334, i64 %338
  store double %333, ptr %339, align 8, !tbaa !9
  %340 = load double, ptr %51, align 8, !tbaa !9
  %341 = fcmp olt double %340, 0.000000e+00
  br i1 %341, label %342, label %345

342:                                              ; preds = %326
  %343 = load i32, ptr %61, align 4, !tbaa !11
  %344 = add nsw i32 %343, 1
  store i32 %344, ptr %61, align 4, !tbaa !11
  br label %345

345:                                              ; preds = %342, %326
  %346 = load double, ptr %50, align 8, !tbaa !9
  %347 = load ptr, ptr %42, align 8, !tbaa !5
  %348 = load i32, ptr %54, align 4, !tbaa !11
  %349 = load i32, ptr %49, align 4, !tbaa !11
  %350 = add nsw i32 %348, %349
  %351 = sext i32 %350 to i64
  %352 = getelementptr inbounds double, ptr %347, i64 %351
  %353 = load double, ptr %352, align 8, !tbaa !9
  %354 = fmul double %346, %353
  %355 = load ptr, ptr %27, align 8, !tbaa !5
  %356 = load i32, ptr %49, align 4, !tbaa !11
  %357 = sext i32 %356 to i64
  %358 = getelementptr inbounds double, ptr %355, i64 %357
  %359 = load double, ptr %358, align 8, !tbaa !9
  %360 = fmul double %354, %359
  %361 = load ptr, ptr %42, align 8, !tbaa !5
  %362 = load i32, ptr %48, align 4, !tbaa !11
  %363 = load i32, ptr %49, align 4, !tbaa !11
  %364 = add nsw i32 %362, %363
  %365 = sext i32 %364 to i64
  %366 = getelementptr inbounds double, ptr %361, i64 %365
  store double %360, ptr %366, align 8, !tbaa !9
  %367 = load ptr, ptr %42, align 8, !tbaa !5
  %368 = load i32, ptr %54, align 4, !tbaa !11
  %369 = load i32, ptr %49, align 4, !tbaa !11
  %370 = add nsw i32 %368, %369
  %371 = sext i32 %370 to i64
  %372 = getelementptr inbounds double, ptr %367, i64 %371
  %373 = load double, ptr %372, align 8, !tbaa !9
  %374 = fcmp oeq double %373, 0.000000e+00
  br i1 %374, label %375, label %387

375:                                              ; preds = %345
  %376 = load ptr, ptr %29, align 8, !tbaa !5
  %377 = load i32, ptr %49, 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 %42, align 8, !tbaa !5
  %382 = load i32, ptr %48, align 4, !tbaa !11
  %383 = load i32, ptr %49, align 4, !tbaa !11
  %384 = add nsw i32 %382, %383
  %385 = sext i32 %384 to i64
  %386 = getelementptr inbounds double, ptr %381, i64 %385
  store double %380, ptr %386, align 8, !tbaa !9
  br label %387

387:                                              ; preds = %375, %345
  %388 = load ptr, ptr %42, align 8, !tbaa !5
  %389 = load i32, ptr %48, align 4, !tbaa !11
  %390 = load i32, ptr %49, align 4, !tbaa !11
  %391 = add nsw i32 %389, %390
  %392 = sext i32 %391 to i64
  %393 = getelementptr inbounds double, ptr %388, i64 %392
  %394 = load double, ptr %393, align 8, !tbaa !9
  %395 = load ptr, ptr %25, align 8, !tbaa !5
  %396 = load double, ptr %395, align 8, !tbaa !9
  %397 = fsub double %394, %396
  store double %397, ptr %50, align 8, !tbaa !9
  br label %398

398:                                              ; preds = %387
  %399 = load i32, ptr %49, align 4, !tbaa !11
  %400 = add nsw i32 %399, 1
  store i32 %400, ptr %49, align 4, !tbaa !11
  br label %298, !llvm.loop !16

401:                                              ; preds = %298
  %402 = load i32, ptr %53, align 4, !tbaa !11
  %403 = sub nsw i32 %402, 1
  store i32 %403, ptr %43, align 4, !tbaa !11
  %404 = load i32, ptr %52, align 4, !tbaa !11
  store i32 %404, ptr %49, align 4, !tbaa !11
  br label %405

405:                                              ; preds = %499, %401
  %406 = load i32, ptr %49, align 4, !tbaa !11
  %407 = load i32, ptr %43, align 4, !tbaa !11
  %408 = icmp sle i32 %406, %407
  br i1 %408, label %409, label %502

409:                                              ; preds = %405
  %410 = load ptr, ptr %26, align 8, !tbaa !5
  %411 = load i32, ptr %49, align 4, !tbaa !11
  %412 = sext i32 %411 to i64
  %413 = getelementptr inbounds double, ptr %410, i64 %412
  %414 = load double, ptr %413, align 8, !tbaa !9
  %415 = load double, ptr %50, align 8, !tbaa !9
  %416 = fadd double %414, %415
  store double %416, ptr %51, align 8, !tbaa !9
  %417 = load double, ptr %51, align 8, !tbaa !9
  %418 = fcmp oge double %417, 0.000000e+00
  br i1 %418, label %419, label %421

419:                                              ; preds = %409
  %420 = load double, ptr %51, align 8, !tbaa !9
  br label %424

421:                                              ; preds = %409
  %422 = load double, ptr %51, align 8, !tbaa !9
  %423 = fneg double %422
  br label %424

424:                                              ; preds = %421, %419
  %425 = phi double [ %420, %419 ], [ %423, %421 ]
  %426 = load ptr, ptr %30, align 8, !tbaa !5
  %427 = load double, ptr %426, align 8, !tbaa !9
  %428 = fcmp olt double %425, %427
  br i1 %428, label %429, label %433

429:                                              ; preds = %424
  %430 = load ptr, ptr %30, align 8, !tbaa !5
  %431 = load double, ptr %430, align 8, !tbaa !9
  %432 = fneg double %431
  store double %432, ptr %51, align 8, !tbaa !9
  br label %433

433:                                              ; preds = %429, %424
  %434 = load ptr, ptr %28, align 8, !tbaa !5
  %435 = load i32, ptr %49, align 4, !tbaa !11
  %436 = sext i32 %435 to i64
  %437 = getelementptr inbounds double, ptr %434, i64 %436
  %438 = load double, ptr %437, align 8, !tbaa !9
  %439 = load double, ptr %51, align 8, !tbaa !9
  %440 = fdiv double %438, %439
  %441 = load ptr, ptr %42, align 8, !tbaa !5
  %442 = load i32, ptr %54, align 4, !tbaa !11
  %443 = load i32, ptr %49, align 4, !tbaa !11
  %444 = add nsw i32 %442, %443
  %445 = sext i32 %444 to i64
  %446 = getelementptr inbounds double, ptr %441, i64 %445
  store double %440, ptr %446, align 8, !tbaa !9
  %447 = load double, ptr %50, align 8, !tbaa !9
  %448 = load ptr, ptr %42, align 8, !tbaa !5
  %449 = load i32, ptr %54, align 4, !tbaa !11
  %450 = load i32, ptr %49, align 4, !tbaa !11
  %451 = add nsw i32 %449, %450
  %452 = sext i32 %451 to i64
  %453 = getelementptr inbounds double, ptr %448, i64 %452
  %454 = load double, ptr %453, align 8, !tbaa !9
  %455 = fmul double %447, %454
  %456 = load ptr, ptr %27, align 8, !tbaa !5
  %457 = load i32, ptr %49, align 4, !tbaa !11
  %458 = sext i32 %457 to i64
  %459 = getelementptr inbounds double, ptr %456, i64 %458
  %460 = load double, ptr %459, align 8, !tbaa !9
  %461 = fmul double %455, %460
  %462 = load ptr, ptr %42, align 8, !tbaa !5
  %463 = load i32, ptr %48, align 4, !tbaa !11
  %464 = load i32, ptr %49, align 4, !tbaa !11
  %465 = add nsw i32 %463, %464
  %466 = sext i32 %465 to i64
  %467 = getelementptr inbounds double, ptr %462, i64 %466
  store double %461, ptr %467, align 8, !tbaa !9
  %468 = load ptr, ptr %42, align 8, !tbaa !5
  %469 = load i32, ptr %54, align 4, !tbaa !11
  %470 = load i32, ptr %49, align 4, !tbaa !11
  %471 = add nsw i32 %469, %470
  %472 = sext i32 %471 to i64
  %473 = getelementptr inbounds double, ptr %468, i64 %472
  %474 = load double, ptr %473, align 8, !tbaa !9
  %475 = fcmp oeq double %474, 0.000000e+00
  br i1 %475, label %476, label %488

476:                                              ; preds = %433
  %477 = load ptr, ptr %29, align 8, !tbaa !5
  %478 = load i32, ptr %49, align 4, !tbaa !11
  %479 = sext i32 %478 to i64
  %480 = getelementptr inbounds double, ptr %477, i64 %479
  %481 = load double, ptr %480, align 8, !tbaa !9
  %482 = load ptr, ptr %42, align 8, !tbaa !5
  %483 = load i32, ptr %48, align 4, !tbaa !11
  %484 = load i32, ptr %49, align 4, !tbaa !11
  %485 = add nsw i32 %483, %484
  %486 = sext i32 %485 to i64
  %487 = getelementptr inbounds double, ptr %482, i64 %486
  store double %481, ptr %487, align 8, !tbaa !9
  br label %488

488:                                              ; preds = %476, %433
  %489 = load ptr, ptr %42, align 8, !tbaa !5
  %490 = load i32, ptr %48, align 4, !tbaa !11
  %491 = load i32, ptr %49, align 4, !tbaa !11
  %492 = add nsw i32 %490, %491
  %493 = sext i32 %492 to i64
  %494 = getelementptr inbounds double, ptr %489, i64 %493
  %495 = load double, ptr %494, align 8, !tbaa !9
  %496 = load ptr, ptr %25, align 8, !tbaa !5
  %497 = load double, ptr %496, align 8, !tbaa !9
  %498 = fsub double %495, %497
  store double %498, ptr %50, align 8, !tbaa !9
  br label %499

499:                                              ; preds = %488
  %500 = load i32, ptr %49, align 4, !tbaa !11
  %501 = add nsw i32 %500, 1
  store i32 %501, ptr %49, align 4, !tbaa !11
  br label %405, !llvm.loop !17

502:                                              ; preds = %405
  br label %503

503:                                              ; preds = %502, %278
  store i32 0, ptr %58, align 4, !tbaa !11
  store i32 0, ptr %62, align 4, !tbaa !11
  %504 = load ptr, ptr %26, align 8, !tbaa !5
  %505 = load ptr, ptr %24, align 8, !tbaa !5
  %506 = load i32, ptr %505, align 4, !tbaa !11
  %507 = sext i32 %506 to i64
  %508 = getelementptr inbounds double, ptr %504, i64 %507
  %509 = load double, ptr %508, align 8, !tbaa !9
  %510 = load ptr, ptr %25, align 8, !tbaa !5
  %511 = load double, ptr %510, align 8, !tbaa !9
  %512 = fsub double %509, %511
  %513 = load ptr, ptr %42, align 8, !tbaa !5
  %514 = load i32, ptr %47, align 4, !tbaa !11
  %515 = load ptr, ptr %24, align 8, !tbaa !5
  %516 = load i32, ptr %515, align 4, !tbaa !11
  %517 = add nsw i32 %514, %516
  %518 = sub nsw i32 %517, 1
  %519 = sext i32 %518 to i64
  %520 = getelementptr inbounds double, ptr %513, i64 %519
  store double %512, ptr %520, align 8, !tbaa !9
  %521 = load i32, ptr %52, align 4, !tbaa !11
  store i32 %521, ptr %43, align 4, !tbaa !11
  %522 = load ptr, ptr %24, align 8, !tbaa !5
  %523 = load i32, ptr %522, align 4, !tbaa !11
  %524 = sub nsw i32 %523, 1
  store i32 %524, ptr %49, align 4, !tbaa !11
  br label %525

525:                                              ; preds = %588, %503
  %526 = load i32, ptr %49, align 4, !tbaa !11
  %527 = load i32, ptr %43, align 4, !tbaa !11
  %528 = icmp sge i32 %526, %527
  br i1 %528, label %529, label %591

529:                                              ; preds = %525
  %530 = load ptr, ptr %29, align 8, !tbaa !5
  %531 = load i32, ptr %49, align 4, !tbaa !11
  %532 = sext i32 %531 to i64
  %533 = getelementptr inbounds double, ptr %530, i64 %532
  %534 = load double, ptr %533, align 8, !tbaa !9
  %535 = load ptr, ptr %42, align 8, !tbaa !5
  %536 = load i32, ptr %47, align 4, !tbaa !11
  %537 = load i32, ptr %49, align 4, !tbaa !11
  %538 = add nsw i32 %536, %537
  %539 = sext i32 %538 to i64
  %540 = getelementptr inbounds double, ptr %535, i64 %539
  %541 = load double, ptr %540, align 8, !tbaa !9
  %542 = fadd double %534, %541
  store double %542, ptr %56, align 8, !tbaa !9
  %543 = load ptr, ptr %26, align 8, !tbaa !5
  %544 = load i32, ptr %49, align 4, !tbaa !11
  %545 = sext i32 %544 to i64
  %546 = getelementptr inbounds double, ptr %543, i64 %545
  %547 = load double, ptr %546, align 8, !tbaa !9
  %548 = load double, ptr %56, align 8, !tbaa !9
  %549 = fdiv double %547, %548
  store double %549, ptr %60, align 8, !tbaa !9
  %550 = load double, ptr %56, align 8, !tbaa !9
  %551 = fcmp olt double %550, 0.000000e+00
  br i1 %551, label %552, label %555

552:                                              ; preds = %529
  %553 = load i32, ptr %62, align 4, !tbaa !11
  %554 = add nsw i32 %553, 1
  store i32 %554, ptr %62, align 4, !tbaa !11
  br label %555

555:                                              ; preds = %552, %529
  %556 = load ptr, ptr %27, align 8, !tbaa !5
  %557 = load i32, ptr %49, align 4, !tbaa !11
  %558 = sext i32 %557 to i64
  %559 = getelementptr inbounds double, ptr %556, i64 %558
  %560 = load double, ptr %559, align 8, !tbaa !9
  %561 = load double, ptr %60, align 8, !tbaa !9
  %562 = fmul double %560, %561
  %563 = load ptr, ptr %42, align 8, !tbaa !5
  %564 = load i32, ptr %55, align 4, !tbaa !11
  %565 = load i32, ptr %49, align 4, !tbaa !11
  %566 = add nsw i32 %564, %565
  %567 = sext i32 %566 to i64
  %568 = getelementptr inbounds double, ptr %563, i64 %567
  store double %562, ptr %568, align 8, !tbaa !9
  %569 = load ptr, ptr %42, align 8, !tbaa !5
  %570 = load i32, ptr %47, align 4, !tbaa !11
  %571 = load i32, ptr %49, align 4, !tbaa !11
  %572 = add nsw i32 %570, %571
  %573 = sext i32 %572 to i64
  %574 = getelementptr inbounds double, ptr %569, i64 %573
  %575 = load double, ptr %574, align 8, !tbaa !9
  %576 = load double, ptr %60, align 8, !tbaa !9
  %577 = load ptr, ptr %25, align 8, !tbaa !5
  %578 = load double, ptr %577, align 8, !tbaa !9
  %579 = fneg double %578
  %580 = call double @llvm.fmuladd.f64(double %575, double %576, double %579)
  %581 = load ptr, ptr %42, align 8, !tbaa !5
  %582 = load i32, ptr %47, align 4, !tbaa !11
  %583 = load i32, ptr %49, align 4, !tbaa !11
  %584 = add nsw i32 %582, %583
  %585 = sub nsw i32 %584, 1
  %586 = sext i32 %585 to i64
  %587 = getelementptr inbounds double, ptr %581, i64 %586
  store double %580, ptr %587, align 8, !tbaa !9
  br label %588

588:                                              ; preds = %555
  %589 = load i32, ptr %49, align 4, !tbaa !11
  %590 = add nsw i32 %589, -1
  store i32 %590, ptr %49, align 4, !tbaa !11
  br label %525, !llvm.loop !18

591:                                              ; preds = %525
  %592 = load ptr, ptr %42, align 8, !tbaa !5
  %593 = load i32, ptr %47, align 4, !tbaa !11
  %594 = load i32, ptr %52, align 4, !tbaa !11
  %595 = add nsw i32 %593, %594
  %596 = sub nsw i32 %595, 1
  %597 = sext i32 %596 to i64
  %598 = getelementptr inbounds double, ptr %592, i64 %597
  %599 = load double, ptr %598, align 8, !tbaa !9
  store double %599, ptr %60, align 8, !tbaa !9
  %600 = call i32 @disnan_(ptr noundef %60)
  store i32 %600, ptr %58, align 4, !tbaa !11
  %601 = load i32, ptr %58, align 4, !tbaa !11
  %602 = icmp ne i32 %601, 0
  br i1 %602, label %603, label %711

603:                                              ; preds = %591
  store i32 0, ptr %62, align 4, !tbaa !11
  %604 = load i32, ptr %52, align 4, !tbaa !11
  store i32 %604, ptr %43, align 4, !tbaa !11
  %605 = load ptr, ptr %24, align 8, !tbaa !5
  %606 = load i32, ptr %605, align 4, !tbaa !11
  %607 = sub nsw i32 %606, 1
  store i32 %607, ptr %49, align 4, !tbaa !11
  br label %608

608:                                              ; preds = %707, %603
  %609 = load i32, ptr %49, align 4, !tbaa !11
  %610 = load i32, ptr %43, align 4, !tbaa !11
  %611 = icmp sge i32 %609, %610
  br i1 %611, label %612, label %710

612:                                              ; preds = %608
  %613 = load ptr, ptr %29, align 8, !tbaa !5
  %614 = load i32, ptr %49, align 4, !tbaa !11
  %615 = sext i32 %614 to i64
  %616 = getelementptr inbounds double, ptr %613, i64 %615
  %617 = load double, ptr %616, align 8, !tbaa !9
  %618 = load ptr, ptr %42, align 8, !tbaa !5
  %619 = load i32, ptr %47, align 4, !tbaa !11
  %620 = load i32, ptr %49, align 4, !tbaa !11
  %621 = add nsw i32 %619, %620
  %622 = sext i32 %621 to i64
  %623 = getelementptr inbounds double, ptr %618, i64 %622
  %624 = load double, ptr %623, align 8, !tbaa !9
  %625 = fadd double %617, %624
  store double %625, ptr %56, align 8, !tbaa !9
  %626 = load double, ptr %56, align 8, !tbaa !9
  %627 = fcmp oge double %626, 0.000000e+00
  br i1 %627, label %628, label %630

628:                                              ; preds = %612
  %629 = load double, ptr %56, align 8, !tbaa !9
  br label %633

630:                                              ; preds = %612
  %631 = load double, ptr %56, align 8, !tbaa !9
  %632 = fneg double %631
  br label %633

633:                                              ; preds = %630, %628
  %634 = phi double [ %629, %628 ], [ %632, %630 ]
  %635 = load ptr, ptr %30, align 8, !tbaa !5
  %636 = load double, ptr %635, align 8, !tbaa !9
  %637 = fcmp olt double %634, %636
  br i1 %637, label %638, label %642

638:                                              ; preds = %633
  %639 = load ptr, ptr %30, align 8, !tbaa !5
  %640 = load double, ptr %639, align 8, !tbaa !9
  %641 = fneg double %640
  store double %641, ptr %56, align 8, !tbaa !9
  br label %642

642:                                              ; preds = %638, %633
  %643 = load ptr, ptr %26, align 8, !tbaa !5
  %644 = load i32, ptr %49, align 4, !tbaa !11
  %645 = sext i32 %644 to i64
  %646 = getelementptr inbounds double, ptr %643, i64 %645
  %647 = load double, ptr %646, align 8, !tbaa !9
  %648 = load double, ptr %56, align 8, !tbaa !9
  %649 = fdiv double %647, %648
  store double %649, ptr %60, align 8, !tbaa !9
  %650 = load double, ptr %56, align 8, !tbaa !9
  %651 = fcmp olt double %650, 0.000000e+00
  br i1 %651, label %652, label %655

652:                                              ; preds = %642
  %653 = load i32, ptr %62, align 4, !tbaa !11
  %654 = add nsw i32 %653, 1
  store i32 %654, ptr %62, align 4, !tbaa !11
  br label %655

655:                                              ; preds = %652, %642
  %656 = load ptr, ptr %27, align 8, !tbaa !5
  %657 = load i32, ptr %49, align 4, !tbaa !11
  %658 = sext i32 %657 to i64
  %659 = getelementptr inbounds double, ptr %656, i64 %658
  %660 = load double, ptr %659, align 8, !tbaa !9
  %661 = load double, ptr %60, align 8, !tbaa !9
  %662 = fmul double %660, %661
  %663 = load ptr, ptr %42, align 8, !tbaa !5
  %664 = load i32, ptr %55, align 4, !tbaa !11
  %665 = load i32, ptr %49, align 4, !tbaa !11
  %666 = add nsw i32 %664, %665
  %667 = sext i32 %666 to i64
  %668 = getelementptr inbounds double, ptr %663, i64 %667
  store double %662, ptr %668, align 8, !tbaa !9
  %669 = load ptr, ptr %42, align 8, !tbaa !5
  %670 = load i32, ptr %47, align 4, !tbaa !11
  %671 = load i32, ptr %49, align 4, !tbaa !11
  %672 = add nsw i32 %670, %671
  %673 = sext i32 %672 to i64
  %674 = getelementptr inbounds double, ptr %669, i64 %673
  %675 = load double, ptr %674, align 8, !tbaa !9
  %676 = load double, ptr %60, align 8, !tbaa !9
  %677 = load ptr, ptr %25, align 8, !tbaa !5
  %678 = load double, ptr %677, align 8, !tbaa !9
  %679 = fneg double %678
  %680 = call double @llvm.fmuladd.f64(double %675, double %676, double %679)
  %681 = load ptr, ptr %42, align 8, !tbaa !5
  %682 = load i32, ptr %47, align 4, !tbaa !11
  %683 = load i32, ptr %49, align 4, !tbaa !11
  %684 = add nsw i32 %682, %683
  %685 = sub nsw i32 %684, 1
  %686 = sext i32 %685 to i64
  %687 = getelementptr inbounds double, ptr %681, i64 %686
  store double %680, ptr %687, align 8, !tbaa !9
  %688 = load double, ptr %60, align 8, !tbaa !9
  %689 = fcmp oeq double %688, 0.000000e+00
  br i1 %689, label %690, label %706

690:                                              ; preds = %655
  %691 = load ptr, ptr %26, align 8, !tbaa !5
  %692 = load i32, ptr %49, align 4, !tbaa !11
  %693 = sext i32 %692 to i64
  %694 = getelementptr inbounds double, ptr %691, i64 %693
  %695 = load double, ptr %694, align 8, !tbaa !9
  %696 = load ptr, ptr %25, align 8, !tbaa !5
  %697 = load double, ptr %696, align 8, !tbaa !9
  %698 = fsub double %695, %697
  %699 = load ptr, ptr %42, align 8, !tbaa !5
  %700 = load i32, ptr %47, align 4, !tbaa !11
  %701 = load i32, ptr %49, align 4, !tbaa !11
  %702 = add nsw i32 %700, %701
  %703 = sub nsw i32 %702, 1
  %704 = sext i32 %703 to i64
  %705 = getelementptr inbounds double, ptr %699, i64 %704
  store double %698, ptr %705, align 8, !tbaa !9
  br label %706

706:                                              ; preds = %690, %655
  br label %707

707:                                              ; preds = %706
  %708 = load i32, ptr %49, align 4, !tbaa !11
  %709 = add nsw i32 %708, -1
  store i32 %709, ptr %49, align 4, !tbaa !11
  br label %608, !llvm.loop !19

710:                                              ; preds = %608
  br label %711

711:                                              ; preds = %710, %591
  %712 = load ptr, ptr %42, align 8, !tbaa !5
  %713 = load i32, ptr %48, align 4, !tbaa !11
  %714 = load i32, ptr %52, align 4, !tbaa !11
  %715 = add nsw i32 %713, %714
  %716 = sub nsw i32 %715, 1
  %717 = sext i32 %716 to i64
  %718 = getelementptr inbounds double, ptr %712, i64 %717
  %719 = load double, ptr %718, align 8, !tbaa !9
  %720 = load ptr, ptr %42, align 8, !tbaa !5
  %721 = load i32, ptr %47, align 4, !tbaa !11
  %722 = load i32, ptr %52, align 4, !tbaa !11
  %723 = add nsw i32 %721, %722
  %724 = sub nsw i32 %723, 1
  %725 = sext i32 %724 to i64
  %726 = getelementptr inbounds double, ptr %720, i64 %725
  %727 = load double, ptr %726, align 8, !tbaa !9
  %728 = fadd double %719, %727
  %729 = load ptr, ptr %36, align 8, !tbaa !5
  store double %728, ptr %729, align 8, !tbaa !9
  %730 = load ptr, ptr %36, align 8, !tbaa !5
  %731 = load double, ptr %730, align 8, !tbaa !9
  %732 = fcmp olt double %731, 0.000000e+00
  br i1 %732, label %733, label %736

733:                                              ; preds = %711
  %734 = load i32, ptr %61, align 4, !tbaa !11
  %735 = add nsw i32 %734, 1
  store i32 %735, ptr %61, align 4, !tbaa !11
  br label %736

736:                                              ; preds = %733, %711
  %737 = load ptr, ptr %33, align 8, !tbaa !5
  %738 = load i32, ptr %737, align 4, !tbaa !11
  %739 = icmp ne i32 %738, 0
  br i1 %739, label %740, label %745

740:                                              ; preds = %736
  %741 = load i32, ptr %61, align 4, !tbaa !11
  %742 = load i32, ptr %62, align 4, !tbaa !11
  %743 = add nsw i32 %741, %742
  %744 = load ptr, ptr %34, align 8, !tbaa !5
  store i32 %743, ptr %744, align 4, !tbaa !11
  br label %747

745:                                              ; preds = %736
  %746 = load ptr, ptr %34, align 8, !tbaa !5
  store i32 -1, ptr %746, align 4, !tbaa !11
  br label %747

747:                                              ; preds = %745, %740
  %748 = load ptr, ptr %36, align 8, !tbaa !5
  %749 = load double, ptr %748, align 8, !tbaa !9
  %750 = fcmp oge double %749, 0.000000e+00
  br i1 %750, label %751, label %754

751:                                              ; preds = %747
  %752 = load ptr, ptr %36, align 8, !tbaa !5
  %753 = load double, ptr %752, align 8, !tbaa !9
  br label %758

754:                                              ; preds = %747
  %755 = load ptr, ptr %36, align 8, !tbaa !5
  %756 = load double, ptr %755, align 8, !tbaa !9
  %757 = fneg double %756
  br label %758

758:                                              ; preds = %754, %751
  %759 = phi double [ %753, %751 ], [ %757, %754 ]
  %760 = fcmp oeq double %759, 0.000000e+00
  br i1 %760, label %761, label %773

761:                                              ; preds = %758
  %762 = load double, ptr %59, align 8, !tbaa !9
  %763 = load ptr, ptr %42, align 8, !tbaa !5
  %764 = load i32, ptr %48, align 4, !tbaa !11
  %765 = load i32, ptr %52, align 4, !tbaa !11
  %766 = add nsw i32 %764, %765
  %767 = sub nsw i32 %766, 1
  %768 = sext i32 %767 to i64
  %769 = getelementptr inbounds double, ptr %763, i64 %768
  %770 = load double, ptr %769, align 8, !tbaa !9
  %771 = fmul double %762, %770
  %772 = load ptr, ptr %36, align 8, !tbaa !5
  store double %771, ptr %772, align 8, !tbaa !9
  br label %773

773:                                              ; preds = %761, %758
  %774 = load i32, ptr %52, align 4, !tbaa !11
  %775 = load ptr, ptr %37, align 8, !tbaa !5
  store i32 %774, ptr %775, align 4, !tbaa !11
  %776 = load i32, ptr %53, align 4, !tbaa !11
  %777 = sub nsw i32 %776, 1
  store i32 %777, ptr %43, align 4, !tbaa !11
  %778 = load i32, ptr %52, align 4, !tbaa !11
  store i32 %778, ptr %49, align 4, !tbaa !11
  br label %779

779:                                              ; preds = %841, %773
  %780 = load i32, ptr %49, align 4, !tbaa !11
  %781 = load i32, ptr %43, align 4, !tbaa !11
  %782 = icmp sle i32 %780, %781
  br i1 %782, label %783, label %844

783:                                              ; preds = %779
  %784 = load ptr, ptr %42, align 8, !tbaa !5
  %785 = load i32, ptr %48, align 4, !tbaa !11
  %786 = load i32, ptr %49, align 4, !tbaa !11
  %787 = add nsw i32 %785, %786
  %788 = sext i32 %787 to i64
  %789 = getelementptr inbounds double, ptr %784, i64 %788
  %790 = load double, ptr %789, align 8, !tbaa !9
  %791 = load ptr, ptr %42, align 8, !tbaa !5
  %792 = load i32, ptr %47, align 4, !tbaa !11
  %793 = load i32, ptr %49, align 4, !tbaa !11
  %794 = add nsw i32 %792, %793
  %795 = sext i32 %794 to i64
  %796 = getelementptr inbounds double, ptr %791, i64 %795
  %797 = load double, ptr %796, align 8, !tbaa !9
  %798 = fadd double %790, %797
  store double %798, ptr %60, align 8, !tbaa !9
  %799 = load double, ptr %60, align 8, !tbaa !9
  %800 = fcmp oeq double %799, 0.000000e+00
  br i1 %800, label %801, label %811

801:                                              ; preds = %783
  %802 = load double, ptr %59, align 8, !tbaa !9
  %803 = load ptr, ptr %42, align 8, !tbaa !5
  %804 = load i32, ptr %48, align 4, !tbaa !11
  %805 = load i32, ptr %49, align 4, !tbaa !11
  %806 = add nsw i32 %804, %805
  %807 = sext i32 %806 to i64
  %808 = getelementptr inbounds double, ptr %803, i64 %807
  %809 = load double, ptr %808, align 8, !tbaa !9
  %810 = fmul double %802, %809
  store double %810, ptr %60, align 8, !tbaa !9
  br label %811

811:                                              ; preds = %801, %783
  %812 = load double, ptr %60, align 8, !tbaa !9
  %813 = fcmp oge double %812, 0.000000e+00
  br i1 %813, label %814, label %816

814:                                              ; preds = %811
  %815 = load double, ptr %60, align 8, !tbaa !9
  br label %819

816:                                              ; preds = %811
  %817 = load double, ptr %60, align 8, !tbaa !9
  %818 = fneg double %817
  br label %819

819:                                              ; preds = %816, %814
  %820 = phi double [ %815, %814 ], [ %818, %816 ]
  %821 = load ptr, ptr %36, align 8, !tbaa !5
  %822 = load double, ptr %821, align 8, !tbaa !9
  %823 = fcmp oge double %822, 0.000000e+00
  br i1 %823, label %824, label %827

824:                                              ; preds = %819
  %825 = load ptr, ptr %36, align 8, !tbaa !5
  %826 = load double, ptr %825, align 8, !tbaa !9
  br label %831

827:                                              ; preds = %819
  %828 = load ptr, ptr %36, align 8, !tbaa !5
  %829 = load double, ptr %828, align 8, !tbaa !9
  %830 = fneg double %829
  br label %831

831:                                              ; preds = %827, %824
  %832 = phi double [ %826, %824 ], [ %830, %827 ]
  %833 = fcmp ole double %820, %832
  br i1 %833, label %834, label %840

834:                                              ; preds = %831
  %835 = load double, ptr %60, align 8, !tbaa !9
  %836 = load ptr, ptr %36, align 8, !tbaa !5
  store double %835, ptr %836, align 8, !tbaa !9
  %837 = load i32, ptr %49, align 4, !tbaa !11
  %838 = add nsw i32 %837, 1
  %839 = load ptr, ptr %37, align 8, !tbaa !5
  store i32 %838, ptr %839, align 4, !tbaa !11
  br label %840

840:                                              ; preds = %834, %831
  br label %841

841:                                              ; preds = %840
  %842 = load i32, ptr %49, align 4, !tbaa !11
  %843 = add nsw i32 %842, 1
  store i32 %843, ptr %49, align 4, !tbaa !11
  br label %779, !llvm.loop !20

844:                                              ; preds = %779
  %845 = load ptr, ptr %23, align 8, !tbaa !5
  %846 = load i32, ptr %845, align 4, !tbaa !11
  %847 = load ptr, ptr %38, align 8, !tbaa !5
  %848 = getelementptr inbounds i32, ptr %847, i64 1
  store i32 %846, ptr %848, align 4, !tbaa !11
  %849 = load ptr, ptr %24, align 8, !tbaa !5
  %850 = load i32, ptr %849, align 4, !tbaa !11
  %851 = load ptr, ptr %38, align 8, !tbaa !5
  %852 = getelementptr inbounds i32, ptr %851, i64 2
  store i32 %850, ptr %852, align 4, !tbaa !11
  %853 = load ptr, ptr %32, align 8, !tbaa !5
  %854 = load ptr, ptr %37, align 8, !tbaa !5
  %855 = load i32, ptr %854, align 4, !tbaa !11
  %856 = sext i32 %855 to i64
  %857 = getelementptr inbounds double, ptr %853, i64 %856
  store double 1.000000e+00, ptr %857, align 8, !tbaa !9
  %858 = load ptr, ptr %35, align 8, !tbaa !5
  store double 1.000000e+00, ptr %858, align 8, !tbaa !9
  %859 = load i32, ptr %57, align 4, !tbaa !11
  %860 = icmp ne i32 %859, 0
  br i1 %860, label %970, label %861

861:                                              ; preds = %844
  %862 = load i32, ptr %58, align 4, !tbaa !11
  %863 = icmp ne i32 %862, 0
  br i1 %863, label %970, label %864

864:                                              ; preds = %861
  %865 = load ptr, ptr %23, align 8, !tbaa !5
  %866 = load i32, ptr %865, align 4, !tbaa !11
  store i32 %866, ptr %43, align 4, !tbaa !11
  %867 = load ptr, ptr %37, align 8, !tbaa !5
  %868 = load i32, ptr %867, align 4, !tbaa !11
  %869 = sub nsw i32 %868, 1
  store i32 %869, ptr %49, align 4, !tbaa !11
  br label %870

870:                                              ; preds = %965, %864
  %871 = load i32, ptr %49, align 4, !tbaa !11
  %872 = load i32, ptr %43, align 4, !tbaa !11
  %873 = icmp sge i32 %871, %872
  br i1 %873, label %874, label %968

874:                                              ; preds = %870
  %875 = load ptr, ptr %42, align 8, !tbaa !5
  %876 = load i32, ptr %54, align 4, !tbaa !11
  %877 = load i32, ptr %49, align 4, !tbaa !11
  %878 = add nsw i32 %876, %877
  %879 = sext i32 %878 to i64
  %880 = getelementptr inbounds double, ptr %875, i64 %879
  %881 = load double, ptr %880, align 8, !tbaa !9
  %882 = load ptr, ptr %32, align 8, !tbaa !5
  %883 = load i32, ptr %49, align 4, !tbaa !11
  %884 = add nsw i32 %883, 1
  %885 = sext i32 %884 to i64
  %886 = getelementptr inbounds double, ptr %882, i64 %885
  %887 = load double, ptr %886, align 8, !tbaa !9
  %888 = fmul double %881, %887
  %889 = fneg double %888
  %890 = load ptr, ptr %32, align 8, !tbaa !5
  %891 = load i32, ptr %49, align 4, !tbaa !11
  %892 = sext i32 %891 to i64
  %893 = getelementptr inbounds double, ptr %890, i64 %892
  store double %889, ptr %893, align 8, !tbaa !9
  %894 = load ptr, ptr %32, align 8, !tbaa !5
  %895 = load i32, ptr %49, align 4, !tbaa !11
  %896 = sext i32 %895 to i64
  %897 = getelementptr inbounds double, ptr %894, i64 %896
  %898 = load double, ptr %897, align 8, !tbaa !9
  store double %898, ptr %44, align 8, !tbaa !9
  %899 = load double, ptr %44, align 8, !tbaa !9
  %900 = fcmp oge double %899, 0.000000e+00
  br i1 %900, label %901, label %903

901:                                              ; preds = %874
  %902 = load double, ptr %44, align 8, !tbaa !9
  br label %906

903:                                              ; preds = %874
  %904 = load double, ptr %44, align 8, !tbaa !9
  %905 = fneg double %904
  br label %906

906:                                              ; preds = %903, %901
  %907 = phi double [ %902, %901 ], [ %905, %903 ]
  %908 = load ptr, ptr %32, align 8, !tbaa !5
  %909 = load i32, ptr %49, align 4, !tbaa !11
  %910 = add nsw i32 %909, 1
  %911 = sext i32 %910 to i64
  %912 = getelementptr inbounds double, ptr %908, i64 %911
  %913 = load double, ptr %912, align 8, !tbaa !9
  store double %913, ptr %45, align 8, !tbaa !9
  %914 = load double, ptr %45, align 8, !tbaa !9
  %915 = fcmp oge double %914, 0.000000e+00
  br i1 %915, label %916, label %918

916:                                              ; preds = %906
  %917 = load double, ptr %45, align 8, !tbaa !9
  br label %921

918:                                              ; preds = %906
  %919 = load double, ptr %45, align 8, !tbaa !9
  %920 = fneg double %919
  br label %921

921:                                              ; preds = %918, %916
  %922 = phi double [ %917, %916 ], [ %920, %918 ]
  %923 = fadd double %907, %922
  %924 = load ptr, ptr %28, align 8, !tbaa !5
  %925 = load i32, ptr %49, align 4, !tbaa !11
  %926 = sext i32 %925 to i64
  %927 = getelementptr inbounds double, ptr %924, i64 %926
  %928 = load double, ptr %927, align 8, !tbaa !9
  store double %928, ptr %46, align 8, !tbaa !9
  %929 = load double, ptr %46, align 8, !tbaa !9
  %930 = fcmp oge double %929, 0.000000e+00
  br i1 %930, label %931, label %933

931:                                              ; preds = %921
  %932 = load double, ptr %46, align 8, !tbaa !9
  br label %936

933:                                              ; preds = %921
  %934 = load double, ptr %46, align 8, !tbaa !9
  %935 = fneg double %934
  br label %936

936:                                              ; preds = %933, %931
  %937 = phi double [ %932, %931 ], [ %935, %933 ]
  %938 = fmul double %923, %937
  %939 = load ptr, ptr %31, align 8, !tbaa !5
  %940 = load double, ptr %939, align 8, !tbaa !9
  %941 = fcmp olt double %938, %940
  br i1 %941, label %942, label %951

942:                                              ; preds = %936
  %943 = load ptr, ptr %32, align 8, !tbaa !5
  %944 = load i32, ptr %49, align 4, !tbaa !11
  %945 = sext i32 %944 to i64
  %946 = getelementptr inbounds double, ptr %943, i64 %945
  store double 0.000000e+00, ptr %946, align 8, !tbaa !9
  %947 = load i32, ptr %49, align 4, !tbaa !11
  %948 = add nsw i32 %947, 1
  %949 = load ptr, ptr %38, align 8, !tbaa !5
  %950 = getelementptr inbounds i32, ptr %949, i64 1
  store i32 %948, ptr %950, align 4, !tbaa !11
  br label %969

951:                                              ; preds = %936
  %952 = load ptr, ptr %32, align 8, !tbaa !5
  %953 = load i32, ptr %49, align 4, !tbaa !11
  %954 = sext i32 %953 to i64
  %955 = getelementptr inbounds double, ptr %952, i64 %954
  %956 = load double, ptr %955, align 8, !tbaa !9
  %957 = load ptr, ptr %32, align 8, !tbaa !5
  %958 = load i32, ptr %49, align 4, !tbaa !11
  %959 = sext i32 %958 to i64
  %960 = getelementptr inbounds double, ptr %957, i64 %959
  %961 = load double, ptr %960, align 8, !tbaa !9
  %962 = load ptr, ptr %35, align 8, !tbaa !5
  %963 = load double, ptr %962, align 8, !tbaa !9
  %964 = call double @llvm.fmuladd.f64(double %956, double %961, double %963)
  store double %964, ptr %962, align 8, !tbaa !9
  br label %965

965:                                              ; preds = %951
  %966 = load i32, ptr %49, align 4, !tbaa !11
  %967 = add nsw i32 %966, -1
  store i32 %967, ptr %49, align 4, !tbaa !11
  br label %870, !llvm.loop !21

968:                                              ; preds = %870
  br label %969

969:                                              ; preds = %968, %942
  br label %1110

970:                                              ; preds = %861, %844
  %971 = load ptr, ptr %23, align 8, !tbaa !5
  %972 = load i32, ptr %971, align 4, !tbaa !11
  store i32 %972, ptr %43, align 4, !tbaa !11
  %973 = load ptr, ptr %37, align 8, !tbaa !5
  %974 = load i32, ptr %973, align 4, !tbaa !11
  %975 = sub nsw i32 %974, 1
  store i32 %975, ptr %49, align 4, !tbaa !11
  br label %976

976:                                              ; preds = %1105, %970
  %977 = load i32, ptr %49, align 4, !tbaa !11
  %978 = load i32, ptr %43, align 4, !tbaa !11
  %979 = icmp sge i32 %977, %978
  br i1 %979, label %980, label %1108

980:                                              ; preds = %976
  %981 = load ptr, ptr %32, align 8, !tbaa !5
  %982 = load i32, ptr %49, align 4, !tbaa !11
  %983 = add nsw i32 %982, 1
  %984 = sext i32 %983 to i64
  %985 = getelementptr inbounds double, ptr %981, i64 %984
  %986 = load double, ptr %985, align 8, !tbaa !9
  %987 = fcmp oeq double %986, 0.000000e+00
  br i1 %987, label %988, label %1013

988:                                              ; preds = %980
  %989 = load ptr, ptr %28, align 8, !tbaa !5
  %990 = load i32, ptr %49, align 4, !tbaa !11
  %991 = add nsw i32 %990, 1
  %992 = sext i32 %991 to i64
  %993 = getelementptr inbounds double, ptr %989, i64 %992
  %994 = load double, ptr %993, align 8, !tbaa !9
  %995 = load ptr, ptr %28, align 8, !tbaa !5
  %996 = load i32, ptr %49, align 4, !tbaa !11
  %997 = sext i32 %996 to i64
  %998 = getelementptr inbounds double, ptr %995, i64 %997
  %999 = load double, ptr %998, align 8, !tbaa !9
  %1000 = fdiv double %994, %999
  %1001 = fneg double %1000
  %1002 = load ptr, ptr %32, align 8, !tbaa !5
  %1003 = load i32, ptr %49, align 4, !tbaa !11
  %1004 = add nsw i32 %1003, 2
  %1005 = sext i32 %1004 to i64
  %1006 = getelementptr inbounds double, ptr %1002, i64 %1005
  %1007 = load double, ptr %1006, align 8, !tbaa !9
  %1008 = fmul double %1001, %1007
  %1009 = load ptr, ptr %32, align 8, !tbaa !5
  %1010 = load i32, ptr %49, align 4, !tbaa !11
  %1011 = sext i32 %1010 to i64
  %1012 = getelementptr inbounds double, ptr %1009, i64 %1011
  store double %1008, ptr %1012, align 8, !tbaa !9
  br label %1033

1013:                                             ; preds = %980
  %1014 = load ptr, ptr %42, align 8, !tbaa !5
  %1015 = load i32, ptr %54, align 4, !tbaa !11
  %1016 = load i32, ptr %49, align 4, !tbaa !11
  %1017 = add nsw i32 %1015, %1016
  %1018 = sext i32 %1017 to i64
  %1019 = getelementptr inbounds double, ptr %1014, i64 %1018
  %1020 = load double, ptr %1019, align 8, !tbaa !9
  %1021 = load ptr, ptr %32, align 8, !tbaa !5
  %1022 = load i32, ptr %49, align 4, !tbaa !11
  %1023 = add nsw i32 %1022, 1
  %1024 = sext i32 %1023 to i64
  %1025 = getelementptr inbounds double, ptr %1021, i64 %1024
  %1026 = load double, ptr %1025, align 8, !tbaa !9
  %1027 = fmul double %1020, %1026
  %1028 = fneg double %1027
  %1029 = load ptr, ptr %32, align 8, !tbaa !5
  %1030 = load i32, ptr %49, align 4, !tbaa !11
  %1031 = sext i32 %1030 to i64
  %1032 = getelementptr inbounds double, ptr %1029, i64 %1031
  store double %1028, ptr %1032, align 8, !tbaa !9
  br label %1033

1033:                                             ; preds = %1013, %988
  %1034 = load ptr, ptr %32, align 8, !tbaa !5
  %1035 = load i32, ptr %49, align 4, !tbaa !11
  %1036 = sext i32 %1035 to i64
  %1037 = getelementptr inbounds double, ptr %1034, i64 %1036
  %1038 = load double, ptr %1037, align 8, !tbaa !9
  store double %1038, ptr %44, align 8, !tbaa !9
  %1039 = load double, ptr %44, align 8, !tbaa !9
  %1040 = fcmp oge double %1039, 0.000000e+00
  br i1 %1040, label %1041, label %1043

1041:                                             ; preds = %1033
  %1042 = load double, ptr %44, align 8, !tbaa !9
  br label %1046

1043:                                             ; preds = %1033
  %1044 = load double, ptr %44, align 8, !tbaa !9
  %1045 = fneg double %1044
  br label %1046

1046:                                             ; preds = %1043, %1041
  %1047 = phi double [ %1042, %1041 ], [ %1045, %1043 ]
  %1048 = load ptr, ptr %32, align 8, !tbaa !5
  %1049 = load i32, ptr %49, align 4, !tbaa !11
  %1050 = add nsw i32 %1049, 1
  %1051 = sext i32 %1050 to i64
  %1052 = getelementptr inbounds double, ptr %1048, i64 %1051
  %1053 = load double, ptr %1052, align 8, !tbaa !9
  store double %1053, ptr %45, align 8, !tbaa !9
  %1054 = load double, ptr %45, align 8, !tbaa !9
  %1055 = fcmp oge double %1054, 0.000000e+00
  br i1 %1055, label %1056, label %1058

1056:                                             ; preds = %1046
  %1057 = load double, ptr %45, align 8, !tbaa !9
  br label %1061

1058:                                             ; preds = %1046
  %1059 = load double, ptr %45, align 8, !tbaa !9
  %1060 = fneg double %1059
  br label %1061

1061:                                             ; preds = %1058, %1056
  %1062 = phi double [ %1057, %1056 ], [ %1060, %1058 ]
  %1063 = fadd double %1047, %1062
  %1064 = load ptr, ptr %28, align 8, !tbaa !5
  %1065 = load i32, ptr %49, align 4, !tbaa !11
  %1066 = sext i32 %1065 to i64
  %1067 = getelementptr inbounds double, ptr %1064, i64 %1066
  %1068 = load double, ptr %1067, align 8, !tbaa !9
  store double %1068, ptr %46, align 8, !tbaa !9
  %1069 = load double, ptr %46, align 8, !tbaa !9
  %1070 = fcmp oge double %1069, 0.000000e+00
  br i1 %1070, label %1071, label %1073

1071:                                             ; preds = %1061
  %1072 = load double, ptr %46, align 8, !tbaa !9
  br label %1076

1073:                                             ; preds = %1061
  %1074 = load double, ptr %46, align 8, !tbaa !9
  %1075 = fneg double %1074
  br label %1076

1076:                                             ; preds = %1073, %1071
  %1077 = phi double [ %1072, %1071 ], [ %1075, %1073 ]
  %1078 = fmul double %1063, %1077
  %1079 = load ptr, ptr %31, align 8, !tbaa !5
  %1080 = load double, ptr %1079, align 8, !tbaa !9
  %1081 = fcmp olt double %1078, %1080
  br i1 %1081, label %1082, label %1091

1082:                                             ; preds = %1076
  %1083 = load ptr, ptr %32, align 8, !tbaa !5
  %1084 = load i32, ptr %49, align 4, !tbaa !11
  %1085 = sext i32 %1084 to i64
  %1086 = getelementptr inbounds double, ptr %1083, i64 %1085
  store double 0.000000e+00, ptr %1086, align 8, !tbaa !9
  %1087 = load i32, ptr %49, align 4, !tbaa !11
  %1088 = add nsw i32 %1087, 1
  %1089 = load ptr, ptr %38, align 8, !tbaa !5
  %1090 = getelementptr inbounds i32, ptr %1089, i64 1
  store i32 %1088, ptr %1090, align 4, !tbaa !11
  br label %1109

1091:                                             ; preds = %1076
  %1092 = load ptr, ptr %32, align 8, !tbaa !5
  %1093 = load i32, ptr %49, align 4, !tbaa !11
  %1094 = sext i32 %1093 to i64
  %1095 = getelementptr inbounds double, ptr %1092, i64 %1094
  %1096 = load double, ptr %1095, align 8, !tbaa !9
  %1097 = load ptr, ptr %32, align 8, !tbaa !5
  %1098 = load i32, ptr %49, align 4, !tbaa !11
  %1099 = sext i32 %1098 to i64
  %1100 = getelementptr inbounds double, ptr %1097, i64 %1099
  %1101 = load double, ptr %1100, align 8, !tbaa !9
  %1102 = load ptr, ptr %35, align 8, !tbaa !5
  %1103 = load double, ptr %1102, align 8, !tbaa !9
  %1104 = call double @llvm.fmuladd.f64(double %1096, double %1101, double %1103)
  store double %1104, ptr %1102, align 8, !tbaa !9
  br label %1105

1105:                                             ; preds = %1091
  %1106 = load i32, ptr %49, align 4, !tbaa !11
  %1107 = add nsw i32 %1106, -1
  store i32 %1107, ptr %49, align 4, !tbaa !11
  br label %976, !llvm.loop !22

1108:                                             ; preds = %976
  br label %1109

1109:                                             ; preds = %1108, %1082
  br label %1110

1110:                                             ; preds = %1109, %969
  %1111 = load i32, ptr %57, align 4, !tbaa !11
  %1112 = icmp ne i32 %1111, 0
  br i1 %1112, label %1224, label %1113

1113:                                             ; preds = %1110
  %1114 = load i32, ptr %58, align 4, !tbaa !11
  %1115 = icmp ne i32 %1114, 0
  br i1 %1115, label %1224, label %1116

1116:                                             ; preds = %1113
  %1117 = load ptr, ptr %24, align 8, !tbaa !5
  %1118 = load i32, ptr %1117, align 4, !tbaa !11
  %1119 = sub nsw i32 %1118, 1
  store i32 %1119, ptr %43, align 4, !tbaa !11
  %1120 = load ptr, ptr %37, align 8, !tbaa !5
  %1121 = load i32, ptr %1120, align 4, !tbaa !11
  store i32 %1121, ptr %49, align 4, !tbaa !11
  br label %1122

1122:                                             ; preds = %1219, %1116
  %1123 = load i32, ptr %49, align 4, !tbaa !11
  %1124 = load i32, ptr %43, align 4, !tbaa !11
  %1125 = icmp sle i32 %1123, %1124
  br i1 %1125, label %1126, label %1222

1126:                                             ; preds = %1122
  %1127 = load ptr, ptr %42, align 8, !tbaa !5
  %1128 = load i32, ptr %55, align 4, !tbaa !11
  %1129 = load i32, ptr %49, align 4, !tbaa !11
  %1130 = add nsw i32 %1128, %1129
  %1131 = sext i32 %1130 to i64
  %1132 = getelementptr inbounds double, ptr %1127, i64 %1131
  %1133 = load double, ptr %1132, align 8, !tbaa !9
  %1134 = load ptr, ptr %32, align 8, !tbaa !5
  %1135 = load i32, ptr %49, align 4, !tbaa !11
  %1136 = sext i32 %1135 to i64
  %1137 = getelementptr inbounds double, ptr %1134, i64 %1136
  %1138 = load double, ptr %1137, align 8, !tbaa !9
  %1139 = fmul double %1133, %1138
  %1140 = fneg double %1139
  %1141 = load ptr, ptr %32, align 8, !tbaa !5
  %1142 = load i32, ptr %49, align 4, !tbaa !11
  %1143 = add nsw i32 %1142, 1
  %1144 = sext i32 %1143 to i64
  %1145 = getelementptr inbounds double, ptr %1141, i64 %1144
  store double %1140, ptr %1145, align 8, !tbaa !9
  %1146 = load ptr, ptr %32, align 8, !tbaa !5
  %1147 = load i32, ptr %49, align 4, !tbaa !11
  %1148 = sext i32 %1147 to i64
  %1149 = getelementptr inbounds double, ptr %1146, i64 %1148
  %1150 = load double, ptr %1149, align 8, !tbaa !9
  store double %1150, ptr %44, align 8, !tbaa !9
  %1151 = load double, ptr %44, align 8, !tbaa !9
  %1152 = fcmp oge double %1151, 0.000000e+00
  br i1 %1152, label %1153, label %1155

1153:                                             ; preds = %1126
  %1154 = load double, ptr %44, align 8, !tbaa !9
  br label %1158

1155:                                             ; preds = %1126
  %1156 = load double, ptr %44, align 8, !tbaa !9
  %1157 = fneg double %1156
  br label %1158

1158:                                             ; preds = %1155, %1153
  %1159 = phi double [ %1154, %1153 ], [ %1157, %1155 ]
  %1160 = load ptr, ptr %32, align 8, !tbaa !5
  %1161 = load i32, ptr %49, align 4, !tbaa !11
  %1162 = add nsw i32 %1161, 1
  %1163 = sext i32 %1162 to i64
  %1164 = getelementptr inbounds double, ptr %1160, i64 %1163
  %1165 = load double, ptr %1164, align 8, !tbaa !9
  store double %1165, ptr %45, align 8, !tbaa !9
  %1166 = load double, ptr %45, align 8, !tbaa !9
  %1167 = fcmp oge double %1166, 0.000000e+00
  br i1 %1167, label %1168, label %1170

1168:                                             ; preds = %1158
  %1169 = load double, ptr %45, align 8, !tbaa !9
  br label %1173

1170:                                             ; preds = %1158
  %1171 = load double, ptr %45, align 8, !tbaa !9
  %1172 = fneg double %1171
  br label %1173

1173:                                             ; preds = %1170, %1168
  %1174 = phi double [ %1169, %1168 ], [ %1172, %1170 ]
  %1175 = fadd double %1159, %1174
  %1176 = load ptr, ptr %28, align 8, !tbaa !5
  %1177 = load i32, ptr %49, align 4, !tbaa !11
  %1178 = sext i32 %1177 to i64
  %1179 = getelementptr inbounds double, ptr %1176, i64 %1178
  %1180 = load double, ptr %1179, align 8, !tbaa !9
  store double %1180, ptr %46, align 8, !tbaa !9
  %1181 = load double, ptr %46, align 8, !tbaa !9
  %1182 = fcmp oge double %1181, 0.000000e+00
  br i1 %1182, label %1183, label %1185

1183:                                             ; preds = %1173
  %1184 = load double, ptr %46, align 8, !tbaa !9
  br label %1188

1185:                                             ; preds = %1173
  %1186 = load double, ptr %46, align 8, !tbaa !9
  %1187 = fneg double %1186
  br label %1188

1188:                                             ; preds = %1185, %1183
  %1189 = phi double [ %1184, %1183 ], [ %1187, %1185 ]
  %1190 = fmul double %1175, %1189
  %1191 = load ptr, ptr %31, align 8, !tbaa !5
  %1192 = load double, ptr %1191, align 8, !tbaa !9
  %1193 = fcmp olt double %1190, %1192
  br i1 %1193, label %1194, label %1203

1194:                                             ; preds = %1188
  %1195 = load ptr, ptr %32, align 8, !tbaa !5
  %1196 = load i32, ptr %49, align 4, !tbaa !11
  %1197 = add nsw i32 %1196, 1
  %1198 = sext i32 %1197 to i64
  %1199 = getelementptr inbounds double, ptr %1195, i64 %1198
  store double 0.000000e+00, ptr %1199, align 8, !tbaa !9
  %1200 = load i32, ptr %49, align 4, !tbaa !11
  %1201 = load ptr, ptr %38, align 8, !tbaa !5
  %1202 = getelementptr inbounds i32, ptr %1201, i64 2
  store i32 %1200, ptr %1202, align 4, !tbaa !11
  br label %1223

1203:                                             ; preds = %1188
  %1204 = load ptr, ptr %32, align 8, !tbaa !5
  %1205 = load i32, ptr %49, align 4, !tbaa !11
  %1206 = add nsw i32 %1205, 1
  %1207 = sext i32 %1206 to i64
  %1208 = getelementptr inbounds double, ptr %1204, i64 %1207
  %1209 = load double, ptr %1208, align 8, !tbaa !9
  %1210 = load ptr, ptr %32, align 8, !tbaa !5
  %1211 = load i32, ptr %49, align 4, !tbaa !11
  %1212 = add nsw i32 %1211, 1
  %1213 = sext i32 %1212 to i64
  %1214 = getelementptr inbounds double, ptr %1210, i64 %1213
  %1215 = load double, ptr %1214, align 8, !tbaa !9
  %1216 = load ptr, ptr %35, align 8, !tbaa !5
  %1217 = load double, ptr %1216, align 8, !tbaa !9
  %1218 = call double @llvm.fmuladd.f64(double %1209, double %1215, double %1217)
  store double %1218, ptr %1216, align 8, !tbaa !9
  br label %1219

1219:                                             ; preds = %1203
  %1220 = load i32, ptr %49, align 4, !tbaa !11
  %1221 = add nsw i32 %1220, 1
  store i32 %1221, ptr %49, align 4, !tbaa !11
  br label %1122, !llvm.loop !23

1222:                                             ; preds = %1122
  br label %1223

1223:                                             ; preds = %1222, %1194
  br label %1366

1224:                                             ; preds = %1113, %1110
  %1225 = load ptr, ptr %24, align 8, !tbaa !5
  %1226 = load i32, ptr %1225, align 4, !tbaa !11
  %1227 = sub nsw i32 %1226, 1
  store i32 %1227, ptr %43, align 4, !tbaa !11
  %1228 = load ptr, ptr %37, align 8, !tbaa !5
  %1229 = load i32, ptr %1228, align 4, !tbaa !11
  store i32 %1229, ptr %49, align 4, !tbaa !11
  br label %1230

1230:                                             ; preds = %1361, %1224
  %1231 = load i32, ptr %49, align 4, !tbaa !11
  %1232 = load i32, ptr %43, align 4, !tbaa !11
  %1233 = icmp sle i32 %1231, %1232
  br i1 %1233, label %1234, label %1364

1234:                                             ; preds = %1230
  %1235 = load ptr, ptr %32, align 8, !tbaa !5
  %1236 = load i32, ptr %49, align 4, !tbaa !11
  %1237 = sext i32 %1236 to i64
  %1238 = getelementptr inbounds double, ptr %1235, i64 %1237
  %1239 = load double, ptr %1238, align 8, !tbaa !9
  %1240 = fcmp oeq double %1239, 0.000000e+00
  br i1 %1240, label %1241, label %1267

1241:                                             ; preds = %1234
  %1242 = load ptr, ptr %28, align 8, !tbaa !5
  %1243 = load i32, ptr %49, align 4, !tbaa !11
  %1244 = sub nsw i32 %1243, 1
  %1245 = sext i32 %1244 to i64
  %1246 = getelementptr inbounds double, ptr %1242, i64 %1245
  %1247 = load double, ptr %1246, align 8, !tbaa !9
  %1248 = load ptr, ptr %28, align 8, !tbaa !5
  %1249 = load i32, ptr %49, align 4, !tbaa !11
  %1250 = sext i32 %1249 to i64
  %1251 = getelementptr inbounds double, ptr %1248, i64 %1250
  %1252 = load double, ptr %1251, align 8, !tbaa !9
  %1253 = fdiv double %1247, %1252
  %1254 = fneg double %1253
  %1255 = load ptr, ptr %32, align 8, !tbaa !5
  %1256 = load i32, ptr %49, align 4, !tbaa !11
  %1257 = sub nsw i32 %1256, 1
  %1258 = sext i32 %1257 to i64
  %1259 = getelementptr inbounds double, ptr %1255, i64 %1258
  %1260 = load double, ptr %1259, align 8, !tbaa !9
  %1261 = fmul double %1254, %1260
  %1262 = load ptr, ptr %32, align 8, !tbaa !5
  %1263 = load i32, ptr %49, align 4, !tbaa !11
  %1264 = add nsw i32 %1263, 1
  %1265 = sext i32 %1264 to i64
  %1266 = getelementptr inbounds double, ptr %1262, i64 %1265
  store double %1261, ptr %1266, align 8, !tbaa !9
  br label %1287

1267:                                             ; preds = %1234
  %1268 = load ptr, ptr %42, align 8, !tbaa !5
  %1269 = load i32, ptr %55, align 4, !tbaa !11
  %1270 = load i32, ptr %49, align 4, !tbaa !11
  %1271 = add nsw i32 %1269, %1270
  %1272 = sext i32 %1271 to i64
  %1273 = getelementptr inbounds double, ptr %1268, i64 %1272
  %1274 = load double, ptr %1273, align 8, !tbaa !9
  %1275 = load ptr, ptr %32, align 8, !tbaa !5
  %1276 = load i32, ptr %49, align 4, !tbaa !11
  %1277 = sext i32 %1276 to i64
  %1278 = getelementptr inbounds double, ptr %1275, i64 %1277
  %1279 = load double, ptr %1278, align 8, !tbaa !9
  %1280 = fmul double %1274, %1279
  %1281 = fneg double %1280
  %1282 = load ptr, ptr %32, align 8, !tbaa !5
  %1283 = load i32, ptr %49, align 4, !tbaa !11
  %1284 = add nsw i32 %1283, 1
  %1285 = sext i32 %1284 to i64
  %1286 = getelementptr inbounds double, ptr %1282, i64 %1285
  store double %1281, ptr %1286, align 8, !tbaa !9
  br label %1287

1287:                                             ; preds = %1267, %1241
  %1288 = load ptr, ptr %32, align 8, !tbaa !5
  %1289 = load i32, ptr %49, align 4, !tbaa !11
  %1290 = sext i32 %1289 to i64
  %1291 = getelementptr inbounds double, ptr %1288, i64 %1290
  %1292 = load double, ptr %1291, align 8, !tbaa !9
  store double %1292, ptr %44, align 8, !tbaa !9
  %1293 = load double, ptr %44, align 8, !tbaa !9
  %1294 = fcmp oge double %1293, 0.000000e+00
  br i1 %1294, label %1295, label %1297

1295:                                             ; preds = %1287
  %1296 = load double, ptr %44, align 8, !tbaa !9
  br label %1300

1297:                                             ; preds = %1287
  %1298 = load double, ptr %44, align 8, !tbaa !9
  %1299 = fneg double %1298
  br label %1300

1300:                                             ; preds = %1297, %1295
  %1301 = phi double [ %1296, %1295 ], [ %1299, %1297 ]
  %1302 = load ptr, ptr %32, align 8, !tbaa !5
  %1303 = load i32, ptr %49, align 4, !tbaa !11
  %1304 = add nsw i32 %1303, 1
  %1305 = sext i32 %1304 to i64
  %1306 = getelementptr inbounds double, ptr %1302, i64 %1305
  %1307 = load double, ptr %1306, align 8, !tbaa !9
  store double %1307, ptr %45, align 8, !tbaa !9
  %1308 = load double, ptr %45, align 8, !tbaa !9
  %1309 = fcmp oge double %1308, 0.000000e+00
  br i1 %1309, label %1310, label %1312

1310:                                             ; preds = %1300
  %1311 = load double, ptr %45, align 8, !tbaa !9
  br label %1315

1312:                                             ; preds = %1300
  %1313 = load double, ptr %45, align 8, !tbaa !9
  %1314 = fneg double %1313
  br label %1315

1315:                                             ; preds = %1312, %1310
  %1316 = phi double [ %1311, %1310 ], [ %1314, %1312 ]
  %1317 = fadd double %1301, %1316
  %1318 = load ptr, ptr %28, align 8, !tbaa !5
  %1319 = load i32, ptr %49, align 4, !tbaa !11
  %1320 = sext i32 %1319 to i64
  %1321 = getelementptr inbounds double, ptr %1318, i64 %1320
  %1322 = load double, ptr %1321, align 8, !tbaa !9
  store double %1322, ptr %46, align 8, !tbaa !9
  %1323 = load double, ptr %46, align 8, !tbaa !9
  %1324 = fcmp oge double %1323, 0.000000e+00
  br i1 %1324, label %1325, label %1327

1325:                                             ; preds = %1315
  %1326 = load double, ptr %46, align 8, !tbaa !9
  br label %1330

1327:                                             ; preds = %1315
  %1328 = load double, ptr %46, align 8, !tbaa !9
  %1329 = fneg double %1328
  br label %1330

1330:                                             ; preds = %1327, %1325
  %1331 = phi double [ %1326, %1325 ], [ %1329, %1327 ]
  %1332 = fmul double %1317, %1331
  %1333 = load ptr, ptr %31, align 8, !tbaa !5
  %1334 = load double, ptr %1333, align 8, !tbaa !9
  %1335 = fcmp olt double %1332, %1334
  br i1 %1335, label %1336, label %1345

1336:                                             ; preds = %1330
  %1337 = load ptr, ptr %32, align 8, !tbaa !5
  %1338 = load i32, ptr %49, align 4, !tbaa !11
  %1339 = add nsw i32 %1338, 1
  %1340 = sext i32 %1339 to i64
  %1341 = getelementptr inbounds double, ptr %1337, i64 %1340
  store double 0.000000e+00, ptr %1341, align 8, !tbaa !9
  %1342 = load i32, ptr %49, align 4, !tbaa !11
  %1343 = load ptr, ptr %38, align 8, !tbaa !5
  %1344 = getelementptr inbounds i32, ptr %1343, i64 2
  store i32 %1342, ptr %1344, align 4, !tbaa !11
  br label %1365

1345:                                             ; preds = %1330
  %1346 = load ptr, ptr %32, align 8, !tbaa !5
  %1347 = load i32, ptr %49, align 4, !tbaa !11
  %1348 = add nsw i32 %1347, 1
  %1349 = sext i32 %1348 to i64
  %1350 = getelementptr inbounds double, ptr %1346, i64 %1349
  %1351 = load double, ptr %1350, align 8, !tbaa !9
  %1352 = load ptr, ptr %32, align 8, !tbaa !5
  %1353 = load i32, ptr %49, align 4, !tbaa !11
  %1354 = add nsw i32 %1353, 1
  %1355 = sext i32 %1354 to i64
  %1356 = getelementptr inbounds double, ptr %1352, i64 %1355
  %1357 = load double, ptr %1356, align 8, !tbaa !9
  %1358 = load ptr, ptr %35, align 8, !tbaa !5
  %1359 = load double, ptr %1358, align 8, !tbaa !9
  %1360 = call double @llvm.fmuladd.f64(double %1351, double %1357, double %1359)
  store double %1360, ptr %1358, align 8, !tbaa !9
  br label %1361

1361:                                             ; preds = %1345
  %1362 = load i32, ptr %49, align 4, !tbaa !11
  %1363 = add nsw i32 %1362, 1
  store i32 %1363, ptr %49, align 4, !tbaa !11
  br label %1230, !llvm.loop !24

1364:                                             ; preds = %1230
  br label %1365

1365:                                             ; preds = %1364, %1336
  br label %1366

1366:                                             ; preds = %1365, %1223
  %1367 = load ptr, ptr %35, align 8, !tbaa !5
  %1368 = load double, ptr %1367, align 8, !tbaa !9
  %1369 = fdiv double 1.000000e+00, %1368
  store double %1369, ptr %60, align 8, !tbaa !9
  %1370 = load double, ptr %60, align 8, !tbaa !9
  %1371 = call double @sqrt(double noundef %1370) #5
  %1372 = load ptr, ptr %39, align 8, !tbaa !5
  store double %1371, ptr %1372, align 8, !tbaa !9
  %1373 = load ptr, ptr %36, align 8, !tbaa !5
  %1374 = load double, ptr %1373, align 8, !tbaa !9
  %1375 = fcmp oge double %1374, 0.000000e+00
  br i1 %1375, label %1376, label %1379

1376:                                             ; preds = %1366
  %1377 = load ptr, ptr %36, align 8, !tbaa !5
  %1378 = load double, ptr %1377, align 8, !tbaa !9
  br label %1383

1379:                                             ; preds = %1366
  %1380 = load ptr, ptr %36, align 8, !tbaa !5
  %1381 = load double, ptr %1380, align 8, !tbaa !9
  %1382 = fneg double %1381
  br label %1383

1383:                                             ; preds = %1379, %1376
  %1384 = phi double [ %1378, %1376 ], [ %1382, %1379 ]
  %1385 = load ptr, ptr %39, align 8, !tbaa !5
  %1386 = load double, ptr %1385, align 8, !tbaa !9
  %1387 = fmul double %1384, %1386
  %1388 = load ptr, ptr %40, align 8, !tbaa !5
  store double %1387, ptr %1388, align 8, !tbaa !9
  %1389 = load ptr, ptr %36, align 8, !tbaa !5
  %1390 = load double, ptr %1389, align 8, !tbaa !9
  %1391 = load double, ptr %60, align 8, !tbaa !9
  %1392 = fmul double %1390, %1391
  %1393 = load ptr, ptr %41, align 8, !tbaa !5
  store double %1392, ptr %1393, align 8, !tbaa !9
  call void @llvm.lifetime.end.p0(i64 4, ptr %62) #5
  call void @llvm.lifetime.end.p0(i64 4, ptr %61) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %60) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %59) #5
  call void @llvm.lifetime.end.p0(i64 4, ptr %58) #5
  call void @llvm.lifetime.end.p0(i64 4, ptr %57) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %56) #5
  call void @llvm.lifetime.end.p0(i64 4, ptr %55) #5
  call void @llvm.lifetime.end.p0(i64 4, ptr %54) #5
  call void @llvm.lifetime.end.p0(i64 4, ptr %53) #5
  call void @llvm.lifetime.end.p0(i64 4, ptr %52) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %51) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %50) #5
  call void @llvm.lifetime.end.p0(i64 4, ptr %49) #5
  call void @llvm.lifetime.end.p0(i64 4, ptr %48) #5
  call void @llvm.lifetime.end.p0(i64 4, ptr %47) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %46) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %45) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %44) #5
  call void @llvm.lifetime.end.p0(i64 4, ptr %43) #5
  ret void
}

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

declare double @dlamch_(ptr noundef) #2

declare i32 @disnan_(ptr noundef) #2

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

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

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

attributes #0 = { nounwind uwtable "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }
attributes #1 = { nocallback nofree nosync nounwind willreturn memory(argmem: readwrite) }
attributes #2 = { "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }
attributes #3 = { nocallback nofree nosync nounwind speculatable willreturn memory(none) }
attributes #4 = { nounwind "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }
attributes #5 = { nounwind }

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

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


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

@.str = external hidden unnamed_addr constant [10 x i8], align 1

; Function Attrs: nounwind uwtable
define dso_local void @dlar1v_(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 %10, ptr nocapture noundef readonly %11, ptr nocapture noundef writeonly %12, ptr nocapture noundef %13, ptr nocapture noundef %14, ptr nocapture noundef %15, ptr nocapture noundef writeonly %16, ptr nocapture noundef writeonly %17, ptr nocapture noundef writeonly %18, ptr nocapture noundef writeonly %19, ptr nocapture noundef %20) local_unnamed_addr #0 {
  %22 = alloca double, align 8
  %23 = alloca double, align 8
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %22) #5
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %23) #5
  %24 = getelementptr inbounds i8, ptr %20, i64 -8
  %25 = getelementptr inbounds i8, ptr %10, i64 -8
  %26 = getelementptr inbounds i8, ptr %7, i64 -8
  %27 = getelementptr inbounds i8, ptr %6, i64 -8
  %28 = getelementptr inbounds i8, ptr %5, i64 -8
  %29 = getelementptr inbounds i8, ptr %4, i64 -8
  %30 = tail call double @dlamch_(ptr noundef nonnull @.str) #5
  %31 = load i32, ptr %15, align 4, !tbaa !5
  %32 = icmp eq i32 %31, 0
  %.pre = load i32, ptr %1, align 4, !tbaa !5
  br i1 %32, label %33, label %35

33:                                               ; preds = %21
  %34 = load i32, ptr %2, align 4, !tbaa !5
  br label %35

35:                                               ; preds = %21, %33
  %.0481 = phi i32 [ %.pre, %33 ], [ %31, %21 ]
  %.0480 = phi i32 [ %34, %33 ], [ %31, %21 ]
  %36 = load i32, ptr %0, align 4, !tbaa !5
  %37 = shl i32 %36, 1
  %38 = or disjoint i32 %37, 1
  %39 = mul nsw i32 %36, 3
  %40 = icmp eq i32 %.pre, 1
  br i1 %40, label %41, label %44

41:                                               ; preds = %35
  %42 = sext i32 %38 to i64
  %43 = getelementptr inbounds double, ptr %24, i64 %42
  store double 0.000000e+00, ptr %43, align 8, !tbaa !9
  %.pre672 = add nsw i32 %37, 2
  %.pre673 = sext i32 %.pre672 to i64
  br label %53

44:                                               ; preds = %35
  %45 = sext i32 %.pre to i64
  %46 = getelementptr double, ptr %26, i64 %45
  %47 = getelementptr i8, ptr %46, i64 -8
  %48 = load double, ptr %47, align 8, !tbaa !9
  %49 = add nsw i32 %38, %.pre
  %50 = sext i32 %49 to i64
  %51 = getelementptr double, ptr %24, i64 %50
  %52 = getelementptr i8, ptr %51, i64 -8
  store double %48, ptr %52, align 8, !tbaa !9
  br label %53

53:                                               ; preds = %44, %41
  %.pre-phi674 = phi i64 [ %50, %44 ], [ %.pre673, %41 ]
  %54 = getelementptr double, ptr %24, i64 %.pre-phi674
  %55 = getelementptr i8, ptr %54, i64 -8
  %56 = load double, ptr %55, align 8, !tbaa !9
  %57 = load double, ptr %3, align 8, !tbaa !9
  %58 = fsub double %56, %57
  store double %58, ptr %22, align 8, !tbaa !9
  %.not.not536 = icmp slt i32 %.pre, %.0481
  br i1 %.not.not536, label %.lr.ph.preheader, label %77

.lr.ph.preheader:                                 ; preds = %53
  %59 = sext i32 %.pre to i64
  %60 = sext i32 %38 to i64
  %wide.trip.count = sext i32 %.0481 to i64
  %invariant.gep = getelementptr double, ptr %24, i64 %60
  br label %.lr.ph

.lr.ph:                                           ; preds = %.lr.ph.preheader, %.lr.ph
  %indvars.iv = phi i64 [ %59, %.lr.ph.preheader ], [ %indvars.iv.next, %.lr.ph ]
  %.0473538 = phi i32 [ 0, %.lr.ph.preheader ], [ %.1474, %.lr.ph ]
  %61 = phi double [ %58, %.lr.ph.preheader ], [ %76, %.lr.ph ]
  %62 = getelementptr inbounds double, ptr %29, i64 %indvars.iv
  %63 = load double, ptr %62, align 8, !tbaa !9
  %64 = fadd double %63, %61
  %65 = getelementptr inbounds double, ptr %27, i64 %indvars.iv
  %66 = load double, ptr %65, align 8, !tbaa !9
  %67 = fdiv double %66, %64
  %68 = getelementptr inbounds double, ptr %24, i64 %indvars.iv
  store double %67, ptr %68, align 8, !tbaa !9
  %69 = fcmp olt double %64, 0.000000e+00
  %70 = zext i1 %69 to i32
  %.1474 = add nuw nsw i32 %.0473538, %70
  %71 = fmul double %61, %67
  %72 = getelementptr inbounds double, ptr %28, i64 %indvars.iv
  %73 = load double, ptr %72, align 8, !tbaa !9
  %74 = fmul double %71, %73
  %gep = getelementptr double, ptr %invariant.gep, i64 %indvars.iv
  store double %74, ptr %gep, align 8, !tbaa !9
  %75 = load double, ptr %3, align 8, !tbaa !9
  %76 = fsub double %74, %75
  %indvars.iv.next = add nsw i64 %indvars.iv, 1
  %exitcond.not = icmp eq i64 %indvars.iv.next, %wide.trip.count
  br i1 %exitcond.not, label %._crit_edge, label %.lr.ph, !llvm.loop !11

._crit_edge:                                      ; preds = %.lr.ph
  store double %76, ptr %22, align 8, !tbaa !9
  br label %77

77:                                               ; preds = %._crit_edge, %53
  %.0473.lcssa = phi i32 [ %.1474, %._crit_edge ], [ 0, %53 ]
  %78 = call i32 @disnan_(ptr noundef nonnull %22) #5
  %.not = icmp eq i32 %78, 0
  br i1 %.not, label %.preheader528, label %.thread

.preheader528:                                    ; preds = %77
  %.not505.not541 = icmp slt i32 %.0481, %.0480
  br i1 %.not505.not541, label %.lr.ph543.preheader, label %95

.lr.ph543.preheader:                              ; preds = %.preheader528
  %.promoted540 = load double, ptr %22, align 8, !tbaa !9
  %79 = sext i32 %.0481 to i64
  %80 = sext i32 %38 to i64
  %wide.trip.count628 = sext i32 %.0480 to i64
  %invariant.gep695 = getelementptr double, ptr %24, i64 %80
  br label %.lr.ph543

.lr.ph543:                                        ; preds = %.lr.ph543.preheader, %.lr.ph543
  %indvars.iv625 = phi i64 [ %79, %.lr.ph543.preheader ], [ %indvars.iv.next626, %.lr.ph543 ]
  %81 = phi double [ %.promoted540, %.lr.ph543.preheader ], [ %94, %.lr.ph543 ]
  %82 = getelementptr inbounds double, ptr %29, i64 %indvars.iv625
  %83 = load double, ptr %82, align 8, !tbaa !9
  %84 = fadd double %83, %81
  %85 = getelementptr inbounds double, ptr %27, i64 %indvars.iv625
  %86 = load double, ptr %85, align 8, !tbaa !9
  %87 = fdiv double %86, %84
  %88 = getelementptr inbounds double, ptr %24, i64 %indvars.iv625
  store double %87, ptr %88, align 8, !tbaa !9
  %89 = fmul double %81, %87
  %90 = getelementptr inbounds double, ptr %28, i64 %indvars.iv625
  %91 = load double, ptr %90, align 8, !tbaa !9
  %92 = fmul double %89, %91
  %gep696 = getelementptr double, ptr %invariant.gep695, i64 %indvars.iv625
  store double %92, ptr %gep696, align 8, !tbaa !9
  %93 = load double, ptr %3, align 8, !tbaa !9
  %94 = fsub double %92, %93
  %indvars.iv.next626 = add nsw i64 %indvars.iv625, 1
  %exitcond629.not = icmp eq i64 %indvars.iv.next626, %wide.trip.count628
  br i1 %exitcond629.not, label %._crit_edge544, label %.lr.ph543, !llvm.loop !13

._crit_edge544:                                   ; preds = %.lr.ph543
  store double %94, ptr %22, align 8, !tbaa !9
  br label %95

95:                                               ; preds = %._crit_edge544, %.preheader528
  %96 = call i32 @disnan_(ptr noundef nonnull %22) #5
  %.not512 = icmp eq i32 %96, 0
  br i1 %.not512, label %..loopexit527_crit_edge669, label %.thread

..loopexit527_crit_edge669:                       ; preds = %95
  %.pre670 = load double, ptr %3, align 8, !tbaa !9
  br label %.loopexit527

.thread:                                          ; preds = %77, %95
  %97 = load i32, ptr %1, align 4, !tbaa !5
  %98 = add nsw i32 %97, %38
  %99 = sext i32 %98 to i64
  %100 = getelementptr double, ptr %24, i64 %99
  %101 = getelementptr i8, ptr %100, i64 -8
  %102 = load double, ptr %101, align 8, !tbaa !9
  %103 = load double, ptr %3, align 8, !tbaa !9
  %104 = fsub double %102, %103
  store double %104, ptr %22, align 8, !tbaa !9
  %.not506.not547 = icmp slt i32 %97, %.0481
  br i1 %.not506.not547, label %.lr.ph550.preheader, label %.preheader

.lr.ph550.preheader:                              ; preds = %.thread
  %105 = sext i32 %97 to i64
  %106 = sext i32 %38 to i64
  %wide.trip.count633 = sext i32 %.0481 to i64
  %invariant.gep697 = getelementptr double, ptr %24, i64 %106
  br label %.lr.ph550

..preheader_crit_edge:                            ; preds = %134
  store double %137, ptr %22, align 8, !tbaa !9
  br label %.preheader

.preheader:                                       ; preds = %..preheader_crit_edge, %.thread
  %107 = phi double [ %136, %..preheader_crit_edge ], [ %103, %.thread ]
  %.promoted553 = phi double [ %137, %..preheader_crit_edge ], [ %104, %.thread ]
  %.2475.lcssa = phi i32 [ %.3476, %..preheader_crit_edge ], [ 0, %.thread ]
  %.not507.not554 = icmp slt i32 %.0481, %.0480
  br i1 %.not507.not554, label %.lr.ph556.preheader, label %.loopexit527

.lr.ph556.preheader:                              ; preds = %.preheader
  %108 = sext i32 %.0481 to i64
  %109 = sext i32 %38 to i64
  %wide.trip.count638 = sext i32 %.0480 to i64
  %invariant.gep699 = getelementptr double, ptr %24, i64 %109
  br label %.lr.ph556

.lr.ph550:                                        ; preds = %.lr.ph550.preheader, %134
  %indvars.iv630 = phi i64 [ %105, %.lr.ph550.preheader ], [ %indvars.iv.next631, %134 ]
  %.2475549 = phi i32 [ 0, %.lr.ph550.preheader ], [ %.3476, %134 ]
  %110 = phi double [ %104, %.lr.ph550.preheader ], [ %137, %134 ]
  %111 = getelementptr inbounds double, ptr %29, i64 %indvars.iv630
  %112 = load double, ptr %111, align 8, !tbaa !9
  %113 = fadd double %112, %110
  %114 = fcmp oge double %113, 0.000000e+00
  %115 = fneg double %113
  %116 = select i1 %114, double %113, double %115
  %117 = load double, ptr %8, align 8, !tbaa !9
  %118 = fcmp olt double %116, %117
  %119 = fneg double %117
  %.0482 = select i1 %118, double %119, double %113
  %120 = getelementptr inbounds double, ptr %27, i64 %indvars.iv630
  %121 = load double, ptr %120, align 8, !tbaa !9
  %122 = fdiv double %121, %.0482
  %123 = getelementptr inbounds double, ptr %24, i64 %indvars.iv630
  store double %122, ptr %123, align 8, !tbaa !9
  %124 = fcmp olt double %.0482, 0.000000e+00
  %125 = zext i1 %124 to i32
  %.3476 = add nuw nsw i32 %.2475549, %125
  %126 = fmul double %110, %122
  %127 = getelementptr inbounds double, ptr %28, i64 %indvars.iv630
  %128 = load double, ptr %127, align 8, !tbaa !9
  %129 = fmul double %128, %126
  %gep698 = getelementptr double, ptr %invariant.gep697, i64 %indvars.iv630
  store double %129, ptr %gep698, align 8, !tbaa !9
  %130 = fcmp oeq double %122, 0.000000e+00
  br i1 %130, label %131, label %134

131:                                              ; preds = %.lr.ph550
  %132 = getelementptr inbounds double, ptr %26, i64 %indvars.iv630
  %133 = load double, ptr %132, align 8, !tbaa !9
  store double %133, ptr %gep698, align 8, !tbaa !9
  br label %134

134:                                              ; preds = %131, %.lr.ph550
  %135 = phi double [ %133, %131 ], [ %129, %.lr.ph550 ]
  %136 = load double, ptr %3, align 8, !tbaa !9
  %137 = fsub double %135, %136
  %indvars.iv.next631 = add nsw i64 %indvars.iv630, 1
  %exitcond634.not = icmp eq i64 %indvars.iv.next631, %wide.trip.count633
  br i1 %exitcond634.not, label %..preheader_crit_edge, label %.lr.ph550, !llvm.loop !14

.lr.ph556:                                        ; preds = %.lr.ph556.preheader, %160
  %indvars.iv635 = phi i64 [ %108, %.lr.ph556.preheader ], [ %indvars.iv.next636, %160 ]
  %138 = phi double [ %.promoted553, %.lr.ph556.preheader ], [ %163, %160 ]
  %139 = getelementptr inbounds double, ptr %29, i64 %indvars.iv635
  %140 = load double, ptr %139, align 8, !tbaa !9
  %141 = fadd double %140, %138
  %142 = fcmp oge double %141, 0.000000e+00
  %143 = fneg double %141
  %144 = select i1 %142, double %141, double %143
  %145 = load double, ptr %8, align 8, !tbaa !9
  %146 = fcmp olt double %144, %145
  %147 = fneg double %145
  %.1483 = select i1 %146, double %147, double %141
  %148 = getelementptr inbounds double, ptr %27, i64 %indvars.iv635
  %149 = load double, ptr %148, align 8, !tbaa !9
  %150 = fdiv double %149, %.1483
  %151 = getelementptr inbounds double, ptr %24, i64 %indvars.iv635
  store double %150, ptr %151, align 8, !tbaa !9
  %152 = fmul double %138, %150
  %153 = getelementptr inbounds double, ptr %28, i64 %indvars.iv635
  %154 = load double, ptr %153, align 8, !tbaa !9
  %155 = fmul double %154, %152
  %gep700 = getelementptr double, ptr %invariant.gep699, i64 %indvars.iv635
  store double %155, ptr %gep700, align 8, !tbaa !9
  %156 = fcmp oeq double %150, 0.000000e+00
  br i1 %156, label %157, label %160

157:                                              ; preds = %.lr.ph556
  %158 = getelementptr inbounds double, ptr %26, i64 %indvars.iv635
  %159 = load double, ptr %158, align 8, !tbaa !9
  store double %159, ptr %gep700, align 8, !tbaa !9
  br label %160

160:                                              ; preds = %157, %.lr.ph556
  %161 = phi double [ %159, %157 ], [ %155, %.lr.ph556 ]
  %162 = load double, ptr %3, align 8, !tbaa !9
  %163 = fsub double %161, %162
  %indvars.iv.next636 = add nsw i64 %indvars.iv635, 1
  %exitcond639.not = icmp eq i64 %indvars.iv.next636, %wide.trip.count638
  br i1 %exitcond639.not, label %..loopexit527_crit_edge, label %.lr.ph556, !llvm.loop !15

..loopexit527_crit_edge:                          ; preds = %160
  store double %163, ptr %22, align 8, !tbaa !9
  br label %.loopexit527

.loopexit527:                                     ; preds = %..loopexit527_crit_edge669, %.preheader, %..loopexit527_crit_edge
  %164 = phi double [ %.pre670, %..loopexit527_crit_edge669 ], [ %162, %..loopexit527_crit_edge ], [ %107, %.preheader ]
  %.0478521 = phi i32 [ 0, %..loopexit527_crit_edge669 ], [ 1, %..loopexit527_crit_edge ], [ 1, %.preheader ]
  %.4477 = phi i32 [ %.0473.lcssa, %..loopexit527_crit_edge669 ], [ %.2475.lcssa, %..loopexit527_crit_edge ], [ %.2475.lcssa, %.preheader ]
  %165 = load i32, ptr %2, align 4, !tbaa !5
  %166 = sext i32 %165 to i64
  %167 = getelementptr inbounds double, ptr %29, i64 %166
  %168 = load double, ptr %167, align 8, !tbaa !9
  %169 = fsub double %168, %164
  %170 = add i32 %165, %39
  %171 = sext i32 %170 to i64
  %172 = getelementptr inbounds double, ptr %24, i64 %171
  store double %169, ptr %172, align 8, !tbaa !9
  %.not508.not558 = icmp sgt i32 %165, %.0481
  br i1 %.not508.not558, label %.lr.ph562.preheader, label %._crit_edge563

.lr.ph562.preheader:                              ; preds = %.loopexit527
  %173 = sext i32 %36 to i64
  %174 = sext i32 %.0481 to i64
  %invariant.gep701 = getelementptr double, ptr %24, i64 %173
  br label %.lr.ph562

.lr.ph562:                                        ; preds = %.lr.ph562.preheader, %.lr.ph562
  %indvars.iv640 = phi i64 [ %166, %.lr.ph562.preheader ], [ %indvars.iv.next641, %.lr.ph562 ]
  %.0560 = phi i32 [ 0, %.lr.ph562.preheader ], [ %.1, %.lr.ph562 ]
  %indvars.iv.next641 = add nsw i64 %indvars.iv640, -1
  %175 = getelementptr inbounds double, ptr %26, i64 %indvars.iv.next641
  %176 = load double, ptr %175, align 8, !tbaa !9
  %177 = trunc nsw i64 %indvars.iv640 to i32
  %178 = add i32 %39, %177
  %179 = sext i32 %178 to i64
  %180 = getelementptr inbounds double, ptr %24, i64 %179
  %181 = load double, ptr %180, align 8, !tbaa !9
  %182 = fadd double %176, %181
  %183 = getelementptr inbounds double, ptr %29, i64 %indvars.iv.next641
  %184 = load double, ptr %183, align 8, !tbaa !9
  %185 = fdiv double %184, %182
  %186 = fcmp olt double %182, 0.000000e+00
  %187 = zext i1 %186 to i32
  %.1 = add nuw nsw i32 %.0560, %187
  %188 = getelementptr inbounds double, ptr %28, i64 %indvars.iv.next641
  %189 = load double, ptr %188, align 8, !tbaa !9
  %190 = fmul double %185, %189
  %gep702 = getelementptr double, ptr %invariant.gep701, i64 %indvars.iv.next641
  store double %190, ptr %gep702, align 8, !tbaa !9
  %191 = load double, ptr %180, align 8, !tbaa !9
  %192 = load double, ptr %3, align 8, !tbaa !9
  %193 = fneg double %192
  %194 = call double @llvm.fmuladd.f64(double %191, double %185, double %193)
  %195 = getelementptr i8, ptr %180, i64 -8
  store double %194, ptr %195, align 8, !tbaa !9
  %.not508.not = icmp sgt i64 %indvars.iv.next641, %174
  br i1 %.not508.not, label %.lr.ph562, label %._crit_edge563, !llvm.loop !16

._crit_edge563:                                   ; preds = %.lr.ph562, %.loopexit527
  %.0.lcssa = phi i32 [ 0, %.loopexit527 ], [ %.1, %.lr.ph562 ]
  %196 = add i32 %39, %.0481
  %197 = sext i32 %196 to i64
  %198 = getelementptr inbounds double, ptr %24, i64 %197
  %199 = load double, ptr %198, align 8, !tbaa !9
  store double %199, ptr %23, align 8, !tbaa !9
  %200 = call i32 @disnan_(ptr noundef nonnull %23) #5
  %.not513 = icmp eq i32 %200, 0
  br i1 %.not513, label %.loopexit526, label %201

201:                                              ; preds = %._crit_edge563
  %202 = load i32, ptr %2, align 4, !tbaa !5
  %.not509.not567 = icmp sgt i32 %202, %.0481
  br i1 %.not509.not567, label %.lr.ph572.preheader, label %.loopexit526

.lr.ph572.preheader:                              ; preds = %201
  %203 = sext i32 %202 to i64
  %204 = sext i32 %.0481 to i64
  %205 = sext i32 %36 to i64
  %invariant.gep703 = getelementptr double, ptr %24, i64 %205
  br label %.lr.ph572

.lr.ph572:                                        ; preds = %.lr.ph572.preheader, %238
  %indvars.iv643 = phi i64 [ %203, %.lr.ph572.preheader ], [ %indvars.iv.next644, %238 ]
  %.2569 = phi i32 [ 0, %.lr.ph572.preheader ], [ %.3, %238 ]
  %indvars.iv.next644 = add nsw i64 %indvars.iv643, -1
  %206 = getelementptr inbounds double, ptr %26, i64 %indvars.iv.next644
  %207 = load double, ptr %206, align 8, !tbaa !9
  %208 = trunc nsw i64 %indvars.iv643 to i32
  %209 = add i32 %39, %208
  %210 = sext i32 %209 to i64
  %211 = getelementptr inbounds double, ptr %24, i64 %210
  %212 = load double, ptr %211, align 8, !tbaa !9
  %213 = fadd double %207, %212
  %214 = fcmp oge double %213, 0.000000e+00
  %215 = fneg double %213
  %216 = select i1 %214, double %213, double %215
  %217 = load double, ptr %8, align 8, !tbaa !9
  %218 = fcmp olt double %216, %217
  %219 = fneg double %217
  %.0479 = select i1 %218, double %219, double %213
  %220 = getelementptr inbounds double, ptr %29, i64 %indvars.iv.next644
  %221 = load double, ptr %220, align 8, !tbaa !9
  %222 = fdiv double %221, %.0479
  %223 = fcmp olt double %.0479, 0.000000e+00
  %224 = zext i1 %223 to i32
  %.3 = add nuw nsw i32 %.2569, %224
  %225 = getelementptr inbounds double, ptr %28, i64 %indvars.iv.next644
  %226 = load double, ptr %225, align 8, !tbaa !9
  %227 = fmul double %226, %222
  %gep704 = getelementptr double, ptr %invariant.gep703, i64 %indvars.iv.next644
  store double %227, ptr %gep704, align 8, !tbaa !9
  %228 = load double, ptr %211, align 8, !tbaa !9
  %229 = load double, ptr %3, align 8, !tbaa !9
  %230 = fneg double %229
  %231 = call double @llvm.fmuladd.f64(double %228, double %222, double %230)
  %232 = getelementptr i8, ptr %211, i64 -8
  store double %231, ptr %232, align 8, !tbaa !9
  %233 = fcmp oeq double %222, 0.000000e+00
  br i1 %233, label %234, label %238

234:                                              ; preds = %.lr.ph572
  %235 = load double, ptr %220, align 8, !tbaa !9
  %236 = load double, ptr %3, align 8, !tbaa !9
  %237 = fsub double %235, %236
  store double %237, ptr %232, align 8, !tbaa !9
  br label %238

238:                                              ; preds = %.lr.ph572, %234
  %.not509.not = icmp sgt i64 %indvars.iv.next644, %204
  br i1 %.not509.not, label %.lr.ph572, label %.loopexit526, !llvm.loop !17

.loopexit526:                                     ; preds = %238, %201, %._crit_edge563
  %.4 = phi i32 [ %.0.lcssa, %._crit_edge563 ], [ 0, %201 ], [ %.3, %238 ]
  %239 = add nsw i32 %38, %.0481
  %240 = sext i32 %239 to i64
  %241 = getelementptr double, ptr %24, i64 %240
  %242 = getelementptr i8, ptr %241, i64 -8
  %243 = load double, ptr %242, align 8, !tbaa !9
  %244 = load double, ptr %198, align 8, !tbaa !9
  %245 = fadd double %243, %244
  store double %245, ptr %14, align 8, !tbaa !9
  %246 = fcmp olt double %245, 0.000000e+00
  %247 = zext i1 %246 to i32
  %248 = load i32, ptr %11, align 4, !tbaa !5
  %.not510 = icmp eq i32 %248, 0
  %.5 = add i32 %.4, %.4477
  %249 = add i32 %.5, %247
  %storemerge = select i1 %.not510, i32 -1, i32 %249
  store i32 %storemerge, ptr %12, align 4, !tbaa !5
  %250 = fcmp oeq double %245, 0.000000e+00
  br i1 %250, label %251, label %254

251:                                              ; preds = %.loopexit526
  %252 = load double, ptr %242, align 8, !tbaa !9
  %253 = fmul double %30, %252
  store double %253, ptr %14, align 8, !tbaa !9
  br label %254

254:                                              ; preds = %251, %.loopexit526
  %.promoted580 = phi double [ %253, %251 ], [ %245, %.loopexit526 ]
  store i32 %.0481, ptr %15, align 4, !tbaa !5
  %.not511.not575 = icmp slt i32 %.0481, %.0480
  br i1 %.not511.not575, label %.lr.ph578, label %277

.lr.ph578:                                        ; preds = %254
  %255 = sext i32 %.0481 to i64
  %256 = sext i32 %38 to i64
  %wide.trip.count649 = sext i32 %.0480 to i64
  %invariant.gep705 = getelementptr double, ptr %24, i64 %256
  %257 = sext i32 %39 to i64
  %invariant.gep707 = getelementptr double, ptr %24, i64 %257
  %invariant.gep709 = getelementptr i8, ptr %invariant.gep707, i64 8
  br label %258

258:                                              ; preds = %.lr.ph578, %275
  %indvars.iv646 = phi i64 [ %255, %.lr.ph578 ], [ %indvars.iv.next647.pre-phi, %275 ]
  %259 = phi double [ %.promoted580, %.lr.ph578 ], [ %276, %275 ]
  %gep706 = getelementptr double, ptr %invariant.gep705, i64 %indvars.iv646
  %260 = load double, ptr %gep706, align 8, !tbaa !9
  %gep710 = getelementptr double, ptr %invariant.gep709, i64 %indvars.iv646
  %261 = load double, ptr %gep710, align 8, !tbaa !9
  %262 = fadd double %260, %261
  %263 = fcmp oeq double %262, 0.000000e+00
  %264 = fmul double %30, %260
  %storemerge522 = select i1 %263, double %264, double %262
  %265 = fcmp oge double %storemerge522, 0.000000e+00
  %266 = fneg double %storemerge522
  %267 = select i1 %265, double %storemerge522, double %266
  %268 = fcmp ult double %259, 0.000000e+00
  %269 = fneg double %259
  %270 = select i1 %268, double %269, double %259
  %271 = fcmp ugt double %267, %270
  br i1 %271, label %._crit_edge675, label %272

._crit_edge675:                                   ; preds = %258
  %.pre676 = add nsw i64 %indvars.iv646, 1
  br label %275

272:                                              ; preds = %258
  store double %storemerge522, ptr %14, align 8, !tbaa !9
  %273 = add nsw i64 %indvars.iv646, 1
  %274 = trunc nsw i64 %273 to i32
  store i32 %274, ptr %15, align 4, !tbaa !5
  br label %275

275:                                              ; preds = %._crit_edge675, %272
  %indvars.iv.next647.pre-phi = phi i64 [ %.pre676, %._crit_edge675 ], [ %273, %272 ]
  %276 = phi double [ %259, %._crit_edge675 ], [ %storemerge522, %272 ]
  %exitcond650.not = icmp eq i64 %indvars.iv.next647.pre-phi, %wide.trip.count649
  br i1 %exitcond650.not, label %._crit_edge579, label %258, !llvm.loop !18

._crit_edge579:                                   ; preds = %275
  store double %storemerge522, ptr %23, align 8, !tbaa !9
  br label %277

277:                                              ; preds = %._crit_edge579, %254
  %278 = load i32, ptr %1, align 4, !tbaa !5
  store i32 %278, ptr %16, align 4, !tbaa !5
  %279 = load i32, ptr %2, align 4, !tbaa !5
  %280 = getelementptr inbounds i8, ptr %16, i64 4
  store i32 %279, ptr %280, align 4, !tbaa !5
  %281 = load i32, ptr %15, align 4, !tbaa !5
  %282 = sext i32 %281 to i64
  %283 = getelementptr inbounds double, ptr %25, i64 %282
  store double 1.000000e+00, ptr %283, align 8, !tbaa !9
  store double 1.000000e+00, ptr %13, align 8, !tbaa !9
  %284 = or i32 %200, %.0478521
  %or.cond.not = icmp eq i32 %284, 0
  %285 = load i32, ptr %1, align 4, !tbaa !5
  %.not514.not590 = icmp sgt i32 %281, %285
  br i1 %or.cond.not, label %286, label %312

286:                                              ; preds = %277
  br i1 %.not514.not590, label %.lr.ph594.preheader, label %.loopexit524.thread

.lr.ph594.preheader:                              ; preds = %286
  %287 = sext i32 %285 to i64
  br label %.lr.ph594

.lr.ph594:                                        ; preds = %.lr.ph594.preheader, %309
  %indvars.iv654 = phi i64 [ %282, %.lr.ph594.preheader ], [ %indvars.iv.next655, %309 ]
  %indvars.iv.next655 = add nsw i64 %indvars.iv654, -1
  %288 = getelementptr inbounds double, ptr %24, i64 %indvars.iv.next655
  %289 = load double, ptr %288, align 8, !tbaa !9
  %290 = getelementptr inbounds double, ptr %25, i64 %indvars.iv654
  %291 = load double, ptr %290, align 8, !tbaa !9
  %292 = fmul double %289, %291
  %293 = fneg double %292
  %294 = getelementptr inbounds double, ptr %25, i64 %indvars.iv.next655
  store double %293, ptr %294, align 8, !tbaa !9
  %295 = fcmp ole double %292, 0.000000e+00
  %296 = select i1 %295, double %293, double %292
  %297 = fcmp oge double %291, 0.000000e+00
  %298 = fneg double %291
  %299 = select i1 %297, double %291, double %298
  %300 = fadd double %299, %296
  %301 = getelementptr inbounds double, ptr %27, i64 %indvars.iv.next655
  %302 = load double, ptr %301, align 8, !tbaa !9
  %303 = fcmp oge double %302, 0.000000e+00
  %304 = fneg double %302
  %305 = select i1 %303, double %302, double %304
  %306 = fmul double %300, %305
  %307 = load double, ptr %9, align 8, !tbaa !9
  %308 = fcmp olt double %306, %307
  br i1 %308, label %.loopexit524.sink.split, label %309

309:                                              ; preds = %.lr.ph594
  %310 = load double, ptr %13, align 8, !tbaa !9
  %311 = call double @llvm.fmuladd.f64(double %292, double %292, double %310)
  store double %311, ptr %13, align 8, !tbaa !9
  %.not514.not = icmp sgt i64 %indvars.iv.next655, %287
  br i1 %.not514.not, label %.lr.ph594, label %.loopexit524, !llvm.loop !19

312:                                              ; preds = %277
  br i1 %.not514.not590, label %.lr.ph587.preheader, label %.loopexit524.thread677

.lr.ph587.preheader:                              ; preds = %312
  %313 = sext i32 %285 to i64
  br label %.lr.ph587

.lr.ph587:                                        ; preds = %.lr.ph587.preheader, %349
  %indvars.iv651 = phi i64 [ %282, %.lr.ph587.preheader ], [ %indvars.iv.next652, %349 ]
  %indvars.iv.next652 = add nsw i64 %indvars.iv651, -1
  %314 = getelementptr inbounds double, ptr %25, i64 %indvars.iv651
  %315 = load double, ptr %314, align 8, !tbaa !9
  %316 = fcmp oeq double %315, 0.000000e+00
  br i1 %316, label %317, label %327

317:                                              ; preds = %.lr.ph587
  %318 = getelementptr inbounds double, ptr %27, i64 %indvars.iv651
  %319 = load double, ptr %318, align 8, !tbaa !9
  %320 = getelementptr inbounds double, ptr %27, i64 %indvars.iv.next652
  %321 = load double, ptr %320, align 8, !tbaa !9
  %322 = fneg double %319
  %323 = fdiv double %322, %321
  %324 = getelementptr i8, ptr %314, i64 8
  %325 = load double, ptr %324, align 8, !tbaa !9
  %326 = fmul double %323, %325
  br label %332

327:                                              ; preds = %.lr.ph587
  %328 = getelementptr inbounds double, ptr %24, i64 %indvars.iv.next652
  %329 = load double, ptr %328, align 8, !tbaa !9
  %330 = fneg double %329
  %331 = fmul double %315, %330
  br label %332

332:                                              ; preds = %327, %317
  %.sink = phi double [ %326, %317 ], [ %331, %327 ]
  %333 = getelementptr inbounds double, ptr %25, i64 %indvars.iv.next652
  store double %.sink, ptr %333, align 8
  %334 = insertelement <2 x double> poison, double %.sink, i64 0
  %335 = insertelement <2 x double> %334, double %315, i64 1
  %336 = fcmp oge <2 x double> %335, zeroinitializer
  %337 = fneg <2 x double> %335
  %338 = select <2 x i1> %336, <2 x double> %335, <2 x double> %337
  %shift = shufflevector <2 x double> %338, <2 x double> poison, <2 x i32> <i32 1, i32 poison>
  %339 = fadd <2 x double> %338, %shift
  %340 = extractelement <2 x double> %339, i64 0
  %341 = getelementptr inbounds double, ptr %27, i64 %indvars.iv.next652
  %342 = load double, ptr %341, align 8, !tbaa !9
  %343 = fcmp oge double %342, 0.000000e+00
  %344 = fneg double %342
  %345 = select i1 %343, double %342, double %344
  %346 = fmul double %340, %345
  %347 = load double, ptr %9, align 8, !tbaa !9
  %348 = fcmp olt double %346, %347
  br i1 %348, label %.loopexit524.sink.split, label %349

349:                                              ; preds = %332
  %350 = load double, ptr %13, align 8, !tbaa !9
  %351 = call double @llvm.fmuladd.f64(double %.sink, double %.sink, double %350)
  store double %351, ptr %13, align 8, !tbaa !9
  %.not515.not = icmp sgt i64 %indvars.iv.next652, %313
  br i1 %.not515.not, label %.lr.ph587, label %.loopexit524, !llvm.loop !20

.loopexit524.sink.split:                          ; preds = %332, %.lr.ph594
  %indvars.iv.next652.lcssa.sink = phi i64 [ %indvars.iv.next655, %.lr.ph594 ], [ %indvars.iv.next652, %332 ]
  %indvars.iv651.lcssa.sink = phi i64 [ %indvars.iv654, %.lr.ph594 ], [ %indvars.iv651, %332 ]
  %352 = getelementptr inbounds double, ptr %25, i64 %indvars.iv.next652.lcssa.sink
  %353 = trunc nsw i64 %indvars.iv651.lcssa.sink to i32
  store double 0.000000e+00, ptr %352, align 8, !tbaa !9
  store i32 %353, ptr %16, align 4, !tbaa !5
  br label %.loopexit524

.loopexit524:                                     ; preds = %349, %309, %.loopexit524.sink.split
  br i1 %or.cond.not, label %.loopexit524.thread, label %.loopexit524.thread677

.loopexit524.thread:                              ; preds = %286, %.loopexit524
  %354 = load i32, ptr %2, align 4, !tbaa !5
  %355 = load i32, ptr %15, align 4, !tbaa !5
  %.not516.not601 = icmp slt i32 %355, %354
  br i1 %.not516.not601, label %.lr.ph604.preheader, label %.loopexit

.lr.ph604.preheader:                              ; preds = %.loopexit524.thread
  %356 = sext i32 %355 to i64
  %357 = sext i32 %36 to i64
  %wide.trip.count665 = sext i32 %354 to i64
  %invariant.gep714 = getelementptr double, ptr %24, i64 %357
  br label %.lr.ph604

.lr.ph604:                                        ; preds = %.lr.ph604.preheader, %378
  %indvars.iv662 = phi i64 [ %356, %.lr.ph604.preheader ], [ %indvars.iv.next663, %378 ]
  %gep715 = getelementptr double, ptr %invariant.gep714, i64 %indvars.iv662
  %358 = load double, ptr %gep715, align 8, !tbaa !9
  %359 = getelementptr inbounds double, ptr %25, i64 %indvars.iv662
  %360 = load double, ptr %359, align 8, !tbaa !9
  %361 = fmul double %358, %360
  %362 = fneg double %361
  %363 = getelementptr double, ptr %10, i64 %indvars.iv662
  store double %362, ptr %363, align 8, !tbaa !9
  %364 = fcmp oge double %360, 0.000000e+00
  %365 = fneg double %360
  %366 = select i1 %364, double %360, double %365
  %367 = fcmp ole double %361, 0.000000e+00
  %368 = select i1 %367, double %362, double %361
  %369 = fadd double %366, %368
  %370 = getelementptr inbounds double, ptr %27, i64 %indvars.iv662
  %371 = load double, ptr %370, align 8, !tbaa !9
  %372 = fcmp oge double %371, 0.000000e+00
  %373 = fneg double %371
  %374 = select i1 %372, double %371, double %373
  %375 = fmul double %369, %374
  %376 = load double, ptr %9, align 8, !tbaa !9
  %377 = fcmp olt double %375, %376
  br i1 %377, label %.loopexit.sink.split, label %378

378:                                              ; preds = %.lr.ph604
  %indvars.iv.next663 = add nsw i64 %indvars.iv662, 1
  %379 = load double, ptr %13, align 8, !tbaa !9
  %380 = call double @llvm.fmuladd.f64(double %361, double %361, double %379)
  store double %380, ptr %13, align 8, !tbaa !9
  %exitcond666.not = icmp eq i64 %indvars.iv.next663, %wide.trip.count665
  br i1 %exitcond666.not, label %.loopexit, label %.lr.ph604, !llvm.loop !21

.loopexit524.thread677:                           ; preds = %312, %.loopexit524
  %381 = load i32, ptr %2, align 4, !tbaa !5
  %382 = load i32, ptr %15, align 4, !tbaa !5
  %.not517.not596 = icmp slt i32 %382, %381
  br i1 %.not517.not596, label %.lr.ph599.preheader, label %.loopexit

.lr.ph599.preheader:                              ; preds = %.loopexit524.thread677
  %383 = sext i32 %382 to i64
  %384 = sext i32 %36 to i64
  %wide.trip.count660 = sext i32 %381 to i64
  %invariant.gep711 = getelementptr double, ptr %24, i64 %384
  br label %.lr.ph599

.lr.ph599:                                        ; preds = %.lr.ph599.preheader, %420
  %indvars.iv657 = phi i64 [ %383, %.lr.ph599.preheader ], [ %indvars.iv.next658, %420 ]
  %385 = getelementptr inbounds double, ptr %25, i64 %indvars.iv657
  %386 = load double, ptr %385, align 8, !tbaa !9
  %387 = fcmp oeq double %386, 0.000000e+00
  br i1 %387, label %388, label %399

388:                                              ; preds = %.lr.ph599
  %389 = add nsw i64 %indvars.iv657, -1
  %390 = getelementptr inbounds double, ptr %27, i64 %389
  %391 = load double, ptr %390, align 8, !tbaa !9
  %392 = getelementptr inbounds double, ptr %27, i64 %indvars.iv657
  %393 = load double, ptr %392, align 8, !tbaa !9
  %394 = fneg double %391
  %395 = fdiv double %394, %393
  %396 = getelementptr inbounds double, ptr %25, i64 %389
  %397 = load double, ptr %396, align 8, !tbaa !9
  %398 = fmul double %395, %397
  br label %403

399:                                              ; preds = %.lr.ph599
  %gep712 = getelementptr double, ptr %invariant.gep711, i64 %indvars.iv657
  %400 = load double, ptr %gep712, align 8, !tbaa !9
  %401 = fneg double %400
  %402 = fmul double %386, %401
  br label %403

403:                                              ; preds = %399, %388
  %.sink667 = phi double [ %398, %388 ], [ %402, %399 ]
  %404 = getelementptr i8, ptr %385, i64 8
  store double %.sink667, ptr %404, align 8
  %405 = insertelement <2 x double> poison, double %386, i64 0
  %406 = insertelement <2 x double> %405, double %.sink667, i64 1
  %407 = fcmp oge <2 x double> %406, zeroinitializer
  %408 = fneg <2 x double> %406
  %409 = select <2 x i1> %407, <2 x double> %406, <2 x double> %408
  %shift736 = shufflevector <2 x double> %409, <2 x double> poison, <2 x i32> <i32 1, i32 poison>
  %410 = fadd <2 x double> %409, %shift736
  %411 = extractelement <2 x double> %410, i64 0
  %412 = getelementptr inbounds double, ptr %27, i64 %indvars.iv657
  %413 = load double, ptr %412, align 8, !tbaa !9
  %414 = fcmp oge double %413, 0.000000e+00
  %415 = fneg double %413
  %416 = select i1 %414, double %413, double %415
  %417 = fmul double %411, %416
  %418 = load double, ptr %9, align 8, !tbaa !9
  %419 = fcmp olt double %417, %418
  br i1 %419, label %.loopexit.sink.split, label %420

420:                                              ; preds = %403
  %indvars.iv.next658 = add nsw i64 %indvars.iv657, 1
  %421 = load double, ptr %13, align 8, !tbaa !9
  %422 = call double @llvm.fmuladd.f64(double %.sink667, double %.sink667, double %421)
  store double %422, ptr %13, align 8, !tbaa !9
  %exitcond661.not = icmp eq i64 %indvars.iv.next658, %wide.trip.count660
  br i1 %exitcond661.not, label %.loopexit, label %.lr.ph599, !llvm.loop !22

.loopexit.sink.split:                             ; preds = %403, %.lr.ph604
  %indvars.iv657.lcssa.sink720 = phi i64 [ %indvars.iv662, %.lr.ph604 ], [ %indvars.iv657, %403 ]
  %423 = getelementptr double, ptr %10, i64 %indvars.iv657.lcssa.sink720
  %424 = trunc nsw i64 %indvars.iv657.lcssa.sink720 to i32
  store double 0.000000e+00, ptr %423, align 8, !tbaa !9
  store i32 %424, ptr %280, align 4, !tbaa !5
  br label %.loopexit

.loopexit:                                        ; preds = %420, %378, %.loopexit.sink.split, %.loopexit524.thread677, %.loopexit524.thread
  %425 = load double, ptr %13, align 8, !tbaa !9
  %426 = fdiv double 1.000000e+00, %425
  store double %426, ptr %23, align 8, !tbaa !9
  %427 = call double @sqrt(double noundef %426) #5
  store double %427, ptr %17, align 8, !tbaa !9
  %428 = load double, ptr %14, align 8, !tbaa !9
  %429 = fcmp ult double %428, 0.000000e+00
  %430 = fneg double %428
  %431 = select i1 %429, double %430, double %428
  %432 = fmul double %427, %431
  store double %432, ptr %18, align 8, !tbaa !9
  %433 = load double, ptr %14, align 8, !tbaa !9
  %434 = load double, ptr %23, align 8, !tbaa !9
  %435 = fmul double %433, %434
  store double %435, ptr %19, align 8, !tbaa !9
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %23) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %22) #5
  ret void
}

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

declare double @dlamch_(ptr noundef) local_unnamed_addr #2

declare i32 @disnan_(ptr noundef) local_unnamed_addr #2

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

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

; Function Attrs: mustprogress 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 = { mustprogress nocallback nofree nosync nounwind willreturn memory(argmem: readwrite) }
attributes #2 = { "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }
attributes #3 = { mustprogress nocallback nofree nosync nounwind speculatable willreturn memory(none) }
attributes #4 = { mustprogress nofree nounwind willreturn memory(write) "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }
attributes #5 = { nounwind }

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

!0 = !{i32 1, !"wchar_size", i32 4}
!1 = !{i32 8, !"PIC Level", i32 2}
!2 = !{i32 7, !"PIE Level", i32 2}
!3 = !{i32 7, !"uwtable", i32 2}
!4 = !{!"clang version 19.1.0 (git@github.com:llvm/llvm-project.git a4bf6cd7cfb1a1421ba92bca9d017b49936c55e4)"}
!5 = !{!6, !6, i64 0}
!6 = !{!"int", !7, i64 0}
!7 = !{!"omnipotent char", !8, i64 0}
!8 = !{!"Simple C/C++ TBAA"}
!9 = !{!10, !10, i64 0}
!10 = !{!"double", !7, i64 0}
!11 = distinct !{!11, !12}
!12 = !{!"llvm.loop.mustprogress"}
!13 = distinct !{!13, !12}
!14 = distinct !{!14, !12}
!15 = distinct !{!15, !12}
!16 = distinct !{!16, !12}
!17 = distinct !{!17, !12}
!18 = distinct !{!18, !12}
!19 = distinct !{!19, !12}
!20 = distinct !{!20, !12}
!21 = distinct !{!21, !12}
!22 = distinct !{!22, !12}


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