; LLVM IR from niuyishuai/PDCABB :: LAPACK_BLAS/LAPACK (zlar1v)

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

%struct.doublecomplex = type { double, double }

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

; Function Attrs: nounwind uwtable
define dso_local i32 @zlar1v_(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 i64, align 8
  %44 = alloca i64, align 8
  %45 = alloca i64, align 8
  %46 = alloca i64, align 8
  %47 = alloca double, align 8
  %48 = alloca %struct.doublecomplex, align 8
  %49 = alloca %struct.doublecomplex, align 8
  %50 = alloca i64, align 8
  %51 = alloca double, align 8
  %52 = alloca i64, align 8
  %53 = alloca i64, align 8
  %54 = alloca double, align 8
  %55 = alloca double, align 8
  %56 = alloca i64, align 8
  %57 = alloca i64, align 8
  %58 = alloca i64, align 8
  %59 = alloca i64, align 8
  %60 = alloca double, align 8
  %61 = alloca i64, align 8
  %62 = alloca i64, align 8
  %63 = alloca double, align 8
  %64 = alloca i64, align 8
  %65 = alloca i64, align 8
  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 8, 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 8, ptr %47) #5
  call void @llvm.lifetime.start.p0(i64 16, ptr %48) #5
  call void @llvm.lifetime.start.p0(i64 16, ptr %49) #5
  call void @llvm.lifetime.start.p0(i64 8, ptr %50) #5
  call void @llvm.lifetime.start.p0(i64 8, ptr %51) #5
  call void @llvm.lifetime.start.p0(i64 8, ptr %52) #5
  call void @llvm.lifetime.start.p0(i64 8, ptr %53) #5
  call void @llvm.lifetime.start.p0(i64 8, ptr %54) #5
  call void @llvm.lifetime.start.p0(i64 8, ptr %55) #5
  call void @llvm.lifetime.start.p0(i64 8, ptr %56) #5
  call void @llvm.lifetime.start.p0(i64 8, ptr %57) #5
  call void @llvm.lifetime.start.p0(i64 8, 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 8, ptr %61) #5
  call void @llvm.lifetime.start.p0(i64 8, ptr %62) #5
  call void @llvm.lifetime.start.p0(i64 8, ptr %63) #5
  call void @llvm.lifetime.start.p0(i64 8, ptr %64) #5
  call void @llvm.lifetime.start.p0(i64 8, ptr %65) #5
  %66 = load ptr, ptr %42, align 8, !tbaa !5
  %67 = getelementptr inbounds double, ptr %66, i32 -1
  store ptr %67, ptr %42, align 8, !tbaa !5
  %68 = load ptr, ptr %38, align 8, !tbaa !5
  %69 = getelementptr inbounds i64, ptr %68, i32 -1
  store ptr %69, ptr %38, align 8, !tbaa !5
  %70 = load ptr, ptr %32, align 8, !tbaa !5
  %71 = getelementptr inbounds %struct.doublecomplex, ptr %70, i32 -1
  store ptr %71, ptr %32, align 8, !tbaa !5
  %72 = load ptr, ptr %29, align 8, !tbaa !5
  %73 = getelementptr inbounds double, ptr %72, i32 -1
  store ptr %73, ptr %29, align 8, !tbaa !5
  %74 = load ptr, ptr %28, align 8, !tbaa !5
  %75 = getelementptr inbounds double, ptr %74, i32 -1
  store ptr %75, ptr %28, align 8, !tbaa !5
  %76 = load ptr, ptr %27, align 8, !tbaa !5
  %77 = getelementptr inbounds double, ptr %76, i32 -1
  store ptr %77, ptr %27, align 8, !tbaa !5
  %78 = load ptr, ptr %26, align 8, !tbaa !5
  %79 = getelementptr inbounds double, ptr %78, i32 -1
  store ptr %79, ptr %26, align 8, !tbaa !5
  %80 = call double @dlamch_(ptr noundef @.str)
  store double %80, ptr %54, align 8, !tbaa !9
  %81 = load ptr, ptr %37, align 8, !tbaa !5
  %82 = load i64, ptr %81, align 8, !tbaa !11
  %83 = icmp eq i64 %82, 0
  br i1 %83, label %84, label %89

84:                                               ; preds = %21
  %85 = load ptr, ptr %23, align 8, !tbaa !5
  %86 = load i64, ptr %85, align 8, !tbaa !11
  store i64 %86, ptr %52, align 8, !tbaa !11
  %87 = load ptr, ptr %24, align 8, !tbaa !5
  %88 = load i64, ptr %87, align 8, !tbaa !11
  store i64 %88, ptr %53, align 8, !tbaa !11
  br label %94

89:                                               ; preds = %21
  %90 = load ptr, ptr %37, align 8, !tbaa !5
  %91 = load i64, ptr %90, align 8, !tbaa !11
  store i64 %91, ptr %52, align 8, !tbaa !11
  %92 = load ptr, ptr %37, align 8, !tbaa !5
  %93 = load i64, ptr %92, align 8, !tbaa !11
  store i64 %93, ptr %53, align 8, !tbaa !11
  br label %94

94:                                               ; preds = %89, %84
  store i64 0, ptr %61, align 8, !tbaa !11
  %95 = load ptr, ptr %22, align 8, !tbaa !5
  %96 = load i64, ptr %95, align 8, !tbaa !11
  store i64 %96, ptr %62, align 8, !tbaa !11
  %97 = load ptr, ptr %22, align 8, !tbaa !5
  %98 = load i64, ptr %97, align 8, !tbaa !11
  %99 = shl i64 %98, 1
  %100 = add nsw i64 %99, 1
  store i64 %100, ptr %59, align 8, !tbaa !11
  %101 = load ptr, ptr %22, align 8, !tbaa !5
  %102 = load i64, ptr %101, align 8, !tbaa !11
  %103 = mul nsw i64 %102, 3
  %104 = add nsw i64 %103, 1
  store i64 %104, ptr %58, align 8, !tbaa !11
  %105 = load ptr, ptr %23, align 8, !tbaa !5
  %106 = load i64, ptr %105, align 8, !tbaa !11
  %107 = icmp eq i64 %106, 1
  br i1 %107, label %108, label %112

108:                                              ; preds = %94
  %109 = load ptr, ptr %42, align 8, !tbaa !5
  %110 = load i64, ptr %59, align 8, !tbaa !11
  %111 = getelementptr inbounds double, ptr %109, i64 %110
  store double 0.000000e+00, ptr %111, align 8, !tbaa !9
  br label %126

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

126:                                              ; preds = %112, %108
  store i64 0, ptr %64, align 8, !tbaa !11
  store i64 0, ptr %56, align 8, !tbaa !11
  %127 = load ptr, ptr %42, align 8, !tbaa !5
  %128 = load i64, ptr %59, align 8, !tbaa !11
  %129 = load ptr, ptr %23, align 8, !tbaa !5
  %130 = load i64, ptr %129, align 8, !tbaa !11
  %131 = add nsw i64 %128, %130
  %132 = sub nsw i64 %131, 1
  %133 = getelementptr inbounds double, ptr %127, i64 %132
  %134 = load double, ptr %133, align 8, !tbaa !9
  %135 = load ptr, ptr %25, align 8, !tbaa !5
  %136 = load double, ptr %135, align 8, !tbaa !9
  %137 = fsub double %134, %136
  store double %137, ptr %51, align 8, !tbaa !9
  %138 = load i64, ptr %52, align 8, !tbaa !11
  %139 = sub nsw i64 %138, 1
  store i64 %139, ptr %43, align 8, !tbaa !11
  %140 = load ptr, ptr %23, align 8, !tbaa !5
  %141 = load i64, ptr %140, align 8, !tbaa !11
  store i64 %141, ptr %50, align 8, !tbaa !11
  br label %142

142:                                              ; preds = %197, %126
  %143 = load i64, ptr %50, align 8, !tbaa !11
  %144 = load i64, ptr %43, align 8, !tbaa !11
  %145 = icmp sle i64 %143, %144
  br i1 %145, label %146, label %200

146:                                              ; preds = %142
  %147 = load ptr, ptr %26, align 8, !tbaa !5
  %148 = load i64, ptr %50, align 8, !tbaa !11
  %149 = getelementptr inbounds double, ptr %147, i64 %148
  %150 = load double, ptr %149, align 8, !tbaa !9
  %151 = load double, ptr %51, align 8, !tbaa !9
  %152 = fadd double %150, %151
  store double %152, ptr %60, align 8, !tbaa !9
  %153 = load ptr, ptr %28, align 8, !tbaa !5
  %154 = load i64, ptr %50, align 8, !tbaa !11
  %155 = getelementptr inbounds double, ptr %153, i64 %154
  %156 = load double, ptr %155, align 8, !tbaa !9
  %157 = load double, ptr %60, align 8, !tbaa !9
  %158 = fdiv double %156, %157
  %159 = load ptr, ptr %42, align 8, !tbaa !5
  %160 = load i64, ptr %61, align 8, !tbaa !11
  %161 = load i64, ptr %50, align 8, !tbaa !11
  %162 = add nsw i64 %160, %161
  %163 = getelementptr inbounds double, ptr %159, i64 %162
  store double %158, ptr %163, align 8, !tbaa !9
  %164 = load double, ptr %60, align 8, !tbaa !9
  %165 = fcmp olt double %164, 0.000000e+00
  br i1 %165, label %166, label %169

166:                                              ; preds = %146
  %167 = load i64, ptr %56, align 8, !tbaa !11
  %168 = add nsw i64 %167, 1
  store i64 %168, ptr %56, align 8, !tbaa !11
  br label %169

169:                                              ; preds = %166, %146
  %170 = load double, ptr %51, align 8, !tbaa !9
  %171 = load ptr, ptr %42, align 8, !tbaa !5
  %172 = load i64, ptr %61, align 8, !tbaa !11
  %173 = load i64, ptr %50, align 8, !tbaa !11
  %174 = add nsw i64 %172, %173
  %175 = getelementptr inbounds double, ptr %171, i64 %174
  %176 = load double, ptr %175, align 8, !tbaa !9
  %177 = fmul double %170, %176
  %178 = load ptr, ptr %27, align 8, !tbaa !5
  %179 = load i64, ptr %50, align 8, !tbaa !11
  %180 = getelementptr inbounds double, ptr %178, i64 %179
  %181 = load double, ptr %180, align 8, !tbaa !9
  %182 = fmul double %177, %181
  %183 = load ptr, ptr %42, align 8, !tbaa !5
  %184 = load i64, ptr %59, align 8, !tbaa !11
  %185 = load i64, ptr %50, align 8, !tbaa !11
  %186 = add nsw i64 %184, %185
  %187 = getelementptr inbounds double, ptr %183, i64 %186
  store double %182, ptr %187, align 8, !tbaa !9
  %188 = load ptr, ptr %42, align 8, !tbaa !5
  %189 = load i64, ptr %59, align 8, !tbaa !11
  %190 = load i64, ptr %50, align 8, !tbaa !11
  %191 = add nsw i64 %189, %190
  %192 = getelementptr inbounds double, ptr %188, i64 %191
  %193 = load double, ptr %192, align 8, !tbaa !9
  %194 = load ptr, ptr %25, align 8, !tbaa !5
  %195 = load double, ptr %194, align 8, !tbaa !9
  %196 = fsub double %193, %195
  store double %196, ptr %51, align 8, !tbaa !9
  br label %197

197:                                              ; preds = %169
  %198 = load i64, ptr %50, align 8, !tbaa !11
  %199 = add nsw i64 %198, 1
  store i64 %199, ptr %50, align 8, !tbaa !11
  br label %142, !llvm.loop !13

200:                                              ; preds = %142
  %201 = call i64 @disnan_(ptr noundef %51)
  store i64 %201, ptr %64, align 8, !tbaa !11
  %202 = load i64, ptr %64, align 8, !tbaa !11
  %203 = icmp ne i64 %202, 0
  br i1 %203, label %204, label %205

204:                                              ; preds = %200
  br label %263

205:                                              ; preds = %200
  %206 = load i64, ptr %53, align 8, !tbaa !11
  %207 = sub nsw i64 %206, 1
  store i64 %207, ptr %43, align 8, !tbaa !11
  %208 = load i64, ptr %52, align 8, !tbaa !11
  store i64 %208, ptr %50, align 8, !tbaa !11
  br label %209

209:                                              ; preds = %258, %205
  %210 = load i64, ptr %50, align 8, !tbaa !11
  %211 = load i64, ptr %43, align 8, !tbaa !11
  %212 = icmp sle i64 %210, %211
  br i1 %212, label %213, label %261

213:                                              ; preds = %209
  %214 = load ptr, ptr %26, align 8, !tbaa !5
  %215 = load i64, ptr %50, align 8, !tbaa !11
  %216 = getelementptr inbounds double, ptr %214, i64 %215
  %217 = load double, ptr %216, align 8, !tbaa !9
  %218 = load double, ptr %51, align 8, !tbaa !9
  %219 = fadd double %217, %218
  store double %219, ptr %60, align 8, !tbaa !9
  %220 = load ptr, ptr %28, align 8, !tbaa !5
  %221 = load i64, ptr %50, align 8, !tbaa !11
  %222 = getelementptr inbounds double, ptr %220, i64 %221
  %223 = load double, ptr %222, align 8, !tbaa !9
  %224 = load double, ptr %60, align 8, !tbaa !9
  %225 = fdiv double %223, %224
  %226 = load ptr, ptr %42, align 8, !tbaa !5
  %227 = load i64, ptr %61, align 8, !tbaa !11
  %228 = load i64, ptr %50, align 8, !tbaa !11
  %229 = add nsw i64 %227, %228
  %230 = getelementptr inbounds double, ptr %226, i64 %229
  store double %225, ptr %230, align 8, !tbaa !9
  %231 = load double, ptr %51, align 8, !tbaa !9
  %232 = load ptr, ptr %42, align 8, !tbaa !5
  %233 = load i64, ptr %61, align 8, !tbaa !11
  %234 = load i64, ptr %50, align 8, !tbaa !11
  %235 = add nsw i64 %233, %234
  %236 = getelementptr inbounds double, ptr %232, i64 %235
  %237 = load double, ptr %236, align 8, !tbaa !9
  %238 = fmul double %231, %237
  %239 = load ptr, ptr %27, align 8, !tbaa !5
  %240 = load i64, ptr %50, align 8, !tbaa !11
  %241 = getelementptr inbounds double, ptr %239, i64 %240
  %242 = load double, ptr %241, align 8, !tbaa !9
  %243 = fmul double %238, %242
  %244 = load ptr, ptr %42, align 8, !tbaa !5
  %245 = load i64, ptr %59, align 8, !tbaa !11
  %246 = load i64, ptr %50, align 8, !tbaa !11
  %247 = add nsw i64 %245, %246
  %248 = getelementptr inbounds double, ptr %244, i64 %247
  store double %243, ptr %248, align 8, !tbaa !9
  %249 = load ptr, ptr %42, align 8, !tbaa !5
  %250 = load i64, ptr %59, align 8, !tbaa !11
  %251 = load i64, ptr %50, align 8, !tbaa !11
  %252 = add nsw i64 %250, %251
  %253 = getelementptr inbounds double, ptr %249, i64 %252
  %254 = load double, ptr %253, align 8, !tbaa !9
  %255 = load ptr, ptr %25, align 8, !tbaa !5
  %256 = load double, ptr %255, align 8, !tbaa !9
  %257 = fsub double %254, %256
  store double %257, ptr %51, align 8, !tbaa !9
  br label %258

258:                                              ; preds = %213
  %259 = load i64, ptr %50, align 8, !tbaa !11
  %260 = add nsw i64 %259, 1
  store i64 %260, ptr %50, align 8, !tbaa !11
  br label %209, !llvm.loop !15

261:                                              ; preds = %209
  %262 = call i64 @disnan_(ptr noundef %51)
  store i64 %262, ptr %64, align 8, !tbaa !11
  br label %263

263:                                              ; preds = %261, %204
  %264 = load i64, ptr %64, align 8, !tbaa !11
  %265 = icmp ne i64 %264, 0
  br i1 %265, label %266, label %467

266:                                              ; preds = %263
  store i64 0, ptr %56, align 8, !tbaa !11
  %267 = load ptr, ptr %42, align 8, !tbaa !5
  %268 = load i64, ptr %59, align 8, !tbaa !11
  %269 = load ptr, ptr %23, align 8, !tbaa !5
  %270 = load i64, ptr %269, align 8, !tbaa !11
  %271 = add nsw i64 %268, %270
  %272 = sub nsw i64 %271, 1
  %273 = getelementptr inbounds double, ptr %267, i64 %272
  %274 = load double, ptr %273, align 8, !tbaa !9
  %275 = load ptr, ptr %25, align 8, !tbaa !5
  %276 = load double, ptr %275, align 8, !tbaa !9
  %277 = fsub double %274, %276
  store double %277, ptr %51, align 8, !tbaa !9
  %278 = load i64, ptr %52, align 8, !tbaa !11
  %279 = sub nsw i64 %278, 1
  store i64 %279, ptr %43, align 8, !tbaa !11
  %280 = load ptr, ptr %23, align 8, !tbaa !5
  %281 = load i64, ptr %280, align 8, !tbaa !11
  store i64 %281, ptr %50, align 8, !tbaa !11
  br label %282

282:                                              ; preds = %372, %266
  %283 = load i64, ptr %50, align 8, !tbaa !11
  %284 = load i64, ptr %43, align 8, !tbaa !11
  %285 = icmp sle i64 %283, %284
  br i1 %285, label %286, label %375

286:                                              ; preds = %282
  %287 = load ptr, ptr %26, align 8, !tbaa !5
  %288 = load i64, ptr %50, align 8, !tbaa !11
  %289 = getelementptr inbounds double, ptr %287, i64 %288
  %290 = load double, ptr %289, align 8, !tbaa !9
  %291 = load double, ptr %51, align 8, !tbaa !9
  %292 = fadd double %290, %291
  store double %292, ptr %60, align 8, !tbaa !9
  %293 = load double, ptr %60, align 8, !tbaa !9
  %294 = fcmp oge double %293, 0.000000e+00
  br i1 %294, label %295, label %297

295:                                              ; preds = %286
  %296 = load double, ptr %60, align 8, !tbaa !9
  br label %300

297:                                              ; preds = %286
  %298 = load double, ptr %60, align 8, !tbaa !9
  %299 = fneg double %298
  br label %300

300:                                              ; preds = %297, %295
  %301 = phi double [ %296, %295 ], [ %299, %297 ]
  %302 = load ptr, ptr %30, align 8, !tbaa !5
  %303 = load double, ptr %302, align 8, !tbaa !9
  %304 = fcmp olt double %301, %303
  br i1 %304, label %305, label %309

305:                                              ; preds = %300
  %306 = load ptr, ptr %30, align 8, !tbaa !5
  %307 = load double, ptr %306, align 8, !tbaa !9
  %308 = fneg double %307
  store double %308, ptr %60, align 8, !tbaa !9
  br label %309

309:                                              ; preds = %305, %300
  %310 = load ptr, ptr %28, align 8, !tbaa !5
  %311 = load i64, ptr %50, align 8, !tbaa !11
  %312 = getelementptr inbounds double, ptr %310, i64 %311
  %313 = load double, ptr %312, align 8, !tbaa !9
  %314 = load double, ptr %60, align 8, !tbaa !9
  %315 = fdiv double %313, %314
  %316 = load ptr, ptr %42, align 8, !tbaa !5
  %317 = load i64, ptr %61, align 8, !tbaa !11
  %318 = load i64, ptr %50, align 8, !tbaa !11
  %319 = add nsw i64 %317, %318
  %320 = getelementptr inbounds double, ptr %316, i64 %319
  store double %315, ptr %320, align 8, !tbaa !9
  %321 = load double, ptr %60, align 8, !tbaa !9
  %322 = fcmp olt double %321, 0.000000e+00
  br i1 %322, label %323, label %326

