; LLVM IR from niuyishuai/PDCABB :: LAPACK_BLAS/BLAS/TESTING (zblat3)

; 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.cilist = type { i64, i64, i64, ptr, i64 }
%struct.doublecomplex = type { double, double }

@c__1 = external hidden global i64, align 8
@c__2 = external hidden global i64, align 8
@zmmch_.io___382 = external hidden global %struct.cilist, align 8
@zmmch_.io___383 = external hidden global %struct.cilist, align 8
@zmmch_.io___384 = external hidden global %struct.cilist, align 8
@zmmch_.io___385 = external hidden global %struct.cilist, align 8

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

declare i64 @s_wsfe(ptr noundef) #1

declare i64 @do_fio(ptr noundef, ptr noundef, i64 noundef) #1

declare i64 @e_wsfe() #1

; Function Attrs: nounwind uwtable
define dso_local i32 @zmmch_(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, ptr noundef %21, i64 noundef %22, i64 noundef %23) #2 {
  %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 ptr, align 8
  %44 = alloca ptr, align 8
  %45 = alloca ptr, align 8
  %46 = alloca ptr, align 8
  %47 = alloca i64, align 8
  %48 = alloca i64, align 8
  %49 = alloca i64, align 8
  %50 = alloca i64, align 8
  %51 = alloca i64, align 8
  %52 = alloca i64, align 8
  %53 = alloca i64, align 8
  %54 = alloca i64, align 8
  %55 = alloca i64, align 8
  %56 = alloca i64, align 8
  %57 = alloca i64, align 8
  %58 = alloca i64, align 8
  %59 = alloca i64, align 8
  %60 = alloca i64, align 8
  %61 = alloca i64, align 8
  %62 = alloca i64, align 8
  %63 = alloca i64, align 8
  %64 = alloca double, align 8
  %65 = alloca double, align 8
  %66 = alloca double, align 8
  %67 = alloca double, align 8
  %68 = alloca double, align 8
  %69 = alloca double, align 8
  %70 = alloca %struct.doublecomplex, align 8
  %71 = alloca %struct.doublecomplex, align 8
  %72 = alloca %struct.doublecomplex, align 8
  %73 = alloca %struct.doublecomplex, align 8
  %74 = alloca i64, align 8
  %75 = alloca i64, align 8
  %76 = alloca i64, align 8
  %77 = alloca double, align 8
  %78 = alloca i64, align 8
  %79 = alloca i64, align 8
  %80 = alloca i64, align 8
  %81 = alloca i64, align 8
  store ptr %0, ptr %25, align 8, !tbaa !5
  store ptr %1, ptr %26, align 8, !tbaa !5
  store ptr %2, ptr %27, align 8, !tbaa !5
  store ptr %3, ptr %28, align 8, !tbaa !5
  store ptr %4, ptr %29, align 8, !tbaa !5
  store ptr %5, ptr %30, align 8, !tbaa !5
  store ptr %6, ptr %31, align 8, !tbaa !5
  store ptr %7, ptr %32, align 8, !tbaa !5
  store ptr %8, ptr %33, align 8, !tbaa !5
  store ptr %9, ptr %34, align 8, !tbaa !5
  store ptr %10, ptr %35, align 8, !tbaa !5
  store ptr %11, ptr %36, align 8, !tbaa !5
  store ptr %12, ptr %37, align 8, !tbaa !5
  store ptr %13, ptr %38, align 8, !tbaa !5
  store ptr %14, ptr %39, align 8, !tbaa !5
  store ptr %15, ptr %40, align 8, !tbaa !5
  store ptr %16, ptr %41, align 8, !tbaa !5
  store ptr %17, ptr %42, align 8, !tbaa !5
  store ptr %18, ptr %43, align 8, !tbaa !5
  store ptr %19, ptr %44, align 8, !tbaa !5
  store ptr %20, ptr %45, align 8, !tbaa !5
  store ptr %21, ptr %46, align 8, !tbaa !5
  store i64 %22, ptr %47, align 8, !tbaa !9
  store i64 %23, ptr %48, align 8, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 8, 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
  call void @llvm.lifetime.start.p0(i64 8, ptr %66) #5
  call void @llvm.lifetime.start.p0(i64 8, ptr %67) #5
  call void @llvm.lifetime.start.p0(i64 8, ptr %68) #5
  call void @llvm.lifetime.start.p0(i64 8, ptr %69) #5
  call void @llvm.lifetime.start.p0(i64 16, ptr %70) #5
  call void @llvm.lifetime.start.p0(i64 16, ptr %71) #5
  call void @llvm.lifetime.start.p0(i64 16, ptr %72) #5
  call void @llvm.lifetime.start.p0(i64 16, ptr %73) #5
  call void @llvm.lifetime.start.p0(i64 8, ptr %74) #5
  call void @llvm.lifetime.start.p0(i64 8, ptr %75) #5
  call void @llvm.lifetime.start.p0(i64 8, ptr %76) #5
  call void @llvm.lifetime.start.p0(i64 8, ptr %77) #5
  call void @llvm.lifetime.start.p0(i64 8, ptr %78) #5
  call void @llvm.lifetime.start.p0(i64 8, ptr %79) #5
  call void @llvm.lifetime.start.p0(i64 8, ptr %80) #5
  call void @llvm.lifetime.start.p0(i64 8, ptr %81) #5
  %82 = load ptr, ptr %32, align 8, !tbaa !5
  %83 = load i64, ptr %82, align 8, !tbaa !9
  store i64 %83, ptr %49, align 8, !tbaa !9
  %84 = load i64, ptr %49, align 8, !tbaa !9
  %85 = add nsw i64 1, %84
  store i64 %85, ptr %50, align 8, !tbaa !9
  %86 = load i64, ptr %50, align 8, !tbaa !9
  %87 = load ptr, ptr %31, align 8, !tbaa !5
  %88 = sub i64 0, %86
  %89 = getelementptr inbounds %struct.doublecomplex, ptr %87, i64 %88
  store ptr %89, ptr %31, align 8, !tbaa !5
  %90 = load ptr, ptr %34, align 8, !tbaa !5
  %91 = load i64, ptr %90, align 8, !tbaa !9
  store i64 %91, ptr %51, align 8, !tbaa !9
  %92 = load i64, ptr %51, align 8, !tbaa !9
  %93 = add nsw i64 1, %92
  store i64 %93, ptr %52, align 8, !tbaa !9
  %94 = load i64, ptr %52, align 8, !tbaa !9
  %95 = load ptr, ptr %33, align 8, !tbaa !5
  %96 = sub i64 0, %94
  %97 = getelementptr inbounds %struct.doublecomplex, ptr %95, i64 %96
  store ptr %97, ptr %33, align 8, !tbaa !5
  %98 = load ptr, ptr %37, align 8, !tbaa !5
  %99 = load i64, ptr %98, align 8, !tbaa !9
  store i64 %99, ptr %53, align 8, !tbaa !9
  %100 = load i64, ptr %53, align 8, !tbaa !9
  %101 = add nsw i64 1, %100
  store i64 %101, ptr %54, align 8, !tbaa !9
  %102 = load i64, ptr %54, align 8, !tbaa !9
  %103 = load ptr, ptr %36, align 8, !tbaa !5
  %104 = sub i64 0, %102
  %105 = getelementptr inbounds %struct.doublecomplex, ptr %103, i64 %104
  store ptr %105, ptr %36, align 8, !tbaa !5
  %106 = load ptr, ptr %38, align 8, !tbaa !5
  %107 = getelementptr inbounds %struct.doublecomplex, ptr %106, i32 -1
  store ptr %107, ptr %38, align 8, !tbaa !5
  %108 = load ptr, ptr %39, align 8, !tbaa !5
  %109 = getelementptr inbounds double, ptr %108, i32 -1
  store ptr %109, ptr %39, align 8, !tbaa !5
  %110 = load ptr, ptr %41, align 8, !tbaa !5
  %111 = load i64, ptr %110, align 8, !tbaa !9
  store i64 %111, ptr %55, align 8, !tbaa !9
  %112 = load i64, ptr %55, align 8, !tbaa !9
  %113 = add nsw i64 1, %112
  store i64 %113, ptr %56, align 8, !tbaa !9
  %114 = load i64, ptr %56, align 8, !tbaa !9
  %115 = load ptr, ptr %40, align 8, !tbaa !5
  %116 = sub i64 0, %114
  %117 = getelementptr inbounds %struct.doublecomplex, ptr %115, i64 %116
  store ptr %117, ptr %40, align 8, !tbaa !5
  %118 = load ptr, ptr %25, align 8, !tbaa !5
  %119 = load i8, ptr %118, align 1, !tbaa !11
  %120 = zext i8 %119 to i32
  %121 = icmp eq i32 %120, 84
  br i1 %121, label %127, label %122

122:                                              ; preds = %24
  %123 = load ptr, ptr %25, align 8, !tbaa !5
  %124 = load i8, ptr %123, align 1, !tbaa !11
  %125 = zext i8 %124 to i32
  %126 = icmp eq i32 %125, 67
  br label %127

127:                                              ; preds = %122, %24
  %128 = phi i1 [ true, %24 ], [ %126, %122 ]
  %129 = zext i1 %128 to i32
  %130 = sext i32 %129 to i64
  store i64 %130, ptr %78, align 8, !tbaa !9
  %131 = load ptr, ptr %26, align 8, !tbaa !5
  %132 = load i8, ptr %131, align 1, !tbaa !11
  %133 = zext i8 %132 to i32
  %134 = icmp eq i32 %133, 84
  br i1 %134, label %140, label %135

135:                                              ; preds = %127
  %136 = load ptr, ptr %26, align 8, !tbaa !5
  %137 = load i8, ptr %136, align 1, !tbaa !11
  %138 = zext i8 %137 to i32
  %139 = icmp eq i32 %138, 67
  br label %140

140:                                              ; preds = %135, %127
  %141 = phi i1 [ true, %127 ], [ %139, %135 ]
  %142 = zext i1 %141 to i32
  %143 = sext i32 %142 to i64
  store i64 %143, ptr %79, align 8, !tbaa !9
  %144 = load ptr, ptr %25, align 8, !tbaa !5
  %145 = load i8, ptr %144, align 1, !tbaa !11
  %146 = zext i8 %145 to i32
  %147 = icmp eq i32 %146, 67
  %148 = zext i1 %147 to i32
  %149 = sext i32 %148 to i64
  store i64 %149, ptr %80, align 8, !tbaa !9
  %150 = load ptr, ptr %26, align 8, !tbaa !5
  %151 = load i8, ptr %150, align 1, !tbaa !11
  %152 = zext i8 %151 to i32
  %153 = icmp eq i32 %152, 67
  %154 = zext i1 %153 to i32
  %155 = sext i32 %154 to i64
  store i64 %155, ptr %81, align 8, !tbaa !9
  %156 = load ptr, ptr %28, align 8, !tbaa !5
  %157 = load i64, ptr %156, align 8, !tbaa !9
  store i64 %157, ptr %57, align 8, !tbaa !9
  store i64 1, ptr %75, align 8, !tbaa !9
  br label %158

158:                                              ; preds = %2213, %140
  %159 = load i64, ptr %75, align 8, !tbaa !9
  %160 = load i64, ptr %57, align 8, !tbaa !9
  %161 = icmp sle i64 %159, %160
  br i1 %161, label %162, label %2216

162:                                              ; preds = %158
  %163 = load ptr, ptr %27, align 8, !tbaa !5
  %164 = load i64, ptr %163, align 8, !tbaa !9
  store i64 %164, ptr %58, align 8, !tbaa !9
  store i64 1, ptr %74, align 8, !tbaa !9
  br label %165

165:                                              ; preds = %182, %162
  %166 = load i64, ptr %74, align 8, !tbaa !9
  %167 = load i64, ptr %58, align 8, !tbaa !9
  %168 = icmp sle i64 %166, %167
  br i1 %168, label %169, label %185

169:                                              ; preds = %165
  %170 = load i64, ptr %74, align 8, !tbaa !9
  store i64 %170, ptr %59, align 8, !tbaa !9
  %171 = load ptr, ptr %38, align 8, !tbaa !5
  %172 = load i64, ptr %59, align 8, !tbaa !9
  %173 = getelementptr inbounds %struct.doublecomplex, ptr %171, i64 %172
  %174 = getelementptr inbounds %struct.doublecomplex, ptr %173, i32 0, i32 0
  store double 0.000000e+00, ptr %174, align 8, !tbaa !12
  %175 = load ptr, ptr %38, align 8, !tbaa !5
  %176 = load i64, ptr %59, align 8, !tbaa !9
  %177 = getelementptr inbounds %struct.doublecomplex, ptr %175, i64 %176
  %178 = getelementptr inbounds %struct.doublecomplex, ptr %177, i32 0, i32 1
  store double 0.000000e+00, ptr %178, align 8, !tbaa !15
  %179 = load ptr, ptr %39, align 8, !tbaa !5
  %180 = load i64, ptr %74, align 8, !tbaa !9
  %181 = getelementptr inbounds double, ptr %179, i64 %180
  store double 0.000000e+00, ptr %181, align 8, !tbaa !16
  br label %182

182:                                              ; preds = %169
  %183 = load i64, ptr %74, align 8, !tbaa !9
  %184 = add nsw i64 %183, 1
  store i64 %184, ptr %74, align 8, !tbaa !9
  br label %165, !llvm.loop !17

185:                                              ; preds = %165
  %186 = load i64, ptr %78, align 8, !tbaa !9
  %187 = icmp ne i64 %186, 0
  br i1 %187, label %382, label %188

188:                                              ; preds = %185
  %189 = load i64, ptr %79, align 8, !tbaa !9
  %190 = icmp ne i64 %189, 0
  br i1 %190, label %382, label %191

191:                                              ; preds = %188
  %192 = load ptr, ptr %29, align 8, !tbaa !5
  %193 = load i64, ptr %192, align 8, !tbaa !9
  store i64 %193, ptr %58, align 8, !tbaa !9
  store i64 1, ptr %76, align 8, !tbaa !9
  br label %194

194:                                              ; preds = %378, %191
  %195 = load i64, ptr %76, align 8, !tbaa !9
  %196 = load i64, ptr %58, align 8, !tbaa !9
  %197 = icmp sle i64 %195, %196
  br i1 %197, label %198, label %381

198:                                              ; preds = %194
  %199 = load ptr, ptr %27, align 8, !tbaa !5
  %200 = load i64, ptr %199, align 8, !tbaa !9
  store i64 %200, ptr %59, align 8, !tbaa !9
  store i64 1, ptr %74, align 8, !tbaa !9
  br label %201

201:                                              ; preds = %374, %198
  %202 = load i64, ptr %74, align 8, !tbaa !9
  %203 = load i64, ptr %59, align 8, !tbaa !9
  %204 = icmp sle i64 %202, %203
  br i1 %204, label %205, label %377

205:                                              ; preds = %201
  %206 = load i64, ptr %74, align 8, !tbaa !9
  store i64 %206, ptr %60, align 8, !tbaa !9
  %207 = load i64, ptr %74, align 8, !tbaa !9
  store i64 %207, ptr %61, align 8, !tbaa !9
  %208 = load i64, ptr %74, align 8, !tbaa !9
  %209 = load i64, ptr %76, align 8, !tbaa !9
  %210 = load i64, ptr %49, align 8, !tbaa !9
  %211 = mul nsw i64 %209, %210
  %212 = add nsw i64 %208, %211
  store i64 %212, ptr %62, align 8, !tbaa !9
  %213 = load i64, ptr %76, align 8, !tbaa !9
  %214 = load i64, ptr %75, align 8, !tbaa !9
  %215 = load i64, ptr %51, align 8, !tbaa !9
  %216 = mul nsw i64 %214, %215
  %217 = add nsw i64 %213, %216
  store i64 %217, ptr %63, align 8, !tbaa !9
  %218 = load ptr, ptr %31, align 8, !tbaa !5
  %219 = load i64, ptr %62, align 8, !tbaa !9
  %220 = getelementptr inbounds %struct.doublecomplex, ptr %218, i64 %219
  %221 = getelementptr inbounds %struct.doublecomplex, ptr %220, i32 0, i32 0
  %222 = load double, ptr %221, align 8, !tbaa !12
  %223 = load ptr, ptr %33, align 8, !tbaa !5
  %224 = load i64, ptr %63, align 8, !tbaa !9
  %225 = getelementptr inbounds %struct.doublecomplex, ptr %223, i64 %224
  %226 = getelementptr inbounds %struct.doublecomplex, ptr %225, i32 0, i32 0
  %227 = load double, ptr %226, align 8, !tbaa !12
  %228 = load ptr, ptr %31, align 8, !tbaa !5
  %229 = load i64, ptr %62, align 8, !tbaa !9
  %230 = getelementptr inbounds %struct.doublecomplex, ptr %228, i64 %229
  %231 = getelementptr inbounds %struct.doublecomplex, ptr %230, i32 0, i32 1
  %232 = load double, ptr %231, align 8, !tbaa !15
  %233 = load ptr, ptr %33, align 8, !tbaa !5
  %234 = load i64, ptr %63, align 8, !tbaa !9
  %235 = getelementptr inbounds %struct.doublecomplex, ptr %233, i64 %234
  %236 = getelementptr inbounds %struct.doublecomplex, ptr %235, i32 0, i32 1
  %237 = load double, ptr %236, align 8, !tbaa !15
  %238 = fmul double %232, %237
  %239 = fneg double %238
  %240 = call double @llvm.fmuladd.f64(double %222, double %227, double %239)
  %241 = getelementptr inbounds %struct.doublecomplex, ptr %71, i32 0, i32 0
  store double %240, ptr %241, align 8, !tbaa !12
  %242 = load ptr, ptr %31, align 8, !tbaa !5
  %243 = load i64, ptr %62, align 8, !tbaa !9
  %244 = getelementptr inbounds %struct.doublecomplex, ptr %242, i64 %243
  %245 = getelementptr inbounds %struct.doublecomplex, ptr %244, i32 0, i32 0
  %246 = load double, ptr %245, align 8, !tbaa !12
  %247 = load ptr, ptr %33, align 8, !tbaa !5
  %248 = load i64, ptr %63, align 8, !tbaa !9
  %249 = getelementptr inbounds %struct.doublecomplex, ptr %247, i64 %248
  %250 = getelementptr inbounds %struct.doublecomplex, ptr %249, i32 0, i32 1
  %251 = load double, ptr %250, align 8, !tbaa !15
  %252 = load ptr, ptr %31, align 8, !tbaa !5
  %253 = load i64, ptr %62, align 8, !tbaa !9
  %254 = getelementptr inbounds %struct.doublecomplex, ptr %252, i64 %253
  %255 = getelementptr inbounds %struct.doublecomplex, ptr %254, i32 0, i32 1
  %256 = load double, ptr %255, align 8, !tbaa !15
  %257 = load ptr, ptr %33, align 8, !tbaa !5
  %258 = load i64, ptr %63, align 8, !tbaa !9
  %259 = getelementptr inbounds %struct.doublecomplex, ptr %257, i64 %258
  %260 = getelementptr inbounds %struct.doublecomplex, ptr %259, i32 0, i32 0
  %261 = load double, ptr %260, align 8, !tbaa !12
  %262 = fmul double %256, %261
  %263 = call double @llvm.fmuladd.f64(double %246, double %251, double %262)
  %264 = getelementptr inbounds %struct.doublecomplex, ptr %71, i32 0, i32 1
  store double %263, ptr %264, align 8, !tbaa !15
  %265 = load ptr, ptr %38, align 8, !tbaa !5
  %266 = load i64, ptr %61, align 8, !tbaa !9
  %267 = getelementptr inbounds %struct.doublecomplex, ptr %265, i64 %266
  %268 = getelementptr inbounds %struct.doublecomplex, ptr %267, i32 0, i32 0
  %269 = load double, ptr %268, align 8, !tbaa !12
  %270 = getelementptr inbounds %struct.doublecomplex, ptr %71, i32 0, i32 0
  %271 = load double, ptr %270, align 8, !tbaa !12
  %272 = fadd double %269, %271
  %273 = getelementptr inbounds %struct.doublecomplex, ptr %70, i32 0, i32 0
  store double %272, ptr %273, align 8, !tbaa !12
  %274 = load ptr, ptr %38, align 8, !tbaa !5
  %275 = load i64, ptr %61, align 8, !tbaa !9
  %276 = getelementptr inbounds %struct.doublecomplex, ptr %274, i64 %275
  %277 = getelementptr inbounds %struct.doublecomplex, ptr %276, i32 0, i32 1
  %278 = load double, ptr %277, align 8, !tbaa !15
  %279 = getelementptr inbounds %struct.doublecomplex, ptr %71, i32 0, i32 1
  %280 = load double, ptr %279, align 8, !tbaa !15
  %281 = fadd double %278, %280
  %282 = getelementptr inbounds %struct.doublecomplex, ptr %70, i32 0, i32 1
  store double %281, ptr %282, align 8, !tbaa !15
  %283 = getelementptr inbounds %struct.doublecomplex, ptr %70, i32 0, i32 0
  %284 = load double, ptr %283, align 8, !tbaa !12
  %285 = load ptr, ptr %38, align 8, !tbaa !5
  %286 = load i64, ptr %60, align 8, !tbaa !9
  %287 = getelementptr inbounds %struct.doublecomplex, ptr %285, i64 %286
  %288 = getelementptr inbounds %struct.doublecomplex, ptr %287, i32 0, i32 0
  store double %284, ptr %288, align 8, !tbaa !12
  %289 = getelementptr inbounds %struct.doublecomplex, ptr %70, i32 0, i32 1
  %290 = load double, ptr %289, align 8, !tbaa !15
  %291 = load ptr, ptr %38, align 8, !tbaa !5
  %292 = load i64, ptr %60, align 8, !tbaa !9
  %293 = getelementptr inbounds %struct.doublecomplex, ptr %291, i64 %292
  %294 = getelementptr inbounds %struct.doublecomplex, ptr %293, i32 0, i32 1
  store double %290, ptr %294, align 8, !tbaa !15
  %295 = load i64, ptr %74, align 8, !tbaa !9
  %296 = load i64, ptr %76, align 8, !tbaa !9
  %297 = load i64, ptr %49, align 8, !tbaa !9
  %298 = mul nsw i64 %296, %297
  %299 = add nsw i64 %295, %298
  store i64 %299, ptr %60, align 8, !tbaa !9
  %300 = load i64, ptr %76, align 8, !tbaa !9
  %301 = load i64, ptr %75, align 8, !tbaa !9
  %302 = load i64, ptr %51, align 8, !tbaa !9
  %303 = mul nsw i64 %301, %302
  %304 = add nsw i64 %300, %303
  store i64 %304, ptr %61, align 8, !tbaa !9
  %305 = load ptr, ptr %31, align 8, !tbaa !5
  %306 = load i64, ptr %60, align 8, !tbaa !9
  %307 = getelementptr inbounds %struct.doublecomplex, ptr %305, i64 %306
  %308 = getelementptr inbounds %struct.doublecomplex, ptr %307, i32 0, i32 0
  %309 = load double, ptr %308, align 8, !tbaa !12
  store double %309, ptr %64, align 8, !tbaa !16
  %310 = load double, ptr %64, align 8, !tbaa !16
  %311 = fcmp oge double %310, 0.000000e+00
  br i1 %311, label %312, label %314

312:                                              ; preds = %205
  %313 = load double, ptr %64, align 8, !tbaa !16
  br label %317

314:                                              ; preds = %205
  %315 = load double, ptr %64, align 8, !tbaa !16
  %316 = fneg double %315
  br label %317

317:                                              ; preds = %314, %312
  %318 = phi double [ %313, %312 ], [ %316, %314 ]
  %319 = load ptr, ptr %31, align 8, !tbaa !5
  %320 = load i64, ptr %74, align 8, !tbaa !9
  %321 = load i64, ptr %76, align 8, !tbaa !9
  %322 = load i64, ptr %49, align 8, !tbaa !9
  %323 = mul nsw i64 %321, %322
  %324 = add nsw i64 %320, %323
  %325 = getelementptr inbounds %struct.doublecomplex, ptr %319, i64 %324
  %326 = call double @d_imag(ptr noundef %325)
  store double %326, ptr %65, align 8, !tbaa !16
  %327 = load double, ptr %65, align 8, !tbaa !16
  %328 = fcmp oge double %327, 0.000000e+00
  br i1 %328, label %329, label %331

329:                                              ; preds = %317
  %330 = load double, ptr %65, align 8, !tbaa !16
  br label %334

331:                                              ; preds = %317
  %332 = load double, ptr %65, align 8, !tbaa !16
  %333 = fneg double %332
  br label %334

334:                                              ; preds = %331, %329
  %335 = phi double [ %330, %329 ], [ %333, %331 ]
  %336 = fadd double %318, %335
  %337 = load ptr, ptr %33, align 8, !tbaa !5
  %338 = load i64, ptr %61, align 8, !tbaa !9
  %339 = getelementptr inbounds %struct.doublecomplex, ptr %337, i64 %338
  %340 = getelementptr inbounds %struct.doublecomplex, ptr %339, i32 0, i32 0
  %341 = load double, ptr %340, align 8, !tbaa !12
  store double %341, ptr %66, align 8, !tbaa !16
  %342 = load double, ptr %66, align 8, !tbaa !16
  %343 = fcmp oge double %342, 0.000000e+00
  br i1 %343, label %344, label %346

344:                                              ; preds = %334
  %345 = load double, ptr %66, align 8, !tbaa !16
  br label %349

346:                                              ; preds = %334
  %347 = load double, ptr %66, align 8, !tbaa !16
  %348 = fneg double %347
  br label %349

349:                                              ; preds = %346, %344
  %350 = phi double [ %345, %344 ], [ %348, %346 ]
  %351 = load ptr, ptr %33, align 8, !tbaa !5
  %352 = load i64, ptr %76, align 8, !tbaa !9
  %353 = load i64, ptr %75, align 8, !tbaa !9
  %354 = load i64, ptr %51, align 8, !tbaa !9
  %355 = mul nsw i64 %353, %354
  %356 = add nsw i64 %352, %355
  %357 = getelementptr inbounds %struct.doublecomplex, ptr %351, i64 %356
  %358 = call double @d_imag(ptr noundef %357)
  store double %358, ptr %67, align 8, !tbaa !16
  %359 = load double, ptr %67, align 8, !tbaa !16
  %360 = fcmp oge double %359, 0.000000e+00
  br i1 %360, label %361, label %363

361:                                              ; preds = %349
  %362 = load double, ptr %67, align 8, !tbaa !16
  br label %366

363:                                              ; preds = %349
  %364 = load double, ptr %67, align 8, !tbaa !16
  %365 = fneg double %364
  br label %366

366:                                              ; preds = %363, %361
  %367 = phi double [ %362, %361 ], [ %365, %363 ]
  %368 = fadd double %350, %367
  %369 = load ptr, ptr %39, align 8, !tbaa !5
  %370 = load i64, ptr %74, align 8, !tbaa !9
  %371 = getelementptr inbounds double, ptr %369, i64 %370
  %372 = load double, ptr %371, align 8, !tbaa !16
  %373 = call double @llvm.fmuladd.f64(double %336, double %368, double %372)
  store double %373, ptr %371, align 8, !tbaa !16
  br label %374

374:                                              ; preds = %366
  %375 = load i64, ptr %74, align 8, !tbaa !9
  %376 = add nsw i64 %375, 1
  store i64 %376, ptr %74, align 8, !tbaa !9
  br label %201, !llvm.loop !19

377:                                              ; preds = %201
  br label %378

378:                                              ; preds = %377
  %379 = load i64, ptr %76, align 8, !tbaa !9
  %380 = add nsw i64 %379, 1
  store i64 %380, ptr %76, align 8, !tbaa !9
  br label %194, !llvm.loop !20

381:                                              ; preds = %194
  br label %1891

382:                                              ; preds = %188, %185
  %383 = load i64, ptr %78, align 8, !tbaa !9
  %384 = icmp ne i64 %383, 0
  br i1 %384, label %385, label %764

385:                                              ; preds = %382
  %386 = load i64, ptr %79, align 8, !tbaa !9
  %387 = icmp ne i64 %386, 0
  br i1 %387, label %764, label %388

388:                                              ; preds = %385
  %389 = load i64, ptr %80, align 8, !tbaa !9
  %390 = icmp ne i64 %389, 0
  br i1 %390, label %391, label %572

391:                                              ; preds = %388
  %392 = load ptr, ptr %29, align 8, !tbaa !5
  %393 = load i64, ptr %392, align 8, !tbaa !9
  store i64 %393, ptr %58, align 8, !tbaa !9
  store i64 1, ptr %76, align 8, !tbaa !9
  br label %394

394:                                              ; preds = %568, %391
  %395 = load i64, ptr %76, align 8, !tbaa !9
  %396 = load i64, ptr %58, align 8, !tbaa !9
  %397 = icmp sle i64 %395, %396
  br i1 %397, label %398, label %571

398:                                              ; preds = %394
  %399 = load ptr, ptr %27, align 8, !tbaa !5
  %400 = load i64, ptr %399, align 8, !tbaa !9
  store i64 %400, ptr %59, align 8, !tbaa !9
  store i64 1, ptr %74, align 8, !tbaa !9
  br label %401

401:                                              ; preds = %564, %398
  %402 = load i64, ptr %74, align 8, !tbaa !9
  %403 = load i64, ptr %59, align 8, !tbaa !9
  %404 = icmp sle i64 %402, %403
  br i1 %404, label %405, label %567

405:                                              ; preds = %401
  %406 = load i64, ptr %74, align 8, !tbaa !9
  store i64 %406, ptr %60, align 8, !tbaa !9
  %407 = load i64, ptr %74, align 8, !tbaa !9
  store i64 %407, ptr %61, align 8, !tbaa !9
  %408 = load ptr, ptr %31, align 8, !tbaa !5
  %409 = load i64, ptr %76, align 8, !tbaa !9
  %410 = load i64, ptr %74, align 8, !tbaa !9
  %411 = load i64, ptr %49, align 8, !tbaa !9
  %412 = mul nsw i64 %410, %411
  %413 = add nsw i64 %409, %412
  %414 = getelementptr inbounds %struct.doublecomplex, ptr %408, i64 %413
  call void @d_cnjg(ptr noundef %72, ptr noundef %414)
  %415 = load i64, ptr %76, align 8, !tbaa !9
  %416 = load i64, ptr %75, align 8, !tbaa !9
  %417 = load i64, ptr %51, align 8, !tbaa !9
  %418 = mul nsw i64 %416, %417
  %419 = add nsw i64 %415, %418
  store i64 %419, ptr %62, align 8, !tbaa !9
  %420 = getelementptr inbounds %struct.doublecomplex, ptr %72, i32 0, i32 0
  %421 = load double, ptr %420, align 8, !tbaa !12
  %422 = load ptr, ptr %33, align 8, !tbaa !5
  %423 = load i64, ptr %62, align 8, !tbaa !9
  %424 = getelementptr inbounds %struct.doublecomplex, ptr %422, i64 %423
  %425 = getelementptr inbounds %struct.doublecomplex, ptr %424, i32 0, i32 0
  %426 = load double, ptr %425, align 8, !tbaa !12
  %427 = getelementptr inbounds %struct.doublecomplex, ptr %72, i32 0, i32 1
  %428 = load double, ptr %427, align 8, !tbaa !15
  %429 = load ptr, ptr %33, align 8, !tbaa !5
  %430 = load i64, ptr %62, align 8, !tbaa !9
  %431 = getelementptr inbounds %struct.doublecomplex, ptr %429, i64 %430
  %432 = getelementptr inbounds %struct.doublecomplex, ptr %431, i32 0, i32 1
  %433 = load double, ptr %432, align 8, !tbaa !15
  %434 = fmul double %428, %433
  %435 = fneg double %434
  %436 = call double @llvm.fmuladd.f64(double %421, double %426, double %435)
  %437 = getelementptr inbounds %struct.doublecomplex, ptr %71, i32 0, i32 0
  store double %436, ptr %437, align 8, !tbaa !12
  %438 = getelementptr inbounds %struct.doublecomplex, ptr %72, i32 0, i32 0
  %439 = load double, ptr %438, align 8, !tbaa !12
  %440 = load ptr, ptr %33, align 8, !tbaa !5
  %441 = load i64, ptr %62, align 8, !tbaa !9
  %442 = getelementptr inbounds %struct.doublecomplex, ptr %440, i64 %441
  %443 = getelementptr inbounds %struct.doublecomplex, ptr %442, i32 0, i32 1
  %444 = load double, ptr %443, align 8, !tbaa !15
  %445 = getelementptr inbounds %struct.doublecomplex, ptr %72, i32 0, i32 1
  %446 = load double, ptr %445, align 8, !tbaa !15
  %447 = load ptr, ptr %33, align 8, !tbaa !5
  %448 = load i64, ptr %62, align 8, !tbaa !9
  %449 = getelementptr inbounds %struct.doublecomplex, ptr %447, i64 %448
  %450 = getelementptr inbounds %struct.doublecomplex, ptr %449, i32 0, i32 0
  %451 = load double, ptr %450, align 8, !tbaa !12
  %452 = fmul double %446, %451
  %453 = call double @llvm.fmuladd.f64(double %439, double %444, double %452)
  %454 = getelementptr inbounds %struct.doublecomplex, ptr %71, i32 0, i32 1
  store double %453, ptr %454, align 8, !tbaa !15
  %455 = load ptr, ptr %38, align 8, !tbaa !5
  %456 = load i64, ptr %61, align 8, !tbaa !9
  %457 = getelementptr inbounds %struct.doublecomplex, ptr %455, i64 %456
  %458 = getelementptr inbounds %struct.doublecomplex, ptr %457, i32 0, i32 0
  %459 = load double, ptr %458, align 8, !tbaa !12
  %460 = getelementptr inbounds %struct.doublecomplex, ptr %71, i32 0, i32 0
  %461 = load double, ptr %460, align 8, !tbaa !12
  %462 = fadd double %459, %461
  %463 = getelementptr inbounds %struct.doublecomplex, ptr %70, i32 0, i32 0
  store double %462, ptr %463, align 8, !tbaa !12
  %464 = load ptr, ptr %38, align 8, !tbaa !5
  %465 = load i64, ptr %61, align 8, !tbaa !9
  %466 = getelementptr inbounds %struct.doublecomplex, ptr %464, i64 %465
  %467 = getelementptr inbounds %struct.doublecomplex, ptr %466, i32 0, i32 1
  %468 = load double, ptr %467, align 8, !tbaa !15
  %469 = getelementptr inbounds %struct.doublecomplex, ptr %71, i32 0, i32 1
  %470 = load double, ptr %469, align 8, !tbaa !15
  %471 = fadd double %468, %470
  %472 = getelementptr inbounds %struct.doublecomplex, ptr %70, i32 0, i32 1
  store double %471, ptr %472, align 8, !tbaa !15
  %473 = getelementptr inbounds %struct.doublecomplex, ptr %70, i32 0, i32 0
  %474 = load double, ptr %473, align 8, !tbaa !12
  %475 = load ptr, ptr %38, align 8, !tbaa !5
  %476 = load i64, ptr %60, align 8, !tbaa !9
  %477 = getelementptr inbounds %struct.doublecomplex, ptr %475, i64 %476
  %478 = getelementptr inbounds %struct.doublecomplex, ptr %477, i32 0, i32 0
  store double %474, ptr %478, align 8, !tbaa !12
  %479 = getelementptr inbounds %struct.doublecomplex, ptr %70, i32 0, i32 1
  %480 = load double, ptr %479, align 8, !tbaa !15
  %481 = load ptr, ptr %38, align 8, !tbaa !5
  %482 = load i64, ptr %60, align 8, !tbaa !9
  %483 = getelementptr inbounds %struct.doublecomplex, ptr %481, i64 %482
  %484 = getelementptr inbounds %struct.doublecomplex, ptr %483, i32 0, i32 1
  store double %480, ptr %484, align 8, !tbaa !15
  %485 = load i64, ptr %76, align 8, !tbaa !9
  %486 = load i64, ptr %74, align 8, !tbaa !9
  %487 = load i64, ptr %49, align 8, !tbaa !9
  %488 = mul nsw i64 %486, %487
  %489 = add nsw i64 %485, %488
  store i64 %489, ptr %60, align 8, !tbaa !9
  %490 = load i64, ptr %76, align 8, !tbaa !9
  %491 = load i64, ptr %75, align 8, !tbaa !9
  %492 = load i64, ptr %51, align 8, !tbaa !9
  %493 = mul nsw i64 %491, %492
  %494 = add nsw i64 %490, %493
  store i64 %494, ptr %61, align 8, !tbaa !9
  %495 = load ptr, ptr %31, align 8, !tbaa !5
  %496 = load i64, ptr %60, align 8, !tbaa !9
  %497 = getelementptr inbounds %struct.doublecomplex, ptr %495, i64 %496
  %498 = getelementptr inbounds %struct.doublecomplex, ptr %497, i32 0, i32 0
  %499 = load double, ptr %498, align 8, !tbaa !12
  store double %499, ptr %64, align 8, !tbaa !16
  %500 = load double, ptr %64, align 8, !tbaa !16
  %501 = fcmp oge double %500, 0.000000e+00
  br i1 %501, label %502, label %504

502:                                              ; preds = %405
  %503 = load double, ptr %64, align 8, !tbaa !16
  br label %507

504:                                              ; preds = %405
  %505 = load double, ptr %64, align 8, !tbaa !16
  %506 = fneg double %505
  br label %507

507:                                              ; preds = %504, %502
  %508 = phi double [ %503, %502 ], [ %506, %504 ]
  %509 = load ptr, ptr %31, align 8, !tbaa !5
  %510 = load i64, ptr %76, align 8, !tbaa !9
  %511 = load i64, ptr %74, align 8, !tbaa !9
  %512 = load i64, ptr %49, align 8, !tbaa !9
  %513 = mul nsw i64 %511, %512
  %514 = add nsw i64 %510, %513
  %515 = getelementptr inbounds %struct.doublecomplex, ptr %509, i64 %514
  %516 = call double @d_imag(ptr noundef %515)
  store double %516, ptr %65, align 8, !tbaa !16
  %517 = load double, ptr %65, align 8, !tbaa !16
  %518 = fcmp oge double %517, 0.000000e+00
  br i1 %518, label %519, label %521

519:                                              ; preds = %507
  %520 = load double, ptr %65, align 8, !tbaa !16
  br label %524

521:                                              ; preds = %507
  %522 = load double, ptr %65, align 8, !tbaa !16
  %523 = fneg double %522
  br label %524

524:                                              ; preds = %521, %519
  %525 = phi double [ %520, %519 ], [ %523, %521 ]
  %526 = fadd double %508, %525
  %527 = load ptr, ptr %33, align 8, !tbaa !5
  %528 = load i64, ptr %61, align 8, !tbaa !9
  %529 = getelementptr inbounds %struct.doublecomplex, ptr %527, i64 %528
  %530 = getelementptr inbounds %struct.doublecomplex, ptr %529, i32 0, i32 0
  %531 = load double, ptr %530, align 8, !tbaa !12
  store double %531, ptr %66, align 8, !tbaa !16
  %532 = load double, ptr %66, align 8, !tbaa !16
  %533 = fcmp oge double %532, 0.000000e+00
  br i1 %533, label %534, label %536

534:                                              ; preds = %524
  %535 = load double, ptr %66, align 8, !tbaa !16
  br label %539

536:                                              ; preds = %524
  %537 = load double, ptr %66, align 8, !tbaa !16
  %538 = fneg double %537
  br label %539

539:                                              ; preds = %536, %534
  %540 = phi double [ %535, %534 ], [ %538, %536 ]
  %541 = load ptr, ptr %33, align 8, !tbaa !5
  %542 = load i64, ptr %76, align 8, !tbaa !9
  %543 = load i64, ptr %75, align 8, !tbaa !9
  %544 = load i64, ptr %51, align 8, !tbaa !9
  %545 = mul nsw i64 %543, %544
  %546 = add nsw i64 %542, %545
  %547 = getelementptr inbounds %struct.doublecomplex, ptr %541, i64 %546
  %548 = call double @d_imag(ptr noundef %547)
  store double %548, ptr %67, align 8, !tbaa !16
  %549 = load double, ptr %67, align 8, !tbaa !16
  %550 = fcmp oge double %549, 0.000000e+00
  br i1 %550, label %551, label %553

551:                                              ; preds = %539
  %552 = load double, ptr %67, align 8, !tbaa !16
  br label %556

553:                                              ; preds = %539
  %554 = load double, ptr %67, align 8, !tbaa !16
  %555 = fneg double %554
  br label %556

556:                                              ; preds = %553, %551
  %557 = phi double [ %552, %551 ], [ %555, %553 ]
  %558 = fadd double %540, %557
  %559 = load ptr, ptr %39, align 8, !tbaa !5
  %560 = load i64, ptr %74, align 8, !tbaa !9
  %561 = getelementptr inbounds double, ptr %559, i64 %560
  %562 = load double, ptr %561, align 8, !tbaa !16
  %563 = call double @llvm.fmuladd.f64(double %526, double %558, double %562)
  store double %563, ptr %561, align 8, !tbaa !16
  br label %564

564:                                              ; preds = %556
  %565 = load i64, ptr %74, align 8, !tbaa !9
  %566 = add nsw i64 %565, 1
  store i64 %566, ptr %74, align 8, !tbaa !9
  br label %401, !llvm.loop !21

567:                                              ; preds = %401
  br label %568

568:                                              ; preds = %567
  %569 = load i64, ptr %76, align 8, !tbaa !9
  %570 = add nsw i64 %569, 1
  store i64 %570, ptr %76, align 8, !tbaa !9
  br label %394, !llvm.loop !22

571:                                              ; preds = %394
  br label %763

572:                                              ; preds = %388
  %573 = load ptr, ptr %29, align 8, !tbaa !5
  %574 = load i64, ptr %573, align 8, !tbaa !9
  store i64 %574, ptr %58, align 8, !tbaa !9
  store i64 1, ptr %76, align 8, !tbaa !9
  br label %575

575:                                              ; preds = %759, %572
  %576 = load i64, ptr %76, align 8, !tbaa !9
  %577 = load i64, ptr %58, align 8, !tbaa !9
  %578 = icmp sle i64 %576, %577
  br i1 %578, label %579, label %762

579:                                              ; preds = %575
  %580 = load ptr, ptr %27, align 8, !tbaa !5
  %581 = load i64, ptr %580, align 8, !tbaa !9
  store i64 %581, ptr %59, align 8, !tbaa !9
  store i64 1, ptr %74, align 8, !tbaa !9
  br label %582

582:                                              ; preds = %755, %579
  %583 = load i64, ptr %74, align 8, !tbaa !9
  %584 = load i64, ptr %59, align 8, !tbaa !9
  %585 = icmp sle i64 %583, %584
  br i1 %585, label %586, label %758

586:                                              ; preds = %582
  %587 = load i64, ptr %74, align 8, !tbaa !9
  store i64 %587, ptr %60, align 8, !tbaa !9
  %588 = load i64, ptr %74, align 8, !tbaa !9
  store i64 %588, ptr %61, align 8, !tbaa !9
  %589 = load i64, ptr %76, align 8, !tbaa !9
  %590 = load i64, ptr %74, align 8, !tbaa !9
  %591 = load i64, ptr %49, align 8, !tbaa !9
  %592 = mul nsw i64 %590, %591
  %593 = add nsw i64 %589, %592
  store i64 %593, ptr %62, align 8, !tbaa !9
  %594 = load i64, ptr %76, align 8, !tbaa !9
  %595 = load i64, ptr %75, align 8, !tbaa !9
  %596 = load i64, ptr %51, align 8, !tbaa !9
  %597 = mul nsw i64 %595, %596
  %598 = add nsw i64 %594, %597
  store i64 %598, ptr %63, align 8, !tbaa !9
  %599 = load ptr, ptr %31, align 8, !tbaa !5
  %600 = load i64, ptr %62, align 8, !tbaa !9
  %601 = getelementptr inbounds %struct.doublecomplex, ptr %599, i64 %600
  %602 = getelementptr inbounds %struct.doublecomplex, ptr %601, i32 0, i32 0
  %603 = load double, ptr %602, align 8, !tbaa !12
  %604 = load ptr, ptr %33, align 8, !tbaa !5
  %605 = load i64, ptr %63, align 8, !tbaa !9
  %606 = getelementptr inbounds %struct.doublecomplex, ptr %604, i64 %605
  %607 = getelementptr inbounds %struct.doublecomplex, ptr %606, i32 0, i32 0
  %608 = load double, ptr %607, align 8, !tbaa !12
  %609 = load ptr, ptr %31, align 8, !tbaa !5
  %610 = load i64, ptr %62, align 8, !tbaa !9
  %611 = getelementptr inbounds %struct.doublecomplex, ptr %609, i64 %610
  %612 = getelementptr inbounds %struct.doublecomplex, ptr %611, i32 0, i32 1
  %613 = load double, ptr %612, align 8, !tbaa !15
  %614 = load ptr, ptr %33, align 8, !tbaa !5
  %615 = load i64, ptr %63, align 8, !tbaa !9
  %616 = getelementptr inbounds %struct.doublecomplex, ptr %614, i64 %615
  %617 = getelementptr inbounds %struct.doublecomplex, ptr %616, i32 0, i32 1
  %618 = load double, ptr %617, align 8, !tbaa !15
  %619 = fmul double %613, %618
  %620 = fneg double %619
  %621 = call double @llvm.fmuladd.f64(double %603, double %608, double %620)
  %622 = getelementptr inbounds %struct.doublecomplex, ptr %71, i32 0, i32 0
  store double %621, ptr %622, align 8, !tbaa !12
  %623 = load ptr, ptr %31, align 8, !tbaa !5
  %624 = load i64, ptr %62, align 8, !tbaa !9
  %625 = getelementptr inbounds %struct.doublecomplex, ptr %623, i64 %624
  %626 = getelementptr inbounds %struct.doublecomplex, ptr %625, i32 0, i32 0
  %627 = load double, ptr %626, align 8, !tbaa !12
  %628 = load ptr, ptr %33, align 8, !tbaa !5
  %629 = load i64, ptr %63, align 8, !tbaa !9
  %630 = getelementptr inbounds %struct.doublecomplex, ptr %628, i64 %629
  %631 = getelementptr inbounds %struct.doublecomplex, ptr %630, i32 0, i32 1
  %632 = load double, ptr %631, align 8, !tbaa !15
  %633 = load ptr, ptr %31, align 8, !tbaa !5
  %634 = load i64, ptr %62, align 8, !tbaa !9
  %635 = getelementptr inbounds %struct.doublecomplex, ptr %633, i64 %634
  %636 = getelementptr inbounds %struct.doublecomplex, ptr %635, i32 0, i32 1
  %637 = load double, ptr %636, align 8, !tbaa !15
  %638 = load ptr, ptr %33, align 8, !tbaa !5
  %639 = load i64, ptr %63, align 8, !tbaa !9
  %640 = getelementptr inbounds %struct.doublecomplex, ptr %638, i64 %639
  %641 = getelementptr inbounds %struct.doublecomplex, ptr %640, i32 0, i32 0
  %642 = load double, ptr %641, align 8, !tbaa !12
  %643 = fmul double %637, %642
  %644 = call double @llvm.fmuladd.f64(double %627, double %632, double %643)
  %645 = getelementptr inbounds %struct.doublecomplex, ptr %71, i32 0, i32 1
  store double %644, ptr %645, align 8, !tbaa !15
  %646 = load ptr, ptr %38, align 8, !tbaa !5
  %647 = load i64, ptr %61, align 8, !tbaa !9
  %648 = getelementptr inbounds %struct.doublecomplex, ptr %646, i64 %647
  %649 = getelementptr inbounds %struct.doublecomplex, ptr %648, i32 0, i32 0
  %650 = load double, ptr %649, align 8, !tbaa !12
  %651 = getelementptr inbounds %struct.doublecomplex, ptr %71, i32 0, i32 0
  %652 = load double, ptr %651, align 8, !tbaa !12
  %653 = fadd double %650, %652
  %654 = getelementptr inbounds %struct.doublecomplex, ptr %70, i32 0, i32 0
  store double %653, ptr %654, align 8, !tbaa !12
  %655 = load ptr, ptr %38, align 8, !tbaa !5
  %656 = load i64, ptr %61, align 8, !tbaa !9
  %657 = getelementptr inbounds %struct.doublecomplex, ptr %655, i64 %656
  %658 = getelementptr inbounds %struct.doublecomplex, ptr %657, i32 0, i32 1
  %659 = load double, ptr %658, align 8, !tbaa !15
  %660 = getelementptr inbounds %struct.doublecomplex, ptr %71, i32 0, i32 1
  %661 = load double, ptr %660, align 8, !tbaa !15
  %662 = fadd double %659, %661
  %663 = getelementptr inbounds %struct.doublecomplex, ptr %70, i32 0, i32 1
  store double %662, ptr %663, align 8, !tbaa !15
  %664 = getelementptr inbounds %struct.doublecomplex, ptr %70, i32 0, i32 0
  %665 = load double, ptr %664, align 8, !tbaa !12
  %666 = load ptr, ptr %38, align 8, !tbaa !5
  %667 = load i64, ptr %60, align 8, !tbaa !9
  %668 = getelementptr inbounds %struct.doublecomplex, ptr %666, i64 %667
  %669 = getelementptr inbounds %struct.doublecomplex, ptr %668, i32 0, i32 0
  store double %665, ptr %669, align 8, !tbaa !12
  %670 = getelementptr inbounds %struct.doublecomplex, ptr %70, i32 0, i32 1
  %671 = load double, ptr %670, align 8, !tbaa !15
  %672 = load ptr, ptr %38, align 8, !tbaa !5
  %673 = load i64, ptr %60, align 8, !tbaa !9
  %674 = getelementptr inbounds %struct.doublecomplex, ptr %672, i64 %673
  %675 = getelementptr inbounds %struct.doublecomplex, ptr %674, i32 0, i32 1
  store double %671, ptr %675, align 8, !tbaa !15
  %676 = load i64, ptr %76, align 8, !tbaa !9
  %677 = load i64, ptr %74, align 8, !tbaa !9
  %678 = load i64, ptr %49, align 8, !tbaa !9
  %679 = mul nsw i64 %677, %678
  %680 = add nsw i64 %676, %679
  store i64 %680, ptr %60, align 8, !tbaa !9
  %681 = load i64, ptr %76, align 8, !tbaa !9
  %682 = load i64, ptr %75, align 8, !tbaa !9
  %683 = load i64, ptr %51, align 8, !tbaa !9
  %684 = mul nsw i64 %682, %683
  %685 = add nsw i64 %681, %684
  store i64 %685, ptr %61, align 8, !tbaa !9
  %686 = load ptr, ptr %31, align 8, !tbaa !5
  %687 = load i64, ptr %60, align 8, !tbaa !9
  %688 = getelementptr inbounds %struct.doublecomplex, ptr %686, i64 %687
  %689 = getelementptr inbounds %struct.doublecomplex, ptr %688, i32 0, i32 0
  %690 = load double, ptr %689, align 8, !tbaa !12
  store double %690, ptr %64, align 8, !tbaa !16
  %691 = load double, ptr %64, align 8, !tbaa !16
  %692 = fcmp oge double %691, 0.000000e+00
  br i1 %692, label %693, label %695

693:                                              ; preds = %586
  %694 = load double, ptr %64, align 8, !tbaa !16
  br label %698

695:                                              ; preds = %586
  %696 = load double, ptr %64, align 8, !tbaa !16
  %697 = fneg double %696
  br label %698

698:                                              ; preds = %695, %693
  %699 = phi double [ %694, %693 ], [ %697, %695 ]
  %700 = load ptr, ptr %31, align 8, !tbaa !5
  %701 = load i64, ptr %76, align 8, !tbaa !9
  %702 = load i64, ptr %74, align 8, !tbaa !9
  %703 = load i64, ptr %49, align 8, !tbaa !9
  %704 = mul nsw i64 %702, %703
  %705 = add nsw i64 %701, %704
  %706 = getelementptr inbounds %struct.doublecomplex, ptr %700, i64 %705
  %707 = call double @d_imag(ptr noundef %706)
  store double %707, ptr %65, align 8, !tbaa !16
  %708 = load double, ptr %65, align 8, !tbaa !16
  %709 = fcmp oge double %708, 0.000000e+00
  br i1 %709, label %710, label %712

710:                                              ; preds = %698
  %711 = load double, ptr %65, align 8, !tbaa !16
  br label %715

712:                                              ; preds = %698
  %713 = load double, ptr %65, align 8, !tbaa !16
  %714 = fneg double %713
  br label %715

715:                                              ; preds = %712, %710
  %716 = phi double [ %711, %710 ], [ %714, %712 ]
  %717 = fadd double %699, %716
  %718 = load ptr, ptr %33, align 8, !tbaa !5
  %719 = load i64, ptr %61, align 8, !tbaa !9
  %720 = getelementptr inbounds %struct.doublecomplex, ptr %718, i64 %719
  %721 = getelementptr inbounds %struct.doublecomplex, ptr %720, i32 0, i32 0
  %722 = load double, ptr %721, align 8, !tbaa !12
  store double %722, ptr %66, align 8, !tbaa !16
  %723 = load double, ptr %66, align 8, !tbaa !16
  %724 = fcmp oge double %723, 0.000000e+00
  br i1 %724, label %725, label %727

725:                                              ; preds = %715
  %726 = load double, ptr %66, align 8, !tbaa !16
  br label %730

727:                                              ; preds = %715
  %728 = load double, ptr %66, align 8, !tbaa !16
  %729 = fneg double %728
  br label %730

730:                                              ; preds = %727, %725
  %731 = phi double [ %726, %725 ], [ %729, %727 ]
  %732 = load ptr, ptr %33, align 8, !tbaa !5
  %733 = load i64, ptr %76, align 8, !tbaa !9
  %734 = load i64, ptr %75, align 8, !tbaa !9
  %735 = load i64, ptr %51, align 8, !tbaa !9
  %736 = mul nsw i64 %734, %735
  %737 = add nsw i64 %733, %736
  %738 = getelementptr inbounds %struct.doublecomplex, ptr %732, i64 %737
  %739 = call double @d_imag(ptr noundef %738)
  store double %739, ptr %67, align 8, !tbaa !16
  %740 = load double, ptr %67, align 8, !tbaa !16
  %741 = fcmp oge double %740, 0.000000e+00
  br i1 %741, label %742, label %744

742:                                              ; preds = %730
  %743 = load double, ptr %67, align 8, !tbaa !16
  br label %747

744:                                              ; preds = %730
  %745 = load double, ptr %67, align 8, !tbaa !16
  %746 = fneg double %745
  br label %747

747:                                              ; preds = %744, %742
  %748 = phi double [ %743, %742 ], [ %746, %744 ]
  %749 = fadd double %731, %748
  %750 = load ptr, ptr %39, align 8, !tbaa !5
  %751 = load i64, ptr %74, align 8, !tbaa !9
  %752 = getelementptr inbounds double, ptr %750, i64 %751
  %753 = load double, ptr %752, align 8, !tbaa !16
  %754 = call double @llvm.fmuladd.f64(double %717, double %749, double %753)
  store double %754, ptr %752, align 8, !tbaa !16
  br label %755

755:                                              ; preds = %747
  %756 = load i64, ptr %74, align 8, !tbaa !9
  %757 = add nsw i64 %756, 1
  store i64 %757, ptr %74, align 8, !tbaa !9
  br label %582, !llvm.loop !23

758:                                              ; preds = %582
  br label %759

759:                                              ; preds = %758
  %760 = load i64, ptr %76, align 8, !tbaa !9
  %761 = add nsw i64 %760, 1
  store i64 %761, ptr %76, align 8, !tbaa !9
  br label %575, !llvm.loop !24

762:                                              ; preds = %575
  br label %763

763:                                              ; preds = %762, %571
  br label %1890

764:                                              ; preds = %385, %382
  %765 = load i64, ptr %78, align 8, !tbaa !9
  %766 = icmp ne i64 %765, 0
  br i1 %766, label %1146, label %767

767:                                              ; preds = %764
  %768 = load i64, ptr %79, align 8, !tbaa !9
  %769 = icmp ne i64 %768, 0
  br i1 %769, label %770, label %1146

770:                                              ; preds = %767
  %771 = load i64, ptr %81, align 8, !tbaa !9
  %772 = icmp ne i64 %771, 0
  br i1 %772, label %773, label %954

773:                                              ; preds = %770
  %774 = load ptr, ptr %29, align 8, !tbaa !5
  %775 = load i64, ptr %774, align 8, !tbaa !9
  store i64 %775, ptr %58, align 8, !tbaa !9
  store i64 1, ptr %76, align 8, !tbaa !9
  br label %776

776:                                              ; preds = %950, %773
  %777 = load i64, ptr %76, align 8, !tbaa !9
  %778 = load i64, ptr %58, align 8, !tbaa !9
  %779 = icmp sle i64 %777, %778
  br i1 %779, label %780, label %953

780:                                              ; preds = %776
  %781 = load ptr, ptr %27, align 8, !tbaa !5
  %782 = load i64, ptr %781, align 8, !tbaa !9
  store i64 %782, ptr %59, align 8, !tbaa !9
  store i64 1, ptr %74, align 8, !tbaa !9
  br label %783

783:                                              ; preds = %946, %780
  %784 = load i64, ptr %74, align 8, !tbaa !9
  %785 = load i64, ptr %59, align 8, !tbaa !9
  %786 = icmp sle i64 %784, %785
  br i1 %786, label %787, label %949

787:                                              ; preds = %783
  %788 = load i64, ptr %74, align 8, !tbaa !9
  store i64 %788, ptr %60, align 8, !tbaa !9
  %789 = load i64, ptr %74, align 8, !tbaa !9
  store i64 %789, ptr %61, align 8, !tbaa !9
  %790 = load i64, ptr %74, align 8, !tbaa !9
  %791 = load i64, ptr %76, align 8, !tbaa !9
  %792 = load i64, ptr %49, align 8, !tbaa !9
  %793 = mul nsw i64 %791, %792
  %794 = add nsw i64 %790, %793
  store i64 %794, ptr %62, align 8, !tbaa !9
  %795 = load ptr, ptr %33, align 8, !tbaa !5
  %796 = load i64, ptr %75, align 8, !tbaa !9
  %797 = load i64, ptr %76, align 8, !tbaa !9
  %798 = load i64, ptr %51, align 8, !tbaa !9
  %799 = mul nsw i64 %797, %798
  %800 = add nsw i64 %796, %799
  %801 = getelementptr inbounds %struct.doublecomplex, ptr %795, i64 %800
  call void @d_cnjg(ptr noundef %72, ptr noundef %801)
  %802 = load ptr, ptr %31, align 8, !tbaa !5
  %803 = load i64, ptr %62, align 8, !tbaa !9
  %804 = getelementptr inbounds %struct.doublecomplex, ptr %802, i64 %803
  %805 = getelementptr inbounds %struct.doublecomplex, ptr %804, i32 0, i32 0
  %806 = load double, ptr %805, align 8, !tbaa !12
  %807 = getelementptr inbounds %struct.doublecomplex, ptr %72, i32 0, i32 0
  %808 = load double, ptr %807, align 8, !tbaa !12
  %809 = load ptr, ptr %31, align 8, !tbaa !5
  %810 = load i64, ptr %62, align 8, !tbaa !9
  %811 = getelementptr inbounds %struct.doublecomplex, ptr %809, i64 %810
  %812 = getelementptr inbounds %struct.doublecomplex, ptr %811, i32 0, i32 1
  %813 = load double, ptr %812, align 8, !tbaa !15
  %814 = getelementptr inbounds %struct.doublecomplex, ptr %72, i32 0, i32 1
  %815 = load double, ptr %814, align 8, !tbaa !15
  %816 = fmul double %813, %815
  %817 = fneg double %816
  %818 = call double @llvm.fmuladd.f64(double %806, double %808, double %817)
  %819 = getelementptr inbounds %struct.doublecomplex, ptr %71, i32 0, i32 0
  store double %818, ptr %819, align 8, !tbaa !12
  %820 = load ptr, ptr %31, align 8, !tbaa !5
  %821 = load i64, ptr %62, align 8, !tbaa !9
  %822 = getelementptr inbounds %struct.doublecomplex, ptr %820, i64 %821
  %823 = getelementptr inbounds %struct.doublecomplex, ptr %822, i32 0, i32 0
  %824 = load double, ptr %823, align 8, !tbaa !12
  %825 = getelementptr inbounds %struct.doublecomplex, ptr %72, i32 0, i32 1
  %826 = load double, ptr %825, align 8, !tbaa !15
  %827 = load ptr, ptr %31, align 8, !tbaa !5
  %828 = load i64, ptr %62, align 8, !tbaa !9
  %829 = getelementptr inbounds %struct.doublecomplex, ptr %827, i64 %828
  %830 = getelementptr inbounds %struct.doublecomplex, ptr %829, i32 0, i32 1
  %831 = load double, ptr %830, align 8, !tbaa !15
  %832 = getelementptr inbounds %struct.doublecomplex, ptr %72, i32 0, i32 0
  %833 = load double, ptr %832, align 8, !tbaa !12
  %834 = fmul double %831, %833
  %835 = call double @llvm.fmuladd.f64(double %824, double %826, double %834)
  %836 = getelementptr inbounds %struct.doublecomplex, ptr %71, i32 0, i32 1
  store double %835, ptr %836, align 8, !tbaa !15
  %837 = load ptr, ptr %38, align 8, !tbaa !5
  %838 = load i64, ptr %61, align 8, !tbaa !9
  %839 = getelementptr inbounds %struct.doublecomplex, ptr %837, i64 %838
  %840 = getelementptr inbounds %struct.doublecomplex, ptr %839, i32 0, i32 0
  %841 = load double, ptr %840, align 8, !tbaa !12
  %842 = getelementptr inbounds %struct.doublecomplex, ptr %71, i32 0, i32 0
  %843 = load double, ptr %842, align 8, !tbaa !12
  %844 = fadd double %841, %843
  %845 = getelementptr inbounds %struct.doublecomplex, ptr %70, i32 0, i32 0
  store double %844, ptr %845, align 8, !tbaa !12
  %846 = load ptr, ptr %38, align 8, !tbaa !5
  %847 = load i64, ptr %61, align 8, !tbaa !9
  %848 = getelementptr inbounds %struct.doublecomplex, ptr %846, i64 %847
  %849 = getelementptr inbounds %struct.doublecomplex, ptr %848, i32 0, i32 1
  %850 = load double, ptr %849, align 8, !tbaa !15
  %851 = getelementptr inbounds %struct.doublecomplex, ptr %71, i32 0, i32 1
  %852 = load double, ptr %851, align 8, !tbaa !15
  %853 = fadd double %850, %852
  %854 = getelementptr inbounds %struct.doublecomplex, ptr %70, i32 0, i32 1
  store double %853, ptr %854, align 8, !tbaa !15
  %855 = getelementptr inbounds %struct.doublecomplex, ptr %70, i32 0, i32 0
  %856 = load double, ptr %855, align 8, !tbaa !12
  %857 = load ptr, ptr %38, align 8, !tbaa !5
  %858 = load i64, ptr %60, align 8, !tbaa !9
  %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 !12
  %861 = getelementptr inbounds %struct.doublecomplex, ptr %70, i32 0, i32 1
  %862 = load double, ptr %861, align 8, !tbaa !15
  %863 = load ptr, ptr %38, align 8, !tbaa !5
  %864 = load i64, ptr %60, align 8, !tbaa !9
  %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 !15
  %867 = load i64, ptr %74, align 8, !tbaa !9
  %868 = load i64, ptr %76, align 8, !tbaa !9
  %869 = load i64, ptr %49, align 8, !tbaa !9
  %870 = mul nsw i64 %868, %869
  %871 = add nsw i64 %867, %870
  store i64 %871, ptr %60, align 8, !tbaa !9
  %872 = load i64, ptr %75, align 8, !tbaa !9
  %873 = load i64, ptr %76, align 8, !tbaa !9
  %874 = load i64, ptr %51, align 8, !tbaa !9
  %875 = mul nsw i64 %873, %874
  %876 = add nsw i64 %872, %875
  store i64 %876, ptr %61, align 8, !tbaa !9
  %877 = load ptr, ptr %31, align 8, !tbaa !5
  %878 = load i64, ptr %60, align 8, !tbaa !9
  %879 = getelementptr inbounds %struct.doublecomplex, ptr %877, i64 %878
  %880 = getelementptr inbounds %struct.doublecomplex, ptr %879, i32 0, i32 0
  %881 = load double, ptr %880, align 8, !tbaa !12
  store double %881, ptr %64, align 8, !tbaa !16
  %882 = load double, ptr %64, align 8, !tbaa !16
  %883 = fcmp oge double %882, 0.000000e+00
  br i1 %883, label %884, label %886