323:                                              ; preds = %309
  %324 = load i64, ptr %56, align 8, !tbaa !11
  %325 = add nsw i64 %324, 1
  store i64 %325, ptr %56, align 8, !tbaa !11
  br label %326

326:                                              ; preds = %323, %309
  %327 = load double, ptr %51, align 8, !tbaa !9
  %328 = load ptr, ptr %42, align 8, !tbaa !5
  %329 = load i64, ptr %61, align 8, !tbaa !11
  %330 = load i64, ptr %50, align 8, !tbaa !11
  %331 = add nsw i64 %329, %330
  %332 = getelementptr inbounds double, ptr %328, i64 %331
  %333 = load double, ptr %332, align 8, !tbaa !9
  %334 = fmul double %327, %333
  %335 = load ptr, ptr %27, align 8, !tbaa !5
  %336 = load i64, ptr %50, align 8, !tbaa !11
  %337 = getelementptr inbounds double, ptr %335, i64 %336
  %338 = load double, ptr %337, align 8, !tbaa !9
  %339 = fmul double %334, %338
  %340 = load ptr, ptr %42, align 8, !tbaa !5
  %341 = load i64, ptr %59, align 8, !tbaa !11
  %342 = load i64, ptr %50, align 8, !tbaa !11
  %343 = add nsw i64 %341, %342
  %344 = getelementptr inbounds double, ptr %340, i64 %343
  store double %339, ptr %344, align 8, !tbaa !9
  %345 = load ptr, ptr %42, align 8, !tbaa !5
  %346 = load i64, ptr %61, align 8, !tbaa !11
  %347 = load i64, ptr %50, align 8, !tbaa !11
  %348 = add nsw i64 %346, %347
  %349 = getelementptr inbounds double, ptr %345, i64 %348
  %350 = load double, ptr %349, align 8, !tbaa !9
  %351 = fcmp oeq double %350, 0.000000e+00
  br i1 %351, label %352, label %362

352:                                              ; preds = %326
  %353 = load ptr, ptr %29, align 8, !tbaa !5
  %354 = load i64, ptr %50, align 8, !tbaa !11
  %355 = getelementptr inbounds double, ptr %353, i64 %354
  %356 = load double, ptr %355, align 8, !tbaa !9
  %357 = load ptr, ptr %42, align 8, !tbaa !5
  %358 = load i64, ptr %59, align 8, !tbaa !11
  %359 = load i64, ptr %50, align 8, !tbaa !11
  %360 = add nsw i64 %358, %359
  %361 = getelementptr inbounds double, ptr %357, i64 %360
  store double %356, ptr %361, align 8, !tbaa !9
  br label %362

362:                                              ; preds = %352, %326
  %363 = load ptr, ptr %42, align 8, !tbaa !5
  %364 = load i64, ptr %59, align 8, !tbaa !11
  %365 = load i64, ptr %50, align 8, !tbaa !11
  %366 = add nsw i64 %364, %365
  %367 = getelementptr inbounds double, ptr %363, i64 %366
  %368 = load double, ptr %367, align 8, !tbaa !9
  %369 = load ptr, ptr %25, align 8, !tbaa !5
  %370 = load double, ptr %369, align 8, !tbaa !9
  %371 = fsub double %368, %370
  store double %371, ptr %51, align 8, !tbaa !9
  br label %372

372:                                              ; preds = %362
  %373 = load i64, ptr %50, align 8, !tbaa !11
  %374 = add nsw i64 %373, 1
  store i64 %374, ptr %50, align 8, !tbaa !11
  br label %282, !llvm.loop !16

375:                                              ; preds = %282
  %376 = load i64, ptr %53, align 8, !tbaa !11
  %377 = sub nsw i64 %376, 1
  store i64 %377, ptr %43, align 8, !tbaa !11
  %378 = load i64, ptr %52, align 8, !tbaa !11
  store i64 %378, ptr %50, align 8, !tbaa !11
  br label %379

379:                                              ; preds = %463, %375
  %380 = load i64, ptr %50, align 8, !tbaa !11
  %381 = load i64, ptr %43, align 8, !tbaa !11
  %382 = icmp sle i64 %380, %381
  br i1 %382, label %383, label %466

383:                                              ; preds = %379
  %384 = load ptr, ptr %26, align 8, !tbaa !5
  %385 = load i64, ptr %50, align 8, !tbaa !11
  %386 = getelementptr inbounds double, ptr %384, i64 %385
  %387 = load double, ptr %386, align 8, !tbaa !9
  %388 = load double, ptr %51, align 8, !tbaa !9
  %389 = fadd double %387, %388
  store double %389, ptr %60, align 8, !tbaa !9
  %390 = load double, ptr %60, align 8, !tbaa !9
  %391 = fcmp oge double %390, 0.000000e+00
  br i1 %391, label %392, label %394

392:                                              ; preds = %383
  %393 = load double, ptr %60, align 8, !tbaa !9
  br label %397

394:                                              ; preds = %383
  %395 = load double, ptr %60, align 8, !tbaa !9
  %396 = fneg double %395
  br label %397

397:                                              ; preds = %394, %392
  %398 = phi double [ %393, %392 ], [ %396, %394 ]
  %399 = load ptr, ptr %30, align 8, !tbaa !5
  %400 = load double, ptr %399, align 8, !tbaa !9
  %401 = fcmp olt double %398, %400
  br i1 %401, label %402, label %406

402:                                              ; preds = %397
  %403 = load ptr, ptr %30, align 8, !tbaa !5
  %404 = load double, ptr %403, align 8, !tbaa !9
  %405 = fneg double %404
  store double %405, ptr %60, align 8, !tbaa !9
  br label %406

406:                                              ; preds = %402, %397
  %407 = load ptr, ptr %28, align 8, !tbaa !5
  %408 = load i64, ptr %50, align 8, !tbaa !11
  %409 = getelementptr inbounds double, ptr %407, i64 %408
  %410 = load double, ptr %409, align 8, !tbaa !9
  %411 = load double, ptr %60, align 8, !tbaa !9
  %412 = fdiv double %410, %411
  %413 = load ptr, ptr %42, align 8, !tbaa !5
  %414 = load i64, ptr %61, align 8, !tbaa !11
  %415 = load i64, ptr %50, align 8, !tbaa !11
  %416 = add nsw i64 %414, %415
  %417 = getelementptr inbounds double, ptr %413, i64 %416
  store double %412, ptr %417, align 8, !tbaa !9
  %418 = load double, ptr %51, align 8, !tbaa !9
  %419 = load ptr, ptr %42, align 8, !tbaa !5
  %420 = load i64, ptr %61, align 8, !tbaa !11
  %421 = load i64, ptr %50, align 8, !tbaa !11
  %422 = add nsw i64 %420, %421
  %423 = getelementptr inbounds double, ptr %419, i64 %422
  %424 = load double, ptr %423, align 8, !tbaa !9
  %425 = fmul double %418, %424
  %426 = load ptr, ptr %27, align 8, !tbaa !5
  %427 = load i64, ptr %50, align 8, !tbaa !11
  %428 = getelementptr inbounds double, ptr %426, i64 %427
  %429 = load double, ptr %428, align 8, !tbaa !9
  %430 = fmul double %425, %429
  %431 = load ptr, ptr %42, align 8, !tbaa !5
  %432 = load i64, ptr %59, align 8, !tbaa !11
  %433 = load i64, ptr %50, align 8, !tbaa !11
  %434 = add nsw i64 %432, %433
  %435 = getelementptr inbounds double, ptr %431, i64 %434
  store double %430, ptr %435, align 8, !tbaa !9
  %436 = load ptr, ptr %42, align 8, !tbaa !5
  %437 = load i64, ptr %61, align 8, !tbaa !11
  %438 = load i64, ptr %50, align 8, !tbaa !11
  %439 = add nsw i64 %437, %438
  %440 = getelementptr inbounds double, ptr %436, i64 %439
  %441 = load double, ptr %440, align 8, !tbaa !9
  %442 = fcmp oeq double %441, 0.000000e+00
  br i1 %442, label %443, label %453

443:                                              ; preds = %406
  %444 = load ptr, ptr %29, align 8, !tbaa !5
  %445 = load i64, ptr %50, align 8, !tbaa !11
  %446 = getelementptr inbounds double, ptr %444, i64 %445
  %447 = load double, ptr %446, align 8, !tbaa !9
  %448 = load ptr, ptr %42, align 8, !tbaa !5
  %449 = load i64, ptr %59, align 8, !tbaa !11
  %450 = load i64, ptr %50, align 8, !tbaa !11
  %451 = add nsw i64 %449, %450
  %452 = getelementptr inbounds double, ptr %448, i64 %451
  store double %447, ptr %452, align 8, !tbaa !9
  br label %453

453:                                              ; preds = %443, %406
  %454 = load ptr, ptr %42, align 8, !tbaa !5
  %455 = load i64, ptr %59, align 8, !tbaa !11
  %456 = load i64, ptr %50, align 8, !tbaa !11
  %457 = add nsw i64 %455, %456
  %458 = getelementptr inbounds double, ptr %454, i64 %457
  %459 = load double, ptr %458, align 8, !tbaa !9
  %460 = load ptr, ptr %25, align 8, !tbaa !5
  %461 = load double, ptr %460, align 8, !tbaa !9
  %462 = fsub double %459, %461
  store double %462, ptr %51, align 8, !tbaa !9
  br label %463

463:                                              ; preds = %453
  %464 = load i64, ptr %50, align 8, !tbaa !11
  %465 = add nsw i64 %464, 1
  store i64 %465, ptr %50, align 8, !tbaa !11
  br label %379, !llvm.loop !17

466:                                              ; preds = %379
  br label %467

467:                                              ; preds = %466, %263
  store i64 0, ptr %65, align 8, !tbaa !11
  store i64 0, ptr %57, align 8, !tbaa !11
  %468 = load ptr, ptr %26, align 8, !tbaa !5
  %469 = load ptr, ptr %24, align 8, !tbaa !5
  %470 = load i64, ptr %469, align 8, !tbaa !11
  %471 = getelementptr inbounds double, ptr %468, i64 %470
  %472 = load double, ptr %471, align 8, !tbaa !9
  %473 = load ptr, ptr %25, align 8, !tbaa !5
  %474 = load double, ptr %473, align 8, !tbaa !9
  %475 = fsub double %472, %474
  %476 = load ptr, ptr %42, align 8, !tbaa !5
  %477 = load i64, ptr %58, align 8, !tbaa !11
  %478 = load ptr, ptr %24, align 8, !tbaa !5
  %479 = load i64, ptr %478, align 8, !tbaa !11
  %480 = add nsw i64 %477, %479
  %481 = sub nsw i64 %480, 1
  %482 = getelementptr inbounds double, ptr %476, i64 %481
  store double %475, ptr %482, align 8, !tbaa !9
  %483 = load i64, ptr %52, align 8, !tbaa !11
  store i64 %483, ptr %43, align 8, !tbaa !11
  %484 = load ptr, ptr %24, align 8, !tbaa !5
  %485 = load i64, ptr %484, align 8, !tbaa !11
  %486 = sub nsw i64 %485, 1
  store i64 %486, ptr %50, align 8, !tbaa !11
  br label %487

487:                                              ; preds = %543, %467
  %488 = load i64, ptr %50, align 8, !tbaa !11
  %489 = load i64, ptr %43, align 8, !tbaa !11
  %490 = icmp sge i64 %488, %489
  br i1 %490, label %491, label %546

491:                                              ; preds = %487
  %492 = load ptr, ptr %29, align 8, !tbaa !5
  %493 = load i64, ptr %50, align 8, !tbaa !11
  %494 = getelementptr inbounds double, ptr %492, i64 %493
  %495 = load double, ptr %494, align 8, !tbaa !9
  %496 = load ptr, ptr %42, align 8, !tbaa !5
  %497 = load i64, ptr %58, align 8, !tbaa !11
  %498 = load i64, ptr %50, align 8, !tbaa !11
  %499 = add nsw i64 %497, %498
  %500 = getelementptr inbounds double, ptr %496, i64 %499
  %501 = load double, ptr %500, align 8, !tbaa !9
  %502 = fadd double %495, %501
  store double %502, ptr %63, align 8, !tbaa !9
  %503 = load ptr, ptr %26, align 8, !tbaa !5
  %504 = load i64, ptr %50, align 8, !tbaa !11
  %505 = getelementptr inbounds double, ptr %503, i64 %504
  %506 = load double, ptr %505, align 8, !tbaa !9
  %507 = load double, ptr %63, align 8, !tbaa !9
  %508 = fdiv double %506, %507
  store double %508, ptr %55, align 8, !tbaa !9
  %509 = load double, ptr %63, align 8, !tbaa !9
  %510 = fcmp olt double %509, 0.000000e+00
  br i1 %510, label %511, label %514

511:                                              ; preds = %491
  %512 = load i64, ptr %57, align 8, !tbaa !11
  %513 = add nsw i64 %512, 1
  store i64 %513, ptr %57, align 8, !tbaa !11
  br label %514

514:                                              ; preds = %511, %491
  %515 = load ptr, ptr %27, align 8, !tbaa !5
  %516 = load i64, ptr %50, align 8, !tbaa !11
  %517 = getelementptr inbounds double, ptr %515, i64 %516
  %518 = load double, ptr %517, align 8, !tbaa !9
  %519 = load double, ptr %55, align 8, !tbaa !9
  %520 = fmul double %518, %519
  %521 = load ptr, ptr %42, align 8, !tbaa !5
  %522 = load i64, ptr %62, align 8, !tbaa !11
  %523 = load i64, ptr %50, align 8, !tbaa !11
  %524 = add nsw i64 %522, %523
  %525 = getelementptr inbounds double, ptr %521, i64 %524
  store double %520, ptr %525, align 8, !tbaa !9
  %526 = load ptr, ptr %42, align 8, !tbaa !5
  %527 = load i64, ptr %58, align 8, !tbaa !11
  %528 = load i64, ptr %50, align 8, !tbaa !11
  %529 = add nsw i64 %527, %528
  %530 = getelementptr inbounds double, ptr %526, i64 %529
  %531 = load double, ptr %530, align 8, !tbaa !9
  %532 = load double, ptr %55, align 8, !tbaa !9
  %533 = load ptr, ptr %25, align 8, !tbaa !5
  %534 = load double, ptr %533, align 8, !tbaa !9
  %535 = fneg double %534
  %536 = call double @llvm.fmuladd.f64(double %531, double %532, double %535)
  %537 = load ptr, ptr %42, align 8, !tbaa !5
  %538 = load i64, ptr %58, align 8, !tbaa !11
  %539 = load i64, ptr %50, align 8, !tbaa !11
  %540 = add nsw i64 %538, %539
  %541 = sub nsw i64 %540, 1
  %542 = getelementptr inbounds double, ptr %537, i64 %541
  store double %536, ptr %542, align 8, !tbaa !9
  br label %543

543:                                              ; preds = %514
  %544 = load i64, ptr %50, align 8, !tbaa !11
  %545 = add nsw i64 %544, -1
  store i64 %545, ptr %50, align 8, !tbaa !11
  br label %487, !llvm.loop !18

546:                                              ; preds = %487
  %547 = load ptr, ptr %42, align 8, !tbaa !5
  %548 = load i64, ptr %58, align 8, !tbaa !11
  %549 = load i64, ptr %52, align 8, !tbaa !11
  %550 = add nsw i64 %548, %549
  %551 = sub nsw i64 %550, 1
  %552 = getelementptr inbounds double, ptr %547, i64 %551
  %553 = load double, ptr %552, align 8, !tbaa !9
  store double %553, ptr %55, align 8, !tbaa !9
  %554 = call i64 @disnan_(ptr noundef %55)
  store i64 %554, ptr %65, align 8, !tbaa !11
  %555 = load i64, ptr %65, align 8, !tbaa !11
  %556 = icmp ne i64 %555, 0
  br i1 %556, label %557, label %656

557:                                              ; preds = %546
  store i64 0, ptr %57, align 8, !tbaa !11
  %558 = load i64, ptr %52, align 8, !tbaa !11
  store i64 %558, ptr %43, align 8, !tbaa !11
  %559 = load ptr, ptr %24, align 8, !tbaa !5
  %560 = load i64, ptr %559, align 8, !tbaa !11
  %561 = sub nsw i64 %560, 1
  store i64 %561, ptr %50, align 8, !tbaa !11
  br label %562

562:                                              ; preds = %652, %557
  %563 = load i64, ptr %50, align 8, !tbaa !11
  %564 = load i64, ptr %43, align 8, !tbaa !11
  %565 = icmp sge i64 %563, %564
  br i1 %565, label %566, label %655

566:                                              ; preds = %562
  %567 = load ptr, ptr %29, align 8, !tbaa !5
  %568 = load i64, ptr %50, align 8, !tbaa !11
  %569 = getelementptr inbounds double, ptr %567, i64 %568
  %570 = load double, ptr %569, align 8, !tbaa !9
  %571 = load ptr, ptr %42, align 8, !tbaa !5
  %572 = load i64, ptr %58, align 8, !tbaa !11
  %573 = load i64, ptr %50, align 8, !tbaa !11
  %574 = add nsw i64 %572, %573
  %575 = getelementptr inbounds double, ptr %571, i64 %574
  %576 = load double, ptr %575, align 8, !tbaa !9
  %577 = fadd double %570, %576
  store double %577, ptr %63, align 8, !tbaa !9
  %578 = load double, ptr %63, align 8, !tbaa !9
  %579 = fcmp oge double %578, 0.000000e+00
  br i1 %579, label %580, label %582

580:                                              ; preds = %566
  %581 = load double, ptr %63, align 8, !tbaa !9
  br label %585

582:                                              ; preds = %566
  %583 = load double, ptr %63, align 8, !tbaa !9
  %584 = fneg double %583
  br label %585

585:                                              ; preds = %582, %580
  %586 = phi double [ %581, %580 ], [ %584, %582 ]
  %587 = load ptr, ptr %30, align 8, !tbaa !5
  %588 = load double, ptr %587, align 8, !tbaa !9
  %589 = fcmp olt double %586, %588
  br i1 %589, label %590, label %594

590:                                              ; preds = %585
  %591 = load ptr, ptr %30, align 8, !tbaa !5
  %592 = load double, ptr %591, align 8, !tbaa !9
  %593 = fneg double %592
  store double %593, ptr %63, align 8, !tbaa !9
  br label %594

594:                                              ; preds = %590, %585
  %595 = load ptr, ptr %26, align 8, !tbaa !5
  %596 = load i64, ptr %50, align 8, !tbaa !11
  %597 = getelementptr inbounds double, ptr %595, i64 %596
  %598 = load double, ptr %597, align 8, !tbaa !9
  %599 = load double, ptr %63, align 8, !tbaa !9
  %600 = fdiv double %598, %599
  store double %600, ptr %55, align 8, !tbaa !9
  %601 = load double, ptr %63, align 8, !tbaa !9
  %602 = fcmp olt double %601, 0.000000e+00
  br i1 %602, label %603, label %606

603:                                              ; preds = %594
  %604 = load i64, ptr %57, align 8, !tbaa !11
  %605 = add nsw i64 %604, 1
  store i64 %605, ptr %57, align 8, !tbaa !11
  br label %606