884:                                              ; preds = %787
  %885 = load double, ptr %64, align 8, !tbaa !16
  br label %889

886:                                              ; preds = %787
  %887 = load double, ptr %64, align 8, !tbaa !16
  %888 = fneg double %887
  br label %889

889:                                              ; preds = %886, %884
  %890 = phi double [ %885, %884 ], [ %888, %886 ]
  %891 = load ptr, ptr %31, align 8, !tbaa !5
  %892 = load i64, ptr %74, align 8, !tbaa !9
  %893 = load i64, ptr %76, align 8, !tbaa !9
  %894 = load i64, ptr %49, align 8, !tbaa !9
  %895 = mul nsw i64 %893, %894
  %896 = add nsw i64 %892, %895
  %897 = getelementptr inbounds %struct.doublecomplex, ptr %891, i64 %896
  %898 = call double @d_imag(ptr noundef %897)
  store double %898, ptr %65, align 8, !tbaa !16
  %899 = load double, ptr %65, align 8, !tbaa !16
  %900 = fcmp oge double %899, 0.000000e+00
  br i1 %900, label %901, label %903

901:                                              ; preds = %889
  %902 = load double, ptr %65, align 8, !tbaa !16
  br label %906

903:                                              ; preds = %889
  %904 = load double, ptr %65, align 8, !tbaa !16
  %905 = fneg double %904
  br label %906

906:                                              ; preds = %903, %901
  %907 = phi double [ %902, %901 ], [ %905, %903 ]
  %908 = fadd double %890, %907
  %909 = load ptr, ptr %33, align 8, !tbaa !5
  %910 = load i64, ptr %61, align 8, !tbaa !9
  %911 = getelementptr inbounds %struct.doublecomplex, ptr %909, i64 %910
  %912 = getelementptr inbounds %struct.doublecomplex, ptr %911, i32 0, i32 0
  %913 = load double, ptr %912, align 8, !tbaa !12
  store double %913, ptr %66, align 8, !tbaa !16
  %914 = load double, ptr %66, align 8, !tbaa !16
  %915 = fcmp oge double %914, 0.000000e+00
  br i1 %915, label %916, label %918

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

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

921:                                              ; preds = %918, %916
  %922 = phi double [ %917, %916 ], [ %920, %918 ]
  %923 = load ptr, ptr %33, align 8, !tbaa !5
  %924 = load i64, ptr %75, align 8, !tbaa !9
  %925 = load i64, ptr %76, align 8, !tbaa !9
  %926 = load i64, ptr %51, align 8, !tbaa !9
  %927 = mul nsw i64 %925, %926
  %928 = add nsw i64 %924, %927
  %929 = getelementptr inbounds %struct.doublecomplex, ptr %923, i64 %928
  %930 = call double @d_imag(ptr noundef %929)
  store double %930, ptr %67, align 8, !tbaa !16
  %931 = load double, ptr %67, align 8, !tbaa !16
  %932 = fcmp oge double %931, 0.000000e+00
  br i1 %932, label %933, label %935

933:                                              ; preds = %921
  %934 = load double, ptr %67, align 8, !tbaa !16
  br label %938

935:                                              ; preds = %921
  %936 = load double, ptr %67, align 8, !tbaa !16
  %937 = fneg double %936
  br label %938

938:                                              ; preds = %935, %933
  %939 = phi double [ %934, %933 ], [ %937, %935 ]
  %940 = fadd double %922, %939
  %941 = load ptr, ptr %39, align 8, !tbaa !5
  %942 = load i64, ptr %74, align 8, !tbaa !9
  %943 = getelementptr inbounds double, ptr %941, i64 %942
  %944 = load double, ptr %943, align 8, !tbaa !16
  %945 = call double @llvm.fmuladd.f64(double %908, double %940, double %944)
  store double %945, ptr %943, align 8, !tbaa !16
  br label %946

946:                                              ; preds = %938
  %947 = load i64, ptr %74, align 8, !tbaa !9
  %948 = add nsw i64 %947, 1
  store i64 %948, ptr %74, align 8, !tbaa !9
  br label %783, !llvm.loop !25

949:                                              ; preds = %783
  br label %950

950:                                              ; preds = %949
  %951 = load i64, ptr %76, align 8, !tbaa !9
  %952 = add nsw i64 %951, 1
  store i64 %952, ptr %76, align 8, !tbaa !9
  br label %776, !llvm.loop !26

953:                                              ; preds = %776
  br label %1145

954:                                              ; preds = %770
  %955 = load ptr, ptr %29, align 8, !tbaa !5
  %956 = load i64, ptr %955, align 8, !tbaa !9
  store i64 %956, ptr %58, align 8, !tbaa !9
  store i64 1, ptr %76, align 8, !tbaa !9
  br label %957

957:                                              ; preds = %1141, %954
  %958 = load i64, ptr %76, align 8, !tbaa !9
  %959 = load i64, ptr %58, align 8, !tbaa !9
  %960 = icmp sle i64 %958, %959
  br i1 %960, label %961, label %1144

961:                                              ; preds = %957
  %962 = load ptr, ptr %27, align 8, !tbaa !5
  %963 = load i64, ptr %962, align 8, !tbaa !9
  store i64 %963, ptr %59, align 8, !tbaa !9
  store i64 1, ptr %74, align 8, !tbaa !9
  br label %964

964:                                              ; preds = %1137, %961
  %965 = load i64, ptr %74, align 8, !tbaa !9
  %966 = load i64, ptr %59, align 8, !tbaa !9
  %967 = icmp sle i64 %965, %966
  br i1 %967, label %968, label %1140

968:                                              ; preds = %964
  %969 = load i64, ptr %74, align 8, !tbaa !9
  store i64 %969, ptr %60, align 8, !tbaa !9
  %970 = load i64, ptr %74, align 8, !tbaa !9
  store i64 %970, ptr %61, align 8, !tbaa !9
  %971 = load i64, ptr %74, align 8, !tbaa !9
  %972 = load i64, ptr %76, align 8, !tbaa !9
  %973 = load i64, ptr %49, align 8, !tbaa !9
  %974 = mul nsw i64 %972, %973
  %975 = add nsw i64 %971, %974
  store i64 %975, ptr %62, align 8, !tbaa !9
  %976 = load i64, ptr %75, align 8, !tbaa !9
  %977 = load i64, ptr %76, align 8, !tbaa !9
  %978 = load i64, ptr %51, align 8, !tbaa !9
  %979 = mul nsw i64 %977, %978
  %980 = add nsw i64 %976, %979
  store i64 %980, ptr %63, align 8, !tbaa !9
  %981 = load ptr, ptr %31, align 8, !tbaa !5
  %982 = load i64, ptr %62, align 8, !tbaa !9
  %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 !12
  %986 = load ptr, ptr %33, align 8, !tbaa !5
  %987 = load i64, ptr %63, align 8, !tbaa !9
  %988 = getelementptr inbounds %struct.doublecomplex, ptr %986, i64 %987
  %989 = getelementptr inbounds %struct.doublecomplex, ptr %988, i32 0, i32 0
  %990 = load double, ptr %989, align 8, !tbaa !12
  %991 = load ptr, ptr %31, align 8, !tbaa !5
  %992 = load i64, ptr %62, align 8, !tbaa !9
  %993 = getelementptr inbounds %struct.doublecomplex, ptr %991, i64 %992
  %994 = getelementptr inbounds %struct.doublecomplex, ptr %993, i32 0, i32 1
  %995 = load double, ptr %994, align 8, !tbaa !15
  %996 = load ptr, ptr %33, align 8, !tbaa !5
  %997 = load i64, ptr %63, align 8, !tbaa !9
  %998 = getelementptr inbounds %struct.doublecomplex, ptr %996, i64 %997
  %999 = getelementptr inbounds %struct.doublecomplex, ptr %998, i32 0, i32 1
  %1000 = load double, ptr %999, align 8, !tbaa !15
  %1001 = fmul double %995, %1000
  %1002 = fneg double %1001
  %1003 = call double @llvm.fmuladd.f64(double %985, double %990, double %1002)
  %1004 = getelementptr inbounds %struct.doublecomplex, ptr %71, i32 0, i32 0
  store double %1003, ptr %1004, align 8, !tbaa !12
  %1005 = load ptr, ptr %31, align 8, !tbaa !5
  %1006 = load i64, ptr %62, align 8, !tbaa !9
  %1007 = getelementptr inbounds %struct.doublecomplex, ptr %1005, i64 %1006
  %1008 = getelementptr inbounds %struct.doublecomplex, ptr %1007, i32 0, i32 0
  %1009 = load double, ptr %1008, align 8, !tbaa !12
  %1010 = load ptr, ptr %33, align 8, !tbaa !5
  %1011 = load i64, ptr %63, align 8, !tbaa !9
  %1012 = getelementptr inbounds %struct.doublecomplex, ptr %1010, i64 %1011
  %1013 = getelementptr inbounds %struct.doublecomplex, ptr %1012, i32 0, i32 1
  %1014 = load double, ptr %1013, align 8, !tbaa !15
  %1015 = load ptr, ptr %31, align 8, !tbaa !5
  %1016 = load i64, ptr %62, align 8, !tbaa !9
  %1017 = getelementptr inbounds %struct.doublecomplex, ptr %1015, i64 %1016
  %1018 = getelementptr inbounds %struct.doublecomplex, ptr %1017, i32 0, i32 1
  %1019 = load double, ptr %1018, align 8, !tbaa !15
  %1020 = load ptr, ptr %33, align 8, !tbaa !5
  %1021 = load i64, ptr %63, align 8, !tbaa !9
  %1022 = getelementptr inbounds %struct.doublecomplex, ptr %1020, i64 %1021
  %1023 = getelementptr inbounds %struct.doublecomplex, ptr %1022, i32 0, i32 0
  %1024 = load double, ptr %1023, align 8, !tbaa !12
  %1025 = fmul double %1019, %1024
  %1026 = call double @llvm.fmuladd.f64(double %1009, double %1014, double %1025)
  %1027 = getelementptr inbounds %struct.doublecomplex, ptr %71, i32 0, i32 1
  store double %1026, ptr %1027, align 8, !tbaa !15
  %1028 = load ptr, ptr %38, align 8, !tbaa !5
  %1029 = load i64, ptr %61, align 8, !tbaa !9
  %1030 = getelementptr inbounds %struct.doublecomplex, ptr %1028, i64 %1029
  %1031 = getelementptr inbounds %struct.doublecomplex, ptr %1030, i32 0, i32 0
  %1032 = load double, ptr %1031, align 8, !tbaa !12
  %1033 = getelementptr inbounds %struct.doublecomplex, ptr %71, i32 0, i32 0
  %1034 = load double, ptr %1033, align 8, !tbaa !12
  %1035 = fadd double %1032, %1034
  %1036 = getelementptr inbounds %struct.doublecomplex, ptr %70, i32 0, i32 0
  store double %1035, ptr %1036, align 8, !tbaa !12
  %1037 = load ptr, ptr %38, align 8, !tbaa !5
  %1038 = load i64, ptr %61, align 8, !tbaa !9
  %1039 = getelementptr inbounds %struct.doublecomplex, ptr %1037, i64 %1038
  %1040 = getelementptr inbounds %struct.doublecomplex, ptr %1039, i32 0, i32 1
  %1041 = load double, ptr %1040, align 8, !tbaa !15
  %1042 = getelementptr inbounds %struct.doublecomplex, ptr %71, i32 0, i32 1
  %1043 = load double, ptr %1042, align 8, !tbaa !15
  %1044 = fadd double %1041, %1043
  %1045 = getelementptr inbounds %struct.doublecomplex, ptr %70, i32 0, i32 1
  store double %1044, ptr %1045, align 8, !tbaa !15
  %1046 = getelementptr inbounds %struct.doublecomplex, ptr %70, i32 0, i32 0
  %1047 = load double, ptr %1046, align 8, !tbaa !12
  %1048 = load ptr, ptr %38, align 8, !tbaa !5
  %1049 = load i64, ptr %60, align 8, !tbaa !9
  %1050 = getelementptr inbounds %struct.doublecomplex, ptr %1048, i64 %1049
  %1051 = getelementptr inbounds %struct.doublecomplex, ptr %1050, i32 0, i32 0
  store double %1047, ptr %1051, align 8, !tbaa !12
  %1052 = getelementptr inbounds %struct.doublecomplex, ptr %70, i32 0, i32 1
  %1053 = load double, ptr %1052, align 8, !tbaa !15
  %1054 = load ptr, ptr %38, align 8, !tbaa !5
  %1055 = load i64, ptr %60, align 8, !tbaa !9
  %1056 = getelementptr inbounds %struct.doublecomplex, ptr %1054, i64 %1055
  %1057 = getelementptr inbounds %struct.doublecomplex, ptr %1056, i32 0, i32 1
  store double %1053, ptr %1057, align 8, !tbaa !15
  %1058 = load i64, ptr %74, align 8, !tbaa !9
  %1059 = load i64, ptr %76, align 8, !tbaa !9
  %1060 = load i64, ptr %49, align 8, !tbaa !9
  %1061 = mul nsw i64 %1059, %1060
  %1062 = add nsw i64 %1058, %1061
  store i64 %1062, ptr %60, align 8, !tbaa !9
  %1063 = load i64, ptr %75, align 8, !tbaa !9
  %1064 = load i64, ptr %76, align 8, !tbaa !9
  %1065 = load i64, ptr %51, align 8, !tbaa !9
  %1066 = mul nsw i64 %1064, %1065
  %1067 = add nsw i64 %1063, %1066
  store i64 %1067, ptr %61, align 8, !tbaa !9
  %1068 = load ptr, ptr %31, align 8, !tbaa !5
  %1069 = load i64, ptr %60, align 8, !tbaa !9
  %1070 = getelementptr inbounds %struct.doublecomplex, ptr %1068, i64 %1069
  %1071 = getelementptr inbounds %struct.doublecomplex, ptr %1070, i32 0, i32 0
  %1072 = load double, ptr %1071, align 8, !tbaa !12
  store double %1072, ptr %64, align 8, !tbaa !16
  %1073 = load double, ptr %64, align 8, !tbaa !16
  %1074 = fcmp oge double %1073, 0.000000e+00
  br i1 %1074, label %1075, label %1077

1075:                                             ; preds = %968
  %1076 = load double, ptr %64, align 8, !tbaa !16
  br label %1080

1077:                                             ; preds = %968
  %1078 = load double, ptr %64, align 8, !tbaa !16
  %1079 = fneg double %1078
  br label %1080

1080:                                             ; preds = %1077, %1075
  %1081 = phi double [ %1076, %1075 ], [ %1079, %1077 ]
  %1082 = load ptr, ptr %31, align 8, !tbaa !5
  %1083 = load i64, ptr %74, align 8, !tbaa !9
  %1084 = load i64, ptr %76, align 8, !tbaa !9
  %1085 = load i64, ptr %49, align 8, !tbaa !9
  %1086 = mul nsw i64 %1084, %1085
  %1087 = add nsw i64 %1083, %1086
  %1088 = getelementptr inbounds %struct.doublecomplex, ptr %1082, i64 %1087
  %1089 = call double @d_imag(ptr noundef %1088)
  store double %1089, ptr %65, align 8, !tbaa !16
  %1090 = load double, ptr %65, align 8, !tbaa !16
  %1091 = fcmp oge double %1090, 0.000000e+00
  br i1 %1091, label %1092, label %1094

1092:                                             ; preds = %1080
  %1093 = load double, ptr %65, align 8, !tbaa !16
  br label %1097

1094:                                             ; preds = %1080
  %1095 = load double, ptr %65, align 8, !tbaa !16
  %1096 = fneg double %1095
  br label %1097

1097:                                             ; preds = %1094, %1092
  %1098 = phi double [ %1093, %1092 ], [ %1096, %1094 ]
  %1099 = fadd double %1081, %1098
  %1100 = load ptr, ptr %33, align 8, !tbaa !5
  %1101 = load i64, ptr %61, align 8, !tbaa !9
  %1102 = getelementptr inbounds %struct.doublecomplex, ptr %1100, i64 %1101
  %1103 = getelementptr inbounds %struct.doublecomplex, ptr %1102, i32 0, i32 0
  %1104 = load double, ptr %1103, align 8, !tbaa !12
  store double %1104, ptr %66, align 8, !tbaa !16
  %1105 = load double, ptr %66, align 8, !tbaa !16
  %1106 = fcmp oge double %1105, 0.000000e+00
  br i1 %1106, label %1107, label %1109

1107:                                             ; preds = %1097
  %1108 = load double, ptr %66, align 8, !tbaa !16
  br label %1112

1109:                                             ; preds = %1097
  %1110 = load double, ptr %66, align 8, !tbaa !16
  %1111 = fneg double %1110
  br label %1112

1112:                                             ; preds = %1109, %1107
  %1113 = phi double [ %1108, %1107 ], [ %1111, %1109 ]
  %1114 = load ptr, ptr %33, align 8, !tbaa !5
  %1115 = load i64, ptr %75, align 8, !tbaa !9
  %1116 = load i64, ptr %76, align 8, !tbaa !9
  %1117 = load i64, ptr %51, align 8, !tbaa !9
  %1118 = mul nsw i64 %1116, %1117
  %1119 = add nsw i64 %1115, %1118
  %1120 = getelementptr inbounds %struct.doublecomplex, ptr %1114, i64 %1119
  %1121 = call double @d_imag(ptr noundef %1120)
  store double %1121, ptr %67, align 8, !tbaa !16
  %1122 = load double, ptr %67, align 8, !tbaa !16
  %1123 = fcmp oge double %1122, 0.000000e+00
  br i1 %1123, label %1124, label %1126

1124:                                             ; preds = %1112
  %1125 = load double, ptr %67, align 8, !tbaa !16
  br label %1129

1126:                                             ; preds = %1112
  %1127 = load double, ptr %67, align 8, !tbaa !16
  %1128 = fneg double %1127
  br label %1129

1129:                                             ; preds = %1126, %1124
  %1130 = phi double [ %1125, %1124 ], [ %1128, %1126 ]
  %1131 = fadd double %1113, %1130
  %1132 = load ptr, ptr %39, align 8, !tbaa !5
  %1133 = load i64, ptr %74, align 8, !tbaa !9
  %1134 = getelementptr inbounds double, ptr %1132, i64 %1133
  %1135 = load double, ptr %1134, align 8, !tbaa !16
  %1136 = call double @llvm.fmuladd.f64(double %1099, double %1131, double %1135)
  store double %1136, ptr %1134, align 8, !tbaa !16
  br label %1137

1137:                                             ; preds = %1129
  %1138 = load i64, ptr %74, align 8, !tbaa !9
  %1139 = add nsw i64 %1138, 1
  store i64 %1139, ptr %74, align 8, !tbaa !9
  br label %964, !llvm.loop !27

1140:                                             ; preds = %964
  br label %1141

1141:                                             ; preds = %1140
  %1142 = load i64, ptr %76, align 8, !tbaa !9
  %1143 = add nsw i64 %1142, 1
  store i64 %1143, ptr %76, align 8, !tbaa !9
  br label %957, !llvm.loop !28

1144:                                             ; preds = %957
  br label %1145

1145:                                             ; preds = %1144, %953
  br label %1889

1146:                                             ; preds = %767, %764
  %1147 = load i64, ptr %78, align 8, !tbaa !9
  %1148 = icmp ne i64 %1147, 0
  br i1 %1148, label %1149, label %1888

1149:                                             ; preds = %1146
  %1150 = load i64, ptr %79, align 8, !tbaa !9
  %1151 = icmp ne i64 %1150, 0
  br i1 %1151, label %1152, label %1888

1152:                                             ; preds = %1149
  %1153 = load i64, ptr %80, align 8, !tbaa !9
  %1154 = icmp ne i64 %1153, 0
  br i1 %1154, label %1155, label %1511

1155:                                             ; preds = %1152
  %1156 = load i64, ptr %81, align 8, !tbaa !9
  %1157 = icmp ne i64 %1156, 0
  br i1 %1157, label %1158, label %1329

1158:                                             ; preds = %1155
  %1159 = load ptr, ptr %29, align 8, !tbaa !5
  %1160 = load i64, ptr %1159, align 8, !tbaa !9
  store i64 %1160, ptr %58, align 8, !tbaa !9
  store i64 1, ptr %76, align 8, !tbaa !9
  br label %1161

1161:                                             ; preds = %1325, %1158
  %1162 = load i64, ptr %76, align 8, !tbaa !9
  %1163 = load i64, ptr %58, align 8, !tbaa !9
  %1164 = icmp sle i64 %1162, %1163
  br i1 %1164, label %1165, label %1328

1165:                                             ; preds = %1161
  %1166 = load ptr, ptr %27, align 8, !tbaa !5
  %1167 = load i64, ptr %1166, align 8, !tbaa !9
  store i64 %1167, ptr %59, align 8, !tbaa !9
  store i64 1, ptr %74, align 8, !tbaa !9
  br label %1168

1168:                                             ; preds = %1321, %1165
  %1169 = load i64, ptr %74, align 8, !tbaa !9
  %1170 = load i64, ptr %59, align 8, !tbaa !9
  %1171 = icmp sle i64 %1169, %1170
  br i1 %1171, label %1172, label %1324

1172:                                             ; preds = %1168
  %1173 = load i64, ptr %74, align 8, !tbaa !9
  store i64 %1173, ptr %60, align 8, !tbaa !9
  %1174 = load i64, ptr %74, align 8, !tbaa !9
  store i64 %1174, ptr %61, align 8, !tbaa !9
  %1175 = load ptr, ptr %31, align 8, !tbaa !5
  %1176 = load i64, ptr %76, align 8, !tbaa !9
  %1177 = load i64, ptr %74, align 8, !tbaa !9
  %1178 = load i64, ptr %49, align 8, !tbaa !9
  %1179 = mul nsw i64 %1177, %1178
  %1180 = add nsw i64 %1176, %1179
  %1181 = getelementptr inbounds %struct.doublecomplex, ptr %1175, i64 %1180
  call void @d_cnjg(ptr noundef %72, ptr noundef %1181)
  %1182 = load ptr, ptr %33, align 8, !tbaa !5
  %1183 = load i64, ptr %75, align 8, !tbaa !9
  %1184 = load i64, ptr %76, align 8, !tbaa !9
  %1185 = load i64, ptr %51, align 8, !tbaa !9
  %1186 = mul nsw i64 %1184, %1185
  %1187 = add nsw i64 %1183, %1186
  %1188 = getelementptr inbounds %struct.doublecomplex, ptr %1182, i64 %1187
  call void @d_cnjg(ptr noundef %73, ptr noundef %1188)
  %1189 = getelementptr inbounds %struct.doublecomplex, ptr %72, i32 0, i32 0
  %1190 = load double, ptr %1189, align 8, !tbaa !12
  %1191 = getelementptr inbounds %struct.doublecomplex, ptr %73, i32 0, i32 0
  %1192 = load double, ptr %1191, align 8, !tbaa !12
  %1193 = getelementptr inbounds %struct.doublecomplex, ptr %72, i32 0, i32 1
  %1194 = load double, ptr %1193, align 8, !tbaa !15
  %1195 = getelementptr inbounds %struct.doublecomplex, ptr %73, i32 0, i32 1
  %1196 = load double, ptr %1195, align 8, !tbaa !15
  %1197 = fmul double %1194, %1196
  %1198 = fneg double %1197
  %1199 = call double @llvm.fmuladd.f64(double %1190, double %1192, double %1198)
  %1200 = getelementptr inbounds %struct.doublecomplex, ptr %71, i32 0, i32 0
  store double %1199, ptr %1200, align 8, !tbaa !12
  %1201 = getelementptr inbounds %struct.doublecomplex, ptr %72, i32 0, i32 0
  %1202 = load double, ptr %1201, align 8, !tbaa !12
  %1203 = getelementptr inbounds %struct.doublecomplex, ptr %73, i32 0, i32 1
  %1204 = load double, ptr %1203, align 8, !tbaa !15
  %1205 = getelementptr inbounds %struct.doublecomplex, ptr %72, i32 0, i32 1
  %1206 = load double, ptr %1205, align 8, !tbaa !15
  %1207 = getelementptr inbounds %struct.doublecomplex, ptr %73, i32 0, i32 0
  %1208 = load double, ptr %1207, align 8, !tbaa !12
  %1209 = fmul double %1206, %1208
  %1210 = call double @llvm.fmuladd.f64(double %1202, double %1204, double %1209)
  %1211 = getelementptr inbounds %struct.doublecomplex, ptr %71, i32 0, i32 1
  store double %1210, ptr %1211, align 8, !tbaa !15
  %1212 = load ptr, ptr %38, align 8, !tbaa !5
  %1213 = load i64, ptr %61, align 8, !tbaa !9
  %1214 = getelementptr inbounds %struct.doublecomplex, ptr %1212, i64 %1213
  %1215 = getelementptr inbounds %struct.doublecomplex, ptr %1214, i32 0, i32 0
  %1216 = load double, ptr %1215, align 8, !tbaa !12
  %1217 = getelementptr inbounds %struct.doublecomplex, ptr %71, i32 0, i32 0
  %1218 = load double, ptr %1217, align 8, !tbaa !12
  %1219 = fadd double %1216, %1218
  %1220 = getelementptr inbounds %struct.doublecomplex, ptr %70, i32 0, i32 0
  store double %1219, ptr %1220, align 8, !tbaa !12
  %1221 = load ptr, ptr %38, align 8, !tbaa !5
  %1222 = load i64, ptr %61, align 8, !tbaa !9
  %1223 = getelementptr inbounds %struct.doublecomplex, ptr %1221, i64 %1222
  %1224 = getelementptr inbounds %struct.doublecomplex, ptr %1223, i32 0, i32 1
  %1225 = load double, ptr %1224, align 8, !tbaa !15
  %1226 = getelementptr inbounds %struct.doublecomplex, ptr %71, i32 0, i32 1
  %1227 = load double, ptr %1226, align 8, !tbaa !15
  %1228 = fadd double %1225, %1227
  %1229 = getelementptr inbounds %struct.doublecomplex, ptr %70, i32 0, i32 1
  store double %1228, ptr %1229, align 8, !tbaa !15
  %1230 = getelementptr inbounds %struct.doublecomplex, ptr %70, i32 0, i32 0
  %1231 = load double, ptr %1230, align 8, !tbaa !12
  %1232 = load ptr, ptr %38, align 8, !tbaa !5
  %1233 = load i64, ptr %60, align 8, !tbaa !9
  %1234 = getelementptr inbounds %struct.doublecomplex, ptr %1232, i64 %1233
  %1235 = getelementptr inbounds %struct.doublecomplex, ptr %1234, i32 0, i32 0
  store double %1231, ptr %1235, align 8, !tbaa !12
  %1236 = getelementptr inbounds %struct.doublecomplex, ptr %70, i32 0, i32 1
  %1237 = load double, ptr %1236, align 8, !tbaa !15
  %1238 = load ptr, ptr %38, align 8, !tbaa !5
  %1239 = load i64, ptr %60, align 8, !tbaa !9
  %1240 = getelementptr inbounds %struct.doublecomplex, ptr %1238, i64 %1239
  %1241 = getelementptr inbounds %struct.doublecomplex, ptr %1240, i32 0, i32 1
  store double %1237, ptr %1241, align 8, !tbaa !15
  %1242 = load i64, ptr %76, align 8, !tbaa !9
  %1243 = load i64, ptr %74, align 8, !tbaa !9
  %1244 = load i64, ptr %49, align 8, !tbaa !9
  %1245 = mul nsw i64 %1243, %1244
  %1246 = add nsw i64 %1242, %1245
  store i64 %1246, ptr %60, align 8, !tbaa !9
  %1247 = load i64, ptr %75, align 8, !tbaa !9
  %1248 = load i64, ptr %76, align 8, !tbaa !9
  %1249 = load i64, ptr %51, align 8, !tbaa !9
  %1250 = mul nsw i64 %1248, %1249
  %1251 = add nsw i64 %1247, %1250
  store i64 %1251, ptr %61, align 8, !tbaa !9
  %1252 = load ptr, ptr %31, align 8, !tbaa !5
  %1253 = load i64, ptr %60, align 8, !tbaa !9
  %1254 = getelementptr inbounds %struct.doublecomplex, ptr %1252, i64 %1253
  %1255 = getelementptr inbounds %struct.doublecomplex, ptr %1254, i32 0, i32 0
  %1256 = load double, ptr %1255, align 8, !tbaa !12
  store double %1256, ptr %64, align 8, !tbaa !16
  %1257 = load double, ptr %64, align 8, !tbaa !16
  %1258 = fcmp oge double %1257, 0.000000e+00
  br i1 %1258, label %1259, label %1261