606:                                              ; preds = %603, %594
  %607 = load ptr, ptr %27, align 8, !tbaa !5
  %608 = load i64, ptr %50, align 8, !tbaa !11
  %609 = getelementptr inbounds double, ptr %607, i64 %608
  %610 = load double, ptr %609, align 8, !tbaa !9
  %611 = load double, ptr %55, align 8, !tbaa !9
  %612 = fmul double %610, %611
  %613 = load ptr, ptr %42, align 8, !tbaa !5
  %614 = load i64, ptr %62, align 8, !tbaa !11
  %615 = load i64, ptr %50, align 8, !tbaa !11
  %616 = add nsw i64 %614, %615
  %617 = getelementptr inbounds double, ptr %613, i64 %616
  store double %612, ptr %617, align 8, !tbaa !9
  %618 = load ptr, ptr %42, align 8, !tbaa !5
  %619 = load i64, ptr %58, align 8, !tbaa !11
  %620 = load i64, ptr %50, align 8, !tbaa !11
  %621 = add nsw i64 %619, %620
  %622 = getelementptr inbounds double, ptr %618, i64 %621
  %623 = load double, ptr %622, align 8, !tbaa !9
  %624 = load double, ptr %55, align 8, !tbaa !9
  %625 = load ptr, ptr %25, align 8, !tbaa !5
  %626 = load double, ptr %625, align 8, !tbaa !9
  %627 = fneg double %626
  %628 = call double @llvm.fmuladd.f64(double %623, double %624, double %627)
  %629 = load ptr, ptr %42, align 8, !tbaa !5
  %630 = load i64, ptr %58, align 8, !tbaa !11
  %631 = load i64, ptr %50, align 8, !tbaa !11
  %632 = add nsw i64 %630, %631
  %633 = sub nsw i64 %632, 1
  %634 = getelementptr inbounds double, ptr %629, i64 %633
  store double %628, ptr %634, align 8, !tbaa !9
  %635 = load double, ptr %55, align 8, !tbaa !9
  %636 = fcmp oeq double %635, 0.000000e+00
  br i1 %636, label %637, label %651

637:                                              ; preds = %606
  %638 = load ptr, ptr %26, align 8, !tbaa !5
  %639 = load i64, ptr %50, align 8, !tbaa !11
  %640 = getelementptr inbounds double, ptr %638, i64 %639
  %641 = load double, ptr %640, align 8, !tbaa !9
  %642 = load ptr, ptr %25, align 8, !tbaa !5
  %643 = load double, ptr %642, align 8, !tbaa !9
  %644 = fsub double %641, %643
  %645 = load ptr, ptr %42, align 8, !tbaa !5
  %646 = load i64, ptr %58, align 8, !tbaa !11
  %647 = load i64, ptr %50, align 8, !tbaa !11
  %648 = add nsw i64 %646, %647
  %649 = sub nsw i64 %648, 1
  %650 = getelementptr inbounds double, ptr %645, i64 %649
  store double %644, ptr %650, align 8, !tbaa !9
  br label %651

651:                                              ; preds = %637, %606
  br label %652

652:                                              ; preds = %651
  %653 = load i64, ptr %50, align 8, !tbaa !11
  %654 = add nsw i64 %653, -1
  store i64 %654, ptr %50, align 8, !tbaa !11
  br label %562, !llvm.loop !19

655:                                              ; preds = %562
  br label %656

656:                                              ; preds = %655, %546
  %657 = load ptr, ptr %42, align 8, !tbaa !5
  %658 = load i64, ptr %59, align 8, !tbaa !11
  %659 = load i64, ptr %52, align 8, !tbaa !11
  %660 = add nsw i64 %658, %659
  %661 = sub nsw i64 %660, 1
  %662 = getelementptr inbounds double, ptr %657, i64 %661
  %663 = load double, ptr %662, align 8, !tbaa !9
  %664 = load ptr, ptr %42, align 8, !tbaa !5
  %665 = load i64, ptr %58, align 8, !tbaa !11
  %666 = load i64, ptr %52, align 8, !tbaa !11
  %667 = add nsw i64 %665, %666
  %668 = sub nsw i64 %667, 1
  %669 = getelementptr inbounds double, ptr %664, i64 %668
  %670 = load double, ptr %669, align 8, !tbaa !9
  %671 = fadd double %663, %670
  %672 = load ptr, ptr %36, align 8, !tbaa !5
  store double %671, ptr %672, align 8, !tbaa !9
  %673 = load ptr, ptr %36, align 8, !tbaa !5
  %674 = load double, ptr %673, align 8, !tbaa !9
  %675 = fcmp olt double %674, 0.000000e+00
  br i1 %675, label %676, label %679

676:                                              ; preds = %656
  %677 = load i64, ptr %56, align 8, !tbaa !11
  %678 = add nsw i64 %677, 1
  store i64 %678, ptr %56, align 8, !tbaa !11
  br label %679

679:                                              ; preds = %676, %656
  %680 = load ptr, ptr %33, align 8, !tbaa !5
  %681 = load i64, ptr %680, align 8, !tbaa !11
  %682 = icmp ne i64 %681, 0
  br i1 %682, label %683, label %688

683:                                              ; preds = %679
  %684 = load i64, ptr %56, align 8, !tbaa !11
  %685 = load i64, ptr %57, align 8, !tbaa !11
  %686 = add nsw i64 %684, %685
  %687 = load ptr, ptr %34, align 8, !tbaa !5
  store i64 %686, ptr %687, align 8, !tbaa !11
  br label %690

688:                                              ; preds = %679
  %689 = load ptr, ptr %34, align 8, !tbaa !5
  store i64 -1, ptr %689, align 8, !tbaa !11
  br label %690

690:                                              ; preds = %688, %683
  %691 = load ptr, ptr %36, align 8, !tbaa !5
  %692 = load double, ptr %691, align 8, !tbaa !9
  %693 = fcmp oge double %692, 0.000000e+00
  br i1 %693, label %694, label %697

694:                                              ; preds = %690
  %695 = load ptr, ptr %36, align 8, !tbaa !5
  %696 = load double, ptr %695, align 8, !tbaa !9
  br label %701

697:                                              ; preds = %690
  %698 = load ptr, ptr %36, align 8, !tbaa !5
  %699 = load double, ptr %698, align 8, !tbaa !9
  %700 = fneg double %699
  br label %701

701:                                              ; preds = %697, %694
  %702 = phi double [ %696, %694 ], [ %700, %697 ]
  %703 = fcmp oeq double %702, 0.000000e+00
  br i1 %703, label %704, label %715

704:                                              ; preds = %701
  %705 = load double, ptr %54, align 8, !tbaa !9
  %706 = load ptr, ptr %42, align 8, !tbaa !5
  %707 = load i64, ptr %59, align 8, !tbaa !11
  %708 = load i64, ptr %52, align 8, !tbaa !11
  %709 = add nsw i64 %707, %708
  %710 = sub nsw i64 %709, 1
  %711 = getelementptr inbounds double, ptr %706, i64 %710
  %712 = load double, ptr %711, align 8, !tbaa !9
  %713 = fmul double %705, %712
  %714 = load ptr, ptr %36, align 8, !tbaa !5
  store double %713, ptr %714, align 8, !tbaa !9
  br label %715

715:                                              ; preds = %704, %701
  %716 = load i64, ptr %52, align 8, !tbaa !11
  %717 = load ptr, ptr %37, align 8, !tbaa !5
  store i64 %716, ptr %717, align 8, !tbaa !11
  %718 = load i64, ptr %53, align 8, !tbaa !11
  %719 = sub nsw i64 %718, 1
  store i64 %719, ptr %43, align 8, !tbaa !11
  %720 = load i64, ptr %52, align 8, !tbaa !11
  store i64 %720, ptr %50, align 8, !tbaa !11
  br label %721

721:                                              ; preds = %780, %715
  %722 = load i64, ptr %50, align 8, !tbaa !11
  %723 = load i64, ptr %43, align 8, !tbaa !11
  %724 = icmp sle i64 %722, %723
  br i1 %724, label %725, label %783

725:                                              ; preds = %721
  %726 = load ptr, ptr %42, align 8, !tbaa !5
  %727 = load i64, ptr %59, align 8, !tbaa !11
  %728 = load i64, ptr %50, align 8, !tbaa !11
  %729 = add nsw i64 %727, %728
  %730 = getelementptr inbounds double, ptr %726, i64 %729
  %731 = load double, ptr %730, align 8, !tbaa !9
  %732 = load ptr, ptr %42, align 8, !tbaa !5
  %733 = load i64, ptr %58, align 8, !tbaa !11
  %734 = load i64, ptr %50, align 8, !tbaa !11
  %735 = add nsw i64 %733, %734
  %736 = getelementptr inbounds double, ptr %732, i64 %735
  %737 = load double, ptr %736, align 8, !tbaa !9
  %738 = fadd double %731, %737
  store double %738, ptr %55, align 8, !tbaa !9
  %739 = load double, ptr %55, align 8, !tbaa !9
  %740 = fcmp oeq double %739, 0.000000e+00
  br i1 %740, label %741, label %750

741:                                              ; preds = %725
  %742 = load double, ptr %54, align 8, !tbaa !9
  %743 = load ptr, ptr %42, align 8, !tbaa !5
  %744 = load i64, ptr %59, align 8, !tbaa !11
  %745 = load i64, ptr %50, align 8, !tbaa !11
  %746 = add nsw i64 %744, %745
  %747 = getelementptr inbounds double, ptr %743, i64 %746
  %748 = load double, ptr %747, align 8, !tbaa !9
  %749 = fmul double %742, %748
  store double %749, ptr %55, align 8, !tbaa !9
  br label %750

750:                                              ; preds = %741, %725
  %751 = load double, ptr %55, align 8, !tbaa !9
  %752 = fcmp oge double %751, 0.000000e+00
  br i1 %752, label %753, label %755

753:                                              ; preds = %750
  %754 = load double, ptr %55, align 8, !tbaa !9
  br label %758

755:                                              ; preds = %750
  %756 = load double, ptr %55, align 8, !tbaa !9
  %757 = fneg double %756
  br label %758

758:                                              ; preds = %755, %753
  %759 = phi double [ %754, %753 ], [ %757, %755 ]
  %760 = load ptr, ptr %36, align 8, !tbaa !5
  %761 = load double, ptr %760, align 8, !tbaa !9
  %762 = fcmp oge double %761, 0.000000e+00
  br i1 %762, label %763, label %766

763:                                              ; preds = %758
  %764 = load ptr, ptr %36, align 8, !tbaa !5
  %765 = load double, ptr %764, align 8, !tbaa !9
  br label %770

766:                                              ; preds = %758
  %767 = load ptr, ptr %36, align 8, !tbaa !5
  %768 = load double, ptr %767, align 8, !tbaa !9
  %769 = fneg double %768
  br label %770

770:                                              ; preds = %766, %763
  %771 = phi double [ %765, %763 ], [ %769, %766 ]
  %772 = fcmp ole double %759, %771
  br i1 %772, label %773, label %779

773:                                              ; preds = %770
  %774 = load double, ptr %55, align 8, !tbaa !9
  %775 = load ptr, ptr %36, align 8, !tbaa !5
  store double %774, ptr %775, align 8, !tbaa !9
  %776 = load i64, ptr %50, align 8, !tbaa !11
  %777 = add nsw i64 %776, 1
  %778 = load ptr, ptr %37, align 8, !tbaa !5
  store i64 %777, ptr %778, align 8, !tbaa !11
  br label %779

779:                                              ; preds = %773, %770
  br label %780

780:                                              ; preds = %779
  %781 = load i64, ptr %50, align 8, !tbaa !11
  %782 = add nsw i64 %781, 1
  store i64 %782, ptr %50, align 8, !tbaa !11
  br label %721, !llvm.loop !20

783:                                              ; preds = %721
  %784 = load ptr, ptr %23, align 8, !tbaa !5
  %785 = load i64, ptr %784, align 8, !tbaa !11
  %786 = load ptr, ptr %38, align 8, !tbaa !5
  %787 = getelementptr inbounds i64, ptr %786, i64 1
  store i64 %785, ptr %787, align 8, !tbaa !11
  %788 = load ptr, ptr %24, align 8, !tbaa !5
  %789 = load i64, ptr %788, align 8, !tbaa !11
  %790 = load ptr, ptr %38, align 8, !tbaa !5
  %791 = getelementptr inbounds i64, ptr %790, i64 2
  store i64 %789, ptr %791, align 8, !tbaa !11
  %792 = load ptr, ptr %37, align 8, !tbaa !5
  %793 = load i64, ptr %792, align 8, !tbaa !11
  store i64 %793, ptr %43, align 8, !tbaa !11
  %794 = load ptr, ptr %32, align 8, !tbaa !5
  %795 = load i64, ptr %43, align 8, !tbaa !11
  %796 = getelementptr inbounds %struct.doublecomplex, ptr %794, i64 %795
  %797 = getelementptr inbounds %struct.doublecomplex, ptr %796, i32 0, i32 0
  store double 1.000000e+00, ptr %797, align 8, !tbaa !21
  %798 = load ptr, ptr %32, align 8, !tbaa !5
  %799 = load i64, ptr %43, align 8, !tbaa !11
  %800 = getelementptr inbounds %struct.doublecomplex, ptr %798, i64 %799
  %801 = getelementptr inbounds %struct.doublecomplex, ptr %800, i32 0, i32 1
  store double 0.000000e+00, ptr %801, align 8, !tbaa !23
  %802 = load ptr, ptr %35, align 8, !tbaa !5
  store double 1.000000e+00, ptr %802, align 8, !tbaa !9
  %803 = load i64, ptr %64, align 8, !tbaa !11
  %804 = icmp ne i64 %803, 0
  br i1 %804, label %968, label %805

805:                                              ; preds = %783
  %806 = load i64, ptr %65, align 8, !tbaa !11
  %807 = icmp ne i64 %806, 0
  br i1 %807, label %968, label %808

808:                                              ; preds = %805
  %809 = load ptr, ptr %23, align 8, !tbaa !5
  %810 = load i64, ptr %809, align 8, !tbaa !11
  store i64 %810, ptr %43, align 8, !tbaa !11
  %811 = load ptr, ptr %37, align 8, !tbaa !5
  %812 = load i64, ptr %811, align 8, !tbaa !11
  %813 = sub nsw i64 %812, 1
  store i64 %813, ptr %50, align 8, !tbaa !11
  br label %814

814:                                              ; preds = %963, %808
  %815 = load i64, ptr %50, align 8, !tbaa !11
  %816 = load i64, ptr %43, align 8, !tbaa !11
  %817 = icmp sge i64 %815, %816
  br i1 %817, label %818, label %966

818:                                              ; preds = %814
  %819 = load i64, ptr %50, align 8, !tbaa !11
  store i64 %819, ptr %44, align 8, !tbaa !11
  %820 = load i64, ptr %61, align 8, !tbaa !11
  %821 = load i64, ptr %50, align 8, !tbaa !11
  %822 = add nsw i64 %820, %821
  store i64 %822, ptr %45, align 8, !tbaa !11
  %823 = load i64, ptr %50, align 8, !tbaa !11
  %824 = add nsw i64 %823, 1
  store i64 %824, ptr %46, align 8, !tbaa !11
  %825 = load ptr, ptr %42, align 8, !tbaa !5
  %826 = load i64, ptr %45, align 8, !tbaa !11
  %827 = getelementptr inbounds double, ptr %825, i64 %826
  %828 = load double, ptr %827, align 8, !tbaa !9
  %829 = load ptr, ptr %32, align 8, !tbaa !5
  %830 = load i64, ptr %46, align 8, !tbaa !11
  %831 = getelementptr inbounds %struct.doublecomplex, ptr %829, i64 %830
  %832 = getelementptr inbounds %struct.doublecomplex, ptr %831, i32 0, i32 0
  %833 = load double, ptr %832, align 8, !tbaa !21
  %834 = fmul double %828, %833
  %835 = getelementptr inbounds %struct.doublecomplex, ptr %49, i32 0, i32 0
  store double %834, ptr %835, align 8, !tbaa !21
  %836 = load ptr, ptr %42, align 8, !tbaa !5
  %837 = load i64, ptr %45, align 8, !tbaa !11
  %838 = getelementptr inbounds double, ptr %836, i64 %837
  %839 = load double, ptr %838, align 8, !tbaa !9
  %840 = load ptr, ptr %32, align 8, !tbaa !5
  %841 = load i64, ptr %46, align 8, !tbaa !11
  %842 = getelementptr inbounds %struct.doublecomplex, ptr %840, i64 %841
  %843 = getelementptr inbounds %struct.doublecomplex, ptr %842, i32 0, i32 1
  %844 = load double, ptr %843, align 8, !tbaa !23
  %845 = fmul double %839, %844
  %846 = getelementptr inbounds %struct.doublecomplex, ptr %49, i32 0, i32 1
  store double %845, ptr %846, align 8, !tbaa !23
  %847 = getelementptr inbounds %struct.doublecomplex, ptr %49, i32 0, i32 0
  %848 = load double, ptr %847, align 8, !tbaa !21
  %849 = fneg double %848
  %850 = getelementptr inbounds %struct.doublecomplex, ptr %48, i32 0, i32 0
  store double %849, ptr %850, align 8, !tbaa !21
  %851 = getelementptr inbounds %struct.doublecomplex, ptr %49, i32 0, i32 1
  %852 = load double, ptr %851, align 8, !tbaa !23
  %853 = fneg double %852
  %854 = getelementptr inbounds %struct.doublecomplex, ptr %48, i32 0, i32 1
  store double %853, ptr %854, align 8, !tbaa !23
  %855 = getelementptr inbounds %struct.doublecomplex, ptr %48, i32 0, i32 0
  %856 = load double, ptr %855, align 8, !tbaa !21
  %857 = load ptr, ptr %32, align 8, !tbaa !5
  %858 = load i64, ptr %44, align 8, !tbaa !11
  %859 = getelementptr inbounds %struct.doublecomplex, ptr %857, i64 %858
  %860 = getelementptr inbounds %struct.doublecomplex, ptr %859, i32 0, i32 0
  store double %856, ptr %860, align 8, !tbaa !21
  %861 = getelementptr inbounds %struct.doublecomplex, ptr %48, i32 0, i32 1
  %862 = load double, ptr %861, align 8, !tbaa !23
  %863 = load ptr, ptr %32, align 8, !tbaa !5
  %864 = load i64, ptr %44, align 8, !tbaa !11
  %865 = getelementptr inbounds %struct.doublecomplex, ptr %863, i64 %864
  %866 = getelementptr inbounds %struct.doublecomplex, ptr %865, i32 0, i32 1
  store double %862, ptr %866, align 8, !tbaa !23
  %867 = load ptr, ptr %32, align 8, !tbaa !5
  %868 = load i64, ptr %50, align 8, !tbaa !11
  %869 = getelementptr inbounds %struct.doublecomplex, ptr %867, i64 %868
  %870 = call double @z_abs(ptr noundef %869)
  %871 = load ptr, ptr %32, align 8, !tbaa !5
  %872 = load i64, ptr %50, align 8, !tbaa !11
  %873 = add nsw i64 %872, 1
  %874 = getelementptr inbounds %struct.doublecomplex, ptr %871, i64 %873
  %875 = call double @z_abs(ptr noundef %874)
  %876 = fadd double %870, %875
  %877 = load ptr, ptr %28, align 8, !tbaa !5
  %878 = load i64, ptr %50, align 8, !tbaa !11
  %879 = getelementptr inbounds double, ptr %877, i64 %878
  %880 = load double, ptr %879, align 8, !tbaa !9
  store double %880, ptr %47, align 8, !tbaa !9
  %881 = load double, ptr %47, align 8, !tbaa !9
  %882 = fcmp oge double %881, 0.000000e+00
  br i1 %882, label %883, label %885

883:                                              ; preds = %818
  %884 = load double, ptr %47, align 8, !tbaa !9
  br label %888

885:                                              ; preds = %818
  %886 = load double, ptr %47, align 8, !tbaa !9
  %887 = fneg double %886
  br label %888

888:                                              ; preds = %885, %883
  %889 = phi double [ %884, %883 ], [ %887, %885 ]
  %890 = fmul double %876, %889
  %891 = load ptr, ptr %31, align 8, !tbaa !5
  %892 = load double, ptr %891, align 8, !tbaa !9
  %893 = fcmp olt double %890, %892
  br i1 %893, label %894, label %908