1259:                                             ; preds = %1172
  %1260 = load double, ptr %64, align 8, !tbaa !16
  br label %1264

1261:                                             ; preds = %1172
  %1262 = load double, ptr %64, align 8, !tbaa !16
  %1263 = fneg double %1262
  br label %1264

1264:                                             ; preds = %1261, %1259
  %1265 = phi double [ %1260, %1259 ], [ %1263, %1261 ]
  %1266 = load ptr, ptr %31, align 8, !tbaa !5
  %1267 = load i64, ptr %76, align 8, !tbaa !9
  %1268 = load i64, ptr %74, align 8, !tbaa !9
  %1269 = load i64, ptr %49, align 8, !tbaa !9
  %1270 = mul nsw i64 %1268, %1269
  %1271 = add nsw i64 %1267, %1270
  %1272 = getelementptr inbounds %struct.doublecomplex, ptr %1266, i64 %1271
  %1273 = call double @d_imag(ptr noundef %1272)
  store double %1273, ptr %65, align 8, !tbaa !16
  %1274 = load double, ptr %65, align 8, !tbaa !16
  %1275 = fcmp oge double %1274, 0.000000e+00
  br i1 %1275, label %1276, label %1278

1276:                                             ; preds = %1264
  %1277 = load double, ptr %65, align 8, !tbaa !16
  br label %1281

1278:                                             ; preds = %1264
  %1279 = load double, ptr %65, align 8, !tbaa !16
  %1280 = fneg double %1279
  br label %1281

1281:                                             ; preds = %1278, %1276
  %1282 = phi double [ %1277, %1276 ], [ %1280, %1278 ]
  %1283 = fadd double %1265, %1282
  %1284 = load ptr, ptr %33, align 8, !tbaa !5
  %1285 = load i64, ptr %61, align 8, !tbaa !9
  %1286 = getelementptr inbounds %struct.doublecomplex, ptr %1284, i64 %1285
  %1287 = getelementptr inbounds %struct.doublecomplex, ptr %1286, i32 0, i32 0
  %1288 = load double, ptr %1287, align 8, !tbaa !12
  store double %1288, ptr %66, align 8, !tbaa !16
  %1289 = load double, ptr %66, align 8, !tbaa !16
  %1290 = fcmp oge double %1289, 0.000000e+00
  br i1 %1290, label %1291, label %1293

1291:                                             ; preds = %1281
  %1292 = load double, ptr %66, align 8, !tbaa !16
  br label %1296

1293:                                             ; preds = %1281
  %1294 = load double, ptr %66, align 8, !tbaa !16
  %1295 = fneg double %1294
  br label %1296

1296:                                             ; preds = %1293, %1291
  %1297 = phi double [ %1292, %1291 ], [ %1295, %1293 ]
  %1298 = load ptr, ptr %33, align 8, !tbaa !5
  %1299 = load i64, ptr %75, align 8, !tbaa !9
  %1300 = load i64, ptr %76, align 8, !tbaa !9
  %1301 = load i64, ptr %51, align 8, !tbaa !9
  %1302 = mul nsw i64 %1300, %1301
  %1303 = add nsw i64 %1299, %1302
  %1304 = getelementptr inbounds %struct.doublecomplex, ptr %1298, i64 %1303
  %1305 = call double @d_imag(ptr noundef %1304)
  store double %1305, ptr %67, align 8, !tbaa !16
  %1306 = load double, ptr %67, align 8, !tbaa !16
  %1307 = fcmp oge double %1306, 0.000000e+00
  br i1 %1307, label %1308, label %1310

1308:                                             ; preds = %1296
  %1309 = load double, ptr %67, align 8, !tbaa !16
  br label %1313

1310:                                             ; preds = %1296
  %1311 = load double, ptr %67, align 8, !tbaa !16
  %1312 = fneg double %1311
  br label %1313

1313:                                             ; preds = %1310, %1308
  %1314 = phi double [ %1309, %1308 ], [ %1312, %1310 ]
  %1315 = fadd double %1297, %1314
  %1316 = load ptr, ptr %39, align 8, !tbaa !5
  %1317 = load i64, ptr %74, align 8, !tbaa !9
  %1318 = getelementptr inbounds double, ptr %1316, i64 %1317
  %1319 = load double, ptr %1318, align 8, !tbaa !16
  %1320 = call double @llvm.fmuladd.f64(double %1283, double %1315, double %1319)
  store double %1320, ptr %1318, align 8, !tbaa !16
  br label %1321

1321:                                             ; preds = %1313
  %1322 = load i64, ptr %74, align 8, !tbaa !9
  %1323 = add nsw i64 %1322, 1
  store i64 %1323, ptr %74, align 8, !tbaa !9
  br label %1168, !llvm.loop !29

1324:                                             ; preds = %1168
  br label %1325

1325:                                             ; preds = %1324
  %1326 = load i64, ptr %76, align 8, !tbaa !9
  %1327 = add nsw i64 %1326, 1
  store i64 %1327, ptr %76, align 8, !tbaa !9
  br label %1161, !llvm.loop !30

1328:                                             ; preds = %1161
  br label %1510

1329:                                             ; preds = %1155
  %1330 = load ptr, ptr %29, align 8, !tbaa !5
  %1331 = load i64, ptr %1330, align 8, !tbaa !9
  store i64 %1331, ptr %58, align 8, !tbaa !9
  store i64 1, ptr %76, align 8, !tbaa !9
  br label %1332

1332:                                             ; preds = %1506, %1329
  %1333 = load i64, ptr %76, align 8, !tbaa !9
  %1334 = load i64, ptr %58, align 8, !tbaa !9
  %1335 = icmp sle i64 %1333, %1334
  br i1 %1335, label %1336, label %1509

1336:                                             ; preds = %1332
  %1337 = load ptr, ptr %27, align 8, !tbaa !5
  %1338 = load i64, ptr %1337, align 8, !tbaa !9
  store i64 %1338, ptr %59, align 8, !tbaa !9
  store i64 1, ptr %74, align 8, !tbaa !9
  br label %1339

1339:                                             ; preds = %1502, %1336
  %1340 = load i64, ptr %74, align 8, !tbaa !9
  %1341 = load i64, ptr %59, align 8, !tbaa !9
  %1342 = icmp sle i64 %1340, %1341
  br i1 %1342, label %1343, label %1505

1343:                                             ; preds = %1339
  %1344 = load i64, ptr %74, align 8, !tbaa !9
  store i64 %1344, ptr %60, align 8, !tbaa !9
  %1345 = load i64, ptr %74, align 8, !tbaa !9
  store i64 %1345, ptr %61, align 8, !tbaa !9
  %1346 = load ptr, ptr %31, align 8, !tbaa !5
  %1347 = load i64, ptr %76, align 8, !tbaa !9
  %1348 = load i64, ptr %74, align 8, !tbaa !9
  %1349 = load i64, ptr %49, align 8, !tbaa !9
  %1350 = mul nsw i64 %1348, %1349
  %1351 = add nsw i64 %1347, %1350
  %1352 = getelementptr inbounds %struct.doublecomplex, ptr %1346, i64 %1351
  call void @d_cnjg(ptr noundef %72, ptr noundef %1352)
  %1353 = load i64, ptr %75, align 8, !tbaa !9
  %1354 = load i64, ptr %76, align 8, !tbaa !9
  %1355 = load i64, ptr %51, align 8, !tbaa !9
  %1356 = mul nsw i64 %1354, %1355
  %1357 = add nsw i64 %1353, %1356
  store i64 %1357, ptr %62, align 8, !tbaa !9
  %1358 = getelementptr inbounds %struct.doublecomplex, ptr %72, i32 0, i32 0
  %1359 = load double, ptr %1358, align 8, !tbaa !12
  %1360 = load ptr, ptr %33, align 8, !tbaa !5
  %1361 = load i64, ptr %62, align 8, !tbaa !9
  %1362 = getelementptr inbounds %struct.doublecomplex, ptr %1360, i64 %1361
  %1363 = getelementptr inbounds %struct.doublecomplex, ptr %1362, i32 0, i32 0
  %1364 = load double, ptr %1363, align 8, !tbaa !12
  %1365 = getelementptr inbounds %struct.doublecomplex, ptr %72, i32 0, i32 1
  %1366 = load double, ptr %1365, align 8, !tbaa !15
  %1367 = load ptr, ptr %33, align 8, !tbaa !5
  %1368 = load i64, ptr %62, align 8, !tbaa !9
  %1369 = getelementptr inbounds %struct.doublecomplex, ptr %1367, i64 %1368
  %1370 = getelementptr inbounds %struct.doublecomplex, ptr %1369, i32 0, i32 1
  %1371 = load double, ptr %1370, align 8, !tbaa !15
  %1372 = fmul double %1366, %1371
  %1373 = fneg double %1372
  %1374 = call double @llvm.fmuladd.f64(double %1359, double %1364, double %1373)
  %1375 = getelementptr inbounds %struct.doublecomplex, ptr %71, i32 0, i32 0
  store double %1374, ptr %1375, align 8, !tbaa !12
  %1376 = getelementptr inbounds %struct.doublecomplex, ptr %72, i32 0, i32 0
  %1377 = load double, ptr %1376, align 8, !tbaa !12
  %1378 = load ptr, ptr %33, align 8, !tbaa !5
  %1379 = load i64, ptr %62, align 8, !tbaa !9
  %1380 = getelementptr inbounds %struct.doublecomplex, ptr %1378, i64 %1379
  %1381 = getelementptr inbounds %struct.doublecomplex, ptr %1380, i32 0, i32 1
  %1382 = load double, ptr %1381, align 8, !tbaa !15
  %1383 = getelementptr inbounds %struct.doublecomplex, ptr %72, i32 0, i32 1
  %1384 = load double, ptr %1383, align 8, !tbaa !15
  %1385 = load ptr, ptr %33, align 8, !tbaa !5
  %1386 = load i64, ptr %62, align 8, !tbaa !9
  %1387 = getelementptr inbounds %struct.doublecomplex, ptr %1385, i64 %1386
  %1388 = getelementptr inbounds %struct.doublecomplex, ptr %1387, i32 0, i32 0
  %1389 = load double, ptr %1388, align 8, !tbaa !12
  %1390 = fmul double %1384, %1389
  %1391 = call double @llvm.fmuladd.f64(double %1377, double %1382, double %1390)
  %1392 = getelementptr inbounds %struct.doublecomplex, ptr %71, i32 0, i32 1
  store double %1391, ptr %1392, align 8, !tbaa !15
  %1393 = load ptr, ptr %38, align 8, !tbaa !5
  %1394 = load i64, ptr %61, align 8, !tbaa !9
  %1395 = getelementptr inbounds %struct.doublecomplex, ptr %1393, i64 %1394
  %1396 = getelementptr inbounds %struct.doublecomplex, ptr %1395, i32 0, i32 0
  %1397 = load double, ptr %1396, align 8, !tbaa !12
  %1398 = getelementptr inbounds %struct.doublecomplex, ptr %71, i32 0, i32 0
  %1399 = load double, ptr %1398, align 8, !tbaa !12
  %1400 = fadd double %1397, %1399
  %1401 = getelementptr inbounds %struct.doublecomplex, ptr %70, i32 0, i32 0
  store double %1400, ptr %1401, align 8, !tbaa !12
  %1402 = load ptr, ptr %38, align 8, !tbaa !5
  %1403 = load i64, ptr %61, align 8, !tbaa !9
  %1404 = getelementptr inbounds %struct.doublecomplex, ptr %1402, i64 %1403
  %1405 = getelementptr inbounds %struct.doublecomplex, ptr %1404, i32 0, i32 1
  %1406 = load double, ptr %1405, align 8, !tbaa !15
  %1407 = getelementptr inbounds %struct.doublecomplex, ptr %71, i32 0, i32 1
  %1408 = load double, ptr %1407, align 8, !tbaa !15
  %1409 = fadd double %1406, %1408
  %1410 = getelementptr inbounds %struct.doublecomplex, ptr %70, i32 0, i32 1
  store double %1409, ptr %1410, align 8, !tbaa !15
  %1411 = getelementptr inbounds %struct.doublecomplex, ptr %70, i32 0, i32 0
  %1412 = load double, ptr %1411, align 8, !tbaa !12
  %1413 = load ptr, ptr %38, align 8, !tbaa !5
  %1414 = load i64, ptr %60, align 8, !tbaa !9
  %1415 = getelementptr inbounds %struct.doublecomplex, ptr %1413, i64 %1414
  %1416 = getelementptr inbounds %struct.doublecomplex, ptr %1415, i32 0, i32 0
  store double %1412, ptr %1416, align 8, !tbaa !12
  %1417 = getelementptr inbounds %struct.doublecomplex, ptr %70, i32 0, i32 1
  %1418 = load double, ptr %1417, align 8, !tbaa !15
  %1419 = load ptr, ptr %38, align 8, !tbaa !5
  %1420 = load i64, ptr %60, align 8, !tbaa !9
  %1421 = getelementptr inbounds %struct.doublecomplex, ptr %1419, i64 %1420
  %1422 = getelementptr inbounds %struct.doublecomplex, ptr %1421, i32 0, i32 1
  store double %1418, ptr %1422, align 8, !tbaa !15
  %1423 = load i64, ptr %76, align 8, !tbaa !9
  %1424 = load i64, ptr %74, align 8, !tbaa !9
  %1425 = load i64, ptr %49, align 8, !tbaa !9
  %1426 = mul nsw i64 %1424, %1425
  %1427 = add nsw i64 %1423, %1426
  store i64 %1427, ptr %60, align 8, !tbaa !9
  %1428 = load i64, ptr %75, align 8, !tbaa !9
  %1429 = load i64, ptr %76, align 8, !tbaa !9
  %1430 = load i64, ptr %51, align 8, !tbaa !9
  %1431 = mul nsw i64 %1429, %1430
  %1432 = add nsw i64 %1428, %1431
  store i64 %1432, ptr %61, align 8, !tbaa !9
  %1433 = load ptr, ptr %31, align 8, !tbaa !5
  %1434 = load i64, ptr %60, align 8, !tbaa !9
  %1435 = getelementptr inbounds %struct.doublecomplex, ptr %1433, i64 %1434
  %1436 = getelementptr inbounds %struct.doublecomplex, ptr %1435, i32 0, i32 0
  %1437 = load double, ptr %1436, align 8, !tbaa !12
  store double %1437, ptr %64, align 8, !tbaa !16
  %1438 = load double, ptr %64, align 8, !tbaa !16
  %1439 = fcmp oge double %1438, 0.000000e+00
  br i1 %1439, label %1440, label %1442

1440:                                             ; preds = %1343
  %1441 = load double, ptr %64, align 8, !tbaa !16
  br label %1445

1442:                                             ; preds = %1343
  %1443 = load double, ptr %64, align 8, !tbaa !16
  %1444 = fneg double %1443
  br label %1445

1445:                                             ; preds = %1442, %1440
  %1446 = phi double [ %1441, %1440 ], [ %1444, %1442 ]
  %1447 = load ptr, ptr %31, align 8, !tbaa !5
  %1448 = load i64, ptr %76, align 8, !tbaa !9
  %1449 = load i64, ptr %74, align 8, !tbaa !9
  %1450 = load i64, ptr %49, align 8, !tbaa !9
  %1451 = mul nsw i64 %1449, %1450
  %1452 = add nsw i64 %1448, %1451
  %1453 = getelementptr inbounds %struct.doublecomplex, ptr %1447, i64 %1452
  %1454 = call double @d_imag(ptr noundef %1453)
  store double %1454, ptr %65, align 8, !tbaa !16
  %1455 = load double, ptr %65, align 8, !tbaa !16
  %1456 = fcmp oge double %1455, 0.000000e+00
  br i1 %1456, label %1457, label %1459

1457:                                             ; preds = %1445
  %1458 = load double, ptr %65, align 8, !tbaa !16
  br label %1462

1459:                                             ; preds = %1445
  %1460 = load double, ptr %65, align 8, !tbaa !16
  %1461 = fneg double %1460
  br label %1462

1462:                                             ; preds = %1459, %1457
  %1463 = phi double [ %1458, %1457 ], [ %1461, %1459 ]
  %1464 = fadd double %1446, %1463
  %1465 = load ptr, ptr %33, align 8, !tbaa !5
  %1466 = load i64, ptr %61, align 8, !tbaa !9
  %1467 = getelementptr inbounds %struct.doublecomplex, ptr %1465, i64 %1466
  %1468 = getelementptr inbounds %struct.doublecomplex, ptr %1467, i32 0, i32 0
  %1469 = load double, ptr %1468, align 8, !tbaa !12
  store double %1469, ptr %66, align 8, !tbaa !16
  %1470 = load double, ptr %66, align 8, !tbaa !16
  %1471 = fcmp oge double %1470, 0.000000e+00
  br i1 %1471, label %1472, label %1474

1472:                                             ; preds = %1462
  %1473 = load double, ptr %66, align 8, !tbaa !16
  br label %1477

1474:                                             ; preds = %1462
  %1475 = load double, ptr %66, align 8, !tbaa !16
  %1476 = fneg double %1475
  br label %1477

1477:                                             ; preds = %1474, %1472
  %1478 = phi double [ %1473, %1472 ], [ %1476, %1474 ]
  %1479 = load ptr, ptr %33, align 8, !tbaa !5
  %1480 = load i64, ptr %75, align 8, !tbaa !9
  %1481 = load i64, ptr %76, align 8, !tbaa !9
  %1482 = load i64, ptr %51, align 8, !tbaa !9
  %1483 = mul nsw i64 %1481, %1482
  %1484 = add nsw i64 %1480, %1483
  %1485 = getelementptr inbounds %struct.doublecomplex, ptr %1479, i64 %1484
  %1486 = call double @d_imag(ptr noundef %1485)
  store double %1486, ptr %67, align 8, !tbaa !16
  %1487 = load double, ptr %67, align 8, !tbaa !16
  %1488 = fcmp oge double %1487, 0.000000e+00
  br i1 %1488, label %1489, label %1491

1489:                                             ; preds = %1477
  %1490 = load double, ptr %67, align 8, !tbaa !16
  br label %1494

1491:                                             ; preds = %1477
  %1492 = load double, ptr %67, align 8, !tbaa !16
  %1493 = fneg double %1492
  br label %1494

1494:                                             ; preds = %1491, %1489
  %1495 = phi double [ %1490, %1489 ], [ %1493, %1491 ]
  %1496 = fadd double %1478, %1495
  %1497 = load ptr, ptr %39, align 8, !tbaa !5
  %1498 = load i64, ptr %74, align 8, !tbaa !9
  %1499 = getelementptr inbounds double, ptr %1497, i64 %1498
  %1500 = load double, ptr %1499, align 8, !tbaa !16
  %1501 = call double @llvm.fmuladd.f64(double %1464, double %1496, double %1500)
  store double %1501, ptr %1499, align 8, !tbaa !16
  br label %1502

1502:                                             ; preds = %1494
  %1503 = load i64, ptr %74, align 8, !tbaa !9
  %1504 = add nsw i64 %1503, 1
  store i64 %1504, ptr %74, align 8, !tbaa !9
  br label %1339, !llvm.loop !31

1505:                                             ; preds = %1339
  br label %1506

1506:                                             ; preds = %1505
  %1507 = load i64, ptr %76, align 8, !tbaa !9
  %1508 = add nsw i64 %1507, 1
  store i64 %1508, ptr %76, align 8, !tbaa !9
  br label %1332, !llvm.loop !32

1509:                                             ; preds = %1332
  br label %1510

1510:                                             ; preds = %1509, %1328
  br label %1887

1511:                                             ; preds = %1152
  %1512 = load i64, ptr %81, align 8, !tbaa !9
  %1513 = icmp ne i64 %1512, 0
  br i1 %1513, label %1514, label %1695

1514:                                             ; preds = %1511
  %1515 = load ptr, ptr %29, align 8, !tbaa !5
  %1516 = load i64, ptr %1515, align 8, !tbaa !9
  store i64 %1516, ptr %58, align 8, !tbaa !9
  store i64 1, ptr %76, align 8, !tbaa !9
  br label %1517

1517:                                             ; preds = %1691, %1514
  %1518 = load i64, ptr %76, align 8, !tbaa !9
  %1519 = load i64, ptr %58, align 8, !tbaa !9
  %1520 = icmp sle i64 %1518, %1519
  br i1 %1520, label %1521, label %1694

1521:                                             ; preds = %1517
  %1522 = load ptr, ptr %27, align 8, !tbaa !5
  %1523 = load i64, ptr %1522, align 8, !tbaa !9
  store i64 %1523, ptr %59, align 8, !tbaa !9
  store i64 1, ptr %74, align 8, !tbaa !9
  br label %1524

1524:                                             ; preds = %1687, %1521
  %1525 = load i64, ptr %74, align 8, !tbaa !9
  %1526 = load i64, ptr %59, align 8, !tbaa !9
  %1527 = icmp sle i64 %1525, %1526
  br i1 %1527, label %1528, label %1690

1528:                                             ; preds = %1524
  %1529 = load i64, ptr %74, align 8, !tbaa !9
  store i64 %1529, ptr %60, align 8, !tbaa !9
  %1530 = load i64, ptr %74, align 8, !tbaa !9
  store i64 %1530, ptr %61, align 8, !tbaa !9
  %1531 = load i64, ptr %76, align 8, !tbaa !9
  %1532 = load i64, ptr %74, align 8, !tbaa !9
  %1533 = load i64, ptr %49, align 8, !tbaa !9
  %1534 = mul nsw i64 %1532, %1533
  %1535 = add nsw i64 %1531, %1534
  store i64 %1535, ptr %62, align 8, !tbaa !9
  %1536 = load ptr, ptr %33, align 8, !tbaa !5
  %1537 = load i64, ptr %75, align 8, !tbaa !9
  %1538 = load i64, ptr %76, align 8, !tbaa !9
  %1539 = load i64, ptr %51, align 8, !tbaa !9
  %1540 = mul nsw i64 %1538, %1539
  %1541 = add nsw i64 %1537, %1540
  %1542 = getelementptr inbounds %struct.doublecomplex, ptr %1536, i64 %1541
  call void @d_cnjg(ptr noundef %72, ptr noundef %1542)
  %1543 = load ptr, ptr %31, align 8, !tbaa !5
  %1544 = load i64, ptr %62, align 8, !tbaa !9
  %1545 = getelementptr inbounds %struct.doublecomplex, ptr %1543, i64 %1544
  %1546 = getelementptr inbounds %struct.doublecomplex, ptr %1545, i32 0, i32 0
  %1547 = load double, ptr %1546, align 8, !tbaa !12
  %1548 = getelementptr inbounds %struct.doublecomplex, ptr %72, i32 0, i32 0
  %1549 = load double, ptr %1548, align 8, !tbaa !12
  %1550 = load ptr, ptr %31, align 8, !tbaa !5
  %1551 = load i64, ptr %62, align 8, !tbaa !9
  %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 !15
  %1555 = getelementptr inbounds %struct.doublecomplex, ptr %72, i32 0, i32 1
  %1556 = load double, ptr %1555, align 8, !tbaa !15
  %1557 = fmul double %1554, %1556
  %1558 = fneg double %1557
  %1559 = call double @llvm.fmuladd.f64(double %1547, double %1549, double %1558)
  %1560 = getelementptr inbounds %struct.doublecomplex, ptr %71, i32 0, i32 0
  store double %1559, ptr %1560, align 8, !tbaa !12
  %1561 = load ptr, ptr %31, align 8, !tbaa !5
  %1562 = load i64, ptr %62, align 8, !tbaa !9
  %1563 = getelementptr inbounds %struct.doublecomplex, ptr %1561, i64 %1562
  %1564 = getelementptr inbounds %struct.doublecomplex, ptr %1563, i32 0, i32 0
  %1565 = load double, ptr %1564, align 8, !tbaa !12
  %1566 = getelementptr inbounds %struct.doublecomplex, ptr %72, i32 0, i32 1
  %1567 = load double, ptr %1566, align 8, !tbaa !15
  %1568 = load ptr, ptr %31, align 8, !tbaa !5
  %1569 = load i64, ptr %62, align 8, !tbaa !9
  %1570 = getelementptr inbounds %struct.doublecomplex, ptr %1568, i64 %1569
  %1571 = getelementptr inbounds %struct.doublecomplex, ptr %1570, i32 0, i32 1
  %1572 = load double, ptr %1571, align 8, !tbaa !15
  %1573 = getelementptr inbounds %struct.doublecomplex, ptr %72, i32 0, i32 0
  %1574 = load double, ptr %1573, align 8, !tbaa !12
  %1575 = fmul double %1572, %1574
  %1576 = call double @llvm.fmuladd.f64(double %1565, double %1567, double %1575)
  %1577 = getelementptr inbounds %struct.doublecomplex, ptr %71, i32 0, i32 1
  store double %1576, ptr %1577, align 8, !tbaa !15
  %1578 = load ptr, ptr %38, align 8, !tbaa !5
  %1579 = load i64, ptr %61, align 8, !tbaa !9
  %1580 = getelementptr inbounds %struct.doublecomplex, ptr %1578, i64 %1579
  %1581 = getelementptr inbounds %struct.doublecomplex, ptr %1580, i32 0, i32 0
  %1582 = load double, ptr %1581, align 8, !tbaa !12
  %1583 = getelementptr inbounds %struct.doublecomplex, ptr %71, i32 0, i32 0
  %1584 = load double, ptr %1583, align 8, !tbaa !12
  %1585 = fadd double %1582, %1584
  %1586 = getelementptr inbounds %struct.doublecomplex, ptr %70, i32 0, i32 0
  store double %1585, ptr %1586, align 8, !tbaa !12
  %1587 = load ptr, ptr %38, align 8, !tbaa !5
  %1588 = load i64, ptr %61, align 8, !tbaa !9
  %1589 = getelementptr inbounds %struct.doublecomplex, ptr %1587, i64 %1588
  %1590 = getelementptr inbounds %struct.doublecomplex, ptr %1589, i32 0, i32 1
  %1591 = load double, ptr %1590, align 8, !tbaa !15
  %1592 = getelementptr inbounds %struct.doublecomplex, ptr %71, i32 0, i32 1
  %1593 = load double, ptr %1592, align 8, !tbaa !15
  %1594 = fadd double %1591, %1593
  %1595 = getelementptr inbounds %struct.doublecomplex, ptr %70, i32 0, i32 1
  store double %1594, ptr %1595, align 8, !tbaa !15
  %1596 = getelementptr inbounds %struct.doublecomplex, ptr %70, i32 0, i32 0
  %1597 = load double, ptr %1596, align 8, !tbaa !12
  %1598 = load ptr, ptr %38, align 8, !tbaa !5
  %1599 = load i64, ptr %60, align 8, !tbaa !9
  %1600 = getelementptr inbounds %struct.doublecomplex, ptr %1598, i64 %1599
  %1601 = getelementptr inbounds %struct.doublecomplex, ptr %1600, i32 0, i32 0
  store double %1597, ptr %1601, align 8, !tbaa !12
  %1602 = getelementptr inbounds %struct.doublecomplex, ptr %70, i32 0, i32 1
  %1603 = load double, ptr %1602, align 8, !tbaa !15
  %1604 = load ptr, ptr %38, align 8, !tbaa !5
  %1605 = load i64, ptr %60, align 8, !tbaa !9
  %1606 = getelementptr inbounds %struct.doublecomplex, ptr %1604, i64 %1605
  %1607 = getelementptr inbounds %struct.doublecomplex, ptr %1606, i32 0, i32 1
  store double %1603, ptr %1607, align 8, !tbaa !15
  %1608 = load i64, ptr %76, align 8, !tbaa !9
  %1609 = load i64, ptr %74, align 8, !tbaa !9
  %1610 = load i64, ptr %49, align 8, !tbaa !9
  %1611 = mul nsw i64 %1609, %1610
  %1612 = add nsw i64 %1608, %1611
  store i64 %1612, ptr %60, align 8, !tbaa !9
  %1613 = load i64, ptr %75, align 8, !tbaa !9
  %1614 = load i64, ptr %76, align 8, !tbaa !9
  %1615 = load i64, ptr %51, align 8, !tbaa !9
  %1616 = mul nsw i64 %1614, %1615
  %1617 = add nsw i64 %1613, %1616
  store i64 %1617, ptr %61, align 8, !tbaa !9
  %1618 = load ptr, ptr %31, align 8, !tbaa !5
  %1619 = load i64, ptr %60, align 8, !tbaa !9
  %1620 = getelementptr inbounds %struct.doublecomplex, ptr %1618, i64 %1619
  %1621 = getelementptr inbounds %struct.doublecomplex, ptr %1620, i32 0, i32 0
  %1622 = load double, ptr %1621, align 8, !tbaa !12
  store double %1622, ptr %64, align 8, !tbaa !16
  %1623 = load double, ptr %64, align 8, !tbaa !16
  %1624 = fcmp oge double %1623, 0.000000e+00
  br i1 %1624, label %1625, label %1627

1625:                                             ; preds = %1528
  %1626 = load double, ptr %64, align 8, !tbaa !16
  br label %1630

1627:                                             ; preds = %1528
  %1628 = load double, ptr %64, align 8, !tbaa !16
  %1629 = fneg double %1628
  br label %1630