894:                                              ; preds = %888
  %895 = load i64, ptr %50, align 8, !tbaa !11
  store i64 %895, ptr %44, align 8, !tbaa !11
  %896 = load ptr, ptr %32, align 8, !tbaa !5
  %897 = load i64, ptr %44, align 8, !tbaa !11
  %898 = getelementptr inbounds %struct.doublecomplex, ptr %896, i64 %897
  %899 = getelementptr inbounds %struct.doublecomplex, ptr %898, i32 0, i32 0
  store double 0.000000e+00, ptr %899, align 8, !tbaa !21
  %900 = load ptr, ptr %32, align 8, !tbaa !5
  %901 = load i64, ptr %44, align 8, !tbaa !11
  %902 = getelementptr inbounds %struct.doublecomplex, ptr %900, i64 %901
  %903 = getelementptr inbounds %struct.doublecomplex, ptr %902, i32 0, i32 1
  store double 0.000000e+00, ptr %903, align 8, !tbaa !23
  %904 = load i64, ptr %50, align 8, !tbaa !11
  %905 = add nsw i64 %904, 1
  %906 = load ptr, ptr %38, align 8, !tbaa !5
  %907 = getelementptr inbounds i64, ptr %906, i64 1
  store i64 %905, ptr %907, align 8, !tbaa !11
  br label %967

908:                                              ; preds = %888
  %909 = load i64, ptr %50, align 8, !tbaa !11
  store i64 %909, ptr %44, align 8, !tbaa !11
  %910 = load i64, ptr %50, align 8, !tbaa !11
  store i64 %910, ptr %45, align 8, !tbaa !11
  %911 = load ptr, ptr %32, align 8, !tbaa !5
  %912 = load i64, ptr %44, align 8, !tbaa !11
  %913 = getelementptr inbounds %struct.doublecomplex, ptr %911, i64 %912
  %914 = getelementptr inbounds %struct.doublecomplex, ptr %913, i32 0, i32 0
  %915 = load double, ptr %914, align 8, !tbaa !21
  %916 = load ptr, ptr %32, align 8, !tbaa !5
  %917 = load i64, ptr %45, align 8, !tbaa !11
  %918 = getelementptr inbounds %struct.doublecomplex, ptr %916, i64 %917
  %919 = getelementptr inbounds %struct.doublecomplex, ptr %918, i32 0, i32 0
  %920 = load double, ptr %919, align 8, !tbaa !21
  %921 = load ptr, ptr %32, align 8, !tbaa !5
  %922 = load i64, ptr %44, align 8, !tbaa !11
  %923 = getelementptr inbounds %struct.doublecomplex, ptr %921, i64 %922
  %924 = getelementptr inbounds %struct.doublecomplex, ptr %923, i32 0, i32 1
  %925 = load double, ptr %924, align 8, !tbaa !23
  %926 = load ptr, ptr %32, align 8, !tbaa !5
  %927 = load i64, ptr %45, align 8, !tbaa !11
  %928 = getelementptr inbounds %struct.doublecomplex, ptr %926, i64 %927
  %929 = getelementptr inbounds %struct.doublecomplex, ptr %928, i32 0, i32 1
  %930 = load double, ptr %929, align 8, !tbaa !23
  %931 = fmul double %925, %930
  %932 = fneg double %931
  %933 = call double @llvm.fmuladd.f64(double %915, double %920, double %932)
  %934 = getelementptr inbounds %struct.doublecomplex, ptr %48, i32 0, i32 0
  store double %933, ptr %934, align 8, !tbaa !21
  %935 = load ptr, ptr %32, align 8, !tbaa !5
  %936 = load i64, ptr %44, align 8, !tbaa !11
  %937 = getelementptr inbounds %struct.doublecomplex, ptr %935, i64 %936
  %938 = getelementptr inbounds %struct.doublecomplex, ptr %937, i32 0, i32 0
  %939 = load double, ptr %938, align 8, !tbaa !21
  %940 = load ptr, ptr %32, align 8, !tbaa !5
  %941 = load i64, ptr %45, align 8, !tbaa !11
  %942 = getelementptr inbounds %struct.doublecomplex, ptr %940, i64 %941
  %943 = getelementptr inbounds %struct.doublecomplex, ptr %942, i32 0, i32 1
  %944 = load double, ptr %943, align 8, !tbaa !23
  %945 = load ptr, ptr %32, align 8, !tbaa !5
  %946 = load i64, ptr %44, align 8, !tbaa !11
  %947 = getelementptr inbounds %struct.doublecomplex, ptr %945, i64 %946
  %948 = getelementptr inbounds %struct.doublecomplex, ptr %947, i32 0, i32 1
  %949 = load double, ptr %948, align 8, !tbaa !23
  %950 = load ptr, ptr %32, align 8, !tbaa !5
  %951 = load i64, ptr %45, align 8, !tbaa !11
  %952 = getelementptr inbounds %struct.doublecomplex, ptr %950, i64 %951
  %953 = getelementptr inbounds %struct.doublecomplex, ptr %952, i32 0, i32 0
  %954 = load double, ptr %953, align 8, !tbaa !21
  %955 = fmul double %949, %954
  %956 = call double @llvm.fmuladd.f64(double %939, double %944, double %955)
  %957 = getelementptr inbounds %struct.doublecomplex, ptr %48, i32 0, i32 1
  store double %956, ptr %957, align 8, !tbaa !23
  %958 = getelementptr inbounds %struct.doublecomplex, ptr %48, i32 0, i32 0
  %959 = load double, ptr %958, align 8, !tbaa !21
  %960 = load ptr, ptr %35, align 8, !tbaa !5
  %961 = load double, ptr %960, align 8, !tbaa !9
  %962 = fadd double %961, %959
  store double %962, ptr %960, align 8, !tbaa !9
  br label %963

963:                                              ; preds = %908
  %964 = load i64, ptr %50, align 8, !tbaa !11
  %965 = add nsw i64 %964, -1
  store i64 %965, ptr %50, align 8, !tbaa !11
  br label %814, !llvm.loop !24

966:                                              ; preds = %814
  br label %967

967:                                              ; preds = %966, %894
  br label %1188

968:                                              ; preds = %805, %783
  %969 = load ptr, ptr %23, align 8, !tbaa !5
  %970 = load i64, ptr %969, align 8, !tbaa !11
  store i64 %970, ptr %43, align 8, !tbaa !11
  %971 = load ptr, ptr %37, align 8, !tbaa !5
  %972 = load i64, ptr %971, align 8, !tbaa !11
  %973 = sub nsw i64 %972, 1
  store i64 %973, ptr %50, align 8, !tbaa !11
  br label %974

974:                                              ; preds = %1183, %968
  %975 = load i64, ptr %50, align 8, !tbaa !11
  %976 = load i64, ptr %43, align 8, !tbaa !11
  %977 = icmp sge i64 %975, %976
  br i1 %977, label %978, label %1186

978:                                              ; preds = %974
  %979 = load i64, ptr %50, align 8, !tbaa !11
  %980 = add nsw i64 %979, 1
  store i64 %980, ptr %44, align 8, !tbaa !11
  %981 = load ptr, ptr %32, align 8, !tbaa !5
  %982 = load i64, ptr %44, align 8, !tbaa !11
  %983 = getelementptr inbounds %struct.doublecomplex, ptr %981, i64 %982
  %984 = getelementptr inbounds %struct.doublecomplex, ptr %983, i32 0, i32 0
  %985 = load double, ptr %984, align 8, !tbaa !21
  %986 = fcmp oeq double %985, 0.000000e+00
  br i1 %986, label %987, label %1037

987:                                              ; preds = %978
  %988 = load ptr, ptr %32, align 8, !tbaa !5
  %989 = load i64, ptr %44, align 8, !tbaa !11
  %990 = getelementptr inbounds %struct.doublecomplex, ptr %988, i64 %989
  %991 = getelementptr inbounds %struct.doublecomplex, ptr %990, i32 0, i32 1
  %992 = load double, ptr %991, align 8, !tbaa !23
  %993 = fcmp oeq double %992, 0.000000e+00
  br i1 %993, label %994, label %1037

994:                                              ; preds = %987
  %995 = load i64, ptr %50, align 8, !tbaa !11
  store i64 %995, ptr %44, align 8, !tbaa !11
  %996 = load ptr, ptr %28, align 8, !tbaa !5
  %997 = load i64, ptr %50, align 8, !tbaa !11
  %998 = add nsw i64 %997, 1
  %999 = getelementptr inbounds double, ptr %996, i64 %998
  %1000 = load double, ptr %999, align 8, !tbaa !9
  %1001 = load ptr, ptr %28, align 8, !tbaa !5
  %1002 = load i64, ptr %50, align 8, !tbaa !11
  %1003 = getelementptr inbounds double, ptr %1001, i64 %1002
  %1004 = load double, ptr %1003, align 8, !tbaa !9
  %1005 = fdiv double %1000, %1004
  %1006 = fneg double %1005
  store double %1006, ptr %47, align 8, !tbaa !9
  %1007 = load i64, ptr %50, align 8, !tbaa !11
  %1008 = add nsw i64 %1007, 2
  store i64 %1008, ptr %45, align 8, !tbaa !11
  %1009 = load double, ptr %47, align 8, !tbaa !9
  %1010 = load ptr, ptr %32, align 8, !tbaa !5
  %1011 = load i64, ptr %45, align 8, !tbaa !11
  %1012 = getelementptr inbounds %struct.doublecomplex, ptr %1010, i64 %1011
  %1013 = getelementptr inbounds %struct.doublecomplex, ptr %1012, i32 0, i32 0
  %1014 = load double, ptr %1013, align 8, !tbaa !21
  %1015 = fmul double %1009, %1014
  %1016 = getelementptr inbounds %struct.doublecomplex, ptr %48, i32 0, i32 0
  store double %1015, ptr %1016, align 8, !tbaa !21
  %1017 = load double, ptr %47, align 8, !tbaa !9
  %1018 = load ptr, ptr %32, align 8, !tbaa !5
  %1019 = load i64, ptr %45, align 8, !tbaa !11
  %1020 = getelementptr inbounds %struct.doublecomplex, ptr %1018, i64 %1019
  %1021 = getelementptr inbounds %struct.doublecomplex, ptr %1020, i32 0, i32 1
  %1022 = load double, ptr %1021, align 8, !tbaa !23
  %1023 = fmul double %1017, %1022
  %1024 = getelementptr inbounds %struct.doublecomplex, ptr %48, i32 0, i32 1
  store double %1023, ptr %1024, align 8, !tbaa !23
  %1025 = getelementptr inbounds %struct.doublecomplex, ptr %48, i32 0, i32 0
  %1026 = load double, ptr %1025, align 8, !tbaa !21
  %1027 = load ptr, ptr %32, align 8, !tbaa !5
  %1028 = load i64, ptr %44, align 8, !tbaa !11
  %1029 = getelementptr inbounds %struct.doublecomplex, ptr %1027, i64 %1028
  %1030 = getelementptr inbounds %struct.doublecomplex, ptr %1029, i32 0, i32 0
  store double %1026, ptr %1030, align 8, !tbaa !21
  %1031 = getelementptr inbounds %struct.doublecomplex, ptr %48, i32 0, i32 1
  %1032 = load double, ptr %1031, align 8, !tbaa !23
  %1033 = load ptr, ptr %32, align 8, !tbaa !5
  %1034 = load i64, ptr %44, align 8, !tbaa !11
  %1035 = getelementptr inbounds %struct.doublecomplex, ptr %1033, i64 %1034
  %1036 = getelementptr inbounds %struct.doublecomplex, ptr %1035, i32 0, i32 1
  store double %1032, ptr %1036, align 8, !tbaa !23
  br label %1086

1037:                                             ; preds = %987, %978
  %1038 = load i64, ptr %50, align 8, !tbaa !11
  store i64 %1038, ptr %44, align 8, !tbaa !11
  %1039 = load i64, ptr %61, align 8, !tbaa !11
  %1040 = load i64, ptr %50, align 8, !tbaa !11
  %1041 = add nsw i64 %1039, %1040
  store i64 %1041, ptr %45, align 8, !tbaa !11
  %1042 = load i64, ptr %50, align 8, !tbaa !11
  %1043 = add nsw i64 %1042, 1
  store i64 %1043, ptr %46, align 8, !tbaa !11
  %1044 = load ptr, ptr %42, align 8, !tbaa !5
  %1045 = load i64, ptr %45, align 8, !tbaa !11
  %1046 = getelementptr inbounds double, ptr %1044, i64 %1045
  %1047 = load double, ptr %1046, align 8, !tbaa !9
  %1048 = load ptr, ptr %32, align 8, !tbaa !5
  %1049 = load i64, ptr %46, align 8, !tbaa !11
  %1050 = getelementptr inbounds %struct.doublecomplex, ptr %1048, i64 %1049
  %1051 = getelementptr inbounds %struct.doublecomplex, ptr %1050, i32 0, i32 0
  %1052 = load double, ptr %1051, align 8, !tbaa !21
  %1053 = fmul double %1047, %1052
  %1054 = getelementptr inbounds %struct.doublecomplex, ptr %49, i32 0, i32 0
  store double %1053, ptr %1054, align 8, !tbaa !21
  %1055 = load ptr, ptr %42, align 8, !tbaa !5
  %1056 = load i64, ptr %45, align 8, !tbaa !11
  %1057 = getelementptr inbounds double, ptr %1055, i64 %1056
  %1058 = load double, ptr %1057, align 8, !tbaa !9
  %1059 = load ptr, ptr %32, align 8, !tbaa !5
  %1060 = load i64, ptr %46, align 8, !tbaa !11
  %1061 = getelementptr inbounds %struct.doublecomplex, ptr %1059, i64 %1060
  %1062 = getelementptr inbounds %struct.doublecomplex, ptr %1061, i32 0, i32 1
  %1063 = load double, ptr %1062, align 8, !tbaa !23
  %1064 = fmul double %1058, %1063
  %1065 = getelementptr inbounds %struct.doublecomplex, ptr %49, i32 0, i32 1
  store double %1064, ptr %1065, align 8, !tbaa !23
  %1066 = getelementptr inbounds %struct.doublecomplex, ptr %49, i32 0, i32 0
  %1067 = load double, ptr %1066, align 8, !tbaa !21
  %1068 = fneg double %1067
  %1069 = getelementptr inbounds %struct.doublecomplex, ptr %48, i32 0, i32 0
  store double %1068, ptr %1069, align 8, !tbaa !21
  %1070 = getelementptr inbounds %struct.doublecomplex, ptr %49, i32 0, i32 1
  %1071 = load double, ptr %1070, align 8, !tbaa !23
  %1072 = fneg double %1071
  %1073 = getelementptr inbounds %struct.doublecomplex, ptr %48, i32 0, i32 1
  store double %1072, ptr %1073, align 8, !tbaa !23
  %1074 = getelementptr inbounds %struct.doublecomplex, ptr %48, i32 0, i32 0
  %1075 = load double, ptr %1074, align 8, !tbaa !21
  %1076 = load ptr, ptr %32, align 8, !tbaa !5
  %1077 = load i64, ptr %44, align 8, !tbaa !11
  %1078 = getelementptr inbounds %struct.doublecomplex, ptr %1076, i64 %1077
  %1079 = getelementptr inbounds %struct.doublecomplex, ptr %1078, i32 0, i32 0
  store double %1075, ptr %1079, align 8, !tbaa !21
  %1080 = getelementptr inbounds %struct.doublecomplex, ptr %48, i32 0, i32 1
  %1081 = load double, ptr %1080, align 8, !tbaa !23
  %1082 = load ptr, ptr %32, align 8, !tbaa !5
  %1083 = load i64, ptr %44, align 8, !tbaa !11
  %1084 = getelementptr inbounds %struct.doublecomplex, ptr %1082, i64 %1083
  %1085 = getelementptr inbounds %struct.doublecomplex, ptr %1084, i32 0, i32 1
  store double %1081, ptr %1085, align 8, !tbaa !23
  br label %1086

1086:                                             ; preds = %1037, %994
  %1087 = load ptr, ptr %32, align 8, !tbaa !5
  %1088 = load i64, ptr %50, align 8, !tbaa !11
  %1089 = getelementptr inbounds %struct.doublecomplex, ptr %1087, i64 %1088
  %1090 = call double @z_abs(ptr noundef %1089)
  %1091 = load ptr, ptr %32, align 8, !tbaa !5
  %1092 = load i64, ptr %50, align 8, !tbaa !11
  %1093 = add nsw i64 %1092, 1
  %1094 = getelementptr inbounds %struct.doublecomplex, ptr %1091, i64 %1093
  %1095 = call double @z_abs(ptr noundef %1094)
  %1096 = fadd double %1090, %1095
  %1097 = load ptr, ptr %28, align 8, !tbaa !5
  %1098 = load i64, ptr %50, align 8, !tbaa !11
  %1099 = getelementptr inbounds double, ptr %1097, i64 %1098
  %1100 = load double, ptr %1099, align 8, !tbaa !9
  store double %1100, ptr %47, align 8, !tbaa !9
  %1101 = load double, ptr %47, align 8, !tbaa !9
  %1102 = fcmp oge double %1101, 0.000000e+00
  br i1 %1102, label %1103, label %1105

1103:                                             ; preds = %1086
  %1104 = load double, ptr %47, align 8, !tbaa !9
  br label %1108

1105:                                             ; preds = %1086
  %1106 = load double, ptr %47, align 8, !tbaa !9
  %1107 = fneg double %1106
  br label %1108

1108:                                             ; preds = %1105, %1103
  %1109 = phi double [ %1104, %1103 ], [ %1107, %1105 ]
  %1110 = fmul double %1096, %1109
  %1111 = load ptr, ptr %31, align 8, !tbaa !5
  %1112 = load double, ptr %1111, align 8, !tbaa !9
  %1113 = fcmp olt double %1110, %1112
  br i1 %1113, label %1114, label %1128

1114:                                             ; preds = %1108
  %1115 = load i64, ptr %50, align 8, !tbaa !11
  store i64 %1115, ptr %44, align 8, !tbaa !11
  %1116 = load ptr, ptr %32, align 8, !tbaa !5
  %1117 = load i64, ptr %44, align 8, !tbaa !11
  %1118 = getelementptr inbounds %struct.doublecomplex, ptr %1116, i64 %1117
  %1119 = getelementptr inbounds %struct.doublecomplex, ptr %1118, i32 0, i32 0
  store double 0.000000e+00, ptr %1119, align 8, !tbaa !21
  %1120 = load ptr, ptr %32, align 8, !tbaa !5
  %1121 = load i64, ptr %44, align 8, !tbaa !11
  %1122 = getelementptr inbounds %struct.doublecomplex, ptr %1120, i64 %1121
  %1123 = getelementptr inbounds %struct.doublecomplex, ptr %1122, i32 0, i32 1
  store double 0.000000e+00, ptr %1123, align 8, !tbaa !23
  %1124 = load i64, ptr %50, align 8, !tbaa !11
  %1125 = add nsw i64 %1124, 1
  %1126 = load ptr, ptr %38, align 8, !tbaa !5
  %1127 = getelementptr inbounds i64, ptr %1126, i64 1
  store i64 %1125, ptr %1127, align 8, !tbaa !11
  br label %1187

1128:                                             ; preds = %1108
  %1129 = load i64, ptr %50, align 8, !tbaa !11
  store i64 %1129, ptr %44, align 8, !tbaa !11
  %1130 = load i64, ptr %50, align 8, !tbaa !11
  store i64 %1130, ptr %45, align 8, !tbaa !11
  %1131 = load ptr, ptr %32, align 8, !tbaa !5
  %1132 = load i64, ptr %44, align 8, !tbaa !11
  %1133 = getelementptr inbounds %struct.doublecomplex, ptr %1131, i64 %1132
  %1134 = getelementptr inbounds %struct.doublecomplex, ptr %1133, i32 0, i32 0
  %1135 = load double, ptr %1134, align 8, !tbaa !21
  %1136 = load ptr, ptr %32, align 8, !tbaa !5
  %1137 = load i64, ptr %45, align 8, !tbaa !11
  %1138 = getelementptr inbounds %struct.doublecomplex, ptr %1136, i64 %1137
  %1139 = getelementptr inbounds %struct.doublecomplex, ptr %1138, i32 0, i32 0
  %1140 = load double, ptr %1139, align 8, !tbaa !21
  %1141 = load ptr, ptr %32, align 8, !tbaa !5
  %1142 = load i64, ptr %44, align 8, !tbaa !11
  %1143 = getelementptr inbounds %struct.doublecomplex, ptr %1141, i64 %1142
  %1144 = getelementptr inbounds %struct.doublecomplex, ptr %1143, i32 0, i32 1
  %1145 = load double, ptr %1144, align 8, !tbaa !23
  %1146 = load ptr, ptr %32, align 8, !tbaa !5
  %1147 = load i64, ptr %45, align 8, !tbaa !11
  %1148 = getelementptr inbounds %struct.doublecomplex, ptr %1146, i64 %1147
  %1149 = getelementptr inbounds %struct.doublecomplex, ptr %1148, i32 0, i32 1
  %1150 = load double, ptr %1149, align 8, !tbaa !23
  %1151 = fmul double %1145, %1150
  %1152 = fneg double %1151
  %1153 = call double @llvm.fmuladd.f64(double %1135, double %1140, double %1152)
  %1154 = getelementptr inbounds %struct.doublecomplex, ptr %48, i32 0, i32 0
  store double %1153, ptr %1154, align 8, !tbaa !21
  %1155 = load ptr, ptr %32, align 8, !tbaa !5
  %1156 = load i64, ptr %44, align 8, !tbaa !11
  %1157 = getelementptr inbounds %struct.doublecomplex, ptr %1155, i64 %1156
  %1158 = getelementptr inbounds %struct.doublecomplex, ptr %1157, i32 0, i32 0
  %1159 = load double, ptr %1158, align 8, !tbaa !21
  %1160 = load ptr, ptr %32, align 8, !tbaa !5
  %1161 = load i64, ptr %45, align 8, !tbaa !11
  %1162 = getelementptr inbounds %struct.doublecomplex, ptr %1160, i64 %1161
  %1163 = getelementptr inbounds %struct.doublecomplex, ptr %1162, i32 0, i32 1
  %1164 = load double, ptr %1163, align 8, !tbaa !23
  %1165 = load ptr, ptr %32, align 8, !tbaa !5
  %1166 = load i64, ptr %44, align 8, !tbaa !11
  %1167 = getelementptr inbounds %struct.doublecomplex, ptr %1165, i64 %1166
  %1168 = getelementptr inbounds %struct.doublecomplex, ptr %1167, i32 0, i32 1
  %1169 = load double, ptr %1168, align 8, !tbaa !23
  %1170 = load ptr, ptr %32, align 8, !tbaa !5
  %1171 = load i64, ptr %45, align 8, !tbaa !11
  %1172 = getelementptr inbounds %struct.doublecomplex, ptr %1170, i64 %1171
  %1173 = getelementptr inbounds %struct.doublecomplex, ptr %1172, i32 0, i32 0
  %1174 = load double, ptr %1173, align 8, !tbaa !21
  %1175 = fmul double %1169, %1174
  %1176 = call double @llvm.fmuladd.f64(double %1159, double %1164, double %1175)
  %1177 = getelementptr inbounds %struct.doublecomplex, ptr %48, i32 0, i32 1
  store double %1176, ptr %1177, align 8, !tbaa !23
  %1178 = getelementptr inbounds %struct.doublecomplex, ptr %48, i32 0, i32 0
  %1179 = load double, ptr %1178, align 8, !tbaa !21
  %1180 = load ptr, ptr %35, align 8, !tbaa !5
  %1181 = load double, ptr %1180, align 8, !tbaa !9
  %1182 = fadd double %1181, %1179
  store double %1182, ptr %1180, align 8, !tbaa !9
  br label %1183

1183:                                             ; preds = %1128
  %1184 = load i64, ptr %50, align 8, !tbaa !11
  %1185 = add nsw i64 %1184, -1
  store i64 %1185, ptr %50, align 8, !tbaa !11
  br label %974, !llvm.loop !25

1186:                                             ; preds = %974
  br label %1187

1187:                                             ; preds = %1186, %1114
  br label %1188

1188:                                             ; preds = %1187, %967
  %1189 = load i64, ptr %64, align 8, !tbaa !11
  %1190 = icmp ne i64 %1189, 0
  br i1 %1190, label %1356, label %1191

1191:                                             ; preds = %1188
  %1192 = load i64, ptr %65, align 8, !tbaa !11
  %1193 = icmp ne i64 %1192, 0
  br i1 %1193, label %1356, label %1194

1194:                                             ; preds = %1191
  %1195 = load ptr, ptr %24, align 8, !tbaa !5
  %1196 = load i64, ptr %1195, align 8, !tbaa !11
  %1197 = sub nsw i64 %1196, 1
  store i64 %1197, ptr %43, align 8, !tbaa !11
  %1198 = load ptr, ptr %37, align 8, !tbaa !5
  %1199 = load i64, ptr %1198, align 8, !tbaa !11
  store i64 %1199, ptr %50, align 8, !tbaa !11
  br label %1200

1200:                                             ; preds = %1351, %1194
  %1201 = load i64, ptr %50, align 8, !tbaa !11
  %1202 = load i64, ptr %43, align 8, !tbaa !11
  %1203 = icmp sle i64 %1201, %1202
  br i1 %1203, label %1204, label %1354

1204:                                             ; preds = %1200
  %1205 = load i64, ptr %50, align 8, !tbaa !11
  %1206 = add nsw i64 %1205, 1
  store i64 %1206, ptr %44, align 8, !tbaa !11
  %1207 = load i64, ptr %62, align 8, !tbaa !11
  %1208 = load i64, ptr %50, align 8, !tbaa !11
  %1209 = add nsw i64 %1207, %1208
  store i64 %1209, ptr %45, align 8, !tbaa !11
  %1210 = load i64, ptr %50, align 8, !tbaa !11
  store i64 %1210, ptr %46, align 8, !tbaa !11
  %1211 = load ptr, ptr %42, align 8, !tbaa !5
  %1212 = load i64, ptr %45, align 8, !tbaa !11
  %1213 = getelementptr inbounds double, ptr %1211, i64 %1212
  %1214 = load double, ptr %1213, align 8, !tbaa !9
  %1215 = load ptr, ptr %32, align 8, !tbaa !5
  %1216 = load i64, ptr %46, align 8, !tbaa !11
  %1217 = getelementptr inbounds %struct.doublecomplex, ptr %1215, i64 %1216
  %1218 = getelementptr inbounds %struct.doublecomplex, ptr %1217, i32 0, i32 0
  %1219 = load double, ptr %1218, align 8, !tbaa !21
  %1220 = fmul double %1214, %1219
  %1221 = getelementptr inbounds %struct.doublecomplex, ptr %49, i32 0, i32 0
  store double %1220, ptr %1221, align 8, !tbaa !21
  %1222 = load ptr, ptr %42, align 8, !tbaa !5
  %1223 = load i64, ptr %45, align 8, !tbaa !11
  %1224 = getelementptr inbounds double, ptr %1222, i64 %1223
  %1225 = load double, ptr %1224, align 8, !tbaa !9
  %1226 = load ptr, ptr %32, align 8, !tbaa !5
  %1227 = load i64, ptr %46, align 8, !tbaa !11
  %1228 = getelementptr inbounds %struct.doublecomplex, ptr %1226, i64 %1227
  %1229 = getelementptr inbounds %struct.doublecomplex, ptr %1228, i32 0, i32 1
  %1230 = load double, ptr %1229, align 8, !tbaa !23
  %1231 = fmul double %1225, %1230
  %1232 = getelementptr inbounds %struct.doublecomplex, ptr %49, i32 0, i32 1
  store double %1231, ptr %1232, align 8, !tbaa !23
  %1233 = getelementptr inbounds %struct.doublecomplex, ptr %49, i32 0, i32 0
  %1234 = load double, ptr %1233, align 8, !tbaa !21
  %1235 = fneg double %1234
  %1236 = getelementptr inbounds %struct.doublecomplex, ptr %48, i32 0, i32 0
  store double %1235, ptr %1236, align 8, !tbaa !21
  %1237 = getelementptr inbounds %struct.doublecomplex, ptr %49, i32 0, i32 1
  %1238 = load double, ptr %1237, align 8, !tbaa !23
  %1239 = fneg double %1238
  %1240 = getelementptr inbounds %struct.doublecomplex, ptr %48, i32 0, i32 1
  store double %1239, ptr %1240, align 8, !tbaa !23
  %1241 = getelementptr inbounds %struct.doublecomplex, ptr %48, i32 0, i32 0
  %1242 = load double, ptr %1241, align 8, !tbaa !21
  %1243 = load ptr, ptr %32, align 8, !tbaa !5
  %1244 = load i64, ptr %44, align 8, !tbaa !11
  %1245 = getelementptr inbounds %struct.doublecomplex, ptr %1243, i64 %1244
  %1246 = getelementptr inbounds %struct.doublecomplex, ptr %1245, i32 0, i32 0
  store double %1242, ptr %1246, align 8, !tbaa !21
  %1247 = getelementptr inbounds %struct.doublecomplex, ptr %48, i32 0, i32 1
  %1248 = load double, ptr %1247, align 8, !tbaa !23
  %1249 = load ptr, ptr %32, align 8, !tbaa !5
  %1250 = load i64, ptr %44, align 8, !tbaa !11
  %1251 = getelementptr inbounds %struct.doublecomplex, ptr %1249, i64 %1250
  %1252 = getelementptr inbounds %struct.doublecomplex, ptr %1251, i32 0, i32 1
  store double %1248, ptr %1252, align 8, !tbaa !23
  %1253 = load ptr, ptr %32, align 8, !tbaa !5
  %1254 = load i64, ptr %50, align 8, !tbaa !11
  %1255 = getelementptr inbounds %struct.doublecomplex, ptr %1253, i64 %1254
  %1256 = call double @z_abs(ptr noundef %1255)
  %1257 = load ptr, ptr %32, align 8, !tbaa !5
  %1258 = load i64, ptr %50, align 8, !tbaa !11
  %1259 = add nsw i64 %1258, 1
  %1260 = getelementptr inbounds %struct.doublecomplex, ptr %1257, i64 %1259
  %1261 = call double @z_abs(ptr noundef %1260)
  %1262 = fadd double %1256, %1261
  %1263 = load ptr, ptr %28, align 8, !tbaa !5
  %1264 = load i64, ptr %50, align 8, !tbaa !11
  %1265 = getelementptr inbounds double, ptr %1263, i64 %1264
  %1266 = load double, ptr %1265, align 8, !tbaa !9
  store double %1266, ptr %47, align 8, !tbaa !9
  %1267 = load double, ptr %47, align 8, !tbaa !9
  %1268 = fcmp oge double %1267, 0.000000e+00
  br i1 %1268, label %1269, label %1271

1269:                                             ; preds = %1204
  %1270 = load double, ptr %47, align 8, !tbaa !9
  br label %1274

1271:                                             ; preds = %1204
  %1272 = load double, ptr %47, align 8, !tbaa !9
  %1273 = fneg double %1272
  br label %1274

1274:                                             ; preds = %1271, %1269
  %1275 = phi double [ %1270, %1269 ], [ %1273, %1271 ]
  %1276 = fmul double %1262, %1275
  %1277 = load ptr, ptr %31, align 8, !tbaa !5
  %1278 = load double, ptr %1277, align 8, !tbaa !9
  %1279 = fcmp olt double %1276, %1278
  br i1 %1279, label %1280, label %1294

1280:                                             ; preds = %1274
  %1281 = load i64, ptr %50, align 8, !tbaa !11
  %1282 = add nsw i64 %1281, 1
  store i64 %1282, ptr %44, align 8, !tbaa !11
  %1283 = load ptr, ptr %32, align 8, !tbaa !5
  %1284 = load i64, ptr %44, align 8, !tbaa !11
  %1285 = getelementptr inbounds %struct.doublecomplex, ptr %1283, i64 %1284
  %1286 = getelementptr inbounds %struct.doublecomplex, ptr %1285, i32 0, i32 0
  store double 0.000000e+00, ptr %1286, align 8, !tbaa !21
  %1287 = load ptr, ptr %32, align 8, !tbaa !5
  %1288 = load i64, ptr %44, align 8, !tbaa !11
  %1289 = getelementptr inbounds %struct.doublecomplex, ptr %1287, i64 %1288
  %1290 = getelementptr inbounds %struct.doublecomplex, ptr %1289, i32 0, i32 1
  store double 0.000000e+00, ptr %1290, align 8, !tbaa !23
  %1291 = load i64, ptr %50, align 8, !tbaa !11
  %1292 = load ptr, ptr %38, align 8, !tbaa !5
  %1293 = getelementptr inbounds i64, ptr %1292, i64 2
  store i64 %1291, ptr %1293, align 8, !tbaa !11
  br label %1355

1294:                                             ; preds = %1274
  %1295 = load i64, ptr %50, align 8, !tbaa !11
  %1296 = add nsw i64 %1295, 1
  store i64 %1296, ptr %44, align 8, !tbaa !11
  %1297 = load i64, ptr %50, align 8, !tbaa !11
  %1298 = add nsw i64 %1297, 1
  store i64 %1298, ptr %45, align 8, !tbaa !11
  %1299 = load ptr, ptr %32, align 8, !tbaa !5
  %1300 = load i64, ptr %44, align 8, !tbaa !11
  %1301 = getelementptr inbounds %struct.doublecomplex, ptr %1299, i64 %1300
  %1302 = getelementptr inbounds %struct.doublecomplex, ptr %1301, i32 0, i32 0
  %1303 = load double, ptr %1302, align 8, !tbaa !21
  %1304 = load ptr, ptr %32, align 8, !tbaa !5
  %1305 = load i64, ptr %45, align 8, !tbaa !11
  %1306 = getelementptr inbounds %struct.doublecomplex, ptr %1304, i64 %1305
  %1307 = getelementptr inbounds %struct.doublecomplex, ptr %1306, i32 0, i32 0
  %1308 = load double, ptr %1307, align 8, !tbaa !21
  %1309 = load ptr, ptr %32, align 8, !tbaa !5
  %1310 = load i64, ptr %44, align 8, !tbaa !11
  %1311 = getelementptr inbounds %struct.doublecomplex, ptr %1309, i64 %1310
  %1312 = getelementptr inbounds %struct.doublecomplex, ptr %1311, i32 0, i32 1
  %1313 = load double, ptr %1312, align 8, !tbaa !23
  %1314 = load ptr, ptr %32, align 8, !tbaa !5
  %1315 = load i64, ptr %45, align 8, !tbaa !11
  %1316 = getelementptr inbounds %struct.doublecomplex, ptr %1314, i64 %1315
  %1317 = getelementptr inbounds %struct.doublecomplex, ptr %1316, i32 0, i32 1
  %1318 = load double, ptr %1317, align 8, !tbaa !23
  %1319 = fmul double %1313, %1318
  %1320 = fneg double %1319
  %1321 = call double @llvm.fmuladd.f64(double %1303, double %1308, double %1320)
  %1322 = getelementptr inbounds %struct.doublecomplex, ptr %48, i32 0, i32 0
  store double %1321, ptr %1322, align 8, !tbaa !21
  %1323 = load ptr, ptr %32, align 8, !tbaa !5
  %1324 = load i64, ptr %44, align 8, !tbaa !11
  %1325 = getelementptr inbounds %struct.doublecomplex, ptr %1323, i64 %1324
  %1326 = getelementptr inbounds %struct.doublecomplex, ptr %1325, i32 0, i32 0
  %1327 = load double, ptr %1326, align 8, !tbaa !21
  %1328 = load ptr, ptr %32, align 8, !tbaa !5
  %1329 = load i64, ptr %45, align 8, !tbaa !11
  %1330 = getelementptr inbounds %struct.doublecomplex, ptr %1328, i64 %1329
  %1331 = getelementptr inbounds %struct.doublecomplex, ptr %1330, i32 0, i32 1
  %1332 = load double, ptr %1331, align 8, !tbaa !23
  %1333 = load ptr, ptr %32, align 8, !tbaa !5
  %1334 = load i64, ptr %44, align 8, !tbaa !11
  %1335 = getelementptr inbounds %struct.doublecomplex, ptr %1333, i64 %1334
  %1336 = getelementptr inbounds %struct.doublecomplex, ptr %1335, i32 0, i32 1
  %1337 = load double, ptr %1336, align 8, !tbaa !23
  %1338 = load ptr, ptr %32, align 8, !tbaa !5
  %1339 = load i64, ptr %45, align 8, !tbaa !11
  %1340 = getelementptr inbounds %struct.doublecomplex, ptr %1338, i64 %1339
  %1341 = getelementptr inbounds %struct.doublecomplex, ptr %1340, i32 0, i32 0
  %1342 = load double, ptr %1341, align 8, !tbaa !21
  %1343 = fmul double %1337, %1342
  %1344 = call double @llvm.fmuladd.f64(double %1327, double %1332, double %1343)
  %1345 = getelementptr inbounds %struct.doublecomplex, ptr %48, i32 0, i32 1
  store double %1344, ptr %1345, align 8, !tbaa !23
  %1346 = getelementptr inbounds %struct.doublecomplex, ptr %48, i32 0, i32 0
  %1347 = load double, ptr %1346, align 8, !tbaa !21
  %1348 = load ptr, ptr %35, align 8, !tbaa !5
  %1349 = load double, ptr %1348, align 8, !tbaa !9
  %1350 = fadd double %1349, %1347
  store double %1350, ptr %1348, align 8, !tbaa !9
  br label %1351

1351:                                             ; preds = %1294
  %1352 = load i64, ptr %50, align 8, !tbaa !11
  %1353 = add nsw i64 %1352, 1
  store i64 %1353, ptr %50, align 8, !tbaa !11
  br label %1200, !llvm.loop !26

1354:                                             ; preds = %1200
  br label %1355

1355:                                             ; preds = %1354, %1280
  br label %1578

1356:                                             ; preds = %1191, %1188
  %1357 = load ptr, ptr %24, align 8, !tbaa !5
  %1358 = load i64, ptr %1357, align 8, !tbaa !11
  %1359 = sub nsw i64 %1358, 1
  store i64 %1359, ptr %43, align 8, !tbaa !11
  %1360 = load ptr, ptr %37, align 8, !tbaa !5
  %1361 = load i64, ptr %1360, align 8, !tbaa !11
  store i64 %1361, ptr %50, align 8, !tbaa !11
  br label %1362

1362:                                             ; preds = %1573, %1356
  %1363 = load i64, ptr %50, align 8, !tbaa !11
  %1364 = load i64, ptr %43, align 8, !tbaa !11
  %1365 = icmp sle i64 %1363, %1364
  br i1 %1365, label %1366, label %1576

1366:                                             ; preds = %1362
  %1367 = load i64, ptr %50, align 8, !tbaa !11
  store i64 %1367, ptr %44, align 8, !tbaa !11
  %1368 = load ptr, ptr %32, align 8, !tbaa !5
  %1369 = load i64, ptr %44, align 8, !tbaa !11
  %1370 = getelementptr inbounds %struct.doublecomplex, ptr %1368, i64 %1369
  %1371 = getelementptr inbounds %struct.doublecomplex, ptr %1370, i32 0, i32 0
  %1372 = load double, ptr %1371, align 8, !tbaa !21
  %1373 = fcmp oeq double %1372, 0.000000e+00
  br i1 %1373, label %1374, label %1425

1374:                                             ; preds = %1366
  %1375 = load ptr, ptr %32, align 8, !tbaa !5
  %1376 = load i64, ptr %44, align 8, !tbaa !11
  %1377 = getelementptr inbounds %struct.doublecomplex, ptr %1375, i64 %1376
  %1378 = getelementptr inbounds %struct.doublecomplex, ptr %1377, i32 0, i32 1
  %1379 = load double, ptr %1378, align 8, !tbaa !23
  %1380 = fcmp oeq double %1379, 0.000000e+00
  br i1 %1380, label %1381, label %1425