1630:                                             ; preds = %1627, %1625
  %1631 = phi double [ %1626, %1625 ], [ %1629, %1627 ]
  %1632 = load ptr, ptr %31, align 8, !tbaa !5
  %1633 = load i64, ptr %76, align 8, !tbaa !9
  %1634 = load i64, ptr %74, align 8, !tbaa !9
  %1635 = load i64, ptr %49, align 8, !tbaa !9
  %1636 = mul nsw i64 %1634, %1635
  %1637 = add nsw i64 %1633, %1636
  %1638 = getelementptr inbounds %struct.doublecomplex, ptr %1632, i64 %1637
  %1639 = call double @d_imag(ptr noundef %1638)
  store double %1639, ptr %65, align 8, !tbaa !16
  %1640 = load double, ptr %65, align 8, !tbaa !16
  %1641 = fcmp oge double %1640, 0.000000e+00
  br i1 %1641, label %1642, label %1644

1642:                                             ; preds = %1630
  %1643 = load double, ptr %65, align 8, !tbaa !16
  br label %1647

1644:                                             ; preds = %1630
  %1645 = load double, ptr %65, align 8, !tbaa !16
  %1646 = fneg double %1645
  br label %1647

1647:                                             ; preds = %1644, %1642
  %1648 = phi double [ %1643, %1642 ], [ %1646, %1644 ]
  %1649 = fadd double %1631, %1648
  %1650 = load ptr, ptr %33, align 8, !tbaa !5
  %1651 = load i64, ptr %61, align 8, !tbaa !9
  %1652 = getelementptr inbounds %struct.doublecomplex, ptr %1650, i64 %1651
  %1653 = getelementptr inbounds %struct.doublecomplex, ptr %1652, i32 0, i32 0
  %1654 = load double, ptr %1653, align 8, !tbaa !12
  store double %1654, ptr %66, align 8, !tbaa !16
  %1655 = load double, ptr %66, align 8, !tbaa !16
  %1656 = fcmp oge double %1655, 0.000000e+00
  br i1 %1656, label %1657, label %1659

1657:                                             ; preds = %1647
  %1658 = load double, ptr %66, align 8, !tbaa !16
  br label %1662

1659:                                             ; preds = %1647
  %1660 = load double, ptr %66, align 8, !tbaa !16
  %1661 = fneg double %1660
  br label %1662

1662:                                             ; preds = %1659, %1657
  %1663 = phi double [ %1658, %1657 ], [ %1661, %1659 ]
  %1664 = load ptr, ptr %33, align 8, !tbaa !5
  %1665 = load i64, ptr %75, align 8, !tbaa !9
  %1666 = load i64, ptr %76, align 8, !tbaa !9
  %1667 = load i64, ptr %51, align 8, !tbaa !9
  %1668 = mul nsw i64 %1666, %1667
  %1669 = add nsw i64 %1665, %1668
  %1670 = getelementptr inbounds %struct.doublecomplex, ptr %1664, i64 %1669
  %1671 = call double @d_imag(ptr noundef %1670)
  store double %1671, ptr %67, align 8, !tbaa !16
  %1672 = load double, ptr %67, align 8, !tbaa !16
  %1673 = fcmp oge double %1672, 0.000000e+00
  br i1 %1673, label %1674, label %1676

1674:                                             ; preds = %1662
  %1675 = load double, ptr %67, align 8, !tbaa !16
  br label %1679

1676:                                             ; preds = %1662
  %1677 = load double, ptr %67, align 8, !tbaa !16
  %1678 = fneg double %1677
  br label %1679

1679:                                             ; preds = %1676, %1674
  %1680 = phi double [ %1675, %1674 ], [ %1678, %1676 ]
  %1681 = fadd double %1663, %1680
  %1682 = load ptr, ptr %39, align 8, !tbaa !5
  %1683 = load i64, ptr %74, align 8, !tbaa !9
  %1684 = getelementptr inbounds double, ptr %1682, i64 %1683
  %1685 = load double, ptr %1684, align 8, !tbaa !16
  %1686 = call double @llvm.fmuladd.f64(double %1649, double %1681, double %1685)
  store double %1686, ptr %1684, align 8, !tbaa !16
  br label %1687

1687:                                             ; preds = %1679
  %1688 = load i64, ptr %74, align 8, !tbaa !9
  %1689 = add nsw i64 %1688, 1
  store i64 %1689, ptr %74, align 8, !tbaa !9
  br label %1524, !llvm.loop !33

1690:                                             ; preds = %1524
  br label %1691

1691:                                             ; preds = %1690
  %1692 = load i64, ptr %76, align 8, !tbaa !9
  %1693 = add nsw i64 %1692, 1
  store i64 %1693, ptr %76, align 8, !tbaa !9
  br label %1517, !llvm.loop !34

1694:                                             ; preds = %1517
  br label %1886

1695:                                             ; preds = %1511
  %1696 = load ptr, ptr %29, align 8, !tbaa !5
  %1697 = load i64, ptr %1696, align 8, !tbaa !9
  store i64 %1697, ptr %58, align 8, !tbaa !9
  store i64 1, ptr %76, align 8, !tbaa !9
  br label %1698

1698:                                             ; preds = %1882, %1695
  %1699 = load i64, ptr %76, align 8, !tbaa !9
  %1700 = load i64, ptr %58, align 8, !tbaa !9
  %1701 = icmp sle i64 %1699, %1700
  br i1 %1701, label %1702, label %1885

1702:                                             ; preds = %1698
  %1703 = load ptr, ptr %27, align 8, !tbaa !5
  %1704 = load i64, ptr %1703, align 8, !tbaa !9
  store i64 %1704, ptr %59, align 8, !tbaa !9
  store i64 1, ptr %74, align 8, !tbaa !9
  br label %1705

1705:                                             ; preds = %1878, %1702
  %1706 = load i64, ptr %74, align 8, !tbaa !9
  %1707 = load i64, ptr %59, align 8, !tbaa !9
  %1708 = icmp sle i64 %1706, %1707
  br i1 %1708, label %1709, label %1881

1709:                                             ; preds = %1705
  %1710 = load i64, ptr %74, align 8, !tbaa !9
  store i64 %1710, ptr %60, align 8, !tbaa !9
  %1711 = load i64, ptr %74, align 8, !tbaa !9
  store i64 %1711, ptr %61, align 8, !tbaa !9
  %1712 = load i64, ptr %76, align 8, !tbaa !9
  %1713 = load i64, ptr %74, align 8, !tbaa !9
  %1714 = load i64, ptr %49, align 8, !tbaa !9
  %1715 = mul nsw i64 %1713, %1714
  %1716 = add nsw i64 %1712, %1715
  store i64 %1716, ptr %62, align 8, !tbaa !9
  %1717 = load i64, ptr %75, align 8, !tbaa !9
  %1718 = load i64, ptr %76, align 8, !tbaa !9
  %1719 = load i64, ptr %51, align 8, !tbaa !9
  %1720 = mul nsw i64 %1718, %1719
  %1721 = add nsw i64 %1717, %1720
  store i64 %1721, ptr %63, align 8, !tbaa !9
  %1722 = load ptr, ptr %31, align 8, !tbaa !5
  %1723 = load i64, ptr %62, align 8, !tbaa !9
  %1724 = getelementptr inbounds %struct.doublecomplex, ptr %1722, i64 %1723
  %1725 = getelementptr inbounds %struct.doublecomplex, ptr %1724, i32 0, i32 0
  %1726 = load double, ptr %1725, align 8, !tbaa !12
  %1727 = load ptr, ptr %33, align 8, !tbaa !5
  %1728 = load i64, ptr %63, align 8, !tbaa !9
  %1729 = getelementptr inbounds %struct.doublecomplex, ptr %1727, i64 %1728
  %1730 = getelementptr inbounds %struct.doublecomplex, ptr %1729, i32 0, i32 0
  %1731 = load double, ptr %1730, align 8, !tbaa !12
  %1732 = load ptr, ptr %31, align 8, !tbaa !5
  %1733 = load i64, ptr %62, align 8, !tbaa !9
  %1734 = getelementptr inbounds %struct.doublecomplex, ptr %1732, i64 %1733
  %1735 = getelementptr inbounds %struct.doublecomplex, ptr %1734, i32 0, i32 1
  %1736 = load double, ptr %1735, align 8, !tbaa !15
  %1737 = load ptr, ptr %33, align 8, !tbaa !5
  %1738 = load i64, ptr %63, align 8, !tbaa !9
  %1739 = getelementptr inbounds %struct.doublecomplex, ptr %1737, i64 %1738
  %1740 = getelementptr inbounds %struct.doublecomplex, ptr %1739, i32 0, i32 1
  %1741 = load double, ptr %1740, align 8, !tbaa !15
  %1742 = fmul double %1736, %1741
  %1743 = fneg double %1742
  %1744 = call double @llvm.fmuladd.f64(double %1726, double %1731, double %1743)
  %1745 = getelementptr inbounds %struct.doublecomplex, ptr %71, i32 0, i32 0
  store double %1744, ptr %1745, align 8, !tbaa !12
  %1746 = load ptr, ptr %31, align 8, !tbaa !5
  %1747 = load i64, ptr %62, align 8, !tbaa !9
  %1748 = getelementptr inbounds %struct.doublecomplex, ptr %1746, i64 %1747
  %1749 = getelementptr inbounds %struct.doublecomplex, ptr %1748, i32 0, i32 0
  %1750 = load double, ptr %1749, align 8, !tbaa !12
  %1751 = load ptr, ptr %33, align 8, !tbaa !5
  %1752 = load i64, ptr %63, align 8, !tbaa !9
  %1753 = getelementptr inbounds %struct.doublecomplex, ptr %1751, i64 %1752
  %1754 = getelementptr inbounds %struct.doublecomplex, ptr %1753, i32 0, i32 1
  %1755 = load double, ptr %1754, align 8, !tbaa !15
  %1756 = load ptr, ptr %31, align 8, !tbaa !5
  %1757 = load i64, ptr %62, align 8, !tbaa !9
  %1758 = getelementptr inbounds %struct.doublecomplex, ptr %1756, i64 %1757
  %1759 = getelementptr inbounds %struct.doublecomplex, ptr %1758, i32 0, i32 1
  %1760 = load double, ptr %1759, align 8, !tbaa !15
  %1761 = load ptr, ptr %33, align 8, !tbaa !5
  %1762 = load i64, ptr %63, align 8, !tbaa !9
  %1763 = getelementptr inbounds %struct.doublecomplex, ptr %1761, i64 %1762
  %1764 = getelementptr inbounds %struct.doublecomplex, ptr %1763, i32 0, i32 0
  %1765 = load double, ptr %1764, align 8, !tbaa !12
  %1766 = fmul double %1760, %1765
  %1767 = call double @llvm.fmuladd.f64(double %1750, double %1755, double %1766)
  %1768 = getelementptr inbounds %struct.doublecomplex, ptr %71, i32 0, i32 1
  store double %1767, ptr %1768, align 8, !tbaa !15
  %1769 = load ptr, ptr %38, align 8, !tbaa !5
  %1770 = load i64, ptr %61, align 8, !tbaa !9
  %1771 = getelementptr inbounds %struct.doublecomplex, ptr %1769, i64 %1770
  %1772 = getelementptr inbounds %struct.doublecomplex, ptr %1771, i32 0, i32 0
  %1773 = load double, ptr %1772, align 8, !tbaa !12
  %1774 = getelementptr inbounds %struct.doublecomplex, ptr %71, i32 0, i32 0
  %1775 = load double, ptr %1774, align 8, !tbaa !12
  %1776 = fadd double %1773, %1775
  %1777 = getelementptr inbounds %struct.doublecomplex, ptr %70, i32 0, i32 0
  store double %1776, ptr %1777, align 8, !tbaa !12
  %1778 = load ptr, ptr %38, align 8, !tbaa !5
  %1779 = load i64, ptr %61, align 8, !tbaa !9
  %1780 = getelementptr inbounds %struct.doublecomplex, ptr %1778, i64 %1779
  %1781 = getelementptr inbounds %struct.doublecomplex, ptr %1780, i32 0, i32 1
  %1782 = load double, ptr %1781, align 8, !tbaa !15
  %1783 = getelementptr inbounds %struct.doublecomplex, ptr %71, i32 0, i32 1
  %1784 = load double, ptr %1783, align 8, !tbaa !15
  %1785 = fadd double %1782, %1784
  %1786 = getelementptr inbounds %struct.doublecomplex, ptr %70, i32 0, i32 1
  store double %1785, ptr %1786, align 8, !tbaa !15
  %1787 = getelementptr inbounds %struct.doublecomplex, ptr %70, i32 0, i32 0
  %1788 = load double, ptr %1787, align 8, !tbaa !12
  %1789 = load ptr, ptr %38, align 8, !tbaa !5
  %1790 = load i64, ptr %60, align 8, !tbaa !9
  %1791 = getelementptr inbounds %struct.doublecomplex, ptr %1789, i64 %1790
  %1792 = getelementptr inbounds %struct.doublecomplex, ptr %1791, i32 0, i32 0
  store double %1788, ptr %1792, align 8, !tbaa !12
  %1793 = getelementptr inbounds %struct.doublecomplex, ptr %70, i32 0, i32 1
  %1794 = load double, ptr %1793, align 8, !tbaa !15
  %1795 = load ptr, ptr %38, align 8, !tbaa !5
  %1796 = load i64, ptr %60, align 8, !tbaa !9
  %1797 = getelementptr inbounds %struct.doublecomplex, ptr %1795, i64 %1796
  %1798 = getelementptr inbounds %struct.doublecomplex, ptr %1797, i32 0, i32 1
  store double %1794, ptr %1798, align 8, !tbaa !15
  %1799 = load i64, ptr %76, align 8, !tbaa !9
  %1800 = load i64, ptr %74, align 8, !tbaa !9
  %1801 = load i64, ptr %49, align 8, !tbaa !9
  %1802 = mul nsw i64 %1800, %1801
  %1803 = add nsw i64 %1799, %1802
  store i64 %1803, ptr %60, align 8, !tbaa !9
  %1804 = load i64, ptr %75, align 8, !tbaa !9
  %1805 = load i64, ptr %76, align 8, !tbaa !9
  %1806 = load i64, ptr %51, align 8, !tbaa !9
  %1807 = mul nsw i64 %1805, %1806
  %1808 = add nsw i64 %1804, %1807
  store i64 %1808, ptr %61, align 8, !tbaa !9
  %1809 = load ptr, ptr %31, align 8, !tbaa !5
  %1810 = load i64, ptr %60, align 8, !tbaa !9
  %1811 = getelementptr inbounds %struct.doublecomplex, ptr %1809, i64 %1810
  %1812 = getelementptr inbounds %struct.doublecomplex, ptr %1811, i32 0, i32 0
  %1813 = load double, ptr %1812, align 8, !tbaa !12
  store double %1813, ptr %64, align 8, !tbaa !16
  %1814 = load double, ptr %64, align 8, !tbaa !16
  %1815 = fcmp oge double %1814, 0.000000e+00
  br i1 %1815, label %1816, label %1818

1816:                                             ; preds = %1709
  %1817 = load double, ptr %64, align 8, !tbaa !16
  br label %1821

1818:                                             ; preds = %1709
  %1819 = load double, ptr %64, align 8, !tbaa !16
  %1820 = fneg double %1819
  br label %1821

1821:                                             ; preds = %1818, %1816
  %1822 = phi double [ %1817, %1816 ], [ %1820, %1818 ]
  %1823 = load ptr, ptr %31, align 8, !tbaa !5
  %1824 = load i64, ptr %76, align 8, !tbaa !9
  %1825 = load i64, ptr %74, align 8, !tbaa !9
  %1826 = load i64, ptr %49, align 8, !tbaa !9
  %1827 = mul nsw i64 %1825, %1826
  %1828 = add nsw i64 %1824, %1827
  %1829 = getelementptr inbounds %struct.doublecomplex, ptr %1823, i64 %1828
  %1830 = call double @d_imag(ptr noundef %1829)
  store double %1830, ptr %65, align 8, !tbaa !16
  %1831 = load double, ptr %65, align 8, !tbaa !16
  %1832 = fcmp oge double %1831, 0.000000e+00
  br i1 %1832, label %1833, label %1835

1833:                                             ; preds = %1821
  %1834 = load double, ptr %65, align 8, !tbaa !16
  br label %1838

1835:                                             ; preds = %1821
  %1836 = load double, ptr %65, align 8, !tbaa !16
  %1837 = fneg double %1836
  br label %1838

1838:                                             ; preds = %1835, %1833
  %1839 = phi double [ %1834, %1833 ], [ %1837, %1835 ]
  %1840 = fadd double %1822, %1839
  %1841 = load ptr, ptr %33, align 8, !tbaa !5
  %1842 = load i64, ptr %61, align 8, !tbaa !9
  %1843 = getelementptr inbounds %struct.doublecomplex, ptr %1841, i64 %1842
  %1844 = getelementptr inbounds %struct.doublecomplex, ptr %1843, i32 0, i32 0
  %1845 = load double, ptr %1844, align 8, !tbaa !12
  store double %1845, ptr %66, align 8, !tbaa !16
  %1846 = load double, ptr %66, align 8, !tbaa !16
  %1847 = fcmp oge double %1846, 0.000000e+00
  br i1 %1847, label %1848, label %1850

1848:                                             ; preds = %1838
  %1849 = load double, ptr %66, align 8, !tbaa !16
  br label %1853

1850:                                             ; preds = %1838
  %1851 = load double, ptr %66, align 8, !tbaa !16
  %1852 = fneg double %1851
  br label %1853

1853:                                             ; preds = %1850, %1848
  %1854 = phi double [ %1849, %1848 ], [ %1852, %1850 ]
  %1855 = load ptr, ptr %33, align 8, !tbaa !5
  %1856 = load i64, ptr %75, align 8, !tbaa !9
  %1857 = load i64, ptr %76, align 8, !tbaa !9
  %1858 = load i64, ptr %51, align 8, !tbaa !9
  %1859 = mul nsw i64 %1857, %1858
  %1860 = add nsw i64 %1856, %1859
  %1861 = getelementptr inbounds %struct.doublecomplex, ptr %1855, i64 %1860
  %1862 = call double @d_imag(ptr noundef %1861)
  store double %1862, ptr %67, align 8, !tbaa !16
  %1863 = load double, ptr %67, align 8, !tbaa !16
  %1864 = fcmp oge double %1863, 0.000000e+00
  br i1 %1864, label %1865, label %1867

1865:                                             ; preds = %1853
  %1866 = load double, ptr %67, align 8, !tbaa !16
  br label %1870

1867:                                             ; preds = %1853
  %1868 = load double, ptr %67, align 8, !tbaa !16
  %1869 = fneg double %1868
  br label %1870

1870:                                             ; preds = %1867, %1865
  %1871 = phi double [ %1866, %1865 ], [ %1869, %1867 ]
  %1872 = fadd double %1854, %1871
  %1873 = load ptr, ptr %39, align 8, !tbaa !5
  %1874 = load i64, ptr %74, align 8, !tbaa !9
  %1875 = getelementptr inbounds double, ptr %1873, i64 %1874
  %1876 = load double, ptr %1875, align 8, !tbaa !16
  %1877 = call double @llvm.fmuladd.f64(double %1840, double %1872, double %1876)
  store double %1877, ptr %1875, align 8, !tbaa !16
  br label %1878

1878:                                             ; preds = %1870
  %1879 = load i64, ptr %74, align 8, !tbaa !9
  %1880 = add nsw i64 %1879, 1
  store i64 %1880, ptr %74, align 8, !tbaa !9
  br label %1705, !llvm.loop !35

1881:                                             ; preds = %1705
  br label %1882

1882:                                             ; preds = %1881
  %1883 = load i64, ptr %76, align 8, !tbaa !9
  %1884 = add nsw i64 %1883, 1
  store i64 %1884, ptr %76, align 8, !tbaa !9
  br label %1698, !llvm.loop !36

1885:                                             ; preds = %1698
  br label %1886

1886:                                             ; preds = %1885, %1694
  br label %1887

1887:                                             ; preds = %1886, %1510
  br label %1888

1888:                                             ; preds = %1887, %1149, %1146
  br label %1889

1889:                                             ; preds = %1888, %1145
  br label %1890

1890:                                             ; preds = %1889, %763
  br label %1891

1891:                                             ; preds = %1890, %381
  %1892 = load ptr, ptr %27, align 8, !tbaa !5
  %1893 = load i64, ptr %1892, align 8, !tbaa !9
  store i64 %1893, ptr %58, align 8, !tbaa !9
  store i64 1, ptr %74, align 8, !tbaa !9
  br label %1894

1894:                                             ; preds = %2102, %1891
  %1895 = load i64, ptr %74, align 8, !tbaa !9
  %1896 = load i64, ptr %58, align 8, !tbaa !9
  %1897 = icmp sle i64 %1895, %1896
  br i1 %1897, label %1898, label %2105

1898:                                             ; preds = %1894
  %1899 = load i64, ptr %74, align 8, !tbaa !9
  store i64 %1899, ptr %59, align 8, !tbaa !9
  %1900 = load i64, ptr %74, align 8, !tbaa !9
  store i64 %1900, ptr %60, align 8, !tbaa !9
  %1901 = load ptr, ptr %30, align 8, !tbaa !5
  %1902 = getelementptr inbounds %struct.doublecomplex, ptr %1901, i32 0, i32 0
  %1903 = load double, ptr %1902, align 8, !tbaa !12
  %1904 = load ptr, ptr %38, align 8, !tbaa !5
  %1905 = load i64, ptr %60, align 8, !tbaa !9
  %1906 = getelementptr inbounds %struct.doublecomplex, ptr %1904, i64 %1905
  %1907 = getelementptr inbounds %struct.doublecomplex, ptr %1906, i32 0, i32 0
  %1908 = load double, ptr %1907, align 8, !tbaa !12
  %1909 = load ptr, ptr %30, align 8, !tbaa !5
  %1910 = getelementptr inbounds %struct.doublecomplex, ptr %1909, i32 0, i32 1
  %1911 = load double, ptr %1910, align 8, !tbaa !15
  %1912 = load ptr, ptr %38, align 8, !tbaa !5
  %1913 = load i64, ptr %60, align 8, !tbaa !9
  %1914 = getelementptr inbounds %struct.doublecomplex, ptr %1912, i64 %1913
  %1915 = getelementptr inbounds %struct.doublecomplex, ptr %1914, i32 0, i32 1
  %1916 = load double, ptr %1915, align 8, !tbaa !15
  %1917 = fmul double %1911, %1916
  %1918 = fneg double %1917
  %1919 = call double @llvm.fmuladd.f64(double %1903, double %1908, double %1918)
  %1920 = getelementptr inbounds %struct.doublecomplex, ptr %71, i32 0, i32 0
  store double %1919, ptr %1920, align 8, !tbaa !12
  %1921 = load ptr, ptr %30, align 8, !tbaa !5
  %1922 = getelementptr inbounds %struct.doublecomplex, ptr %1921, i32 0, i32 0
  %1923 = load double, ptr %1922, align 8, !tbaa !12
  %1924 = load ptr, ptr %38, align 8, !tbaa !5
  %1925 = load i64, ptr %60, align 8, !tbaa !9
  %1926 = getelementptr inbounds %struct.doublecomplex, ptr %1924, i64 %1925
  %1927 = getelementptr inbounds %struct.doublecomplex, ptr %1926, i32 0, i32 1
  %1928 = load double, ptr %1927, align 8, !tbaa !15
  %1929 = load ptr, ptr %30, align 8, !tbaa !5
  %1930 = getelementptr inbounds %struct.doublecomplex, ptr %1929, i32 0, i32 1
  %1931 = load double, ptr %1930, align 8, !tbaa !15
  %1932 = load ptr, ptr %38, align 8, !tbaa !5
  %1933 = load i64, ptr %60, align 8, !tbaa !9
  %1934 = getelementptr inbounds %struct.doublecomplex, ptr %1932, i64 %1933
  %1935 = getelementptr inbounds %struct.doublecomplex, ptr %1934, i32 0, i32 0
  %1936 = load double, ptr %1935, align 8, !tbaa !12
  %1937 = fmul double %1931, %1936
  %1938 = call double @llvm.fmuladd.f64(double %1923, double %1928, double %1937)
  %1939 = getelementptr inbounds %struct.doublecomplex, ptr %71, i32 0, i32 1
  store double %1938, ptr %1939, align 8, !tbaa !15
  %1940 = load i64, ptr %74, align 8, !tbaa !9
  %1941 = load i64, ptr %75, align 8, !tbaa !9
  %1942 = load i64, ptr %53, align 8, !tbaa !9
  %1943 = mul nsw i64 %1941, %1942
  %1944 = add nsw i64 %1940, %1943
  store i64 %1944, ptr %61, align 8, !tbaa !9
  %1945 = load ptr, ptr %35, align 8, !tbaa !5
  %1946 = getelementptr inbounds %struct.doublecomplex, ptr %1945, i32 0, i32 0
  %1947 = load double, ptr %1946, align 8, !tbaa !12
  %1948 = load ptr, ptr %36, align 8, !tbaa !5
  %1949 = load i64, ptr %61, align 8, !tbaa !9
  %1950 = getelementptr inbounds %struct.doublecomplex, ptr %1948, i64 %1949
  %1951 = getelementptr inbounds %struct.doublecomplex, ptr %1950, i32 0, i32 0
  %1952 = load double, ptr %1951, align 8, !tbaa !12
  %1953 = load ptr, ptr %35, align 8, !tbaa !5
  %1954 = getelementptr inbounds %struct.doublecomplex, ptr %1953, i32 0, i32 1
  %1955 = load double, ptr %1954, align 8, !tbaa !15
  %1956 = load ptr, ptr %36, align 8, !tbaa !5
  %1957 = load i64, ptr %61, align 8, !tbaa !9
  %1958 = getelementptr inbounds %struct.doublecomplex, ptr %1956, i64 %1957
  %1959 = getelementptr inbounds %struct.doublecomplex, ptr %1958, i32 0, i32 1
  %1960 = load double, ptr %1959, align 8, !tbaa !15
  %1961 = fmul double %1955, %1960
  %1962 = fneg double %1961
  %1963 = call double @llvm.fmuladd.f64(double %1947, double %1952, double %1962)
  %1964 = getelementptr inbounds %struct.doublecomplex, ptr %72, i32 0, i32 0
  store double %1963, ptr %1964, align 8, !tbaa !12
  %1965 = load ptr, ptr %35, align 8, !tbaa !5
  %1966 = getelementptr inbounds %struct.doublecomplex, ptr %1965, i32 0, i32 0
  %1967 = load double, ptr %1966, align 8, !tbaa !12
  %1968 = load ptr, ptr %36, align 8, !tbaa !5
  %1969 = load i64, ptr %61, align 8, !tbaa !9
  %1970 = getelementptr inbounds %struct.doublecomplex, ptr %1968, i64 %1969
  %1971 = getelementptr inbounds %struct.doublecomplex, ptr %1970, i32 0, i32 1
  %1972 = load double, ptr %1971, align 8, !tbaa !15
  %1973 = load ptr, ptr %35, align 8, !tbaa !5
  %1974 = getelementptr inbounds %struct.doublecomplex, ptr %1973, i32 0, i32 1
  %1975 = load double, ptr %1974, align 8, !tbaa !15
  %1976 = load ptr, ptr %36, align 8, !tbaa !5
  %1977 = load i64, ptr %61, align 8, !tbaa !9
  %1978 = getelementptr inbounds %struct.doublecomplex, ptr %1976, i64 %1977
  %1979 = getelementptr inbounds %struct.doublecomplex, ptr %1978, i32 0, i32 0
  %1980 = load double, ptr %1979, align 8, !tbaa !12
  %1981 = fmul double %1975, %1980
  %1982 = call double @llvm.fmuladd.f64(double %1967, double %1972, double %1981)
  %1983 = getelementptr inbounds %struct.doublecomplex, ptr %72, i32 0, i32 1
  store double %1982, ptr %1983, align 8, !tbaa !15
  %1984 = getelementptr inbounds %struct.doublecomplex, ptr %71, i32 0, i32 0
  %1985 = load double, ptr %1984, align 8, !tbaa !12
  %1986 = getelementptr inbounds %struct.doublecomplex, ptr %72, i32 0, i32 0
  %1987 = load double, ptr %1986, align 8, !tbaa !12
  %1988 = fadd double %1985, %1987
  %1989 = getelementptr inbounds %struct.doublecomplex, ptr %70, i32 0, i32 0
  store double %1988, ptr %1989, align 8, !tbaa !12
  %1990 = getelementptr inbounds %struct.doublecomplex, ptr %71, i32 0, i32 1
  %1991 = load double, ptr %1990, align 8, !tbaa !15
  %1992 = getelementptr inbounds %struct.doublecomplex, ptr %72, i32 0, i32 1
  %1993 = load double, ptr %1992, align 8, !tbaa !15
  %1994 = fadd double %1991, %1993
  %1995 = getelementptr inbounds %struct.doublecomplex, ptr %70, i32 0, i32 1
  store double %1994, ptr %1995, align 8, !tbaa !15
  %1996 = getelementptr inbounds %struct.doublecomplex, ptr %70, i32 0, i32 0
  %1997 = load double, ptr %1996, align 8, !tbaa !12
  %1998 = load ptr, ptr %38, align 8, !tbaa !5
  %1999 = load i64, ptr %59, align 8, !tbaa !9
  %2000 = getelementptr inbounds %struct.doublecomplex, ptr %1998, i64 %1999
  %2001 = getelementptr inbounds %struct.doublecomplex, ptr %2000, i32 0, i32 0
  store double %1997, ptr %2001, align 8, !tbaa !12
  %2002 = getelementptr inbounds %struct.doublecomplex, ptr %70, i32 0, i32 1
  %2003 = load double, ptr %2002, align 8, !tbaa !15
  %2004 = load ptr, ptr %38, align 8, !tbaa !5
  %2005 = load i64, ptr %59, align 8, !tbaa !9
  %2006 = getelementptr inbounds %struct.doublecomplex, ptr %2004, i64 %2005
  %2007 = getelementptr inbounds %struct.doublecomplex, ptr %2006, i32 0, i32 1
  store double %2003, ptr %2007, align 8, !tbaa !15
  %2008 = load i64, ptr %74, align 8, !tbaa !9
  %2009 = load i64, ptr %75, align 8, !tbaa !9
  %2010 = load i64, ptr %53, align 8, !tbaa !9
  %2011 = mul nsw i64 %2009, %2010
  %2012 = add nsw i64 %2008, %2011
  store i64 %2012, ptr %59, align 8, !tbaa !9
  %2013 = load ptr, ptr %30, align 8, !tbaa !5
  %2014 = getelementptr inbounds %struct.doublecomplex, ptr %2013, i32 0, i32 0
  %2015 = load double, ptr %2014, align 8, !tbaa !12
  store double %2015, ptr %64, align 8, !tbaa !16
  %2016 = load double, ptr %64, align 8, !tbaa !16
  %2017 = fcmp oge double %2016, 0.000000e+00
  br i1 %2017, label %2018, label %2020