1381:                                             ; preds = %1374
  %1382 = load i64, ptr %50, align 8, !tbaa !11
  %1383 = add nsw i64 %1382, 1
  store i64 %1383, ptr %44, align 8, !tbaa !11
  %1384 = load ptr, ptr %28, align 8, !tbaa !5
  %1385 = load i64, ptr %50, align 8, !tbaa !11
  %1386 = sub nsw i64 %1385, 1
  %1387 = getelementptr inbounds double, ptr %1384, i64 %1386
  %1388 = load double, ptr %1387, align 8, !tbaa !9
  %1389 = load ptr, ptr %28, align 8, !tbaa !5
  %1390 = load i64, ptr %50, align 8, !tbaa !11
  %1391 = getelementptr inbounds double, ptr %1389, i64 %1390
  %1392 = load double, ptr %1391, align 8, !tbaa !9
  %1393 = fdiv double %1388, %1392
  %1394 = fneg double %1393
  store double %1394, ptr %47, align 8, !tbaa !9
  %1395 = load i64, ptr %50, align 8, !tbaa !11
  %1396 = sub nsw i64 %1395, 1
  store i64 %1396, ptr %45, align 8, !tbaa !11
  %1397 = load double, ptr %47, align 8, !tbaa !9
  %1398 = load ptr, ptr %32, align 8, !tbaa !5
  %1399 = load i64, ptr %45, align 8, !tbaa !11
  %1400 = getelementptr inbounds %struct.doublecomplex, ptr %1398, i64 %1399
  %1401 = getelementptr inbounds %struct.doublecomplex, ptr %1400, i32 0, i32 0
  %1402 = load double, ptr %1401, align 8, !tbaa !21
  %1403 = fmul double %1397, %1402
  %1404 = getelementptr inbounds %struct.doublecomplex, ptr %48, i32 0, i32 0
  store double %1403, ptr %1404, align 8, !tbaa !21
  %1405 = load double, ptr %47, align 8, !tbaa !9
  %1406 = load ptr, ptr %32, align 8, !tbaa !5
  %1407 = load i64, ptr %45, align 8, !tbaa !11
  %1408 = getelementptr inbounds %struct.doublecomplex, ptr %1406, i64 %1407
  %1409 = getelementptr inbounds %struct.doublecomplex, ptr %1408, i32 0, i32 1
  %1410 = load double, ptr %1409, align 8, !tbaa !23
  %1411 = fmul double %1405, %1410
  %1412 = getelementptr inbounds %struct.doublecomplex, ptr %48, i32 0, i32 1
  store double %1411, ptr %1412, align 8, !tbaa !23
  %1413 = getelementptr inbounds %struct.doublecomplex, ptr %48, i32 0, i32 0
  %1414 = load double, ptr %1413, align 8, !tbaa !21
  %1415 = load ptr, ptr %32, align 8, !tbaa !5
  %1416 = load i64, ptr %44, align 8, !tbaa !11
  %1417 = getelementptr inbounds %struct.doublecomplex, ptr %1415, i64 %1416
  %1418 = getelementptr inbounds %struct.doublecomplex, ptr %1417, i32 0, i32 0
  store double %1414, ptr %1418, align 8, !tbaa !21
  %1419 = getelementptr inbounds %struct.doublecomplex, ptr %48, i32 0, i32 1
  %1420 = load double, ptr %1419, align 8, !tbaa !23
  %1421 = load ptr, ptr %32, align 8, !tbaa !5
  %1422 = load i64, ptr %44, align 8, !tbaa !11
  %1423 = getelementptr inbounds %struct.doublecomplex, ptr %1421, i64 %1422
  %1424 = getelementptr inbounds %struct.doublecomplex, ptr %1423, i32 0, i32 1
  store double %1420, ptr %1424, align 8, !tbaa !23
  br label %1474

1425:                                             ; preds = %1374, %1366
  %1426 = load i64, ptr %50, align 8, !tbaa !11
  %1427 = add nsw i64 %1426, 1
  store i64 %1427, ptr %44, align 8, !tbaa !11
  %1428 = load i64, ptr %62, align 8, !tbaa !11
  %1429 = load i64, ptr %50, align 8, !tbaa !11
  %1430 = add nsw i64 %1428, %1429
  store i64 %1430, ptr %45, align 8, !tbaa !11
  %1431 = load i64, ptr %50, align 8, !tbaa !11
  store i64 %1431, ptr %46, align 8, !tbaa !11
  %1432 = load ptr, ptr %42, align 8, !tbaa !5
  %1433 = load i64, ptr %45, align 8, !tbaa !11
  %1434 = getelementptr inbounds double, ptr %1432, i64 %1433
  %1435 = load double, ptr %1434, align 8, !tbaa !9
  %1436 = load ptr, ptr %32, align 8, !tbaa !5
  %1437 = load i64, ptr %46, align 8, !tbaa !11
  %1438 = getelementptr inbounds %struct.doublecomplex, ptr %1436, i64 %1437
  %1439 = getelementptr inbounds %struct.doublecomplex, ptr %1438, i32 0, i32 0
  %1440 = load double, ptr %1439, align 8, !tbaa !21
  %1441 = fmul double %1435, %1440
  %1442 = getelementptr inbounds %struct.doublecomplex, ptr %49, i32 0, i32 0
  store double %1441, ptr %1442, align 8, !tbaa !21
  %1443 = load ptr, ptr %42, align 8, !tbaa !5
  %1444 = load i64, ptr %45, align 8, !tbaa !11
  %1445 = getelementptr inbounds double, ptr %1443, i64 %1444
  %1446 = load double, ptr %1445, align 8, !tbaa !9
  %1447 = load ptr, ptr %32, align 8, !tbaa !5
  %1448 = load i64, ptr %46, align 8, !tbaa !11
  %1449 = getelementptr inbounds %struct.doublecomplex, ptr %1447, i64 %1448
  %1450 = getelementptr inbounds %struct.doublecomplex, ptr %1449, i32 0, i32 1
  %1451 = load double, ptr %1450, align 8, !tbaa !23
  %1452 = fmul double %1446, %1451
  %1453 = getelementptr inbounds %struct.doublecomplex, ptr %49, i32 0, i32 1
  store double %1452, ptr %1453, align 8, !tbaa !23
  %1454 = getelementptr inbounds %struct.doublecomplex, ptr %49, i32 0, i32 0
  %1455 = load double, ptr %1454, align 8, !tbaa !21
  %1456 = fneg double %1455
  %1457 = getelementptr inbounds %struct.doublecomplex, ptr %48, i32 0, i32 0
  store double %1456, ptr %1457, align 8, !tbaa !21
  %1458 = getelementptr inbounds %struct.doublecomplex, ptr %49, i32 0, i32 1
  %1459 = load double, ptr %1458, align 8, !tbaa !23
  %1460 = fneg double %1459
  %1461 = getelementptr inbounds %struct.doublecomplex, ptr %48, i32 0, i32 1
  store double %1460, ptr %1461, align 8, !tbaa !23
  %1462 = getelementptr inbounds %struct.doublecomplex, ptr %48, i32 0, i32 0
  %1463 = load double, ptr %1462, align 8, !tbaa !21
  %1464 = load ptr, ptr %32, align 8, !tbaa !5
  %1465 = load i64, ptr %44, align 8, !tbaa !11
  %1466 = getelementptr inbounds %struct.doublecomplex, ptr %1464, i64 %1465
  %1467 = getelementptr inbounds %struct.doublecomplex, ptr %1466, i32 0, i32 0
  store double %1463, ptr %1467, align 8, !tbaa !21
  %1468 = getelementptr inbounds %struct.doublecomplex, ptr %48, i32 0, i32 1
  %1469 = load double, ptr %1468, align 8, !tbaa !23
  %1470 = load ptr, ptr %32, align 8, !tbaa !5
  %1471 = load i64, ptr %44, align 8, !tbaa !11
  %1472 = getelementptr inbounds %struct.doublecomplex, ptr %1470, i64 %1471
  %1473 = getelementptr inbounds %struct.doublecomplex, ptr %1472, i32 0, i32 1
  store double %1469, ptr %1473, align 8, !tbaa !23
  br label %1474

1474:                                             ; preds = %1425, %1381
  %1475 = load ptr, ptr %32, align 8, !tbaa !5
  %1476 = load i64, ptr %50, align 8, !tbaa !11
  %1477 = getelementptr inbounds %struct.doublecomplex, ptr %1475, i64 %1476
  %1478 = call double @z_abs(ptr noundef %1477)
  %1479 = load ptr, ptr %32, align 8, !tbaa !5
  %1480 = load i64, ptr %50, align 8, !tbaa !11
  %1481 = add nsw i64 %1480, 1
  %1482 = getelementptr inbounds %struct.doublecomplex, ptr %1479, i64 %1481
  %1483 = call double @z_abs(ptr noundef %1482)
  %1484 = fadd double %1478, %1483
  %1485 = load ptr, ptr %28, align 8, !tbaa !5
  %1486 = load i64, ptr %50, align 8, !tbaa !11
  %1487 = getelementptr inbounds double, ptr %1485, i64 %1486
  %1488 = load double, ptr %1487, align 8, !tbaa !9
  store double %1488, ptr %47, align 8, !tbaa !9
  %1489 = load double, ptr %47, align 8, !tbaa !9
  %1490 = fcmp oge double %1489, 0.000000e+00
  br i1 %1490, label %1491, label %1493

1491:                                             ; preds = %1474
  %1492 = load double, ptr %47, align 8, !tbaa !9
  br label %1496

1493:                                             ; preds = %1474
  %1494 = load double, ptr %47, align 8, !tbaa !9
  %1495 = fneg double %1494
  br label %1496

1496:                                             ; preds = %1493, %1491
  %1497 = phi double [ %1492, %1491 ], [ %1495, %1493 ]
  %1498 = fmul double %1484, %1497
  %1499 = load ptr, ptr %31, align 8, !tbaa !5
  %1500 = load double, ptr %1499, align 8, !tbaa !9
  %1501 = fcmp olt double %1498, %1500
  br i1 %1501, label %1502, label %1516

1502:                                             ; preds = %1496
  %1503 = load i64, ptr %50, align 8, !tbaa !11
  %1504 = add nsw i64 %1503, 1
  store i64 %1504, ptr %44, align 8, !tbaa !11
  %1505 = load ptr, ptr %32, align 8, !tbaa !5
  %1506 = load i64, ptr %44, align 8, !tbaa !11
  %1507 = getelementptr inbounds %struct.doublecomplex, ptr %1505, i64 %1506
  %1508 = getelementptr inbounds %struct.doublecomplex, ptr %1507, i32 0, i32 0
  store double 0.000000e+00, ptr %1508, align 8, !tbaa !21
  %1509 = load ptr, ptr %32, align 8, !tbaa !5
  %1510 = load i64, ptr %44, align 8, !tbaa !11
  %1511 = getelementptr inbounds %struct.doublecomplex, ptr %1509, i64 %1510
  %1512 = getelementptr inbounds %struct.doublecomplex, ptr %1511, i32 0, i32 1
  store double 0.000000e+00, ptr %1512, align 8, !tbaa !23
  %1513 = load i64, ptr %50, align 8, !tbaa !11
  %1514 = load ptr, ptr %38, align 8, !tbaa !5
  %1515 = getelementptr inbounds i64, ptr %1514, i64 2
  store i64 %1513, ptr %1515, align 8, !tbaa !11
  br label %1577

1516:                                             ; preds = %1496
  %1517 = load i64, ptr %50, align 8, !tbaa !11
  %1518 = add nsw i64 %1517, 1
  store i64 %1518, ptr %44, align 8, !tbaa !11
  %1519 = load i64, ptr %50, align 8, !tbaa !11
  %1520 = add nsw i64 %1519, 1
  store i64 %1520, ptr %45, align 8, !tbaa !11
  %1521 = load ptr, ptr %32, align 8, !tbaa !5
  %1522 = load i64, ptr %44, align 8, !tbaa !11
  %1523 = getelementptr inbounds %struct.doublecomplex, ptr %1521, i64 %1522
  %1524 = getelementptr inbounds %struct.doublecomplex, ptr %1523, i32 0, i32 0
  %1525 = load double, ptr %1524, align 8, !tbaa !21
  %1526 = load ptr, ptr %32, align 8, !tbaa !5
  %1527 = load i64, ptr %45, align 8, !tbaa !11
  %1528 = getelementptr inbounds %struct.doublecomplex, ptr %1526, i64 %1527
  %1529 = getelementptr inbounds %struct.doublecomplex, ptr %1528, i32 0, i32 0
  %1530 = load double, ptr %1529, align 8, !tbaa !21
  %1531 = load ptr, ptr %32, align 8, !tbaa !5
  %1532 = load i64, ptr %44, align 8, !tbaa !11
  %1533 = getelementptr inbounds %struct.doublecomplex, ptr %1531, i64 %1532
  %1534 = getelementptr inbounds %struct.doublecomplex, ptr %1533, i32 0, i32 1
  %1535 = load double, ptr %1534, align 8, !tbaa !23
  %1536 = load ptr, ptr %32, align 8, !tbaa !5
  %1537 = load i64, ptr %45, align 8, !tbaa !11
  %1538 = getelementptr inbounds %struct.doublecomplex, ptr %1536, i64 %1537
  %1539 = getelementptr inbounds %struct.doublecomplex, ptr %1538, i32 0, i32 1
  %1540 = load double, ptr %1539, align 8, !tbaa !23
  %1541 = fmul double %1535, %1540
  %1542 = fneg double %1541
  %1543 = call double @llvm.fmuladd.f64(double %1525, double %1530, double %1542)
  %1544 = getelementptr inbounds %struct.doublecomplex, ptr %48, i32 0, i32 0
  store double %1543, ptr %1544, align 8, !tbaa !21
  %1545 = load ptr, ptr %32, align 8, !tbaa !5
  %1546 = load i64, ptr %44, align 8, !tbaa !11
  %1547 = getelementptr inbounds %struct.doublecomplex, ptr %1545, i64 %1546
  %1548 = getelementptr inbounds %struct.doublecomplex, ptr %1547, i32 0, i32 0
  %1549 = load double, ptr %1548, align 8, !tbaa !21
  %1550 = load ptr, ptr %32, align 8, !tbaa !5
  %1551 = load i64, ptr %45, align 8, !tbaa !11
  %1552 = getelementptr inbounds %struct.doublecomplex, ptr %1550, i64 %1551
  %1553 = getelementptr inbounds %struct.doublecomplex, ptr %1552, i32 0, i32 1
  %1554 = load double, ptr %1553, align 8, !tbaa !23
  %1555 = load ptr, ptr %32, align 8, !tbaa !5
  %1556 = load i64, ptr %44, align 8, !tbaa !11
  %1557 = getelementptr inbounds %struct.doublecomplex, ptr %1555, i64 %1556
  %1558 = getelementptr inbounds %struct.doublecomplex, ptr %1557, i32 0, i32 1
  %1559 = load double, ptr %1558, align 8, !tbaa !23
  %1560 = load ptr, ptr %32, align 8, !tbaa !5
  %1561 = load i64, ptr %45, align 8, !tbaa !11
  %1562 = getelementptr inbounds %struct.doublecomplex, ptr %1560, i64 %1561
  %1563 = getelementptr inbounds %struct.doublecomplex, ptr %1562, i32 0, i32 0
  %1564 = load double, ptr %1563, align 8, !tbaa !21
  %1565 = fmul double %1559, %1564
  %1566 = call double @llvm.fmuladd.f64(double %1549, double %1554, double %1565)
  %1567 = getelementptr inbounds %struct.doublecomplex, ptr %48, i32 0, i32 1
  store double %1566, ptr %1567, align 8, !tbaa !23
  %1568 = getelementptr inbounds %struct.doublecomplex, ptr %48, i32 0, i32 0
  %1569 = load double, ptr %1568, align 8, !tbaa !21
  %1570 = load ptr, ptr %35, align 8, !tbaa !5
  %1571 = load double, ptr %1570, align 8, !tbaa !9
  %1572 = fadd double %1571, %1569
  store double %1572, ptr %1570, align 8, !tbaa !9
  br label %1573

1573:                                             ; preds = %1516
  %1574 = load i64, ptr %50, align 8, !tbaa !11
  %1575 = add nsw i64 %1574, 1
  store i64 %1575, ptr %50, align 8, !tbaa !11
  br label %1362, !llvm.loop !27

1576:                                             ; preds = %1362
  br label %1577

1577:                                             ; preds = %1576, %1502
  br label %1578

1578:                                             ; preds = %1577, %1355
  %1579 = load ptr, ptr %35, align 8, !tbaa !5
  %1580 = load double, ptr %1579, align 8, !tbaa !9
  %1581 = fdiv double 1.000000e+00, %1580
  store double %1581, ptr %55, align 8, !tbaa !9
  %1582 = load double, ptr %55, align 8, !tbaa !9
  %1583 = call double @sqrt(double noundef %1582) #5
  %1584 = load ptr, ptr %39, align 8, !tbaa !5
  store double %1583, ptr %1584, align 8, !tbaa !9
  %1585 = load ptr, ptr %36, align 8, !tbaa !5
  %1586 = load double, ptr %1585, align 8, !tbaa !9
  %1587 = fcmp oge double %1586, 0.000000e+00
  br i1 %1587, label %1588, label %1591

1588:                                             ; preds = %1578
  %1589 = load ptr, ptr %36, align 8, !tbaa !5
  %1590 = load double, ptr %1589, align 8, !tbaa !9
  br label %1595

1591:                                             ; preds = %1578
  %1592 = load ptr, ptr %36, align 8, !tbaa !5
  %1593 = load double, ptr %1592, align 8, !tbaa !9
  %1594 = fneg double %1593
  br label %1595

1595:                                             ; preds = %1591, %1588
  %1596 = phi double [ %1590, %1588 ], [ %1594, %1591 ]
  %1597 = load ptr, ptr %39, align 8, !tbaa !5
  %1598 = load double, ptr %1597, align 8, !tbaa !9
  %1599 = fmul double %1596, %1598
  %1600 = load ptr, ptr %40, align 8, !tbaa !5
  store double %1599, ptr %1600, align 8, !tbaa !9
  %1601 = load ptr, ptr %36, align 8, !tbaa !5
  %1602 = load double, ptr %1601, align 8, !tbaa !9
  %1603 = load double, ptr %55, align 8, !tbaa !9
  %1604 = fmul double %1602, %1603
  %1605 = load ptr, ptr %41, align 8, !tbaa !5
  store double %1604, ptr %1605, align 8, !tbaa !9
  call void @llvm.lifetime.end.p0(i64 8, ptr %65) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %64) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %63) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %62) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %61) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %60) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %59) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %58) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %57) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %56) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %55) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %54) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %53) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %52) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %51) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %50) #5
  call void @llvm.lifetime.end.p0(i64 16, ptr %49) #5
  call void @llvm.lifetime.end.p0(i64 16, ptr %48) #5
  call void @llvm.lifetime.end.p0(i64 8, 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 8, ptr %43) #5
  ret i32 0
}

; 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 i64 @disnan_(ptr noundef) #2

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

declare double @z_abs(ptr noundef) #2

; 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 = !{!"long", !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 = !{!22, !10, i64 0}
!22 = !{!"", !10, i64 0, !10, i64 8}
!23 = !{!22, !10, i64 8}
!24 = distinct !{!24, !14}
!25 = distinct !{!25, !14}
!26 = distinct !{!26, !14}
!27 = distinct !{!27, !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"

%struct.doublecomplex = type { double, double }

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

; Function Attrs: nounwind uwtable
define dso_local noundef i32 @zlar1v_(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 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) #6
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %23) #6
  %24 = getelementptr inbounds i8, ptr %20, i64 -8
  %25 = getelementptr inbounds i8, ptr %10, i64 -16
  %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) #6
  %31 = load i64, ptr %15, align 8, !tbaa !5
  %32 = icmp eq i64 %31, 0
  %33 = load i64, ptr %1, align 8, !tbaa !5
  br i1 %32, label %34, label %thread-pre-split

34:                                               ; preds = %21
  %35 = load i64, ptr %2, align 8, !tbaa !5
  br label %thread-pre-split