2018:                                             ; preds = %1898
  %2019 = load double, ptr %64, align 8, !tbaa !16
  br label %2023

2020:                                             ; preds = %1898
  %2021 = load double, ptr %64, align 8, !tbaa !16
  %2022 = fneg double %2021
  br label %2023

2023:                                             ; preds = %2020, %2018
  %2024 = phi double [ %2019, %2018 ], [ %2022, %2020 ]
  %2025 = load ptr, ptr %30, align 8, !tbaa !5
  %2026 = call double @d_imag(ptr noundef %2025)
  store double %2026, ptr %65, align 8, !tbaa !16
  %2027 = load double, ptr %65, align 8, !tbaa !16
  %2028 = fcmp oge double %2027, 0.000000e+00
  br i1 %2028, label %2029, label %2031

2029:                                             ; preds = %2023
  %2030 = load double, ptr %65, align 8, !tbaa !16
  br label %2034

2031:                                             ; preds = %2023
  %2032 = load double, ptr %65, align 8, !tbaa !16
  %2033 = fneg double %2032
  br label %2034

2034:                                             ; preds = %2031, %2029
  %2035 = phi double [ %2030, %2029 ], [ %2033, %2031 ]
  %2036 = fadd double %2024, %2035
  %2037 = load ptr, ptr %39, align 8, !tbaa !5
  %2038 = load i64, ptr %74, align 8, !tbaa !9
  %2039 = getelementptr inbounds double, ptr %2037, i64 %2038
  %2040 = load double, ptr %2039, align 8, !tbaa !16
  %2041 = load ptr, ptr %35, align 8, !tbaa !5
  %2042 = getelementptr inbounds %struct.doublecomplex, ptr %2041, i32 0, i32 0
  %2043 = load double, ptr %2042, align 8, !tbaa !12
  store double %2043, ptr %66, align 8, !tbaa !16
  %2044 = load double, ptr %66, align 8, !tbaa !16
  %2045 = fcmp oge double %2044, 0.000000e+00
  br i1 %2045, label %2046, label %2048

2046:                                             ; preds = %2034
  %2047 = load double, ptr %66, align 8, !tbaa !16
  br label %2051

2048:                                             ; preds = %2034
  %2049 = load double, ptr %66, align 8, !tbaa !16
  %2050 = fneg double %2049
  br label %2051

2051:                                             ; preds = %2048, %2046
  %2052 = phi double [ %2047, %2046 ], [ %2050, %2048 ]
  %2053 = load ptr, ptr %35, align 8, !tbaa !5
  %2054 = call double @d_imag(ptr noundef %2053)
  store double %2054, ptr %67, align 8, !tbaa !16
  %2055 = load double, ptr %67, align 8, !tbaa !16
  %2056 = fcmp oge double %2055, 0.000000e+00
  br i1 %2056, label %2057, label %2059

2057:                                             ; preds = %2051
  %2058 = load double, ptr %67, align 8, !tbaa !16
  br label %2062

2059:                                             ; preds = %2051
  %2060 = load double, ptr %67, align 8, !tbaa !16
  %2061 = fneg double %2060
  br label %2062

2062:                                             ; preds = %2059, %2057
  %2063 = phi double [ %2058, %2057 ], [ %2061, %2059 ]
  %2064 = fadd double %2052, %2063
  %2065 = load ptr, ptr %36, align 8, !tbaa !5
  %2066 = load i64, ptr %59, align 8, !tbaa !9
  %2067 = getelementptr inbounds %struct.doublecomplex, ptr %2065, i64 %2066
  %2068 = getelementptr inbounds %struct.doublecomplex, ptr %2067, i32 0, i32 0
  %2069 = load double, ptr %2068, align 8, !tbaa !12
  store double %2069, ptr %68, align 8, !tbaa !16
  %2070 = load double, ptr %68, align 8, !tbaa !16
  %2071 = fcmp oge double %2070, 0.000000e+00
  br i1 %2071, label %2072, label %2074

2072:                                             ; preds = %2062
  %2073 = load double, ptr %68, align 8, !tbaa !16
  br label %2077

2074:                                             ; preds = %2062
  %2075 = load double, ptr %68, align 8, !tbaa !16
  %2076 = fneg double %2075
  br label %2077

2077:                                             ; preds = %2074, %2072
  %2078 = phi double [ %2073, %2072 ], [ %2076, %2074 ]
  %2079 = load ptr, ptr %36, align 8, !tbaa !5
  %2080 = load i64, ptr %74, align 8, !tbaa !9
  %2081 = load i64, ptr %75, align 8, !tbaa !9
  %2082 = load i64, ptr %53, align 8, !tbaa !9
  %2083 = mul nsw i64 %2081, %2082
  %2084 = add nsw i64 %2080, %2083
  %2085 = getelementptr inbounds %struct.doublecomplex, ptr %2079, i64 %2084
  %2086 = call double @d_imag(ptr noundef %2085)
  store double %2086, ptr %69, align 8, !tbaa !16
  %2087 = load double, ptr %69, align 8, !tbaa !16
  %2088 = fcmp oge double %2087, 0.000000e+00
  br i1 %2088, label %2089, label %2091

2089:                                             ; preds = %2077
  %2090 = load double, ptr %69, align 8, !tbaa !16
  br label %2094

2091:                                             ; preds = %2077
  %2092 = load double, ptr %69, align 8, !tbaa !16
  %2093 = fneg double %2092
  br label %2094

2094:                                             ; preds = %2091, %2089
  %2095 = phi double [ %2090, %2089 ], [ %2093, %2091 ]
  %2096 = fadd double %2078, %2095
  %2097 = fmul double %2064, %2096
  %2098 = call double @llvm.fmuladd.f64(double %2036, double %2040, double %2097)
  %2099 = load ptr, ptr %39, align 8, !tbaa !5
  %2100 = load i64, ptr %74, align 8, !tbaa !9
  %2101 = getelementptr inbounds double, ptr %2099, i64 %2100
  store double %2098, ptr %2101, align 8, !tbaa !16
  br label %2102

2102:                                             ; preds = %2094
  %2103 = load i64, ptr %74, align 8, !tbaa !9
  %2104 = add nsw i64 %2103, 1
  store i64 %2104, ptr %74, align 8, !tbaa !9
  br label %1894, !llvm.loop !37

2105:                                             ; preds = %1894
  %2106 = load ptr, ptr %43, align 8, !tbaa !5
  store double 0.000000e+00, ptr %2106, align 8, !tbaa !16
  %2107 = load ptr, ptr %27, align 8, !tbaa !5
  %2108 = load i64, ptr %2107, align 8, !tbaa !9
  store i64 %2108, ptr %58, align 8, !tbaa !9
  store i64 1, ptr %74, align 8, !tbaa !9
  br label %2109

2109:                                             ; preds = %2209, %2105
  %2110 = load i64, ptr %74, align 8, !tbaa !9
  %2111 = load i64, ptr %58, align 8, !tbaa !9
  %2112 = icmp sle i64 %2110, %2111
  br i1 %2112, label %2113, label %2212

2113:                                             ; preds = %2109
  %2114 = load i64, ptr %74, align 8, !tbaa !9
  store i64 %2114, ptr %59, align 8, !tbaa !9
  %2115 = load i64, ptr %74, align 8, !tbaa !9
  %2116 = load i64, ptr %75, align 8, !tbaa !9
  %2117 = load i64, ptr %55, align 8, !tbaa !9
  %2118 = mul nsw i64 %2116, %2117
  %2119 = add nsw i64 %2115, %2118
  store i64 %2119, ptr %60, align 8, !tbaa !9
  %2120 = load ptr, ptr %38, align 8, !tbaa !5
  %2121 = load i64, ptr %59, align 8, !tbaa !9
  %2122 = getelementptr inbounds %struct.doublecomplex, ptr %2120, i64 %2121
  %2123 = getelementptr inbounds %struct.doublecomplex, ptr %2122, i32 0, i32 0
  %2124 = load double, ptr %2123, align 8, !tbaa !12
  %2125 = load ptr, ptr %40, align 8, !tbaa !5
  %2126 = load i64, ptr %60, align 8, !tbaa !9
  %2127 = getelementptr inbounds %struct.doublecomplex, ptr %2125, i64 %2126
  %2128 = getelementptr inbounds %struct.doublecomplex, ptr %2127, i32 0, i32 0
  %2129 = load double, ptr %2128, align 8, !tbaa !12
  %2130 = fsub double %2124, %2129
  %2131 = getelementptr inbounds %struct.doublecomplex, ptr %71, i32 0, i32 0
  store double %2130, ptr %2131, align 8, !tbaa !12
  %2132 = load ptr, ptr %38, align 8, !tbaa !5
  %2133 = load i64, ptr %59, align 8, !tbaa !9
  %2134 = getelementptr inbounds %struct.doublecomplex, ptr %2132, i64 %2133
  %2135 = getelementptr inbounds %struct.doublecomplex, ptr %2134, i32 0, i32 1
  %2136 = load double, ptr %2135, align 8, !tbaa !15
  %2137 = load ptr, ptr %40, align 8, !tbaa !5
  %2138 = load i64, ptr %60, align 8, !tbaa !9
  %2139 = getelementptr inbounds %struct.doublecomplex, ptr %2137, i64 %2138
  %2140 = getelementptr inbounds %struct.doublecomplex, ptr %2139, i32 0, i32 1
  %2141 = load double, ptr %2140, align 8, !tbaa !15
  %2142 = fsub double %2136, %2141
  %2143 = getelementptr inbounds %struct.doublecomplex, ptr %71, i32 0, i32 1
  store double %2142, ptr %2143, align 8, !tbaa !15
  %2144 = getelementptr inbounds %struct.doublecomplex, ptr %71, i32 0, i32 0
  %2145 = load double, ptr %2144, align 8, !tbaa !12
  %2146 = getelementptr inbounds %struct.doublecomplex, ptr %70, i32 0, i32 0
  store double %2145, ptr %2146, align 8, !tbaa !12
  %2147 = getelementptr inbounds %struct.doublecomplex, ptr %71, i32 0, i32 1
  %2148 = load double, ptr %2147, align 8, !tbaa !15
  %2149 = getelementptr inbounds %struct.doublecomplex, ptr %70, i32 0, i32 1
  store double %2148, ptr %2149, align 8, !tbaa !15
  %2150 = getelementptr inbounds %struct.doublecomplex, ptr %70, i32 0, i32 0
  %2151 = load double, ptr %2150, align 8, !tbaa !12
  store double %2151, ptr %64, align 8, !tbaa !16
  %2152 = load double, ptr %64, align 8, !tbaa !16
  %2153 = fcmp oge double %2152, 0.000000e+00
  br i1 %2153, label %2154, label %2156

2154:                                             ; preds = %2113
  %2155 = load double, ptr %64, align 8, !tbaa !16
  br label %2159

2156:                                             ; preds = %2113
  %2157 = load double, ptr %64, align 8, !tbaa !16
  %2158 = fneg double %2157
  br label %2159

2159:                                             ; preds = %2156, %2154
  %2160 = phi double [ %2155, %2154 ], [ %2158, %2156 ]
  %2161 = call double @d_imag(ptr noundef %70)
  store double %2161, ptr %65, align 8, !tbaa !16
  %2162 = load double, ptr %65, align 8, !tbaa !16
  %2163 = fcmp oge double %2162, 0.000000e+00
  br i1 %2163, label %2164, label %2166

2164:                                             ; preds = %2159
  %2165 = load double, ptr %65, align 8, !tbaa !16
  br label %2169

2166:                                             ; preds = %2159
  %2167 = load double, ptr %65, align 8, !tbaa !16
  %2168 = fneg double %2167
  br label %2169

2169:                                             ; preds = %2166, %2164
  %2170 = phi double [ %2165, %2164 ], [ %2168, %2166 ]
  %2171 = fadd double %2160, %2170
  %2172 = load ptr, ptr %42, align 8, !tbaa !5
  %2173 = load double, ptr %2172, align 8, !tbaa !16
  %2174 = fdiv double %2171, %2173
  store double %2174, ptr %77, align 8, !tbaa !16
  %2175 = load ptr, ptr %39, align 8, !tbaa !5
  %2176 = load i64, ptr %74, align 8, !tbaa !9
  %2177 = getelementptr inbounds double, ptr %2175, i64 %2176
  %2178 = load double, ptr %2177, align 8, !tbaa !16
  %2179 = fcmp une double %2178, 0.000000e+00
  br i1 %2179, label %2180, label %2187

2180:                                             ; preds = %2169
  %2181 = load ptr, ptr %39, align 8, !tbaa !5
  %2182 = load i64, ptr %74, align 8, !tbaa !9
  %2183 = getelementptr inbounds double, ptr %2181, i64 %2182
  %2184 = load double, ptr %2183, align 8, !tbaa !16
  %2185 = load double, ptr %77, align 8, !tbaa !16
  %2186 = fdiv double %2185, %2184
  store double %2186, ptr %77, align 8, !tbaa !16
  br label %2187

2187:                                             ; preds = %2180, %2169
  %2188 = load ptr, ptr %43, align 8, !tbaa !5
  %2189 = load double, ptr %2188, align 8, !tbaa !16
  %2190 = load double, ptr %77, align 8, !tbaa !16
  %2191 = fcmp oge double %2189, %2190
  br i1 %2191, label %2192, label %2195

2192:                                             ; preds = %2187
  %2193 = load ptr, ptr %43, align 8, !tbaa !5
  %2194 = load double, ptr %2193, align 8, !tbaa !16
  br label %2197

2195:                                             ; preds = %2187
  %2196 = load double, ptr %77, align 8, !tbaa !16
  br label %2197

2197:                                             ; preds = %2195, %2192
  %2198 = phi double [ %2194, %2192 ], [ %2196, %2195 ]
  %2199 = load ptr, ptr %43, align 8, !tbaa !5
  store double %2198, ptr %2199, align 8, !tbaa !16
  %2200 = load ptr, ptr %43, align 8, !tbaa !5
  %2201 = load double, ptr %2200, align 8, !tbaa !16
  %2202 = load ptr, ptr %42, align 8, !tbaa !5
  %2203 = load double, ptr %2202, align 8, !tbaa !16
  %2204 = call double @sqrt(double noundef %2203) #5
  %2205 = fmul double %2201, %2204
  %2206 = fcmp oge double %2205, 1.000000e+00
  br i1 %2206, label %2207, label %2208

2207:                                             ; preds = %2197
  br label %2217

2208:                                             ; preds = %2197
  br label %2209

2209:                                             ; preds = %2208
  %2210 = load i64, ptr %74, align 8, !tbaa !9
  %2211 = add nsw i64 %2210, 1
  store i64 %2211, ptr %74, align 8, !tbaa !9
  br label %2109, !llvm.loop !38

2212:                                             ; preds = %2109
  br label %2213

2213:                                             ; preds = %2212
  %2214 = load i64, ptr %75, align 8, !tbaa !9
  %2215 = add nsw i64 %2214, 1
  store i64 %2215, ptr %75, align 8, !tbaa !9
  br label %158, !llvm.loop !39

2216:                                             ; preds = %158
  br label %2284

2217:                                             ; preds = %2207
  %2218 = load ptr, ptr %44, align 8, !tbaa !5
  store i64 1, ptr %2218, align 8, !tbaa !9
  %2219 = load ptr, ptr %45, align 8, !tbaa !5
  %2220 = load i64, ptr %2219, align 8, !tbaa !9
  store i64 %2220, ptr getelementptr inbounds (%struct.cilist, ptr @zmmch_.io___382, i32 0, i32 1), align 8, !tbaa !40
  %2221 = call i64 @s_wsfe(ptr noundef @zmmch_.io___382)
  %2222 = call i64 @e_wsfe()
  %2223 = load ptr, ptr %27, align 8, !tbaa !5
  %2224 = load i64, ptr %2223, align 8, !tbaa !9
  store i64 %2224, ptr %57, align 8, !tbaa !9
  store i64 1, ptr %74, align 8, !tbaa !9
  br label %2225

2225:                                             ; preds = %2270, %2217
  %2226 = load i64, ptr %74, align 8, !tbaa !9
  %2227 = load i64, ptr %57, align 8, !tbaa !9
  %2228 = icmp sle i64 %2226, %2227
  br i1 %2228, label %2229, label %2273

2229:                                             ; preds = %2225
  %2230 = load ptr, ptr %46, align 8, !tbaa !5
  %2231 = load i64, ptr %2230, align 8, !tbaa !9
  %2232 = icmp ne i64 %2231, 0
  br i1 %2232, label %2233, label %2251

2233:                                             ; preds = %2229
  %2234 = load ptr, ptr %45, align 8, !tbaa !5
  %2235 = load i64, ptr %2234, align 8, !tbaa !9
  store i64 %2235, ptr getelementptr inbounds (%struct.cilist, ptr @zmmch_.io___383, i32 0, i32 1), align 8, !tbaa !40
  %2236 = call i64 @s_wsfe(ptr noundef @zmmch_.io___383)
  %2237 = call i64 @do_fio(ptr noundef @c__1, ptr noundef %74, i64 noundef 8)
  %2238 = load ptr, ptr %38, align 8, !tbaa !5
  %2239 = load i64, ptr %74, align 8, !tbaa !9
  %2240 = getelementptr inbounds %struct.doublecomplex, ptr %2238, i64 %2239
  %2241 = call i64 @do_fio(ptr noundef @c__2, ptr noundef %2240, i64 noundef 8)
  %2242 = load ptr, ptr %40, align 8, !tbaa !5
  %2243 = load i64, ptr %74, align 8, !tbaa !9
  %2244 = load i64, ptr %75, align 8, !tbaa !9
  %2245 = load i64, ptr %55, align 8, !tbaa !9
  %2246 = mul nsw i64 %2244, %2245
  %2247 = add nsw i64 %2243, %2246
  %2248 = getelementptr inbounds %struct.doublecomplex, ptr %2242, i64 %2247
  %2249 = call i64 @do_fio(ptr noundef @c__2, ptr noundef %2248, i64 noundef 8)
  %2250 = call i64 @e_wsfe()
  br label %2269

2251:                                             ; preds = %2229
  %2252 = load ptr, ptr %45, align 8, !tbaa !5
  %2253 = load i64, ptr %2252, align 8, !tbaa !9
  store i64 %2253, ptr getelementptr inbounds (%struct.cilist, ptr @zmmch_.io___384, i32 0, i32 1), align 8, !tbaa !40
  %2254 = call i64 @s_wsfe(ptr noundef @zmmch_.io___384)
  %2255 = call i64 @do_fio(ptr noundef @c__1, ptr noundef %74, i64 noundef 8)
  %2256 = load ptr, ptr %40, align 8, !tbaa !5
  %2257 = load i64, ptr %74, align 8, !tbaa !9
  %2258 = load i64, ptr %75, align 8, !tbaa !9
  %2259 = load i64, ptr %55, align 8, !tbaa !9
  %2260 = mul nsw i64 %2258, %2259
  %2261 = add nsw i64 %2257, %2260
  %2262 = getelementptr inbounds %struct.doublecomplex, ptr %2256, i64 %2261
  %2263 = call i64 @do_fio(ptr noundef @c__2, ptr noundef %2262, i64 noundef 8)
  %2264 = load ptr, ptr %38, align 8, !tbaa !5
  %2265 = load i64, ptr %74, align 8, !tbaa !9
  %2266 = getelementptr inbounds %struct.doublecomplex, ptr %2264, i64 %2265
  %2267 = call i64 @do_fio(ptr noundef @c__2, ptr noundef %2266, i64 noundef 8)
  %2268 = call i64 @e_wsfe()
  br label %2269

2269:                                             ; preds = %2251, %2233
  br label %2270

2270:                                             ; preds = %2269
  %2271 = load i64, ptr %74, align 8, !tbaa !9
  %2272 = add nsw i64 %2271, 1
  store i64 %2272, ptr %74, align 8, !tbaa !9
  br label %2225, !llvm.loop !42

2273:                                             ; preds = %2225
  %2274 = load ptr, ptr %28, align 8, !tbaa !5
  %2275 = load i64, ptr %2274, align 8, !tbaa !9
  %2276 = icmp sgt i64 %2275, 1
  br i1 %2276, label %2277, label %2283

2277:                                             ; preds = %2273
  %2278 = load ptr, ptr %45, align 8, !tbaa !5
  %2279 = load i64, ptr %2278, align 8, !tbaa !9
  store i64 %2279, ptr getelementptr inbounds (%struct.cilist, ptr @zmmch_.io___385, i32 0, i32 1), align 8, !tbaa !40
  %2280 = call i64 @s_wsfe(ptr noundef @zmmch_.io___385)
  %2281 = call i64 @do_fio(ptr noundef @c__1, ptr noundef %75, i64 noundef 8)
  %2282 = call i64 @e_wsfe()
  br label %2283

2283:                                             ; preds = %2277, %2273
  br label %2284

2284:                                             ; preds = %2283, %2216
  call void @llvm.lifetime.end.p0(i64 8, ptr %81) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %80) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %79) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %78) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %77) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %76) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %75) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %74) #5
  call void @llvm.lifetime.end.p0(i64 16, ptr %73) #5
  call void @llvm.lifetime.end.p0(i64 16, ptr %72) #5
  call void @llvm.lifetime.end.p0(i64 16, ptr %71) #5
  call void @llvm.lifetime.end.p0(i64 16, ptr %70) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %69) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %68) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %67) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %66) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %65) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %64) #5
  call void @llvm.lifetime.end.p0(i64 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 8, ptr %49) #5
  ret i32 0
}

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

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

declare void @d_cnjg(ptr noundef, ptr noundef) #1

declare double @d_imag(ptr noundef) #1

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

attributes #0 = { nocallback nofree nosync nounwind willreturn memory(argmem: readwrite) }
attributes #1 = { "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }
attributes #2 = { 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 #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 = !{!"long", !7, i64 0}
!11 = !{!7, !7, i64 0}
!12 = !{!13, !14, i64 0}
!13 = !{!"", !14, i64 0, !14, i64 8}
!14 = !{!"double", !7, i64 0}
!15 = !{!13, !14, i64 8}
!16 = !{!14, !14, i64 0}
!17 = distinct !{!17, !18}
!18 = !{!"llvm.loop.mustprogress"}
!19 = distinct !{!19, !18}
!20 = distinct !{!20, !18}
!21 = distinct !{!21, !18}
!22 = distinct !{!22, !18}
!23 = distinct !{!23, !18}
!24 = distinct !{!24, !18}
!25 = distinct !{!25, !18}
!26 = distinct !{!26, !18}
!27 = distinct !{!27, !18}
!28 = distinct !{!28, !18}
!29 = distinct !{!29, !18}
!30 = distinct !{!30, !18}
!31 = distinct !{!31, !18}
!32 = distinct !{!32, !18}
!33 = distinct !{!33, !18}
!34 = distinct !{!34, !18}
!35 = distinct !{!35, !18}
!36 = distinct !{!36, !18}
!37 = distinct !{!37, !18}
!38 = distinct !{!38, !18}
!39 = distinct !{!39, !18}
!40 = !{!41, !10, i64 8}
!41 = !{!"", !10, i64 0, !10, i64 8, !10, i64 16, !6, i64 24, !10, i64 32}
!42 = distinct !{!42, !18}


; 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.cilist = type { i64, i64, i64, ptr, i64 }
%struct.doublecomplex = type { double, double }

@c__1 = external hidden global i64, align 8
@c__2 = external hidden global i64, align 8
@zmmch_.io___382 = external hidden global %struct.cilist, align 8
@zmmch_.io___383 = external hidden global %struct.cilist, align 8
@zmmch_.io___384 = external hidden global %struct.cilist, align 8
@zmmch_.io___385 = external hidden global %struct.cilist, align 8

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

declare i64 @s_wsfe(ptr noundef) local_unnamed_addr #1

declare i64 @do_fio(ptr noundef, ptr noundef, i64 noundef) local_unnamed_addr #1

declare i64 @e_wsfe() local_unnamed_addr #1

; Function Attrs: nounwind uwtable
define dso_local noundef i32 @zmmch_(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 noundef %5, ptr noundef %6, ptr nocapture noundef readonly %7, ptr noundef %8, ptr nocapture noundef readonly %9, ptr noundef %10, ptr noundef %11, ptr nocapture noundef readonly %12, ptr noundef %13, ptr nocapture noundef %14, ptr noundef %15, ptr nocapture noundef readonly %16, ptr nocapture noundef readonly %17, ptr nocapture noundef %18, ptr nocapture noundef writeonly %19, ptr nocapture noundef readonly %20, ptr nocapture noundef readonly %21, i64 noundef %22, i64 noundef %23) local_unnamed_addr #2 {
  %25 = alloca %struct.doublecomplex, align 16
  %26 = alloca %struct.doublecomplex, align 16
  %27 = alloca %struct.doublecomplex, align 16
  %28 = alloca i64, align 8
  %29 = alloca i64, align 8
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %25) #7
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %26) #7
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %27) #7
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %28) #7
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %29) #7
  %30 = load i64, ptr %7, align 8, !tbaa !5
  %31 = xor i64 %30, -1
  %32 = getelementptr inbounds %struct.doublecomplex, ptr %6, i64 %31
  %33 = load i64, ptr %9, align 8, !tbaa !5
  %34 = xor i64 %33, -1
  %35 = getelementptr inbounds %struct.doublecomplex, ptr %8, i64 %34
  %36 = load i64, ptr %12, align 8, !tbaa !5
  %37 = xor i64 %36, -1
  %38 = getelementptr inbounds %struct.doublecomplex, ptr %11, i64 %37
  %39 = getelementptr inbounds i8, ptr %13, i64 -16
  %40 = getelementptr inbounds i8, ptr %14, i64 -8
  %41 = load i64, ptr %16, align 8, !tbaa !5
  %42 = xor i64 %41, -1
  %43 = getelementptr inbounds %struct.doublecomplex, ptr %15, i64 %42
  %44 = load i8, ptr %0, align 1, !tbaa !9
  %45 = icmp eq i8 %44, 84
  %46 = icmp eq i8 %44, 67
  %spec.select = or i1 %45, %46
  %spec.select.fr = freeze i1 %spec.select
  %47 = load i8, ptr %1, align 1, !tbaa !9
  %48 = icmp eq i8 %47, 67
  %49 = load i64, ptr %3, align 8, !tbaa !5
  store i64 1, ptr %29, align 8, !tbaa !5
  %.not875 = icmp slt i64 %49, 1
  br i1 %.not875, label %.loopexit745, label %.lr.ph877

.lr.ph877:                                        ; preds = %24
  %50 = icmp eq i8 %47, 84
  %51 = or i1 %50, %48
  %52 = xor i1 %spec.select.fr, true
  %or.cond5 = and i1 %51, %52
  %or.cond7 = and i1 %spec.select.fr, %51
  %53 = getelementptr inbounds i8, ptr %26, i64 8
  %54 = getelementptr inbounds i8, ptr %5, i64 8
  %55 = getelementptr inbounds i8, ptr %10, i64 8
  br label %56

56:                                               ; preds = %.lr.ph877, %._crit_edge874
  %57 = phi i64 [ 1, %.lr.ph877 ], [ %585, %._crit_edge874 ]
  %58 = load i64, ptr %2, align 8, !tbaa !5
  %.not701746 = icmp slt i64 %58, 1
  br i1 %.not701746, label %._crit_edge, label %.lr.ph.preheader

.lr.ph.preheader:                                 ; preds = %56
  %xtraiter = and i64 %58, 3
  %59 = icmp ult i64 %58, 4
  br i1 %59, label %._crit_edge.loopexit.unr-lcssa, label %.lr.ph.preheader.new

.lr.ph.preheader.new:                             ; preds = %.lr.ph.preheader
  %unroll_iter = and i64 %58, 9223372036854775804
  br label %.lr.ph

.lr.ph:                                           ; preds = %.lr.ph, %.lr.ph.preheader.new
  %storemerge700747 = phi i64 [ 1, %.lr.ph.preheader.new ], [ %70, %.lr.ph ]
  %niter = phi i64 [ 0, %.lr.ph.preheader.new ], [ %niter.next.3, %.lr.ph ]
  %60 = getelementptr inbounds %struct.doublecomplex, ptr %39, i64 %storemerge700747
  %61 = getelementptr inbounds double, ptr %40, i64 %storemerge700747
  call void @llvm.memset.p0.i64(ptr noundef nonnull align 8 dereferenceable(16) %60, i8 0, i64 16, i1 false)
  store double 0.000000e+00, ptr %61, align 8, !tbaa !10
  %62 = getelementptr %struct.doublecomplex, ptr %13, i64 %storemerge700747
  %63 = getelementptr double, ptr %14, i64 %storemerge700747
  call void @llvm.memset.p0.i64(ptr noundef nonnull align 8 dereferenceable(16) %62, i8 0, i64 16, i1 false)
  store double 0.000000e+00, ptr %63, align 8, !tbaa !10
  %64 = add nuw nsw i64 %storemerge700747, 2
  %65 = getelementptr inbounds %struct.doublecomplex, ptr %39, i64 %64
  %66 = getelementptr inbounds double, ptr %40, i64 %64
  call void @llvm.memset.p0.i64(ptr noundef nonnull align 8 dereferenceable(16) %65, i8 0, i64 16, i1 false)
  store double 0.000000e+00, ptr %66, align 8, !tbaa !10
  %67 = add nuw i64 %storemerge700747, 3
  %68 = getelementptr inbounds %struct.doublecomplex, ptr %39, i64 %67
  %69 = getelementptr inbounds double, ptr %40, i64 %67
  call void @llvm.memset.p0.i64(ptr noundef nonnull align 8 dereferenceable(16) %68, i8 0, i64 16, i1 false)
  store double 0.000000e+00, ptr %69, align 8, !tbaa !10
  %70 = add nuw i64 %storemerge700747, 4
  %niter.next.3 = add i64 %niter, 4
  %niter.ncmp.3 = icmp eq i64 %niter.next.3, %unroll_iter
  br i1 %niter.ncmp.3, label %._crit_edge.loopexit.unr-lcssa, label %.lr.ph, !llvm.loop !12

._crit_edge.loopexit.unr-lcssa:                   ; preds = %.lr.ph, %.lr.ph.preheader
  %storemerge700747.unr = phi i64 [ 1, %.lr.ph.preheader ], [ %70, %.lr.ph ]
  %lcmp.mod.not = icmp eq i64 %xtraiter, 0
  br i1 %lcmp.mod.not, label %._crit_edge, label %.lr.ph.epil