thread-pre-split:                                 ; preds = %21, %34
  %.0609 = phi i64 [ %33, %34 ], [ %31, %21 ]
  %.0608 = phi i64 [ %35, %34 ], [ %31, %21 ]
  %36 = load i64, ptr %0, align 8, !tbaa !5
  %37 = shl i64 %36, 1
  %38 = mul nsw i64 %36, 3
  %39 = icmp eq i64 %33, 1
  br i1 %39, label %40, label %42

40:                                               ; preds = %thread-pre-split
  %41 = getelementptr double, ptr %20, i64 %37
  store double 0.000000e+00, ptr %41, align 8, !tbaa !9
  br label %49

42:                                               ; preds = %thread-pre-split
  %43 = getelementptr double, ptr %26, i64 %33
  %44 = getelementptr i8, ptr %43, i64 -8
  %45 = load double, ptr %44, align 8, !tbaa !9
  %46 = getelementptr double, ptr %20, i64 %37
  %47 = getelementptr double, ptr %46, i64 %33
  %48 = getelementptr i8, ptr %47, i64 -8
  store double %45, ptr %48, align 8, !tbaa !9
  br label %49

49:                                               ; preds = %42, %40
  %50 = phi double [ %45, %42 ], [ 0.000000e+00, %40 ]
  %51 = getelementptr double, ptr %20, i64 %37
  %52 = load double, ptr %3, align 8, !tbaa !9
  %53 = fsub double %50, %52
  store double %53, ptr %22, align 8, !tbaa !9
  %.not.not662 = icmp slt i64 %33, %.0609
  br i1 %.not.not662, label %.lr.ph, label %72

.lr.ph:                                           ; preds = %49, %.lr.ph
  %.0603664 = phi i64 [ %.1604, %.lr.ph ], [ 0, %49 ]
  %.0610663 = phi i64 [ %71, %.lr.ph ], [ %33, %49 ]
  %54 = phi double [ %70, %.lr.ph ], [ %53, %49 ]
  %55 = getelementptr inbounds double, ptr %29, i64 %.0610663
  %56 = load double, ptr %55, align 8, !tbaa !9
  %57 = fadd double %56, %54
  %58 = getelementptr inbounds double, ptr %27, i64 %.0610663
  %59 = load double, ptr %58, align 8, !tbaa !9
  %60 = fdiv double %59, %57
  %61 = getelementptr inbounds double, ptr %24, i64 %.0610663
  store double %60, ptr %61, align 8, !tbaa !9
  %62 = fcmp olt double %57, 0.000000e+00
  %63 = zext i1 %62 to i64
  %.1604 = add nuw nsw i64 %.0603664, %63
  %64 = fmul double %54, %60
  %65 = getelementptr inbounds double, ptr %28, i64 %.0610663
  %66 = load double, ptr %65, align 8, !tbaa !9
  %67 = fmul double %64, %66
  %68 = getelementptr double, ptr %51, i64 %.0610663
  store double %67, ptr %68, align 8, !tbaa !9
  %69 = load double, ptr %3, align 8, !tbaa !9
  %70 = fsub double %67, %69
  %71 = add nsw i64 %.0610663, 1
  %exitcond.not = icmp eq i64 %71, %.0609
  br i1 %exitcond.not, label %._crit_edge, label %.lr.ph, !llvm.loop !11

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

72:                                               ; preds = %._crit_edge, %49
  %.0603.lcssa = phi i64 [ %.1604, %._crit_edge ], [ 0, %49 ]
  %73 = call i64 @disnan_(ptr noundef nonnull %22) #6
  %.not = icmp eq i64 %73, 0
  br i1 %.not, label %.preheader652, label %.thread

.preheader652:                                    ; preds = %72
  %.not629.not667 = icmp slt i64 %.0609, %.0608
  br i1 %.not629.not667, label %.lr.ph669.preheader, label %90

.lr.ph669.preheader:                              ; preds = %.preheader652
  %.promoted666 = load double, ptr %22, align 8, !tbaa !9
  br label %.lr.ph669

.lr.ph669:                                        ; preds = %.lr.ph669.preheader, %.lr.ph669
  %.1611668 = phi i64 [ %89, %.lr.ph669 ], [ %.0609, %.lr.ph669.preheader ]
  %74 = phi double [ %88, %.lr.ph669 ], [ %.promoted666, %.lr.ph669.preheader ]
  %75 = getelementptr inbounds double, ptr %29, i64 %.1611668
  %76 = load double, ptr %75, align 8, !tbaa !9
  %77 = fadd double %76, %74
  %78 = getelementptr inbounds double, ptr %27, i64 %.1611668
  %79 = load double, ptr %78, align 8, !tbaa !9
  %80 = fdiv double %79, %77
  %81 = getelementptr inbounds double, ptr %24, i64 %.1611668
  store double %80, ptr %81, align 8, !tbaa !9
  %82 = fmul double %74, %80
  %83 = getelementptr inbounds double, ptr %28, i64 %.1611668
  %84 = load double, ptr %83, align 8, !tbaa !9
  %85 = fmul double %82, %84
  %86 = getelementptr double, ptr %51, i64 %.1611668
  store double %85, ptr %86, align 8, !tbaa !9
  %87 = load double, ptr %3, align 8, !tbaa !9
  %88 = fsub double %85, %87
  %89 = add nsw i64 %.1611668, 1
  %exitcond750.not = icmp eq i64 %89, %.0608
  br i1 %exitcond750.not, label %._crit_edge670, label %.lr.ph669, !llvm.loop !13

._crit_edge670:                                   ; preds = %.lr.ph669
  store double %88, ptr %22, align 8, !tbaa !9
  br label %90

90:                                               ; preds = %._crit_edge670, %.preheader652
  %91 = call i64 @disnan_(ptr noundef nonnull %22) #6
  %.not636 = icmp eq i64 %91, 0
  br i1 %.not636, label %..loopexit651_crit_edge759, label %.thread

..loopexit651_crit_edge759:                       ; preds = %90
  %.pre760 = load double, ptr %3, align 8, !tbaa !9
  br label %.loopexit651

.thread:                                          ; preds = %72, %90
  %92 = load i64, ptr %1, align 8, !tbaa !5
  %93 = getelementptr double, ptr %51, i64 %92
  %94 = getelementptr i8, ptr %93, i64 -8
  %95 = load double, ptr %94, align 8, !tbaa !9
  %96 = load double, ptr %3, align 8, !tbaa !9
  %97 = fsub double %95, %96
  store double %97, ptr %22, align 8, !tbaa !9
  %.not630.not673 = icmp slt i64 %92, %.0609
  br i1 %.not630.not673, label %.lr.ph676, label %.preheader

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

.preheader:                                       ; preds = %..preheader_crit_edge, %.thread
  %98 = phi double [ %126, %..preheader_crit_edge ], [ %96, %.thread ]
  %.promoted679 = phi double [ %127, %..preheader_crit_edge ], [ %97, %.thread ]
  %.2605.lcssa = phi i64 [ %.3606, %..preheader_crit_edge ], [ 0, %.thread ]
  %.not631.not680 = icmp slt i64 %.0609, %.0608
  br i1 %.not631.not680, label %.lr.ph682, label %.loopexit651

.lr.ph676:                                        ; preds = %.thread, %124
  %.2605675 = phi i64 [ %.3606, %124 ], [ 0, %.thread ]
  %.2612674 = phi i64 [ %128, %124 ], [ %92, %.thread ]
  %99 = phi double [ %127, %124 ], [ %97, %.thread ]
  %100 = getelementptr inbounds double, ptr %29, i64 %.2612674
  %101 = load double, ptr %100, align 8, !tbaa !9
  %102 = fadd double %101, %99
  %103 = fcmp oge double %102, 0.000000e+00
  %104 = fneg double %102
  %105 = select i1 %103, double %102, double %104
  %106 = load double, ptr %8, align 8, !tbaa !9
  %107 = fcmp olt double %105, %106
  %108 = fneg double %106
  %.0600 = select i1 %107, double %108, double %102
  %109 = getelementptr inbounds double, ptr %27, i64 %.2612674
  %110 = load double, ptr %109, align 8, !tbaa !9
  %111 = fdiv double %110, %.0600
  %112 = getelementptr inbounds double, ptr %24, i64 %.2612674
  store double %111, ptr %112, align 8, !tbaa !9
  %113 = fcmp olt double %.0600, 0.000000e+00
  %114 = zext i1 %113 to i64
  %.3606 = add nuw nsw i64 %.2605675, %114
  %115 = fmul double %99, %111
  %116 = getelementptr inbounds double, ptr %28, i64 %.2612674
  %117 = load double, ptr %116, align 8, !tbaa !9
  %118 = fmul double %117, %115
  %119 = getelementptr double, ptr %51, i64 %.2612674
  store double %118, ptr %119, align 8, !tbaa !9
  %120 = fcmp oeq double %111, 0.000000e+00
  br i1 %120, label %121, label %124

121:                                              ; preds = %.lr.ph676
  %122 = getelementptr inbounds double, ptr %26, i64 %.2612674
  %123 = load double, ptr %122, align 8, !tbaa !9
  store double %123, ptr %119, align 8, !tbaa !9
  br label %124

124:                                              ; preds = %121, %.lr.ph676
  %125 = phi double [ %123, %121 ], [ %118, %.lr.ph676 ]
  %126 = load double, ptr %3, align 8, !tbaa !9
  %127 = fsub double %125, %126
  %128 = add nsw i64 %.2612674, 1
  %exitcond751.not = icmp eq i64 %128, %.0609
  br i1 %exitcond751.not, label %..preheader_crit_edge, label %.lr.ph676, !llvm.loop !14

.lr.ph682:                                        ; preds = %.preheader, %152
  %.3613681 = phi i64 [ %156, %152 ], [ %.0609, %.preheader ]
  %129 = phi double [ %155, %152 ], [ %.promoted679, %.preheader ]
  %130 = getelementptr inbounds double, ptr %29, i64 %.3613681
  %131 = load double, ptr %130, align 8, !tbaa !9
  %132 = fadd double %131, %129
  %133 = fcmp oge double %132, 0.000000e+00
  %134 = fneg double %132
  %135 = select i1 %133, double %132, double %134
  %136 = load double, ptr %8, align 8, !tbaa !9
  %137 = fcmp olt double %135, %136
  %138 = fneg double %136
  %.1 = select i1 %137, double %138, double %132
  %139 = getelementptr inbounds double, ptr %27, i64 %.3613681
  %140 = load double, ptr %139, align 8, !tbaa !9
  %141 = fdiv double %140, %.1
  %142 = getelementptr inbounds double, ptr %24, i64 %.3613681
  store double %141, ptr %142, align 8, !tbaa !9
  %143 = fmul double %129, %141
  %144 = getelementptr inbounds double, ptr %28, i64 %.3613681
  %145 = load double, ptr %144, align 8, !tbaa !9
  %146 = fmul double %145, %143
  %147 = getelementptr double, ptr %51, i64 %.3613681
  store double %146, ptr %147, align 8, !tbaa !9
  %148 = fcmp oeq double %141, 0.000000e+00
  br i1 %148, label %149, label %152

149:                                              ; preds = %.lr.ph682
  %150 = getelementptr inbounds double, ptr %26, i64 %.3613681
  %151 = load double, ptr %150, align 8, !tbaa !9
  store double %151, ptr %147, align 8, !tbaa !9
  br label %152

152:                                              ; preds = %149, %.lr.ph682
  %153 = phi double [ %151, %149 ], [ %146, %.lr.ph682 ]
  %154 = load double, ptr %3, align 8, !tbaa !9
  %155 = fsub double %153, %154
  %156 = add nsw i64 %.3613681, 1
  %exitcond752.not = icmp eq i64 %156, %.0608
  br i1 %exitcond752.not, label %..loopexit651_crit_edge, label %.lr.ph682, !llvm.loop !15

..loopexit651_crit_edge:                          ; preds = %152
  store double %155, ptr %22, align 8, !tbaa !9
  br label %.loopexit651

.loopexit651:                                     ; preds = %..loopexit651_crit_edge759, %.preheader, %..loopexit651_crit_edge
  %157 = phi double [ %.pre760, %..loopexit651_crit_edge759 ], [ %154, %..loopexit651_crit_edge ], [ %98, %.preheader ]
  %.0645 = phi i64 [ 0, %..loopexit651_crit_edge759 ], [ 1, %..loopexit651_crit_edge ], [ 1, %.preheader ]
  %.4607 = phi i64 [ %.0603.lcssa, %..loopexit651_crit_edge759 ], [ %.2605.lcssa, %..loopexit651_crit_edge ], [ %.2605.lcssa, %.preheader ]
  %158 = load i64, ptr %2, align 8, !tbaa !5
  %159 = getelementptr inbounds double, ptr %29, i64 %158
  %160 = load double, ptr %159, align 8, !tbaa !9
  %161 = fsub double %160, %157
  %162 = getelementptr double, ptr %24, i64 %38
  %163 = getelementptr double, ptr %162, i64 %158
  store double %161, ptr %163, align 8, !tbaa !9
  %.not632.not684 = icmp sgt i64 %158, %.0609
  br i1 %.not632.not684, label %.lr.ph688, label %._crit_edge689

.lr.ph688:                                        ; preds = %.loopexit651
  %164 = getelementptr double, ptr %24, i64 %36
  br label %165

165:                                              ; preds = %.lr.ph688, %165
  %.0601686 = phi i64 [ 0, %.lr.ph688 ], [ %.1602, %165 ]
  %.4614.in685 = phi i64 [ %158, %.lr.ph688 ], [ %.4614, %165 ]
  %.4614 = add nsw i64 %.4614.in685, -1
  %166 = getelementptr inbounds double, ptr %26, i64 %.4614
  %167 = load double, ptr %166, align 8, !tbaa !9
  %168 = getelementptr double, ptr %162, i64 %.4614.in685
  %169 = load double, ptr %168, align 8, !tbaa !9
  %170 = fadd double %167, %169
  %171 = getelementptr inbounds double, ptr %29, i64 %.4614
  %172 = load double, ptr %171, align 8, !tbaa !9
  %173 = fdiv double %172, %170
  %174 = fcmp olt double %170, 0.000000e+00
  %175 = zext i1 %174 to i64
  %.1602 = add nuw nsw i64 %.0601686, %175
  %176 = getelementptr inbounds double, ptr %28, i64 %.4614
  %177 = load double, ptr %176, align 8, !tbaa !9
  %178 = fmul double %173, %177
  %179 = getelementptr double, ptr %164, i64 %.4614
  store double %178, ptr %179, align 8, !tbaa !9
  %180 = load double, ptr %3, align 8, !tbaa !9
  %181 = fneg double %180
  %182 = call double @llvm.fmuladd.f64(double %169, double %173, double %181)
  %183 = getelementptr i8, ptr %168, i64 -8
  store double %182, ptr %183, align 8, !tbaa !9
  %.not632.not = icmp sgt i64 %.4614, %.0609
  br i1 %.not632.not, label %165, label %._crit_edge689, !llvm.loop !16

._crit_edge689:                                   ; preds = %165, %.loopexit651
  %.0601.lcssa = phi i64 [ 0, %.loopexit651 ], [ %.1602, %165 ]
  %184 = getelementptr double, ptr %162, i64 %.0609
  %185 = load double, ptr %184, align 8, !tbaa !9
  store double %185, ptr %23, align 8, !tbaa !9
  %186 = call i64 @disnan_(ptr noundef nonnull %23) #6
  %.not637 = icmp eq i64 %186, 0
  br i1 %.not637, label %.loopexit650, label %187

187:                                              ; preds = %._crit_edge689
  %188 = load i64, ptr %2, align 8, !tbaa !5
  %.not633.not693 = icmp sgt i64 %188, %.0609
  br i1 %.not633.not693, label %.lr.ph698, label %.loopexit650

.lr.ph698:                                        ; preds = %187
  %189 = getelementptr double, ptr %24, i64 %36
  br label %190

190:                                              ; preds = %.lr.ph698, %220
  %.2695 = phi i64 [ 0, %.lr.ph698 ], [ %.3, %220 ]
  %.5615.in694 = phi i64 [ %188, %.lr.ph698 ], [ %.5615696, %220 ]
  %.5615696 = add nsw i64 %.5615.in694, -1
  %191 = getelementptr inbounds double, ptr %26, i64 %.5615696
  %192 = load double, ptr %191, align 8, !tbaa !9
  %193 = getelementptr double, ptr %162, i64 %.5615.in694
  %194 = load double, ptr %193, align 8, !tbaa !9
  %195 = fadd double %192, %194
  %196 = fcmp oge double %195, 0.000000e+00
  %197 = fneg double %195
  %198 = select i1 %196, double %195, double %197
  %199 = load double, ptr %8, align 8, !tbaa !9
  %200 = fcmp olt double %198, %199
  %201 = fneg double %199
  %.0599 = select i1 %200, double %201, double %195
  %202 = getelementptr inbounds double, ptr %29, i64 %.5615696
  %203 = load double, ptr %202, align 8, !tbaa !9
  %204 = fdiv double %203, %.0599
  %205 = fcmp olt double %.0599, 0.000000e+00
  %206 = zext i1 %205 to i64
  %.3 = add nuw nsw i64 %.2695, %206
  %207 = getelementptr inbounds double, ptr %28, i64 %.5615696
  %208 = load double, ptr %207, align 8, !tbaa !9
  %209 = fmul double %208, %204
  %210 = getelementptr double, ptr %189, i64 %.5615696
  store double %209, ptr %210, align 8, !tbaa !9
  %211 = load double, ptr %3, align 8, !tbaa !9
  %212 = fneg double %211
  %213 = call double @llvm.fmuladd.f64(double %194, double %204, double %212)
  %214 = getelementptr i8, ptr %193, i64 -8
  store double %213, ptr %214, align 8, !tbaa !9
  %215 = fcmp oeq double %204, 0.000000e+00
  br i1 %215, label %216, label %220

216:                                              ; preds = %190
  %217 = load double, ptr %202, align 8, !tbaa !9
  %218 = load double, ptr %3, align 8, !tbaa !9
  %219 = fsub double %217, %218
  store double %219, ptr %214, align 8, !tbaa !9
  br label %220

220:                                              ; preds = %190, %216
  %.not633.not = icmp sgt i64 %.5615696, %.0609
  br i1 %.not633.not, label %190, label %..loopexit650_crit_edge, !llvm.loop !17

..loopexit650_crit_edge:                          ; preds = %220
  store double %204, ptr %23, align 8, !tbaa !9
  br label %.loopexit650

.loopexit650:                                     ; preds = %187, %..loopexit650_crit_edge, %._crit_edge689
  %.4 = phi i64 [ %.0601.lcssa, %._crit_edge689 ], [ %.3, %..loopexit650_crit_edge ], [ 0, %187 ]
  %221 = getelementptr double, ptr %51, i64 %.0609
  %222 = getelementptr i8, ptr %221, i64 -8
  %223 = load double, ptr %222, align 8, !tbaa !9
  %224 = load double, ptr %184, align 8, !tbaa !9
  %225 = fadd double %223, %224
  store double %225, ptr %14, align 8, !tbaa !9
  %226 = fcmp olt double %225, 0.000000e+00
  %227 = zext i1 %226 to i64
  %228 = load i64, ptr %11, align 8, !tbaa !5
  %.not634 = icmp eq i64 %228, 0
  %.5 = add i64 %.4, %.4607
  %229 = add i64 %.5, %227
  %storemerge = select i1 %.not634, i64 -1, i64 %229
  store i64 %storemerge, ptr %12, align 8, !tbaa !5
  %230 = fcmp oeq double %225, 0.000000e+00
  br i1 %230, label %231, label %234

231:                                              ; preds = %.loopexit650
  %232 = load double, ptr %222, align 8, !tbaa !9
  %233 = fmul double %30, %232
  store double %233, ptr %14, align 8, !tbaa !9
  br label %234