.lr.ph.epil:                                      ; preds = %._crit_edge.loopexit.unr-lcssa, %.lr.ph.epil
  %storemerge700747.epil = phi i64 [ %73, %.lr.ph.epil ], [ %storemerge700747.unr, %._crit_edge.loopexit.unr-lcssa ]
  %epil.iter = phi i64 [ %epil.iter.next, %.lr.ph.epil ], [ 0, %._crit_edge.loopexit.unr-lcssa ]
  %71 = getelementptr inbounds %struct.doublecomplex, ptr %39, i64 %storemerge700747.epil
  %72 = getelementptr inbounds double, ptr %40, i64 %storemerge700747.epil
  call void @llvm.memset.p0.i64(ptr noundef nonnull align 8 dereferenceable(16) %71, i8 0, i64 16, i1 false)
  store double 0.000000e+00, ptr %72, align 8, !tbaa !10
  %73 = add nuw i64 %storemerge700747.epil, 1
  %epil.iter.next = add i64 %epil.iter, 1
  %epil.iter.cmp.not = icmp eq i64 %epil.iter.next, %xtraiter
  br i1 %epil.iter.cmp.not, label %._crit_edge, label %.lr.ph.epil, !llvm.loop !14

._crit_edge:                                      ; preds = %._crit_edge.loopexit.unr-lcssa, %.lr.ph.epil, %56
  br i1 %spec.select.fr, label %switch.early.test, label %switch.early.test736

switch.early.test736:                             ; preds = %._crit_edge
  switch i8 %47, label %74 [
    i8 84, label %223
    i8 67, label %223
  ]

74:                                               ; preds = %switch.early.test736
  %75 = load i64, ptr %4, align 8, !tbaa !5
  %.not702753 = icmp slt i64 %75, 1
  br i1 %.not702753, label %.loopexit, label %.lr.ph756.preheader

.lr.ph756.preheader:                              ; preds = %74
  %76 = mul nsw i64 %57, %33
  %77 = mul nsw i64 %57, %33
  br label %.lr.ph756

.lr.ph756:                                        ; preds = %.lr.ph756.preheader, %._crit_edge752
  %.0683754 = phi i64 [ %122, %._crit_edge752 ], [ 1, %.lr.ph756.preheader ]
  %78 = load i64, ptr %2, align 8, !tbaa !5
  %.not704748 = icmp slt i64 %78, 1
  br i1 %.not704748, label %._crit_edge752, label %.lr.ph751

.lr.ph751:                                        ; preds = %.lr.ph756
  %79 = mul nsw i64 %.0683754, %30
  %invariant.gep = getelementptr %struct.doublecomplex, ptr %32, i64 %79
  %80 = getelementptr %struct.doublecomplex, ptr %35, i64 %.0683754
  %81 = getelementptr %struct.doublecomplex, ptr %80, i64 %76
  %82 = getelementptr %struct.doublecomplex, ptr %80, i64 %77
  br label %83

83:                                               ; preds = %.lr.ph751, %83
  %84 = phi i64 [ 1, %.lr.ph751 ], [ %121, %83 ]
  %gep = getelementptr %struct.doublecomplex, ptr %invariant.gep, i64 %84
  %85 = load double, ptr %gep, align 8, !tbaa !16
  %86 = getelementptr inbounds i8, ptr %gep, i64 8
  %87 = load double, ptr %86, align 8, !tbaa !18
  %88 = fneg double %87
  %89 = getelementptr inbounds %struct.doublecomplex, ptr %39, i64 %84
  %90 = load <2 x double>, ptr %81, align 8, !tbaa !10
  %91 = insertelement <2 x double> poison, double %87, i64 0
  %92 = insertelement <2 x double> %91, double %88, i64 1
  %93 = fmul <2 x double> %90, %92
  %94 = shufflevector <2 x double> %93, <2 x double> poison, <2 x i32> <i32 1, i32 0>
  %95 = insertelement <2 x double> poison, double %85, i64 0
  %96 = shufflevector <2 x double> %95, <2 x double> poison, <2 x i32> zeroinitializer
  %97 = call <2 x double> @llvm.fmuladd.v2f64(<2 x double> %96, <2 x double> %90, <2 x double> %94)
  %98 = load <2 x double>, ptr %89, align 8, !tbaa !10
  %99 = fadd <2 x double> %98, %97
  store <2 x double> %99, ptr %25, align 16, !tbaa !10
  store <2 x double> %99, ptr %89, align 8, !tbaa !10
  %100 = load double, ptr %gep, align 8, !tbaa !16
  %101 = call double @d_imag(ptr noundef nonnull %gep) #7
  %102 = insertelement <2 x double> poison, double %100, i64 0
  %103 = insertelement <2 x double> %102, double %101, i64 1
  %104 = fcmp oge <2 x double> %103, zeroinitializer
  %105 = fneg <2 x double> %103
  %106 = select <2 x i1> %104, <2 x double> %103, <2 x double> %105
  %shift = shufflevector <2 x double> %106, <2 x double> poison, <2 x i32> <i32 1, i32 poison>
  %107 = fadd <2 x double> %106, %shift
  %108 = extractelement <2 x double> %107, i64 0
  %109 = load double, ptr %81, align 8, !tbaa !16
  %110 = call double @d_imag(ptr noundef %82) #7
  %111 = insertelement <2 x double> poison, double %109, i64 0
  %112 = insertelement <2 x double> %111, double %110, i64 1
  %113 = fcmp oge <2 x double> %112, zeroinitializer
  %114 = fneg <2 x double> %112
  %115 = select <2 x i1> %113, <2 x double> %112, <2 x double> %114
  %shift929 = shufflevector <2 x double> %115, <2 x double> poison, <2 x i32> <i32 1, i32 poison>
  %116 = fadd <2 x double> %115, %shift929
  %117 = extractelement <2 x double> %116, i64 0
  %118 = getelementptr inbounds double, ptr %40, i64 %84
  %119 = load double, ptr %118, align 8, !tbaa !10
  %120 = call double @llvm.fmuladd.f64(double %108, double %117, double %119)
  store double %120, ptr %118, align 8, !tbaa !10
  %121 = add nuw nsw i64 %84, 1
  store i64 %121, ptr %28, align 8, !tbaa !5
  %.not704.not = icmp slt i64 %84, %78
  br i1 %.not704.not, label %83, label %._crit_edge752, !llvm.loop !19

._crit_edge752:                                   ; preds = %83, %.lr.ph756
  %122 = add nuw i64 %.0683754, 1
  %exitcond890.not = icmp eq i64 %.0683754, %75
  br i1 %exitcond890.not, label %.loopexit, label %.lr.ph756, !llvm.loop !20

switch.early.test:                                ; preds = %._crit_edge
  switch i8 %47, label %123 [
    i8 84, label %223
    i8 67, label %223
  ]

123:                                              ; preds = %switch.early.test
  %124 = load i64, ptr %4, align 8, !tbaa !5
  %.not708861 = icmp slt i64 %124, 1
  br i1 %46, label %125, label %173

125:                                              ; preds = %123
  br i1 %.not708861, label %.loopexit, label %.lr.ph864.preheader

.lr.ph864.preheader:                              ; preds = %125
  %126 = mul nsw i64 %57, %33
  %127 = mul nsw i64 %57, %33
  br label %.lr.ph864

.lr.ph864:                                        ; preds = %.lr.ph864.preheader, %._crit_edge860
  %.1862 = phi i64 [ %172, %._crit_edge860 ], [ 1, %.lr.ph864.preheader ]
  %128 = load i64, ptr %2, align 8, !tbaa !5
  %.not710856 = icmp slt i64 %128, 1
  br i1 %.not710856, label %._crit_edge860, label %.lr.ph859

.lr.ph859:                                        ; preds = %.lr.ph864
  %129 = getelementptr %struct.doublecomplex, ptr %32, i64 %.1862
  %130 = getelementptr %struct.doublecomplex, ptr %35, i64 %.1862
  %131 = getelementptr %struct.doublecomplex, ptr %130, i64 %126
  %132 = getelementptr %struct.doublecomplex, ptr %130, i64 %127
  br label %133

133:                                              ; preds = %.lr.ph859, %133
  %134 = phi i64 [ 1, %.lr.ph859 ], [ %171, %133 ]
  %135 = mul nsw i64 %134, %30
  %136 = getelementptr %struct.doublecomplex, ptr %129, i64 %135
  call void @d_cnjg(ptr noundef nonnull %26, ptr noundef %136) #7
  %137 = load <2 x double>, ptr %26, align 16
  %138 = load double, ptr %53, align 8, !tbaa !18
  %139 = fneg double %138
  %140 = getelementptr inbounds %struct.doublecomplex, ptr %39, i64 %134
  %141 = load <2 x double>, ptr %131, align 8, !tbaa !10
  %142 = insertelement <2 x double> poison, double %138, i64 0
  %143 = insertelement <2 x double> %142, double %139, i64 1
  %144 = fmul <2 x double> %141, %143
  %145 = shufflevector <2 x double> %144, <2 x double> poison, <2 x i32> <i32 1, i32 0>
  %146 = shufflevector <2 x double> %137, <2 x double> poison, <2 x i32> zeroinitializer
  %147 = call <2 x double> @llvm.fmuladd.v2f64(<2 x double> %146, <2 x double> %141, <2 x double> %145)
  %148 = load <2 x double>, ptr %140, align 8, !tbaa !10
  %149 = fadd <2 x double> %148, %147
  store <2 x double> %149, ptr %25, align 16, !tbaa !10
  store <2 x double> %149, ptr %140, align 8, !tbaa !10
  %150 = load double, ptr %136, align 8, !tbaa !16
  %151 = call double @d_imag(ptr noundef nonnull %136) #7
  %152 = insertelement <2 x double> poison, double %150, i64 0
  %153 = insertelement <2 x double> %152, double %151, i64 1
  %154 = fcmp oge <2 x double> %153, zeroinitializer
  %155 = fneg <2 x double> %153
  %156 = select <2 x i1> %154, <2 x double> %153, <2 x double> %155
  %shift930 = shufflevector <2 x double> %156, <2 x double> poison, <2 x i32> <i32 1, i32 poison>
  %157 = fadd <2 x double> %156, %shift930
  %158 = extractelement <2 x double> %157, i64 0
  %159 = load double, ptr %131, align 8, !tbaa !16
  %160 = call double @d_imag(ptr noundef %132) #7
  %161 = insertelement <2 x double> poison, double %159, i64 0
  %162 = insertelement <2 x double> %161, double %160, i64 1
  %163 = fcmp oge <2 x double> %162, zeroinitializer
  %164 = fneg <2 x double> %162
  %165 = select <2 x i1> %163, <2 x double> %162, <2 x double> %164
  %shift931 = shufflevector <2 x double> %165, <2 x double> poison, <2 x i32> <i32 1, i32 poison>
  %166 = fadd <2 x double> %165, %shift931
  %167 = extractelement <2 x double> %166, i64 0
  %168 = getelementptr inbounds double, ptr %40, i64 %134
  %169 = load double, ptr %168, align 8, !tbaa !10
  %170 = call double @llvm.fmuladd.f64(double %158, double %167, double %169)
  store double %170, ptr %168, align 8, !tbaa !10
  %171 = add nuw nsw i64 %134, 1
  store i64 %171, ptr %28, align 8, !tbaa !5
  %.not710.not = icmp slt i64 %134, %128
  br i1 %.not710.not, label %133, label %._crit_edge860, !llvm.loop !21

._crit_edge860:                                   ; preds = %133, %.lr.ph864
  %172 = add nuw i64 %.1862, 1
  %exitcond898.not = icmp eq i64 %.1862, %124
  br i1 %exitcond898.not, label %.loopexit, label %.lr.ph864, !llvm.loop !22

173:                                              ; preds = %123
  br i1 %.not708861, label %.loopexit, label %.lr.ph855.preheader

.lr.ph855.preheader:                              ; preds = %173
  %174 = mul nsw i64 %57, %33
  %175 = mul nsw i64 %57, %33
  br label %.lr.ph855

.lr.ph855:                                        ; preds = %.lr.ph855.preheader, %._crit_edge851
  %.2853 = phi i64 [ %222, %._crit_edge851 ], [ 1, %.lr.ph855.preheader ]
  %176 = load i64, ptr %2, align 8, !tbaa !5
  %.not707847 = icmp slt i64 %176, 1
  br i1 %.not707847, label %._crit_edge851, label %.lr.ph850

.lr.ph850:                                        ; preds = %.lr.ph855
  %177 = getelementptr %struct.doublecomplex, ptr %32, i64 %.2853
  %178 = getelementptr %struct.doublecomplex, ptr %35, i64 %.2853
  %179 = getelementptr %struct.doublecomplex, ptr %178, i64 %174
  %180 = getelementptr %struct.doublecomplex, ptr %178, i64 %175
  br label %181

181:                                              ; preds = %.lr.ph850, %181
  %182 = phi i64 [ 1, %.lr.ph850 ], [ %221, %181 ]
  %183 = mul nsw i64 %182, %30
  %184 = getelementptr %struct.doublecomplex, ptr %177, i64 %183
  %185 = load double, ptr %184, align 8, !tbaa !16
  %186 = getelementptr inbounds i8, ptr %184, i64 8
  %187 = load double, ptr %186, align 8, !tbaa !18
  %188 = fneg double %187
  %189 = getelementptr inbounds %struct.doublecomplex, ptr %39, i64 %182
  %190 = load <2 x double>, ptr %179, align 8, !tbaa !10
  %191 = insertelement <2 x double> poison, double %187, i64 0
  %192 = insertelement <2 x double> %191, double %188, i64 1
  %193 = fmul <2 x double> %190, %192
  %194 = shufflevector <2 x double> %193, <2 x double> poison, <2 x i32> <i32 1, i32 0>
  %195 = insertelement <2 x double> poison, double %185, i64 0
  %196 = shufflevector <2 x double> %195, <2 x double> poison, <2 x i32> zeroinitializer
  %197 = call <2 x double> @llvm.fmuladd.v2f64(<2 x double> %196, <2 x double> %190, <2 x double> %194)
  %198 = load <2 x double>, ptr %189, align 8, !tbaa !10
  %199 = fadd <2 x double> %198, %197
  store <2 x double> %199, ptr %25, align 16, !tbaa !10
  store <2 x double> %199, ptr %189, align 8, !tbaa !10
  %200 = load double, ptr %184, align 8, !tbaa !16
  %201 = call double @d_imag(ptr noundef nonnull %184) #7
  %202 = insertelement <2 x double> poison, double %200, i64 0
  %203 = insertelement <2 x double> %202, double %201, i64 1
  %204 = fcmp oge <2 x double> %203, zeroinitializer
  %205 = fneg <2 x double> %203
  %206 = select <2 x i1> %204, <2 x double> %203, <2 x double> %205
  %shift932 = shufflevector <2 x double> %206, <2 x double> poison, <2 x i32> <i32 1, i32 poison>
  %207 = fadd <2 x double> %206, %shift932
  %208 = extractelement <2 x double> %207, i64 0
  %209 = load double, ptr %179, align 8, !tbaa !16
  %210 = call double @d_imag(ptr noundef %180) #7
  %211 = insertelement <2 x double> poison, double %209, i64 0
  %212 = insertelement <2 x double> %211, double %210, i64 1
  %213 = fcmp oge <2 x double> %212, zeroinitializer
  %214 = fneg <2 x double> %212
  %215 = select <2 x i1> %213, <2 x double> %212, <2 x double> %214
  %shift933 = shufflevector <2 x double> %215, <2 x double> poison, <2 x i32> <i32 1, i32 poison>
  %216 = fadd <2 x double> %215, %shift933
  %217 = extractelement <2 x double> %216, i64 0
  %218 = getelementptr inbounds double, ptr %40, i64 %182
  %219 = load double, ptr %218, align 8, !tbaa !10
  %220 = call double @llvm.fmuladd.f64(double %208, double %217, double %219)
  store double %220, ptr %218, align 8, !tbaa !10
  %221 = add nuw nsw i64 %182, 1
  store i64 %221, ptr %28, align 8, !tbaa !5
  %.not707.not = icmp slt i64 %182, %176
  br i1 %.not707.not, label %181, label %._crit_edge851, !llvm.loop !23

._crit_edge851:                                   ; preds = %181, %.lr.ph855
  %222 = add nuw i64 %.2853, 1
  %exitcond897.not = icmp eq i64 %.2853, %124
  br i1 %exitcond897.not, label %.loopexit, label %.lr.ph855, !llvm.loop !24

223:                                              ; preds = %switch.early.test736, %switch.early.test736, %switch.early.test, %switch.early.test
  br i1 %or.cond5, label %224, label %314

224:                                              ; preds = %223
  %225 = load i64, ptr %4, align 8, !tbaa !5
  %.not726843 = icmp slt i64 %225, 1
  br i1 %48, label %226, label %270

226:                                              ; preds = %224
  br i1 %.not726843, label %.loopexit, label %.lr.ph846

.lr.ph846:                                        ; preds = %226, %._crit_edge832
  %.3844 = phi i64 [ %269, %._crit_edge832 ], [ 1, %226 ]
  %227 = load i64, ptr %2, align 8, !tbaa !5
  %.not735828 = icmp slt i64 %227, 1
  br i1 %.not735828, label %._crit_edge832, label %.lr.ph831

.lr.ph831:                                        ; preds = %.lr.ph846
  %228 = mul nsw i64 %.3844, %30
  %229 = mul nsw i64 %.3844, %33
  %invariant.gep833 = getelementptr %struct.doublecomplex, ptr %35, i64 %229
  %invariant.gep835 = getelementptr %struct.doublecomplex, ptr %32, i64 %228
  %gep834 = getelementptr %struct.doublecomplex, ptr %invariant.gep833, i64 %57
  %gep842 = getelementptr %struct.doublecomplex, ptr %invariant.gep833, i64 %57
  br label %230

230:                                              ; preds = %.lr.ph831, %230
  %231 = phi i64 [ 1, %.lr.ph831 ], [ %268, %230 ]
  call void @d_cnjg(ptr noundef nonnull %26, ptr noundef %gep834) #7
  %gep836 = getelementptr %struct.doublecomplex, ptr %invariant.gep835, i64 %231
  %232 = load double, ptr %gep836, align 8, !tbaa !16
  %233 = getelementptr inbounds i8, ptr %gep836, i64 8
  %234 = load double, ptr %233, align 8, !tbaa !18
  %235 = fneg double %234
  %236 = getelementptr inbounds %struct.doublecomplex, ptr %39, i64 %231
  %237 = load <2 x double>, ptr %26, align 16, !tbaa !10
  %238 = insertelement <2 x double> poison, double %234, i64 0
  %239 = insertelement <2 x double> %238, double %235, i64 1
  %240 = fmul <2 x double> %237, %239
  %241 = shufflevector <2 x double> %240, <2 x double> poison, <2 x i32> <i32 1, i32 0>
  %242 = insertelement <2 x double> poison, double %232, i64 0
  %243 = shufflevector <2 x double> %242, <2 x double> poison, <2 x i32> zeroinitializer
  %244 = call <2 x double> @llvm.fmuladd.v2f64(<2 x double> %243, <2 x double> %237, <2 x double> %241)
  %245 = load <2 x double>, ptr %236, align 8, !tbaa !10
  %246 = fadd <2 x double> %245, %244
  store <2 x double> %246, ptr %25, align 16, !tbaa !10
  store <2 x double> %246, ptr %236, align 8, !tbaa !10
  %247 = load double, ptr %gep836, align 8, !tbaa !16
  %248 = call double @d_imag(ptr noundef nonnull %gep836) #7
  %249 = insertelement <2 x double> poison, double %247, i64 0
  %250 = insertelement <2 x double> %249, double %248, i64 1
  %251 = fcmp oge <2 x double> %250, zeroinitializer
  %252 = fneg <2 x double> %250
  %253 = select <2 x i1> %251, <2 x double> %250, <2 x double> %252
  %shift934 = shufflevector <2 x double> %253, <2 x double> poison, <2 x i32> <i32 1, i32 poison>
  %254 = fadd <2 x double> %253, %shift934
  %255 = extractelement <2 x double> %254, i64 0
  %256 = load double, ptr %gep834, align 8, !tbaa !16
  %257 = call double @d_imag(ptr noundef %gep842) #7
  %258 = insertelement <2 x double> poison, double %256, i64 0
  %259 = insertelement <2 x double> %258, double %257, i64 1
  %260 = fcmp oge <2 x double> %259, zeroinitializer
  %261 = fneg <2 x double> %259
  %262 = select <2 x i1> %260, <2 x double> %259, <2 x double> %261
  %shift935 = shufflevector <2 x double> %262, <2 x double> poison, <2 x i32> <i32 1, i32 poison>
  %263 = fadd <2 x double> %262, %shift935
  %264 = extractelement <2 x double> %263, i64 0
  %265 = getelementptr inbounds double, ptr %40, i64 %231
  %266 = load double, ptr %265, align 8, !tbaa !10
  %267 = call double @llvm.fmuladd.f64(double %255, double %264, double %266)
  store double %267, ptr %265, align 8, !tbaa !10
  %268 = add nuw nsw i64 %231, 1
  store i64 %268, ptr %28, align 8, !tbaa !5
  %.not735.not = icmp slt i64 %231, %227
  br i1 %.not735.not, label %230, label %._crit_edge832, !llvm.loop !25

._crit_edge832:                                   ; preds = %230, %.lr.ph846
  %269 = add nuw i64 %.3844, 1
  %exitcond896.not = icmp eq i64 %.3844, %225
  br i1 %exitcond896.not, label %.loopexit, label %.lr.ph846, !llvm.loop !26

270:                                              ; preds = %224
  br i1 %.not726843, label %.loopexit, label %.lr.ph827

.lr.ph827:                                        ; preds = %270, %._crit_edge817
  %.4825 = phi i64 [ %313, %._crit_edge817 ], [ 1, %270 ]
  %271 = load i64, ptr %2, align 8, !tbaa !5
  %.not725813 = icmp slt i64 %271, 1
  br i1 %.not725813, label %._crit_edge817, label %.lr.ph816

.lr.ph816:                                        ; preds = %.lr.ph827
  %272 = mul nsw i64 %.4825, %30
  %273 = mul nsw i64 %.4825, %33
  %invariant.gep818 = getelementptr %struct.doublecomplex, ptr %32, i64 %272
  %invariant.gep820 = getelementptr %struct.doublecomplex, ptr %35, i64 %273
  %gep821 = getelementptr %struct.doublecomplex, ptr %invariant.gep820, i64 %57
  %gep823 = getelementptr %struct.doublecomplex, ptr %invariant.gep820, i64 %57
  br label %274

274:                                              ; preds = %.lr.ph816, %274
  %275 = phi i64 [ 1, %.lr.ph816 ], [ %312, %274 ]
  %gep819 = getelementptr %struct.doublecomplex, ptr %invariant.gep818, i64 %275
  %276 = load double, ptr %gep819, align 8, !tbaa !16
  %277 = getelementptr inbounds i8, ptr %gep819, i64 8
  %278 = load double, ptr %277, align 8, !tbaa !18
  %279 = fneg double %278
  %280 = getelementptr inbounds %struct.doublecomplex, ptr %39, i64 %275
  %281 = load <2 x double>, ptr %gep821, align 8, !tbaa !10
  %282 = insertelement <2 x double> poison, double %278, i64 0
  %283 = insertelement <2 x double> %282, double %279, i64 1
  %284 = fmul <2 x double> %281, %283
  %285 = shufflevector <2 x double> %284, <2 x double> poison, <2 x i32> <i32 1, i32 0>
  %286 = insertelement <2 x double> poison, double %276, i64 0
  %287 = shufflevector <2 x double> %286, <2 x double> poison, <2 x i32> zeroinitializer
  %288 = call <2 x double> @llvm.fmuladd.v2f64(<2 x double> %287, <2 x double> %281, <2 x double> %285)
  %289 = load <2 x double>, ptr %280, align 8, !tbaa !10
  %290 = fadd <2 x double> %289, %288
  store <2 x double> %290, ptr %25, align 16, !tbaa !10
  store <2 x double> %290, ptr %280, align 8, !tbaa !10
  %291 = load double, ptr %gep819, align 8, !tbaa !16
  %292 = call double @d_imag(ptr noundef nonnull %gep819) #7
  %293 = insertelement <2 x double> poison, double %291, i64 0
  %294 = insertelement <2 x double> %293, double %292, i64 1
  %295 = fcmp oge <2 x double> %294, zeroinitializer
  %296 = fneg <2 x double> %294
  %297 = select <2 x i1> %295, <2 x double> %294, <2 x double> %296
  %shift936 = shufflevector <2 x double> %297, <2 x double> poison, <2 x i32> <i32 1, i32 poison>
  %298 = fadd <2 x double> %297, %shift936
  %299 = extractelement <2 x double> %298, i64 0
  %300 = load double, ptr %gep821, align 8, !tbaa !16
  %301 = call double @d_imag(ptr noundef %gep823) #7
  %302 = insertelement <2 x double> poison, double %300, i64 0
  %303 = insertelement <2 x double> %302, double %301, i64 1
  %304 = fcmp oge <2 x double> %303, zeroinitializer
  %305 = fneg <2 x double> %303
  %306 = select <2 x i1> %304, <2 x double> %303, <2 x double> %305
  %shift937 = shufflevector <2 x double> %306, <2 x double> poison, <2 x i32> <i32 1, i32 poison>
  %307 = fadd <2 x double> %306, %shift937
  %308 = extractelement <2 x double> %307, i64 0
  %309 = getelementptr inbounds double, ptr %40, i64 %275
  %310 = load double, ptr %309, align 8, !tbaa !10
  %311 = call double @llvm.fmuladd.f64(double %299, double %308, double %310)
  store double %311, ptr %309, align 8, !tbaa !10
  %312 = add nuw nsw i64 %275, 1
  store i64 %312, ptr %28, align 8, !tbaa !5
  %.not725.not = icmp slt i64 %275, %271
  br i1 %.not725.not, label %274, label %._crit_edge817, !llvm.loop !27

._crit_edge817:                                   ; preds = %274, %.lr.ph827
  %313 = add nuw i64 %.4825, 1
  %exitcond895.not = icmp eq i64 %.4825, %225
  br i1 %exitcond895.not, label %.loopexit, label %.lr.ph827, !llvm.loop !28

314:                                              ; preds = %223
  br i1 %or.cond7, label %315, label %.loopexit

315:                                              ; preds = %314
  %316 = load i64, ptr %4, align 8, !tbaa !5
  %.not720809 = icmp slt i64 %316, 1
  br i1 %46, label %317, label %406

317:                                              ; preds = %315
  br i1 %48, label %318, label %362

318:                                              ; preds = %317
  br i1 %.not720809, label %.loopexit, label %.lr.ph812

.lr.ph812:                                        ; preds = %318, %._crit_edge802
  %.5810 = phi i64 [ %361, %._crit_edge802 ], [ 1, %318 ]
  %319 = load i64, ptr %2, align 8, !tbaa !5
  %.not722798 = icmp slt i64 %319, 1
  br i1 %.not722798, label %._crit_edge802, label %.lr.ph801

.lr.ph801:                                        ; preds = %.lr.ph812
  %320 = getelementptr %struct.doublecomplex, ptr %32, i64 %.5810
  %321 = mul nsw i64 %.5810, %33
  %invariant.gep803 = getelementptr %struct.doublecomplex, ptr %35, i64 %321
  %gep804 = getelementptr %struct.doublecomplex, ptr %invariant.gep803, i64 %57
  %gep808 = getelementptr %struct.doublecomplex, ptr %invariant.gep803, i64 %57
  br label %322

322:                                              ; preds = %.lr.ph801, %322
  %323 = phi i64 [ 1, %.lr.ph801 ], [ %360, %322 ]
  %324 = mul nsw i64 %323, %30
  %325 = getelementptr %struct.doublecomplex, ptr %320, i64 %324
  call void @d_cnjg(ptr noundef nonnull %26, ptr noundef %325) #7
  call void @d_cnjg(ptr noundef nonnull %27, ptr noundef %gep804) #7
  %326 = load <2 x double>, ptr %26, align 16
  %327 = load double, ptr %53, align 8, !tbaa !18
  %328 = fneg double %327
  %329 = getelementptr inbounds %struct.doublecomplex, ptr %39, i64 %323
  %330 = load <2 x double>, ptr %27, align 16, !tbaa !10
  %331 = insertelement <2 x double> poison, double %327, i64 0
  %332 = insertelement <2 x double> %331, double %328, i64 1
  %333 = fmul <2 x double> %330, %332
  %334 = shufflevector <2 x double> %333, <2 x double> poison, <2 x i32> <i32 1, i32 0>
  %335 = shufflevector <2 x double> %326, <2 x double> poison, <2 x i32> zeroinitializer
  %336 = call <2 x double> @llvm.fmuladd.v2f64(<2 x double> %335, <2 x double> %330, <2 x double> %334)
  %337 = load <2 x double>, ptr %329, align 8, !tbaa !10
  %338 = fadd <2 x double> %337, %336
  store <2 x double> %338, ptr %25, align 16, !tbaa !10
  store <2 x double> %338, ptr %329, align 8, !tbaa !10
  %339 = load double, ptr %325, align 8, !tbaa !16
  %340 = call double @d_imag(ptr noundef nonnull %325) #7
  %341 = insertelement <2 x double> poison, double %339, i64 0
  %342 = insertelement <2 x double> %341, double %340, i64 1
  %343 = fcmp oge <2 x double> %342, zeroinitializer
  %344 = fneg <2 x double> %342
  %345 = select <2 x i1> %343, <2 x double> %342, <2 x double> %344
  %shift938 = shufflevector <2 x double> %345, <2 x double> poison, <2 x i32> <i32 1, i32 poison>
  %346 = fadd <2 x double> %345, %shift938
  %347 = extractelement <2 x double> %346, i64 0
  %348 = load double, ptr %gep804, align 8, !tbaa !16
  %349 = call double @d_imag(ptr noundef %gep808) #7
  %350 = insertelement <2 x double> poison, double %348, i64 0
  %351 = insertelement <2 x double> %350, double %349, i64 1
  %352 = fcmp oge <2 x double> %351, zeroinitializer
  %353 = fneg <2 x double> %351
  %354 = select <2 x i1> %352, <2 x double> %351, <2 x double> %353
  %shift939 = shufflevector <2 x double> %354, <2 x double> poison, <2 x i32> <i32 1, i32 poison>
  %355 = fadd <2 x double> %354, %shift939
  %356 = extractelement <2 x double> %355, i64 0
  %357 = getelementptr inbounds double, ptr %40, i64 %323
  %358 = load double, ptr %357, align 8, !tbaa !10
  %359 = call double @llvm.fmuladd.f64(double %347, double %356, double %358)
  store double %359, ptr %357, align 8, !tbaa !10
  %360 = add nuw nsw i64 %323, 1
  store i64 %360, ptr %28, align 8, !tbaa !5
  %.not722.not = icmp slt i64 %323, %319
  br i1 %.not722.not, label %322, label %._crit_edge802, !llvm.loop !29

._crit_edge802:                                   ; preds = %322, %.lr.ph812
  %361 = add nuw i64 %.5810, 1
  %exitcond894.not = icmp eq i64 %.5810, %316
  br i1 %exitcond894.not, label %.loopexit, label %.lr.ph812, !llvm.loop !30

362:                                              ; preds = %317
  br i1 %.not720809, label %.loopexit, label %.lr.ph797

.lr.ph797:                                        ; preds = %362, %._crit_edge789
  %.6795 = phi i64 [ %405, %._crit_edge789 ], [ 1, %362 ]
  %363 = load i64, ptr %2, align 8, !tbaa !5
  %.not719785 = icmp slt i64 %363, 1
  br i1 %.not719785, label %._crit_edge789, label %.lr.ph788

.lr.ph788:                                        ; preds = %.lr.ph797
  %364 = getelementptr %struct.doublecomplex, ptr %32, i64 %.6795
  %365 = mul nsw i64 %.6795, %33
  %invariant.gep790 = getelementptr %struct.doublecomplex, ptr %35, i64 %365
  %gep791 = getelementptr %struct.doublecomplex, ptr %invariant.gep790, i64 %57
  %gep793 = getelementptr %struct.doublecomplex, ptr %invariant.gep790, i64 %57
  br label %366

366:                                              ; preds = %.lr.ph788, %366
  %367 = phi i64 [ 1, %.lr.ph788 ], [ %404, %366 ]
  %368 = mul nsw i64 %367, %30
  %369 = getelementptr %struct.doublecomplex, ptr %364, i64 %368
  call void @d_cnjg(ptr noundef nonnull %26, ptr noundef %369) #7
  %370 = load <2 x double>, ptr %26, align 16
  %371 = load double, ptr %53, align 8, !tbaa !18
  %372 = fneg double %371
  %373 = getelementptr inbounds %struct.doublecomplex, ptr %39, i64 %367
  %374 = load <2 x double>, ptr %gep791, align 8, !tbaa !10
  %375 = insertelement <2 x double> poison, double %371, i64 0
  %376 = insertelement <2 x double> %375, double %372, i64 1
  %377 = fmul <2 x double> %374, %376
  %378 = shufflevector <2 x double> %377, <2 x double> poison, <2 x i32> <i32 1, i32 0>
  %379 = shufflevector <2 x double> %370, <2 x double> poison, <2 x i32> zeroinitializer
  %380 = call <2 x double> @llvm.fmuladd.v2f64(<2 x double> %379, <2 x double> %374, <2 x double> %378)
  %381 = load <2 x double>, ptr %373, align 8, !tbaa !10
  %382 = fadd <2 x double> %381, %380
  store <2 x double> %382, ptr %25, align 16, !tbaa !10
  store <2 x double> %382, ptr %373, align 8, !tbaa !10
  %383 = load double, ptr %369, align 8, !tbaa !16
  %384 = call double @d_imag(ptr noundef nonnull %369) #7
  %385 = insertelement <2 x double> poison, double %383, i64 0
  %386 = insertelement <2 x double> %385, double %384, i64 1
  %387 = fcmp oge <2 x double> %386, zeroinitializer
  %388 = fneg <2 x double> %386
  %389 = select <2 x i1> %387, <2 x double> %386, <2 x double> %388
  %shift940 = shufflevector <2 x double> %389, <2 x double> poison, <2 x i32> <i32 1, i32 poison>
  %390 = fadd <2 x double> %389, %shift940
  %391 = extractelement <2 x double> %390, i64 0
  %392 = load double, ptr %gep791, align 8, !tbaa !16
  %393 = call double @d_imag(ptr noundef %gep793) #7
  %394 = insertelement <2 x double> poison, double %392, i64 0
  %395 = insertelement <2 x double> %394, double %393, i64 1
  %396 = fcmp oge <2 x double> %395, zeroinitializer
  %397 = fneg <2 x double> %395
  %398 = select <2 x i1> %396, <2 x double> %395, <2 x double> %397
  %shift941 = shufflevector <2 x double> %398, <2 x double> poison, <2 x i32> <i32 1, i32 poison>
  %399 = fadd <2 x double> %398, %shift941
  %400 = extractelement <2 x double> %399, i64 0
  %401 = getelementptr inbounds double, ptr %40, i64 %367
  %402 = load double, ptr %401, align 8, !tbaa !10
  %403 = call double @llvm.fmuladd.f64(double %391, double %400, double %402)
  store double %403, ptr %401, align 8, !tbaa !10
  %404 = add nuw nsw i64 %367, 1
  store i64 %404, ptr %28, align 8, !tbaa !5
  %.not719.not = icmp slt i64 %367, %363
  br i1 %.not719.not, label %366, label %._crit_edge789, !llvm.loop !31

._crit_edge789:                                   ; preds = %366, %.lr.ph797
  %405 = add nuw i64 %.6795, 1
  %exitcond893.not = icmp eq i64 %.6795, %316
  br i1 %exitcond893.not, label %.loopexit, label %.lr.ph797, !llvm.loop !32

406:                                              ; preds = %315
  br i1 %48, label %407, label %453

407:                                              ; preds = %406
  br i1 %.not720809, label %.loopexit, label %.lr.ph784

.lr.ph784:                                        ; preds = %407, %._crit_edge774
  %.7782 = phi i64 [ %452, %._crit_edge774 ], [ 1, %407 ]
  %408 = load i64, ptr %2, align 8, !tbaa !5
  %.not716770 = icmp slt i64 %408, 1
  br i1 %.not716770, label %._crit_edge774, label %.lr.ph773

.lr.ph773:                                        ; preds = %.lr.ph784
  %409 = mul nsw i64 %.7782, %33
  %invariant.gep775 = getelementptr %struct.doublecomplex, ptr %35, i64 %409
  %410 = getelementptr %struct.doublecomplex, ptr %32, i64 %.7782
  %gep776 = getelementptr %struct.doublecomplex, ptr %invariant.gep775, i64 %57
  %gep780 = getelementptr %struct.doublecomplex, ptr %invariant.gep775, i64 %57
  br label %411

411:                                              ; preds = %.lr.ph773, %411
  %412 = phi i64 [ 1, %.lr.ph773 ], [ %451, %411 ]
  %413 = mul nsw i64 %412, %30
  call void @d_cnjg(ptr noundef nonnull %26, ptr noundef %gep776) #7
  %414 = getelementptr %struct.doublecomplex, ptr %410, i64 %413
  %415 = load double, ptr %414, align 8, !tbaa !16
  %416 = getelementptr inbounds i8, ptr %414, i64 8
  %417 = load double, ptr %416, align 8, !tbaa !18
  %418 = fneg double %417
  %419 = getelementptr inbounds %struct.doublecomplex, ptr %39, i64 %412
  %420 = load <2 x double>, ptr %26, align 16, !tbaa !10
  %421 = insertelement <2 x double> poison, double %417, i64 0
  %422 = insertelement <2 x double> %421, double %418, i64 1
  %423 = fmul <2 x double> %420, %422
  %424 = shufflevector <2 x double> %423, <2 x double> poison, <2 x i32> <i32 1, i32 0>
  %425 = insertelement <2 x double> poison, double %415, i64 0
  %426 = shufflevector <2 x double> %425, <2 x double> poison, <2 x i32> zeroinitializer
  %427 = call <2 x double> @llvm.fmuladd.v2f64(<2 x double> %426, <2 x double> %420, <2 x double> %424)
  %428 = load <2 x double>, ptr %419, align 8, !tbaa !10
  %429 = fadd <2 x double> %428, %427
  store <2 x double> %429, ptr %25, align 16, !tbaa !10
  store <2 x double> %429, ptr %419, align 8, !tbaa !10
  %430 = load double, ptr %414, align 8, !tbaa !16
  %431 = call double @d_imag(ptr noundef nonnull %414) #7
  %432 = insertelement <2 x double> poison, double %430, i64 0
  %433 = insertelement <2 x double> %432, double %431, i64 1
  %434 = fcmp oge <2 x double> %433, zeroinitializer
  %435 = fneg <2 x double> %433
  %436 = select <2 x i1> %434, <2 x double> %433, <2 x double> %435
  %shift942 = shufflevector <2 x double> %436, <2 x double> poison, <2 x i32> <i32 1, i32 poison>
  %437 = fadd <2 x double> %436, %shift942
  %438 = extractelement <2 x double> %437, i64 0
  %439 = load double, ptr %gep776, align 8, !tbaa !16
  %440 = call double @d_imag(ptr noundef %gep780) #7
  %441 = insertelement <2 x double> poison, double %439, i64 0
  %442 = insertelement <2 x double> %441, double %440, i64 1
  %443 = fcmp oge <2 x double> %442, zeroinitializer
  %444 = fneg <2 x double> %442
  %445 = select <2 x i1> %443, <2 x double> %442, <2 x double> %444
  %shift943 = shufflevector <2 x double> %445, <2 x double> poison, <2 x i32> <i32 1, i32 poison>
  %446 = fadd <2 x double> %445, %shift943
  %447 = extractelement <2 x double> %446, i64 0
  %448 = getelementptr inbounds double, ptr %40, i64 %412
  %449 = load double, ptr %448, align 8, !tbaa !10
  %450 = call double @llvm.fmuladd.f64(double %438, double %447, double %449)
  store double %450, ptr %448, align 8, !tbaa !10
  %451 = add nuw nsw i64 %412, 1
  store i64 %451, ptr %28, align 8, !tbaa !5
  %.not716.not = icmp slt i64 %412, %408
  br i1 %.not716.not, label %411, label %._crit_edge774, !llvm.loop !33

._crit_edge774:                                   ; preds = %411, %.lr.ph784
  %452 = add nuw i64 %.7782, 1
  %exitcond892.not = icmp eq i64 %.7782, %316
  br i1 %exitcond892.not, label %.loopexit, label %.lr.ph784, !llvm.loop !34

453:                                              ; preds = %406
  br i1 %.not720809, label %.loopexit, label %.lr.ph769

.lr.ph769:                                        ; preds = %453, %._crit_edge761
  %.8767 = phi i64 [ %498, %._crit_edge761 ], [ 1, %453 ]
  %454 = load i64, ptr %2, align 8, !tbaa !5
  %.not713757 = icmp slt i64 %454, 1
  br i1 %.not713757, label %._crit_edge761, label %.lr.ph760

.lr.ph760:                                        ; preds = %.lr.ph769
  %455 = mul nsw i64 %.8767, %33
  %456 = getelementptr %struct.doublecomplex, ptr %32, i64 %.8767
  %invariant.gep762 = getelementptr %struct.doublecomplex, ptr %35, i64 %455
  %gep763 = getelementptr %struct.doublecomplex, ptr %invariant.gep762, i64 %57
  %gep765 = getelementptr %struct.doublecomplex, ptr %invariant.gep762, i64 %57
  br label %457

457:                                              ; preds = %.lr.ph760, %457
  %458 = phi i64 [ 1, %.lr.ph760 ], [ %497, %457 ]
  %459 = mul nsw i64 %458, %30
  %460 = getelementptr %struct.doublecomplex, ptr %456, i64 %459
  %461 = load double, ptr %460, align 8, !tbaa !16
  %462 = getelementptr inbounds i8, ptr %460, i64 8
  %463 = load double, ptr %462, align 8, !tbaa !18
  %464 = fneg double %463
  %465 = getelementptr inbounds %struct.doublecomplex, ptr %39, i64 %458
  %466 = load <2 x double>, ptr %gep763, align 8, !tbaa !10
  %467 = insertelement <2 x double> poison, double %463, i64 0
  %468 = insertelement <2 x double> %467, double %464, i64 1
  %469 = fmul <2 x double> %466, %468
  %470 = shufflevector <2 x double> %469, <2 x double> poison, <2 x i32> <i32 1, i32 0>
  %471 = insertelement <2 x double> poison, double %461, i64 0
  %472 = shufflevector <2 x double> %471, <2 x double> poison, <2 x i32> zeroinitializer
  %473 = call <2 x double> @llvm.fmuladd.v2f64(<2 x double> %472, <2 x double> %466, <2 x double> %470)
  %474 = load <2 x double>, ptr %465, align 8, !tbaa !10
  %475 = fadd <2 x double> %474, %473
  store <2 x double> %475, ptr %25, align 16, !tbaa !10
  store <2 x double> %475, ptr %465, align 8, !tbaa !10
  %476 = load double, ptr %460, align 8, !tbaa !16
  %477 = call double @d_imag(ptr noundef nonnull %460) #7
  %478 = insertelement <2 x double> poison, double %476, i64 0
  %479 = insertelement <2 x double> %478, double %477, i64 1
  %480 = fcmp oge <2 x double> %479, zeroinitializer
  %481 = fneg <2 x double> %479
  %482 = select <2 x i1> %480, <2 x double> %479, <2 x double> %481
  %shift944 = shufflevector <2 x double> %482, <2 x double> poison, <2 x i32> <i32 1, i32 poison>
  %483 = fadd <2 x double> %482, %shift944
  %484 = extractelement <2 x double> %483, i64 0
  %485 = load double, ptr %gep763, align 8, !tbaa !16
  %486 = call double @d_imag(ptr noundef %gep765) #7
  %487 = insertelement <2 x double> poison, double %485, i64 0
  %488 = insertelement <2 x double> %487, double %486, i64 1
  %489 = fcmp oge <2 x double> %488, zeroinitializer
  %490 = fneg <2 x double> %488
  %491 = select <2 x i1> %489, <2 x double> %488, <2 x double> %490
  %shift945 = shufflevector <2 x double> %491, <2 x double> poison, <2 x i32> <i32 1, i32 poison>
  %492 = fadd <2 x double> %491, %shift945
  %493 = extractelement <2 x double> %492, i64 0
  %494 = getelementptr inbounds double, ptr %40, i64 %458
  %495 = load double, ptr %494, align 8, !tbaa !10
  %496 = call double @llvm.fmuladd.f64(double %484, double %493, double %495)
  store double %496, ptr %494, align 8, !tbaa !10
  %497 = add nuw nsw i64 %458, 1
  store i64 %497, ptr %28, align 8, !tbaa !5
  %.not713.not = icmp slt i64 %458, %454
  br i1 %.not713.not, label %457, label %._crit_edge761, !llvm.loop !35

._crit_edge761:                                   ; preds = %457, %.lr.ph769
  %498 = add nuw i64 %.8767, 1
  %exitcond891.not = icmp eq i64 %.8767, %316
  br i1 %exitcond891.not, label %.loopexit, label %.lr.ph769, !llvm.loop !36

.loopexit:                                        ; preds = %._crit_edge752, %._crit_edge761, %._crit_edge774, %._crit_edge789, %._crit_edge802, %._crit_edge817, %._crit_edge832, %._crit_edge851, %._crit_edge860, %74, %453, %407, %362, %318, %270, %226, %173, %125, %314
  %499 = load i64, ptr %2, align 8, !tbaa !5
  %.not728865 = icmp slt i64 %499, 1
  br i1 %.not728865, label %._crit_edge869.thread, label %.lr.ph868.preheader

._crit_edge869.thread:                            ; preds = %.loopexit
  store double 0.000000e+00, ptr %18, align 8, !tbaa !10
  store i64 1, ptr %28, align 8, !tbaa !5
  br label %._crit_edge874

.lr.ph868.preheader:                              ; preds = %.loopexit
  %500 = mul nsw i64 %57, %36
  %invariant.gep911 = getelementptr %struct.doublecomplex, ptr %38, i64 %500
  br label %.lr.ph868

.lr.ph868:                                        ; preds = %.lr.ph868.preheader, %.lr.ph868
  %501 = phi i64 [ %555, %.lr.ph868 ], [ 1, %.lr.ph868.preheader ]
  %502 = load double, ptr %5, align 8, !tbaa !16
  %503 = getelementptr inbounds %struct.doublecomplex, ptr %39, i64 %501
  %504 = load double, ptr %54, align 8, !tbaa !18
  %505 = fneg double %504
  %506 = load double, ptr %10, align 8, !tbaa !16
  %gep912 = getelementptr %struct.doublecomplex, ptr %invariant.gep911, i64 %501
  %507 = load double, ptr %55, align 8, !tbaa !18
  %508 = fneg double %507
  %509 = load <2 x double>, ptr %gep912, align 8, !tbaa !10
  %510 = insertelement <2 x double> poison, double %507, i64 0
  %511 = insertelement <2 x double> %510, double %508, i64 1
  %512 = fmul <2 x double> %509, %511
  %513 = shufflevector <2 x double> %512, <2 x double> poison, <2 x i32> <i32 1, i32 0>
  %514 = insertelement <2 x double> poison, double %506, i64 0
  %515 = shufflevector <2 x double> %514, <2 x double> poison, <2 x i32> zeroinitializer
  %516 = call <2 x double> @llvm.fmuladd.v2f64(<2 x double> %515, <2 x double> %509, <2 x double> %513)
  store <2 x double> %516, ptr %26, align 16, !tbaa !10
  %517 = load <2 x double>, ptr %503, align 8, !tbaa !10
  %518 = insertelement <2 x double> poison, double %504, i64 0
  %519 = insertelement <2 x double> %518, double %505, i64 1
  %520 = fmul <2 x double> %517, %519
  %521 = shufflevector <2 x double> %520, <2 x double> poison, <2 x i32> <i32 1, i32 0>
  %522 = insertelement <2 x double> poison, double %502, i64 0
  %523 = shufflevector <2 x double> %522, <2 x double> poison, <2 x i32> zeroinitializer
  %524 = call <2 x double> @llvm.fmuladd.v2f64(<2 x double> %523, <2 x double> %517, <2 x double> %521)
  %525 = fadd <2 x double> %524, %516
  store <2 x double> %525, ptr %25, align 16, !tbaa !10
  store <2 x double> %525, ptr %503, align 8, !tbaa !10
  %526 = load double, ptr %5, align 8, !tbaa !16
  %527 = call double @d_imag(ptr noundef nonnull %5) #7
  %528 = insertelement <2 x double> poison, double %526, i64 0
  %529 = insertelement <2 x double> %528, double %527, i64 1
  %530 = fcmp oge <2 x double> %529, zeroinitializer
  %531 = fneg <2 x double> %529
  %532 = select <2 x i1> %530, <2 x double> %529, <2 x double> %531
  %shift946 = shufflevector <2 x double> %532, <2 x double> poison, <2 x i32> <i32 1, i32 poison>
  %533 = fadd <2 x double> %532, %shift946
  %534 = extractelement <2 x double> %533, i64 0
  %535 = getelementptr inbounds double, ptr %40, i64 %501
  %536 = load double, ptr %535, align 8, !tbaa !10
  %537 = load double, ptr %10, align 8, !tbaa !16
  %538 = call double @d_imag(ptr noundef nonnull %10) #7
  %539 = load double, ptr %gep912, align 8, !tbaa !16
  %540 = call double @d_imag(ptr noundef nonnull %gep912) #7
  %541 = insertelement <2 x double> poison, double %537, i64 0
  %542 = insertelement <2 x double> %541, double %539, i64 1
  %543 = fcmp oge <2 x double> %542, zeroinitializer
  %544 = fneg <2 x double> %542
  %545 = select <2 x i1> %543, <2 x double> %542, <2 x double> %544
  %546 = insertelement <2 x double> poison, double %538, i64 0
  %547 = insertelement <2 x double> %546, double %540, i64 1
  %548 = fcmp oge <2 x double> %547, zeroinitializer
  %549 = fneg <2 x double> %547
  %550 = select <2 x i1> %548, <2 x double> %547, <2 x double> %549
  %551 = fadd <2 x double> %545, %550
  %shift947 = shufflevector <2 x double> %551, <2 x double> poison, <2 x i32> <i32 1, i32 poison>
  %552 = fmul <2 x double> %551, %shift947
  %553 = extractelement <2 x double> %552, i64 0
  %554 = call double @llvm.fmuladd.f64(double %534, double %536, double %553)
  store double %554, ptr %535, align 8, !tbaa !10
  %555 = add nuw nsw i64 %501, 1
  %.not728.not = icmp slt i64 %501, %499
  br i1 %.not728.not, label %.lr.ph868, label %._crit_edge869, !llvm.loop !37

._crit_edge869:                                   ; preds = %.lr.ph868
  %.pre = load i64, ptr %2, align 8, !tbaa !5
  store double 0.000000e+00, ptr %18, align 8, !tbaa !10
  store i64 1, ptr %28, align 8, !tbaa !5
  %.not730870 = icmp slt i64 %.pre, 1
  br i1 %.not730870, label %._crit_edge874, label %.lr.ph873.preheader

.lr.ph873.preheader:                              ; preds = %._crit_edge869
  %556 = mul nsw i64 %57, %41
  %invariant.gep913 = getelementptr %struct.doublecomplex, ptr %43, i64 %556
  br label %.lr.ph873

.lr.ph873:                                        ; preds = %.lr.ph873.preheader, %583
  %557 = phi i64 [ %584, %583 ], [ 1, %.lr.ph873.preheader ]
  %558 = getelementptr inbounds %struct.doublecomplex, ptr %39, i64 %557
  %gep914 = getelementptr %struct.doublecomplex, ptr %invariant.gep913, i64 %557
  %559 = load <2 x double>, ptr %558, align 8, !tbaa !10
  %560 = load <2 x double>, ptr %gep914, align 8, !tbaa !10
  %561 = fsub <2 x double> %559, %560
  store <2 x double> %561, ptr %25, align 16, !tbaa !10
  %562 = extractelement <2 x double> %561, i64 0
  %563 = fcmp oge double %562, 0.000000e+00
  %564 = fneg double %562
  %565 = select i1 %563, double %562, double %564
  %566 = call double @d_imag(ptr noundef nonnull %25) #7
  %567 = fcmp oge double %566, 0.000000e+00
  %568 = fneg double %566
  %569 = select i1 %567, double %566, double %568
  %570 = fadd double %565, %569
  %571 = load double, ptr %17, align 8, !tbaa !10
  %572 = fdiv double %570, %571
  %573 = getelementptr inbounds double, ptr %40, i64 %557
  %574 = load double, ptr %573, align 8, !tbaa !10
  %575 = fcmp une double %574, 0.000000e+00
  %576 = fdiv double %572, %574
  %.0 = select i1 %575, double %576, double %572
  %577 = load double, ptr %18, align 8, !tbaa !10
  %.inv = fcmp oge double %577, %.0
  %578 = select i1 %.inv, double %577, double %.0
  store double %578, ptr %18, align 8, !tbaa !10
  %579 = load double, ptr %17, align 8, !tbaa !10
  %580 = call double @sqrt(double noundef %579) #7
  %581 = fmul double %580, %578
  %582 = fcmp ult double %581, 1.000000e+00
  br i1 %582, label %583, label %586

583:                                              ; preds = %.lr.ph873
  %584 = add nuw nsw i64 %557, 1
  store i64 %584, ptr %28, align 8, !tbaa !5
  %.not730.not = icmp slt i64 %557, %.pre
  br i1 %.not730.not, label %.lr.ph873, label %._crit_edge874, !llvm.loop !38

._crit_edge874:                                   ; preds = %583, %._crit_edge869.thread, %._crit_edge869
  %585 = add nuw nsw i64 %57, 1
  store i64 %585, ptr %29, align 8, !tbaa !5
  %.not.not = icmp slt i64 %57, %49
  br i1 %.not.not, label %56, label %.loopexit745, !llvm.loop !39

586:                                              ; preds = %.lr.ph873
  store i64 1, ptr %19, align 8, !tbaa !5
  %587 = load i64, ptr %20, align 8, !tbaa !5
  store i64 %587, ptr getelementptr inbounds (i8, ptr @zmmch_.io___382, i64 8), align 8, !tbaa !40
  %588 = call i64 @s_wsfe(ptr noundef nonnull @zmmch_.io___382) #7
  %589 = call i64 @e_wsfe() #7
  %590 = load i64, ptr %2, align 8, !tbaa !5
  store i64 1, ptr %28, align 8, !tbaa !5
  %.not732878 = icmp slt i64 %590, 1
  br i1 %.not732878, label %._crit_edge881, label %.lr.ph880.preheader

.lr.ph880.preheader:                              ; preds = %586
  %591 = mul nsw i64 %57, %41
  %invariant.gep915 = getelementptr %struct.doublecomplex, ptr %43, i64 %591
  %invariant.gep917 = getelementptr %struct.doublecomplex, ptr %43, i64 %556
  br label %.lr.ph880

.lr.ph880:                                        ; preds = %.lr.ph880.preheader, %610
  %592 = load i64, ptr %21, align 8, !tbaa !5
  %.not733 = icmp eq i64 %592, 0
  %593 = load i64, ptr %20, align 8, !tbaa !5
  br i1 %.not733, label %602, label %594

594:                                              ; preds = %.lr.ph880
  store i64 %593, ptr getelementptr inbounds (i8, ptr @zmmch_.io___383, i64 8), align 8, !tbaa !40
  %595 = call i64 @s_wsfe(ptr noundef nonnull @zmmch_.io___383) #7
  %596 = call i64 @do_fio(ptr noundef nonnull @c__1, ptr noundef nonnull %28, i64 noundef 8) #7
  %597 = load i64, ptr %28, align 8, !tbaa !5
  %598 = getelementptr inbounds %struct.doublecomplex, ptr %39, i64 %597
  %599 = call i64 @do_fio(ptr noundef nonnull @c__2, ptr noundef nonnull %598, i64 noundef 8) #7
  %600 = load i64, ptr %28, align 8, !tbaa !5
  %gep916 = getelementptr %struct.doublecomplex, ptr %invariant.gep915, i64 %600
  %601 = call i64 @do_fio(ptr noundef nonnull @c__2, ptr noundef %gep916, i64 noundef 8) #7
  br label %610

602:                                              ; preds = %.lr.ph880
  store i64 %593, ptr getelementptr inbounds (i8, ptr @zmmch_.io___384, i64 8), align 8, !tbaa !40
  %603 = call i64 @s_wsfe(ptr noundef nonnull @zmmch_.io___384) #7
  %604 = call i64 @do_fio(ptr noundef nonnull @c__1, ptr noundef nonnull %28, i64 noundef 8) #7
  %605 = load i64, ptr %28, align 8, !tbaa !5
  %gep918 = getelementptr %struct.doublecomplex, ptr %invariant.gep917, i64 %605
  %606 = call i64 @do_fio(ptr noundef nonnull @c__2, ptr noundef %gep918, i64 noundef 8) #7
  %607 = load i64, ptr %28, align 8, !tbaa !5
  %608 = getelementptr inbounds %struct.doublecomplex, ptr %39, i64 %607
  %609 = call i64 @do_fio(ptr noundef nonnull @c__2, ptr noundef nonnull %608, i64 noundef 8) #7
  br label %610

610:                                              ; preds = %594, %602
  %611 = call i64 @e_wsfe() #7
  %612 = load i64, ptr %28, align 8, !tbaa !5
  %613 = add nsw i64 %612, 1
  store i64 %613, ptr %28, align 8, !tbaa !5
  %.not732.not = icmp slt i64 %612, %590
  br i1 %.not732.not, label %.lr.ph880, label %._crit_edge881, !llvm.loop !43

._crit_edge881:                                   ; preds = %610, %586
  %614 = load i64, ptr %3, align 8, !tbaa !5
  %615 = icmp sgt i64 %614, 1
  br i1 %615, label %616, label %.loopexit745

616:                                              ; preds = %._crit_edge881
  %617 = load i64, ptr %20, align 8, !tbaa !5
  store i64 %617, ptr getelementptr inbounds (i8, ptr @zmmch_.io___385, i64 8), align 8, !tbaa !40
  %618 = call i64 @s_wsfe(ptr noundef nonnull @zmmch_.io___385) #7
  %619 = call i64 @do_fio(ptr noundef nonnull @c__1, ptr noundef nonnull %29, i64 noundef 8) #7
  %620 = call i64 @e_wsfe() #7
  br label %.loopexit745

.loopexit745:                                     ; preds = %._crit_edge874, %24, %._crit_edge881, %616
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %29) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %28) #7
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %27) #7
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %26) #7
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %25) #7
  ret i32 0
}

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

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

declare void @d_cnjg(ptr noundef, ptr noundef) local_unnamed_addr #1

declare double @d_imag(ptr noundef) local_unnamed_addr #1

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

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

; Function Attrs: nocallback nofree nosync nounwind speculatable willreturn memory(none)
declare <2 x double> @llvm.fmuladd.v2f64(<2 x double>, <2 x double>, <2 x double>) #6

attributes #0 = { mustprogress nocallback nofree nosync nounwind willreturn memory(argmem: readwrite) }
attributes #1 = { "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }
attributes #2 = { 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 #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 = { nocallback nofree nosync nounwind speculatable willreturn memory(none) }
attributes #7 = { 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 = !{!7, !7, i64 0}
!10 = !{!11, !11, i64 0}
!11 = !{!"double", !7, i64 0}
!12 = distinct !{!12, !13}
!13 = !{!"llvm.loop.mustprogress"}
!14 = distinct !{!14, !15}
!15 = !{!"llvm.loop.unroll.disable"}
!16 = !{!17, !11, i64 0}
!17 = !{!"", !11, i64 0, !11, i64 8}
!18 = !{!17, !11, i64 8}
!19 = distinct !{!19, !13}
!20 = distinct !{!20, !13}
!21 = distinct !{!21, !13}
!22 = distinct !{!22, !13}
!23 = distinct !{!23, !13}
!24 = distinct !{!24, !13}
!25 = distinct !{!25, !13}
!26 = distinct !{!26, !13}
!27 = distinct !{!27, !13}
!28 = distinct !{!28, !13}
!29 = distinct !{!29, !13}
!30 = distinct !{!30, !13}
!31 = distinct !{!31, !13}
!32 = distinct !{!32, !13}
!33 = distinct !{!33, !13}
!34 = distinct !{!34, !13}
!35 = distinct !{!35, !13}
!36 = distinct !{!36, !13}
!37 = distinct !{!37, !13}
!38 = distinct !{!38, !13}
!39 = distinct !{!39, !13}
!40 = !{!41, !6, i64 8}
!41 = !{!"", !6, i64 0, !6, i64 8, !6, i64 16, !42, i64 24, !6, i64 32}
!42 = !{!"any pointer", !7, i64 0}
!43 = distinct !{!43, !13}


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