234:                                              ; preds = %231, %.loopexit650
  %.promoted706 = phi double [ %233, %231 ], [ %225, %.loopexit650 ]
  store i64 %.0609, ptr %15, align 8, !tbaa !5
  %.not635.not701 = icmp slt i64 %.0609, %.0608
  br i1 %.not635.not701, label %.lr.ph704, label %256

.lr.ph704:                                        ; preds = %234
  %235 = getelementptr double, ptr %20, i64 %38
  br label %236

236:                                              ; preds = %.lr.ph704, %254
  %237 = phi double [ %.promoted706, %.lr.ph704 ], [ %255, %254 ]
  %.6702 = phi i64 [ %.0609, %.lr.ph704 ], [ %.pre-phi, %254 ]
  %238 = getelementptr double, ptr %51, i64 %.6702
  %239 = load double, ptr %238, align 8, !tbaa !9
  %240 = getelementptr double, ptr %235, i64 %.6702
  %241 = load double, ptr %240, align 8, !tbaa !9
  %242 = fadd double %239, %241
  %243 = fcmp oeq double %242, 0.000000e+00
  %244 = fmul double %30, %239
  %storemerge646 = select i1 %243, double %244, double %242
  %245 = fcmp oge double %storemerge646, 0.000000e+00
  %246 = fneg double %storemerge646
  %247 = select i1 %245, double %storemerge646, double %246
  %248 = fcmp ult double %237, 0.000000e+00
  %249 = fneg double %237
  %250 = select i1 %248, double %249, double %237
  %251 = fcmp ugt double %247, %250
  br i1 %251, label %._crit_edge767, label %252

._crit_edge767:                                   ; preds = %236
  %.pre = add nsw i64 %.6702, 1
  br label %254

252:                                              ; preds = %236
  store double %storemerge646, ptr %14, align 8, !tbaa !9
  %253 = add nsw i64 %.6702, 1
  store i64 %253, ptr %15, align 8, !tbaa !5
  br label %254

254:                                              ; preds = %._crit_edge767, %252
  %.pre-phi = phi i64 [ %.pre, %._crit_edge767 ], [ %253, %252 ]
  %255 = phi double [ %237, %._crit_edge767 ], [ %storemerge646, %252 ]
  %exitcond753.not = icmp eq i64 %.pre-phi, %.0608
  br i1 %exitcond753.not, label %._crit_edge705, label %236, !llvm.loop !18

._crit_edge705:                                   ; preds = %254
  store double %storemerge646, ptr %23, align 8, !tbaa !9
  br label %256

256:                                              ; preds = %._crit_edge705, %234
  %257 = load i64, ptr %1, align 8, !tbaa !5
  store i64 %257, ptr %16, align 8, !tbaa !5
  %258 = load i64, ptr %2, align 8, !tbaa !5
  %259 = getelementptr inbounds i8, ptr %16, i64 8
  store i64 %258, ptr %259, align 8, !tbaa !5
  %260 = load i64, ptr %15, align 8, !tbaa !5
  %261 = getelementptr inbounds %struct.doublecomplex, ptr %25, i64 %260
  store <2 x double> <double 1.000000e+00, double 0.000000e+00>, ptr %261, align 8, !tbaa !9
  store double 1.000000e+00, ptr %13, align 8, !tbaa !9
  %262 = or i64 %186, %.0645
  %or.cond.not = icmp eq i64 %262, 0
  %263 = load i64, ptr %1, align 8, !tbaa !5
  %.not638.not714 = icmp sgt i64 %260, %263
  br i1 %or.cond.not, label %264, label %294

264:                                              ; preds = %256
  br i1 %.not638.not714, label %.lr.ph718, label %.loopexit648.thread

.lr.ph718:                                        ; preds = %264, %285
  %.7.in715 = phi i64 [ %.7716, %285 ], [ %260, %264 ]
  %.7716 = add nsw i64 %.7.in715, -1
  %265 = getelementptr inbounds double, ptr %24, i64 %.7716
  %266 = load double, ptr %265, align 8, !tbaa !9
  %267 = getelementptr inbounds %struct.doublecomplex, ptr %25, i64 %.7.in715
  %268 = fneg double %266
  %269 = getelementptr inbounds %struct.doublecomplex, ptr %25, i64 %.7716
  %270 = load <2 x double>, ptr %267, align 8, !tbaa !9
  %271 = insertelement <2 x double> poison, double %268, i64 0
  %272 = shufflevector <2 x double> %271, <2 x double> poison, <2 x i32> zeroinitializer
  %273 = fmul <2 x double> %270, %272
  store <2 x double> %273, ptr %269, align 8, !tbaa !9
  %274 = call double @z_abs(ptr noundef nonnull %269) #6
  %275 = call double @z_abs(ptr noundef nonnull %267) #6
  %276 = fadd double %274, %275
  %277 = getelementptr inbounds double, ptr %27, i64 %.7716
  %278 = load double, ptr %277, align 8, !tbaa !9
  %279 = fcmp oge double %278, 0.000000e+00
  %280 = fneg double %278
  %281 = select i1 %279, double %278, double %280
  %282 = fmul double %276, %281
  %283 = load double, ptr %9, align 8, !tbaa !9
  %284 = fcmp olt double %282, %283
  br i1 %284, label %.loopexit648.sink.split, label %285

285:                                              ; preds = %.lr.ph718
  %286 = getelementptr inbounds i8, ptr %269, i64 8
  %287 = load double, ptr %269, align 8, !tbaa !19
  %288 = load double, ptr %286, align 8, !tbaa !21
  %289 = fneg double %288
  %290 = fmul double %288, %289
  %291 = call double @llvm.fmuladd.f64(double %287, double %287, double %290)
  %292 = load double, ptr %13, align 8, !tbaa !9
  %293 = fadd double %292, %291
  store double %293, ptr %13, align 8, !tbaa !9
  %.not638.not = icmp sgt i64 %.7716, %263
  br i1 %.not638.not, label %.lr.ph718, label %.loopexit648, !llvm.loop !22

294:                                              ; preds = %256
  br i1 %.not638.not714, label %.lr.ph712, label %.loopexit648.thread768

.lr.ph712:                                        ; preds = %294, %334
  %.8.in709 = phi i64 [ %.8710, %334 ], [ %260, %294 ]
  %.8710 = add nsw i64 %.8.in709, -1
  %295 = getelementptr inbounds %struct.doublecomplex, ptr %25, i64 %.8.in709
  %296 = load <2 x double>, ptr %295, align 8, !tbaa !9
  %297 = extractelement <2 x double> %296, i64 0
  %298 = fcmp oeq double %297, 0.000000e+00
  %299 = extractelement <2 x double> %296, i64 1
  %300 = fcmp oeq double %299, 0.000000e+00
  %or.cond = select i1 %298, i1 %300, i1 false
  br i1 %or.cond, label %301, label %.lr.ph712._crit_edge

301:                                              ; preds = %.lr.ph712
  %302 = getelementptr inbounds double, ptr %27, i64 %.8.in709
  %303 = load double, ptr %302, align 8, !tbaa !9
  %304 = getelementptr inbounds double, ptr %27, i64 %.8710
  %305 = load double, ptr %304, align 8, !tbaa !9
  %306 = fneg double %303
  %307 = fdiv double %306, %305
  %308 = getelementptr %struct.doublecomplex, ptr %10, i64 %.8.in709
  %309 = load <2 x double>, ptr %308, align 8, !tbaa !9
  %310 = insertelement <2 x double> poison, double %307, i64 0
  %311 = shufflevector <2 x double> %310, <2 x double> poison, <2 x i32> zeroinitializer
  %312 = fmul <2 x double> %311, %309
  br label %319

.lr.ph712._crit_edge:                             ; preds = %.lr.ph712
  %313 = getelementptr inbounds double, ptr %24, i64 %.8710
  %314 = load double, ptr %313, align 8, !tbaa !9
  %315 = fneg double %314
  %316 = insertelement <2 x double> poison, double %315, i64 0
  %317 = shufflevector <2 x double> %316, <2 x double> poison, <2 x i32> zeroinitializer
  %318 = fmul <2 x double> %296, %317
  br label %319

319:                                              ; preds = %.lr.ph712._crit_edge, %301
  %320 = phi <2 x double> [ %318, %.lr.ph712._crit_edge ], [ %312, %301 ]
  %321 = getelementptr inbounds %struct.doublecomplex, ptr %25, i64 %.8710
  store <2 x double> %320, ptr %321, align 8, !tbaa !9
  %322 = getelementptr inbounds %struct.doublecomplex, ptr %25, i64 %.8710
  %323 = call double @z_abs(ptr noundef nonnull %322) #6
  %324 = call double @z_abs(ptr noundef nonnull %295) #6
  %325 = fadd double %323, %324
  %326 = getelementptr inbounds double, ptr %27, i64 %.8710
  %327 = load double, ptr %326, align 8, !tbaa !9
  %328 = fcmp oge double %327, 0.000000e+00
  %329 = fneg double %327
  %330 = select i1 %328, double %327, double %329
  %331 = fmul double %325, %330
  %332 = load double, ptr %9, align 8, !tbaa !9
  %333 = fcmp olt double %331, %332
  br i1 %333, label %.loopexit648.sink.split, label %334

334:                                              ; preds = %319
  %335 = load double, ptr %322, align 8, !tbaa !19
  %336 = getelementptr inbounds i8, ptr %322, i64 8
  %337 = load double, ptr %336, align 8, !tbaa !21
  %338 = fneg double %337
  %339 = fmul double %337, %338
  %340 = call double @llvm.fmuladd.f64(double %335, double %335, double %339)
  %341 = load double, ptr %13, align 8, !tbaa !9
  %342 = fadd double %341, %340
  store double %342, ptr %13, align 8, !tbaa !9
  %.not639.not = icmp sgt i64 %.8710, %263
  br i1 %.not639.not, label %.lr.ph712, label %.loopexit648, !llvm.loop !23

.loopexit648.sink.split:                          ; preds = %319, %.lr.ph718
  %.lcssa780.sink = phi ptr [ %269, %.lr.ph718 ], [ %322, %319 ]
  %.8.in709.lcssa.sink = phi i64 [ %.7.in715, %.lr.ph718 ], [ %.8.in709, %319 ]
  call void @llvm.memset.p0.i64(ptr noundef nonnull align 8 dereferenceable(16) %.lcssa780.sink, i8 0, i64 16, i1 false)
  store i64 %.8.in709.lcssa.sink, ptr %16, align 8, !tbaa !5
  br label %.loopexit648

.loopexit648:                                     ; preds = %334, %285, %.loopexit648.sink.split
  br i1 %or.cond.not, label %.loopexit648.thread, label %.loopexit648.thread768

.loopexit648.thread:                              ; preds = %264, %.loopexit648
  %343 = load i64, ptr %2, align 8, !tbaa !5
  %344 = load i64, ptr %15, align 8, !tbaa !5
  %.not640.not723 = icmp slt i64 %344, %343
  br i1 %.not640.not723, label %.lr.ph726, label %.loopexit

.lr.ph726:                                        ; preds = %.loopexit648.thread
  %345 = getelementptr double, ptr %24, i64 %36
  br label %346

346:                                              ; preds = %.lr.ph726, %367
  %.9724 = phi i64 [ %344, %.lr.ph726 ], [ %369, %367 ]
  %347 = getelementptr double, ptr %345, i64 %.9724
  %348 = load double, ptr %347, align 8, !tbaa !9
  %349 = getelementptr inbounds %struct.doublecomplex, ptr %25, i64 %.9724
  %350 = fneg double %348
  %351 = getelementptr %struct.doublecomplex, ptr %10, i64 %.9724
  %352 = load <2 x double>, ptr %349, align 8, !tbaa !9
  %353 = insertelement <2 x double> poison, double %350, i64 0
  %354 = shufflevector <2 x double> %353, <2 x double> poison, <2 x i32> zeroinitializer
  %355 = fmul <2 x double> %352, %354
  store <2 x double> %355, ptr %351, align 8, !tbaa !9
  %356 = call double @z_abs(ptr noundef nonnull %349) #6
  %357 = call double @z_abs(ptr noundef nonnull %351) #6
  %358 = fadd double %356, %357
  %359 = getelementptr inbounds double, ptr %27, i64 %.9724
  %360 = load double, ptr %359, align 8, !tbaa !9
  %361 = fcmp oge double %360, 0.000000e+00
  %362 = fneg double %360
  %363 = select i1 %361, double %360, double %362
  %364 = fmul double %358, %363
  %365 = load double, ptr %9, align 8, !tbaa !9
  %366 = fcmp olt double %364, %365
  br i1 %366, label %.loopexit.sink.split, label %367

367:                                              ; preds = %346
  %368 = getelementptr inbounds i8, ptr %351, i64 8
  %369 = add i64 %.9724, 1
  %370 = load double, ptr %351, align 8, !tbaa !19
  %371 = load double, ptr %368, align 8, !tbaa !21
  %372 = fneg double %371
  %373 = fmul double %371, %372
  %374 = call double @llvm.fmuladd.f64(double %370, double %370, double %373)
  %375 = load double, ptr %13, align 8, !tbaa !9
  %376 = fadd double %375, %374
  store double %376, ptr %13, align 8, !tbaa !9
  %exitcond755.not = icmp eq i64 %369, %343
  br i1 %exitcond755.not, label %.loopexit, label %346, !llvm.loop !24

.loopexit648.thread768:                           ; preds = %294, %.loopexit648
  %377 = load i64, ptr %2, align 8, !tbaa !5
  %378 = load i64, ptr %15, align 8, !tbaa !5
  %.not641.not719 = icmp slt i64 %378, %377
  br i1 %.not641.not719, label %.lr.ph722, label %.loopexit

.lr.ph722:                                        ; preds = %.loopexit648.thread768
  %379 = getelementptr double, ptr %24, i64 %36
  br label %380

380:                                              ; preds = %.lr.ph722, %421
  %.10720 = phi i64 [ %378, %.lr.ph722 ], [ %422, %421 ]
  %381 = getelementptr inbounds %struct.doublecomplex, ptr %25, i64 %.10720
  %382 = load <2 x double>, ptr %381, align 8, !tbaa !9
  %383 = extractelement <2 x double> %382, i64 0
  %384 = fcmp oeq double %383, 0.000000e+00
  %385 = extractelement <2 x double> %382, i64 1
  %386 = fcmp oeq double %385, 0.000000e+00
  %or.cond793 = select i1 %384, i1 %386, i1 false
  br i1 %or.cond793, label %387, label %._crit_edge764

387:                                              ; preds = %380
  %388 = add nsw i64 %.10720, -1
  %389 = getelementptr inbounds double, ptr %27, i64 %388
  %390 = load double, ptr %389, align 8, !tbaa !9
  %391 = getelementptr inbounds double, ptr %27, i64 %.10720
  %392 = load double, ptr %391, align 8, !tbaa !9
  %393 = fneg double %390
  %394 = fdiv double %393, %392
  %395 = getelementptr inbounds %struct.doublecomplex, ptr %25, i64 %388
  %396 = load <2 x double>, ptr %395, align 8, !tbaa !9
  %397 = insertelement <2 x double> poison, double %394, i64 0
  %398 = shufflevector <2 x double> %397, <2 x double> poison, <2 x i32> zeroinitializer
  %399 = fmul <2 x double> %398, %396
  br label %406

._crit_edge764:                                   ; preds = %380
  %400 = getelementptr double, ptr %379, i64 %.10720
  %401 = load double, ptr %400, align 8, !tbaa !9
  %402 = fneg double %401
  %403 = insertelement <2 x double> poison, double %402, i64 0
  %404 = shufflevector <2 x double> %403, <2 x double> poison, <2 x i32> zeroinitializer
  %405 = fmul <2 x double> %382, %404
  br label %406

406:                                              ; preds = %._crit_edge764, %387
  %407 = phi <2 x double> [ %405, %._crit_edge764 ], [ %399, %387 ]
  %408 = getelementptr %struct.doublecomplex, ptr %10, i64 %.10720
  store <2 x double> %407, ptr %408, align 8, !tbaa !9
  %409 = call double @z_abs(ptr noundef nonnull %381) #6
  %410 = getelementptr %struct.doublecomplex, ptr %10, i64 %.10720
  %411 = call double @z_abs(ptr noundef %410) #6
  %412 = fadd double %409, %411
  %413 = getelementptr inbounds double, ptr %27, i64 %.10720
  %414 = load double, ptr %413, align 8, !tbaa !9
  %415 = fcmp oge double %414, 0.000000e+00
  %416 = fneg double %414
  %417 = select i1 %415, double %414, double %416
  %418 = fmul double %412, %417
  %419 = load double, ptr %9, align 8, !tbaa !9
  %420 = fcmp olt double %418, %419
  br i1 %420, label %.loopexit.sink.split, label %421

421:                                              ; preds = %406
  %422 = add i64 %.10720, 1
  %423 = load double, ptr %410, align 8, !tbaa !19
  %424 = getelementptr inbounds i8, ptr %410, i64 8
  %425 = load double, ptr %424, align 8, !tbaa !21
  %426 = fneg double %425
  %427 = fmul double %425, %426
  %428 = call double @llvm.fmuladd.f64(double %423, double %423, double %427)
  %429 = load double, ptr %13, align 8, !tbaa !9
  %430 = fadd double %429, %428
  store double %430, ptr %13, align 8, !tbaa !9
  %exitcond754.not = icmp eq i64 %422, %377
  br i1 %exitcond754.not, label %.loopexit, label %380, !llvm.loop !25

.loopexit.sink.split:                             ; preds = %406, %346
  %.lcssa774.sink = phi ptr [ %351, %346 ], [ %410, %406 ]
  %.10720.lcssa.sink = phi i64 [ %.9724, %346 ], [ %.10720, %406 ]
  call void @llvm.memset.p0.i64(ptr noundef nonnull align 8 dereferenceable(16) %.lcssa774.sink, i8 0, i64 16, i1 false)
  store i64 %.10720.lcssa.sink, ptr %259, align 8, !tbaa !5
  br label %.loopexit

.loopexit:                                        ; preds = %421, %367, %.loopexit.sink.split, %.loopexit648.thread768, %.loopexit648.thread
  %431 = load double, ptr %13, align 8, !tbaa !9
  %432 = fdiv double 1.000000e+00, %431
  store double %432, ptr %23, align 8, !tbaa !9
  %433 = call double @sqrt(double noundef %432) #6
  store double %433, ptr %17, align 8, !tbaa !9
  %434 = load double, ptr %14, align 8, !tbaa !9
  %435 = fcmp ult double %434, 0.000000e+00
  %436 = fneg double %434
  %437 = select i1 %435, double %436, double %434
  %438 = fmul double %433, %437
  store double %438, ptr %18, align 8, !tbaa !9
  %439 = load double, ptr %14, align 8, !tbaa !9
  %440 = load double, ptr %23, align 8, !tbaa !9
  %441 = fmul double %439, %440
  store double %441, ptr %19, align 8, !tbaa !9
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %23) #6
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %22) #6
  ret i32 0
}

; 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 i64 @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

declare double @z_abs(ptr noundef) local_unnamed_addr #2

; 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

; Function Attrs: nocallback nofree nounwind willreturn memory(argmem: write)
declare void @llvm.memset.p0.i64(ptr nocapture writeonly, i8, i64, i1 immarg) #5

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

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

!0 = !{i32 1, !"wchar_size", i32 4}
!1 = !{i32 8, !"PIC Level", i32 2}
!2 = !{i32 7, !"PIE Level", i32 2}
!3 = !{i32 7, !"uwtable", i32 2}
!4 = !{!"clang version 19.1.0 (git@github.com:llvm/llvm-project.git a4bf6cd7cfb1a1421ba92bca9d017b49936c55e4)"}
!5 = !{!6, !6, i64 0}
!6 = !{!"long", !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 = !{!20, !10, i64 0}
!20 = !{!"", !10, i64 0, !10, i64 8}
!21 = !{!20, !10, i64 8}
!22 = distinct !{!22, !12}
!23 = distinct !{!23, !12}
!24 = distinct !{!24, !12}
!25 = distinct !{!25, !12}


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