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

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

%struct.doublecomplex = type { double, double }

@.str = external hidden unnamed_addr constant [2 x i8], align 1
@c__1 = external hidden global i32, align 4

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

90:                                               ; preds = %8
  %91 = load ptr, ptr %13, align 8, !tbaa !5
  %92 = getelementptr inbounds %struct.doublecomplex, ptr %91, i32 0, i32 1
  %93 = load double, ptr %92, align 8, !tbaa !14
  %94 = fcmp oeq double %93, 0.000000e+00
  br i1 %94, label %95, label %96

95:                                               ; preds = %90
  store i32 1, ptr %71, align 4
  br label %19172

96:                                               ; preds = %90, %8
  %97 = load ptr, ptr %9, align 8, !tbaa !5
  %98 = call i32 @lsame_(ptr noundef %97, ptr noundef @.str)
  %99 = icmp ne i32 %98, 0
  br i1 %99, label %100, label %9785

100:                                              ; preds = %96
  %101 = load ptr, ptr %10, align 8, !tbaa !5
  %102 = load i32, ptr %101, align 4, !tbaa !9
  switch i32 %102, label %113 [
    i32 1, label %103
    i32 2, label %104
    i32 3, label %105
    i32 4, label %106
    i32 5, label %107
    i32 6, label %108
    i32 7, label %109
    i32 8, label %110
    i32 9, label %111
    i32 10, label %112
  ]

103:                                              ; preds = %100
  br label %127

104:                                              ; preds = %100
  br label %281

105:                                              ; preds = %100
  br label %637

106:                                              ; preds = %100
  br label %1168

107:                                              ; preds = %100
  br label %1874

108:                                              ; preds = %100
  br label %2755

109:                                              ; preds = %100
  br label %3811

110:                                              ; preds = %100
  br label %5042

111:                                              ; preds = %100
  br label %6448

112:                                              ; preds = %100
  br label %8029

113:                                              ; preds = %100
  %114 = load ptr, ptr %9, align 8, !tbaa !5
  %115 = load ptr, ptr %10, align 8, !tbaa !5
  %116 = load ptr, ptr %11, align 8, !tbaa !5
  %117 = load ptr, ptr %12, align 8, !tbaa !5
  %118 = getelementptr inbounds %struct.doublecomplex, ptr %117, i64 1
  %119 = load ptr, ptr %13, align 8, !tbaa !5
  %120 = load ptr, ptr %14, align 8, !tbaa !5
  %121 = load i32, ptr %18, align 4, !tbaa !9
  %122 = sext i32 %121 to i64
  %123 = getelementptr inbounds %struct.doublecomplex, ptr %120, i64 %122
  %124 = load ptr, ptr %15, align 8, !tbaa !5
  %125 = load ptr, ptr %16, align 8, !tbaa !5
  %126 = getelementptr inbounds %struct.doublecomplex, ptr %125, i64 1
  call void @zlarf_(ptr noundef %114, ptr noundef %115, ptr noundef %116, ptr noundef %118, ptr noundef @c__1, ptr noundef %119, ptr noundef %123, ptr noundef %124, ptr noundef %126)
  br label %19171

127:                                              ; preds = %103
  %128 = load ptr, ptr %13, align 8, !tbaa !5
  %129 = getelementptr inbounds %struct.doublecomplex, ptr %128, i32 0, i32 0
  %130 = load double, ptr %129, align 8, !tbaa !11
  %131 = load ptr, ptr %12, align 8, !tbaa !5
  %132 = getelementptr inbounds %struct.doublecomplex, ptr %131, i64 1
  %133 = getelementptr inbounds %struct.doublecomplex, ptr %132, i32 0, i32 0
  %134 = load double, ptr %133, align 8, !tbaa !11
  %135 = load ptr, ptr %13, align 8, !tbaa !5
  %136 = getelementptr inbounds %struct.doublecomplex, ptr %135, i32 0, i32 1
  %137 = load double, ptr %136, align 8, !tbaa !14
  %138 = load ptr, ptr %12, align 8, !tbaa !5
  %139 = getelementptr inbounds %struct.doublecomplex, ptr %138, i64 1
  %140 = getelementptr inbounds %struct.doublecomplex, ptr %139, i32 0, i32 1
  %141 = load double, ptr %140, align 8, !tbaa !14
  %142 = fmul double %137, %141
  %143 = fneg double %142
  %144 = call double @llvm.fmuladd.f64(double %130, double %134, double %143)
  %145 = getelementptr inbounds %struct.doublecomplex, ptr %32, i32 0, i32 0
  store double %144, ptr %145, align 8, !tbaa !11
  %146 = load ptr, ptr %13, align 8, !tbaa !5
  %147 = getelementptr inbounds %struct.doublecomplex, ptr %146, i32 0, i32 0
  %148 = load double, ptr %147, align 8, !tbaa !11
  %149 = load ptr, ptr %12, align 8, !tbaa !5
  %150 = getelementptr inbounds %struct.doublecomplex, ptr %149, i64 1
  %151 = getelementptr inbounds %struct.doublecomplex, ptr %150, i32 0, i32 1
  %152 = load double, ptr %151, align 8, !tbaa !14
  %153 = load ptr, ptr %13, align 8, !tbaa !5
  %154 = getelementptr inbounds %struct.doublecomplex, ptr %153, i32 0, i32 1
  %155 = load double, ptr %154, align 8, !tbaa !14
  %156 = load ptr, ptr %12, align 8, !tbaa !5
  %157 = getelementptr inbounds %struct.doublecomplex, ptr %156, i64 1
  %158 = getelementptr inbounds %struct.doublecomplex, ptr %157, i32 0, i32 0
  %159 = load double, ptr %158, align 8, !tbaa !11
  %160 = fmul double %155, %159
  %161 = call double @llvm.fmuladd.f64(double %148, double %152, double %160)
  %162 = getelementptr inbounds %struct.doublecomplex, ptr %32, i32 0, i32 1
  store double %161, ptr %162, align 8, !tbaa !14
  %163 = load ptr, ptr %12, align 8, !tbaa !5
  %164 = getelementptr inbounds %struct.doublecomplex, ptr %163, i64 1
  %165 = call { double, double } @Cd(ptr noundef %164)
  %166 = extractvalue { double, double } %165, 0
  %167 = extractvalue { double, double } %165, 1
  %168 = fneg double %167
  %169 = call ptr @_pCd(ptr noundef %33)
  %170 = getelementptr inbounds { double, double }, ptr %169, i32 0, i32 0
  %171 = getelementptr inbounds { double, double }, ptr %169, i32 0, i32 1
  store double %166, ptr %170, align 8
  store double %168, ptr %171, align 8
  %172 = getelementptr inbounds %struct.doublecomplex, ptr %32, i32 0, i32 0
  %173 = load double, ptr %172, align 8, !tbaa !11
  %174 = getelementptr inbounds %struct.doublecomplex, ptr %33, i32 0, i32 0
  %175 = load double, ptr %174, align 8, !tbaa !11
  %176 = getelementptr inbounds %struct.doublecomplex, ptr %32, i32 0, i32 1
  %177 = load double, ptr %176, align 8, !tbaa !14
  %178 = getelementptr inbounds %struct.doublecomplex, ptr %33, i32 0, i32 1
  %179 = load double, ptr %178, align 8, !tbaa !14
  %180 = fmul double %177, %179
  %181 = fneg double %180
  %182 = call double @llvm.fmuladd.f64(double %173, double %175, double %181)
  %183 = getelementptr inbounds %struct.doublecomplex, ptr %31, i32 0, i32 0
  store double %182, ptr %183, align 8, !tbaa !11
  %184 = getelementptr inbounds %struct.doublecomplex, ptr %32, i32 0, i32 0
  %185 = load double, ptr %184, align 8, !tbaa !11
  %186 = getelementptr inbounds %struct.doublecomplex, ptr %33, i32 0, i32 1
  %187 = load double, ptr %186, align 8, !tbaa !14
  %188 = getelementptr inbounds %struct.doublecomplex, ptr %32, i32 0, i32 1
  %189 = load double, ptr %188, align 8, !tbaa !14
  %190 = getelementptr inbounds %struct.doublecomplex, ptr %33, i32 0, i32 0
  %191 = load double, ptr %190, align 8, !tbaa !11
  %192 = fmul double %189, %191
  %193 = call double @llvm.fmuladd.f64(double %185, double %187, double %192)
  %194 = getelementptr inbounds %struct.doublecomplex, ptr %31, i32 0, i32 1
  store double %193, ptr %194, align 8, !tbaa !14
  %195 = getelementptr inbounds %struct.doublecomplex, ptr %31, i32 0, i32 0
  %196 = load double, ptr %195, align 8, !tbaa !11
  %197 = fsub double 1.000000e+00, %196
  %198 = getelementptr inbounds %struct.doublecomplex, ptr %30, i32 0, i32 0
  store double %197, ptr %198, align 8, !tbaa !11
  %199 = getelementptr inbounds %struct.doublecomplex, ptr %31, i32 0, i32 1
  %200 = load double, ptr %199, align 8, !tbaa !14
  %201 = fsub double 0.000000e+00, %200
  %202 = getelementptr inbounds %struct.doublecomplex, ptr %30, i32 0, i32 1
  store double %201, ptr %202, align 8, !tbaa !14
  %203 = getelementptr inbounds %struct.doublecomplex, ptr %30, i32 0, i32 0
  %204 = load double, ptr %203, align 8, !tbaa !11
  %205 = getelementptr inbounds %struct.doublecomplex, ptr %50, i32 0, i32 0
  store double %204, ptr %205, align 8, !tbaa !11
  %206 = getelementptr inbounds %struct.doublecomplex, ptr %30, i32 0, i32 1
  %207 = load double, ptr %206, align 8, !tbaa !14
  %208 = getelementptr inbounds %struct.doublecomplex, ptr %50, i32 0, i32 1
  store double %207, ptr %208, align 8, !tbaa !14
  %209 = load ptr, ptr %11, align 8, !tbaa !5
  %210 = load i32, ptr %209, align 4, !tbaa !9
  store i32 %210, ptr %19, align 4, !tbaa !9
  store i32 1, ptr %49, align 4, !tbaa !9
  br label %211

211:                                              ; preds = %277, %127
  %212 = load i32, ptr %49, align 4, !tbaa !9
  %213 = load i32, ptr %19, align 4, !tbaa !9
  %214 = icmp sle i32 %212, %213
  br i1 %214, label %215, label %280

215:                                              ; preds = %211
  %216 = load i32, ptr %49, align 4, !tbaa !9
  %217 = load i32, ptr %17, align 4, !tbaa !9
  %218 = mul nsw i32 %216, %217
  %219 = add nsw i32 %218, 1
  store i32 %219, ptr %20, align 4, !tbaa !9
  %220 = load i32, ptr %49, align 4, !tbaa !9
  %221 = load i32, ptr %17, align 4, !tbaa !9
  %222 = mul nsw i32 %220, %221
  %223 = add nsw i32 %222, 1
  store i32 %223, ptr %21, align 4, !tbaa !9
  %224 = getelementptr inbounds %struct.doublecomplex, ptr %50, i32 0, i32 0
  %225 = load double, ptr %224, align 8, !tbaa !11
  %226 = load ptr, ptr %14, align 8, !tbaa !5
  %227 = load i32, ptr %21, align 4, !tbaa !9
  %228 = sext i32 %227 to i64
  %229 = getelementptr inbounds %struct.doublecomplex, ptr %226, i64 %228
  %230 = getelementptr inbounds %struct.doublecomplex, ptr %229, i32 0, i32 0
  %231 = load double, ptr %230, align 8, !tbaa !11
  %232 = getelementptr inbounds %struct.doublecomplex, ptr %50, i32 0, i32 1
  %233 = load double, ptr %232, align 8, !tbaa !14
  %234 = load ptr, ptr %14, align 8, !tbaa !5
  %235 = load i32, ptr %21, align 4, !tbaa !9
  %236 = sext i32 %235 to i64
  %237 = getelementptr inbounds %struct.doublecomplex, ptr %234, i64 %236
  %238 = getelementptr inbounds %struct.doublecomplex, ptr %237, i32 0, i32 1
  %239 = load double, ptr %238, align 8, !tbaa !14
  %240 = fmul double %233, %239
  %241 = fneg double %240
  %242 = call double @llvm.fmuladd.f64(double %225, double %231, double %241)
  %243 = getelementptr inbounds %struct.doublecomplex, ptr %30, i32 0, i32 0
  store double %242, ptr %243, align 8, !tbaa !11
  %244 = getelementptr inbounds %struct.doublecomplex, ptr %50, i32 0, i32 0
  %245 = load double, ptr %244, align 8, !tbaa !11
  %246 = load ptr, ptr %14, align 8, !tbaa !5
  %247 = load i32, ptr %21, align 4, !tbaa !9
  %248 = sext i32 %247 to i64
  %249 = getelementptr inbounds %struct.doublecomplex, ptr %246, i64 %248
  %250 = getelementptr inbounds %struct.doublecomplex, ptr %249, i32 0, i32 1
  %251 = load double, ptr %250, align 8, !tbaa !14
  %252 = getelementptr inbounds %struct.doublecomplex, ptr %50, i32 0, i32 1
  %253 = load double, ptr %252, align 8, !tbaa !14
  %254 = load ptr, ptr %14, align 8, !tbaa !5
  %255 = load i32, ptr %21, align 4, !tbaa !9
  %256 = sext i32 %255 to i64
  %257 = getelementptr inbounds %struct.doublecomplex, ptr %254, i64 %256
  %258 = getelementptr inbounds %struct.doublecomplex, ptr %257, i32 0, i32 0
  %259 = load double, ptr %258, align 8, !tbaa !11
  %260 = fmul double %253, %259
  %261 = call double @llvm.fmuladd.f64(double %245, double %251, double %260)
  %262 = getelementptr inbounds %struct.doublecomplex, ptr %30, i32 0, i32 1
  store double %261, ptr %262, align 8, !tbaa !14
  %263 = getelementptr inbounds %struct.doublecomplex, ptr %30, i32 0, i32 0
  %264 = load double, ptr %263, align 8, !tbaa !11
  %265 = load ptr, ptr %14, align 8, !tbaa !5
  %266 = load i32, ptr %20, align 4, !tbaa !9
  %267 = sext i32 %266 to i64
  %268 = getelementptr inbounds %struct.doublecomplex, ptr %265, i64 %267
  %269 = getelementptr inbounds %struct.doublecomplex, ptr %268, i32 0, i32 0
  store double %264, ptr %269, align 8, !tbaa !11
  %270 = getelementptr inbounds %struct.doublecomplex, ptr %30, i32 0, i32 1
  %271 = load double, ptr %270, align 8, !tbaa !14
  %272 = load ptr, ptr %14, align 8, !tbaa !5
  %273 = load i32, ptr %20, align 4, !tbaa !9
  %274 = sext i32 %273 to i64
  %275 = getelementptr inbounds %struct.doublecomplex, ptr %272, i64 %274
  %276 = getelementptr inbounds %struct.doublecomplex, ptr %275, i32 0, i32 1
  store double %271, ptr %276, align 8, !tbaa !14
  br label %277

277:                                              ; preds = %215
  %278 = load i32, ptr %49, align 4, !tbaa !9
  %279 = add nsw i32 %278, 1
  store i32 %279, ptr %49, align 4, !tbaa !9
  br label %211, !llvm.loop !15

280:                                              ; preds = %211
  br label %19171

281:                                              ; preds = %104
  %282 = load ptr, ptr %12, align 8, !tbaa !5
  %283 = getelementptr inbounds %struct.doublecomplex, ptr %282, i64 1
  %284 = call { double, double } @Cd(ptr noundef %283)
  %285 = extractvalue { double, double } %284, 0
  %286 = extractvalue { double, double } %284, 1
  %287 = fneg double %286
  %288 = call ptr @_pCd(ptr noundef %30)
  %289 = getelementptr inbounds { double, double }, ptr %288, i32 0, i32 0
  %290 = getelementptr inbounds { double, double }, ptr %288, i32 0, i32 1
  store double %285, ptr %289, align 8
  store double %287, ptr %290, align 8
  %291 = getelementptr inbounds %struct.doublecomplex, ptr %30, i32 0, i32 0
  %292 = load double, ptr %291, align 8, !tbaa !11
  %293 = getelementptr inbounds %struct.doublecomplex, ptr %59, i32 0, i32 0
  store double %292, ptr %293, align 8, !tbaa !11
  %294 = getelementptr inbounds %struct.doublecomplex, ptr %30, i32 0, i32 1
  %295 = load double, ptr %294, align 8, !tbaa !14
  %296 = getelementptr inbounds %struct.doublecomplex, ptr %59, i32 0, i32 1
  store double %295, ptr %296, align 8, !tbaa !14
  %297 = call { double, double } @Cd(ptr noundef %59)
  %298 = extractvalue { double, double } %297, 0
  %299 = extractvalue { double, double } %297, 1
  %300 = fneg double %299
  %301 = call ptr @_pCd(ptr noundef %31)
  %302 = getelementptr inbounds { double, double }, ptr %301, i32 0, i32 0
  %303 = getelementptr inbounds { double, double }, ptr %301, i32 0, i32 1
  store double %298, ptr %302, align 8
  store double %300, ptr %303, align 8
  %304 = load ptr, ptr %13, align 8, !tbaa !5
  %305 = getelementptr inbounds %struct.doublecomplex, ptr %304, i32 0, i32 0
  %306 = load double, ptr %305, align 8, !tbaa !11
  %307 = getelementptr inbounds %struct.doublecomplex, ptr %31, i32 0, i32 0
  %308 = load double, ptr %307, align 8, !tbaa !11
  %309 = load ptr, ptr %13, align 8, !tbaa !5
  %310 = getelementptr inbounds %struct.doublecomplex, ptr %309, i32 0, i32 1
  %311 = load double, ptr %310, align 8, !tbaa !14
  %312 = getelementptr inbounds %struct.doublecomplex, ptr %31, i32 0, i32 1
  %313 = load double, ptr %312, align 8, !tbaa !14
  %314 = fmul double %311, %313
  %315 = fneg double %314
  %316 = call double @llvm.fmuladd.f64(double %306, double %308, double %315)
  %317 = getelementptr inbounds %struct.doublecomplex, ptr %30, i32 0, i32 0
  store double %316, ptr %317, align 8, !tbaa !11
  %318 = load ptr, ptr %13, align 8, !tbaa !5
  %319 = getelementptr inbounds %struct.doublecomplex, ptr %318, i32 0, i32 0
  %320 = load double, ptr %319, align 8, !tbaa !11
  %321 = getelementptr inbounds %struct.doublecomplex, ptr %31, i32 0, i32 1
  %322 = load double, ptr %321, align 8, !tbaa !14
  %323 = load ptr, ptr %13, align 8, !tbaa !5
  %324 = getelementptr inbounds %struct.doublecomplex, ptr %323, i32 0, i32 1
  %325 = load double, ptr %324, align 8, !tbaa !14
  %326 = getelementptr inbounds %struct.doublecomplex, ptr %31, i32 0, i32 0
  %327 = load double, ptr %326, align 8, !tbaa !11
  %328 = fmul double %325, %327
  %329 = call double @llvm.fmuladd.f64(double %320, double %322, double %328)
  %330 = getelementptr inbounds %struct.doublecomplex, ptr %30, i32 0, i32 1
  store double %329, ptr %330, align 8, !tbaa !14
  %331 = getelementptr inbounds %struct.doublecomplex, ptr %30, i32 0, i32 0
  %332 = load double, ptr %331, align 8, !tbaa !11
  %333 = getelementptr inbounds %struct.doublecomplex, ptr %50, i32 0, i32 0
  store double %332, ptr %333, align 8, !tbaa !11
  %334 = getelementptr inbounds %struct.doublecomplex, ptr %30, i32 0, i32 1
  %335 = load double, ptr %334, align 8, !tbaa !14
  %336 = getelementptr inbounds %struct.doublecomplex, ptr %50, i32 0, i32 1
  store double %335, ptr %336, align 8, !tbaa !14
  %337 = load ptr, ptr %12, align 8, !tbaa !5
  %338 = getelementptr inbounds %struct.doublecomplex, ptr %337, i64 2
  %339 = call { double, double } @Cd(ptr noundef %338)
  %340 = extractvalue { double, double } %339, 0
  %341 = extractvalue { double, double } %339, 1
  %342 = fneg double %341
  %343 = call ptr @_pCd(ptr noundef %30)
  %344 = getelementptr inbounds { double, double }, ptr %343, i32 0, i32 0
  %345 = getelementptr inbounds { double, double }, ptr %343, i32 0, i32 1
  store double %340, ptr %344, align 8
  store double %342, ptr %345, align 8
  %346 = getelementptr inbounds %struct.doublecomplex, ptr %30, i32 0, i32 0
  %347 = load double, ptr %346, align 8, !tbaa !11
  %348 = getelementptr inbounds %struct.doublecomplex, ptr %60, i32 0, i32 0
  store double %347, ptr %348, align 8, !tbaa !11
  %349 = getelementptr inbounds %struct.doublecomplex, ptr %30, i32 0, i32 1
  %350 = load double, ptr %349, align 8, !tbaa !14
  %351 = getelementptr inbounds %struct.doublecomplex, ptr %60, i32 0, i32 1
  store double %350, ptr %351, align 8, !tbaa !14
  %352 = call { double, double } @Cd(ptr noundef %60)
  %353 = extractvalue { double, double } %352, 0
  %354 = extractvalue { double, double } %352, 1
  %355 = fneg double %354
  %356 = call ptr @_pCd(ptr noundef %31)
  %357 = getelementptr inbounds { double, double }, ptr %356, i32 0, i32 0
  %358 = getelementptr inbounds { double, double }, ptr %356, i32 0, i32 1
  store double %353, ptr %357, align 8
  store double %355, ptr %358, align 8
  %359 = load ptr, ptr %13, align 8, !tbaa !5
  %360 = getelementptr inbounds %struct.doublecomplex, ptr %359, i32 0, i32 0
  %361 = load double, ptr %360, align 8, !tbaa !11
  %362 = getelementptr inbounds %struct.doublecomplex, ptr %31, i32 0, i32 0
  %363 = load double, ptr %362, align 8, !tbaa !11
  %364 = load ptr, ptr %13, align 8, !tbaa !5
  %365 = getelementptr inbounds %struct.doublecomplex, ptr %364, i32 0, i32 1
  %366 = load double, ptr %365, align 8, !tbaa !14
  %367 = getelementptr inbounds %struct.doublecomplex, ptr %31, i32 0, i32 1
  %368 = load double, ptr %367, align 8, !tbaa !14
  %369 = fmul double %366, %368
  %370 = fneg double %369
  %371 = call double @llvm.fmuladd.f64(double %361, double %363, double %370)
  %372 = getelementptr inbounds %struct.doublecomplex, ptr %30, i32 0, i32 0
  store double %371, ptr %372, align 8, !tbaa !11
  %373 = load ptr, ptr %13, align 8, !tbaa !5
  %374 = getelementptr inbounds %struct.doublecomplex, ptr %373, i32 0, i32 0
  %375 = load double, ptr %374, align 8, !tbaa !11
  %376 = getelementptr inbounds %struct.doublecomplex, ptr %31, i32 0, i32 1
  %377 = load double, ptr %376, align 8, !tbaa !14
  %378 = load ptr, ptr %13, align 8, !tbaa !5
  %379 = getelementptr inbounds %struct.doublecomplex, ptr %378, i32 0, i32 1
  %380 = load double, ptr %379, align 8, !tbaa !14
  %381 = getelementptr inbounds %struct.doublecomplex, ptr %31, i32 0, i32 0
  %382 = load double, ptr %381, align 8, !tbaa !11
  %383 = fmul double %380, %382
  %384 = call double @llvm.fmuladd.f64(double %375, double %377, double %383)
  %385 = getelementptr inbounds %struct.doublecomplex, ptr %30, i32 0, i32 1
  store double %384, ptr %385, align 8, !tbaa !14
  %386 = getelementptr inbounds %struct.doublecomplex, ptr %30, i32 0, i32 0
  %387 = load double, ptr %386, align 8, !tbaa !11
  %388 = getelementptr inbounds %struct.doublecomplex, ptr %51, i32 0, i32 0
  store double %387, ptr %388, align 8, !tbaa !11
  %389 = getelementptr inbounds %struct.doublecomplex, ptr %30, i32 0, i32 1
  %390 = load double, ptr %389, align 8, !tbaa !14
  %391 = getelementptr inbounds %struct.doublecomplex, ptr %51, i32 0, i32 1
  store double %390, ptr %391, align 8, !tbaa !14
  %392 = load ptr, ptr %11, align 8, !tbaa !5
  %393 = load i32, ptr %392, align 4, !tbaa !9
  store i32 %393, ptr %19, align 4, !tbaa !9
  store i32 1, ptr %49, align 4, !tbaa !9
  br label %394

394:                                              ; preds = %633, %281
  %395 = load i32, ptr %49, align 4, !tbaa !9
  %396 = load i32, ptr %19, align 4, !tbaa !9
  %397 = icmp sle i32 %395, %396
  br i1 %397, label %398, label %636

398:                                              ; preds = %394
  %399 = load i32, ptr %49, align 4, !tbaa !9
  %400 = load i32, ptr %17, align 4, !tbaa !9
  %401 = mul nsw i32 %399, %400
  %402 = add nsw i32 %401, 1
  store i32 %402, ptr %20, align 4, !tbaa !9
  %403 = getelementptr inbounds %struct.doublecomplex, ptr %59, i32 0, i32 0
  %404 = load double, ptr %403, align 8, !tbaa !11
  %405 = load ptr, ptr %14, align 8, !tbaa !5
  %406 = load i32, ptr %20, align 4, !tbaa !9
  %407 = sext i32 %406 to i64
  %408 = getelementptr inbounds %struct.doublecomplex, ptr %405, i64 %407
  %409 = getelementptr inbounds %struct.doublecomplex, ptr %408, i32 0, i32 0
  %410 = load double, ptr %409, align 8, !tbaa !11
  %411 = getelementptr inbounds %struct.doublecomplex, ptr %59, i32 0, i32 1
  %412 = load double, ptr %411, align 8, !tbaa !14
  %413 = load ptr, ptr %14, align 8, !tbaa !5
  %414 = load i32, ptr %20, align 4, !tbaa !9
  %415 = sext i32 %414 to i64
  %416 = getelementptr inbounds %struct.doublecomplex, ptr %413, i64 %415
  %417 = getelementptr inbounds %struct.doublecomplex, ptr %416, i32 0, i32 1
  %418 = load double, ptr %417, align 8, !tbaa !14
  %419 = fmul double %412, %418
  %420 = fneg double %419
  %421 = call double @llvm.fmuladd.f64(double %404, double %410, double %420)
  %422 = getelementptr inbounds %struct.doublecomplex, ptr %31, i32 0, i32 0
  store double %421, ptr %422, align 8, !tbaa !11
  %423 = getelementptr inbounds %struct.doublecomplex, ptr %59, i32 0, i32 0
  %424 = load double, ptr %423, align 8, !tbaa !11
  %425 = load ptr, ptr %14, align 8, !tbaa !5
  %426 = load i32, ptr %20, align 4, !tbaa !9
  %427 = sext i32 %426 to i64
  %428 = getelementptr inbounds %struct.doublecomplex, ptr %425, i64 %427
  %429 = getelementptr inbounds %struct.doublecomplex, ptr %428, i32 0, i32 1
  %430 = load double, ptr %429, align 8, !tbaa !14
  %431 = getelementptr inbounds %struct.doublecomplex, ptr %59, i32 0, i32 1
  %432 = load double, ptr %431, align 8, !tbaa !14
  %433 = load ptr, ptr %14, align 8, !tbaa !5
  %434 = load i32, ptr %20, align 4, !tbaa !9
  %435 = sext i32 %434 to i64
  %436 = getelementptr inbounds %struct.doublecomplex, ptr %433, i64 %435
  %437 = getelementptr inbounds %struct.doublecomplex, ptr %436, i32 0, i32 0
  %438 = load double, ptr %437, align 8, !tbaa !11
  %439 = fmul double %432, %438
  %440 = call double @llvm.fmuladd.f64(double %424, double %430, double %439)
  %441 = getelementptr inbounds %struct.doublecomplex, ptr %31, i32 0, i32 1
  store double %440, ptr %441, align 8, !tbaa !14
  %442 = load i32, ptr %49, align 4, !tbaa !9
  %443 = load i32, ptr %17, align 4, !tbaa !9
  %444 = mul nsw i32 %442, %443
  %445 = add nsw i32 %444, 2
  store i32 %445, ptr %21, align 4, !tbaa !9
  %446 = getelementptr inbounds %struct.doublecomplex, ptr %60, i32 0, i32 0
  %447 = load double, ptr %446, align 8, !tbaa !11
  %448 = load ptr, ptr %14, align 8, !tbaa !5
  %449 = load i32, ptr %21, align 4, !tbaa !9
  %450 = sext i32 %449 to i64
  %451 = getelementptr inbounds %struct.doublecomplex, ptr %448, i64 %450
  %452 = getelementptr inbounds %struct.doublecomplex, ptr %451, i32 0, i32 0
  %453 = load double, ptr %452, align 8, !tbaa !11
  %454 = getelementptr inbounds %struct.doublecomplex, ptr %60, i32 0, i32 1
  %455 = load double, ptr %454, align 8, !tbaa !14
  %456 = load ptr, ptr %14, align 8, !tbaa !5
  %457 = load i32, ptr %21, align 4, !tbaa !9
  %458 = sext i32 %457 to i64
  %459 = getelementptr inbounds %struct.doublecomplex, ptr %456, i64 %458
  %460 = getelementptr inbounds %struct.doublecomplex, ptr %459, i32 0, i32 1
  %461 = load double, ptr %460, align 8, !tbaa !14
  %462 = fmul double %455, %461
  %463 = fneg double %462
  %464 = call double @llvm.fmuladd.f64(double %447, double %453, double %463)
  %465 = getelementptr inbounds %struct.doublecomplex, ptr %32, i32 0, i32 0
  store double %464, ptr %465, align 8, !tbaa !11
  %466 = getelementptr inbounds %struct.doublecomplex, ptr %60, i32 0, i32 0
  %467 = load double, ptr %466, align 8, !tbaa !11
  %468 = load ptr, ptr %14, align 8, !tbaa !5
  %469 = load i32, ptr %21, align 4, !tbaa !9
  %470 = sext i32 %469 to i64
  %471 = getelementptr inbounds %struct.doublecomplex, ptr %468, i64 %470
  %472 = getelementptr inbounds %struct.doublecomplex, ptr %471, i32 0, i32 1
  %473 = load double, ptr %472, align 8, !tbaa !14
  %474 = getelementptr inbounds %struct.doublecomplex, ptr %60, i32 0, i32 1
  %475 = load double, ptr %474, align 8, !tbaa !14
  %476 = load ptr, ptr %14, align 8, !tbaa !5
  %477 = load i32, ptr %21, align 4, !tbaa !9
  %478 = sext i32 %477 to i64
  %479 = getelementptr inbounds %struct.doublecomplex, ptr %476, i64 %478
  %480 = getelementptr inbounds %struct.doublecomplex, ptr %479, i32 0, i32 0
  %481 = load double, ptr %480, align 8, !tbaa !11
  %482 = fmul double %475, %481
  %483 = call double @llvm.fmuladd.f64(double %467, double %473, double %482)
  %484 = getelementptr inbounds %struct.doublecomplex, ptr %32, i32 0, i32 1
  store double %483, ptr %484, align 8, !tbaa !14
  %485 = getelementptr inbounds %struct.doublecomplex, ptr %31, i32 0, i32 0
  %486 = load double, ptr %485, align 8, !tbaa !11
  %487 = getelementptr inbounds %struct.doublecomplex, ptr %32, i32 0, i32 0
  %488 = load double, ptr %487, align 8, !tbaa !11
  %489 = fadd double %486, %488
  %490 = getelementptr inbounds %struct.doublecomplex, ptr %30, i32 0, i32 0
  store double %489, ptr %490, align 8, !tbaa !11
  %491 = getelementptr inbounds %struct.doublecomplex, ptr %31, i32 0, i32 1
  %492 = load double, ptr %491, align 8, !tbaa !14
  %493 = getelementptr inbounds %struct.doublecomplex, ptr %32, i32 0, i32 1
  %494 = load double, ptr %493, align 8, !tbaa !14
  %495 = fadd double %492, %494
  %496 = getelementptr inbounds %struct.doublecomplex, ptr %30, i32 0, i32 1
  store double %495, ptr %496, align 8, !tbaa !14
  %497 = getelementptr inbounds %struct.doublecomplex, ptr %30, i32 0, i32 0
  %498 = load double, ptr %497, align 8, !tbaa !11
  %499 = getelementptr inbounds %struct.doublecomplex, ptr %70, i32 0, i32 0
  store double %498, ptr %499, align 8, !tbaa !11
  %500 = getelementptr inbounds %struct.doublecomplex, ptr %30, i32 0, i32 1
  %501 = load double, ptr %500, align 8, !tbaa !14
  %502 = getelementptr inbounds %struct.doublecomplex, ptr %70, i32 0, i32 1
  store double %501, ptr %502, align 8, !tbaa !14
  %503 = load i32, ptr %49, align 4, !tbaa !9
  %504 = load i32, ptr %17, align 4, !tbaa !9
  %505 = mul nsw i32 %503, %504
  %506 = add nsw i32 %505, 1
  store i32 %506, ptr %20, align 4, !tbaa !9
  %507 = load i32, ptr %49, align 4, !tbaa !9
  %508 = load i32, ptr %17, align 4, !tbaa !9
  %509 = mul nsw i32 %507, %508
  %510 = add nsw i32 %509, 1
  store i32 %510, ptr %21, align 4, !tbaa !9
  %511 = getelementptr inbounds %struct.doublecomplex, ptr %70, i32 0, i32 0
  %512 = load double, ptr %511, align 8, !tbaa !11
  %513 = getelementptr inbounds %struct.doublecomplex, ptr %50, i32 0, i32 0
  %514 = load double, ptr %513, align 8, !tbaa !11
  %515 = getelementptr inbounds %struct.doublecomplex, ptr %70, i32 0, i32 1
  %516 = load double, ptr %515, align 8, !tbaa !14
  %517 = getelementptr inbounds %struct.doublecomplex, ptr %50, i32 0, i32 1
  %518 = load double, ptr %517, align 8, !tbaa !14
  %519 = fmul double %516, %518
  %520 = fneg double %519
  %521 = call double @llvm.fmuladd.f64(double %512, double %514, double %520)
  %522 = getelementptr inbounds %struct.doublecomplex, ptr %31, i32 0, i32 0
  store double %521, ptr %522, align 8, !tbaa !11
  %523 = getelementptr inbounds %struct.doublecomplex, ptr %70, i32 0, i32 0
  %524 = load double, ptr %523, align 8, !tbaa !11
  %525 = getelementptr inbounds %struct.doublecomplex, ptr %50, i32 0, i32 1
  %526 = load double, ptr %525, align 8, !tbaa !14
  %527 = getelementptr inbounds %struct.doublecomplex, ptr %70, i32 0, i32 1
  %528 = load double, ptr %527, align 8, !tbaa !14
  %529 = getelementptr inbounds %struct.doublecomplex, ptr %50, i32 0, i32 0
  %530 = load double, ptr %529, align 8, !tbaa !11
  %531 = fmul double %528, %530
  %532 = call double @llvm.fmuladd.f64(double %524, double %526, double %531)
  %533 = getelementptr inbounds %struct.doublecomplex, ptr %31, i32 0, i32 1
  store double %532, ptr %533, align 8, !tbaa !14
  %534 = load ptr, ptr %14, align 8, !tbaa !5
  %535 = load i32, ptr %21, align 4, !tbaa !9
  %536 = sext i32 %535 to i64
  %537 = getelementptr inbounds %struct.doublecomplex, ptr %534, i64 %536
  %538 = getelementptr inbounds %struct.doublecomplex, ptr %537, i32 0, i32 0
  %539 = load double, ptr %538, align 8, !tbaa !11
  %540 = getelementptr inbounds %struct.doublecomplex, ptr %31, i32 0, i32 0
  %541 = load double, ptr %540, align 8, !tbaa !11
  %542 = fsub double %539, %541
  %543 = getelementptr inbounds %struct.doublecomplex, ptr %30, i32 0, i32 0
  store double %542, ptr %543, align 8, !tbaa !11
  %544 = load ptr, ptr %14, align 8, !tbaa !5
  %545 = load i32, ptr %21, align 4, !tbaa !9
  %546 = sext i32 %545 to i64
  %547 = getelementptr inbounds %struct.doublecomplex, ptr %544, i64 %546
  %548 = getelementptr inbounds %struct.doublecomplex, ptr %547, i32 0, i32 1
  %549 = load double, ptr %548, align 8, !tbaa !14
  %550 = getelementptr inbounds %struct.doublecomplex, ptr %31, i32 0, i32 1
  %551 = load double, ptr %550, align 8, !tbaa !14
  %552 = fsub double %549, %551
  %553 = getelementptr inbounds %struct.doublecomplex, ptr %30, i32 0, i32 1
  store double %552, ptr %553, align 8, !tbaa !14
  %554 = getelementptr inbounds %struct.doublecomplex, ptr %30, i32 0, i32 0
  %555 = load double, ptr %554, align 8, !tbaa !11
  %556 = load ptr, ptr %14, align 8, !tbaa !5
  %557 = load i32, ptr %20, align 4, !tbaa !9
  %558 = sext i32 %557 to i64
  %559 = getelementptr inbounds %struct.doublecomplex, ptr %556, i64 %558
  %560 = getelementptr inbounds %struct.doublecomplex, ptr %559, i32 0, i32 0
  store double %555, ptr %560, align 8, !tbaa !11
  %561 = getelementptr inbounds %struct.doublecomplex, ptr %30, i32 0, i32 1
  %562 = load double, ptr %561, align 8, !tbaa !14
  %563 = load ptr, ptr %14, align 8, !tbaa !5
  %564 = load i32, ptr %20, align 4, !tbaa !9
  %565 = sext i32 %564 to i64
  %566 = getelementptr inbounds %struct.doublecomplex, ptr %563, i64 %565
  %567 = getelementptr inbounds %struct.doublecomplex, ptr %566, i32 0, i32 1
  store double %562, ptr %567, align 8, !tbaa !14
  %568 = load i32, ptr %49, align 4, !tbaa !9
  %569 = load i32, ptr %17, align 4, !tbaa !9
  %570 = mul nsw i32 %568, %569
  %571 = add nsw i32 %570, 2
  store i32 %571, ptr %20, align 4, !tbaa !9
  %572 = load i32, ptr %49, align 4, !tbaa !9
  %573 = load i32, ptr %17, align 4, !tbaa !9
  %574 = mul nsw i32 %572, %573
  %575 = add nsw i32 %574, 2
  store i32 %575, ptr %21, align 4, !tbaa !9
  %576 = getelementptr inbounds %struct.doublecomplex, ptr %70, i32 0, i32 0
  %577 = load double, ptr %576, align 8, !tbaa !11
  %578 = getelementptr inbounds %struct.doublecomplex, ptr %51, i32 0, i32 0
  %579 = load double, ptr %578, align 8, !tbaa !11
  %580 = getelementptr inbounds %struct.doublecomplex, ptr %70, i32 0, i32 1
  %581 = load double, ptr %580, align 8, !tbaa !14
  %582 = getelementptr inbounds %struct.doublecomplex, ptr %51, i32 0, i32 1
  %583 = load double, ptr %582, align 8, !tbaa !14
  %584 = fmul double %581, %583
  %585 = fneg double %584
  %586 = call double @llvm.fmuladd.f64(double %577, double %579, double %585)
  %587 = getelementptr inbounds %struct.doublecomplex, ptr %31, i32 0, i32 0
  store double %586, ptr %587, align 8, !tbaa !11
  %588 = getelementptr inbounds %struct.doublecomplex, ptr %70, i32 0, i32 0
  %589 = load double, ptr %588, align 8, !tbaa !11
  %590 = getelementptr inbounds %struct.doublecomplex, ptr %51, i32 0, i32 1
  %591 = load double, ptr %590, align 8, !tbaa !14
  %592 = getelementptr inbounds %struct.doublecomplex, ptr %70, i32 0, i32 1
  %593 = load double, ptr %592, align 8, !tbaa !14
  %594 = getelementptr inbounds %struct.doublecomplex, ptr %51, i32 0, i32 0
  %595 = load double, ptr %594, align 8, !tbaa !11
  %596 = fmul double %593, %595
  %597 = call double @llvm.fmuladd.f64(double %589, double %591, double %596)
  %598 = getelementptr inbounds %struct.doublecomplex, ptr %31, i32 0, i32 1
  store double %597, ptr %598, align 8, !tbaa !14
  %599 = load ptr, ptr %14, align 8, !tbaa !5
  %600 = load i32, ptr %21, align 4, !tbaa !9
  %601 = sext i32 %600 to i64
  %602 = getelementptr inbounds %struct.doublecomplex, ptr %599, i64 %601
  %603 = getelementptr inbounds %struct.doublecomplex, ptr %602, i32 0, i32 0
  %604 = load double, ptr %603, align 8, !tbaa !11
  %605 = getelementptr inbounds %struct.doublecomplex, ptr %31, i32 0, i32 0
  %606 = load double, ptr %605, align 8, !tbaa !11
  %607 = fsub double %604, %606
  %608 = getelementptr inbounds %struct.doublecomplex, ptr %30, i32 0, i32 0
  store double %607, ptr %608, align 8, !tbaa !11
  %609 = load ptr, ptr %14, align 8, !tbaa !5
  %610 = load i32, ptr %21, align 4, !tbaa !9
  %611 = sext i32 %610 to i64
  %612 = getelementptr inbounds %struct.doublecomplex, ptr %609, i64 %611
  %613 = getelementptr inbounds %struct.doublecomplex, ptr %612, i32 0, i32 1
  %614 = load double, ptr %613, align 8, !tbaa !14
  %615 = getelementptr inbounds %struct.doublecomplex, ptr %31, i32 0, i32 1
  %616 = load double, ptr %615, align 8, !tbaa !14
  %617 = fsub double %614, %616
  %618 = getelementptr inbounds %struct.doublecomplex, ptr %30, i32 0, i32 1
  store double %617, ptr %618, align 8, !tbaa !14
  %619 = getelementptr inbounds %struct.doublecomplex, ptr %30, i32 0, i32 0
  %620 = load double, ptr %619, align 8, !tbaa !11
  %621 = load ptr, ptr %14, align 8, !tbaa !5
  %622 = load i32, ptr %20, align 4, !tbaa !9
  %623 = sext i32 %622 to i64
  %624 = getelementptr inbounds %struct.doublecomplex, ptr %621, i64 %623
  %625 = getelementptr inbounds %struct.doublecomplex, ptr %624, i32 0, i32 0
  store double %620, ptr %625, align 8, !tbaa !11
  %626 = getelementptr inbounds %struct.doublecomplex, ptr %30, i32 0, i32 1
  %627 = load double, ptr %626, align 8, !tbaa !14
  %628 = load ptr, ptr %14, align 8, !tbaa !5
  %629 = load i32, ptr %20, align 4, !tbaa !9
  %630 = sext i32 %629 to i64
  %631 = getelementptr inbounds %struct.doublecomplex, ptr %628, i64 %630
  %632 = getelementptr inbounds %struct.doublecomplex, ptr %631, i32 0, i32 1
  store double %627, ptr %632, align 8, !tbaa !14
  br label %633

633:                                              ; preds = %398
  %634 = load i32, ptr %49, align 4, !tbaa !9
  %635 = add nsw i32 %634, 1
  store i32 %635, ptr %49, align 4, !tbaa !9
  br label %394, !llvm.loop !17

636:                                              ; preds = %394
  br label %19171

637:                                              ; preds = %105
  %638 = load ptr, ptr %12, align 8, !tbaa !5
  %639 = getelementptr inbounds %struct.doublecomplex, ptr %638, i64 1
  %640 = call { double, double } @Cd(ptr noundef %639)
  %641 = extractvalue { double, double } %640, 0
  %642 = extractvalue { double, double } %640, 1
  %643 = fneg double %642
  %644 = call ptr @_pCd(ptr noundef %30)
  %645 = getelementptr inbounds { double, double }, ptr %644, i32 0, i32 0
  %646 = getelementptr inbounds { double, double }, ptr %644, i32 0, i32 1
  store double %641, ptr %645, align 8
  store double %643, ptr %646, align 8
  %647 = getelementptr inbounds %struct.doublecomplex, ptr %30, i32 0, i32 0
  %648 = load double, ptr %647, align 8, !tbaa !11
  %649 = getelementptr inbounds %struct.doublecomplex, ptr %59, i32 0, i32 0
  store double %648, ptr %649, align 8, !tbaa !11
  %650 = getelementptr inbounds %struct.doublecomplex, ptr %30, i32 0, i32 1
  %651 = load double, ptr %650, align 8, !tbaa !14
  %652 = getelementptr inbounds %struct.doublecomplex, ptr %59, i32 0, i32 1
  store double %651, ptr %652, align 8, !tbaa !14
  %653 = call { double, double } @Cd(ptr noundef %59)
  %654 = extractvalue { double, double } %653, 0
  %655 = extractvalue { double, double } %653, 1
  %656 = fneg double %655
  %657 = call ptr @_pCd(ptr noundef %31)
  %658 = getelementptr inbounds { double, double }, ptr %657, i32 0, i32 0
  %659 = getelementptr inbounds { double, double }, ptr %657, i32 0, i32 1
  store double %654, ptr %658, align 8
  store double %656, ptr %659, align 8
  %660 = load ptr, ptr %13, align 8, !tbaa !5
  %661 = getelementptr inbounds %struct.doublecomplex, ptr %660, i32 0, i32 0
  %662 = load double, ptr %661, align 8, !tbaa !11
  %663 = getelementptr inbounds %struct.doublecomplex, ptr %31, i32 0, i32 0
  %664 = load double, ptr %663, align 8, !tbaa !11
  %665 = load ptr, ptr %13, align 8, !tbaa !5
  %666 = getelementptr inbounds %struct.doublecomplex, ptr %665, i32 0, i32 1
  %667 = load double, ptr %666, align 8, !tbaa !14
  %668 = getelementptr inbounds %struct.doublecomplex, ptr %31, i32 0, i32 1
  %669 = load double, ptr %668, align 8, !tbaa !14
  %670 = fmul double %667, %669
  %671 = fneg double %670
  %672 = call double @llvm.fmuladd.f64(double %662, double %664, double %671)
  %673 = getelementptr inbounds %struct.doublecomplex, ptr %30, i32 0, i32 0
  store double %672, ptr %673, align 8, !tbaa !11
  %674 = load ptr, ptr %13, align 8, !tbaa !5
  %675 = getelementptr inbounds %struct.doublecomplex, ptr %674, i32 0, i32 0
  %676 = load double, ptr %675, align 8, !tbaa !11
  %677 = getelementptr inbounds %struct.doublecomplex, ptr %31, i32 0, i32 1
  %678 = load double, ptr %677, align 8, !tbaa !14
  %679 = load ptr, ptr %13, align 8, !tbaa !5
  %680 = getelementptr inbounds %struct.doublecomplex, ptr %679, i32 0, i32 1
  %681 = load double, ptr %680, align 8, !tbaa !14
  %682 = getelementptr inbounds %struct.doublecomplex, ptr %31, i32 0, i32 0
  %683 = load double, ptr %682, align 8, !tbaa !11
  %684 = fmul double %681, %683
  %685 = call double @llvm.fmuladd.f64(double %676, double %678, double %684)
  %686 = getelementptr inbounds %struct.doublecomplex, ptr %30, i32 0, i32 1
  store double %685, ptr %686, align 8, !tbaa !14
  %687 = getelementptr inbounds %struct.doublecomplex, ptr %30, i32 0, i32 0
  %688 = load double, ptr %687, align 8, !tbaa !11
  %689 = getelementptr inbounds %struct.doublecomplex, ptr %50, i32 0, i32 0
  store double %688, ptr %689, align 8, !tbaa !11
  %690 = getelementptr inbounds %struct.doublecomplex, ptr %30, i32 0, i32 1
  %691 = load double, ptr %690, align 8, !tbaa !14
  %692 = getelementptr inbounds %struct.doublecomplex, ptr %50, i32 0, i32 1
  store double %691, ptr %692, align 8, !tbaa !14
  %693 = load ptr, ptr %12, align 8, !tbaa !5
  %694 = getelementptr inbounds %struct.doublecomplex, ptr %693, i64 2
  %695 = call { double, double } @Cd(ptr noundef %694)
  %696 = extractvalue { double, double } %695, 0
  %697 = extractvalue { double, double } %695, 1
  %698 = fneg double %697
  %699 = call ptr @_pCd(ptr noundef %30)
  %700 = getelementptr inbounds { double, double }, ptr %699, i32 0, i32 0
  %701 = getelementptr inbounds { double, double }, ptr %699, i32 0, i32 1
  store double %696, ptr %700, align 8
  store double %698, ptr %701, align 8
  %702 = getelementptr inbounds %struct.doublecomplex, ptr %30, i32 0, i32 0
  %703 = load double, ptr %702, align 8, !tbaa !11
  %704 = getelementptr inbounds %struct.doublecomplex, ptr %60, i32 0, i32 0
  store double %703, ptr %704, align 8, !tbaa !11
  %705 = getelementptr inbounds %struct.doublecomplex, ptr %30, i32 0, i32 1
  %706 = load double, ptr %705, align 8, !tbaa !14
  %707 = getelementptr inbounds %struct.doublecomplex, ptr %60, i32 0, i32 1
  store double %706, ptr %707, align 8, !tbaa !14
  %708 = call { double, double } @Cd(ptr noundef %60)
  %709 = extractvalue { double, double } %708, 0
  %710 = extractvalue { double, double } %708, 1
  %711 = fneg double %710
  %712 = call ptr @_pCd(ptr noundef %31)
  %713 = getelementptr inbounds { double, double }, ptr %712, i32 0, i32 0
  %714 = getelementptr inbounds { double, double }, ptr %712, i32 0, i32 1
  store double %709, ptr %713, align 8
  store double %711, ptr %714, align 8
  %715 = load ptr, ptr %13, align 8, !tbaa !5
  %716 = getelementptr inbounds %struct.doublecomplex, ptr %715, i32 0, i32 0
  %717 = load double, ptr %716, align 8, !tbaa !11
  %718 = getelementptr inbounds %struct.doublecomplex, ptr %31, i32 0, i32 0
  %719 = load double, ptr %718, align 8, !tbaa !11
  %720 = load ptr, ptr %13, align 8, !tbaa !5
  %721 = getelementptr inbounds %struct.doublecomplex, ptr %720, i32 0, i32 1
  %722 = load double, ptr %721, align 8, !tbaa !14
  %723 = getelementptr inbounds %struct.doublecomplex, ptr %31, i32 0, i32 1
  %724 = load double, ptr %723, align 8, !tbaa !14
  %725 = fmul double %722, %724
  %726 = fneg double %725
  %727 = call double @llvm.fmuladd.f64(double %717, double %719, double %726)
  %728 = getelementptr inbounds %struct.doublecomplex, ptr %30, i32 0, i32 0
  store double %727, ptr %728, align 8, !tbaa !11
  %729 = load ptr, ptr %13, align 8, !tbaa !5
  %730 = getelementptr inbounds %struct.doublecomplex, ptr %729, i32 0, i32 0
  %731 = load double, ptr %730, align 8, !tbaa !11
  %732 = getelementptr inbounds %struct.doublecomplex, ptr %31, i32 0, i32 1
  %733 = load double, ptr %732, align 8, !tbaa !14
  %734 = load ptr, ptr %13, align 8, !tbaa !5
  %735 = getelementptr inbounds %struct.doublecomplex, ptr %734, i32 0, i32 1
  %736 = load double, ptr %735, align 8, !tbaa !14
  %737 = getelementptr inbounds %struct.doublecomplex, ptr %31, i32 0, i32 0
  %738 = load double, ptr %737, align 8, !tbaa !11
  %739 = fmul double %736, %738
  %740 = call double @llvm.fmuladd.f64(double %731, double %733, double %739)
  %741 = getelementptr inbounds %struct.doublecomplex, ptr %30, i32 0, i32 1
  store double %740, ptr %741, align 8, !tbaa !14
  %742 = getelementptr inbounds %struct.doublecomplex, ptr %30, i32 0, i32 0
  %743 = load double, ptr %742, align 8, !tbaa !11
  %744 = getelementptr inbounds %struct.doublecomplex, ptr %51, i32 0, i32 0
  store double %743, ptr %744, align 8, !tbaa !11
  %745 = getelementptr inbounds %struct.doublecomplex, ptr %30, i32 0, i32 1
  %746 = load double, ptr %745, align 8, !tbaa !14
  %747 = getelementptr inbounds %struct.doublecomplex, ptr %51, i32 0, i32 1
  store double %746, ptr %747, align 8, !tbaa !14
  %748 = load ptr, ptr %12, align 8, !tbaa !5
  %749 = getelementptr inbounds %struct.doublecomplex, ptr %748, i64 3
  %750 = call { double, double } @Cd(ptr noundef %749)
  %751 = extractvalue { double, double } %750, 0
  %752 = extractvalue { double, double } %750, 1
  %753 = fneg double %752
  %754 = call ptr @_pCd(ptr noundef %30)
  %755 = getelementptr inbounds { double, double }, ptr %754, i32 0, i32 0
  %756 = getelementptr inbounds { double, double }, ptr %754, i32 0, i32 1
  store double %751, ptr %755, align 8
  store double %753, ptr %756, align 8
  %757 = getelementptr inbounds %struct.doublecomplex, ptr %30, i32 0, i32 0
  %758 = load double, ptr %757, align 8, !tbaa !11
  %759 = getelementptr inbounds %struct.doublecomplex, ptr %61, i32 0, i32 0
  store double %758, ptr %759, align 8, !tbaa !11
  %760 = getelementptr inbounds %struct.doublecomplex, ptr %30, i32 0, i32 1
  %761 = load double, ptr %760, align 8, !tbaa !14
  %762 = getelementptr inbounds %struct.doublecomplex, ptr %61, i32 0, i32 1
  store double %761, ptr %762, align 8, !tbaa !14
  %763 = call { double, double } @Cd(ptr noundef %61)
  %764 = extractvalue { double, double } %763, 0
  %765 = extractvalue { double, double } %763, 1
  %766 = fneg double %765
  %767 = call ptr @_pCd(ptr noundef %31)
  %768 = getelementptr inbounds { double, double }, ptr %767, i32 0, i32 0
  %769 = getelementptr inbounds { double, double }, ptr %767, i32 0, i32 1
  store double %764, ptr %768, align 8
  store double %766, ptr %769, align 8
  %770 = load ptr, ptr %13, align 8, !tbaa !5
  %771 = getelementptr inbounds %struct.doublecomplex, ptr %770, i32 0, i32 0
  %772 = load double, ptr %771, align 8, !tbaa !11
  %773 = getelementptr inbounds %struct.doublecomplex, ptr %31, i32 0, i32 0
  %774 = load double, ptr %773, align 8, !tbaa !11
  %775 = load ptr, ptr %13, align 8, !tbaa !5
  %776 = getelementptr inbounds %struct.doublecomplex, ptr %775, i32 0, i32 1
  %777 = load double, ptr %776, align 8, !tbaa !14
  %778 = getelementptr inbounds %struct.doublecomplex, ptr %31, i32 0, i32 1
  %779 = load double, ptr %778, align 8, !tbaa !14
  %780 = fmul double %777, %779
  %781 = fneg double %780
  %782 = call double @llvm.fmuladd.f64(double %772, double %774, double %781)
  %783 = getelementptr inbounds %struct.doublecomplex, ptr %30, i32 0, i32 0
  store double %782, ptr %783, align 8, !tbaa !11
  %784 = load ptr, ptr %13, align 8, !tbaa !5
  %785 = getelementptr inbounds %struct.doublecomplex, ptr %784, i32 0, i32 0
  %786 = load double, ptr %785, align 8, !tbaa !11
  %787 = getelementptr inbounds %struct.doublecomplex, ptr %31, i32 0, i32 1
  %788 = load double, ptr %787, align 8, !tbaa !14
  %789 = load ptr, ptr %13, align 8, !tbaa !5
  %790 = getelementptr inbounds %struct.doublecomplex, ptr %789, i32 0, i32 1
  %791 = load double, ptr %790, align 8, !tbaa !14
  %792 = getelementptr inbounds %struct.doublecomplex, ptr %31, i32 0, i32 0
  %793 = load double, ptr %792, align 8, !tbaa !11
  %794 = fmul double %791, %793
  %795 = call double @llvm.fmuladd.f64(double %786, double %788, double %794)
  %796 = getelementptr inbounds %struct.doublecomplex, ptr %30, i32 0, i32 1
  store double %795, ptr %796, align 8, !tbaa !14
  %797 = getelementptr inbounds %struct.doublecomplex, ptr %30, i32 0, i32 0
  %798 = load double, ptr %797, align 8, !tbaa !11
  %799 = getelementptr inbounds %struct.doublecomplex, ptr %52, i32 0, i32 0
  store double %798, ptr %799, align 8, !tbaa !11
  %800 = getelementptr inbounds %struct.doublecomplex, ptr %30, i32 0, i32 1
  %801 = load double, ptr %800, align 8, !tbaa !14
  %802 = getelementptr inbounds %struct.doublecomplex, ptr %52, i32 0, i32 1
  store double %801, ptr %802, align 8, !tbaa !14
  %803 = load ptr, ptr %11, align 8, !tbaa !5
  %804 = load i32, ptr %803, align 4, !tbaa !9
  store i32 %804, ptr %19, align 4, !tbaa !9
  store i32 1, ptr %49, align 4, !tbaa !9
  br label %805

805:                                              ; preds = %1164, %637
  %806 = load i32, ptr %49, align 4, !tbaa !9
  %807 = load i32, ptr %19, align 4, !tbaa !9
  %808 = icmp sle i32 %806, %807
  br i1 %808, label %809, label %1167

809:                                              ; preds = %805
  %810 = load i32, ptr %49, align 4, !tbaa !9
  %811 = load i32, ptr %17, align 4, !tbaa !9
  %812 = mul nsw i32 %810, %811
  %813 = add nsw i32 %812, 1
  store i32 %813, ptr %20, align 4, !tbaa !9
  %814 = getelementptr inbounds %struct.doublecomplex, ptr %59, i32 0, i32 0
  %815 = load double, ptr %814, align 8, !tbaa !11
  %816 = load ptr, ptr %14, align 8, !tbaa !5
  %817 = load i32, ptr %20, align 4, !tbaa !9
  %818 = sext i32 %817 to i64
  %819 = getelementptr inbounds %struct.doublecomplex, ptr %816, i64 %818
  %820 = getelementptr inbounds %struct.doublecomplex, ptr %819, i32 0, i32 0
  %821 = load double, ptr %820, align 8, !tbaa !11
  %822 = getelementptr inbounds %struct.doublecomplex, ptr %59, i32 0, i32 1
  %823 = load double, ptr %822, align 8, !tbaa !14
  %824 = load ptr, ptr %14, align 8, !tbaa !5
  %825 = load i32, ptr %20, align 4, !tbaa !9
  %826 = sext i32 %825 to i64
  %827 = getelementptr inbounds %struct.doublecomplex, ptr %824, i64 %826
  %828 = getelementptr inbounds %struct.doublecomplex, ptr %827, i32 0, i32 1
  %829 = load double, ptr %828, align 8, !tbaa !14
  %830 = fmul double %823, %829
  %831 = fneg double %830
  %832 = call double @llvm.fmuladd.f64(double %815, double %821, double %831)
  %833 = getelementptr inbounds %struct.doublecomplex, ptr %32, i32 0, i32 0
  store double %832, ptr %833, align 8, !tbaa !11
  %834 = getelementptr inbounds %struct.doublecomplex, ptr %59, i32 0, i32 0
  %835 = load double, ptr %834, align 8, !tbaa !11
  %836 = load ptr, ptr %14, align 8, !tbaa !5
  %837 = load i32, ptr %20, align 4, !tbaa !9
  %838 = sext i32 %837 to i64
  %839 = getelementptr inbounds %struct.doublecomplex, ptr %836, i64 %838
  %840 = getelementptr inbounds %struct.doublecomplex, ptr %839, i32 0, i32 1
  %841 = load double, ptr %840, align 8, !tbaa !14
  %842 = getelementptr inbounds %struct.doublecomplex, ptr %59, i32 0, i32 1
  %843 = load double, ptr %842, align 8, !tbaa !14
  %844 = load ptr, ptr %14, align 8, !tbaa !5
  %845 = load i32, ptr %20, align 4, !tbaa !9
  %846 = sext i32 %845 to i64
  %847 = getelementptr inbounds %struct.doublecomplex, ptr %844, i64 %846
  %848 = getelementptr inbounds %struct.doublecomplex, ptr %847, i32 0, i32 0
  %849 = load double, ptr %848, align 8, !tbaa !11
  %850 = fmul double %843, %849
  %851 = call double @llvm.fmuladd.f64(double %835, double %841, double %850)
  %852 = getelementptr inbounds %struct.doublecomplex, ptr %32, i32 0, i32 1
  store double %851, ptr %852, align 8, !tbaa !14
  %853 = load i32, ptr %49, align 4, !tbaa !9
  %854 = load i32, ptr %17, align 4, !tbaa !9
  %855 = mul nsw i32 %853, %854
  %856 = add nsw i32 %855, 2
  store i32 %856, ptr %21, align 4, !tbaa !9
  %857 = getelementptr inbounds %struct.doublecomplex, ptr %60, i32 0, i32 0
  %858 = load double, ptr %857, align 8, !tbaa !11
  %859 = load ptr, ptr %14, align 8, !tbaa !5
  %860 = load i32, ptr %21, align 4, !tbaa !9
  %861 = sext i32 %860 to i64
  %862 = getelementptr inbounds %struct.doublecomplex, ptr %859, i64 %861
  %863 = getelementptr inbounds %struct.doublecomplex, ptr %862, i32 0, i32 0
  %864 = load double, ptr %863, align 8, !tbaa !11
  %865 = getelementptr inbounds %struct.doublecomplex, ptr %60, i32 0, i32 1
  %866 = load double, ptr %865, align 8, !tbaa !14
  %867 = load ptr, ptr %14, align 8, !tbaa !5
  %868 = load i32, ptr %21, align 4, !tbaa !9
  %869 = sext i32 %868 to i64
  %870 = getelementptr inbounds %struct.doublecomplex, ptr %867, i64 %869
  %871 = getelementptr inbounds %struct.doublecomplex, ptr %870, i32 0, i32 1
  %872 = load double, ptr %871, align 8, !tbaa !14
  %873 = fmul double %866, %872
  %874 = fneg double %873
  %875 = call double @llvm.fmuladd.f64(double %858, double %864, double %874)
  %876 = getelementptr inbounds %struct.doublecomplex, ptr %33, i32 0, i32 0
  store double %875, ptr %876, align 8, !tbaa !11
  %877 = getelementptr inbounds %struct.doublecomplex, ptr %60, i32 0, i32 0
  %878 = load double, ptr %877, align 8, !tbaa !11
  %879 = load ptr, ptr %14, align 8, !tbaa !5
  %880 = load i32, ptr %21, align 4, !tbaa !9
  %881 = sext i32 %880 to i64
  %882 = getelementptr inbounds %struct.doublecomplex, ptr %879, i64 %881
  %883 = getelementptr inbounds %struct.doublecomplex, ptr %882, i32 0, i32 1
  %884 = load double, ptr %883, align 8, !tbaa !14
  %885 = getelementptr inbounds %struct.doublecomplex, ptr %60, i32 0, i32 1
  %886 = load double, ptr %885, align 8, !tbaa !14
  %887 = load ptr, ptr %14, align 8, !tbaa !5
  %888 = load i32, ptr %21, align 4, !tbaa !9
  %889 = sext i32 %888 to i64
  %890 = getelementptr inbounds %struct.doublecomplex, ptr %887, i64 %889
  %891 = getelementptr inbounds %struct.doublecomplex, ptr %890, i32 0, i32 0
  %892 = load double, ptr %891, align 8, !tbaa !11
  %893 = fmul double %886, %892
  %894 = call double @llvm.fmuladd.f64(double %878, double %884, double %893)
  %895 = getelementptr inbounds %struct.doublecomplex, ptr %33, i32 0, i32 1
  store double %894, ptr %895, align 8, !tbaa !14
  %896 = getelementptr inbounds %struct.doublecomplex, ptr %32, i32 0, i32 0
  %897 = load double, ptr %896, align 8, !tbaa !11
  %898 = getelementptr inbounds %struct.doublecomplex, ptr %33, i32 0, i32 0
  %899 = load double, ptr %898, align 8, !tbaa !11
  %900 = fadd double %897, %899
  %901 = getelementptr inbounds %struct.doublecomplex, ptr %31, i32 0, i32 0
  store double %900, ptr %901, align 8, !tbaa !11
  %902 = getelementptr inbounds %struct.doublecomplex, ptr %32, i32 0, i32 1
  %903 = load double, ptr %902, align 8, !tbaa !14
  %904 = getelementptr inbounds %struct.doublecomplex, ptr %33, i32 0, i32 1
  %905 = load double, ptr %904, align 8, !tbaa !14
  %906 = fadd double %903, %905
  %907 = getelementptr inbounds %struct.doublecomplex, ptr %31, i32 0, i32 1
  store double %906, ptr %907, align 8, !tbaa !14
  %908 = load i32, ptr %49, align 4, !tbaa !9
  %909 = load i32, ptr %17, align 4, !tbaa !9
  %910 = mul nsw i32 %908, %909
  %911 = add nsw i32 %910, 3
  store i32 %911, ptr %22, align 4, !tbaa !9
  %912 = getelementptr inbounds %struct.doublecomplex, ptr %61, i32 0, i32 0
  %913 = load double, ptr %912, align 8, !tbaa !11
  %914 = load ptr, ptr %14, align 8, !tbaa !5
  %915 = load i32, ptr %22, align 4, !tbaa !9
  %916 = sext i32 %915 to i64
  %917 = getelementptr inbounds %struct.doublecomplex, ptr %914, i64 %916
  %918 = getelementptr inbounds %struct.doublecomplex, ptr %917, i32 0, i32 0
  %919 = load double, ptr %918, align 8, !tbaa !11
  %920 = getelementptr inbounds %struct.doublecomplex, ptr %61, i32 0, i32 1
  %921 = load double, ptr %920, align 8, !tbaa !14
  %922 = load ptr, ptr %14, align 8, !tbaa !5
  %923 = load i32, ptr %22, align 4, !tbaa !9
  %924 = sext i32 %923 to i64
  %925 = getelementptr inbounds %struct.doublecomplex, ptr %922, i64 %924
  %926 = getelementptr inbounds %struct.doublecomplex, ptr %925, i32 0, i32 1
  %927 = load double, ptr %926, align 8, !tbaa !14
  %928 = fmul double %921, %927
  %929 = fneg double %928
  %930 = call double @llvm.fmuladd.f64(double %913, double %919, double %929)
  %931 = getelementptr inbounds %struct.doublecomplex, ptr %34, i32 0, i32 0
  store double %930, ptr %931, align 8, !tbaa !11
  %932 = getelementptr inbounds %struct.doublecomplex, ptr %61, i32 0, i32 0
  %933 = load double, ptr %932, align 8, !tbaa !11
  %934 = load ptr, ptr %14, align 8, !tbaa !5
  %935 = load i32, ptr %22, align 4, !tbaa !9
  %936 = sext i32 %935 to i64
  %937 = getelementptr inbounds %struct.doublecomplex, ptr %934, i64 %936
  %938 = getelementptr inbounds %struct.doublecomplex, ptr %937, i32 0, i32 1
  %939 = load double, ptr %938, align 8, !tbaa !14
  %940 = getelementptr inbounds %struct.doublecomplex, ptr %61, i32 0, i32 1
  %941 = load double, ptr %940, align 8, !tbaa !14
  %942 = load ptr, ptr %14, align 8, !tbaa !5
  %943 = load i32, ptr %22, align 4, !tbaa !9
  %944 = sext i32 %943 to i64
  %945 = getelementptr inbounds %struct.doublecomplex, ptr %942, i64 %944
  %946 = getelementptr inbounds %struct.doublecomplex, ptr %945, i32 0, i32 0
  %947 = load double, ptr %946, align 8, !tbaa !11
  %948 = fmul double %941, %947
  %949 = call double @llvm.fmuladd.f64(double %933, double %939, double %948)
  %950 = getelementptr inbounds %struct.doublecomplex, ptr %34, i32 0, i32 1
  store double %949, ptr %950, align 8, !tbaa !14
  %951 = getelementptr inbounds %struct.doublecomplex, ptr %31, i32 0, i32 0
  %952 = load double, ptr %951, align 8, !tbaa !11
  %953 = getelementptr inbounds %struct.doublecomplex, ptr %34, i32 0, i32 0
  %954 = load double, ptr %953, align 8, !tbaa !11
  %955 = fadd double %952, %954
  %956 = getelementptr inbounds %struct.doublecomplex, ptr %30, i32 0, i32 0
  store double %955, ptr %956, align 8, !tbaa !11
  %957 = getelementptr inbounds %struct.doublecomplex, ptr %31, i32 0, i32 1
  %958 = load double, ptr %957, align 8, !tbaa !14
  %959 = getelementptr inbounds %struct.doublecomplex, ptr %34, i32 0, i32 1
  %960 = load double, ptr %959, align 8, !tbaa !14
  %961 = fadd double %958, %960
  %962 = getelementptr inbounds %struct.doublecomplex, ptr %30, i32 0, i32 1
  store double %961, ptr %962, align 8, !tbaa !14
  %963 = getelementptr inbounds %struct.doublecomplex, ptr %30, i32 0, i32 0
  %964 = load double, ptr %963, align 8, !tbaa !11
  %965 = getelementptr inbounds %struct.doublecomplex, ptr %70, i32 0, i32 0
  store double %964, ptr %965, align 8, !tbaa !11
  %966 = getelementptr inbounds %struct.doublecomplex, ptr %30, i32 0, i32 1
  %967 = load double, ptr %966, align 8, !tbaa !14
  %968 = getelementptr inbounds %struct.doublecomplex, ptr %70, i32 0, i32 1
  store double %967, ptr %968, align 8, !tbaa !14
  %969 = load i32, ptr %49, align 4, !tbaa !9
  %970 = load i32, ptr %17, align 4, !tbaa !9
  %971 = mul nsw i32 %969, %970
  %972 = add nsw i32 %971, 1
  store i32 %972, ptr %20, align 4, !tbaa !9
  %973 = load i32, ptr %49, align 4, !tbaa !9
  %974 = load i32, ptr %17, align 4, !tbaa !9
  %975 = mul nsw i32 %973, %974
  %976 = add nsw i32 %975, 1
  store i32 %976, ptr %21, align 4, !tbaa !9
  %977 = getelementptr inbounds %struct.doublecomplex, ptr %70, i32 0, i32 0
  %978 = load double, ptr %977, align 8, !tbaa !11
  %979 = getelementptr inbounds %struct.doublecomplex, ptr %50, i32 0, i32 0
  %980 = load double, ptr %979, align 8, !tbaa !11
  %981 = getelementptr inbounds %struct.doublecomplex, ptr %70, i32 0, i32 1
  %982 = load double, ptr %981, align 8, !tbaa !14
  %983 = getelementptr inbounds %struct.doublecomplex, ptr %50, i32 0, i32 1
  %984 = load double, ptr %983, align 8, !tbaa !14
  %985 = fmul double %982, %984
  %986 = fneg double %985
  %987 = call double @llvm.fmuladd.f64(double %978, double %980, double %986)
  %988 = getelementptr inbounds %struct.doublecomplex, ptr %31, i32 0, i32 0
  store double %987, ptr %988, align 8, !tbaa !11
  %989 = getelementptr inbounds %struct.doublecomplex, ptr %70, i32 0, i32 0
  %990 = load double, ptr %989, align 8, !tbaa !11
  %991 = getelementptr inbounds %struct.doublecomplex, ptr %50, i32 0, i32 1
  %992 = load double, ptr %991, align 8, !tbaa !14
  %993 = getelementptr inbounds %struct.doublecomplex, ptr %70, i32 0, i32 1
  %994 = load double, ptr %993, align 8, !tbaa !14
  %995 = getelementptr inbounds %struct.doublecomplex, ptr %50, i32 0, i32 0
  %996 = load double, ptr %995, align 8, !tbaa !11
  %997 = fmul double %994, %996
  %998 = call double @llvm.fmuladd.f64(double %990, double %992, double %997)
  %999 = getelementptr inbounds %struct.doublecomplex, ptr %31, i32 0, i32 1
  store double %998, ptr %999, align 8, !tbaa !14
  %1000 = load ptr, ptr %14, align 8, !tbaa !5
  %1001 = load i32, ptr %21, align 4, !tbaa !9
  %1002 = sext i32 %1001 to i64
  %1003 = getelementptr inbounds %struct.doublecomplex, ptr %1000, i64 %1002
  %1004 = getelementptr inbounds %struct.doublecomplex, ptr %1003, i32 0, i32 0
  %1005 = load double, ptr %1004, align 8, !tbaa !11
  %1006 = getelementptr inbounds %struct.doublecomplex, ptr %31, i32 0, i32 0
  %1007 = load double, ptr %1006, align 8, !tbaa !11
  %1008 = fsub double %1005, %1007
  %1009 = getelementptr inbounds %struct.doublecomplex, ptr %30, i32 0, i32 0
  store double %1008, ptr %1009, align 8, !tbaa !11
  %1010 = load ptr, ptr %14, align 8, !tbaa !5
  %1011 = load i32, ptr %21, align 4, !tbaa !9
  %1012 = sext i32 %1011 to i64
  %1013 = getelementptr inbounds %struct.doublecomplex, ptr %1010, i64 %1012
  %1014 = getelementptr inbounds %struct.doublecomplex, ptr %1013, i32 0, i32 1
  %1015 = load double, ptr %1014, align 8, !tbaa !14
  %1016 = getelementptr inbounds %struct.doublecomplex, ptr %31, i32 0, i32 1
  %1017 = load double, ptr %1016, align 8, !tbaa !14
  %1018 = fsub double %1015, %1017
  %1019 = getelementptr inbounds %struct.doublecomplex, ptr %30, i32 0, i32 1
  store double %1018, ptr %1019, align 8, !tbaa !14
  %1020 = getelementptr inbounds %struct.doublecomplex, ptr %30, i32 0, i32 0
  %1021 = load double, ptr %1020, align 8, !tbaa !11
  %1022 = load ptr, ptr %14, align 8, !tbaa !5
  %1023 = load i32, ptr %20, align 4, !tbaa !9
  %1024 = sext i32 %1023 to i64
  %1025 = getelementptr inbounds %struct.doublecomplex, ptr %1022, i64 %1024
  %1026 = getelementptr inbounds %struct.doublecomplex, ptr %1025, i32 0, i32 0
  store double %1021, ptr %1026, align 8, !tbaa !11
  %1027 = getelementptr inbounds %struct.doublecomplex, ptr %30, i32 0, i32 1
  %1028 = load double, ptr %1027, align 8, !tbaa !14
  %1029 = load ptr, ptr %14, align 8, !tbaa !5
  %1030 = load i32, ptr %20, align 4, !tbaa !9
  %1031 = sext i32 %1030 to i64
  %1032 = getelementptr inbounds %struct.doublecomplex, ptr %1029, i64 %1031
  %1033 = getelementptr inbounds %struct.doublecomplex, ptr %1032, i32 0, i32 1
  store double %1028, ptr %1033, align 8, !tbaa !14
  %1034 = load i32, ptr %49, align 4, !tbaa !9
  %1035 = load i32, ptr %17, align 4, !tbaa !9
  %1036 = mul nsw i32 %1034, %1035
  %1037 = add nsw i32 %1036, 2
  store i32 %1037, ptr %20, align 4, !tbaa !9
  %1038 = load i32, ptr %49, align 4, !tbaa !9
  %1039 = load i32, ptr %17, align 4, !tbaa !9
  %1040 = mul nsw i32 %1038, %1039
  %1041 = add nsw i32 %1040, 2
  store i32 %1041, ptr %21, align 4, !tbaa !9
  %1042 = getelementptr inbounds %struct.doublecomplex, ptr %70, i32 0, i32 0
  %1043 = load double, ptr %1042, align 8, !tbaa !11
  %1044 = getelementptr inbounds %struct.doublecomplex, ptr %51, i32 0, i32 0
  %1045 = load double, ptr %1044, align 8, !tbaa !11
  %1046 = getelementptr inbounds %struct.doublecomplex, ptr %70, i32 0, i32 1
  %1047 = load double, ptr %1046, align 8, !tbaa !14
  %1048 = getelementptr inbounds %struct.doublecomplex, ptr %51, i32 0, i32 1
  %1049 = load double, ptr %1048, align 8, !tbaa !14
  %1050 = fmul double %1047, %1049
  %1051 = fneg double %1050
  %1052 = call double @llvm.fmuladd.f64(double %1043, double %1045, double %1051)
  %1053 = getelementptr inbounds %struct.doublecomplex, ptr %31, i32 0, i32 0
  store double %1052, ptr %1053, align 8, !tbaa !11
  %1054 = getelementptr inbounds %struct.doublecomplex, ptr %70, i32 0, i32 0
  %1055 = load double, ptr %1054, align 8, !tbaa !11
  %1056 = getelementptr inbounds %struct.doublecomplex, ptr %51, i32 0, i32 1
  %1057 = load double, ptr %1056, align 8, !tbaa !14
  %1058 = getelementptr inbounds %struct.doublecomplex, ptr %70, i32 0, i32 1
  %1059 = load double, ptr %1058, align 8, !tbaa !14
  %1060 = getelementptr inbounds %struct.doublecomplex, ptr %51, i32 0, i32 0
  %1061 = load double, ptr %1060, align 8, !tbaa !11
  %1062 = fmul double %1059, %1061
  %1063 = call double @llvm.fmuladd.f64(double %1055, double %1057, double %1062)
  %1064 = getelementptr inbounds %struct.doublecomplex, ptr %31, i32 0, i32 1
  store double %1063, ptr %1064, align 8, !tbaa !14
  %1065 = load ptr, ptr %14, align 8, !tbaa !5
  %1066 = load i32, ptr %21, align 4, !tbaa !9
  %1067 = sext i32 %1066 to i64
  %1068 = getelementptr inbounds %struct.doublecomplex, ptr %1065, i64 %1067
  %1069 = getelementptr inbounds %struct.doublecomplex, ptr %1068, i32 0, i32 0
  %1070 = load double, ptr %1069, align 8, !tbaa !11
  %1071 = getelementptr inbounds %struct.doublecomplex, ptr %31, i32 0, i32 0
  %1072 = load double, ptr %1071, align 8, !tbaa !11
  %1073 = fsub double %1070, %1072
  %1074 = getelementptr inbounds %struct.doublecomplex, ptr %30, i32 0, i32 0
  store double %1073, ptr %1074, align 8, !tbaa !11
  %1075 = load ptr, ptr %14, align 8, !tbaa !5
  %1076 = load i32, ptr %21, align 4, !tbaa !9
  %1077 = sext i32 %1076 to i64
  %1078 = getelementptr inbounds %struct.doublecomplex, ptr %1075, i64 %1077
  %1079 = getelementptr inbounds %struct.doublecomplex, ptr %1078, i32 0, i32 1
  %1080 = load double, ptr %1079, align 8, !tbaa !14
  %1081 = getelementptr inbounds %struct.doublecomplex, ptr %31, i32 0, i32 1
  %1082 = load double, ptr %1081, align 8, !tbaa !14
  %1083 = fsub double %1080, %1082
  %1084 = getelementptr inbounds %struct.doublecomplex, ptr %30, i32 0, i32 1
  store double %1083, ptr %1084, align 8, !tbaa !14
  %1085 = getelementptr inbounds %struct.doublecomplex, ptr %30, i32 0, i32 0
  %1086 = load double, ptr %1085, align 8, !tbaa !11
  %1087 = load ptr, ptr %14, align 8, !tbaa !5
  %1088 = load i32, ptr %20, align 4, !tbaa !9
  %1089 = sext i32 %1088 to i64
  %1090 = getelementptr inbounds %struct.doublecomplex, ptr %1087, i64 %1089
  %1091 = getelementptr inbounds %struct.doublecomplex, ptr %1090, i32 0, i32 0
  store double %1086, ptr %1091, align 8, !tbaa !11
  %1092 = getelementptr inbounds %struct.doublecomplex, ptr %30, i32 0, i32 1
  %1093 = load double, ptr %1092, align 8, !tbaa !14
  %1094 = load ptr, ptr %14, align 8, !tbaa !5
  %1095 = load i32, ptr %20, align 4, !tbaa !9
  %1096 = sext i32 %1095 to i64
  %1097 = getelementptr inbounds %struct.doublecomplex, ptr %1094, i64 %1096
  %1098 = getelementptr inbounds %struct.doublecomplex, ptr %1097, i32 0, i32 1
  store double %1093, ptr %1098, align 8, !tbaa !14
  %1099 = load i32, ptr %49, align 4, !tbaa !9
  %1100 = load i32, ptr %17, align 4, !tbaa !9
  %1101 = mul nsw i32 %1099, %1100
  %1102 = add nsw i32 %1101, 3
  store i32 %1102, ptr %20, align 4, !tbaa !9
  %1103 = load i32, ptr %49, align 4, !tbaa !9
  %1104 = load i32, ptr %17, align 4, !tbaa !9
  %1105 = mul nsw i32 %1103, %1104
  %1106 = add nsw i32 %1105, 3
  store i32 %1106, ptr %21, align 4, !tbaa !9
  %1107 = getelementptr inbounds %struct.doublecomplex, ptr %70, i32 0, i32 0
  %1108 = load double, ptr %1107, align 8, !tbaa !11
  %1109 = getelementptr inbounds %struct.doublecomplex, ptr %52, i32 0, i32 0
  %1110 = load double, ptr %1109, align 8, !tbaa !11
  %1111 = getelementptr inbounds %struct.doublecomplex, ptr %70, i32 0, i32 1
  %1112 = load double, ptr %1111, align 8, !tbaa !14
  %1113 = getelementptr inbounds %struct.doublecomplex, ptr %52, i32 0, i32 1
  %1114 = load double, ptr %1113, align 8, !tbaa !14
  %1115 = fmul double %1112, %1114
  %1116 = fneg double %1115
  %1117 = call double @llvm.fmuladd.f64(double %1108, double %1110, double %1116)
  %1118 = getelementptr inbounds %struct.doublecomplex, ptr %31, i32 0, i32 0
  store double %1117, ptr %1118, align 8, !tbaa !11
  %1119 = getelementptr inbounds %struct.doublecomplex, ptr %70, i32 0, i32 0
  %1120 = load double, ptr %1119, align 8, !tbaa !11
  %1121 = getelementptr inbounds %struct.doublecomplex, ptr %52, i32 0, i32 1
  %1122 = load double, ptr %1121, align 8, !tbaa !14
  %1123 = getelementptr inbounds %struct.doublecomplex, ptr %70, i32 0, i32 1
  %1124 = load double, ptr %1123, align 8, !tbaa !14
  %1125 = getelementptr inbounds %struct.doublecomplex, ptr %52, i32 0, i32 0
  %1126 = load double, ptr %1125, align 8, !tbaa !11
  %1127 = fmul double %1124, %1126
  %1128 = call double @llvm.fmuladd.f64(double %1120, double %1122, double %1127)
  %1129 = getelementptr inbounds %struct.doublecomplex, ptr %31, i32 0, i32 1
  store double %1128, ptr %1129, align 8, !tbaa !14
  %1130 = load ptr, ptr %14, align 8, !tbaa !5
  %1131 = load i32, ptr %21, align 4, !tbaa !9
  %1132 = sext i32 %1131 to i64
  %1133 = getelementptr inbounds %struct.doublecomplex, ptr %1130, i64 %1132
  %1134 = getelementptr inbounds %struct.doublecomplex, ptr %1133, i32 0, i32 0
  %1135 = load double, ptr %1134, align 8, !tbaa !11
  %1136 = getelementptr inbounds %struct.doublecomplex, ptr %31, i32 0, i32 0
  %1137 = load double, ptr %1136, align 8, !tbaa !11
  %1138 = fsub double %1135, %1137
  %1139 = getelementptr inbounds %struct.doublecomplex, ptr %30, i32 0, i32 0
  store double %1138, ptr %1139, align 8, !tbaa !11
  %1140 = load ptr, ptr %14, align 8, !tbaa !5
  %1141 = load i32, ptr %21, align 4, !tbaa !9
  %1142 = sext i32 %1141 to i64
  %1143 = getelementptr inbounds %struct.doublecomplex, ptr %1140, i64 %1142
  %1144 = getelementptr inbounds %struct.doublecomplex, ptr %1143, i32 0, i32 1
  %1145 = load double, ptr %1144, align 8, !tbaa !14
  %1146 = getelementptr inbounds %struct.doublecomplex, ptr %31, i32 0, i32 1
  %1147 = load double, ptr %1146, align 8, !tbaa !14
  %1148 = fsub double %1145, %1147
  %1149 = getelementptr inbounds %struct.doublecomplex, ptr %30, i32 0, i32 1
  store double %1148, ptr %1149, align 8, !tbaa !14
  %1150 = getelementptr inbounds %struct.doublecomplex, ptr %30, i32 0, i32 0
  %1151 = load double, ptr %1150, align 8, !tbaa !11
  %1152 = load ptr, ptr %14, align 8, !tbaa !5
  %1153 = load i32, ptr %20, align 4, !tbaa !9
  %1154 = sext i32 %1153 to i64
  %1155 = getelementptr inbounds %struct.doublecomplex, ptr %1152, i64 %1154
  %1156 = getelementptr inbounds %struct.doublecomplex, ptr %1155, i32 0, i32 0
  store double %1151, ptr %1156, align 8, !tbaa !11
  %1157 = getelementptr inbounds %struct.doublecomplex, ptr %30, i32 0, i32 1
  %1158 = load double, ptr %1157, align 8, !tbaa !14
  %1159 = load ptr, ptr %14, align 8, !tbaa !5
  %1160 = load i32, ptr %20, align 4, !tbaa !9
  %1161 = sext i32 %1160 to i64
  %1162 = getelementptr inbounds %struct.doublecomplex, ptr %1159, i64 %1161
  %1163 = getelementptr inbounds %struct.doublecomplex, ptr %1162, i32 0, i32 1
  store double %1158, ptr %1163, align 8, !tbaa !14
  br label %1164

1164:                                             ; preds = %809
  %1165 = load i32, ptr %49, align 4, !tbaa !9
  %1166 = add nsw i32 %1165, 1
  store i32 %1166, ptr %49, align 4, !tbaa !9
  br label %805, !llvm.loop !18

1167:                                             ; preds = %805
  br label %19171

1168:                                             ; preds = %106
  %1169 = load ptr, ptr %12, align 8, !tbaa !5
  %1170 = getelementptr inbounds %struct.doublecomplex, ptr %1169, i64 1
  %1171 = call { double, double } @Cd(ptr noundef %1170)
  %1172 = extractvalue { double, double } %1171, 0
  %1173 = extractvalue { double, double } %1171, 1
  %1174 = fneg double %1173
  %1175 = call ptr @_pCd(ptr noundef %30)
  %1176 = getelementptr inbounds { double, double }, ptr %1175, i32 0, i32 0
  %1177 = getelementptr inbounds { double, double }, ptr %1175, i32 0, i32 1
  store double %1172, ptr %1176, align 8
  store double %1174, ptr %1177, align 8
  %1178 = getelementptr inbounds %struct.doublecomplex, ptr %30, i32 0, i32 0
  %1179 = load double, ptr %1178, align 8, !tbaa !11
  %1180 = getelementptr inbounds %struct.doublecomplex, ptr %59, i32 0, i32 0
  store double %1179, ptr %1180, align 8, !tbaa !11
  %1181 = getelementptr inbounds %struct.doublecomplex, ptr %30, i32 0, i32 1
  %1182 = load double, ptr %1181, align 8, !tbaa !14
  %1183 = getelementptr inbounds %struct.doublecomplex, ptr %59, i32 0, i32 1
  store double %1182, ptr %1183, align 8, !tbaa !14
  %1184 = call { double, double } @Cd(ptr noundef %59)
  %1185 = extractvalue { double, double } %1184, 0
  %1186 = extractvalue { double, double } %1184, 1
  %1187 = fneg double %1186
  %1188 = call ptr @_pCd(ptr noundef %31)
  %1189 = getelementptr inbounds { double, double }, ptr %1188, i32 0, i32 0
  %1190 = getelementptr inbounds { double, double }, ptr %1188, i32 0, i32 1
  store double %1185, ptr %1189, align 8
  store double %1187, ptr %1190, align 8
  %1191 = load ptr, ptr %13, align 8, !tbaa !5
  %1192 = getelementptr inbounds %struct.doublecomplex, ptr %1191, i32 0, i32 0
  %1193 = load double, ptr %1192, align 8, !tbaa !11
  %1194 = getelementptr inbounds %struct.doublecomplex, ptr %31, i32 0, i32 0
  %1195 = load double, ptr %1194, align 8, !tbaa !11
  %1196 = load ptr, ptr %13, align 8, !tbaa !5
  %1197 = getelementptr inbounds %struct.doublecomplex, ptr %1196, i32 0, i32 1
  %1198 = load double, ptr %1197, align 8, !tbaa !14
  %1199 = getelementptr inbounds %struct.doublecomplex, ptr %31, i32 0, i32 1
  %1200 = load double, ptr %1199, align 8, !tbaa !14
  %1201 = fmul double %1198, %1200
  %1202 = fneg double %1201
  %1203 = call double @llvm.fmuladd.f64(double %1193, double %1195, double %1202)
  %1204 = getelementptr inbounds %struct.doublecomplex, ptr %30, i32 0, i32 0
  store double %1203, ptr %1204, align 8, !tbaa !11
  %1205 = load ptr, ptr %13, align 8, !tbaa !5
  %1206 = getelementptr inbounds %struct.doublecomplex, ptr %1205, i32 0, i32 0
  %1207 = load double, ptr %1206, align 8, !tbaa !11
  %1208 = getelementptr inbounds %struct.doublecomplex, ptr %31, i32 0, i32 1
  %1209 = load double, ptr %1208, align 8, !tbaa !14
  %1210 = load ptr, ptr %13, align 8, !tbaa !5
  %1211 = getelementptr inbounds %struct.doublecomplex, ptr %1210, i32 0, i32 1
  %1212 = load double, ptr %1211, align 8, !tbaa !14
  %1213 = getelementptr inbounds %struct.doublecomplex, ptr %31, i32 0, i32 0
  %1214 = load double, ptr %1213, align 8, !tbaa !11
  %1215 = fmul double %1212, %1214
  %1216 = call double @llvm.fmuladd.f64(double %1207, double %1209, double %1215)
  %1217 = getelementptr inbounds %struct.doublecomplex, ptr %30, i32 0, i32 1
  store double %1216, ptr %1217, align 8, !tbaa !14
  %1218 = getelementptr inbounds %struct.doublecomplex, ptr %30, i32 0, i32 0
  %1219 = load double, ptr %1218, align 8, !tbaa !11
  %1220 = getelementptr inbounds %struct.doublecomplex, ptr %50, i32 0, i32 0
  store double %1219, ptr %1220, align 8, !tbaa !11
  %1221 = getelementptr inbounds %struct.doublecomplex, ptr %30, i32 0, i32 1
  %1222 = load double, ptr %1221, align 8, !tbaa !14
  %1223 = getelementptr inbounds %struct.doublecomplex, ptr %50, i32 0, i32 1
  store double %1222, ptr %1223, align 8, !tbaa !14
  %1224 = load ptr, ptr %12, align 8, !tbaa !5
  %1225 = getelementptr inbounds %struct.doublecomplex, ptr %1224, i64 2
  %1226 = call { double, double } @Cd(ptr noundef %1225)
  %1227 = extractvalue { double, double } %1226, 0
  %1228 = extractvalue { double, double } %1226, 1
  %1229 = fneg double %1228
  %1230 = call ptr @_pCd(ptr noundef %30)
  %1231 = getelementptr inbounds { double, double }, ptr %1230, i32 0, i32 0
  %1232 = getelementptr inbounds { double, double }, ptr %1230, i32 0, i32 1
  store double %1227, ptr %1231, align 8
  store double %1229, ptr %1232, align 8
  %1233 = getelementptr inbounds %struct.doublecomplex, ptr %30, i32 0, i32 0
  %1234 = load double, ptr %1233, align 8, !tbaa !11
  %1235 = getelementptr inbounds %struct.doublecomplex, ptr %60, i32 0, i32 0
  store double %1234, ptr %1235, align 8, !tbaa !11
  %1236 = getelementptr inbounds %struct.doublecomplex, ptr %30, i32 0, i32 1
  %1237 = load double, ptr %1236, align 8, !tbaa !14
  %1238 = getelementptr inbounds %struct.doublecomplex, ptr %60, i32 0, i32 1
  store double %1237, ptr %1238, align 8, !tbaa !14
  %1239 = call { double, double } @Cd(ptr noundef %60)
  %1240 = extractvalue { double, double } %1239, 0
  %1241 = extractvalue { double, double } %1239, 1
  %1242 = fneg double %1241
  %1243 = call ptr @_pCd(ptr noundef %31)
  %1244 = getelementptr inbounds { double, double }, ptr %1243, i32 0, i32 0
  %1245 = getelementptr inbounds { double, double }, ptr %1243, i32 0, i32 1
  store double %1240, ptr %1244, align 8
  store double %1242, ptr %1245, align 8
  %1246 = load ptr, ptr %13, align 8, !tbaa !5
  %1247 = getelementptr inbounds %struct.doublecomplex, ptr %1246, i32 0, i32 0
  %1248 = load double, ptr %1247, align 8, !tbaa !11
  %1249 = getelementptr inbounds %struct.doublecomplex, ptr %31, i32 0, i32 0
  %1250 = load double, ptr %1249, align 8, !tbaa !11
  %1251 = load ptr, ptr %13, align 8, !tbaa !5
  %1252 = getelementptr inbounds %struct.doublecomplex, ptr %1251, i32 0, i32 1
  %1253 = load double, ptr %1252, align 8, !tbaa !14
  %1254 = getelementptr inbounds %struct.doublecomplex, ptr %31, i32 0, i32 1
  %1255 = load double, ptr %1254, align 8, !tbaa !14
  %1256 = fmul double %1253, %1255
  %1257 = fneg double %1256
  %1258 = call double @llvm.fmuladd.f64(double %1248, double %1250, double %1257)
  %1259 = getelementptr inbounds %struct.doublecomplex, ptr %30, i32 0, i32 0
  store double %1258, ptr %1259, align 8, !tbaa !11
  %1260 = load ptr, ptr %13, align 8, !tbaa !5
  %1261 = getelementptr inbounds %struct.doublecomplex, ptr %1260, i32 0, i32 0
  %1262 = load double, ptr %1261, align 8, !tbaa !11
  %1263 = getelementptr inbounds %struct.doublecomplex, ptr %31, i32 0, i32 1
  %1264 = load double, ptr %1263, align 8, !tbaa !14
  %1265 = load ptr, ptr %13, align 8, !tbaa !5
  %1266 = getelementptr inbounds %struct.doublecomplex, ptr %1265, i32 0, i32 1
  %1267 = load double, ptr %1266, align 8, !tbaa !14
  %1268 = getelementptr inbounds %struct.doublecomplex, ptr %31, i32 0, i32 0
  %1269 = load double, ptr %1268, align 8, !tbaa !11
  %1270 = fmul double %1267, %1269
  %1271 = call double @llvm.fmuladd.f64(double %1262, double %1264, double %1270)
  %1272 = getelementptr inbounds %struct.doublecomplex, ptr %30, i32 0, i32 1
  store double %1271, ptr %1272, align 8, !tbaa !14
  %1273 = getelementptr inbounds %struct.doublecomplex, ptr %30, i32 0, i32 0
  %1274 = load double, ptr %1273, align 8, !tbaa !11
  %1275 = getelementptr inbounds %struct.doublecomplex, ptr %51, i32 0, i32 0
  store double %1274, ptr %1275, align 8, !tbaa !11
  %1276 = getelementptr inbounds %struct.doublecomplex, ptr %30, i32 0, i32 1
  %1277 = load double, ptr %1276, align 8, !tbaa !14
  %1278 = getelementptr inbounds %struct.doublecomplex, ptr %51, i32 0, i32 1
  store double %1277, ptr %1278, align 8, !tbaa !14
  %1279 = load ptr, ptr %12, align 8, !tbaa !5
  %1280 = getelementptr inbounds %struct.doublecomplex, ptr %1279, i64 3
  %1281 = call { double, double } @Cd(ptr noundef %1280)
  %1282 = extractvalue { double, double } %1281, 0
  %1283 = extractvalue { double, double } %1281, 1
  %1284 = fneg double %1283
  %1285 = call ptr @_pCd(ptr noundef %30)
  %1286 = getelementptr inbounds { double, double }, ptr %1285, i32 0, i32 0
  %1287 = getelementptr inbounds { double, double }, ptr %1285, i32 0, i32 1
  store double %1282, ptr %1286, align 8
  store double %1284, ptr %1287, align 8
  %1288 = getelementptr inbounds %struct.doublecomplex, ptr %30, i32 0, i32 0
  %1289 = load double, ptr %1288, align 8, !tbaa !11
  %1290 = getelementptr inbounds %struct.doublecomplex, ptr %61, i32 0, i32 0
  store double %1289, ptr %1290, align 8, !tbaa !11
  %1291 = getelementptr inbounds %struct.doublecomplex, ptr %30, i32 0, i32 1
  %1292 = load double, ptr %1291, align 8, !tbaa !14
  %1293 = getelementptr inbounds %struct.doublecomplex, ptr %61, i32 0, i32 1
  store double %1292, ptr %1293, align 8, !tbaa !14
  %1294 = call { double, double } @Cd(ptr noundef %61)
  %1295 = extractvalue { double, double } %1294, 0
  %1296 = extractvalue { double, double } %1294, 1
  %1297 = fneg double %1296
  %1298 = call ptr @_pCd(ptr noundef %31)
  %1299 = getelementptr inbounds { double, double }, ptr %1298, i32 0, i32 0
  %1300 = getelementptr inbounds { double, double }, ptr %1298, i32 0, i32 1
  store double %1295, ptr %1299, align 8
  store double %1297, ptr %1300, align 8
  %1301 = load ptr, ptr %13, align 8, !tbaa !5
  %1302 = getelementptr inbounds %struct.doublecomplex, ptr %1301, i32 0, i32 0
  %1303 = load double, ptr %1302, align 8, !tbaa !11
  %1304 = getelementptr inbounds %struct.doublecomplex, ptr %31, i32 0, i32 0
  %1305 = load double, ptr %1304, align 8, !tbaa !11
  %1306 = load ptr, ptr %13, align 8, !tbaa !5
  %1307 = getelementptr inbounds %struct.doublecomplex, ptr %1306, i32 0, i32 1
  %1308 = load double, ptr %1307, align 8, !tbaa !14
  %1309 = getelementptr inbounds %struct.doublecomplex, ptr %31, i32 0, i32 1
  %1310 = load double, ptr %1309, align 8, !tbaa !14
  %1311 = fmul double %1308, %1310
  %1312 = fneg double %1311
  %1313 = call double @llvm.fmuladd.f64(double %1303, double %1305, double %1312)
  %1314 = getelementptr inbounds %struct.doublecomplex, ptr %30, i32 0, i32 0
  store double %1313, ptr %1314, align 8, !tbaa !11
  %1315 = load ptr, ptr %13, align 8, !tbaa !5
  %1316 = getelementptr inbounds %struct.doublecomplex, ptr %1315, i32 0, i32 0
  %1317 = load double, ptr %1316, align 8, !tbaa !11
  %1318 = getelementptr inbounds %struct.doublecomplex, ptr %31, i32 0, i32 1
  %1319 = load double, ptr %1318, align 8, !tbaa !14
  %1320 = load ptr, ptr %13, align 8, !tbaa !5
  %1321 = getelementptr inbounds %struct.doublecomplex, ptr %1320, i32 0, i32 1
  %1322 = load double, ptr %1321, align 8, !tbaa !14
  %1323 = getelementptr inbounds %struct.doublecomplex, ptr %31, i32 0, i32 0
  %1324 = load double, ptr %1323, align 8, !tbaa !11
  %1325 = fmul double %1322, %1324
  %1326 = call double @llvm.fmuladd.f64(double %1317, double %1319, double %1325)
  %1327 = getelementptr inbounds %struct.doublecomplex, ptr %30, i32 0, i32 1
  store double %1326, ptr %1327, align 8, !tbaa !14
  %1328 = getelementptr inbounds %struct.doublecomplex, ptr %30, i32 0, i32 0
  %1329 = load double, ptr %1328, align 8, !tbaa !11
  %1330 = getelementptr inbounds %struct.doublecomplex, ptr %52, i32 0, i32 0
  store double %1329, ptr %1330, align 8, !tbaa !11
  %1331 = getelementptr inbounds %struct.doublecomplex, ptr %30, i32 0, i32 1
  %1332 = load double, ptr %1331, align 8, !tbaa !14
  %1333 = getelementptr inbounds %struct.doublecomplex, ptr %52, i32 0, i32 1
  store double %1332, ptr %1333, align 8, !tbaa !14
  %1334 = load ptr, ptr %12, align 8, !tbaa !5
  %1335 = getelementptr inbounds %struct.doublecomplex, ptr %1334, i64 4
  %1336 = call { double, double } @Cd(ptr noundef %1335)
  %1337 = extractvalue { double, double } %1336, 0
  %1338 = extractvalue { double, double } %1336, 1
  %1339 = fneg double %1338
  %1340 = call ptr @_pCd(ptr noundef %30)
  %1341 = getelementptr inbounds { double, double }, ptr %1340, i32 0, i32 0
  %1342 = getelementptr inbounds { double, double }, ptr %1340, i32 0, i32 1
  store double %1337, ptr %1341, align 8
  store double %1339, ptr %1342, align 8
  %1343 = getelementptr inbounds %struct.doublecomplex, ptr %30, i32 0, i32 0
  %1344 = load double, ptr %1343, align 8, !tbaa !11
  %1345 = getelementptr inbounds %struct.doublecomplex, ptr %62, i32 0, i32 0
  store double %1344, ptr %1345, align 8, !tbaa !11
  %1346 = getelementptr inbounds %struct.doublecomplex, ptr %30, i32 0, i32 1
  %1347 = load double, ptr %1346, align 8, !tbaa !14
  %1348 = getelementptr inbounds %struct.doublecomplex, ptr %62, i32 0, i32 1
  store double %1347, ptr %1348, align 8, !tbaa !14
  %1349 = call { double, double } @Cd(ptr noundef %62)
  %1350 = extractvalue { double, double } %1349, 0
  %1351 = extractvalue { double, double } %1349, 1
  %1352 = fneg double %1351
  %1353 = call ptr @_pCd(ptr noundef %31)
  %1354 = getelementptr inbounds { double, double }, ptr %1353, i32 0, i32 0
  %1355 = getelementptr inbounds { double, double }, ptr %1353, i32 0, i32 1
  store double %1350, ptr %1354, align 8
  store double %1352, ptr %1355, align 8
  %1356 = load ptr, ptr %13, align 8, !tbaa !5
  %1357 = getelementptr inbounds %struct.doublecomplex, ptr %1356, i32 0, i32 0
  %1358 = load double, ptr %1357, align 8, !tbaa !11
  %1359 = getelementptr inbounds %struct.doublecomplex, ptr %31, i32 0, i32 0
  %1360 = load double, ptr %1359, align 8, !tbaa !11
  %1361 = load ptr, ptr %13, align 8, !tbaa !5
  %1362 = getelementptr inbounds %struct.doublecomplex, ptr %1361, i32 0, i32 1
  %1363 = load double, ptr %1362, align 8, !tbaa !14
  %1364 = getelementptr inbounds %struct.doublecomplex, ptr %31, i32 0, i32 1
  %1365 = load double, ptr %1364, align 8, !tbaa !14
  %1366 = fmul double %1363, %1365
  %1367 = fneg double %1366
  %1368 = call double @llvm.fmuladd.f64(double %1358, double %1360, double %1367)
  %1369 = getelementptr inbounds %struct.doublecomplex, ptr %30, i32 0, i32 0
  store double %1368, ptr %1369, align 8, !tbaa !11
  %1370 = load ptr, ptr %13, align 8, !tbaa !5
  %1371 = getelementptr inbounds %struct.doublecomplex, ptr %1370, i32 0, i32 0
  %1372 = load double, ptr %1371, align 8, !tbaa !11
  %1373 = getelementptr inbounds %struct.doublecomplex, ptr %31, i32 0, i32 1
  %1374 = load double, ptr %1373, align 8, !tbaa !14
  %1375 = load ptr, ptr %13, align 8, !tbaa !5
  %1376 = getelementptr inbounds %struct.doublecomplex, ptr %1375, i32 0, i32 1
  %1377 = load double, ptr %1376, align 8, !tbaa !14
  %1378 = getelementptr inbounds %struct.doublecomplex, ptr %31, i32 0, i32 0
  %1379 = load double, ptr %1378, align 8, !tbaa !11
  %1380 = fmul double %1377, %1379
  %1381 = call double @llvm.fmuladd.f64(double %1372, double %1374, double %1380)
  %1382 = getelementptr inbounds %struct.doublecomplex, ptr %30, i32 0, i32 1
  store double %1381, ptr %1382, align 8, !tbaa !14
  %1383 = getelementptr inbounds %struct.doublecomplex, ptr %30, i32 0, i32 0
  %1384 = load double, ptr %1383, align 8, !tbaa !11
  %1385 = getelementptr inbounds %struct.doublecomplex, ptr %53, i32 0, i32 0
  store double %1384, ptr %1385, align 8, !tbaa !11
  %1386 = getelementptr inbounds %struct.doublecomplex, ptr %30, i32 0, i32 1
  %1387 = load double, ptr %1386, align 8, !tbaa !14
  %1388 = getelementptr inbounds %struct.doublecomplex, ptr %53, i32 0, i32 1
  store double %1387, ptr %1388, align 8, !tbaa !14
  %1389 = load ptr, ptr %11, align 8, !tbaa !5
  %1390 = load i32, ptr %1389, align 4, !tbaa !9
  store i32 %1390, ptr %19, align 4, !tbaa !9
  store i32 1, ptr %49, align 4, !tbaa !9
  br label %1391

1391:                                             ; preds = %1870, %1168
  %1392 = load i32, ptr %49, align 4, !tbaa !9
  %1393 = load i32, ptr %19, align 4, !tbaa !9
  %1394 = icmp sle i32 %1392, %1393
  br i1 %1394, label %1395, label %1873

1395:                                             ; preds = %1391
  %1396 = load i32, ptr %49, align 4, !tbaa !9
  %1397 = load i32, ptr %17, align 4, !tbaa !9
  %1398 = mul nsw i32 %1396, %1397
  %1399 = add nsw i32 %1398, 1
  store i32 %1399, ptr %20, align 4, !tbaa !9
  %1400 = getelementptr inbounds %struct.doublecomplex, ptr %59, i32 0, i32 0
  %1401 = load double, ptr %1400, align 8, !tbaa !11
  %1402 = load ptr, ptr %14, align 8, !tbaa !5
  %1403 = load i32, ptr %20, align 4, !tbaa !9
  %1404 = sext i32 %1403 to i64
  %1405 = getelementptr inbounds %struct.doublecomplex, ptr %1402, i64 %1404
  %1406 = getelementptr inbounds %struct.doublecomplex, ptr %1405, i32 0, i32 0
  %1407 = load double, ptr %1406, align 8, !tbaa !11
  %1408 = getelementptr inbounds %struct.doublecomplex, ptr %59, i32 0, i32 1
  %1409 = load double, ptr %1408, align 8, !tbaa !14
  %1410 = load ptr, ptr %14, align 8, !tbaa !5
  %1411 = load i32, ptr %20, align 4, !tbaa !9
  %1412 = sext i32 %1411 to i64
  %1413 = getelementptr inbounds %struct.doublecomplex, ptr %1410, i64 %1412
  %1414 = getelementptr inbounds %struct.doublecomplex, ptr %1413, i32 0, i32 1
  %1415 = load double, ptr %1414, align 8, !tbaa !14
  %1416 = fmul double %1409, %1415
  %1417 = fneg double %1416
  %1418 = call double @llvm.fmuladd.f64(double %1401, double %1407, double %1417)
  %1419 = getelementptr inbounds %struct.doublecomplex, ptr %33, i32 0, i32 0
  store double %1418, ptr %1419, align 8, !tbaa !11
  %1420 = getelementptr inbounds %struct.doublecomplex, ptr %59, i32 0, i32 0
  %1421 = load double, ptr %1420, align 8, !tbaa !11
  %1422 = load ptr, ptr %14, align 8, !tbaa !5
  %1423 = load i32, ptr %20, align 4, !tbaa !9
  %1424 = sext i32 %1423 to i64
  %1425 = getelementptr inbounds %struct.doublecomplex, ptr %1422, i64 %1424
  %1426 = getelementptr inbounds %struct.doublecomplex, ptr %1425, i32 0, i32 1
  %1427 = load double, ptr %1426, align 8, !tbaa !14
  %1428 = getelementptr inbounds %struct.doublecomplex, ptr %59, i32 0, i32 1
  %1429 = load double, ptr %1428, align 8, !tbaa !14
  %1430 = load ptr, ptr %14, align 8, !tbaa !5
  %1431 = load i32, ptr %20, align 4, !tbaa !9
  %1432 = sext i32 %1431 to i64
  %1433 = getelementptr inbounds %struct.doublecomplex, ptr %1430, i64 %1432
  %1434 = getelementptr inbounds %struct.doublecomplex, ptr %1433, i32 0, i32 0
  %1435 = load double, ptr %1434, align 8, !tbaa !11
  %1436 = fmul double %1429, %1435
  %1437 = call double @llvm.fmuladd.f64(double %1421, double %1427, double %1436)
  %1438 = getelementptr inbounds %struct.doublecomplex, ptr %33, i32 0, i32 1
  store double %1437, ptr %1438, align 8, !tbaa !14
  %1439 = load i32, ptr %49, align 4, !tbaa !9
  %1440 = load i32, ptr %17, align 4, !tbaa !9
  %1441 = mul nsw i32 %1439, %1440
  %1442 = add nsw i32 %1441, 2
  store i32 %1442, ptr %21, align 4, !tbaa !9
  %1443 = getelementptr inbounds %struct.doublecomplex, ptr %60, i32 0, i32 0
  %1444 = load double, ptr %1443, align 8, !tbaa !11
  %1445 = load ptr, ptr %14, align 8, !tbaa !5
  %1446 = load i32, ptr %21, align 4, !tbaa !9
  %1447 = sext i32 %1446 to i64
  %1448 = getelementptr inbounds %struct.doublecomplex, ptr %1445, i64 %1447
  %1449 = getelementptr inbounds %struct.doublecomplex, ptr %1448, i32 0, i32 0
  %1450 = load double, ptr %1449, align 8, !tbaa !11
  %1451 = getelementptr inbounds %struct.doublecomplex, ptr %60, i32 0, i32 1
  %1452 = load double, ptr %1451, align 8, !tbaa !14
  %1453 = load ptr, ptr %14, align 8, !tbaa !5
  %1454 = load i32, ptr %21, align 4, !tbaa !9
  %1455 = sext i32 %1454 to i64
  %1456 = getelementptr inbounds %struct.doublecomplex, ptr %1453, i64 %1455
  %1457 = getelementptr inbounds %struct.doublecomplex, ptr %1456, i32 0, i32 1
  %1458 = load double, ptr %1457, align 8, !tbaa !14
  %1459 = fmul double %1452, %1458
  %1460 = fneg double %1459
  %1461 = call double @llvm.fmuladd.f64(double %1444, double %1450, double %1460)
  %1462 = getelementptr inbounds %struct.doublecomplex, ptr %34, i32 0, i32 0
  store double %1461, ptr %1462, align 8, !tbaa !11
  %1463 = getelementptr inbounds %struct.doublecomplex, ptr %60, i32 0, i32 0
  %1464 = load double, ptr %1463, align 8, !tbaa !11
  %1465 = load ptr, ptr %14, align 8, !tbaa !5
  %1466 = load i32, ptr %21, align 4, !tbaa !9
  %1467 = sext i32 %1466 to i64
  %1468 = getelementptr inbounds %struct.doublecomplex, ptr %1465, i64 %1467
  %1469 = getelementptr inbounds %struct.doublecomplex, ptr %1468, i32 0, i32 1
  %1470 = load double, ptr %1469, align 8, !tbaa !14
  %1471 = getelementptr inbounds %struct.doublecomplex, ptr %60, i32 0, i32 1
  %1472 = load double, ptr %1471, align 8, !tbaa !14
  %1473 = load ptr, ptr %14, align 8, !tbaa !5
  %1474 = load i32, ptr %21, align 4, !tbaa !9
  %1475 = sext i32 %1474 to i64
  %1476 = getelementptr inbounds %struct.doublecomplex, ptr %1473, i64 %1475
  %1477 = getelementptr inbounds %struct.doublecomplex, ptr %1476, i32 0, i32 0
  %1478 = load double, ptr %1477, align 8, !tbaa !11
  %1479 = fmul double %1472, %1478
  %1480 = call double @llvm.fmuladd.f64(double %1464, double %1470, double %1479)
  %1481 = getelementptr inbounds %struct.doublecomplex, ptr %34, i32 0, i32 1
  store double %1480, ptr %1481, align 8, !tbaa !14
  %1482 = getelementptr inbounds %struct.doublecomplex, ptr %33, i32 0, i32 0
  %1483 = load double, ptr %1482, align 8, !tbaa !11
  %1484 = getelementptr inbounds %struct.doublecomplex, ptr %34, i32 0, i32 0
  %1485 = load double, ptr %1484, align 8, !tbaa !11
  %1486 = fadd double %1483, %1485
  %1487 = getelementptr inbounds %struct.doublecomplex, ptr %32, i32 0, i32 0
  store double %1486, ptr %1487, align 8, !tbaa !11
  %1488 = getelementptr inbounds %struct.doublecomplex, ptr %33, i32 0, i32 1
  %1489 = load double, ptr %1488, align 8, !tbaa !14
  %1490 = getelementptr inbounds %struct.doublecomplex, ptr %34, i32 0, i32 1
  %1491 = load double, ptr %1490, align 8, !tbaa !14
  %1492 = fadd double %1489, %1491
  %1493 = getelementptr inbounds %struct.doublecomplex, ptr %32, i32 0, i32 1
  store double %1492, ptr %1493, align 8, !tbaa !14
  %1494 = load i32, ptr %49, align 4, !tbaa !9
  %1495 = load i32, ptr %17, align 4, !tbaa !9
  %1496 = mul nsw i32 %1494, %1495
  %1497 = add nsw i32 %1496, 3
  store i32 %1497, ptr %22, align 4, !tbaa !9
  %1498 = getelementptr inbounds %struct.doublecomplex, ptr %61, i32 0, i32 0
  %1499 = load double, ptr %1498, align 8, !tbaa !11
  %1500 = load ptr, ptr %14, align 8, !tbaa !5
  %1501 = load i32, ptr %22, align 4, !tbaa !9
  %1502 = sext i32 %1501 to i64
  %1503 = getelementptr inbounds %struct.doublecomplex, ptr %1500, i64 %1502
  %1504 = getelementptr inbounds %struct.doublecomplex, ptr %1503, i32 0, i32 0
  %1505 = load double, ptr %1504, align 8, !tbaa !11
  %1506 = getelementptr inbounds %struct.doublecomplex, ptr %61, i32 0, i32 1
  %1507 = load double, ptr %1506, align 8, !tbaa !14
  %1508 = load ptr, ptr %14, align 8, !tbaa !5
  %1509 = load i32, ptr %22, align 4, !tbaa !9
  %1510 = sext i32 %1509 to i64
  %1511 = getelementptr inbounds %struct.doublecomplex, ptr %1508, i64 %1510
  %1512 = getelementptr inbounds %struct.doublecomplex, ptr %1511, i32 0, i32 1
  %1513 = load double, ptr %1512, align 8, !tbaa !14
  %1514 = fmul double %1507, %1513
  %1515 = fneg double %1514
  %1516 = call double @llvm.fmuladd.f64(double %1499, double %1505, double %1515)
  %1517 = getelementptr inbounds %struct.doublecomplex, ptr %35, i32 0, i32 0
  store double %1516, ptr %1517, align 8, !tbaa !11
  %1518 = getelementptr inbounds %struct.doublecomplex, ptr %61, i32 0, i32 0
  %1519 = load double, ptr %1518, align 8, !tbaa !11
  %1520 = load ptr, ptr %14, align 8, !tbaa !5
  %1521 = load i32, ptr %22, align 4, !tbaa !9
  %1522 = sext i32 %1521 to i64
  %1523 = getelementptr inbounds %struct.doublecomplex, ptr %1520, i64 %1522
  %1524 = getelementptr inbounds %struct.doublecomplex, ptr %1523, i32 0, i32 1
  %1525 = load double, ptr %1524, align 8, !tbaa !14
  %1526 = getelementptr inbounds %struct.doublecomplex, ptr %61, i32 0, i32 1
  %1527 = load double, ptr %1526, align 8, !tbaa !14
  %1528 = load ptr, ptr %14, align 8, !tbaa !5
  %1529 = load i32, ptr %22, align 4, !tbaa !9
  %1530 = sext i32 %1529 to i64
  %1531 = getelementptr inbounds %struct.doublecomplex, ptr %1528, i64 %1530
  %1532 = getelementptr inbounds %struct.doublecomplex, ptr %1531, i32 0, i32 0
  %1533 = load double, ptr %1532, align 8, !tbaa !11
  %1534 = fmul double %1527, %1533
  %1535 = call double @llvm.fmuladd.f64(double %1519, double %1525, double %1534)
  %1536 = getelementptr inbounds %struct.doublecomplex, ptr %35, i32 0, i32 1
  store double %1535, ptr %1536, align 8, !tbaa !14
  %1537 = getelementptr inbounds %struct.doublecomplex, ptr %32, i32 0, i32 0
  %1538 = load double, ptr %1537, align 8, !tbaa !11
  %1539 = getelementptr inbounds %struct.doublecomplex, ptr %35, i32 0, i32 0
  %1540 = load double, ptr %1539, align 8, !tbaa !11
  %1541 = fadd double %1538, %1540
  %1542 = getelementptr inbounds %struct.doublecomplex, ptr %31, i32 0, i32 0
  store double %1541, ptr %1542, align 8, !tbaa !11
  %1543 = getelementptr inbounds %struct.doublecomplex, ptr %32, i32 0, i32 1
  %1544 = load double, ptr %1543, align 8, !tbaa !14
  %1545 = getelementptr inbounds %struct.doublecomplex, ptr %35, i32 0, i32 1
  %1546 = load double, ptr %1545, align 8, !tbaa !14
  %1547 = fadd double %1544, %1546
  %1548 = getelementptr inbounds %struct.doublecomplex, ptr %31, i32 0, i32 1
  store double %1547, ptr %1548, align 8, !tbaa !14
  %1549 = load i32, ptr %49, align 4, !tbaa !9
  %1550 = load i32, ptr %17, align 4, !tbaa !9
  %1551 = mul nsw i32 %1549, %1550
  %1552 = add nsw i32 %1551, 4
  store i32 %1552, ptr %23, align 4, !tbaa !9
  %1553 = getelementptr inbounds %struct.doublecomplex, ptr %62, i32 0, i32 0
  %1554 = load double, ptr %1553, align 8, !tbaa !11
  %1555 = load ptr, ptr %14, align 8, !tbaa !5
  %1556 = load i32, ptr %23, align 4, !tbaa !9
  %1557 = sext i32 %1556 to i64
  %1558 = getelementptr inbounds %struct.doublecomplex, ptr %1555, i64 %1557
  %1559 = getelementptr inbounds %struct.doublecomplex, ptr %1558, i32 0, i32 0
  %1560 = load double, ptr %1559, align 8, !tbaa !11
  %1561 = getelementptr inbounds %struct.doublecomplex, ptr %62, i32 0, i32 1
  %1562 = load double, ptr %1561, align 8, !tbaa !14
  %1563 = load ptr, ptr %14, align 8, !tbaa !5
  %1564 = load i32, ptr %23, align 4, !tbaa !9
  %1565 = sext i32 %1564 to i64
  %1566 = getelementptr inbounds %struct.doublecomplex, ptr %1563, i64 %1565
  %1567 = getelementptr inbounds %struct.doublecomplex, ptr %1566, i32 0, i32 1
  %1568 = load double, ptr %1567, align 8, !tbaa !14
  %1569 = fmul double %1562, %1568
  %1570 = fneg double %1569
  %1571 = call double @llvm.fmuladd.f64(double %1554, double %1560, double %1570)
  %1572 = getelementptr inbounds %struct.doublecomplex, ptr %36, i32 0, i32 0
  store double %1571, ptr %1572, align 8, !tbaa !11
  %1573 = getelementptr inbounds %struct.doublecomplex, ptr %62, i32 0, i32 0
  %1574 = load double, ptr %1573, align 8, !tbaa !11
  %1575 = load ptr, ptr %14, align 8, !tbaa !5
  %1576 = load i32, ptr %23, align 4, !tbaa !9
  %1577 = sext i32 %1576 to i64
  %1578 = getelementptr inbounds %struct.doublecomplex, ptr %1575, i64 %1577
  %1579 = getelementptr inbounds %struct.doublecomplex, ptr %1578, i32 0, i32 1
  %1580 = load double, ptr %1579, align 8, !tbaa !14
  %1581 = getelementptr inbounds %struct.doublecomplex, ptr %62, i32 0, i32 1
  %1582 = load double, ptr %1581, align 8, !tbaa !14
  %1583 = load ptr, ptr %14, align 8, !tbaa !5
  %1584 = load i32, ptr %23, align 4, !tbaa !9
  %1585 = sext i32 %1584 to i64
  %1586 = getelementptr inbounds %struct.doublecomplex, ptr %1583, i64 %1585
  %1587 = getelementptr inbounds %struct.doublecomplex, ptr %1586, i32 0, i32 0
  %1588 = load double, ptr %1587, align 8, !tbaa !11
  %1589 = fmul double %1582, %1588
  %1590 = call double @llvm.fmuladd.f64(double %1574, double %1580, double %1589)
  %1591 = getelementptr inbounds %struct.doublecomplex, ptr %36, i32 0, i32 1
  store double %1590, ptr %1591, align 8, !tbaa !14
  %1592 = getelementptr inbounds %struct.doublecomplex, ptr %31, i32 0, i32 0
  %1593 = load double, ptr %1592, align 8, !tbaa !11
  %1594 = getelementptr inbounds %struct.doublecomplex, ptr %36, i32 0, i32 0
  %1595 = load double, ptr %1594, align 8, !tbaa !11
  %1596 = fadd double %1593, %1595
  %1597 = getelementptr inbounds %struct.doublecomplex, ptr %30, i32 0, i32 0
  store double %1596, ptr %1597, align 8, !tbaa !11
  %1598 = getelementptr inbounds %struct.doublecomplex, ptr %31, i32 0, i32 1
  %1599 = load double, ptr %1598, align 8, !tbaa !14
  %1600 = getelementptr inbounds %struct.doublecomplex, ptr %36, i32 0, i32 1
  %1601 = load double, ptr %1600, align 8, !tbaa !14
  %1602 = fadd double %1599, %1601
  %1603 = getelementptr inbounds %struct.doublecomplex, ptr %30, i32 0, i32 1
  store double %1602, ptr %1603, align 8, !tbaa !14
  %1604 = getelementptr inbounds %struct.doublecomplex, ptr %30, i32 0, i32 0
  %1605 = load double, ptr %1604, align 8, !tbaa !11
  %1606 = getelementptr inbounds %struct.doublecomplex, ptr %70, i32 0, i32 0
  store double %1605, ptr %1606, align 8, !tbaa !11
  %1607 = getelementptr inbounds %struct.doublecomplex, ptr %30, i32 0, i32 1
  %1608 = load double, ptr %1607, align 8, !tbaa !14
  %1609 = getelementptr inbounds %struct.doublecomplex, ptr %70, i32 0, i32 1
  store double %1608, ptr %1609, align 8, !tbaa !14
  %1610 = load i32, ptr %49, align 4, !tbaa !9
  %1611 = load i32, ptr %17, align 4, !tbaa !9
  %1612 = mul nsw i32 %1610, %1611
  %1613 = add nsw i32 %1612, 1
  store i32 %1613, ptr %20, align 4, !tbaa !9
  %1614 = load i32, ptr %49, align 4, !tbaa !9
  %1615 = load i32, ptr %17, align 4, !tbaa !9
  %1616 = mul nsw i32 %1614, %1615
  %1617 = add nsw i32 %1616, 1
  store i32 %1617, ptr %21, align 4, !tbaa !9
  %1618 = getelementptr inbounds %struct.doublecomplex, ptr %70, i32 0, i32 0
  %1619 = load double, ptr %1618, align 8, !tbaa !11
  %1620 = getelementptr inbounds %struct.doublecomplex, ptr %50, i32 0, i32 0
  %1621 = load double, ptr %1620, align 8, !tbaa !11
  %1622 = getelementptr inbounds %struct.doublecomplex, ptr %70, i32 0, i32 1
  %1623 = load double, ptr %1622, align 8, !tbaa !14
  %1624 = getelementptr inbounds %struct.doublecomplex, ptr %50, i32 0, i32 1
  %1625 = load double, ptr %1624, align 8, !tbaa !14
  %1626 = fmul double %1623, %1625
  %1627 = fneg double %1626
  %1628 = call double @llvm.fmuladd.f64(double %1619, double %1621, double %1627)
  %1629 = getelementptr inbounds %struct.doublecomplex, ptr %31, i32 0, i32 0
  store double %1628, ptr %1629, align 8, !tbaa !11
  %1630 = getelementptr inbounds %struct.doublecomplex, ptr %70, i32 0, i32 0
  %1631 = load double, ptr %1630, align 8, !tbaa !11
  %1632 = getelementptr inbounds %struct.doublecomplex, ptr %50, i32 0, i32 1
  %1633 = load double, ptr %1632, align 8, !tbaa !14
  %1634 = getelementptr inbounds %struct.doublecomplex, ptr %70, i32 0, i32 1
  %1635 = load double, ptr %1634, align 8, !tbaa !14
  %1636 = getelementptr inbounds %struct.doublecomplex, ptr %50, i32 0, i32 0
  %1637 = load double, ptr %1636, align 8, !tbaa !11
  %1638 = fmul double %1635, %1637
  %1639 = call double @llvm.fmuladd.f64(double %1631, double %1633, double %1638)
  %1640 = getelementptr inbounds %struct.doublecomplex, ptr %31, i32 0, i32 1
  store double %1639, ptr %1640, align 8, !tbaa !14
  %1641 = load ptr, ptr %14, align 8, !tbaa !5
  %1642 = load i32, ptr %21, align 4, !tbaa !9
  %1643 = sext i32 %1642 to i64
  %1644 = getelementptr inbounds %struct.doublecomplex, ptr %1641, i64 %1643
  %1645 = getelementptr inbounds %struct.doublecomplex, ptr %1644, i32 0, i32 0
  %1646 = load double, ptr %1645, align 8, !tbaa !11
  %1647 = getelementptr inbounds %struct.doublecomplex, ptr %31, i32 0, i32 0
  %1648 = load double, ptr %1647, align 8, !tbaa !11
  %1649 = fsub double %1646, %1648
  %1650 = getelementptr inbounds %struct.doublecomplex, ptr %30, i32 0, i32 0
  store double %1649, ptr %1650, align 8, !tbaa !11
  %1651 = load ptr, ptr %14, align 8, !tbaa !5
  %1652 = load i32, ptr %21, align 4, !tbaa !9
  %1653 = sext i32 %1652 to i64
  %1654 = getelementptr inbounds %struct.doublecomplex, ptr %1651, i64 %1653
  %1655 = getelementptr inbounds %struct.doublecomplex, ptr %1654, i32 0, i32 1
  %1656 = load double, ptr %1655, align 8, !tbaa !14
  %1657 = getelementptr inbounds %struct.doublecomplex, ptr %31, i32 0, i32 1
  %1658 = load double, ptr %1657, align 8, !tbaa !14
  %1659 = fsub double %1656, %1658
  %1660 = getelementptr inbounds %struct.doublecomplex, ptr %30, i32 0, i32 1
  store double %1659, ptr %1660, align 8, !tbaa !14
  %1661 = getelementptr inbounds %struct.doublecomplex, ptr %30, i32 0, i32 0
  %1662 = load double, ptr %1661, align 8, !tbaa !11
  %1663 = load ptr, ptr %14, align 8, !tbaa !5
  %1664 = load i32, ptr %20, align 4, !tbaa !9
  %1665 = sext i32 %1664 to i64
  %1666 = getelementptr inbounds %struct.doublecomplex, ptr %1663, i64 %1665
  %1667 = getelementptr inbounds %struct.doublecomplex, ptr %1666, i32 0, i32 0
  store double %1662, ptr %1667, align 8, !tbaa !11
  %1668 = getelementptr inbounds %struct.doublecomplex, ptr %30, i32 0, i32 1
  %1669 = load double, ptr %1668, align 8, !tbaa !14
  %1670 = load ptr, ptr %14, align 8, !tbaa !5
  %1671 = load i32, ptr %20, align 4, !tbaa !9
  %1672 = sext i32 %1671 to i64
  %1673 = getelementptr inbounds %struct.doublecomplex, ptr %1670, i64 %1672
  %1674 = getelementptr inbounds %struct.doublecomplex, ptr %1673, i32 0, i32 1
  store double %1669, ptr %1674, align 8, !tbaa !14
  %1675 = load i32, ptr %49, align 4, !tbaa !9
  %1676 = load i32, ptr %17, align 4, !tbaa !9
  %1677 = mul nsw i32 %1675, %1676
  %1678 = add nsw i32 %1677, 2
  store i32 %1678, ptr %20, align 4, !tbaa !9
  %1679 = load i32, ptr %49, align 4, !tbaa !9
  %1680 = load i32, ptr %17, align 4, !tbaa !9
  %1681 = mul nsw i32 %1679, %1680
  %1682 = add nsw i32 %1681, 2
  store i32 %1682, ptr %21, align 4, !tbaa !9
  %1683 = getelementptr inbounds %struct.doublecomplex, ptr %70, i32 0, i32 0
  %1684 = load double, ptr %1683, align 8, !tbaa !11
  %1685 = getelementptr inbounds %struct.doublecomplex, ptr %51, i32 0, i32 0
  %1686 = load double, ptr %1685, align 8, !tbaa !11
  %1687 = getelementptr inbounds %struct.doublecomplex, ptr %70, i32 0, i32 1
  %1688 = load double, ptr %1687, align 8, !tbaa !14
  %1689 = getelementptr inbounds %struct.doublecomplex, ptr %51, i32 0, i32 1
  %1690 = load double, ptr %1689, align 8, !tbaa !14
  %1691 = fmul double %1688, %1690
  %1692 = fneg double %1691
  %1693 = call double @llvm.fmuladd.f64(double %1684, double %1686, double %1692)
  %1694 = getelementptr inbounds %struct.doublecomplex, ptr %31, i32 0, i32 0
  store double %1693, ptr %1694, align 8, !tbaa !11
  %1695 = getelementptr inbounds %struct.doublecomplex, ptr %70, i32 0, i32 0
  %1696 = load double, ptr %1695, align 8, !tbaa !11
  %1697 = getelementptr inbounds %struct.doublecomplex, ptr %51, i32 0, i32 1
  %1698 = load double, ptr %1697, align 8, !tbaa !14
  %1699 = getelementptr inbounds %struct.doublecomplex, ptr %70, i32 0, i32 1
  %1700 = load double, ptr %1699, align 8, !tbaa !14
  %1701 = getelementptr inbounds %struct.doublecomplex, ptr %51, i32 0, i32 0
  %1702 = load double, ptr %1701, align 8, !tbaa !11
  %1703 = fmul double %1700, %1702
  %1704 = call double @llvm.fmuladd.f64(double %1696, double %1698, double %1703)
  %1705 = getelementptr inbounds %struct.doublecomplex, ptr %31, i32 0, i32 1
  store double %1704, ptr %1705, align 8, !tbaa !14
  %1706 = load ptr, ptr %14, align 8, !tbaa !5
  %1707 = load i32, ptr %21, align 4, !tbaa !9
  %1708 = sext i32 %1707 to i64
  %1709 = getelementptr inbounds %struct.doublecomplex, ptr %1706, i64 %1708
  %1710 = getelementptr inbounds %struct.doublecomplex, ptr %1709, i32 0, i32 0
  %1711 = load double, ptr %1710, align 8, !tbaa !11
  %1712 = getelementptr inbounds %struct.doublecomplex, ptr %31, i32 0, i32 0
  %1713 = load double, ptr %1712, align 8, !tbaa !11
  %1714 = fsub double %1711, %1713
  %1715 = getelementptr inbounds %struct.doublecomplex, ptr %30, i32 0, i32 0
  store double %1714, ptr %1715, align 8, !tbaa !11
  %1716 = load ptr, ptr %14, align 8, !tbaa !5
  %1717 = load i32, ptr %21, align 4, !tbaa !9
  %1718 = sext i32 %1717 to i64
  %1719 = getelementptr inbounds %struct.doublecomplex, ptr %1716, i64 %1718
  %1720 = getelementptr inbounds %struct.doublecomplex, ptr %1719, i32 0, i32 1
  %1721 = load double, ptr %1720, align 8, !tbaa !14
  %1722 = getelementptr inbounds %struct.doublecomplex, ptr %31, i32 0, i32 1
  %1723 = load double, ptr %1722, align 8, !tbaa !14
  %1724 = fsub double %1721, %1723
  %1725 = getelementptr inbounds %struct.doublecomplex, ptr %30, i32 0, i32 1
  store double %1724, ptr %1725, align 8, !tbaa !14
  %1726 = getelementptr inbounds %struct.doublecomplex, ptr %30, i32 0, i32 0
  %1727 = load double, ptr %1726, align 8, !tbaa !11
  %1728 = load ptr, ptr %14, align 8, !tbaa !5
  %1729 = load i32, ptr %20, align 4, !tbaa !9
  %1730 = sext i32 %1729 to i64
  %1731 = getelementptr inbounds %struct.doublecomplex, ptr %1728, i64 %1730
  %1732 = getelementptr inbounds %struct.doublecomplex, ptr %1731, i32 0, i32 0
  store double %1727, ptr %1732, align 8, !tbaa !11
  %1733 = getelementptr inbounds %struct.doublecomplex, ptr %30, i32 0, i32 1
  %1734 = load double, ptr %1733, align 8, !tbaa !14
  %1735 = load ptr, ptr %14, align 8, !tbaa !5
  %1736 = load i32, ptr %20, align 4, !tbaa !9
  %1737 = sext i32 %1736 to i64
  %1738 = getelementptr inbounds %struct.doublecomplex, ptr %1735, i64 %1737
  %1739 = getelementptr inbounds %struct.doublecomplex, ptr %1738, i32 0, i32 1
  store double %1734, ptr %1739, align 8, !tbaa !14
  %1740 = load i32, ptr %49, align 4, !tbaa !9
  %1741 = load i32, ptr %17, align 4, !tbaa !9
  %1742 = mul nsw i32 %1740, %1741
  %1743 = add nsw i32 %1742, 3
  store i32 %1743, ptr %20, align 4, !tbaa !9
  %1744 = load i32, ptr %49, align 4, !tbaa !9
  %1745 = load i32, ptr %17, align 4, !tbaa !9
  %1746 = mul nsw i32 %1744, %1745
  %1747 = add nsw i32 %1746, 3
  store i32 %1747, ptr %21, align 4, !tbaa !9
  %1748 = getelementptr inbounds %struct.doublecomplex, ptr %70, i32 0, i32 0
  %1749 = load double, ptr %1748, align 8, !tbaa !11
  %1750 = getelementptr inbounds %struct.doublecomplex, ptr %52, i32 0, i32 0
  %1751 = load double, ptr %1750, align 8, !tbaa !11
  %1752 = getelementptr inbounds %struct.doublecomplex, ptr %70, i32 0, i32 1
  %1753 = load double, ptr %1752, align 8, !tbaa !14
  %1754 = getelementptr inbounds %struct.doublecomplex, ptr %52, i32 0, i32 1
  %1755 = load double, ptr %1754, align 8, !tbaa !14
  %1756 = fmul double %1753, %1755
  %1757 = fneg double %1756
  %1758 = call double @llvm.fmuladd.f64(double %1749, double %1751, double %1757)
  %1759 = getelementptr inbounds %struct.doublecomplex, ptr %31, i32 0, i32 0
  store double %1758, ptr %1759, align 8, !tbaa !11
  %1760 = getelementptr inbounds %struct.doublecomplex, ptr %70, i32 0, i32 0
  %1761 = load double, ptr %1760, align 8, !tbaa !11
  %1762 = getelementptr inbounds %struct.doublecomplex, ptr %52, i32 0, i32 1
  %1763 = load double, ptr %1762, align 8, !tbaa !14
  %1764 = getelementptr inbounds %struct.doublecomplex, ptr %70, i32 0, i32 1
  %1765 = load double, ptr %1764, align 8, !tbaa !14
  %1766 = getelementptr inbounds %struct.doublecomplex, ptr %52, i32 0, i32 0
  %1767 = load double, ptr %1766, align 8, !tbaa !11
  %1768 = fmul double %1765, %1767
  %1769 = call double @llvm.fmuladd.f64(double %1761, double %1763, double %1768)
  %1770 = getelementptr inbounds %struct.doublecomplex, ptr %31, i32 0, i32 1
  store double %1769, ptr %1770, align 8, !tbaa !14
  %1771 = load ptr, ptr %14, align 8, !tbaa !5
  %1772 = load i32, ptr %21, align 4, !tbaa !9
  %1773 = sext i32 %1772 to i64
  %1774 = getelementptr inbounds %struct.doublecomplex, ptr %1771, i64 %1773
  %1775 = getelementptr inbounds %struct.doublecomplex, ptr %1774, i32 0, i32 0
  %1776 = load double, ptr %1775, align 8, !tbaa !11
  %1777 = getelementptr inbounds %struct.doublecomplex, ptr %31, i32 0, i32 0
  %1778 = load double, ptr %1777, align 8, !tbaa !11
  %1779 = fsub double %1776, %1778
  %1780 = getelementptr inbounds %struct.doublecomplex, ptr %30, i32 0, i32 0
  store double %1779, ptr %1780, align 8, !tbaa !11
  %1781 = load ptr, ptr %14, align 8, !tbaa !5
  %1782 = load i32, ptr %21, align 4, !tbaa !9
  %1783 = sext i32 %1782 to i64
  %1784 = getelementptr inbounds %struct.doublecomplex, ptr %1781, i64 %1783
  %1785 = getelementptr inbounds %struct.doublecomplex, ptr %1784, i32 0, i32 1
  %1786 = load double, ptr %1785, align 8, !tbaa !14
  %1787 = getelementptr inbounds %struct.doublecomplex, ptr %31, i32 0, i32 1
  %1788 = load double, ptr %1787, align 8, !tbaa !14
  %1789 = fsub double %1786, %1788
  %1790 = getelementptr inbounds %struct.doublecomplex, ptr %30, i32 0, i32 1
  store double %1789, ptr %1790, align 8, !tbaa !14
  %1791 = getelementptr inbounds %struct.doublecomplex, ptr %30, i32 0, i32 0
  %1792 = load double, ptr %1791, align 8, !tbaa !11
  %1793 = load ptr, ptr %14, align 8, !tbaa !5
  %1794 = load i32, ptr %20, align 4, !tbaa !9
  %1795 = sext i32 %1794 to i64
  %1796 = getelementptr inbounds %struct.doublecomplex, ptr %1793, i64 %1795
  %1797 = getelementptr inbounds %struct.doublecomplex, ptr %1796, i32 0, i32 0
  store double %1792, ptr %1797, align 8, !tbaa !11
  %1798 = getelementptr inbounds %struct.doublecomplex, ptr %30, i32 0, i32 1
  %1799 = load double, ptr %1798, align 8, !tbaa !14
  %1800 = load ptr, ptr %14, align 8, !tbaa !5
  %1801 = load i32, ptr %20, align 4, !tbaa !9
  %1802 = sext i32 %1801 to i64
  %1803 = getelementptr inbounds %struct.doublecomplex, ptr %1800, i64 %1802
  %1804 = getelementptr inbounds %struct.doublecomplex, ptr %1803, i32 0, i32 1
  store double %1799, ptr %1804, align 8, !tbaa !14
  %1805 = load i32, ptr %49, align 4, !tbaa !9
  %1806 = load i32, ptr %17, align 4, !tbaa !9
  %1807 = mul nsw i32 %1805, %1806
  %1808 = add nsw i32 %1807, 4
  store i32 %1808, ptr %20, align 4, !tbaa !9
  %1809 = load i32, ptr %49, align 4, !tbaa !9
  %1810 = load i32, ptr %17, align 4, !tbaa !9
  %1811 = mul nsw i32 %1809, %1810
  %1812 = add nsw i32 %1811, 4
  store i32 %1812, ptr %21, align 4, !tbaa !9
  %1813 = getelementptr inbounds %struct.doublecomplex, ptr %70, i32 0, i32 0
  %1814 = load double, ptr %1813, align 8, !tbaa !11
  %1815 = getelementptr inbounds %struct.doublecomplex, ptr %53, i32 0, i32 0
  %1816 = load double, ptr %1815, align 8, !tbaa !11
  %1817 = getelementptr inbounds %struct.doublecomplex, ptr %70, i32 0, i32 1
  %1818 = load double, ptr %1817, align 8, !tbaa !14
  %1819 = getelementptr inbounds %struct.doublecomplex, ptr %53, i32 0, i32 1
  %1820 = load double, ptr %1819, align 8, !tbaa !14
  %1821 = fmul double %1818, %1820
  %1822 = fneg double %1821
  %1823 = call double @llvm.fmuladd.f64(double %1814, double %1816, double %1822)
  %1824 = getelementptr inbounds %struct.doublecomplex, ptr %31, i32 0, i32 0
  store double %1823, ptr %1824, align 8, !tbaa !11
  %1825 = getelementptr inbounds %struct.doublecomplex, ptr %70, i32 0, i32 0
  %1826 = load double, ptr %1825, align 8, !tbaa !11
  %1827 = getelementptr inbounds %struct.doublecomplex, ptr %53, i32 0, i32 1
  %1828 = load double, ptr %1827, align 8, !tbaa !14
  %1829 = getelementptr inbounds %struct.doublecomplex, ptr %70, i32 0, i32 1
  %1830 = load double, ptr %1829, align 8, !tbaa !14
  %1831 = getelementptr inbounds %struct.doublecomplex, ptr %53, i32 0, i32 0
  %1832 = load double, ptr %1831, align 8, !tbaa !11
  %1833 = fmul double %1830, %1832
  %1834 = call double @llvm.fmuladd.f64(double %1826, double %1828, double %1833)
  %1835 = getelementptr inbounds %struct.doublecomplex, ptr %31, i32 0, i32 1
  store double %1834, ptr %1835, align 8, !tbaa !14
  %1836 = load ptr, ptr %14, align 8, !tbaa !5
  %1837 = load i32, ptr %21, align 4, !tbaa !9
  %1838 = sext i32 %1837 to i64
  %1839 = getelementptr inbounds %struct.doublecomplex, ptr %1836, i64 %1838
  %1840 = getelementptr inbounds %struct.doublecomplex, ptr %1839, i32 0, i32 0
  %1841 = load double, ptr %1840, align 8, !tbaa !11
  %1842 = getelementptr inbounds %struct.doublecomplex, ptr %31, i32 0, i32 0
  %1843 = load double, ptr %1842, align 8, !tbaa !11
  %1844 = fsub double %1841, %1843
  %1845 = getelementptr inbounds %struct.doublecomplex, ptr %30, i32 0, i32 0
  store double %1844, ptr %1845, align 8, !tbaa !11
  %1846 = load ptr, ptr %14, align 8, !tbaa !5
  %1847 = load i32, ptr %21, align 4, !tbaa !9
  %1848 = sext i32 %1847 to i64
  %1849 = getelementptr inbounds %struct.doublecomplex, ptr %1846, i64 %1848
  %1850 = getelementptr inbounds %struct.doublecomplex, ptr %1849, i32 0, i32 1
  %1851 = load double, ptr %1850, align 8, !tbaa !14
  %1852 = getelementptr inbounds %struct.doublecomplex, ptr %31, i32 0, i32 1
  %1853 = load double, ptr %1852, align 8, !tbaa !14
  %1854 = fsub double %1851, %1853
  %1855 = getelementptr inbounds %struct.doublecomplex, ptr %30, i32 0, i32 1
  store double %1854, ptr %1855, align 8, !tbaa !14
  %1856 = getelementptr inbounds %struct.doublecomplex, ptr %30, i32 0, i32 0
  %1857 = load double, ptr %1856, align 8, !tbaa !11
  %1858 = load ptr, ptr %14, align 8, !tbaa !5
  %1859 = load i32, ptr %20, align 4, !tbaa !9
  %1860 = sext i32 %1859 to i64
  %1861 = getelementptr inbounds %struct.doublecomplex, ptr %1858, i64 %1860
  %1862 = getelementptr inbounds %struct.doublecomplex, ptr %1861, i32 0, i32 0
  store double %1857, ptr %1862, align 8, !tbaa !11
  %1863 = getelementptr inbounds %struct.doublecomplex, ptr %30, i32 0, i32 1
  %1864 = load double, ptr %1863, align 8, !tbaa !14
  %1865 = load ptr, ptr %14, align 8, !tbaa !5
  %1866 = load i32, ptr %20, align 4, !tbaa !9
  %1867 = sext i32 %1866 to i64
  %1868 = getelementptr inbounds %struct.doublecomplex, ptr %1865, i64 %1867
  %1869 = getelementptr inbounds %struct.doublecomplex, ptr %1868, i32 0, i32 1
  store double %1864, ptr %1869, align 8, !tbaa !14
  br label %1870

1870:                                             ; preds = %1395
  %1871 = load i32, ptr %49, align 4, !tbaa !9
  %1872 = add nsw i32 %1871, 1
  store i32 %1872, ptr %49, align 4, !tbaa !9
  br label %1391, !llvm.loop !19

1873:                                             ; preds = %1391
  br label %19171

1874:                                             ; preds = %107
  %1875 = load ptr, ptr %12, align 8, !tbaa !5
  %1876 = getelementptr inbounds %struct.doublecomplex, ptr %1875, i64 1
  %1877 = call { double, double } @Cd(ptr noundef %1876)
  %1878 = extractvalue { double, double } %1877, 0
  %1879 = extractvalue { double, double } %1877, 1
  %1880 = fneg double %1879
  %1881 = call ptr @_pCd(ptr noundef %30)
  %1882 = getelementptr inbounds { double, double }, ptr %1881, i32 0, i32 0
  %1883 = getelementptr inbounds { double, double }, ptr %1881, i32 0, i32 1
  store double %1878, ptr %1882, align 8
  store double %1880, ptr %1883, align 8
  %1884 = getelementptr inbounds %struct.doublecomplex, ptr %30, i32 0, i32 0
  %1885 = load double, ptr %1884, align 8, !tbaa !11
  %1886 = getelementptr inbounds %struct.doublecomplex, ptr %59, i32 0, i32 0
  store double %1885, ptr %1886, align 8, !tbaa !11
  %1887 = getelementptr inbounds %struct.doublecomplex, ptr %30, i32 0, i32 1
  %1888 = load double, ptr %1887, align 8, !tbaa !14
  %1889 = getelementptr inbounds %struct.doublecomplex, ptr %59, i32 0, i32 1
  store double %1888, ptr %1889, align 8, !tbaa !14
  %1890 = call { double, double } @Cd(ptr noundef %59)
  %1891 = extractvalue { double, double } %1890, 0
  %1892 = extractvalue { double, double } %1890, 1
  %1893 = fneg double %1892
  %1894 = call ptr @_pCd(ptr noundef %31)
  %1895 = getelementptr inbounds { double, double }, ptr %1894, i32 0, i32 0
  %1896 = getelementptr inbounds { double, double }, ptr %1894, i32 0, i32 1
  store double %1891, ptr %1895, align 8
  store double %1893, ptr %1896, align 8
  %1897 = load ptr, ptr %13, align 8, !tbaa !5
  %1898 = getelementptr inbounds %struct.doublecomplex, ptr %1897, i32 0, i32 0
  %1899 = load double, ptr %1898, align 8, !tbaa !11
  %1900 = getelementptr inbounds %struct.doublecomplex, ptr %31, i32 0, i32 0
  %1901 = load double, ptr %1900, align 8, !tbaa !11
  %1902 = load ptr, ptr %13, align 8, !tbaa !5
  %1903 = getelementptr inbounds %struct.doublecomplex, ptr %1902, i32 0, i32 1
  %1904 = load double, ptr %1903, align 8, !tbaa !14
  %1905 = getelementptr inbounds %struct.doublecomplex, ptr %31, i32 0, i32 1
  %1906 = load double, ptr %1905, align 8, !tbaa !14
  %1907 = fmul double %1904, %1906
  %1908 = fneg double %1907
  %1909 = call double @llvm.fmuladd.f64(double %1899, double %1901, double %1908)
  %1910 = getelementptr inbounds %struct.doublecomplex, ptr %30, i32 0, i32 0
  store double %1909, ptr %1910, align 8, !tbaa !11
  %1911 = load ptr, ptr %13, align 8, !tbaa !5
  %1912 = getelementptr inbounds %struct.doublecomplex, ptr %1911, i32 0, i32 0
  %1913 = load double, ptr %1912, align 8, !tbaa !11
  %1914 = getelementptr inbounds %struct.doublecomplex, ptr %31, i32 0, i32 1
  %1915 = load double, ptr %1914, align 8, !tbaa !14
  %1916 = load ptr, ptr %13, align 8, !tbaa !5
  %1917 = getelementptr inbounds %struct.doublecomplex, ptr %1916, i32 0, i32 1
  %1918 = load double, ptr %1917, align 8, !tbaa !14
  %1919 = getelementptr inbounds %struct.doublecomplex, ptr %31, i32 0, i32 0
  %1920 = load double, ptr %1919, align 8, !tbaa !11
  %1921 = fmul double %1918, %1920
  %1922 = call double @llvm.fmuladd.f64(double %1913, double %1915, double %1921)
  %1923 = getelementptr inbounds %struct.doublecomplex, ptr %30, i32 0, i32 1
  store double %1922, ptr %1923, align 8, !tbaa !14
  %1924 = getelementptr inbounds %struct.doublecomplex, ptr %30, i32 0, i32 0
  %1925 = load double, ptr %1924, align 8, !tbaa !11
  %1926 = getelementptr inbounds %struct.doublecomplex, ptr %50, i32 0, i32 0
  store double %1925, ptr %1926, align 8, !tbaa !11
  %1927 = getelementptr inbounds %struct.doublecomplex, ptr %30, i32 0, i32 1
  %1928 = load double, ptr %1927, align 8, !tbaa !14
  %1929 = getelementptr inbounds %struct.doublecomplex, ptr %50, i32 0, i32 1
  store double %1928, ptr %1929, align 8, !tbaa !14
  %1930 = load ptr, ptr %12, align 8, !tbaa !5
  %1931 = getelementptr inbounds %struct.doublecomplex, ptr %1930, i64 2
  %1932 = call { double, double } @Cd(ptr noundef %1931)
  %1933 = extractvalue { double, double } %1932, 0
  %1934 = extractvalue { double, double } %1932, 1
  %1935 = fneg double %1934
  %1936 = call ptr @_pCd(ptr noundef %30)
  %1937 = getelementptr inbounds { double, double }, ptr %1936, i32 0, i32 0
  %1938 = getelementptr inbounds { double, double }, ptr %1936, i32 0, i32 1
  store double %1933, ptr %1937, align 8
  store double %1935, ptr %1938, align 8
  %1939 = getelementptr inbounds %struct.doublecomplex, ptr %30, i32 0, i32 0
  %1940 = load double, ptr %1939, align 8, !tbaa !11
  %1941 = getelementptr inbounds %struct.doublecomplex, ptr %60, i32 0, i32 0
  store double %1940, ptr %1941, align 8, !tbaa !11
  %1942 = getelementptr inbounds %struct.doublecomplex, ptr %30, i32 0, i32 1
  %1943 = load double, ptr %1942, align 8, !tbaa !14
  %1944 = getelementptr inbounds %struct.doublecomplex, ptr %60, i32 0, i32 1
  store double %1943, ptr %1944, align 8, !tbaa !14
  %1945 = call { double, double } @Cd(ptr noundef %60)
  %1946 = extractvalue { double, double } %1945, 0
  %1947 = extractvalue { double, double } %1945, 1
  %1948 = fneg double %1947
  %1949 = call ptr @_pCd(ptr noundef %31)
  %1950 = getelementptr inbounds { double, double }, ptr %1949, i32 0, i32 0
  %1951 = getelementptr inbounds { double, double }, ptr %1949, i32 0, i32 1
  store double %1946, ptr %1950, align 8
  store double %1948, ptr %1951, align 8
  %1952 = load ptr, ptr %13, align 8, !tbaa !5
  %1953 = getelementptr inbounds %struct.doublecomplex, ptr %1952, i32 0, i32 0
  %1954 = load double, ptr %1953, align 8, !tbaa !11
  %1955 = getelementptr inbounds %struct.doublecomplex, ptr %31, i32 0, i32 0
  %1956 = load double, ptr %1955, align 8, !tbaa !11
  %1957 = load ptr, ptr %13, align 8, !tbaa !5
  %1958 = getelementptr inbounds %struct.doublecomplex, ptr %1957, i32 0, i32 1
  %1959 = load double, ptr %1958, align 8, !tbaa !14
  %1960 = getelementptr inbounds %struct.doublecomplex, ptr %31, i32 0, i32 1
  %1961 = load double, ptr %1960, align 8, !tbaa !14
  %1962 = fmul double %1959, %1961
  %1963 = fneg double %1962
  %1964 = call double @llvm.fmuladd.f64(double %1954, double %1956, double %1963)
  %1965 = getelementptr inbounds %struct.doublecomplex, ptr %30, i32 0, i32 0
  store double %1964, ptr %1965, align 8, !tbaa !11
  %1966 = load ptr, ptr %13, align 8, !tbaa !5
  %1967 = getelementptr inbounds %struct.doublecomplex, ptr %1966, i32 0, i32 0
  %1968 = load double, ptr %1967, align 8, !tbaa !11
  %1969 = getelementptr inbounds %struct.doublecomplex, ptr %31, i32 0, i32 1
  %1970 = load double, ptr %1969, align 8, !tbaa !14
  %1971 = load ptr, ptr %13, align 8, !tbaa !5
  %1972 = getelementptr inbounds %struct.doublecomplex, ptr %1971, i32 0, i32 1
  %1973 = load double, ptr %1972, align 8, !tbaa !14
  %1974 = getelementptr inbounds %struct.doublecomplex, ptr %31, i32 0, i32 0
  %1975 = load double, ptr %1974, align 8, !tbaa !11
  %1976 = fmul double %1973, %1975
  %1977 = call double @llvm.fmuladd.f64(double %1968, double %1970, double %1976)
  %1978 = getelementptr inbounds %struct.doublecomplex, ptr %30, i32 0, i32 1
  store double %1977, ptr %1978, align 8, !tbaa !14
  %1979 = getelementptr inbounds %struct.doublecomplex, ptr %30, i32 0, i32 0
  %1980 = load double, ptr %1979, align 8, !tbaa !11
  %1981 = getelementptr inbounds %struct.doublecomplex, ptr %51, i32 0, i32 0
  store double %1980, ptr %1981, align 8, !tbaa !11
  %1982 = getelementptr inbounds %struct.doublecomplex, ptr %30, i32 0, i32 1
  %1983 = load double, ptr %1982, align 8, !tbaa !14
  %1984 = getelementptr inbounds %struct.doublecomplex, ptr %51, i32 0, i32 1
  store double %1983, ptr %1984, align 8, !tbaa !14
  %1985 = load ptr, ptr %12, align 8, !tbaa !5
  %1986 = getelementptr inbounds %struct.doublecomplex, ptr %1985, i64 3
  %1987 = call { double, double } @Cd(ptr noundef %1986)
  %1988 = extractvalue { double, double } %1987, 0
  %1989 = extractvalue { double, double } %1987, 1
  %1990 = fneg double %1989
  %1991 = call ptr @_pCd(ptr noundef %30)
  %1992 = getelementptr inbounds { double, double }, ptr %1991, i32 0, i32 0
  %1993 = getelementptr inbounds { double, double }, ptr %1991, i32 0, i32 1
  store double %1988, ptr %1992, align 8
  store double %1990, ptr %1993, align 8
  %1994 = getelementptr inbounds %struct.doublecomplex, ptr %30, i32 0, i32 0
  %1995 = load double, ptr %1994, align 8, !tbaa !11
  %1996 = getelementptr inbounds %struct.doublecomplex, ptr %61, i32 0, i32 0
  store double %1995, ptr %1996, align 8, !tbaa !11
  %1997 = getelementptr inbounds %struct.doublecomplex, ptr %30, i32 0, i32 1
  %1998 = load double, ptr %1997, align 8, !tbaa !14
  %1999 = getelementptr inbounds %struct.doublecomplex, ptr %61, i32 0, i32 1
  store double %1998, ptr %1999, align 8, !tbaa !14
  %2000 = call { double, double } @Cd(ptr noundef %61)
  %2001 = extractvalue { double, double } %2000, 0
  %2002 = extractvalue { double, double } %2000, 1
  %2003 = fneg double %2002
  %2004 = call ptr @_pCd(ptr noundef %31)
  %2005 = getelementptr inbounds { double, double }, ptr %2004, i32 0, i32 0
  %2006 = getelementptr inbounds { double, double }, ptr %2004, i32 0, i32 1
  store double %2001, ptr %2005, align 8
  store double %2003, ptr %2006, align 8
  %2007 = load ptr, ptr %13, align 8, !tbaa !5
  %2008 = getelementptr inbounds %struct.doublecomplex, ptr %2007, i32 0, i32 0
  %2009 = load double, ptr %2008, align 8, !tbaa !11
  %2010 = getelementptr inbounds %struct.doublecomplex, ptr %31, i32 0, i32 0
  %2011 = load double, ptr %2010, align 8, !tbaa !11
  %2012 = load ptr, ptr %13, align 8, !tbaa !5
  %2013 = getelementptr inbounds %struct.doublecomplex, ptr %2012, i32 0, i32 1
  %2014 = load double, ptr %2013, align 8, !tbaa !14
  %2015 = getelementptr inbounds %struct.doublecomplex, ptr %31, i32 0, i32 1
  %2016 = load double, ptr %2015, align 8, !tbaa !14
  %2017 = fmul double %2014, %2016
  %2018 = fneg double %2017
  %2019 = call double @llvm.fmuladd.f64(double %2009, double %2011, double %2018)
  %2020 = getelementptr inbounds %struct.doublecomplex, ptr %30, i32 0, i32 0
  store double %2019, ptr %2020, align 8, !tbaa !11
  %2021 = load ptr, ptr %13, align 8, !tbaa !5
  %2022 = getelementptr inbounds %struct.doublecomplex, ptr %2021, i32 0, i32 0
  %2023 = load double, ptr %2022, align 8, !tbaa !11
  %2024 = getelementptr inbounds %struct.doublecomplex, ptr %31, i32 0, i32 1
  %2025 = load double, ptr %2024, align 8, !tbaa !14
  %2026 = load ptr, ptr %13, align 8, !tbaa !5
  %2027 = getelementptr inbounds %struct.doublecomplex, ptr %2026, i32 0, i32 1
  %2028 = load double, ptr %2027, align 8, !tbaa !14
  %2029 = getelementptr inbounds %struct.doublecomplex, ptr %31, i32 0, i32 0
  %2030 = load double, ptr %2029, align 8, !tbaa !11
  %2031 = fmul double %2028, %2030
  %2032 = call double @llvm.fmuladd.f64(double %2023, double %2025, double %2031)
  %2033 = getelementptr inbounds %struct.doublecomplex, ptr %30, i32 0, i32 1
  store double %2032, ptr %2033, align 8, !tbaa !14
  %2034 = getelementptr inbounds %struct.doublecomplex, ptr %30, i32 0, i32 0
  %2035 = load double, ptr %2034, align 8, !tbaa !11
  %2036 = getelementptr inbounds %struct.doublecomplex, ptr %52, i32 0, i32 0
  store double %2035, ptr %2036, align 8, !tbaa !11
  %2037 = getelementptr inbounds %struct.doublecomplex, ptr %30, i32 0, i32 1
  %2038 = load double, ptr %2037, align 8, !tbaa !14
  %2039 = getelementptr inbounds %struct.doublecomplex, ptr %52, i32 0, i32 1
  store double %2038, ptr %2039, align 8, !tbaa !14
  %2040 = load ptr, ptr %12, align 8, !tbaa !5
  %2041 = getelementptr inbounds %struct.doublecomplex, ptr %2040, i64 4
  %2042 = call { double, double } @Cd(ptr noundef %2041)
  %2043 = extractvalue { double, double } %2042, 0
  %2044 = extractvalue { double, double } %2042, 1
  %2045 = fneg double %2044
  %2046 = call ptr @_pCd(ptr noundef %30)
  %2047 = getelementptr inbounds { double, double }, ptr %2046, i32 0, i32 0
  %2048 = getelementptr inbounds { double, double }, ptr %2046, i32 0, i32 1
  store double %2043, ptr %2047, align 8
  store double %2045, ptr %2048, align 8
  %2049 = getelementptr inbounds %struct.doublecomplex, ptr %30, i32 0, i32 0
  %2050 = load double, ptr %2049, align 8, !tbaa !11
  %2051 = getelementptr inbounds %struct.doublecomplex, ptr %62, i32 0, i32 0
  store double %2050, ptr %2051, align 8, !tbaa !11
  %2052 = getelementptr inbounds %struct.doublecomplex, ptr %30, i32 0, i32 1
  %2053 = load double, ptr %2052, align 8, !tbaa !14
  %2054 = getelementptr inbounds %struct.doublecomplex, ptr %62, i32 0, i32 1
  store double %2053, ptr %2054, align 8, !tbaa !14
  %2055 = call { double, double } @Cd(ptr noundef %62)
  %2056 = extractvalue { double, double } %2055, 0
  %2057 = extractvalue { double, double } %2055, 1
  %2058 = fneg double %2057
  %2059 = call ptr @_pCd(ptr noundef %31)
  %2060 = getelementptr inbounds { double, double }, ptr %2059, i32 0, i32 0
  %2061 = getelementptr inbounds { double, double }, ptr %2059, i32 0, i32 1
  store double %2056, ptr %2060, align 8
  store double %2058, ptr %2061, align 8
  %2062 = load ptr, ptr %13, align 8, !tbaa !5
  %2063 = getelementptr inbounds %struct.doublecomplex, ptr %2062, i32 0, i32 0
  %2064 = load double, ptr %2063, align 8, !tbaa !11
  %2065 = getelementptr inbounds %struct.doublecomplex, ptr %31, i32 0, i32 0
  %2066 = load double, ptr %2065, align 8, !tbaa !11
  %2067 = load ptr, ptr %13, align 8, !tbaa !5
  %2068 = getelementptr inbounds %struct.doublecomplex, ptr %2067, i32 0, i32 1
  %2069 = load double, ptr %2068, align 8, !tbaa !14
  %2070 = getelementptr inbounds %struct.doublecomplex, ptr %31, i32 0, i32 1
  %2071 = load double, ptr %2070, align 8, !tbaa !14
  %2072 = fmul double %2069, %2071
  %2073 = fneg double %2072
  %2074 = call double @llvm.fmuladd.f64(double %2064, double %2066, double %2073)
  %2075 = getelementptr inbounds %struct.doublecomplex, ptr %30, i32 0, i32 0
  store double %2074, ptr %2075, align 8, !tbaa !11
  %2076 = load ptr, ptr %13, align 8, !tbaa !5
  %2077 = getelementptr inbounds %struct.doublecomplex, ptr %2076, i32 0, i32 0
  %2078 = load double, ptr %2077, align 8, !tbaa !11
  %2079 = getelementptr inbounds %struct.doublecomplex, ptr %31, i32 0, i32 1
  %2080 = load double, ptr %2079, align 8, !tbaa !14
  %2081 = load ptr, ptr %13, align 8, !tbaa !5
  %2082 = getelementptr inbounds %struct.doublecomplex, ptr %2081, i32 0, i32 1
  %2083 = load double, ptr %2082, align 8, !tbaa !14
  %2084 = getelementptr inbounds %struct.doublecomplex, ptr %31, i32 0, i32 0
  %2085 = load double, ptr %2084, align 8, !tbaa !11
  %2086 = fmul double %2083, %2085
  %2087 = call double @llvm.fmuladd.f64(double %2078, double %2080, double %2086)
  %2088 = getelementptr inbounds %struct.doublecomplex, ptr %30, i32 0, i32 1
  store double %2087, ptr %2088, align 8, !tbaa !14
  %2089 = getelementptr inbounds %struct.doublecomplex, ptr %30, i32 0, i32 0
  %2090 = load double, ptr %2089, align 8, !tbaa !11
  %2091 = getelementptr inbounds %struct.doublecomplex, ptr %53, i32 0, i32 0
  store double %2090, ptr %2091, align 8, !tbaa !11
  %2092 = getelementptr inbounds %struct.doublecomplex, ptr %30, i32 0, i32 1
  %2093 = load double, ptr %2092, align 8, !tbaa !14
  %2094 = getelementptr inbounds %struct.doublecomplex, ptr %53, i32 0, i32 1
  store double %2093, ptr %2094, align 8, !tbaa !14
  %2095 = load ptr, ptr %12, align 8, !tbaa !5
  %2096 = getelementptr inbounds %struct.doublecomplex, ptr %2095, i64 5
  %2097 = call { double, double } @Cd(ptr noundef %2096)
  %2098 = extractvalue { double, double } %2097, 0
  %2099 = extractvalue { double, double } %2097, 1
  %2100 = fneg double %2099
  %2101 = call ptr @_pCd(ptr noundef %30)
  %2102 = getelementptr inbounds { double, double }, ptr %2101, i32 0, i32 0
  %2103 = getelementptr inbounds { double, double }, ptr %2101, i32 0, i32 1
  store double %2098, ptr %2102, align 8
  store double %2100, ptr %2103, align 8
  %2104 = getelementptr inbounds %struct.doublecomplex, ptr %30, i32 0, i32 0
  %2105 = load double, ptr %2104, align 8, !tbaa !11
  %2106 = getelementptr inbounds %struct.doublecomplex, ptr %63, i32 0, i32 0
  store double %2105, ptr %2106, align 8, !tbaa !11
  %2107 = getelementptr inbounds %struct.doublecomplex, ptr %30, i32 0, i32 1
  %2108 = load double, ptr %2107, align 8, !tbaa !14
  %2109 = getelementptr inbounds %struct.doublecomplex, ptr %63, i32 0, i32 1
  store double %2108, ptr %2109, align 8, !tbaa !14
  %2110 = call { double, double } @Cd(ptr noundef %63)
  %2111 = extractvalue { double, double } %2110, 0
  %2112 = extractvalue { double, double } %2110, 1
  %2113 = fneg double %2112
  %2114 = call ptr @_pCd(ptr noundef %31)
  %2115 = getelementptr inbounds { double, double }, ptr %2114, i32 0, i32 0
  %2116 = getelementptr inbounds { double, double }, ptr %2114, i32 0, i32 1
  store double %2111, ptr %2115, align 8
  store double %2113, ptr %2116, align 8
  %2117 = load ptr, ptr %13, align 8, !tbaa !5
  %2118 = getelementptr inbounds %struct.doublecomplex, ptr %2117, i32 0, i32 0
  %2119 = load double, ptr %2118, align 8, !tbaa !11
  %2120 = getelementptr inbounds %struct.doublecomplex, ptr %31, i32 0, i32 0
  %2121 = load double, ptr %2120, align 8, !tbaa !11
  %2122 = load ptr, ptr %13, align 8, !tbaa !5
  %2123 = getelementptr inbounds %struct.doublecomplex, ptr %2122, i32 0, i32 1
  %2124 = load double, ptr %2123, align 8, !tbaa !14
  %2125 = getelementptr inbounds %struct.doublecomplex, ptr %31, i32 0, i32 1
  %2126 = load double, ptr %2125, align 8, !tbaa !14
  %2127 = fmul double %2124, %2126
  %2128 = fneg double %2127
  %2129 = call double @llvm.fmuladd.f64(double %2119, double %2121, double %2128)
  %2130 = getelementptr inbounds %struct.doublecomplex, ptr %30, i32 0, i32 0
  store double %2129, ptr %2130, align 8, !tbaa !11
  %2131 = load ptr, ptr %13, align 8, !tbaa !5
  %2132 = getelementptr inbounds %struct.doublecomplex, ptr %2131, i32 0, i32 0
  %2133 = load double, ptr %2132, align 8, !tbaa !11
  %2134 = getelementptr inbounds %struct.doublecomplex, ptr %31, i32 0, i32 1
  %2135 = load double, ptr %2134, align 8, !tbaa !14
  %2136 = load ptr, ptr %13, align 8, !tbaa !5
  %2137 = getelementptr inbounds %struct.doublecomplex, ptr %2136, i32 0, i32 1
  %2138 = load double, ptr %2137, align 8, !tbaa !14
  %2139 = getelementptr inbounds %struct.doublecomplex, ptr %31, i32 0, i32 0
  %2140 = load double, ptr %2139, align 8, !tbaa !11
  %2141 = fmul double %2138, %2140
  %2142 = call double @llvm.fmuladd.f64(double %2133, double %2135, double %2141)
  %2143 = getelementptr inbounds %struct.doublecomplex, ptr %30, i32 0, i32 1
  store double %2142, ptr %2143, align 8, !tbaa !14
  %2144 = getelementptr inbounds %struct.doublecomplex, ptr %30, i32 0, i32 0
  %2145 = load double, ptr %2144, align 8, !tbaa !11
  %2146 = getelementptr inbounds %struct.doublecomplex, ptr %54, i32 0, i32 0
  store double %2145, ptr %2146, align 8, !tbaa !11
  %2147 = getelementptr inbounds %struct.doublecomplex, ptr %30, i32 0, i32 1
  %2148 = load double, ptr %2147, align 8, !tbaa !14
  %2149 = getelementptr inbounds %struct.doublecomplex, ptr %54, i32 0, i32 1
  store double %2148, ptr %2149, align 8, !tbaa !14
  %2150 = load ptr, ptr %11, align 8, !tbaa !5
  %2151 = load i32, ptr %2150, align 4, !tbaa !9
  store i32 %2151, ptr %19, align 4, !tbaa !9
  store i32 1, ptr %49, align 4, !tbaa !9
  br label %2152

2152:                                             ; preds = %2751, %1874
  %2153 = load i32, ptr %49, align 4, !tbaa !9
  %2154 = load i32, ptr %19, align 4, !tbaa !9
  %2155 = icmp sle i32 %2153, %2154
  br i1 %2155, label %2156, label %2754

2156:                                             ; preds = %2152
  %2157 = load i32, ptr %49, align 4, !tbaa !9
  %2158 = load i32, ptr %17, align 4, !tbaa !9
  %2159 = mul nsw i32 %2157, %2158
  %2160 = add nsw i32 %2159, 1
  store i32 %2160, ptr %20, align 4, !tbaa !9
  %2161 = getelementptr inbounds %struct.doublecomplex, ptr %59, i32 0, i32 0
  %2162 = load double, ptr %2161, align 8, !tbaa !11
  %2163 = load ptr, ptr %14, align 8, !tbaa !5
  %2164 = load i32, ptr %20, align 4, !tbaa !9
  %2165 = sext i32 %2164 to i64
  %2166 = getelementptr inbounds %struct.doublecomplex, ptr %2163, i64 %2165
  %2167 = getelementptr inbounds %struct.doublecomplex, ptr %2166, i32 0, i32 0
  %2168 = load double, ptr %2167, align 8, !tbaa !11
  %2169 = getelementptr inbounds %struct.doublecomplex, ptr %59, i32 0, i32 1
  %2170 = load double, ptr %2169, align 8, !tbaa !14
  %2171 = load ptr, ptr %14, align 8, !tbaa !5
  %2172 = load i32, ptr %20, align 4, !tbaa !9
  %2173 = sext i32 %2172 to i64
  %2174 = getelementptr inbounds %struct.doublecomplex, ptr %2171, i64 %2173
  %2175 = getelementptr inbounds %struct.doublecomplex, ptr %2174, i32 0, i32 1
  %2176 = load double, ptr %2175, align 8, !tbaa !14
  %2177 = fmul double %2170, %2176
  %2178 = fneg double %2177
  %2179 = call double @llvm.fmuladd.f64(double %2162, double %2168, double %2178)
  %2180 = getelementptr inbounds %struct.doublecomplex, ptr %34, i32 0, i32 0
  store double %2179, ptr %2180, align 8, !tbaa !11
  %2181 = getelementptr inbounds %struct.doublecomplex, ptr %59, i32 0, i32 0
  %2182 = load double, ptr %2181, align 8, !tbaa !11
  %2183 = load ptr, ptr %14, align 8, !tbaa !5
  %2184 = load i32, ptr %20, align 4, !tbaa !9
  %2185 = sext i32 %2184 to i64
  %2186 = getelementptr inbounds %struct.doublecomplex, ptr %2183, i64 %2185
  %2187 = getelementptr inbounds %struct.doublecomplex, ptr %2186, i32 0, i32 1
  %2188 = load double, ptr %2187, align 8, !tbaa !14
  %2189 = getelementptr inbounds %struct.doublecomplex, ptr %59, i32 0, i32 1
  %2190 = load double, ptr %2189, align 8, !tbaa !14
  %2191 = load ptr, ptr %14, align 8, !tbaa !5
  %2192 = load i32, ptr %20, align 4, !tbaa !9
  %2193 = sext i32 %2192 to i64
  %2194 = getelementptr inbounds %struct.doublecomplex, ptr %2191, i64 %2193
  %2195 = getelementptr inbounds %struct.doublecomplex, ptr %2194, i32 0, i32 0
  %2196 = load double, ptr %2195, align 8, !tbaa !11
  %2197 = fmul double %2190, %2196
  %2198 = call double @llvm.fmuladd.f64(double %2182, double %2188, double %2197)
  %2199 = getelementptr inbounds %struct.doublecomplex, ptr %34, i32 0, i32 1
  store double %2198, ptr %2199, align 8, !tbaa !14
  %2200 = load i32, ptr %49, align 4, !tbaa !9
  %2201 = load i32, ptr %17, align 4, !tbaa !9
  %2202 = mul nsw i32 %2200, %2201
  %2203 = add nsw i32 %2202, 2
  store i32 %2203, ptr %21, align 4, !tbaa !9
  %2204 = getelementptr inbounds %struct.doublecomplex, ptr %60, i32 0, i32 0
  %2205 = load double, ptr %2204, align 8, !tbaa !11
  %2206 = load ptr, ptr %14, align 8, !tbaa !5
  %2207 = load i32, ptr %21, align 4, !tbaa !9
  %2208 = sext i32 %2207 to i64
  %2209 = getelementptr inbounds %struct.doublecomplex, ptr %2206, i64 %2208
  %2210 = getelementptr inbounds %struct.doublecomplex, ptr %2209, i32 0, i32 0
  %2211 = load double, ptr %2210, align 8, !tbaa !11
  %2212 = getelementptr inbounds %struct.doublecomplex, ptr %60, i32 0, i32 1
  %2213 = load double, ptr %2212, align 8, !tbaa !14
  %2214 = load ptr, ptr %14, align 8, !tbaa !5
  %2215 = load i32, ptr %21, align 4, !tbaa !9
  %2216 = sext i32 %2215 to i64
  %2217 = getelementptr inbounds %struct.doublecomplex, ptr %2214, i64 %2216
  %2218 = getelementptr inbounds %struct.doublecomplex, ptr %2217, i32 0, i32 1
  %2219 = load double, ptr %2218, align 8, !tbaa !14
  %2220 = fmul double %2213, %2219
  %2221 = fneg double %2220
  %2222 = call double @llvm.fmuladd.f64(double %2205, double %2211, double %2221)
  %2223 = getelementptr inbounds %struct.doublecomplex, ptr %35, i32 0, i32 0
  store double %2222, ptr %2223, align 8, !tbaa !11
  %2224 = getelementptr inbounds %struct.doublecomplex, ptr %60, i32 0, i32 0
  %2225 = load double, ptr %2224, align 8, !tbaa !11
  %2226 = load ptr, ptr %14, align 8, !tbaa !5
  %2227 = load i32, ptr %21, align 4, !tbaa !9
  %2228 = sext i32 %2227 to i64
  %2229 = getelementptr inbounds %struct.doublecomplex, ptr %2226, i64 %2228
  %2230 = getelementptr inbounds %struct.doublecomplex, ptr %2229, i32 0, i32 1
  %2231 = load double, ptr %2230, align 8, !tbaa !14
  %2232 = getelementptr inbounds %struct.doublecomplex, ptr %60, i32 0, i32 1
  %2233 = load double, ptr %2232, align 8, !tbaa !14
  %2234 = load ptr, ptr %14, align 8, !tbaa !5
  %2235 = load i32, ptr %21, align 4, !tbaa !9
  %2236 = sext i32 %2235 to i64
  %2237 = getelementptr inbounds %struct.doublecomplex, ptr %2234, i64 %2236
  %2238 = getelementptr inbounds %struct.doublecomplex, ptr %2237, i32 0, i32 0
  %2239 = load double, ptr %2238, align 8, !tbaa !11
  %2240 = fmul double %2233, %2239
  %2241 = call double @llvm.fmuladd.f64(double %2225, double %2231, double %2240)
  %2242 = getelementptr inbounds %struct.doublecomplex, ptr %35, i32 0, i32 1
  store double %2241, ptr %2242, align 8, !tbaa !14
  %2243 = getelementptr inbounds %struct.doublecomplex, ptr %34, i32 0, i32 0
  %2244 = load double, ptr %2243, align 8, !tbaa !11
  %2245 = getelementptr inbounds %struct.doublecomplex, ptr %35, i32 0, i32 0
  %2246 = load double, ptr %2245, align 8, !tbaa !11
  %2247 = fadd double %2244, %2246
  %2248 = getelementptr inbounds %struct.doublecomplex, ptr %33, i32 0, i32 0
  store double %2247, ptr %2248, align 8, !tbaa !11
  %2249 = getelementptr inbounds %struct.doublecomplex, ptr %34, i32 0, i32 1
  %2250 = load double, ptr %2249, align 8, !tbaa !14
  %2251 = getelementptr inbounds %struct.doublecomplex, ptr %35, i32 0, i32 1
  %2252 = load double, ptr %2251, align 8, !tbaa !14
  %2253 = fadd double %2250, %2252
  %2254 = getelementptr inbounds %struct.doublecomplex, ptr %33, i32 0, i32 1
  store double %2253, ptr %2254, align 8, !tbaa !14
  %2255 = load i32, ptr %49, align 4, !tbaa !9
  %2256 = load i32, ptr %17, align 4, !tbaa !9
  %2257 = mul nsw i32 %2255, %2256
  %2258 = add nsw i32 %2257, 3
  store i32 %2258, ptr %22, align 4, !tbaa !9
  %2259 = getelementptr inbounds %struct.doublecomplex, ptr %61, i32 0, i32 0
  %2260 = load double, ptr %2259, align 8, !tbaa !11
  %2261 = load ptr, ptr %14, align 8, !tbaa !5
  %2262 = load i32, ptr %22, align 4, !tbaa !9
  %2263 = sext i32 %2262 to i64
  %2264 = getelementptr inbounds %struct.doublecomplex, ptr %2261, i64 %2263
  %2265 = getelementptr inbounds %struct.doublecomplex, ptr %2264, i32 0, i32 0
  %2266 = load double, ptr %2265, align 8, !tbaa !11
  %2267 = getelementptr inbounds %struct.doublecomplex, ptr %61, i32 0, i32 1
  %2268 = load double, ptr %2267, align 8, !tbaa !14
  %2269 = load ptr, ptr %14, align 8, !tbaa !5
  %2270 = load i32, ptr %22, align 4, !tbaa !9
  %2271 = sext i32 %2270 to i64
  %2272 = getelementptr inbounds %struct.doublecomplex, ptr %2269, i64 %2271
  %2273 = getelementptr inbounds %struct.doublecomplex, ptr %2272, i32 0, i32 1
  %2274 = load double, ptr %2273, align 8, !tbaa !14
  %2275 = fmul double %2268, %2274
  %2276 = fneg double %2275
  %2277 = call double @llvm.fmuladd.f64(double %2260, double %2266, double %2276)
  %2278 = getelementptr inbounds %struct.doublecomplex, ptr %36, i32 0, i32 0
  store double %2277, ptr %2278, align 8, !tbaa !11
  %2279 = getelementptr inbounds %struct.doublecomplex, ptr %61, i32 0, i32 0
  %2280 = load double, ptr %2279, align 8, !tbaa !11
  %2281 = load ptr, ptr %14, align 8, !tbaa !5
  %2282 = load i32, ptr %22, align 4, !tbaa !9
  %2283 = sext i32 %2282 to i64
  %2284 = getelementptr inbounds %struct.doublecomplex, ptr %2281, i64 %2283
  %2285 = getelementptr inbounds %struct.doublecomplex, ptr %2284, i32 0, i32 1
  %2286 = load double, ptr %2285, align 8, !tbaa !14
  %2287 = getelementptr inbounds %struct.doublecomplex, ptr %61, i32 0, i32 1
  %2288 = load double, ptr %2287, align 8, !tbaa !14
  %2289 = load ptr, ptr %14, align 8, !tbaa !5
  %2290 = load i32, ptr %22, align 4, !tbaa !9
  %2291 = sext i32 %2290 to i64
  %2292 = getelementptr inbounds %struct.doublecomplex, ptr %2289, i64 %2291
  %2293 = getelementptr inbounds %struct.doublecomplex, ptr %2292, i32 0, i32 0
  %2294 = load double, ptr %2293, align 8, !tbaa !11
  %2295 = fmul double %2288, %2294
  %2296 = call double @llvm.fmuladd.f64(double %2280, double %2286, double %2295)
  %2297 = getelementptr inbounds %struct.doublecomplex, ptr %36, i32 0, i32 1
  store double %2296, ptr %2297, align 8, !tbaa !14
  %2298 = getelementptr inbounds %struct.doublecomplex, ptr %33, i32 0, i32 0
  %2299 = load double, ptr %2298, align 8, !tbaa !11
  %2300 = getelementptr inbounds %struct.doublecomplex, ptr %36, i32 0, i32 0
  %2301 = load double, ptr %2300, align 8, !tbaa !11
  %2302 = fadd double %2299, %2301
  %2303 = getelementptr inbounds %struct.doublecomplex, ptr %32, i32 0, i32 0
  store double %2302, ptr %2303, align 8, !tbaa !11
  %2304 = getelementptr inbounds %struct.doublecomplex, ptr %33, i32 0, i32 1
  %2305 = load double, ptr %2304, align 8, !tbaa !14
  %2306 = getelementptr inbounds %struct.doublecomplex, ptr %36, i32 0, i32 1
  %2307 = load double, ptr %2306, align 8, !tbaa !14
  %2308 = fadd double %2305, %2307
  %2309 = getelementptr inbounds %struct.doublecomplex, ptr %32, i32 0, i32 1
  store double %2308, ptr %2309, align 8, !tbaa !14
  %2310 = load i32, ptr %49, align 4, !tbaa !9
  %2311 = load i32, ptr %17, align 4, !tbaa !9
  %2312 = mul nsw i32 %2310, %2311
  %2313 = add nsw i32 %2312, 4
  store i32 %2313, ptr %23, align 4, !tbaa !9
  %2314 = getelementptr inbounds %struct.doublecomplex, ptr %62, i32 0, i32 0
  %2315 = load double, ptr %2314, align 8, !tbaa !11
  %2316 = load ptr, ptr %14, align 8, !tbaa !5
  %2317 = load i32, ptr %23, align 4, !tbaa !9
  %2318 = sext i32 %2317 to i64
  %2319 = getelementptr inbounds %struct.doublecomplex, ptr %2316, i64 %2318
  %2320 = getelementptr inbounds %struct.doublecomplex, ptr %2319, i32 0, i32 0
  %2321 = load double, ptr %2320, align 8, !tbaa !11
  %2322 = getelementptr inbounds %struct.doublecomplex, ptr %62, i32 0, i32 1
  %2323 = load double, ptr %2322, align 8, !tbaa !14
  %2324 = load ptr, ptr %14, align 8, !tbaa !5
  %2325 = load i32, ptr %23, align 4, !tbaa !9
  %2326 = sext i32 %2325 to i64
  %2327 = getelementptr inbounds %struct.doublecomplex, ptr %2324, i64 %2326
  %2328 = getelementptr inbounds %struct.doublecomplex, ptr %2327, i32 0, i32 1
  %2329 = load double, ptr %2328, align 8, !tbaa !14
  %2330 = fmul double %2323, %2329
  %2331 = fneg double %2330
  %2332 = call double @llvm.fmuladd.f64(double %2315, double %2321, double %2331)
  %2333 = getelementptr inbounds %struct.doublecomplex, ptr %37, i32 0, i32 0
  store double %2332, ptr %2333, align 8, !tbaa !11
  %2334 = getelementptr inbounds %struct.doublecomplex, ptr %62, i32 0, i32 0
  %2335 = load double, ptr %2334, align 8, !tbaa !11
  %2336 = load ptr, ptr %14, align 8, !tbaa !5
  %2337 = load i32, ptr %23, align 4, !tbaa !9
  %2338 = sext i32 %2337 to i64
  %2339 = getelementptr inbounds %struct.doublecomplex, ptr %2336, i64 %2338
  %2340 = getelementptr inbounds %struct.doublecomplex, ptr %2339, i32 0, i32 1
  %2341 = load double, ptr %2340, align 8, !tbaa !14
  %2342 = getelementptr inbounds %struct.doublecomplex, ptr %62, i32 0, i32 1
  %2343 = load double, ptr %2342, align 8, !tbaa !14
  %2344 = load ptr, ptr %14, align 8, !tbaa !5
  %2345 = load i32, ptr %23, align 4, !tbaa !9
  %2346 = sext i32 %2345 to i64
  %2347 = getelementptr inbounds %struct.doublecomplex, ptr %2344, i64 %2346
  %2348 = getelementptr inbounds %struct.doublecomplex, ptr %2347, i32 0, i32 0
  %2349 = load double, ptr %2348, align 8, !tbaa !11
  %2350 = fmul double %2343, %2349
  %2351 = call double @llvm.fmuladd.f64(double %2335, double %2341, double %2350)
  %2352 = getelementptr inbounds %struct.doublecomplex, ptr %37, i32 0, i32 1
  store double %2351, ptr %2352, align 8, !tbaa !14
  %2353 = getelementptr inbounds %struct.doublecomplex, ptr %32, i32 0, i32 0
  %2354 = load double, ptr %2353, align 8, !tbaa !11
  %2355 = getelementptr inbounds %struct.doublecomplex, ptr %37, i32 0, i32 0
  %2356 = load double, ptr %2355, align 8, !tbaa !11
  %2357 = fadd double %2354, %2356
  %2358 = getelementptr inbounds %struct.doublecomplex, ptr %31, i32 0, i32 0
  store double %2357, ptr %2358, align 8, !tbaa !11
  %2359 = getelementptr inbounds %struct.doublecomplex, ptr %32, i32 0, i32 1
  %2360 = load double, ptr %2359, align 8, !tbaa !14
  %2361 = getelementptr inbounds %struct.doublecomplex, ptr %37, i32 0, i32 1
  %2362 = load double, ptr %2361, align 8, !tbaa !14
  %2363 = fadd double %2360, %2362
  %2364 = getelementptr inbounds %struct.doublecomplex, ptr %31, i32 0, i32 1
  store double %2363, ptr %2364, align 8, !tbaa !14
  %2365 = load i32, ptr %49, align 4, !tbaa !9
  %2366 = load i32, ptr %17, align 4, !tbaa !9
  %2367 = mul nsw i32 %2365, %2366
  %2368 = add nsw i32 %2367, 5
  store i32 %2368, ptr %24, align 4, !tbaa !9
  %2369 = getelementptr inbounds %struct.doublecomplex, ptr %63, i32 0, i32 0
  %2370 = load double, ptr %2369, align 8, !tbaa !11
  %2371 = load ptr, ptr %14, align 8, !tbaa !5
  %2372 = load i32, ptr %24, align 4, !tbaa !9
  %2373 = sext i32 %2372 to i64
  %2374 = getelementptr inbounds %struct.doublecomplex, ptr %2371, i64 %2373
  %2375 = getelementptr inbounds %struct.doublecomplex, ptr %2374, i32 0, i32 0
  %2376 = load double, ptr %2375, align 8, !tbaa !11
  %2377 = getelementptr inbounds %struct.doublecomplex, ptr %63, i32 0, i32 1
  %2378 = load double, ptr %2377, align 8, !tbaa !14
  %2379 = load ptr, ptr %14, align 8, !tbaa !5
  %2380 = load i32, ptr %24, align 4, !tbaa !9
  %2381 = sext i32 %2380 to i64
  %2382 = getelementptr inbounds %struct.doublecomplex, ptr %2379, i64 %2381
  %2383 = getelementptr inbounds %struct.doublecomplex, ptr %2382, i32 0, i32 1
  %2384 = load double, ptr %2383, align 8, !tbaa !14
  %2385 = fmul double %2378, %2384
  %2386 = fneg double %2385
  %2387 = call double @llvm.fmuladd.f64(double %2370, double %2376, double %2386)
  %2388 = getelementptr inbounds %struct.doublecomplex, ptr %38, i32 0, i32 0
  store double %2387, ptr %2388, align 8, !tbaa !11
  %2389 = getelementptr inbounds %struct.doublecomplex, ptr %63, i32 0, i32 0
  %2390 = load double, ptr %2389, align 8, !tbaa !11
  %2391 = load ptr, ptr %14, align 8, !tbaa !5
  %2392 = load i32, ptr %24, align 4, !tbaa !9
  %2393 = sext i32 %2392 to i64
  %2394 = getelementptr inbounds %struct.doublecomplex, ptr %2391, i64 %2393
  %2395 = getelementptr inbounds %struct.doublecomplex, ptr %2394, i32 0, i32 1
  %2396 = load double, ptr %2395, align 8, !tbaa !14
  %2397 = getelementptr inbounds %struct.doublecomplex, ptr %63, i32 0, i32 1
  %2398 = load double, ptr %2397, align 8, !tbaa !14
  %2399 = load ptr, ptr %14, align 8, !tbaa !5
  %2400 = load i32, ptr %24, align 4, !tbaa !9
  %2401 = sext i32 %2400 to i64
  %2402 = getelementptr inbounds %struct.doublecomplex, ptr %2399, i64 %2401
  %2403 = getelementptr inbounds %struct.doublecomplex, ptr %2402, i32 0, i32 0
  %2404 = load double, ptr %2403, align 8, !tbaa !11
  %2405 = fmul double %2398, %2404
  %2406 = call double @llvm.fmuladd.f64(double %2390, double %2396, double %2405)
  %2407 = getelementptr inbounds %struct.doublecomplex, ptr %38, i32 0, i32 1
  store double %2406, ptr %2407, align 8, !tbaa !14
  %2408 = getelementptr inbounds %struct.doublecomplex, ptr %31, i32 0, i32 0
  %2409 = load double, ptr %2408, align 8, !tbaa !11
  %2410 = getelementptr inbounds %struct.doublecomplex, ptr %38, i32 0, i32 0
  %2411 = load double, ptr %2410, align 8, !tbaa !11
  %2412 = fadd double %2409, %2411
  %2413 = getelementptr inbounds %struct.doublecomplex, ptr %30, i32 0, i32 0
  store double %2412, ptr %2413, align 8, !tbaa !11
  %2414 = getelementptr inbounds %struct.doublecomplex, ptr %31, i32 0, i32 1
  %2415 = load double, ptr %2414, align 8, !tbaa !14
  %2416 = getelementptr inbounds %struct.doublecomplex, ptr %38, i32 0, i32 1
  %2417 = load double, ptr %2416, align 8, !tbaa !14
  %2418 = fadd double %2415, %2417
  %2419 = getelementptr inbounds %struct.doublecomplex, ptr %30, i32 0, i32 1
  store double %2418, ptr %2419, align 8, !tbaa !14
  %2420 = getelementptr inbounds %struct.doublecomplex, ptr %30, i32 0, i32 0
  %2421 = load double, ptr %2420, align 8, !tbaa !11
  %2422 = getelementptr inbounds %struct.doublecomplex, ptr %70, i32 0, i32 0
  store double %2421, ptr %2422, align 8, !tbaa !11
  %2423 = getelementptr inbounds %struct.doublecomplex, ptr %30, i32 0, i32 1
  %2424 = load double, ptr %2423, align 8, !tbaa !14
  %2425 = getelementptr inbounds %struct.doublecomplex, ptr %70, i32 0, i32 1
  store double %2424, ptr %2425, align 8, !tbaa !14
  %2426 = load i32, ptr %49, align 4, !tbaa !9
  %2427 = load i32, ptr %17, align 4, !tbaa !9
  %2428 = mul nsw i32 %2426, %2427
  %2429 = add nsw i32 %2428, 1
  store i32 %2429, ptr %20, align 4, !tbaa !9
  %2430 = load i32, ptr %49, align 4, !tbaa !9
  %2431 = load i32, ptr %17, align 4, !tbaa !9
  %2432 = mul nsw i32 %2430, %2431
  %2433 = add nsw i32 %2432, 1
  store i32 %2433, ptr %21, align 4, !tbaa !9
  %2434 = getelementptr inbounds %struct.doublecomplex, ptr %70, i32 0, i32 0
  %2435 = load double, ptr %2434, align 8, !tbaa !11
  %2436 = getelementptr inbounds %struct.doublecomplex, ptr %50, i32 0, i32 0
  %2437 = load double, ptr %2436, align 8, !tbaa !11
  %2438 = getelementptr inbounds %struct.doublecomplex, ptr %70, i32 0, i32 1
  %2439 = load double, ptr %2438, align 8, !tbaa !14
  %2440 = getelementptr inbounds %struct.doublecomplex, ptr %50, i32 0, i32 1
  %2441 = load double, ptr %2440, align 8, !tbaa !14
  %2442 = fmul double %2439, %2441
  %2443 = fneg double %2442
  %2444 = call double @llvm.fmuladd.f64(double %2435, double %2437, double %2443)
  %2445 = getelementptr inbounds %struct.doublecomplex, ptr %31, i32 0, i32 0
  store double %2444, ptr %2445, align 8, !tbaa !11
  %2446 = getelementptr inbounds %struct.doublecomplex, ptr %70, i32 0, i32 0
  %2447 = load double, ptr %2446, align 8, !tbaa !11
  %2448 = getelementptr inbounds %struct.doublecomplex, ptr %50, i32 0, i32 1
  %2449 = load double, ptr %2448, align 8, !tbaa !14
  %2450 = getelementptr inbounds %struct.doublecomplex, ptr %70, i32 0, i32 1
  %2451 = load double, ptr %2450, align 8, !tbaa !14
  %2452 = getelementptr inbounds %struct.doublecomplex, ptr %50, i32 0, i32 0
  %2453 = load double, ptr %2452, align 8, !tbaa !11
  %2454 = fmul double %2451, %2453
  %2455 = call double @llvm.fmuladd.f64(double %2447, double %2449, double %2454)
  %2456 = getelementptr inbounds %struct.doublecomplex, ptr %31, i32 0, i32 1
  store double %2455, ptr %2456, align 8, !tbaa !14
  %2457 = load ptr, ptr %14, align 8, !tbaa !5
  %2458 = load i32, ptr %21, align 4, !tbaa !9
  %2459 = sext i32 %2458 to i64
  %2460 = getelementptr inbounds %struct.doublecomplex, ptr %2457, i64 %2459
  %2461 = getelementptr inbounds %struct.doublecomplex, ptr %2460, i32 0, i32 0
  %2462 = load double, ptr %2461, align 8, !tbaa !11
  %2463 = getelementptr inbounds %struct.doublecomplex, ptr %31, i32 0, i32 0
  %2464 = load double, ptr %2463, align 8, !tbaa !11
  %2465 = fsub double %2462, %2464
  %2466 = getelementptr inbounds %struct.doublecomplex, ptr %30, i32 0, i32 0
  store double %2465, ptr %2466, align 8, !tbaa !11
  %2467 = load ptr, ptr %14, align 8, !tbaa !5
  %2468 = load i32, ptr %21, align 4, !tbaa !9
  %2469 = sext i32 %2468 to i64
  %2470 = getelementptr inbounds %struct.doublecomplex, ptr %2467, i64 %2469
  %2471 = getelementptr inbounds %struct.doublecomplex, ptr %2470, i32 0, i32 1
  %2472 = load double, ptr %2471, align 8, !tbaa !14
  %2473 = getelementptr inbounds %struct.doublecomplex, ptr %31, i32 0, i32 1
  %2474 = load double, ptr %2473, align 8, !tbaa !14
  %2475 = fsub double %2472, %2474
  %2476 = getelementptr inbounds %struct.doublecomplex, ptr %30, i32 0, i32 1
  store double %2475, ptr %2476, align 8, !tbaa !14
  %2477 = getelementptr inbounds %struct.doublecomplex, ptr %30, i32 0, i32 0
  %2478 = load double, ptr %2477, align 8, !tbaa !11
  %2479 = load ptr, ptr %14, align 8, !tbaa !5
  %2480 = load i32, ptr %20, align 4, !tbaa !9
  %2481 = sext i32 %2480 to i64
  %2482 = getelementptr inbounds %struct.doublecomplex, ptr %2479, i64 %2481
  %2483 = getelementptr inbounds %struct.doublecomplex, ptr %2482, i32 0, i32 0
  store double %2478, ptr %2483, align 8, !tbaa !11
  %2484 = getelementptr inbounds %struct.doublecomplex, ptr %30, i32 0, i32 1
  %2485 = load double, ptr %2484, align 8, !tbaa !14
  %2486 = load ptr, ptr %14, align 8, !tbaa !5
  %2487 = load i32, ptr %20, align 4, !tbaa !9
  %2488 = sext i32 %2487 to i64
  %2489 = getelementptr inbounds %struct.doublecomplex, ptr %2486, i64 %2488
  %2490 = getelementptr inbounds %struct.doublecomplex, ptr %2489, i32 0, i32 1
  store double %2485, ptr %2490, align 8, !tbaa !14
  %2491 = load i32, ptr %49, align 4, !tbaa !9
  %2492 = load i32, ptr %17, align 4, !tbaa !9
  %2493 = mul nsw i32 %2491, %2492
  %2494 = add nsw i32 %2493, 2
  store i32 %2494, ptr %20, align 4, !tbaa !9
  %2495 = load i32, ptr %49, align 4, !tbaa !9
  %2496 = load i32, ptr %17, align 4, !tbaa !9
  %2497 = mul nsw i32 %2495, %2496
  %2498 = add nsw i32 %2497, 2
  store i32 %2498, ptr %21, align 4, !tbaa !9
  %2499 = getelementptr inbounds %struct.doublecomplex, ptr %70, i32 0, i32 0
  %2500 = load double, ptr %2499, align 8, !tbaa !11
  %2501 = getelementptr inbounds %struct.doublecomplex, ptr %51, i32 0, i32 0
  %2502 = load double, ptr %2501, align 8, !tbaa !11
  %2503 = getelementptr inbounds %struct.doublecomplex, ptr %70, i32 0, i32 1
  %2504 = load double, ptr %2503, align 8, !tbaa !14
  %2505 = getelementptr inbounds %struct.doublecomplex, ptr %51, i32 0, i32 1
  %2506 = load double, ptr %2505, align 8, !tbaa !14
  %2507 = fmul double %2504, %2506
  %2508 = fneg double %2507
  %2509 = call double @llvm.fmuladd.f64(double %2500, double %2502, double %2508)
  %2510 = getelementptr inbounds %struct.doublecomplex, ptr %31, i32 0, i32 0
  store double %2509, ptr %2510, align 8, !tbaa !11
  %2511 = getelementptr inbounds %struct.doublecomplex, ptr %70, i32 0, i32 0
  %2512 = load double, ptr %2511, align 8, !tbaa !11
  %2513 = getelementptr inbounds %struct.doublecomplex, ptr %51, i32 0, i32 1
  %2514 = load double, ptr %2513, align 8, !tbaa !14
  %2515 = getelementptr inbounds %struct.doublecomplex, ptr %70, i32 0, i32 1
  %2516 = load double, ptr %2515, align 8, !tbaa !14
  %2517 = getelementptr inbounds %struct.doublecomplex, ptr %51, i32 0, i32 0
  %2518 = load double, ptr %2517, align 8, !tbaa !11
  %2519 = fmul double %2516, %2518
  %2520 = call double @llvm.fmuladd.f64(double %2512, double %2514, double %2519)
  %2521 = getelementptr inbounds %struct.doublecomplex, ptr %31, i32 0, i32 1
  store double %2520, ptr %2521, align 8, !tbaa !14
  %2522 = load ptr, ptr %14, align 8, !tbaa !5
  %2523 = load i32, ptr %21, align 4, !tbaa !9
  %2524 = sext i32 %2523 to i64
  %2525 = getelementptr inbounds %struct.doublecomplex, ptr %2522, i64 %2524
  %2526 = getelementptr inbounds %struct.doublecomplex, ptr %2525, i32 0, i32 0
  %2527 = load double, ptr %2526, align 8, !tbaa !11
  %2528 = getelementptr inbounds %struct.doublecomplex, ptr %31, i32 0, i32 0
  %2529 = load double, ptr %2528, align 8, !tbaa !11
  %2530 = fsub double %2527, %2529
  %2531 = getelementptr inbounds %struct.doublecomplex, ptr %30, i32 0, i32 0
  store double %2530, ptr %2531, align 8, !tbaa !11
  %2532 = load ptr, ptr %14, align 8, !tbaa !5
  %2533 = load i32, ptr %21, align 4, !tbaa !9
  %2534 = sext i32 %2533 to i64
  %2535 = getelementptr inbounds %struct.doublecomplex, ptr %2532, i64 %2534
  %2536 = getelementptr inbounds %struct.doublecomplex, ptr %2535, i32 0, i32 1
  %2537 = load double, ptr %2536, align 8, !tbaa !14
  %2538 = getelementptr inbounds %struct.doublecomplex, ptr %31, i32 0, i32 1
  %2539 = load double, ptr %2538, align 8, !tbaa !14
  %2540 = fsub double %2537, %2539
  %2541 = getelementptr inbounds %struct.doublecomplex, ptr %30, i32 0, i32 1
  store double %2540, ptr %2541, align 8, !tbaa !14
  %2542 = getelementptr inbounds %struct.doublecomplex, ptr %30, i32 0, i32 0
  %2543 = load double, ptr %2542, align 8, !tbaa !11
  %2544 = load ptr, ptr %14, align 8, !tbaa !5
  %2545 = load i32, ptr %20, align 4, !tbaa !9
  %2546 = sext i32 %2545 to i64
  %2547 = getelementptr inbounds %struct.doublecomplex, ptr %2544, i64 %2546
  %2548 = getelementptr inbounds %struct.doublecomplex, ptr %2547, i32 0, i32 0
  store double %2543, ptr %2548, align 8, !tbaa !11
  %2549 = getelementptr inbounds %struct.doublecomplex, ptr %30, i32 0, i32 1
  %2550 = load double, ptr %2549, align 8, !tbaa !14
  %2551 = load ptr, ptr %14, align 8, !tbaa !5
  %2552 = load i32, ptr %20, align 4, !tbaa !9
  %2553 = sext i32 %2552 to i64
  %2554 = getelementptr inbounds %struct.doublecomplex, ptr %2551, i64 %2553
  %2555 = getelementptr inbounds %struct.doublecomplex, ptr %2554, i32 0, i32 1
  store double %2550, ptr %2555, align 8, !tbaa !14
  %2556 = load i32, ptr %49, align 4, !tbaa !9
  %2557 = load i32, ptr %17, align 4, !tbaa !9
  %2558 = mul nsw i32 %2556, %2557
  %2559 = add nsw i32 %2558, 3
  store i32 %2559, ptr %20, align 4, !tbaa !9
  %2560 = load i32, ptr %49, align 4, !tbaa !9
  %2561 = load i32, ptr %17, align 4, !tbaa !9
  %2562 = mul nsw i32 %2560, %2561
  %2563 = add nsw i32 %2562, 3
  store i32 %2563, ptr %21, align 4, !tbaa !9
  %2564 = getelementptr inbounds %struct.doublecomplex, ptr %70, i32 0, i32 0
  %2565 = load double, ptr %2564, align 8, !tbaa !11
  %2566 = getelementptr inbounds %struct.doublecomplex, ptr %52, i32 0, i32 0
  %2567 = load double, ptr %2566, align 8, !tbaa !11
  %2568 = getelementptr inbounds %struct.doublecomplex, ptr %70, i32 0, i32 1
  %2569 = load double, ptr %2568, align 8, !tbaa !14
  %2570 = getelementptr inbounds %struct.doublecomplex, ptr %52, i32 0, i32 1
  %2571 = load double, ptr %2570, align 8, !tbaa !14
  %2572 = fmul double %2569, %2571
  %2573 = fneg double %2572
  %2574 = call double @llvm.fmuladd.f64(double %2565, double %2567, double %2573)
  %2575 = getelementptr inbounds %struct.doublecomplex, ptr %31, i32 0, i32 0
  store double %2574, ptr %2575, align 8, !tbaa !11
  %2576 = getelementptr inbounds %struct.doublecomplex, ptr %70, i32 0, i32 0
  %2577 = load double, ptr %2576, align 8, !tbaa !11
  %2578 = getelementptr inbounds %struct.doublecomplex, ptr %52, i32 0, i32 1
  %2579 = load double, ptr %2578, align 8, !tbaa !14
  %2580 = getelementptr inbounds %struct.doublecomplex, ptr %70, i32 0, i32 1
  %2581 = load double, ptr %2580, align 8, !tbaa !14
  %2582 = getelementptr inbounds %struct.doublecomplex, ptr %52, i32 0, i32 0
  %2583 = load double, ptr %2582, align 8, !tbaa !11
  %2584 = fmul double %2581, %2583
  %2585 = call double @llvm.fmuladd.f64(double %2577, double %2579, double %2584)
  %2586 = getelementptr inbounds %struct.doublecomplex, ptr %31, i32 0, i32 1
  store double %2585, ptr %2586, align 8, !tbaa !14
  %2587 = load ptr, ptr %14, align 8, !tbaa !5
  %2588 = load i32, ptr %21, align 4, !tbaa !9
  %2589 = sext i32 %2588 to i64
  %2590 = getelementptr inbounds %struct.doublecomplex, ptr %2587, i64 %2589
  %2591 = getelementptr inbounds %struct.doublecomplex, ptr %2590, i32 0, i32 0
  %2592 = load double, ptr %2591, align 8, !tbaa !11
  %2593 = getelementptr inbounds %struct.doublecomplex, ptr %31, i32 0, i32 0
  %2594 = load double, ptr %2593, align 8, !tbaa !11
  %2595 = fsub double %2592, %2594
  %2596 = getelementptr inbounds %struct.doublecomplex, ptr %30, i32 0, i32 0
  store double %2595, ptr %2596, align 8, !tbaa !11
  %2597 = load ptr, ptr %14, align 8, !tbaa !5
  %2598 = load i32, ptr %21, align 4, !tbaa !9
  %2599 = sext i32 %2598 to i64
  %2600 = getelementptr inbounds %struct.doublecomplex, ptr %2597, i64 %2599
  %2601 = getelementptr inbounds %struct.doublecomplex, ptr %2600, i32 0, i32 1
  %2602 = load double, ptr %2601, align 8, !tbaa !14
  %2603 = getelementptr inbounds %struct.doublecomplex, ptr %31, i32 0, i32 1
  %2604 = load double, ptr %2603, align 8, !tbaa !14
  %2605 = fsub double %2602, %2604
  %2606 = getelementptr inbounds %struct.doublecomplex, ptr %30, i32 0, i32 1
  store double %2605, ptr %2606, align 8, !tbaa !14
  %2607 = getelementptr inbounds %struct.doublecomplex, ptr %30, i32 0, i32 0
  %2608 = load double, ptr %2607, align 8, !tbaa !11
  %2609 = load ptr, ptr %14, align 8, !tbaa !5
  %2610 = load i32, ptr %20, align 4, !tbaa !9
  %2611 = sext i32 %2610 to i64
  %2612 = getelementptr inbounds %struct.doublecomplex, ptr %2609, i64 %2611
  %2613 = getelementptr inbounds %struct.doublecomplex, ptr %2612, i32 0, i32 0
  store double %2608, ptr %2613, align 8, !tbaa !11
  %2614 = getelementptr inbounds %struct.doublecomplex, ptr %30, i32 0, i32 1
  %2615 = load double, ptr %2614, align 8, !tbaa !14
  %2616 = load ptr, ptr %14, align 8, !tbaa !5
  %2617 = load i32, ptr %20, align 4, !tbaa !9
  %2618 = sext i32 %2617 to i64
  %2619 = getelementptr inbounds %struct.doublecomplex, ptr %2616, i64 %2618
  %2620 = getelementptr inbounds %struct.doublecomplex, ptr %2619, i32 0, i32 1
  store double %2615, ptr %2620, align 8, !tbaa !14
  %2621 = load i32, ptr %49, align 4, !tbaa !9
  %2622 = load i32, ptr %17, align 4, !tbaa !9
  %2623 = mul nsw i32 %2621, %2622
  %2624 = add nsw i32 %2623, 4
  store i32 %2624, ptr %20, align 4, !tbaa !9
  %2625 = load i32, ptr %49, align 4, !tbaa !9
  %2626 = load i32, ptr %17, align 4, !tbaa !9
  %2627 = mul nsw i32 %2625, %2626
  %2628 = add nsw i32 %2627, 4
  store i32 %2628, ptr %21, align 4, !tbaa !9
  %2629 = getelementptr inbounds %struct.doublecomplex, ptr %70, i32 0, i32 0
  %2630 = load double, ptr %2629, align 8, !tbaa !11
  %2631 = getelementptr inbounds %struct.doublecomplex, ptr %53, i32 0, i32 0
  %2632 = load double, ptr %2631, align 8, !tbaa !11
  %2633 = getelementptr inbounds %struct.doublecomplex, ptr %70, i32 0, i32 1
  %2634 = load double, ptr %2633, align 8, !tbaa !14
  %2635 = getelementptr inbounds %struct.doublecomplex, ptr %53, i32 0, i32 1
  %2636 = load double, ptr %2635, align 8, !tbaa !14
  %2637 = fmul double %2634, %2636
  %2638 = fneg double %2637
  %2639 = call double @llvm.fmuladd.f64(double %2630, double %2632, double %2638)
  %2640 = getelementptr inbounds %struct.doublecomplex, ptr %31, i32 0, i32 0
  store double %2639, ptr %2640, align 8, !tbaa !11
  %2641 = getelementptr inbounds %struct.doublecomplex, ptr %70, i32 0, i32 0
  %2642 = load double, ptr %2641, align 8, !tbaa !11
  %2643 = getelementptr inbounds %struct.doublecomplex, ptr %53, i32 0, i32 1
  %2644 = load double, ptr %2643, align 8, !tbaa !14
  %2645 = getelementptr inbounds %struct.doublecomplex, ptr %70, i32 0, i32 1
  %2646 = load double, ptr %2645, align 8, !tbaa !14
  %2647 = getelementptr inbounds %struct.doublecomplex, ptr %53, i32 0, i32 0
  %2648 = load double, ptr %2647, align 8, !tbaa !11
  %2649 = fmul double %2646, %2648
  %2650 = call double @llvm.fmuladd.f64(double %2642, double %2644, double %2649)
  %2651 = getelementptr inbounds %struct.doublecomplex, ptr %31, i32 0, i32 1
  store double %2650, ptr %2651, align 8, !tbaa !14
  %2652 = load ptr, ptr %14, align 8, !tbaa !5
  %2653 = load i32, ptr %21, align 4, !tbaa !9
  %2654 = sext i32 %2653 to i64
  %2655 = getelementptr inbounds %struct.doublecomplex, ptr %2652, i64 %2654
  %2656 = getelementptr inbounds %struct.doublecomplex, ptr %2655, i32 0, i32 0
  %2657 = load double, ptr %2656, align 8, !tbaa !11
  %2658 = getelementptr inbounds %struct.doublecomplex, ptr %31, i32 0, i32 0
  %2659 = load double, ptr %2658, align 8, !tbaa !11
  %2660 = fsub double %2657, %2659
  %2661 = getelementptr inbounds %struct.doublecomplex, ptr %30, i32 0, i32 0
  store double %2660, ptr %2661, align 8, !tbaa !11
  %2662 = load ptr, ptr %14, align 8, !tbaa !5
  %2663 = load i32, ptr %21, align 4, !tbaa !9
  %2664 = sext i32 %2663 to i64
  %2665 = getelementptr inbounds %struct.doublecomplex, ptr %2662, i64 %2664
  %2666 = getelementptr inbounds %struct.doublecomplex, ptr %2665, i32 0, i32 1
  %2667 = load double, ptr %2666, align 8, !tbaa !14
  %2668 = getelementptr inbounds %struct.doublecomplex, ptr %31, i32 0, i32 1
  %2669 = load double, ptr %2668, align 8, !tbaa !14
  %2670 = fsub double %2667, %2669
  %2671 = getelementptr inbounds %struct.doublecomplex, ptr %30, i32 0, i32 1
  store double %2670, ptr %2671, align 8, !tbaa !14
  %2672 = getelementptr inbounds %struct.doublecomplex, ptr %30, i32 0, i32 0
  %2673 = load double, ptr %2672, align 8, !tbaa !11
  %2674 = load ptr, ptr %14, align 8, !tbaa !5
  %2675 = load i32, ptr %20, align 4, !tbaa !9
  %2676 = sext i32 %2675 to i64
  %2677 = getelementptr inbounds %struct.doublecomplex, ptr %2674, i64 %2676
  %2678 = getelementptr inbounds %struct.doublecomplex, ptr %2677, i32 0, i32 0
  store double %2673, ptr %2678, align 8, !tbaa !11
  %2679 = getelementptr inbounds %struct.doublecomplex, ptr %30, i32 0, i32 1
  %2680 = load double, ptr %2679, align 8, !tbaa !14
  %2681 = load ptr, ptr %14, align 8, !tbaa !5
  %2682 = load i32, ptr %20, align 4, !tbaa !9
  %2683 = sext i32 %2682 to i64
  %2684 = getelementptr inbounds %struct.doublecomplex, ptr %2681, i64 %2683
  %2685 = getelementptr inbounds %struct.doublecomplex, ptr %2684, i32 0, i32 1
  store double %2680, ptr %2685, align 8, !tbaa !14
  %2686 = load i32, ptr %49, align 4, !tbaa !9
  %2687 = load i32, ptr %17, align 4, !tbaa !9
  %2688 = mul nsw i32 %2686, %2687
  %2689 = add nsw i32 %2688, 5
  store i32 %2689, ptr %20, align 4, !tbaa !9
  %2690 = load i32, ptr %49, align 4, !tbaa !9
  %2691 = load i32, ptr %17, align 4, !tbaa !9
  %2692 = mul nsw i32 %2690, %2691
  %2693 = add nsw i32 %2692, 5
  store i32 %2693, ptr %21, align 4, !tbaa !9
  %2694 = getelementptr inbounds %struct.doublecomplex, ptr %70, i32 0, i32 0
  %2695 = load double, ptr %2694, align 8, !tbaa !11
  %2696 = getelementptr inbounds %struct.doublecomplex, ptr %54, i32 0, i32 0
  %2697 = load double, ptr %2696, align 8, !tbaa !11
  %2698 = getelementptr inbounds %struct.doublecomplex, ptr %70, i32 0, i32 1
  %2699 = load double, ptr %2698, align 8, !tbaa !14
  %2700 = getelementptr inbounds %struct.doublecomplex, ptr %54, i32 0, i32 1
  %2701 = load double, ptr %2700, align 8, !tbaa !14
  %2702 = fmul double %2699, %2701
  %2703 = fneg double %2702
  %2704 = call double @llvm.fmuladd.f64(double %2695, double %2697, double %2703)
  %2705 = getelementptr inbounds %struct.doublecomplex, ptr %31, i32 0, i32 0
  store double %2704, ptr %2705, align 8, !tbaa !11
  %2706 = getelementptr inbounds %struct.doublecomplex, ptr %70, i32 0, i32 0
  %2707 = load double, ptr %2706, align 8, !tbaa !11
  %2708 = getelementptr inbounds %struct.doublecomplex, ptr %54, i32 0, i32 1
  %2709 = load double, ptr %2708, align 8, !tbaa !14
  %2710 = getelementptr inbounds %struct.doublecomplex, ptr %70, i32 0, i32 1
  %2711 = load double, ptr %2710, align 8, !tbaa !14
  %2712 = getelementptr inbounds %struct.doublecomplex, ptr %54, i32 0, i32 0
  %2713 = load double, ptr %2712, align 8, !tbaa !11
  %2714 = fmul double %2711, %2713
  %2715 = call double @llvm.fmuladd.f64(double %2707, double %2709, double %2714)
  %2716 = getelementptr inbounds %struct.doublecomplex, ptr %31, i32 0, i32 1
  store double %2715, ptr %2716, align 8, !tbaa !14
  %2717 = load ptr, ptr %14, align 8, !tbaa !5
  %2718 = load i32, ptr %21, align 4, !tbaa !9
  %2719 = sext i32 %2718 to i64
  %2720 = getelementptr inbounds %struct.doublecomplex, ptr %2717, i64 %2719
  %2721 = getelementptr inbounds %struct.doublecomplex, ptr %2720, i32 0, i32 0
  %2722 = load double, ptr %2721, align 8, !tbaa !11
  %2723 = getelementptr inbounds %struct.doublecomplex, ptr %31, i32 0, i32 0
  %2724 = load double, ptr %2723, align 8, !tbaa !11
  %2725 = fsub double %2722, %2724
  %2726 = getelementptr inbounds %struct.doublecomplex, ptr %30, i32 0, i32 0
  store double %2725, ptr %2726, align 8, !tbaa !11
  %2727 = load ptr, ptr %14, align 8, !tbaa !5
  %2728 = load i32, ptr %21, align 4, !tbaa !9
  %2729 = sext i32 %2728 to i64
  %2730 = getelementptr inbounds %struct.doublecomplex, ptr %2727, i64 %2729
  %2731 = getelementptr inbounds %struct.doublecomplex, ptr %2730, i32 0, i32 1
  %2732 = load double, ptr %2731, align 8, !tbaa !14
  %2733 = getelementptr inbounds %struct.doublecomplex, ptr %31, i32 0, i32 1
  %2734 = load double, ptr %2733, align 8, !tbaa !14
  %2735 = fsub double %2732, %2734
  %2736 = getelementptr inbounds %struct.doublecomplex, ptr %30, i32 0, i32 1
  store double %2735, ptr %2736, align 8, !tbaa !14
  %2737 = getelementptr inbounds %struct.doublecomplex, ptr %30, i32 0, i32 0
  %2738 = load double, ptr %2737, align 8, !tbaa !11
  %2739 = load ptr, ptr %14, align 8, !tbaa !5
  %2740 = load i32, ptr %20, align 4, !tbaa !9
  %2741 = sext i32 %2740 to i64
  %2742 = getelementptr inbounds %struct.doublecomplex, ptr %2739, i64 %2741
  %2743 = getelementptr inbounds %struct.doublecomplex, ptr %2742, i32 0, i32 0
  store double %2738, ptr %2743, align 8, !tbaa !11
  %2744 = getelementptr inbounds %struct.doublecomplex, ptr %30, i32 0, i32 1
  %2745 = load double, ptr %2744, align 8, !tbaa !14
  %2746 = load ptr, ptr %14, align 8, !tbaa !5
  %2747 = load i32, ptr %20, align 4, !tbaa !9
  %2748 = sext i32 %2747 to i64
  %2749 = getelementptr inbounds %struct.doublecomplex, ptr %2746, i64 %2748
  %2750 = getelementptr inbounds %struct.doublecomplex, ptr %2749, i32 0, i32 1
  store double %2745, ptr %2750, align 8, !tbaa !14
  br label %2751

2751:                                             ; preds = %2156
  %2752 = load i32, ptr %49, align 4, !tbaa !9
  %2753 = add nsw i32 %2752, 1
  store i32 %2753, ptr %49, align 4, !tbaa !9
  br label %2152, !llvm.loop !20

2754:                                             ; preds = %2152
  br label %19171

2755:                                             ; preds = %108
  %2756 = load ptr, ptr %12, align 8, !tbaa !5
  %2757 = getelementptr inbounds %struct.doublecomplex, ptr %2756, i64 1
  %2758 = call { double, double } @Cd(ptr noundef %2757)
  %2759 = extractvalue { double, double } %2758, 0
  %2760 = extractvalue { double, double } %2758, 1
  %2761 = fneg double %2760
  %2762 = call ptr @_pCd(ptr noundef %30)
  %2763 = getelementptr inbounds { double, double }, ptr %2762, i32 0, i32 0
  %2764 = getelementptr inbounds { double, double }, ptr %2762, i32 0, i32 1
  store double %2759, ptr %2763, align 8
  store double %2761, ptr %2764, align 8
  %2765 = getelementptr inbounds %struct.doublecomplex, ptr %30, i32 0, i32 0
  %2766 = load double, ptr %2765, align 8, !tbaa !11
  %2767 = getelementptr inbounds %struct.doublecomplex, ptr %59, i32 0, i32 0
  store double %2766, ptr %2767, align 8, !tbaa !11
  %2768 = getelementptr inbounds %struct.doublecomplex, ptr %30, i32 0, i32 1
  %2769 = load double, ptr %2768, align 8, !tbaa !14
  %2770 = getelementptr inbounds %struct.doublecomplex, ptr %59, i32 0, i32 1
  store double %2769, ptr %2770, align 8, !tbaa !14
  %2771 = call { double, double } @Cd(ptr noundef %59)
  %2772 = extractvalue { double, double } %2771, 0
  %2773 = extractvalue { double, double } %2771, 1
  %2774 = fneg double %2773
  %2775 = call ptr @_pCd(ptr noundef %31)
  %2776 = getelementptr inbounds { double, double }, ptr %2775, i32 0, i32 0
  %2777 = getelementptr inbounds { double, double }, ptr %2775, i32 0, i32 1
  store double %2772, ptr %2776, align 8
  store double %2774, ptr %2777, align 8
  %2778 = load ptr, ptr %13, align 8, !tbaa !5
  %2779 = getelementptr inbounds %struct.doublecomplex, ptr %2778, i32 0, i32 0
  %2780 = load double, ptr %2779, align 8, !tbaa !11
  %2781 = getelementptr inbounds %struct.doublecomplex, ptr %31, i32 0, i32 0
  %2782 = load double, ptr %2781, align 8, !tbaa !11
  %2783 = load ptr, ptr %13, align 8, !tbaa !5
  %2784 = getelementptr inbounds %struct.doublecomplex, ptr %2783, i32 0, i32 1
  %2785 = load double, ptr %2784, align 8, !tbaa !14
  %2786 = getelementptr inbounds %struct.doublecomplex, ptr %31, i32 0, i32 1
  %2787 = load double, ptr %2786, align 8, !tbaa !14
  %2788 = fmul double %2785, %2787
  %2789 = fneg double %2788
  %2790 = call double @llvm.fmuladd.f64(double %2780, double %2782, double %2789)
  %2791 = getelementptr inbounds %struct.doublecomplex, ptr %30, i32 0, i32 0
  store double %2790, ptr %2791, align 8, !tbaa !11
  %2792 = load ptr, ptr %13, align 8, !tbaa !5
  %2793 = getelementptr inbounds %struct.doublecomplex, ptr %2792, i32 0, i32 0
  %2794 = load double, ptr %2793, align 8, !tbaa !11
  %2795 = getelementptr inbounds %struct.doublecomplex, ptr %31, i32 0, i32 1
  %2796 = load double, ptr %2795, align 8, !tbaa !14
  %2797 = load ptr, ptr %13, align 8, !tbaa !5
  %2798 = getelementptr inbounds %struct.doublecomplex, ptr %2797, i32 0, i32 1
  %2799 = load double, ptr %2798, align 8, !tbaa !14
  %2800 = getelementptr inbounds %struct.doublecomplex, ptr %31, i32 0, i32 0
  %2801 = load double, ptr %2800, align 8, !tbaa !11
  %2802 = fmul double %2799, %2801
  %2803 = call double @llvm.fmuladd.f64(double %2794, double %2796, double %2802)
  %2804 = getelementptr inbounds %struct.doublecomplex, ptr %30, i32 0, i32 1
  store double %2803, ptr %2804, align 8, !tbaa !14
  %2805 = getelementptr inbounds %struct.doublecomplex, ptr %30, i32 0, i32 0
  %2806 = load double, ptr %2805, align 8, !tbaa !11
  %2807 = getelementptr inbounds %struct.doublecomplex, ptr %50, i32 0, i32 0
  store double %2806, ptr %2807, align 8, !tbaa !11
  %2808 = getelementptr inbounds %struct.doublecomplex, ptr %30, i32 0, i32 1
  %2809 = load double, ptr %2808, align 8, !tbaa !14
  %2810 = getelementptr inbounds %struct.doublecomplex, ptr %50, i32 0, i32 1
  store double %2809, ptr %2810, align 8, !tbaa !14
  %2811 = load ptr, ptr %12, align 8, !tbaa !5
  %2812 = getelementptr inbounds %struct.doublecomplex, ptr %2811, i64 2
  %2813 = call { double, double } @Cd(ptr noundef %2812)
  %2814 = extractvalue { double, double } %2813, 0
  %2815 = extractvalue { double, double } %2813, 1
  %2816 = fneg double %2815
  %2817 = call ptr @_pCd(ptr noundef %30)
  %2818 = getelementptr inbounds { double, double }, ptr %2817, i32 0, i32 0
  %2819 = getelementptr inbounds { double, double }, ptr %2817, i32 0, i32 1
  store double %2814, ptr %2818, align 8
  store double %2816, ptr %2819, align 8
  %2820 = getelementptr inbounds %struct.doublecomplex, ptr %30, i32 0, i32 0
  %2821 = load double, ptr %2820, align 8, !tbaa !11
  %2822 = getelementptr inbounds %struct.doublecomplex, ptr %60, i32 0, i32 0
  store double %2821, ptr %2822, align 8, !tbaa !11
  %2823 = getelementptr inbounds %struct.doublecomplex, ptr %30, i32 0, i32 1
  %2824 = load double, ptr %2823, align 8, !tbaa !14
  %2825 = getelementptr inbounds %struct.doublecomplex, ptr %60, i32 0, i32 1
  store double %2824, ptr %2825, align 8, !tbaa !14
  %2826 = call { double, double } @Cd(ptr noundef %60)
  %2827 = extractvalue { double, double } %2826, 0
  %2828 = extractvalue { double, double } %2826, 1
  %2829 = fneg double %2828
  %2830 = call ptr @_pCd(ptr noundef %31)
  %2831 = getelementptr inbounds { double, double }, ptr %2830, i32 0, i32 0
  %2832 = getelementptr inbounds { double, double }, ptr %2830, i32 0, i32 1
  store double %2827, ptr %2831, align 8
  store double %2829, ptr %2832, align 8
  %2833 = load ptr, ptr %13, align 8, !tbaa !5
  %2834 = getelementptr inbounds %struct.doublecomplex, ptr %2833, i32 0, i32 0
  %2835 = load double, ptr %2834, align 8, !tbaa !11
  %2836 = getelementptr inbounds %struct.doublecomplex, ptr %31, i32 0, i32 0
  %2837 = load double, ptr %2836, align 8, !tbaa !11
  %2838 = load ptr, ptr %13, align 8, !tbaa !5
  %2839 = getelementptr inbounds %struct.doublecomplex, ptr %2838, i32 0, i32 1
  %2840 = load double, ptr %2839, align 8, !tbaa !14
  %2841 = getelementptr inbounds %struct.doublecomplex, ptr %31, i32 0, i32 1
  %2842 = load double, ptr %2841, align 8, !tbaa !14
  %2843 = fmul double %2840, %2842
  %2844 = fneg double %2843
  %2845 = call double @llvm.fmuladd.f64(double %2835, double %2837, double %2844)
  %2846 = getelementptr inbounds %struct.doublecomplex, ptr %30, i32 0, i32 0
  store double %2845, ptr %2846, align 8, !tbaa !11
  %2847 = load ptr, ptr %13, align 8, !tbaa !5
  %2848 = getelementptr inbounds %struct.doublecomplex, ptr %2847, i32 0, i32 0
  %2849 = load double, ptr %2848, align 8, !tbaa !11
  %2850 = getelementptr inbounds %struct.doublecomplex, ptr %31, i32 0, i32 1
  %2851 = load double, ptr %2850, align 8, !tbaa !14
  %2852 = load ptr, ptr %13, align 8, !tbaa !5
  %2853 = getelementptr inbounds %struct.doublecomplex, ptr %2852, i32 0, i32 1
  %2854 = load double, ptr %2853, align 8, !tbaa !14
  %2855 = getelementptr inbounds %struct.doublecomplex, ptr %31, i32 0, i32 0
  %2856 = load double, ptr %2855, align 8, !tbaa !11
  %2857 = fmul double %2854, %2856
  %2858 = call double @llvm.fmuladd.f64(double %2849, double %2851, double %2857)
  %2859 = getelementptr inbounds %struct.doublecomplex, ptr %30, i32 0, i32 1
  store double %2858, ptr %2859, align 8, !tbaa !14
  %2860 = getelementptr inbounds %struct.doublecomplex, ptr %30, i32 0, i32 0
  %2861 = load double, ptr %2860, align 8, !tbaa !11
  %2862 = getelementptr inbounds %struct.doublecomplex, ptr %51, i32 0, i32 0
  store double %2861, ptr %2862, align 8, !tbaa !11
  %2863 = getelementptr inbounds %struct.doublecomplex, ptr %30, i32 0, i32 1
  %2864 = load double, ptr %2863, align 8, !tbaa !14
  %2865 = getelementptr inbounds %struct.doublecomplex, ptr %51, i32 0, i32 1
  store double %2864, ptr %2865, align 8, !tbaa !14
  %2866 = load ptr, ptr %12, align 8, !tbaa !5
  %2867 = getelementptr inbounds %struct.doublecomplex, ptr %2866, i64 3
  %2868 = call { double, double } @Cd(ptr noundef %2867)
  %2869 = extractvalue { double, double } %2868, 0
  %2870 = extractvalue { double, double } %2868, 1
  %2871 = fneg double %2870
  %2872 = call ptr @_pCd(ptr noundef %30)
  %2873 = getelementptr inbounds { double, double }, ptr %2872, i32 0, i32 0
  %2874 = getelementptr inbounds { double, double }, ptr %2872, i32 0, i32 1
  store double %2869, ptr %2873, align 8
  store double %2871, ptr %2874, align 8
  %2875 = getelementptr inbounds %struct.doublecomplex, ptr %30, i32 0, i32 0
  %2876 = load double, ptr %2875, align 8, !tbaa !11
  %2877 = getelementptr inbounds %struct.doublecomplex, ptr %61, i32 0, i32 0
  store double %2876, ptr %2877, align 8, !tbaa !11
  %2878 = getelementptr inbounds %struct.doublecomplex, ptr %30, i32 0, i32 1
  %2879 = load double, ptr %2878, align 8, !tbaa !14
  %2880 = getelementptr inbounds %struct.doublecomplex, ptr %61, i32 0, i32 1
  store double %2879, ptr %2880, align 8, !tbaa !14
  %2881 = call { double, double } @Cd(ptr noundef %61)
  %2882 = extractvalue { double, double } %2881, 0
  %2883 = extractvalue { double, double } %2881, 1
  %2884 = fneg double %2883
  %2885 = call ptr @_pCd(ptr noundef %31)
  %2886 = getelementptr inbounds { double, double }, ptr %2885, i32 0, i32 0
  %2887 = getelementptr inbounds { double, double }, ptr %2885, i32 0, i32 1
  store double %2882, ptr %2886, align 8
  store double %2884, ptr %2887, align 8
  %2888 = load ptr, ptr %13, align 8, !tbaa !5
  %2889 = getelementptr inbounds %struct.doublecomplex, ptr %2888, i32 0, i32 0
  %2890 = load double, ptr %2889, align 8, !tbaa !11
  %2891 = getelementptr inbounds %struct.doublecomplex, ptr %31, i32 0, i32 0
  %2892 = load double, ptr %2891, align 8, !tbaa !11
  %2893 = load ptr, ptr %13, align 8, !tbaa !5
  %2894 = getelementptr inbounds %struct.doublecomplex, ptr %2893, i32 0, i32 1
  %2895 = load double, ptr %2894, align 8, !tbaa !14
  %2896 = getelementptr inbounds %struct.doublecomplex, ptr %31, i32 0, i32 1
  %2897 = load double, ptr %2896, align 8, !tbaa !14
  %2898 = fmul double %2895, %2897
  %2899 = fneg double %2898
  %2900 = call double @llvm.fmuladd.f64(double %2890, double %2892, double %2899)
  %2901 = getelementptr inbounds %struct.doublecomplex, ptr %30, i32 0, i32 0
  store double %2900, ptr %2901, align 8, !tbaa !11
  %2902 = load ptr, ptr %13, align 8, !tbaa !5
  %2903 = getelementptr inbounds %struct.doublecomplex, ptr %2902, i32 0, i32 0
  %2904 = load double, ptr %2903, align 8, !tbaa !11
  %2905 = getelementptr inbounds %struct.doublecomplex, ptr %31, i32 0, i32 1
  %2906 = load double, ptr %2905, align 8, !tbaa !14
  %2907 = load ptr, ptr %13, align 8, !tbaa !5
  %2908 = getelementptr inbounds %struct.doublecomplex, ptr %2907, i32 0, i32 1
  %2909 = load double, ptr %2908, align 8, !tbaa !14
  %2910 = getelementptr inbounds %struct.doublecomplex, ptr %31, i32 0, i32 0
  %2911 = load double, ptr %2910, align 8, !tbaa !11
  %2912 = fmul double %2909, %2911
  %2913 = call double @llvm.fmuladd.f64(double %2904, double %2906, double %2912)
  %2914 = getelementptr inbounds %struct.doublecomplex, ptr %30, i32 0, i32 1
  store double %2913, ptr %2914, align 8, !tbaa !14
  %2915 = getelementptr inbounds %struct.doublecomplex, ptr %30, i32 0, i32 0
  %2916 = load double, ptr %2915, align 8, !tbaa !11
  %2917 = getelementptr inbounds %struct.doublecomplex, ptr %52, i32 0, i32 0
  store double %2916, ptr %2917, align 8, !tbaa !11
  %2918 = getelementptr inbounds %struct.doublecomplex, ptr %30, i32 0, i32 1
  %2919 = load double, ptr %2918, align 8, !tbaa !14
  %2920 = getelementptr inbounds %struct.doublecomplex, ptr %52, i32 0, i32 1
  store double %2919, ptr %2920, align 8, !tbaa !14
  %2921 = load ptr, ptr %12, align 8, !tbaa !5
  %2922 = getelementptr inbounds %struct.doublecomplex, ptr %2921, i64 4
  %2923 = call { double, double } @Cd(ptr noundef %2922)
  %2924 = extractvalue { double, double } %2923, 0
  %2925 = extractvalue { double, double } %2923, 1
  %2926 = fneg double %2925
  %2927 = call ptr @_pCd(ptr noundef %30)
  %2928 = getelementptr inbounds { double, double }, ptr %2927, i32 0, i32 0
  %2929 = getelementptr inbounds { double, double }, ptr %2927, i32 0, i32 1
  store double %2924, ptr %2928, align 8
  store double %2926, ptr %2929, align 8
  %2930 = getelementptr inbounds %struct.doublecomplex, ptr %30, i32 0, i32 0
  %2931 = load double, ptr %2930, align 8, !tbaa !11
  %2932 = getelementptr inbounds %struct.doublecomplex, ptr %62, i32 0, i32 0
  store double %2931, ptr %2932, align 8, !tbaa !11
  %2933 = getelementptr inbounds %struct.doublecomplex, ptr %30, i32 0, i32 1
  %2934 = load double, ptr %2933, align 8, !tbaa !14
  %2935 = getelementptr inbounds %struct.doublecomplex, ptr %62, i32 0, i32 1
  store double %2934, ptr %2935, align 8, !tbaa !14
  %2936 = call { double, double } @Cd(ptr noundef %62)
  %2937 = extractvalue { double, double } %2936, 0
  %2938 = extractvalue { double, double } %2936, 1
  %2939 = fneg double %2938
  %2940 = call ptr @_pCd(ptr noundef %31)
  %2941 = getelementptr inbounds { double, double }, ptr %2940, i32 0, i32 0
  %2942 = getelementptr inbounds { double, double }, ptr %2940, i32 0, i32 1
  store double %2937, ptr %2941, align 8
  store double %2939, ptr %2942, align 8
  %2943 = load ptr, ptr %13, align 8, !tbaa !5
  %2944 = getelementptr inbounds %struct.doublecomplex, ptr %2943, i32 0, i32 0
  %2945 = load double, ptr %2944, align 8, !tbaa !11
  %2946 = getelementptr inbounds %struct.doublecomplex, ptr %31, i32 0, i32 0
  %2947 = load double, ptr %2946, align 8, !tbaa !11
  %2948 = load ptr, ptr %13, align 8, !tbaa !5
  %2949 = getelementptr inbounds %struct.doublecomplex, ptr %2948, i32 0, i32 1
  %2950 = load double, ptr %2949, align 8, !tbaa !14
  %2951 = getelementptr inbounds %struct.doublecomplex, ptr %31, i32 0, i32 1
  %2952 = load double, ptr %2951, align 8, !tbaa !14
  %2953 = fmul double %2950, %2952
  %2954 = fneg double %2953
  %2955 = call double @llvm.fmuladd.f64(double %2945, double %2947, double %2954)
  %2956 = getelementptr inbounds %struct.doublecomplex, ptr %30, i32 0, i32 0
  store double %2955, ptr %2956, align 8, !tbaa !11
  %2957 = load ptr, ptr %13, align 8, !tbaa !5
  %2958 = getelementptr inbounds %struct.doublecomplex, ptr %2957, i32 0, i32 0
  %2959 = load double, ptr %2958, align 8, !tbaa !11
  %2960 = getelementptr inbounds %struct.doublecomplex, ptr %31, i32 0, i32 1
  %2961 = load double, ptr %2960, align 8, !tbaa !14
  %2962 = load ptr, ptr %13, align 8, !tbaa !5
  %2963 = getelementptr inbounds %struct.doublecomplex, ptr %2962, i32 0, i32 1
  %2964 = load double, ptr %2963, align 8, !tbaa !14
  %2965 = getelementptr inbounds %struct.doublecomplex, ptr %31, i32 0, i32 0
  %2966 = load double, ptr %2965, align 8, !tbaa !11
  %2967 = fmul double %2964, %2966
  %2968 = call double @llvm.fmuladd.f64(double %2959, double %2961, double %2967)
  %2969 = getelementptr inbounds %struct.doublecomplex, ptr %30, i32 0, i32 1
  store double %2968, ptr %2969, align 8, !tbaa !14
  %2970 = getelementptr inbounds %struct.doublecomplex, ptr %30, i32 0, i32 0
  %2971 = load double, ptr %2970, align 8, !tbaa !11
  %2972 = getelementptr inbounds %struct.doublecomplex, ptr %53, i32 0, i32 0
  store double %2971, ptr %2972, align 8, !tbaa !11
  %2973 = getelementptr inbounds %struct.doublecomplex, ptr %30, i32 0, i32 1
  %2974 = load double, ptr %2973, align 8, !tbaa !14
  %2975 = getelementptr inbounds %struct.doublecomplex, ptr %53, i32 0, i32 1
  store double %2974, ptr %2975, align 8, !tbaa !14
  %2976 = load ptr, ptr %12, align 8, !tbaa !5
  %2977 = getelementptr inbounds %struct.doublecomplex, ptr %2976, i64 5
  %2978 = call { double, double } @Cd(ptr noundef %2977)
  %2979 = extractvalue { double, double } %2978, 0
  %2980 = extractvalue { double, double } %2978, 1
  %2981 = fneg double %2980
  %2982 = call ptr @_pCd(ptr noundef %30)
  %2983 = getelementptr inbounds { double, double }, ptr %2982, i32 0, i32 0
  %2984 = getelementptr inbounds { double, double }, ptr %2982, i32 0, i32 1
  store double %2979, ptr %2983, align 8
  store double %2981, ptr %2984, align 8
  %2985 = getelementptr inbounds %struct.doublecomplex, ptr %30, i32 0, i32 0
  %2986 = load double, ptr %2985, align 8, !tbaa !11
  %2987 = getelementptr inbounds %struct.doublecomplex, ptr %63, i32 0, i32 0
  store double %2986, ptr %2987, align 8, !tbaa !11
  %2988 = getelementptr inbounds %struct.doublecomplex, ptr %30, i32 0, i32 1
  %2989 = load double, ptr %2988, align 8, !tbaa !14
  %2990 = getelementptr inbounds %struct.doublecomplex, ptr %63, i32 0, i32 1
  store double %2989, ptr %2990, align 8, !tbaa !14
  %2991 = call { double, double } @Cd(ptr noundef %63)
  %2992 = extractvalue { double, double } %2991, 0
  %2993 = extractvalue { double, double } %2991, 1
  %2994 = fneg double %2993
  %2995 = call ptr @_pCd(ptr noundef %31)
  %2996 = getelementptr inbounds { double, double }, ptr %2995, i32 0, i32 0
  %2997 = getelementptr inbounds { double, double }, ptr %2995, i32 0, i32 1
  store double %2992, ptr %2996, align 8
  store double %2994, ptr %2997, align 8
  %2998 = load ptr, ptr %13, align 8, !tbaa !5
  %2999 = getelementptr inbounds %struct.doublecomplex, ptr %2998, i32 0, i32 0
  %3000 = load double, ptr %2999, align 8, !tbaa !11
  %3001 = getelementptr inbounds %struct.doublecomplex, ptr %31, i32 0, i32 0
  %3002 = load double, ptr %3001, align 8, !tbaa !11
  %3003 = load ptr, ptr %13, align 8, !tbaa !5
  %3004 = getelementptr inbounds %struct.doublecomplex, ptr %3003, i32 0, i32 1
  %3005 = load double, ptr %3004, align 8, !tbaa !14
  %3006 = getelementptr inbounds %struct.doublecomplex, ptr %31, i32 0, i32 1
  %3007 = load double, ptr %3006, align 8, !tbaa !14
  %3008 = fmul double %3005, %3007
  %3009 = fneg double %3008
  %3010 = call double @llvm.fmuladd.f64(double %3000, double %3002, double %3009)
  %3011 = getelementptr inbounds %struct.doublecomplex, ptr %30, i32 0, i32 0
  store double %3010, ptr %3011, align 8, !tbaa !11
  %3012 = load ptr, ptr %13, align 8, !tbaa !5
  %3013 = getelementptr inbounds %struct.doublecomplex, ptr %3012, i32 0, i32 0
  %3014 = load double, ptr %3013, align 8, !tbaa !11
  %3015 = getelementptr inbounds %struct.doublecomplex, ptr %31, i32 0, i32 1
  %3016 = load double, ptr %3015, align 8, !tbaa !14
  %3017 = load ptr, ptr %13, align 8, !tbaa !5
  %3018 = getelementptr inbounds %struct.doublecomplex, ptr %3017, i32 0, i32 1
  %3019 = load double, ptr %3018, align 8, !tbaa !14
  %3020 = getelementptr inbounds %struct.doublecomplex, ptr %31, i32 0, i32 0
  %3021 = load double, ptr %3020, align 8, !tbaa !11
  %3022 = fmul double %3019, %3021
  %3023 = call double @llvm.fmuladd.f64(double %3014, double %3016, double %3022)
  %3024 = getelementptr inbounds %struct.doublecomplex, ptr %30, i32 0, i32 1
  store double %3023, ptr %3024, align 8, !tbaa !14
  %3025 = getelementptr inbounds %struct.doublecomplex, ptr %30, i32 0, i32 0
  %3026 = load double, ptr %3025, align 8, !tbaa !11
  %3027 = getelementptr inbounds %struct.doublecomplex, ptr %54, i32 0, i32 0
  store double %3026, ptr %3027, align 8, !tbaa !11
  %3028 = getelementptr inbounds %struct.doublecomplex, ptr %30, i32 0, i32 1
  %3029 = load double, ptr %3028, align 8, !tbaa !14
  %3030 = getelementptr inbounds %struct.doublecomplex, ptr %54, i32 0, i32 1
  store double %3029, ptr %3030, align 8, !tbaa !14
  %3031 = load ptr, ptr %12, align 8, !tbaa !5
  %3032 = getelementptr inbounds %struct.doublecomplex, ptr %3031, i64 6
  %3033 = call { double, double } @Cd(ptr noundef %3032)
  %3034 = extractvalue { double, double } %3033, 0
  %3035 = extractvalue { double, double } %3033, 1
  %3036 = fneg double %3035
  %3037 = call ptr @_pCd(ptr noundef %30)
  %3038 = getelementptr inbounds { double, double }, ptr %3037, i32 0, i32 0
  %3039 = getelementptr inbounds { double, double }, ptr %3037, i32 0, i32 1
  store double %3034, ptr %3038, align 8
  store double %3036, ptr %3039, align 8
  %3040 = getelementptr inbounds %struct.doublecomplex, ptr %30, i32 0, i32 0
  %3041 = load double, ptr %3040, align 8, !tbaa !11
  %3042 = getelementptr inbounds %struct.doublecomplex, ptr %64, i32 0, i32 0
  store double %3041, ptr %3042, align 8, !tbaa !11
  %3043 = getelementptr inbounds %struct.doublecomplex, ptr %30, i32 0, i32 1
  %3044 = load double, ptr %3043, align 8, !tbaa !14
  %3045 = getelementptr inbounds %struct.doublecomplex, ptr %64, i32 0, i32 1
  store double %3044, ptr %3045, align 8, !tbaa !14
  %3046 = call { double, double } @Cd(ptr noundef %64)
  %3047 = extractvalue { double, double } %3046, 0
  %3048 = extractvalue { double, double } %3046, 1
  %3049 = fneg double %3048
  %3050 = call ptr @_pCd(ptr noundef %31)
  %3051 = getelementptr inbounds { double, double }, ptr %3050, i32 0, i32 0
  %3052 = getelementptr inbounds { double, double }, ptr %3050, i32 0, i32 1
  store double %3047, ptr %3051, align 8
  store double %3049, ptr %3052, align 8
  %3053 = load ptr, ptr %13, align 8, !tbaa !5
  %3054 = getelementptr inbounds %struct.doublecomplex, ptr %3053, i32 0, i32 0
  %3055 = load double, ptr %3054, align 8, !tbaa !11
  %3056 = getelementptr inbounds %struct.doublecomplex, ptr %31, i32 0, i32 0
  %3057 = load double, ptr %3056, align 8, !tbaa !11
  %3058 = load ptr, ptr %13, align 8, !tbaa !5
  %3059 = getelementptr inbounds %struct.doublecomplex, ptr %3058, i32 0, i32 1
  %3060 = load double, ptr %3059, align 8, !tbaa !14
  %3061 = getelementptr inbounds %struct.doublecomplex, ptr %31, i32 0, i32 1
  %3062 = load double, ptr %3061, align 8, !tbaa !14
  %3063 = fmul double %3060, %3062
  %3064 = fneg double %3063
  %3065 = call double @llvm.fmuladd.f64(double %3055, double %3057, double %3064)
  %3066 = getelementptr inbounds %struct.doublecomplex, ptr %30, i32 0, i32 0
  store double %3065, ptr %3066, align 8, !tbaa !11
  %3067 = load ptr, ptr %13, align 8, !tbaa !5
  %3068 = getelementptr inbounds %struct.doublecomplex, ptr %3067, i32 0, i32 0
  %3069 = load double, ptr %3068, align 8, !tbaa !11
  %3070 = getelementptr inbounds %struct.doublecomplex, ptr %31, i32 0, i32 1
  %3071 = load double, ptr %3070, align 8, !tbaa !14
  %3072 = load ptr, ptr %13, align 8, !tbaa !5
  %3073 = getelementptr inbounds %struct.doublecomplex, ptr %3072, i32 0, i32 1
  %3074 = load double, ptr %3073, align 8, !tbaa !14
  %3075 = getelementptr inbounds %struct.doublecomplex, ptr %31, i32 0, i32 0
  %3076 = load double, ptr %3075, align 8, !tbaa !11
  %3077 = fmul double %3074, %3076
  %3078 = call double @llvm.fmuladd.f64(double %3069, double %3071, double %3077)
  %3079 = getelementptr inbounds %struct.doublecomplex, ptr %30, i32 0, i32 1
  store double %3078, ptr %3079, align 8, !tbaa !14
  %3080 = getelementptr inbounds %struct.doublecomplex, ptr %30, i32 0, i32 0
  %3081 = load double, ptr %3080, align 8, !tbaa !11
  %3082 = getelementptr inbounds %struct.doublecomplex, ptr %55, i32 0, i32 0
  store double %3081, ptr %3082, align 8, !tbaa !11
  %3083 = getelementptr inbounds %struct.doublecomplex, ptr %30, i32 0, i32 1
  %3084 = load double, ptr %3083, align 8, !tbaa !14
  %3085 = getelementptr inbounds %struct.doublecomplex, ptr %55, i32 0, i32 1
  store double %3084, ptr %3085, align 8, !tbaa !14
  %3086 = load ptr, ptr %11, align 8, !tbaa !5
  %3087 = load i32, ptr %3086, align 4, !tbaa !9
  store i32 %3087, ptr %19, align 4, !tbaa !9
  store i32 1, ptr %49, align 4, !tbaa !9
  br label %3088

3088:                                             ; preds = %3807, %2755
  %3089 = load i32, ptr %49, align 4, !tbaa !9
  %3090 = load i32, ptr %19, align 4, !tbaa !9
  %3091 = icmp sle i32 %3089, %3090
  br i1 %3091, label %3092, label %3810

3092:                                             ; preds = %3088
  %3093 = load i32, ptr %49, align 4, !tbaa !9
  %3094 = load i32, ptr %17, align 4, !tbaa !9
  %3095 = mul nsw i32 %3093, %3094
  %3096 = add nsw i32 %3095, 1
  store i32 %3096, ptr %20, align 4, !tbaa !9
  %3097 = getelementptr inbounds %struct.doublecomplex, ptr %59, i32 0, i32 0
  %3098 = load double, ptr %3097, align 8, !tbaa !11
  %3099 = load ptr, ptr %14, align 8, !tbaa !5
  %3100 = load i32, ptr %20, align 4, !tbaa !9
  %3101 = sext i32 %3100 to i64
  %3102 = getelementptr inbounds %struct.doublecomplex, ptr %3099, i64 %3101
  %3103 = getelementptr inbounds %struct.doublecomplex, ptr %3102, i32 0, i32 0
  %3104 = load double, ptr %3103, align 8, !tbaa !11
  %3105 = getelementptr inbounds %struct.doublecomplex, ptr %59, i32 0, i32 1
  %3106 = load double, ptr %3105, align 8, !tbaa !14
  %3107 = load ptr, ptr %14, align 8, !tbaa !5
  %3108 = load i32, ptr %20, align 4, !tbaa !9
  %3109 = sext i32 %3108 to i64
  %3110 = getelementptr inbounds %struct.doublecomplex, ptr %3107, i64 %3109
  %3111 = getelementptr inbounds %struct.doublecomplex, ptr %3110, i32 0, i32 1
  %3112 = load double, ptr %3111, align 8, !tbaa !14
  %3113 = fmul double %3106, %3112
  %3114 = fneg double %3113
  %3115 = call double @llvm.fmuladd.f64(double %3098, double %3104, double %3114)
  %3116 = getelementptr inbounds %struct.doublecomplex, ptr %35, i32 0, i32 0
  store double %3115, ptr %3116, align 8, !tbaa !11
  %3117 = getelementptr inbounds %struct.doublecomplex, ptr %59, i32 0, i32 0
  %3118 = load double, ptr %3117, align 8, !tbaa !11
  %3119 = load ptr, ptr %14, align 8, !tbaa !5
  %3120 = load i32, ptr %20, align 4, !tbaa !9
  %3121 = sext i32 %3120 to i64
  %3122 = getelementptr inbounds %struct.doublecomplex, ptr %3119, i64 %3121
  %3123 = getelementptr inbounds %struct.doublecomplex, ptr %3122, i32 0, i32 1
  %3124 = load double, ptr %3123, align 8, !tbaa !14
  %3125 = getelementptr inbounds %struct.doublecomplex, ptr %59, i32 0, i32 1
  %3126 = load double, ptr %3125, align 8, !tbaa !14
  %3127 = load ptr, ptr %14, align 8, !tbaa !5
  %3128 = load i32, ptr %20, align 4, !tbaa !9
  %3129 = sext i32 %3128 to i64
  %3130 = getelementptr inbounds %struct.doublecomplex, ptr %3127, i64 %3129
  %3131 = getelementptr inbounds %struct.doublecomplex, ptr %3130, i32 0, i32 0
  %3132 = load double, ptr %3131, align 8, !tbaa !11
  %3133 = fmul double %3126, %3132
  %3134 = call double @llvm.fmuladd.f64(double %3118, double %3124, double %3133)
  %3135 = getelementptr inbounds %struct.doublecomplex, ptr %35, i32 0, i32 1
  store double %3134, ptr %3135, align 8, !tbaa !14
  %3136 = load i32, ptr %49, align 4, !tbaa !9
  %3137 = load i32, ptr %17, align 4, !tbaa !9
  %3138 = mul nsw i32 %3136, %3137
  %3139 = add nsw i32 %3138, 2
  store i32 %3139, ptr %21, align 4, !tbaa !9
  %3140 = getelementptr inbounds %struct.doublecomplex, ptr %60, i32 0, i32 0
  %3141 = load double, ptr %3140, align 8, !tbaa !11
  %3142 = load ptr, ptr %14, align 8, !tbaa !5
  %3143 = load i32, ptr %21, align 4, !tbaa !9
  %3144 = sext i32 %3143 to i64
  %3145 = getelementptr inbounds %struct.doublecomplex, ptr %3142, i64 %3144
  %3146 = getelementptr inbounds %struct.doublecomplex, ptr %3145, i32 0, i32 0
  %3147 = load double, ptr %3146, align 8, !tbaa !11
  %3148 = getelementptr inbounds %struct.doublecomplex, ptr %60, i32 0, i32 1
  %3149 = load double, ptr %3148, align 8, !tbaa !14
  %3150 = load ptr, ptr %14, align 8, !tbaa !5
  %3151 = load i32, ptr %21, align 4, !tbaa !9
  %3152 = sext i32 %3151 to i64
  %3153 = getelementptr inbounds %struct.doublecomplex, ptr %3150, i64 %3152
  %3154 = getelementptr inbounds %struct.doublecomplex, ptr %3153, i32 0, i32 1
  %3155 = load double, ptr %3154, align 8, !tbaa !14
  %3156 = fmul double %3149, %3155
  %3157 = fneg double %3156
  %3158 = call double @llvm.fmuladd.f64(double %3141, double %3147, double %3157)
  %3159 = getelementptr inbounds %struct.doublecomplex, ptr %36, i32 0, i32 0
  store double %3158, ptr %3159, align 8, !tbaa !11
  %3160 = getelementptr inbounds %struct.doublecomplex, ptr %60, i32 0, i32 0
  %3161 = load double, ptr %3160, align 8, !tbaa !11
  %3162 = load ptr, ptr %14, align 8, !tbaa !5
  %3163 = load i32, ptr %21, align 4, !tbaa !9
  %3164 = sext i32 %3163 to i64
  %3165 = getelementptr inbounds %struct.doublecomplex, ptr %3162, i64 %3164
  %3166 = getelementptr inbounds %struct.doublecomplex, ptr %3165, i32 0, i32 1
  %3167 = load double, ptr %3166, align 8, !tbaa !14
  %3168 = getelementptr inbounds %struct.doublecomplex, ptr %60, i32 0, i32 1
  %3169 = load double, ptr %3168, align 8, !tbaa !14
  %3170 = load ptr, ptr %14, align 8, !tbaa !5
  %3171 = load i32, ptr %21, align 4, !tbaa !9
  %3172 = sext i32 %3171 to i64
  %3173 = getelementptr inbounds %struct.doublecomplex, ptr %3170, i64 %3172
  %3174 = getelementptr inbounds %struct.doublecomplex, ptr %3173, i32 0, i32 0
  %3175 = load double, ptr %3174, align 8, !tbaa !11
  %3176 = fmul double %3169, %3175
  %3177 = call double @llvm.fmuladd.f64(double %3161, double %3167, double %3176)
  %3178 = getelementptr inbounds %struct.doublecomplex, ptr %36, i32 0, i32 1
  store double %3177, ptr %3178, align 8, !tbaa !14
  %3179 = getelementptr inbounds %struct.doublecomplex, ptr %35, i32 0, i32 0
  %3180 = load double, ptr %3179, align 8, !tbaa !11
  %3181 = getelementptr inbounds %struct.doublecomplex, ptr %36, i32 0, i32 0
  %3182 = load double, ptr %3181, align 8, !tbaa !11
  %3183 = fadd double %3180, %3182
  %3184 = getelementptr inbounds %struct.doublecomplex, ptr %34, i32 0, i32 0
  store double %3183, ptr %3184, align 8, !tbaa !11
  %3185 = getelementptr inbounds %struct.doublecomplex, ptr %35, i32 0, i32 1
  %3186 = load double, ptr %3185, align 8, !tbaa !14
  %3187 = getelementptr inbounds %struct.doublecomplex, ptr %36, i32 0, i32 1
  %3188 = load double, ptr %3187, align 8, !tbaa !14
  %3189 = fadd double %3186, %3188
  %3190 = getelementptr inbounds %struct.doublecomplex, ptr %34, i32 0, i32 1
  store double %3189, ptr %3190, align 8, !tbaa !14
  %3191 = load i32, ptr %49, align 4, !tbaa !9
  %3192 = load i32, ptr %17, align 4, !tbaa !9
  %3193 = mul nsw i32 %3191, %3192
  %3194 = add nsw i32 %3193, 3
  store i32 %3194, ptr %22, align 4, !tbaa !9
  %3195 = getelementptr inbounds %struct.doublecomplex, ptr %61, i32 0, i32 0
  %3196 = load double, ptr %3195, align 8, !tbaa !11
  %3197 = load ptr, ptr %14, align 8, !tbaa !5
  %3198 = load i32, ptr %22, align 4, !tbaa !9
  %3199 = sext i32 %3198 to i64
  %3200 = getelementptr inbounds %struct.doublecomplex, ptr %3197, i64 %3199
  %3201 = getelementptr inbounds %struct.doublecomplex, ptr %3200, i32 0, i32 0
  %3202 = load double, ptr %3201, align 8, !tbaa !11
  %3203 = getelementptr inbounds %struct.doublecomplex, ptr %61, i32 0, i32 1
  %3204 = load double, ptr %3203, align 8, !tbaa !14
  %3205 = load ptr, ptr %14, align 8, !tbaa !5
  %3206 = load i32, ptr %22, align 4, !tbaa !9
  %3207 = sext i32 %3206 to i64
  %3208 = getelementptr inbounds %struct.doublecomplex, ptr %3205, i64 %3207
  %3209 = getelementptr inbounds %struct.doublecomplex, ptr %3208, i32 0, i32 1
  %3210 = load double, ptr %3209, align 8, !tbaa !14
  %3211 = fmul double %3204, %3210
  %3212 = fneg double %3211
  %3213 = call double @llvm.fmuladd.f64(double %3196, double %3202, double %3212)
  %3214 = getelementptr inbounds %struct.doublecomplex, ptr %37, i32 0, i32 0
  store double %3213, ptr %3214, align 8, !tbaa !11
  %3215 = getelementptr inbounds %struct.doublecomplex, ptr %61, i32 0, i32 0
  %3216 = load double, ptr %3215, align 8, !tbaa !11
  %3217 = load ptr, ptr %14, align 8, !tbaa !5
  %3218 = load i32, ptr %22, align 4, !tbaa !9
  %3219 = sext i32 %3218 to i64
  %3220 = getelementptr inbounds %struct.doublecomplex, ptr %3217, i64 %3219
  %3221 = getelementptr inbounds %struct.doublecomplex, ptr %3220, i32 0, i32 1
  %3222 = load double, ptr %3221, align 8, !tbaa !14
  %3223 = getelementptr inbounds %struct.doublecomplex, ptr %61, i32 0, i32 1
  %3224 = load double, ptr %3223, align 8, !tbaa !14
  %3225 = load ptr, ptr %14, align 8, !tbaa !5
  %3226 = load i32, ptr %22, align 4, !tbaa !9
  %3227 = sext i32 %3226 to i64
  %3228 = getelementptr inbounds %struct.doublecomplex, ptr %3225, i64 %3227
  %3229 = getelementptr inbounds %struct.doublecomplex, ptr %3228, i32 0, i32 0
  %3230 = load double, ptr %3229, align 8, !tbaa !11
  %3231 = fmul double %3224, %3230
  %3232 = call double @llvm.fmuladd.f64(double %3216, double %3222, double %3231)
  %3233 = getelementptr inbounds %struct.doublecomplex, ptr %37, i32 0, i32 1
  store double %3232, ptr %3233, align 8, !tbaa !14
  %3234 = getelementptr inbounds %struct.doublecomplex, ptr %34, i32 0, i32 0
  %3235 = load double, ptr %3234, align 8, !tbaa !11
  %3236 = getelementptr inbounds %struct.doublecomplex, ptr %37, i32 0, i32 0
  %3237 = load double, ptr %3236, align 8, !tbaa !11
  %3238 = fadd double %3235, %3237
  %3239 = getelementptr inbounds %struct.doublecomplex, ptr %33, i32 0, i32 0
  store double %3238, ptr %3239, align 8, !tbaa !11
  %3240 = getelementptr inbounds %struct.doublecomplex, ptr %34, i32 0, i32 1
  %3241 = load double, ptr %3240, align 8, !tbaa !14
  %3242 = getelementptr inbounds %struct.doublecomplex, ptr %37, i32 0, i32 1
  %3243 = load double, ptr %3242, align 8, !tbaa !14
  %3244 = fadd double %3241, %3243
  %3245 = getelementptr inbounds %struct.doublecomplex, ptr %33, i32 0, i32 1
  store double %3244, ptr %3245, align 8, !tbaa !14
  %3246 = load i32, ptr %49, align 4, !tbaa !9
  %3247 = load i32, ptr %17, align 4, !tbaa !9
  %3248 = mul nsw i32 %3246, %3247
  %3249 = add nsw i32 %3248, 4
  store i32 %3249, ptr %23, align 4, !tbaa !9
  %3250 = getelementptr inbounds %struct.doublecomplex, ptr %62, i32 0, i32 0
  %3251 = load double, ptr %3250, align 8, !tbaa !11
  %3252 = load ptr, ptr %14, align 8, !tbaa !5
  %3253 = load i32, ptr %23, align 4, !tbaa !9
  %3254 = sext i32 %3253 to i64
  %3255 = getelementptr inbounds %struct.doublecomplex, ptr %3252, i64 %3254
  %3256 = getelementptr inbounds %struct.doublecomplex, ptr %3255, i32 0, i32 0
  %3257 = load double, ptr %3256, align 8, !tbaa !11
  %3258 = getelementptr inbounds %struct.doublecomplex, ptr %62, i32 0, i32 1
  %3259 = load double, ptr %3258, align 8, !tbaa !14
  %3260 = load ptr, ptr %14, align 8, !tbaa !5
  %3261 = load i32, ptr %23, align 4, !tbaa !9
  %3262 = sext i32 %3261 to i64
  %3263 = getelementptr inbounds %struct.doublecomplex, ptr %3260, i64 %3262
  %3264 = getelementptr inbounds %struct.doublecomplex, ptr %3263, i32 0, i32 1
  %3265 = load double, ptr %3264, align 8, !tbaa !14
  %3266 = fmul double %3259, %3265
  %3267 = fneg double %3266
  %3268 = call double @llvm.fmuladd.f64(double %3251, double %3257, double %3267)
  %3269 = getelementptr inbounds %struct.doublecomplex, ptr %38, i32 0, i32 0
  store double %3268, ptr %3269, align 8, !tbaa !11
  %3270 = getelementptr inbounds %struct.doublecomplex, ptr %62, i32 0, i32 0
  %3271 = load double, ptr %3270, align 8, !tbaa !11
  %3272 = load ptr, ptr %14, align 8, !tbaa !5
  %3273 = load i32, ptr %23, align 4, !tbaa !9
  %3274 = sext i32 %3273 to i64
  %3275 = getelementptr inbounds %struct.doublecomplex, ptr %3272, i64 %3274
  %3276 = getelementptr inbounds %struct.doublecomplex, ptr %3275, i32 0, i32 1
  %3277 = load double, ptr %3276, align 8, !tbaa !14
  %3278 = getelementptr inbounds %struct.doublecomplex, ptr %62, i32 0, i32 1
  %3279 = load double, ptr %3278, align 8, !tbaa !14
  %3280 = load ptr, ptr %14, align 8, !tbaa !5
  %3281 = load i32, ptr %23, align 4, !tbaa !9
  %3282 = sext i32 %3281 to i64
  %3283 = getelementptr inbounds %struct.doublecomplex, ptr %3280, i64 %3282
  %3284 = getelementptr inbounds %struct.doublecomplex, ptr %3283, i32 0, i32 0
  %3285 = load double, ptr %3284, align 8, !tbaa !11
  %3286 = fmul double %3279, %3285
  %3287 = call double @llvm.fmuladd.f64(double %3271, double %3277, double %3286)
  %3288 = getelementptr inbounds %struct.doublecomplex, ptr %38, i32 0, i32 1
  store double %3287, ptr %3288, align 8, !tbaa !14
  %3289 = getelementptr inbounds %struct.doublecomplex, ptr %33, i32 0, i32 0
  %3290 = load double, ptr %3289, align 8, !tbaa !11
  %3291 = getelementptr inbounds %struct.doublecomplex, ptr %38, i32 0, i32 0
  %3292 = load double, ptr %3291, align 8, !tbaa !11
  %3293 = fadd double %3290, %3292
  %3294 = getelementptr inbounds %struct.doublecomplex, ptr %32, i32 0, i32 0
  store double %3293, ptr %3294, align 8, !tbaa !11
  %3295 = getelementptr inbounds %struct.doublecomplex, ptr %33, i32 0, i32 1
  %3296 = load double, ptr %3295, align 8, !tbaa !14
  %3297 = getelementptr inbounds %struct.doublecomplex, ptr %38, i32 0, i32 1
  %3298 = load double, ptr %3297, align 8, !tbaa !14
  %3299 = fadd double %3296, %3298
  %3300 = getelementptr inbounds %struct.doublecomplex, ptr %32, i32 0, i32 1
  store double %3299, ptr %3300, align 8, !tbaa !14
  %3301 = load i32, ptr %49, align 4, !tbaa !9
  %3302 = load i32, ptr %17, align 4, !tbaa !9
  %3303 = mul nsw i32 %3301, %3302
  %3304 = add nsw i32 %3303, 5
  store i32 %3304, ptr %24, align 4, !tbaa !9
  %3305 = getelementptr inbounds %struct.doublecomplex, ptr %63, i32 0, i32 0
  %3306 = load double, ptr %3305, align 8, !tbaa !11
  %3307 = load ptr, ptr %14, align 8, !tbaa !5
  %3308 = load i32, ptr %24, align 4, !tbaa !9
  %3309 = sext i32 %3308 to i64
  %3310 = getelementptr inbounds %struct.doublecomplex, ptr %3307, i64 %3309
  %3311 = getelementptr inbounds %struct.doublecomplex, ptr %3310, i32 0, i32 0
  %3312 = load double, ptr %3311, align 8, !tbaa !11
  %3313 = getelementptr inbounds %struct.doublecomplex, ptr %63, i32 0, i32 1
  %3314 = load double, ptr %3313, align 8, !tbaa !14
  %3315 = load ptr, ptr %14, align 8, !tbaa !5
  %3316 = load i32, ptr %24, align 4, !tbaa !9
  %3317 = sext i32 %3316 to i64
  %3318 = getelementptr inbounds %struct.doublecomplex, ptr %3315, i64 %3317
  %3319 = getelementptr inbounds %struct.doublecomplex, ptr %3318, i32 0, i32 1
  %3320 = load double, ptr %3319, align 8, !tbaa !14
  %3321 = fmul double %3314, %3320
  %3322 = fneg double %3321
  %3323 = call double @llvm.fmuladd.f64(double %3306, double %3312, double %3322)
  %3324 = getelementptr inbounds %struct.doublecomplex, ptr %39, i32 0, i32 0
  store double %3323, ptr %3324, align 8, !tbaa !11
  %3325 = getelementptr inbounds %struct.doublecomplex, ptr %63, i32 0, i32 0
  %3326 = load double, ptr %3325, align 8, !tbaa !11
  %3327 = load ptr, ptr %14, align 8, !tbaa !5
  %3328 = load i32, ptr %24, align 4, !tbaa !9
  %3329 = sext i32 %3328 to i64
  %3330 = getelementptr inbounds %struct.doublecomplex, ptr %3327, i64 %3329
  %3331 = getelementptr inbounds %struct.doublecomplex, ptr %3330, i32 0, i32 1
  %3332 = load double, ptr %3331, align 8, !tbaa !14
  %3333 = getelementptr inbounds %struct.doublecomplex, ptr %63, i32 0, i32 1
  %3334 = load double, ptr %3333, align 8, !tbaa !14
  %3335 = load ptr, ptr %14, align 8, !tbaa !5
  %3336 = load i32, ptr %24, align 4, !tbaa !9
  %3337 = sext i32 %3336 to i64
  %3338 = getelementptr inbounds %struct.doublecomplex, ptr %3335, i64 %3337
  %3339 = getelementptr inbounds %struct.doublecomplex, ptr %3338, i32 0, i32 0
  %3340 = load double, ptr %3339, align 8, !tbaa !11
  %3341 = fmul double %3334, %3340
  %3342 = call double @llvm.fmuladd.f64(double %3326, double %3332, double %3341)
  %3343 = getelementptr inbounds %struct.doublecomplex, ptr %39, i32 0, i32 1
  store double %3342, ptr %3343, align 8, !tbaa !14
  %3344 = getelementptr inbounds %struct.doublecomplex, ptr %32, i32 0, i32 0
  %3345 = load double, ptr %3344, align 8, !tbaa !11
  %3346 = getelementptr inbounds %struct.doublecomplex, ptr %39, i32 0, i32 0
  %3347 = load double, ptr %3346, align 8, !tbaa !11
  %3348 = fadd double %3345, %3347
  %3349 = getelementptr inbounds %struct.doublecomplex, ptr %31, i32 0, i32 0
  store double %3348, ptr %3349, align 8, !tbaa !11
  %3350 = getelementptr inbounds %struct.doublecomplex, ptr %32, i32 0, i32 1
  %3351 = load double, ptr %3350, align 8, !tbaa !14
  %3352 = getelementptr inbounds %struct.doublecomplex, ptr %39, i32 0, i32 1
  %3353 = load double, ptr %3352, align 8, !tbaa !14
  %3354 = fadd double %3351, %3353
  %3355 = getelementptr inbounds %struct.doublecomplex, ptr %31, i32 0, i32 1
  store double %3354, ptr %3355, align 8, !tbaa !14
  %3356 = load i32, ptr %49, align 4, !tbaa !9
  %3357 = load i32, ptr %17, align 4, !tbaa !9
  %3358 = mul nsw i32 %3356, %3357
  %3359 = add nsw i32 %3358, 6
  store i32 %3359, ptr %25, align 4, !tbaa !9
  %3360 = getelementptr inbounds %struct.doublecomplex, ptr %64, i32 0, i32 0
  %3361 = load double, ptr %3360, align 8, !tbaa !11
  %3362 = load ptr, ptr %14, align 8, !tbaa !5
  %3363 = load i32, ptr %25, align 4, !tbaa !9
  %3364 = sext i32 %3363 to i64
  %3365 = getelementptr inbounds %struct.doublecomplex, ptr %3362, i64 %3364
  %3366 = getelementptr inbounds %struct.doublecomplex, ptr %3365, i32 0, i32 0
  %3367 = load double, ptr %3366, align 8, !tbaa !11
  %3368 = getelementptr inbounds %struct.doublecomplex, ptr %64, i32 0, i32 1
  %3369 = load double, ptr %3368, align 8, !tbaa !14
  %3370 = load ptr, ptr %14, align 8, !tbaa !5
  %3371 = load i32, ptr %25, align 4, !tbaa !9
  %3372 = sext i32 %3371 to i64
  %3373 = getelementptr inbounds %struct.doublecomplex, ptr %3370, i64 %3372
  %3374 = getelementptr inbounds %struct.doublecomplex, ptr %3373, i32 0, i32 1
  %3375 = load double, ptr %3374, align 8, !tbaa !14
  %3376 = fmul double %3369, %3375
  %3377 = fneg double %3376
  %3378 = call double @llvm.fmuladd.f64(double %3361, double %3367, double %3377)
  %3379 = getelementptr inbounds %struct.doublecomplex, ptr %40, i32 0, i32 0
  store double %3378, ptr %3379, align 8, !tbaa !11
  %3380 = getelementptr inbounds %struct.doublecomplex, ptr %64, i32 0, i32 0
  %3381 = load double, ptr %3380, align 8, !tbaa !11
  %3382 = load ptr, ptr %14, align 8, !tbaa !5
  %3383 = load i32, ptr %25, align 4, !tbaa !9
  %3384 = sext i32 %3383 to i64
  %3385 = getelementptr inbounds %struct.doublecomplex, ptr %3382, i64 %3384
  %3386 = getelementptr inbounds %struct.doublecomplex, ptr %3385, i32 0, i32 1
  %3387 = load double, ptr %3386, align 8, !tbaa !14
  %3388 = getelementptr inbounds %struct.doublecomplex, ptr %64, i32 0, i32 1
  %3389 = load double, ptr %3388, align 8, !tbaa !14
  %3390 = load ptr, ptr %14, align 8, !tbaa !5
  %3391 = load i32, ptr %25, align 4, !tbaa !9
  %3392 = sext i32 %3391 to i64
  %3393 = getelementptr inbounds %struct.doublecomplex, ptr %3390, i64 %3392
  %3394 = getelementptr inbounds %struct.doublecomplex, ptr %3393, i32 0, i32 0
  %3395 = load double, ptr %3394, align 8, !tbaa !11
  %3396 = fmul double %3389, %3395
  %3397 = call double @llvm.fmuladd.f64(double %3381, double %3387, double %3396)
  %3398 = getelementptr inbounds %struct.doublecomplex, ptr %40, i32 0, i32 1
  store double %3397, ptr %3398, align 8, !tbaa !14
  %3399 = getelementptr inbounds %struct.doublecomplex, ptr %31, i32 0, i32 0
  %3400 = load double, ptr %3399, align 8, !tbaa !11
  %3401 = getelementptr inbounds %struct.doublecomplex, ptr %40, i32 0, i32 0
  %3402 = load double, ptr %3401, align 8, !tbaa !11
  %3403 = fadd double %3400, %3402
  %3404 = getelementptr inbounds %struct.doublecomplex, ptr %30, i32 0, i32 0
  store double %3403, ptr %3404, align 8, !tbaa !11
  %3405 = getelementptr inbounds %struct.doublecomplex, ptr %31, i32 0, i32 1
  %3406 = load double, ptr %3405, align 8, !tbaa !14
  %3407 = getelementptr inbounds %struct.doublecomplex, ptr %40, i32 0, i32 1
  %3408 = load double, ptr %3407, align 8, !tbaa !14
  %3409 = fadd double %3406, %3408
  %3410 = getelementptr inbounds %struct.doublecomplex, ptr %30, i32 0, i32 1
  store double %3409, ptr %3410, align 8, !tbaa !14
  %3411 = getelementptr inbounds %struct.doublecomplex, ptr %30, i32 0, i32 0
  %3412 = load double, ptr %3411, align 8, !tbaa !11
  %3413 = getelementptr inbounds %struct.doublecomplex, ptr %70, i32 0, i32 0
  store double %3412, ptr %3413, align 8, !tbaa !11
  %3414 = getelementptr inbounds %struct.doublecomplex, ptr %30, i32 0, i32 1
  %3415 = load double, ptr %3414, align 8, !tbaa !14
  %3416 = getelementptr inbounds %struct.doublecomplex, ptr %70, i32 0, i32 1
  store double %3415, ptr %3416, align 8, !tbaa !14
  %3417 = load i32, ptr %49, align 4, !tbaa !9
  %3418 = load i32, ptr %17, align 4, !tbaa !9
  %3419 = mul nsw i32 %3417, %3418
  %3420 = add nsw i32 %3419, 1
  store i32 %3420, ptr %20, align 4, !tbaa !9
  %3421 = load i32, ptr %49, align 4, !tbaa !9
  %3422 = load i32, ptr %17, align 4, !tbaa !9
  %3423 = mul nsw i32 %3421, %3422
  %3424 = add nsw i32 %3423, 1
  store i32 %3424, ptr %21, align 4, !tbaa !9
  %3425 = getelementptr inbounds %struct.doublecomplex, ptr %70, i32 0, i32 0
  %3426 = load double, ptr %3425, align 8, !tbaa !11
  %3427 = getelementptr inbounds %struct.doublecomplex, ptr %50, i32 0, i32 0
  %3428 = load double, ptr %3427, align 8, !tbaa !11
  %3429 = getelementptr inbounds %struct.doublecomplex, ptr %70, i32 0, i32 1
  %3430 = load double, ptr %3429, align 8, !tbaa !14
  %3431 = getelementptr inbounds %struct.doublecomplex, ptr %50, i32 0, i32 1
  %3432 = load double, ptr %3431, align 8, !tbaa !14
  %3433 = fmul double %3430, %3432
  %3434 = fneg double %3433
  %3435 = call double @llvm.fmuladd.f64(double %3426, double %3428, double %3434)
  %3436 = getelementptr inbounds %struct.doublecomplex, ptr %31, i32 0, i32 0
  store double %3435, ptr %3436, align 8, !tbaa !11
  %3437 = getelementptr inbounds %struct.doublecomplex, ptr %70, i32 0, i32 0
  %3438 = load double, ptr %3437, align 8, !tbaa !11
  %3439 = getelementptr inbounds %struct.doublecomplex, ptr %50, i32 0, i32 1
  %3440 = load double, ptr %3439, align 8, !tbaa !14
  %3441 = getelementptr inbounds %struct.doublecomplex, ptr %70, i32 0, i32 1
  %3442 = load double, ptr %3441, align 8, !tbaa !14
  %3443 = getelementptr inbounds %struct.doublecomplex, ptr %50, i32 0, i32 0
  %3444 = load double, ptr %3443, align 8, !tbaa !11
  %3445 = fmul double %3442, %3444
  %3446 = call double @llvm.fmuladd.f64(double %3438, double %3440, double %3445)
  %3447 = getelementptr inbounds %struct.doublecomplex, ptr %31, i32 0, i32 1
  store double %3446, ptr %3447, align 8, !tbaa !14
  %3448 = load ptr, ptr %14, align 8, !tbaa !5
  %3449 = load i32, ptr %21, align 4, !tbaa !9
  %3450 = sext i32 %3449 to i64
  %3451 = getelementptr inbounds %struct.doublecomplex, ptr %3448, i64 %3450
  %3452 = getelementptr inbounds %struct.doublecomplex, ptr %3451, i32 0, i32 0
  %3453 = load double, ptr %3452, align 8, !tbaa !11
  %3454 = getelementptr inbounds %struct.doublecomplex, ptr %31, i32 0, i32 0
  %3455 = load double, ptr %3454, align 8, !tbaa !11
  %3456 = fsub double %3453, %3455
  %3457 = getelementptr inbounds %struct.doublecomplex, ptr %30, i32 0, i32 0
  store double %3456, ptr %3457, align 8, !tbaa !11
  %3458 = load ptr, ptr %14, align 8, !tbaa !5
  %3459 = load i32, ptr %21, align 4, !tbaa !9
  %3460 = sext i32 %3459 to i64
  %3461 = getelementptr inbounds %struct.doublecomplex, ptr %3458, i64 %3460
  %3462 = getelementptr inbounds %struct.doublecomplex, ptr %3461, i32 0, i32 1
  %3463 = load double, ptr %3462, align 8, !tbaa !14
  %3464 = getelementptr inbounds %struct.doublecomplex, ptr %31, i32 0, i32 1
  %3465 = load double, ptr %3464, align 8, !tbaa !14
  %3466 = fsub double %3463, %3465
  %3467 = getelementptr inbounds %struct.doublecomplex, ptr %30, i32 0, i32 1
  store double %3466, ptr %3467, align 8, !tbaa !14
  %3468 = getelementptr inbounds %struct.doublecomplex, ptr %30, i32 0, i32 0
  %3469 = load double, ptr %3468, align 8, !tbaa !11
  %3470 = load ptr, ptr %14, align 8, !tbaa !5
  %3471 = load i32, ptr %20, align 4, !tbaa !9
  %3472 = sext i32 %3471 to i64
  %3473 = getelementptr inbounds %struct.doublecomplex, ptr %3470, i64 %3472
  %3474 = getelementptr inbounds %struct.doublecomplex, ptr %3473, i32 0, i32 0
  store double %3469, ptr %3474, align 8, !tbaa !11
  %3475 = getelementptr inbounds %struct.doublecomplex, ptr %30, i32 0, i32 1
  %3476 = load double, ptr %3475, align 8, !tbaa !14
  %3477 = load ptr, ptr %14, align 8, !tbaa !5
  %3478 = load i32, ptr %20, align 4, !tbaa !9
  %3479 = sext i32 %3478 to i64
  %3480 = getelementptr inbounds %struct.doublecomplex, ptr %3477, i64 %3479
  %3481 = getelementptr inbounds %struct.doublecomplex, ptr %3480, i32 0, i32 1
  store double %3476, ptr %3481, align 8, !tbaa !14
  %3482 = load i32, ptr %49, align 4, !tbaa !9
  %3483 = load i32, ptr %17, align 4, !tbaa !9
  %3484 = mul nsw i32 %3482, %3483
  %3485 = add nsw i32 %3484, 2
  store i32 %3485, ptr %20, align 4, !tbaa !9
  %3486 = load i32, ptr %49, align 4, !tbaa !9
  %3487 = load i32, ptr %17, align 4, !tbaa !9
  %3488 = mul nsw i32 %3486, %3487
  %3489 = add nsw i32 %3488, 2
  store i32 %3489, ptr %21, align 4, !tbaa !9
  %3490 = getelementptr inbounds %struct.doublecomplex, ptr %70, i32 0, i32 0
  %3491 = load double, ptr %3490, align 8, !tbaa !11
  %3492 = getelementptr inbounds %struct.doublecomplex, ptr %51, i32 0, i32 0
  %3493 = load double, ptr %3492, align 8, !tbaa !11
  %3494 = getelementptr inbounds %struct.doublecomplex, ptr %70, i32 0, i32 1
  %3495 = load double, ptr %3494, align 8, !tbaa !14
  %3496 = getelementptr inbounds %struct.doublecomplex, ptr %51, i32 0, i32 1
  %3497 = load double, ptr %3496, align 8, !tbaa !14
  %3498 = fmul double %3495, %3497
  %3499 = fneg double %3498
  %3500 = call double @llvm.fmuladd.f64(double %3491, double %3493, double %3499)
  %3501 = getelementptr inbounds %struct.doublecomplex, ptr %31, i32 0, i32 0
  store double %3500, ptr %3501, align 8, !tbaa !11
  %3502 = getelementptr inbounds %struct.doublecomplex, ptr %70, i32 0, i32 0
  %3503 = load double, ptr %3502, align 8, !tbaa !11
  %3504 = getelementptr inbounds %struct.doublecomplex, ptr %51, i32 0, i32 1
  %3505 = load double, ptr %3504, align 8, !tbaa !14
  %3506 = getelementptr inbounds %struct.doublecomplex, ptr %70, i32 0, i32 1
  %3507 = load double, ptr %3506, align 8, !tbaa !14
  %3508 = getelementptr inbounds %struct.doublecomplex, ptr %51, i32 0, i32 0
  %3509 = load double, ptr %3508, align 8, !tbaa !11
  %3510 = fmul double %3507, %3509
  %3511 = call double @llvm.fmuladd.f64(double %3503, double %3505, double %3510)
  %3512 = getelementptr inbounds %struct.doublecomplex, ptr %31, i32 0, i32 1
  store double %3511, ptr %3512, align 8, !tbaa !14
  %3513 = load ptr, ptr %14, align 8, !tbaa !5
  %3514 = load i32, ptr %21, align 4, !tbaa !9
  %3515 = sext i32 %3514 to i64
  %3516 = getelementptr inbounds %struct.doublecomplex, ptr %3513, i64 %3515
  %3517 = getelementptr inbounds %struct.doublecomplex, ptr %3516, i32 0, i32 0
  %3518 = load double, ptr %3517, align 8, !tbaa !11
  %3519 = getelementptr inbounds %struct.doublecomplex, ptr %31, i32 0, i32 0
  %3520 = load double, ptr %3519, align 8, !tbaa !11
  %3521 = fsub double %3518, %3520
  %3522 = getelementptr inbounds %struct.doublecomplex, ptr %30, i32 0, i32 0
  store double %3521, ptr %3522, align 8, !tbaa !11
  %3523 = load ptr, ptr %14, align 8, !tbaa !5
  %3524 = load i32, ptr %21, align 4, !tbaa !9
  %3525 = sext i32 %3524 to i64
  %3526 = getelementptr inbounds %struct.doublecomplex, ptr %3523, i64 %3525
  %3527 = getelementptr inbounds %struct.doublecomplex, ptr %3526, i32 0, i32 1
  %3528 = load double, ptr %3527, align 8, !tbaa !14
  %3529 = getelementptr inbounds %struct.doublecomplex, ptr %31, i32 0, i32 1
  %3530 = load double, ptr %3529, align 8, !tbaa !14
  %3531 = fsub double %3528, %3530
  %3532 = getelementptr inbounds %struct.doublecomplex, ptr %30, i32 0, i32 1
  store double %3531, ptr %3532, align 8, !tbaa !14
  %3533 = getelementptr inbounds %struct.doublecomplex, ptr %30, i32 0, i32 0
  %3534 = load double, ptr %3533, align 8, !tbaa !11
  %3535 = load ptr, ptr %14, align 8, !tbaa !5
  %3536 = load i32, ptr %20, align 4, !tbaa !9
  %3537 = sext i32 %3536 to i64
  %3538 = getelementptr inbounds %struct.doublecomplex, ptr %3535, i64 %3537
  %3539 = getelementptr inbounds %struct.doublecomplex, ptr %3538, i32 0, i32 0
  store double %3534, ptr %3539, align 8, !tbaa !11
  %3540 = getelementptr inbounds %struct.doublecomplex, ptr %30, i32 0, i32 1
  %3541 = load double, ptr %3540, align 8, !tbaa !14
  %3542 = load ptr, ptr %14, align 8, !tbaa !5
  %3543 = load i32, ptr %20, align 4, !tbaa !9
  %3544 = sext i32 %3543 to i64
  %3545 = getelementptr inbounds %struct.doublecomplex, ptr %3542, i64 %3544
  %3546 = getelementptr inbounds %struct.doublecomplex, ptr %3545, i32 0, i32 1
  store double %3541, ptr %3546, align 8, !tbaa !14
  %3547 = load i32, ptr %49, align 4, !tbaa !9
  %3548 = load i32, ptr %17, align 4, !tbaa !9
  %3549 = mul nsw i32 %3547, %3548
  %3550 = add nsw i32 %3549, 3
  store i32 %3550, ptr %20, align 4, !tbaa !9
  %3551 = load i32, ptr %49, align 4, !tbaa !9
  %3552 = load i32, ptr %17, align 4, !tbaa !9
  %3553 = mul nsw i32 %3551, %3552
  %3554 = add nsw i32 %3553, 3
  store i32 %3554, ptr %21, align 4, !tbaa !9
  %3555 = getelementptr inbounds %struct.doublecomplex, ptr %70, i32 0, i32 0
  %3556 = load double, ptr %3555, align 8, !tbaa !11
  %3557 = getelementptr inbounds %struct.doublecomplex, ptr %52, i32 0, i32 0
  %3558 = load double, ptr %3557, align 8, !tbaa !11
  %3559 = getelementptr inbounds %struct.doublecomplex, ptr %70, i32 0, i32 1
  %3560 = load double, ptr %3559, align 8, !tbaa !14
  %3561 = getelementptr inbounds %struct.doublecomplex, ptr %52, i32 0, i32 1
  %3562 = load double, ptr %3561, align 8, !tbaa !14
  %3563 = fmul double %3560, %3562
  %3564 = fneg double %3563
  %3565 = call double @llvm.fmuladd.f64(double %3556, double %3558, double %3564)
  %3566 = getelementptr inbounds %struct.doublecomplex, ptr %31, i32 0, i32 0
  store double %3565, ptr %3566, align 8, !tbaa !11
  %3567 = getelementptr inbounds %struct.doublecomplex, ptr %70, i32 0, i32 0
  %3568 = load double, ptr %3567, align 8, !tbaa !11
  %3569 = getelementptr inbounds %struct.doublecomplex, ptr %52, i32 0, i32 1
  %3570 = load double, ptr %3569, align 8, !tbaa !14
  %3571 = getelementptr inbounds %struct.doublecomplex, ptr %70, i32 0, i32 1
  %3572 = load double, ptr %3571, align 8, !tbaa !14
  %3573 = getelementptr inbounds %struct.doublecomplex, ptr %52, i32 0, i32 0
  %3574 = load double, ptr %3573, align 8, !tbaa !11
  %3575 = fmul double %3572, %3574
  %3576 = call double @llvm.fmuladd.f64(double %3568, double %3570, double %3575)
  %3577 = getelementptr inbounds %struct.doublecomplex, ptr %31, i32 0, i32 1
  store double %3576, ptr %3577, align 8, !tbaa !14
  %3578 = load ptr, ptr %14, align 8, !tbaa !5
  %3579 = load i32, ptr %21, align 4, !tbaa !9
  %3580 = sext i32 %3579 to i64
  %3581 = getelementptr inbounds %struct.doublecomplex, ptr %3578, i64 %3580
  %3582 = getelementptr inbounds %struct.doublecomplex, ptr %3581, i32 0, i32 0
  %3583 = load double, ptr %3582, align 8, !tbaa !11
  %3584 = getelementptr inbounds %struct.doublecomplex, ptr %31, i32 0, i32 0
  %3585 = load double, ptr %3584, align 8, !tbaa !11
  %3586 = fsub double %3583, %3585
  %3587 = getelementptr inbounds %struct.doublecomplex, ptr %30, i32 0, i32 0
  store double %3586, ptr %3587, align 8, !tbaa !11
  %3588 = load ptr, ptr %14, align 8, !tbaa !5
  %3589 = load i32, ptr %21, align 4, !tbaa !9
  %3590 = sext i32 %3589 to i64
  %3591 = getelementptr inbounds %struct.doublecomplex, ptr %3588, i64 %3590
  %3592 = getelementptr inbounds %struct.doublecomplex, ptr %3591, i32 0, i32 1
  %3593 = load double, ptr %3592, align 8, !tbaa !14
  %3594 = getelementptr inbounds %struct.doublecomplex, ptr %31, i32 0, i32 1
  %3595 = load double, ptr %3594, align 8, !tbaa !14
  %3596 = fsub double %3593, %3595
  %3597 = getelementptr inbounds %struct.doublecomplex, ptr %30, i32 0, i32 1
  store double %3596, ptr %3597, align 8, !tbaa !14
  %3598 = getelementptr inbounds %struct.doublecomplex, ptr %30, i32 0, i32 0
  %3599 = load double, ptr %3598, align 8, !tbaa !11
  %3600 = load ptr, ptr %14, align 8, !tbaa !5
  %3601 = load i32, ptr %20, align 4, !tbaa !9
  %3602 = sext i32 %3601 to i64
  %3603 = getelementptr inbounds %struct.doublecomplex, ptr %3600, i64 %3602
  %3604 = getelementptr inbounds %struct.doublecomplex, ptr %3603, i32 0, i32 0
  store double %3599, ptr %3604, align 8, !tbaa !11
  %3605 = getelementptr inbounds %struct.doublecomplex, ptr %30, i32 0, i32 1
  %3606 = load double, ptr %3605, align 8, !tbaa !14
  %3607 = load ptr, ptr %14, align 8, !tbaa !5
  %3608 = load i32, ptr %20, align 4, !tbaa !9
  %3609 = sext i32 %3608 to i64
  %3610 = getelementptr inbounds %struct.doublecomplex, ptr %3607, i64 %3609
  %3611 = getelementptr inbounds %struct.doublecomplex, ptr %3610, i32 0, i32 1
  store double %3606, ptr %3611, align 8, !tbaa !14
  %3612 = load i32, ptr %49, align 4, !tbaa !9
  %3613 = load i32, ptr %17, align 4, !tbaa !9
  %3614 = mul nsw i32 %3612, %3613
  %3615 = add nsw i32 %3614, 4
  store i32 %3615, ptr %20, align 4, !tbaa !9
  %3616 = load i32, ptr %49, align 4, !tbaa !9
  %3617 = load i32, ptr %17, align 4, !tbaa !9
  %3618 = mul nsw i32 %3616, %3617
  %3619 = add nsw i32 %3618, 4
  store i32 %3619, ptr %21, align 4, !tbaa !9
  %3620 = getelementptr inbounds %struct.doublecomplex, ptr %70, i32 0, i32 0
  %3621 = load double, ptr %3620, align 8, !tbaa !11
  %3622 = getelementptr inbounds %struct.doublecomplex, ptr %53, i32 0, i32 0
  %3623 = load double, ptr %3622, align 8, !tbaa !11
  %3624 = getelementptr inbounds %struct.doublecomplex, ptr %70, i32 0, i32 1
  %3625 = load double, ptr %3624, align 8, !tbaa !14
  %3626 = getelementptr inbounds %struct.doublecomplex, ptr %53, i32 0, i32 1
  %3627 = load double, ptr %3626, align 8, !tbaa !14
  %3628 = fmul double %3625, %3627
  %3629 = fneg double %3628
  %3630 = call double @llvm.fmuladd.f64(double %3621, double %3623, double %3629)
  %3631 = getelementptr inbounds %struct.doublecomplex, ptr %31, i32 0, i32 0
  store double %3630, ptr %3631, align 8, !tbaa !11
  %3632 = getelementptr inbounds %struct.doublecomplex, ptr %70, i32 0, i32 0
  %3633 = load double, ptr %3632, align 8, !tbaa !11
  %3634 = getelementptr inbounds %struct.doublecomplex, ptr %53, i32 0, i32 1
  %3635 = load double, ptr %3634, align 8, !tbaa !14
  %3636 = getelementptr inbounds %struct.doublecomplex, ptr %70, i32 0, i32 1
  %3637 = load double, ptr %3636, align 8, !tbaa !14
  %3638 = getelementptr inbounds %struct.doublecomplex, ptr %53, i32 0, i32 0
  %3639 = load double, ptr %3638, align 8, !tbaa !11
  %3640 = fmul double %3637, %3639
  %3641 = call double @llvm.fmuladd.f64(double %3633, double %3635, double %3640)
  %3642 = getelementptr inbounds %struct.doublecomplex, ptr %31, i32 0, i32 1
  store double %3641, ptr %3642, align 8, !tbaa !14
  %3643 = load ptr, ptr %14, align 8, !tbaa !5
  %3644 = load i32, ptr %21, align 4, !tbaa !9
  %3645 = sext i32 %3644 to i64
  %3646 = getelementptr inbounds %struct.doublecomplex, ptr %3643, i64 %3645
  %3647 = getelementptr inbounds %struct.doublecomplex, ptr %3646, i32 0, i32 0
  %3648 = load double, ptr %3647, align 8, !tbaa !11
  %3649 = getelementptr inbounds %struct.doublecomplex, ptr %31, i32 0, i32 0
  %3650 = load double, ptr %3649, align 8, !tbaa !11
  %3651 = fsub double %3648, %3650
  %3652 = getelementptr inbounds %struct.doublecomplex, ptr %30, i32 0, i32 0
  store double %3651, ptr %3652, align 8, !tbaa !11
  %3653 = load ptr, ptr %14, align 8, !tbaa !5
  %3654 = load i32, ptr %21, align 4, !tbaa !9
  %3655 = sext i32 %3654 to i64
  %3656 = getelementptr inbounds %struct.doublecomplex, ptr %3653, i64 %3655
  %3657 = getelementptr inbounds %struct.doublecomplex, ptr %3656, i32 0, i32 1
  %3658 = load double, ptr %3657, align 8, !tbaa !14
  %3659 = getelementptr inbounds %struct.doublecomplex, ptr %31, i32 0, i32 1
  %3660 = load double, ptr %3659, align 8, !tbaa !14
  %3661 = fsub double %3658, %3660
  %3662 = getelementptr inbounds %struct.doublecomplex, ptr %30, i32 0, i32 1
  store double %3661, ptr %3662, align 8, !tbaa !14
  %3663 = getelementptr inbounds %struct.doublecomplex, ptr %30, i32 0, i32 0
  %3664 = load double, ptr %3663, align 8, !tbaa !11
  %3665 = load ptr, ptr %14, align 8, !tbaa !5
  %3666 = load i32, ptr %20, align 4, !tbaa !9
  %3667 = sext i32 %3666 to i64
  %3668 = getelementptr inbounds %struct.doublecomplex, ptr %3665, i64 %3667
  %3669 = getelementptr inbounds %struct.doublecomplex, ptr %3668, i32 0, i32 0
  store double %3664, ptr %3669, align 8, !tbaa !11
  %3670 = getelementptr inbounds %struct.doublecomplex, ptr %30, i32 0, i32 1
  %3671 = load double, ptr %3670, align 8, !tbaa !14
  %3672 = load ptr, ptr %14, align 8, !tbaa !5
  %3673 = load i32, ptr %20, align 4, !tbaa !9
  %3674 = sext i32 %3673 to i64
  %3675 = getelementptr inbounds %struct.doublecomplex, ptr %3672, i64 %3674
  %3676 = getelementptr inbounds %struct.doublecomplex, ptr %3675, i32 0, i32 1
  store double %3671, ptr %3676, align 8, !tbaa !14
  %3677 = load i32, ptr %49, align 4, !tbaa !9
  %3678 = load i32, ptr %17, align 4, !tbaa !9
  %3679 = mul nsw i32 %3677, %3678
  %3680 = add nsw i32 %3679, 5
  store i32 %3680, ptr %20, align 4, !tbaa !9
  %3681 = load i32, ptr %49, align 4, !tbaa !9
  %3682 = load i32, ptr %17, align 4, !tbaa !9
  %3683 = mul nsw i32 %3681, %3682
  %3684 = add nsw i32 %3683, 5
  store i32 %3684, ptr %21, align 4, !tbaa !9
  %3685 = getelementptr inbounds %struct.doublecomplex, ptr %70, i32 0, i32 0
  %3686 = load double, ptr %3685, align 8, !tbaa !11
  %3687 = getelementptr inbounds %struct.doublecomplex, ptr %54, i32 0, i32 0
  %3688 = load double, ptr %3687, align 8, !tbaa !11
  %3689 = getelementptr inbounds %struct.doublecomplex, ptr %70, i32 0, i32 1
  %3690 = load double, ptr %3689, align 8, !tbaa !14
  %3691 = getelementptr inbounds %struct.doublecomplex, ptr %54, i32 0, i32 1
  %3692 = load double, ptr %3691, align 8, !tbaa !14
  %3693 = fmul double %3690, %3692
  %3694 = fneg double %3693
  %3695 = call double @llvm.fmuladd.f64(double %3686, double %3688, double %3694)
  %3696 = getelementptr inbounds %struct.doublecomplex, ptr %31, i32 0, i32 0
  store double %3695, ptr %3696, align 8, !tbaa !11
  %3697 = getelementptr inbounds %struct.doublecomplex, ptr %70, i32 0, i32 0
  %3698 = load double, ptr %3697, align 8, !tbaa !11
  %3699 = getelementptr inbounds %struct.doublecomplex, ptr %54, i32 0, i32 1
  %3700 = load double, ptr %3699, align 8, !tbaa !14
  %3701 = getelementptr inbounds %struct.doublecomplex, ptr %70, i32 0, i32 1
  %3702 = load double, ptr %3701, align 8, !tbaa !14
  %3703 = getelementptr inbounds %struct.doublecomplex, ptr %54, i32 0, i32 0
  %3704 = load double, ptr %3703, align 8, !tbaa !11
  %3705 = fmul double %3702, %3704
  %3706 = call double @llvm.fmuladd.f64(double %3698, double %3700, double %3705)
  %3707 = getelementptr inbounds %struct.doublecomplex, ptr %31, i32 0, i32 1
  store double %3706, ptr %3707, align 8, !tbaa !14
  %3708 = load ptr, ptr %14, align 8, !tbaa !5
  %3709 = load i32, ptr %21, align 4, !tbaa !9
  %3710 = sext i32 %3709 to i64
  %3711 = getelementptr inbounds %struct.doublecomplex, ptr %3708, i64 %3710
  %3712 = getelementptr inbounds %struct.doublecomplex, ptr %3711, i32 0, i32 0
  %3713 = load double, ptr %3712, align 8, !tbaa !11
  %3714 = getelementptr inbounds %struct.doublecomplex, ptr %31, i32 0, i32 0
  %3715 = load double, ptr %3714, align 8, !tbaa !11
  %3716 = fsub double %3713, %3715
  %3717 = getelementptr inbounds %struct.doublecomplex, ptr %30, i32 0, i32 0
  store double %3716, ptr %3717, align 8, !tbaa !11
  %3718 = load ptr, ptr %14, align 8, !tbaa !5
  %3719 = load i32, ptr %21, align 4, !tbaa !9
  %3720 = sext i32 %3719 to i64
  %3721 = getelementptr inbounds %struct.doublecomplex, ptr %3718, i64 %3720
  %3722 = getelementptr inbounds %struct.doublecomplex, ptr %3721, i32 0, i32 1
  %3723 = load double, ptr %3722, align 8, !tbaa !14
  %3724 = getelementptr inbounds %struct.doublecomplex, ptr %31, i32 0, i32 1
  %3725 = load double, ptr %3724, align 8, !tbaa !14
  %3726 = fsub double %3723, %3725
  %3727 = getelementptr inbounds %struct.doublecomplex, ptr %30, i32 0, i32 1
  store double %3726, ptr %3727, align 8, !tbaa !14
  %3728 = getelementptr inbounds %struct.doublecomplex, ptr %30, i32 0, i32 0
  %3729 = load double, ptr %3728, align 8, !tbaa !11
  %3730 = load ptr, ptr %14, align 8, !tbaa !5
  %3731 = load i32, ptr %20, align 4, !tbaa !9
  %3732 = sext i32 %3731 to i64
  %3733 = getelementptr inbounds %struct.doublecomplex, ptr %3730, i64 %3732
  %3734 = getelementptr inbounds %struct.doublecomplex, ptr %3733, i32 0, i32 0
  store double %3729, ptr %3734, align 8, !tbaa !11
  %3735 = getelementptr inbounds %struct.doublecomplex, ptr %30, i32 0, i32 1
  %3736 = load double, ptr %3735, align 8, !tbaa !14
  %3737 = load ptr, ptr %14, align 8, !tbaa !5
  %3738 = load i32, ptr %20, align 4, !tbaa !9
  %3739 = sext i32 %3738 to i64
  %3740 = getelementptr inbounds %struct.doublecomplex, ptr %3737, i64 %3739
  %3741 = getelementptr inbounds %struct.doublecomplex, ptr %3740, i32 0, i32 1
  store double %3736, ptr %3741, align 8, !tbaa !14
  %3742 = load i32, ptr %49, align 4, !tbaa !9
  %3743 = load i32, ptr %17, align 4, !tbaa !9
  %3744 = mul nsw i32 %3742, %3743
  %3745 = add nsw i32 %3744, 6
  store i32 %3745, ptr %20, align 4, !tbaa !9
  %3746 = load i32, ptr %49, align 4, !tbaa !9
  %3747 = load i32, ptr %17, align 4, !tbaa !9
  %3748 = mul nsw i32 %3746, %3747
  %3749 = add nsw i32 %3748, 6
  store i32 %3749, ptr %21, align 4, !tbaa !9
  %3750 = getelementptr inbounds %struct.doublecomplex, ptr %70, i32 0, i32 0
  %3751 = load double, ptr %3750, align 8, !tbaa !11
  %3752 = getelementptr inbounds %struct.doublecomplex, ptr %55, i32 0, i32 0
  %3753 = load double, ptr %3752, align 8, !tbaa !11
  %3754 = getelementptr inbounds %struct.doublecomplex, ptr %70, i32 0, i32 1
  %3755 = load double, ptr %3754, align 8, !tbaa !14
  %3756 = getelementptr inbounds %struct.doublecomplex, ptr %55, i32 0, i32 1
  %3757 = load double, ptr %3756, align 8, !tbaa !14
  %3758 = fmul double %3755, %3757
  %3759 = fneg double %3758
  %3760 = call double @llvm.fmuladd.f64(double %3751, double %3753, double %3759)
  %3761 = getelementptr inbounds %struct.doublecomplex, ptr %31, i32 0, i32 0
  store double %3760, ptr %3761, align 8, !tbaa !11
  %3762 = getelementptr inbounds %struct.doublecomplex, ptr %70, i32 0, i32 0
  %3763 = load double, ptr %3762, align 8, !tbaa !11
  %3764 = getelementptr inbounds %struct.doublecomplex, ptr %55, i32 0, i32 1
  %3765 = load double, ptr %3764, align 8, !tbaa !14
  %3766 = getelementptr inbounds %struct.doublecomplex, ptr %70, i32 0, i32 1
  %3767 = load double, ptr %3766, align 8, !tbaa !14
  %3768 = getelementptr inbounds %struct.doublecomplex, ptr %55, i32 0, i32 0
  %3769 = load double, ptr %3768, align 8, !tbaa !11
  %3770 = fmul double %3767, %3769
  %3771 = call double @llvm.fmuladd.f64(double %3763, double %3765, double %3770)
  %3772 = getelementptr inbounds %struct.doublecomplex, ptr %31, i32 0, i32 1
  store double %3771, ptr %3772, align 8, !tbaa !14
  %3773 = load ptr, ptr %14, align 8, !tbaa !5
  %3774 = load i32, ptr %21, align 4, !tbaa !9
  %3775 = sext i32 %3774 to i64
  %3776 = getelementptr inbounds %struct.doublecomplex, ptr %3773, i64 %3775
  %3777 = getelementptr inbounds %struct.doublecomplex, ptr %3776, i32 0, i32 0
  %3778 = load double, ptr %3777, align 8, !tbaa !11
  %3779 = getelementptr inbounds %struct.doublecomplex, ptr %31, i32 0, i32 0
  %3780 = load double, ptr %3779, align 8, !tbaa !11
  %3781 = fsub double %3778, %3780
  %3782 = getelementptr inbounds %struct.doublecomplex, ptr %30, i32 0, i32 0
  store double %3781, ptr %3782, align 8, !tbaa !11
  %3783 = load ptr, ptr %14, align 8, !tbaa !5
  %3784 = load i32, ptr %21, align 4, !tbaa !9
  %3785 = sext i32 %3784 to i64
  %3786 = getelementptr inbounds %struct.doublecomplex, ptr %3783, i64 %3785
  %3787 = getelementptr inbounds %struct.doublecomplex, ptr %3786, i32 0, i32 1
  %3788 = load double, ptr %3787, align 8, !tbaa !14
  %3789 = getelementptr inbounds %struct.doublecomplex, ptr %31, i32 0, i32 1
  %3790 = load double, ptr %3789, align 8, !tbaa !14
  %3791 = fsub double %3788, %3790
  %3792 = getelementptr inbounds %struct.doublecomplex, ptr %30, i32 0, i32 1
  store double %3791, ptr %3792, align 8, !tbaa !14
  %3793 = getelementptr inbounds %struct.doublecomplex, ptr %30, i32 0, i32 0
  %3794 = load double, ptr %3793, align 8, !tbaa !11
  %3795 = load ptr, ptr %14, align 8, !tbaa !5
  %3796 = load i32, ptr %20, align 4, !tbaa !9
  %3797 = sext i32 %3796 to i64
  %3798 = getelementptr inbounds %struct.doublecomplex, ptr %3795, i64 %3797
  %3799 = getelementptr inbounds %struct.doublecomplex, ptr %3798, i32 0, i32 0
  store double %3794, ptr %3799, align 8, !tbaa !11
  %3800 = getelementptr inbounds %struct.doublecomplex, ptr %30, i32 0, i32 1
  %3801 = load double, ptr %3800, align 8, !tbaa !14
  %3802 = load ptr, ptr %14, align 8, !tbaa !5
  %3803 = load i32, ptr %20, align 4, !tbaa !9
  %3804 = sext i32 %3803 to i64
  %3805 = getelementptr inbounds %struct.doublecomplex, ptr %3802, i64 %3804
  %3806 = getelementptr inbounds %struct.doublecomplex, ptr %3805, i32 0, i32 1
  store double %3801, ptr %3806, align 8, !tbaa !14
  br label %3807

3807:                                             ; preds = %3092
  %3808 = load i32, ptr %49, align 4, !tbaa !9
  %3809 = add nsw i32 %3808, 1
  store i32 %3809, ptr %49, align 4, !tbaa !9
  br label %3088, !llvm.loop !21

3810:                                             ; preds = %3088
  br label %19171

3811:                                             ; preds = %109
  %3812 = load ptr, ptr %12, align 8, !tbaa !5
  %3813 = getelementptr inbounds %struct.doublecomplex, ptr %3812, i64 1
  %3814 = call { double, double } @Cd(ptr noundef %3813)
  %3815 = extractvalue { double, double } %3814, 0
  %3816 = extractvalue { double, double } %3814, 1
  %3817 = fneg double %3816
  %3818 = call ptr @_pCd(ptr noundef %30)
  %3819 = getelementptr inbounds { double, double }, ptr %3818, i32 0, i32 0
  %3820 = getelementptr inbounds { double, double }, ptr %3818, i32 0, i32 1
  store double %3815, ptr %3819, align 8
  store double %3817, ptr %3820, align 8
  %3821 = getelementptr inbounds %struct.doublecomplex, ptr %30, i32 0, i32 0
  %3822 = load double, ptr %3821, align 8, !tbaa !11
  %3823 = getelementptr inbounds %struct.doublecomplex, ptr %59, i32 0, i32 0
  store double %3822, ptr %3823, align 8, !tbaa !11
  %3824 = getelementptr inbounds %struct.doublecomplex, ptr %30, i32 0, i32 1
  %3825 = load double, ptr %3824, align 8, !tbaa !14
  %3826 = getelementptr inbounds %struct.doublecomplex, ptr %59, i32 0, i32 1
  store double %3825, ptr %3826, align 8, !tbaa !14
  %3827 = call { double, double } @Cd(ptr noundef %59)
  %3828 = extractvalue { double, double } %3827, 0
  %3829 = extractvalue { double, double } %3827, 1
  %3830 = fneg double %3829
  %3831 = call ptr @_pCd(ptr noundef %31)
  %3832 = getelementptr inbounds { double, double }, ptr %3831, i32 0, i32 0
  %3833 = getelementptr inbounds { double, double }, ptr %3831, i32 0, i32 1
  store double %3828, ptr %3832, align 8
  store double %3830, ptr %3833, align 8
  %3834 = load ptr, ptr %13, align 8, !tbaa !5
  %3835 = getelementptr inbounds %struct.doublecomplex, ptr %3834, i32 0, i32 0
  %3836 = load double, ptr %3835, align 8, !tbaa !11
  %3837 = getelementptr inbounds %struct.doublecomplex, ptr %31, i32 0, i32 0
  %3838 = load double, ptr %3837, align 8, !tbaa !11
  %3839 = load ptr, ptr %13, align 8, !tbaa !5
  %3840 = getelementptr inbounds %struct.doublecomplex, ptr %3839, i32 0, i32 1
  %3841 = load double, ptr %3840, align 8, !tbaa !14
  %3842 = getelementptr inbounds %struct.doublecomplex, ptr %31, i32 0, i32 1
  %3843 = load double, ptr %3842, align 8, !tbaa !14
  %3844 = fmul double %3841, %3843
  %3845 = fneg double %3844
  %3846 = call double @llvm.fmuladd.f64(double %3836, double %3838, double %3845)
  %3847 = getelementptr inbounds %struct.doublecomplex, ptr %30, i32 0, i32 0
  store double %3846, ptr %3847, align 8, !tbaa !11
  %3848 = load ptr, ptr %13, align 8, !tbaa !5
  %3849 = getelementptr inbounds %struct.doublecomplex, ptr %3848, i32 0, i32 0
  %3850 = load double, ptr %3849, align 8, !tbaa !11
  %3851 = getelementptr inbounds %struct.doublecomplex, ptr %31, i32 0, i32 1
  %3852 = load double, ptr %3851, align 8, !tbaa !14
  %3853 = load ptr, ptr %13, align 8, !tbaa !5
  %3854 = getelementptr inbounds %struct.doublecomplex, ptr %3853, i32 0, i32 1
  %3855 = load double, ptr %3854, align 8, !tbaa !14
  %3856 = getelementptr inbounds %struct.doublecomplex, ptr %31, i32 0, i32 0
  %3857 = load double, ptr %3856, align 8, !tbaa !11
  %3858 = fmul double %3855, %3857
  %3859 = call double @llvm.fmuladd.f64(double %3850, double %3852, double %3858)
  %3860 = getelementptr inbounds %struct.doublecomplex, ptr %30, i32 0, i32 1
  store double %3859, ptr %3860, align 8, !tbaa !14
  %3861 = getelementptr inbounds %struct.doublecomplex, ptr %30, i32 0, i32 0
  %3862 = load double, ptr %3861, align 8, !tbaa !11
  %3863 = getelementptr inbounds %struct.doublecomplex, ptr %50, i32 0, i32 0
  store double %3862, ptr %3863, align 8, !tbaa !11
  %3864 = getelementptr inbounds %struct.doublecomplex, ptr %30, i32 0, i32 1
  %3865 = load double, ptr %3864, align 8, !tbaa !14
  %3866 = getelementptr inbounds %struct.doublecomplex, ptr %50, i32 0, i32 1
  store double %3865, ptr %3866, align 8, !tbaa !14
  %3867 = load ptr, ptr %12, align 8, !tbaa !5
  %3868 = getelementptr inbounds %struct.doublecomplex, ptr %3867, i64 2
  %3869 = call { double, double } @Cd(ptr noundef %3868)
  %3870 = extractvalue { double, double } %3869, 0
  %3871 = extractvalue { double, double } %3869, 1
  %3872 = fneg double %3871
  %3873 = call ptr @_pCd(ptr noundef %30)
  %3874 = getelementptr inbounds { double, double }, ptr %3873, i32 0, i32 0
  %3875 = getelementptr inbounds { double, double }, ptr %3873, i32 0, i32 1
  store double %3870, ptr %3874, align 8
  store double %3872, ptr %3875, align 8
  %3876 = getelementptr inbounds %struct.doublecomplex, ptr %30, i32 0, i32 0
  %3877 = load double, ptr %3876, align 8, !tbaa !11
  %3878 = getelementptr inbounds %struct.doublecomplex, ptr %60, i32 0, i32 0
  store double %3877, ptr %3878, align 8, !tbaa !11
  %3879 = getelementptr inbounds %struct.doublecomplex, ptr %30, i32 0, i32 1
  %3880 = load double, ptr %3879, align 8, !tbaa !14
  %3881 = getelementptr inbounds %struct.doublecomplex, ptr %60, i32 0, i32 1
  store double %3880, ptr %3881, align 8, !tbaa !14
  %3882 = call { double, double } @Cd(ptr noundef %60)
  %3883 = extractvalue { double, double } %3882, 0
  %3884 = extractvalue { double, double } %3882, 1
  %3885 = fneg double %3884
  %3886 = call ptr @_pCd(ptr noundef %31)
  %3887 = getelementptr inbounds { double, double }, ptr %3886, i32 0, i32 0
  %3888 = getelementptr inbounds { double, double }, ptr %3886, i32 0, i32 1
  store double %3883, ptr %3887, align 8
  store double %3885, ptr %3888, align 8
  %3889 = load ptr, ptr %13, align 8, !tbaa !5
  %3890 = getelementptr inbounds %struct.doublecomplex, ptr %3889, i32 0, i32 0
  %3891 = load double, ptr %3890, align 8, !tbaa !11
  %3892 = getelementptr inbounds %struct.doublecomplex, ptr %31, i32 0, i32 0
  %3893 = load double, ptr %3892, align 8, !tbaa !11
  %3894 = load ptr, ptr %13, align 8, !tbaa !5
  %3895 = getelementptr inbounds %struct.doublecomplex, ptr %3894, i32 0, i32 1
  %3896 = load double, ptr %3895, align 8, !tbaa !14
  %3897 = getelementptr inbounds %struct.doublecomplex, ptr %31, i32 0, i32 1
  %3898 = load double, ptr %3897, align 8, !tbaa !14
  %3899 = fmul double %3896, %3898
  %3900 = fneg double %3899
  %3901 = call double @llvm.fmuladd.f64(double %3891, double %3893, double %3900)
  %3902 = getelementptr inbounds %struct.doublecomplex, ptr %30, i32 0, i32 0
  store double %3901, ptr %3902, align 8, !tbaa !11
  %3903 = load ptr, ptr %13, align 8, !tbaa !5
  %3904 = getelementptr inbounds %struct.doublecomplex, ptr %3903, i32 0, i32 0
  %3905 = load double, ptr %3904, align 8, !tbaa !11
  %3906 = getelementptr inbounds %struct.doublecomplex, ptr %31, i32 0, i32 1
  %3907 = load double, ptr %3906, align 8, !tbaa !14
  %3908 = load ptr, ptr %13, align 8, !tbaa !5
  %3909 = getelementptr inbounds %struct.doublecomplex, ptr %3908, i32 0, i32 1
  %3910 = load double, ptr %3909, align 8, !tbaa !14
  %3911 = getelementptr inbounds %struct.doublecomplex, ptr %31, i32 0, i32 0
  %3912 = load double, ptr %3911, align 8, !tbaa !11
  %3913 = fmul double %3910, %3912
  %3914 = call double @llvm.fmuladd.f64(double %3905, double %3907, double %3913)
  %3915 = getelementptr inbounds %struct.doublecomplex, ptr %30, i32 0, i32 1
  store double %3914, ptr %3915, align 8, !tbaa !14
  %3916 = getelementptr inbounds %struct.doublecomplex, ptr %30, i32 0, i32 0
  %3917 = load double, ptr %3916, align 8, !tbaa !11
  %3918 = getelementptr inbounds %struct.doublecomplex, ptr %51, i32 0, i32 0
  store double %3917, ptr %3918, align 8, !tbaa !11
  %3919 = getelementptr inbounds %struct.doublecomplex, ptr %30, i32 0, i32 1
  %3920 = load double, ptr %3919, align 8, !tbaa !14
  %3921 = getelementptr inbounds %struct.doublecomplex, ptr %51, i32 0, i32 1
  store double %3920, ptr %3921, align 8, !tbaa !14
  %3922 = load ptr, ptr %12, align 8, !tbaa !5
  %3923 = getelementptr inbounds %struct.doublecomplex, ptr %3922, i64 3
  %3924 = call { double, double } @Cd(ptr noundef %3923)
  %3925 = extractvalue { double, double } %3924, 0
  %3926 = extractvalue { double, double } %3924, 1
  %3927 = fneg double %3926
  %3928 = call ptr @_pCd(ptr noundef %30)
  %3929 = getelementptr inbounds { double, double }, ptr %3928, i32 0, i32 0
  %3930 = getelementptr inbounds { double, double }, ptr %3928, i32 0, i32 1
  store double %3925, ptr %3929, align 8
  store double %3927, ptr %3930, align 8
  %3931 = getelementptr inbounds %struct.doublecomplex, ptr %30, i32 0, i32 0
  %3932 = load double, ptr %3931, align 8, !tbaa !11
  %3933 = getelementptr inbounds %struct.doublecomplex, ptr %61, i32 0, i32 0
  store double %3932, ptr %3933, align 8, !tbaa !11
  %3934 = getelementptr inbounds %struct.doublecomplex, ptr %30, i32 0, i32 1
  %3935 = load double, ptr %3934, align 8, !tbaa !14
  %3936 = getelementptr inbounds %struct.doublecomplex, ptr %61, i32 0, i32 1
  store double %3935, ptr %3936, align 8, !tbaa !14
  %3937 = call { double, double } @Cd(ptr noundef %61)
  %3938 = extractvalue { double, double } %3937, 0
  %3939 = extractvalue { double, double } %3937, 1
  %3940 = fneg double %3939
  %3941 = call ptr @_pCd(ptr noundef %31)
  %3942 = getelementptr inbounds { double, double }, ptr %3941, i32 0, i32 0
  %3943 = getelementptr inbounds { double, double }, ptr %3941, i32 0, i32 1
  store double %3938, ptr %3942, align 8
  store double %3940, ptr %3943, align 8
  %3944 = load ptr, ptr %13, align 8, !tbaa !5
  %3945 = getelementptr inbounds %struct.doublecomplex, ptr %3944, i32 0, i32 0
  %3946 = load double, ptr %3945, align 8, !tbaa !11
  %3947 = getelementptr inbounds %struct.doublecomplex, ptr %31, i32 0, i32 0
  %3948 = load double, ptr %3947, align 8, !tbaa !11
  %3949 = load ptr, ptr %13, align 8, !tbaa !5
  %3950 = getelementptr inbounds %struct.doublecomplex, ptr %3949, i32 0, i32 1
  %3951 = load double, ptr %3950, align 8, !tbaa !14
  %3952 = getelementptr inbounds %struct.doublecomplex, ptr %31, i32 0, i32 1
  %3953 = load double, ptr %3952, align 8, !tbaa !14
  %3954 = fmul double %3951, %3953
  %3955 = fneg double %3954
  %3956 = call double @llvm.fmuladd.f64(double %3946, double %3948, double %3955)
  %3957 = getelementptr inbounds %struct.doublecomplex, ptr %30, i32 0, i32 0
  store double %3956, ptr %3957, align 8, !tbaa !11
  %3958 = load ptr, ptr %13, align 8, !tbaa !5
  %3959 = getelementptr inbounds %struct.doublecomplex, ptr %3958, i32 0, i32 0
  %3960 = load double, ptr %3959, align 8, !tbaa !11
  %3961 = getelementptr inbounds %struct.doublecomplex, ptr %31, i32 0, i32 1
  %3962 = load double, ptr %3961, align 8, !tbaa !14
  %3963 = load ptr, ptr %13, align 8, !tbaa !5
  %3964 = getelementptr inbounds %struct.doublecomplex, ptr %3963, i32 0, i32 1
  %3965 = load double, ptr %3964, align 8, !tbaa !14
  %3966 = getelementptr inbounds %struct.doublecomplex, ptr %31, i32 0, i32 0
  %3967 = load double, ptr %3966, align 8, !tbaa !11
  %3968 = fmul double %3965, %3967
  %3969 = call double @llvm.fmuladd.f64(double %3960, double %3962, double %3968)
  %3970 = getelementptr inbounds %struct.doublecomplex, ptr %30, i32 0, i32 1
  store double %3969, ptr %3970, align 8, !tbaa !14
  %3971 = getelementptr inbounds %struct.doublecomplex, ptr %30, i32 0, i32 0
  %3972 = load double, ptr %3971, align 8, !tbaa !11
  %3973 = getelementptr inbounds %struct.doublecomplex, ptr %52, i32 0, i32 0
  store double %3972, ptr %3973, align 8, !tbaa !11
  %3974 = getelementptr inbounds %struct.doublecomplex, ptr %30, i32 0, i32 1
  %3975 = load double, ptr %3974, align 8, !tbaa !14
  %3976 = getelementptr inbounds %struct.doublecomplex, ptr %52, i32 0, i32 1
  store double %3975, ptr %3976, align 8, !tbaa !14
  %3977 = load ptr, ptr %12, align 8, !tbaa !5
  %3978 = getelementptr inbounds %struct.doublecomplex, ptr %3977, i64 4
  %3979 = call { double, double } @Cd(ptr noundef %3978)
  %3980 = extractvalue { double, double } %3979, 0
  %3981 = extractvalue { double, double } %3979, 1
  %3982 = fneg double %3981
  %3983 = call ptr @_pCd(ptr noundef %30)
  %3984 = getelementptr inbounds { double, double }, ptr %3983, i32 0, i32 0
  %3985 = getelementptr inbounds { double, double }, ptr %3983, i32 0, i32 1
  store double %3980, ptr %3984, align 8
  store double %3982, ptr %3985, align 8
  %3986 = getelementptr inbounds %struct.doublecomplex, ptr %30, i32 0, i32 0
  %3987 = load double, ptr %3986, align 8, !tbaa !11
  %3988 = getelementptr inbounds %struct.doublecomplex, ptr %62, i32 0, i32 0
  store double %3987, ptr %3988, align 8, !tbaa !11
  %3989 = getelementptr inbounds %struct.doublecomplex, ptr %30, i32 0, i32 1
  %3990 = load double, ptr %3989, align 8, !tbaa !14
  %3991 = getelementptr inbounds %struct.doublecomplex, ptr %62, i32 0, i32 1
  store double %3990, ptr %3991, align 8, !tbaa !14
  %3992 = call { double, double } @Cd(ptr noundef %62)
  %3993 = extractvalue { double, double } %3992, 0
  %3994 = extractvalue { double, double } %3992, 1
  %3995 = fneg double %3994
  %3996 = call ptr @_pCd(ptr noundef %31)
  %3997 = getelementptr inbounds { double, double }, ptr %3996, i32 0, i32 0
  %3998 = getelementptr inbounds { double, double }, ptr %3996, i32 0, i32 1
  store double %3993, ptr %3997, align 8
  store double %3995, ptr %3998, align 8
  %3999 = load ptr, ptr %13, align 8, !tbaa !5
  %4000 = getelementptr inbounds %struct.doublecomplex, ptr %3999, i32 0, i32 0
  %4001 = load double, ptr %4000, align 8, !tbaa !11
  %4002 = getelementptr inbounds %struct.doublecomplex, ptr %31, i32 0, i32 0
  %4003 = load double, ptr %4002, align 8, !tbaa !11
  %4004 = load ptr, ptr %13, align 8, !tbaa !5
  %4005 = getelementptr inbounds %struct.doublecomplex, ptr %4004, i32 0, i32 1
  %4006 = load double, ptr %4005, align 8, !tbaa !14
  %4007 = getelementptr inbounds %struct.doublecomplex, ptr %31, i32 0, i32 1
  %4008 = load double, ptr %4007, align 8, !tbaa !14
  %4009 = fmul double %4006, %4008
  %4010 = fneg double %4009
  %4011 = call double @llvm.fmuladd.f64(double %4001, double %4003, double %4010)
  %4012 = getelementptr inbounds %struct.doublecomplex, ptr %30, i32 0, i32 0
  store double %4011, ptr %4012, align 8, !tbaa !11
  %4013 = load ptr, ptr %13, align 8, !tbaa !5
  %4014 = getelementptr inbounds %struct.doublecomplex, ptr %4013, i32 0, i32 0
  %4015 = load double, ptr %4014, align 8, !tbaa !11
  %4016 = getelementptr inbounds %struct.doublecomplex, ptr %31, i32 0, i32 1
  %4017 = load double, ptr %4016, align 8, !tbaa !14
  %4018 = load ptr, ptr %13, align 8, !tbaa !5
  %4019 = getelementptr inbounds %struct.doublecomplex, ptr %4018, i32 0, i32 1
  %4020 = load double, ptr %4019, align 8, !tbaa !14
  %4021 = getelementptr inbounds %struct.doublecomplex, ptr %31, i32 0, i32 0
  %4022 = load double, ptr %4021, align 8, !tbaa !11
  %4023 = fmul double %4020, %4022
  %4024 = call double @llvm.fmuladd.f64(double %4015, double %4017, double %4023)
  %4025 = getelementptr inbounds %struct.doublecomplex, ptr %30, i32 0, i32 1
  store double %4024, ptr %4025, align 8, !tbaa !14
  %4026 = getelementptr inbounds %struct.doublecomplex, ptr %30, i32 0, i32 0
  %4027 = load double, ptr %4026, align 8, !tbaa !11
  %4028 = getelementptr inbounds %struct.doublecomplex, ptr %53, i32 0, i32 0
  store double %4027, ptr %4028, align 8, !tbaa !11
  %4029 = getelementptr inbounds %struct.doublecomplex, ptr %30, i32 0, i32 1
  %4030 = load double, ptr %4029, align 8, !tbaa !14
  %4031 = getelementptr inbounds %struct.doublecomplex, ptr %53, i32 0, i32 1
  store double %4030, ptr %4031, align 8, !tbaa !14
  %4032 = load ptr, ptr %12, align 8, !tbaa !5
  %4033 = getelementptr inbounds %struct.doublecomplex, ptr %4032, i64 5
  %4034 = call { double, double } @Cd(ptr noundef %4033)
  %4035 = extractvalue { double, double } %4034, 0
  %4036 = extractvalue { double, double } %4034, 1
  %4037 = fneg double %4036
  %4038 = call ptr @_pCd(ptr noundef %30)
  %4039 = getelementptr inbounds { double, double }, ptr %4038, i32 0, i32 0
  %4040 = getelementptr inbounds { double, double }, ptr %4038, i32 0, i32 1
  store double %4035, ptr %4039, align 8
  store double %4037, ptr %4040, align 8
  %4041 = getelementptr inbounds %struct.doublecomplex, ptr %30, i32 0, i32 0
  %4042 = load double, ptr %4041, align 8, !tbaa !11
  %4043 = getelementptr inbounds %struct.doublecomplex, ptr %63, i32 0, i32 0
  store double %4042, ptr %4043, align 8, !tbaa !11
  %4044 = getelementptr inbounds %struct.doublecomplex, ptr %30, i32 0, i32 1
  %4045 = load double, ptr %4044, align 8, !tbaa !14
  %4046 = getelementptr inbounds %struct.doublecomplex, ptr %63, i32 0, i32 1
  store double %4045, ptr %4046, align 8, !tbaa !14
  %4047 = call { double, double } @Cd(ptr noundef %63)
  %4048 = extractvalue { double, double } %4047, 0
  %4049 = extractvalue { double, double } %4047, 1
  %4050 = fneg double %4049
  %4051 = call ptr @_pCd(ptr noundef %31)
  %4052 = getelementptr inbounds { double, double }, ptr %4051, i32 0, i32 0
  %4053 = getelementptr inbounds { double, double }, ptr %4051, i32 0, i32 1
  store double %4048, ptr %4052, align 8
  store double %4050, ptr %4053, align 8
  %4054 = load ptr, ptr %13, align 8, !tbaa !5
  %4055 = getelementptr inbounds %struct.doublecomplex, ptr %4054, i32 0, i32 0
  %4056 = load double, ptr %4055, align 8, !tbaa !11
  %4057 = getelementptr inbounds %struct.doublecomplex, ptr %31, i32 0, i32 0
  %4058 = load double, ptr %4057, align 8, !tbaa !11
  %4059 = load ptr, ptr %13, align 8, !tbaa !5
  %4060 = getelementptr inbounds %struct.doublecomplex, ptr %4059, i32 0, i32 1
  %4061 = load double, ptr %4060, align 8, !tbaa !14
  %4062 = getelementptr inbounds %struct.doublecomplex, ptr %31, i32 0, i32 1
  %4063 = load double, ptr %4062, align 8, !tbaa !14
  %4064 = fmul double %4061, %4063
  %4065 = fneg double %4064
  %4066 = call double @llvm.fmuladd.f64(double %4056, double %4058, double %4065)
  %4067 = getelementptr inbounds %struct.doublecomplex, ptr %30, i32 0, i32 0
  store double %4066, ptr %4067, align 8, !tbaa !11
  %4068 = load ptr, ptr %13, align 8, !tbaa !5
  %4069 = getelementptr inbounds %struct.doublecomplex, ptr %4068, i32 0, i32 0
  %4070 = load double, ptr %4069, align 8, !tbaa !11
  %4071 = getelementptr inbounds %struct.doublecomplex, ptr %31, i32 0, i32 1
  %4072 = load double, ptr %4071, align 8, !tbaa !14
  %4073 = load ptr, ptr %13, align 8, !tbaa !5
  %4074 = getelementptr inbounds %struct.doublecomplex, ptr %4073, i32 0, i32 1
  %4075 = load double, ptr %4074, align 8, !tbaa !14
  %4076 = getelementptr inbounds %struct.doublecomplex, ptr %31, i32 0, i32 0
  %4077 = load double, ptr %4076, align 8, !tbaa !11
  %4078 = fmul double %4075, %4077
  %4079 = call double @llvm.fmuladd.f64(double %4070, double %4072, double %4078)
  %4080 = getelementptr inbounds %struct.doublecomplex, ptr %30, i32 0, i32 1
  store double %4079, ptr %4080, align 8, !tbaa !14
  %4081 = getelementptr inbounds %struct.doublecomplex, ptr %30, i32 0, i32 0
  %4082 = load double, ptr %4081, align 8, !tbaa !11
  %4083 = getelementptr inbounds %struct.doublecomplex, ptr %54, i32 0, i32 0
  store double %4082, ptr %4083, align 8, !tbaa !11
  %4084 = getelementptr inbounds %struct.doublecomplex, ptr %30, i32 0, i32 1
  %4085 = load double, ptr %4084, align 8, !tbaa !14
  %4086 = getelementptr inbounds %struct.doublecomplex, ptr %54, i32 0, i32 1
  store double %4085, ptr %4086, align 8, !tbaa !14
  %4087 = load ptr, ptr %12, align 8, !tbaa !5
  %4088 = getelementptr inbounds %struct.doublecomplex, ptr %4087, i64 6
  %4089 = call { double, double } @Cd(ptr noundef %4088)
  %4090 = extractvalue { double, double } %4089, 0
  %4091 = extractvalue { double, double } %4089, 1
  %4092 = fneg double %4091
  %4093 = call ptr @_pCd(ptr noundef %30)
  %4094 = getelementptr inbounds { double, double }, ptr %4093, i32 0, i32 0
  %4095 = getelementptr inbounds { double, double }, ptr %4093, i32 0, i32 1
  store double %4090, ptr %4094, align 8
  store double %4092, ptr %4095, align 8
  %4096 = getelementptr inbounds %struct.doublecomplex, ptr %30, i32 0, i32 0
  %4097 = load double, ptr %4096, align 8, !tbaa !11
  %4098 = getelementptr inbounds %struct.doublecomplex, ptr %64, i32 0, i32 0
  store double %4097, ptr %4098, align 8, !tbaa !11
  %4099 = getelementptr inbounds %struct.doublecomplex, ptr %30, i32 0, i32 1
  %4100 = load double, ptr %4099, align 8, !tbaa !14
  %4101 = getelementptr inbounds %struct.doublecomplex, ptr %64, i32 0, i32 1
  store double %4100, ptr %4101, align 8, !tbaa !14
  %4102 = call { double, double } @Cd(ptr noundef %64)
  %4103 = extractvalue { double, double } %4102, 0
  %4104 = extractvalue { double, double } %4102, 1
  %4105 = fneg double %4104
  %4106 = call ptr @_pCd(ptr noundef %31)
  %4107 = getelementptr inbounds { double, double }, ptr %4106, i32 0, i32 0
  %4108 = getelementptr inbounds { double, double }, ptr %4106, i32 0, i32 1
  store double %4103, ptr %4107, align 8
  store double %4105, ptr %4108, align 8
  %4109 = load ptr, ptr %13, align 8, !tbaa !5
  %4110 = getelementptr inbounds %struct.doublecomplex, ptr %4109, i32 0, i32 0
  %4111 = load double, ptr %4110, align 8, !tbaa !11
  %4112 = getelementptr inbounds %struct.doublecomplex, ptr %31, i32 0, i32 0
  %4113 = load double, ptr %4112, align 8, !tbaa !11
  %4114 = load ptr, ptr %13, align 8, !tbaa !5
  %4115 = getelementptr inbounds %struct.doublecomplex, ptr %4114, i32 0, i32 1
  %4116 = load double, ptr %4115, align 8, !tbaa !14
  %4117 = getelementptr inbounds %struct.doublecomplex, ptr %31, i32 0, i32 1
  %4118 = load double, ptr %4117, align 8, !tbaa !14
  %4119 = fmul double %4116, %4118
  %4120 = fneg double %4119
  %4121 = call double @llvm.fmuladd.f64(double %4111, double %4113, double %4120)
  %4122 = getelementptr inbounds %struct.doublecomplex, ptr %30, i32 0, i32 0
  store double %4121, ptr %4122, align 8, !tbaa !11
  %4123 = load ptr, ptr %13, align 8, !tbaa !5
  %4124 = getelementptr inbounds %struct.doublecomplex, ptr %4123, i32 0, i32 0
  %4125 = load double, ptr %4124, align 8, !tbaa !11
  %4126 = getelementptr inbounds %struct.doublecomplex, ptr %31, i32 0, i32 1
  %4127 = load double, ptr %4126, align 8, !tbaa !14
  %4128 = load ptr, ptr %13, align 8, !tbaa !5
  %4129 = getelementptr inbounds %struct.doublecomplex, ptr %4128, i32 0, i32 1
  %4130 = load double, ptr %4129, align 8, !tbaa !14
  %4131 = getelementptr inbounds %struct.doublecomplex, ptr %31, i32 0, i32 0
  %4132 = load double, ptr %4131, align 8, !tbaa !11
  %4133 = fmul double %4130, %4132
  %4134 = call double @llvm.fmuladd.f64(double %4125, double %4127, double %4133)
  %4135 = getelementptr inbounds %struct.doublecomplex, ptr %30, i32 0, i32 1
  store double %4134, ptr %4135, align 8, !tbaa !14
  %4136 = getelementptr inbounds %struct.doublecomplex, ptr %30, i32 0, i32 0
  %4137 = load double, ptr %4136, align 8, !tbaa !11
  %4138 = getelementptr inbounds %struct.doublecomplex, ptr %55, i32 0, i32 0
  store double %4137, ptr %4138, align 8, !tbaa !11
  %4139 = getelementptr inbounds %struct.doublecomplex, ptr %30, i32 0, i32 1
  %4140 = load double, ptr %4139, align 8, !tbaa !14
  %4141 = getelementptr inbounds %struct.doublecomplex, ptr %55, i32 0, i32 1
  store double %4140, ptr %4141, align 8, !tbaa !14
  %4142 = load ptr, ptr %12, align 8, !tbaa !5
  %4143 = getelementptr inbounds %struct.doublecomplex, ptr %4142, i64 7
  %4144 = call { double, double } @Cd(ptr noundef %4143)
  %4145 = extractvalue { double, double } %4144, 0
  %4146 = extractvalue { double, double } %4144, 1
  %4147 = fneg double %4146
  %4148 = call ptr @_pCd(ptr noundef %30)
  %4149 = getelementptr inbounds { double, double }, ptr %4148, i32 0, i32 0
  %4150 = getelementptr inbounds { double, double }, ptr %4148, i32 0, i32 1
  store double %4145, ptr %4149, align 8
  store double %4147, ptr %4150, align 8
  %4151 = getelementptr inbounds %struct.doublecomplex, ptr %30, i32 0, i32 0
  %4152 = load double, ptr %4151, align 8, !tbaa !11
  %4153 = getelementptr inbounds %struct.doublecomplex, ptr %65, i32 0, i32 0
  store double %4152, ptr %4153, align 8, !tbaa !11
  %4154 = getelementptr inbounds %struct.doublecomplex, ptr %30, i32 0, i32 1
  %4155 = load double, ptr %4154, align 8, !tbaa !14
  %4156 = getelementptr inbounds %struct.doublecomplex, ptr %65, i32 0, i32 1
  store double %4155, ptr %4156, align 8, !tbaa !14
  %4157 = call { double, double } @Cd(ptr noundef %65)
  %4158 = extractvalue { double, double } %4157, 0
  %4159 = extractvalue { double, double } %4157, 1
  %4160 = fneg double %4159
  %4161 = call ptr @_pCd(ptr noundef %31)
  %4162 = getelementptr inbounds { double, double }, ptr %4161, i32 0, i32 0
  %4163 = getelementptr inbounds { double, double }, ptr %4161, i32 0, i32 1
  store double %4158, ptr %4162, align 8
  store double %4160, ptr %4163, align 8
  %4164 = load ptr, ptr %13, align 8, !tbaa !5
  %4165 = getelementptr inbounds %struct.doublecomplex, ptr %4164, i32 0, i32 0
  %4166 = load double, ptr %4165, align 8, !tbaa !11
  %4167 = getelementptr inbounds %struct.doublecomplex, ptr %31, i32 0, i32 0
  %4168 = load double, ptr %4167, align 8, !tbaa !11
  %4169 = load ptr, ptr %13, align 8, !tbaa !5
  %4170 = getelementptr inbounds %struct.doublecomplex, ptr %4169, i32 0, i32 1
  %4171 = load double, ptr %4170, align 8, !tbaa !14
  %4172 = getelementptr inbounds %struct.doublecomplex, ptr %31, i32 0, i32 1
  %4173 = load double, ptr %4172, align 8, !tbaa !14
  %4174 = fmul double %4171, %4173
  %4175 = fneg double %4174
  %4176 = call double @llvm.fmuladd.f64(double %4166, double %4168, double %4175)
  %4177 = getelementptr inbounds %struct.doublecomplex, ptr %30, i32 0, i32 0
  store double %4176, ptr %4177, align 8, !tbaa !11
  %4178 = load ptr, ptr %13, align 8, !tbaa !5
  %4179 = getelementptr inbounds %struct.doublecomplex, ptr %4178, i32 0, i32 0
  %4180 = load double, ptr %4179, align 8, !tbaa !11
  %4181 = getelementptr inbounds %struct.doublecomplex, ptr %31, i32 0, i32 1
  %4182 = load double, ptr %4181, align 8, !tbaa !14
  %4183 = load ptr, ptr %13, align 8, !tbaa !5
  %4184 = getelementptr inbounds %struct.doublecomplex, ptr %4183, i32 0, i32 1
  %4185 = load double, ptr %4184, align 8, !tbaa !14
  %4186 = getelementptr inbounds %struct.doublecomplex, ptr %31, i32 0, i32 0
  %4187 = load double, ptr %4186, align 8, !tbaa !11
  %4188 = fmul double %4185, %4187
  %4189 = call double @llvm.fmuladd.f64(double %4180, double %4182, double %4188)
  %4190 = getelementptr inbounds %struct.doublecomplex, ptr %30, i32 0, i32 1
  store double %4189, ptr %4190, align 8, !tbaa !14
  %4191 = getelementptr inbounds %struct.doublecomplex, ptr %30, i32 0, i32 0
  %4192 = load double, ptr %4191, align 8, !tbaa !11
  %4193 = getelementptr inbounds %struct.doublecomplex, ptr %56, i32 0, i32 0
  store double %4192, ptr %4193, align 8, !tbaa !11
  %4194 = getelementptr inbounds %struct.doublecomplex, ptr %30, i32 0, i32 1
  %4195 = load double, ptr %4194, align 8, !tbaa !14
  %4196 = getelementptr inbounds %struct.doublecomplex, ptr %56, i32 0, i32 1
  store double %4195, ptr %4196, align 8, !tbaa !14
  %4197 = load ptr, ptr %11, align 8, !tbaa !5
  %4198 = load i32, ptr %4197, align 4, !tbaa !9
  store i32 %4198, ptr %19, align 4, !tbaa !9
  store i32 1, ptr %49, align 4, !tbaa !9
  br label %4199

4199:                                             ; preds = %5038, %3811
  %4200 = load i32, ptr %49, align 4, !tbaa !9
  %4201 = load i32, ptr %19, align 4, !tbaa !9
  %4202 = icmp sle i32 %4200, %4201
  br i1 %4202, label %4203, label %5041

4203:                                             ; preds = %4199
  %4204 = load i32, ptr %49, align 4, !tbaa !9
  %4205 = load i32, ptr %17, align 4, !tbaa !9
  %4206 = mul nsw i32 %4204, %4205
  %4207 = add nsw i32 %4206, 1
  store i32 %4207, ptr %20, align 4, !tbaa !9
  %4208 = getelementptr inbounds %struct.doublecomplex, ptr %59, i32 0, i32 0
  %4209 = load double, ptr %4208, align 8, !tbaa !11
  %4210 = load ptr, ptr %14, align 8, !tbaa !5
  %4211 = load i32, ptr %20, align 4, !tbaa !9
  %4212 = sext i32 %4211 to i64
  %4213 = getelementptr inbounds %struct.doublecomplex, ptr %4210, i64 %4212
  %4214 = getelementptr inbounds %struct.doublecomplex, ptr %4213, i32 0, i32 0
  %4215 = load double, ptr %4214, align 8, !tbaa !11
  %4216 = getelementptr inbounds %struct.doublecomplex, ptr %59, i32 0, i32 1
  %4217 = load double, ptr %4216, align 8, !tbaa !14
  %4218 = load ptr, ptr %14, align 8, !tbaa !5
  %4219 = load i32, ptr %20, align 4, !tbaa !9
  %4220 = sext i32 %4219 to i64
  %4221 = getelementptr inbounds %struct.doublecomplex, ptr %4218, i64 %4220
  %4222 = getelementptr inbounds %struct.doublecomplex, ptr %4221, i32 0, i32 1
  %4223 = load double, ptr %4222, align 8, !tbaa !14
  %4224 = fmul double %4217, %4223
  %4225 = fneg double %4224
  %4226 = call double @llvm.fmuladd.f64(double %4209, double %4215, double %4225)
  %4227 = getelementptr inbounds %struct.doublecomplex, ptr %36, i32 0, i32 0
  store double %4226, ptr %4227, align 8, !tbaa !11
  %4228 = getelementptr inbounds %struct.doublecomplex, ptr %59, i32 0, i32 0
  %4229 = load double, ptr %4228, align 8, !tbaa !11
  %4230 = load ptr, ptr %14, align 8, !tbaa !5
  %4231 = load i32, ptr %20, align 4, !tbaa !9
  %4232 = sext i32 %4231 to i64
  %4233 = getelementptr inbounds %struct.doublecomplex, ptr %4230, i64 %4232
  %4234 = getelementptr inbounds %struct.doublecomplex, ptr %4233, i32 0, i32 1
  %4235 = load double, ptr %4234, align 8, !tbaa !14
  %4236 = getelementptr inbounds %struct.doublecomplex, ptr %59, i32 0, i32 1
  %4237 = load double, ptr %4236, align 8, !tbaa !14
  %4238 = load ptr, ptr %14, align 8, !tbaa !5
  %4239 = load i32, ptr %20, align 4, !tbaa !9
  %4240 = sext i32 %4239 to i64
  %4241 = getelementptr inbounds %struct.doublecomplex, ptr %4238, i64 %4240
  %4242 = getelementptr inbounds %struct.doublecomplex, ptr %4241, i32 0, i32 0
  %4243 = load double, ptr %4242, align 8, !tbaa !11
  %4244 = fmul double %4237, %4243
  %4245 = call double @llvm.fmuladd.f64(double %4229, double %4235, double %4244)
  %4246 = getelementptr inbounds %struct.doublecomplex, ptr %36, i32 0, i32 1
  store double %4245, ptr %4246, align 8, !tbaa !14
  %4247 = load i32, ptr %49, align 4, !tbaa !9
  %4248 = load i32, ptr %17, align 4, !tbaa !9
  %4249 = mul nsw i32 %4247, %4248
  %4250 = add nsw i32 %4249, 2
  store i32 %4250, ptr %21, align 4, !tbaa !9
  %4251 = getelementptr inbounds %struct.doublecomplex, ptr %60, i32 0, i32 0
  %4252 = load double, ptr %4251, align 8, !tbaa !11
  %4253 = load ptr, ptr %14, align 8, !tbaa !5
  %4254 = load i32, ptr %21, align 4, !tbaa !9
  %4255 = sext i32 %4254 to i64
  %4256 = getelementptr inbounds %struct.doublecomplex, ptr %4253, i64 %4255
  %4257 = getelementptr inbounds %struct.doublecomplex, ptr %4256, i32 0, i32 0
  %4258 = load double, ptr %4257, align 8, !tbaa !11
  %4259 = getelementptr inbounds %struct.doublecomplex, ptr %60, i32 0, i32 1
  %4260 = load double, ptr %4259, align 8, !tbaa !14
  %4261 = load ptr, ptr %14, align 8, !tbaa !5
  %4262 = load i32, ptr %21, align 4, !tbaa !9
  %4263 = sext i32 %4262 to i64
  %4264 = getelementptr inbounds %struct.doublecomplex, ptr %4261, i64 %4263
  %4265 = getelementptr inbounds %struct.doublecomplex, ptr %4264, i32 0, i32 1
  %4266 = load double, ptr %4265, align 8, !tbaa !14
  %4267 = fmul double %4260, %4266
  %4268 = fneg double %4267
  %4269 = call double @llvm.fmuladd.f64(double %4252, double %4258, double %4268)
  %4270 = getelementptr inbounds %struct.doublecomplex, ptr %37, i32 0, i32 0
  store double %4269, ptr %4270, align 8, !tbaa !11
  %4271 = getelementptr inbounds %struct.doublecomplex, ptr %60, i32 0, i32 0
  %4272 = load double, ptr %4271, align 8, !tbaa !11
  %4273 = load ptr, ptr %14, align 8, !tbaa !5
  %4274 = load i32, ptr %21, align 4, !tbaa !9
  %4275 = sext i32 %4274 to i64
  %4276 = getelementptr inbounds %struct.doublecomplex, ptr %4273, i64 %4275
  %4277 = getelementptr inbounds %struct.doublecomplex, ptr %4276, i32 0, i32 1
  %4278 = load double, ptr %4277, align 8, !tbaa !14
  %4279 = getelementptr inbounds %struct.doublecomplex, ptr %60, i32 0, i32 1
  %4280 = load double, ptr %4279, align 8, !tbaa !14
  %4281 = load ptr, ptr %14, align 8, !tbaa !5
  %4282 = load i32, ptr %21, align 4, !tbaa !9
  %4283 = sext i32 %4282 to i64
  %4284 = getelementptr inbounds %struct.doublecomplex, ptr %4281, i64 %4283
  %4285 = getelementptr inbounds %struct.doublecomplex, ptr %4284, i32 0, i32 0
  %4286 = load double, ptr %4285, align 8, !tbaa !11
  %4287 = fmul double %4280, %4286
  %4288 = call double @llvm.fmuladd.f64(double %4272, double %4278, double %4287)
  %4289 = getelementptr inbounds %struct.doublecomplex, ptr %37, i32 0, i32 1
  store double %4288, ptr %4289, align 8, !tbaa !14
  %4290 = getelementptr inbounds %struct.doublecomplex, ptr %36, i32 0, i32 0
  %4291 = load double, ptr %4290, align 8, !tbaa !11
  %4292 = getelementptr inbounds %struct.doublecomplex, ptr %37, i32 0, i32 0
  %4293 = load double, ptr %4292, align 8, !tbaa !11
  %4294 = fadd double %4291, %4293
  %4295 = getelementptr inbounds %struct.doublecomplex, ptr %35, i32 0, i32 0
  store double %4294, ptr %4295, align 8, !tbaa !11
  %4296 = getelementptr inbounds %struct.doublecomplex, ptr %36, i32 0, i32 1
  %4297 = load double, ptr %4296, align 8, !tbaa !14
  %4298 = getelementptr inbounds %struct.doublecomplex, ptr %37, i32 0, i32 1
  %4299 = load double, ptr %4298, align 8, !tbaa !14
  %4300 = fadd double %4297, %4299
  %4301 = getelementptr inbounds %struct.doublecomplex, ptr %35, i32 0, i32 1
  store double %4300, ptr %4301, align 8, !tbaa !14
  %4302 = load i32, ptr %49, align 4, !tbaa !9
  %4303 = load i32, ptr %17, align 4, !tbaa !9
  %4304 = mul nsw i32 %4302, %4303
  %4305 = add nsw i32 %4304, 3
  store i32 %4305, ptr %22, align 4, !tbaa !9
  %4306 = getelementptr inbounds %struct.doublecomplex, ptr %61, i32 0, i32 0
  %4307 = load double, ptr %4306, align 8, !tbaa !11
  %4308 = load ptr, ptr %14, align 8, !tbaa !5
  %4309 = load i32, ptr %22, align 4, !tbaa !9
  %4310 = sext i32 %4309 to i64
  %4311 = getelementptr inbounds %struct.doublecomplex, ptr %4308, i64 %4310
  %4312 = getelementptr inbounds %struct.doublecomplex, ptr %4311, i32 0, i32 0
  %4313 = load double, ptr %4312, align 8, !tbaa !11
  %4314 = getelementptr inbounds %struct.doublecomplex, ptr %61, i32 0, i32 1
  %4315 = load double, ptr %4314, align 8, !tbaa !14
  %4316 = load ptr, ptr %14, align 8, !tbaa !5
  %4317 = load i32, ptr %22, align 4, !tbaa !9
  %4318 = sext i32 %4317 to i64
  %4319 = getelementptr inbounds %struct.doublecomplex, ptr %4316, i64 %4318
  %4320 = getelementptr inbounds %struct.doublecomplex, ptr %4319, i32 0, i32 1
  %4321 = load double, ptr %4320, align 8, !tbaa !14
  %4322 = fmul double %4315, %4321
  %4323 = fneg double %4322
  %4324 = call double @llvm.fmuladd.f64(double %4307, double %4313, double %4323)
  %4325 = getelementptr inbounds %struct.doublecomplex, ptr %38, i32 0, i32 0
  store double %4324, ptr %4325, align 8, !tbaa !11
  %4326 = getelementptr inbounds %struct.doublecomplex, ptr %61, i32 0, i32 0
  %4327 = load double, ptr %4326, align 8, !tbaa !11
  %4328 = load ptr, ptr %14, align 8, !tbaa !5
  %4329 = load i32, ptr %22, align 4, !tbaa !9
  %4330 = sext i32 %4329 to i64
  %4331 = getelementptr inbounds %struct.doublecomplex, ptr %4328, i64 %4330
  %4332 = getelementptr inbounds %struct.doublecomplex, ptr %4331, i32 0, i32 1
  %4333 = load double, ptr %4332, align 8, !tbaa !14
  %4334 = getelementptr inbounds %struct.doublecomplex, ptr %61, i32 0, i32 1
  %4335 = load double, ptr %4334, align 8, !tbaa !14
  %4336 = load ptr, ptr %14, align 8, !tbaa !5
  %4337 = load i32, ptr %22, align 4, !tbaa !9
  %4338 = sext i32 %4337 to i64
  %4339 = getelementptr inbounds %struct.doublecomplex, ptr %4336, i64 %4338
  %4340 = getelementptr inbounds %struct.doublecomplex, ptr %4339, i32 0, i32 0
  %4341 = load double, ptr %4340, align 8, !tbaa !11
  %4342 = fmul double %4335, %4341
  %4343 = call double @llvm.fmuladd.f64(double %4327, double %4333, double %4342)
  %4344 = getelementptr inbounds %struct.doublecomplex, ptr %38, i32 0, i32 1
  store double %4343, ptr %4344, align 8, !tbaa !14
  %4345 = getelementptr inbounds %struct.doublecomplex, ptr %35, i32 0, i32 0
  %4346 = load double, ptr %4345, align 8, !tbaa !11
  %4347 = getelementptr inbounds %struct.doublecomplex, ptr %38, i32 0, i32 0
  %4348 = load double, ptr %4347, align 8, !tbaa !11
  %4349 = fadd double %4346, %4348
  %4350 = getelementptr inbounds %struct.doublecomplex, ptr %34, i32 0, i32 0
  store double %4349, ptr %4350, align 8, !tbaa !11
  %4351 = getelementptr inbounds %struct.doublecomplex, ptr %35, i32 0, i32 1
  %4352 = load double, ptr %4351, align 8, !tbaa !14
  %4353 = getelementptr inbounds %struct.doublecomplex, ptr %38, i32 0, i32 1
  %4354 = load double, ptr %4353, align 8, !tbaa !14
  %4355 = fadd double %4352, %4354
  %4356 = getelementptr inbounds %struct.doublecomplex, ptr %34, i32 0, i32 1
  store double %4355, ptr %4356, align 8, !tbaa !14
  %4357 = load i32, ptr %49, align 4, !tbaa !9
  %4358 = load i32, ptr %17, align 4, !tbaa !9
  %4359 = mul nsw i32 %4357, %4358
  %4360 = add nsw i32 %4359, 4
  store i32 %4360, ptr %23, align 4, !tbaa !9
  %4361 = getelementptr inbounds %struct.doublecomplex, ptr %62, i32 0, i32 0
  %4362 = load double, ptr %4361, align 8, !tbaa !11
  %4363 = load ptr, ptr %14, align 8, !tbaa !5
  %4364 = load i32, ptr %23, align 4, !tbaa !9
  %4365 = sext i32 %4364 to i64
  %4366 = getelementptr inbounds %struct.doublecomplex, ptr %4363, i64 %4365
  %4367 = getelementptr inbounds %struct.doublecomplex, ptr %4366, i32 0, i32 0
  %4368 = load double, ptr %4367, align 8, !tbaa !11
  %4369 = getelementptr inbounds %struct.doublecomplex, ptr %62, i32 0, i32 1
  %4370 = load double, ptr %4369, align 8, !tbaa !14
  %4371 = load ptr, ptr %14, align 8, !tbaa !5
  %4372 = load i32, ptr %23, align 4, !tbaa !9
  %4373 = sext i32 %4372 to i64
  %4374 = getelementptr inbounds %struct.doublecomplex, ptr %4371, i64 %4373
  %4375 = getelementptr inbounds %struct.doublecomplex, ptr %4374, i32 0, i32 1
  %4376 = load double, ptr %4375, align 8, !tbaa !14
  %4377 = fmul double %4370, %4376
  %4378 = fneg double %4377
  %4379 = call double @llvm.fmuladd.f64(double %4362, double %4368, double %4378)
  %4380 = getelementptr inbounds %struct.doublecomplex, ptr %39, i32 0, i32 0
  store double %4379, ptr %4380, align 8, !tbaa !11
  %4381 = getelementptr inbounds %struct.doublecomplex, ptr %62, i32 0, i32 0
  %4382 = load double, ptr %4381, align 8, !tbaa !11
  %4383 = load ptr, ptr %14, align 8, !tbaa !5
  %4384 = load i32, ptr %23, align 4, !tbaa !9
  %4385 = sext i32 %4384 to i64
  %4386 = getelementptr inbounds %struct.doublecomplex, ptr %4383, i64 %4385
  %4387 = getelementptr inbounds %struct.doublecomplex, ptr %4386, i32 0, i32 1
  %4388 = load double, ptr %4387, align 8, !tbaa !14
  %4389 = getelementptr inbounds %struct.doublecomplex, ptr %62, i32 0, i32 1
  %4390 = load double, ptr %4389, align 8, !tbaa !14
  %4391 = load ptr, ptr %14, align 8, !tbaa !5
  %4392 = load i32, ptr %23, align 4, !tbaa !9
  %4393 = sext i32 %4392 to i64
  %4394 = getelementptr inbounds %struct.doublecomplex, ptr %4391, i64 %4393
  %4395 = getelementptr inbounds %struct.doublecomplex, ptr %4394, i32 0, i32 0
  %4396 = load double, ptr %4395, align 8, !tbaa !11
  %4397 = fmul double %4390, %4396
  %4398 = call double @llvm.fmuladd.f64(double %4382, double %4388, double %4397)
  %4399 = getelementptr inbounds %struct.doublecomplex, ptr %39, i32 0, i32 1
  store double %4398, ptr %4399, align 8, !tbaa !14
  %4400 = getelementptr inbounds %struct.doublecomplex, ptr %34, i32 0, i32 0
  %4401 = load double, ptr %4400, align 8, !tbaa !11
  %4402 = getelementptr inbounds %struct.doublecomplex, ptr %39, i32 0, i32 0
  %4403 = load double, ptr %4402, align 8, !tbaa !11
  %4404 = fadd double %4401, %4403
  %4405 = getelementptr inbounds %struct.doublecomplex, ptr %33, i32 0, i32 0
  store double %4404, ptr %4405, align 8, !tbaa !11
  %4406 = getelementptr inbounds %struct.doublecomplex, ptr %34, i32 0, i32 1
  %4407 = load double, ptr %4406, align 8, !tbaa !14
  %4408 = getelementptr inbounds %struct.doublecomplex, ptr %39, i32 0, i32 1
  %4409 = load double, ptr %4408, align 8, !tbaa !14
  %4410 = fadd double %4407, %4409
  %4411 = getelementptr inbounds %struct.doublecomplex, ptr %33, i32 0, i32 1
  store double %4410, ptr %4411, align 8, !tbaa !14
  %4412 = load i32, ptr %49, align 4, !tbaa !9
  %4413 = load i32, ptr %17, align 4, !tbaa !9
  %4414 = mul nsw i32 %4412, %4413
  %4415 = add nsw i32 %4414, 5
  store i32 %4415, ptr %24, align 4, !tbaa !9
  %4416 = getelementptr inbounds %struct.doublecomplex, ptr %63, i32 0, i32 0
  %4417 = load double, ptr %4416, align 8, !tbaa !11
  %4418 = load ptr, ptr %14, align 8, !tbaa !5
  %4419 = load i32, ptr %24, align 4, !tbaa !9
  %4420 = sext i32 %4419 to i64
  %4421 = getelementptr inbounds %struct.doublecomplex, ptr %4418, i64 %4420
  %4422 = getelementptr inbounds %struct.doublecomplex, ptr %4421, i32 0, i32 0
  %4423 = load double, ptr %4422, align 8, !tbaa !11
  %4424 = getelementptr inbounds %struct.doublecomplex, ptr %63, i32 0, i32 1
  %4425 = load double, ptr %4424, align 8, !tbaa !14
  %4426 = load ptr, ptr %14, align 8, !tbaa !5
  %4427 = load i32, ptr %24, align 4, !tbaa !9
  %4428 = sext i32 %4427 to i64
  %4429 = getelementptr inbounds %struct.doublecomplex, ptr %4426, i64 %4428
  %4430 = getelementptr inbounds %struct.doublecomplex, ptr %4429, i32 0, i32 1
  %4431 = load double, ptr %4430, align 8, !tbaa !14
  %4432 = fmul double %4425, %4431
  %4433 = fneg double %4432
  %4434 = call double @llvm.fmuladd.f64(double %4417, double %4423, double %4433)
  %4435 = getelementptr inbounds %struct.doublecomplex, ptr %40, i32 0, i32 0
  store double %4434, ptr %4435, align 8, !tbaa !11
  %4436 = getelementptr inbounds %struct.doublecomplex, ptr %63, i32 0, i32 0
  %4437 = load double, ptr %4436, align 8, !tbaa !11
  %4438 = load ptr, ptr %14, align 8, !tbaa !5
  %4439 = load i32, ptr %24, align 4, !tbaa !9
  %4440 = sext i32 %4439 to i64
  %4441 = getelementptr inbounds %struct.doublecomplex, ptr %4438, i64 %4440
  %4442 = getelementptr inbounds %struct.doublecomplex, ptr %4441, i32 0, i32 1
  %4443 = load double, ptr %4442, align 8, !tbaa !14
  %4444 = getelementptr inbounds %struct.doublecomplex, ptr %63, i32 0, i32 1
  %4445 = load double, ptr %4444, align 8, !tbaa !14
  %4446 = load ptr, ptr %14, align 8, !tbaa !5
  %4447 = load i32, ptr %24, align 4, !tbaa !9
  %4448 = sext i32 %4447 to i64
  %4449 = getelementptr inbounds %struct.doublecomplex, ptr %4446, i64 %4448
  %4450 = getelementptr inbounds %struct.doublecomplex, ptr %4449, i32 0, i32 0
  %4451 = load double, ptr %4450, align 8, !tbaa !11
  %4452 = fmul double %4445, %4451
  %4453 = call double @llvm.fmuladd.f64(double %4437, double %4443, double %4452)
  %4454 = getelementptr inbounds %struct.doublecomplex, ptr %40, i32 0, i32 1
  store double %4453, ptr %4454, align 8, !tbaa !14
  %4455 = getelementptr inbounds %struct.doublecomplex, ptr %33, i32 0, i32 0
  %4456 = load double, ptr %4455, align 8, !tbaa !11
  %4457 = getelementptr inbounds %struct.doublecomplex, ptr %40, i32 0, i32 0
  %4458 = load double, ptr %4457, align 8, !tbaa !11
  %4459 = fadd double %4456, %4458
  %4460 = getelementptr inbounds %struct.doublecomplex, ptr %32, i32 0, i32 0
  store double %4459, ptr %4460, align 8, !tbaa !11
  %4461 = getelementptr inbounds %struct.doublecomplex, ptr %33, i32 0, i32 1
  %4462 = load double, ptr %4461, align 8, !tbaa !14
  %4463 = getelementptr inbounds %struct.doublecomplex, ptr %40, i32 0, i32 1
  %4464 = load double, ptr %4463, align 8, !tbaa !14
  %4465 = fadd double %4462, %4464
  %4466 = getelementptr inbounds %struct.doublecomplex, ptr %32, i32 0, i32 1
  store double %4465, ptr %4466, align 8, !tbaa !14
  %4467 = load i32, ptr %49, align 4, !tbaa !9
  %4468 = load i32, ptr %17, align 4, !tbaa !9
  %4469 = mul nsw i32 %4467, %4468
  %4470 = add nsw i32 %4469, 6
  store i32 %4470, ptr %25, align 4, !tbaa !9
  %4471 = getelementptr inbounds %struct.doublecomplex, ptr %64, i32 0, i32 0
  %4472 = load double, ptr %4471, align 8, !tbaa !11
  %4473 = load ptr, ptr %14, align 8, !tbaa !5
  %4474 = load i32, ptr %25, align 4, !tbaa !9
  %4475 = sext i32 %4474 to i64
  %4476 = getelementptr inbounds %struct.doublecomplex, ptr %4473, i64 %4475
  %4477 = getelementptr inbounds %struct.doublecomplex, ptr %4476, i32 0, i32 0
  %4478 = load double, ptr %4477, align 8, !tbaa !11
  %4479 = getelementptr inbounds %struct.doublecomplex, ptr %64, i32 0, i32 1
  %4480 = load double, ptr %4479, align 8, !tbaa !14
  %4481 = load ptr, ptr %14, align 8, !tbaa !5
  %4482 = load i32, ptr %25, align 4, !tbaa !9
  %4483 = sext i32 %4482 to i64
  %4484 = getelementptr inbounds %struct.doublecomplex, ptr %4481, i64 %4483
  %4485 = getelementptr inbounds %struct.doublecomplex, ptr %4484, i32 0, i32 1
  %4486 = load double, ptr %4485, align 8, !tbaa !14
  %4487 = fmul double %4480, %4486
  %4488 = fneg double %4487
  %4489 = call double @llvm.fmuladd.f64(double %4472, double %4478, double %4488)
  %4490 = getelementptr inbounds %struct.doublecomplex, ptr %41, i32 0, i32 0
  store double %4489, ptr %4490, align 8, !tbaa !11
  %4491 = getelementptr inbounds %struct.doublecomplex, ptr %64, i32 0, i32 0
  %4492 = load double, ptr %4491, align 8, !tbaa !11
  %4493 = load ptr, ptr %14, align 8, !tbaa !5
  %4494 = load i32, ptr %25, align 4, !tbaa !9
  %4495 = sext i32 %4494 to i64
  %4496 = getelementptr inbounds %struct.doublecomplex, ptr %4493, i64 %4495
  %4497 = getelementptr inbounds %struct.doublecomplex, ptr %4496, i32 0, i32 1
  %4498 = load double, ptr %4497, align 8, !tbaa !14
  %4499 = getelementptr inbounds %struct.doublecomplex, ptr %64, i32 0, i32 1
  %4500 = load double, ptr %4499, align 8, !tbaa !14
  %4501 = load ptr, ptr %14, align 8, !tbaa !5
  %4502 = load i32, ptr %25, align 4, !tbaa !9
  %4503 = sext i32 %4502 to i64
  %4504 = getelementptr inbounds %struct.doublecomplex, ptr %4501, i64 %4503
  %4505 = getelementptr inbounds %struct.doublecomplex, ptr %4504, i32 0, i32 0
  %4506 = load double, ptr %4505, align 8, !tbaa !11
  %4507 = fmul double %4500, %4506
  %4508 = call double @llvm.fmuladd.f64(double %4492, double %4498, double %4507)
  %4509 = getelementptr inbounds %struct.doublecomplex, ptr %41, i32 0, i32 1
  store double %4508, ptr %4509, align 8, !tbaa !14
  %4510 = getelementptr inbounds %struct.doublecomplex, ptr %32, i32 0, i32 0
  %4511 = load double, ptr %4510, align 8, !tbaa !11
  %4512 = getelementptr inbounds %struct.doublecomplex, ptr %41, i32 0, i32 0
  %4513 = load double, ptr %4512, align 8, !tbaa !11
  %4514 = fadd double %4511, %4513
  %4515 = getelementptr inbounds %struct.doublecomplex, ptr %31, i32 0, i32 0
  store double %4514, ptr %4515, align 8, !tbaa !11
  %4516 = getelementptr inbounds %struct.doublecomplex, ptr %32, i32 0, i32 1
  %4517 = load double, ptr %4516, align 8, !tbaa !14
  %4518 = getelementptr inbounds %struct.doublecomplex, ptr %41, i32 0, i32 1
  %4519 = load double, ptr %4518, align 8, !tbaa !14
  %4520 = fadd double %4517, %4519
  %4521 = getelementptr inbounds %struct.doublecomplex, ptr %31, i32 0, i32 1
  store double %4520, ptr %4521, align 8, !tbaa !14
  %4522 = load i32, ptr %49, align 4, !tbaa !9
  %4523 = load i32, ptr %17, align 4, !tbaa !9
  %4524 = mul nsw i32 %4522, %4523
  %4525 = add nsw i32 %4524, 7
  store i32 %4525, ptr %26, align 4, !tbaa !9
  %4526 = getelementptr inbounds %struct.doublecomplex, ptr %65, i32 0, i32 0
  %4527 = load double, ptr %4526, align 8, !tbaa !11
  %4528 = load ptr, ptr %14, align 8, !tbaa !5
  %4529 = load i32, ptr %26, align 4, !tbaa !9
  %4530 = sext i32 %4529 to i64
  %4531 = getelementptr inbounds %struct.doublecomplex, ptr %4528, i64 %4530
  %4532 = getelementptr inbounds %struct.doublecomplex, ptr %4531, i32 0, i32 0
  %4533 = load double, ptr %4532, align 8, !tbaa !11
  %4534 = getelementptr inbounds %struct.doublecomplex, ptr %65, i32 0, i32 1
  %4535 = load double, ptr %4534, align 8, !tbaa !14
  %4536 = load ptr, ptr %14, align 8, !tbaa !5
  %4537 = load i32, ptr %26, align 4, !tbaa !9
  %4538 = sext i32 %4537 to i64
  %4539 = getelementptr inbounds %struct.doublecomplex, ptr %4536, i64 %4538
  %4540 = getelementptr inbounds %struct.doublecomplex, ptr %4539, i32 0, i32 1
  %4541 = load double, ptr %4540, align 8, !tbaa !14
  %4542 = fmul double %4535, %4541
  %4543 = fneg double %4542
  %4544 = call double @llvm.fmuladd.f64(double %4527, double %4533, double %4543)
  %4545 = getelementptr inbounds %struct.doublecomplex, ptr %42, i32 0, i32 0
  store double %4544, ptr %4545, align 8, !tbaa !11
  %4546 = getelementptr inbounds %struct.doublecomplex, ptr %65, i32 0, i32 0
  %4547 = load double, ptr %4546, align 8, !tbaa !11
  %4548 = load ptr, ptr %14, align 8, !tbaa !5
  %4549 = load i32, ptr %26, align 4, !tbaa !9
  %4550 = sext i32 %4549 to i64
  %4551 = getelementptr inbounds %struct.doublecomplex, ptr %4548, i64 %4550
  %4552 = getelementptr inbounds %struct.doublecomplex, ptr %4551, i32 0, i32 1
  %4553 = load double, ptr %4552, align 8, !tbaa !14
  %4554 = getelementptr inbounds %struct.doublecomplex, ptr %65, i32 0, i32 1
  %4555 = load double, ptr %4554, align 8, !tbaa !14
  %4556 = load ptr, ptr %14, align 8, !tbaa !5
  %4557 = load i32, ptr %26, align 4, !tbaa !9
  %4558 = sext i32 %4557 to i64
  %4559 = getelementptr inbounds %struct.doublecomplex, ptr %4556, i64 %4558
  %4560 = getelementptr inbounds %struct.doublecomplex, ptr %4559, i32 0, i32 0
  %4561 = load double, ptr %4560, align 8, !tbaa !11
  %4562 = fmul double %4555, %4561
  %4563 = call double @llvm.fmuladd.f64(double %4547, double %4553, double %4562)
  %4564 = getelementptr inbounds %struct.doublecomplex, ptr %42, i32 0, i32 1
  store double %4563, ptr %4564, align 8, !tbaa !14
  %4565 = getelementptr inbounds %struct.doublecomplex, ptr %31, i32 0, i32 0
  %4566 = load double, ptr %4565, align 8, !tbaa !11
  %4567 = getelementptr inbounds %struct.doublecomplex, ptr %42, i32 0, i32 0
  %4568 = load double, ptr %4567, align 8, !tbaa !11
  %4569 = fadd double %4566, %4568
  %4570 = getelementptr inbounds %struct.doublecomplex, ptr %30, i32 0, i32 0
  store double %4569, ptr %4570, align 8, !tbaa !11
  %4571 = getelementptr inbounds %struct.doublecomplex, ptr %31, i32 0, i32 1
  %4572 = load double, ptr %4571, align 8, !tbaa !14
  %4573 = getelementptr inbounds %struct.doublecomplex, ptr %42, i32 0, i32 1
  %4574 = load double, ptr %4573, align 8, !tbaa !14
  %4575 = fadd double %4572, %4574
  %4576 = getelementptr inbounds %struct.doublecomplex, ptr %30, i32 0, i32 1
  store double %4575, ptr %4576, align 8, !tbaa !14
  %4577 = getelementptr inbounds %struct.doublecomplex, ptr %30, i32 0, i32 0
  %4578 = load double, ptr %4577, align 8, !tbaa !11
  %4579 = getelementptr inbounds %struct.doublecomplex, ptr %70, i32 0, i32 0
  store double %4578, ptr %4579, align 8, !tbaa !11
  %4580 = getelementptr inbounds %struct.doublecomplex, ptr %30, i32 0, i32 1
  %4581 = load double, ptr %4580, align 8, !tbaa !14
  %4582 = getelementptr inbounds %struct.doublecomplex, ptr %70, i32 0, i32 1
  store double %4581, ptr %4582, align 8, !tbaa !14
  %4583 = load i32, ptr %49, align 4, !tbaa !9
  %4584 = load i32, ptr %17, align 4, !tbaa !9
  %4585 = mul nsw i32 %4583, %4584
  %4586 = add nsw i32 %4585, 1
  store i32 %4586, ptr %20, align 4, !tbaa !9
  %4587 = load i32, ptr %49, align 4, !tbaa !9
  %4588 = load i32, ptr %17, align 4, !tbaa !9
  %4589 = mul nsw i32 %4587, %4588
  %4590 = add nsw i32 %4589, 1
  store i32 %4590, ptr %21, align 4, !tbaa !9
  %4591 = getelementptr inbounds %struct.doublecomplex, ptr %70, i32 0, i32 0
  %4592 = load double, ptr %4591, align 8, !tbaa !11
  %4593 = getelementptr inbounds %struct.doublecomplex, ptr %50, i32 0, i32 0
  %4594 = load double, ptr %4593, align 8, !tbaa !11
  %4595 = getelementptr inbounds %struct.doublecomplex, ptr %70, i32 0, i32 1
  %4596 = load double, ptr %4595, align 8, !tbaa !14
  %4597 = getelementptr inbounds %struct.doublecomplex, ptr %50, i32 0, i32 1
  %4598 = load double, ptr %4597, align 8, !tbaa !14
  %4599 = fmul double %4596, %4598
  %4600 = fneg double %4599
  %4601 = call double @llvm.fmuladd.f64(double %4592, double %4594, double %4600)
  %4602 = getelementptr inbounds %struct.doublecomplex, ptr %31, i32 0, i32 0
  store double %4601, ptr %4602, align 8, !tbaa !11
  %4603 = getelementptr inbounds %struct.doublecomplex, ptr %70, i32 0, i32 0
  %4604 = load double, ptr %4603, align 8, !tbaa !11
  %4605 = getelementptr inbounds %struct.doublecomplex, ptr %50, i32 0, i32 1
  %4606 = load double, ptr %4605, align 8, !tbaa !14
  %4607 = getelementptr inbounds %struct.doublecomplex, ptr %70, i32 0, i32 1
  %4608 = load double, ptr %4607, align 8, !tbaa !14
  %4609 = getelementptr inbounds %struct.doublecomplex, ptr %50, i32 0, i32 0
  %4610 = load double, ptr %4609, align 8, !tbaa !11
  %4611 = fmul double %4608, %4610
  %4612 = call double @llvm.fmuladd.f64(double %4604, double %4606, double %4611)
  %4613 = getelementptr inbounds %struct.doublecomplex, ptr %31, i32 0, i32 1
  store double %4612, ptr %4613, align 8, !tbaa !14
  %4614 = load ptr, ptr %14, align 8, !tbaa !5
  %4615 = load i32, ptr %21, align 4, !tbaa !9
  %4616 = sext i32 %4615 to i64
  %4617 = getelementptr inbounds %struct.doublecomplex, ptr %4614, i64 %4616
  %4618 = getelementptr inbounds %struct.doublecomplex, ptr %4617, i32 0, i32 0
  %4619 = load double, ptr %4618, align 8, !tbaa !11
  %4620 = getelementptr inbounds %struct.doublecomplex, ptr %31, i32 0, i32 0
  %4621 = load double, ptr %4620, align 8, !tbaa !11
  %4622 = fsub double %4619, %4621
  %4623 = getelementptr inbounds %struct.doublecomplex, ptr %30, i32 0, i32 0
  store double %4622, ptr %4623, align 8, !tbaa !11
  %4624 = load ptr, ptr %14, align 8, !tbaa !5
  %4625 = load i32, ptr %21, align 4, !tbaa !9
  %4626 = sext i32 %4625 to i64
  %4627 = getelementptr inbounds %struct.doublecomplex, ptr %4624, i64 %4626
  %4628 = getelementptr inbounds %struct.doublecomplex, ptr %4627, i32 0, i32 1
  %4629 = load double, ptr %4628, align 8, !tbaa !14
  %4630 = getelementptr inbounds %struct.doublecomplex, ptr %31, i32 0, i32 1
  %4631 = load double, ptr %4630, align 8, !tbaa !14
  %4632 = fsub double %4629, %4631
  %4633 = getelementptr inbounds %struct.doublecomplex, ptr %30, i32 0, i32 1
  store double %4632, ptr %4633, align 8, !tbaa !14
  %4634 = getelementptr inbounds %struct.doublecomplex, ptr %30, i32 0, i32 0
  %4635 = load double, ptr %4634, align 8, !tbaa !11
  %4636 = load ptr, ptr %14, align 8, !tbaa !5
  %4637 = load i32, ptr %20, align 4, !tbaa !9
  %4638 = sext i32 %4637 to i64
  %4639 = getelementptr inbounds %struct.doublecomplex, ptr %4636, i64 %4638
  %4640 = getelementptr inbounds %struct.doublecomplex, ptr %4639, i32 0, i32 0
  store double %4635, ptr %4640, align 8, !tbaa !11
  %4641 = getelementptr inbounds %struct.doublecomplex, ptr %30, i32 0, i32 1
  %4642 = load double, ptr %4641, align 8, !tbaa !14
  %4643 = load ptr, ptr %14, align 8, !tbaa !5
  %4644 = load i32, ptr %20, align 4, !tbaa !9
  %4645 = sext i32 %4644 to i64
  %4646 = getelementptr inbounds %struct.doublecomplex, ptr %4643, i64 %4645
  %4647 = getelementptr inbounds %struct.doublecomplex, ptr %4646, i32 0, i32 1
  store double %4642, ptr %4647, align 8, !tbaa !14
  %4648 = load i32, ptr %49, align 4, !tbaa !9
  %4649 = load i32, ptr %17, align 4, !tbaa !9
  %4650 = mul nsw i32 %4648, %4649
  %4651 = add nsw i32 %4650, 2
  store i32 %4651, ptr %20, align 4, !tbaa !9
  %4652 = load i32, ptr %49, align 4, !tbaa !9
  %4653 = load i32, ptr %17, align 4, !tbaa !9
  %4654 = mul nsw i32 %4652, %4653
  %4655 = add nsw i32 %4654, 2
  store i32 %4655, ptr %21, align 4, !tbaa !9
  %4656 = getelementptr inbounds %struct.doublecomplex, ptr %70, i32 0, i32 0
  %4657 = load double, ptr %4656, align 8, !tbaa !11
  %4658 = getelementptr inbounds %struct.doublecomplex, ptr %51, i32 0, i32 0
  %4659 = load double, ptr %4658, align 8, !tbaa !11
  %4660 = getelementptr inbounds %struct.doublecomplex, ptr %70, i32 0, i32 1
  %4661 = load double, ptr %4660, align 8, !tbaa !14
  %4662 = getelementptr inbounds %struct.doublecomplex, ptr %51, i32 0, i32 1
  %4663 = load double, ptr %4662, align 8, !tbaa !14
  %4664 = fmul double %4661, %4663
  %4665 = fneg double %4664
  %4666 = call double @llvm.fmuladd.f64(double %4657, double %4659, double %4665)
  %4667 = getelementptr inbounds %struct.doublecomplex, ptr %31, i32 0, i32 0
  store double %4666, ptr %4667, align 8, !tbaa !11
  %4668 = getelementptr inbounds %struct.doublecomplex, ptr %70, i32 0, i32 0
  %4669 = load double, ptr %4668, align 8, !tbaa !11
  %4670 = getelementptr inbounds %struct.doublecomplex, ptr %51, i32 0, i32 1
  %4671 = load double, ptr %4670, align 8, !tbaa !14
  %4672 = getelementptr inbounds %struct.doublecomplex, ptr %70, i32 0, i32 1
  %4673 = load double, ptr %4672, align 8, !tbaa !14
  %4674 = getelementptr inbounds %struct.doublecomplex, ptr %51, i32 0, i32 0
  %4675 = load double, ptr %4674, align 8, !tbaa !11
  %4676 = fmul double %4673, %4675
  %4677 = call double @llvm.fmuladd.f64(double %4669, double %4671, double %4676)
  %4678 = getelementptr inbounds %struct.doublecomplex, ptr %31, i32 0, i32 1
  store double %4677, ptr %4678, align 8, !tbaa !14
  %4679 = load ptr, ptr %14, align 8, !tbaa !5
  %4680 = load i32, ptr %21, align 4, !tbaa !9
  %4681 = sext i32 %4680 to i64
  %4682 = getelementptr inbounds %struct.doublecomplex, ptr %4679, i64 %4681
  %4683 = getelementptr inbounds %struct.doublecomplex, ptr %4682, i32 0, i32 0
  %4684 = load double, ptr %4683, align 8, !tbaa !11
  %4685 = getelementptr inbounds %struct.doublecomplex, ptr %31, i32 0, i32 0
  %4686 = load double, ptr %4685, align 8, !tbaa !11
  %4687 = fsub double %4684, %4686
  %4688 = getelementptr inbounds %struct.doublecomplex, ptr %30, i32 0, i32 0
  store double %4687, ptr %4688, align 8, !tbaa !11
  %4689 = load ptr, ptr %14, align 8, !tbaa !5
  %4690 = load i32, ptr %21, align 4, !tbaa !9
  %4691 = sext i32 %4690 to i64
  %4692 = getelementptr inbounds %struct.doublecomplex, ptr %4689, i64 %4691
  %4693 = getelementptr inbounds %struct.doublecomplex, ptr %4692, i32 0, i32 1
  %4694 = load double, ptr %4693, align 8, !tbaa !14
  %4695 = getelementptr inbounds %struct.doublecomplex, ptr %31, i32 0, i32 1
  %4696 = load double, ptr %4695, align 8, !tbaa !14
  %4697 = fsub double %4694, %4696
  %4698 = getelementptr inbounds %struct.doublecomplex, ptr %30, i32 0, i32 1
  store double %4697, ptr %4698, align 8, !tbaa !14
  %4699 = getelementptr inbounds %struct.doublecomplex, ptr %30, i32 0, i32 0
  %4700 = load double, ptr %4699, align 8, !tbaa !11
  %4701 = load ptr, ptr %14, align 8, !tbaa !5
  %4702 = load i32, ptr %20, align 4, !tbaa !9
  %4703 = sext i32 %4702 to i64
  %4704 = getelementptr inbounds %struct.doublecomplex, ptr %4701, i64 %4703
  %4705 = getelementptr inbounds %struct.doublecomplex, ptr %4704, i32 0, i32 0
  store double %4700, ptr %4705, align 8, !tbaa !11
  %4706 = getelementptr inbounds %struct.doublecomplex, ptr %30, i32 0, i32 1
  %4707 = load double, ptr %4706, align 8, !tbaa !14
  %4708 = load ptr, ptr %14, align 8, !tbaa !5
  %4709 = load i32, ptr %20, align 4, !tbaa !9
  %4710 = sext i32 %4709 to i64
  %4711 = getelementptr inbounds %struct.doublecomplex, ptr %4708, i64 %4710
  %4712 = getelementptr inbounds %struct.doublecomplex, ptr %4711, i32 0, i32 1
  store double %4707, ptr %4712, align 8, !tbaa !14
  %4713 = load i32, ptr %49, align 4, !tbaa !9
  %4714 = load i32, ptr %17, align 4, !tbaa !9
  %4715 = mul nsw i32 %4713, %4714
  %4716 = add nsw i32 %4715, 3
  store i32 %4716, ptr %20, align 4, !tbaa !9
  %4717 = load i32, ptr %49, align 4, !tbaa !9
  %4718 = load i32, ptr %17, align 4, !tbaa !9
  %4719 = mul nsw i32 %4717, %4718
  %4720 = add nsw i32 %4719, 3
  store i32 %4720, ptr %21, align 4, !tbaa !9
  %4721 = getelementptr inbounds %struct.doublecomplex, ptr %70, i32 0, i32 0
  %4722 = load double, ptr %4721, align 8, !tbaa !11
  %4723 = getelementptr inbounds %struct.doublecomplex, ptr %52, i32 0, i32 0
  %4724 = load double, ptr %4723, align 8, !tbaa !11
  %4725 = getelementptr inbounds %struct.doublecomplex, ptr %70, i32 0, i32 1
  %4726 = load double, ptr %4725, align 8, !tbaa !14
  %4727 = getelementptr inbounds %struct.doublecomplex, ptr %52, i32 0, i32 1
  %4728 = load double, ptr %4727, align 8, !tbaa !14
  %4729 = fmul double %4726, %4728
  %4730 = fneg double %4729
  %4731 = call double @llvm.fmuladd.f64(double %4722, double %4724, double %4730)
  %4732 = getelementptr inbounds %struct.doublecomplex, ptr %31, i32 0, i32 0
  store double %4731, ptr %4732, align 8, !tbaa !11
  %4733 = getelementptr inbounds %struct.doublecomplex, ptr %70, i32 0, i32 0
  %4734 = load double, ptr %4733, align 8, !tbaa !11
  %4735 = getelementptr inbounds %struct.doublecomplex, ptr %52, i32 0, i32 1
  %4736 = load double, ptr %4735, align 8, !tbaa !14
  %4737 = getelementptr inbounds %struct.doublecomplex, ptr %70, i32 0, i32 1
  %4738 = load double, ptr %4737, align 8, !tbaa !14
  %4739 = getelementptr inbounds %struct.doublecomplex, ptr %52, i32 0, i32 0
  %4740 = load double, ptr %4739, align 8, !tbaa !11
  %4741 = fmul double %4738, %4740
  %4742 = call double @llvm.fmuladd.f64(double %4734, double %4736, double %4741)
  %4743 = getelementptr inbounds %struct.doublecomplex, ptr %31, i32 0, i32 1
  store double %4742, ptr %4743, align 8, !tbaa !14
  %4744 = load ptr, ptr %14, align 8, !tbaa !5
  %4745 = load i32, ptr %21, align 4, !tbaa !9
  %4746 = sext i32 %4745 to i64
  %4747 = getelementptr inbounds %struct.doublecomplex, ptr %4744, i64 %4746
  %4748 = getelementptr inbounds %struct.doublecomplex, ptr %4747, i32 0, i32 0
  %4749 = load double, ptr %4748, align 8, !tbaa !11
  %4750 = getelementptr inbounds %struct.doublecomplex, ptr %31, i32 0, i32 0
  %4751 = load double, ptr %4750, align 8, !tbaa !11
  %4752 = fsub double %4749, %4751
  %4753 = getelementptr inbounds %struct.doublecomplex, ptr %30, i32 0, i32 0
  store double %4752, ptr %4753, align 8, !tbaa !11
  %4754 = load ptr, ptr %14, align 8, !tbaa !5
  %4755 = load i32, ptr %21, align 4, !tbaa !9
  %4756 = sext i32 %4755 to i64
  %4757 = getelementptr inbounds %struct.doublecomplex, ptr %4754, i64 %4756
  %4758 = getelementptr inbounds %struct.doublecomplex, ptr %4757, i32 0, i32 1
  %4759 = load double, ptr %4758, align 8, !tbaa !14
  %4760 = getelementptr inbounds %struct.doublecomplex, ptr %31, i32 0, i32 1
  %4761 = load double, ptr %4760, align 8, !tbaa !14
  %4762 = fsub double %4759, %4761
  %4763 = getelementptr inbounds %struct.doublecomplex, ptr %30, i32 0, i32 1
  store double %4762, ptr %4763, align 8, !tbaa !14
  %4764 = getelementptr inbounds %struct.doublecomplex, ptr %30, i32 0, i32 0
  %4765 = load double, ptr %4764, align 8, !tbaa !11
  %4766 = load ptr, ptr %14, align 8, !tbaa !5
  %4767 = load i32, ptr %20, align 4, !tbaa !9
  %4768 = sext i32 %4767 to i64
  %4769 = getelementptr inbounds %struct.doublecomplex, ptr %4766, i64 %4768
  %4770 = getelementptr inbounds %struct.doublecomplex, ptr %4769, i32 0, i32 0
  store double %4765, ptr %4770, align 8, !tbaa !11
  %4771 = getelementptr inbounds %struct.doublecomplex, ptr %30, i32 0, i32 1
  %4772 = load double, ptr %4771, align 8, !tbaa !14
  %4773 = load ptr, ptr %14, align 8, !tbaa !5
  %4774 = load i32, ptr %20, align 4, !tbaa !9
  %4775 = sext i32 %4774 to i64
  %4776 = getelementptr inbounds %struct.doublecomplex, ptr %4773, i64 %4775
  %4777 = getelementptr inbounds %struct.doublecomplex, ptr %4776, i32 0, i32 1
  store double %4772, ptr %4777, align 8, !tbaa !14
  %4778 = load i32, ptr %49, align 4, !tbaa !9
  %4779 = load i32, ptr %17, align 4, !tbaa !9
  %4780 = mul nsw i32 %4778, %4779
  %4781 = add nsw i32 %4780, 4
  store i32 %4781, ptr %20, align 4, !tbaa !9
  %4782 = load i32, ptr %49, align 4, !tbaa !9
  %4783 = load i32, ptr %17, align 4, !tbaa !9
  %4784 = mul nsw i32 %4782, %4783
  %4785 = add nsw i32 %4784, 4
  store i32 %4785, ptr %21, align 4, !tbaa !9
  %4786 = getelementptr inbounds %struct.doublecomplex, ptr %70, i32 0, i32 0
  %4787 = load double, ptr %4786, align 8, !tbaa !11
  %4788 = getelementptr inbounds %struct.doublecomplex, ptr %53, i32 0, i32 0
  %4789 = load double, ptr %4788, align 8, !tbaa !11
  %4790 = getelementptr inbounds %struct.doublecomplex, ptr %70, i32 0, i32 1
  %4791 = load double, ptr %4790, align 8, !tbaa !14
  %4792 = getelementptr inbounds %struct.doublecomplex, ptr %53, i32 0, i32 1
  %4793 = load double, ptr %4792, align 8, !tbaa !14
  %4794 = fmul double %4791, %4793
  %4795 = fneg double %4794
  %4796 = call double @llvm.fmuladd.f64(double %4787, double %4789, double %4795)
  %4797 = getelementptr inbounds %struct.doublecomplex, ptr %31, i32 0, i32 0
  store double %4796, ptr %4797, align 8, !tbaa !11
  %4798 = getelementptr inbounds %struct.doublecomplex, ptr %70, i32 0, i32 0
  %4799 = load double, ptr %4798, align 8, !tbaa !11
  %4800 = getelementptr inbounds %struct.doublecomplex, ptr %53, i32 0, i32 1
  %4801 = load double, ptr %4800, align 8, !tbaa !14
  %4802 = getelementptr inbounds %struct.doublecomplex, ptr %70, i32 0, i32 1
  %4803 = load double, ptr %4802, align 8, !tbaa !14
  %4804 = getelementptr inbounds %struct.doublecomplex, ptr %53, i32 0, i32 0
  %4805 = load double, ptr %4804, align 8, !tbaa !11
  %4806 = fmul double %4803, %4805
  %4807 = call double @llvm.fmuladd.f64(double %4799, double %4801, double %4806)
  %4808 = getelementptr inbounds %struct.doublecomplex, ptr %31, i32 0, i32 1
  store double %4807, ptr %4808, align 8, !tbaa !14
  %4809 = load ptr, ptr %14, align 8, !tbaa !5
  %4810 = load i32, ptr %21, align 4, !tbaa !9
  %4811 = sext i32 %4810 to i64
  %4812 = getelementptr inbounds %struct.doublecomplex, ptr %4809, i64 %4811
  %4813 = getelementptr inbounds %struct.doublecomplex, ptr %4812, i32 0, i32 0
  %4814 = load double, ptr %4813, align 8, !tbaa !11
  %4815 = getelementptr inbounds %struct.doublecomplex, ptr %31, i32 0, i32 0
  %4816 = load double, ptr %4815, align 8, !tbaa !11
  %4817 = fsub double %4814, %4816
  %4818 = getelementptr inbounds %struct.doublecomplex, ptr %30, i32 0, i32 0
  store double %4817, ptr %4818, align 8, !tbaa !11
  %4819 = load ptr, ptr %14, align 8, !tbaa !5
  %4820 = load i32, ptr %21, align 4, !tbaa !9
  %4821 = sext i32 %4820 to i64
  %4822 = getelementptr inbounds %struct.doublecomplex, ptr %4819, i64 %4821
  %4823 = getelementptr inbounds %struct.doublecomplex, ptr %4822, i32 0, i32 1
  %4824 = load double, ptr %4823, align 8, !tbaa !14
  %4825 = getelementptr inbounds %struct.doublecomplex, ptr %31, i32 0, i32 1
  %4826 = load double, ptr %4825, align 8, !tbaa !14
  %4827 = fsub double %4824, %4826
  %4828 = getelementptr inbounds %struct.doublecomplex, ptr %30, i32 0, i32 1
  store double %4827, ptr %4828, align 8, !tbaa !14
  %4829 = getelementptr inbounds %struct.doublecomplex, ptr %30, i32 0, i32 0
  %4830 = load double, ptr %4829, align 8, !tbaa !11
  %4831 = load ptr, ptr %14, align 8, !tbaa !5
  %4832 = load i32, ptr %20, align 4, !tbaa !9
  %4833 = sext i32 %4832 to i64
  %4834 = getelementptr inbounds %struct.doublecomplex, ptr %4831, i64 %4833
  %4835 = getelementptr inbounds %struct.doublecomplex, ptr %4834, i32 0, i32 0
  store double %4830, ptr %4835, align 8, !tbaa !11
  %4836 = getelementptr inbounds %struct.doublecomplex, ptr %30, i32 0, i32 1
  %4837 = load double, ptr %4836, align 8, !tbaa !14
  %4838 = load ptr, ptr %14, align 8, !tbaa !5
  %4839 = load i32, ptr %20, align 4, !tbaa !9
  %4840 = sext i32 %4839 to i64
  %4841 = getelementptr inbounds %struct.doublecomplex, ptr %4838, i64 %4840
  %4842 = getelementptr inbounds %struct.doublecomplex, ptr %4841, i32 0, i32 1
  store double %4837, ptr %4842, align 8, !tbaa !14
  %4843 = load i32, ptr %49, align 4, !tbaa !9
  %4844 = load i32, ptr %17, align 4, !tbaa !9
  %4845 = mul nsw i32 %4843, %4844
  %4846 = add nsw i32 %4845, 5
  store i32 %4846, ptr %20, align 4, !tbaa !9
  %4847 = load i32, ptr %49, align 4, !tbaa !9
  %4848 = load i32, ptr %17, align 4, !tbaa !9
  %4849 = mul nsw i32 %4847, %4848
  %4850 = add nsw i32 %4849, 5
  store i32 %4850, ptr %21, align 4, !tbaa !9
  %4851 = getelementptr inbounds %struct.doublecomplex, ptr %70, i32 0, i32 0
  %4852 = load double, ptr %4851, align 8, !tbaa !11
  %4853 = getelementptr inbounds %struct.doublecomplex, ptr %54, i32 0, i32 0
  %4854 = load double, ptr %4853, align 8, !tbaa !11
  %4855 = getelementptr inbounds %struct.doublecomplex, ptr %70, i32 0, i32 1
  %4856 = load double, ptr %4855, align 8, !tbaa !14
  %4857 = getelementptr inbounds %struct.doublecomplex, ptr %54, i32 0, i32 1
  %4858 = load double, ptr %4857, align 8, !tbaa !14
  %4859 = fmul double %4856, %4858
  %4860 = fneg double %4859
  %4861 = call double @llvm.fmuladd.f64(double %4852, double %4854, double %4860)
  %4862 = getelementptr inbounds %struct.doublecomplex, ptr %31, i32 0, i32 0
  store double %4861, ptr %4862, align 8, !tbaa !11
  %4863 = getelementptr inbounds %struct.doublecomplex, ptr %70, i32 0, i32 0
  %4864 = load double, ptr %4863, align 8, !tbaa !11
  %4865 = getelementptr inbounds %struct.doublecomplex, ptr %54, i32 0, i32 1
  %4866 = load double, ptr %4865, align 8, !tbaa !14
  %4867 = getelementptr inbounds %struct.doublecomplex, ptr %70, i32 0, i32 1
  %4868 = load double, ptr %4867, align 8, !tbaa !14
  %4869 = getelementptr inbounds %struct.doublecomplex, ptr %54, i32 0, i32 0
  %4870 = load double, ptr %4869, align 8, !tbaa !11
  %4871 = fmul double %4868, %4870
  %4872 = call double @llvm.fmuladd.f64(double %4864, double %4866, double %4871)
  %4873 = getelementptr inbounds %struct.doublecomplex, ptr %31, i32 0, i32 1
  store double %4872, ptr %4873, align 8, !tbaa !14
  %4874 = load ptr, ptr %14, align 8, !tbaa !5
  %4875 = load i32, ptr %21, align 4, !tbaa !9
  %4876 = sext i32 %4875 to i64
  %4877 = getelementptr inbounds %struct.doublecomplex, ptr %4874, i64 %4876
  %4878 = getelementptr inbounds %struct.doublecomplex, ptr %4877, i32 0, i32 0
  %4879 = load double, ptr %4878, align 8, !tbaa !11
  %4880 = getelementptr inbounds %struct.doublecomplex, ptr %31, i32 0, i32 0
  %4881 = load double, ptr %4880, align 8, !tbaa !11
  %4882 = fsub double %4879, %4881
  %4883 = getelementptr inbounds %struct.doublecomplex, ptr %30, i32 0, i32 0
  store double %4882, ptr %4883, align 8, !tbaa !11
  %4884 = load ptr, ptr %14, align 8, !tbaa !5
  %4885 = load i32, ptr %21, align 4, !tbaa !9
  %4886 = sext i32 %4885 to i64
  %4887 = getelementptr inbounds %struct.doublecomplex, ptr %4884, i64 %4886
  %4888 = getelementptr inbounds %struct.doublecomplex, ptr %4887, i32 0, i32 1
  %4889 = load double, ptr %4888, align 8, !tbaa !14
  %4890 = getelementptr inbounds %struct.doublecomplex, ptr %31, i32 0, i32 1
  %4891 = load double, ptr %4890, align 8, !tbaa !14
  %4892 = fsub double %4889, %4891
  %4893 = getelementptr inbounds %struct.doublecomplex, ptr %30, i32 0, i32 1
  store double %4892, ptr %4893, align 8, !tbaa !14
  %4894 = getelementptr inbounds %struct.doublecomplex, ptr %30, i32 0, i32 0
  %4895 = load double, ptr %4894, align 8, !tbaa !11
  %4896 = load ptr, ptr %14, align 8, !tbaa !5
  %4897 = load i32, ptr %20, align 4, !tbaa !9
  %4898 = sext i32 %4897 to i64
  %4899 = getelementptr inbounds %struct.doublecomplex, ptr %4896, i64 %4898
  %4900 = getelementptr inbounds %struct.doublecomplex, ptr %4899, i32 0, i32 0
  store double %4895, ptr %4900, align 8, !tbaa !11
  %4901 = getelementptr inbounds %struct.doublecomplex, ptr %30, i32 0, i32 1
  %4902 = load double, ptr %4901, align 8, !tbaa !14
  %4903 = load ptr, ptr %14, align 8, !tbaa !5
  %4904 = load i32, ptr %20, align 4, !tbaa !9
  %4905 = sext i32 %4904 to i64
  %4906 = getelementptr inbounds %struct.doublecomplex, ptr %4903, i64 %4905
  %4907 = getelementptr inbounds %struct.doublecomplex, ptr %4906, i32 0, i32 1
  store double %4902, ptr %4907, align 8, !tbaa !14
  %4908 = load i32, ptr %49, align 4, !tbaa !9
  %4909 = load i32, ptr %17, align 4, !tbaa !9
  %4910 = mul nsw i32 %4908, %4909
  %4911 = add nsw i32 %4910, 6
  store i32 %4911, ptr %20, align 4, !tbaa !9
  %4912 = load i32, ptr %49, align 4, !tbaa !9
  %4913 = load i32, ptr %17, align 4, !tbaa !9
  %4914 = mul nsw i32 %4912, %4913
  %4915 = add nsw i32 %4914, 6
  store i32 %4915, ptr %21, align 4, !tbaa !9
  %4916 = getelementptr inbounds %struct.doublecomplex, ptr %70, i32 0, i32 0
  %4917 = load double, ptr %4916, align 8, !tbaa !11
  %4918 = getelementptr inbounds %struct.doublecomplex, ptr %55, i32 0, i32 0
  %4919 = load double, ptr %4918, align 8, !tbaa !11
  %4920 = getelementptr inbounds %struct.doublecomplex, ptr %70, i32 0, i32 1
  %4921 = load double, ptr %4920, align 8, !tbaa !14
  %4922 = getelementptr inbounds %struct.doublecomplex, ptr %55, i32 0, i32 1
  %4923 = load double, ptr %4922, align 8, !tbaa !14
  %4924 = fmul double %4921, %4923
  %4925 = fneg double %4924
  %4926 = call double @llvm.fmuladd.f64(double %4917, double %4919, double %4925)
  %4927 = getelementptr inbounds %struct.doublecomplex, ptr %31, i32 0, i32 0
  store double %4926, ptr %4927, align 8, !tbaa !11
  %4928 = getelementptr inbounds %struct.doublecomplex, ptr %70, i32 0, i32 0
  %4929 = load double, ptr %4928, align 8, !tbaa !11
  %4930 = getelementptr inbounds %struct.doublecomplex, ptr %55, i32 0, i32 1
  %4931 = load double, ptr %4930, align 8, !tbaa !14
  %4932 = getelementptr inbounds %struct.doublecomplex, ptr %70, i32 0, i32 1
  %4933 = load double, ptr %4932, align 8, !tbaa !14
  %4934 = getelementptr inbounds %struct.doublecomplex, ptr %55, i32 0, i32 0
  %4935 = load double, ptr %4934, align 8, !tbaa !11
  %4936 = fmul double %4933, %4935
  %4937 = call double @llvm.fmuladd.f64(double %4929, double %4931, double %4936)
  %4938 = getelementptr inbounds %struct.doublecomplex, ptr %31, i32 0, i32 1
  store double %4937, ptr %4938, align 8, !tbaa !14
  %4939 = load ptr, ptr %14, align 8, !tbaa !5
  %4940 = load i32, ptr %21, align 4, !tbaa !9
  %4941 = sext i32 %4940 to i64
  %4942 = getelementptr inbounds %struct.doublecomplex, ptr %4939, i64 %4941
  %4943 = getelementptr inbounds %struct.doublecomplex, ptr %4942, i32 0, i32 0
  %4944 = load double, ptr %4943, align 8, !tbaa !11
  %4945 = getelementptr inbounds %struct.doublecomplex, ptr %31, i32 0, i32 0
  %4946 = load double, ptr %4945, align 8, !tbaa !11
  %4947 = fsub double %4944, %4946
  %4948 = getelementptr inbounds %struct.doublecomplex, ptr %30, i32 0, i32 0
  store double %4947, ptr %4948, align 8, !tbaa !11
  %4949 = load ptr, ptr %14, align 8, !tbaa !5
  %4950 = load i32, ptr %21, align 4, !tbaa !9
  %4951 = sext i32 %4950 to i64
  %4952 = getelementptr inbounds %struct.doublecomplex, ptr %4949, i64 %4951
  %4953 = getelementptr inbounds %struct.doublecomplex, ptr %4952, i32 0, i32 1
  %4954 = load double, ptr %4953, align 8, !tbaa !14
  %4955 = getelementptr inbounds %struct.doublecomplex, ptr %31, i32 0, i32 1
  %4956 = load double, ptr %4955, align 8, !tbaa !14
  %4957 = fsub double %4954, %4956
  %4958 = getelementptr inbounds %struct.doublecomplex, ptr %30, i32 0, i32 1
  store double %4957, ptr %4958, align 8, !tbaa !14
  %4959 = getelementptr inbounds %struct.doublecomplex, ptr %30, i32 0, i32 0
  %4960 = load double, ptr %4959, align 8, !tbaa !11
  %4961 = load ptr, ptr %14, align 8, !tbaa !5
  %4962 = load i32, ptr %20, align 4, !tbaa !9
  %4963 = sext i32 %4962 to i64
  %4964 = getelementptr inbounds %struct.doublecomplex, ptr %4961, i64 %4963
  %4965 = getelementptr inbounds %struct.doublecomplex, ptr %4964, i32 0, i32 0
  store double %4960, ptr %4965, align 8, !tbaa !11
  %4966 = getelementptr inbounds %struct.doublecomplex, ptr %30, i32 0, i32 1
  %4967 = load double, ptr %4966, align 8, !tbaa !14
  %4968 = load ptr, ptr %14, align 8, !tbaa !5
  %4969 = load i32, ptr %20, align 4, !tbaa !9
  %4970 = sext i32 %4969 to i64
  %4971 = getelementptr inbounds %struct.doublecomplex, ptr %4968, i64 %4970
  %4972 = getelementptr inbounds %struct.doublecomplex, ptr %4971, i32 0, i32 1
  store double %4967, ptr %4972, align 8, !tbaa !14
  %4973 = load i32, ptr %49, align 4, !tbaa !9
  %4974 = load i32, ptr %17, align 4, !tbaa !9
  %4975 = mul nsw i32 %4973, %4974
  %4976 = add nsw i32 %4975, 7
  store i32 %4976, ptr %20, align 4, !tbaa !9
  %4977 = load i32, ptr %49, align 4, !tbaa !9
  %4978 = load i32, ptr %17, align 4, !tbaa !9
  %4979 = mul nsw i32 %4977, %4978
  %4980 = add nsw i32 %4979, 7
  store i32 %4980, ptr %21, align 4, !tbaa !9
  %4981 = getelementptr inbounds %struct.doublecomplex, ptr %70, i32 0, i32 0
  %4982 = load double, ptr %4981, align 8, !tbaa !11
  %4983 = getelementptr inbounds %struct.doublecomplex, ptr %56, i32 0, i32 0
  %4984 = load double, ptr %4983, align 8, !tbaa !11
  %4985 = getelementptr inbounds %struct.doublecomplex, ptr %70, i32 0, i32 1
  %4986 = load double, ptr %4985, align 8, !tbaa !14
  %4987 = getelementptr inbounds %struct.doublecomplex, ptr %56, i32 0, i32 1
  %4988 = load double, ptr %4987, align 8, !tbaa !14
  %4989 = fmul double %4986, %4988
  %4990 = fneg double %4989
  %4991 = call double @llvm.fmuladd.f64(double %4982, double %4984, double %4990)
  %4992 = getelementptr inbounds %struct.doublecomplex, ptr %31, i32 0, i32 0
  store double %4991, ptr %4992, align 8, !tbaa !11
  %4993 = getelementptr inbounds %struct.doublecomplex, ptr %70, i32 0, i32 0
  %4994 = load double, ptr %4993, align 8, !tbaa !11
  %4995 = getelementptr inbounds %struct.doublecomplex, ptr %56, i32 0, i32 1
  %4996 = load double, ptr %4995, align 8, !tbaa !14
  %4997 = getelementptr inbounds %struct.doublecomplex, ptr %70, i32 0, i32 1
  %4998 = load double, ptr %4997, align 8, !tbaa !14
  %4999 = getelementptr inbounds %struct.doublecomplex, ptr %56, i32 0, i32 0
  %5000 = load double, ptr %4999, align 8, !tbaa !11
  %5001 = fmul double %4998, %5000
  %5002 = call double @llvm.fmuladd.f64(double %4994, double %4996, double %5001)
  %5003 = getelementptr inbounds %struct.doublecomplex, ptr %31, i32 0, i32 1
  store double %5002, ptr %5003, align 8, !tbaa !14
  %5004 = load ptr, ptr %14, align 8, !tbaa !5
  %5005 = load i32, ptr %21, align 4, !tbaa !9
  %5006 = sext i32 %5005 to i64
  %5007 = getelementptr inbounds %struct.doublecomplex, ptr %5004, i64 %5006
  %5008 = getelementptr inbounds %struct.doublecomplex, ptr %5007, i32 0, i32 0
  %5009 = load double, ptr %5008, align 8, !tbaa !11
  %5010 = getelementptr inbounds %struct.doublecomplex, ptr %31, i32 0, i32 0
  %5011 = load double, ptr %5010, align 8, !tbaa !11
  %5012 = fsub double %5009, %5011
  %5013 = getelementptr inbounds %struct.doublecomplex, ptr %30, i32 0, i32 0
  store double %5012, ptr %5013, align 8, !tbaa !11
  %5014 = load ptr, ptr %14, align 8, !tbaa !5
  %5015 = load i32, ptr %21, align 4, !tbaa !9
  %5016 = sext i32 %5015 to i64
  %5017 = getelementptr inbounds %struct.doublecomplex, ptr %5014, i64 %5016
  %5018 = getelementptr inbounds %struct.doublecomplex, ptr %5017, i32 0, i32 1
  %5019 = load double, ptr %5018, align 8, !tbaa !14
  %5020 = getelementptr inbounds %struct.doublecomplex, ptr %31, i32 0, i32 1
  %5021 = load double, ptr %5020, align 8, !tbaa !14
  %5022 = fsub double %5019, %5021
  %5023 = getelementptr inbounds %struct.doublecomplex, ptr %30, i32 0, i32 1
  store double %5022, ptr %5023, align 8, !tbaa !14
  %5024 = getelementptr inbounds %struct.doublecomplex, ptr %30, i32 0, i32 0
  %5025 = load double, ptr %5024, align 8, !tbaa !11
  %5026 = load ptr, ptr %14, align 8, !tbaa !5
  %5027 = load i32, ptr %20, align 4, !tbaa !9
  %5028 = sext i32 %5027 to i64
  %5029 = getelementptr inbounds %struct.doublecomplex, ptr %5026, i64 %5028
  %5030 = getelementptr inbounds %struct.doublecomplex, ptr %5029, i32 0, i32 0
  store double %5025, ptr %5030, align 8, !tbaa !11
  %5031 = getelementptr inbounds %struct.doublecomplex, ptr %30, i32 0, i32 1
  %5032 = load double, ptr %5031, align 8, !tbaa !14
  %5033 = load ptr, ptr %14, align 8, !tbaa !5
  %5034 = load i32, ptr %20, align 4, !tbaa !9
  %5035 = sext i32 %5034 to i64
  %5036 = getelementptr inbounds %struct.doublecomplex, ptr %5033, i64 %5035
  %5037 = getelementptr inbounds %struct.doublecomplex, ptr %5036, i32 0, i32 1
  store double %5032, ptr %5037, align 8, !tbaa !14
  br label %5038

5038:                                             ; preds = %4203
  %5039 = load i32, ptr %49, align 4, !tbaa !9
  %5040 = add nsw i32 %5039, 1
  store i32 %5040, ptr %49, align 4, !tbaa !9
  br label %4199, !llvm.loop !22

5041:                                             ; preds = %4199
  br label %19171

5042:                                             ; preds = %110
  %5043 = load ptr, ptr %12, align 8, !tbaa !5
  %5044 = getelementptr inbounds %struct.doublecomplex, ptr %5043, i64 1
  %5045 = call { double, double } @Cd(ptr noundef %5044)
  %5046 = extractvalue { double, double } %5045, 0
  %5047 = extractvalue { double, double } %5045, 1
  %5048 = fneg double %5047
  %5049 = call ptr @_pCd(ptr noundef %30)
  %5050 = getelementptr inbounds { double, double }, ptr %5049, i32 0, i32 0
  %5051 = getelementptr inbounds { double, double }, ptr %5049, i32 0, i32 1
  store double %5046, ptr %5050, align 8
  store double %5048, ptr %5051, align 8
  %5052 = getelementptr inbounds %struct.doublecomplex, ptr %30, i32 0, i32 0
  %5053 = load double, ptr %5052, align 8, !tbaa !11
  %5054 = getelementptr inbounds %struct.doublecomplex, ptr %59, i32 0, i32 0
  store double %5053, ptr %5054, align 8, !tbaa !11
  %5055 = getelementptr inbounds %struct.doublecomplex, ptr %30, i32 0, i32 1
  %5056 = load double, ptr %5055, align 8, !tbaa !14
  %5057 = getelementptr inbounds %struct.doublecomplex, ptr %59, i32 0, i32 1
  store double %5056, ptr %5057, align 8, !tbaa !14
  %5058 = call { double, double } @Cd(ptr noundef %59)
  %5059 = extractvalue { double, double } %5058, 0
  %5060 = extractvalue { double, double } %5058, 1
  %5061 = fneg double %5060
  %5062 = call ptr @_pCd(ptr noundef %31)
  %5063 = getelementptr inbounds { double, double }, ptr %5062, i32 0, i32 0
  %5064 = getelementptr inbounds { double, double }, ptr %5062, i32 0, i32 1
  store double %5059, ptr %5063, align 8
  store double %5061, ptr %5064, align 8
  %5065 = load ptr, ptr %13, align 8, !tbaa !5
  %5066 = getelementptr inbounds %struct.doublecomplex, ptr %5065, i32 0, i32 0
  %5067 = load double, ptr %5066, align 8, !tbaa !11
  %5068 = getelementptr inbounds %struct.doublecomplex, ptr %31, i32 0, i32 0
  %5069 = load double, ptr %5068, align 8, !tbaa !11
  %5070 = load ptr, ptr %13, align 8, !tbaa !5
  %5071 = getelementptr inbounds %struct.doublecomplex, ptr %5070, i32 0, i32 1
  %5072 = load double, ptr %5071, align 8, !tbaa !14
  %5073 = getelementptr inbounds %struct.doublecomplex, ptr %31, i32 0, i32 1
  %5074 = load double, ptr %5073, align 8, !tbaa !14
  %5075 = fmul double %5072, %5074
  %5076 = fneg double %5075
  %5077 = call double @llvm.fmuladd.f64(double %5067, double %5069, double %5076)
  %5078 = getelementptr inbounds %struct.doublecomplex, ptr %30, i32 0, i32 0
  store double %5077, ptr %5078, align 8, !tbaa !11
  %5079 = load ptr, ptr %13, align 8, !tbaa !5
  %5080 = getelementptr inbounds %struct.doublecomplex, ptr %5079, i32 0, i32 0
  %5081 = load double, ptr %5080, align 8, !tbaa !11
  %5082 = getelementptr inbounds %struct.doublecomplex, ptr %31, i32 0, i32 1
  %5083 = load double, ptr %5082, align 8, !tbaa !14
  %5084 = load ptr, ptr %13, align 8, !tbaa !5
  %5085 = getelementptr inbounds %struct.doublecomplex, ptr %5084, i32 0, i32 1
  %5086 = load double, ptr %5085, align 8, !tbaa !14
  %5087 = getelementptr inbounds %struct.doublecomplex, ptr %31, i32 0, i32 0
  %5088 = load double, ptr %5087, align 8, !tbaa !11
  %5089 = fmul double %5086, %5088
  %5090 = call double @llvm.fmuladd.f64(double %5081, double %5083, double %5089)
  %5091 = getelementptr inbounds %struct.doublecomplex, ptr %30, i32 0, i32 1
  store double %5090, ptr %5091, align 8, !tbaa !14
  %5092 = getelementptr inbounds %struct.doublecomplex, ptr %30, i32 0, i32 0
  %5093 = load double, ptr %5092, align 8, !tbaa !11
  %5094 = getelementptr inbounds %struct.doublecomplex, ptr %50, i32 0, i32 0
  store double %5093, ptr %5094, align 8, !tbaa !11
  %5095 = getelementptr inbounds %struct.doublecomplex, ptr %30, i32 0, i32 1
  %5096 = load double, ptr %5095, align 8, !tbaa !14
  %5097 = getelementptr inbounds %struct.doublecomplex, ptr %50, i32 0, i32 1
  store double %5096, ptr %5097, align 8, !tbaa !14
  %5098 = load ptr, ptr %12, align 8, !tbaa !5
  %5099 = getelementptr inbounds %struct.doublecomplex, ptr %5098, i64 2
  %5100 = call { double, double } @Cd(ptr noundef %5099)
  %5101 = extractvalue { double, double } %5100, 0
  %5102 = extractvalue { double, double } %5100, 1
  %5103 = fneg double %5102
  %5104 = call ptr @_pCd(ptr noundef %30)
  %5105 = getelementptr inbounds { double, double }, ptr %5104, i32 0, i32 0
  %5106 = getelementptr inbounds { double, double }, ptr %5104, i32 0, i32 1
  store double %5101, ptr %5105, align 8
  store double %5103, ptr %5106, align 8
  %5107 = getelementptr inbounds %struct.doublecomplex, ptr %30, i32 0, i32 0
  %5108 = load double, ptr %5107, align 8, !tbaa !11
  %5109 = getelementptr inbounds %struct.doublecomplex, ptr %60, i32 0, i32 0
  store double %5108, ptr %5109, align 8, !tbaa !11
  %5110 = getelementptr inbounds %struct.doublecomplex, ptr %30, i32 0, i32 1
  %5111 = load double, ptr %5110, align 8, !tbaa !14
  %5112 = getelementptr inbounds %struct.doublecomplex, ptr %60, i32 0, i32 1
  store double %5111, ptr %5112, align 8, !tbaa !14
  %5113 = call { double, double } @Cd(ptr noundef %60)
  %5114 = extractvalue { double, double } %5113, 0
  %5115 = extractvalue { double, double } %5113, 1
  %5116 = fneg double %5115
  %5117 = call ptr @_pCd(ptr noundef %31)
  %5118 = getelementptr inbounds { double, double }, ptr %5117, i32 0, i32 0
  %5119 = getelementptr inbounds { double, double }, ptr %5117, i32 0, i32 1
  store double %5114, ptr %5118, align 8
  store double %5116, ptr %5119, align 8
  %5120 = load ptr, ptr %13, align 8, !tbaa !5
  %5121 = getelementptr inbounds %struct.doublecomplex, ptr %5120, i32 0, i32 0
  %5122 = load double, ptr %5121, align 8, !tbaa !11
  %5123 = getelementptr inbounds %struct.doublecomplex, ptr %31, i32 0, i32 0
  %5124 = load double, ptr %5123, align 8, !tbaa !11
  %5125 = load ptr, ptr %13, align 8, !tbaa !5
  %5126 = getelementptr inbounds %struct.doublecomplex, ptr %5125, i32 0, i32 1
  %5127 = load double, ptr %5126, align 8, !tbaa !14
  %5128 = getelementptr inbounds %struct.doublecomplex, ptr %31, i32 0, i32 1
  %5129 = load double, ptr %5128, align 8, !tbaa !14
  %5130 = fmul double %5127, %5129
  %5131 = fneg double %5130
  %5132 = call double @llvm.fmuladd.f64(double %5122, double %5124, double %5131)
  %5133 = getelementptr inbounds %struct.doublecomplex, ptr %30, i32 0, i32 0
  store double %5132, ptr %5133, align 8, !tbaa !11
  %5134 = load ptr, ptr %13, align 8, !tbaa !5
  %5135 = getelementptr inbounds %struct.doublecomplex, ptr %5134, i32 0, i32 0
  %5136 = load double, ptr %5135, align 8, !tbaa !11
  %5137 = getelementptr inbounds %struct.doublecomplex, ptr %31, i32 0, i32 1
  %5138 = load double, ptr %5137, align 8, !tbaa !14
  %5139 = load ptr, ptr %13, align 8, !tbaa !5
  %5140 = getelementptr inbounds %struct.doublecomplex, ptr %5139, i32 0, i32 1
  %5141 = load double, ptr %5140, align 8, !tbaa !14
  %5142 = getelementptr inbounds %struct.doublecomplex, ptr %31, i32 0, i32 0
  %5143 = load double, ptr %5142, align 8, !tbaa !11
  %5144 = fmul double %5141, %5143
  %5145 = call double @llvm.fmuladd.f64(double %5136, double %5138, double %5144)
  %5146 = getelementptr inbounds %struct.doublecomplex, ptr %30, i32 0, i32 1
  store double %5145, ptr %5146, align 8, !tbaa !14
  %5147 = getelementptr inbounds %struct.doublecomplex, ptr %30, i32 0, i32 0
  %5148 = load double, ptr %5147, align 8, !tbaa !11
  %5149 = getelementptr inbounds %struct.doublecomplex, ptr %51, i32 0, i32 0
  store double %5148, ptr %5149, align 8, !tbaa !11
  %5150 = getelementptr inbounds %struct.doublecomplex, ptr %30, i32 0, i32 1
  %5151 = load double, ptr %5150, align 8, !tbaa !14
  %5152 = getelementptr inbounds %struct.doublecomplex, ptr %51, i32 0, i32 1
  store double %5151, ptr %5152, align 8, !tbaa !14
  %5153 = load ptr, ptr %12, align 8, !tbaa !5
  %5154 = getelementptr inbounds %struct.doublecomplex, ptr %5153, i64 3
  %5155 = call { double, double } @Cd(ptr noundef %5154)
  %5156 = extractvalue { double, double } %5155, 0
  %5157 = extractvalue { double, double } %5155, 1
  %5158 = fneg double %5157
  %5159 = call ptr @_pCd(ptr noundef %30)
  %5160 = getelementptr inbounds { double, double }, ptr %5159, i32 0, i32 0
  %5161 = getelementptr inbounds { double, double }, ptr %5159, i32 0, i32 1
  store double %5156, ptr %5160, align 8
  store double %5158, ptr %5161, align 8
  %5162 = getelementptr inbounds %struct.doublecomplex, ptr %30, i32 0, i32 0
  %5163 = load double, ptr %5162, align 8, !tbaa !11
  %5164 = getelementptr inbounds %struct.doublecomplex, ptr %61, i32 0, i32 0
  store double %5163, ptr %5164, align 8, !tbaa !11
  %5165 = getelementptr inbounds %struct.doublecomplex, ptr %30, i32 0, i32 1
  %5166 = load double, ptr %5165, align 8, !tbaa !14
  %5167 = getelementptr inbounds %struct.doublecomplex, ptr %61, i32 0, i32 1
  store double %5166, ptr %5167, align 8, !tbaa !14
  %5168 = call { double, double } @Cd(ptr noundef %61)
  %5169 = extractvalue { double, double } %5168, 0
  %5170 = extractvalue { double, double } %5168, 1
  %5171 = fneg double %5170
  %5172 = call ptr @_pCd(ptr noundef %31)
  %5173 = getelementptr inbounds { double, double }, ptr %5172, i32 0, i32 0
  %5174 = getelementptr inbounds { double, double }, ptr %5172, i32 0, i32 1
  store double %5169, ptr %5173, align 8
  store double %5171, ptr %5174, align 8
  %5175 = load ptr, ptr %13, align 8, !tbaa !5
  %5176 = getelementptr inbounds %struct.doublecomplex, ptr %5175, i32 0, i32 0
  %5177 = load double, ptr %5176, align 8, !tbaa !11
  %5178 = getelementptr inbounds %struct.doublecomplex, ptr %31, i32 0, i32 0
  %5179 = load double, ptr %5178, align 8, !tbaa !11
  %5180 = load ptr, ptr %13, align 8, !tbaa !5
  %5181 = getelementptr inbounds %struct.doublecomplex, ptr %5180, i32 0, i32 1
  %5182 = load double, ptr %5181, align 8, !tbaa !14
  %5183 = getelementptr inbounds %struct.doublecomplex, ptr %31, i32 0, i32 1
  %5184 = load double, ptr %5183, align 8, !tbaa !14
  %5185 = fmul double %5182, %5184
  %5186 = fneg double %5185
  %5187 = call double @llvm.fmuladd.f64(double %5177, double %5179, double %5186)
  %5188 = getelementptr inbounds %struct.doublecomplex, ptr %30, i32 0, i32 0
  store double %5187, ptr %5188, align 8, !tbaa !11
  %5189 = load ptr, ptr %13, align 8, !tbaa !5
  %5190 = getelementptr inbounds %struct.doublecomplex, ptr %5189, i32 0, i32 0
  %5191 = load double, ptr %5190, align 8, !tbaa !11
  %5192 = getelementptr inbounds %struct.doublecomplex, ptr %31, i32 0, i32 1
  %5193 = load double, ptr %5192, align 8, !tbaa !14
  %5194 = load ptr, ptr %13, align 8, !tbaa !5
  %5195 = getelementptr inbounds %struct.doublecomplex, ptr %5194, i32 0, i32 1
  %5196 = load double, ptr %5195, align 8, !tbaa !14
  %5197 = getelementptr inbounds %struct.doublecomplex, ptr %31, i32 0, i32 0
  %5198 = load double, ptr %5197, align 8, !tbaa !11
  %5199 = fmul double %5196, %5198
  %5200 = call double @llvm.fmuladd.f64(double %5191, double %5193, double %5199)
  %5201 = getelementptr inbounds %struct.doublecomplex, ptr %30, i32 0, i32 1
  store double %5200, ptr %5201, align 8, !tbaa !14
  %5202 = getelementptr inbounds %struct.doublecomplex, ptr %30, i32 0, i32 0
  %5203 = load double, ptr %5202, align 8, !tbaa !11
  %5204 = getelementptr inbounds %struct.doublecomplex, ptr %52, i32 0, i32 0
  store double %5203, ptr %5204, align 8, !tbaa !11
  %5205 = getelementptr inbounds %struct.doublecomplex, ptr %30, i32 0, i32 1
  %5206 = load double, ptr %5205, align 8, !tbaa !14
  %5207 = getelementptr inbounds %struct.doublecomplex, ptr %52, i32 0, i32 1
  store double %5206, ptr %5207, align 8, !tbaa !14
  %5208 = load ptr, ptr %12, align 8, !tbaa !5
  %5209 = getelementptr inbounds %struct.doublecomplex, ptr %5208, i64 4
  %5210 = call { double, double } @Cd(ptr noundef %5209)
  %5211 = extractvalue { double, double } %5210, 0
  %5212 = extractvalue { double, double } %5210, 1
  %5213 = fneg double %5212
  %5214 = call ptr @_pCd(ptr noundef %30)
  %5215 = getelementptr inbounds { double, double }, ptr %5214, i32 0, i32 0
  %5216 = getelementptr inbounds { double, double }, ptr %5214, i32 0, i32 1
  store double %5211, ptr %5215, align 8
  store double %5213, ptr %5216, align 8
  %5217 = getelementptr inbounds %struct.doublecomplex, ptr %30, i32 0, i32 0
  %5218 = load double, ptr %5217, align 8, !tbaa !11
  %5219 = getelementptr inbounds %struct.doublecomplex, ptr %62, i32 0, i32 0
  store double %5218, ptr %5219, align 8, !tbaa !11
  %5220 = getelementptr inbounds %struct.doublecomplex, ptr %30, i32 0, i32 1
  %5221 = load double, ptr %5220, align 8, !tbaa !14
  %5222 = getelementptr inbounds %struct.doublecomplex, ptr %62, i32 0, i32 1
  store double %5221, ptr %5222, align 8, !tbaa !14
  %5223 = call { double, double } @Cd(ptr noundef %62)
  %5224 = extractvalue { double, double } %5223, 0
  %5225 = extractvalue { double, double } %5223, 1
  %5226 = fneg double %5225
  %5227 = call ptr @_pCd(ptr noundef %31)
  %5228 = getelementptr inbounds { double, double }, ptr %5227, i32 0, i32 0
  %5229 = getelementptr inbounds { double, double }, ptr %5227, i32 0, i32 1
  store double %5224, ptr %5228, align 8
  store double %5226, ptr %5229, align 8
  %5230 = load ptr, ptr %13, align 8, !tbaa !5
  %5231 = getelementptr inbounds %struct.doublecomplex, ptr %5230, i32 0, i32 0
  %5232 = load double, ptr %5231, align 8, !tbaa !11
  %5233 = getelementptr inbounds %struct.doublecomplex, ptr %31, i32 0, i32 0
  %5234 = load double, ptr %5233, align 8, !tbaa !11
  %5235 = load ptr, ptr %13, align 8, !tbaa !5
  %5236 = getelementptr inbounds %struct.doublecomplex, ptr %5235, i32 0, i32 1
  %5237 = load double, ptr %5236, align 8, !tbaa !14
  %5238 = getelementptr inbounds %struct.doublecomplex, ptr %31, i32 0, i32 1
  %5239 = load double, ptr %5238, align 8, !tbaa !14
  %5240 = fmul double %5237, %5239
  %5241 = fneg double %5240
  %5242 = call double @llvm.fmuladd.f64(double %5232, double %5234, double %5241)
  %5243 = getelementptr inbounds %struct.doublecomplex, ptr %30, i32 0, i32 0
  store double %5242, ptr %5243, align 8, !tbaa !11
  %5244 = load ptr, ptr %13, align 8, !tbaa !5
  %5245 = getelementptr inbounds %struct.doublecomplex, ptr %5244, i32 0, i32 0
  %5246 = load double, ptr %5245, align 8, !tbaa !11
  %5247 = getelementptr inbounds %struct.doublecomplex, ptr %31, i32 0, i32 1
  %5248 = load double, ptr %5247, align 8, !tbaa !14
  %5249 = load ptr, ptr %13, align 8, !tbaa !5
  %5250 = getelementptr inbounds %struct.doublecomplex, ptr %5249, i32 0, i32 1
  %5251 = load double, ptr %5250, align 8, !tbaa !14
  %5252 = getelementptr inbounds %struct.doublecomplex, ptr %31, i32 0, i32 0
  %5253 = load double, ptr %5252, align 8, !tbaa !11
  %5254 = fmul double %5251, %5253
  %5255 = call double @llvm.fmuladd.f64(double %5246, double %5248, double %5254)
  %5256 = getelementptr inbounds %struct.doublecomplex, ptr %30, i32 0, i32 1
  store double %5255, ptr %5256, align 8, !tbaa !14
  %5257 = getelementptr inbounds %struct.doublecomplex, ptr %30, i32 0, i32 0
  %5258 = load double, ptr %5257, align 8, !tbaa !11
  %5259 = getelementptr inbounds %struct.doublecomplex, ptr %53, i32 0, i32 0
  store double %5258, ptr %5259, align 8, !tbaa !11
  %5260 = getelementptr inbounds %struct.doublecomplex, ptr %30, i32 0, i32 1
  %5261 = load double, ptr %5260, align 8, !tbaa !14
  %5262 = getelementptr inbounds %struct.doublecomplex, ptr %53, i32 0, i32 1
  store double %5261, ptr %5262, align 8, !tbaa !14
  %5263 = load ptr, ptr %12, align 8, !tbaa !5
  %5264 = getelementptr inbounds %struct.doublecomplex, ptr %5263, i64 5
  %5265 = call { double, double } @Cd(ptr noundef %5264)
  %5266 = extractvalue { double, double } %5265, 0
  %5267 = extractvalue { double, double } %5265, 1
  %5268 = fneg double %5267
  %5269 = call ptr @_pCd(ptr noundef %30)
  %5270 = getelementptr inbounds { double, double }, ptr %5269, i32 0, i32 0
  %5271 = getelementptr inbounds { double, double }, ptr %5269, i32 0, i32 1
  store double %5266, ptr %5270, align 8
  store double %5268, ptr %5271, align 8
  %5272 = getelementptr inbounds %struct.doublecomplex, ptr %30, i32 0, i32 0
  %5273 = load double, ptr %5272, align 8, !tbaa !11
  %5274 = getelementptr inbounds %struct.doublecomplex, ptr %63, i32 0, i32 0
  store double %5273, ptr %5274, align 8, !tbaa !11
  %5275 = getelementptr inbounds %struct.doublecomplex, ptr %30, i32 0, i32 1
  %5276 = load double, ptr %5275, align 8, !tbaa !14
  %5277 = getelementptr inbounds %struct.doublecomplex, ptr %63, i32 0, i32 1
  store double %5276, ptr %5277, align 8, !tbaa !14
  %5278 = call { double, double } @Cd(ptr noundef %63)
  %5279 = extractvalue { double, double } %5278, 0
  %5280 = extractvalue { double, double } %5278, 1
  %5281 = fneg double %5280
  %5282 = call ptr @_pCd(ptr noundef %31)
  %5283 = getelementptr inbounds { double, double }, ptr %5282, i32 0, i32 0
  %5284 = getelementptr inbounds { double, double }, ptr %5282, i32 0, i32 1
  store double %5279, ptr %5283, align 8
  store double %5281, ptr %5284, align 8
  %5285 = load ptr, ptr %13, align 8, !tbaa !5
  %5286 = getelementptr inbounds %struct.doublecomplex, ptr %5285, i32 0, i32 0
  %5287 = load double, ptr %5286, align 8, !tbaa !11
  %5288 = getelementptr inbounds %struct.doublecomplex, ptr %31, i32 0, i32 0
  %5289 = load double, ptr %5288, align 8, !tbaa !11
  %5290 = load ptr, ptr %13, align 8, !tbaa !5
  %5291 = getelementptr inbounds %struct.doublecomplex, ptr %5290, i32 0, i32 1
  %5292 = load double, ptr %5291, align 8, !tbaa !14
  %5293 = getelementptr inbounds %struct.doublecomplex, ptr %31, i32 0, i32 1
  %5294 = load double, ptr %5293, align 8, !tbaa !14
  %5295 = fmul double %5292, %5294
  %5296 = fneg double %5295
  %5297 = call double @llvm.fmuladd.f64(double %5287, double %5289, double %5296)
  %5298 = getelementptr inbounds %struct.doublecomplex, ptr %30, i32 0, i32 0
  store double %5297, ptr %5298, align 8, !tbaa !11
  %5299 = load ptr, ptr %13, align 8, !tbaa !5
  %5300 = getelementptr inbounds %struct.doublecomplex, ptr %5299, i32 0, i32 0
  %5301 = load double, ptr %5300, align 8, !tbaa !11
  %5302 = getelementptr inbounds %struct.doublecomplex, ptr %31, i32 0, i32 1
  %5303 = load double, ptr %5302, align 8, !tbaa !14
  %5304 = load ptr, ptr %13, align 8, !tbaa !5
  %5305 = getelementptr inbounds %struct.doublecomplex, ptr %5304, i32 0, i32 1
  %5306 = load double, ptr %5305, align 8, !tbaa !14
  %5307 = getelementptr inbounds %struct.doublecomplex, ptr %31, i32 0, i32 0
  %5308 = load double, ptr %5307, align 8, !tbaa !11
  %5309 = fmul double %5306, %5308
  %5310 = call double @llvm.fmuladd.f64(double %5301, double %5303, double %5309)
  %5311 = getelementptr inbounds %struct.doublecomplex, ptr %30, i32 0, i32 1
  store double %5310, ptr %5311, align 8, !tbaa !14
  %5312 = getelementptr inbounds %struct.doublecomplex, ptr %30, i32 0, i32 0
  %5313 = load double, ptr %5312, align 8, !tbaa !11
  %5314 = getelementptr inbounds %struct.doublecomplex, ptr %54, i32 0, i32 0
  store double %5313, ptr %5314, align 8, !tbaa !11
  %5315 = getelementptr inbounds %struct.doublecomplex, ptr %30, i32 0, i32 1
  %5316 = load double, ptr %5315, align 8, !tbaa !14
  %5317 = getelementptr inbounds %struct.doublecomplex, ptr %54, i32 0, i32 1
  store double %5316, ptr %5317, align 8, !tbaa !14
  %5318 = load ptr, ptr %12, align 8, !tbaa !5
  %5319 = getelementptr inbounds %struct.doublecomplex, ptr %5318, i64 6
  %5320 = call { double, double } @Cd(ptr noundef %5319)
  %5321 = extractvalue { double, double } %5320, 0
  %5322 = extractvalue { double, double } %5320, 1
  %5323 = fneg double %5322
  %5324 = call ptr @_pCd(ptr noundef %30)
  %5325 = getelementptr inbounds { double, double }, ptr %5324, i32 0, i32 0
  %5326 = getelementptr inbounds { double, double }, ptr %5324, i32 0, i32 1
  store double %5321, ptr %5325, align 8
  store double %5323, ptr %5326, align 8
  %5327 = getelementptr inbounds %struct.doublecomplex, ptr %30, i32 0, i32 0
  %5328 = load double, ptr %5327, align 8, !tbaa !11
  %5329 = getelementptr inbounds %struct.doublecomplex, ptr %64, i32 0, i32 0
  store double %5328, ptr %5329, align 8, !tbaa !11
  %5330 = getelementptr inbounds %struct.doublecomplex, ptr %30, i32 0, i32 1
  %5331 = load double, ptr %5330, align 8, !tbaa !14
  %5332 = getelementptr inbounds %struct.doublecomplex, ptr %64, i32 0, i32 1
  store double %5331, ptr %5332, align 8, !tbaa !14
  %5333 = call { double, double } @Cd(ptr noundef %64)
  %5334 = extractvalue { double, double } %5333, 0
  %5335 = extractvalue { double, double } %5333, 1
  %5336 = fneg double %5335
  %5337 = call ptr @_pCd(ptr noundef %31)
  %5338 = getelementptr inbounds { double, double }, ptr %5337, i32 0, i32 0
  %5339 = getelementptr inbounds { double, double }, ptr %5337, i32 0, i32 1
  store double %5334, ptr %5338, align 8
  store double %5336, ptr %5339, align 8
  %5340 = load ptr, ptr %13, align 8, !tbaa !5
  %5341 = getelementptr inbounds %struct.doublecomplex, ptr %5340, i32 0, i32 0
  %5342 = load double, ptr %5341, align 8, !tbaa !11
  %5343 = getelementptr inbounds %struct.doublecomplex, ptr %31, i32 0, i32 0
  %5344 = load double, ptr %5343, align 8, !tbaa !11
  %5345 = load ptr, ptr %13, align 8, !tbaa !5
  %5346 = getelementptr inbounds %struct.doublecomplex, ptr %5345, i32 0, i32 1
  %5347 = load double, ptr %5346, align 8, !tbaa !14
  %5348 = getelementptr inbounds %struct.doublecomplex, ptr %31, i32 0, i32 1
  %5349 = load double, ptr %5348, align 8, !tbaa !14
  %5350 = fmul double %5347, %5349
  %5351 = fneg double %5350
  %5352 = call double @llvm.fmuladd.f64(double %5342, double %5344, double %5351)
  %5353 = getelementptr inbounds %struct.doublecomplex, ptr %30, i32 0, i32 0
  store double %5352, ptr %5353, align 8, !tbaa !11
  %5354 = load ptr, ptr %13, align 8, !tbaa !5
  %5355 = getelementptr inbounds %struct.doublecomplex, ptr %5354, i32 0, i32 0
  %5356 = load double, ptr %5355, align 8, !tbaa !11
  %5357 = getelementptr inbounds %struct.doublecomplex, ptr %31, i32 0, i32 1
  %5358 = load double, ptr %5357, align 8, !tbaa !14
  %5359 = load ptr, ptr %13, align 8, !tbaa !5
  %5360 = getelementptr inbounds %struct.doublecomplex, ptr %5359, i32 0, i32 1
  %5361 = load double, ptr %5360, align 8, !tbaa !14
  %5362 = getelementptr inbounds %struct.doublecomplex, ptr %31, i32 0, i32 0
  %5363 = load double, ptr %5362, align 8, !tbaa !11
  %5364 = fmul double %5361, %5363
  %5365 = call double @llvm.fmuladd.f64(double %5356, double %5358, double %5364)
  %5366 = getelementptr inbounds %struct.doublecomplex, ptr %30, i32 0, i32 1
  store double %5365, ptr %5366, align 8, !tbaa !14
  %5367 = getelementptr inbounds %struct.doublecomplex, ptr %30, i32 0, i32 0
  %5368 = load double, ptr %5367, align 8, !tbaa !11
  %5369 = getelementptr inbounds %struct.doublecomplex, ptr %55, i32 0, i32 0
  store double %5368, ptr %5369, align 8, !tbaa !11
  %5370 = getelementptr inbounds %struct.doublecomplex, ptr %30, i32 0, i32 1
  %5371 = load double, ptr %5370, align 8, !tbaa !14
  %5372 = getelementptr inbounds %struct.doublecomplex, ptr %55, i32 0, i32 1
  store double %5371, ptr %5372, align 8, !tbaa !14
  %5373 = load ptr, ptr %12, align 8, !tbaa !5
  %5374 = getelementptr inbounds %struct.doublecomplex, ptr %5373, i64 7
  %5375 = call { double, double } @Cd(ptr noundef %5374)
  %5376 = extractvalue { double, double } %5375, 0
  %5377 = extractvalue { double, double } %5375, 1
  %5378 = fneg double %5377
  %5379 = call ptr @_pCd(ptr noundef %30)
  %5380 = getelementptr inbounds { double, double }, ptr %5379, i32 0, i32 0
  %5381 = getelementptr inbounds { double, double }, ptr %5379, i32 0, i32 1
  store double %5376, ptr %5380, align 8
  store double %5378, ptr %5381, align 8
  %5382 = getelementptr inbounds %struct.doublecomplex, ptr %30, i32 0, i32 0
  %5383 = load double, ptr %5382, align 8, !tbaa !11
  %5384 = getelementptr inbounds %struct.doublecomplex, ptr %65, i32 0, i32 0
  store double %5383, ptr %5384, align 8, !tbaa !11
  %5385 = getelementptr inbounds %struct.doublecomplex, ptr %30, i32 0, i32 1
  %5386 = load double, ptr %5385, align 8, !tbaa !14
  %5387 = getelementptr inbounds %struct.doublecomplex, ptr %65, i32 0, i32 1
  store double %5386, ptr %5387, align 8, !tbaa !14
  %5388 = call { double, double } @Cd(ptr noundef %65)
  %5389 = extractvalue { double, double } %5388, 0
  %5390 = extractvalue { double, double } %5388, 1
  %5391 = fneg double %5390
  %5392 = call ptr @_pCd(ptr noundef %31)
  %5393 = getelementptr inbounds { double, double }, ptr %5392, i32 0, i32 0
  %5394 = getelementptr inbounds { double, double }, ptr %5392, i32 0, i32 1
  store double %5389, ptr %5393, align 8
  store double %5391, ptr %5394, align 8
  %5395 = load ptr, ptr %13, align 8, !tbaa !5
  %5396 = getelementptr inbounds %struct.doublecomplex, ptr %5395, i32 0, i32 0
  %5397 = load double, ptr %5396, align 8, !tbaa !11
  %5398 = getelementptr inbounds %struct.doublecomplex, ptr %31, i32 0, i32 0
  %5399 = load double, ptr %5398, align 8, !tbaa !11
  %5400 = load ptr, ptr %13, align 8, !tbaa !5
  %5401 = getelementptr inbounds %struct.doublecomplex, ptr %5400, i32 0, i32 1
  %5402 = load double, ptr %5401, align 8, !tbaa !14
  %5403 = getelementptr inbounds %struct.doublecomplex, ptr %31, i32 0, i32 1
  %5404 = load double, ptr %5403, align 8, !tbaa !14
  %5405 = fmul double %5402, %5404
  %5406 = fneg double %5405
  %5407 = call double @llvm.fmuladd.f64(double %5397, double %5399, double %5406)
  %5408 = getelementptr inbounds %struct.doublecomplex, ptr %30, i32 0, i32 0
  store double %5407, ptr %5408, align 8, !tbaa !11
  %5409 = load ptr, ptr %13, align 8, !tbaa !5
  %5410 = getelementptr inbounds %struct.doublecomplex, ptr %5409, i32 0, i32 0
  %5411 = load double, ptr %5410, align 8, !tbaa !11
  %5412 = getelementptr inbounds %struct.doublecomplex, ptr %31, i32 0, i32 1
  %5413 = load double, ptr %5412, align 8, !tbaa !14
  %5414 = load ptr, ptr %13, align 8, !tbaa !5
  %5415 = getelementptr inbounds %struct.doublecomplex, ptr %5414, i32 0, i32 1
  %5416 = load double, ptr %5415, align 8, !tbaa !14
  %5417 = getelementptr inbounds %struct.doublecomplex, ptr %31, i32 0, i32 0
  %5418 = load double, ptr %5417, align 8, !tbaa !11
  %5419 = fmul double %5416, %5418
  %5420 = call double @llvm.fmuladd.f64(double %5411, double %5413, double %5419)
  %5421 = getelementptr inbounds %struct.doublecomplex, ptr %30, i32 0, i32 1
  store double %5420, ptr %5421, align 8, !tbaa !14
  %5422 = getelementptr inbounds %struct.doublecomplex, ptr %30, i32 0, i32 0
  %5423 = load double, ptr %5422, align 8, !tbaa !11
  %5424 = getelementptr inbounds %struct.doublecomplex, ptr %56, i32 0, i32 0
  store double %5423, ptr %5424, align 8, !tbaa !11
  %5425 = getelementptr inbounds %struct.doublecomplex, ptr %30, i32 0, i32 1
  %5426 = load double, ptr %5425, align 8, !tbaa !14
  %5427 = getelementptr inbounds %struct.doublecomplex, ptr %56, i32 0, i32 1
  store double %5426, ptr %5427, align 8, !tbaa !14
  %5428 = load ptr, ptr %12, align 8, !tbaa !5
  %5429 = getelementptr inbounds %struct.doublecomplex, ptr %5428, i64 8
  %5430 = call { double, double } @Cd(ptr noundef %5429)
  %5431 = extractvalue { double, double } %5430, 0
  %5432 = extractvalue { double, double } %5430, 1
  %5433 = fneg double %5432
  %5434 = call ptr @_pCd(ptr noundef %30)
  %5435 = getelementptr inbounds { double, double }, ptr %5434, i32 0, i32 0
  %5436 = getelementptr inbounds { double, double }, ptr %5434, i32 0, i32 1
  store double %5431, ptr %5435, align 8
  store double %5433, ptr %5436, align 8
  %5437 = getelementptr inbounds %struct.doublecomplex, ptr %30, i32 0, i32 0
  %5438 = load double, ptr %5437, align 8, !tbaa !11
  %5439 = getelementptr inbounds %struct.doublecomplex, ptr %66, i32 0, i32 0
  store double %5438, ptr %5439, align 8, !tbaa !11
  %5440 = getelementptr inbounds %struct.doublecomplex, ptr %30, i32 0, i32 1
  %5441 = load double, ptr %5440, align 8, !tbaa !14
  %5442 = getelementptr inbounds %struct.doublecomplex, ptr %66, i32 0, i32 1
  store double %5441, ptr %5442, align 8, !tbaa !14
  %5443 = call { double, double } @Cd(ptr noundef %66)
  %5444 = extractvalue { double, double } %5443, 0
  %5445 = extractvalue { double, double } %5443, 1
  %5446 = fneg double %5445
  %5447 = call ptr @_pCd(ptr noundef %31)
  %5448 = getelementptr inbounds { double, double }, ptr %5447, i32 0, i32 0
  %5449 = getelementptr inbounds { double, double }, ptr %5447, i32 0, i32 1
  store double %5444, ptr %5448, align 8
  store double %5446, ptr %5449, align 8
  %5450 = load ptr, ptr %13, align 8, !tbaa !5
  %5451 = getelementptr inbounds %struct.doublecomplex, ptr %5450, i32 0, i32 0
  %5452 = load double, ptr %5451, align 8, !tbaa !11
  %5453 = getelementptr inbounds %struct.doublecomplex, ptr %31, i32 0, i32 0
  %5454 = load double, ptr %5453, align 8, !tbaa !11
  %5455 = load ptr, ptr %13, align 8, !tbaa !5
  %5456 = getelementptr inbounds %struct.doublecomplex, ptr %5455, i32 0, i32 1
  %5457 = load double, ptr %5456, align 8, !tbaa !14
  %5458 = getelementptr inbounds %struct.doublecomplex, ptr %31, i32 0, i32 1
  %5459 = load double, ptr %5458, align 8, !tbaa !14
  %5460 = fmul double %5457, %5459
  %5461 = fneg double %5460
  %5462 = call double @llvm.fmuladd.f64(double %5452, double %5454, double %5461)
  %5463 = getelementptr inbounds %struct.doublecomplex, ptr %30, i32 0, i32 0
  store double %5462, ptr %5463, align 8, !tbaa !11
  %5464 = load ptr, ptr %13, align 8, !tbaa !5
  %5465 = getelementptr inbounds %struct.doublecomplex, ptr %5464, i32 0, i32 0
  %5466 = load double, ptr %5465, align 8, !tbaa !11
  %5467 = getelementptr inbounds %struct.doublecomplex, ptr %31, i32 0, i32 1
  %5468 = load double, ptr %5467, align 8, !tbaa !14
  %5469 = load ptr, ptr %13, align 8, !tbaa !5
  %5470 = getelementptr inbounds %struct.doublecomplex, ptr %5469, i32 0, i32 1
  %5471 = load double, ptr %5470, align 8, !tbaa !14
  %5472 = getelementptr inbounds %struct.doublecomplex, ptr %31, i32 0, i32 0
  %5473 = load double, ptr %5472, align 8, !tbaa !11
  %5474 = fmul double %5471, %5473
  %5475 = call double @llvm.fmuladd.f64(double %5466, double %5468, double %5474)
  %5476 = getelementptr inbounds %struct.doublecomplex, ptr %30, i32 0, i32 1
  store double %5475, ptr %5476, align 8, !tbaa !14
  %5477 = getelementptr inbounds %struct.doublecomplex, ptr %30, i32 0, i32 0
  %5478 = load double, ptr %5477, align 8, !tbaa !11
  %5479 = getelementptr inbounds %struct.doublecomplex, ptr %57, i32 0, i32 0
  store double %5478, ptr %5479, align 8, !tbaa !11
  %5480 = getelementptr inbounds %struct.doublecomplex, ptr %30, i32 0, i32 1
  %5481 = load double, ptr %5480, align 8, !tbaa !14
  %5482 = getelementptr inbounds %struct.doublecomplex, ptr %57, i32 0, i32 1
  store double %5481, ptr %5482, align 8, !tbaa !14
  %5483 = load ptr, ptr %11, align 8, !tbaa !5
  %5484 = load i32, ptr %5483, align 4, !tbaa !9
  store i32 %5484, ptr %19, align 4, !tbaa !9
  store i32 1, ptr %49, align 4, !tbaa !9
  br label %5485

5485:                                             ; preds = %6444, %5042
  %5486 = load i32, ptr %49, align 4, !tbaa !9
  %5487 = load i32, ptr %19, align 4, !tbaa !9
  %5488 = icmp sle i32 %5486, %5487
  br i1 %5488, label %5489, label %6447

5489:                                             ; preds = %5485
  %5490 = load i32, ptr %49, align 4, !tbaa !9
  %5491 = load i32, ptr %17, align 4, !tbaa !9
  %5492 = mul nsw i32 %5490, %5491
  %5493 = add nsw i32 %5492, 1
  store i32 %5493, ptr %20, align 4, !tbaa !9
  %5494 = getelementptr inbounds %struct.doublecomplex, ptr %59, i32 0, i32 0
  %5495 = load double, ptr %5494, align 8, !tbaa !11
  %5496 = load ptr, ptr %14, align 8, !tbaa !5
  %5497 = load i32, ptr %20, align 4, !tbaa !9
  %5498 = sext i32 %5497 to i64
  %5499 = getelementptr inbounds %struct.doublecomplex, ptr %5496, i64 %5498
  %5500 = getelementptr inbounds %struct.doublecomplex, ptr %5499, i32 0, i32 0
  %5501 = load double, ptr %5500, align 8, !tbaa !11
  %5502 = getelementptr inbounds %struct.doublecomplex, ptr %59, i32 0, i32 1
  %5503 = load double, ptr %5502, align 8, !tbaa !14
  %5504 = load ptr, ptr %14, align 8, !tbaa !5
  %5505 = load i32, ptr %20, align 4, !tbaa !9
  %5506 = sext i32 %5505 to i64
  %5507 = getelementptr inbounds %struct.doublecomplex, ptr %5504, i64 %5506
  %5508 = getelementptr inbounds %struct.doublecomplex, ptr %5507, i32 0, i32 1
  %5509 = load double, ptr %5508, align 8, !tbaa !14
  %5510 = fmul double %5503, %5509
  %5511 = fneg double %5510
  %5512 = call double @llvm.fmuladd.f64(double %5495, double %5501, double %5511)
  %5513 = getelementptr inbounds %struct.doublecomplex, ptr %37, i32 0, i32 0
  store double %5512, ptr %5513, align 8, !tbaa !11
  %5514 = getelementptr inbounds %struct.doublecomplex, ptr %59, i32 0, i32 0
  %5515 = load double, ptr %5514, align 8, !tbaa !11
  %5516 = load ptr, ptr %14, align 8, !tbaa !5
  %5517 = load i32, ptr %20, align 4, !tbaa !9
  %5518 = sext i32 %5517 to i64
  %5519 = getelementptr inbounds %struct.doublecomplex, ptr %5516, i64 %5518
  %5520 = getelementptr inbounds %struct.doublecomplex, ptr %5519, i32 0, i32 1
  %5521 = load double, ptr %5520, align 8, !tbaa !14
  %5522 = getelementptr inbounds %struct.doublecomplex, ptr %59, i32 0, i32 1
  %5523 = load double, ptr %5522, align 8, !tbaa !14
  %5524 = load ptr, ptr %14, align 8, !tbaa !5
  %5525 = load i32, ptr %20, align 4, !tbaa !9
  %5526 = sext i32 %5525 to i64
  %5527 = getelementptr inbounds %struct.doublecomplex, ptr %5524, i64 %5526
  %5528 = getelementptr inbounds %struct.doublecomplex, ptr %5527, i32 0, i32 0
  %5529 = load double, ptr %5528, align 8, !tbaa !11
  %5530 = fmul double %5523, %5529
  %5531 = call double @llvm.fmuladd.f64(double %5515, double %5521, double %5530)
  %5532 = getelementptr inbounds %struct.doublecomplex, ptr %37, i32 0, i32 1
  store double %5531, ptr %5532, align 8, !tbaa !14
  %5533 = load i32, ptr %49, align 4, !tbaa !9
  %5534 = load i32, ptr %17, align 4, !tbaa !9
  %5535 = mul nsw i32 %5533, %5534
  %5536 = add nsw i32 %5535, 2
  store i32 %5536, ptr %21, align 4, !tbaa !9
  %5537 = getelementptr inbounds %struct.doublecomplex, ptr %60, i32 0, i32 0
  %5538 = load double, ptr %5537, align 8, !tbaa !11
  %5539 = load ptr, ptr %14, align 8, !tbaa !5
  %5540 = load i32, ptr %21, align 4, !tbaa !9
  %5541 = sext i32 %5540 to i64
  %5542 = getelementptr inbounds %struct.doublecomplex, ptr %5539, i64 %5541
  %5543 = getelementptr inbounds %struct.doublecomplex, ptr %5542, i32 0, i32 0
  %5544 = load double, ptr %5543, align 8, !tbaa !11
  %5545 = getelementptr inbounds %struct.doublecomplex, ptr %60, i32 0, i32 1
  %5546 = load double, ptr %5545, align 8, !tbaa !14
  %5547 = load ptr, ptr %14, align 8, !tbaa !5
  %5548 = load i32, ptr %21, align 4, !tbaa !9
  %5549 = sext i32 %5548 to i64
  %5550 = getelementptr inbounds %struct.doublecomplex, ptr %5547, i64 %5549
  %5551 = getelementptr inbounds %struct.doublecomplex, ptr %5550, i32 0, i32 1
  %5552 = load double, ptr %5551, align 8, !tbaa !14
  %5553 = fmul double %5546, %5552
  %5554 = fneg double %5553
  %5555 = call double @llvm.fmuladd.f64(double %5538, double %5544, double %5554)
  %5556 = getelementptr inbounds %struct.doublecomplex, ptr %38, i32 0, i32 0
  store double %5555, ptr %5556, align 8, !tbaa !11
  %5557 = getelementptr inbounds %struct.doublecomplex, ptr %60, i32 0, i32 0
  %5558 = load double, ptr %5557, align 8, !tbaa !11
  %5559 = load ptr, ptr %14, align 8, !tbaa !5
  %5560 = load i32, ptr %21, align 4, !tbaa !9
  %5561 = sext i32 %5560 to i64
  %5562 = getelementptr inbounds %struct.doublecomplex, ptr %5559, i64 %5561
  %5563 = getelementptr inbounds %struct.doublecomplex, ptr %5562, i32 0, i32 1
  %5564 = load double, ptr %5563, align 8, !tbaa !14
  %5565 = getelementptr inbounds %struct.doublecomplex, ptr %60, i32 0, i32 1
  %5566 = load double, ptr %5565, align 8, !tbaa !14
  %5567 = load ptr, ptr %14, align 8, !tbaa !5
  %5568 = load i32, ptr %21, align 4, !tbaa !9
  %5569 = sext i32 %5568 to i64
  %5570 = getelementptr inbounds %struct.doublecomplex, ptr %5567, i64 %5569
  %5571 = getelementptr inbounds %struct.doublecomplex, ptr %5570, i32 0, i32 0
  %5572 = load double, ptr %5571, align 8, !tbaa !11
  %5573 = fmul double %5566, %5572
  %5574 = call double @llvm.fmuladd.f64(double %5558, double %5564, double %5573)
  %5575 = getelementptr inbounds %struct.doublecomplex, ptr %38, i32 0, i32 1
  store double %5574, ptr %5575, align 8, !tbaa !14
  %5576 = getelementptr inbounds %struct.doublecomplex, ptr %37, i32 0, i32 0
  %5577 = load double, ptr %5576, align 8, !tbaa !11
  %5578 = getelementptr inbounds %struct.doublecomplex, ptr %38, i32 0, i32 0
  %5579 = load double, ptr %5578, align 8, !tbaa !11
  %5580 = fadd double %5577, %5579
  %5581 = getelementptr inbounds %struct.doublecomplex, ptr %36, i32 0, i32 0
  store double %5580, ptr %5581, align 8, !tbaa !11
  %5582 = getelementptr inbounds %struct.doublecomplex, ptr %37, i32 0, i32 1
  %5583 = load double, ptr %5582, align 8, !tbaa !14
  %5584 = getelementptr inbounds %struct.doublecomplex, ptr %38, i32 0, i32 1
  %5585 = load double, ptr %5584, align 8, !tbaa !14
  %5586 = fadd double %5583, %5585
  %5587 = getelementptr inbounds %struct.doublecomplex, ptr %36, i32 0, i32 1
  store double %5586, ptr %5587, align 8, !tbaa !14
  %5588 = load i32, ptr %49, align 4, !tbaa !9
  %5589 = load i32, ptr %17, align 4, !tbaa !9
  %5590 = mul nsw i32 %5588, %5589
  %5591 = add nsw i32 %5590, 3
  store i32 %5591, ptr %22, align 4, !tbaa !9
  %5592 = getelementptr inbounds %struct.doublecomplex, ptr %61, i32 0, i32 0
  %5593 = load double, ptr %5592, align 8, !tbaa !11
  %5594 = load ptr, ptr %14, align 8, !tbaa !5
  %5595 = load i32, ptr %22, align 4, !tbaa !9
  %5596 = sext i32 %5595 to i64
  %5597 = getelementptr inbounds %struct.doublecomplex, ptr %5594, i64 %5596
  %5598 = getelementptr inbounds %struct.doublecomplex, ptr %5597, i32 0, i32 0
  %5599 = load double, ptr %5598, align 8, !tbaa !11
  %5600 = getelementptr inbounds %struct.doublecomplex, ptr %61, i32 0, i32 1
  %5601 = load double, ptr %5600, align 8, !tbaa !14
  %5602 = load ptr, ptr %14, align 8, !tbaa !5
  %5603 = load i32, ptr %22, align 4, !tbaa !9
  %5604 = sext i32 %5603 to i64
  %5605 = getelementptr inbounds %struct.doublecomplex, ptr %5602, i64 %5604
  %5606 = getelementptr inbounds %struct.doublecomplex, ptr %5605, i32 0, i32 1
  %5607 = load double, ptr %5606, align 8, !tbaa !14
  %5608 = fmul double %5601, %5607
  %5609 = fneg double %5608
  %5610 = call double @llvm.fmuladd.f64(double %5593, double %5599, double %5609)
  %5611 = getelementptr inbounds %struct.doublecomplex, ptr %39, i32 0, i32 0
  store double %5610, ptr %5611, align 8, !tbaa !11
  %5612 = getelementptr inbounds %struct.doublecomplex, ptr %61, i32 0, i32 0
  %5613 = load double, ptr %5612, align 8, !tbaa !11
  %5614 = load ptr, ptr %14, align 8, !tbaa !5
  %5615 = load i32, ptr %22, align 4, !tbaa !9
  %5616 = sext i32 %5615 to i64
  %5617 = getelementptr inbounds %struct.doublecomplex, ptr %5614, i64 %5616
  %5618 = getelementptr inbounds %struct.doublecomplex, ptr %5617, i32 0, i32 1
  %5619 = load double, ptr %5618, align 8, !tbaa !14
  %5620 = getelementptr inbounds %struct.doublecomplex, ptr %61, i32 0, i32 1
  %5621 = load double, ptr %5620, align 8, !tbaa !14
  %5622 = load ptr, ptr %14, align 8, !tbaa !5
  %5623 = load i32, ptr %22, align 4, !tbaa !9
  %5624 = sext i32 %5623 to i64
  %5625 = getelementptr inbounds %struct.doublecomplex, ptr %5622, i64 %5624
  %5626 = getelementptr inbounds %struct.doublecomplex, ptr %5625, i32 0, i32 0
  %5627 = load double, ptr %5626, align 8, !tbaa !11
  %5628 = fmul double %5621, %5627
  %5629 = call double @llvm.fmuladd.f64(double %5613, double %5619, double %5628)
  %5630 = getelementptr inbounds %struct.doublecomplex, ptr %39, i32 0, i32 1
  store double %5629, ptr %5630, align 8, !tbaa !14
  %5631 = getelementptr inbounds %struct.doublecomplex, ptr %36, i32 0, i32 0
  %5632 = load double, ptr %5631, align 8, !tbaa !11
  %5633 = getelementptr inbounds %struct.doublecomplex, ptr %39, i32 0, i32 0
  %5634 = load double, ptr %5633, align 8, !tbaa !11
  %5635 = fadd double %5632, %5634
  %5636 = getelementptr inbounds %struct.doublecomplex, ptr %35, i32 0, i32 0
  store double %5635, ptr %5636, align 8, !tbaa !11
  %5637 = getelementptr inbounds %struct.doublecomplex, ptr %36, i32 0, i32 1
  %5638 = load double, ptr %5637, align 8, !tbaa !14
  %5639 = getelementptr inbounds %struct.doublecomplex, ptr %39, i32 0, i32 1
  %5640 = load double, ptr %5639, align 8, !tbaa !14
  %5641 = fadd double %5638, %5640
  %5642 = getelementptr inbounds %struct.doublecomplex, ptr %35, i32 0, i32 1
  store double %5641, ptr %5642, align 8, !tbaa !14
  %5643 = load i32, ptr %49, align 4, !tbaa !9
  %5644 = load i32, ptr %17, align 4, !tbaa !9
  %5645 = mul nsw i32 %5643, %5644
  %5646 = add nsw i32 %5645, 4
  store i32 %5646, ptr %23, align 4, !tbaa !9
  %5647 = getelementptr inbounds %struct.doublecomplex, ptr %62, i32 0, i32 0
  %5648 = load double, ptr %5647, align 8, !tbaa !11
  %5649 = load ptr, ptr %14, align 8, !tbaa !5
  %5650 = load i32, ptr %23, align 4, !tbaa !9
  %5651 = sext i32 %5650 to i64
  %5652 = getelementptr inbounds %struct.doublecomplex, ptr %5649, i64 %5651
  %5653 = getelementptr inbounds %struct.doublecomplex, ptr %5652, i32 0, i32 0
  %5654 = load double, ptr %5653, align 8, !tbaa !11
  %5655 = getelementptr inbounds %struct.doublecomplex, ptr %62, i32 0, i32 1
  %5656 = load double, ptr %5655, align 8, !tbaa !14
  %5657 = load ptr, ptr %14, align 8, !tbaa !5
  %5658 = load i32, ptr %23, align 4, !tbaa !9
  %5659 = sext i32 %5658 to i64
  %5660 = getelementptr inbounds %struct.doublecomplex, ptr %5657, i64 %5659
  %5661 = getelementptr inbounds %struct.doublecomplex, ptr %5660, i32 0, i32 1
  %5662 = load double, ptr %5661, align 8, !tbaa !14
  %5663 = fmul double %5656, %5662
  %5664 = fneg double %5663
  %5665 = call double @llvm.fmuladd.f64(double %5648, double %5654, double %5664)
  %5666 = getelementptr inbounds %struct.doublecomplex, ptr %40, i32 0, i32 0
  store double %5665, ptr %5666, align 8, !tbaa !11
  %5667 = getelementptr inbounds %struct.doublecomplex, ptr %62, i32 0, i32 0
  %5668 = load double, ptr %5667, align 8, !tbaa !11
  %5669 = load ptr, ptr %14, align 8, !tbaa !5
  %5670 = load i32, ptr %23, align 4, !tbaa !9
  %5671 = sext i32 %5670 to i64
  %5672 = getelementptr inbounds %struct.doublecomplex, ptr %5669, i64 %5671
  %5673 = getelementptr inbounds %struct.doublecomplex, ptr %5672, i32 0, i32 1
  %5674 = load double, ptr %5673, align 8, !tbaa !14
  %5675 = getelementptr inbounds %struct.doublecomplex, ptr %62, i32 0, i32 1
  %5676 = load double, ptr %5675, align 8, !tbaa !14
  %5677 = load ptr, ptr %14, align 8, !tbaa !5
  %5678 = load i32, ptr %23, align 4, !tbaa !9
  %5679 = sext i32 %5678 to i64
  %5680 = getelementptr inbounds %struct.doublecomplex, ptr %5677, i64 %5679
  %5681 = getelementptr inbounds %struct.doublecomplex, ptr %5680, i32 0, i32 0
  %5682 = load double, ptr %5681, align 8, !tbaa !11
  %5683 = fmul double %5676, %5682
  %5684 = call double @llvm.fmuladd.f64(double %5668, double %5674, double %5683)
  %5685 = getelementptr inbounds %struct.doublecomplex, ptr %40, i32 0, i32 1
  store double %5684, ptr %5685, align 8, !tbaa !14
  %5686 = getelementptr inbounds %struct.doublecomplex, ptr %35, i32 0, i32 0
  %5687 = load double, ptr %5686, align 8, !tbaa !11
  %5688 = getelementptr inbounds %struct.doublecomplex, ptr %40, i32 0, i32 0
  %5689 = load double, ptr %5688, align 8, !tbaa !11
  %5690 = fadd double %5687, %5689
  %5691 = getelementptr inbounds %struct.doublecomplex, ptr %34, i32 0, i32 0
  store double %5690, ptr %5691, align 8, !tbaa !11
  %5692 = getelementptr inbounds %struct.doublecomplex, ptr %35, i32 0, i32 1
  %5693 = load double, ptr %5692, align 8, !tbaa !14
  %5694 = getelementptr inbounds %struct.doublecomplex, ptr %40, i32 0, i32 1
  %5695 = load double, ptr %5694, align 8, !tbaa !14
  %5696 = fadd double %5693, %5695
  %5697 = getelementptr inbounds %struct.doublecomplex, ptr %34, i32 0, i32 1
  store double %5696, ptr %5697, align 8, !tbaa !14
  %5698 = load i32, ptr %49, align 4, !tbaa !9
  %5699 = load i32, ptr %17, align 4, !tbaa !9
  %5700 = mul nsw i32 %5698, %5699
  %5701 = add nsw i32 %5700, 5
  store i32 %5701, ptr %24, align 4, !tbaa !9
  %5702 = getelementptr inbounds %struct.doublecomplex, ptr %63, i32 0, i32 0
  %5703 = load double, ptr %5702, align 8, !tbaa !11
  %5704 = load ptr, ptr %14, align 8, !tbaa !5
  %5705 = load i32, ptr %24, align 4, !tbaa !9
  %5706 = sext i32 %5705 to i64
  %5707 = getelementptr inbounds %struct.doublecomplex, ptr %5704, i64 %5706
  %5708 = getelementptr inbounds %struct.doublecomplex, ptr %5707, i32 0, i32 0
  %5709 = load double, ptr %5708, align 8, !tbaa !11
  %5710 = getelementptr inbounds %struct.doublecomplex, ptr %63, i32 0, i32 1
  %5711 = load double, ptr %5710, align 8, !tbaa !14
  %5712 = load ptr, ptr %14, align 8, !tbaa !5
  %5713 = load i32, ptr %24, align 4, !tbaa !9
  %5714 = sext i32 %5713 to i64
  %5715 = getelementptr inbounds %struct.doublecomplex, ptr %5712, i64 %5714
  %5716 = getelementptr inbounds %struct.doublecomplex, ptr %5715, i32 0, i32 1
  %5717 = load double, ptr %5716, align 8, !tbaa !14
  %5718 = fmul double %5711, %5717
  %5719 = fneg double %5718
  %5720 = call double @llvm.fmuladd.f64(double %5703, double %5709, double %5719)
  %5721 = getelementptr inbounds %struct.doublecomplex, ptr %41, i32 0, i32 0
  store double %5720, ptr %5721, align 8, !tbaa !11
  %5722 = getelementptr inbounds %struct.doublecomplex, ptr %63, i32 0, i32 0
  %5723 = load double, ptr %5722, align 8, !tbaa !11
  %5724 = load ptr, ptr %14, align 8, !tbaa !5
  %5725 = load i32, ptr %24, align 4, !tbaa !9
  %5726 = sext i32 %5725 to i64
  %5727 = getelementptr inbounds %struct.doublecomplex, ptr %5724, i64 %5726
  %5728 = getelementptr inbounds %struct.doublecomplex, ptr %5727, i32 0, i32 1
  %5729 = load double, ptr %5728, align 8, !tbaa !14
  %5730 = getelementptr inbounds %struct.doublecomplex, ptr %63, i32 0, i32 1
  %5731 = load double, ptr %5730, align 8, !tbaa !14
  %5732 = load ptr, ptr %14, align 8, !tbaa !5
  %5733 = load i32, ptr %24, align 4, !tbaa !9
  %5734 = sext i32 %5733 to i64
  %5735 = getelementptr inbounds %struct.doublecomplex, ptr %5732, i64 %5734
  %5736 = getelementptr inbounds %struct.doublecomplex, ptr %5735, i32 0, i32 0
  %5737 = load double, ptr %5736, align 8, !tbaa !11
  %5738 = fmul double %5731, %5737
  %5739 = call double @llvm.fmuladd.f64(double %5723, double %5729, double %5738)
  %5740 = getelementptr inbounds %struct.doublecomplex, ptr %41, i32 0, i32 1
  store double %5739, ptr %5740, align 8, !tbaa !14
  %5741 = getelementptr inbounds %struct.doublecomplex, ptr %34, i32 0, i32 0
  %5742 = load double, ptr %5741, align 8, !tbaa !11
  %5743 = getelementptr inbounds %struct.doublecomplex, ptr %41, i32 0, i32 0
  %5744 = load double, ptr %5743, align 8, !tbaa !11
  %5745 = fadd double %5742, %5744
  %5746 = getelementptr inbounds %struct.doublecomplex, ptr %33, i32 0, i32 0
  store double %5745, ptr %5746, align 8, !tbaa !11
  %5747 = getelementptr inbounds %struct.doublecomplex, ptr %34, i32 0, i32 1
  %5748 = load double, ptr %5747, align 8, !tbaa !14
  %5749 = getelementptr inbounds %struct.doublecomplex, ptr %41, i32 0, i32 1
  %5750 = load double, ptr %5749, align 8, !tbaa !14
  %5751 = fadd double %5748, %5750
  %5752 = getelementptr inbounds %struct.doublecomplex, ptr %33, i32 0, i32 1
  store double %5751, ptr %5752, align 8, !tbaa !14
  %5753 = load i32, ptr %49, align 4, !tbaa !9
  %5754 = load i32, ptr %17, align 4, !tbaa !9
  %5755 = mul nsw i32 %5753, %5754
  %5756 = add nsw i32 %5755, 6
  store i32 %5756, ptr %25, align 4, !tbaa !9
  %5757 = getelementptr inbounds %struct.doublecomplex, ptr %64, i32 0, i32 0
  %5758 = load double, ptr %5757, align 8, !tbaa !11
  %5759 = load ptr, ptr %14, align 8, !tbaa !5
  %5760 = load i32, ptr %25, align 4, !tbaa !9
  %5761 = sext i32 %5760 to i64
  %5762 = getelementptr inbounds %struct.doublecomplex, ptr %5759, i64 %5761
  %5763 = getelementptr inbounds %struct.doublecomplex, ptr %5762, i32 0, i32 0
  %5764 = load double, ptr %5763, align 8, !tbaa !11
  %5765 = getelementptr inbounds %struct.doublecomplex, ptr %64, i32 0, i32 1
  %5766 = load double, ptr %5765, align 8, !tbaa !14
  %5767 = load ptr, ptr %14, align 8, !tbaa !5
  %5768 = load i32, ptr %25, align 4, !tbaa !9
  %5769 = sext i32 %5768 to i64
  %5770 = getelementptr inbounds %struct.doublecomplex, ptr %5767, i64 %5769
  %5771 = getelementptr inbounds %struct.doublecomplex, ptr %5770, i32 0, i32 1
  %5772 = load double, ptr %5771, align 8, !tbaa !14
  %5773 = fmul double %5766, %5772
  %5774 = fneg double %5773
  %5775 = call double @llvm.fmuladd.f64(double %5758, double %5764, double %5774)
  %5776 = getelementptr inbounds %struct.doublecomplex, ptr %42, i32 0, i32 0
  store double %5775, ptr %5776, align 8, !tbaa !11
  %5777 = getelementptr inbounds %struct.doublecomplex, ptr %64, i32 0, i32 0
  %5778 = load double, ptr %5777, align 8, !tbaa !11
  %5779 = load ptr, ptr %14, align 8, !tbaa !5
  %5780 = load i32, ptr %25, align 4, !tbaa !9
  %5781 = sext i32 %5780 to i64
  %5782 = getelementptr inbounds %struct.doublecomplex, ptr %5779, i64 %5781
  %5783 = getelementptr inbounds %struct.doublecomplex, ptr %5782, i32 0, i32 1
  %5784 = load double, ptr %5783, align 8, !tbaa !14
  %5785 = getelementptr inbounds %struct.doublecomplex, ptr %64, i32 0, i32 1
  %5786 = load double, ptr %5785, align 8, !tbaa !14
  %5787 = load ptr, ptr %14, align 8, !tbaa !5
  %5788 = load i32, ptr %25, align 4, !tbaa !9
  %5789 = sext i32 %5788 to i64
  %5790 = getelementptr inbounds %struct.doublecomplex, ptr %5787, i64 %5789
  %5791 = getelementptr inbounds %struct.doublecomplex, ptr %5790, i32 0, i32 0
  %5792 = load double, ptr %5791, align 8, !tbaa !11
  %5793 = fmul double %5786, %5792
  %5794 = call double @llvm.fmuladd.f64(double %5778, double %5784, double %5793)
  %5795 = getelementptr inbounds %struct.doublecomplex, ptr %42, i32 0, i32 1
  store double %5794, ptr %5795, align 8, !tbaa !14
  %5796 = getelementptr inbounds %struct.doublecomplex, ptr %33, i32 0, i32 0
  %5797 = load double, ptr %5796, align 8, !tbaa !11
  %5798 = getelementptr inbounds %struct.doublecomplex, ptr %42, i32 0, i32 0
  %5799 = load double, ptr %5798, align 8, !tbaa !11
  %5800 = fadd double %5797, %5799
  %5801 = getelementptr inbounds %struct.doublecomplex, ptr %32, i32 0, i32 0
  store double %5800, ptr %5801, align 8, !tbaa !11
  %5802 = getelementptr inbounds %struct.doublecomplex, ptr %33, i32 0, i32 1
  %5803 = load double, ptr %5802, align 8, !tbaa !14
  %5804 = getelementptr inbounds %struct.doublecomplex, ptr %42, i32 0, i32 1
  %5805 = load double, ptr %5804, align 8, !tbaa !14
  %5806 = fadd double %5803, %5805
  %5807 = getelementptr inbounds %struct.doublecomplex, ptr %32, i32 0, i32 1
  store double %5806, ptr %5807, align 8, !tbaa !14
  %5808 = load i32, ptr %49, align 4, !tbaa !9
  %5809 = load i32, ptr %17, align 4, !tbaa !9
  %5810 = mul nsw i32 %5808, %5809
  %5811 = add nsw i32 %5810, 7
  store i32 %5811, ptr %26, align 4, !tbaa !9
  %5812 = getelementptr inbounds %struct.doublecomplex, ptr %65, i32 0, i32 0
  %5813 = load double, ptr %5812, align 8, !tbaa !11
  %5814 = load ptr, ptr %14, align 8, !tbaa !5
  %5815 = load i32, ptr %26, align 4, !tbaa !9
  %5816 = sext i32 %5815 to i64
  %5817 = getelementptr inbounds %struct.doublecomplex, ptr %5814, i64 %5816
  %5818 = getelementptr inbounds %struct.doublecomplex, ptr %5817, i32 0, i32 0
  %5819 = load double, ptr %5818, align 8, !tbaa !11
  %5820 = getelementptr inbounds %struct.doublecomplex, ptr %65, i32 0, i32 1
  %5821 = load double, ptr %5820, align 8, !tbaa !14
  %5822 = load ptr, ptr %14, align 8, !tbaa !5
  %5823 = load i32, ptr %26, align 4, !tbaa !9
  %5824 = sext i32 %5823 to i64
  %5825 = getelementptr inbounds %struct.doublecomplex, ptr %5822, i64 %5824
  %5826 = getelementptr inbounds %struct.doublecomplex, ptr %5825, i32 0, i32 1
  %5827 = load double, ptr %5826, align 8, !tbaa !14
  %5828 = fmul double %5821, %5827
  %5829 = fneg double %5828
  %5830 = call double @llvm.fmuladd.f64(double %5813, double %5819, double %5829)
  %5831 = getelementptr inbounds %struct.doublecomplex, ptr %43, i32 0, i32 0
  store double %5830, ptr %5831, align 8, !tbaa !11
  %5832 = getelementptr inbounds %struct.doublecomplex, ptr %65, i32 0, i32 0
  %5833 = load double, ptr %5832, align 8, !tbaa !11
  %5834 = load ptr, ptr %14, align 8, !tbaa !5
  %5835 = load i32, ptr %26, align 4, !tbaa !9
  %5836 = sext i32 %5835 to i64
  %5837 = getelementptr inbounds %struct.doublecomplex, ptr %5834, i64 %5836
  %5838 = getelementptr inbounds %struct.doublecomplex, ptr %5837, i32 0, i32 1
  %5839 = load double, ptr %5838, align 8, !tbaa !14
  %5840 = getelementptr inbounds %struct.doublecomplex, ptr %65, i32 0, i32 1
  %5841 = load double, ptr %5840, align 8, !tbaa !14
  %5842 = load ptr, ptr %14, align 8, !tbaa !5
  %5843 = load i32, ptr %26, align 4, !tbaa !9
  %5844 = sext i32 %5843 to i64
  %5845 = getelementptr inbounds %struct.doublecomplex, ptr %5842, i64 %5844
  %5846 = getelementptr inbounds %struct.doublecomplex, ptr %5845, i32 0, i32 0
  %5847 = load double, ptr %5846, align 8, !tbaa !11
  %5848 = fmul double %5841, %5847
  %5849 = call double @llvm.fmuladd.f64(double %5833, double %5839, double %5848)
  %5850 = getelementptr inbounds %struct.doublecomplex, ptr %43, i32 0, i32 1
  store double %5849, ptr %5850, align 8, !tbaa !14
  %5851 = getelementptr inbounds %struct.doublecomplex, ptr %32, i32 0, i32 0
  %5852 = load double, ptr %5851, align 8, !tbaa !11
  %5853 = getelementptr inbounds %struct.doublecomplex, ptr %43, i32 0, i32 0
  %5854 = load double, ptr %5853, align 8, !tbaa !11
  %5855 = fadd double %5852, %5854
  %5856 = getelementptr inbounds %struct.doublecomplex, ptr %31, i32 0, i32 0
  store double %5855, ptr %5856, align 8, !tbaa !11
  %5857 = getelementptr inbounds %struct.doublecomplex, ptr %32, i32 0, i32 1
  %5858 = load double, ptr %5857, align 8, !tbaa !14
  %5859 = getelementptr inbounds %struct.doublecomplex, ptr %43, i32 0, i32 1
  %5860 = load double, ptr %5859, align 8, !tbaa !14
  %5861 = fadd double %5858, %5860
  %5862 = getelementptr inbounds %struct.doublecomplex, ptr %31, i32 0, i32 1
  store double %5861, ptr %5862, align 8, !tbaa !14
  %5863 = load i32, ptr %49, align 4, !tbaa !9
  %5864 = load i32, ptr %17, align 4, !tbaa !9
  %5865 = mul nsw i32 %5863, %5864
  %5866 = add nsw i32 %5865, 8
  store i32 %5866, ptr %27, align 4, !tbaa !9
  %5867 = getelementptr inbounds %struct.doublecomplex, ptr %66, i32 0, i32 0
  %5868 = load double, ptr %5867, align 8, !tbaa !11
  %5869 = load ptr, ptr %14, align 8, !tbaa !5
  %5870 = load i32, ptr %27, align 4, !tbaa !9
  %5871 = sext i32 %5870 to i64
  %5872 = getelementptr inbounds %struct.doublecomplex, ptr %5869, i64 %5871
  %5873 = getelementptr inbounds %struct.doublecomplex, ptr %5872, i32 0, i32 0
  %5874 = load double, ptr %5873, align 8, !tbaa !11
  %5875 = getelementptr inbounds %struct.doublecomplex, ptr %66, i32 0, i32 1
  %5876 = load double, ptr %5875, align 8, !tbaa !14
  %5877 = load ptr, ptr %14, align 8, !tbaa !5
  %5878 = load i32, ptr %27, align 4, !tbaa !9
  %5879 = sext i32 %5878 to i64
  %5880 = getelementptr inbounds %struct.doublecomplex, ptr %5877, i64 %5879
  %5881 = getelementptr inbounds %struct.doublecomplex, ptr %5880, i32 0, i32 1
  %5882 = load double, ptr %5881, align 8, !tbaa !14
  %5883 = fmul double %5876, %5882
  %5884 = fneg double %5883
  %5885 = call double @llvm.fmuladd.f64(double %5868, double %5874, double %5884)
  %5886 = getelementptr inbounds %struct.doublecomplex, ptr %44, i32 0, i32 0
  store double %5885, ptr %5886, align 8, !tbaa !11
  %5887 = getelementptr inbounds %struct.doublecomplex, ptr %66, i32 0, i32 0
  %5888 = load double, ptr %5887, align 8, !tbaa !11
  %5889 = load ptr, ptr %14, align 8, !tbaa !5
  %5890 = load i32, ptr %27, align 4, !tbaa !9
  %5891 = sext i32 %5890 to i64
  %5892 = getelementptr inbounds %struct.doublecomplex, ptr %5889, i64 %5891
  %5893 = getelementptr inbounds %struct.doublecomplex, ptr %5892, i32 0, i32 1
  %5894 = load double, ptr %5893, align 8, !tbaa !14
  %5895 = getelementptr inbounds %struct.doublecomplex, ptr %66, i32 0, i32 1
  %5896 = load double, ptr %5895, align 8, !tbaa !14
  %5897 = load ptr, ptr %14, align 8, !tbaa !5
  %5898 = load i32, ptr %27, align 4, !tbaa !9
  %5899 = sext i32 %5898 to i64
  %5900 = getelementptr inbounds %struct.doublecomplex, ptr %5897, i64 %5899
  %5901 = getelementptr inbounds %struct.doublecomplex, ptr %5900, i32 0, i32 0
  %5902 = load double, ptr %5901, align 8, !tbaa !11
  %5903 = fmul double %5896, %5902
  %5904 = call double @llvm.fmuladd.f64(double %5888, double %5894, double %5903)
  %5905 = getelementptr inbounds %struct.doublecomplex, ptr %44, i32 0, i32 1
  store double %5904, ptr %5905, align 8, !tbaa !14
  %5906 = getelementptr inbounds %struct.doublecomplex, ptr %31, i32 0, i32 0
  %5907 = load double, ptr %5906, align 8, !tbaa !11
  %5908 = getelementptr inbounds %struct.doublecomplex, ptr %44, i32 0, i32 0
  %5909 = load double, ptr %5908, align 8, !tbaa !11
  %5910 = fadd double %5907, %5909
  %5911 = getelementptr inbounds %struct.doublecomplex, ptr %30, i32 0, i32 0
  store double %5910, ptr %5911, align 8, !tbaa !11
  %5912 = getelementptr inbounds %struct.doublecomplex, ptr %31, i32 0, i32 1
  %5913 = load double, ptr %5912, align 8, !tbaa !14
  %5914 = getelementptr inbounds %struct.doublecomplex, ptr %44, i32 0, i32 1
  %5915 = load double, ptr %5914, align 8, !tbaa !14
  %5916 = fadd double %5913, %5915
  %5917 = getelementptr inbounds %struct.doublecomplex, ptr %30, i32 0, i32 1
  store double %5916, ptr %5917, align 8, !tbaa !14
  %5918 = getelementptr inbounds %struct.doublecomplex, ptr %30, i32 0, i32 0
  %5919 = load double, ptr %5918, align 8, !tbaa !11
  %5920 = getelementptr inbounds %struct.doublecomplex, ptr %70, i32 0, i32 0
  store double %5919, ptr %5920, align 8, !tbaa !11
  %5921 = getelementptr inbounds %struct.doublecomplex, ptr %30, i32 0, i32 1
  %5922 = load double, ptr %5921, align 8, !tbaa !14
  %5923 = getelementptr inbounds %struct.doublecomplex, ptr %70, i32 0, i32 1
  store double %5922, ptr %5923, align 8, !tbaa !14
  %5924 = load i32, ptr %49, align 4, !tbaa !9
  %5925 = load i32, ptr %17, align 4, !tbaa !9
  %5926 = mul nsw i32 %5924, %5925
  %5927 = add nsw i32 %5926, 1
  store i32 %5927, ptr %20, align 4, !tbaa !9
  %5928 = load i32, ptr %49, align 4, !tbaa !9
  %5929 = load i32, ptr %17, align 4, !tbaa !9
  %5930 = mul nsw i32 %5928, %5929
  %5931 = add nsw i32 %5930, 1
  store i32 %5931, ptr %21, align 4, !tbaa !9
  %5932 = getelementptr inbounds %struct.doublecomplex, ptr %70, i32 0, i32 0
  %5933 = load double, ptr %5932, align 8, !tbaa !11
  %5934 = getelementptr inbounds %struct.doublecomplex, ptr %50, i32 0, i32 0
  %5935 = load double, ptr %5934, align 8, !tbaa !11
  %5936 = getelementptr inbounds %struct.doublecomplex, ptr %70, i32 0, i32 1
  %5937 = load double, ptr %5936, align 8, !tbaa !14
  %5938 = getelementptr inbounds %struct.doublecomplex, ptr %50, i32 0, i32 1
  %5939 = load double, ptr %5938, align 8, !tbaa !14
  %5940 = fmul double %5937, %5939
  %5941 = fneg double %5940
  %5942 = call double @llvm.fmuladd.f64(double %5933, double %5935, double %5941)
  %5943 = getelementptr inbounds %struct.doublecomplex, ptr %31, i32 0, i32 0
  store double %5942, ptr %5943, align 8, !tbaa !11
  %5944 = getelementptr inbounds %struct.doublecomplex, ptr %70, i32 0, i32 0
  %5945 = load double, ptr %5944, align 8, !tbaa !11
  %5946 = getelementptr inbounds %struct.doublecomplex, ptr %50, i32 0, i32 1
  %5947 = load double, ptr %5946, align 8, !tbaa !14
  %5948 = getelementptr inbounds %struct.doublecomplex, ptr %70, i32 0, i32 1
  %5949 = load double, ptr %5948, align 8, !tbaa !14
  %5950 = getelementptr inbounds %struct.doublecomplex, ptr %50, i32 0, i32 0
  %5951 = load double, ptr %5950, align 8, !tbaa !11
  %5952 = fmul double %5949, %5951
  %5953 = call double @llvm.fmuladd.f64(double %5945, double %5947, double %5952)
  %5954 = getelementptr inbounds %struct.doublecomplex, ptr %31, i32 0, i32 1
  store double %5953, ptr %5954, align 8, !tbaa !14
  %5955 = load ptr, ptr %14, align 8, !tbaa !5
  %5956 = load i32, ptr %21, align 4, !tbaa !9
  %5957 = sext i32 %5956 to i64
  %5958 = getelementptr inbounds %struct.doublecomplex, ptr %5955, i64 %5957
  %5959 = getelementptr inbounds %struct.doublecomplex, ptr %5958, i32 0, i32 0
  %5960 = load double, ptr %5959, align 8, !tbaa !11
  %5961 = getelementptr inbounds %struct.doublecomplex, ptr %31, i32 0, i32 0
  %5962 = load double, ptr %5961, align 8, !tbaa !11
  %5963 = fsub double %5960, %5962
  %5964 = getelementptr inbounds %struct.doublecomplex, ptr %30, i32 0, i32 0
  store double %5963, ptr %5964, align 8, !tbaa !11
  %5965 = load ptr, ptr %14, align 8, !tbaa !5
  %5966 = load i32, ptr %21, align 4, !tbaa !9
  %5967 = sext i32 %5966 to i64
  %5968 = getelementptr inbounds %struct.doublecomplex, ptr %5965, i64 %5967
  %5969 = getelementptr inbounds %struct.doublecomplex, ptr %5968, i32 0, i32 1
  %5970 = load double, ptr %5969, align 8, !tbaa !14
  %5971 = getelementptr inbounds %struct.doublecomplex, ptr %31, i32 0, i32 1
  %5972 = load double, ptr %5971, align 8, !tbaa !14
  %5973 = fsub double %5970, %5972
  %5974 = getelementptr inbounds %struct.doublecomplex, ptr %30, i32 0, i32 1
  store double %5973, ptr %5974, align 8, !tbaa !14
  %5975 = getelementptr inbounds %struct.doublecomplex, ptr %30, i32 0, i32 0
  %5976 = load double, ptr %5975, align 8, !tbaa !11
  %5977 = load ptr, ptr %14, align 8, !tbaa !5
  %5978 = load i32, ptr %20, align 4, !tbaa !9
  %5979 = sext i32 %5978 to i64
  %5980 = getelementptr inbounds %struct.doublecomplex, ptr %5977, i64 %5979
  %5981 = getelementptr inbounds %struct.doublecomplex, ptr %5980, i32 0, i32 0
  store double %5976, ptr %5981, align 8, !tbaa !11
  %5982 = getelementptr inbounds %struct.doublecomplex, ptr %30, i32 0, i32 1
  %5983 = load double, ptr %5982, align 8, !tbaa !14
  %5984 = load ptr, ptr %14, align 8, !tbaa !5
  %5985 = load i32, ptr %20, align 4, !tbaa !9
  %5986 = sext i32 %5985 to i64
  %5987 = getelementptr inbounds %struct.doublecomplex, ptr %5984, i64 %5986
  %5988 = getelementptr inbounds %struct.doublecomplex, ptr %5987, i32 0, i32 1
  store double %5983, ptr %5988, align 8, !tbaa !14
  %5989 = load i32, ptr %49, align 4, !tbaa !9
  %5990 = load i32, ptr %17, align 4, !tbaa !9
  %5991 = mul nsw i32 %5989, %5990
  %5992 = add nsw i32 %5991, 2
  store i32 %5992, ptr %20, align 4, !tbaa !9
  %5993 = load i32, ptr %49, align 4, !tbaa !9
  %5994 = load i32, ptr %17, align 4, !tbaa !9
  %5995 = mul nsw i32 %5993, %5994
  %5996 = add nsw i32 %5995, 2
  store i32 %5996, ptr %21, align 4, !tbaa !9
  %5997 = getelementptr inbounds %struct.doublecomplex, ptr %70, i32 0, i32 0
  %5998 = load double, ptr %5997, align 8, !tbaa !11
  %5999 = getelementptr inbounds %struct.doublecomplex, ptr %51, i32 0, i32 0
  %6000 = load double, ptr %5999, align 8, !tbaa !11
  %6001 = getelementptr inbounds %struct.doublecomplex, ptr %70, i32 0, i32 1
  %6002 = load double, ptr %6001, align 8, !tbaa !14
  %6003 = getelementptr inbounds %struct.doublecomplex, ptr %51, i32 0, i32 1
  %6004 = load double, ptr %6003, align 8, !tbaa !14
  %6005 = fmul double %6002, %6004
  %6006 = fneg double %6005
  %6007 = call double @llvm.fmuladd.f64(double %5998, double %6000, double %6006)
  %6008 = getelementptr inbounds %struct.doublecomplex, ptr %31, i32 0, i32 0
  store double %6007, ptr %6008, align 8, !tbaa !11
  %6009 = getelementptr inbounds %struct.doublecomplex, ptr %70, i32 0, i32 0
  %6010 = load double, ptr %6009, align 8, !tbaa !11
  %6011 = getelementptr inbounds %struct.doublecomplex, ptr %51, i32 0, i32 1
  %6012 = load double, ptr %6011, align 8, !tbaa !14
  %6013 = getelementptr inbounds %struct.doublecomplex, ptr %70, i32 0, i32 1
  %6014 = load double, ptr %6013, align 8, !tbaa !14
  %6015 = getelementptr inbounds %struct.doublecomplex, ptr %51, i32 0, i32 0
  %6016 = load double, ptr %6015, align 8, !tbaa !11
  %6017 = fmul double %6014, %6016
  %6018 = call double @llvm.fmuladd.f64(double %6010, double %6012, double %6017)
  %6019 = getelementptr inbounds %struct.doublecomplex, ptr %31, i32 0, i32 1
  store double %6018, ptr %6019, align 8, !tbaa !14
  %6020 = load ptr, ptr %14, align 8, !tbaa !5
  %6021 = load i32, ptr %21, align 4, !tbaa !9
  %6022 = sext i32 %6021 to i64
  %6023 = getelementptr inbounds %struct.doublecomplex, ptr %6020, i64 %6022
  %6024 = getelementptr inbounds %struct.doublecomplex, ptr %6023, i32 0, i32 0
  %6025 = load double, ptr %6024, align 8, !tbaa !11
  %6026 = getelementptr inbounds %struct.doublecomplex, ptr %31, i32 0, i32 0
  %6027 = load double, ptr %6026, align 8, !tbaa !11
  %6028 = fsub double %6025, %6027
  %6029 = getelementptr inbounds %struct.doublecomplex, ptr %30, i32 0, i32 0
  store double %6028, ptr %6029, align 8, !tbaa !11
  %6030 = load ptr, ptr %14, align 8, !tbaa !5
  %6031 = load i32, ptr %21, align 4, !tbaa !9
  %6032 = sext i32 %6031 to i64
  %6033 = getelementptr inbounds %struct.doublecomplex, ptr %6030, i64 %6032
  %6034 = getelementptr inbounds %struct.doublecomplex, ptr %6033, i32 0, i32 1
  %6035 = load double, ptr %6034, align 8, !tbaa !14
  %6036 = getelementptr inbounds %struct.doublecomplex, ptr %31, i32 0, i32 1
  %6037 = load double, ptr %6036, align 8, !tbaa !14
  %6038 = fsub double %6035, %6037
  %6039 = getelementptr inbounds %struct.doublecomplex, ptr %30, i32 0, i32 1
  store double %6038, ptr %6039, align 8, !tbaa !14
  %6040 = getelementptr inbounds %struct.doublecomplex, ptr %30, i32 0, i32 0
  %6041 = load double, ptr %6040, align 8, !tbaa !11
  %6042 = load ptr, ptr %14, align 8, !tbaa !5
  %6043 = load i32, ptr %20, align 4, !tbaa !9
  %6044 = sext i32 %6043 to i64
  %6045 = getelementptr inbounds %struct.doublecomplex, ptr %6042, i64 %6044
  %6046 = getelementptr inbounds %struct.doublecomplex, ptr %6045, i32 0, i32 0
  store double %6041, ptr %6046, align 8, !tbaa !11
  %6047 = getelementptr inbounds %struct.doublecomplex, ptr %30, i32 0, i32 1
  %6048 = load double, ptr %6047, align 8, !tbaa !14
  %6049 = load ptr, ptr %14, align 8, !tbaa !5
  %6050 = load i32, ptr %20, align 4, !tbaa !9
  %6051 = sext i32 %6050 to i64
  %6052 = getelementptr inbounds %struct.doublecomplex, ptr %6049, i64 %6051
  %6053 = getelementptr inbounds %struct.doublecomplex, ptr %6052, i32 0, i32 1
  store double %6048, ptr %6053, align 8, !tbaa !14
  %6054 = load i32, ptr %49, align 4, !tbaa !9
  %6055 = load i32, ptr %17, align 4, !tbaa !9
  %6056 = mul nsw i32 %6054, %6055
  %6057 = add nsw i32 %6056, 3
  store i32 %6057, ptr %20, align 4, !tbaa !9
  %6058 = load i32, ptr %49, align 4, !tbaa !9
  %6059 = load i32, ptr %17, align 4, !tbaa !9
  %6060 = mul nsw i32 %6058, %6059
  %6061 = add nsw i32 %6060, 3
  store i32 %6061, ptr %21, align 4, !tbaa !9
  %6062 = getelementptr inbounds %struct.doublecomplex, ptr %70, i32 0, i32 0
  %6063 = load double, ptr %6062, align 8, !tbaa !11
  %6064 = getelementptr inbounds %struct.doublecomplex, ptr %52, i32 0, i32 0
  %6065 = load double, ptr %6064, align 8, !tbaa !11
  %6066 = getelementptr inbounds %struct.doublecomplex, ptr %70, i32 0, i32 1
  %6067 = load double, ptr %6066, align 8, !tbaa !14
  %6068 = getelementptr inbounds %struct.doublecomplex, ptr %52, i32 0, i32 1
  %6069 = load double, ptr %6068, align 8, !tbaa !14
  %6070 = fmul double %6067, %6069
  %6071 = fneg double %6070
  %6072 = call double @llvm.fmuladd.f64(double %6063, double %6065, double %6071)
  %6073 = getelementptr inbounds %struct.doublecomplex, ptr %31, i32 0, i32 0
  store double %6072, ptr %6073, align 8, !tbaa !11
  %6074 = getelementptr inbounds %struct.doublecomplex, ptr %70, i32 0, i32 0
  %6075 = load double, ptr %6074, align 8, !tbaa !11
  %6076 = getelementptr inbounds %struct.doublecomplex, ptr %52, i32 0, i32 1
  %6077 = load double, ptr %6076, align 8, !tbaa !14
  %6078 = getelementptr inbounds %struct.doublecomplex, ptr %70, i32 0, i32 1
  %6079 = load double, ptr %6078, align 8, !tbaa !14
  %6080 = getelementptr inbounds %struct.doublecomplex, ptr %52, i32 0, i32 0
  %6081 = load double, ptr %6080, align 8, !tbaa !11
  %6082 = fmul double %6079, %6081
  %6083 = call double @llvm.fmuladd.f64(double %6075, double %6077, double %6082)
  %6084 = getelementptr inbounds %struct.doublecomplex, ptr %31, i32 0, i32 1
  store double %6083, ptr %6084, align 8, !tbaa !14
  %6085 = load ptr, ptr %14, align 8, !tbaa !5
  %6086 = load i32, ptr %21, align 4, !tbaa !9
  %6087 = sext i32 %6086 to i64
  %6088 = getelementptr inbounds %struct.doublecomplex, ptr %6085, i64 %6087
  %6089 = getelementptr inbounds %struct.doublecomplex, ptr %6088, i32 0, i32 0
  %6090 = load double, ptr %6089, align 8, !tbaa !11
  %6091 = getelementptr inbounds %struct.doublecomplex, ptr %31, i32 0, i32 0
  %6092 = load double, ptr %6091, align 8, !tbaa !11
  %6093 = fsub double %6090, %6092
  %6094 = getelementptr inbounds %struct.doublecomplex, ptr %30, i32 0, i32 0
  store double %6093, ptr %6094, align 8, !tbaa !11
  %6095 = load ptr, ptr %14, align 8, !tbaa !5
  %6096 = load i32, ptr %21, align 4, !tbaa !9
  %6097 = sext i32 %6096 to i64
  %6098 = getelementptr inbounds %struct.doublecomplex, ptr %6095, i64 %6097
  %6099 = getelementptr inbounds %struct.doublecomplex, ptr %6098, i32 0, i32 1
  %6100 = load double, ptr %6099, align 8, !tbaa !14
  %6101 = getelementptr inbounds %struct.doublecomplex, ptr %31, i32 0, i32 1
  %6102 = load double, ptr %6101, align 8, !tbaa !14
  %6103 = fsub double %6100, %6102
  %6104 = getelementptr inbounds %struct.doublecomplex, ptr %30, i32 0, i32 1
  store double %6103, ptr %6104, align 8, !tbaa !14
  %6105 = getelementptr inbounds %struct.doublecomplex, ptr %30, i32 0, i32 0
  %6106 = load double, ptr %6105, align 8, !tbaa !11
  %6107 = load ptr, ptr %14, align 8, !tbaa !5
  %6108 = load i32, ptr %20, align 4, !tbaa !9
  %6109 = sext i32 %6108 to i64
  %6110 = getelementptr inbounds %struct.doublecomplex, ptr %6107, i64 %6109
  %6111 = getelementptr inbounds %struct.doublecomplex, ptr %6110, i32 0, i32 0
  store double %6106, ptr %6111, align 8, !tbaa !11
  %6112 = getelementptr inbounds %struct.doublecomplex, ptr %30, i32 0, i32 1
  %6113 = load double, ptr %6112, align 8, !tbaa !14
  %6114 = load ptr, ptr %14, align 8, !tbaa !5
  %6115 = load i32, ptr %20, align 4, !tbaa !9
  %6116 = sext i32 %6115 to i64
  %6117 = getelementptr inbounds %struct.doublecomplex, ptr %6114, i64 %6116
  %6118 = getelementptr inbounds %struct.doublecomplex, ptr %6117, i32 0, i32 1
  store double %6113, ptr %6118, align 8, !tbaa !14
  %6119 = load i32, ptr %49, align 4, !tbaa !9
  %6120 = load i32, ptr %17, align 4, !tbaa !9
  %6121 = mul nsw i32 %6119, %6120
  %6122 = add nsw i32 %6121, 4
  store i32 %6122, ptr %20, align 4, !tbaa !9
  %6123 = load i32, ptr %49, align 4, !tbaa !9
  %6124 = load i32, ptr %17, align 4, !tbaa !9
  %6125 = mul nsw i32 %6123, %6124
  %6126 = add nsw i32 %6125, 4
  store i32 %6126, ptr %21, align 4, !tbaa !9
  %6127 = getelementptr inbounds %struct.doublecomplex, ptr %70, i32 0, i32 0
  %6128 = load double, ptr %6127, align 8, !tbaa !11
  %6129 = getelementptr inbounds %struct.doublecomplex, ptr %53, i32 0, i32 0
  %6130 = load double, ptr %6129, align 8, !tbaa !11
  %6131 = getelementptr inbounds %struct.doublecomplex, ptr %70, i32 0, i32 1
  %6132 = load double, ptr %6131, align 8, !tbaa !14
  %6133 = getelementptr inbounds %struct.doublecomplex, ptr %53, i32 0, i32 1
  %6134 = load double, ptr %6133, align 8, !tbaa !14
  %6135 = fmul double %6132, %6134
  %6136 = fneg double %6135
  %6137 = call double @llvm.fmuladd.f64(double %6128, double %6130, double %6136)
  %6138 = getelementptr inbounds %struct.doublecomplex, ptr %31, i32 0, i32 0
  store double %6137, ptr %6138, align 8, !tbaa !11
  %6139 = getelementptr inbounds %struct.doublecomplex, ptr %70, i32 0, i32 0
  %6140 = load double, ptr %6139, align 8, !tbaa !11
  %6141 = getelementptr inbounds %struct.doublecomplex, ptr %53, i32 0, i32 1
  %6142 = load double, ptr %6141, align 8, !tbaa !14
  %6143 = getelementptr inbounds %struct.doublecomplex, ptr %70, i32 0, i32 1
  %6144 = load double, ptr %6143, align 8, !tbaa !14
  %6145 = getelementptr inbounds %struct.doublecomplex, ptr %53, i32 0, i32 0
  %6146 = load double, ptr %6145, align 8, !tbaa !11
  %6147 = fmul double %6144, %6146
  %6148 = call double @llvm.fmuladd.f64(double %6140, double %6142, double %6147)
  %6149 = getelementptr inbounds %struct.doublecomplex, ptr %31, i32 0, i32 1
  store double %6148, ptr %6149, align 8, !tbaa !14
  %6150 = load ptr, ptr %14, align 8, !tbaa !5
  %6151 = load i32, ptr %21, align 4, !tbaa !9
  %6152 = sext i32 %6151 to i64
  %6153 = getelementptr inbounds %struct.doublecomplex, ptr %6150, i64 %6152
  %6154 = getelementptr inbounds %struct.doublecomplex, ptr %6153, i32 0, i32 0
  %6155 = load double, ptr %6154, align 8, !tbaa !11
  %6156 = getelementptr inbounds %struct.doublecomplex, ptr %31, i32 0, i32 0
  %6157 = load double, ptr %6156, align 8, !tbaa !11
  %6158 = fsub double %6155, %6157
  %6159 = getelementptr inbounds %struct.doublecomplex, ptr %30, i32 0, i32 0
  store double %6158, ptr %6159, align 8, !tbaa !11
  %6160 = load ptr, ptr %14, align 8, !tbaa !5
  %6161 = load i32, ptr %21, align 4, !tbaa !9
  %6162 = sext i32 %6161 to i64
  %6163 = getelementptr inbounds %struct.doublecomplex, ptr %6160, i64 %6162
  %6164 = getelementptr inbounds %struct.doublecomplex, ptr %6163, i32 0, i32 1
  %6165 = load double, ptr %6164, align 8, !tbaa !14
  %6166 = getelementptr inbounds %struct.doublecomplex, ptr %31, i32 0, i32 1
  %6167 = load double, ptr %6166, align 8, !tbaa !14
  %6168 = fsub double %6165, %6167
  %6169 = getelementptr inbounds %struct.doublecomplex, ptr %30, i32 0, i32 1
  store double %6168, ptr %6169, align 8, !tbaa !14
  %6170 = getelementptr inbounds %struct.doublecomplex, ptr %30, i32 0, i32 0
  %6171 = load double, ptr %6170, align 8, !tbaa !11
  %6172 = load ptr, ptr %14, align 8, !tbaa !5
  %6173 = load i32, ptr %20, align 4, !tbaa !9
  %6174 = sext i32 %6173 to i64
  %6175 = getelementptr inbounds %struct.doublecomplex, ptr %6172, i64 %6174
  %6176 = getelementptr inbounds %struct.doublecomplex, ptr %6175, i32 0, i32 0
  store double %6171, ptr %6176, align 8, !tbaa !11
  %6177 = getelementptr inbounds %struct.doublecomplex, ptr %30, i32 0, i32 1
  %6178 = load double, ptr %6177, align 8, !tbaa !14
  %6179 = load ptr, ptr %14, align 8, !tbaa !5
  %6180 = load i32, ptr %20, align 4, !tbaa !9
  %6181 = sext i32 %6180 to i64
  %6182 = getelementptr inbounds %struct.doublecomplex, ptr %6179, i64 %6181
  %6183 = getelementptr inbounds %struct.doublecomplex, ptr %6182, i32 0, i32 1
  store double %6178, ptr %6183, align 8, !tbaa !14
  %6184 = load i32, ptr %49, align 4, !tbaa !9
  %6185 = load i32, ptr %17, align 4, !tbaa !9
  %6186 = mul nsw i32 %6184, %6185
  %6187 = add nsw i32 %6186, 5
  store i32 %6187, ptr %20, align 4, !tbaa !9
  %6188 = load i32, ptr %49, align 4, !tbaa !9
  %6189 = load i32, ptr %17, align 4, !tbaa !9
  %6190 = mul nsw i32 %6188, %6189
  %6191 = add nsw i32 %6190, 5
  store i32 %6191, ptr %21, align 4, !tbaa !9
  %6192 = getelementptr inbounds %struct.doublecomplex, ptr %70, i32 0, i32 0
  %6193 = load double, ptr %6192, align 8, !tbaa !11
  %6194 = getelementptr inbounds %struct.doublecomplex, ptr %54, i32 0, i32 0
  %6195 = load double, ptr %6194, align 8, !tbaa !11
  %6196 = getelementptr inbounds %struct.doublecomplex, ptr %70, i32 0, i32 1
  %6197 = load double, ptr %6196, align 8, !tbaa !14
  %6198 = getelementptr inbounds %struct.doublecomplex, ptr %54, i32 0, i32 1
  %6199 = load double, ptr %6198, align 8, !tbaa !14
  %6200 = fmul double %6197, %6199
  %6201 = fneg double %6200
  %6202 = call double @llvm.fmuladd.f64(double %6193, double %6195, double %6201)
  %6203 = getelementptr inbounds %struct.doublecomplex, ptr %31, i32 0, i32 0
  store double %6202, ptr %6203, align 8, !tbaa !11
  %6204 = getelementptr inbounds %struct.doublecomplex, ptr %70, i32 0, i32 0
  %6205 = load double, ptr %6204, align 8, !tbaa !11
  %6206 = getelementptr inbounds %struct.doublecomplex, ptr %54, i32 0, i32 1
  %6207 = load double, ptr %6206, align 8, !tbaa !14
  %6208 = getelementptr inbounds %struct.doublecomplex, ptr %70, i32 0, i32 1
  %6209 = load double, ptr %6208, align 8, !tbaa !14
  %6210 = getelementptr inbounds %struct.doublecomplex, ptr %54, i32 0, i32 0
  %6211 = load double, ptr %6210, align 8, !tbaa !11
  %6212 = fmul double %6209, %6211
  %6213 = call double @llvm.fmuladd.f64(double %6205, double %6207, double %6212)
  %6214 = getelementptr inbounds %struct.doublecomplex, ptr %31, i32 0, i32 1
  store double %6213, ptr %6214, align 8, !tbaa !14
  %6215 = load ptr, ptr %14, align 8, !tbaa !5
  %6216 = load i32, ptr %21, align 4, !tbaa !9
  %6217 = sext i32 %6216 to i64
  %6218 = getelementptr inbounds %struct.doublecomplex, ptr %6215, i64 %6217
  %6219 = getelementptr inbounds %struct.doublecomplex, ptr %6218, i32 0, i32 0
  %6220 = load double, ptr %6219, align 8, !tbaa !11
  %6221 = getelementptr inbounds %struct.doublecomplex, ptr %31, i32 0, i32 0
  %6222 = load double, ptr %6221, align 8, !tbaa !11
  %6223 = fsub double %6220, %6222
  %6224 = getelementptr inbounds %struct.doublecomplex, ptr %30, i32 0, i32 0
  store double %6223, ptr %6224, align 8, !tbaa !11
  %6225 = load ptr, ptr %14, align 8, !tbaa !5
  %6226 = load i32, ptr %21, align 4, !tbaa !9
  %6227 = sext i32 %6226 to i64
  %6228 = getelementptr inbounds %struct.doublecomplex, ptr %6225, i64 %6227
  %6229 = getelementptr inbounds %struct.doublecomplex, ptr %6228, i32 0, i32 1
  %6230 = load double, ptr %6229, align 8, !tbaa !14
  %6231 = getelementptr inbounds %struct.doublecomplex, ptr %31, i32 0, i32 1
  %6232 = load double, ptr %6231, align 8, !tbaa !14
  %6233 = fsub double %6230, %6232
  %6234 = getelementptr inbounds %struct.doublecomplex, ptr %30, i32 0, i32 1
  store double %6233, ptr %6234, align 8, !tbaa !14
  %6235 = getelementptr inbounds %struct.doublecomplex, ptr %30, i32 0, i32 0
  %6236 = load double, ptr %6235, align 8, !tbaa !11
  %6237 = load ptr, ptr %14, align 8, !tbaa !5
  %6238 = load i32, ptr %20, align 4, !tbaa !9
  %6239 = sext i32 %6238 to i64
  %6240 = getelementptr inbounds %struct.doublecomplex, ptr %6237, i64 %6239
  %6241 = getelementptr inbounds %struct.doublecomplex, ptr %6240, i32 0, i32 0
  store double %6236, ptr %6241, align 8, !tbaa !11
  %6242 = getelementptr inbounds %struct.doublecomplex, ptr %30, i32 0, i32 1
  %6243 = load double, ptr %6242, align 8, !tbaa !14
  %6244 = load ptr, ptr %14, align 8, !tbaa !5
  %6245 = load i32, ptr %20, align 4, !tbaa !9
  %6246 = sext i32 %6245 to i64
  %6247 = getelementptr inbounds %struct.doublecomplex, ptr %6244, i64 %6246
  %6248 = getelementptr inbounds %struct.doublecomplex, ptr %6247, i32 0, i32 1
  store double %6243, ptr %6248, align 8, !tbaa !14
  %6249 = load i32, ptr %49, align 4, !tbaa !9
  %6250 = load i32, ptr %17, align 4, !tbaa !9
  %6251 = mul nsw i32 %6249, %6250
  %6252 = add nsw i32 %6251, 6
  store i32 %6252, ptr %20, align 4, !tbaa !9
  %6253 = load i32, ptr %49, align 4, !tbaa !9
  %6254 = load i32, ptr %17, align 4, !tbaa !9
  %6255 = mul nsw i32 %6253, %6254
  %6256 = add nsw i32 %6255, 6
  store i32 %6256, ptr %21, align 4, !tbaa !9
  %6257 = getelementptr inbounds %struct.doublecomplex, ptr %70, i32 0, i32 0
  %6258 = load double, ptr %6257, align 8, !tbaa !11
  %6259 = getelementptr inbounds %struct.doublecomplex, ptr %55, i32 0, i32 0
  %6260 = load double, ptr %6259, align 8, !tbaa !11
  %6261 = getelementptr inbounds %struct.doublecomplex, ptr %70, i32 0, i32 1
  %6262 = load double, ptr %6261, align 8, !tbaa !14
  %6263 = getelementptr inbounds %struct.doublecomplex, ptr %55, i32 0, i32 1
  %6264 = load double, ptr %6263, align 8, !tbaa !14
  %6265 = fmul double %6262, %6264
  %6266 = fneg double %6265
  %6267 = call double @llvm.fmuladd.f64(double %6258, double %6260, double %6266)
  %6268 = getelementptr inbounds %struct.doublecomplex, ptr %31, i32 0, i32 0
  store double %6267, ptr %6268, align 8, !tbaa !11
  %6269 = getelementptr inbounds %struct.doublecomplex, ptr %70, i32 0, i32 0
  %6270 = load double, ptr %6269, align 8, !tbaa !11
  %6271 = getelementptr inbounds %struct.doublecomplex, ptr %55, i32 0, i32 1
  %6272 = load double, ptr %6271, align 8, !tbaa !14
  %6273 = getelementptr inbounds %struct.doublecomplex, ptr %70, i32 0, i32 1
  %6274 = load double, ptr %6273, align 8, !tbaa !14
  %6275 = getelementptr inbounds %struct.doublecomplex, ptr %55, i32 0, i32 0
  %6276 = load double, ptr %6275, align 8, !tbaa !11
  %6277 = fmul double %6274, %6276
  %6278 = call double @llvm.fmuladd.f64(double %6270, double %6272, double %6277)
  %6279 = getelementptr inbounds %struct.doublecomplex, ptr %31, i32 0, i32 1
  store double %6278, ptr %6279, align 8, !tbaa !14
  %6280 = load ptr, ptr %14, align 8, !tbaa !5
  %6281 = load i32, ptr %21, align 4, !tbaa !9
  %6282 = sext i32 %6281 to i64
  %6283 = getelementptr inbounds %struct.doublecomplex, ptr %6280, i64 %6282
  %6284 = getelementptr inbounds %struct.doublecomplex, ptr %6283, i32 0, i32 0
  %6285 = load double, ptr %6284, align 8, !tbaa !11
  %6286 = getelementptr inbounds %struct.doublecomplex, ptr %31, i32 0, i32 0
  %6287 = load double, ptr %6286, align 8, !tbaa !11
  %6288 = fsub double %6285, %6287
  %6289 = getelementptr inbounds %struct.doublecomplex, ptr %30, i32 0, i32 0
  store double %6288, ptr %6289, align 8, !tbaa !11
  %6290 = load ptr, ptr %14, align 8, !tbaa !5
  %6291 = load i32, ptr %21, align 4, !tbaa !9
  %6292 = sext i32 %6291 to i64
  %6293 = getelementptr inbounds %struct.doublecomplex, ptr %6290, i64 %6292
  %6294 = getelementptr inbounds %struct.doublecomplex, ptr %6293, i32 0, i32 1
  %6295 = load double, ptr %6294, align 8, !tbaa !14
  %6296 = getelementptr inbounds %struct.doublecomplex, ptr %31, i32 0, i32 1
  %6297 = load double, ptr %6296, align 8, !tbaa !14
  %6298 = fsub double %6295, %6297
  %6299 = getelementptr inbounds %struct.doublecomplex, ptr %30, i32 0, i32 1
  store double %6298, ptr %6299, align 8, !tbaa !14
  %6300 = getelementptr inbounds %struct.doublecomplex, ptr %30, i32 0, i32 0
  %6301 = load double, ptr %6300, align 8, !tbaa !11
  %6302 = load ptr, ptr %14, align 8, !tbaa !5
  %6303 = load i32, ptr %20, align 4, !tbaa !9
  %6304 = sext i32 %6303 to i64
  %6305 = getelementptr inbounds %struct.doublecomplex, ptr %6302, i64 %6304
  %6306 = getelementptr inbounds %struct.doublecomplex, ptr %6305, i32 0, i32 0
  store double %6301, ptr %6306, align 8, !tbaa !11
  %6307 = getelementptr inbounds %struct.doublecomplex, ptr %30, i32 0, i32 1
  %6308 = load double, ptr %6307, align 8, !tbaa !14
  %6309 = load ptr, ptr %14, align 8, !tbaa !5
  %6310 = load i32, ptr %20, align 4, !tbaa !9
  %6311 = sext i32 %6310 to i64
  %6312 = getelementptr inbounds %struct.doublecomplex, ptr %6309, i64 %6311
  %6313 = getelementptr inbounds %struct.doublecomplex, ptr %6312, i32 0, i32 1
  store double %6308, ptr %6313, align 8, !tbaa !14
  %6314 = load i32, ptr %49, align 4, !tbaa !9
  %6315 = load i32, ptr %17, align 4, !tbaa !9
  %6316 = mul nsw i32 %6314, %6315
  %6317 = add nsw i32 %6316, 7
  store i32 %6317, ptr %20, align 4, !tbaa !9
  %6318 = load i32, ptr %49, align 4, !tbaa !9
  %6319 = load i32, ptr %17, align 4, !tbaa !9
  %6320 = mul nsw i32 %6318, %6319
  %6321 = add nsw i32 %6320, 7
  store i32 %6321, ptr %21, align 4, !tbaa !9
  %6322 = getelementptr inbounds %struct.doublecomplex, ptr %70, i32 0, i32 0
  %6323 = load double, ptr %6322, align 8, !tbaa !11
  %6324 = getelementptr inbounds %struct.doublecomplex, ptr %56, i32 0, i32 0
  %6325 = load double, ptr %6324, align 8, !tbaa !11
  %6326 = getelementptr inbounds %struct.doublecomplex, ptr %70, i32 0, i32 1
  %6327 = load double, ptr %6326, align 8, !tbaa !14
  %6328 = getelementptr inbounds %struct.doublecomplex, ptr %56, i32 0, i32 1
  %6329 = load double, ptr %6328, align 8, !tbaa !14
  %6330 = fmul double %6327, %6329
  %6331 = fneg double %6330
  %6332 = call double @llvm.fmuladd.f64(double %6323, double %6325, double %6331)
  %6333 = getelementptr inbounds %struct.doublecomplex, ptr %31, i32 0, i32 0
  store double %6332, ptr %6333, align 8, !tbaa !11
  %6334 = getelementptr inbounds %struct.doublecomplex, ptr %70, i32 0, i32 0
  %6335 = load double, ptr %6334, align 8, !tbaa !11
  %6336 = getelementptr inbounds %struct.doublecomplex, ptr %56, i32 0, i32 1
  %6337 = load double, ptr %6336, align 8, !tbaa !14
  %6338 = getelementptr inbounds %struct.doublecomplex, ptr %70, i32 0, i32 1
  %6339 = load double, ptr %6338, align 8, !tbaa !14
  %6340 = getelementptr inbounds %struct.doublecomplex, ptr %56, i32 0, i32 0
  %6341 = load double, ptr %6340, align 8, !tbaa !11
  %6342 = fmul double %6339, %6341
  %6343 = call double @llvm.fmuladd.f64(double %6335, double %6337, double %6342)
  %6344 = getelementptr inbounds %struct.doublecomplex, ptr %31, i32 0, i32 1
  store double %6343, ptr %6344, align 8, !tbaa !14
  %6345 = load ptr, ptr %14, align 8, !tbaa !5
  %6346 = load i32, ptr %21, align 4, !tbaa !9
  %6347 = sext i32 %6346 to i64
  %6348 = getelementptr inbounds %struct.doublecomplex, ptr %6345, i64 %6347
  %6349 = getelementptr inbounds %struct.doublecomplex, ptr %6348, i32 0, i32 0
  %6350 = load double, ptr %6349, align 8, !tbaa !11
  %6351 = getelementptr inbounds %struct.doublecomplex, ptr %31, i32 0, i32 0
  %6352 = load double, ptr %6351, align 8, !tbaa !11
  %6353 = fsub double %6350, %6352
  %6354 = getelementptr inbounds %struct.doublecomplex, ptr %30, i32 0, i32 0
  store double %6353, ptr %6354, align 8, !tbaa !11
  %6355 = load ptr, ptr %14, align 8, !tbaa !5
  %6356 = load i32, ptr %21, align 4, !tbaa !9
  %6357 = sext i32 %6356 to i64
  %6358 = getelementptr inbounds %struct.doublecomplex, ptr %6355, i64 %6357
  %6359 = getelementptr inbounds %struct.doublecomplex, ptr %6358, i32 0, i32 1
  %6360 = load double, ptr %6359, align 8, !tbaa !14
  %6361 = getelementptr inbounds %struct.doublecomplex, ptr %31, i32 0, i32 1
  %6362 = load double, ptr %6361, align 8, !tbaa !14
  %6363 = fsub double %6360, %6362
  %6364 = getelementptr inbounds %struct.doublecomplex, ptr %30, i32 0, i32 1
  store double %6363, ptr %6364, align 8, !tbaa !14
  %6365 = getelementptr inbounds %struct.doublecomplex, ptr %30, i32 0, i32 0
  %6366 = load double, ptr %6365, align 8, !tbaa !11
  %6367 = load ptr, ptr %14, align 8, !tbaa !5
  %6368 = load i32, ptr %20, align 4, !tbaa !9
  %6369 = sext i32 %6368 to i64
  %6370 = getelementptr inbounds %struct.doublecomplex, ptr %6367, i64 %6369
  %6371 = getelementptr inbounds %struct.doublecomplex, ptr %6370, i32 0, i32 0
  store double %6366, ptr %6371, align 8, !tbaa !11
  %6372 = getelementptr inbounds %struct.doublecomplex, ptr %30, i32 0, i32 1
  %6373 = load double, ptr %6372, align 8, !tbaa !14
  %6374 = load ptr, ptr %14, align 8, !tbaa !5
  %6375 = load i32, ptr %20, align 4, !tbaa !9
  %6376 = sext i32 %6375 to i64
  %6377 = getelementptr inbounds %struct.doublecomplex, ptr %6374, i64 %6376
  %6378 = getelementptr inbounds %struct.doublecomplex, ptr %6377, i32 0, i32 1
  store double %6373, ptr %6378, align 8, !tbaa !14
  %6379 = load i32, ptr %49, align 4, !tbaa !9
  %6380 = load i32, ptr %17, align 4, !tbaa !9
  %6381 = mul nsw i32 %6379, %6380
  %6382 = add nsw i32 %6381, 8
  store i32 %6382, ptr %20, align 4, !tbaa !9
  %6383 = load i32, ptr %49, align 4, !tbaa !9
  %6384 = load i32, ptr %17, align 4, !tbaa !9
  %6385 = mul nsw i32 %6383, %6384
  %6386 = add nsw i32 %6385, 8
  store i32 %6386, ptr %21, align 4, !tbaa !9
  %6387 = getelementptr inbounds %struct.doublecomplex, ptr %70, i32 0, i32 0
  %6388 = load double, ptr %6387, align 8, !tbaa !11
  %6389 = getelementptr inbounds %struct.doublecomplex, ptr %57, i32 0, i32 0
  %6390 = load double, ptr %6389, align 8, !tbaa !11
  %6391 = getelementptr inbounds %struct.doublecomplex, ptr %70, i32 0, i32 1
  %6392 = load double, ptr %6391, align 8, !tbaa !14
  %6393 = getelementptr inbounds %struct.doublecomplex, ptr %57, i32 0, i32 1
  %6394 = load double, ptr %6393, align 8, !tbaa !14
  %6395 = fmul double %6392, %6394
  %6396 = fneg double %6395
  %6397 = call double @llvm.fmuladd.f64(double %6388, double %6390, double %6396)
  %6398 = getelementptr inbounds %struct.doublecomplex, ptr %31, i32 0, i32 0
  store double %6397, ptr %6398, align 8, !tbaa !11
  %6399 = getelementptr inbounds %struct.doublecomplex, ptr %70, i32 0, i32 0
  %6400 = load double, ptr %6399, align 8, !tbaa !11
  %6401 = getelementptr inbounds %struct.doublecomplex, ptr %57, i32 0, i32 1
  %6402 = load double, ptr %6401, align 8, !tbaa !14
  %6403 = getelementptr inbounds %struct.doublecomplex, ptr %70, i32 0, i32 1
  %6404 = load double, ptr %6403, align 8, !tbaa !14
  %6405 = getelementptr inbounds %struct.doublecomplex, ptr %57, i32 0, i32 0
  %6406 = load double, ptr %6405, align 8, !tbaa !11
  %6407 = fmul double %6404, %6406
  %6408 = call double @llvm.fmuladd.f64(double %6400, double %6402, double %6407)
  %6409 = getelementptr inbounds %struct.doublecomplex, ptr %31, i32 0, i32 1
  store double %6408, ptr %6409, align 8, !tbaa !14
  %6410 = load ptr, ptr %14, align 8, !tbaa !5
  %6411 = load i32, ptr %21, align 4, !tbaa !9
  %6412 = sext i32 %6411 to i64
  %6413 = getelementptr inbounds %struct.doublecomplex, ptr %6410, i64 %6412
  %6414 = getelementptr inbounds %struct.doublecomplex, ptr %6413, i32 0, i32 0
  %6415 = load double, ptr %6414, align 8, !tbaa !11
  %6416 = getelementptr inbounds %struct.doublecomplex, ptr %31, i32 0, i32 0
  %6417 = load double, ptr %6416, align 8, !tbaa !11
  %6418 = fsub double %6415, %6417
  %6419 = getelementptr inbounds %struct.doublecomplex, ptr %30, i32 0, i32 0
  store double %6418, ptr %6419, align 8, !tbaa !11
  %6420 = load ptr, ptr %14, align 8, !tbaa !5
  %6421 = load i32, ptr %21, align 4, !tbaa !9
  %6422 = sext i32 %6421 to i64
  %6423 = getelementptr inbounds %struct.doublecomplex, ptr %6420, i64 %6422
  %6424 = getelementptr inbounds %struct.doublecomplex, ptr %6423, i32 0, i32 1
  %6425 = load double, ptr %6424, align 8, !tbaa !14
  %6426 = getelementptr inbounds %struct.doublecomplex, ptr %31, i32 0, i32 1
  %6427 = load double, ptr %6426, align 8, !tbaa !14
  %6428 = fsub double %6425, %6427
  %6429 = getelementptr inbounds %struct.doublecomplex, ptr %30, i32 0, i32 1
  store double %6428, ptr %6429, align 8, !tbaa !14
  %6430 = getelementptr inbounds %struct.doublecomplex, ptr %30, i32 0, i32 0
  %6431 = load double, ptr %6430, align 8, !tbaa !11
  %6432 = load ptr, ptr %14, align 8, !tbaa !5
  %6433 = load i32, ptr %20, align 4, !tbaa !9
  %6434 = sext i32 %6433 to i64
  %6435 = getelementptr inbounds %struct.doublecomplex, ptr %6432, i64 %6434
  %6436 = getelementptr inbounds %struct.doublecomplex, ptr %6435, i32 0, i32 0
  store double %6431, ptr %6436, align 8, !tbaa !11
  %6437 = getelementptr inbounds %struct.doublecomplex, ptr %30, i32 0, i32 1
  %6438 = load double, ptr %6437, align 8, !tbaa !14
  %6439 = load ptr, ptr %14, align 8, !tbaa !5
  %6440 = load i32, ptr %20, align 4, !tbaa !9
  %6441 = sext i32 %6440 to i64
  %6442 = getelementptr inbounds %struct.doublecomplex, ptr %6439, i64 %6441
  %6443 = getelementptr inbounds %struct.doublecomplex, ptr %6442, i32 0, i32 1
  store double %6438, ptr %6443, align 8, !tbaa !14
  br label %6444

6444:                                             ; preds = %5489
  %6445 = load i32, ptr %49, align 4, !tbaa !9
  %6446 = add nsw i32 %6445, 1
  store i32 %6446, ptr %49, align 4, !tbaa !9
  br label %5485, !llvm.loop !23

6447:                                             ; preds = %5485
  br label %19171

6448:                                             ; preds = %111
  %6449 = load ptr, ptr %12, align 8, !tbaa !5
  %6450 = getelementptr inbounds %struct.doublecomplex, ptr %6449, i64 1
  %6451 = call { double, double } @Cd(ptr noundef %6450)
  %6452 = extractvalue { double, double } %6451, 0
  %6453 = extractvalue { double, double } %6451, 1
  %6454 = fneg double %6453
  %6455 = call ptr @_pCd(ptr noundef %30)
  %6456 = getelementptr inbounds { double, double }, ptr %6455, i32 0, i32 0
  %6457 = getelementptr inbounds { double, double }, ptr %6455, i32 0, i32 1
  store double %6452, ptr %6456, align 8
  store double %6454, ptr %6457, align 8
  %6458 = getelementptr inbounds %struct.doublecomplex, ptr %30, i32 0, i32 0
  %6459 = load double, ptr %6458, align 8, !tbaa !11
  %6460 = getelementptr inbounds %struct.doublecomplex, ptr %59, i32 0, i32 0
  store double %6459, ptr %6460, align 8, !tbaa !11
  %6461 = getelementptr inbounds %struct.doublecomplex, ptr %30, i32 0, i32 1
  %6462 = load double, ptr %6461, align 8, !tbaa !14
  %6463 = getelementptr inbounds %struct.doublecomplex, ptr %59, i32 0, i32 1
  store double %6462, ptr %6463, align 8, !tbaa !14
  %6464 = call { double, double } @Cd(ptr noundef %59)
  %6465 = extractvalue { double, double } %6464, 0
  %6466 = extractvalue { double, double } %6464, 1
  %6467 = fneg double %6466
  %6468 = call ptr @_pCd(ptr noundef %31)
  %6469 = getelementptr inbounds { double, double }, ptr %6468, i32 0, i32 0
  %6470 = getelementptr inbounds { double, double }, ptr %6468, i32 0, i32 1
  store double %6465, ptr %6469, align 8
  store double %6467, ptr %6470, align 8
  %6471 = load ptr, ptr %13, align 8, !tbaa !5
  %6472 = getelementptr inbounds %struct.doublecomplex, ptr %6471, i32 0, i32 0
  %6473 = load double, ptr %6472, align 8, !tbaa !11
  %6474 = getelementptr inbounds %struct.doublecomplex, ptr %31, i32 0, i32 0
  %6475 = load double, ptr %6474, align 8, !tbaa !11
  %6476 = load ptr, ptr %13, align 8, !tbaa !5
  %6477 = getelementptr inbounds %struct.doublecomplex, ptr %6476, i32 0, i32 1
  %6478 = load double, ptr %6477, align 8, !tbaa !14
  %6479 = getelementptr inbounds %struct.doublecomplex, ptr %31, i32 0, i32 1
  %6480 = load double, ptr %6479, align 8, !tbaa !14
  %6481 = fmul double %6478, %6480
  %6482 = fneg double %6481
  %6483 = call double @llvm.fmuladd.f64(double %6473, double %6475, double %6482)
  %6484 = getelementptr inbounds %struct.doublecomplex, ptr %30, i32 0, i32 0
  store double %6483, ptr %6484, align 8, !tbaa !11
  %6485 = load ptr, ptr %13, align 8, !tbaa !5
  %6486 = getelementptr inbounds %struct.doublecomplex, ptr %6485, i32 0, i32 0
  %6487 = load double, ptr %6486, align 8, !tbaa !11
  %6488 = getelementptr inbounds %struct.doublecomplex, ptr %31, i32 0, i32 1
  %6489 = load double, ptr %6488, align 8, !tbaa !14
  %6490 = load ptr, ptr %13, align 8, !tbaa !5
  %6491 = getelementptr inbounds %struct.doublecomplex, ptr %6490, i32 0, i32 1
  %6492 = load double, ptr %6491, align 8, !tbaa !14
  %6493 = getelementptr inbounds %struct.doublecomplex, ptr %31, i32 0, i32 0
  %6494 = load double, ptr %6493, align 8, !tbaa !11
  %6495 = fmul double %6492, %6494
  %6496 = call double @llvm.fmuladd.f64(double %6487, double %6489, double %6495)
  %6497 = getelementptr inbounds %struct.doublecomplex, ptr %30, i32 0, i32 1
  store double %6496, ptr %6497, align 8, !tbaa !14
  %6498 = getelementptr inbounds %struct.doublecomplex, ptr %30, i32 0, i32 0
  %6499 = load double, ptr %6498, align 8, !tbaa !11
  %6500 = getelementptr inbounds %struct.doublecomplex, ptr %50, i32 0, i32 0
  store double %6499, ptr %6500, align 8, !tbaa !11
  %6501 = getelementptr inbounds %struct.doublecomplex, ptr %30, i32 0, i32 1
  %6502 = load double, ptr %6501, align 8, !tbaa !14
  %6503 = getelementptr inbounds %struct.doublecomplex, ptr %50, i32 0, i32 1
  store double %6502, ptr %6503, align 8, !tbaa !14
  %6504 = load ptr, ptr %12, align 8, !tbaa !5
  %6505 = getelementptr inbounds %struct.doublecomplex, ptr %6504, i64 2
  %6506 = call { double, double } @Cd(ptr noundef %6505)
  %6507 = extractvalue { double, double } %6506, 0
  %6508 = extractvalue { double, double } %6506, 1
  %6509 = fneg double %6508
  %6510 = call ptr @_pCd(ptr noundef %30)
  %6511 = getelementptr inbounds { double, double }, ptr %6510, i32 0, i32 0
  %6512 = getelementptr inbounds { double, double }, ptr %6510, i32 0, i32 1
  store double %6507, ptr %6511, align 8
  store double %6509, ptr %6512, align 8
  %6513 = getelementptr inbounds %struct.doublecomplex, ptr %30, i32 0, i32 0
  %6514 = load double, ptr %6513, align 8, !tbaa !11
  %6515 = getelementptr inbounds %struct.doublecomplex, ptr %60, i32 0, i32 0
  store double %6514, ptr %6515, align 8, !tbaa !11
  %6516 = getelementptr inbounds %struct.doublecomplex, ptr %30, i32 0, i32 1
  %6517 = load double, ptr %6516, align 8, !tbaa !14
  %6518 = getelementptr inbounds %struct.doublecomplex, ptr %60, i32 0, i32 1
  store double %6517, ptr %6518, align 8, !tbaa !14
  %6519 = call { double, double } @Cd(ptr noundef %60)
  %6520 = extractvalue { double, double } %6519, 0
  %6521 = extractvalue { double, double } %6519, 1
  %6522 = fneg double %6521
  %6523 = call ptr @_pCd(ptr noundef %31)
  %6524 = getelementptr inbounds { double, double }, ptr %6523, i32 0, i32 0
  %6525 = getelementptr inbounds { double, double }, ptr %6523, i32 0, i32 1
  store double %6520, ptr %6524, align 8
  store double %6522, ptr %6525, align 8
  %6526 = load ptr, ptr %13, align 8, !tbaa !5
  %6527 = getelementptr inbounds %struct.doublecomplex, ptr %6526, i32 0, i32 0
  %6528 = load double, ptr %6527, align 8, !tbaa !11
  %6529 = getelementptr inbounds %struct.doublecomplex, ptr %31, i32 0, i32 0
  %6530 = load double, ptr %6529, align 8, !tbaa !11
  %6531 = load ptr, ptr %13, align 8, !tbaa !5
  %6532 = getelementptr inbounds %struct.doublecomplex, ptr %6531, i32 0, i32 1
  %6533 = load double, ptr %6532, align 8, !tbaa !14
  %6534 = getelementptr inbounds %struct.doublecomplex, ptr %31, i32 0, i32 1
  %6535 = load double, ptr %6534, align 8, !tbaa !14
  %6536 = fmul double %6533, %6535
  %6537 = fneg double %6536
  %6538 = call double @llvm.fmuladd.f64(double %6528, double %6530, double %6537)
  %6539 = getelementptr inbounds %struct.doublecomplex, ptr %30, i32 0, i32 0
  store double %6538, ptr %6539, align 8, !tbaa !11
  %6540 = load ptr, ptr %13, align 8, !tbaa !5
  %6541 = getelementptr inbounds %struct.doublecomplex, ptr %6540, i32 0, i32 0
  %6542 = load double, ptr %6541, align 8, !tbaa !11
  %6543 = getelementptr inbounds %struct.doublecomplex, ptr %31, i32 0, i32 1
  %6544 = load double, ptr %6543, align 8, !tbaa !14
  %6545 = load ptr, ptr %13, align 8, !tbaa !5
  %6546 = getelementptr inbounds %struct.doublecomplex, ptr %6545, i32 0, i32 1
  %6547 = load double, ptr %6546, align 8, !tbaa !14
  %6548 = getelementptr inbounds %struct.doublecomplex, ptr %31, i32 0, i32 0
  %6549 = load double, ptr %6548, align 8, !tbaa !11
  %6550 = fmul double %6547, %6549
  %6551 = call double @llvm.fmuladd.f64(double %6542, double %6544, double %6550)
  %6552 = getelementptr inbounds %struct.doublecomplex, ptr %30, i32 0, i32 1
  store double %6551, ptr %6552, align 8, !tbaa !14
  %6553 = getelementptr inbounds %struct.doublecomplex, ptr %30, i32 0, i32 0
  %6554 = load double, ptr %6553, align 8, !tbaa !11
  %6555 = getelementptr inbounds %struct.doublecomplex, ptr %51, i32 0, i32 0
  store double %6554, ptr %6555, align 8, !tbaa !11
  %6556 = getelementptr inbounds %struct.doublecomplex, ptr %30, i32 0, i32 1
  %6557 = load double, ptr %6556, align 8, !tbaa !14
  %6558 = getelementptr inbounds %struct.doublecomplex, ptr %51, i32 0, i32 1
  store double %6557, ptr %6558, align 8, !tbaa !14
  %6559 = load ptr, ptr %12, align 8, !tbaa !5
  %6560 = getelementptr inbounds %struct.doublecomplex, ptr %6559, i64 3
  %6561 = call { double, double } @Cd(ptr noundef %6560)
  %6562 = extractvalue { double, double } %6561, 0
  %6563 = extractvalue { double, double } %6561, 1
  %6564 = fneg double %6563
  %6565 = call ptr @_pCd(ptr noundef %30)
  %6566 = getelementptr inbounds { double, double }, ptr %6565, i32 0, i32 0
  %6567 = getelementptr inbounds { double, double }, ptr %6565, i32 0, i32 1
  store double %6562, ptr %6566, align 8
  store double %6564, ptr %6567, align 8
  %6568 = getelementptr inbounds %struct.doublecomplex, ptr %30, i32 0, i32 0
  %6569 = load double, ptr %6568, align 8, !tbaa !11
  %6570 = getelementptr inbounds %struct.doublecomplex, ptr %61, i32 0, i32 0
  store double %6569, ptr %6570, align 8, !tbaa !11
  %6571 = getelementptr inbounds %struct.doublecomplex, ptr %30, i32 0, i32 1
  %6572 = load double, ptr %6571, align 8, !tbaa !14
  %6573 = getelementptr inbounds %struct.doublecomplex, ptr %61, i32 0, i32 1
  store double %6572, ptr %6573, align 8, !tbaa !14
  %6574 = call { double, double } @Cd(ptr noundef %61)
  %6575 = extractvalue { double, double } %6574, 0
  %6576 = extractvalue { double, double } %6574, 1
  %6577 = fneg double %6576
  %6578 = call ptr @_pCd(ptr noundef %31)
  %6579 = getelementptr inbounds { double, double }, ptr %6578, i32 0, i32 0
  %6580 = getelementptr inbounds { double, double }, ptr %6578, i32 0, i32 1
  store double %6575, ptr %6579, align 8
  store double %6577, ptr %6580, align 8
  %6581 = load ptr, ptr %13, align 8, !tbaa !5
  %6582 = getelementptr inbounds %struct.doublecomplex, ptr %6581, i32 0, i32 0
  %6583 = load double, ptr %6582, align 8, !tbaa !11
  %6584 = getelementptr inbounds %struct.doublecomplex, ptr %31, i32 0, i32 0
  %6585 = load double, ptr %6584, align 8, !tbaa !11
  %6586 = load ptr, ptr %13, align 8, !tbaa !5
  %6587 = getelementptr inbounds %struct.doublecomplex, ptr %6586, i32 0, i32 1
  %6588 = load double, ptr %6587, align 8, !tbaa !14
  %6589 = getelementptr inbounds %struct.doublecomplex, ptr %31, i32 0, i32 1
  %6590 = load double, ptr %6589, align 8, !tbaa !14
  %6591 = fmul double %6588, %6590
  %6592 = fneg double %6591
  %6593 = call double @llvm.fmuladd.f64(double %6583, double %6585, double %6592)
  %6594 = getelementptr inbounds %struct.doublecomplex, ptr %30, i32 0, i32 0
  store double %6593, ptr %6594, align 8, !tbaa !11
  %6595 = load ptr, ptr %13, align 8, !tbaa !5
  %6596 = getelementptr inbounds %struct.doublecomplex, ptr %6595, i32 0, i32 0
  %6597 = load double, ptr %6596, align 8, !tbaa !11
  %6598 = getelementptr inbounds %struct.doublecomplex, ptr %31, i32 0, i32 1
  %6599 = load double, ptr %6598, align 8, !tbaa !14
  %6600 = load ptr, ptr %13, align 8, !tbaa !5
  %6601 = getelementptr inbounds %struct.doublecomplex, ptr %6600, i32 0, i32 1
  %6602 = load double, ptr %6601, align 8, !tbaa !14
  %6603 = getelementptr inbounds %struct.doublecomplex, ptr %31, i32 0, i32 0
  %6604 = load double, ptr %6603, align 8, !tbaa !11
  %6605 = fmul double %6602, %6604
  %6606 = call double @llvm.fmuladd.f64(double %6597, double %6599, double %6605)
  %6607 = getelementptr inbounds %struct.doublecomplex, ptr %30, i32 0, i32 1
  store double %6606, ptr %6607, align 8, !tbaa !14
  %6608 = getelementptr inbounds %struct.doublecomplex, ptr %30, i32 0, i32 0
  %6609 = load double, ptr %6608, align 8, !tbaa !11
  %6610 = getelementptr inbounds %struct.doublecomplex, ptr %52, i32 0, i32 0
  store double %6609, ptr %6610, align 8, !tbaa !11
  %6611 = getelementptr inbounds %struct.doublecomplex, ptr %30, i32 0, i32 1
  %6612 = load double, ptr %6611, align 8, !tbaa !14
  %6613 = getelementptr inbounds %struct.doublecomplex, ptr %52, i32 0, i32 1
  store double %6612, ptr %6613, align 8, !tbaa !14
  %6614 = load ptr, ptr %12, align 8, !tbaa !5
  %6615 = getelementptr inbounds %struct.doublecomplex, ptr %6614, i64 4
  %6616 = call { double, double } @Cd(ptr noundef %6615)
  %6617 = extractvalue { double, double } %6616, 0
  %6618 = extractvalue { double, double } %6616, 1
  %6619 = fneg double %6618
  %6620 = call ptr @_pCd(ptr noundef %30)
  %6621 = getelementptr inbounds { double, double }, ptr %6620, i32 0, i32 0
  %6622 = getelementptr inbounds { double, double }, ptr %6620, i32 0, i32 1
  store double %6617, ptr %6621, align 8
  store double %6619, ptr %6622, align 8
  %6623 = getelementptr inbounds %struct.doublecomplex, ptr %30, i32 0, i32 0
  %6624 = load double, ptr %6623, align 8, !tbaa !11
  %6625 = getelementptr inbounds %struct.doublecomplex, ptr %62, i32 0, i32 0
  store double %6624, ptr %6625, align 8, !tbaa !11
  %6626 = getelementptr inbounds %struct.doublecomplex, ptr %30, i32 0, i32 1
  %6627 = load double, ptr %6626, align 8, !tbaa !14
  %6628 = getelementptr inbounds %struct.doublecomplex, ptr %62, i32 0, i32 1
  store double %6627, ptr %6628, align 8, !tbaa !14
  %6629 = call { double, double } @Cd(ptr noundef %62)
  %6630 = extractvalue { double, double } %6629, 0
  %6631 = extractvalue { double, double } %6629, 1
  %6632 = fneg double %6631
  %6633 = call ptr @_pCd(ptr noundef %31)
  %6634 = getelementptr inbounds { double, double }, ptr %6633, i32 0, i32 0
  %6635 = getelementptr inbounds { double, double }, ptr %6633, i32 0, i32 1
  store double %6630, ptr %6634, align 8
  store double %6632, ptr %6635, align 8
  %6636 = load ptr, ptr %13, align 8, !tbaa !5
  %6637 = getelementptr inbounds %struct.doublecomplex, ptr %6636, i32 0, i32 0
  %6638 = load double, ptr %6637, align 8, !tbaa !11
  %6639 = getelementptr inbounds %struct.doublecomplex, ptr %31, i32 0, i32 0
  %6640 = load double, ptr %6639, align 8, !tbaa !11
  %6641 = load ptr, ptr %13, align 8, !tbaa !5
  %6642 = getelementptr inbounds %struct.doublecomplex, ptr %6641, i32 0, i32 1
  %6643 = load double, ptr %6642, align 8, !tbaa !14
  %6644 = getelementptr inbounds %struct.doublecomplex, ptr %31, i32 0, i32 1
  %6645 = load double, ptr %6644, align 8, !tbaa !14
  %6646 = fmul double %6643, %6645
  %6647 = fneg double %6646
  %6648 = call double @llvm.fmuladd.f64(double %6638, double %6640, double %6647)
  %6649 = getelementptr inbounds %struct.doublecomplex, ptr %30, i32 0, i32 0
  store double %6648, ptr %6649, align 8, !tbaa !11
  %6650 = load ptr, ptr %13, align 8, !tbaa !5
  %6651 = getelementptr inbounds %struct.doublecomplex, ptr %6650, i32 0, i32 0
  %6652 = load double, ptr %6651, align 8, !tbaa !11
  %6653 = getelementptr inbounds %struct.doublecomplex, ptr %31, i32 0, i32 1
  %6654 = load double, ptr %6653, align 8, !tbaa !14
  %6655 = load ptr, ptr %13, align 8, !tbaa !5
  %6656 = getelementptr inbounds %struct.doublecomplex, ptr %6655, i32 0, i32 1
  %6657 = load double, ptr %6656, align 8, !tbaa !14
  %6658 = getelementptr inbounds %struct.doublecomplex, ptr %31, i32 0, i32 0
  %6659 = load double, ptr %6658, align 8, !tbaa !11
  %6660 = fmul double %6657, %6659
  %6661 = call double @llvm.fmuladd.f64(double %6652, double %6654, double %6660)
  %6662 = getelementptr inbounds %struct.doublecomplex, ptr %30, i32 0, i32 1
  store double %6661, ptr %6662, align 8, !tbaa !14
  %6663 = getelementptr inbounds %struct.doublecomplex, ptr %30, i32 0, i32 0
  %6664 = load double, ptr %6663, align 8, !tbaa !11
  %6665 = getelementptr inbounds %struct.doublecomplex, ptr %53, i32 0, i32 0
  store double %6664, ptr %6665, align 8, !tbaa !11
  %6666 = getelementptr inbounds %struct.doublecomplex, ptr %30, i32 0, i32 1
  %6667 = load double, ptr %6666, align 8, !tbaa !14
  %6668 = getelementptr inbounds %struct.doublecomplex, ptr %53, i32 0, i32 1
  store double %6667, ptr %6668, align 8, !tbaa !14
  %6669 = load ptr, ptr %12, align 8, !tbaa !5
  %6670 = getelementptr inbounds %struct.doublecomplex, ptr %6669, i64 5
  %6671 = call { double, double } @Cd(ptr noundef %6670)
  %6672 = extractvalue { double, double } %6671, 0
  %6673 = extractvalue { double, double } %6671, 1
  %6674 = fneg double %6673
  %6675 = call ptr @_pCd(ptr noundef %30)
  %6676 = getelementptr inbounds { double, double }, ptr %6675, i32 0, i32 0
  %6677 = getelementptr inbounds { double, double }, ptr %6675, i32 0, i32 1
  store double %6672, ptr %6676, align 8
  store double %6674, ptr %6677, align 8
  %6678 = getelementptr inbounds %struct.doublecomplex, ptr %30, i32 0, i32 0
  %6679 = load double, ptr %6678, align 8, !tbaa !11
  %6680 = getelementptr inbounds %struct.doublecomplex, ptr %63, i32 0, i32 0
  store double %6679, ptr %6680, align 8, !tbaa !11
  %6681 = getelementptr inbounds %struct.doublecomplex, ptr %30, i32 0, i32 1
  %6682 = load double, ptr %6681, align 8, !tbaa !14
  %6683 = getelementptr inbounds %struct.doublecomplex, ptr %63, i32 0, i32 1
  store double %6682, ptr %6683, align 8, !tbaa !14
  %6684 = call { double, double } @Cd(ptr noundef %63)
  %6685 = extractvalue { double, double } %6684, 0
  %6686 = extractvalue { double, double } %6684, 1
  %6687 = fneg double %6686
  %6688 = call ptr @_pCd(ptr noundef %31)
  %6689 = getelementptr inbounds { double, double }, ptr %6688, i32 0, i32 0
  %6690 = getelementptr inbounds { double, double }, ptr %6688, i32 0, i32 1
  store double %6685, ptr %6689, align 8
  store double %6687, ptr %6690, align 8
  %6691 = load ptr, ptr %13, align 8, !tbaa !5
  %6692 = getelementptr inbounds %struct.doublecomplex, ptr %6691, i32 0, i32 0
  %6693 = load double, ptr %6692, align 8, !tbaa !11
  %6694 = getelementptr inbounds %struct.doublecomplex, ptr %31, i32 0, i32 0
  %6695 = load double, ptr %6694, align 8, !tbaa !11
  %6696 = load ptr, ptr %13, align 8, !tbaa !5
  %6697 = getelementptr inbounds %struct.doublecomplex, ptr %6696, i32 0, i32 1
  %6698 = load double, ptr %6697, align 8, !tbaa !14
  %6699 = getelementptr inbounds %struct.doublecomplex, ptr %31, i32 0, i32 1
  %6700 = load double, ptr %6699, align 8, !tbaa !14
  %6701 = fmul double %6698, %6700
  %6702 = fneg double %6701
  %6703 = call double @llvm.fmuladd.f64(double %6693, double %6695, double %6702)
  %6704 = getelementptr inbounds %struct.doublecomplex, ptr %30, i32 0, i32 0
  store double %6703, ptr %6704, align 8, !tbaa !11
  %6705 = load ptr, ptr %13, align 8, !tbaa !5
  %6706 = getelementptr inbounds %struct.doublecomplex, ptr %6705, i32 0, i32 0
  %6707 = load double, ptr %6706, align 8, !tbaa !11
  %6708 = getelementptr inbounds %struct.doublecomplex, ptr %31, i32 0, i32 1
  %6709 = load double, ptr %6708, align 8, !tbaa !14
  %6710 = load ptr, ptr %13, align 8, !tbaa !5
  %6711 = getelementptr inbounds %struct.doublecomplex, ptr %6710, i32 0, i32 1
  %6712 = load double, ptr %6711, align 8, !tbaa !14
  %6713 = getelementptr inbounds %struct.doublecomplex, ptr %31, i32 0, i32 0
  %6714 = load double, ptr %6713, align 8, !tbaa !11
  %6715 = fmul double %6712, %6714
  %6716 = call double @llvm.fmuladd.f64(double %6707, double %6709, double %6715)
  %6717 = getelementptr inbounds %struct.doublecomplex, ptr %30, i32 0, i32 1
  store double %6716, ptr %6717, align 8, !tbaa !14
  %6718 = getelementptr inbounds %struct.doublecomplex, ptr %30, i32 0, i32 0
  %6719 = load double, ptr %6718, align 8, !tbaa !11
  %6720 = getelementptr inbounds %struct.doublecomplex, ptr %54, i32 0, i32 0
  store double %6719, ptr %6720, align 8, !tbaa !11
  %6721 = getelementptr inbounds %struct.doublecomplex, ptr %30, i32 0, i32 1
  %6722 = load double, ptr %6721, align 8, !tbaa !14
  %6723 = getelementptr inbounds %struct.doublecomplex, ptr %54, i32 0, i32 1
  store double %6722, ptr %6723, align 8, !tbaa !14
  %6724 = load ptr, ptr %12, align 8, !tbaa !5
  %6725 = getelementptr inbounds %struct.doublecomplex, ptr %6724, i64 6
  %6726 = call { double, double } @Cd(ptr noundef %6725)
  %6727 = extractvalue { double, double } %6726, 0
  %6728 = extractvalue { double, double } %6726, 1
  %6729 = fneg double %6728
  %6730 = call ptr @_pCd(ptr noundef %30)
  %6731 = getelementptr inbounds { double, double }, ptr %6730, i32 0, i32 0
  %6732 = getelementptr inbounds { double, double }, ptr %6730, i32 0, i32 1
  store double %6727, ptr %6731, align 8
  store double %6729, ptr %6732, align 8
  %6733 = getelementptr inbounds %struct.doublecomplex, ptr %30, i32 0, i32 0
  %6734 = load double, ptr %6733, align 8, !tbaa !11
  %6735 = getelementptr inbounds %struct.doublecomplex, ptr %64, i32 0, i32 0
  store double %6734, ptr %6735, align 8, !tbaa !11
  %6736 = getelementptr inbounds %struct.doublecomplex, ptr %30, i32 0, i32 1
  %6737 = load double, ptr %6736, align 8, !tbaa !14
  %6738 = getelementptr inbounds %struct.doublecomplex, ptr %64, i32 0, i32 1
  store double %6737, ptr %6738, align 8, !tbaa !14
  %6739 = call { double, double } @Cd(ptr noundef %64)
  %6740 = extractvalue { double, double } %6739, 0
  %6741 = extractvalue { double, double } %6739, 1
  %6742 = fneg double %6741
  %6743 = call ptr @_pCd(ptr noundef %31)
  %6744 = getelementptr inbounds { double, double }, ptr %6743, i32 0, i32 0
  %6745 = getelementptr inbounds { double, double }, ptr %6743, i32 0, i32 1
  store double %6740, ptr %6744, align 8
  store double %6742, ptr %6745, align 8
  %6746 = load ptr, ptr %13, align 8, !tbaa !5
  %6747 = getelementptr inbounds %struct.doublecomplex, ptr %6746, i32 0, i32 0
  %6748 = load double, ptr %6747, align 8, !tbaa !11
  %6749 = getelementptr inbounds %struct.doublecomplex, ptr %31, i32 0, i32 0
  %6750 = load double, ptr %6749, align 8, !tbaa !11
  %6751 = load ptr, ptr %13, align 8, !tbaa !5
  %6752 = getelementptr inbounds %struct.doublecomplex, ptr %6751, i32 0, i32 1
  %6753 = load double, ptr %6752, align 8, !tbaa !14
  %6754 = getelementptr inbounds %struct.doublecomplex, ptr %31, i32 0, i32 1
  %6755 = load double, ptr %6754, align 8, !tbaa !14
  %6756 = fmul double %6753, %6755
  %6757 = fneg double %6756
  %6758 = call double @llvm.fmuladd.f64(double %6748, double %6750, double %6757)
  %6759 = getelementptr inbounds %struct.doublecomplex, ptr %30, i32 0, i32 0
  store double %6758, ptr %6759, align 8, !tbaa !11
  %6760 = load ptr, ptr %13, align 8, !tbaa !5
  %6761 = getelementptr inbounds %struct.doublecomplex, ptr %6760, i32 0, i32 0
  %6762 = load double, ptr %6761, align 8, !tbaa !11
  %6763 = getelementptr inbounds %struct.doublecomplex, ptr %31, i32 0, i32 1
  %6764 = load double, ptr %6763, align 8, !tbaa !14
  %6765 = load ptr, ptr %13, align 8, !tbaa !5
  %6766 = getelementptr inbounds %struct.doublecomplex, ptr %6765, i32 0, i32 1
  %6767 = load double, ptr %6766, align 8, !tbaa !14
  %6768 = getelementptr inbounds %struct.doublecomplex, ptr %31, i32 0, i32 0
  %6769 = load double, ptr %6768, align 8, !tbaa !11
  %6770 = fmul double %6767, %6769
  %6771 = call double @llvm.fmuladd.f64(double %6762, double %6764, double %6770)
  %6772 = getelementptr inbounds %struct.doublecomplex, ptr %30, i32 0, i32 1
  store double %6771, ptr %6772, align 8, !tbaa !14
  %6773 = getelementptr inbounds %struct.doublecomplex, ptr %30, i32 0, i32 0
  %6774 = load double, ptr %6773, align 8, !tbaa !11
  %6775 = getelementptr inbounds %struct.doublecomplex, ptr %55, i32 0, i32 0
  store double %6774, ptr %6775, align 8, !tbaa !11
  %6776 = getelementptr inbounds %struct.doublecomplex, ptr %30, i32 0, i32 1
  %6777 = load double, ptr %6776, align 8, !tbaa !14
  %6778 = getelementptr inbounds %struct.doublecomplex, ptr %55, i32 0, i32 1
  store double %6777, ptr %6778, align 8, !tbaa !14
  %6779 = load ptr, ptr %12, align 8, !tbaa !5
  %6780 = getelementptr inbounds %struct.doublecomplex, ptr %6779, i64 7
  %6781 = call { double, double } @Cd(ptr noundef %6780)
  %6782 = extractvalue { double, double } %6781, 0
  %6783 = extractvalue { double, double } %6781, 1
  %6784 = fneg double %6783
  %6785 = call ptr @_pCd(ptr noundef %30)
  %6786 = getelementptr inbounds { double, double }, ptr %6785, i32 0, i32 0
  %6787 = getelementptr inbounds { double, double }, ptr %6785, i32 0, i32 1
  store double %6782, ptr %6786, align 8
  store double %6784, ptr %6787, align 8
  %6788 = getelementptr inbounds %struct.doublecomplex, ptr %30, i32 0, i32 0
  %6789 = load double, ptr %6788, align 8, !tbaa !11
  %6790 = getelementptr inbounds %struct.doublecomplex, ptr %65, i32 0, i32 0
  store double %6789, ptr %6790, align 8, !tbaa !11
  %6791 = getelementptr inbounds %struct.doublecomplex, ptr %30, i32 0, i32 1
  %6792 = load double, ptr %6791, align 8, !tbaa !14
  %6793 = getelementptr inbounds %struct.doublecomplex, ptr %65, i32 0, i32 1
  store double %6792, ptr %6793, align 8, !tbaa !14
  %6794 = call { double, double } @Cd(ptr noundef %65)
  %6795 = extractvalue { double, double } %6794, 0
  %6796 = extractvalue { double, double } %6794, 1
  %6797 = fneg double %6796
  %6798 = call ptr @_pCd(ptr noundef %31)
  %6799 = getelementptr inbounds { double, double }, ptr %6798, i32 0, i32 0
  %6800 = getelementptr inbounds { double, double }, ptr %6798, i32 0, i32 1
  store double %6795, ptr %6799, align 8
  store double %6797, ptr %6800, align 8
  %6801 = load ptr, ptr %13, align 8, !tbaa !5
  %6802 = getelementptr inbounds %struct.doublecomplex, ptr %6801, i32 0, i32 0
  %6803 = load double, ptr %6802, align 8, !tbaa !11
  %6804 = getelementptr inbounds %struct.doublecomplex, ptr %31, i32 0, i32 0
  %6805 = load double, ptr %6804, align 8, !tbaa !11
  %6806 = load ptr, ptr %13, align 8, !tbaa !5
  %6807 = getelementptr inbounds %struct.doublecomplex, ptr %6806, i32 0, i32 1
  %6808 = load double, ptr %6807, align 8, !tbaa !14
  %6809 = getelementptr inbounds %struct.doublecomplex, ptr %31, i32 0, i32 1
  %6810 = load double, ptr %6809, align 8, !tbaa !14
  %6811 = fmul double %6808, %6810
  %6812 = fneg double %6811
  %6813 = call double @llvm.fmuladd.f64(double %6803, double %6805, double %6812)
  %6814 = getelementptr inbounds %struct.doublecomplex, ptr %30, i32 0, i32 0
  store double %6813, ptr %6814, align 8, !tbaa !11
  %6815 = load ptr, ptr %13, align 8, !tbaa !5
  %6816 = getelementptr inbounds %struct.doublecomplex, ptr %6815, i32 0, i32 0
  %6817 = load double, ptr %6816, align 8, !tbaa !11
  %6818 = getelementptr inbounds %struct.doublecomplex, ptr %31, i32 0, i32 1
  %6819 = load double, ptr %6818, align 8, !tbaa !14
  %6820 = load ptr, ptr %13, align 8, !tbaa !5
  %6821 = getelementptr inbounds %struct.doublecomplex, ptr %6820, i32 0, i32 1
  %6822 = load double, ptr %6821, align 8, !tbaa !14
  %6823 = getelementptr inbounds %struct.doublecomplex, ptr %31, i32 0, i32 0
  %6824 = load double, ptr %6823, align 8, !tbaa !11
  %6825 = fmul double %6822, %6824
  %6826 = call double @llvm.fmuladd.f64(double %6817, double %6819, double %6825)
  %6827 = getelementptr inbounds %struct.doublecomplex, ptr %30, i32 0, i32 1
  store double %6826, ptr %6827, align 8, !tbaa !14
  %6828 = getelementptr inbounds %struct.doublecomplex, ptr %30, i32 0, i32 0
  %6829 = load double, ptr %6828, align 8, !tbaa !11
  %6830 = getelementptr inbounds %struct.doublecomplex, ptr %56, i32 0, i32 0
  store double %6829, ptr %6830, align 8, !tbaa !11
  %6831 = getelementptr inbounds %struct.doublecomplex, ptr %30, i32 0, i32 1
  %6832 = load double, ptr %6831, align 8, !tbaa !14
  %6833 = getelementptr inbounds %struct.doublecomplex, ptr %56, i32 0, i32 1
  store double %6832, ptr %6833, align 8, !tbaa !14
  %6834 = load ptr, ptr %12, align 8, !tbaa !5
  %6835 = getelementptr inbounds %struct.doublecomplex, ptr %6834, i64 8
  %6836 = call { double, double } @Cd(ptr noundef %6835)
  %6837 = extractvalue { double, double } %6836, 0
  %6838 = extractvalue { double, double } %6836, 1
  %6839 = fneg double %6838
  %6840 = call ptr @_pCd(ptr noundef %30)
  %6841 = getelementptr inbounds { double, double }, ptr %6840, i32 0, i32 0
  %6842 = getelementptr inbounds { double, double }, ptr %6840, i32 0, i32 1
  store double %6837, ptr %6841, align 8
  store double %6839, ptr %6842, align 8
  %6843 = getelementptr inbounds %struct.doublecomplex, ptr %30, i32 0, i32 0
  %6844 = load double, ptr %6843, align 8, !tbaa !11
  %6845 = getelementptr inbounds %struct.doublecomplex, ptr %66, i32 0, i32 0
  store double %6844, ptr %6845, align 8, !tbaa !11
  %6846 = getelementptr inbounds %struct.doublecomplex, ptr %30, i32 0, i32 1
  %6847 = load double, ptr %6846, align 8, !tbaa !14
  %6848 = getelementptr inbounds %struct.doublecomplex, ptr %66, i32 0, i32 1
  store double %6847, ptr %6848, align 8, !tbaa !14
  %6849 = call { double, double } @Cd(ptr noundef %66)
  %6850 = extractvalue { double, double } %6849, 0
  %6851 = extractvalue { double, double } %6849, 1
  %6852 = fneg double %6851
  %6853 = call ptr @_pCd(ptr noundef %31)
  %6854 = getelementptr inbounds { double, double }, ptr %6853, i32 0, i32 0
  %6855 = getelementptr inbounds { double, double }, ptr %6853, i32 0, i32 1
  store double %6850, ptr %6854, align 8
  store double %6852, ptr %6855, align 8
  %6856 = load ptr, ptr %13, align 8, !tbaa !5
  %6857 = getelementptr inbounds %struct.doublecomplex, ptr %6856, i32 0, i32 0
  %6858 = load double, ptr %6857, align 8, !tbaa !11
  %6859 = getelementptr inbounds %struct.doublecomplex, ptr %31, i32 0, i32 0
  %6860 = load double, ptr %6859, align 8, !tbaa !11
  %6861 = load ptr, ptr %13, align 8, !tbaa !5
  %6862 = getelementptr inbounds %struct.doublecomplex, ptr %6861, i32 0, i32 1
  %6863 = load double, ptr %6862, align 8, !tbaa !14
  %6864 = getelementptr inbounds %struct.doublecomplex, ptr %31, i32 0, i32 1
  %6865 = load double, ptr %6864, align 8, !tbaa !14
  %6866 = fmul double %6863, %6865
  %6867 = fneg double %6866
  %6868 = call double @llvm.fmuladd.f64(double %6858, double %6860, double %6867)
  %6869 = getelementptr inbounds %struct.doublecomplex, ptr %30, i32 0, i32 0
  store double %6868, ptr %6869, align 8, !tbaa !11
  %6870 = load ptr, ptr %13, align 8, !tbaa !5
  %6871 = getelementptr inbounds %struct.doublecomplex, ptr %6870, i32 0, i32 0
  %6872 = load double, ptr %6871, align 8, !tbaa !11
  %6873 = getelementptr inbounds %struct.doublecomplex, ptr %31, i32 0, i32 1
  %6874 = load double, ptr %6873, align 8, !tbaa !14
  %6875 = load ptr, ptr %13, align 8, !tbaa !5
  %6876 = getelementptr inbounds %struct.doublecomplex, ptr %6875, i32 0, i32 1
  %6877 = load double, ptr %6876, align 8, !tbaa !14
  %6878 = getelementptr inbounds %struct.doublecomplex, ptr %31, i32 0, i32 0
  %6879 = load double, ptr %6878, align 8, !tbaa !11
  %6880 = fmul double %6877, %6879
  %6881 = call double @llvm.fmuladd.f64(double %6872, double %6874, double %6880)
  %6882 = getelementptr inbounds %struct.doublecomplex, ptr %30, i32 0, i32 1
  store double %6881, ptr %6882, align 8, !tbaa !14
  %6883 = getelementptr inbounds %struct.doublecomplex, ptr %30, i32 0, i32 0
  %6884 = load double, ptr %6883, align 8, !tbaa !11
  %6885 = getelementptr inbounds %struct.doublecomplex, ptr %57, i32 0, i32 0
  store double %6884, ptr %6885, align 8, !tbaa !11
  %6886 = getelementptr inbounds %struct.doublecomplex, ptr %30, i32 0, i32 1
  %6887 = load double, ptr %6886, align 8, !tbaa !14
  %6888 = getelementptr inbounds %struct.doublecomplex, ptr %57, i32 0, i32 1
  store double %6887, ptr %6888, align 8, !tbaa !14
  %6889 = load ptr, ptr %12, align 8, !tbaa !5
  %6890 = getelementptr inbounds %struct.doublecomplex, ptr %6889, i64 9
  %6891 = call { double, double } @Cd(ptr noundef %6890)
  %6892 = extractvalue { double, double } %6891, 0
  %6893 = extractvalue { double, double } %6891, 1
  %6894 = fneg double %6893
  %6895 = call ptr @_pCd(ptr noundef %30)
  %6896 = getelementptr inbounds { double, double }, ptr %6895, i32 0, i32 0
  %6897 = getelementptr inbounds { double, double }, ptr %6895, i32 0, i32 1
  store double %6892, ptr %6896, align 8
  store double %6894, ptr %6897, align 8
  %6898 = getelementptr inbounds %struct.doublecomplex, ptr %30, i32 0, i32 0
  %6899 = load double, ptr %6898, align 8, !tbaa !11
  %6900 = getelementptr inbounds %struct.doublecomplex, ptr %67, i32 0, i32 0
  store double %6899, ptr %6900, align 8, !tbaa !11
  %6901 = getelementptr inbounds %struct.doublecomplex, ptr %30, i32 0, i32 1
  %6902 = load double, ptr %6901, align 8, !tbaa !14
  %6903 = getelementptr inbounds %struct.doublecomplex, ptr %67, i32 0, i32 1
  store double %6902, ptr %6903, align 8, !tbaa !14
  %6904 = call { double, double } @Cd(ptr noundef %67)
  %6905 = extractvalue { double, double } %6904, 0
  %6906 = extractvalue { double, double } %6904, 1
  %6907 = fneg double %6906
  %6908 = call ptr @_pCd(ptr noundef %31)
  %6909 = getelementptr inbounds { double, double }, ptr %6908, i32 0, i32 0
  %6910 = getelementptr inbounds { double, double }, ptr %6908, i32 0, i32 1
  store double %6905, ptr %6909, align 8
  store double %6907, ptr %6910, align 8
  %6911 = load ptr, ptr %13, align 8, !tbaa !5
  %6912 = getelementptr inbounds %struct.doublecomplex, ptr %6911, i32 0, i32 0
  %6913 = load double, ptr %6912, align 8, !tbaa !11
  %6914 = getelementptr inbounds %struct.doublecomplex, ptr %31, i32 0, i32 0
  %6915 = load double, ptr %6914, align 8, !tbaa !11
  %6916 = load ptr, ptr %13, align 8, !tbaa !5
  %6917 = getelementptr inbounds %struct.doublecomplex, ptr %6916, i32 0, i32 1
  %6918 = load double, ptr %6917, align 8, !tbaa !14
  %6919 = getelementptr inbounds %struct.doublecomplex, ptr %31, i32 0, i32 1
  %6920 = load double, ptr %6919, align 8, !tbaa !14
  %6921 = fmul double %6918, %6920
  %6922 = fneg double %6921
  %6923 = call double @llvm.fmuladd.f64(double %6913, double %6915, double %6922)
  %6924 = getelementptr inbounds %struct.doublecomplex, ptr %30, i32 0, i32 0
  store double %6923, ptr %6924, align 8, !tbaa !11
  %6925 = load ptr, ptr %13, align 8, !tbaa !5
  %6926 = getelementptr inbounds %struct.doublecomplex, ptr %6925, i32 0, i32 0
  %6927 = load double, ptr %6926, align 8, !tbaa !11
  %6928 = getelementptr inbounds %struct.doublecomplex, ptr %31, i32 0, i32 1
  %6929 = load double, ptr %6928, align 8, !tbaa !14
  %6930 = load ptr, ptr %13, align 8, !tbaa !5
  %6931 = getelementptr inbounds %struct.doublecomplex, ptr %6930, i32 0, i32 1
  %6932 = load double, ptr %6931, align 8, !tbaa !14
  %6933 = getelementptr inbounds %struct.doublecomplex, ptr %31, i32 0, i32 0
  %6934 = load double, ptr %6933, align 8, !tbaa !11
  %6935 = fmul double %6932, %6934
  %6936 = call double @llvm.fmuladd.f64(double %6927, double %6929, double %6935)
  %6937 = getelementptr inbounds %struct.doublecomplex, ptr %30, i32 0, i32 1
  store double %6936, ptr %6937, align 8, !tbaa !14
  %6938 = getelementptr inbounds %struct.doublecomplex, ptr %30, i32 0, i32 0
  %6939 = load double, ptr %6938, align 8, !tbaa !11
  %6940 = getelementptr inbounds %struct.doublecomplex, ptr %58, i32 0, i32 0
  store double %6939, ptr %6940, align 8, !tbaa !11
  %6941 = getelementptr inbounds %struct.doublecomplex, ptr %30, i32 0, i32 1
  %6942 = load double, ptr %6941, align 8, !tbaa !14
  %6943 = getelementptr inbounds %struct.doublecomplex, ptr %58, i32 0, i32 1
  store double %6942, ptr %6943, align 8, !tbaa !14
  %6944 = load ptr, ptr %11, align 8, !tbaa !5
  %6945 = load i32, ptr %6944, align 4, !tbaa !9
  store i32 %6945, ptr %19, align 4, !tbaa !9
  store i32 1, ptr %49, align 4, !tbaa !9
  br label %6946

6946:                                             ; preds = %8025, %6448
  %6947 = load i32, ptr %49, align 4, !tbaa !9
  %6948 = load i32, ptr %19, align 4, !tbaa !9
  %6949 = icmp sle i32 %6947, %6948
  br i1 %6949, label %6950, label %8028

6950:                                             ; preds = %6946
  %6951 = load i32, ptr %49, align 4, !tbaa !9
  %6952 = load i32, ptr %17, align 4, !tbaa !9
  %6953 = mul nsw i32 %6951, %6952
  %6954 = add nsw i32 %6953, 1
  store i32 %6954, ptr %20, align 4, !tbaa !9
  %6955 = getelementptr inbounds %struct.doublecomplex, ptr %59, i32 0, i32 0
  %6956 = load double, ptr %6955, align 8, !tbaa !11
  %6957 = load ptr, ptr %14, align 8, !tbaa !5
  %6958 = load i32, ptr %20, align 4, !tbaa !9
  %6959 = sext i32 %6958 to i64
  %6960 = getelementptr inbounds %struct.doublecomplex, ptr %6957, i64 %6959
  %6961 = getelementptr inbounds %struct.doublecomplex, ptr %6960, i32 0, i32 0
  %6962 = load double, ptr %6961, align 8, !tbaa !11
  %6963 = getelementptr inbounds %struct.doublecomplex, ptr %59, i32 0, i32 1
  %6964 = load double, ptr %6963, align 8, !tbaa !14
  %6965 = load ptr, ptr %14, align 8, !tbaa !5
  %6966 = load i32, ptr %20, align 4, !tbaa !9
  %6967 = sext i32 %6966 to i64
  %6968 = getelementptr inbounds %struct.doublecomplex, ptr %6965, i64 %6967
  %6969 = getelementptr inbounds %struct.doublecomplex, ptr %6968, i32 0, i32 1
  %6970 = load double, ptr %6969, align 8, !tbaa !14
  %6971 = fmul double %6964, %6970
  %6972 = fneg double %6971
  %6973 = call double @llvm.fmuladd.f64(double %6956, double %6962, double %6972)
  %6974 = getelementptr inbounds %struct.doublecomplex, ptr %38, i32 0, i32 0
  store double %6973, ptr %6974, align 8, !tbaa !11
  %6975 = getelementptr inbounds %struct.doublecomplex, ptr %59, i32 0, i32 0
  %6976 = load double, ptr %6975, align 8, !tbaa !11
  %6977 = load ptr, ptr %14, align 8, !tbaa !5
  %6978 = load i32, ptr %20, align 4, !tbaa !9
  %6979 = sext i32 %6978 to i64
  %6980 = getelementptr inbounds %struct.doublecomplex, ptr %6977, i64 %6979
  %6981 = getelementptr inbounds %struct.doublecomplex, ptr %6980, i32 0, i32 1
  %6982 = load double, ptr %6981, align 8, !tbaa !14
  %6983 = getelementptr inbounds %struct.doublecomplex, ptr %59, i32 0, i32 1
  %6984 = load double, ptr %6983, align 8, !tbaa !14
  %6985 = load ptr, ptr %14, align 8, !tbaa !5
  %6986 = load i32, ptr %20, align 4, !tbaa !9
  %6987 = sext i32 %6986 to i64
  %6988 = getelementptr inbounds %struct.doublecomplex, ptr %6985, i64 %6987
  %6989 = getelementptr inbounds %struct.doublecomplex, ptr %6988, i32 0, i32 0
  %6990 = load double, ptr %6989, align 8, !tbaa !11
  %6991 = fmul double %6984, %6990
  %6992 = call double @llvm.fmuladd.f64(double %6976, double %6982, double %6991)
  %6993 = getelementptr inbounds %struct.doublecomplex, ptr %38, i32 0, i32 1
  store double %6992, ptr %6993, align 8, !tbaa !14
  %6994 = load i32, ptr %49, align 4, !tbaa !9
  %6995 = load i32, ptr %17, align 4, !tbaa !9
  %6996 = mul nsw i32 %6994, %6995
  %6997 = add nsw i32 %6996, 2
  store i32 %6997, ptr %21, align 4, !tbaa !9
  %6998 = getelementptr inbounds %struct.doublecomplex, ptr %60, i32 0, i32 0
  %6999 = load double, ptr %6998, align 8, !tbaa !11
  %7000 = load ptr, ptr %14, align 8, !tbaa !5
  %7001 = load i32, ptr %21, align 4, !tbaa !9
  %7002 = sext i32 %7001 to i64
  %7003 = getelementptr inbounds %struct.doublecomplex, ptr %7000, i64 %7002
  %7004 = getelementptr inbounds %struct.doublecomplex, ptr %7003, i32 0, i32 0
  %7005 = load double, ptr %7004, align 8, !tbaa !11
  %7006 = getelementptr inbounds %struct.doublecomplex, ptr %60, i32 0, i32 1
  %7007 = load double, ptr %7006, align 8, !tbaa !14
  %7008 = load ptr, ptr %14, align 8, !tbaa !5
  %7009 = load i32, ptr %21, align 4, !tbaa !9
  %7010 = sext i32 %7009 to i64
  %7011 = getelementptr inbounds %struct.doublecomplex, ptr %7008, i64 %7010
  %7012 = getelementptr inbounds %struct.doublecomplex, ptr %7011, i32 0, i32 1
  %7013 = load double, ptr %7012, align 8, !tbaa !14
  %7014 = fmul double %7007, %7013
  %7015 = fneg double %7014
  %7016 = call double @llvm.fmuladd.f64(double %6999, double %7005, double %7015)
  %7017 = getelementptr inbounds %struct.doublecomplex, ptr %39, i32 0, i32 0
  store double %7016, ptr %7017, align 8, !tbaa !11
  %7018 = getelementptr inbounds %struct.doublecomplex, ptr %60, i32 0, i32 0
  %7019 = load double, ptr %7018, align 8, !tbaa !11
  %7020 = load ptr, ptr %14, align 8, !tbaa !5
  %7021 = load i32, ptr %21, align 4, !tbaa !9
  %7022 = sext i32 %7021 to i64
  %7023 = getelementptr inbounds %struct.doublecomplex, ptr %7020, i64 %7022
  %7024 = getelementptr inbounds %struct.doublecomplex, ptr %7023, i32 0, i32 1
  %7025 = load double, ptr %7024, align 8, !tbaa !14
  %7026 = getelementptr inbounds %struct.doublecomplex, ptr %60, i32 0, i32 1
  %7027 = load double, ptr %7026, align 8, !tbaa !14
  %7028 = load ptr, ptr %14, align 8, !tbaa !5
  %7029 = load i32, ptr %21, align 4, !tbaa !9
  %7030 = sext i32 %7029 to i64
  %7031 = getelementptr inbounds %struct.doublecomplex, ptr %7028, i64 %7030
  %7032 = getelementptr inbounds %struct.doublecomplex, ptr %7031, i32 0, i32 0
  %7033 = load double, ptr %7032, align 8, !tbaa !11
  %7034 = fmul double %7027, %7033
  %7035 = call double @llvm.fmuladd.f64(double %7019, double %7025, double %7034)
  %7036 = getelementptr inbounds %struct.doublecomplex, ptr %39, i32 0, i32 1
  store double %7035, ptr %7036, align 8, !tbaa !14
  %7037 = getelementptr inbounds %struct.doublecomplex, ptr %38, i32 0, i32 0
  %7038 = load double, ptr %7037, align 8, !tbaa !11
  %7039 = getelementptr inbounds %struct.doublecomplex, ptr %39, i32 0, i32 0
  %7040 = load double, ptr %7039, align 8, !tbaa !11
  %7041 = fadd double %7038, %7040
  %7042 = getelementptr inbounds %struct.doublecomplex, ptr %37, i32 0, i32 0
  store double %7041, ptr %7042, align 8, !tbaa !11
  %7043 = getelementptr inbounds %struct.doublecomplex, ptr %38, i32 0, i32 1
  %7044 = load double, ptr %7043, align 8, !tbaa !14
  %7045 = getelementptr inbounds %struct.doublecomplex, ptr %39, i32 0, i32 1
  %7046 = load double, ptr %7045, align 8, !tbaa !14
  %7047 = fadd double %7044, %7046
  %7048 = getelementptr inbounds %struct.doublecomplex, ptr %37, i32 0, i32 1
  store double %7047, ptr %7048, align 8, !tbaa !14
  %7049 = load i32, ptr %49, align 4, !tbaa !9
  %7050 = load i32, ptr %17, align 4, !tbaa !9
  %7051 = mul nsw i32 %7049, %7050
  %7052 = add nsw i32 %7051, 3
  store i32 %7052, ptr %22, align 4, !tbaa !9
  %7053 = getelementptr inbounds %struct.doublecomplex, ptr %61, i32 0, i32 0
  %7054 = load double, ptr %7053, align 8, !tbaa !11
  %7055 = load ptr, ptr %14, align 8, !tbaa !5
  %7056 = load i32, ptr %22, align 4, !tbaa !9
  %7057 = sext i32 %7056 to i64
  %7058 = getelementptr inbounds %struct.doublecomplex, ptr %7055, i64 %7057
  %7059 = getelementptr inbounds %struct.doublecomplex, ptr %7058, i32 0, i32 0
  %7060 = load double, ptr %7059, align 8, !tbaa !11
  %7061 = getelementptr inbounds %struct.doublecomplex, ptr %61, i32 0, i32 1
  %7062 = load double, ptr %7061, align 8, !tbaa !14
  %7063 = load ptr, ptr %14, align 8, !tbaa !5
  %7064 = load i32, ptr %22, align 4, !tbaa !9
  %7065 = sext i32 %7064 to i64
  %7066 = getelementptr inbounds %struct.doublecomplex, ptr %7063, i64 %7065
  %7067 = getelementptr inbounds %struct.doublecomplex, ptr %7066, i32 0, i32 1
  %7068 = load double, ptr %7067, align 8, !tbaa !14
  %7069 = fmul double %7062, %7068
  %7070 = fneg double %7069
  %7071 = call double @llvm.fmuladd.f64(double %7054, double %7060, double %7070)
  %7072 = getelementptr inbounds %struct.doublecomplex, ptr %40, i32 0, i32 0
  store double %7071, ptr %7072, align 8, !tbaa !11
  %7073 = getelementptr inbounds %struct.doublecomplex, ptr %61, i32 0, i32 0
  %7074 = load double, ptr %7073, align 8, !tbaa !11
  %7075 = load ptr, ptr %14, align 8, !tbaa !5
  %7076 = load i32, ptr %22, align 4, !tbaa !9
  %7077 = sext i32 %7076 to i64
  %7078 = getelementptr inbounds %struct.doublecomplex, ptr %7075, i64 %7077
  %7079 = getelementptr inbounds %struct.doublecomplex, ptr %7078, i32 0, i32 1
  %7080 = load double, ptr %7079, align 8, !tbaa !14
  %7081 = getelementptr inbounds %struct.doublecomplex, ptr %61, i32 0, i32 1
  %7082 = load double, ptr %7081, align 8, !tbaa !14
  %7083 = load ptr, ptr %14, align 8, !tbaa !5
  %7084 = load i32, ptr %22, align 4, !tbaa !9
  %7085 = sext i32 %7084 to i64
  %7086 = getelementptr inbounds %struct.doublecomplex, ptr %7083, i64 %7085
  %7087 = getelementptr inbounds %struct.doublecomplex, ptr %7086, i32 0, i32 0
  %7088 = load double, ptr %7087, align 8, !tbaa !11
  %7089 = fmul double %7082, %7088
  %7090 = call double @llvm.fmuladd.f64(double %7074, double %7080, double %7089)
  %7091 = getelementptr inbounds %struct.doublecomplex, ptr %40, i32 0, i32 1
  store double %7090, ptr %7091, align 8, !tbaa !14
  %7092 = getelementptr inbounds %struct.doublecomplex, ptr %37, i32 0, i32 0
  %7093 = load double, ptr %7092, align 8, !tbaa !11
  %7094 = getelementptr inbounds %struct.doublecomplex, ptr %40, i32 0, i32 0
  %7095 = load double, ptr %7094, align 8, !tbaa !11
  %7096 = fadd double %7093, %7095
  %7097 = getelementptr inbounds %struct.doublecomplex, ptr %36, i32 0, i32 0
  store double %7096, ptr %7097, align 8, !tbaa !11
  %7098 = getelementptr inbounds %struct.doublecomplex, ptr %37, i32 0, i32 1
  %7099 = load double, ptr %7098, align 8, !tbaa !14
  %7100 = getelementptr inbounds %struct.doublecomplex, ptr %40, i32 0, i32 1
  %7101 = load double, ptr %7100, align 8, !tbaa !14
  %7102 = fadd double %7099, %7101
  %7103 = getelementptr inbounds %struct.doublecomplex, ptr %36, i32 0, i32 1
  store double %7102, ptr %7103, align 8, !tbaa !14
  %7104 = load i32, ptr %49, align 4, !tbaa !9
  %7105 = load i32, ptr %17, align 4, !tbaa !9
  %7106 = mul nsw i32 %7104, %7105
  %7107 = add nsw i32 %7106, 4
  store i32 %7107, ptr %23, align 4, !tbaa !9
  %7108 = getelementptr inbounds %struct.doublecomplex, ptr %62, i32 0, i32 0
  %7109 = load double, ptr %7108, align 8, !tbaa !11
  %7110 = load ptr, ptr %14, align 8, !tbaa !5
  %7111 = load i32, ptr %23, align 4, !tbaa !9
  %7112 = sext i32 %7111 to i64
  %7113 = getelementptr inbounds %struct.doublecomplex, ptr %7110, i64 %7112
  %7114 = getelementptr inbounds %struct.doublecomplex, ptr %7113, i32 0, i32 0
  %7115 = load double, ptr %7114, align 8, !tbaa !11
  %7116 = getelementptr inbounds %struct.doublecomplex, ptr %62, i32 0, i32 1
  %7117 = load double, ptr %7116, align 8, !tbaa !14
  %7118 = load ptr, ptr %14, align 8, !tbaa !5
  %7119 = load i32, ptr %23, align 4, !tbaa !9
  %7120 = sext i32 %7119 to i64
  %7121 = getelementptr inbounds %struct.doublecomplex, ptr %7118, i64 %7120
  %7122 = getelementptr inbounds %struct.doublecomplex, ptr %7121, i32 0, i32 1
  %7123 = load double, ptr %7122, align 8, !tbaa !14
  %7124 = fmul double %7117, %7123
  %7125 = fneg double %7124
  %7126 = call double @llvm.fmuladd.f64(double %7109, double %7115, double %7125)
  %7127 = getelementptr inbounds %struct.doublecomplex, ptr %41, i32 0, i32 0
  store double %7126, ptr %7127, align 8, !tbaa !11
  %7128 = getelementptr inbounds %struct.doublecomplex, ptr %62, i32 0, i32 0
  %7129 = load double, ptr %7128, align 8, !tbaa !11
  %7130 = load ptr, ptr %14, align 8, !tbaa !5
  %7131 = load i32, ptr %23, align 4, !tbaa !9
  %7132 = sext i32 %7131 to i64
  %7133 = getelementptr inbounds %struct.doublecomplex, ptr %7130, i64 %7132
  %7134 = getelementptr inbounds %struct.doublecomplex, ptr %7133, i32 0, i32 1
  %7135 = load double, ptr %7134, align 8, !tbaa !14
  %7136 = getelementptr inbounds %struct.doublecomplex, ptr %62, i32 0, i32 1
  %7137 = load double, ptr %7136, align 8, !tbaa !14
  %7138 = load ptr, ptr %14, align 8, !tbaa !5
  %7139 = load i32, ptr %23, align 4, !tbaa !9
  %7140 = sext i32 %7139 to i64
  %7141 = getelementptr inbounds %struct.doublecomplex, ptr %7138, i64 %7140
  %7142 = getelementptr inbounds %struct.doublecomplex, ptr %7141, i32 0, i32 0
  %7143 = load double, ptr %7142, align 8, !tbaa !11
  %7144 = fmul double %7137, %7143
  %7145 = call double @llvm.fmuladd.f64(double %7129, double %7135, double %7144)
  %7146 = getelementptr inbounds %struct.doublecomplex, ptr %41, i32 0, i32 1
  store double %7145, ptr %7146, align 8, !tbaa !14
  %7147 = getelementptr inbounds %struct.doublecomplex, ptr %36, i32 0, i32 0
  %7148 = load double, ptr %7147, align 8, !tbaa !11
  %7149 = getelementptr inbounds %struct.doublecomplex, ptr %41, i32 0, i32 0
  %7150 = load double, ptr %7149, align 8, !tbaa !11
  %7151 = fadd double %7148, %7150
  %7152 = getelementptr inbounds %struct.doublecomplex, ptr %35, i32 0, i32 0
  store double %7151, ptr %7152, align 8, !tbaa !11
  %7153 = getelementptr inbounds %struct.doublecomplex, ptr %36, i32 0, i32 1
  %7154 = load double, ptr %7153, align 8, !tbaa !14
  %7155 = getelementptr inbounds %struct.doublecomplex, ptr %41, i32 0, i32 1
  %7156 = load double, ptr %7155, align 8, !tbaa !14
  %7157 = fadd double %7154, %7156
  %7158 = getelementptr inbounds %struct.doublecomplex, ptr %35, i32 0, i32 1
  store double %7157, ptr %7158, align 8, !tbaa !14
  %7159 = load i32, ptr %49, align 4, !tbaa !9
  %7160 = load i32, ptr %17, align 4, !tbaa !9
  %7161 = mul nsw i32 %7159, %7160
  %7162 = add nsw i32 %7161, 5
  store i32 %7162, ptr %24, align 4, !tbaa !9
  %7163 = getelementptr inbounds %struct.doublecomplex, ptr %63, i32 0, i32 0
  %7164 = load double, ptr %7163, align 8, !tbaa !11
  %7165 = load ptr, ptr %14, align 8, !tbaa !5
  %7166 = load i32, ptr %24, align 4, !tbaa !9
  %7167 = sext i32 %7166 to i64
  %7168 = getelementptr inbounds %struct.doublecomplex, ptr %7165, i64 %7167
  %7169 = getelementptr inbounds %struct.doublecomplex, ptr %7168, i32 0, i32 0
  %7170 = load double, ptr %7169, align 8, !tbaa !11
  %7171 = getelementptr inbounds %struct.doublecomplex, ptr %63, i32 0, i32 1
  %7172 = load double, ptr %7171, align 8, !tbaa !14
  %7173 = load ptr, ptr %14, align 8, !tbaa !5
  %7174 = load i32, ptr %24, align 4, !tbaa !9
  %7175 = sext i32 %7174 to i64
  %7176 = getelementptr inbounds %struct.doublecomplex, ptr %7173, i64 %7175
  %7177 = getelementptr inbounds %struct.doublecomplex, ptr %7176, i32 0, i32 1
  %7178 = load double, ptr %7177, align 8, !tbaa !14
  %7179 = fmul double %7172, %7178
  %7180 = fneg double %7179
  %7181 = call double @llvm.fmuladd.f64(double %7164, double %7170, double %7180)
  %7182 = getelementptr inbounds %struct.doublecomplex, ptr %42, i32 0, i32 0
  store double %7181, ptr %7182, align 8, !tbaa !11
  %7183 = getelementptr inbounds %struct.doublecomplex, ptr %63, i32 0, i32 0
  %7184 = load double, ptr %7183, align 8, !tbaa !11
  %7185 = load ptr, ptr %14, align 8, !tbaa !5
  %7186 = load i32, ptr %24, align 4, !tbaa !9
  %7187 = sext i32 %7186 to i64
  %7188 = getelementptr inbounds %struct.doublecomplex, ptr %7185, i64 %7187
  %7189 = getelementptr inbounds %struct.doublecomplex, ptr %7188, i32 0, i32 1
  %7190 = load double, ptr %7189, align 8, !tbaa !14
  %7191 = getelementptr inbounds %struct.doublecomplex, ptr %63, i32 0, i32 1
  %7192 = load double, ptr %7191, align 8, !tbaa !14
  %7193 = load ptr, ptr %14, align 8, !tbaa !5
  %7194 = load i32, ptr %24, align 4, !tbaa !9
  %7195 = sext i32 %7194 to i64
  %7196 = getelementptr inbounds %struct.doublecomplex, ptr %7193, i64 %7195
  %7197 = getelementptr inbounds %struct.doublecomplex, ptr %7196, i32 0, i32 0
  %7198 = load double, ptr %7197, align 8, !tbaa !11
  %7199 = fmul double %7192, %7198
  %7200 = call double @llvm.fmuladd.f64(double %7184, double %7190, double %7199)
  %7201 = getelementptr inbounds %struct.doublecomplex, ptr %42, i32 0, i32 1
  store double %7200, ptr %7201, align 8, !tbaa !14
  %7202 = getelementptr inbounds %struct.doublecomplex, ptr %35, i32 0, i32 0
  %7203 = load double, ptr %7202, align 8, !tbaa !11
  %7204 = getelementptr inbounds %struct.doublecomplex, ptr %42, i32 0, i32 0
  %7205 = load double, ptr %7204, align 8, !tbaa !11
  %7206 = fadd double %7203, %7205
  %7207 = getelementptr inbounds %struct.doublecomplex, ptr %34, i32 0, i32 0
  store double %7206, ptr %7207, align 8, !tbaa !11
  %7208 = getelementptr inbounds %struct.doublecomplex, ptr %35, i32 0, i32 1
  %7209 = load double, ptr %7208, align 8, !tbaa !14
  %7210 = getelementptr inbounds %struct.doublecomplex, ptr %42, i32 0, i32 1
  %7211 = load double, ptr %7210, align 8, !tbaa !14
  %7212 = fadd double %7209, %7211
  %7213 = getelementptr inbounds %struct.doublecomplex, ptr %34, i32 0, i32 1
  store double %7212, ptr %7213, align 8, !tbaa !14
  %7214 = load i32, ptr %49, align 4, !tbaa !9
  %7215 = load i32, ptr %17, align 4, !tbaa !9
  %7216 = mul nsw i32 %7214, %7215
  %7217 = add nsw i32 %7216, 6
  store i32 %7217, ptr %25, align 4, !tbaa !9
  %7218 = getelementptr inbounds %struct.doublecomplex, ptr %64, i32 0, i32 0
  %7219 = load double, ptr %7218, align 8, !tbaa !11
  %7220 = load ptr, ptr %14, align 8, !tbaa !5
  %7221 = load i32, ptr %25, align 4, !tbaa !9
  %7222 = sext i32 %7221 to i64
  %7223 = getelementptr inbounds %struct.doublecomplex, ptr %7220, i64 %7222
  %7224 = getelementptr inbounds %struct.doublecomplex, ptr %7223, i32 0, i32 0
  %7225 = load double, ptr %7224, align 8, !tbaa !11
  %7226 = getelementptr inbounds %struct.doublecomplex, ptr %64, i32 0, i32 1
  %7227 = load double, ptr %7226, align 8, !tbaa !14
  %7228 = load ptr, ptr %14, align 8, !tbaa !5
  %7229 = load i32, ptr %25, align 4, !tbaa !9
  %7230 = sext i32 %7229 to i64
  %7231 = getelementptr inbounds %struct.doublecomplex, ptr %7228, i64 %7230
  %7232 = getelementptr inbounds %struct.doublecomplex, ptr %7231, i32 0, i32 1
  %7233 = load double, ptr %7232, align 8, !tbaa !14
  %7234 = fmul double %7227, %7233
  %7235 = fneg double %7234
  %7236 = call double @llvm.fmuladd.f64(double %7219, double %7225, double %7235)
  %7237 = getelementptr inbounds %struct.doublecomplex, ptr %43, i32 0, i32 0
  store double %7236, ptr %7237, align 8, !tbaa !11
  %7238 = getelementptr inbounds %struct.doublecomplex, ptr %64, i32 0, i32 0
  %7239 = load double, ptr %7238, align 8, !tbaa !11
  %7240 = load ptr, ptr %14, align 8, !tbaa !5
  %7241 = load i32, ptr %25, align 4, !tbaa !9
  %7242 = sext i32 %7241 to i64
  %7243 = getelementptr inbounds %struct.doublecomplex, ptr %7240, i64 %7242
  %7244 = getelementptr inbounds %struct.doublecomplex, ptr %7243, i32 0, i32 1
  %7245 = load double, ptr %7244, align 8, !tbaa !14
  %7246 = getelementptr inbounds %struct.doublecomplex, ptr %64, i32 0, i32 1
  %7247 = load double, ptr %7246, align 8, !tbaa !14
  %7248 = load ptr, ptr %14, align 8, !tbaa !5
  %7249 = load i32, ptr %25, align 4, !tbaa !9
  %7250 = sext i32 %7249 to i64
  %7251 = getelementptr inbounds %struct.doublecomplex, ptr %7248, i64 %7250
  %7252 = getelementptr inbounds %struct.doublecomplex, ptr %7251, i32 0, i32 0
  %7253 = load double, ptr %7252, align 8, !tbaa !11
  %7254 = fmul double %7247, %7253
  %7255 = call double @llvm.fmuladd.f64(double %7239, double %7245, double %7254)
  %7256 = getelementptr inbounds %struct.doublecomplex, ptr %43, i32 0, i32 1
  store double %7255, ptr %7256, align 8, !tbaa !14
  %7257 = getelementptr inbounds %struct.doublecomplex, ptr %34, i32 0, i32 0
  %7258 = load double, ptr %7257, align 8, !tbaa !11
  %7259 = getelementptr inbounds %struct.doublecomplex, ptr %43, i32 0, i32 0
  %7260 = load double, ptr %7259, align 8, !tbaa !11
  %7261 = fadd double %7258, %7260
  %7262 = getelementptr inbounds %struct.doublecomplex, ptr %33, i32 0, i32 0
  store double %7261, ptr %7262, align 8, !tbaa !11
  %7263 = getelementptr inbounds %struct.doublecomplex, ptr %34, i32 0, i32 1
  %7264 = load double, ptr %7263, align 8, !tbaa !14
  %7265 = getelementptr inbounds %struct.doublecomplex, ptr %43, i32 0, i32 1
  %7266 = load double, ptr %7265, align 8, !tbaa !14
  %7267 = fadd double %7264, %7266
  %7268 = getelementptr inbounds %struct.doublecomplex, ptr %33, i32 0, i32 1
  store double %7267, ptr %7268, align 8, !tbaa !14
  %7269 = load i32, ptr %49, align 4, !tbaa !9
  %7270 = load i32, ptr %17, align 4, !tbaa !9
  %7271 = mul nsw i32 %7269, %7270
  %7272 = add nsw i32 %7271, 7
  store i32 %7272, ptr %26, align 4, !tbaa !9
  %7273 = getelementptr inbounds %struct.doublecomplex, ptr %65, i32 0, i32 0
  %7274 = load double, ptr %7273, align 8, !tbaa !11
  %7275 = load ptr, ptr %14, align 8, !tbaa !5
  %7276 = load i32, ptr %26, align 4, !tbaa !9
  %7277 = sext i32 %7276 to i64
  %7278 = getelementptr inbounds %struct.doublecomplex, ptr %7275, i64 %7277
  %7279 = getelementptr inbounds %struct.doublecomplex, ptr %7278, i32 0, i32 0
  %7280 = load double, ptr %7279, align 8, !tbaa !11
  %7281 = getelementptr inbounds %struct.doublecomplex, ptr %65, i32 0, i32 1
  %7282 = load double, ptr %7281, align 8, !tbaa !14
  %7283 = load ptr, ptr %14, align 8, !tbaa !5
  %7284 = load i32, ptr %26, align 4, !tbaa !9
  %7285 = sext i32 %7284 to i64
  %7286 = getelementptr inbounds %struct.doublecomplex, ptr %7283, i64 %7285
  %7287 = getelementptr inbounds %struct.doublecomplex, ptr %7286, i32 0, i32 1
  %7288 = load double, ptr %7287, align 8, !tbaa !14
  %7289 = fmul double %7282, %7288
  %7290 = fneg double %7289
  %7291 = call double @llvm.fmuladd.f64(double %7274, double %7280, double %7290)
  %7292 = getelementptr inbounds %struct.doublecomplex, ptr %44, i32 0, i32 0
  store double %7291, ptr %7292, align 8, !tbaa !11
  %7293 = getelementptr inbounds %struct.doublecomplex, ptr %65, i32 0, i32 0
  %7294 = load double, ptr %7293, align 8, !tbaa !11
  %7295 = load ptr, ptr %14, align 8, !tbaa !5
  %7296 = load i32, ptr %26, align 4, !tbaa !9
  %7297 = sext i32 %7296 to i64
  %7298 = getelementptr inbounds %struct.doublecomplex, ptr %7295, i64 %7297
  %7299 = getelementptr inbounds %struct.doublecomplex, ptr %7298, i32 0, i32 1
  %7300 = load double, ptr %7299, align 8, !tbaa !14
  %7301 = getelementptr inbounds %struct.doublecomplex, ptr %65, i32 0, i32 1
  %7302 = load double, ptr %7301, align 8, !tbaa !14
  %7303 = load ptr, ptr %14, align 8, !tbaa !5
  %7304 = load i32, ptr %26, align 4, !tbaa !9
  %7305 = sext i32 %7304 to i64
  %7306 = getelementptr inbounds %struct.doublecomplex, ptr %7303, i64 %7305
  %7307 = getelementptr inbounds %struct.doublecomplex, ptr %7306, i32 0, i32 0
  %7308 = load double, ptr %7307, align 8, !tbaa !11
  %7309 = fmul double %7302, %7308
  %7310 = call double @llvm.fmuladd.f64(double %7294, double %7300, double %7309)
  %7311 = getelementptr inbounds %struct.doublecomplex, ptr %44, i32 0, i32 1
  store double %7310, ptr %7311, align 8, !tbaa !14
  %7312 = getelementptr inbounds %struct.doublecomplex, ptr %33, i32 0, i32 0
  %7313 = load double, ptr %7312, align 8, !tbaa !11
  %7314 = getelementptr inbounds %struct.doublecomplex, ptr %44, i32 0, i32 0
  %7315 = load double, ptr %7314, align 8, !tbaa !11
  %7316 = fadd double %7313, %7315
  %7317 = getelementptr inbounds %struct.doublecomplex, ptr %32, i32 0, i32 0
  store double %7316, ptr %7317, align 8, !tbaa !11
  %7318 = getelementptr inbounds %struct.doublecomplex, ptr %33, i32 0, i32 1
  %7319 = load double, ptr %7318, align 8, !tbaa !14
  %7320 = getelementptr inbounds %struct.doublecomplex, ptr %44, i32 0, i32 1
  %7321 = load double, ptr %7320, align 8, !tbaa !14
  %7322 = fadd double %7319, %7321
  %7323 = getelementptr inbounds %struct.doublecomplex, ptr %32, i32 0, i32 1
  store double %7322, ptr %7323, align 8, !tbaa !14
  %7324 = load i32, ptr %49, align 4, !tbaa !9
  %7325 = load i32, ptr %17, align 4, !tbaa !9
  %7326 = mul nsw i32 %7324, %7325
  %7327 = add nsw i32 %7326, 8
  store i32 %7327, ptr %27, align 4, !tbaa !9
  %7328 = getelementptr inbounds %struct.doublecomplex, ptr %66, i32 0, i32 0
  %7329 = load double, ptr %7328, align 8, !tbaa !11
  %7330 = load ptr, ptr %14, align 8, !tbaa !5
  %7331 = load i32, ptr %27, align 4, !tbaa !9
  %7332 = sext i32 %7331 to i64
  %7333 = getelementptr inbounds %struct.doublecomplex, ptr %7330, i64 %7332
  %7334 = getelementptr inbounds %struct.doublecomplex, ptr %7333, i32 0, i32 0
  %7335 = load double, ptr %7334, align 8, !tbaa !11
  %7336 = getelementptr inbounds %struct.doublecomplex, ptr %66, i32 0, i32 1
  %7337 = load double, ptr %7336, align 8, !tbaa !14
  %7338 = load ptr, ptr %14, align 8, !tbaa !5
  %7339 = load i32, ptr %27, align 4, !tbaa !9
  %7340 = sext i32 %7339 to i64
  %7341 = getelementptr inbounds %struct.doublecomplex, ptr %7338, i64 %7340
  %7342 = getelementptr inbounds %struct.doublecomplex, ptr %7341, i32 0, i32 1
  %7343 = load double, ptr %7342, align 8, !tbaa !14
  %7344 = fmul double %7337, %7343
  %7345 = fneg double %7344
  %7346 = call double @llvm.fmuladd.f64(double %7329, double %7335, double %7345)
  %7347 = getelementptr inbounds %struct.doublecomplex, ptr %45, i32 0, i32 0
  store double %7346, ptr %7347, align 8, !tbaa !11
  %7348 = getelementptr inbounds %struct.doublecomplex, ptr %66, i32 0, i32 0
  %7349 = load double, ptr %7348, align 8, !tbaa !11
  %7350 = load ptr, ptr %14, align 8, !tbaa !5
  %7351 = load i32, ptr %27, align 4, !tbaa !9
  %7352 = sext i32 %7351 to i64
  %7353 = getelementptr inbounds %struct.doublecomplex, ptr %7350, i64 %7352
  %7354 = getelementptr inbounds %struct.doublecomplex, ptr %7353, i32 0, i32 1
  %7355 = load double, ptr %7354, align 8, !tbaa !14
  %7356 = getelementptr inbounds %struct.doublecomplex, ptr %66, i32 0, i32 1
  %7357 = load double, ptr %7356, align 8, !tbaa !14
  %7358 = load ptr, ptr %14, align 8, !tbaa !5
  %7359 = load i32, ptr %27, align 4, !tbaa !9
  %7360 = sext i32 %7359 to i64
  %7361 = getelementptr inbounds %struct.doublecomplex, ptr %7358, i64 %7360
  %7362 = getelementptr inbounds %struct.doublecomplex, ptr %7361, i32 0, i32 0
  %7363 = load double, ptr %7362, align 8, !tbaa !11
  %7364 = fmul double %7357, %7363
  %7365 = call double @llvm.fmuladd.f64(double %7349, double %7355, double %7364)
  %7366 = getelementptr inbounds %struct.doublecomplex, ptr %45, i32 0, i32 1
  store double %7365, ptr %7366, align 8, !tbaa !14
  %7367 = getelementptr inbounds %struct.doublecomplex, ptr %32, i32 0, i32 0
  %7368 = load double, ptr %7367, align 8, !tbaa !11
  %7369 = getelementptr inbounds %struct.doublecomplex, ptr %45, i32 0, i32 0
  %7370 = load double, ptr %7369, align 8, !tbaa !11
  %7371 = fadd double %7368, %7370
  %7372 = getelementptr inbounds %struct.doublecomplex, ptr %31, i32 0, i32 0
  store double %7371, ptr %7372, align 8, !tbaa !11
  %7373 = getelementptr inbounds %struct.doublecomplex, ptr %32, i32 0, i32 1
  %7374 = load double, ptr %7373, align 8, !tbaa !14
  %7375 = getelementptr inbounds %struct.doublecomplex, ptr %45, i32 0, i32 1
  %7376 = load double, ptr %7375, align 8, !tbaa !14
  %7377 = fadd double %7374, %7376
  %7378 = getelementptr inbounds %struct.doublecomplex, ptr %31, i32 0, i32 1
  store double %7377, ptr %7378, align 8, !tbaa !14
  %7379 = load i32, ptr %49, align 4, !tbaa !9
  %7380 = load i32, ptr %17, align 4, !tbaa !9
  %7381 = mul nsw i32 %7379, %7380
  %7382 = add nsw i32 %7381, 9
  store i32 %7382, ptr %28, align 4, !tbaa !9
  %7383 = getelementptr inbounds %struct.doublecomplex, ptr %67, i32 0, i32 0
  %7384 = load double, ptr %7383, align 8, !tbaa !11
  %7385 = load ptr, ptr %14, align 8, !tbaa !5
  %7386 = load i32, ptr %28, align 4, !tbaa !9
  %7387 = sext i32 %7386 to i64
  %7388 = getelementptr inbounds %struct.doublecomplex, ptr %7385, i64 %7387
  %7389 = getelementptr inbounds %struct.doublecomplex, ptr %7388, i32 0, i32 0
  %7390 = load double, ptr %7389, align 8, !tbaa !11
  %7391 = getelementptr inbounds %struct.doublecomplex, ptr %67, i32 0, i32 1
  %7392 = load double, ptr %7391, align 8, !tbaa !14
  %7393 = load ptr, ptr %14, align 8, !tbaa !5
  %7394 = load i32, ptr %28, align 4, !tbaa !9
  %7395 = sext i32 %7394 to i64
  %7396 = getelementptr inbounds %struct.doublecomplex, ptr %7393, i64 %7395
  %7397 = getelementptr inbounds %struct.doublecomplex, ptr %7396, i32 0, i32 1
  %7398 = load double, ptr %7397, align 8, !tbaa !14
  %7399 = fmul double %7392, %7398
  %7400 = fneg double %7399
  %7401 = call double @llvm.fmuladd.f64(double %7384, double %7390, double %7400)
  %7402 = getelementptr inbounds %struct.doublecomplex, ptr %46, i32 0, i32 0
  store double %7401, ptr %7402, align 8, !tbaa !11
  %7403 = getelementptr inbounds %struct.doublecomplex, ptr %67, i32 0, i32 0
  %7404 = load double, ptr %7403, align 8, !tbaa !11
  %7405 = load ptr, ptr %14, align 8, !tbaa !5
  %7406 = load i32, ptr %28, align 4, !tbaa !9
  %7407 = sext i32 %7406 to i64
  %7408 = getelementptr inbounds %struct.doublecomplex, ptr %7405, i64 %7407
  %7409 = getelementptr inbounds %struct.doublecomplex, ptr %7408, i32 0, i32 1
  %7410 = load double, ptr %7409, align 8, !tbaa !14
  %7411 = getelementptr inbounds %struct.doublecomplex, ptr %67, i32 0, i32 1
  %7412 = load double, ptr %7411, align 8, !tbaa !14
  %7413 = load ptr, ptr %14, align 8, !tbaa !5
  %7414 = load i32, ptr %28, align 4, !tbaa !9
  %7415 = sext i32 %7414 to i64
  %7416 = getelementptr inbounds %struct.doublecomplex, ptr %7413, i64 %7415
  %7417 = getelementptr inbounds %struct.doublecomplex, ptr %7416, i32 0, i32 0
  %7418 = load double, ptr %7417, align 8, !tbaa !11
  %7419 = fmul double %7412, %7418
  %7420 = call double @llvm.fmuladd.f64(double %7404, double %7410, double %7419)
  %7421 = getelementptr inbounds %struct.doublecomplex, ptr %46, i32 0, i32 1
  store double %7420, ptr %7421, align 8, !tbaa !14
  %7422 = getelementptr inbounds %struct.doublecomplex, ptr %31, i32 0, i32 0
  %7423 = load double, ptr %7422, align 8, !tbaa !11
  %7424 = getelementptr inbounds %struct.doublecomplex, ptr %46, i32 0, i32 0
  %7425 = load double, ptr %7424, align 8, !tbaa !11
  %7426 = fadd double %7423, %7425
  %7427 = getelementptr inbounds %struct.doublecomplex, ptr %30, i32 0, i32 0
  store double %7426, ptr %7427, align 8, !tbaa !11
  %7428 = getelementptr inbounds %struct.doublecomplex, ptr %31, i32 0, i32 1
  %7429 = load double, ptr %7428, align 8, !tbaa !14
  %7430 = getelementptr inbounds %struct.doublecomplex, ptr %46, i32 0, i32 1
  %7431 = load double, ptr %7430, align 8, !tbaa !14
  %7432 = fadd double %7429, %7431
  %7433 = getelementptr inbounds %struct.doublecomplex, ptr %30, i32 0, i32 1
  store double %7432, ptr %7433, align 8, !tbaa !14
  %7434 = getelementptr inbounds %struct.doublecomplex, ptr %30, i32 0, i32 0
  %7435 = load double, ptr %7434, align 8, !tbaa !11
  %7436 = getelementptr inbounds %struct.doublecomplex, ptr %70, i32 0, i32 0
  store double %7435, ptr %7436, align 8, !tbaa !11
  %7437 = getelementptr inbounds %struct.doublecomplex, ptr %30, i32 0, i32 1
  %7438 = load double, ptr %7437, align 8, !tbaa !14
  %7439 = getelementptr inbounds %struct.doublecomplex, ptr %70, i32 0, i32 1
  store double %7438, ptr %7439, align 8, !tbaa !14
  %7440 = load i32, ptr %49, align 4, !tbaa !9
  %7441 = load i32, ptr %17, align 4, !tbaa !9
  %7442 = mul nsw i32 %7440, %7441
  %7443 = add nsw i32 %7442, 1
  store i32 %7443, ptr %20, align 4, !tbaa !9
  %7444 = load i32, ptr %49, align 4, !tbaa !9
  %7445 = load i32, ptr %17, align 4, !tbaa !9
  %7446 = mul nsw i32 %7444, %7445
  %7447 = add nsw i32 %7446, 1
  store i32 %7447, ptr %21, align 4, !tbaa !9
  %7448 = getelementptr inbounds %struct.doublecomplex, ptr %70, i32 0, i32 0
  %7449 = load double, ptr %7448, align 8, !tbaa !11
  %7450 = getelementptr inbounds %struct.doublecomplex, ptr %50, i32 0, i32 0
  %7451 = load double, ptr %7450, align 8, !tbaa !11
  %7452 = getelementptr inbounds %struct.doublecomplex, ptr %70, i32 0, i32 1
  %7453 = load double, ptr %7452, align 8, !tbaa !14
  %7454 = getelementptr inbounds %struct.doublecomplex, ptr %50, i32 0, i32 1
  %7455 = load double, ptr %7454, align 8, !tbaa !14
  %7456 = fmul double %7453, %7455
  %7457 = fneg double %7456
  %7458 = call double @llvm.fmuladd.f64(double %7449, double %7451, double %7457)
  %7459 = getelementptr inbounds %struct.doublecomplex, ptr %31, i32 0, i32 0
  store double %7458, ptr %7459, align 8, !tbaa !11
  %7460 = getelementptr inbounds %struct.doublecomplex, ptr %70, i32 0, i32 0
  %7461 = load double, ptr %7460, align 8, !tbaa !11
  %7462 = getelementptr inbounds %struct.doublecomplex, ptr %50, i32 0, i32 1
  %7463 = load double, ptr %7462, align 8, !tbaa !14
  %7464 = getelementptr inbounds %struct.doublecomplex, ptr %70, i32 0, i32 1
  %7465 = load double, ptr %7464, align 8, !tbaa !14
  %7466 = getelementptr inbounds %struct.doublecomplex, ptr %50, i32 0, i32 0
  %7467 = load double, ptr %7466, align 8, !tbaa !11
  %7468 = fmul double %7465, %7467
  %7469 = call double @llvm.fmuladd.f64(double %7461, double %7463, double %7468)
  %7470 = getelementptr inbounds %struct.doublecomplex, ptr %31, i32 0, i32 1
  store double %7469, ptr %7470, align 8, !tbaa !14
  %7471 = load ptr, ptr %14, align 8, !tbaa !5
  %7472 = load i32, ptr %21, align 4, !tbaa !9
  %7473 = sext i32 %7472 to i64
  %7474 = getelementptr inbounds %struct.doublecomplex, ptr %7471, i64 %7473
  %7475 = getelementptr inbounds %struct.doublecomplex, ptr %7474, i32 0, i32 0
  %7476 = load double, ptr %7475, align 8, !tbaa !11
  %7477 = getelementptr inbounds %struct.doublecomplex, ptr %31, i32 0, i32 0
  %7478 = load double, ptr %7477, align 8, !tbaa !11
  %7479 = fsub double %7476, %7478
  %7480 = getelementptr inbounds %struct.doublecomplex, ptr %30, i32 0, i32 0
  store double %7479, ptr %7480, align 8, !tbaa !11
  %7481 = load ptr, ptr %14, align 8, !tbaa !5
  %7482 = load i32, ptr %21, align 4, !tbaa !9
  %7483 = sext i32 %7482 to i64
  %7484 = getelementptr inbounds %struct.doublecomplex, ptr %7481, i64 %7483
  %7485 = getelementptr inbounds %struct.doublecomplex, ptr %7484, i32 0, i32 1
  %7486 = load double, ptr %7485, align 8, !tbaa !14
  %7487 = getelementptr inbounds %struct.doublecomplex, ptr %31, i32 0, i32 1
  %7488 = load double, ptr %7487, align 8, !tbaa !14
  %7489 = fsub double %7486, %7488
  %7490 = getelementptr inbounds %struct.doublecomplex, ptr %30, i32 0, i32 1
  store double %7489, ptr %7490, align 8, !tbaa !14
  %7491 = getelementptr inbounds %struct.doublecomplex, ptr %30, i32 0, i32 0
  %7492 = load double, ptr %7491, align 8, !tbaa !11
  %7493 = load ptr, ptr %14, align 8, !tbaa !5
  %7494 = load i32, ptr %20, align 4, !tbaa !9
  %7495 = sext i32 %7494 to i64
  %7496 = getelementptr inbounds %struct.doublecomplex, ptr %7493, i64 %7495
  %7497 = getelementptr inbounds %struct.doublecomplex, ptr %7496, i32 0, i32 0
  store double %7492, ptr %7497, align 8, !tbaa !11
  %7498 = getelementptr inbounds %struct.doublecomplex, ptr %30, i32 0, i32 1
  %7499 = load double, ptr %7498, align 8, !tbaa !14
  %7500 = load ptr, ptr %14, align 8, !tbaa !5
  %7501 = load i32, ptr %20, align 4, !tbaa !9
  %7502 = sext i32 %7501 to i64
  %7503 = getelementptr inbounds %struct.doublecomplex, ptr %7500, i64 %7502
  %7504 = getelementptr inbounds %struct.doublecomplex, ptr %7503, i32 0, i32 1
  store double %7499, ptr %7504, align 8, !tbaa !14
  %7505 = load i32, ptr %49, align 4, !tbaa !9
  %7506 = load i32, ptr %17, align 4, !tbaa !9
  %7507 = mul nsw i32 %7505, %7506
  %7508 = add nsw i32 %7507, 2
  store i32 %7508, ptr %20, align 4, !tbaa !9
  %7509 = load i32, ptr %49, align 4, !tbaa !9
  %7510 = load i32, ptr %17, align 4, !tbaa !9
  %7511 = mul nsw i32 %7509, %7510
  %7512 = add nsw i32 %7511, 2
  store i32 %7512, ptr %21, align 4, !tbaa !9
  %7513 = getelementptr inbounds %struct.doublecomplex, ptr %70, i32 0, i32 0
  %7514 = load double, ptr %7513, align 8, !tbaa !11
  %7515 = getelementptr inbounds %struct.doublecomplex, ptr %51, i32 0, i32 0
  %7516 = load double, ptr %7515, align 8, !tbaa !11
  %7517 = getelementptr inbounds %struct.doublecomplex, ptr %70, i32 0, i32 1
  %7518 = load double, ptr %7517, align 8, !tbaa !14
  %7519 = getelementptr inbounds %struct.doublecomplex, ptr %51, i32 0, i32 1
  %7520 = load double, ptr %7519, align 8, !tbaa !14
  %7521 = fmul double %7518, %7520
  %7522 = fneg double %7521
  %7523 = call double @llvm.fmuladd.f64(double %7514, double %7516, double %7522)
  %7524 = getelementptr inbounds %struct.doublecomplex, ptr %31, i32 0, i32 0
  store double %7523, ptr %7524, align 8, !tbaa !11
  %7525 = getelementptr inbounds %struct.doublecomplex, ptr %70, i32 0, i32 0
  %7526 = load double, ptr %7525, align 8, !tbaa !11
  %7527 = getelementptr inbounds %struct.doublecomplex, ptr %51, i32 0, i32 1
  %7528 = load double, ptr %7527, align 8, !tbaa !14
  %7529 = getelementptr inbounds %struct.doublecomplex, ptr %70, i32 0, i32 1
  %7530 = load double, ptr %7529, align 8, !tbaa !14
  %7531 = getelementptr inbounds %struct.doublecomplex, ptr %51, i32 0, i32 0
  %7532 = load double, ptr %7531, align 8, !tbaa !11
  %7533 = fmul double %7530, %7532
  %7534 = call double @llvm.fmuladd.f64(double %7526, double %7528, double %7533)
  %7535 = getelementptr inbounds %struct.doublecomplex, ptr %31, i32 0, i32 1
  store double %7534, ptr %7535, align 8, !tbaa !14
  %7536 = load ptr, ptr %14, align 8, !tbaa !5
  %7537 = load i32, ptr %21, align 4, !tbaa !9
  %7538 = sext i32 %7537 to i64
  %7539 = getelementptr inbounds %struct.doublecomplex, ptr %7536, i64 %7538
  %7540 = getelementptr inbounds %struct.doublecomplex, ptr %7539, i32 0, i32 0
  %7541 = load double, ptr %7540, align 8, !tbaa !11
  %7542 = getelementptr inbounds %struct.doublecomplex, ptr %31, i32 0, i32 0
  %7543 = load double, ptr %7542, align 8, !tbaa !11
  %7544 = fsub double %7541, %7543
  %7545 = getelementptr inbounds %struct.doublecomplex, ptr %30, i32 0, i32 0
  store double %7544, ptr %7545, align 8, !tbaa !11
  %7546 = load ptr, ptr %14, align 8, !tbaa !5
  %7547 = load i32, ptr %21, align 4, !tbaa !9
  %7548 = sext i32 %7547 to i64
  %7549 = getelementptr inbounds %struct.doublecomplex, ptr %7546, i64 %7548
  %7550 = getelementptr inbounds %struct.doublecomplex, ptr %7549, i32 0, i32 1
  %7551 = load double, ptr %7550, align 8, !tbaa !14
  %7552 = getelementptr inbounds %struct.doublecomplex, ptr %31, i32 0, i32 1
  %7553 = load double, ptr %7552, align 8, !tbaa !14
  %7554 = fsub double %7551, %7553
  %7555 = getelementptr inbounds %struct.doublecomplex, ptr %30, i32 0, i32 1
  store double %7554, ptr %7555, align 8, !tbaa !14
  %7556 = getelementptr inbounds %struct.doublecomplex, ptr %30, i32 0, i32 0
  %7557 = load double, ptr %7556, align 8, !tbaa !11
  %7558 = load ptr, ptr %14, align 8, !tbaa !5
  %7559 = load i32, ptr %20, align 4, !tbaa !9
  %7560 = sext i32 %7559 to i64
  %7561 = getelementptr inbounds %struct.doublecomplex, ptr %7558, i64 %7560
  %7562 = getelementptr inbounds %struct.doublecomplex, ptr %7561, i32 0, i32 0
  store double %7557, ptr %7562, align 8, !tbaa !11
  %7563 = getelementptr inbounds %struct.doublecomplex, ptr %30, i32 0, i32 1
  %7564 = load double, ptr %7563, align 8, !tbaa !14
  %7565 = load ptr, ptr %14, align 8, !tbaa !5
  %7566 = load i32, ptr %20, align 4, !tbaa !9
  %7567 = sext i32 %7566 to i64
  %7568 = getelementptr inbounds %struct.doublecomplex, ptr %7565, i64 %7567
  %7569 = getelementptr inbounds %struct.doublecomplex, ptr %7568, i32 0, i32 1
  store double %7564, ptr %7569, align 8, !tbaa !14
  %7570 = load i32, ptr %49, align 4, !tbaa !9
  %7571 = load i32, ptr %17, align 4, !tbaa !9
  %7572 = mul nsw i32 %7570, %7571
  %7573 = add nsw i32 %7572, 3
  store i32 %7573, ptr %20, align 4, !tbaa !9
  %7574 = load i32, ptr %49, align 4, !tbaa !9
  %7575 = load i32, ptr %17, align 4, !tbaa !9
  %7576 = mul nsw i32 %7574, %7575
  %7577 = add nsw i32 %7576, 3
  store i32 %7577, ptr %21, align 4, !tbaa !9
  %7578 = getelementptr inbounds %struct.doublecomplex, ptr %70, i32 0, i32 0
  %7579 = load double, ptr %7578, align 8, !tbaa !11
  %7580 = getelementptr inbounds %struct.doublecomplex, ptr %52, i32 0, i32 0
  %7581 = load double, ptr %7580, align 8, !tbaa !11
  %7582 = getelementptr inbounds %struct.doublecomplex, ptr %70, i32 0, i32 1
  %7583 = load double, ptr %7582, align 8, !tbaa !14
  %7584 = getelementptr inbounds %struct.doublecomplex, ptr %52, i32 0, i32 1
  %7585 = load double, ptr %7584, align 8, !tbaa !14
  %7586 = fmul double %7583, %7585
  %7587 = fneg double %7586
  %7588 = call double @llvm.fmuladd.f64(double %7579, double %7581, double %7587)
  %7589 = getelementptr inbounds %struct.doublecomplex, ptr %31, i32 0, i32 0
  store double %7588, ptr %7589, align 8, !tbaa !11
  %7590 = getelementptr inbounds %struct.doublecomplex, ptr %70, i32 0, i32 0
  %7591 = load double, ptr %7590, align 8, !tbaa !11
  %7592 = getelementptr inbounds %struct.doublecomplex, ptr %52, i32 0, i32 1
  %7593 = load double, ptr %7592, align 8, !tbaa !14
  %7594 = getelementptr inbounds %struct.doublecomplex, ptr %70, i32 0, i32 1
  %7595 = load double, ptr %7594, align 8, !tbaa !14
  %7596 = getelementptr inbounds %struct.doublecomplex, ptr %52, i32 0, i32 0
  %7597 = load double, ptr %7596, align 8, !tbaa !11
  %7598 = fmul double %7595, %7597
  %7599 = call double @llvm.fmuladd.f64(double %7591, double %7593, double %7598)
  %7600 = getelementptr inbounds %struct.doublecomplex, ptr %31, i32 0, i32 1
  store double %7599, ptr %7600, align 8, !tbaa !14
  %7601 = load ptr, ptr %14, align 8, !tbaa !5
  %7602 = load i32, ptr %21, align 4, !tbaa !9
  %7603 = sext i32 %7602 to i64
  %7604 = getelementptr inbounds %struct.doublecomplex, ptr %7601, i64 %7603
  %7605 = getelementptr inbounds %struct.doublecomplex, ptr %7604, i32 0, i32 0
  %7606 = load double, ptr %7605, align 8, !tbaa !11
  %7607 = getelementptr inbounds %struct.doublecomplex, ptr %31, i32 0, i32 0
  %7608 = load double, ptr %7607, align 8, !tbaa !11
  %7609 = fsub double %7606, %7608
  %7610 = getelementptr inbounds %struct.doublecomplex, ptr %30, i32 0, i32 0
  store double %7609, ptr %7610, align 8, !tbaa !11
  %7611 = load ptr, ptr %14, align 8, !tbaa !5
  %7612 = load i32, ptr %21, align 4, !tbaa !9
  %7613 = sext i32 %7612 to i64
  %7614 = getelementptr inbounds %struct.doublecomplex, ptr %7611, i64 %7613
  %7615 = getelementptr inbounds %struct.doublecomplex, ptr %7614, i32 0, i32 1
  %7616 = load double, ptr %7615, align 8, !tbaa !14
  %7617 = getelementptr inbounds %struct.doublecomplex, ptr %31, i32 0, i32 1
  %7618 = load double, ptr %7617, align 8, !tbaa !14
  %7619 = fsub double %7616, %7618
  %7620 = getelementptr inbounds %struct.doublecomplex, ptr %30, i32 0, i32 1
  store double %7619, ptr %7620, align 8, !tbaa !14
  %7621 = getelementptr inbounds %struct.doublecomplex, ptr %30, i32 0, i32 0
  %7622 = load double, ptr %7621, align 8, !tbaa !11
  %7623 = load ptr, ptr %14, align 8, !tbaa !5
  %7624 = load i32, ptr %20, align 4, !tbaa !9
  %7625 = sext i32 %7624 to i64
  %7626 = getelementptr inbounds %struct.doublecomplex, ptr %7623, i64 %7625
  %7627 = getelementptr inbounds %struct.doublecomplex, ptr %7626, i32 0, i32 0
  store double %7622, ptr %7627, align 8, !tbaa !11
  %7628 = getelementptr inbounds %struct.doublecomplex, ptr %30, i32 0, i32 1
  %7629 = load double, ptr %7628, align 8, !tbaa !14
  %7630 = load ptr, ptr %14, align 8, !tbaa !5
  %7631 = load i32, ptr %20, align 4, !tbaa !9
  %7632 = sext i32 %7631 to i64
  %7633 = getelementptr inbounds %struct.doublecomplex, ptr %7630, i64 %7632
  %7634 = getelementptr inbounds %struct.doublecomplex, ptr %7633, i32 0, i32 1
  store double %7629, ptr %7634, align 8, !tbaa !14
  %7635 = load i32, ptr %49, align 4, !tbaa !9
  %7636 = load i32, ptr %17, align 4, !tbaa !9
  %7637 = mul nsw i32 %7635, %7636
  %7638 = add nsw i32 %7637, 4
  store i32 %7638, ptr %20, align 4, !tbaa !9
  %7639 = load i32, ptr %49, align 4, !tbaa !9
  %7640 = load i32, ptr %17, align 4, !tbaa !9
  %7641 = mul nsw i32 %7639, %7640
  %7642 = add nsw i32 %7641, 4
  store i32 %7642, ptr %21, align 4, !tbaa !9
  %7643 = getelementptr inbounds %struct.doublecomplex, ptr %70, i32 0, i32 0
  %7644 = load double, ptr %7643, align 8, !tbaa !11
  %7645 = getelementptr inbounds %struct.doublecomplex, ptr %53, i32 0, i32 0
  %7646 = load double, ptr %7645, align 8, !tbaa !11
  %7647 = getelementptr inbounds %struct.doublecomplex, ptr %70, i32 0, i32 1
  %7648 = load double, ptr %7647, align 8, !tbaa !14
  %7649 = getelementptr inbounds %struct.doublecomplex, ptr %53, i32 0, i32 1
  %7650 = load double, ptr %7649, align 8, !tbaa !14
  %7651 = fmul double %7648, %7650
  %7652 = fneg double %7651
  %7653 = call double @llvm.fmuladd.f64(double %7644, double %7646, double %7652)
  %7654 = getelementptr inbounds %struct.doublecomplex, ptr %31, i32 0, i32 0
  store double %7653, ptr %7654, align 8, !tbaa !11
  %7655 = getelementptr inbounds %struct.doublecomplex, ptr %70, i32 0, i32 0
  %7656 = load double, ptr %7655, align 8, !tbaa !11
  %7657 = getelementptr inbounds %struct.doublecomplex, ptr %53, i32 0, i32 1
  %7658 = load double, ptr %7657, align 8, !tbaa !14
  %7659 = getelementptr inbounds %struct.doublecomplex, ptr %70, i32 0, i32 1
  %7660 = load double, ptr %7659, align 8, !tbaa !14
  %7661 = getelementptr inbounds %struct.doublecomplex, ptr %53, i32 0, i32 0
  %7662 = load double, ptr %7661, align 8, !tbaa !11
  %7663 = fmul double %7660, %7662
  %7664 = call double @llvm.fmuladd.f64(double %7656, double %7658, double %7663)
  %7665 = getelementptr inbounds %struct.doublecomplex, ptr %31, i32 0, i32 1
  store double %7664, ptr %7665, align 8, !tbaa !14
  %7666 = load ptr, ptr %14, align 8, !tbaa !5
  %7667 = load i32, ptr %21, align 4, !tbaa !9
  %7668 = sext i32 %7667 to i64
  %7669 = getelementptr inbounds %struct.doublecomplex, ptr %7666, i64 %7668
  %7670 = getelementptr inbounds %struct.doublecomplex, ptr %7669, i32 0, i32 0
  %7671 = load double, ptr %7670, align 8, !tbaa !11
  %7672 = getelementptr inbounds %struct.doublecomplex, ptr %31, i32 0, i32 0
  %7673 = load double, ptr %7672, align 8, !tbaa !11
  %7674 = fsub double %7671, %7673
  %7675 = getelementptr inbounds %struct.doublecomplex, ptr %30, i32 0, i32 0
  store double %7674, ptr %7675, align 8, !tbaa !11
  %7676 = load ptr, ptr %14, align 8, !tbaa !5
  %7677 = load i32, ptr %21, align 4, !tbaa !9
  %7678 = sext i32 %7677 to i64
  %7679 = getelementptr inbounds %struct.doublecomplex, ptr %7676, i64 %7678
  %7680 = getelementptr inbounds %struct.doublecomplex, ptr %7679, i32 0, i32 1
  %7681 = load double, ptr %7680, align 8, !tbaa !14
  %7682 = getelementptr inbounds %struct.doublecomplex, ptr %31, i32 0, i32 1
  %7683 = load double, ptr %7682, align 8, !tbaa !14
  %7684 = fsub double %7681, %7683
  %7685 = getelementptr inbounds %struct.doublecomplex, ptr %30, i32 0, i32 1
  store double %7684, ptr %7685, align 8, !tbaa !14
  %7686 = getelementptr inbounds %struct.doublecomplex, ptr %30, i32 0, i32 0
  %7687 = load double, ptr %7686, align 8, !tbaa !11
  %7688 = load ptr, ptr %14, align 8, !tbaa !5
  %7689 = load i32, ptr %20, align 4, !tbaa !9
  %7690 = sext i32 %7689 to i64
  %7691 = getelementptr inbounds %struct.doublecomplex, ptr %7688, i64 %7690
  %7692 = getelementptr inbounds %struct.doublecomplex, ptr %7691, i32 0, i32 0
  store double %7687, ptr %7692, align 8, !tbaa !11
  %7693 = getelementptr inbounds %struct.doublecomplex, ptr %30, i32 0, i32 1
  %7694 = load double, ptr %7693, align 8, !tbaa !14
  %7695 = load ptr, ptr %14, align 8, !tbaa !5
  %7696 = load i32, ptr %20, align 4, !tbaa !9
  %7697 = sext i32 %7696 to i64
  %7698 = getelementptr inbounds %struct.doublecomplex, ptr %7695, i64 %7697
  %7699 = getelementptr inbounds %struct.doublecomplex, ptr %7698, i32 0, i32 1
  store double %7694, ptr %7699, align 8, !tbaa !14
  %7700 = load i32, ptr %49, align 4, !tbaa !9
  %7701 = load i32, ptr %17, align 4, !tbaa !9
  %7702 = mul nsw i32 %7700, %7701
  %7703 = add nsw i32 %7702, 5
  store i32 %7703, ptr %20, align 4, !tbaa !9
  %7704 = load i32, ptr %49, align 4, !tbaa !9
  %7705 = load i32, ptr %17, align 4, !tbaa !9
  %7706 = mul nsw i32 %7704, %7705
  %7707 = add nsw i32 %7706, 5
  store i32 %7707, ptr %21, align 4, !tbaa !9
  %7708 = getelementptr inbounds %struct.doublecomplex, ptr %70, i32 0, i32 0
  %7709 = load double, ptr %7708, align 8, !tbaa !11
  %7710 = getelementptr inbounds %struct.doublecomplex, ptr %54, i32 0, i32 0
  %7711 = load double, ptr %7710, align 8, !tbaa !11
  %7712 = getelementptr inbounds %struct.doublecomplex, ptr %70, i32 0, i32 1
  %7713 = load double, ptr %7712, align 8, !tbaa !14
  %7714 = getelementptr inbounds %struct.doublecomplex, ptr %54, i32 0, i32 1
  %7715 = load double, ptr %7714, align 8, !tbaa !14
  %7716 = fmul double %7713, %7715
  %7717 = fneg double %7716
  %7718 = call double @llvm.fmuladd.f64(double %7709, double %7711, double %7717)
  %7719 = getelementptr inbounds %struct.doublecomplex, ptr %31, i32 0, i32 0
  store double %7718, ptr %7719, align 8, !tbaa !11
  %7720 = getelementptr inbounds %struct.doublecomplex, ptr %70, i32 0, i32 0
  %7721 = load double, ptr %7720, align 8, !tbaa !11
  %7722 = getelementptr inbounds %struct.doublecomplex, ptr %54, i32 0, i32 1
  %7723 = load double, ptr %7722, align 8, !tbaa !14
  %7724 = getelementptr inbounds %struct.doublecomplex, ptr %70, i32 0, i32 1
  %7725 = load double, ptr %7724, align 8, !tbaa !14
  %7726 = getelementptr inbounds %struct.doublecomplex, ptr %54, i32 0, i32 0
  %7727 = load double, ptr %7726, align 8, !tbaa !11
  %7728 = fmul double %7725, %7727
  %7729 = call double @llvm.fmuladd.f64(double %7721, double %7723, double %7728)
  %7730 = getelementptr inbounds %struct.doublecomplex, ptr %31, i32 0, i32 1
  store double %7729, ptr %7730, align 8, !tbaa !14
  %7731 = load ptr, ptr %14, align 8, !tbaa !5
  %7732 = load i32, ptr %21, align 4, !tbaa !9
  %7733 = sext i32 %7732 to i64
  %7734 = getelementptr inbounds %struct.doublecomplex, ptr %7731, i64 %7733
  %7735 = getelementptr inbounds %struct.doublecomplex, ptr %7734, i32 0, i32 0
  %7736 = load double, ptr %7735, align 8, !tbaa !11
  %7737 = getelementptr inbounds %struct.doublecomplex, ptr %31, i32 0, i32 0
  %7738 = load double, ptr %7737, align 8, !tbaa !11
  %7739 = fsub double %7736, %7738
  %7740 = getelementptr inbounds %struct.doublecomplex, ptr %30, i32 0, i32 0
  store double %7739, ptr %7740, align 8, !tbaa !11
  %7741 = load ptr, ptr %14, align 8, !tbaa !5
  %7742 = load i32, ptr %21, align 4, !tbaa !9
  %7743 = sext i32 %7742 to i64
  %7744 = getelementptr inbounds %struct.doublecomplex, ptr %7741, i64 %7743
  %7745 = getelementptr inbounds %struct.doublecomplex, ptr %7744, i32 0, i32 1
  %7746 = load double, ptr %7745, align 8, !tbaa !14
  %7747 = getelementptr inbounds %struct.doublecomplex, ptr %31, i32 0, i32 1
  %7748 = load double, ptr %7747, align 8, !tbaa !14
  %7749 = fsub double %7746, %7748
  %7750 = getelementptr inbounds %struct.doublecomplex, ptr %30, i32 0, i32 1
  store double %7749, ptr %7750, align 8, !tbaa !14
  %7751 = getelementptr inbounds %struct.doublecomplex, ptr %30, i32 0, i32 0
  %7752 = load double, ptr %7751, align 8, !tbaa !11
  %7753 = load ptr, ptr %14, align 8, !tbaa !5
  %7754 = load i32, ptr %20, align 4, !tbaa !9
  %7755 = sext i32 %7754 to i64
  %7756 = getelementptr inbounds %struct.doublecomplex, ptr %7753, i64 %7755
  %7757 = getelementptr inbounds %struct.doublecomplex, ptr %7756, i32 0, i32 0
  store double %7752, ptr %7757, align 8, !tbaa !11
  %7758 = getelementptr inbounds %struct.doublecomplex, ptr %30, i32 0, i32 1
  %7759 = load double, ptr %7758, align 8, !tbaa !14
  %7760 = load ptr, ptr %14, align 8, !tbaa !5
  %7761 = load i32, ptr %20, align 4, !tbaa !9
  %7762 = sext i32 %7761 to i64
  %7763 = getelementptr inbounds %struct.doublecomplex, ptr %7760, i64 %7762
  %7764 = getelementptr inbounds %struct.doublecomplex, ptr %7763, i32 0, i32 1
  store double %7759, ptr %7764, align 8, !tbaa !14
  %7765 = load i32, ptr %49, align 4, !tbaa !9
  %7766 = load i32, ptr %17, align 4, !tbaa !9
  %7767 = mul nsw i32 %7765, %7766
  %7768 = add nsw i32 %7767, 6
  store i32 %7768, ptr %20, align 4, !tbaa !9
  %7769 = load i32, ptr %49, align 4, !tbaa !9
  %7770 = load i32, ptr %17, align 4, !tbaa !9
  %7771 = mul nsw i32 %7769, %7770
  %7772 = add nsw i32 %7771, 6
  store i32 %7772, ptr %21, align 4, !tbaa !9
  %7773 = getelementptr inbounds %struct.doublecomplex, ptr %70, i32 0, i32 0
  %7774 = load double, ptr %7773, align 8, !tbaa !11
  %7775 = getelementptr inbounds %struct.doublecomplex, ptr %55, i32 0, i32 0
  %7776 = load double, ptr %7775, align 8, !tbaa !11
  %7777 = getelementptr inbounds %struct.doublecomplex, ptr %70, i32 0, i32 1
  %7778 = load double, ptr %7777, align 8, !tbaa !14
  %7779 = getelementptr inbounds %struct.doublecomplex, ptr %55, i32 0, i32 1
  %7780 = load double, ptr %7779, align 8, !tbaa !14
  %7781 = fmul double %7778, %7780
  %7782 = fneg double %7781
  %7783 = call double @llvm.fmuladd.f64(double %7774, double %7776, double %7782)
  %7784 = getelementptr inbounds %struct.doublecomplex, ptr %31, i32 0, i32 0
  store double %7783, ptr %7784, align 8, !tbaa !11
  %7785 = getelementptr inbounds %struct.doublecomplex, ptr %70, i32 0, i32 0
  %7786 = load double, ptr %7785, align 8, !tbaa !11
  %7787 = getelementptr inbounds %struct.doublecomplex, ptr %55, i32 0, i32 1
  %7788 = load double, ptr %7787, align 8, !tbaa !14
  %7789 = getelementptr inbounds %struct.doublecomplex, ptr %70, i32 0, i32 1
  %7790 = load double, ptr %7789, align 8, !tbaa !14
  %7791 = getelementptr inbounds %struct.doublecomplex, ptr %55, i32 0, i32 0
  %7792 = load double, ptr %7791, align 8, !tbaa !11
  %7793 = fmul double %7790, %7792
  %7794 = call double @llvm.fmuladd.f64(double %7786, double %7788, double %7793)
  %7795 = getelementptr inbounds %struct.doublecomplex, ptr %31, i32 0, i32 1
  store double %7794, ptr %7795, align 8, !tbaa !14
  %7796 = load ptr, ptr %14, align 8, !tbaa !5
  %7797 = load i32, ptr %21, align 4, !tbaa !9
  %7798 = sext i32 %7797 to i64
  %7799 = getelementptr inbounds %struct.doublecomplex, ptr %7796, i64 %7798
  %7800 = getelementptr inbounds %struct.doublecomplex, ptr %7799, i32 0, i32 0
  %7801 = load double, ptr %7800, align 8, !tbaa !11
  %7802 = getelementptr inbounds %struct.doublecomplex, ptr %31, i32 0, i32 0
  %7803 = load double, ptr %7802, align 8, !tbaa !11
  %7804 = fsub double %7801, %7803
  %7805 = getelementptr inbounds %struct.doublecomplex, ptr %30, i32 0, i32 0
  store double %7804, ptr %7805, align 8, !tbaa !11
  %7806 = load ptr, ptr %14, align 8, !tbaa !5
  %7807 = load i32, ptr %21, align 4, !tbaa !9
  %7808 = sext i32 %7807 to i64
  %7809 = getelementptr inbounds %struct.doublecomplex, ptr %7806, i64 %7808
  %7810 = getelementptr inbounds %struct.doublecomplex, ptr %7809, i32 0, i32 1
  %7811 = load double, ptr %7810, align 8, !tbaa !14
  %7812 = getelementptr inbounds %struct.doublecomplex, ptr %31, i32 0, i32 1
  %7813 = load double, ptr %7812, align 8, !tbaa !14
  %7814 = fsub double %7811, %7813
  %7815 = getelementptr inbounds %struct.doublecomplex, ptr %30, i32 0, i32 1
  store double %7814, ptr %7815, align 8, !tbaa !14
  %7816 = getelementptr inbounds %struct.doublecomplex, ptr %30, i32 0, i32 0
  %7817 = load double, ptr %7816, align 8, !tbaa !11
  %7818 = load ptr, ptr %14, align 8, !tbaa !5
  %7819 = load i32, ptr %20, align 4, !tbaa !9
  %7820 = sext i32 %7819 to i64
  %7821 = getelementptr inbounds %struct.doublecomplex, ptr %7818, i64 %7820
  %7822 = getelementptr inbounds %struct.doublecomplex, ptr %7821, i32 0, i32 0
  store double %7817, ptr %7822, align 8, !tbaa !11
  %7823 = getelementptr inbounds %struct.doublecomplex, ptr %30, i32 0, i32 1
  %7824 = load double, ptr %7823, align 8, !tbaa !14
  %7825 = load ptr, ptr %14, align 8, !tbaa !5
  %7826 = load i32, ptr %20, align 4, !tbaa !9
  %7827 = sext i32 %7826 to i64
  %7828 = getelementptr inbounds %struct.doublecomplex, ptr %7825, i64 %7827
  %7829 = getelementptr inbounds %struct.doublecomplex, ptr %7828, i32 0, i32 1
  store double %7824, ptr %7829, align 8, !tbaa !14
  %7830 = load i32, ptr %49, align 4, !tbaa !9
  %7831 = load i32, ptr %17, align 4, !tbaa !9
  %7832 = mul nsw i32 %7830, %7831
  %7833 = add nsw i32 %7832, 7
  store i32 %7833, ptr %20, align 4, !tbaa !9
  %7834 = load i32, ptr %49, align 4, !tbaa !9
  %7835 = load i32, ptr %17, align 4, !tbaa !9
  %7836 = mul nsw i32 %7834, %7835
  %7837 = add nsw i32 %7836, 7
  store i32 %7837, ptr %21, align 4, !tbaa !9
  %7838 = getelementptr inbounds %struct.doublecomplex, ptr %70, i32 0, i32 0
  %7839 = load double, ptr %7838, align 8, !tbaa !11
  %7840 = getelementptr inbounds %struct.doublecomplex, ptr %56, i32 0, i32 0
  %7841 = load double, ptr %7840, align 8, !tbaa !11
  %7842 = getelementptr inbounds %struct.doublecomplex, ptr %70, i32 0, i32 1
  %7843 = load double, ptr %7842, align 8, !tbaa !14
  %7844 = getelementptr inbounds %struct.doublecomplex, ptr %56, i32 0, i32 1
  %7845 = load double, ptr %7844, align 8, !tbaa !14
  %7846 = fmul double %7843, %7845
  %7847 = fneg double %7846
  %7848 = call double @llvm.fmuladd.f64(double %7839, double %7841, double %7847)
  %7849 = getelementptr inbounds %struct.doublecomplex, ptr %31, i32 0, i32 0
  store double %7848, ptr %7849, align 8, !tbaa !11
  %7850 = getelementptr inbounds %struct.doublecomplex, ptr %70, i32 0, i32 0
  %7851 = load double, ptr %7850, align 8, !tbaa !11
  %7852 = getelementptr inbounds %struct.doublecomplex, ptr %56, i32 0, i32 1
  %7853 = load double, ptr %7852, align 8, !tbaa !14
  %7854 = getelementptr inbounds %struct.doublecomplex, ptr %70, i32 0, i32 1
  %7855 = load double, ptr %7854, align 8, !tbaa !14
  %7856 = getelementptr inbounds %struct.doublecomplex, ptr %56, i32 0, i32 0
  %7857 = load double, ptr %7856, align 8, !tbaa !11
  %7858 = fmul double %7855, %7857
  %7859 = call double @llvm.fmuladd.f64(double %7851, double %7853, double %7858)
  %7860 = getelementptr inbounds %struct.doublecomplex, ptr %31, i32 0, i32 1
  store double %7859, ptr %7860, align 8, !tbaa !14
  %7861 = load ptr, ptr %14, align 8, !tbaa !5
  %7862 = load i32, ptr %21, align 4, !tbaa !9
  %7863 = sext i32 %7862 to i64
  %7864 = getelementptr inbounds %struct.doublecomplex, ptr %7861, i64 %7863
  %7865 = getelementptr inbounds %struct.doublecomplex, ptr %7864, i32 0, i32 0
  %7866 = load double, ptr %7865, align 8, !tbaa !11
  %7867 = getelementptr inbounds %struct.doublecomplex, ptr %31, i32 0, i32 0
  %7868 = load double, ptr %7867, align 8, !tbaa !11
  %7869 = fsub double %7866, %7868
  %7870 = getelementptr inbounds %struct.doublecomplex, ptr %30, i32 0, i32 0
  store double %7869, ptr %7870, align 8, !tbaa !11
  %7871 = load ptr, ptr %14, align 8, !tbaa !5
  %7872 = load i32, ptr %21, align 4, !tbaa !9
  %7873 = sext i32 %7872 to i64
  %7874 = getelementptr inbounds %struct.doublecomplex, ptr %7871, i64 %7873
  %7875 = getelementptr inbounds %struct.doublecomplex, ptr %7874, i32 0, i32 1
  %7876 = load double, ptr %7875, align 8, !tbaa !14
  %7877 = getelementptr inbounds %struct.doublecomplex, ptr %31, i32 0, i32 1
  %7878 = load double, ptr %7877, align 8, !tbaa !14
  %7879 = fsub double %7876, %7878
  %7880 = getelementptr inbounds %struct.doublecomplex, ptr %30, i32 0, i32 1
  store double %7879, ptr %7880, align 8, !tbaa !14
  %7881 = getelementptr inbounds %struct.doublecomplex, ptr %30, i32 0, i32 0
  %7882 = load double, ptr %7881, align 8, !tbaa !11
  %7883 = load ptr, ptr %14, align 8, !tbaa !5
  %7884 = load i32, ptr %20, align 4, !tbaa !9
  %7885 = sext i32 %7884 to i64
  %7886 = getelementptr inbounds %struct.doublecomplex, ptr %7883, i64 %7885
  %7887 = getelementptr inbounds %struct.doublecomplex, ptr %7886, i32 0, i32 0
  store double %7882, ptr %7887, align 8, !tbaa !11
  %7888 = getelementptr inbounds %struct.doublecomplex, ptr %30, i32 0, i32 1
  %7889 = load double, ptr %7888, align 8, !tbaa !14
  %7890 = load ptr, ptr %14, align 8, !tbaa !5
  %7891 = load i32, ptr %20, align 4, !tbaa !9
  %7892 = sext i32 %7891 to i64
  %7893 = getelementptr inbounds %struct.doublecomplex, ptr %7890, i64 %7892
  %7894 = getelementptr inbounds %struct.doublecomplex, ptr %7893, i32 0, i32 1
  store double %7889, ptr %7894, align 8, !tbaa !14
  %7895 = load i32, ptr %49, align 4, !tbaa !9
  %7896 = load i32, ptr %17, align 4, !tbaa !9
  %7897 = mul nsw i32 %7895, %7896
  %7898 = add nsw i32 %7897, 8
  store i32 %7898, ptr %20, align 4, !tbaa !9
  %7899 = load i32, ptr %49, align 4, !tbaa !9
  %7900 = load i32, ptr %17, align 4, !tbaa !9
  %7901 = mul nsw i32 %7899, %7900
  %7902 = add nsw i32 %7901, 8
  store i32 %7902, ptr %21, align 4, !tbaa !9
  %7903 = getelementptr inbounds %struct.doublecomplex, ptr %70, i32 0, i32 0
  %7904 = load double, ptr %7903, align 8, !tbaa !11
  %7905 = getelementptr inbounds %struct.doublecomplex, ptr %57, i32 0, i32 0
  %7906 = load double, ptr %7905, align 8, !tbaa !11
  %7907 = getelementptr inbounds %struct.doublecomplex, ptr %70, i32 0, i32 1
  %7908 = load double, ptr %7907, align 8, !tbaa !14
  %7909 = getelementptr inbounds %struct.doublecomplex, ptr %57, i32 0, i32 1
  %7910 = load double, ptr %7909, align 8, !tbaa !14
  %7911 = fmul double %7908, %7910
  %7912 = fneg double %7911
  %7913 = call double @llvm.fmuladd.f64(double %7904, double %7906, double %7912)
  %7914 = getelementptr inbounds %struct.doublecomplex, ptr %31, i32 0, i32 0
  store double %7913, ptr %7914, align 8, !tbaa !11
  %7915 = getelementptr inbounds %struct.doublecomplex, ptr %70, i32 0, i32 0
  %7916 = load double, ptr %7915, align 8, !tbaa !11
  %7917 = getelementptr inbounds %struct.doublecomplex, ptr %57, i32 0, i32 1
  %7918 = load double, ptr %7917, align 8, !tbaa !14
  %7919 = getelementptr inbounds %struct.doublecomplex, ptr %70, i32 0, i32 1
  %7920 = load double, ptr %7919, align 8, !tbaa !14
  %7921 = getelementptr inbounds %struct.doublecomplex, ptr %57, i32 0, i32 0
  %7922 = load double, ptr %7921, align 8, !tbaa !11
  %7923 = fmul double %7920, %7922
  %7924 = call double @llvm.fmuladd.f64(double %7916, double %7918, double %7923)
  %7925 = getelementptr inbounds %struct.doublecomplex, ptr %31, i32 0, i32 1
  store double %7924, ptr %7925, align 8, !tbaa !14
  %7926 = load ptr, ptr %14, align 8, !tbaa !5
  %7927 = load i32, ptr %21, align 4, !tbaa !9
  %7928 = sext i32 %7927 to i64
  %7929 = getelementptr inbounds %struct.doublecomplex, ptr %7926, i64 %7928
  %7930 = getelementptr inbounds %struct.doublecomplex, ptr %7929, i32 0, i32 0
  %7931 = load double, ptr %7930, align 8, !tbaa !11
  %7932 = getelementptr inbounds %struct.doublecomplex, ptr %31, i32 0, i32 0
  %7933 = load double, ptr %7932, align 8, !tbaa !11
  %7934 = fsub double %7931, %7933
  %7935 = getelementptr inbounds %struct.doublecomplex, ptr %30, i32 0, i32 0
  store double %7934, ptr %7935, align 8, !tbaa !11
  %7936 = load ptr, ptr %14, align 8, !tbaa !5
  %7937 = load i32, ptr %21, align 4, !tbaa !9
  %7938 = sext i32 %7937 to i64
  %7939 = getelementptr inbounds %struct.doublecomplex, ptr %7936, i64 %7938
  %7940 = getelementptr inbounds %struct.doublecomplex, ptr %7939, i32 0, i32 1
  %7941 = load double, ptr %7940, align 8, !tbaa !14
  %7942 = getelementptr inbounds %struct.doublecomplex, ptr %31, i32 0, i32 1
  %7943 = load double, ptr %7942, align 8, !tbaa !14
  %7944 = fsub double %7941, %7943
  %7945 = getelementptr inbounds %struct.doublecomplex, ptr %30, i32 0, i32 1
  store double %7944, ptr %7945, align 8, !tbaa !14
  %7946 = getelementptr inbounds %struct.doublecomplex, ptr %30, i32 0, i32 0
  %7947 = load double, ptr %7946, align 8, !tbaa !11
  %7948 = load ptr, ptr %14, align 8, !tbaa !5
  %7949 = load i32, ptr %20, align 4, !tbaa !9
  %7950 = sext i32 %7949 to i64
  %7951 = getelementptr inbounds %struct.doublecomplex, ptr %7948, i64 %7950
  %7952 = getelementptr inbounds %struct.doublecomplex, ptr %7951, i32 0, i32 0
  store double %7947, ptr %7952, align 8, !tbaa !11
  %7953 = getelementptr inbounds %struct.doublecomplex, ptr %30, i32 0, i32 1
  %7954 = load double, ptr %7953, align 8, !tbaa !14
  %7955 = load ptr, ptr %14, align 8, !tbaa !5
  %7956 = load i32, ptr %20, align 4, !tbaa !9
  %7957 = sext i32 %7956 to i64
  %7958 = getelementptr inbounds %struct.doublecomplex, ptr %7955, i64 %7957
  %7959 = getelementptr inbounds %struct.doublecomplex, ptr %7958, i32 0, i32 1
  store double %7954, ptr %7959, align 8, !tbaa !14
  %7960 = load i32, ptr %49, align 4, !tbaa !9
  %7961 = load i32, ptr %17, align 4, !tbaa !9
  %7962 = mul nsw i32 %7960, %7961
  %7963 = add nsw i32 %7962, 9
  store i32 %7963, ptr %20, align 4, !tbaa !9
  %7964 = load i32, ptr %49, align 4, !tbaa !9
  %7965 = load i32, ptr %17, align 4, !tbaa !9
  %7966 = mul nsw i32 %7964, %7965
  %7967 = add nsw i32 %7966, 9
  store i32 %7967, ptr %21, align 4, !tbaa !9
  %7968 = getelementptr inbounds %struct.doublecomplex, ptr %70, i32 0, i32 0
  %7969 = load double, ptr %7968, align 8, !tbaa !11
  %7970 = getelementptr inbounds %struct.doublecomplex, ptr %58, i32 0, i32 0
  %7971 = load double, ptr %7970, align 8, !tbaa !11
  %7972 = getelementptr inbounds %struct.doublecomplex, ptr %70, i32 0, i32 1
  %7973 = load double, ptr %7972, align 8, !tbaa !14
  %7974 = getelementptr inbounds %struct.doublecomplex, ptr %58, i32 0, i32 1
  %7975 = load double, ptr %7974, align 8, !tbaa !14
  %7976 = fmul double %7973, %7975
  %7977 = fneg double %7976
  %7978 = call double @llvm.fmuladd.f64(double %7969, double %7971, double %7977)
  %7979 = getelementptr inbounds %struct.doublecomplex, ptr %31, i32 0, i32 0
  store double %7978, ptr %7979, align 8, !tbaa !11
  %7980 = getelementptr inbounds %struct.doublecomplex, ptr %70, i32 0, i32 0
  %7981 = load double, ptr %7980, align 8, !tbaa !11
  %7982 = getelementptr inbounds %struct.doublecomplex, ptr %58, i32 0, i32 1
  %7983 = load double, ptr %7982, align 8, !tbaa !14
  %7984 = getelementptr inbounds %struct.doublecomplex, ptr %70, i32 0, i32 1
  %7985 = load double, ptr %7984, align 8, !tbaa !14
  %7986 = getelementptr inbounds %struct.doublecomplex, ptr %58, i32 0, i32 0
  %7987 = load double, ptr %7986, align 8, !tbaa !11
  %7988 = fmul double %7985, %7987
  %7989 = call double @llvm.fmuladd.f64(double %7981, double %7983, double %7988)
  %7990 = getelementptr inbounds %struct.doublecomplex, ptr %31, i32 0, i32 1
  store double %7989, ptr %7990, align 8, !tbaa !14
  %7991 = load ptr, ptr %14, align 8, !tbaa !5
  %7992 = load i32, ptr %21, align 4, !tbaa !9
  %7993 = sext i32 %7992 to i64
  %7994 = getelementptr inbounds %struct.doublecomplex, ptr %7991, i64 %7993
  %7995 = getelementptr inbounds %struct.doublecomplex, ptr %7994, i32 0, i32 0
  %7996 = load double, ptr %7995, align 8, !tbaa !11
  %7997 = getelementptr inbounds %struct.doublecomplex, ptr %31, i32 0, i32 0
  %7998 = load double, ptr %7997, align 8, !tbaa !11
  %7999 = fsub double %7996, %7998
  %8000 = getelementptr inbounds %struct.doublecomplex, ptr %30, i32 0, i32 0
  store double %7999, ptr %8000, align 8, !tbaa !11
  %8001 = load ptr, ptr %14, align 8, !tbaa !5
  %8002 = load i32, ptr %21, align 4, !tbaa !9
  %8003 = sext i32 %8002 to i64
  %8004 = getelementptr inbounds %struct.doublecomplex, ptr %8001, i64 %8003
  %8005 = getelementptr inbounds %struct.doublecomplex, ptr %8004, i32 0, i32 1
  %8006 = load double, ptr %8005, align 8, !tbaa !14
  %8007 = getelementptr inbounds %struct.doublecomplex, ptr %31, i32 0, i32 1
  %8008 = load double, ptr %8007, align 8, !tbaa !14
  %8009 = fsub double %8006, %8008
  %8010 = getelementptr inbounds %struct.doublecomplex, ptr %30, i32 0, i32 1
  store double %8009, ptr %8010, align 8, !tbaa !14
  %8011 = getelementptr inbounds %struct.doublecomplex, ptr %30, i32 0, i32 0
  %8012 = load double, ptr %8011, align 8, !tbaa !11
  %8013 = load ptr, ptr %14, align 8, !tbaa !5
  %8014 = load i32, ptr %20, align 4, !tbaa !9
  %8015 = sext i32 %8014 to i64
  %8016 = getelementptr inbounds %struct.doublecomplex, ptr %8013, i64 %8015
  %8017 = getelementptr inbounds %struct.doublecomplex, ptr %8016, i32 0, i32 0
  store double %8012, ptr %8017, align 8, !tbaa !11
  %8018 = getelementptr inbounds %struct.doublecomplex, ptr %30, i32 0, i32 1
  %8019 = load double, ptr %8018, align 8, !tbaa !14
  %8020 = load ptr, ptr %14, align 8, !tbaa !5
  %8021 = load i32, ptr %20, align 4, !tbaa !9
  %8022 = sext i32 %8021 to i64
  %8023 = getelementptr inbounds %struct.doublecomplex, ptr %8020, i64 %8022
  %8024 = getelementptr inbounds %struct.doublecomplex, ptr %8023, i32 0, i32 1
  store double %8019, ptr %8024, align 8, !tbaa !14
  br label %8025

8025:                                             ; preds = %6950
  %8026 = load i32, ptr %49, align 4, !tbaa !9
  %8027 = add nsw i32 %8026, 1
  store i32 %8027, ptr %49, align 4, !tbaa !9
  br label %6946, !llvm.loop !24

8028:                                             ; preds = %6946
  br label %19171

8029:                                             ; preds = %112
  %8030 = load ptr, ptr %12, align 8, !tbaa !5
  %8031 = getelementptr inbounds %struct.doublecomplex, ptr %8030, i64 1
  %8032 = call { double, double } @Cd(ptr noundef %8031)
  %8033 = extractvalue { double, double } %8032, 0
  %8034 = extractvalue { double, double } %8032, 1
  %8035 = fneg double %8034
  %8036 = call ptr @_pCd(ptr noundef %30)
  %8037 = getelementptr inbounds { double, double }, ptr %8036, i32 0, i32 0
  %8038 = getelementptr inbounds { double, double }, ptr %8036, i32 0, i32 1
  store double %8033, ptr %8037, align 8
  store double %8035, ptr %8038, align 8
  %8039 = getelementptr inbounds %struct.doublecomplex, ptr %30, i32 0, i32 0
  %8040 = load double, ptr %8039, align 8, !tbaa !11
  %8041 = getelementptr inbounds %struct.doublecomplex, ptr %59, i32 0, i32 0
  store double %8040, ptr %8041, align 8, !tbaa !11
  %8042 = getelementptr inbounds %struct.doublecomplex, ptr %30, i32 0, i32 1
  %8043 = load double, ptr %8042, align 8, !tbaa !14
  %8044 = getelementptr inbounds %struct.doublecomplex, ptr %59, i32 0, i32 1
  store double %8043, ptr %8044, align 8, !tbaa !14
  %8045 = call { double, double } @Cd(ptr noundef %59)
  %8046 = extractvalue { double, double } %8045, 0
  %8047 = extractvalue { double, double } %8045, 1
  %8048 = fneg double %8047
  %8049 = call ptr @_pCd(ptr noundef %31)
  %8050 = getelementptr inbounds { double, double }, ptr %8049, i32 0, i32 0
  %8051 = getelementptr inbounds { double, double }, ptr %8049, i32 0, i32 1
  store double %8046, ptr %8050, align 8
  store double %8048, ptr %8051, align 8
  %8052 = load ptr, ptr %13, align 8, !tbaa !5
  %8053 = getelementptr inbounds %struct.doublecomplex, ptr %8052, i32 0, i32 0
  %8054 = load double, ptr %8053, align 8, !tbaa !11
  %8055 = getelementptr inbounds %struct.doublecomplex, ptr %31, i32 0, i32 0
  %8056 = load double, ptr %8055, align 8, !tbaa !11
  %8057 = load ptr, ptr %13, align 8, !tbaa !5
  %8058 = getelementptr inbounds %struct.doublecomplex, ptr %8057, i32 0, i32 1
  %8059 = load double, ptr %8058, align 8, !tbaa !14
  %8060 = getelementptr inbounds %struct.doublecomplex, ptr %31, i32 0, i32 1
  %8061 = load double, ptr %8060, align 8, !tbaa !14
  %8062 = fmul double %8059, %8061
  %8063 = fneg double %8062
  %8064 = call double @llvm.fmuladd.f64(double %8054, double %8056, double %8063)
  %8065 = getelementptr inbounds %struct.doublecomplex, ptr %30, i32 0, i32 0
  store double %8064, ptr %8065, align 8, !tbaa !11
  %8066 = load ptr, ptr %13, align 8, !tbaa !5
  %8067 = getelementptr inbounds %struct.doublecomplex, ptr %8066, i32 0, i32 0
  %8068 = load double, ptr %8067, align 8, !tbaa !11
  %8069 = getelementptr inbounds %struct.doublecomplex, ptr %31, i32 0, i32 1
  %8070 = load double, ptr %8069, align 8, !tbaa !14
  %8071 = load ptr, ptr %13, align 8, !tbaa !5
  %8072 = getelementptr inbounds %struct.doublecomplex, ptr %8071, i32 0, i32 1
  %8073 = load double, ptr %8072, align 8, !tbaa !14
  %8074 = getelementptr inbounds %struct.doublecomplex, ptr %31, i32 0, i32 0
  %8075 = load double, ptr %8074, align 8, !tbaa !11
  %8076 = fmul double %8073, %8075
  %8077 = call double @llvm.fmuladd.f64(double %8068, double %8070, double %8076)
  %8078 = getelementptr inbounds %struct.doublecomplex, ptr %30, i32 0, i32 1
  store double %8077, ptr %8078, align 8, !tbaa !14
  %8079 = getelementptr inbounds %struct.doublecomplex, ptr %30, i32 0, i32 0
  %8080 = load double, ptr %8079, align 8, !tbaa !11
  %8081 = getelementptr inbounds %struct.doublecomplex, ptr %50, i32 0, i32 0
  store double %8080, ptr %8081, align 8, !tbaa !11
  %8082 = getelementptr inbounds %struct.doublecomplex, ptr %30, i32 0, i32 1
  %8083 = load double, ptr %8082, align 8, !tbaa !14
  %8084 = getelementptr inbounds %struct.doublecomplex, ptr %50, i32 0, i32 1
  store double %8083, ptr %8084, align 8, !tbaa !14
  %8085 = load ptr, ptr %12, align 8, !tbaa !5
  %8086 = getelementptr inbounds %struct.doublecomplex, ptr %8085, i64 2
  %8087 = call { double, double } @Cd(ptr noundef %8086)
  %8088 = extractvalue { double, double } %8087, 0
  %8089 = extractvalue { double, double } %8087, 1
  %8090 = fneg double %8089
  %8091 = call ptr @_pCd(ptr noundef %30)
  %8092 = getelementptr inbounds { double, double }, ptr %8091, i32 0, i32 0
  %8093 = getelementptr inbounds { double, double }, ptr %8091, i32 0, i32 1
  store double %8088, ptr %8092, align 8
  store double %8090, ptr %8093, align 8
  %8094 = getelementptr inbounds %struct.doublecomplex, ptr %30, i32 0, i32 0
  %8095 = load double, ptr %8094, align 8, !tbaa !11
  %8096 = getelementptr inbounds %struct.doublecomplex, ptr %60, i32 0, i32 0
  store double %8095, ptr %8096, align 8, !tbaa !11
  %8097 = getelementptr inbounds %struct.doublecomplex, ptr %30, i32 0, i32 1
  %8098 = load double, ptr %8097, align 8, !tbaa !14
  %8099 = getelementptr inbounds %struct.doublecomplex, ptr %60, i32 0, i32 1
  store double %8098, ptr %8099, align 8, !tbaa !14
  %8100 = call { double, double } @Cd(ptr noundef %60)
  %8101 = extractvalue { double, double } %8100, 0
  %8102 = extractvalue { double, double } %8100, 1
  %8103 = fneg double %8102
  %8104 = call ptr @_pCd(ptr noundef %31)
  %8105 = getelementptr inbounds { double, double }, ptr %8104, i32 0, i32 0
  %8106 = getelementptr inbounds { double, double }, ptr %8104, i32 0, i32 1
  store double %8101, ptr %8105, align 8
  store double %8103, ptr %8106, align 8
  %8107 = load ptr, ptr %13, align 8, !tbaa !5
  %8108 = getelementptr inbounds %struct.doublecomplex, ptr %8107, i32 0, i32 0
  %8109 = load double, ptr %8108, align 8, !tbaa !11
  %8110 = getelementptr inbounds %struct.doublecomplex, ptr %31, i32 0, i32 0
  %8111 = load double, ptr %8110, align 8, !tbaa !11
  %8112 = load ptr, ptr %13, align 8, !tbaa !5
  %8113 = getelementptr inbounds %struct.doublecomplex, ptr %8112, i32 0, i32 1
  %8114 = load double, ptr %8113, align 8, !tbaa !14
  %8115 = getelementptr inbounds %struct.doublecomplex, ptr %31, i32 0, i32 1
  %8116 = load double, ptr %8115, align 8, !tbaa !14
  %8117 = fmul double %8114, %8116
  %8118 = fneg double %8117
  %8119 = call double @llvm.fmuladd.f64(double %8109, double %8111, double %8118)
  %8120 = getelementptr inbounds %struct.doublecomplex, ptr %30, i32 0, i32 0
  store double %8119, ptr %8120, align 8, !tbaa !11
  %8121 = load ptr, ptr %13, align 8, !tbaa !5
  %8122 = getelementptr inbounds %struct.doublecomplex, ptr %8121, i32 0, i32 0
  %8123 = load double, ptr %8122, align 8, !tbaa !11
  %8124 = getelementptr inbounds %struct.doublecomplex, ptr %31, i32 0, i32 1
  %8125 = load double, ptr %8124, align 8, !tbaa !14
  %8126 = load ptr, ptr %13, align 8, !tbaa !5
  %8127 = getelementptr inbounds %struct.doublecomplex, ptr %8126, i32 0, i32 1
  %8128 = load double, ptr %8127, align 8, !tbaa !14
  %8129 = getelementptr inbounds %struct.doublecomplex, ptr %31, i32 0, i32 0
  %8130 = load double, ptr %8129, align 8, !tbaa !11
  %8131 = fmul double %8128, %8130
  %8132 = call double @llvm.fmuladd.f64(double %8123, double %8125, double %8131)
  %8133 = getelementptr inbounds %struct.doublecomplex, ptr %30, i32 0, i32 1
  store double %8132, ptr %8133, align 8, !tbaa !14
  %8134 = getelementptr inbounds %struct.doublecomplex, ptr %30, i32 0, i32 0
  %8135 = load double, ptr %8134, align 8, !tbaa !11
  %8136 = getelementptr inbounds %struct.doublecomplex, ptr %51, i32 0, i32 0
  store double %8135, ptr %8136, align 8, !tbaa !11
  %8137 = getelementptr inbounds %struct.doublecomplex, ptr %30, i32 0, i32 1
  %8138 = load double, ptr %8137, align 8, !tbaa !14
  %8139 = getelementptr inbounds %struct.doublecomplex, ptr %51, i32 0, i32 1
  store double %8138, ptr %8139, align 8, !tbaa !14
  %8140 = load ptr, ptr %12, align 8, !tbaa !5
  %8141 = getelementptr inbounds %struct.doublecomplex, ptr %8140, i64 3
  %8142 = call { double, double } @Cd(ptr noundef %8141)
  %8143 = extractvalue { double, double } %8142, 0
  %8144 = extractvalue { double, double } %8142, 1
  %8145 = fneg double %8144
  %8146 = call ptr @_pCd(ptr noundef %30)
  %8147 = getelementptr inbounds { double, double }, ptr %8146, i32 0, i32 0
  %8148 = getelementptr inbounds { double, double }, ptr %8146, i32 0, i32 1
  store double %8143, ptr %8147, align 8
  store double %8145, ptr %8148, align 8
  %8149 = getelementptr inbounds %struct.doublecomplex, ptr %30, i32 0, i32 0
  %8150 = load double, ptr %8149, align 8, !tbaa !11
  %8151 = getelementptr inbounds %struct.doublecomplex, ptr %61, i32 0, i32 0
  store double %8150, ptr %8151, align 8, !tbaa !11
  %8152 = getelementptr inbounds %struct.doublecomplex, ptr %30, i32 0, i32 1
  %8153 = load double, ptr %8152, align 8, !tbaa !14
  %8154 = getelementptr inbounds %struct.doublecomplex, ptr %61, i32 0, i32 1
  store double %8153, ptr %8154, align 8, !tbaa !14
  %8155 = call { double, double } @Cd(ptr noundef %61)
  %8156 = extractvalue { double, double } %8155, 0
  %8157 = extractvalue { double, double } %8155, 1
  %8158 = fneg double %8157
  %8159 = call ptr @_pCd(ptr noundef %31)
  %8160 = getelementptr inbounds { double, double }, ptr %8159, i32 0, i32 0
  %8161 = getelementptr inbounds { double, double }, ptr %8159, i32 0, i32 1
  store double %8156, ptr %8160, align 8
  store double %8158, ptr %8161, align 8
  %8162 = load ptr, ptr %13, align 8, !tbaa !5
  %8163 = getelementptr inbounds %struct.doublecomplex, ptr %8162, i32 0, i32 0
  %8164 = load double, ptr %8163, align 8, !tbaa !11
  %8165 = getelementptr inbounds %struct.doublecomplex, ptr %31, i32 0, i32 0
  %8166 = load double, ptr %8165, align 8, !tbaa !11
  %8167 = load ptr, ptr %13, align 8, !tbaa !5
  %8168 = getelementptr inbounds %struct.doublecomplex, ptr %8167, i32 0, i32 1
  %8169 = load double, ptr %8168, align 8, !tbaa !14
  %8170 = getelementptr inbounds %struct.doublecomplex, ptr %31, i32 0, i32 1
  %8171 = load double, ptr %8170, align 8, !tbaa !14
  %8172 = fmul double %8169, %8171
  %8173 = fneg double %8172
  %8174 = call double @llvm.fmuladd.f64(double %8164, double %8166, double %8173)
  %8175 = getelementptr inbounds %struct.doublecomplex, ptr %30, i32 0, i32 0
  store double %8174, ptr %8175, align 8, !tbaa !11
  %8176 = load ptr, ptr %13, align 8, !tbaa !5
  %8177 = getelementptr inbounds %struct.doublecomplex, ptr %8176, i32 0, i32 0
  %8178 = load double, ptr %8177, align 8, !tbaa !11
  %8179 = getelementptr inbounds %struct.doublecomplex, ptr %31, i32 0, i32 1
  %8180 = load double, ptr %8179, align 8, !tbaa !14
  %8181 = load ptr, ptr %13, align 8, !tbaa !5
  %8182 = getelementptr inbounds %struct.doublecomplex, ptr %8181, i32 0, i32 1
  %8183 = load double, ptr %8182, align 8, !tbaa !14
  %8184 = getelementptr inbounds %struct.doublecomplex, ptr %31, i32 0, i32 0
  %8185 = load double, ptr %8184, align 8, !tbaa !11
  %8186 = fmul double %8183, %8185
  %8187 = call double @llvm.fmuladd.f64(double %8178, double %8180, double %8186)
  %8188 = getelementptr inbounds %struct.doublecomplex, ptr %30, i32 0, i32 1
  store double %8187, ptr %8188, align 8, !tbaa !14
  %8189 = getelementptr inbounds %struct.doublecomplex, ptr %30, i32 0, i32 0
  %8190 = load double, ptr %8189, align 8, !tbaa !11
  %8191 = getelementptr inbounds %struct.doublecomplex, ptr %52, i32 0, i32 0
  store double %8190, ptr %8191, align 8, !tbaa !11
  %8192 = getelementptr inbounds %struct.doublecomplex, ptr %30, i32 0, i32 1
  %8193 = load double, ptr %8192, align 8, !tbaa !14
  %8194 = getelementptr inbounds %struct.doublecomplex, ptr %52, i32 0, i32 1
  store double %8193, ptr %8194, align 8, !tbaa !14
  %8195 = load ptr, ptr %12, align 8, !tbaa !5
  %8196 = getelementptr inbounds %struct.doublecomplex, ptr %8195, i64 4
  %8197 = call { double, double } @Cd(ptr noundef %8196)
  %8198 = extractvalue { double, double } %8197, 0
  %8199 = extractvalue { double, double } %8197, 1
  %8200 = fneg double %8199
  %8201 = call ptr @_pCd(ptr noundef %30)
  %8202 = getelementptr inbounds { double, double }, ptr %8201, i32 0, i32 0
  %8203 = getelementptr inbounds { double, double }, ptr %8201, i32 0, i32 1
  store double %8198, ptr %8202, align 8
  store double %8200, ptr %8203, align 8
  %8204 = getelementptr inbounds %struct.doublecomplex, ptr %30, i32 0, i32 0
  %8205 = load double, ptr %8204, align 8, !tbaa !11
  %8206 = getelementptr inbounds %struct.doublecomplex, ptr %62, i32 0, i32 0
  store double %8205, ptr %8206, align 8, !tbaa !11
  %8207 = getelementptr inbounds %struct.doublecomplex, ptr %30, i32 0, i32 1
  %8208 = load double, ptr %8207, align 8, !tbaa !14
  %8209 = getelementptr inbounds %struct.doublecomplex, ptr %62, i32 0, i32 1
  store double %8208, ptr %8209, align 8, !tbaa !14
  %8210 = call { double, double } @Cd(ptr noundef %62)
  %8211 = extractvalue { double, double } %8210, 0
  %8212 = extractvalue { double, double } %8210, 1
  %8213 = fneg double %8212
  %8214 = call ptr @_pCd(ptr noundef %31)
  %8215 = getelementptr inbounds { double, double }, ptr %8214, i32 0, i32 0
  %8216 = getelementptr inbounds { double, double }, ptr %8214, i32 0, i32 1
  store double %8211, ptr %8215, align 8
  store double %8213, ptr %8216, align 8
  %8217 = load ptr, ptr %13, align 8, !tbaa !5
  %8218 = getelementptr inbounds %struct.doublecomplex, ptr %8217, i32 0, i32 0
  %8219 = load double, ptr %8218, align 8, !tbaa !11
  %8220 = getelementptr inbounds %struct.doublecomplex, ptr %31, i32 0, i32 0
  %8221 = load double, ptr %8220, align 8, !tbaa !11
  %8222 = load ptr, ptr %13, align 8, !tbaa !5
  %8223 = getelementptr inbounds %struct.doublecomplex, ptr %8222, i32 0, i32 1
  %8224 = load double, ptr %8223, align 8, !tbaa !14
  %8225 = getelementptr inbounds %struct.doublecomplex, ptr %31, i32 0, i32 1
  %8226 = load double, ptr %8225, align 8, !tbaa !14
  %8227 = fmul double %8224, %8226
  %8228 = fneg double %8227
  %8229 = call double @llvm.fmuladd.f64(double %8219, double %8221, double %8228)
  %8230 = getelementptr inbounds %struct.doublecomplex, ptr %30, i32 0, i32 0
  store double %8229, ptr %8230, align 8, !tbaa !11
  %8231 = load ptr, ptr %13, align 8, !tbaa !5
  %8232 = getelementptr inbounds %struct.doublecomplex, ptr %8231, i32 0, i32 0
  %8233 = load double, ptr %8232, align 8, !tbaa !11
  %8234 = getelementptr inbounds %struct.doublecomplex, ptr %31, i32 0, i32 1
  %8235 = load double, ptr %8234, align 8, !tbaa !14
  %8236 = load ptr, ptr %13, align 8, !tbaa !5
  %8237 = getelementptr inbounds %struct.doublecomplex, ptr %8236, i32 0, i32 1
  %8238 = load double, ptr %8237, align 8, !tbaa !14
  %8239 = getelementptr inbounds %struct.doublecomplex, ptr %31, i32 0, i32 0
  %8240 = load double, ptr %8239, align 8, !tbaa !11
  %8241 = fmul double %8238, %8240
  %8242 = call double @llvm.fmuladd.f64(double %8233, double %8235, double %8241)
  %8243 = getelementptr inbounds %struct.doublecomplex, ptr %30, i32 0, i32 1
  store double %8242, ptr %8243, align 8, !tbaa !14
  %8244 = getelementptr inbounds %struct.doublecomplex, ptr %30, i32 0, i32 0
  %8245 = load double, ptr %8244, align 8, !tbaa !11
  %8246 = getelementptr inbounds %struct.doublecomplex, ptr %53, i32 0, i32 0
  store double %8245, ptr %8246, align 8, !tbaa !11
  %8247 = getelementptr inbounds %struct.doublecomplex, ptr %30, i32 0, i32 1
  %8248 = load double, ptr %8247, align 8, !tbaa !14
  %8249 = getelementptr inbounds %struct.doublecomplex, ptr %53, i32 0, i32 1
  store double %8248, ptr %8249, align 8, !tbaa !14
  %8250 = load ptr, ptr %12, align 8, !tbaa !5
  %8251 = getelementptr inbounds %struct.doublecomplex, ptr %8250, i64 5
  %8252 = call { double, double } @Cd(ptr noundef %8251)
  %8253 = extractvalue { double, double } %8252, 0
  %8254 = extractvalue { double, double } %8252, 1
  %8255 = fneg double %8254
  %8256 = call ptr @_pCd(ptr noundef %30)
  %8257 = getelementptr inbounds { double, double }, ptr %8256, i32 0, i32 0
  %8258 = getelementptr inbounds { double, double }, ptr %8256, i32 0, i32 1
  store double %8253, ptr %8257, align 8
  store double %8255, ptr %8258, align 8
  %8259 = getelementptr inbounds %struct.doublecomplex, ptr %30, i32 0, i32 0
  %8260 = load double, ptr %8259, align 8, !tbaa !11
  %8261 = getelementptr inbounds %struct.doublecomplex, ptr %63, i32 0, i32 0
  store double %8260, ptr %8261, align 8, !tbaa !11
  %8262 = getelementptr inbounds %struct.doublecomplex, ptr %30, i32 0, i32 1
  %8263 = load double, ptr %8262, align 8, !tbaa !14
  %8264 = getelementptr inbounds %struct.doublecomplex, ptr %63, i32 0, i32 1
  store double %8263, ptr %8264, align 8, !tbaa !14
  %8265 = call { double, double } @Cd(ptr noundef %63)
  %8266 = extractvalue { double, double } %8265, 0
  %8267 = extractvalue { double, double } %8265, 1
  %8268 = fneg double %8267
  %8269 = call ptr @_pCd(ptr noundef %31)
  %8270 = getelementptr inbounds { double, double }, ptr %8269, i32 0, i32 0
  %8271 = getelementptr inbounds { double, double }, ptr %8269, i32 0, i32 1
  store double %8266, ptr %8270, align 8
  store double %8268, ptr %8271, align 8
  %8272 = load ptr, ptr %13, align 8, !tbaa !5
  %8273 = getelementptr inbounds %struct.doublecomplex, ptr %8272, i32 0, i32 0
  %8274 = load double, ptr %8273, align 8, !tbaa !11
  %8275 = getelementptr inbounds %struct.doublecomplex, ptr %31, i32 0, i32 0
  %8276 = load double, ptr %8275, align 8, !tbaa !11
  %8277 = load ptr, ptr %13, align 8, !tbaa !5
  %8278 = getelementptr inbounds %struct.doublecomplex, ptr %8277, i32 0, i32 1
  %8279 = load double, ptr %8278, align 8, !tbaa !14
  %8280 = getelementptr inbounds %struct.doublecomplex, ptr %31, i32 0, i32 1
  %8281 = load double, ptr %8280, align 8, !tbaa !14
  %8282 = fmul double %8279, %8281
  %8283 = fneg double %8282
  %8284 = call double @llvm.fmuladd.f64(double %8274, double %8276, double %8283)
  %8285 = getelementptr inbounds %struct.doublecomplex, ptr %30, i32 0, i32 0
  store double %8284, ptr %8285, align 8, !tbaa !11
  %8286 = load ptr, ptr %13, align 8, !tbaa !5
  %8287 = getelementptr inbounds %struct.doublecomplex, ptr %8286, i32 0, i32 0
  %8288 = load double, ptr %8287, align 8, !tbaa !11
  %8289 = getelementptr inbounds %struct.doublecomplex, ptr %31, i32 0, i32 1
  %8290 = load double, ptr %8289, align 8, !tbaa !14
  %8291 = load ptr, ptr %13, align 8, !tbaa !5
  %8292 = getelementptr inbounds %struct.doublecomplex, ptr %8291, i32 0, i32 1
  %8293 = load double, ptr %8292, align 8, !tbaa !14
  %8294 = getelementptr inbounds %struct.doublecomplex, ptr %31, i32 0, i32 0
  %8295 = load double, ptr %8294, align 8, !tbaa !11
  %8296 = fmul double %8293, %8295
  %8297 = call double @llvm.fmuladd.f64(double %8288, double %8290, double %8296)
  %8298 = getelementptr inbounds %struct.doublecomplex, ptr %30, i32 0, i32 1
  store double %8297, ptr %8298, align 8, !tbaa !14
  %8299 = getelementptr inbounds %struct.doublecomplex, ptr %30, i32 0, i32 0
  %8300 = load double, ptr %8299, align 8, !tbaa !11
  %8301 = getelementptr inbounds %struct.doublecomplex, ptr %54, i32 0, i32 0
  store double %8300, ptr %8301, align 8, !tbaa !11
  %8302 = getelementptr inbounds %struct.doublecomplex, ptr %30, i32 0, i32 1
  %8303 = load double, ptr %8302, align 8, !tbaa !14
  %8304 = getelementptr inbounds %struct.doublecomplex, ptr %54, i32 0, i32 1
  store double %8303, ptr %8304, align 8, !tbaa !14
  %8305 = load ptr, ptr %12, align 8, !tbaa !5
  %8306 = getelementptr inbounds %struct.doublecomplex, ptr %8305, i64 6
  %8307 = call { double, double } @Cd(ptr noundef %8306)
  %8308 = extractvalue { double, double } %8307, 0
  %8309 = extractvalue { double, double } %8307, 1
  %8310 = fneg double %8309
  %8311 = call ptr @_pCd(ptr noundef %30)
  %8312 = getelementptr inbounds { double, double }, ptr %8311, i32 0, i32 0
  %8313 = getelementptr inbounds { double, double }, ptr %8311, i32 0, i32 1
  store double %8308, ptr %8312, align 8
  store double %8310, ptr %8313, align 8
  %8314 = getelementptr inbounds %struct.doublecomplex, ptr %30, i32 0, i32 0
  %8315 = load double, ptr %8314, align 8, !tbaa !11
  %8316 = getelementptr inbounds %struct.doublecomplex, ptr %64, i32 0, i32 0
  store double %8315, ptr %8316, align 8, !tbaa !11
  %8317 = getelementptr inbounds %struct.doublecomplex, ptr %30, i32 0, i32 1
  %8318 = load double, ptr %8317, align 8, !tbaa !14
  %8319 = getelementptr inbounds %struct.doublecomplex, ptr %64, i32 0, i32 1
  store double %8318, ptr %8319, align 8, !tbaa !14
  %8320 = call { double, double } @Cd(ptr noundef %64)
  %8321 = extractvalue { double, double } %8320, 0
  %8322 = extractvalue { double, double } %8320, 1
  %8323 = fneg double %8322
  %8324 = call ptr @_pCd(ptr noundef %31)
  %8325 = getelementptr inbounds { double, double }, ptr %8324, i32 0, i32 0
  %8326 = getelementptr inbounds { double, double }, ptr %8324, i32 0, i32 1
  store double %8321, ptr %8325, align 8
  store double %8323, ptr %8326, align 8
  %8327 = load ptr, ptr %13, align 8, !tbaa !5
  %8328 = getelementptr inbounds %struct.doublecomplex, ptr %8327, i32 0, i32 0
  %8329 = load double, ptr %8328, align 8, !tbaa !11
  %8330 = getelementptr inbounds %struct.doublecomplex, ptr %31, i32 0, i32 0
  %8331 = load double, ptr %8330, align 8, !tbaa !11
  %8332 = load ptr, ptr %13, align 8, !tbaa !5
  %8333 = getelementptr inbounds %struct.doublecomplex, ptr %8332, i32 0, i32 1
  %8334 = load double, ptr %8333, align 8, !tbaa !14
  %8335 = getelementptr inbounds %struct.doublecomplex, ptr %31, i32 0, i32 1
  %8336 = load double, ptr %8335, align 8, !tbaa !14
  %8337 = fmul double %8334, %8336
  %8338 = fneg double %8337
  %8339 = call double @llvm.fmuladd.f64(double %8329, double %8331, double %8338)
  %8340 = getelementptr inbounds %struct.doublecomplex, ptr %30, i32 0, i32 0
  store double %8339, ptr %8340, align 8, !tbaa !11
  %8341 = load ptr, ptr %13, align 8, !tbaa !5
  %8342 = getelementptr inbounds %struct.doublecomplex, ptr %8341, i32 0, i32 0
  %8343 = load double, ptr %8342, align 8, !tbaa !11
  %8344 = getelementptr inbounds %struct.doublecomplex, ptr %31, i32 0, i32 1
  %8345 = load double, ptr %8344, align 8, !tbaa !14
  %8346 = load ptr, ptr %13, align 8, !tbaa !5
  %8347 = getelementptr inbounds %struct.doublecomplex, ptr %8346, i32 0, i32 1
  %8348 = load double, ptr %8347, align 8, !tbaa !14
  %8349 = getelementptr inbounds %struct.doublecomplex, ptr %31, i32 0, i32 0
  %8350 = load double, ptr %8349, align 8, !tbaa !11
  %8351 = fmul double %8348, %8350
  %8352 = call double @llvm.fmuladd.f64(double %8343, double %8345, double %8351)
  %8353 = getelementptr inbounds %struct.doublecomplex, ptr %30, i32 0, i32 1
  store double %8352, ptr %8353, align 8, !tbaa !14
  %8354 = getelementptr inbounds %struct.doublecomplex, ptr %30, i32 0, i32 0
  %8355 = load double, ptr %8354, align 8, !tbaa !11
  %8356 = getelementptr inbounds %struct.doublecomplex, ptr %55, i32 0, i32 0
  store double %8355, ptr %8356, align 8, !tbaa !11
  %8357 = getelementptr inbounds %struct.doublecomplex, ptr %30, i32 0, i32 1
  %8358 = load double, ptr %8357, align 8, !tbaa !14
  %8359 = getelementptr inbounds %struct.doublecomplex, ptr %55, i32 0, i32 1
  store double %8358, ptr %8359, align 8, !tbaa !14
  %8360 = load ptr, ptr %12, align 8, !tbaa !5
  %8361 = getelementptr inbounds %struct.doublecomplex, ptr %8360, i64 7
  %8362 = call { double, double } @Cd(ptr noundef %8361)
  %8363 = extractvalue { double, double } %8362, 0
  %8364 = extractvalue { double, double } %8362, 1
  %8365 = fneg double %8364
  %8366 = call ptr @_pCd(ptr noundef %30)
  %8367 = getelementptr inbounds { double, double }, ptr %8366, i32 0, i32 0
  %8368 = getelementptr inbounds { double, double }, ptr %8366, i32 0, i32 1
  store double %8363, ptr %8367, align 8
  store double %8365, ptr %8368, align 8
  %8369 = getelementptr inbounds %struct.doublecomplex, ptr %30, i32 0, i32 0
  %8370 = load double, ptr %8369, align 8, !tbaa !11
  %8371 = getelementptr inbounds %struct.doublecomplex, ptr %65, i32 0, i32 0
  store double %8370, ptr %8371, align 8, !tbaa !11
  %8372 = getelementptr inbounds %struct.doublecomplex, ptr %30, i32 0, i32 1
  %8373 = load double, ptr %8372, align 8, !tbaa !14
  %8374 = getelementptr inbounds %struct.doublecomplex, ptr %65, i32 0, i32 1
  store double %8373, ptr %8374, align 8, !tbaa !14
  %8375 = call { double, double } @Cd(ptr noundef %65)
  %8376 = extractvalue { double, double } %8375, 0
  %8377 = extractvalue { double, double } %8375, 1
  %8378 = fneg double %8377
  %8379 = call ptr @_pCd(ptr noundef %31)
  %8380 = getelementptr inbounds { double, double }, ptr %8379, i32 0, i32 0
  %8381 = getelementptr inbounds { double, double }, ptr %8379, i32 0, i32 1
  store double %8376, ptr %8380, align 8
  store double %8378, ptr %8381, align 8
  %8382 = load ptr, ptr %13, align 8, !tbaa !5
  %8383 = getelementptr inbounds %struct.doublecomplex, ptr %8382, i32 0, i32 0
  %8384 = load double, ptr %8383, align 8, !tbaa !11
  %8385 = getelementptr inbounds %struct.doublecomplex, ptr %31, i32 0, i32 0
  %8386 = load double, ptr %8385, align 8, !tbaa !11
  %8387 = load ptr, ptr %13, align 8, !tbaa !5
  %8388 = getelementptr inbounds %struct.doublecomplex, ptr %8387, i32 0, i32 1
  %8389 = load double, ptr %8388, align 8, !tbaa !14
  %8390 = getelementptr inbounds %struct.doublecomplex, ptr %31, i32 0, i32 1
  %8391 = load double, ptr %8390, align 8, !tbaa !14
  %8392 = fmul double %8389, %8391
  %8393 = fneg double %8392
  %8394 = call double @llvm.fmuladd.f64(double %8384, double %8386, double %8393)
  %8395 = getelementptr inbounds %struct.doublecomplex, ptr %30, i32 0, i32 0
  store double %8394, ptr %8395, align 8, !tbaa !11
  %8396 = load ptr, ptr %13, align 8, !tbaa !5
  %8397 = getelementptr inbounds %struct.doublecomplex, ptr %8396, i32 0, i32 0
  %8398 = load double, ptr %8397, align 8, !tbaa !11
  %8399 = getelementptr inbounds %struct.doublecomplex, ptr %31, i32 0, i32 1
  %8400 = load double, ptr %8399, align 8, !tbaa !14
  %8401 = load ptr, ptr %13, align 8, !tbaa !5
  %8402 = getelementptr inbounds %struct.doublecomplex, ptr %8401, i32 0, i32 1
  %8403 = load double, ptr %8402, align 8, !tbaa !14
  %8404 = getelementptr inbounds %struct.doublecomplex, ptr %31, i32 0, i32 0
  %8405 = load double, ptr %8404, align 8, !tbaa !11
  %8406 = fmul double %8403, %8405
  %8407 = call double @llvm.fmuladd.f64(double %8398, double %8400, double %8406)
  %8408 = getelementptr inbounds %struct.doublecomplex, ptr %30, i32 0, i32 1
  store double %8407, ptr %8408, align 8, !tbaa !14
  %8409 = getelementptr inbounds %struct.doublecomplex, ptr %30, i32 0, i32 0
  %8410 = load double, ptr %8409, align 8, !tbaa !11
  %8411 = getelementptr inbounds %struct.doublecomplex, ptr %56, i32 0, i32 0
  store double %8410, ptr %8411, align 8, !tbaa !11
  %8412 = getelementptr inbounds %struct.doublecomplex, ptr %30, i32 0, i32 1
  %8413 = load double, ptr %8412, align 8, !tbaa !14
  %8414 = getelementptr inbounds %struct.doublecomplex, ptr %56, i32 0, i32 1
  store double %8413, ptr %8414, align 8, !tbaa !14
  %8415 = load ptr, ptr %12, align 8, !tbaa !5
  %8416 = getelementptr inbounds %struct.doublecomplex, ptr %8415, i64 8
  %8417 = call { double, double } @Cd(ptr noundef %8416)
  %8418 = extractvalue { double, double } %8417, 0
  %8419 = extractvalue { double, double } %8417, 1
  %8420 = fneg double %8419
  %8421 = call ptr @_pCd(ptr noundef %30)
  %8422 = getelementptr inbounds { double, double }, ptr %8421, i32 0, i32 0
  %8423 = getelementptr inbounds { double, double }, ptr %8421, i32 0, i32 1
  store double %8418, ptr %8422, align 8
  store double %8420, ptr %8423, align 8
  %8424 = getelementptr inbounds %struct.doublecomplex, ptr %30, i32 0, i32 0
  %8425 = load double, ptr %8424, align 8, !tbaa !11
  %8426 = getelementptr inbounds %struct.doublecomplex, ptr %66, i32 0, i32 0
  store double %8425, ptr %8426, align 8, !tbaa !11
  %8427 = getelementptr inbounds %struct.doublecomplex, ptr %30, i32 0, i32 1
  %8428 = load double, ptr %8427, align 8, !tbaa !14
  %8429 = getelementptr inbounds %struct.doublecomplex, ptr %66, i32 0, i32 1
  store double %8428, ptr %8429, align 8, !tbaa !14
  %8430 = call { double, double } @Cd(ptr noundef %66)
  %8431 = extractvalue { double, double } %8430, 0
  %8432 = extractvalue { double, double } %8430, 1
  %8433 = fneg double %8432
  %8434 = call ptr @_pCd(ptr noundef %31)
  %8435 = getelementptr inbounds { double, double }, ptr %8434, i32 0, i32 0
  %8436 = getelementptr inbounds { double, double }, ptr %8434, i32 0, i32 1
  store double %8431, ptr %8435, align 8
  store double %8433, ptr %8436, align 8
  %8437 = load ptr, ptr %13, align 8, !tbaa !5
  %8438 = getelementptr inbounds %struct.doublecomplex, ptr %8437, i32 0, i32 0
  %8439 = load double, ptr %8438, align 8, !tbaa !11
  %8440 = getelementptr inbounds %struct.doublecomplex, ptr %31, i32 0, i32 0
  %8441 = load double, ptr %8440, align 8, !tbaa !11
  %8442 = load ptr, ptr %13, align 8, !tbaa !5
  %8443 = getelementptr inbounds %struct.doublecomplex, ptr %8442, i32 0, i32 1
  %8444 = load double, ptr %8443, align 8, !tbaa !14
  %8445 = getelementptr inbounds %struct.doublecomplex, ptr %31, i32 0, i32 1
  %8446 = load double, ptr %8445, align 8, !tbaa !14
  %8447 = fmul double %8444, %8446
  %8448 = fneg double %8447
  %8449 = call double @llvm.fmuladd.f64(double %8439, double %8441, double %8448)
  %8450 = getelementptr inbounds %struct.doublecomplex, ptr %30, i32 0, i32 0
  store double %8449, ptr %8450, align 8, !tbaa !11
  %8451 = load ptr, ptr %13, align 8, !tbaa !5
  %8452 = getelementptr inbounds %struct.doublecomplex, ptr %8451, i32 0, i32 0
  %8453 = load double, ptr %8452, align 8, !tbaa !11
  %8454 = getelementptr inbounds %struct.doublecomplex, ptr %31, i32 0, i32 1
  %8455 = load double, ptr %8454, align 8, !tbaa !14
  %8456 = load ptr, ptr %13, align 8, !tbaa !5
  %8457 = getelementptr inbounds %struct.doublecomplex, ptr %8456, i32 0, i32 1
  %8458 = load double, ptr %8457, align 8, !tbaa !14
  %8459 = getelementptr inbounds %struct.doublecomplex, ptr %31, i32 0, i32 0
  %8460 = load double, ptr %8459, align 8, !tbaa !11
  %8461 = fmul double %8458, %8460
  %8462 = call double @llvm.fmuladd.f64(double %8453, double %8455, double %8461)
  %8463 = getelementptr inbounds %struct.doublecomplex, ptr %30, i32 0, i32 1
  store double %8462, ptr %8463, align 8, !tbaa !14
  %8464 = getelementptr inbounds %struct.doublecomplex, ptr %30, i32 0, i32 0
  %8465 = load double, ptr %8464, align 8, !tbaa !11
  %8466 = getelementptr inbounds %struct.doublecomplex, ptr %57, i32 0, i32 0
  store double %8465, ptr %8466, align 8, !tbaa !11
  %8467 = getelementptr inbounds %struct.doublecomplex, ptr %30, i32 0, i32 1
  %8468 = load double, ptr %8467, align 8, !tbaa !14
  %8469 = getelementptr inbounds %struct.doublecomplex, ptr %57, i32 0, i32 1
  store double %8468, ptr %8469, align 8, !tbaa !14
  %8470 = load ptr, ptr %12, align 8, !tbaa !5
  %8471 = getelementptr inbounds %struct.doublecomplex, ptr %8470, i64 9
  %8472 = call { double, double } @Cd(ptr noundef %8471)
  %8473 = extractvalue { double, double } %8472, 0
  %8474 = extractvalue { double, double } %8472, 1
  %8475 = fneg double %8474
  %8476 = call ptr @_pCd(ptr noundef %30)
  %8477 = getelementptr inbounds { double, double }, ptr %8476, i32 0, i32 0
  %8478 = getelementptr inbounds { double, double }, ptr %8476, i32 0, i32 1
  store double %8473, ptr %8477, align 8
  store double %8475, ptr %8478, align 8
  %8479 = getelementptr inbounds %struct.doublecomplex, ptr %30, i32 0, i32 0
  %8480 = load double, ptr %8479, align 8, !tbaa !11
  %8481 = getelementptr inbounds %struct.doublecomplex, ptr %67, i32 0, i32 0
  store double %8480, ptr %8481, align 8, !tbaa !11
  %8482 = getelementptr inbounds %struct.doublecomplex, ptr %30, i32 0, i32 1
  %8483 = load double, ptr %8482, align 8, !tbaa !14
  %8484 = getelementptr inbounds %struct.doublecomplex, ptr %67, i32 0, i32 1
  store double %8483, ptr %8484, align 8, !tbaa !14
  %8485 = call { double, double } @Cd(ptr noundef %67)
  %8486 = extractvalue { double, double } %8485, 0
  %8487 = extractvalue { double, double } %8485, 1
  %8488 = fneg double %8487
  %8489 = call ptr @_pCd(ptr noundef %31)
  %8490 = getelementptr inbounds { double, double }, ptr %8489, i32 0, i32 0
  %8491 = getelementptr inbounds { double, double }, ptr %8489, i32 0, i32 1
  store double %8486, ptr %8490, align 8
  store double %8488, ptr %8491, align 8
  %8492 = load ptr, ptr %13, align 8, !tbaa !5
  %8493 = getelementptr inbounds %struct.doublecomplex, ptr %8492, i32 0, i32 0
  %8494 = load double, ptr %8493, align 8, !tbaa !11
  %8495 = getelementptr inbounds %struct.doublecomplex, ptr %31, i32 0, i32 0
  %8496 = load double, ptr %8495, align 8, !tbaa !11
  %8497 = load ptr, ptr %13, align 8, !tbaa !5
  %8498 = getelementptr inbounds %struct.doublecomplex, ptr %8497, i32 0, i32 1
  %8499 = load double, ptr %8498, align 8, !tbaa !14
  %8500 = getelementptr inbounds %struct.doublecomplex, ptr %31, i32 0, i32 1
  %8501 = load double, ptr %8500, align 8, !tbaa !14
  %8502 = fmul double %8499, %8501
  %8503 = fneg double %8502
  %8504 = call double @llvm.fmuladd.f64(double %8494, double %8496, double %8503)
  %8505 = getelementptr inbounds %struct.doublecomplex, ptr %30, i32 0, i32 0
  store double %8504, ptr %8505, align 8, !tbaa !11
  %8506 = load ptr, ptr %13, align 8, !tbaa !5
  %8507 = getelementptr inbounds %struct.doublecomplex, ptr %8506, i32 0, i32 0
  %8508 = load double, ptr %8507, align 8, !tbaa !11
  %8509 = getelementptr inbounds %struct.doublecomplex, ptr %31, i32 0, i32 1
  %8510 = load double, ptr %8509, align 8, !tbaa !14
  %8511 = load ptr, ptr %13, align 8, !tbaa !5
  %8512 = getelementptr inbounds %struct.doublecomplex, ptr %8511, i32 0, i32 1
  %8513 = load double, ptr %8512, align 8, !tbaa !14
  %8514 = getelementptr inbounds %struct.doublecomplex, ptr %31, i32 0, i32 0
  %8515 = load double, ptr %8514, align 8, !tbaa !11
  %8516 = fmul double %8513, %8515
  %8517 = call double @llvm.fmuladd.f64(double %8508, double %8510, double %8516)
  %8518 = getelementptr inbounds %struct.doublecomplex, ptr %30, i32 0, i32 1
  store double %8517, ptr %8518, align 8, !tbaa !14
  %8519 = getelementptr inbounds %struct.doublecomplex, ptr %30, i32 0, i32 0
  %8520 = load double, ptr %8519, align 8, !tbaa !11
  %8521 = getelementptr inbounds %struct.doublecomplex, ptr %58, i32 0, i32 0
  store double %8520, ptr %8521, align 8, !tbaa !11
  %8522 = getelementptr inbounds %struct.doublecomplex, ptr %30, i32 0, i32 1
  %8523 = load double, ptr %8522, align 8, !tbaa !14
  %8524 = getelementptr inbounds %struct.doublecomplex, ptr %58, i32 0, i32 1
  store double %8523, ptr %8524, align 8, !tbaa !14
  %8525 = load ptr, ptr %12, align 8, !tbaa !5
  %8526 = getelementptr inbounds %struct.doublecomplex, ptr %8525, i64 10
  %8527 = call { double, double } @Cd(ptr noundef %8526)
  %8528 = extractvalue { double, double } %8527, 0
  %8529 = extractvalue { double, double } %8527, 1
  %8530 = fneg double %8529
  %8531 = call ptr @_pCd(ptr noundef %30)
  %8532 = getelementptr inbounds { double, double }, ptr %8531, i32 0, i32 0
  %8533 = getelementptr inbounds { double, double }, ptr %8531, i32 0, i32 1
  store double %8528, ptr %8532, align 8
  store double %8530, ptr %8533, align 8
  %8534 = getelementptr inbounds %struct.doublecomplex, ptr %30, i32 0, i32 0
  %8535 = load double, ptr %8534, align 8, !tbaa !11
  %8536 = getelementptr inbounds %struct.doublecomplex, ptr %69, i32 0, i32 0
  store double %8535, ptr %8536, align 8, !tbaa !11
  %8537 = getelementptr inbounds %struct.doublecomplex, ptr %30, i32 0, i32 1
  %8538 = load double, ptr %8537, align 8, !tbaa !14
  %8539 = getelementptr inbounds %struct.doublecomplex, ptr %69, i32 0, i32 1
  store double %8538, ptr %8539, align 8, !tbaa !14
  %8540 = call { double, double } @Cd(ptr noundef %69)
  %8541 = extractvalue { double, double } %8540, 0
  %8542 = extractvalue { double, double } %8540, 1
  %8543 = fneg double %8542
  %8544 = call ptr @_pCd(ptr noundef %31)
  %8545 = getelementptr inbounds { double, double }, ptr %8544, i32 0, i32 0
  %8546 = getelementptr inbounds { double, double }, ptr %8544, i32 0, i32 1
  store double %8541, ptr %8545, align 8
  store double %8543, ptr %8546, align 8
  %8547 = load ptr, ptr %13, align 8, !tbaa !5
  %8548 = getelementptr inbounds %struct.doublecomplex, ptr %8547, i32 0, i32 0
  %8549 = load double, ptr %8548, align 8, !tbaa !11
  %8550 = getelementptr inbounds %struct.doublecomplex, ptr %31, i32 0, i32 0
  %8551 = load double, ptr %8550, align 8, !tbaa !11
  %8552 = load ptr, ptr %13, align 8, !tbaa !5
  %8553 = getelementptr inbounds %struct.doublecomplex, ptr %8552, i32 0, i32 1
  %8554 = load double, ptr %8553, align 8, !tbaa !14
  %8555 = getelementptr inbounds %struct.doublecomplex, ptr %31, i32 0, i32 1
  %8556 = load double, ptr %8555, align 8, !tbaa !14
  %8557 = fmul double %8554, %8556
  %8558 = fneg double %8557
  %8559 = call double @llvm.fmuladd.f64(double %8549, double %8551, double %8558)
  %8560 = getelementptr inbounds %struct.doublecomplex, ptr %30, i32 0, i32 0
  store double %8559, ptr %8560, align 8, !tbaa !11
  %8561 = load ptr, ptr %13, align 8, !tbaa !5
  %8562 = getelementptr inbounds %struct.doublecomplex, ptr %8561, i32 0, i32 0
  %8563 = load double, ptr %8562, align 8, !tbaa !11
  %8564 = getelementptr inbounds %struct.doublecomplex, ptr %31, i32 0, i32 1
  %8565 = load double, ptr %8564, align 8, !tbaa !14
  %8566 = load ptr, ptr %13, align 8, !tbaa !5
  %8567 = getelementptr inbounds %struct.doublecomplex, ptr %8566, i32 0, i32 1
  %8568 = load double, ptr %8567, align 8, !tbaa !14
  %8569 = getelementptr inbounds %struct.doublecomplex, ptr %31, i32 0, i32 0
  %8570 = load double, ptr %8569, align 8, !tbaa !11
  %8571 = fmul double %8568, %8570
  %8572 = call double @llvm.fmuladd.f64(double %8563, double %8565, double %8571)
  %8573 = getelementptr inbounds %struct.doublecomplex, ptr %30, i32 0, i32 1
  store double %8572, ptr %8573, align 8, !tbaa !14
  %8574 = getelementptr inbounds %struct.doublecomplex, ptr %30, i32 0, i32 0
  %8575 = load double, ptr %8574, align 8, !tbaa !11
  %8576 = getelementptr inbounds %struct.doublecomplex, ptr %68, i32 0, i32 0
  store double %8575, ptr %8576, align 8, !tbaa !11
  %8577 = getelementptr inbounds %struct.doublecomplex, ptr %30, i32 0, i32 1
  %8578 = load double, ptr %8577, align 8, !tbaa !14
  %8579 = getelementptr inbounds %struct.doublecomplex, ptr %68, i32 0, i32 1
  store double %8578, ptr %8579, align 8, !tbaa !14
  %8580 = load ptr, ptr %11, align 8, !tbaa !5
  %8581 = load i32, ptr %8580, align 4, !tbaa !9
  store i32 %8581, ptr %19, align 4, !tbaa !9
  store i32 1, ptr %49, align 4, !tbaa !9
  br label %8582

8582:                                             ; preds = %9781, %8029
  %8583 = load i32, ptr %49, align 4, !tbaa !9
  %8584 = load i32, ptr %19, align 4, !tbaa !9
  %8585 = icmp sle i32 %8583, %8584
  br i1 %8585, label %8586, label %9784

8586:                                             ; preds = %8582
  %8587 = load i32, ptr %49, align 4, !tbaa !9
  %8588 = load i32, ptr %17, align 4, !tbaa !9
  %8589 = mul nsw i32 %8587, %8588
  %8590 = add nsw i32 %8589, 1
  store i32 %8590, ptr %20, align 4, !tbaa !9
  %8591 = getelementptr inbounds %struct.doublecomplex, ptr %59, i32 0, i32 0
  %8592 = load double, ptr %8591, align 8, !tbaa !11
  %8593 = load ptr, ptr %14, align 8, !tbaa !5
  %8594 = load i32, ptr %20, align 4, !tbaa !9
  %8595 = sext i32 %8594 to i64
  %8596 = getelementptr inbounds %struct.doublecomplex, ptr %8593, i64 %8595
  %8597 = getelementptr inbounds %struct.doublecomplex, ptr %8596, i32 0, i32 0
  %8598 = load double, ptr %8597, align 8, !tbaa !11
  %8599 = getelementptr inbounds %struct.doublecomplex, ptr %59, i32 0, i32 1
  %8600 = load double, ptr %8599, align 8, !tbaa !14
  %8601 = load ptr, ptr %14, align 8, !tbaa !5
  %8602 = load i32, ptr %20, align 4, !tbaa !9
  %8603 = sext i32 %8602 to i64
  %8604 = getelementptr inbounds %struct.doublecomplex, ptr %8601, i64 %8603
  %8605 = getelementptr inbounds %struct.doublecomplex, ptr %8604, i32 0, i32 1
  %8606 = load double, ptr %8605, align 8, !tbaa !14
  %8607 = fmul double %8600, %8606
  %8608 = fneg double %8607
  %8609 = call double @llvm.fmuladd.f64(double %8592, double %8598, double %8608)
  %8610 = getelementptr inbounds %struct.doublecomplex, ptr %39, i32 0, i32 0
  store double %8609, ptr %8610, align 8, !tbaa !11
  %8611 = getelementptr inbounds %struct.doublecomplex, ptr %59, i32 0, i32 0
  %8612 = load double, ptr %8611, align 8, !tbaa !11
  %8613 = load ptr, ptr %14, align 8, !tbaa !5
  %8614 = load i32, ptr %20, align 4, !tbaa !9
  %8615 = sext i32 %8614 to i64
  %8616 = getelementptr inbounds %struct.doublecomplex, ptr %8613, i64 %8615
  %8617 = getelementptr inbounds %struct.doublecomplex, ptr %8616, i32 0, i32 1
  %8618 = load double, ptr %8617, align 8, !tbaa !14
  %8619 = getelementptr inbounds %struct.doublecomplex, ptr %59, i32 0, i32 1
  %8620 = load double, ptr %8619, align 8, !tbaa !14
  %8621 = load ptr, ptr %14, align 8, !tbaa !5
  %8622 = load i32, ptr %20, align 4, !tbaa !9
  %8623 = sext i32 %8622 to i64
  %8624 = getelementptr inbounds %struct.doublecomplex, ptr %8621, i64 %8623
  %8625 = getelementptr inbounds %struct.doublecomplex, ptr %8624, i32 0, i32 0
  %8626 = load double, ptr %8625, align 8, !tbaa !11
  %8627 = fmul double %8620, %8626
  %8628 = call double @llvm.fmuladd.f64(double %8612, double %8618, double %8627)
  %8629 = getelementptr inbounds %struct.doublecomplex, ptr %39, i32 0, i32 1
  store double %8628, ptr %8629, align 8, !tbaa !14
  %8630 = load i32, ptr %49, align 4, !tbaa !9
  %8631 = load i32, ptr %17, align 4, !tbaa !9
  %8632 = mul nsw i32 %8630, %8631
  %8633 = add nsw i32 %8632, 2
  store i32 %8633, ptr %21, align 4, !tbaa !9
  %8634 = getelementptr inbounds %struct.doublecomplex, ptr %60, i32 0, i32 0
  %8635 = load double, ptr %8634, align 8, !tbaa !11
  %8636 = load ptr, ptr %14, align 8, !tbaa !5
  %8637 = load i32, ptr %21, align 4, !tbaa !9
  %8638 = sext i32 %8637 to i64
  %8639 = getelementptr inbounds %struct.doublecomplex, ptr %8636, i64 %8638
  %8640 = getelementptr inbounds %struct.doublecomplex, ptr %8639, i32 0, i32 0
  %8641 = load double, ptr %8640, align 8, !tbaa !11
  %8642 = getelementptr inbounds %struct.doublecomplex, ptr %60, i32 0, i32 1
  %8643 = load double, ptr %8642, align 8, !tbaa !14
  %8644 = load ptr, ptr %14, align 8, !tbaa !5
  %8645 = load i32, ptr %21, align 4, !tbaa !9
  %8646 = sext i32 %8645 to i64
  %8647 = getelementptr inbounds %struct.doublecomplex, ptr %8644, i64 %8646
  %8648 = getelementptr inbounds %struct.doublecomplex, ptr %8647, i32 0, i32 1
  %8649 = load double, ptr %8648, align 8, !tbaa !14
  %8650 = fmul double %8643, %8649
  %8651 = fneg double %8650
  %8652 = call double @llvm.fmuladd.f64(double %8635, double %8641, double %8651)
  %8653 = getelementptr inbounds %struct.doublecomplex, ptr %40, i32 0, i32 0
  store double %8652, ptr %8653, align 8, !tbaa !11
  %8654 = getelementptr inbounds %struct.doublecomplex, ptr %60, i32 0, i32 0
  %8655 = load double, ptr %8654, align 8, !tbaa !11
  %8656 = load ptr, ptr %14, align 8, !tbaa !5
  %8657 = load i32, ptr %21, align 4, !tbaa !9
  %8658 = sext i32 %8657 to i64
  %8659 = getelementptr inbounds %struct.doublecomplex, ptr %8656, i64 %8658
  %8660 = getelementptr inbounds %struct.doublecomplex, ptr %8659, i32 0, i32 1
  %8661 = load double, ptr %8660, align 8, !tbaa !14
  %8662 = getelementptr inbounds %struct.doublecomplex, ptr %60, i32 0, i32 1
  %8663 = load double, ptr %8662, align 8, !tbaa !14
  %8664 = load ptr, ptr %14, align 8, !tbaa !5
  %8665 = load i32, ptr %21, align 4, !tbaa !9
  %8666 = sext i32 %8665 to i64
  %8667 = getelementptr inbounds %struct.doublecomplex, ptr %8664, i64 %8666
  %8668 = getelementptr inbounds %struct.doublecomplex, ptr %8667, i32 0, i32 0
  %8669 = load double, ptr %8668, align 8, !tbaa !11
  %8670 = fmul double %8663, %8669
  %8671 = call double @llvm.fmuladd.f64(double %8655, double %8661, double %8670)
  %8672 = getelementptr inbounds %struct.doublecomplex, ptr %40, i32 0, i32 1
  store double %8671, ptr %8672, align 8, !tbaa !14
  %8673 = getelementptr inbounds %struct.doublecomplex, ptr %39, i32 0, i32 0
  %8674 = load double, ptr %8673, align 8, !tbaa !11
  %8675 = getelementptr inbounds %struct.doublecomplex, ptr %40, i32 0, i32 0
  %8676 = load double, ptr %8675, align 8, !tbaa !11
  %8677 = fadd double %8674, %8676
  %8678 = getelementptr inbounds %struct.doublecomplex, ptr %38, i32 0, i32 0
  store double %8677, ptr %8678, align 8, !tbaa !11
  %8679 = getelementptr inbounds %struct.doublecomplex, ptr %39, i32 0, i32 1
  %8680 = load double, ptr %8679, align 8, !tbaa !14
  %8681 = getelementptr inbounds %struct.doublecomplex, ptr %40, i32 0, i32 1
  %8682 = load double, ptr %8681, align 8, !tbaa !14
  %8683 = fadd double %8680, %8682
  %8684 = getelementptr inbounds %struct.doublecomplex, ptr %38, i32 0, i32 1
  store double %8683, ptr %8684, align 8, !tbaa !14
  %8685 = load i32, ptr %49, align 4, !tbaa !9
  %8686 = load i32, ptr %17, align 4, !tbaa !9
  %8687 = mul nsw i32 %8685, %8686
  %8688 = add nsw i32 %8687, 3
  store i32 %8688, ptr %22, align 4, !tbaa !9
  %8689 = getelementptr inbounds %struct.doublecomplex, ptr %61, i32 0, i32 0
  %8690 = load double, ptr %8689, align 8, !tbaa !11
  %8691 = load ptr, ptr %14, align 8, !tbaa !5
  %8692 = load i32, ptr %22, align 4, !tbaa !9
  %8693 = sext i32 %8692 to i64
  %8694 = getelementptr inbounds %struct.doublecomplex, ptr %8691, i64 %8693
  %8695 = getelementptr inbounds %struct.doublecomplex, ptr %8694, i32 0, i32 0
  %8696 = load double, ptr %8695, align 8, !tbaa !11
  %8697 = getelementptr inbounds %struct.doublecomplex, ptr %61, i32 0, i32 1
  %8698 = load double, ptr %8697, align 8, !tbaa !14
  %8699 = load ptr, ptr %14, align 8, !tbaa !5
  %8700 = load i32, ptr %22, align 4, !tbaa !9
  %8701 = sext i32 %8700 to i64
  %8702 = getelementptr inbounds %struct.doublecomplex, ptr %8699, i64 %8701
  %8703 = getelementptr inbounds %struct.doublecomplex, ptr %8702, i32 0, i32 1
  %8704 = load double, ptr %8703, align 8, !tbaa !14
  %8705 = fmul double %8698, %8704
  %8706 = fneg double %8705
  %8707 = call double @llvm.fmuladd.f64(double %8690, double %8696, double %8706)
  %8708 = getelementptr inbounds %struct.doublecomplex, ptr %41, i32 0, i32 0
  store double %8707, ptr %8708, align 8, !tbaa !11
  %8709 = getelementptr inbounds %struct.doublecomplex, ptr %61, i32 0, i32 0
  %8710 = load double, ptr %8709, align 8, !tbaa !11
  %8711 = load ptr, ptr %14, align 8, !tbaa !5
  %8712 = load i32, ptr %22, align 4, !tbaa !9
  %8713 = sext i32 %8712 to i64
  %8714 = getelementptr inbounds %struct.doublecomplex, ptr %8711, i64 %8713
  %8715 = getelementptr inbounds %struct.doublecomplex, ptr %8714, i32 0, i32 1
  %8716 = load double, ptr %8715, align 8, !tbaa !14
  %8717 = getelementptr inbounds %struct.doublecomplex, ptr %61, i32 0, i32 1
  %8718 = load double, ptr %8717, align 8, !tbaa !14
  %8719 = load ptr, ptr %14, align 8, !tbaa !5
  %8720 = load i32, ptr %22, align 4, !tbaa !9
  %8721 = sext i32 %8720 to i64
  %8722 = getelementptr inbounds %struct.doublecomplex, ptr %8719, i64 %8721
  %8723 = getelementptr inbounds %struct.doublecomplex, ptr %8722, i32 0, i32 0
  %8724 = load double, ptr %8723, align 8, !tbaa !11
  %8725 = fmul double %8718, %8724
  %8726 = call double @llvm.fmuladd.f64(double %8710, double %8716, double %8725)
  %8727 = getelementptr inbounds %struct.doublecomplex, ptr %41, i32 0, i32 1
  store double %8726, ptr %8727, align 8, !tbaa !14
  %8728 = getelementptr inbounds %struct.doublecomplex, ptr %38, i32 0, i32 0
  %8729 = load double, ptr %8728, align 8, !tbaa !11
  %8730 = getelementptr inbounds %struct.doublecomplex, ptr %41, i32 0, i32 0
  %8731 = load double, ptr %8730, align 8, !tbaa !11
  %8732 = fadd double %8729, %8731
  %8733 = getelementptr inbounds %struct.doublecomplex, ptr %37, i32 0, i32 0
  store double %8732, ptr %8733, align 8, !tbaa !11
  %8734 = getelementptr inbounds %struct.doublecomplex, ptr %38, i32 0, i32 1
  %8735 = load double, ptr %8734, align 8, !tbaa !14
  %8736 = getelementptr inbounds %struct.doublecomplex, ptr %41, i32 0, i32 1
  %8737 = load double, ptr %8736, align 8, !tbaa !14
  %8738 = fadd double %8735, %8737
  %8739 = getelementptr inbounds %struct.doublecomplex, ptr %37, i32 0, i32 1
  store double %8738, ptr %8739, align 8, !tbaa !14
  %8740 = load i32, ptr %49, align 4, !tbaa !9
  %8741 = load i32, ptr %17, align 4, !tbaa !9
  %8742 = mul nsw i32 %8740, %8741
  %8743 = add nsw i32 %8742, 4
  store i32 %8743, ptr %23, align 4, !tbaa !9
  %8744 = getelementptr inbounds %struct.doublecomplex, ptr %62, i32 0, i32 0
  %8745 = load double, ptr %8744, align 8, !tbaa !11
  %8746 = load ptr, ptr %14, align 8, !tbaa !5
  %8747 = load i32, ptr %23, align 4, !tbaa !9
  %8748 = sext i32 %8747 to i64
  %8749 = getelementptr inbounds %struct.doublecomplex, ptr %8746, i64 %8748
  %8750 = getelementptr inbounds %struct.doublecomplex, ptr %8749, i32 0, i32 0
  %8751 = load double, ptr %8750, align 8, !tbaa !11
  %8752 = getelementptr inbounds %struct.doublecomplex, ptr %62, i32 0, i32 1
  %8753 = load double, ptr %8752, align 8, !tbaa !14
  %8754 = load ptr, ptr %14, align 8, !tbaa !5
  %8755 = load i32, ptr %23, align 4, !tbaa !9
  %8756 = sext i32 %8755 to i64
  %8757 = getelementptr inbounds %struct.doublecomplex, ptr %8754, i64 %8756
  %8758 = getelementptr inbounds %struct.doublecomplex, ptr %8757, i32 0, i32 1
  %8759 = load double, ptr %8758, align 8, !tbaa !14
  %8760 = fmul double %8753, %8759
  %8761 = fneg double %8760
  %8762 = call double @llvm.fmuladd.f64(double %8745, double %8751, double %8761)
  %8763 = getelementptr inbounds %struct.doublecomplex, ptr %42, i32 0, i32 0
  store double %8762, ptr %8763, align 8, !tbaa !11
  %8764 = getelementptr inbounds %struct.doublecomplex, ptr %62, i32 0, i32 0
  %8765 = load double, ptr %8764, align 8, !tbaa !11
  %8766 = load ptr, ptr %14, align 8, !tbaa !5
  %8767 = load i32, ptr %23, align 4, !tbaa !9
  %8768 = sext i32 %8767 to i64
  %8769 = getelementptr inbounds %struct.doublecomplex, ptr %8766, i64 %8768
  %8770 = getelementptr inbounds %struct.doublecomplex, ptr %8769, i32 0, i32 1
  %8771 = load double, ptr %8770, align 8, !tbaa !14
  %8772 = getelementptr inbounds %struct.doublecomplex, ptr %62, i32 0, i32 1
  %8773 = load double, ptr %8772, align 8, !tbaa !14
  %8774 = load ptr, ptr %14, align 8, !tbaa !5
  %8775 = load i32, ptr %23, align 4, !tbaa !9
  %8776 = sext i32 %8775 to i64
  %8777 = getelementptr inbounds %struct.doublecomplex, ptr %8774, i64 %8776
  %8778 = getelementptr inbounds %struct.doublecomplex, ptr %8777, i32 0, i32 0
  %8779 = load double, ptr %8778, align 8, !tbaa !11
  %8780 = fmul double %8773, %8779
  %8781 = call double @llvm.fmuladd.f64(double %8765, double %8771, double %8780)
  %8782 = getelementptr inbounds %struct.doublecomplex, ptr %42, i32 0, i32 1
  store double %8781, ptr %8782, align 8, !tbaa !14
  %8783 = getelementptr inbounds %struct.doublecomplex, ptr %37, i32 0, i32 0
  %8784 = load double, ptr %8783, align 8, !tbaa !11
  %8785 = getelementptr inbounds %struct.doublecomplex, ptr %42, i32 0, i32 0
  %8786 = load double, ptr %8785, align 8, !tbaa !11
  %8787 = fadd double %8784, %8786
  %8788 = getelementptr inbounds %struct.doublecomplex, ptr %36, i32 0, i32 0
  store double %8787, ptr %8788, align 8, !tbaa !11
  %8789 = getelementptr inbounds %struct.doublecomplex, ptr %37, i32 0, i32 1
  %8790 = load double, ptr %8789, align 8, !tbaa !14
  %8791 = getelementptr inbounds %struct.doublecomplex, ptr %42, i32 0, i32 1
  %8792 = load double, ptr %8791, align 8, !tbaa !14
  %8793 = fadd double %8790, %8792
  %8794 = getelementptr inbounds %struct.doublecomplex, ptr %36, i32 0, i32 1
  store double %8793, ptr %8794, align 8, !tbaa !14
  %8795 = load i32, ptr %49, align 4, !tbaa !9
  %8796 = load i32, ptr %17, align 4, !tbaa !9
  %8797 = mul nsw i32 %8795, %8796
  %8798 = add nsw i32 %8797, 5
  store i32 %8798, ptr %24, align 4, !tbaa !9
  %8799 = getelementptr inbounds %struct.doublecomplex, ptr %63, i32 0, i32 0
  %8800 = load double, ptr %8799, align 8, !tbaa !11
  %8801 = load ptr, ptr %14, align 8, !tbaa !5
  %8802 = load i32, ptr %24, align 4, !tbaa !9
  %8803 = sext i32 %8802 to i64
  %8804 = getelementptr inbounds %struct.doublecomplex, ptr %8801, i64 %8803
  %8805 = getelementptr inbounds %struct.doublecomplex, ptr %8804, i32 0, i32 0
  %8806 = load double, ptr %8805, align 8, !tbaa !11
  %8807 = getelementptr inbounds %struct.doublecomplex, ptr %63, i32 0, i32 1
  %8808 = load double, ptr %8807, align 8, !tbaa !14
  %8809 = load ptr, ptr %14, align 8, !tbaa !5
  %8810 = load i32, ptr %24, align 4, !tbaa !9
  %8811 = sext i32 %8810 to i64
  %8812 = getelementptr inbounds %struct.doublecomplex, ptr %8809, i64 %8811
  %8813 = getelementptr inbounds %struct.doublecomplex, ptr %8812, i32 0, i32 1
  %8814 = load double, ptr %8813, align 8, !tbaa !14
  %8815 = fmul double %8808, %8814
  %8816 = fneg double %8815
  %8817 = call double @llvm.fmuladd.f64(double %8800, double %8806, double %8816)
  %8818 = getelementptr inbounds %struct.doublecomplex, ptr %43, i32 0, i32 0
  store double %8817, ptr %8818, align 8, !tbaa !11
  %8819 = getelementptr inbounds %struct.doublecomplex, ptr %63, i32 0, i32 0
  %8820 = load double, ptr %8819, align 8, !tbaa !11
  %8821 = load ptr, ptr %14, align 8, !tbaa !5
  %8822 = load i32, ptr %24, align 4, !tbaa !9
  %8823 = sext i32 %8822 to i64
  %8824 = getelementptr inbounds %struct.doublecomplex, ptr %8821, i64 %8823
  %8825 = getelementptr inbounds %struct.doublecomplex, ptr %8824, i32 0, i32 1
  %8826 = load double, ptr %8825, align 8, !tbaa !14
  %8827 = getelementptr inbounds %struct.doublecomplex, ptr %63, i32 0, i32 1
  %8828 = load double, ptr %8827, align 8, !tbaa !14
  %8829 = load ptr, ptr %14, align 8, !tbaa !5
  %8830 = load i32, ptr %24, align 4, !tbaa !9
  %8831 = sext i32 %8830 to i64
  %8832 = getelementptr inbounds %struct.doublecomplex, ptr %8829, i64 %8831
  %8833 = getelementptr inbounds %struct.doublecomplex, ptr %8832, i32 0, i32 0
  %8834 = load double, ptr %8833, align 8, !tbaa !11
  %8835 = fmul double %8828, %8834
  %8836 = call double @llvm.fmuladd.f64(double %8820, double %8826, double %8835)
  %8837 = getelementptr inbounds %struct.doublecomplex, ptr %43, i32 0, i32 1
  store double %8836, ptr %8837, align 8, !tbaa !14
  %8838 = getelementptr inbounds %struct.doublecomplex, ptr %36, i32 0, i32 0
  %8839 = load double, ptr %8838, align 8, !tbaa !11
  %8840 = getelementptr inbounds %struct.doublecomplex, ptr %43, i32 0, i32 0
  %8841 = load double, ptr %8840, align 8, !tbaa !11
  %8842 = fadd double %8839, %8841
  %8843 = getelementptr inbounds %struct.doublecomplex, ptr %35, i32 0, i32 0
  store double %8842, ptr %8843, align 8, !tbaa !11
  %8844 = getelementptr inbounds %struct.doublecomplex, ptr %36, i32 0, i32 1
  %8845 = load double, ptr %8844, align 8, !tbaa !14
  %8846 = getelementptr inbounds %struct.doublecomplex, ptr %43, i32 0, i32 1
  %8847 = load double, ptr %8846, align 8, !tbaa !14
  %8848 = fadd double %8845, %8847
  %8849 = getelementptr inbounds %struct.doublecomplex, ptr %35, i32 0, i32 1
  store double %8848, ptr %8849, align 8, !tbaa !14
  %8850 = load i32, ptr %49, align 4, !tbaa !9
  %8851 = load i32, ptr %17, align 4, !tbaa !9
  %8852 = mul nsw i32 %8850, %8851
  %8853 = add nsw i32 %8852, 6
  store i32 %8853, ptr %25, align 4, !tbaa !9
  %8854 = getelementptr inbounds %struct.doublecomplex, ptr %64, i32 0, i32 0
  %8855 = load double, ptr %8854, align 8, !tbaa !11
  %8856 = load ptr, ptr %14, align 8, !tbaa !5
  %8857 = load i32, ptr %25, align 4, !tbaa !9
  %8858 = sext i32 %8857 to i64
  %8859 = getelementptr inbounds %struct.doublecomplex, ptr %8856, i64 %8858
  %8860 = getelementptr inbounds %struct.doublecomplex, ptr %8859, i32 0, i32 0
  %8861 = load double, ptr %8860, align 8, !tbaa !11
  %8862 = getelementptr inbounds %struct.doublecomplex, ptr %64, i32 0, i32 1
  %8863 = load double, ptr %8862, align 8, !tbaa !14
  %8864 = load ptr, ptr %14, align 8, !tbaa !5
  %8865 = load i32, ptr %25, align 4, !tbaa !9
  %8866 = sext i32 %8865 to i64
  %8867 = getelementptr inbounds %struct.doublecomplex, ptr %8864, i64 %8866
  %8868 = getelementptr inbounds %struct.doublecomplex, ptr %8867, i32 0, i32 1
  %8869 = load double, ptr %8868, align 8, !tbaa !14
  %8870 = fmul double %8863, %8869
  %8871 = fneg double %8870
  %8872 = call double @llvm.fmuladd.f64(double %8855, double %8861, double %8871)
  %8873 = getelementptr inbounds %struct.doublecomplex, ptr %44, i32 0, i32 0
  store double %8872, ptr %8873, align 8, !tbaa !11
  %8874 = getelementptr inbounds %struct.doublecomplex, ptr %64, i32 0, i32 0
  %8875 = load double, ptr %8874, align 8, !tbaa !11
  %8876 = load ptr, ptr %14, align 8, !tbaa !5
  %8877 = load i32, ptr %25, align 4, !tbaa !9
  %8878 = sext i32 %8877 to i64
  %8879 = getelementptr inbounds %struct.doublecomplex, ptr %8876, i64 %8878
  %8880 = getelementptr inbounds %struct.doublecomplex, ptr %8879, i32 0, i32 1
  %8881 = load double, ptr %8880, align 8, !tbaa !14
  %8882 = getelementptr inbounds %struct.doublecomplex, ptr %64, i32 0, i32 1
  %8883 = load double, ptr %8882, align 8, !tbaa !14
  %8884 = load ptr, ptr %14, align 8, !tbaa !5
  %8885 = load i32, ptr %25, align 4, !tbaa !9
  %8886 = sext i32 %8885 to i64
  %8887 = getelementptr inbounds %struct.doublecomplex, ptr %8884, i64 %8886
  %8888 = getelementptr inbounds %struct.doublecomplex, ptr %8887, i32 0, i32 0
  %8889 = load double, ptr %8888, align 8, !tbaa !11
  %8890 = fmul double %8883, %8889
  %8891 = call double @llvm.fmuladd.f64(double %8875, double %8881, double %8890)
  %8892 = getelementptr inbounds %struct.doublecomplex, ptr %44, i32 0, i32 1
  store double %8891, ptr %8892, align 8, !tbaa !14
  %8893 = getelementptr inbounds %struct.doublecomplex, ptr %35, i32 0, i32 0
  %8894 = load double, ptr %8893, align 8, !tbaa !11
  %8895 = getelementptr inbounds %struct.doublecomplex, ptr %44, i32 0, i32 0
  %8896 = load double, ptr %8895, align 8, !tbaa !11
  %8897 = fadd double %8894, %8896
  %8898 = getelementptr inbounds %struct.doublecomplex, ptr %34, i32 0, i32 0
  store double %8897, ptr %8898, align 8, !tbaa !11
  %8899 = getelementptr inbounds %struct.doublecomplex, ptr %35, i32 0, i32 1
  %8900 = load double, ptr %8899, align 8, !tbaa !14
  %8901 = getelementptr inbounds %struct.doublecomplex, ptr %44, i32 0, i32 1
  %8902 = load double, ptr %8901, align 8, !tbaa !14
  %8903 = fadd double %8900, %8902
  %8904 = getelementptr inbounds %struct.doublecomplex, ptr %34, i32 0, i32 1
  store double %8903, ptr %8904, align 8, !tbaa !14
  %8905 = load i32, ptr %49, align 4, !tbaa !9
  %8906 = load i32, ptr %17, align 4, !tbaa !9
  %8907 = mul nsw i32 %8905, %8906
  %8908 = add nsw i32 %8907, 7
  store i32 %8908, ptr %26, align 4, !tbaa !9
  %8909 = getelementptr inbounds %struct.doublecomplex, ptr %65, i32 0, i32 0
  %8910 = load double, ptr %8909, align 8, !tbaa !11
  %8911 = load ptr, ptr %14, align 8, !tbaa !5
  %8912 = load i32, ptr %26, align 4, !tbaa !9
  %8913 = sext i32 %8912 to i64
  %8914 = getelementptr inbounds %struct.doublecomplex, ptr %8911, i64 %8913
  %8915 = getelementptr inbounds %struct.doublecomplex, ptr %8914, i32 0, i32 0
  %8916 = load double, ptr %8915, align 8, !tbaa !11
  %8917 = getelementptr inbounds %struct.doublecomplex, ptr %65, i32 0, i32 1
  %8918 = load double, ptr %8917, align 8, !tbaa !14
  %8919 = load ptr, ptr %14, align 8, !tbaa !5
  %8920 = load i32, ptr %26, align 4, !tbaa !9
  %8921 = sext i32 %8920 to i64
  %8922 = getelementptr inbounds %struct.doublecomplex, ptr %8919, i64 %8921
  %8923 = getelementptr inbounds %struct.doublecomplex, ptr %8922, i32 0, i32 1
  %8924 = load double, ptr %8923, align 8, !tbaa !14
  %8925 = fmul double %8918, %8924
  %8926 = fneg double %8925
  %8927 = call double @llvm.fmuladd.f64(double %8910, double %8916, double %8926)
  %8928 = getelementptr inbounds %struct.doublecomplex, ptr %45, i32 0, i32 0
  store double %8927, ptr %8928, align 8, !tbaa !11
  %8929 = getelementptr inbounds %struct.doublecomplex, ptr %65, i32 0, i32 0
  %8930 = load double, ptr %8929, align 8, !tbaa !11
  %8931 = load ptr, ptr %14, align 8, !tbaa !5
  %8932 = load i32, ptr %26, align 4, !tbaa !9
  %8933 = sext i32 %8932 to i64
  %8934 = getelementptr inbounds %struct.doublecomplex, ptr %8931, i64 %8933
  %8935 = getelementptr inbounds %struct.doublecomplex, ptr %8934, i32 0, i32 1
  %8936 = load double, ptr %8935, align 8, !tbaa !14
  %8937 = getelementptr inbounds %struct.doublecomplex, ptr %65, i32 0, i32 1
  %8938 = load double, ptr %8937, align 8, !tbaa !14
  %8939 = load ptr, ptr %14, align 8, !tbaa !5
  %8940 = load i32, ptr %26, align 4, !tbaa !9
  %8941 = sext i32 %8940 to i64
  %8942 = getelementptr inbounds %struct.doublecomplex, ptr %8939, i64 %8941
  %8943 = getelementptr inbounds %struct.doublecomplex, ptr %8942, i32 0, i32 0
  %8944 = load double, ptr %8943, align 8, !tbaa !11
  %8945 = fmul double %8938, %8944
  %8946 = call double @llvm.fmuladd.f64(double %8930, double %8936, double %8945)
  %8947 = getelementptr inbounds %struct.doublecomplex, ptr %45, i32 0, i32 1
  store double %8946, ptr %8947, align 8, !tbaa !14
  %8948 = getelementptr inbounds %struct.doublecomplex, ptr %34, i32 0, i32 0
  %8949 = load double, ptr %8948, align 8, !tbaa !11
  %8950 = getelementptr inbounds %struct.doublecomplex, ptr %45, i32 0, i32 0
  %8951 = load double, ptr %8950, align 8, !tbaa !11
  %8952 = fadd double %8949, %8951
  %8953 = getelementptr inbounds %struct.doublecomplex, ptr %33, i32 0, i32 0
  store double %8952, ptr %8953, align 8, !tbaa !11
  %8954 = getelementptr inbounds %struct.doublecomplex, ptr %34, i32 0, i32 1
  %8955 = load double, ptr %8954, align 8, !tbaa !14
  %8956 = getelementptr inbounds %struct.doublecomplex, ptr %45, i32 0, i32 1
  %8957 = load double, ptr %8956, align 8, !tbaa !14
  %8958 = fadd double %8955, %8957
  %8959 = getelementptr inbounds %struct.doublecomplex, ptr %33, i32 0, i32 1
  store double %8958, ptr %8959, align 8, !tbaa !14
  %8960 = load i32, ptr %49, align 4, !tbaa !9
  %8961 = load i32, ptr %17, align 4, !tbaa !9
  %8962 = mul nsw i32 %8960, %8961
  %8963 = add nsw i32 %8962, 8
  store i32 %8963, ptr %27, align 4, !tbaa !9
  %8964 = getelementptr inbounds %struct.doublecomplex, ptr %66, i32 0, i32 0
  %8965 = load double, ptr %8964, align 8, !tbaa !11
  %8966 = load ptr, ptr %14, align 8, !tbaa !5
  %8967 = load i32, ptr %27, align 4, !tbaa !9
  %8968 = sext i32 %8967 to i64
  %8969 = getelementptr inbounds %struct.doublecomplex, ptr %8966, i64 %8968
  %8970 = getelementptr inbounds %struct.doublecomplex, ptr %8969, i32 0, i32 0
  %8971 = load double, ptr %8970, align 8, !tbaa !11
  %8972 = getelementptr inbounds %struct.doublecomplex, ptr %66, i32 0, i32 1
  %8973 = load double, ptr %8972, align 8, !tbaa !14
  %8974 = load ptr, ptr %14, align 8, !tbaa !5
  %8975 = load i32, ptr %27, align 4, !tbaa !9
  %8976 = sext i32 %8975 to i64
  %8977 = getelementptr inbounds %struct.doublecomplex, ptr %8974, i64 %8976
  %8978 = getelementptr inbounds %struct.doublecomplex, ptr %8977, i32 0, i32 1
  %8979 = load double, ptr %8978, align 8, !tbaa !14
  %8980 = fmul double %8973, %8979
  %8981 = fneg double %8980
  %8982 = call double @llvm.fmuladd.f64(double %8965, double %8971, double %8981)
  %8983 = getelementptr inbounds %struct.doublecomplex, ptr %46, i32 0, i32 0
  store double %8982, ptr %8983, align 8, !tbaa !11
  %8984 = getelementptr inbounds %struct.doublecomplex, ptr %66, i32 0, i32 0
  %8985 = load double, ptr %8984, align 8, !tbaa !11
  %8986 = load ptr, ptr %14, align 8, !tbaa !5
  %8987 = load i32, ptr %27, align 4, !tbaa !9
  %8988 = sext i32 %8987 to i64
  %8989 = getelementptr inbounds %struct.doublecomplex, ptr %8986, i64 %8988
  %8990 = getelementptr inbounds %struct.doublecomplex, ptr %8989, i32 0, i32 1
  %8991 = load double, ptr %8990, align 8, !tbaa !14
  %8992 = getelementptr inbounds %struct.doublecomplex, ptr %66, i32 0, i32 1
  %8993 = load double, ptr %8992, align 8, !tbaa !14
  %8994 = load ptr, ptr %14, align 8, !tbaa !5
  %8995 = load i32, ptr %27, align 4, !tbaa !9
  %8996 = sext i32 %8995 to i64
  %8997 = getelementptr inbounds %struct.doublecomplex, ptr %8994, i64 %8996
  %8998 = getelementptr inbounds %struct.doublecomplex, ptr %8997, i32 0, i32 0
  %8999 = load double, ptr %8998, align 8, !tbaa !11
  %9000 = fmul double %8993, %8999
  %9001 = call double @llvm.fmuladd.f64(double %8985, double %8991, double %9000)
  %9002 = getelementptr inbounds %struct.doublecomplex, ptr %46, i32 0, i32 1
  store double %9001, ptr %9002, align 8, !tbaa !14
  %9003 = getelementptr inbounds %struct.doublecomplex, ptr %33, i32 0, i32 0
  %9004 = load double, ptr %9003, align 8, !tbaa !11
  %9005 = getelementptr inbounds %struct.doublecomplex, ptr %46, i32 0, i32 0
  %9006 = load double, ptr %9005, align 8, !tbaa !11
  %9007 = fadd double %9004, %9006
  %9008 = getelementptr inbounds %struct.doublecomplex, ptr %32, i32 0, i32 0
  store double %9007, ptr %9008, align 8, !tbaa !11
  %9009 = getelementptr inbounds %struct.doublecomplex, ptr %33, i32 0, i32 1
  %9010 = load double, ptr %9009, align 8, !tbaa !14
  %9011 = getelementptr inbounds %struct.doublecomplex, ptr %46, i32 0, i32 1
  %9012 = load double, ptr %9011, align 8, !tbaa !14
  %9013 = fadd double %9010, %9012
  %9014 = getelementptr inbounds %struct.doublecomplex, ptr %32, i32 0, i32 1
  store double %9013, ptr %9014, align 8, !tbaa !14
  %9015 = load i32, ptr %49, align 4, !tbaa !9
  %9016 = load i32, ptr %17, align 4, !tbaa !9
  %9017 = mul nsw i32 %9015, %9016
  %9018 = add nsw i32 %9017, 9
  store i32 %9018, ptr %28, align 4, !tbaa !9
  %9019 = getelementptr inbounds %struct.doublecomplex, ptr %67, i32 0, i32 0
  %9020 = load double, ptr %9019, align 8, !tbaa !11
  %9021 = load ptr, ptr %14, align 8, !tbaa !5
  %9022 = load i32, ptr %28, align 4, !tbaa !9
  %9023 = sext i32 %9022 to i64
  %9024 = getelementptr inbounds %struct.doublecomplex, ptr %9021, i64 %9023
  %9025 = getelementptr inbounds %struct.doublecomplex, ptr %9024, i32 0, i32 0
  %9026 = load double, ptr %9025, align 8, !tbaa !11
  %9027 = getelementptr inbounds %struct.doublecomplex, ptr %67, i32 0, i32 1
  %9028 = load double, ptr %9027, align 8, !tbaa !14
  %9029 = load ptr, ptr %14, align 8, !tbaa !5
  %9030 = load i32, ptr %28, align 4, !tbaa !9
  %9031 = sext i32 %9030 to i64
  %9032 = getelementptr inbounds %struct.doublecomplex, ptr %9029, i64 %9031
  %9033 = getelementptr inbounds %struct.doublecomplex, ptr %9032, i32 0, i32 1
  %9034 = load double, ptr %9033, align 8, !tbaa !14
  %9035 = fmul double %9028, %9034
  %9036 = fneg double %9035
  %9037 = call double @llvm.fmuladd.f64(double %9020, double %9026, double %9036)
  %9038 = getelementptr inbounds %struct.doublecomplex, ptr %47, i32 0, i32 0
  store double %9037, ptr %9038, align 8, !tbaa !11
  %9039 = getelementptr inbounds %struct.doublecomplex, ptr %67, i32 0, i32 0
  %9040 = load double, ptr %9039, align 8, !tbaa !11
  %9041 = load ptr, ptr %14, align 8, !tbaa !5
  %9042 = load i32, ptr %28, align 4, !tbaa !9
  %9043 = sext i32 %9042 to i64
  %9044 = getelementptr inbounds %struct.doublecomplex, ptr %9041, i64 %9043
  %9045 = getelementptr inbounds %struct.doublecomplex, ptr %9044, i32 0, i32 1
  %9046 = load double, ptr %9045, align 8, !tbaa !14
  %9047 = getelementptr inbounds %struct.doublecomplex, ptr %67, i32 0, i32 1
  %9048 = load double, ptr %9047, align 8, !tbaa !14
  %9049 = load ptr, ptr %14, align 8, !tbaa !5
  %9050 = load i32, ptr %28, align 4, !tbaa !9
  %9051 = sext i32 %9050 to i64
  %9052 = getelementptr inbounds %struct.doublecomplex, ptr %9049, i64 %9051
  %9053 = getelementptr inbounds %struct.doublecomplex, ptr %9052, i32 0, i32 0
  %9054 = load double, ptr %9053, align 8, !tbaa !11
  %9055 = fmul double %9048, %9054
  %9056 = call double @llvm.fmuladd.f64(double %9040, double %9046, double %9055)
  %9057 = getelementptr inbounds %struct.doublecomplex, ptr %47, i32 0, i32 1
  store double %9056, ptr %9057, align 8, !tbaa !14
  %9058 = getelementptr inbounds %struct.doublecomplex, ptr %32, i32 0, i32 0
  %9059 = load double, ptr %9058, align 8, !tbaa !11
  %9060 = getelementptr inbounds %struct.doublecomplex, ptr %47, i32 0, i32 0
  %9061 = load double, ptr %9060, align 8, !tbaa !11
  %9062 = fadd double %9059, %9061
  %9063 = getelementptr inbounds %struct.doublecomplex, ptr %31, i32 0, i32 0
  store double %9062, ptr %9063, align 8, !tbaa !11
  %9064 = getelementptr inbounds %struct.doublecomplex, ptr %32, i32 0, i32 1
  %9065 = load double, ptr %9064, align 8, !tbaa !14
  %9066 = getelementptr inbounds %struct.doublecomplex, ptr %47, i32 0, i32 1
  %9067 = load double, ptr %9066, align 8, !tbaa !14
  %9068 = fadd double %9065, %9067
  %9069 = getelementptr inbounds %struct.doublecomplex, ptr %31, i32 0, i32 1
  store double %9068, ptr %9069, align 8, !tbaa !14
  %9070 = load i32, ptr %49, align 4, !tbaa !9
  %9071 = load i32, ptr %17, align 4, !tbaa !9
  %9072 = mul nsw i32 %9070, %9071
  %9073 = add nsw i32 %9072, 10
  store i32 %9073, ptr %29, align 4, !tbaa !9
  %9074 = getelementptr inbounds %struct.doublecomplex, ptr %69, i32 0, i32 0
  %9075 = load double, ptr %9074, align 8, !tbaa !11
  %9076 = load ptr, ptr %14, align 8, !tbaa !5
  %9077 = load i32, ptr %29, align 4, !tbaa !9
  %9078 = sext i32 %9077 to i64
  %9079 = getelementptr inbounds %struct.doublecomplex, ptr %9076, i64 %9078
  %9080 = getelementptr inbounds %struct.doublecomplex, ptr %9079, i32 0, i32 0
  %9081 = load double, ptr %9080, align 8, !tbaa !11
  %9082 = getelementptr inbounds %struct.doublecomplex, ptr %69, i32 0, i32 1
  %9083 = load double, ptr %9082, align 8, !tbaa !14
  %9084 = load ptr, ptr %14, align 8, !tbaa !5
  %9085 = load i32, ptr %29, align 4, !tbaa !9
  %9086 = sext i32 %9085 to i64
  %9087 = getelementptr inbounds %struct.doublecomplex, ptr %9084, i64 %9086
  %9088 = getelementptr inbounds %struct.doublecomplex, ptr %9087, i32 0, i32 1
  %9089 = load double, ptr %9088, align 8, !tbaa !14
  %9090 = fmul double %9083, %9089
  %9091 = fneg double %9090
  %9092 = call double @llvm.fmuladd.f64(double %9075, double %9081, double %9091)
  %9093 = getelementptr inbounds %struct.doublecomplex, ptr %48, i32 0, i32 0
  store double %9092, ptr %9093, align 8, !tbaa !11
  %9094 = getelementptr inbounds %struct.doublecomplex, ptr %69, i32 0, i32 0
  %9095 = load double, ptr %9094, align 8, !tbaa !11
  %9096 = load ptr, ptr %14, align 8, !tbaa !5
  %9097 = load i32, ptr %29, align 4, !tbaa !9
  %9098 = sext i32 %9097 to i64
  %9099 = getelementptr inbounds %struct.doublecomplex, ptr %9096, i64 %9098
  %9100 = getelementptr inbounds %struct.doublecomplex, ptr %9099, i32 0, i32 1
  %9101 = load double, ptr %9100, align 8, !tbaa !14
  %9102 = getelementptr inbounds %struct.doublecomplex, ptr %69, i32 0, i32 1
  %9103 = load double, ptr %9102, align 8, !tbaa !14
  %9104 = load ptr, ptr %14, align 8, !tbaa !5
  %9105 = load i32, ptr %29, align 4, !tbaa !9
  %9106 = sext i32 %9105 to i64
  %9107 = getelementptr inbounds %struct.doublecomplex, ptr %9104, i64 %9106
  %9108 = getelementptr inbounds %struct.doublecomplex, ptr %9107, i32 0, i32 0
  %9109 = load double, ptr %9108, align 8, !tbaa !11
  %9110 = fmul double %9103, %9109
  %9111 = call double @llvm.fmuladd.f64(double %9095, double %9101, double %9110)
  %9112 = getelementptr inbounds %struct.doublecomplex, ptr %48, i32 0, i32 1
  store double %9111, ptr %9112, align 8, !tbaa !14
  %9113 = getelementptr inbounds %struct.doublecomplex, ptr %31, i32 0, i32 0
  %9114 = load double, ptr %9113, align 8, !tbaa !11
  %9115 = getelementptr inbounds %struct.doublecomplex, ptr %48, i32 0, i32 0
  %9116 = load double, ptr %9115, align 8, !tbaa !11
  %9117 = fadd double %9114, %9116
  %9118 = getelementptr inbounds %struct.doublecomplex, ptr %30, i32 0, i32 0
  store double %9117, ptr %9118, align 8, !tbaa !11
  %9119 = getelementptr inbounds %struct.doublecomplex, ptr %31, i32 0, i32 1
  %9120 = load double, ptr %9119, align 8, !tbaa !14
  %9121 = getelementptr inbounds %struct.doublecomplex, ptr %48, i32 0, i32 1
  %9122 = load double, ptr %9121, align 8, !tbaa !14
  %9123 = fadd double %9120, %9122
  %9124 = getelementptr inbounds %struct.doublecomplex, ptr %30, i32 0, i32 1
  store double %9123, ptr %9124, align 8, !tbaa !14
  %9125 = getelementptr inbounds %struct.doublecomplex, ptr %30, i32 0, i32 0
  %9126 = load double, ptr %9125, align 8, !tbaa !11
  %9127 = getelementptr inbounds %struct.doublecomplex, ptr %70, i32 0, i32 0
  store double %9126, ptr %9127, align 8, !tbaa !11
  %9128 = getelementptr inbounds %struct.doublecomplex, ptr %30, i32 0, i32 1
  %9129 = load double, ptr %9128, align 8, !tbaa !14
  %9130 = getelementptr inbounds %struct.doublecomplex, ptr %70, i32 0, i32 1
  store double %9129, ptr %9130, align 8, !tbaa !14
  %9131 = load i32, ptr %49, align 4, !tbaa !9
  %9132 = load i32, ptr %17, align 4, !tbaa !9
  %9133 = mul nsw i32 %9131, %9132
  %9134 = add nsw i32 %9133, 1
  store i32 %9134, ptr %20, align 4, !tbaa !9
  %9135 = load i32, ptr %49, align 4, !tbaa !9
  %9136 = load i32, ptr %17, align 4, !tbaa !9
  %9137 = mul nsw i32 %9135, %9136
  %9138 = add nsw i32 %9137, 1
  store i32 %9138, ptr %21, align 4, !tbaa !9
  %9139 = getelementptr inbounds %struct.doublecomplex, ptr %70, i32 0, i32 0
  %9140 = load double, ptr %9139, align 8, !tbaa !11
  %9141 = getelementptr inbounds %struct.doublecomplex, ptr %50, i32 0, i32 0
  %9142 = load double, ptr %9141, align 8, !tbaa !11
  %9143 = getelementptr inbounds %struct.doublecomplex, ptr %70, i32 0, i32 1
  %9144 = load double, ptr %9143, align 8, !tbaa !14
  %9145 = getelementptr inbounds %struct.doublecomplex, ptr %50, i32 0, i32 1
  %9146 = load double, ptr %9145, align 8, !tbaa !14
  %9147 = fmul double %9144, %9146
  %9148 = fneg double %9147
  %9149 = call double @llvm.fmuladd.f64(double %9140, double %9142, double %9148)
  %9150 = getelementptr inbounds %struct.doublecomplex, ptr %31, i32 0, i32 0
  store double %9149, ptr %9150, align 8, !tbaa !11
  %9151 = getelementptr inbounds %struct.doublecomplex, ptr %70, i32 0, i32 0
  %9152 = load double, ptr %9151, align 8, !tbaa !11
  %9153 = getelementptr inbounds %struct.doublecomplex, ptr %50, i32 0, i32 1
  %9154 = load double, ptr %9153, align 8, !tbaa !14
  %9155 = getelementptr inbounds %struct.doublecomplex, ptr %70, i32 0, i32 1
  %9156 = load double, ptr %9155, align 8, !tbaa !14
  %9157 = getelementptr inbounds %struct.doublecomplex, ptr %50, i32 0, i32 0
  %9158 = load double, ptr %9157, align 8, !tbaa !11
  %9159 = fmul double %9156, %9158
  %9160 = call double @llvm.fmuladd.f64(double %9152, double %9154, double %9159)
  %9161 = getelementptr inbounds %struct.doublecomplex, ptr %31, i32 0, i32 1
  store double %9160, ptr %9161, align 8, !tbaa !14
  %9162 = load ptr, ptr %14, align 8, !tbaa !5
  %9163 = load i32, ptr %21, align 4, !tbaa !9
  %9164 = sext i32 %9163 to i64
  %9165 = getelementptr inbounds %struct.doublecomplex, ptr %9162, i64 %9164
  %9166 = getelementptr inbounds %struct.doublecomplex, ptr %9165, i32 0, i32 0
  %9167 = load double, ptr %9166, align 8, !tbaa !11
  %9168 = getelementptr inbounds %struct.doublecomplex, ptr %31, i32 0, i32 0
  %9169 = load double, ptr %9168, align 8, !tbaa !11
  %9170 = fsub double %9167, %9169
  %9171 = getelementptr inbounds %struct.doublecomplex, ptr %30, i32 0, i32 0
  store double %9170, ptr %9171, align 8, !tbaa !11
  %9172 = load ptr, ptr %14, align 8, !tbaa !5
  %9173 = load i32, ptr %21, align 4, !tbaa !9
  %9174 = sext i32 %9173 to i64
  %9175 = getelementptr inbounds %struct.doublecomplex, ptr %9172, i64 %9174
  %9176 = getelementptr inbounds %struct.doublecomplex, ptr %9175, i32 0, i32 1
  %9177 = load double, ptr %9176, align 8, !tbaa !14
  %9178 = getelementptr inbounds %struct.doublecomplex, ptr %31, i32 0, i32 1
  %9179 = load double, ptr %9178, align 8, !tbaa !14
  %9180 = fsub double %9177, %9179
  %9181 = getelementptr inbounds %struct.doublecomplex, ptr %30, i32 0, i32 1
  store double %9180, ptr %9181, align 8, !tbaa !14
  %9182 = getelementptr inbounds %struct.doublecomplex, ptr %30, i32 0, i32 0
  %9183 = load double, ptr %9182, align 8, !tbaa !11
  %9184 = load ptr, ptr %14, align 8, !tbaa !5
  %9185 = load i32, ptr %20, align 4, !tbaa !9
  %9186 = sext i32 %9185 to i64
  %9187 = getelementptr inbounds %struct.doublecomplex, ptr %9184, i64 %9186
  %9188 = getelementptr inbounds %struct.doublecomplex, ptr %9187, i32 0, i32 0
  store double %9183, ptr %9188, align 8, !tbaa !11
  %9189 = getelementptr inbounds %struct.doublecomplex, ptr %30, i32 0, i32 1
  %9190 = load double, ptr %9189, align 8, !tbaa !14
  %9191 = load ptr, ptr %14, align 8, !tbaa !5
  %9192 = load i32, ptr %20, align 4, !tbaa !9
  %9193 = sext i32 %9192 to i64
  %9194 = getelementptr inbounds %struct.doublecomplex, ptr %9191, i64 %9193
  %9195 = getelementptr inbounds %struct.doublecomplex, ptr %9194, i32 0, i32 1
  store double %9190, ptr %9195, align 8, !tbaa !14
  %9196 = load i32, ptr %49, align 4, !tbaa !9
  %9197 = load i32, ptr %17, align 4, !tbaa !9
  %9198 = mul nsw i32 %9196, %9197
  %9199 = add nsw i32 %9198, 2
  store i32 %9199, ptr %20, align 4, !tbaa !9
  %9200 = load i32, ptr %49, align 4, !tbaa !9
  %9201 = load i32, ptr %17, align 4, !tbaa !9
  %9202 = mul nsw i32 %9200, %9201
  %9203 = add nsw i32 %9202, 2
  store i32 %9203, ptr %21, align 4, !tbaa !9
  %9204 = getelementptr inbounds %struct.doublecomplex, ptr %70, i32 0, i32 0
  %9205 = load double, ptr %9204, align 8, !tbaa !11
  %9206 = getelementptr inbounds %struct.doublecomplex, ptr %51, i32 0, i32 0
  %9207 = load double, ptr %9206, align 8, !tbaa !11
  %9208 = getelementptr inbounds %struct.doublecomplex, ptr %70, i32 0, i32 1
  %9209 = load double, ptr %9208, align 8, !tbaa !14
  %9210 = getelementptr inbounds %struct.doublecomplex, ptr %51, i32 0, i32 1
  %9211 = load double, ptr %9210, align 8, !tbaa !14
  %9212 = fmul double %9209, %9211
  %9213 = fneg double %9212
  %9214 = call double @llvm.fmuladd.f64(double %9205, double %9207, double %9213)
  %9215 = getelementptr inbounds %struct.doublecomplex, ptr %31, i32 0, i32 0
  store double %9214, ptr %9215, align 8, !tbaa !11
  %9216 = getelementptr inbounds %struct.doublecomplex, ptr %70, i32 0, i32 0
  %9217 = load double, ptr %9216, align 8, !tbaa !11
  %9218 = getelementptr inbounds %struct.doublecomplex, ptr %51, i32 0, i32 1
  %9219 = load double, ptr %9218, align 8, !tbaa !14
  %9220 = getelementptr inbounds %struct.doublecomplex, ptr %70, i32 0, i32 1
  %9221 = load double, ptr %9220, align 8, !tbaa !14
  %9222 = getelementptr inbounds %struct.doublecomplex, ptr %51, i32 0, i32 0
  %9223 = load double, ptr %9222, align 8, !tbaa !11
  %9224 = fmul double %9221, %9223
  %9225 = call double @llvm.fmuladd.f64(double %9217, double %9219, double %9224)
  %9226 = getelementptr inbounds %struct.doublecomplex, ptr %31, i32 0, i32 1
  store double %9225, ptr %9226, align 8, !tbaa !14
  %9227 = load ptr, ptr %14, align 8, !tbaa !5
  %9228 = load i32, ptr %21, align 4, !tbaa !9
  %9229 = sext i32 %9228 to i64
  %9230 = getelementptr inbounds %struct.doublecomplex, ptr %9227, i64 %9229
  %9231 = getelementptr inbounds %struct.doublecomplex, ptr %9230, i32 0, i32 0
  %9232 = load double, ptr %9231, align 8, !tbaa !11
  %9233 = getelementptr inbounds %struct.doublecomplex, ptr %31, i32 0, i32 0
  %9234 = load double, ptr %9233, align 8, !tbaa !11
  %9235 = fsub double %9232, %9234
  %9236 = getelementptr inbounds %struct.doublecomplex, ptr %30, i32 0, i32 0
  store double %9235, ptr %9236, align 8, !tbaa !11
  %9237 = load ptr, ptr %14, align 8, !tbaa !5
  %9238 = load i32, ptr %21, align 4, !tbaa !9
  %9239 = sext i32 %9238 to i64
  %9240 = getelementptr inbounds %struct.doublecomplex, ptr %9237, i64 %9239
  %9241 = getelementptr inbounds %struct.doublecomplex, ptr %9240, i32 0, i32 1
  %9242 = load double, ptr %9241, align 8, !tbaa !14
  %9243 = getelementptr inbounds %struct.doublecomplex, ptr %31, i32 0, i32 1
  %9244 = load double, ptr %9243, align 8, !tbaa !14
  %9245 = fsub double %9242, %9244
  %9246 = getelementptr inbounds %struct.doublecomplex, ptr %30, i32 0, i32 1
  store double %9245, ptr %9246, align 8, !tbaa !14
  %9247 = getelementptr inbounds %struct.doublecomplex, ptr %30, i32 0, i32 0
  %9248 = load double, ptr %9247, align 8, !tbaa !11
  %9249 = load ptr, ptr %14, align 8, !tbaa !5
  %9250 = load i32, ptr %20, align 4, !tbaa !9
  %9251 = sext i32 %9250 to i64
  %9252 = getelementptr inbounds %struct.doublecomplex, ptr %9249, i64 %9251
  %9253 = getelementptr inbounds %struct.doublecomplex, ptr %9252, i32 0, i32 0
  store double %9248, ptr %9253, align 8, !tbaa !11
  %9254 = getelementptr inbounds %struct.doublecomplex, ptr %30, i32 0, i32 1
  %9255 = load double, ptr %9254, align 8, !tbaa !14
  %9256 = load ptr, ptr %14, align 8, !tbaa !5
  %9257 = load i32, ptr %20, align 4, !tbaa !9
  %9258 = sext i32 %9257 to i64
  %9259 = getelementptr inbounds %struct.doublecomplex, ptr %9256, i64 %9258
  %9260 = getelementptr inbounds %struct.doublecomplex, ptr %9259, i32 0, i32 1
  store double %9255, ptr %9260, align 8, !tbaa !14
  %9261 = load i32, ptr %49, align 4, !tbaa !9
  %9262 = load i32, ptr %17, align 4, !tbaa !9
  %9263 = mul nsw i32 %9261, %9262
  %9264 = add nsw i32 %9263, 3
  store i32 %9264, ptr %20, align 4, !tbaa !9
  %9265 = load i32, ptr %49, align 4, !tbaa !9
  %9266 = load i32, ptr %17, align 4, !tbaa !9
  %9267 = mul nsw i32 %9265, %9266
  %9268 = add nsw i32 %9267, 3
  store i32 %9268, ptr %21, align 4, !tbaa !9
  %9269 = getelementptr inbounds %struct.doublecomplex, ptr %70, i32 0, i32 0
  %9270 = load double, ptr %9269, align 8, !tbaa !11
  %9271 = getelementptr inbounds %struct.doublecomplex, ptr %52, i32 0, i32 0
  %9272 = load double, ptr %9271, align 8, !tbaa !11
  %9273 = getelementptr inbounds %struct.doublecomplex, ptr %70, i32 0, i32 1
  %9274 = load double, ptr %9273, align 8, !tbaa !14
  %9275 = getelementptr inbounds %struct.doublecomplex, ptr %52, i32 0, i32 1
  %9276 = load double, ptr %9275, align 8, !tbaa !14
  %9277 = fmul double %9274, %9276
  %9278 = fneg double %9277
  %9279 = call double @llvm.fmuladd.f64(double %9270, double %9272, double %9278)
  %9280 = getelementptr inbounds %struct.doublecomplex, ptr %31, i32 0, i32 0
  store double %9279, ptr %9280, align 8, !tbaa !11
  %9281 = getelementptr inbounds %struct.doublecomplex, ptr %70, i32 0, i32 0
  %9282 = load double, ptr %9281, align 8, !tbaa !11
  %9283 = getelementptr inbounds %struct.doublecomplex, ptr %52, i32 0, i32 1
  %9284 = load double, ptr %9283, align 8, !tbaa !14
  %9285 = getelementptr inbounds %struct.doublecomplex, ptr %70, i32 0, i32 1
  %9286 = load double, ptr %9285, align 8, !tbaa !14
  %9287 = getelementptr inbounds %struct.doublecomplex, ptr %52, i32 0, i32 0
  %9288 = load double, ptr %9287, align 8, !tbaa !11
  %9289 = fmul double %9286, %9288
  %9290 = call double @llvm.fmuladd.f64(double %9282, double %9284, double %9289)
  %9291 = getelementptr inbounds %struct.doublecomplex, ptr %31, i32 0, i32 1
  store double %9290, ptr %9291, align 8, !tbaa !14
  %9292 = load ptr, ptr %14, align 8, !tbaa !5
  %9293 = load i32, ptr %21, align 4, !tbaa !9
  %9294 = sext i32 %9293 to i64
  %9295 = getelementptr inbounds %struct.doublecomplex, ptr %9292, i64 %9294
  %9296 = getelementptr inbounds %struct.doublecomplex, ptr %9295, i32 0, i32 0
  %9297 = load double, ptr %9296, align 8, !tbaa !11
  %9298 = getelementptr inbounds %struct.doublecomplex, ptr %31, i32 0, i32 0
  %9299 = load double, ptr %9298, align 8, !tbaa !11
  %9300 = fsub double %9297, %9299
  %9301 = getelementptr inbounds %struct.doublecomplex, ptr %30, i32 0, i32 0
  store double %9300, ptr %9301, align 8, !tbaa !11
  %9302 = load ptr, ptr %14, align 8, !tbaa !5
  %9303 = load i32, ptr %21, align 4, !tbaa !9
  %9304 = sext i32 %9303 to i64
  %9305 = getelementptr inbounds %struct.doublecomplex, ptr %9302, i64 %9304
  %9306 = getelementptr inbounds %struct.doublecomplex, ptr %9305, i32 0, i32 1
  %9307 = load double, ptr %9306, align 8, !tbaa !14
  %9308 = getelementptr inbounds %struct.doublecomplex, ptr %31, i32 0, i32 1
  %9309 = load double, ptr %9308, align 8, !tbaa !14
  %9310 = fsub double %9307, %9309
  %9311 = getelementptr inbounds %struct.doublecomplex, ptr %30, i32 0, i32 1
  store double %9310, ptr %9311, align 8, !tbaa !14
  %9312 = getelementptr inbounds %struct.doublecomplex, ptr %30, i32 0, i32 0
  %9313 = load double, ptr %9312, align 8, !tbaa !11
  %9314 = load ptr, ptr %14, align 8, !tbaa !5
  %9315 = load i32, ptr %20, align 4, !tbaa !9
  %9316 = sext i32 %9315 to i64
  %9317 = getelementptr inbounds %struct.doublecomplex, ptr %9314, i64 %9316
  %9318 = getelementptr inbounds %struct.doublecomplex, ptr %9317, i32 0, i32 0
  store double %9313, ptr %9318, align 8, !tbaa !11
  %9319 = getelementptr inbounds %struct.doublecomplex, ptr %30, i32 0, i32 1
  %9320 = load double, ptr %9319, align 8, !tbaa !14
  %9321 = load ptr, ptr %14, align 8, !tbaa !5
  %9322 = load i32, ptr %20, align 4, !tbaa !9
  %9323 = sext i32 %9322 to i64
  %9324 = getelementptr inbounds %struct.doublecomplex, ptr %9321, i64 %9323
  %9325 = getelementptr inbounds %struct.doublecomplex, ptr %9324, i32 0, i32 1
  store double %9320, ptr %9325, align 8, !tbaa !14
  %9326 = load i32, ptr %49, align 4, !tbaa !9
  %9327 = load i32, ptr %17, align 4, !tbaa !9
  %9328 = mul nsw i32 %9326, %9327
  %9329 = add nsw i32 %9328, 4
  store i32 %9329, ptr %20, align 4, !tbaa !9
  %9330 = load i32, ptr %49, align 4, !tbaa !9
  %9331 = load i32, ptr %17, align 4, !tbaa !9
  %9332 = mul nsw i32 %9330, %9331
  %9333 = add nsw i32 %9332, 4
  store i32 %9333, ptr %21, align 4, !tbaa !9
  %9334 = getelementptr inbounds %struct.doublecomplex, ptr %70, i32 0, i32 0
  %9335 = load double, ptr %9334, align 8, !tbaa !11
  %9336 = getelementptr inbounds %struct.doublecomplex, ptr %53, i32 0, i32 0
  %9337 = load double, ptr %9336, align 8, !tbaa !11
  %9338 = getelementptr inbounds %struct.doublecomplex, ptr %70, i32 0, i32 1
  %9339 = load double, ptr %9338, align 8, !tbaa !14
  %9340 = getelementptr inbounds %struct.doublecomplex, ptr %53, i32 0, i32 1
  %9341 = load double, ptr %9340, align 8, !tbaa !14
  %9342 = fmul double %9339, %9341
  %9343 = fneg double %9342
  %9344 = call double @llvm.fmuladd.f64(double %9335, double %9337, double %9343)
  %9345 = getelementptr inbounds %struct.doublecomplex, ptr %31, i32 0, i32 0
  store double %9344, ptr %9345, align 8, !tbaa !11
  %9346 = getelementptr inbounds %struct.doublecomplex, ptr %70, i32 0, i32 0
  %9347 = load double, ptr %9346, align 8, !tbaa !11
  %9348 = getelementptr inbounds %struct.doublecomplex, ptr %53, i32 0, i32 1
  %9349 = load double, ptr %9348, align 8, !tbaa !14
  %9350 = getelementptr inbounds %struct.doublecomplex, ptr %70, i32 0, i32 1
  %9351 = load double, ptr %9350, align 8, !tbaa !14
  %9352 = getelementptr inbounds %struct.doublecomplex, ptr %53, i32 0, i32 0
  %9353 = load double, ptr %9352, align 8, !tbaa !11
  %9354 = fmul double %9351, %9353
  %9355 = call double @llvm.fmuladd.f64(double %9347, double %9349, double %9354)
  %9356 = getelementptr inbounds %struct.doublecomplex, ptr %31, i32 0, i32 1
  store double %9355, ptr %9356, align 8, !tbaa !14
  %9357 = load ptr, ptr %14, align 8, !tbaa !5
  %9358 = load i32, ptr %21, align 4, !tbaa !9
  %9359 = sext i32 %9358 to i64
  %9360 = getelementptr inbounds %struct.doublecomplex, ptr %9357, i64 %9359
  %9361 = getelementptr inbounds %struct.doublecomplex, ptr %9360, i32 0, i32 0
  %9362 = load double, ptr %9361, align 8, !tbaa !11
  %9363 = getelementptr inbounds %struct.doublecomplex, ptr %31, i32 0, i32 0
  %9364 = load double, ptr %9363, align 8, !tbaa !11
  %9365 = fsub double %9362, %9364
  %9366 = getelementptr inbounds %struct.doublecomplex, ptr %30, i32 0, i32 0
  store double %9365, ptr %9366, align 8, !tbaa !11
  %9367 = load ptr, ptr %14, align 8, !tbaa !5
  %9368 = load i32, ptr %21, align 4, !tbaa !9
  %9369 = sext i32 %9368 to i64
  %9370 = getelementptr inbounds %struct.doublecomplex, ptr %9367, i64 %9369
  %9371 = getelementptr inbounds %struct.doublecomplex, ptr %9370, i32 0, i32 1
  %9372 = load double, ptr %9371, align 8, !tbaa !14
  %9373 = getelementptr inbounds %struct.doublecomplex, ptr %31, i32 0, i32 1
  %9374 = load double, ptr %9373, align 8, !tbaa !14
  %9375 = fsub double %9372, %9374
  %9376 = getelementptr inbounds %struct.doublecomplex, ptr %30, i32 0, i32 1
  store double %9375, ptr %9376, align 8, !tbaa !14
  %9377 = getelementptr inbounds %struct.doublecomplex, ptr %30, i32 0, i32 0
  %9378 = load double, ptr %9377, align 8, !tbaa !11
  %9379 = load ptr, ptr %14, align 8, !tbaa !5
  %9380 = load i32, ptr %20, align 4, !tbaa !9
  %9381 = sext i32 %9380 to i64
  %9382 = getelementptr inbounds %struct.doublecomplex, ptr %9379, i64 %9381
  %9383 = getelementptr inbounds %struct.doublecomplex, ptr %9382, i32 0, i32 0
  store double %9378, ptr %9383, align 8, !tbaa !11
  %9384 = getelementptr inbounds %struct.doublecomplex, ptr %30, i32 0, i32 1
  %9385 = load double, ptr %9384, align 8, !tbaa !14
  %9386 = load ptr, ptr %14, align 8, !tbaa !5
  %9387 = load i32, ptr %20, align 4, !tbaa !9
  %9388 = sext i32 %9387 to i64
  %9389 = getelementptr inbounds %struct.doublecomplex, ptr %9386, i64 %9388
  %9390 = getelementptr inbounds %struct.doublecomplex, ptr %9389, i32 0, i32 1
  store double %9385, ptr %9390, align 8, !tbaa !14
  %9391 = load i32, ptr %49, align 4, !tbaa !9
  %9392 = load i32, ptr %17, align 4, !tbaa !9
  %9393 = mul nsw i32 %9391, %9392
  %9394 = add nsw i32 %9393, 5
  store i32 %9394, ptr %20, align 4, !tbaa !9
  %9395 = load i32, ptr %49, align 4, !tbaa !9
  %9396 = load i32, ptr %17, align 4, !tbaa !9
  %9397 = mul nsw i32 %9395, %9396
  %9398 = add nsw i32 %9397, 5
  store i32 %9398, ptr %21, align 4, !tbaa !9
  %9399 = getelementptr inbounds %struct.doublecomplex, ptr %70, i32 0, i32 0
  %9400 = load double, ptr %9399, align 8, !tbaa !11
  %9401 = getelementptr inbounds %struct.doublecomplex, ptr %54, i32 0, i32 0
  %9402 = load double, ptr %9401, align 8, !tbaa !11
  %9403 = getelementptr inbounds %struct.doublecomplex, ptr %70, i32 0, i32 1
  %9404 = load double, ptr %9403, align 8, !tbaa !14
  %9405 = getelementptr inbounds %struct.doublecomplex, ptr %54, i32 0, i32 1
  %9406 = load double, ptr %9405, align 8, !tbaa !14
  %9407 = fmul double %9404, %9406
  %9408 = fneg double %9407
  %9409 = call double @llvm.fmuladd.f64(double %9400, double %9402, double %9408)
  %9410 = getelementptr inbounds %struct.doublecomplex, ptr %31, i32 0, i32 0
  store double %9409, ptr %9410, align 8, !tbaa !11
  %9411 = getelementptr inbounds %struct.doublecomplex, ptr %70, i32 0, i32 0
  %9412 = load double, ptr %9411, align 8, !tbaa !11
  %9413 = getelementptr inbounds %struct.doublecomplex, ptr %54, i32 0, i32 1
  %9414 = load double, ptr %9413, align 8, !tbaa !14
  %9415 = getelementptr inbounds %struct.doublecomplex, ptr %70, i32 0, i32 1
  %9416 = load double, ptr %9415, align 8, !tbaa !14
  %9417 = getelementptr inbounds %struct.doublecomplex, ptr %54, i32 0, i32 0
  %9418 = load double, ptr %9417, align 8, !tbaa !11
  %9419 = fmul double %9416, %9418
  %9420 = call double @llvm.fmuladd.f64(double %9412, double %9414, double %9419)
  %9421 = getelementptr inbounds %struct.doublecomplex, ptr %31, i32 0, i32 1
  store double %9420, ptr %9421, align 8, !tbaa !14
  %9422 = load ptr, ptr %14, align 8, !tbaa !5
  %9423 = load i32, ptr %21, align 4, !tbaa !9
  %9424 = sext i32 %9423 to i64
  %9425 = getelementptr inbounds %struct.doublecomplex, ptr %9422, i64 %9424
  %9426 = getelementptr inbounds %struct.doublecomplex, ptr %9425, i32 0, i32 0
  %9427 = load double, ptr %9426, align 8, !tbaa !11
  %9428 = getelementptr inbounds %struct.doublecomplex, ptr %31, i32 0, i32 0
  %9429 = load double, ptr %9428, align 8, !tbaa !11
  %9430 = fsub double %9427, %9429
  %9431 = getelementptr inbounds %struct.doublecomplex, ptr %30, i32 0, i32 0
  store double %9430, ptr %9431, align 8, !tbaa !11
  %9432 = load ptr, ptr %14, align 8, !tbaa !5
  %9433 = load i32, ptr %21, align 4, !tbaa !9
  %9434 = sext i32 %9433 to i64
  %9435 = getelementptr inbounds %struct.doublecomplex, ptr %9432, i64 %9434
  %9436 = getelementptr inbounds %struct.doublecomplex, ptr %9435, i32 0, i32 1
  %9437 = load double, ptr %9436, align 8, !tbaa !14
  %9438 = getelementptr inbounds %struct.doublecomplex, ptr %31, i32 0, i32 1
  %9439 = load double, ptr %9438, align 8, !tbaa !14
  %9440 = fsub double %9437, %9439
  %9441 = getelementptr inbounds %struct.doublecomplex, ptr %30, i32 0, i32 1
  store double %9440, ptr %9441, align 8, !tbaa !14
  %9442 = getelementptr inbounds %struct.doublecomplex, ptr %30, i32 0, i32 0
  %9443 = load double, ptr %9442, align 8, !tbaa !11
  %9444 = load ptr, ptr %14, align 8, !tbaa !5
  %9445 = load i32, ptr %20, align 4, !tbaa !9
  %9446 = sext i32 %9445 to i64
  %9447 = getelementptr inbounds %struct.doublecomplex, ptr %9444, i64 %9446
  %9448 = getelementptr inbounds %struct.doublecomplex, ptr %9447, i32 0, i32 0
  store double %9443, ptr %9448, align 8, !tbaa !11
  %9449 = getelementptr inbounds %struct.doublecomplex, ptr %30, i32 0, i32 1
  %9450 = load double, ptr %9449, align 8, !tbaa !14
  %9451 = load ptr, ptr %14, align 8, !tbaa !5
  %9452 = load i32, ptr %20, align 4, !tbaa !9
  %9453 = sext i32 %9452 to i64
  %9454 = getelementptr inbounds %struct.doublecomplex, ptr %9451, i64 %9453
  %9455 = getelementptr inbounds %struct.doublecomplex, ptr %9454, i32 0, i32 1
  store double %9450, ptr %9455, align 8, !tbaa !14
  %9456 = load i32, ptr %49, align 4, !tbaa !9
  %9457 = load i32, ptr %17, align 4, !tbaa !9
  %9458 = mul nsw i32 %9456, %9457
  %9459 = add nsw i32 %9458, 6
  store i32 %9459, ptr %20, align 4, !tbaa !9
  %9460 = load i32, ptr %49, align 4, !tbaa !9
  %9461 = load i32, ptr %17, align 4, !tbaa !9
  %9462 = mul nsw i32 %9460, %9461
  %9463 = add nsw i32 %9462, 6
  store i32 %9463, ptr %21, align 4, !tbaa !9
  %9464 = getelementptr inbounds %struct.doublecomplex, ptr %70, i32 0, i32 0
  %9465 = load double, ptr %9464, align 8, !tbaa !11
  %9466 = getelementptr inbounds %struct.doublecomplex, ptr %55, i32 0, i32 0
  %9467 = load double, ptr %9466, align 8, !tbaa !11
  %9468 = getelementptr inbounds %struct.doublecomplex, ptr %70, i32 0, i32 1
  %9469 = load double, ptr %9468, align 8, !tbaa !14
  %9470 = getelementptr inbounds %struct.doublecomplex, ptr %55, i32 0, i32 1
  %9471 = load double, ptr %9470, align 8, !tbaa !14
  %9472 = fmul double %9469, %9471
  %9473 = fneg double %9472
  %9474 = call double @llvm.fmuladd.f64(double %9465, double %9467, double %9473)
  %9475 = getelementptr inbounds %struct.doublecomplex, ptr %31, i32 0, i32 0
  store double %9474, ptr %9475, align 8, !tbaa !11
  %9476 = getelementptr inbounds %struct.doublecomplex, ptr %70, i32 0, i32 0
  %9477 = load double, ptr %9476, align 8, !tbaa !11
  %9478 = getelementptr inbounds %struct.doublecomplex, ptr %55, i32 0, i32 1
  %9479 = load double, ptr %9478, align 8, !tbaa !14
  %9480 = getelementptr inbounds %struct.doublecomplex, ptr %70, i32 0, i32 1
  %9481 = load double, ptr %9480, align 8, !tbaa !14
  %9482 = getelementptr inbounds %struct.doublecomplex, ptr %55, i32 0, i32 0
  %9483 = load double, ptr %9482, align 8, !tbaa !11
  %9484 = fmul double %9481, %9483
  %9485 = call double @llvm.fmuladd.f64(double %9477, double %9479, double %9484)
  %9486 = getelementptr inbounds %struct.doublecomplex, ptr %31, i32 0, i32 1
  store double %9485, ptr %9486, align 8, !tbaa !14
  %9487 = load ptr, ptr %14, align 8, !tbaa !5
  %9488 = load i32, ptr %21, align 4, !tbaa !9
  %9489 = sext i32 %9488 to i64
  %9490 = getelementptr inbounds %struct.doublecomplex, ptr %9487, i64 %9489
  %9491 = getelementptr inbounds %struct.doublecomplex, ptr %9490, i32 0, i32 0
  %9492 = load double, ptr %9491, align 8, !tbaa !11
  %9493 = getelementptr inbounds %struct.doublecomplex, ptr %31, i32 0, i32 0
  %9494 = load double, ptr %9493, align 8, !tbaa !11
  %9495 = fsub double %9492, %9494
  %9496 = getelementptr inbounds %struct.doublecomplex, ptr %30, i32 0, i32 0
  store double %9495, ptr %9496, align 8, !tbaa !11
  %9497 = load ptr, ptr %14, align 8, !tbaa !5
  %9498 = load i32, ptr %21, align 4, !tbaa !9
  %9499 = sext i32 %9498 to i64
  %9500 = getelementptr inbounds %struct.doublecomplex, ptr %9497, i64 %9499
  %9501 = getelementptr inbounds %struct.doublecomplex, ptr %9500, i32 0, i32 1
  %9502 = load double, ptr %9501, align 8, !tbaa !14
  %9503 = getelementptr inbounds %struct.doublecomplex, ptr %31, i32 0, i32 1
  %9504 = load double, ptr %9503, align 8, !tbaa !14
  %9505 = fsub double %9502, %9504
  %9506 = getelementptr inbounds %struct.doublecomplex, ptr %30, i32 0, i32 1
  store double %9505, ptr %9506, align 8, !tbaa !14
  %9507 = getelementptr inbounds %struct.doublecomplex, ptr %30, i32 0, i32 0
  %9508 = load double, ptr %9507, align 8, !tbaa !11
  %9509 = load ptr, ptr %14, align 8, !tbaa !5
  %9510 = load i32, ptr %20, align 4, !tbaa !9
  %9511 = sext i32 %9510 to i64
  %9512 = getelementptr inbounds %struct.doublecomplex, ptr %9509, i64 %9511
  %9513 = getelementptr inbounds %struct.doublecomplex, ptr %9512, i32 0, i32 0
  store double %9508, ptr %9513, align 8, !tbaa !11
  %9514 = getelementptr inbounds %struct.doublecomplex, ptr %30, i32 0, i32 1
  %9515 = load double, ptr %9514, align 8, !tbaa !14
  %9516 = load ptr, ptr %14, align 8, !tbaa !5
  %9517 = load i32, ptr %20, align 4, !tbaa !9
  %9518 = sext i32 %9517 to i64
  %9519 = getelementptr inbounds %struct.doublecomplex, ptr %9516, i64 %9518
  %9520 = getelementptr inbounds %struct.doublecomplex, ptr %9519, i32 0, i32 1
  store double %9515, ptr %9520, align 8, !tbaa !14
  %9521 = load i32, ptr %49, align 4, !tbaa !9
  %9522 = load i32, ptr %17, align 4, !tbaa !9
  %9523 = mul nsw i32 %9521, %9522
  %9524 = add nsw i32 %9523, 7
  store i32 %9524, ptr %20, align 4, !tbaa !9
  %9525 = load i32, ptr %49, align 4, !tbaa !9
  %9526 = load i32, ptr %17, align 4, !tbaa !9
  %9527 = mul nsw i32 %9525, %9526
  %9528 = add nsw i32 %9527, 7
  store i32 %9528, ptr %21, align 4, !tbaa !9
  %9529 = getelementptr inbounds %struct.doublecomplex, ptr %70, i32 0, i32 0
  %9530 = load double, ptr %9529, align 8, !tbaa !11
  %9531 = getelementptr inbounds %struct.doublecomplex, ptr %56, i32 0, i32 0
  %9532 = load double, ptr %9531, align 8, !tbaa !11
  %9533 = getelementptr inbounds %struct.doublecomplex, ptr %70, i32 0, i32 1
  %9534 = load double, ptr %9533, align 8, !tbaa !14
  %9535 = getelementptr inbounds %struct.doublecomplex, ptr %56, i32 0, i32 1
  %9536 = load double, ptr %9535, align 8, !tbaa !14
  %9537 = fmul double %9534, %9536
  %9538 = fneg double %9537
  %9539 = call double @llvm.fmuladd.f64(double %9530, double %9532, double %9538)
  %9540 = getelementptr inbounds %struct.doublecomplex, ptr %31, i32 0, i32 0
  store double %9539, ptr %9540, align 8, !tbaa !11
  %9541 = getelementptr inbounds %struct.doublecomplex, ptr %70, i32 0, i32 0
  %9542 = load double, ptr %9541, align 8, !tbaa !11
  %9543 = getelementptr inbounds %struct.doublecomplex, ptr %56, i32 0, i32 1
  %9544 = load double, ptr %9543, align 8, !tbaa !14
  %9545 = getelementptr inbounds %struct.doublecomplex, ptr %70, i32 0, i32 1
  %9546 = load double, ptr %9545, align 8, !tbaa !14
  %9547 = getelementptr inbounds %struct.doublecomplex, ptr %56, i32 0, i32 0
  %9548 = load double, ptr %9547, align 8, !tbaa !11
  %9549 = fmul double %9546, %9548
  %9550 = call double @llvm.fmuladd.f64(double %9542, double %9544, double %9549)
  %9551 = getelementptr inbounds %struct.doublecomplex, ptr %31, i32 0, i32 1
  store double %9550, ptr %9551, align 8, !tbaa !14
  %9552 = load ptr, ptr %14, align 8, !tbaa !5
  %9553 = load i32, ptr %21, align 4, !tbaa !9
  %9554 = sext i32 %9553 to i64
  %9555 = getelementptr inbounds %struct.doublecomplex, ptr %9552, i64 %9554
  %9556 = getelementptr inbounds %struct.doublecomplex, ptr %9555, i32 0, i32 0
  %9557 = load double, ptr %9556, align 8, !tbaa !11
  %9558 = getelementptr inbounds %struct.doublecomplex, ptr %31, i32 0, i32 0
  %9559 = load double, ptr %9558, align 8, !tbaa !11
  %9560 = fsub double %9557, %9559
  %9561 = getelementptr inbounds %struct.doublecomplex, ptr %30, i32 0, i32 0
  store double %9560, ptr %9561, align 8, !tbaa !11
  %9562 = load ptr, ptr %14, align 8, !tbaa !5
  %9563 = load i32, ptr %21, align 4, !tbaa !9
  %9564 = sext i32 %9563 to i64
  %9565 = getelementptr inbounds %struct.doublecomplex, ptr %9562, i64 %9564
  %9566 = getelementptr inbounds %struct.doublecomplex, ptr %9565, i32 0, i32 1
  %9567 = load double, ptr %9566, align 8, !tbaa !14
  %9568 = getelementptr inbounds %struct.doublecomplex, ptr %31, i32 0, i32 1
  %9569 = load double, ptr %9568, align 8, !tbaa !14
  %9570 = fsub double %9567, %9569
  %9571 = getelementptr inbounds %struct.doublecomplex, ptr %30, i32 0, i32 1
  store double %9570, ptr %9571, align 8, !tbaa !14
  %9572 = getelementptr inbounds %struct.doublecomplex, ptr %30, i32 0, i32 0
  %9573 = load double, ptr %9572, align 8, !tbaa !11
  %9574 = load ptr, ptr %14, align 8, !tbaa !5
  %9575 = load i32, ptr %20, align 4, !tbaa !9
  %9576 = sext i32 %9575 to i64
  %9577 = getelementptr inbounds %struct.doublecomplex, ptr %9574, i64 %9576
  %9578 = getelementptr inbounds %struct.doublecomplex, ptr %9577, i32 0, i32 0
  store double %9573, ptr %9578, align 8, !tbaa !11
  %9579 = getelementptr inbounds %struct.doublecomplex, ptr %30, i32 0, i32 1
  %9580 = load double, ptr %9579, align 8, !tbaa !14
  %9581 = load ptr, ptr %14, align 8, !tbaa !5
  %9582 = load i32, ptr %20, align 4, !tbaa !9
  %9583 = sext i32 %9582 to i64
  %9584 = getelementptr inbounds %struct.doublecomplex, ptr %9581, i64 %9583
  %9585 = getelementptr inbounds %struct.doublecomplex, ptr %9584, i32 0, i32 1
  store double %9580, ptr %9585, align 8, !tbaa !14
  %9586 = load i32, ptr %49, align 4, !tbaa !9
  %9587 = load i32, ptr %17, align 4, !tbaa !9
  %9588 = mul nsw i32 %9586, %9587
  %9589 = add nsw i32 %9588, 8
  store i32 %9589, ptr %20, align 4, !tbaa !9
  %9590 = load i32, ptr %49, align 4, !tbaa !9
  %9591 = load i32, ptr %17, align 4, !tbaa !9
  %9592 = mul nsw i32 %9590, %9591
  %9593 = add nsw i32 %9592, 8
  store i32 %9593, ptr %21, align 4, !tbaa !9
  %9594 = getelementptr inbounds %struct.doublecomplex, ptr %70, i32 0, i32 0
  %9595 = load double, ptr %9594, align 8, !tbaa !11
  %9596 = getelementptr inbounds %struct.doublecomplex, ptr %57, i32 0, i32 0
  %9597 = load double, ptr %9596, align 8, !tbaa !11
  %9598 = getelementptr inbounds %struct.doublecomplex, ptr %70, i32 0, i32 1
  %9599 = load double, ptr %9598, align 8, !tbaa !14
  %9600 = getelementptr inbounds %struct.doublecomplex, ptr %57, i32 0, i32 1
  %9601 = load double, ptr %9600, align 8, !tbaa !14
  %9602 = fmul double %9599, %9601
  %9603 = fneg double %9602
  %9604 = call double @llvm.fmuladd.f64(double %9595, double %9597, double %9603)
  %9605 = getelementptr inbounds %struct.doublecomplex, ptr %31, i32 0, i32 0
  store double %9604, ptr %9605, align 8, !tbaa !11
  %9606 = getelementptr inbounds %struct.doublecomplex, ptr %70, i32 0, i32 0
  %9607 = load double, ptr %9606, align 8, !tbaa !11
  %9608 = getelementptr inbounds %struct.doublecomplex, ptr %57, i32 0, i32 1
  %9609 = load double, ptr %9608, align 8, !tbaa !14
  %9610 = getelementptr inbounds %struct.doublecomplex, ptr %70, i32 0, i32 1
  %9611 = load double, ptr %9610, align 8, !tbaa !14
  %9612 = getelementptr inbounds %struct.doublecomplex, ptr %57, i32 0, i32 0
  %9613 = load double, ptr %9612, align 8, !tbaa !11
  %9614 = fmul double %9611, %9613
  %9615 = call double @llvm.fmuladd.f64(double %9607, double %9609, double %9614)
  %9616 = getelementptr inbounds %struct.doublecomplex, ptr %31, i32 0, i32 1
  store double %9615, ptr %9616, align 8, !tbaa !14
  %9617 = load ptr, ptr %14, align 8, !tbaa !5
  %9618 = load i32, ptr %21, align 4, !tbaa !9
  %9619 = sext i32 %9618 to i64
  %9620 = getelementptr inbounds %struct.doublecomplex, ptr %9617, i64 %9619
  %9621 = getelementptr inbounds %struct.doublecomplex, ptr %9620, i32 0, i32 0
  %9622 = load double, ptr %9621, align 8, !tbaa !11
  %9623 = getelementptr inbounds %struct.doublecomplex, ptr %31, i32 0, i32 0
  %9624 = load double, ptr %9623, align 8, !tbaa !11
  %9625 = fsub double %9622, %9624
  %9626 = getelementptr inbounds %struct.doublecomplex, ptr %30, i32 0, i32 0
  store double %9625, ptr %9626, align 8, !tbaa !11
  %9627 = load ptr, ptr %14, align 8, !tbaa !5
  %9628 = load i32, ptr %21, align 4, !tbaa !9
  %9629 = sext i32 %9628 to i64
  %9630 = getelementptr inbounds %struct.doublecomplex, ptr %9627, i64 %9629
  %9631 = getelementptr inbounds %struct.doublecomplex, ptr %9630, i32 0, i32 1
  %9632 = load double, ptr %9631, align 8, !tbaa !14
  %9633 = getelementptr inbounds %struct.doublecomplex, ptr %31, i32 0, i32 1
  %9634 = load double, ptr %9633, align 8, !tbaa !14
  %9635 = fsub double %9632, %9634
  %9636 = getelementptr inbounds %struct.doublecomplex, ptr %30, i32 0, i32 1
  store double %9635, ptr %9636, align 8, !tbaa !14
  %9637 = getelementptr inbounds %struct.doublecomplex, ptr %30, i32 0, i32 0
  %9638 = load double, ptr %9637, align 8, !tbaa !11
  %9639 = load ptr, ptr %14, align 8, !tbaa !5
  %9640 = load i32, ptr %20, align 4, !tbaa !9
  %9641 = sext i32 %9640 to i64
  %9642 = getelementptr inbounds %struct.doublecomplex, ptr %9639, i64 %9641
  %9643 = getelementptr inbounds %struct.doublecomplex, ptr %9642, i32 0, i32 0
  store double %9638, ptr %9643, align 8, !tbaa !11
  %9644 = getelementptr inbounds %struct.doublecomplex, ptr %30, i32 0, i32 1
  %9645 = load double, ptr %9644, align 8, !tbaa !14
  %9646 = load ptr, ptr %14, align 8, !tbaa !5
  %9647 = load i32, ptr %20, align 4, !tbaa !9
  %9648 = sext i32 %9647 to i64
  %9649 = getelementptr inbounds %struct.doublecomplex, ptr %9646, i64 %9648
  %9650 = getelementptr inbounds %struct.doublecomplex, ptr %9649, i32 0, i32 1
  store double %9645, ptr %9650, align 8, !tbaa !14
  %9651 = load i32, ptr %49, align 4, !tbaa !9
  %9652 = load i32, ptr %17, align 4, !tbaa !9
  %9653 = mul nsw i32 %9651, %9652
  %9654 = add nsw i32 %9653, 9
  store i32 %9654, ptr %20, align 4, !tbaa !9
  %9655 = load i32, ptr %49, align 4, !tbaa !9
  %9656 = load i32, ptr %17, align 4, !tbaa !9
  %9657 = mul nsw i32 %9655, %9656
  %9658 = add nsw i32 %9657, 9
  store i32 %9658, ptr %21, align 4, !tbaa !9
  %9659 = getelementptr inbounds %struct.doublecomplex, ptr %70, i32 0, i32 0
  %9660 = load double, ptr %9659, align 8, !tbaa !11
  %9661 = getelementptr inbounds %struct.doublecomplex, ptr %58, i32 0, i32 0
  %9662 = load double, ptr %9661, align 8, !tbaa !11
  %9663 = getelementptr inbounds %struct.doublecomplex, ptr %70, i32 0, i32 1
  %9664 = load double, ptr %9663, align 8, !tbaa !14
  %9665 = getelementptr inbounds %struct.doublecomplex, ptr %58, i32 0, i32 1
  %9666 = load double, ptr %9665, align 8, !tbaa !14
  %9667 = fmul double %9664, %9666
  %9668 = fneg double %9667
  %9669 = call double @llvm.fmuladd.f64(double %9660, double %9662, double %9668)
  %9670 = getelementptr inbounds %struct.doublecomplex, ptr %31, i32 0, i32 0
  store double %9669, ptr %9670, align 8, !tbaa !11
  %9671 = getelementptr inbounds %struct.doublecomplex, ptr %70, i32 0, i32 0
  %9672 = load double, ptr %9671, align 8, !tbaa !11
  %9673 = getelementptr inbounds %struct.doublecomplex, ptr %58, i32 0, i32 1
  %9674 = load double, ptr %9673, align 8, !tbaa !14
  %9675 = getelementptr inbounds %struct.doublecomplex, ptr %70, i32 0, i32 1
  %9676 = load double, ptr %9675, align 8, !tbaa !14
  %9677 = getelementptr inbounds %struct.doublecomplex, ptr %58, i32 0, i32 0
  %9678 = load double, ptr %9677, align 8, !tbaa !11
  %9679 = fmul double %9676, %9678
  %9680 = call double @llvm.fmuladd.f64(double %9672, double %9674, double %9679)
  %9681 = getelementptr inbounds %struct.doublecomplex, ptr %31, i32 0, i32 1
  store double %9680, ptr %9681, align 8, !tbaa !14
  %9682 = load ptr, ptr %14, align 8, !tbaa !5
  %9683 = load i32, ptr %21, align 4, !tbaa !9
  %9684 = sext i32 %9683 to i64
  %9685 = getelementptr inbounds %struct.doublecomplex, ptr %9682, i64 %9684
  %9686 = getelementptr inbounds %struct.doublecomplex, ptr %9685, i32 0, i32 0
  %9687 = load double, ptr %9686, align 8, !tbaa !11
  %9688 = getelementptr inbounds %struct.doublecomplex, ptr %31, i32 0, i32 0
  %9689 = load double, ptr %9688, align 8, !tbaa !11
  %9690 = fsub double %9687, %9689
  %9691 = getelementptr inbounds %struct.doublecomplex, ptr %30, i32 0, i32 0
  store double %9690, ptr %9691, align 8, !tbaa !11
  %9692 = load ptr, ptr %14, align 8, !tbaa !5
  %9693 = load i32, ptr %21, align 4, !tbaa !9
  %9694 = sext i32 %9693 to i64
  %9695 = getelementptr inbounds %struct.doublecomplex, ptr %9692, i64 %9694
  %9696 = getelementptr inbounds %struct.doublecomplex, ptr %9695, i32 0, i32 1
  %9697 = load double, ptr %9696, align 8, !tbaa !14
  %9698 = getelementptr inbounds %struct.doublecomplex, ptr %31, i32 0, i32 1
  %9699 = load double, ptr %9698, align 8, !tbaa !14
  %9700 = fsub double %9697, %9699
  %9701 = getelementptr inbounds %struct.doublecomplex, ptr %30, i32 0, i32 1
  store double %9700, ptr %9701, align 8, !tbaa !14
  %9702 = getelementptr inbounds %struct.doublecomplex, ptr %30, i32 0, i32 0
  %9703 = load double, ptr %9702, align 8, !tbaa !11
  %9704 = load ptr, ptr %14, align 8, !tbaa !5
  %9705 = load i32, ptr %20, align 4, !tbaa !9
  %9706 = sext i32 %9705 to i64
  %9707 = getelementptr inbounds %struct.doublecomplex, ptr %9704, i64 %9706
  %9708 = getelementptr inbounds %struct.doublecomplex, ptr %9707, i32 0, i32 0
  store double %9703, ptr %9708, align 8, !tbaa !11
  %9709 = getelementptr inbounds %struct.doublecomplex, ptr %30, i32 0, i32 1
  %9710 = load double, ptr %9709, align 8, !tbaa !14
  %9711 = load ptr, ptr %14, align 8, !tbaa !5
  %9712 = load i32, ptr %20, align 4, !tbaa !9
  %9713 = sext i32 %9712 to i64
  %9714 = getelementptr inbounds %struct.doublecomplex, ptr %9711, i64 %9713
  %9715 = getelementptr inbounds %struct.doublecomplex, ptr %9714, i32 0, i32 1
  store double %9710, ptr %9715, align 8, !tbaa !14
  %9716 = load i32, ptr %49, align 4, !tbaa !9
  %9717 = load i32, ptr %17, align 4, !tbaa !9
  %9718 = mul nsw i32 %9716, %9717
  %9719 = add nsw i32 %9718, 10
  store i32 %9719, ptr %20, align 4, !tbaa !9
  %9720 = load i32, ptr %49, align 4, !tbaa !9
  %9721 = load i32, ptr %17, align 4, !tbaa !9
  %9722 = mul nsw i32 %9720, %9721
  %9723 = add nsw i32 %9722, 10
  store i32 %9723, ptr %21, align 4, !tbaa !9
  %9724 = getelementptr inbounds %struct.doublecomplex, ptr %70, i32 0, i32 0
  %9725 = load double, ptr %9724, align 8, !tbaa !11
  %9726 = getelementptr inbounds %struct.doublecomplex, ptr %68, i32 0, i32 0
  %9727 = load double, ptr %9726, align 8, !tbaa !11
  %9728 = getelementptr inbounds %struct.doublecomplex, ptr %70, i32 0, i32 1
  %9729 = load double, ptr %9728, align 8, !tbaa !14
  %9730 = getelementptr inbounds %struct.doublecomplex, ptr %68, i32 0, i32 1
  %9731 = load double, ptr %9730, align 8, !tbaa !14
  %9732 = fmul double %9729, %9731
  %9733 = fneg double %9732
  %9734 = call double @llvm.fmuladd.f64(double %9725, double %9727, double %9733)
  %9735 = getelementptr inbounds %struct.doublecomplex, ptr %31, i32 0, i32 0
  store double %9734, ptr %9735, align 8, !tbaa !11
  %9736 = getelementptr inbounds %struct.doublecomplex, ptr %70, i32 0, i32 0
  %9737 = load double, ptr %9736, align 8, !tbaa !11
  %9738 = getelementptr inbounds %struct.doublecomplex, ptr %68, i32 0, i32 1
  %9739 = load double, ptr %9738, align 8, !tbaa !14
  %9740 = getelementptr inbounds %struct.doublecomplex, ptr %70, i32 0, i32 1
  %9741 = load double, ptr %9740, align 8, !tbaa !14
  %9742 = getelementptr inbounds %struct.doublecomplex, ptr %68, i32 0, i32 0
  %9743 = load double, ptr %9742, align 8, !tbaa !11
  %9744 = fmul double %9741, %9743
  %9745 = call double @llvm.fmuladd.f64(double %9737, double %9739, double %9744)
  %9746 = getelementptr inbounds %struct.doublecomplex, ptr %31, i32 0, i32 1
  store double %9745, ptr %9746, align 8, !tbaa !14
  %9747 = load ptr, ptr %14, align 8, !tbaa !5
  %9748 = load i32, ptr %21, align 4, !tbaa !9
  %9749 = sext i32 %9748 to i64
  %9750 = getelementptr inbounds %struct.doublecomplex, ptr %9747, i64 %9749
  %9751 = getelementptr inbounds %struct.doublecomplex, ptr %9750, i32 0, i32 0
  %9752 = load double, ptr %9751, align 8, !tbaa !11
  %9753 = getelementptr inbounds %struct.doublecomplex, ptr %31, i32 0, i32 0
  %9754 = load double, ptr %9753, align 8, !tbaa !11
  %9755 = fsub double %9752, %9754
  %9756 = getelementptr inbounds %struct.doublecomplex, ptr %30, i32 0, i32 0
  store double %9755, ptr %9756, align 8, !tbaa !11
  %9757 = load ptr, ptr %14, align 8, !tbaa !5
  %9758 = load i32, ptr %21, align 4, !tbaa !9
  %9759 = sext i32 %9758 to i64
  %9760 = getelementptr inbounds %struct.doublecomplex, ptr %9757, i64 %9759
  %9761 = getelementptr inbounds %struct.doublecomplex, ptr %9760, i32 0, i32 1
  %9762 = load double, ptr %9761, align 8, !tbaa !14
  %9763 = getelementptr inbounds %struct.doublecomplex, ptr %31, i32 0, i32 1
  %9764 = load double, ptr %9763, align 8, !tbaa !14
  %9765 = fsub double %9762, %9764
  %9766 = getelementptr inbounds %struct.doublecomplex, ptr %30, i32 0, i32 1
  store double %9765, ptr %9766, align 8, !tbaa !14
  %9767 = getelementptr inbounds %struct.doublecomplex, ptr %30, i32 0, i32 0
  %9768 = load double, ptr %9767, align 8, !tbaa !11
  %9769 = load ptr, ptr %14, align 8, !tbaa !5
  %9770 = load i32, ptr %20, align 4, !tbaa !9
  %9771 = sext i32 %9770 to i64
  %9772 = getelementptr inbounds %struct.doublecomplex, ptr %9769, i64 %9771
  %9773 = getelementptr inbounds %struct.doublecomplex, ptr %9772, i32 0, i32 0
  store double %9768, ptr %9773, align 8, !tbaa !11
  %9774 = getelementptr inbounds %struct.doublecomplex, ptr %30, i32 0, i32 1
  %9775 = load double, ptr %9774, align 8, !tbaa !14
  %9776 = load ptr, ptr %14, align 8, !tbaa !5
  %9777 = load i32, ptr %20, align 4, !tbaa !9
  %9778 = sext i32 %9777 to i64
  %9779 = getelementptr inbounds %struct.doublecomplex, ptr %9776, i64 %9778
  %9780 = getelementptr inbounds %struct.doublecomplex, ptr %9779, i32 0, i32 1
  store double %9775, ptr %9780, align 8, !tbaa !14
  br label %9781

9781:                                             ; preds = %8586
  %9782 = load i32, ptr %49, align 4, !tbaa !9
  %9783 = add nsw i32 %9782, 1
  store i32 %9783, ptr %49, align 4, !tbaa !9
  br label %8582, !llvm.loop !25

9784:                                             ; preds = %8582
  br label %19171

9785:                                             ; preds = %96
  %9786 = load ptr, ptr %11, align 8, !tbaa !5
  %9787 = load i32, ptr %9786, align 4, !tbaa !9
  switch i32 %9787, label %9798 [
    i32 1, label %9788
    i32 2, label %9789
    i32 3, label %9790
    i32 4, label %9791
    i32 5, label %9792
    i32 6, label %9793
    i32 7, label %9794
    i32 8, label %9795
    i32 9, label %9796
    i32 10, label %9797
  ]

9788:                                             ; preds = %9785
  br label %9812

9789:                                             ; preds = %9785
  br label %9964

9790:                                             ; preds = %9785
  br label %10307

9791:                                             ; preds = %9785
  br label %10820

9792:                                             ; preds = %9785
  br label %11503

9793:                                             ; preds = %9785
  br label %12356

9794:                                             ; preds = %9785
  br label %13379

9795:                                             ; preds = %9785
  br label %14572

9796:                                             ; preds = %9785
  br label %15935

9797:                                             ; preds = %9785
  br label %17468

9798:                                             ; preds = %9785
  %9799 = load ptr, ptr %9, align 8, !tbaa !5
  %9800 = load ptr, ptr %10, align 8, !tbaa !5
  %9801 = load ptr, ptr %11, align 8, !tbaa !5
  %9802 = load ptr, ptr %12, align 8, !tbaa !5
  %9803 = getelementptr inbounds %struct.doublecomplex, ptr %9802, i64 1
  %9804 = load ptr, ptr %13, align 8, !tbaa !5
  %9805 = load ptr, ptr %14, align 8, !tbaa !5
  %9806 = load i32, ptr %18, align 4, !tbaa !9
  %9807 = sext i32 %9806 to i64
  %9808 = getelementptr inbounds %struct.doublecomplex, ptr %9805, i64 %9807
  %9809 = load ptr, ptr %15, align 8, !tbaa !5
  %9810 = load ptr, ptr %16, align 8, !tbaa !5
  %9811 = getelementptr inbounds %struct.doublecomplex, ptr %9810, i64 1
  call void @zlarf_(ptr noundef %9799, ptr noundef %9800, ptr noundef %9801, ptr noundef %9803, ptr noundef @c__1, ptr noundef %9804, ptr noundef %9808, ptr noundef %9809, ptr noundef %9811)
  br label %19171

9812:                                             ; preds = %9788
  %9813 = load ptr, ptr %13, align 8, !tbaa !5
  %9814 = getelementptr inbounds %struct.doublecomplex, ptr %9813, i32 0, i32 0
  %9815 = load double, ptr %9814, align 8, !tbaa !11
  %9816 = load ptr, ptr %12, align 8, !tbaa !5
  %9817 = getelementptr inbounds %struct.doublecomplex, ptr %9816, i64 1
  %9818 = getelementptr inbounds %struct.doublecomplex, ptr %9817, i32 0, i32 0
  %9819 = load double, ptr %9818, align 8, !tbaa !11
  %9820 = load ptr, ptr %13, align 8, !tbaa !5
  %9821 = getelementptr inbounds %struct.doublecomplex, ptr %9820, i32 0, i32 1
  %9822 = load double, ptr %9821, align 8, !tbaa !14
  %9823 = load ptr, ptr %12, align 8, !tbaa !5
  %9824 = getelementptr inbounds %struct.doublecomplex, ptr %9823, i64 1
  %9825 = getelementptr inbounds %struct.doublecomplex, ptr %9824, i32 0, i32 1
  %9826 = load double, ptr %9825, align 8, !tbaa !14
  %9827 = fmul double %9822, %9826
  %9828 = fneg double %9827
  %9829 = call double @llvm.fmuladd.f64(double %9815, double %9819, double %9828)
  %9830 = getelementptr inbounds %struct.doublecomplex, ptr %32, i32 0, i32 0
  store double %9829, ptr %9830, align 8, !tbaa !11
  %9831 = load ptr, ptr %13, align 8, !tbaa !5
  %9832 = getelementptr inbounds %struct.doublecomplex, ptr %9831, i32 0, i32 0
  %9833 = load double, ptr %9832, align 8, !tbaa !11
  %9834 = load ptr, ptr %12, align 8, !tbaa !5
  %9835 = getelementptr inbounds %struct.doublecomplex, ptr %9834, i64 1
  %9836 = getelementptr inbounds %struct.doublecomplex, ptr %9835, i32 0, i32 1
  %9837 = load double, ptr %9836, align 8, !tbaa !14
  %9838 = load ptr, ptr %13, align 8, !tbaa !5
  %9839 = getelementptr inbounds %struct.doublecomplex, ptr %9838, i32 0, i32 1
  %9840 = load double, ptr %9839, align 8, !tbaa !14
  %9841 = load ptr, ptr %12, align 8, !tbaa !5
  %9842 = getelementptr inbounds %struct.doublecomplex, ptr %9841, i64 1
  %9843 = getelementptr inbounds %struct.doublecomplex, ptr %9842, i32 0, i32 0
  %9844 = load double, ptr %9843, align 8, !tbaa !11
  %9845 = fmul double %9840, %9844
  %9846 = call double @llvm.fmuladd.f64(double %9833, double %9837, double %9845)
  %9847 = getelementptr inbounds %struct.doublecomplex, ptr %32, i32 0, i32 1
  store double %9846, ptr %9847, align 8, !tbaa !14
  %9848 = load ptr, ptr %12, align 8, !tbaa !5
  %9849 = getelementptr inbounds %struct.doublecomplex, ptr %9848, i64 1
  %9850 = call { double, double } @Cd(ptr noundef %9849)
  %9851 = extractvalue { double, double } %9850, 0
  %9852 = extractvalue { double, double } %9850, 1
  %9853 = fneg double %9852
  %9854 = call ptr @_pCd(ptr noundef %33)
  %9855 = getelementptr inbounds { double, double }, ptr %9854, i32 0, i32 0
  %9856 = getelementptr inbounds { double, double }, ptr %9854, i32 0, i32 1
  store double %9851, ptr %9855, align 8
  store double %9853, ptr %9856, align 8
  %9857 = getelementptr inbounds %struct.doublecomplex, ptr %32, i32 0, i32 0
  %9858 = load double, ptr %9857, align 8, !tbaa !11
  %9859 = getelementptr inbounds %struct.doublecomplex, ptr %33, i32 0, i32 0
  %9860 = load double, ptr %9859, align 8, !tbaa !11
  %9861 = getelementptr inbounds %struct.doublecomplex, ptr %32, i32 0, i32 1
  %9862 = load double, ptr %9861, align 8, !tbaa !14
  %9863 = getelementptr inbounds %struct.doublecomplex, ptr %33, i32 0, i32 1
  %9864 = load double, ptr %9863, align 8, !tbaa !14
  %9865 = fmul double %9862, %9864
  %9866 = fneg double %9865
  %9867 = call double @llvm.fmuladd.f64(double %9858, double %9860, double %9866)
  %9868 = getelementptr inbounds %struct.doublecomplex, ptr %31, i32 0, i32 0
  store double %9867, ptr %9868, align 8, !tbaa !11
  %9869 = getelementptr inbounds %struct.doublecomplex, ptr %32, i32 0, i32 0
  %9870 = load double, ptr %9869, align 8, !tbaa !11
  %9871 = getelementptr inbounds %struct.doublecomplex, ptr %33, i32 0, i32 1
  %9872 = load double, ptr %9871, align 8, !tbaa !14
  %9873 = getelementptr inbounds %struct.doublecomplex, ptr %32, i32 0, i32 1
  %9874 = load double, ptr %9873, align 8, !tbaa !14
  %9875 = getelementptr inbounds %struct.doublecomplex, ptr %33, i32 0, i32 0
  %9876 = load double, ptr %9875, align 8, !tbaa !11
  %9877 = fmul double %9874, %9876
  %9878 = call double @llvm.fmuladd.f64(double %9870, double %9872, double %9877)
  %9879 = getelementptr inbounds %struct.doublecomplex, ptr %31, i32 0, i32 1
  store double %9878, ptr %9879, align 8, !tbaa !14
  %9880 = getelementptr inbounds %struct.doublecomplex, ptr %31, i32 0, i32 0
  %9881 = load double, ptr %9880, align 8, !tbaa !11
  %9882 = fsub double 1.000000e+00, %9881
  %9883 = getelementptr inbounds %struct.doublecomplex, ptr %30, i32 0, i32 0
  store double %9882, ptr %9883, align 8, !tbaa !11
  %9884 = getelementptr inbounds %struct.doublecomplex, ptr %31, i32 0, i32 1
  %9885 = load double, ptr %9884, align 8, !tbaa !14
  %9886 = fsub double 0.000000e+00, %9885
  %9887 = getelementptr inbounds %struct.doublecomplex, ptr %30, i32 0, i32 1
  store double %9886, ptr %9887, align 8, !tbaa !14
  %9888 = getelementptr inbounds %struct.doublecomplex, ptr %30, i32 0, i32 0
  %9889 = load double, ptr %9888, align 8, !tbaa !11
  %9890 = getelementptr inbounds %struct.doublecomplex, ptr %50, i32 0, i32 0
  store double %9889, ptr %9890, align 8, !tbaa !11
  %9891 = getelementptr inbounds %struct.doublecomplex, ptr %30, i32 0, i32 1
  %9892 = load double, ptr %9891, align 8, !tbaa !14
  %9893 = getelementptr inbounds %struct.doublecomplex, ptr %50, i32 0, i32 1
  store double %9892, ptr %9893, align 8, !tbaa !14
  %9894 = load ptr, ptr %10, align 8, !tbaa !5
  %9895 = load i32, ptr %9894, align 4, !tbaa !9
  store i32 %9895, ptr %19, align 4, !tbaa !9
  store i32 1, ptr %49, align 4, !tbaa !9
  br label %9896

9896:                                             ; preds = %9960, %9812
  %9897 = load i32, ptr %49, align 4, !tbaa !9
  %9898 = load i32, ptr %19, align 4, !tbaa !9
  %9899 = icmp sle i32 %9897, %9898
  br i1 %9899, label %9900, label %9963

9900:                                             ; preds = %9896
  %9901 = load i32, ptr %49, align 4, !tbaa !9
  %9902 = load i32, ptr %17, align 4, !tbaa !9
  %9903 = add nsw i32 %9901, %9902
  store i32 %9903, ptr %20, align 4, !tbaa !9
  %9904 = load i32, ptr %49, align 4, !tbaa !9
  %9905 = load i32, ptr %17, align 4, !tbaa !9
  %9906 = add nsw i32 %9904, %9905
  store i32 %9906, ptr %21, align 4, !tbaa !9
  %9907 = getelementptr inbounds %struct.doublecomplex, ptr %50, i32 0, i32 0
  %9908 = load double, ptr %9907, align 8, !tbaa !11
  %9909 = load ptr, ptr %14, align 8, !tbaa !5
  %9910 = load i32, ptr %21, align 4, !tbaa !9
  %9911 = sext i32 %9910 to i64
  %9912 = getelementptr inbounds %struct.doublecomplex, ptr %9909, i64 %9911
  %9913 = getelementptr inbounds %struct.doublecomplex, ptr %9912, i32 0, i32 0
  %9914 = load double, ptr %9913, align 8, !tbaa !11
  %9915 = getelementptr inbounds %struct.doublecomplex, ptr %50, i32 0, i32 1
  %9916 = load double, ptr %9915, align 8, !tbaa !14
  %9917 = load ptr, ptr %14, align 8, !tbaa !5
  %9918 = load i32, ptr %21, align 4, !tbaa !9
  %9919 = sext i32 %9918 to i64
  %9920 = getelementptr inbounds %struct.doublecomplex, ptr %9917, i64 %9919
  %9921 = getelementptr inbounds %struct.doublecomplex, ptr %9920, i32 0, i32 1
  %9922 = load double, ptr %9921, align 8, !tbaa !14
  %9923 = fmul double %9916, %9922
  %9924 = fneg double %9923
  %9925 = call double @llvm.fmuladd.f64(double %9908, double %9914, double %9924)
  %9926 = getelementptr inbounds %struct.doublecomplex, ptr %30, i32 0, i32 0
  store double %9925, ptr %9926, align 8, !tbaa !11
  %9927 = getelementptr inbounds %struct.doublecomplex, ptr %50, i32 0, i32 0
  %9928 = load double, ptr %9927, align 8, !tbaa !11
  %9929 = load ptr, ptr %14, align 8, !tbaa !5
  %9930 = load i32, ptr %21, align 4, !tbaa !9
  %9931 = sext i32 %9930 to i64
  %9932 = getelementptr inbounds %struct.doublecomplex, ptr %9929, i64 %9931
  %9933 = getelementptr inbounds %struct.doublecomplex, ptr %9932, i32 0, i32 1
  %9934 = load double, ptr %9933, align 8, !tbaa !14
  %9935 = getelementptr inbounds %struct.doublecomplex, ptr %50, i32 0, i32 1
  %9936 = load double, ptr %9935, align 8, !tbaa !14
  %9937 = load ptr, ptr %14, align 8, !tbaa !5
  %9938 = load i32, ptr %21, align 4, !tbaa !9
  %9939 = sext i32 %9938 to i64
  %9940 = getelementptr inbounds %struct.doublecomplex, ptr %9937, i64 %9939
  %9941 = getelementptr inbounds %struct.doublecomplex, ptr %9940, i32 0, i32 0
  %9942 = load double, ptr %9941, align 8, !tbaa !11
  %9943 = fmul double %9936, %9942
  %9944 = call double @llvm.fmuladd.f64(double %9928, double %9934, double %9943)
  %9945 = getelementptr inbounds %struct.doublecomplex, ptr %30, i32 0, i32 1
  store double %9944, ptr %9945, align 8, !tbaa !14
  %9946 = getelementptr inbounds %struct.doublecomplex, ptr %30, i32 0, i32 0
  %9947 = load double, ptr %9946, align 8, !tbaa !11
  %9948 = load ptr, ptr %14, align 8, !tbaa !5
  %9949 = load i32, ptr %20, align 4, !tbaa !9
  %9950 = sext i32 %9949 to i64
  %9951 = getelementptr inbounds %struct.doublecomplex, ptr %9948, i64 %9950
  %9952 = getelementptr inbounds %struct.doublecomplex, ptr %9951, i32 0, i32 0
  store double %9947, ptr %9952, align 8, !tbaa !11
  %9953 = getelementptr inbounds %struct.doublecomplex, ptr %30, i32 0, i32 1
  %9954 = load double, ptr %9953, align 8, !tbaa !14
  %9955 = load ptr, ptr %14, align 8, !tbaa !5
  %9956 = load i32, ptr %20, align 4, !tbaa !9
  %9957 = sext i32 %9956 to i64
  %9958 = getelementptr inbounds %struct.doublecomplex, ptr %9955, i64 %9957
  %9959 = getelementptr inbounds %struct.doublecomplex, ptr %9958, i32 0, i32 1
  store double %9954, ptr %9959, align 8, !tbaa !14
  br label %9960

9960:                                             ; preds = %9900
  %9961 = load i32, ptr %49, align 4, !tbaa !9
  %9962 = add nsw i32 %9961, 1
  store i32 %9962, ptr %49, align 4, !tbaa !9
  br label %9896, !llvm.loop !26

9963:                                             ; preds = %9896
  br label %19171

9964:                                             ; preds = %9789
  %9965 = load ptr, ptr %12, align 8, !tbaa !5
  %9966 = getelementptr inbounds %struct.doublecomplex, ptr %9965, i64 1
  %9967 = getelementptr inbounds %struct.doublecomplex, ptr %9966, i32 0, i32 0
  %9968 = load double, ptr %9967, align 8, !tbaa !11
  %9969 = getelementptr inbounds %struct.doublecomplex, ptr %59, i32 0, i32 0
  store double %9968, ptr %9969, align 8, !tbaa !11
  %9970 = load ptr, ptr %12, align 8, !tbaa !5
  %9971 = getelementptr inbounds %struct.doublecomplex, ptr %9970, i64 1
  %9972 = getelementptr inbounds %struct.doublecomplex, ptr %9971, i32 0, i32 1
  %9973 = load double, ptr %9972, align 8, !tbaa !14
  %9974 = getelementptr inbounds %struct.doublecomplex, ptr %59, i32 0, i32 1
  store double %9973, ptr %9974, align 8, !tbaa !14
  %9975 = call { double, double } @Cd(ptr noundef %59)
  %9976 = extractvalue { double, double } %9975, 0
  %9977 = extractvalue { double, double } %9975, 1
  %9978 = fneg double %9977
  %9979 = call ptr @_pCd(ptr noundef %31)
  %9980 = getelementptr inbounds { double, double }, ptr %9979, i32 0, i32 0
  %9981 = getelementptr inbounds { double, double }, ptr %9979, i32 0, i32 1
  store double %9976, ptr %9980, align 8
  store double %9978, ptr %9981, align 8
  %9982 = load ptr, ptr %13, align 8, !tbaa !5
  %9983 = getelementptr inbounds %struct.doublecomplex, ptr %9982, i32 0, i32 0
  %9984 = load double, ptr %9983, align 8, !tbaa !11
  %9985 = getelementptr inbounds %struct.doublecomplex, ptr %31, i32 0, i32 0
  %9986 = load double, ptr %9985, align 8, !tbaa !11
  %9987 = load ptr, ptr %13, align 8, !tbaa !5
  %9988 = getelementptr inbounds %struct.doublecomplex, ptr %9987, i32 0, i32 1
  %9989 = load double, ptr %9988, align 8, !tbaa !14
  %9990 = getelementptr inbounds %struct.doublecomplex, ptr %31, i32 0, i32 1
  %9991 = load double, ptr %9990, align 8, !tbaa !14
  %9992 = fmul double %9989, %9991
  %9993 = fneg double %9992
  %9994 = call double @llvm.fmuladd.f64(double %9984, double %9986, double %9993)
  %9995 = getelementptr inbounds %struct.doublecomplex, ptr %30, i32 0, i32 0
  store double %9994, ptr %9995, align 8, !tbaa !11
  %9996 = load ptr, ptr %13, align 8, !tbaa !5
  %9997 = getelementptr inbounds %struct.doublecomplex, ptr %9996, i32 0, i32 0
  %9998 = load double, ptr %9997, align 8, !tbaa !11
  %9999 = getelementptr inbounds %struct.doublecomplex, ptr %31, i32 0, i32 1
  %10000 = load double, ptr %9999, align 8, !tbaa !14
  %10001 = load ptr, ptr %13, align 8, !tbaa !5
  %10002 = getelementptr inbounds %struct.doublecomplex, ptr %10001, i32 0, i32 1
  %10003 = load double, ptr %10002, align 8, !tbaa !14
  %10004 = getelementptr inbounds %struct.doublecomplex, ptr %31, i32 0, i32 0
  %10005 = load double, ptr %10004, align 8, !tbaa !11
  %10006 = fmul double %10003, %10005
  %10007 = call double @llvm.fmuladd.f64(double %9998, double %10000, double %10006)
  %10008 = getelementptr inbounds %struct.doublecomplex, ptr %30, i32 0, i32 1
  store double %10007, ptr %10008, align 8, !tbaa !14
  %10009 = getelementptr inbounds %struct.doublecomplex, ptr %30, i32 0, i32 0
  %10010 = load double, ptr %10009, align 8, !tbaa !11
  %10011 = getelementptr inbounds %struct.doublecomplex, ptr %50, i32 0, i32 0
  store double %10010, ptr %10011, align 8, !tbaa !11
  %10012 = getelementptr inbounds %struct.doublecomplex, ptr %30, i32 0, i32 1
  %10013 = load double, ptr %10012, align 8, !tbaa !14
  %10014 = getelementptr inbounds %struct.doublecomplex, ptr %50, i32 0, i32 1
  store double %10013, ptr %10014, align 8, !tbaa !14
  %10015 = load ptr, ptr %12, align 8, !tbaa !5
  %10016 = getelementptr inbounds %struct.doublecomplex, ptr %10015, i64 2
  %10017 = getelementptr inbounds %struct.doublecomplex, ptr %10016, i32 0, i32 0
  %10018 = load double, ptr %10017, align 8, !tbaa !11
  %10019 = getelementptr inbounds %struct.doublecomplex, ptr %60, i32 0, i32 0
  store double %10018, ptr %10019, align 8, !tbaa !11
  %10020 = load ptr, ptr %12, align 8, !tbaa !5
  %10021 = getelementptr inbounds %struct.doublecomplex, ptr %10020, i64 2
  %10022 = getelementptr inbounds %struct.doublecomplex, ptr %10021, i32 0, i32 1
  %10023 = load double, ptr %10022, align 8, !tbaa !14
  %10024 = getelementptr inbounds %struct.doublecomplex, ptr %60, i32 0, i32 1
  store double %10023, ptr %10024, align 8, !tbaa !14
  %10025 = call { double, double } @Cd(ptr noundef %60)
  %10026 = extractvalue { double, double } %10025, 0
  %10027 = extractvalue { double, double } %10025, 1
  %10028 = fneg double %10027
  %10029 = call ptr @_pCd(ptr noundef %31)
  %10030 = getelementptr inbounds { double, double }, ptr %10029, i32 0, i32 0
  %10031 = getelementptr inbounds { double, double }, ptr %10029, i32 0, i32 1
  store double %10026, ptr %10030, align 8
  store double %10028, ptr %10031, align 8
  %10032 = load ptr, ptr %13, align 8, !tbaa !5
  %10033 = getelementptr inbounds %struct.doublecomplex, ptr %10032, i32 0, i32 0
  %10034 = load double, ptr %10033, align 8, !tbaa !11
  %10035 = getelementptr inbounds %struct.doublecomplex, ptr %31, i32 0, i32 0
  %10036 = load double, ptr %10035, align 8, !tbaa !11
  %10037 = load ptr, ptr %13, align 8, !tbaa !5
  %10038 = getelementptr inbounds %struct.doublecomplex, ptr %10037, i32 0, i32 1
  %10039 = load double, ptr %10038, align 8, !tbaa !14
  %10040 = getelementptr inbounds %struct.doublecomplex, ptr %31, i32 0, i32 1
  %10041 = load double, ptr %10040, align 8, !tbaa !14
  %10042 = fmul double %10039, %10041
  %10043 = fneg double %10042
  %10044 = call double @llvm.fmuladd.f64(double %10034, double %10036, double %10043)
  %10045 = getelementptr inbounds %struct.doublecomplex, ptr %30, i32 0, i32 0
  store double %10044, ptr %10045, align 8, !tbaa !11
  %10046 = load ptr, ptr %13, align 8, !tbaa !5
  %10047 = getelementptr inbounds %struct.doublecomplex, ptr %10046, i32 0, i32 0
  %10048 = load double, ptr %10047, align 8, !tbaa !11
  %10049 = getelementptr inbounds %struct.doublecomplex, ptr %31, i32 0, i32 1
  %10050 = load double, ptr %10049, align 8, !tbaa !14
  %10051 = load ptr, ptr %13, align 8, !tbaa !5
  %10052 = getelementptr inbounds %struct.doublecomplex, ptr %10051, i32 0, i32 1
  %10053 = load double, ptr %10052, align 8, !tbaa !14
  %10054 = getelementptr inbounds %struct.doublecomplex, ptr %31, i32 0, i32 0
  %10055 = load double, ptr %10054, align 8, !tbaa !11
  %10056 = fmul double %10053, %10055
  %10057 = call double @llvm.fmuladd.f64(double %10048, double %10050, double %10056)
  %10058 = getelementptr inbounds %struct.doublecomplex, ptr %30, i32 0, i32 1
  store double %10057, ptr %10058, align 8, !tbaa !14
  %10059 = getelementptr inbounds %struct.doublecomplex, ptr %30, i32 0, i32 0
  %10060 = load double, ptr %10059, align 8, !tbaa !11
  %10061 = getelementptr inbounds %struct.doublecomplex, ptr %51, i32 0, i32 0
  store double %10060, ptr %10061, align 8, !tbaa !11
  %10062 = getelementptr inbounds %struct.doublecomplex, ptr %30, i32 0, i32 1
  %10063 = load double, ptr %10062, align 8, !tbaa !14
  %10064 = getelementptr inbounds %struct.doublecomplex, ptr %51, i32 0, i32 1
  store double %10063, ptr %10064, align 8, !tbaa !14
  %10065 = load ptr, ptr %10, align 8, !tbaa !5
  %10066 = load i32, ptr %10065, align 4, !tbaa !9
  store i32 %10066, ptr %19, align 4, !tbaa !9
  store i32 1, ptr %49, align 4, !tbaa !9
  br label %10067

10067:                                            ; preds = %10303, %9964
  %10068 = load i32, ptr %49, align 4, !tbaa !9
  %10069 = load i32, ptr %19, align 4, !tbaa !9
  %10070 = icmp sle i32 %10068, %10069
  br i1 %10070, label %10071, label %10306

10071:                                            ; preds = %10067
  %10072 = load i32, ptr %49, align 4, !tbaa !9
  %10073 = load i32, ptr %17, align 4, !tbaa !9
  %10074 = add nsw i32 %10072, %10073
  store i32 %10074, ptr %20, align 4, !tbaa !9
  %10075 = getelementptr inbounds %struct.doublecomplex, ptr %59, i32 0, i32 0
  %10076 = load double, ptr %10075, align 8, !tbaa !11
  %10077 = load ptr, ptr %14, align 8, !tbaa !5
  %10078 = load i32, ptr %20, align 4, !tbaa !9
  %10079 = sext i32 %10078 to i64
  %10080 = getelementptr inbounds %struct.doublecomplex, ptr %10077, i64 %10079
  %10081 = getelementptr inbounds %struct.doublecomplex, ptr %10080, i32 0, i32 0
  %10082 = load double, ptr %10081, align 8, !tbaa !11
  %10083 = getelementptr inbounds %struct.doublecomplex, ptr %59, i32 0, i32 1
  %10084 = load double, ptr %10083, align 8, !tbaa !14
  %10085 = load ptr, ptr %14, align 8, !tbaa !5
  %10086 = load i32, ptr %20, align 4, !tbaa !9
  %10087 = sext i32 %10086 to i64
  %10088 = getelementptr inbounds %struct.doublecomplex, ptr %10085, i64 %10087
  %10089 = getelementptr inbounds %struct.doublecomplex, ptr %10088, i32 0, i32 1
  %10090 = load double, ptr %10089, align 8, !tbaa !14
  %10091 = fmul double %10084, %10090
  %10092 = fneg double %10091
  %10093 = call double @llvm.fmuladd.f64(double %10076, double %10082, double %10092)
  %10094 = getelementptr inbounds %struct.doublecomplex, ptr %31, i32 0, i32 0
  store double %10093, ptr %10094, align 8, !tbaa !11
  %10095 = getelementptr inbounds %struct.doublecomplex, ptr %59, i32 0, i32 0
  %10096 = load double, ptr %10095, align 8, !tbaa !11
  %10097 = load ptr, ptr %14, align 8, !tbaa !5
  %10098 = load i32, ptr %20, align 4, !tbaa !9
  %10099 = sext i32 %10098 to i64
  %10100 = getelementptr inbounds %struct.doublecomplex, ptr %10097, i64 %10099
  %10101 = getelementptr inbounds %struct.doublecomplex, ptr %10100, i32 0, i32 1
  %10102 = load double, ptr %10101, align 8, !tbaa !14
  %10103 = getelementptr inbounds %struct.doublecomplex, ptr %59, i32 0, i32 1
  %10104 = load double, ptr %10103, align 8, !tbaa !14
  %10105 = load ptr, ptr %14, align 8, !tbaa !5
  %10106 = load i32, ptr %20, align 4, !tbaa !9
  %10107 = sext i32 %10106 to i64
  %10108 = getelementptr inbounds %struct.doublecomplex, ptr %10105, i64 %10107
  %10109 = getelementptr inbounds %struct.doublecomplex, ptr %10108, i32 0, i32 0
  %10110 = load double, ptr %10109, align 8, !tbaa !11
  %10111 = fmul double %10104, %10110
  %10112 = call double @llvm.fmuladd.f64(double %10096, double %10102, double %10111)
  %10113 = getelementptr inbounds %struct.doublecomplex, ptr %31, i32 0, i32 1
  store double %10112, ptr %10113, align 8, !tbaa !14
  %10114 = load i32, ptr %49, align 4, !tbaa !9
  %10115 = load i32, ptr %17, align 4, !tbaa !9
  %10116 = shl i32 %10115, 1
  %10117 = add nsw i32 %10114, %10116
  store i32 %10117, ptr %21, align 4, !tbaa !9
  %10118 = getelementptr inbounds %struct.doublecomplex, ptr %60, i32 0, i32 0
  %10119 = load double, ptr %10118, align 8, !tbaa !11
  %10120 = load ptr, ptr %14, align 8, !tbaa !5
  %10121 = load i32, ptr %21, align 4, !tbaa !9
  %10122 = sext i32 %10121 to i64
  %10123 = getelementptr inbounds %struct.doublecomplex, ptr %10120, i64 %10122
  %10124 = getelementptr inbounds %struct.doublecomplex, ptr %10123, i32 0, i32 0
  %10125 = load double, ptr %10124, align 8, !tbaa !11
  %10126 = getelementptr inbounds %struct.doublecomplex, ptr %60, i32 0, i32 1
  %10127 = load double, ptr %10126, align 8, !tbaa !14
  %10128 = load ptr, ptr %14, align 8, !tbaa !5
  %10129 = load i32, ptr %21, align 4, !tbaa !9
  %10130 = sext i32 %10129 to i64
  %10131 = getelementptr inbounds %struct.doublecomplex, ptr %10128, i64 %10130
  %10132 = getelementptr inbounds %struct.doublecomplex, ptr %10131, i32 0, i32 1
  %10133 = load double, ptr %10132, align 8, !tbaa !14
  %10134 = fmul double %10127, %10133
  %10135 = fneg double %10134
  %10136 = call double @llvm.fmuladd.f64(double %10119, double %10125, double %10135)
  %10137 = getelementptr inbounds %struct.doublecomplex, ptr %32, i32 0, i32 0
  store double %10136, ptr %10137, align 8, !tbaa !11
  %10138 = getelementptr inbounds %struct.doublecomplex, ptr %60, i32 0, i32 0
  %10139 = load double, ptr %10138, align 8, !tbaa !11
  %10140 = load ptr, ptr %14, align 8, !tbaa !5
  %10141 = load i32, ptr %21, align 4, !tbaa !9
  %10142 = sext i32 %10141 to i64
  %10143 = getelementptr inbounds %struct.doublecomplex, ptr %10140, i64 %10142
  %10144 = getelementptr inbounds %struct.doublecomplex, ptr %10143, i32 0, i32 1
  %10145 = load double, ptr %10144, align 8, !tbaa !14
  %10146 = getelementptr inbounds %struct.doublecomplex, ptr %60, i32 0, i32 1
  %10147 = load double, ptr %10146, align 8, !tbaa !14
  %10148 = load ptr, ptr %14, align 8, !tbaa !5
  %10149 = load i32, ptr %21, align 4, !tbaa !9
  %10150 = sext i32 %10149 to i64
  %10151 = getelementptr inbounds %struct.doublecomplex, ptr %10148, i64 %10150
  %10152 = getelementptr inbounds %struct.doublecomplex, ptr %10151, i32 0, i32 0
  %10153 = load double, ptr %10152, align 8, !tbaa !11
  %10154 = fmul double %10147, %10153
  %10155 = call double @llvm.fmuladd.f64(double %10139, double %10145, double %10154)
  %10156 = getelementptr inbounds %struct.doublecomplex, ptr %32, i32 0, i32 1
  store double %10155, ptr %10156, align 8, !tbaa !14
  %10157 = getelementptr inbounds %struct.doublecomplex, ptr %31, i32 0, i32 0
  %10158 = load double, ptr %10157, align 8, !tbaa !11
  %10159 = getelementptr inbounds %struct.doublecomplex, ptr %32, i32 0, i32 0
  %10160 = load double, ptr %10159, align 8, !tbaa !11
  %10161 = fadd double %10158, %10160
  %10162 = getelementptr inbounds %struct.doublecomplex, ptr %30, i32 0, i32 0
  store double %10161, ptr %10162, align 8, !tbaa !11
  %10163 = getelementptr inbounds %struct.doublecomplex, ptr %31, i32 0, i32 1
  %10164 = load double, ptr %10163, align 8, !tbaa !14
  %10165 = getelementptr inbounds %struct.doublecomplex, ptr %32, i32 0, i32 1
  %10166 = load double, ptr %10165, align 8, !tbaa !14
  %10167 = fadd double %10164, %10166
  %10168 = getelementptr inbounds %struct.doublecomplex, ptr %30, i32 0, i32 1
  store double %10167, ptr %10168, align 8, !tbaa !14
  %10169 = getelementptr inbounds %struct.doublecomplex, ptr %30, i32 0, i32 0
  %10170 = load double, ptr %10169, align 8, !tbaa !11
  %10171 = getelementptr inbounds %struct.doublecomplex, ptr %70, i32 0, i32 0
  store double %10170, ptr %10171, align 8, !tbaa !11
  %10172 = getelementptr inbounds %struct.doublecomplex, ptr %30, i32 0, i32 1
  %10173 = load double, ptr %10172, align 8, !tbaa !14
  %10174 = getelementptr inbounds %struct.doublecomplex, ptr %70, i32 0, i32 1
  store double %10173, ptr %10174, align 8, !tbaa !14
  %10175 = load i32, ptr %49, align 4, !tbaa !9
  %10176 = load i32, ptr %17, align 4, !tbaa !9
  %10177 = add nsw i32 %10175, %10176
  store i32 %10177, ptr %20, align 4, !tbaa !9
  %10178 = load i32, ptr %49, align 4, !tbaa !9
  %10179 = load i32, ptr %17, align 4, !tbaa !9
  %10180 = add nsw i32 %10178, %10179
  store i32 %10180, ptr %21, align 4, !tbaa !9
  %10181 = getelementptr inbounds %struct.doublecomplex, ptr %70, i32 0, i32 0
  %10182 = load double, ptr %10181, align 8, !tbaa !11
  %10183 = getelementptr inbounds %struct.doublecomplex, ptr %50, i32 0, i32 0
  %10184 = load double, ptr %10183, align 8, !tbaa !11
  %10185 = getelementptr inbounds %struct.doublecomplex, ptr %70, i32 0, i32 1
  %10186 = load double, ptr %10185, align 8, !tbaa !14
  %10187 = getelementptr inbounds %struct.doublecomplex, ptr %50, i32 0, i32 1
  %10188 = load double, ptr %10187, align 8, !tbaa !14
  %10189 = fmul double %10186, %10188
  %10190 = fneg double %10189
  %10191 = call double @llvm.fmuladd.f64(double %10182, double %10184, double %10190)
  %10192 = getelementptr inbounds %struct.doublecomplex, ptr %31, i32 0, i32 0
  store double %10191, ptr %10192, align 8, !tbaa !11
  %10193 = getelementptr inbounds %struct.doublecomplex, ptr %70, i32 0, i32 0
  %10194 = load double, ptr %10193, align 8, !tbaa !11
  %10195 = getelementptr inbounds %struct.doublecomplex, ptr %50, i32 0, i32 1
  %10196 = load double, ptr %10195, align 8, !tbaa !14
  %10197 = getelementptr inbounds %struct.doublecomplex, ptr %70, i32 0, i32 1
  %10198 = load double, ptr %10197, align 8, !tbaa !14
  %10199 = getelementptr inbounds %struct.doublecomplex, ptr %50, i32 0, i32 0
  %10200 = load double, ptr %10199, align 8, !tbaa !11
  %10201 = fmul double %10198, %10200
  %10202 = call double @llvm.fmuladd.f64(double %10194, double %10196, double %10201)
  %10203 = getelementptr inbounds %struct.doublecomplex, ptr %31, i32 0, i32 1
  store double %10202, ptr %10203, align 8, !tbaa !14
  %10204 = load ptr, ptr %14, align 8, !tbaa !5
  %10205 = load i32, ptr %21, align 4, !tbaa !9
  %10206 = sext i32 %10205 to i64
  %10207 = getelementptr inbounds %struct.doublecomplex, ptr %10204, i64 %10206
  %10208 = getelementptr inbounds %struct.doublecomplex, ptr %10207, i32 0, i32 0
  %10209 = load double, ptr %10208, align 8, !tbaa !11
  %10210 = getelementptr inbounds %struct.doublecomplex, ptr %31, i32 0, i32 0
  %10211 = load double, ptr %10210, align 8, !tbaa !11
  %10212 = fsub double %10209, %10211
  %10213 = getelementptr inbounds %struct.doublecomplex, ptr %30, i32 0, i32 0
  store double %10212, ptr %10213, align 8, !tbaa !11
  %10214 = load ptr, ptr %14, align 8, !tbaa !5
  %10215 = load i32, ptr %21, align 4, !tbaa !9
  %10216 = sext i32 %10215 to i64
  %10217 = getelementptr inbounds %struct.doublecomplex, ptr %10214, i64 %10216
  %10218 = getelementptr inbounds %struct.doublecomplex, ptr %10217, i32 0, i32 1
  %10219 = load double, ptr %10218, align 8, !tbaa !14
  %10220 = getelementptr inbounds %struct.doublecomplex, ptr %31, i32 0, i32 1
  %10221 = load double, ptr %10220, align 8, !tbaa !14
  %10222 = fsub double %10219, %10221
  %10223 = getelementptr inbounds %struct.doublecomplex, ptr %30, i32 0, i32 1
  store double %10222, ptr %10223, align 8, !tbaa !14
  %10224 = getelementptr inbounds %struct.doublecomplex, ptr %30, i32 0, i32 0
  %10225 = load double, ptr %10224, align 8, !tbaa !11
  %10226 = load ptr, ptr %14, align 8, !tbaa !5
  %10227 = load i32, ptr %20, align 4, !tbaa !9
  %10228 = sext i32 %10227 to i64
  %10229 = getelementptr inbounds %struct.doublecomplex, ptr %10226, i64 %10228
  %10230 = getelementptr inbounds %struct.doublecomplex, ptr %10229, i32 0, i32 0
  store double %10225, ptr %10230, align 8, !tbaa !11
  %10231 = getelementptr inbounds %struct.doublecomplex, ptr %30, i32 0, i32 1
  %10232 = load double, ptr %10231, align 8, !tbaa !14
  %10233 = load ptr, ptr %14, align 8, !tbaa !5
  %10234 = load i32, ptr %20, align 4, !tbaa !9
  %10235 = sext i32 %10234 to i64
  %10236 = getelementptr inbounds %struct.doublecomplex, ptr %10233, i64 %10235
  %10237 = getelementptr inbounds %struct.doublecomplex, ptr %10236, i32 0, i32 1
  store double %10232, ptr %10237, align 8, !tbaa !14
  %10238 = load i32, ptr %49, align 4, !tbaa !9
  %10239 = load i32, ptr %17, align 4, !tbaa !9
  %10240 = shl i32 %10239, 1
  %10241 = add nsw i32 %10238, %10240
  store i32 %10241, ptr %20, align 4, !tbaa !9
  %10242 = load i32, ptr %49, align 4, !tbaa !9
  %10243 = load i32, ptr %17, align 4, !tbaa !9
  %10244 = shl i32 %10243, 1
  %10245 = add nsw i32 %10242, %10244
  store i32 %10245, ptr %21, align 4, !tbaa !9
  %10246 = getelementptr inbounds %struct.doublecomplex, ptr %70, i32 0, i32 0
  %10247 = load double, ptr %10246, align 8, !tbaa !11
  %10248 = getelementptr inbounds %struct.doublecomplex, ptr %51, i32 0, i32 0
  %10249 = load double, ptr %10248, align 8, !tbaa !11
  %10250 = getelementptr inbounds %struct.doublecomplex, ptr %70, i32 0, i32 1
  %10251 = load double, ptr %10250, align 8, !tbaa !14
  %10252 = getelementptr inbounds %struct.doublecomplex, ptr %51, i32 0, i32 1
  %10253 = load double, ptr %10252, align 8, !tbaa !14
  %10254 = fmul double %10251, %10253
  %10255 = fneg double %10254
  %10256 = call double @llvm.fmuladd.f64(double %10247, double %10249, double %10255)
  %10257 = getelementptr inbounds %struct.doublecomplex, ptr %31, i32 0, i32 0
  store double %10256, ptr %10257, align 8, !tbaa !11
  %10258 = getelementptr inbounds %struct.doublecomplex, ptr %70, i32 0, i32 0
  %10259 = load double, ptr %10258, align 8, !tbaa !11
  %10260 = getelementptr inbounds %struct.doublecomplex, ptr %51, i32 0, i32 1
  %10261 = load double, ptr %10260, align 8, !tbaa !14
  %10262 = getelementptr inbounds %struct.doublecomplex, ptr %70, i32 0, i32 1
  %10263 = load double, ptr %10262, align 8, !tbaa !14
  %10264 = getelementptr inbounds %struct.doublecomplex, ptr %51, i32 0, i32 0
  %10265 = load double, ptr %10264, align 8, !tbaa !11
  %10266 = fmul double %10263, %10265
  %10267 = call double @llvm.fmuladd.f64(double %10259, double %10261, double %10266)
  %10268 = getelementptr inbounds %struct.doublecomplex, ptr %31, i32 0, i32 1
  store double %10267, ptr %10268, align 8, !tbaa !14
  %10269 = load ptr, ptr %14, align 8, !tbaa !5
  %10270 = load i32, ptr %21, align 4, !tbaa !9
  %10271 = sext i32 %10270 to i64
  %10272 = getelementptr inbounds %struct.doublecomplex, ptr %10269, i64 %10271
  %10273 = getelementptr inbounds %struct.doublecomplex, ptr %10272, i32 0, i32 0
  %10274 = load double, ptr %10273, align 8, !tbaa !11
  %10275 = getelementptr inbounds %struct.doublecomplex, ptr %31, i32 0, i32 0
  %10276 = load double, ptr %10275, align 8, !tbaa !11
  %10277 = fsub double %10274, %10276
  %10278 = getelementptr inbounds %struct.doublecomplex, ptr %30, i32 0, i32 0
  store double %10277, ptr %10278, align 8, !tbaa !11
  %10279 = load ptr, ptr %14, align 8, !tbaa !5
  %10280 = load i32, ptr %21, align 4, !tbaa !9
  %10281 = sext i32 %10280 to i64
  %10282 = getelementptr inbounds %struct.doublecomplex, ptr %10279, i64 %10281
  %10283 = getelementptr inbounds %struct.doublecomplex, ptr %10282, i32 0, i32 1
  %10284 = load double, ptr %10283, align 8, !tbaa !14
  %10285 = getelementptr inbounds %struct.doublecomplex, ptr %31, i32 0, i32 1
  %10286 = load double, ptr %10285, align 8, !tbaa !14
  %10287 = fsub double %10284, %10286
  %10288 = getelementptr inbounds %struct.doublecomplex, ptr %30, i32 0, i32 1
  store double %10287, ptr %10288, align 8, !tbaa !14
  %10289 = getelementptr inbounds %struct.doublecomplex, ptr %30, i32 0, i32 0
  %10290 = load double, ptr %10289, align 8, !tbaa !11
  %10291 = load ptr, ptr %14, align 8, !tbaa !5
  %10292 = load i32, ptr %20, align 4, !tbaa !9
  %10293 = sext i32 %10292 to i64
  %10294 = getelementptr inbounds %struct.doublecomplex, ptr %10291, i64 %10293
  %10295 = getelementptr inbounds %struct.doublecomplex, ptr %10294, i32 0, i32 0
  store double %10290, ptr %10295, align 8, !tbaa !11
  %10296 = getelementptr inbounds %struct.doublecomplex, ptr %30, i32 0, i32 1
  %10297 = load double, ptr %10296, align 8, !tbaa !14
  %10298 = load ptr, ptr %14, align 8, !tbaa !5
  %10299 = load i32, ptr %20, align 4, !tbaa !9
  %10300 = sext i32 %10299 to i64
  %10301 = getelementptr inbounds %struct.doublecomplex, ptr %10298, i64 %10300
  %10302 = getelementptr inbounds %struct.doublecomplex, ptr %10301, i32 0, i32 1
  store double %10297, ptr %10302, align 8, !tbaa !14
  br label %10303

10303:                                            ; preds = %10071
  %10304 = load i32, ptr %49, align 4, !tbaa !9
  %10305 = add nsw i32 %10304, 1
  store i32 %10305, ptr %49, align 4, !tbaa !9
  br label %10067, !llvm.loop !27

10306:                                            ; preds = %10067
  br label %19171

10307:                                            ; preds = %9790
  %10308 = load ptr, ptr %12, align 8, !tbaa !5
  %10309 = getelementptr inbounds %struct.doublecomplex, ptr %10308, i64 1
  %10310 = getelementptr inbounds %struct.doublecomplex, ptr %10309, i32 0, i32 0
  %10311 = load double, ptr %10310, align 8, !tbaa !11
  %10312 = getelementptr inbounds %struct.doublecomplex, ptr %59, i32 0, i32 0
  store double %10311, ptr %10312, align 8, !tbaa !11
  %10313 = load ptr, ptr %12, align 8, !tbaa !5
  %10314 = getelementptr inbounds %struct.doublecomplex, ptr %10313, i64 1
  %10315 = getelementptr inbounds %struct.doublecomplex, ptr %10314, i32 0, i32 1
  %10316 = load double, ptr %10315, align 8, !tbaa !14
  %10317 = getelementptr inbounds %struct.doublecomplex, ptr %59, i32 0, i32 1
  store double %10316, ptr %10317, align 8, !tbaa !14
  %10318 = call { double, double } @Cd(ptr noundef %59)
  %10319 = extractvalue { double, double } %10318, 0
  %10320 = extractvalue { double, double } %10318, 1
  %10321 = fneg double %10320
  %10322 = call ptr @_pCd(ptr noundef %31)
  %10323 = getelementptr inbounds { double, double }, ptr %10322, i32 0, i32 0
  %10324 = getelementptr inbounds { double, double }, ptr %10322, i32 0, i32 1
  store double %10319, ptr %10323, align 8
  store double %10321, ptr %10324, align 8
  %10325 = load ptr, ptr %13, align 8, !tbaa !5
  %10326 = getelementptr inbounds %struct.doublecomplex, ptr %10325, i32 0, i32 0
  %10327 = load double, ptr %10326, align 8, !tbaa !11
  %10328 = getelementptr inbounds %struct.doublecomplex, ptr %31, i32 0, i32 0
  %10329 = load double, ptr %10328, align 8, !tbaa !11
  %10330 = load ptr, ptr %13, align 8, !tbaa !5
  %10331 = getelementptr inbounds %struct.doublecomplex, ptr %10330, i32 0, i32 1
  %10332 = load double, ptr %10331, align 8, !tbaa !14
  %10333 = getelementptr inbounds %struct.doublecomplex, ptr %31, i32 0, i32 1
  %10334 = load double, ptr %10333, align 8, !tbaa !14
  %10335 = fmul double %10332, %10334
  %10336 = fneg double %10335
  %10337 = call double @llvm.fmuladd.f64(double %10327, double %10329, double %10336)
  %10338 = getelementptr inbounds %struct.doublecomplex, ptr %30, i32 0, i32 0
  store double %10337, ptr %10338, align 8, !tbaa !11
  %10339 = load ptr, ptr %13, align 8, !tbaa !5
  %10340 = getelementptr inbounds %struct.doublecomplex, ptr %10339, i32 0, i32 0
  %10341 = load double, ptr %10340, align 8, !tbaa !11
  %10342 = getelementptr inbounds %struct.doublecomplex, ptr %31, i32 0, i32 1
  %10343 = load double, ptr %10342, align 8, !tbaa !14
  %10344 = load ptr, ptr %13, align 8, !tbaa !5
  %10345 = getelementptr inbounds %struct.doublecomplex, ptr %10344, i32 0, i32 1
  %10346 = load double, ptr %10345, align 8, !tbaa !14
  %10347 = getelementptr inbounds %struct.doublecomplex, ptr %31, i32 0, i32 0
  %10348 = load double, ptr %10347, align 8, !tbaa !11
  %10349 = fmul double %10346, %10348
  %10350 = call double @llvm.fmuladd.f64(double %10341, double %10343, double %10349)
  %10351 = getelementptr inbounds %struct.doublecomplex, ptr %30, i32 0, i32 1
  store double %10350, ptr %10351, align 8, !tbaa !14
  %10352 = getelementptr inbounds %struct.doublecomplex, ptr %30, i32 0, i32 0
  %10353 = load double, ptr %10352, align 8, !tbaa !11
  %10354 = getelementptr inbounds %struct.doublecomplex, ptr %50, i32 0, i32 0
  store double %10353, ptr %10354, align 8, !tbaa !11
  %10355 = getelementptr inbounds %struct.doublecomplex, ptr %30, i32 0, i32 1
  %10356 = load double, ptr %10355, align 8, !tbaa !14
  %10357 = getelementptr inbounds %struct.doublecomplex, ptr %50, i32 0, i32 1
  store double %10356, ptr %10357, align 8, !tbaa !14
  %10358 = load ptr, ptr %12, align 8, !tbaa !5
  %10359 = getelementptr inbounds %struct.doublecomplex, ptr %10358, i64 2
  %10360 = getelementptr inbounds %struct.doublecomplex, ptr %10359, i32 0, i32 0
  %10361 = load double, ptr %10360, align 8, !tbaa !11
  %10362 = getelementptr inbounds %struct.doublecomplex, ptr %60, i32 0, i32 0
  store double %10361, ptr %10362, align 8, !tbaa !11
  %10363 = load ptr, ptr %12, align 8, !tbaa !5
  %10364 = getelementptr inbounds %struct.doublecomplex, ptr %10363, i64 2
  %10365 = getelementptr inbounds %struct.doublecomplex, ptr %10364, i32 0, i32 1
  %10366 = load double, ptr %10365, align 8, !tbaa !14
  %10367 = getelementptr inbounds %struct.doublecomplex, ptr %60, i32 0, i32 1
  store double %10366, ptr %10367, align 8, !tbaa !14
  %10368 = call { double, double } @Cd(ptr noundef %60)
  %10369 = extractvalue { double, double } %10368, 0
  %10370 = extractvalue { double, double } %10368, 1
  %10371 = fneg double %10370
  %10372 = call ptr @_pCd(ptr noundef %31)
  %10373 = getelementptr inbounds { double, double }, ptr %10372, i32 0, i32 0
  %10374 = getelementptr inbounds { double, double }, ptr %10372, i32 0, i32 1
  store double %10369, ptr %10373, align 8
  store double %10371, ptr %10374, align 8
  %10375 = load ptr, ptr %13, align 8, !tbaa !5
  %10376 = getelementptr inbounds %struct.doublecomplex, ptr %10375, i32 0, i32 0
  %10377 = load double, ptr %10376, align 8, !tbaa !11
  %10378 = getelementptr inbounds %struct.doublecomplex, ptr %31, i32 0, i32 0
  %10379 = load double, ptr %10378, align 8, !tbaa !11
  %10380 = load ptr, ptr %13, align 8, !tbaa !5
  %10381 = getelementptr inbounds %struct.doublecomplex, ptr %10380, i32 0, i32 1
  %10382 = load double, ptr %10381, align 8, !tbaa !14
  %10383 = getelementptr inbounds %struct.doublecomplex, ptr %31, i32 0, i32 1
  %10384 = load double, ptr %10383, align 8, !tbaa !14
  %10385 = fmul double %10382, %10384
  %10386 = fneg double %10385
  %10387 = call double @llvm.fmuladd.f64(double %10377, double %10379, double %10386)
  %10388 = getelementptr inbounds %struct.doublecomplex, ptr %30, i32 0, i32 0
  store double %10387, ptr %10388, align 8, !tbaa !11
  %10389 = load ptr, ptr %13, align 8, !tbaa !5
  %10390 = getelementptr inbounds %struct.doublecomplex, ptr %10389, i32 0, i32 0
  %10391 = load double, ptr %10390, align 8, !tbaa !11
  %10392 = getelementptr inbounds %struct.doublecomplex, ptr %31, i32 0, i32 1
  %10393 = load double, ptr %10392, align 8, !tbaa !14
  %10394 = load ptr, ptr %13, align 8, !tbaa !5
  %10395 = getelementptr inbounds %struct.doublecomplex, ptr %10394, i32 0, i32 1
  %10396 = load double, ptr %10395, align 8, !tbaa !14
  %10397 = getelementptr inbounds %struct.doublecomplex, ptr %31, i32 0, i32 0
  %10398 = load double, ptr %10397, align 8, !tbaa !11
  %10399 = fmul double %10396, %10398
  %10400 = call double @llvm.fmuladd.f64(double %10391, double %10393, double %10399)
  %10401 = getelementptr inbounds %struct.doublecomplex, ptr %30, i32 0, i32 1
  store double %10400, ptr %10401, align 8, !tbaa !14
  %10402 = getelementptr inbounds %struct.doublecomplex, ptr %30, i32 0, i32 0
  %10403 = load double, ptr %10402, align 8, !tbaa !11
  %10404 = getelementptr inbounds %struct.doublecomplex, ptr %51, i32 0, i32 0
  store double %10403, ptr %10404, align 8, !tbaa !11
  %10405 = getelementptr inbounds %struct.doublecomplex, ptr %30, i32 0, i32 1
  %10406 = load double, ptr %10405, align 8, !tbaa !14
  %10407 = getelementptr inbounds %struct.doublecomplex, ptr %51, i32 0, i32 1
  store double %10406, ptr %10407, align 8, !tbaa !14
  %10408 = load ptr, ptr %12, align 8, !tbaa !5
  %10409 = getelementptr inbounds %struct.doublecomplex, ptr %10408, i64 3
  %10410 = getelementptr inbounds %struct.doublecomplex, ptr %10409, i32 0, i32 0
  %10411 = load double, ptr %10410, align 8, !tbaa !11
  %10412 = getelementptr inbounds %struct.doublecomplex, ptr %61, i32 0, i32 0
  store double %10411, ptr %10412, align 8, !tbaa !11
  %10413 = load ptr, ptr %12, align 8, !tbaa !5
  %10414 = getelementptr inbounds %struct.doublecomplex, ptr %10413, i64 3
  %10415 = getelementptr inbounds %struct.doublecomplex, ptr %10414, i32 0, i32 1
  %10416 = load double, ptr %10415, align 8, !tbaa !14
  %10417 = getelementptr inbounds %struct.doublecomplex, ptr %61, i32 0, i32 1
  store double %10416, ptr %10417, align 8, !tbaa !14
  %10418 = call { double, double } @Cd(ptr noundef %61)
  %10419 = extractvalue { double, double } %10418, 0
  %10420 = extractvalue { double, double } %10418, 1
  %10421 = fneg double %10420
  %10422 = call ptr @_pCd(ptr noundef %31)
  %10423 = getelementptr inbounds { double, double }, ptr %10422, i32 0, i32 0
  %10424 = getelementptr inbounds { double, double }, ptr %10422, i32 0, i32 1
  store double %10419, ptr %10423, align 8
  store double %10421, ptr %10424, align 8
  %10425 = load ptr, ptr %13, align 8, !tbaa !5
  %10426 = getelementptr inbounds %struct.doublecomplex, ptr %10425, i32 0, i32 0
  %10427 = load double, ptr %10426, align 8, !tbaa !11
  %10428 = getelementptr inbounds %struct.doublecomplex, ptr %31, i32 0, i32 0
  %10429 = load double, ptr %10428, align 8, !tbaa !11
  %10430 = load ptr, ptr %13, align 8, !tbaa !5
  %10431 = getelementptr inbounds %struct.doublecomplex, ptr %10430, i32 0, i32 1
  %10432 = load double, ptr %10431, align 8, !tbaa !14
  %10433 = getelementptr inbounds %struct.doublecomplex, ptr %31, i32 0, i32 1
  %10434 = load double, ptr %10433, align 8, !tbaa !14
  %10435 = fmul double %10432, %10434
  %10436 = fneg double %10435
  %10437 = call double @llvm.fmuladd.f64(double %10427, double %10429, double %10436)
  %10438 = getelementptr inbounds %struct.doublecomplex, ptr %30, i32 0, i32 0
  store double %10437, ptr %10438, align 8, !tbaa !11
  %10439 = load ptr, ptr %13, align 8, !tbaa !5
  %10440 = getelementptr inbounds %struct.doublecomplex, ptr %10439, i32 0, i32 0
  %10441 = load double, ptr %10440, align 8, !tbaa !11
  %10442 = getelementptr inbounds %struct.doublecomplex, ptr %31, i32 0, i32 1
  %10443 = load double, ptr %10442, align 8, !tbaa !14
  %10444 = load ptr, ptr %13, align 8, !tbaa !5
  %10445 = getelementptr inbounds %struct.doublecomplex, ptr %10444, i32 0, i32 1
  %10446 = load double, ptr %10445, align 8, !tbaa !14
  %10447 = getelementptr inbounds %struct.doublecomplex, ptr %31, i32 0, i32 0
  %10448 = load double, ptr %10447, align 8, !tbaa !11
  %10449 = fmul double %10446, %10448
  %10450 = call double @llvm.fmuladd.f64(double %10441, double %10443, double %10449)
  %10451 = getelementptr inbounds %struct.doublecomplex, ptr %30, i32 0, i32 1
  store double %10450, ptr %10451, align 8, !tbaa !14
  %10452 = getelementptr inbounds %struct.doublecomplex, ptr %30, i32 0, i32 0
  %10453 = load double, ptr %10452, align 8, !tbaa !11
  %10454 = getelementptr inbounds %struct.doublecomplex, ptr %52, i32 0, i32 0
  store double %10453, ptr %10454, align 8, !tbaa !11
  %10455 = getelementptr inbounds %struct.doublecomplex, ptr %30, i32 0, i32 1
  %10456 = load double, ptr %10455, align 8, !tbaa !14
  %10457 = getelementptr inbounds %struct.doublecomplex, ptr %52, i32 0, i32 1
  store double %10456, ptr %10457, align 8, !tbaa !14
  %10458 = load ptr, ptr %10, align 8, !tbaa !5
  %10459 = load i32, ptr %10458, align 4, !tbaa !9
  store i32 %10459, ptr %19, align 4, !tbaa !9
  store i32 1, ptr %49, align 4, !tbaa !9
  br label %10460

10460:                                            ; preds = %10816, %10307
  %10461 = load i32, ptr %49, align 4, !tbaa !9
  %10462 = load i32, ptr %19, align 4, !tbaa !9
  %10463 = icmp sle i32 %10461, %10462
  br i1 %10463, label %10464, label %10819

10464:                                            ; preds = %10460
  %10465 = load i32, ptr %49, align 4, !tbaa !9
  %10466 = load i32, ptr %17, align 4, !tbaa !9
  %10467 = add nsw i32 %10465, %10466
  store i32 %10467, ptr %20, align 4, !tbaa !9
  %10468 = getelementptr inbounds %struct.doublecomplex, ptr %59, i32 0, i32 0
  %10469 = load double, ptr %10468, align 8, !tbaa !11
  %10470 = load ptr, ptr %14, align 8, !tbaa !5
  %10471 = load i32, ptr %20, align 4, !tbaa !9
  %10472 = sext i32 %10471 to i64
  %10473 = getelementptr inbounds %struct.doublecomplex, ptr %10470, i64 %10472
  %10474 = getelementptr inbounds %struct.doublecomplex, ptr %10473, i32 0, i32 0
  %10475 = load double, ptr %10474, align 8, !tbaa !11
  %10476 = getelementptr inbounds %struct.doublecomplex, ptr %59, i32 0, i32 1
  %10477 = load double, ptr %10476, align 8, !tbaa !14
  %10478 = load ptr, ptr %14, align 8, !tbaa !5
  %10479 = load i32, ptr %20, align 4, !tbaa !9
  %10480 = sext i32 %10479 to i64
  %10481 = getelementptr inbounds %struct.doublecomplex, ptr %10478, i64 %10480
  %10482 = getelementptr inbounds %struct.doublecomplex, ptr %10481, i32 0, i32 1
  %10483 = load double, ptr %10482, align 8, !tbaa !14
  %10484 = fmul double %10477, %10483
  %10485 = fneg double %10484
  %10486 = call double @llvm.fmuladd.f64(double %10469, double %10475, double %10485)
  %10487 = getelementptr inbounds %struct.doublecomplex, ptr %32, i32 0, i32 0
  store double %10486, ptr %10487, align 8, !tbaa !11
  %10488 = getelementptr inbounds %struct.doublecomplex, ptr %59, i32 0, i32 0
  %10489 = load double, ptr %10488, align 8, !tbaa !11
  %10490 = load ptr, ptr %14, align 8, !tbaa !5
  %10491 = load i32, ptr %20, align 4, !tbaa !9
  %10492 = sext i32 %10491 to i64
  %10493 = getelementptr inbounds %struct.doublecomplex, ptr %10490, i64 %10492
  %10494 = getelementptr inbounds %struct.doublecomplex, ptr %10493, i32 0, i32 1
  %10495 = load double, ptr %10494, align 8, !tbaa !14
  %10496 = getelementptr inbounds %struct.doublecomplex, ptr %59, i32 0, i32 1
  %10497 = load double, ptr %10496, align 8, !tbaa !14
  %10498 = load ptr, ptr %14, align 8, !tbaa !5
  %10499 = load i32, ptr %20, align 4, !tbaa !9
  %10500 = sext i32 %10499 to i64
  %10501 = getelementptr inbounds %struct.doublecomplex, ptr %10498, i64 %10500
  %10502 = getelementptr inbounds %struct.doublecomplex, ptr %10501, i32 0, i32 0
  %10503 = load double, ptr %10502, align 8, !tbaa !11
  %10504 = fmul double %10497, %10503
  %10505 = call double @llvm.fmuladd.f64(double %10489, double %10495, double %10504)
  %10506 = getelementptr inbounds %struct.doublecomplex, ptr %32, i32 0, i32 1
  store double %10505, ptr %10506, align 8, !tbaa !14
  %10507 = load i32, ptr %49, align 4, !tbaa !9
  %10508 = load i32, ptr %17, align 4, !tbaa !9
  %10509 = shl i32 %10508, 1
  %10510 = add nsw i32 %10507, %10509
  store i32 %10510, ptr %21, align 4, !tbaa !9
  %10511 = getelementptr inbounds %struct.doublecomplex, ptr %60, i32 0, i32 0
  %10512 = load double, ptr %10511, align 8, !tbaa !11
  %10513 = load ptr, ptr %14, align 8, !tbaa !5
  %10514 = load i32, ptr %21, align 4, !tbaa !9
  %10515 = sext i32 %10514 to i64
  %10516 = getelementptr inbounds %struct.doublecomplex, ptr %10513, i64 %10515
  %10517 = getelementptr inbounds %struct.doublecomplex, ptr %10516, i32 0, i32 0
  %10518 = load double, ptr %10517, align 8, !tbaa !11
  %10519 = getelementptr inbounds %struct.doublecomplex, ptr %60, i32 0, i32 1
  %10520 = load double, ptr %10519, align 8, !tbaa !14
  %10521 = load ptr, ptr %14, align 8, !tbaa !5
  %10522 = load i32, ptr %21, align 4, !tbaa !9
  %10523 = sext i32 %10522 to i64
  %10524 = getelementptr inbounds %struct.doublecomplex, ptr %10521, i64 %10523
  %10525 = getelementptr inbounds %struct.doublecomplex, ptr %10524, i32 0, i32 1
  %10526 = load double, ptr %10525, align 8, !tbaa !14
  %10527 = fmul double %10520, %10526
  %10528 = fneg double %10527
  %10529 = call double @llvm.fmuladd.f64(double %10512, double %10518, double %10528)
  %10530 = getelementptr inbounds %struct.doublecomplex, ptr %33, i32 0, i32 0
  store double %10529, ptr %10530, align 8, !tbaa !11
  %10531 = getelementptr inbounds %struct.doublecomplex, ptr %60, i32 0, i32 0
  %10532 = load double, ptr %10531, align 8, !tbaa !11
  %10533 = load ptr, ptr %14, align 8, !tbaa !5
  %10534 = load i32, ptr %21, align 4, !tbaa !9
  %10535 = sext i32 %10534 to i64
  %10536 = getelementptr inbounds %struct.doublecomplex, ptr %10533, i64 %10535
  %10537 = getelementptr inbounds %struct.doublecomplex, ptr %10536, i32 0, i32 1
  %10538 = load double, ptr %10537, align 8, !tbaa !14
  %10539 = getelementptr inbounds %struct.doublecomplex, ptr %60, i32 0, i32 1
  %10540 = load double, ptr %10539, align 8, !tbaa !14
  %10541 = load ptr, ptr %14, align 8, !tbaa !5
  %10542 = load i32, ptr %21, align 4, !tbaa !9
  %10543 = sext i32 %10542 to i64
  %10544 = getelementptr inbounds %struct.doublecomplex, ptr %10541, i64 %10543
  %10545 = getelementptr inbounds %struct.doublecomplex, ptr %10544, i32 0, i32 0
  %10546 = load double, ptr %10545, align 8, !tbaa !11
  %10547 = fmul double %10540, %10546
  %10548 = call double @llvm.fmuladd.f64(double %10532, double %10538, double %10547)
  %10549 = getelementptr inbounds %struct.doublecomplex, ptr %33, i32 0, i32 1
  store double %10548, ptr %10549, align 8, !tbaa !14
  %10550 = getelementptr inbounds %struct.doublecomplex, ptr %32, i32 0, i32 0
  %10551 = load double, ptr %10550, align 8, !tbaa !11
  %10552 = getelementptr inbounds %struct.doublecomplex, ptr %33, i32 0, i32 0
  %10553 = load double, ptr %10552, align 8, !tbaa !11
  %10554 = fadd double %10551, %10553
  %10555 = getelementptr inbounds %struct.doublecomplex, ptr %31, i32 0, i32 0
  store double %10554, ptr %10555, align 8, !tbaa !11
  %10556 = getelementptr inbounds %struct.doublecomplex, ptr %32, i32 0, i32 1
  %10557 = load double, ptr %10556, align 8, !tbaa !14
  %10558 = getelementptr inbounds %struct.doublecomplex, ptr %33, i32 0, i32 1
  %10559 = load double, ptr %10558, align 8, !tbaa !14
  %10560 = fadd double %10557, %10559
  %10561 = getelementptr inbounds %struct.doublecomplex, ptr %31, i32 0, i32 1
  store double %10560, ptr %10561, align 8, !tbaa !14
  %10562 = load i32, ptr %49, align 4, !tbaa !9
  %10563 = load i32, ptr %17, align 4, !tbaa !9
  %10564 = mul nsw i32 %10563, 3
  %10565 = add nsw i32 %10562, %10564
  store i32 %10565, ptr %22, align 4, !tbaa !9
  %10566 = getelementptr inbounds %struct.doublecomplex, ptr %61, i32 0, i32 0
  %10567 = load double, ptr %10566, align 8, !tbaa !11
  %10568 = load ptr, ptr %14, align 8, !tbaa !5
  %10569 = load i32, ptr %22, align 4, !tbaa !9
  %10570 = sext i32 %10569 to i64
  %10571 = getelementptr inbounds %struct.doublecomplex, ptr %10568, i64 %10570
  %10572 = getelementptr inbounds %struct.doublecomplex, ptr %10571, i32 0, i32 0
  %10573 = load double, ptr %10572, align 8, !tbaa !11
  %10574 = getelementptr inbounds %struct.doublecomplex, ptr %61, i32 0, i32 1
  %10575 = load double, ptr %10574, align 8, !tbaa !14
  %10576 = load ptr, ptr %14, align 8, !tbaa !5
  %10577 = load i32, ptr %22, align 4, !tbaa !9
  %10578 = sext i32 %10577 to i64
  %10579 = getelementptr inbounds %struct.doublecomplex, ptr %10576, i64 %10578
  %10580 = getelementptr inbounds %struct.doublecomplex, ptr %10579, i32 0, i32 1
  %10581 = load double, ptr %10580, align 8, !tbaa !14
  %10582 = fmul double %10575, %10581
  %10583 = fneg double %10582
  %10584 = call double @llvm.fmuladd.f64(double %10567, double %10573, double %10583)
  %10585 = getelementptr inbounds %struct.doublecomplex, ptr %34, i32 0, i32 0
  store double %10584, ptr %10585, align 8, !tbaa !11
  %10586 = getelementptr inbounds %struct.doublecomplex, ptr %61, i32 0, i32 0
  %10587 = load double, ptr %10586, align 8, !tbaa !11
  %10588 = load ptr, ptr %14, align 8, !tbaa !5
  %10589 = load i32, ptr %22, align 4, !tbaa !9
  %10590 = sext i32 %10589 to i64
  %10591 = getelementptr inbounds %struct.doublecomplex, ptr %10588, i64 %10590
  %10592 = getelementptr inbounds %struct.doublecomplex, ptr %10591, i32 0, i32 1
  %10593 = load double, ptr %10592, align 8, !tbaa !14
  %10594 = getelementptr inbounds %struct.doublecomplex, ptr %61, i32 0, i32 1
  %10595 = load double, ptr %10594, align 8, !tbaa !14
  %10596 = load ptr, ptr %14, align 8, !tbaa !5
  %10597 = load i32, ptr %22, align 4, !tbaa !9
  %10598 = sext i32 %10597 to i64
  %10599 = getelementptr inbounds %struct.doublecomplex, ptr %10596, i64 %10598
  %10600 = getelementptr inbounds %struct.doublecomplex, ptr %10599, i32 0, i32 0
  %10601 = load double, ptr %10600, align 8, !tbaa !11
  %10602 = fmul double %10595, %10601
  %10603 = call double @llvm.fmuladd.f64(double %10587, double %10593, double %10602)
  %10604 = getelementptr inbounds %struct.doublecomplex, ptr %34, i32 0, i32 1
  store double %10603, ptr %10604, align 8, !tbaa !14
  %10605 = getelementptr inbounds %struct.doublecomplex, ptr %31, i32 0, i32 0
  %10606 = load double, ptr %10605, align 8, !tbaa !11
  %10607 = getelementptr inbounds %struct.doublecomplex, ptr %34, i32 0, i32 0
  %10608 = load double, ptr %10607, align 8, !tbaa !11
  %10609 = fadd double %10606, %10608
  %10610 = getelementptr inbounds %struct.doublecomplex, ptr %30, i32 0, i32 0
  store double %10609, ptr %10610, align 8, !tbaa !11
  %10611 = getelementptr inbounds %struct.doublecomplex, ptr %31, i32 0, i32 1
  %10612 = load double, ptr %10611, align 8, !tbaa !14
  %10613 = getelementptr inbounds %struct.doublecomplex, ptr %34, i32 0, i32 1
  %10614 = load double, ptr %10613, align 8, !tbaa !14
  %10615 = fadd double %10612, %10614
  %10616 = getelementptr inbounds %struct.doublecomplex, ptr %30, i32 0, i32 1
  store double %10615, ptr %10616, align 8, !tbaa !14
  %10617 = getelementptr inbounds %struct.doublecomplex, ptr %30, i32 0, i32 0
  %10618 = load double, ptr %10617, align 8, !tbaa !11
  %10619 = getelementptr inbounds %struct.doublecomplex, ptr %70, i32 0, i32 0
  store double %10618, ptr %10619, align 8, !tbaa !11
  %10620 = getelementptr inbounds %struct.doublecomplex, ptr %30, i32 0, i32 1
  %10621 = load double, ptr %10620, align 8, !tbaa !14
  %10622 = getelementptr inbounds %struct.doublecomplex, ptr %70, i32 0, i32 1
  store double %10621, ptr %10622, align 8, !tbaa !14
  %10623 = load i32, ptr %49, align 4, !tbaa !9
  %10624 = load i32, ptr %17, align 4, !tbaa !9
  %10625 = add nsw i32 %10623, %10624
  store i32 %10625, ptr %20, align 4, !tbaa !9
  %10626 = load i32, ptr %49, align 4, !tbaa !9
  %10627 = load i32, ptr %17, align 4, !tbaa !9
  %10628 = add nsw i32 %10626, %10627
  store i32 %10628, ptr %21, align 4, !tbaa !9
  %10629 = getelementptr inbounds %struct.doublecomplex, ptr %70, i32 0, i32 0
  %10630 = load double, ptr %10629, align 8, !tbaa !11
  %10631 = getelementptr inbounds %struct.doublecomplex, ptr %50, i32 0, i32 0
  %10632 = load double, ptr %10631, align 8, !tbaa !11
  %10633 = getelementptr inbounds %struct.doublecomplex, ptr %70, i32 0, i32 1
  %10634 = load double, ptr %10633, align 8, !tbaa !14
  %10635 = getelementptr inbounds %struct.doublecomplex, ptr %50, i32 0, i32 1
  %10636 = load double, ptr %10635, align 8, !tbaa !14
  %10637 = fmul double %10634, %10636
  %10638 = fneg double %10637
  %10639 = call double @llvm.fmuladd.f64(double %10630, double %10632, double %10638)
  %10640 = getelementptr inbounds %struct.doublecomplex, ptr %31, i32 0, i32 0
  store double %10639, ptr %10640, align 8, !tbaa !11
  %10641 = getelementptr inbounds %struct.doublecomplex, ptr %70, i32 0, i32 0
  %10642 = load double, ptr %10641, align 8, !tbaa !11
  %10643 = getelementptr inbounds %struct.doublecomplex, ptr %50, i32 0, i32 1
  %10644 = load double, ptr %10643, align 8, !tbaa !14
  %10645 = getelementptr inbounds %struct.doublecomplex, ptr %70, i32 0, i32 1
  %10646 = load double, ptr %10645, align 8, !tbaa !14
  %10647 = getelementptr inbounds %struct.doublecomplex, ptr %50, i32 0, i32 0
  %10648 = load double, ptr %10647, align 8, !tbaa !11
  %10649 = fmul double %10646, %10648
  %10650 = call double @llvm.fmuladd.f64(double %10642, double %10644, double %10649)
  %10651 = getelementptr inbounds %struct.doublecomplex, ptr %31, i32 0, i32 1
  store double %10650, ptr %10651, align 8, !tbaa !14
  %10652 = load ptr, ptr %14, align 8, !tbaa !5
  %10653 = load i32, ptr %21, align 4, !tbaa !9
  %10654 = sext i32 %10653 to i64
  %10655 = getelementptr inbounds %struct.doublecomplex, ptr %10652, i64 %10654
  %10656 = getelementptr inbounds %struct.doublecomplex, ptr %10655, i32 0, i32 0
  %10657 = load double, ptr %10656, align 8, !tbaa !11
  %10658 = getelementptr inbounds %struct.doublecomplex, ptr %31, i32 0, i32 0
  %10659 = load double, ptr %10658, align 8, !tbaa !11
  %10660 = fsub double %10657, %10659
  %10661 = getelementptr inbounds %struct.doublecomplex, ptr %30, i32 0, i32 0
  store double %10660, ptr %10661, align 8, !tbaa !11
  %10662 = load ptr, ptr %14, align 8, !tbaa !5
  %10663 = load i32, ptr %21, align 4, !tbaa !9
  %10664 = sext i32 %10663 to i64
  %10665 = getelementptr inbounds %struct.doublecomplex, ptr %10662, i64 %10664
  %10666 = getelementptr inbounds %struct.doublecomplex, ptr %10665, i32 0, i32 1
  %10667 = load double, ptr %10666, align 8, !tbaa !14
  %10668 = getelementptr inbounds %struct.doublecomplex, ptr %31, i32 0, i32 1
  %10669 = load double, ptr %10668, align 8, !tbaa !14
  %10670 = fsub double %10667, %10669
  %10671 = getelementptr inbounds %struct.doublecomplex, ptr %30, i32 0, i32 1
  store double %10670, ptr %10671, align 8, !tbaa !14
  %10672 = getelementptr inbounds %struct.doublecomplex, ptr %30, i32 0, i32 0
  %10673 = load double, ptr %10672, align 8, !tbaa !11
  %10674 = load ptr, ptr %14, align 8, !tbaa !5
  %10675 = load i32, ptr %20, align 4, !tbaa !9
  %10676 = sext i32 %10675 to i64
  %10677 = getelementptr inbounds %struct.doublecomplex, ptr %10674, i64 %10676
  %10678 = getelementptr inbounds %struct.doublecomplex, ptr %10677, i32 0, i32 0
  store double %10673, ptr %10678, align 8, !tbaa !11
  %10679 = getelementptr inbounds %struct.doublecomplex, ptr %30, i32 0, i32 1
  %10680 = load double, ptr %10679, align 8, !tbaa !14
  %10681 = load ptr, ptr %14, align 8, !tbaa !5
  %10682 = load i32, ptr %20, align 4, !tbaa !9
  %10683 = sext i32 %10682 to i64
  %10684 = getelementptr inbounds %struct.doublecomplex, ptr %10681, i64 %10683
  %10685 = getelementptr inbounds %struct.doublecomplex, ptr %10684, i32 0, i32 1
  store double %10680, ptr %10685, align 8, !tbaa !14
  %10686 = load i32, ptr %49, align 4, !tbaa !9
  %10687 = load i32, ptr %17, align 4, !tbaa !9
  %10688 = shl i32 %10687, 1
  %10689 = add nsw i32 %10686, %10688
  store i32 %10689, ptr %20, align 4, !tbaa !9
  %10690 = load i32, ptr %49, align 4, !tbaa !9
  %10691 = load i32, ptr %17, align 4, !tbaa !9
  %10692 = shl i32 %10691, 1
  %10693 = add nsw i32 %10690, %10692
  store i32 %10693, ptr %21, align 4, !tbaa !9
  %10694 = getelementptr inbounds %struct.doublecomplex, ptr %70, i32 0, i32 0
  %10695 = load double, ptr %10694, align 8, !tbaa !11
  %10696 = getelementptr inbounds %struct.doublecomplex, ptr %51, i32 0, i32 0
  %10697 = load double, ptr %10696, align 8, !tbaa !11
  %10698 = getelementptr inbounds %struct.doublecomplex, ptr %70, i32 0, i32 1
  %10699 = load double, ptr %10698, align 8, !tbaa !14
  %10700 = getelementptr inbounds %struct.doublecomplex, ptr %51, i32 0, i32 1
  %10701 = load double, ptr %10700, align 8, !tbaa !14
  %10702 = fmul double %10699, %10701
  %10703 = fneg double %10702
  %10704 = call double @llvm.fmuladd.f64(double %10695, double %10697, double %10703)
  %10705 = getelementptr inbounds %struct.doublecomplex, ptr %31, i32 0, i32 0
  store double %10704, ptr %10705, align 8, !tbaa !11
  %10706 = getelementptr inbounds %struct.doublecomplex, ptr %70, i32 0, i32 0
  %10707 = load double, ptr %10706, align 8, !tbaa !11
  %10708 = getelementptr inbounds %struct.doublecomplex, ptr %51, i32 0, i32 1
  %10709 = load double, ptr %10708, align 8, !tbaa !14
  %10710 = getelementptr inbounds %struct.doublecomplex, ptr %70, i32 0, i32 1
  %10711 = load double, ptr %10710, align 8, !tbaa !14
  %10712 = getelementptr inbounds %struct.doublecomplex, ptr %51, i32 0, i32 0
  %10713 = load double, ptr %10712, align 8, !tbaa !11
  %10714 = fmul double %10711, %10713
  %10715 = call double @llvm.fmuladd.f64(double %10707, double %10709, double %10714)
  %10716 = getelementptr inbounds %struct.doublecomplex, ptr %31, i32 0, i32 1
  store double %10715, ptr %10716, align 8, !tbaa !14
  %10717 = load ptr, ptr %14, align 8, !tbaa !5
  %10718 = load i32, ptr %21, align 4, !tbaa !9
  %10719 = sext i32 %10718 to i64
  %10720 = getelementptr inbounds %struct.doublecomplex, ptr %10717, i64 %10719
  %10721 = getelementptr inbounds %struct.doublecomplex, ptr %10720, i32 0, i32 0
  %10722 = load double, ptr %10721, align 8, !tbaa !11
  %10723 = getelementptr inbounds %struct.doublecomplex, ptr %31, i32 0, i32 0
  %10724 = load double, ptr %10723, align 8, !tbaa !11
  %10725 = fsub double %10722, %10724
  %10726 = getelementptr inbounds %struct.doublecomplex, ptr %30, i32 0, i32 0
  store double %10725, ptr %10726, align 8, !tbaa !11
  %10727 = load ptr, ptr %14, align 8, !tbaa !5
  %10728 = load i32, ptr %21, align 4, !tbaa !9
  %10729 = sext i32 %10728 to i64
  %10730 = getelementptr inbounds %struct.doublecomplex, ptr %10727, i64 %10729
  %10731 = getelementptr inbounds %struct.doublecomplex, ptr %10730, i32 0, i32 1
  %10732 = load double, ptr %10731, align 8, !tbaa !14
  %10733 = getelementptr inbounds %struct.doublecomplex, ptr %31, i32 0, i32 1
  %10734 = load double, ptr %10733, align 8, !tbaa !14
  %10735 = fsub double %10732, %10734
  %10736 = getelementptr inbounds %struct.doublecomplex, ptr %30, i32 0, i32 1
  store double %10735, ptr %10736, align 8, !tbaa !14
  %10737 = getelementptr inbounds %struct.doublecomplex, ptr %30, i32 0, i32 0
  %10738 = load double, ptr %10737, align 8, !tbaa !11
  %10739 = load ptr, ptr %14, align 8, !tbaa !5
  %10740 = load i32, ptr %20, align 4, !tbaa !9
  %10741 = sext i32 %10740 to i64
  %10742 = getelementptr inbounds %struct.doublecomplex, ptr %10739, i64 %10741
  %10743 = getelementptr inbounds %struct.doublecomplex, ptr %10742, i32 0, i32 0
  store double %10738, ptr %10743, align 8, !tbaa !11
  %10744 = getelementptr inbounds %struct.doublecomplex, ptr %30, i32 0, i32 1
  %10745 = load double, ptr %10744, align 8, !tbaa !14
  %10746 = load ptr, ptr %14, align 8, !tbaa !5
  %10747 = load i32, ptr %20, align 4, !tbaa !9
  %10748 = sext i32 %10747 to i64
  %10749 = getelementptr inbounds %struct.doublecomplex, ptr %10746, i64 %10748
  %10750 = getelementptr inbounds %struct.doublecomplex, ptr %10749, i32 0, i32 1
  store double %10745, ptr %10750, align 8, !tbaa !14
  %10751 = load i32, ptr %49, align 4, !tbaa !9
  %10752 = load i32, ptr %17, align 4, !tbaa !9
  %10753 = mul nsw i32 %10752, 3
  %10754 = add nsw i32 %10751, %10753
  store i32 %10754, ptr %20, align 4, !tbaa !9
  %10755 = load i32, ptr %49, align 4, !tbaa !9
  %10756 = load i32, ptr %17, align 4, !tbaa !9
  %10757 = mul nsw i32 %10756, 3
  %10758 = add nsw i32 %10755, %10757
  store i32 %10758, ptr %21, align 4, !tbaa !9
  %10759 = getelementptr inbounds %struct.doublecomplex, ptr %70, i32 0, i32 0
  %10760 = load double, ptr %10759, align 8, !tbaa !11
  %10761 = getelementptr inbounds %struct.doublecomplex, ptr %52, i32 0, i32 0
  %10762 = load double, ptr %10761, align 8, !tbaa !11
  %10763 = getelementptr inbounds %struct.doublecomplex, ptr %70, i32 0, i32 1
  %10764 = load double, ptr %10763, align 8, !tbaa !14
  %10765 = getelementptr inbounds %struct.doublecomplex, ptr %52, i32 0, i32 1
  %10766 = load double, ptr %10765, align 8, !tbaa !14
  %10767 = fmul double %10764, %10766
  %10768 = fneg double %10767
  %10769 = call double @llvm.fmuladd.f64(double %10760, double %10762, double %10768)
  %10770 = getelementptr inbounds %struct.doublecomplex, ptr %31, i32 0, i32 0
  store double %10769, ptr %10770, align 8, !tbaa !11
  %10771 = getelementptr inbounds %struct.doublecomplex, ptr %70, i32 0, i32 0
  %10772 = load double, ptr %10771, align 8, !tbaa !11
  %10773 = getelementptr inbounds %struct.doublecomplex, ptr %52, i32 0, i32 1
  %10774 = load double, ptr %10773, align 8, !tbaa !14
  %10775 = getelementptr inbounds %struct.doublecomplex, ptr %70, i32 0, i32 1
  %10776 = load double, ptr %10775, align 8, !tbaa !14
  %10777 = getelementptr inbounds %struct.doublecomplex, ptr %52, i32 0, i32 0
  %10778 = load double, ptr %10777, align 8, !tbaa !11
  %10779 = fmul double %10776, %10778
  %10780 = call double @llvm.fmuladd.f64(double %10772, double %10774, double %10779)
  %10781 = getelementptr inbounds %struct.doublecomplex, ptr %31, i32 0, i32 1
  store double %10780, ptr %10781, align 8, !tbaa !14
  %10782 = load ptr, ptr %14, align 8, !tbaa !5
  %10783 = load i32, ptr %21, align 4, !tbaa !9
  %10784 = sext i32 %10783 to i64
  %10785 = getelementptr inbounds %struct.doublecomplex, ptr %10782, i64 %10784
  %10786 = getelementptr inbounds %struct.doublecomplex, ptr %10785, i32 0, i32 0
  %10787 = load double, ptr %10786, align 8, !tbaa !11
  %10788 = getelementptr inbounds %struct.doublecomplex, ptr %31, i32 0, i32 0
  %10789 = load double, ptr %10788, align 8, !tbaa !11
  %10790 = fsub double %10787, %10789
  %10791 = getelementptr inbounds %struct.doublecomplex, ptr %30, i32 0, i32 0
  store double %10790, ptr %10791, align 8, !tbaa !11
  %10792 = load ptr, ptr %14, align 8, !tbaa !5
  %10793 = load i32, ptr %21, align 4, !tbaa !9
  %10794 = sext i32 %10793 to i64
  %10795 = getelementptr inbounds %struct.doublecomplex, ptr %10792, i64 %10794
  %10796 = getelementptr inbounds %struct.doublecomplex, ptr %10795, i32 0, i32 1
  %10797 = load double, ptr %10796, align 8, !tbaa !14
  %10798 = getelementptr inbounds %struct.doublecomplex, ptr %31, i32 0, i32 1
  %10799 = load double, ptr %10798, align 8, !tbaa !14
  %10800 = fsub double %10797, %10799
  %10801 = getelementptr inbounds %struct.doublecomplex, ptr %30, i32 0, i32 1
  store double %10800, ptr %10801, align 8, !tbaa !14
  %10802 = getelementptr inbounds %struct.doublecomplex, ptr %30, i32 0, i32 0
  %10803 = load double, ptr %10802, align 8, !tbaa !11
  %10804 = load ptr, ptr %14, align 8, !tbaa !5
  %10805 = load i32, ptr %20, align 4, !tbaa !9
  %10806 = sext i32 %10805 to i64
  %10807 = getelementptr inbounds %struct.doublecomplex, ptr %10804, i64 %10806
  %10808 = getelementptr inbounds %struct.doublecomplex, ptr %10807, i32 0, i32 0
  store double %10803, ptr %10808, align 8, !tbaa !11
  %10809 = getelementptr inbounds %struct.doublecomplex, ptr %30, i32 0, i32 1
  %10810 = load double, ptr %10809, align 8, !tbaa !14
  %10811 = load ptr, ptr %14, align 8, !tbaa !5
  %10812 = load i32, ptr %20, align 4, !tbaa !9
  %10813 = sext i32 %10812 to i64
  %10814 = getelementptr inbounds %struct.doublecomplex, ptr %10811, i64 %10813
  %10815 = getelementptr inbounds %struct.doublecomplex, ptr %10814, i32 0, i32 1
  store double %10810, ptr %10815, align 8, !tbaa !14
  br label %10816

10816:                                            ; preds = %10464
  %10817 = load i32, ptr %49, align 4, !tbaa !9
  %10818 = add nsw i32 %10817, 1
  store i32 %10818, ptr %49, align 4, !tbaa !9
  br label %10460, !llvm.loop !28

10819:                                            ; preds = %10460
  br label %19171

10820:                                            ; preds = %9791
  %10821 = load ptr, ptr %12, align 8, !tbaa !5
  %10822 = getelementptr inbounds %struct.doublecomplex, ptr %10821, i64 1
  %10823 = getelementptr inbounds %struct.doublecomplex, ptr %10822, i32 0, i32 0
  %10824 = load double, ptr %10823, align 8, !tbaa !11
  %10825 = getelementptr inbounds %struct.doublecomplex, ptr %59, i32 0, i32 0
  store double %10824, ptr %10825, align 8, !tbaa !11
  %10826 = load ptr, ptr %12, align 8, !tbaa !5
  %10827 = getelementptr inbounds %struct.doublecomplex, ptr %10826, i64 1
  %10828 = getelementptr inbounds %struct.doublecomplex, ptr %10827, i32 0, i32 1
  %10829 = load double, ptr %10828, align 8, !tbaa !14
  %10830 = getelementptr inbounds %struct.doublecomplex, ptr %59, i32 0, i32 1
  store double %10829, ptr %10830, align 8, !tbaa !14
  %10831 = call { double, double } @Cd(ptr noundef %59)
  %10832 = extractvalue { double, double } %10831, 0
  %10833 = extractvalue { double, double } %10831, 1
  %10834 = fneg double %10833
  %10835 = call ptr @_pCd(ptr noundef %31)
  %10836 = getelementptr inbounds { double, double }, ptr %10835, i32 0, i32 0
  %10837 = getelementptr inbounds { double, double }, ptr %10835, i32 0, i32 1
  store double %10832, ptr %10836, align 8
  store double %10834, ptr %10837, align 8
  %10838 = load ptr, ptr %13, align 8, !tbaa !5
  %10839 = getelementptr inbounds %struct.doublecomplex, ptr %10838, i32 0, i32 0
  %10840 = load double, ptr %10839, align 8, !tbaa !11
  %10841 = getelementptr inbounds %struct.doublecomplex, ptr %31, i32 0, i32 0
  %10842 = load double, ptr %10841, align 8, !tbaa !11
  %10843 = load ptr, ptr %13, align 8, !tbaa !5
  %10844 = getelementptr inbounds %struct.doublecomplex, ptr %10843, i32 0, i32 1
  %10845 = load double, ptr %10844, align 8, !tbaa !14
  %10846 = getelementptr inbounds %struct.doublecomplex, ptr %31, i32 0, i32 1
  %10847 = load double, ptr %10846, align 8, !tbaa !14
  %10848 = fmul double %10845, %10847
  %10849 = fneg double %10848
  %10850 = call double @llvm.fmuladd.f64(double %10840, double %10842, double %10849)
  %10851 = getelementptr inbounds %struct.doublecomplex, ptr %30, i32 0, i32 0
  store double %10850, ptr %10851, align 8, !tbaa !11
  %10852 = load ptr, ptr %13, align 8, !tbaa !5
  %10853 = getelementptr inbounds %struct.doublecomplex, ptr %10852, i32 0, i32 0
  %10854 = load double, ptr %10853, align 8, !tbaa !11
  %10855 = getelementptr inbounds %struct.doublecomplex, ptr %31, i32 0, i32 1
  %10856 = load double, ptr %10855, align 8, !tbaa !14
  %10857 = load ptr, ptr %13, align 8, !tbaa !5
  %10858 = getelementptr inbounds %struct.doublecomplex, ptr %10857, i32 0, i32 1
  %10859 = load double, ptr %10858, align 8, !tbaa !14
  %10860 = getelementptr inbounds %struct.doublecomplex, ptr %31, i32 0, i32 0
  %10861 = load double, ptr %10860, align 8, !tbaa !11
  %10862 = fmul double %10859, %10861
  %10863 = call double @llvm.fmuladd.f64(double %10854, double %10856, double %10862)
  %10864 = getelementptr inbounds %struct.doublecomplex, ptr %30, i32 0, i32 1
  store double %10863, ptr %10864, align 8, !tbaa !14
  %10865 = getelementptr inbounds %struct.doublecomplex, ptr %30, i32 0, i32 0
  %10866 = load double, ptr %10865, align 8, !tbaa !11
  %10867 = getelementptr inbounds %struct.doublecomplex, ptr %50, i32 0, i32 0
  store double %10866, ptr %10867, align 8, !tbaa !11
  %10868 = getelementptr inbounds %struct.doublecomplex, ptr %30, i32 0, i32 1
  %10869 = load double, ptr %10868, align 8, !tbaa !14
  %10870 = getelementptr inbounds %struct.doublecomplex, ptr %50, i32 0, i32 1
  store double %10869, ptr %10870, align 8, !tbaa !14
  %10871 = load ptr, ptr %12, align 8, !tbaa !5
  %10872 = getelementptr inbounds %struct.doublecomplex, ptr %10871, i64 2
  %10873 = getelementptr inbounds %struct.doublecomplex, ptr %10872, i32 0, i32 0
  %10874 = load double, ptr %10873, align 8, !tbaa !11
  %10875 = getelementptr inbounds %struct.doublecomplex, ptr %60, i32 0, i32 0
  store double %10874, ptr %10875, align 8, !tbaa !11
  %10876 = load ptr, ptr %12, align 8, !tbaa !5
  %10877 = getelementptr inbounds %struct.doublecomplex, ptr %10876, i64 2
  %10878 = getelementptr inbounds %struct.doublecomplex, ptr %10877, i32 0, i32 1
  %10879 = load double, ptr %10878, align 8, !tbaa !14
  %10880 = getelementptr inbounds %struct.doublecomplex, ptr %60, i32 0, i32 1
  store double %10879, ptr %10880, align 8, !tbaa !14
  %10881 = call { double, double } @Cd(ptr noundef %60)
  %10882 = extractvalue { double, double } %10881, 0
  %10883 = extractvalue { double, double } %10881, 1
  %10884 = fneg double %10883
  %10885 = call ptr @_pCd(ptr noundef %31)
  %10886 = getelementptr inbounds { double, double }, ptr %10885, i32 0, i32 0
  %10887 = getelementptr inbounds { double, double }, ptr %10885, i32 0, i32 1
  store double %10882, ptr %10886, align 8
  store double %10884, ptr %10887, align 8
  %10888 = load ptr, ptr %13, align 8, !tbaa !5
  %10889 = getelementptr inbounds %struct.doublecomplex, ptr %10888, i32 0, i32 0
  %10890 = load double, ptr %10889, align 8, !tbaa !11
  %10891 = getelementptr inbounds %struct.doublecomplex, ptr %31, i32 0, i32 0
  %10892 = load double, ptr %10891, align 8, !tbaa !11
  %10893 = load ptr, ptr %13, align 8, !tbaa !5
  %10894 = getelementptr inbounds %struct.doublecomplex, ptr %10893, i32 0, i32 1
  %10895 = load double, ptr %10894, align 8, !tbaa !14
  %10896 = getelementptr inbounds %struct.doublecomplex, ptr %31, i32 0, i32 1
  %10897 = load double, ptr %10896, align 8, !tbaa !14
  %10898 = fmul double %10895, %10897
  %10899 = fneg double %10898
  %10900 = call double @llvm.fmuladd.f64(double %10890, double %10892, double %10899)
  %10901 = getelementptr inbounds %struct.doublecomplex, ptr %30, i32 0, i32 0
  store double %10900, ptr %10901, align 8, !tbaa !11
  %10902 = load ptr, ptr %13, align 8, !tbaa !5
  %10903 = getelementptr inbounds %struct.doublecomplex, ptr %10902, i32 0, i32 0
  %10904 = load double, ptr %10903, align 8, !tbaa !11
  %10905 = getelementptr inbounds %struct.doublecomplex, ptr %31, i32 0, i32 1
  %10906 = load double, ptr %10905, align 8, !tbaa !14
  %10907 = load ptr, ptr %13, align 8, !tbaa !5
  %10908 = getelementptr inbounds %struct.doublecomplex, ptr %10907, i32 0, i32 1
  %10909 = load double, ptr %10908, align 8, !tbaa !14
  %10910 = getelementptr inbounds %struct.doublecomplex, ptr %31, i32 0, i32 0
  %10911 = load double, ptr %10910, align 8, !tbaa !11
  %10912 = fmul double %10909, %10911
  %10913 = call double @llvm.fmuladd.f64(double %10904, double %10906, double %10912)
  %10914 = getelementptr inbounds %struct.doublecomplex, ptr %30, i32 0, i32 1
  store double %10913, ptr %10914, align 8, !tbaa !14
  %10915 = getelementptr inbounds %struct.doublecomplex, ptr %30, i32 0, i32 0
  %10916 = load double, ptr %10915, align 8, !tbaa !11
  %10917 = getelementptr inbounds %struct.doublecomplex, ptr %51, i32 0, i32 0
  store double %10916, ptr %10917, align 8, !tbaa !11
  %10918 = getelementptr inbounds %struct.doublecomplex, ptr %30, i32 0, i32 1
  %10919 = load double, ptr %10918, align 8, !tbaa !14
  %10920 = getelementptr inbounds %struct.doublecomplex, ptr %51, i32 0, i32 1
  store double %10919, ptr %10920, align 8, !tbaa !14
  %10921 = load ptr, ptr %12, align 8, !tbaa !5
  %10922 = getelementptr inbounds %struct.doublecomplex, ptr %10921, i64 3
  %10923 = getelementptr inbounds %struct.doublecomplex, ptr %10922, i32 0, i32 0
  %10924 = load double, ptr %10923, align 8, !tbaa !11
  %10925 = getelementptr inbounds %struct.doublecomplex, ptr %61, i32 0, i32 0
  store double %10924, ptr %10925, align 8, !tbaa !11
  %10926 = load ptr, ptr %12, align 8, !tbaa !5
  %10927 = getelementptr inbounds %struct.doublecomplex, ptr %10926, i64 3
  %10928 = getelementptr inbounds %struct.doublecomplex, ptr %10927, i32 0, i32 1
  %10929 = load double, ptr %10928, align 8, !tbaa !14
  %10930 = getelementptr inbounds %struct.doublecomplex, ptr %61, i32 0, i32 1
  store double %10929, ptr %10930, align 8, !tbaa !14
  %10931 = call { double, double } @Cd(ptr noundef %61)
  %10932 = extractvalue { double, double } %10931, 0
  %10933 = extractvalue { double, double } %10931, 1
  %10934 = fneg double %10933
  %10935 = call ptr @_pCd(ptr noundef %31)
  %10936 = getelementptr inbounds { double, double }, ptr %10935, i32 0, i32 0
  %10937 = getelementptr inbounds { double, double }, ptr %10935, i32 0, i32 1
  store double %10932, ptr %10936, align 8
  store double %10934, ptr %10937, align 8
  %10938 = load ptr, ptr %13, align 8, !tbaa !5
  %10939 = getelementptr inbounds %struct.doublecomplex, ptr %10938, i32 0, i32 0
  %10940 = load double, ptr %10939, align 8, !tbaa !11
  %10941 = getelementptr inbounds %struct.doublecomplex, ptr %31, i32 0, i32 0
  %10942 = load double, ptr %10941, align 8, !tbaa !11
  %10943 = load ptr, ptr %13, align 8, !tbaa !5
  %10944 = getelementptr inbounds %struct.doublecomplex, ptr %10943, i32 0, i32 1
  %10945 = load double, ptr %10944, align 8, !tbaa !14
  %10946 = getelementptr inbounds %struct.doublecomplex, ptr %31, i32 0, i32 1
  %10947 = load double, ptr %10946, align 8, !tbaa !14
  %10948 = fmul double %10945, %10947
  %10949 = fneg double %10948
  %10950 = call double @llvm.fmuladd.f64(double %10940, double %10942, double %10949)
  %10951 = getelementptr inbounds %struct.doublecomplex, ptr %30, i32 0, i32 0
  store double %10950, ptr %10951, align 8, !tbaa !11
  %10952 = load ptr, ptr %13, align 8, !tbaa !5
  %10953 = getelementptr inbounds %struct.doublecomplex, ptr %10952, i32 0, i32 0
  %10954 = load double, ptr %10953, align 8, !tbaa !11
  %10955 = getelementptr inbounds %struct.doublecomplex, ptr %31, i32 0, i32 1
  %10956 = load double, ptr %10955, align 8, !tbaa !14
  %10957 = load ptr, ptr %13, align 8, !tbaa !5
  %10958 = getelementptr inbounds %struct.doublecomplex, ptr %10957, i32 0, i32 1
  %10959 = load double, ptr %10958, align 8, !tbaa !14
  %10960 = getelementptr inbounds %struct.doublecomplex, ptr %31, i32 0, i32 0
  %10961 = load double, ptr %10960, align 8, !tbaa !11
  %10962 = fmul double %10959, %10961
  %10963 = call double @llvm.fmuladd.f64(double %10954, double %10956, double %10962)
  %10964 = getelementptr inbounds %struct.doublecomplex, ptr %30, i32 0, i32 1
  store double %10963, ptr %10964, align 8, !tbaa !14
  %10965 = getelementptr inbounds %struct.doublecomplex, ptr %30, i32 0, i32 0
  %10966 = load double, ptr %10965, align 8, !tbaa !11
  %10967 = getelementptr inbounds %struct.doublecomplex, ptr %52, i32 0, i32 0
  store double %10966, ptr %10967, align 8, !tbaa !11
  %10968 = getelementptr inbounds %struct.doublecomplex, ptr %30, i32 0, i32 1
  %10969 = load double, ptr %10968, align 8, !tbaa !14
  %10970 = getelementptr inbounds %struct.doublecomplex, ptr %52, i32 0, i32 1
  store double %10969, ptr %10970, align 8, !tbaa !14
  %10971 = load ptr, ptr %12, align 8, !tbaa !5
  %10972 = getelementptr inbounds %struct.doublecomplex, ptr %10971, i64 4
  %10973 = getelementptr inbounds %struct.doublecomplex, ptr %10972, i32 0, i32 0
  %10974 = load double, ptr %10973, align 8, !tbaa !11
  %10975 = getelementptr inbounds %struct.doublecomplex, ptr %62, i32 0, i32 0
  store double %10974, ptr %10975, align 8, !tbaa !11
  %10976 = load ptr, ptr %12, align 8, !tbaa !5
  %10977 = getelementptr inbounds %struct.doublecomplex, ptr %10976, i64 4
  %10978 = getelementptr inbounds %struct.doublecomplex, ptr %10977, i32 0, i32 1
  %10979 = load double, ptr %10978, align 8, !tbaa !14
  %10980 = getelementptr inbounds %struct.doublecomplex, ptr %62, i32 0, i32 1
  store double %10979, ptr %10980, align 8, !tbaa !14
  %10981 = call { double, double } @Cd(ptr noundef %62)
  %10982 = extractvalue { double, double } %10981, 0
  %10983 = extractvalue { double, double } %10981, 1
  %10984 = fneg double %10983
  %10985 = call ptr @_pCd(ptr noundef %31)
  %10986 = getelementptr inbounds { double, double }, ptr %10985, i32 0, i32 0
  %10987 = getelementptr inbounds { double, double }, ptr %10985, i32 0, i32 1
  store double %10982, ptr %10986, align 8
  store double %10984, ptr %10987, align 8
  %10988 = load ptr, ptr %13, align 8, !tbaa !5
  %10989 = getelementptr inbounds %struct.doublecomplex, ptr %10988, i32 0, i32 0
  %10990 = load double, ptr %10989, align 8, !tbaa !11
  %10991 = getelementptr inbounds %struct.doublecomplex, ptr %31, i32 0, i32 0
  %10992 = load double, ptr %10991, align 8, !tbaa !11
  %10993 = load ptr, ptr %13, align 8, !tbaa !5
  %10994 = getelementptr inbounds %struct.doublecomplex, ptr %10993, i32 0, i32 1
  %10995 = load double, ptr %10994, align 8, !tbaa !14
  %10996 = getelementptr inbounds %struct.doublecomplex, ptr %31, i32 0, i32 1
  %10997 = load double, ptr %10996, align 8, !tbaa !14
  %10998 = fmul double %10995, %10997
  %10999 = fneg double %10998
  %11000 = call double @llvm.fmuladd.f64(double %10990, double %10992, double %10999)
  %11001 = getelementptr inbounds %struct.doublecomplex, ptr %30, i32 0, i32 0
  store double %11000, ptr %11001, align 8, !tbaa !11
  %11002 = load ptr, ptr %13, align 8, !tbaa !5
  %11003 = getelementptr inbounds %struct.doublecomplex, ptr %11002, i32 0, i32 0
  %11004 = load double, ptr %11003, align 8, !tbaa !11
  %11005 = getelementptr inbounds %struct.doublecomplex, ptr %31, i32 0, i32 1
  %11006 = load double, ptr %11005, align 8, !tbaa !14
  %11007 = load ptr, ptr %13, align 8, !tbaa !5
  %11008 = getelementptr inbounds %struct.doublecomplex, ptr %11007, i32 0, i32 1
  %11009 = load double, ptr %11008, align 8, !tbaa !14
  %11010 = getelementptr inbounds %struct.doublecomplex, ptr %31, i32 0, i32 0
  %11011 = load double, ptr %11010, align 8, !tbaa !11
  %11012 = fmul double %11009, %11011
  %11013 = call double @llvm.fmuladd.f64(double %11004, double %11006, double %11012)
  %11014 = getelementptr inbounds %struct.doublecomplex, ptr %30, i32 0, i32 1
  store double %11013, ptr %11014, align 8, !tbaa !14
  %11015 = getelementptr inbounds %struct.doublecomplex, ptr %30, i32 0, i32 0
  %11016 = load double, ptr %11015, align 8, !tbaa !11
  %11017 = getelementptr inbounds %struct.doublecomplex, ptr %53, i32 0, i32 0
  store double %11016, ptr %11017, align 8, !tbaa !11
  %11018 = getelementptr inbounds %struct.doublecomplex, ptr %30, i32 0, i32 1
  %11019 = load double, ptr %11018, align 8, !tbaa !14
  %11020 = getelementptr inbounds %struct.doublecomplex, ptr %53, i32 0, i32 1
  store double %11019, ptr %11020, align 8, !tbaa !14
  %11021 = load ptr, ptr %10, align 8, !tbaa !5
  %11022 = load i32, ptr %11021, align 4, !tbaa !9
  store i32 %11022, ptr %19, align 4, !tbaa !9
  store i32 1, ptr %49, align 4, !tbaa !9
  br label %11023

11023:                                            ; preds = %11499, %10820
  %11024 = load i32, ptr %49, align 4, !tbaa !9
  %11025 = load i32, ptr %19, align 4, !tbaa !9
  %11026 = icmp sle i32 %11024, %11025
  br i1 %11026, label %11027, label %11502

11027:                                            ; preds = %11023
  %11028 = load i32, ptr %49, align 4, !tbaa !9
  %11029 = load i32, ptr %17, align 4, !tbaa !9
  %11030 = add nsw i32 %11028, %11029
  store i32 %11030, ptr %20, align 4, !tbaa !9
  %11031 = getelementptr inbounds %struct.doublecomplex, ptr %59, i32 0, i32 0
  %11032 = load double, ptr %11031, align 8, !tbaa !11
  %11033 = load ptr, ptr %14, align 8, !tbaa !5
  %11034 = load i32, ptr %20, align 4, !tbaa !9
  %11035 = sext i32 %11034 to i64
  %11036 = getelementptr inbounds %struct.doublecomplex, ptr %11033, i64 %11035
  %11037 = getelementptr inbounds %struct.doublecomplex, ptr %11036, i32 0, i32 0
  %11038 = load double, ptr %11037, align 8, !tbaa !11
  %11039 = getelementptr inbounds %struct.doublecomplex, ptr %59, i32 0, i32 1
  %11040 = load double, ptr %11039, align 8, !tbaa !14
  %11041 = load ptr, ptr %14, align 8, !tbaa !5
  %11042 = load i32, ptr %20, align 4, !tbaa !9
  %11043 = sext i32 %11042 to i64
  %11044 = getelementptr inbounds %struct.doublecomplex, ptr %11041, i64 %11043
  %11045 = getelementptr inbounds %struct.doublecomplex, ptr %11044, i32 0, i32 1
  %11046 = load double, ptr %11045, align 8, !tbaa !14
  %11047 = fmul double %11040, %11046
  %11048 = fneg double %11047
  %11049 = call double @llvm.fmuladd.f64(double %11032, double %11038, double %11048)
  %11050 = getelementptr inbounds %struct.doublecomplex, ptr %33, i32 0, i32 0
  store double %11049, ptr %11050, align 8, !tbaa !11
  %11051 = getelementptr inbounds %struct.doublecomplex, ptr %59, i32 0, i32 0
  %11052 = load double, ptr %11051, align 8, !tbaa !11
  %11053 = load ptr, ptr %14, align 8, !tbaa !5
  %11054 = load i32, ptr %20, align 4, !tbaa !9
  %11055 = sext i32 %11054 to i64
  %11056 = getelementptr inbounds %struct.doublecomplex, ptr %11053, i64 %11055
  %11057 = getelementptr inbounds %struct.doublecomplex, ptr %11056, i32 0, i32 1
  %11058 = load double, ptr %11057, align 8, !tbaa !14
  %11059 = getelementptr inbounds %struct.doublecomplex, ptr %59, i32 0, i32 1
  %11060 = load double, ptr %11059, align 8, !tbaa !14
  %11061 = load ptr, ptr %14, align 8, !tbaa !5
  %11062 = load i32, ptr %20, align 4, !tbaa !9
  %11063 = sext i32 %11062 to i64
  %11064 = getelementptr inbounds %struct.doublecomplex, ptr %11061, i64 %11063
  %11065 = getelementptr inbounds %struct.doublecomplex, ptr %11064, i32 0, i32 0
  %11066 = load double, ptr %11065, align 8, !tbaa !11
  %11067 = fmul double %11060, %11066
  %11068 = call double @llvm.fmuladd.f64(double %11052, double %11058, double %11067)
  %11069 = getelementptr inbounds %struct.doublecomplex, ptr %33, i32 0, i32 1
  store double %11068, ptr %11069, align 8, !tbaa !14
  %11070 = load i32, ptr %49, align 4, !tbaa !9
  %11071 = load i32, ptr %17, align 4, !tbaa !9
  %11072 = shl i32 %11071, 1
  %11073 = add nsw i32 %11070, %11072
  store i32 %11073, ptr %21, align 4, !tbaa !9
  %11074 = getelementptr inbounds %struct.doublecomplex, ptr %60, i32 0, i32 0
  %11075 = load double, ptr %11074, align 8, !tbaa !11
  %11076 = load ptr, ptr %14, align 8, !tbaa !5
  %11077 = load i32, ptr %21, align 4, !tbaa !9
  %11078 = sext i32 %11077 to i64
  %11079 = getelementptr inbounds %struct.doublecomplex, ptr %11076, i64 %11078
  %11080 = getelementptr inbounds %struct.doublecomplex, ptr %11079, i32 0, i32 0
  %11081 = load double, ptr %11080, align 8, !tbaa !11
  %11082 = getelementptr inbounds %struct.doublecomplex, ptr %60, i32 0, i32 1
  %11083 = load double, ptr %11082, align 8, !tbaa !14
  %11084 = load ptr, ptr %14, align 8, !tbaa !5
  %11085 = load i32, ptr %21, align 4, !tbaa !9
  %11086 = sext i32 %11085 to i64
  %11087 = getelementptr inbounds %struct.doublecomplex, ptr %11084, i64 %11086
  %11088 = getelementptr inbounds %struct.doublecomplex, ptr %11087, i32 0, i32 1
  %11089 = load double, ptr %11088, align 8, !tbaa !14
  %11090 = fmul double %11083, %11089
  %11091 = fneg double %11090
  %11092 = call double @llvm.fmuladd.f64(double %11075, double %11081, double %11091)
  %11093 = getelementptr inbounds %struct.doublecomplex, ptr %34, i32 0, i32 0
  store double %11092, ptr %11093, align 8, !tbaa !11
  %11094 = getelementptr inbounds %struct.doublecomplex, ptr %60, i32 0, i32 0
  %11095 = load double, ptr %11094, align 8, !tbaa !11
  %11096 = load ptr, ptr %14, align 8, !tbaa !5
  %11097 = load i32, ptr %21, align 4, !tbaa !9
  %11098 = sext i32 %11097 to i64
  %11099 = getelementptr inbounds %struct.doublecomplex, ptr %11096, i64 %11098
  %11100 = getelementptr inbounds %struct.doublecomplex, ptr %11099, i32 0, i32 1
  %11101 = load double, ptr %11100, align 8, !tbaa !14
  %11102 = getelementptr inbounds %struct.doublecomplex, ptr %60, i32 0, i32 1
  %11103 = load double, ptr %11102, align 8, !tbaa !14
  %11104 = load ptr, ptr %14, align 8, !tbaa !5
  %11105 = load i32, ptr %21, align 4, !tbaa !9
  %11106 = sext i32 %11105 to i64
  %11107 = getelementptr inbounds %struct.doublecomplex, ptr %11104, i64 %11106
  %11108 = getelementptr inbounds %struct.doublecomplex, ptr %11107, i32 0, i32 0
  %11109 = load double, ptr %11108, align 8, !tbaa !11
  %11110 = fmul double %11103, %11109
  %11111 = call double @llvm.fmuladd.f64(double %11095, double %11101, double %11110)
  %11112 = getelementptr inbounds %struct.doublecomplex, ptr %34, i32 0, i32 1
  store double %11111, ptr %11112, align 8, !tbaa !14
  %11113 = getelementptr inbounds %struct.doublecomplex, ptr %33, i32 0, i32 0
  %11114 = load double, ptr %11113, align 8, !tbaa !11
  %11115 = getelementptr inbounds %struct.doublecomplex, ptr %34, i32 0, i32 0
  %11116 = load double, ptr %11115, align 8, !tbaa !11
  %11117 = fadd double %11114, %11116
  %11118 = getelementptr inbounds %struct.doublecomplex, ptr %32, i32 0, i32 0
  store double %11117, ptr %11118, align 8, !tbaa !11
  %11119 = getelementptr inbounds %struct.doublecomplex, ptr %33, i32 0, i32 1
  %11120 = load double, ptr %11119, align 8, !tbaa !14
  %11121 = getelementptr inbounds %struct.doublecomplex, ptr %34, i32 0, i32 1
  %11122 = load double, ptr %11121, align 8, !tbaa !14
  %11123 = fadd double %11120, %11122
  %11124 = getelementptr inbounds %struct.doublecomplex, ptr %32, i32 0, i32 1
  store double %11123, ptr %11124, align 8, !tbaa !14
  %11125 = load i32, ptr %49, align 4, !tbaa !9
  %11126 = load i32, ptr %17, align 4, !tbaa !9
  %11127 = mul nsw i32 %11126, 3
  %11128 = add nsw i32 %11125, %11127
  store i32 %11128, ptr %22, align 4, !tbaa !9
  %11129 = getelementptr inbounds %struct.doublecomplex, ptr %61, i32 0, i32 0
  %11130 = load double, ptr %11129, align 8, !tbaa !11
  %11131 = load ptr, ptr %14, align 8, !tbaa !5
  %11132 = load i32, ptr %22, align 4, !tbaa !9
  %11133 = sext i32 %11132 to i64
  %11134 = getelementptr inbounds %struct.doublecomplex, ptr %11131, i64 %11133
  %11135 = getelementptr inbounds %struct.doublecomplex, ptr %11134, i32 0, i32 0
  %11136 = load double, ptr %11135, align 8, !tbaa !11
  %11137 = getelementptr inbounds %struct.doublecomplex, ptr %61, i32 0, i32 1
  %11138 = load double, ptr %11137, align 8, !tbaa !14
  %11139 = load ptr, ptr %14, align 8, !tbaa !5
  %11140 = load i32, ptr %22, align 4, !tbaa !9
  %11141 = sext i32 %11140 to i64
  %11142 = getelementptr inbounds %struct.doublecomplex, ptr %11139, i64 %11141
  %11143 = getelementptr inbounds %struct.doublecomplex, ptr %11142, i32 0, i32 1
  %11144 = load double, ptr %11143, align 8, !tbaa !14
  %11145 = fmul double %11138, %11144
  %11146 = fneg double %11145
  %11147 = call double @llvm.fmuladd.f64(double %11130, double %11136, double %11146)
  %11148 = getelementptr inbounds %struct.doublecomplex, ptr %35, i32 0, i32 0
  store double %11147, ptr %11148, align 8, !tbaa !11
  %11149 = getelementptr inbounds %struct.doublecomplex, ptr %61, i32 0, i32 0
  %11150 = load double, ptr %11149, align 8, !tbaa !11
  %11151 = load ptr, ptr %14, align 8, !tbaa !5
  %11152 = load i32, ptr %22, align 4, !tbaa !9
  %11153 = sext i32 %11152 to i64
  %11154 = getelementptr inbounds %struct.doublecomplex, ptr %11151, i64 %11153
  %11155 = getelementptr inbounds %struct.doublecomplex, ptr %11154, i32 0, i32 1
  %11156 = load double, ptr %11155, align 8, !tbaa !14
  %11157 = getelementptr inbounds %struct.doublecomplex, ptr %61, i32 0, i32 1
  %11158 = load double, ptr %11157, align 8, !tbaa !14
  %11159 = load ptr, ptr %14, align 8, !tbaa !5
  %11160 = load i32, ptr %22, align 4, !tbaa !9
  %11161 = sext i32 %11160 to i64
  %11162 = getelementptr inbounds %struct.doublecomplex, ptr %11159, i64 %11161
  %11163 = getelementptr inbounds %struct.doublecomplex, ptr %11162, i32 0, i32 0
  %11164 = load double, ptr %11163, align 8, !tbaa !11
  %11165 = fmul double %11158, %11164
  %11166 = call double @llvm.fmuladd.f64(double %11150, double %11156, double %11165)
  %11167 = getelementptr inbounds %struct.doublecomplex, ptr %35, i32 0, i32 1
  store double %11166, ptr %11167, align 8, !tbaa !14
  %11168 = getelementptr inbounds %struct.doublecomplex, ptr %32, i32 0, i32 0
  %11169 = load double, ptr %11168, align 8, !tbaa !11
  %11170 = getelementptr inbounds %struct.doublecomplex, ptr %35, i32 0, i32 0
  %11171 = load double, ptr %11170, align 8, !tbaa !11
  %11172 = fadd double %11169, %11171
  %11173 = getelementptr inbounds %struct.doublecomplex, ptr %31, i32 0, i32 0
  store double %11172, ptr %11173, align 8, !tbaa !11
  %11174 = getelementptr inbounds %struct.doublecomplex, ptr %32, i32 0, i32 1
  %11175 = load double, ptr %11174, align 8, !tbaa !14
  %11176 = getelementptr inbounds %struct.doublecomplex, ptr %35, i32 0, i32 1
  %11177 = load double, ptr %11176, align 8, !tbaa !14
  %11178 = fadd double %11175, %11177
  %11179 = getelementptr inbounds %struct.doublecomplex, ptr %31, i32 0, i32 1
  store double %11178, ptr %11179, align 8, !tbaa !14
  %11180 = load i32, ptr %49, align 4, !tbaa !9
  %11181 = load i32, ptr %17, align 4, !tbaa !9
  %11182 = shl i32 %11181, 2
  %11183 = add nsw i32 %11180, %11182
  store i32 %11183, ptr %23, align 4, !tbaa !9
  %11184 = getelementptr inbounds %struct.doublecomplex, ptr %62, i32 0, i32 0
  %11185 = load double, ptr %11184, align 8, !tbaa !11
  %11186 = load ptr, ptr %14, align 8, !tbaa !5
  %11187 = load i32, ptr %23, align 4, !tbaa !9
  %11188 = sext i32 %11187 to i64
  %11189 = getelementptr inbounds %struct.doublecomplex, ptr %11186, i64 %11188
  %11190 = getelementptr inbounds %struct.doublecomplex, ptr %11189, i32 0, i32 0
  %11191 = load double, ptr %11190, align 8, !tbaa !11
  %11192 = getelementptr inbounds %struct.doublecomplex, ptr %62, i32 0, i32 1
  %11193 = load double, ptr %11192, align 8, !tbaa !14
  %11194 = load ptr, ptr %14, align 8, !tbaa !5
  %11195 = load i32, ptr %23, align 4, !tbaa !9
  %11196 = sext i32 %11195 to i64
  %11197 = getelementptr inbounds %struct.doublecomplex, ptr %11194, i64 %11196
  %11198 = getelementptr inbounds %struct.doublecomplex, ptr %11197, i32 0, i32 1
  %11199 = load double, ptr %11198, align 8, !tbaa !14
  %11200 = fmul double %11193, %11199
  %11201 = fneg double %11200
  %11202 = call double @llvm.fmuladd.f64(double %11185, double %11191, double %11201)
  %11203 = getelementptr inbounds %struct.doublecomplex, ptr %36, i32 0, i32 0
  store double %11202, ptr %11203, align 8, !tbaa !11
  %11204 = getelementptr inbounds %struct.doublecomplex, ptr %62, i32 0, i32 0
  %11205 = load double, ptr %11204, align 8, !tbaa !11
  %11206 = load ptr, ptr %14, align 8, !tbaa !5
  %11207 = load i32, ptr %23, align 4, !tbaa !9
  %11208 = sext i32 %11207 to i64
  %11209 = getelementptr inbounds %struct.doublecomplex, ptr %11206, i64 %11208
  %11210 = getelementptr inbounds %struct.doublecomplex, ptr %11209, i32 0, i32 1
  %11211 = load double, ptr %11210, align 8, !tbaa !14
  %11212 = getelementptr inbounds %struct.doublecomplex, ptr %62, i32 0, i32 1
  %11213 = load double, ptr %11212, align 8, !tbaa !14
  %11214 = load ptr, ptr %14, align 8, !tbaa !5
  %11215 = load i32, ptr %23, align 4, !tbaa !9
  %11216 = sext i32 %11215 to i64
  %11217 = getelementptr inbounds %struct.doublecomplex, ptr %11214, i64 %11216
  %11218 = getelementptr inbounds %struct.doublecomplex, ptr %11217, i32 0, i32 0
  %11219 = load double, ptr %11218, align 8, !tbaa !11
  %11220 = fmul double %11213, %11219
  %11221 = call double @llvm.fmuladd.f64(double %11205, double %11211, double %11220)
  %11222 = getelementptr inbounds %struct.doublecomplex, ptr %36, i32 0, i32 1
  store double %11221, ptr %11222, align 8, !tbaa !14
  %11223 = getelementptr inbounds %struct.doublecomplex, ptr %31, i32 0, i32 0
  %11224 = load double, ptr %11223, align 8, !tbaa !11
  %11225 = getelementptr inbounds %struct.doublecomplex, ptr %36, i32 0, i32 0
  %11226 = load double, ptr %11225, align 8, !tbaa !11
  %11227 = fadd double %11224, %11226
  %11228 = getelementptr inbounds %struct.doublecomplex, ptr %30, i32 0, i32 0
  store double %11227, ptr %11228, align 8, !tbaa !11
  %11229 = getelementptr inbounds %struct.doublecomplex, ptr %31, i32 0, i32 1
  %11230 = load double, ptr %11229, align 8, !tbaa !14
  %11231 = getelementptr inbounds %struct.doublecomplex, ptr %36, i32 0, i32 1
  %11232 = load double, ptr %11231, align 8, !tbaa !14
  %11233 = fadd double %11230, %11232
  %11234 = getelementptr inbounds %struct.doublecomplex, ptr %30, i32 0, i32 1
  store double %11233, ptr %11234, align 8, !tbaa !14
  %11235 = getelementptr inbounds %struct.doublecomplex, ptr %30, i32 0, i32 0
  %11236 = load double, ptr %11235, align 8, !tbaa !11
  %11237 = getelementptr inbounds %struct.doublecomplex, ptr %70, i32 0, i32 0
  store double %11236, ptr %11237, align 8, !tbaa !11
  %11238 = getelementptr inbounds %struct.doublecomplex, ptr %30, i32 0, i32 1
  %11239 = load double, ptr %11238, align 8, !tbaa !14
  %11240 = getelementptr inbounds %struct.doublecomplex, ptr %70, i32 0, i32 1
  store double %11239, ptr %11240, align 8, !tbaa !14
  %11241 = load i32, ptr %49, align 4, !tbaa !9
  %11242 = load i32, ptr %17, align 4, !tbaa !9
  %11243 = add nsw i32 %11241, %11242
  store i32 %11243, ptr %20, align 4, !tbaa !9
  %11244 = load i32, ptr %49, align 4, !tbaa !9
  %11245 = load i32, ptr %17, align 4, !tbaa !9
  %11246 = add nsw i32 %11244, %11245
  store i32 %11246, ptr %21, align 4, !tbaa !9
  %11247 = getelementptr inbounds %struct.doublecomplex, ptr %70, i32 0, i32 0
  %11248 = load double, ptr %11247, align 8, !tbaa !11
  %11249 = getelementptr inbounds %struct.doublecomplex, ptr %50, i32 0, i32 0
  %11250 = load double, ptr %11249, align 8, !tbaa !11
  %11251 = getelementptr inbounds %struct.doublecomplex, ptr %70, i32 0, i32 1
  %11252 = load double, ptr %11251, align 8, !tbaa !14
  %11253 = getelementptr inbounds %struct.doublecomplex, ptr %50, i32 0, i32 1
  %11254 = load double, ptr %11253, align 8, !tbaa !14
  %11255 = fmul double %11252, %11254
  %11256 = fneg double %11255
  %11257 = call double @llvm.fmuladd.f64(double %11248, double %11250, double %11256)
  %11258 = getelementptr inbounds %struct.doublecomplex, ptr %31, i32 0, i32 0
  store double %11257, ptr %11258, align 8, !tbaa !11
  %11259 = getelementptr inbounds %struct.doublecomplex, ptr %70, i32 0, i32 0
  %11260 = load double, ptr %11259, align 8, !tbaa !11
  %11261 = getelementptr inbounds %struct.doublecomplex, ptr %50, i32 0, i32 1
  %11262 = load double, ptr %11261, align 8, !tbaa !14
  %11263 = getelementptr inbounds %struct.doublecomplex, ptr %70, i32 0, i32 1
  %11264 = load double, ptr %11263, align 8, !tbaa !14
  %11265 = getelementptr inbounds %struct.doublecomplex, ptr %50, i32 0, i32 0
  %11266 = load double, ptr %11265, align 8, !tbaa !11
  %11267 = fmul double %11264, %11266
  %11268 = call double @llvm.fmuladd.f64(double %11260, double %11262, double %11267)
  %11269 = getelementptr inbounds %struct.doublecomplex, ptr %31, i32 0, i32 1
  store double %11268, ptr %11269, align 8, !tbaa !14
  %11270 = load ptr, ptr %14, align 8, !tbaa !5
  %11271 = load i32, ptr %21, align 4, !tbaa !9
  %11272 = sext i32 %11271 to i64
  %11273 = getelementptr inbounds %struct.doublecomplex, ptr %11270, i64 %11272
  %11274 = getelementptr inbounds %struct.doublecomplex, ptr %11273, i32 0, i32 0
  %11275 = load double, ptr %11274, align 8, !tbaa !11
  %11276 = getelementptr inbounds %struct.doublecomplex, ptr %31, i32 0, i32 0
  %11277 = load double, ptr %11276, align 8, !tbaa !11
  %11278 = fsub double %11275, %11277
  %11279 = getelementptr inbounds %struct.doublecomplex, ptr %30, i32 0, i32 0
  store double %11278, ptr %11279, align 8, !tbaa !11
  %11280 = load ptr, ptr %14, align 8, !tbaa !5
  %11281 = load i32, ptr %21, align 4, !tbaa !9
  %11282 = sext i32 %11281 to i64
  %11283 = getelementptr inbounds %struct.doublecomplex, ptr %11280, i64 %11282
  %11284 = getelementptr inbounds %struct.doublecomplex, ptr %11283, i32 0, i32 1
  %11285 = load double, ptr %11284, align 8, !tbaa !14
  %11286 = getelementptr inbounds %struct.doublecomplex, ptr %31, i32 0, i32 1
  %11287 = load double, ptr %11286, align 8, !tbaa !14
  %11288 = fsub double %11285, %11287
  %11289 = getelementptr inbounds %struct.doublecomplex, ptr %30, i32 0, i32 1
  store double %11288, ptr %11289, align 8, !tbaa !14
  %11290 = getelementptr inbounds %struct.doublecomplex, ptr %30, i32 0, i32 0
  %11291 = load double, ptr %11290, align 8, !tbaa !11
  %11292 = load ptr, ptr %14, align 8, !tbaa !5
  %11293 = load i32, ptr %20, align 4, !tbaa !9
  %11294 = sext i32 %11293 to i64
  %11295 = getelementptr inbounds %struct.doublecomplex, ptr %11292, i64 %11294
  %11296 = getelementptr inbounds %struct.doublecomplex, ptr %11295, i32 0, i32 0
  store double %11291, ptr %11296, align 8, !tbaa !11
  %11297 = getelementptr inbounds %struct.doublecomplex, ptr %30, i32 0, i32 1
  %11298 = load double, ptr %11297, align 8, !tbaa !14
  %11299 = load ptr, ptr %14, align 8, !tbaa !5
  %11300 = load i32, ptr %20, align 4, !tbaa !9
  %11301 = sext i32 %11300 to i64
  %11302 = getelementptr inbounds %struct.doublecomplex, ptr %11299, i64 %11301
  %11303 = getelementptr inbounds %struct.doublecomplex, ptr %11302, i32 0, i32 1
  store double %11298, ptr %11303, align 8, !tbaa !14
  %11304 = load i32, ptr %49, align 4, !tbaa !9
  %11305 = load i32, ptr %17, align 4, !tbaa !9
  %11306 = shl i32 %11305, 1
  %11307 = add nsw i32 %11304, %11306
  store i32 %11307, ptr %20, align 4, !tbaa !9
  %11308 = load i32, ptr %49, align 4, !tbaa !9
  %11309 = load i32, ptr %17, align 4, !tbaa !9
  %11310 = shl i32 %11309, 1
  %11311 = add nsw i32 %11308, %11310
  store i32 %11311, ptr %21, align 4, !tbaa !9
  %11312 = getelementptr inbounds %struct.doublecomplex, ptr %70, i32 0, i32 0
  %11313 = load double, ptr %11312, align 8, !tbaa !11
  %11314 = getelementptr inbounds %struct.doublecomplex, ptr %51, i32 0, i32 0
  %11315 = load double, ptr %11314, align 8, !tbaa !11
  %11316 = getelementptr inbounds %struct.doublecomplex, ptr %70, i32 0, i32 1
  %11317 = load double, ptr %11316, align 8, !tbaa !14
  %11318 = getelementptr inbounds %struct.doublecomplex, ptr %51, i32 0, i32 1
  %11319 = load double, ptr %11318, align 8, !tbaa !14
  %11320 = fmul double %11317, %11319
  %11321 = fneg double %11320
  %11322 = call double @llvm.fmuladd.f64(double %11313, double %11315, double %11321)
  %11323 = getelementptr inbounds %struct.doublecomplex, ptr %31, i32 0, i32 0
  store double %11322, ptr %11323, align 8, !tbaa !11
  %11324 = getelementptr inbounds %struct.doublecomplex, ptr %70, i32 0, i32 0
  %11325 = load double, ptr %11324, align 8, !tbaa !11
  %11326 = getelementptr inbounds %struct.doublecomplex, ptr %51, i32 0, i32 1
  %11327 = load double, ptr %11326, align 8, !tbaa !14
  %11328 = getelementptr inbounds %struct.doublecomplex, ptr %70, i32 0, i32 1
  %11329 = load double, ptr %11328, align 8, !tbaa !14
  %11330 = getelementptr inbounds %struct.doublecomplex, ptr %51, i32 0, i32 0
  %11331 = load double, ptr %11330, align 8, !tbaa !11
  %11332 = fmul double %11329, %11331
  %11333 = call double @llvm.fmuladd.f64(double %11325, double %11327, double %11332)
  %11334 = getelementptr inbounds %struct.doublecomplex, ptr %31, i32 0, i32 1
  store double %11333, ptr %11334, align 8, !tbaa !14
  %11335 = load ptr, ptr %14, align 8, !tbaa !5
  %11336 = load i32, ptr %21, align 4, !tbaa !9
  %11337 = sext i32 %11336 to i64
  %11338 = getelementptr inbounds %struct.doublecomplex, ptr %11335, i64 %11337
  %11339 = getelementptr inbounds %struct.doublecomplex, ptr %11338, i32 0, i32 0
  %11340 = load double, ptr %11339, align 8, !tbaa !11
  %11341 = getelementptr inbounds %struct.doublecomplex, ptr %31, i32 0, i32 0
  %11342 = load double, ptr %11341, align 8, !tbaa !11
  %11343 = fsub double %11340, %11342
  %11344 = getelementptr inbounds %struct.doublecomplex, ptr %30, i32 0, i32 0
  store double %11343, ptr %11344, align 8, !tbaa !11
  %11345 = load ptr, ptr %14, align 8, !tbaa !5
  %11346 = load i32, ptr %21, align 4, !tbaa !9
  %11347 = sext i32 %11346 to i64
  %11348 = getelementptr inbounds %struct.doublecomplex, ptr %11345, i64 %11347
  %11349 = getelementptr inbounds %struct.doublecomplex, ptr %11348, i32 0, i32 1
  %11350 = load double, ptr %11349, align 8, !tbaa !14
  %11351 = getelementptr inbounds %struct.doublecomplex, ptr %31, i32 0, i32 1
  %11352 = load double, ptr %11351, align 8, !tbaa !14
  %11353 = fsub double %11350, %11352
  %11354 = getelementptr inbounds %struct.doublecomplex, ptr %30, i32 0, i32 1
  store double %11353, ptr %11354, align 8, !tbaa !14
  %11355 = getelementptr inbounds %struct.doublecomplex, ptr %30, i32 0, i32 0
  %11356 = load double, ptr %11355, align 8, !tbaa !11
  %11357 = load ptr, ptr %14, align 8, !tbaa !5
  %11358 = load i32, ptr %20, align 4, !tbaa !9
  %11359 = sext i32 %11358 to i64
  %11360 = getelementptr inbounds %struct.doublecomplex, ptr %11357, i64 %11359
  %11361 = getelementptr inbounds %struct.doublecomplex, ptr %11360, i32 0, i32 0
  store double %11356, ptr %11361, align 8, !tbaa !11
  %11362 = getelementptr inbounds %struct.doublecomplex, ptr %30, i32 0, i32 1
  %11363 = load double, ptr %11362, align 8, !tbaa !14
  %11364 = load ptr, ptr %14, align 8, !tbaa !5
  %11365 = load i32, ptr %20, align 4, !tbaa !9
  %11366 = sext i32 %11365 to i64
  %11367 = getelementptr inbounds %struct.doublecomplex, ptr %11364, i64 %11366
  %11368 = getelementptr inbounds %struct.doublecomplex, ptr %11367, i32 0, i32 1
  store double %11363, ptr %11368, align 8, !tbaa !14
  %11369 = load i32, ptr %49, align 4, !tbaa !9
  %11370 = load i32, ptr %17, align 4, !tbaa !9
  %11371 = mul nsw i32 %11370, 3
  %11372 = add nsw i32 %11369, %11371
  store i32 %11372, ptr %20, align 4, !tbaa !9
  %11373 = load i32, ptr %49, align 4, !tbaa !9
  %11374 = load i32, ptr %17, align 4, !tbaa !9
  %11375 = mul nsw i32 %11374, 3
  %11376 = add nsw i32 %11373, %11375
  store i32 %11376, ptr %21, align 4, !tbaa !9
  %11377 = getelementptr inbounds %struct.doublecomplex, ptr %70, i32 0, i32 0
  %11378 = load double, ptr %11377, align 8, !tbaa !11
  %11379 = getelementptr inbounds %struct.doublecomplex, ptr %52, i32 0, i32 0
  %11380 = load double, ptr %11379, align 8, !tbaa !11
  %11381 = getelementptr inbounds %struct.doublecomplex, ptr %70, i32 0, i32 1
  %11382 = load double, ptr %11381, align 8, !tbaa !14
  %11383 = getelementptr inbounds %struct.doublecomplex, ptr %52, i32 0, i32 1
  %11384 = load double, ptr %11383, align 8, !tbaa !14
  %11385 = fmul double %11382, %11384
  %11386 = fneg double %11385
  %11387 = call double @llvm.fmuladd.f64(double %11378, double %11380, double %11386)
  %11388 = getelementptr inbounds %struct.doublecomplex, ptr %31, i32 0, i32 0
  store double %11387, ptr %11388, align 8, !tbaa !11
  %11389 = getelementptr inbounds %struct.doublecomplex, ptr %70, i32 0, i32 0
  %11390 = load double, ptr %11389, align 8, !tbaa !11
  %11391 = getelementptr inbounds %struct.doublecomplex, ptr %52, i32 0, i32 1
  %11392 = load double, ptr %11391, align 8, !tbaa !14
  %11393 = getelementptr inbounds %struct.doublecomplex, ptr %70, i32 0, i32 1
  %11394 = load double, ptr %11393, align 8, !tbaa !14
  %11395 = getelementptr inbounds %struct.doublecomplex, ptr %52, i32 0, i32 0
  %11396 = load double, ptr %11395, align 8, !tbaa !11
  %11397 = fmul double %11394, %11396
  %11398 = call double @llvm.fmuladd.f64(double %11390, double %11392, double %11397)
  %11399 = getelementptr inbounds %struct.doublecomplex, ptr %31, i32 0, i32 1
  store double %11398, ptr %11399, align 8, !tbaa !14
  %11400 = load ptr, ptr %14, align 8, !tbaa !5
  %11401 = load i32, ptr %21, align 4, !tbaa !9
  %11402 = sext i32 %11401 to i64
  %11403 = getelementptr inbounds %struct.doublecomplex, ptr %11400, i64 %11402
  %11404 = getelementptr inbounds %struct.doublecomplex, ptr %11403, i32 0, i32 0
  %11405 = load double, ptr %11404, align 8, !tbaa !11
  %11406 = getelementptr inbounds %struct.doublecomplex, ptr %31, i32 0, i32 0
  %11407 = load double, ptr %11406, align 8, !tbaa !11
  %11408 = fsub double %11405, %11407
  %11409 = getelementptr inbounds %struct.doublecomplex, ptr %30, i32 0, i32 0
  store double %11408, ptr %11409, align 8, !tbaa !11
  %11410 = load ptr, ptr %14, align 8, !tbaa !5
  %11411 = load i32, ptr %21, align 4, !tbaa !9
  %11412 = sext i32 %11411 to i64
  %11413 = getelementptr inbounds %struct.doublecomplex, ptr %11410, i64 %11412
  %11414 = getelementptr inbounds %struct.doublecomplex, ptr %11413, i32 0, i32 1
  %11415 = load double, ptr %11414, align 8, !tbaa !14
  %11416 = getelementptr inbounds %struct.doublecomplex, ptr %31, i32 0, i32 1
  %11417 = load double, ptr %11416, align 8, !tbaa !14
  %11418 = fsub double %11415, %11417
  %11419 = getelementptr inbounds %struct.doublecomplex, ptr %30, i32 0, i32 1
  store double %11418, ptr %11419, align 8, !tbaa !14
  %11420 = getelementptr inbounds %struct.doublecomplex, ptr %30, i32 0, i32 0
  %11421 = load double, ptr %11420, align 8, !tbaa !11
  %11422 = load ptr, ptr %14, align 8, !tbaa !5
  %11423 = load i32, ptr %20, align 4, !tbaa !9
  %11424 = sext i32 %11423 to i64
  %11425 = getelementptr inbounds %struct.doublecomplex, ptr %11422, i64 %11424
  %11426 = getelementptr inbounds %struct.doublecomplex, ptr %11425, i32 0, i32 0
  store double %11421, ptr %11426, align 8, !tbaa !11
  %11427 = getelementptr inbounds %struct.doublecomplex, ptr %30, i32 0, i32 1
  %11428 = load double, ptr %11427, align 8, !tbaa !14
  %11429 = load ptr, ptr %14, align 8, !tbaa !5
  %11430 = load i32, ptr %20, align 4, !tbaa !9
  %11431 = sext i32 %11430 to i64
  %11432 = getelementptr inbounds %struct.doublecomplex, ptr %11429, i64 %11431
  %11433 = getelementptr inbounds %struct.doublecomplex, ptr %11432, i32 0, i32 1
  store double %11428, ptr %11433, align 8, !tbaa !14
  %11434 = load i32, ptr %49, align 4, !tbaa !9
  %11435 = load i32, ptr %17, align 4, !tbaa !9
  %11436 = shl i32 %11435, 2
  %11437 = add nsw i32 %11434, %11436
  store i32 %11437, ptr %20, align 4, !tbaa !9
  %11438 = load i32, ptr %49, align 4, !tbaa !9
  %11439 = load i32, ptr %17, align 4, !tbaa !9
  %11440 = shl i32 %11439, 2
  %11441 = add nsw i32 %11438, %11440
  store i32 %11441, ptr %21, align 4, !tbaa !9
  %11442 = getelementptr inbounds %struct.doublecomplex, ptr %70, i32 0, i32 0
  %11443 = load double, ptr %11442, align 8, !tbaa !11
  %11444 = getelementptr inbounds %struct.doublecomplex, ptr %53, i32 0, i32 0
  %11445 = load double, ptr %11444, align 8, !tbaa !11
  %11446 = getelementptr inbounds %struct.doublecomplex, ptr %70, i32 0, i32 1
  %11447 = load double, ptr %11446, align 8, !tbaa !14
  %11448 = getelementptr inbounds %struct.doublecomplex, ptr %53, i32 0, i32 1
  %11449 = load double, ptr %11448, align 8, !tbaa !14
  %11450 = fmul double %11447, %11449
  %11451 = fneg double %11450
  %11452 = call double @llvm.fmuladd.f64(double %11443, double %11445, double %11451)
  %11453 = getelementptr inbounds %struct.doublecomplex, ptr %31, i32 0, i32 0
  store double %11452, ptr %11453, align 8, !tbaa !11
  %11454 = getelementptr inbounds %struct.doublecomplex, ptr %70, i32 0, i32 0
  %11455 = load double, ptr %11454, align 8, !tbaa !11
  %11456 = getelementptr inbounds %struct.doublecomplex, ptr %53, i32 0, i32 1
  %11457 = load double, ptr %11456, align 8, !tbaa !14
  %11458 = getelementptr inbounds %struct.doublecomplex, ptr %70, i32 0, i32 1
  %11459 = load double, ptr %11458, align 8, !tbaa !14
  %11460 = getelementptr inbounds %struct.doublecomplex, ptr %53, i32 0, i32 0
  %11461 = load double, ptr %11460, align 8, !tbaa !11
  %11462 = fmul double %11459, %11461
  %11463 = call double @llvm.fmuladd.f64(double %11455, double %11457, double %11462)
  %11464 = getelementptr inbounds %struct.doublecomplex, ptr %31, i32 0, i32 1
  store double %11463, ptr %11464, align 8, !tbaa !14
  %11465 = load ptr, ptr %14, align 8, !tbaa !5
  %11466 = load i32, ptr %21, align 4, !tbaa !9
  %11467 = sext i32 %11466 to i64
  %11468 = getelementptr inbounds %struct.doublecomplex, ptr %11465, i64 %11467
  %11469 = getelementptr inbounds %struct.doublecomplex, ptr %11468, i32 0, i32 0
  %11470 = load double, ptr %11469, align 8, !tbaa !11
  %11471 = getelementptr inbounds %struct.doublecomplex, ptr %31, i32 0, i32 0
  %11472 = load double, ptr %11471, align 8, !tbaa !11
  %11473 = fsub double %11470, %11472
  %11474 = getelementptr inbounds %struct.doublecomplex, ptr %30, i32 0, i32 0
  store double %11473, ptr %11474, align 8, !tbaa !11
  %11475 = load ptr, ptr %14, align 8, !tbaa !5
  %11476 = load i32, ptr %21, align 4, !tbaa !9
  %11477 = sext i32 %11476 to i64
  %11478 = getelementptr inbounds %struct.doublecomplex, ptr %11475, i64 %11477
  %11479 = getelementptr inbounds %struct.doublecomplex, ptr %11478, i32 0, i32 1
  %11480 = load double, ptr %11479, align 8, !tbaa !14
  %11481 = getelementptr inbounds %struct.doublecomplex, ptr %31, i32 0, i32 1
  %11482 = load double, ptr %11481, align 8, !tbaa !14
  %11483 = fsub double %11480, %11482
  %11484 = getelementptr inbounds %struct.doublecomplex, ptr %30, i32 0, i32 1
  store double %11483, ptr %11484, align 8, !tbaa !14
  %11485 = getelementptr inbounds %struct.doublecomplex, ptr %30, i32 0, i32 0
  %11486 = load double, ptr %11485, align 8, !tbaa !11
  %11487 = load ptr, ptr %14, align 8, !tbaa !5
  %11488 = load i32, ptr %20, align 4, !tbaa !9
  %11489 = sext i32 %11488 to i64
  %11490 = getelementptr inbounds %struct.doublecomplex, ptr %11487, i64 %11489
  %11491 = getelementptr inbounds %struct.doublecomplex, ptr %11490, i32 0, i32 0
  store double %11486, ptr %11491, align 8, !tbaa !11
  %11492 = getelementptr inbounds %struct.doublecomplex, ptr %30, i32 0, i32 1
  %11493 = load double, ptr %11492, align 8, !tbaa !14
  %11494 = load ptr, ptr %14, align 8, !tbaa !5
  %11495 = load i32, ptr %20, align 4, !tbaa !9
  %11496 = sext i32 %11495 to i64
  %11497 = getelementptr inbounds %struct.doublecomplex, ptr %11494, i64 %11496
  %11498 = getelementptr inbounds %struct.doublecomplex, ptr %11497, i32 0, i32 1
  store double %11493, ptr %11498, align 8, !tbaa !14
  br label %11499

11499:                                            ; preds = %11027
  %11500 = load i32, ptr %49, align 4, !tbaa !9
  %11501 = add nsw i32 %11500, 1
  store i32 %11501, ptr %49, align 4, !tbaa !9
  br label %11023, !llvm.loop !29

11502:                                            ; preds = %11023
  br label %19171

11503:                                            ; preds = %9792
  %11504 = load ptr, ptr %12, align 8, !tbaa !5
  %11505 = getelementptr inbounds %struct.doublecomplex, ptr %11504, i64 1
  %11506 = getelementptr inbounds %struct.doublecomplex, ptr %11505, i32 0, i32 0
  %11507 = load double, ptr %11506, align 8, !tbaa !11
  %11508 = getelementptr inbounds %struct.doublecomplex, ptr %59, i32 0, i32 0
  store double %11507, ptr %11508, align 8, !tbaa !11
  %11509 = load ptr, ptr %12, align 8, !tbaa !5
  %11510 = getelementptr inbounds %struct.doublecomplex, ptr %11509, i64 1
  %11511 = getelementptr inbounds %struct.doublecomplex, ptr %11510, i32 0, i32 1
  %11512 = load double, ptr %11511, align 8, !tbaa !14
  %11513 = getelementptr inbounds %struct.doublecomplex, ptr %59, i32 0, i32 1
  store double %11512, ptr %11513, align 8, !tbaa !14
  %11514 = call { double, double } @Cd(ptr noundef %59)
  %11515 = extractvalue { double, double } %11514, 0
  %11516 = extractvalue { double, double } %11514, 1
  %11517 = fneg double %11516
  %11518 = call ptr @_pCd(ptr noundef %31)
  %11519 = getelementptr inbounds { double, double }, ptr %11518, i32 0, i32 0
  %11520 = getelementptr inbounds { double, double }, ptr %11518, i32 0, i32 1
  store double %11515, ptr %11519, align 8
  store double %11517, ptr %11520, align 8
  %11521 = load ptr, ptr %13, align 8, !tbaa !5
  %11522 = getelementptr inbounds %struct.doublecomplex, ptr %11521, i32 0, i32 0
  %11523 = load double, ptr %11522, align 8, !tbaa !11
  %11524 = getelementptr inbounds %struct.doublecomplex, ptr %31, i32 0, i32 0
  %11525 = load double, ptr %11524, align 8, !tbaa !11
  %11526 = load ptr, ptr %13, align 8, !tbaa !5
  %11527 = getelementptr inbounds %struct.doublecomplex, ptr %11526, i32 0, i32 1
  %11528 = load double, ptr %11527, align 8, !tbaa !14
  %11529 = getelementptr inbounds %struct.doublecomplex, ptr %31, i32 0, i32 1
  %11530 = load double, ptr %11529, align 8, !tbaa !14
  %11531 = fmul double %11528, %11530
  %11532 = fneg double %11531
  %11533 = call double @llvm.fmuladd.f64(double %11523, double %11525, double %11532)
  %11534 = getelementptr inbounds %struct.doublecomplex, ptr %30, i32 0, i32 0
  store double %11533, ptr %11534, align 8, !tbaa !11
  %11535 = load ptr, ptr %13, align 8, !tbaa !5
  %11536 = getelementptr inbounds %struct.doublecomplex, ptr %11535, i32 0, i32 0
  %11537 = load double, ptr %11536, align 8, !tbaa !11
  %11538 = getelementptr inbounds %struct.doublecomplex, ptr %31, i32 0, i32 1
  %11539 = load double, ptr %11538, align 8, !tbaa !14
  %11540 = load ptr, ptr %13, align 8, !tbaa !5
  %11541 = getelementptr inbounds %struct.doublecomplex, ptr %11540, i32 0, i32 1
  %11542 = load double, ptr %11541, align 8, !tbaa !14
  %11543 = getelementptr inbounds %struct.doublecomplex, ptr %31, i32 0, i32 0
  %11544 = load double, ptr %11543, align 8, !tbaa !11
  %11545 = fmul double %11542, %11544
  %11546 = call double @llvm.fmuladd.f64(double %11537, double %11539, double %11545)
  %11547 = getelementptr inbounds %struct.doublecomplex, ptr %30, i32 0, i32 1
  store double %11546, ptr %11547, align 8, !tbaa !14
  %11548 = getelementptr inbounds %struct.doublecomplex, ptr %30, i32 0, i32 0
  %11549 = load double, ptr %11548, align 8, !tbaa !11
  %11550 = getelementptr inbounds %struct.doublecomplex, ptr %50, i32 0, i32 0
  store double %11549, ptr %11550, align 8, !tbaa !11
  %11551 = getelementptr inbounds %struct.doublecomplex, ptr %30, i32 0, i32 1
  %11552 = load double, ptr %11551, align 8, !tbaa !14
  %11553 = getelementptr inbounds %struct.doublecomplex, ptr %50, i32 0, i32 1
  store double %11552, ptr %11553, align 8, !tbaa !14
  %11554 = load ptr, ptr %12, align 8, !tbaa !5
  %11555 = getelementptr inbounds %struct.doublecomplex, ptr %11554, i64 2
  %11556 = getelementptr inbounds %struct.doublecomplex, ptr %11555, i32 0, i32 0
  %11557 = load double, ptr %11556, align 8, !tbaa !11
  %11558 = getelementptr inbounds %struct.doublecomplex, ptr %60, i32 0, i32 0
  store double %11557, ptr %11558, align 8, !tbaa !11
  %11559 = load ptr, ptr %12, align 8, !tbaa !5
  %11560 = getelementptr inbounds %struct.doublecomplex, ptr %11559, i64 2
  %11561 = getelementptr inbounds %struct.doublecomplex, ptr %11560, i32 0, i32 1
  %11562 = load double, ptr %11561, align 8, !tbaa !14
  %11563 = getelementptr inbounds %struct.doublecomplex, ptr %60, i32 0, i32 1
  store double %11562, ptr %11563, align 8, !tbaa !14
  %11564 = call { double, double } @Cd(ptr noundef %60)
  %11565 = extractvalue { double, double } %11564, 0
  %11566 = extractvalue { double, double } %11564, 1
  %11567 = fneg double %11566
  %11568 = call ptr @_pCd(ptr noundef %31)
  %11569 = getelementptr inbounds { double, double }, ptr %11568, i32 0, i32 0
  %11570 = getelementptr inbounds { double, double }, ptr %11568, i32 0, i32 1
  store double %11565, ptr %11569, align 8
  store double %11567, ptr %11570, align 8
  %11571 = load ptr, ptr %13, align 8, !tbaa !5
  %11572 = getelementptr inbounds %struct.doublecomplex, ptr %11571, i32 0, i32 0
  %11573 = load double, ptr %11572, align 8, !tbaa !11
  %11574 = getelementptr inbounds %struct.doublecomplex, ptr %31, i32 0, i32 0
  %11575 = load double, ptr %11574, align 8, !tbaa !11
  %11576 = load ptr, ptr %13, align 8, !tbaa !5
  %11577 = getelementptr inbounds %struct.doublecomplex, ptr %11576, i32 0, i32 1
  %11578 = load double, ptr %11577, align 8, !tbaa !14
  %11579 = getelementptr inbounds %struct.doublecomplex, ptr %31, i32 0, i32 1
  %11580 = load double, ptr %11579, align 8, !tbaa !14
  %11581 = fmul double %11578, %11580
  %11582 = fneg double %11581
  %11583 = call double @llvm.fmuladd.f64(double %11573, double %11575, double %11582)
  %11584 = getelementptr inbounds %struct.doublecomplex, ptr %30, i32 0, i32 0
  store double %11583, ptr %11584, align 8, !tbaa !11
  %11585 = load ptr, ptr %13, align 8, !tbaa !5
  %11586 = getelementptr inbounds %struct.doublecomplex, ptr %11585, i32 0, i32 0
  %11587 = load double, ptr %11586, align 8, !tbaa !11
  %11588 = getelementptr inbounds %struct.doublecomplex, ptr %31, i32 0, i32 1
  %11589 = load double, ptr %11588, align 8, !tbaa !14
  %11590 = load ptr, ptr %13, align 8, !tbaa !5
  %11591 = getelementptr inbounds %struct.doublecomplex, ptr %11590, i32 0, i32 1
  %11592 = load double, ptr %11591, align 8, !tbaa !14
  %11593 = getelementptr inbounds %struct.doublecomplex, ptr %31, i32 0, i32 0
  %11594 = load double, ptr %11593, align 8, !tbaa !11
  %11595 = fmul double %11592, %11594
  %11596 = call double @llvm.fmuladd.f64(double %11587, double %11589, double %11595)
  %11597 = getelementptr inbounds %struct.doublecomplex, ptr %30, i32 0, i32 1
  store double %11596, ptr %11597, align 8, !tbaa !14
  %11598 = getelementptr inbounds %struct.doublecomplex, ptr %30, i32 0, i32 0
  %11599 = load double, ptr %11598, align 8, !tbaa !11
  %11600 = getelementptr inbounds %struct.doublecomplex, ptr %51, i32 0, i32 0
  store double %11599, ptr %11600, align 8, !tbaa !11
  %11601 = getelementptr inbounds %struct.doublecomplex, ptr %30, i32 0, i32 1
  %11602 = load double, ptr %11601, align 8, !tbaa !14
  %11603 = getelementptr inbounds %struct.doublecomplex, ptr %51, i32 0, i32 1
  store double %11602, ptr %11603, align 8, !tbaa !14
  %11604 = load ptr, ptr %12, align 8, !tbaa !5
  %11605 = getelementptr inbounds %struct.doublecomplex, ptr %11604, i64 3
  %11606 = getelementptr inbounds %struct.doublecomplex, ptr %11605, i32 0, i32 0
  %11607 = load double, ptr %11606, align 8, !tbaa !11
  %11608 = getelementptr inbounds %struct.doublecomplex, ptr %61, i32 0, i32 0
  store double %11607, ptr %11608, align 8, !tbaa !11
  %11609 = load ptr, ptr %12, align 8, !tbaa !5
  %11610 = getelementptr inbounds %struct.doublecomplex, ptr %11609, i64 3
  %11611 = getelementptr inbounds %struct.doublecomplex, ptr %11610, i32 0, i32 1
  %11612 = load double, ptr %11611, align 8, !tbaa !14
  %11613 = getelementptr inbounds %struct.doublecomplex, ptr %61, i32 0, i32 1
  store double %11612, ptr %11613, align 8, !tbaa !14
  %11614 = call { double, double } @Cd(ptr noundef %61)
  %11615 = extractvalue { double, double } %11614, 0
  %11616 = extractvalue { double, double } %11614, 1
  %11617 = fneg double %11616
  %11618 = call ptr @_pCd(ptr noundef %31)
  %11619 = getelementptr inbounds { double, double }, ptr %11618, i32 0, i32 0
  %11620 = getelementptr inbounds { double, double }, ptr %11618, i32 0, i32 1
  store double %11615, ptr %11619, align 8
  store double %11617, ptr %11620, align 8
  %11621 = load ptr, ptr %13, align 8, !tbaa !5
  %11622 = getelementptr inbounds %struct.doublecomplex, ptr %11621, i32 0, i32 0
  %11623 = load double, ptr %11622, align 8, !tbaa !11
  %11624 = getelementptr inbounds %struct.doublecomplex, ptr %31, i32 0, i32 0
  %11625 = load double, ptr %11624, align 8, !tbaa !11
  %11626 = load ptr, ptr %13, align 8, !tbaa !5
  %11627 = getelementptr inbounds %struct.doublecomplex, ptr %11626, i32 0, i32 1
  %11628 = load double, ptr %11627, align 8, !tbaa !14
  %11629 = getelementptr inbounds %struct.doublecomplex, ptr %31, i32 0, i32 1
  %11630 = load double, ptr %11629, align 8, !tbaa !14
  %11631 = fmul double %11628, %11630
  %11632 = fneg double %11631
  %11633 = call double @llvm.fmuladd.f64(double %11623, double %11625, double %11632)
  %11634 = getelementptr inbounds %struct.doublecomplex, ptr %30, i32 0, i32 0
  store double %11633, ptr %11634, align 8, !tbaa !11
  %11635 = load ptr, ptr %13, align 8, !tbaa !5
  %11636 = getelementptr inbounds %struct.doublecomplex, ptr %11635, i32 0, i32 0
  %11637 = load double, ptr %11636, align 8, !tbaa !11
  %11638 = getelementptr inbounds %struct.doublecomplex, ptr %31, i32 0, i32 1
  %11639 = load double, ptr %11638, align 8, !tbaa !14
  %11640 = load ptr, ptr %13, align 8, !tbaa !5
  %11641 = getelementptr inbounds %struct.doublecomplex, ptr %11640, i32 0, i32 1
  %11642 = load double, ptr %11641, align 8, !tbaa !14
  %11643 = getelementptr inbounds %struct.doublecomplex, ptr %31, i32 0, i32 0
  %11644 = load double, ptr %11643, align 8, !tbaa !11
  %11645 = fmul double %11642, %11644
  %11646 = call double @llvm.fmuladd.f64(double %11637, double %11639, double %11645)
  %11647 = getelementptr inbounds %struct.doublecomplex, ptr %30, i32 0, i32 1
  store double %11646, ptr %11647, align 8, !tbaa !14
  %11648 = getelementptr inbounds %struct.doublecomplex, ptr %30, i32 0, i32 0
  %11649 = load double, ptr %11648, align 8, !tbaa !11
  %11650 = getelementptr inbounds %struct.doublecomplex, ptr %52, i32 0, i32 0
  store double %11649, ptr %11650, align 8, !tbaa !11
  %11651 = getelementptr inbounds %struct.doublecomplex, ptr %30, i32 0, i32 1
  %11652 = load double, ptr %11651, align 8, !tbaa !14
  %11653 = getelementptr inbounds %struct.doublecomplex, ptr %52, i32 0, i32 1
  store double %11652, ptr %11653, align 8, !tbaa !14
  %11654 = load ptr, ptr %12, align 8, !tbaa !5
  %11655 = getelementptr inbounds %struct.doublecomplex, ptr %11654, i64 4
  %11656 = getelementptr inbounds %struct.doublecomplex, ptr %11655, i32 0, i32 0
  %11657 = load double, ptr %11656, align 8, !tbaa !11
  %11658 = getelementptr inbounds %struct.doublecomplex, ptr %62, i32 0, i32 0
  store double %11657, ptr %11658, align 8, !tbaa !11
  %11659 = load ptr, ptr %12, align 8, !tbaa !5
  %11660 = getelementptr inbounds %struct.doublecomplex, ptr %11659, i64 4
  %11661 = getelementptr inbounds %struct.doublecomplex, ptr %11660, i32 0, i32 1
  %11662 = load double, ptr %11661, align 8, !tbaa !14
  %11663 = getelementptr inbounds %struct.doublecomplex, ptr %62, i32 0, i32 1
  store double %11662, ptr %11663, align 8, !tbaa !14
  %11664 = call { double, double } @Cd(ptr noundef %62)
  %11665 = extractvalue { double, double } %11664, 0
  %11666 = extractvalue { double, double } %11664, 1
  %11667 = fneg double %11666
  %11668 = call ptr @_pCd(ptr noundef %31)
  %11669 = getelementptr inbounds { double, double }, ptr %11668, i32 0, i32 0
  %11670 = getelementptr inbounds { double, double }, ptr %11668, i32 0, i32 1
  store double %11665, ptr %11669, align 8
  store double %11667, ptr %11670, align 8
  %11671 = load ptr, ptr %13, align 8, !tbaa !5
  %11672 = getelementptr inbounds %struct.doublecomplex, ptr %11671, i32 0, i32 0
  %11673 = load double, ptr %11672, align 8, !tbaa !11
  %11674 = getelementptr inbounds %struct.doublecomplex, ptr %31, i32 0, i32 0
  %11675 = load double, ptr %11674, align 8, !tbaa !11
  %11676 = load ptr, ptr %13, align 8, !tbaa !5
  %11677 = getelementptr inbounds %struct.doublecomplex, ptr %11676, i32 0, i32 1
  %11678 = load double, ptr %11677, align 8, !tbaa !14
  %11679 = getelementptr inbounds %struct.doublecomplex, ptr %31, i32 0, i32 1
  %11680 = load double, ptr %11679, align 8, !tbaa !14
  %11681 = fmul double %11678, %11680
  %11682 = fneg double %11681
  %11683 = call double @llvm.fmuladd.f64(double %11673, double %11675, double %11682)
  %11684 = getelementptr inbounds %struct.doublecomplex, ptr %30, i32 0, i32 0
  store double %11683, ptr %11684, align 8, !tbaa !11
  %11685 = load ptr, ptr %13, align 8, !tbaa !5
  %11686 = getelementptr inbounds %struct.doublecomplex, ptr %11685, i32 0, i32 0
  %11687 = load double, ptr %11686, align 8, !tbaa !11
  %11688 = getelementptr inbounds %struct.doublecomplex, ptr %31, i32 0, i32 1
  %11689 = load double, ptr %11688, align 8, !tbaa !14
  %11690 = load ptr, ptr %13, align 8, !tbaa !5
  %11691 = getelementptr inbounds %struct.doublecomplex, ptr %11690, i32 0, i32 1
  %11692 = load double, ptr %11691, align 8, !tbaa !14
  %11693 = getelementptr inbounds %struct.doublecomplex, ptr %31, i32 0, i32 0
  %11694 = load double, ptr %11693, align 8, !tbaa !11
  %11695 = fmul double %11692, %11694
  %11696 = call double @llvm.fmuladd.f64(double %11687, double %11689, double %11695)
  %11697 = getelementptr inbounds %struct.doublecomplex, ptr %30, i32 0, i32 1
  store double %11696, ptr %11697, align 8, !tbaa !14
  %11698 = getelementptr inbounds %struct.doublecomplex, ptr %30, i32 0, i32 0
  %11699 = load double, ptr %11698, align 8, !tbaa !11
  %11700 = getelementptr inbounds %struct.doublecomplex, ptr %53, i32 0, i32 0
  store double %11699, ptr %11700, align 8, !tbaa !11
  %11701 = getelementptr inbounds %struct.doublecomplex, ptr %30, i32 0, i32 1
  %11702 = load double, ptr %11701, align 8, !tbaa !14
  %11703 = getelementptr inbounds %struct.doublecomplex, ptr %53, i32 0, i32 1
  store double %11702, ptr %11703, align 8, !tbaa !14
  %11704 = load ptr, ptr %12, align 8, !tbaa !5
  %11705 = getelementptr inbounds %struct.doublecomplex, ptr %11704, i64 5
  %11706 = getelementptr inbounds %struct.doublecomplex, ptr %11705, i32 0, i32 0
  %11707 = load double, ptr %11706, align 8, !tbaa !11
  %11708 = getelementptr inbounds %struct.doublecomplex, ptr %63, i32 0, i32 0
  store double %11707, ptr %11708, align 8, !tbaa !11
  %11709 = load ptr, ptr %12, align 8, !tbaa !5
  %11710 = getelementptr inbounds %struct.doublecomplex, ptr %11709, i64 5
  %11711 = getelementptr inbounds %struct.doublecomplex, ptr %11710, i32 0, i32 1
  %11712 = load double, ptr %11711, align 8, !tbaa !14
  %11713 = getelementptr inbounds %struct.doublecomplex, ptr %63, i32 0, i32 1
  store double %11712, ptr %11713, align 8, !tbaa !14
  %11714 = call { double, double } @Cd(ptr noundef %63)
  %11715 = extractvalue { double, double } %11714, 0
  %11716 = extractvalue { double, double } %11714, 1
  %11717 = fneg double %11716
  %11718 = call ptr @_pCd(ptr noundef %31)
  %11719 = getelementptr inbounds { double, double }, ptr %11718, i32 0, i32 0
  %11720 = getelementptr inbounds { double, double }, ptr %11718, i32 0, i32 1
  store double %11715, ptr %11719, align 8
  store double %11717, ptr %11720, align 8
  %11721 = load ptr, ptr %13, align 8, !tbaa !5
  %11722 = getelementptr inbounds %struct.doublecomplex, ptr %11721, i32 0, i32 0
  %11723 = load double, ptr %11722, align 8, !tbaa !11
  %11724 = getelementptr inbounds %struct.doublecomplex, ptr %31, i32 0, i32 0
  %11725 = load double, ptr %11724, align 8, !tbaa !11
  %11726 = load ptr, ptr %13, align 8, !tbaa !5
  %11727 = getelementptr inbounds %struct.doublecomplex, ptr %11726, i32 0, i32 1
  %11728 = load double, ptr %11727, align 8, !tbaa !14
  %11729 = getelementptr inbounds %struct.doublecomplex, ptr %31, i32 0, i32 1
  %11730 = load double, ptr %11729, align 8, !tbaa !14
  %11731 = fmul double %11728, %11730
  %11732 = fneg double %11731
  %11733 = call double @llvm.fmuladd.f64(double %11723, double %11725, double %11732)
  %11734 = getelementptr inbounds %struct.doublecomplex, ptr %30, i32 0, i32 0
  store double %11733, ptr %11734, align 8, !tbaa !11
  %11735 = load ptr, ptr %13, align 8, !tbaa !5
  %11736 = getelementptr inbounds %struct.doublecomplex, ptr %11735, i32 0, i32 0
  %11737 = load double, ptr %11736, align 8, !tbaa !11
  %11738 = getelementptr inbounds %struct.doublecomplex, ptr %31, i32 0, i32 1
  %11739 = load double, ptr %11738, align 8, !tbaa !14
  %11740 = load ptr, ptr %13, align 8, !tbaa !5
  %11741 = getelementptr inbounds %struct.doublecomplex, ptr %11740, i32 0, i32 1
  %11742 = load double, ptr %11741, align 8, !tbaa !14
  %11743 = getelementptr inbounds %struct.doublecomplex, ptr %31, i32 0, i32 0
  %11744 = load double, ptr %11743, align 8, !tbaa !11
  %11745 = fmul double %11742, %11744
  %11746 = call double @llvm.fmuladd.f64(double %11737, double %11739, double %11745)
  %11747 = getelementptr inbounds %struct.doublecomplex, ptr %30, i32 0, i32 1
  store double %11746, ptr %11747, align 8, !tbaa !14
  %11748 = getelementptr inbounds %struct.doublecomplex, ptr %30, i32 0, i32 0
  %11749 = load double, ptr %11748, align 8, !tbaa !11
  %11750 = getelementptr inbounds %struct.doublecomplex, ptr %54, i32 0, i32 0
  store double %11749, ptr %11750, align 8, !tbaa !11
  %11751 = getelementptr inbounds %struct.doublecomplex, ptr %30, i32 0, i32 1
  %11752 = load double, ptr %11751, align 8, !tbaa !14
  %11753 = getelementptr inbounds %struct.doublecomplex, ptr %54, i32 0, i32 1
  store double %11752, ptr %11753, align 8, !tbaa !14
  %11754 = load ptr, ptr %10, align 8, !tbaa !5
  %11755 = load i32, ptr %11754, align 4, !tbaa !9
  store i32 %11755, ptr %19, align 4, !tbaa !9
  store i32 1, ptr %49, align 4, !tbaa !9
  br label %11756

11756:                                            ; preds = %12352, %11503
  %11757 = load i32, ptr %49, align 4, !tbaa !9
  %11758 = load i32, ptr %19, align 4, !tbaa !9
  %11759 = icmp sle i32 %11757, %11758
  br i1 %11759, label %11760, label %12355

11760:                                            ; preds = %11756
  %11761 = load i32, ptr %49, align 4, !tbaa !9
  %11762 = load i32, ptr %17, align 4, !tbaa !9
  %11763 = add nsw i32 %11761, %11762
  store i32 %11763, ptr %20, align 4, !tbaa !9
  %11764 = getelementptr inbounds %struct.doublecomplex, ptr %59, i32 0, i32 0
  %11765 = load double, ptr %11764, align 8, !tbaa !11
  %11766 = load ptr, ptr %14, align 8, !tbaa !5
  %11767 = load i32, ptr %20, align 4, !tbaa !9
  %11768 = sext i32 %11767 to i64
  %11769 = getelementptr inbounds %struct.doublecomplex, ptr %11766, i64 %11768
  %11770 = getelementptr inbounds %struct.doublecomplex, ptr %11769, i32 0, i32 0
  %11771 = load double, ptr %11770, align 8, !tbaa !11
  %11772 = getelementptr inbounds %struct.doublecomplex, ptr %59, i32 0, i32 1
  %11773 = load double, ptr %11772, align 8, !tbaa !14
  %11774 = load ptr, ptr %14, align 8, !tbaa !5
  %11775 = load i32, ptr %20, align 4, !tbaa !9
  %11776 = sext i32 %11775 to i64
  %11777 = getelementptr inbounds %struct.doublecomplex, ptr %11774, i64 %11776
  %11778 = getelementptr inbounds %struct.doublecomplex, ptr %11777, i32 0, i32 1
  %11779 = load double, ptr %11778, align 8, !tbaa !14
  %11780 = fmul double %11773, %11779
  %11781 = fneg double %11780
  %11782 = call double @llvm.fmuladd.f64(double %11765, double %11771, double %11781)
  %11783 = getelementptr inbounds %struct.doublecomplex, ptr %34, i32 0, i32 0
  store double %11782, ptr %11783, align 8, !tbaa !11
  %11784 = getelementptr inbounds %struct.doublecomplex, ptr %59, i32 0, i32 0
  %11785 = load double, ptr %11784, align 8, !tbaa !11
  %11786 = load ptr, ptr %14, align 8, !tbaa !5
  %11787 = load i32, ptr %20, align 4, !tbaa !9
  %11788 = sext i32 %11787 to i64
  %11789 = getelementptr inbounds %struct.doublecomplex, ptr %11786, i64 %11788
  %11790 = getelementptr inbounds %struct.doublecomplex, ptr %11789, i32 0, i32 1
  %11791 = load double, ptr %11790, align 8, !tbaa !14
  %11792 = getelementptr inbounds %struct.doublecomplex, ptr %59, i32 0, i32 1
  %11793 = load double, ptr %11792, align 8, !tbaa !14
  %11794 = load ptr, ptr %14, align 8, !tbaa !5
  %11795 = load i32, ptr %20, align 4, !tbaa !9
  %11796 = sext i32 %11795 to i64
  %11797 = getelementptr inbounds %struct.doublecomplex, ptr %11794, i64 %11796
  %11798 = getelementptr inbounds %struct.doublecomplex, ptr %11797, i32 0, i32 0
  %11799 = load double, ptr %11798, align 8, !tbaa !11
  %11800 = fmul double %11793, %11799
  %11801 = call double @llvm.fmuladd.f64(double %11785, double %11791, double %11800)
  %11802 = getelementptr inbounds %struct.doublecomplex, ptr %34, i32 0, i32 1
  store double %11801, ptr %11802, align 8, !tbaa !14
  %11803 = load i32, ptr %49, align 4, !tbaa !9
  %11804 = load i32, ptr %17, align 4, !tbaa !9
  %11805 = shl i32 %11804, 1
  %11806 = add nsw i32 %11803, %11805
  store i32 %11806, ptr %21, align 4, !tbaa !9
  %11807 = getelementptr inbounds %struct.doublecomplex, ptr %60, i32 0, i32 0
  %11808 = load double, ptr %11807, align 8, !tbaa !11
  %11809 = load ptr, ptr %14, align 8, !tbaa !5
  %11810 = load i32, ptr %21, align 4, !tbaa !9
  %11811 = sext i32 %11810 to i64
  %11812 = getelementptr inbounds %struct.doublecomplex, ptr %11809, i64 %11811
  %11813 = getelementptr inbounds %struct.doublecomplex, ptr %11812, i32 0, i32 0
  %11814 = load double, ptr %11813, align 8, !tbaa !11
  %11815 = getelementptr inbounds %struct.doublecomplex, ptr %60, i32 0, i32 1
  %11816 = load double, ptr %11815, align 8, !tbaa !14
  %11817 = load ptr, ptr %14, align 8, !tbaa !5
  %11818 = load i32, ptr %21, align 4, !tbaa !9
  %11819 = sext i32 %11818 to i64
  %11820 = getelementptr inbounds %struct.doublecomplex, ptr %11817, i64 %11819
  %11821 = getelementptr inbounds %struct.doublecomplex, ptr %11820, i32 0, i32 1
  %11822 = load double, ptr %11821, align 8, !tbaa !14
  %11823 = fmul double %11816, %11822
  %11824 = fneg double %11823
  %11825 = call double @llvm.fmuladd.f64(double %11808, double %11814, double %11824)
  %11826 = getelementptr inbounds %struct.doublecomplex, ptr %35, i32 0, i32 0
  store double %11825, ptr %11826, align 8, !tbaa !11
  %11827 = getelementptr inbounds %struct.doublecomplex, ptr %60, i32 0, i32 0
  %11828 = load double, ptr %11827, align 8, !tbaa !11
  %11829 = load ptr, ptr %14, align 8, !tbaa !5
  %11830 = load i32, ptr %21, align 4, !tbaa !9
  %11831 = sext i32 %11830 to i64
  %11832 = getelementptr inbounds %struct.doublecomplex, ptr %11829, i64 %11831
  %11833 = getelementptr inbounds %struct.doublecomplex, ptr %11832, i32 0, i32 1
  %11834 = load double, ptr %11833, align 8, !tbaa !14
  %11835 = getelementptr inbounds %struct.doublecomplex, ptr %60, i32 0, i32 1
  %11836 = load double, ptr %11835, align 8, !tbaa !14
  %11837 = load ptr, ptr %14, align 8, !tbaa !5
  %11838 = load i32, ptr %21, align 4, !tbaa !9
  %11839 = sext i32 %11838 to i64
  %11840 = getelementptr inbounds %struct.doublecomplex, ptr %11837, i64 %11839
  %11841 = getelementptr inbounds %struct.doublecomplex, ptr %11840, i32 0, i32 0
  %11842 = load double, ptr %11841, align 8, !tbaa !11
  %11843 = fmul double %11836, %11842
  %11844 = call double @llvm.fmuladd.f64(double %11828, double %11834, double %11843)
  %11845 = getelementptr inbounds %struct.doublecomplex, ptr %35, i32 0, i32 1
  store double %11844, ptr %11845, align 8, !tbaa !14
  %11846 = getelementptr inbounds %struct.doublecomplex, ptr %34, i32 0, i32 0
  %11847 = load double, ptr %11846, align 8, !tbaa !11
  %11848 = getelementptr inbounds %struct.doublecomplex, ptr %35, i32 0, i32 0
  %11849 = load double, ptr %11848, align 8, !tbaa !11
  %11850 = fadd double %11847, %11849
  %11851 = getelementptr inbounds %struct.doublecomplex, ptr %33, i32 0, i32 0
  store double %11850, ptr %11851, align 8, !tbaa !11
  %11852 = getelementptr inbounds %struct.doublecomplex, ptr %34, i32 0, i32 1
  %11853 = load double, ptr %11852, align 8, !tbaa !14
  %11854 = getelementptr inbounds %struct.doublecomplex, ptr %35, i32 0, i32 1
  %11855 = load double, ptr %11854, align 8, !tbaa !14
  %11856 = fadd double %11853, %11855
  %11857 = getelementptr inbounds %struct.doublecomplex, ptr %33, i32 0, i32 1
  store double %11856, ptr %11857, align 8, !tbaa !14
  %11858 = load i32, ptr %49, align 4, !tbaa !9
  %11859 = load i32, ptr %17, align 4, !tbaa !9
  %11860 = mul nsw i32 %11859, 3
  %11861 = add nsw i32 %11858, %11860
  store i32 %11861, ptr %22, align 4, !tbaa !9
  %11862 = getelementptr inbounds %struct.doublecomplex, ptr %61, i32 0, i32 0
  %11863 = load double, ptr %11862, align 8, !tbaa !11
  %11864 = load ptr, ptr %14, align 8, !tbaa !5
  %11865 = load i32, ptr %22, align 4, !tbaa !9
  %11866 = sext i32 %11865 to i64
  %11867 = getelementptr inbounds %struct.doublecomplex, ptr %11864, i64 %11866
  %11868 = getelementptr inbounds %struct.doublecomplex, ptr %11867, i32 0, i32 0
  %11869 = load double, ptr %11868, align 8, !tbaa !11
  %11870 = getelementptr inbounds %struct.doublecomplex, ptr %61, i32 0, i32 1
  %11871 = load double, ptr %11870, align 8, !tbaa !14
  %11872 = load ptr, ptr %14, align 8, !tbaa !5
  %11873 = load i32, ptr %22, align 4, !tbaa !9
  %11874 = sext i32 %11873 to i64
  %11875 = getelementptr inbounds %struct.doublecomplex, ptr %11872, i64 %11874
  %11876 = getelementptr inbounds %struct.doublecomplex, ptr %11875, i32 0, i32 1
  %11877 = load double, ptr %11876, align 8, !tbaa !14
  %11878 = fmul double %11871, %11877
  %11879 = fneg double %11878
  %11880 = call double @llvm.fmuladd.f64(double %11863, double %11869, double %11879)
  %11881 = getelementptr inbounds %struct.doublecomplex, ptr %36, i32 0, i32 0
  store double %11880, ptr %11881, align 8, !tbaa !11
  %11882 = getelementptr inbounds %struct.doublecomplex, ptr %61, i32 0, i32 0
  %11883 = load double, ptr %11882, align 8, !tbaa !11
  %11884 = load ptr, ptr %14, align 8, !tbaa !5
  %11885 = load i32, ptr %22, align 4, !tbaa !9
  %11886 = sext i32 %11885 to i64
  %11887 = getelementptr inbounds %struct.doublecomplex, ptr %11884, i64 %11886
  %11888 = getelementptr inbounds %struct.doublecomplex, ptr %11887, i32 0, i32 1
  %11889 = load double, ptr %11888, align 8, !tbaa !14
  %11890 = getelementptr inbounds %struct.doublecomplex, ptr %61, i32 0, i32 1
  %11891 = load double, ptr %11890, align 8, !tbaa !14
  %11892 = load ptr, ptr %14, align 8, !tbaa !5
  %11893 = load i32, ptr %22, align 4, !tbaa !9
  %11894 = sext i32 %11893 to i64
  %11895 = getelementptr inbounds %struct.doublecomplex, ptr %11892, i64 %11894
  %11896 = getelementptr inbounds %struct.doublecomplex, ptr %11895, i32 0, i32 0
  %11897 = load double, ptr %11896, align 8, !tbaa !11
  %11898 = fmul double %11891, %11897
  %11899 = call double @llvm.fmuladd.f64(double %11883, double %11889, double %11898)
  %11900 = getelementptr inbounds %struct.doublecomplex, ptr %36, i32 0, i32 1
  store double %11899, ptr %11900, align 8, !tbaa !14
  %11901 = getelementptr inbounds %struct.doublecomplex, ptr %33, i32 0, i32 0
  %11902 = load double, ptr %11901, align 8, !tbaa !11
  %11903 = getelementptr inbounds %struct.doublecomplex, ptr %36, i32 0, i32 0
  %11904 = load double, ptr %11903, align 8, !tbaa !11
  %11905 = fadd double %11902, %11904
  %11906 = getelementptr inbounds %struct.doublecomplex, ptr %32, i32 0, i32 0
  store double %11905, ptr %11906, align 8, !tbaa !11
  %11907 = getelementptr inbounds %struct.doublecomplex, ptr %33, i32 0, i32 1
  %11908 = load double, ptr %11907, align 8, !tbaa !14
  %11909 = getelementptr inbounds %struct.doublecomplex, ptr %36, i32 0, i32 1
  %11910 = load double, ptr %11909, align 8, !tbaa !14
  %11911 = fadd double %11908, %11910
  %11912 = getelementptr inbounds %struct.doublecomplex, ptr %32, i32 0, i32 1
  store double %11911, ptr %11912, align 8, !tbaa !14
  %11913 = load i32, ptr %49, align 4, !tbaa !9
  %11914 = load i32, ptr %17, align 4, !tbaa !9
  %11915 = shl i32 %11914, 2
  %11916 = add nsw i32 %11913, %11915
  store i32 %11916, ptr %23, align 4, !tbaa !9
  %11917 = getelementptr inbounds %struct.doublecomplex, ptr %62, i32 0, i32 0
  %11918 = load double, ptr %11917, align 8, !tbaa !11
  %11919 = load ptr, ptr %14, align 8, !tbaa !5
  %11920 = load i32, ptr %23, align 4, !tbaa !9
  %11921 = sext i32 %11920 to i64
  %11922 = getelementptr inbounds %struct.doublecomplex, ptr %11919, i64 %11921
  %11923 = getelementptr inbounds %struct.doublecomplex, ptr %11922, i32 0, i32 0
  %11924 = load double, ptr %11923, align 8, !tbaa !11
  %11925 = getelementptr inbounds %struct.doublecomplex, ptr %62, i32 0, i32 1
  %11926 = load double, ptr %11925, align 8, !tbaa !14
  %11927 = load ptr, ptr %14, align 8, !tbaa !5
  %11928 = load i32, ptr %23, align 4, !tbaa !9
  %11929 = sext i32 %11928 to i64
  %11930 = getelementptr inbounds %struct.doublecomplex, ptr %11927, i64 %11929
  %11931 = getelementptr inbounds %struct.doublecomplex, ptr %11930, i32 0, i32 1
  %11932 = load double, ptr %11931, align 8, !tbaa !14
  %11933 = fmul double %11926, %11932
  %11934 = fneg double %11933
  %11935 = call double @llvm.fmuladd.f64(double %11918, double %11924, double %11934)
  %11936 = getelementptr inbounds %struct.doublecomplex, ptr %37, i32 0, i32 0
  store double %11935, ptr %11936, align 8, !tbaa !11
  %11937 = getelementptr inbounds %struct.doublecomplex, ptr %62, i32 0, i32 0
  %11938 = load double, ptr %11937, align 8, !tbaa !11
  %11939 = load ptr, ptr %14, align 8, !tbaa !5
  %11940 = load i32, ptr %23, align 4, !tbaa !9
  %11941 = sext i32 %11940 to i64
  %11942 = getelementptr inbounds %struct.doublecomplex, ptr %11939, i64 %11941
  %11943 = getelementptr inbounds %struct.doublecomplex, ptr %11942, i32 0, i32 1
  %11944 = load double, ptr %11943, align 8, !tbaa !14
  %11945 = getelementptr inbounds %struct.doublecomplex, ptr %62, i32 0, i32 1
  %11946 = load double, ptr %11945, align 8, !tbaa !14
  %11947 = load ptr, ptr %14, align 8, !tbaa !5
  %11948 = load i32, ptr %23, align 4, !tbaa !9
  %11949 = sext i32 %11948 to i64
  %11950 = getelementptr inbounds %struct.doublecomplex, ptr %11947, i64 %11949
  %11951 = getelementptr inbounds %struct.doublecomplex, ptr %11950, i32 0, i32 0
  %11952 = load double, ptr %11951, align 8, !tbaa !11
  %11953 = fmul double %11946, %11952
  %11954 = call double @llvm.fmuladd.f64(double %11938, double %11944, double %11953)
  %11955 = getelementptr inbounds %struct.doublecomplex, ptr %37, i32 0, i32 1
  store double %11954, ptr %11955, align 8, !tbaa !14
  %11956 = getelementptr inbounds %struct.doublecomplex, ptr %32, i32 0, i32 0
  %11957 = load double, ptr %11956, align 8, !tbaa !11
  %11958 = getelementptr inbounds %struct.doublecomplex, ptr %37, i32 0, i32 0
  %11959 = load double, ptr %11958, align 8, !tbaa !11
  %11960 = fadd double %11957, %11959
  %11961 = getelementptr inbounds %struct.doublecomplex, ptr %31, i32 0, i32 0
  store double %11960, ptr %11961, align 8, !tbaa !11
  %11962 = getelementptr inbounds %struct.doublecomplex, ptr %32, i32 0, i32 1
  %11963 = load double, ptr %11962, align 8, !tbaa !14
  %11964 = getelementptr inbounds %struct.doublecomplex, ptr %37, i32 0, i32 1
  %11965 = load double, ptr %11964, align 8, !tbaa !14
  %11966 = fadd double %11963, %11965
  %11967 = getelementptr inbounds %struct.doublecomplex, ptr %31, i32 0, i32 1
  store double %11966, ptr %11967, align 8, !tbaa !14
  %11968 = load i32, ptr %49, align 4, !tbaa !9
  %11969 = load i32, ptr %17, align 4, !tbaa !9
  %11970 = mul nsw i32 %11969, 5
  %11971 = add nsw i32 %11968, %11970
  store i32 %11971, ptr %24, align 4, !tbaa !9
  %11972 = getelementptr inbounds %struct.doublecomplex, ptr %63, i32 0, i32 0
  %11973 = load double, ptr %11972, align 8, !tbaa !11
  %11974 = load ptr, ptr %14, align 8, !tbaa !5
  %11975 = load i32, ptr %24, align 4, !tbaa !9
  %11976 = sext i32 %11975 to i64
  %11977 = getelementptr inbounds %struct.doublecomplex, ptr %11974, i64 %11976
  %11978 = getelementptr inbounds %struct.doublecomplex, ptr %11977, i32 0, i32 0
  %11979 = load double, ptr %11978, align 8, !tbaa !11
  %11980 = getelementptr inbounds %struct.doublecomplex, ptr %63, i32 0, i32 1
  %11981 = load double, ptr %11980, align 8, !tbaa !14
  %11982 = load ptr, ptr %14, align 8, !tbaa !5
  %11983 = load i32, ptr %24, align 4, !tbaa !9
  %11984 = sext i32 %11983 to i64
  %11985 = getelementptr inbounds %struct.doublecomplex, ptr %11982, i64 %11984
  %11986 = getelementptr inbounds %struct.doublecomplex, ptr %11985, i32 0, i32 1
  %11987 = load double, ptr %11986, align 8, !tbaa !14
  %11988 = fmul double %11981, %11987
  %11989 = fneg double %11988
  %11990 = call double @llvm.fmuladd.f64(double %11973, double %11979, double %11989)
  %11991 = getelementptr inbounds %struct.doublecomplex, ptr %38, i32 0, i32 0
  store double %11990, ptr %11991, align 8, !tbaa !11
  %11992 = getelementptr inbounds %struct.doublecomplex, ptr %63, i32 0, i32 0
  %11993 = load double, ptr %11992, align 8, !tbaa !11
  %11994 = load ptr, ptr %14, align 8, !tbaa !5
  %11995 = load i32, ptr %24, align 4, !tbaa !9
  %11996 = sext i32 %11995 to i64
  %11997 = getelementptr inbounds %struct.doublecomplex, ptr %11994, i64 %11996
  %11998 = getelementptr inbounds %struct.doublecomplex, ptr %11997, i32 0, i32 1
  %11999 = load double, ptr %11998, align 8, !tbaa !14
  %12000 = getelementptr inbounds %struct.doublecomplex, ptr %63, i32 0, i32 1
  %12001 = load double, ptr %12000, align 8, !tbaa !14
  %12002 = load ptr, ptr %14, align 8, !tbaa !5
  %12003 = load i32, ptr %24, align 4, !tbaa !9
  %12004 = sext i32 %12003 to i64
  %12005 = getelementptr inbounds %struct.doublecomplex, ptr %12002, i64 %12004
  %12006 = getelementptr inbounds %struct.doublecomplex, ptr %12005, i32 0, i32 0
  %12007 = load double, ptr %12006, align 8, !tbaa !11
  %12008 = fmul double %12001, %12007
  %12009 = call double @llvm.fmuladd.f64(double %11993, double %11999, double %12008)
  %12010 = getelementptr inbounds %struct.doublecomplex, ptr %38, i32 0, i32 1
  store double %12009, ptr %12010, align 8, !tbaa !14
  %12011 = getelementptr inbounds %struct.doublecomplex, ptr %31, i32 0, i32 0
  %12012 = load double, ptr %12011, align 8, !tbaa !11
  %12013 = getelementptr inbounds %struct.doublecomplex, ptr %38, i32 0, i32 0
  %12014 = load double, ptr %12013, align 8, !tbaa !11
  %12015 = fadd double %12012, %12014
  %12016 = getelementptr inbounds %struct.doublecomplex, ptr %30, i32 0, i32 0
  store double %12015, ptr %12016, align 8, !tbaa !11
  %12017 = getelementptr inbounds %struct.doublecomplex, ptr %31, i32 0, i32 1
  %12018 = load double, ptr %12017, align 8, !tbaa !14
  %12019 = getelementptr inbounds %struct.doublecomplex, ptr %38, i32 0, i32 1
  %12020 = load double, ptr %12019, align 8, !tbaa !14
  %12021 = fadd double %12018, %12020
  %12022 = getelementptr inbounds %struct.doublecomplex, ptr %30, i32 0, i32 1
  store double %12021, ptr %12022, align 8, !tbaa !14
  %12023 = getelementptr inbounds %struct.doublecomplex, ptr %30, i32 0, i32 0
  %12024 = load double, ptr %12023, align 8, !tbaa !11
  %12025 = getelementptr inbounds %struct.doublecomplex, ptr %70, i32 0, i32 0
  store double %12024, ptr %12025, align 8, !tbaa !11
  %12026 = getelementptr inbounds %struct.doublecomplex, ptr %30, i32 0, i32 1
  %12027 = load double, ptr %12026, align 8, !tbaa !14
  %12028 = getelementptr inbounds %struct.doublecomplex, ptr %70, i32 0, i32 1
  store double %12027, ptr %12028, align 8, !tbaa !14
  %12029 = load i32, ptr %49, align 4, !tbaa !9
  %12030 = load i32, ptr %17, align 4, !tbaa !9
  %12031 = add nsw i32 %12029, %12030
  store i32 %12031, ptr %20, align 4, !tbaa !9
  %12032 = load i32, ptr %49, align 4, !tbaa !9
  %12033 = load i32, ptr %17, align 4, !tbaa !9
  %12034 = add nsw i32 %12032, %12033
  store i32 %12034, ptr %21, align 4, !tbaa !9
  %12035 = getelementptr inbounds %struct.doublecomplex, ptr %70, i32 0, i32 0
  %12036 = load double, ptr %12035, align 8, !tbaa !11
  %12037 = getelementptr inbounds %struct.doublecomplex, ptr %50, i32 0, i32 0
  %12038 = load double, ptr %12037, align 8, !tbaa !11
  %12039 = getelementptr inbounds %struct.doublecomplex, ptr %70, i32 0, i32 1
  %12040 = load double, ptr %12039, align 8, !tbaa !14
  %12041 = getelementptr inbounds %struct.doublecomplex, ptr %50, i32 0, i32 1
  %12042 = load double, ptr %12041, align 8, !tbaa !14
  %12043 = fmul double %12040, %12042
  %12044 = fneg double %12043
  %12045 = call double @llvm.fmuladd.f64(double %12036, double %12038, double %12044)
  %12046 = getelementptr inbounds %struct.doublecomplex, ptr %31, i32 0, i32 0
  store double %12045, ptr %12046, align 8, !tbaa !11
  %12047 = getelementptr inbounds %struct.doublecomplex, ptr %70, i32 0, i32 0
  %12048 = load double, ptr %12047, align 8, !tbaa !11
  %12049 = getelementptr inbounds %struct.doublecomplex, ptr %50, i32 0, i32 1
  %12050 = load double, ptr %12049, align 8, !tbaa !14
  %12051 = getelementptr inbounds %struct.doublecomplex, ptr %70, i32 0, i32 1
  %12052 = load double, ptr %12051, align 8, !tbaa !14
  %12053 = getelementptr inbounds %struct.doublecomplex, ptr %50, i32 0, i32 0
  %12054 = load double, ptr %12053, align 8, !tbaa !11
  %12055 = fmul double %12052, %12054
  %12056 = call double @llvm.fmuladd.f64(double %12048, double %12050, double %12055)
  %12057 = getelementptr inbounds %struct.doublecomplex, ptr %31, i32 0, i32 1
  store double %12056, ptr %12057, align 8, !tbaa !14
  %12058 = load ptr, ptr %14, align 8, !tbaa !5
  %12059 = load i32, ptr %21, align 4, !tbaa !9
  %12060 = sext i32 %12059 to i64
  %12061 = getelementptr inbounds %struct.doublecomplex, ptr %12058, i64 %12060
  %12062 = getelementptr inbounds %struct.doublecomplex, ptr %12061, i32 0, i32 0
  %12063 = load double, ptr %12062, align 8, !tbaa !11
  %12064 = getelementptr inbounds %struct.doublecomplex, ptr %31, i32 0, i32 0
  %12065 = load double, ptr %12064, align 8, !tbaa !11
  %12066 = fsub double %12063, %12065
  %12067 = getelementptr inbounds %struct.doublecomplex, ptr %30, i32 0, i32 0
  store double %12066, ptr %12067, align 8, !tbaa !11
  %12068 = load ptr, ptr %14, align 8, !tbaa !5
  %12069 = load i32, ptr %21, align 4, !tbaa !9
  %12070 = sext i32 %12069 to i64
  %12071 = getelementptr inbounds %struct.doublecomplex, ptr %12068, i64 %12070
  %12072 = getelementptr inbounds %struct.doublecomplex, ptr %12071, i32 0, i32 1
  %12073 = load double, ptr %12072, align 8, !tbaa !14
  %12074 = getelementptr inbounds %struct.doublecomplex, ptr %31, i32 0, i32 1
  %12075 = load double, ptr %12074, align 8, !tbaa !14
  %12076 = fsub double %12073, %12075
  %12077 = getelementptr inbounds %struct.doublecomplex, ptr %30, i32 0, i32 1
  store double %12076, ptr %12077, align 8, !tbaa !14
  %12078 = getelementptr inbounds %struct.doublecomplex, ptr %30, i32 0, i32 0
  %12079 = load double, ptr %12078, align 8, !tbaa !11
  %12080 = load ptr, ptr %14, align 8, !tbaa !5
  %12081 = load i32, ptr %20, align 4, !tbaa !9
  %12082 = sext i32 %12081 to i64
  %12083 = getelementptr inbounds %struct.doublecomplex, ptr %12080, i64 %12082
  %12084 = getelementptr inbounds %struct.doublecomplex, ptr %12083, i32 0, i32 0
  store double %12079, ptr %12084, align 8, !tbaa !11
  %12085 = getelementptr inbounds %struct.doublecomplex, ptr %30, i32 0, i32 1
  %12086 = load double, ptr %12085, align 8, !tbaa !14
  %12087 = load ptr, ptr %14, align 8, !tbaa !5
  %12088 = load i32, ptr %20, align 4, !tbaa !9
  %12089 = sext i32 %12088 to i64
  %12090 = getelementptr inbounds %struct.doublecomplex, ptr %12087, i64 %12089
  %12091 = getelementptr inbounds %struct.doublecomplex, ptr %12090, i32 0, i32 1
  store double %12086, ptr %12091, align 8, !tbaa !14
  %12092 = load i32, ptr %49, align 4, !tbaa !9
  %12093 = load i32, ptr %17, align 4, !tbaa !9
  %12094 = shl i32 %12093, 1
  %12095 = add nsw i32 %12092, %12094
  store i32 %12095, ptr %20, align 4, !tbaa !9
  %12096 = load i32, ptr %49, align 4, !tbaa !9
  %12097 = load i32, ptr %17, align 4, !tbaa !9
  %12098 = shl i32 %12097, 1
  %12099 = add nsw i32 %12096, %12098
  store i32 %12099, ptr %21, align 4, !tbaa !9
  %12100 = getelementptr inbounds %struct.doublecomplex, ptr %70, i32 0, i32 0
  %12101 = load double, ptr %12100, align 8, !tbaa !11
  %12102 = getelementptr inbounds %struct.doublecomplex, ptr %51, i32 0, i32 0
  %12103 = load double, ptr %12102, align 8, !tbaa !11
  %12104 = getelementptr inbounds %struct.doublecomplex, ptr %70, i32 0, i32 1
  %12105 = load double, ptr %12104, align 8, !tbaa !14
  %12106 = getelementptr inbounds %struct.doublecomplex, ptr %51, i32 0, i32 1
  %12107 = load double, ptr %12106, align 8, !tbaa !14
  %12108 = fmul double %12105, %12107
  %12109 = fneg double %12108
  %12110 = call double @llvm.fmuladd.f64(double %12101, double %12103, double %12109)
  %12111 = getelementptr inbounds %struct.doublecomplex, ptr %31, i32 0, i32 0
  store double %12110, ptr %12111, align 8, !tbaa !11
  %12112 = getelementptr inbounds %struct.doublecomplex, ptr %70, i32 0, i32 0
  %12113 = load double, ptr %12112, align 8, !tbaa !11
  %12114 = getelementptr inbounds %struct.doublecomplex, ptr %51, i32 0, i32 1
  %12115 = load double, ptr %12114, align 8, !tbaa !14
  %12116 = getelementptr inbounds %struct.doublecomplex, ptr %70, i32 0, i32 1
  %12117 = load double, ptr %12116, align 8, !tbaa !14
  %12118 = getelementptr inbounds %struct.doublecomplex, ptr %51, i32 0, i32 0
  %12119 = load double, ptr %12118, align 8, !tbaa !11
  %12120 = fmul double %12117, %12119
  %12121 = call double @llvm.fmuladd.f64(double %12113, double %12115, double %12120)
  %12122 = getelementptr inbounds %struct.doublecomplex, ptr %31, i32 0, i32 1
  store double %12121, ptr %12122, align 8, !tbaa !14
  %12123 = load ptr, ptr %14, align 8, !tbaa !5
  %12124 = load i32, ptr %21, align 4, !tbaa !9
  %12125 = sext i32 %12124 to i64
  %12126 = getelementptr inbounds %struct.doublecomplex, ptr %12123, i64 %12125
  %12127 = getelementptr inbounds %struct.doublecomplex, ptr %12126, i32 0, i32 0
  %12128 = load double, ptr %12127, align 8, !tbaa !11
  %12129 = getelementptr inbounds %struct.doublecomplex, ptr %31, i32 0, i32 0
  %12130 = load double, ptr %12129, align 8, !tbaa !11
  %12131 = fsub double %12128, %12130
  %12132 = getelementptr inbounds %struct.doublecomplex, ptr %30, i32 0, i32 0
  store double %12131, ptr %12132, align 8, !tbaa !11
  %12133 = load ptr, ptr %14, align 8, !tbaa !5
  %12134 = load i32, ptr %21, align 4, !tbaa !9
  %12135 = sext i32 %12134 to i64
  %12136 = getelementptr inbounds %struct.doublecomplex, ptr %12133, i64 %12135
  %12137 = getelementptr inbounds %struct.doublecomplex, ptr %12136, i32 0, i32 1
  %12138 = load double, ptr %12137, align 8, !tbaa !14
  %12139 = getelementptr inbounds %struct.doublecomplex, ptr %31, i32 0, i32 1
  %12140 = load double, ptr %12139, align 8, !tbaa !14
  %12141 = fsub double %12138, %12140
  %12142 = getelementptr inbounds %struct.doublecomplex, ptr %30, i32 0, i32 1
  store double %12141, ptr %12142, align 8, !tbaa !14
  %12143 = getelementptr inbounds %struct.doublecomplex, ptr %30, i32 0, i32 0
  %12144 = load double, ptr %12143, align 8, !tbaa !11
  %12145 = load ptr, ptr %14, align 8, !tbaa !5
  %12146 = load i32, ptr %20, align 4, !tbaa !9
  %12147 = sext i32 %12146 to i64
  %12148 = getelementptr inbounds %struct.doublecomplex, ptr %12145, i64 %12147
  %12149 = getelementptr inbounds %struct.doublecomplex, ptr %12148, i32 0, i32 0
  store double %12144, ptr %12149, align 8, !tbaa !11
  %12150 = getelementptr inbounds %struct.doublecomplex, ptr %30, i32 0, i32 1
  %12151 = load double, ptr %12150, align 8, !tbaa !14
  %12152 = load ptr, ptr %14, align 8, !tbaa !5
  %12153 = load i32, ptr %20, align 4, !tbaa !9
  %12154 = sext i32 %12153 to i64
  %12155 = getelementptr inbounds %struct.doublecomplex, ptr %12152, i64 %12154
  %12156 = getelementptr inbounds %struct.doublecomplex, ptr %12155, i32 0, i32 1
  store double %12151, ptr %12156, align 8, !tbaa !14
  %12157 = load i32, ptr %49, align 4, !tbaa !9
  %12158 = load i32, ptr %17, align 4, !tbaa !9
  %12159 = mul nsw i32 %12158, 3
  %12160 = add nsw i32 %12157, %12159
  store i32 %12160, ptr %20, align 4, !tbaa !9
  %12161 = load i32, ptr %49, align 4, !tbaa !9
  %12162 = load i32, ptr %17, align 4, !tbaa !9
  %12163 = mul nsw i32 %12162, 3
  %12164 = add nsw i32 %12161, %12163
  store i32 %12164, ptr %21, align 4, !tbaa !9
  %12165 = getelementptr inbounds %struct.doublecomplex, ptr %70, i32 0, i32 0
  %12166 = load double, ptr %12165, align 8, !tbaa !11
  %12167 = getelementptr inbounds %struct.doublecomplex, ptr %52, i32 0, i32 0
  %12168 = load double, ptr %12167, align 8, !tbaa !11
  %12169 = getelementptr inbounds %struct.doublecomplex, ptr %70, i32 0, i32 1
  %12170 = load double, ptr %12169, align 8, !tbaa !14
  %12171 = getelementptr inbounds %struct.doublecomplex, ptr %52, i32 0, i32 1
  %12172 = load double, ptr %12171, align 8, !tbaa !14
  %12173 = fmul double %12170, %12172
  %12174 = fneg double %12173
  %12175 = call double @llvm.fmuladd.f64(double %12166, double %12168, double %12174)
  %12176 = getelementptr inbounds %struct.doublecomplex, ptr %31, i32 0, i32 0
  store double %12175, ptr %12176, align 8, !tbaa !11
  %12177 = getelementptr inbounds %struct.doublecomplex, ptr %70, i32 0, i32 0
  %12178 = load double, ptr %12177, align 8, !tbaa !11
  %12179 = getelementptr inbounds %struct.doublecomplex, ptr %52, i32 0, i32 1
  %12180 = load double, ptr %12179, align 8, !tbaa !14
  %12181 = getelementptr inbounds %struct.doublecomplex, ptr %70, i32 0, i32 1
  %12182 = load double, ptr %12181, align 8, !tbaa !14
  %12183 = getelementptr inbounds %struct.doublecomplex, ptr %52, i32 0, i32 0
  %12184 = load double, ptr %12183, align 8, !tbaa !11
  %12185 = fmul double %12182, %12184
  %12186 = call double @llvm.fmuladd.f64(double %12178, double %12180, double %12185)
  %12187 = getelementptr inbounds %struct.doublecomplex, ptr %31, i32 0, i32 1
  store double %12186, ptr %12187, align 8, !tbaa !14
  %12188 = load ptr, ptr %14, align 8, !tbaa !5
  %12189 = load i32, ptr %21, align 4, !tbaa !9
  %12190 = sext i32 %12189 to i64
  %12191 = getelementptr inbounds %struct.doublecomplex, ptr %12188, i64 %12190
  %12192 = getelementptr inbounds %struct.doublecomplex, ptr %12191, i32 0, i32 0
  %12193 = load double, ptr %12192, align 8, !tbaa !11
  %12194 = getelementptr inbounds %struct.doublecomplex, ptr %31, i32 0, i32 0
  %12195 = load double, ptr %12194, align 8, !tbaa !11
  %12196 = fsub double %12193, %12195
  %12197 = getelementptr inbounds %struct.doublecomplex, ptr %30, i32 0, i32 0
  store double %12196, ptr %12197, align 8, !tbaa !11
  %12198 = load ptr, ptr %14, align 8, !tbaa !5
  %12199 = load i32, ptr %21, align 4, !tbaa !9
  %12200 = sext i32 %12199 to i64
  %12201 = getelementptr inbounds %struct.doublecomplex, ptr %12198, i64 %12200
  %12202 = getelementptr inbounds %struct.doublecomplex, ptr %12201, i32 0, i32 1
  %12203 = load double, ptr %12202, align 8, !tbaa !14
  %12204 = getelementptr inbounds %struct.doublecomplex, ptr %31, i32 0, i32 1
  %12205 = load double, ptr %12204, align 8, !tbaa !14
  %12206 = fsub double %12203, %12205
  %12207 = getelementptr inbounds %struct.doublecomplex, ptr %30, i32 0, i32 1
  store double %12206, ptr %12207, align 8, !tbaa !14
  %12208 = getelementptr inbounds %struct.doublecomplex, ptr %30, i32 0, i32 0
  %12209 = load double, ptr %12208, align 8, !tbaa !11
  %12210 = load ptr, ptr %14, align 8, !tbaa !5
  %12211 = load i32, ptr %20, align 4, !tbaa !9
  %12212 = sext i32 %12211 to i64
  %12213 = getelementptr inbounds %struct.doublecomplex, ptr %12210, i64 %12212
  %12214 = getelementptr inbounds %struct.doublecomplex, ptr %12213, i32 0, i32 0
  store double %12209, ptr %12214, align 8, !tbaa !11
  %12215 = getelementptr inbounds %struct.doublecomplex, ptr %30, i32 0, i32 1
  %12216 = load double, ptr %12215, align 8, !tbaa !14
  %12217 = load ptr, ptr %14, align 8, !tbaa !5
  %12218 = load i32, ptr %20, align 4, !tbaa !9
  %12219 = sext i32 %12218 to i64
  %12220 = getelementptr inbounds %struct.doublecomplex, ptr %12217, i64 %12219
  %12221 = getelementptr inbounds %struct.doublecomplex, ptr %12220, i32 0, i32 1
  store double %12216, ptr %12221, align 8, !tbaa !14
  %12222 = load i32, ptr %49, align 4, !tbaa !9
  %12223 = load i32, ptr %17, align 4, !tbaa !9
  %12224 = shl i32 %12223, 2
  %12225 = add nsw i32 %12222, %12224
  store i32 %12225, ptr %20, align 4, !tbaa !9
  %12226 = load i32, ptr %49, align 4, !tbaa !9
  %12227 = load i32, ptr %17, align 4, !tbaa !9
  %12228 = shl i32 %12227, 2
  %12229 = add nsw i32 %12226, %12228
  store i32 %12229, ptr %21, align 4, !tbaa !9
  %12230 = getelementptr inbounds %struct.doublecomplex, ptr %70, i32 0, i32 0
  %12231 = load double, ptr %12230, align 8, !tbaa !11
  %12232 = getelementptr inbounds %struct.doublecomplex, ptr %53, i32 0, i32 0
  %12233 = load double, ptr %12232, align 8, !tbaa !11
  %12234 = getelementptr inbounds %struct.doublecomplex, ptr %70, i32 0, i32 1
  %12235 = load double, ptr %12234, align 8, !tbaa !14
  %12236 = getelementptr inbounds %struct.doublecomplex, ptr %53, i32 0, i32 1
  %12237 = load double, ptr %12236, align 8, !tbaa !14
  %12238 = fmul double %12235, %12237
  %12239 = fneg double %12238
  %12240 = call double @llvm.fmuladd.f64(double %12231, double %12233, double %12239)
  %12241 = getelementptr inbounds %struct.doublecomplex, ptr %31, i32 0, i32 0
  store double %12240, ptr %12241, align 8, !tbaa !11
  %12242 = getelementptr inbounds %struct.doublecomplex, ptr %70, i32 0, i32 0
  %12243 = load double, ptr %12242, align 8, !tbaa !11
  %12244 = getelementptr inbounds %struct.doublecomplex, ptr %53, i32 0, i32 1
  %12245 = load double, ptr %12244, align 8, !tbaa !14
  %12246 = getelementptr inbounds %struct.doublecomplex, ptr %70, i32 0, i32 1
  %12247 = load double, ptr %12246, align 8, !tbaa !14
  %12248 = getelementptr inbounds %struct.doublecomplex, ptr %53, i32 0, i32 0
  %12249 = load double, ptr %12248, align 8, !tbaa !11
  %12250 = fmul double %12247, %12249
  %12251 = call double @llvm.fmuladd.f64(double %12243, double %12245, double %12250)
  %12252 = getelementptr inbounds %struct.doublecomplex, ptr %31, i32 0, i32 1
  store double %12251, ptr %12252, align 8, !tbaa !14
  %12253 = load ptr, ptr %14, align 8, !tbaa !5
  %12254 = load i32, ptr %21, align 4, !tbaa !9
  %12255 = sext i32 %12254 to i64
  %12256 = getelementptr inbounds %struct.doublecomplex, ptr %12253, i64 %12255
  %12257 = getelementptr inbounds %struct.doublecomplex, ptr %12256, i32 0, i32 0
  %12258 = load double, ptr %12257, align 8, !tbaa !11
  %12259 = getelementptr inbounds %struct.doublecomplex, ptr %31, i32 0, i32 0
  %12260 = load double, ptr %12259, align 8, !tbaa !11
  %12261 = fsub double %12258, %12260
  %12262 = getelementptr inbounds %struct.doublecomplex, ptr %30, i32 0, i32 0
  store double %12261, ptr %12262, align 8, !tbaa !11
  %12263 = load ptr, ptr %14, align 8, !tbaa !5
  %12264 = load i32, ptr %21, align 4, !tbaa !9
  %12265 = sext i32 %12264 to i64
  %12266 = getelementptr inbounds %struct.doublecomplex, ptr %12263, i64 %12265
  %12267 = getelementptr inbounds %struct.doublecomplex, ptr %12266, i32 0, i32 1
  %12268 = load double, ptr %12267, align 8, !tbaa !14
  %12269 = getelementptr inbounds %struct.doublecomplex, ptr %31, i32 0, i32 1
  %12270 = load double, ptr %12269, align 8, !tbaa !14
  %12271 = fsub double %12268, %12270
  %12272 = getelementptr inbounds %struct.doublecomplex, ptr %30, i32 0, i32 1
  store double %12271, ptr %12272, align 8, !tbaa !14
  %12273 = getelementptr inbounds %struct.doublecomplex, ptr %30, i32 0, i32 0
  %12274 = load double, ptr %12273, align 8, !tbaa !11
  %12275 = load ptr, ptr %14, align 8, !tbaa !5
  %12276 = load i32, ptr %20, align 4, !tbaa !9
  %12277 = sext i32 %12276 to i64
  %12278 = getelementptr inbounds %struct.doublecomplex, ptr %12275, i64 %12277
  %12279 = getelementptr inbounds %struct.doublecomplex, ptr %12278, i32 0, i32 0
  store double %12274, ptr %12279, align 8, !tbaa !11
  %12280 = getelementptr inbounds %struct.doublecomplex, ptr %30, i32 0, i32 1
  %12281 = load double, ptr %12280, align 8, !tbaa !14
  %12282 = load ptr, ptr %14, align 8, !tbaa !5
  %12283 = load i32, ptr %20, align 4, !tbaa !9
  %12284 = sext i32 %12283 to i64
  %12285 = getelementptr inbounds %struct.doublecomplex, ptr %12282, i64 %12284
  %12286 = getelementptr inbounds %struct.doublecomplex, ptr %12285, i32 0, i32 1
  store double %12281, ptr %12286, align 8, !tbaa !14
  %12287 = load i32, ptr %49, align 4, !tbaa !9
  %12288 = load i32, ptr %17, align 4, !tbaa !9
  %12289 = mul nsw i32 %12288, 5
  %12290 = add nsw i32 %12287, %12289
  store i32 %12290, ptr %20, align 4, !tbaa !9
  %12291 = load i32, ptr %49, align 4, !tbaa !9
  %12292 = load i32, ptr %17, align 4, !tbaa !9
  %12293 = mul nsw i32 %12292, 5
  %12294 = add nsw i32 %12291, %12293
  store i32 %12294, ptr %21, align 4, !tbaa !9
  %12295 = getelementptr inbounds %struct.doublecomplex, ptr %70, i32 0, i32 0
  %12296 = load double, ptr %12295, align 8, !tbaa !11
  %12297 = getelementptr inbounds %struct.doublecomplex, ptr %54, i32 0, i32 0
  %12298 = load double, ptr %12297, align 8, !tbaa !11
  %12299 = getelementptr inbounds %struct.doublecomplex, ptr %70, i32 0, i32 1
  %12300 = load double, ptr %12299, align 8, !tbaa !14
  %12301 = getelementptr inbounds %struct.doublecomplex, ptr %54, i32 0, i32 1
  %12302 = load double, ptr %12301, align 8, !tbaa !14
  %12303 = fmul double %12300, %12302
  %12304 = fneg double %12303
  %12305 = call double @llvm.fmuladd.f64(double %12296, double %12298, double %12304)
  %12306 = getelementptr inbounds %struct.doublecomplex, ptr %31, i32 0, i32 0
  store double %12305, ptr %12306, align 8, !tbaa !11
  %12307 = getelementptr inbounds %struct.doublecomplex, ptr %70, i32 0, i32 0
  %12308 = load double, ptr %12307, align 8, !tbaa !11
  %12309 = getelementptr inbounds %struct.doublecomplex, ptr %54, i32 0, i32 1
  %12310 = load double, ptr %12309, align 8, !tbaa !14
  %12311 = getelementptr inbounds %struct.doublecomplex, ptr %70, i32 0, i32 1
  %12312 = load double, ptr %12311, align 8, !tbaa !14
  %12313 = getelementptr inbounds %struct.doublecomplex, ptr %54, i32 0, i32 0
  %12314 = load double, ptr %12313, align 8, !tbaa !11
  %12315 = fmul double %12312, %12314
  %12316 = call double @llvm.fmuladd.f64(double %12308, double %12310, double %12315)
  %12317 = getelementptr inbounds %struct.doublecomplex, ptr %31, i32 0, i32 1
  store double %12316, ptr %12317, align 8, !tbaa !14
  %12318 = load ptr, ptr %14, align 8, !tbaa !5
  %12319 = load i32, ptr %21, align 4, !tbaa !9
  %12320 = sext i32 %12319 to i64
  %12321 = getelementptr inbounds %struct.doublecomplex, ptr %12318, i64 %12320
  %12322 = getelementptr inbounds %struct.doublecomplex, ptr %12321, i32 0, i32 0
  %12323 = load double, ptr %12322, align 8, !tbaa !11
  %12324 = getelementptr inbounds %struct.doublecomplex, ptr %31, i32 0, i32 0
  %12325 = load double, ptr %12324, align 8, !tbaa !11
  %12326 = fsub double %12323, %12325
  %12327 = getelementptr inbounds %struct.doublecomplex, ptr %30, i32 0, i32 0
  store double %12326, ptr %12327, align 8, !tbaa !11
  %12328 = load ptr, ptr %14, align 8, !tbaa !5
  %12329 = load i32, ptr %21, align 4, !tbaa !9
  %12330 = sext i32 %12329 to i64
  %12331 = getelementptr inbounds %struct.doublecomplex, ptr %12328, i64 %12330
  %12332 = getelementptr inbounds %struct.doublecomplex, ptr %12331, i32 0, i32 1
  %12333 = load double, ptr %12332, align 8, !tbaa !14
  %12334 = getelementptr inbounds %struct.doublecomplex, ptr %31, i32 0, i32 1
  %12335 = load double, ptr %12334, align 8, !tbaa !14
  %12336 = fsub double %12333, %12335
  %12337 = getelementptr inbounds %struct.doublecomplex, ptr %30, i32 0, i32 1
  store double %12336, ptr %12337, align 8, !tbaa !14
  %12338 = getelementptr inbounds %struct.doublecomplex, ptr %30, i32 0, i32 0
  %12339 = load double, ptr %12338, align 8, !tbaa !11
  %12340 = load ptr, ptr %14, align 8, !tbaa !5
  %12341 = load i32, ptr %20, align 4, !tbaa !9
  %12342 = sext i32 %12341 to i64
  %12343 = getelementptr inbounds %struct.doublecomplex, ptr %12340, i64 %12342
  %12344 = getelementptr inbounds %struct.doublecomplex, ptr %12343, i32 0, i32 0
  store double %12339, ptr %12344, align 8, !tbaa !11
  %12345 = getelementptr inbounds %struct.doublecomplex, ptr %30, i32 0, i32 1
  %12346 = load double, ptr %12345, align 8, !tbaa !14
  %12347 = load ptr, ptr %14, align 8, !tbaa !5
  %12348 = load i32, ptr %20, align 4, !tbaa !9
  %12349 = sext i32 %12348 to i64
  %12350 = getelementptr inbounds %struct.doublecomplex, ptr %12347, i64 %12349
  %12351 = getelementptr inbounds %struct.doublecomplex, ptr %12350, i32 0, i32 1
  store double %12346, ptr %12351, align 8, !tbaa !14
  br label %12352

12352:                                            ; preds = %11760
  %12353 = load i32, ptr %49, align 4, !tbaa !9
  %12354 = add nsw i32 %12353, 1
  store i32 %12354, ptr %49, align 4, !tbaa !9
  br label %11756, !llvm.loop !30

12355:                                            ; preds = %11756
  br label %19171

12356:                                            ; preds = %9793
  %12357 = load ptr, ptr %12, align 8, !tbaa !5
  %12358 = getelementptr inbounds %struct.doublecomplex, ptr %12357, i64 1
  %12359 = getelementptr inbounds %struct.doublecomplex, ptr %12358, i32 0, i32 0
  %12360 = load double, ptr %12359, align 8, !tbaa !11
  %12361 = getelementptr inbounds %struct.doublecomplex, ptr %59, i32 0, i32 0
  store double %12360, ptr %12361, align 8, !tbaa !11
  %12362 = load ptr, ptr %12, align 8, !tbaa !5
  %12363 = getelementptr inbounds %struct.doublecomplex, ptr %12362, i64 1
  %12364 = getelementptr inbounds %struct.doublecomplex, ptr %12363, i32 0, i32 1
  %12365 = load double, ptr %12364, align 8, !tbaa !14
  %12366 = getelementptr inbounds %struct.doublecomplex, ptr %59, i32 0, i32 1
  store double %12365, ptr %12366, align 8, !tbaa !14
  %12367 = call { double, double } @Cd(ptr noundef %59)
  %12368 = extractvalue { double, double } %12367, 0
  %12369 = extractvalue { double, double } %12367, 1
  %12370 = fneg double %12369
  %12371 = call ptr @_pCd(ptr noundef %31)
  %12372 = getelementptr inbounds { double, double }, ptr %12371, i32 0, i32 0
  %12373 = getelementptr inbounds { double, double }, ptr %12371, i32 0, i32 1
  store double %12368, ptr %12372, align 8
  store double %12370, ptr %12373, align 8
  %12374 = load ptr, ptr %13, align 8, !tbaa !5
  %12375 = getelementptr inbounds %struct.doublecomplex, ptr %12374, i32 0, i32 0
  %12376 = load double, ptr %12375, align 8, !tbaa !11
  %12377 = getelementptr inbounds %struct.doublecomplex, ptr %31, i32 0, i32 0
  %12378 = load double, ptr %12377, align 8, !tbaa !11
  %12379 = load ptr, ptr %13, align 8, !tbaa !5
  %12380 = getelementptr inbounds %struct.doublecomplex, ptr %12379, i32 0, i32 1
  %12381 = load double, ptr %12380, align 8, !tbaa !14
  %12382 = getelementptr inbounds %struct.doublecomplex, ptr %31, i32 0, i32 1
  %12383 = load double, ptr %12382, align 8, !tbaa !14
  %12384 = fmul double %12381, %12383
  %12385 = fneg double %12384
  %12386 = call double @llvm.fmuladd.f64(double %12376, double %12378, double %12385)
  %12387 = getelementptr inbounds %struct.doublecomplex, ptr %30, i32 0, i32 0
  store double %12386, ptr %12387, align 8, !tbaa !11
  %12388 = load ptr, ptr %13, align 8, !tbaa !5
  %12389 = getelementptr inbounds %struct.doublecomplex, ptr %12388, i32 0, i32 0
  %12390 = load double, ptr %12389, align 8, !tbaa !11
  %12391 = getelementptr inbounds %struct.doublecomplex, ptr %31, i32 0, i32 1
  %12392 = load double, ptr %12391, align 8, !tbaa !14
  %12393 = load ptr, ptr %13, align 8, !tbaa !5
  %12394 = getelementptr inbounds %struct.doublecomplex, ptr %12393, i32 0, i32 1
  %12395 = load double, ptr %12394, align 8, !tbaa !14
  %12396 = getelementptr inbounds %struct.doublecomplex, ptr %31, i32 0, i32 0
  %12397 = load double, ptr %12396, align 8, !tbaa !11
  %12398 = fmul double %12395, %12397
  %12399 = call double @llvm.fmuladd.f64(double %12390, double %12392, double %12398)
  %12400 = getelementptr inbounds %struct.doublecomplex, ptr %30, i32 0, i32 1
  store double %12399, ptr %12400, align 8, !tbaa !14
  %12401 = getelementptr inbounds %struct.doublecomplex, ptr %30, i32 0, i32 0
  %12402 = load double, ptr %12401, align 8, !tbaa !11
  %12403 = getelementptr inbounds %struct.doublecomplex, ptr %50, i32 0, i32 0
  store double %12402, ptr %12403, align 8, !tbaa !11
  %12404 = getelementptr inbounds %struct.doublecomplex, ptr %30, i32 0, i32 1
  %12405 = load double, ptr %12404, align 8, !tbaa !14
  %12406 = getelementptr inbounds %struct.doublecomplex, ptr %50, i32 0, i32 1
  store double %12405, ptr %12406, align 8, !tbaa !14
  %12407 = load ptr, ptr %12, align 8, !tbaa !5
  %12408 = getelementptr inbounds %struct.doublecomplex, ptr %12407, i64 2
  %12409 = getelementptr inbounds %struct.doublecomplex, ptr %12408, i32 0, i32 0
  %12410 = load double, ptr %12409, align 8, !tbaa !11
  %12411 = getelementptr inbounds %struct.doublecomplex, ptr %60, i32 0, i32 0
  store double %12410, ptr %12411, align 8, !tbaa !11
  %12412 = load ptr, ptr %12, align 8, !tbaa !5
  %12413 = getelementptr inbounds %struct.doublecomplex, ptr %12412, i64 2
  %12414 = getelementptr inbounds %struct.doublecomplex, ptr %12413, i32 0, i32 1
  %12415 = load double, ptr %12414, align 8, !tbaa !14
  %12416 = getelementptr inbounds %struct.doublecomplex, ptr %60, i32 0, i32 1
  store double %12415, ptr %12416, align 8, !tbaa !14
  %12417 = call { double, double } @Cd(ptr noundef %60)
  %12418 = extractvalue { double, double } %12417, 0
  %12419 = extractvalue { double, double } %12417, 1
  %12420 = fneg double %12419
  %12421 = call ptr @_pCd(ptr noundef %31)
  %12422 = getelementptr inbounds { double, double }, ptr %12421, i32 0, i32 0
  %12423 = getelementptr inbounds { double, double }, ptr %12421, i32 0, i32 1
  store double %12418, ptr %12422, align 8
  store double %12420, ptr %12423, align 8
  %12424 = load ptr, ptr %13, align 8, !tbaa !5
  %12425 = getelementptr inbounds %struct.doublecomplex, ptr %12424, i32 0, i32 0
  %12426 = load double, ptr %12425, align 8, !tbaa !11
  %12427 = getelementptr inbounds %struct.doublecomplex, ptr %31, i32 0, i32 0
  %12428 = load double, ptr %12427, align 8, !tbaa !11
  %12429 = load ptr, ptr %13, align 8, !tbaa !5
  %12430 = getelementptr inbounds %struct.doublecomplex, ptr %12429, i32 0, i32 1
  %12431 = load double, ptr %12430, align 8, !tbaa !14
  %12432 = getelementptr inbounds %struct.doublecomplex, ptr %31, i32 0, i32 1
  %12433 = load double, ptr %12432, align 8, !tbaa !14
  %12434 = fmul double %12431, %12433
  %12435 = fneg double %12434
  %12436 = call double @llvm.fmuladd.f64(double %12426, double %12428, double %12435)
  %12437 = getelementptr inbounds %struct.doublecomplex, ptr %30, i32 0, i32 0
  store double %12436, ptr %12437, align 8, !tbaa !11
  %12438 = load ptr, ptr %13, align 8, !tbaa !5
  %12439 = getelementptr inbounds %struct.doublecomplex, ptr %12438, i32 0, i32 0
  %12440 = load double, ptr %12439, align 8, !tbaa !11
  %12441 = getelementptr inbounds %struct.doublecomplex, ptr %31, i32 0, i32 1
  %12442 = load double, ptr %12441, align 8, !tbaa !14
  %12443 = load ptr, ptr %13, align 8, !tbaa !5
  %12444 = getelementptr inbounds %struct.doublecomplex, ptr %12443, i32 0, i32 1
  %12445 = load double, ptr %12444, align 8, !tbaa !14
  %12446 = getelementptr inbounds %struct.doublecomplex, ptr %31, i32 0, i32 0
  %12447 = load double, ptr %12446, align 8, !tbaa !11
  %12448 = fmul double %12445, %12447
  %12449 = call double @llvm.fmuladd.f64(double %12440, double %12442, double %12448)
  %12450 = getelementptr inbounds %struct.doublecomplex, ptr %30, i32 0, i32 1
  store double %12449, ptr %12450, align 8, !tbaa !14
  %12451 = getelementptr inbounds %struct.doublecomplex, ptr %30, i32 0, i32 0
  %12452 = load double, ptr %12451, align 8, !tbaa !11
  %12453 = getelementptr inbounds %struct.doublecomplex, ptr %51, i32 0, i32 0
  store double %12452, ptr %12453, align 8, !tbaa !11
  %12454 = getelementptr inbounds %struct.doublecomplex, ptr %30, i32 0, i32 1
  %12455 = load double, ptr %12454, align 8, !tbaa !14
  %12456 = getelementptr inbounds %struct.doublecomplex, ptr %51, i32 0, i32 1
  store double %12455, ptr %12456, align 8, !tbaa !14
  %12457 = load ptr, ptr %12, align 8, !tbaa !5
  %12458 = getelementptr inbounds %struct.doublecomplex, ptr %12457, i64 3
  %12459 = getelementptr inbounds %struct.doublecomplex, ptr %12458, i32 0, i32 0
  %12460 = load double, ptr %12459, align 8, !tbaa !11
  %12461 = getelementptr inbounds %struct.doublecomplex, ptr %61, i32 0, i32 0
  store double %12460, ptr %12461, align 8, !tbaa !11
  %12462 = load ptr, ptr %12, align 8, !tbaa !5
  %12463 = getelementptr inbounds %struct.doublecomplex, ptr %12462, i64 3
  %12464 = getelementptr inbounds %struct.doublecomplex, ptr %12463, i32 0, i32 1
  %12465 = load double, ptr %12464, align 8, !tbaa !14
  %12466 = getelementptr inbounds %struct.doublecomplex, ptr %61, i32 0, i32 1
  store double %12465, ptr %12466, align 8, !tbaa !14
  %12467 = call { double, double } @Cd(ptr noundef %61)
  %12468 = extractvalue { double, double } %12467, 0
  %12469 = extractvalue { double, double } %12467, 1
  %12470 = fneg double %12469
  %12471 = call ptr @_pCd(ptr noundef %31)
  %12472 = getelementptr inbounds { double, double }, ptr %12471, i32 0, i32 0
  %12473 = getelementptr inbounds { double, double }, ptr %12471, i32 0, i32 1
  store double %12468, ptr %12472, align 8
  store double %12470, ptr %12473, align 8
  %12474 = load ptr, ptr %13, align 8, !tbaa !5
  %12475 = getelementptr inbounds %struct.doublecomplex, ptr %12474, i32 0, i32 0
  %12476 = load double, ptr %12475, align 8, !tbaa !11
  %12477 = getelementptr inbounds %struct.doublecomplex, ptr %31, i32 0, i32 0
  %12478 = load double, ptr %12477, align 8, !tbaa !11
  %12479 = load ptr, ptr %13, align 8, !tbaa !5
  %12480 = getelementptr inbounds %struct.doublecomplex, ptr %12479, i32 0, i32 1
  %12481 = load double, ptr %12480, align 8, !tbaa !14
  %12482 = getelementptr inbounds %struct.doublecomplex, ptr %31, i32 0, i32 1
  %12483 = load double, ptr %12482, align 8, !tbaa !14
  %12484 = fmul double %12481, %12483
  %12485 = fneg double %12484
  %12486 = call double @llvm.fmuladd.f64(double %12476, double %12478, double %12485)
  %12487 = getelementptr inbounds %struct.doublecomplex, ptr %30, i32 0, i32 0
  store double %12486, ptr %12487, align 8, !tbaa !11
  %12488 = load ptr, ptr %13, align 8, !tbaa !5
  %12489 = getelementptr inbounds %struct.doublecomplex, ptr %12488, i32 0, i32 0
  %12490 = load double, ptr %12489, align 8, !tbaa !11
  %12491 = getelementptr inbounds %struct.doublecomplex, ptr %31, i32 0, i32 1
  %12492 = load double, ptr %12491, align 8, !tbaa !14
  %12493 = load ptr, ptr %13, align 8, !tbaa !5
  %12494 = getelementptr inbounds %struct.doublecomplex, ptr %12493, i32 0, i32 1
  %12495 = load double, ptr %12494, align 8, !tbaa !14
  %12496 = getelementptr inbounds %struct.doublecomplex, ptr %31, i32 0, i32 0
  %12497 = load double, ptr %12496, align 8, !tbaa !11
  %12498 = fmul double %12495, %12497
  %12499 = call double @llvm.fmuladd.f64(double %12490, double %12492, double %12498)
  %12500 = getelementptr inbounds %struct.doublecomplex, ptr %30, i32 0, i32 1
  store double %12499, ptr %12500, align 8, !tbaa !14
  %12501 = getelementptr inbounds %struct.doublecomplex, ptr %30, i32 0, i32 0
  %12502 = load double, ptr %12501, align 8, !tbaa !11
  %12503 = getelementptr inbounds %struct.doublecomplex, ptr %52, i32 0, i32 0
  store double %12502, ptr %12503, align 8, !tbaa !11
  %12504 = getelementptr inbounds %struct.doublecomplex, ptr %30, i32 0, i32 1
  %12505 = load double, ptr %12504, align 8, !tbaa !14
  %12506 = getelementptr inbounds %struct.doublecomplex, ptr %52, i32 0, i32 1
  store double %12505, ptr %12506, align 8, !tbaa !14
  %12507 = load ptr, ptr %12, align 8, !tbaa !5
  %12508 = getelementptr inbounds %struct.doublecomplex, ptr %12507, i64 4
  %12509 = getelementptr inbounds %struct.doublecomplex, ptr %12508, i32 0, i32 0
  %12510 = load double, ptr %12509, align 8, !tbaa !11
  %12511 = getelementptr inbounds %struct.doublecomplex, ptr %62, i32 0, i32 0
  store double %12510, ptr %12511, align 8, !tbaa !11
  %12512 = load ptr, ptr %12, align 8, !tbaa !5
  %12513 = getelementptr inbounds %struct.doublecomplex, ptr %12512, i64 4
  %12514 = getelementptr inbounds %struct.doublecomplex, ptr %12513, i32 0, i32 1
  %12515 = load double, ptr %12514, align 8, !tbaa !14
  %12516 = getelementptr inbounds %struct.doublecomplex, ptr %62, i32 0, i32 1
  store double %12515, ptr %12516, align 8, !tbaa !14
  %12517 = call { double, double } @Cd(ptr noundef %62)
  %12518 = extractvalue { double, double } %12517, 0
  %12519 = extractvalue { double, double } %12517, 1
  %12520 = fneg double %12519
  %12521 = call ptr @_pCd(ptr noundef %31)
  %12522 = getelementptr inbounds { double, double }, ptr %12521, i32 0, i32 0
  %12523 = getelementptr inbounds { double, double }, ptr %12521, i32 0, i32 1
  store double %12518, ptr %12522, align 8
  store double %12520, ptr %12523, align 8
  %12524 = load ptr, ptr %13, align 8, !tbaa !5
  %12525 = getelementptr inbounds %struct.doublecomplex, ptr %12524, i32 0, i32 0
  %12526 = load double, ptr %12525, align 8, !tbaa !11
  %12527 = getelementptr inbounds %struct.doublecomplex, ptr %31, i32 0, i32 0
  %12528 = load double, ptr %12527, align 8, !tbaa !11
  %12529 = load ptr, ptr %13, align 8, !tbaa !5
  %12530 = getelementptr inbounds %struct.doublecomplex, ptr %12529, i32 0, i32 1
  %12531 = load double, ptr %12530, align 8, !tbaa !14
  %12532 = getelementptr inbounds %struct.doublecomplex, ptr %31, i32 0, i32 1
  %12533 = load double, ptr %12532, align 8, !tbaa !14
  %12534 = fmul double %12531, %12533
  %12535 = fneg double %12534
  %12536 = call double @llvm.fmuladd.f64(double %12526, double %12528, double %12535)
  %12537 = getelementptr inbounds %struct.doublecomplex, ptr %30, i32 0, i32 0
  store double %12536, ptr %12537, align 8, !tbaa !11
  %12538 = load ptr, ptr %13, align 8, !tbaa !5
  %12539 = getelementptr inbounds %struct.doublecomplex, ptr %12538, i32 0, i32 0
  %12540 = load double, ptr %12539, align 8, !tbaa !11
  %12541 = getelementptr inbounds %struct.doublecomplex, ptr %31, i32 0, i32 1
  %12542 = load double, ptr %12541, align 8, !tbaa !14
  %12543 = load ptr, ptr %13, align 8, !tbaa !5
  %12544 = getelementptr inbounds %struct.doublecomplex, ptr %12543, i32 0, i32 1
  %12545 = load double, ptr %12544, align 8, !tbaa !14
  %12546 = getelementptr inbounds %struct.doublecomplex, ptr %31, i32 0, i32 0
  %12547 = load double, ptr %12546, align 8, !tbaa !11
  %12548 = fmul double %12545, %12547
  %12549 = call double @llvm.fmuladd.f64(double %12540, double %12542, double %12548)
  %12550 = getelementptr inbounds %struct.doublecomplex, ptr %30, i32 0, i32 1
  store double %12549, ptr %12550, align 8, !tbaa !14
  %12551 = getelementptr inbounds %struct.doublecomplex, ptr %30, i32 0, i32 0
  %12552 = load double, ptr %12551, align 8, !tbaa !11
  %12553 = getelementptr inbounds %struct.doublecomplex, ptr %53, i32 0, i32 0
  store double %12552, ptr %12553, align 8, !tbaa !11
  %12554 = getelementptr inbounds %struct.doublecomplex, ptr %30, i32 0, i32 1
  %12555 = load double, ptr %12554, align 8, !tbaa !14
  %12556 = getelementptr inbounds %struct.doublecomplex, ptr %53, i32 0, i32 1
  store double %12555, ptr %12556, align 8, !tbaa !14
  %12557 = load ptr, ptr %12, align 8, !tbaa !5
  %12558 = getelementptr inbounds %struct.doublecomplex, ptr %12557, i64 5
  %12559 = getelementptr inbounds %struct.doublecomplex, ptr %12558, i32 0, i32 0
  %12560 = load double, ptr %12559, align 8, !tbaa !11
  %12561 = getelementptr inbounds %struct.doublecomplex, ptr %63, i32 0, i32 0
  store double %12560, ptr %12561, align 8, !tbaa !11
  %12562 = load ptr, ptr %12, align 8, !tbaa !5
  %12563 = getelementptr inbounds %struct.doublecomplex, ptr %12562, i64 5
  %12564 = getelementptr inbounds %struct.doublecomplex, ptr %12563, i32 0, i32 1
  %12565 = load double, ptr %12564, align 8, !tbaa !14
  %12566 = getelementptr inbounds %struct.doublecomplex, ptr %63, i32 0, i32 1
  store double %12565, ptr %12566, align 8, !tbaa !14
  %12567 = call { double, double } @Cd(ptr noundef %63)
  %12568 = extractvalue { double, double } %12567, 0
  %12569 = extractvalue { double, double } %12567, 1
  %12570 = fneg double %12569
  %12571 = call ptr @_pCd(ptr noundef %31)
  %12572 = getelementptr inbounds { double, double }, ptr %12571, i32 0, i32 0
  %12573 = getelementptr inbounds { double, double }, ptr %12571, i32 0, i32 1
  store double %12568, ptr %12572, align 8
  store double %12570, ptr %12573, align 8
  %12574 = load ptr, ptr %13, align 8, !tbaa !5
  %12575 = getelementptr inbounds %struct.doublecomplex, ptr %12574, i32 0, i32 0
  %12576 = load double, ptr %12575, align 8, !tbaa !11
  %12577 = getelementptr inbounds %struct.doublecomplex, ptr %31, i32 0, i32 0
  %12578 = load double, ptr %12577, align 8, !tbaa !11
  %12579 = load ptr, ptr %13, align 8, !tbaa !5
  %12580 = getelementptr inbounds %struct.doublecomplex, ptr %12579, i32 0, i32 1
  %12581 = load double, ptr %12580, align 8, !tbaa !14
  %12582 = getelementptr inbounds %struct.doublecomplex, ptr %31, i32 0, i32 1
  %12583 = load double, ptr %12582, align 8, !tbaa !14
  %12584 = fmul double %12581, %12583
  %12585 = fneg double %12584
  %12586 = call double @llvm.fmuladd.f64(double %12576, double %12578, double %12585)
  %12587 = getelementptr inbounds %struct.doublecomplex, ptr %30, i32 0, i32 0
  store double %12586, ptr %12587, align 8, !tbaa !11
  %12588 = load ptr, ptr %13, align 8, !tbaa !5
  %12589 = getelementptr inbounds %struct.doublecomplex, ptr %12588, i32 0, i32 0
  %12590 = load double, ptr %12589, align 8, !tbaa !11
  %12591 = getelementptr inbounds %struct.doublecomplex, ptr %31, i32 0, i32 1
  %12592 = load double, ptr %12591, align 8, !tbaa !14
  %12593 = load ptr, ptr %13, align 8, !tbaa !5
  %12594 = getelementptr inbounds %struct.doublecomplex, ptr %12593, i32 0, i32 1
  %12595 = load double, ptr %12594, align 8, !tbaa !14
  %12596 = getelementptr inbounds %struct.doublecomplex, ptr %31, i32 0, i32 0
  %12597 = load double, ptr %12596, align 8, !tbaa !11
  %12598 = fmul double %12595, %12597
  %12599 = call double @llvm.fmuladd.f64(double %12590, double %12592, double %12598)
  %12600 = getelementptr inbounds %struct.doublecomplex, ptr %30, i32 0, i32 1
  store double %12599, ptr %12600, align 8, !tbaa !14
  %12601 = getelementptr inbounds %struct.doublecomplex, ptr %30, i32 0, i32 0
  %12602 = load double, ptr %12601, align 8, !tbaa !11
  %12603 = getelementptr inbounds %struct.doublecomplex, ptr %54, i32 0, i32 0
  store double %12602, ptr %12603, align 8, !tbaa !11
  %12604 = getelementptr inbounds %struct.doublecomplex, ptr %30, i32 0, i32 1
  %12605 = load double, ptr %12604, align 8, !tbaa !14
  %12606 = getelementptr inbounds %struct.doublecomplex, ptr %54, i32 0, i32 1
  store double %12605, ptr %12606, align 8, !tbaa !14
  %12607 = load ptr, ptr %12, align 8, !tbaa !5
  %12608 = getelementptr inbounds %struct.doublecomplex, ptr %12607, i64 6
  %12609 = getelementptr inbounds %struct.doublecomplex, ptr %12608, i32 0, i32 0
  %12610 = load double, ptr %12609, align 8, !tbaa !11
  %12611 = getelementptr inbounds %struct.doublecomplex, ptr %64, i32 0, i32 0
  store double %12610, ptr %12611, align 8, !tbaa !11
  %12612 = load ptr, ptr %12, align 8, !tbaa !5
  %12613 = getelementptr inbounds %struct.doublecomplex, ptr %12612, i64 6
  %12614 = getelementptr inbounds %struct.doublecomplex, ptr %12613, i32 0, i32 1
  %12615 = load double, ptr %12614, align 8, !tbaa !14
  %12616 = getelementptr inbounds %struct.doublecomplex, ptr %64, i32 0, i32 1
  store double %12615, ptr %12616, align 8, !tbaa !14
  %12617 = call { double, double } @Cd(ptr noundef %64)
  %12618 = extractvalue { double, double } %12617, 0
  %12619 = extractvalue { double, double } %12617, 1
  %12620 = fneg double %12619
  %12621 = call ptr @_pCd(ptr noundef %31)
  %12622 = getelementptr inbounds { double, double }, ptr %12621, i32 0, i32 0
  %12623 = getelementptr inbounds { double, double }, ptr %12621, i32 0, i32 1
  store double %12618, ptr %12622, align 8
  store double %12620, ptr %12623, align 8
  %12624 = load ptr, ptr %13, align 8, !tbaa !5
  %12625 = getelementptr inbounds %struct.doublecomplex, ptr %12624, i32 0, i32 0
  %12626 = load double, ptr %12625, align 8, !tbaa !11
  %12627 = getelementptr inbounds %struct.doublecomplex, ptr %31, i32 0, i32 0
  %12628 = load double, ptr %12627, align 8, !tbaa !11
  %12629 = load ptr, ptr %13, align 8, !tbaa !5
  %12630 = getelementptr inbounds %struct.doublecomplex, ptr %12629, i32 0, i32 1
  %12631 = load double, ptr %12630, align 8, !tbaa !14
  %12632 = getelementptr inbounds %struct.doublecomplex, ptr %31, i32 0, i32 1
  %12633 = load double, ptr %12632, align 8, !tbaa !14
  %12634 = fmul double %12631, %12633
  %12635 = fneg double %12634
  %12636 = call double @llvm.fmuladd.f64(double %12626, double %12628, double %12635)
  %12637 = getelementptr inbounds %struct.doublecomplex, ptr %30, i32 0, i32 0
  store double %12636, ptr %12637, align 8, !tbaa !11
  %12638 = load ptr, ptr %13, align 8, !tbaa !5
  %12639 = getelementptr inbounds %struct.doublecomplex, ptr %12638, i32 0, i32 0
  %12640 = load double, ptr %12639, align 8, !tbaa !11
  %12641 = getelementptr inbounds %struct.doublecomplex, ptr %31, i32 0, i32 1
  %12642 = load double, ptr %12641, align 8, !tbaa !14
  %12643 = load ptr, ptr %13, align 8, !tbaa !5
  %12644 = getelementptr inbounds %struct.doublecomplex, ptr %12643, i32 0, i32 1
  %12645 = load double, ptr %12644, align 8, !tbaa !14
  %12646 = getelementptr inbounds %struct.doublecomplex, ptr %31, i32 0, i32 0
  %12647 = load double, ptr %12646, align 8, !tbaa !11
  %12648 = fmul double %12645, %12647
  %12649 = call double @llvm.fmuladd.f64(double %12640, double %12642, double %12648)
  %12650 = getelementptr inbounds %struct.doublecomplex, ptr %30, i32 0, i32 1
  store double %12649, ptr %12650, align 8, !tbaa !14
  %12651 = getelementptr inbounds %struct.doublecomplex, ptr %30, i32 0, i32 0
  %12652 = load double, ptr %12651, align 8, !tbaa !11
  %12653 = getelementptr inbounds %struct.doublecomplex, ptr %55, i32 0, i32 0
  store double %12652, ptr %12653, align 8, !tbaa !11
  %12654 = getelementptr inbounds %struct.doublecomplex, ptr %30, i32 0, i32 1
  %12655 = load double, ptr %12654, align 8, !tbaa !14
  %12656 = getelementptr inbounds %struct.doublecomplex, ptr %55, i32 0, i32 1
  store double %12655, ptr %12656, align 8, !tbaa !14
  %12657 = load ptr, ptr %10, align 8, !tbaa !5
  %12658 = load i32, ptr %12657, align 4, !tbaa !9
  store i32 %12658, ptr %19, align 4, !tbaa !9
  store i32 1, ptr %49, align 4, !tbaa !9
  br label %12659

12659:                                            ; preds = %13375, %12356
  %12660 = load i32, ptr %49, align 4, !tbaa !9
  %12661 = load i32, ptr %19, align 4, !tbaa !9
  %12662 = icmp sle i32 %12660, %12661
  br i1 %12662, label %12663, label %13378

12663:                                            ; preds = %12659
  %12664 = load i32, ptr %49, align 4, !tbaa !9
  %12665 = load i32, ptr %17, align 4, !tbaa !9
  %12666 = add nsw i32 %12664, %12665
  store i32 %12666, ptr %20, align 4, !tbaa !9
  %12667 = getelementptr inbounds %struct.doublecomplex, ptr %59, i32 0, i32 0
  %12668 = load double, ptr %12667, align 8, !tbaa !11
  %12669 = load ptr, ptr %14, align 8, !tbaa !5
  %12670 = load i32, ptr %20, align 4, !tbaa !9
  %12671 = sext i32 %12670 to i64
  %12672 = getelementptr inbounds %struct.doublecomplex, ptr %12669, i64 %12671
  %12673 = getelementptr inbounds %struct.doublecomplex, ptr %12672, i32 0, i32 0
  %12674 = load double, ptr %12673, align 8, !tbaa !11
  %12675 = getelementptr inbounds %struct.doublecomplex, ptr %59, i32 0, i32 1
  %12676 = load double, ptr %12675, align 8, !tbaa !14
  %12677 = load ptr, ptr %14, align 8, !tbaa !5
  %12678 = load i32, ptr %20, align 4, !tbaa !9
  %12679 = sext i32 %12678 to i64
  %12680 = getelementptr inbounds %struct.doublecomplex, ptr %12677, i64 %12679
  %12681 = getelementptr inbounds %struct.doublecomplex, ptr %12680, i32 0, i32 1
  %12682 = load double, ptr %12681, align 8, !tbaa !14
  %12683 = fmul double %12676, %12682
  %12684 = fneg double %12683
  %12685 = call double @llvm.fmuladd.f64(double %12668, double %12674, double %12684)
  %12686 = getelementptr inbounds %struct.doublecomplex, ptr %35, i32 0, i32 0
  store double %12685, ptr %12686, align 8, !tbaa !11
  %12687 = getelementptr inbounds %struct.doublecomplex, ptr %59, i32 0, i32 0
  %12688 = load double, ptr %12687, align 8, !tbaa !11
  %12689 = load ptr, ptr %14, align 8, !tbaa !5
  %12690 = load i32, ptr %20, align 4, !tbaa !9
  %12691 = sext i32 %12690 to i64
  %12692 = getelementptr inbounds %struct.doublecomplex, ptr %12689, i64 %12691
  %12693 = getelementptr inbounds %struct.doublecomplex, ptr %12692, i32 0, i32 1
  %12694 = load double, ptr %12693, align 8, !tbaa !14
  %12695 = getelementptr inbounds %struct.doublecomplex, ptr %59, i32 0, i32 1
  %12696 = load double, ptr %12695, align 8, !tbaa !14
  %12697 = load ptr, ptr %14, align 8, !tbaa !5
  %12698 = load i32, ptr %20, align 4, !tbaa !9
  %12699 = sext i32 %12698 to i64
  %12700 = getelementptr inbounds %struct.doublecomplex, ptr %12697, i64 %12699
  %12701 = getelementptr inbounds %struct.doublecomplex, ptr %12700, i32 0, i32 0
  %12702 = load double, ptr %12701, align 8, !tbaa !11
  %12703 = fmul double %12696, %12702
  %12704 = call double @llvm.fmuladd.f64(double %12688, double %12694, double %12703)
  %12705 = getelementptr inbounds %struct.doublecomplex, ptr %35, i32 0, i32 1
  store double %12704, ptr %12705, align 8, !tbaa !14
  %12706 = load i32, ptr %49, align 4, !tbaa !9
  %12707 = load i32, ptr %17, align 4, !tbaa !9
  %12708 = shl i32 %12707, 1
  %12709 = add nsw i32 %12706, %12708
  store i32 %12709, ptr %21, align 4, !tbaa !9
  %12710 = getelementptr inbounds %struct.doublecomplex, ptr %60, i32 0, i32 0
  %12711 = load double, ptr %12710, align 8, !tbaa !11
  %12712 = load ptr, ptr %14, align 8, !tbaa !5
  %12713 = load i32, ptr %21, align 4, !tbaa !9
  %12714 = sext i32 %12713 to i64
  %12715 = getelementptr inbounds %struct.doublecomplex, ptr %12712, i64 %12714
  %12716 = getelementptr inbounds %struct.doublecomplex, ptr %12715, i32 0, i32 0
  %12717 = load double, ptr %12716, align 8, !tbaa !11
  %12718 = getelementptr inbounds %struct.doublecomplex, ptr %60, i32 0, i32 1
  %12719 = load double, ptr %12718, align 8, !tbaa !14
  %12720 = load ptr, ptr %14, align 8, !tbaa !5
  %12721 = load i32, ptr %21, align 4, !tbaa !9
  %12722 = sext i32 %12721 to i64
  %12723 = getelementptr inbounds %struct.doublecomplex, ptr %12720, i64 %12722
  %12724 = getelementptr inbounds %struct.doublecomplex, ptr %12723, i32 0, i32 1
  %12725 = load double, ptr %12724, align 8, !tbaa !14
  %12726 = fmul double %12719, %12725
  %12727 = fneg double %12726
  %12728 = call double @llvm.fmuladd.f64(double %12711, double %12717, double %12727)
  %12729 = getelementptr inbounds %struct.doublecomplex, ptr %36, i32 0, i32 0
  store double %12728, ptr %12729, align 8, !tbaa !11
  %12730 = getelementptr inbounds %struct.doublecomplex, ptr %60, i32 0, i32 0
  %12731 = load double, ptr %12730, align 8, !tbaa !11
  %12732 = load ptr, ptr %14, align 8, !tbaa !5
  %12733 = load i32, ptr %21, align 4, !tbaa !9
  %12734 = sext i32 %12733 to i64
  %12735 = getelementptr inbounds %struct.doublecomplex, ptr %12732, i64 %12734
  %12736 = getelementptr inbounds %struct.doublecomplex, ptr %12735, i32 0, i32 1
  %12737 = load double, ptr %12736, align 8, !tbaa !14
  %12738 = getelementptr inbounds %struct.doublecomplex, ptr %60, i32 0, i32 1
  %12739 = load double, ptr %12738, align 8, !tbaa !14
  %12740 = load ptr, ptr %14, align 8, !tbaa !5
  %12741 = load i32, ptr %21, align 4, !tbaa !9
  %12742 = sext i32 %12741 to i64
  %12743 = getelementptr inbounds %struct.doublecomplex, ptr %12740, i64 %12742
  %12744 = getelementptr inbounds %struct.doublecomplex, ptr %12743, i32 0, i32 0
  %12745 = load double, ptr %12744, align 8, !tbaa !11
  %12746 = fmul double %12739, %12745
  %12747 = call double @llvm.fmuladd.f64(double %12731, double %12737, double %12746)
  %12748 = getelementptr inbounds %struct.doublecomplex, ptr %36, i32 0, i32 1
  store double %12747, ptr %12748, align 8, !tbaa !14
  %12749 = getelementptr inbounds %struct.doublecomplex, ptr %35, i32 0, i32 0
  %12750 = load double, ptr %12749, align 8, !tbaa !11
  %12751 = getelementptr inbounds %struct.doublecomplex, ptr %36, i32 0, i32 0
  %12752 = load double, ptr %12751, align 8, !tbaa !11
  %12753 = fadd double %12750, %12752
  %12754 = getelementptr inbounds %struct.doublecomplex, ptr %34, i32 0, i32 0
  store double %12753, ptr %12754, align 8, !tbaa !11
  %12755 = getelementptr inbounds %struct.doublecomplex, ptr %35, i32 0, i32 1
  %12756 = load double, ptr %12755, align 8, !tbaa !14
  %12757 = getelementptr inbounds %struct.doublecomplex, ptr %36, i32 0, i32 1
  %12758 = load double, ptr %12757, align 8, !tbaa !14
  %12759 = fadd double %12756, %12758
  %12760 = getelementptr inbounds %struct.doublecomplex, ptr %34, i32 0, i32 1
  store double %12759, ptr %12760, align 8, !tbaa !14
  %12761 = load i32, ptr %49, align 4, !tbaa !9
  %12762 = load i32, ptr %17, align 4, !tbaa !9
  %12763 = mul nsw i32 %12762, 3
  %12764 = add nsw i32 %12761, %12763
  store i32 %12764, ptr %22, align 4, !tbaa !9
  %12765 = getelementptr inbounds %struct.doublecomplex, ptr %61, i32 0, i32 0
  %12766 = load double, ptr %12765, align 8, !tbaa !11
  %12767 = load ptr, ptr %14, align 8, !tbaa !5
  %12768 = load i32, ptr %22, align 4, !tbaa !9
  %12769 = sext i32 %12768 to i64
  %12770 = getelementptr inbounds %struct.doublecomplex, ptr %12767, i64 %12769
  %12771 = getelementptr inbounds %struct.doublecomplex, ptr %12770, i32 0, i32 0
  %12772 = load double, ptr %12771, align 8, !tbaa !11
  %12773 = getelementptr inbounds %struct.doublecomplex, ptr %61, i32 0, i32 1
  %12774 = load double, ptr %12773, align 8, !tbaa !14
  %12775 = load ptr, ptr %14, align 8, !tbaa !5
  %12776 = load i32, ptr %22, align 4, !tbaa !9
  %12777 = sext i32 %12776 to i64
  %12778 = getelementptr inbounds %struct.doublecomplex, ptr %12775, i64 %12777
  %12779 = getelementptr inbounds %struct.doublecomplex, ptr %12778, i32 0, i32 1
  %12780 = load double, ptr %12779, align 8, !tbaa !14
  %12781 = fmul double %12774, %12780
  %12782 = fneg double %12781
  %12783 = call double @llvm.fmuladd.f64(double %12766, double %12772, double %12782)
  %12784 = getelementptr inbounds %struct.doublecomplex, ptr %37, i32 0, i32 0
  store double %12783, ptr %12784, align 8, !tbaa !11
  %12785 = getelementptr inbounds %struct.doublecomplex, ptr %61, i32 0, i32 0
  %12786 = load double, ptr %12785, align 8, !tbaa !11
  %12787 = load ptr, ptr %14, align 8, !tbaa !5
  %12788 = load i32, ptr %22, align 4, !tbaa !9
  %12789 = sext i32 %12788 to i64
  %12790 = getelementptr inbounds %struct.doublecomplex, ptr %12787, i64 %12789
  %12791 = getelementptr inbounds %struct.doublecomplex, ptr %12790, i32 0, i32 1
  %12792 = load double, ptr %12791, align 8, !tbaa !14
  %12793 = getelementptr inbounds %struct.doublecomplex, ptr %61, i32 0, i32 1
  %12794 = load double, ptr %12793, align 8, !tbaa !14
  %12795 = load ptr, ptr %14, align 8, !tbaa !5
  %12796 = load i32, ptr %22, align 4, !tbaa !9
  %12797 = sext i32 %12796 to i64
  %12798 = getelementptr inbounds %struct.doublecomplex, ptr %12795, i64 %12797
  %12799 = getelementptr inbounds %struct.doublecomplex, ptr %12798, i32 0, i32 0
  %12800 = load double, ptr %12799, align 8, !tbaa !11
  %12801 = fmul double %12794, %12800
  %12802 = call double @llvm.fmuladd.f64(double %12786, double %12792, double %12801)
  %12803 = getelementptr inbounds %struct.doublecomplex, ptr %37, i32 0, i32 1
  store double %12802, ptr %12803, align 8, !tbaa !14
  %12804 = getelementptr inbounds %struct.doublecomplex, ptr %34, i32 0, i32 0
  %12805 = load double, ptr %12804, align 8, !tbaa !11
  %12806 = getelementptr inbounds %struct.doublecomplex, ptr %37, i32 0, i32 0
  %12807 = load double, ptr %12806, align 8, !tbaa !11
  %12808 = fadd double %12805, %12807
  %12809 = getelementptr inbounds %struct.doublecomplex, ptr %33, i32 0, i32 0
  store double %12808, ptr %12809, align 8, !tbaa !11
  %12810 = getelementptr inbounds %struct.doublecomplex, ptr %34, i32 0, i32 1
  %12811 = load double, ptr %12810, align 8, !tbaa !14
  %12812 = getelementptr inbounds %struct.doublecomplex, ptr %37, i32 0, i32 1
  %12813 = load double, ptr %12812, align 8, !tbaa !14
  %12814 = fadd double %12811, %12813
  %12815 = getelementptr inbounds %struct.doublecomplex, ptr %33, i32 0, i32 1
  store double %12814, ptr %12815, align 8, !tbaa !14
  %12816 = load i32, ptr %49, align 4, !tbaa !9
  %12817 = load i32, ptr %17, align 4, !tbaa !9
  %12818 = shl i32 %12817, 2
  %12819 = add nsw i32 %12816, %12818
  store i32 %12819, ptr %23, align 4, !tbaa !9
  %12820 = getelementptr inbounds %struct.doublecomplex, ptr %62, i32 0, i32 0
  %12821 = load double, ptr %12820, align 8, !tbaa !11
  %12822 = load ptr, ptr %14, align 8, !tbaa !5
  %12823 = load i32, ptr %23, align 4, !tbaa !9
  %12824 = sext i32 %12823 to i64
  %12825 = getelementptr inbounds %struct.doublecomplex, ptr %12822, i64 %12824
  %12826 = getelementptr inbounds %struct.doublecomplex, ptr %12825, i32 0, i32 0
  %12827 = load double, ptr %12826, align 8, !tbaa !11
  %12828 = getelementptr inbounds %struct.doublecomplex, ptr %62, i32 0, i32 1
  %12829 = load double, ptr %12828, align 8, !tbaa !14
  %12830 = load ptr, ptr %14, align 8, !tbaa !5
  %12831 = load i32, ptr %23, align 4, !tbaa !9
  %12832 = sext i32 %12831 to i64
  %12833 = getelementptr inbounds %struct.doublecomplex, ptr %12830, i64 %12832
  %12834 = getelementptr inbounds %struct.doublecomplex, ptr %12833, i32 0, i32 1
  %12835 = load double, ptr %12834, align 8, !tbaa !14
  %12836 = fmul double %12829, %12835
  %12837 = fneg double %12836
  %12838 = call double @llvm.fmuladd.f64(double %12821, double %12827, double %12837)
  %12839 = getelementptr inbounds %struct.doublecomplex, ptr %38, i32 0, i32 0
  store double %12838, ptr %12839, align 8, !tbaa !11
  %12840 = getelementptr inbounds %struct.doublecomplex, ptr %62, i32 0, i32 0
  %12841 = load double, ptr %12840, align 8, !tbaa !11
  %12842 = load ptr, ptr %14, align 8, !tbaa !5
  %12843 = load i32, ptr %23, align 4, !tbaa !9
  %12844 = sext i32 %12843 to i64
  %12845 = getelementptr inbounds %struct.doublecomplex, ptr %12842, i64 %12844
  %12846 = getelementptr inbounds %struct.doublecomplex, ptr %12845, i32 0, i32 1
  %12847 = load double, ptr %12846, align 8, !tbaa !14
  %12848 = getelementptr inbounds %struct.doublecomplex, ptr %62, i32 0, i32 1
  %12849 = load double, ptr %12848, align 8, !tbaa !14
  %12850 = load ptr, ptr %14, align 8, !tbaa !5
  %12851 = load i32, ptr %23, align 4, !tbaa !9
  %12852 = sext i32 %12851 to i64
  %12853 = getelementptr inbounds %struct.doublecomplex, ptr %12850, i64 %12852
  %12854 = getelementptr inbounds %struct.doublecomplex, ptr %12853, i32 0, i32 0
  %12855 = load double, ptr %12854, align 8, !tbaa !11
  %12856 = fmul double %12849, %12855
  %12857 = call double @llvm.fmuladd.f64(double %12841, double %12847, double %12856)
  %12858 = getelementptr inbounds %struct.doublecomplex, ptr %38, i32 0, i32 1
  store double %12857, ptr %12858, align 8, !tbaa !14
  %12859 = getelementptr inbounds %struct.doublecomplex, ptr %33, i32 0, i32 0
  %12860 = load double, ptr %12859, align 8, !tbaa !11
  %12861 = getelementptr inbounds %struct.doublecomplex, ptr %38, i32 0, i32 0
  %12862 = load double, ptr %12861, align 8, !tbaa !11
  %12863 = fadd double %12860, %12862
  %12864 = getelementptr inbounds %struct.doublecomplex, ptr %32, i32 0, i32 0
  store double %12863, ptr %12864, align 8, !tbaa !11
  %12865 = getelementptr inbounds %struct.doublecomplex, ptr %33, i32 0, i32 1
  %12866 = load double, ptr %12865, align 8, !tbaa !14
  %12867 = getelementptr inbounds %struct.doublecomplex, ptr %38, i32 0, i32 1
  %12868 = load double, ptr %12867, align 8, !tbaa !14
  %12869 = fadd double %12866, %12868
  %12870 = getelementptr inbounds %struct.doublecomplex, ptr %32, i32 0, i32 1
  store double %12869, ptr %12870, align 8, !tbaa !14
  %12871 = load i32, ptr %49, align 4, !tbaa !9
  %12872 = load i32, ptr %17, align 4, !tbaa !9
  %12873 = mul nsw i32 %12872, 5
  %12874 = add nsw i32 %12871, %12873
  store i32 %12874, ptr %24, align 4, !tbaa !9
  %12875 = getelementptr inbounds %struct.doublecomplex, ptr %63, i32 0, i32 0
  %12876 = load double, ptr %12875, align 8, !tbaa !11
  %12877 = load ptr, ptr %14, align 8, !tbaa !5
  %12878 = load i32, ptr %24, align 4, !tbaa !9
  %12879 = sext i32 %12878 to i64
  %12880 = getelementptr inbounds %struct.doublecomplex, ptr %12877, i64 %12879
  %12881 = getelementptr inbounds %struct.doublecomplex, ptr %12880, i32 0, i32 0
  %12882 = load double, ptr %12881, align 8, !tbaa !11
  %12883 = getelementptr inbounds %struct.doublecomplex, ptr %63, i32 0, i32 1
  %12884 = load double, ptr %12883, align 8, !tbaa !14
  %12885 = load ptr, ptr %14, align 8, !tbaa !5
  %12886 = load i32, ptr %24, align 4, !tbaa !9
  %12887 = sext i32 %12886 to i64
  %12888 = getelementptr inbounds %struct.doublecomplex, ptr %12885, i64 %12887
  %12889 = getelementptr inbounds %struct.doublecomplex, ptr %12888, i32 0, i32 1
  %12890 = load double, ptr %12889, align 8, !tbaa !14
  %12891 = fmul double %12884, %12890
  %12892 = fneg double %12891
  %12893 = call double @llvm.fmuladd.f64(double %12876, double %12882, double %12892)
  %12894 = getelementptr inbounds %struct.doublecomplex, ptr %39, i32 0, i32 0
  store double %12893, ptr %12894, align 8, !tbaa !11
  %12895 = getelementptr inbounds %struct.doublecomplex, ptr %63, i32 0, i32 0
  %12896 = load double, ptr %12895, align 8, !tbaa !11
  %12897 = load ptr, ptr %14, align 8, !tbaa !5
  %12898 = load i32, ptr %24, align 4, !tbaa !9
  %12899 = sext i32 %12898 to i64
  %12900 = getelementptr inbounds %struct.doublecomplex, ptr %12897, i64 %12899
  %12901 = getelementptr inbounds %struct.doublecomplex, ptr %12900, i32 0, i32 1
  %12902 = load double, ptr %12901, align 8, !tbaa !14
  %12903 = getelementptr inbounds %struct.doublecomplex, ptr %63, i32 0, i32 1
  %12904 = load double, ptr %12903, align 8, !tbaa !14
  %12905 = load ptr, ptr %14, align 8, !tbaa !5
  %12906 = load i32, ptr %24, align 4, !tbaa !9
  %12907 = sext i32 %12906 to i64
  %12908 = getelementptr inbounds %struct.doublecomplex, ptr %12905, i64 %12907
  %12909 = getelementptr inbounds %struct.doublecomplex, ptr %12908, i32 0, i32 0
  %12910 = load double, ptr %12909, align 8, !tbaa !11
  %12911 = fmul double %12904, %12910
  %12912 = call double @llvm.fmuladd.f64(double %12896, double %12902, double %12911)
  %12913 = getelementptr inbounds %struct.doublecomplex, ptr %39, i32 0, i32 1
  store double %12912, ptr %12913, align 8, !tbaa !14
  %12914 = getelementptr inbounds %struct.doublecomplex, ptr %32, i32 0, i32 0
  %12915 = load double, ptr %12914, align 8, !tbaa !11
  %12916 = getelementptr inbounds %struct.doublecomplex, ptr %39, i32 0, i32 0
  %12917 = load double, ptr %12916, align 8, !tbaa !11
  %12918 = fadd double %12915, %12917
  %12919 = getelementptr inbounds %struct.doublecomplex, ptr %31, i32 0, i32 0
  store double %12918, ptr %12919, align 8, !tbaa !11
  %12920 = getelementptr inbounds %struct.doublecomplex, ptr %32, i32 0, i32 1
  %12921 = load double, ptr %12920, align 8, !tbaa !14
  %12922 = getelementptr inbounds %struct.doublecomplex, ptr %39, i32 0, i32 1
  %12923 = load double, ptr %12922, align 8, !tbaa !14
  %12924 = fadd double %12921, %12923
  %12925 = getelementptr inbounds %struct.doublecomplex, ptr %31, i32 0, i32 1
  store double %12924, ptr %12925, align 8, !tbaa !14
  %12926 = load i32, ptr %49, align 4, !tbaa !9
  %12927 = load i32, ptr %17, align 4, !tbaa !9
  %12928 = mul nsw i32 %12927, 6
  %12929 = add nsw i32 %12926, %12928
  store i32 %12929, ptr %25, align 4, !tbaa !9
  %12930 = getelementptr inbounds %struct.doublecomplex, ptr %64, i32 0, i32 0
  %12931 = load double, ptr %12930, align 8, !tbaa !11
  %12932 = load ptr, ptr %14, align 8, !tbaa !5
  %12933 = load i32, ptr %25, align 4, !tbaa !9
  %12934 = sext i32 %12933 to i64
  %12935 = getelementptr inbounds %struct.doublecomplex, ptr %12932, i64 %12934
  %12936 = getelementptr inbounds %struct.doublecomplex, ptr %12935, i32 0, i32 0
  %12937 = load double, ptr %12936, align 8, !tbaa !11
  %12938 = getelementptr inbounds %struct.doublecomplex, ptr %64, i32 0, i32 1
  %12939 = load double, ptr %12938, align 8, !tbaa !14
  %12940 = load ptr, ptr %14, align 8, !tbaa !5
  %12941 = load i32, ptr %25, align 4, !tbaa !9
  %12942 = sext i32 %12941 to i64
  %12943 = getelementptr inbounds %struct.doublecomplex, ptr %12940, i64 %12942
  %12944 = getelementptr inbounds %struct.doublecomplex, ptr %12943, i32 0, i32 1
  %12945 = load double, ptr %12944, align 8, !tbaa !14
  %12946 = fmul double %12939, %12945
  %12947 = fneg double %12946
  %12948 = call double @llvm.fmuladd.f64(double %12931, double %12937, double %12947)
  %12949 = getelementptr inbounds %struct.doublecomplex, ptr %40, i32 0, i32 0
  store double %12948, ptr %12949, align 8, !tbaa !11
  %12950 = getelementptr inbounds %struct.doublecomplex, ptr %64, i32 0, i32 0
  %12951 = load double, ptr %12950, align 8, !tbaa !11
  %12952 = load ptr, ptr %14, align 8, !tbaa !5
  %12953 = load i32, ptr %25, align 4, !tbaa !9
  %12954 = sext i32 %12953 to i64
  %12955 = getelementptr inbounds %struct.doublecomplex, ptr %12952, i64 %12954
  %12956 = getelementptr inbounds %struct.doublecomplex, ptr %12955, i32 0, i32 1
  %12957 = load double, ptr %12956, align 8, !tbaa !14
  %12958 = getelementptr inbounds %struct.doublecomplex, ptr %64, i32 0, i32 1
  %12959 = load double, ptr %12958, align 8, !tbaa !14
  %12960 = load ptr, ptr %14, align 8, !tbaa !5
  %12961 = load i32, ptr %25, align 4, !tbaa !9
  %12962 = sext i32 %12961 to i64
  %12963 = getelementptr inbounds %struct.doublecomplex, ptr %12960, i64 %12962
  %12964 = getelementptr inbounds %struct.doublecomplex, ptr %12963, i32 0, i32 0
  %12965 = load double, ptr %12964, align 8, !tbaa !11
  %12966 = fmul double %12959, %12965
  %12967 = call double @llvm.fmuladd.f64(double %12951, double %12957, double %12966)
  %12968 = getelementptr inbounds %struct.doublecomplex, ptr %40, i32 0, i32 1
  store double %12967, ptr %12968, align 8, !tbaa !14
  %12969 = getelementptr inbounds %struct.doublecomplex, ptr %31, i32 0, i32 0
  %12970 = load double, ptr %12969, align 8, !tbaa !11
  %12971 = getelementptr inbounds %struct.doublecomplex, ptr %40, i32 0, i32 0
  %12972 = load double, ptr %12971, align 8, !tbaa !11
  %12973 = fadd double %12970, %12972
  %12974 = getelementptr inbounds %struct.doublecomplex, ptr %30, i32 0, i32 0
  store double %12973, ptr %12974, align 8, !tbaa !11
  %12975 = getelementptr inbounds %struct.doublecomplex, ptr %31, i32 0, i32 1
  %12976 = load double, ptr %12975, align 8, !tbaa !14
  %12977 = getelementptr inbounds %struct.doublecomplex, ptr %40, i32 0, i32 1
  %12978 = load double, ptr %12977, align 8, !tbaa !14
  %12979 = fadd double %12976, %12978
  %12980 = getelementptr inbounds %struct.doublecomplex, ptr %30, i32 0, i32 1
  store double %12979, ptr %12980, align 8, !tbaa !14
  %12981 = getelementptr inbounds %struct.doublecomplex, ptr %30, i32 0, i32 0
  %12982 = load double, ptr %12981, align 8, !tbaa !11
  %12983 = getelementptr inbounds %struct.doublecomplex, ptr %70, i32 0, i32 0
  store double %12982, ptr %12983, align 8, !tbaa !11
  %12984 = getelementptr inbounds %struct.doublecomplex, ptr %30, i32 0, i32 1
  %12985 = load double, ptr %12984, align 8, !tbaa !14
  %12986 = getelementptr inbounds %struct.doublecomplex, ptr %70, i32 0, i32 1
  store double %12985, ptr %12986, align 8, !tbaa !14
  %12987 = load i32, ptr %49, align 4, !tbaa !9
  %12988 = load i32, ptr %17, align 4, !tbaa !9
  %12989 = add nsw i32 %12987, %12988
  store i32 %12989, ptr %20, align 4, !tbaa !9
  %12990 = load i32, ptr %49, align 4, !tbaa !9
  %12991 = load i32, ptr %17, align 4, !tbaa !9
  %12992 = add nsw i32 %12990, %12991
  store i32 %12992, ptr %21, align 4, !tbaa !9
  %12993 = getelementptr inbounds %struct.doublecomplex, ptr %70, i32 0, i32 0
  %12994 = load double, ptr %12993, align 8, !tbaa !11
  %12995 = getelementptr inbounds %struct.doublecomplex, ptr %50, i32 0, i32 0
  %12996 = load double, ptr %12995, align 8, !tbaa !11
  %12997 = getelementptr inbounds %struct.doublecomplex, ptr %70, i32 0, i32 1
  %12998 = load double, ptr %12997, align 8, !tbaa !14
  %12999 = getelementptr inbounds %struct.doublecomplex, ptr %50, i32 0, i32 1
  %13000 = load double, ptr %12999, align 8, !tbaa !14
  %13001 = fmul double %12998, %13000
  %13002 = fneg double %13001
  %13003 = call double @llvm.fmuladd.f64(double %12994, double %12996, double %13002)
  %13004 = getelementptr inbounds %struct.doublecomplex, ptr %31, i32 0, i32 0
  store double %13003, ptr %13004, align 8, !tbaa !11
  %13005 = getelementptr inbounds %struct.doublecomplex, ptr %70, i32 0, i32 0
  %13006 = load double, ptr %13005, align 8, !tbaa !11
  %13007 = getelementptr inbounds %struct.doublecomplex, ptr %50, i32 0, i32 1
  %13008 = load double, ptr %13007, align 8, !tbaa !14
  %13009 = getelementptr inbounds %struct.doublecomplex, ptr %70, i32 0, i32 1
  %13010 = load double, ptr %13009, align 8, !tbaa !14
  %13011 = getelementptr inbounds %struct.doublecomplex, ptr %50, i32 0, i32 0
  %13012 = load double, ptr %13011, align 8, !tbaa !11
  %13013 = fmul double %13010, %13012
  %13014 = call double @llvm.fmuladd.f64(double %13006, double %13008, double %13013)
  %13015 = getelementptr inbounds %struct.doublecomplex, ptr %31, i32 0, i32 1
  store double %13014, ptr %13015, align 8, !tbaa !14
  %13016 = load ptr, ptr %14, align 8, !tbaa !5
  %13017 = load i32, ptr %21, align 4, !tbaa !9
  %13018 = sext i32 %13017 to i64
  %13019 = getelementptr inbounds %struct.doublecomplex, ptr %13016, i64 %13018
  %13020 = getelementptr inbounds %struct.doublecomplex, ptr %13019, i32 0, i32 0
  %13021 = load double, ptr %13020, align 8, !tbaa !11
  %13022 = getelementptr inbounds %struct.doublecomplex, ptr %31, i32 0, i32 0
  %13023 = load double, ptr %13022, align 8, !tbaa !11
  %13024 = fsub double %13021, %13023
  %13025 = getelementptr inbounds %struct.doublecomplex, ptr %30, i32 0, i32 0
  store double %13024, ptr %13025, align 8, !tbaa !11
  %13026 = load ptr, ptr %14, align 8, !tbaa !5
  %13027 = load i32, ptr %21, align 4, !tbaa !9
  %13028 = sext i32 %13027 to i64
  %13029 = getelementptr inbounds %struct.doublecomplex, ptr %13026, i64 %13028
  %13030 = getelementptr inbounds %struct.doublecomplex, ptr %13029, i32 0, i32 1
  %13031 = load double, ptr %13030, align 8, !tbaa !14
  %13032 = getelementptr inbounds %struct.doublecomplex, ptr %31, i32 0, i32 1
  %13033 = load double, ptr %13032, align 8, !tbaa !14
  %13034 = fsub double %13031, %13033
  %13035 = getelementptr inbounds %struct.doublecomplex, ptr %30, i32 0, i32 1
  store double %13034, ptr %13035, align 8, !tbaa !14
  %13036 = getelementptr inbounds %struct.doublecomplex, ptr %30, i32 0, i32 0
  %13037 = load double, ptr %13036, align 8, !tbaa !11
  %13038 = load ptr, ptr %14, align 8, !tbaa !5
  %13039 = load i32, ptr %20, align 4, !tbaa !9
  %13040 = sext i32 %13039 to i64
  %13041 = getelementptr inbounds %struct.doublecomplex, ptr %13038, i64 %13040
  %13042 = getelementptr inbounds %struct.doublecomplex, ptr %13041, i32 0, i32 0
  store double %13037, ptr %13042, align 8, !tbaa !11
  %13043 = getelementptr inbounds %struct.doublecomplex, ptr %30, i32 0, i32 1
  %13044 = load double, ptr %13043, align 8, !tbaa !14
  %13045 = load ptr, ptr %14, align 8, !tbaa !5
  %13046 = load i32, ptr %20, align 4, !tbaa !9
  %13047 = sext i32 %13046 to i64
  %13048 = getelementptr inbounds %struct.doublecomplex, ptr %13045, i64 %13047
  %13049 = getelementptr inbounds %struct.doublecomplex, ptr %13048, i32 0, i32 1
  store double %13044, ptr %13049, align 8, !tbaa !14
  %13050 = load i32, ptr %49, align 4, !tbaa !9
  %13051 = load i32, ptr %17, align 4, !tbaa !9
  %13052 = shl i32 %13051, 1
  %13053 = add nsw i32 %13050, %13052
  store i32 %13053, ptr %20, align 4, !tbaa !9
  %13054 = load i32, ptr %49, align 4, !tbaa !9
  %13055 = load i32, ptr %17, align 4, !tbaa !9
  %13056 = shl i32 %13055, 1
  %13057 = add nsw i32 %13054, %13056
  store i32 %13057, ptr %21, align 4, !tbaa !9
  %13058 = getelementptr inbounds %struct.doublecomplex, ptr %70, i32 0, i32 0
  %13059 = load double, ptr %13058, align 8, !tbaa !11
  %13060 = getelementptr inbounds %struct.doublecomplex, ptr %51, i32 0, i32 0
  %13061 = load double, ptr %13060, align 8, !tbaa !11
  %13062 = getelementptr inbounds %struct.doublecomplex, ptr %70, i32 0, i32 1
  %13063 = load double, ptr %13062, align 8, !tbaa !14
  %13064 = getelementptr inbounds %struct.doublecomplex, ptr %51, i32 0, i32 1
  %13065 = load double, ptr %13064, align 8, !tbaa !14
  %13066 = fmul double %13063, %13065
  %13067 = fneg double %13066
  %13068 = call double @llvm.fmuladd.f64(double %13059, double %13061, double %13067)
  %13069 = getelementptr inbounds %struct.doublecomplex, ptr %31, i32 0, i32 0
  store double %13068, ptr %13069, align 8, !tbaa !11
  %13070 = getelementptr inbounds %struct.doublecomplex, ptr %70, i32 0, i32 0
  %13071 = load double, ptr %13070, align 8, !tbaa !11
  %13072 = getelementptr inbounds %struct.doublecomplex, ptr %51, i32 0, i32 1
  %13073 = load double, ptr %13072, align 8, !tbaa !14
  %13074 = getelementptr inbounds %struct.doublecomplex, ptr %70, i32 0, i32 1
  %13075 = load double, ptr %13074, align 8, !tbaa !14
  %13076 = getelementptr inbounds %struct.doublecomplex, ptr %51, i32 0, i32 0
  %13077 = load double, ptr %13076, align 8, !tbaa !11
  %13078 = fmul double %13075, %13077
  %13079 = call double @llvm.fmuladd.f64(double %13071, double %13073, double %13078)
  %13080 = getelementptr inbounds %struct.doublecomplex, ptr %31, i32 0, i32 1
  store double %13079, ptr %13080, align 8, !tbaa !14
  %13081 = load ptr, ptr %14, align 8, !tbaa !5
  %13082 = load i32, ptr %21, align 4, !tbaa !9
  %13083 = sext i32 %13082 to i64
  %13084 = getelementptr inbounds %struct.doublecomplex, ptr %13081, i64 %13083
  %13085 = getelementptr inbounds %struct.doublecomplex, ptr %13084, i32 0, i32 0
  %13086 = load double, ptr %13085, align 8, !tbaa !11
  %13087 = getelementptr inbounds %struct.doublecomplex, ptr %31, i32 0, i32 0
  %13088 = load double, ptr %13087, align 8, !tbaa !11
  %13089 = fsub double %13086, %13088
  %13090 = getelementptr inbounds %struct.doublecomplex, ptr %30, i32 0, i32 0
  store double %13089, ptr %13090, align 8, !tbaa !11
  %13091 = load ptr, ptr %14, align 8, !tbaa !5
  %13092 = load i32, ptr %21, align 4, !tbaa !9
  %13093 = sext i32 %13092 to i64
  %13094 = getelementptr inbounds %struct.doublecomplex, ptr %13091, i64 %13093
  %13095 = getelementptr inbounds %struct.doublecomplex, ptr %13094, i32 0, i32 1
  %13096 = load double, ptr %13095, align 8, !tbaa !14
  %13097 = getelementptr inbounds %struct.doublecomplex, ptr %31, i32 0, i32 1
  %13098 = load double, ptr %13097, align 8, !tbaa !14
  %13099 = fsub double %13096, %13098
  %13100 = getelementptr inbounds %struct.doublecomplex, ptr %30, i32 0, i32 1
  store double %13099, ptr %13100, align 8, !tbaa !14
  %13101 = getelementptr inbounds %struct.doublecomplex, ptr %30, i32 0, i32 0
  %13102 = load double, ptr %13101, align 8, !tbaa !11
  %13103 = load ptr, ptr %14, align 8, !tbaa !5
  %13104 = load i32, ptr %20, align 4, !tbaa !9
  %13105 = sext i32 %13104 to i64
  %13106 = getelementptr inbounds %struct.doublecomplex, ptr %13103, i64 %13105
  %13107 = getelementptr inbounds %struct.doublecomplex, ptr %13106, i32 0, i32 0
  store double %13102, ptr %13107, align 8, !tbaa !11
  %13108 = getelementptr inbounds %struct.doublecomplex, ptr %30, i32 0, i32 1
  %13109 = load double, ptr %13108, align 8, !tbaa !14
  %13110 = load ptr, ptr %14, align 8, !tbaa !5
  %13111 = load i32, ptr %20, align 4, !tbaa !9
  %13112 = sext i32 %13111 to i64
  %13113 = getelementptr inbounds %struct.doublecomplex, ptr %13110, i64 %13112
  %13114 = getelementptr inbounds %struct.doublecomplex, ptr %13113, i32 0, i32 1
  store double %13109, ptr %13114, align 8, !tbaa !14
  %13115 = load i32, ptr %49, align 4, !tbaa !9
  %13116 = load i32, ptr %17, align 4, !tbaa !9
  %13117 = mul nsw i32 %13116, 3
  %13118 = add nsw i32 %13115, %13117
  store i32 %13118, ptr %20, align 4, !tbaa !9
  %13119 = load i32, ptr %49, align 4, !tbaa !9
  %13120 = load i32, ptr %17, align 4, !tbaa !9
  %13121 = mul nsw i32 %13120, 3
  %13122 = add nsw i32 %13119, %13121
  store i32 %13122, ptr %21, align 4, !tbaa !9
  %13123 = getelementptr inbounds %struct.doublecomplex, ptr %70, i32 0, i32 0
  %13124 = load double, ptr %13123, align 8, !tbaa !11
  %13125 = getelementptr inbounds %struct.doublecomplex, ptr %52, i32 0, i32 0
  %13126 = load double, ptr %13125, align 8, !tbaa !11
  %13127 = getelementptr inbounds %struct.doublecomplex, ptr %70, i32 0, i32 1
  %13128 = load double, ptr %13127, align 8, !tbaa !14
  %13129 = getelementptr inbounds %struct.doublecomplex, ptr %52, i32 0, i32 1
  %13130 = load double, ptr %13129, align 8, !tbaa !14
  %13131 = fmul double %13128, %13130
  %13132 = fneg double %13131
  %13133 = call double @llvm.fmuladd.f64(double %13124, double %13126, double %13132)
  %13134 = getelementptr inbounds %struct.doublecomplex, ptr %31, i32 0, i32 0
  store double %13133, ptr %13134, align 8, !tbaa !11
  %13135 = getelementptr inbounds %struct.doublecomplex, ptr %70, i32 0, i32 0
  %13136 = load double, ptr %13135, align 8, !tbaa !11
  %13137 = getelementptr inbounds %struct.doublecomplex, ptr %52, i32 0, i32 1
  %13138 = load double, ptr %13137, align 8, !tbaa !14
  %13139 = getelementptr inbounds %struct.doublecomplex, ptr %70, i32 0, i32 1
  %13140 = load double, ptr %13139, align 8, !tbaa !14
  %13141 = getelementptr inbounds %struct.doublecomplex, ptr %52, i32 0, i32 0
  %13142 = load double, ptr %13141, align 8, !tbaa !11
  %13143 = fmul double %13140, %13142
  %13144 = call double @llvm.fmuladd.f64(double %13136, double %13138, double %13143)
  %13145 = getelementptr inbounds %struct.doublecomplex, ptr %31, i32 0, i32 1
  store double %13144, ptr %13145, align 8, !tbaa !14
  %13146 = load ptr, ptr %14, align 8, !tbaa !5
  %13147 = load i32, ptr %21, align 4, !tbaa !9
  %13148 = sext i32 %13147 to i64
  %13149 = getelementptr inbounds %struct.doublecomplex, ptr %13146, i64 %13148
  %13150 = getelementptr inbounds %struct.doublecomplex, ptr %13149, i32 0, i32 0
  %13151 = load double, ptr %13150, align 8, !tbaa !11
  %13152 = getelementptr inbounds %struct.doublecomplex, ptr %31, i32 0, i32 0
  %13153 = load double, ptr %13152, align 8, !tbaa !11
  %13154 = fsub double %13151, %13153
  %13155 = getelementptr inbounds %struct.doublecomplex, ptr %30, i32 0, i32 0
  store double %13154, ptr %13155, align 8, !tbaa !11
  %13156 = load ptr, ptr %14, align 8, !tbaa !5
  %13157 = load i32, ptr %21, align 4, !tbaa !9
  %13158 = sext i32 %13157 to i64
  %13159 = getelementptr inbounds %struct.doublecomplex, ptr %13156, i64 %13158
  %13160 = getelementptr inbounds %struct.doublecomplex, ptr %13159, i32 0, i32 1
  %13161 = load double, ptr %13160, align 8, !tbaa !14
  %13162 = getelementptr inbounds %struct.doublecomplex, ptr %31, i32 0, i32 1
  %13163 = load double, ptr %13162, align 8, !tbaa !14
  %13164 = fsub double %13161, %13163
  %13165 = getelementptr inbounds %struct.doublecomplex, ptr %30, i32 0, i32 1
  store double %13164, ptr %13165, align 8, !tbaa !14
  %13166 = getelementptr inbounds %struct.doublecomplex, ptr %30, i32 0, i32 0
  %13167 = load double, ptr %13166, align 8, !tbaa !11
  %13168 = load ptr, ptr %14, align 8, !tbaa !5
  %13169 = load i32, ptr %20, align 4, !tbaa !9
  %13170 = sext i32 %13169 to i64
  %13171 = getelementptr inbounds %struct.doublecomplex, ptr %13168, i64 %13170
  %13172 = getelementptr inbounds %struct.doublecomplex, ptr %13171, i32 0, i32 0
  store double %13167, ptr %13172, align 8, !tbaa !11
  %13173 = getelementptr inbounds %struct.doublecomplex, ptr %30, i32 0, i32 1
  %13174 = load double, ptr %13173, align 8, !tbaa !14
  %13175 = load ptr, ptr %14, align 8, !tbaa !5
  %13176 = load i32, ptr %20, align 4, !tbaa !9
  %13177 = sext i32 %13176 to i64
  %13178 = getelementptr inbounds %struct.doublecomplex, ptr %13175, i64 %13177
  %13179 = getelementptr inbounds %struct.doublecomplex, ptr %13178, i32 0, i32 1
  store double %13174, ptr %13179, align 8, !tbaa !14
  %13180 = load i32, ptr %49, align 4, !tbaa !9
  %13181 = load i32, ptr %17, align 4, !tbaa !9
  %13182 = shl i32 %13181, 2
  %13183 = add nsw i32 %13180, %13182
  store i32 %13183, ptr %20, align 4, !tbaa !9
  %13184 = load i32, ptr %49, align 4, !tbaa !9
  %13185 = load i32, ptr %17, align 4, !tbaa !9
  %13186 = shl i32 %13185, 2
  %13187 = add nsw i32 %13184, %13186
  store i32 %13187, ptr %21, align 4, !tbaa !9
  %13188 = getelementptr inbounds %struct.doublecomplex, ptr %70, i32 0, i32 0
  %13189 = load double, ptr %13188, align 8, !tbaa !11
  %13190 = getelementptr inbounds %struct.doublecomplex, ptr %53, i32 0, i32 0
  %13191 = load double, ptr %13190, align 8, !tbaa !11
  %13192 = getelementptr inbounds %struct.doublecomplex, ptr %70, i32 0, i32 1
  %13193 = load double, ptr %13192, align 8, !tbaa !14
  %13194 = getelementptr inbounds %struct.doublecomplex, ptr %53, i32 0, i32 1
  %13195 = load double, ptr %13194, align 8, !tbaa !14
  %13196 = fmul double %13193, %13195
  %13197 = fneg double %13196
  %13198 = call double @llvm.fmuladd.f64(double %13189, double %13191, double %13197)
  %13199 = getelementptr inbounds %struct.doublecomplex, ptr %31, i32 0, i32 0
  store double %13198, ptr %13199, align 8, !tbaa !11
  %13200 = getelementptr inbounds %struct.doublecomplex, ptr %70, i32 0, i32 0
  %13201 = load double, ptr %13200, align 8, !tbaa !11
  %13202 = getelementptr inbounds %struct.doublecomplex, ptr %53, i32 0, i32 1
  %13203 = load double, ptr %13202, align 8, !tbaa !14
  %13204 = getelementptr inbounds %struct.doublecomplex, ptr %70, i32 0, i32 1
  %13205 = load double, ptr %13204, align 8, !tbaa !14
  %13206 = getelementptr inbounds %struct.doublecomplex, ptr %53, i32 0, i32 0
  %13207 = load double, ptr %13206, align 8, !tbaa !11
  %13208 = fmul double %13205, %13207
  %13209 = call double @llvm.fmuladd.f64(double %13201, double %13203, double %13208)
  %13210 = getelementptr inbounds %struct.doublecomplex, ptr %31, i32 0, i32 1
  store double %13209, ptr %13210, align 8, !tbaa !14
  %13211 = load ptr, ptr %14, align 8, !tbaa !5
  %13212 = load i32, ptr %21, align 4, !tbaa !9
  %13213 = sext i32 %13212 to i64
  %13214 = getelementptr inbounds %struct.doublecomplex, ptr %13211, i64 %13213
  %13215 = getelementptr inbounds %struct.doublecomplex, ptr %13214, i32 0, i32 0
  %13216 = load double, ptr %13215, align 8, !tbaa !11
  %13217 = getelementptr inbounds %struct.doublecomplex, ptr %31, i32 0, i32 0
  %13218 = load double, ptr %13217, align 8, !tbaa !11
  %13219 = fsub double %13216, %13218
  %13220 = getelementptr inbounds %struct.doublecomplex, ptr %30, i32 0, i32 0
  store double %13219, ptr %13220, align 8, !tbaa !11
  %13221 = load ptr, ptr %14, align 8, !tbaa !5
  %13222 = load i32, ptr %21, align 4, !tbaa !9
  %13223 = sext i32 %13222 to i64
  %13224 = getelementptr inbounds %struct.doublecomplex, ptr %13221, i64 %13223
  %13225 = getelementptr inbounds %struct.doublecomplex, ptr %13224, i32 0, i32 1
  %13226 = load double, ptr %13225, align 8, !tbaa !14
  %13227 = getelementptr inbounds %struct.doublecomplex, ptr %31, i32 0, i32 1
  %13228 = load double, ptr %13227, align 8, !tbaa !14
  %13229 = fsub double %13226, %13228
  %13230 = getelementptr inbounds %struct.doublecomplex, ptr %30, i32 0, i32 1
  store double %13229, ptr %13230, align 8, !tbaa !14
  %13231 = getelementptr inbounds %struct.doublecomplex, ptr %30, i32 0, i32 0
  %13232 = load double, ptr %13231, align 8, !tbaa !11
  %13233 = load ptr, ptr %14, align 8, !tbaa !5
  %13234 = load i32, ptr %20, align 4, !tbaa !9
  %13235 = sext i32 %13234 to i64
  %13236 = getelementptr inbounds %struct.doublecomplex, ptr %13233, i64 %13235
  %13237 = getelementptr inbounds %struct.doublecomplex, ptr %13236, i32 0, i32 0
  store double %13232, ptr %13237, align 8, !tbaa !11
  %13238 = getelementptr inbounds %struct.doublecomplex, ptr %30, i32 0, i32 1
  %13239 = load double, ptr %13238, align 8, !tbaa !14
  %13240 = load ptr, ptr %14, align 8, !tbaa !5
  %13241 = load i32, ptr %20, align 4, !tbaa !9
  %13242 = sext i32 %13241 to i64
  %13243 = getelementptr inbounds %struct.doublecomplex, ptr %13240, i64 %13242
  %13244 = getelementptr inbounds %struct.doublecomplex, ptr %13243, i32 0, i32 1
  store double %13239, ptr %13244, align 8, !tbaa !14
  %13245 = load i32, ptr %49, align 4, !tbaa !9
  %13246 = load i32, ptr %17, align 4, !tbaa !9
  %13247 = mul nsw i32 %13246, 5
  %13248 = add nsw i32 %13245, %13247
  store i32 %13248, ptr %20, align 4, !tbaa !9
  %13249 = load i32, ptr %49, align 4, !tbaa !9
  %13250 = load i32, ptr %17, align 4, !tbaa !9
  %13251 = mul nsw i32 %13250, 5
  %13252 = add nsw i32 %13249, %13251
  store i32 %13252, ptr %21, align 4, !tbaa !9
  %13253 = getelementptr inbounds %struct.doublecomplex, ptr %70, i32 0, i32 0
  %13254 = load double, ptr %13253, align 8, !tbaa !11
  %13255 = getelementptr inbounds %struct.doublecomplex, ptr %54, i32 0, i32 0
  %13256 = load double, ptr %13255, align 8, !tbaa !11
  %13257 = getelementptr inbounds %struct.doublecomplex, ptr %70, i32 0, i32 1
  %13258 = load double, ptr %13257, align 8, !tbaa !14
  %13259 = getelementptr inbounds %struct.doublecomplex, ptr %54, i32 0, i32 1
  %13260 = load double, ptr %13259, align 8, !tbaa !14
  %13261 = fmul double %13258, %13260
  %13262 = fneg double %13261
  %13263 = call double @llvm.fmuladd.f64(double %13254, double %13256, double %13262)
  %13264 = getelementptr inbounds %struct.doublecomplex, ptr %31, i32 0, i32 0
  store double %13263, ptr %13264, align 8, !tbaa !11
  %13265 = getelementptr inbounds %struct.doublecomplex, ptr %70, i32 0, i32 0
  %13266 = load double, ptr %13265, align 8, !tbaa !11
  %13267 = getelementptr inbounds %struct.doublecomplex, ptr %54, i32 0, i32 1
  %13268 = load double, ptr %13267, align 8, !tbaa !14
  %13269 = getelementptr inbounds %struct.doublecomplex, ptr %70, i32 0, i32 1
  %13270 = load double, ptr %13269, align 8, !tbaa !14
  %13271 = getelementptr inbounds %struct.doublecomplex, ptr %54, i32 0, i32 0
  %13272 = load double, ptr %13271, align 8, !tbaa !11
  %13273 = fmul double %13270, %13272
  %13274 = call double @llvm.fmuladd.f64(double %13266, double %13268, double %13273)
  %13275 = getelementptr inbounds %struct.doublecomplex, ptr %31, i32 0, i32 1
  store double %13274, ptr %13275, align 8, !tbaa !14
  %13276 = load ptr, ptr %14, align 8, !tbaa !5
  %13277 = load i32, ptr %21, align 4, !tbaa !9
  %13278 = sext i32 %13277 to i64
  %13279 = getelementptr inbounds %struct.doublecomplex, ptr %13276, i64 %13278
  %13280 = getelementptr inbounds %struct.doublecomplex, ptr %13279, i32 0, i32 0
  %13281 = load double, ptr %13280, align 8, !tbaa !11
  %13282 = getelementptr inbounds %struct.doublecomplex, ptr %31, i32 0, i32 0
  %13283 = load double, ptr %13282, align 8, !tbaa !11
  %13284 = fsub double %13281, %13283
  %13285 = getelementptr inbounds %struct.doublecomplex, ptr %30, i32 0, i32 0
  store double %13284, ptr %13285, align 8, !tbaa !11
  %13286 = load ptr, ptr %14, align 8, !tbaa !5
  %13287 = load i32, ptr %21, align 4, !tbaa !9
  %13288 = sext i32 %13287 to i64
  %13289 = getelementptr inbounds %struct.doublecomplex, ptr %13286, i64 %13288
  %13290 = getelementptr inbounds %struct.doublecomplex, ptr %13289, i32 0, i32 1
  %13291 = load double, ptr %13290, align 8, !tbaa !14
  %13292 = getelementptr inbounds %struct.doublecomplex, ptr %31, i32 0, i32 1
  %13293 = load double, ptr %13292, align 8, !tbaa !14
  %13294 = fsub double %13291, %13293
  %13295 = getelementptr inbounds %struct.doublecomplex, ptr %30, i32 0, i32 1
  store double %13294, ptr %13295, align 8, !tbaa !14
  %13296 = getelementptr inbounds %struct.doublecomplex, ptr %30, i32 0, i32 0
  %13297 = load double, ptr %13296, align 8, !tbaa !11
  %13298 = load ptr, ptr %14, align 8, !tbaa !5
  %13299 = load i32, ptr %20, align 4, !tbaa !9
  %13300 = sext i32 %13299 to i64
  %13301 = getelementptr inbounds %struct.doublecomplex, ptr %13298, i64 %13300
  %13302 = getelementptr inbounds %struct.doublecomplex, ptr %13301, i32 0, i32 0
  store double %13297, ptr %13302, align 8, !tbaa !11
  %13303 = getelementptr inbounds %struct.doublecomplex, ptr %30, i32 0, i32 1
  %13304 = load double, ptr %13303, align 8, !tbaa !14
  %13305 = load ptr, ptr %14, align 8, !tbaa !5
  %13306 = load i32, ptr %20, align 4, !tbaa !9
  %13307 = sext i32 %13306 to i64
  %13308 = getelementptr inbounds %struct.doublecomplex, ptr %13305, i64 %13307
  %13309 = getelementptr inbounds %struct.doublecomplex, ptr %13308, i32 0, i32 1
  store double %13304, ptr %13309, align 8, !tbaa !14
  %13310 = load i32, ptr %49, align 4, !tbaa !9
  %13311 = load i32, ptr %17, align 4, !tbaa !9
  %13312 = mul nsw i32 %13311, 6
  %13313 = add nsw i32 %13310, %13312
  store i32 %13313, ptr %20, align 4, !tbaa !9
  %13314 = load i32, ptr %49, align 4, !tbaa !9
  %13315 = load i32, ptr %17, align 4, !tbaa !9
  %13316 = mul nsw i32 %13315, 6
  %13317 = add nsw i32 %13314, %13316
  store i32 %13317, ptr %21, align 4, !tbaa !9
  %13318 = getelementptr inbounds %struct.doublecomplex, ptr %70, i32 0, i32 0
  %13319 = load double, ptr %13318, align 8, !tbaa !11
  %13320 = getelementptr inbounds %struct.doublecomplex, ptr %55, i32 0, i32 0
  %13321 = load double, ptr %13320, align 8, !tbaa !11
  %13322 = getelementptr inbounds %struct.doublecomplex, ptr %70, i32 0, i32 1
  %13323 = load double, ptr %13322, align 8, !tbaa !14
  %13324 = getelementptr inbounds %struct.doublecomplex, ptr %55, i32 0, i32 1
  %13325 = load double, ptr %13324, align 8, !tbaa !14
  %13326 = fmul double %13323, %13325
  %13327 = fneg double %13326
  %13328 = call double @llvm.fmuladd.f64(double %13319, double %13321, double %13327)
  %13329 = getelementptr inbounds %struct.doublecomplex, ptr %31, i32 0, i32 0
  store double %13328, ptr %13329, align 8, !tbaa !11
  %13330 = getelementptr inbounds %struct.doublecomplex, ptr %70, i32 0, i32 0
  %13331 = load double, ptr %13330, align 8, !tbaa !11
  %13332 = getelementptr inbounds %struct.doublecomplex, ptr %55, i32 0, i32 1
  %13333 = load double, ptr %13332, align 8, !tbaa !14
  %13334 = getelementptr inbounds %struct.doublecomplex, ptr %70, i32 0, i32 1
  %13335 = load double, ptr %13334, align 8, !tbaa !14
  %13336 = getelementptr inbounds %struct.doublecomplex, ptr %55, i32 0, i32 0
  %13337 = load double, ptr %13336, align 8, !tbaa !11
  %13338 = fmul double %13335, %13337
  %13339 = call double @llvm.fmuladd.f64(double %13331, double %13333, double %13338)
  %13340 = getelementptr inbounds %struct.doublecomplex, ptr %31, i32 0, i32 1
  store double %13339, ptr %13340, align 8, !tbaa !14
  %13341 = load ptr, ptr %14, align 8, !tbaa !5
  %13342 = load i32, ptr %21, align 4, !tbaa !9
  %13343 = sext i32 %13342 to i64
  %13344 = getelementptr inbounds %struct.doublecomplex, ptr %13341, i64 %13343
  %13345 = getelementptr inbounds %struct.doublecomplex, ptr %13344, i32 0, i32 0
  %13346 = load double, ptr %13345, align 8, !tbaa !11
  %13347 = getelementptr inbounds %struct.doublecomplex, ptr %31, i32 0, i32 0
  %13348 = load double, ptr %13347, align 8, !tbaa !11
  %13349 = fsub double %13346, %13348
  %13350 = getelementptr inbounds %struct.doublecomplex, ptr %30, i32 0, i32 0
  store double %13349, ptr %13350, align 8, !tbaa !11
  %13351 = load ptr, ptr %14, align 8, !tbaa !5
  %13352 = load i32, ptr %21, align 4, !tbaa !9
  %13353 = sext i32 %13352 to i64
  %13354 = getelementptr inbounds %struct.doublecomplex, ptr %13351, i64 %13353
  %13355 = getelementptr inbounds %struct.doublecomplex, ptr %13354, i32 0, i32 1
  %13356 = load double, ptr %13355, align 8, !tbaa !14
  %13357 = getelementptr inbounds %struct.doublecomplex, ptr %31, i32 0, i32 1
  %13358 = load double, ptr %13357, align 8, !tbaa !14
  %13359 = fsub double %13356, %13358
  %13360 = getelementptr inbounds %struct.doublecomplex, ptr %30, i32 0, i32 1
  store double %13359, ptr %13360, align 8, !tbaa !14
  %13361 = getelementptr inbounds %struct.doublecomplex, ptr %30, i32 0, i32 0
  %13362 = load double, ptr %13361, align 8, !tbaa !11
  %13363 = load ptr, ptr %14, align 8, !tbaa !5
  %13364 = load i32, ptr %20, align 4, !tbaa !9
  %13365 = sext i32 %13364 to i64
  %13366 = getelementptr inbounds %struct.doublecomplex, ptr %13363, i64 %13365
  %13367 = getelementptr inbounds %struct.doublecomplex, ptr %13366, i32 0, i32 0
  store double %13362, ptr %13367, align 8, !tbaa !11
  %13368 = getelementptr inbounds %struct.doublecomplex, ptr %30, i32 0, i32 1
  %13369 = load double, ptr %13368, align 8, !tbaa !14
  %13370 = load ptr, ptr %14, align 8, !tbaa !5
  %13371 = load i32, ptr %20, align 4, !tbaa !9
  %13372 = sext i32 %13371 to i64
  %13373 = getelementptr inbounds %struct.doublecomplex, ptr %13370, i64 %13372
  %13374 = getelementptr inbounds %struct.doublecomplex, ptr %13373, i32 0, i32 1
  store double %13369, ptr %13374, align 8, !tbaa !14
  br label %13375

13375:                                            ; preds = %12663
  %13376 = load i32, ptr %49, align 4, !tbaa !9
  %13377 = add nsw i32 %13376, 1
  store i32 %13377, ptr %49, align 4, !tbaa !9
  br label %12659, !llvm.loop !31

13378:                                            ; preds = %12659
  br label %19171

13379:                                            ; preds = %9794
  %13380 = load ptr, ptr %12, align 8, !tbaa !5
  %13381 = getelementptr inbounds %struct.doublecomplex, ptr %13380, i64 1
  %13382 = getelementptr inbounds %struct.doublecomplex, ptr %13381, i32 0, i32 0
  %13383 = load double, ptr %13382, align 8, !tbaa !11
  %13384 = getelementptr inbounds %struct.doublecomplex, ptr %59, i32 0, i32 0
  store double %13383, ptr %13384, align 8, !tbaa !11
  %13385 = load ptr, ptr %12, align 8, !tbaa !5
  %13386 = getelementptr inbounds %struct.doublecomplex, ptr %13385, i64 1
  %13387 = getelementptr inbounds %struct.doublecomplex, ptr %13386, i32 0, i32 1
  %13388 = load double, ptr %13387, align 8, !tbaa !14
  %13389 = getelementptr inbounds %struct.doublecomplex, ptr %59, i32 0, i32 1
  store double %13388, ptr %13389, align 8, !tbaa !14
  %13390 = call { double, double } @Cd(ptr noundef %59)
  %13391 = extractvalue { double, double } %13390, 0
  %13392 = extractvalue { double, double } %13390, 1
  %13393 = fneg double %13392
  %13394 = call ptr @_pCd(ptr noundef %31)
  %13395 = getelementptr inbounds { double, double }, ptr %13394, i32 0, i32 0
  %13396 = getelementptr inbounds { double, double }, ptr %13394, i32 0, i32 1
  store double %13391, ptr %13395, align 8
  store double %13393, ptr %13396, align 8
  %13397 = load ptr, ptr %13, align 8, !tbaa !5
  %13398 = getelementptr inbounds %struct.doublecomplex, ptr %13397, i32 0, i32 0
  %13399 = load double, ptr %13398, align 8, !tbaa !11
  %13400 = getelementptr inbounds %struct.doublecomplex, ptr %31, i32 0, i32 0
  %13401 = load double, ptr %13400, align 8, !tbaa !11
  %13402 = load ptr, ptr %13, align 8, !tbaa !5
  %13403 = getelementptr inbounds %struct.doublecomplex, ptr %13402, i32 0, i32 1
  %13404 = load double, ptr %13403, align 8, !tbaa !14
  %13405 = getelementptr inbounds %struct.doublecomplex, ptr %31, i32 0, i32 1
  %13406 = load double, ptr %13405, align 8, !tbaa !14
  %13407 = fmul double %13404, %13406
  %13408 = fneg double %13407
  %13409 = call double @llvm.fmuladd.f64(double %13399, double %13401, double %13408)
  %13410 = getelementptr inbounds %struct.doublecomplex, ptr %30, i32 0, i32 0
  store double %13409, ptr %13410, align 8, !tbaa !11
  %13411 = load ptr, ptr %13, align 8, !tbaa !5
  %13412 = getelementptr inbounds %struct.doublecomplex, ptr %13411, i32 0, i32 0
  %13413 = load double, ptr %13412, align 8, !tbaa !11
  %13414 = getelementptr inbounds %struct.doublecomplex, ptr %31, i32 0, i32 1
  %13415 = load double, ptr %13414, align 8, !tbaa !14
  %13416 = load ptr, ptr %13, align 8, !tbaa !5
  %13417 = getelementptr inbounds %struct.doublecomplex, ptr %13416, i32 0, i32 1
  %13418 = load double, ptr %13417, align 8, !tbaa !14
  %13419 = getelementptr inbounds %struct.doublecomplex, ptr %31, i32 0, i32 0
  %13420 = load double, ptr %13419, align 8, !tbaa !11
  %13421 = fmul double %13418, %13420
  %13422 = call double @llvm.fmuladd.f64(double %13413, double %13415, double %13421)
  %13423 = getelementptr inbounds %struct.doublecomplex, ptr %30, i32 0, i32 1
  store double %13422, ptr %13423, align 8, !tbaa !14
  %13424 = getelementptr inbounds %struct.doublecomplex, ptr %30, i32 0, i32 0
  %13425 = load double, ptr %13424, align 8, !tbaa !11
  %13426 = getelementptr inbounds %struct.doublecomplex, ptr %50, i32 0, i32 0
  store double %13425, ptr %13426, align 8, !tbaa !11
  %13427 = getelementptr inbounds %struct.doublecomplex, ptr %30, i32 0, i32 1
  %13428 = load double, ptr %13427, align 8, !tbaa !14
  %13429 = getelementptr inbounds %struct.doublecomplex, ptr %50, i32 0, i32 1
  store double %13428, ptr %13429, align 8, !tbaa !14
  %13430 = load ptr, ptr %12, align 8, !tbaa !5
  %13431 = getelementptr inbounds %struct.doublecomplex, ptr %13430, i64 2
  %13432 = getelementptr inbounds %struct.doublecomplex, ptr %13431, i32 0, i32 0
  %13433 = load double, ptr %13432, align 8, !tbaa !11
  %13434 = getelementptr inbounds %struct.doublecomplex, ptr %60, i32 0, i32 0
  store double %13433, ptr %13434, align 8, !tbaa !11
  %13435 = load ptr, ptr %12, align 8, !tbaa !5
  %13436 = getelementptr inbounds %struct.doublecomplex, ptr %13435, i64 2
  %13437 = getelementptr inbounds %struct.doublecomplex, ptr %13436, i32 0, i32 1
  %13438 = load double, ptr %13437, align 8, !tbaa !14
  %13439 = getelementptr inbounds %struct.doublecomplex, ptr %60, i32 0, i32 1
  store double %13438, ptr %13439, align 8, !tbaa !14
  %13440 = call { double, double } @Cd(ptr noundef %60)
  %13441 = extractvalue { double, double } %13440, 0
  %13442 = extractvalue { double, double } %13440, 1
  %13443 = fneg double %13442
  %13444 = call ptr @_pCd(ptr noundef %31)
  %13445 = getelementptr inbounds { double, double }, ptr %13444, i32 0, i32 0
  %13446 = getelementptr inbounds { double, double }, ptr %13444, i32 0, i32 1
  store double %13441, ptr %13445, align 8
  store double %13443, ptr %13446, align 8
  %13447 = load ptr, ptr %13, align 8, !tbaa !5
  %13448 = getelementptr inbounds %struct.doublecomplex, ptr %13447, i32 0, i32 0
  %13449 = load double, ptr %13448, align 8, !tbaa !11
  %13450 = getelementptr inbounds %struct.doublecomplex, ptr %31, i32 0, i32 0
  %13451 = load double, ptr %13450, align 8, !tbaa !11
  %13452 = load ptr, ptr %13, align 8, !tbaa !5
  %13453 = getelementptr inbounds %struct.doublecomplex, ptr %13452, i32 0, i32 1
  %13454 = load double, ptr %13453, align 8, !tbaa !14
  %13455 = getelementptr inbounds %struct.doublecomplex, ptr %31, i32 0, i32 1
  %13456 = load double, ptr %13455, align 8, !tbaa !14
  %13457 = fmul double %13454, %13456
  %13458 = fneg double %13457
  %13459 = call double @llvm.fmuladd.f64(double %13449, double %13451, double %13458)
  %13460 = getelementptr inbounds %struct.doublecomplex, ptr %30, i32 0, i32 0
  store double %13459, ptr %13460, align 8, !tbaa !11
  %13461 = load ptr, ptr %13, align 8, !tbaa !5
  %13462 = getelementptr inbounds %struct.doublecomplex, ptr %13461, i32 0, i32 0
  %13463 = load double, ptr %13462, align 8, !tbaa !11
  %13464 = getelementptr inbounds %struct.doublecomplex, ptr %31, i32 0, i32 1
  %13465 = load double, ptr %13464, align 8, !tbaa !14
  %13466 = load ptr, ptr %13, align 8, !tbaa !5
  %13467 = getelementptr inbounds %struct.doublecomplex, ptr %13466, i32 0, i32 1
  %13468 = load double, ptr %13467, align 8, !tbaa !14
  %13469 = getelementptr inbounds %struct.doublecomplex, ptr %31, i32 0, i32 0
  %13470 = load double, ptr %13469, align 8, !tbaa !11
  %13471 = fmul double %13468, %13470
  %13472 = call double @llvm.fmuladd.f64(double %13463, double %13465, double %13471)
  %13473 = getelementptr inbounds %struct.doublecomplex, ptr %30, i32 0, i32 1
  store double %13472, ptr %13473, align 8, !tbaa !14
  %13474 = getelementptr inbounds %struct.doublecomplex, ptr %30, i32 0, i32 0
  %13475 = load double, ptr %13474, align 8, !tbaa !11
  %13476 = getelementptr inbounds %struct.doublecomplex, ptr %51, i32 0, i32 0
  store double %13475, ptr %13476, align 8, !tbaa !11
  %13477 = getelementptr inbounds %struct.doublecomplex, ptr %30, i32 0, i32 1
  %13478 = load double, ptr %13477, align 8, !tbaa !14
  %13479 = getelementptr inbounds %struct.doublecomplex, ptr %51, i32 0, i32 1
  store double %13478, ptr %13479, align 8, !tbaa !14
  %13480 = load ptr, ptr %12, align 8, !tbaa !5
  %13481 = getelementptr inbounds %struct.doublecomplex, ptr %13480, i64 3
  %13482 = getelementptr inbounds %struct.doublecomplex, ptr %13481, i32 0, i32 0
  %13483 = load double, ptr %13482, align 8, !tbaa !11
  %13484 = getelementptr inbounds %struct.doublecomplex, ptr %61, i32 0, i32 0
  store double %13483, ptr %13484, align 8, !tbaa !11
  %13485 = load ptr, ptr %12, align 8, !tbaa !5
  %13486 = getelementptr inbounds %struct.doublecomplex, ptr %13485, i64 3
  %13487 = getelementptr inbounds %struct.doublecomplex, ptr %13486, i32 0, i32 1
  %13488 = load double, ptr %13487, align 8, !tbaa !14
  %13489 = getelementptr inbounds %struct.doublecomplex, ptr %61, i32 0, i32 1
  store double %13488, ptr %13489, align 8, !tbaa !14
  %13490 = call { double, double } @Cd(ptr noundef %61)
  %13491 = extractvalue { double, double } %13490, 0
  %13492 = extractvalue { double, double } %13490, 1
  %13493 = fneg double %13492
  %13494 = call ptr @_pCd(ptr noundef %31)
  %13495 = getelementptr inbounds { double, double }, ptr %13494, i32 0, i32 0
  %13496 = getelementptr inbounds { double, double }, ptr %13494, i32 0, i32 1
  store double %13491, ptr %13495, align 8
  store double %13493, ptr %13496, align 8
  %13497 = load ptr, ptr %13, align 8, !tbaa !5
  %13498 = getelementptr inbounds %struct.doublecomplex, ptr %13497, i32 0, i32 0
  %13499 = load double, ptr %13498, align 8, !tbaa !11
  %13500 = getelementptr inbounds %struct.doublecomplex, ptr %31, i32 0, i32 0
  %13501 = load double, ptr %13500, align 8, !tbaa !11
  %13502 = load ptr, ptr %13, align 8, !tbaa !5
  %13503 = getelementptr inbounds %struct.doublecomplex, ptr %13502, i32 0, i32 1
  %13504 = load double, ptr %13503, align 8, !tbaa !14
  %13505 = getelementptr inbounds %struct.doublecomplex, ptr %31, i32 0, i32 1
  %13506 = load double, ptr %13505, align 8, !tbaa !14
  %13507 = fmul double %13504, %13506
  %13508 = fneg double %13507
  %13509 = call double @llvm.fmuladd.f64(double %13499, double %13501, double %13508)
  %13510 = getelementptr inbounds %struct.doublecomplex, ptr %30, i32 0, i32 0
  store double %13509, ptr %13510, align 8, !tbaa !11
  %13511 = load ptr, ptr %13, align 8, !tbaa !5
  %13512 = getelementptr inbounds %struct.doublecomplex, ptr %13511, i32 0, i32 0
  %13513 = load double, ptr %13512, align 8, !tbaa !11
  %13514 = getelementptr inbounds %struct.doublecomplex, ptr %31, i32 0, i32 1
  %13515 = load double, ptr %13514, align 8, !tbaa !14
  %13516 = load ptr, ptr %13, align 8, !tbaa !5
  %13517 = getelementptr inbounds %struct.doublecomplex, ptr %13516, i32 0, i32 1
  %13518 = load double, ptr %13517, align 8, !tbaa !14
  %13519 = getelementptr inbounds %struct.doublecomplex, ptr %31, i32 0, i32 0
  %13520 = load double, ptr %13519, align 8, !tbaa !11
  %13521 = fmul double %13518, %13520
  %13522 = call double @llvm.fmuladd.f64(double %13513, double %13515, double %13521)
  %13523 = getelementptr inbounds %struct.doublecomplex, ptr %30, i32 0, i32 1
  store double %13522, ptr %13523, align 8, !tbaa !14
  %13524 = getelementptr inbounds %struct.doublecomplex, ptr %30, i32 0, i32 0
  %13525 = load double, ptr %13524, align 8, !tbaa !11
  %13526 = getelementptr inbounds %struct.doublecomplex, ptr %52, i32 0, i32 0
  store double %13525, ptr %13526, align 8, !tbaa !11
  %13527 = getelementptr inbounds %struct.doublecomplex, ptr %30, i32 0, i32 1
  %13528 = load double, ptr %13527, align 8, !tbaa !14
  %13529 = getelementptr inbounds %struct.doublecomplex, ptr %52, i32 0, i32 1
  store double %13528, ptr %13529, align 8, !tbaa !14
  %13530 = load ptr, ptr %12, align 8, !tbaa !5
  %13531 = getelementptr inbounds %struct.doublecomplex, ptr %13530, i64 4
  %13532 = getelementptr inbounds %struct.doublecomplex, ptr %13531, i32 0, i32 0
  %13533 = load double, ptr %13532, align 8, !tbaa !11
  %13534 = getelementptr inbounds %struct.doublecomplex, ptr %62, i32 0, i32 0
  store double %13533, ptr %13534, align 8, !tbaa !11
  %13535 = load ptr, ptr %12, align 8, !tbaa !5
  %13536 = getelementptr inbounds %struct.doublecomplex, ptr %13535, i64 4
  %13537 = getelementptr inbounds %struct.doublecomplex, ptr %13536, i32 0, i32 1
  %13538 = load double, ptr %13537, align 8, !tbaa !14
  %13539 = getelementptr inbounds %struct.doublecomplex, ptr %62, i32 0, i32 1
  store double %13538, ptr %13539, align 8, !tbaa !14
  %13540 = call { double, double } @Cd(ptr noundef %62)
  %13541 = extractvalue { double, double } %13540, 0
  %13542 = extractvalue { double, double } %13540, 1
  %13543 = fneg double %13542
  %13544 = call ptr @_pCd(ptr noundef %31)
  %13545 = getelementptr inbounds { double, double }, ptr %13544, i32 0, i32 0
  %13546 = getelementptr inbounds { double, double }, ptr %13544, i32 0, i32 1
  store double %13541, ptr %13545, align 8
  store double %13543, ptr %13546, align 8
  %13547 = load ptr, ptr %13, align 8, !tbaa !5
  %13548 = getelementptr inbounds %struct.doublecomplex, ptr %13547, i32 0, i32 0
  %13549 = load double, ptr %13548, align 8, !tbaa !11
  %13550 = getelementptr inbounds %struct.doublecomplex, ptr %31, i32 0, i32 0
  %13551 = load double, ptr %13550, align 8, !tbaa !11
  %13552 = load ptr, ptr %13, align 8, !tbaa !5
  %13553 = getelementptr inbounds %struct.doublecomplex, ptr %13552, i32 0, i32 1
  %13554 = load double, ptr %13553, align 8, !tbaa !14
  %13555 = getelementptr inbounds %struct.doublecomplex, ptr %31, i32 0, i32 1
  %13556 = load double, ptr %13555, align 8, !tbaa !14
  %13557 = fmul double %13554, %13556
  %13558 = fneg double %13557
  %13559 = call double @llvm.fmuladd.f64(double %13549, double %13551, double %13558)
  %13560 = getelementptr inbounds %struct.doublecomplex, ptr %30, i32 0, i32 0
  store double %13559, ptr %13560, align 8, !tbaa !11
  %13561 = load ptr, ptr %13, align 8, !tbaa !5
  %13562 = getelementptr inbounds %struct.doublecomplex, ptr %13561, i32 0, i32 0
  %13563 = load double, ptr %13562, align 8, !tbaa !11
  %13564 = getelementptr inbounds %struct.doublecomplex, ptr %31, i32 0, i32 1
  %13565 = load double, ptr %13564, align 8, !tbaa !14
  %13566 = load ptr, ptr %13, align 8, !tbaa !5
  %13567 = getelementptr inbounds %struct.doublecomplex, ptr %13566, i32 0, i32 1
  %13568 = load double, ptr %13567, align 8, !tbaa !14
  %13569 = getelementptr inbounds %struct.doublecomplex, ptr %31, i32 0, i32 0
  %13570 = load double, ptr %13569, align 8, !tbaa !11
  %13571 = fmul double %13568, %13570
  %13572 = call double @llvm.fmuladd.f64(double %13563, double %13565, double %13571)
  %13573 = getelementptr inbounds %struct.doublecomplex, ptr %30, i32 0, i32 1
  store double %13572, ptr %13573, align 8, !tbaa !14
  %13574 = getelementptr inbounds %struct.doublecomplex, ptr %30, i32 0, i32 0
  %13575 = load double, ptr %13574, align 8, !tbaa !11
  %13576 = getelementptr inbounds %struct.doublecomplex, ptr %53, i32 0, i32 0
  store double %13575, ptr %13576, align 8, !tbaa !11
  %13577 = getelementptr inbounds %struct.doublecomplex, ptr %30, i32 0, i32 1
  %13578 = load double, ptr %13577, align 8, !tbaa !14
  %13579 = getelementptr inbounds %struct.doublecomplex, ptr %53, i32 0, i32 1
  store double %13578, ptr %13579, align 8, !tbaa !14
  %13580 = load ptr, ptr %12, align 8, !tbaa !5
  %13581 = getelementptr inbounds %struct.doublecomplex, ptr %13580, i64 5
  %13582 = getelementptr inbounds %struct.doublecomplex, ptr %13581, i32 0, i32 0
  %13583 = load double, ptr %13582, align 8, !tbaa !11
  %13584 = getelementptr inbounds %struct.doublecomplex, ptr %63, i32 0, i32 0
  store double %13583, ptr %13584, align 8, !tbaa !11
  %13585 = load ptr, ptr %12, align 8, !tbaa !5
  %13586 = getelementptr inbounds %struct.doublecomplex, ptr %13585, i64 5
  %13587 = getelementptr inbounds %struct.doublecomplex, ptr %13586, i32 0, i32 1
  %13588 = load double, ptr %13587, align 8, !tbaa !14
  %13589 = getelementptr inbounds %struct.doublecomplex, ptr %63, i32 0, i32 1
  store double %13588, ptr %13589, align 8, !tbaa !14
  %13590 = call { double, double } @Cd(ptr noundef %63)
  %13591 = extractvalue { double, double } %13590, 0
  %13592 = extractvalue { double, double } %13590, 1
  %13593 = fneg double %13592
  %13594 = call ptr @_pCd(ptr noundef %31)
  %13595 = getelementptr inbounds { double, double }, ptr %13594, i32 0, i32 0
  %13596 = getelementptr inbounds { double, double }, ptr %13594, i32 0, i32 1
  store double %13591, ptr %13595, align 8
  store double %13593, ptr %13596, align 8
  %13597 = load ptr, ptr %13, align 8, !tbaa !5
  %13598 = getelementptr inbounds %struct.doublecomplex, ptr %13597, i32 0, i32 0
  %13599 = load double, ptr %13598, align 8, !tbaa !11
  %13600 = getelementptr inbounds %struct.doublecomplex, ptr %31, i32 0, i32 0
  %13601 = load double, ptr %13600, align 8, !tbaa !11
  %13602 = load ptr, ptr %13, align 8, !tbaa !5
  %13603 = getelementptr inbounds %struct.doublecomplex, ptr %13602, i32 0, i32 1
  %13604 = load double, ptr %13603, align 8, !tbaa !14
  %13605 = getelementptr inbounds %struct.doublecomplex, ptr %31, i32 0, i32 1
  %13606 = load double, ptr %13605, align 8, !tbaa !14
  %13607 = fmul double %13604, %13606
  %13608 = fneg double %13607
  %13609 = call double @llvm.fmuladd.f64(double %13599, double %13601, double %13608)
  %13610 = getelementptr inbounds %struct.doublecomplex, ptr %30, i32 0, i32 0
  store double %13609, ptr %13610, align 8, !tbaa !11
  %13611 = load ptr, ptr %13, align 8, !tbaa !5
  %13612 = getelementptr inbounds %struct.doublecomplex, ptr %13611, i32 0, i32 0
  %13613 = load double, ptr %13612, align 8, !tbaa !11
  %13614 = getelementptr inbounds %struct.doublecomplex, ptr %31, i32 0, i32 1
  %13615 = load double, ptr %13614, align 8, !tbaa !14
  %13616 = load ptr, ptr %13, align 8, !tbaa !5
  %13617 = getelementptr inbounds %struct.doublecomplex, ptr %13616, i32 0, i32 1
  %13618 = load double, ptr %13617, align 8, !tbaa !14
  %13619 = getelementptr inbounds %struct.doublecomplex, ptr %31, i32 0, i32 0
  %13620 = load double, ptr %13619, align 8, !tbaa !11
  %13621 = fmul double %13618, %13620
  %13622 = call double @llvm.fmuladd.f64(double %13613, double %13615, double %13621)
  %13623 = getelementptr inbounds %struct.doublecomplex, ptr %30, i32 0, i32 1
  store double %13622, ptr %13623, align 8, !tbaa !14
  %13624 = getelementptr inbounds %struct.doublecomplex, ptr %30, i32 0, i32 0
  %13625 = load double, ptr %13624, align 8, !tbaa !11
  %13626 = getelementptr inbounds %struct.doublecomplex, ptr %54, i32 0, i32 0
  store double %13625, ptr %13626, align 8, !tbaa !11
  %13627 = getelementptr inbounds %struct.doublecomplex, ptr %30, i32 0, i32 1
  %13628 = load double, ptr %13627, align 8, !tbaa !14
  %13629 = getelementptr inbounds %struct.doublecomplex, ptr %54, i32 0, i32 1
  store double %13628, ptr %13629, align 8, !tbaa !14
  %13630 = load ptr, ptr %12, align 8, !tbaa !5
  %13631 = getelementptr inbounds %struct.doublecomplex, ptr %13630, i64 6
  %13632 = getelementptr inbounds %struct.doublecomplex, ptr %13631, i32 0, i32 0
  %13633 = load double, ptr %13632, align 8, !tbaa !11
  %13634 = getelementptr inbounds %struct.doublecomplex, ptr %64, i32 0, i32 0
  store double %13633, ptr %13634, align 8, !tbaa !11
  %13635 = load ptr, ptr %12, align 8, !tbaa !5
  %13636 = getelementptr inbounds %struct.doublecomplex, ptr %13635, i64 6
  %13637 = getelementptr inbounds %struct.doublecomplex, ptr %13636, i32 0, i32 1
  %13638 = load double, ptr %13637, align 8, !tbaa !14
  %13639 = getelementptr inbounds %struct.doublecomplex, ptr %64, i32 0, i32 1
  store double %13638, ptr %13639, align 8, !tbaa !14
  %13640 = call { double, double } @Cd(ptr noundef %64)
  %13641 = extractvalue { double, double } %13640, 0
  %13642 = extractvalue { double, double } %13640, 1
  %13643 = fneg double %13642
  %13644 = call ptr @_pCd(ptr noundef %31)
  %13645 = getelementptr inbounds { double, double }, ptr %13644, i32 0, i32 0
  %13646 = getelementptr inbounds { double, double }, ptr %13644, i32 0, i32 1
  store double %13641, ptr %13645, align 8
  store double %13643, ptr %13646, align 8
  %13647 = load ptr, ptr %13, align 8, !tbaa !5
  %13648 = getelementptr inbounds %struct.doublecomplex, ptr %13647, i32 0, i32 0
  %13649 = load double, ptr %13648, align 8, !tbaa !11
  %13650 = getelementptr inbounds %struct.doublecomplex, ptr %31, i32 0, i32 0
  %13651 = load double, ptr %13650, align 8, !tbaa !11
  %13652 = load ptr, ptr %13, align 8, !tbaa !5
  %13653 = getelementptr inbounds %struct.doublecomplex, ptr %13652, i32 0, i32 1
  %13654 = load double, ptr %13653, align 8, !tbaa !14
  %13655 = getelementptr inbounds %struct.doublecomplex, ptr %31, i32 0, i32 1
  %13656 = load double, ptr %13655, align 8, !tbaa !14
  %13657 = fmul double %13654, %13656
  %13658 = fneg double %13657
  %13659 = call double @llvm.fmuladd.f64(double %13649, double %13651, double %13658)
  %13660 = getelementptr inbounds %struct.doublecomplex, ptr %30, i32 0, i32 0
  store double %13659, ptr %13660, align 8, !tbaa !11
  %13661 = load ptr, ptr %13, align 8, !tbaa !5
  %13662 = getelementptr inbounds %struct.doublecomplex, ptr %13661, i32 0, i32 0
  %13663 = load double, ptr %13662, align 8, !tbaa !11
  %13664 = getelementptr inbounds %struct.doublecomplex, ptr %31, i32 0, i32 1
  %13665 = load double, ptr %13664, align 8, !tbaa !14
  %13666 = load ptr, ptr %13, align 8, !tbaa !5
  %13667 = getelementptr inbounds %struct.doublecomplex, ptr %13666, i32 0, i32 1
  %13668 = load double, ptr %13667, align 8, !tbaa !14
  %13669 = getelementptr inbounds %struct.doublecomplex, ptr %31, i32 0, i32 0
  %13670 = load double, ptr %13669, align 8, !tbaa !11
  %13671 = fmul double %13668, %13670
  %13672 = call double @llvm.fmuladd.f64(double %13663, double %13665, double %13671)
  %13673 = getelementptr inbounds %struct.doublecomplex, ptr %30, i32 0, i32 1
  store double %13672, ptr %13673, align 8, !tbaa !14
  %13674 = getelementptr inbounds %struct.doublecomplex, ptr %30, i32 0, i32 0
  %13675 = load double, ptr %13674, align 8, !tbaa !11
  %13676 = getelementptr inbounds %struct.doublecomplex, ptr %55, i32 0, i32 0
  store double %13675, ptr %13676, align 8, !tbaa !11
  %13677 = getelementptr inbounds %struct.doublecomplex, ptr %30, i32 0, i32 1
  %13678 = load double, ptr %13677, align 8, !tbaa !14
  %13679 = getelementptr inbounds %struct.doublecomplex, ptr %55, i32 0, i32 1
  store double %13678, ptr %13679, align 8, !tbaa !14
  %13680 = load ptr, ptr %12, align 8, !tbaa !5
  %13681 = getelementptr inbounds %struct.doublecomplex, ptr %13680, i64 7
  %13682 = getelementptr inbounds %struct.doublecomplex, ptr %13681, i32 0, i32 0
  %13683 = load double, ptr %13682, align 8, !tbaa !11
  %13684 = getelementptr inbounds %struct.doublecomplex, ptr %65, i32 0, i32 0
  store double %13683, ptr %13684, align 8, !tbaa !11
  %13685 = load ptr, ptr %12, align 8, !tbaa !5
  %13686 = getelementptr inbounds %struct.doublecomplex, ptr %13685, i64 7
  %13687 = getelementptr inbounds %struct.doublecomplex, ptr %13686, i32 0, i32 1
  %13688 = load double, ptr %13687, align 8, !tbaa !14
  %13689 = getelementptr inbounds %struct.doublecomplex, ptr %65, i32 0, i32 1
  store double %13688, ptr %13689, align 8, !tbaa !14
  %13690 = call { double, double } @Cd(ptr noundef %65)
  %13691 = extractvalue { double, double } %13690, 0
  %13692 = extractvalue { double, double } %13690, 1
  %13693 = fneg double %13692
  %13694 = call ptr @_pCd(ptr noundef %31)
  %13695 = getelementptr inbounds { double, double }, ptr %13694, i32 0, i32 0
  %13696 = getelementptr inbounds { double, double }, ptr %13694, i32 0, i32 1
  store double %13691, ptr %13695, align 8
  store double %13693, ptr %13696, align 8
  %13697 = load ptr, ptr %13, align 8, !tbaa !5
  %13698 = getelementptr inbounds %struct.doublecomplex, ptr %13697, i32 0, i32 0
  %13699 = load double, ptr %13698, align 8, !tbaa !11
  %13700 = getelementptr inbounds %struct.doublecomplex, ptr %31, i32 0, i32 0
  %13701 = load double, ptr %13700, align 8, !tbaa !11
  %13702 = load ptr, ptr %13, align 8, !tbaa !5
  %13703 = getelementptr inbounds %struct.doublecomplex, ptr %13702, i32 0, i32 1
  %13704 = load double, ptr %13703, align 8, !tbaa !14
  %13705 = getelementptr inbounds %struct.doublecomplex, ptr %31, i32 0, i32 1
  %13706 = load double, ptr %13705, align 8, !tbaa !14
  %13707 = fmul double %13704, %13706
  %13708 = fneg double %13707
  %13709 = call double @llvm.fmuladd.f64(double %13699, double %13701, double %13708)
  %13710 = getelementptr inbounds %struct.doublecomplex, ptr %30, i32 0, i32 0
  store double %13709, ptr %13710, align 8, !tbaa !11
  %13711 = load ptr, ptr %13, align 8, !tbaa !5
  %13712 = getelementptr inbounds %struct.doublecomplex, ptr %13711, i32 0, i32 0
  %13713 = load double, ptr %13712, align 8, !tbaa !11
  %13714 = getelementptr inbounds %struct.doublecomplex, ptr %31, i32 0, i32 1
  %13715 = load double, ptr %13714, align 8, !tbaa !14
  %13716 = load ptr, ptr %13, align 8, !tbaa !5
  %13717 = getelementptr inbounds %struct.doublecomplex, ptr %13716, i32 0, i32 1
  %13718 = load double, ptr %13717, align 8, !tbaa !14
  %13719 = getelementptr inbounds %struct.doublecomplex, ptr %31, i32 0, i32 0
  %13720 = load double, ptr %13719, align 8, !tbaa !11
  %13721 = fmul double %13718, %13720
  %13722 = call double @llvm.fmuladd.f64(double %13713, double %13715, double %13721)
  %13723 = getelementptr inbounds %struct.doublecomplex, ptr %30, i32 0, i32 1
  store double %13722, ptr %13723, align 8, !tbaa !14
  %13724 = getelementptr inbounds %struct.doublecomplex, ptr %30, i32 0, i32 0
  %13725 = load double, ptr %13724, align 8, !tbaa !11
  %13726 = getelementptr inbounds %struct.doublecomplex, ptr %56, i32 0, i32 0
  store double %13725, ptr %13726, align 8, !tbaa !11
  %13727 = getelementptr inbounds %struct.doublecomplex, ptr %30, i32 0, i32 1
  %13728 = load double, ptr %13727, align 8, !tbaa !14
  %13729 = getelementptr inbounds %struct.doublecomplex, ptr %56, i32 0, i32 1
  store double %13728, ptr %13729, align 8, !tbaa !14
  %13730 = load ptr, ptr %10, align 8, !tbaa !5
  %13731 = load i32, ptr %13730, align 4, !tbaa !9
  store i32 %13731, ptr %19, align 4, !tbaa !9
  store i32 1, ptr %49, align 4, !tbaa !9
  br label %13732

13732:                                            ; preds = %14568, %13379
  %13733 = load i32, ptr %49, align 4, !tbaa !9
  %13734 = load i32, ptr %19, align 4, !tbaa !9
  %13735 = icmp sle i32 %13733, %13734
  br i1 %13735, label %13736, label %14571

13736:                                            ; preds = %13732
  %13737 = load i32, ptr %49, align 4, !tbaa !9
  %13738 = load i32, ptr %17, align 4, !tbaa !9
  %13739 = add nsw i32 %13737, %13738
  store i32 %13739, ptr %20, align 4, !tbaa !9
  %13740 = getelementptr inbounds %struct.doublecomplex, ptr %59, i32 0, i32 0
  %13741 = load double, ptr %13740, align 8, !tbaa !11
  %13742 = load ptr, ptr %14, align 8, !tbaa !5
  %13743 = load i32, ptr %20, align 4, !tbaa !9
  %13744 = sext i32 %13743 to i64
  %13745 = getelementptr inbounds %struct.doublecomplex, ptr %13742, i64 %13744
  %13746 = getelementptr inbounds %struct.doublecomplex, ptr %13745, i32 0, i32 0
  %13747 = load double, ptr %13746, align 8, !tbaa !11
  %13748 = getelementptr inbounds %struct.doublecomplex, ptr %59, i32 0, i32 1
  %13749 = load double, ptr %13748, align 8, !tbaa !14
  %13750 = load ptr, ptr %14, align 8, !tbaa !5
  %13751 = load i32, ptr %20, align 4, !tbaa !9
  %13752 = sext i32 %13751 to i64
  %13753 = getelementptr inbounds %struct.doublecomplex, ptr %13750, i64 %13752
  %13754 = getelementptr inbounds %struct.doublecomplex, ptr %13753, i32 0, i32 1
  %13755 = load double, ptr %13754, align 8, !tbaa !14
  %13756 = fmul double %13749, %13755
  %13757 = fneg double %13756
  %13758 = call double @llvm.fmuladd.f64(double %13741, double %13747, double %13757)
  %13759 = getelementptr inbounds %struct.doublecomplex, ptr %36, i32 0, i32 0
  store double %13758, ptr %13759, align 8, !tbaa !11
  %13760 = getelementptr inbounds %struct.doublecomplex, ptr %59, i32 0, i32 0
  %13761 = load double, ptr %13760, align 8, !tbaa !11
  %13762 = load ptr, ptr %14, align 8, !tbaa !5
  %13763 = load i32, ptr %20, align 4, !tbaa !9
  %13764 = sext i32 %13763 to i64
  %13765 = getelementptr inbounds %struct.doublecomplex, ptr %13762, i64 %13764
  %13766 = getelementptr inbounds %struct.doublecomplex, ptr %13765, i32 0, i32 1
  %13767 = load double, ptr %13766, align 8, !tbaa !14
  %13768 = getelementptr inbounds %struct.doublecomplex, ptr %59, i32 0, i32 1
  %13769 = load double, ptr %13768, align 8, !tbaa !14
  %13770 = load ptr, ptr %14, align 8, !tbaa !5
  %13771 = load i32, ptr %20, align 4, !tbaa !9
  %13772 = sext i32 %13771 to i64
  %13773 = getelementptr inbounds %struct.doublecomplex, ptr %13770, i64 %13772
  %13774 = getelementptr inbounds %struct.doublecomplex, ptr %13773, i32 0, i32 0
  %13775 = load double, ptr %13774, align 8, !tbaa !11
  %13776 = fmul double %13769, %13775
  %13777 = call double @llvm.fmuladd.f64(double %13761, double %13767, double %13776)
  %13778 = getelementptr inbounds %struct.doublecomplex, ptr %36, i32 0, i32 1
  store double %13777, ptr %13778, align 8, !tbaa !14
  %13779 = load i32, ptr %49, align 4, !tbaa !9
  %13780 = load i32, ptr %17, align 4, !tbaa !9
  %13781 = shl i32 %13780, 1
  %13782 = add nsw i32 %13779, %13781
  store i32 %13782, ptr %21, align 4, !tbaa !9
  %13783 = getelementptr inbounds %struct.doublecomplex, ptr %60, i32 0, i32 0
  %13784 = load double, ptr %13783, align 8, !tbaa !11
  %13785 = load ptr, ptr %14, align 8, !tbaa !5
  %13786 = load i32, ptr %21, align 4, !tbaa !9
  %13787 = sext i32 %13786 to i64
  %13788 = getelementptr inbounds %struct.doublecomplex, ptr %13785, i64 %13787
  %13789 = getelementptr inbounds %struct.doublecomplex, ptr %13788, i32 0, i32 0
  %13790 = load double, ptr %13789, align 8, !tbaa !11
  %13791 = getelementptr inbounds %struct.doublecomplex, ptr %60, i32 0, i32 1
  %13792 = load double, ptr %13791, align 8, !tbaa !14
  %13793 = load ptr, ptr %14, align 8, !tbaa !5
  %13794 = load i32, ptr %21, align 4, !tbaa !9
  %13795 = sext i32 %13794 to i64
  %13796 = getelementptr inbounds %struct.doublecomplex, ptr %13793, i64 %13795
  %13797 = getelementptr inbounds %struct.doublecomplex, ptr %13796, i32 0, i32 1
  %13798 = load double, ptr %13797, align 8, !tbaa !14
  %13799 = fmul double %13792, %13798
  %13800 = fneg double %13799
  %13801 = call double @llvm.fmuladd.f64(double %13784, double %13790, double %13800)
  %13802 = getelementptr inbounds %struct.doublecomplex, ptr %37, i32 0, i32 0
  store double %13801, ptr %13802, align 8, !tbaa !11
  %13803 = getelementptr inbounds %struct.doublecomplex, ptr %60, i32 0, i32 0
  %13804 = load double, ptr %13803, align 8, !tbaa !11
  %13805 = load ptr, ptr %14, align 8, !tbaa !5
  %13806 = load i32, ptr %21, align 4, !tbaa !9
  %13807 = sext i32 %13806 to i64
  %13808 = getelementptr inbounds %struct.doublecomplex, ptr %13805, i64 %13807
  %13809 = getelementptr inbounds %struct.doublecomplex, ptr %13808, i32 0, i32 1
  %13810 = load double, ptr %13809, align 8, !tbaa !14
  %13811 = getelementptr inbounds %struct.doublecomplex, ptr %60, i32 0, i32 1
  %13812 = load double, ptr %13811, align 8, !tbaa !14
  %13813 = load ptr, ptr %14, align 8, !tbaa !5
  %13814 = load i32, ptr %21, align 4, !tbaa !9
  %13815 = sext i32 %13814 to i64
  %13816 = getelementptr inbounds %struct.doublecomplex, ptr %13813, i64 %13815
  %13817 = getelementptr inbounds %struct.doublecomplex, ptr %13816, i32 0, i32 0
  %13818 = load double, ptr %13817, align 8, !tbaa !11
  %13819 = fmul double %13812, %13818
  %13820 = call double @llvm.fmuladd.f64(double %13804, double %13810, double %13819)
  %13821 = getelementptr inbounds %struct.doublecomplex, ptr %37, i32 0, i32 1
  store double %13820, ptr %13821, align 8, !tbaa !14
  %13822 = getelementptr inbounds %struct.doublecomplex, ptr %36, i32 0, i32 0
  %13823 = load double, ptr %13822, align 8, !tbaa !11
  %13824 = getelementptr inbounds %struct.doublecomplex, ptr %37, i32 0, i32 0
  %13825 = load double, ptr %13824, align 8, !tbaa !11
  %13826 = fadd double %13823, %13825
  %13827 = getelementptr inbounds %struct.doublecomplex, ptr %35, i32 0, i32 0
  store double %13826, ptr %13827, align 8, !tbaa !11
  %13828 = getelementptr inbounds %struct.doublecomplex, ptr %36, i32 0, i32 1
  %13829 = load double, ptr %13828, align 8, !tbaa !14
  %13830 = getelementptr inbounds %struct.doublecomplex, ptr %37, i32 0, i32 1
  %13831 = load double, ptr %13830, align 8, !tbaa !14
  %13832 = fadd double %13829, %13831
  %13833 = getelementptr inbounds %struct.doublecomplex, ptr %35, i32 0, i32 1
  store double %13832, ptr %13833, align 8, !tbaa !14
  %13834 = load i32, ptr %49, align 4, !tbaa !9
  %13835 = load i32, ptr %17, align 4, !tbaa !9
  %13836 = mul nsw i32 %13835, 3
  %13837 = add nsw i32 %13834, %13836
  store i32 %13837, ptr %22, align 4, !tbaa !9
  %13838 = getelementptr inbounds %struct.doublecomplex, ptr %61, i32 0, i32 0
  %13839 = load double, ptr %13838, align 8, !tbaa !11
  %13840 = load ptr, ptr %14, align 8, !tbaa !5
  %13841 = load i32, ptr %22, align 4, !tbaa !9
  %13842 = sext i32 %13841 to i64
  %13843 = getelementptr inbounds %struct.doublecomplex, ptr %13840, i64 %13842
  %13844 = getelementptr inbounds %struct.doublecomplex, ptr %13843, i32 0, i32 0
  %13845 = load double, ptr %13844, align 8, !tbaa !11
  %13846 = getelementptr inbounds %struct.doublecomplex, ptr %61, i32 0, i32 1
  %13847 = load double, ptr %13846, align 8, !tbaa !14
  %13848 = load ptr, ptr %14, align 8, !tbaa !5
  %13849 = load i32, ptr %22, align 4, !tbaa !9
  %13850 = sext i32 %13849 to i64
  %13851 = getelementptr inbounds %struct.doublecomplex, ptr %13848, i64 %13850
  %13852 = getelementptr inbounds %struct.doublecomplex, ptr %13851, i32 0, i32 1
  %13853 = load double, ptr %13852, align 8, !tbaa !14
  %13854 = fmul double %13847, %13853
  %13855 = fneg double %13854
  %13856 = call double @llvm.fmuladd.f64(double %13839, double %13845, double %13855)
  %13857 = getelementptr inbounds %struct.doublecomplex, ptr %38, i32 0, i32 0
  store double %13856, ptr %13857, align 8, !tbaa !11
  %13858 = getelementptr inbounds %struct.doublecomplex, ptr %61, i32 0, i32 0
  %13859 = load double, ptr %13858, align 8, !tbaa !11
  %13860 = load ptr, ptr %14, align 8, !tbaa !5
  %13861 = load i32, ptr %22, align 4, !tbaa !9
  %13862 = sext i32 %13861 to i64
  %13863 = getelementptr inbounds %struct.doublecomplex, ptr %13860, i64 %13862
  %13864 = getelementptr inbounds %struct.doublecomplex, ptr %13863, i32 0, i32 1
  %13865 = load double, ptr %13864, align 8, !tbaa !14
  %13866 = getelementptr inbounds %struct.doublecomplex, ptr %61, i32 0, i32 1
  %13867 = load double, ptr %13866, align 8, !tbaa !14
  %13868 = load ptr, ptr %14, align 8, !tbaa !5
  %13869 = load i32, ptr %22, align 4, !tbaa !9
  %13870 = sext i32 %13869 to i64
  %13871 = getelementptr inbounds %struct.doublecomplex, ptr %13868, i64 %13870
  %13872 = getelementptr inbounds %struct.doublecomplex, ptr %13871, i32 0, i32 0
  %13873 = load double, ptr %13872, align 8, !tbaa !11
  %13874 = fmul double %13867, %13873
  %13875 = call double @llvm.fmuladd.f64(double %13859, double %13865, double %13874)
  %13876 = getelementptr inbounds %struct.doublecomplex, ptr %38, i32 0, i32 1
  store double %13875, ptr %13876, align 8, !tbaa !14
  %13877 = getelementptr inbounds %struct.doublecomplex, ptr %35, i32 0, i32 0
  %13878 = load double, ptr %13877, align 8, !tbaa !11
  %13879 = getelementptr inbounds %struct.doublecomplex, ptr %38, i32 0, i32 0
  %13880 = load double, ptr %13879, align 8, !tbaa !11
  %13881 = fadd double %13878, %13880
  %13882 = getelementptr inbounds %struct.doublecomplex, ptr %34, i32 0, i32 0
  store double %13881, ptr %13882, align 8, !tbaa !11
  %13883 = getelementptr inbounds %struct.doublecomplex, ptr %35, i32 0, i32 1
  %13884 = load double, ptr %13883, align 8, !tbaa !14
  %13885 = getelementptr inbounds %struct.doublecomplex, ptr %38, i32 0, i32 1
  %13886 = load double, ptr %13885, align 8, !tbaa !14
  %13887 = fadd double %13884, %13886
  %13888 = getelementptr inbounds %struct.doublecomplex, ptr %34, i32 0, i32 1
  store double %13887, ptr %13888, align 8, !tbaa !14
  %13889 = load i32, ptr %49, align 4, !tbaa !9
  %13890 = load i32, ptr %17, align 4, !tbaa !9
  %13891 = shl i32 %13890, 2
  %13892 = add nsw i32 %13889, %13891
  store i32 %13892, ptr %23, align 4, !tbaa !9
  %13893 = getelementptr inbounds %struct.doublecomplex, ptr %62, i32 0, i32 0
  %13894 = load double, ptr %13893, align 8, !tbaa !11
  %13895 = load ptr, ptr %14, align 8, !tbaa !5
  %13896 = load i32, ptr %23, align 4, !tbaa !9
  %13897 = sext i32 %13896 to i64
  %13898 = getelementptr inbounds %struct.doublecomplex, ptr %13895, i64 %13897
  %13899 = getelementptr inbounds %struct.doublecomplex, ptr %13898, i32 0, i32 0
  %13900 = load double, ptr %13899, align 8, !tbaa !11
  %13901 = getelementptr inbounds %struct.doublecomplex, ptr %62, i32 0, i32 1
  %13902 = load double, ptr %13901, align 8, !tbaa !14
  %13903 = load ptr, ptr %14, align 8, !tbaa !5
  %13904 = load i32, ptr %23, align 4, !tbaa !9
  %13905 = sext i32 %13904 to i64
  %13906 = getelementptr inbounds %struct.doublecomplex, ptr %13903, i64 %13905
  %13907 = getelementptr inbounds %struct.doublecomplex, ptr %13906, i32 0, i32 1
  %13908 = load double, ptr %13907, align 8, !tbaa !14
  %13909 = fmul double %13902, %13908
  %13910 = fneg double %13909
  %13911 = call double @llvm.fmuladd.f64(double %13894, double %13900, double %13910)
  %13912 = getelementptr inbounds %struct.doublecomplex, ptr %39, i32 0, i32 0
  store double %13911, ptr %13912, align 8, !tbaa !11
  %13913 = getelementptr inbounds %struct.doublecomplex, ptr %62, i32 0, i32 0
  %13914 = load double, ptr %13913, align 8, !tbaa !11
  %13915 = load ptr, ptr %14, align 8, !tbaa !5
  %13916 = load i32, ptr %23, align 4, !tbaa !9
  %13917 = sext i32 %13916 to i64
  %13918 = getelementptr inbounds %struct.doublecomplex, ptr %13915, i64 %13917
  %13919 = getelementptr inbounds %struct.doublecomplex, ptr %13918, i32 0, i32 1
  %13920 = load double, ptr %13919, align 8, !tbaa !14
  %13921 = getelementptr inbounds %struct.doublecomplex, ptr %62, i32 0, i32 1
  %13922 = load double, ptr %13921, align 8, !tbaa !14
  %13923 = load ptr, ptr %14, align 8, !tbaa !5
  %13924 = load i32, ptr %23, align 4, !tbaa !9
  %13925 = sext i32 %13924 to i64
  %13926 = getelementptr inbounds %struct.doublecomplex, ptr %13923, i64 %13925
  %13927 = getelementptr inbounds %struct.doublecomplex, ptr %13926, i32 0, i32 0
  %13928 = load double, ptr %13927, align 8, !tbaa !11
  %13929 = fmul double %13922, %13928
  %13930 = call double @llvm.fmuladd.f64(double %13914, double %13920, double %13929)
  %13931 = getelementptr inbounds %struct.doublecomplex, ptr %39, i32 0, i32 1
  store double %13930, ptr %13931, align 8, !tbaa !14
  %13932 = getelementptr inbounds %struct.doublecomplex, ptr %34, i32 0, i32 0
  %13933 = load double, ptr %13932, align 8, !tbaa !11
  %13934 = getelementptr inbounds %struct.doublecomplex, ptr %39, i32 0, i32 0
  %13935 = load double, ptr %13934, align 8, !tbaa !11
  %13936 = fadd double %13933, %13935
  %13937 = getelementptr inbounds %struct.doublecomplex, ptr %33, i32 0, i32 0
  store double %13936, ptr %13937, align 8, !tbaa !11
  %13938 = getelementptr inbounds %struct.doublecomplex, ptr %34, i32 0, i32 1
  %13939 = load double, ptr %13938, align 8, !tbaa !14
  %13940 = getelementptr inbounds %struct.doublecomplex, ptr %39, i32 0, i32 1
  %13941 = load double, ptr %13940, align 8, !tbaa !14
  %13942 = fadd double %13939, %13941
  %13943 = getelementptr inbounds %struct.doublecomplex, ptr %33, i32 0, i32 1
  store double %13942, ptr %13943, align 8, !tbaa !14
  %13944 = load i32, ptr %49, align 4, !tbaa !9
  %13945 = load i32, ptr %17, align 4, !tbaa !9
  %13946 = mul nsw i32 %13945, 5
  %13947 = add nsw i32 %13944, %13946
  store i32 %13947, ptr %24, align 4, !tbaa !9
  %13948 = getelementptr inbounds %struct.doublecomplex, ptr %63, i32 0, i32 0
  %13949 = load double, ptr %13948, align 8, !tbaa !11
  %13950 = load ptr, ptr %14, align 8, !tbaa !5
  %13951 = load i32, ptr %24, align 4, !tbaa !9
  %13952 = sext i32 %13951 to i64
  %13953 = getelementptr inbounds %struct.doublecomplex, ptr %13950, i64 %13952
  %13954 = getelementptr inbounds %struct.doublecomplex, ptr %13953, i32 0, i32 0
  %13955 = load double, ptr %13954, align 8, !tbaa !11
  %13956 = getelementptr inbounds %struct.doublecomplex, ptr %63, i32 0, i32 1
  %13957 = load double, ptr %13956, align 8, !tbaa !14
  %13958 = load ptr, ptr %14, align 8, !tbaa !5
  %13959 = load i32, ptr %24, align 4, !tbaa !9
  %13960 = sext i32 %13959 to i64
  %13961 = getelementptr inbounds %struct.doublecomplex, ptr %13958, i64 %13960
  %13962 = getelementptr inbounds %struct.doublecomplex, ptr %13961, i32 0, i32 1
  %13963 = load double, ptr %13962, align 8, !tbaa !14
  %13964 = fmul double %13957, %13963
  %13965 = fneg double %13964
  %13966 = call double @llvm.fmuladd.f64(double %13949, double %13955, double %13965)
  %13967 = getelementptr inbounds %struct.doublecomplex, ptr %40, i32 0, i32 0
  store double %13966, ptr %13967, align 8, !tbaa !11
  %13968 = getelementptr inbounds %struct.doublecomplex, ptr %63, i32 0, i32 0
  %13969 = load double, ptr %13968, align 8, !tbaa !11
  %13970 = load ptr, ptr %14, align 8, !tbaa !5
  %13971 = load i32, ptr %24, align 4, !tbaa !9
  %13972 = sext i32 %13971 to i64
  %13973 = getelementptr inbounds %struct.doublecomplex, ptr %13970, i64 %13972
  %13974 = getelementptr inbounds %struct.doublecomplex, ptr %13973, i32 0, i32 1
  %13975 = load double, ptr %13974, align 8, !tbaa !14
  %13976 = getelementptr inbounds %struct.doublecomplex, ptr %63, i32 0, i32 1
  %13977 = load double, ptr %13976, align 8, !tbaa !14
  %13978 = load ptr, ptr %14, align 8, !tbaa !5
  %13979 = load i32, ptr %24, align 4, !tbaa !9
  %13980 = sext i32 %13979 to i64
  %13981 = getelementptr inbounds %struct.doublecomplex, ptr %13978, i64 %13980
  %13982 = getelementptr inbounds %struct.doublecomplex, ptr %13981, i32 0, i32 0
  %13983 = load double, ptr %13982, align 8, !tbaa !11
  %13984 = fmul double %13977, %13983
  %13985 = call double @llvm.fmuladd.f64(double %13969, double %13975, double %13984)
  %13986 = getelementptr inbounds %struct.doublecomplex, ptr %40, i32 0, i32 1
  store double %13985, ptr %13986, align 8, !tbaa !14
  %13987 = getelementptr inbounds %struct.doublecomplex, ptr %33, i32 0, i32 0
  %13988 = load double, ptr %13987, align 8, !tbaa !11
  %13989 = getelementptr inbounds %struct.doublecomplex, ptr %40, i32 0, i32 0
  %13990 = load double, ptr %13989, align 8, !tbaa !11
  %13991 = fadd double %13988, %13990
  %13992 = getelementptr inbounds %struct.doublecomplex, ptr %32, i32 0, i32 0
  store double %13991, ptr %13992, align 8, !tbaa !11
  %13993 = getelementptr inbounds %struct.doublecomplex, ptr %33, i32 0, i32 1
  %13994 = load double, ptr %13993, align 8, !tbaa !14
  %13995 = getelementptr inbounds %struct.doublecomplex, ptr %40, i32 0, i32 1
  %13996 = load double, ptr %13995, align 8, !tbaa !14
  %13997 = fadd double %13994, %13996
  %13998 = getelementptr inbounds %struct.doublecomplex, ptr %32, i32 0, i32 1
  store double %13997, ptr %13998, align 8, !tbaa !14
  %13999 = load i32, ptr %49, align 4, !tbaa !9
  %14000 = load i32, ptr %17, align 4, !tbaa !9
  %14001 = mul nsw i32 %14000, 6
  %14002 = add nsw i32 %13999, %14001
  store i32 %14002, ptr %25, align 4, !tbaa !9
  %14003 = getelementptr inbounds %struct.doublecomplex, ptr %64, i32 0, i32 0
  %14004 = load double, ptr %14003, align 8, !tbaa !11
  %14005 = load ptr, ptr %14, align 8, !tbaa !5
  %14006 = load i32, ptr %25, align 4, !tbaa !9
  %14007 = sext i32 %14006 to i64
  %14008 = getelementptr inbounds %struct.doublecomplex, ptr %14005, i64 %14007
  %14009 = getelementptr inbounds %struct.doublecomplex, ptr %14008, i32 0, i32 0
  %14010 = load double, ptr %14009, align 8, !tbaa !11
  %14011 = getelementptr inbounds %struct.doublecomplex, ptr %64, i32 0, i32 1
  %14012 = load double, ptr %14011, align 8, !tbaa !14
  %14013 = load ptr, ptr %14, align 8, !tbaa !5
  %14014 = load i32, ptr %25, align 4, !tbaa !9
  %14015 = sext i32 %14014 to i64
  %14016 = getelementptr inbounds %struct.doublecomplex, ptr %14013, i64 %14015
  %14017 = getelementptr inbounds %struct.doublecomplex, ptr %14016, i32 0, i32 1
  %14018 = load double, ptr %14017, align 8, !tbaa !14
  %14019 = fmul double %14012, %14018
  %14020 = fneg double %14019
  %14021 = call double @llvm.fmuladd.f64(double %14004, double %14010, double %14020)
  %14022 = getelementptr inbounds %struct.doublecomplex, ptr %41, i32 0, i32 0
  store double %14021, ptr %14022, align 8, !tbaa !11
  %14023 = getelementptr inbounds %struct.doublecomplex, ptr %64, i32 0, i32 0
  %14024 = load double, ptr %14023, align 8, !tbaa !11
  %14025 = load ptr, ptr %14, align 8, !tbaa !5
  %14026 = load i32, ptr %25, align 4, !tbaa !9
  %14027 = sext i32 %14026 to i64
  %14028 = getelementptr inbounds %struct.doublecomplex, ptr %14025, i64 %14027
  %14029 = getelementptr inbounds %struct.doublecomplex, ptr %14028, i32 0, i32 1
  %14030 = load double, ptr %14029, align 8, !tbaa !14
  %14031 = getelementptr inbounds %struct.doublecomplex, ptr %64, i32 0, i32 1
  %14032 = load double, ptr %14031, align 8, !tbaa !14
  %14033 = load ptr, ptr %14, align 8, !tbaa !5
  %14034 = load i32, ptr %25, align 4, !tbaa !9
  %14035 = sext i32 %14034 to i64
  %14036 = getelementptr inbounds %struct.doublecomplex, ptr %14033, i64 %14035
  %14037 = getelementptr inbounds %struct.doublecomplex, ptr %14036, i32 0, i32 0
  %14038 = load double, ptr %14037, align 8, !tbaa !11
  %14039 = fmul double %14032, %14038
  %14040 = call double @llvm.fmuladd.f64(double %14024, double %14030, double %14039)
  %14041 = getelementptr inbounds %struct.doublecomplex, ptr %41, i32 0, i32 1
  store double %14040, ptr %14041, align 8, !tbaa !14
  %14042 = getelementptr inbounds %struct.doublecomplex, ptr %32, i32 0, i32 0
  %14043 = load double, ptr %14042, align 8, !tbaa !11
  %14044 = getelementptr inbounds %struct.doublecomplex, ptr %41, i32 0, i32 0
  %14045 = load double, ptr %14044, align 8, !tbaa !11
  %14046 = fadd double %14043, %14045
  %14047 = getelementptr inbounds %struct.doublecomplex, ptr %31, i32 0, i32 0
  store double %14046, ptr %14047, align 8, !tbaa !11
  %14048 = getelementptr inbounds %struct.doublecomplex, ptr %32, i32 0, i32 1
  %14049 = load double, ptr %14048, align 8, !tbaa !14
  %14050 = getelementptr inbounds %struct.doublecomplex, ptr %41, i32 0, i32 1
  %14051 = load double, ptr %14050, align 8, !tbaa !14
  %14052 = fadd double %14049, %14051
  %14053 = getelementptr inbounds %struct.doublecomplex, ptr %31, i32 0, i32 1
  store double %14052, ptr %14053, align 8, !tbaa !14
  %14054 = load i32, ptr %49, align 4, !tbaa !9
  %14055 = load i32, ptr %17, align 4, !tbaa !9
  %14056 = mul nsw i32 %14055, 7
  %14057 = add nsw i32 %14054, %14056
  store i32 %14057, ptr %26, align 4, !tbaa !9
  %14058 = getelementptr inbounds %struct.doublecomplex, ptr %65, i32 0, i32 0
  %14059 = load double, ptr %14058, align 8, !tbaa !11
  %14060 = load ptr, ptr %14, align 8, !tbaa !5
  %14061 = load i32, ptr %26, align 4, !tbaa !9
  %14062 = sext i32 %14061 to i64
  %14063 = getelementptr inbounds %struct.doublecomplex, ptr %14060, i64 %14062
  %14064 = getelementptr inbounds %struct.doublecomplex, ptr %14063, i32 0, i32 0
  %14065 = load double, ptr %14064, align 8, !tbaa !11
  %14066 = getelementptr inbounds %struct.doublecomplex, ptr %65, i32 0, i32 1
  %14067 = load double, ptr %14066, align 8, !tbaa !14
  %14068 = load ptr, ptr %14, align 8, !tbaa !5
  %14069 = load i32, ptr %26, align 4, !tbaa !9
  %14070 = sext i32 %14069 to i64
  %14071 = getelementptr inbounds %struct.doublecomplex, ptr %14068, i64 %14070
  %14072 = getelementptr inbounds %struct.doublecomplex, ptr %14071, i32 0, i32 1
  %14073 = load double, ptr %14072, align 8, !tbaa !14
  %14074 = fmul double %14067, %14073
  %14075 = fneg double %14074
  %14076 = call double @llvm.fmuladd.f64(double %14059, double %14065, double %14075)
  %14077 = getelementptr inbounds %struct.doublecomplex, ptr %42, i32 0, i32 0
  store double %14076, ptr %14077, align 8, !tbaa !11
  %14078 = getelementptr inbounds %struct.doublecomplex, ptr %65, i32 0, i32 0
  %14079 = load double, ptr %14078, align 8, !tbaa !11
  %14080 = load ptr, ptr %14, align 8, !tbaa !5
  %14081 = load i32, ptr %26, align 4, !tbaa !9
  %14082 = sext i32 %14081 to i64
  %14083 = getelementptr inbounds %struct.doublecomplex, ptr %14080, i64 %14082
  %14084 = getelementptr inbounds %struct.doublecomplex, ptr %14083, i32 0, i32 1
  %14085 = load double, ptr %14084, align 8, !tbaa !14
  %14086 = getelementptr inbounds %struct.doublecomplex, ptr %65, i32 0, i32 1
  %14087 = load double, ptr %14086, align 8, !tbaa !14
  %14088 = load ptr, ptr %14, align 8, !tbaa !5
  %14089 = load i32, ptr %26, align 4, !tbaa !9
  %14090 = sext i32 %14089 to i64
  %14091 = getelementptr inbounds %struct.doublecomplex, ptr %14088, i64 %14090
  %14092 = getelementptr inbounds %struct.doublecomplex, ptr %14091, i32 0, i32 0
  %14093 = load double, ptr %14092, align 8, !tbaa !11
  %14094 = fmul double %14087, %14093
  %14095 = call double @llvm.fmuladd.f64(double %14079, double %14085, double %14094)
  %14096 = getelementptr inbounds %struct.doublecomplex, ptr %42, i32 0, i32 1
  store double %14095, ptr %14096, align 8, !tbaa !14
  %14097 = getelementptr inbounds %struct.doublecomplex, ptr %31, i32 0, i32 0
  %14098 = load double, ptr %14097, align 8, !tbaa !11
  %14099 = getelementptr inbounds %struct.doublecomplex, ptr %42, i32 0, i32 0
  %14100 = load double, ptr %14099, align 8, !tbaa !11
  %14101 = fadd double %14098, %14100
  %14102 = getelementptr inbounds %struct.doublecomplex, ptr %30, i32 0, i32 0
  store double %14101, ptr %14102, align 8, !tbaa !11
  %14103 = getelementptr inbounds %struct.doublecomplex, ptr %31, i32 0, i32 1
  %14104 = load double, ptr %14103, align 8, !tbaa !14
  %14105 = getelementptr inbounds %struct.doublecomplex, ptr %42, i32 0, i32 1
  %14106 = load double, ptr %14105, align 8, !tbaa !14
  %14107 = fadd double %14104, %14106
  %14108 = getelementptr inbounds %struct.doublecomplex, ptr %30, i32 0, i32 1
  store double %14107, ptr %14108, align 8, !tbaa !14
  %14109 = getelementptr inbounds %struct.doublecomplex, ptr %30, i32 0, i32 0
  %14110 = load double, ptr %14109, align 8, !tbaa !11
  %14111 = getelementptr inbounds %struct.doublecomplex, ptr %70, i32 0, i32 0
  store double %14110, ptr %14111, align 8, !tbaa !11
  %14112 = getelementptr inbounds %struct.doublecomplex, ptr %30, i32 0, i32 1
  %14113 = load double, ptr %14112, align 8, !tbaa !14
  %14114 = getelementptr inbounds %struct.doublecomplex, ptr %70, i32 0, i32 1
  store double %14113, ptr %14114, align 8, !tbaa !14
  %14115 = load i32, ptr %49, align 4, !tbaa !9
  %14116 = load i32, ptr %17, align 4, !tbaa !9
  %14117 = add nsw i32 %14115, %14116
  store i32 %14117, ptr %20, align 4, !tbaa !9
  %14118 = load i32, ptr %49, align 4, !tbaa !9
  %14119 = load i32, ptr %17, align 4, !tbaa !9
  %14120 = add nsw i32 %14118, %14119
  store i32 %14120, ptr %21, align 4, !tbaa !9
  %14121 = getelementptr inbounds %struct.doublecomplex, ptr %70, i32 0, i32 0
  %14122 = load double, ptr %14121, align 8, !tbaa !11
  %14123 = getelementptr inbounds %struct.doublecomplex, ptr %50, i32 0, i32 0
  %14124 = load double, ptr %14123, align 8, !tbaa !11
  %14125 = getelementptr inbounds %struct.doublecomplex, ptr %70, i32 0, i32 1
  %14126 = load double, ptr %14125, align 8, !tbaa !14
  %14127 = getelementptr inbounds %struct.doublecomplex, ptr %50, i32 0, i32 1
  %14128 = load double, ptr %14127, align 8, !tbaa !14
  %14129 = fmul double %14126, %14128
  %14130 = fneg double %14129
  %14131 = call double @llvm.fmuladd.f64(double %14122, double %14124, double %14130)
  %14132 = getelementptr inbounds %struct.doublecomplex, ptr %31, i32 0, i32 0
  store double %14131, ptr %14132, align 8, !tbaa !11
  %14133 = getelementptr inbounds %struct.doublecomplex, ptr %70, i32 0, i32 0
  %14134 = load double, ptr %14133, align 8, !tbaa !11
  %14135 = getelementptr inbounds %struct.doublecomplex, ptr %50, i32 0, i32 1
  %14136 = load double, ptr %14135, align 8, !tbaa !14
  %14137 = getelementptr inbounds %struct.doublecomplex, ptr %70, i32 0, i32 1
  %14138 = load double, ptr %14137, align 8, !tbaa !14
  %14139 = getelementptr inbounds %struct.doublecomplex, ptr %50, i32 0, i32 0
  %14140 = load double, ptr %14139, align 8, !tbaa !11
  %14141 = fmul double %14138, %14140
  %14142 = call double @llvm.fmuladd.f64(double %14134, double %14136, double %14141)
  %14143 = getelementptr inbounds %struct.doublecomplex, ptr %31, i32 0, i32 1
  store double %14142, ptr %14143, align 8, !tbaa !14
  %14144 = load ptr, ptr %14, align 8, !tbaa !5
  %14145 = load i32, ptr %21, align 4, !tbaa !9
  %14146 = sext i32 %14145 to i64
  %14147 = getelementptr inbounds %struct.doublecomplex, ptr %14144, i64 %14146
  %14148 = getelementptr inbounds %struct.doublecomplex, ptr %14147, i32 0, i32 0
  %14149 = load double, ptr %14148, align 8, !tbaa !11
  %14150 = getelementptr inbounds %struct.doublecomplex, ptr %31, i32 0, i32 0
  %14151 = load double, ptr %14150, align 8, !tbaa !11
  %14152 = fsub double %14149, %14151
  %14153 = getelementptr inbounds %struct.doublecomplex, ptr %30, i32 0, i32 0
  store double %14152, ptr %14153, align 8, !tbaa !11
  %14154 = load ptr, ptr %14, align 8, !tbaa !5
  %14155 = load i32, ptr %21, align 4, !tbaa !9
  %14156 = sext i32 %14155 to i64
  %14157 = getelementptr inbounds %struct.doublecomplex, ptr %14154, i64 %14156
  %14158 = getelementptr inbounds %struct.doublecomplex, ptr %14157, i32 0, i32 1
  %14159 = load double, ptr %14158, align 8, !tbaa !14
  %14160 = getelementptr inbounds %struct.doublecomplex, ptr %31, i32 0, i32 1
  %14161 = load double, ptr %14160, align 8, !tbaa !14
  %14162 = fsub double %14159, %14161
  %14163 = getelementptr inbounds %struct.doublecomplex, ptr %30, i32 0, i32 1
  store double %14162, ptr %14163, align 8, !tbaa !14
  %14164 = getelementptr inbounds %struct.doublecomplex, ptr %30, i32 0, i32 0
  %14165 = load double, ptr %14164, align 8, !tbaa !11
  %14166 = load ptr, ptr %14, align 8, !tbaa !5
  %14167 = load i32, ptr %20, align 4, !tbaa !9
  %14168 = sext i32 %14167 to i64
  %14169 = getelementptr inbounds %struct.doublecomplex, ptr %14166, i64 %14168
  %14170 = getelementptr inbounds %struct.doublecomplex, ptr %14169, i32 0, i32 0
  store double %14165, ptr %14170, align 8, !tbaa !11
  %14171 = getelementptr inbounds %struct.doublecomplex, ptr %30, i32 0, i32 1
  %14172 = load double, ptr %14171, align 8, !tbaa !14
  %14173 = load ptr, ptr %14, align 8, !tbaa !5
  %14174 = load i32, ptr %20, align 4, !tbaa !9
  %14175 = sext i32 %14174 to i64
  %14176 = getelementptr inbounds %struct.doublecomplex, ptr %14173, i64 %14175
  %14177 = getelementptr inbounds %struct.doublecomplex, ptr %14176, i32 0, i32 1
  store double %14172, ptr %14177, align 8, !tbaa !14
  %14178 = load i32, ptr %49, align 4, !tbaa !9
  %14179 = load i32, ptr %17, align 4, !tbaa !9
  %14180 = shl i32 %14179, 1
  %14181 = add nsw i32 %14178, %14180
  store i32 %14181, ptr %20, align 4, !tbaa !9
  %14182 = load i32, ptr %49, align 4, !tbaa !9
  %14183 = load i32, ptr %17, align 4, !tbaa !9
  %14184 = shl i32 %14183, 1
  %14185 = add nsw i32 %14182, %14184
  store i32 %14185, ptr %21, align 4, !tbaa !9
  %14186 = getelementptr inbounds %struct.doublecomplex, ptr %70, i32 0, i32 0
  %14187 = load double, ptr %14186, align 8, !tbaa !11
  %14188 = getelementptr inbounds %struct.doublecomplex, ptr %51, i32 0, i32 0
  %14189 = load double, ptr %14188, align 8, !tbaa !11
  %14190 = getelementptr inbounds %struct.doublecomplex, ptr %70, i32 0, i32 1
  %14191 = load double, ptr %14190, align 8, !tbaa !14
  %14192 = getelementptr inbounds %struct.doublecomplex, ptr %51, i32 0, i32 1
  %14193 = load double, ptr %14192, align 8, !tbaa !14
  %14194 = fmul double %14191, %14193
  %14195 = fneg double %14194
  %14196 = call double @llvm.fmuladd.f64(double %14187, double %14189, double %14195)
  %14197 = getelementptr inbounds %struct.doublecomplex, ptr %31, i32 0, i32 0
  store double %14196, ptr %14197, align 8, !tbaa !11
  %14198 = getelementptr inbounds %struct.doublecomplex, ptr %70, i32 0, i32 0
  %14199 = load double, ptr %14198, align 8, !tbaa !11
  %14200 = getelementptr inbounds %struct.doublecomplex, ptr %51, i32 0, i32 1
  %14201 = load double, ptr %14200, align 8, !tbaa !14
  %14202 = getelementptr inbounds %struct.doublecomplex, ptr %70, i32 0, i32 1
  %14203 = load double, ptr %14202, align 8, !tbaa !14
  %14204 = getelementptr inbounds %struct.doublecomplex, ptr %51, i32 0, i32 0
  %14205 = load double, ptr %14204, align 8, !tbaa !11
  %14206 = fmul double %14203, %14205
  %14207 = call double @llvm.fmuladd.f64(double %14199, double %14201, double %14206)
  %14208 = getelementptr inbounds %struct.doublecomplex, ptr %31, i32 0, i32 1
  store double %14207, ptr %14208, align 8, !tbaa !14
  %14209 = load ptr, ptr %14, align 8, !tbaa !5
  %14210 = load i32, ptr %21, align 4, !tbaa !9
  %14211 = sext i32 %14210 to i64
  %14212 = getelementptr inbounds %struct.doublecomplex, ptr %14209, i64 %14211
  %14213 = getelementptr inbounds %struct.doublecomplex, ptr %14212, i32 0, i32 0
  %14214 = load double, ptr %14213, align 8, !tbaa !11
  %14215 = getelementptr inbounds %struct.doublecomplex, ptr %31, i32 0, i32 0
  %14216 = load double, ptr %14215, align 8, !tbaa !11
  %14217 = fsub double %14214, %14216
  %14218 = getelementptr inbounds %struct.doublecomplex, ptr %30, i32 0, i32 0
  store double %14217, ptr %14218, align 8, !tbaa !11
  %14219 = load ptr, ptr %14, align 8, !tbaa !5
  %14220 = load i32, ptr %21, align 4, !tbaa !9
  %14221 = sext i32 %14220 to i64
  %14222 = getelementptr inbounds %struct.doublecomplex, ptr %14219, i64 %14221
  %14223 = getelementptr inbounds %struct.doublecomplex, ptr %14222, i32 0, i32 1
  %14224 = load double, ptr %14223, align 8, !tbaa !14
  %14225 = getelementptr inbounds %struct.doublecomplex, ptr %31, i32 0, i32 1
  %14226 = load double, ptr %14225, align 8, !tbaa !14
  %14227 = fsub double %14224, %14226
  %14228 = getelementptr inbounds %struct.doublecomplex, ptr %30, i32 0, i32 1
  store double %14227, ptr %14228, align 8, !tbaa !14
  %14229 = getelementptr inbounds %struct.doublecomplex, ptr %30, i32 0, i32 0
  %14230 = load double, ptr %14229, align 8, !tbaa !11
  %14231 = load ptr, ptr %14, align 8, !tbaa !5
  %14232 = load i32, ptr %20, align 4, !tbaa !9
  %14233 = sext i32 %14232 to i64
  %14234 = getelementptr inbounds %struct.doublecomplex, ptr %14231, i64 %14233
  %14235 = getelementptr inbounds %struct.doublecomplex, ptr %14234, i32 0, i32 0
  store double %14230, ptr %14235, align 8, !tbaa !11
  %14236 = getelementptr inbounds %struct.doublecomplex, ptr %30, i32 0, i32 1
  %14237 = load double, ptr %14236, align 8, !tbaa !14
  %14238 = load ptr, ptr %14, align 8, !tbaa !5
  %14239 = load i32, ptr %20, align 4, !tbaa !9
  %14240 = sext i32 %14239 to i64
  %14241 = getelementptr inbounds %struct.doublecomplex, ptr %14238, i64 %14240
  %14242 = getelementptr inbounds %struct.doublecomplex, ptr %14241, i32 0, i32 1
  store double %14237, ptr %14242, align 8, !tbaa !14
  %14243 = load i32, ptr %49, align 4, !tbaa !9
  %14244 = load i32, ptr %17, align 4, !tbaa !9
  %14245 = mul nsw i32 %14244, 3
  %14246 = add nsw i32 %14243, %14245
  store i32 %14246, ptr %20, align 4, !tbaa !9
  %14247 = load i32, ptr %49, align 4, !tbaa !9
  %14248 = load i32, ptr %17, align 4, !tbaa !9
  %14249 = mul nsw i32 %14248, 3
  %14250 = add nsw i32 %14247, %14249
  store i32 %14250, ptr %21, align 4, !tbaa !9
  %14251 = getelementptr inbounds %struct.doublecomplex, ptr %70, i32 0, i32 0
  %14252 = load double, ptr %14251, align 8, !tbaa !11
  %14253 = getelementptr inbounds %struct.doublecomplex, ptr %52, i32 0, i32 0
  %14254 = load double, ptr %14253, align 8, !tbaa !11
  %14255 = getelementptr inbounds %struct.doublecomplex, ptr %70, i32 0, i32 1
  %14256 = load double, ptr %14255, align 8, !tbaa !14
  %14257 = getelementptr inbounds %struct.doublecomplex, ptr %52, i32 0, i32 1
  %14258 = load double, ptr %14257, align 8, !tbaa !14
  %14259 = fmul double %14256, %14258
  %14260 = fneg double %14259
  %14261 = call double @llvm.fmuladd.f64(double %14252, double %14254, double %14260)
  %14262 = getelementptr inbounds %struct.doublecomplex, ptr %31, i32 0, i32 0
  store double %14261, ptr %14262, align 8, !tbaa !11
  %14263 = getelementptr inbounds %struct.doublecomplex, ptr %70, i32 0, i32 0
  %14264 = load double, ptr %14263, align 8, !tbaa !11
  %14265 = getelementptr inbounds %struct.doublecomplex, ptr %52, i32 0, i32 1
  %14266 = load double, ptr %14265, align 8, !tbaa !14
  %14267 = getelementptr inbounds %struct.doublecomplex, ptr %70, i32 0, i32 1
  %14268 = load double, ptr %14267, align 8, !tbaa !14
  %14269 = getelementptr inbounds %struct.doublecomplex, ptr %52, i32 0, i32 0
  %14270 = load double, ptr %14269, align 8, !tbaa !11
  %14271 = fmul double %14268, %14270
  %14272 = call double @llvm.fmuladd.f64(double %14264, double %14266, double %14271)
  %14273 = getelementptr inbounds %struct.doublecomplex, ptr %31, i32 0, i32 1
  store double %14272, ptr %14273, align 8, !tbaa !14
  %14274 = load ptr, ptr %14, align 8, !tbaa !5
  %14275 = load i32, ptr %21, align 4, !tbaa !9
  %14276 = sext i32 %14275 to i64
  %14277 = getelementptr inbounds %struct.doublecomplex, ptr %14274, i64 %14276
  %14278 = getelementptr inbounds %struct.doublecomplex, ptr %14277, i32 0, i32 0
  %14279 = load double, ptr %14278, align 8, !tbaa !11
  %14280 = getelementptr inbounds %struct.doublecomplex, ptr %31, i32 0, i32 0
  %14281 = load double, ptr %14280, align 8, !tbaa !11
  %14282 = fsub double %14279, %14281
  %14283 = getelementptr inbounds %struct.doublecomplex, ptr %30, i32 0, i32 0
  store double %14282, ptr %14283, align 8, !tbaa !11
  %14284 = load ptr, ptr %14, align 8, !tbaa !5
  %14285 = load i32, ptr %21, align 4, !tbaa !9
  %14286 = sext i32 %14285 to i64
  %14287 = getelementptr inbounds %struct.doublecomplex, ptr %14284, i64 %14286
  %14288 = getelementptr inbounds %struct.doublecomplex, ptr %14287, i32 0, i32 1
  %14289 = load double, ptr %14288, align 8, !tbaa !14
  %14290 = getelementptr inbounds %struct.doublecomplex, ptr %31, i32 0, i32 1
  %14291 = load double, ptr %14290, align 8, !tbaa !14
  %14292 = fsub double %14289, %14291
  %14293 = getelementptr inbounds %struct.doublecomplex, ptr %30, i32 0, i32 1
  store double %14292, ptr %14293, align 8, !tbaa !14
  %14294 = getelementptr inbounds %struct.doublecomplex, ptr %30, i32 0, i32 0
  %14295 = load double, ptr %14294, align 8, !tbaa !11
  %14296 = load ptr, ptr %14, align 8, !tbaa !5
  %14297 = load i32, ptr %20, align 4, !tbaa !9
  %14298 = sext i32 %14297 to i64
  %14299 = getelementptr inbounds %struct.doublecomplex, ptr %14296, i64 %14298
  %14300 = getelementptr inbounds %struct.doublecomplex, ptr %14299, i32 0, i32 0
  store double %14295, ptr %14300, align 8, !tbaa !11
  %14301 = getelementptr inbounds %struct.doublecomplex, ptr %30, i32 0, i32 1
  %14302 = load double, ptr %14301, align 8, !tbaa !14
  %14303 = load ptr, ptr %14, align 8, !tbaa !5
  %14304 = load i32, ptr %20, align 4, !tbaa !9
  %14305 = sext i32 %14304 to i64
  %14306 = getelementptr inbounds %struct.doublecomplex, ptr %14303, i64 %14305
  %14307 = getelementptr inbounds %struct.doublecomplex, ptr %14306, i32 0, i32 1
  store double %14302, ptr %14307, align 8, !tbaa !14
  %14308 = load i32, ptr %49, align 4, !tbaa !9
  %14309 = load i32, ptr %17, align 4, !tbaa !9
  %14310 = shl i32 %14309, 2
  %14311 = add nsw i32 %14308, %14310
  store i32 %14311, ptr %20, align 4, !tbaa !9
  %14312 = load i32, ptr %49, align 4, !tbaa !9
  %14313 = load i32, ptr %17, align 4, !tbaa !9
  %14314 = shl i32 %14313, 2
  %14315 = add nsw i32 %14312, %14314
  store i32 %14315, ptr %21, align 4, !tbaa !9
  %14316 = getelementptr inbounds %struct.doublecomplex, ptr %70, i32 0, i32 0
  %14317 = load double, ptr %14316, align 8, !tbaa !11
  %14318 = getelementptr inbounds %struct.doublecomplex, ptr %53, i32 0, i32 0
  %14319 = load double, ptr %14318, align 8, !tbaa !11
  %14320 = getelementptr inbounds %struct.doublecomplex, ptr %70, i32 0, i32 1
  %14321 = load double, ptr %14320, align 8, !tbaa !14
  %14322 = getelementptr inbounds %struct.doublecomplex, ptr %53, i32 0, i32 1
  %14323 = load double, ptr %14322, align 8, !tbaa !14
  %14324 = fmul double %14321, %14323
  %14325 = fneg double %14324
  %14326 = call double @llvm.fmuladd.f64(double %14317, double %14319, double %14325)
  %14327 = getelementptr inbounds %struct.doublecomplex, ptr %31, i32 0, i32 0
  store double %14326, ptr %14327, align 8, !tbaa !11
  %14328 = getelementptr inbounds %struct.doublecomplex, ptr %70, i32 0, i32 0
  %14329 = load double, ptr %14328, align 8, !tbaa !11
  %14330 = getelementptr inbounds %struct.doublecomplex, ptr %53, i32 0, i32 1
  %14331 = load double, ptr %14330, align 8, !tbaa !14
  %14332 = getelementptr inbounds %struct.doublecomplex, ptr %70, i32 0, i32 1
  %14333 = load double, ptr %14332, align 8, !tbaa !14
  %14334 = getelementptr inbounds %struct.doublecomplex, ptr %53, i32 0, i32 0
  %14335 = load double, ptr %14334, align 8, !tbaa !11
  %14336 = fmul double %14333, %14335
  %14337 = call double @llvm.fmuladd.f64(double %14329, double %14331, double %14336)
  %14338 = getelementptr inbounds %struct.doublecomplex, ptr %31, i32 0, i32 1
  store double %14337, ptr %14338, align 8, !tbaa !14
  %14339 = load ptr, ptr %14, align 8, !tbaa !5
  %14340 = load i32, ptr %21, align 4, !tbaa !9
  %14341 = sext i32 %14340 to i64
  %14342 = getelementptr inbounds %struct.doublecomplex, ptr %14339, i64 %14341
  %14343 = getelementptr inbounds %struct.doublecomplex, ptr %14342, i32 0, i32 0
  %14344 = load double, ptr %14343, align 8, !tbaa !11
  %14345 = getelementptr inbounds %struct.doublecomplex, ptr %31, i32 0, i32 0
  %14346 = load double, ptr %14345, align 8, !tbaa !11
  %14347 = fsub double %14344, %14346
  %14348 = getelementptr inbounds %struct.doublecomplex, ptr %30, i32 0, i32 0
  store double %14347, ptr %14348, align 8, !tbaa !11
  %14349 = load ptr, ptr %14, align 8, !tbaa !5
  %14350 = load i32, ptr %21, align 4, !tbaa !9
  %14351 = sext i32 %14350 to i64
  %14352 = getelementptr inbounds %struct.doublecomplex, ptr %14349, i64 %14351
  %14353 = getelementptr inbounds %struct.doublecomplex, ptr %14352, i32 0, i32 1
  %14354 = load double, ptr %14353, align 8, !tbaa !14
  %14355 = getelementptr inbounds %struct.doublecomplex, ptr %31, i32 0, i32 1
  %14356 = load double, ptr %14355, align 8, !tbaa !14
  %14357 = fsub double %14354, %14356
  %14358 = getelementptr inbounds %struct.doublecomplex, ptr %30, i32 0, i32 1
  store double %14357, ptr %14358, align 8, !tbaa !14
  %14359 = getelementptr inbounds %struct.doublecomplex, ptr %30, i32 0, i32 0
  %14360 = load double, ptr %14359, align 8, !tbaa !11
  %14361 = load ptr, ptr %14, align 8, !tbaa !5
  %14362 = load i32, ptr %20, align 4, !tbaa !9
  %14363 = sext i32 %14362 to i64
  %14364 = getelementptr inbounds %struct.doublecomplex, ptr %14361, i64 %14363
  %14365 = getelementptr inbounds %struct.doublecomplex, ptr %14364, i32 0, i32 0
  store double %14360, ptr %14365, align 8, !tbaa !11
  %14366 = getelementptr inbounds %struct.doublecomplex, ptr %30, i32 0, i32 1
  %14367 = load double, ptr %14366, align 8, !tbaa !14
  %14368 = load ptr, ptr %14, align 8, !tbaa !5
  %14369 = load i32, ptr %20, align 4, !tbaa !9
  %14370 = sext i32 %14369 to i64
  %14371 = getelementptr inbounds %struct.doublecomplex, ptr %14368, i64 %14370
  %14372 = getelementptr inbounds %struct.doublecomplex, ptr %14371, i32 0, i32 1
  store double %14367, ptr %14372, align 8, !tbaa !14
  %14373 = load i32, ptr %49, align 4, !tbaa !9
  %14374 = load i32, ptr %17, align 4, !tbaa !9
  %14375 = mul nsw i32 %14374, 5
  %14376 = add nsw i32 %14373, %14375
  store i32 %14376, ptr %20, align 4, !tbaa !9
  %14377 = load i32, ptr %49, align 4, !tbaa !9
  %14378 = load i32, ptr %17, align 4, !tbaa !9
  %14379 = mul nsw i32 %14378, 5
  %14380 = add nsw i32 %14377, %14379
  store i32 %14380, ptr %21, align 4, !tbaa !9
  %14381 = getelementptr inbounds %struct.doublecomplex, ptr %70, i32 0, i32 0
  %14382 = load double, ptr %14381, align 8, !tbaa !11
  %14383 = getelementptr inbounds %struct.doublecomplex, ptr %54, i32 0, i32 0
  %14384 = load double, ptr %14383, align 8, !tbaa !11
  %14385 = getelementptr inbounds %struct.doublecomplex, ptr %70, i32 0, i32 1
  %14386 = load double, ptr %14385, align 8, !tbaa !14
  %14387 = getelementptr inbounds %struct.doublecomplex, ptr %54, i32 0, i32 1
  %14388 = load double, ptr %14387, align 8, !tbaa !14
  %14389 = fmul double %14386, %14388
  %14390 = fneg double %14389
  %14391 = call double @llvm.fmuladd.f64(double %14382, double %14384, double %14390)
  %14392 = getelementptr inbounds %struct.doublecomplex, ptr %31, i32 0, i32 0
  store double %14391, ptr %14392, align 8, !tbaa !11
  %14393 = getelementptr inbounds %struct.doublecomplex, ptr %70, i32 0, i32 0
  %14394 = load double, ptr %14393, align 8, !tbaa !11
  %14395 = getelementptr inbounds %struct.doublecomplex, ptr %54, i32 0, i32 1
  %14396 = load double, ptr %14395, align 8, !tbaa !14
  %14397 = getelementptr inbounds %struct.doublecomplex, ptr %70, i32 0, i32 1
  %14398 = load double, ptr %14397, align 8, !tbaa !14
  %14399 = getelementptr inbounds %struct.doublecomplex, ptr %54, i32 0, i32 0
  %14400 = load double, ptr %14399, align 8, !tbaa !11
  %14401 = fmul double %14398, %14400
  %14402 = call double @llvm.fmuladd.f64(double %14394, double %14396, double %14401)
  %14403 = getelementptr inbounds %struct.doublecomplex, ptr %31, i32 0, i32 1
  store double %14402, ptr %14403, align 8, !tbaa !14
  %14404 = load ptr, ptr %14, align 8, !tbaa !5
  %14405 = load i32, ptr %21, align 4, !tbaa !9
  %14406 = sext i32 %14405 to i64
  %14407 = getelementptr inbounds %struct.doublecomplex, ptr %14404, i64 %14406
  %14408 = getelementptr inbounds %struct.doublecomplex, ptr %14407, i32 0, i32 0
  %14409 = load double, ptr %14408, align 8, !tbaa !11
  %14410 = getelementptr inbounds %struct.doublecomplex, ptr %31, i32 0, i32 0
  %14411 = load double, ptr %14410, align 8, !tbaa !11
  %14412 = fsub double %14409, %14411
  %14413 = getelementptr inbounds %struct.doublecomplex, ptr %30, i32 0, i32 0
  store double %14412, ptr %14413, align 8, !tbaa !11
  %14414 = load ptr, ptr %14, align 8, !tbaa !5
  %14415 = load i32, ptr %21, align 4, !tbaa !9
  %14416 = sext i32 %14415 to i64
  %14417 = getelementptr inbounds %struct.doublecomplex, ptr %14414, i64 %14416
  %14418 = getelementptr inbounds %struct.doublecomplex, ptr %14417, i32 0, i32 1
  %14419 = load double, ptr %14418, align 8, !tbaa !14
  %14420 = getelementptr inbounds %struct.doublecomplex, ptr %31, i32 0, i32 1
  %14421 = load double, ptr %14420, align 8, !tbaa !14
  %14422 = fsub double %14419, %14421
  %14423 = getelementptr inbounds %struct.doublecomplex, ptr %30, i32 0, i32 1
  store double %14422, ptr %14423, align 8, !tbaa !14
  %14424 = getelementptr inbounds %struct.doublecomplex, ptr %30, i32 0, i32 0
  %14425 = load double, ptr %14424, align 8, !tbaa !11
  %14426 = load ptr, ptr %14, align 8, !tbaa !5
  %14427 = load i32, ptr %20, align 4, !tbaa !9
  %14428 = sext i32 %14427 to i64
  %14429 = getelementptr inbounds %struct.doublecomplex, ptr %14426, i64 %14428
  %14430 = getelementptr inbounds %struct.doublecomplex, ptr %14429, i32 0, i32 0
  store double %14425, ptr %14430, align 8, !tbaa !11
  %14431 = getelementptr inbounds %struct.doublecomplex, ptr %30, i32 0, i32 1
  %14432 = load double, ptr %14431, align 8, !tbaa !14
  %14433 = load ptr, ptr %14, align 8, !tbaa !5
  %14434 = load i32, ptr %20, align 4, !tbaa !9
  %14435 = sext i32 %14434 to i64
  %14436 = getelementptr inbounds %struct.doublecomplex, ptr %14433, i64 %14435
  %14437 = getelementptr inbounds %struct.doublecomplex, ptr %14436, i32 0, i32 1
  store double %14432, ptr %14437, align 8, !tbaa !14
  %14438 = load i32, ptr %49, align 4, !tbaa !9
  %14439 = load i32, ptr %17, align 4, !tbaa !9
  %14440 = mul nsw i32 %14439, 6
  %14441 = add nsw i32 %14438, %14440
  store i32 %14441, ptr %20, align 4, !tbaa !9
  %14442 = load i32, ptr %49, align 4, !tbaa !9
  %14443 = load i32, ptr %17, align 4, !tbaa !9
  %14444 = mul nsw i32 %14443, 6
  %14445 = add nsw i32 %14442, %14444
  store i32 %14445, ptr %21, align 4, !tbaa !9
  %14446 = getelementptr inbounds %struct.doublecomplex, ptr %70, i32 0, i32 0
  %14447 = load double, ptr %14446, align 8, !tbaa !11
  %14448 = getelementptr inbounds %struct.doublecomplex, ptr %55, i32 0, i32 0
  %14449 = load double, ptr %14448, align 8, !tbaa !11
  %14450 = getelementptr inbounds %struct.doublecomplex, ptr %70, i32 0, i32 1
  %14451 = load double, ptr %14450, align 8, !tbaa !14
  %14452 = getelementptr inbounds %struct.doublecomplex, ptr %55, i32 0, i32 1
  %14453 = load double, ptr %14452, align 8, !tbaa !14
  %14454 = fmul double %14451, %14453
  %14455 = fneg double %14454
  %14456 = call double @llvm.fmuladd.f64(double %14447, double %14449, double %14455)
  %14457 = getelementptr inbounds %struct.doublecomplex, ptr %31, i32 0, i32 0
  store double %14456, ptr %14457, align 8, !tbaa !11
  %14458 = getelementptr inbounds %struct.doublecomplex, ptr %70, i32 0, i32 0
  %14459 = load double, ptr %14458, align 8, !tbaa !11
  %14460 = getelementptr inbounds %struct.doublecomplex, ptr %55, i32 0, i32 1
  %14461 = load double, ptr %14460, align 8, !tbaa !14
  %14462 = getelementptr inbounds %struct.doublecomplex, ptr %70, i32 0, i32 1
  %14463 = load double, ptr %14462, align 8, !tbaa !14
  %14464 = getelementptr inbounds %struct.doublecomplex, ptr %55, i32 0, i32 0
  %14465 = load double, ptr %14464, align 8, !tbaa !11
  %14466 = fmul double %14463, %14465
  %14467 = call double @llvm.fmuladd.f64(double %14459, double %14461, double %14466)
  %14468 = getelementptr inbounds %struct.doublecomplex, ptr %31, i32 0, i32 1
  store double %14467, ptr %14468, align 8, !tbaa !14
  %14469 = load ptr, ptr %14, align 8, !tbaa !5
  %14470 = load i32, ptr %21, align 4, !tbaa !9
  %14471 = sext i32 %14470 to i64
  %14472 = getelementptr inbounds %struct.doublecomplex, ptr %14469, i64 %14471
  %14473 = getelementptr inbounds %struct.doublecomplex, ptr %14472, i32 0, i32 0
  %14474 = load double, ptr %14473, align 8, !tbaa !11
  %14475 = getelementptr inbounds %struct.doublecomplex, ptr %31, i32 0, i32 0
  %14476 = load double, ptr %14475, align 8, !tbaa !11
  %14477 = fsub double %14474, %14476
  %14478 = getelementptr inbounds %struct.doublecomplex, ptr %30, i32 0, i32 0
  store double %14477, ptr %14478, align 8, !tbaa !11
  %14479 = load ptr, ptr %14, align 8, !tbaa !5
  %14480 = load i32, ptr %21, align 4, !tbaa !9
  %14481 = sext i32 %14480 to i64
  %14482 = getelementptr inbounds %struct.doublecomplex, ptr %14479, i64 %14481
  %14483 = getelementptr inbounds %struct.doublecomplex, ptr %14482, i32 0, i32 1
  %14484 = load double, ptr %14483, align 8, !tbaa !14
  %14485 = getelementptr inbounds %struct.doublecomplex, ptr %31, i32 0, i32 1
  %14486 = load double, ptr %14485, align 8, !tbaa !14
  %14487 = fsub double %14484, %14486
  %14488 = getelementptr inbounds %struct.doublecomplex, ptr %30, i32 0, i32 1
  store double %14487, ptr %14488, align 8, !tbaa !14
  %14489 = getelementptr inbounds %struct.doublecomplex, ptr %30, i32 0, i32 0
  %14490 = load double, ptr %14489, align 8, !tbaa !11
  %14491 = load ptr, ptr %14, align 8, !tbaa !5
  %14492 = load i32, ptr %20, align 4, !tbaa !9
  %14493 = sext i32 %14492 to i64
  %14494 = getelementptr inbounds %struct.doublecomplex, ptr %14491, i64 %14493
  %14495 = getelementptr inbounds %struct.doublecomplex, ptr %14494, i32 0, i32 0
  store double %14490, ptr %14495, align 8, !tbaa !11
  %14496 = getelementptr inbounds %struct.doublecomplex, ptr %30, i32 0, i32 1
  %14497 = load double, ptr %14496, align 8, !tbaa !14
  %14498 = load ptr, ptr %14, align 8, !tbaa !5
  %14499 = load i32, ptr %20, align 4, !tbaa !9
  %14500 = sext i32 %14499 to i64
  %14501 = getelementptr inbounds %struct.doublecomplex, ptr %14498, i64 %14500
  %14502 = getelementptr inbounds %struct.doublecomplex, ptr %14501, i32 0, i32 1
  store double %14497, ptr %14502, align 8, !tbaa !14
  %14503 = load i32, ptr %49, align 4, !tbaa !9
  %14504 = load i32, ptr %17, align 4, !tbaa !9
  %14505 = mul nsw i32 %14504, 7
  %14506 = add nsw i32 %14503, %14505
  store i32 %14506, ptr %20, align 4, !tbaa !9
  %14507 = load i32, ptr %49, align 4, !tbaa !9
  %14508 = load i32, ptr %17, align 4, !tbaa !9
  %14509 = mul nsw i32 %14508, 7
  %14510 = add nsw i32 %14507, %14509
  store i32 %14510, ptr %21, align 4, !tbaa !9
  %14511 = getelementptr inbounds %struct.doublecomplex, ptr %70, i32 0, i32 0
  %14512 = load double, ptr %14511, align 8, !tbaa !11
  %14513 = getelementptr inbounds %struct.doublecomplex, ptr %56, i32 0, i32 0
  %14514 = load double, ptr %14513, align 8, !tbaa !11
  %14515 = getelementptr inbounds %struct.doublecomplex, ptr %70, i32 0, i32 1
  %14516 = load double, ptr %14515, align 8, !tbaa !14
  %14517 = getelementptr inbounds %struct.doublecomplex, ptr %56, i32 0, i32 1
  %14518 = load double, ptr %14517, align 8, !tbaa !14
  %14519 = fmul double %14516, %14518
  %14520 = fneg double %14519
  %14521 = call double @llvm.fmuladd.f64(double %14512, double %14514, double %14520)
  %14522 = getelementptr inbounds %struct.doublecomplex, ptr %31, i32 0, i32 0
  store double %14521, ptr %14522, align 8, !tbaa !11
  %14523 = getelementptr inbounds %struct.doublecomplex, ptr %70, i32 0, i32 0
  %14524 = load double, ptr %14523, align 8, !tbaa !11
  %14525 = getelementptr inbounds %struct.doublecomplex, ptr %56, i32 0, i32 1
  %14526 = load double, ptr %14525, align 8, !tbaa !14
  %14527 = getelementptr inbounds %struct.doublecomplex, ptr %70, i32 0, i32 1
  %14528 = load double, ptr %14527, align 8, !tbaa !14
  %14529 = getelementptr inbounds %struct.doublecomplex, ptr %56, i32 0, i32 0
  %14530 = load double, ptr %14529, align 8, !tbaa !11
  %14531 = fmul double %14528, %14530
  %14532 = call double @llvm.fmuladd.f64(double %14524, double %14526, double %14531)
  %14533 = getelementptr inbounds %struct.doublecomplex, ptr %31, i32 0, i32 1
  store double %14532, ptr %14533, align 8, !tbaa !14
  %14534 = load ptr, ptr %14, align 8, !tbaa !5
  %14535 = load i32, ptr %21, align 4, !tbaa !9
  %14536 = sext i32 %14535 to i64
  %14537 = getelementptr inbounds %struct.doublecomplex, ptr %14534, i64 %14536
  %14538 = getelementptr inbounds %struct.doublecomplex, ptr %14537, i32 0, i32 0
  %14539 = load double, ptr %14538, align 8, !tbaa !11
  %14540 = getelementptr inbounds %struct.doublecomplex, ptr %31, i32 0, i32 0
  %14541 = load double, ptr %14540, align 8, !tbaa !11
  %14542 = fsub double %14539, %14541
  %14543 = getelementptr inbounds %struct.doublecomplex, ptr %30, i32 0, i32 0
  store double %14542, ptr %14543, align 8, !tbaa !11
  %14544 = load ptr, ptr %14, align 8, !tbaa !5
  %14545 = load i32, ptr %21, align 4, !tbaa !9
  %14546 = sext i32 %14545 to i64
  %14547 = getelementptr inbounds %struct.doublecomplex, ptr %14544, i64 %14546
  %14548 = getelementptr inbounds %struct.doublecomplex, ptr %14547, i32 0, i32 1
  %14549 = load double, ptr %14548, align 8, !tbaa !14
  %14550 = getelementptr inbounds %struct.doublecomplex, ptr %31, i32 0, i32 1
  %14551 = load double, ptr %14550, align 8, !tbaa !14
  %14552 = fsub double %14549, %14551
  %14553 = getelementptr inbounds %struct.doublecomplex, ptr %30, i32 0, i32 1
  store double %14552, ptr %14553, align 8, !tbaa !14
  %14554 = getelementptr inbounds %struct.doublecomplex, ptr %30, i32 0, i32 0
  %14555 = load double, ptr %14554, align 8, !tbaa !11
  %14556 = load ptr, ptr %14, align 8, !tbaa !5
  %14557 = load i32, ptr %20, align 4, !tbaa !9
  %14558 = sext i32 %14557 to i64
  %14559 = getelementptr inbounds %struct.doublecomplex, ptr %14556, i64 %14558
  %14560 = getelementptr inbounds %struct.doublecomplex, ptr %14559, i32 0, i32 0
  store double %14555, ptr %14560, align 8, !tbaa !11
  %14561 = getelementptr inbounds %struct.doublecomplex, ptr %30, i32 0, i32 1
  %14562 = load double, ptr %14561, align 8, !tbaa !14
  %14563 = load ptr, ptr %14, align 8, !tbaa !5
  %14564 = load i32, ptr %20, align 4, !tbaa !9
  %14565 = sext i32 %14564 to i64
  %14566 = getelementptr inbounds %struct.doublecomplex, ptr %14563, i64 %14565
  %14567 = getelementptr inbounds %struct.doublecomplex, ptr %14566, i32 0, i32 1
  store double %14562, ptr %14567, align 8, !tbaa !14
  br label %14568

14568:                                            ; preds = %13736
  %14569 = load i32, ptr %49, align 4, !tbaa !9
  %14570 = add nsw i32 %14569, 1
  store i32 %14570, ptr %49, align 4, !tbaa !9
  br label %13732, !llvm.loop !32

14571:                                            ; preds = %13732
  br label %19171

14572:                                            ; preds = %9795
  %14573 = load ptr, ptr %12, align 8, !tbaa !5
  %14574 = getelementptr inbounds %struct.doublecomplex, ptr %14573, i64 1
  %14575 = getelementptr inbounds %struct.doublecomplex, ptr %14574, i32 0, i32 0
  %14576 = load double, ptr %14575, align 8, !tbaa !11
  %14577 = getelementptr inbounds %struct.doublecomplex, ptr %59, i32 0, i32 0
  store double %14576, ptr %14577, align 8, !tbaa !11
  %14578 = load ptr, ptr %12, align 8, !tbaa !5
  %14579 = getelementptr inbounds %struct.doublecomplex, ptr %14578, i64 1
  %14580 = getelementptr inbounds %struct.doublecomplex, ptr %14579, i32 0, i32 1
  %14581 = load double, ptr %14580, align 8, !tbaa !14
  %14582 = getelementptr inbounds %struct.doublecomplex, ptr %59, i32 0, i32 1
  store double %14581, ptr %14582, align 8, !tbaa !14
  %14583 = call { double, double } @Cd(ptr noundef %59)
  %14584 = extractvalue { double, double } %14583, 0
  %14585 = extractvalue { double, double } %14583, 1
  %14586 = fneg double %14585
  %14587 = call ptr @_pCd(ptr noundef %31)
  %14588 = getelementptr inbounds { double, double }, ptr %14587, i32 0, i32 0
  %14589 = getelementptr inbounds { double, double }, ptr %14587, i32 0, i32 1
  store double %14584, ptr %14588, align 8
  store double %14586, ptr %14589, align 8
  %14590 = load ptr, ptr %13, align 8, !tbaa !5
  %14591 = getelementptr inbounds %struct.doublecomplex, ptr %14590, i32 0, i32 0
  %14592 = load double, ptr %14591, align 8, !tbaa !11
  %14593 = getelementptr inbounds %struct.doublecomplex, ptr %31, i32 0, i32 0
  %14594 = load double, ptr %14593, align 8, !tbaa !11
  %14595 = load ptr, ptr %13, align 8, !tbaa !5
  %14596 = getelementptr inbounds %struct.doublecomplex, ptr %14595, i32 0, i32 1
  %14597 = load double, ptr %14596, align 8, !tbaa !14
  %14598 = getelementptr inbounds %struct.doublecomplex, ptr %31, i32 0, i32 1
  %14599 = load double, ptr %14598, align 8, !tbaa !14
  %14600 = fmul double %14597, %14599
  %14601 = fneg double %14600
  %14602 = call double @llvm.fmuladd.f64(double %14592, double %14594, double %14601)
  %14603 = getelementptr inbounds %struct.doublecomplex, ptr %30, i32 0, i32 0
  store double %14602, ptr %14603, align 8, !tbaa !11
  %14604 = load ptr, ptr %13, align 8, !tbaa !5
  %14605 = getelementptr inbounds %struct.doublecomplex, ptr %14604, i32 0, i32 0
  %14606 = load double, ptr %14605, align 8, !tbaa !11
  %14607 = getelementptr inbounds %struct.doublecomplex, ptr %31, i32 0, i32 1
  %14608 = load double, ptr %14607, align 8, !tbaa !14
  %14609 = load ptr, ptr %13, align 8, !tbaa !5
  %14610 = getelementptr inbounds %struct.doublecomplex, ptr %14609, i32 0, i32 1
  %14611 = load double, ptr %14610, align 8, !tbaa !14
  %14612 = getelementptr inbounds %struct.doublecomplex, ptr %31, i32 0, i32 0
  %14613 = load double, ptr %14612, align 8, !tbaa !11
  %14614 = fmul double %14611, %14613
  %14615 = call double @llvm.fmuladd.f64(double %14606, double %14608, double %14614)
  %14616 = getelementptr inbounds %struct.doublecomplex, ptr %30, i32 0, i32 1
  store double %14615, ptr %14616, align 8, !tbaa !14
  %14617 = getelementptr inbounds %struct.doublecomplex, ptr %30, i32 0, i32 0
  %14618 = load double, ptr %14617, align 8, !tbaa !11
  %14619 = getelementptr inbounds %struct.doublecomplex, ptr %50, i32 0, i32 0
  store double %14618, ptr %14619, align 8, !tbaa !11
  %14620 = getelementptr inbounds %struct.doublecomplex, ptr %30, i32 0, i32 1
  %14621 = load double, ptr %14620, align 8, !tbaa !14
  %14622 = getelementptr inbounds %struct.doublecomplex, ptr %50, i32 0, i32 1
  store double %14621, ptr %14622, align 8, !tbaa !14
  %14623 = load ptr, ptr %12, align 8, !tbaa !5
  %14624 = getelementptr inbounds %struct.doublecomplex, ptr %14623, i64 2
  %14625 = getelementptr inbounds %struct.doublecomplex, ptr %14624, i32 0, i32 0
  %14626 = load double, ptr %14625, align 8, !tbaa !11
  %14627 = getelementptr inbounds %struct.doublecomplex, ptr %60, i32 0, i32 0
  store double %14626, ptr %14627, align 8, !tbaa !11
  %14628 = load ptr, ptr %12, align 8, !tbaa !5
  %14629 = getelementptr inbounds %struct.doublecomplex, ptr %14628, i64 2
  %14630 = getelementptr inbounds %struct.doublecomplex, ptr %14629, i32 0, i32 1
  %14631 = load double, ptr %14630, align 8, !tbaa !14
  %14632 = getelementptr inbounds %struct.doublecomplex, ptr %60, i32 0, i32 1
  store double %14631, ptr %14632, align 8, !tbaa !14
  %14633 = call { double, double } @Cd(ptr noundef %60)
  %14634 = extractvalue { double, double } %14633, 0
  %14635 = extractvalue { double, double } %14633, 1
  %14636 = fneg double %14635
  %14637 = call ptr @_pCd(ptr noundef %31)
  %14638 = getelementptr inbounds { double, double }, ptr %14637, i32 0, i32 0
  %14639 = getelementptr inbounds { double, double }, ptr %14637, i32 0, i32 1
  store double %14634, ptr %14638, align 8
  store double %14636, ptr %14639, align 8
  %14640 = load ptr, ptr %13, align 8, !tbaa !5
  %14641 = getelementptr inbounds %struct.doublecomplex, ptr %14640, i32 0, i32 0
  %14642 = load double, ptr %14641, align 8, !tbaa !11
  %14643 = getelementptr inbounds %struct.doublecomplex, ptr %31, i32 0, i32 0
  %14644 = load double, ptr %14643, align 8, !tbaa !11
  %14645 = load ptr, ptr %13, align 8, !tbaa !5
  %14646 = getelementptr inbounds %struct.doublecomplex, ptr %14645, i32 0, i32 1
  %14647 = load double, ptr %14646, align 8, !tbaa !14
  %14648 = getelementptr inbounds %struct.doublecomplex, ptr %31, i32 0, i32 1
  %14649 = load double, ptr %14648, align 8, !tbaa !14
  %14650 = fmul double %14647, %14649
  %14651 = fneg double %14650
  %14652 = call double @llvm.fmuladd.f64(double %14642, double %14644, double %14651)
  %14653 = getelementptr inbounds %struct.doublecomplex, ptr %30, i32 0, i32 0
  store double %14652, ptr %14653, align 8, !tbaa !11
  %14654 = load ptr, ptr %13, align 8, !tbaa !5
  %14655 = getelementptr inbounds %struct.doublecomplex, ptr %14654, i32 0, i32 0
  %14656 = load double, ptr %14655, align 8, !tbaa !11
  %14657 = getelementptr inbounds %struct.doublecomplex, ptr %31, i32 0, i32 1
  %14658 = load double, ptr %14657, align 8, !tbaa !14
  %14659 = load ptr, ptr %13, align 8, !tbaa !5
  %14660 = getelementptr inbounds %struct.doublecomplex, ptr %14659, i32 0, i32 1
  %14661 = load double, ptr %14660, align 8, !tbaa !14
  %14662 = getelementptr inbounds %struct.doublecomplex, ptr %31, i32 0, i32 0
  %14663 = load double, ptr %14662, align 8, !tbaa !11
  %14664 = fmul double %14661, %14663
  %14665 = call double @llvm.fmuladd.f64(double %14656, double %14658, double %14664)
  %14666 = getelementptr inbounds %struct.doublecomplex, ptr %30, i32 0, i32 1
  store double %14665, ptr %14666, align 8, !tbaa !14
  %14667 = getelementptr inbounds %struct.doublecomplex, ptr %30, i32 0, i32 0
  %14668 = load double, ptr %14667, align 8, !tbaa !11
  %14669 = getelementptr inbounds %struct.doublecomplex, ptr %51, i32 0, i32 0
  store double %14668, ptr %14669, align 8, !tbaa !11
  %14670 = getelementptr inbounds %struct.doublecomplex, ptr %30, i32 0, i32 1
  %14671 = load double, ptr %14670, align 8, !tbaa !14
  %14672 = getelementptr inbounds %struct.doublecomplex, ptr %51, i32 0, i32 1
  store double %14671, ptr %14672, align 8, !tbaa !14
  %14673 = load ptr, ptr %12, align 8, !tbaa !5
  %14674 = getelementptr inbounds %struct.doublecomplex, ptr %14673, i64 3
  %14675 = getelementptr inbounds %struct.doublecomplex, ptr %14674, i32 0, i32 0
  %14676 = load double, ptr %14675, align 8, !tbaa !11
  %14677 = getelementptr inbounds %struct.doublecomplex, ptr %61, i32 0, i32 0
  store double %14676, ptr %14677, align 8, !tbaa !11
  %14678 = load ptr, ptr %12, align 8, !tbaa !5
  %14679 = getelementptr inbounds %struct.doublecomplex, ptr %14678, i64 3
  %14680 = getelementptr inbounds %struct.doublecomplex, ptr %14679, i32 0, i32 1
  %14681 = load double, ptr %14680, align 8, !tbaa !14
  %14682 = getelementptr inbounds %struct.doublecomplex, ptr %61, i32 0, i32 1
  store double %14681, ptr %14682, align 8, !tbaa !14
  %14683 = call { double, double } @Cd(ptr noundef %61)
  %14684 = extractvalue { double, double } %14683, 0
  %14685 = extractvalue { double, double } %14683, 1
  %14686 = fneg double %14685
  %14687 = call ptr @_pCd(ptr noundef %31)
  %14688 = getelementptr inbounds { double, double }, ptr %14687, i32 0, i32 0
  %14689 = getelementptr inbounds { double, double }, ptr %14687, i32 0, i32 1
  store double %14684, ptr %14688, align 8
  store double %14686, ptr %14689, align 8
  %14690 = load ptr, ptr %13, align 8, !tbaa !5
  %14691 = getelementptr inbounds %struct.doublecomplex, ptr %14690, i32 0, i32 0
  %14692 = load double, ptr %14691, align 8, !tbaa !11
  %14693 = getelementptr inbounds %struct.doublecomplex, ptr %31, i32 0, i32 0
  %14694 = load double, ptr %14693, align 8, !tbaa !11
  %14695 = load ptr, ptr %13, align 8, !tbaa !5
  %14696 = getelementptr inbounds %struct.doublecomplex, ptr %14695, i32 0, i32 1
  %14697 = load double, ptr %14696, align 8, !tbaa !14
  %14698 = getelementptr inbounds %struct.doublecomplex, ptr %31, i32 0, i32 1
  %14699 = load double, ptr %14698, align 8, !tbaa !14
  %14700 = fmul double %14697, %14699
  %14701 = fneg double %14700
  %14702 = call double @llvm.fmuladd.f64(double %14692, double %14694, double %14701)
  %14703 = getelementptr inbounds %struct.doublecomplex, ptr %30, i32 0, i32 0
  store double %14702, ptr %14703, align 8, !tbaa !11
  %14704 = load ptr, ptr %13, align 8, !tbaa !5
  %14705 = getelementptr inbounds %struct.doublecomplex, ptr %14704, i32 0, i32 0
  %14706 = load double, ptr %14705, align 8, !tbaa !11
  %14707 = getelementptr inbounds %struct.doublecomplex, ptr %31, i32 0, i32 1
  %14708 = load double, ptr %14707, align 8, !tbaa !14
  %14709 = load ptr, ptr %13, align 8, !tbaa !5
  %14710 = getelementptr inbounds %struct.doublecomplex, ptr %14709, i32 0, i32 1
  %14711 = load double, ptr %14710, align 8, !tbaa !14
  %14712 = getelementptr inbounds %struct.doublecomplex, ptr %31, i32 0, i32 0
  %14713 = load double, ptr %14712, align 8, !tbaa !11
  %14714 = fmul double %14711, %14713
  %14715 = call double @llvm.fmuladd.f64(double %14706, double %14708, double %14714)
  %14716 = getelementptr inbounds %struct.doublecomplex, ptr %30, i32 0, i32 1
  store double %14715, ptr %14716, align 8, !tbaa !14
  %14717 = getelementptr inbounds %struct.doublecomplex, ptr %30, i32 0, i32 0
  %14718 = load double, ptr %14717, align 8, !tbaa !11
  %14719 = getelementptr inbounds %struct.doublecomplex, ptr %52, i32 0, i32 0
  store double %14718, ptr %14719, align 8, !tbaa !11
  %14720 = getelementptr inbounds %struct.doublecomplex, ptr %30, i32 0, i32 1
  %14721 = load double, ptr %14720, align 8, !tbaa !14
  %14722 = getelementptr inbounds %struct.doublecomplex, ptr %52, i32 0, i32 1
  store double %14721, ptr %14722, align 8, !tbaa !14
  %14723 = load ptr, ptr %12, align 8, !tbaa !5
  %14724 = getelementptr inbounds %struct.doublecomplex, ptr %14723, i64 4
  %14725 = getelementptr inbounds %struct.doublecomplex, ptr %14724, i32 0, i32 0
  %14726 = load double, ptr %14725, align 8, !tbaa !11
  %14727 = getelementptr inbounds %struct.doublecomplex, ptr %62, i32 0, i32 0
  store double %14726, ptr %14727, align 8, !tbaa !11
  %14728 = load ptr, ptr %12, align 8, !tbaa !5
  %14729 = getelementptr inbounds %struct.doublecomplex, ptr %14728, i64 4
  %14730 = getelementptr inbounds %struct.doublecomplex, ptr %14729, i32 0, i32 1
  %14731 = load double, ptr %14730, align 8, !tbaa !14
  %14732 = getelementptr inbounds %struct.doublecomplex, ptr %62, i32 0, i32 1
  store double %14731, ptr %14732, align 8, !tbaa !14
  %14733 = call { double, double } @Cd(ptr noundef %62)
  %14734 = extractvalue { double, double } %14733, 0
  %14735 = extractvalue { double, double } %14733, 1
  %14736 = fneg double %14735
  %14737 = call ptr @_pCd(ptr noundef %31)
  %14738 = getelementptr inbounds { double, double }, ptr %14737, i32 0, i32 0
  %14739 = getelementptr inbounds { double, double }, ptr %14737, i32 0, i32 1
  store double %14734, ptr %14738, align 8
  store double %14736, ptr %14739, align 8
  %14740 = load ptr, ptr %13, align 8, !tbaa !5
  %14741 = getelementptr inbounds %struct.doublecomplex, ptr %14740, i32 0, i32 0
  %14742 = load double, ptr %14741, align 8, !tbaa !11
  %14743 = getelementptr inbounds %struct.doublecomplex, ptr %31, i32 0, i32 0
  %14744 = load double, ptr %14743, align 8, !tbaa !11
  %14745 = load ptr, ptr %13, align 8, !tbaa !5
  %14746 = getelementptr inbounds %struct.doublecomplex, ptr %14745, i32 0, i32 1
  %14747 = load double, ptr %14746, align 8, !tbaa !14
  %14748 = getelementptr inbounds %struct.doublecomplex, ptr %31, i32 0, i32 1
  %14749 = load double, ptr %14748, align 8, !tbaa !14
  %14750 = fmul double %14747, %14749
  %14751 = fneg double %14750
  %14752 = call double @llvm.fmuladd.f64(double %14742, double %14744, double %14751)
  %14753 = getelementptr inbounds %struct.doublecomplex, ptr %30, i32 0, i32 0
  store double %14752, ptr %14753, align 8, !tbaa !11
  %14754 = load ptr, ptr %13, align 8, !tbaa !5
  %14755 = getelementptr inbounds %struct.doublecomplex, ptr %14754, i32 0, i32 0
  %14756 = load double, ptr %14755, align 8, !tbaa !11
  %14757 = getelementptr inbounds %struct.doublecomplex, ptr %31, i32 0, i32 1
  %14758 = load double, ptr %14757, align 8, !tbaa !14
  %14759 = load ptr, ptr %13, align 8, !tbaa !5
  %14760 = getelementptr inbounds %struct.doublecomplex, ptr %14759, i32 0, i32 1
  %14761 = load double, ptr %14760, align 8, !tbaa !14
  %14762 = getelementptr inbounds %struct.doublecomplex, ptr %31, i32 0, i32 0
  %14763 = load double, ptr %14762, align 8, !tbaa !11
  %14764 = fmul double %14761, %14763
  %14765 = call double @llvm.fmuladd.f64(double %14756, double %14758, double %14764)
  %14766 = getelementptr inbounds %struct.doublecomplex, ptr %30, i32 0, i32 1
  store double %14765, ptr %14766, align 8, !tbaa !14
  %14767 = getelementptr inbounds %struct.doublecomplex, ptr %30, i32 0, i32 0
  %14768 = load double, ptr %14767, align 8, !tbaa !11
  %14769 = getelementptr inbounds %struct.doublecomplex, ptr %53, i32 0, i32 0
  store double %14768, ptr %14769, align 8, !tbaa !11
  %14770 = getelementptr inbounds %struct.doublecomplex, ptr %30, i32 0, i32 1
  %14771 = load double, ptr %14770, align 8, !tbaa !14
  %14772 = getelementptr inbounds %struct.doublecomplex, ptr %53, i32 0, i32 1
  store double %14771, ptr %14772, align 8, !tbaa !14
  %14773 = load ptr, ptr %12, align 8, !tbaa !5
  %14774 = getelementptr inbounds %struct.doublecomplex, ptr %14773, i64 5
  %14775 = getelementptr inbounds %struct.doublecomplex, ptr %14774, i32 0, i32 0
  %14776 = load double, ptr %14775, align 8, !tbaa !11
  %14777 = getelementptr inbounds %struct.doublecomplex, ptr %63, i32 0, i32 0
  store double %14776, ptr %14777, align 8, !tbaa !11
  %14778 = load ptr, ptr %12, align 8, !tbaa !5
  %14779 = getelementptr inbounds %struct.doublecomplex, ptr %14778, i64 5
  %14780 = getelementptr inbounds %struct.doublecomplex, ptr %14779, i32 0, i32 1
  %14781 = load double, ptr %14780, align 8, !tbaa !14
  %14782 = getelementptr inbounds %struct.doublecomplex, ptr %63, i32 0, i32 1
  store double %14781, ptr %14782, align 8, !tbaa !14
  %14783 = call { double, double } @Cd(ptr noundef %63)
  %14784 = extractvalue { double, double } %14783, 0
  %14785 = extractvalue { double, double } %14783, 1
  %14786 = fneg double %14785
  %14787 = call ptr @_pCd(ptr noundef %31)
  %14788 = getelementptr inbounds { double, double }, ptr %14787, i32 0, i32 0
  %14789 = getelementptr inbounds { double, double }, ptr %14787, i32 0, i32 1
  store double %14784, ptr %14788, align 8
  store double %14786, ptr %14789, align 8
  %14790 = load ptr, ptr %13, align 8, !tbaa !5
  %14791 = getelementptr inbounds %struct.doublecomplex, ptr %14790, i32 0, i32 0
  %14792 = load double, ptr %14791, align 8, !tbaa !11
  %14793 = getelementptr inbounds %struct.doublecomplex, ptr %31, i32 0, i32 0
  %14794 = load double, ptr %14793, align 8, !tbaa !11
  %14795 = load ptr, ptr %13, align 8, !tbaa !5
  %14796 = getelementptr inbounds %struct.doublecomplex, ptr %14795, i32 0, i32 1
  %14797 = load double, ptr %14796, align 8, !tbaa !14
  %14798 = getelementptr inbounds %struct.doublecomplex, ptr %31, i32 0, i32 1
  %14799 = load double, ptr %14798, align 8, !tbaa !14
  %14800 = fmul double %14797, %14799
  %14801 = fneg double %14800
  %14802 = call double @llvm.fmuladd.f64(double %14792, double %14794, double %14801)
  %14803 = getelementptr inbounds %struct.doublecomplex, ptr %30, i32 0, i32 0
  store double %14802, ptr %14803, align 8, !tbaa !11
  %14804 = load ptr, ptr %13, align 8, !tbaa !5
  %14805 = getelementptr inbounds %struct.doublecomplex, ptr %14804, i32 0, i32 0
  %14806 = load double, ptr %14805, align 8, !tbaa !11
  %14807 = getelementptr inbounds %struct.doublecomplex, ptr %31, i32 0, i32 1
  %14808 = load double, ptr %14807, align 8, !tbaa !14
  %14809 = load ptr, ptr %13, align 8, !tbaa !5
  %14810 = getelementptr inbounds %struct.doublecomplex, ptr %14809, i32 0, i32 1
  %14811 = load double, ptr %14810, align 8, !tbaa !14
  %14812 = getelementptr inbounds %struct.doublecomplex, ptr %31, i32 0, i32 0
  %14813 = load double, ptr %14812, align 8, !tbaa !11
  %14814 = fmul double %14811, %14813
  %14815 = call double @llvm.fmuladd.f64(double %14806, double %14808, double %14814)
  %14816 = getelementptr inbounds %struct.doublecomplex, ptr %30, i32 0, i32 1
  store double %14815, ptr %14816, align 8, !tbaa !14
  %14817 = getelementptr inbounds %struct.doublecomplex, ptr %30, i32 0, i32 0
  %14818 = load double, ptr %14817, align 8, !tbaa !11
  %14819 = getelementptr inbounds %struct.doublecomplex, ptr %54, i32 0, i32 0
  store double %14818, ptr %14819, align 8, !tbaa !11
  %14820 = getelementptr inbounds %struct.doublecomplex, ptr %30, i32 0, i32 1
  %14821 = load double, ptr %14820, align 8, !tbaa !14
  %14822 = getelementptr inbounds %struct.doublecomplex, ptr %54, i32 0, i32 1
  store double %14821, ptr %14822, align 8, !tbaa !14
  %14823 = load ptr, ptr %12, align 8, !tbaa !5
  %14824 = getelementptr inbounds %struct.doublecomplex, ptr %14823, i64 6
  %14825 = getelementptr inbounds %struct.doublecomplex, ptr %14824, i32 0, i32 0
  %14826 = load double, ptr %14825, align 8, !tbaa !11
  %14827 = getelementptr inbounds %struct.doublecomplex, ptr %64, i32 0, i32 0
  store double %14826, ptr %14827, align 8, !tbaa !11
  %14828 = load ptr, ptr %12, align 8, !tbaa !5
  %14829 = getelementptr inbounds %struct.doublecomplex, ptr %14828, i64 6
  %14830 = getelementptr inbounds %struct.doublecomplex, ptr %14829, i32 0, i32 1
  %14831 = load double, ptr %14830, align 8, !tbaa !14
  %14832 = getelementptr inbounds %struct.doublecomplex, ptr %64, i32 0, i32 1
  store double %14831, ptr %14832, align 8, !tbaa !14
  %14833 = call { double, double } @Cd(ptr noundef %64)
  %14834 = extractvalue { double, double } %14833, 0
  %14835 = extractvalue { double, double } %14833, 1
  %14836 = fneg double %14835
  %14837 = call ptr @_pCd(ptr noundef %31)
  %14838 = getelementptr inbounds { double, double }, ptr %14837, i32 0, i32 0
  %14839 = getelementptr inbounds { double, double }, ptr %14837, i32 0, i32 1
  store double %14834, ptr %14838, align 8
  store double %14836, ptr %14839, align 8
  %14840 = load ptr, ptr %13, align 8, !tbaa !5
  %14841 = getelementptr inbounds %struct.doublecomplex, ptr %14840, i32 0, i32 0
  %14842 = load double, ptr %14841, align 8, !tbaa !11
  %14843 = getelementptr inbounds %struct.doublecomplex, ptr %31, i32 0, i32 0
  %14844 = load double, ptr %14843, align 8, !tbaa !11
  %14845 = load ptr, ptr %13, align 8, !tbaa !5
  %14846 = getelementptr inbounds %struct.doublecomplex, ptr %14845, i32 0, i32 1
  %14847 = load double, ptr %14846, align 8, !tbaa !14
  %14848 = getelementptr inbounds %struct.doublecomplex, ptr %31, i32 0, i32 1
  %14849 = load double, ptr %14848, align 8, !tbaa !14
  %14850 = fmul double %14847, %14849
  %14851 = fneg double %14850
  %14852 = call double @llvm.fmuladd.f64(double %14842, double %14844, double %14851)
  %14853 = getelementptr inbounds %struct.doublecomplex, ptr %30, i32 0, i32 0
  store double %14852, ptr %14853, align 8, !tbaa !11
  %14854 = load ptr, ptr %13, align 8, !tbaa !5
  %14855 = getelementptr inbounds %struct.doublecomplex, ptr %14854, i32 0, i32 0
  %14856 = load double, ptr %14855, align 8, !tbaa !11
  %14857 = getelementptr inbounds %struct.doublecomplex, ptr %31, i32 0, i32 1
  %14858 = load double, ptr %14857, align 8, !tbaa !14
  %14859 = load ptr, ptr %13, align 8, !tbaa !5
  %14860 = getelementptr inbounds %struct.doublecomplex, ptr %14859, i32 0, i32 1
  %14861 = load double, ptr %14860, align 8, !tbaa !14
  %14862 = getelementptr inbounds %struct.doublecomplex, ptr %31, i32 0, i32 0
  %14863 = load double, ptr %14862, align 8, !tbaa !11
  %14864 = fmul double %14861, %14863
  %14865 = call double @llvm.fmuladd.f64(double %14856, double %14858, double %14864)
  %14866 = getelementptr inbounds %struct.doublecomplex, ptr %30, i32 0, i32 1
  store double %14865, ptr %14866, align 8, !tbaa !14
  %14867 = getelementptr inbounds %struct.doublecomplex, ptr %30, i32 0, i32 0
  %14868 = load double, ptr %14867, align 8, !tbaa !11
  %14869 = getelementptr inbounds %struct.doublecomplex, ptr %55, i32 0, i32 0
  store double %14868, ptr %14869, align 8, !tbaa !11
  %14870 = getelementptr inbounds %struct.doublecomplex, ptr %30, i32 0, i32 1
  %14871 = load double, ptr %14870, align 8, !tbaa !14
  %14872 = getelementptr inbounds %struct.doublecomplex, ptr %55, i32 0, i32 1
  store double %14871, ptr %14872, align 8, !tbaa !14
  %14873 = load ptr, ptr %12, align 8, !tbaa !5
  %14874 = getelementptr inbounds %struct.doublecomplex, ptr %14873, i64 7
  %14875 = getelementptr inbounds %struct.doublecomplex, ptr %14874, i32 0, i32 0
  %14876 = load double, ptr %14875, align 8, !tbaa !11
  %14877 = getelementptr inbounds %struct.doublecomplex, ptr %65, i32 0, i32 0
  store double %14876, ptr %14877, align 8, !tbaa !11
  %14878 = load ptr, ptr %12, align 8, !tbaa !5
  %14879 = getelementptr inbounds %struct.doublecomplex, ptr %14878, i64 7
  %14880 = getelementptr inbounds %struct.doublecomplex, ptr %14879, i32 0, i32 1
  %14881 = load double, ptr %14880, align 8, !tbaa !14
  %14882 = getelementptr inbounds %struct.doublecomplex, ptr %65, i32 0, i32 1
  store double %14881, ptr %14882, align 8, !tbaa !14
  %14883 = call { double, double } @Cd(ptr noundef %65)
  %14884 = extractvalue { double, double } %14883, 0
  %14885 = extractvalue { double, double } %14883, 1
  %14886 = fneg double %14885
  %14887 = call ptr @_pCd(ptr noundef %31)
  %14888 = getelementptr inbounds { double, double }, ptr %14887, i32 0, i32 0
  %14889 = getelementptr inbounds { double, double }, ptr %14887, i32 0, i32 1
  store double %14884, ptr %14888, align 8
  store double %14886, ptr %14889, align 8
  %14890 = load ptr, ptr %13, align 8, !tbaa !5
  %14891 = getelementptr inbounds %struct.doublecomplex, ptr %14890, i32 0, i32 0
  %14892 = load double, ptr %14891, align 8, !tbaa !11
  %14893 = getelementptr inbounds %struct.doublecomplex, ptr %31, i32 0, i32 0
  %14894 = load double, ptr %14893, align 8, !tbaa !11
  %14895 = load ptr, ptr %13, align 8, !tbaa !5
  %14896 = getelementptr inbounds %struct.doublecomplex, ptr %14895, i32 0, i32 1
  %14897 = load double, ptr %14896, align 8, !tbaa !14
  %14898 = getelementptr inbounds %struct.doublecomplex, ptr %31, i32 0, i32 1
  %14899 = load double, ptr %14898, align 8, !tbaa !14
  %14900 = fmul double %14897, %14899
  %14901 = fneg double %14900
  %14902 = call double @llvm.fmuladd.f64(double %14892, double %14894, double %14901)
  %14903 = getelementptr inbounds %struct.doublecomplex, ptr %30, i32 0, i32 0
  store double %14902, ptr %14903, align 8, !tbaa !11
  %14904 = load ptr, ptr %13, align 8, !tbaa !5
  %14905 = getelementptr inbounds %struct.doublecomplex, ptr %14904, i32 0, i32 0
  %14906 = load double, ptr %14905, align 8, !tbaa !11
  %14907 = getelementptr inbounds %struct.doublecomplex, ptr %31, i32 0, i32 1
  %14908 = load double, ptr %14907, align 8, !tbaa !14
  %14909 = load ptr, ptr %13, align 8, !tbaa !5
  %14910 = getelementptr inbounds %struct.doublecomplex, ptr %14909, i32 0, i32 1
  %14911 = load double, ptr %14910, align 8, !tbaa !14
  %14912 = getelementptr inbounds %struct.doublecomplex, ptr %31, i32 0, i32 0
  %14913 = load double, ptr %14912, align 8, !tbaa !11
  %14914 = fmul double %14911, %14913
  %14915 = call double @llvm.fmuladd.f64(double %14906, double %14908, double %14914)
  %14916 = getelementptr inbounds %struct.doublecomplex, ptr %30, i32 0, i32 1
  store double %14915, ptr %14916, align 8, !tbaa !14
  %14917 = getelementptr inbounds %struct.doublecomplex, ptr %30, i32 0, i32 0
  %14918 = load double, ptr %14917, align 8, !tbaa !11
  %14919 = getelementptr inbounds %struct.doublecomplex, ptr %56, i32 0, i32 0
  store double %14918, ptr %14919, align 8, !tbaa !11
  %14920 = getelementptr inbounds %struct.doublecomplex, ptr %30, i32 0, i32 1
  %14921 = load double, ptr %14920, align 8, !tbaa !14
  %14922 = getelementptr inbounds %struct.doublecomplex, ptr %56, i32 0, i32 1
  store double %14921, ptr %14922, align 8, !tbaa !14
  %14923 = load ptr, ptr %12, align 8, !tbaa !5
  %14924 = getelementptr inbounds %struct.doublecomplex, ptr %14923, i64 8
  %14925 = getelementptr inbounds %struct.doublecomplex, ptr %14924, i32 0, i32 0
  %14926 = load double, ptr %14925, align 8, !tbaa !11
  %14927 = getelementptr inbounds %struct.doublecomplex, ptr %66, i32 0, i32 0
  store double %14926, ptr %14927, align 8, !tbaa !11
  %14928 = load ptr, ptr %12, align 8, !tbaa !5
  %14929 = getelementptr inbounds %struct.doublecomplex, ptr %14928, i64 8
  %14930 = getelementptr inbounds %struct.doublecomplex, ptr %14929, i32 0, i32 1
  %14931 = load double, ptr %14930, align 8, !tbaa !14
  %14932 = getelementptr inbounds %struct.doublecomplex, ptr %66, i32 0, i32 1
  store double %14931, ptr %14932, align 8, !tbaa !14
  %14933 = call { double, double } @Cd(ptr noundef %66)
  %14934 = extractvalue { double, double } %14933, 0
  %14935 = extractvalue { double, double } %14933, 1
  %14936 = fneg double %14935
  %14937 = call ptr @_pCd(ptr noundef %31)
  %14938 = getelementptr inbounds { double, double }, ptr %14937, i32 0, i32 0
  %14939 = getelementptr inbounds { double, double }, ptr %14937, i32 0, i32 1
  store double %14934, ptr %14938, align 8
  store double %14936, ptr %14939, align 8
  %14940 = load ptr, ptr %13, align 8, !tbaa !5
  %14941 = getelementptr inbounds %struct.doublecomplex, ptr %14940, i32 0, i32 0
  %14942 = load double, ptr %14941, align 8, !tbaa !11
  %14943 = getelementptr inbounds %struct.doublecomplex, ptr %31, i32 0, i32 0
  %14944 = load double, ptr %14943, align 8, !tbaa !11
  %14945 = load ptr, ptr %13, align 8, !tbaa !5
  %14946 = getelementptr inbounds %struct.doublecomplex, ptr %14945, i32 0, i32 1
  %14947 = load double, ptr %14946, align 8, !tbaa !14
  %14948 = getelementptr inbounds %struct.doublecomplex, ptr %31, i32 0, i32 1
  %14949 = load double, ptr %14948, align 8, !tbaa !14
  %14950 = fmul double %14947, %14949
  %14951 = fneg double %14950
  %14952 = call double @llvm.fmuladd.f64(double %14942, double %14944, double %14951)
  %14953 = getelementptr inbounds %struct.doublecomplex, ptr %30, i32 0, i32 0
  store double %14952, ptr %14953, align 8, !tbaa !11
  %14954 = load ptr, ptr %13, align 8, !tbaa !5
  %14955 = getelementptr inbounds %struct.doublecomplex, ptr %14954, i32 0, i32 0
  %14956 = load double, ptr %14955, align 8, !tbaa !11
  %14957 = getelementptr inbounds %struct.doublecomplex, ptr %31, i32 0, i32 1
  %14958 = load double, ptr %14957, align 8, !tbaa !14
  %14959 = load ptr, ptr %13, align 8, !tbaa !5
  %14960 = getelementptr inbounds %struct.doublecomplex, ptr %14959, i32 0, i32 1
  %14961 = load double, ptr %14960, align 8, !tbaa !14
  %14962 = getelementptr inbounds %struct.doublecomplex, ptr %31, i32 0, i32 0
  %14963 = load double, ptr %14962, align 8, !tbaa !11
  %14964 = fmul double %14961, %14963
  %14965 = call double @llvm.fmuladd.f64(double %14956, double %14958, double %14964)
  %14966 = getelementptr inbounds %struct.doublecomplex, ptr %30, i32 0, i32 1
  store double %14965, ptr %14966, align 8, !tbaa !14
  %14967 = getelementptr inbounds %struct.doublecomplex, ptr %30, i32 0, i32 0
  %14968 = load double, ptr %14967, align 8, !tbaa !11
  %14969 = getelementptr inbounds %struct.doublecomplex, ptr %57, i32 0, i32 0
  store double %14968, ptr %14969, align 8, !tbaa !11
  %14970 = getelementptr inbounds %struct.doublecomplex, ptr %30, i32 0, i32 1
  %14971 = load double, ptr %14970, align 8, !tbaa !14
  %14972 = getelementptr inbounds %struct.doublecomplex, ptr %57, i32 0, i32 1
  store double %14971, ptr %14972, align 8, !tbaa !14
  %14973 = load ptr, ptr %10, align 8, !tbaa !5
  %14974 = load i32, ptr %14973, align 4, !tbaa !9
  store i32 %14974, ptr %19, align 4, !tbaa !9
  store i32 1, ptr %49, align 4, !tbaa !9
  br label %14975

14975:                                            ; preds = %15931, %14572
  %14976 = load i32, ptr %49, align 4, !tbaa !9
  %14977 = load i32, ptr %19, align 4, !tbaa !9
  %14978 = icmp sle i32 %14976, %14977
  br i1 %14978, label %14979, label %15934

14979:                                            ; preds = %14975
  %14980 = load i32, ptr %49, align 4, !tbaa !9
  %14981 = load i32, ptr %17, align 4, !tbaa !9
  %14982 = add nsw i32 %14980, %14981
  store i32 %14982, ptr %20, align 4, !tbaa !9
  %14983 = getelementptr inbounds %struct.doublecomplex, ptr %59, i32 0, i32 0
  %14984 = load double, ptr %14983, align 8, !tbaa !11
  %14985 = load ptr, ptr %14, align 8, !tbaa !5
  %14986 = load i32, ptr %20, align 4, !tbaa !9
  %14987 = sext i32 %14986 to i64
  %14988 = getelementptr inbounds %struct.doublecomplex, ptr %14985, i64 %14987
  %14989 = getelementptr inbounds %struct.doublecomplex, ptr %14988, i32 0, i32 0
  %14990 = load double, ptr %14989, align 8, !tbaa !11
  %14991 = getelementptr inbounds %struct.doublecomplex, ptr %59, i32 0, i32 1
  %14992 = load double, ptr %14991, align 8, !tbaa !14
  %14993 = load ptr, ptr %14, align 8, !tbaa !5
  %14994 = load i32, ptr %20, align 4, !tbaa !9
  %14995 = sext i32 %14994 to i64
  %14996 = getelementptr inbounds %struct.doublecomplex, ptr %14993, i64 %14995
  %14997 = getelementptr inbounds %struct.doublecomplex, ptr %14996, i32 0, i32 1
  %14998 = load double, ptr %14997, align 8, !tbaa !14
  %14999 = fmul double %14992, %14998
  %15000 = fneg double %14999
  %15001 = call double @llvm.fmuladd.f64(double %14984, double %14990, double %15000)
  %15002 = getelementptr inbounds %struct.doublecomplex, ptr %37, i32 0, i32 0
  store double %15001, ptr %15002, align 8, !tbaa !11
  %15003 = getelementptr inbounds %struct.doublecomplex, ptr %59, i32 0, i32 0
  %15004 = load double, ptr %15003, align 8, !tbaa !11
  %15005 = load ptr, ptr %14, align 8, !tbaa !5
  %15006 = load i32, ptr %20, align 4, !tbaa !9
  %15007 = sext i32 %15006 to i64
  %15008 = getelementptr inbounds %struct.doublecomplex, ptr %15005, i64 %15007
  %15009 = getelementptr inbounds %struct.doublecomplex, ptr %15008, i32 0, i32 1
  %15010 = load double, ptr %15009, align 8, !tbaa !14
  %15011 = getelementptr inbounds %struct.doublecomplex, ptr %59, i32 0, i32 1
  %15012 = load double, ptr %15011, align 8, !tbaa !14
  %15013 = load ptr, ptr %14, align 8, !tbaa !5
  %15014 = load i32, ptr %20, align 4, !tbaa !9
  %15015 = sext i32 %15014 to i64
  %15016 = getelementptr inbounds %struct.doublecomplex, ptr %15013, i64 %15015
  %15017 = getelementptr inbounds %struct.doublecomplex, ptr %15016, i32 0, i32 0
  %15018 = load double, ptr %15017, align 8, !tbaa !11
  %15019 = fmul double %15012, %15018
  %15020 = call double @llvm.fmuladd.f64(double %15004, double %15010, double %15019)
  %15021 = getelementptr inbounds %struct.doublecomplex, ptr %37, i32 0, i32 1
  store double %15020, ptr %15021, align 8, !tbaa !14
  %15022 = load i32, ptr %49, align 4, !tbaa !9
  %15023 = load i32, ptr %17, align 4, !tbaa !9
  %15024 = shl i32 %15023, 1
  %15025 = add nsw i32 %15022, %15024
  store i32 %15025, ptr %21, align 4, !tbaa !9
  %15026 = getelementptr inbounds %struct.doublecomplex, ptr %60, i32 0, i32 0
  %15027 = load double, ptr %15026, align 8, !tbaa !11
  %15028 = load ptr, ptr %14, align 8, !tbaa !5
  %15029 = load i32, ptr %21, align 4, !tbaa !9
  %15030 = sext i32 %15029 to i64
  %15031 = getelementptr inbounds %struct.doublecomplex, ptr %15028, i64 %15030
  %15032 = getelementptr inbounds %struct.doublecomplex, ptr %15031, i32 0, i32 0
  %15033 = load double, ptr %15032, align 8, !tbaa !11
  %15034 = getelementptr inbounds %struct.doublecomplex, ptr %60, i32 0, i32 1
  %15035 = load double, ptr %15034, align 8, !tbaa !14
  %15036 = load ptr, ptr %14, align 8, !tbaa !5
  %15037 = load i32, ptr %21, align 4, !tbaa !9
  %15038 = sext i32 %15037 to i64
  %15039 = getelementptr inbounds %struct.doublecomplex, ptr %15036, i64 %15038
  %15040 = getelementptr inbounds %struct.doublecomplex, ptr %15039, i32 0, i32 1
  %15041 = load double, ptr %15040, align 8, !tbaa !14
  %15042 = fmul double %15035, %15041
  %15043 = fneg double %15042
  %15044 = call double @llvm.fmuladd.f64(double %15027, double %15033, double %15043)
  %15045 = getelementptr inbounds %struct.doublecomplex, ptr %38, i32 0, i32 0
  store double %15044, ptr %15045, align 8, !tbaa !11
  %15046 = getelementptr inbounds %struct.doublecomplex, ptr %60, i32 0, i32 0
  %15047 = load double, ptr %15046, align 8, !tbaa !11
  %15048 = load ptr, ptr %14, align 8, !tbaa !5
  %15049 = load i32, ptr %21, align 4, !tbaa !9
  %15050 = sext i32 %15049 to i64
  %15051 = getelementptr inbounds %struct.doublecomplex, ptr %15048, i64 %15050
  %15052 = getelementptr inbounds %struct.doublecomplex, ptr %15051, i32 0, i32 1
  %15053 = load double, ptr %15052, align 8, !tbaa !14
  %15054 = getelementptr inbounds %struct.doublecomplex, ptr %60, i32 0, i32 1
  %15055 = load double, ptr %15054, align 8, !tbaa !14
  %15056 = load ptr, ptr %14, align 8, !tbaa !5
  %15057 = load i32, ptr %21, align 4, !tbaa !9
  %15058 = sext i32 %15057 to i64
  %15059 = getelementptr inbounds %struct.doublecomplex, ptr %15056, i64 %15058
  %15060 = getelementptr inbounds %struct.doublecomplex, ptr %15059, i32 0, i32 0
  %15061 = load double, ptr %15060, align 8, !tbaa !11
  %15062 = fmul double %15055, %15061
  %15063 = call double @llvm.fmuladd.f64(double %15047, double %15053, double %15062)
  %15064 = getelementptr inbounds %struct.doublecomplex, ptr %38, i32 0, i32 1
  store double %15063, ptr %15064, align 8, !tbaa !14
  %15065 = getelementptr inbounds %struct.doublecomplex, ptr %37, i32 0, i32 0
  %15066 = load double, ptr %15065, align 8, !tbaa !11
  %15067 = getelementptr inbounds %struct.doublecomplex, ptr %38, i32 0, i32 0
  %15068 = load double, ptr %15067, align 8, !tbaa !11
  %15069 = fadd double %15066, %15068
  %15070 = getelementptr inbounds %struct.doublecomplex, ptr %36, i32 0, i32 0
  store double %15069, ptr %15070, align 8, !tbaa !11
  %15071 = getelementptr inbounds %struct.doublecomplex, ptr %37, i32 0, i32 1
  %15072 = load double, ptr %15071, align 8, !tbaa !14
  %15073 = getelementptr inbounds %struct.doublecomplex, ptr %38, i32 0, i32 1
  %15074 = load double, ptr %15073, align 8, !tbaa !14
  %15075 = fadd double %15072, %15074
  %15076 = getelementptr inbounds %struct.doublecomplex, ptr %36, i32 0, i32 1
  store double %15075, ptr %15076, align 8, !tbaa !14
  %15077 = load i32, ptr %49, align 4, !tbaa !9
  %15078 = load i32, ptr %17, align 4, !tbaa !9
  %15079 = mul nsw i32 %15078, 3
  %15080 = add nsw i32 %15077, %15079
  store i32 %15080, ptr %22, align 4, !tbaa !9
  %15081 = getelementptr inbounds %struct.doublecomplex, ptr %61, i32 0, i32 0
  %15082 = load double, ptr %15081, align 8, !tbaa !11
  %15083 = load ptr, ptr %14, align 8, !tbaa !5
  %15084 = load i32, ptr %22, align 4, !tbaa !9
  %15085 = sext i32 %15084 to i64
  %15086 = getelementptr inbounds %struct.doublecomplex, ptr %15083, i64 %15085
  %15087 = getelementptr inbounds %struct.doublecomplex, ptr %15086, i32 0, i32 0
  %15088 = load double, ptr %15087, align 8, !tbaa !11
  %15089 = getelementptr inbounds %struct.doublecomplex, ptr %61, i32 0, i32 1
  %15090 = load double, ptr %15089, align 8, !tbaa !14
  %15091 = load ptr, ptr %14, align 8, !tbaa !5
  %15092 = load i32, ptr %22, align 4, !tbaa !9
  %15093 = sext i32 %15092 to i64
  %15094 = getelementptr inbounds %struct.doublecomplex, ptr %15091, i64 %15093
  %15095 = getelementptr inbounds %struct.doublecomplex, ptr %15094, i32 0, i32 1
  %15096 = load double, ptr %15095, align 8, !tbaa !14
  %15097 = fmul double %15090, %15096
  %15098 = fneg double %15097
  %15099 = call double @llvm.fmuladd.f64(double %15082, double %15088, double %15098)
  %15100 = getelementptr inbounds %struct.doublecomplex, ptr %39, i32 0, i32 0
  store double %15099, ptr %15100, align 8, !tbaa !11
  %15101 = getelementptr inbounds %struct.doublecomplex, ptr %61, i32 0, i32 0
  %15102 = load double, ptr %15101, align 8, !tbaa !11
  %15103 = load ptr, ptr %14, align 8, !tbaa !5
  %15104 = load i32, ptr %22, align 4, !tbaa !9
  %15105 = sext i32 %15104 to i64
  %15106 = getelementptr inbounds %struct.doublecomplex, ptr %15103, i64 %15105
  %15107 = getelementptr inbounds %struct.doublecomplex, ptr %15106, i32 0, i32 1
  %15108 = load double, ptr %15107, align 8, !tbaa !14
  %15109 = getelementptr inbounds %struct.doublecomplex, ptr %61, i32 0, i32 1
  %15110 = load double, ptr %15109, align 8, !tbaa !14
  %15111 = load ptr, ptr %14, align 8, !tbaa !5
  %15112 = load i32, ptr %22, align 4, !tbaa !9
  %15113 = sext i32 %15112 to i64
  %15114 = getelementptr inbounds %struct.doublecomplex, ptr %15111, i64 %15113
  %15115 = getelementptr inbounds %struct.doublecomplex, ptr %15114, i32 0, i32 0
  %15116 = load double, ptr %15115, align 8, !tbaa !11
  %15117 = fmul double %15110, %15116
  %15118 = call double @llvm.fmuladd.f64(double %15102, double %15108, double %15117)
  %15119 = getelementptr inbounds %struct.doublecomplex, ptr %39, i32 0, i32 1
  store double %15118, ptr %15119, align 8, !tbaa !14
  %15120 = getelementptr inbounds %struct.doublecomplex, ptr %36, i32 0, i32 0
  %15121 = load double, ptr %15120, align 8, !tbaa !11
  %15122 = getelementptr inbounds %struct.doublecomplex, ptr %39, i32 0, i32 0
  %15123 = load double, ptr %15122, align 8, !tbaa !11
  %15124 = fadd double %15121, %15123
  %15125 = getelementptr inbounds %struct.doublecomplex, ptr %35, i32 0, i32 0
  store double %15124, ptr %15125, align 8, !tbaa !11
  %15126 = getelementptr inbounds %struct.doublecomplex, ptr %36, i32 0, i32 1
  %15127 = load double, ptr %15126, align 8, !tbaa !14
  %15128 = getelementptr inbounds %struct.doublecomplex, ptr %39, i32 0, i32 1
  %15129 = load double, ptr %15128, align 8, !tbaa !14
  %15130 = fadd double %15127, %15129
  %15131 = getelementptr inbounds %struct.doublecomplex, ptr %35, i32 0, i32 1
  store double %15130, ptr %15131, align 8, !tbaa !14
  %15132 = load i32, ptr %49, align 4, !tbaa !9
  %15133 = load i32, ptr %17, align 4, !tbaa !9
  %15134 = shl i32 %15133, 2
  %15135 = add nsw i32 %15132, %15134
  store i32 %15135, ptr %23, align 4, !tbaa !9
  %15136 = getelementptr inbounds %struct.doublecomplex, ptr %62, i32 0, i32 0
  %15137 = load double, ptr %15136, align 8, !tbaa !11
  %15138 = load ptr, ptr %14, align 8, !tbaa !5
  %15139 = load i32, ptr %23, align 4, !tbaa !9
  %15140 = sext i32 %15139 to i64
  %15141 = getelementptr inbounds %struct.doublecomplex, ptr %15138, i64 %15140
  %15142 = getelementptr inbounds %struct.doublecomplex, ptr %15141, i32 0, i32 0
  %15143 = load double, ptr %15142, align 8, !tbaa !11
  %15144 = getelementptr inbounds %struct.doublecomplex, ptr %62, i32 0, i32 1
  %15145 = load double, ptr %15144, align 8, !tbaa !14
  %15146 = load ptr, ptr %14, align 8, !tbaa !5
  %15147 = load i32, ptr %23, align 4, !tbaa !9
  %15148 = sext i32 %15147 to i64
  %15149 = getelementptr inbounds %struct.doublecomplex, ptr %15146, i64 %15148
  %15150 = getelementptr inbounds %struct.doublecomplex, ptr %15149, i32 0, i32 1
  %15151 = load double, ptr %15150, align 8, !tbaa !14
  %15152 = fmul double %15145, %15151
  %15153 = fneg double %15152
  %15154 = call double @llvm.fmuladd.f64(double %15137, double %15143, double %15153)
  %15155 = getelementptr inbounds %struct.doublecomplex, ptr %40, i32 0, i32 0
  store double %15154, ptr %15155, align 8, !tbaa !11
  %15156 = getelementptr inbounds %struct.doublecomplex, ptr %62, i32 0, i32 0
  %15157 = load double, ptr %15156, align 8, !tbaa !11
  %15158 = load ptr, ptr %14, align 8, !tbaa !5
  %15159 = load i32, ptr %23, align 4, !tbaa !9
  %15160 = sext i32 %15159 to i64
  %15161 = getelementptr inbounds %struct.doublecomplex, ptr %15158, i64 %15160
  %15162 = getelementptr inbounds %struct.doublecomplex, ptr %15161, i32 0, i32 1
  %15163 = load double, ptr %15162, align 8, !tbaa !14
  %15164 = getelementptr inbounds %struct.doublecomplex, ptr %62, i32 0, i32 1
  %15165 = load double, ptr %15164, align 8, !tbaa !14
  %15166 = load ptr, ptr %14, align 8, !tbaa !5
  %15167 = load i32, ptr %23, align 4, !tbaa !9
  %15168 = sext i32 %15167 to i64
  %15169 = getelementptr inbounds %struct.doublecomplex, ptr %15166, i64 %15168
  %15170 = getelementptr inbounds %struct.doublecomplex, ptr %15169, i32 0, i32 0
  %15171 = load double, ptr %15170, align 8, !tbaa !11
  %15172 = fmul double %15165, %15171
  %15173 = call double @llvm.fmuladd.f64(double %15157, double %15163, double %15172)
  %15174 = getelementptr inbounds %struct.doublecomplex, ptr %40, i32 0, i32 1
  store double %15173, ptr %15174, align 8, !tbaa !14
  %15175 = getelementptr inbounds %struct.doublecomplex, ptr %35, i32 0, i32 0
  %15176 = load double, ptr %15175, align 8, !tbaa !11
  %15177 = getelementptr inbounds %struct.doublecomplex, ptr %40, i32 0, i32 0
  %15178 = load double, ptr %15177, align 8, !tbaa !11
  %15179 = fadd double %15176, %15178
  %15180 = getelementptr inbounds %struct.doublecomplex, ptr %34, i32 0, i32 0
  store double %15179, ptr %15180, align 8, !tbaa !11
  %15181 = getelementptr inbounds %struct.doublecomplex, ptr %35, i32 0, i32 1
  %15182 = load double, ptr %15181, align 8, !tbaa !14
  %15183 = getelementptr inbounds %struct.doublecomplex, ptr %40, i32 0, i32 1
  %15184 = load double, ptr %15183, align 8, !tbaa !14
  %15185 = fadd double %15182, %15184
  %15186 = getelementptr inbounds %struct.doublecomplex, ptr %34, i32 0, i32 1
  store double %15185, ptr %15186, align 8, !tbaa !14
  %15187 = load i32, ptr %49, align 4, !tbaa !9
  %15188 = load i32, ptr %17, align 4, !tbaa !9
  %15189 = mul nsw i32 %15188, 5
  %15190 = add nsw i32 %15187, %15189
  store i32 %15190, ptr %24, align 4, !tbaa !9
  %15191 = getelementptr inbounds %struct.doublecomplex, ptr %63, i32 0, i32 0
  %15192 = load double, ptr %15191, align 8, !tbaa !11
  %15193 = load ptr, ptr %14, align 8, !tbaa !5
  %15194 = load i32, ptr %24, align 4, !tbaa !9
  %15195 = sext i32 %15194 to i64
  %15196 = getelementptr inbounds %struct.doublecomplex, ptr %15193, i64 %15195
  %15197 = getelementptr inbounds %struct.doublecomplex, ptr %15196, i32 0, i32 0
  %15198 = load double, ptr %15197, align 8, !tbaa !11
  %15199 = getelementptr inbounds %struct.doublecomplex, ptr %63, i32 0, i32 1
  %15200 = load double, ptr %15199, align 8, !tbaa !14
  %15201 = load ptr, ptr %14, align 8, !tbaa !5
  %15202 = load i32, ptr %24, align 4, !tbaa !9
  %15203 = sext i32 %15202 to i64
  %15204 = getelementptr inbounds %struct.doublecomplex, ptr %15201, i64 %15203
  %15205 = getelementptr inbounds %struct.doublecomplex, ptr %15204, i32 0, i32 1
  %15206 = load double, ptr %15205, align 8, !tbaa !14
  %15207 = fmul double %15200, %15206
  %15208 = fneg double %15207
  %15209 = call double @llvm.fmuladd.f64(double %15192, double %15198, double %15208)
  %15210 = getelementptr inbounds %struct.doublecomplex, ptr %41, i32 0, i32 0
  store double %15209, ptr %15210, align 8, !tbaa !11
  %15211 = getelementptr inbounds %struct.doublecomplex, ptr %63, i32 0, i32 0
  %15212 = load double, ptr %15211, align 8, !tbaa !11
  %15213 = load ptr, ptr %14, align 8, !tbaa !5
  %15214 = load i32, ptr %24, align 4, !tbaa !9
  %15215 = sext i32 %15214 to i64
  %15216 = getelementptr inbounds %struct.doublecomplex, ptr %15213, i64 %15215
  %15217 = getelementptr inbounds %struct.doublecomplex, ptr %15216, i32 0, i32 1
  %15218 = load double, ptr %15217, align 8, !tbaa !14
  %15219 = getelementptr inbounds %struct.doublecomplex, ptr %63, i32 0, i32 1
  %15220 = load double, ptr %15219, align 8, !tbaa !14
  %15221 = load ptr, ptr %14, align 8, !tbaa !5
  %15222 = load i32, ptr %24, align 4, !tbaa !9
  %15223 = sext i32 %15222 to i64
  %15224 = getelementptr inbounds %struct.doublecomplex, ptr %15221, i64 %15223
  %15225 = getelementptr inbounds %struct.doublecomplex, ptr %15224, i32 0, i32 0
  %15226 = load double, ptr %15225, align 8, !tbaa !11
  %15227 = fmul double %15220, %15226
  %15228 = call double @llvm.fmuladd.f64(double %15212, double %15218, double %15227)
  %15229 = getelementptr inbounds %struct.doublecomplex, ptr %41, i32 0, i32 1
  store double %15228, ptr %15229, align 8, !tbaa !14
  %15230 = getelementptr inbounds %struct.doublecomplex, ptr %34, i32 0, i32 0
  %15231 = load double, ptr %15230, align 8, !tbaa !11
  %15232 = getelementptr inbounds %struct.doublecomplex, ptr %41, i32 0, i32 0
  %15233 = load double, ptr %15232, align 8, !tbaa !11
  %15234 = fadd double %15231, %15233
  %15235 = getelementptr inbounds %struct.doublecomplex, ptr %33, i32 0, i32 0
  store double %15234, ptr %15235, align 8, !tbaa !11
  %15236 = getelementptr inbounds %struct.doublecomplex, ptr %34, i32 0, i32 1
  %15237 = load double, ptr %15236, align 8, !tbaa !14
  %15238 = getelementptr inbounds %struct.doublecomplex, ptr %41, i32 0, i32 1
  %15239 = load double, ptr %15238, align 8, !tbaa !14
  %15240 = fadd double %15237, %15239
  %15241 = getelementptr inbounds %struct.doublecomplex, ptr %33, i32 0, i32 1
  store double %15240, ptr %15241, align 8, !tbaa !14
  %15242 = load i32, ptr %49, align 4, !tbaa !9
  %15243 = load i32, ptr %17, align 4, !tbaa !9
  %15244 = mul nsw i32 %15243, 6
  %15245 = add nsw i32 %15242, %15244
  store i32 %15245, ptr %25, align 4, !tbaa !9
  %15246 = getelementptr inbounds %struct.doublecomplex, ptr %64, i32 0, i32 0
  %15247 = load double, ptr %15246, align 8, !tbaa !11
  %15248 = load ptr, ptr %14, align 8, !tbaa !5
  %15249 = load i32, ptr %25, align 4, !tbaa !9
  %15250 = sext i32 %15249 to i64
  %15251 = getelementptr inbounds %struct.doublecomplex, ptr %15248, i64 %15250
  %15252 = getelementptr inbounds %struct.doublecomplex, ptr %15251, i32 0, i32 0
  %15253 = load double, ptr %15252, align 8, !tbaa !11
  %15254 = getelementptr inbounds %struct.doublecomplex, ptr %64, i32 0, i32 1
  %15255 = load double, ptr %15254, align 8, !tbaa !14
  %15256 = load ptr, ptr %14, align 8, !tbaa !5
  %15257 = load i32, ptr %25, align 4, !tbaa !9
  %15258 = sext i32 %15257 to i64
  %15259 = getelementptr inbounds %struct.doublecomplex, ptr %15256, i64 %15258
  %15260 = getelementptr inbounds %struct.doublecomplex, ptr %15259, i32 0, i32 1
  %15261 = load double, ptr %15260, align 8, !tbaa !14
  %15262 = fmul double %15255, %15261
  %15263 = fneg double %15262
  %15264 = call double @llvm.fmuladd.f64(double %15247, double %15253, double %15263)
  %15265 = getelementptr inbounds %struct.doublecomplex, ptr %42, i32 0, i32 0
  store double %15264, ptr %15265, align 8, !tbaa !11
  %15266 = getelementptr inbounds %struct.doublecomplex, ptr %64, i32 0, i32 0
  %15267 = load double, ptr %15266, align 8, !tbaa !11
  %15268 = load ptr, ptr %14, align 8, !tbaa !5
  %15269 = load i32, ptr %25, align 4, !tbaa !9
  %15270 = sext i32 %15269 to i64
  %15271 = getelementptr inbounds %struct.doublecomplex, ptr %15268, i64 %15270
  %15272 = getelementptr inbounds %struct.doublecomplex, ptr %15271, i32 0, i32 1
  %15273 = load double, ptr %15272, align 8, !tbaa !14
  %15274 = getelementptr inbounds %struct.doublecomplex, ptr %64, i32 0, i32 1
  %15275 = load double, ptr %15274, align 8, !tbaa !14
  %15276 = load ptr, ptr %14, align 8, !tbaa !5
  %15277 = load i32, ptr %25, align 4, !tbaa !9
  %15278 = sext i32 %15277 to i64
  %15279 = getelementptr inbounds %struct.doublecomplex, ptr %15276, i64 %15278
  %15280 = getelementptr inbounds %struct.doublecomplex, ptr %15279, i32 0, i32 0
  %15281 = load double, ptr %15280, align 8, !tbaa !11
  %15282 = fmul double %15275, %15281
  %15283 = call double @llvm.fmuladd.f64(double %15267, double %15273, double %15282)
  %15284 = getelementptr inbounds %struct.doublecomplex, ptr %42, i32 0, i32 1
  store double %15283, ptr %15284, align 8, !tbaa !14
  %15285 = getelementptr inbounds %struct.doublecomplex, ptr %33, i32 0, i32 0
  %15286 = load double, ptr %15285, align 8, !tbaa !11
  %15287 = getelementptr inbounds %struct.doublecomplex, ptr %42, i32 0, i32 0
  %15288 = load double, ptr %15287, align 8, !tbaa !11
  %15289 = fadd double %15286, %15288
  %15290 = getelementptr inbounds %struct.doublecomplex, ptr %32, i32 0, i32 0
  store double %15289, ptr %15290, align 8, !tbaa !11
  %15291 = getelementptr inbounds %struct.doublecomplex, ptr %33, i32 0, i32 1
  %15292 = load double, ptr %15291, align 8, !tbaa !14
  %15293 = getelementptr inbounds %struct.doublecomplex, ptr %42, i32 0, i32 1
  %15294 = load double, ptr %15293, align 8, !tbaa !14
  %15295 = fadd double %15292, %15294
  %15296 = getelementptr inbounds %struct.doublecomplex, ptr %32, i32 0, i32 1
  store double %15295, ptr %15296, align 8, !tbaa !14
  %15297 = load i32, ptr %49, align 4, !tbaa !9
  %15298 = load i32, ptr %17, align 4, !tbaa !9
  %15299 = mul nsw i32 %15298, 7
  %15300 = add nsw i32 %15297, %15299
  store i32 %15300, ptr %26, align 4, !tbaa !9
  %15301 = getelementptr inbounds %struct.doublecomplex, ptr %65, i32 0, i32 0
  %15302 = load double, ptr %15301, align 8, !tbaa !11
  %15303 = load ptr, ptr %14, align 8, !tbaa !5
  %15304 = load i32, ptr %26, align 4, !tbaa !9
  %15305 = sext i32 %15304 to i64
  %15306 = getelementptr inbounds %struct.doublecomplex, ptr %15303, i64 %15305
  %15307 = getelementptr inbounds %struct.doublecomplex, ptr %15306, i32 0, i32 0
  %15308 = load double, ptr %15307, align 8, !tbaa !11
  %15309 = getelementptr inbounds %struct.doublecomplex, ptr %65, i32 0, i32 1
  %15310 = load double, ptr %15309, align 8, !tbaa !14
  %15311 = load ptr, ptr %14, align 8, !tbaa !5
  %15312 = load i32, ptr %26, align 4, !tbaa !9
  %15313 = sext i32 %15312 to i64
  %15314 = getelementptr inbounds %struct.doublecomplex, ptr %15311, i64 %15313
  %15315 = getelementptr inbounds %struct.doublecomplex, ptr %15314, i32 0, i32 1
  %15316 = load double, ptr %15315, align 8, !tbaa !14
  %15317 = fmul double %15310, %15316
  %15318 = fneg double %15317
  %15319 = call double @llvm.fmuladd.f64(double %15302, double %15308, double %15318)
  %15320 = getelementptr inbounds %struct.doublecomplex, ptr %43, i32 0, i32 0
  store double %15319, ptr %15320, align 8, !tbaa !11
  %15321 = getelementptr inbounds %struct.doublecomplex, ptr %65, i32 0, i32 0
  %15322 = load double, ptr %15321, align 8, !tbaa !11
  %15323 = load ptr, ptr %14, align 8, !tbaa !5
  %15324 = load i32, ptr %26, align 4, !tbaa !9
  %15325 = sext i32 %15324 to i64
  %15326 = getelementptr inbounds %struct.doublecomplex, ptr %15323, i64 %15325
  %15327 = getelementptr inbounds %struct.doublecomplex, ptr %15326, i32 0, i32 1
  %15328 = load double, ptr %15327, align 8, !tbaa !14
  %15329 = getelementptr inbounds %struct.doublecomplex, ptr %65, i32 0, i32 1
  %15330 = load double, ptr %15329, align 8, !tbaa !14
  %15331 = load ptr, ptr %14, align 8, !tbaa !5
  %15332 = load i32, ptr %26, align 4, !tbaa !9
  %15333 = sext i32 %15332 to i64
  %15334 = getelementptr inbounds %struct.doublecomplex, ptr %15331, i64 %15333
  %15335 = getelementptr inbounds %struct.doublecomplex, ptr %15334, i32 0, i32 0
  %15336 = load double, ptr %15335, align 8, !tbaa !11
  %15337 = fmul double %15330, %15336
  %15338 = call double @llvm.fmuladd.f64(double %15322, double %15328, double %15337)
  %15339 = getelementptr inbounds %struct.doublecomplex, ptr %43, i32 0, i32 1
  store double %15338, ptr %15339, align 8, !tbaa !14
  %15340 = getelementptr inbounds %struct.doublecomplex, ptr %32, i32 0, i32 0
  %15341 = load double, ptr %15340, align 8, !tbaa !11
  %15342 = getelementptr inbounds %struct.doublecomplex, ptr %43, i32 0, i32 0
  %15343 = load double, ptr %15342, align 8, !tbaa !11
  %15344 = fadd double %15341, %15343
  %15345 = getelementptr inbounds %struct.doublecomplex, ptr %31, i32 0, i32 0
  store double %15344, ptr %15345, align 8, !tbaa !11
  %15346 = getelementptr inbounds %struct.doublecomplex, ptr %32, i32 0, i32 1
  %15347 = load double, ptr %15346, align 8, !tbaa !14
  %15348 = getelementptr inbounds %struct.doublecomplex, ptr %43, i32 0, i32 1
  %15349 = load double, ptr %15348, align 8, !tbaa !14
  %15350 = fadd double %15347, %15349
  %15351 = getelementptr inbounds %struct.doublecomplex, ptr %31, i32 0, i32 1
  store double %15350, ptr %15351, align 8, !tbaa !14
  %15352 = load i32, ptr %49, align 4, !tbaa !9
  %15353 = load i32, ptr %17, align 4, !tbaa !9
  %15354 = shl i32 %15353, 3
  %15355 = add nsw i32 %15352, %15354
  store i32 %15355, ptr %27, align 4, !tbaa !9
  %15356 = getelementptr inbounds %struct.doublecomplex, ptr %66, i32 0, i32 0
  %15357 = load double, ptr %15356, align 8, !tbaa !11
  %15358 = load ptr, ptr %14, align 8, !tbaa !5
  %15359 = load i32, ptr %27, align 4, !tbaa !9
  %15360 = sext i32 %15359 to i64
  %15361 = getelementptr inbounds %struct.doublecomplex, ptr %15358, i64 %15360
  %15362 = getelementptr inbounds %struct.doublecomplex, ptr %15361, i32 0, i32 0
  %15363 = load double, ptr %15362, align 8, !tbaa !11
  %15364 = getelementptr inbounds %struct.doublecomplex, ptr %66, i32 0, i32 1
  %15365 = load double, ptr %15364, align 8, !tbaa !14
  %15366 = load ptr, ptr %14, align 8, !tbaa !5
  %15367 = load i32, ptr %27, align 4, !tbaa !9
  %15368 = sext i32 %15367 to i64
  %15369 = getelementptr inbounds %struct.doublecomplex, ptr %15366, i64 %15368
  %15370 = getelementptr inbounds %struct.doublecomplex, ptr %15369, i32 0, i32 1
  %15371 = load double, ptr %15370, align 8, !tbaa !14
  %15372 = fmul double %15365, %15371
  %15373 = fneg double %15372
  %15374 = call double @llvm.fmuladd.f64(double %15357, double %15363, double %15373)
  %15375 = getelementptr inbounds %struct.doublecomplex, ptr %44, i32 0, i32 0
  store double %15374, ptr %15375, align 8, !tbaa !11
  %15376 = getelementptr inbounds %struct.doublecomplex, ptr %66, i32 0, i32 0
  %15377 = load double, ptr %15376, align 8, !tbaa !11
  %15378 = load ptr, ptr %14, align 8, !tbaa !5
  %15379 = load i32, ptr %27, align 4, !tbaa !9
  %15380 = sext i32 %15379 to i64
  %15381 = getelementptr inbounds %struct.doublecomplex, ptr %15378, i64 %15380
  %15382 = getelementptr inbounds %struct.doublecomplex, ptr %15381, i32 0, i32 1
  %15383 = load double, ptr %15382, align 8, !tbaa !14
  %15384 = getelementptr inbounds %struct.doublecomplex, ptr %66, i32 0, i32 1
  %15385 = load double, ptr %15384, align 8, !tbaa !14
  %15386 = load ptr, ptr %14, align 8, !tbaa !5
  %15387 = load i32, ptr %27, align 4, !tbaa !9
  %15388 = sext i32 %15387 to i64
  %15389 = getelementptr inbounds %struct.doublecomplex, ptr %15386, i64 %15388
  %15390 = getelementptr inbounds %struct.doublecomplex, ptr %15389, i32 0, i32 0
  %15391 = load double, ptr %15390, align 8, !tbaa !11
  %15392 = fmul double %15385, %15391
  %15393 = call double @llvm.fmuladd.f64(double %15377, double %15383, double %15392)
  %15394 = getelementptr inbounds %struct.doublecomplex, ptr %44, i32 0, i32 1
  store double %15393, ptr %15394, align 8, !tbaa !14
  %15395 = getelementptr inbounds %struct.doublecomplex, ptr %31, i32 0, i32 0
  %15396 = load double, ptr %15395, align 8, !tbaa !11
  %15397 = getelementptr inbounds %struct.doublecomplex, ptr %44, i32 0, i32 0
  %15398 = load double, ptr %15397, align 8, !tbaa !11
  %15399 = fadd double %15396, %15398
  %15400 = getelementptr inbounds %struct.doublecomplex, ptr %30, i32 0, i32 0
  store double %15399, ptr %15400, align 8, !tbaa !11
  %15401 = getelementptr inbounds %struct.doublecomplex, ptr %31, i32 0, i32 1
  %15402 = load double, ptr %15401, align 8, !tbaa !14
  %15403 = getelementptr inbounds %struct.doublecomplex, ptr %44, i32 0, i32 1
  %15404 = load double, ptr %15403, align 8, !tbaa !14
  %15405 = fadd double %15402, %15404
  %15406 = getelementptr inbounds %struct.doublecomplex, ptr %30, i32 0, i32 1
  store double %15405, ptr %15406, align 8, !tbaa !14
  %15407 = getelementptr inbounds %struct.doublecomplex, ptr %30, i32 0, i32 0
  %15408 = load double, ptr %15407, align 8, !tbaa !11
  %15409 = getelementptr inbounds %struct.doublecomplex, ptr %70, i32 0, i32 0
  store double %15408, ptr %15409, align 8, !tbaa !11
  %15410 = getelementptr inbounds %struct.doublecomplex, ptr %30, i32 0, i32 1
  %15411 = load double, ptr %15410, align 8, !tbaa !14
  %15412 = getelementptr inbounds %struct.doublecomplex, ptr %70, i32 0, i32 1
  store double %15411, ptr %15412, align 8, !tbaa !14
  %15413 = load i32, ptr %49, align 4, !tbaa !9
  %15414 = load i32, ptr %17, align 4, !tbaa !9
  %15415 = add nsw i32 %15413, %15414
  store i32 %15415, ptr %20, align 4, !tbaa !9
  %15416 = load i32, ptr %49, align 4, !tbaa !9
  %15417 = load i32, ptr %17, align 4, !tbaa !9
  %15418 = add nsw i32 %15416, %15417
  store i32 %15418, ptr %21, align 4, !tbaa !9
  %15419 = getelementptr inbounds %struct.doublecomplex, ptr %70, i32 0, i32 0
  %15420 = load double, ptr %15419, align 8, !tbaa !11
  %15421 = getelementptr inbounds %struct.doublecomplex, ptr %50, i32 0, i32 0
  %15422 = load double, ptr %15421, align 8, !tbaa !11
  %15423 = getelementptr inbounds %struct.doublecomplex, ptr %70, i32 0, i32 1
  %15424 = load double, ptr %15423, align 8, !tbaa !14
  %15425 = getelementptr inbounds %struct.doublecomplex, ptr %50, i32 0, i32 1
  %15426 = load double, ptr %15425, align 8, !tbaa !14
  %15427 = fmul double %15424, %15426
  %15428 = fneg double %15427
  %15429 = call double @llvm.fmuladd.f64(double %15420, double %15422, double %15428)
  %15430 = getelementptr inbounds %struct.doublecomplex, ptr %31, i32 0, i32 0
  store double %15429, ptr %15430, align 8, !tbaa !11
  %15431 = getelementptr inbounds %struct.doublecomplex, ptr %70, i32 0, i32 0
  %15432 = load double, ptr %15431, align 8, !tbaa !11
  %15433 = getelementptr inbounds %struct.doublecomplex, ptr %50, i32 0, i32 1
  %15434 = load double, ptr %15433, align 8, !tbaa !14
  %15435 = getelementptr inbounds %struct.doublecomplex, ptr %70, i32 0, i32 1
  %15436 = load double, ptr %15435, align 8, !tbaa !14
  %15437 = getelementptr inbounds %struct.doublecomplex, ptr %50, i32 0, i32 0
  %15438 = load double, ptr %15437, align 8, !tbaa !11
  %15439 = fmul double %15436, %15438
  %15440 = call double @llvm.fmuladd.f64(double %15432, double %15434, double %15439)
  %15441 = getelementptr inbounds %struct.doublecomplex, ptr %31, i32 0, i32 1
  store double %15440, ptr %15441, align 8, !tbaa !14
  %15442 = load ptr, ptr %14, align 8, !tbaa !5
  %15443 = load i32, ptr %21, align 4, !tbaa !9
  %15444 = sext i32 %15443 to i64
  %15445 = getelementptr inbounds %struct.doublecomplex, ptr %15442, i64 %15444
  %15446 = getelementptr inbounds %struct.doublecomplex, ptr %15445, i32 0, i32 0
  %15447 = load double, ptr %15446, align 8, !tbaa !11
  %15448 = getelementptr inbounds %struct.doublecomplex, ptr %31, i32 0, i32 0
  %15449 = load double, ptr %15448, align 8, !tbaa !11
  %15450 = fsub double %15447, %15449
  %15451 = getelementptr inbounds %struct.doublecomplex, ptr %30, i32 0, i32 0
  store double %15450, ptr %15451, align 8, !tbaa !11
  %15452 = load ptr, ptr %14, align 8, !tbaa !5
  %15453 = load i32, ptr %21, align 4, !tbaa !9
  %15454 = sext i32 %15453 to i64
  %15455 = getelementptr inbounds %struct.doublecomplex, ptr %15452, i64 %15454
  %15456 = getelementptr inbounds %struct.doublecomplex, ptr %15455, i32 0, i32 1
  %15457 = load double, ptr %15456, align 8, !tbaa !14
  %15458 = getelementptr inbounds %struct.doublecomplex, ptr %31, i32 0, i32 1
  %15459 = load double, ptr %15458, align 8, !tbaa !14
  %15460 = fsub double %15457, %15459
  %15461 = getelementptr inbounds %struct.doublecomplex, ptr %30, i32 0, i32 1
  store double %15460, ptr %15461, align 8, !tbaa !14
  %15462 = getelementptr inbounds %struct.doublecomplex, ptr %30, i32 0, i32 0
  %15463 = load double, ptr %15462, align 8, !tbaa !11
  %15464 = load ptr, ptr %14, align 8, !tbaa !5
  %15465 = load i32, ptr %20, align 4, !tbaa !9
  %15466 = sext i32 %15465 to i64
  %15467 = getelementptr inbounds %struct.doublecomplex, ptr %15464, i64 %15466
  %15468 = getelementptr inbounds %struct.doublecomplex, ptr %15467, i32 0, i32 0
  store double %15463, ptr %15468, align 8, !tbaa !11
  %15469 = getelementptr inbounds %struct.doublecomplex, ptr %30, i32 0, i32 1
  %15470 = load double, ptr %15469, align 8, !tbaa !14
  %15471 = load ptr, ptr %14, align 8, !tbaa !5
  %15472 = load i32, ptr %20, align 4, !tbaa !9
  %15473 = sext i32 %15472 to i64
  %15474 = getelementptr inbounds %struct.doublecomplex, ptr %15471, i64 %15473
  %15475 = getelementptr inbounds %struct.doublecomplex, ptr %15474, i32 0, i32 1
  store double %15470, ptr %15475, align 8, !tbaa !14
  %15476 = load i32, ptr %49, align 4, !tbaa !9
  %15477 = load i32, ptr %17, align 4, !tbaa !9
  %15478 = shl i32 %15477, 1
  %15479 = add nsw i32 %15476, %15478
  store i32 %15479, ptr %20, align 4, !tbaa !9
  %15480 = load i32, ptr %49, align 4, !tbaa !9
  %15481 = load i32, ptr %17, align 4, !tbaa !9
  %15482 = shl i32 %15481, 1
  %15483 = add nsw i32 %15480, %15482
  store i32 %15483, ptr %21, align 4, !tbaa !9
  %15484 = getelementptr inbounds %struct.doublecomplex, ptr %70, i32 0, i32 0
  %15485 = load double, ptr %15484, align 8, !tbaa !11
  %15486 = getelementptr inbounds %struct.doublecomplex, ptr %51, i32 0, i32 0
  %15487 = load double, ptr %15486, align 8, !tbaa !11
  %15488 = getelementptr inbounds %struct.doublecomplex, ptr %70, i32 0, i32 1
  %15489 = load double, ptr %15488, align 8, !tbaa !14
  %15490 = getelementptr inbounds %struct.doublecomplex, ptr %51, i32 0, i32 1
  %15491 = load double, ptr %15490, align 8, !tbaa !14
  %15492 = fmul double %15489, %15491
  %15493 = fneg double %15492
  %15494 = call double @llvm.fmuladd.f64(double %15485, double %15487, double %15493)
  %15495 = getelementptr inbounds %struct.doublecomplex, ptr %31, i32 0, i32 0
  store double %15494, ptr %15495, align 8, !tbaa !11
  %15496 = getelementptr inbounds %struct.doublecomplex, ptr %70, i32 0, i32 0
  %15497 = load double, ptr %15496, align 8, !tbaa !11
  %15498 = getelementptr inbounds %struct.doublecomplex, ptr %51, i32 0, i32 1
  %15499 = load double, ptr %15498, align 8, !tbaa !14
  %15500 = getelementptr inbounds %struct.doublecomplex, ptr %70, i32 0, i32 1
  %15501 = load double, ptr %15500, align 8, !tbaa !14
  %15502 = getelementptr inbounds %struct.doublecomplex, ptr %51, i32 0, i32 0
  %15503 = load double, ptr %15502, align 8, !tbaa !11
  %15504 = fmul double %15501, %15503
  %15505 = call double @llvm.fmuladd.f64(double %15497, double %15499, double %15504)
  %15506 = getelementptr inbounds %struct.doublecomplex, ptr %31, i32 0, i32 1
  store double %15505, ptr %15506, align 8, !tbaa !14
  %15507 = load ptr, ptr %14, align 8, !tbaa !5
  %15508 = load i32, ptr %21, align 4, !tbaa !9
  %15509 = sext i32 %15508 to i64
  %15510 = getelementptr inbounds %struct.doublecomplex, ptr %15507, i64 %15509
  %15511 = getelementptr inbounds %struct.doublecomplex, ptr %15510, i32 0, i32 0
  %15512 = load double, ptr %15511, align 8, !tbaa !11
  %15513 = getelementptr inbounds %struct.doublecomplex, ptr %31, i32 0, i32 0
  %15514 = load double, ptr %15513, align 8, !tbaa !11
  %15515 = fsub double %15512, %15514
  %15516 = getelementptr inbounds %struct.doublecomplex, ptr %30, i32 0, i32 0
  store double %15515, ptr %15516, align 8, !tbaa !11
  %15517 = load ptr, ptr %14, align 8, !tbaa !5
  %15518 = load i32, ptr %21, align 4, !tbaa !9
  %15519 = sext i32 %15518 to i64
  %15520 = getelementptr inbounds %struct.doublecomplex, ptr %15517, i64 %15519
  %15521 = getelementptr inbounds %struct.doublecomplex, ptr %15520, i32 0, i32 1
  %15522 = load double, ptr %15521, align 8, !tbaa !14
  %15523 = getelementptr inbounds %struct.doublecomplex, ptr %31, i32 0, i32 1
  %15524 = load double, ptr %15523, align 8, !tbaa !14
  %15525 = fsub double %15522, %15524
  %15526 = getelementptr inbounds %struct.doublecomplex, ptr %30, i32 0, i32 1
  store double %15525, ptr %15526, align 8, !tbaa !14
  %15527 = getelementptr inbounds %struct.doublecomplex, ptr %30, i32 0, i32 0
  %15528 = load double, ptr %15527, align 8, !tbaa !11
  %15529 = load ptr, ptr %14, align 8, !tbaa !5
  %15530 = load i32, ptr %20, align 4, !tbaa !9
  %15531 = sext i32 %15530 to i64
  %15532 = getelementptr inbounds %struct.doublecomplex, ptr %15529, i64 %15531
  %15533 = getelementptr inbounds %struct.doublecomplex, ptr %15532, i32 0, i32 0
  store double %15528, ptr %15533, align 8, !tbaa !11
  %15534 = getelementptr inbounds %struct.doublecomplex, ptr %30, i32 0, i32 1
  %15535 = load double, ptr %15534, align 8, !tbaa !14
  %15536 = load ptr, ptr %14, align 8, !tbaa !5
  %15537 = load i32, ptr %20, align 4, !tbaa !9
  %15538 = sext i32 %15537 to i64
  %15539 = getelementptr inbounds %struct.doublecomplex, ptr %15536, i64 %15538
  %15540 = getelementptr inbounds %struct.doublecomplex, ptr %15539, i32 0, i32 1
  store double %15535, ptr %15540, align 8, !tbaa !14
  %15541 = load i32, ptr %49, align 4, !tbaa !9
  %15542 = load i32, ptr %17, align 4, !tbaa !9
  %15543 = mul nsw i32 %15542, 3
  %15544 = add nsw i32 %15541, %15543
  store i32 %15544, ptr %20, align 4, !tbaa !9
  %15545 = load i32, ptr %49, align 4, !tbaa !9
  %15546 = load i32, ptr %17, align 4, !tbaa !9
  %15547 = mul nsw i32 %15546, 3
  %15548 = add nsw i32 %15545, %15547
  store i32 %15548, ptr %21, align 4, !tbaa !9
  %15549 = getelementptr inbounds %struct.doublecomplex, ptr %70, i32 0, i32 0
  %15550 = load double, ptr %15549, align 8, !tbaa !11
  %15551 = getelementptr inbounds %struct.doublecomplex, ptr %52, i32 0, i32 0
  %15552 = load double, ptr %15551, align 8, !tbaa !11
  %15553 = getelementptr inbounds %struct.doublecomplex, ptr %70, i32 0, i32 1
  %15554 = load double, ptr %15553, align 8, !tbaa !14
  %15555 = getelementptr inbounds %struct.doublecomplex, ptr %52, i32 0, i32 1
  %15556 = load double, ptr %15555, align 8, !tbaa !14
  %15557 = fmul double %15554, %15556
  %15558 = fneg double %15557
  %15559 = call double @llvm.fmuladd.f64(double %15550, double %15552, double %15558)
  %15560 = getelementptr inbounds %struct.doublecomplex, ptr %31, i32 0, i32 0
  store double %15559, ptr %15560, align 8, !tbaa !11
  %15561 = getelementptr inbounds %struct.doublecomplex, ptr %70, i32 0, i32 0
  %15562 = load double, ptr %15561, align 8, !tbaa !11
  %15563 = getelementptr inbounds %struct.doublecomplex, ptr %52, i32 0, i32 1
  %15564 = load double, ptr %15563, align 8, !tbaa !14
  %15565 = getelementptr inbounds %struct.doublecomplex, ptr %70, i32 0, i32 1
  %15566 = load double, ptr %15565, align 8, !tbaa !14
  %15567 = getelementptr inbounds %struct.doublecomplex, ptr %52, i32 0, i32 0
  %15568 = load double, ptr %15567, align 8, !tbaa !11
  %15569 = fmul double %15566, %15568
  %15570 = call double @llvm.fmuladd.f64(double %15562, double %15564, double %15569)
  %15571 = getelementptr inbounds %struct.doublecomplex, ptr %31, i32 0, i32 1
  store double %15570, ptr %15571, align 8, !tbaa !14
  %15572 = load ptr, ptr %14, align 8, !tbaa !5
  %15573 = load i32, ptr %21, align 4, !tbaa !9
  %15574 = sext i32 %15573 to i64
  %15575 = getelementptr inbounds %struct.doublecomplex, ptr %15572, i64 %15574
  %15576 = getelementptr inbounds %struct.doublecomplex, ptr %15575, i32 0, i32 0
  %15577 = load double, ptr %15576, align 8, !tbaa !11
  %15578 = getelementptr inbounds %struct.doublecomplex, ptr %31, i32 0, i32 0
  %15579 = load double, ptr %15578, align 8, !tbaa !11
  %15580 = fsub double %15577, %15579
  %15581 = getelementptr inbounds %struct.doublecomplex, ptr %30, i32 0, i32 0
  store double %15580, ptr %15581, align 8, !tbaa !11
  %15582 = load ptr, ptr %14, align 8, !tbaa !5
  %15583 = load i32, ptr %21, align 4, !tbaa !9
  %15584 = sext i32 %15583 to i64
  %15585 = getelementptr inbounds %struct.doublecomplex, ptr %15582, i64 %15584
  %15586 = getelementptr inbounds %struct.doublecomplex, ptr %15585, i32 0, i32 1
  %15587 = load double, ptr %15586, align 8, !tbaa !14
  %15588 = getelementptr inbounds %struct.doublecomplex, ptr %31, i32 0, i32 1
  %15589 = load double, ptr %15588, align 8, !tbaa !14
  %15590 = fsub double %15587, %15589
  %15591 = getelementptr inbounds %struct.doublecomplex, ptr %30, i32 0, i32 1
  store double %15590, ptr %15591, align 8, !tbaa !14
  %15592 = getelementptr inbounds %struct.doublecomplex, ptr %30, i32 0, i32 0
  %15593 = load double, ptr %15592, align 8, !tbaa !11
  %15594 = load ptr, ptr %14, align 8, !tbaa !5
  %15595 = load i32, ptr %20, align 4, !tbaa !9
  %15596 = sext i32 %15595 to i64
  %15597 = getelementptr inbounds %struct.doublecomplex, ptr %15594, i64 %15596
  %15598 = getelementptr inbounds %struct.doublecomplex, ptr %15597, i32 0, i32 0
  store double %15593, ptr %15598, align 8, !tbaa !11
  %15599 = getelementptr inbounds %struct.doublecomplex, ptr %30, i32 0, i32 1
  %15600 = load double, ptr %15599, align 8, !tbaa !14
  %15601 = load ptr, ptr %14, align 8, !tbaa !5
  %15602 = load i32, ptr %20, align 4, !tbaa !9
  %15603 = sext i32 %15602 to i64
  %15604 = getelementptr inbounds %struct.doublecomplex, ptr %15601, i64 %15603
  %15605 = getelementptr inbounds %struct.doublecomplex, ptr %15604, i32 0, i32 1
  store double %15600, ptr %15605, align 8, !tbaa !14
  %15606 = load i32, ptr %49, align 4, !tbaa !9
  %15607 = load i32, ptr %17, align 4, !tbaa !9
  %15608 = shl i32 %15607, 2
  %15609 = add nsw i32 %15606, %15608
  store i32 %15609, ptr %20, align 4, !tbaa !9
  %15610 = load i32, ptr %49, align 4, !tbaa !9
  %15611 = load i32, ptr %17, align 4, !tbaa !9
  %15612 = shl i32 %15611, 2
  %15613 = add nsw i32 %15610, %15612
  store i32 %15613, ptr %21, align 4, !tbaa !9
  %15614 = getelementptr inbounds %struct.doublecomplex, ptr %70, i32 0, i32 0
  %15615 = load double, ptr %15614, align 8, !tbaa !11
  %15616 = getelementptr inbounds %struct.doublecomplex, ptr %53, i32 0, i32 0
  %15617 = load double, ptr %15616, align 8, !tbaa !11
  %15618 = getelementptr inbounds %struct.doublecomplex, ptr %70, i32 0, i32 1
  %15619 = load double, ptr %15618, align 8, !tbaa !14
  %15620 = getelementptr inbounds %struct.doublecomplex, ptr %53, i32 0, i32 1
  %15621 = load double, ptr %15620, align 8, !tbaa !14
  %15622 = fmul double %15619, %15621
  %15623 = fneg double %15622
  %15624 = call double @llvm.fmuladd.f64(double %15615, double %15617, double %15623)
  %15625 = getelementptr inbounds %struct.doublecomplex, ptr %31, i32 0, i32 0
  store double %15624, ptr %15625, align 8, !tbaa !11
  %15626 = getelementptr inbounds %struct.doublecomplex, ptr %70, i32 0, i32 0
  %15627 = load double, ptr %15626, align 8, !tbaa !11
  %15628 = getelementptr inbounds %struct.doublecomplex, ptr %53, i32 0, i32 1
  %15629 = load double, ptr %15628, align 8, !tbaa !14
  %15630 = getelementptr inbounds %struct.doublecomplex, ptr %70, i32 0, i32 1
  %15631 = load double, ptr %15630, align 8, !tbaa !14
  %15632 = getelementptr inbounds %struct.doublecomplex, ptr %53, i32 0, i32 0
  %15633 = load double, ptr %15632, align 8, !tbaa !11
  %15634 = fmul double %15631, %15633
  %15635 = call double @llvm.fmuladd.f64(double %15627, double %15629, double %15634)
  %15636 = getelementptr inbounds %struct.doublecomplex, ptr %31, i32 0, i32 1
  store double %15635, ptr %15636, align 8, !tbaa !14
  %15637 = load ptr, ptr %14, align 8, !tbaa !5
  %15638 = load i32, ptr %21, align 4, !tbaa !9
  %15639 = sext i32 %15638 to i64
  %15640 = getelementptr inbounds %struct.doublecomplex, ptr %15637, i64 %15639
  %15641 = getelementptr inbounds %struct.doublecomplex, ptr %15640, i32 0, i32 0
  %15642 = load double, ptr %15641, align 8, !tbaa !11
  %15643 = getelementptr inbounds %struct.doublecomplex, ptr %31, i32 0, i32 0
  %15644 = load double, ptr %15643, align 8, !tbaa !11
  %15645 = fsub double %15642, %15644
  %15646 = getelementptr inbounds %struct.doublecomplex, ptr %30, i32 0, i32 0
  store double %15645, ptr %15646, align 8, !tbaa !11
  %15647 = load ptr, ptr %14, align 8, !tbaa !5
  %15648 = load i32, ptr %21, align 4, !tbaa !9
  %15649 = sext i32 %15648 to i64
  %15650 = getelementptr inbounds %struct.doublecomplex, ptr %15647, i64 %15649
  %15651 = getelementptr inbounds %struct.doublecomplex, ptr %15650, i32 0, i32 1
  %15652 = load double, ptr %15651, align 8, !tbaa !14
  %15653 = getelementptr inbounds %struct.doublecomplex, ptr %31, i32 0, i32 1
  %15654 = load double, ptr %15653, align 8, !tbaa !14
  %15655 = fsub double %15652, %15654
  %15656 = getelementptr inbounds %struct.doublecomplex, ptr %30, i32 0, i32 1
  store double %15655, ptr %15656, align 8, !tbaa !14
  %15657 = getelementptr inbounds %struct.doublecomplex, ptr %30, i32 0, i32 0
  %15658 = load double, ptr %15657, align 8, !tbaa !11
  %15659 = load ptr, ptr %14, align 8, !tbaa !5
  %15660 = load i32, ptr %20, align 4, !tbaa !9
  %15661 = sext i32 %15660 to i64
  %15662 = getelementptr inbounds %struct.doublecomplex, ptr %15659, i64 %15661
  %15663 = getelementptr inbounds %struct.doublecomplex, ptr %15662, i32 0, i32 0
  store double %15658, ptr %15663, align 8, !tbaa !11
  %15664 = getelementptr inbounds %struct.doublecomplex, ptr %30, i32 0, i32 1
  %15665 = load double, ptr %15664, align 8, !tbaa !14
  %15666 = load ptr, ptr %14, align 8, !tbaa !5
  %15667 = load i32, ptr %20, align 4, !tbaa !9
  %15668 = sext i32 %15667 to i64
  %15669 = getelementptr inbounds %struct.doublecomplex, ptr %15666, i64 %15668
  %15670 = getelementptr inbounds %struct.doublecomplex, ptr %15669, i32 0, i32 1
  store double %15665, ptr %15670, align 8, !tbaa !14
  %15671 = load i32, ptr %49, align 4, !tbaa !9
  %15672 = load i32, ptr %17, align 4, !tbaa !9
  %15673 = mul nsw i32 %15672, 5
  %15674 = add nsw i32 %15671, %15673
  store i32 %15674, ptr %20, align 4, !tbaa !9
  %15675 = load i32, ptr %49, align 4, !tbaa !9
  %15676 = load i32, ptr %17, align 4, !tbaa !9
  %15677 = mul nsw i32 %15676, 5
  %15678 = add nsw i32 %15675, %15677
  store i32 %15678, ptr %21, align 4, !tbaa !9
  %15679 = getelementptr inbounds %struct.doublecomplex, ptr %70, i32 0, i32 0
  %15680 = load double, ptr %15679, align 8, !tbaa !11
  %15681 = getelementptr inbounds %struct.doublecomplex, ptr %54, i32 0, i32 0
  %15682 = load double, ptr %15681, align 8, !tbaa !11
  %15683 = getelementptr inbounds %struct.doublecomplex, ptr %70, i32 0, i32 1
  %15684 = load double, ptr %15683, align 8, !tbaa !14
  %15685 = getelementptr inbounds %struct.doublecomplex, ptr %54, i32 0, i32 1
  %15686 = load double, ptr %15685, align 8, !tbaa !14
  %15687 = fmul double %15684, %15686
  %15688 = fneg double %15687
  %15689 = call double @llvm.fmuladd.f64(double %15680, double %15682, double %15688)
  %15690 = getelementptr inbounds %struct.doublecomplex, ptr %31, i32 0, i32 0
  store double %15689, ptr %15690, align 8, !tbaa !11
  %15691 = getelementptr inbounds %struct.doublecomplex, ptr %70, i32 0, i32 0
  %15692 = load double, ptr %15691, align 8, !tbaa !11
  %15693 = getelementptr inbounds %struct.doublecomplex, ptr %54, i32 0, i32 1
  %15694 = load double, ptr %15693, align 8, !tbaa !14
  %15695 = getelementptr inbounds %struct.doublecomplex, ptr %70, i32 0, i32 1
  %15696 = load double, ptr %15695, align 8, !tbaa !14
  %15697 = getelementptr inbounds %struct.doublecomplex, ptr %54, i32 0, i32 0
  %15698 = load double, ptr %15697, align 8, !tbaa !11
  %15699 = fmul double %15696, %15698
  %15700 = call double @llvm.fmuladd.f64(double %15692, double %15694, double %15699)
  %15701 = getelementptr inbounds %struct.doublecomplex, ptr %31, i32 0, i32 1
  store double %15700, ptr %15701, align 8, !tbaa !14
  %15702 = load ptr, ptr %14, align 8, !tbaa !5
  %15703 = load i32, ptr %21, align 4, !tbaa !9
  %15704 = sext i32 %15703 to i64
  %15705 = getelementptr inbounds %struct.doublecomplex, ptr %15702, i64 %15704
  %15706 = getelementptr inbounds %struct.doublecomplex, ptr %15705, i32 0, i32 0
  %15707 = load double, ptr %15706, align 8, !tbaa !11
  %15708 = getelementptr inbounds %struct.doublecomplex, ptr %31, i32 0, i32 0
  %15709 = load double, ptr %15708, align 8, !tbaa !11
  %15710 = fsub double %15707, %15709
  %15711 = getelementptr inbounds %struct.doublecomplex, ptr %30, i32 0, i32 0
  store double %15710, ptr %15711, align 8, !tbaa !11
  %15712 = load ptr, ptr %14, align 8, !tbaa !5
  %15713 = load i32, ptr %21, align 4, !tbaa !9
  %15714 = sext i32 %15713 to i64
  %15715 = getelementptr inbounds %struct.doublecomplex, ptr %15712, i64 %15714
  %15716 = getelementptr inbounds %struct.doublecomplex, ptr %15715, i32 0, i32 1
  %15717 = load double, ptr %15716, align 8, !tbaa !14
  %15718 = getelementptr inbounds %struct.doublecomplex, ptr %31, i32 0, i32 1
  %15719 = load double, ptr %15718, align 8, !tbaa !14
  %15720 = fsub double %15717, %15719
  %15721 = getelementptr inbounds %struct.doublecomplex, ptr %30, i32 0, i32 1
  store double %15720, ptr %15721, align 8, !tbaa !14
  %15722 = getelementptr inbounds %struct.doublecomplex, ptr %30, i32 0, i32 0
  %15723 = load double, ptr %15722, align 8, !tbaa !11
  %15724 = load ptr, ptr %14, align 8, !tbaa !5
  %15725 = load i32, ptr %20, align 4, !tbaa !9
  %15726 = sext i32 %15725 to i64
  %15727 = getelementptr inbounds %struct.doublecomplex, ptr %15724, i64 %15726
  %15728 = getelementptr inbounds %struct.doublecomplex, ptr %15727, i32 0, i32 0
  store double %15723, ptr %15728, align 8, !tbaa !11
  %15729 = getelementptr inbounds %struct.doublecomplex, ptr %30, i32 0, i32 1
  %15730 = load double, ptr %15729, align 8, !tbaa !14
  %15731 = load ptr, ptr %14, align 8, !tbaa !5
  %15732 = load i32, ptr %20, align 4, !tbaa !9
  %15733 = sext i32 %15732 to i64
  %15734 = getelementptr inbounds %struct.doublecomplex, ptr %15731, i64 %15733
  %15735 = getelementptr inbounds %struct.doublecomplex, ptr %15734, i32 0, i32 1
  store double %15730, ptr %15735, align 8, !tbaa !14
  %15736 = load i32, ptr %49, align 4, !tbaa !9
  %15737 = load i32, ptr %17, align 4, !tbaa !9
  %15738 = mul nsw i32 %15737, 6
  %15739 = add nsw i32 %15736, %15738
  store i32 %15739, ptr %20, align 4, !tbaa !9
  %15740 = load i32, ptr %49, align 4, !tbaa !9
  %15741 = load i32, ptr %17, align 4, !tbaa !9
  %15742 = mul nsw i32 %15741, 6
  %15743 = add nsw i32 %15740, %15742
  store i32 %15743, ptr %21, align 4, !tbaa !9
  %15744 = getelementptr inbounds %struct.doublecomplex, ptr %70, i32 0, i32 0
  %15745 = load double, ptr %15744, align 8, !tbaa !11
  %15746 = getelementptr inbounds %struct.doublecomplex, ptr %55, i32 0, i32 0
  %15747 = load double, ptr %15746, align 8, !tbaa !11
  %15748 = getelementptr inbounds %struct.doublecomplex, ptr %70, i32 0, i32 1
  %15749 = load double, ptr %15748, align 8, !tbaa !14
  %15750 = getelementptr inbounds %struct.doublecomplex, ptr %55, i32 0, i32 1
  %15751 = load double, ptr %15750, align 8, !tbaa !14
  %15752 = fmul double %15749, %15751
  %15753 = fneg double %15752
  %15754 = call double @llvm.fmuladd.f64(double %15745, double %15747, double %15753)
  %15755 = getelementptr inbounds %struct.doublecomplex, ptr %31, i32 0, i32 0
  store double %15754, ptr %15755, align 8, !tbaa !11
  %15756 = getelementptr inbounds %struct.doublecomplex, ptr %70, i32 0, i32 0
  %15757 = load double, ptr %15756, align 8, !tbaa !11
  %15758 = getelementptr inbounds %struct.doublecomplex, ptr %55, i32 0, i32 1
  %15759 = load double, ptr %15758, align 8, !tbaa !14
  %15760 = getelementptr inbounds %struct.doublecomplex, ptr %70, i32 0, i32 1
  %15761 = load double, ptr %15760, align 8, !tbaa !14
  %15762 = getelementptr inbounds %struct.doublecomplex, ptr %55, i32 0, i32 0
  %15763 = load double, ptr %15762, align 8, !tbaa !11
  %15764 = fmul double %15761, %15763
  %15765 = call double @llvm.fmuladd.f64(double %15757, double %15759, double %15764)
  %15766 = getelementptr inbounds %struct.doublecomplex, ptr %31, i32 0, i32 1
  store double %15765, ptr %15766, align 8, !tbaa !14
  %15767 = load ptr, ptr %14, align 8, !tbaa !5
  %15768 = load i32, ptr %21, align 4, !tbaa !9
  %15769 = sext i32 %15768 to i64
  %15770 = getelementptr inbounds %struct.doublecomplex, ptr %15767, i64 %15769
  %15771 = getelementptr inbounds %struct.doublecomplex, ptr %15770, i32 0, i32 0
  %15772 = load double, ptr %15771, align 8, !tbaa !11
  %15773 = getelementptr inbounds %struct.doublecomplex, ptr %31, i32 0, i32 0
  %15774 = load double, ptr %15773, align 8, !tbaa !11
  %15775 = fsub double %15772, %15774
  %15776 = getelementptr inbounds %struct.doublecomplex, ptr %30, i32 0, i32 0
  store double %15775, ptr %15776, align 8, !tbaa !11
  %15777 = load ptr, ptr %14, align 8, !tbaa !5
  %15778 = load i32, ptr %21, align 4, !tbaa !9
  %15779 = sext i32 %15778 to i64
  %15780 = getelementptr inbounds %struct.doublecomplex, ptr %15777, i64 %15779
  %15781 = getelementptr inbounds %struct.doublecomplex, ptr %15780, i32 0, i32 1
  %15782 = load double, ptr %15781, align 8, !tbaa !14
  %15783 = getelementptr inbounds %struct.doublecomplex, ptr %31, i32 0, i32 1
  %15784 = load double, ptr %15783, align 8, !tbaa !14
  %15785 = fsub double %15782, %15784
  %15786 = getelementptr inbounds %struct.doublecomplex, ptr %30, i32 0, i32 1
  store double %15785, ptr %15786, align 8, !tbaa !14
  %15787 = getelementptr inbounds %struct.doublecomplex, ptr %30, i32 0, i32 0
  %15788 = load double, ptr %15787, align 8, !tbaa !11
  %15789 = load ptr, ptr %14, align 8, !tbaa !5
  %15790 = load i32, ptr %20, align 4, !tbaa !9
  %15791 = sext i32 %15790 to i64
  %15792 = getelementptr inbounds %struct.doublecomplex, ptr %15789, i64 %15791
  %15793 = getelementptr inbounds %struct.doublecomplex, ptr %15792, i32 0, i32 0
  store double %15788, ptr %15793, align 8, !tbaa !11
  %15794 = getelementptr inbounds %struct.doublecomplex, ptr %30, i32 0, i32 1
  %15795 = load double, ptr %15794, align 8, !tbaa !14
  %15796 = load ptr, ptr %14, align 8, !tbaa !5
  %15797 = load i32, ptr %20, align 4, !tbaa !9
  %15798 = sext i32 %15797 to i64
  %15799 = getelementptr inbounds %struct.doublecomplex, ptr %15796, i64 %15798
  %15800 = getelementptr inbounds %struct.doublecomplex, ptr %15799, i32 0, i32 1
  store double %15795, ptr %15800, align 8, !tbaa !14
  %15801 = load i32, ptr %49, align 4, !tbaa !9
  %15802 = load i32, ptr %17, align 4, !tbaa !9
  %15803 = mul nsw i32 %15802, 7
  %15804 = add nsw i32 %15801, %15803
  store i32 %15804, ptr %20, align 4, !tbaa !9
  %15805 = load i32, ptr %49, align 4, !tbaa !9
  %15806 = load i32, ptr %17, align 4, !tbaa !9
  %15807 = mul nsw i32 %15806, 7
  %15808 = add nsw i32 %15805, %15807
  store i32 %15808, ptr %21, align 4, !tbaa !9
  %15809 = getelementptr inbounds %struct.doublecomplex, ptr %70, i32 0, i32 0
  %15810 = load double, ptr %15809, align 8, !tbaa !11
  %15811 = getelementptr inbounds %struct.doublecomplex, ptr %56, i32 0, i32 0
  %15812 = load double, ptr %15811, align 8, !tbaa !11
  %15813 = getelementptr inbounds %struct.doublecomplex, ptr %70, i32 0, i32 1
  %15814 = load double, ptr %15813, align 8, !tbaa !14
  %15815 = getelementptr inbounds %struct.doublecomplex, ptr %56, i32 0, i32 1
  %15816 = load double, ptr %15815, align 8, !tbaa !14
  %15817 = fmul double %15814, %15816
  %15818 = fneg double %15817
  %15819 = call double @llvm.fmuladd.f64(double %15810, double %15812, double %15818)
  %15820 = getelementptr inbounds %struct.doublecomplex, ptr %31, i32 0, i32 0
  store double %15819, ptr %15820, align 8, !tbaa !11
  %15821 = getelementptr inbounds %struct.doublecomplex, ptr %70, i32 0, i32 0
  %15822 = load double, ptr %15821, align 8, !tbaa !11
  %15823 = getelementptr inbounds %struct.doublecomplex, ptr %56, i32 0, i32 1
  %15824 = load double, ptr %15823, align 8, !tbaa !14
  %15825 = getelementptr inbounds %struct.doublecomplex, ptr %70, i32 0, i32 1
  %15826 = load double, ptr %15825, align 8, !tbaa !14
  %15827 = getelementptr inbounds %struct.doublecomplex, ptr %56, i32 0, i32 0
  %15828 = load double, ptr %15827, align 8, !tbaa !11
  %15829 = fmul double %15826, %15828
  %15830 = call double @llvm.fmuladd.f64(double %15822, double %15824, double %15829)
  %15831 = getelementptr inbounds %struct.doublecomplex, ptr %31, i32 0, i32 1
  store double %15830, ptr %15831, align 8, !tbaa !14
  %15832 = load ptr, ptr %14, align 8, !tbaa !5
  %15833 = load i32, ptr %21, align 4, !tbaa !9
  %15834 = sext i32 %15833 to i64
  %15835 = getelementptr inbounds %struct.doublecomplex, ptr %15832, i64 %15834
  %15836 = getelementptr inbounds %struct.doublecomplex, ptr %15835, i32 0, i32 0
  %15837 = load double, ptr %15836, align 8, !tbaa !11
  %15838 = getelementptr inbounds %struct.doublecomplex, ptr %31, i32 0, i32 0
  %15839 = load double, ptr %15838, align 8, !tbaa !11
  %15840 = fsub double %15837, %15839
  %15841 = getelementptr inbounds %struct.doublecomplex, ptr %30, i32 0, i32 0
  store double %15840, ptr %15841, align 8, !tbaa !11
  %15842 = load ptr, ptr %14, align 8, !tbaa !5
  %15843 = load i32, ptr %21, align 4, !tbaa !9
  %15844 = sext i32 %15843 to i64
  %15845 = getelementptr inbounds %struct.doublecomplex, ptr %15842, i64 %15844
  %15846 = getelementptr inbounds %struct.doublecomplex, ptr %15845, i32 0, i32 1
  %15847 = load double, ptr %15846, align 8, !tbaa !14
  %15848 = getelementptr inbounds %struct.doublecomplex, ptr %31, i32 0, i32 1
  %15849 = load double, ptr %15848, align 8, !tbaa !14
  %15850 = fsub double %15847, %15849
  %15851 = getelementptr inbounds %struct.doublecomplex, ptr %30, i32 0, i32 1
  store double %15850, ptr %15851, align 8, !tbaa !14
  %15852 = getelementptr inbounds %struct.doublecomplex, ptr %30, i32 0, i32 0
  %15853 = load double, ptr %15852, align 8, !tbaa !11
  %15854 = load ptr, ptr %14, align 8, !tbaa !5
  %15855 = load i32, ptr %20, align 4, !tbaa !9
  %15856 = sext i32 %15855 to i64
  %15857 = getelementptr inbounds %struct.doublecomplex, ptr %15854, i64 %15856
  %15858 = getelementptr inbounds %struct.doublecomplex, ptr %15857, i32 0, i32 0
  store double %15853, ptr %15858, align 8, !tbaa !11
  %15859 = getelementptr inbounds %struct.doublecomplex, ptr %30, i32 0, i32 1
  %15860 = load double, ptr %15859, align 8, !tbaa !14
  %15861 = load ptr, ptr %14, align 8, !tbaa !5
  %15862 = load i32, ptr %20, align 4, !tbaa !9
  %15863 = sext i32 %15862 to i64
  %15864 = getelementptr inbounds %struct.doublecomplex, ptr %15861, i64 %15863
  %15865 = getelementptr inbounds %struct.doublecomplex, ptr %15864, i32 0, i32 1
  store double %15860, ptr %15865, align 8, !tbaa !14
  %15866 = load i32, ptr %49, align 4, !tbaa !9
  %15867 = load i32, ptr %17, align 4, !tbaa !9
  %15868 = shl i32 %15867, 3
  %15869 = add nsw i32 %15866, %15868
  store i32 %15869, ptr %20, align 4, !tbaa !9
  %15870 = load i32, ptr %49, align 4, !tbaa !9
  %15871 = load i32, ptr %17, align 4, !tbaa !9
  %15872 = shl i32 %15871, 3
  %15873 = add nsw i32 %15870, %15872
  store i32 %15873, ptr %21, align 4, !tbaa !9
  %15874 = getelementptr inbounds %struct.doublecomplex, ptr %70, i32 0, i32 0
  %15875 = load double, ptr %15874, align 8, !tbaa !11
  %15876 = getelementptr inbounds %struct.doublecomplex, ptr %57, i32 0, i32 0
  %15877 = load double, ptr %15876, align 8, !tbaa !11
  %15878 = getelementptr inbounds %struct.doublecomplex, ptr %70, i32 0, i32 1
  %15879 = load double, ptr %15878, align 8, !tbaa !14
  %15880 = getelementptr inbounds %struct.doublecomplex, ptr %57, i32 0, i32 1
  %15881 = load double, ptr %15880, align 8, !tbaa !14
  %15882 = fmul double %15879, %15881
  %15883 = fneg double %15882
  %15884 = call double @llvm.fmuladd.f64(double %15875, double %15877, double %15883)
  %15885 = getelementptr inbounds %struct.doublecomplex, ptr %31, i32 0, i32 0
  store double %15884, ptr %15885, align 8, !tbaa !11
  %15886 = getelementptr inbounds %struct.doublecomplex, ptr %70, i32 0, i32 0
  %15887 = load double, ptr %15886, align 8, !tbaa !11
  %15888 = getelementptr inbounds %struct.doublecomplex, ptr %57, i32 0, i32 1
  %15889 = load double, ptr %15888, align 8, !tbaa !14
  %15890 = getelementptr inbounds %struct.doublecomplex, ptr %70, i32 0, i32 1
  %15891 = load double, ptr %15890, align 8, !tbaa !14
  %15892 = getelementptr inbounds %struct.doublecomplex, ptr %57, i32 0, i32 0
  %15893 = load double, ptr %15892, align 8, !tbaa !11
  %15894 = fmul double %15891, %15893
  %15895 = call double @llvm.fmuladd.f64(double %15887, double %15889, double %15894)
  %15896 = getelementptr inbounds %struct.doublecomplex, ptr %31, i32 0, i32 1
  store double %15895, ptr %15896, align 8, !tbaa !14
  %15897 = load ptr, ptr %14, align 8, !tbaa !5
  %15898 = load i32, ptr %21, align 4, !tbaa !9
  %15899 = sext i32 %15898 to i64
  %15900 = getelementptr inbounds %struct.doublecomplex, ptr %15897, i64 %15899
  %15901 = getelementptr inbounds %struct.doublecomplex, ptr %15900, i32 0, i32 0
  %15902 = load double, ptr %15901, align 8, !tbaa !11
  %15903 = getelementptr inbounds %struct.doublecomplex, ptr %31, i32 0, i32 0
  %15904 = load double, ptr %15903, align 8, !tbaa !11
  %15905 = fsub double %15902, %15904
  %15906 = getelementptr inbounds %struct.doublecomplex, ptr %30, i32 0, i32 0
  store double %15905, ptr %15906, align 8, !tbaa !11
  %15907 = load ptr, ptr %14, align 8, !tbaa !5
  %15908 = load i32, ptr %21, align 4, !tbaa !9
  %15909 = sext i32 %15908 to i64
  %15910 = getelementptr inbounds %struct.doublecomplex, ptr %15907, i64 %15909
  %15911 = getelementptr inbounds %struct.doublecomplex, ptr %15910, i32 0, i32 1
  %15912 = load double, ptr %15911, align 8, !tbaa !14
  %15913 = getelementptr inbounds %struct.doublecomplex, ptr %31, i32 0, i32 1
  %15914 = load double, ptr %15913, align 8, !tbaa !14
  %15915 = fsub double %15912, %15914
  %15916 = getelementptr inbounds %struct.doublecomplex, ptr %30, i32 0, i32 1
  store double %15915, ptr %15916, align 8, !tbaa !14
  %15917 = getelementptr inbounds %struct.doublecomplex, ptr %30, i32 0, i32 0
  %15918 = load double, ptr %15917, align 8, !tbaa !11
  %15919 = load ptr, ptr %14, align 8, !tbaa !5
  %15920 = load i32, ptr %20, align 4, !tbaa !9
  %15921 = sext i32 %15920 to i64
  %15922 = getelementptr inbounds %struct.doublecomplex, ptr %15919, i64 %15921
  %15923 = getelementptr inbounds %struct.doublecomplex, ptr %15922, i32 0, i32 0
  store double %15918, ptr %15923, align 8, !tbaa !11
  %15924 = getelementptr inbounds %struct.doublecomplex, ptr %30, i32 0, i32 1
  %15925 = load double, ptr %15924, align 8, !tbaa !14
  %15926 = load ptr, ptr %14, align 8, !tbaa !5
  %15927 = load i32, ptr %20, align 4, !tbaa !9
  %15928 = sext i32 %15927 to i64
  %15929 = getelementptr inbounds %struct.doublecomplex, ptr %15926, i64 %15928
  %15930 = getelementptr inbounds %struct.doublecomplex, ptr %15929, i32 0, i32 1
  store double %15925, ptr %15930, align 8, !tbaa !14
  br label %15931

15931:                                            ; preds = %14979
  %15932 = load i32, ptr %49, align 4, !tbaa !9
  %15933 = add nsw i32 %15932, 1
  store i32 %15933, ptr %49, align 4, !tbaa !9
  br label %14975, !llvm.loop !33

15934:                                            ; preds = %14975
  br label %19171

15935:                                            ; preds = %9796
  %15936 = load ptr, ptr %12, align 8, !tbaa !5
  %15937 = getelementptr inbounds %struct.doublecomplex, ptr %15936, i64 1
  %15938 = getelementptr inbounds %struct.doublecomplex, ptr %15937, i32 0, i32 0
  %15939 = load double, ptr %15938, align 8, !tbaa !11
  %15940 = getelementptr inbounds %struct.doublecomplex, ptr %59, i32 0, i32 0
  store double %15939, ptr %15940, align 8, !tbaa !11
  %15941 = load ptr, ptr %12, align 8, !tbaa !5
  %15942 = getelementptr inbounds %struct.doublecomplex, ptr %15941, i64 1
  %15943 = getelementptr inbounds %struct.doublecomplex, ptr %15942, i32 0, i32 1
  %15944 = load double, ptr %15943, align 8, !tbaa !14
  %15945 = getelementptr inbounds %struct.doublecomplex, ptr %59, i32 0, i32 1
  store double %15944, ptr %15945, align 8, !tbaa !14
  %15946 = call { double, double } @Cd(ptr noundef %59)
  %15947 = extractvalue { double, double } %15946, 0
  %15948 = extractvalue { double, double } %15946, 1
  %15949 = fneg double %15948
  %15950 = call ptr @_pCd(ptr noundef %31)
  %15951 = getelementptr inbounds { double, double }, ptr %15950, i32 0, i32 0
  %15952 = getelementptr inbounds { double, double }, ptr %15950, i32 0, i32 1
  store double %15947, ptr %15951, align 8
  store double %15949, ptr %15952, align 8
  %15953 = load ptr, ptr %13, align 8, !tbaa !5
  %15954 = getelementptr inbounds %struct.doublecomplex, ptr %15953, i32 0, i32 0
  %15955 = load double, ptr %15954, align 8, !tbaa !11
  %15956 = getelementptr inbounds %struct.doublecomplex, ptr %31, i32 0, i32 0
  %15957 = load double, ptr %15956, align 8, !tbaa !11
  %15958 = load ptr, ptr %13, align 8, !tbaa !5
  %15959 = getelementptr inbounds %struct.doublecomplex, ptr %15958, i32 0, i32 1
  %15960 = load double, ptr %15959, align 8, !tbaa !14
  %15961 = getelementptr inbounds %struct.doublecomplex, ptr %31, i32 0, i32 1
  %15962 = load double, ptr %15961, align 8, !tbaa !14
  %15963 = fmul double %15960, %15962
  %15964 = fneg double %15963
  %15965 = call double @llvm.fmuladd.f64(double %15955, double %15957, double %15964)
  %15966 = getelementptr inbounds %struct.doublecomplex, ptr %30, i32 0, i32 0
  store double %15965, ptr %15966, align 8, !tbaa !11
  %15967 = load ptr, ptr %13, align 8, !tbaa !5
  %15968 = getelementptr inbounds %struct.doublecomplex, ptr %15967, i32 0, i32 0
  %15969 = load double, ptr %15968, align 8, !tbaa !11
  %15970 = getelementptr inbounds %struct.doublecomplex, ptr %31, i32 0, i32 1
  %15971 = load double, ptr %15970, align 8, !tbaa !14
  %15972 = load ptr, ptr %13, align 8, !tbaa !5
  %15973 = getelementptr inbounds %struct.doublecomplex, ptr %15972, i32 0, i32 1
  %15974 = load double, ptr %15973, align 8, !tbaa !14
  %15975 = getelementptr inbounds %struct.doublecomplex, ptr %31, i32 0, i32 0
  %15976 = load double, ptr %15975, align 8, !tbaa !11
  %15977 = fmul double %15974, %15976
  %15978 = call double @llvm.fmuladd.f64(double %15969, double %15971, double %15977)
  %15979 = getelementptr inbounds %struct.doublecomplex, ptr %30, i32 0, i32 1
  store double %15978, ptr %15979, align 8, !tbaa !14
  %15980 = getelementptr inbounds %struct.doublecomplex, ptr %30, i32 0, i32 0
  %15981 = load double, ptr %15980, align 8, !tbaa !11
  %15982 = getelementptr inbounds %struct.doublecomplex, ptr %50, i32 0, i32 0
  store double %15981, ptr %15982, align 8, !tbaa !11
  %15983 = getelementptr inbounds %struct.doublecomplex, ptr %30, i32 0, i32 1
  %15984 = load double, ptr %15983, align 8, !tbaa !14
  %15985 = getelementptr inbounds %struct.doublecomplex, ptr %50, i32 0, i32 1
  store double %15984, ptr %15985, align 8, !tbaa !14
  %15986 = load ptr, ptr %12, align 8, !tbaa !5
  %15987 = getelementptr inbounds %struct.doublecomplex, ptr %15986, i64 2
  %15988 = getelementptr inbounds %struct.doublecomplex, ptr %15987, i32 0, i32 0
  %15989 = load double, ptr %15988, align 8, !tbaa !11
  %15990 = getelementptr inbounds %struct.doublecomplex, ptr %60, i32 0, i32 0
  store double %15989, ptr %15990, align 8, !tbaa !11
  %15991 = load ptr, ptr %12, align 8, !tbaa !5
  %15992 = getelementptr inbounds %struct.doublecomplex, ptr %15991, i64 2
  %15993 = getelementptr inbounds %struct.doublecomplex, ptr %15992, i32 0, i32 1
  %15994 = load double, ptr %15993, align 8, !tbaa !14
  %15995 = getelementptr inbounds %struct.doublecomplex, ptr %60, i32 0, i32 1
  store double %15994, ptr %15995, align 8, !tbaa !14
  %15996 = call { double, double } @Cd(ptr noundef %60)
  %15997 = extractvalue { double, double } %15996, 0
  %15998 = extractvalue { double, double } %15996, 1
  %15999 = fneg double %15998
  %16000 = call ptr @_pCd(ptr noundef %31)
  %16001 = getelementptr inbounds { double, double }, ptr %16000, i32 0, i32 0
  %16002 = getelementptr inbounds { double, double }, ptr %16000, i32 0, i32 1
  store double %15997, ptr %16001, align 8
  store double %15999, ptr %16002, align 8
  %16003 = load ptr, ptr %13, align 8, !tbaa !5
  %16004 = getelementptr inbounds %struct.doublecomplex, ptr %16003, i32 0, i32 0
  %16005 = load double, ptr %16004, align 8, !tbaa !11
  %16006 = getelementptr inbounds %struct.doublecomplex, ptr %31, i32 0, i32 0
  %16007 = load double, ptr %16006, align 8, !tbaa !11
  %16008 = load ptr, ptr %13, align 8, !tbaa !5
  %16009 = getelementptr inbounds %struct.doublecomplex, ptr %16008, i32 0, i32 1
  %16010 = load double, ptr %16009, align 8, !tbaa !14
  %16011 = getelementptr inbounds %struct.doublecomplex, ptr %31, i32 0, i32 1
  %16012 = load double, ptr %16011, align 8, !tbaa !14
  %16013 = fmul double %16010, %16012
  %16014 = fneg double %16013
  %16015 = call double @llvm.fmuladd.f64(double %16005, double %16007, double %16014)
  %16016 = getelementptr inbounds %struct.doublecomplex, ptr %30, i32 0, i32 0
  store double %16015, ptr %16016, align 8, !tbaa !11
  %16017 = load ptr, ptr %13, align 8, !tbaa !5
  %16018 = getelementptr inbounds %struct.doublecomplex, ptr %16017, i32 0, i32 0
  %16019 = load double, ptr %16018, align 8, !tbaa !11
  %16020 = getelementptr inbounds %struct.doublecomplex, ptr %31, i32 0, i32 1
  %16021 = load double, ptr %16020, align 8, !tbaa !14
  %16022 = load ptr, ptr %13, align 8, !tbaa !5
  %16023 = getelementptr inbounds %struct.doublecomplex, ptr %16022, i32 0, i32 1
  %16024 = load double, ptr %16023, align 8, !tbaa !14
  %16025 = getelementptr inbounds %struct.doublecomplex, ptr %31, i32 0, i32 0
  %16026 = load double, ptr %16025, align 8, !tbaa !11
  %16027 = fmul double %16024, %16026
  %16028 = call double @llvm.fmuladd.f64(double %16019, double %16021, double %16027)
  %16029 = getelementptr inbounds %struct.doublecomplex, ptr %30, i32 0, i32 1
  store double %16028, ptr %16029, align 8, !tbaa !14
  %16030 = getelementptr inbounds %struct.doublecomplex, ptr %30, i32 0, i32 0
  %16031 = load double, ptr %16030, align 8, !tbaa !11
  %16032 = getelementptr inbounds %struct.doublecomplex, ptr %51, i32 0, i32 0
  store double %16031, ptr %16032, align 8, !tbaa !11
  %16033 = getelementptr inbounds %struct.doublecomplex, ptr %30, i32 0, i32 1
  %16034 = load double, ptr %16033, align 8, !tbaa !14
  %16035 = getelementptr inbounds %struct.doublecomplex, ptr %51, i32 0, i32 1
  store double %16034, ptr %16035, align 8, !tbaa !14
  %16036 = load ptr, ptr %12, align 8, !tbaa !5
  %16037 = getelementptr inbounds %struct.doublecomplex, ptr %16036, i64 3
  %16038 = getelementptr inbounds %struct.doublecomplex, ptr %16037, i32 0, i32 0
  %16039 = load double, ptr %16038, align 8, !tbaa !11
  %16040 = getelementptr inbounds %struct.doublecomplex, ptr %61, i32 0, i32 0
  store double %16039, ptr %16040, align 8, !tbaa !11
  %16041 = load ptr, ptr %12, align 8, !tbaa !5
  %16042 = getelementptr inbounds %struct.doublecomplex, ptr %16041, i64 3
  %16043 = getelementptr inbounds %struct.doublecomplex, ptr %16042, i32 0, i32 1
  %16044 = load double, ptr %16043, align 8, !tbaa !14
  %16045 = getelementptr inbounds %struct.doublecomplex, ptr %61, i32 0, i32 1
  store double %16044, ptr %16045, align 8, !tbaa !14
  %16046 = call { double, double } @Cd(ptr noundef %61)
  %16047 = extractvalue { double, double } %16046, 0
  %16048 = extractvalue { double, double } %16046, 1
  %16049 = fneg double %16048
  %16050 = call ptr @_pCd(ptr noundef %31)
  %16051 = getelementptr inbounds { double, double }, ptr %16050, i32 0, i32 0
  %16052 = getelementptr inbounds { double, double }, ptr %16050, i32 0, i32 1
  store double %16047, ptr %16051, align 8
  store double %16049, ptr %16052, align 8
  %16053 = load ptr, ptr %13, align 8, !tbaa !5
  %16054 = getelementptr inbounds %struct.doublecomplex, ptr %16053, i32 0, i32 0
  %16055 = load double, ptr %16054, align 8, !tbaa !11
  %16056 = getelementptr inbounds %struct.doublecomplex, ptr %31, i32 0, i32 0
  %16057 = load double, ptr %16056, align 8, !tbaa !11
  %16058 = load ptr, ptr %13, align 8, !tbaa !5
  %16059 = getelementptr inbounds %struct.doublecomplex, ptr %16058, i32 0, i32 1
  %16060 = load double, ptr %16059, align 8, !tbaa !14
  %16061 = getelementptr inbounds %struct.doublecomplex, ptr %31, i32 0, i32 1
  %16062 = load double, ptr %16061, align 8, !tbaa !14
  %16063 = fmul double %16060, %16062
  %16064 = fneg double %16063
  %16065 = call double @llvm.fmuladd.f64(double %16055, double %16057, double %16064)
  %16066 = getelementptr inbounds %struct.doublecomplex, ptr %30, i32 0, i32 0
  store double %16065, ptr %16066, align 8, !tbaa !11
  %16067 = load ptr, ptr %13, align 8, !tbaa !5
  %16068 = getelementptr inbounds %struct.doublecomplex, ptr %16067, i32 0, i32 0
  %16069 = load double, ptr %16068, align 8, !tbaa !11
  %16070 = getelementptr inbounds %struct.doublecomplex, ptr %31, i32 0, i32 1
  %16071 = load double, ptr %16070, align 8, !tbaa !14
  %16072 = load ptr, ptr %13, align 8, !tbaa !5
  %16073 = getelementptr inbounds %struct.doublecomplex, ptr %16072, i32 0, i32 1
  %16074 = load double, ptr %16073, align 8, !tbaa !14
  %16075 = getelementptr inbounds %struct.doublecomplex, ptr %31, i32 0, i32 0
  %16076 = load double, ptr %16075, align 8, !tbaa !11
  %16077 = fmul double %16074, %16076
  %16078 = call double @llvm.fmuladd.f64(double %16069, double %16071, double %16077)
  %16079 = getelementptr inbounds %struct.doublecomplex, ptr %30, i32 0, i32 1
  store double %16078, ptr %16079, align 8, !tbaa !14
  %16080 = getelementptr inbounds %struct.doublecomplex, ptr %30, i32 0, i32 0
  %16081 = load double, ptr %16080, align 8, !tbaa !11
  %16082 = getelementptr inbounds %struct.doublecomplex, ptr %52, i32 0, i32 0
  store double %16081, ptr %16082, align 8, !tbaa !11
  %16083 = getelementptr inbounds %struct.doublecomplex, ptr %30, i32 0, i32 1
  %16084 = load double, ptr %16083, align 8, !tbaa !14
  %16085 = getelementptr inbounds %struct.doublecomplex, ptr %52, i32 0, i32 1
  store double %16084, ptr %16085, align 8, !tbaa !14
  %16086 = load ptr, ptr %12, align 8, !tbaa !5
  %16087 = getelementptr inbounds %struct.doublecomplex, ptr %16086, i64 4
  %16088 = getelementptr inbounds %struct.doublecomplex, ptr %16087, i32 0, i32 0
  %16089 = load double, ptr %16088, align 8, !tbaa !11
  %16090 = getelementptr inbounds %struct.doublecomplex, ptr %62, i32 0, i32 0
  store double %16089, ptr %16090, align 8, !tbaa !11
  %16091 = load ptr, ptr %12, align 8, !tbaa !5
  %16092 = getelementptr inbounds %struct.doublecomplex, ptr %16091, i64 4
  %16093 = getelementptr inbounds %struct.doublecomplex, ptr %16092, i32 0, i32 1
  %16094 = load double, ptr %16093, align 8, !tbaa !14
  %16095 = getelementptr inbounds %struct.doublecomplex, ptr %62, i32 0, i32 1
  store double %16094, ptr %16095, align 8, !tbaa !14
  %16096 = call { double, double } @Cd(ptr noundef %62)
  %16097 = extractvalue { double, double } %16096, 0
  %16098 = extractvalue { double, double } %16096, 1
  %16099 = fneg double %16098
  %16100 = call ptr @_pCd(ptr noundef %31)
  %16101 = getelementptr inbounds { double, double }, ptr %16100, i32 0, i32 0
  %16102 = getelementptr inbounds { double, double }, ptr %16100, i32 0, i32 1
  store double %16097, ptr %16101, align 8
  store double %16099, ptr %16102, align 8
  %16103 = load ptr, ptr %13, align 8, !tbaa !5
  %16104 = getelementptr inbounds %struct.doublecomplex, ptr %16103, i32 0, i32 0
  %16105 = load double, ptr %16104, align 8, !tbaa !11
  %16106 = getelementptr inbounds %struct.doublecomplex, ptr %31, i32 0, i32 0
  %16107 = load double, ptr %16106, align 8, !tbaa !11
  %16108 = load ptr, ptr %13, align 8, !tbaa !5
  %16109 = getelementptr inbounds %struct.doublecomplex, ptr %16108, i32 0, i32 1
  %16110 = load double, ptr %16109, align 8, !tbaa !14
  %16111 = getelementptr inbounds %struct.doublecomplex, ptr %31, i32 0, i32 1
  %16112 = load double, ptr %16111, align 8, !tbaa !14
  %16113 = fmul double %16110, %16112
  %16114 = fneg double %16113
  %16115 = call double @llvm.fmuladd.f64(double %16105, double %16107, double %16114)
  %16116 = getelementptr inbounds %struct.doublecomplex, ptr %30, i32 0, i32 0
  store double %16115, ptr %16116, align 8, !tbaa !11
  %16117 = load ptr, ptr %13, align 8, !tbaa !5
  %16118 = getelementptr inbounds %struct.doublecomplex, ptr %16117, i32 0, i32 0
  %16119 = load double, ptr %16118, align 8, !tbaa !11
  %16120 = getelementptr inbounds %struct.doublecomplex, ptr %31, i32 0, i32 1
  %16121 = load double, ptr %16120, align 8, !tbaa !14
  %16122 = load ptr, ptr %13, align 8, !tbaa !5
  %16123 = getelementptr inbounds %struct.doublecomplex, ptr %16122, i32 0, i32 1
  %16124 = load double, ptr %16123, align 8, !tbaa !14
  %16125 = getelementptr inbounds %struct.doublecomplex, ptr %31, i32 0, i32 0
  %16126 = load double, ptr %16125, align 8, !tbaa !11
  %16127 = fmul double %16124, %16126
  %16128 = call double @llvm.fmuladd.f64(double %16119, double %16121, double %16127)
  %16129 = getelementptr inbounds %struct.doublecomplex, ptr %30, i32 0, i32 1
  store double %16128, ptr %16129, align 8, !tbaa !14
  %16130 = getelementptr inbounds %struct.doublecomplex, ptr %30, i32 0, i32 0
  %16131 = load double, ptr %16130, align 8, !tbaa !11
  %16132 = getelementptr inbounds %struct.doublecomplex, ptr %53, i32 0, i32 0
  store double %16131, ptr %16132, align 8, !tbaa !11
  %16133 = getelementptr inbounds %struct.doublecomplex, ptr %30, i32 0, i32 1
  %16134 = load double, ptr %16133, align 8, !tbaa !14
  %16135 = getelementptr inbounds %struct.doublecomplex, ptr %53, i32 0, i32 1
  store double %16134, ptr %16135, align 8, !tbaa !14
  %16136 = load ptr, ptr %12, align 8, !tbaa !5
  %16137 = getelementptr inbounds %struct.doublecomplex, ptr %16136, i64 5
  %16138 = getelementptr inbounds %struct.doublecomplex, ptr %16137, i32 0, i32 0
  %16139 = load double, ptr %16138, align 8, !tbaa !11
  %16140 = getelementptr inbounds %struct.doublecomplex, ptr %63, i32 0, i32 0
  store double %16139, ptr %16140, align 8, !tbaa !11
  %16141 = load ptr, ptr %12, align 8, !tbaa !5
  %16142 = getelementptr inbounds %struct.doublecomplex, ptr %16141, i64 5
  %16143 = getelementptr inbounds %struct.doublecomplex, ptr %16142, i32 0, i32 1
  %16144 = load double, ptr %16143, align 8, !tbaa !14
  %16145 = getelementptr inbounds %struct.doublecomplex, ptr %63, i32 0, i32 1
  store double %16144, ptr %16145, align 8, !tbaa !14
  %16146 = call { double, double } @Cd(ptr noundef %63)
  %16147 = extractvalue { double, double } %16146, 0
  %16148 = extractvalue { double, double } %16146, 1
  %16149 = fneg double %16148
  %16150 = call ptr @_pCd(ptr noundef %31)
  %16151 = getelementptr inbounds { double, double }, ptr %16150, i32 0, i32 0
  %16152 = getelementptr inbounds { double, double }, ptr %16150, i32 0, i32 1
  store double %16147, ptr %16151, align 8
  store double %16149, ptr %16152, align 8
  %16153 = load ptr, ptr %13, align 8, !tbaa !5
  %16154 = getelementptr inbounds %struct.doublecomplex, ptr %16153, i32 0, i32 0
  %16155 = load double, ptr %16154, align 8, !tbaa !11
  %16156 = getelementptr inbounds %struct.doublecomplex, ptr %31, i32 0, i32 0
  %16157 = load double, ptr %16156, align 8, !tbaa !11
  %16158 = load ptr, ptr %13, align 8, !tbaa !5
  %16159 = getelementptr inbounds %struct.doublecomplex, ptr %16158, i32 0, i32 1
  %16160 = load double, ptr %16159, align 8, !tbaa !14
  %16161 = getelementptr inbounds %struct.doublecomplex, ptr %31, i32 0, i32 1
  %16162 = load double, ptr %16161, align 8, !tbaa !14
  %16163 = fmul double %16160, %16162
  %16164 = fneg double %16163
  %16165 = call double @llvm.fmuladd.f64(double %16155, double %16157, double %16164)
  %16166 = getelementptr inbounds %struct.doublecomplex, ptr %30, i32 0, i32 0
  store double %16165, ptr %16166, align 8, !tbaa !11
  %16167 = load ptr, ptr %13, align 8, !tbaa !5
  %16168 = getelementptr inbounds %struct.doublecomplex, ptr %16167, i32 0, i32 0
  %16169 = load double, ptr %16168, align 8, !tbaa !11
  %16170 = getelementptr inbounds %struct.doublecomplex, ptr %31, i32 0, i32 1
  %16171 = load double, ptr %16170, align 8, !tbaa !14
  %16172 = load ptr, ptr %13, align 8, !tbaa !5
  %16173 = getelementptr inbounds %struct.doublecomplex, ptr %16172, i32 0, i32 1
  %16174 = load double, ptr %16173, align 8, !tbaa !14
  %16175 = getelementptr inbounds %struct.doublecomplex, ptr %31, i32 0, i32 0
  %16176 = load double, ptr %16175, align 8, !tbaa !11
  %16177 = fmul double %16174, %16176
  %16178 = call double @llvm.fmuladd.f64(double %16169, double %16171, double %16177)
  %16179 = getelementptr inbounds %struct.doublecomplex, ptr %30, i32 0, i32 1
  store double %16178, ptr %16179, align 8, !tbaa !14
  %16180 = getelementptr inbounds %struct.doublecomplex, ptr %30, i32 0, i32 0
  %16181 = load double, ptr %16180, align 8, !tbaa !11
  %16182 = getelementptr inbounds %struct.doublecomplex, ptr %54, i32 0, i32 0
  store double %16181, ptr %16182, align 8, !tbaa !11
  %16183 = getelementptr inbounds %struct.doublecomplex, ptr %30, i32 0, i32 1
  %16184 = load double, ptr %16183, align 8, !tbaa !14
  %16185 = getelementptr inbounds %struct.doublecomplex, ptr %54, i32 0, i32 1
  store double %16184, ptr %16185, align 8, !tbaa !14
  %16186 = load ptr, ptr %12, align 8, !tbaa !5
  %16187 = getelementptr inbounds %struct.doublecomplex, ptr %16186, i64 6
  %16188 = getelementptr inbounds %struct.doublecomplex, ptr %16187, i32 0, i32 0
  %16189 = load double, ptr %16188, align 8, !tbaa !11
  %16190 = getelementptr inbounds %struct.doublecomplex, ptr %64, i32 0, i32 0
  store double %16189, ptr %16190, align 8, !tbaa !11
  %16191 = load ptr, ptr %12, align 8, !tbaa !5
  %16192 = getelementptr inbounds %struct.doublecomplex, ptr %16191, i64 6
  %16193 = getelementptr inbounds %struct.doublecomplex, ptr %16192, i32 0, i32 1
  %16194 = load double, ptr %16193, align 8, !tbaa !14
  %16195 = getelementptr inbounds %struct.doublecomplex, ptr %64, i32 0, i32 1
  store double %16194, ptr %16195, align 8, !tbaa !14
  %16196 = call { double, double } @Cd(ptr noundef %64)
  %16197 = extractvalue { double, double } %16196, 0
  %16198 = extractvalue { double, double } %16196, 1
  %16199 = fneg double %16198
  %16200 = call ptr @_pCd(ptr noundef %31)
  %16201 = getelementptr inbounds { double, double }, ptr %16200, i32 0, i32 0
  %16202 = getelementptr inbounds { double, double }, ptr %16200, i32 0, i32 1
  store double %16197, ptr %16201, align 8
  store double %16199, ptr %16202, align 8
  %16203 = load ptr, ptr %13, align 8, !tbaa !5
  %16204 = getelementptr inbounds %struct.doublecomplex, ptr %16203, i32 0, i32 0
  %16205 = load double, ptr %16204, align 8, !tbaa !11
  %16206 = getelementptr inbounds %struct.doublecomplex, ptr %31, i32 0, i32 0
  %16207 = load double, ptr %16206, align 8, !tbaa !11
  %16208 = load ptr, ptr %13, align 8, !tbaa !5
  %16209 = getelementptr inbounds %struct.doublecomplex, ptr %16208, i32 0, i32 1
  %16210 = load double, ptr %16209, align 8, !tbaa !14
  %16211 = getelementptr inbounds %struct.doublecomplex, ptr %31, i32 0, i32 1
  %16212 = load double, ptr %16211, align 8, !tbaa !14
  %16213 = fmul double %16210, %16212
  %16214 = fneg double %16213
  %16215 = call double @llvm.fmuladd.f64(double %16205, double %16207, double %16214)
  %16216 = getelementptr inbounds %struct.doublecomplex, ptr %30, i32 0, i32 0
  store double %16215, ptr %16216, align 8, !tbaa !11
  %16217 = load ptr, ptr %13, align 8, !tbaa !5
  %16218 = getelementptr inbounds %struct.doublecomplex, ptr %16217, i32 0, i32 0
  %16219 = load double, ptr %16218, align 8, !tbaa !11
  %16220 = getelementptr inbounds %struct.doublecomplex, ptr %31, i32 0, i32 1
  %16221 = load double, ptr %16220, align 8, !tbaa !14
  %16222 = load ptr, ptr %13, align 8, !tbaa !5
  %16223 = getelementptr inbounds %struct.doublecomplex, ptr %16222, i32 0, i32 1
  %16224 = load double, ptr %16223, align 8, !tbaa !14
  %16225 = getelementptr inbounds %struct.doublecomplex, ptr %31, i32 0, i32 0
  %16226 = load double, ptr %16225, align 8, !tbaa !11
  %16227 = fmul double %16224, %16226
  %16228 = call double @llvm.fmuladd.f64(double %16219, double %16221, double %16227)
  %16229 = getelementptr inbounds %struct.doublecomplex, ptr %30, i32 0, i32 1
  store double %16228, ptr %16229, align 8, !tbaa !14
  %16230 = getelementptr inbounds %struct.doublecomplex, ptr %30, i32 0, i32 0
  %16231 = load double, ptr %16230, align 8, !tbaa !11
  %16232 = getelementptr inbounds %struct.doublecomplex, ptr %55, i32 0, i32 0
  store double %16231, ptr %16232, align 8, !tbaa !11
  %16233 = getelementptr inbounds %struct.doublecomplex, ptr %30, i32 0, i32 1
  %16234 = load double, ptr %16233, align 8, !tbaa !14
  %16235 = getelementptr inbounds %struct.doublecomplex, ptr %55, i32 0, i32 1
  store double %16234, ptr %16235, align 8, !tbaa !14
  %16236 = load ptr, ptr %12, align 8, !tbaa !5
  %16237 = getelementptr inbounds %struct.doublecomplex, ptr %16236, i64 7
  %16238 = getelementptr inbounds %struct.doublecomplex, ptr %16237, i32 0, i32 0
  %16239 = load double, ptr %16238, align 8, !tbaa !11
  %16240 = getelementptr inbounds %struct.doublecomplex, ptr %65, i32 0, i32 0
  store double %16239, ptr %16240, align 8, !tbaa !11
  %16241 = load ptr, ptr %12, align 8, !tbaa !5
  %16242 = getelementptr inbounds %struct.doublecomplex, ptr %16241, i64 7
  %16243 = getelementptr inbounds %struct.doublecomplex, ptr %16242, i32 0, i32 1
  %16244 = load double, ptr %16243, align 8, !tbaa !14
  %16245 = getelementptr inbounds %struct.doublecomplex, ptr %65, i32 0, i32 1
  store double %16244, ptr %16245, align 8, !tbaa !14
  %16246 = call { double, double } @Cd(ptr noundef %65)
  %16247 = extractvalue { double, double } %16246, 0
  %16248 = extractvalue { double, double } %16246, 1
  %16249 = fneg double %16248
  %16250 = call ptr @_pCd(ptr noundef %31)
  %16251 = getelementptr inbounds { double, double }, ptr %16250, i32 0, i32 0
  %16252 = getelementptr inbounds { double, double }, ptr %16250, i32 0, i32 1
  store double %16247, ptr %16251, align 8
  store double %16249, ptr %16252, align 8
  %16253 = load ptr, ptr %13, align 8, !tbaa !5
  %16254 = getelementptr inbounds %struct.doublecomplex, ptr %16253, i32 0, i32 0
  %16255 = load double, ptr %16254, align 8, !tbaa !11
  %16256 = getelementptr inbounds %struct.doublecomplex, ptr %31, i32 0, i32 0
  %16257 = load double, ptr %16256, align 8, !tbaa !11
  %16258 = load ptr, ptr %13, align 8, !tbaa !5
  %16259 = getelementptr inbounds %struct.doublecomplex, ptr %16258, i32 0, i32 1
  %16260 = load double, ptr %16259, align 8, !tbaa !14
  %16261 = getelementptr inbounds %struct.doublecomplex, ptr %31, i32 0, i32 1
  %16262 = load double, ptr %16261, align 8, !tbaa !14
  %16263 = fmul double %16260, %16262
  %16264 = fneg double %16263
  %16265 = call double @llvm.fmuladd.f64(double %16255, double %16257, double %16264)
  %16266 = getelementptr inbounds %struct.doublecomplex, ptr %30, i32 0, i32 0
  store double %16265, ptr %16266, align 8, !tbaa !11
  %16267 = load ptr, ptr %13, align 8, !tbaa !5
  %16268 = getelementptr inbounds %struct.doublecomplex, ptr %16267, i32 0, i32 0
  %16269 = load double, ptr %16268, align 8, !tbaa !11
  %16270 = getelementptr inbounds %struct.doublecomplex, ptr %31, i32 0, i32 1
  %16271 = load double, ptr %16270, align 8, !tbaa !14
  %16272 = load ptr, ptr %13, align 8, !tbaa !5
  %16273 = getelementptr inbounds %struct.doublecomplex, ptr %16272, i32 0, i32 1
  %16274 = load double, ptr %16273, align 8, !tbaa !14
  %16275 = getelementptr inbounds %struct.doublecomplex, ptr %31, i32 0, i32 0
  %16276 = load double, ptr %16275, align 8, !tbaa !11
  %16277 = fmul double %16274, %16276
  %16278 = call double @llvm.fmuladd.f64(double %16269, double %16271, double %16277)
  %16279 = getelementptr inbounds %struct.doublecomplex, ptr %30, i32 0, i32 1
  store double %16278, ptr %16279, align 8, !tbaa !14
  %16280 = getelementptr inbounds %struct.doublecomplex, ptr %30, i32 0, i32 0
  %16281 = load double, ptr %16280, align 8, !tbaa !11
  %16282 = getelementptr inbounds %struct.doublecomplex, ptr %56, i32 0, i32 0
  store double %16281, ptr %16282, align 8, !tbaa !11
  %16283 = getelementptr inbounds %struct.doublecomplex, ptr %30, i32 0, i32 1
  %16284 = load double, ptr %16283, align 8, !tbaa !14
  %16285 = getelementptr inbounds %struct.doublecomplex, ptr %56, i32 0, i32 1
  store double %16284, ptr %16285, align 8, !tbaa !14
  %16286 = load ptr, ptr %12, align 8, !tbaa !5
  %16287 = getelementptr inbounds %struct.doublecomplex, ptr %16286, i64 8
  %16288 = getelementptr inbounds %struct.doublecomplex, ptr %16287, i32 0, i32 0
  %16289 = load double, ptr %16288, align 8, !tbaa !11
  %16290 = getelementptr inbounds %struct.doublecomplex, ptr %66, i32 0, i32 0
  store double %16289, ptr %16290, align 8, !tbaa !11
  %16291 = load ptr, ptr %12, align 8, !tbaa !5
  %16292 = getelementptr inbounds %struct.doublecomplex, ptr %16291, i64 8
  %16293 = getelementptr inbounds %struct.doublecomplex, ptr %16292, i32 0, i32 1
  %16294 = load double, ptr %16293, align 8, !tbaa !14
  %16295 = getelementptr inbounds %struct.doublecomplex, ptr %66, i32 0, i32 1
  store double %16294, ptr %16295, align 8, !tbaa !14
  %16296 = call { double, double } @Cd(ptr noundef %66)
  %16297 = extractvalue { double, double } %16296, 0
  %16298 = extractvalue { double, double } %16296, 1
  %16299 = fneg double %16298
  %16300 = call ptr @_pCd(ptr noundef %31)
  %16301 = getelementptr inbounds { double, double }, ptr %16300, i32 0, i32 0
  %16302 = getelementptr inbounds { double, double }, ptr %16300, i32 0, i32 1
  store double %16297, ptr %16301, align 8
  store double %16299, ptr %16302, align 8
  %16303 = load ptr, ptr %13, align 8, !tbaa !5
  %16304 = getelementptr inbounds %struct.doublecomplex, ptr %16303, i32 0, i32 0
  %16305 = load double, ptr %16304, align 8, !tbaa !11
  %16306 = getelementptr inbounds %struct.doublecomplex, ptr %31, i32 0, i32 0
  %16307 = load double, ptr %16306, align 8, !tbaa !11
  %16308 = load ptr, ptr %13, align 8, !tbaa !5
  %16309 = getelementptr inbounds %struct.doublecomplex, ptr %16308, i32 0, i32 1
  %16310 = load double, ptr %16309, align 8, !tbaa !14
  %16311 = getelementptr inbounds %struct.doublecomplex, ptr %31, i32 0, i32 1
  %16312 = load double, ptr %16311, align 8, !tbaa !14
  %16313 = fmul double %16310, %16312
  %16314 = fneg double %16313
  %16315 = call double @llvm.fmuladd.f64(double %16305, double %16307, double %16314)
  %16316 = getelementptr inbounds %struct.doublecomplex, ptr %30, i32 0, i32 0
  store double %16315, ptr %16316, align 8, !tbaa !11
  %16317 = load ptr, ptr %13, align 8, !tbaa !5
  %16318 = getelementptr inbounds %struct.doublecomplex, ptr %16317, i32 0, i32 0
  %16319 = load double, ptr %16318, align 8, !tbaa !11
  %16320 = getelementptr inbounds %struct.doublecomplex, ptr %31, i32 0, i32 1
  %16321 = load double, ptr %16320, align 8, !tbaa !14
  %16322 = load ptr, ptr %13, align 8, !tbaa !5
  %16323 = getelementptr inbounds %struct.doublecomplex, ptr %16322, i32 0, i32 1
  %16324 = load double, ptr %16323, align 8, !tbaa !14
  %16325 = getelementptr inbounds %struct.doublecomplex, ptr %31, i32 0, i32 0
  %16326 = load double, ptr %16325, align 8, !tbaa !11
  %16327 = fmul double %16324, %16326
  %16328 = call double @llvm.fmuladd.f64(double %16319, double %16321, double %16327)
  %16329 = getelementptr inbounds %struct.doublecomplex, ptr %30, i32 0, i32 1
  store double %16328, ptr %16329, align 8, !tbaa !14
  %16330 = getelementptr inbounds %struct.doublecomplex, ptr %30, i32 0, i32 0
  %16331 = load double, ptr %16330, align 8, !tbaa !11
  %16332 = getelementptr inbounds %struct.doublecomplex, ptr %57, i32 0, i32 0
  store double %16331, ptr %16332, align 8, !tbaa !11
  %16333 = getelementptr inbounds %struct.doublecomplex, ptr %30, i32 0, i32 1
  %16334 = load double, ptr %16333, align 8, !tbaa !14
  %16335 = getelementptr inbounds %struct.doublecomplex, ptr %57, i32 0, i32 1
  store double %16334, ptr %16335, align 8, !tbaa !14
  %16336 = load ptr, ptr %12, align 8, !tbaa !5
  %16337 = getelementptr inbounds %struct.doublecomplex, ptr %16336, i64 9
  %16338 = getelementptr inbounds %struct.doublecomplex, ptr %16337, i32 0, i32 0
  %16339 = load double, ptr %16338, align 8, !tbaa !11
  %16340 = getelementptr inbounds %struct.doublecomplex, ptr %67, i32 0, i32 0
  store double %16339, ptr %16340, align 8, !tbaa !11
  %16341 = load ptr, ptr %12, align 8, !tbaa !5
  %16342 = getelementptr inbounds %struct.doublecomplex, ptr %16341, i64 9
  %16343 = getelementptr inbounds %struct.doublecomplex, ptr %16342, i32 0, i32 1
  %16344 = load double, ptr %16343, align 8, !tbaa !14
  %16345 = getelementptr inbounds %struct.doublecomplex, ptr %67, i32 0, i32 1
  store double %16344, ptr %16345, align 8, !tbaa !14
  %16346 = call { double, double } @Cd(ptr noundef %67)
  %16347 = extractvalue { double, double } %16346, 0
  %16348 = extractvalue { double, double } %16346, 1
  %16349 = fneg double %16348
  %16350 = call ptr @_pCd(ptr noundef %31)
  %16351 = getelementptr inbounds { double, double }, ptr %16350, i32 0, i32 0
  %16352 = getelementptr inbounds { double, double }, ptr %16350, i32 0, i32 1
  store double %16347, ptr %16351, align 8
  store double %16349, ptr %16352, align 8
  %16353 = load ptr, ptr %13, align 8, !tbaa !5
  %16354 = getelementptr inbounds %struct.doublecomplex, ptr %16353, i32 0, i32 0
  %16355 = load double, ptr %16354, align 8, !tbaa !11
  %16356 = getelementptr inbounds %struct.doublecomplex, ptr %31, i32 0, i32 0
  %16357 = load double, ptr %16356, align 8, !tbaa !11
  %16358 = load ptr, ptr %13, align 8, !tbaa !5
  %16359 = getelementptr inbounds %struct.doublecomplex, ptr %16358, i32 0, i32 1
  %16360 = load double, ptr %16359, align 8, !tbaa !14
  %16361 = getelementptr inbounds %struct.doublecomplex, ptr %31, i32 0, i32 1
  %16362 = load double, ptr %16361, align 8, !tbaa !14
  %16363 = fmul double %16360, %16362
  %16364 = fneg double %16363
  %16365 = call double @llvm.fmuladd.f64(double %16355, double %16357, double %16364)
  %16366 = getelementptr inbounds %struct.doublecomplex, ptr %30, i32 0, i32 0
  store double %16365, ptr %16366, align 8, !tbaa !11
  %16367 = load ptr, ptr %13, align 8, !tbaa !5
  %16368 = getelementptr inbounds %struct.doublecomplex, ptr %16367, i32 0, i32 0
  %16369 = load double, ptr %16368, align 8, !tbaa !11
  %16370 = getelementptr inbounds %struct.doublecomplex, ptr %31, i32 0, i32 1
  %16371 = load double, ptr %16370, align 8, !tbaa !14
  %16372 = load ptr, ptr %13, align 8, !tbaa !5
  %16373 = getelementptr inbounds %struct.doublecomplex, ptr %16372, i32 0, i32 1
  %16374 = load double, ptr %16373, align 8, !tbaa !14
  %16375 = getelementptr inbounds %struct.doublecomplex, ptr %31, i32 0, i32 0
  %16376 = load double, ptr %16375, align 8, !tbaa !11
  %16377 = fmul double %16374, %16376
  %16378 = call double @llvm.fmuladd.f64(double %16369, double %16371, double %16377)
  %16379 = getelementptr inbounds %struct.doublecomplex, ptr %30, i32 0, i32 1
  store double %16378, ptr %16379, align 8, !tbaa !14
  %16380 = getelementptr inbounds %struct.doublecomplex, ptr %30, i32 0, i32 0
  %16381 = load double, ptr %16380, align 8, !tbaa !11
  %16382 = getelementptr inbounds %struct.doublecomplex, ptr %58, i32 0, i32 0
  store double %16381, ptr %16382, align 8, !tbaa !11
  %16383 = getelementptr inbounds %struct.doublecomplex, ptr %30, i32 0, i32 1
  %16384 = load double, ptr %16383, align 8, !tbaa !14
  %16385 = getelementptr inbounds %struct.doublecomplex, ptr %58, i32 0, i32 1
  store double %16384, ptr %16385, align 8, !tbaa !14
  %16386 = load ptr, ptr %10, align 8, !tbaa !5
  %16387 = load i32, ptr %16386, align 4, !tbaa !9
  store i32 %16387, ptr %19, align 4, !tbaa !9
  store i32 1, ptr %49, align 4, !tbaa !9
  br label %16388

16388:                                            ; preds = %17464, %15935
  %16389 = load i32, ptr %49, align 4, !tbaa !9
  %16390 = load i32, ptr %19, align 4, !tbaa !9
  %16391 = icmp sle i32 %16389, %16390
  br i1 %16391, label %16392, label %17467

16392:                                            ; preds = %16388
  %16393 = load i32, ptr %49, align 4, !tbaa !9
  %16394 = load i32, ptr %17, align 4, !tbaa !9
  %16395 = add nsw i32 %16393, %16394
  store i32 %16395, ptr %20, align 4, !tbaa !9
  %16396 = getelementptr inbounds %struct.doublecomplex, ptr %59, i32 0, i32 0
  %16397 = load double, ptr %16396, align 8, !tbaa !11
  %16398 = load ptr, ptr %14, align 8, !tbaa !5
  %16399 = load i32, ptr %20, align 4, !tbaa !9
  %16400 = sext i32 %16399 to i64
  %16401 = getelementptr inbounds %struct.doublecomplex, ptr %16398, i64 %16400
  %16402 = getelementptr inbounds %struct.doublecomplex, ptr %16401, i32 0, i32 0
  %16403 = load double, ptr %16402, align 8, !tbaa !11
  %16404 = getelementptr inbounds %struct.doublecomplex, ptr %59, i32 0, i32 1
  %16405 = load double, ptr %16404, align 8, !tbaa !14
  %16406 = load ptr, ptr %14, align 8, !tbaa !5
  %16407 = load i32, ptr %20, align 4, !tbaa !9
  %16408 = sext i32 %16407 to i64
  %16409 = getelementptr inbounds %struct.doublecomplex, ptr %16406, i64 %16408
  %16410 = getelementptr inbounds %struct.doublecomplex, ptr %16409, i32 0, i32 1
  %16411 = load double, ptr %16410, align 8, !tbaa !14
  %16412 = fmul double %16405, %16411
  %16413 = fneg double %16412
  %16414 = call double @llvm.fmuladd.f64(double %16397, double %16403, double %16413)
  %16415 = getelementptr inbounds %struct.doublecomplex, ptr %38, i32 0, i32 0
  store double %16414, ptr %16415, align 8, !tbaa !11
  %16416 = getelementptr inbounds %struct.doublecomplex, ptr %59, i32 0, i32 0
  %16417 = load double, ptr %16416, align 8, !tbaa !11
  %16418 = load ptr, ptr %14, align 8, !tbaa !5
  %16419 = load i32, ptr %20, align 4, !tbaa !9
  %16420 = sext i32 %16419 to i64
  %16421 = getelementptr inbounds %struct.doublecomplex, ptr %16418, i64 %16420
  %16422 = getelementptr inbounds %struct.doublecomplex, ptr %16421, i32 0, i32 1
  %16423 = load double, ptr %16422, align 8, !tbaa !14
  %16424 = getelementptr inbounds %struct.doublecomplex, ptr %59, i32 0, i32 1
  %16425 = load double, ptr %16424, align 8, !tbaa !14
  %16426 = load ptr, ptr %14, align 8, !tbaa !5
  %16427 = load i32, ptr %20, align 4, !tbaa !9
  %16428 = sext i32 %16427 to i64
  %16429 = getelementptr inbounds %struct.doublecomplex, ptr %16426, i64 %16428
  %16430 = getelementptr inbounds %struct.doublecomplex, ptr %16429, i32 0, i32 0
  %16431 = load double, ptr %16430, align 8, !tbaa !11
  %16432 = fmul double %16425, %16431
  %16433 = call double @llvm.fmuladd.f64(double %16417, double %16423, double %16432)
  %16434 = getelementptr inbounds %struct.doublecomplex, ptr %38, i32 0, i32 1
  store double %16433, ptr %16434, align 8, !tbaa !14
  %16435 = load i32, ptr %49, align 4, !tbaa !9
  %16436 = load i32, ptr %17, align 4, !tbaa !9
  %16437 = shl i32 %16436, 1
  %16438 = add nsw i32 %16435, %16437
  store i32 %16438, ptr %21, align 4, !tbaa !9
  %16439 = getelementptr inbounds %struct.doublecomplex, ptr %60, i32 0, i32 0
  %16440 = load double, ptr %16439, align 8, !tbaa !11
  %16441 = load ptr, ptr %14, align 8, !tbaa !5
  %16442 = load i32, ptr %21, align 4, !tbaa !9
  %16443 = sext i32 %16442 to i64
  %16444 = getelementptr inbounds %struct.doublecomplex, ptr %16441, i64 %16443
  %16445 = getelementptr inbounds %struct.doublecomplex, ptr %16444, i32 0, i32 0
  %16446 = load double, ptr %16445, align 8, !tbaa !11
  %16447 = getelementptr inbounds %struct.doublecomplex, ptr %60, i32 0, i32 1
  %16448 = load double, ptr %16447, align 8, !tbaa !14
  %16449 = load ptr, ptr %14, align 8, !tbaa !5
  %16450 = load i32, ptr %21, align 4, !tbaa !9
  %16451 = sext i32 %16450 to i64
  %16452 = getelementptr inbounds %struct.doublecomplex, ptr %16449, i64 %16451
  %16453 = getelementptr inbounds %struct.doublecomplex, ptr %16452, i32 0, i32 1
  %16454 = load double, ptr %16453, align 8, !tbaa !14
  %16455 = fmul double %16448, %16454
  %16456 = fneg double %16455
  %16457 = call double @llvm.fmuladd.f64(double %16440, double %16446, double %16456)
  %16458 = getelementptr inbounds %struct.doublecomplex, ptr %39, i32 0, i32 0
  store double %16457, ptr %16458, align 8, !tbaa !11
  %16459 = getelementptr inbounds %struct.doublecomplex, ptr %60, i32 0, i32 0
  %16460 = load double, ptr %16459, align 8, !tbaa !11
  %16461 = load ptr, ptr %14, align 8, !tbaa !5
  %16462 = load i32, ptr %21, align 4, !tbaa !9
  %16463 = sext i32 %16462 to i64
  %16464 = getelementptr inbounds %struct.doublecomplex, ptr %16461, i64 %16463
  %16465 = getelementptr inbounds %struct.doublecomplex, ptr %16464, i32 0, i32 1
  %16466 = load double, ptr %16465, align 8, !tbaa !14
  %16467 = getelementptr inbounds %struct.doublecomplex, ptr %60, i32 0, i32 1
  %16468 = load double, ptr %16467, align 8, !tbaa !14
  %16469 = load ptr, ptr %14, align 8, !tbaa !5
  %16470 = load i32, ptr %21, align 4, !tbaa !9
  %16471 = sext i32 %16470 to i64
  %16472 = getelementptr inbounds %struct.doublecomplex, ptr %16469, i64 %16471
  %16473 = getelementptr inbounds %struct.doublecomplex, ptr %16472, i32 0, i32 0
  %16474 = load double, ptr %16473, align 8, !tbaa !11
  %16475 = fmul double %16468, %16474
  %16476 = call double @llvm.fmuladd.f64(double %16460, double %16466, double %16475)
  %16477 = getelementptr inbounds %struct.doublecomplex, ptr %39, i32 0, i32 1
  store double %16476, ptr %16477, align 8, !tbaa !14
  %16478 = getelementptr inbounds %struct.doublecomplex, ptr %38, i32 0, i32 0
  %16479 = load double, ptr %16478, align 8, !tbaa !11
  %16480 = getelementptr inbounds %struct.doublecomplex, ptr %39, i32 0, i32 0
  %16481 = load double, ptr %16480, align 8, !tbaa !11
  %16482 = fadd double %16479, %16481
  %16483 = getelementptr inbounds %struct.doublecomplex, ptr %37, i32 0, i32 0
  store double %16482, ptr %16483, align 8, !tbaa !11
  %16484 = getelementptr inbounds %struct.doublecomplex, ptr %38, i32 0, i32 1
  %16485 = load double, ptr %16484, align 8, !tbaa !14
  %16486 = getelementptr inbounds %struct.doublecomplex, ptr %39, i32 0, i32 1
  %16487 = load double, ptr %16486, align 8, !tbaa !14
  %16488 = fadd double %16485, %16487
  %16489 = getelementptr inbounds %struct.doublecomplex, ptr %37, i32 0, i32 1
  store double %16488, ptr %16489, align 8, !tbaa !14
  %16490 = load i32, ptr %49, align 4, !tbaa !9
  %16491 = load i32, ptr %17, align 4, !tbaa !9
  %16492 = mul nsw i32 %16491, 3
  %16493 = add nsw i32 %16490, %16492
  store i32 %16493, ptr %22, align 4, !tbaa !9
  %16494 = getelementptr inbounds %struct.doublecomplex, ptr %61, i32 0, i32 0
  %16495 = load double, ptr %16494, align 8, !tbaa !11
  %16496 = load ptr, ptr %14, align 8, !tbaa !5
  %16497 = load i32, ptr %22, align 4, !tbaa !9
  %16498 = sext i32 %16497 to i64
  %16499 = getelementptr inbounds %struct.doublecomplex, ptr %16496, i64 %16498
  %16500 = getelementptr inbounds %struct.doublecomplex, ptr %16499, i32 0, i32 0
  %16501 = load double, ptr %16500, align 8, !tbaa !11
  %16502 = getelementptr inbounds %struct.doublecomplex, ptr %61, i32 0, i32 1
  %16503 = load double, ptr %16502, align 8, !tbaa !14
  %16504 = load ptr, ptr %14, align 8, !tbaa !5
  %16505 = load i32, ptr %22, align 4, !tbaa !9
  %16506 = sext i32 %16505 to i64
  %16507 = getelementptr inbounds %struct.doublecomplex, ptr %16504, i64 %16506
  %16508 = getelementptr inbounds %struct.doublecomplex, ptr %16507, i32 0, i32 1
  %16509 = load double, ptr %16508, align 8, !tbaa !14
  %16510 = fmul double %16503, %16509
  %16511 = fneg double %16510
  %16512 = call double @llvm.fmuladd.f64(double %16495, double %16501, double %16511)
  %16513 = getelementptr inbounds %struct.doublecomplex, ptr %40, i32 0, i32 0
  store double %16512, ptr %16513, align 8, !tbaa !11
  %16514 = getelementptr inbounds %struct.doublecomplex, ptr %61, i32 0, i32 0
  %16515 = load double, ptr %16514, align 8, !tbaa !11
  %16516 = load ptr, ptr %14, align 8, !tbaa !5
  %16517 = load i32, ptr %22, align 4, !tbaa !9
  %16518 = sext i32 %16517 to i64
  %16519 = getelementptr inbounds %struct.doublecomplex, ptr %16516, i64 %16518
  %16520 = getelementptr inbounds %struct.doublecomplex, ptr %16519, i32 0, i32 1
  %16521 = load double, ptr %16520, align 8, !tbaa !14
  %16522 = getelementptr inbounds %struct.doublecomplex, ptr %61, i32 0, i32 1
  %16523 = load double, ptr %16522, align 8, !tbaa !14
  %16524 = load ptr, ptr %14, align 8, !tbaa !5
  %16525 = load i32, ptr %22, align 4, !tbaa !9
  %16526 = sext i32 %16525 to i64
  %16527 = getelementptr inbounds %struct.doublecomplex, ptr %16524, i64 %16526
  %16528 = getelementptr inbounds %struct.doublecomplex, ptr %16527, i32 0, i32 0
  %16529 = load double, ptr %16528, align 8, !tbaa !11
  %16530 = fmul double %16523, %16529
  %16531 = call double @llvm.fmuladd.f64(double %16515, double %16521, double %16530)
  %16532 = getelementptr inbounds %struct.doublecomplex, ptr %40, i32 0, i32 1
  store double %16531, ptr %16532, align 8, !tbaa !14
  %16533 = getelementptr inbounds %struct.doublecomplex, ptr %37, i32 0, i32 0
  %16534 = load double, ptr %16533, align 8, !tbaa !11
  %16535 = getelementptr inbounds %struct.doublecomplex, ptr %40, i32 0, i32 0
  %16536 = load double, ptr %16535, align 8, !tbaa !11
  %16537 = fadd double %16534, %16536
  %16538 = getelementptr inbounds %struct.doublecomplex, ptr %36, i32 0, i32 0
  store double %16537, ptr %16538, align 8, !tbaa !11
  %16539 = getelementptr inbounds %struct.doublecomplex, ptr %37, i32 0, i32 1
  %16540 = load double, ptr %16539, align 8, !tbaa !14
  %16541 = getelementptr inbounds %struct.doublecomplex, ptr %40, i32 0, i32 1
  %16542 = load double, ptr %16541, align 8, !tbaa !14
  %16543 = fadd double %16540, %16542
  %16544 = getelementptr inbounds %struct.doublecomplex, ptr %36, i32 0, i32 1
  store double %16543, ptr %16544, align 8, !tbaa !14
  %16545 = load i32, ptr %49, align 4, !tbaa !9
  %16546 = load i32, ptr %17, align 4, !tbaa !9
  %16547 = shl i32 %16546, 2
  %16548 = add nsw i32 %16545, %16547
  store i32 %16548, ptr %23, align 4, !tbaa !9
  %16549 = getelementptr inbounds %struct.doublecomplex, ptr %62, i32 0, i32 0
  %16550 = load double, ptr %16549, align 8, !tbaa !11
  %16551 = load ptr, ptr %14, align 8, !tbaa !5
  %16552 = load i32, ptr %23, align 4, !tbaa !9
  %16553 = sext i32 %16552 to i64
  %16554 = getelementptr inbounds %struct.doublecomplex, ptr %16551, i64 %16553
  %16555 = getelementptr inbounds %struct.doublecomplex, ptr %16554, i32 0, i32 0
  %16556 = load double, ptr %16555, align 8, !tbaa !11
  %16557 = getelementptr inbounds %struct.doublecomplex, ptr %62, i32 0, i32 1
  %16558 = load double, ptr %16557, align 8, !tbaa !14
  %16559 = load ptr, ptr %14, align 8, !tbaa !5
  %16560 = load i32, ptr %23, align 4, !tbaa !9
  %16561 = sext i32 %16560 to i64
  %16562 = getelementptr inbounds %struct.doublecomplex, ptr %16559, i64 %16561
  %16563 = getelementptr inbounds %struct.doublecomplex, ptr %16562, i32 0, i32 1
  %16564 = load double, ptr %16563, align 8, !tbaa !14
  %16565 = fmul double %16558, %16564
  %16566 = fneg double %16565
  %16567 = call double @llvm.fmuladd.f64(double %16550, double %16556, double %16566)
  %16568 = getelementptr inbounds %struct.doublecomplex, ptr %41, i32 0, i32 0
  store double %16567, ptr %16568, align 8, !tbaa !11
  %16569 = getelementptr inbounds %struct.doublecomplex, ptr %62, i32 0, i32 0
  %16570 = load double, ptr %16569, align 8, !tbaa !11
  %16571 = load ptr, ptr %14, align 8, !tbaa !5
  %16572 = load i32, ptr %23, align 4, !tbaa !9
  %16573 = sext i32 %16572 to i64
  %16574 = getelementptr inbounds %struct.doublecomplex, ptr %16571, i64 %16573
  %16575 = getelementptr inbounds %struct.doublecomplex, ptr %16574, i32 0, i32 1
  %16576 = load double, ptr %16575, align 8, !tbaa !14
  %16577 = getelementptr inbounds %struct.doublecomplex, ptr %62, i32 0, i32 1
  %16578 = load double, ptr %16577, align 8, !tbaa !14
  %16579 = load ptr, ptr %14, align 8, !tbaa !5
  %16580 = load i32, ptr %23, align 4, !tbaa !9
  %16581 = sext i32 %16580 to i64
  %16582 = getelementptr inbounds %struct.doublecomplex, ptr %16579, i64 %16581
  %16583 = getelementptr inbounds %struct.doublecomplex, ptr %16582, i32 0, i32 0
  %16584 = load double, ptr %16583, align 8, !tbaa !11
  %16585 = fmul double %16578, %16584
  %16586 = call double @llvm.fmuladd.f64(double %16570, double %16576, double %16585)
  %16587 = getelementptr inbounds %struct.doublecomplex, ptr %41, i32 0, i32 1
  store double %16586, ptr %16587, align 8, !tbaa !14
  %16588 = getelementptr inbounds %struct.doublecomplex, ptr %36, i32 0, i32 0
  %16589 = load double, ptr %16588, align 8, !tbaa !11
  %16590 = getelementptr inbounds %struct.doublecomplex, ptr %41, i32 0, i32 0
  %16591 = load double, ptr %16590, align 8, !tbaa !11
  %16592 = fadd double %16589, %16591
  %16593 = getelementptr inbounds %struct.doublecomplex, ptr %35, i32 0, i32 0
  store double %16592, ptr %16593, align 8, !tbaa !11
  %16594 = getelementptr inbounds %struct.doublecomplex, ptr %36, i32 0, i32 1
  %16595 = load double, ptr %16594, align 8, !tbaa !14
  %16596 = getelementptr inbounds %struct.doublecomplex, ptr %41, i32 0, i32 1
  %16597 = load double, ptr %16596, align 8, !tbaa !14
  %16598 = fadd double %16595, %16597
  %16599 = getelementptr inbounds %struct.doublecomplex, ptr %35, i32 0, i32 1
  store double %16598, ptr %16599, align 8, !tbaa !14
  %16600 = load i32, ptr %49, align 4, !tbaa !9
  %16601 = load i32, ptr %17, align 4, !tbaa !9
  %16602 = mul nsw i32 %16601, 5
  %16603 = add nsw i32 %16600, %16602
  store i32 %16603, ptr %24, align 4, !tbaa !9
  %16604 = getelementptr inbounds %struct.doublecomplex, ptr %63, i32 0, i32 0
  %16605 = load double, ptr %16604, align 8, !tbaa !11
  %16606 = load ptr, ptr %14, align 8, !tbaa !5
  %16607 = load i32, ptr %24, align 4, !tbaa !9
  %16608 = sext i32 %16607 to i64
  %16609 = getelementptr inbounds %struct.doublecomplex, ptr %16606, i64 %16608
  %16610 = getelementptr inbounds %struct.doublecomplex, ptr %16609, i32 0, i32 0
  %16611 = load double, ptr %16610, align 8, !tbaa !11
  %16612 = getelementptr inbounds %struct.doublecomplex, ptr %63, i32 0, i32 1
  %16613 = load double, ptr %16612, align 8, !tbaa !14
  %16614 = load ptr, ptr %14, align 8, !tbaa !5
  %16615 = load i32, ptr %24, align 4, !tbaa !9
  %16616 = sext i32 %16615 to i64
  %16617 = getelementptr inbounds %struct.doublecomplex, ptr %16614, i64 %16616
  %16618 = getelementptr inbounds %struct.doublecomplex, ptr %16617, i32 0, i32 1
  %16619 = load double, ptr %16618, align 8, !tbaa !14
  %16620 = fmul double %16613, %16619
  %16621 = fneg double %16620
  %16622 = call double @llvm.fmuladd.f64(double %16605, double %16611, double %16621)
  %16623 = getelementptr inbounds %struct.doublecomplex, ptr %42, i32 0, i32 0
  store double %16622, ptr %16623, align 8, !tbaa !11
  %16624 = getelementptr inbounds %struct.doublecomplex, ptr %63, i32 0, i32 0
  %16625 = load double, ptr %16624, align 8, !tbaa !11
  %16626 = load ptr, ptr %14, align 8, !tbaa !5
  %16627 = load i32, ptr %24, align 4, !tbaa !9
  %16628 = sext i32 %16627 to i64
  %16629 = getelementptr inbounds %struct.doublecomplex, ptr %16626, i64 %16628
  %16630 = getelementptr inbounds %struct.doublecomplex, ptr %16629, i32 0, i32 1
  %16631 = load double, ptr %16630, align 8, !tbaa !14
  %16632 = getelementptr inbounds %struct.doublecomplex, ptr %63, i32 0, i32 1
  %16633 = load double, ptr %16632, align 8, !tbaa !14
  %16634 = load ptr, ptr %14, align 8, !tbaa !5
  %16635 = load i32, ptr %24, align 4, !tbaa !9
  %16636 = sext i32 %16635 to i64
  %16637 = getelementptr inbounds %struct.doublecomplex, ptr %16634, i64 %16636
  %16638 = getelementptr inbounds %struct.doublecomplex, ptr %16637, i32 0, i32 0
  %16639 = load double, ptr %16638, align 8, !tbaa !11
  %16640 = fmul double %16633, %16639
  %16641 = call double @llvm.fmuladd.f64(double %16625, double %16631, double %16640)
  %16642 = getelementptr inbounds %struct.doublecomplex, ptr %42, i32 0, i32 1
  store double %16641, ptr %16642, align 8, !tbaa !14
  %16643 = getelementptr inbounds %struct.doublecomplex, ptr %35, i32 0, i32 0
  %16644 = load double, ptr %16643, align 8, !tbaa !11
  %16645 = getelementptr inbounds %struct.doublecomplex, ptr %42, i32 0, i32 0
  %16646 = load double, ptr %16645, align 8, !tbaa !11
  %16647 = fadd double %16644, %16646
  %16648 = getelementptr inbounds %struct.doublecomplex, ptr %34, i32 0, i32 0
  store double %16647, ptr %16648, align 8, !tbaa !11
  %16649 = getelementptr inbounds %struct.doublecomplex, ptr %35, i32 0, i32 1
  %16650 = load double, ptr %16649, align 8, !tbaa !14
  %16651 = getelementptr inbounds %struct.doublecomplex, ptr %42, i32 0, i32 1
  %16652 = load double, ptr %16651, align 8, !tbaa !14
  %16653 = fadd double %16650, %16652
  %16654 = getelementptr inbounds %struct.doublecomplex, ptr %34, i32 0, i32 1
  store double %16653, ptr %16654, align 8, !tbaa !14
  %16655 = load i32, ptr %49, align 4, !tbaa !9
  %16656 = load i32, ptr %17, align 4, !tbaa !9
  %16657 = mul nsw i32 %16656, 6
  %16658 = add nsw i32 %16655, %16657
  store i32 %16658, ptr %25, align 4, !tbaa !9
  %16659 = getelementptr inbounds %struct.doublecomplex, ptr %64, i32 0, i32 0
  %16660 = load double, ptr %16659, align 8, !tbaa !11
  %16661 = load ptr, ptr %14, align 8, !tbaa !5
  %16662 = load i32, ptr %25, align 4, !tbaa !9
  %16663 = sext i32 %16662 to i64
  %16664 = getelementptr inbounds %struct.doublecomplex, ptr %16661, i64 %16663
  %16665 = getelementptr inbounds %struct.doublecomplex, ptr %16664, i32 0, i32 0
  %16666 = load double, ptr %16665, align 8, !tbaa !11
  %16667 = getelementptr inbounds %struct.doublecomplex, ptr %64, i32 0, i32 1
  %16668 = load double, ptr %16667, align 8, !tbaa !14
  %16669 = load ptr, ptr %14, align 8, !tbaa !5
  %16670 = load i32, ptr %25, align 4, !tbaa !9
  %16671 = sext i32 %16670 to i64
  %16672 = getelementptr inbounds %struct.doublecomplex, ptr %16669, i64 %16671
  %16673 = getelementptr inbounds %struct.doublecomplex, ptr %16672, i32 0, i32 1
  %16674 = load double, ptr %16673, align 8, !tbaa !14
  %16675 = fmul double %16668, %16674
  %16676 = fneg double %16675
  %16677 = call double @llvm.fmuladd.f64(double %16660, double %16666, double %16676)
  %16678 = getelementptr inbounds %struct.doublecomplex, ptr %43, i32 0, i32 0
  store double %16677, ptr %16678, align 8, !tbaa !11
  %16679 = getelementptr inbounds %struct.doublecomplex, ptr %64, i32 0, i32 0
  %16680 = load double, ptr %16679, align 8, !tbaa !11
  %16681 = load ptr, ptr %14, align 8, !tbaa !5
  %16682 = load i32, ptr %25, align 4, !tbaa !9
  %16683 = sext i32 %16682 to i64
  %16684 = getelementptr inbounds %struct.doublecomplex, ptr %16681, i64 %16683
  %16685 = getelementptr inbounds %struct.doublecomplex, ptr %16684, i32 0, i32 1
  %16686 = load double, ptr %16685, align 8, !tbaa !14
  %16687 = getelementptr inbounds %struct.doublecomplex, ptr %64, i32 0, i32 1
  %16688 = load double, ptr %16687, align 8, !tbaa !14
  %16689 = load ptr, ptr %14, align 8, !tbaa !5
  %16690 = load i32, ptr %25, align 4, !tbaa !9
  %16691 = sext i32 %16690 to i64
  %16692 = getelementptr inbounds %struct.doublecomplex, ptr %16689, i64 %16691
  %16693 = getelementptr inbounds %struct.doublecomplex, ptr %16692, i32 0, i32 0
  %16694 = load double, ptr %16693, align 8, !tbaa !11
  %16695 = fmul double %16688, %16694
  %16696 = call double @llvm.fmuladd.f64(double %16680, double %16686, double %16695)
  %16697 = getelementptr inbounds %struct.doublecomplex, ptr %43, i32 0, i32 1
  store double %16696, ptr %16697, align 8, !tbaa !14
  %16698 = getelementptr inbounds %struct.doublecomplex, ptr %34, i32 0, i32 0
  %16699 = load double, ptr %16698, align 8, !tbaa !11
  %16700 = getelementptr inbounds %struct.doublecomplex, ptr %43, i32 0, i32 0
  %16701 = load double, ptr %16700, align 8, !tbaa !11
  %16702 = fadd double %16699, %16701
  %16703 = getelementptr inbounds %struct.doublecomplex, ptr %33, i32 0, i32 0
  store double %16702, ptr %16703, align 8, !tbaa !11
  %16704 = getelementptr inbounds %struct.doublecomplex, ptr %34, i32 0, i32 1
  %16705 = load double, ptr %16704, align 8, !tbaa !14
  %16706 = getelementptr inbounds %struct.doublecomplex, ptr %43, i32 0, i32 1
  %16707 = load double, ptr %16706, align 8, !tbaa !14
  %16708 = fadd double %16705, %16707
  %16709 = getelementptr inbounds %struct.doublecomplex, ptr %33, i32 0, i32 1
  store double %16708, ptr %16709, align 8, !tbaa !14
  %16710 = load i32, ptr %49, align 4, !tbaa !9
  %16711 = load i32, ptr %17, align 4, !tbaa !9
  %16712 = mul nsw i32 %16711, 7
  %16713 = add nsw i32 %16710, %16712
  store i32 %16713, ptr %26, align 4, !tbaa !9
  %16714 = getelementptr inbounds %struct.doublecomplex, ptr %65, i32 0, i32 0
  %16715 = load double, ptr %16714, align 8, !tbaa !11
  %16716 = load ptr, ptr %14, align 8, !tbaa !5
  %16717 = load i32, ptr %26, align 4, !tbaa !9
  %16718 = sext i32 %16717 to i64
  %16719 = getelementptr inbounds %struct.doublecomplex, ptr %16716, i64 %16718
  %16720 = getelementptr inbounds %struct.doublecomplex, ptr %16719, i32 0, i32 0
  %16721 = load double, ptr %16720, align 8, !tbaa !11
  %16722 = getelementptr inbounds %struct.doublecomplex, ptr %65, i32 0, i32 1
  %16723 = load double, ptr %16722, align 8, !tbaa !14
  %16724 = load ptr, ptr %14, align 8, !tbaa !5
  %16725 = load i32, ptr %26, align 4, !tbaa !9
  %16726 = sext i32 %16725 to i64
  %16727 = getelementptr inbounds %struct.doublecomplex, ptr %16724, i64 %16726
  %16728 = getelementptr inbounds %struct.doublecomplex, ptr %16727, i32 0, i32 1
  %16729 = load double, ptr %16728, align 8, !tbaa !14
  %16730 = fmul double %16723, %16729
  %16731 = fneg double %16730
  %16732 = call double @llvm.fmuladd.f64(double %16715, double %16721, double %16731)
  %16733 = getelementptr inbounds %struct.doublecomplex, ptr %44, i32 0, i32 0
  store double %16732, ptr %16733, align 8, !tbaa !11
  %16734 = getelementptr inbounds %struct.doublecomplex, ptr %65, i32 0, i32 0
  %16735 = load double, ptr %16734, align 8, !tbaa !11
  %16736 = load ptr, ptr %14, align 8, !tbaa !5
  %16737 = load i32, ptr %26, align 4, !tbaa !9
  %16738 = sext i32 %16737 to i64
  %16739 = getelementptr inbounds %struct.doublecomplex, ptr %16736, i64 %16738
  %16740 = getelementptr inbounds %struct.doublecomplex, ptr %16739, i32 0, i32 1
  %16741 = load double, ptr %16740, align 8, !tbaa !14
  %16742 = getelementptr inbounds %struct.doublecomplex, ptr %65, i32 0, i32 1
  %16743 = load double, ptr %16742, align 8, !tbaa !14
  %16744 = load ptr, ptr %14, align 8, !tbaa !5
  %16745 = load i32, ptr %26, align 4, !tbaa !9
  %16746 = sext i32 %16745 to i64
  %16747 = getelementptr inbounds %struct.doublecomplex, ptr %16744, i64 %16746
  %16748 = getelementptr inbounds %struct.doublecomplex, ptr %16747, i32 0, i32 0
  %16749 = load double, ptr %16748, align 8, !tbaa !11
  %16750 = fmul double %16743, %16749
  %16751 = call double @llvm.fmuladd.f64(double %16735, double %16741, double %16750)
  %16752 = getelementptr inbounds %struct.doublecomplex, ptr %44, i32 0, i32 1
  store double %16751, ptr %16752, align 8, !tbaa !14
  %16753 = getelementptr inbounds %struct.doublecomplex, ptr %33, i32 0, i32 0
  %16754 = load double, ptr %16753, align 8, !tbaa !11
  %16755 = getelementptr inbounds %struct.doublecomplex, ptr %44, i32 0, i32 0
  %16756 = load double, ptr %16755, align 8, !tbaa !11
  %16757 = fadd double %16754, %16756
  %16758 = getelementptr inbounds %struct.doublecomplex, ptr %32, i32 0, i32 0
  store double %16757, ptr %16758, align 8, !tbaa !11
  %16759 = getelementptr inbounds %struct.doublecomplex, ptr %33, i32 0, i32 1
  %16760 = load double, ptr %16759, align 8, !tbaa !14
  %16761 = getelementptr inbounds %struct.doublecomplex, ptr %44, i32 0, i32 1
  %16762 = load double, ptr %16761, align 8, !tbaa !14
  %16763 = fadd double %16760, %16762
  %16764 = getelementptr inbounds %struct.doublecomplex, ptr %32, i32 0, i32 1
  store double %16763, ptr %16764, align 8, !tbaa !14
  %16765 = load i32, ptr %49, align 4, !tbaa !9
  %16766 = load i32, ptr %17, align 4, !tbaa !9
  %16767 = shl i32 %16766, 3
  %16768 = add nsw i32 %16765, %16767
  store i32 %16768, ptr %27, align 4, !tbaa !9
  %16769 = getelementptr inbounds %struct.doublecomplex, ptr %66, i32 0, i32 0
  %16770 = load double, ptr %16769, align 8, !tbaa !11
  %16771 = load ptr, ptr %14, align 8, !tbaa !5
  %16772 = load i32, ptr %27, align 4, !tbaa !9
  %16773 = sext i32 %16772 to i64
  %16774 = getelementptr inbounds %struct.doublecomplex, ptr %16771, i64 %16773
  %16775 = getelementptr inbounds %struct.doublecomplex, ptr %16774, i32 0, i32 0
  %16776 = load double, ptr %16775, align 8, !tbaa !11
  %16777 = getelementptr inbounds %struct.doublecomplex, ptr %66, i32 0, i32 1
  %16778 = load double, ptr %16777, align 8, !tbaa !14
  %16779 = load ptr, ptr %14, align 8, !tbaa !5
  %16780 = load i32, ptr %27, align 4, !tbaa !9
  %16781 = sext i32 %16780 to i64
  %16782 = getelementptr inbounds %struct.doublecomplex, ptr %16779, i64 %16781
  %16783 = getelementptr inbounds %struct.doublecomplex, ptr %16782, i32 0, i32 1
  %16784 = load double, ptr %16783, align 8, !tbaa !14
  %16785 = fmul double %16778, %16784
  %16786 = fneg double %16785
  %16787 = call double @llvm.fmuladd.f64(double %16770, double %16776, double %16786)
  %16788 = getelementptr inbounds %struct.doublecomplex, ptr %45, i32 0, i32 0
  store double %16787, ptr %16788, align 8, !tbaa !11
  %16789 = getelementptr inbounds %struct.doublecomplex, ptr %66, i32 0, i32 0
  %16790 = load double, ptr %16789, align 8, !tbaa !11
  %16791 = load ptr, ptr %14, align 8, !tbaa !5
  %16792 = load i32, ptr %27, align 4, !tbaa !9
  %16793 = sext i32 %16792 to i64
  %16794 = getelementptr inbounds %struct.doublecomplex, ptr %16791, i64 %16793
  %16795 = getelementptr inbounds %struct.doublecomplex, ptr %16794, i32 0, i32 1
  %16796 = load double, ptr %16795, align 8, !tbaa !14
  %16797 = getelementptr inbounds %struct.doublecomplex, ptr %66, i32 0, i32 1
  %16798 = load double, ptr %16797, align 8, !tbaa !14
  %16799 = load ptr, ptr %14, align 8, !tbaa !5
  %16800 = load i32, ptr %27, align 4, !tbaa !9
  %16801 = sext i32 %16800 to i64
  %16802 = getelementptr inbounds %struct.doublecomplex, ptr %16799, i64 %16801
  %16803 = getelementptr inbounds %struct.doublecomplex, ptr %16802, i32 0, i32 0
  %16804 = load double, ptr %16803, align 8, !tbaa !11
  %16805 = fmul double %16798, %16804
  %16806 = call double @llvm.fmuladd.f64(double %16790, double %16796, double %16805)
  %16807 = getelementptr inbounds %struct.doublecomplex, ptr %45, i32 0, i32 1
  store double %16806, ptr %16807, align 8, !tbaa !14
  %16808 = getelementptr inbounds %struct.doublecomplex, ptr %32, i32 0, i32 0
  %16809 = load double, ptr %16808, align 8, !tbaa !11
  %16810 = getelementptr inbounds %struct.doublecomplex, ptr %45, i32 0, i32 0
  %16811 = load double, ptr %16810, align 8, !tbaa !11
  %16812 = fadd double %16809, %16811
  %16813 = getelementptr inbounds %struct.doublecomplex, ptr %31, i32 0, i32 0
  store double %16812, ptr %16813, align 8, !tbaa !11
  %16814 = getelementptr inbounds %struct.doublecomplex, ptr %32, i32 0, i32 1
  %16815 = load double, ptr %16814, align 8, !tbaa !14
  %16816 = getelementptr inbounds %struct.doublecomplex, ptr %45, i32 0, i32 1
  %16817 = load double, ptr %16816, align 8, !tbaa !14
  %16818 = fadd double %16815, %16817
  %16819 = getelementptr inbounds %struct.doublecomplex, ptr %31, i32 0, i32 1
  store double %16818, ptr %16819, align 8, !tbaa !14
  %16820 = load i32, ptr %49, align 4, !tbaa !9
  %16821 = load i32, ptr %17, align 4, !tbaa !9
  %16822 = mul nsw i32 %16821, 9
  %16823 = add nsw i32 %16820, %16822
  store i32 %16823, ptr %28, align 4, !tbaa !9
  %16824 = getelementptr inbounds %struct.doublecomplex, ptr %67, i32 0, i32 0
  %16825 = load double, ptr %16824, align 8, !tbaa !11
  %16826 = load ptr, ptr %14, align 8, !tbaa !5
  %16827 = load i32, ptr %28, align 4, !tbaa !9
  %16828 = sext i32 %16827 to i64
  %16829 = getelementptr inbounds %struct.doublecomplex, ptr %16826, i64 %16828
  %16830 = getelementptr inbounds %struct.doublecomplex, ptr %16829, i32 0, i32 0
  %16831 = load double, ptr %16830, align 8, !tbaa !11
  %16832 = getelementptr inbounds %struct.doublecomplex, ptr %67, i32 0, i32 1
  %16833 = load double, ptr %16832, align 8, !tbaa !14
  %16834 = load ptr, ptr %14, align 8, !tbaa !5
  %16835 = load i32, ptr %28, align 4, !tbaa !9
  %16836 = sext i32 %16835 to i64
  %16837 = getelementptr inbounds %struct.doublecomplex, ptr %16834, i64 %16836
  %16838 = getelementptr inbounds %struct.doublecomplex, ptr %16837, i32 0, i32 1
  %16839 = load double, ptr %16838, align 8, !tbaa !14
  %16840 = fmul double %16833, %16839
  %16841 = fneg double %16840
  %16842 = call double @llvm.fmuladd.f64(double %16825, double %16831, double %16841)
  %16843 = getelementptr inbounds %struct.doublecomplex, ptr %46, i32 0, i32 0
  store double %16842, ptr %16843, align 8, !tbaa !11
  %16844 = getelementptr inbounds %struct.doublecomplex, ptr %67, i32 0, i32 0
  %16845 = load double, ptr %16844, align 8, !tbaa !11
  %16846 = load ptr, ptr %14, align 8, !tbaa !5
  %16847 = load i32, ptr %28, align 4, !tbaa !9
  %16848 = sext i32 %16847 to i64
  %16849 = getelementptr inbounds %struct.doublecomplex, ptr %16846, i64 %16848
  %16850 = getelementptr inbounds %struct.doublecomplex, ptr %16849, i32 0, i32 1
  %16851 = load double, ptr %16850, align 8, !tbaa !14
  %16852 = getelementptr inbounds %struct.doublecomplex, ptr %67, i32 0, i32 1
  %16853 = load double, ptr %16852, align 8, !tbaa !14
  %16854 = load ptr, ptr %14, align 8, !tbaa !5
  %16855 = load i32, ptr %28, align 4, !tbaa !9
  %16856 = sext i32 %16855 to i64
  %16857 = getelementptr inbounds %struct.doublecomplex, ptr %16854, i64 %16856
  %16858 = getelementptr inbounds %struct.doublecomplex, ptr %16857, i32 0, i32 0
  %16859 = load double, ptr %16858, align 8, !tbaa !11
  %16860 = fmul double %16853, %16859
  %16861 = call double @llvm.fmuladd.f64(double %16845, double %16851, double %16860)
  %16862 = getelementptr inbounds %struct.doublecomplex, ptr %46, i32 0, i32 1
  store double %16861, ptr %16862, align 8, !tbaa !14
  %16863 = getelementptr inbounds %struct.doublecomplex, ptr %31, i32 0, i32 0
  %16864 = load double, ptr %16863, align 8, !tbaa !11
  %16865 = getelementptr inbounds %struct.doublecomplex, ptr %46, i32 0, i32 0
  %16866 = load double, ptr %16865, align 8, !tbaa !11
  %16867 = fadd double %16864, %16866
  %16868 = getelementptr inbounds %struct.doublecomplex, ptr %30, i32 0, i32 0
  store double %16867, ptr %16868, align 8, !tbaa !11
  %16869 = getelementptr inbounds %struct.doublecomplex, ptr %31, i32 0, i32 1
  %16870 = load double, ptr %16869, align 8, !tbaa !14
  %16871 = getelementptr inbounds %struct.doublecomplex, ptr %46, i32 0, i32 1
  %16872 = load double, ptr %16871, align 8, !tbaa !14
  %16873 = fadd double %16870, %16872
  %16874 = getelementptr inbounds %struct.doublecomplex, ptr %30, i32 0, i32 1
  store double %16873, ptr %16874, align 8, !tbaa !14
  %16875 = getelementptr inbounds %struct.doublecomplex, ptr %30, i32 0, i32 0
  %16876 = load double, ptr %16875, align 8, !tbaa !11
  %16877 = getelementptr inbounds %struct.doublecomplex, ptr %70, i32 0, i32 0
  store double %16876, ptr %16877, align 8, !tbaa !11
  %16878 = getelementptr inbounds %struct.doublecomplex, ptr %30, i32 0, i32 1
  %16879 = load double, ptr %16878, align 8, !tbaa !14
  %16880 = getelementptr inbounds %struct.doublecomplex, ptr %70, i32 0, i32 1
  store double %16879, ptr %16880, align 8, !tbaa !14
  %16881 = load i32, ptr %49, align 4, !tbaa !9
  %16882 = load i32, ptr %17, align 4, !tbaa !9
  %16883 = add nsw i32 %16881, %16882
  store i32 %16883, ptr %20, align 4, !tbaa !9
  %16884 = load i32, ptr %49, align 4, !tbaa !9
  %16885 = load i32, ptr %17, align 4, !tbaa !9
  %16886 = add nsw i32 %16884, %16885
  store i32 %16886, ptr %21, align 4, !tbaa !9
  %16887 = getelementptr inbounds %struct.doublecomplex, ptr %70, i32 0, i32 0
  %16888 = load double, ptr %16887, align 8, !tbaa !11
  %16889 = getelementptr inbounds %struct.doublecomplex, ptr %50, i32 0, i32 0
  %16890 = load double, ptr %16889, align 8, !tbaa !11
  %16891 = getelementptr inbounds %struct.doublecomplex, ptr %70, i32 0, i32 1
  %16892 = load double, ptr %16891, align 8, !tbaa !14
  %16893 = getelementptr inbounds %struct.doublecomplex, ptr %50, i32 0, i32 1
  %16894 = load double, ptr %16893, align 8, !tbaa !14
  %16895 = fmul double %16892, %16894
  %16896 = fneg double %16895
  %16897 = call double @llvm.fmuladd.f64(double %16888, double %16890, double %16896)
  %16898 = getelementptr inbounds %struct.doublecomplex, ptr %31, i32 0, i32 0
  store double %16897, ptr %16898, align 8, !tbaa !11
  %16899 = getelementptr inbounds %struct.doublecomplex, ptr %70, i32 0, i32 0
  %16900 = load double, ptr %16899, align 8, !tbaa !11
  %16901 = getelementptr inbounds %struct.doublecomplex, ptr %50, i32 0, i32 1
  %16902 = load double, ptr %16901, align 8, !tbaa !14
  %16903 = getelementptr inbounds %struct.doublecomplex, ptr %70, i32 0, i32 1
  %16904 = load double, ptr %16903, align 8, !tbaa !14
  %16905 = getelementptr inbounds %struct.doublecomplex, ptr %50, i32 0, i32 0
  %16906 = load double, ptr %16905, align 8, !tbaa !11
  %16907 = fmul double %16904, %16906
  %16908 = call double @llvm.fmuladd.f64(double %16900, double %16902, double %16907)
  %16909 = getelementptr inbounds %struct.doublecomplex, ptr %31, i32 0, i32 1
  store double %16908, ptr %16909, align 8, !tbaa !14
  %16910 = load ptr, ptr %14, align 8, !tbaa !5
  %16911 = load i32, ptr %21, align 4, !tbaa !9
  %16912 = sext i32 %16911 to i64
  %16913 = getelementptr inbounds %struct.doublecomplex, ptr %16910, i64 %16912
  %16914 = getelementptr inbounds %struct.doublecomplex, ptr %16913, i32 0, i32 0
  %16915 = load double, ptr %16914, align 8, !tbaa !11
  %16916 = getelementptr inbounds %struct.doublecomplex, ptr %31, i32 0, i32 0
  %16917 = load double, ptr %16916, align 8, !tbaa !11
  %16918 = fsub double %16915, %16917
  %16919 = getelementptr inbounds %struct.doublecomplex, ptr %30, i32 0, i32 0
  store double %16918, ptr %16919, align 8, !tbaa !11
  %16920 = load ptr, ptr %14, align 8, !tbaa !5
  %16921 = load i32, ptr %21, align 4, !tbaa !9
  %16922 = sext i32 %16921 to i64
  %16923 = getelementptr inbounds %struct.doublecomplex, ptr %16920, i64 %16922
  %16924 = getelementptr inbounds %struct.doublecomplex, ptr %16923, i32 0, i32 1
  %16925 = load double, ptr %16924, align 8, !tbaa !14
  %16926 = getelementptr inbounds %struct.doublecomplex, ptr %31, i32 0, i32 1
  %16927 = load double, ptr %16926, align 8, !tbaa !14
  %16928 = fsub double %16925, %16927
  %16929 = getelementptr inbounds %struct.doublecomplex, ptr %30, i32 0, i32 1
  store double %16928, ptr %16929, align 8, !tbaa !14
  %16930 = getelementptr inbounds %struct.doublecomplex, ptr %30, i32 0, i32 0
  %16931 = load double, ptr %16930, align 8, !tbaa !11
  %16932 = load ptr, ptr %14, align 8, !tbaa !5
  %16933 = load i32, ptr %20, align 4, !tbaa !9
  %16934 = sext i32 %16933 to i64
  %16935 = getelementptr inbounds %struct.doublecomplex, ptr %16932, i64 %16934
  %16936 = getelementptr inbounds %struct.doublecomplex, ptr %16935, i32 0, i32 0
  store double %16931, ptr %16936, align 8, !tbaa !11
  %16937 = getelementptr inbounds %struct.doublecomplex, ptr %30, i32 0, i32 1
  %16938 = load double, ptr %16937, align 8, !tbaa !14
  %16939 = load ptr, ptr %14, align 8, !tbaa !5
  %16940 = load i32, ptr %20, align 4, !tbaa !9
  %16941 = sext i32 %16940 to i64
  %16942 = getelementptr inbounds %struct.doublecomplex, ptr %16939, i64 %16941
  %16943 = getelementptr inbounds %struct.doublecomplex, ptr %16942, i32 0, i32 1
  store double %16938, ptr %16943, align 8, !tbaa !14
  %16944 = load i32, ptr %49, align 4, !tbaa !9
  %16945 = load i32, ptr %17, align 4, !tbaa !9
  %16946 = shl i32 %16945, 1
  %16947 = add nsw i32 %16944, %16946
  store i32 %16947, ptr %20, align 4, !tbaa !9
  %16948 = load i32, ptr %49, align 4, !tbaa !9
  %16949 = load i32, ptr %17, align 4, !tbaa !9
  %16950 = shl i32 %16949, 1
  %16951 = add nsw i32 %16948, %16950
  store i32 %16951, ptr %21, align 4, !tbaa !9
  %16952 = getelementptr inbounds %struct.doublecomplex, ptr %70, i32 0, i32 0
  %16953 = load double, ptr %16952, align 8, !tbaa !11
  %16954 = getelementptr inbounds %struct.doublecomplex, ptr %51, i32 0, i32 0
  %16955 = load double, ptr %16954, align 8, !tbaa !11
  %16956 = getelementptr inbounds %struct.doublecomplex, ptr %70, i32 0, i32 1
  %16957 = load double, ptr %16956, align 8, !tbaa !14
  %16958 = getelementptr inbounds %struct.doublecomplex, ptr %51, i32 0, i32 1
  %16959 = load double, ptr %16958, align 8, !tbaa !14
  %16960 = fmul double %16957, %16959
  %16961 = fneg double %16960
  %16962 = call double @llvm.fmuladd.f64(double %16953, double %16955, double %16961)
  %16963 = getelementptr inbounds %struct.doublecomplex, ptr %31, i32 0, i32 0
  store double %16962, ptr %16963, align 8, !tbaa !11
  %16964 = getelementptr inbounds %struct.doublecomplex, ptr %70, i32 0, i32 0
  %16965 = load double, ptr %16964, align 8, !tbaa !11
  %16966 = getelementptr inbounds %struct.doublecomplex, ptr %51, i32 0, i32 1
  %16967 = load double, ptr %16966, align 8, !tbaa !14
  %16968 = getelementptr inbounds %struct.doublecomplex, ptr %70, i32 0, i32 1
  %16969 = load double, ptr %16968, align 8, !tbaa !14
  %16970 = getelementptr inbounds %struct.doublecomplex, ptr %51, i32 0, i32 0
  %16971 = load double, ptr %16970, align 8, !tbaa !11
  %16972 = fmul double %16969, %16971
  %16973 = call double @llvm.fmuladd.f64(double %16965, double %16967, double %16972)
  %16974 = getelementptr inbounds %struct.doublecomplex, ptr %31, i32 0, i32 1
  store double %16973, ptr %16974, align 8, !tbaa !14
  %16975 = load ptr, ptr %14, align 8, !tbaa !5
  %16976 = load i32, ptr %21, align 4, !tbaa !9
  %16977 = sext i32 %16976 to i64
  %16978 = getelementptr inbounds %struct.doublecomplex, ptr %16975, i64 %16977
  %16979 = getelementptr inbounds %struct.doublecomplex, ptr %16978, i32 0, i32 0
  %16980 = load double, ptr %16979, align 8, !tbaa !11
  %16981 = getelementptr inbounds %struct.doublecomplex, ptr %31, i32 0, i32 0
  %16982 = load double, ptr %16981, align 8, !tbaa !11
  %16983 = fsub double %16980, %16982
  %16984 = getelementptr inbounds %struct.doublecomplex, ptr %30, i32 0, i32 0
  store double %16983, ptr %16984, align 8, !tbaa !11
  %16985 = load ptr, ptr %14, align 8, !tbaa !5
  %16986 = load i32, ptr %21, align 4, !tbaa !9
  %16987 = sext i32 %16986 to i64
  %16988 = getelementptr inbounds %struct.doublecomplex, ptr %16985, i64 %16987
  %16989 = getelementptr inbounds %struct.doublecomplex, ptr %16988, i32 0, i32 1
  %16990 = load double, ptr %16989, align 8, !tbaa !14
  %16991 = getelementptr inbounds %struct.doublecomplex, ptr %31, i32 0, i32 1
  %16992 = load double, ptr %16991, align 8, !tbaa !14
  %16993 = fsub double %16990, %16992
  %16994 = getelementptr inbounds %struct.doublecomplex, ptr %30, i32 0, i32 1
  store double %16993, ptr %16994, align 8, !tbaa !14
  %16995 = getelementptr inbounds %struct.doublecomplex, ptr %30, i32 0, i32 0
  %16996 = load double, ptr %16995, align 8, !tbaa !11
  %16997 = load ptr, ptr %14, align 8, !tbaa !5
  %16998 = load i32, ptr %20, align 4, !tbaa !9
  %16999 = sext i32 %16998 to i64
  %17000 = getelementptr inbounds %struct.doublecomplex, ptr %16997, i64 %16999
  %17001 = getelementptr inbounds %struct.doublecomplex, ptr %17000, i32 0, i32 0
  store double %16996, ptr %17001, align 8, !tbaa !11
  %17002 = getelementptr inbounds %struct.doublecomplex, ptr %30, i32 0, i32 1
  %17003 = load double, ptr %17002, align 8, !tbaa !14
  %17004 = load ptr, ptr %14, align 8, !tbaa !5
  %17005 = load i32, ptr %20, align 4, !tbaa !9
  %17006 = sext i32 %17005 to i64
  %17007 = getelementptr inbounds %struct.doublecomplex, ptr %17004, i64 %17006
  %17008 = getelementptr inbounds %struct.doublecomplex, ptr %17007, i32 0, i32 1
  store double %17003, ptr %17008, align 8, !tbaa !14
  %17009 = load i32, ptr %49, align 4, !tbaa !9
  %17010 = load i32, ptr %17, align 4, !tbaa !9
  %17011 = mul nsw i32 %17010, 3
  %17012 = add nsw i32 %17009, %17011
  store i32 %17012, ptr %20, align 4, !tbaa !9
  %17013 = load i32, ptr %49, align 4, !tbaa !9
  %17014 = load i32, ptr %17, align 4, !tbaa !9
  %17015 = mul nsw i32 %17014, 3
  %17016 = add nsw i32 %17013, %17015
  store i32 %17016, ptr %21, align 4, !tbaa !9
  %17017 = getelementptr inbounds %struct.doublecomplex, ptr %70, i32 0, i32 0
  %17018 = load double, ptr %17017, align 8, !tbaa !11
  %17019 = getelementptr inbounds %struct.doublecomplex, ptr %52, i32 0, i32 0
  %17020 = load double, ptr %17019, align 8, !tbaa !11
  %17021 = getelementptr inbounds %struct.doublecomplex, ptr %70, i32 0, i32 1
  %17022 = load double, ptr %17021, align 8, !tbaa !14
  %17023 = getelementptr inbounds %struct.doublecomplex, ptr %52, i32 0, i32 1
  %17024 = load double, ptr %17023, align 8, !tbaa !14
  %17025 = fmul double %17022, %17024
  %17026 = fneg double %17025
  %17027 = call double @llvm.fmuladd.f64(double %17018, double %17020, double %17026)
  %17028 = getelementptr inbounds %struct.doublecomplex, ptr %31, i32 0, i32 0
  store double %17027, ptr %17028, align 8, !tbaa !11
  %17029 = getelementptr inbounds %struct.doublecomplex, ptr %70, i32 0, i32 0
  %17030 = load double, ptr %17029, align 8, !tbaa !11
  %17031 = getelementptr inbounds %struct.doublecomplex, ptr %52, i32 0, i32 1
  %17032 = load double, ptr %17031, align 8, !tbaa !14
  %17033 = getelementptr inbounds %struct.doublecomplex, ptr %70, i32 0, i32 1
  %17034 = load double, ptr %17033, align 8, !tbaa !14
  %17035 = getelementptr inbounds %struct.doublecomplex, ptr %52, i32 0, i32 0
  %17036 = load double, ptr %17035, align 8, !tbaa !11
  %17037 = fmul double %17034, %17036
  %17038 = call double @llvm.fmuladd.f64(double %17030, double %17032, double %17037)
  %17039 = getelementptr inbounds %struct.doublecomplex, ptr %31, i32 0, i32 1
  store double %17038, ptr %17039, align 8, !tbaa !14
  %17040 = load ptr, ptr %14, align 8, !tbaa !5
  %17041 = load i32, ptr %21, align 4, !tbaa !9
  %17042 = sext i32 %17041 to i64
  %17043 = getelementptr inbounds %struct.doublecomplex, ptr %17040, i64 %17042
  %17044 = getelementptr inbounds %struct.doublecomplex, ptr %17043, i32 0, i32 0
  %17045 = load double, ptr %17044, align 8, !tbaa !11
  %17046 = getelementptr inbounds %struct.doublecomplex, ptr %31, i32 0, i32 0
  %17047 = load double, ptr %17046, align 8, !tbaa !11
  %17048 = fsub double %17045, %17047
  %17049 = getelementptr inbounds %struct.doublecomplex, ptr %30, i32 0, i32 0
  store double %17048, ptr %17049, align 8, !tbaa !11
  %17050 = load ptr, ptr %14, align 8, !tbaa !5
  %17051 = load i32, ptr %21, align 4, !tbaa !9
  %17052 = sext i32 %17051 to i64
  %17053 = getelementptr inbounds %struct.doublecomplex, ptr %17050, i64 %17052
  %17054 = getelementptr inbounds %struct.doublecomplex, ptr %17053, i32 0, i32 1
  %17055 = load double, ptr %17054, align 8, !tbaa !14
  %17056 = getelementptr inbounds %struct.doublecomplex, ptr %31, i32 0, i32 1
  %17057 = load double, ptr %17056, align 8, !tbaa !14
  %17058 = fsub double %17055, %17057
  %17059 = getelementptr inbounds %struct.doublecomplex, ptr %30, i32 0, i32 1
  store double %17058, ptr %17059, align 8, !tbaa !14
  %17060 = getelementptr inbounds %struct.doublecomplex, ptr %30, i32 0, i32 0
  %17061 = load double, ptr %17060, align 8, !tbaa !11
  %17062 = load ptr, ptr %14, align 8, !tbaa !5
  %17063 = load i32, ptr %20, align 4, !tbaa !9
  %17064 = sext i32 %17063 to i64
  %17065 = getelementptr inbounds %struct.doublecomplex, ptr %17062, i64 %17064
  %17066 = getelementptr inbounds %struct.doublecomplex, ptr %17065, i32 0, i32 0
  store double %17061, ptr %17066, align 8, !tbaa !11
  %17067 = getelementptr inbounds %struct.doublecomplex, ptr %30, i32 0, i32 1
  %17068 = load double, ptr %17067, align 8, !tbaa !14
  %17069 = load ptr, ptr %14, align 8, !tbaa !5
  %17070 = load i32, ptr %20, align 4, !tbaa !9
  %17071 = sext i32 %17070 to i64
  %17072 = getelementptr inbounds %struct.doublecomplex, ptr %17069, i64 %17071
  %17073 = getelementptr inbounds %struct.doublecomplex, ptr %17072, i32 0, i32 1
  store double %17068, ptr %17073, align 8, !tbaa !14
  %17074 = load i32, ptr %49, align 4, !tbaa !9
  %17075 = load i32, ptr %17, align 4, !tbaa !9
  %17076 = shl i32 %17075, 2
  %17077 = add nsw i32 %17074, %17076
  store i32 %17077, ptr %20, align 4, !tbaa !9
  %17078 = load i32, ptr %49, align 4, !tbaa !9
  %17079 = load i32, ptr %17, align 4, !tbaa !9
  %17080 = shl i32 %17079, 2
  %17081 = add nsw i32 %17078, %17080
  store i32 %17081, ptr %21, align 4, !tbaa !9
  %17082 = getelementptr inbounds %struct.doublecomplex, ptr %70, i32 0, i32 0
  %17083 = load double, ptr %17082, align 8, !tbaa !11
  %17084 = getelementptr inbounds %struct.doublecomplex, ptr %53, i32 0, i32 0
  %17085 = load double, ptr %17084, align 8, !tbaa !11
  %17086 = getelementptr inbounds %struct.doublecomplex, ptr %70, i32 0, i32 1
  %17087 = load double, ptr %17086, align 8, !tbaa !14
  %17088 = getelementptr inbounds %struct.doublecomplex, ptr %53, i32 0, i32 1
  %17089 = load double, ptr %17088, align 8, !tbaa !14
  %17090 = fmul double %17087, %17089
  %17091 = fneg double %17090
  %17092 = call double @llvm.fmuladd.f64(double %17083, double %17085, double %17091)
  %17093 = getelementptr inbounds %struct.doublecomplex, ptr %31, i32 0, i32 0
  store double %17092, ptr %17093, align 8, !tbaa !11
  %17094 = getelementptr inbounds %struct.doublecomplex, ptr %70, i32 0, i32 0
  %17095 = load double, ptr %17094, align 8, !tbaa !11
  %17096 = getelementptr inbounds %struct.doublecomplex, ptr %53, i32 0, i32 1
  %17097 = load double, ptr %17096, align 8, !tbaa !14
  %17098 = getelementptr inbounds %struct.doublecomplex, ptr %70, i32 0, i32 1
  %17099 = load double, ptr %17098, align 8, !tbaa !14
  %17100 = getelementptr inbounds %struct.doublecomplex, ptr %53, i32 0, i32 0
  %17101 = load double, ptr %17100, align 8, !tbaa !11
  %17102 = fmul double %17099, %17101
  %17103 = call double @llvm.fmuladd.f64(double %17095, double %17097, double %17102)
  %17104 = getelementptr inbounds %struct.doublecomplex, ptr %31, i32 0, i32 1
  store double %17103, ptr %17104, align 8, !tbaa !14
  %17105 = load ptr, ptr %14, align 8, !tbaa !5
  %17106 = load i32, ptr %21, align 4, !tbaa !9
  %17107 = sext i32 %17106 to i64
  %17108 = getelementptr inbounds %struct.doublecomplex, ptr %17105, i64 %17107
  %17109 = getelementptr inbounds %struct.doublecomplex, ptr %17108, i32 0, i32 0
  %17110 = load double, ptr %17109, align 8, !tbaa !11
  %17111 = getelementptr inbounds %struct.doublecomplex, ptr %31, i32 0, i32 0
  %17112 = load double, ptr %17111, align 8, !tbaa !11
  %17113 = fsub double %17110, %17112
  %17114 = getelementptr inbounds %struct.doublecomplex, ptr %30, i32 0, i32 0
  store double %17113, ptr %17114, align 8, !tbaa !11
  %17115 = load ptr, ptr %14, align 8, !tbaa !5
  %17116 = load i32, ptr %21, align 4, !tbaa !9
  %17117 = sext i32 %17116 to i64
  %17118 = getelementptr inbounds %struct.doublecomplex, ptr %17115, i64 %17117
  %17119 = getelementptr inbounds %struct.doublecomplex, ptr %17118, i32 0, i32 1
  %17120 = load double, ptr %17119, align 8, !tbaa !14
  %17121 = getelementptr inbounds %struct.doublecomplex, ptr %31, i32 0, i32 1
  %17122 = load double, ptr %17121, align 8, !tbaa !14
  %17123 = fsub double %17120, %17122
  %17124 = getelementptr inbounds %struct.doublecomplex, ptr %30, i32 0, i32 1
  store double %17123, ptr %17124, align 8, !tbaa !14
  %17125 = getelementptr inbounds %struct.doublecomplex, ptr %30, i32 0, i32 0
  %17126 = load double, ptr %17125, align 8, !tbaa !11
  %17127 = load ptr, ptr %14, align 8, !tbaa !5
  %17128 = load i32, ptr %20, align 4, !tbaa !9
  %17129 = sext i32 %17128 to i64
  %17130 = getelementptr inbounds %struct.doublecomplex, ptr %17127, i64 %17129
  %17131 = getelementptr inbounds %struct.doublecomplex, ptr %17130, i32 0, i32 0
  store double %17126, ptr %17131, align 8, !tbaa !11
  %17132 = getelementptr inbounds %struct.doublecomplex, ptr %30, i32 0, i32 1
  %17133 = load double, ptr %17132, align 8, !tbaa !14
  %17134 = load ptr, ptr %14, align 8, !tbaa !5
  %17135 = load i32, ptr %20, align 4, !tbaa !9
  %17136 = sext i32 %17135 to i64
  %17137 = getelementptr inbounds %struct.doublecomplex, ptr %17134, i64 %17136
  %17138 = getelementptr inbounds %struct.doublecomplex, ptr %17137, i32 0, i32 1
  store double %17133, ptr %17138, align 8, !tbaa !14
  %17139 = load i32, ptr %49, align 4, !tbaa !9
  %17140 = load i32, ptr %17, align 4, !tbaa !9
  %17141 = mul nsw i32 %17140, 5
  %17142 = add nsw i32 %17139, %17141
  store i32 %17142, ptr %20, align 4, !tbaa !9
  %17143 = load i32, ptr %49, align 4, !tbaa !9
  %17144 = load i32, ptr %17, align 4, !tbaa !9
  %17145 = mul nsw i32 %17144, 5
  %17146 = add nsw i32 %17143, %17145
  store i32 %17146, ptr %21, align 4, !tbaa !9
  %17147 = getelementptr inbounds %struct.doublecomplex, ptr %70, i32 0, i32 0
  %17148 = load double, ptr %17147, align 8, !tbaa !11
  %17149 = getelementptr inbounds %struct.doublecomplex, ptr %54, i32 0, i32 0
  %17150 = load double, ptr %17149, align 8, !tbaa !11
  %17151 = getelementptr inbounds %struct.doublecomplex, ptr %70, i32 0, i32 1
  %17152 = load double, ptr %17151, align 8, !tbaa !14
  %17153 = getelementptr inbounds %struct.doublecomplex, ptr %54, i32 0, i32 1
  %17154 = load double, ptr %17153, align 8, !tbaa !14
  %17155 = fmul double %17152, %17154
  %17156 = fneg double %17155
  %17157 = call double @llvm.fmuladd.f64(double %17148, double %17150, double %17156)
  %17158 = getelementptr inbounds %struct.doublecomplex, ptr %31, i32 0, i32 0
  store double %17157, ptr %17158, align 8, !tbaa !11
  %17159 = getelementptr inbounds %struct.doublecomplex, ptr %70, i32 0, i32 0
  %17160 = load double, ptr %17159, align 8, !tbaa !11
  %17161 = getelementptr inbounds %struct.doublecomplex, ptr %54, i32 0, i32 1
  %17162 = load double, ptr %17161, align 8, !tbaa !14
  %17163 = getelementptr inbounds %struct.doublecomplex, ptr %70, i32 0, i32 1
  %17164 = load double, ptr %17163, align 8, !tbaa !14
  %17165 = getelementptr inbounds %struct.doublecomplex, ptr %54, i32 0, i32 0
  %17166 = load double, ptr %17165, align 8, !tbaa !11
  %17167 = fmul double %17164, %17166
  %17168 = call double @llvm.fmuladd.f64(double %17160, double %17162, double %17167)
  %17169 = getelementptr inbounds %struct.doublecomplex, ptr %31, i32 0, i32 1
  store double %17168, ptr %17169, align 8, !tbaa !14
  %17170 = load ptr, ptr %14, align 8, !tbaa !5
  %17171 = load i32, ptr %21, align 4, !tbaa !9
  %17172 = sext i32 %17171 to i64
  %17173 = getelementptr inbounds %struct.doublecomplex, ptr %17170, i64 %17172
  %17174 = getelementptr inbounds %struct.doublecomplex, ptr %17173, i32 0, i32 0
  %17175 = load double, ptr %17174, align 8, !tbaa !11
  %17176 = getelementptr inbounds %struct.doublecomplex, ptr %31, i32 0, i32 0
  %17177 = load double, ptr %17176, align 8, !tbaa !11
  %17178 = fsub double %17175, %17177
  %17179 = getelementptr inbounds %struct.doublecomplex, ptr %30, i32 0, i32 0
  store double %17178, ptr %17179, align 8, !tbaa !11
  %17180 = load ptr, ptr %14, align 8, !tbaa !5
  %17181 = load i32, ptr %21, align 4, !tbaa !9
  %17182 = sext i32 %17181 to i64
  %17183 = getelementptr inbounds %struct.doublecomplex, ptr %17180, i64 %17182
  %17184 = getelementptr inbounds %struct.doublecomplex, ptr %17183, i32 0, i32 1
  %17185 = load double, ptr %17184, align 8, !tbaa !14
  %17186 = getelementptr inbounds %struct.doublecomplex, ptr %31, i32 0, i32 1
  %17187 = load double, ptr %17186, align 8, !tbaa !14
  %17188 = fsub double %17185, %17187
  %17189 = getelementptr inbounds %struct.doublecomplex, ptr %30, i32 0, i32 1
  store double %17188, ptr %17189, align 8, !tbaa !14
  %17190 = getelementptr inbounds %struct.doublecomplex, ptr %30, i32 0, i32 0
  %17191 = load double, ptr %17190, align 8, !tbaa !11
  %17192 = load ptr, ptr %14, align 8, !tbaa !5
  %17193 = load i32, ptr %20, align 4, !tbaa !9
  %17194 = sext i32 %17193 to i64
  %17195 = getelementptr inbounds %struct.doublecomplex, ptr %17192, i64 %17194
  %17196 = getelementptr inbounds %struct.doublecomplex, ptr %17195, i32 0, i32 0
  store double %17191, ptr %17196, align 8, !tbaa !11
  %17197 = getelementptr inbounds %struct.doublecomplex, ptr %30, i32 0, i32 1
  %17198 = load double, ptr %17197, align 8, !tbaa !14
  %17199 = load ptr, ptr %14, align 8, !tbaa !5
  %17200 = load i32, ptr %20, align 4, !tbaa !9
  %17201 = sext i32 %17200 to i64
  %17202 = getelementptr inbounds %struct.doublecomplex, ptr %17199, i64 %17201
  %17203 = getelementptr inbounds %struct.doublecomplex, ptr %17202, i32 0, i32 1
  store double %17198, ptr %17203, align 8, !tbaa !14
  %17204 = load i32, ptr %49, align 4, !tbaa !9
  %17205 = load i32, ptr %17, align 4, !tbaa !9
  %17206 = mul nsw i32 %17205, 6
  %17207 = add nsw i32 %17204, %17206
  store i32 %17207, ptr %20, align 4, !tbaa !9
  %17208 = load i32, ptr %49, align 4, !tbaa !9
  %17209 = load i32, ptr %17, align 4, !tbaa !9
  %17210 = mul nsw i32 %17209, 6
  %17211 = add nsw i32 %17208, %17210
  store i32 %17211, ptr %21, align 4, !tbaa !9
  %17212 = getelementptr inbounds %struct.doublecomplex, ptr %70, i32 0, i32 0
  %17213 = load double, ptr %17212, align 8, !tbaa !11
  %17214 = getelementptr inbounds %struct.doublecomplex, ptr %55, i32 0, i32 0
  %17215 = load double, ptr %17214, align 8, !tbaa !11
  %17216 = getelementptr inbounds %struct.doublecomplex, ptr %70, i32 0, i32 1
  %17217 = load double, ptr %17216, align 8, !tbaa !14
  %17218 = getelementptr inbounds %struct.doublecomplex, ptr %55, i32 0, i32 1
  %17219 = load double, ptr %17218, align 8, !tbaa !14
  %17220 = fmul double %17217, %17219
  %17221 = fneg double %17220
  %17222 = call double @llvm.fmuladd.f64(double %17213, double %17215, double %17221)
  %17223 = getelementptr inbounds %struct.doublecomplex, ptr %31, i32 0, i32 0
  store double %17222, ptr %17223, align 8, !tbaa !11
  %17224 = getelementptr inbounds %struct.doublecomplex, ptr %70, i32 0, i32 0
  %17225 = load double, ptr %17224, align 8, !tbaa !11
  %17226 = getelementptr inbounds %struct.doublecomplex, ptr %55, i32 0, i32 1
  %17227 = load double, ptr %17226, align 8, !tbaa !14
  %17228 = getelementptr inbounds %struct.doublecomplex, ptr %70, i32 0, i32 1
  %17229 = load double, ptr %17228, align 8, !tbaa !14
  %17230 = getelementptr inbounds %struct.doublecomplex, ptr %55, i32 0, i32 0
  %17231 = load double, ptr %17230, align 8, !tbaa !11
  %17232 = fmul double %17229, %17231
  %17233 = call double @llvm.fmuladd.f64(double %17225, double %17227, double %17232)
  %17234 = getelementptr inbounds %struct.doublecomplex, ptr %31, i32 0, i32 1
  store double %17233, ptr %17234, align 8, !tbaa !14
  %17235 = load ptr, ptr %14, align 8, !tbaa !5
  %17236 = load i32, ptr %21, align 4, !tbaa !9
  %17237 = sext i32 %17236 to i64
  %17238 = getelementptr inbounds %struct.doublecomplex, ptr %17235, i64 %17237
  %17239 = getelementptr inbounds %struct.doublecomplex, ptr %17238, i32 0, i32 0
  %17240 = load double, ptr %17239, align 8, !tbaa !11
  %17241 = getelementptr inbounds %struct.doublecomplex, ptr %31, i32 0, i32 0
  %17242 = load double, ptr %17241, align 8, !tbaa !11
  %17243 = fsub double %17240, %17242
  %17244 = getelementptr inbounds %struct.doublecomplex, ptr %30, i32 0, i32 0
  store double %17243, ptr %17244, align 8, !tbaa !11
  %17245 = load ptr, ptr %14, align 8, !tbaa !5
  %17246 = load i32, ptr %21, align 4, !tbaa !9
  %17247 = sext i32 %17246 to i64
  %17248 = getelementptr inbounds %struct.doublecomplex, ptr %17245, i64 %17247
  %17249 = getelementptr inbounds %struct.doublecomplex, ptr %17248, i32 0, i32 1
  %17250 = load double, ptr %17249, align 8, !tbaa !14
  %17251 = getelementptr inbounds %struct.doublecomplex, ptr %31, i32 0, i32 1
  %17252 = load double, ptr %17251, align 8, !tbaa !14
  %17253 = fsub double %17250, %17252
  %17254 = getelementptr inbounds %struct.doublecomplex, ptr %30, i32 0, i32 1
  store double %17253, ptr %17254, align 8, !tbaa !14
  %17255 = getelementptr inbounds %struct.doublecomplex, ptr %30, i32 0, i32 0
  %17256 = load double, ptr %17255, align 8, !tbaa !11
  %17257 = load ptr, ptr %14, align 8, !tbaa !5
  %17258 = load i32, ptr %20, align 4, !tbaa !9
  %17259 = sext i32 %17258 to i64
  %17260 = getelementptr inbounds %struct.doublecomplex, ptr %17257, i64 %17259
  %17261 = getelementptr inbounds %struct.doublecomplex, ptr %17260, i32 0, i32 0
  store double %17256, ptr %17261, align 8, !tbaa !11
  %17262 = getelementptr inbounds %struct.doublecomplex, ptr %30, i32 0, i32 1
  %17263 = load double, ptr %17262, align 8, !tbaa !14
  %17264 = load ptr, ptr %14, align 8, !tbaa !5
  %17265 = load i32, ptr %20, align 4, !tbaa !9
  %17266 = sext i32 %17265 to i64
  %17267 = getelementptr inbounds %struct.doublecomplex, ptr %17264, i64 %17266
  %17268 = getelementptr inbounds %struct.doublecomplex, ptr %17267, i32 0, i32 1
  store double %17263, ptr %17268, align 8, !tbaa !14
  %17269 = load i32, ptr %49, align 4, !tbaa !9
  %17270 = load i32, ptr %17, align 4, !tbaa !9
  %17271 = mul nsw i32 %17270, 7
  %17272 = add nsw i32 %17269, %17271
  store i32 %17272, ptr %20, align 4, !tbaa !9
  %17273 = load i32, ptr %49, align 4, !tbaa !9
  %17274 = load i32, ptr %17, align 4, !tbaa !9
  %17275 = mul nsw i32 %17274, 7
  %17276 = add nsw i32 %17273, %17275
  store i32 %17276, ptr %21, align 4, !tbaa !9
  %17277 = getelementptr inbounds %struct.doublecomplex, ptr %70, i32 0, i32 0
  %17278 = load double, ptr %17277, align 8, !tbaa !11
  %17279 = getelementptr inbounds %struct.doublecomplex, ptr %56, i32 0, i32 0
  %17280 = load double, ptr %17279, align 8, !tbaa !11
  %17281 = getelementptr inbounds %struct.doublecomplex, ptr %70, i32 0, i32 1
  %17282 = load double, ptr %17281, align 8, !tbaa !14
  %17283 = getelementptr inbounds %struct.doublecomplex, ptr %56, i32 0, i32 1
  %17284 = load double, ptr %17283, align 8, !tbaa !14
  %17285 = fmul double %17282, %17284
  %17286 = fneg double %17285
  %17287 = call double @llvm.fmuladd.f64(double %17278, double %17280, double %17286)
  %17288 = getelementptr inbounds %struct.doublecomplex, ptr %31, i32 0, i32 0
  store double %17287, ptr %17288, align 8, !tbaa !11
  %17289 = getelementptr inbounds %struct.doublecomplex, ptr %70, i32 0, i32 0
  %17290 = load double, ptr %17289, align 8, !tbaa !11
  %17291 = getelementptr inbounds %struct.doublecomplex, ptr %56, i32 0, i32 1
  %17292 = load double, ptr %17291, align 8, !tbaa !14
  %17293 = getelementptr inbounds %struct.doublecomplex, ptr %70, i32 0, i32 1
  %17294 = load double, ptr %17293, align 8, !tbaa !14
  %17295 = getelementptr inbounds %struct.doublecomplex, ptr %56, i32 0, i32 0
  %17296 = load double, ptr %17295, align 8, !tbaa !11
  %17297 = fmul double %17294, %17296
  %17298 = call double @llvm.fmuladd.f64(double %17290, double %17292, double %17297)
  %17299 = getelementptr inbounds %struct.doublecomplex, ptr %31, i32 0, i32 1
  store double %17298, ptr %17299, align 8, !tbaa !14
  %17300 = load ptr, ptr %14, align 8, !tbaa !5
  %17301 = load i32, ptr %21, align 4, !tbaa !9
  %17302 = sext i32 %17301 to i64
  %17303 = getelementptr inbounds %struct.doublecomplex, ptr %17300, i64 %17302
  %17304 = getelementptr inbounds %struct.doublecomplex, ptr %17303, i32 0, i32 0
  %17305 = load double, ptr %17304, align 8, !tbaa !11
  %17306 = getelementptr inbounds %struct.doublecomplex, ptr %31, i32 0, i32 0
  %17307 = load double, ptr %17306, align 8, !tbaa !11
  %17308 = fsub double %17305, %17307
  %17309 = getelementptr inbounds %struct.doublecomplex, ptr %30, i32 0, i32 0
  store double %17308, ptr %17309, align 8, !tbaa !11
  %17310 = load ptr, ptr %14, align 8, !tbaa !5
  %17311 = load i32, ptr %21, align 4, !tbaa !9
  %17312 = sext i32 %17311 to i64
  %17313 = getelementptr inbounds %struct.doublecomplex, ptr %17310, i64 %17312
  %17314 = getelementptr inbounds %struct.doublecomplex, ptr %17313, i32 0, i32 1
  %17315 = load double, ptr %17314, align 8, !tbaa !14
  %17316 = getelementptr inbounds %struct.doublecomplex, ptr %31, i32 0, i32 1
  %17317 = load double, ptr %17316, align 8, !tbaa !14
  %17318 = fsub double %17315, %17317
  %17319 = getelementptr inbounds %struct.doublecomplex, ptr %30, i32 0, i32 1
  store double %17318, ptr %17319, align 8, !tbaa !14
  %17320 = getelementptr inbounds %struct.doublecomplex, ptr %30, i32 0, i32 0
  %17321 = load double, ptr %17320, align 8, !tbaa !11
  %17322 = load ptr, ptr %14, align 8, !tbaa !5
  %17323 = load i32, ptr %20, align 4, !tbaa !9
  %17324 = sext i32 %17323 to i64
  %17325 = getelementptr inbounds %struct.doublecomplex, ptr %17322, i64 %17324
  %17326 = getelementptr inbounds %struct.doublecomplex, ptr %17325, i32 0, i32 0
  store double %17321, ptr %17326, align 8, !tbaa !11
  %17327 = getelementptr inbounds %struct.doublecomplex, ptr %30, i32 0, i32 1
  %17328 = load double, ptr %17327, align 8, !tbaa !14
  %17329 = load ptr, ptr %14, align 8, !tbaa !5
  %17330 = load i32, ptr %20, align 4, !tbaa !9
  %17331 = sext i32 %17330 to i64
  %17332 = getelementptr inbounds %struct.doublecomplex, ptr %17329, i64 %17331
  %17333 = getelementptr inbounds %struct.doublecomplex, ptr %17332, i32 0, i32 1
  store double %17328, ptr %17333, align 8, !tbaa !14
  %17334 = load i32, ptr %49, align 4, !tbaa !9
  %17335 = load i32, ptr %17, align 4, !tbaa !9
  %17336 = shl i32 %17335, 3
  %17337 = add nsw i32 %17334, %17336
  store i32 %17337, ptr %20, align 4, !tbaa !9
  %17338 = load i32, ptr %49, align 4, !tbaa !9
  %17339 = load i32, ptr %17, align 4, !tbaa !9
  %17340 = shl i32 %17339, 3
  %17341 = add nsw i32 %17338, %17340
  store i32 %17341, ptr %21, align 4, !tbaa !9
  %17342 = getelementptr inbounds %struct.doublecomplex, ptr %70, i32 0, i32 0
  %17343 = load double, ptr %17342, align 8, !tbaa !11
  %17344 = getelementptr inbounds %struct.doublecomplex, ptr %57, i32 0, i32 0
  %17345 = load double, ptr %17344, align 8, !tbaa !11
  %17346 = getelementptr inbounds %struct.doublecomplex, ptr %70, i32 0, i32 1
  %17347 = load double, ptr %17346, align 8, !tbaa !14
  %17348 = getelementptr inbounds %struct.doublecomplex, ptr %57, i32 0, i32 1
  %17349 = load double, ptr %17348, align 8, !tbaa !14
  %17350 = fmul double %17347, %17349
  %17351 = fneg double %17350
  %17352 = call double @llvm.fmuladd.f64(double %17343, double %17345, double %17351)
  %17353 = getelementptr inbounds %struct.doublecomplex, ptr %31, i32 0, i32 0
  store double %17352, ptr %17353, align 8, !tbaa !11
  %17354 = getelementptr inbounds %struct.doublecomplex, ptr %70, i32 0, i32 0
  %17355 = load double, ptr %17354, align 8, !tbaa !11
  %17356 = getelementptr inbounds %struct.doublecomplex, ptr %57, i32 0, i32 1
  %17357 = load double, ptr %17356, align 8, !tbaa !14
  %17358 = getelementptr inbounds %struct.doublecomplex, ptr %70, i32 0, i32 1
  %17359 = load double, ptr %17358, align 8, !tbaa !14
  %17360 = getelementptr inbounds %struct.doublecomplex, ptr %57, i32 0, i32 0
  %17361 = load double, ptr %17360, align 8, !tbaa !11
  %17362 = fmul double %17359, %17361
  %17363 = call double @llvm.fmuladd.f64(double %17355, double %17357, double %17362)
  %17364 = getelementptr inbounds %struct.doublecomplex, ptr %31, i32 0, i32 1
  store double %17363, ptr %17364, align 8, !tbaa !14
  %17365 = load ptr, ptr %14, align 8, !tbaa !5
  %17366 = load i32, ptr %21, align 4, !tbaa !9
  %17367 = sext i32 %17366 to i64
  %17368 = getelementptr inbounds %struct.doublecomplex, ptr %17365, i64 %17367
  %17369 = getelementptr inbounds %struct.doublecomplex, ptr %17368, i32 0, i32 0
  %17370 = load double, ptr %17369, align 8, !tbaa !11
  %17371 = getelementptr inbounds %struct.doublecomplex, ptr %31, i32 0, i32 0
  %17372 = load double, ptr %17371, align 8, !tbaa !11
  %17373 = fsub double %17370, %17372
  %17374 = getelementptr inbounds %struct.doublecomplex, ptr %30, i32 0, i32 0
  store double %17373, ptr %17374, align 8, !tbaa !11
  %17375 = load ptr, ptr %14, align 8, !tbaa !5
  %17376 = load i32, ptr %21, align 4, !tbaa !9
  %17377 = sext i32 %17376 to i64
  %17378 = getelementptr inbounds %struct.doublecomplex, ptr %17375, i64 %17377
  %17379 = getelementptr inbounds %struct.doublecomplex, ptr %17378, i32 0, i32 1
  %17380 = load double, ptr %17379, align 8, !tbaa !14
  %17381 = getelementptr inbounds %struct.doublecomplex, ptr %31, i32 0, i32 1
  %17382 = load double, ptr %17381, align 8, !tbaa !14
  %17383 = fsub double %17380, %17382
  %17384 = getelementptr inbounds %struct.doublecomplex, ptr %30, i32 0, i32 1
  store double %17383, ptr %17384, align 8, !tbaa !14
  %17385 = getelementptr inbounds %struct.doublecomplex, ptr %30, i32 0, i32 0
  %17386 = load double, ptr %17385, align 8, !tbaa !11
  %17387 = load ptr, ptr %14, align 8, !tbaa !5
  %17388 = load i32, ptr %20, align 4, !tbaa !9
  %17389 = sext i32 %17388 to i64
  %17390 = getelementptr inbounds %struct.doublecomplex, ptr %17387, i64 %17389
  %17391 = getelementptr inbounds %struct.doublecomplex, ptr %17390, i32 0, i32 0
  store double %17386, ptr %17391, align 8, !tbaa !11
  %17392 = getelementptr inbounds %struct.doublecomplex, ptr %30, i32 0, i32 1
  %17393 = load double, ptr %17392, align 8, !tbaa !14
  %17394 = load ptr, ptr %14, align 8, !tbaa !5
  %17395 = load i32, ptr %20, align 4, !tbaa !9
  %17396 = sext i32 %17395 to i64
  %17397 = getelementptr inbounds %struct.doublecomplex, ptr %17394, i64 %17396
  %17398 = getelementptr inbounds %struct.doublecomplex, ptr %17397, i32 0, i32 1
  store double %17393, ptr %17398, align 8, !tbaa !14
  %17399 = load i32, ptr %49, align 4, !tbaa !9
  %17400 = load i32, ptr %17, align 4, !tbaa !9
  %17401 = mul nsw i32 %17400, 9
  %17402 = add nsw i32 %17399, %17401
  store i32 %17402, ptr %20, align 4, !tbaa !9
  %17403 = load i32, ptr %49, align 4, !tbaa !9
  %17404 = load i32, ptr %17, align 4, !tbaa !9
  %17405 = mul nsw i32 %17404, 9
  %17406 = add nsw i32 %17403, %17405
  store i32 %17406, ptr %21, align 4, !tbaa !9
  %17407 = getelementptr inbounds %struct.doublecomplex, ptr %70, i32 0, i32 0
  %17408 = load double, ptr %17407, align 8, !tbaa !11
  %17409 = getelementptr inbounds %struct.doublecomplex, ptr %58, i32 0, i32 0
  %17410 = load double, ptr %17409, align 8, !tbaa !11
  %17411 = getelementptr inbounds %struct.doublecomplex, ptr %70, i32 0, i32 1
  %17412 = load double, ptr %17411, align 8, !tbaa !14
  %17413 = getelementptr inbounds %struct.doublecomplex, ptr %58, i32 0, i32 1
  %17414 = load double, ptr %17413, align 8, !tbaa !14
  %17415 = fmul double %17412, %17414
  %17416 = fneg double %17415
  %17417 = call double @llvm.fmuladd.f64(double %17408, double %17410, double %17416)
  %17418 = getelementptr inbounds %struct.doublecomplex, ptr %31, i32 0, i32 0
  store double %17417, ptr %17418, align 8, !tbaa !11
  %17419 = getelementptr inbounds %struct.doublecomplex, ptr %70, i32 0, i32 0
  %17420 = load double, ptr %17419, align 8, !tbaa !11
  %17421 = getelementptr inbounds %struct.doublecomplex, ptr %58, i32 0, i32 1
  %17422 = load double, ptr %17421, align 8, !tbaa !14
  %17423 = getelementptr inbounds %struct.doublecomplex, ptr %70, i32 0, i32 1
  %17424 = load double, ptr %17423, align 8, !tbaa !14
  %17425 = getelementptr inbounds %struct.doublecomplex, ptr %58, i32 0, i32 0
  %17426 = load double, ptr %17425, align 8, !tbaa !11
  %17427 = fmul double %17424, %17426
  %17428 = call double @llvm.fmuladd.f64(double %17420, double %17422, double %17427)
  %17429 = getelementptr inbounds %struct.doublecomplex, ptr %31, i32 0, i32 1
  store double %17428, ptr %17429, align 8, !tbaa !14
  %17430 = load ptr, ptr %14, align 8, !tbaa !5
  %17431 = load i32, ptr %21, align 4, !tbaa !9
  %17432 = sext i32 %17431 to i64
  %17433 = getelementptr inbounds %struct.doublecomplex, ptr %17430, i64 %17432
  %17434 = getelementptr inbounds %struct.doublecomplex, ptr %17433, i32 0, i32 0
  %17435 = load double, ptr %17434, align 8, !tbaa !11
  %17436 = getelementptr inbounds %struct.doublecomplex, ptr %31, i32 0, i32 0
  %17437 = load double, ptr %17436, align 8, !tbaa !11
  %17438 = fsub double %17435, %17437
  %17439 = getelementptr inbounds %struct.doublecomplex, ptr %30, i32 0, i32 0
  store double %17438, ptr %17439, align 8, !tbaa !11
  %17440 = load ptr, ptr %14, align 8, !tbaa !5
  %17441 = load i32, ptr %21, align 4, !tbaa !9
  %17442 = sext i32 %17441 to i64
  %17443 = getelementptr inbounds %struct.doublecomplex, ptr %17440, i64 %17442
  %17444 = getelementptr inbounds %struct.doublecomplex, ptr %17443, i32 0, i32 1
  %17445 = load double, ptr %17444, align 8, !tbaa !14
  %17446 = getelementptr inbounds %struct.doublecomplex, ptr %31, i32 0, i32 1
  %17447 = load double, ptr %17446, align 8, !tbaa !14
  %17448 = fsub double %17445, %17447
  %17449 = getelementptr inbounds %struct.doublecomplex, ptr %30, i32 0, i32 1
  store double %17448, ptr %17449, align 8, !tbaa !14
  %17450 = getelementptr inbounds %struct.doublecomplex, ptr %30, i32 0, i32 0
  %17451 = load double, ptr %17450, align 8, !tbaa !11
  %17452 = load ptr, ptr %14, align 8, !tbaa !5
  %17453 = load i32, ptr %20, align 4, !tbaa !9
  %17454 = sext i32 %17453 to i64
  %17455 = getelementptr inbounds %struct.doublecomplex, ptr %17452, i64 %17454
  %17456 = getelementptr inbounds %struct.doublecomplex, ptr %17455, i32 0, i32 0
  store double %17451, ptr %17456, align 8, !tbaa !11
  %17457 = getelementptr inbounds %struct.doublecomplex, ptr %30, i32 0, i32 1
  %17458 = load double, ptr %17457, align 8, !tbaa !14
  %17459 = load ptr, ptr %14, align 8, !tbaa !5
  %17460 = load i32, ptr %20, align 4, !tbaa !9
  %17461 = sext i32 %17460 to i64
  %17462 = getelementptr inbounds %struct.doublecomplex, ptr %17459, i64 %17461
  %17463 = getelementptr inbounds %struct.doublecomplex, ptr %17462, i32 0, i32 1
  store double %17458, ptr %17463, align 8, !tbaa !14
  br label %17464

17464:                                            ; preds = %16392
  %17465 = load i32, ptr %49, align 4, !tbaa !9
  %17466 = add nsw i32 %17465, 1
  store i32 %17466, ptr %49, align 4, !tbaa !9
  br label %16388, !llvm.loop !34

17467:                                            ; preds = %16388
  br label %19171

17468:                                            ; preds = %9797
  %17469 = load ptr, ptr %12, align 8, !tbaa !5
  %17470 = getelementptr inbounds %struct.doublecomplex, ptr %17469, i64 1
  %17471 = getelementptr inbounds %struct.doublecomplex, ptr %17470, i32 0, i32 0
  %17472 = load double, ptr %17471, align 8, !tbaa !11
  %17473 = getelementptr inbounds %struct.doublecomplex, ptr %59, i32 0, i32 0
  store double %17472, ptr %17473, align 8, !tbaa !11
  %17474 = load ptr, ptr %12, align 8, !tbaa !5
  %17475 = getelementptr inbounds %struct.doublecomplex, ptr %17474, i64 1
  %17476 = getelementptr inbounds %struct.doublecomplex, ptr %17475, i32 0, i32 1
  %17477 = load double, ptr %17476, align 8, !tbaa !14
  %17478 = getelementptr inbounds %struct.doublecomplex, ptr %59, i32 0, i32 1
  store double %17477, ptr %17478, align 8, !tbaa !14
  %17479 = call { double, double } @Cd(ptr noundef %59)
  %17480 = extractvalue { double, double } %17479, 0
  %17481 = extractvalue { double, double } %17479, 1
  %17482 = fneg double %17481
  %17483 = call ptr @_pCd(ptr noundef %31)
  %17484 = getelementptr inbounds { double, double }, ptr %17483, i32 0, i32 0
  %17485 = getelementptr inbounds { double, double }, ptr %17483, i32 0, i32 1
  store double %17480, ptr %17484, align 8
  store double %17482, ptr %17485, align 8
  %17486 = load ptr, ptr %13, align 8, !tbaa !5
  %17487 = getelementptr inbounds %struct.doublecomplex, ptr %17486, i32 0, i32 0
  %17488 = load double, ptr %17487, align 8, !tbaa !11
  %17489 = getelementptr inbounds %struct.doublecomplex, ptr %31, i32 0, i32 0
  %17490 = load double, ptr %17489, align 8, !tbaa !11
  %17491 = load ptr, ptr %13, align 8, !tbaa !5
  %17492 = getelementptr inbounds %struct.doublecomplex, ptr %17491, i32 0, i32 1
  %17493 = load double, ptr %17492, align 8, !tbaa !14
  %17494 = getelementptr inbounds %struct.doublecomplex, ptr %31, i32 0, i32 1
  %17495 = load double, ptr %17494, align 8, !tbaa !14
  %17496 = fmul double %17493, %17495
  %17497 = fneg double %17496
  %17498 = call double @llvm.fmuladd.f64(double %17488, double %17490, double %17497)
  %17499 = getelementptr inbounds %struct.doublecomplex, ptr %30, i32 0, i32 0
  store double %17498, ptr %17499, align 8, !tbaa !11
  %17500 = load ptr, ptr %13, align 8, !tbaa !5
  %17501 = getelementptr inbounds %struct.doublecomplex, ptr %17500, i32 0, i32 0
  %17502 = load double, ptr %17501, align 8, !tbaa !11
  %17503 = getelementptr inbounds %struct.doublecomplex, ptr %31, i32 0, i32 1
  %17504 = load double, ptr %17503, align 8, !tbaa !14
  %17505 = load ptr, ptr %13, align 8, !tbaa !5
  %17506 = getelementptr inbounds %struct.doublecomplex, ptr %17505, i32 0, i32 1
  %17507 = load double, ptr %17506, align 8, !tbaa !14
  %17508 = getelementptr inbounds %struct.doublecomplex, ptr %31, i32 0, i32 0
  %17509 = load double, ptr %17508, align 8, !tbaa !11
  %17510 = fmul double %17507, %17509
  %17511 = call double @llvm.fmuladd.f64(double %17502, double %17504, double %17510)
  %17512 = getelementptr inbounds %struct.doublecomplex, ptr %30, i32 0, i32 1
  store double %17511, ptr %17512, align 8, !tbaa !14
  %17513 = getelementptr inbounds %struct.doublecomplex, ptr %30, i32 0, i32 0
  %17514 = load double, ptr %17513, align 8, !tbaa !11
  %17515 = getelementptr inbounds %struct.doublecomplex, ptr %50, i32 0, i32 0
  store double %17514, ptr %17515, align 8, !tbaa !11
  %17516 = getelementptr inbounds %struct.doublecomplex, ptr %30, i32 0, i32 1
  %17517 = load double, ptr %17516, align 8, !tbaa !14
  %17518 = getelementptr inbounds %struct.doublecomplex, ptr %50, i32 0, i32 1
  store double %17517, ptr %17518, align 8, !tbaa !14
  %17519 = load ptr, ptr %12, align 8, !tbaa !5
  %17520 = getelementptr inbounds %struct.doublecomplex, ptr %17519, i64 2
  %17521 = getelementptr inbounds %struct.doublecomplex, ptr %17520, i32 0, i32 0
  %17522 = load double, ptr %17521, align 8, !tbaa !11
  %17523 = getelementptr inbounds %struct.doublecomplex, ptr %60, i32 0, i32 0
  store double %17522, ptr %17523, align 8, !tbaa !11
  %17524 = load ptr, ptr %12, align 8, !tbaa !5
  %17525 = getelementptr inbounds %struct.doublecomplex, ptr %17524, i64 2
  %17526 = getelementptr inbounds %struct.doublecomplex, ptr %17525, i32 0, i32 1
  %17527 = load double, ptr %17526, align 8, !tbaa !14
  %17528 = getelementptr inbounds %struct.doublecomplex, ptr %60, i32 0, i32 1
  store double %17527, ptr %17528, align 8, !tbaa !14
  %17529 = call { double, double } @Cd(ptr noundef %60)
  %17530 = extractvalue { double, double } %17529, 0
  %17531 = extractvalue { double, double } %17529, 1
  %17532 = fneg double %17531
  %17533 = call ptr @_pCd(ptr noundef %31)
  %17534 = getelementptr inbounds { double, double }, ptr %17533, i32 0, i32 0
  %17535 = getelementptr inbounds { double, double }, ptr %17533, i32 0, i32 1
  store double %17530, ptr %17534, align 8
  store double %17532, ptr %17535, align 8
  %17536 = load ptr, ptr %13, align 8, !tbaa !5
  %17537 = getelementptr inbounds %struct.doublecomplex, ptr %17536, i32 0, i32 0
  %17538 = load double, ptr %17537, align 8, !tbaa !11
  %17539 = getelementptr inbounds %struct.doublecomplex, ptr %31, i32 0, i32 0
  %17540 = load double, ptr %17539, align 8, !tbaa !11
  %17541 = load ptr, ptr %13, align 8, !tbaa !5
  %17542 = getelementptr inbounds %struct.doublecomplex, ptr %17541, i32 0, i32 1
  %17543 = load double, ptr %17542, align 8, !tbaa !14
  %17544 = getelementptr inbounds %struct.doublecomplex, ptr %31, i32 0, i32 1
  %17545 = load double, ptr %17544, align 8, !tbaa !14
  %17546 = fmul double %17543, %17545
  %17547 = fneg double %17546
  %17548 = call double @llvm.fmuladd.f64(double %17538, double %17540, double %17547)
  %17549 = getelementptr inbounds %struct.doublecomplex, ptr %30, i32 0, i32 0
  store double %17548, ptr %17549, align 8, !tbaa !11
  %17550 = load ptr, ptr %13, align 8, !tbaa !5
  %17551 = getelementptr inbounds %struct.doublecomplex, ptr %17550, i32 0, i32 0
  %17552 = load double, ptr %17551, align 8, !tbaa !11
  %17553 = getelementptr inbounds %struct.doublecomplex, ptr %31, i32 0, i32 1
  %17554 = load double, ptr %17553, align 8, !tbaa !14
  %17555 = load ptr, ptr %13, align 8, !tbaa !5
  %17556 = getelementptr inbounds %struct.doublecomplex, ptr %17555, i32 0, i32 1
  %17557 = load double, ptr %17556, align 8, !tbaa !14
  %17558 = getelementptr inbounds %struct.doublecomplex, ptr %31, i32 0, i32 0
  %17559 = load double, ptr %17558, align 8, !tbaa !11
  %17560 = fmul double %17557, %17559
  %17561 = call double @llvm.fmuladd.f64(double %17552, double %17554, double %17560)
  %17562 = getelementptr inbounds %struct.doublecomplex, ptr %30, i32 0, i32 1
  store double %17561, ptr %17562, align 8, !tbaa !14
  %17563 = getelementptr inbounds %struct.doublecomplex, ptr %30, i32 0, i32 0
  %17564 = load double, ptr %17563, align 8, !tbaa !11
  %17565 = getelementptr inbounds %struct.doublecomplex, ptr %51, i32 0, i32 0
  store double %17564, ptr %17565, align 8, !tbaa !11
  %17566 = getelementptr inbounds %struct.doublecomplex, ptr %30, i32 0, i32 1
  %17567 = load double, ptr %17566, align 8, !tbaa !14
  %17568 = getelementptr inbounds %struct.doublecomplex, ptr %51, i32 0, i32 1
  store double %17567, ptr %17568, align 8, !tbaa !14
  %17569 = load ptr, ptr %12, align 8, !tbaa !5
  %17570 = getelementptr inbounds %struct.doublecomplex, ptr %17569, i64 3
  %17571 = getelementptr inbounds %struct.doublecomplex, ptr %17570, i32 0, i32 0
  %17572 = load double, ptr %17571, align 8, !tbaa !11
  %17573 = getelementptr inbounds %struct.doublecomplex, ptr %61, i32 0, i32 0
  store double %17572, ptr %17573, align 8, !tbaa !11
  %17574 = load ptr, ptr %12, align 8, !tbaa !5
  %17575 = getelementptr inbounds %struct.doublecomplex, ptr %17574, i64 3
  %17576 = getelementptr inbounds %struct.doublecomplex, ptr %17575, i32 0, i32 1
  %17577 = load double, ptr %17576, align 8, !tbaa !14
  %17578 = getelementptr inbounds %struct.doublecomplex, ptr %61, i32 0, i32 1
  store double %17577, ptr %17578, align 8, !tbaa !14
  %17579 = call { double, double } @Cd(ptr noundef %61)
  %17580 = extractvalue { double, double } %17579, 0
  %17581 = extractvalue { double, double } %17579, 1
  %17582 = fneg double %17581
  %17583 = call ptr @_pCd(ptr noundef %31)
  %17584 = getelementptr inbounds { double, double }, ptr %17583, i32 0, i32 0
  %17585 = getelementptr inbounds { double, double }, ptr %17583, i32 0, i32 1
  store double %17580, ptr %17584, align 8
  store double %17582, ptr %17585, align 8
  %17586 = load ptr, ptr %13, align 8, !tbaa !5
  %17587 = getelementptr inbounds %struct.doublecomplex, ptr %17586, i32 0, i32 0
  %17588 = load double, ptr %17587, align 8, !tbaa !11
  %17589 = getelementptr inbounds %struct.doublecomplex, ptr %31, i32 0, i32 0
  %17590 = load double, ptr %17589, align 8, !tbaa !11
  %17591 = load ptr, ptr %13, align 8, !tbaa !5
  %17592 = getelementptr inbounds %struct.doublecomplex, ptr %17591, i32 0, i32 1
  %17593 = load double, ptr %17592, align 8, !tbaa !14
  %17594 = getelementptr inbounds %struct.doublecomplex, ptr %31, i32 0, i32 1
  %17595 = load double, ptr %17594, align 8, !tbaa !14
  %17596 = fmul double %17593, %17595
  %17597 = fneg double %17596
  %17598 = call double @llvm.fmuladd.f64(double %17588, double %17590, double %17597)
  %17599 = getelementptr inbounds %struct.doublecomplex, ptr %30, i32 0, i32 0
  store double %17598, ptr %17599, align 8, !tbaa !11
  %17600 = load ptr, ptr %13, align 8, !tbaa !5
  %17601 = getelementptr inbounds %struct.doublecomplex, ptr %17600, i32 0, i32 0
  %17602 = load double, ptr %17601, align 8, !tbaa !11
  %17603 = getelementptr inbounds %struct.doublecomplex, ptr %31, i32 0, i32 1
  %17604 = load double, ptr %17603, align 8, !tbaa !14
  %17605 = load ptr, ptr %13, align 8, !tbaa !5
  %17606 = getelementptr inbounds %struct.doublecomplex, ptr %17605, i32 0, i32 1
  %17607 = load double, ptr %17606, align 8, !tbaa !14
  %17608 = getelementptr inbounds %struct.doublecomplex, ptr %31, i32 0, i32 0
  %17609 = load double, ptr %17608, align 8, !tbaa !11
  %17610 = fmul double %17607, %17609
  %17611 = call double @llvm.fmuladd.f64(double %17602, double %17604, double %17610)
  %17612 = getelementptr inbounds %struct.doublecomplex, ptr %30, i32 0, i32 1
  store double %17611, ptr %17612, align 8, !tbaa !14
  %17613 = getelementptr inbounds %struct.doublecomplex, ptr %30, i32 0, i32 0
  %17614 = load double, ptr %17613, align 8, !tbaa !11
  %17615 = getelementptr inbounds %struct.doublecomplex, ptr %52, i32 0, i32 0
  store double %17614, ptr %17615, align 8, !tbaa !11
  %17616 = getelementptr inbounds %struct.doublecomplex, ptr %30, i32 0, i32 1
  %17617 = load double, ptr %17616, align 8, !tbaa !14
  %17618 = getelementptr inbounds %struct.doublecomplex, ptr %52, i32 0, i32 1
  store double %17617, ptr %17618, align 8, !tbaa !14
  %17619 = load ptr, ptr %12, align 8, !tbaa !5
  %17620 = getelementptr inbounds %struct.doublecomplex, ptr %17619, i64 4
  %17621 = getelementptr inbounds %struct.doublecomplex, ptr %17620, i32 0, i32 0
  %17622 = load double, ptr %17621, align 8, !tbaa !11
  %17623 = getelementptr inbounds %struct.doublecomplex, ptr %62, i32 0, i32 0
  store double %17622, ptr %17623, align 8, !tbaa !11
  %17624 = load ptr, ptr %12, align 8, !tbaa !5
  %17625 = getelementptr inbounds %struct.doublecomplex, ptr %17624, i64 4
  %17626 = getelementptr inbounds %struct.doublecomplex, ptr %17625, i32 0, i32 1
  %17627 = load double, ptr %17626, align 8, !tbaa !14
  %17628 = getelementptr inbounds %struct.doublecomplex, ptr %62, i32 0, i32 1
  store double %17627, ptr %17628, align 8, !tbaa !14
  %17629 = call { double, double } @Cd(ptr noundef %62)
  %17630 = extractvalue { double, double } %17629, 0
  %17631 = extractvalue { double, double } %17629, 1
  %17632 = fneg double %17631
  %17633 = call ptr @_pCd(ptr noundef %31)
  %17634 = getelementptr inbounds { double, double }, ptr %17633, i32 0, i32 0
  %17635 = getelementptr inbounds { double, double }, ptr %17633, i32 0, i32 1
  store double %17630, ptr %17634, align 8
  store double %17632, ptr %17635, align 8
  %17636 = load ptr, ptr %13, align 8, !tbaa !5
  %17637 = getelementptr inbounds %struct.doublecomplex, ptr %17636, i32 0, i32 0
  %17638 = load double, ptr %17637, align 8, !tbaa !11
  %17639 = getelementptr inbounds %struct.doublecomplex, ptr %31, i32 0, i32 0
  %17640 = load double, ptr %17639, align 8, !tbaa !11
  %17641 = load ptr, ptr %13, align 8, !tbaa !5
  %17642 = getelementptr inbounds %struct.doublecomplex, ptr %17641, i32 0, i32 1
  %17643 = load double, ptr %17642, align 8, !tbaa !14
  %17644 = getelementptr inbounds %struct.doublecomplex, ptr %31, i32 0, i32 1
  %17645 = load double, ptr %17644, align 8, !tbaa !14
  %17646 = fmul double %17643, %17645
  %17647 = fneg double %17646
  %17648 = call double @llvm.fmuladd.f64(double %17638, double %17640, double %17647)
  %17649 = getelementptr inbounds %struct.doublecomplex, ptr %30, i32 0, i32 0
  store double %17648, ptr %17649, align 8, !tbaa !11
  %17650 = load ptr, ptr %13, align 8, !tbaa !5
  %17651 = getelementptr inbounds %struct.doublecomplex, ptr %17650, i32 0, i32 0
  %17652 = load double, ptr %17651, align 8, !tbaa !11
  %17653 = getelementptr inbounds %struct.doublecomplex, ptr %31, i32 0, i32 1
  %17654 = load double, ptr %17653, align 8, !tbaa !14
  %17655 = load ptr, ptr %13, align 8, !tbaa !5
  %17656 = getelementptr inbounds %struct.doublecomplex, ptr %17655, i32 0, i32 1
  %17657 = load double, ptr %17656, align 8, !tbaa !14
  %17658 = getelementptr inbounds %struct.doublecomplex, ptr %31, i32 0, i32 0
  %17659 = load double, ptr %17658, align 8, !tbaa !11
  %17660 = fmul double %17657, %17659
  %17661 = call double @llvm.fmuladd.f64(double %17652, double %17654, double %17660)
  %17662 = getelementptr inbounds %struct.doublecomplex, ptr %30, i32 0, i32 1
  store double %17661, ptr %17662, align 8, !tbaa !14
  %17663 = getelementptr inbounds %struct.doublecomplex, ptr %30, i32 0, i32 0
  %17664 = load double, ptr %17663, align 8, !tbaa !11
  %17665 = getelementptr inbounds %struct.doublecomplex, ptr %53, i32 0, i32 0
  store double %17664, ptr %17665, align 8, !tbaa !11
  %17666 = getelementptr inbounds %struct.doublecomplex, ptr %30, i32 0, i32 1
  %17667 = load double, ptr %17666, align 8, !tbaa !14
  %17668 = getelementptr inbounds %struct.doublecomplex, ptr %53, i32 0, i32 1
  store double %17667, ptr %17668, align 8, !tbaa !14
  %17669 = load ptr, ptr %12, align 8, !tbaa !5
  %17670 = getelementptr inbounds %struct.doublecomplex, ptr %17669, i64 5
  %17671 = getelementptr inbounds %struct.doublecomplex, ptr %17670, i32 0, i32 0
  %17672 = load double, ptr %17671, align 8, !tbaa !11
  %17673 = getelementptr inbounds %struct.doublecomplex, ptr %63, i32 0, i32 0
  store double %17672, ptr %17673, align 8, !tbaa !11
  %17674 = load ptr, ptr %12, align 8, !tbaa !5
  %17675 = getelementptr inbounds %struct.doublecomplex, ptr %17674, i64 5
  %17676 = getelementptr inbounds %struct.doublecomplex, ptr %17675, i32 0, i32 1
  %17677 = load double, ptr %17676, align 8, !tbaa !14
  %17678 = getelementptr inbounds %struct.doublecomplex, ptr %63, i32 0, i32 1
  store double %17677, ptr %17678, align 8, !tbaa !14
  %17679 = call { double, double } @Cd(ptr noundef %63)
  %17680 = extractvalue { double, double } %17679, 0
  %17681 = extractvalue { double, double } %17679, 1
  %17682 = fneg double %17681
  %17683 = call ptr @_pCd(ptr noundef %31)
  %17684 = getelementptr inbounds { double, double }, ptr %17683, i32 0, i32 0
  %17685 = getelementptr inbounds { double, double }, ptr %17683, i32 0, i32 1
  store double %17680, ptr %17684, align 8
  store double %17682, ptr %17685, align 8
  %17686 = load ptr, ptr %13, align 8, !tbaa !5
  %17687 = getelementptr inbounds %struct.doublecomplex, ptr %17686, i32 0, i32 0
  %17688 = load double, ptr %17687, align 8, !tbaa !11
  %17689 = getelementptr inbounds %struct.doublecomplex, ptr %31, i32 0, i32 0
  %17690 = load double, ptr %17689, align 8, !tbaa !11
  %17691 = load ptr, ptr %13, align 8, !tbaa !5
  %17692 = getelementptr inbounds %struct.doublecomplex, ptr %17691, i32 0, i32 1
  %17693 = load double, ptr %17692, align 8, !tbaa !14
  %17694 = getelementptr inbounds %struct.doublecomplex, ptr %31, i32 0, i32 1
  %17695 = load double, ptr %17694, align 8, !tbaa !14
  %17696 = fmul double %17693, %17695
  %17697 = fneg double %17696
  %17698 = call double @llvm.fmuladd.f64(double %17688, double %17690, double %17697)
  %17699 = getelementptr inbounds %struct.doublecomplex, ptr %30, i32 0, i32 0
  store double %17698, ptr %17699, align 8, !tbaa !11
  %17700 = load ptr, ptr %13, align 8, !tbaa !5
  %17701 = getelementptr inbounds %struct.doublecomplex, ptr %17700, i32 0, i32 0
  %17702 = load double, ptr %17701, align 8, !tbaa !11
  %17703 = getelementptr inbounds %struct.doublecomplex, ptr %31, i32 0, i32 1
  %17704 = load double, ptr %17703, align 8, !tbaa !14
  %17705 = load ptr, ptr %13, align 8, !tbaa !5
  %17706 = getelementptr inbounds %struct.doublecomplex, ptr %17705, i32 0, i32 1
  %17707 = load double, ptr %17706, align 8, !tbaa !14
  %17708 = getelementptr inbounds %struct.doublecomplex, ptr %31, i32 0, i32 0
  %17709 = load double, ptr %17708, align 8, !tbaa !11
  %17710 = fmul double %17707, %17709
  %17711 = call double @llvm.fmuladd.f64(double %17702, double %17704, double %17710)
  %17712 = getelementptr inbounds %struct.doublecomplex, ptr %30, i32 0, i32 1
  store double %17711, ptr %17712, align 8, !tbaa !14
  %17713 = getelementptr inbounds %struct.doublecomplex, ptr %30, i32 0, i32 0
  %17714 = load double, ptr %17713, align 8, !tbaa !11
  %17715 = getelementptr inbounds %struct.doublecomplex, ptr %54, i32 0, i32 0
  store double %17714, ptr %17715, align 8, !tbaa !11
  %17716 = getelementptr inbounds %struct.doublecomplex, ptr %30, i32 0, i32 1
  %17717 = load double, ptr %17716, align 8, !tbaa !14
  %17718 = getelementptr inbounds %struct.doublecomplex, ptr %54, i32 0, i32 1
  store double %17717, ptr %17718, align 8, !tbaa !14
  %17719 = load ptr, ptr %12, align 8, !tbaa !5
  %17720 = getelementptr inbounds %struct.doublecomplex, ptr %17719, i64 6
  %17721 = getelementptr inbounds %struct.doublecomplex, ptr %17720, i32 0, i32 0
  %17722 = load double, ptr %17721, align 8, !tbaa !11
  %17723 = getelementptr inbounds %struct.doublecomplex, ptr %64, i32 0, i32 0
  store double %17722, ptr %17723, align 8, !tbaa !11
  %17724 = load ptr, ptr %12, align 8, !tbaa !5
  %17725 = getelementptr inbounds %struct.doublecomplex, ptr %17724, i64 6
  %17726 = getelementptr inbounds %struct.doublecomplex, ptr %17725, i32 0, i32 1
  %17727 = load double, ptr %17726, align 8, !tbaa !14
  %17728 = getelementptr inbounds %struct.doublecomplex, ptr %64, i32 0, i32 1
  store double %17727, ptr %17728, align 8, !tbaa !14
  %17729 = call { double, double } @Cd(ptr noundef %64)
  %17730 = extractvalue { double, double } %17729, 0
  %17731 = extractvalue { double, double } %17729, 1
  %17732 = fneg double %17731
  %17733 = call ptr @_pCd(ptr noundef %31)
  %17734 = getelementptr inbounds { double, double }, ptr %17733, i32 0, i32 0
  %17735 = getelementptr inbounds { double, double }, ptr %17733, i32 0, i32 1
  store double %17730, ptr %17734, align 8
  store double %17732, ptr %17735, align 8
  %17736 = load ptr, ptr %13, align 8, !tbaa !5
  %17737 = getelementptr inbounds %struct.doublecomplex, ptr %17736, i32 0, i32 0
  %17738 = load double, ptr %17737, align 8, !tbaa !11
  %17739 = getelementptr inbounds %struct.doublecomplex, ptr %31, i32 0, i32 0
  %17740 = load double, ptr %17739, align 8, !tbaa !11
  %17741 = load ptr, ptr %13, align 8, !tbaa !5
  %17742 = getelementptr inbounds %struct.doublecomplex, ptr %17741, i32 0, i32 1
  %17743 = load double, ptr %17742, align 8, !tbaa !14
  %17744 = getelementptr inbounds %struct.doublecomplex, ptr %31, i32 0, i32 1
  %17745 = load double, ptr %17744, align 8, !tbaa !14
  %17746 = fmul double %17743, %17745
  %17747 = fneg double %17746
  %17748 = call double @llvm.fmuladd.f64(double %17738, double %17740, double %17747)
  %17749 = getelementptr inbounds %struct.doublecomplex, ptr %30, i32 0, i32 0
  store double %17748, ptr %17749, align 8, !tbaa !11
  %17750 = load ptr, ptr %13, align 8, !tbaa !5
  %17751 = getelementptr inbounds %struct.doublecomplex, ptr %17750, i32 0, i32 0
  %17752 = load double, ptr %17751, align 8, !tbaa !11
  %17753 = getelementptr inbounds %struct.doublecomplex, ptr %31, i32 0, i32 1
  %17754 = load double, ptr %17753, align 8, !tbaa !14
  %17755 = load ptr, ptr %13, align 8, !tbaa !5
  %17756 = getelementptr inbounds %struct.doublecomplex, ptr %17755, i32 0, i32 1
  %17757 = load double, ptr %17756, align 8, !tbaa !14
  %17758 = getelementptr inbounds %struct.doublecomplex, ptr %31, i32 0, i32 0
  %17759 = load double, ptr %17758, align 8, !tbaa !11
  %17760 = fmul double %17757, %17759
  %17761 = call double @llvm.fmuladd.f64(double %17752, double %17754, double %17760)
  %17762 = getelementptr inbounds %struct.doublecomplex, ptr %30, i32 0, i32 1
  store double %17761, ptr %17762, align 8, !tbaa !14
  %17763 = getelementptr inbounds %struct.doublecomplex, ptr %30, i32 0, i32 0
  %17764 = load double, ptr %17763, align 8, !tbaa !11
  %17765 = getelementptr inbounds %struct.doublecomplex, ptr %55, i32 0, i32 0
  store double %17764, ptr %17765, align 8, !tbaa !11
  %17766 = getelementptr inbounds %struct.doublecomplex, ptr %30, i32 0, i32 1
  %17767 = load double, ptr %17766, align 8, !tbaa !14
  %17768 = getelementptr inbounds %struct.doublecomplex, ptr %55, i32 0, i32 1
  store double %17767, ptr %17768, align 8, !tbaa !14
  %17769 = load ptr, ptr %12, align 8, !tbaa !5
  %17770 = getelementptr inbounds %struct.doublecomplex, ptr %17769, i64 7
  %17771 = getelementptr inbounds %struct.doublecomplex, ptr %17770, i32 0, i32 0
  %17772 = load double, ptr %17771, align 8, !tbaa !11
  %17773 = getelementptr inbounds %struct.doublecomplex, ptr %65, i32 0, i32 0
  store double %17772, ptr %17773, align 8, !tbaa !11
  %17774 = load ptr, ptr %12, align 8, !tbaa !5
  %17775 = getelementptr inbounds %struct.doublecomplex, ptr %17774, i64 7
  %17776 = getelementptr inbounds %struct.doublecomplex, ptr %17775, i32 0, i32 1
  %17777 = load double, ptr %17776, align 8, !tbaa !14
  %17778 = getelementptr inbounds %struct.doublecomplex, ptr %65, i32 0, i32 1
  store double %17777, ptr %17778, align 8, !tbaa !14
  %17779 = call { double, double } @Cd(ptr noundef %65)
  %17780 = extractvalue { double, double } %17779, 0
  %17781 = extractvalue { double, double } %17779, 1
  %17782 = fneg double %17781
  %17783 = call ptr @_pCd(ptr noundef %31)
  %17784 = getelementptr inbounds { double, double }, ptr %17783, i32 0, i32 0
  %17785 = getelementptr inbounds { double, double }, ptr %17783, i32 0, i32 1
  store double %17780, ptr %17784, align 8
  store double %17782, ptr %17785, align 8
  %17786 = load ptr, ptr %13, align 8, !tbaa !5
  %17787 = getelementptr inbounds %struct.doublecomplex, ptr %17786, i32 0, i32 0
  %17788 = load double, ptr %17787, align 8, !tbaa !11
  %17789 = getelementptr inbounds %struct.doublecomplex, ptr %31, i32 0, i32 0
  %17790 = load double, ptr %17789, align 8, !tbaa !11
  %17791 = load ptr, ptr %13, align 8, !tbaa !5
  %17792 = getelementptr inbounds %struct.doublecomplex, ptr %17791, i32 0, i32 1
  %17793 = load double, ptr %17792, align 8, !tbaa !14
  %17794 = getelementptr inbounds %struct.doublecomplex, ptr %31, i32 0, i32 1
  %17795 = load double, ptr %17794, align 8, !tbaa !14
  %17796 = fmul double %17793, %17795
  %17797 = fneg double %17796
  %17798 = call double @llvm.fmuladd.f64(double %17788, double %17790, double %17797)
  %17799 = getelementptr inbounds %struct.doublecomplex, ptr %30, i32 0, i32 0
  store double %17798, ptr %17799, align 8, !tbaa !11
  %17800 = load ptr, ptr %13, align 8, !tbaa !5
  %17801 = getelementptr inbounds %struct.doublecomplex, ptr %17800, i32 0, i32 0
  %17802 = load double, ptr %17801, align 8, !tbaa !11
  %17803 = getelementptr inbounds %struct.doublecomplex, ptr %31, i32 0, i32 1
  %17804 = load double, ptr %17803, align 8, !tbaa !14
  %17805 = load ptr, ptr %13, align 8, !tbaa !5
  %17806 = getelementptr inbounds %struct.doublecomplex, ptr %17805, i32 0, i32 1
  %17807 = load double, ptr %17806, align 8, !tbaa !14
  %17808 = getelementptr inbounds %struct.doublecomplex, ptr %31, i32 0, i32 0
  %17809 = load double, ptr %17808, align 8, !tbaa !11
  %17810 = fmul double %17807, %17809
  %17811 = call double @llvm.fmuladd.f64(double %17802, double %17804, double %17810)
  %17812 = getelementptr inbounds %struct.doublecomplex, ptr %30, i32 0, i32 1
  store double %17811, ptr %17812, align 8, !tbaa !14
  %17813 = getelementptr inbounds %struct.doublecomplex, ptr %30, i32 0, i32 0
  %17814 = load double, ptr %17813, align 8, !tbaa !11
  %17815 = getelementptr inbounds %struct.doublecomplex, ptr %56, i32 0, i32 0
  store double %17814, ptr %17815, align 8, !tbaa !11
  %17816 = getelementptr inbounds %struct.doublecomplex, ptr %30, i32 0, i32 1
  %17817 = load double, ptr %17816, align 8, !tbaa !14
  %17818 = getelementptr inbounds %struct.doublecomplex, ptr %56, i32 0, i32 1
  store double %17817, ptr %17818, align 8, !tbaa !14
  %17819 = load ptr, ptr %12, align 8, !tbaa !5
  %17820 = getelementptr inbounds %struct.doublecomplex, ptr %17819, i64 8
  %17821 = getelementptr inbounds %struct.doublecomplex, ptr %17820, i32 0, i32 0
  %17822 = load double, ptr %17821, align 8, !tbaa !11
  %17823 = getelementptr inbounds %struct.doublecomplex, ptr %66, i32 0, i32 0
  store double %17822, ptr %17823, align 8, !tbaa !11
  %17824 = load ptr, ptr %12, align 8, !tbaa !5
  %17825 = getelementptr inbounds %struct.doublecomplex, ptr %17824, i64 8
  %17826 = getelementptr inbounds %struct.doublecomplex, ptr %17825, i32 0, i32 1
  %17827 = load double, ptr %17826, align 8, !tbaa !14
  %17828 = getelementptr inbounds %struct.doublecomplex, ptr %66, i32 0, i32 1
  store double %17827, ptr %17828, align 8, !tbaa !14
  %17829 = call { double, double } @Cd(ptr noundef %66)
  %17830 = extractvalue { double, double } %17829, 0
  %17831 = extractvalue { double, double } %17829, 1
  %17832 = fneg double %17831
  %17833 = call ptr @_pCd(ptr noundef %31)
  %17834 = getelementptr inbounds { double, double }, ptr %17833, i32 0, i32 0
  %17835 = getelementptr inbounds { double, double }, ptr %17833, i32 0, i32 1
  store double %17830, ptr %17834, align 8
  store double %17832, ptr %17835, align 8
  %17836 = load ptr, ptr %13, align 8, !tbaa !5
  %17837 = getelementptr inbounds %struct.doublecomplex, ptr %17836, i32 0, i32 0
  %17838 = load double, ptr %17837, align 8, !tbaa !11
  %17839 = getelementptr inbounds %struct.doublecomplex, ptr %31, i32 0, i32 0
  %17840 = load double, ptr %17839, align 8, !tbaa !11
  %17841 = load ptr, ptr %13, align 8, !tbaa !5
  %17842 = getelementptr inbounds %struct.doublecomplex, ptr %17841, i32 0, i32 1
  %17843 = load double, ptr %17842, align 8, !tbaa !14
  %17844 = getelementptr inbounds %struct.doublecomplex, ptr %31, i32 0, i32 1
  %17845 = load double, ptr %17844, align 8, !tbaa !14
  %17846 = fmul double %17843, %17845
  %17847 = fneg double %17846
  %17848 = call double @llvm.fmuladd.f64(double %17838, double %17840, double %17847)
  %17849 = getelementptr inbounds %struct.doublecomplex, ptr %30, i32 0, i32 0
  store double %17848, ptr %17849, align 8, !tbaa !11
  %17850 = load ptr, ptr %13, align 8, !tbaa !5
  %17851 = getelementptr inbounds %struct.doublecomplex, ptr %17850, i32 0, i32 0
  %17852 = load double, ptr %17851, align 8, !tbaa !11
  %17853 = getelementptr inbounds %struct.doublecomplex, ptr %31, i32 0, i32 1
  %17854 = load double, ptr %17853, align 8, !tbaa !14
  %17855 = load ptr, ptr %13, align 8, !tbaa !5
  %17856 = getelementptr inbounds %struct.doublecomplex, ptr %17855, i32 0, i32 1
  %17857 = load double, ptr %17856, align 8, !tbaa !14
  %17858 = getelementptr inbounds %struct.doublecomplex, ptr %31, i32 0, i32 0
  %17859 = load double, ptr %17858, align 8, !tbaa !11
  %17860 = fmul double %17857, %17859
  %17861 = call double @llvm.fmuladd.f64(double %17852, double %17854, double %17860)
  %17862 = getelementptr inbounds %struct.doublecomplex, ptr %30, i32 0, i32 1
  store double %17861, ptr %17862, align 8, !tbaa !14
  %17863 = getelementptr inbounds %struct.doublecomplex, ptr %30, i32 0, i32 0
  %17864 = load double, ptr %17863, align 8, !tbaa !11
  %17865 = getelementptr inbounds %struct.doublecomplex, ptr %57, i32 0, i32 0
  store double %17864, ptr %17865, align 8, !tbaa !11
  %17866 = getelementptr inbounds %struct.doublecomplex, ptr %30, i32 0, i32 1
  %17867 = load double, ptr %17866, align 8, !tbaa !14
  %17868 = getelementptr inbounds %struct.doublecomplex, ptr %57, i32 0, i32 1
  store double %17867, ptr %17868, align 8, !tbaa !14
  %17869 = load ptr, ptr %12, align 8, !tbaa !5
  %17870 = getelementptr inbounds %struct.doublecomplex, ptr %17869, i64 9
  %17871 = getelementptr inbounds %struct.doublecomplex, ptr %17870, i32 0, i32 0
  %17872 = load double, ptr %17871, align 8, !tbaa !11
  %17873 = getelementptr inbounds %struct.doublecomplex, ptr %67, i32 0, i32 0
  store double %17872, ptr %17873, align 8, !tbaa !11
  %17874 = load ptr, ptr %12, align 8, !tbaa !5
  %17875 = getelementptr inbounds %struct.doublecomplex, ptr %17874, i64 9
  %17876 = getelementptr inbounds %struct.doublecomplex, ptr %17875, i32 0, i32 1
  %17877 = load double, ptr %17876, align 8, !tbaa !14
  %17878 = getelementptr inbounds %struct.doublecomplex, ptr %67, i32 0, i32 1
  store double %17877, ptr %17878, align 8, !tbaa !14
  %17879 = call { double, double } @Cd(ptr noundef %67)
  %17880 = extractvalue { double, double } %17879, 0
  %17881 = extractvalue { double, double } %17879, 1
  %17882 = fneg double %17881
  %17883 = call ptr @_pCd(ptr noundef %31)
  %17884 = getelementptr inbounds { double, double }, ptr %17883, i32 0, i32 0
  %17885 = getelementptr inbounds { double, double }, ptr %17883, i32 0, i32 1
  store double %17880, ptr %17884, align 8
  store double %17882, ptr %17885, align 8
  %17886 = load ptr, ptr %13, align 8, !tbaa !5
  %17887 = getelementptr inbounds %struct.doublecomplex, ptr %17886, i32 0, i32 0
  %17888 = load double, ptr %17887, align 8, !tbaa !11
  %17889 = getelementptr inbounds %struct.doublecomplex, ptr %31, i32 0, i32 0
  %17890 = load double, ptr %17889, align 8, !tbaa !11
  %17891 = load ptr, ptr %13, align 8, !tbaa !5
  %17892 = getelementptr inbounds %struct.doublecomplex, ptr %17891, i32 0, i32 1
  %17893 = load double, ptr %17892, align 8, !tbaa !14
  %17894 = getelementptr inbounds %struct.doublecomplex, ptr %31, i32 0, i32 1
  %17895 = load double, ptr %17894, align 8, !tbaa !14
  %17896 = fmul double %17893, %17895
  %17897 = fneg double %17896
  %17898 = call double @llvm.fmuladd.f64(double %17888, double %17890, double %17897)
  %17899 = getelementptr inbounds %struct.doublecomplex, ptr %30, i32 0, i32 0
  store double %17898, ptr %17899, align 8, !tbaa !11
  %17900 = load ptr, ptr %13, align 8, !tbaa !5
  %17901 = getelementptr inbounds %struct.doublecomplex, ptr %17900, i32 0, i32 0
  %17902 = load double, ptr %17901, align 8, !tbaa !11
  %17903 = getelementptr inbounds %struct.doublecomplex, ptr %31, i32 0, i32 1
  %17904 = load double, ptr %17903, align 8, !tbaa !14
  %17905 = load ptr, ptr %13, align 8, !tbaa !5
  %17906 = getelementptr inbounds %struct.doublecomplex, ptr %17905, i32 0, i32 1
  %17907 = load double, ptr %17906, align 8, !tbaa !14
  %17908 = getelementptr inbounds %struct.doublecomplex, ptr %31, i32 0, i32 0
  %17909 = load double, ptr %17908, align 8, !tbaa !11
  %17910 = fmul double %17907, %17909
  %17911 = call double @llvm.fmuladd.f64(double %17902, double %17904, double %17910)
  %17912 = getelementptr inbounds %struct.doublecomplex, ptr %30, i32 0, i32 1
  store double %17911, ptr %17912, align 8, !tbaa !14
  %17913 = getelementptr inbounds %struct.doublecomplex, ptr %30, i32 0, i32 0
  %17914 = load double, ptr %17913, align 8, !tbaa !11
  %17915 = getelementptr inbounds %struct.doublecomplex, ptr %58, i32 0, i32 0
  store double %17914, ptr %17915, align 8, !tbaa !11
  %17916 = getelementptr inbounds %struct.doublecomplex, ptr %30, i32 0, i32 1
  %17917 = load double, ptr %17916, align 8, !tbaa !14
  %17918 = getelementptr inbounds %struct.doublecomplex, ptr %58, i32 0, i32 1
  store double %17917, ptr %17918, align 8, !tbaa !14
  %17919 = load ptr, ptr %12, align 8, !tbaa !5
  %17920 = getelementptr inbounds %struct.doublecomplex, ptr %17919, i64 10
  %17921 = getelementptr inbounds %struct.doublecomplex, ptr %17920, i32 0, i32 0
  %17922 = load double, ptr %17921, align 8, !tbaa !11
  %17923 = getelementptr inbounds %struct.doublecomplex, ptr %69, i32 0, i32 0
  store double %17922, ptr %17923, align 8, !tbaa !11
  %17924 = load ptr, ptr %12, align 8, !tbaa !5
  %17925 = getelementptr inbounds %struct.doublecomplex, ptr %17924, i64 10
  %17926 = getelementptr inbounds %struct.doublecomplex, ptr %17925, i32 0, i32 1
  %17927 = load double, ptr %17926, align 8, !tbaa !14
  %17928 = getelementptr inbounds %struct.doublecomplex, ptr %69, i32 0, i32 1
  store double %17927, ptr %17928, align 8, !tbaa !14
  %17929 = call { double, double } @Cd(ptr noundef %69)
  %17930 = extractvalue { double, double } %17929, 0
  %17931 = extractvalue { double, double } %17929, 1
  %17932 = fneg double %17931
  %17933 = call ptr @_pCd(ptr noundef %31)
  %17934 = getelementptr inbounds { double, double }, ptr %17933, i32 0, i32 0
  %17935 = getelementptr inbounds { double, double }, ptr %17933, i32 0, i32 1
  store double %17930, ptr %17934, align 8
  store double %17932, ptr %17935, align 8
  %17936 = load ptr, ptr %13, align 8, !tbaa !5
  %17937 = getelementptr inbounds %struct.doublecomplex, ptr %17936, i32 0, i32 0
  %17938 = load double, ptr %17937, align 8, !tbaa !11
  %17939 = getelementptr inbounds %struct.doublecomplex, ptr %31, i32 0, i32 0
  %17940 = load double, ptr %17939, align 8, !tbaa !11
  %17941 = load ptr, ptr %13, align 8, !tbaa !5
  %17942 = getelementptr inbounds %struct.doublecomplex, ptr %17941, i32 0, i32 1
  %17943 = load double, ptr %17942, align 8, !tbaa !14
  %17944 = getelementptr inbounds %struct.doublecomplex, ptr %31, i32 0, i32 1
  %17945 = load double, ptr %17944, align 8, !tbaa !14
  %17946 = fmul double %17943, %17945
  %17947 = fneg double %17946
  %17948 = call double @llvm.fmuladd.f64(double %17938, double %17940, double %17947)
  %17949 = getelementptr inbounds %struct.doublecomplex, ptr %30, i32 0, i32 0
  store double %17948, ptr %17949, align 8, !tbaa !11
  %17950 = load ptr, ptr %13, align 8, !tbaa !5
  %17951 = getelementptr inbounds %struct.doublecomplex, ptr %17950, i32 0, i32 0
  %17952 = load double, ptr %17951, align 8, !tbaa !11
  %17953 = getelementptr inbounds %struct.doublecomplex, ptr %31, i32 0, i32 1
  %17954 = load double, ptr %17953, align 8, !tbaa !14
  %17955 = load ptr, ptr %13, align 8, !tbaa !5
  %17956 = getelementptr inbounds %struct.doublecomplex, ptr %17955, i32 0, i32 1
  %17957 = load double, ptr %17956, align 8, !tbaa !14
  %17958 = getelementptr inbounds %struct.doublecomplex, ptr %31, i32 0, i32 0
  %17959 = load double, ptr %17958, align 8, !tbaa !11
  %17960 = fmul double %17957, %17959
  %17961 = call double @llvm.fmuladd.f64(double %17952, double %17954, double %17960)
  %17962 = getelementptr inbounds %struct.doublecomplex, ptr %30, i32 0, i32 1
  store double %17961, ptr %17962, align 8, !tbaa !14
  %17963 = getelementptr inbounds %struct.doublecomplex, ptr %30, i32 0, i32 0
  %17964 = load double, ptr %17963, align 8, !tbaa !11
  %17965 = getelementptr inbounds %struct.doublecomplex, ptr %68, i32 0, i32 0
  store double %17964, ptr %17965, align 8, !tbaa !11
  %17966 = getelementptr inbounds %struct.doublecomplex, ptr %30, i32 0, i32 1
  %17967 = load double, ptr %17966, align 8, !tbaa !14
  %17968 = getelementptr inbounds %struct.doublecomplex, ptr %68, i32 0, i32 1
  store double %17967, ptr %17968, align 8, !tbaa !14
  %17969 = load ptr, ptr %10, align 8, !tbaa !5
  %17970 = load i32, ptr %17969, align 4, !tbaa !9
  store i32 %17970, ptr %19, align 4, !tbaa !9
  store i32 1, ptr %49, align 4, !tbaa !9
  br label %17971

17971:                                            ; preds = %19167, %17468
  %17972 = load i32, ptr %49, align 4, !tbaa !9
  %17973 = load i32, ptr %19, align 4, !tbaa !9
  %17974 = icmp sle i32 %17972, %17973
  br i1 %17974, label %17975, label %19170

17975:                                            ; preds = %17971
  %17976 = load i32, ptr %49, align 4, !tbaa !9
  %17977 = load i32, ptr %17, align 4, !tbaa !9
  %17978 = add nsw i32 %17976, %17977
  store i32 %17978, ptr %20, align 4, !tbaa !9
  %17979 = getelementptr inbounds %struct.doublecomplex, ptr %59, i32 0, i32 0
  %17980 = load double, ptr %17979, align 8, !tbaa !11
  %17981 = load ptr, ptr %14, align 8, !tbaa !5
  %17982 = load i32, ptr %20, align 4, !tbaa !9
  %17983 = sext i32 %17982 to i64
  %17984 = getelementptr inbounds %struct.doublecomplex, ptr %17981, i64 %17983
  %17985 = getelementptr inbounds %struct.doublecomplex, ptr %17984, i32 0, i32 0
  %17986 = load double, ptr %17985, align 8, !tbaa !11
  %17987 = getelementptr inbounds %struct.doublecomplex, ptr %59, i32 0, i32 1
  %17988 = load double, ptr %17987, align 8, !tbaa !14
  %17989 = load ptr, ptr %14, align 8, !tbaa !5
  %17990 = load i32, ptr %20, align 4, !tbaa !9
  %17991 = sext i32 %17990 to i64
  %17992 = getelementptr inbounds %struct.doublecomplex, ptr %17989, i64 %17991
  %17993 = getelementptr inbounds %struct.doublecomplex, ptr %17992, i32 0, i32 1
  %17994 = load double, ptr %17993, align 8, !tbaa !14
  %17995 = fmul double %17988, %17994
  %17996 = fneg double %17995
  %17997 = call double @llvm.fmuladd.f64(double %17980, double %17986, double %17996)
  %17998 = getelementptr inbounds %struct.doublecomplex, ptr %39, i32 0, i32 0
  store double %17997, ptr %17998, align 8, !tbaa !11
  %17999 = getelementptr inbounds %struct.doublecomplex, ptr %59, i32 0, i32 0
  %18000 = load double, ptr %17999, align 8, !tbaa !11
  %18001 = load ptr, ptr %14, align 8, !tbaa !5
  %18002 = load i32, ptr %20, align 4, !tbaa !9
  %18003 = sext i32 %18002 to i64
  %18004 = getelementptr inbounds %struct.doublecomplex, ptr %18001, i64 %18003
  %18005 = getelementptr inbounds %struct.doublecomplex, ptr %18004, i32 0, i32 1
  %18006 = load double, ptr %18005, align 8, !tbaa !14
  %18007 = getelementptr inbounds %struct.doublecomplex, ptr %59, i32 0, i32 1
  %18008 = load double, ptr %18007, align 8, !tbaa !14
  %18009 = load ptr, ptr %14, align 8, !tbaa !5
  %18010 = load i32, ptr %20, align 4, !tbaa !9
  %18011 = sext i32 %18010 to i64
  %18012 = getelementptr inbounds %struct.doublecomplex, ptr %18009, i64 %18011
  %18013 = getelementptr inbounds %struct.doublecomplex, ptr %18012, i32 0, i32 0
  %18014 = load double, ptr %18013, align 8, !tbaa !11
  %18015 = fmul double %18008, %18014
  %18016 = call double @llvm.fmuladd.f64(double %18000, double %18006, double %18015)
  %18017 = getelementptr inbounds %struct.doublecomplex, ptr %39, i32 0, i32 1
  store double %18016, ptr %18017, align 8, !tbaa !14
  %18018 = load i32, ptr %49, align 4, !tbaa !9
  %18019 = load i32, ptr %17, align 4, !tbaa !9
  %18020 = shl i32 %18019, 1
  %18021 = add nsw i32 %18018, %18020
  store i32 %18021, ptr %21, align 4, !tbaa !9
  %18022 = getelementptr inbounds %struct.doublecomplex, ptr %60, i32 0, i32 0
  %18023 = load double, ptr %18022, align 8, !tbaa !11
  %18024 = load ptr, ptr %14, align 8, !tbaa !5
  %18025 = load i32, ptr %21, align 4, !tbaa !9
  %18026 = sext i32 %18025 to i64
  %18027 = getelementptr inbounds %struct.doublecomplex, ptr %18024, i64 %18026
  %18028 = getelementptr inbounds %struct.doublecomplex, ptr %18027, i32 0, i32 0
  %18029 = load double, ptr %18028, align 8, !tbaa !11
  %18030 = getelementptr inbounds %struct.doublecomplex, ptr %60, i32 0, i32 1
  %18031 = load double, ptr %18030, align 8, !tbaa !14
  %18032 = load ptr, ptr %14, align 8, !tbaa !5
  %18033 = load i32, ptr %21, align 4, !tbaa !9
  %18034 = sext i32 %18033 to i64
  %18035 = getelementptr inbounds %struct.doublecomplex, ptr %18032, i64 %18034
  %18036 = getelementptr inbounds %struct.doublecomplex, ptr %18035, i32 0, i32 1
  %18037 = load double, ptr %18036, align 8, !tbaa !14
  %18038 = fmul double %18031, %18037
  %18039 = fneg double %18038
  %18040 = call double @llvm.fmuladd.f64(double %18023, double %18029, double %18039)
  %18041 = getelementptr inbounds %struct.doublecomplex, ptr %40, i32 0, i32 0
  store double %18040, ptr %18041, align 8, !tbaa !11
  %18042 = getelementptr inbounds %struct.doublecomplex, ptr %60, i32 0, i32 0
  %18043 = load double, ptr %18042, align 8, !tbaa !11
  %18044 = load ptr, ptr %14, align 8, !tbaa !5
  %18045 = load i32, ptr %21, align 4, !tbaa !9
  %18046 = sext i32 %18045 to i64
  %18047 = getelementptr inbounds %struct.doublecomplex, ptr %18044, i64 %18046
  %18048 = getelementptr inbounds %struct.doublecomplex, ptr %18047, i32 0, i32 1
  %18049 = load double, ptr %18048, align 8, !tbaa !14
  %18050 = getelementptr inbounds %struct.doublecomplex, ptr %60, i32 0, i32 1
  %18051 = load double, ptr %18050, align 8, !tbaa !14
  %18052 = load ptr, ptr %14, align 8, !tbaa !5
  %18053 = load i32, ptr %21, align 4, !tbaa !9
  %18054 = sext i32 %18053 to i64
  %18055 = getelementptr inbounds %struct.doublecomplex, ptr %18052, i64 %18054
  %18056 = getelementptr inbounds %struct.doublecomplex, ptr %18055, i32 0, i32 0
  %18057 = load double, ptr %18056, align 8, !tbaa !11
  %18058 = fmul double %18051, %18057
  %18059 = call double @llvm.fmuladd.f64(double %18043, double %18049, double %18058)
  %18060 = getelementptr inbounds %struct.doublecomplex, ptr %40, i32 0, i32 1
  store double %18059, ptr %18060, align 8, !tbaa !14
  %18061 = getelementptr inbounds %struct.doublecomplex, ptr %39, i32 0, i32 0
  %18062 = load double, ptr %18061, align 8, !tbaa !11
  %18063 = getelementptr inbounds %struct.doublecomplex, ptr %40, i32 0, i32 0
  %18064 = load double, ptr %18063, align 8, !tbaa !11
  %18065 = fadd double %18062, %18064
  %18066 = getelementptr inbounds %struct.doublecomplex, ptr %38, i32 0, i32 0
  store double %18065, ptr %18066, align 8, !tbaa !11
  %18067 = getelementptr inbounds %struct.doublecomplex, ptr %39, i32 0, i32 1
  %18068 = load double, ptr %18067, align 8, !tbaa !14
  %18069 = getelementptr inbounds %struct.doublecomplex, ptr %40, i32 0, i32 1
  %18070 = load double, ptr %18069, align 8, !tbaa !14
  %18071 = fadd double %18068, %18070
  %18072 = getelementptr inbounds %struct.doublecomplex, ptr %38, i32 0, i32 1
  store double %18071, ptr %18072, align 8, !tbaa !14
  %18073 = load i32, ptr %49, align 4, !tbaa !9
  %18074 = load i32, ptr %17, align 4, !tbaa !9
  %18075 = mul nsw i32 %18074, 3
  %18076 = add nsw i32 %18073, %18075
  store i32 %18076, ptr %22, align 4, !tbaa !9
  %18077 = getelementptr inbounds %struct.doublecomplex, ptr %61, i32 0, i32 0
  %18078 = load double, ptr %18077, align 8, !tbaa !11
  %18079 = load ptr, ptr %14, align 8, !tbaa !5
  %18080 = load i32, ptr %22, align 4, !tbaa !9
  %18081 = sext i32 %18080 to i64
  %18082 = getelementptr inbounds %struct.doublecomplex, ptr %18079, i64 %18081
  %18083 = getelementptr inbounds %struct.doublecomplex, ptr %18082, i32 0, i32 0
  %18084 = load double, ptr %18083, align 8, !tbaa !11
  %18085 = getelementptr inbounds %struct.doublecomplex, ptr %61, i32 0, i32 1
  %18086 = load double, ptr %18085, align 8, !tbaa !14
  %18087 = load ptr, ptr %14, align 8, !tbaa !5
  %18088 = load i32, ptr %22, align 4, !tbaa !9
  %18089 = sext i32 %18088 to i64
  %18090 = getelementptr inbounds %struct.doublecomplex, ptr %18087, i64 %18089
  %18091 = getelementptr inbounds %struct.doublecomplex, ptr %18090, i32 0, i32 1
  %18092 = load double, ptr %18091, align 8, !tbaa !14
  %18093 = fmul double %18086, %18092
  %18094 = fneg double %18093
  %18095 = call double @llvm.fmuladd.f64(double %18078, double %18084, double %18094)
  %18096 = getelementptr inbounds %struct.doublecomplex, ptr %41, i32 0, i32 0
  store double %18095, ptr %18096, align 8, !tbaa !11
  %18097 = getelementptr inbounds %struct.doublecomplex, ptr %61, i32 0, i32 0
  %18098 = load double, ptr %18097, align 8, !tbaa !11
  %18099 = load ptr, ptr %14, align 8, !tbaa !5
  %18100 = load i32, ptr %22, align 4, !tbaa !9
  %18101 = sext i32 %18100 to i64
  %18102 = getelementptr inbounds %struct.doublecomplex, ptr %18099, i64 %18101
  %18103 = getelementptr inbounds %struct.doublecomplex, ptr %18102, i32 0, i32 1
  %18104 = load double, ptr %18103, align 8, !tbaa !14
  %18105 = getelementptr inbounds %struct.doublecomplex, ptr %61, i32 0, i32 1
  %18106 = load double, ptr %18105, align 8, !tbaa !14
  %18107 = load ptr, ptr %14, align 8, !tbaa !5
  %18108 = load i32, ptr %22, align 4, !tbaa !9
  %18109 = sext i32 %18108 to i64
  %18110 = getelementptr inbounds %struct.doublecomplex, ptr %18107, i64 %18109
  %18111 = getelementptr inbounds %struct.doublecomplex, ptr %18110, i32 0, i32 0
  %18112 = load double, ptr %18111, align 8, !tbaa !11
  %18113 = fmul double %18106, %18112
  %18114 = call double @llvm.fmuladd.f64(double %18098, double %18104, double %18113)
  %18115 = getelementptr inbounds %struct.doublecomplex, ptr %41, i32 0, i32 1
  store double %18114, ptr %18115, align 8, !tbaa !14
  %18116 = getelementptr inbounds %struct.doublecomplex, ptr %38, i32 0, i32 0
  %18117 = load double, ptr %18116, align 8, !tbaa !11
  %18118 = getelementptr inbounds %struct.doublecomplex, ptr %41, i32 0, i32 0
  %18119 = load double, ptr %18118, align 8, !tbaa !11
  %18120 = fadd double %18117, %18119
  %18121 = getelementptr inbounds %struct.doublecomplex, ptr %37, i32 0, i32 0
  store double %18120, ptr %18121, align 8, !tbaa !11
  %18122 = getelementptr inbounds %struct.doublecomplex, ptr %38, i32 0, i32 1
  %18123 = load double, ptr %18122, align 8, !tbaa !14
  %18124 = getelementptr inbounds %struct.doublecomplex, ptr %41, i32 0, i32 1
  %18125 = load double, ptr %18124, align 8, !tbaa !14
  %18126 = fadd double %18123, %18125
  %18127 = getelementptr inbounds %struct.doublecomplex, ptr %37, i32 0, i32 1
  store double %18126, ptr %18127, align 8, !tbaa !14
  %18128 = load i32, ptr %49, align 4, !tbaa !9
  %18129 = load i32, ptr %17, align 4, !tbaa !9
  %18130 = shl i32 %18129, 2
  %18131 = add nsw i32 %18128, %18130
  store i32 %18131, ptr %23, align 4, !tbaa !9
  %18132 = getelementptr inbounds %struct.doublecomplex, ptr %62, i32 0, i32 0
  %18133 = load double, ptr %18132, align 8, !tbaa !11
  %18134 = load ptr, ptr %14, align 8, !tbaa !5
  %18135 = load i32, ptr %23, align 4, !tbaa !9
  %18136 = sext i32 %18135 to i64
  %18137 = getelementptr inbounds %struct.doublecomplex, ptr %18134, i64 %18136
  %18138 = getelementptr inbounds %struct.doublecomplex, ptr %18137, i32 0, i32 0
  %18139 = load double, ptr %18138, align 8, !tbaa !11
  %18140 = getelementptr inbounds %struct.doublecomplex, ptr %62, i32 0, i32 1
  %18141 = load double, ptr %18140, align 8, !tbaa !14
  %18142 = load ptr, ptr %14, align 8, !tbaa !5
  %18143 = load i32, ptr %23, align 4, !tbaa !9
  %18144 = sext i32 %18143 to i64
  %18145 = getelementptr inbounds %struct.doublecomplex, ptr %18142, i64 %18144
  %18146 = getelementptr inbounds %struct.doublecomplex, ptr %18145, i32 0, i32 1
  %18147 = load double, ptr %18146, align 8, !tbaa !14
  %18148 = fmul double %18141, %18147
  %18149 = fneg double %18148
  %18150 = call double @llvm.fmuladd.f64(double %18133, double %18139, double %18149)
  %18151 = getelementptr inbounds %struct.doublecomplex, ptr %42, i32 0, i32 0
  store double %18150, ptr %18151, align 8, !tbaa !11
  %18152 = getelementptr inbounds %struct.doublecomplex, ptr %62, i32 0, i32 0
  %18153 = load double, ptr %18152, align 8, !tbaa !11
  %18154 = load ptr, ptr %14, align 8, !tbaa !5
  %18155 = load i32, ptr %23, align 4, !tbaa !9
  %18156 = sext i32 %18155 to i64
  %18157 = getelementptr inbounds %struct.doublecomplex, ptr %18154, i64 %18156
  %18158 = getelementptr inbounds %struct.doublecomplex, ptr %18157, i32 0, i32 1
  %18159 = load double, ptr %18158, align 8, !tbaa !14
  %18160 = getelementptr inbounds %struct.doublecomplex, ptr %62, i32 0, i32 1
  %18161 = load double, ptr %18160, align 8, !tbaa !14
  %18162 = load ptr, ptr %14, align 8, !tbaa !5
  %18163 = load i32, ptr %23, align 4, !tbaa !9
  %18164 = sext i32 %18163 to i64
  %18165 = getelementptr inbounds %struct.doublecomplex, ptr %18162, i64 %18164
  %18166 = getelementptr inbounds %struct.doublecomplex, ptr %18165, i32 0, i32 0
  %18167 = load double, ptr %18166, align 8, !tbaa !11
  %18168 = fmul double %18161, %18167
  %18169 = call double @llvm.fmuladd.f64(double %18153, double %18159, double %18168)
  %18170 = getelementptr inbounds %struct.doublecomplex, ptr %42, i32 0, i32 1
  store double %18169, ptr %18170, align 8, !tbaa !14
  %18171 = getelementptr inbounds %struct.doublecomplex, ptr %37, i32 0, i32 0
  %18172 = load double, ptr %18171, align 8, !tbaa !11
  %18173 = getelementptr inbounds %struct.doublecomplex, ptr %42, i32 0, i32 0
  %18174 = load double, ptr %18173, align 8, !tbaa !11
  %18175 = fadd double %18172, %18174
  %18176 = getelementptr inbounds %struct.doublecomplex, ptr %36, i32 0, i32 0
  store double %18175, ptr %18176, align 8, !tbaa !11
  %18177 = getelementptr inbounds %struct.doublecomplex, ptr %37, i32 0, i32 1
  %18178 = load double, ptr %18177, align 8, !tbaa !14
  %18179 = getelementptr inbounds %struct.doublecomplex, ptr %42, i32 0, i32 1
  %18180 = load double, ptr %18179, align 8, !tbaa !14
  %18181 = fadd double %18178, %18180
  %18182 = getelementptr inbounds %struct.doublecomplex, ptr %36, i32 0, i32 1
  store double %18181, ptr %18182, align 8, !tbaa !14
  %18183 = load i32, ptr %49, align 4, !tbaa !9
  %18184 = load i32, ptr %17, align 4, !tbaa !9
  %18185 = mul nsw i32 %18184, 5
  %18186 = add nsw i32 %18183, %18185
  store i32 %18186, ptr %24, align 4, !tbaa !9
  %18187 = getelementptr inbounds %struct.doublecomplex, ptr %63, i32 0, i32 0
  %18188 = load double, ptr %18187, align 8, !tbaa !11
  %18189 = load ptr, ptr %14, align 8, !tbaa !5
  %18190 = load i32, ptr %24, align 4, !tbaa !9
  %18191 = sext i32 %18190 to i64
  %18192 = getelementptr inbounds %struct.doublecomplex, ptr %18189, i64 %18191
  %18193 = getelementptr inbounds %struct.doublecomplex, ptr %18192, i32 0, i32 0
  %18194 = load double, ptr %18193, align 8, !tbaa !11
  %18195 = getelementptr inbounds %struct.doublecomplex, ptr %63, i32 0, i32 1
  %18196 = load double, ptr %18195, align 8, !tbaa !14
  %18197 = load ptr, ptr %14, align 8, !tbaa !5
  %18198 = load i32, ptr %24, align 4, !tbaa !9
  %18199 = sext i32 %18198 to i64
  %18200 = getelementptr inbounds %struct.doublecomplex, ptr %18197, i64 %18199
  %18201 = getelementptr inbounds %struct.doublecomplex, ptr %18200, i32 0, i32 1
  %18202 = load double, ptr %18201, align 8, !tbaa !14
  %18203 = fmul double %18196, %18202
  %18204 = fneg double %18203
  %18205 = call double @llvm.fmuladd.f64(double %18188, double %18194, double %18204)
  %18206 = getelementptr inbounds %struct.doublecomplex, ptr %43, i32 0, i32 0
  store double %18205, ptr %18206, align 8, !tbaa !11
  %18207 = getelementptr inbounds %struct.doublecomplex, ptr %63, i32 0, i32 0
  %18208 = load double, ptr %18207, align 8, !tbaa !11
  %18209 = load ptr, ptr %14, align 8, !tbaa !5
  %18210 = load i32, ptr %24, align 4, !tbaa !9
  %18211 = sext i32 %18210 to i64
  %18212 = getelementptr inbounds %struct.doublecomplex, ptr %18209, i64 %18211
  %18213 = getelementptr inbounds %struct.doublecomplex, ptr %18212, i32 0, i32 1
  %18214 = load double, ptr %18213, align 8, !tbaa !14
  %18215 = getelementptr inbounds %struct.doublecomplex, ptr %63, i32 0, i32 1
  %18216 = load double, ptr %18215, align 8, !tbaa !14
  %18217 = load ptr, ptr %14, align 8, !tbaa !5
  %18218 = load i32, ptr %24, align 4, !tbaa !9
  %18219 = sext i32 %18218 to i64
  %18220 = getelementptr inbounds %struct.doublecomplex, ptr %18217, i64 %18219
  %18221 = getelementptr inbounds %struct.doublecomplex, ptr %18220, i32 0, i32 0
  %18222 = load double, ptr %18221, align 8, !tbaa !11
  %18223 = fmul double %18216, %18222
  %18224 = call double @llvm.fmuladd.f64(double %18208, double %18214, double %18223)
  %18225 = getelementptr inbounds %struct.doublecomplex, ptr %43, i32 0, i32 1
  store double %18224, ptr %18225, align 8, !tbaa !14
  %18226 = getelementptr inbounds %struct.doublecomplex, ptr %36, i32 0, i32 0
  %18227 = load double, ptr %18226, align 8, !tbaa !11
  %18228 = getelementptr inbounds %struct.doublecomplex, ptr %43, i32 0, i32 0
  %18229 = load double, ptr %18228, align 8, !tbaa !11
  %18230 = fadd double %18227, %18229
  %18231 = getelementptr inbounds %struct.doublecomplex, ptr %35, i32 0, i32 0
  store double %18230, ptr %18231, align 8, !tbaa !11
  %18232 = getelementptr inbounds %struct.doublecomplex, ptr %36, i32 0, i32 1
  %18233 = load double, ptr %18232, align 8, !tbaa !14
  %18234 = getelementptr inbounds %struct.doublecomplex, ptr %43, i32 0, i32 1
  %18235 = load double, ptr %18234, align 8, !tbaa !14
  %18236 = fadd double %18233, %18235
  %18237 = getelementptr inbounds %struct.doublecomplex, ptr %35, i32 0, i32 1
  store double %18236, ptr %18237, align 8, !tbaa !14
  %18238 = load i32, ptr %49, align 4, !tbaa !9
  %18239 = load i32, ptr %17, align 4, !tbaa !9
  %18240 = mul nsw i32 %18239, 6
  %18241 = add nsw i32 %18238, %18240
  store i32 %18241, ptr %25, align 4, !tbaa !9
  %18242 = getelementptr inbounds %struct.doublecomplex, ptr %64, i32 0, i32 0
  %18243 = load double, ptr %18242, align 8, !tbaa !11
  %18244 = load ptr, ptr %14, align 8, !tbaa !5
  %18245 = load i32, ptr %25, align 4, !tbaa !9
  %18246 = sext i32 %18245 to i64
  %18247 = getelementptr inbounds %struct.doublecomplex, ptr %18244, i64 %18246
  %18248 = getelementptr inbounds %struct.doublecomplex, ptr %18247, i32 0, i32 0
  %18249 = load double, ptr %18248, align 8, !tbaa !11
  %18250 = getelementptr inbounds %struct.doublecomplex, ptr %64, i32 0, i32 1
  %18251 = load double, ptr %18250, align 8, !tbaa !14
  %18252 = load ptr, ptr %14, align 8, !tbaa !5
  %18253 = load i32, ptr %25, align 4, !tbaa !9
  %18254 = sext i32 %18253 to i64
  %18255 = getelementptr inbounds %struct.doublecomplex, ptr %18252, i64 %18254
  %18256 = getelementptr inbounds %struct.doublecomplex, ptr %18255, i32 0, i32 1
  %18257 = load double, ptr %18256, align 8, !tbaa !14
  %18258 = fmul double %18251, %18257
  %18259 = fneg double %18258
  %18260 = call double @llvm.fmuladd.f64(double %18243, double %18249, double %18259)
  %18261 = getelementptr inbounds %struct.doublecomplex, ptr %44, i32 0, i32 0
  store double %18260, ptr %18261, align 8, !tbaa !11
  %18262 = getelementptr inbounds %struct.doublecomplex, ptr %64, i32 0, i32 0
  %18263 = load double, ptr %18262, align 8, !tbaa !11
  %18264 = load ptr, ptr %14, align 8, !tbaa !5
  %18265 = load i32, ptr %25, align 4, !tbaa !9
  %18266 = sext i32 %18265 to i64
  %18267 = getelementptr inbounds %struct.doublecomplex, ptr %18264, i64 %18266
  %18268 = getelementptr inbounds %struct.doublecomplex, ptr %18267, i32 0, i32 1
  %18269 = load double, ptr %18268, align 8, !tbaa !14
  %18270 = getelementptr inbounds %struct.doublecomplex, ptr %64, i32 0, i32 1
  %18271 = load double, ptr %18270, align 8, !tbaa !14
  %18272 = load ptr, ptr %14, align 8, !tbaa !5
  %18273 = load i32, ptr %25, align 4, !tbaa !9
  %18274 = sext i32 %18273 to i64
  %18275 = getelementptr inbounds %struct.doublecomplex, ptr %18272, i64 %18274
  %18276 = getelementptr inbounds %struct.doublecomplex, ptr %18275, i32 0, i32 0
  %18277 = load double, ptr %18276, align 8, !tbaa !11
  %18278 = fmul double %18271, %18277
  %18279 = call double @llvm.fmuladd.f64(double %18263, double %18269, double %18278)
  %18280 = getelementptr inbounds %struct.doublecomplex, ptr %44, i32 0, i32 1
  store double %18279, ptr %18280, align 8, !tbaa !14
  %18281 = getelementptr inbounds %struct.doublecomplex, ptr %35, i32 0, i32 0
  %18282 = load double, ptr %18281, align 8, !tbaa !11
  %18283 = getelementptr inbounds %struct.doublecomplex, ptr %44, i32 0, i32 0
  %18284 = load double, ptr %18283, align 8, !tbaa !11
  %18285 = fadd double %18282, %18284
  %18286 = getelementptr inbounds %struct.doublecomplex, ptr %34, i32 0, i32 0
  store double %18285, ptr %18286, align 8, !tbaa !11
  %18287 = getelementptr inbounds %struct.doublecomplex, ptr %35, i32 0, i32 1
  %18288 = load double, ptr %18287, align 8, !tbaa !14
  %18289 = getelementptr inbounds %struct.doublecomplex, ptr %44, i32 0, i32 1
  %18290 = load double, ptr %18289, align 8, !tbaa !14
  %18291 = fadd double %18288, %18290
  %18292 = getelementptr inbounds %struct.doublecomplex, ptr %34, i32 0, i32 1
  store double %18291, ptr %18292, align 8, !tbaa !14
  %18293 = load i32, ptr %49, align 4, !tbaa !9
  %18294 = load i32, ptr %17, align 4, !tbaa !9
  %18295 = mul nsw i32 %18294, 7
  %18296 = add nsw i32 %18293, %18295
  store i32 %18296, ptr %26, align 4, !tbaa !9
  %18297 = getelementptr inbounds %struct.doublecomplex, ptr %65, i32 0, i32 0
  %18298 = load double, ptr %18297, align 8, !tbaa !11
  %18299 = load ptr, ptr %14, align 8, !tbaa !5
  %18300 = load i32, ptr %26, align 4, !tbaa !9
  %18301 = sext i32 %18300 to i64
  %18302 = getelementptr inbounds %struct.doublecomplex, ptr %18299, i64 %18301
  %18303 = getelementptr inbounds %struct.doublecomplex, ptr %18302, i32 0, i32 0
  %18304 = load double, ptr %18303, align 8, !tbaa !11
  %18305 = getelementptr inbounds %struct.doublecomplex, ptr %65, i32 0, i32 1
  %18306 = load double, ptr %18305, align 8, !tbaa !14
  %18307 = load ptr, ptr %14, align 8, !tbaa !5
  %18308 = load i32, ptr %26, align 4, !tbaa !9
  %18309 = sext i32 %18308 to i64
  %18310 = getelementptr inbounds %struct.doublecomplex, ptr %18307, i64 %18309
  %18311 = getelementptr inbounds %struct.doublecomplex, ptr %18310, i32 0, i32 1
  %18312 = load double, ptr %18311, align 8, !tbaa !14
  %18313 = fmul double %18306, %18312
  %18314 = fneg double %18313
  %18315 = call double @llvm.fmuladd.f64(double %18298, double %18304, double %18314)
  %18316 = getelementptr inbounds %struct.doublecomplex, ptr %45, i32 0, i32 0
  store double %18315, ptr %18316, align 8, !tbaa !11
  %18317 = getelementptr inbounds %struct.doublecomplex, ptr %65, i32 0, i32 0
  %18318 = load double, ptr %18317, align 8, !tbaa !11
  %18319 = load ptr, ptr %14, align 8, !tbaa !5
  %18320 = load i32, ptr %26, align 4, !tbaa !9
  %18321 = sext i32 %18320 to i64
  %18322 = getelementptr inbounds %struct.doublecomplex, ptr %18319, i64 %18321
  %18323 = getelementptr inbounds %struct.doublecomplex, ptr %18322, i32 0, i32 1
  %18324 = load double, ptr %18323, align 8, !tbaa !14
  %18325 = getelementptr inbounds %struct.doublecomplex, ptr %65, i32 0, i32 1
  %18326 = load double, ptr %18325, align 8, !tbaa !14
  %18327 = load ptr, ptr %14, align 8, !tbaa !5
  %18328 = load i32, ptr %26, align 4, !tbaa !9
  %18329 = sext i32 %18328 to i64
  %18330 = getelementptr inbounds %struct.doublecomplex, ptr %18327, i64 %18329
  %18331 = getelementptr inbounds %struct.doublecomplex, ptr %18330, i32 0, i32 0
  %18332 = load double, ptr %18331, align 8, !tbaa !11
  %18333 = fmul double %18326, %18332
  %18334 = call double @llvm.fmuladd.f64(double %18318, double %18324, double %18333)
  %18335 = getelementptr inbounds %struct.doublecomplex, ptr %45, i32 0, i32 1
  store double %18334, ptr %18335, align 8, !tbaa !14
  %18336 = getelementptr inbounds %struct.doublecomplex, ptr %34, i32 0, i32 0
  %18337 = load double, ptr %18336, align 8, !tbaa !11
  %18338 = getelementptr inbounds %struct.doublecomplex, ptr %45, i32 0, i32 0
  %18339 = load double, ptr %18338, align 8, !tbaa !11
  %18340 = fadd double %18337, %18339
  %18341 = getelementptr inbounds %struct.doublecomplex, ptr %33, i32 0, i32 0
  store double %18340, ptr %18341, align 8, !tbaa !11
  %18342 = getelementptr inbounds %struct.doublecomplex, ptr %34, i32 0, i32 1
  %18343 = load double, ptr %18342, align 8, !tbaa !14
  %18344 = getelementptr inbounds %struct.doublecomplex, ptr %45, i32 0, i32 1
  %18345 = load double, ptr %18344, align 8, !tbaa !14
  %18346 = fadd double %18343, %18345
  %18347 = getelementptr inbounds %struct.doublecomplex, ptr %33, i32 0, i32 1
  store double %18346, ptr %18347, align 8, !tbaa !14
  %18348 = load i32, ptr %49, align 4, !tbaa !9
  %18349 = load i32, ptr %17, align 4, !tbaa !9
  %18350 = shl i32 %18349, 3
  %18351 = add nsw i32 %18348, %18350
  store i32 %18351, ptr %27, align 4, !tbaa !9
  %18352 = getelementptr inbounds %struct.doublecomplex, ptr %66, i32 0, i32 0
  %18353 = load double, ptr %18352, align 8, !tbaa !11
  %18354 = load ptr, ptr %14, align 8, !tbaa !5
  %18355 = load i32, ptr %27, align 4, !tbaa !9
  %18356 = sext i32 %18355 to i64
  %18357 = getelementptr inbounds %struct.doublecomplex, ptr %18354, i64 %18356
  %18358 = getelementptr inbounds %struct.doublecomplex, ptr %18357, i32 0, i32 0
  %18359 = load double, ptr %18358, align 8, !tbaa !11
  %18360 = getelementptr inbounds %struct.doublecomplex, ptr %66, i32 0, i32 1
  %18361 = load double, ptr %18360, align 8, !tbaa !14
  %18362 = load ptr, ptr %14, align 8, !tbaa !5
  %18363 = load i32, ptr %27, align 4, !tbaa !9
  %18364 = sext i32 %18363 to i64
  %18365 = getelementptr inbounds %struct.doublecomplex, ptr %18362, i64 %18364
  %18366 = getelementptr inbounds %struct.doublecomplex, ptr %18365, i32 0, i32 1
  %18367 = load double, ptr %18366, align 8, !tbaa !14
  %18368 = fmul double %18361, %18367
  %18369 = fneg double %18368
  %18370 = call double @llvm.fmuladd.f64(double %18353, double %18359, double %18369)
  %18371 = getelementptr inbounds %struct.doublecomplex, ptr %46, i32 0, i32 0
  store double %18370, ptr %18371, align 8, !tbaa !11
  %18372 = getelementptr inbounds %struct.doublecomplex, ptr %66, i32 0, i32 0
  %18373 = load double, ptr %18372, align 8, !tbaa !11
  %18374 = load ptr, ptr %14, align 8, !tbaa !5
  %18375 = load i32, ptr %27, align 4, !tbaa !9
  %18376 = sext i32 %18375 to i64
  %18377 = getelementptr inbounds %struct.doublecomplex, ptr %18374, i64 %18376
  %18378 = getelementptr inbounds %struct.doublecomplex, ptr %18377, i32 0, i32 1
  %18379 = load double, ptr %18378, align 8, !tbaa !14
  %18380 = getelementptr inbounds %struct.doublecomplex, ptr %66, i32 0, i32 1
  %18381 = load double, ptr %18380, align 8, !tbaa !14
  %18382 = load ptr, ptr %14, align 8, !tbaa !5
  %18383 = load i32, ptr %27, align 4, !tbaa !9
  %18384 = sext i32 %18383 to i64
  %18385 = getelementptr inbounds %struct.doublecomplex, ptr %18382, i64 %18384
  %18386 = getelementptr inbounds %struct.doublecomplex, ptr %18385, i32 0, i32 0
  %18387 = load double, ptr %18386, align 8, !tbaa !11
  %18388 = fmul double %18381, %18387
  %18389 = call double @llvm.fmuladd.f64(double %18373, double %18379, double %18388)
  %18390 = getelementptr inbounds %struct.doublecomplex, ptr %46, i32 0, i32 1
  store double %18389, ptr %18390, align 8, !tbaa !14
  %18391 = getelementptr inbounds %struct.doublecomplex, ptr %33, i32 0, i32 0
  %18392 = load double, ptr %18391, align 8, !tbaa !11
  %18393 = getelementptr inbounds %struct.doublecomplex, ptr %46, i32 0, i32 0
  %18394 = load double, ptr %18393, align 8, !tbaa !11
  %18395 = fadd double %18392, %18394
  %18396 = getelementptr inbounds %struct.doublecomplex, ptr %32, i32 0, i32 0
  store double %18395, ptr %18396, align 8, !tbaa !11
  %18397 = getelementptr inbounds %struct.doublecomplex, ptr %33, i32 0, i32 1
  %18398 = load double, ptr %18397, align 8, !tbaa !14
  %18399 = getelementptr inbounds %struct.doublecomplex, ptr %46, i32 0, i32 1
  %18400 = load double, ptr %18399, align 8, !tbaa !14
  %18401 = fadd double %18398, %18400
  %18402 = getelementptr inbounds %struct.doublecomplex, ptr %32, i32 0, i32 1
  store double %18401, ptr %18402, align 8, !tbaa !14
  %18403 = load i32, ptr %49, align 4, !tbaa !9
  %18404 = load i32, ptr %17, align 4, !tbaa !9
  %18405 = mul nsw i32 %18404, 9
  %18406 = add nsw i32 %18403, %18405
  store i32 %18406, ptr %28, align 4, !tbaa !9
  %18407 = getelementptr inbounds %struct.doublecomplex, ptr %67, i32 0, i32 0
  %18408 = load double, ptr %18407, align 8, !tbaa !11
  %18409 = load ptr, ptr %14, align 8, !tbaa !5
  %18410 = load i32, ptr %28, align 4, !tbaa !9
  %18411 = sext i32 %18410 to i64
  %18412 = getelementptr inbounds %struct.doublecomplex, ptr %18409, i64 %18411
  %18413 = getelementptr inbounds %struct.doublecomplex, ptr %18412, i32 0, i32 0
  %18414 = load double, ptr %18413, align 8, !tbaa !11
  %18415 = getelementptr inbounds %struct.doublecomplex, ptr %67, i32 0, i32 1
  %18416 = load double, ptr %18415, align 8, !tbaa !14
  %18417 = load ptr, ptr %14, align 8, !tbaa !5
  %18418 = load i32, ptr %28, align 4, !tbaa !9
  %18419 = sext i32 %18418 to i64
  %18420 = getelementptr inbounds %struct.doublecomplex, ptr %18417, i64 %18419
  %18421 = getelementptr inbounds %struct.doublecomplex, ptr %18420, i32 0, i32 1
  %18422 = load double, ptr %18421, align 8, !tbaa !14
  %18423 = fmul double %18416, %18422
  %18424 = fneg double %18423
  %18425 = call double @llvm.fmuladd.f64(double %18408, double %18414, double %18424)
  %18426 = getelementptr inbounds %struct.doublecomplex, ptr %47, i32 0, i32 0
  store double %18425, ptr %18426, align 8, !tbaa !11
  %18427 = getelementptr inbounds %struct.doublecomplex, ptr %67, i32 0, i32 0
  %18428 = load double, ptr %18427, align 8, !tbaa !11
  %18429 = load ptr, ptr %14, align 8, !tbaa !5
  %18430 = load i32, ptr %28, align 4, !tbaa !9
  %18431 = sext i32 %18430 to i64
  %18432 = getelementptr inbounds %struct.doublecomplex, ptr %18429, i64 %18431
  %18433 = getelementptr inbounds %struct.doublecomplex, ptr %18432, i32 0, i32 1
  %18434 = load double, ptr %18433, align 8, !tbaa !14
  %18435 = getelementptr inbounds %struct.doublecomplex, ptr %67, i32 0, i32 1
  %18436 = load double, ptr %18435, align 8, !tbaa !14
  %18437 = load ptr, ptr %14, align 8, !tbaa !5
  %18438 = load i32, ptr %28, align 4, !tbaa !9
  %18439 = sext i32 %18438 to i64
  %18440 = getelementptr inbounds %struct.doublecomplex, ptr %18437, i64 %18439
  %18441 = getelementptr inbounds %struct.doublecomplex, ptr %18440, i32 0, i32 0
  %18442 = load double, ptr %18441, align 8, !tbaa !11
  %18443 = fmul double %18436, %18442
  %18444 = call double @llvm.fmuladd.f64(double %18428, double %18434, double %18443)
  %18445 = getelementptr inbounds %struct.doublecomplex, ptr %47, i32 0, i32 1
  store double %18444, ptr %18445, align 8, !tbaa !14
  %18446 = getelementptr inbounds %struct.doublecomplex, ptr %32, i32 0, i32 0
  %18447 = load double, ptr %18446, align 8, !tbaa !11
  %18448 = getelementptr inbounds %struct.doublecomplex, ptr %47, i32 0, i32 0
  %18449 = load double, ptr %18448, align 8, !tbaa !11
  %18450 = fadd double %18447, %18449
  %18451 = getelementptr inbounds %struct.doublecomplex, ptr %31, i32 0, i32 0
  store double %18450, ptr %18451, align 8, !tbaa !11
  %18452 = getelementptr inbounds %struct.doublecomplex, ptr %32, i32 0, i32 1
  %18453 = load double, ptr %18452, align 8, !tbaa !14
  %18454 = getelementptr inbounds %struct.doublecomplex, ptr %47, i32 0, i32 1
  %18455 = load double, ptr %18454, align 8, !tbaa !14
  %18456 = fadd double %18453, %18455
  %18457 = getelementptr inbounds %struct.doublecomplex, ptr %31, i32 0, i32 1
  store double %18456, ptr %18457, align 8, !tbaa !14
  %18458 = load i32, ptr %49, align 4, !tbaa !9
  %18459 = load i32, ptr %17, align 4, !tbaa !9
  %18460 = mul nsw i32 %18459, 10
  %18461 = add nsw i32 %18458, %18460
  store i32 %18461, ptr %29, align 4, !tbaa !9
  %18462 = getelementptr inbounds %struct.doublecomplex, ptr %69, i32 0, i32 0
  %18463 = load double, ptr %18462, align 8, !tbaa !11
  %18464 = load ptr, ptr %14, align 8, !tbaa !5
  %18465 = load i32, ptr %29, align 4, !tbaa !9
  %18466 = sext i32 %18465 to i64
  %18467 = getelementptr inbounds %struct.doublecomplex, ptr %18464, i64 %18466
  %18468 = getelementptr inbounds %struct.doublecomplex, ptr %18467, i32 0, i32 0
  %18469 = load double, ptr %18468, align 8, !tbaa !11
  %18470 = getelementptr inbounds %struct.doublecomplex, ptr %69, i32 0, i32 1
  %18471 = load double, ptr %18470, align 8, !tbaa !14
  %18472 = load ptr, ptr %14, align 8, !tbaa !5
  %18473 = load i32, ptr %29, align 4, !tbaa !9
  %18474 = sext i32 %18473 to i64
  %18475 = getelementptr inbounds %struct.doublecomplex, ptr %18472, i64 %18474
  %18476 = getelementptr inbounds %struct.doublecomplex, ptr %18475, i32 0, i32 1
  %18477 = load double, ptr %18476, align 8, !tbaa !14
  %18478 = fmul double %18471, %18477
  %18479 = fneg double %18478
  %18480 = call double @llvm.fmuladd.f64(double %18463, double %18469, double %18479)
  %18481 = getelementptr inbounds %struct.doublecomplex, ptr %48, i32 0, i32 0
  store double %18480, ptr %18481, align 8, !tbaa !11
  %18482 = getelementptr inbounds %struct.doublecomplex, ptr %69, i32 0, i32 0
  %18483 = load double, ptr %18482, align 8, !tbaa !11
  %18484 = load ptr, ptr %14, align 8, !tbaa !5
  %18485 = load i32, ptr %29, align 4, !tbaa !9
  %18486 = sext i32 %18485 to i64
  %18487 = getelementptr inbounds %struct.doublecomplex, ptr %18484, i64 %18486
  %18488 = getelementptr inbounds %struct.doublecomplex, ptr %18487, i32 0, i32 1
  %18489 = load double, ptr %18488, align 8, !tbaa !14
  %18490 = getelementptr inbounds %struct.doublecomplex, ptr %69, i32 0, i32 1
  %18491 = load double, ptr %18490, align 8, !tbaa !14
  %18492 = load ptr, ptr %14, align 8, !tbaa !5
  %18493 = load i32, ptr %29, align 4, !tbaa !9
  %18494 = sext i32 %18493 to i64
  %18495 = getelementptr inbounds %struct.doublecomplex, ptr %18492, i64 %18494
  %18496 = getelementptr inbounds %struct.doublecomplex, ptr %18495, i32 0, i32 0
  %18497 = load double, ptr %18496, align 8, !tbaa !11
  %18498 = fmul double %18491, %18497
  %18499 = call double @llvm.fmuladd.f64(double %18483, double %18489, double %18498)
  %18500 = getelementptr inbounds %struct.doublecomplex, ptr %48, i32 0, i32 1
  store double %18499, ptr %18500, align 8, !tbaa !14
  %18501 = getelementptr inbounds %struct.doublecomplex, ptr %31, i32 0, i32 0
  %18502 = load double, ptr %18501, align 8, !tbaa !11
  %18503 = getelementptr inbounds %struct.doublecomplex, ptr %48, i32 0, i32 0
  %18504 = load double, ptr %18503, align 8, !tbaa !11
  %18505 = fadd double %18502, %18504
  %18506 = getelementptr inbounds %struct.doublecomplex, ptr %30, i32 0, i32 0
  store double %18505, ptr %18506, align 8, !tbaa !11
  %18507 = getelementptr inbounds %struct.doublecomplex, ptr %31, i32 0, i32 1
  %18508 = load double, ptr %18507, align 8, !tbaa !14
  %18509 = getelementptr inbounds %struct.doublecomplex, ptr %48, i32 0, i32 1
  %18510 = load double, ptr %18509, align 8, !tbaa !14
  %18511 = fadd double %18508, %18510
  %18512 = getelementptr inbounds %struct.doublecomplex, ptr %30, i32 0, i32 1
  store double %18511, ptr %18512, align 8, !tbaa !14
  %18513 = getelementptr inbounds %struct.doublecomplex, ptr %30, i32 0, i32 0
  %18514 = load double, ptr %18513, align 8, !tbaa !11
  %18515 = getelementptr inbounds %struct.doublecomplex, ptr %70, i32 0, i32 0
  store double %18514, ptr %18515, align 8, !tbaa !11
  %18516 = getelementptr inbounds %struct.doublecomplex, ptr %30, i32 0, i32 1
  %18517 = load double, ptr %18516, align 8, !tbaa !14
  %18518 = getelementptr inbounds %struct.doublecomplex, ptr %70, i32 0, i32 1
  store double %18517, ptr %18518, align 8, !tbaa !14
  %18519 = load i32, ptr %49, align 4, !tbaa !9
  %18520 = load i32, ptr %17, align 4, !tbaa !9
  %18521 = add nsw i32 %18519, %18520
  store i32 %18521, ptr %20, align 4, !tbaa !9
  %18522 = load i32, ptr %49, align 4, !tbaa !9
  %18523 = load i32, ptr %17, align 4, !tbaa !9
  %18524 = add nsw i32 %18522, %18523
  store i32 %18524, ptr %21, align 4, !tbaa !9
  %18525 = getelementptr inbounds %struct.doublecomplex, ptr %70, i32 0, i32 0
  %18526 = load double, ptr %18525, align 8, !tbaa !11
  %18527 = getelementptr inbounds %struct.doublecomplex, ptr %50, i32 0, i32 0
  %18528 = load double, ptr %18527, align 8, !tbaa !11
  %18529 = getelementptr inbounds %struct.doublecomplex, ptr %70, i32 0, i32 1
  %18530 = load double, ptr %18529, align 8, !tbaa !14
  %18531 = getelementptr inbounds %struct.doublecomplex, ptr %50, i32 0, i32 1
  %18532 = load double, ptr %18531, align 8, !tbaa !14
  %18533 = fmul double %18530, %18532
  %18534 = fneg double %18533
  %18535 = call double @llvm.fmuladd.f64(double %18526, double %18528, double %18534)
  %18536 = getelementptr inbounds %struct.doublecomplex, ptr %31, i32 0, i32 0
  store double %18535, ptr %18536, align 8, !tbaa !11
  %18537 = getelementptr inbounds %struct.doublecomplex, ptr %70, i32 0, i32 0
  %18538 = load double, ptr %18537, align 8, !tbaa !11
  %18539 = getelementptr inbounds %struct.doublecomplex, ptr %50, i32 0, i32 1
  %18540 = load double, ptr %18539, align 8, !tbaa !14
  %18541 = getelementptr inbounds %struct.doublecomplex, ptr %70, i32 0, i32 1
  %18542 = load double, ptr %18541, align 8, !tbaa !14
  %18543 = getelementptr inbounds %struct.doublecomplex, ptr %50, i32 0, i32 0
  %18544 = load double, ptr %18543, align 8, !tbaa !11
  %18545 = fmul double %18542, %18544
  %18546 = call double @llvm.fmuladd.f64(double %18538, double %18540, double %18545)
  %18547 = getelementptr inbounds %struct.doublecomplex, ptr %31, i32 0, i32 1
  store double %18546, ptr %18547, align 8, !tbaa !14
  %18548 = load ptr, ptr %14, align 8, !tbaa !5
  %18549 = load i32, ptr %21, align 4, !tbaa !9
  %18550 = sext i32 %18549 to i64
  %18551 = getelementptr inbounds %struct.doublecomplex, ptr %18548, i64 %18550
  %18552 = getelementptr inbounds %struct.doublecomplex, ptr %18551, i32 0, i32 0
  %18553 = load double, ptr %18552, align 8, !tbaa !11
  %18554 = getelementptr inbounds %struct.doublecomplex, ptr %31, i32 0, i32 0
  %18555 = load double, ptr %18554, align 8, !tbaa !11
  %18556 = fsub double %18553, %18555
  %18557 = getelementptr inbounds %struct.doublecomplex, ptr %30, i32 0, i32 0
  store double %18556, ptr %18557, align 8, !tbaa !11
  %18558 = load ptr, ptr %14, align 8, !tbaa !5
  %18559 = load i32, ptr %21, align 4, !tbaa !9
  %18560 = sext i32 %18559 to i64
  %18561 = getelementptr inbounds %struct.doublecomplex, ptr %18558, i64 %18560
  %18562 = getelementptr inbounds %struct.doublecomplex, ptr %18561, i32 0, i32 1
  %18563 = load double, ptr %18562, align 8, !tbaa !14
  %18564 = getelementptr inbounds %struct.doublecomplex, ptr %31, i32 0, i32 1
  %18565 = load double, ptr %18564, align 8, !tbaa !14
  %18566 = fsub double %18563, %18565
  %18567 = getelementptr inbounds %struct.doublecomplex, ptr %30, i32 0, i32 1
  store double %18566, ptr %18567, align 8, !tbaa !14
  %18568 = getelementptr inbounds %struct.doublecomplex, ptr %30, i32 0, i32 0
  %18569 = load double, ptr %18568, align 8, !tbaa !11
  %18570 = load ptr, ptr %14, align 8, !tbaa !5
  %18571 = load i32, ptr %20, align 4, !tbaa !9
  %18572 = sext i32 %18571 to i64
  %18573 = getelementptr inbounds %struct.doublecomplex, ptr %18570, i64 %18572
  %18574 = getelementptr inbounds %struct.doublecomplex, ptr %18573, i32 0, i32 0
  store double %18569, ptr %18574, align 8, !tbaa !11
  %18575 = getelementptr inbounds %struct.doublecomplex, ptr %30, i32 0, i32 1
  %18576 = load double, ptr %18575, align 8, !tbaa !14
  %18577 = load ptr, ptr %14, align 8, !tbaa !5
  %18578 = load i32, ptr %20, align 4, !tbaa !9
  %18579 = sext i32 %18578 to i64
  %18580 = getelementptr inbounds %struct.doublecomplex, ptr %18577, i64 %18579
  %18581 = getelementptr inbounds %struct.doublecomplex, ptr %18580, i32 0, i32 1
  store double %18576, ptr %18581, align 8, !tbaa !14
  %18582 = load i32, ptr %49, align 4, !tbaa !9
  %18583 = load i32, ptr %17, align 4, !tbaa !9
  %18584 = shl i32 %18583, 1
  %18585 = add nsw i32 %18582, %18584
  store i32 %18585, ptr %20, align 4, !tbaa !9
  %18586 = load i32, ptr %49, align 4, !tbaa !9
  %18587 = load i32, ptr %17, align 4, !tbaa !9
  %18588 = shl i32 %18587, 1
  %18589 = add nsw i32 %18586, %18588
  store i32 %18589, ptr %21, align 4, !tbaa !9
  %18590 = getelementptr inbounds %struct.doublecomplex, ptr %70, i32 0, i32 0
  %18591 = load double, ptr %18590, align 8, !tbaa !11
  %18592 = getelementptr inbounds %struct.doublecomplex, ptr %51, i32 0, i32 0
  %18593 = load double, ptr %18592, align 8, !tbaa !11
  %18594 = getelementptr inbounds %struct.doublecomplex, ptr %70, i32 0, i32 1
  %18595 = load double, ptr %18594, align 8, !tbaa !14
  %18596 = getelementptr inbounds %struct.doublecomplex, ptr %51, i32 0, i32 1
  %18597 = load double, ptr %18596, align 8, !tbaa !14
  %18598 = fmul double %18595, %18597
  %18599 = fneg double %18598
  %18600 = call double @llvm.fmuladd.f64(double %18591, double %18593, double %18599)
  %18601 = getelementptr inbounds %struct.doublecomplex, ptr %31, i32 0, i32 0
  store double %18600, ptr %18601, align 8, !tbaa !11
  %18602 = getelementptr inbounds %struct.doublecomplex, ptr %70, i32 0, i32 0
  %18603 = load double, ptr %18602, align 8, !tbaa !11
  %18604 = getelementptr inbounds %struct.doublecomplex, ptr %51, i32 0, i32 1
  %18605 = load double, ptr %18604, align 8, !tbaa !14
  %18606 = getelementptr inbounds %struct.doublecomplex, ptr %70, i32 0, i32 1
  %18607 = load double, ptr %18606, align 8, !tbaa !14
  %18608 = getelementptr inbounds %struct.doublecomplex, ptr %51, i32 0, i32 0
  %18609 = load double, ptr %18608, align 8, !tbaa !11
  %18610 = fmul double %18607, %18609
  %18611 = call double @llvm.fmuladd.f64(double %18603, double %18605, double %18610)
  %18612 = getelementptr inbounds %struct.doublecomplex, ptr %31, i32 0, i32 1
  store double %18611, ptr %18612, align 8, !tbaa !14
  %18613 = load ptr, ptr %14, align 8, !tbaa !5
  %18614 = load i32, ptr %21, align 4, !tbaa !9
  %18615 = sext i32 %18614 to i64
  %18616 = getelementptr inbounds %struct.doublecomplex, ptr %18613, i64 %18615
  %18617 = getelementptr inbounds %struct.doublecomplex, ptr %18616, i32 0, i32 0
  %18618 = load double, ptr %18617, align 8, !tbaa !11
  %18619 = getelementptr inbounds %struct.doublecomplex, ptr %31, i32 0, i32 0
  %18620 = load double, ptr %18619, align 8, !tbaa !11
  %18621 = fsub double %18618, %18620
  %18622 = getelementptr inbounds %struct.doublecomplex, ptr %30, i32 0, i32 0
  store double %18621, ptr %18622, align 8, !tbaa !11
  %18623 = load ptr, ptr %14, align 8, !tbaa !5
  %18624 = load i32, ptr %21, align 4, !tbaa !9
  %18625 = sext i32 %18624 to i64
  %18626 = getelementptr inbounds %struct.doublecomplex, ptr %18623, i64 %18625
  %18627 = getelementptr inbounds %struct.doublecomplex, ptr %18626, i32 0, i32 1
  %18628 = load double, ptr %18627, align 8, !tbaa !14
  %18629 = getelementptr inbounds %struct.doublecomplex, ptr %31, i32 0, i32 1
  %18630 = load double, ptr %18629, align 8, !tbaa !14
  %18631 = fsub double %18628, %18630
  %18632 = getelementptr inbounds %struct.doublecomplex, ptr %30, i32 0, i32 1
  store double %18631, ptr %18632, align 8, !tbaa !14
  %18633 = getelementptr inbounds %struct.doublecomplex, ptr %30, i32 0, i32 0
  %18634 = load double, ptr %18633, align 8, !tbaa !11
  %18635 = load ptr, ptr %14, align 8, !tbaa !5
  %18636 = load i32, ptr %20, align 4, !tbaa !9
  %18637 = sext i32 %18636 to i64
  %18638 = getelementptr inbounds %struct.doublecomplex, ptr %18635, i64 %18637
  %18639 = getelementptr inbounds %struct.doublecomplex, ptr %18638, i32 0, i32 0
  store double %18634, ptr %18639, align 8, !tbaa !11
  %18640 = getelementptr inbounds %struct.doublecomplex, ptr %30, i32 0, i32 1
  %18641 = load double, ptr %18640, align 8, !tbaa !14
  %18642 = load ptr, ptr %14, align 8, !tbaa !5
  %18643 = load i32, ptr %20, align 4, !tbaa !9
  %18644 = sext i32 %18643 to i64
  %18645 = getelementptr inbounds %struct.doublecomplex, ptr %18642, i64 %18644
  %18646 = getelementptr inbounds %struct.doublecomplex, ptr %18645, i32 0, i32 1
  store double %18641, ptr %18646, align 8, !tbaa !14
  %18647 = load i32, ptr %49, align 4, !tbaa !9
  %18648 = load i32, ptr %17, align 4, !tbaa !9
  %18649 = mul nsw i32 %18648, 3
  %18650 = add nsw i32 %18647, %18649
  store i32 %18650, ptr %20, align 4, !tbaa !9
  %18651 = load i32, ptr %49, align 4, !tbaa !9
  %18652 = load i32, ptr %17, align 4, !tbaa !9
  %18653 = mul nsw i32 %18652, 3
  %18654 = add nsw i32 %18651, %18653
  store i32 %18654, ptr %21, align 4, !tbaa !9
  %18655 = getelementptr inbounds %struct.doublecomplex, ptr %70, i32 0, i32 0
  %18656 = load double, ptr %18655, align 8, !tbaa !11
  %18657 = getelementptr inbounds %struct.doublecomplex, ptr %52, i32 0, i32 0
  %18658 = load double, ptr %18657, align 8, !tbaa !11
  %18659 = getelementptr inbounds %struct.doublecomplex, ptr %70, i32 0, i32 1
  %18660 = load double, ptr %18659, align 8, !tbaa !14
  %18661 = getelementptr inbounds %struct.doublecomplex, ptr %52, i32 0, i32 1
  %18662 = load double, ptr %18661, align 8, !tbaa !14
  %18663 = fmul double %18660, %18662
  %18664 = fneg double %18663
  %18665 = call double @llvm.fmuladd.f64(double %18656, double %18658, double %18664)
  %18666 = getelementptr inbounds %struct.doublecomplex, ptr %31, i32 0, i32 0
  store double %18665, ptr %18666, align 8, !tbaa !11
  %18667 = getelementptr inbounds %struct.doublecomplex, ptr %70, i32 0, i32 0
  %18668 = load double, ptr %18667, align 8, !tbaa !11
  %18669 = getelementptr inbounds %struct.doublecomplex, ptr %52, i32 0, i32 1
  %18670 = load double, ptr %18669, align 8, !tbaa !14
  %18671 = getelementptr inbounds %struct.doublecomplex, ptr %70, i32 0, i32 1
  %18672 = load double, ptr %18671, align 8, !tbaa !14
  %18673 = getelementptr inbounds %struct.doublecomplex, ptr %52, i32 0, i32 0
  %18674 = load double, ptr %18673, align 8, !tbaa !11
  %18675 = fmul double %18672, %18674
  %18676 = call double @llvm.fmuladd.f64(double %18668, double %18670, double %18675)
  %18677 = getelementptr inbounds %struct.doublecomplex, ptr %31, i32 0, i32 1
  store double %18676, ptr %18677, align 8, !tbaa !14
  %18678 = load ptr, ptr %14, align 8, !tbaa !5
  %18679 = load i32, ptr %21, align 4, !tbaa !9
  %18680 = sext i32 %18679 to i64
  %18681 = getelementptr inbounds %struct.doublecomplex, ptr %18678, i64 %18680
  %18682 = getelementptr inbounds %struct.doublecomplex, ptr %18681, i32 0, i32 0
  %18683 = load double, ptr %18682, align 8, !tbaa !11
  %18684 = getelementptr inbounds %struct.doublecomplex, ptr %31, i32 0, i32 0
  %18685 = load double, ptr %18684, align 8, !tbaa !11
  %18686 = fsub double %18683, %18685
  %18687 = getelementptr inbounds %struct.doublecomplex, ptr %30, i32 0, i32 0
  store double %18686, ptr %18687, align 8, !tbaa !11
  %18688 = load ptr, ptr %14, align 8, !tbaa !5
  %18689 = load i32, ptr %21, align 4, !tbaa !9
  %18690 = sext i32 %18689 to i64
  %18691 = getelementptr inbounds %struct.doublecomplex, ptr %18688, i64 %18690
  %18692 = getelementptr inbounds %struct.doublecomplex, ptr %18691, i32 0, i32 1
  %18693 = load double, ptr %18692, align 8, !tbaa !14
  %18694 = getelementptr inbounds %struct.doublecomplex, ptr %31, i32 0, i32 1
  %18695 = load double, ptr %18694, align 8, !tbaa !14
  %18696 = fsub double %18693, %18695
  %18697 = getelementptr inbounds %struct.doublecomplex, ptr %30, i32 0, i32 1
  store double %18696, ptr %18697, align 8, !tbaa !14
  %18698 = getelementptr inbounds %struct.doublecomplex, ptr %30, i32 0, i32 0
  %18699 = load double, ptr %18698, align 8, !tbaa !11
  %18700 = load ptr, ptr %14, align 8, !tbaa !5
  %18701 = load i32, ptr %20, align 4, !tbaa !9
  %18702 = sext i32 %18701 to i64
  %18703 = getelementptr inbounds %struct.doublecomplex, ptr %18700, i64 %18702
  %18704 = getelementptr inbounds %struct.doublecomplex, ptr %18703, i32 0, i32 0
  store double %18699, ptr %18704, align 8, !tbaa !11
  %18705 = getelementptr inbounds %struct.doublecomplex, ptr %30, i32 0, i32 1
  %18706 = load double, ptr %18705, align 8, !tbaa !14
  %18707 = load ptr, ptr %14, align 8, !tbaa !5
  %18708 = load i32, ptr %20, align 4, !tbaa !9
  %18709 = sext i32 %18708 to i64
  %18710 = getelementptr inbounds %struct.doublecomplex, ptr %18707, i64 %18709
  %18711 = getelementptr inbounds %struct.doublecomplex, ptr %18710, i32 0, i32 1
  store double %18706, ptr %18711, align 8, !tbaa !14
  %18712 = load i32, ptr %49, align 4, !tbaa !9
  %18713 = load i32, ptr %17, align 4, !tbaa !9
  %18714 = shl i32 %18713, 2
  %18715 = add nsw i32 %18712, %18714
  store i32 %18715, ptr %20, align 4, !tbaa !9
  %18716 = load i32, ptr %49, align 4, !tbaa !9
  %18717 = load i32, ptr %17, align 4, !tbaa !9
  %18718 = shl i32 %18717, 2
  %18719 = add nsw i32 %18716, %18718
  store i32 %18719, ptr %21, align 4, !tbaa !9
  %18720 = getelementptr inbounds %struct.doublecomplex, ptr %70, i32 0, i32 0
  %18721 = load double, ptr %18720, align 8, !tbaa !11
  %18722 = getelementptr inbounds %struct.doublecomplex, ptr %53, i32 0, i32 0
  %18723 = load double, ptr %18722, align 8, !tbaa !11
  %18724 = getelementptr inbounds %struct.doublecomplex, ptr %70, i32 0, i32 1
  %18725 = load double, ptr %18724, align 8, !tbaa !14
  %18726 = getelementptr inbounds %struct.doublecomplex, ptr %53, i32 0, i32 1
  %18727 = load double, ptr %18726, align 8, !tbaa !14
  %18728 = fmul double %18725, %18727
  %18729 = fneg double %18728
  %18730 = call double @llvm.fmuladd.f64(double %18721, double %18723, double %18729)
  %18731 = getelementptr inbounds %struct.doublecomplex, ptr %31, i32 0, i32 0
  store double %18730, ptr %18731, align 8, !tbaa !11
  %18732 = getelementptr inbounds %struct.doublecomplex, ptr %70, i32 0, i32 0
  %18733 = load double, ptr %18732, align 8, !tbaa !11
  %18734 = getelementptr inbounds %struct.doublecomplex, ptr %53, i32 0, i32 1
  %18735 = load double, ptr %18734, align 8, !tbaa !14
  %18736 = getelementptr inbounds %struct.doublecomplex, ptr %70, i32 0, i32 1
  %18737 = load double, ptr %18736, align 8, !tbaa !14
  %18738 = getelementptr inbounds %struct.doublecomplex, ptr %53, i32 0, i32 0
  %18739 = load double, ptr %18738, align 8, !tbaa !11
  %18740 = fmul double %18737, %18739
  %18741 = call double @llvm.fmuladd.f64(double %18733, double %18735, double %18740)
  %18742 = getelementptr inbounds %struct.doublecomplex, ptr %31, i32 0, i32 1
  store double %18741, ptr %18742, align 8, !tbaa !14
  %18743 = load ptr, ptr %14, align 8, !tbaa !5
  %18744 = load i32, ptr %21, align 4, !tbaa !9
  %18745 = sext i32 %18744 to i64
  %18746 = getelementptr inbounds %struct.doublecomplex, ptr %18743, i64 %18745
  %18747 = getelementptr inbounds %struct.doublecomplex, ptr %18746, i32 0, i32 0
  %18748 = load double, ptr %18747, align 8, !tbaa !11
  %18749 = getelementptr inbounds %struct.doublecomplex, ptr %31, i32 0, i32 0
  %18750 = load double, ptr %18749, align 8, !tbaa !11
  %18751 = fsub double %18748, %18750
  %18752 = getelementptr inbounds %struct.doublecomplex, ptr %30, i32 0, i32 0
  store double %18751, ptr %18752, align 8, !tbaa !11
  %18753 = load ptr, ptr %14, align 8, !tbaa !5
  %18754 = load i32, ptr %21, align 4, !tbaa !9
  %18755 = sext i32 %18754 to i64
  %18756 = getelementptr inbounds %struct.doublecomplex, ptr %18753, i64 %18755
  %18757 = getelementptr inbounds %struct.doublecomplex, ptr %18756, i32 0, i32 1
  %18758 = load double, ptr %18757, align 8, !tbaa !14
  %18759 = getelementptr inbounds %struct.doublecomplex, ptr %31, i32 0, i32 1
  %18760 = load double, ptr %18759, align 8, !tbaa !14
  %18761 = fsub double %18758, %18760
  %18762 = getelementptr inbounds %struct.doublecomplex, ptr %30, i32 0, i32 1
  store double %18761, ptr %18762, align 8, !tbaa !14
  %18763 = getelementptr inbounds %struct.doublecomplex, ptr %30, i32 0, i32 0
  %18764 = load double, ptr %18763, align 8, !tbaa !11
  %18765 = load ptr, ptr %14, align 8, !tbaa !5
  %18766 = load i32, ptr %20, align 4, !tbaa !9
  %18767 = sext i32 %18766 to i64
  %18768 = getelementptr inbounds %struct.doublecomplex, ptr %18765, i64 %18767
  %18769 = getelementptr inbounds %struct.doublecomplex, ptr %18768, i32 0, i32 0
  store double %18764, ptr %18769, align 8, !tbaa !11
  %18770 = getelementptr inbounds %struct.doublecomplex, ptr %30, i32 0, i32 1
  %18771 = load double, ptr %18770, align 8, !tbaa !14
  %18772 = load ptr, ptr %14, align 8, !tbaa !5
  %18773 = load i32, ptr %20, align 4, !tbaa !9
  %18774 = sext i32 %18773 to i64
  %18775 = getelementptr inbounds %struct.doublecomplex, ptr %18772, i64 %18774
  %18776 = getelementptr inbounds %struct.doublecomplex, ptr %18775, i32 0, i32 1
  store double %18771, ptr %18776, align 8, !tbaa !14
  %18777 = load i32, ptr %49, align 4, !tbaa !9
  %18778 = load i32, ptr %17, align 4, !tbaa !9
  %18779 = mul nsw i32 %18778, 5
  %18780 = add nsw i32 %18777, %18779
  store i32 %18780, ptr %20, align 4, !tbaa !9
  %18781 = load i32, ptr %49, align 4, !tbaa !9
  %18782 = load i32, ptr %17, align 4, !tbaa !9
  %18783 = mul nsw i32 %18782, 5
  %18784 = add nsw i32 %18781, %18783
  store i32 %18784, ptr %21, align 4, !tbaa !9
  %18785 = getelementptr inbounds %struct.doublecomplex, ptr %70, i32 0, i32 0
  %18786 = load double, ptr %18785, align 8, !tbaa !11
  %18787 = getelementptr inbounds %struct.doublecomplex, ptr %54, i32 0, i32 0
  %18788 = load double, ptr %18787, align 8, !tbaa !11
  %18789 = getelementptr inbounds %struct.doublecomplex, ptr %70, i32 0, i32 1
  %18790 = load double, ptr %18789, align 8, !tbaa !14
  %18791 = getelementptr inbounds %struct.doublecomplex, ptr %54, i32 0, i32 1
  %18792 = load double, ptr %18791, align 8, !tbaa !14
  %18793 = fmul double %18790, %18792
  %18794 = fneg double %18793
  %18795 = call double @llvm.fmuladd.f64(double %18786, double %18788, double %18794)
  %18796 = getelementptr inbounds %struct.doublecomplex, ptr %31, i32 0, i32 0
  store double %18795, ptr %18796, align 8, !tbaa !11
  %18797 = getelementptr inbounds %struct.doublecomplex, ptr %70, i32 0, i32 0
  %18798 = load double, ptr %18797, align 8, !tbaa !11
  %18799 = getelementptr inbounds %struct.doublecomplex, ptr %54, i32 0, i32 1
  %18800 = load double, ptr %18799, align 8, !tbaa !14
  %18801 = getelementptr inbounds %struct.doublecomplex, ptr %70, i32 0, i32 1
  %18802 = load double, ptr %18801, align 8, !tbaa !14
  %18803 = getelementptr inbounds %struct.doublecomplex, ptr %54, i32 0, i32 0
  %18804 = load double, ptr %18803, align 8, !tbaa !11
  %18805 = fmul double %18802, %18804
  %18806 = call double @llvm.fmuladd.f64(double %18798, double %18800, double %18805)
  %18807 = getelementptr inbounds %struct.doublecomplex, ptr %31, i32 0, i32 1
  store double %18806, ptr %18807, align 8, !tbaa !14
  %18808 = load ptr, ptr %14, align 8, !tbaa !5
  %18809 = load i32, ptr %21, align 4, !tbaa !9
  %18810 = sext i32 %18809 to i64
  %18811 = getelementptr inbounds %struct.doublecomplex, ptr %18808, i64 %18810
  %18812 = getelementptr inbounds %struct.doublecomplex, ptr %18811, i32 0, i32 0
  %18813 = load double, ptr %18812, align 8, !tbaa !11
  %18814 = getelementptr inbounds %struct.doublecomplex, ptr %31, i32 0, i32 0
  %18815 = load double, ptr %18814, align 8, !tbaa !11
  %18816 = fsub double %18813, %18815
  %18817 = getelementptr inbounds %struct.doublecomplex, ptr %30, i32 0, i32 0
  store double %18816, ptr %18817, align 8, !tbaa !11
  %18818 = load ptr, ptr %14, align 8, !tbaa !5
  %18819 = load i32, ptr %21, align 4, !tbaa !9
  %18820 = sext i32 %18819 to i64
  %18821 = getelementptr inbounds %struct.doublecomplex, ptr %18818, i64 %18820
  %18822 = getelementptr inbounds %struct.doublecomplex, ptr %18821, i32 0, i32 1
  %18823 = load double, ptr %18822, align 8, !tbaa !14
  %18824 = getelementptr inbounds %struct.doublecomplex, ptr %31, i32 0, i32 1
  %18825 = load double, ptr %18824, align 8, !tbaa !14
  %18826 = fsub double %18823, %18825
  %18827 = getelementptr inbounds %struct.doublecomplex, ptr %30, i32 0, i32 1
  store double %18826, ptr %18827, align 8, !tbaa !14
  %18828 = getelementptr inbounds %struct.doublecomplex, ptr %30, i32 0, i32 0
  %18829 = load double, ptr %18828, align 8, !tbaa !11
  %18830 = load ptr, ptr %14, align 8, !tbaa !5
  %18831 = load i32, ptr %20, align 4, !tbaa !9
  %18832 = sext i32 %18831 to i64
  %18833 = getelementptr inbounds %struct.doublecomplex, ptr %18830, i64 %18832
  %18834 = getelementptr inbounds %struct.doublecomplex, ptr %18833, i32 0, i32 0
  store double %18829, ptr %18834, align 8, !tbaa !11
  %18835 = getelementptr inbounds %struct.doublecomplex, ptr %30, i32 0, i32 1
  %18836 = load double, ptr %18835, align 8, !tbaa !14
  %18837 = load ptr, ptr %14, align 8, !tbaa !5
  %18838 = load i32, ptr %20, align 4, !tbaa !9
  %18839 = sext i32 %18838 to i64
  %18840 = getelementptr inbounds %struct.doublecomplex, ptr %18837, i64 %18839
  %18841 = getelementptr inbounds %struct.doublecomplex, ptr %18840, i32 0, i32 1
  store double %18836, ptr %18841, align 8, !tbaa !14
  %18842 = load i32, ptr %49, align 4, !tbaa !9
  %18843 = load i32, ptr %17, align 4, !tbaa !9
  %18844 = mul nsw i32 %18843, 6
  %18845 = add nsw i32 %18842, %18844
  store i32 %18845, ptr %20, align 4, !tbaa !9
  %18846 = load i32, ptr %49, align 4, !tbaa !9
  %18847 = load i32, ptr %17, align 4, !tbaa !9
  %18848 = mul nsw i32 %18847, 6
  %18849 = add nsw i32 %18846, %18848
  store i32 %18849, ptr %21, align 4, !tbaa !9
  %18850 = getelementptr inbounds %struct.doublecomplex, ptr %70, i32 0, i32 0
  %18851 = load double, ptr %18850, align 8, !tbaa !11
  %18852 = getelementptr inbounds %struct.doublecomplex, ptr %55, i32 0, i32 0
  %18853 = load double, ptr %18852, align 8, !tbaa !11
  %18854 = getelementptr inbounds %struct.doublecomplex, ptr %70, i32 0, i32 1
  %18855 = load double, ptr %18854, align 8, !tbaa !14
  %18856 = getelementptr inbounds %struct.doublecomplex, ptr %55, i32 0, i32 1
  %18857 = load double, ptr %18856, align 8, !tbaa !14
  %18858 = fmul double %18855, %18857
  %18859 = fneg double %18858
  %18860 = call double @llvm.fmuladd.f64(double %18851, double %18853, double %18859)
  %18861 = getelementptr inbounds %struct.doublecomplex, ptr %31, i32 0, i32 0
  store double %18860, ptr %18861, align 8, !tbaa !11
  %18862 = getelementptr inbounds %struct.doublecomplex, ptr %70, i32 0, i32 0
  %18863 = load double, ptr %18862, align 8, !tbaa !11
  %18864 = getelementptr inbounds %struct.doublecomplex, ptr %55, i32 0, i32 1
  %18865 = load double, ptr %18864, align 8, !tbaa !14
  %18866 = getelementptr inbounds %struct.doublecomplex, ptr %70, i32 0, i32 1
  %18867 = load double, ptr %18866, align 8, !tbaa !14
  %18868 = getelementptr inbounds %struct.doublecomplex, ptr %55, i32 0, i32 0
  %18869 = load double, ptr %18868, align 8, !tbaa !11
  %18870 = fmul double %18867, %18869
  %18871 = call double @llvm.fmuladd.f64(double %18863, double %18865, double %18870)
  %18872 = getelementptr inbounds %struct.doublecomplex, ptr %31, i32 0, i32 1
  store double %18871, ptr %18872, align 8, !tbaa !14
  %18873 = load ptr, ptr %14, align 8, !tbaa !5
  %18874 = load i32, ptr %21, align 4, !tbaa !9
  %18875 = sext i32 %18874 to i64
  %18876 = getelementptr inbounds %struct.doublecomplex, ptr %18873, i64 %18875
  %18877 = getelementptr inbounds %struct.doublecomplex, ptr %18876, i32 0, i32 0
  %18878 = load double, ptr %18877, align 8, !tbaa !11
  %18879 = getelementptr inbounds %struct.doublecomplex, ptr %31, i32 0, i32 0
  %18880 = load double, ptr %18879, align 8, !tbaa !11
  %18881 = fsub double %18878, %18880
  %18882 = getelementptr inbounds %struct.doublecomplex, ptr %30, i32 0, i32 0
  store double %18881, ptr %18882, align 8, !tbaa !11
  %18883 = load ptr, ptr %14, align 8, !tbaa !5
  %18884 = load i32, ptr %21, align 4, !tbaa !9
  %18885 = sext i32 %18884 to i64
  %18886 = getelementptr inbounds %struct.doublecomplex, ptr %18883, i64 %18885
  %18887 = getelementptr inbounds %struct.doublecomplex, ptr %18886, i32 0, i32 1
  %18888 = load double, ptr %18887, align 8, !tbaa !14
  %18889 = getelementptr inbounds %struct.doublecomplex, ptr %31, i32 0, i32 1
  %18890 = load double, ptr %18889, align 8, !tbaa !14
  %18891 = fsub double %18888, %18890
  %18892 = getelementptr inbounds %struct.doublecomplex, ptr %30, i32 0, i32 1
  store double %18891, ptr %18892, align 8, !tbaa !14
  %18893 = getelementptr inbounds %struct.doublecomplex, ptr %30, i32 0, i32 0
  %18894 = load double, ptr %18893, align 8, !tbaa !11
  %18895 = load ptr, ptr %14, align 8, !tbaa !5
  %18896 = load i32, ptr %20, align 4, !tbaa !9
  %18897 = sext i32 %18896 to i64
  %18898 = getelementptr inbounds %struct.doublecomplex, ptr %18895, i64 %18897
  %18899 = getelementptr inbounds %struct.doublecomplex, ptr %18898, i32 0, i32 0
  store double %18894, ptr %18899, align 8, !tbaa !11
  %18900 = getelementptr inbounds %struct.doublecomplex, ptr %30, i32 0, i32 1
  %18901 = load double, ptr %18900, align 8, !tbaa !14
  %18902 = load ptr, ptr %14, align 8, !tbaa !5
  %18903 = load i32, ptr %20, align 4, !tbaa !9
  %18904 = sext i32 %18903 to i64
  %18905 = getelementptr inbounds %struct.doublecomplex, ptr %18902, i64 %18904
  %18906 = getelementptr inbounds %struct.doublecomplex, ptr %18905, i32 0, i32 1
  store double %18901, ptr %18906, align 8, !tbaa !14
  %18907 = load i32, ptr %49, align 4, !tbaa !9
  %18908 = load i32, ptr %17, align 4, !tbaa !9
  %18909 = mul nsw i32 %18908, 7
  %18910 = add nsw i32 %18907, %18909
  store i32 %18910, ptr %20, align 4, !tbaa !9
  %18911 = load i32, ptr %49, align 4, !tbaa !9
  %18912 = load i32, ptr %17, align 4, !tbaa !9
  %18913 = mul nsw i32 %18912, 7
  %18914 = add nsw i32 %18911, %18913
  store i32 %18914, ptr %21, align 4, !tbaa !9
  %18915 = getelementptr inbounds %struct.doublecomplex, ptr %70, i32 0, i32 0
  %18916 = load double, ptr %18915, align 8, !tbaa !11
  %18917 = getelementptr inbounds %struct.doublecomplex, ptr %56, i32 0, i32 0
  %18918 = load double, ptr %18917, align 8, !tbaa !11
  %18919 = getelementptr inbounds %struct.doublecomplex, ptr %70, i32 0, i32 1
  %18920 = load double, ptr %18919, align 8, !tbaa !14
  %18921 = getelementptr inbounds %struct.doublecomplex, ptr %56, i32 0, i32 1
  %18922 = load double, ptr %18921, align 8, !tbaa !14
  %18923 = fmul double %18920, %18922
  %18924 = fneg double %18923
  %18925 = call double @llvm.fmuladd.f64(double %18916, double %18918, double %18924)
  %18926 = getelementptr inbounds %struct.doublecomplex, ptr %31, i32 0, i32 0
  store double %18925, ptr %18926, align 8, !tbaa !11
  %18927 = getelementptr inbounds %struct.doublecomplex, ptr %70, i32 0, i32 0
  %18928 = load double, ptr %18927, align 8, !tbaa !11
  %18929 = getelementptr inbounds %struct.doublecomplex, ptr %56, i32 0, i32 1
  %18930 = load double, ptr %18929, align 8, !tbaa !14
  %18931 = getelementptr inbounds %struct.doublecomplex, ptr %70, i32 0, i32 1
  %18932 = load double, ptr %18931, align 8, !tbaa !14
  %18933 = getelementptr inbounds %struct.doublecomplex, ptr %56, i32 0, i32 0
  %18934 = load double, ptr %18933, align 8, !tbaa !11
  %18935 = fmul double %18932, %18934
  %18936 = call double @llvm.fmuladd.f64(double %18928, double %18930, double %18935)
  %18937 = getelementptr inbounds %struct.doublecomplex, ptr %31, i32 0, i32 1
  store double %18936, ptr %18937, align 8, !tbaa !14
  %18938 = load ptr, ptr %14, align 8, !tbaa !5
  %18939 = load i32, ptr %21, align 4, !tbaa !9
  %18940 = sext i32 %18939 to i64
  %18941 = getelementptr inbounds %struct.doublecomplex, ptr %18938, i64 %18940
  %18942 = getelementptr inbounds %struct.doublecomplex, ptr %18941, i32 0, i32 0
  %18943 = load double, ptr %18942, align 8, !tbaa !11
  %18944 = getelementptr inbounds %struct.doublecomplex, ptr %31, i32 0, i32 0
  %18945 = load double, ptr %18944, align 8, !tbaa !11
  %18946 = fsub double %18943, %18945
  %18947 = getelementptr inbounds %struct.doublecomplex, ptr %30, i32 0, i32 0
  store double %18946, ptr %18947, align 8, !tbaa !11
  %18948 = load ptr, ptr %14, align 8, !tbaa !5
  %18949 = load i32, ptr %21, align 4, !tbaa !9
  %18950 = sext i32 %18949 to i64
  %18951 = getelementptr inbounds %struct.doublecomplex, ptr %18948, i64 %18950
  %18952 = getelementptr inbounds %struct.doublecomplex, ptr %18951, i32 0, i32 1
  %18953 = load double, ptr %18952, align 8, !tbaa !14
  %18954 = getelementptr inbounds %struct.doublecomplex, ptr %31, i32 0, i32 1
  %18955 = load double, ptr %18954, align 8, !tbaa !14
  %18956 = fsub double %18953, %18955
  %18957 = getelementptr inbounds %struct.doublecomplex, ptr %30, i32 0, i32 1
  store double %18956, ptr %18957, align 8, !tbaa !14
  %18958 = getelementptr inbounds %struct.doublecomplex, ptr %30, i32 0, i32 0
  %18959 = load double, ptr %18958, align 8, !tbaa !11
  %18960 = load ptr, ptr %14, align 8, !tbaa !5
  %18961 = load i32, ptr %20, align 4, !tbaa !9
  %18962 = sext i32 %18961 to i64
  %18963 = getelementptr inbounds %struct.doublecomplex, ptr %18960, i64 %18962
  %18964 = getelementptr inbounds %struct.doublecomplex, ptr %18963, i32 0, i32 0
  store double %18959, ptr %18964, align 8, !tbaa !11
  %18965 = getelementptr inbounds %struct.doublecomplex, ptr %30, i32 0, i32 1
  %18966 = load double, ptr %18965, align 8, !tbaa !14
  %18967 = load ptr, ptr %14, align 8, !tbaa !5
  %18968 = load i32, ptr %20, align 4, !tbaa !9
  %18969 = sext i32 %18968 to i64
  %18970 = getelementptr inbounds %struct.doublecomplex, ptr %18967, i64 %18969
  %18971 = getelementptr inbounds %struct.doublecomplex, ptr %18970, i32 0, i32 1
  store double %18966, ptr %18971, align 8, !tbaa !14
  %18972 = load i32, ptr %49, align 4, !tbaa !9
  %18973 = load i32, ptr %17, align 4, !tbaa !9
  %18974 = shl i32 %18973, 3
  %18975 = add nsw i32 %18972, %18974
  store i32 %18975, ptr %20, align 4, !tbaa !9
  %18976 = load i32, ptr %49, align 4, !tbaa !9
  %18977 = load i32, ptr %17, align 4, !tbaa !9
  %18978 = shl i32 %18977, 3
  %18979 = add nsw i32 %18976, %18978
  store i32 %18979, ptr %21, align 4, !tbaa !9
  %18980 = getelementptr inbounds %struct.doublecomplex, ptr %70, i32 0, i32 0
  %18981 = load double, ptr %18980, align 8, !tbaa !11
  %18982 = getelementptr inbounds %struct.doublecomplex, ptr %57, i32 0, i32 0
  %18983 = load double, ptr %18982, align 8, !tbaa !11
  %18984 = getelementptr inbounds %struct.doublecomplex, ptr %70, i32 0, i32 1
  %18985 = load double, ptr %18984, align 8, !tbaa !14
  %18986 = getelementptr inbounds %struct.doublecomplex, ptr %57, i32 0, i32 1
  %18987 = load double, ptr %18986, align 8, !tbaa !14
  %18988 = fmul double %18985, %18987
  %18989 = fneg double %18988
  %18990 = call double @llvm.fmuladd.f64(double %18981, double %18983, double %18989)
  %18991 = getelementptr inbounds %struct.doublecomplex, ptr %31, i32 0, i32 0
  store double %18990, ptr %18991, align 8, !tbaa !11
  %18992 = getelementptr inbounds %struct.doublecomplex, ptr %70, i32 0, i32 0
  %18993 = load double, ptr %18992, align 8, !tbaa !11
  %18994 = getelementptr inbounds %struct.doublecomplex, ptr %57, i32 0, i32 1
  %18995 = load double, ptr %18994, align 8, !tbaa !14
  %18996 = getelementptr inbounds %struct.doublecomplex, ptr %70, i32 0, i32 1
  %18997 = load double, ptr %18996, align 8, !tbaa !14
  %18998 = getelementptr inbounds %struct.doublecomplex, ptr %57, i32 0, i32 0
  %18999 = load double, ptr %18998, align 8, !tbaa !11
  %19000 = fmul double %18997, %18999
  %19001 = call double @llvm.fmuladd.f64(double %18993, double %18995, double %19000)
  %19002 = getelementptr inbounds %struct.doublecomplex, ptr %31, i32 0, i32 1
  store double %19001, ptr %19002, align 8, !tbaa !14
  %19003 = load ptr, ptr %14, align 8, !tbaa !5
  %19004 = load i32, ptr %21, align 4, !tbaa !9
  %19005 = sext i32 %19004 to i64
  %19006 = getelementptr inbounds %struct.doublecomplex, ptr %19003, i64 %19005
  %19007 = getelementptr inbounds %struct.doublecomplex, ptr %19006, i32 0, i32 0
  %19008 = load double, ptr %19007, align 8, !tbaa !11
  %19009 = getelementptr inbounds %struct.doublecomplex, ptr %31, i32 0, i32 0
  %19010 = load double, ptr %19009, align 8, !tbaa !11
  %19011 = fsub double %19008, %19010
  %19012 = getelementptr inbounds %struct.doublecomplex, ptr %30, i32 0, i32 0
  store double %19011, ptr %19012, align 8, !tbaa !11
  %19013 = load ptr, ptr %14, align 8, !tbaa !5
  %19014 = load i32, ptr %21, align 4, !tbaa !9
  %19015 = sext i32 %19014 to i64
  %19016 = getelementptr inbounds %struct.doublecomplex, ptr %19013, i64 %19015
  %19017 = getelementptr inbounds %struct.doublecomplex, ptr %19016, i32 0, i32 1
  %19018 = load double, ptr %19017, align 8, !tbaa !14
  %19019 = getelementptr inbounds %struct.doublecomplex, ptr %31, i32 0, i32 1
  %19020 = load double, ptr %19019, align 8, !tbaa !14
  %19021 = fsub double %19018, %19020
  %19022 = getelementptr inbounds %struct.doublecomplex, ptr %30, i32 0, i32 1
  store double %19021, ptr %19022, align 8, !tbaa !14
  %19023 = getelementptr inbounds %struct.doublecomplex, ptr %30, i32 0, i32 0
  %19024 = load double, ptr %19023, align 8, !tbaa !11
  %19025 = load ptr, ptr %14, align 8, !tbaa !5
  %19026 = load i32, ptr %20, align 4, !tbaa !9
  %19027 = sext i32 %19026 to i64
  %19028 = getelementptr inbounds %struct.doublecomplex, ptr %19025, i64 %19027
  %19029 = getelementptr inbounds %struct.doublecomplex, ptr %19028, i32 0, i32 0
  store double %19024, ptr %19029, align 8, !tbaa !11
  %19030 = getelementptr inbounds %struct.doublecomplex, ptr %30, i32 0, i32 1
  %19031 = load double, ptr %19030, align 8, !tbaa !14
  %19032 = load ptr, ptr %14, align 8, !tbaa !5
  %19033 = load i32, ptr %20, align 4, !tbaa !9
  %19034 = sext i32 %19033 to i64
  %19035 = getelementptr inbounds %struct.doublecomplex, ptr %19032, i64 %19034
  %19036 = getelementptr inbounds %struct.doublecomplex, ptr %19035, i32 0, i32 1
  store double %19031, ptr %19036, align 8, !tbaa !14
  %19037 = load i32, ptr %49, align 4, !tbaa !9
  %19038 = load i32, ptr %17, align 4, !tbaa !9
  %19039 = mul nsw i32 %19038, 9
  %19040 = add nsw i32 %19037, %19039
  store i32 %19040, ptr %20, align 4, !tbaa !9
  %19041 = load i32, ptr %49, align 4, !tbaa !9
  %19042 = load i32, ptr %17, align 4, !tbaa !9
  %19043 = mul nsw i32 %19042, 9
  %19044 = add nsw i32 %19041, %19043
  store i32 %19044, ptr %21, align 4, !tbaa !9
  %19045 = getelementptr inbounds %struct.doublecomplex, ptr %70, i32 0, i32 0
  %19046 = load double, ptr %19045, align 8, !tbaa !11
  %19047 = getelementptr inbounds %struct.doublecomplex, ptr %58, i32 0, i32 0
  %19048 = load double, ptr %19047, align 8, !tbaa !11
  %19049 = getelementptr inbounds %struct.doublecomplex, ptr %70, i32 0, i32 1
  %19050 = load double, ptr %19049, align 8, !tbaa !14
  %19051 = getelementptr inbounds %struct.doublecomplex, ptr %58, i32 0, i32 1
  %19052 = load double, ptr %19051, align 8, !tbaa !14
  %19053 = fmul double %19050, %19052
  %19054 = fneg double %19053
  %19055 = call double @llvm.fmuladd.f64(double %19046, double %19048, double %19054)
  %19056 = getelementptr inbounds %struct.doublecomplex, ptr %31, i32 0, i32 0
  store double %19055, ptr %19056, align 8, !tbaa !11
  %19057 = getelementptr inbounds %struct.doublecomplex, ptr %70, i32 0, i32 0
  %19058 = load double, ptr %19057, align 8, !tbaa !11
  %19059 = getelementptr inbounds %struct.doublecomplex, ptr %58, i32 0, i32 1
  %19060 = load double, ptr %19059, align 8, !tbaa !14
  %19061 = getelementptr inbounds %struct.doublecomplex, ptr %70, i32 0, i32 1
  %19062 = load double, ptr %19061, align 8, !tbaa !14
  %19063 = getelementptr inbounds %struct.doublecomplex, ptr %58, i32 0, i32 0
  %19064 = load double, ptr %19063, align 8, !tbaa !11
  %19065 = fmul double %19062, %19064
  %19066 = call double @llvm.fmuladd.f64(double %19058, double %19060, double %19065)
  %19067 = getelementptr inbounds %struct.doublecomplex, ptr %31, i32 0, i32 1
  store double %19066, ptr %19067, align 8, !tbaa !14
  %19068 = load ptr, ptr %14, align 8, !tbaa !5
  %19069 = load i32, ptr %21, align 4, !tbaa !9
  %19070 = sext i32 %19069 to i64
  %19071 = getelementptr inbounds %struct.doublecomplex, ptr %19068, i64 %19070
  %19072 = getelementptr inbounds %struct.doublecomplex, ptr %19071, i32 0, i32 0
  %19073 = load double, ptr %19072, align 8, !tbaa !11
  %19074 = getelementptr inbounds %struct.doublecomplex, ptr %31, i32 0, i32 0
  %19075 = load double, ptr %19074, align 8, !tbaa !11
  %19076 = fsub double %19073, %19075
  %19077 = getelementptr inbounds %struct.doublecomplex, ptr %30, i32 0, i32 0
  store double %19076, ptr %19077, align 8, !tbaa !11
  %19078 = load ptr, ptr %14, align 8, !tbaa !5
  %19079 = load i32, ptr %21, align 4, !tbaa !9
  %19080 = sext i32 %19079 to i64
  %19081 = getelementptr inbounds %struct.doublecomplex, ptr %19078, i64 %19080
  %19082 = getelementptr inbounds %struct.doublecomplex, ptr %19081, i32 0, i32 1
  %19083 = load double, ptr %19082, align 8, !tbaa !14
  %19084 = getelementptr inbounds %struct.doublecomplex, ptr %31, i32 0, i32 1
  %19085 = load double, ptr %19084, align 8, !tbaa !14
  %19086 = fsub double %19083, %19085
  %19087 = getelementptr inbounds %struct.doublecomplex, ptr %30, i32 0, i32 1
  store double %19086, ptr %19087, align 8, !tbaa !14
  %19088 = getelementptr inbounds %struct.doublecomplex, ptr %30, i32 0, i32 0
  %19089 = load double, ptr %19088, align 8, !tbaa !11
  %19090 = load ptr, ptr %14, align 8, !tbaa !5
  %19091 = load i32, ptr %20, align 4, !tbaa !9
  %19092 = sext i32 %19091 to i64
  %19093 = getelementptr inbounds %struct.doublecomplex, ptr %19090, i64 %19092
  %19094 = getelementptr inbounds %struct.doublecomplex, ptr %19093, i32 0, i32 0
  store double %19089, ptr %19094, align 8, !tbaa !11
  %19095 = getelementptr inbounds %struct.doublecomplex, ptr %30, i32 0, i32 1
  %19096 = load double, ptr %19095, align 8, !tbaa !14
  %19097 = load ptr, ptr %14, align 8, !tbaa !5
  %19098 = load i32, ptr %20, align 4, !tbaa !9
  %19099 = sext i32 %19098 to i64
  %19100 = getelementptr inbounds %struct.doublecomplex, ptr %19097, i64 %19099
  %19101 = getelementptr inbounds %struct.doublecomplex, ptr %19100, i32 0, i32 1
  store double %19096, ptr %19101, align 8, !tbaa !14
  %19102 = load i32, ptr %49, align 4, !tbaa !9
  %19103 = load i32, ptr %17, align 4, !tbaa !9
  %19104 = mul nsw i32 %19103, 10
  %19105 = add nsw i32 %19102, %19104
  store i32 %19105, ptr %20, align 4, !tbaa !9
  %19106 = load i32, ptr %49, align 4, !tbaa !9
  %19107 = load i32, ptr %17, align 4, !tbaa !9
  %19108 = mul nsw i32 %19107, 10
  %19109 = add nsw i32 %19106, %19108
  store i32 %19109, ptr %21, align 4, !tbaa !9
  %19110 = getelementptr inbounds %struct.doublecomplex, ptr %70, i32 0, i32 0
  %19111 = load double, ptr %19110, align 8, !tbaa !11
  %19112 = getelementptr inbounds %struct.doublecomplex, ptr %68, i32 0, i32 0
  %19113 = load double, ptr %19112, align 8, !tbaa !11
  %19114 = getelementptr inbounds %struct.doublecomplex, ptr %70, i32 0, i32 1
  %19115 = load double, ptr %19114, align 8, !tbaa !14
  %19116 = getelementptr inbounds %struct.doublecomplex, ptr %68, i32 0, i32 1
  %19117 = load double, ptr %19116, align 8, !tbaa !14
  %19118 = fmul double %19115, %19117
  %19119 = fneg double %19118
  %19120 = call double @llvm.fmuladd.f64(double %19111, double %19113, double %19119)
  %19121 = getelementptr inbounds %struct.doublecomplex, ptr %31, i32 0, i32 0
  store double %19120, ptr %19121, align 8, !tbaa !11
  %19122 = getelementptr inbounds %struct.doublecomplex, ptr %70, i32 0, i32 0
  %19123 = load double, ptr %19122, align 8, !tbaa !11
  %19124 = getelementptr inbounds %struct.doublecomplex, ptr %68, i32 0, i32 1
  %19125 = load double, ptr %19124, align 8, !tbaa !14
  %19126 = getelementptr inbounds %struct.doublecomplex, ptr %70, i32 0, i32 1
  %19127 = load double, ptr %19126, align 8, !tbaa !14
  %19128 = getelementptr inbounds %struct.doublecomplex, ptr %68, i32 0, i32 0
  %19129 = load double, ptr %19128, align 8, !tbaa !11
  %19130 = fmul double %19127, %19129
  %19131 = call double @llvm.fmuladd.f64(double %19123, double %19125, double %19130)
  %19132 = getelementptr inbounds %struct.doublecomplex, ptr %31, i32 0, i32 1
  store double %19131, ptr %19132, align 8, !tbaa !14
  %19133 = load ptr, ptr %14, align 8, !tbaa !5
  %19134 = load i32, ptr %21, align 4, !tbaa !9
  %19135 = sext i32 %19134 to i64
  %19136 = getelementptr inbounds %struct.doublecomplex, ptr %19133, i64 %19135
  %19137 = getelementptr inbounds %struct.doublecomplex, ptr %19136, i32 0, i32 0
  %19138 = load double, ptr %19137, align 8, !tbaa !11
  %19139 = getelementptr inbounds %struct.doublecomplex, ptr %31, i32 0, i32 0
  %19140 = load double, ptr %19139, align 8, !tbaa !11
  %19141 = fsub double %19138, %19140
  %19142 = getelementptr inbounds %struct.doublecomplex, ptr %30, i32 0, i32 0
  store double %19141, ptr %19142, align 8, !tbaa !11
  %19143 = load ptr, ptr %14, align 8, !tbaa !5
  %19144 = load i32, ptr %21, align 4, !tbaa !9
  %19145 = sext i32 %19144 to i64
  %19146 = getelementptr inbounds %struct.doublecomplex, ptr %19143, i64 %19145
  %19147 = getelementptr inbounds %struct.doublecomplex, ptr %19146, i32 0, i32 1
  %19148 = load double, ptr %19147, align 8, !tbaa !14
  %19149 = getelementptr inbounds %struct.doublecomplex, ptr %31, i32 0, i32 1
  %19150 = load double, ptr %19149, align 8, !tbaa !14
  %19151 = fsub double %19148, %19150
  %19152 = getelementptr inbounds %struct.doublecomplex, ptr %30, i32 0, i32 1
  store double %19151, ptr %19152, align 8, !tbaa !14
  %19153 = getelementptr inbounds %struct.doublecomplex, ptr %30, i32 0, i32 0
  %19154 = load double, ptr %19153, align 8, !tbaa !11
  %19155 = load ptr, ptr %14, align 8, !tbaa !5
  %19156 = load i32, ptr %20, align 4, !tbaa !9
  %19157 = sext i32 %19156 to i64
  %19158 = getelementptr inbounds %struct.doublecomplex, ptr %19155, i64 %19157
  %19159 = getelementptr inbounds %struct.doublecomplex, ptr %19158, i32 0, i32 0
  store double %19154, ptr %19159, align 8, !tbaa !11
  %19160 = getelementptr inbounds %struct.doublecomplex, ptr %30, i32 0, i32 1
  %19161 = load double, ptr %19160, align 8, !tbaa !14
  %19162 = load ptr, ptr %14, align 8, !tbaa !5
  %19163 = load i32, ptr %20, align 4, !tbaa !9
  %19164 = sext i32 %19163 to i64
  %19165 = getelementptr inbounds %struct.doublecomplex, ptr %19162, i64 %19164
  %19166 = getelementptr inbounds %struct.doublecomplex, ptr %19165, i32 0, i32 1
  store double %19161, ptr %19166, align 8, !tbaa !14
  br label %19167

19167:                                            ; preds = %17975
  %19168 = load i32, ptr %49, align 4, !tbaa !9
  %19169 = add nsw i32 %19168, 1
  store i32 %19169, ptr %49, align 4, !tbaa !9
  br label %17971, !llvm.loop !35

19170:                                            ; preds = %17971
  br label %19171

19171:                                            ; preds = %19170, %17467, %15934, %14571, %13378, %12355, %11502, %10819, %10306, %9963, %9798, %9784, %8028, %6447, %5041, %3810, %2754, %1873, %1167, %636, %280, %113
  store i32 1, ptr %71, align 4
  br label %19172

19172:                                            ; preds = %19171, %95
  call void @llvm.lifetime.end.p0(i64 16, ptr %70) #5
  call void @llvm.lifetime.end.p0(i64 16, ptr %69) #5
  call void @llvm.lifetime.end.p0(i64 16, ptr %68) #5
  call void @llvm.lifetime.end.p0(i64 16, ptr %67) #5
  call void @llvm.lifetime.end.p0(i64 16, ptr %66) #5
  call void @llvm.lifetime.end.p0(i64 16, ptr %65) #5
  call void @llvm.lifetime.end.p0(i64 16, ptr %64) #5
  call void @llvm.lifetime.end.p0(i64 16, ptr %63) #5
  call void @llvm.lifetime.end.p0(i64 16, ptr %62) #5
  call void @llvm.lifetime.end.p0(i64 16, ptr %61) #5
  call void @llvm.lifetime.end.p0(i64 16, ptr %60) #5
  call void @llvm.lifetime.end.p0(i64 16, ptr %59) #5
  call void @llvm.lifetime.end.p0(i64 16, ptr %58) #5
  call void @llvm.lifetime.end.p0(i64 16, ptr %57) #5
  call void @llvm.lifetime.end.p0(i64 16, ptr %56) #5
  call void @llvm.lifetime.end.p0(i64 16, ptr %55) #5
  call void @llvm.lifetime.end.p0(i64 16, ptr %54) #5
  call void @llvm.lifetime.end.p0(i64 16, ptr %53) #5
  call void @llvm.lifetime.end.p0(i64 16, ptr %52) #5
  call void @llvm.lifetime.end.p0(i64 16, ptr %51) #5
  call void @llvm.lifetime.end.p0(i64 16, ptr %50) #5
  call void @llvm.lifetime.end.p0(i64 4, ptr %49) #5
  call void @llvm.lifetime.end.p0(i64 16, ptr %48) #5
  call void @llvm.lifetime.end.p0(i64 16, ptr %47) #5
  call void @llvm.lifetime.end.p0(i64 16, ptr %46) #5
  call void @llvm.lifetime.end.p0(i64 16, ptr %45) #5
  call void @llvm.lifetime.end.p0(i64 16, ptr %44) #5
  call void @llvm.lifetime.end.p0(i64 16, ptr %43) #5
  call void @llvm.lifetime.end.p0(i64 16, ptr %42) #5
  call void @llvm.lifetime.end.p0(i64 16, ptr %41) #5
  call void @llvm.lifetime.end.p0(i64 16, ptr %40) #5
  call void @llvm.lifetime.end.p0(i64 16, ptr %39) #5
  call void @llvm.lifetime.end.p0(i64 16, ptr %38) #5
  call void @llvm.lifetime.end.p0(i64 16, ptr %37) #5
  call void @llvm.lifetime.end.p0(i64 16, ptr %36) #5
  call void @llvm.lifetime.end.p0(i64 16, ptr %35) #5
  call void @llvm.lifetime.end.p0(i64 16, ptr %34) #5
  call void @llvm.lifetime.end.p0(i64 16, ptr %33) #5
  call void @llvm.lifetime.end.p0(i64 16, ptr %32) #5
  call void @llvm.lifetime.end.p0(i64 16, ptr %31) #5
  call void @llvm.lifetime.end.p0(i64 16, ptr %30) #5
  call void @llvm.lifetime.end.p0(i64 4, ptr %29) #5
  call void @llvm.lifetime.end.p0(i64 4, ptr %28) #5
  call void @llvm.lifetime.end.p0(i64 4, ptr %27) #5
  call void @llvm.lifetime.end.p0(i64 4, ptr %26) #5
  call void @llvm.lifetime.end.p0(i64 4, ptr %25) #5
  call void @llvm.lifetime.end.p0(i64 4, ptr %24) #5
  call void @llvm.lifetime.end.p0(i64 4, ptr %23) #5
  call void @llvm.lifetime.end.p0(i64 4, ptr %22) #5
  call void @llvm.lifetime.end.p0(i64 4, ptr %21) #5
  call void @llvm.lifetime.end.p0(i64 4, ptr %20) #5
  call void @llvm.lifetime.end.p0(i64 4, ptr %19) #5
  call void @llvm.lifetime.end.p0(i64 4, ptr %18) #5
  call void @llvm.lifetime.end.p0(i64 4, ptr %17) #5
  ret void
}

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

declare i32 @lsame_(ptr noundef, ptr noundef) #2

declare void @zlarf_(ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef) #2

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

; Function Attrs: inlinehint nounwind uwtable
declare hidden { double, double } @Cd(ptr noundef) #4

; Function Attrs: inlinehint nounwind uwtable
declare hidden ptr @_pCd(ptr noundef) #4

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

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


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

%struct.doublecomplex = type { double, double }

@.str = external hidden unnamed_addr constant [2 x i8], align 1
@c__1 = external hidden global i32, align 4

; Function Attrs: nounwind uwtable
define dso_local void @zlarfx_(ptr noundef %0, ptr noundef %1, ptr noundef %2, ptr noundef %3, ptr noundef %4, ptr noundef %5, ptr noundef %6, ptr noundef %7) local_unnamed_addr #0 {
  %9 = alloca %struct.doublecomplex, align 16
  %10 = alloca %struct.doublecomplex, align 16
  %11 = alloca %struct.doublecomplex, align 8
  %12 = alloca %struct.doublecomplex, align 16
  %13 = alloca %struct.doublecomplex, align 16
  %14 = alloca %struct.doublecomplex, align 16
  %15 = alloca %struct.doublecomplex, align 16
  %16 = alloca %struct.doublecomplex, align 16
  %17 = alloca %struct.doublecomplex, align 16
  %18 = alloca %struct.doublecomplex, align 16
  %19 = alloca %struct.doublecomplex, align 16
  %20 = alloca %struct.doublecomplex, align 16
  %21 = alloca %struct.doublecomplex, align 16
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %9) #6
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %10) #6
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %11) #6
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %12) #6
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %13) #6
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %14) #6
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %15) #6
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %16) #6
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %17) #6
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %18) #6
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %19) #6
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %20) #6
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %21) #6
  %22 = load i32, ptr %6, align 4, !tbaa !5
  %narrow = xor i32 %22, -1
  %23 = sext i32 %narrow to i64
  %24 = getelementptr inbounds %struct.doublecomplex, ptr %5, i64 %23
  %25 = load double, ptr %4, align 8, !tbaa !9
  %26 = fcmp oeq double %25, 0.000000e+00
  br i1 %26, label %27, label %31

27:                                               ; preds = %8
  %28 = getelementptr inbounds i8, ptr %4, i64 8
  %29 = load double, ptr %28, align 8, !tbaa !12
  %30 = fcmp oeq double %29, 0.000000e+00
  br i1 %30, label %.loopexit, label %31

31:                                               ; preds = %27, %8
  %32 = tail call i32 @lsame_(ptr noundef %0, ptr noundef nonnull @.str) #6
  %.not = icmp eq i32 %32, 0
  br i1 %.not, label %2482, label %33

33:                                               ; preds = %31
  %34 = load i32, ptr %1, align 4, !tbaa !5
  switch i32 %34, label %35 [
    i32 1, label %36
    i32 2, label %84
    i32 3, label %182
    i32 4, label %317
    i32 5, label %495
    i32 6, label %716
    i32 7, label %980
    i32 8, label %1287
    i32 9, label %1637
    i32 10, label %2030
  ]

35:                                               ; preds = %33
  tail call void @zlarf_(ptr noundef %0, ptr noundef nonnull %1, ptr noundef %2, ptr noundef %3, ptr noundef nonnull @c__1, ptr noundef nonnull %4, ptr noundef %5, ptr noundef nonnull %6, ptr noundef %7) #6
  br label %.loopexit

36:                                               ; preds = %33
  %37 = load double, ptr %4, align 8, !tbaa !9
  %38 = load double, ptr %3, align 8, !tbaa !9
  %39 = getelementptr inbounds i8, ptr %4, i64 8
  %40 = load double, ptr %39, align 8, !tbaa !12
  %41 = getelementptr inbounds i8, ptr %3, i64 8
  %42 = load double, ptr %41, align 8, !tbaa !12
  %43 = tail call { double, double } @Cd(ptr noundef nonnull %3)
  %44 = extractvalue { double, double } %43, 0
  %45 = extractvalue { double, double } %43, 1
  %46 = fneg double %45
  %47 = call ptr @_pCd(ptr noundef nonnull %11)
  %48 = getelementptr inbounds i8, ptr %47, i64 8
  store double %44, ptr %47, align 8
  store double %46, ptr %48, align 8
  %49 = load i32, ptr %2, align 4, !tbaa !5
  %.not43014430 = icmp slt i32 %49, 1
  br i1 %.not43014430, label %.loopexit, label %.lr.ph4432

.lr.ph4432:                                       ; preds = %36
  %50 = fneg double %40
  %51 = fmul double %42, %50
  %52 = tail call double @llvm.fmuladd.f64(double %37, double %38, double %51)
  %53 = getelementptr inbounds i8, ptr %11, i64 8
  %54 = load double, ptr %53, align 8, !tbaa !12
  %55 = fmul double %38, %40
  %56 = tail call double @llvm.fmuladd.f64(double %37, double %42, double %55)
  %57 = load double, ptr %11, align 8, !tbaa !9
  %58 = fmul double %56, %57
  %59 = call double @llvm.fmuladd.f64(double %52, double %54, double %58)
  %60 = fsub double 0.000000e+00, %59
  %61 = fneg double %56
  %62 = fmul double %54, %61
  %63 = call double @llvm.fmuladd.f64(double %52, double %57, double %62)
  %64 = fsub double 1.000000e+00, %63
  %65 = fneg double %60
  %66 = sext i32 %22 to i64
  %67 = insertelement <2 x double> poison, double %64, i64 0
  %68 = shufflevector <2 x double> %67, <2 x double> poison, <2 x i32> zeroinitializer
  %69 = insertelement <2 x double> poison, double %60, i64 0
  %70 = insertelement <2 x double> %69, double %65, i64 1
  %71 = zext nneg i32 %49 to i64
  %xtraiter = and i64 %71, 1
  %72 = icmp eq i32 %49, 1
  br i1 %72, label %.loopexit.loopexit6693.unr-lcssa, label %.lr.ph4432.new

.lr.ph4432.new:                                   ; preds = %.lr.ph4432
  %unroll_iter = and i64 %71, 2147483646
  %invariant.gep6703 = getelementptr i8, ptr %24, i64 16
  %invariant.gep6705 = getelementptr i8, ptr %24, i64 16
  br label %73

73:                                               ; preds = %73, %.lr.ph4432.new
  %indvars.iv4688 = phi i64 [ 1, %.lr.ph4432.new ], [ %indvars.iv.next4689.1, %73 ]
  %niter = phi i64 [ 0, %.lr.ph4432.new ], [ %niter.next.1, %73 ]
  %74 = mul nsw i64 %indvars.iv4688, %66
  %gep6704 = getelementptr %struct.doublecomplex, ptr %invariant.gep6703, i64 %74
  %75 = load <2 x double>, ptr %gep6704, align 8, !tbaa !13
  %76 = fmul <2 x double> %75, %70
  %77 = shufflevector <2 x double> %76, <2 x double> poison, <2 x i32> <i32 1, i32 0>
  %78 = call <2 x double> @llvm.fmuladd.v2f64(<2 x double> %68, <2 x double> %75, <2 x double> %77)
  store <2 x double> %78, ptr %gep6704, align 8, !tbaa !13
  %indvars.iv.next4689 = add nuw nsw i64 %indvars.iv4688, 1
  %79 = mul nsw i64 %indvars.iv.next4689, %66
  %gep6706 = getelementptr %struct.doublecomplex, ptr %invariant.gep6705, i64 %79
  %80 = load <2 x double>, ptr %gep6706, align 8, !tbaa !13
  %81 = fmul <2 x double> %80, %70
  %82 = shufflevector <2 x double> %81, <2 x double> poison, <2 x i32> <i32 1, i32 0>
  %83 = call <2 x double> @llvm.fmuladd.v2f64(<2 x double> %68, <2 x double> %80, <2 x double> %82)
  store <2 x double> %83, ptr %gep6706, align 8, !tbaa !13
  %indvars.iv.next4689.1 = add nuw nsw i64 %indvars.iv4688, 2
  %niter.next.1 = add i64 %niter, 2
  %niter.ncmp.1 = icmp eq i64 %niter.next.1, %unroll_iter
  br i1 %niter.ncmp.1, label %.loopexit.loopexit6693.unr-lcssa, label %73, !llvm.loop !14

84:                                               ; preds = %33
  %85 = tail call { double, double } @Cd(ptr noundef %3)
  %86 = extractvalue { double, double } %85, 0
  %87 = extractvalue { double, double } %85, 1
  %88 = fneg double %87
  %89 = call ptr @_pCd(ptr noundef nonnull %9)
  %90 = getelementptr inbounds i8, ptr %89, i64 8
  store double %86, ptr %89, align 8
  store double %88, ptr %90, align 8
  %91 = load <2 x double>, ptr %9, align 16, !tbaa !13
  store <2 x double> %91, ptr %12, align 16, !tbaa !13
  %92 = call { double, double } @Cd(ptr noundef nonnull %12)
  %93 = extractvalue { double, double } %92, 0
  %94 = extractvalue { double, double } %92, 1
  %95 = fneg double %94
  %96 = call ptr @_pCd(ptr noundef nonnull %10)
  %97 = getelementptr inbounds i8, ptr %96, i64 8
  store double %93, ptr %96, align 8
  store double %95, ptr %97, align 8
  %98 = load double, ptr %4, align 8, !tbaa !9
  %99 = getelementptr inbounds i8, ptr %4, i64 8
  %100 = load double, ptr %99, align 8, !tbaa !12
  %101 = fneg double %100
  %102 = load <2 x double>, ptr %10, align 16, !tbaa !13
  %103 = insertelement <2 x double> poison, double %100, i64 0
  %104 = insertelement <2 x double> %103, double %101, i64 1
  %105 = fmul <2 x double> %102, %104
  %106 = shufflevector <2 x double> %105, <2 x double> poison, <2 x i32> <i32 1, i32 0>
  %107 = insertelement <2 x double> poison, double %98, i64 0
  %108 = shufflevector <2 x double> %107, <2 x double> poison, <2 x i32> zeroinitializer
  %109 = call <2 x double> @llvm.fmuladd.v2f64(<2 x double> %108, <2 x double> %102, <2 x double> %106)
  store <2 x double> %109, ptr %9, align 16, !tbaa !13
  %110 = getelementptr inbounds i8, ptr %3, i64 16
  %111 = call { double, double } @Cd(ptr noundef nonnull %110)
  %112 = extractvalue { double, double } %111, 0
  %113 = extractvalue { double, double } %111, 1
  %114 = fneg double %113
  %115 = call ptr @_pCd(ptr noundef nonnull %9)
  %116 = getelementptr inbounds i8, ptr %115, i64 8
  store double %112, ptr %115, align 8
  store double %114, ptr %116, align 8
  %117 = load <2 x double>, ptr %9, align 16, !tbaa !13
  store <2 x double> %117, ptr %13, align 16, !tbaa !13
  %118 = call { double, double } @Cd(ptr noundef nonnull %13)
  %119 = extractvalue { double, double } %118, 0
  %120 = extractvalue { double, double } %118, 1
  %121 = fneg double %120
  %122 = call ptr @_pCd(ptr noundef nonnull %10)
  %123 = getelementptr inbounds i8, ptr %122, i64 8
  store double %119, ptr %122, align 8
  store double %121, ptr %123, align 8
  %124 = load double, ptr %4, align 8, !tbaa !9
  %125 = load double, ptr %99, align 8, !tbaa !12
  %126 = fneg double %125
  %127 = load <2 x double>, ptr %10, align 16, !tbaa !13
  %128 = insertelement <2 x double> poison, double %125, i64 0
  %129 = insertelement <2 x double> %128, double %126, i64 1
  %130 = fmul <2 x double> %127, %129
  %131 = shufflevector <2 x double> %130, <2 x double> poison, <2 x i32> <i32 1, i32 0>
  %132 = insertelement <2 x double> poison, double %124, i64 0
  %133 = shufflevector <2 x double> %132, <2 x double> poison, <2 x i32> zeroinitializer
  %134 = call <2 x double> @llvm.fmuladd.v2f64(<2 x double> %133, <2 x double> %127, <2 x double> %131)
  %135 = load i32, ptr %2, align 4, !tbaa !5
  %.not43004423 = icmp slt i32 %135, 1
  br i1 %.not43004423, label %.loopexit, label %.lr.ph4425

.lr.ph4425:                                       ; preds = %84
  %136 = getelementptr inbounds i8, ptr %13, i64 8
  %137 = getelementptr inbounds i8, ptr %12, i64 8
  %138 = load double, ptr %12, align 16, !tbaa !9
  %139 = load double, ptr %137, align 8, !tbaa !12
  %140 = load double, ptr %13, align 16, !tbaa !9
  %141 = load double, ptr %136, align 8, !tbaa !12
  %142 = insertelement <2 x double> poison, double %139, i64 0
  %143 = insertelement <2 x double> %142, double %141, i64 1
  %144 = fneg <2 x double> %143
  %145 = sext i32 %22 to i64
  %146 = add nuw i32 %135, 1
  %wide.trip.count4686 = zext i32 %146 to i64
  %147 = insertelement <2 x double> poison, double %138, i64 0
  %148 = insertelement <2 x double> %147, double %140, i64 1
  %149 = insertelement <2 x double> poison, double %140, i64 0
  %150 = insertelement <2 x double> %149, double %138, i64 1
  %151 = insertelement <2 x double> poison, double %141, i64 0
  %152 = insertelement <2 x double> %151, double %139, i64 1
  br label %153

153:                                              ; preds = %.lr.ph4425, %153
  %indvars.iv4683 = phi i64 [ 1, %.lr.ph4425 ], [ %indvars.iv.next4684, %153 ]
  %154 = mul nsw i64 %indvars.iv4683, %145
  %155 = getelementptr %struct.doublecomplex, ptr %24, i64 %154
  %156 = getelementptr i8, ptr %155, i64 16
  %157 = getelementptr i8, ptr %155, i64 32
  %158 = load <2 x double>, ptr %156, align 8, !tbaa !13
  %159 = load <2 x double>, ptr %157, align 8, !tbaa !13
  %160 = shufflevector <2 x double> %158, <2 x double> %159, <2 x i32> <i32 1, i32 3>
  %161 = fmul <2 x double> %160, %144
  %162 = shufflevector <2 x double> %158, <2 x double> %159, <2 x i32> <i32 0, i32 2>
  %163 = call <2 x double> @llvm.fmuladd.v2f64(<2 x double> %148, <2 x double> %162, <2 x double> %161)
  %164 = shufflevector <2 x double> %159, <2 x double> %158, <2 x i32> <i32 0, i32 2>
  %165 = fmul <2 x double> %164, %152
  %166 = shufflevector <2 x double> %159, <2 x double> %158, <2 x i32> <i32 1, i32 3>
  %167 = call <2 x double> @llvm.fmuladd.v2f64(<2 x double> %150, <2 x double> %166, <2 x double> %165)
  %shift = shufflevector <2 x double> %163, <2 x double> poison, <2 x i32> <i32 1, i32 poison>
  %168 = fadd <2 x double> %163, %shift
  %shift6649 = shufflevector <2 x double> %167, <2 x double> poison, <2 x i32> <i32 1, i32 poison>
  %169 = fadd <2 x double> %167, %shift6649
  %170 = extractelement <2 x double> %169, i64 0
  %171 = fneg double %170
  %172 = insertelement <2 x double> %169, double %171, i64 1
  %173 = fmul <2 x double> %109, %172
  %174 = shufflevector <2 x double> %173, <2 x double> poison, <2 x i32> <i32 1, i32 0>
  %175 = shufflevector <2 x double> %168, <2 x double> poison, <2 x i32> zeroinitializer
  %176 = call <2 x double> @llvm.fmuladd.v2f64(<2 x double> %175, <2 x double> %109, <2 x double> %174)
  %177 = fsub <2 x double> %158, %176
  store <2 x double> %177, ptr %156, align 8, !tbaa !13
  %178 = fmul <2 x double> %134, %172
  %179 = shufflevector <2 x double> %178, <2 x double> poison, <2 x i32> <i32 1, i32 0>
  %180 = call <2 x double> @llvm.fmuladd.v2f64(<2 x double> %175, <2 x double> %134, <2 x double> %179)
  %181 = fsub <2 x double> %159, %180
  store <2 x double> %181, ptr %157, align 8, !tbaa !13
  %indvars.iv.next4684 = add nuw nsw i64 %indvars.iv4683, 1
  %exitcond4687.not = icmp eq i64 %indvars.iv.next4684, %wide.trip.count4686
  br i1 %exitcond4687.not, label %.loopexit, label %153, !llvm.loop !16

182:                                              ; preds = %33
  %183 = tail call { double, double } @Cd(ptr noundef %3)
  %184 = extractvalue { double, double } %183, 0
  %185 = extractvalue { double, double } %183, 1
  %186 = fneg double %185
  %187 = call ptr @_pCd(ptr noundef nonnull %9)
  %188 = getelementptr inbounds i8, ptr %187, i64 8
  store double %184, ptr %187, align 8
  store double %186, ptr %188, align 8
  %189 = load <2 x double>, ptr %9, align 16, !tbaa !13
  store <2 x double> %189, ptr %12, align 16, !tbaa !13
  %190 = call { double, double } @Cd(ptr noundef nonnull %12)
  %191 = extractvalue { double, double } %190, 0
  %192 = extractvalue { double, double } %190, 1
  %193 = fneg double %192
  %194 = call ptr @_pCd(ptr noundef nonnull %10)
  %195 = getelementptr inbounds i8, ptr %194, i64 8
  store double %191, ptr %194, align 8
  store double %193, ptr %195, align 8
  %196 = load double, ptr %4, align 8, !tbaa !9
  %197 = getelementptr inbounds i8, ptr %4, i64 8
  %198 = load double, ptr %197, align 8, !tbaa !12
  %199 = fneg double %198
  %200 = load <2 x double>, ptr %10, align 16, !tbaa !13
  %201 = insertelement <2 x double> poison, double %198, i64 0
  %202 = insertelement <2 x double> %201, double %199, i64 1
  %203 = fmul <2 x double> %200, %202
  %204 = shufflevector <2 x double> %203, <2 x double> poison, <2 x i32> <i32 1, i32 0>
  %205 = insertelement <2 x double> poison, double %196, i64 0
  %206 = shufflevector <2 x double> %205, <2 x double> poison, <2 x i32> zeroinitializer
  %207 = call <2 x double> @llvm.fmuladd.v2f64(<2 x double> %206, <2 x double> %200, <2 x double> %204)
  store <2 x double> %207, ptr %9, align 16, !tbaa !13
  %208 = getelementptr inbounds i8, ptr %3, i64 16
  %209 = call { double, double } @Cd(ptr noundef nonnull %208)
  %210 = extractvalue { double, double } %209, 0
  %211 = extractvalue { double, double } %209, 1
  %212 = fneg double %211
  %213 = call ptr @_pCd(ptr noundef nonnull %9)
  %214 = getelementptr inbounds i8, ptr %213, i64 8
  store double %210, ptr %213, align 8
  store double %212, ptr %214, align 8
  %215 = load <2 x double>, ptr %9, align 16, !tbaa !13
  store <2 x double> %215, ptr %13, align 16, !tbaa !13
  %216 = call { double, double } @Cd(ptr noundef nonnull %13)
  %217 = extractvalue { double, double } %216, 0
  %218 = extractvalue { double, double } %216, 1
  %219 = fneg double %218
  %220 = call ptr @_pCd(ptr noundef nonnull %10)
  %221 = getelementptr inbounds i8, ptr %220, i64 8
  store double %217, ptr %220, align 8
  store double %219, ptr %221, align 8
  %222 = load double, ptr %4, align 8, !tbaa !9
  %223 = load double, ptr %197, align 8, !tbaa !12
  %224 = fneg double %223
  %225 = load <2 x double>, ptr %10, align 16, !tbaa !13
  %226 = insertelement <2 x double> poison, double %223, i64 0
  %227 = insertelement <2 x double> %226, double %224, i64 1
  %228 = fmul <2 x double> %225, %227
  %229 = shufflevector <2 x double> %228, <2 x double> poison, <2 x i32> <i32 1, i32 0>
  %230 = insertelement <2 x double> poison, double %222, i64 0
  %231 = shufflevector <2 x double> %230, <2 x double> poison, <2 x i32> zeroinitializer
  %232 = call <2 x double> @llvm.fmuladd.v2f64(<2 x double> %231, <2 x double> %225, <2 x double> %229)
  store <2 x double> %232, ptr %9, align 16, !tbaa !13
  %233 = getelementptr inbounds i8, ptr %3, i64 32
  %234 = call { double, double } @Cd(ptr noundef nonnull %233)
  %235 = extractvalue { double, double } %234, 0
  %236 = extractvalue { double, double } %234, 1
  %237 = fneg double %236
  %238 = call ptr @_pCd(ptr noundef nonnull %9)
  %239 = getelementptr inbounds i8, ptr %238, i64 8
  store double %235, ptr %238, align 8
  store double %237, ptr %239, align 8
  %240 = load <2 x double>, ptr %9, align 16, !tbaa !13
  store <2 x double> %240, ptr %14, align 16, !tbaa !13
  %241 = call { double, double } @Cd(ptr noundef nonnull %14)
  %242 = extractvalue { double, double } %241, 0
  %243 = extractvalue { double, double } %241, 1
  %244 = fneg double %243
  %245 = call ptr @_pCd(ptr noundef nonnull %10)
  %246 = getelementptr inbounds i8, ptr %245, i64 8
  store double %242, ptr %245, align 8
  store double %244, ptr %246, align 8
  %247 = load double, ptr %4, align 8, !tbaa !9
  %248 = load double, ptr %197, align 8, !tbaa !12
  %249 = fneg double %248
  %250 = load <2 x double>, ptr %10, align 16, !tbaa !13
  %251 = insertelement <2 x double> poison, double %248, i64 0
  %252 = insertelement <2 x double> %251, double %249, i64 1
  %253 = fmul <2 x double> %250, %252
  %254 = shufflevector <2 x double> %253, <2 x double> poison, <2 x i32> <i32 1, i32 0>
  %255 = insertelement <2 x double> poison, double %247, i64 0
  %256 = shufflevector <2 x double> %255, <2 x double> poison, <2 x i32> zeroinitializer
  %257 = call <2 x double> @llvm.fmuladd.v2f64(<2 x double> %256, <2 x double> %250, <2 x double> %254)
  %258 = load i32, ptr %2, align 4, !tbaa !5
  %.not42994412 = icmp slt i32 %258, 1
  br i1 %.not42994412, label %.loopexit, label %.lr.ph4414

.lr.ph4414:                                       ; preds = %182
  %259 = getelementptr inbounds i8, ptr %14, i64 8
  %260 = getelementptr inbounds i8, ptr %13, i64 8
  %261 = load <2 x double>, ptr %12, align 16
  %262 = shufflevector <2 x double> %261, <2 x double> poison, <2 x i32> <i32 1, i32 poison>
  %263 = load double, ptr %13, align 16, !tbaa !9
  %264 = load double, ptr %260, align 8, !tbaa !12
  %265 = insertelement <2 x double> %262, double %264, i64 1
  %266 = fneg <2 x double> %265
  %267 = load double, ptr %14, align 16, !tbaa !9
  %268 = load double, ptr %259, align 8, !tbaa !12
  %269 = fneg double %268
  %270 = sext i32 %22 to i64
  %271 = add nuw i32 %258, 1
  %wide.trip.count4681 = zext i32 %271 to i64
  %272 = insertelement <2 x double> %261, double %263, i64 1
  br label %273

273:                                              ; preds = %.lr.ph4414, %273
  %indvars.iv4678 = phi i64 [ 1, %.lr.ph4414 ], [ %indvars.iv.next4679, %273 ]
  %274 = mul nsw i64 %indvars.iv4678, %270
  %275 = getelementptr %struct.doublecomplex, ptr %24, i64 %274
  %276 = getelementptr i8, ptr %275, i64 16
  %277 = getelementptr i8, ptr %275, i64 32
  %278 = getelementptr i8, ptr %275, i64 48
  %279 = load <2 x double>, ptr %276, align 8, !tbaa !13
  %280 = load <2 x double>, ptr %277, align 8, !tbaa !13
  %281 = shufflevector <2 x double> %279, <2 x double> %280, <2 x i32> <i32 1, i32 3>
  %282 = fmul <2 x double> %281, %266
  %283 = shufflevector <2 x double> %279, <2 x double> %280, <2 x i32> <i32 0, i32 2>
  %284 = call <2 x double> @llvm.fmuladd.v2f64(<2 x double> %272, <2 x double> %283, <2 x double> %282)
  %285 = fmul <2 x double> %283, %265
  %286 = call <2 x double> @llvm.fmuladd.v2f64(<2 x double> %272, <2 x double> %281, <2 x double> %285)
  %shift6650 = shufflevector <2 x double> %284, <2 x double> poison, <2 x i32> <i32 1, i32 poison>
  %287 = fadd <2 x double> %284, %shift6650
  %288 = extractelement <2 x double> %287, i64 0
  %shift6651 = shufflevector <2 x double> %286, <2 x double> poison, <2 x i32> <i32 1, i32 poison>
  %289 = fadd <2 x double> %286, %shift6651
  %290 = extractelement <2 x double> %289, i64 0
  %291 = load <2 x double>, ptr %278, align 8, !tbaa !13
  %292 = extractelement <2 x double> %291, i64 1
  %293 = fmul double %292, %269
  %294 = extractelement <2 x double> %291, i64 0
  %295 = call double @llvm.fmuladd.f64(double %267, double %294, double %293)
  %296 = fmul double %294, %268
  %297 = call double @llvm.fmuladd.f64(double %267, double %292, double %296)
  %298 = fadd double %288, %295
  %299 = fadd double %297, %290
  %300 = fneg double %299
  %301 = insertelement <2 x double> poison, double %299, i64 0
  %302 = insertelement <2 x double> %301, double %300, i64 1
  %303 = fmul <2 x double> %207, %302
  %304 = shufflevector <2 x double> %303, <2 x double> poison, <2 x i32> <i32 1, i32 0>
  %305 = insertelement <2 x double> poison, double %298, i64 0
  %306 = shufflevector <2 x double> %305, <2 x double> poison, <2 x i32> zeroinitializer
  %307 = call <2 x double> @llvm.fmuladd.v2f64(<2 x double> %306, <2 x double> %207, <2 x double> %304)
  %308 = fsub <2 x double> %279, %307
  store <2 x double> %308, ptr %276, align 8, !tbaa !13
  %309 = fmul <2 x double> %232, %302
  %310 = shufflevector <2 x double> %309, <2 x double> poison, <2 x i32> <i32 1, i32 0>
  %311 = call <2 x double> @llvm.fmuladd.v2f64(<2 x double> %306, <2 x double> %232, <2 x double> %310)
  %312 = fsub <2 x double> %280, %311
  store <2 x double> %312, ptr %277, align 8, !tbaa !13
  %313 = fmul <2 x double> %257, %302
  %314 = shufflevector <2 x double> %313, <2 x double> poison, <2 x i32> <i32 1, i32 0>
  %315 = call <2 x double> @llvm.fmuladd.v2f64(<2 x double> %306, <2 x double> %257, <2 x double> %314)
  %316 = fsub <2 x double> %291, %315
  store <2 x double> %316, ptr %278, align 8, !tbaa !13
  %indvars.iv.next4679 = add nuw nsw i64 %indvars.iv4678, 1
  %exitcond4682.not = icmp eq i64 %indvars.iv.next4679, %wide.trip.count4681
  br i1 %exitcond4682.not, label %.loopexit, label %273, !llvm.loop !17

317:                                              ; preds = %33
  %318 = tail call { double, double } @Cd(ptr noundef %3)
  %319 = extractvalue { double, double } %318, 0
  %320 = extractvalue { double, double } %318, 1
  %321 = fneg double %320
  %322 = call ptr @_pCd(ptr noundef nonnull %9)
  %323 = getelementptr inbounds i8, ptr %322, i64 8
  store double %319, ptr %322, align 8
  store double %321, ptr %323, align 8
  %324 = load <2 x double>, ptr %9, align 16, !tbaa !13
  store <2 x double> %324, ptr %12, align 16, !tbaa !13
  %325 = call { double, double } @Cd(ptr noundef nonnull %12)
  %326 = extractvalue { double, double } %325, 0
  %327 = extractvalue { double, double } %325, 1
  %328 = fneg double %327
  %329 = call ptr @_pCd(ptr noundef nonnull %10)
  %330 = getelementptr inbounds i8, ptr %329, i64 8
  store double %326, ptr %329, align 8
  store double %328, ptr %330, align 8
  %331 = load double, ptr %4, align 8, !tbaa !9
  %332 = getelementptr inbounds i8, ptr %4, i64 8
  %333 = load double, ptr %332, align 8, !tbaa !12
  %334 = fneg double %333
  %335 = load <2 x double>, ptr %10, align 16, !tbaa !13
  %336 = insertelement <2 x double> poison, double %333, i64 0
  %337 = insertelement <2 x double> %336, double %334, i64 1
  %338 = fmul <2 x double> %335, %337
  %339 = shufflevector <2 x double> %338, <2 x double> poison, <2 x i32> <i32 1, i32 0>
  %340 = insertelement <2 x double> poison, double %331, i64 0
  %341 = shufflevector <2 x double> %340, <2 x double> poison, <2 x i32> zeroinitializer
  %342 = call <2 x double> @llvm.fmuladd.v2f64(<2 x double> %341, <2 x double> %335, <2 x double> %339)
  store <2 x double> %342, ptr %9, align 16, !tbaa !13
  %343 = getelementptr inbounds i8, ptr %3, i64 16
  %344 = call { double, double } @Cd(ptr noundef nonnull %343)
  %345 = extractvalue { double, double } %344, 0
  %346 = extractvalue { double, double } %344, 1
  %347 = fneg double %346
  %348 = call ptr @_pCd(ptr noundef nonnull %9)
  %349 = getelementptr inbounds i8, ptr %348, i64 8
  store double %345, ptr %348, align 8
  store double %347, ptr %349, align 8
  %350 = load <2 x double>, ptr %9, align 16, !tbaa !13
  store <2 x double> %350, ptr %13, align 16, !tbaa !13
  %351 = call { double, double } @Cd(ptr noundef nonnull %13)
  %352 = extractvalue { double, double } %351, 0
  %353 = extractvalue { double, double } %351, 1
  %354 = fneg double %353
  %355 = call ptr @_pCd(ptr noundef nonnull %10)
  %356 = getelementptr inbounds i8, ptr %355, i64 8
  store double %352, ptr %355, align 8
  store double %354, ptr %356, align 8
  %357 = load double, ptr %4, align 8, !tbaa !9
  %358 = load double, ptr %332, align 8, !tbaa !12
  %359 = fneg double %358
  %360 = load <2 x double>, ptr %10, align 16, !tbaa !13
  %361 = insertelement <2 x double> poison, double %358, i64 0
  %362 = insertelement <2 x double> %361, double %359, i64 1
  %363 = fmul <2 x double> %360, %362
  %364 = shufflevector <2 x double> %363, <2 x double> poison, <2 x i32> <i32 1, i32 0>
  %365 = insertelement <2 x double> poison, double %357, i64 0
  %366 = shufflevector <2 x double> %365, <2 x double> poison, <2 x i32> zeroinitializer
  %367 = call <2 x double> @llvm.fmuladd.v2f64(<2 x double> %366, <2 x double> %360, <2 x double> %364)
  store <2 x double> %367, ptr %9, align 16, !tbaa !13
  %368 = getelementptr inbounds i8, ptr %3, i64 32
  %369 = call { double, double } @Cd(ptr noundef nonnull %368)
  %370 = extractvalue { double, double } %369, 0
  %371 = extractvalue { double, double } %369, 1
  %372 = fneg double %371
  %373 = call ptr @_pCd(ptr noundef nonnull %9)
  %374 = getelementptr inbounds i8, ptr %373, i64 8
  store double %370, ptr %373, align 8
  store double %372, ptr %374, align 8
  %375 = load <2 x double>, ptr %9, align 16, !tbaa !13
  store <2 x double> %375, ptr %14, align 16, !tbaa !13
  %376 = call { double, double } @Cd(ptr noundef nonnull %14)
  %377 = extractvalue { double, double } %376, 0
  %378 = extractvalue { double, double } %376, 1
  %379 = fneg double %378
  %380 = call ptr @_pCd(ptr noundef nonnull %10)
  %381 = getelementptr inbounds i8, ptr %380, i64 8
  store double %377, ptr %380, align 8
  store double %379, ptr %381, align 8
  %382 = load double, ptr %4, align 8, !tbaa !9
  %383 = load double, ptr %332, align 8, !tbaa !12
  %384 = fneg double %383
  %385 = load <2 x double>, ptr %10, align 16, !tbaa !13
  %386 = insertelement <2 x double> poison, double %383, i64 0
  %387 = insertelement <2 x double> %386, double %384, i64 1
  %388 = fmul <2 x double> %385, %387
  %389 = shufflevector <2 x double> %388, <2 x double> poison, <2 x i32> <i32 1, i32 0>
  %390 = insertelement <2 x double> poison, double %382, i64 0
  %391 = shufflevector <2 x double> %390, <2 x double> poison, <2 x i32> zeroinitializer
  %392 = call <2 x double> @llvm.fmuladd.v2f64(<2 x double> %391, <2 x double> %385, <2 x double> %389)
  store <2 x double> %392, ptr %9, align 16, !tbaa !13
  %393 = getelementptr inbounds i8, ptr %3, i64 48
  %394 = call { double, double } @Cd(ptr noundef nonnull %393)
  %395 = extractvalue { double, double } %394, 0
  %396 = extractvalue { double, double } %394, 1
  %397 = fneg double %396
  %398 = call ptr @_pCd(ptr noundef nonnull %9)
  %399 = getelementptr inbounds i8, ptr %398, i64 8
  store double %395, ptr %398, align 8
  store double %397, ptr %399, align 8
  %400 = load <2 x double>, ptr %9, align 16, !tbaa !13
  store <2 x double> %400, ptr %15, align 16, !tbaa !13
  %401 = call { double, double } @Cd(ptr noundef nonnull %15)
  %402 = extractvalue { double, double } %401, 0
  %403 = extractvalue { double, double } %401, 1
  %404 = fneg double %403
  %405 = call ptr @_pCd(ptr noundef nonnull %10)
  %406 = getelementptr inbounds i8, ptr %405, i64 8
  store double %402, ptr %405, align 8
  store double %404, ptr %406, align 8
  %407 = load double, ptr %4, align 8, !tbaa !9
  %408 = load double, ptr %332, align 8, !tbaa !12
  %409 = fneg double %408
  %410 = load <2 x double>, ptr %10, align 16, !tbaa !13
  %411 = insertelement <2 x double> poison, double %408, i64 0
  %412 = insertelement <2 x double> %411, double %409, i64 1
  %413 = fmul <2 x double> %410, %412
  %414 = shufflevector <2 x double> %413, <2 x double> poison, <2 x i32> <i32 1, i32 0>
  %415 = insertelement <2 x double> poison, double %407, i64 0
  %416 = shufflevector <2 x double> %415, <2 x double> poison, <2 x i32> zeroinitializer
  %417 = call <2 x double> @llvm.fmuladd.v2f64(<2 x double> %416, <2 x double> %410, <2 x double> %414)
  %418 = load i32, ptr %2, align 4, !tbaa !5
  %.not42984399 = icmp slt i32 %418, 1
  br i1 %.not42984399, label %.loopexit, label %.lr.ph4401

.lr.ph4401:                                       ; preds = %317
  %419 = getelementptr inbounds i8, ptr %15, i64 8
  %420 = getelementptr inbounds i8, ptr %14, i64 8
  %421 = getelementptr inbounds i8, ptr %13, i64 8
  %422 = load <2 x double>, ptr %12, align 16
  %423 = shufflevector <2 x double> %422, <2 x double> poison, <2 x i32> <i32 1, i32 poison>
  %424 = load double, ptr %13, align 16, !tbaa !9
  %425 = load double, ptr %421, align 8, !tbaa !12
  %426 = insertelement <2 x double> %423, double %425, i64 1
  %427 = fneg <2 x double> %426
  %428 = load double, ptr %14, align 16, !tbaa !9
  %429 = load double, ptr %420, align 8, !tbaa !12
  %430 = fneg double %429
  %431 = load double, ptr %15, align 16, !tbaa !9
  %432 = load double, ptr %419, align 8, !tbaa !12
  %433 = fneg double %432
  %434 = sext i32 %22 to i64
  %435 = add nuw i32 %418, 1
  %wide.trip.count4676 = zext i32 %435 to i64
  %436 = insertelement <2 x double> %422, double %424, i64 1
  br label %437

437:                                              ; preds = %.lr.ph4401, %437
  %indvars.iv4673 = phi i64 [ 1, %.lr.ph4401 ], [ %indvars.iv.next4674, %437 ]
  %438 = mul nsw i64 %indvars.iv4673, %434
  %439 = getelementptr %struct.doublecomplex, ptr %24, i64 %438
  %440 = getelementptr i8, ptr %439, i64 16
  %441 = getelementptr i8, ptr %439, i64 32
  %442 = getelementptr i8, ptr %439, i64 48
  %443 = getelementptr i8, ptr %439, i64 64
  %444 = load <2 x double>, ptr %440, align 8, !tbaa !13
  %445 = load <2 x double>, ptr %441, align 8, !tbaa !13
  %446 = shufflevector <2 x double> %444, <2 x double> %445, <2 x i32> <i32 1, i32 3>
  %447 = fmul <2 x double> %446, %427
  %448 = shufflevector <2 x double> %444, <2 x double> %445, <2 x i32> <i32 0, i32 2>
  %449 = call <2 x double> @llvm.fmuladd.v2f64(<2 x double> %436, <2 x double> %448, <2 x double> %447)
  %450 = fmul <2 x double> %426, %448
  %451 = call <2 x double> @llvm.fmuladd.v2f64(<2 x double> %436, <2 x double> %446, <2 x double> %450)
  %shift6652 = shufflevector <2 x double> %449, <2 x double> poison, <2 x i32> <i32 1, i32 poison>
  %452 = fadd <2 x double> %449, %shift6652
  %453 = extractelement <2 x double> %452, i64 0
  %shift6653 = shufflevector <2 x double> %451, <2 x double> poison, <2 x i32> <i32 1, i32 poison>
  %454 = fadd <2 x double> %451, %shift6653
  %455 = extractelement <2 x double> %454, i64 0
  %456 = load <2 x double>, ptr %442, align 8, !tbaa !13
  %457 = extractelement <2 x double> %456, i64 1
  %458 = fmul double %457, %430
  %459 = extractelement <2 x double> %456, i64 0
  %460 = call double @llvm.fmuladd.f64(double %428, double %459, double %458)
  %461 = fmul double %459, %429
  %462 = call double @llvm.fmuladd.f64(double %428, double %457, double %461)
  %463 = fadd double %453, %460
  %464 = fadd double %455, %462
  %465 = load <2 x double>, ptr %443, align 8, !tbaa !13
  %466 = extractelement <2 x double> %465, i64 1
  %467 = fmul double %466, %433
  %468 = extractelement <2 x double> %465, i64 0
  %469 = call double @llvm.fmuladd.f64(double %431, double %468, double %467)
  %470 = fmul double %468, %432
  %471 = call double @llvm.fmuladd.f64(double %431, double %466, double %470)
  %472 = fadd double %463, %469
  %473 = fadd double %471, %464
  %474 = fneg double %473
  %475 = insertelement <2 x double> poison, double %473, i64 0
  %476 = insertelement <2 x double> %475, double %474, i64 1
  %477 = fmul <2 x double> %342, %476
  %478 = shufflevector <2 x double> %477, <2 x double> poison, <2 x i32> <i32 1, i32 0>
  %479 = insertelement <2 x double> poison, double %472, i64 0
  %480 = shufflevector <2 x double> %479, <2 x double> poison, <2 x i32> zeroinitializer
  %481 = call <2 x double> @llvm.fmuladd.v2f64(<2 x double> %480, <2 x double> %342, <2 x double> %478)
  %482 = fsub <2 x double> %444, %481
  store <2 x double> %482, ptr %440, align 8, !tbaa !13
  %483 = fmul <2 x double> %367, %476
  %484 = shufflevector <2 x double> %483, <2 x double> poison, <2 x i32> <i32 1, i32 0>
  %485 = call <2 x double> @llvm.fmuladd.v2f64(<2 x double> %480, <2 x double> %367, <2 x double> %484)
  %486 = fsub <2 x double> %445, %485
  store <2 x double> %486, ptr %441, align 8, !tbaa !13
  %487 = fmul <2 x double> %392, %476
  %488 = shufflevector <2 x double> %487, <2 x double> poison, <2 x i32> <i32 1, i32 0>
  %489 = call <2 x double> @llvm.fmuladd.v2f64(<2 x double> %480, <2 x double> %392, <2 x double> %488)
  %490 = fsub <2 x double> %456, %489
  store <2 x double> %490, ptr %442, align 8, !tbaa !13
  %491 = fmul <2 x double> %417, %476
  %492 = shufflevector <2 x double> %491, <2 x double> poison, <2 x i32> <i32 1, i32 0>
  %493 = call <2 x double> @llvm.fmuladd.v2f64(<2 x double> %480, <2 x double> %417, <2 x double> %492)
  %494 = fsub <2 x double> %465, %493
  store <2 x double> %494, ptr %443, align 8, !tbaa !13
  %indvars.iv.next4674 = add nuw nsw i64 %indvars.iv4673, 1
  %exitcond4677.not = icmp eq i64 %indvars.iv.next4674, %wide.trip.count4676
  br i1 %exitcond4677.not, label %.loopexit, label %437, !llvm.loop !18

495:                                              ; preds = %33
  %496 = tail call { double, double } @Cd(ptr noundef %3)
  %497 = extractvalue { double, double } %496, 0
  %498 = extractvalue { double, double } %496, 1
  %499 = fneg double %498
  %500 = call ptr @_pCd(ptr noundef nonnull %9)
  %501 = getelementptr inbounds i8, ptr %500, i64 8
  store double %497, ptr %500, align 8
  store double %499, ptr %501, align 8
  %502 = load <2 x double>, ptr %9, align 16, !tbaa !13
  store <2 x double> %502, ptr %12, align 16, !tbaa !13
  %503 = call { double, double } @Cd(ptr noundef nonnull %12)
  %504 = extractvalue { double, double } %503, 0
  %505 = extractvalue { double, double } %503, 1
  %506 = fneg double %505
  %507 = call ptr @_pCd(ptr noundef nonnull %10)
  %508 = getelementptr inbounds i8, ptr %507, i64 8
  store double %504, ptr %507, align 8
  store double %506, ptr %508, align 8
  %509 = load double, ptr %4, align 8, !tbaa !9
  %510 = getelementptr inbounds i8, ptr %4, i64 8
  %511 = load double, ptr %510, align 8, !tbaa !12
  %512 = fneg double %511
  %513 = load <2 x double>, ptr %10, align 16, !tbaa !13
  %514 = insertelement <2 x double> poison, double %511, i64 0
  %515 = insertelement <2 x double> %514, double %512, i64 1
  %516 = fmul <2 x double> %513, %515
  %517 = shufflevector <2 x double> %516, <2 x double> poison, <2 x i32> <i32 1, i32 0>
  %518 = insertelement <2 x double> poison, double %509, i64 0
  %519 = shufflevector <2 x double> %518, <2 x double> poison, <2 x i32> zeroinitializer
  %520 = call <2 x double> @llvm.fmuladd.v2f64(<2 x double> %519, <2 x double> %513, <2 x double> %517)
  store <2 x double> %520, ptr %9, align 16, !tbaa !13
  %521 = getelementptr inbounds i8, ptr %3, i64 16
  %522 = call { double, double } @Cd(ptr noundef nonnull %521)
  %523 = extractvalue { double, double } %522, 0
  %524 = extractvalue { double, double } %522, 1
  %525 = fneg double %524
  %526 = call ptr @_pCd(ptr noundef nonnull %9)
  %527 = getelementptr inbounds i8, ptr %526, i64 8
  store double %523, ptr %526, align 8
  store double %525, ptr %527, align 8
  %528 = load <2 x double>, ptr %9, align 16, !tbaa !13
  store <2 x double> %528, ptr %13, align 16, !tbaa !13
  %529 = call { double, double } @Cd(ptr noundef nonnull %13)
  %530 = extractvalue { double, double } %529, 0
  %531 = extractvalue { double, double } %529, 1
  %532 = fneg double %531
  %533 = call ptr @_pCd(ptr noundef nonnull %10)
  %534 = getelementptr inbounds i8, ptr %533, i64 8
  store double %530, ptr %533, align 8
  store double %532, ptr %534, align 8
  %535 = load double, ptr %4, align 8, !tbaa !9
  %536 = load double, ptr %510, align 8, !tbaa !12
  %537 = fneg double %536
  %538 = load <2 x double>, ptr %10, align 16, !tbaa !13
  %539 = insertelement <2 x double> poison, double %536, i64 0
  %540 = insertelement <2 x double> %539, double %537, i64 1
  %541 = fmul <2 x double> %538, %540
  %542 = shufflevector <2 x double> %541, <2 x double> poison, <2 x i32> <i32 1, i32 0>
  %543 = insertelement <2 x double> poison, double %535, i64 0
  %544 = shufflevector <2 x double> %543, <2 x double> poison, <2 x i32> zeroinitializer
  %545 = call <2 x double> @llvm.fmuladd.v2f64(<2 x double> %544, <2 x double> %538, <2 x double> %542)
  store <2 x double> %545, ptr %9, align 16, !tbaa !13
  %546 = getelementptr inbounds i8, ptr %3, i64 32
  %547 = call { double, double } @Cd(ptr noundef nonnull %546)
  %548 = extractvalue { double, double } %547, 0
  %549 = extractvalue { double, double } %547, 1
  %550 = fneg double %549
  %551 = call ptr @_pCd(ptr noundef nonnull %9)
  %552 = getelementptr inbounds i8, ptr %551, i64 8
  store double %548, ptr %551, align 8
  store double %550, ptr %552, align 8
  %553 = load <2 x double>, ptr %9, align 16, !tbaa !13
  store <2 x double> %553, ptr %14, align 16, !tbaa !13
  %554 = call { double, double } @Cd(ptr noundef nonnull %14)
  %555 = extractvalue { double, double } %554, 0
  %556 = extractvalue { double, double } %554, 1
  %557 = fneg double %556
  %558 = call ptr @_pCd(ptr noundef nonnull %10)
  %559 = getelementptr inbounds i8, ptr %558, i64 8
  store double %555, ptr %558, align 8
  store double %557, ptr %559, align 8
  %560 = load double, ptr %4, align 8, !tbaa !9
  %561 = load double, ptr %510, align 8, !tbaa !12
  %562 = fneg double %561
  %563 = load <2 x double>, ptr %10, align 16, !tbaa !13
  %564 = insertelement <2 x double> poison, double %561, i64 0
  %565 = insertelement <2 x double> %564, double %562, i64 1
  %566 = fmul <2 x double> %563, %565
  %567 = shufflevector <2 x double> %566, <2 x double> poison, <2 x i32> <i32 1, i32 0>
  %568 = insertelement <2 x double> poison, double %560, i64 0
  %569 = shufflevector <2 x double> %568, <2 x double> poison, <2 x i32> zeroinitializer
  %570 = call <2 x double> @llvm.fmuladd.v2f64(<2 x double> %569, <2 x double> %563, <2 x double> %567)
  store <2 x double> %570, ptr %9, align 16, !tbaa !13
  %571 = getelementptr inbounds i8, ptr %3, i64 48
  %572 = call { double, double } @Cd(ptr noundef nonnull %571)
  %573 = extractvalue { double, double } %572, 0
  %574 = extractvalue { double, double } %572, 1
  %575 = fneg double %574
  %576 = call ptr @_pCd(ptr noundef nonnull %9)
  %577 = getelementptr inbounds i8, ptr %576, i64 8
  store double %573, ptr %576, align 8
  store double %575, ptr %577, align 8
  %578 = load <2 x double>, ptr %9, align 16, !tbaa !13
  store <2 x double> %578, ptr %15, align 16, !tbaa !13
  %579 = call { double, double } @Cd(ptr noundef nonnull %15)
  %580 = extractvalue { double, double } %579, 0
  %581 = extractvalue { double, double } %579, 1
  %582 = fneg double %581
  %583 = call ptr @_pCd(ptr noundef nonnull %10)
  %584 = getelementptr inbounds i8, ptr %583, i64 8
  store double %580, ptr %583, align 8
  store double %582, ptr %584, align 8
  %585 = load double, ptr %4, align 8, !tbaa !9
  %586 = load double, ptr %510, align 8, !tbaa !12
  %587 = fneg double %586
  %588 = load <2 x double>, ptr %10, align 16, !tbaa !13
  %589 = insertelement <2 x double> poison, double %586, i64 0
  %590 = insertelement <2 x double> %589, double %587, i64 1
  %591 = fmul <2 x double> %588, %590
  %592 = shufflevector <2 x double> %591, <2 x double> poison, <2 x i32> <i32 1, i32 0>
  %593 = insertelement <2 x double> poison, double %585, i64 0
  %594 = shufflevector <2 x double> %593, <2 x double> poison, <2 x i32> zeroinitializer
  %595 = call <2 x double> @llvm.fmuladd.v2f64(<2 x double> %594, <2 x double> %588, <2 x double> %592)
  store <2 x double> %595, ptr %9, align 16, !tbaa !13
  %596 = getelementptr inbounds i8, ptr %3, i64 64
  %597 = call { double, double } @Cd(ptr noundef nonnull %596)
  %598 = extractvalue { double, double } %597, 0
  %599 = extractvalue { double, double } %597, 1
  %600 = fneg double %599
  %601 = call ptr @_pCd(ptr noundef nonnull %9)
  %602 = getelementptr inbounds i8, ptr %601, i64 8
  store double %598, ptr %601, align 8
  store double %600, ptr %602, align 8
  %603 = load <2 x double>, ptr %9, align 16, !tbaa !13
  store <2 x double> %603, ptr %16, align 16, !tbaa !13
  %604 = call { double, double } @Cd(ptr noundef nonnull %16)
  %605 = extractvalue { double, double } %604, 0
  %606 = extractvalue { double, double } %604, 1
  %607 = fneg double %606
  %608 = call ptr @_pCd(ptr noundef nonnull %10)
  %609 = getelementptr inbounds i8, ptr %608, i64 8
  store double %605, ptr %608, align 8
  store double %607, ptr %609, align 8
  %610 = load double, ptr %4, align 8, !tbaa !9
  %611 = load double, ptr %510, align 8, !tbaa !12
  %612 = fneg double %611
  %613 = load <2 x double>, ptr %10, align 16, !tbaa !13
  %614 = insertelement <2 x double> poison, double %611, i64 0
  %615 = insertelement <2 x double> %614, double %612, i64 1
  %616 = fmul <2 x double> %613, %615
  %617 = shufflevector <2 x double> %616, <2 x double> poison, <2 x i32> <i32 1, i32 0>
  %618 = insertelement <2 x double> poison, double %610, i64 0
  %619 = shufflevector <2 x double> %618, <2 x double> poison, <2 x i32> zeroinitializer
  %620 = call <2 x double> @llvm.fmuladd.v2f64(<2 x double> %619, <2 x double> %613, <2 x double> %617)
  %621 = load i32, ptr %2, align 4, !tbaa !5
  %.not42974386 = icmp slt i32 %621, 1
  br i1 %.not42974386, label %.loopexit, label %.lr.ph4388

.lr.ph4388:                                       ; preds = %495
  %622 = getelementptr inbounds i8, ptr %16, i64 8
  %623 = getelementptr inbounds i8, ptr %15, i64 8
  %624 = getelementptr inbounds i8, ptr %14, i64 8
  %625 = getelementptr inbounds i8, ptr %13, i64 8
  %626 = load <2 x double>, ptr %12, align 16
  %627 = shufflevector <2 x double> %626, <2 x double> poison, <2 x i32> <i32 1, i32 poison>
  %628 = load double, ptr %13, align 16, !tbaa !9
  %629 = load double, ptr %625, align 8, !tbaa !12
  %630 = insertelement <2 x double> %627, double %629, i64 1
  %631 = fneg <2 x double> %630
  %632 = load double, ptr %14, align 16, !tbaa !9
  %633 = load double, ptr %624, align 8, !tbaa !12
  %634 = fneg double %633
  %635 = load double, ptr %15, align 16, !tbaa !9
  %636 = load double, ptr %623, align 8, !tbaa !12
  %637 = fneg double %636
  %638 = load double, ptr %16, align 16, !tbaa !9
  %639 = load double, ptr %622, align 8, !tbaa !12
  %640 = fneg double %639
  %641 = sext i32 %22 to i64
  %642 = add nuw i32 %621, 1
  %wide.trip.count4671 = zext i32 %642 to i64
  %643 = insertelement <2 x double> %626, double %628, i64 1
  br label %644

644:                                              ; preds = %.lr.ph4388, %644
  %indvars.iv4668 = phi i64 [ 1, %.lr.ph4388 ], [ %indvars.iv.next4669, %644 ]
  %645 = mul nsw i64 %indvars.iv4668, %641
  %646 = getelementptr %struct.doublecomplex, ptr %24, i64 %645
  %647 = getelementptr i8, ptr %646, i64 16
  %648 = getelementptr i8, ptr %646, i64 32
  %649 = getelementptr i8, ptr %646, i64 48
  %650 = getelementptr i8, ptr %646, i64 64
  %651 = getelementptr i8, ptr %646, i64 80
  %652 = load <2 x double>, ptr %647, align 8, !tbaa !13
  %653 = load <2 x double>, ptr %648, align 8, !tbaa !13
  %654 = shufflevector <2 x double> %652, <2 x double> %653, <2 x i32> <i32 1, i32 3>
  %655 = fmul <2 x double> %654, %631
  %656 = shufflevector <2 x double> %652, <2 x double> %653, <2 x i32> <i32 0, i32 2>
  %657 = call <2 x double> @llvm.fmuladd.v2f64(<2 x double> %643, <2 x double> %656, <2 x double> %655)
  %658 = fmul <2 x double> %656, %630
  %659 = call <2 x double> @llvm.fmuladd.v2f64(<2 x double> %643, <2 x double> %654, <2 x double> %658)
  %shift6654 = shufflevector <2 x double> %657, <2 x double> poison, <2 x i32> <i32 1, i32 poison>
  %660 = fadd <2 x double> %657, %shift6654
  %661 = extractelement <2 x double> %660, i64 0
  %shift6655 = shufflevector <2 x double> %659, <2 x double> poison, <2 x i32> <i32 1, i32 poison>
  %662 = fadd <2 x double> %659, %shift6655
  %663 = extractelement <2 x double> %662, i64 0
  %664 = load <2 x double>, ptr %649, align 8, !tbaa !13
  %665 = extractelement <2 x double> %664, i64 1
  %666 = fmul double %665, %634
  %667 = extractelement <2 x double> %664, i64 0
  %668 = call double @llvm.fmuladd.f64(double %632, double %667, double %666)
  %669 = fmul double %667, %633
  %670 = call double @llvm.fmuladd.f64(double %632, double %665, double %669)
  %671 = fadd double %661, %668
  %672 = fadd double %663, %670
  %673 = load <2 x double>, ptr %650, align 8, !tbaa !13
  %674 = extractelement <2 x double> %673, i64 1
  %675 = fmul double %674, %637
  %676 = extractelement <2 x double> %673, i64 0
  %677 = call double @llvm.fmuladd.f64(double %635, double %676, double %675)
  %678 = fmul double %676, %636
  %679 = call double @llvm.fmuladd.f64(double %635, double %674, double %678)
  %680 = fadd double %671, %677
  %681 = fadd double %672, %679
  %682 = load <2 x double>, ptr %651, align 8, !tbaa !13
  %683 = extractelement <2 x double> %682, i64 1
  %684 = fmul double %683, %640
  %685 = extractelement <2 x double> %682, i64 0
  %686 = call double @llvm.fmuladd.f64(double %638, double %685, double %684)
  %687 = fmul double %685, %639
  %688 = call double @llvm.fmuladd.f64(double %638, double %683, double %687)
  %689 = fadd double %680, %686
  %690 = fadd double %688, %681
  %691 = fneg double %690
  %692 = insertelement <2 x double> poison, double %690, i64 0
  %693 = insertelement <2 x double> %692, double %691, i64 1
  %694 = fmul <2 x double> %520, %693
  %695 = shufflevector <2 x double> %694, <2 x double> poison, <2 x i32> <i32 1, i32 0>
  %696 = insertelement <2 x double> poison, double %689, i64 0
  %697 = shufflevector <2 x double> %696, <2 x double> poison, <2 x i32> zeroinitializer
  %698 = call <2 x double> @llvm.fmuladd.v2f64(<2 x double> %697, <2 x double> %520, <2 x double> %695)
  %699 = fsub <2 x double> %652, %698
  store <2 x double> %699, ptr %647, align 8, !tbaa !13
  %700 = fmul <2 x double> %545, %693
  %701 = shufflevector <2 x double> %700, <2 x double> poison, <2 x i32> <i32 1, i32 0>
  %702 = call <2 x double> @llvm.fmuladd.v2f64(<2 x double> %697, <2 x double> %545, <2 x double> %701)
  %703 = fsub <2 x double> %653, %702
  store <2 x double> %703, ptr %648, align 8, !tbaa !13
  %704 = fmul <2 x double> %570, %693
  %705 = shufflevector <2 x double> %704, <2 x double> poison, <2 x i32> <i32 1, i32 0>
  %706 = call <2 x double> @llvm.fmuladd.v2f64(<2 x double> %697, <2 x double> %570, <2 x double> %705)
  %707 = fsub <2 x double> %664, %706
  store <2 x double> %707, ptr %649, align 8, !tbaa !13
  %708 = fmul <2 x double> %595, %693
  %709 = shufflevector <2 x double> %708, <2 x double> poison, <2 x i32> <i32 1, i32 0>
  %710 = call <2 x double> @llvm.fmuladd.v2f64(<2 x double> %697, <2 x double> %595, <2 x double> %709)
  %711 = fsub <2 x double> %673, %710
  store <2 x double> %711, ptr %650, align 8, !tbaa !13
  %712 = fmul <2 x double> %620, %693
  %713 = shufflevector <2 x double> %712, <2 x double> poison, <2 x i32> <i32 1, i32 0>
  %714 = call <2 x double> @llvm.fmuladd.v2f64(<2 x double> %697, <2 x double> %620, <2 x double> %713)
  %715 = fsub <2 x double> %682, %714
  store <2 x double> %715, ptr %651, align 8, !tbaa !13
  %indvars.iv.next4669 = add nuw nsw i64 %indvars.iv4668, 1
  %exitcond4672.not = icmp eq i64 %indvars.iv.next4669, %wide.trip.count4671
  br i1 %exitcond4672.not, label %.loopexit, label %644, !llvm.loop !19

716:                                              ; preds = %33
  %717 = tail call { double, double } @Cd(ptr noundef %3)
  %718 = extractvalue { double, double } %717, 0
  %719 = extractvalue { double, double } %717, 1
  %720 = fneg double %719
  %721 = call ptr @_pCd(ptr noundef nonnull %9)
  %722 = getelementptr inbounds i8, ptr %721, i64 8
  store double %718, ptr %721, align 8
  store double %720, ptr %722, align 8
  %723 = load <2 x double>, ptr %9, align 16, !tbaa !13
  store <2 x double> %723, ptr %12, align 16, !tbaa !13
  %724 = call { double, double } @Cd(ptr noundef nonnull %12)
  %725 = extractvalue { double, double } %724, 0
  %726 = extractvalue { double, double } %724, 1
  %727 = fneg double %726
  %728 = call ptr @_pCd(ptr noundef nonnull %10)
  %729 = getelementptr inbounds i8, ptr %728, i64 8
  store double %725, ptr %728, align 8
  store double %727, ptr %729, align 8
  %730 = load double, ptr %4, align 8, !tbaa !9
  %731 = getelementptr inbounds i8, ptr %4, i64 8
  %732 = load double, ptr %731, align 8, !tbaa !12
  %733 = fneg double %732
  %734 = load <2 x double>, ptr %10, align 16, !tbaa !13
  %735 = insertelement <2 x double> poison, double %732, i64 0
  %736 = insertelement <2 x double> %735, double %733, i64 1
  %737 = fmul <2 x double> %734, %736
  %738 = shufflevector <2 x double> %737, <2 x double> poison, <2 x i32> <i32 1, i32 0>
  %739 = insertelement <2 x double> poison, double %730, i64 0
  %740 = shufflevector <2 x double> %739, <2 x double> poison, <2 x i32> zeroinitializer
  %741 = call <2 x double> @llvm.fmuladd.v2f64(<2 x double> %740, <2 x double> %734, <2 x double> %738)
  store <2 x double> %741, ptr %9, align 16, !tbaa !13
  %742 = getelementptr inbounds i8, ptr %3, i64 16
  %743 = call { double, double } @Cd(ptr noundef nonnull %742)
  %744 = extractvalue { double, double } %743, 0
  %745 = extractvalue { double, double } %743, 1
  %746 = fneg double %745
  %747 = call ptr @_pCd(ptr noundef nonnull %9)
  %748 = getelementptr inbounds i8, ptr %747, i64 8
  store double %744, ptr %747, align 8
  store double %746, ptr %748, align 8
  %749 = load <2 x double>, ptr %9, align 16, !tbaa !13
  store <2 x double> %749, ptr %13, align 16, !tbaa !13
  %750 = call { double, double } @Cd(ptr noundef nonnull %13)
  %751 = extractvalue { double, double } %750, 0
  %752 = extractvalue { double, double } %750, 1
  %753 = fneg double %752
  %754 = call ptr @_pCd(ptr noundef nonnull %10)
  %755 = getelementptr inbounds i8, ptr %754, i64 8
  store double %751, ptr %754, align 8
  store double %753, ptr %755, align 8
  %756 = load double, ptr %4, align 8, !tbaa !9
  %757 = load double, ptr %731, align 8, !tbaa !12
  %758 = fneg double %757
  %759 = load <2 x double>, ptr %10, align 16, !tbaa !13
  %760 = insertelement <2 x double> poison, double %757, i64 0
  %761 = insertelement <2 x double> %760, double %758, i64 1
  %762 = fmul <2 x double> %759, %761
  %763 = shufflevector <2 x double> %762, <2 x double> poison, <2 x i32> <i32 1, i32 0>
  %764 = insertelement <2 x double> poison, double %756, i64 0
  %765 = shufflevector <2 x double> %764, <2 x double> poison, <2 x i32> zeroinitializer
  %766 = call <2 x double> @llvm.fmuladd.v2f64(<2 x double> %765, <2 x double> %759, <2 x double> %763)
  store <2 x double> %766, ptr %9, align 16, !tbaa !13
  %767 = getelementptr inbounds i8, ptr %3, i64 32
  %768 = call { double, double } @Cd(ptr noundef nonnull %767)
  %769 = extractvalue { double, double } %768, 0
  %770 = extractvalue { double, double } %768, 1
  %771 = fneg double %770
  %772 = call ptr @_pCd(ptr noundef nonnull %9)
  %773 = getelementptr inbounds i8, ptr %772, i64 8
  store double %769, ptr %772, align 8
  store double %771, ptr %773, align 8
  %774 = load <2 x double>, ptr %9, align 16, !tbaa !13
  store <2 x double> %774, ptr %14, align 16, !tbaa !13
  %775 = call { double, double } @Cd(ptr noundef nonnull %14)
  %776 = extractvalue { double, double } %775, 0
  %777 = extractvalue { double, double } %775, 1
  %778 = fneg double %777
  %779 = call ptr @_pCd(ptr noundef nonnull %10)
  %780 = getelementptr inbounds i8, ptr %779, i64 8
  store double %776, ptr %779, align 8
  store double %778, ptr %780, align 8
  %781 = load double, ptr %4, align 8, !tbaa !9
  %782 = load double, ptr %731, align 8, !tbaa !12
  %783 = fneg double %782
  %784 = load <2 x double>, ptr %10, align 16, !tbaa !13
  %785 = insertelement <2 x double> poison, double %782, i64 0
  %786 = insertelement <2 x double> %785, double %783, i64 1
  %787 = fmul <2 x double> %784, %786
  %788 = shufflevector <2 x double> %787, <2 x double> poison, <2 x i32> <i32 1, i32 0>
  %789 = insertelement <2 x double> poison, double %781, i64 0
  %790 = shufflevector <2 x double> %789, <2 x double> poison, <2 x i32> zeroinitializer
  %791 = call <2 x double> @llvm.fmuladd.v2f64(<2 x double> %790, <2 x double> %784, <2 x double> %788)
  store <2 x double> %791, ptr %9, align 16, !tbaa !13
  %792 = getelementptr inbounds i8, ptr %3, i64 48
  %793 = call { double, double } @Cd(ptr noundef nonnull %792)
  %794 = extractvalue { double, double } %793, 0
  %795 = extractvalue { double, double } %793, 1
  %796 = fneg double %795
  %797 = call ptr @_pCd(ptr noundef nonnull %9)
  %798 = getelementptr inbounds i8, ptr %797, i64 8
  store double %794, ptr %797, align 8
  store double %796, ptr %798, align 8
  %799 = load <2 x double>, ptr %9, align 16, !tbaa !13
  store <2 x double> %799, ptr %15, align 16, !tbaa !13
  %800 = call { double, double } @Cd(ptr noundef nonnull %15)
  %801 = extractvalue { double, double } %800, 0
  %802 = extractvalue { double, double } %800, 1
  %803 = fneg double %802
  %804 = call ptr @_pCd(ptr noundef nonnull %10)
  %805 = getelementptr inbounds i8, ptr %804, i64 8
  store double %801, ptr %804, align 8
  store double %803, ptr %805, align 8
  %806 = load double, ptr %4, align 8, !tbaa !9
  %807 = load double, ptr %731, align 8, !tbaa !12
  %808 = fneg double %807
  %809 = load <2 x double>, ptr %10, align 16, !tbaa !13
  %810 = insertelement <2 x double> poison, double %807, i64 0
  %811 = insertelement <2 x double> %810, double %808, i64 1
  %812 = fmul <2 x double> %809, %811
  %813 = shufflevector <2 x double> %812, <2 x double> poison, <2 x i32> <i32 1, i32 0>
  %814 = insertelement <2 x double> poison, double %806, i64 0
  %815 = shufflevector <2 x double> %814, <2 x double> poison, <2 x i32> zeroinitializer
  %816 = call <2 x double> @llvm.fmuladd.v2f64(<2 x double> %815, <2 x double> %809, <2 x double> %813)
  store <2 x double> %816, ptr %9, align 16, !tbaa !13
  %817 = getelementptr inbounds i8, ptr %3, i64 64
  %818 = call { double, double } @Cd(ptr noundef nonnull %817)
  %819 = extractvalue { double, double } %818, 0
  %820 = extractvalue { double, double } %818, 1
  %821 = fneg double %820
  %822 = call ptr @_pCd(ptr noundef nonnull %9)
  %823 = getelementptr inbounds i8, ptr %822, i64 8
  store double %819, ptr %822, align 8
  store double %821, ptr %823, align 8
  %824 = load <2 x double>, ptr %9, align 16, !tbaa !13
  store <2 x double> %824, ptr %16, align 16, !tbaa !13
  %825 = call { double, double } @Cd(ptr noundef nonnull %16)
  %826 = extractvalue { double, double } %825, 0
  %827 = extractvalue { double, double } %825, 1
  %828 = fneg double %827
  %829 = call ptr @_pCd(ptr noundef nonnull %10)
  %830 = getelementptr inbounds i8, ptr %829, i64 8
  store double %826, ptr %829, align 8
  store double %828, ptr %830, align 8
  %831 = load double, ptr %4, align 8, !tbaa !9
  %832 = load double, ptr %731, align 8, !tbaa !12
  %833 = fneg double %832
  %834 = load <2 x double>, ptr %10, align 16, !tbaa !13
  %835 = insertelement <2 x double> poison, double %832, i64 0
  %836 = insertelement <2 x double> %835, double %833, i64 1
  %837 = fmul <2 x double> %834, %836
  %838 = shufflevector <2 x double> %837, <2 x double> poison, <2 x i32> <i32 1, i32 0>
  %839 = insertelement <2 x double> poison, double %831, i64 0
  %840 = shufflevector <2 x double> %839, <2 x double> poison, <2 x i32> zeroinitializer
  %841 = call <2 x double> @llvm.fmuladd.v2f64(<2 x double> %840, <2 x double> %834, <2 x double> %838)
  store <2 x double> %841, ptr %9, align 16, !tbaa !13
  %842 = getelementptr inbounds i8, ptr %3, i64 80
  %843 = call { double, double } @Cd(ptr noundef nonnull %842)
  %844 = extractvalue { double, double } %843, 0
  %845 = extractvalue { double, double } %843, 1
  %846 = fneg double %845
  %847 = call ptr @_pCd(ptr noundef nonnull %9)
  %848 = getelementptr inbounds i8, ptr %847, i64 8
  store double %844, ptr %847, align 8
  store double %846, ptr %848, align 8
  %849 = load <2 x double>, ptr %9, align 16, !tbaa !13
  store <2 x double> %849, ptr %17, align 16, !tbaa !13
  %850 = call { double, double } @Cd(ptr noundef nonnull %17)
  %851 = extractvalue { double, double } %850, 0
  %852 = extractvalue { double, double } %850, 1
  %853 = fneg double %852
  %854 = call ptr @_pCd(ptr noundef nonnull %10)
  %855 = getelementptr inbounds i8, ptr %854, i64 8
  store double %851, ptr %854, align 8
  store double %853, ptr %855, align 8
  %856 = load double, ptr %4, align 8, !tbaa !9
  %857 = load double, ptr %731, align 8, !tbaa !12
  %858 = fneg double %857
  %859 = load <2 x double>, ptr %10, align 16, !tbaa !13
  %860 = insertelement <2 x double> poison, double %857, i64 0
  %861 = insertelement <2 x double> %860, double %858, i64 1
  %862 = fmul <2 x double> %859, %861
  %863 = shufflevector <2 x double> %862, <2 x double> poison, <2 x i32> <i32 1, i32 0>
  %864 = insertelement <2 x double> poison, double %856, i64 0
  %865 = shufflevector <2 x double> %864, <2 x double> poison, <2 x i32> zeroinitializer
  %866 = call <2 x double> @llvm.fmuladd.v2f64(<2 x double> %865, <2 x double> %859, <2 x double> %863)
  %867 = load i32, ptr %2, align 4, !tbaa !5
  %.not42964373 = icmp slt i32 %867, 1
  br i1 %.not42964373, label %.loopexit, label %.lr.ph4375

.lr.ph4375:                                       ; preds = %716
  %868 = getelementptr inbounds i8, ptr %17, i64 8
  %869 = getelementptr inbounds i8, ptr %16, i64 8
  %870 = getelementptr inbounds i8, ptr %15, i64 8
  %871 = getelementptr inbounds i8, ptr %14, i64 8
  %872 = getelementptr inbounds i8, ptr %13, i64 8
  %873 = load <2 x double>, ptr %12, align 16
  %874 = shufflevector <2 x double> %873, <2 x double> poison, <2 x i32> <i32 1, i32 poison>
  %875 = load double, ptr %13, align 16, !tbaa !9
  %876 = load double, ptr %872, align 8, !tbaa !12
  %877 = insertelement <2 x double> %874, double %876, i64 1
  %878 = fneg <2 x double> %877
  %879 = load double, ptr %14, align 16, !tbaa !9
  %880 = load double, ptr %871, align 8, !tbaa !12
  %881 = fneg double %880
  %882 = load double, ptr %15, align 16, !tbaa !9
  %883 = load double, ptr %870, align 8, !tbaa !12
  %884 = fneg double %883
  %885 = load double, ptr %16, align 16, !tbaa !9
  %886 = load double, ptr %869, align 8, !tbaa !12
  %887 = fneg double %886
  %888 = load double, ptr %17, align 16, !tbaa !9
  %889 = load double, ptr %868, align 8, !tbaa !12
  %890 = fneg double %889
  %891 = sext i32 %22 to i64
  %892 = add nuw i32 %867, 1
  %wide.trip.count4666 = zext i32 %892 to i64
  %893 = insertelement <2 x double> %873, double %875, i64 1
  br label %894

894:                                              ; preds = %.lr.ph4375, %894
  %indvars.iv4663 = phi i64 [ 1, %.lr.ph4375 ], [ %indvars.iv.next4664, %894 ]
  %895 = mul nsw i64 %indvars.iv4663, %891
  %896 = getelementptr %struct.doublecomplex, ptr %24, i64 %895
  %897 = getelementptr i8, ptr %896, i64 16
  %898 = getelementptr i8, ptr %896, i64 32
  %899 = getelementptr i8, ptr %896, i64 48
  %900 = getelementptr i8, ptr %896, i64 64
  %901 = getelementptr i8, ptr %896, i64 80
  %902 = getelementptr i8, ptr %896, i64 96
  %903 = load <2 x double>, ptr %897, align 8, !tbaa !13
  %904 = load <2 x double>, ptr %898, align 8, !tbaa !13
  %905 = shufflevector <2 x double> %903, <2 x double> %904, <2 x i32> <i32 1, i32 3>
  %906 = fmul <2 x double> %905, %878
  %907 = shufflevector <2 x double> %903, <2 x double> %904, <2 x i32> <i32 0, i32 2>
  %908 = call <2 x double> @llvm.fmuladd.v2f64(<2 x double> %893, <2 x double> %907, <2 x double> %906)
  %909 = fmul <2 x double> %907, %877
  %910 = call <2 x double> @llvm.fmuladd.v2f64(<2 x double> %893, <2 x double> %905, <2 x double> %909)
  %shift6656 = shufflevector <2 x double> %908, <2 x double> poison, <2 x i32> <i32 1, i32 poison>
  %911 = fadd <2 x double> %908, %shift6656
  %912 = extractelement <2 x double> %911, i64 0
  %shift6657 = shufflevector <2 x double> %910, <2 x double> poison, <2 x i32> <i32 1, i32 poison>
  %913 = fadd <2 x double> %910, %shift6657
  %914 = extractelement <2 x double> %913, i64 0
  %915 = load <2 x double>, ptr %899, align 8, !tbaa !13
  %916 = extractelement <2 x double> %915, i64 1
  %917 = fmul double %916, %881
  %918 = extractelement <2 x double> %915, i64 0
  %919 = call double @llvm.fmuladd.f64(double %879, double %918, double %917)
  %920 = fmul double %918, %880
  %921 = call double @llvm.fmuladd.f64(double %879, double %916, double %920)
  %922 = fadd double %912, %919
  %923 = fadd double %914, %921
  %924 = load <2 x double>, ptr %900, align 8, !tbaa !13
  %925 = extractelement <2 x double> %924, i64 1
  %926 = fmul double %925, %884
  %927 = extractelement <2 x double> %924, i64 0
  %928 = call double @llvm.fmuladd.f64(double %882, double %927, double %926)
  %929 = fmul double %927, %883
  %930 = call double @llvm.fmuladd.f64(double %882, double %925, double %929)
  %931 = fadd double %922, %928
  %932 = fadd double %923, %930
  %933 = load <2 x double>, ptr %901, align 8, !tbaa !13
  %934 = extractelement <2 x double> %933, i64 1
  %935 = fmul double %934, %887
  %936 = extractelement <2 x double> %933, i64 0
  %937 = call double @llvm.fmuladd.f64(double %885, double %936, double %935)
  %938 = fmul double %936, %886
  %939 = call double @llvm.fmuladd.f64(double %885, double %934, double %938)
  %940 = fadd double %931, %937
  %941 = fadd double %932, %939
  %942 = load <2 x double>, ptr %902, align 8, !tbaa !13
  %943 = extractelement <2 x double> %942, i64 1
  %944 = fmul double %943, %890
  %945 = extractelement <2 x double> %942, i64 0
  %946 = call double @llvm.fmuladd.f64(double %888, double %945, double %944)
  %947 = fmul double %945, %889
  %948 = call double @llvm.fmuladd.f64(double %888, double %943, double %947)
  %949 = fadd double %940, %946
  %950 = fadd double %948, %941
  %951 = fneg double %950
  %952 = insertelement <2 x double> poison, double %950, i64 0
  %953 = insertelement <2 x double> %952, double %951, i64 1
  %954 = fmul <2 x double> %741, %953
  %955 = shufflevector <2 x double> %954, <2 x double> poison, <2 x i32> <i32 1, i32 0>
  %956 = insertelement <2 x double> poison, double %949, i64 0
  %957 = shufflevector <2 x double> %956, <2 x double> poison, <2 x i32> zeroinitializer
  %958 = call <2 x double> @llvm.fmuladd.v2f64(<2 x double> %957, <2 x double> %741, <2 x double> %955)
  %959 = fsub <2 x double> %903, %958
  store <2 x double> %959, ptr %897, align 8, !tbaa !13
  %960 = fmul <2 x double> %766, %953
  %961 = shufflevector <2 x double> %960, <2 x double> poison, <2 x i32> <i32 1, i32 0>
  %962 = call <2 x double> @llvm.fmuladd.v2f64(<2 x double> %957, <2 x double> %766, <2 x double> %961)
  %963 = fsub <2 x double> %904, %962
  store <2 x double> %963, ptr %898, align 8, !tbaa !13
  %964 = fmul <2 x double> %791, %953
  %965 = shufflevector <2 x double> %964, <2 x double> poison, <2 x i32> <i32 1, i32 0>
  %966 = call <2 x double> @llvm.fmuladd.v2f64(<2 x double> %957, <2 x double> %791, <2 x double> %965)
  %967 = fsub <2 x double> %915, %966
  store <2 x double> %967, ptr %899, align 8, !tbaa !13
  %968 = fmul <2 x double> %816, %953
  %969 = shufflevector <2 x double> %968, <2 x double> poison, <2 x i32> <i32 1, i32 0>
  %970 = call <2 x double> @llvm.fmuladd.v2f64(<2 x double> %957, <2 x double> %816, <2 x double> %969)
  %971 = fsub <2 x double> %924, %970
  store <2 x double> %971, ptr %900, align 8, !tbaa !13
  %972 = fmul <2 x double> %841, %953
  %973 = shufflevector <2 x double> %972, <2 x double> poison, <2 x i32> <i32 1, i32 0>
  %974 = call <2 x double> @llvm.fmuladd.v2f64(<2 x double> %957, <2 x double> %841, <2 x double> %973)
  %975 = fsub <2 x double> %933, %974
  store <2 x double> %975, ptr %901, align 8, !tbaa !13
  %976 = fmul <2 x double> %866, %953
  %977 = shufflevector <2 x double> %976, <2 x double> poison, <2 x i32> <i32 1, i32 0>
  %978 = call <2 x double> @llvm.fmuladd.v2f64(<2 x double> %957, <2 x double> %866, <2 x double> %977)
  %979 = fsub <2 x double> %942, %978
  store <2 x double> %979, ptr %902, align 8, !tbaa !13
  %indvars.iv.next4664 = add nuw nsw i64 %indvars.iv4663, 1
  %exitcond4667.not = icmp eq i64 %indvars.iv.next4664, %wide.trip.count4666
  br i1 %exitcond4667.not, label %.loopexit, label %894, !llvm.loop !20

980:                                              ; preds = %33
  %981 = tail call { double, double } @Cd(ptr noundef %3)
  %982 = extractvalue { double, double } %981, 0
  %983 = extractvalue { double, double } %981, 1
  %984 = fneg double %983
  %985 = call ptr @_pCd(ptr noundef nonnull %9)
  %986 = getelementptr inbounds i8, ptr %985, i64 8
  store double %982, ptr %985, align 8
  store double %984, ptr %986, align 8
  %987 = load <2 x double>, ptr %9, align 16, !tbaa !13
  store <2 x double> %987, ptr %12, align 16, !tbaa !13
  %988 = call { double, double } @Cd(ptr noundef nonnull %12)
  %989 = extractvalue { double, double } %988, 0
  %990 = extractvalue { double, double } %988, 1
  %991 = fneg double %990
  %992 = call ptr @_pCd(ptr noundef nonnull %10)
  %993 = getelementptr inbounds i8, ptr %992, i64 8
  store double %989, ptr %992, align 8
  store double %991, ptr %993, align 8
  %994 = load double, ptr %4, align 8, !tbaa !9
  %995 = getelementptr inbounds i8, ptr %4, i64 8
  %996 = load double, ptr %995, align 8, !tbaa !12
  %997 = fneg double %996
  %998 = load <2 x double>, ptr %10, align 16, !tbaa !13
  %999 = insertelement <2 x double> poison, double %996, i64 0
  %1000 = insertelement <2 x double> %999, double %997, i64 1
  %1001 = fmul <2 x double> %998, %1000
  %1002 = shufflevector <2 x double> %1001, <2 x double> poison, <2 x i32> <i32 1, i32 0>
  %1003 = insertelement <2 x double> poison, double %994, i64 0
  %1004 = shufflevector <2 x double> %1003, <2 x double> poison, <2 x i32> zeroinitializer
  %1005 = call <2 x double> @llvm.fmuladd.v2f64(<2 x double> %1004, <2 x double> %998, <2 x double> %1002)
  store <2 x double> %1005, ptr %9, align 16, !tbaa !13
  %1006 = getelementptr inbounds i8, ptr %3, i64 16
  %1007 = call { double, double } @Cd(ptr noundef nonnull %1006)
  %1008 = extractvalue { double, double } %1007, 0
  %1009 = extractvalue { double, double } %1007, 1
  %1010 = fneg double %1009
  %1011 = call ptr @_pCd(ptr noundef nonnull %9)
  %1012 = getelementptr inbounds i8, ptr %1011, i64 8
  store double %1008, ptr %1011, align 8
  store double %1010, ptr %1012, align 8
  %1013 = load <2 x double>, ptr %9, align 16, !tbaa !13
  store <2 x double> %1013, ptr %13, align 16, !tbaa !13
  %1014 = call { double, double } @Cd(ptr noundef nonnull %13)
  %1015 = extractvalue { double, double } %1014, 0
  %1016 = extractvalue { double, double } %1014, 1
  %1017 = fneg double %1016
  %1018 = call ptr @_pCd(ptr noundef nonnull %10)
  %1019 = getelementptr inbounds i8, ptr %1018, i64 8
  store double %1015, ptr %1018, align 8
  store double %1017, ptr %1019, align 8
  %1020 = load double, ptr %4, align 8, !tbaa !9
  %1021 = load double, ptr %995, align 8, !tbaa !12
  %1022 = fneg double %1021
  %1023 = load <2 x double>, ptr %10, align 16, !tbaa !13
  %1024 = insertelement <2 x double> poison, double %1021, i64 0
  %1025 = insertelement <2 x double> %1024, double %1022, i64 1
  %1026 = fmul <2 x double> %1023, %1025
  %1027 = shufflevector <2 x double> %1026, <2 x double> poison, <2 x i32> <i32 1, i32 0>
  %1028 = insertelement <2 x double> poison, double %1020, i64 0
  %1029 = shufflevector <2 x double> %1028, <2 x double> poison, <2 x i32> zeroinitializer
  %1030 = call <2 x double> @llvm.fmuladd.v2f64(<2 x double> %1029, <2 x double> %1023, <2 x double> %1027)
  store <2 x double> %1030, ptr %9, align 16, !tbaa !13
  %1031 = getelementptr inbounds i8, ptr %3, i64 32
  %1032 = call { double, double } @Cd(ptr noundef nonnull %1031)
  %1033 = extractvalue { double, double } %1032, 0
  %1034 = extractvalue { double, double } %1032, 1
  %1035 = fneg double %1034
  %1036 = call ptr @_pCd(ptr noundef nonnull %9)
  %1037 = getelementptr inbounds i8, ptr %1036, i64 8
  store double %1033, ptr %1036, align 8
  store double %1035, ptr %1037, align 8
  %1038 = load <2 x double>, ptr %9, align 16, !tbaa !13
  store <2 x double> %1038, ptr %14, align 16, !tbaa !13
  %1039 = call { double, double } @Cd(ptr noundef nonnull %14)
  %1040 = extractvalue { double, double } %1039, 0
  %1041 = extractvalue { double, double } %1039, 1
  %1042 = fneg double %1041
  %1043 = call ptr @_pCd(ptr noundef nonnull %10)
  %1044 = getelementptr inbounds i8, ptr %1043, i64 8
  store double %1040, ptr %1043, align 8
  store double %1042, ptr %1044, align 8
  %1045 = load double, ptr %4, align 8, !tbaa !9
  %1046 = load double, ptr %995, align 8, !tbaa !12
  %1047 = fneg double %1046
  %1048 = load <2 x double>, ptr %10, align 16, !tbaa !13
  %1049 = insertelement <2 x double> poison, double %1046, i64 0
  %1050 = insertelement <2 x double> %1049, double %1047, i64 1
  %1051 = fmul <2 x double> %1048, %1050
  %1052 = shufflevector <2 x double> %1051, <2 x double> poison, <2 x i32> <i32 1, i32 0>
  %1053 = insertelement <2 x double> poison, double %1045, i64 0
  %1054 = shufflevector <2 x double> %1053, <2 x double> poison, <2 x i32> zeroinitializer
  %1055 = call <2 x double> @llvm.fmuladd.v2f64(<2 x double> %1054, <2 x double> %1048, <2 x double> %1052)
  store <2 x double> %1055, ptr %9, align 16, !tbaa !13
  %1056 = getelementptr inbounds i8, ptr %3, i64 48
  %1057 = call { double, double } @Cd(ptr noundef nonnull %1056)
  %1058 = extractvalue { double, double } %1057, 0
  %1059 = extractvalue { double, double } %1057, 1
  %1060 = fneg double %1059
  %1061 = call ptr @_pCd(ptr noundef nonnull %9)
  %1062 = getelementptr inbounds i8, ptr %1061, i64 8
  store double %1058, ptr %1061, align 8
  store double %1060, ptr %1062, align 8
  %1063 = load <2 x double>, ptr %9, align 16, !tbaa !13
  store <2 x double> %1063, ptr %15, align 16, !tbaa !13
  %1064 = call { double, double } @Cd(ptr noundef nonnull %15)
  %1065 = extractvalue { double, double } %1064, 0
  %1066 = extractvalue { double, double } %1064, 1
  %1067 = fneg double %1066
  %1068 = call ptr @_pCd(ptr noundef nonnull %10)
  %1069 = getelementptr inbounds i8, ptr %1068, i64 8
  store double %1065, ptr %1068, align 8
  store double %1067, ptr %1069, align 8
  %1070 = load double, ptr %4, align 8, !tbaa !9
  %1071 = load double, ptr %995, align 8, !tbaa !12
  %1072 = fneg double %1071
  %1073 = load <2 x double>, ptr %10, align 16, !tbaa !13
  %1074 = insertelement <2 x double> poison, double %1071, i64 0
  %1075 = insertelement <2 x double> %1074, double %1072, i64 1
  %1076 = fmul <2 x double> %1073, %1075
  %1077 = shufflevector <2 x double> %1076, <2 x double> poison, <2 x i32> <i32 1, i32 0>
  %1078 = insertelement <2 x double> poison, double %1070, i64 0
  %1079 = shufflevector <2 x double> %1078, <2 x double> poison, <2 x i32> zeroinitializer
  %1080 = call <2 x double> @llvm.fmuladd.v2f64(<2 x double> %1079, <2 x double> %1073, <2 x double> %1077)
  store <2 x double> %1080, ptr %9, align 16, !tbaa !13
  %1081 = getelementptr inbounds i8, ptr %3, i64 64
  %1082 = call { double, double } @Cd(ptr noundef nonnull %1081)
  %1083 = extractvalue { double, double } %1082, 0
  %1084 = extractvalue { double, double } %1082, 1
  %1085 = fneg double %1084
  %1086 = call ptr @_pCd(ptr noundef nonnull %9)
  %1087 = getelementptr inbounds i8, ptr %1086, i64 8
  store double %1083, ptr %1086, align 8
  store double %1085, ptr %1087, align 8
  %1088 = load <2 x double>, ptr %9, align 16, !tbaa !13
  store <2 x double> %1088, ptr %16, align 16, !tbaa !13
  %1089 = call { double, double } @Cd(ptr noundef nonnull %16)
  %1090 = extractvalue { double, double } %1089, 0
  %1091 = extractvalue { double, double } %1089, 1
  %1092 = fneg double %1091
  %1093 = call ptr @_pCd(ptr noundef nonnull %10)
  %1094 = getelementptr inbounds i8, ptr %1093, i64 8
  store double %1090, ptr %1093, align 8
  store double %1092, ptr %1094, align 8
  %1095 = load double, ptr %4, align 8, !tbaa !9
  %1096 = load double, ptr %995, align 8, !tbaa !12
  %1097 = fneg double %1096
  %1098 = load <2 x double>, ptr %10, align 16, !tbaa !13
  %1099 = insertelement <2 x double> poison, double %1096, i64 0
  %1100 = insertelement <2 x double> %1099, double %1097, i64 1
  %1101 = fmul <2 x double> %1098, %1100
  %1102 = shufflevector <2 x double> %1101, <2 x double> poison, <2 x i32> <i32 1, i32 0>
  %1103 = insertelement <2 x double> poison, double %1095, i64 0
  %1104 = shufflevector <2 x double> %1103, <2 x double> poison, <2 x i32> zeroinitializer
  %1105 = call <2 x double> @llvm.fmuladd.v2f64(<2 x double> %1104, <2 x double> %1098, <2 x double> %1102)
  store <2 x double> %1105, ptr %9, align 16, !tbaa !13
  %1106 = getelementptr inbounds i8, ptr %3, i64 80
  %1107 = call { double, double } @Cd(ptr noundef nonnull %1106)
  %1108 = extractvalue { double, double } %1107, 0
  %1109 = extractvalue { double, double } %1107, 1
  %1110 = fneg double %1109
  %1111 = call ptr @_pCd(ptr noundef nonnull %9)
  %1112 = getelementptr inbounds i8, ptr %1111, i64 8
  store double %1108, ptr %1111, align 8
  store double %1110, ptr %1112, align 8
  %1113 = load <2 x double>, ptr %9, align 16, !tbaa !13
  store <2 x double> %1113, ptr %17, align 16, !tbaa !13
  %1114 = call { double, double } @Cd(ptr noundef nonnull %17)
  %1115 = extractvalue { double, double } %1114, 0
  %1116 = extractvalue { double, double } %1114, 1
  %1117 = fneg double %1116
  %1118 = call ptr @_pCd(ptr noundef nonnull %10)
  %1119 = getelementptr inbounds i8, ptr %1118, i64 8
  store double %1115, ptr %1118, align 8
  store double %1117, ptr %1119, align 8
  %1120 = load double, ptr %4, align 8, !tbaa !9
  %1121 = load double, ptr %995, align 8, !tbaa !12
  %1122 = fneg double %1121
  %1123 = load <2 x double>, ptr %10, align 16, !tbaa !13
  %1124 = insertelement <2 x double> poison, double %1121, i64 0
  %1125 = insertelement <2 x double> %1124, double %1122, i64 1
  %1126 = fmul <2 x double> %1123, %1125
  %1127 = shufflevector <2 x double> %1126, <2 x double> poison, <2 x i32> <i32 1, i32 0>
  %1128 = insertelement <2 x double> poison, double %1120, i64 0
  %1129 = shufflevector <2 x double> %1128, <2 x double> poison, <2 x i32> zeroinitializer
  %1130 = call <2 x double> @llvm.fmuladd.v2f64(<2 x double> %1129, <2 x double> %1123, <2 x double> %1127)
  store <2 x double> %1130, ptr %9, align 16, !tbaa !13
  %1131 = getelementptr inbounds i8, ptr %3, i64 96
  %1132 = call { double, double } @Cd(ptr noundef nonnull %1131)
  %1133 = extractvalue { double, double } %1132, 0
  %1134 = extractvalue { double, double } %1132, 1
  %1135 = fneg double %1134
  %1136 = call ptr @_pCd(ptr noundef nonnull %9)
  %1137 = getelementptr inbounds i8, ptr %1136, i64 8
  store double %1133, ptr %1136, align 8
  store double %1135, ptr %1137, align 8
  %1138 = load <2 x double>, ptr %9, align 16, !tbaa !13
  store <2 x double> %1138, ptr %18, align 16, !tbaa !13
  %1139 = call { double, double } @Cd(ptr noundef nonnull %18)
  %1140 = extractvalue { double, double } %1139, 0
  %1141 = extractvalue { double, double } %1139, 1
  %1142 = fneg double %1141
  %1143 = call ptr @_pCd(ptr noundef nonnull %10)
  %1144 = getelementptr inbounds i8, ptr %1143, i64 8
  store double %1140, ptr %1143, align 8
  store double %1142, ptr %1144, align 8
  %1145 = load double, ptr %4, align 8, !tbaa !9
  %1146 = load double, ptr %995, align 8, !tbaa !12
  %1147 = fneg double %1146
  %1148 = load <2 x double>, ptr %10, align 16, !tbaa !13
  %1149 = insertelement <2 x double> poison, double %1146, i64 0
  %1150 = insertelement <2 x double> %1149, double %1147, i64 1
  %1151 = fmul <2 x double> %1148, %1150
  %1152 = shufflevector <2 x double> %1151, <2 x double> poison, <2 x i32> <i32 1, i32 0>
  %1153 = insertelement <2 x double> poison, double %1145, i64 0
  %1154 = shufflevector <2 x double> %1153, <2 x double> poison, <2 x i32> zeroinitializer
  %1155 = call <2 x double> @llvm.fmuladd.v2f64(<2 x double> %1154, <2 x double> %1148, <2 x double> %1152)
  %1156 = load i32, ptr %2, align 4, !tbaa !5
  %.not42954360 = icmp slt i32 %1156, 1
  br i1 %.not42954360, label %.loopexit, label %.lr.ph4362

.lr.ph4362:                                       ; preds = %980
  %1157 = getelementptr inbounds i8, ptr %18, i64 8
  %1158 = getelementptr inbounds i8, ptr %17, i64 8
  %1159 = getelementptr inbounds i8, ptr %16, i64 8
  %1160 = getelementptr inbounds i8, ptr %15, i64 8
  %1161 = getelementptr inbounds i8, ptr %14, i64 8
  %1162 = getelementptr inbounds i8, ptr %13, i64 8
  %1163 = load <2 x double>, ptr %12, align 16
  %1164 = shufflevector <2 x double> %1163, <2 x double> poison, <2 x i32> <i32 1, i32 poison>
  %1165 = load double, ptr %13, align 16, !tbaa !9
  %1166 = load double, ptr %1162, align 8, !tbaa !12
  %1167 = insertelement <2 x double> %1164, double %1166, i64 1
  %1168 = fneg <2 x double> %1167
  %1169 = load double, ptr %14, align 16, !tbaa !9
  %1170 = load double, ptr %1161, align 8, !tbaa !12
  %1171 = fneg double %1170
  %1172 = load double, ptr %15, align 16, !tbaa !9
  %1173 = load double, ptr %1160, align 8, !tbaa !12
  %1174 = fneg double %1173
  %1175 = load double, ptr %16, align 16, !tbaa !9
  %1176 = load double, ptr %1159, align 8, !tbaa !12
  %1177 = fneg double %1176
  %1178 = load double, ptr %17, align 16, !tbaa !9
  %1179 = load double, ptr %1158, align 8, !tbaa !12
  %1180 = fneg double %1179
  %1181 = load double, ptr %18, align 16, !tbaa !9
  %1182 = load double, ptr %1157, align 8, !tbaa !12
  %1183 = fneg double %1182
  %1184 = sext i32 %22 to i64
  %1185 = add nuw i32 %1156, 1
  %wide.trip.count4661 = zext i32 %1185 to i64
  %1186 = insertelement <2 x double> %1163, double %1165, i64 1
  br label %1187

1187:                                             ; preds = %.lr.ph4362, %1187
  %indvars.iv4658 = phi i64 [ 1, %.lr.ph4362 ], [ %indvars.iv.next4659, %1187 ]
  %1188 = mul nsw i64 %indvars.iv4658, %1184
  %1189 = getelementptr %struct.doublecomplex, ptr %24, i64 %1188
  %1190 = getelementptr i8, ptr %1189, i64 16
  %1191 = getelementptr i8, ptr %1189, i64 32
  %1192 = getelementptr i8, ptr %1189, i64 48
  %1193 = getelementptr i8, ptr %1189, i64 64
  %1194 = getelementptr i8, ptr %1189, i64 80
  %1195 = getelementptr i8, ptr %1189, i64 96
  %1196 = getelementptr i8, ptr %1189, i64 112
  %1197 = load <2 x double>, ptr %1190, align 8, !tbaa !13
  %1198 = load <2 x double>, ptr %1191, align 8, !tbaa !13
  %1199 = shufflevector <2 x double> %1197, <2 x double> %1198, <2 x i32> <i32 1, i32 3>
  %1200 = fmul <2 x double> %1199, %1168
  %1201 = shufflevector <2 x double> %1197, <2 x double> %1198, <2 x i32> <i32 0, i32 2>
  %1202 = call <2 x double> @llvm.fmuladd.v2f64(<2 x double> %1186, <2 x double> %1201, <2 x double> %1200)
  %1203 = fmul <2 x double> %1201, %1167
  %1204 = call <2 x double> @llvm.fmuladd.v2f64(<2 x double> %1186, <2 x double> %1199, <2 x double> %1203)
  %shift6658 = shufflevector <2 x double> %1202, <2 x double> poison, <2 x i32> <i32 1, i32 poison>
  %1205 = fadd <2 x double> %1202, %shift6658
  %1206 = extractelement <2 x double> %1205, i64 0
  %shift6659 = shufflevector <2 x double> %1204, <2 x double> poison, <2 x i32> <i32 1, i32 poison>
  %1207 = fadd <2 x double> %1204, %shift6659
  %1208 = extractelement <2 x double> %1207, i64 0
  %1209 = load <2 x double>, ptr %1192, align 8, !tbaa !13
  %1210 = extractelement <2 x double> %1209, i64 1
  %1211 = fmul double %1210, %1171
  %1212 = extractelement <2 x double> %1209, i64 0
  %1213 = call double @llvm.fmuladd.f64(double %1169, double %1212, double %1211)
  %1214 = fmul double %1212, %1170
  %1215 = call double @llvm.fmuladd.f64(double %1169, double %1210, double %1214)
  %1216 = fadd double %1206, %1213
  %1217 = fadd double %1208, %1215
  %1218 = load <2 x double>, ptr %1193, align 8, !tbaa !13
  %1219 = extractelement <2 x double> %1218, i64 1
  %1220 = fmul double %1219, %1174
  %1221 = extractelement <2 x double> %1218, i64 0
  %1222 = call double @llvm.fmuladd.f64(double %1172, double %1221, double %1220)
  %1223 = fmul double %1221, %1173
  %1224 = call double @llvm.fmuladd.f64(double %1172, double %1219, double %1223)
  %1225 = fadd double %1216, %1222
  %1226 = fadd double %1217, %1224
  %1227 = load <2 x double>, ptr %1194, align 8, !tbaa !13
  %1228 = extractelement <2 x double> %1227, i64 1
  %1229 = fmul double %1228, %1177
  %1230 = extractelement <2 x double> %1227, i64 0
  %1231 = call double @llvm.fmuladd.f64(double %1175, double %1230, double %1229)
  %1232 = fmul double %1230, %1176
  %1233 = call double @llvm.fmuladd.f64(double %1175, double %1228, double %1232)
  %1234 = fadd double %1225, %1231
  %1235 = fadd double %1226, %1233
  %1236 = load <2 x double>, ptr %1195, align 8, !tbaa !13
  %1237 = extractelement <2 x double> %1236, i64 1
  %1238 = fmul double %1237, %1180
  %1239 = extractelement <2 x double> %1236, i64 0
  %1240 = call double @llvm.fmuladd.f64(double %1178, double %1239, double %1238)
  %1241 = fmul double %1239, %1179
  %1242 = call double @llvm.fmuladd.f64(double %1178, double %1237, double %1241)
  %1243 = fadd double %1234, %1240
  %1244 = fadd double %1235, %1242
  %1245 = load <2 x double>, ptr %1196, align 8, !tbaa !13
  %1246 = extractelement <2 x double> %1245, i64 1
  %1247 = fmul double %1246, %1183
  %1248 = extractelement <2 x double> %1245, i64 0
  %1249 = call double @llvm.fmuladd.f64(double %1181, double %1248, double %1247)
  %1250 = fmul double %1248, %1182
  %1251 = call double @llvm.fmuladd.f64(double %1181, double %1246, double %1250)
  %1252 = fadd double %1243, %1249
  %1253 = fadd double %1251, %1244
  %1254 = fneg double %1253
  %1255 = insertelement <2 x double> poison, double %1253, i64 0
  %1256 = insertelement <2 x double> %1255, double %1254, i64 1
  %1257 = fmul <2 x double> %1005, %1256
  %1258 = shufflevector <2 x double> %1257, <2 x double> poison, <2 x i32> <i32 1, i32 0>
  %1259 = insertelement <2 x double> poison, double %1252, i64 0
  %1260 = shufflevector <2 x double> %1259, <2 x double> poison, <2 x i32> zeroinitializer
  %1261 = call <2 x double> @llvm.fmuladd.v2f64(<2 x double> %1260, <2 x double> %1005, <2 x double> %1258)
  %1262 = fsub <2 x double> %1197, %1261
  store <2 x double> %1262, ptr %1190, align 8, !tbaa !13
  %1263 = fmul <2 x double> %1030, %1256
  %1264 = shufflevector <2 x double> %1263, <2 x double> poison, <2 x i32> <i32 1, i32 0>
  %1265 = call <2 x double> @llvm.fmuladd.v2f64(<2 x double> %1260, <2 x double> %1030, <2 x double> %1264)
  %1266 = fsub <2 x double> %1198, %1265
  store <2 x double> %1266, ptr %1191, align 8, !tbaa !13
  %1267 = fmul <2 x double> %1055, %1256
  %1268 = shufflevector <2 x double> %1267, <2 x double> poison, <2 x i32> <i32 1, i32 0>
  %1269 = call <2 x double> @llvm.fmuladd.v2f64(<2 x double> %1260, <2 x double> %1055, <2 x double> %1268)
  %1270 = fsub <2 x double> %1209, %1269
  store <2 x double> %1270, ptr %1192, align 8, !tbaa !13
  %1271 = fmul <2 x double> %1080, %1256
  %1272 = shufflevector <2 x double> %1271, <2 x double> poison, <2 x i32> <i32 1, i32 0>
  %1273 = call <2 x double> @llvm.fmuladd.v2f64(<2 x double> %1260, <2 x double> %1080, <2 x double> %1272)
  %1274 = fsub <2 x double> %1218, %1273
  store <2 x double> %1274, ptr %1193, align 8, !tbaa !13
  %1275 = fmul <2 x double> %1105, %1256
  %1276 = shufflevector <2 x double> %1275, <2 x double> poison, <2 x i32> <i32 1, i32 0>
  %1277 = call <2 x double> @llvm.fmuladd.v2f64(<2 x double> %1260, <2 x double> %1105, <2 x double> %1276)
  %1278 = fsub <2 x double> %1227, %1277
  store <2 x double> %1278, ptr %1194, align 8, !tbaa !13
  %1279 = fmul <2 x double> %1130, %1256
  %1280 = shufflevector <2 x double> %1279, <2 x double> poison, <2 x i32> <i32 1, i32 0>
  %1281 = call <2 x double> @llvm.fmuladd.v2f64(<2 x double> %1260, <2 x double> %1130, <2 x double> %1280)
  %1282 = fsub <2 x double> %1236, %1281
  store <2 x double> %1282, ptr %1195, align 8, !tbaa !13
  %1283 = fmul <2 x double> %1155, %1256
  %1284 = shufflevector <2 x double> %1283, <2 x double> poison, <2 x i32> <i32 1, i32 0>
  %1285 = call <2 x double> @llvm.fmuladd.v2f64(<2 x double> %1260, <2 x double> %1155, <2 x double> %1284)
  %1286 = fsub <2 x double> %1245, %1285
  store <2 x double> %1286, ptr %1196, align 8, !tbaa !13
  %indvars.iv.next4659 = add nuw nsw i64 %indvars.iv4658, 1
  %exitcond4662.not = icmp eq i64 %indvars.iv.next4659, %wide.trip.count4661
  br i1 %exitcond4662.not, label %.loopexit, label %1187, !llvm.loop !21

1287:                                             ; preds = %33
  %1288 = tail call { double, double } @Cd(ptr noundef %3)
  %1289 = extractvalue { double, double } %1288, 0
  %1290 = extractvalue { double, double } %1288, 1
  %1291 = fneg double %1290
  %1292 = call ptr @_pCd(ptr noundef nonnull %9)
  %1293 = getelementptr inbounds i8, ptr %1292, i64 8
  store double %1289, ptr %1292, align 8
  store double %1291, ptr %1293, align 8
  %1294 = load <2 x double>, ptr %9, align 16, !tbaa !13
  store <2 x double> %1294, ptr %12, align 16, !tbaa !13
  %1295 = call { double, double } @Cd(ptr noundef nonnull %12)
  %1296 = extractvalue { double, double } %1295, 0
  %1297 = extractvalue { double, double } %1295, 1
  %1298 = fneg double %1297
  %1299 = call ptr @_pCd(ptr noundef nonnull %10)
  %1300 = getelementptr inbounds i8, ptr %1299, i64 8
  store double %1296, ptr %1299, align 8
  store double %1298, ptr %1300, align 8
  %1301 = load double, ptr %4, align 8, !tbaa !9
  %1302 = getelementptr inbounds i8, ptr %4, i64 8
  %1303 = load double, ptr %1302, align 8, !tbaa !12
  %1304 = fneg double %1303
  %1305 = load <2 x double>, ptr %10, align 16, !tbaa !13
  %1306 = insertelement <2 x double> poison, double %1303, i64 0
  %1307 = insertelement <2 x double> %1306, double %1304, i64 1
  %1308 = fmul <2 x double> %1305, %1307
  %1309 = shufflevector <2 x double> %1308, <2 x double> poison, <2 x i32> <i32 1, i32 0>
  %1310 = insertelement <2 x double> poison, double %1301, i64 0
  %1311 = shufflevector <2 x double> %1310, <2 x double> poison, <2 x i32> zeroinitializer
  %1312 = call <2 x double> @llvm.fmuladd.v2f64(<2 x double> %1311, <2 x double> %1305, <2 x double> %1309)
  store <2 x double> %1312, ptr %9, align 16, !tbaa !13
  %1313 = getelementptr inbounds i8, ptr %3, i64 16
  %1314 = call { double, double } @Cd(ptr noundef nonnull %1313)
  %1315 = extractvalue { double, double } %1314, 0
  %1316 = extractvalue { double, double } %1314, 1
  %1317 = fneg double %1316
  %1318 = call ptr @_pCd(ptr noundef nonnull %9)
  %1319 = getelementptr inbounds i8, ptr %1318, i64 8
  store double %1315, ptr %1318, align 8
  store double %1317, ptr %1319, align 8
  %1320 = load <2 x double>, ptr %9, align 16, !tbaa !13
  store <2 x double> %1320, ptr %13, align 16, !tbaa !13
  %1321 = call { double, double } @Cd(ptr noundef nonnull %13)
  %1322 = extractvalue { double, double } %1321, 0
  %1323 = extractvalue { double, double } %1321, 1
  %1324 = fneg double %1323
  %1325 = call ptr @_pCd(ptr noundef nonnull %10)
  %1326 = getelementptr inbounds i8, ptr %1325, i64 8
  store double %1322, ptr %1325, align 8
  store double %1324, ptr %1326, align 8
  %1327 = load double, ptr %4, align 8, !tbaa !9
  %1328 = load double, ptr %1302, align 8, !tbaa !12
  %1329 = fneg double %1328
  %1330 = load <2 x double>, ptr %10, align 16, !tbaa !13
  %1331 = insertelement <2 x double> poison, double %1328, i64 0
  %1332 = insertelement <2 x double> %1331, double %1329, i64 1
  %1333 = fmul <2 x double> %1330, %1332
  %1334 = shufflevector <2 x double> %1333, <2 x double> poison, <2 x i32> <i32 1, i32 0>
  %1335 = insertelement <2 x double> poison, double %1327, i64 0
  %1336 = shufflevector <2 x double> %1335, <2 x double> poison, <2 x i32> zeroinitializer
  %1337 = call <2 x double> @llvm.fmuladd.v2f64(<2 x double> %1336, <2 x double> %1330, <2 x double> %1334)
  store <2 x double> %1337, ptr %9, align 16, !tbaa !13
  %1338 = getelementptr inbounds i8, ptr %3, i64 32
  %1339 = call { double, double } @Cd(ptr noundef nonnull %1338)
  %1340 = extractvalue { double, double } %1339, 0
  %1341 = extractvalue { double, double } %1339, 1
  %1342 = fneg double %1341
  %1343 = call ptr @_pCd(ptr noundef nonnull %9)
  %1344 = getelementptr inbounds i8, ptr %1343, i64 8
  store double %1340, ptr %1343, align 8
  store double %1342, ptr %1344, align 8
  %1345 = load <2 x double>, ptr %9, align 16, !tbaa !13
  store <2 x double> %1345, ptr %14, align 16, !tbaa !13
  %1346 = call { double, double } @Cd(ptr noundef nonnull %14)
  %1347 = extractvalue { double, double } %1346, 0
  %1348 = extractvalue { double, double } %1346, 1
  %1349 = fneg double %1348
  %1350 = call ptr @_pCd(ptr noundef nonnull %10)
  %1351 = getelementptr inbounds i8, ptr %1350, i64 8
  store double %1347, ptr %1350, align 8
  store double %1349, ptr %1351, align 8
  %1352 = load double, ptr %4, align 8, !tbaa !9
  %1353 = load double, ptr %1302, align 8, !tbaa !12
  %1354 = fneg double %1353
  %1355 = load <2 x double>, ptr %10, align 16, !tbaa !13
  %1356 = insertelement <2 x double> poison, double %1353, i64 0
  %1357 = insertelement <2 x double> %1356, double %1354, i64 1
  %1358 = fmul <2 x double> %1355, %1357
  %1359 = shufflevector <2 x double> %1358, <2 x double> poison, <2 x i32> <i32 1, i32 0>
  %1360 = insertelement <2 x double> poison, double %1352, i64 0
  %1361 = shufflevector <2 x double> %1360, <2 x double> poison, <2 x i32> zeroinitializer
  %1362 = call <2 x double> @llvm.fmuladd.v2f64(<2 x double> %1361, <2 x double> %1355, <2 x double> %1359)
  store <2 x double> %1362, ptr %9, align 16, !tbaa !13
  %1363 = getelementptr inbounds i8, ptr %3, i64 48
  %1364 = call { double, double } @Cd(ptr noundef nonnull %1363)
  %1365 = extractvalue { double, double } %1364, 0
  %1366 = extractvalue { double, double } %1364, 1
  %1367 = fneg double %1366
  %1368 = call ptr @_pCd(ptr noundef nonnull %9)
  %1369 = getelementptr inbounds i8, ptr %1368, i64 8
  store double %1365, ptr %1368, align 8
  store double %1367, ptr %1369, align 8
  %1370 = load <2 x double>, ptr %9, align 16, !tbaa !13
  store <2 x double> %1370, ptr %15, align 16, !tbaa !13
  %1371 = call { double, double } @Cd(ptr noundef nonnull %15)
  %1372 = extractvalue { double, double } %1371, 0
  %1373 = extractvalue { double, double } %1371, 1
  %1374 = fneg double %1373
  %1375 = call ptr @_pCd(ptr noundef nonnull %10)
  %1376 = getelementptr inbounds i8, ptr %1375, i64 8
  store double %1372, ptr %1375, align 8
  store double %1374, ptr %1376, align 8
  %1377 = load double, ptr %4, align 8, !tbaa !9
  %1378 = load double, ptr %1302, align 8, !tbaa !12
  %1379 = fneg double %1378
  %1380 = load <2 x double>, ptr %10, align 16, !tbaa !13
  %1381 = insertelement <2 x double> poison, double %1378, i64 0
  %1382 = insertelement <2 x double> %1381, double %1379, i64 1
  %1383 = fmul <2 x double> %1380, %1382
  %1384 = shufflevector <2 x double> %1383, <2 x double> poison, <2 x i32> <i32 1, i32 0>
  %1385 = insertelement <2 x double> poison, double %1377, i64 0
  %1386 = shufflevector <2 x double> %1385, <2 x double> poison, <2 x i32> zeroinitializer
  %1387 = call <2 x double> @llvm.fmuladd.v2f64(<2 x double> %1386, <2 x double> %1380, <2 x double> %1384)
  store <2 x double> %1387, ptr %9, align 16, !tbaa !13
  %1388 = getelementptr inbounds i8, ptr %3, i64 64
  %1389 = call { double, double } @Cd(ptr noundef nonnull %1388)
  %1390 = extractvalue { double, double } %1389, 0
  %1391 = extractvalue { double, double } %1389, 1
  %1392 = fneg double %1391
  %1393 = call ptr @_pCd(ptr noundef nonnull %9)
  %1394 = getelementptr inbounds i8, ptr %1393, i64 8
  store double %1390, ptr %1393, align 8
  store double %1392, ptr %1394, align 8
  %1395 = load <2 x double>, ptr %9, align 16, !tbaa !13
  store <2 x double> %1395, ptr %16, align 16, !tbaa !13
  %1396 = call { double, double } @Cd(ptr noundef nonnull %16)
  %1397 = extractvalue { double, double } %1396, 0
  %1398 = extractvalue { double, double } %1396, 1
  %1399 = fneg double %1398
  %1400 = call ptr @_pCd(ptr noundef nonnull %10)
  %1401 = getelementptr inbounds i8, ptr %1400, i64 8
  store double %1397, ptr %1400, align 8
  store double %1399, ptr %1401, align 8
  %1402 = load double, ptr %4, align 8, !tbaa !9
  %1403 = load double, ptr %1302, align 8, !tbaa !12
  %1404 = fneg double %1403
  %1405 = load <2 x double>, ptr %10, align 16, !tbaa !13
  %1406 = insertelement <2 x double> poison, double %1403, i64 0
  %1407 = insertelement <2 x double> %1406, double %1404, i64 1
  %1408 = fmul <2 x double> %1405, %1407
  %1409 = shufflevector <2 x double> %1408, <2 x double> poison, <2 x i32> <i32 1, i32 0>
  %1410 = insertelement <2 x double> poison, double %1402, i64 0
  %1411 = shufflevector <2 x double> %1410, <2 x double> poison, <2 x i32> zeroinitializer
  %1412 = call <2 x double> @llvm.fmuladd.v2f64(<2 x double> %1411, <2 x double> %1405, <2 x double> %1409)
  store <2 x double> %1412, ptr %9, align 16, !tbaa !13
  %1413 = getelementptr inbounds i8, ptr %3, i64 80
  %1414 = call { double, double } @Cd(ptr noundef nonnull %1413)
  %1415 = extractvalue { double, double } %1414, 0
  %1416 = extractvalue { double, double } %1414, 1
  %1417 = fneg double %1416
  %1418 = call ptr @_pCd(ptr noundef nonnull %9)
  %1419 = getelementptr inbounds i8, ptr %1418, i64 8
  store double %1415, ptr %1418, align 8
  store double %1417, ptr %1419, align 8
  %1420 = load <2 x double>, ptr %9, align 16, !tbaa !13
  store <2 x double> %1420, ptr %17, align 16, !tbaa !13
  %1421 = call { double, double } @Cd(ptr noundef nonnull %17)
  %1422 = extractvalue { double, double } %1421, 0
  %1423 = extractvalue { double, double } %1421, 1
  %1424 = fneg double %1423
  %1425 = call ptr @_pCd(ptr noundef nonnull %10)
  %1426 = getelementptr inbounds i8, ptr %1425, i64 8
  store double %1422, ptr %1425, align 8
  store double %1424, ptr %1426, align 8
  %1427 = load double, ptr %4, align 8, !tbaa !9
  %1428 = load double, ptr %1302, align 8, !tbaa !12
  %1429 = fneg double %1428
  %1430 = load <2 x double>, ptr %10, align 16, !tbaa !13
  %1431 = insertelement <2 x double> poison, double %1428, i64 0
  %1432 = insertelement <2 x double> %1431, double %1429, i64 1
  %1433 = fmul <2 x double> %1430, %1432
  %1434 = shufflevector <2 x double> %1433, <2 x double> poison, <2 x i32> <i32 1, i32 0>
  %1435 = insertelement <2 x double> poison, double %1427, i64 0
  %1436 = shufflevector <2 x double> %1435, <2 x double> poison, <2 x i32> zeroinitializer
  %1437 = call <2 x double> @llvm.fmuladd.v2f64(<2 x double> %1436, <2 x double> %1430, <2 x double> %1434)
  store <2 x double> %1437, ptr %9, align 16, !tbaa !13
  %1438 = getelementptr inbounds i8, ptr %3, i64 96
  %1439 = call { double, double } @Cd(ptr noundef nonnull %1438)
  %1440 = extractvalue { double, double } %1439, 0
  %1441 = extractvalue { double, double } %1439, 1
  %1442 = fneg double %1441
  %1443 = call ptr @_pCd(ptr noundef nonnull %9)
  %1444 = getelementptr inbounds i8, ptr %1443, i64 8
  store double %1440, ptr %1443, align 8
  store double %1442, ptr %1444, align 8
  %1445 = load <2 x double>, ptr %9, align 16, !tbaa !13
  store <2 x double> %1445, ptr %18, align 16, !tbaa !13
  %1446 = call { double, double } @Cd(ptr noundef nonnull %18)
  %1447 = extractvalue { double, double } %1446, 0
  %1448 = extractvalue { double, double } %1446, 1
  %1449 = fneg double %1448
  %1450 = call ptr @_pCd(ptr noundef nonnull %10)
  %1451 = getelementptr inbounds i8, ptr %1450, i64 8
  store double %1447, ptr %1450, align 8
  store double %1449, ptr %1451, align 8
  %1452 = load double, ptr %4, align 8, !tbaa !9
  %1453 = load double, ptr %1302, align 8, !tbaa !12
  %1454 = fneg double %1453
  %1455 = load <2 x double>, ptr %10, align 16, !tbaa !13
  %1456 = insertelement <2 x double> poison, double %1453, i64 0
  %1457 = insertelement <2 x double> %1456, double %1454, i64 1
  %1458 = fmul <2 x double> %1455, %1457
  %1459 = shufflevector <2 x double> %1458, <2 x double> poison, <2 x i32> <i32 1, i32 0>
  %1460 = insertelement <2 x double> poison, double %1452, i64 0
  %1461 = shufflevector <2 x double> %1460, <2 x double> poison, <2 x i32> zeroinitializer
  %1462 = call <2 x double> @llvm.fmuladd.v2f64(<2 x double> %1461, <2 x double> %1455, <2 x double> %1459)
  store <2 x double> %1462, ptr %9, align 16, !tbaa !13
  %1463 = getelementptr inbounds i8, ptr %3, i64 112
  %1464 = call { double, double } @Cd(ptr noundef nonnull %1463)
  %1465 = extractvalue { double, double } %1464, 0
  %1466 = extractvalue { double, double } %1464, 1
  %1467 = fneg double %1466
  %1468 = call ptr @_pCd(ptr noundef nonnull %9)
  %1469 = getelementptr inbounds i8, ptr %1468, i64 8
  store double %1465, ptr %1468, align 8
  store double %1467, ptr %1469, align 8
  %1470 = load <2 x double>, ptr %9, align 16, !tbaa !13
  store <2 x double> %1470, ptr %19, align 16, !tbaa !13
  %1471 = call { double, double } @Cd(ptr noundef nonnull %19)
  %1472 = extractvalue { double, double } %1471, 0
  %1473 = extractvalue { double, double } %1471, 1
  %1474 = fneg double %1473
  %1475 = call ptr @_pCd(ptr noundef nonnull %10)
  %1476 = getelementptr inbounds i8, ptr %1475, i64 8
  store double %1472, ptr %1475, align 8
  store double %1474, ptr %1476, align 8
  %1477 = load double, ptr %4, align 8, !tbaa !9
  %1478 = load double, ptr %1302, align 8, !tbaa !12
  %1479 = fneg double %1478
  %1480 = load <2 x double>, ptr %10, align 16, !tbaa !13
  %1481 = insertelement <2 x double> poison, double %1478, i64 0
  %1482 = insertelement <2 x double> %1481, double %1479, i64 1
  %1483 = fmul <2 x double> %1480, %1482
  %1484 = shufflevector <2 x double> %1483, <2 x double> poison, <2 x i32> <i32 1, i32 0>
  %1485 = insertelement <2 x double> poison, double %1477, i64 0
  %1486 = shufflevector <2 x double> %1485, <2 x double> poison, <2 x i32> zeroinitializer
  %1487 = call <2 x double> @llvm.fmuladd.v2f64(<2 x double> %1486, <2 x double> %1480, <2 x double> %1484)
  %1488 = load i32, ptr %2, align 4, !tbaa !5
  %.not42944347 = icmp slt i32 %1488, 1
  br i1 %.not42944347, label %.loopexit, label %.lr.ph4349

.lr.ph4349:                                       ; preds = %1287
  %1489 = getelementptr inbounds i8, ptr %19, i64 8
  %1490 = getelementptr inbounds i8, ptr %18, i64 8
  %1491 = getelementptr inbounds i8, ptr %17, i64 8
  %1492 = getelementptr inbounds i8, ptr %16, i64 8
  %1493 = getelementptr inbounds i8, ptr %15, i64 8
  %1494 = getelementptr inbounds i8, ptr %14, i64 8
  %1495 = getelementptr inbounds i8, ptr %13, i64 8
  %1496 = load <2 x double>, ptr %12, align 16
  %1497 = shufflevector <2 x double> %1496, <2 x double> poison, <2 x i32> <i32 1, i32 poison>
  %1498 = load double, ptr %13, align 16, !tbaa !9
  %1499 = load double, ptr %1495, align 8, !tbaa !12
  %1500 = insertelement <2 x double> %1497, double %1499, i64 1
  %1501 = fneg <2 x double> %1500
  %1502 = load double, ptr %14, align 16, !tbaa !9
  %1503 = load double, ptr %1494, align 8, !tbaa !12
  %1504 = fneg double %1503
  %1505 = load double, ptr %15, align 16, !tbaa !9
  %1506 = load double, ptr %1493, align 8, !tbaa !12
  %1507 = fneg double %1506
  %1508 = load double, ptr %16, align 16, !tbaa !9
  %1509 = load double, ptr %1492, align 8, !tbaa !12
  %1510 = fneg double %1509
  %1511 = load double, ptr %17, align 16, !tbaa !9
  %1512 = load double, ptr %1491, align 8, !tbaa !12
  %1513 = fneg double %1512
  %1514 = load double, ptr %18, align 16, !tbaa !9
  %1515 = load double, ptr %1490, align 8, !tbaa !12
  %1516 = fneg double %1515
  %1517 = load double, ptr %19, align 16, !tbaa !9
  %1518 = load double, ptr %1489, align 8, !tbaa !12
  %1519 = fneg double %1518
  %1520 = sext i32 %22 to i64
  %1521 = add nuw i32 %1488, 1
  %wide.trip.count4656 = zext i32 %1521 to i64
  %1522 = insertelement <2 x double> %1496, double %1498, i64 1
  br label %1523

1523:                                             ; preds = %.lr.ph4349, %1523
  %indvars.iv4653 = phi i64 [ 1, %.lr.ph4349 ], [ %indvars.iv.next4654, %1523 ]
  %1524 = mul nsw i64 %indvars.iv4653, %1520
  %1525 = getelementptr %struct.doublecomplex, ptr %24, i64 %1524
  %1526 = getelementptr i8, ptr %1525, i64 16
  %1527 = getelementptr i8, ptr %1525, i64 32
  %1528 = getelementptr i8, ptr %1525, i64 48
  %1529 = getelementptr i8, ptr %1525, i64 64
  %1530 = getelementptr i8, ptr %1525, i64 80
  %1531 = getelementptr i8, ptr %1525, i64 96
  %1532 = getelementptr i8, ptr %1525, i64 112
  %1533 = getelementptr i8, ptr %1525, i64 128
  %1534 = load <2 x double>, ptr %1526, align 8, !tbaa !13
  %1535 = load <2 x double>, ptr %1527, align 8, !tbaa !13
  %1536 = shufflevector <2 x double> %1534, <2 x double> %1535, <2 x i32> <i32 1, i32 3>
  %1537 = fmul <2 x double> %1536, %1501
  %1538 = shufflevector <2 x double> %1534, <2 x double> %1535, <2 x i32> <i32 0, i32 2>
  %1539 = call <2 x double> @llvm.fmuladd.v2f64(<2 x double> %1522, <2 x double> %1538, <2 x double> %1537)
  %1540 = fmul <2 x double> %1538, %1500
  %1541 = call <2 x double> @llvm.fmuladd.v2f64(<2 x double> %1522, <2 x double> %1536, <2 x double> %1540)
  %shift6660 = shufflevector <2 x double> %1539, <2 x double> poison, <2 x i32> <i32 1, i32 poison>
  %1542 = fadd <2 x double> %1539, %shift6660
  %1543 = extractelement <2 x double> %1542, i64 0
  %shift6661 = shufflevector <2 x double> %1541, <2 x double> poison, <2 x i32> <i32 1, i32 poison>
  %1544 = fadd <2 x double> %1541, %shift6661
  %1545 = extractelement <2 x double> %1544, i64 0
  %1546 = load <2 x double>, ptr %1528, align 8, !tbaa !13
  %1547 = extractelement <2 x double> %1546, i64 1
  %1548 = fmul double %1547, %1504
  %1549 = extractelement <2 x double> %1546, i64 0
  %1550 = call double @llvm.fmuladd.f64(double %1502, double %1549, double %1548)
  %1551 = fmul double %1549, %1503
  %1552 = call double @llvm.fmuladd.f64(double %1502, double %1547, double %1551)
  %1553 = fadd double %1543, %1550
  %1554 = fadd double %1545, %1552
  %1555 = load <2 x double>, ptr %1529, align 8, !tbaa !13
  %1556 = extractelement <2 x double> %1555, i64 1
  %1557 = fmul double %1556, %1507
  %1558 = extractelement <2 x double> %1555, i64 0
  %1559 = call double @llvm.fmuladd.f64(double %1505, double %1558, double %1557)
  %1560 = fmul double %1558, %1506
  %1561 = call double @llvm.fmuladd.f64(double %1505, double %1556, double %1560)
  %1562 = fadd double %1553, %1559
  %1563 = fadd double %1554, %1561
  %1564 = load <2 x double>, ptr %1530, align 8, !tbaa !13
  %1565 = extractelement <2 x double> %1564, i64 1
  %1566 = fmul double %1565, %1510
  %1567 = extractelement <2 x double> %1564, i64 0
  %1568 = call double @llvm.fmuladd.f64(double %1508, double %1567, double %1566)
  %1569 = fmul double %1567, %1509
  %1570 = call double @llvm.fmuladd.f64(double %1508, double %1565, double %1569)
  %1571 = fadd double %1562, %1568
  %1572 = fadd double %1563, %1570
  %1573 = load <2 x double>, ptr %1531, align 8, !tbaa !13
  %1574 = extractelement <2 x double> %1573, i64 1
  %1575 = fmul double %1574, %1513
  %1576 = extractelement <2 x double> %1573, i64 0
  %1577 = call double @llvm.fmuladd.f64(double %1511, double %1576, double %1575)
  %1578 = fmul double %1576, %1512
  %1579 = call double @llvm.fmuladd.f64(double %1511, double %1574, double %1578)
  %1580 = fadd double %1571, %1577
  %1581 = fadd double %1572, %1579
  %1582 = load <2 x double>, ptr %1532, align 8, !tbaa !13
  %1583 = extractelement <2 x double> %1582, i64 1
  %1584 = fmul double %1583, %1516
  %1585 = extractelement <2 x double> %1582, i64 0
  %1586 = call double @llvm.fmuladd.f64(double %1514, double %1585, double %1584)
  %1587 = fmul double %1585, %1515
  %1588 = call double @llvm.fmuladd.f64(double %1514, double %1583, double %1587)
  %1589 = fadd double %1580, %1586
  %1590 = fadd double %1581, %1588
  %1591 = load <2 x double>, ptr %1533, align 8, !tbaa !13
  %1592 = extractelement <2 x double> %1591, i64 1
  %1593 = fmul double %1592, %1519
  %1594 = extractelement <2 x double> %1591, i64 0
  %1595 = call double @llvm.fmuladd.f64(double %1517, double %1594, double %1593)
  %1596 = fmul double %1594, %1518
  %1597 = call double @llvm.fmuladd.f64(double %1517, double %1592, double %1596)
  %1598 = fadd double %1589, %1595
  %1599 = fadd double %1597, %1590
  %1600 = fneg double %1599
  %1601 = insertelement <2 x double> poison, double %1599, i64 0
  %1602 = insertelement <2 x double> %1601, double %1600, i64 1
  %1603 = fmul <2 x double> %1312, %1602
  %1604 = shufflevector <2 x double> %1603, <2 x double> poison, <2 x i32> <i32 1, i32 0>
  %1605 = insertelement <2 x double> poison, double %1598, i64 0
  %1606 = shufflevector <2 x double> %1605, <2 x double> poison, <2 x i32> zeroinitializer
  %1607 = call <2 x double> @llvm.fmuladd.v2f64(<2 x double> %1606, <2 x double> %1312, <2 x double> %1604)
  %1608 = fsub <2 x double> %1534, %1607
  store <2 x double> %1608, ptr %1526, align 8, !tbaa !13
  %1609 = fmul <2 x double> %1337, %1602
  %1610 = shufflevector <2 x double> %1609, <2 x double> poison, <2 x i32> <i32 1, i32 0>
  %1611 = call <2 x double> @llvm.fmuladd.v2f64(<2 x double> %1606, <2 x double> %1337, <2 x double> %1610)
  %1612 = fsub <2 x double> %1535, %1611
  store <2 x double> %1612, ptr %1527, align 8, !tbaa !13
  %1613 = fmul <2 x double> %1362, %1602
  %1614 = shufflevector <2 x double> %1613, <2 x double> poison, <2 x i32> <i32 1, i32 0>
  %1615 = call <2 x double> @llvm.fmuladd.v2f64(<2 x double> %1606, <2 x double> %1362, <2 x double> %1614)
  %1616 = fsub <2 x double> %1546, %1615
  store <2 x double> %1616, ptr %1528, align 8, !tbaa !13
  %1617 = fmul <2 x double> %1387, %1602
  %1618 = shufflevector <2 x double> %1617, <2 x double> poison, <2 x i32> <i32 1, i32 0>
  %1619 = call <2 x double> @llvm.fmuladd.v2f64(<2 x double> %1606, <2 x double> %1387, <2 x double> %1618)
  %1620 = fsub <2 x double> %1555, %1619
  store <2 x double> %1620, ptr %1529, align 8, !tbaa !13
  %1621 = fmul <2 x double> %1412, %1602
  %1622 = shufflevector <2 x double> %1621, <2 x double> poison, <2 x i32> <i32 1, i32 0>
  %1623 = call <2 x double> @llvm.fmuladd.v2f64(<2 x double> %1606, <2 x double> %1412, <2 x double> %1622)
  %1624 = fsub <2 x double> %1564, %1623
  store <2 x double> %1624, ptr %1530, align 8, !tbaa !13
  %1625 = fmul <2 x double> %1437, %1602
  %1626 = shufflevector <2 x double> %1625, <2 x double> poison, <2 x i32> <i32 1, i32 0>
  %1627 = call <2 x double> @llvm.fmuladd.v2f64(<2 x double> %1606, <2 x double> %1437, <2 x double> %1626)
  %1628 = fsub <2 x double> %1573, %1627
  store <2 x double> %1628, ptr %1531, align 8, !tbaa !13
  %1629 = fmul <2 x double> %1462, %1602
  %1630 = shufflevector <2 x double> %1629, <2 x double> poison, <2 x i32> <i32 1, i32 0>
  %1631 = call <2 x double> @llvm.fmuladd.v2f64(<2 x double> %1606, <2 x double> %1462, <2 x double> %1630)
  %1632 = fsub <2 x double> %1582, %1631
  store <2 x double> %1632, ptr %1532, align 8, !tbaa !13
  %1633 = fmul <2 x double> %1487, %1602
  %1634 = shufflevector <2 x double> %1633, <2 x double> poison, <2 x i32> <i32 1, i32 0>
  %1635 = call <2 x double> @llvm.fmuladd.v2f64(<2 x double> %1606, <2 x double> %1487, <2 x double> %1634)
  %1636 = fsub <2 x double> %1591, %1635
  store <2 x double> %1636, ptr %1533, align 8, !tbaa !13
  %indvars.iv.next4654 = add nuw nsw i64 %indvars.iv4653, 1
  %exitcond4657.not = icmp eq i64 %indvars.iv.next4654, %wide.trip.count4656
  br i1 %exitcond4657.not, label %.loopexit, label %1523, !llvm.loop !22

1637:                                             ; preds = %33
  %1638 = tail call { double, double } @Cd(ptr noundef %3)
  %1639 = extractvalue { double, double } %1638, 0
  %1640 = extractvalue { double, double } %1638, 1
  %1641 = fneg double %1640
  %1642 = call ptr @_pCd(ptr noundef nonnull %9)
  %1643 = getelementptr inbounds i8, ptr %1642, i64 8
  store double %1639, ptr %1642, align 8
  store double %1641, ptr %1643, align 8
  %1644 = load <2 x double>, ptr %9, align 16, !tbaa !13
  store <2 x double> %1644, ptr %12, align 16, !tbaa !13
  %1645 = call { double, double } @Cd(ptr noundef nonnull %12)
  %1646 = extractvalue { double, double } %1645, 0
  %1647 = extractvalue { double, double } %1645, 1
  %1648 = fneg double %1647
  %1649 = call ptr @_pCd(ptr noundef nonnull %10)
  %1650 = getelementptr inbounds i8, ptr %1649, i64 8
  store double %1646, ptr %1649, align 8
  store double %1648, ptr %1650, align 8
  %1651 = load double, ptr %4, align 8, !tbaa !9
  %1652 = getelementptr inbounds i8, ptr %4, i64 8
  %1653 = load double, ptr %1652, align 8, !tbaa !12
  %1654 = fneg double %1653
  %1655 = load <2 x double>, ptr %10, align 16, !tbaa !13
  %1656 = insertelement <2 x double> poison, double %1653, i64 0
  %1657 = insertelement <2 x double> %1656, double %1654, i64 1
  %1658 = fmul <2 x double> %1655, %1657
  %1659 = shufflevector <2 x double> %1658, <2 x double> poison, <2 x i32> <i32 1, i32 0>
  %1660 = insertelement <2 x double> poison, double %1651, i64 0
  %1661 = shufflevector <2 x double> %1660, <2 x double> poison, <2 x i32> zeroinitializer
  %1662 = call <2 x double> @llvm.fmuladd.v2f64(<2 x double> %1661, <2 x double> %1655, <2 x double> %1659)
  store <2 x double> %1662, ptr %9, align 16, !tbaa !13
  %1663 = getelementptr inbounds i8, ptr %3, i64 16
  %1664 = call { double, double } @Cd(ptr noundef nonnull %1663)
  %1665 = extractvalue { double, double } %1664, 0
  %1666 = extractvalue { double, double } %1664, 1
  %1667 = fneg double %1666
  %1668 = call ptr @_pCd(ptr noundef nonnull %9)
  %1669 = getelementptr inbounds i8, ptr %1668, i64 8
  store double %1665, ptr %1668, align 8
  store double %1667, ptr %1669, align 8
  %1670 = load <2 x double>, ptr %9, align 16, !tbaa !13
  store <2 x double> %1670, ptr %13, align 16, !tbaa !13
  %1671 = call { double, double } @Cd(ptr noundef nonnull %13)
  %1672 = extractvalue { double, double } %1671, 0
  %1673 = extractvalue { double, double } %1671, 1
  %1674 = fneg double %1673
  %1675 = call ptr @_pCd(ptr noundef nonnull %10)
  %1676 = getelementptr inbounds i8, ptr %1675, i64 8
  store double %1672, ptr %1675, align 8
  store double %1674, ptr %1676, align 8
  %1677 = load double, ptr %4, align 8, !tbaa !9
  %1678 = load double, ptr %1652, align 8, !tbaa !12
  %1679 = fneg double %1678
  %1680 = load <2 x double>, ptr %10, align 16, !tbaa !13
  %1681 = insertelement <2 x double> poison, double %1678, i64 0
  %1682 = insertelement <2 x double> %1681, double %1679, i64 1
  %1683 = fmul <2 x double> %1680, %1682
  %1684 = shufflevector <2 x double> %1683, <2 x double> poison, <2 x i32> <i32 1, i32 0>
  %1685 = insertelement <2 x double> poison, double %1677, i64 0
  %1686 = shufflevector <2 x double> %1685, <2 x double> poison, <2 x i32> zeroinitializer
  %1687 = call <2 x double> @llvm.fmuladd.v2f64(<2 x double> %1686, <2 x double> %1680, <2 x double> %1684)
  store <2 x double> %1687, ptr %9, align 16, !tbaa !13
  %1688 = getelementptr inbounds i8, ptr %3, i64 32
  %1689 = call { double, double } @Cd(ptr noundef nonnull %1688)
  %1690 = extractvalue { double, double } %1689, 0
  %1691 = extractvalue { double, double } %1689, 1
  %1692 = fneg double %1691
  %1693 = call ptr @_pCd(ptr noundef nonnull %9)
  %1694 = getelementptr inbounds i8, ptr %1693, i64 8
  store double %1690, ptr %1693, align 8
  store double %1692, ptr %1694, align 8
  %1695 = load <2 x double>, ptr %9, align 16, !tbaa !13
  store <2 x double> %1695, ptr %14, align 16, !tbaa !13
  %1696 = call { double, double } @Cd(ptr noundef nonnull %14)
  %1697 = extractvalue { double, double } %1696, 0
  %1698 = extractvalue { double, double } %1696, 1
  %1699 = fneg double %1698
  %1700 = call ptr @_pCd(ptr noundef nonnull %10)
  %1701 = getelementptr inbounds i8, ptr %1700, i64 8
  store double %1697, ptr %1700, align 8
  store double %1699, ptr %1701, align 8
  %1702 = load double, ptr %4, align 8, !tbaa !9
  %1703 = load double, ptr %1652, align 8, !tbaa !12
  %1704 = fneg double %1703
  %1705 = load <2 x double>, ptr %10, align 16, !tbaa !13
  %1706 = insertelement <2 x double> poison, double %1703, i64 0
  %1707 = insertelement <2 x double> %1706, double %1704, i64 1
  %1708 = fmul <2 x double> %1705, %1707
  %1709 = shufflevector <2 x double> %1708, <2 x double> poison, <2 x i32> <i32 1, i32 0>
  %1710 = insertelement <2 x double> poison, double %1702, i64 0
  %1711 = shufflevector <2 x double> %1710, <2 x double> poison, <2 x i32> zeroinitializer
  %1712 = call <2 x double> @llvm.fmuladd.v2f64(<2 x double> %1711, <2 x double> %1705, <2 x double> %1709)
  store <2 x double> %1712, ptr %9, align 16, !tbaa !13
  %1713 = getelementptr inbounds i8, ptr %3, i64 48
  %1714 = call { double, double } @Cd(ptr noundef nonnull %1713)
  %1715 = extractvalue { double, double } %1714, 0
  %1716 = extractvalue { double, double } %1714, 1
  %1717 = fneg double %1716
  %1718 = call ptr @_pCd(ptr noundef nonnull %9)
  %1719 = getelementptr inbounds i8, ptr %1718, i64 8
  store double %1715, ptr %1718, align 8
  store double %1717, ptr %1719, align 8
  %1720 = load <2 x double>, ptr %9, align 16, !tbaa !13
  store <2 x double> %1720, ptr %15, align 16, !tbaa !13
  %1721 = call { double, double } @Cd(ptr noundef nonnull %15)
  %1722 = extractvalue { double, double } %1721, 0
  %1723 = extractvalue { double, double } %1721, 1
  %1724 = fneg double %1723
  %1725 = call ptr @_pCd(ptr noundef nonnull %10)
  %1726 = getelementptr inbounds i8, ptr %1725, i64 8
  store double %1722, ptr %1725, align 8
  store double %1724, ptr %1726, align 8
  %1727 = load double, ptr %4, align 8, !tbaa !9
  %1728 = load double, ptr %1652, align 8, !tbaa !12
  %1729 = fneg double %1728
  %1730 = load <2 x double>, ptr %10, align 16, !tbaa !13
  %1731 = insertelement <2 x double> poison, double %1728, i64 0
  %1732 = insertelement <2 x double> %1731, double %1729, i64 1
  %1733 = fmul <2 x double> %1730, %1732
  %1734 = shufflevector <2 x double> %1733, <2 x double> poison, <2 x i32> <i32 1, i32 0>
  %1735 = insertelement <2 x double> poison, double %1727, i64 0
  %1736 = shufflevector <2 x double> %1735, <2 x double> poison, <2 x i32> zeroinitializer
  %1737 = call <2 x double> @llvm.fmuladd.v2f64(<2 x double> %1736, <2 x double> %1730, <2 x double> %1734)
  store <2 x double> %1737, ptr %9, align 16, !tbaa !13
  %1738 = getelementptr inbounds i8, ptr %3, i64 64
  %1739 = call { double, double } @Cd(ptr noundef nonnull %1738)
  %1740 = extractvalue { double, double } %1739, 0
  %1741 = extractvalue { double, double } %1739, 1
  %1742 = fneg double %1741
  %1743 = call ptr @_pCd(ptr noundef nonnull %9)
  %1744 = getelementptr inbounds i8, ptr %1743, i64 8
  store double %1740, ptr %1743, align 8
  store double %1742, ptr %1744, align 8
  %1745 = load <2 x double>, ptr %9, align 16, !tbaa !13
  store <2 x double> %1745, ptr %16, align 16, !tbaa !13
  %1746 = call { double, double } @Cd(ptr noundef nonnull %16)
  %1747 = extractvalue { double, double } %1746, 0
  %1748 = extractvalue { double, double } %1746, 1
  %1749 = fneg double %1748
  %1750 = call ptr @_pCd(ptr noundef nonnull %10)
  %1751 = getelementptr inbounds i8, ptr %1750, i64 8
  store double %1747, ptr %1750, align 8
  store double %1749, ptr %1751, align 8
  %1752 = load double, ptr %4, align 8, !tbaa !9
  %1753 = load double, ptr %1652, align 8, !tbaa !12
  %1754 = fneg double %1753
  %1755 = load <2 x double>, ptr %10, align 16, !tbaa !13
  %1756 = insertelement <2 x double> poison, double %1753, i64 0
  %1757 = insertelement <2 x double> %1756, double %1754, i64 1
  %1758 = fmul <2 x double> %1755, %1757
  %1759 = shufflevector <2 x double> %1758, <2 x double> poison, <2 x i32> <i32 1, i32 0>
  %1760 = insertelement <2 x double> poison, double %1752, i64 0
  %1761 = shufflevector <2 x double> %1760, <2 x double> poison, <2 x i32> zeroinitializer
  %1762 = call <2 x double> @llvm.fmuladd.v2f64(<2 x double> %1761, <2 x double> %1755, <2 x double> %1759)
  store <2 x double> %1762, ptr %9, align 16, !tbaa !13
  %1763 = getelementptr inbounds i8, ptr %3, i64 80
  %1764 = call { double, double } @Cd(ptr noundef nonnull %1763)
  %1765 = extractvalue { double, double } %1764, 0
  %1766 = extractvalue { double, double } %1764, 1
  %1767 = fneg double %1766
  %1768 = call ptr @_pCd(ptr noundef nonnull %9)
  %1769 = getelementptr inbounds i8, ptr %1768, i64 8
  store double %1765, ptr %1768, align 8
  store double %1767, ptr %1769, align 8
  %1770 = load <2 x double>, ptr %9, align 16, !tbaa !13
  store <2 x double> %1770, ptr %17, align 16, !tbaa !13
  %1771 = call { double, double } @Cd(ptr noundef nonnull %17)
  %1772 = extractvalue { double, double } %1771, 0
  %1773 = extractvalue { double, double } %1771, 1
  %1774 = fneg double %1773
  %1775 = call ptr @_pCd(ptr noundef nonnull %10)
  %1776 = getelementptr inbounds i8, ptr %1775, i64 8
  store double %1772, ptr %1775, align 8
  store double %1774, ptr %1776, align 8
  %1777 = load double, ptr %4, align 8, !tbaa !9
  %1778 = load double, ptr %1652, align 8, !tbaa !12
  %1779 = fneg double %1778
  %1780 = load <2 x double>, ptr %10, align 16, !tbaa !13
  %1781 = insertelement <2 x double> poison, double %1778, i64 0
  %1782 = insertelement <2 x double> %1781, double %1779, i64 1
  %1783 = fmul <2 x double> %1780, %1782
  %1784 = shufflevector <2 x double> %1783, <2 x double> poison, <2 x i32> <i32 1, i32 0>
  %1785 = insertelement <2 x double> poison, double %1777, i64 0
  %1786 = shufflevector <2 x double> %1785, <2 x double> poison, <2 x i32> zeroinitializer
  %1787 = call <2 x double> @llvm.fmuladd.v2f64(<2 x double> %1786, <2 x double> %1780, <2 x double> %1784)
  store <2 x double> %1787, ptr %9, align 16, !tbaa !13
  %1788 = getelementptr inbounds i8, ptr %3, i64 96
  %1789 = call { double, double } @Cd(ptr noundef nonnull %1788)
  %1790 = extractvalue { double, double } %1789, 0
  %1791 = extractvalue { double, double } %1789, 1
  %1792 = fneg double %1791
  %1793 = call ptr @_pCd(ptr noundef nonnull %9)
  %1794 = getelementptr inbounds i8, ptr %1793, i64 8
  store double %1790, ptr %1793, align 8
  store double %1792, ptr %1794, align 8
  %1795 = load <2 x double>, ptr %9, align 16, !tbaa !13
  store <2 x double> %1795, ptr %18, align 16, !tbaa !13
  %1796 = call { double, double } @Cd(ptr noundef nonnull %18)
  %1797 = extractvalue { double, double } %1796, 0
  %1798 = extractvalue { double, double } %1796, 1
  %1799 = fneg double %1798
  %1800 = call ptr @_pCd(ptr noundef nonnull %10)
  %1801 = getelementptr inbounds i8, ptr %1800, i64 8
  store double %1797, ptr %1800, align 8
  store double %1799, ptr %1801, align 8
  %1802 = load double, ptr %4, align 8, !tbaa !9
  %1803 = load double, ptr %1652, align 8, !tbaa !12
  %1804 = fneg double %1803
  %1805 = load <2 x double>, ptr %10, align 16, !tbaa !13
  %1806 = insertelement <2 x double> poison, double %1803, i64 0
  %1807 = insertelement <2 x double> %1806, double %1804, i64 1
  %1808 = fmul <2 x double> %1805, %1807
  %1809 = shufflevector <2 x double> %1808, <2 x double> poison, <2 x i32> <i32 1, i32 0>
  %1810 = insertelement <2 x double> poison, double %1802, i64 0
  %1811 = shufflevector <2 x double> %1810, <2 x double> poison, <2 x i32> zeroinitializer
  %1812 = call <2 x double> @llvm.fmuladd.v2f64(<2 x double> %1811, <2 x double> %1805, <2 x double> %1809)
  store <2 x double> %1812, ptr %9, align 16, !tbaa !13
  %1813 = getelementptr inbounds i8, ptr %3, i64 112
  %1814 = call { double, double } @Cd(ptr noundef nonnull %1813)
  %1815 = extractvalue { double, double } %1814, 0
  %1816 = extractvalue { double, double } %1814, 1
  %1817 = fneg double %1816
  %1818 = call ptr @_pCd(ptr noundef nonnull %9)
  %1819 = getelementptr inbounds i8, ptr %1818, i64 8
  store double %1815, ptr %1818, align 8
  store double %1817, ptr %1819, align 8
  %1820 = load <2 x double>, ptr %9, align 16, !tbaa !13
  store <2 x double> %1820, ptr %19, align 16, !tbaa !13
  %1821 = call { double, double } @Cd(ptr noundef nonnull %19)
  %1822 = extractvalue { double, double } %1821, 0
  %1823 = extractvalue { double, double } %1821, 1
  %1824 = fneg double %1823
  %1825 = call ptr @_pCd(ptr noundef nonnull %10)
  %1826 = getelementptr inbounds i8, ptr %1825, i64 8
  store double %1822, ptr %1825, align 8
  store double %1824, ptr %1826, align 8
  %1827 = load double, ptr %4, align 8, !tbaa !9
  %1828 = load double, ptr %1652, align 8, !tbaa !12
  %1829 = fneg double %1828
  %1830 = load <2 x double>, ptr %10, align 16, !tbaa !13
  %1831 = insertelement <2 x double> poison, double %1828, i64 0
  %1832 = insertelement <2 x double> %1831, double %1829, i64 1
  %1833 = fmul <2 x double> %1830, %1832
  %1834 = shufflevector <2 x double> %1833, <2 x double> poison, <2 x i32> <i32 1, i32 0>
  %1835 = insertelement <2 x double> poison, double %1827, i64 0
  %1836 = shufflevector <2 x double> %1835, <2 x double> poison, <2 x i32> zeroinitializer
  %1837 = call <2 x double> @llvm.fmuladd.v2f64(<2 x double> %1836, <2 x double> %1830, <2 x double> %1834)
  store <2 x double> %1837, ptr %9, align 16, !tbaa !13
  %1838 = getelementptr inbounds i8, ptr %3, i64 128
  %1839 = call { double, double } @Cd(ptr noundef nonnull %1838)
  %1840 = extractvalue { double, double } %1839, 0
  %1841 = extractvalue { double, double } %1839, 1
  %1842 = fneg double %1841
  %1843 = call ptr @_pCd(ptr noundef nonnull %9)
  %1844 = getelementptr inbounds i8, ptr %1843, i64 8
  store double %1840, ptr %1843, align 8
  store double %1842, ptr %1844, align 8
  %1845 = load <2 x double>, ptr %9, align 16, !tbaa !13
  store <2 x double> %1845, ptr %20, align 16, !tbaa !13
  %1846 = call { double, double } @Cd(ptr noundef nonnull %20)
  %1847 = extractvalue { double, double } %1846, 0
  %1848 = extractvalue { double, double } %1846, 1
  %1849 = fneg double %1848
  %1850 = call ptr @_pCd(ptr noundef nonnull %10)
  %1851 = getelementptr inbounds i8, ptr %1850, i64 8
  store double %1847, ptr %1850, align 8
  store double %1849, ptr %1851, align 8
  %1852 = load double, ptr %4, align 8, !tbaa !9
  %1853 = load double, ptr %1652, align 8, !tbaa !12
  %1854 = fneg double %1853
  %1855 = load <2 x double>, ptr %10, align 16, !tbaa !13
  %1856 = insertelement <2 x double> poison, double %1853, i64 0
  %1857 = insertelement <2 x double> %1856, double %1854, i64 1
  %1858 = fmul <2 x double> %1855, %1857
  %1859 = shufflevector <2 x double> %1858, <2 x double> poison, <2 x i32> <i32 1, i32 0>
  %1860 = insertelement <2 x double> poison, double %1852, i64 0
  %1861 = shufflevector <2 x double> %1860, <2 x double> poison, <2 x i32> zeroinitializer
  %1862 = call <2 x double> @llvm.fmuladd.v2f64(<2 x double> %1861, <2 x double> %1855, <2 x double> %1859)
  %1863 = load i32, ptr %2, align 4, !tbaa !5
  %.not42934334 = icmp slt i32 %1863, 1
  br i1 %.not42934334, label %.loopexit, label %.lr.ph4336

.lr.ph4336:                                       ; preds = %1637
  %1864 = getelementptr inbounds i8, ptr %20, i64 8
  %1865 = getelementptr inbounds i8, ptr %19, i64 8
  %1866 = getelementptr inbounds i8, ptr %18, i64 8
  %1867 = getelementptr inbounds i8, ptr %17, i64 8
  %1868 = getelementptr inbounds i8, ptr %16, i64 8
  %1869 = getelementptr inbounds i8, ptr %15, i64 8
  %1870 = getelementptr inbounds i8, ptr %14, i64 8
  %1871 = getelementptr inbounds i8, ptr %13, i64 8
  %1872 = load <2 x double>, ptr %12, align 16
  %1873 = shufflevector <2 x double> %1872, <2 x double> poison, <2 x i32> <i32 1, i32 poison>
  %1874 = load double, ptr %13, align 16, !tbaa !9
  %1875 = load double, ptr %1871, align 8, !tbaa !12
  %1876 = insertelement <2 x double> %1873, double %1875, i64 1
  %1877 = fneg <2 x double> %1876
  %1878 = load double, ptr %14, align 16, !tbaa !9
  %1879 = load double, ptr %1870, align 8, !tbaa !12
  %1880 = fneg double %1879
  %1881 = load double, ptr %15, align 16, !tbaa !9
  %1882 = load double, ptr %1869, align 8, !tbaa !12
  %1883 = fneg double %1882
  %1884 = load double, ptr %16, align 16, !tbaa !9
  %1885 = load double, ptr %1868, align 8, !tbaa !12
  %1886 = fneg double %1885
  %1887 = load double, ptr %17, align 16, !tbaa !9
  %1888 = load double, ptr %1867, align 8, !tbaa !12
  %1889 = fneg double %1888
  %1890 = load double, ptr %18, align 16, !tbaa !9
  %1891 = load double, ptr %1866, align 8, !tbaa !12
  %1892 = fneg double %1891
  %1893 = load double, ptr %19, align 16, !tbaa !9
  %1894 = load double, ptr %1865, align 8, !tbaa !12
  %1895 = fneg double %1894
  %1896 = load double, ptr %20, align 16, !tbaa !9
  %1897 = load double, ptr %1864, align 8, !tbaa !12
  %1898 = fneg double %1897
  %1899 = sext i32 %22 to i64
  %1900 = add nuw i32 %1863, 1
  %wide.trip.count4651 = zext i32 %1900 to i64
  %1901 = insertelement <2 x double> %1872, double %1874, i64 1
  br label %1902

1902:                                             ; preds = %.lr.ph4336, %1902
  %indvars.iv4648 = phi i64 [ 1, %.lr.ph4336 ], [ %indvars.iv.next4649, %1902 ]
  %1903 = mul nsw i64 %indvars.iv4648, %1899
  %1904 = getelementptr %struct.doublecomplex, ptr %24, i64 %1903
  %1905 = getelementptr i8, ptr %1904, i64 16
  %1906 = getelementptr i8, ptr %1904, i64 32
  %1907 = getelementptr i8, ptr %1904, i64 48
  %1908 = getelementptr i8, ptr %1904, i64 64
  %1909 = getelementptr i8, ptr %1904, i64 80
  %1910 = getelementptr i8, ptr %1904, i64 96
  %1911 = getelementptr i8, ptr %1904, i64 112
  %1912 = getelementptr i8, ptr %1904, i64 128
  %1913 = getelementptr i8, ptr %1904, i64 144
  %1914 = load <2 x double>, ptr %1905, align 8, !tbaa !13
  %1915 = load <2 x double>, ptr %1906, align 8, !tbaa !13
  %1916 = shufflevector <2 x double> %1914, <2 x double> %1915, <2 x i32> <i32 1, i32 3>
  %1917 = fmul <2 x double> %1916, %1877
  %1918 = shufflevector <2 x double> %1914, <2 x double> %1915, <2 x i32> <i32 0, i32 2>
  %1919 = call <2 x double> @llvm.fmuladd.v2f64(<2 x double> %1901, <2 x double> %1918, <2 x double> %1917)
  %1920 = fmul <2 x double> %1918, %1876
  %1921 = call <2 x double> @llvm.fmuladd.v2f64(<2 x double> %1901, <2 x double> %1916, <2 x double> %1920)
  %shift6662 = shufflevector <2 x double> %1919, <2 x double> poison, <2 x i32> <i32 1, i32 poison>
  %1922 = fadd <2 x double> %1919, %shift6662
  %1923 = extractelement <2 x double> %1922, i64 0
  %shift6663 = shufflevector <2 x double> %1921, <2 x double> poison, <2 x i32> <i32 1, i32 poison>
  %1924 = fadd <2 x double> %1921, %shift6663
  %1925 = extractelement <2 x double> %1924, i64 0
  %1926 = load <2 x double>, ptr %1907, align 8, !tbaa !13
  %1927 = extractelement <2 x double> %1926, i64 1
  %1928 = fmul double %1927, %1880
  %1929 = extractelement <2 x double> %1926, i64 0
  %1930 = call double @llvm.fmuladd.f64(double %1878, double %1929, double %1928)
  %1931 = fmul double %1929, %1879
  %1932 = call double @llvm.fmuladd.f64(double %1878, double %1927, double %1931)
  %1933 = fadd double %1923, %1930
  %1934 = fadd double %1925, %1932
  %1935 = load <2 x double>, ptr %1908, align 8, !tbaa !13
  %1936 = extractelement <2 x double> %1935, i64 1
  %1937 = fmul double %1936, %1883
  %1938 = extractelement <2 x double> %1935, i64 0
  %1939 = call double @llvm.fmuladd.f64(double %1881, double %1938, double %1937)
  %1940 = fmul double %1938, %1882
  %1941 = call double @llvm.fmuladd.f64(double %1881, double %1936, double %1940)
  %1942 = fadd double %1933, %1939
  %1943 = fadd double %1934, %1941
  %1944 = load <2 x double>, ptr %1909, align 8, !tbaa !13
  %1945 = extractelement <2 x double> %1944, i64 1
  %1946 = fmul double %1945, %1886
  %1947 = extractelement <2 x double> %1944, i64 0
  %1948 = call double @llvm.fmuladd.f64(double %1884, double %1947, double %1946)
  %1949 = fmul double %1947, %1885
  %1950 = call double @llvm.fmuladd.f64(double %1884, double %1945, double %1949)
  %1951 = fadd double %1942, %1948
  %1952 = fadd double %1943, %1950
  %1953 = load <2 x double>, ptr %1910, align 8, !tbaa !13
  %1954 = extractelement <2 x double> %1953, i64 1
  %1955 = fmul double %1954, %1889
  %1956 = extractelement <2 x double> %1953, i64 0
  %1957 = call double @llvm.fmuladd.f64(double %1887, double %1956, double %1955)
  %1958 = fmul double %1956, %1888
  %1959 = call double @llvm.fmuladd.f64(double %1887, double %1954, double %1958)
  %1960 = fadd double %1951, %1957
  %1961 = fadd double %1952, %1959
  %1962 = load <2 x double>, ptr %1911, align 8, !tbaa !13
  %1963 = extractelement <2 x double> %1962, i64 1
  %1964 = fmul double %1963, %1892
  %1965 = extractelement <2 x double> %1962, i64 0
  %1966 = call double @llvm.fmuladd.f64(double %1890, double %1965, double %1964)
  %1967 = fmul double %1965, %1891
  %1968 = call double @llvm.fmuladd.f64(double %1890, double %1963, double %1967)
  %1969 = fadd double %1960, %1966
  %1970 = fadd double %1961, %1968
  %1971 = load <2 x double>, ptr %1912, align 8, !tbaa !13
  %1972 = extractelement <2 x double> %1971, i64 1
  %1973 = fmul double %1972, %1895
  %1974 = extractelement <2 x double> %1971, i64 0
  %1975 = call double @llvm.fmuladd.f64(double %1893, double %1974, double %1973)
  %1976 = fmul double %1974, %1894
  %1977 = call double @llvm.fmuladd.f64(double %1893, double %1972, double %1976)
  %1978 = fadd double %1969, %1975
  %1979 = fadd double %1970, %1977
  %1980 = load <2 x double>, ptr %1913, align 8, !tbaa !13
  %1981 = extractelement <2 x double> %1980, i64 1
  %1982 = fmul double %1981, %1898
  %1983 = extractelement <2 x double> %1980, i64 0
  %1984 = call double @llvm.fmuladd.f64(double %1896, double %1983, double %1982)
  %1985 = fmul double %1983, %1897
  %1986 = call double @llvm.fmuladd.f64(double %1896, double %1981, double %1985)
  %1987 = fadd double %1978, %1984
  %1988 = fadd double %1986, %1979
  %1989 = fneg double %1988
  %1990 = insertelement <2 x double> poison, double %1988, i64 0
  %1991 = insertelement <2 x double> %1990, double %1989, i64 1
  %1992 = fmul <2 x double> %1662, %1991
  %1993 = shufflevector <2 x double> %1992, <2 x double> poison, <2 x i32> <i32 1, i32 0>
  %1994 = insertelement <2 x double> poison, double %1987, i64 0
  %1995 = shufflevector <2 x double> %1994, <2 x double> poison, <2 x i32> zeroinitializer
  %1996 = call <2 x double> @llvm.fmuladd.v2f64(<2 x double> %1995, <2 x double> %1662, <2 x double> %1993)
  %1997 = fsub <2 x double> %1914, %1996
  store <2 x double> %1997, ptr %1905, align 8, !tbaa !13
  %1998 = fmul <2 x double> %1687, %1991
  %1999 = shufflevector <2 x double> %1998, <2 x double> poison, <2 x i32> <i32 1, i32 0>
  %2000 = call <2 x double> @llvm.fmuladd.v2f64(<2 x double> %1995, <2 x double> %1687, <2 x double> %1999)
  %2001 = fsub <2 x double> %1915, %2000
  store <2 x double> %2001, ptr %1906, align 8, !tbaa !13
  %2002 = fmul <2 x double> %1712, %1991
  %2003 = shufflevector <2 x double> %2002, <2 x double> poison, <2 x i32> <i32 1, i32 0>
  %2004 = call <2 x double> @llvm.fmuladd.v2f64(<2 x double> %1995, <2 x double> %1712, <2 x double> %2003)
  %2005 = fsub <2 x double> %1926, %2004
  store <2 x double> %2005, ptr %1907, align 8, !tbaa !13
  %2006 = fmul <2 x double> %1737, %1991
  %2007 = shufflevector <2 x double> %2006, <2 x double> poison, <2 x i32> <i32 1, i32 0>
  %2008 = call <2 x double> @llvm.fmuladd.v2f64(<2 x double> %1995, <2 x double> %1737, <2 x double> %2007)
  %2009 = fsub <2 x double> %1935, %2008
  store <2 x double> %2009, ptr %1908, align 8, !tbaa !13
  %2010 = fmul <2 x double> %1762, %1991
  %2011 = shufflevector <2 x double> %2010, <2 x double> poison, <2 x i32> <i32 1, i32 0>
  %2012 = call <2 x double> @llvm.fmuladd.v2f64(<2 x double> %1995, <2 x double> %1762, <2 x double> %2011)
  %2013 = fsub <2 x double> %1944, %2012
  store <2 x double> %2013, ptr %1909, align 8, !tbaa !13
  %2014 = fmul <2 x double> %1787, %1991
  %2015 = shufflevector <2 x double> %2014, <2 x double> poison, <2 x i32> <i32 1, i32 0>
  %2016 = call <2 x double> @llvm.fmuladd.v2f64(<2 x double> %1995, <2 x double> %1787, <2 x double> %2015)
  %2017 = fsub <2 x double> %1953, %2016
  store <2 x double> %2017, ptr %1910, align 8, !tbaa !13
  %2018 = fmul <2 x double> %1812, %1991
  %2019 = shufflevector <2 x double> %2018, <2 x double> poison, <2 x i32> <i32 1, i32 0>
  %2020 = call <2 x double> @llvm.fmuladd.v2f64(<2 x double> %1995, <2 x double> %1812, <2 x double> %2019)
  %2021 = fsub <2 x double> %1962, %2020
  store <2 x double> %2021, ptr %1911, align 8, !tbaa !13
  %2022 = fmul <2 x double> %1837, %1991
  %2023 = shufflevector <2 x double> %2022, <2 x double> poison, <2 x i32> <i32 1, i32 0>
  %2024 = call <2 x double> @llvm.fmuladd.v2f64(<2 x double> %1995, <2 x double> %1837, <2 x double> %2023)
  %2025 = fsub <2 x double> %1971, %2024
  store <2 x double> %2025, ptr %1912, align 8, !tbaa !13
  %2026 = fmul <2 x double> %1862, %1991
  %2027 = shufflevector <2 x double> %2026, <2 x double> poison, <2 x i32> <i32 1, i32 0>
  %2028 = call <2 x double> @llvm.fmuladd.v2f64(<2 x double> %1995, <2 x double> %1862, <2 x double> %2027)
  %2029 = fsub <2 x double> %1980, %2028
  store <2 x double> %2029, ptr %1913, align 8, !tbaa !13
  %indvars.iv.next4649 = add nuw nsw i64 %indvars.iv4648, 1
  %exitcond4652.not = icmp eq i64 %indvars.iv.next4649, %wide.trip.count4651
  br i1 %exitcond4652.not, label %.loopexit, label %1902, !llvm.loop !23

2030:                                             ; preds = %33
  %2031 = tail call { double, double } @Cd(ptr noundef %3)
  %2032 = extractvalue { double, double } %2031, 0
  %2033 = extractvalue { double, double } %2031, 1
  %2034 = fneg double %2033
  %2035 = call ptr @_pCd(ptr noundef nonnull %9)
  %2036 = getelementptr inbounds i8, ptr %2035, i64 8
  store double %2032, ptr %2035, align 8
  store double %2034, ptr %2036, align 8
  %2037 = load <2 x double>, ptr %9, align 16, !tbaa !13
  store <2 x double> %2037, ptr %12, align 16, !tbaa !13
  %2038 = call { double, double } @Cd(ptr noundef nonnull %12)
  %2039 = extractvalue { double, double } %2038, 0
  %2040 = extractvalue { double, double } %2038, 1
  %2041 = fneg double %2040
  %2042 = call ptr @_pCd(ptr noundef nonnull %10)
  %2043 = getelementptr inbounds i8, ptr %2042, i64 8
  store double %2039, ptr %2042, align 8
  store double %2041, ptr %2043, align 8
  %2044 = load double, ptr %4, align 8, !tbaa !9
  %2045 = getelementptr inbounds i8, ptr %4, i64 8
  %2046 = load double, ptr %2045, align 8, !tbaa !12
  %2047 = fneg double %2046
  %2048 = load <2 x double>, ptr %10, align 16, !tbaa !13
  %2049 = insertelement <2 x double> poison, double %2046, i64 0
  %2050 = insertelement <2 x double> %2049, double %2047, i64 1
  %2051 = fmul <2 x double> %2048, %2050
  %2052 = shufflevector <2 x double> %2051, <2 x double> poison, <2 x i32> <i32 1, i32 0>
  %2053 = insertelement <2 x double> poison, double %2044, i64 0
  %2054 = shufflevector <2 x double> %2053, <2 x double> poison, <2 x i32> zeroinitializer
  %2055 = call <2 x double> @llvm.fmuladd.v2f64(<2 x double> %2054, <2 x double> %2048, <2 x double> %2052)
  store <2 x double> %2055, ptr %9, align 16, !tbaa !13
  %2056 = getelementptr inbounds i8, ptr %3, i64 16
  %2057 = call { double, double } @Cd(ptr noundef nonnull %2056)
  %2058 = extractvalue { double, double } %2057, 0
  %2059 = extractvalue { double, double } %2057, 1
  %2060 = fneg double %2059
  %2061 = call ptr @_pCd(ptr noundef nonnull %9)
  %2062 = getelementptr inbounds i8, ptr %2061, i64 8
  store double %2058, ptr %2061, align 8
  store double %2060, ptr %2062, align 8
  %2063 = load <2 x double>, ptr %9, align 16, !tbaa !13
  store <2 x double> %2063, ptr %13, align 16, !tbaa !13
  %2064 = call { double, double } @Cd(ptr noundef nonnull %13)
  %2065 = extractvalue { double, double } %2064, 0
  %2066 = extractvalue { double, double } %2064, 1
  %2067 = fneg double %2066
  %2068 = call ptr @_pCd(ptr noundef nonnull %10)
  %2069 = getelementptr inbounds i8, ptr %2068, i64 8
  store double %2065, ptr %2068, align 8
  store double %2067, ptr %2069, align 8
  %2070 = load double, ptr %4, align 8, !tbaa !9
  %2071 = load double, ptr %2045, align 8, !tbaa !12
  %2072 = fneg double %2071
  %2073 = load <2 x double>, ptr %10, align 16, !tbaa !13
  %2074 = insertelement <2 x double> poison, double %2071, i64 0
  %2075 = insertelement <2 x double> %2074, double %2072, i64 1
  %2076 = fmul <2 x double> %2073, %2075
  %2077 = shufflevector <2 x double> %2076, <2 x double> poison, <2 x i32> <i32 1, i32 0>
  %2078 = insertelement <2 x double> poison, double %2070, i64 0
  %2079 = shufflevector <2 x double> %2078, <2 x double> poison, <2 x i32> zeroinitializer
  %2080 = call <2 x double> @llvm.fmuladd.v2f64(<2 x double> %2079, <2 x double> %2073, <2 x double> %2077)
  store <2 x double> %2080, ptr %9, align 16, !tbaa !13
  %2081 = getelementptr inbounds i8, ptr %3, i64 32
  %2082 = call { double, double } @Cd(ptr noundef nonnull %2081)
  %2083 = extractvalue { double, double } %2082, 0
  %2084 = extractvalue { double, double } %2082, 1
  %2085 = fneg double %2084
  %2086 = call ptr @_pCd(ptr noundef nonnull %9)
  %2087 = getelementptr inbounds i8, ptr %2086, i64 8
  store double %2083, ptr %2086, align 8
  store double %2085, ptr %2087, align 8
  %2088 = load <2 x double>, ptr %9, align 16, !tbaa !13
  store <2 x double> %2088, ptr %14, align 16, !tbaa !13
  %2089 = call { double, double } @Cd(ptr noundef nonnull %14)
  %2090 = extractvalue { double, double } %2089, 0
  %2091 = extractvalue { double, double } %2089, 1
  %2092 = fneg double %2091
  %2093 = call ptr @_pCd(ptr noundef nonnull %10)
  %2094 = getelementptr inbounds i8, ptr %2093, i64 8
  store double %2090, ptr %2093, align 8
  store double %2092, ptr %2094, align 8
  %2095 = load double, ptr %4, align 8, !tbaa !9
  %2096 = load double, ptr %2045, align 8, !tbaa !12
  %2097 = fneg double %2096
  %2098 = load <2 x double>, ptr %10, align 16, !tbaa !13
  %2099 = insertelement <2 x double> poison, double %2096, i64 0
  %2100 = insertelement <2 x double> %2099, double %2097, i64 1
  %2101 = fmul <2 x double> %2098, %2100
  %2102 = shufflevector <2 x double> %2101, <2 x double> poison, <2 x i32> <i32 1, i32 0>
  %2103 = insertelement <2 x double> poison, double %2095, i64 0
  %2104 = shufflevector <2 x double> %2103, <2 x double> poison, <2 x i32> zeroinitializer
  %2105 = call <2 x double> @llvm.fmuladd.v2f64(<2 x double> %2104, <2 x double> %2098, <2 x double> %2102)
  store <2 x double> %2105, ptr %9, align 16, !tbaa !13
  %2106 = getelementptr inbounds i8, ptr %3, i64 48
  %2107 = call { double, double } @Cd(ptr noundef nonnull %2106)
  %2108 = extractvalue { double, double } %2107, 0
  %2109 = extractvalue { double, double } %2107, 1
  %2110 = fneg double %2109
  %2111 = call ptr @_pCd(ptr noundef nonnull %9)
  %2112 = getelementptr inbounds i8, ptr %2111, i64 8
  store double %2108, ptr %2111, align 8
  store double %2110, ptr %2112, align 8
  %2113 = load <2 x double>, ptr %9, align 16, !tbaa !13
  store <2 x double> %2113, ptr %15, align 16, !tbaa !13
  %2114 = call { double, double } @Cd(ptr noundef nonnull %15)
  %2115 = extractvalue { double, double } %2114, 0
  %2116 = extractvalue { double, double } %2114, 1
  %2117 = fneg double %2116
  %2118 = call ptr @_pCd(ptr noundef nonnull %10)
  %2119 = getelementptr inbounds i8, ptr %2118, i64 8
  store double %2115, ptr %2118, align 8
  store double %2117, ptr %2119, align 8
  %2120 = load double, ptr %4, align 8, !tbaa !9
  %2121 = load double, ptr %2045, align 8, !tbaa !12
  %2122 = fneg double %2121
  %2123 = load <2 x double>, ptr %10, align 16, !tbaa !13
  %2124 = insertelement <2 x double> poison, double %2121, i64 0
  %2125 = insertelement <2 x double> %2124, double %2122, i64 1
  %2126 = fmul <2 x double> %2123, %2125
  %2127 = shufflevector <2 x double> %2126, <2 x double> poison, <2 x i32> <i32 1, i32 0>
  %2128 = insertelement <2 x double> poison, double %2120, i64 0
  %2129 = shufflevector <2 x double> %2128, <2 x double> poison, <2 x i32> zeroinitializer
  %2130 = call <2 x double> @llvm.fmuladd.v2f64(<2 x double> %2129, <2 x double> %2123, <2 x double> %2127)
  store <2 x double> %2130, ptr %9, align 16, !tbaa !13
  %2131 = getelementptr inbounds i8, ptr %3, i64 64
  %2132 = call { double, double } @Cd(ptr noundef nonnull %2131)
  %2133 = extractvalue { double, double } %2132, 0
  %2134 = extractvalue { double, double } %2132, 1
  %2135 = fneg double %2134
  %2136 = call ptr @_pCd(ptr noundef nonnull %9)
  %2137 = getelementptr inbounds i8, ptr %2136, i64 8
  store double %2133, ptr %2136, align 8
  store double %2135, ptr %2137, align 8
  %2138 = load <2 x double>, ptr %9, align 16, !tbaa !13
  store <2 x double> %2138, ptr %16, align 16, !tbaa !13
  %2139 = call { double, double } @Cd(ptr noundef nonnull %16)
  %2140 = extractvalue { double, double } %2139, 0
  %2141 = extractvalue { double, double } %2139, 1
  %2142 = fneg double %2141
  %2143 = call ptr @_pCd(ptr noundef nonnull %10)
  %2144 = getelementptr inbounds i8, ptr %2143, i64 8
  store double %2140, ptr %2143, align 8
  store double %2142, ptr %2144, align 8
  %2145 = load double, ptr %4, align 8, !tbaa !9
  %2146 = load double, ptr %2045, align 8, !tbaa !12
  %2147 = fneg double %2146
  %2148 = load <2 x double>, ptr %10, align 16, !tbaa !13
  %2149 = insertelement <2 x double> poison, double %2146, i64 0
  %2150 = insertelement <2 x double> %2149, double %2147, i64 1
  %2151 = fmul <2 x double> %2148, %2150
  %2152 = shufflevector <2 x double> %2151, <2 x double> poison, <2 x i32> <i32 1, i32 0>
  %2153 = insertelement <2 x double> poison, double %2145, i64 0
  %2154 = shufflevector <2 x double> %2153, <2 x double> poison, <2 x i32> zeroinitializer
  %2155 = call <2 x double> @llvm.fmuladd.v2f64(<2 x double> %2154, <2 x double> %2148, <2 x double> %2152)
  store <2 x double> %2155, ptr %9, align 16, !tbaa !13
  %2156 = getelementptr inbounds i8, ptr %3, i64 80
  %2157 = call { double, double } @Cd(ptr noundef nonnull %2156)
  %2158 = extractvalue { double, double } %2157, 0
  %2159 = extractvalue { double, double } %2157, 1
  %2160 = fneg double %2159
  %2161 = call ptr @_pCd(ptr noundef nonnull %9)
  %2162 = getelementptr inbounds i8, ptr %2161, i64 8
  store double %2158, ptr %2161, align 8
  store double %2160, ptr %2162, align 8
  %2163 = load <2 x double>, ptr %9, align 16, !tbaa !13
  store <2 x double> %2163, ptr %17, align 16, !tbaa !13
  %2164 = call { double, double } @Cd(ptr noundef nonnull %17)
  %2165 = extractvalue { double, double } %2164, 0
  %2166 = extractvalue { double, double } %2164, 1
  %2167 = fneg double %2166
  %2168 = call ptr @_pCd(ptr noundef nonnull %10)
  %2169 = getelementptr inbounds i8, ptr %2168, i64 8
  store double %2165, ptr %2168, align 8
  store double %2167, ptr %2169, align 8
  %2170 = load double, ptr %4, align 8, !tbaa !9
  %2171 = load double, ptr %2045, align 8, !tbaa !12
  %2172 = fneg double %2171
  %2173 = load <2 x double>, ptr %10, align 16, !tbaa !13
  %2174 = insertelement <2 x double> poison, double %2171, i64 0
  %2175 = insertelement <2 x double> %2174, double %2172, i64 1
  %2176 = fmul <2 x double> %2173, %2175
  %2177 = shufflevector <2 x double> %2176, <2 x double> poison, <2 x i32> <i32 1, i32 0>
  %2178 = insertelement <2 x double> poison, double %2170, i64 0
  %2179 = shufflevector <2 x double> %2178, <2 x double> poison, <2 x i32> zeroinitializer
  %2180 = call <2 x double> @llvm.fmuladd.v2f64(<2 x double> %2179, <2 x double> %2173, <2 x double> %2177)
  store <2 x double> %2180, ptr %9, align 16, !tbaa !13
  %2181 = getelementptr inbounds i8, ptr %3, i64 96
  %2182 = call { double, double } @Cd(ptr noundef nonnull %2181)
  %2183 = extractvalue { double, double } %2182, 0
  %2184 = extractvalue { double, double } %2182, 1
  %2185 = fneg double %2184
  %2186 = call ptr @_pCd(ptr noundef nonnull %9)
  %2187 = getelementptr inbounds i8, ptr %2186, i64 8
  store double %2183, ptr %2186, align 8
  store double %2185, ptr %2187, align 8
  %2188 = load <2 x double>, ptr %9, align 16, !tbaa !13
  store <2 x double> %2188, ptr %18, align 16, !tbaa !13
  %2189 = call { double, double } @Cd(ptr noundef nonnull %18)
  %2190 = extractvalue { double, double } %2189, 0
  %2191 = extractvalue { double, double } %2189, 1
  %2192 = fneg double %2191
  %2193 = call ptr @_pCd(ptr noundef nonnull %10)
  %2194 = getelementptr inbounds i8, ptr %2193, i64 8
  store double %2190, ptr %2193, align 8
  store double %2192, ptr %2194, align 8
  %2195 = load double, ptr %4, align 8, !tbaa !9
  %2196 = load double, ptr %2045, align 8, !tbaa !12
  %2197 = fneg double %2196
  %2198 = load <2 x double>, ptr %10, align 16, !tbaa !13
  %2199 = insertelement <2 x double> poison, double %2196, i64 0
  %2200 = insertelement <2 x double> %2199, double %2197, i64 1
  %2201 = fmul <2 x double> %2198, %2200
  %2202 = shufflevector <2 x double> %2201, <2 x double> poison, <2 x i32> <i32 1, i32 0>
  %2203 = insertelement <2 x double> poison, double %2195, i64 0
  %2204 = shufflevector <2 x double> %2203, <2 x double> poison, <2 x i32> zeroinitializer
  %2205 = call <2 x double> @llvm.fmuladd.v2f64(<2 x double> %2204, <2 x double> %2198, <2 x double> %2202)
  store <2 x double> %2205, ptr %9, align 16, !tbaa !13
  %2206 = getelementptr inbounds i8, ptr %3, i64 112
  %2207 = call { double, double } @Cd(ptr noundef nonnull %2206)
  %2208 = extractvalue { double, double } %2207, 0
  %2209 = extractvalue { double, double } %2207, 1
  %2210 = fneg double %2209
  %2211 = call ptr @_pCd(ptr noundef nonnull %9)
  %2212 = getelementptr inbounds i8, ptr %2211, i64 8
  store double %2208, ptr %2211, align 8
  store double %2210, ptr %2212, align 8
  %2213 = load <2 x double>, ptr %9, align 16, !tbaa !13
  store <2 x double> %2213, ptr %19, align 16, !tbaa !13
  %2214 = call { double, double } @Cd(ptr noundef nonnull %19)
  %2215 = extractvalue { double, double } %2214, 0
  %2216 = extractvalue { double, double } %2214, 1
  %2217 = fneg double %2216
  %2218 = call ptr @_pCd(ptr noundef nonnull %10)
  %2219 = getelementptr inbounds i8, ptr %2218, i64 8
  store double %2215, ptr %2218, align 8
  store double %2217, ptr %2219, align 8
  %2220 = load double, ptr %4, align 8, !tbaa !9
  %2221 = load double, ptr %2045, align 8, !tbaa !12
  %2222 = fneg double %2221
  %2223 = load <2 x double>, ptr %10, align 16, !tbaa !13
  %2224 = insertelement <2 x double> poison, double %2221, i64 0
  %2225 = insertelement <2 x double> %2224, double %2222, i64 1
  %2226 = fmul <2 x double> %2223, %2225
  %2227 = shufflevector <2 x double> %2226, <2 x double> poison, <2 x i32> <i32 1, i32 0>
  %2228 = insertelement <2 x double> poison, double %2220, i64 0
  %2229 = shufflevector <2 x double> %2228, <2 x double> poison, <2 x i32> zeroinitializer
  %2230 = call <2 x double> @llvm.fmuladd.v2f64(<2 x double> %2229, <2 x double> %2223, <2 x double> %2227)
  store <2 x double> %2230, ptr %9, align 16, !tbaa !13
  %2231 = getelementptr inbounds i8, ptr %3, i64 128
  %2232 = call { double, double } @Cd(ptr noundef nonnull %2231)
  %2233 = extractvalue { double, double } %2232, 0
  %2234 = extractvalue { double, double } %2232, 1
  %2235 = fneg double %2234
  %2236 = call ptr @_pCd(ptr noundef nonnull %9)
  %2237 = getelementptr inbounds i8, ptr %2236, i64 8
  store double %2233, ptr %2236, align 8
  store double %2235, ptr %2237, align 8
  %2238 = load <2 x double>, ptr %9, align 16, !tbaa !13
  store <2 x double> %2238, ptr %20, align 16, !tbaa !13
  %2239 = call { double, double } @Cd(ptr noundef nonnull %20)
  %2240 = extractvalue { double, double } %2239, 0
  %2241 = extractvalue { double, double } %2239, 1
  %2242 = fneg double %2241
  %2243 = call ptr @_pCd(ptr noundef nonnull %10)
  %2244 = getelementptr inbounds i8, ptr %2243, i64 8
  store double %2240, ptr %2243, align 8
  store double %2242, ptr %2244, align 8
  %2245 = load double, ptr %4, align 8, !tbaa !9
  %2246 = load double, ptr %2045, align 8, !tbaa !12
  %2247 = fneg double %2246
  %2248 = load <2 x double>, ptr %10, align 16, !tbaa !13
  %2249 = insertelement <2 x double> poison, double %2246, i64 0
  %2250 = insertelement <2 x double> %2249, double %2247, i64 1
  %2251 = fmul <2 x double> %2248, %2250
  %2252 = shufflevector <2 x double> %2251, <2 x double> poison, <2 x i32> <i32 1, i32 0>
  %2253 = insertelement <2 x double> poison, double %2245, i64 0
  %2254 = shufflevector <2 x double> %2253, <2 x double> poison, <2 x i32> zeroinitializer
  %2255 = call <2 x double> @llvm.fmuladd.v2f64(<2 x double> %2254, <2 x double> %2248, <2 x double> %2252)
  store <2 x double> %2255, ptr %9, align 16, !tbaa !13
  %2256 = getelementptr inbounds i8, ptr %3, i64 144
  %2257 = call { double, double } @Cd(ptr noundef nonnull %2256)
  %2258 = extractvalue { double, double } %2257, 0
  %2259 = extractvalue { double, double } %2257, 1
  %2260 = fneg double %2259
  %2261 = call ptr @_pCd(ptr noundef nonnull %9)
  %2262 = getelementptr inbounds i8, ptr %2261, i64 8
  store double %2258, ptr %2261, align 8
  store double %2260, ptr %2262, align 8
  %2263 = load <2 x double>, ptr %9, align 16, !tbaa !13
  store <2 x double> %2263, ptr %21, align 16, !tbaa !13
  %2264 = call { double, double } @Cd(ptr noundef nonnull %21)
  %2265 = extractvalue { double, double } %2264, 0
  %2266 = extractvalue { double, double } %2264, 1
  %2267 = fneg double %2266
  %2268 = call ptr @_pCd(ptr noundef nonnull %10)
  %2269 = getelementptr inbounds i8, ptr %2268, i64 8
  store double %2265, ptr %2268, align 8
  store double %2267, ptr %2269, align 8
  %2270 = load double, ptr %4, align 8, !tbaa !9
  %2271 = load double, ptr %2045, align 8, !tbaa !12
  %2272 = fneg double %2271
  %2273 = load <2 x double>, ptr %10, align 16, !tbaa !13
  %2274 = insertelement <2 x double> poison, double %2271, i64 0
  %2275 = insertelement <2 x double> %2274, double %2272, i64 1
  %2276 = fmul <2 x double> %2273, %2275
  %2277 = shufflevector <2 x double> %2276, <2 x double> poison, <2 x i32> <i32 1, i32 0>
  %2278 = insertelement <2 x double> poison, double %2270, i64 0
  %2279 = shufflevector <2 x double> %2278, <2 x double> poison, <2 x i32> zeroinitializer
  %2280 = call <2 x double> @llvm.fmuladd.v2f64(<2 x double> %2279, <2 x double> %2273, <2 x double> %2277)
  %2281 = load i32, ptr %2, align 4, !tbaa !5
  %.not42924323 = icmp slt i32 %2281, 1
  br i1 %.not42924323, label %.loopexit, label %.lr.ph

.lr.ph:                                           ; preds = %2030
  %2282 = getelementptr inbounds i8, ptr %21, i64 8
  %2283 = getelementptr inbounds i8, ptr %20, i64 8
  %2284 = getelementptr inbounds i8, ptr %19, i64 8
  %2285 = getelementptr inbounds i8, ptr %18, i64 8
  %2286 = getelementptr inbounds i8, ptr %17, i64 8
  %2287 = getelementptr inbounds i8, ptr %16, i64 8
  %2288 = getelementptr inbounds i8, ptr %15, i64 8
  %2289 = getelementptr inbounds i8, ptr %14, i64 8
  %2290 = getelementptr inbounds i8, ptr %13, i64 8
  %2291 = load <2 x double>, ptr %12, align 16
  %2292 = shufflevector <2 x double> %2291, <2 x double> poison, <2 x i32> <i32 1, i32 poison>
  %2293 = load double, ptr %13, align 16, !tbaa !9
  %2294 = load double, ptr %2290, align 8, !tbaa !12
  %2295 = insertelement <2 x double> %2292, double %2294, i64 1
  %2296 = fneg <2 x double> %2295
  %2297 = load double, ptr %14, align 16, !tbaa !9
  %2298 = load double, ptr %2289, align 8, !tbaa !12
  %2299 = fneg double %2298
  %2300 = load double, ptr %15, align 16, !tbaa !9
  %2301 = load double, ptr %2288, align 8, !tbaa !12
  %2302 = fneg double %2301
  %2303 = load double, ptr %16, align 16, !tbaa !9
  %2304 = load double, ptr %2287, align 8, !tbaa !12
  %2305 = fneg double %2304
  %2306 = load double, ptr %17, align 16, !tbaa !9
  %2307 = load double, ptr %2286, align 8, !tbaa !12
  %2308 = fneg double %2307
  %2309 = load double, ptr %18, align 16, !tbaa !9
  %2310 = load double, ptr %2285, align 8, !tbaa !12
  %2311 = fneg double %2310
  %2312 = load double, ptr %19, align 16, !tbaa !9
  %2313 = load double, ptr %2284, align 8, !tbaa !12
  %2314 = fneg double %2313
  %2315 = load double, ptr %20, align 16, !tbaa !9
  %2316 = load double, ptr %2283, align 8, !tbaa !12
  %2317 = fneg double %2316
  %2318 = load double, ptr %21, align 16, !tbaa !9
  %2319 = load double, ptr %2282, align 8, !tbaa !12
  %2320 = fneg double %2319
  %2321 = sext i32 %22 to i64
  %2322 = add nuw i32 %2281, 1
  %wide.trip.count = zext i32 %2322 to i64
  %2323 = insertelement <2 x double> %2291, double %2293, i64 1
  br label %2324

2324:                                             ; preds = %.lr.ph, %2324
  %indvars.iv = phi i64 [ 1, %.lr.ph ], [ %indvars.iv.next, %2324 ]
  %2325 = mul nsw i64 %indvars.iv, %2321
  %2326 = getelementptr %struct.doublecomplex, ptr %24, i64 %2325
  %2327 = getelementptr i8, ptr %2326, i64 16
  %2328 = load double, ptr %2327, align 8, !tbaa !9
  %2329 = getelementptr i8, ptr %2326, i64 24
  %2330 = load double, ptr %2329, align 8, !tbaa !12
  %2331 = getelementptr i8, ptr %2326, i64 32
  %2332 = load double, ptr %2331, align 8, !tbaa !9
  %2333 = getelementptr i8, ptr %2326, i64 40
  %2334 = load double, ptr %2333, align 8, !tbaa !12
  %2335 = insertelement <2 x double> poison, double %2330, i64 0
  %2336 = insertelement <2 x double> %2335, double %2334, i64 1
  %2337 = fmul <2 x double> %2336, %2296
  %2338 = insertelement <2 x double> poison, double %2328, i64 0
  %2339 = insertelement <2 x double> %2338, double %2332, i64 1
  %2340 = call <2 x double> @llvm.fmuladd.v2f64(<2 x double> %2323, <2 x double> %2339, <2 x double> %2337)
  %2341 = fmul <2 x double> %2339, %2295
  %2342 = call <2 x double> @llvm.fmuladd.v2f64(<2 x double> %2323, <2 x double> %2336, <2 x double> %2341)
  %shift6664 = shufflevector <2 x double> %2340, <2 x double> poison, <2 x i32> <i32 1, i32 poison>
  %2343 = fadd <2 x double> %2340, %shift6664
  %2344 = extractelement <2 x double> %2343, i64 0
  %shift6665 = shufflevector <2 x double> %2342, <2 x double> poison, <2 x i32> <i32 1, i32 poison>
  %2345 = fadd <2 x double> %2342, %shift6665
  %2346 = extractelement <2 x double> %2345, i64 0
  %2347 = getelementptr i8, ptr %2326, i64 48
  %2348 = load double, ptr %2347, align 8, !tbaa !9
  %2349 = getelementptr i8, ptr %2326, i64 56
  %2350 = load double, ptr %2349, align 8, !tbaa !12
  %2351 = fmul double %2350, %2299
  %2352 = call double @llvm.fmuladd.f64(double %2297, double %2348, double %2351)
  %2353 = fmul double %2348, %2298
  %2354 = call double @llvm.fmuladd.f64(double %2297, double %2350, double %2353)
  %2355 = fadd double %2344, %2352
  %2356 = fadd double %2346, %2354
  %2357 = getelementptr i8, ptr %2326, i64 64
  %2358 = load double, ptr %2357, align 8, !tbaa !9
  %2359 = getelementptr i8, ptr %2326, i64 72
  %2360 = load double, ptr %2359, align 8, !tbaa !12
  %2361 = fmul double %2360, %2302
  %2362 = call double @llvm.fmuladd.f64(double %2300, double %2358, double %2361)
  %2363 = fmul double %2358, %2301
  %2364 = call double @llvm.fmuladd.f64(double %2300, double %2360, double %2363)
  %2365 = fadd double %2355, %2362
  %2366 = fadd double %2356, %2364
  %2367 = getelementptr i8, ptr %2326, i64 80
  %2368 = load double, ptr %2367, align 8, !tbaa !9
  %2369 = getelementptr i8, ptr %2326, i64 88
  %2370 = load double, ptr %2369, align 8, !tbaa !12
  %2371 = fmul double %2370, %2305
  %2372 = call double @llvm.fmuladd.f64(double %2303, double %2368, double %2371)
  %2373 = fmul double %2368, %2304
  %2374 = call double @llvm.fmuladd.f64(double %2303, double %2370, double %2373)
  %2375 = fadd double %2365, %2372
  %2376 = fadd double %2366, %2374
  %2377 = getelementptr i8, ptr %2326, i64 96
  %2378 = load double, ptr %2377, align 8, !tbaa !9
  %2379 = getelementptr i8, ptr %2326, i64 104
  %2380 = load double, ptr %2379, align 8, !tbaa !12
  %2381 = fmul double %2380, %2308
  %2382 = call double @llvm.fmuladd.f64(double %2306, double %2378, double %2381)
  %2383 = fmul double %2378, %2307
  %2384 = call double @llvm.fmuladd.f64(double %2306, double %2380, double %2383)
  %2385 = fadd double %2375, %2382
  %2386 = fadd double %2376, %2384
  %2387 = getelementptr i8, ptr %2326, i64 112
  %2388 = load double, ptr %2387, align 8, !tbaa !9
  %2389 = getelementptr i8, ptr %2326, i64 120
  %2390 = load double, ptr %2389, align 8, !tbaa !12
  %2391 = fmul double %2390, %2311
  %2392 = call double @llvm.fmuladd.f64(double %2309, double %2388, double %2391)
  %2393 = fmul double %2388, %2310
  %2394 = call double @llvm.fmuladd.f64(double %2309, double %2390, double %2393)
  %2395 = fadd double %2385, %2392
  %2396 = fadd double %2386, %2394
  %2397 = getelementptr i8, ptr %2326, i64 128
  %2398 = load double, ptr %2397, align 8, !tbaa !9
  %2399 = getelementptr i8, ptr %2326, i64 136
  %2400 = load double, ptr %2399, align 8, !tbaa !12
  %2401 = fmul double %2400, %2314
  %2402 = call double @llvm.fmuladd.f64(double %2312, double %2398, double %2401)
  %2403 = fmul double %2398, %2313
  %2404 = call double @llvm.fmuladd.f64(double %2312, double %2400, double %2403)
  %2405 = fadd double %2395, %2402
  %2406 = fadd double %2396, %2404
  %2407 = getelementptr i8, ptr %2326, i64 144
  %2408 = load double, ptr %2407, align 8, !tbaa !9
  %2409 = getelementptr i8, ptr %2326, i64 152
  %2410 = load double, ptr %2409, align 8, !tbaa !12
  %2411 = fmul double %2410, %2317
  %2412 = call double @llvm.fmuladd.f64(double %2315, double %2408, double %2411)
  %2413 = fmul double %2408, %2316
  %2414 = call double @llvm.fmuladd.f64(double %2315, double %2410, double %2413)
  %2415 = fadd double %2405, %2412
  %2416 = fadd double %2406, %2414
  %2417 = getelementptr i8, ptr %2326, i64 160
  %2418 = load double, ptr %2417, align 8, !tbaa !9
  %2419 = getelementptr i8, ptr %2326, i64 168
  %2420 = load double, ptr %2419, align 8, !tbaa !12
  %2421 = fmul double %2420, %2320
  %2422 = call double @llvm.fmuladd.f64(double %2318, double %2418, double %2421)
  %2423 = fmul double %2418, %2319
  %2424 = call double @llvm.fmuladd.f64(double %2318, double %2420, double %2423)
  %2425 = fadd double %2415, %2422
  %2426 = fadd double %2424, %2416
  %2427 = fneg double %2426
  %2428 = insertelement <2 x double> poison, double %2426, i64 0
  %2429 = insertelement <2 x double> %2428, double %2427, i64 1
  %2430 = fmul <2 x double> %2055, %2429
  %2431 = shufflevector <2 x double> %2430, <2 x double> poison, <2 x i32> <i32 1, i32 0>
  %2432 = insertelement <2 x double> poison, double %2425, i64 0
  %2433 = shufflevector <2 x double> %2432, <2 x double> poison, <2 x i32> zeroinitializer
  %2434 = call <2 x double> @llvm.fmuladd.v2f64(<2 x double> %2433, <2 x double> %2055, <2 x double> %2431)
  %2435 = load <2 x double>, ptr %2327, align 8, !tbaa !13
  %2436 = fsub <2 x double> %2435, %2434
  store <2 x double> %2436, ptr %2327, align 8, !tbaa !13
  %2437 = fmul <2 x double> %2080, %2429
  %2438 = shufflevector <2 x double> %2437, <2 x double> poison, <2 x i32> <i32 1, i32 0>
  %2439 = call <2 x double> @llvm.fmuladd.v2f64(<2 x double> %2433, <2 x double> %2080, <2 x double> %2438)
  %2440 = load <2 x double>, ptr %2331, align 8, !tbaa !13
  %2441 = fsub <2 x double> %2440, %2439
  store <2 x double> %2441, ptr %2331, align 8, !tbaa !13
  %2442 = fmul <2 x double> %2105, %2429
  %2443 = shufflevector <2 x double> %2442, <2 x double> poison, <2 x i32> <i32 1, i32 0>
  %2444 = call <2 x double> @llvm.fmuladd.v2f64(<2 x double> %2433, <2 x double> %2105, <2 x double> %2443)
  %2445 = load <2 x double>, ptr %2347, align 8, !tbaa !13
  %2446 = fsub <2 x double> %2445, %2444
  store <2 x double> %2446, ptr %2347, align 8, !tbaa !13
  %2447 = fmul <2 x double> %2130, %2429
  %2448 = shufflevector <2 x double> %2447, <2 x double> poison, <2 x i32> <i32 1, i32 0>
  %2449 = call <2 x double> @llvm.fmuladd.v2f64(<2 x double> %2433, <2 x double> %2130, <2 x double> %2448)
  %2450 = load <2 x double>, ptr %2357, align 8, !tbaa !13
  %2451 = fsub <2 x double> %2450, %2449
  store <2 x double> %2451, ptr %2357, align 8, !tbaa !13
  %2452 = fmul <2 x double> %2155, %2429
  %2453 = shufflevector <2 x double> %2452, <2 x double> poison, <2 x i32> <i32 1, i32 0>
  %2454 = call <2 x double> @llvm.fmuladd.v2f64(<2 x double> %2433, <2 x double> %2155, <2 x double> %2453)
  %2455 = load <2 x double>, ptr %2367, align 8, !tbaa !13
  %2456 = fsub <2 x double> %2455, %2454
  store <2 x double> %2456, ptr %2367, align 8, !tbaa !13
  %2457 = fmul <2 x double> %2180, %2429
  %2458 = shufflevector <2 x double> %2457, <2 x double> poison, <2 x i32> <i32 1, i32 0>
  %2459 = call <2 x double> @llvm.fmuladd.v2f64(<2 x double> %2433, <2 x double> %2180, <2 x double> %2458)
  %2460 = load <2 x double>, ptr %2377, align 8, !tbaa !13
  %2461 = fsub <2 x double> %2460, %2459
  store <2 x double> %2461, ptr %2377, align 8, !tbaa !13
  %2462 = fmul <2 x double> %2205, %2429
  %2463 = shufflevector <2 x double> %2462, <2 x double> poison, <2 x i32> <i32 1, i32 0>
  %2464 = call <2 x double> @llvm.fmuladd.v2f64(<2 x double> %2433, <2 x double> %2205, <2 x double> %2463)
  %2465 = load <2 x double>, ptr %2387, align 8, !tbaa !13
  %2466 = fsub <2 x double> %2465, %2464
  store <2 x double> %2466, ptr %2387, align 8, !tbaa !13
  %2467 = fmul <2 x double> %2230, %2429
  %2468 = shufflevector <2 x double> %2467, <2 x double> poison, <2 x i32> <i32 1, i32 0>
  %2469 = call <2 x double> @llvm.fmuladd.v2f64(<2 x double> %2433, <2 x double> %2230, <2 x double> %2468)
  %2470 = load <2 x double>, ptr %2397, align 8, !tbaa !13
  %2471 = fsub <2 x double> %2470, %2469
  store <2 x double> %2471, ptr %2397, align 8, !tbaa !13
  %2472 = fmul <2 x double> %2255, %2429
  %2473 = shufflevector <2 x double> %2472, <2 x double> poison, <2 x i32> <i32 1, i32 0>
  %2474 = call <2 x double> @llvm.fmuladd.v2f64(<2 x double> %2433, <2 x double> %2255, <2 x double> %2473)
  %2475 = load <2 x double>, ptr %2407, align 8, !tbaa !13
  %2476 = fsub <2 x double> %2475, %2474
  store <2 x double> %2476, ptr %2407, align 8, !tbaa !13
  %2477 = fmul <2 x double> %2280, %2429
  %2478 = shufflevector <2 x double> %2477, <2 x double> poison, <2 x i32> <i32 1, i32 0>
  %2479 = call <2 x double> @llvm.fmuladd.v2f64(<2 x double> %2433, <2 x double> %2280, <2 x double> %2478)
  %2480 = load <2 x double>, ptr %2417, align 8, !tbaa !13
  %2481 = fsub <2 x double> %2480, %2479
  store <2 x double> %2481, ptr %2417, align 8, !tbaa !13
  %indvars.iv.next = add nuw nsw i64 %indvars.iv, 1
  %exitcond.not = icmp eq i64 %indvars.iv.next, %wide.trip.count
  br i1 %exitcond.not, label %.loopexit, label %2324, !llvm.loop !24

2482:                                             ; preds = %31
  %2483 = load i32, ptr %2, align 4, !tbaa !5
  switch i32 %2483, label %2484 [
    i32 1, label %2485
    i32 2, label %2532
    i32 3, label %2682
    i32 4, label %2906
    i32 5, label %3205
    i32 6, label %3573
    i32 7, label %4010
    i32 8, label %4516
    i32 9, label %5099
    i32 10, label %5458
  ]

2484:                                             ; preds = %2482
  tail call void @zlarf_(ptr noundef %0, ptr noundef %1, ptr noundef nonnull %2, ptr noundef %3, ptr noundef nonnull @c__1, ptr noundef nonnull %4, ptr noundef %5, ptr noundef nonnull %6, ptr noundef %7) #6
  br label %.loopexit

2485:                                             ; preds = %2482
  %2486 = load double, ptr %4, align 8, !tbaa !9
  %2487 = load double, ptr %3, align 8, !tbaa !9
  %2488 = getelementptr inbounds i8, ptr %4, i64 8
  %2489 = load double, ptr %2488, align 8, !tbaa !12
  %2490 = getelementptr inbounds i8, ptr %3, i64 8
  %2491 = load double, ptr %2490, align 8, !tbaa !12
  %2492 = fneg double %2489
  %2493 = fmul double %2491, %2492
  %2494 = tail call double @llvm.fmuladd.f64(double %2486, double %2487, double %2493)
  %2495 = fmul double %2487, %2489
  %2496 = tail call double @llvm.fmuladd.f64(double %2486, double %2491, double %2495)
  %2497 = tail call { double, double } @Cd(ptr noundef nonnull %3)
  %2498 = extractvalue { double, double } %2497, 0
  %2499 = extractvalue { double, double } %2497, 1
  %2500 = fneg double %2499
  %2501 = call ptr @_pCd(ptr noundef nonnull %11)
  %2502 = getelementptr inbounds i8, ptr %2501, i64 8
  store double %2498, ptr %2501, align 8
  store double %2500, ptr %2502, align 8
  %2503 = load double, ptr %11, align 8, !tbaa !9
  %2504 = getelementptr inbounds i8, ptr %11, i64 8
  %2505 = load double, ptr %2504, align 8, !tbaa !12
  %2506 = fneg double %2496
  %2507 = fmul double %2505, %2506
  %2508 = call double @llvm.fmuladd.f64(double %2494, double %2503, double %2507)
  %2509 = fmul double %2496, %2503
  %2510 = call double @llvm.fmuladd.f64(double %2494, double %2505, double %2509)
  %2511 = fsub double 1.000000e+00, %2508
  %2512 = fsub double 0.000000e+00, %2510
  %2513 = load i32, ptr %1, align 4, !tbaa !5
  %.not42914534 = icmp slt i32 %2513, 1
  br i1 %.not42914534, label %.loopexit, label %.lr.ph4536

.lr.ph4536:                                       ; preds = %2485
  %2514 = fneg double %2512
  %2515 = sext i32 %22 to i64
  %2516 = add nuw i32 %2513, 1
  %wide.trip.count4741 = zext i32 %2516 to i64
  %invariant.gep4849 = getelementptr %struct.doublecomplex, ptr %24, i64 %2515
  %2517 = zext nneg i32 %2513 to i64
  %min.iters.check6608 = icmp eq i32 %2513, 1
  br i1 %min.iters.check6608, label %scalar.ph6607.preheader, label %vector.ph6609

vector.ph6609:                                    ; preds = %.lr.ph4536
  %n.vec6611 = and i64 %2517, 2147483646
  %ind.end6612 = or i64 %2517, 1
  %broadcast.splatinsert6620 = insertelement <2 x double> poison, double %2514, i64 0
  %broadcast.splat6621 = shufflevector <2 x double> %broadcast.splatinsert6620, <2 x double> poison, <2 x i32> zeroinitializer
  %broadcast.splatinsert6622 = insertelement <2 x double> poison, double %2511, i64 0
  %broadcast.splat6623 = shufflevector <2 x double> %broadcast.splatinsert6622, <2 x double> poison, <2 x i32> zeroinitializer
  %broadcast.splatinsert6624 = insertelement <2 x double> poison, double %2512, i64 0
  %broadcast.splat6625 = shufflevector <2 x double> %broadcast.splatinsert6624, <2 x double> poison, <2 x i32> zeroinitializer
  br label %vector.body6614

vector.body6614:                                  ; preds = %vector.body6614, %vector.ph6609
  %index6615 = phi i64 [ 0, %vector.ph6609 ], [ %index.next6627, %vector.body6614 ]
  %offset.idx6616 = or disjoint i64 %index6615, 1
  %2518 = getelementptr %struct.doublecomplex, ptr %invariant.gep4849, i64 %offset.idx6616
  %wide.vec6617 = load <4 x double>, ptr %2518, align 8, !tbaa !13
  %strided.vec6618 = shufflevector <4 x double> %wide.vec6617, <4 x double> poison, <2 x i32> <i32 0, i32 2>
  %strided.vec6619 = shufflevector <4 x double> %wide.vec6617, <4 x double> poison, <2 x i32> <i32 1, i32 3>
  %2519 = fmul <2 x double> %strided.vec6619, %broadcast.splat6621
  %2520 = call <2 x double> @llvm.fmuladd.v2f64(<2 x double> %broadcast.splat6623, <2 x double> %strided.vec6618, <2 x double> %2519)
  %2521 = fmul <2 x double> %broadcast.splat6625, %strided.vec6618
  %2522 = call <2 x double> @llvm.fmuladd.v2f64(<2 x double> %broadcast.splat6623, <2 x double> %strided.vec6619, <2 x double> %2521)
  %interleaved.vec6626 = shufflevector <2 x double> %2520, <2 x double> %2522, <4 x i32> <i32 0, i32 2, i32 1, i32 3>
  store <4 x double> %interleaved.vec6626, ptr %2518, align 8, !tbaa !13
  %index.next6627 = add nuw i64 %index6615, 2
  %2523 = icmp eq i64 %index.next6627, %n.vec6611
  br i1 %2523, label %middle.block6606, label %vector.body6614, !llvm.loop !25

middle.block6606:                                 ; preds = %vector.body6614
  %cmp.n6628 = icmp eq i64 %n.vec6611, %2517
  br i1 %cmp.n6628, label %.loopexit, label %scalar.ph6607.preheader

scalar.ph6607.preheader:                          ; preds = %middle.block6606, %.lr.ph4536
  %indvars.iv4738.ph = phi i64 [ 1, %.lr.ph4536 ], [ %ind.end6612, %middle.block6606 ]
  %2524 = insertelement <2 x double> poison, double %2512, i64 0
  %2525 = insertelement <2 x double> %2524, double %2514, i64 1
  %2526 = insertelement <2 x double> poison, double %2511, i64 0
  %2527 = shufflevector <2 x double> %2526, <2 x double> poison, <2 x i32> zeroinitializer
  br label %scalar.ph6607

scalar.ph6607:                                    ; preds = %scalar.ph6607.preheader, %scalar.ph6607
  %indvars.iv4738 = phi i64 [ %indvars.iv.next4739, %scalar.ph6607 ], [ %indvars.iv4738.ph, %scalar.ph6607.preheader ]
  %gep4850 = getelementptr %struct.doublecomplex, ptr %invariant.gep4849, i64 %indvars.iv4738
  %2528 = load <2 x double>, ptr %gep4850, align 8, !tbaa !13
  %2529 = fmul <2 x double> %2528, %2525
  %2530 = shufflevector <2 x double> %2529, <2 x double> poison, <2 x i32> <i32 1, i32 0>
  %2531 = call <2 x double> @llvm.fmuladd.v2f64(<2 x double> %2527, <2 x double> %2528, <2 x double> %2530)
  store <2 x double> %2531, ptr %gep4850, align 8, !tbaa !13
  %indvars.iv.next4739 = add nuw nsw i64 %indvars.iv4738, 1
  %exitcond4742.not = icmp eq i64 %indvars.iv.next4739, %wide.trip.count4741
  br i1 %exitcond4742.not, label %.loopexit, label %scalar.ph6607, !llvm.loop !28

2532:                                             ; preds = %2482
  %2533 = load <2 x double>, ptr %3, align 8, !tbaa !13
  store <2 x double> %2533, ptr %12, align 16, !tbaa !13
  %2534 = call { double, double } @Cd(ptr noundef nonnull %12)
  %2535 = extractvalue { double, double } %2534, 0
  %2536 = extractvalue { double, double } %2534, 1
  %2537 = fneg double %2536
  %2538 = call ptr @_pCd(ptr noundef nonnull %10)
  %2539 = getelementptr inbounds i8, ptr %2538, i64 8
  store double %2535, ptr %2538, align 8
  store double %2537, ptr %2539, align 8
  %2540 = load double, ptr %4, align 8, !tbaa !9
  %2541 = getelementptr inbounds i8, ptr %4, i64 8
  %2542 = load double, ptr %2541, align 8, !tbaa !12
  %2543 = fneg double %2542
  %2544 = load <2 x double>, ptr %10, align 16, !tbaa !13
  %2545 = insertelement <2 x double> poison, double %2542, i64 0
  %2546 = insertelement <2 x double> %2545, double %2543, i64 1
  %2547 = fmul <2 x double> %2544, %2546
  %2548 = shufflevector <2 x double> %2547, <2 x double> poison, <2 x i32> <i32 1, i32 0>
  %2549 = insertelement <2 x double> poison, double %2540, i64 0
  %2550 = shufflevector <2 x double> %2549, <2 x double> poison, <2 x i32> zeroinitializer
  %2551 = call <2 x double> @llvm.fmuladd.v2f64(<2 x double> %2550, <2 x double> %2544, <2 x double> %2548)
  store <2 x double> %2551, ptr %9, align 16, !tbaa !13
  %2552 = getelementptr inbounds i8, ptr %3, i64 16
  %2553 = load <2 x double>, ptr %2552, align 8, !tbaa !13
  store <2 x double> %2553, ptr %13, align 16, !tbaa !13
  %2554 = call { double, double } @Cd(ptr noundef nonnull %13)
  %2555 = extractvalue { double, double } %2554, 0
  %2556 = extractvalue { double, double } %2554, 1
  %2557 = fneg double %2556
  %2558 = call ptr @_pCd(ptr noundef nonnull %10)
  %2559 = getelementptr inbounds i8, ptr %2558, i64 8
  store double %2555, ptr %2558, align 8
  store double %2557, ptr %2559, align 8
  %2560 = load double, ptr %4, align 8, !tbaa !9
  %2561 = load double, ptr %2541, align 8, !tbaa !12
  %2562 = fneg double %2561
  %2563 = load <2 x double>, ptr %10, align 16, !tbaa !13
  %2564 = insertelement <2 x double> poison, double %2561, i64 0
  %2565 = insertelement <2 x double> %2564, double %2562, i64 1
  %2566 = fmul <2 x double> %2563, %2565
  %2567 = shufflevector <2 x double> %2566, <2 x double> poison, <2 x i32> <i32 1, i32 0>
  %2568 = insertelement <2 x double> poison, double %2560, i64 0
  %2569 = shufflevector <2 x double> %2568, <2 x double> poison, <2 x i32> zeroinitializer
  %2570 = call <2 x double> @llvm.fmuladd.v2f64(<2 x double> %2569, <2 x double> %2563, <2 x double> %2567)
  %2571 = load i32, ptr %1, align 4, !tbaa !5
  %.not42904527 = icmp slt i32 %2571, 1
  br i1 %.not42904527, label %.loopexit, label %.lr.ph4529

.lr.ph4529:                                       ; preds = %2532
  %2572 = getelementptr inbounds i8, ptr %13, i64 8
  %2573 = getelementptr inbounds i8, ptr %12, i64 8
  %2574 = load double, ptr %12, align 16, !tbaa !9
  %2575 = load double, ptr %2573, align 8, !tbaa !12
  %2576 = shl i32 %22, 1
  %2577 = load double, ptr %13, align 16, !tbaa !9
  %2578 = load double, ptr %2572, align 8, !tbaa !12
  %2579 = insertelement <2 x double> poison, double %2575, i64 0
  %2580 = insertelement <2 x double> %2579, double %2578, i64 1
  %2581 = fneg <2 x double> %2580
  %2582 = sext i32 %22 to i64
  %2583 = sext i32 %2576 to i64
  %2584 = add nuw i32 %2571, 1
  %wide.trip.count4736 = zext i32 %2584 to i64
  %invariant.gep4845 = getelementptr %struct.doublecomplex, ptr %24, i64 %2582
  %invariant.gep4847 = getelementptr %struct.doublecomplex, ptr %24, i64 %2583
  %2585 = zext nneg i32 %2571 to i64
  %min.iters.check6564 = icmp ult i32 %2571, 10
  br i1 %min.iters.check6564, label %scalar.ph6563.preheader, label %vector.scevcheck6529

vector.scevcheck6529:                             ; preds = %.lr.ph4529
  %2586 = add nsw i64 %wide.trip.count4736, -2
  %2587 = shl nsw i64 %2582, 4
  %2588 = shl nsw i64 %23, 4
  %2589 = getelementptr i8, ptr %5, i64 %2587
  %2590 = getelementptr i8, ptr %2589, i64 %2588
  %scevgep6530 = getelementptr i8, ptr %2590, i64 16
  %mul.result6532 = shl nsw i64 %2586, 4
  %2591 = getelementptr i8, ptr %scevgep6530, i64 %mul.result6532
  %2592 = icmp ult ptr %2591, %scevgep6530
  %2593 = shl nsw i64 %2583, 4
  %2594 = getelementptr i8, ptr %5, i64 %2593
  %2595 = getelementptr i8, ptr %2594, i64 %2588
  %scevgep6534 = getelementptr i8, ptr %2595, i64 16
  %mul.result6536 = shl nsw i64 %2586, 4
  %mul.overflow6537 = icmp ugt i64 %2586, 1152921504606846975
  %2596 = getelementptr i8, ptr %scevgep6534, i64 %mul.result6536
  %2597 = icmp ult ptr %2596, %scevgep6534
  %2598 = or i1 %2597, %mul.overflow6537
  %2599 = getelementptr i8, ptr %5, i64 %2587
  %2600 = getelementptr i8, ptr %2599, i64 %2588
  %scevgep6538 = getelementptr i8, ptr %2600, i64 24
  %mul.result6540 = shl nsw i64 %2586, 4
  %2601 = getelementptr i8, ptr %scevgep6538, i64 %mul.result6540
  %2602 = icmp ult ptr %2601, %scevgep6538
  %2603 = getelementptr i8, ptr %5, i64 %2593
  %2604 = getelementptr i8, ptr %2603, i64 %2588
  %scevgep6542 = getelementptr i8, ptr %2604, i64 24
  %mul.result6544 = shl nsw i64 %2586, 4
  %2605 = getelementptr i8, ptr %scevgep6542, i64 %mul.result6544
  %2606 = icmp ult ptr %2605, %scevgep6542
  %2607 = or i1 %2592, %2598
  %2608 = or i1 %2602, %2607
  %2609 = or i1 %2606, %2608
  br i1 %2609, label %scalar.ph6563.preheader, label %vector.memcheck6546

vector.memcheck6546:                              ; preds = %vector.scevcheck6529
  %2610 = shl nsw i64 %2582, 4
  %2611 = shl nsw i64 %23, 4
  %2612 = add nsw i64 %2610, %2611
  %2613 = getelementptr i8, ptr %5, i64 %2612
  %scevgep6547 = getelementptr i8, ptr %2613, i64 16
  %2614 = shl nuw nsw i64 %wide.trip.count4736, 4
  %2615 = getelementptr i8, ptr %5, i64 %2612
  %2616 = getelementptr i8, ptr %2615, i64 %2614
  %scevgep6548 = getelementptr i8, ptr %2616, i64 -8
  %2617 = shl nsw i64 %2583, 4
  %2618 = add nsw i64 %2617, %2611
  %2619 = getelementptr i8, ptr %5, i64 %2618
  %scevgep6549 = getelementptr i8, ptr %2619, i64 16
  %2620 = getelementptr i8, ptr %5, i64 %2618
  %2621 = getelementptr i8, ptr %2620, i64 %2614
  %scevgep6550 = getelementptr i8, ptr %2621, i64 -8
  %2622 = add nsw i64 %2610, %2611
  %2623 = getelementptr i8, ptr %5, i64 %2622
  %scevgep6551 = getelementptr i8, ptr %2623, i64 24
  %2624 = getelementptr i8, ptr %5, i64 %2622
  %scevgep6552 = getelementptr i8, ptr %2624, i64 %2614
  %2625 = add nsw i64 %2617, %2611
  %2626 = getelementptr i8, ptr %5, i64 %2625
  %scevgep6553 = getelementptr i8, ptr %2626, i64 24
  %2627 = getelementptr i8, ptr %5, i64 %2625
  %scevgep6554 = getelementptr i8, ptr %2627, i64 %2614
  %bound06555 = icmp ult ptr %scevgep6547, %scevgep6550
  %bound16556 = icmp ult ptr %scevgep6549, %scevgep6548
  %found.conflict6557 = and i1 %bound06555, %bound16556
  %bound06558 = icmp ult ptr %scevgep6551, %scevgep6554
  %bound16559 = icmp ult ptr %scevgep6553, %scevgep6552
  %found.conflict6560 = and i1 %bound06558, %bound16559
  %conflict.rdx6561 = or i1 %found.conflict6557, %found.conflict6560
  br i1 %conflict.rdx6561, label %scalar.ph6563.preheader, label %vector.ph6565

vector.ph6565:                                    ; preds = %vector.memcheck6546
  %n.vec6567 = and i64 %2585, 2147483646
  %ind.end6568 = or i64 %2585, 1
  %broadcast.splat6577 = shufflevector <2 x double> %2581, <2 x double> poison, <2 x i32> zeroinitializer
  %broadcast.splatinsert6578 = insertelement <2 x double> poison, double %2574, i64 0
  %broadcast.splat6579 = shufflevector <2 x double> %broadcast.splatinsert6578, <2 x double> poison, <2 x i32> zeroinitializer
  %broadcast.splatinsert6580 = insertelement <2 x double> poison, double %2575, i64 0
  %broadcast.splat6581 = shufflevector <2 x double> %broadcast.splatinsert6580, <2 x double> poison, <2 x i32> zeroinitializer
  %broadcast.splat6586 = shufflevector <2 x double> %2581, <2 x double> poison, <2 x i32> <i32 1, i32 1>
  %broadcast.splatinsert6587 = insertelement <2 x double> poison, double %2577, i64 0
  %broadcast.splat6588 = shufflevector <2 x double> %broadcast.splatinsert6587, <2 x double> poison, <2 x i32> zeroinitializer
  %broadcast.splatinsert6589 = insertelement <2 x double> poison, double %2578, i64 0
  %broadcast.splat6590 = shufflevector <2 x double> %broadcast.splatinsert6589, <2 x double> poison, <2 x i32> zeroinitializer
  %broadcast.splat6592 = shufflevector <2 x double> %2551, <2 x double> poison, <2 x i32> <i32 1, i32 1>
  %broadcast.splat6594 = shufflevector <2 x double> %2551, <2 x double> poison, <2 x i32> zeroinitializer
  %broadcast.splat6597 = shufflevector <2 x double> %2570, <2 x double> poison, <2 x i32> <i32 1, i32 1>
  %broadcast.splat6599 = shufflevector <2 x double> %2570, <2 x double> poison, <2 x i32> zeroinitializer
  br label %vector.body6570

vector.body6570:                                  ; preds = %vector.body6570, %vector.ph6565
  %index6571 = phi i64 [ 0, %vector.ph6565 ], [ %index.next6604, %vector.body6570 ]
  %offset.idx6572 = or disjoint i64 %index6571, 1
  %2628 = getelementptr %struct.doublecomplex, ptr %invariant.gep4845, i64 %offset.idx6572
  %wide.vec6573 = load <4 x double>, ptr %2628, align 8, !tbaa !13
  %strided.vec6574 = shufflevector <4 x double> %wide.vec6573, <4 x double> poison, <2 x i32> <i32 0, i32 2>
  %strided.vec6575 = shufflevector <4 x double> %wide.vec6573, <4 x double> poison, <2 x i32> <i32 1, i32 3>
  %2629 = fmul <2 x double> %strided.vec6575, %broadcast.splat6577
  %2630 = call <2 x double> @llvm.fmuladd.v2f64(<2 x double> %broadcast.splat6579, <2 x double> %strided.vec6574, <2 x double> %2629)
  %2631 = fmul <2 x double> %strided.vec6574, %broadcast.splat6581
  %2632 = call <2 x double> @llvm.fmuladd.v2f64(<2 x double> %broadcast.splat6579, <2 x double> %strided.vec6575, <2 x double> %2631)
  %2633 = getelementptr %struct.doublecomplex, ptr %invariant.gep4847, i64 %offset.idx6572
  %wide.vec6582 = load <4 x double>, ptr %2633, align 8, !tbaa !13
  %strided.vec6583 = shufflevector <4 x double> %wide.vec6582, <4 x double> poison, <2 x i32> <i32 0, i32 2>
  %strided.vec6584 = shufflevector <4 x double> %wide.vec6582, <4 x double> poison, <2 x i32> <i32 1, i32 3>
  %2634 = fmul <2 x double> %strided.vec6584, %broadcast.splat6586
  %2635 = call <2 x double> @llvm.fmuladd.v2f64(<2 x double> %broadcast.splat6588, <2 x double> %strided.vec6583, <2 x double> %2634)
  %2636 = fmul <2 x double> %strided.vec6583, %broadcast.splat6590
  %2637 = call <2 x double> @llvm.fmuladd.v2f64(<2 x double> %broadcast.splat6588, <2 x double> %strided.vec6584, <2 x double> %2636)
  %2638 = fadd <2 x double> %2630, %2635
  %2639 = fadd <2 x double> %2632, %2637
  %2640 = fneg <2 x double> %2639
  %2641 = fmul <2 x double> %broadcast.splat6592, %2640
  %2642 = call <2 x double> @llvm.fmuladd.v2f64(<2 x double> %2638, <2 x double> %broadcast.splat6594, <2 x double> %2641)
  %2643 = fmul <2 x double> %broadcast.splat6594, %2639
  %2644 = call <2 x double> @llvm.fmuladd.v2f64(<2 x double> %2638, <2 x double> %broadcast.splat6592, <2 x double> %2643)
  %2645 = fsub <2 x double> %strided.vec6574, %2642
  %2646 = fsub <2 x double> %strided.vec6575, %2644
  %interleaved.vec6595 = shufflevector <2 x double> %2645, <2 x double> %2646, <4 x i32> <i32 0, i32 2, i32 1, i32 3>
  store <4 x double> %interleaved.vec6595, ptr %2628, align 8, !tbaa !13
  %2647 = fmul <2 x double> %broadcast.splat6597, %2640
  %2648 = call <2 x double> @llvm.fmuladd.v2f64(<2 x double> %2638, <2 x double> %broadcast.splat6599, <2 x double> %2647)
  %2649 = fmul <2 x double> %broadcast.splat6599, %2639
  %2650 = call <2 x double> @llvm.fmuladd.v2f64(<2 x double> %2638, <2 x double> %broadcast.splat6597, <2 x double> %2649)
  %wide.vec6600 = load <4 x double>, ptr %2633, align 8, !tbaa !13
  %strided.vec6601 = shufflevector <4 x double> %wide.vec6600, <4 x double> poison, <2 x i32> <i32 0, i32 2>
  %strided.vec6602 = shufflevector <4 x double> %wide.vec6600, <4 x double> poison, <2 x i32> <i32 1, i32 3>
  %2651 = fsub <2 x double> %strided.vec6601, %2648
  %2652 = fsub <2 x double> %strided.vec6602, %2650
  %interleaved.vec6603 = shufflevector <2 x double> %2651, <2 x double> %2652, <4 x i32> <i32 0, i32 2, i32 1, i32 3>
  store <4 x double> %interleaved.vec6603, ptr %2633, align 8, !tbaa !13
  %index.next6604 = add nuw i64 %index6571, 2
  %2653 = icmp eq i64 %index.next6604, %n.vec6567
  br i1 %2653, label %middle.block6562, label %vector.body6570, !llvm.loop !29

middle.block6562:                                 ; preds = %vector.body6570
  %cmp.n6605 = icmp eq i64 %n.vec6567, %2585
  br i1 %cmp.n6605, label %.loopexit, label %scalar.ph6563.preheader

scalar.ph6563.preheader:                          ; preds = %middle.block6562, %vector.memcheck6546, %vector.scevcheck6529, %.lr.ph4529
  %indvars.iv4733.ph = phi i64 [ 1, %vector.memcheck6546 ], [ 1, %vector.scevcheck6529 ], [ 1, %.lr.ph4529 ], [ %ind.end6568, %middle.block6562 ]
  %2654 = insertelement <2 x double> poison, double %2574, i64 0
  %2655 = insertelement <2 x double> %2654, double %2577, i64 1
  br label %scalar.ph6563

scalar.ph6563:                                    ; preds = %scalar.ph6563.preheader, %scalar.ph6563
  %indvars.iv4733 = phi i64 [ %indvars.iv.next4734, %scalar.ph6563 ], [ %indvars.iv4733.ph, %scalar.ph6563.preheader ]
  %gep4846 = getelementptr %struct.doublecomplex, ptr %invariant.gep4845, i64 %indvars.iv4733
  %gep4848 = getelementptr %struct.doublecomplex, ptr %invariant.gep4847, i64 %indvars.iv4733
  %2656 = load double, ptr %gep4848, align 8, !tbaa !9
  %2657 = getelementptr inbounds i8, ptr %gep4848, i64 8
  %2658 = load double, ptr %2657, align 8, !tbaa !12
  %2659 = load <2 x double>, ptr %gep4846, align 8, !tbaa !13
  %2660 = shufflevector <2 x double> %2659, <2 x double> poison, <2 x i32> <i32 1, i32 poison>
  %2661 = insertelement <2 x double> %2660, double %2658, i64 1
  %2662 = fmul <2 x double> %2661, %2581
  %2663 = insertelement <2 x double> %2659, double %2656, i64 1
  %2664 = call <2 x double> @llvm.fmuladd.v2f64(<2 x double> %2655, <2 x double> %2663, <2 x double> %2662)
  %2665 = fmul <2 x double> %2663, %2580
  %2666 = call <2 x double> @llvm.fmuladd.v2f64(<2 x double> %2655, <2 x double> %2661, <2 x double> %2665)
  %shift6666 = shufflevector <2 x double> %2664, <2 x double> poison, <2 x i32> <i32 1, i32 poison>
  %2667 = fadd <2 x double> %2664, %shift6666
  %shift6667 = shufflevector <2 x double> %2666, <2 x double> poison, <2 x i32> <i32 1, i32 poison>
  %2668 = fadd <2 x double> %2666, %shift6667
  %2669 = extractelement <2 x double> %2668, i64 0
  %2670 = fneg double %2669
  %2671 = insertelement <2 x double> %2668, double %2670, i64 1
  %2672 = fmul <2 x double> %2551, %2671
  %2673 = shufflevector <2 x double> %2672, <2 x double> poison, <2 x i32> <i32 1, i32 0>
  %2674 = shufflevector <2 x double> %2667, <2 x double> poison, <2 x i32> zeroinitializer
  %2675 = call <2 x double> @llvm.fmuladd.v2f64(<2 x double> %2674, <2 x double> %2551, <2 x double> %2673)
  %2676 = fsub <2 x double> %2659, %2675
  store <2 x double> %2676, ptr %gep4846, align 8, !tbaa !13
  %2677 = fmul <2 x double> %2570, %2671
  %2678 = shufflevector <2 x double> %2677, <2 x double> poison, <2 x i32> <i32 1, i32 0>
  %2679 = call <2 x double> @llvm.fmuladd.v2f64(<2 x double> %2674, <2 x double> %2570, <2 x double> %2678)
  %2680 = load <2 x double>, ptr %gep4848, align 8, !tbaa !13
  %2681 = fsub <2 x double> %2680, %2679
  store <2 x double> %2681, ptr %gep4848, align 8, !tbaa !13
  %indvars.iv.next4734 = add nuw nsw i64 %indvars.iv4733, 1
  %exitcond4737.not = icmp eq i64 %indvars.iv.next4734, %wide.trip.count4736
  br i1 %exitcond4737.not, label %.loopexit, label %scalar.ph6563, !llvm.loop !30

2682:                                             ; preds = %2482
  %2683 = load <2 x double>, ptr %3, align 8, !tbaa !13
  store <2 x double> %2683, ptr %12, align 16, !tbaa !13
  %2684 = call { double, double } @Cd(ptr noundef nonnull %12)
  %2685 = extractvalue { double, double } %2684, 0
  %2686 = extractvalue { double, double } %2684, 1
  %2687 = fneg double %2686
  %2688 = call ptr @_pCd(ptr noundef nonnull %10)
  %2689 = getelementptr inbounds i8, ptr %2688, i64 8
  store double %2685, ptr %2688, align 8
  store double %2687, ptr %2689, align 8
  %2690 = load double, ptr %4, align 8, !tbaa !9
  %2691 = getelementptr inbounds i8, ptr %4, i64 8
  %2692 = load double, ptr %2691, align 8, !tbaa !12
  %2693 = fneg double %2692
  %2694 = load <2 x double>, ptr %10, align 16, !tbaa !13
  %2695 = insertelement <2 x double> poison, double %2692, i64 0
  %2696 = insertelement <2 x double> %2695, double %2693, i64 1
  %2697 = fmul <2 x double> %2694, %2696
  %2698 = shufflevector <2 x double> %2697, <2 x double> poison, <2 x i32> <i32 1, i32 0>
  %2699 = insertelement <2 x double> poison, double %2690, i64 0
  %2700 = shufflevector <2 x double> %2699, <2 x double> poison, <2 x i32> zeroinitializer
  %2701 = call <2 x double> @llvm.fmuladd.v2f64(<2 x double> %2700, <2 x double> %2694, <2 x double> %2698)
  store <2 x double> %2701, ptr %9, align 16, !tbaa !13
  %2702 = getelementptr inbounds i8, ptr %3, i64 16
  %2703 = load <2 x double>, ptr %2702, align 8, !tbaa !13
  store <2 x double> %2703, ptr %13, align 16, !tbaa !13
  %2704 = call { double, double } @Cd(ptr noundef nonnull %13)
  %2705 = extractvalue { double, double } %2704, 0
  %2706 = extractvalue { double, double } %2704, 1
  %2707 = fneg double %2706
  %2708 = call ptr @_pCd(ptr noundef nonnull %10)
  %2709 = getelementptr inbounds i8, ptr %2708, i64 8
  store double %2705, ptr %2708, align 8
  store double %2707, ptr %2709, align 8
  %2710 = load double, ptr %4, align 8, !tbaa !9
  %2711 = load double, ptr %2691, align 8, !tbaa !12
  %2712 = fneg double %2711
  %2713 = load <2 x double>, ptr %10, align 16, !tbaa !13
  %2714 = insertelement <2 x double> poison, double %2711, i64 0
  %2715 = insertelement <2 x double> %2714, double %2712, i64 1
  %2716 = fmul <2 x double> %2713, %2715
  %2717 = shufflevector <2 x double> %2716, <2 x double> poison, <2 x i32> <i32 1, i32 0>
  %2718 = insertelement <2 x double> poison, double %2710, i64 0
  %2719 = shufflevector <2 x double> %2718, <2 x double> poison, <2 x i32> zeroinitializer
  %2720 = call <2 x double> @llvm.fmuladd.v2f64(<2 x double> %2719, <2 x double> %2713, <2 x double> %2717)
  store <2 x double> %2720, ptr %9, align 16, !tbaa !13
  %2721 = getelementptr inbounds i8, ptr %3, i64 32
  %2722 = load <2 x double>, ptr %2721, align 8, !tbaa !13
  store <2 x double> %2722, ptr %14, align 16, !tbaa !13
  %2723 = call { double, double } @Cd(ptr noundef nonnull %14)
  %2724 = extractvalue { double, double } %2723, 0
  %2725 = extractvalue { double, double } %2723, 1
  %2726 = fneg double %2725
  %2727 = call ptr @_pCd(ptr noundef nonnull %10)
  %2728 = getelementptr inbounds i8, ptr %2727, i64 8
  store double %2724, ptr %2727, align 8
  store double %2726, ptr %2728, align 8
  %2729 = load double, ptr %4, align 8, !tbaa !9
  %2730 = load double, ptr %2691, align 8, !tbaa !12
  %2731 = fneg double %2730
  %2732 = load <2 x double>, ptr %10, align 16, !tbaa !13
  %2733 = insertelement <2 x double> poison, double %2730, i64 0
  %2734 = insertelement <2 x double> %2733, double %2731, i64 1
  %2735 = fmul <2 x double> %2732, %2734
  %2736 = shufflevector <2 x double> %2735, <2 x double> poison, <2 x i32> <i32 1, i32 0>
  %2737 = insertelement <2 x double> poison, double %2729, i64 0
  %2738 = shufflevector <2 x double> %2737, <2 x double> poison, <2 x i32> zeroinitializer
  %2739 = call <2 x double> @llvm.fmuladd.v2f64(<2 x double> %2738, <2 x double> %2732, <2 x double> %2736)
  %2740 = load i32, ptr %1, align 4, !tbaa !5
  %.not42894518 = icmp slt i32 %2740, 1
  br i1 %.not42894518, label %.loopexit, label %.lr.ph4520

.lr.ph4520:                                       ; preds = %2682
  %2741 = getelementptr inbounds i8, ptr %14, i64 8
  %2742 = getelementptr inbounds i8, ptr %13, i64 8
  %2743 = getelementptr inbounds i8, ptr %12, i64 8
  %2744 = load double, ptr %12, align 16, !tbaa !9
  %2745 = load double, ptr %2743, align 8, !tbaa !12
  %2746 = shl i32 %22, 1
  %2747 = load double, ptr %13, align 16, !tbaa !9
  %2748 = load double, ptr %2742, align 8, !tbaa !12
  %2749 = insertelement <2 x double> poison, double %2745, i64 0
  %2750 = insertelement <2 x double> %2749, double %2748, i64 1
  %2751 = fneg <2 x double> %2750
  %2752 = mul i32 %22, 3
  %2753 = load double, ptr %14, align 16, !tbaa !9
  %2754 = load double, ptr %2741, align 8, !tbaa !12
  %2755 = fneg double %2754
  %2756 = sext i32 %22 to i64
  %2757 = sext i32 %2746 to i64
  %2758 = sext i32 %2752 to i64
  %2759 = add nuw i32 %2740, 1
  %wide.trip.count4731 = zext i32 %2759 to i64
  %invariant.gep4839 = getelementptr %struct.doublecomplex, ptr %24, i64 %2756
  %invariant.gep4841 = getelementptr %struct.doublecomplex, ptr %24, i64 %2757
  %invariant.gep4843 = getelementptr %struct.doublecomplex, ptr %24, i64 %2758
  %2760 = zext nneg i32 %2740 to i64
  %min.iters.check6470 = icmp ult i32 %2740, 10
  br i1 %min.iters.check6470, label %scalar.ph6469.preheader, label %vector.scevcheck6407

vector.scevcheck6407:                             ; preds = %.lr.ph4520
  %2761 = add nsw i64 %wide.trip.count4731, -2
  %2762 = shl nsw i64 %2756, 4
  %2763 = shl nsw i64 %23, 4
  %2764 = getelementptr i8, ptr %5, i64 %2762
  %2765 = getelementptr i8, ptr %2764, i64 %2763
  %scevgep6408 = getelementptr i8, ptr %2765, i64 16
  %mul.result6410 = shl nsw i64 %2761, 4
  %2766 = getelementptr i8, ptr %scevgep6408, i64 %mul.result6410
  %2767 = icmp ult ptr %2766, %scevgep6408
  %2768 = shl nsw i64 %2757, 4
  %2769 = getelementptr i8, ptr %5, i64 %2768
  %2770 = getelementptr i8, ptr %2769, i64 %2763
  %scevgep6412 = getelementptr i8, ptr %2770, i64 16
  %mul.result6414 = shl nsw i64 %2761, 4
  %mul.overflow6415 = icmp ugt i64 %2761, 1152921504606846975
  %2771 = getelementptr i8, ptr %scevgep6412, i64 %mul.result6414
  %2772 = icmp ult ptr %2771, %scevgep6412
  %2773 = or i1 %2772, %mul.overflow6415
  %2774 = shl nsw i64 %2758, 4
  %2775 = getelementptr i8, ptr %5, i64 %2774
  %2776 = getelementptr i8, ptr %2775, i64 %2763
  %scevgep6416 = getelementptr i8, ptr %2776, i64 16
  %mul.result6418 = shl nsw i64 %2761, 4
  %2777 = getelementptr i8, ptr %scevgep6416, i64 %mul.result6418
  %2778 = icmp ult ptr %2777, %scevgep6416
  %2779 = getelementptr i8, ptr %5, i64 %2762
  %2780 = getelementptr i8, ptr %2779, i64 %2763
  %scevgep6420 = getelementptr i8, ptr %2780, i64 24
  %mul.result6422 = shl nsw i64 %2761, 4
  %2781 = getelementptr i8, ptr %scevgep6420, i64 %mul.result6422
  %2782 = icmp ult ptr %2781, %scevgep6420
  %2783 = getelementptr i8, ptr %5, i64 %2768
  %2784 = getelementptr i8, ptr %2783, i64 %2763
  %scevgep6424 = getelementptr i8, ptr %2784, i64 24
  %mul.result6426 = shl nsw i64 %2761, 4
  %2785 = getelementptr i8, ptr %scevgep6424, i64 %mul.result6426
  %2786 = icmp ult ptr %2785, %scevgep6424
  %2787 = getelementptr i8, ptr %5, i64 %2774
  %2788 = getelementptr i8, ptr %2787, i64 %2763
  %scevgep6428 = getelementptr i8, ptr %2788, i64 24
  %mul.result6430 = shl nsw i64 %2761, 4
  %2789 = getelementptr i8, ptr %scevgep6428, i64 %mul.result6430
  %2790 = icmp ult ptr %2789, %scevgep6428
  %2791 = or i1 %2767, %2773
  %2792 = or i1 %2778, %2791
  %2793 = or i1 %2782, %2792
  %2794 = or i1 %2786, %2793
  %2795 = or i1 %2790, %2794
  br i1 %2795, label %scalar.ph6469.preheader, label %vector.memcheck6432

vector.memcheck6432:                              ; preds = %vector.scevcheck6407
  %2796 = shl nsw i64 %2756, 4
  %2797 = shl nsw i64 %23, 4
  %2798 = add nsw i64 %2796, %2797
  %2799 = getelementptr i8, ptr %5, i64 %2798
  %scevgep6433 = getelementptr i8, ptr %2799, i64 16
  %2800 = shl nuw nsw i64 %wide.trip.count4731, 4
  %2801 = getelementptr i8, ptr %5, i64 %2798
  %2802 = getelementptr i8, ptr %2801, i64 %2800
  %scevgep6434 = getelementptr i8, ptr %2802, i64 -8
  %2803 = shl nsw i64 %2757, 4
  %2804 = add nsw i64 %2803, %2797
  %2805 = getelementptr i8, ptr %5, i64 %2804
  %scevgep6435 = getelementptr i8, ptr %2805, i64 16
  %2806 = getelementptr i8, ptr %5, i64 %2804
  %2807 = getelementptr i8, ptr %2806, i64 %2800
  %scevgep6436 = getelementptr i8, ptr %2807, i64 -8
  %2808 = shl nsw i64 %2758, 4
  %2809 = add nsw i64 %2808, %2797
  %2810 = getelementptr i8, ptr %5, i64 %2809
  %scevgep6437 = getelementptr i8, ptr %2810, i64 16
  %2811 = getelementptr i8, ptr %5, i64 %2809
  %2812 = getelementptr i8, ptr %2811, i64 %2800
  %scevgep6438 = getelementptr i8, ptr %2812, i64 -8
  %2813 = add nsw i64 %2796, %2797
  %2814 = getelementptr i8, ptr %5, i64 %2813
  %scevgep6439 = getelementptr i8, ptr %2814, i64 24
  %2815 = getelementptr i8, ptr %5, i64 %2813
  %scevgep6440 = getelementptr i8, ptr %2815, i64 %2800
  %2816 = add nsw i64 %2803, %2797
  %2817 = getelementptr i8, ptr %5, i64 %2816
  %scevgep6441 = getelementptr i8, ptr %2817, i64 24
  %2818 = getelementptr i8, ptr %5, i64 %2816
  %scevgep6442 = getelementptr i8, ptr %2818, i64 %2800
  %2819 = add nsw i64 %2808, %2797
  %2820 = getelementptr i8, ptr %5, i64 %2819
  %scevgep6443 = getelementptr i8, ptr %2820, i64 24
  %2821 = getelementptr i8, ptr %5, i64 %2819
  %scevgep6444 = getelementptr i8, ptr %2821, i64 %2800
  %bound06445 = icmp ult ptr %scevgep6433, %scevgep6436
  %bound16446 = icmp ult ptr %scevgep6435, %scevgep6434
  %found.conflict6447 = and i1 %bound06445, %bound16446
  %bound06448 = icmp ult ptr %scevgep6433, %scevgep6438
  %bound16449 = icmp ult ptr %scevgep6437, %scevgep6434
  %found.conflict6450 = and i1 %bound06448, %bound16449
  %conflict.rdx6451 = or i1 %found.conflict6447, %found.conflict6450
  %bound06452 = icmp ult ptr %scevgep6435, %scevgep6438
  %bound16453 = icmp ult ptr %scevgep6437, %scevgep6436
  %found.conflict6454 = and i1 %bound06452, %bound16453
  %conflict.rdx6455 = or i1 %conflict.rdx6451, %found.conflict6454
  %bound06456 = icmp ult ptr %scevgep6439, %scevgep6442
  %bound16457 = icmp ult ptr %scevgep6441, %scevgep6440
  %found.conflict6458 = and i1 %bound06456, %bound16457
  %conflict.rdx6459 = or i1 %conflict.rdx6455, %found.conflict6458
  %bound06460 = icmp ult ptr %scevgep6439, %scevgep6444
  %bound16461 = icmp ult ptr %scevgep6443, %scevgep6440
  %found.conflict6462 = and i1 %bound06460, %bound16461
  %conflict.rdx6463 = or i1 %conflict.rdx6459, %found.conflict6462
  %bound06464 = icmp ult ptr %scevgep6441, %scevgep6444
  %bound16465 = icmp ult ptr %scevgep6443, %scevgep6442
  %found.conflict6466 = and i1 %bound06464, %bound16465
  %conflict.rdx6467 = or i1 %conflict.rdx6463, %found.conflict6466
  br i1 %conflict.rdx6467, label %scalar.ph6469.preheader, label %vector.ph6471

vector.ph6471:                                    ; preds = %vector.memcheck6432
  %n.vec6473 = and i64 %2760, 2147483646
  %ind.end6474 = or i64 %2760, 1
  %broadcast.splat6483 = shufflevector <2 x double> %2751, <2 x double> poison, <2 x i32> zeroinitializer
  %broadcast.splatinsert6484 = insertelement <2 x double> poison, double %2744, i64 0
  %broadcast.splat6485 = shufflevector <2 x double> %broadcast.splatinsert6484, <2 x double> poison, <2 x i32> zeroinitializer
  %broadcast.splatinsert6486 = insertelement <2 x double> poison, double %2745, i64 0
  %broadcast.splat6487 = shufflevector <2 x double> %broadcast.splatinsert6486, <2 x double> poison, <2 x i32> zeroinitializer
  %broadcast.splat6492 = shufflevector <2 x double> %2751, <2 x double> poison, <2 x i32> <i32 1, i32 1>
  %broadcast.splatinsert6493 = insertelement <2 x double> poison, double %2747, i64 0
  %broadcast.splat6494 = shufflevector <2 x double> %broadcast.splatinsert6493, <2 x double> poison, <2 x i32> zeroinitializer
  %broadcast.splatinsert6495 = insertelement <2 x double> poison, double %2748, i64 0
  %broadcast.splat6496 = shufflevector <2 x double> %broadcast.splatinsert6495, <2 x double> poison, <2 x i32> zeroinitializer
  %broadcast.splatinsert6500 = insertelement <2 x double> poison, double %2755, i64 0
  %broadcast.splat6501 = shufflevector <2 x double> %broadcast.splatinsert6500, <2 x double> poison, <2 x i32> zeroinitializer
  %broadcast.splatinsert6502 = insertelement <2 x double> poison, double %2753, i64 0
  %broadcast.splat6503 = shufflevector <2 x double> %broadcast.splatinsert6502, <2 x double> poison, <2 x i32> zeroinitializer
  %broadcast.splatinsert6504 = insertelement <2 x double> poison, double %2754, i64 0
  %broadcast.splat6505 = shufflevector <2 x double> %broadcast.splatinsert6504, <2 x double> poison, <2 x i32> zeroinitializer
  %broadcast.splat6507 = shufflevector <2 x double> %2701, <2 x double> poison, <2 x i32> <i32 1, i32 1>
  %broadcast.splat6509 = shufflevector <2 x double> %2701, <2 x double> poison, <2 x i32> zeroinitializer
  %broadcast.splat6512 = shufflevector <2 x double> %2720, <2 x double> poison, <2 x i32> <i32 1, i32 1>
  %broadcast.splat6514 = shufflevector <2 x double> %2720, <2 x double> poison, <2 x i32> zeroinitializer
  %broadcast.splat6520 = shufflevector <2 x double> %2739, <2 x double> poison, <2 x i32> <i32 1, i32 1>
  %broadcast.splat6522 = shufflevector <2 x double> %2739, <2 x double> poison, <2 x i32> zeroinitializer
  br label %vector.body6476

vector.body6476:                                  ; preds = %vector.body6476, %vector.ph6471
  %index6477 = phi i64 [ 0, %vector.ph6471 ], [ %index.next6527, %vector.body6476 ]
  %offset.idx6478 = or disjoint i64 %index6477, 1
  %2822 = getelementptr %struct.doublecomplex, ptr %invariant.gep4839, i64 %offset.idx6478
  %wide.vec6479 = load <4 x double>, ptr %2822, align 8, !tbaa !13
  %strided.vec6480 = shufflevector <4 x double> %wide.vec6479, <4 x double> poison, <2 x i32> <i32 0, i32 2>
  %strided.vec6481 = shufflevector <4 x double> %wide.vec6479, <4 x double> poison, <2 x i32> <i32 1, i32 3>
  %2823 = fmul <2 x double> %strided.vec6481, %broadcast.splat6483
  %2824 = call <2 x double> @llvm.fmuladd.v2f64(<2 x double> %broadcast.splat6485, <2 x double> %strided.vec6480, <2 x double> %2823)
  %2825 = fmul <2 x double> %strided.vec6480, %broadcast.splat6487
  %2826 = call <2 x double> @llvm.fmuladd.v2f64(<2 x double> %broadcast.splat6485, <2 x double> %strided.vec6481, <2 x double> %2825)
  %2827 = getelementptr %struct.doublecomplex, ptr %invariant.gep4841, i64 %offset.idx6478
  %wide.vec6488 = load <4 x double>, ptr %2827, align 8, !tbaa !13
  %strided.vec6489 = shufflevector <4 x double> %wide.vec6488, <4 x double> poison, <2 x i32> <i32 0, i32 2>
  %strided.vec6490 = shufflevector <4 x double> %wide.vec6488, <4 x double> poison, <2 x i32> <i32 1, i32 3>
  %2828 = fmul <2 x double> %strided.vec6490, %broadcast.splat6492
  %2829 = call <2 x double> @llvm.fmuladd.v2f64(<2 x double> %broadcast.splat6494, <2 x double> %strided.vec6489, <2 x double> %2828)
  %2830 = fmul <2 x double> %strided.vec6489, %broadcast.splat6496
  %2831 = call <2 x double> @llvm.fmuladd.v2f64(<2 x double> %broadcast.splat6494, <2 x double> %strided.vec6490, <2 x double> %2830)
  %2832 = fadd <2 x double> %2824, %2829
  %2833 = fadd <2 x double> %2826, %2831
  %2834 = getelementptr %struct.doublecomplex, ptr %invariant.gep4843, i64 %offset.idx6478
  %wide.vec6497 = load <4 x double>, ptr %2834, align 8, !tbaa !13
  %strided.vec6498 = shufflevector <4 x double> %wide.vec6497, <4 x double> poison, <2 x i32> <i32 0, i32 2>
  %strided.vec6499 = shufflevector <4 x double> %wide.vec6497, <4 x double> poison, <2 x i32> <i32 1, i32 3>
  %2835 = fmul <2 x double> %strided.vec6499, %broadcast.splat6501
  %2836 = call <2 x double> @llvm.fmuladd.v2f64(<2 x double> %broadcast.splat6503, <2 x double> %strided.vec6498, <2 x double> %2835)
  %2837 = fmul <2 x double> %strided.vec6498, %broadcast.splat6505
  %2838 = call <2 x double> @llvm.fmuladd.v2f64(<2 x double> %broadcast.splat6503, <2 x double> %strided.vec6499, <2 x double> %2837)
  %2839 = fadd <2 x double> %2832, %2836
  %2840 = fadd <2 x double> %2833, %2838
  %2841 = fneg <2 x double> %2840
  %2842 = fmul <2 x double> %broadcast.splat6507, %2841
  %2843 = call <2 x double> @llvm.fmuladd.v2f64(<2 x double> %2839, <2 x double> %broadcast.splat6509, <2 x double> %2842)
  %2844 = fmul <2 x double> %broadcast.splat6509, %2840
  %2845 = call <2 x double> @llvm.fmuladd.v2f64(<2 x double> %2839, <2 x double> %broadcast.splat6507, <2 x double> %2844)
  %2846 = fsub <2 x double> %strided.vec6480, %2843
  %2847 = fsub <2 x double> %strided.vec6481, %2845
  %interleaved.vec6510 = shufflevector <2 x double> %2846, <2 x double> %2847, <4 x i32> <i32 0, i32 2, i32 1, i32 3>
  store <4 x double> %interleaved.vec6510, ptr %2822, align 8, !tbaa !13
  %2848 = fmul <2 x double> %broadcast.splat6512, %2841
  %2849 = call <2 x double> @llvm.fmuladd.v2f64(<2 x double> %2839, <2 x double> %broadcast.splat6514, <2 x double> %2848)
  %2850 = fmul <2 x double> %broadcast.splat6514, %2840
  %2851 = call <2 x double> @llvm.fmuladd.v2f64(<2 x double> %2839, <2 x double> %broadcast.splat6512, <2 x double> %2850)
  %wide.vec6515 = load <4 x double>, ptr %2827, align 8, !tbaa !13
  %strided.vec6516 = shufflevector <4 x double> %wide.vec6515, <4 x double> poison, <2 x i32> <i32 0, i32 2>
  %strided.vec6517 = shufflevector <4 x double> %wide.vec6515, <4 x double> poison, <2 x i32> <i32 1, i32 3>
  %2852 = fsub <2 x double> %strided.vec6516, %2849
  %2853 = fsub <2 x double> %strided.vec6517, %2851
  %interleaved.vec6518 = shufflevector <2 x double> %2852, <2 x double> %2853, <4 x i32> <i32 0, i32 2, i32 1, i32 3>
  store <4 x double> %interleaved.vec6518, ptr %2827, align 8, !tbaa !13
  %2854 = fmul <2 x double> %broadcast.splat6520, %2841
  %2855 = call <2 x double> @llvm.fmuladd.v2f64(<2 x double> %2839, <2 x double> %broadcast.splat6522, <2 x double> %2854)
  %2856 = fmul <2 x double> %broadcast.splat6522, %2840
  %2857 = call <2 x double> @llvm.fmuladd.v2f64(<2 x double> %2839, <2 x double> %broadcast.splat6520, <2 x double> %2856)
  %wide.vec6523 = load <4 x double>, ptr %2834, align 8, !tbaa !13
  %strided.vec6524 = shufflevector <4 x double> %wide.vec6523, <4 x double> poison, <2 x i32> <i32 0, i32 2>
  %strided.vec6525 = shufflevector <4 x double> %wide.vec6523, <4 x double> poison, <2 x i32> <i32 1, i32 3>
  %2858 = fsub <2 x double> %strided.vec6524, %2855
  %2859 = fsub <2 x double> %strided.vec6525, %2857
  %interleaved.vec6526 = shufflevector <2 x double> %2858, <2 x double> %2859, <4 x i32> <i32 0, i32 2, i32 1, i32 3>
  store <4 x double> %interleaved.vec6526, ptr %2834, align 8, !tbaa !13
  %index.next6527 = add nuw i64 %index6477, 2
  %2860 = icmp eq i64 %index.next6527, %n.vec6473
  br i1 %2860, label %middle.block6468, label %vector.body6476, !llvm.loop !31

middle.block6468:                                 ; preds = %vector.body6476
  %cmp.n6528 = icmp eq i64 %n.vec6473, %2760
  br i1 %cmp.n6528, label %.loopexit, label %scalar.ph6469.preheader

scalar.ph6469.preheader:                          ; preds = %middle.block6468, %vector.memcheck6432, %vector.scevcheck6407, %.lr.ph4520
  %indvars.iv4728.ph = phi i64 [ 1, %vector.memcheck6432 ], [ 1, %vector.scevcheck6407 ], [ 1, %.lr.ph4520 ], [ %ind.end6474, %middle.block6468 ]
  %2861 = insertelement <2 x double> poison, double %2744, i64 0
  %2862 = insertelement <2 x double> %2861, double %2747, i64 1
  br label %scalar.ph6469

scalar.ph6469:                                    ; preds = %scalar.ph6469.preheader, %scalar.ph6469
  %indvars.iv4728 = phi i64 [ %indvars.iv.next4729, %scalar.ph6469 ], [ %indvars.iv4728.ph, %scalar.ph6469.preheader ]
  %gep4840 = getelementptr %struct.doublecomplex, ptr %invariant.gep4839, i64 %indvars.iv4728
  %gep4842 = getelementptr %struct.doublecomplex, ptr %invariant.gep4841, i64 %indvars.iv4728
  %2863 = load double, ptr %gep4842, align 8, !tbaa !9
  %2864 = getelementptr inbounds i8, ptr %gep4842, i64 8
  %2865 = load double, ptr %2864, align 8, !tbaa !12
  %gep4844 = getelementptr %struct.doublecomplex, ptr %invariant.gep4843, i64 %indvars.iv4728
  %2866 = load double, ptr %gep4844, align 8, !tbaa !9
  %2867 = getelementptr inbounds i8, ptr %gep4844, i64 8
  %2868 = load double, ptr %2867, align 8, !tbaa !12
  %2869 = fmul double %2868, %2755
  %2870 = call double @llvm.fmuladd.f64(double %2753, double %2866, double %2869)
  %2871 = fmul double %2866, %2754
  %2872 = call double @llvm.fmuladd.f64(double %2753, double %2868, double %2871)
  %2873 = load <2 x double>, ptr %gep4840, align 8, !tbaa !13
  %2874 = shufflevector <2 x double> %2873, <2 x double> poison, <2 x i32> <i32 1, i32 poison>
  %2875 = insertelement <2 x double> %2874, double %2865, i64 1
  %2876 = fmul <2 x double> %2875, %2751
  %2877 = insertelement <2 x double> %2873, double %2863, i64 1
  %2878 = call <2 x double> @llvm.fmuladd.v2f64(<2 x double> %2862, <2 x double> %2877, <2 x double> %2876)
  %2879 = fmul <2 x double> %2877, %2750
  %2880 = call <2 x double> @llvm.fmuladd.v2f64(<2 x double> %2862, <2 x double> %2875, <2 x double> %2879)
  %shift6668 = shufflevector <2 x double> %2878, <2 x double> poison, <2 x i32> <i32 1, i32 poison>
  %2881 = fadd <2 x double> %2878, %shift6668
  %2882 = extractelement <2 x double> %2881, i64 0
  %shift6669 = shufflevector <2 x double> %2880, <2 x double> poison, <2 x i32> <i32 1, i32 poison>
  %2883 = fadd <2 x double> %2880, %shift6669
  %2884 = extractelement <2 x double> %2883, i64 0
  %2885 = fadd double %2882, %2870
  %2886 = fadd double %2884, %2872
  %2887 = fneg double %2886
  %2888 = insertelement <2 x double> poison, double %2886, i64 0
  %2889 = insertelement <2 x double> %2888, double %2887, i64 1
  %2890 = fmul <2 x double> %2701, %2889
  %2891 = shufflevector <2 x double> %2890, <2 x double> poison, <2 x i32> <i32 1, i32 0>
  %2892 = insertelement <2 x double> poison, double %2885, i64 0
  %2893 = shufflevector <2 x double> %2892, <2 x double> poison, <2 x i32> zeroinitializer
  %2894 = call <2 x double> @llvm.fmuladd.v2f64(<2 x double> %2893, <2 x double> %2701, <2 x double> %2891)
  %2895 = fsub <2 x double> %2873, %2894
  store <2 x double> %2895, ptr %gep4840, align 8, !tbaa !13
  %2896 = fmul <2 x double> %2720, %2889
  %2897 = shufflevector <2 x double> %2896, <2 x double> poison, <2 x i32> <i32 1, i32 0>
  %2898 = call <2 x double> @llvm.fmuladd.v2f64(<2 x double> %2893, <2 x double> %2720, <2 x double> %2897)
  %2899 = load <2 x double>, ptr %gep4842, align 8, !tbaa !13
  %2900 = fsub <2 x double> %2899, %2898
  store <2 x double> %2900, ptr %gep4842, align 8, !tbaa !13
  %2901 = fmul <2 x double> %2739, %2889
  %2902 = shufflevector <2 x double> %2901, <2 x double> poison, <2 x i32> <i32 1, i32 0>
  %2903 = call <2 x double> @llvm.fmuladd.v2f64(<2 x double> %2893, <2 x double> %2739, <2 x double> %2902)
  %2904 = load <2 x double>, ptr %gep4844, align 8, !tbaa !13
  %2905 = fsub <2 x double> %2904, %2903
  store <2 x double> %2905, ptr %gep4844, align 8, !tbaa !13
  %indvars.iv.next4729 = add nuw nsw i64 %indvars.iv4728, 1
  %exitcond4732.not = icmp eq i64 %indvars.iv.next4729, %wide.trip.count4731
  br i1 %exitcond4732.not, label %.loopexit, label %scalar.ph6469, !llvm.loop !32

2906:                                             ; preds = %2482
  %2907 = load <2 x double>, ptr %3, align 8, !tbaa !13
  store <2 x double> %2907, ptr %12, align 16, !tbaa !13
  %2908 = call { double, double } @Cd(ptr noundef nonnull %12)
  %2909 = extractvalue { double, double } %2908, 0
  %2910 = extractvalue { double, double } %2908, 1
  %2911 = fneg double %2910
  %2912 = call ptr @_pCd(ptr noundef nonnull %10)
  %2913 = getelementptr inbounds i8, ptr %2912, i64 8
  store double %2909, ptr %2912, align 8
  store double %2911, ptr %2913, align 8
  %2914 = load double, ptr %4, align 8, !tbaa !9
  %2915 = getelementptr inbounds i8, ptr %4, i64 8
  %2916 = load double, ptr %2915, align 8, !tbaa !12
  %2917 = fneg double %2916
  %2918 = load <2 x double>, ptr %10, align 16, !tbaa !13
  %2919 = insertelement <2 x double> poison, double %2916, i64 0
  %2920 = insertelement <2 x double> %2919, double %2917, i64 1
  %2921 = fmul <2 x double> %2918, %2920
  %2922 = shufflevector <2 x double> %2921, <2 x double> poison, <2 x i32> <i32 1, i32 0>
  %2923 = insertelement <2 x double> poison, double %2914, i64 0
  %2924 = shufflevector <2 x double> %2923, <2 x double> poison, <2 x i32> zeroinitializer
  %2925 = call <2 x double> @llvm.fmuladd.v2f64(<2 x double> %2924, <2 x double> %2918, <2 x double> %2922)
  store <2 x double> %2925, ptr %9, align 16, !tbaa !13
  %2926 = getelementptr inbounds i8, ptr %3, i64 16
  %2927 = load <2 x double>, ptr %2926, align 8, !tbaa !13
  store <2 x double> %2927, ptr %13, align 16, !tbaa !13
  %2928 = call { double, double } @Cd(ptr noundef nonnull %13)
  %2929 = extractvalue { double, double } %2928, 0
  %2930 = extractvalue { double, double } %2928, 1
  %2931 = fneg double %2930
  %2932 = call ptr @_pCd(ptr noundef nonnull %10)
  %2933 = getelementptr inbounds i8, ptr %2932, i64 8
  store double %2929, ptr %2932, align 8
  store double %2931, ptr %2933, align 8
  %2934 = load double, ptr %4, align 8, !tbaa !9
  %2935 = load double, ptr %2915, align 8, !tbaa !12
  %2936 = fneg double %2935
  %2937 = load <2 x double>, ptr %10, align 16, !tbaa !13
  %2938 = insertelement <2 x double> poison, double %2935, i64 0
  %2939 = insertelement <2 x double> %2938, double %2936, i64 1
  %2940 = fmul <2 x double> %2937, %2939
  %2941 = shufflevector <2 x double> %2940, <2 x double> poison, <2 x i32> <i32 1, i32 0>
  %2942 = insertelement <2 x double> poison, double %2934, i64 0
  %2943 = shufflevector <2 x double> %2942, <2 x double> poison, <2 x i32> zeroinitializer
  %2944 = call <2 x double> @llvm.fmuladd.v2f64(<2 x double> %2943, <2 x double> %2937, <2 x double> %2941)
  store <2 x double> %2944, ptr %9, align 16, !tbaa !13
  %2945 = getelementptr inbounds i8, ptr %3, i64 32
  %2946 = load <2 x double>, ptr %2945, align 8, !tbaa !13
  store <2 x double> %2946, ptr %14, align 16, !tbaa !13
  %2947 = call { double, double } @Cd(ptr noundef nonnull %14)
  %2948 = extractvalue { double, double } %2947, 0
  %2949 = extractvalue { double, double } %2947, 1
  %2950 = fneg double %2949
  %2951 = call ptr @_pCd(ptr noundef nonnull %10)
  %2952 = getelementptr inbounds i8, ptr %2951, i64 8
  store double %2948, ptr %2951, align 8
  store double %2950, ptr %2952, align 8
  %2953 = load double, ptr %4, align 8, !tbaa !9
  %2954 = load double, ptr %2915, align 8, !tbaa !12
  %2955 = fneg double %2954
  %2956 = load <2 x double>, ptr %10, align 16, !tbaa !13
  %2957 = insertelement <2 x double> poison, double %2954, i64 0
  %2958 = insertelement <2 x double> %2957, double %2955, i64 1
  %2959 = fmul <2 x double> %2956, %2958
  %2960 = shufflevector <2 x double> %2959, <2 x double> poison, <2 x i32> <i32 1, i32 0>
  %2961 = insertelement <2 x double> poison, double %2953, i64 0
  %2962 = shufflevector <2 x double> %2961, <2 x double> poison, <2 x i32> zeroinitializer
  %2963 = call <2 x double> @llvm.fmuladd.v2f64(<2 x double> %2962, <2 x double> %2956, <2 x double> %2960)
  store <2 x double> %2963, ptr %9, align 16, !tbaa !13
  %2964 = getelementptr inbounds i8, ptr %3, i64 48
  %2965 = load <2 x double>, ptr %2964, align 8, !tbaa !13
  store <2 x double> %2965, ptr %15, align 16, !tbaa !13
  %2966 = call { double, double } @Cd(ptr noundef nonnull %15)
  %2967 = extractvalue { double, double } %2966, 0
  %2968 = extractvalue { double, double } %2966, 1
  %2969 = fneg double %2968
  %2970 = call ptr @_pCd(ptr noundef nonnull %10)
  %2971 = getelementptr inbounds i8, ptr %2970, i64 8
  store double %2967, ptr %2970, align 8
  store double %2969, ptr %2971, align 8
  %2972 = load double, ptr %4, align 8, !tbaa !9
  %2973 = load double, ptr %2915, align 8, !tbaa !12
  %2974 = fneg double %2973
  %2975 = load <2 x double>, ptr %10, align 16, !tbaa !13
  %2976 = insertelement <2 x double> poison, double %2973, i64 0
  %2977 = insertelement <2 x double> %2976, double %2974, i64 1
  %2978 = fmul <2 x double> %2975, %2977
  %2979 = shufflevector <2 x double> %2978, <2 x double> poison, <2 x i32> <i32 1, i32 0>
  %2980 = insertelement <2 x double> poison, double %2972, i64 0
  %2981 = shufflevector <2 x double> %2980, <2 x double> poison, <2 x i32> zeroinitializer
  %2982 = call <2 x double> @llvm.fmuladd.v2f64(<2 x double> %2981, <2 x double> %2975, <2 x double> %2979)
  %2983 = load i32, ptr %1, align 4, !tbaa !5
  %.not42884507 = icmp slt i32 %2983, 1
  br i1 %.not42884507, label %.loopexit, label %.lr.ph4509

.lr.ph4509:                                       ; preds = %2906
  %2984 = getelementptr inbounds i8, ptr %15, i64 8
  %2985 = getelementptr inbounds i8, ptr %14, i64 8
  %2986 = getelementptr inbounds i8, ptr %13, i64 8
  %2987 = getelementptr inbounds i8, ptr %12, i64 8
  %2988 = load double, ptr %12, align 16, !tbaa !9
  %2989 = load double, ptr %2987, align 8, !tbaa !12
  %2990 = shl i32 %22, 1
  %2991 = load double, ptr %13, align 16, !tbaa !9
  %2992 = load double, ptr %2986, align 8, !tbaa !12
  %2993 = insertelement <2 x double> poison, double %2989, i64 0
  %2994 = insertelement <2 x double> %2993, double %2992, i64 1
  %2995 = fneg <2 x double> %2994
  %2996 = mul i32 %22, 3
  %2997 = load double, ptr %14, align 16, !tbaa !9
  %2998 = load double, ptr %2985, align 8, !tbaa !12
  %2999 = fneg double %2998
  %3000 = shl i32 %22, 2
  %3001 = load double, ptr %15, align 16, !tbaa !9
  %3002 = load double, ptr %2984, align 8, !tbaa !12
  %3003 = fneg double %3002
  %3004 = sext i32 %22 to i64
  %3005 = sext i32 %2990 to i64
  %3006 = sext i32 %2996 to i64
  %3007 = sext i32 %3000 to i64
  %3008 = add nuw i32 %2983, 1
  %wide.trip.count4726 = zext i32 %3008 to i64
  %invariant.gep4831 = getelementptr %struct.doublecomplex, ptr %24, i64 %3004
  %invariant.gep4833 = getelementptr %struct.doublecomplex, ptr %24, i64 %3005
  %invariant.gep4835 = getelementptr %struct.doublecomplex, ptr %24, i64 %3006
  %invariant.gep4837 = getelementptr %struct.doublecomplex, ptr %24, i64 %3007
  %3009 = zext nneg i32 %2983 to i64
  %min.iters.check6331 = icmp ult i32 %2983, 12
  br i1 %min.iters.check6331, label %scalar.ph6330.preheader, label %vector.scevcheck6232

vector.scevcheck6232:                             ; preds = %.lr.ph4509
  %3010 = add nsw i64 %wide.trip.count4726, -2
  %3011 = shl nsw i64 %3004, 4
  %3012 = shl nsw i64 %23, 4
  %3013 = getelementptr i8, ptr %5, i64 %3011
  %3014 = getelementptr i8, ptr %3013, i64 %3012
  %mul.result6235 = shl nsw i64 %3010, 4
  %3015 = shl nsw i64 %3005, 4
  %3016 = getelementptr i8, ptr %5, i64 %3015
  %3017 = getelementptr i8, ptr %3016, i64 %3012
  %mul.result6239 = shl nsw i64 %3010, 4
  %mul.overflow6240 = icmp ugt i64 %3010, 1152921504606846975
  %3018 = shl nsw i64 %3006, 4
  %3019 = getelementptr i8, ptr %5, i64 %3018
  %3020 = getelementptr i8, ptr %3019, i64 %3012
  %mul.result6243 = shl nsw i64 %3010, 4
  %3021 = shl nsw i64 %3007, 4
  %3022 = getelementptr i8, ptr %5, i64 %3021
  %3023 = getelementptr i8, ptr %3022, i64 %3012
  %mul.result6247 = shl nsw i64 %3010, 4
  %3024 = getelementptr i8, ptr %5, i64 %3011
  %3025 = getelementptr i8, ptr %3024, i64 %3012
  %mul.result6251 = shl nsw i64 %3010, 4
  %3026 = getelementptr i8, ptr %5, i64 %3015
  %3027 = getelementptr i8, ptr %3026, i64 %3012
  %mul.result6255 = shl nsw i64 %3010, 4
  %3028 = getelementptr i8, ptr %5, i64 %3018
  %3029 = getelementptr i8, ptr %3028, i64 %3012
  %mul.result6259 = shl nsw i64 %3010, 4
  %3030 = getelementptr i8, ptr %5, i64 %3021
  %3031 = getelementptr i8, ptr %3030, i64 %3012
  %mul.result6263 = shl nsw i64 %3010, 4
  %3032 = insertelement <8 x ptr> poison, ptr %3017, i64 0
  %3033 = insertelement <8 x ptr> %3032, ptr %3014, i64 1
  %3034 = insertelement <8 x ptr> %3033, ptr %3020, i64 2
  %3035 = insertelement <8 x ptr> %3034, ptr %3023, i64 3
  %3036 = insertelement <8 x ptr> %3035, ptr %3025, i64 4
  %3037 = insertelement <8 x ptr> %3036, ptr %3027, i64 5
  %3038 = insertelement <8 x ptr> %3037, ptr %3029, i64 6
  %3039 = insertelement <8 x ptr> %3038, ptr %3031, i64 7
  %3040 = getelementptr i8, <8 x ptr> %3039, <8 x i64> <i64 16, i64 16, i64 16, i64 16, i64 24, i64 24, i64 24, i64 24>
  %scevgep6233 = getelementptr i8, ptr %3014, i64 16
  %3041 = getelementptr i8, ptr %scevgep6233, i64 %mul.result6235
  %scevgep6237 = getelementptr i8, ptr %3017, i64 16
  %3042 = getelementptr i8, ptr %scevgep6237, i64 %mul.result6239
  %scevgep6241 = getelementptr i8, ptr %3020, i64 16
  %3043 = getelementptr i8, ptr %scevgep6241, i64 %mul.result6243
  %scevgep6245 = getelementptr i8, ptr %3023, i64 16
  %3044 = getelementptr i8, ptr %scevgep6245, i64 %mul.result6247
  %scevgep6249 = getelementptr i8, ptr %3025, i64 24
  %3045 = getelementptr i8, ptr %scevgep6249, i64 %mul.result6251
  %scevgep6253 = getelementptr i8, ptr %3027, i64 24
  %3046 = getelementptr i8, ptr %scevgep6253, i64 %mul.result6255
  %scevgep6257 = getelementptr i8, ptr %3029, i64 24
  %3047 = getelementptr i8, ptr %scevgep6257, i64 %mul.result6259
  %scevgep6261 = getelementptr i8, ptr %3031, i64 24
  %3048 = getelementptr i8, ptr %scevgep6261, i64 %mul.result6263
  %3049 = insertelement <8 x ptr> poison, ptr %3042, i64 0
  %3050 = insertelement <8 x ptr> %3049, ptr %3041, i64 1
  %3051 = insertelement <8 x ptr> %3050, ptr %3043, i64 2
  %3052 = insertelement <8 x ptr> %3051, ptr %3044, i64 3
  %3053 = insertelement <8 x ptr> %3052, ptr %3045, i64 4
  %3054 = insertelement <8 x ptr> %3053, ptr %3046, i64 5
  %3055 = insertelement <8 x ptr> %3054, ptr %3047, i64 6
  %3056 = insertelement <8 x ptr> %3055, ptr %3048, i64 7
  %3057 = icmp ult <8 x ptr> %3056, %3040
  %3058 = bitcast <8 x i1> %3057 to i8
  %3059 = icmp ne i8 %3058, 0
  %op.rdx = or i1 %3059, %mul.overflow6240
  br i1 %op.rdx, label %scalar.ph6330.preheader, label %vector.memcheck6265

vector.memcheck6265:                              ; preds = %vector.scevcheck6232
  %3060 = shl nsw i64 %3004, 4
  %3061 = shl nsw i64 %23, 4
  %3062 = add nsw i64 %3060, %3061
  %3063 = getelementptr i8, ptr %5, i64 %3062
  %scevgep6266 = getelementptr i8, ptr %3063, i64 16
  %3064 = shl nuw nsw i64 %wide.trip.count4726, 4
  %3065 = getelementptr i8, ptr %5, i64 %3062
  %3066 = getelementptr i8, ptr %3065, i64 %3064
  %scevgep6267 = getelementptr i8, ptr %3066, i64 -8
  %3067 = shl nsw i64 %3005, 4
  %3068 = add nsw i64 %3067, %3061
  %3069 = getelementptr i8, ptr %5, i64 %3068
  %scevgep6268 = getelementptr i8, ptr %3069, i64 16
  %3070 = getelementptr i8, ptr %5, i64 %3068
  %3071 = getelementptr i8, ptr %3070, i64 %3064
  %scevgep6269 = getelementptr i8, ptr %3071, i64 -8
  %3072 = shl nsw i64 %3006, 4
  %3073 = add nsw i64 %3072, %3061
  %3074 = getelementptr i8, ptr %5, i64 %3073
  %scevgep6270 = getelementptr i8, ptr %3074, i64 16
  %3075 = getelementptr i8, ptr %5, i64 %3073
  %3076 = getelementptr i8, ptr %3075, i64 %3064
  %scevgep6271 = getelementptr i8, ptr %3076, i64 -8
  %3077 = shl nsw i64 %3007, 4
  %3078 = add nsw i64 %3077, %3061
  %3079 = getelementptr i8, ptr %5, i64 %3078
  %scevgep6272 = getelementptr i8, ptr %3079, i64 16
  %3080 = getelementptr i8, ptr %5, i64 %3078
  %3081 = getelementptr i8, ptr %3080, i64 %3064
  %scevgep6273 = getelementptr i8, ptr %3081, i64 -8
  %3082 = add nsw i64 %3060, %3061
  %3083 = getelementptr i8, ptr %5, i64 %3082
  %scevgep6274 = getelementptr i8, ptr %3083, i64 24
  %3084 = getelementptr i8, ptr %5, i64 %3082
  %scevgep6275 = getelementptr i8, ptr %3084, i64 %3064
  %3085 = add nsw i64 %3067, %3061
  %3086 = getelementptr i8, ptr %5, i64 %3085
  %scevgep6276 = getelementptr i8, ptr %3086, i64 24
  %3087 = getelementptr i8, ptr %5, i64 %3085
  %scevgep6277 = getelementptr i8, ptr %3087, i64 %3064
  %3088 = add nsw i64 %3072, %3061
  %3089 = getelementptr i8, ptr %5, i64 %3088
  %scevgep6278 = getelementptr i8, ptr %3089, i64 24
  %3090 = getelementptr i8, ptr %5, i64 %3088
  %scevgep6279 = getelementptr i8, ptr %3090, i64 %3064
  %3091 = add nsw i64 %3077, %3061
  %3092 = getelementptr i8, ptr %5, i64 %3091
  %scevgep6280 = getelementptr i8, ptr %3092, i64 24
  %3093 = getelementptr i8, ptr %5, i64 %3091
  %scevgep6281 = getelementptr i8, ptr %3093, i64 %3064
  %bound06282 = icmp ult ptr %scevgep6266, %scevgep6269
  %bound16283 = icmp ult ptr %scevgep6268, %scevgep6267
  %found.conflict6284 = and i1 %bound06282, %bound16283
  %bound06285 = icmp ult ptr %scevgep6266, %scevgep6271
  %bound16286 = icmp ult ptr %scevgep6270, %scevgep6267
  %found.conflict6287 = and i1 %bound06285, %bound16286
  %conflict.rdx6288 = or i1 %found.conflict6284, %found.conflict6287
  %bound06289 = icmp ult ptr %scevgep6266, %scevgep6273
  %bound16290 = icmp ult ptr %scevgep6272, %scevgep6267
  %found.conflict6291 = and i1 %bound06289, %bound16290
  %conflict.rdx6292 = or i1 %conflict.rdx6288, %found.conflict6291
  %bound06293 = icmp ult ptr %scevgep6268, %scevgep6271
  %bound16294 = icmp ult ptr %scevgep6270, %scevgep6269
  %found.conflict6295 = and i1 %bound06293, %bound16294
  %conflict.rdx6296 = or i1 %conflict.rdx6292, %found.conflict6295
  %bound06297 = icmp ult ptr %scevgep6268, %scevgep6273
  %bound16298 = icmp ult ptr %scevgep6272, %scevgep6269
  %found.conflict6299 = and i1 %bound06297, %bound16298
  %conflict.rdx6300 = or i1 %conflict.rdx6296, %found.conflict6299
  %bound06301 = icmp ult ptr %scevgep6270, %scevgep6273
  %bound16302 = icmp ult ptr %scevgep6272, %scevgep6271
  %found.conflict6303 = and i1 %bound06301, %bound16302
  %conflict.rdx6304 = or i1 %conflict.rdx6300, %found.conflict6303
  %bound06305 = icmp ult ptr %scevgep6274, %scevgep6277
  %bound16306 = icmp ult ptr %scevgep6276, %scevgep6275
  %found.conflict6307 = and i1 %bound06305, %bound16306
  %conflict.rdx6308 = or i1 %conflict.rdx6304, %found.conflict6307
  %bound06309 = icmp ult ptr %scevgep6274, %scevgep6279
  %bound16310 = icmp ult ptr %scevgep6278, %scevgep6275
  %found.conflict6311 = and i1 %bound06309, %bound16310
  %conflict.rdx6312 = or i1 %conflict.rdx6308, %found.conflict6311
  %bound06313 = icmp ult ptr %scevgep6274, %scevgep6281
  %bound16314 = icmp ult ptr %scevgep6280, %scevgep6275
  %found.conflict6315 = and i1 %bound06313, %bound16314
  %conflict.rdx6316 = or i1 %conflict.rdx6312, %found.conflict6315
  %bound06317 = icmp ult ptr %scevgep6276, %scevgep6279
  %bound16318 = icmp ult ptr %scevgep6278, %scevgep6277
  %found.conflict6319 = and i1 %bound06317, %bound16318
  %conflict.rdx6320 = or i1 %conflict.rdx6316, %found.conflict6319
  %bound06321 = icmp ult ptr %scevgep6276, %scevgep6281
  %bound16322 = icmp ult ptr %scevgep6280, %scevgep6277
  %found.conflict6323 = and i1 %bound06321, %bound16322
  %conflict.rdx6324 = or i1 %conflict.rdx6320, %found.conflict6323
  %bound06325 = icmp ult ptr %scevgep6278, %scevgep6281
  %bound16326 = icmp ult ptr %scevgep6280, %scevgep6279
  %found.conflict6327 = and i1 %bound06325, %bound16326
  %conflict.rdx6328 = or i1 %conflict.rdx6324, %found.conflict6327
  br i1 %conflict.rdx6328, label %scalar.ph6330.preheader, label %vector.ph6332

vector.ph6332:                                    ; preds = %vector.memcheck6265
  %n.vec6334 = and i64 %3009, 2147483646
  %ind.end6335 = or i64 %3009, 1
  %broadcast.splat6344 = shufflevector <2 x double> %2995, <2 x double> poison, <2 x i32> zeroinitializer
  %broadcast.splatinsert6345 = insertelement <2 x double> poison, double %2988, i64 0
  %broadcast.splat6346 = shufflevector <2 x double> %broadcast.splatinsert6345, <2 x double> poison, <2 x i32> zeroinitializer
  %broadcast.splatinsert6347 = insertelement <2 x double> poison, double %2989, i64 0
  %broadcast.splat6348 = shufflevector <2 x double> %broadcast.splatinsert6347, <2 x double> poison, <2 x i32> zeroinitializer
  %broadcast.splat6353 = shufflevector <2 x double> %2995, <2 x double> poison, <2 x i32> <i32 1, i32 1>
  %broadcast.splatinsert6354 = insertelement <2 x double> poison, double %2991, i64 0
  %broadcast.splat6355 = shufflevector <2 x double> %broadcast.splatinsert6354, <2 x double> poison, <2 x i32> zeroinitializer
  %broadcast.splatinsert6356 = insertelement <2 x double> poison, double %2992, i64 0
  %broadcast.splat6357 = shufflevector <2 x double> %broadcast.splatinsert6356, <2 x double> poison, <2 x i32> zeroinitializer
  %broadcast.splatinsert6361 = insertelement <2 x double> poison, double %2999, i64 0
  %broadcast.splat6362 = shufflevector <2 x double> %broadcast.splatinsert6361, <2 x double> poison, <2 x i32> zeroinitializer
  %broadcast.splatinsert6363 = insertelement <2 x double> poison, double %2997, i64 0
  %broadcast.splat6364 = shufflevector <2 x double> %broadcast.splatinsert6363, <2 x double> poison, <2 x i32> zeroinitializer
  %broadcast.splatinsert6365 = insertelement <2 x double> poison, double %2998, i64 0
  %broadcast.splat6366 = shufflevector <2 x double> %broadcast.splatinsert6365, <2 x double> poison, <2 x i32> zeroinitializer
  %broadcast.splatinsert6370 = insertelement <2 x double> poison, double %3003, i64 0
  %broadcast.splat6371 = shufflevector <2 x double> %broadcast.splatinsert6370, <2 x double> poison, <2 x i32> zeroinitializer
  %broadcast.splatinsert6372 = insertelement <2 x double> poison, double %3001, i64 0
  %broadcast.splat6373 = shufflevector <2 x double> %broadcast.splatinsert6372, <2 x double> poison, <2 x i32> zeroinitializer
  %broadcast.splatinsert6374 = insertelement <2 x double> poison, double %3002, i64 0
  %broadcast.splat6375 = shufflevector <2 x double> %broadcast.splatinsert6374, <2 x double> poison, <2 x i32> zeroinitializer
  %broadcast.splat6377 = shufflevector <2 x double> %2925, <2 x double> poison, <2 x i32> <i32 1, i32 1>
  %broadcast.splat6379 = shufflevector <2 x double> %2925, <2 x double> poison, <2 x i32> zeroinitializer
  %broadcast.splat6382 = shufflevector <2 x double> %2944, <2 x double> poison, <2 x i32> <i32 1, i32 1>
  %broadcast.splat6384 = shufflevector <2 x double> %2944, <2 x double> poison, <2 x i32> zeroinitializer
  %broadcast.splat6390 = shufflevector <2 x double> %2963, <2 x double> poison, <2 x i32> <i32 1, i32 1>
  %broadcast.splat6392 = shufflevector <2 x double> %2963, <2 x double> poison, <2 x i32> zeroinitializer
  %broadcast.splat6398 = shufflevector <2 x double> %2982, <2 x double> poison, <2 x i32> <i32 1, i32 1>
  %broadcast.splat6400 = shufflevector <2 x double> %2982, <2 x double> poison, <2 x i32> zeroinitializer
  br label %vector.body6337

vector.body6337:                                  ; preds = %vector.body6337, %vector.ph6332
  %index6338 = phi i64 [ 0, %vector.ph6332 ], [ %index.next6405, %vector.body6337 ]
  %offset.idx6339 = or disjoint i64 %index6338, 1
  %3094 = getelementptr %struct.doublecomplex, ptr %invariant.gep4831, i64 %offset.idx6339
  %wide.vec6340 = load <4 x double>, ptr %3094, align 8, !tbaa !13
  %strided.vec6341 = shufflevector <4 x double> %wide.vec6340, <4 x double> poison, <2 x i32> <i32 0, i32 2>
  %strided.vec6342 = shufflevector <4 x double> %wide.vec6340, <4 x double> poison, <2 x i32> <i32 1, i32 3>
  %3095 = fmul <2 x double> %strided.vec6342, %broadcast.splat6344
  %3096 = call <2 x double> @llvm.fmuladd.v2f64(<2 x double> %broadcast.splat6346, <2 x double> %strided.vec6341, <2 x double> %3095)
  %3097 = fmul <2 x double> %strided.vec6341, %broadcast.splat6348
  %3098 = call <2 x double> @llvm.fmuladd.v2f64(<2 x double> %broadcast.splat6346, <2 x double> %strided.vec6342, <2 x double> %3097)
  %3099 = getelementptr %struct.doublecomplex, ptr %invariant.gep4833, i64 %offset.idx6339
  %wide.vec6349 = load <4 x double>, ptr %3099, align 8, !tbaa !13
  %strided.vec6350 = shufflevector <4 x double> %wide.vec6349, <4 x double> poison, <2 x i32> <i32 0, i32 2>
  %strided.vec6351 = shufflevector <4 x double> %wide.vec6349, <4 x double> poison, <2 x i32> <i32 1, i32 3>
  %3100 = fmul <2 x double> %strided.vec6351, %broadcast.splat6353
  %3101 = call <2 x double> @llvm.fmuladd.v2f64(<2 x double> %broadcast.splat6355, <2 x double> %strided.vec6350, <2 x double> %3100)
  %3102 = fmul <2 x double> %strided.vec6350, %broadcast.splat6357
  %3103 = call <2 x double> @llvm.fmuladd.v2f64(<2 x double> %broadcast.splat6355, <2 x double> %strided.vec6351, <2 x double> %3102)
  %3104 = fadd <2 x double> %3096, %3101
  %3105 = fadd <2 x double> %3098, %3103
  %3106 = getelementptr %struct.doublecomplex, ptr %invariant.gep4835, i64 %offset.idx6339
  %wide.vec6358 = load <4 x double>, ptr %3106, align 8, !tbaa !13
  %strided.vec6359 = shufflevector <4 x double> %wide.vec6358, <4 x double> poison, <2 x i32> <i32 0, i32 2>
  %strided.vec6360 = shufflevector <4 x double> %wide.vec6358, <4 x double> poison, <2 x i32> <i32 1, i32 3>
  %3107 = fmul <2 x double> %strided.vec6360, %broadcast.splat6362
  %3108 = call <2 x double> @llvm.fmuladd.v2f64(<2 x double> %broadcast.splat6364, <2 x double> %strided.vec6359, <2 x double> %3107)
  %3109 = fmul <2 x double> %strided.vec6359, %broadcast.splat6366
  %3110 = call <2 x double> @llvm.fmuladd.v2f64(<2 x double> %broadcast.splat6364, <2 x double> %strided.vec6360, <2 x double> %3109)
  %3111 = fadd <2 x double> %3104, %3108
  %3112 = fadd <2 x double> %3105, %3110
  %3113 = getelementptr %struct.doublecomplex, ptr %invariant.gep4837, i64 %offset.idx6339
  %wide.vec6367 = load <4 x double>, ptr %3113, align 8, !tbaa !13
  %strided.vec6368 = shufflevector <4 x double> %wide.vec6367, <4 x double> poison, <2 x i32> <i32 0, i32 2>
  %strided.vec6369 = shufflevector <4 x double> %wide.vec6367, <4 x double> poison, <2 x i32> <i32 1, i32 3>
  %3114 = fmul <2 x double> %strided.vec6369, %broadcast.splat6371
  %3115 = call <2 x double> @llvm.fmuladd.v2f64(<2 x double> %broadcast.splat6373, <2 x double> %strided.vec6368, <2 x double> %3114)
  %3116 = fmul <2 x double> %strided.vec6368, %broadcast.splat6375
  %3117 = call <2 x double> @llvm.fmuladd.v2f64(<2 x double> %broadcast.splat6373, <2 x double> %strided.vec6369, <2 x double> %3116)
  %3118 = fadd <2 x double> %3111, %3115
  %3119 = fadd <2 x double> %3112, %3117
  %3120 = fneg <2 x double> %3119
  %3121 = fmul <2 x double> %broadcast.splat6377, %3120
  %3122 = call <2 x double> @llvm.fmuladd.v2f64(<2 x double> %3118, <2 x double> %broadcast.splat6379, <2 x double> %3121)
  %3123 = fmul <2 x double> %broadcast.splat6379, %3119
  %3124 = call <2 x double> @llvm.fmuladd.v2f64(<2 x double> %3118, <2 x double> %broadcast.splat6377, <2 x double> %3123)
  %3125 = fsub <2 x double> %strided.vec6341, %3122
  %3126 = fsub <2 x double> %strided.vec6342, %3124
  %interleaved.vec6380 = shufflevector <2 x double> %3125, <2 x double> %3126, <4 x i32> <i32 0, i32 2, i32 1, i32 3>
  store <4 x double> %interleaved.vec6380, ptr %3094, align 8, !tbaa !13
  %3127 = fmul <2 x double> %broadcast.splat6382, %3120
  %3128 = call <2 x double> @llvm.fmuladd.v2f64(<2 x double> %3118, <2 x double> %broadcast.splat6384, <2 x double> %3127)
  %3129 = fmul <2 x double> %broadcast.splat6384, %3119
  %3130 = call <2 x double> @llvm.fmuladd.v2f64(<2 x double> %3118, <2 x double> %broadcast.splat6382, <2 x double> %3129)
  %wide.vec6385 = load <4 x double>, ptr %3099, align 8, !tbaa !13
  %strided.vec6386 = shufflevector <4 x double> %wide.vec6385, <4 x double> poison, <2 x i32> <i32 0, i32 2>
  %strided.vec6387 = shufflevector <4 x double> %wide.vec6385, <4 x double> poison, <2 x i32> <i32 1, i32 3>
  %3131 = fsub <2 x double> %strided.vec6386, %3128
  %3132 = fsub <2 x double> %strided.vec6387, %3130
  %interleaved.vec6388 = shufflevector <2 x double> %3131, <2 x double> %3132, <4 x i32> <i32 0, i32 2, i32 1, i32 3>
  store <4 x double> %interleaved.vec6388, ptr %3099, align 8, !tbaa !13
  %3133 = fmul <2 x double> %broadcast.splat6390, %3120
  %3134 = call <2 x double> @llvm.fmuladd.v2f64(<2 x double> %3118, <2 x double> %broadcast.splat6392, <2 x double> %3133)
  %3135 = fmul <2 x double> %broadcast.splat6392, %3119
  %3136 = call <2 x double> @llvm.fmuladd.v2f64(<2 x double> %3118, <2 x double> %broadcast.splat6390, <2 x double> %3135)
  %wide.vec6393 = load <4 x double>, ptr %3106, align 8, !tbaa !13
  %strided.vec6394 = shufflevector <4 x double> %wide.vec6393, <4 x double> poison, <2 x i32> <i32 0, i32 2>
  %strided.vec6395 = shufflevector <4 x double> %wide.vec6393, <4 x double> poison, <2 x i32> <i32 1, i32 3>
  %3137 = fsub <2 x double> %strided.vec6394, %3134
  %3138 = fsub <2 x double> %strided.vec6395, %3136
  %interleaved.vec6396 = shufflevector <2 x double> %3137, <2 x double> %3138, <4 x i32> <i32 0, i32 2, i32 1, i32 3>
  store <4 x double> %interleaved.vec6396, ptr %3106, align 8, !tbaa !13
  %3139 = fmul <2 x double> %broadcast.splat6398, %3120
  %3140 = call <2 x double> @llvm.fmuladd.v2f64(<2 x double> %3118, <2 x double> %broadcast.splat6400, <2 x double> %3139)
  %3141 = fmul <2 x double> %broadcast.splat6400, %3119
  %3142 = call <2 x double> @llvm.fmuladd.v2f64(<2 x double> %3118, <2 x double> %broadcast.splat6398, <2 x double> %3141)
  %wide.vec6401 = load <4 x double>, ptr %3113, align 8, !tbaa !13
  %strided.vec6402 = shufflevector <4 x double> %wide.vec6401, <4 x double> poison, <2 x i32> <i32 0, i32 2>
  %strided.vec6403 = shufflevector <4 x double> %wide.vec6401, <4 x double> poison, <2 x i32> <i32 1, i32 3>
  %3143 = fsub <2 x double> %strided.vec6402, %3140
  %3144 = fsub <2 x double> %strided.vec6403, %3142
  %interleaved.vec6404 = shufflevector <2 x double> %3143, <2 x double> %3144, <4 x i32> <i32 0, i32 2, i32 1, i32 3>
  store <4 x double> %interleaved.vec6404, ptr %3113, align 8, !tbaa !13
  %index.next6405 = add nuw i64 %index6338, 2
  %3145 = icmp eq i64 %index.next6405, %n.vec6334
  br i1 %3145, label %middle.block6329, label %vector.body6337, !llvm.loop !33

middle.block6329:                                 ; preds = %vector.body6337
  %cmp.n6406 = icmp eq i64 %n.vec6334, %3009
  br i1 %cmp.n6406, label %.loopexit, label %scalar.ph6330.preheader

scalar.ph6330.preheader:                          ; preds = %middle.block6329, %vector.memcheck6265, %vector.scevcheck6232, %.lr.ph4509
  %indvars.iv4723.ph = phi i64 [ 1, %vector.memcheck6265 ], [ 1, %vector.scevcheck6232 ], [ 1, %.lr.ph4509 ], [ %ind.end6335, %middle.block6329 ]
  %3146 = insertelement <2 x double> poison, double %2988, i64 0
  %3147 = insertelement <2 x double> %3146, double %2991, i64 1
  br label %scalar.ph6330

scalar.ph6330:                                    ; preds = %scalar.ph6330.preheader, %scalar.ph6330
  %indvars.iv4723 = phi i64 [ %indvars.iv.next4724, %scalar.ph6330 ], [ %indvars.iv4723.ph, %scalar.ph6330.preheader ]
  %gep4832 = getelementptr %struct.doublecomplex, ptr %invariant.gep4831, i64 %indvars.iv4723
  %gep4834 = getelementptr %struct.doublecomplex, ptr %invariant.gep4833, i64 %indvars.iv4723
  %3148 = load double, ptr %gep4834, align 8, !tbaa !9
  %3149 = getelementptr inbounds i8, ptr %gep4834, i64 8
  %3150 = load double, ptr %3149, align 8, !tbaa !12
  %gep4836 = getelementptr %struct.doublecomplex, ptr %invariant.gep4835, i64 %indvars.iv4723
  %3151 = load double, ptr %gep4836, align 8, !tbaa !9
  %3152 = getelementptr inbounds i8, ptr %gep4836, i64 8
  %3153 = load double, ptr %3152, align 8, !tbaa !12
  %3154 = fmul double %3153, %2999
  %3155 = call double @llvm.fmuladd.f64(double %2997, double %3151, double %3154)
  %3156 = fmul double %3151, %2998
  %3157 = call double @llvm.fmuladd.f64(double %2997, double %3153, double %3156)
  %gep4838 = getelementptr %struct.doublecomplex, ptr %invariant.gep4837, i64 %indvars.iv4723
  %3158 = load double, ptr %gep4838, align 8, !tbaa !9
  %3159 = getelementptr inbounds i8, ptr %gep4838, i64 8
  %3160 = load double, ptr %3159, align 8, !tbaa !12
  %3161 = fmul double %3160, %3003
  %3162 = call double @llvm.fmuladd.f64(double %3001, double %3158, double %3161)
  %3163 = fmul double %3158, %3002
  %3164 = call double @llvm.fmuladd.f64(double %3001, double %3160, double %3163)
  %3165 = load <2 x double>, ptr %gep4832, align 8, !tbaa !13
  %3166 = shufflevector <2 x double> %3165, <2 x double> poison, <2 x i32> <i32 1, i32 poison>
  %3167 = insertelement <2 x double> %3166, double %3150, i64 1
  %3168 = fmul <2 x double> %3167, %2995
  %3169 = insertelement <2 x double> %3165, double %3148, i64 1
  %3170 = call <2 x double> @llvm.fmuladd.v2f64(<2 x double> %3147, <2 x double> %3169, <2 x double> %3168)
  %3171 = fmul <2 x double> %3169, %2994
  %3172 = call <2 x double> @llvm.fmuladd.v2f64(<2 x double> %3147, <2 x double> %3167, <2 x double> %3171)
  %shift6670 = shufflevector <2 x double> %3170, <2 x double> poison, <2 x i32> <i32 1, i32 poison>
  %3173 = fadd <2 x double> %3170, %shift6670
  %3174 = extractelement <2 x double> %3173, i64 0
  %shift6671 = shufflevector <2 x double> %3172, <2 x double> poison, <2 x i32> <i32 1, i32 poison>
  %3175 = fadd <2 x double> %3172, %shift6671
  %3176 = extractelement <2 x double> %3175, i64 0
  %3177 = fadd double %3174, %3155
  %3178 = fadd double %3176, %3157
  %3179 = fadd double %3177, %3162
  %3180 = fadd double %3178, %3164
  %3181 = fneg double %3180
  %3182 = insertelement <2 x double> poison, double %3180, i64 0
  %3183 = insertelement <2 x double> %3182, double %3181, i64 1
  %3184 = fmul <2 x double> %2925, %3183
  %3185 = shufflevector <2 x double> %3184, <2 x double> poison, <2 x i32> <i32 1, i32 0>
  %3186 = insertelement <2 x double> poison, double %3179, i64 0
  %3187 = shufflevector <2 x double> %3186, <2 x double> poison, <2 x i32> zeroinitializer
  %3188 = call <2 x double> @llvm.fmuladd.v2f64(<2 x double> %3187, <2 x double> %2925, <2 x double> %3185)
  %3189 = fsub <2 x double> %3165, %3188
  store <2 x double> %3189, ptr %gep4832, align 8, !tbaa !13
  %3190 = fmul <2 x double> %2944, %3183
  %3191 = shufflevector <2 x double> %3190, <2 x double> poison, <2 x i32> <i32 1, i32 0>
  %3192 = call <2 x double> @llvm.fmuladd.v2f64(<2 x double> %3187, <2 x double> %2944, <2 x double> %3191)
  %3193 = load <2 x double>, ptr %gep4834, align 8, !tbaa !13
  %3194 = fsub <2 x double> %3193, %3192
  store <2 x double> %3194, ptr %gep4834, align 8, !tbaa !13
  %3195 = fmul <2 x double> %2963, %3183
  %3196 = shufflevector <2 x double> %3195, <2 x double> poison, <2 x i32> <i32 1, i32 0>
  %3197 = call <2 x double> @llvm.fmuladd.v2f64(<2 x double> %3187, <2 x double> %2963, <2 x double> %3196)
  %3198 = load <2 x double>, ptr %gep4836, align 8, !tbaa !13
  %3199 = fsub <2 x double> %3198, %3197
  store <2 x double> %3199, ptr %gep4836, align 8, !tbaa !13
  %3200 = fmul <2 x double> %2982, %3183
  %3201 = shufflevector <2 x double> %3200, <2 x double> poison, <2 x i32> <i32 1, i32 0>
  %3202 = call <2 x double> @llvm.fmuladd.v2f64(<2 x double> %3187, <2 x double> %2982, <2 x double> %3201)
  %3203 = load <2 x double>, ptr %gep4838, align 8, !tbaa !13
  %3204 = fsub <2 x double> %3203, %3202
  store <2 x double> %3204, ptr %gep4838, align 8, !tbaa !13
  %indvars.iv.next4724 = add nuw nsw i64 %indvars.iv4723, 1
  %exitcond4727.not = icmp eq i64 %indvars.iv.next4724, %wide.trip.count4726
  br i1 %exitcond4727.not, label %.loopexit, label %scalar.ph6330, !llvm.loop !34

3205:                                             ; preds = %2482
  %3206 = load <2 x double>, ptr %3, align 8, !tbaa !13
  store <2 x double> %3206, ptr %12, align 16, !tbaa !13
  %3207 = call { double, double } @Cd(ptr noundef nonnull %12)
  %3208 = extractvalue { double, double } %3207, 0
  %3209 = extractvalue { double, double } %3207, 1
  %3210 = fneg double %3209
  %3211 = call ptr @_pCd(ptr noundef nonnull %10)
  %3212 = getelementptr inbounds i8, ptr %3211, i64 8
  store double %3208, ptr %3211, align 8
  store double %3210, ptr %3212, align 8
  %3213 = load double, ptr %4, align 8, !tbaa !9
  %3214 = getelementptr inbounds i8, ptr %4, i64 8
  %3215 = load double, ptr %3214, align 8, !tbaa !12
  %3216 = fneg double %3215
  %3217 = load <2 x double>, ptr %10, align 16, !tbaa !13
  %3218 = insertelement <2 x double> poison, double %3215, i64 0
  %3219 = insertelement <2 x double> %3218, double %3216, i64 1
  %3220 = fmul <2 x double> %3217, %3219
  %3221 = shufflevector <2 x double> %3220, <2 x double> poison, <2 x i32> <i32 1, i32 0>
  %3222 = insertelement <2 x double> poison, double %3213, i64 0
  %3223 = shufflevector <2 x double> %3222, <2 x double> poison, <2 x i32> zeroinitializer
  %3224 = call <2 x double> @llvm.fmuladd.v2f64(<2 x double> %3223, <2 x double> %3217, <2 x double> %3221)
  store <2 x double> %3224, ptr %9, align 16, !tbaa !13
  %3225 = getelementptr inbounds i8, ptr %3, i64 16
  %3226 = load <2 x double>, ptr %3225, align 8, !tbaa !13
  store <2 x double> %3226, ptr %13, align 16, !tbaa !13
  %3227 = call { double, double } @Cd(ptr noundef nonnull %13)
  %3228 = extractvalue { double, double } %3227, 0
  %3229 = extractvalue { double, double } %3227, 1
  %3230 = fneg double %3229
  %3231 = call ptr @_pCd(ptr noundef nonnull %10)
  %3232 = getelementptr inbounds i8, ptr %3231, i64 8
  store double %3228, ptr %3231, align 8
  store double %3230, ptr %3232, align 8
  %3233 = load double, ptr %4, align 8, !tbaa !9
  %3234 = load double, ptr %3214, align 8, !tbaa !12
  %3235 = fneg double %3234
  %3236 = load <2 x double>, ptr %10, align 16, !tbaa !13
  %3237 = insertelement <2 x double> poison, double %3234, i64 0
  %3238 = insertelement <2 x double> %3237, double %3235, i64 1
  %3239 = fmul <2 x double> %3236, %3238
  %3240 = shufflevector <2 x double> %3239, <2 x double> poison, <2 x i32> <i32 1, i32 0>
  %3241 = insertelement <2 x double> poison, double %3233, i64 0
  %3242 = shufflevector <2 x double> %3241, <2 x double> poison, <2 x i32> zeroinitializer
  %3243 = call <2 x double> @llvm.fmuladd.v2f64(<2 x double> %3242, <2 x double> %3236, <2 x double> %3240)
  store <2 x double> %3243, ptr %9, align 16, !tbaa !13
  %3244 = getelementptr inbounds i8, ptr %3, i64 32
  %3245 = load <2 x double>, ptr %3244, align 8, !tbaa !13
  store <2 x double> %3245, ptr %14, align 16, !tbaa !13
  %3246 = call { double, double } @Cd(ptr noundef nonnull %14)
  %3247 = extractvalue { double, double } %3246, 0
  %3248 = extractvalue { double, double } %3246, 1
  %3249 = fneg double %3248
  %3250 = call ptr @_pCd(ptr noundef nonnull %10)
  %3251 = getelementptr inbounds i8, ptr %3250, i64 8
  store double %3247, ptr %3250, align 8
  store double %3249, ptr %3251, align 8
  %3252 = load double, ptr %4, align 8, !tbaa !9
  %3253 = load double, ptr %3214, align 8, !tbaa !12
  %3254 = fneg double %3253
  %3255 = load <2 x double>, ptr %10, align 16, !tbaa !13
  %3256 = insertelement <2 x double> poison, double %3253, i64 0
  %3257 = insertelement <2 x double> %3256, double %3254, i64 1
  %3258 = fmul <2 x double> %3255, %3257
  %3259 = shufflevector <2 x double> %3258, <2 x double> poison, <2 x i32> <i32 1, i32 0>
  %3260 = insertelement <2 x double> poison, double %3252, i64 0
  %3261 = shufflevector <2 x double> %3260, <2 x double> poison, <2 x i32> zeroinitializer
  %3262 = call <2 x double> @llvm.fmuladd.v2f64(<2 x double> %3261, <2 x double> %3255, <2 x double> %3259)
  store <2 x double> %3262, ptr %9, align 16, !tbaa !13
  %3263 = getelementptr inbounds i8, ptr %3, i64 48
  %3264 = load <2 x double>, ptr %3263, align 8, !tbaa !13
  store <2 x double> %3264, ptr %15, align 16, !tbaa !13
  %3265 = call { double, double } @Cd(ptr noundef nonnull %15)
  %3266 = extractvalue { double, double } %3265, 0
  %3267 = extractvalue { double, double } %3265, 1
  %3268 = fneg double %3267
  %3269 = call ptr @_pCd(ptr noundef nonnull %10)
  %3270 = getelementptr inbounds i8, ptr %3269, i64 8
  store double %3266, ptr %3269, align 8
  store double %3268, ptr %3270, align 8
  %3271 = load double, ptr %4, align 8, !tbaa !9
  %3272 = load double, ptr %3214, align 8, !tbaa !12
  %3273 = fneg double %3272
  %3274 = load <2 x double>, ptr %10, align 16, !tbaa !13
  %3275 = insertelement <2 x double> poison, double %3272, i64 0
  %3276 = insertelement <2 x double> %3275, double %3273, i64 1
  %3277 = fmul <2 x double> %3274, %3276
  %3278 = shufflevector <2 x double> %3277, <2 x double> poison, <2 x i32> <i32 1, i32 0>
  %3279 = insertelement <2 x double> poison, double %3271, i64 0
  %3280 = shufflevector <2 x double> %3279, <2 x double> poison, <2 x i32> zeroinitializer
  %3281 = call <2 x double> @llvm.fmuladd.v2f64(<2 x double> %3280, <2 x double> %3274, <2 x double> %3278)
  store <2 x double> %3281, ptr %9, align 16, !tbaa !13
  %3282 = getelementptr inbounds i8, ptr %3, i64 64
  %3283 = load <2 x double>, ptr %3282, align 8, !tbaa !13
  store <2 x double> %3283, ptr %16, align 16, !tbaa !13
  %3284 = call { double, double } @Cd(ptr noundef nonnull %16)
  %3285 = extractvalue { double, double } %3284, 0
  %3286 = extractvalue { double, double } %3284, 1
  %3287 = fneg double %3286
  %3288 = call ptr @_pCd(ptr noundef nonnull %10)
  %3289 = getelementptr inbounds i8, ptr %3288, i64 8
  store double %3285, ptr %3288, align 8
  store double %3287, ptr %3289, align 8
  %3290 = load double, ptr %4, align 8, !tbaa !9
  %3291 = load double, ptr %3214, align 8, !tbaa !12
  %3292 = fneg double %3291
  %3293 = load <2 x double>, ptr %10, align 16, !tbaa !13
  %3294 = insertelement <2 x double> poison, double %3291, i64 0
  %3295 = insertelement <2 x double> %3294, double %3292, i64 1
  %3296 = fmul <2 x double> %3293, %3295
  %3297 = shufflevector <2 x double> %3296, <2 x double> poison, <2 x i32> <i32 1, i32 0>
  %3298 = insertelement <2 x double> poison, double %3290, i64 0
  %3299 = shufflevector <2 x double> %3298, <2 x double> poison, <2 x i32> zeroinitializer
  %3300 = call <2 x double> @llvm.fmuladd.v2f64(<2 x double> %3299, <2 x double> %3293, <2 x double> %3297)
  %3301 = load i32, ptr %1, align 4, !tbaa !5
  %.not42874496 = icmp slt i32 %3301, 1
  br i1 %.not42874496, label %.loopexit, label %.lr.ph4498

.lr.ph4498:                                       ; preds = %3205
  %3302 = getelementptr inbounds i8, ptr %16, i64 8
  %3303 = getelementptr inbounds i8, ptr %15, i64 8
  %3304 = getelementptr inbounds i8, ptr %14, i64 8
  %3305 = getelementptr inbounds i8, ptr %13, i64 8
  %3306 = getelementptr inbounds i8, ptr %12, i64 8
  %3307 = load double, ptr %12, align 16, !tbaa !9
  %3308 = load double, ptr %3306, align 8, !tbaa !12
  %3309 = shl i32 %22, 1
  %3310 = load double, ptr %13, align 16, !tbaa !9
  %3311 = load double, ptr %3305, align 8, !tbaa !12
  %3312 = insertelement <2 x double> poison, double %3308, i64 0
  %3313 = insertelement <2 x double> %3312, double %3311, i64 1
  %3314 = fneg <2 x double> %3313
  %3315 = mul i32 %22, 3
  %3316 = load double, ptr %14, align 16, !tbaa !9
  %3317 = load double, ptr %3304, align 8, !tbaa !12
  %3318 = fneg double %3317
  %3319 = shl i32 %22, 2
  %3320 = load double, ptr %15, align 16, !tbaa !9
  %3321 = load double, ptr %3303, align 8, !tbaa !12
  %3322 = fneg double %3321
  %3323 = mul i32 %22, 5
  %3324 = load double, ptr %16, align 16, !tbaa !9
  %3325 = load double, ptr %3302, align 8, !tbaa !12
  %3326 = fneg double %3325
  %3327 = sext i32 %22 to i64
  %3328 = sext i32 %3309 to i64
  %3329 = sext i32 %3315 to i64
  %3330 = sext i32 %3319 to i64
  %3331 = sext i32 %3323 to i64
  %3332 = add nuw i32 %3301, 1
  %wide.trip.count4721 = zext i32 %3332 to i64
  %invariant.gep4821 = getelementptr %struct.doublecomplex, ptr %24, i64 %3327
  %invariant.gep4823 = getelementptr %struct.doublecomplex, ptr %24, i64 %3328
  %invariant.gep4825 = getelementptr %struct.doublecomplex, ptr %24, i64 %3329
  %invariant.gep4827 = getelementptr %struct.doublecomplex, ptr %24, i64 %3330
  %invariant.gep4829 = getelementptr %struct.doublecomplex, ptr %24, i64 %3331
  %3333 = zext nneg i32 %3301 to i64
  %min.iters.check6139 = icmp ult i32 %3301, 12
  br i1 %min.iters.check6139, label %scalar.ph6138.preheader, label %vector.scevcheck5996

vector.scevcheck5996:                             ; preds = %.lr.ph4498
  %3334 = add nsw i64 %wide.trip.count4721, -2
  %3335 = shl nsw i64 %3327, 4
  %3336 = shl nsw i64 %23, 4
  %3337 = getelementptr i8, ptr %5, i64 %3335
  %3338 = getelementptr i8, ptr %3337, i64 %3336
  %mul.result5999 = shl nsw i64 %3334, 4
  %3339 = shl nsw i64 %3328, 4
  %3340 = getelementptr i8, ptr %5, i64 %3339
  %3341 = getelementptr i8, ptr %3340, i64 %3336
  %mul.result6003 = shl nsw i64 %3334, 4
  %mul.overflow6004 = icmp ugt i64 %3334, 1152921504606846975
  %3342 = shl nsw i64 %3329, 4
  %3343 = getelementptr i8, ptr %5, i64 %3342
  %3344 = getelementptr i8, ptr %3343, i64 %3336
  %mul.result6007 = shl nsw i64 %3334, 4
  %3345 = shl nsw i64 %3330, 4
  %3346 = getelementptr i8, ptr %5, i64 %3345
  %3347 = getelementptr i8, ptr %3346, i64 %3336
  %mul.result6011 = shl nsw i64 %3334, 4
  %3348 = shl nsw i64 %3331, 4
  %3349 = getelementptr i8, ptr %5, i64 %3348
  %3350 = getelementptr i8, ptr %3349, i64 %3336
  %mul.result6015 = shl nsw i64 %3334, 4
  %3351 = getelementptr i8, ptr %5, i64 %3335
  %3352 = getelementptr i8, ptr %3351, i64 %3336
  %mul.result6019 = shl nsw i64 %3334, 4
  %3353 = getelementptr i8, ptr %5, i64 %3339
  %3354 = getelementptr i8, ptr %3353, i64 %3336
  %mul.result6023 = shl nsw i64 %3334, 4
  %3355 = getelementptr i8, ptr %5, i64 %3342
  %3356 = getelementptr i8, ptr %3355, i64 %3336
  %mul.result6027 = shl nsw i64 %3334, 4
  %3357 = insertelement <8 x ptr> poison, ptr %3341, i64 0
  %3358 = insertelement <8 x ptr> %3357, ptr %3338, i64 1
  %3359 = insertelement <8 x ptr> %3358, ptr %3344, i64 2
  %3360 = insertelement <8 x ptr> %3359, ptr %3347, i64 3
  %3361 = insertelement <8 x ptr> %3360, ptr %3350, i64 4
  %3362 = insertelement <8 x ptr> %3361, ptr %3352, i64 5
  %3363 = insertelement <8 x ptr> %3362, ptr %3354, i64 6
  %3364 = insertelement <8 x ptr> %3363, ptr %3356, i64 7
  %3365 = getelementptr i8, <8 x ptr> %3364, <8 x i64> <i64 16, i64 16, i64 16, i64 16, i64 16, i64 24, i64 24, i64 24>
  %scevgep5997 = getelementptr i8, ptr %3338, i64 16
  %3366 = getelementptr i8, ptr %scevgep5997, i64 %mul.result5999
  %scevgep6001 = getelementptr i8, ptr %3341, i64 16
  %3367 = getelementptr i8, ptr %scevgep6001, i64 %mul.result6003
  %scevgep6005 = getelementptr i8, ptr %3344, i64 16
  %3368 = getelementptr i8, ptr %scevgep6005, i64 %mul.result6007
  %scevgep6009 = getelementptr i8, ptr %3347, i64 16
  %3369 = getelementptr i8, ptr %scevgep6009, i64 %mul.result6011
  %scevgep6013 = getelementptr i8, ptr %3350, i64 16
  %3370 = getelementptr i8, ptr %scevgep6013, i64 %mul.result6015
  %scevgep6017 = getelementptr i8, ptr %3352, i64 24
  %3371 = getelementptr i8, ptr %scevgep6017, i64 %mul.result6019
  %scevgep6021 = getelementptr i8, ptr %3354, i64 24
  %3372 = getelementptr i8, ptr %scevgep6021, i64 %mul.result6023
  %scevgep6025 = getelementptr i8, ptr %3356, i64 24
  %3373 = getelementptr i8, ptr %scevgep6025, i64 %mul.result6027
  %3374 = insertelement <8 x ptr> poison, ptr %3367, i64 0
  %3375 = insertelement <8 x ptr> %3374, ptr %3366, i64 1
  %3376 = insertelement <8 x ptr> %3375, ptr %3368, i64 2
  %3377 = insertelement <8 x ptr> %3376, ptr %3369, i64 3
  %3378 = insertelement <8 x ptr> %3377, ptr %3370, i64 4
  %3379 = insertelement <8 x ptr> %3378, ptr %3371, i64 5
  %3380 = insertelement <8 x ptr> %3379, ptr %3372, i64 6
  %3381 = insertelement <8 x ptr> %3380, ptr %3373, i64 7
  %3382 = icmp ult <8 x ptr> %3381, %3365
  %3383 = getelementptr i8, ptr %5, i64 %3345
  %3384 = getelementptr i8, ptr %3383, i64 %3336
  %scevgep6029 = getelementptr i8, ptr %3384, i64 24
  %mul.result6031 = shl nsw i64 %3334, 4
  %3385 = getelementptr i8, ptr %scevgep6029, i64 %mul.result6031
  %3386 = icmp ult ptr %3385, %scevgep6029
  %3387 = getelementptr i8, ptr %5, i64 %3348
  %3388 = getelementptr i8, ptr %3387, i64 %3336
  %scevgep6033 = getelementptr i8, ptr %3388, i64 24
  %mul.result6035 = shl nsw i64 %3334, 4
  %3389 = getelementptr i8, ptr %scevgep6033, i64 %mul.result6035
  %3390 = icmp ult ptr %3389, %scevgep6033
  %3391 = bitcast <8 x i1> %3382 to i8
  %3392 = icmp ne i8 %3391, 0
  %op.rdx6629 = or i1 %3392, %3386
  %op.rdx6630 = or i1 %3390, %mul.overflow6004
  %op.rdx6631 = or i1 %op.rdx6629, %op.rdx6630
  br i1 %op.rdx6631, label %scalar.ph6138.preheader, label %vector.memcheck6037

vector.memcheck6037:                              ; preds = %vector.scevcheck5996
  %3393 = shl nsw i64 %3327, 4
  %3394 = shl nsw i64 %23, 4
  %3395 = add nsw i64 %3393, %3394
  %3396 = getelementptr i8, ptr %5, i64 %3395
  %scevgep6038 = getelementptr i8, ptr %3396, i64 16
  %3397 = shl nuw nsw i64 %wide.trip.count4721, 4
  %3398 = getelementptr i8, ptr %5, i64 %3395
  %3399 = getelementptr i8, ptr %3398, i64 %3397
  %scevgep6039 = getelementptr i8, ptr %3399, i64 -8
  %3400 = shl nsw i64 %3328, 4
  %3401 = add nsw i64 %3400, %3394
  %3402 = getelementptr i8, ptr %5, i64 %3401
  %scevgep6040 = getelementptr i8, ptr %3402, i64 16
  %3403 = getelementptr i8, ptr %5, i64 %3401
  %3404 = getelementptr i8, ptr %3403, i64 %3397
  %scevgep6041 = getelementptr i8, ptr %3404, i64 -8
  %3405 = shl nsw i64 %3329, 4
  %3406 = add nsw i64 %3405, %3394
  %3407 = getelementptr i8, ptr %5, i64 %3406
  %scevgep6042 = getelementptr i8, ptr %3407, i64 16
  %3408 = getelementptr i8, ptr %5, i64 %3406
  %3409 = getelementptr i8, ptr %3408, i64 %3397
  %scevgep6043 = getelementptr i8, ptr %3409, i64 -8
  %3410 = shl nsw i64 %3330, 4
  %3411 = add nsw i64 %3410, %3394
  %3412 = getelementptr i8, ptr %5, i64 %3411
  %scevgep6044 = getelementptr i8, ptr %3412, i64 16
  %3413 = getelementptr i8, ptr %5, i64 %3411
  %3414 = getelementptr i8, ptr %3413, i64 %3397
  %scevgep6045 = getelementptr i8, ptr %3414, i64 -8
  %3415 = shl nsw i64 %3331, 4
  %3416 = add nsw i64 %3415, %3394
  %3417 = getelementptr i8, ptr %5, i64 %3416
  %scevgep6046 = getelementptr i8, ptr %3417, i64 16
  %3418 = getelementptr i8, ptr %5, i64 %3416
  %3419 = getelementptr i8, ptr %3418, i64 %3397
  %scevgep6047 = getelementptr i8, ptr %3419, i64 -8
  %3420 = add nsw i64 %3393, %3394
  %3421 = getelementptr i8, ptr %5, i64 %3420
  %scevgep6048 = getelementptr i8, ptr %3421, i64 24
  %3422 = getelementptr i8, ptr %5, i64 %3420
  %scevgep6049 = getelementptr i8, ptr %3422, i64 %3397
  %3423 = add nsw i64 %3400, %3394
  %3424 = getelementptr i8, ptr %5, i64 %3423
  %scevgep6050 = getelementptr i8, ptr %3424, i64 24
  %3425 = getelementptr i8, ptr %5, i64 %3423
  %scevgep6051 = getelementptr i8, ptr %3425, i64 %3397
  %3426 = add nsw i64 %3405, %3394
  %3427 = getelementptr i8, ptr %5, i64 %3426
  %scevgep6052 = getelementptr i8, ptr %3427, i64 24
  %3428 = getelementptr i8, ptr %5, i64 %3426
  %scevgep6053 = getelementptr i8, ptr %3428, i64 %3397
  %3429 = add nsw i64 %3410, %3394
  %3430 = getelementptr i8, ptr %5, i64 %3429
  %scevgep6054 = getelementptr i8, ptr %3430, i64 24
  %3431 = getelementptr i8, ptr %5, i64 %3429
  %scevgep6055 = getelementptr i8, ptr %3431, i64 %3397
  %3432 = add nsw i64 %3415, %3394
  %3433 = getelementptr i8, ptr %5, i64 %3432
  %scevgep6056 = getelementptr i8, ptr %3433, i64 24
  %3434 = getelementptr i8, ptr %5, i64 %3432
  %scevgep6057 = getelementptr i8, ptr %3434, i64 %3397
  %bound06058 = icmp ult ptr %scevgep6038, %scevgep6041
  %bound16059 = icmp ult ptr %scevgep6040, %scevgep6039
  %found.conflict6060 = and i1 %bound06058, %bound16059
  %bound06061 = icmp ult ptr %scevgep6038, %scevgep6043
  %bound16062 = icmp ult ptr %scevgep6042, %scevgep6039
  %found.conflict6063 = and i1 %bound06061, %bound16062
  %conflict.rdx6064 = or i1 %found.conflict6060, %found.conflict6063
  %bound06065 = icmp ult ptr %scevgep6038, %scevgep6045
  %bound16066 = icmp ult ptr %scevgep6044, %scevgep6039
  %found.conflict6067 = and i1 %bound06065, %bound16066
  %conflict.rdx6068 = or i1 %conflict.rdx6064, %found.conflict6067
  %bound06069 = icmp ult ptr %scevgep6038, %scevgep6047
  %bound16070 = icmp ult ptr %scevgep6046, %scevgep6039
  %found.conflict6071 = and i1 %bound06069, %bound16070
  %conflict.rdx6072 = or i1 %conflict.rdx6068, %found.conflict6071
  %bound06073 = icmp ult ptr %scevgep6040, %scevgep6043
  %bound16074 = icmp ult ptr %scevgep6042, %scevgep6041
  %found.conflict6075 = and i1 %bound06073, %bound16074
  %conflict.rdx6076 = or i1 %conflict.rdx6072, %found.conflict6075
  %bound06077 = icmp ult ptr %scevgep6040, %scevgep6045
  %bound16078 = icmp ult ptr %scevgep6044, %scevgep6041
  %found.conflict6079 = and i1 %bound06077, %bound16078
  %conflict.rdx6080 = or i1 %conflict.rdx6076, %found.conflict6079
  %bound06081 = icmp ult ptr %scevgep6040, %scevgep6047
  %bound16082 = icmp ult ptr %scevgep6046, %scevgep6041
  %found.conflict6083 = and i1 %bound06081, %bound16082
  %conflict.rdx6084 = or i1 %conflict.rdx6080, %found.conflict6083
  %bound06085 = icmp ult ptr %scevgep6042, %scevgep6045
  %bound16086 = icmp ult ptr %scevgep6044, %scevgep6043
  %found.conflict6087 = and i1 %bound06085, %bound16086
  %conflict.rdx6088 = or i1 %conflict.rdx6084, %found.conflict6087
  %bound06089 = icmp ult ptr %scevgep6042, %scevgep6047
  %bound16090 = icmp ult ptr %scevgep6046, %scevgep6043
  %found.conflict6091 = and i1 %bound06089, %bound16090
  %conflict.rdx6092 = or i1 %conflict.rdx6088, %found.conflict6091
  %bound06093 = icmp ult ptr %scevgep6044, %scevgep6047
  %bound16094 = icmp ult ptr %scevgep6046, %scevgep6045
  %found.conflict6095 = and i1 %bound06093, %bound16094
  %conflict.rdx6096 = or i1 %conflict.rdx6092, %found.conflict6095
  %bound06097 = icmp ult ptr %scevgep6048, %scevgep6051
  %bound16098 = icmp ult ptr %scevgep6050, %scevgep6049
  %found.conflict6099 = and i1 %bound06097, %bound16098
  %conflict.rdx6100 = or i1 %conflict.rdx6096, %found.conflict6099
  %bound06101 = icmp ult ptr %scevgep6048, %scevgep6053
  %bound16102 = icmp ult ptr %scevgep6052, %scevgep6049
  %found.conflict6103 = and i1 %bound06101, %bound16102
  %conflict.rdx6104 = or i1 %conflict.rdx6100, %found.conflict6103
  %bound06105 = icmp ult ptr %scevgep6048, %scevgep6055
  %bound16106 = icmp ult ptr %scevgep6054, %scevgep6049
  %found.conflict6107 = and i1 %bound06105, %bound16106
  %conflict.rdx6108 = or i1 %conflict.rdx6104, %found.conflict6107
  %bound06109 = icmp ult ptr %scevgep6048, %scevgep6057
  %bound16110 = icmp ult ptr %scevgep6056, %scevgep6049
  %found.conflict6111 = and i1 %bound06109, %bound16110
  %conflict.rdx6112 = or i1 %conflict.rdx6108, %found.conflict6111
  %bound06113 = icmp ult ptr %scevgep6050, %scevgep6053
  %bound16114 = icmp ult ptr %scevgep6052, %scevgep6051
  %found.conflict6115 = and i1 %bound06113, %bound16114
  %conflict.rdx6116 = or i1 %conflict.rdx6112, %found.conflict6115
  %bound06117 = icmp ult ptr %scevgep6050, %scevgep6055
  %bound16118 = icmp ult ptr %scevgep6054, %scevgep6051
  %found.conflict6119 = and i1 %bound06117, %bound16118
  %conflict.rdx6120 = or i1 %conflict.rdx6116, %found.conflict6119
  %bound06121 = icmp ult ptr %scevgep6050, %scevgep6057
  %bound16122 = icmp ult ptr %scevgep6056, %scevgep6051
  %found.conflict6123 = and i1 %bound06121, %bound16122
  %conflict.rdx6124 = or i1 %conflict.rdx6120, %found.conflict6123
  %bound06125 = icmp ult ptr %scevgep6052, %scevgep6055
  %bound16126 = icmp ult ptr %scevgep6054, %scevgep6053
  %found.conflict6127 = and i1 %bound06125, %bound16126
  %conflict.rdx6128 = or i1 %conflict.rdx6124, %found.conflict6127
  %bound06129 = icmp ult ptr %scevgep6052, %scevgep6057
  %bound16130 = icmp ult ptr %scevgep6056, %scevgep6053
  %found.conflict6131 = and i1 %bound06129, %bound16130
  %conflict.rdx6132 = or i1 %conflict.rdx6128, %found.conflict6131
  %bound06133 = icmp ult ptr %scevgep6054, %scevgep6057
  %bound16134 = icmp ult ptr %scevgep6056, %scevgep6055
  %found.conflict6135 = and i1 %bound06133, %bound16134
  %conflict.rdx6136 = or i1 %conflict.rdx6132, %found.conflict6135
  br i1 %conflict.rdx6136, label %scalar.ph6138.preheader, label %vector.ph6140

vector.ph6140:                                    ; preds = %vector.memcheck6037
  %n.vec6142 = and i64 %3333, 2147483646
  %ind.end6143 = or i64 %3333, 1
  %broadcast.splat6152 = shufflevector <2 x double> %3314, <2 x double> poison, <2 x i32> zeroinitializer
  %broadcast.splatinsert6153 = insertelement <2 x double> poison, double %3307, i64 0
  %broadcast.splat6154 = shufflevector <2 x double> %broadcast.splatinsert6153, <2 x double> poison, <2 x i32> zeroinitializer
  %broadcast.splatinsert6155 = insertelement <2 x double> poison, double %3308, i64 0
  %broadcast.splat6156 = shufflevector <2 x double> %broadcast.splatinsert6155, <2 x double> poison, <2 x i32> zeroinitializer
  %broadcast.splat6161 = shufflevector <2 x double> %3314, <2 x double> poison, <2 x i32> <i32 1, i32 1>
  %broadcast.splatinsert6162 = insertelement <2 x double> poison, double %3310, i64 0
  %broadcast.splat6163 = shufflevector <2 x double> %broadcast.splatinsert6162, <2 x double> poison, <2 x i32> zeroinitializer
  %broadcast.splatinsert6164 = insertelement <2 x double> poison, double %3311, i64 0
  %broadcast.splat6165 = shufflevector <2 x double> %broadcast.splatinsert6164, <2 x double> poison, <2 x i32> zeroinitializer
  %broadcast.splatinsert6169 = insertelement <2 x double> poison, double %3318, i64 0
  %broadcast.splat6170 = shufflevector <2 x double> %broadcast.splatinsert6169, <2 x double> poison, <2 x i32> zeroinitializer
  %broadcast.splatinsert6171 = insertelement <2 x double> poison, double %3316, i64 0
  %broadcast.splat6172 = shufflevector <2 x double> %broadcast.splatinsert6171, <2 x double> poison, <2 x i32> zeroinitializer
  %broadcast.splatinsert6173 = insertelement <2 x double> poison, double %3317, i64 0
  %broadcast.splat6174 = shufflevector <2 x double> %broadcast.splatinsert6173, <2 x double> poison, <2 x i32> zeroinitializer
  %broadcast.splatinsert6178 = insertelement <2 x double> poison, double %3322, i64 0
  %broadcast.splat6179 = shufflevector <2 x double> %broadcast.splatinsert6178, <2 x double> poison, <2 x i32> zeroinitializer
  %broadcast.splatinsert6180 = insertelement <2 x double> poison, double %3320, i64 0
  %broadcast.splat6181 = shufflevector <2 x double> %broadcast.splatinsert6180, <2 x double> poison, <2 x i32> zeroinitializer
  %broadcast.splatinsert6182 = insertelement <2 x double> poison, double %3321, i64 0
  %broadcast.splat6183 = shufflevector <2 x double> %broadcast.splatinsert6182, <2 x double> poison, <2 x i32> zeroinitializer
  %broadcast.splatinsert6187 = insertelement <2 x double> poison, double %3326, i64 0
  %broadcast.splat6188 = shufflevector <2 x double> %broadcast.splatinsert6187, <2 x double> poison, <2 x i32> zeroinitializer
  %broadcast.splatinsert6189 = insertelement <2 x double> poison, double %3324, i64 0
  %broadcast.splat6190 = shufflevector <2 x double> %broadcast.splatinsert6189, <2 x double> poison, <2 x i32> zeroinitializer
  %broadcast.splatinsert6191 = insertelement <2 x double> poison, double %3325, i64 0
  %broadcast.splat6192 = shufflevector <2 x double> %broadcast.splatinsert6191, <2 x double> poison, <2 x i32> zeroinitializer
  %broadcast.splat6194 = shufflevector <2 x double> %3224, <2 x double> poison, <2 x i32> <i32 1, i32 1>
  %broadcast.splat6196 = shufflevector <2 x double> %3224, <2 x double> poison, <2 x i32> zeroinitializer
  %broadcast.splat6199 = shufflevector <2 x double> %3243, <2 x double> poison, <2 x i32> <i32 1, i32 1>
  %broadcast.splat6201 = shufflevector <2 x double> %3243, <2 x double> poison, <2 x i32> zeroinitializer
  %broadcast.splat6207 = shufflevector <2 x double> %3262, <2 x double> poison, <2 x i32> <i32 1, i32 1>
  %broadcast.splat6209 = shufflevector <2 x double> %3262, <2 x double> poison, <2 x i32> zeroinitializer
  %broadcast.splat6215 = shufflevector <2 x double> %3281, <2 x double> poison, <2 x i32> <i32 1, i32 1>
  %broadcast.splat6217 = shufflevector <2 x double> %3281, <2 x double> poison, <2 x i32> zeroinitializer
  %broadcast.splat6223 = shufflevector <2 x double> %3300, <2 x double> poison, <2 x i32> <i32 1, i32 1>
  %broadcast.splat6225 = shufflevector <2 x double> %3300, <2 x double> poison, <2 x i32> zeroinitializer
  br label %vector.body6145

vector.body6145:                                  ; preds = %vector.body6145, %vector.ph6140
  %index6146 = phi i64 [ 0, %vector.ph6140 ], [ %index.next6230, %vector.body6145 ]
  %offset.idx6147 = or disjoint i64 %index6146, 1
  %3435 = getelementptr %struct.doublecomplex, ptr %invariant.gep4821, i64 %offset.idx6147
  %wide.vec6148 = load <4 x double>, ptr %3435, align 8, !tbaa !13
  %strided.vec6149 = shufflevector <4 x double> %wide.vec6148, <4 x double> poison, <2 x i32> <i32 0, i32 2>
  %strided.vec6150 = shufflevector <4 x double> %wide.vec6148, <4 x double> poison, <2 x i32> <i32 1, i32 3>
  %3436 = fmul <2 x double> %strided.vec6150, %broadcast.splat6152
  %3437 = call <2 x double> @llvm.fmuladd.v2f64(<2 x double> %broadcast.splat6154, <2 x double> %strided.vec6149, <2 x double> %3436)
  %3438 = fmul <2 x double> %strided.vec6149, %broadcast.splat6156
  %3439 = call <2 x double> @llvm.fmuladd.v2f64(<2 x double> %broadcast.splat6154, <2 x double> %strided.vec6150, <2 x double> %3438)
  %3440 = getelementptr %struct.doublecomplex, ptr %invariant.gep4823, i64 %offset.idx6147
  %wide.vec6157 = load <4 x double>, ptr %3440, align 8, !tbaa !13
  %strided.vec6158 = shufflevector <4 x double> %wide.vec6157, <4 x double> poison, <2 x i32> <i32 0, i32 2>
  %strided.vec6159 = shufflevector <4 x double> %wide.vec6157, <4 x double> poison, <2 x i32> <i32 1, i32 3>
  %3441 = fmul <2 x double> %strided.vec6159, %broadcast.splat6161
  %3442 = call <2 x double> @llvm.fmuladd.v2f64(<2 x double> %broadcast.splat6163, <2 x double> %strided.vec6158, <2 x double> %3441)
  %3443 = fmul <2 x double> %strided.vec6158, %broadcast.splat6165
  %3444 = call <2 x double> @llvm.fmuladd.v2f64(<2 x double> %broadcast.splat6163, <2 x double> %strided.vec6159, <2 x double> %3443)
  %3445 = fadd <2 x double> %3437, %3442
  %3446 = fadd <2 x double> %3439, %3444
  %3447 = getelementptr %struct.doublecomplex, ptr %invariant.gep4825, i64 %offset.idx6147
  %wide.vec6166 = load <4 x double>, ptr %3447, align 8, !tbaa !13
  %strided.vec6167 = shufflevector <4 x double> %wide.vec6166, <4 x double> poison, <2 x i32> <i32 0, i32 2>
  %strided.vec6168 = shufflevector <4 x double> %wide.vec6166, <4 x double> poison, <2 x i32> <i32 1, i32 3>
  %3448 = fmul <2 x double> %strided.vec6168, %broadcast.splat6170
  %3449 = call <2 x double> @llvm.fmuladd.v2f64(<2 x double> %broadcast.splat6172, <2 x double> %strided.vec6167, <2 x double> %3448)
  %3450 = fmul <2 x double> %strided.vec6167, %broadcast.splat6174
  %3451 = call <2 x double> @llvm.fmuladd.v2f64(<2 x double> %broadcast.splat6172, <2 x double> %strided.vec6168, <2 x double> %3450)
  %3452 = fadd <2 x double> %3445, %3449
  %3453 = fadd <2 x double> %3446, %3451
  %3454 = getelementptr %struct.doublecomplex, ptr %invariant.gep4827, i64 %offset.idx6147
  %wide.vec6175 = load <4 x double>, ptr %3454, align 8, !tbaa !13
  %strided.vec6176 = shufflevector <4 x double> %wide.vec6175, <4 x double> poison, <2 x i32> <i32 0, i32 2>
  %strided.vec6177 = shufflevector <4 x double> %wide.vec6175, <4 x double> poison, <2 x i32> <i32 1, i32 3>
  %3455 = fmul <2 x double> %strided.vec6177, %broadcast.splat6179
  %3456 = call <2 x double> @llvm.fmuladd.v2f64(<2 x double> %broadcast.splat6181, <2 x double> %strided.vec6176, <2 x double> %3455)
  %3457 = fmul <2 x double> %strided.vec6176, %broadcast.splat6183
  %3458 = call <2 x double> @llvm.fmuladd.v2f64(<2 x double> %broadcast.splat6181, <2 x double> %strided.vec6177, <2 x double> %3457)
  %3459 = fadd <2 x double> %3452, %3456
  %3460 = fadd <2 x double> %3453, %3458
  %3461 = getelementptr %struct.doublecomplex, ptr %invariant.gep4829, i64 %offset.idx6147
  %wide.vec6184 = load <4 x double>, ptr %3461, align 8, !tbaa !13
  %strided.vec6185 = shufflevector <4 x double> %wide.vec6184, <4 x double> poison, <2 x i32> <i32 0, i32 2>
  %strided.vec6186 = shufflevector <4 x double> %wide.vec6184, <4 x double> poison, <2 x i32> <i32 1, i32 3>
  %3462 = fmul <2 x double> %strided.vec6186, %broadcast.splat6188
  %3463 = call <2 x double> @llvm.fmuladd.v2f64(<2 x double> %broadcast.splat6190, <2 x double> %strided.vec6185, <2 x double> %3462)
  %3464 = fmul <2 x double> %strided.vec6185, %broadcast.splat6192
  %3465 = call <2 x double> @llvm.fmuladd.v2f64(<2 x double> %broadcast.splat6190, <2 x double> %strided.vec6186, <2 x double> %3464)
  %3466 = fadd <2 x double> %3459, %3463
  %3467 = fadd <2 x double> %3460, %3465
  %3468 = fneg <2 x double> %3467
  %3469 = fmul <2 x double> %broadcast.splat6194, %3468
  %3470 = call <2 x double> @llvm.fmuladd.v2f64(<2 x double> %3466, <2 x double> %broadcast.splat6196, <2 x double> %3469)
  %3471 = fmul <2 x double> %broadcast.splat6196, %3467
  %3472 = call <2 x double> @llvm.fmuladd.v2f64(<2 x double> %3466, <2 x double> %broadcast.splat6194, <2 x double> %3471)
  %3473 = fsub <2 x double> %strided.vec6149, %3470
  %3474 = fsub <2 x double> %strided.vec6150, %3472
  %interleaved.vec6197 = shufflevector <2 x double> %3473, <2 x double> %3474, <4 x i32> <i32 0, i32 2, i32 1, i32 3>
  store <4 x double> %interleaved.vec6197, ptr %3435, align 8, !tbaa !13
  %3475 = fmul <2 x double> %broadcast.splat6199, %3468
  %3476 = call <2 x double> @llvm.fmuladd.v2f64(<2 x double> %3466, <2 x double> %broadcast.splat6201, <2 x double> %3475)
  %3477 = fmul <2 x double> %broadcast.splat6201, %3467
  %3478 = call <2 x double> @llvm.fmuladd.v2f64(<2 x double> %3466, <2 x double> %broadcast.splat6199, <2 x double> %3477)
  %wide.vec6202 = load <4 x double>, ptr %3440, align 8, !tbaa !13
  %strided.vec6203 = shufflevector <4 x double> %wide.vec6202, <4 x double> poison, <2 x i32> <i32 0, i32 2>
  %strided.vec6204 = shufflevector <4 x double> %wide.vec6202, <4 x double> poison, <2 x i32> <i32 1, i32 3>
  %3479 = fsub <2 x double> %strided.vec6203, %3476
  %3480 = fsub <2 x double> %strided.vec6204, %3478
  %interleaved.vec6205 = shufflevector <2 x double> %3479, <2 x double> %3480, <4 x i32> <i32 0, i32 2, i32 1, i32 3>
  store <4 x double> %interleaved.vec6205, ptr %3440, align 8, !tbaa !13
  %3481 = fmul <2 x double> %broadcast.splat6207, %3468
  %3482 = call <2 x double> @llvm.fmuladd.v2f64(<2 x double> %3466, <2 x double> %broadcast.splat6209, <2 x double> %3481)
  %3483 = fmul <2 x double> %broadcast.splat6209, %3467
  %3484 = call <2 x double> @llvm.fmuladd.v2f64(<2 x double> %3466, <2 x double> %broadcast.splat6207, <2 x double> %3483)
  %wide.vec6210 = load <4 x double>, ptr %3447, align 8, !tbaa !13
  %strided.vec6211 = shufflevector <4 x double> %wide.vec6210, <4 x double> poison, <2 x i32> <i32 0, i32 2>
  %strided.vec6212 = shufflevector <4 x double> %wide.vec6210, <4 x double> poison, <2 x i32> <i32 1, i32 3>
  %3485 = fsub <2 x double> %strided.vec6211, %3482
  %3486 = fsub <2 x double> %strided.vec6212, %3484
  %interleaved.vec6213 = shufflevector <2 x double> %3485, <2 x double> %3486, <4 x i32> <i32 0, i32 2, i32 1, i32 3>
  store <4 x double> %interleaved.vec6213, ptr %3447, align 8, !tbaa !13
  %3487 = fmul <2 x double> %broadcast.splat6215, %3468
  %3488 = call <2 x double> @llvm.fmuladd.v2f64(<2 x double> %3466, <2 x double> %broadcast.splat6217, <2 x double> %3487)
  %3489 = fmul <2 x double> %broadcast.splat6217, %3467
  %3490 = call <2 x double> @llvm.fmuladd.v2f64(<2 x double> %3466, <2 x double> %broadcast.splat6215, <2 x double> %3489)
  %wide.vec6218 = load <4 x double>, ptr %3454, align 8, !tbaa !13
  %strided.vec6219 = shufflevector <4 x double> %wide.vec6218, <4 x double> poison, <2 x i32> <i32 0, i32 2>
  %strided.vec6220 = shufflevector <4 x double> %wide.vec6218, <4 x double> poison, <2 x i32> <i32 1, i32 3>
  %3491 = fsub <2 x double> %strided.vec6219, %3488
  %3492 = fsub <2 x double> %strided.vec6220, %3490
  %interleaved.vec6221 = shufflevector <2 x double> %3491, <2 x double> %3492, <4 x i32> <i32 0, i32 2, i32 1, i32 3>
  store <4 x double> %interleaved.vec6221, ptr %3454, align 8, !tbaa !13
  %3493 = fmul <2 x double> %broadcast.splat6223, %3468
  %3494 = call <2 x double> @llvm.fmuladd.v2f64(<2 x double> %3466, <2 x double> %broadcast.splat6225, <2 x double> %3493)
  %3495 = fmul <2 x double> %broadcast.splat6225, %3467
  %3496 = call <2 x double> @llvm.fmuladd.v2f64(<2 x double> %3466, <2 x double> %broadcast.splat6223, <2 x double> %3495)
  %wide.vec6226 = load <4 x double>, ptr %3461, align 8, !tbaa !13
  %strided.vec6227 = shufflevector <4 x double> %wide.vec6226, <4 x double> poison, <2 x i32> <i32 0, i32 2>
  %strided.vec6228 = shufflevector <4 x double> %wide.vec6226, <4 x double> poison, <2 x i32> <i32 1, i32 3>
  %3497 = fsub <2 x double> %strided.vec6227, %3494
  %3498 = fsub <2 x double> %strided.vec6228, %3496
  %interleaved.vec6229 = shufflevector <2 x double> %3497, <2 x double> %3498, <4 x i32> <i32 0, i32 2, i32 1, i32 3>
  store <4 x double> %interleaved.vec6229, ptr %3461, align 8, !tbaa !13
  %index.next6230 = add nuw i64 %index6146, 2
  %3499 = icmp eq i64 %index.next6230, %n.vec6142
  br i1 %3499, label %middle.block6137, label %vector.body6145, !llvm.loop !35

middle.block6137:                                 ; preds = %vector.body6145
  %cmp.n6231 = icmp eq i64 %n.vec6142, %3333
  br i1 %cmp.n6231, label %.loopexit, label %scalar.ph6138.preheader

scalar.ph6138.preheader:                          ; preds = %middle.block6137, %vector.memcheck6037, %vector.scevcheck5996, %.lr.ph4498
  %indvars.iv4718.ph = phi i64 [ 1, %vector.memcheck6037 ], [ 1, %vector.scevcheck5996 ], [ 1, %.lr.ph4498 ], [ %ind.end6143, %middle.block6137 ]
  %3500 = insertelement <2 x double> poison, double %3307, i64 0
  %3501 = insertelement <2 x double> %3500, double %3310, i64 1
  br label %scalar.ph6138

scalar.ph6138:                                    ; preds = %scalar.ph6138.preheader, %scalar.ph6138
  %indvars.iv4718 = phi i64 [ %indvars.iv.next4719, %scalar.ph6138 ], [ %indvars.iv4718.ph, %scalar.ph6138.preheader ]
  %gep4822 = getelementptr %struct.doublecomplex, ptr %invariant.gep4821, i64 %indvars.iv4718
  %gep4824 = getelementptr %struct.doublecomplex, ptr %invariant.gep4823, i64 %indvars.iv4718
  %3502 = load double, ptr %gep4824, align 8, !tbaa !9
  %3503 = getelementptr inbounds i8, ptr %gep4824, i64 8
  %3504 = load double, ptr %3503, align 8, !tbaa !12
  %gep4826 = getelementptr %struct.doublecomplex, ptr %invariant.gep4825, i64 %indvars.iv4718
  %3505 = load double, ptr %gep4826, align 8, !tbaa !9
  %3506 = getelementptr inbounds i8, ptr %gep4826, i64 8
  %3507 = load double, ptr %3506, align 8, !tbaa !12
  %3508 = fmul double %3507, %3318
  %3509 = call double @llvm.fmuladd.f64(double %3316, double %3505, double %3508)
  %3510 = fmul double %3505, %3317
  %3511 = call double @llvm.fmuladd.f64(double %3316, double %3507, double %3510)
  %gep4828 = getelementptr %struct.doublecomplex, ptr %invariant.gep4827, i64 %indvars.iv4718
  %3512 = load double, ptr %gep4828, align 8, !tbaa !9
  %3513 = getelementptr inbounds i8, ptr %gep4828, i64 8
  %3514 = load double, ptr %3513, align 8, !tbaa !12
  %3515 = fmul double %3514, %3322
  %3516 = call double @llvm.fmuladd.f64(double %3320, double %3512, double %3515)
  %3517 = fmul double %3512, %3321
  %3518 = call double @llvm.fmuladd.f64(double %3320, double %3514, double %3517)
  %gep4830 = getelementptr %struct.doublecomplex, ptr %invariant.gep4829, i64 %indvars.iv4718
  %3519 = load double, ptr %gep4830, align 8, !tbaa !9
  %3520 = getelementptr inbounds i8, ptr %gep4830, i64 8
  %3521 = load double, ptr %3520, align 8, !tbaa !12
  %3522 = fmul double %3521, %3326
  %3523 = call double @llvm.fmuladd.f64(double %3324, double %3519, double %3522)
  %3524 = fmul double %3519, %3325
  %3525 = call double @llvm.fmuladd.f64(double %3324, double %3521, double %3524)
  %3526 = load <2 x double>, ptr %gep4822, align 8, !tbaa !13
  %3527 = shufflevector <2 x double> %3526, <2 x double> poison, <2 x i32> <i32 1, i32 poison>
  %3528 = insertelement <2 x double> %3527, double %3504, i64 1
  %3529 = fmul <2 x double> %3528, %3314
  %3530 = insertelement <2 x double> %3526, double %3502, i64 1
  %3531 = call <2 x double> @llvm.fmuladd.v2f64(<2 x double> %3501, <2 x double> %3530, <2 x double> %3529)
  %3532 = fmul <2 x double> %3530, %3313
  %3533 = call <2 x double> @llvm.fmuladd.v2f64(<2 x double> %3501, <2 x double> %3528, <2 x double> %3532)
  %shift6672 = shufflevector <2 x double> %3531, <2 x double> poison, <2 x i32> <i32 1, i32 poison>
  %3534 = fadd <2 x double> %3531, %shift6672
  %3535 = extractelement <2 x double> %3534, i64 0
  %shift6673 = shufflevector <2 x double> %3533, <2 x double> poison, <2 x i32> <i32 1, i32 poison>
  %3536 = fadd <2 x double> %3533, %shift6673
  %3537 = extractelement <2 x double> %3536, i64 0
  %3538 = fadd double %3535, %3509
  %3539 = fadd double %3537, %3511
  %3540 = fadd double %3538, %3516
  %3541 = fadd double %3539, %3518
  %3542 = fadd double %3540, %3523
  %3543 = fadd double %3541, %3525
  %3544 = fneg double %3543
  %3545 = insertelement <2 x double> poison, double %3543, i64 0
  %3546 = insertelement <2 x double> %3545, double %3544, i64 1
  %3547 = fmul <2 x double> %3224, %3546
  %3548 = shufflevector <2 x double> %3547, <2 x double> poison, <2 x i32> <i32 1, i32 0>
  %3549 = insertelement <2 x double> poison, double %3542, i64 0
  %3550 = shufflevector <2 x double> %3549, <2 x double> poison, <2 x i32> zeroinitializer
  %3551 = call <2 x double> @llvm.fmuladd.v2f64(<2 x double> %3550, <2 x double> %3224, <2 x double> %3548)
  %3552 = fsub <2 x double> %3526, %3551
  store <2 x double> %3552, ptr %gep4822, align 8, !tbaa !13
  %3553 = fmul <2 x double> %3243, %3546
  %3554 = shufflevector <2 x double> %3553, <2 x double> poison, <2 x i32> <i32 1, i32 0>
  %3555 = call <2 x double> @llvm.fmuladd.v2f64(<2 x double> %3550, <2 x double> %3243, <2 x double> %3554)
  %3556 = load <2 x double>, ptr %gep4824, align 8, !tbaa !13
  %3557 = fsub <2 x double> %3556, %3555
  store <2 x double> %3557, ptr %gep4824, align 8, !tbaa !13
  %3558 = fmul <2 x double> %3262, %3546
  %3559 = shufflevector <2 x double> %3558, <2 x double> poison, <2 x i32> <i32 1, i32 0>
  %3560 = call <2 x double> @llvm.fmuladd.v2f64(<2 x double> %3550, <2 x double> %3262, <2 x double> %3559)
  %3561 = load <2 x double>, ptr %gep4826, align 8, !tbaa !13
  %3562 = fsub <2 x double> %3561, %3560
  store <2 x double> %3562, ptr %gep4826, align 8, !tbaa !13
  %3563 = fmul <2 x double> %3281, %3546
  %3564 = shufflevector <2 x double> %3563, <2 x double> poison, <2 x i32> <i32 1, i32 0>
  %3565 = call <2 x double> @llvm.fmuladd.v2f64(<2 x double> %3550, <2 x double> %3281, <2 x double> %3564)
  %3566 = load <2 x double>, ptr %gep4828, align 8, !tbaa !13
  %3567 = fsub <2 x double> %3566, %3565
  store <2 x double> %3567, ptr %gep4828, align 8, !tbaa !13
  %3568 = fmul <2 x double> %3300, %3546
  %3569 = shufflevector <2 x double> %3568, <2 x double> poison, <2 x i32> <i32 1, i32 0>
  %3570 = call <2 x double> @llvm.fmuladd.v2f64(<2 x double> %3550, <2 x double> %3300, <2 x double> %3569)
  %3571 = load <2 x double>, ptr %gep4830, align 8, !tbaa !13
  %3572 = fsub <2 x double> %3571, %3570
  store <2 x double> %3572, ptr %gep4830, align 8, !tbaa !13
  %indvars.iv.next4719 = add nuw nsw i64 %indvars.iv4718, 1
  %exitcond4722.not = icmp eq i64 %indvars.iv.next4719, %wide.trip.count4721
  br i1 %exitcond4722.not, label %.loopexit, label %scalar.ph6138, !llvm.loop !36

3573:                                             ; preds = %2482
  %3574 = load <2 x double>, ptr %3, align 8, !tbaa !13
  store <2 x double> %3574, ptr %12, align 16, !tbaa !13
  %3575 = call { double, double } @Cd(ptr noundef nonnull %12)
  %3576 = extractvalue { double, double } %3575, 0
  %3577 = extractvalue { double, double } %3575, 1
  %3578 = fneg double %3577
  %3579 = call ptr @_pCd(ptr noundef nonnull %10)
  %3580 = getelementptr inbounds i8, ptr %3579, i64 8
  store double %3576, ptr %3579, align 8
  store double %3578, ptr %3580, align 8
  %3581 = load double, ptr %4, align 8, !tbaa !9
  %3582 = getelementptr inbounds i8, ptr %4, i64 8
  %3583 = load double, ptr %3582, align 8, !tbaa !12
  %3584 = fneg double %3583
  %3585 = load <2 x double>, ptr %10, align 16, !tbaa !13
  %3586 = insertelement <2 x double> poison, double %3583, i64 0
  %3587 = insertelement <2 x double> %3586, double %3584, i64 1
  %3588 = fmul <2 x double> %3585, %3587
  %3589 = shufflevector <2 x double> %3588, <2 x double> poison, <2 x i32> <i32 1, i32 0>
  %3590 = insertelement <2 x double> poison, double %3581, i64 0
  %3591 = shufflevector <2 x double> %3590, <2 x double> poison, <2 x i32> zeroinitializer
  %3592 = call <2 x double> @llvm.fmuladd.v2f64(<2 x double> %3591, <2 x double> %3585, <2 x double> %3589)
  store <2 x double> %3592, ptr %9, align 16, !tbaa !13
  %3593 = getelementptr inbounds i8, ptr %3, i64 16
  %3594 = load <2 x double>, ptr %3593, align 8, !tbaa !13
  store <2 x double> %3594, ptr %13, align 16, !tbaa !13
  %3595 = call { double, double } @Cd(ptr noundef nonnull %13)
  %3596 = extractvalue { double, double } %3595, 0
  %3597 = extractvalue { double, double } %3595, 1
  %3598 = fneg double %3597
  %3599 = call ptr @_pCd(ptr noundef nonnull %10)
  %3600 = getelementptr inbounds i8, ptr %3599, i64 8
  store double %3596, ptr %3599, align 8
  store double %3598, ptr %3600, align 8
  %3601 = load double, ptr %4, align 8, !tbaa !9
  %3602 = load double, ptr %3582, align 8, !tbaa !12
  %3603 = fneg double %3602
  %3604 = load <2 x double>, ptr %10, align 16, !tbaa !13
  %3605 = insertelement <2 x double> poison, double %3602, i64 0
  %3606 = insertelement <2 x double> %3605, double %3603, i64 1
  %3607 = fmul <2 x double> %3604, %3606
  %3608 = shufflevector <2 x double> %3607, <2 x double> poison, <2 x i32> <i32 1, i32 0>
  %3609 = insertelement <2 x double> poison, double %3601, i64 0
  %3610 = shufflevector <2 x double> %3609, <2 x double> poison, <2 x i32> zeroinitializer
  %3611 = call <2 x double> @llvm.fmuladd.v2f64(<2 x double> %3610, <2 x double> %3604, <2 x double> %3608)
  store <2 x double> %3611, ptr %9, align 16, !tbaa !13
  %3612 = getelementptr inbounds i8, ptr %3, i64 32
  %3613 = load <2 x double>, ptr %3612, align 8, !tbaa !13
  store <2 x double> %3613, ptr %14, align 16, !tbaa !13
  %3614 = call { double, double } @Cd(ptr noundef nonnull %14)
  %3615 = extractvalue { double, double } %3614, 0
  %3616 = extractvalue { double, double } %3614, 1
  %3617 = fneg double %3616
  %3618 = call ptr @_pCd(ptr noundef nonnull %10)
  %3619 = getelementptr inbounds i8, ptr %3618, i64 8
  store double %3615, ptr %3618, align 8
  store double %3617, ptr %3619, align 8
  %3620 = load double, ptr %4, align 8, !tbaa !9
  %3621 = load double, ptr %3582, align 8, !tbaa !12
  %3622 = fneg double %3621
  %3623 = load <2 x double>, ptr %10, align 16, !tbaa !13
  %3624 = insertelement <2 x double> poison, double %3621, i64 0
  %3625 = insertelement <2 x double> %3624, double %3622, i64 1
  %3626 = fmul <2 x double> %3623, %3625
  %3627 = shufflevector <2 x double> %3626, <2 x double> poison, <2 x i32> <i32 1, i32 0>
  %3628 = insertelement <2 x double> poison, double %3620, i64 0
  %3629 = shufflevector <2 x double> %3628, <2 x double> poison, <2 x i32> zeroinitializer
  %3630 = call <2 x double> @llvm.fmuladd.v2f64(<2 x double> %3629, <2 x double> %3623, <2 x double> %3627)
  store <2 x double> %3630, ptr %9, align 16, !tbaa !13
  %3631 = getelementptr inbounds i8, ptr %3, i64 48
  %3632 = load <2 x double>, ptr %3631, align 8, !tbaa !13
  store <2 x double> %3632, ptr %15, align 16, !tbaa !13
  %3633 = call { double, double } @Cd(ptr noundef nonnull %15)
  %3634 = extractvalue { double, double } %3633, 0
  %3635 = extractvalue { double, double } %3633, 1
  %3636 = fneg double %3635
  %3637 = call ptr @_pCd(ptr noundef nonnull %10)
  %3638 = getelementptr inbounds i8, ptr %3637, i64 8
  store double %3634, ptr %3637, align 8
  store double %3636, ptr %3638, align 8
  %3639 = load double, ptr %4, align 8, !tbaa !9
  %3640 = load double, ptr %3582, align 8, !tbaa !12
  %3641 = fneg double %3640
  %3642 = load <2 x double>, ptr %10, align 16, !tbaa !13
  %3643 = insertelement <2 x double> poison, double %3640, i64 0
  %3644 = insertelement <2 x double> %3643, double %3641, i64 1
  %3645 = fmul <2 x double> %3642, %3644
  %3646 = shufflevector <2 x double> %3645, <2 x double> poison, <2 x i32> <i32 1, i32 0>
  %3647 = insertelement <2 x double> poison, double %3639, i64 0
  %3648 = shufflevector <2 x double> %3647, <2 x double> poison, <2 x i32> zeroinitializer
  %3649 = call <2 x double> @llvm.fmuladd.v2f64(<2 x double> %3648, <2 x double> %3642, <2 x double> %3646)
  store <2 x double> %3649, ptr %9, align 16, !tbaa !13
  %3650 = getelementptr inbounds i8, ptr %3, i64 64
  %3651 = load <2 x double>, ptr %3650, align 8, !tbaa !13
  store <2 x double> %3651, ptr %16, align 16, !tbaa !13
  %3652 = call { double, double } @Cd(ptr noundef nonnull %16)
  %3653 = extractvalue { double, double } %3652, 0
  %3654 = extractvalue { double, double } %3652, 1
  %3655 = fneg double %3654
  %3656 = call ptr @_pCd(ptr noundef nonnull %10)
  %3657 = getelementptr inbounds i8, ptr %3656, i64 8
  store double %3653, ptr %3656, align 8
  store double %3655, ptr %3657, align 8
  %3658 = load double, ptr %4, align 8, !tbaa !9
  %3659 = load double, ptr %3582, align 8, !tbaa !12
  %3660 = fneg double %3659
  %3661 = load <2 x double>, ptr %10, align 16, !tbaa !13
  %3662 = insertelement <2 x double> poison, double %3659, i64 0
  %3663 = insertelement <2 x double> %3662, double %3660, i64 1
  %3664 = fmul <2 x double> %3661, %3663
  %3665 = shufflevector <2 x double> %3664, <2 x double> poison, <2 x i32> <i32 1, i32 0>
  %3666 = insertelement <2 x double> poison, double %3658, i64 0
  %3667 = shufflevector <2 x double> %3666, <2 x double> poison, <2 x i32> zeroinitializer
  %3668 = call <2 x double> @llvm.fmuladd.v2f64(<2 x double> %3667, <2 x double> %3661, <2 x double> %3665)
  store <2 x double> %3668, ptr %9, align 16, !tbaa !13
  %3669 = getelementptr inbounds i8, ptr %3, i64 80
  %3670 = load <2 x double>, ptr %3669, align 8, !tbaa !13
  store <2 x double> %3670, ptr %17, align 16, !tbaa !13
  %3671 = call { double, double } @Cd(ptr noundef nonnull %17)
  %3672 = extractvalue { double, double } %3671, 0
  %3673 = extractvalue { double, double } %3671, 1
  %3674 = fneg double %3673
  %3675 = call ptr @_pCd(ptr noundef nonnull %10)
  %3676 = getelementptr inbounds i8, ptr %3675, i64 8
  store double %3672, ptr %3675, align 8
  store double %3674, ptr %3676, align 8
  %3677 = load double, ptr %4, align 8, !tbaa !9
  %3678 = load double, ptr %3582, align 8, !tbaa !12
  %3679 = fneg double %3678
  %3680 = load <2 x double>, ptr %10, align 16, !tbaa !13
  %3681 = insertelement <2 x double> poison, double %3678, i64 0
  %3682 = insertelement <2 x double> %3681, double %3679, i64 1
  %3683 = fmul <2 x double> %3680, %3682
  %3684 = shufflevector <2 x double> %3683, <2 x double> poison, <2 x i32> <i32 1, i32 0>
  %3685 = insertelement <2 x double> poison, double %3677, i64 0
  %3686 = shufflevector <2 x double> %3685, <2 x double> poison, <2 x i32> zeroinitializer
  %3687 = call <2 x double> @llvm.fmuladd.v2f64(<2 x double> %3686, <2 x double> %3680, <2 x double> %3684)
  %3688 = load i32, ptr %1, align 4, !tbaa !5
  %.not42864485 = icmp slt i32 %3688, 1
  br i1 %.not42864485, label %.loopexit, label %.lr.ph4487

.lr.ph4487:                                       ; preds = %3573
  %3689 = getelementptr inbounds i8, ptr %17, i64 8
  %3690 = getelementptr inbounds i8, ptr %16, i64 8
  %3691 = getelementptr inbounds i8, ptr %15, i64 8
  %3692 = getelementptr inbounds i8, ptr %14, i64 8
  %3693 = getelementptr inbounds i8, ptr %13, i64 8
  %3694 = getelementptr inbounds i8, ptr %12, i64 8
  %3695 = load double, ptr %12, align 16, !tbaa !9
  %3696 = load double, ptr %3694, align 8, !tbaa !12
  %3697 = shl i32 %22, 1
  %3698 = load double, ptr %13, align 16, !tbaa !9
  %3699 = load double, ptr %3693, align 8, !tbaa !12
  %3700 = insertelement <2 x double> poison, double %3696, i64 0
  %3701 = insertelement <2 x double> %3700, double %3699, i64 1
  %3702 = fneg <2 x double> %3701
  %3703 = mul i32 %22, 3
  %3704 = load double, ptr %14, align 16, !tbaa !9
  %3705 = load double, ptr %3692, align 8, !tbaa !12
  %3706 = fneg double %3705
  %3707 = shl i32 %22, 2
  %3708 = load double, ptr %15, align 16, !tbaa !9
  %3709 = load double, ptr %3691, align 8, !tbaa !12
  %3710 = fneg double %3709
  %3711 = mul i32 %22, 5
  %3712 = load double, ptr %16, align 16, !tbaa !9
  %3713 = load double, ptr %3690, align 8, !tbaa !12
  %3714 = fneg double %3713
  %3715 = mul i32 %22, 6
  %3716 = load double, ptr %17, align 16, !tbaa !9
  %3717 = load double, ptr %3689, align 8, !tbaa !12
  %3718 = fneg double %3717
  %3719 = sext i32 %22 to i64
  %3720 = sext i32 %3697 to i64
  %3721 = sext i32 %3703 to i64
  %3722 = sext i32 %3707 to i64
  %3723 = sext i32 %3711 to i64
  %3724 = sext i32 %3715 to i64
  %3725 = add nuw i32 %3688, 1
  %wide.trip.count4716 = zext i32 %3725 to i64
  %invariant.gep4809 = getelementptr %struct.doublecomplex, ptr %24, i64 %3719
  %invariant.gep4811 = getelementptr %struct.doublecomplex, ptr %24, i64 %3720
  %invariant.gep4813 = getelementptr %struct.doublecomplex, ptr %24, i64 %3721
  %invariant.gep4815 = getelementptr %struct.doublecomplex, ptr %24, i64 %3722
  %invariant.gep4817 = getelementptr %struct.doublecomplex, ptr %24, i64 %3723
  %invariant.gep4819 = getelementptr %struct.doublecomplex, ptr %24, i64 %3724
  %3726 = zext nneg i32 %3688 to i64
  %min.iters.check5886 = icmp ult i32 %3688, 14
  br i1 %min.iters.check5886, label %scalar.ph5885.preheader, label %vector.scevcheck5691

vector.scevcheck5691:                             ; preds = %.lr.ph4487
  %3727 = add nsw i64 %wide.trip.count4716, -2
  %3728 = shl nsw i64 %3719, 4
  %3729 = shl nsw i64 %23, 4
  %3730 = getelementptr i8, ptr %5, i64 %3728
  %3731 = getelementptr i8, ptr %3730, i64 %3729
  %mul.result5694 = shl nsw i64 %3727, 4
  %3732 = shl nsw i64 %3720, 4
  %3733 = getelementptr i8, ptr %5, i64 %3732
  %3734 = getelementptr i8, ptr %3733, i64 %3729
  %mul.result5698 = shl nsw i64 %3727, 4
  %mul.overflow5699 = icmp ugt i64 %3727, 1152921504606846975
  %3735 = shl nsw i64 %3721, 4
  %3736 = getelementptr i8, ptr %5, i64 %3735
  %3737 = getelementptr i8, ptr %3736, i64 %3729
  %mul.result5702 = shl nsw i64 %3727, 4
  %3738 = shl nsw i64 %3722, 4
  %3739 = getelementptr i8, ptr %5, i64 %3738
  %3740 = getelementptr i8, ptr %3739, i64 %3729
  %mul.result5706 = shl nsw i64 %3727, 4
  %3741 = shl nsw i64 %3723, 4
  %3742 = getelementptr i8, ptr %5, i64 %3741
  %3743 = getelementptr i8, ptr %3742, i64 %3729
  %mul.result5710 = shl nsw i64 %3727, 4
  %3744 = shl nsw i64 %3724, 4
  %3745 = getelementptr i8, ptr %5, i64 %3744
  %3746 = getelementptr i8, ptr %3745, i64 %3729
  %mul.result5714 = shl nsw i64 %3727, 4
  %3747 = getelementptr i8, ptr %5, i64 %3728
  %3748 = getelementptr i8, ptr %3747, i64 %3729
  %mul.result5718 = shl nsw i64 %3727, 4
  %3749 = getelementptr i8, ptr %5, i64 %3732
  %3750 = getelementptr i8, ptr %3749, i64 %3729
  %mul.result5722 = shl nsw i64 %3727, 4
  %3751 = insertelement <8 x ptr> poison, ptr %3734, i64 0
  %3752 = insertelement <8 x ptr> %3751, ptr %3731, i64 1
  %3753 = insertelement <8 x ptr> %3752, ptr %3737, i64 2
  %3754 = insertelement <8 x ptr> %3753, ptr %3740, i64 3
  %3755 = insertelement <8 x ptr> %3754, ptr %3743, i64 4
  %3756 = insertelement <8 x ptr> %3755, ptr %3746, i64 5
  %3757 = insertelement <8 x ptr> %3756, ptr %3748, i64 6
  %3758 = insertelement <8 x ptr> %3757, ptr %3750, i64 7
  %3759 = getelementptr i8, <8 x ptr> %3758, <8 x i64> <i64 16, i64 16, i64 16, i64 16, i64 16, i64 16, i64 24, i64 24>
  %scevgep5692 = getelementptr i8, ptr %3731, i64 16
  %3760 = getelementptr i8, ptr %scevgep5692, i64 %mul.result5694
  %scevgep5696 = getelementptr i8, ptr %3734, i64 16
  %3761 = getelementptr i8, ptr %scevgep5696, i64 %mul.result5698
  %scevgep5700 = getelementptr i8, ptr %3737, i64 16
  %3762 = getelementptr i8, ptr %scevgep5700, i64 %mul.result5702
  %scevgep5704 = getelementptr i8, ptr %3740, i64 16
  %3763 = getelementptr i8, ptr %scevgep5704, i64 %mul.result5706
  %scevgep5708 = getelementptr i8, ptr %3743, i64 16
  %3764 = getelementptr i8, ptr %scevgep5708, i64 %mul.result5710
  %scevgep5712 = getelementptr i8, ptr %3746, i64 16
  %3765 = getelementptr i8, ptr %scevgep5712, i64 %mul.result5714
  %scevgep5716 = getelementptr i8, ptr %3748, i64 24
  %3766 = getelementptr i8, ptr %scevgep5716, i64 %mul.result5718
  %scevgep5720 = getelementptr i8, ptr %3750, i64 24
  %3767 = getelementptr i8, ptr %scevgep5720, i64 %mul.result5722
  %3768 = insertelement <8 x ptr> poison, ptr %3761, i64 0
  %3769 = insertelement <8 x ptr> %3768, ptr %3760, i64 1
  %3770 = insertelement <8 x ptr> %3769, ptr %3762, i64 2
  %3771 = insertelement <8 x ptr> %3770, ptr %3763, i64 3
  %3772 = insertelement <8 x ptr> %3771, ptr %3764, i64 4
  %3773 = insertelement <8 x ptr> %3772, ptr %3765, i64 5
  %3774 = insertelement <8 x ptr> %3773, ptr %3766, i64 6
  %3775 = insertelement <8 x ptr> %3774, ptr %3767, i64 7
  %3776 = icmp ult <8 x ptr> %3775, %3759
  %3777 = getelementptr i8, ptr %5, i64 %3735
  %3778 = getelementptr i8, ptr %3777, i64 %3729
  %scevgep5724 = getelementptr i8, ptr %3778, i64 24
  %mul.result5726 = shl nsw i64 %3727, 4
  %3779 = getelementptr i8, ptr %scevgep5724, i64 %mul.result5726
  %3780 = icmp ult ptr %3779, %scevgep5724
  %3781 = getelementptr i8, ptr %5, i64 %3738
  %3782 = getelementptr i8, ptr %3781, i64 %3729
  %scevgep5728 = getelementptr i8, ptr %3782, i64 24
  %mul.result5730 = shl nsw i64 %3727, 4
  %3783 = getelementptr i8, ptr %scevgep5728, i64 %mul.result5730
  %3784 = icmp ult ptr %3783, %scevgep5728
  %3785 = getelementptr i8, ptr %5, i64 %3741
  %3786 = getelementptr i8, ptr %3785, i64 %3729
  %scevgep5732 = getelementptr i8, ptr %3786, i64 24
  %mul.result5734 = shl nsw i64 %3727, 4
  %3787 = getelementptr i8, ptr %scevgep5732, i64 %mul.result5734
  %3788 = icmp ult ptr %3787, %scevgep5732
  %3789 = getelementptr i8, ptr %5, i64 %3744
  %3790 = getelementptr i8, ptr %3789, i64 %3729
  %scevgep5736 = getelementptr i8, ptr %3790, i64 24
  %mul.result5738 = shl nsw i64 %3727, 4
  %3791 = getelementptr i8, ptr %scevgep5736, i64 %mul.result5738
  %3792 = icmp ult ptr %3791, %scevgep5736
  %3793 = bitcast <8 x i1> %3776 to i8
  %3794 = icmp ne i8 %3793, 0
  %op.rdx6633 = or i1 %3794, %3780
  %op.rdx6634 = or i1 %3784, %3788
  %op.rdx6635 = or i1 %3792, %mul.overflow5699
  %op.rdx6636 = or i1 %op.rdx6633, %op.rdx6634
  %op.rdx6638 = or i1 %op.rdx6636, %op.rdx6635
  br i1 %op.rdx6638, label %scalar.ph5885.preheader, label %vector.memcheck5740

vector.memcheck5740:                              ; preds = %vector.scevcheck5691
  %3795 = shl nsw i64 %3719, 4
  %3796 = shl nsw i64 %23, 4
  %3797 = add nsw i64 %3795, %3796
  %3798 = getelementptr i8, ptr %5, i64 %3797
  %scevgep5741 = getelementptr i8, ptr %3798, i64 16
  %3799 = shl nuw nsw i64 %wide.trip.count4716, 4
  %3800 = getelementptr i8, ptr %5, i64 %3797
  %3801 = getelementptr i8, ptr %3800, i64 %3799
  %scevgep5742 = getelementptr i8, ptr %3801, i64 -8
  %3802 = shl nsw i64 %3720, 4
  %3803 = add nsw i64 %3802, %3796
  %3804 = getelementptr i8, ptr %5, i64 %3803
  %scevgep5743 = getelementptr i8, ptr %3804, i64 16
  %3805 = getelementptr i8, ptr %5, i64 %3803
  %3806 = getelementptr i8, ptr %3805, i64 %3799
  %scevgep5744 = getelementptr i8, ptr %3806, i64 -8
  %3807 = shl nsw i64 %3721, 4
  %3808 = add nsw i64 %3807, %3796
  %3809 = getelementptr i8, ptr %5, i64 %3808
  %scevgep5745 = getelementptr i8, ptr %3809, i64 16
  %3810 = getelementptr i8, ptr %5, i64 %3808
  %3811 = getelementptr i8, ptr %3810, i64 %3799
  %scevgep5746 = getelementptr i8, ptr %3811, i64 -8
  %3812 = shl nsw i64 %3722, 4
  %3813 = add nsw i64 %3812, %3796
  %3814 = getelementptr i8, ptr %5, i64 %3813
  %scevgep5747 = getelementptr i8, ptr %3814, i64 16
  %3815 = getelementptr i8, ptr %5, i64 %3813
  %3816 = getelementptr i8, ptr %3815, i64 %3799
  %scevgep5748 = getelementptr i8, ptr %3816, i64 -8
  %3817 = shl nsw i64 %3723, 4
  %3818 = add nsw i64 %3817, %3796
  %3819 = getelementptr i8, ptr %5, i64 %3818
  %scevgep5749 = getelementptr i8, ptr %3819, i64 16
  %3820 = getelementptr i8, ptr %5, i64 %3818
  %3821 = getelementptr i8, ptr %3820, i64 %3799
  %scevgep5750 = getelementptr i8, ptr %3821, i64 -8
  %3822 = shl nsw i64 %3724, 4
  %3823 = add nsw i64 %3822, %3796
  %3824 = getelementptr i8, ptr %5, i64 %3823
  %scevgep5751 = getelementptr i8, ptr %3824, i64 16
  %3825 = getelementptr i8, ptr %5, i64 %3823
  %3826 = getelementptr i8, ptr %3825, i64 %3799
  %scevgep5752 = getelementptr i8, ptr %3826, i64 -8
  %3827 = add nsw i64 %3795, %3796
  %3828 = getelementptr i8, ptr %5, i64 %3827
  %scevgep5753 = getelementptr i8, ptr %3828, i64 24
  %3829 = getelementptr i8, ptr %5, i64 %3827
  %scevgep5754 = getelementptr i8, ptr %3829, i64 %3799
  %3830 = add nsw i64 %3802, %3796
  %3831 = getelementptr i8, ptr %5, i64 %3830
  %scevgep5755 = getelementptr i8, ptr %3831, i64 24
  %3832 = getelementptr i8, ptr %5, i64 %3830
  %scevgep5756 = getelementptr i8, ptr %3832, i64 %3799
  %3833 = add nsw i64 %3807, %3796
  %3834 = getelementptr i8, ptr %5, i64 %3833
  %scevgep5757 = getelementptr i8, ptr %3834, i64 24
  %3835 = getelementptr i8, ptr %5, i64 %3833
  %scevgep5758 = getelementptr i8, ptr %3835, i64 %3799
  %3836 = add nsw i64 %3812, %3796
  %3837 = getelementptr i8, ptr %5, i64 %3836
  %scevgep5759 = getelementptr i8, ptr %3837, i64 24
  %3838 = getelementptr i8, ptr %5, i64 %3836
  %scevgep5760 = getelementptr i8, ptr %3838, i64 %3799
  %3839 = add nsw i64 %3817, %3796
  %3840 = getelementptr i8, ptr %5, i64 %3839
  %scevgep5761 = getelementptr i8, ptr %3840, i64 24
  %3841 = getelementptr i8, ptr %5, i64 %3839
  %scevgep5762 = getelementptr i8, ptr %3841, i64 %3799
  %3842 = add nsw i64 %3822, %3796
  %3843 = getelementptr i8, ptr %5, i64 %3842
  %scevgep5763 = getelementptr i8, ptr %3843, i64 24
  %3844 = getelementptr i8, ptr %5, i64 %3842
  %scevgep5764 = getelementptr i8, ptr %3844, i64 %3799
  %bound05765 = icmp ult ptr %scevgep5741, %scevgep5744
  %bound15766 = icmp ult ptr %scevgep5743, %scevgep5742
  %found.conflict5767 = and i1 %bound05765, %bound15766
  %bound05768 = icmp ult ptr %scevgep5741, %scevgep5746
  %bound15769 = icmp ult ptr %scevgep5745, %scevgep5742
  %found.conflict5770 = and i1 %bound05768, %bound15769
  %conflict.rdx5771 = or i1 %found.conflict5767, %found.conflict5770
  %bound05772 = icmp ult ptr %scevgep5741, %scevgep5748
  %bound15773 = icmp ult ptr %scevgep5747, %scevgep5742
  %found.conflict5774 = and i1 %bound05772, %bound15773
  %conflict.rdx5775 = or i1 %conflict.rdx5771, %found.conflict5774
  %bound05776 = icmp ult ptr %scevgep5741, %scevgep5750
  %bound15777 = icmp ult ptr %scevgep5749, %scevgep5742
  %found.conflict5778 = and i1 %bound05776, %bound15777
  %conflict.rdx5779 = or i1 %conflict.rdx5775, %found.conflict5778
  %bound05780 = icmp ult ptr %scevgep5741, %scevgep5752
  %bound15781 = icmp ult ptr %scevgep5751, %scevgep5742
  %found.conflict5782 = and i1 %bound05780, %bound15781
  %conflict.rdx5783 = or i1 %conflict.rdx5779, %found.conflict5782
  %bound05784 = icmp ult ptr %scevgep5743, %scevgep5746
  %bound15785 = icmp ult ptr %scevgep5745, %scevgep5744
  %found.conflict5786 = and i1 %bound05784, %bound15785
  %conflict.rdx5787 = or i1 %conflict.rdx5783, %found.conflict5786
  %bound05788 = icmp ult ptr %scevgep5743, %scevgep5748
  %bound15789 = icmp ult ptr %scevgep5747, %scevgep5744
  %found.conflict5790 = and i1 %bound05788, %bound15789
  %conflict.rdx5791 = or i1 %conflict.rdx5787, %found.conflict5790
  %bound05792 = icmp ult ptr %scevgep5743, %scevgep5750
  %bound15793 = icmp ult ptr %scevgep5749, %scevgep5744
  %found.conflict5794 = and i1 %bound05792, %bound15793
  %conflict.rdx5795 = or i1 %conflict.rdx5791, %found.conflict5794
  %bound05796 = icmp ult ptr %scevgep5743, %scevgep5752
  %bound15797 = icmp ult ptr %scevgep5751, %scevgep5744
  %found.conflict5798 = and i1 %bound05796, %bound15797
  %conflict.rdx5799 = or i1 %conflict.rdx5795, %found.conflict5798
  %bound05800 = icmp ult ptr %scevgep5745, %scevgep5748
  %bound15801 = icmp ult ptr %scevgep5747, %scevgep5746
  %found.conflict5802 = and i1 %bound05800, %bound15801
  %conflict.rdx5803 = or i1 %conflict.rdx5799, %found.conflict5802
  %bound05804 = icmp ult ptr %scevgep5745, %scevgep5750
  %bound15805 = icmp ult ptr %scevgep5749, %scevgep5746
  %found.conflict5806 = and i1 %bound05804, %bound15805
  %conflict.rdx5807 = or i1 %conflict.rdx5803, %found.conflict5806
  %bound05808 = icmp ult ptr %scevgep5745, %scevgep5752
  %bound15809 = icmp ult ptr %scevgep5751, %scevgep5746
  %found.conflict5810 = and i1 %bound05808, %bound15809
  %conflict.rdx5811 = or i1 %conflict.rdx5807, %found.conflict5810
  %bound05812 = icmp ult ptr %scevgep5747, %scevgep5750
  %bound15813 = icmp ult ptr %scevgep5749, %scevgep5748
  %found.conflict5814 = and i1 %bound05812, %bound15813
  %conflict.rdx5815 = or i1 %conflict.rdx5811, %found.conflict5814
  %bound05816 = icmp ult ptr %scevgep5747, %scevgep5752
  %bound15817 = icmp ult ptr %scevgep5751, %scevgep5748
  %found.conflict5818 = and i1 %bound05816, %bound15817
  %conflict.rdx5819 = or i1 %conflict.rdx5815, %found.conflict5818
  %bound05820 = icmp ult ptr %scevgep5749, %scevgep5752
  %bound15821 = icmp ult ptr %scevgep5751, %scevgep5750
  %found.conflict5822 = and i1 %bound05820, %bound15821
  %conflict.rdx5823 = or i1 %conflict.rdx5819, %found.conflict5822
  %bound05824 = icmp ult ptr %scevgep5753, %scevgep5756
  %bound15825 = icmp ult ptr %scevgep5755, %scevgep5754
  %found.conflict5826 = and i1 %bound05824, %bound15825
  %conflict.rdx5827 = or i1 %conflict.rdx5823, %found.conflict5826
  %bound05828 = icmp ult ptr %scevgep5753, %scevgep5758
  %bound15829 = icmp ult ptr %scevgep5757, %scevgep5754
  %found.conflict5830 = and i1 %bound05828, %bound15829
  %conflict.rdx5831 = or i1 %conflict.rdx5827, %found.conflict5830
  %bound05832 = icmp ult ptr %scevgep5753, %scevgep5760
  %bound15833 = icmp ult ptr %scevgep5759, %scevgep5754
  %found.conflict5834 = and i1 %bound05832, %bound15833
  %conflict.rdx5835 = or i1 %conflict.rdx5831, %found.conflict5834
  %bound05836 = icmp ult ptr %scevgep5753, %scevgep5762
  %bound15837 = icmp ult ptr %scevgep5761, %scevgep5754
  %found.conflict5838 = and i1 %bound05836, %bound15837
  %conflict.rdx5839 = or i1 %conflict.rdx5835, %found.conflict5838
  %bound05840 = icmp ult ptr %scevgep5753, %scevgep5764
  %bound15841 = icmp ult ptr %scevgep5763, %scevgep5754
  %found.conflict5842 = and i1 %bound05840, %bound15841
  %conflict.rdx5843 = or i1 %conflict.rdx5839, %found.conflict5842
  %bound05844 = icmp ult ptr %scevgep5755, %scevgep5758
  %bound15845 = icmp ult ptr %scevgep5757, %scevgep5756
  %found.conflict5846 = and i1 %bound05844, %bound15845
  %conflict.rdx5847 = or i1 %conflict.rdx5843, %found.conflict5846
  %bound05848 = icmp ult ptr %scevgep5755, %scevgep5760
  %bound15849 = icmp ult ptr %scevgep5759, %scevgep5756
  %found.conflict5850 = and i1 %bound05848, %bound15849
  %conflict.rdx5851 = or i1 %conflict.rdx5847, %found.conflict5850
  %bound05852 = icmp ult ptr %scevgep5755, %scevgep5762
  %bound15853 = icmp ult ptr %scevgep5761, %scevgep5756
  %found.conflict5854 = and i1 %bound05852, %bound15853
  %conflict.rdx5855 = or i1 %conflict.rdx5851, %found.conflict5854
  %bound05856 = icmp ult ptr %scevgep5755, %scevgep5764
  %bound15857 = icmp ult ptr %scevgep5763, %scevgep5756
  %found.conflict5858 = and i1 %bound05856, %bound15857
  %conflict.rdx5859 = or i1 %conflict.rdx5855, %found.conflict5858
  %bound05860 = icmp ult ptr %scevgep5757, %scevgep5760
  %bound15861 = icmp ult ptr %scevgep5759, %scevgep5758
  %found.conflict5862 = and i1 %bound05860, %bound15861
  %conflict.rdx5863 = or i1 %conflict.rdx5859, %found.conflict5862
  %bound05864 = icmp ult ptr %scevgep5757, %scevgep5762
  %bound15865 = icmp ult ptr %scevgep5761, %scevgep5758
  %found.conflict5866 = and i1 %bound05864, %bound15865
  %conflict.rdx5867 = or i1 %conflict.rdx5863, %found.conflict5866
  %bound05868 = icmp ult ptr %scevgep5757, %scevgep5764
  %bound15869 = icmp ult ptr %scevgep5763, %scevgep5758
  %found.conflict5870 = and i1 %bound05868, %bound15869
  %conflict.rdx5871 = or i1 %conflict.rdx5867, %found.conflict5870
  %bound05872 = icmp ult ptr %scevgep5759, %scevgep5762
  %bound15873 = icmp ult ptr %scevgep5761, %scevgep5760
  %found.conflict5874 = and i1 %bound05872, %bound15873
  %conflict.rdx5875 = or i1 %conflict.rdx5871, %found.conflict5874
  %bound05876 = icmp ult ptr %scevgep5759, %scevgep5764
  %bound15877 = icmp ult ptr %scevgep5763, %scevgep5760
  %found.conflict5878 = and i1 %bound05876, %bound15877
  %conflict.rdx5879 = or i1 %conflict.rdx5875, %found.conflict5878
  %bound05880 = icmp ult ptr %scevgep5761, %scevgep5764
  %bound15881 = icmp ult ptr %scevgep5763, %scevgep5762
  %found.conflict5882 = and i1 %bound05880, %bound15881
  %conflict.rdx5883 = or i1 %conflict.rdx5879, %found.conflict5882
  br i1 %conflict.rdx5883, label %scalar.ph5885.preheader, label %vector.ph5887

vector.ph5887:                                    ; preds = %vector.memcheck5740
  %n.vec5889 = and i64 %3726, 2147483646
  %ind.end5890 = or i64 %3726, 1
  %broadcast.splat5899 = shufflevector <2 x double> %3702, <2 x double> poison, <2 x i32> zeroinitializer
  %broadcast.splatinsert5900 = insertelement <2 x double> poison, double %3695, i64 0
  %broadcast.splat5901 = shufflevector <2 x double> %broadcast.splatinsert5900, <2 x double> poison, <2 x i32> zeroinitializer
  %broadcast.splatinsert5902 = insertelement <2 x double> poison, double %3696, i64 0
  %broadcast.splat5903 = shufflevector <2 x double> %broadcast.splatinsert5902, <2 x double> poison, <2 x i32> zeroinitializer
  %broadcast.splat5908 = shufflevector <2 x double> %3702, <2 x double> poison, <2 x i32> <i32 1, i32 1>
  %broadcast.splatinsert5909 = insertelement <2 x double> poison, double %3698, i64 0
  %broadcast.splat5910 = shufflevector <2 x double> %broadcast.splatinsert5909, <2 x double> poison, <2 x i32> zeroinitializer
  %broadcast.splatinsert5911 = insertelement <2 x double> poison, double %3699, i64 0
  %broadcast.splat5912 = shufflevector <2 x double> %broadcast.splatinsert5911, <2 x double> poison, <2 x i32> zeroinitializer
  %broadcast.splatinsert5916 = insertelement <2 x double> poison, double %3706, i64 0
  %broadcast.splat5917 = shufflevector <2 x double> %broadcast.splatinsert5916, <2 x double> poison, <2 x i32> zeroinitializer
  %broadcast.splatinsert5918 = insertelement <2 x double> poison, double %3704, i64 0
  %broadcast.splat5919 = shufflevector <2 x double> %broadcast.splatinsert5918, <2 x double> poison, <2 x i32> zeroinitializer
  %broadcast.splatinsert5920 = insertelement <2 x double> poison, double %3705, i64 0
  %broadcast.splat5921 = shufflevector <2 x double> %broadcast.splatinsert5920, <2 x double> poison, <2 x i32> zeroinitializer
  %broadcast.splatinsert5925 = insertelement <2 x double> poison, double %3710, i64 0
  %broadcast.splat5926 = shufflevector <2 x double> %broadcast.splatinsert5925, <2 x double> poison, <2 x i32> zeroinitializer
  %broadcast.splatinsert5927 = insertelement <2 x double> poison, double %3708, i64 0
  %broadcast.splat5928 = shufflevector <2 x double> %broadcast.splatinsert5927, <2 x double> poison, <2 x i32> zeroinitializer
  %broadcast.splatinsert5929 = insertelement <2 x double> poison, double %3709, i64 0
  %broadcast.splat5930 = shufflevector <2 x double> %broadcast.splatinsert5929, <2 x double> poison, <2 x i32> zeroinitializer
  %broadcast.splatinsert5934 = insertelement <2 x double> poison, double %3714, i64 0
  %broadcast.splat5935 = shufflevector <2 x double> %broadcast.splatinsert5934, <2 x double> poison, <2 x i32> zeroinitializer
  %broadcast.splatinsert5936 = insertelement <2 x double> poison, double %3712, i64 0
  %broadcast.splat5937 = shufflevector <2 x double> %broadcast.splatinsert5936, <2 x double> poison, <2 x i32> zeroinitializer
  %broadcast.splatinsert5938 = insertelement <2 x double> poison, double %3713, i64 0
  %broadcast.splat5939 = shufflevector <2 x double> %broadcast.splatinsert5938, <2 x double> poison, <2 x i32> zeroinitializer
  %broadcast.splatinsert5943 = insertelement <2 x double> poison, double %3718, i64 0
  %broadcast.splat5944 = shufflevector <2 x double> %broadcast.splatinsert5943, <2 x double> poison, <2 x i32> zeroinitializer
  %broadcast.splatinsert5945 = insertelement <2 x double> poison, double %3716, i64 0
  %broadcast.splat5946 = shufflevector <2 x double> %broadcast.splatinsert5945, <2 x double> poison, <2 x i32> zeroinitializer
  %broadcast.splatinsert5947 = insertelement <2 x double> poison, double %3717, i64 0
  %broadcast.splat5948 = shufflevector <2 x double> %broadcast.splatinsert5947, <2 x double> poison, <2 x i32> zeroinitializer
  %broadcast.splat5950 = shufflevector <2 x double> %3592, <2 x double> poison, <2 x i32> <i32 1, i32 1>
  %broadcast.splat5952 = shufflevector <2 x double> %3592, <2 x double> poison, <2 x i32> zeroinitializer
  %broadcast.splat5955 = shufflevector <2 x double> %3611, <2 x double> poison, <2 x i32> <i32 1, i32 1>
  %broadcast.splat5957 = shufflevector <2 x double> %3611, <2 x double> poison, <2 x i32> zeroinitializer
  %broadcast.splat5963 = shufflevector <2 x double> %3630, <2 x double> poison, <2 x i32> <i32 1, i32 1>
  %broadcast.splat5965 = shufflevector <2 x double> %3630, <2 x double> poison, <2 x i32> zeroinitializer
  %broadcast.splat5971 = shufflevector <2 x double> %3649, <2 x double> poison, <2 x i32> <i32 1, i32 1>
  %broadcast.splat5973 = shufflevector <2 x double> %3649, <2 x double> poison, <2 x i32> zeroinitializer
  %broadcast.splat5979 = shufflevector <2 x double> %3668, <2 x double> poison, <2 x i32> <i32 1, i32 1>
  %broadcast.splat5981 = shufflevector <2 x double> %3668, <2 x double> poison, <2 x i32> zeroinitializer
  %broadcast.splat5987 = shufflevector <2 x double> %3687, <2 x double> poison, <2 x i32> <i32 1, i32 1>
  %broadcast.splat5989 = shufflevector <2 x double> %3687, <2 x double> poison, <2 x i32> zeroinitializer
  br label %vector.body5892

vector.body5892:                                  ; preds = %vector.body5892, %vector.ph5887
  %index5893 = phi i64 [ 0, %vector.ph5887 ], [ %index.next5994, %vector.body5892 ]
  %offset.idx5894 = or disjoint i64 %index5893, 1
  %3845 = getelementptr %struct.doublecomplex, ptr %invariant.gep4809, i64 %offset.idx5894
  %wide.vec5895 = load <4 x double>, ptr %3845, align 8, !tbaa !13
  %strided.vec5896 = shufflevector <4 x double> %wide.vec5895, <4 x double> poison, <2 x i32> <i32 0, i32 2>
  %strided.vec5897 = shufflevector <4 x double> %wide.vec5895, <4 x double> poison, <2 x i32> <i32 1, i32 3>
  %3846 = fmul <2 x double> %strided.vec5897, %broadcast.splat5899
  %3847 = call <2 x double> @llvm.fmuladd.v2f64(<2 x double> %broadcast.splat5901, <2 x double> %strided.vec5896, <2 x double> %3846)
  %3848 = fmul <2 x double> %strided.vec5896, %broadcast.splat5903
  %3849 = call <2 x double> @llvm.fmuladd.v2f64(<2 x double> %broadcast.splat5901, <2 x double> %strided.vec5897, <2 x double> %3848)
  %3850 = getelementptr %struct.doublecomplex, ptr %invariant.gep4811, i64 %offset.idx5894
  %wide.vec5904 = load <4 x double>, ptr %3850, align 8, !tbaa !13
  %strided.vec5905 = shufflevector <4 x double> %wide.vec5904, <4 x double> poison, <2 x i32> <i32 0, i32 2>
  %strided.vec5906 = shufflevector <4 x double> %wide.vec5904, <4 x double> poison, <2 x i32> <i32 1, i32 3>
  %3851 = fmul <2 x double> %strided.vec5906, %broadcast.splat5908
  %3852 = call <2 x double> @llvm.fmuladd.v2f64(<2 x double> %broadcast.splat5910, <2 x double> %strided.vec5905, <2 x double> %3851)
  %3853 = fmul <2 x double> %strided.vec5905, %broadcast.splat5912
  %3854 = call <2 x double> @llvm.fmuladd.v2f64(<2 x double> %broadcast.splat5910, <2 x double> %strided.vec5906, <2 x double> %3853)
  %3855 = fadd <2 x double> %3847, %3852
  %3856 = fadd <2 x double> %3849, %3854
  %3857 = getelementptr %struct.doublecomplex, ptr %invariant.gep4813, i64 %offset.idx5894
  %wide.vec5913 = load <4 x double>, ptr %3857, align 8, !tbaa !13
  %strided.vec5914 = shufflevector <4 x double> %wide.vec5913, <4 x double> poison, <2 x i32> <i32 0, i32 2>
  %strided.vec5915 = shufflevector <4 x double> %wide.vec5913, <4 x double> poison, <2 x i32> <i32 1, i32 3>
  %3858 = fmul <2 x double> %strided.vec5915, %broadcast.splat5917
  %3859 = call <2 x double> @llvm.fmuladd.v2f64(<2 x double> %broadcast.splat5919, <2 x double> %strided.vec5914, <2 x double> %3858)
  %3860 = fmul <2 x double> %strided.vec5914, %broadcast.splat5921
  %3861 = call <2 x double> @llvm.fmuladd.v2f64(<2 x double> %broadcast.splat5919, <2 x double> %strided.vec5915, <2 x double> %3860)
  %3862 = fadd <2 x double> %3855, %3859
  %3863 = fadd <2 x double> %3856, %3861
  %3864 = getelementptr %struct.doublecomplex, ptr %invariant.gep4815, i64 %offset.idx5894
  %wide.vec5922 = load <4 x double>, ptr %3864, align 8, !tbaa !13
  %strided.vec5923 = shufflevector <4 x double> %wide.vec5922, <4 x double> poison, <2 x i32> <i32 0, i32 2>
  %strided.vec5924 = shufflevector <4 x double> %wide.vec5922, <4 x double> poison, <2 x i32> <i32 1, i32 3>
  %3865 = fmul <2 x double> %strided.vec5924, %broadcast.splat5926
  %3866 = call <2 x double> @llvm.fmuladd.v2f64(<2 x double> %broadcast.splat5928, <2 x double> %strided.vec5923, <2 x double> %3865)
  %3867 = fmul <2 x double> %strided.vec5923, %broadcast.splat5930
  %3868 = call <2 x double> @llvm.fmuladd.v2f64(<2 x double> %broadcast.splat5928, <2 x double> %strided.vec5924, <2 x double> %3867)
  %3869 = fadd <2 x double> %3862, %3866
  %3870 = fadd <2 x double> %3863, %3868
  %3871 = getelementptr %struct.doublecomplex, ptr %invariant.gep4817, i64 %offset.idx5894
  %wide.vec5931 = load <4 x double>, ptr %3871, align 8, !tbaa !13
  %strided.vec5932 = shufflevector <4 x double> %wide.vec5931, <4 x double> poison, <2 x i32> <i32 0, i32 2>
  %strided.vec5933 = shufflevector <4 x double> %wide.vec5931, <4 x double> poison, <2 x i32> <i32 1, i32 3>
  %3872 = fmul <2 x double> %strided.vec5933, %broadcast.splat5935
  %3873 = call <2 x double> @llvm.fmuladd.v2f64(<2 x double> %broadcast.splat5937, <2 x double> %strided.vec5932, <2 x double> %3872)
  %3874 = fmul <2 x double> %strided.vec5932, %broadcast.splat5939
  %3875 = call <2 x double> @llvm.fmuladd.v2f64(<2 x double> %broadcast.splat5937, <2 x double> %strided.vec5933, <2 x double> %3874)
  %3876 = fadd <2 x double> %3869, %3873
  %3877 = fadd <2 x double> %3870, %3875
  %3878 = getelementptr %struct.doublecomplex, ptr %invariant.gep4819, i64 %offset.idx5894
  %wide.vec5940 = load <4 x double>, ptr %3878, align 8, !tbaa !13
  %strided.vec5941 = shufflevector <4 x double> %wide.vec5940, <4 x double> poison, <2 x i32> <i32 0, i32 2>
  %strided.vec5942 = shufflevector <4 x double> %wide.vec5940, <4 x double> poison, <2 x i32> <i32 1, i32 3>
  %3879 = fmul <2 x double> %strided.vec5942, %broadcast.splat5944
  %3880 = call <2 x double> @llvm.fmuladd.v2f64(<2 x double> %broadcast.splat5946, <2 x double> %strided.vec5941, <2 x double> %3879)
  %3881 = fmul <2 x double> %strided.vec5941, %broadcast.splat5948
  %3882 = call <2 x double> @llvm.fmuladd.v2f64(<2 x double> %broadcast.splat5946, <2 x double> %strided.vec5942, <2 x double> %3881)
  %3883 = fadd <2 x double> %3876, %3880
  %3884 = fadd <2 x double> %3877, %3882
  %3885 = fneg <2 x double> %3884
  %3886 = fmul <2 x double> %broadcast.splat5950, %3885
  %3887 = call <2 x double> @llvm.fmuladd.v2f64(<2 x double> %3883, <2 x double> %broadcast.splat5952, <2 x double> %3886)
  %3888 = fmul <2 x double> %broadcast.splat5952, %3884
  %3889 = call <2 x double> @llvm.fmuladd.v2f64(<2 x double> %3883, <2 x double> %broadcast.splat5950, <2 x double> %3888)
  %3890 = fsub <2 x double> %strided.vec5896, %3887
  %3891 = fsub <2 x double> %strided.vec5897, %3889
  %interleaved.vec5953 = shufflevector <2 x double> %3890, <2 x double> %3891, <4 x i32> <i32 0, i32 2, i32 1, i32 3>
  store <4 x double> %interleaved.vec5953, ptr %3845, align 8, !tbaa !13
  %3892 = fmul <2 x double> %broadcast.splat5955, %3885
  %3893 = call <2 x double> @llvm.fmuladd.v2f64(<2 x double> %3883, <2 x double> %broadcast.splat5957, <2 x double> %3892)
  %3894 = fmul <2 x double> %broadcast.splat5957, %3884
  %3895 = call <2 x double> @llvm.fmuladd.v2f64(<2 x double> %3883, <2 x double> %broadcast.splat5955, <2 x double> %3894)
  %wide.vec5958 = load <4 x double>, ptr %3850, align 8, !tbaa !13
  %strided.vec5959 = shufflevector <4 x double> %wide.vec5958, <4 x double> poison, <2 x i32> <i32 0, i32 2>
  %strided.vec5960 = shufflevector <4 x double> %wide.vec5958, <4 x double> poison, <2 x i32> <i32 1, i32 3>
  %3896 = fsub <2 x double> %strided.vec5959, %3893
  %3897 = fsub <2 x double> %strided.vec5960, %3895
  %interleaved.vec5961 = shufflevector <2 x double> %3896, <2 x double> %3897, <4 x i32> <i32 0, i32 2, i32 1, i32 3>
  store <4 x double> %interleaved.vec5961, ptr %3850, align 8, !tbaa !13
  %3898 = fmul <2 x double> %broadcast.splat5963, %3885
  %3899 = call <2 x double> @llvm.fmuladd.v2f64(<2 x double> %3883, <2 x double> %broadcast.splat5965, <2 x double> %3898)
  %3900 = fmul <2 x double> %broadcast.splat5965, %3884
  %3901 = call <2 x double> @llvm.fmuladd.v2f64(<2 x double> %3883, <2 x double> %broadcast.splat5963, <2 x double> %3900)
  %wide.vec5966 = load <4 x double>, ptr %3857, align 8, !tbaa !13
  %strided.vec5967 = shufflevector <4 x double> %wide.vec5966, <4 x double> poison, <2 x i32> <i32 0, i32 2>
  %strided.vec5968 = shufflevector <4 x double> %wide.vec5966, <4 x double> poison, <2 x i32> <i32 1, i32 3>
  %3902 = fsub <2 x double> %strided.vec5967, %3899
  %3903 = fsub <2 x double> %strided.vec5968, %3901
  %interleaved.vec5969 = shufflevector <2 x double> %3902, <2 x double> %3903, <4 x i32> <i32 0, i32 2, i32 1, i32 3>
  store <4 x double> %interleaved.vec5969, ptr %3857, align 8, !tbaa !13
  %3904 = fmul <2 x double> %broadcast.splat5971, %3885
  %3905 = call <2 x double> @llvm.fmuladd.v2f64(<2 x double> %3883, <2 x double> %broadcast.splat5973, <2 x double> %3904)
  %3906 = fmul <2 x double> %broadcast.splat5973, %3884
  %3907 = call <2 x double> @llvm.fmuladd.v2f64(<2 x double> %3883, <2 x double> %broadcast.splat5971, <2 x double> %3906)
  %wide.vec5974 = load <4 x double>, ptr %3864, align 8, !tbaa !13
  %strided.vec5975 = shufflevector <4 x double> %wide.vec5974, <4 x double> poison, <2 x i32> <i32 0, i32 2>
  %strided.vec5976 = shufflevector <4 x double> %wide.vec5974, <4 x double> poison, <2 x i32> <i32 1, i32 3>
  %3908 = fsub <2 x double> %strided.vec5975, %3905
  %3909 = fsub <2 x double> %strided.vec5976, %3907
  %interleaved.vec5977 = shufflevector <2 x double> %3908, <2 x double> %3909, <4 x i32> <i32 0, i32 2, i32 1, i32 3>
  store <4 x double> %interleaved.vec5977, ptr %3864, align 8, !tbaa !13
  %3910 = fmul <2 x double> %broadcast.splat5979, %3885
  %3911 = call <2 x double> @llvm.fmuladd.v2f64(<2 x double> %3883, <2 x double> %broadcast.splat5981, <2 x double> %3910)
  %3912 = fmul <2 x double> %broadcast.splat5981, %3884
  %3913 = call <2 x double> @llvm.fmuladd.v2f64(<2 x double> %3883, <2 x double> %broadcast.splat5979, <2 x double> %3912)
  %wide.vec5982 = load <4 x double>, ptr %3871, align 8, !tbaa !13
  %strided.vec5983 = shufflevector <4 x double> %wide.vec5982, <4 x double> poison, <2 x i32> <i32 0, i32 2>
  %strided.vec5984 = shufflevector <4 x double> %wide.vec5982, <4 x double> poison, <2 x i32> <i32 1, i32 3>
  %3914 = fsub <2 x double> %strided.vec5983, %3911
  %3915 = fsub <2 x double> %strided.vec5984, %3913
  %interleaved.vec5985 = shufflevector <2 x double> %3914, <2 x double> %3915, <4 x i32> <i32 0, i32 2, i32 1, i32 3>
  store <4 x double> %interleaved.vec5985, ptr %3871, align 8, !tbaa !13
  %3916 = fmul <2 x double> %broadcast.splat5987, %3885
  %3917 = call <2 x double> @llvm.fmuladd.v2f64(<2 x double> %3883, <2 x double> %broadcast.splat5989, <2 x double> %3916)
  %3918 = fmul <2 x double> %broadcast.splat5989, %3884
  %3919 = call <2 x double> @llvm.fmuladd.v2f64(<2 x double> %3883, <2 x double> %broadcast.splat5987, <2 x double> %3918)
  %wide.vec5990 = load <4 x double>, ptr %3878, align 8, !tbaa !13
  %strided.vec5991 = shufflevector <4 x double> %wide.vec5990, <4 x double> poison, <2 x i32> <i32 0, i32 2>
  %strided.vec5992 = shufflevector <4 x double> %wide.vec5990, <4 x double> poison, <2 x i32> <i32 1, i32 3>
  %3920 = fsub <2 x double> %strided.vec5991, %3917
  %3921 = fsub <2 x double> %strided.vec5992, %3919
  %interleaved.vec5993 = shufflevector <2 x double> %3920, <2 x double> %3921, <4 x i32> <i32 0, i32 2, i32 1, i32 3>
  store <4 x double> %interleaved.vec5993, ptr %3878, align 8, !tbaa !13
  %index.next5994 = add nuw i64 %index5893, 2
  %3922 = icmp eq i64 %index.next5994, %n.vec5889
  br i1 %3922, label %middle.block5884, label %vector.body5892, !llvm.loop !37

middle.block5884:                                 ; preds = %vector.body5892
  %cmp.n5995 = icmp eq i64 %n.vec5889, %3726
  br i1 %cmp.n5995, label %.loopexit, label %scalar.ph5885.preheader

scalar.ph5885.preheader:                          ; preds = %middle.block5884, %vector.memcheck5740, %vector.scevcheck5691, %.lr.ph4487
  %indvars.iv4713.ph = phi i64 [ 1, %vector.memcheck5740 ], [ 1, %vector.scevcheck5691 ], [ 1, %.lr.ph4487 ], [ %ind.end5890, %middle.block5884 ]
  %3923 = insertelement <2 x double> poison, double %3695, i64 0
  %3924 = insertelement <2 x double> %3923, double %3698, i64 1
  br label %scalar.ph5885

scalar.ph5885:                                    ; preds = %scalar.ph5885.preheader, %scalar.ph5885
  %indvars.iv4713 = phi i64 [ %indvars.iv.next4714, %scalar.ph5885 ], [ %indvars.iv4713.ph, %scalar.ph5885.preheader ]
  %gep4810 = getelementptr %struct.doublecomplex, ptr %invariant.gep4809, i64 %indvars.iv4713
  %gep4812 = getelementptr %struct.doublecomplex, ptr %invariant.gep4811, i64 %indvars.iv4713
  %3925 = load double, ptr %gep4812, align 8, !tbaa !9
  %3926 = getelementptr inbounds i8, ptr %gep4812, i64 8
  %3927 = load double, ptr %3926, align 8, !tbaa !12
  %gep4814 = getelementptr %struct.doublecomplex, ptr %invariant.gep4813, i64 %indvars.iv4713
  %3928 = load double, ptr %gep4814, align 8, !tbaa !9
  %3929 = getelementptr inbounds i8, ptr %gep4814, i64 8
  %3930 = load double, ptr %3929, align 8, !tbaa !12
  %3931 = fmul double %3930, %3706
  %3932 = call double @llvm.fmuladd.f64(double %3704, double %3928, double %3931)
  %3933 = fmul double %3928, %3705
  %3934 = call double @llvm.fmuladd.f64(double %3704, double %3930, double %3933)
  %gep4816 = getelementptr %struct.doublecomplex, ptr %invariant.gep4815, i64 %indvars.iv4713
  %3935 = load double, ptr %gep4816, align 8, !tbaa !9
  %3936 = getelementptr inbounds i8, ptr %gep4816, i64 8
  %3937 = load double, ptr %3936, align 8, !tbaa !12
  %3938 = fmul double %3937, %3710
  %3939 = call double @llvm.fmuladd.f64(double %3708, double %3935, double %3938)
  %3940 = fmul double %3935, %3709
  %3941 = call double @llvm.fmuladd.f64(double %3708, double %3937, double %3940)
  %gep4818 = getelementptr %struct.doublecomplex, ptr %invariant.gep4817, i64 %indvars.iv4713
  %3942 = load double, ptr %gep4818, align 8, !tbaa !9
  %3943 = getelementptr inbounds i8, ptr %gep4818, i64 8
  %3944 = load double, ptr %3943, align 8, !tbaa !12
  %3945 = fmul double %3944, %3714
  %3946 = call double @llvm.fmuladd.f64(double %3712, double %3942, double %3945)
  %3947 = fmul double %3942, %3713
  %3948 = call double @llvm.fmuladd.f64(double %3712, double %3944, double %3947)
  %gep4820 = getelementptr %struct.doublecomplex, ptr %invariant.gep4819, i64 %indvars.iv4713
  %3949 = load double, ptr %gep4820, align 8, !tbaa !9
  %3950 = getelementptr inbounds i8, ptr %gep4820, i64 8
  %3951 = load double, ptr %3950, align 8, !tbaa !12
  %3952 = fmul double %3951, %3718
  %3953 = call double @llvm.fmuladd.f64(double %3716, double %3949, double %3952)
  %3954 = fmul double %3949, %3717
  %3955 = call double @llvm.fmuladd.f64(double %3716, double %3951, double %3954)
  %3956 = load <2 x double>, ptr %gep4810, align 8, !tbaa !13
  %3957 = shufflevector <2 x double> %3956, <2 x double> poison, <2 x i32> <i32 1, i32 poison>
  %3958 = insertelement <2 x double> %3957, double %3927, i64 1
  %3959 = fmul <2 x double> %3958, %3702
  %3960 = insertelement <2 x double> %3956, double %3925, i64 1
  %3961 = call <2 x double> @llvm.fmuladd.v2f64(<2 x double> %3924, <2 x double> %3960, <2 x double> %3959)
  %3962 = fmul <2 x double> %3960, %3701
  %3963 = call <2 x double> @llvm.fmuladd.v2f64(<2 x double> %3924, <2 x double> %3958, <2 x double> %3962)
  %shift6674 = shufflevector <2 x double> %3961, <2 x double> poison, <2 x i32> <i32 1, i32 poison>
  %3964 = fadd <2 x double> %3961, %shift6674
  %3965 = extractelement <2 x double> %3964, i64 0
  %shift6675 = shufflevector <2 x double> %3963, <2 x double> poison, <2 x i32> <i32 1, i32 poison>
  %3966 = fadd <2 x double> %3963, %shift6675
  %3967 = extractelement <2 x double> %3966, i64 0
  %3968 = fadd double %3965, %3932
  %3969 = fadd double %3967, %3934
  %3970 = fadd double %3968, %3939
  %3971 = fadd double %3969, %3941
  %3972 = fadd double %3970, %3946
  %3973 = fadd double %3971, %3948
  %3974 = fadd double %3972, %3953
  %3975 = fadd double %3973, %3955
  %3976 = fneg double %3975
  %3977 = insertelement <2 x double> poison, double %3975, i64 0
  %3978 = insertelement <2 x double> %3977, double %3976, i64 1
  %3979 = fmul <2 x double> %3592, %3978
  %3980 = shufflevector <2 x double> %3979, <2 x double> poison, <2 x i32> <i32 1, i32 0>
  %3981 = insertelement <2 x double> poison, double %3974, i64 0
  %3982 = shufflevector <2 x double> %3981, <2 x double> poison, <2 x i32> zeroinitializer
  %3983 = call <2 x double> @llvm.fmuladd.v2f64(<2 x double> %3982, <2 x double> %3592, <2 x double> %3980)
  %3984 = fsub <2 x double> %3956, %3983
  store <2 x double> %3984, ptr %gep4810, align 8, !tbaa !13
  %3985 = fmul <2 x double> %3611, %3978
  %3986 = shufflevector <2 x double> %3985, <2 x double> poison, <2 x i32> <i32 1, i32 0>
  %3987 = call <2 x double> @llvm.fmuladd.v2f64(<2 x double> %3982, <2 x double> %3611, <2 x double> %3986)
  %3988 = load <2 x double>, ptr %gep4812, align 8, !tbaa !13
  %3989 = fsub <2 x double> %3988, %3987
  store <2 x double> %3989, ptr %gep4812, align 8, !tbaa !13
  %3990 = fmul <2 x double> %3630, %3978
  %3991 = shufflevector <2 x double> %3990, <2 x double> poison, <2 x i32> <i32 1, i32 0>
  %3992 = call <2 x double> @llvm.fmuladd.v2f64(<2 x double> %3982, <2 x double> %3630, <2 x double> %3991)
  %3993 = load <2 x double>, ptr %gep4814, align 8, !tbaa !13
  %3994 = fsub <2 x double> %3993, %3992
  store <2 x double> %3994, ptr %gep4814, align 8, !tbaa !13
  %3995 = fmul <2 x double> %3649, %3978
  %3996 = shufflevector <2 x double> %3995, <2 x double> poison, <2 x i32> <i32 1, i32 0>
  %3997 = call <2 x double> @llvm.fmuladd.v2f64(<2 x double> %3982, <2 x double> %3649, <2 x double> %3996)
  %3998 = load <2 x double>, ptr %gep4816, align 8, !tbaa !13
  %3999 = fsub <2 x double> %3998, %3997
  store <2 x double> %3999, ptr %gep4816, align 8, !tbaa !13
  %4000 = fmul <2 x double> %3668, %3978
  %4001 = shufflevector <2 x double> %4000, <2 x double> poison, <2 x i32> <i32 1, i32 0>
  %4002 = call <2 x double> @llvm.fmuladd.v2f64(<2 x double> %3982, <2 x double> %3668, <2 x double> %4001)
  %4003 = load <2 x double>, ptr %gep4818, align 8, !tbaa !13
  %4004 = fsub <2 x double> %4003, %4002
  store <2 x double> %4004, ptr %gep4818, align 8, !tbaa !13
  %4005 = fmul <2 x double> %3687, %3978
  %4006 = shufflevector <2 x double> %4005, <2 x double> poison, <2 x i32> <i32 1, i32 0>
  %4007 = call <2 x double> @llvm.fmuladd.v2f64(<2 x double> %3982, <2 x double> %3687, <2 x double> %4006)
  %4008 = load <2 x double>, ptr %gep4820, align 8, !tbaa !13
  %4009 = fsub <2 x double> %4008, %4007
  store <2 x double> %4009, ptr %gep4820, align 8, !tbaa !13
  %indvars.iv.next4714 = add nuw nsw i64 %indvars.iv4713, 1
  %exitcond4717.not = icmp eq i64 %indvars.iv.next4714, %wide.trip.count4716
  br i1 %exitcond4717.not, label %.loopexit, label %scalar.ph5885, !llvm.loop !38

4010:                                             ; preds = %2482
  %4011 = load <2 x double>, ptr %3, align 8, !tbaa !13
  store <2 x double> %4011, ptr %12, align 16, !tbaa !13
  %4012 = call { double, double } @Cd(ptr noundef nonnull %12)
  %4013 = extractvalue { double, double } %4012, 0
  %4014 = extractvalue { double, double } %4012, 1
  %4015 = fneg double %4014
  %4016 = call ptr @_pCd(ptr noundef nonnull %10)
  %4017 = getelementptr inbounds i8, ptr %4016, i64 8
  store double %4013, ptr %4016, align 8
  store double %4015, ptr %4017, align 8
  %4018 = load double, ptr %4, align 8, !tbaa !9
  %4019 = getelementptr inbounds i8, ptr %4, i64 8
  %4020 = load double, ptr %4019, align 8, !tbaa !12
  %4021 = fneg double %4020
  %4022 = load <2 x double>, ptr %10, align 16, !tbaa !13
  %4023 = insertelement <2 x double> poison, double %4020, i64 0
  %4024 = insertelement <2 x double> %4023, double %4021, i64 1
  %4025 = fmul <2 x double> %4022, %4024
  %4026 = shufflevector <2 x double> %4025, <2 x double> poison, <2 x i32> <i32 1, i32 0>
  %4027 = insertelement <2 x double> poison, double %4018, i64 0
  %4028 = shufflevector <2 x double> %4027, <2 x double> poison, <2 x i32> zeroinitializer
  %4029 = call <2 x double> @llvm.fmuladd.v2f64(<2 x double> %4028, <2 x double> %4022, <2 x double> %4026)
  store <2 x double> %4029, ptr %9, align 16, !tbaa !13
  %4030 = getelementptr inbounds i8, ptr %3, i64 16
  %4031 = load <2 x double>, ptr %4030, align 8, !tbaa !13
  store <2 x double> %4031, ptr %13, align 16, !tbaa !13
  %4032 = call { double, double } @Cd(ptr noundef nonnull %13)
  %4033 = extractvalue { double, double } %4032, 0
  %4034 = extractvalue { double, double } %4032, 1
  %4035 = fneg double %4034
  %4036 = call ptr @_pCd(ptr noundef nonnull %10)
  %4037 = getelementptr inbounds i8, ptr %4036, i64 8
  store double %4033, ptr %4036, align 8
  store double %4035, ptr %4037, align 8
  %4038 = load double, ptr %4, align 8, !tbaa !9
  %4039 = load double, ptr %4019, align 8, !tbaa !12
  %4040 = fneg double %4039
  %4041 = load <2 x double>, ptr %10, align 16, !tbaa !13
  %4042 = insertelement <2 x double> poison, double %4039, i64 0
  %4043 = insertelement <2 x double> %4042, double %4040, i64 1
  %4044 = fmul <2 x double> %4041, %4043
  %4045 = shufflevector <2 x double> %4044, <2 x double> poison, <2 x i32> <i32 1, i32 0>
  %4046 = insertelement <2 x double> poison, double %4038, i64 0
  %4047 = shufflevector <2 x double> %4046, <2 x double> poison, <2 x i32> zeroinitializer
  %4048 = call <2 x double> @llvm.fmuladd.v2f64(<2 x double> %4047, <2 x double> %4041, <2 x double> %4045)
  store <2 x double> %4048, ptr %9, align 16, !tbaa !13
  %4049 = getelementptr inbounds i8, ptr %3, i64 32
  %4050 = load <2 x double>, ptr %4049, align 8, !tbaa !13
  store <2 x double> %4050, ptr %14, align 16, !tbaa !13
  %4051 = call { double, double } @Cd(ptr noundef nonnull %14)
  %4052 = extractvalue { double, double } %4051, 0
  %4053 = extractvalue { double, double } %4051, 1
  %4054 = fneg double %4053
  %4055 = call ptr @_pCd(ptr noundef nonnull %10)
  %4056 = getelementptr inbounds i8, ptr %4055, i64 8
  store double %4052, ptr %4055, align 8
  store double %4054, ptr %4056, align 8
  %4057 = load double, ptr %4, align 8, !tbaa !9
  %4058 = load double, ptr %4019, align 8, !tbaa !12
  %4059 = fneg double %4058
  %4060 = load <2 x double>, ptr %10, align 16, !tbaa !13
  %4061 = insertelement <2 x double> poison, double %4058, i64 0
  %4062 = insertelement <2 x double> %4061, double %4059, i64 1
  %4063 = fmul <2 x double> %4060, %4062
  %4064 = shufflevector <2 x double> %4063, <2 x double> poison, <2 x i32> <i32 1, i32 0>
  %4065 = insertelement <2 x double> poison, double %4057, i64 0
  %4066 = shufflevector <2 x double> %4065, <2 x double> poison, <2 x i32> zeroinitializer
  %4067 = call <2 x double> @llvm.fmuladd.v2f64(<2 x double> %4066, <2 x double> %4060, <2 x double> %4064)
  store <2 x double> %4067, ptr %9, align 16, !tbaa !13
  %4068 = getelementptr inbounds i8, ptr %3, i64 48
  %4069 = load <2 x double>, ptr %4068, align 8, !tbaa !13
  store <2 x double> %4069, ptr %15, align 16, !tbaa !13
  %4070 = call { double, double } @Cd(ptr noundef nonnull %15)
  %4071 = extractvalue { double, double } %4070, 0
  %4072 = extractvalue { double, double } %4070, 1
  %4073 = fneg double %4072
  %4074 = call ptr @_pCd(ptr noundef nonnull %10)
  %4075 = getelementptr inbounds i8, ptr %4074, i64 8
  store double %4071, ptr %4074, align 8
  store double %4073, ptr %4075, align 8
  %4076 = load double, ptr %4, align 8, !tbaa !9
  %4077 = load double, ptr %4019, align 8, !tbaa !12
  %4078 = fneg double %4077
  %4079 = load <2 x double>, ptr %10, align 16, !tbaa !13
  %4080 = insertelement <2 x double> poison, double %4077, i64 0
  %4081 = insertelement <2 x double> %4080, double %4078, i64 1
  %4082 = fmul <2 x double> %4079, %4081
  %4083 = shufflevector <2 x double> %4082, <2 x double> poison, <2 x i32> <i32 1, i32 0>
  %4084 = insertelement <2 x double> poison, double %4076, i64 0
  %4085 = shufflevector <2 x double> %4084, <2 x double> poison, <2 x i32> zeroinitializer
  %4086 = call <2 x double> @llvm.fmuladd.v2f64(<2 x double> %4085, <2 x double> %4079, <2 x double> %4083)
  store <2 x double> %4086, ptr %9, align 16, !tbaa !13
  %4087 = getelementptr inbounds i8, ptr %3, i64 64
  %4088 = load <2 x double>, ptr %4087, align 8, !tbaa !13
  store <2 x double> %4088, ptr %16, align 16, !tbaa !13
  %4089 = call { double, double } @Cd(ptr noundef nonnull %16)
  %4090 = extractvalue { double, double } %4089, 0
  %4091 = extractvalue { double, double } %4089, 1
  %4092 = fneg double %4091
  %4093 = call ptr @_pCd(ptr noundef nonnull %10)
  %4094 = getelementptr inbounds i8, ptr %4093, i64 8
  store double %4090, ptr %4093, align 8
  store double %4092, ptr %4094, align 8
  %4095 = load double, ptr %4, align 8, !tbaa !9
  %4096 = load double, ptr %4019, align 8, !tbaa !12
  %4097 = fneg double %4096
  %4098 = load <2 x double>, ptr %10, align 16, !tbaa !13
  %4099 = insertelement <2 x double> poison, double %4096, i64 0
  %4100 = insertelement <2 x double> %4099, double %4097, i64 1
  %4101 = fmul <2 x double> %4098, %4100
  %4102 = shufflevector <2 x double> %4101, <2 x double> poison, <2 x i32> <i32 1, i32 0>
  %4103 = insertelement <2 x double> poison, double %4095, i64 0
  %4104 = shufflevector <2 x double> %4103, <2 x double> poison, <2 x i32> zeroinitializer
  %4105 = call <2 x double> @llvm.fmuladd.v2f64(<2 x double> %4104, <2 x double> %4098, <2 x double> %4102)
  store <2 x double> %4105, ptr %9, align 16, !tbaa !13
  %4106 = getelementptr inbounds i8, ptr %3, i64 80
  %4107 = load <2 x double>, ptr %4106, align 8, !tbaa !13
  store <2 x double> %4107, ptr %17, align 16, !tbaa !13
  %4108 = call { double, double } @Cd(ptr noundef nonnull %17)
  %4109 = extractvalue { double, double } %4108, 0
  %4110 = extractvalue { double, double } %4108, 1
  %4111 = fneg double %4110
  %4112 = call ptr @_pCd(ptr noundef nonnull %10)
  %4113 = getelementptr inbounds i8, ptr %4112, i64 8
  store double %4109, ptr %4112, align 8
  store double %4111, ptr %4113, align 8
  %4114 = load double, ptr %4, align 8, !tbaa !9
  %4115 = load double, ptr %4019, align 8, !tbaa !12
  %4116 = fneg double %4115
  %4117 = load <2 x double>, ptr %10, align 16, !tbaa !13
  %4118 = insertelement <2 x double> poison, double %4115, i64 0
  %4119 = insertelement <2 x double> %4118, double %4116, i64 1
  %4120 = fmul <2 x double> %4117, %4119
  %4121 = shufflevector <2 x double> %4120, <2 x double> poison, <2 x i32> <i32 1, i32 0>
  %4122 = insertelement <2 x double> poison, double %4114, i64 0
  %4123 = shufflevector <2 x double> %4122, <2 x double> poison, <2 x i32> zeroinitializer
  %4124 = call <2 x double> @llvm.fmuladd.v2f64(<2 x double> %4123, <2 x double> %4117, <2 x double> %4121)
  store <2 x double> %4124, ptr %9, align 16, !tbaa !13
  %4125 = getelementptr inbounds i8, ptr %3, i64 96
  %4126 = load <2 x double>, ptr %4125, align 8, !tbaa !13
  store <2 x double> %4126, ptr %18, align 16, !tbaa !13
  %4127 = call { double, double } @Cd(ptr noundef nonnull %18)
  %4128 = extractvalue { double, double } %4127, 0
  %4129 = extractvalue { double, double } %4127, 1
  %4130 = fneg double %4129
  %4131 = call ptr @_pCd(ptr noundef nonnull %10)
  %4132 = getelementptr inbounds i8, ptr %4131, i64 8
  store double %4128, ptr %4131, align 8
  store double %4130, ptr %4132, align 8
  %4133 = load double, ptr %4, align 8, !tbaa !9
  %4134 = load double, ptr %4019, align 8, !tbaa !12
  %4135 = fneg double %4134
  %4136 = load <2 x double>, ptr %10, align 16, !tbaa !13
  %4137 = insertelement <2 x double> poison, double %4134, i64 0
  %4138 = insertelement <2 x double> %4137, double %4135, i64 1
  %4139 = fmul <2 x double> %4136, %4138
  %4140 = shufflevector <2 x double> %4139, <2 x double> poison, <2 x i32> <i32 1, i32 0>
  %4141 = insertelement <2 x double> poison, double %4133, i64 0
  %4142 = shufflevector <2 x double> %4141, <2 x double> poison, <2 x i32> zeroinitializer
  %4143 = call <2 x double> @llvm.fmuladd.v2f64(<2 x double> %4142, <2 x double> %4136, <2 x double> %4140)
  %4144 = load i32, ptr %1, align 4, !tbaa !5
  %.not42854474 = icmp slt i32 %4144, 1
  br i1 %.not42854474, label %.loopexit, label %.lr.ph4476

.lr.ph4476:                                       ; preds = %4010
  %4145 = getelementptr inbounds i8, ptr %18, i64 8
  %4146 = getelementptr inbounds i8, ptr %17, i64 8
  %4147 = getelementptr inbounds i8, ptr %16, i64 8
  %4148 = getelementptr inbounds i8, ptr %15, i64 8
  %4149 = getelementptr inbounds i8, ptr %14, i64 8
  %4150 = getelementptr inbounds i8, ptr %13, i64 8
  %4151 = getelementptr inbounds i8, ptr %12, i64 8
  %4152 = load double, ptr %12, align 16, !tbaa !9
  %4153 = load double, ptr %4151, align 8, !tbaa !12
  %4154 = shl i32 %22, 1
  %4155 = load double, ptr %13, align 16, !tbaa !9
  %4156 = load double, ptr %4150, align 8, !tbaa !12
  %4157 = insertelement <2 x double> poison, double %4153, i64 0
  %4158 = insertelement <2 x double> %4157, double %4156, i64 1
  %4159 = fneg <2 x double> %4158
  %4160 = mul i32 %22, 3
  %4161 = load double, ptr %14, align 16, !tbaa !9
  %4162 = load double, ptr %4149, align 8, !tbaa !12
  %4163 = fneg double %4162
  %4164 = shl i32 %22, 2
  %4165 = load double, ptr %15, align 16, !tbaa !9
  %4166 = load double, ptr %4148, align 8, !tbaa !12
  %4167 = fneg double %4166
  %4168 = mul i32 %22, 5
  %4169 = load double, ptr %16, align 16, !tbaa !9
  %4170 = load double, ptr %4147, align 8, !tbaa !12
  %4171 = fneg double %4170
  %4172 = mul i32 %22, 6
  %4173 = load double, ptr %17, align 16, !tbaa !9
  %4174 = load double, ptr %4146, align 8, !tbaa !12
  %4175 = fneg double %4174
  %4176 = mul i32 %22, 7
  %4177 = load double, ptr %18, align 16, !tbaa !9
  %4178 = load double, ptr %4145, align 8, !tbaa !12
  %4179 = fneg double %4178
  %4180 = sext i32 %22 to i64
  %4181 = sext i32 %4154 to i64
  %4182 = sext i32 %4160 to i64
  %4183 = sext i32 %4164 to i64
  %4184 = sext i32 %4168 to i64
  %4185 = sext i32 %4172 to i64
  %4186 = sext i32 %4176 to i64
  %4187 = add nuw i32 %4144, 1
  %wide.trip.count4711 = zext i32 %4187 to i64
  %invariant.gep4795 = getelementptr %struct.doublecomplex, ptr %24, i64 %4180
  %invariant.gep4797 = getelementptr %struct.doublecomplex, ptr %24, i64 %4181
  %invariant.gep4799 = getelementptr %struct.doublecomplex, ptr %24, i64 %4182
  %invariant.gep4801 = getelementptr %struct.doublecomplex, ptr %24, i64 %4183
  %invariant.gep4803 = getelementptr %struct.doublecomplex, ptr %24, i64 %4184
  %invariant.gep4805 = getelementptr %struct.doublecomplex, ptr %24, i64 %4185
  %invariant.gep4807 = getelementptr %struct.doublecomplex, ptr %24, i64 %4186
  %4188 = zext nneg i32 %4144 to i64
  %min.iters.check5564 = icmp ult i32 %4144, 14
  br i1 %min.iters.check5564, label %scalar.ph5563.preheader, label %vector.scevcheck5309

vector.scevcheck5309:                             ; preds = %.lr.ph4476
  %4189 = add nsw i64 %wide.trip.count4711, -2
  %4190 = shl nsw i64 %4180, 4
  %4191 = shl nsw i64 %23, 4
  %4192 = getelementptr i8, ptr %5, i64 %4190
  %4193 = getelementptr i8, ptr %4192, i64 %4191
  %mul.result5312 = shl nsw i64 %4189, 4
  %4194 = shl nsw i64 %4181, 4
  %4195 = getelementptr i8, ptr %5, i64 %4194
  %4196 = getelementptr i8, ptr %4195, i64 %4191
  %mul.result5316 = shl nsw i64 %4189, 4
  %mul.overflow5317 = icmp ugt i64 %4189, 1152921504606846975
  %4197 = shl nsw i64 %4182, 4
  %4198 = getelementptr i8, ptr %5, i64 %4197
  %4199 = getelementptr i8, ptr %4198, i64 %4191
  %mul.result5320 = shl nsw i64 %4189, 4
  %4200 = shl nsw i64 %4183, 4
  %4201 = getelementptr i8, ptr %5, i64 %4200
  %4202 = getelementptr i8, ptr %4201, i64 %4191
  %mul.result5324 = shl nsw i64 %4189, 4
  %4203 = shl nsw i64 %4184, 4
  %4204 = getelementptr i8, ptr %5, i64 %4203
  %4205 = getelementptr i8, ptr %4204, i64 %4191
  %mul.result5328 = shl nsw i64 %4189, 4
  %4206 = shl nsw i64 %4185, 4
  %4207 = getelementptr i8, ptr %5, i64 %4206
  %4208 = getelementptr i8, ptr %4207, i64 %4191
  %mul.result5332 = shl nsw i64 %4189, 4
  %4209 = shl nsw i64 %4186, 4
  %4210 = getelementptr i8, ptr %5, i64 %4209
  %4211 = getelementptr i8, ptr %4210, i64 %4191
  %mul.result5336 = shl nsw i64 %4189, 4
  %4212 = getelementptr i8, ptr %5, i64 %4190
  %4213 = getelementptr i8, ptr %4212, i64 %4191
  %mul.result5340 = shl nsw i64 %4189, 4
  %4214 = insertelement <8 x ptr> poison, ptr %4196, i64 0
  %4215 = insertelement <8 x ptr> %4214, ptr %4193, i64 1
  %4216 = insertelement <8 x ptr> %4215, ptr %4199, i64 2
  %4217 = insertelement <8 x ptr> %4216, ptr %4202, i64 3
  %4218 = insertelement <8 x ptr> %4217, ptr %4205, i64 4
  %4219 = insertelement <8 x ptr> %4218, ptr %4208, i64 5
  %4220 = insertelement <8 x ptr> %4219, ptr %4211, i64 6
  %4221 = insertelement <8 x ptr> %4220, ptr %4213, i64 7
  %4222 = getelementptr i8, <8 x ptr> %4221, <8 x i64> <i64 16, i64 16, i64 16, i64 16, i64 16, i64 16, i64 16, i64 24>
  %scevgep5310 = getelementptr i8, ptr %4193, i64 16
  %4223 = getelementptr i8, ptr %scevgep5310, i64 %mul.result5312
  %scevgep5314 = getelementptr i8, ptr %4196, i64 16
  %4224 = getelementptr i8, ptr %scevgep5314, i64 %mul.result5316
  %scevgep5318 = getelementptr i8, ptr %4199, i64 16
  %4225 = getelementptr i8, ptr %scevgep5318, i64 %mul.result5320
  %scevgep5322 = getelementptr i8, ptr %4202, i64 16
  %4226 = getelementptr i8, ptr %scevgep5322, i64 %mul.result5324
  %scevgep5326 = getelementptr i8, ptr %4205, i64 16
  %4227 = getelementptr i8, ptr %scevgep5326, i64 %mul.result5328
  %scevgep5330 = getelementptr i8, ptr %4208, i64 16
  %4228 = getelementptr i8, ptr %scevgep5330, i64 %mul.result5332
  %scevgep5334 = getelementptr i8, ptr %4211, i64 16
  %4229 = getelementptr i8, ptr %scevgep5334, i64 %mul.result5336
  %scevgep5338 = getelementptr i8, ptr %4213, i64 24
  %4230 = getelementptr i8, ptr %scevgep5338, i64 %mul.result5340
  %4231 = insertelement <8 x ptr> poison, ptr %4224, i64 0
  %4232 = insertelement <8 x ptr> %4231, ptr %4223, i64 1
  %4233 = insertelement <8 x ptr> %4232, ptr %4225, i64 2
  %4234 = insertelement <8 x ptr> %4233, ptr %4226, i64 3
  %4235 = insertelement <8 x ptr> %4234, ptr %4227, i64 4
  %4236 = insertelement <8 x ptr> %4235, ptr %4228, i64 5
  %4237 = insertelement <8 x ptr> %4236, ptr %4229, i64 6
  %4238 = insertelement <8 x ptr> %4237, ptr %4230, i64 7
  %4239 = icmp ult <8 x ptr> %4238, %4222
  %4240 = getelementptr i8, ptr %5, i64 %4194
  %4241 = getelementptr i8, ptr %4240, i64 %4191
  %scevgep5342 = getelementptr i8, ptr %4241, i64 24
  %mul.result5344 = shl nsw i64 %4189, 4
  %4242 = getelementptr i8, ptr %scevgep5342, i64 %mul.result5344
  %4243 = icmp ult ptr %4242, %scevgep5342
  %4244 = getelementptr i8, ptr %5, i64 %4197
  %4245 = getelementptr i8, ptr %4244, i64 %4191
  %scevgep5346 = getelementptr i8, ptr %4245, i64 24
  %mul.result5348 = shl nsw i64 %4189, 4
  %4246 = getelementptr i8, ptr %scevgep5346, i64 %mul.result5348
  %4247 = icmp ult ptr %4246, %scevgep5346
  %4248 = getelementptr i8, ptr %5, i64 %4200
  %4249 = getelementptr i8, ptr %4248, i64 %4191
  %scevgep5350 = getelementptr i8, ptr %4249, i64 24
  %mul.result5352 = shl nsw i64 %4189, 4
  %4250 = getelementptr i8, ptr %scevgep5350, i64 %mul.result5352
  %4251 = icmp ult ptr %4250, %scevgep5350
  %4252 = getelementptr i8, ptr %5, i64 %4203
  %4253 = getelementptr i8, ptr %4252, i64 %4191
  %scevgep5354 = getelementptr i8, ptr %4253, i64 24
  %mul.result5356 = shl nsw i64 %4189, 4
  %4254 = getelementptr i8, ptr %scevgep5354, i64 %mul.result5356
  %4255 = icmp ult ptr %4254, %scevgep5354
  %4256 = getelementptr i8, ptr %5, i64 %4206
  %4257 = getelementptr i8, ptr %4256, i64 %4191
  %scevgep5358 = getelementptr i8, ptr %4257, i64 24
  %mul.result5360 = shl nsw i64 %4189, 4
  %4258 = getelementptr i8, ptr %scevgep5358, i64 %mul.result5360
  %4259 = icmp ult ptr %4258, %scevgep5358
  %4260 = getelementptr i8, ptr %5, i64 %4209
  %4261 = getelementptr i8, ptr %4260, i64 %4191
  %scevgep5362 = getelementptr i8, ptr %4261, i64 24
  %mul.result5364 = shl nsw i64 %4189, 4
  %4262 = getelementptr i8, ptr %scevgep5362, i64 %mul.result5364
  %4263 = icmp ult ptr %4262, %scevgep5362
  %4264 = bitcast <8 x i1> %4239 to i8
  %4265 = icmp ne i8 %4264, 0
  %op.rdx6639 = or i1 %4265, %4243
  %op.rdx6640 = or i1 %4247, %4251
  %op.rdx6641 = or i1 %4255, %4259
  %op.rdx6642 = or i1 %4263, %mul.overflow5317
  %op.rdx6643 = or i1 %op.rdx6639, %op.rdx6640
  %op.rdx6644 = or i1 %op.rdx6641, %op.rdx6642
  %op.rdx6645 = or i1 %op.rdx6643, %op.rdx6644
  br i1 %op.rdx6645, label %scalar.ph5563.preheader, label %vector.memcheck5366

vector.memcheck5366:                              ; preds = %vector.scevcheck5309
  %4266 = shl nsw i64 %4180, 4
  %4267 = shl nsw i64 %23, 4
  %4268 = add nsw i64 %4266, %4267
  %4269 = getelementptr i8, ptr %5, i64 %4268
  %scevgep5367 = getelementptr i8, ptr %4269, i64 16
  %4270 = shl nuw nsw i64 %wide.trip.count4711, 4
  %4271 = getelementptr i8, ptr %5, i64 %4268
  %4272 = getelementptr i8, ptr %4271, i64 %4270
  %scevgep5368 = getelementptr i8, ptr %4272, i64 -8
  %4273 = shl nsw i64 %4181, 4
  %4274 = add nsw i64 %4273, %4267
  %4275 = getelementptr i8, ptr %5, i64 %4274
  %scevgep5369 = getelementptr i8, ptr %4275, i64 16
  %4276 = getelementptr i8, ptr %5, i64 %4274
  %4277 = getelementptr i8, ptr %4276, i64 %4270
  %scevgep5370 = getelementptr i8, ptr %4277, i64 -8
  %4278 = shl nsw i64 %4182, 4
  %4279 = add nsw i64 %4278, %4267
  %4280 = getelementptr i8, ptr %5, i64 %4279
  %scevgep5371 = getelementptr i8, ptr %4280, i64 16
  %4281 = getelementptr i8, ptr %5, i64 %4279
  %4282 = getelementptr i8, ptr %4281, i64 %4270
  %scevgep5372 = getelementptr i8, ptr %4282, i64 -8
  %4283 = shl nsw i64 %4183, 4
  %4284 = add nsw i64 %4283, %4267
  %4285 = getelementptr i8, ptr %5, i64 %4284
  %scevgep5373 = getelementptr i8, ptr %4285, i64 16
  %4286 = getelementptr i8, ptr %5, i64 %4284
  %4287 = getelementptr i8, ptr %4286, i64 %4270
  %scevgep5374 = getelementptr i8, ptr %4287, i64 -8
  %4288 = shl nsw i64 %4184, 4
  %4289 = add nsw i64 %4288, %4267
  %4290 = getelementptr i8, ptr %5, i64 %4289
  %scevgep5375 = getelementptr i8, ptr %4290, i64 16
  %4291 = getelementptr i8, ptr %5, i64 %4289
  %4292 = getelementptr i8, ptr %4291, i64 %4270
  %scevgep5376 = getelementptr i8, ptr %4292, i64 -8
  %4293 = shl nsw i64 %4185, 4
  %4294 = add nsw i64 %4293, %4267
  %4295 = getelementptr i8, ptr %5, i64 %4294
  %scevgep5377 = getelementptr i8, ptr %4295, i64 16
  %4296 = getelementptr i8, ptr %5, i64 %4294
  %4297 = getelementptr i8, ptr %4296, i64 %4270
  %scevgep5378 = getelementptr i8, ptr %4297, i64 -8
  %4298 = shl nsw i64 %4186, 4
  %4299 = add nsw i64 %4298, %4267
  %4300 = getelementptr i8, ptr %5, i64 %4299
  %scevgep5379 = getelementptr i8, ptr %4300, i64 16
  %4301 = getelementptr i8, ptr %5, i64 %4299
  %4302 = getelementptr i8, ptr %4301, i64 %4270
  %scevgep5380 = getelementptr i8, ptr %4302, i64 -8
  %4303 = add nsw i64 %4266, %4267
  %4304 = getelementptr i8, ptr %5, i64 %4303
  %scevgep5381 = getelementptr i8, ptr %4304, i64 24
  %4305 = getelementptr i8, ptr %5, i64 %4303
  %scevgep5382 = getelementptr i8, ptr %4305, i64 %4270
  %4306 = add nsw i64 %4273, %4267
  %4307 = getelementptr i8, ptr %5, i64 %4306
  %scevgep5383 = getelementptr i8, ptr %4307, i64 24
  %4308 = getelementptr i8, ptr %5, i64 %4306
  %scevgep5384 = getelementptr i8, ptr %4308, i64 %4270
  %4309 = add nsw i64 %4278, %4267
  %4310 = getelementptr i8, ptr %5, i64 %4309
  %scevgep5385 = getelementptr i8, ptr %4310, i64 24
  %4311 = getelementptr i8, ptr %5, i64 %4309
  %scevgep5386 = getelementptr i8, ptr %4311, i64 %4270
  %4312 = add nsw i64 %4283, %4267
  %4313 = getelementptr i8, ptr %5, i64 %4312
  %scevgep5387 = getelementptr i8, ptr %4313, i64 24
  %4314 = getelementptr i8, ptr %5, i64 %4312
  %scevgep5388 = getelementptr i8, ptr %4314, i64 %4270
  %4315 = add nsw i64 %4288, %4267
  %4316 = getelementptr i8, ptr %5, i64 %4315
  %scevgep5389 = getelementptr i8, ptr %4316, i64 24
  %4317 = getelementptr i8, ptr %5, i64 %4315
  %scevgep5390 = getelementptr i8, ptr %4317, i64 %4270
  %4318 = add nsw i64 %4293, %4267
  %4319 = getelementptr i8, ptr %5, i64 %4318
  %scevgep5391 = getelementptr i8, ptr %4319, i64 24
  %4320 = getelementptr i8, ptr %5, i64 %4318
  %scevgep5392 = getelementptr i8, ptr %4320, i64 %4270
  %4321 = add nsw i64 %4298, %4267
  %4322 = getelementptr i8, ptr %5, i64 %4321
  %scevgep5393 = getelementptr i8, ptr %4322, i64 24
  %4323 = getelementptr i8, ptr %5, i64 %4321
  %scevgep5394 = getelementptr i8, ptr %4323, i64 %4270
  %bound05395 = icmp ult ptr %scevgep5367, %scevgep5370
  %bound15396 = icmp ult ptr %scevgep5369, %scevgep5368
  %found.conflict5397 = and i1 %bound05395, %bound15396
  %bound05398 = icmp ult ptr %scevgep5367, %scevgep5372
  %bound15399 = icmp ult ptr %scevgep5371, %scevgep5368
  %found.conflict5400 = and i1 %bound05398, %bound15399
  %conflict.rdx5401 = or i1 %found.conflict5397, %found.conflict5400
  %bound05402 = icmp ult ptr %scevgep5367, %scevgep5374
  %bound15403 = icmp ult ptr %scevgep5373, %scevgep5368
  %found.conflict5404 = and i1 %bound05402, %bound15403
  %conflict.rdx5405 = or i1 %conflict.rdx5401, %found.conflict5404
  %bound05406 = icmp ult ptr %scevgep5367, %scevgep5376
  %bound15407 = icmp ult ptr %scevgep5375, %scevgep5368
  %found.conflict5408 = and i1 %bound05406, %bound15407
  %conflict.rdx5409 = or i1 %conflict.rdx5405, %found.conflict5408
  %bound05410 = icmp ult ptr %scevgep5367, %scevgep5378
  %bound15411 = icmp ult ptr %scevgep5377, %scevgep5368
  %found.conflict5412 = and i1 %bound05410, %bound15411
  %conflict.rdx5413 = or i1 %conflict.rdx5409, %found.conflict5412
  %bound05414 = icmp ult ptr %scevgep5367, %scevgep5380
  %bound15415 = icmp ult ptr %scevgep5379, %scevgep5368
  %found.conflict5416 = and i1 %bound05414, %bound15415
  %conflict.rdx5417 = or i1 %conflict.rdx5413, %found.conflict5416
  %bound05418 = icmp ult ptr %scevgep5369, %scevgep5372
  %bound15419 = icmp ult ptr %scevgep5371, %scevgep5370
  %found.conflict5420 = and i1 %bound05418, %bound15419
  %conflict.rdx5421 = or i1 %conflict.rdx5417, %found.conflict5420
  %bound05422 = icmp ult ptr %scevgep5369, %scevgep5374
  %bound15423 = icmp ult ptr %scevgep5373, %scevgep5370
  %found.conflict5424 = and i1 %bound05422, %bound15423
  %conflict.rdx5425 = or i1 %conflict.rdx5421, %found.conflict5424
  %bound05426 = icmp ult ptr %scevgep5369, %scevgep5376
  %bound15427 = icmp ult ptr %scevgep5375, %scevgep5370
  %found.conflict5428 = and i1 %bound05426, %bound15427
  %conflict.rdx5429 = or i1 %conflict.rdx5425, %found.conflict5428
  %bound05430 = icmp ult ptr %scevgep5369, %scevgep5378
  %bound15431 = icmp ult ptr %scevgep5377, %scevgep5370
  %found.conflict5432 = and i1 %bound05430, %bound15431
  %conflict.rdx5433 = or i1 %conflict.rdx5429, %found.conflict5432
  %bound05434 = icmp ult ptr %scevgep5369, %scevgep5380
  %bound15435 = icmp ult ptr %scevgep5379, %scevgep5370
  %found.conflict5436 = and i1 %bound05434, %bound15435
  %conflict.rdx5437 = or i1 %conflict.rdx5433, %found.conflict5436
  %bound05438 = icmp ult ptr %scevgep5371, %scevgep5374
  %bound15439 = icmp ult ptr %scevgep5373, %scevgep5372
  %found.conflict5440 = and i1 %bound05438, %bound15439
  %conflict.rdx5441 = or i1 %conflict.rdx5437, %found.conflict5440
  %bound05442 = icmp ult ptr %scevgep5371, %scevgep5376
  %bound15443 = icmp ult ptr %scevgep5375, %scevgep5372
  %found.conflict5444 = and i1 %bound05442, %bound15443
  %conflict.rdx5445 = or i1 %conflict.rdx5441, %found.conflict5444
  %bound05446 = icmp ult ptr %scevgep5371, %scevgep5378
  %bound15447 = icmp ult ptr %scevgep5377, %scevgep5372
  %found.conflict5448 = and i1 %bound05446, %bound15447
  %conflict.rdx5449 = or i1 %conflict.rdx5445, %found.conflict5448
  %bound05450 = icmp ult ptr %scevgep5371, %scevgep5380
  %bound15451 = icmp ult ptr %scevgep5379, %scevgep5372
  %found.conflict5452 = and i1 %bound05450, %bound15451
  %conflict.rdx5453 = or i1 %conflict.rdx5449, %found.conflict5452
  %bound05454 = icmp ult ptr %scevgep5373, %scevgep5376
  %bound15455 = icmp ult ptr %scevgep5375, %scevgep5374
  %found.conflict5456 = and i1 %bound05454, %bound15455
  %conflict.rdx5457 = or i1 %conflict.rdx5453, %found.conflict5456
  %bound05458 = icmp ult ptr %scevgep5373, %scevgep5378
  %bound15459 = icmp ult ptr %scevgep5377, %scevgep5374
  %found.conflict5460 = and i1 %bound05458, %bound15459
  %conflict.rdx5461 = or i1 %conflict.rdx5457, %found.conflict5460
  %bound05462 = icmp ult ptr %scevgep5373, %scevgep5380
  %bound15463 = icmp ult ptr %scevgep5379, %scevgep5374
  %found.conflict5464 = and i1 %bound05462, %bound15463
  %conflict.rdx5465 = or i1 %conflict.rdx5461, %found.conflict5464
  %bound05466 = icmp ult ptr %scevgep5375, %scevgep5378
  %bound15467 = icmp ult ptr %scevgep5377, %scevgep5376
  %found.conflict5468 = and i1 %bound05466, %bound15467
  %conflict.rdx5469 = or i1 %conflict.rdx5465, %found.conflict5468
  %bound05470 = icmp ult ptr %scevgep5375, %scevgep5380
  %bound15471 = icmp ult ptr %scevgep5379, %scevgep5376
  %found.conflict5472 = and i1 %bound05470, %bound15471
  %conflict.rdx5473 = or i1 %conflict.rdx5469, %found.conflict5472
  %bound05474 = icmp ult ptr %scevgep5377, %scevgep5380
  %bound15475 = icmp ult ptr %scevgep5379, %scevgep5378
  %found.conflict5476 = and i1 %bound05474, %bound15475
  %conflict.rdx5477 = or i1 %conflict.rdx5473, %found.conflict5476
  %bound05478 = icmp ult ptr %scevgep5381, %scevgep5384
  %bound15479 = icmp ult ptr %scevgep5383, %scevgep5382
  %found.conflict5480 = and i1 %bound05478, %bound15479
  %conflict.rdx5481 = or i1 %conflict.rdx5477, %found.conflict5480
  %bound05482 = icmp ult ptr %scevgep5381, %scevgep5386
  %bound15483 = icmp ult ptr %scevgep5385, %scevgep5382
  %found.conflict5484 = and i1 %bound05482, %bound15483
  %conflict.rdx5485 = or i1 %conflict.rdx5481, %found.conflict5484
  %bound05486 = icmp ult ptr %scevgep5381, %scevgep5388
  %bound15487 = icmp ult ptr %scevgep5387, %scevgep5382
  %found.conflict5488 = and i1 %bound05486, %bound15487
  %conflict.rdx5489 = or i1 %conflict.rdx5485, %found.conflict5488
  %bound05490 = icmp ult ptr %scevgep5381, %scevgep5390
  %bound15491 = icmp ult ptr %scevgep5389, %scevgep5382
  %found.conflict5492 = and i1 %bound05490, %bound15491
  %conflict.rdx5493 = or i1 %conflict.rdx5489, %found.conflict5492
  %bound05494 = icmp ult ptr %scevgep5381, %scevgep5392
  %bound15495 = icmp ult ptr %scevgep5391, %scevgep5382
  %found.conflict5496 = and i1 %bound05494, %bound15495
  %conflict.rdx5497 = or i1 %conflict.rdx5493, %found.conflict5496
  %bound05498 = icmp ult ptr %scevgep5381, %scevgep5394
  %bound15499 = icmp ult ptr %scevgep5393, %scevgep5382
  %found.conflict5500 = and i1 %bound05498, %bound15499
  %conflict.rdx5501 = or i1 %conflict.rdx5497, %found.conflict5500
  %bound05502 = icmp ult ptr %scevgep5383, %scevgep5386
  %bound15503 = icmp ult ptr %scevgep5385, %scevgep5384
  %found.conflict5504 = and i1 %bound05502, %bound15503
  %conflict.rdx5505 = or i1 %conflict.rdx5501, %found.conflict5504
  %bound05506 = icmp ult ptr %scevgep5383, %scevgep5388
  %bound15507 = icmp ult ptr %scevgep5387, %scevgep5384
  %found.conflict5508 = and i1 %bound05506, %bound15507
  %conflict.rdx5509 = or i1 %conflict.rdx5505, %found.conflict5508
  %bound05510 = icmp ult ptr %scevgep5383, %scevgep5390
  %bound15511 = icmp ult ptr %scevgep5389, %scevgep5384
  %found.conflict5512 = and i1 %bound05510, %bound15511
  %conflict.rdx5513 = or i1 %conflict.rdx5509, %found.conflict5512
  %bound05514 = icmp ult ptr %scevgep5383, %scevgep5392
  %bound15515 = icmp ult ptr %scevgep5391, %scevgep5384
  %found.conflict5516 = and i1 %bound05514, %bound15515
  %conflict.rdx5517 = or i1 %conflict.rdx5513, %found.conflict5516
  %bound05518 = icmp ult ptr %scevgep5383, %scevgep5394
  %bound15519 = icmp ult ptr %scevgep5393, %scevgep5384
  %found.conflict5520 = and i1 %bound05518, %bound15519
  %conflict.rdx5521 = or i1 %conflict.rdx5517, %found.conflict5520
  %bound05522 = icmp ult ptr %scevgep5385, %scevgep5388
  %bound15523 = icmp ult ptr %scevgep5387, %scevgep5386
  %found.conflict5524 = and i1 %bound05522, %bound15523
  %conflict.rdx5525 = or i1 %conflict.rdx5521, %found.conflict5524
  %bound05526 = icmp ult ptr %scevgep5385, %scevgep5390
  %bound15527 = icmp ult ptr %scevgep5389, %scevgep5386
  %found.conflict5528 = and i1 %bound05526, %bound15527
  %conflict.rdx5529 = or i1 %conflict.rdx5525, %found.conflict5528
  %bound05530 = icmp ult ptr %scevgep5385, %scevgep5392
  %bound15531 = icmp ult ptr %scevgep5391, %scevgep5386
  %found.conflict5532 = and i1 %bound05530, %bound15531
  %conflict.rdx5533 = or i1 %conflict.rdx5529, %found.conflict5532
  %bound05534 = icmp ult ptr %scevgep5385, %scevgep5394
  %bound15535 = icmp ult ptr %scevgep5393, %scevgep5386
  %found.conflict5536 = and i1 %bound05534, %bound15535
  %conflict.rdx5537 = or i1 %conflict.rdx5533, %found.conflict5536
  %bound05538 = icmp ult ptr %scevgep5387, %scevgep5390
  %bound15539 = icmp ult ptr %scevgep5389, %scevgep5388
  %found.conflict5540 = and i1 %bound05538, %bound15539
  %conflict.rdx5541 = or i1 %conflict.rdx5537, %found.conflict5540
  %bound05542 = icmp ult ptr %scevgep5387, %scevgep5392
  %bound15543 = icmp ult ptr %scevgep5391, %scevgep5388
  %found.conflict5544 = and i1 %bound05542, %bound15543
  %conflict.rdx5545 = or i1 %conflict.rdx5541, %found.conflict5544
  %bound05546 = icmp ult ptr %scevgep5387, %scevgep5394
  %bound15547 = icmp ult ptr %scevgep5393, %scevgep5388
  %found.conflict5548 = and i1 %bound05546, %bound15547
  %conflict.rdx5549 = or i1 %conflict.rdx5545, %found.conflict5548
  %bound05550 = icmp ult ptr %scevgep5389, %scevgep5392
  %bound15551 = icmp ult ptr %scevgep5391, %scevgep5390
  %found.conflict5552 = and i1 %bound05550, %bound15551
  %conflict.rdx5553 = or i1 %conflict.rdx5549, %found.conflict5552
  %bound05554 = icmp ult ptr %scevgep5389, %scevgep5394
  %bound15555 = icmp ult ptr %scevgep5393, %scevgep5390
  %found.conflict5556 = and i1 %bound05554, %bound15555
  %conflict.rdx5557 = or i1 %conflict.rdx5553, %found.conflict5556
  %bound05558 = icmp ult ptr %scevgep5391, %scevgep5394
  %bound15559 = icmp ult ptr %scevgep5393, %scevgep5392
  %found.conflict5560 = and i1 %bound05558, %bound15559
  %conflict.rdx5561 = or i1 %conflict.rdx5557, %found.conflict5560
  br i1 %conflict.rdx5561, label %scalar.ph5563.preheader, label %vector.ph5565

vector.ph5565:                                    ; preds = %vector.memcheck5366
  %n.vec5567 = and i64 %4188, 2147483646
  %ind.end5568 = or i64 %4188, 1
  %broadcast.splat5577 = shufflevector <2 x double> %4159, <2 x double> poison, <2 x i32> zeroinitializer
  %broadcast.splatinsert5578 = insertelement <2 x double> poison, double %4152, i64 0
  %broadcast.splat5579 = shufflevector <2 x double> %broadcast.splatinsert5578, <2 x double> poison, <2 x i32> zeroinitializer
  %broadcast.splatinsert5580 = insertelement <2 x double> poison, double %4153, i64 0
  %broadcast.splat5581 = shufflevector <2 x double> %broadcast.splatinsert5580, <2 x double> poison, <2 x i32> zeroinitializer
  %broadcast.splat5586 = shufflevector <2 x double> %4159, <2 x double> poison, <2 x i32> <i32 1, i32 1>
  %broadcast.splatinsert5587 = insertelement <2 x double> poison, double %4155, i64 0
  %broadcast.splat5588 = shufflevector <2 x double> %broadcast.splatinsert5587, <2 x double> poison, <2 x i32> zeroinitializer
  %broadcast.splatinsert5589 = insertelement <2 x double> poison, double %4156, i64 0
  %broadcast.splat5590 = shufflevector <2 x double> %broadcast.splatinsert5589, <2 x double> poison, <2 x i32> zeroinitializer
  %broadcast.splatinsert5594 = insertelement <2 x double> poison, double %4163, i64 0
  %broadcast.splat5595 = shufflevector <2 x double> %broadcast.splatinsert5594, <2 x double> poison, <2 x i32> zeroinitializer
  %broadcast.splatinsert5596 = insertelement <2 x double> poison, double %4161, i64 0
  %broadcast.splat5597 = shufflevector <2 x double> %broadcast.splatinsert5596, <2 x double> poison, <2 x i32> zeroinitializer
  %broadcast.splatinsert5598 = insertelement <2 x double> poison, double %4162, i64 0
  %broadcast.splat5599 = shufflevector <2 x double> %broadcast.splatinsert5598, <2 x double> poison, <2 x i32> zeroinitializer
  %broadcast.splatinsert5603 = insertelement <2 x double> poison, double %4167, i64 0
  %broadcast.splat5604 = shufflevector <2 x double> %broadcast.splatinsert5603, <2 x double> poison, <2 x i32> zeroinitializer
  %broadcast.splatinsert5605 = insertelement <2 x double> poison, double %4165, i64 0
  %broadcast.splat5606 = shufflevector <2 x double> %broadcast.splatinsert5605, <2 x double> poison, <2 x i32> zeroinitializer
  %broadcast.splatinsert5607 = insertelement <2 x double> poison, double %4166, i64 0
  %broadcast.splat5608 = shufflevector <2 x double> %broadcast.splatinsert5607, <2 x double> poison, <2 x i32> zeroinitializer
  %broadcast.splatinsert5612 = insertelement <2 x double> poison, double %4171, i64 0
  %broadcast.splat5613 = shufflevector <2 x double> %broadcast.splatinsert5612, <2 x double> poison, <2 x i32> zeroinitializer
  %broadcast.splatinsert5614 = insertelement <2 x double> poison, double %4169, i64 0
  %broadcast.splat5615 = shufflevector <2 x double> %broadcast.splatinsert5614, <2 x double> poison, <2 x i32> zeroinitializer
  %broadcast.splatinsert5616 = insertelement <2 x double> poison, double %4170, i64 0
  %broadcast.splat5617 = shufflevector <2 x double> %broadcast.splatinsert5616, <2 x double> poison, <2 x i32> zeroinitializer
  %broadcast.splatinsert5621 = insertelement <2 x double> poison, double %4175, i64 0
  %broadcast.splat5622 = shufflevector <2 x double> %broadcast.splatinsert5621, <2 x double> poison, <2 x i32> zeroinitializer
  %broadcast.splatinsert5623 = insertelement <2 x double> poison, double %4173, i64 0
  %broadcast.splat5624 = shufflevector <2 x double> %broadcast.splatinsert5623, <2 x double> poison, <2 x i32> zeroinitializer
  %broadcast.splatinsert5625 = insertelement <2 x double> poison, double %4174, i64 0
  %broadcast.splat5626 = shufflevector <2 x double> %broadcast.splatinsert5625, <2 x double> poison, <2 x i32> zeroinitializer
  %broadcast.splatinsert5630 = insertelement <2 x double> poison, double %4179, i64 0
  %broadcast.splat5631 = shufflevector <2 x double> %broadcast.splatinsert5630, <2 x double> poison, <2 x i32> zeroinitializer
  %broadcast.splatinsert5632 = insertelement <2 x double> poison, double %4177, i64 0
  %broadcast.splat5633 = shufflevector <2 x double> %broadcast.splatinsert5632, <2 x double> poison, <2 x i32> zeroinitializer
  %broadcast.splatinsert5634 = insertelement <2 x double> poison, double %4178, i64 0
  %broadcast.splat5635 = shufflevector <2 x double> %broadcast.splatinsert5634, <2 x double> poison, <2 x i32> zeroinitializer
  %broadcast.splat5637 = shufflevector <2 x double> %4029, <2 x double> poison, <2 x i32> <i32 1, i32 1>
  %broadcast.splat5639 = shufflevector <2 x double> %4029, <2 x double> poison, <2 x i32> zeroinitializer
  %broadcast.splat5642 = shufflevector <2 x double> %4048, <2 x double> poison, <2 x i32> <i32 1, i32 1>
  %broadcast.splat5644 = shufflevector <2 x double> %4048, <2 x double> poison, <2 x i32> zeroinitializer
  %broadcast.splat5650 = shufflevector <2 x double> %4067, <2 x double> poison, <2 x i32> <i32 1, i32 1>
  %broadcast.splat5652 = shufflevector <2 x double> %4067, <2 x double> poison, <2 x i32> zeroinitializer
  %broadcast.splat5658 = shufflevector <2 x double> %4086, <2 x double> poison, <2 x i32> <i32 1, i32 1>
  %broadcast.splat5660 = shufflevector <2 x double> %4086, <2 x double> poison, <2 x i32> zeroinitializer
  %broadcast.splat5666 = shufflevector <2 x double> %4105, <2 x double> poison, <2 x i32> <i32 1, i32 1>
  %broadcast.splat5668 = shufflevector <2 x double> %4105, <2 x double> poison, <2 x i32> zeroinitializer
  %broadcast.splat5674 = shufflevector <2 x double> %4124, <2 x double> poison, <2 x i32> <i32 1, i32 1>
  %broadcast.splat5676 = shufflevector <2 x double> %4124, <2 x double> poison, <2 x i32> zeroinitializer
  %broadcast.splat5682 = shufflevector <2 x double> %4143, <2 x double> poison, <2 x i32> <i32 1, i32 1>
  %broadcast.splat5684 = shufflevector <2 x double> %4143, <2 x double> poison, <2 x i32> zeroinitializer
  br label %vector.body5570

vector.body5570:                                  ; preds = %vector.body5570, %vector.ph5565
  %index5571 = phi i64 [ 0, %vector.ph5565 ], [ %index.next5689, %vector.body5570 ]
  %offset.idx5572 = or disjoint i64 %index5571, 1
  %4324 = getelementptr %struct.doublecomplex, ptr %invariant.gep4795, i64 %offset.idx5572
  %wide.vec5573 = load <4 x double>, ptr %4324, align 8, !tbaa !13
  %strided.vec5574 = shufflevector <4 x double> %wide.vec5573, <4 x double> poison, <2 x i32> <i32 0, i32 2>
  %strided.vec5575 = shufflevector <4 x double> %wide.vec5573, <4 x double> poison, <2 x i32> <i32 1, i32 3>
  %4325 = fmul <2 x double> %strided.vec5575, %broadcast.splat5577
  %4326 = call <2 x double> @llvm.fmuladd.v2f64(<2 x double> %broadcast.splat5579, <2 x double> %strided.vec5574, <2 x double> %4325)
  %4327 = fmul <2 x double> %strided.vec5574, %broadcast.splat5581
  %4328 = call <2 x double> @llvm.fmuladd.v2f64(<2 x double> %broadcast.splat5579, <2 x double> %strided.vec5575, <2 x double> %4327)
  %4329 = getelementptr %struct.doublecomplex, ptr %invariant.gep4797, i64 %offset.idx5572
  %wide.vec5582 = load <4 x double>, ptr %4329, align 8, !tbaa !13
  %strided.vec5583 = shufflevector <4 x double> %wide.vec5582, <4 x double> poison, <2 x i32> <i32 0, i32 2>
  %strided.vec5584 = shufflevector <4 x double> %wide.vec5582, <4 x double> poison, <2 x i32> <i32 1, i32 3>
  %4330 = fmul <2 x double> %strided.vec5584, %broadcast.splat5586
  %4331 = call <2 x double> @llvm.fmuladd.v2f64(<2 x double> %broadcast.splat5588, <2 x double> %strided.vec5583, <2 x double> %4330)
  %4332 = fmul <2 x double> %strided.vec5583, %broadcast.splat5590
  %4333 = call <2 x double> @llvm.fmuladd.v2f64(<2 x double> %broadcast.splat5588, <2 x double> %strided.vec5584, <2 x double> %4332)
  %4334 = fadd <2 x double> %4326, %4331
  %4335 = fadd <2 x double> %4328, %4333
  %4336 = getelementptr %struct.doublecomplex, ptr %invariant.gep4799, i64 %offset.idx5572
  %wide.vec5591 = load <4 x double>, ptr %4336, align 8, !tbaa !13
  %strided.vec5592 = shufflevector <4 x double> %wide.vec5591, <4 x double> poison, <2 x i32> <i32 0, i32 2>
  %strided.vec5593 = shufflevector <4 x double> %wide.vec5591, <4 x double> poison, <2 x i32> <i32 1, i32 3>
  %4337 = fmul <2 x double> %strided.vec5593, %broadcast.splat5595
  %4338 = call <2 x double> @llvm.fmuladd.v2f64(<2 x double> %broadcast.splat5597, <2 x double> %strided.vec5592, <2 x double> %4337)
  %4339 = fmul <2 x double> %strided.vec5592, %broadcast.splat5599
  %4340 = call <2 x double> @llvm.fmuladd.v2f64(<2 x double> %broadcast.splat5597, <2 x double> %strided.vec5593, <2 x double> %4339)
  %4341 = fadd <2 x double> %4334, %4338
  %4342 = fadd <2 x double> %4335, %4340
  %4343 = getelementptr %struct.doublecomplex, ptr %invariant.gep4801, i64 %offset.idx5572
  %wide.vec5600 = load <4 x double>, ptr %4343, align 8, !tbaa !13
  %strided.vec5601 = shufflevector <4 x double> %wide.vec5600, <4 x double> poison, <2 x i32> <i32 0, i32 2>
  %strided.vec5602 = shufflevector <4 x double> %wide.vec5600, <4 x double> poison, <2 x i32> <i32 1, i32 3>
  %4344 = fmul <2 x double> %strided.vec5602, %broadcast.splat5604
  %4345 = call <2 x double> @llvm.fmuladd.v2f64(<2 x double> %broadcast.splat5606, <2 x double> %strided.vec5601, <2 x double> %4344)
  %4346 = fmul <2 x double> %strided.vec5601, %broadcast.splat5608
  %4347 = call <2 x double> @llvm.fmuladd.v2f64(<2 x double> %broadcast.splat5606, <2 x double> %strided.vec5602, <2 x double> %4346)
  %4348 = fadd <2 x double> %4341, %4345
  %4349 = fadd <2 x double> %4342, %4347
  %4350 = getelementptr %struct.doublecomplex, ptr %invariant.gep4803, i64 %offset.idx5572
  %wide.vec5609 = load <4 x double>, ptr %4350, align 8, !tbaa !13
  %strided.vec5610 = shufflevector <4 x double> %wide.vec5609, <4 x double> poison, <2 x i32> <i32 0, i32 2>
  %strided.vec5611 = shufflevector <4 x double> %wide.vec5609, <4 x double> poison, <2 x i32> <i32 1, i32 3>
  %4351 = fmul <2 x double> %strided.vec5611, %broadcast.splat5613
  %4352 = call <2 x double> @llvm.fmuladd.v2f64(<2 x double> %broadcast.splat5615, <2 x double> %strided.vec5610, <2 x double> %4351)
  %4353 = fmul <2 x double> %strided.vec5610, %broadcast.splat5617
  %4354 = call <2 x double> @llvm.fmuladd.v2f64(<2 x double> %broadcast.splat5615, <2 x double> %strided.vec5611, <2 x double> %4353)
  %4355 = fadd <2 x double> %4348, %4352
  %4356 = fadd <2 x double> %4349, %4354
  %4357 = getelementptr %struct.doublecomplex, ptr %invariant.gep4805, i64 %offset.idx5572
  %wide.vec5618 = load <4 x double>, ptr %4357, align 8, !tbaa !13
  %strided.vec5619 = shufflevector <4 x double> %wide.vec5618, <4 x double> poison, <2 x i32> <i32 0, i32 2>
  %strided.vec5620 = shufflevector <4 x double> %wide.vec5618, <4 x double> poison, <2 x i32> <i32 1, i32 3>
  %4358 = fmul <2 x double> %strided.vec5620, %broadcast.splat5622
  %4359 = call <2 x double> @llvm.fmuladd.v2f64(<2 x double> %broadcast.splat5624, <2 x double> %strided.vec5619, <2 x double> %4358)
  %4360 = fmul <2 x double> %strided.vec5619, %broadcast.splat5626
  %4361 = call <2 x double> @llvm.fmuladd.v2f64(<2 x double> %broadcast.splat5624, <2 x double> %strided.vec5620, <2 x double> %4360)
  %4362 = fadd <2 x double> %4355, %4359
  %4363 = fadd <2 x double> %4356, %4361
  %4364 = getelementptr %struct.doublecomplex, ptr %invariant.gep4807, i64 %offset.idx5572
  %wide.vec5627 = load <4 x double>, ptr %4364, align 8, !tbaa !13
  %strided.vec5628 = shufflevector <4 x double> %wide.vec5627, <4 x double> poison, <2 x i32> <i32 0, i32 2>
  %strided.vec5629 = shufflevector <4 x double> %wide.vec5627, <4 x double> poison, <2 x i32> <i32 1, i32 3>
  %4365 = fmul <2 x double> %strided.vec5629, %broadcast.splat5631
  %4366 = call <2 x double> @llvm.fmuladd.v2f64(<2 x double> %broadcast.splat5633, <2 x double> %strided.vec5628, <2 x double> %4365)
  %4367 = fmul <2 x double> %strided.vec5628, %broadcast.splat5635
  %4368 = call <2 x double> @llvm.fmuladd.v2f64(<2 x double> %broadcast.splat5633, <2 x double> %strided.vec5629, <2 x double> %4367)
  %4369 = fadd <2 x double> %4362, %4366
  %4370 = fadd <2 x double> %4363, %4368
  %4371 = fneg <2 x double> %4370
  %4372 = fmul <2 x double> %broadcast.splat5637, %4371
  %4373 = call <2 x double> @llvm.fmuladd.v2f64(<2 x double> %4369, <2 x double> %broadcast.splat5639, <2 x double> %4372)
  %4374 = fmul <2 x double> %broadcast.splat5639, %4370
  %4375 = call <2 x double> @llvm.fmuladd.v2f64(<2 x double> %4369, <2 x double> %broadcast.splat5637, <2 x double> %4374)
  %4376 = fsub <2 x double> %strided.vec5574, %4373
  %4377 = fsub <2 x double> %strided.vec5575, %4375
  %interleaved.vec5640 = shufflevector <2 x double> %4376, <2 x double> %4377, <4 x i32> <i32 0, i32 2, i32 1, i32 3>
  store <4 x double> %interleaved.vec5640, ptr %4324, align 8, !tbaa !13
  %4378 = fmul <2 x double> %broadcast.splat5642, %4371
  %4379 = call <2 x double> @llvm.fmuladd.v2f64(<2 x double> %4369, <2 x double> %broadcast.splat5644, <2 x double> %4378)
  %4380 = fmul <2 x double> %broadcast.splat5644, %4370
  %4381 = call <2 x double> @llvm.fmuladd.v2f64(<2 x double> %4369, <2 x double> %broadcast.splat5642, <2 x double> %4380)
  %wide.vec5645 = load <4 x double>, ptr %4329, align 8, !tbaa !13
  %strided.vec5646 = shufflevector <4 x double> %wide.vec5645, <4 x double> poison, <2 x i32> <i32 0, i32 2>
  %strided.vec5647 = shufflevector <4 x double> %wide.vec5645, <4 x double> poison, <2 x i32> <i32 1, i32 3>
  %4382 = fsub <2 x double> %strided.vec5646, %4379
  %4383 = fsub <2 x double> %strided.vec5647, %4381
  %interleaved.vec5648 = shufflevector <2 x double> %4382, <2 x double> %4383, <4 x i32> <i32 0, i32 2, i32 1, i32 3>
  store <4 x double> %interleaved.vec5648, ptr %4329, align 8, !tbaa !13
  %4384 = fmul <2 x double> %broadcast.splat5650, %4371
  %4385 = call <2 x double> @llvm.fmuladd.v2f64(<2 x double> %4369, <2 x double> %broadcast.splat5652, <2 x double> %4384)
  %4386 = fmul <2 x double> %broadcast.splat5652, %4370
  %4387 = call <2 x double> @llvm.fmuladd.v2f64(<2 x double> %4369, <2 x double> %broadcast.splat5650, <2 x double> %4386)
  %wide.vec5653 = load <4 x double>, ptr %4336, align 8, !tbaa !13
  %strided.vec5654 = shufflevector <4 x double> %wide.vec5653, <4 x double> poison, <2 x i32> <i32 0, i32 2>
  %strided.vec5655 = shufflevector <4 x double> %wide.vec5653, <4 x double> poison, <2 x i32> <i32 1, i32 3>
  %4388 = fsub <2 x double> %strided.vec5654, %4385
  %4389 = fsub <2 x double> %strided.vec5655, %4387
  %interleaved.vec5656 = shufflevector <2 x double> %4388, <2 x double> %4389, <4 x i32> <i32 0, i32 2, i32 1, i32 3>
  store <4 x double> %interleaved.vec5656, ptr %4336, align 8, !tbaa !13
  %4390 = fmul <2 x double> %broadcast.splat5658, %4371
  %4391 = call <2 x double> @llvm.fmuladd.v2f64(<2 x double> %4369, <2 x double> %broadcast.splat5660, <2 x double> %4390)
  %4392 = fmul <2 x double> %broadcast.splat5660, %4370
  %4393 = call <2 x double> @llvm.fmuladd.v2f64(<2 x double> %4369, <2 x double> %broadcast.splat5658, <2 x double> %4392)
  %wide.vec5661 = load <4 x double>, ptr %4343, align 8, !tbaa !13
  %strided.vec5662 = shufflevector <4 x double> %wide.vec5661, <4 x double> poison, <2 x i32> <i32 0, i32 2>
  %strided.vec5663 = shufflevector <4 x double> %wide.vec5661, <4 x double> poison, <2 x i32> <i32 1, i32 3>
  %4394 = fsub <2 x double> %strided.vec5662, %4391
  %4395 = fsub <2 x double> %strided.vec5663, %4393
  %interleaved.vec5664 = shufflevector <2 x double> %4394, <2 x double> %4395, <4 x i32> <i32 0, i32 2, i32 1, i32 3>
  store <4 x double> %interleaved.vec5664, ptr %4343, align 8, !tbaa !13
  %4396 = fmul <2 x double> %broadcast.splat5666, %4371
  %4397 = call <2 x double> @llvm.fmuladd.v2f64(<2 x double> %4369, <2 x double> %broadcast.splat5668, <2 x double> %4396)
  %4398 = fmul <2 x double> %broadcast.splat5668, %4370
  %4399 = call <2 x double> @llvm.fmuladd.v2f64(<2 x double> %4369, <2 x double> %broadcast.splat5666, <2 x double> %4398)
  %wide.vec5669 = load <4 x double>, ptr %4350, align 8, !tbaa !13
  %strided.vec5670 = shufflevector <4 x double> %wide.vec5669, <4 x double> poison, <2 x i32> <i32 0, i32 2>
  %strided.vec5671 = shufflevector <4 x double> %wide.vec5669, <4 x double> poison, <2 x i32> <i32 1, i32 3>
  %4400 = fsub <2 x double> %strided.vec5670, %4397
  %4401 = fsub <2 x double> %strided.vec5671, %4399
  %interleaved.vec5672 = shufflevector <2 x double> %4400, <2 x double> %4401, <4 x i32> <i32 0, i32 2, i32 1, i32 3>
  store <4 x double> %interleaved.vec5672, ptr %4350, align 8, !tbaa !13
  %4402 = fmul <2 x double> %broadcast.splat5674, %4371
  %4403 = call <2 x double> @llvm.fmuladd.v2f64(<2 x double> %4369, <2 x double> %broadcast.splat5676, <2 x double> %4402)
  %4404 = fmul <2 x double> %broadcast.splat5676, %4370
  %4405 = call <2 x double> @llvm.fmuladd.v2f64(<2 x double> %4369, <2 x double> %broadcast.splat5674, <2 x double> %4404)
  %wide.vec5677 = load <4 x double>, ptr %4357, align 8, !tbaa !13
  %strided.vec5678 = shufflevector <4 x double> %wide.vec5677, <4 x double> poison, <2 x i32> <i32 0, i32 2>
  %strided.vec5679 = shufflevector <4 x double> %wide.vec5677, <4 x double> poison, <2 x i32> <i32 1, i32 3>
  %4406 = fsub <2 x double> %strided.vec5678, %4403
  %4407 = fsub <2 x double> %strided.vec5679, %4405
  %interleaved.vec5680 = shufflevector <2 x double> %4406, <2 x double> %4407, <4 x i32> <i32 0, i32 2, i32 1, i32 3>
  store <4 x double> %interleaved.vec5680, ptr %4357, align 8, !tbaa !13
  %4408 = fmul <2 x double> %broadcast.splat5682, %4371
  %4409 = call <2 x double> @llvm.fmuladd.v2f64(<2 x double> %4369, <2 x double> %broadcast.splat5684, <2 x double> %4408)
  %4410 = fmul <2 x double> %broadcast.splat5684, %4370
  %4411 = call <2 x double> @llvm.fmuladd.v2f64(<2 x double> %4369, <2 x double> %broadcast.splat5682, <2 x double> %4410)
  %wide.vec5685 = load <4 x double>, ptr %4364, align 8, !tbaa !13
  %strided.vec5686 = shufflevector <4 x double> %wide.vec5685, <4 x double> poison, <2 x i32> <i32 0, i32 2>
  %strided.vec5687 = shufflevector <4 x double> %wide.vec5685, <4 x double> poison, <2 x i32> <i32 1, i32 3>
  %4412 = fsub <2 x double> %strided.vec5686, %4409
  %4413 = fsub <2 x double> %strided.vec5687, %4411
  %interleaved.vec5688 = shufflevector <2 x double> %4412, <2 x double> %4413, <4 x i32> <i32 0, i32 2, i32 1, i32 3>
  store <4 x double> %interleaved.vec5688, ptr %4364, align 8, !tbaa !13
  %index.next5689 = add nuw i64 %index5571, 2
  %4414 = icmp eq i64 %index.next5689, %n.vec5567
  br i1 %4414, label %middle.block5562, label %vector.body5570, !llvm.loop !39

middle.block5562:                                 ; preds = %vector.body5570
  %cmp.n5690 = icmp eq i64 %n.vec5567, %4188
  br i1 %cmp.n5690, label %.loopexit, label %scalar.ph5563.preheader

scalar.ph5563.preheader:                          ; preds = %middle.block5562, %vector.memcheck5366, %vector.scevcheck5309, %.lr.ph4476
  %indvars.iv4708.ph = phi i64 [ 1, %vector.memcheck5366 ], [ 1, %vector.scevcheck5309 ], [ 1, %.lr.ph4476 ], [ %ind.end5568, %middle.block5562 ]
  %4415 = insertelement <2 x double> poison, double %4152, i64 0
  %4416 = insertelement <2 x double> %4415, double %4155, i64 1
  br label %scalar.ph5563

scalar.ph5563:                                    ; preds = %scalar.ph5563.preheader, %scalar.ph5563
  %indvars.iv4708 = phi i64 [ %indvars.iv.next4709, %scalar.ph5563 ], [ %indvars.iv4708.ph, %scalar.ph5563.preheader ]
  %gep4796 = getelementptr %struct.doublecomplex, ptr %invariant.gep4795, i64 %indvars.iv4708
  %gep4798 = getelementptr %struct.doublecomplex, ptr %invariant.gep4797, i64 %indvars.iv4708
  %4417 = load double, ptr %gep4798, align 8, !tbaa !9
  %4418 = getelementptr inbounds i8, ptr %gep4798, i64 8
  %4419 = load double, ptr %4418, align 8, !tbaa !12
  %gep4800 = getelementptr %struct.doublecomplex, ptr %invariant.gep4799, i64 %indvars.iv4708
  %4420 = load double, ptr %gep4800, align 8, !tbaa !9
  %4421 = getelementptr inbounds i8, ptr %gep4800, i64 8
  %4422 = load double, ptr %4421, align 8, !tbaa !12
  %4423 = fmul double %4422, %4163
  %4424 = call double @llvm.fmuladd.f64(double %4161, double %4420, double %4423)
  %4425 = fmul double %4420, %4162
  %4426 = call double @llvm.fmuladd.f64(double %4161, double %4422, double %4425)
  %gep4802 = getelementptr %struct.doublecomplex, ptr %invariant.gep4801, i64 %indvars.iv4708
  %4427 = load double, ptr %gep4802, align 8, !tbaa !9
  %4428 = getelementptr inbounds i8, ptr %gep4802, i64 8
  %4429 = load double, ptr %4428, align 8, !tbaa !12
  %4430 = fmul double %4429, %4167
  %4431 = call double @llvm.fmuladd.f64(double %4165, double %4427, double %4430)
  %4432 = fmul double %4427, %4166
  %4433 = call double @llvm.fmuladd.f64(double %4165, double %4429, double %4432)
  %gep4804 = getelementptr %struct.doublecomplex, ptr %invariant.gep4803, i64 %indvars.iv4708
  %4434 = load double, ptr %gep4804, align 8, !tbaa !9
  %4435 = getelementptr inbounds i8, ptr %gep4804, i64 8
  %4436 = load double, ptr %4435, align 8, !tbaa !12
  %4437 = fmul double %4436, %4171
  %4438 = call double @llvm.fmuladd.f64(double %4169, double %4434, double %4437)
  %4439 = fmul double %4434, %4170
  %4440 = call double @llvm.fmuladd.f64(double %4169, double %4436, double %4439)
  %gep4806 = getelementptr %struct.doublecomplex, ptr %invariant.gep4805, i64 %indvars.iv4708
  %4441 = load double, ptr %gep4806, align 8, !tbaa !9
  %4442 = getelementptr inbounds i8, ptr %gep4806, i64 8
  %4443 = load double, ptr %4442, align 8, !tbaa !12
  %4444 = fmul double %4443, %4175
  %4445 = call double @llvm.fmuladd.f64(double %4173, double %4441, double %4444)
  %4446 = fmul double %4441, %4174
  %4447 = call double @llvm.fmuladd.f64(double %4173, double %4443, double %4446)
  %gep4808 = getelementptr %struct.doublecomplex, ptr %invariant.gep4807, i64 %indvars.iv4708
  %4448 = load double, ptr %gep4808, align 8, !tbaa !9
  %4449 = getelementptr inbounds i8, ptr %gep4808, i64 8
  %4450 = load double, ptr %4449, align 8, !tbaa !12
  %4451 = fmul double %4450, %4179
  %4452 = call double @llvm.fmuladd.f64(double %4177, double %4448, double %4451)
  %4453 = fmul double %4448, %4178
  %4454 = call double @llvm.fmuladd.f64(double %4177, double %4450, double %4453)
  %4455 = load <2 x double>, ptr %gep4796, align 8, !tbaa !13
  %4456 = shufflevector <2 x double> %4455, <2 x double> poison, <2 x i32> <i32 1, i32 poison>
  %4457 = insertelement <2 x double> %4456, double %4419, i64 1
  %4458 = fmul <2 x double> %4457, %4159
  %4459 = insertelement <2 x double> %4455, double %4417, i64 1
  %4460 = call <2 x double> @llvm.fmuladd.v2f64(<2 x double> %4416, <2 x double> %4459, <2 x double> %4458)
  %4461 = fmul <2 x double> %4459, %4158
  %4462 = call <2 x double> @llvm.fmuladd.v2f64(<2 x double> %4416, <2 x double> %4457, <2 x double> %4461)
  %shift6676 = shufflevector <2 x double> %4460, <2 x double> poison, <2 x i32> <i32 1, i32 poison>
  %4463 = fadd <2 x double> %4460, %shift6676
  %4464 = extractelement <2 x double> %4463, i64 0
  %shift6677 = shufflevector <2 x double> %4462, <2 x double> poison, <2 x i32> <i32 1, i32 poison>
  %4465 = fadd <2 x double> %4462, %shift6677
  %4466 = extractelement <2 x double> %4465, i64 0
  %4467 = fadd double %4464, %4424
  %4468 = fadd double %4466, %4426
  %4469 = fadd double %4467, %4431
  %4470 = fadd double %4468, %4433
  %4471 = fadd double %4469, %4438
  %4472 = fadd double %4470, %4440
  %4473 = fadd double %4471, %4445
  %4474 = fadd double %4472, %4447
  %4475 = fadd double %4473, %4452
  %4476 = fadd double %4474, %4454
  %4477 = fneg double %4476
  %4478 = insertelement <2 x double> poison, double %4476, i64 0
  %4479 = insertelement <2 x double> %4478, double %4477, i64 1
  %4480 = fmul <2 x double> %4029, %4479
  %4481 = shufflevector <2 x double> %4480, <2 x double> poison, <2 x i32> <i32 1, i32 0>
  %4482 = insertelement <2 x double> poison, double %4475, i64 0
  %4483 = shufflevector <2 x double> %4482, <2 x double> poison, <2 x i32> zeroinitializer
  %4484 = call <2 x double> @llvm.fmuladd.v2f64(<2 x double> %4483, <2 x double> %4029, <2 x double> %4481)
  %4485 = fsub <2 x double> %4455, %4484
  store <2 x double> %4485, ptr %gep4796, align 8, !tbaa !13
  %4486 = fmul <2 x double> %4048, %4479
  %4487 = shufflevector <2 x double> %4486, <2 x double> poison, <2 x i32> <i32 1, i32 0>
  %4488 = call <2 x double> @llvm.fmuladd.v2f64(<2 x double> %4483, <2 x double> %4048, <2 x double> %4487)
  %4489 = load <2 x double>, ptr %gep4798, align 8, !tbaa !13
  %4490 = fsub <2 x double> %4489, %4488
  store <2 x double> %4490, ptr %gep4798, align 8, !tbaa !13
  %4491 = fmul <2 x double> %4067, %4479
  %4492 = shufflevector <2 x double> %4491, <2 x double> poison, <2 x i32> <i32 1, i32 0>
  %4493 = call <2 x double> @llvm.fmuladd.v2f64(<2 x double> %4483, <2 x double> %4067, <2 x double> %4492)
  %4494 = load <2 x double>, ptr %gep4800, align 8, !tbaa !13
  %4495 = fsub <2 x double> %4494, %4493
  store <2 x double> %4495, ptr %gep4800, align 8, !tbaa !13
  %4496 = fmul <2 x double> %4086, %4479
  %4497 = shufflevector <2 x double> %4496, <2 x double> poison, <2 x i32> <i32 1, i32 0>
  %4498 = call <2 x double> @llvm.fmuladd.v2f64(<2 x double> %4483, <2 x double> %4086, <2 x double> %4497)
  %4499 = load <2 x double>, ptr %gep4802, align 8, !tbaa !13
  %4500 = fsub <2 x double> %4499, %4498
  store <2 x double> %4500, ptr %gep4802, align 8, !tbaa !13
  %4501 = fmul <2 x double> %4105, %4479
  %4502 = shufflevector <2 x double> %4501, <2 x double> poison, <2 x i32> <i32 1, i32 0>
  %4503 = call <2 x double> @llvm.fmuladd.v2f64(<2 x double> %4483, <2 x double> %4105, <2 x double> %4502)
  %4504 = load <2 x double>, ptr %gep4804, align 8, !tbaa !13
  %4505 = fsub <2 x double> %4504, %4503
  store <2 x double> %4505, ptr %gep4804, align 8, !tbaa !13
  %4506 = fmul <2 x double> %4124, %4479
  %4507 = shufflevector <2 x double> %4506, <2 x double> poison, <2 x i32> <i32 1, i32 0>
  %4508 = call <2 x double> @llvm.fmuladd.v2f64(<2 x double> %4483, <2 x double> %4124, <2 x double> %4507)
  %4509 = load <2 x double>, ptr %gep4806, align 8, !tbaa !13
  %4510 = fsub <2 x double> %4509, %4508
  store <2 x double> %4510, ptr %gep4806, align 8, !tbaa !13
  %4511 = fmul <2 x double> %4143, %4479
  %4512 = shufflevector <2 x double> %4511, <2 x double> poison, <2 x i32> <i32 1, i32 0>
  %4513 = call <2 x double> @llvm.fmuladd.v2f64(<2 x double> %4483, <2 x double> %4143, <2 x double> %4512)
  %4514 = load <2 x double>, ptr %gep4808, align 8, !tbaa !13
  %4515 = fsub <2 x double> %4514, %4513
  store <2 x double> %4515, ptr %gep4808, align 8, !tbaa !13
  %indvars.iv.next4709 = add nuw nsw i64 %indvars.iv4708, 1
  %exitcond4712.not = icmp eq i64 %indvars.iv.next4709, %wide.trip.count4711
  br i1 %exitcond4712.not, label %.loopexit, label %scalar.ph5563, !llvm.loop !40

4516:                                             ; preds = %2482
  %4517 = load <2 x double>, ptr %3, align 8, !tbaa !13
  store <2 x double> %4517, ptr %12, align 16, !tbaa !13
  %4518 = call { double, double } @Cd(ptr noundef nonnull %12)
  %4519 = extractvalue { double, double } %4518, 0
  %4520 = extractvalue { double, double } %4518, 1
  %4521 = fneg double %4520
  %4522 = call ptr @_pCd(ptr noundef nonnull %10)
  %4523 = getelementptr inbounds i8, ptr %4522, i64 8
  store double %4519, ptr %4522, align 8
  store double %4521, ptr %4523, align 8
  %4524 = load double, ptr %4, align 8, !tbaa !9
  %4525 = getelementptr inbounds i8, ptr %4, i64 8
  %4526 = load double, ptr %4525, align 8, !tbaa !12
  %4527 = fneg double %4526
  %4528 = load <2 x double>, ptr %10, align 16, !tbaa !13
  %4529 = insertelement <2 x double> poison, double %4526, i64 0
  %4530 = insertelement <2 x double> %4529, double %4527, i64 1
  %4531 = fmul <2 x double> %4528, %4530
  %4532 = shufflevector <2 x double> %4531, <2 x double> poison, <2 x i32> <i32 1, i32 0>
  %4533 = insertelement <2 x double> poison, double %4524, i64 0
  %4534 = shufflevector <2 x double> %4533, <2 x double> poison, <2 x i32> zeroinitializer
  %4535 = call <2 x double> @llvm.fmuladd.v2f64(<2 x double> %4534, <2 x double> %4528, <2 x double> %4532)
  store <2 x double> %4535, ptr %9, align 16, !tbaa !13
  %4536 = getelementptr inbounds i8, ptr %3, i64 16
  %4537 = load <2 x double>, ptr %4536, align 8, !tbaa !13
  store <2 x double> %4537, ptr %13, align 16, !tbaa !13
  %4538 = call { double, double } @Cd(ptr noundef nonnull %13)
  %4539 = extractvalue { double, double } %4538, 0
  %4540 = extractvalue { double, double } %4538, 1
  %4541 = fneg double %4540
  %4542 = call ptr @_pCd(ptr noundef nonnull %10)
  %4543 = getelementptr inbounds i8, ptr %4542, i64 8
  store double %4539, ptr %4542, align 8
  store double %4541, ptr %4543, align 8
  %4544 = load double, ptr %4, align 8, !tbaa !9
  %4545 = load double, ptr %4525, align 8, !tbaa !12
  %4546 = fneg double %4545
  %4547 = load <2 x double>, ptr %10, align 16, !tbaa !13
  %4548 = insertelement <2 x double> poison, double %4545, i64 0
  %4549 = insertelement <2 x double> %4548, double %4546, i64 1
  %4550 = fmul <2 x double> %4547, %4549
  %4551 = shufflevector <2 x double> %4550, <2 x double> poison, <2 x i32> <i32 1, i32 0>
  %4552 = insertelement <2 x double> poison, double %4544, i64 0
  %4553 = shufflevector <2 x double> %4552, <2 x double> poison, <2 x i32> zeroinitializer
  %4554 = call <2 x double> @llvm.fmuladd.v2f64(<2 x double> %4553, <2 x double> %4547, <2 x double> %4551)
  store <2 x double> %4554, ptr %9, align 16, !tbaa !13
  %4555 = getelementptr inbounds i8, ptr %3, i64 32
  %4556 = load <2 x double>, ptr %4555, align 8, !tbaa !13
  store <2 x double> %4556, ptr %14, align 16, !tbaa !13
  %4557 = call { double, double } @Cd(ptr noundef nonnull %14)
  %4558 = extractvalue { double, double } %4557, 0
  %4559 = extractvalue { double, double } %4557, 1
  %4560 = fneg double %4559
  %4561 = call ptr @_pCd(ptr noundef nonnull %10)
  %4562 = getelementptr inbounds i8, ptr %4561, i64 8
  store double %4558, ptr %4561, align 8
  store double %4560, ptr %4562, align 8
  %4563 = load double, ptr %4, align 8, !tbaa !9
  %4564 = load double, ptr %4525, align 8, !tbaa !12
  %4565 = fneg double %4564
  %4566 = load <2 x double>, ptr %10, align 16, !tbaa !13
  %4567 = insertelement <2 x double> poison, double %4564, i64 0
  %4568 = insertelement <2 x double> %4567, double %4565, i64 1
  %4569 = fmul <2 x double> %4566, %4568
  %4570 = shufflevector <2 x double> %4569, <2 x double> poison, <2 x i32> <i32 1, i32 0>
  %4571 = insertelement <2 x double> poison, double %4563, i64 0
  %4572 = shufflevector <2 x double> %4571, <2 x double> poison, <2 x i32> zeroinitializer
  %4573 = call <2 x double> @llvm.fmuladd.v2f64(<2 x double> %4572, <2 x double> %4566, <2 x double> %4570)
  store <2 x double> %4573, ptr %9, align 16, !tbaa !13
  %4574 = getelementptr inbounds i8, ptr %3, i64 48
  %4575 = load <2 x double>, ptr %4574, align 8, !tbaa !13
  store <2 x double> %4575, ptr %15, align 16, !tbaa !13
  %4576 = call { double, double } @Cd(ptr noundef nonnull %15)
  %4577 = extractvalue { double, double } %4576, 0
  %4578 = extractvalue { double, double } %4576, 1
  %4579 = fneg double %4578
  %4580 = call ptr @_pCd(ptr noundef nonnull %10)
  %4581 = getelementptr inbounds i8, ptr %4580, i64 8
  store double %4577, ptr %4580, align 8
  store double %4579, ptr %4581, align 8
  %4582 = load double, ptr %4, align 8, !tbaa !9
  %4583 = load double, ptr %4525, align 8, !tbaa !12
  %4584 = fneg double %4583
  %4585 = load <2 x double>, ptr %10, align 16, !tbaa !13
  %4586 = insertelement <2 x double> poison, double %4583, i64 0
  %4587 = insertelement <2 x double> %4586, double %4584, i64 1
  %4588 = fmul <2 x double> %4585, %4587
  %4589 = shufflevector <2 x double> %4588, <2 x double> poison, <2 x i32> <i32 1, i32 0>
  %4590 = insertelement <2 x double> poison, double %4582, i64 0
  %4591 = shufflevector <2 x double> %4590, <2 x double> poison, <2 x i32> zeroinitializer
  %4592 = call <2 x double> @llvm.fmuladd.v2f64(<2 x double> %4591, <2 x double> %4585, <2 x double> %4589)
  store <2 x double> %4592, ptr %9, align 16, !tbaa !13
  %4593 = getelementptr inbounds i8, ptr %3, i64 64
  %4594 = load <2 x double>, ptr %4593, align 8, !tbaa !13
  store <2 x double> %4594, ptr %16, align 16, !tbaa !13
  %4595 = call { double, double } @Cd(ptr noundef nonnull %16)
  %4596 = extractvalue { double, double } %4595, 0
  %4597 = extractvalue { double, double } %4595, 1
  %4598 = fneg double %4597
  %4599 = call ptr @_pCd(ptr noundef nonnull %10)
  %4600 = getelementptr inbounds i8, ptr %4599, i64 8
  store double %4596, ptr %4599, align 8
  store double %4598, ptr %4600, align 8
  %4601 = load double, ptr %4, align 8, !tbaa !9
  %4602 = load double, ptr %4525, align 8, !tbaa !12
  %4603 = fneg double %4602
  %4604 = load <2 x double>, ptr %10, align 16, !tbaa !13
  %4605 = insertelement <2 x double> poison, double %4602, i64 0
  %4606 = insertelement <2 x double> %4605, double %4603, i64 1
  %4607 = fmul <2 x double> %4604, %4606
  %4608 = shufflevector <2 x double> %4607, <2 x double> poison, <2 x i32> <i32 1, i32 0>
  %4609 = insertelement <2 x double> poison, double %4601, i64 0
  %4610 = shufflevector <2 x double> %4609, <2 x double> poison, <2 x i32> zeroinitializer
  %4611 = call <2 x double> @llvm.fmuladd.v2f64(<2 x double> %4610, <2 x double> %4604, <2 x double> %4608)
  store <2 x double> %4611, ptr %9, align 16, !tbaa !13
  %4612 = getelementptr inbounds i8, ptr %3, i64 80
  %4613 = load <2 x double>, ptr %4612, align 8, !tbaa !13
  store <2 x double> %4613, ptr %17, align 16, !tbaa !13
  %4614 = call { double, double } @Cd(ptr noundef nonnull %17)
  %4615 = extractvalue { double, double } %4614, 0
  %4616 = extractvalue { double, double } %4614, 1
  %4617 = fneg double %4616
  %4618 = call ptr @_pCd(ptr noundef nonnull %10)
  %4619 = getelementptr inbounds i8, ptr %4618, i64 8
  store double %4615, ptr %4618, align 8
  store double %4617, ptr %4619, align 8
  %4620 = load double, ptr %4, align 8, !tbaa !9
  %4621 = load double, ptr %4525, align 8, !tbaa !12
  %4622 = fneg double %4621
  %4623 = load <2 x double>, ptr %10, align 16, !tbaa !13
  %4624 = insertelement <2 x double> poison, double %4621, i64 0
  %4625 = insertelement <2 x double> %4624, double %4622, i64 1
  %4626 = fmul <2 x double> %4623, %4625
  %4627 = shufflevector <2 x double> %4626, <2 x double> poison, <2 x i32> <i32 1, i32 0>
  %4628 = insertelement <2 x double> poison, double %4620, i64 0
  %4629 = shufflevector <2 x double> %4628, <2 x double> poison, <2 x i32> zeroinitializer
  %4630 = call <2 x double> @llvm.fmuladd.v2f64(<2 x double> %4629, <2 x double> %4623, <2 x double> %4627)
  store <2 x double> %4630, ptr %9, align 16, !tbaa !13
  %4631 = getelementptr inbounds i8, ptr %3, i64 96
  %4632 = load <2 x double>, ptr %4631, align 8, !tbaa !13
  store <2 x double> %4632, ptr %18, align 16, !tbaa !13
  %4633 = call { double, double } @Cd(ptr noundef nonnull %18)
  %4634 = extractvalue { double, double } %4633, 0
  %4635 = extractvalue { double, double } %4633, 1
  %4636 = fneg double %4635
  %4637 = call ptr @_pCd(ptr noundef nonnull %10)
  %4638 = getelementptr inbounds i8, ptr %4637, i64 8
  store double %4634, ptr %4637, align 8
  store double %4636, ptr %4638, align 8
  %4639 = load double, ptr %4, align 8, !tbaa !9
  %4640 = load double, ptr %4525, align 8, !tbaa !12
  %4641 = fneg double %4640
  %4642 = load <2 x double>, ptr %10, align 16, !tbaa !13
  %4643 = insertelement <2 x double> poison, double %4640, i64 0
  %4644 = insertelement <2 x double> %4643, double %4641, i64 1
  %4645 = fmul <2 x double> %4642, %4644
  %4646 = shufflevector <2 x double> %4645, <2 x double> poison, <2 x i32> <i32 1, i32 0>
  %4647 = insertelement <2 x double> poison, double %4639, i64 0
  %4648 = shufflevector <2 x double> %4647, <2 x double> poison, <2 x i32> zeroinitializer
  %4649 = call <2 x double> @llvm.fmuladd.v2f64(<2 x double> %4648, <2 x double> %4642, <2 x double> %4646)
  store <2 x double> %4649, ptr %9, align 16, !tbaa !13
  %4650 = getelementptr inbounds i8, ptr %3, i64 112
  %4651 = load <2 x double>, ptr %4650, align 8, !tbaa !13
  store <2 x double> %4651, ptr %19, align 16, !tbaa !13
  %4652 = call { double, double } @Cd(ptr noundef nonnull %19)
  %4653 = extractvalue { double, double } %4652, 0
  %4654 = extractvalue { double, double } %4652, 1
  %4655 = fneg double %4654
  %4656 = call ptr @_pCd(ptr noundef nonnull %10)
  %4657 = getelementptr inbounds i8, ptr %4656, i64 8
  store double %4653, ptr %4656, align 8
  store double %4655, ptr %4657, align 8
  %4658 = load double, ptr %4, align 8, !tbaa !9
  %4659 = load double, ptr %4525, align 8, !tbaa !12
  %4660 = fneg double %4659
  %4661 = load <2 x double>, ptr %10, align 16, !tbaa !13
  %4662 = insertelement <2 x double> poison, double %4659, i64 0
  %4663 = insertelement <2 x double> %4662, double %4660, i64 1
  %4664 = fmul <2 x double> %4661, %4663
  %4665 = shufflevector <2 x double> %4664, <2 x double> poison, <2 x i32> <i32 1, i32 0>
  %4666 = insertelement <2 x double> poison, double %4658, i64 0
  %4667 = shufflevector <2 x double> %4666, <2 x double> poison, <2 x i32> zeroinitializer
  %4668 = call <2 x double> @llvm.fmuladd.v2f64(<2 x double> %4667, <2 x double> %4661, <2 x double> %4665)
  %4669 = load i32, ptr %1, align 4, !tbaa !5
  %.not42844463 = icmp slt i32 %4669, 1
  br i1 %.not42844463, label %.loopexit, label %.lr.ph4465

.lr.ph4465:                                       ; preds = %4516
  %4670 = getelementptr inbounds i8, ptr %19, i64 8
  %4671 = getelementptr inbounds i8, ptr %18, i64 8
  %4672 = getelementptr inbounds i8, ptr %17, i64 8
  %4673 = getelementptr inbounds i8, ptr %16, i64 8
  %4674 = getelementptr inbounds i8, ptr %15, i64 8
  %4675 = getelementptr inbounds i8, ptr %14, i64 8
  %4676 = getelementptr inbounds i8, ptr %13, i64 8
  %4677 = getelementptr inbounds i8, ptr %12, i64 8
  %4678 = load double, ptr %12, align 16, !tbaa !9
  %4679 = load double, ptr %4677, align 8, !tbaa !12
  %4680 = shl i32 %22, 1
  %4681 = load double, ptr %13, align 16, !tbaa !9
  %4682 = load double, ptr %4676, align 8, !tbaa !12
  %4683 = insertelement <2 x double> poison, double %4679, i64 0
  %4684 = insertelement <2 x double> %4683, double %4682, i64 1
  %4685 = fneg <2 x double> %4684
  %4686 = mul i32 %22, 3
  %4687 = load double, ptr %14, align 16, !tbaa !9
  %4688 = load double, ptr %4675, align 8, !tbaa !12
  %4689 = fneg double %4688
  %4690 = shl i32 %22, 2
  %4691 = load double, ptr %15, align 16, !tbaa !9
  %4692 = load double, ptr %4674, align 8, !tbaa !12
  %4693 = fneg double %4692
  %4694 = mul i32 %22, 5
  %4695 = load double, ptr %16, align 16, !tbaa !9
  %4696 = load double, ptr %4673, align 8, !tbaa !12
  %4697 = fneg double %4696
  %4698 = mul i32 %22, 6
  %4699 = load double, ptr %17, align 16, !tbaa !9
  %4700 = load double, ptr %4672, align 8, !tbaa !12
  %4701 = fneg double %4700
  %4702 = mul i32 %22, 7
  %4703 = load double, ptr %18, align 16, !tbaa !9
  %4704 = load double, ptr %4671, align 8, !tbaa !12
  %4705 = fneg double %4704
  %4706 = shl i32 %22, 3
  %4707 = load double, ptr %19, align 16, !tbaa !9
  %4708 = load double, ptr %4670, align 8, !tbaa !12
  %4709 = fneg double %4708
  %4710 = sext i32 %22 to i64
  %4711 = sext i32 %4680 to i64
  %4712 = sext i32 %4686 to i64
  %4713 = sext i32 %4690 to i64
  %4714 = sext i32 %4694 to i64
  %4715 = sext i32 %4698 to i64
  %4716 = sext i32 %4702 to i64
  %4717 = sext i32 %4706 to i64
  %4718 = add nuw i32 %4669, 1
  %wide.trip.count4706 = zext i32 %4718 to i64
  %invariant.gep4779 = getelementptr %struct.doublecomplex, ptr %24, i64 %4710
  %invariant.gep4781 = getelementptr %struct.doublecomplex, ptr %24, i64 %4711
  %invariant.gep4783 = getelementptr %struct.doublecomplex, ptr %24, i64 %4712
  %invariant.gep4785 = getelementptr %struct.doublecomplex, ptr %24, i64 %4713
  %invariant.gep4787 = getelementptr %struct.doublecomplex, ptr %24, i64 %4714
  %invariant.gep4789 = getelementptr %struct.doublecomplex, ptr %24, i64 %4715
  %invariant.gep4791 = getelementptr %struct.doublecomplex, ptr %24, i64 %4716
  %invariant.gep4793 = getelementptr %struct.doublecomplex, ptr %24, i64 %4717
  %4719 = zext nneg i32 %4669 to i64
  %min.iters.check = icmp ult i32 %4669, 16
  br i1 %min.iters.check, label %scalar.ph.preheader, label %vector.scevcheck

vector.scevcheck:                                 ; preds = %.lr.ph4465
  %4720 = add nsw i64 %wide.trip.count4706, -2
  %4721 = shl nsw i64 %4710, 4
  %4722 = shl nsw i64 %23, 4
  %4723 = getelementptr i8, ptr %5, i64 %4721
  %4724 = getelementptr i8, ptr %4723, i64 %4722
  %mul.result = shl nsw i64 %4720, 4
  %4725 = shl nsw i64 %4711, 4
  %4726 = getelementptr i8, ptr %5, i64 %4725
  %4727 = getelementptr i8, ptr %4726, i64 %4722
  %mul.result4872 = shl nsw i64 %4720, 4
  %mul.overflow4873 = icmp ugt i64 %4720, 1152921504606846975
  %4728 = shl nsw i64 %4712, 4
  %4729 = getelementptr i8, ptr %5, i64 %4728
  %4730 = getelementptr i8, ptr %4729, i64 %4722
  %mul.result4876 = shl nsw i64 %4720, 4
  %4731 = shl nsw i64 %4713, 4
  %4732 = getelementptr i8, ptr %5, i64 %4731
  %4733 = getelementptr i8, ptr %4732, i64 %4722
  %mul.result4880 = shl nsw i64 %4720, 4
  %4734 = shl nsw i64 %4714, 4
  %4735 = getelementptr i8, ptr %5, i64 %4734
  %4736 = getelementptr i8, ptr %4735, i64 %4722
  %mul.result4884 = shl nsw i64 %4720, 4
  %4737 = shl nsw i64 %4715, 4
  %4738 = getelementptr i8, ptr %5, i64 %4737
  %4739 = getelementptr i8, ptr %4738, i64 %4722
  %mul.result4888 = shl nsw i64 %4720, 4
  %4740 = shl nsw i64 %4716, 4
  %4741 = getelementptr i8, ptr %5, i64 %4740
  %4742 = getelementptr i8, ptr %4741, i64 %4722
  %mul.result4892 = shl nsw i64 %4720, 4
  %4743 = shl nsw i64 %4717, 4
  %4744 = getelementptr i8, ptr %5, i64 %4743
  %4745 = getelementptr i8, ptr %4744, i64 %4722
  %mul.result4896 = shl nsw i64 %4720, 4
  %4746 = getelementptr i8, ptr %5, i64 %4721
  %4747 = getelementptr i8, ptr %4746, i64 %4722
  %mul.result4900 = shl nsw i64 %4720, 4
  %4748 = getelementptr i8, ptr %5, i64 %4725
  %4749 = getelementptr i8, ptr %4748, i64 %4722
  %mul.result4904 = shl nsw i64 %4720, 4
  %4750 = getelementptr i8, ptr %5, i64 %4728
  %4751 = getelementptr i8, ptr %4750, i64 %4722
  %mul.result4908 = shl nsw i64 %4720, 4
  %4752 = getelementptr i8, ptr %5, i64 %4731
  %4753 = getelementptr i8, ptr %4752, i64 %4722
  %mul.result4912 = shl nsw i64 %4720, 4
  %4754 = getelementptr i8, ptr %5, i64 %4734
  %4755 = getelementptr i8, ptr %4754, i64 %4722
  %mul.result4916 = shl nsw i64 %4720, 4
  %4756 = getelementptr i8, ptr %5, i64 %4737
  %4757 = getelementptr i8, ptr %4756, i64 %4722
  %mul.result4920 = shl nsw i64 %4720, 4
  %4758 = getelementptr i8, ptr %5, i64 %4740
  %4759 = getelementptr i8, ptr %4758, i64 %4722
  %mul.result4924 = shl nsw i64 %4720, 4
  %4760 = getelementptr i8, ptr %5, i64 %4743
  %4761 = getelementptr i8, ptr %4760, i64 %4722
  %mul.result4928 = shl nsw i64 %4720, 4
  %4762 = insertelement <16 x ptr> poison, ptr %4727, i64 0
  %4763 = insertelement <16 x ptr> %4762, ptr %4724, i64 1
  %4764 = insertelement <16 x ptr> %4763, ptr %4730, i64 2
  %4765 = insertelement <16 x ptr> %4764, ptr %4733, i64 3
  %4766 = insertelement <16 x ptr> %4765, ptr %4736, i64 4
  %4767 = insertelement <16 x ptr> %4766, ptr %4739, i64 5
  %4768 = insertelement <16 x ptr> %4767, ptr %4742, i64 6
  %4769 = insertelement <16 x ptr> %4768, ptr %4745, i64 7
  %4770 = insertelement <16 x ptr> %4769, ptr %4747, i64 8
  %4771 = insertelement <16 x ptr> %4770, ptr %4749, i64 9
  %4772 = insertelement <16 x ptr> %4771, ptr %4751, i64 10
  %4773 = insertelement <16 x ptr> %4772, ptr %4753, i64 11
  %4774 = insertelement <16 x ptr> %4773, ptr %4755, i64 12
  %4775 = insertelement <16 x ptr> %4774, ptr %4757, i64 13
  %4776 = insertelement <16 x ptr> %4775, ptr %4759, i64 14
  %4777 = insertelement <16 x ptr> %4776, ptr %4761, i64 15
  %4778 = getelementptr i8, <16 x ptr> %4777, <16 x i64> <i64 16, i64 16, i64 16, i64 16, i64 16, i64 16, i64 16, i64 16, i64 24, i64 24, i64 24, i64 24, i64 24, i64 24, i64 24, i64 24>
  %scevgep = getelementptr i8, ptr %4724, i64 16
  %4779 = getelementptr i8, ptr %scevgep, i64 %mul.result
  %scevgep4870 = getelementptr i8, ptr %4727, i64 16
  %4780 = getelementptr i8, ptr %scevgep4870, i64 %mul.result4872
  %scevgep4874 = getelementptr i8, ptr %4730, i64 16
  %4781 = getelementptr i8, ptr %scevgep4874, i64 %mul.result4876
  %scevgep4878 = getelementptr i8, ptr %4733, i64 16
  %4782 = getelementptr i8, ptr %scevgep4878, i64 %mul.result4880
  %scevgep4882 = getelementptr i8, ptr %4736, i64 16
  %4783 = getelementptr i8, ptr %scevgep4882, i64 %mul.result4884
  %scevgep4886 = getelementptr i8, ptr %4739, i64 16
  %4784 = getelementptr i8, ptr %scevgep4886, i64 %mul.result4888
  %scevgep4890 = getelementptr i8, ptr %4742, i64 16
  %4785 = getelementptr i8, ptr %scevgep4890, i64 %mul.result4892
  %scevgep4894 = getelementptr i8, ptr %4745, i64 16
  %4786 = getelementptr i8, ptr %scevgep4894, i64 %mul.result4896
  %scevgep4898 = getelementptr i8, ptr %4747, i64 24
  %4787 = getelementptr i8, ptr %scevgep4898, i64 %mul.result4900
  %scevgep4902 = getelementptr i8, ptr %4749, i64 24
  %4788 = getelementptr i8, ptr %scevgep4902, i64 %mul.result4904
  %scevgep4906 = getelementptr i8, ptr %4751, i64 24
  %4789 = getelementptr i8, ptr %scevgep4906, i64 %mul.result4908
  %scevgep4910 = getelementptr i8, ptr %4753, i64 24
  %4790 = getelementptr i8, ptr %scevgep4910, i64 %mul.result4912
  %scevgep4914 = getelementptr i8, ptr %4755, i64 24
  %4791 = getelementptr i8, ptr %scevgep4914, i64 %mul.result4916
  %scevgep4918 = getelementptr i8, ptr %4757, i64 24
  %4792 = getelementptr i8, ptr %scevgep4918, i64 %mul.result4920
  %scevgep4922 = getelementptr i8, ptr %4759, i64 24
  %4793 = getelementptr i8, ptr %scevgep4922, i64 %mul.result4924
  %scevgep4926 = getelementptr i8, ptr %4761, i64 24
  %4794 = getelementptr i8, ptr %scevgep4926, i64 %mul.result4928
  %4795 = insertelement <16 x ptr> poison, ptr %4780, i64 0
  %4796 = insertelement <16 x ptr> %4795, ptr %4779, i64 1
  %4797 = insertelement <16 x ptr> %4796, ptr %4781, i64 2
  %4798 = insertelement <16 x ptr> %4797, ptr %4782, i64 3
  %4799 = insertelement <16 x ptr> %4798, ptr %4783, i64 4
  %4800 = insertelement <16 x ptr> %4799, ptr %4784, i64 5
  %4801 = insertelement <16 x ptr> %4800, ptr %4785, i64 6
  %4802 = insertelement <16 x ptr> %4801, ptr %4786, i64 7
  %4803 = insertelement <16 x ptr> %4802, ptr %4787, i64 8
  %4804 = insertelement <16 x ptr> %4803, ptr %4788, i64 9
  %4805 = insertelement <16 x ptr> %4804, ptr %4789, i64 10
  %4806 = insertelement <16 x ptr> %4805, ptr %4790, i64 11
  %4807 = insertelement <16 x ptr> %4806, ptr %4791, i64 12
  %4808 = insertelement <16 x ptr> %4807, ptr %4792, i64 13
  %4809 = insertelement <16 x ptr> %4808, ptr %4793, i64 14
  %4810 = insertelement <16 x ptr> %4809, ptr %4794, i64 15
  %4811 = icmp ult <16 x ptr> %4810, %4778
  %4812 = bitcast <16 x i1> %4811 to i16
  %4813 = icmp ne i16 %4812, 0
  %op.rdx6647 = or i1 %4813, %mul.overflow4873
  br i1 %op.rdx6647, label %scalar.ph.preheader, label %vector.memcheck

vector.memcheck:                                  ; preds = %vector.scevcheck
  %4814 = shl nsw i64 %4710, 4
  %4815 = shl nsw i64 %23, 4
  %4816 = add nsw i64 %4814, %4815
  %4817 = getelementptr i8, ptr %5, i64 %4816
  %scevgep4930 = getelementptr i8, ptr %4817, i64 16
  %4818 = shl nuw nsw i64 %wide.trip.count4706, 4
  %4819 = getelementptr i8, ptr %5, i64 %4816
  %4820 = getelementptr i8, ptr %4819, i64 %4818
  %scevgep4931 = getelementptr i8, ptr %4820, i64 -8
  %4821 = shl nsw i64 %4711, 4
  %4822 = add nsw i64 %4821, %4815
  %4823 = getelementptr i8, ptr %5, i64 %4822
  %scevgep4932 = getelementptr i8, ptr %4823, i64 16
  %4824 = getelementptr i8, ptr %5, i64 %4822
  %4825 = getelementptr i8, ptr %4824, i64 %4818
  %scevgep4933 = getelementptr i8, ptr %4825, i64 -8
  %4826 = shl nsw i64 %4712, 4
  %4827 = add nsw i64 %4826, %4815
  %4828 = getelementptr i8, ptr %5, i64 %4827
  %scevgep4934 = getelementptr i8, ptr %4828, i64 16
  %4829 = getelementptr i8, ptr %5, i64 %4827
  %4830 = getelementptr i8, ptr %4829, i64 %4818
  %scevgep4935 = getelementptr i8, ptr %4830, i64 -8
  %4831 = shl nsw i64 %4713, 4
  %4832 = add nsw i64 %4831, %4815
  %4833 = getelementptr i8, ptr %5, i64 %4832
  %scevgep4936 = getelementptr i8, ptr %4833, i64 16
  %4834 = getelementptr i8, ptr %5, i64 %4832
  %4835 = getelementptr i8, ptr %4834, i64 %4818
  %scevgep4937 = getelementptr i8, ptr %4835, i64 -8
  %4836 = shl nsw i64 %4714, 4
  %4837 = add nsw i64 %4836, %4815
  %4838 = getelementptr i8, ptr %5, i64 %4837
  %scevgep4938 = getelementptr i8, ptr %4838, i64 16
  %4839 = getelementptr i8, ptr %5, i64 %4837
  %4840 = getelementptr i8, ptr %4839, i64 %4818
  %scevgep4939 = getelementptr i8, ptr %4840, i64 -8
  %4841 = shl nsw i64 %4715, 4
  %4842 = add nsw i64 %4841, %4815
  %4843 = getelementptr i8, ptr %5, i64 %4842
  %scevgep4940 = getelementptr i8, ptr %4843, i64 16
  %4844 = getelementptr i8, ptr %5, i64 %4842
  %4845 = getelementptr i8, ptr %4844, i64 %4818
  %scevgep4941 = getelementptr i8, ptr %4845, i64 -8
  %4846 = shl nsw i64 %4716, 4
  %4847 = add nsw i64 %4846, %4815
  %4848 = getelementptr i8, ptr %5, i64 %4847
  %scevgep4942 = getelementptr i8, ptr %4848, i64 16
  %4849 = getelementptr i8, ptr %5, i64 %4847
  %4850 = getelementptr i8, ptr %4849, i64 %4818
  %scevgep4943 = getelementptr i8, ptr %4850, i64 -8
  %4851 = shl nsw i64 %4717, 4
  %4852 = add nsw i64 %4851, %4815
  %4853 = getelementptr i8, ptr %5, i64 %4852
  %scevgep4944 = getelementptr i8, ptr %4853, i64 16
  %4854 = getelementptr i8, ptr %5, i64 %4852
  %4855 = getelementptr i8, ptr %4854, i64 %4818
  %scevgep4945 = getelementptr i8, ptr %4855, i64 -8
  %4856 = add nsw i64 %4814, %4815
  %4857 = getelementptr i8, ptr %5, i64 %4856
  %scevgep4946 = getelementptr i8, ptr %4857, i64 24
  %4858 = getelementptr i8, ptr %5, i64 %4856
  %scevgep4947 = getelementptr i8, ptr %4858, i64 %4818
  %4859 = add nsw i64 %4821, %4815
  %4860 = getelementptr i8, ptr %5, i64 %4859
  %scevgep4948 = getelementptr i8, ptr %4860, i64 24
  %4861 = getelementptr i8, ptr %5, i64 %4859
  %scevgep4949 = getelementptr i8, ptr %4861, i64 %4818
  %4862 = add nsw i64 %4826, %4815
  %4863 = getelementptr i8, ptr %5, i64 %4862
  %scevgep4950 = getelementptr i8, ptr %4863, i64 24
  %4864 = getelementptr i8, ptr %5, i64 %4862
  %scevgep4951 = getelementptr i8, ptr %4864, i64 %4818
  %4865 = add nsw i64 %4831, %4815
  %4866 = getelementptr i8, ptr %5, i64 %4865
  %scevgep4952 = getelementptr i8, ptr %4866, i64 24
  %4867 = getelementptr i8, ptr %5, i64 %4865
  %scevgep4953 = getelementptr i8, ptr %4867, i64 %4818
  %4868 = add nsw i64 %4836, %4815
  %4869 = getelementptr i8, ptr %5, i64 %4868
  %scevgep4954 = getelementptr i8, ptr %4869, i64 24
  %4870 = getelementptr i8, ptr %5, i64 %4868
  %scevgep4955 = getelementptr i8, ptr %4870, i64 %4818
  %4871 = add nsw i64 %4841, %4815
  %4872 = getelementptr i8, ptr %5, i64 %4871
  %scevgep4956 = getelementptr i8, ptr %4872, i64 24
  %4873 = getelementptr i8, ptr %5, i64 %4871
  %scevgep4957 = getelementptr i8, ptr %4873, i64 %4818
  %4874 = add nsw i64 %4846, %4815
  %4875 = getelementptr i8, ptr %5, i64 %4874
  %scevgep4958 = getelementptr i8, ptr %4875, i64 24
  %4876 = getelementptr i8, ptr %5, i64 %4874
  %scevgep4959 = getelementptr i8, ptr %4876, i64 %4818
  %4877 = add nsw i64 %4851, %4815
  %4878 = getelementptr i8, ptr %5, i64 %4877
  %scevgep4960 = getelementptr i8, ptr %4878, i64 24
  %4879 = getelementptr i8, ptr %5, i64 %4877
  %scevgep4961 = getelementptr i8, ptr %4879, i64 %4818
  %bound0 = icmp ult ptr %scevgep4930, %scevgep4933
  %bound1 = icmp ult ptr %scevgep4932, %scevgep4931
  %found.conflict = and i1 %bound0, %bound1
  %bound04962 = icmp ult ptr %scevgep4930, %scevgep4935
  %bound14963 = icmp ult ptr %scevgep4934, %scevgep4931
  %found.conflict4964 = and i1 %bound04962, %bound14963
  %conflict.rdx = or i1 %found.conflict, %found.conflict4964
  %bound04965 = icmp ult ptr %scevgep4930, %scevgep4937
  %bound14966 = icmp ult ptr %scevgep4936, %scevgep4931
  %found.conflict4967 = and i1 %bound04965, %bound14966
  %conflict.rdx4968 = or i1 %conflict.rdx, %found.conflict4967
  %bound04969 = icmp ult ptr %scevgep4930, %scevgep4939
  %bound14970 = icmp ult ptr %scevgep4938, %scevgep4931
  %found.conflict4971 = and i1 %bound04969, %bound14970
  %conflict.rdx4972 = or i1 %conflict.rdx4968, %found.conflict4971
  %bound04973 = icmp ult ptr %scevgep4930, %scevgep4941
  %bound14974 = icmp ult ptr %scevgep4940, %scevgep4931
  %found.conflict4975 = and i1 %bound04973, %bound14974
  %conflict.rdx4976 = or i1 %conflict.rdx4972, %found.conflict4975
  %bound04977 = icmp ult ptr %scevgep4930, %scevgep4943
  %bound14978 = icmp ult ptr %scevgep4942, %scevgep4931
  %found.conflict4979 = and i1 %bound04977, %bound14978
  %conflict.rdx4980 = or i1 %conflict.rdx4976, %found.conflict4979
  %bound04981 = icmp ult ptr %scevgep4930, %scevgep4945
  %bound14982 = icmp ult ptr %scevgep4944, %scevgep4931
  %found.conflict4983 = and i1 %bound04981, %bound14982
  %conflict.rdx4984 = or i1 %conflict.rdx4980, %found.conflict4983
  %bound04985 = icmp ult ptr %scevgep4932, %scevgep4935
  %bound14986 = icmp ult ptr %scevgep4934, %scevgep4933
  %found.conflict4987 = and i1 %bound04985, %bound14986
  %conflict.rdx4988 = or i1 %conflict.rdx4984, %found.conflict4987
  %bound04989 = icmp ult ptr %scevgep4932, %scevgep4937
  %bound14990 = icmp ult ptr %scevgep4936, %scevgep4933
  %found.conflict4991 = and i1 %bound04989, %bound14990
  %conflict.rdx4992 = or i1 %conflict.rdx4988, %found.conflict4991
  %bound04993 = icmp ult ptr %scevgep4932, %scevgep4939
  %bound14994 = icmp ult ptr %scevgep4938, %scevgep4933
  %found.conflict4995 = and i1 %bound04993, %bound14994
  %conflict.rdx4996 = or i1 %conflict.rdx4992, %found.conflict4995
  %bound04997 = icmp ult ptr %scevgep4932, %scevgep4941
  %bound14998 = icmp ult ptr %scevgep4940, %scevgep4933
  %found.conflict4999 = and i1 %bound04997, %bound14998
  %conflict.rdx5000 = or i1 %conflict.rdx4996, %found.conflict4999
  %bound05001 = icmp ult ptr %scevgep4932, %scevgep4943
  %bound15002 = icmp ult ptr %scevgep4942, %scevgep4933
  %found.conflict5003 = and i1 %bound05001, %bound15002
  %conflict.rdx5004 = or i1 %conflict.rdx5000, %found.conflict5003
  %bound05005 = icmp ult ptr %scevgep4932, %scevgep4945
  %bound15006 = icmp ult ptr %scevgep4944, %scevgep4933
  %found.conflict5007 = and i1 %bound05005, %bound15006
  %conflict.rdx5008 = or i1 %conflict.rdx5004, %found.conflict5007
  %bound05009 = icmp ult ptr %scevgep4934, %scevgep4937
  %bound15010 = icmp ult ptr %scevgep4936, %scevgep4935
  %found.conflict5011 = and i1 %bound05009, %bound15010
  %conflict.rdx5012 = or i1 %conflict.rdx5008, %found.conflict5011
  %bound05013 = icmp ult ptr %scevgep4934, %scevgep4939
  %bound15014 = icmp ult ptr %scevgep4938, %scevgep4935
  %found.conflict5015 = and i1 %bound05013, %bound15014
  %conflict.rdx5016 = or i1 %conflict.rdx5012, %found.conflict5015
  %bound05017 = icmp ult ptr %scevgep4934, %scevgep4941
  %bound15018 = icmp ult ptr %scevgep4940, %scevgep4935
  %found.conflict5019 = and i1 %bound05017, %bound15018
  %conflict.rdx5020 = or i1 %conflict.rdx5016, %found.conflict5019
  %bound05021 = icmp ult ptr %scevgep4934, %scevgep4943
  %bound15022 = icmp ult ptr %scevgep4942, %scevgep4935
  %found.conflict5023 = and i1 %bound05021, %bound15022
  %conflict.rdx5024 = or i1 %conflict.rdx5020, %found.conflict5023
  %bound05025 = icmp ult ptr %scevgep4934, %scevgep4945
  %bound15026 = icmp ult ptr %scevgep4944, %scevgep4935
  %found.conflict5027 = and i1 %bound05025, %bound15026
  %conflict.rdx5028 = or i1 %conflict.rdx5024, %found.conflict5027
  %bound05029 = icmp ult ptr %scevgep4936, %scevgep4939
  %bound15030 = icmp ult ptr %scevgep4938, %scevgep4937
  %found.conflict5031 = and i1 %bound05029, %bound15030
  %conflict.rdx5032 = or i1 %conflict.rdx5028, %found.conflict5031
  %bound05033 = icmp ult ptr %scevgep4936, %scevgep4941
  %bound15034 = icmp ult ptr %scevgep4940, %scevgep4937
  %found.conflict5035 = and i1 %bound05033, %bound15034
  %conflict.rdx5036 = or i1 %conflict.rdx5032, %found.conflict5035
  %bound05037 = icmp ult ptr %scevgep4936, %scevgep4943
  %bound15038 = icmp ult ptr %scevgep4942, %scevgep4937
  %found.conflict5039 = and i1 %bound05037, %bound15038
  %conflict.rdx5040 = or i1 %conflict.rdx5036, %found.conflict5039
  %bound05041 = icmp ult ptr %scevgep4936, %scevgep4945
  %bound15042 = icmp ult ptr %scevgep4944, %scevgep4937
  %found.conflict5043 = and i1 %bound05041, %bound15042
  %conflict.rdx5044 = or i1 %conflict.rdx5040, %found.conflict5043
  %bound05045 = icmp ult ptr %scevgep4938, %scevgep4941
  %bound15046 = icmp ult ptr %scevgep4940, %scevgep4939
  %found.conflict5047 = and i1 %bound05045, %bound15046
  %conflict.rdx5048 = or i1 %conflict.rdx5044, %found.conflict5047
  %bound05049 = icmp ult ptr %scevgep4938, %scevgep4943
  %bound15050 = icmp ult ptr %scevgep4942, %scevgep4939
  %found.conflict5051 = and i1 %bound05049, %bound15050
  %conflict.rdx5052 = or i1 %conflict.rdx5048, %found.conflict5051
  %bound05053 = icmp ult ptr %scevgep4938, %scevgep4945
  %bound15054 = icmp ult ptr %scevgep4944, %scevgep4939
  %found.conflict5055 = and i1 %bound05053, %bound15054
  %conflict.rdx5056 = or i1 %conflict.rdx5052, %found.conflict5055
  %bound05057 = icmp ult ptr %scevgep4940, %scevgep4943
  %bound15058 = icmp ult ptr %scevgep4942, %scevgep4941
  %found.conflict5059 = and i1 %bound05057, %bound15058
  %conflict.rdx5060 = or i1 %conflict.rdx5056, %found.conflict5059
  %bound05061 = icmp ult ptr %scevgep4940, %scevgep4945
  %bound15062 = icmp ult ptr %scevgep4944, %scevgep4941
  %found.conflict5063 = and i1 %bound05061, %bound15062
  %conflict.rdx5064 = or i1 %conflict.rdx5060, %found.conflict5063
  %bound05065 = icmp ult ptr %scevgep4942, %scevgep4945
  %bound15066 = icmp ult ptr %scevgep4944, %scevgep4943
  %found.conflict5067 = and i1 %bound05065, %bound15066
  %conflict.rdx5068 = or i1 %conflict.rdx5064, %found.conflict5067
  %bound05069 = icmp ult ptr %scevgep4946, %scevgep4949
  %bound15070 = icmp ult ptr %scevgep4948, %scevgep4947
  %found.conflict5071 = and i1 %bound05069, %bound15070
  %conflict.rdx5072 = or i1 %conflict.rdx5068, %found.conflict5071
  %bound05073 = icmp ult ptr %scevgep4946, %scevgep4951
  %bound15074 = icmp ult ptr %scevgep4950, %scevgep4947
  %found.conflict5075 = and i1 %bound05073, %bound15074
  %conflict.rdx5076 = or i1 %conflict.rdx5072, %found.conflict5075
  %bound05077 = icmp ult ptr %scevgep4946, %scevgep4953
  %bound15078 = icmp ult ptr %scevgep4952, %scevgep4947
  %found.conflict5079 = and i1 %bound05077, %bound15078
  %conflict.rdx5080 = or i1 %conflict.rdx5076, %found.conflict5079
  %bound05081 = icmp ult ptr %scevgep4946, %scevgep4955
  %bound15082 = icmp ult ptr %scevgep4954, %scevgep4947
  %found.conflict5083 = and i1 %bound05081, %bound15082
  %conflict.rdx5084 = or i1 %conflict.rdx5080, %found.conflict5083
  %bound05085 = icmp ult ptr %scevgep4946, %scevgep4957
  %bound15086 = icmp ult ptr %scevgep4956, %scevgep4947
  %found.conflict5087 = and i1 %bound05085, %bound15086
  %conflict.rdx5088 = or i1 %conflict.rdx5084, %found.conflict5087
  %bound05089 = icmp ult ptr %scevgep4946, %scevgep4959
  %bound15090 = icmp ult ptr %scevgep4958, %scevgep4947
  %found.conflict5091 = and i1 %bound05089, %bound15090
  %conflict.rdx5092 = or i1 %conflict.rdx5088, %found.conflict5091
  %bound05093 = icmp ult ptr %scevgep4946, %scevgep4961
  %bound15094 = icmp ult ptr %scevgep4960, %scevgep4947
  %found.conflict5095 = and i1 %bound05093, %bound15094
  %conflict.rdx5096 = or i1 %conflict.rdx5092, %found.conflict5095
  %bound05097 = icmp ult ptr %scevgep4948, %scevgep4951
  %bound15098 = icmp ult ptr %scevgep4950, %scevgep4949
  %found.conflict5099 = and i1 %bound05097, %bound15098
  %conflict.rdx5100 = or i1 %conflict.rdx5096, %found.conflict5099
  %bound05101 = icmp ult ptr %scevgep4948, %scevgep4953
  %bound15102 = icmp ult ptr %scevgep4952, %scevgep4949
  %found.conflict5103 = and i1 %bound05101, %bound15102
  %conflict.rdx5104 = or i1 %conflict.rdx5100, %found.conflict5103
  %bound05105 = icmp ult ptr %scevgep4948, %scevgep4955
  %bound15106 = icmp ult ptr %scevgep4954, %scevgep4949
  %found.conflict5107 = and i1 %bound05105, %bound15106
  %conflict.rdx5108 = or i1 %conflict.rdx5104, %found.conflict5107
  %bound05109 = icmp ult ptr %scevgep4948, %scevgep4957
  %bound15110 = icmp ult ptr %scevgep4956, %scevgep4949
  %found.conflict5111 = and i1 %bound05109, %bound15110
  %conflict.rdx5112 = or i1 %conflict.rdx5108, %found.conflict5111
  %bound05113 = icmp ult ptr %scevgep4948, %scevgep4959
  %bound15114 = icmp ult ptr %scevgep4958, %scevgep4949
  %found.conflict5115 = and i1 %bound05113, %bound15114
  %conflict.rdx5116 = or i1 %conflict.rdx5112, %found.conflict5115
  %bound05117 = icmp ult ptr %scevgep4948, %scevgep4961
  %bound15118 = icmp ult ptr %scevgep4960, %scevgep4949
  %found.conflict5119 = and i1 %bound05117, %bound15118
  %conflict.rdx5120 = or i1 %conflict.rdx5116, %found.conflict5119
  %bound05121 = icmp ult ptr %scevgep4950, %scevgep4953
  %bound15122 = icmp ult ptr %scevgep4952, %scevgep4951
  %found.conflict5123 = and i1 %bound05121, %bound15122
  %conflict.rdx5124 = or i1 %conflict.rdx5120, %found.conflict5123
  %bound05125 = icmp ult ptr %scevgep4950, %scevgep4955
  %bound15126 = icmp ult ptr %scevgep4954, %scevgep4951
  %found.conflict5127 = and i1 %bound05125, %bound15126
  %conflict.rdx5128 = or i1 %conflict.rdx5124, %found.conflict5127
  %bound05129 = icmp ult ptr %scevgep4950, %scevgep4957
  %bound15130 = icmp ult ptr %scevgep4956, %scevgep4951
  %found.conflict5131 = and i1 %bound05129, %bound15130
  %conflict.rdx5132 = or i1 %conflict.rdx5128, %found.conflict5131
  %bound05133 = icmp ult ptr %scevgep4950, %scevgep4959
  %bound15134 = icmp ult ptr %scevgep4958, %scevgep4951
  %found.conflict5135 = and i1 %bound05133, %bound15134
  %conflict.rdx5136 = or i1 %conflict.rdx5132, %found.conflict5135
  %bound05137 = icmp ult ptr %scevgep4950, %scevgep4961
  %bound15138 = icmp ult ptr %scevgep4960, %scevgep4951
  %found.conflict5139 = and i1 %bound05137, %bound15138
  %conflict.rdx5140 = or i1 %conflict.rdx5136, %found.conflict5139
  %bound05141 = icmp ult ptr %scevgep4952, %scevgep4955
  %bound15142 = icmp ult ptr %scevgep4954, %scevgep4953
  %found.conflict5143 = and i1 %bound05141, %bound15142
  %conflict.rdx5144 = or i1 %conflict.rdx5140, %found.conflict5143
  %bound05145 = icmp ult ptr %scevgep4952, %scevgep4957
  %bound15146 = icmp ult ptr %scevgep4956, %scevgep4953
  %found.conflict5147 = and i1 %bound05145, %bound15146
  %conflict.rdx5148 = or i1 %conflict.rdx5144, %found.conflict5147
  %bound05149 = icmp ult ptr %scevgep4952, %scevgep4959
  %bound15150 = icmp ult ptr %scevgep4958, %scevgep4953
  %found.conflict5151 = and i1 %bound05149, %bound15150
  %conflict.rdx5152 = or i1 %conflict.rdx5148, %found.conflict5151
  %bound05153 = icmp ult ptr %scevgep4952, %scevgep4961
  %bound15154 = icmp ult ptr %scevgep4960, %scevgep4953
  %found.conflict5155 = and i1 %bound05153, %bound15154
  %conflict.rdx5156 = or i1 %conflict.rdx5152, %found.conflict5155
  %bound05157 = icmp ult ptr %scevgep4954, %scevgep4957
  %bound15158 = icmp ult ptr %scevgep4956, %scevgep4955
  %found.conflict5159 = and i1 %bound05157, %bound15158
  %conflict.rdx5160 = or i1 %conflict.rdx5156, %found.conflict5159
  %bound05161 = icmp ult ptr %scevgep4954, %scevgep4959
  %bound15162 = icmp ult ptr %scevgep4958, %scevgep4955
  %found.conflict5163 = and i1 %bound05161, %bound15162
  %conflict.rdx5164 = or i1 %conflict.rdx5160, %found.conflict5163
  %bound05165 = icmp ult ptr %scevgep4954, %scevgep4961
  %bound15166 = icmp ult ptr %scevgep4960, %scevgep4955
  %found.conflict5167 = and i1 %bound05165, %bound15166
  %conflict.rdx5168 = or i1 %conflict.rdx5164, %found.conflict5167
  %bound05169 = icmp ult ptr %scevgep4956, %scevgep4959
  %bound15170 = icmp ult ptr %scevgep4958, %scevgep4957
  %found.conflict5171 = and i1 %bound05169, %bound15170
  %conflict.rdx5172 = or i1 %conflict.rdx5168, %found.conflict5171
  %bound05173 = icmp ult ptr %scevgep4956, %scevgep4961
  %bound15174 = icmp ult ptr %scevgep4960, %scevgep4957
  %found.conflict5175 = and i1 %bound05173, %bound15174
  %conflict.rdx5176 = or i1 %conflict.rdx5172, %found.conflict5175
  %bound05177 = icmp ult ptr %scevgep4958, %scevgep4961
  %bound15178 = icmp ult ptr %scevgep4960, %scevgep4959
  %found.conflict5179 = and i1 %bound05177, %bound15178
  %conflict.rdx5180 = or i1 %conflict.rdx5176, %found.conflict5179
  br i1 %conflict.rdx5180, label %scalar.ph.preheader, label %vector.ph

vector.ph:                                        ; preds = %vector.memcheck
  %n.vec = and i64 %4719, 2147483646
  %ind.end = or i64 %4719, 1
  %broadcast.splat = shufflevector <2 x double> %4685, <2 x double> poison, <2 x i32> zeroinitializer
  %broadcast.splatinsert5182 = insertelement <2 x double> poison, double %4678, i64 0
  %broadcast.splat5183 = shufflevector <2 x double> %broadcast.splatinsert5182, <2 x double> poison, <2 x i32> zeroinitializer
  %broadcast.splatinsert5184 = insertelement <2 x double> poison, double %4679, i64 0
  %broadcast.splat5185 = shufflevector <2 x double> %broadcast.splatinsert5184, <2 x double> poison, <2 x i32> zeroinitializer
  %broadcast.splat5190 = shufflevector <2 x double> %4685, <2 x double> poison, <2 x i32> <i32 1, i32 1>
  %broadcast.splatinsert5191 = insertelement <2 x double> poison, double %4681, i64 0
  %broadcast.splat5192 = shufflevector <2 x double> %broadcast.splatinsert5191, <2 x double> poison, <2 x i32> zeroinitializer
  %broadcast.splatinsert5193 = insertelement <2 x double> poison, double %4682, i64 0
  %broadcast.splat5194 = shufflevector <2 x double> %broadcast.splatinsert5193, <2 x double> poison, <2 x i32> zeroinitializer
  %broadcast.splatinsert5198 = insertelement <2 x double> poison, double %4689, i64 0
  %broadcast.splat5199 = shufflevector <2 x double> %broadcast.splatinsert5198, <2 x double> poison, <2 x i32> zeroinitializer
  %broadcast.splatinsert5200 = insertelement <2 x double> poison, double %4687, i64 0
  %broadcast.splat5201 = shufflevector <2 x double> %broadcast.splatinsert5200, <2 x double> poison, <2 x i32> zeroinitializer
  %broadcast.splatinsert5202 = insertelement <2 x double> poison, double %4688, i64 0
  %broadcast.splat5203 = shufflevector <2 x double> %broadcast.splatinsert5202, <2 x double> poison, <2 x i32> zeroinitializer
  %broadcast.splatinsert5207 = insertelement <2 x double> poison, double %4693, i64 0
  %broadcast.splat5208 = shufflevector <2 x double> %broadcast.splatinsert5207, <2 x double> poison, <2 x i32> zeroinitializer
  %broadcast.splatinsert5209 = insertelement <2 x double> poison, double %4691, i64 0
  %broadcast.splat5210 = shufflevector <2 x double> %broadcast.splatinsert5209, <2 x double> poison, <2 x i32> zeroinitializer
  %broadcast.splatinsert5211 = insertelement <2 x double> poison, double %4692, i64 0
  %broadcast.splat5212 = shufflevector <2 x double> %broadcast.splatinsert5211, <2 x double> poison, <2 x i32> zeroinitializer
  %broadcast.splatinsert5216 = insertelement <2 x double> poison, double %4697, i64 0
  %broadcast.splat5217 = shufflevector <2 x double> %broadcast.splatinsert5216, <2 x double> poison, <2 x i32> zeroinitializer
  %broadcast.splatinsert5218 = insertelement <2 x double> poison, double %4695, i64 0
  %broadcast.splat5219 = shufflevector <2 x double> %broadcast.splatinsert5218, <2 x double> poison, <2 x i32> zeroinitializer
  %broadcast.splatinsert5220 = insertelement <2 x double> poison, double %4696, i64 0
  %broadcast.splat5221 = shufflevector <2 x double> %broadcast.splatinsert5220, <2 x double> poison, <2 x i32> zeroinitializer
  %broadcast.splatinsert5225 = insertelement <2 x double> poison, double %4701, i64 0
  %broadcast.splat5226 = shufflevector <2 x double> %broadcast.splatinsert5225, <2 x double> poison, <2 x i32> zeroinitializer
  %broadcast.splatinsert5227 = insertelement <2 x double> poison, double %4699, i64 0
  %broadcast.splat5228 = shufflevector <2 x double> %broadcast.splatinsert5227, <2 x double> poison, <2 x i32> zeroinitializer
  %broadcast.splatinsert5229 = insertelement <2 x double> poison, double %4700, i64 0
  %broadcast.splat5230 = shufflevector <2 x double> %broadcast.splatinsert5229, <2 x double> poison, <2 x i32> zeroinitializer
  %broadcast.splatinsert5234 = insertelement <2 x double> poison, double %4705, i64 0
  %broadcast.splat5235 = shufflevector <2 x double> %broadcast.splatinsert5234, <2 x double> poison, <2 x i32> zeroinitializer
  %broadcast.splatinsert5236 = insertelement <2 x double> poison, double %4703, i64 0
  %broadcast.splat5237 = shufflevector <2 x double> %broadcast.splatinsert5236, <2 x double> poison, <2 x i32> zeroinitializer
  %broadcast.splatinsert5238 = insertelement <2 x double> poison, double %4704, i64 0
  %broadcast.splat5239 = shufflevector <2 x double> %broadcast.splatinsert5238, <2 x double> poison, <2 x i32> zeroinitializer
  %broadcast.splatinsert5243 = insertelement <2 x double> poison, double %4709, i64 0
  %broadcast.splat5244 = shufflevector <2 x double> %broadcast.splatinsert5243, <2 x double> poison, <2 x i32> zeroinitializer
  %broadcast.splatinsert5245 = insertelement <2 x double> poison, double %4707, i64 0
  %broadcast.splat5246 = shufflevector <2 x double> %broadcast.splatinsert5245, <2 x double> poison, <2 x i32> zeroinitializer
  %broadcast.splatinsert5247 = insertelement <2 x double> poison, double %4708, i64 0
  %broadcast.splat5248 = shufflevector <2 x double> %broadcast.splatinsert5247, <2 x double> poison, <2 x i32> zeroinitializer
  %broadcast.splat5250 = shufflevector <2 x double> %4535, <2 x double> poison, <2 x i32> <i32 1, i32 1>
  %broadcast.splat5252 = shufflevector <2 x double> %4535, <2 x double> poison, <2 x i32> zeroinitializer
  %broadcast.splat5254 = shufflevector <2 x double> %4554, <2 x double> poison, <2 x i32> <i32 1, i32 1>
  %broadcast.splat5256 = shufflevector <2 x double> %4554, <2 x double> poison, <2 x i32> zeroinitializer
  %broadcast.splat5262 = shufflevector <2 x double> %4573, <2 x double> poison, <2 x i32> <i32 1, i32 1>
  %broadcast.splat5264 = shufflevector <2 x double> %4573, <2 x double> poison, <2 x i32> zeroinitializer
  %broadcast.splat5270 = shufflevector <2 x double> %4592, <2 x double> poison, <2 x i32> <i32 1, i32 1>
  %broadcast.splat5272 = shufflevector <2 x double> %4592, <2 x double> poison, <2 x i32> zeroinitializer
  %broadcast.splat5278 = shufflevector <2 x double> %4611, <2 x double> poison, <2 x i32> <i32 1, i32 1>
  %broadcast.splat5280 = shufflevector <2 x double> %4611, <2 x double> poison, <2 x i32> zeroinitializer
  %broadcast.splat5286 = shufflevector <2 x double> %4630, <2 x double> poison, <2 x i32> <i32 1, i32 1>
  %broadcast.splat5288 = shufflevector <2 x double> %4630, <2 x double> poison, <2 x i32> zeroinitializer
  %broadcast.splat5294 = shufflevector <2 x double> %4649, <2 x double> poison, <2 x i32> <i32 1, i32 1>
  %broadcast.splat5296 = shufflevector <2 x double> %4649, <2 x double> poison, <2 x i32> zeroinitializer
  %broadcast.splat5302 = shufflevector <2 x double> %4668, <2 x double> poison, <2 x i32> <i32 1, i32 1>
  %broadcast.splat5304 = shufflevector <2 x double> %4668, <2 x double> poison, <2 x i32> zeroinitializer
  br label %vector.body

vector.body:                                      ; preds = %vector.body, %vector.ph
  %index = phi i64 [ 0, %vector.ph ], [ %index.next, %vector.body ]
  %offset.idx = or disjoint i64 %index, 1
  %4880 = getelementptr %struct.doublecomplex, ptr %invariant.gep4779, i64 %offset.idx
  %wide.vec = load <4 x double>, ptr %4880, align 8, !tbaa !13
  %strided.vec = shufflevector <4 x double> %wide.vec, <4 x double> poison, <2 x i32> <i32 0, i32 2>
  %strided.vec5181 = shufflevector <4 x double> %wide.vec, <4 x double> poison, <2 x i32> <i32 1, i32 3>
  %4881 = fmul <2 x double> %strided.vec5181, %broadcast.splat
  %4882 = call <2 x double> @llvm.fmuladd.v2f64(<2 x double> %broadcast.splat5183, <2 x double> %strided.vec, <2 x double> %4881)
  %4883 = fmul <2 x double> %strided.vec, %broadcast.splat5185
  %4884 = call <2 x double> @llvm.fmuladd.v2f64(<2 x double> %broadcast.splat5183, <2 x double> %strided.vec5181, <2 x double> %4883)
  %4885 = getelementptr %struct.doublecomplex, ptr %invariant.gep4781, i64 %offset.idx
  %wide.vec5186 = load <4 x double>, ptr %4885, align 8, !tbaa !13
  %strided.vec5187 = shufflevector <4 x double> %wide.vec5186, <4 x double> poison, <2 x i32> <i32 0, i32 2>
  %strided.vec5188 = shufflevector <4 x double> %wide.vec5186, <4 x double> poison, <2 x i32> <i32 1, i32 3>
  %4886 = fmul <2 x double> %strided.vec5188, %broadcast.splat5190
  %4887 = call <2 x double> @llvm.fmuladd.v2f64(<2 x double> %broadcast.splat5192, <2 x double> %strided.vec5187, <2 x double> %4886)
  %4888 = fmul <2 x double> %strided.vec5187, %broadcast.splat5194
  %4889 = call <2 x double> @llvm.fmuladd.v2f64(<2 x double> %broadcast.splat5192, <2 x double> %strided.vec5188, <2 x double> %4888)
  %4890 = fadd <2 x double> %4882, %4887
  %4891 = fadd <2 x double> %4884, %4889
  %4892 = getelementptr %struct.doublecomplex, ptr %invariant.gep4783, i64 %offset.idx
  %wide.vec5195 = load <4 x double>, ptr %4892, align 8, !tbaa !13
  %strided.vec5196 = shufflevector <4 x double> %wide.vec5195, <4 x double> poison, <2 x i32> <i32 0, i32 2>
  %strided.vec5197 = shufflevector <4 x double> %wide.vec5195, <4 x double> poison, <2 x i32> <i32 1, i32 3>
  %4893 = fmul <2 x double> %strided.vec5197, %broadcast.splat5199
  %4894 = call <2 x double> @llvm.fmuladd.v2f64(<2 x double> %broadcast.splat5201, <2 x double> %strided.vec5196, <2 x double> %4893)
  %4895 = fmul <2 x double> %strided.vec5196, %broadcast.splat5203
  %4896 = call <2 x double> @llvm.fmuladd.v2f64(<2 x double> %broadcast.splat5201, <2 x double> %strided.vec5197, <2 x double> %4895)
  %4897 = fadd <2 x double> %4890, %4894
  %4898 = fadd <2 x double> %4891, %4896
  %4899 = getelementptr %struct.doublecomplex, ptr %invariant.gep4785, i64 %offset.idx
  %wide.vec5204 = load <4 x double>, ptr %4899, align 8, !tbaa !13
  %strided.vec5205 = shufflevector <4 x double> %wide.vec5204, <4 x double> poison, <2 x i32> <i32 0, i32 2>
  %strided.vec5206 = shufflevector <4 x double> %wide.vec5204, <4 x double> poison, <2 x i32> <i32 1, i32 3>
  %4900 = fmul <2 x double> %strided.vec5206, %broadcast.splat5208
  %4901 = call <2 x double> @llvm.fmuladd.v2f64(<2 x double> %broadcast.splat5210, <2 x double> %strided.vec5205, <2 x double> %4900)
  %4902 = fmul <2 x double> %strided.vec5205, %broadcast.splat5212
  %4903 = call <2 x double> @llvm.fmuladd.v2f64(<2 x double> %broadcast.splat5210, <2 x double> %strided.vec5206, <2 x double> %4902)
  %4904 = fadd <2 x double> %4897, %4901
  %4905 = fadd <2 x double> %4898, %4903
  %4906 = getelementptr %struct.doublecomplex, ptr %invariant.gep4787, i64 %offset.idx
  %wide.vec5213 = load <4 x double>, ptr %4906, align 8, !tbaa !13
  %strided.vec5214 = shufflevector <4 x double> %wide.vec5213, <4 x double> poison, <2 x i32> <i32 0, i32 2>
  %strided.vec5215 = shufflevector <4 x double> %wide.vec5213, <4 x double> poison, <2 x i32> <i32 1, i32 3>
  %4907 = fmul <2 x double> %strided.vec5215, %broadcast.splat5217
  %4908 = call <2 x double> @llvm.fmuladd.v2f64(<2 x double> %broadcast.splat5219, <2 x double> %strided.vec5214, <2 x double> %4907)
  %4909 = fmul <2 x double> %strided.vec5214, %broadcast.splat5221
  %4910 = call <2 x double> @llvm.fmuladd.v2f64(<2 x double> %broadcast.splat5219, <2 x double> %strided.vec5215, <2 x double> %4909)
  %4911 = fadd <2 x double> %4904, %4908
  %4912 = fadd <2 x double> %4905, %4910
  %4913 = getelementptr %struct.doublecomplex, ptr %invariant.gep4789, i64 %offset.idx
  %wide.vec5222 = load <4 x double>, ptr %4913, align 8, !tbaa !13
  %strided.vec5223 = shufflevector <4 x double> %wide.vec5222, <4 x double> poison, <2 x i32> <i32 0, i32 2>
  %strided.vec5224 = shufflevector <4 x double> %wide.vec5222, <4 x double> poison, <2 x i32> <i32 1, i32 3>
  %4914 = fmul <2 x double> %strided.vec5224, %broadcast.splat5226
  %4915 = call <2 x double> @llvm.fmuladd.v2f64(<2 x double> %broadcast.splat5228, <2 x double> %strided.vec5223, <2 x double> %4914)
  %4916 = fmul <2 x double> %strided.vec5223, %broadcast.splat5230
  %4917 = call <2 x double> @llvm.fmuladd.v2f64(<2 x double> %broadcast.splat5228, <2 x double> %strided.vec5224, <2 x double> %4916)
  %4918 = fadd <2 x double> %4911, %4915
  %4919 = fadd <2 x double> %4912, %4917
  %4920 = getelementptr %struct.doublecomplex, ptr %invariant.gep4791, i64 %offset.idx
  %wide.vec5231 = load <4 x double>, ptr %4920, align 8, !tbaa !13
  %strided.vec5232 = shufflevector <4 x double> %wide.vec5231, <4 x double> poison, <2 x i32> <i32 0, i32 2>
  %strided.vec5233 = shufflevector <4 x double> %wide.vec5231, <4 x double> poison, <2 x i32> <i32 1, i32 3>
  %4921 = fmul <2 x double> %strided.vec5233, %broadcast.splat5235
  %4922 = call <2 x double> @llvm.fmuladd.v2f64(<2 x double> %broadcast.splat5237, <2 x double> %strided.vec5232, <2 x double> %4921)
  %4923 = fmul <2 x double> %strided.vec5232, %broadcast.splat5239
  %4924 = call <2 x double> @llvm.fmuladd.v2f64(<2 x double> %broadcast.splat5237, <2 x double> %strided.vec5233, <2 x double> %4923)
  %4925 = fadd <2 x double> %4918, %4922
  %4926 = fadd <2 x double> %4919, %4924
  %4927 = getelementptr %struct.doublecomplex, ptr %invariant.gep4793, i64 %offset.idx
  %wide.vec5240 = load <4 x double>, ptr %4927, align 8, !tbaa !13
  %strided.vec5241 = shufflevector <4 x double> %wide.vec5240, <4 x double> poison, <2 x i32> <i32 0, i32 2>
  %strided.vec5242 = shufflevector <4 x double> %wide.vec5240, <4 x double> poison, <2 x i32> <i32 1, i32 3>
  %4928 = fmul <2 x double> %strided.vec5242, %broadcast.splat5244
  %4929 = call <2 x double> @llvm.fmuladd.v2f64(<2 x double> %broadcast.splat5246, <2 x double> %strided.vec5241, <2 x double> %4928)
  %4930 = fmul <2 x double> %strided.vec5241, %broadcast.splat5248
  %4931 = call <2 x double> @llvm.fmuladd.v2f64(<2 x double> %broadcast.splat5246, <2 x double> %strided.vec5242, <2 x double> %4930)
  %4932 = fadd <2 x double> %4925, %4929
  %4933 = fadd <2 x double> %4926, %4931
  %4934 = fneg <2 x double> %4933
  %4935 = fmul <2 x double> %broadcast.splat5250, %4934
  %4936 = call <2 x double> @llvm.fmuladd.v2f64(<2 x double> %4932, <2 x double> %broadcast.splat5252, <2 x double> %4935)
  %4937 = fmul <2 x double> %broadcast.splat5252, %4933
  %4938 = call <2 x double> @llvm.fmuladd.v2f64(<2 x double> %4932, <2 x double> %broadcast.splat5250, <2 x double> %4937)
  %4939 = fsub <2 x double> %strided.vec, %4936
  %4940 = fsub <2 x double> %strided.vec5181, %4938
  %interleaved.vec = shufflevector <2 x double> %4939, <2 x double> %4940, <4 x i32> <i32 0, i32 2, i32 1, i32 3>
  store <4 x double> %interleaved.vec, ptr %4880, align 8, !tbaa !13
  %4941 = fmul <2 x double> %broadcast.splat5254, %4934
  %4942 = call <2 x double> @llvm.fmuladd.v2f64(<2 x double> %4932, <2 x double> %broadcast.splat5256, <2 x double> %4941)
  %4943 = fmul <2 x double> %broadcast.splat5256, %4933
  %4944 = call <2 x double> @llvm.fmuladd.v2f64(<2 x double> %4932, <2 x double> %broadcast.splat5254, <2 x double> %4943)
  %wide.vec5257 = load <4 x double>, ptr %4885, align 8, !tbaa !13
  %strided.vec5258 = shufflevector <4 x double> %wide.vec5257, <4 x double> poison, <2 x i32> <i32 0, i32 2>
  %strided.vec5259 = shufflevector <4 x double> %wide.vec5257, <4 x double> poison, <2 x i32> <i32 1, i32 3>
  %4945 = fsub <2 x double> %strided.vec5258, %4942
  %4946 = fsub <2 x double> %strided.vec5259, %4944
  %interleaved.vec5260 = shufflevector <2 x double> %4945, <2 x double> %4946, <4 x i32> <i32 0, i32 2, i32 1, i32 3>
  store <4 x double> %interleaved.vec5260, ptr %4885, align 8, !tbaa !13
  %4947 = fmul <2 x double> %broadcast.splat5262, %4934
  %4948 = call <2 x double> @llvm.fmuladd.v2f64(<2 x double> %4932, <2 x double> %broadcast.splat5264, <2 x double> %4947)
  %4949 = fmul <2 x double> %broadcast.splat5264, %4933
  %4950 = call <2 x double> @llvm.fmuladd.v2f64(<2 x double> %4932, <2 x double> %broadcast.splat5262, <2 x double> %4949)
  %wide.vec5265 = load <4 x double>, ptr %4892, align 8, !tbaa !13
  %strided.vec5266 = shufflevector <4 x double> %wide.vec5265, <4 x double> poison, <2 x i32> <i32 0, i32 2>
  %strided.vec5267 = shufflevector <4 x double> %wide.vec5265, <4 x double> poison, <2 x i32> <i32 1, i32 3>
  %4951 = fsub <2 x double> %strided.vec5266, %4948
  %4952 = fsub <2 x double> %strided.vec5267, %4950
  %interleaved.vec5268 = shufflevector <2 x double> %4951, <2 x double> %4952, <4 x i32> <i32 0, i32 2, i32 1, i32 3>
  store <4 x double> %interleaved.vec5268, ptr %4892, align 8, !tbaa !13
  %4953 = fmul <2 x double> %broadcast.splat5270, %4934
  %4954 = call <2 x double> @llvm.fmuladd.v2f64(<2 x double> %4932, <2 x double> %broadcast.splat5272, <2 x double> %4953)
  %4955 = fmul <2 x double> %broadcast.splat5272, %4933
  %4956 = call <2 x double> @llvm.fmuladd.v2f64(<2 x double> %4932, <2 x double> %broadcast.splat5270, <2 x double> %4955)
  %wide.vec5273 = load <4 x double>, ptr %4899, align 8, !tbaa !13
  %strided.vec5274 = shufflevector <4 x double> %wide.vec5273, <4 x double> poison, <2 x i32> <i32 0, i32 2>
  %strided.vec5275 = shufflevector <4 x double> %wide.vec5273, <4 x double> poison, <2 x i32> <i32 1, i32 3>
  %4957 = fsub <2 x double> %strided.vec5274, %4954
  %4958 = fsub <2 x double> %strided.vec5275, %4956
  %interleaved.vec5276 = shufflevector <2 x double> %4957, <2 x double> %4958, <4 x i32> <i32 0, i32 2, i32 1, i32 3>
  store <4 x double> %interleaved.vec5276, ptr %4899, align 8, !tbaa !13
  %4959 = fmul <2 x double> %broadcast.splat5278, %4934
  %4960 = call <2 x double> @llvm.fmuladd.v2f64(<2 x double> %4932, <2 x double> %broadcast.splat5280, <2 x double> %4959)
  %4961 = fmul <2 x double> %broadcast.splat5280, %4933
  %4962 = call <2 x double> @llvm.fmuladd.v2f64(<2 x double> %4932, <2 x double> %broadcast.splat5278, <2 x double> %4961)
  %wide.vec5281 = load <4 x double>, ptr %4906, align 8, !tbaa !13
  %strided.vec5282 = shufflevector <4 x double> %wide.vec5281, <4 x double> poison, <2 x i32> <i32 0, i32 2>
  %strided.vec5283 = shufflevector <4 x double> %wide.vec5281, <4 x double> poison, <2 x i32> <i32 1, i32 3>
  %4963 = fsub <2 x double> %strided.vec5282, %4960
  %4964 = fsub <2 x double> %strided.vec5283, %4962
  %interleaved.vec5284 = shufflevector <2 x double> %4963, <2 x double> %4964, <4 x i32> <i32 0, i32 2, i32 1, i32 3>
  store <4 x double> %interleaved.vec5284, ptr %4906, align 8, !tbaa !13
  %4965 = fmul <2 x double> %broadcast.splat5286, %4934
  %4966 = call <2 x double> @llvm.fmuladd.v2f64(<2 x double> %4932, <2 x double> %broadcast.splat5288, <2 x double> %4965)
  %4967 = fmul <2 x double> %broadcast.splat5288, %4933
  %4968 = call <2 x double> @llvm.fmuladd.v2f64(<2 x double> %4932, <2 x double> %broadcast.splat5286, <2 x double> %4967)
  %wide.vec5289 = load <4 x double>, ptr %4913, align 8, !tbaa !13
  %strided.vec5290 = shufflevector <4 x double> %wide.vec5289, <4 x double> poison, <2 x i32> <i32 0, i32 2>
  %strided.vec5291 = shufflevector <4 x double> %wide.vec5289, <4 x double> poison, <2 x i32> <i32 1, i32 3>
  %4969 = fsub <2 x double> %strided.vec5290, %4966
  %4970 = fsub <2 x double> %strided.vec5291, %4968
  %interleaved.vec5292 = shufflevector <2 x double> %4969, <2 x double> %4970, <4 x i32> <i32 0, i32 2, i32 1, i32 3>
  store <4 x double> %interleaved.vec5292, ptr %4913, align 8, !tbaa !13
  %4971 = fmul <2 x double> %broadcast.splat5294, %4934
  %4972 = call <2 x double> @llvm.fmuladd.v2f64(<2 x double> %4932, <2 x double> %broadcast.splat5296, <2 x double> %4971)
  %4973 = fmul <2 x double> %broadcast.splat5296, %4933
  %4974 = call <2 x double> @llvm.fmuladd.v2f64(<2 x double> %4932, <2 x double> %broadcast.splat5294, <2 x double> %4973)
  %wide.vec5297 = load <4 x double>, ptr %4920, align 8, !tbaa !13
  %strided.vec5298 = shufflevector <4 x double> %wide.vec5297, <4 x double> poison, <2 x i32> <i32 0, i32 2>
  %strided.vec5299 = shufflevector <4 x double> %wide.vec5297, <4 x double> poison, <2 x i32> <i32 1, i32 3>
  %4975 = fsub <2 x double> %strided.vec5298, %4972
  %4976 = fsub <2 x double> %strided.vec5299, %4974
  %interleaved.vec5300 = shufflevector <2 x double> %4975, <2 x double> %4976, <4 x i32> <i32 0, i32 2, i32 1, i32 3>
  store <4 x double> %interleaved.vec5300, ptr %4920, align 8, !tbaa !13
  %4977 = fmul <2 x double> %broadcast.splat5302, %4934
  %4978 = call <2 x double> @llvm.fmuladd.v2f64(<2 x double> %4932, <2 x double> %broadcast.splat5304, <2 x double> %4977)
  %4979 = fmul <2 x double> %broadcast.splat5304, %4933
  %4980 = call <2 x double> @llvm.fmuladd.v2f64(<2 x double> %4932, <2 x double> %broadcast.splat5302, <2 x double> %4979)
  %wide.vec5305 = load <4 x double>, ptr %4927, align 8, !tbaa !13
  %strided.vec5306 = shufflevector <4 x double> %wide.vec5305, <4 x double> poison, <2 x i32> <i32 0, i32 2>
  %strided.vec5307 = shufflevector <4 x double> %wide.vec5305, <4 x double> poison, <2 x i32> <i32 1, i32 3>
  %4981 = fsub <2 x double> %strided.vec5306, %4978
  %4982 = fsub <2 x double> %strided.vec5307, %4980
  %interleaved.vec5308 = shufflevector <2 x double> %4981, <2 x double> %4982, <4 x i32> <i32 0, i32 2, i32 1, i32 3>
  store <4 x double> %interleaved.vec5308, ptr %4927, align 8, !tbaa !13
  %index.next = add nuw i64 %index, 2
  %4983 = icmp eq i64 %index.next, %n.vec
  br i1 %4983, label %middle.block, label %vector.body, !llvm.loop !41

middle.block:                                     ; preds = %vector.body
  %cmp.n = icmp eq i64 %n.vec, %4719
  br i1 %cmp.n, label %.loopexit, label %scalar.ph.preheader

scalar.ph.preheader:                              ; preds = %middle.block, %vector.memcheck, %vector.scevcheck, %.lr.ph4465
  %indvars.iv4703.ph = phi i64 [ 1, %vector.memcheck ], [ 1, %vector.scevcheck ], [ 1, %.lr.ph4465 ], [ %ind.end, %middle.block ]
  %4984 = insertelement <2 x double> poison, double %4678, i64 0
  %4985 = insertelement <2 x double> %4984, double %4681, i64 1
  br label %scalar.ph

scalar.ph:                                        ; preds = %scalar.ph.preheader, %scalar.ph
  %indvars.iv4703 = phi i64 [ %indvars.iv.next4704, %scalar.ph ], [ %indvars.iv4703.ph, %scalar.ph.preheader ]
  %gep4780 = getelementptr %struct.doublecomplex, ptr %invariant.gep4779, i64 %indvars.iv4703
  %gep4782 = getelementptr %struct.doublecomplex, ptr %invariant.gep4781, i64 %indvars.iv4703
  %4986 = load double, ptr %gep4782, align 8, !tbaa !9
  %4987 = getelementptr inbounds i8, ptr %gep4782, i64 8
  %4988 = load double, ptr %4987, align 8, !tbaa !12
  %gep4784 = getelementptr %struct.doublecomplex, ptr %invariant.gep4783, i64 %indvars.iv4703
  %4989 = load double, ptr %gep4784, align 8, !tbaa !9
  %4990 = getelementptr inbounds i8, ptr %gep4784, i64 8
  %4991 = load double, ptr %4990, align 8, !tbaa !12
  %4992 = fmul double %4991, %4689
  %4993 = call double @llvm.fmuladd.f64(double %4687, double %4989, double %4992)
  %4994 = fmul double %4989, %4688
  %4995 = call double @llvm.fmuladd.f64(double %4687, double %4991, double %4994)
  %gep4786 = getelementptr %struct.doublecomplex, ptr %invariant.gep4785, i64 %indvars.iv4703
  %4996 = load double, ptr %gep4786, align 8, !tbaa !9
  %4997 = getelementptr inbounds i8, ptr %gep4786, i64 8
  %4998 = load double, ptr %4997, align 8, !tbaa !12
  %4999 = fmul double %4998, %4693
  %5000 = call double @llvm.fmuladd.f64(double %4691, double %4996, double %4999)
  %5001 = fmul double %4996, %4692
  %5002 = call double @llvm.fmuladd.f64(double %4691, double %4998, double %5001)
  %gep4788 = getelementptr %struct.doublecomplex, ptr %invariant.gep4787, i64 %indvars.iv4703
  %5003 = load double, ptr %gep4788, align 8, !tbaa !9
  %5004 = getelementptr inbounds i8, ptr %gep4788, i64 8
  %5005 = load double, ptr %5004, align 8, !tbaa !12
  %5006 = fmul double %5005, %4697
  %5007 = call double @llvm.fmuladd.f64(double %4695, double %5003, double %5006)
  %5008 = fmul double %5003, %4696
  %5009 = call double @llvm.fmuladd.f64(double %4695, double %5005, double %5008)
  %gep4790 = getelementptr %struct.doublecomplex, ptr %invariant.gep4789, i64 %indvars.iv4703
  %5010 = load double, ptr %gep4790, align 8, !tbaa !9
  %5011 = getelementptr inbounds i8, ptr %gep4790, i64 8
  %5012 = load double, ptr %5011, align 8, !tbaa !12
  %5013 = fmul double %5012, %4701
  %5014 = call double @llvm.fmuladd.f64(double %4699, double %5010, double %5013)
  %5015 = fmul double %5010, %4700
  %5016 = call double @llvm.fmuladd.f64(double %4699, double %5012, double %5015)
  %gep4792 = getelementptr %struct.doublecomplex, ptr %invariant.gep4791, i64 %indvars.iv4703
  %5017 = load double, ptr %gep4792, align 8, !tbaa !9
  %5018 = getelementptr inbounds i8, ptr %gep4792, i64 8
  %5019 = load double, ptr %5018, align 8, !tbaa !12
  %5020 = fmul double %5019, %4705
  %5021 = call double @llvm.fmuladd.f64(double %4703, double %5017, double %5020)
  %5022 = fmul double %5017, %4704
  %5023 = call double @llvm.fmuladd.f64(double %4703, double %5019, double %5022)
  %gep4794 = getelementptr %struct.doublecomplex, ptr %invariant.gep4793, i64 %indvars.iv4703
  %5024 = load double, ptr %gep4794, align 8, !tbaa !9
  %5025 = getelementptr inbounds i8, ptr %gep4794, i64 8
  %5026 = load double, ptr %5025, align 8, !tbaa !12
  %5027 = fmul double %5026, %4709
  %5028 = call double @llvm.fmuladd.f64(double %4707, double %5024, double %5027)
  %5029 = fmul double %5024, %4708
  %5030 = call double @llvm.fmuladd.f64(double %4707, double %5026, double %5029)
  %5031 = load <2 x double>, ptr %gep4780, align 8, !tbaa !13
  %5032 = shufflevector <2 x double> %5031, <2 x double> poison, <2 x i32> <i32 1, i32 poison>
  %5033 = insertelement <2 x double> %5032, double %4988, i64 1
  %5034 = fmul <2 x double> %5033, %4685
  %5035 = insertelement <2 x double> %5031, double %4986, i64 1
  %5036 = call <2 x double> @llvm.fmuladd.v2f64(<2 x double> %4985, <2 x double> %5035, <2 x double> %5034)
  %5037 = fmul <2 x double> %5035, %4684
  %5038 = call <2 x double> @llvm.fmuladd.v2f64(<2 x double> %4985, <2 x double> %5033, <2 x double> %5037)
  %shift6678 = shufflevector <2 x double> %5036, <2 x double> poison, <2 x i32> <i32 1, i32 poison>
  %5039 = fadd <2 x double> %5036, %shift6678
  %5040 = extractelement <2 x double> %5039, i64 0
  %shift6679 = shufflevector <2 x double> %5038, <2 x double> poison, <2 x i32> <i32 1, i32 poison>
  %5041 = fadd <2 x double> %5038, %shift6679
  %5042 = extractelement <2 x double> %5041, i64 0
  %5043 = fadd double %5040, %4993
  %5044 = fadd double %5042, %4995
  %5045 = fadd double %5043, %5000
  %5046 = fadd double %5044, %5002
  %5047 = fadd double %5045, %5007
  %5048 = fadd double %5046, %5009
  %5049 = fadd double %5047, %5014
  %5050 = fadd double %5048, %5016
  %5051 = fadd double %5049, %5021
  %5052 = fadd double %5050, %5023
  %5053 = fadd double %5051, %5028
  %5054 = fadd double %5052, %5030
  %5055 = fneg double %5054
  %5056 = insertelement <2 x double> poison, double %5054, i64 0
  %5057 = insertelement <2 x double> %5056, double %5055, i64 1
  %5058 = fmul <2 x double> %4535, %5057
  %5059 = shufflevector <2 x double> %5058, <2 x double> poison, <2 x i32> <i32 1, i32 0>
  %5060 = insertelement <2 x double> poison, double %5053, i64 0
  %5061 = shufflevector <2 x double> %5060, <2 x double> poison, <2 x i32> zeroinitializer
  %5062 = call <2 x double> @llvm.fmuladd.v2f64(<2 x double> %5061, <2 x double> %4535, <2 x double> %5059)
  %5063 = fsub <2 x double> %5031, %5062
  store <2 x double> %5063, ptr %gep4780, align 8, !tbaa !13
  %5064 = fmul <2 x double> %4554, %5057
  %5065 = shufflevector <2 x double> %5064, <2 x double> poison, <2 x i32> <i32 1, i32 0>
  %5066 = call <2 x double> @llvm.fmuladd.v2f64(<2 x double> %5061, <2 x double> %4554, <2 x double> %5065)
  %5067 = load <2 x double>, ptr %gep4782, align 8, !tbaa !13
  %5068 = fsub <2 x double> %5067, %5066
  store <2 x double> %5068, ptr %gep4782, align 8, !tbaa !13
  %5069 = fmul <2 x double> %4573, %5057
  %5070 = shufflevector <2 x double> %5069, <2 x double> poison, <2 x i32> <i32 1, i32 0>
  %5071 = call <2 x double> @llvm.fmuladd.v2f64(<2 x double> %5061, <2 x double> %4573, <2 x double> %5070)
  %5072 = load <2 x double>, ptr %gep4784, align 8, !tbaa !13
  %5073 = fsub <2 x double> %5072, %5071
  store <2 x double> %5073, ptr %gep4784, align 8, !tbaa !13
  %5074 = fmul <2 x double> %4592, %5057
  %5075 = shufflevector <2 x double> %5074, <2 x double> poison, <2 x i32> <i32 1, i32 0>
  %5076 = call <2 x double> @llvm.fmuladd.v2f64(<2 x double> %5061, <2 x double> %4592, <2 x double> %5075)
  %5077 = load <2 x double>, ptr %gep4786, align 8, !tbaa !13
  %5078 = fsub <2 x double> %5077, %5076
  store <2 x double> %5078, ptr %gep4786, align 8, !tbaa !13
  %5079 = fmul <2 x double> %4611, %5057
  %5080 = shufflevector <2 x double> %5079, <2 x double> poison, <2 x i32> <i32 1, i32 0>
  %5081 = call <2 x double> @llvm.fmuladd.v2f64(<2 x double> %5061, <2 x double> %4611, <2 x double> %5080)
  %5082 = load <2 x double>, ptr %gep4788, align 8, !tbaa !13
  %5083 = fsub <2 x double> %5082, %5081
  store <2 x double> %5083, ptr %gep4788, align 8, !tbaa !13
  %5084 = fmul <2 x double> %4630, %5057
  %5085 = shufflevector <2 x double> %5084, <2 x double> poison, <2 x i32> <i32 1, i32 0>
  %5086 = call <2 x double> @llvm.fmuladd.v2f64(<2 x double> %5061, <2 x double> %4630, <2 x double> %5085)
  %5087 = load <2 x double>, ptr %gep4790, align 8, !tbaa !13
  %5088 = fsub <2 x double> %5087, %5086
  store <2 x double> %5088, ptr %gep4790, align 8, !tbaa !13
  %5089 = fmul <2 x double> %4649, %5057
  %5090 = shufflevector <2 x double> %5089, <2 x double> poison, <2 x i32> <i32 1, i32 0>
  %5091 = call <2 x double> @llvm.fmuladd.v2f64(<2 x double> %5061, <2 x double> %4649, <2 x double> %5090)
  %5092 = load <2 x double>, ptr %gep4792, align 8, !tbaa !13
  %5093 = fsub <2 x double> %5092, %5091
  store <2 x double> %5093, ptr %gep4792, align 8, !tbaa !13
  %5094 = fmul <2 x double> %4668, %5057
  %5095 = shufflevector <2 x double> %5094, <2 x double> poison, <2 x i32> <i32 1, i32 0>
  %5096 = call <2 x double> @llvm.fmuladd.v2f64(<2 x double> %5061, <2 x double> %4668, <2 x double> %5095)
  %5097 = load <2 x double>, ptr %gep4794, align 8, !tbaa !13
  %5098 = fsub <2 x double> %5097, %5096
  store <2 x double> %5098, ptr %gep4794, align 8, !tbaa !13
  %indvars.iv.next4704 = add nuw nsw i64 %indvars.iv4703, 1
  %exitcond4707.not = icmp eq i64 %indvars.iv.next4704, %wide.trip.count4706
  br i1 %exitcond4707.not, label %.loopexit, label %scalar.ph, !llvm.loop !42

5099:                                             ; preds = %2482
  %5100 = load <2 x double>, ptr %3, align 8, !tbaa !13
  store <2 x double> %5100, ptr %12, align 16, !tbaa !13
  %5101 = call { double, double } @Cd(ptr noundef nonnull %12)
  %5102 = extractvalue { double, double } %5101, 0
  %5103 = extractvalue { double, double } %5101, 1
  %5104 = fneg double %5103
  %5105 = call ptr @_pCd(ptr noundef nonnull %10)
  %5106 = getelementptr inbounds i8, ptr %5105, i64 8
  store double %5102, ptr %5105, align 8
  store double %5104, ptr %5106, align 8
  %5107 = load double, ptr %4, align 8, !tbaa !9
  %5108 = getelementptr inbounds i8, ptr %4, i64 8
  %5109 = load double, ptr %5108, align 8, !tbaa !12
  %5110 = fneg double %5109
  %5111 = load <2 x double>, ptr %10, align 16, !tbaa !13
  %5112 = insertelement <2 x double> poison, double %5109, i64 0
  %5113 = insertelement <2 x double> %5112, double %5110, i64 1
  %5114 = fmul <2 x double> %5111, %5113
  %5115 = shufflevector <2 x double> %5114, <2 x double> poison, <2 x i32> <i32 1, i32 0>
  %5116 = insertelement <2 x double> poison, double %5107, i64 0
  %5117 = shufflevector <2 x double> %5116, <2 x double> poison, <2 x i32> zeroinitializer
  %5118 = call <2 x double> @llvm.fmuladd.v2f64(<2 x double> %5117, <2 x double> %5111, <2 x double> %5115)
  store <2 x double> %5118, ptr %9, align 16, !tbaa !13
  %5119 = getelementptr inbounds i8, ptr %3, i64 16
  %5120 = load <2 x double>, ptr %5119, align 8, !tbaa !13
  store <2 x double> %5120, ptr %13, align 16, !tbaa !13
  %5121 = call { double, double } @Cd(ptr noundef nonnull %13)
  %5122 = extractvalue { double, double } %5121, 0
  %5123 = extractvalue { double, double } %5121, 1
  %5124 = fneg double %5123
  %5125 = call ptr @_pCd(ptr noundef nonnull %10)
  %5126 = getelementptr inbounds i8, ptr %5125, i64 8
  store double %5122, ptr %5125, align 8
  store double %5124, ptr %5126, align 8
  %5127 = load double, ptr %4, align 8, !tbaa !9
  %5128 = load double, ptr %5108, align 8, !tbaa !12
  %5129 = fneg double %5128
  %5130 = load <2 x double>, ptr %10, align 16, !tbaa !13
  %5131 = insertelement <2 x double> poison, double %5128, i64 0
  %5132 = insertelement <2 x double> %5131, double %5129, i64 1
  %5133 = fmul <2 x double> %5130, %5132
  %5134 = shufflevector <2 x double> %5133, <2 x double> poison, <2 x i32> <i32 1, i32 0>
  %5135 = insertelement <2 x double> poison, double %5127, i64 0
  %5136 = shufflevector <2 x double> %5135, <2 x double> poison, <2 x i32> zeroinitializer
  %5137 = call <2 x double> @llvm.fmuladd.v2f64(<2 x double> %5136, <2 x double> %5130, <2 x double> %5134)
  store <2 x double> %5137, ptr %9, align 16, !tbaa !13
  %5138 = getelementptr inbounds i8, ptr %3, i64 32
  %5139 = load <2 x double>, ptr %5138, align 8, !tbaa !13
  store <2 x double> %5139, ptr %14, align 16, !tbaa !13
  %5140 = call { double, double } @Cd(ptr noundef nonnull %14)
  %5141 = extractvalue { double, double } %5140, 0
  %5142 = extractvalue { double, double } %5140, 1
  %5143 = fneg double %5142
  %5144 = call ptr @_pCd(ptr noundef nonnull %10)
  %5145 = getelementptr inbounds i8, ptr %5144, i64 8
  store double %5141, ptr %5144, align 8
  store double %5143, ptr %5145, align 8
  %5146 = load double, ptr %4, align 8, !tbaa !9
  %5147 = load double, ptr %5108, align 8, !tbaa !12
  %5148 = fneg double %5147
  %5149 = load <2 x double>, ptr %10, align 16, !tbaa !13
  %5150 = insertelement <2 x double> poison, double %5147, i64 0
  %5151 = insertelement <2 x double> %5150, double %5148, i64 1
  %5152 = fmul <2 x double> %5149, %5151
  %5153 = shufflevector <2 x double> %5152, <2 x double> poison, <2 x i32> <i32 1, i32 0>
  %5154 = insertelement <2 x double> poison, double %5146, i64 0
  %5155 = shufflevector <2 x double> %5154, <2 x double> poison, <2 x i32> zeroinitializer
  %5156 = call <2 x double> @llvm.fmuladd.v2f64(<2 x double> %5155, <2 x double> %5149, <2 x double> %5153)
  store <2 x double> %5156, ptr %9, align 16, !tbaa !13
  %5157 = getelementptr inbounds i8, ptr %3, i64 48
  %5158 = load <2 x double>, ptr %5157, align 8, !tbaa !13
  store <2 x double> %5158, ptr %15, align 16, !tbaa !13
  %5159 = call { double, double } @Cd(ptr noundef nonnull %15)
  %5160 = extractvalue { double, double } %5159, 0
  %5161 = extractvalue { double, double } %5159, 1
  %5162 = fneg double %5161
  %5163 = call ptr @_pCd(ptr noundef nonnull %10)
  %5164 = getelementptr inbounds i8, ptr %5163, i64 8
  store double %5160, ptr %5163, align 8
  store double %5162, ptr %5164, align 8
  %5165 = load double, ptr %4, align 8, !tbaa !9
  %5166 = load double, ptr %5108, align 8, !tbaa !12
  %5167 = fneg double %5166
  %5168 = load <2 x double>, ptr %10, align 16, !tbaa !13
  %5169 = insertelement <2 x double> poison, double %5166, i64 0
  %5170 = insertelement <2 x double> %5169, double %5167, i64 1
  %5171 = fmul <2 x double> %5168, %5170
  %5172 = shufflevector <2 x double> %5171, <2 x double> poison, <2 x i32> <i32 1, i32 0>
  %5173 = insertelement <2 x double> poison, double %5165, i64 0
  %5174 = shufflevector <2 x double> %5173, <2 x double> poison, <2 x i32> zeroinitializer
  %5175 = call <2 x double> @llvm.fmuladd.v2f64(<2 x double> %5174, <2 x double> %5168, <2 x double> %5172)
  store <2 x double> %5175, ptr %9, align 16, !tbaa !13
  %5176 = getelementptr inbounds i8, ptr %3, i64 64
  %5177 = load <2 x double>, ptr %5176, align 8, !tbaa !13
  store <2 x double> %5177, ptr %16, align 16, !tbaa !13
  %5178 = call { double, double } @Cd(ptr noundef nonnull %16)
  %5179 = extractvalue { double, double } %5178, 0
  %5180 = extractvalue { double, double } %5178, 1
  %5181 = fneg double %5180
  %5182 = call ptr @_pCd(ptr noundef nonnull %10)
  %5183 = getelementptr inbounds i8, ptr %5182, i64 8
  store double %5179, ptr %5182, align 8
  store double %5181, ptr %5183, align 8
  %5184 = load double, ptr %4, align 8, !tbaa !9
  %5185 = load double, ptr %5108, align 8, !tbaa !12
  %5186 = fneg double %5185
  %5187 = load <2 x double>, ptr %10, align 16, !tbaa !13
  %5188 = insertelement <2 x double> poison, double %5185, i64 0
  %5189 = insertelement <2 x double> %5188, double %5186, i64 1
  %5190 = fmul <2 x double> %5187, %5189
  %5191 = shufflevector <2 x double> %5190, <2 x double> poison, <2 x i32> <i32 1, i32 0>
  %5192 = insertelement <2 x double> poison, double %5184, i64 0
  %5193 = shufflevector <2 x double> %5192, <2 x double> poison, <2 x i32> zeroinitializer
  %5194 = call <2 x double> @llvm.fmuladd.v2f64(<2 x double> %5193, <2 x double> %5187, <2 x double> %5191)
  store <2 x double> %5194, ptr %9, align 16, !tbaa !13
  %5195 = getelementptr inbounds i8, ptr %3, i64 80
  %5196 = load <2 x double>, ptr %5195, align 8, !tbaa !13
  store <2 x double> %5196, ptr %17, align 16, !tbaa !13
  %5197 = call { double, double } @Cd(ptr noundef nonnull %17)
  %5198 = extractvalue { double, double } %5197, 0
  %5199 = extractvalue { double, double } %5197, 1
  %5200 = fneg double %5199
  %5201 = call ptr @_pCd(ptr noundef nonnull %10)
  %5202 = getelementptr inbounds i8, ptr %5201, i64 8
  store double %5198, ptr %5201, align 8
  store double %5200, ptr %5202, align 8
  %5203 = load double, ptr %4, align 8, !tbaa !9
  %5204 = load double, ptr %5108, align 8, !tbaa !12
  %5205 = fneg double %5204
  %5206 = load <2 x double>, ptr %10, align 16, !tbaa !13
  %5207 = insertelement <2 x double> poison, double %5204, i64 0
  %5208 = insertelement <2 x double> %5207, double %5205, i64 1
  %5209 = fmul <2 x double> %5206, %5208
  %5210 = shufflevector <2 x double> %5209, <2 x double> poison, <2 x i32> <i32 1, i32 0>
  %5211 = insertelement <2 x double> poison, double %5203, i64 0
  %5212 = shufflevector <2 x double> %5211, <2 x double> poison, <2 x i32> zeroinitializer
  %5213 = call <2 x double> @llvm.fmuladd.v2f64(<2 x double> %5212, <2 x double> %5206, <2 x double> %5210)
  store <2 x double> %5213, ptr %9, align 16, !tbaa !13
  %5214 = getelementptr inbounds i8, ptr %3, i64 96
  %5215 = load <2 x double>, ptr %5214, align 8, !tbaa !13
  store <2 x double> %5215, ptr %18, align 16, !tbaa !13
  %5216 = call { double, double } @Cd(ptr noundef nonnull %18)
  %5217 = extractvalue { double, double } %5216, 0
  %5218 = extractvalue { double, double } %5216, 1
  %5219 = fneg double %5218
  %5220 = call ptr @_pCd(ptr noundef nonnull %10)
  %5221 = getelementptr inbounds i8, ptr %5220, i64 8
  store double %5217, ptr %5220, align 8
  store double %5219, ptr %5221, align 8
  %5222 = load double, ptr %4, align 8, !tbaa !9
  %5223 = load double, ptr %5108, align 8, !tbaa !12
  %5224 = fneg double %5223
  %5225 = load <2 x double>, ptr %10, align 16, !tbaa !13
  %5226 = insertelement <2 x double> poison, double %5223, i64 0
  %5227 = insertelement <2 x double> %5226, double %5224, i64 1
  %5228 = fmul <2 x double> %5225, %5227
  %5229 = shufflevector <2 x double> %5228, <2 x double> poison, <2 x i32> <i32 1, i32 0>
  %5230 = insertelement <2 x double> poison, double %5222, i64 0
  %5231 = shufflevector <2 x double> %5230, <2 x double> poison, <2 x i32> zeroinitializer
  %5232 = call <2 x double> @llvm.fmuladd.v2f64(<2 x double> %5231, <2 x double> %5225, <2 x double> %5229)
  store <2 x double> %5232, ptr %9, align 16, !tbaa !13
  %5233 = getelementptr inbounds i8, ptr %3, i64 112
  %5234 = load <2 x double>, ptr %5233, align 8, !tbaa !13
  store <2 x double> %5234, ptr %19, align 16, !tbaa !13
  %5235 = call { double, double } @Cd(ptr noundef nonnull %19)
  %5236 = extractvalue { double, double } %5235, 0
  %5237 = extractvalue { double, double } %5235, 1
  %5238 = fneg double %5237
  %5239 = call ptr @_pCd(ptr noundef nonnull %10)
  %5240 = getelementptr inbounds i8, ptr %5239, i64 8
  store double %5236, ptr %5239, align 8
  store double %5238, ptr %5240, align 8
  %5241 = load double, ptr %4, align 8, !tbaa !9
  %5242 = load double, ptr %5108, align 8, !tbaa !12
  %5243 = fneg double %5242
  %5244 = load <2 x double>, ptr %10, align 16, !tbaa !13
  %5245 = insertelement <2 x double> poison, double %5242, i64 0
  %5246 = insertelement <2 x double> %5245, double %5243, i64 1
  %5247 = fmul <2 x double> %5244, %5246
  %5248 = shufflevector <2 x double> %5247, <2 x double> poison, <2 x i32> <i32 1, i32 0>
  %5249 = insertelement <2 x double> poison, double %5241, i64 0
  %5250 = shufflevector <2 x double> %5249, <2 x double> poison, <2 x i32> zeroinitializer
  %5251 = call <2 x double> @llvm.fmuladd.v2f64(<2 x double> %5250, <2 x double> %5244, <2 x double> %5248)
  store <2 x double> %5251, ptr %9, align 16, !tbaa !13
  %5252 = getelementptr inbounds i8, ptr %3, i64 128
  %5253 = load <2 x double>, ptr %5252, align 8, !tbaa !13
  store <2 x double> %5253, ptr %20, align 16, !tbaa !13
  %5254 = call { double, double } @Cd(ptr noundef nonnull %20)
  %5255 = extractvalue { double, double } %5254, 0
  %5256 = extractvalue { double, double } %5254, 1
  %5257 = fneg double %5256
  %5258 = call ptr @_pCd(ptr noundef nonnull %10)
  %5259 = getelementptr inbounds i8, ptr %5258, i64 8
  store double %5255, ptr %5258, align 8
  store double %5257, ptr %5259, align 8
  %5260 = load double, ptr %4, align 8, !tbaa !9
  %5261 = load double, ptr %5108, align 8, !tbaa !12
  %5262 = fneg double %5261
  %5263 = load <2 x double>, ptr %10, align 16, !tbaa !13
  %5264 = insertelement <2 x double> poison, double %5261, i64 0
  %5265 = insertelement <2 x double> %5264, double %5262, i64 1
  %5266 = fmul <2 x double> %5263, %5265
  %5267 = shufflevector <2 x double> %5266, <2 x double> poison, <2 x i32> <i32 1, i32 0>
  %5268 = insertelement <2 x double> poison, double %5260, i64 0
  %5269 = shufflevector <2 x double> %5268, <2 x double> poison, <2 x i32> zeroinitializer
  %5270 = call <2 x double> @llvm.fmuladd.v2f64(<2 x double> %5269, <2 x double> %5263, <2 x double> %5267)
  %5271 = load i32, ptr %1, align 4, !tbaa !5
  %.not42834452 = icmp slt i32 %5271, 1
  br i1 %.not42834452, label %.loopexit, label %.lr.ph4454

.lr.ph4454:                                       ; preds = %5099
  %5272 = getelementptr inbounds i8, ptr %20, i64 8
  %5273 = getelementptr inbounds i8, ptr %19, i64 8
  %5274 = getelementptr inbounds i8, ptr %18, i64 8
  %5275 = getelementptr inbounds i8, ptr %17, i64 8
  %5276 = getelementptr inbounds i8, ptr %16, i64 8
  %5277 = getelementptr inbounds i8, ptr %15, i64 8
  %5278 = getelementptr inbounds i8, ptr %14, i64 8
  %5279 = getelementptr inbounds i8, ptr %13, i64 8
  %5280 = load <2 x double>, ptr %12, align 16
  %5281 = shufflevector <2 x double> %5280, <2 x double> poison, <2 x i32> <i32 1, i32 poison>
  %5282 = shl i32 %22, 1
  %5283 = load double, ptr %13, align 16, !tbaa !9
  %5284 = load double, ptr %5279, align 8, !tbaa !12
  %5285 = insertelement <2 x double> %5281, double %5284, i64 1
  %5286 = fneg <2 x double> %5285
  %5287 = mul nsw i32 %22, 3
  %5288 = load double, ptr %14, align 16, !tbaa !9
  %5289 = load double, ptr %5278, align 8, !tbaa !12
  %5290 = fneg double %5289
  %5291 = shl i32 %22, 2
  %5292 = load double, ptr %15, align 16, !tbaa !9
  %5293 = load double, ptr %5277, align 8, !tbaa !12
  %5294 = fneg double %5293
  %5295 = mul nsw i32 %22, 5
  %5296 = load double, ptr %16, align 16, !tbaa !9
  %5297 = load double, ptr %5276, align 8, !tbaa !12
  %5298 = fneg double %5297
  %5299 = mul nsw i32 %22, 6
  %5300 = load double, ptr %17, align 16, !tbaa !9
  %5301 = load double, ptr %5275, align 8, !tbaa !12
  %5302 = fneg double %5301
  %5303 = mul nsw i32 %22, 7
  %5304 = load double, ptr %18, align 16, !tbaa !9
  %5305 = load double, ptr %5274, align 8, !tbaa !12
  %5306 = fneg double %5305
  %5307 = shl i32 %22, 3
  %5308 = load double, ptr %19, align 16, !tbaa !9
  %5309 = load double, ptr %5273, align 8, !tbaa !12
  %5310 = fneg double %5309
  %5311 = mul nsw i32 %22, 9
  %5312 = load double, ptr %20, align 16, !tbaa !9
  %5313 = load double, ptr %5272, align 8, !tbaa !12
  %5314 = fneg double %5313
  %5315 = sext i32 %22 to i64
  %5316 = sext i32 %5282 to i64
  %5317 = sext i32 %5287 to i64
  %5318 = sext i32 %5291 to i64
  %5319 = sext i32 %5295 to i64
  %5320 = sext i32 %5299 to i64
  %5321 = sext i32 %5303 to i64
  %5322 = sext i32 %5307 to i64
  %5323 = sext i32 %5311 to i64
  %5324 = add nuw i32 %5271, 1
  %wide.trip.count4701 = zext i32 %5324 to i64
  %invariant.gep4761 = getelementptr %struct.doublecomplex, ptr %24, i64 %5315
  %invariant.gep4763 = getelementptr %struct.doublecomplex, ptr %24, i64 %5316
  %invariant.gep4765 = getelementptr %struct.doublecomplex, ptr %24, i64 %5317
  %invariant.gep4767 = getelementptr %struct.doublecomplex, ptr %24, i64 %5318
  %invariant.gep4769 = getelementptr %struct.doublecomplex, ptr %24, i64 %5319
  %invariant.gep4771 = getelementptr %struct.doublecomplex, ptr %24, i64 %5320
  %invariant.gep4773 = getelementptr %struct.doublecomplex, ptr %24, i64 %5321
  %invariant.gep4775 = getelementptr %struct.doublecomplex, ptr %24, i64 %5322
  %invariant.gep4777 = getelementptr %struct.doublecomplex, ptr %24, i64 %5323
  %5325 = insertelement <2 x double> %5280, double %5283, i64 1
  br label %5326

5326:                                             ; preds = %.lr.ph4454, %5326
  %indvars.iv4698 = phi i64 [ 1, %.lr.ph4454 ], [ %indvars.iv.next4699, %5326 ]
  %gep4762 = getelementptr %struct.doublecomplex, ptr %invariant.gep4761, i64 %indvars.iv4698
  %5327 = load double, ptr %gep4762, align 8, !tbaa !9
  %5328 = getelementptr inbounds i8, ptr %gep4762, i64 8
  %5329 = load double, ptr %5328, align 8, !tbaa !12
  %gep4764 = getelementptr %struct.doublecomplex, ptr %invariant.gep4763, i64 %indvars.iv4698
  %5330 = load double, ptr %gep4764, align 8, !tbaa !9
  %5331 = getelementptr inbounds i8, ptr %gep4764, i64 8
  %5332 = load double, ptr %5331, align 8, !tbaa !12
  %5333 = insertelement <2 x double> poison, double %5329, i64 0
  %5334 = insertelement <2 x double> %5333, double %5332, i64 1
  %5335 = fmul <2 x double> %5334, %5286
  %5336 = insertelement <2 x double> poison, double %5327, i64 0
  %5337 = insertelement <2 x double> %5336, double %5330, i64 1
  %5338 = call <2 x double> @llvm.fmuladd.v2f64(<2 x double> %5325, <2 x double> %5337, <2 x double> %5335)
  %5339 = fmul <2 x double> %5337, %5285
  %5340 = call <2 x double> @llvm.fmuladd.v2f64(<2 x double> %5325, <2 x double> %5334, <2 x double> %5339)
  %shift6680 = shufflevector <2 x double> %5338, <2 x double> poison, <2 x i32> <i32 1, i32 poison>
  %5341 = fadd <2 x double> %5338, %shift6680
  %5342 = extractelement <2 x double> %5341, i64 0
  %shift6681 = shufflevector <2 x double> %5340, <2 x double> poison, <2 x i32> <i32 1, i32 poison>
  %5343 = fadd <2 x double> %5340, %shift6681
  %5344 = extractelement <2 x double> %5343, i64 0
  %gep4766 = getelementptr %struct.doublecomplex, ptr %invariant.gep4765, i64 %indvars.iv4698
  %5345 = load double, ptr %gep4766, align 8, !tbaa !9
  %5346 = getelementptr inbounds i8, ptr %gep4766, i64 8
  %5347 = load double, ptr %5346, align 8, !tbaa !12
  %5348 = fmul double %5347, %5290
  %5349 = call double @llvm.fmuladd.f64(double %5288, double %5345, double %5348)
  %5350 = fmul double %5345, %5289
  %5351 = call double @llvm.fmuladd.f64(double %5288, double %5347, double %5350)
  %5352 = fadd double %5342, %5349
  %5353 = fadd double %5344, %5351
  %gep4768 = getelementptr %struct.doublecomplex, ptr %invariant.gep4767, i64 %indvars.iv4698
  %5354 = load double, ptr %gep4768, align 8, !tbaa !9
  %5355 = getelementptr inbounds i8, ptr %gep4768, i64 8
  %5356 = load double, ptr %5355, align 8, !tbaa !12
  %5357 = fmul double %5356, %5294
  %5358 = call double @llvm.fmuladd.f64(double %5292, double %5354, double %5357)
  %5359 = fmul double %5354, %5293
  %5360 = call double @llvm.fmuladd.f64(double %5292, double %5356, double %5359)
  %5361 = fadd double %5352, %5358
  %5362 = fadd double %5353, %5360
  %gep4770 = getelementptr %struct.doublecomplex, ptr %invariant.gep4769, i64 %indvars.iv4698
  %5363 = load double, ptr %gep4770, align 8, !tbaa !9
  %5364 = getelementptr inbounds i8, ptr %gep4770, i64 8
  %5365 = load double, ptr %5364, align 8, !tbaa !12
  %5366 = fmul double %5365, %5298
  %5367 = call double @llvm.fmuladd.f64(double %5296, double %5363, double %5366)
  %5368 = fmul double %5363, %5297
  %5369 = call double @llvm.fmuladd.f64(double %5296, double %5365, double %5368)
  %5370 = fadd double %5361, %5367
  %5371 = fadd double %5362, %5369
  %gep4772 = getelementptr %struct.doublecomplex, ptr %invariant.gep4771, i64 %indvars.iv4698
  %5372 = load double, ptr %gep4772, align 8, !tbaa !9
  %5373 = getelementptr inbounds i8, ptr %gep4772, i64 8
  %5374 = load double, ptr %5373, align 8, !tbaa !12
  %5375 = fmul double %5374, %5302
  %5376 = call double @llvm.fmuladd.f64(double %5300, double %5372, double %5375)
  %5377 = fmul double %5372, %5301
  %5378 = call double @llvm.fmuladd.f64(double %5300, double %5374, double %5377)
  %5379 = fadd double %5370, %5376
  %5380 = fadd double %5371, %5378
  %gep4774 = getelementptr %struct.doublecomplex, ptr %invariant.gep4773, i64 %indvars.iv4698
  %5381 = load double, ptr %gep4774, align 8, !tbaa !9
  %5382 = getelementptr inbounds i8, ptr %gep4774, i64 8
  %5383 = load double, ptr %5382, align 8, !tbaa !12
  %5384 = fmul double %5383, %5306
  %5385 = call double @llvm.fmuladd.f64(double %5304, double %5381, double %5384)
  %5386 = fmul double %5381, %5305
  %5387 = call double @llvm.fmuladd.f64(double %5304, double %5383, double %5386)
  %5388 = fadd double %5379, %5385
  %5389 = fadd double %5380, %5387
  %gep4776 = getelementptr %struct.doublecomplex, ptr %invariant.gep4775, i64 %indvars.iv4698
  %5390 = load double, ptr %gep4776, align 8, !tbaa !9
  %5391 = getelementptr inbounds i8, ptr %gep4776, i64 8
  %5392 = load double, ptr %5391, align 8, !tbaa !12
  %5393 = fmul double %5392, %5310
  %5394 = call double @llvm.fmuladd.f64(double %5308, double %5390, double %5393)
  %5395 = fmul double %5390, %5309
  %5396 = call double @llvm.fmuladd.f64(double %5308, double %5392, double %5395)
  %5397 = fadd double %5388, %5394
  %5398 = fadd double %5389, %5396
  %gep4778 = getelementptr %struct.doublecomplex, ptr %invariant.gep4777, i64 %indvars.iv4698
  %5399 = load double, ptr %gep4778, align 8, !tbaa !9
  %5400 = getelementptr inbounds i8, ptr %gep4778, i64 8
  %5401 = load double, ptr %5400, align 8, !tbaa !12
  %5402 = fmul double %5401, %5314
  %5403 = call double @llvm.fmuladd.f64(double %5312, double %5399, double %5402)
  %5404 = fmul double %5399, %5313
  %5405 = call double @llvm.fmuladd.f64(double %5312, double %5401, double %5404)
  %5406 = fadd double %5397, %5403
  %5407 = fadd double %5405, %5398
  %5408 = fneg double %5407
  %5409 = insertelement <2 x double> poison, double %5407, i64 0
  %5410 = insertelement <2 x double> %5409, double %5408, i64 1
  %5411 = fmul <2 x double> %5118, %5410
  %5412 = shufflevector <2 x double> %5411, <2 x double> poison, <2 x i32> <i32 1, i32 0>
  %5413 = insertelement <2 x double> poison, double %5406, i64 0
  %5414 = shufflevector <2 x double> %5413, <2 x double> poison, <2 x i32> zeroinitializer
  %5415 = call <2 x double> @llvm.fmuladd.v2f64(<2 x double> %5414, <2 x double> %5118, <2 x double> %5412)
  %5416 = load <2 x double>, ptr %gep4762, align 8, !tbaa !13
  %5417 = fsub <2 x double> %5416, %5415
  store <2 x double> %5417, ptr %gep4762, align 8, !tbaa !13
  %5418 = fmul <2 x double> %5137, %5410
  %5419 = shufflevector <2 x double> %5418, <2 x double> poison, <2 x i32> <i32 1, i32 0>
  %5420 = call <2 x double> @llvm.fmuladd.v2f64(<2 x double> %5414, <2 x double> %5137, <2 x double> %5419)
  %5421 = load <2 x double>, ptr %gep4764, align 8, !tbaa !13
  %5422 = fsub <2 x double> %5421, %5420
  store <2 x double> %5422, ptr %gep4764, align 8, !tbaa !13
  %5423 = fmul <2 x double> %5156, %5410
  %5424 = shufflevector <2 x double> %5423, <2 x double> poison, <2 x i32> <i32 1, i32 0>
  %5425 = call <2 x double> @llvm.fmuladd.v2f64(<2 x double> %5414, <2 x double> %5156, <2 x double> %5424)
  %5426 = load <2 x double>, ptr %gep4766, align 8, !tbaa !13
  %5427 = fsub <2 x double> %5426, %5425
  store <2 x double> %5427, ptr %gep4766, align 8, !tbaa !13
  %5428 = fmul <2 x double> %5175, %5410
  %5429 = shufflevector <2 x double> %5428, <2 x double> poison, <2 x i32> <i32 1, i32 0>
  %5430 = call <2 x double> @llvm.fmuladd.v2f64(<2 x double> %5414, <2 x double> %5175, <2 x double> %5429)
  %5431 = load <2 x double>, ptr %gep4768, align 8, !tbaa !13
  %5432 = fsub <2 x double> %5431, %5430
  store <2 x double> %5432, ptr %gep4768, align 8, !tbaa !13
  %5433 = fmul <2 x double> %5194, %5410
  %5434 = shufflevector <2 x double> %5433, <2 x double> poison, <2 x i32> <i32 1, i32 0>
  %5435 = call <2 x double> @llvm.fmuladd.v2f64(<2 x double> %5414, <2 x double> %5194, <2 x double> %5434)
  %5436 = load <2 x double>, ptr %gep4770, align 8, !tbaa !13
  %5437 = fsub <2 x double> %5436, %5435
  store <2 x double> %5437, ptr %gep4770, align 8, !tbaa !13
  %5438 = fmul <2 x double> %5213, %5410
  %5439 = shufflevector <2 x double> %5438, <2 x double> poison, <2 x i32> <i32 1, i32 0>
  %5440 = call <2 x double> @llvm.fmuladd.v2f64(<2 x double> %5414, <2 x double> %5213, <2 x double> %5439)
  %5441 = load <2 x double>, ptr %gep4772, align 8, !tbaa !13
  %5442 = fsub <2 x double> %5441, %5440
  store <2 x double> %5442, ptr %gep4772, align 8, !tbaa !13
  %5443 = fmul <2 x double> %5232, %5410
  %5444 = shufflevector <2 x double> %5443, <2 x double> poison, <2 x i32> <i32 1, i32 0>
  %5445 = call <2 x double> @llvm.fmuladd.v2f64(<2 x double> %5414, <2 x double> %5232, <2 x double> %5444)
  %5446 = load <2 x double>, ptr %gep4774, align 8, !tbaa !13
  %5447 = fsub <2 x double> %5446, %5445
  store <2 x double> %5447, ptr %gep4774, align 8, !tbaa !13
  %5448 = fmul <2 x double> %5251, %5410
  %5449 = shufflevector <2 x double> %5448, <2 x double> poison, <2 x i32> <i32 1, i32 0>
  %5450 = call <2 x double> @llvm.fmuladd.v2f64(<2 x double> %5414, <2 x double> %5251, <2 x double> %5449)
  %5451 = load <2 x double>, ptr %gep4776, align 8, !tbaa !13
  %5452 = fsub <2 x double> %5451, %5450
  store <2 x double> %5452, ptr %gep4776, align 8, !tbaa !13
  %5453 = fmul <2 x double> %5270, %5410
  %5454 = shufflevector <2 x double> %5453, <2 x double> poison, <2 x i32> <i32 1, i32 0>
  %5455 = call <2 x double> @llvm.fmuladd.v2f64(<2 x double> %5414, <2 x double> %5270, <2 x double> %5454)
  %5456 = load <2 x double>, ptr %gep4778, align 8, !tbaa !13
  %5457 = fsub <2 x double> %5456, %5455
  store <2 x double> %5457, ptr %gep4778, align 8, !tbaa !13
  %indvars.iv.next4699 = add nuw nsw i64 %indvars.iv4698, 1
  %exitcond4702.not = icmp eq i64 %indvars.iv.next4699, %wide.trip.count4701
  br i1 %exitcond4702.not, label %.loopexit, label %5326, !llvm.loop !43

5458:                                             ; preds = %2482
  %5459 = load <2 x double>, ptr %3, align 8, !tbaa !13
  store <2 x double> %5459, ptr %12, align 16, !tbaa !13
  %5460 = call { double, double } @Cd(ptr noundef nonnull %12)
  %5461 = extractvalue { double, double } %5460, 0
  %5462 = extractvalue { double, double } %5460, 1
  %5463 = fneg double %5462
  %5464 = call ptr @_pCd(ptr noundef nonnull %10)
  %5465 = getelementptr inbounds i8, ptr %5464, i64 8
  store double %5461, ptr %5464, align 8
  store double %5463, ptr %5465, align 8
  %5466 = load double, ptr %4, align 8, !tbaa !9
  %5467 = getelementptr inbounds i8, ptr %4, i64 8
  %5468 = load double, ptr %5467, align 8, !tbaa !12
  %5469 = fneg double %5468
  %5470 = load <2 x double>, ptr %10, align 16, !tbaa !13
  %5471 = insertelement <2 x double> poison, double %5468, i64 0
  %5472 = insertelement <2 x double> %5471, double %5469, i64 1
  %5473 = fmul <2 x double> %5470, %5472
  %5474 = shufflevector <2 x double> %5473, <2 x double> poison, <2 x i32> <i32 1, i32 0>
  %5475 = insertelement <2 x double> poison, double %5466, i64 0
  %5476 = shufflevector <2 x double> %5475, <2 x double> poison, <2 x i32> zeroinitializer
  %5477 = call <2 x double> @llvm.fmuladd.v2f64(<2 x double> %5476, <2 x double> %5470, <2 x double> %5474)
  store <2 x double> %5477, ptr %9, align 16, !tbaa !13
  %5478 = getelementptr inbounds i8, ptr %3, i64 16
  %5479 = load <2 x double>, ptr %5478, align 8, !tbaa !13
  store <2 x double> %5479, ptr %13, align 16, !tbaa !13
  %5480 = call { double, double } @Cd(ptr noundef nonnull %13)
  %5481 = extractvalue { double, double } %5480, 0
  %5482 = extractvalue { double, double } %5480, 1
  %5483 = fneg double %5482
  %5484 = call ptr @_pCd(ptr noundef nonnull %10)
  %5485 = getelementptr inbounds i8, ptr %5484, i64 8
  store double %5481, ptr %5484, align 8
  store double %5483, ptr %5485, align 8
  %5486 = load double, ptr %4, align 8, !tbaa !9
  %5487 = load double, ptr %5467, align 8, !tbaa !12
  %5488 = fneg double %5487
  %5489 = load <2 x double>, ptr %10, align 16, !tbaa !13
  %5490 = insertelement <2 x double> poison, double %5487, i64 0
  %5491 = insertelement <2 x double> %5490, double %5488, i64 1
  %5492 = fmul <2 x double> %5489, %5491
  %5493 = shufflevector <2 x double> %5492, <2 x double> poison, <2 x i32> <i32 1, i32 0>
  %5494 = insertelement <2 x double> poison, double %5486, i64 0
  %5495 = shufflevector <2 x double> %5494, <2 x double> poison, <2 x i32> zeroinitializer
  %5496 = call <2 x double> @llvm.fmuladd.v2f64(<2 x double> %5495, <2 x double> %5489, <2 x double> %5493)
  store <2 x double> %5496, ptr %9, align 16, !tbaa !13
  %5497 = getelementptr inbounds i8, ptr %3, i64 32
  %5498 = load <2 x double>, ptr %5497, align 8, !tbaa !13
  store <2 x double> %5498, ptr %14, align 16, !tbaa !13
  %5499 = call { double, double } @Cd(ptr noundef nonnull %14)
  %5500 = extractvalue { double, double } %5499, 0
  %5501 = extractvalue { double, double } %5499, 1
  %5502 = fneg double %5501
  %5503 = call ptr @_pCd(ptr noundef nonnull %10)
  %5504 = getelementptr inbounds i8, ptr %5503, i64 8
  store double %5500, ptr %5503, align 8
  store double %5502, ptr %5504, align 8
  %5505 = load double, ptr %4, align 8, !tbaa !9
  %5506 = load double, ptr %5467, align 8, !tbaa !12
  %5507 = fneg double %5506
  %5508 = load <2 x double>, ptr %10, align 16, !tbaa !13
  %5509 = insertelement <2 x double> poison, double %5506, i64 0
  %5510 = insertelement <2 x double> %5509, double %5507, i64 1
  %5511 = fmul <2 x double> %5508, %5510
  %5512 = shufflevector <2 x double> %5511, <2 x double> poison, <2 x i32> <i32 1, i32 0>
  %5513 = insertelement <2 x double> poison, double %5505, i64 0
  %5514 = shufflevector <2 x double> %5513, <2 x double> poison, <2 x i32> zeroinitializer
  %5515 = call <2 x double> @llvm.fmuladd.v2f64(<2 x double> %5514, <2 x double> %5508, <2 x double> %5512)
  store <2 x double> %5515, ptr %9, align 16, !tbaa !13
  %5516 = getelementptr inbounds i8, ptr %3, i64 48
  %5517 = load <2 x double>, ptr %5516, align 8, !tbaa !13
  store <2 x double> %5517, ptr %15, align 16, !tbaa !13
  %5518 = call { double, double } @Cd(ptr noundef nonnull %15)
  %5519 = extractvalue { double, double } %5518, 0
  %5520 = extractvalue { double, double } %5518, 1
  %5521 = fneg double %5520
  %5522 = call ptr @_pCd(ptr noundef nonnull %10)
  %5523 = getelementptr inbounds i8, ptr %5522, i64 8
  store double %5519, ptr %5522, align 8
  store double %5521, ptr %5523, align 8
  %5524 = load double, ptr %4, align 8, !tbaa !9
  %5525 = load double, ptr %5467, align 8, !tbaa !12
  %5526 = fneg double %5525
  %5527 = load <2 x double>, ptr %10, align 16, !tbaa !13
  %5528 = insertelement <2 x double> poison, double %5525, i64 0
  %5529 = insertelement <2 x double> %5528, double %5526, i64 1
  %5530 = fmul <2 x double> %5527, %5529
  %5531 = shufflevector <2 x double> %5530, <2 x double> poison, <2 x i32> <i32 1, i32 0>
  %5532 = insertelement <2 x double> poison, double %5524, i64 0
  %5533 = shufflevector <2 x double> %5532, <2 x double> poison, <2 x i32> zeroinitializer
  %5534 = call <2 x double> @llvm.fmuladd.v2f64(<2 x double> %5533, <2 x double> %5527, <2 x double> %5531)
  store <2 x double> %5534, ptr %9, align 16, !tbaa !13
  %5535 = getelementptr inbounds i8, ptr %3, i64 64
  %5536 = load <2 x double>, ptr %5535, align 8, !tbaa !13
  store <2 x double> %5536, ptr %16, align 16, !tbaa !13
  %5537 = call { double, double } @Cd(ptr noundef nonnull %16)
  %5538 = extractvalue { double, double } %5537, 0
  %5539 = extractvalue { double, double } %5537, 1
  %5540 = fneg double %5539
  %5541 = call ptr @_pCd(ptr noundef nonnull %10)
  %5542 = getelementptr inbounds i8, ptr %5541, i64 8
  store double %5538, ptr %5541, align 8
  store double %5540, ptr %5542, align 8
  %5543 = load double, ptr %4, align 8, !tbaa !9
  %5544 = load double, ptr %5467, align 8, !tbaa !12
  %5545 = fneg double %5544
  %5546 = load <2 x double>, ptr %10, align 16, !tbaa !13
  %5547 = insertelement <2 x double> poison, double %5544, i64 0
  %5548 = insertelement <2 x double> %5547, double %5545, i64 1
  %5549 = fmul <2 x double> %5546, %5548
  %5550 = shufflevector <2 x double> %5549, <2 x double> poison, <2 x i32> <i32 1, i32 0>
  %5551 = insertelement <2 x double> poison, double %5543, i64 0
  %5552 = shufflevector <2 x double> %5551, <2 x double> poison, <2 x i32> zeroinitializer
  %5553 = call <2 x double> @llvm.fmuladd.v2f64(<2 x double> %5552, <2 x double> %5546, <2 x double> %5550)
  store <2 x double> %5553, ptr %9, align 16, !tbaa !13
  %5554 = getelementptr inbounds i8, ptr %3, i64 80
  %5555 = load <2 x double>, ptr %5554, align 8, !tbaa !13
  store <2 x double> %5555, ptr %17, align 16, !tbaa !13
  %5556 = call { double, double } @Cd(ptr noundef nonnull %17)
  %5557 = extractvalue { double, double } %5556, 0
  %5558 = extractvalue { double, double } %5556, 1
  %5559 = fneg double %5558
  %5560 = call ptr @_pCd(ptr noundef nonnull %10)
  %5561 = getelementptr inbounds i8, ptr %5560, i64 8
  store double %5557, ptr %5560, align 8
  store double %5559, ptr %5561, align 8
  %5562 = load double, ptr %4, align 8, !tbaa !9
  %5563 = load double, ptr %5467, align 8, !tbaa !12
  %5564 = fneg double %5563
  %5565 = load <2 x double>, ptr %10, align 16, !tbaa !13
  %5566 = insertelement <2 x double> poison, double %5563, i64 0
  %5567 = insertelement <2 x double> %5566, double %5564, i64 1
  %5568 = fmul <2 x double> %5565, %5567
  %5569 = shufflevector <2 x double> %5568, <2 x double> poison, <2 x i32> <i32 1, i32 0>
  %5570 = insertelement <2 x double> poison, double %5562, i64 0
  %5571 = shufflevector <2 x double> %5570, <2 x double> poison, <2 x i32> zeroinitializer
  %5572 = call <2 x double> @llvm.fmuladd.v2f64(<2 x double> %5571, <2 x double> %5565, <2 x double> %5569)
  store <2 x double> %5572, ptr %9, align 16, !tbaa !13
  %5573 = getelementptr inbounds i8, ptr %3, i64 96
  %5574 = load <2 x double>, ptr %5573, align 8, !tbaa !13
  store <2 x double> %5574, ptr %18, align 16, !tbaa !13
  %5575 = call { double, double } @Cd(ptr noundef nonnull %18)
  %5576 = extractvalue { double, double } %5575, 0
  %5577 = extractvalue { double, double } %5575, 1
  %5578 = fneg double %5577
  %5579 = call ptr @_pCd(ptr noundef nonnull %10)
  %5580 = getelementptr inbounds i8, ptr %5579, i64 8
  store double %5576, ptr %5579, align 8
  store double %5578, ptr %5580, align 8
  %5581 = load double, ptr %4, align 8, !tbaa !9
  %5582 = load double, ptr %5467, align 8, !tbaa !12
  %5583 = fneg double %5582
  %5584 = load <2 x double>, ptr %10, align 16, !tbaa !13
  %5585 = insertelement <2 x double> poison, double %5582, i64 0
  %5586 = insertelement <2 x double> %5585, double %5583, i64 1
  %5587 = fmul <2 x double> %5584, %5586
  %5588 = shufflevector <2 x double> %5587, <2 x double> poison, <2 x i32> <i32 1, i32 0>
  %5589 = insertelement <2 x double> poison, double %5581, i64 0
  %5590 = shufflevector <2 x double> %5589, <2 x double> poison, <2 x i32> zeroinitializer
  %5591 = call <2 x double> @llvm.fmuladd.v2f64(<2 x double> %5590, <2 x double> %5584, <2 x double> %5588)
  store <2 x double> %5591, ptr %9, align 16, !tbaa !13
  %5592 = getelementptr inbounds i8, ptr %3, i64 112
  %5593 = load <2 x double>, ptr %5592, align 8, !tbaa !13
  store <2 x double> %5593, ptr %19, align 16, !tbaa !13
  %5594 = call { double, double } @Cd(ptr noundef nonnull %19)
  %5595 = extractvalue { double, double } %5594, 0
  %5596 = extractvalue { double, double } %5594, 1
  %5597 = fneg double %5596
  %5598 = call ptr @_pCd(ptr noundef nonnull %10)
  %5599 = getelementptr inbounds i8, ptr %5598, i64 8
  store double %5595, ptr %5598, align 8
  store double %5597, ptr %5599, align 8
  %5600 = load double, ptr %4, align 8, !tbaa !9
  %5601 = load double, ptr %5467, align 8, !tbaa !12
  %5602 = fneg double %5601
  %5603 = load <2 x double>, ptr %10, align 16, !tbaa !13
  %5604 = insertelement <2 x double> poison, double %5601, i64 0
  %5605 = insertelement <2 x double> %5604, double %5602, i64 1
  %5606 = fmul <2 x double> %5603, %5605
  %5607 = shufflevector <2 x double> %5606, <2 x double> poison, <2 x i32> <i32 1, i32 0>
  %5608 = insertelement <2 x double> poison, double %5600, i64 0
  %5609 = shufflevector <2 x double> %5608, <2 x double> poison, <2 x i32> zeroinitializer
  %5610 = call <2 x double> @llvm.fmuladd.v2f64(<2 x double> %5609, <2 x double> %5603, <2 x double> %5607)
  store <2 x double> %5610, ptr %9, align 16, !tbaa !13
  %5611 = getelementptr inbounds i8, ptr %3, i64 128
  %5612 = load <2 x double>, ptr %5611, align 8, !tbaa !13
  store <2 x double> %5612, ptr %20, align 16, !tbaa !13
  %5613 = call { double, double } @Cd(ptr noundef nonnull %20)
  %5614 = extractvalue { double, double } %5613, 0
  %5615 = extractvalue { double, double } %5613, 1
  %5616 = fneg double %5615
  %5617 = call ptr @_pCd(ptr noundef nonnull %10)
  %5618 = getelementptr inbounds i8, ptr %5617, i64 8
  store double %5614, ptr %5617, align 8
  store double %5616, ptr %5618, align 8
  %5619 = load double, ptr %4, align 8, !tbaa !9
  %5620 = load double, ptr %5467, align 8, !tbaa !12
  %5621 = fneg double %5620
  %5622 = load <2 x double>, ptr %10, align 16, !tbaa !13
  %5623 = insertelement <2 x double> poison, double %5620, i64 0
  %5624 = insertelement <2 x double> %5623, double %5621, i64 1
  %5625 = fmul <2 x double> %5622, %5624
  %5626 = shufflevector <2 x double> %5625, <2 x double> poison, <2 x i32> <i32 1, i32 0>
  %5627 = insertelement <2 x double> poison, double %5619, i64 0
  %5628 = shufflevector <2 x double> %5627, <2 x double> poison, <2 x i32> zeroinitializer
  %5629 = call <2 x double> @llvm.fmuladd.v2f64(<2 x double> %5628, <2 x double> %5622, <2 x double> %5626)
  store <2 x double> %5629, ptr %9, align 16, !tbaa !13
  %5630 = getelementptr inbounds i8, ptr %3, i64 144
  %5631 = load <2 x double>, ptr %5630, align 8, !tbaa !13
  store <2 x double> %5631, ptr %21, align 16, !tbaa !13
  %5632 = call { double, double } @Cd(ptr noundef nonnull %21)
  %5633 = extractvalue { double, double } %5632, 0
  %5634 = extractvalue { double, double } %5632, 1
  %5635 = fneg double %5634
  %5636 = call ptr @_pCd(ptr noundef nonnull %10)
  %5637 = getelementptr inbounds i8, ptr %5636, i64 8
  store double %5633, ptr %5636, align 8
  store double %5635, ptr %5637, align 8
  %5638 = load double, ptr %4, align 8, !tbaa !9
  %5639 = load double, ptr %5467, align 8, !tbaa !12
  %5640 = fneg double %5639
  %5641 = load <2 x double>, ptr %10, align 16, !tbaa !13
  %5642 = insertelement <2 x double> poison, double %5639, i64 0
  %5643 = insertelement <2 x double> %5642, double %5640, i64 1
  %5644 = fmul <2 x double> %5641, %5643
  %5645 = shufflevector <2 x double> %5644, <2 x double> poison, <2 x i32> <i32 1, i32 0>
  %5646 = insertelement <2 x double> poison, double %5638, i64 0
  %5647 = shufflevector <2 x double> %5646, <2 x double> poison, <2 x i32> zeroinitializer
  %5648 = call <2 x double> @llvm.fmuladd.v2f64(<2 x double> %5647, <2 x double> %5641, <2 x double> %5645)
  %5649 = load i32, ptr %1, align 4, !tbaa !5
  %.not42824439 = icmp slt i32 %5649, 1
  br i1 %.not42824439, label %.loopexit, label %.lr.ph4441

.lr.ph4441:                                       ; preds = %5458
  %5650 = getelementptr inbounds i8, ptr %21, i64 8
  %5651 = getelementptr inbounds i8, ptr %20, i64 8
  %5652 = getelementptr inbounds i8, ptr %19, i64 8
  %5653 = getelementptr inbounds i8, ptr %18, i64 8
  %5654 = getelementptr inbounds i8, ptr %17, i64 8
  %5655 = getelementptr inbounds i8, ptr %16, i64 8
  %5656 = getelementptr inbounds i8, ptr %15, i64 8
  %5657 = getelementptr inbounds i8, ptr %14, i64 8
  %5658 = getelementptr inbounds i8, ptr %13, i64 8
  %5659 = load <2 x double>, ptr %12, align 16
  %5660 = shufflevector <2 x double> %5659, <2 x double> poison, <2 x i32> <i32 1, i32 poison>
  %5661 = shl i32 %22, 1
  %5662 = load double, ptr %13, align 16, !tbaa !9
  %5663 = load double, ptr %5658, align 8, !tbaa !12
  %5664 = insertelement <2 x double> %5660, double %5663, i64 1
  %5665 = fneg <2 x double> %5664
  %5666 = mul nsw i32 %22, 3
  %5667 = load double, ptr %14, align 16, !tbaa !9
  %5668 = load double, ptr %5657, align 8, !tbaa !12
  %5669 = fneg double %5668
  %5670 = shl i32 %22, 2
  %5671 = load double, ptr %15, align 16, !tbaa !9
  %5672 = load double, ptr %5656, align 8, !tbaa !12
  %5673 = fneg double %5672
  %5674 = mul nsw i32 %22, 5
  %5675 = load double, ptr %16, align 16, !tbaa !9
  %5676 = load double, ptr %5655, align 8, !tbaa !12
  %5677 = fneg double %5676
  %5678 = mul nsw i32 %22, 6
  %5679 = load double, ptr %17, align 16, !tbaa !9
  %5680 = load double, ptr %5654, align 8, !tbaa !12
  %5681 = fneg double %5680
  %5682 = mul nsw i32 %22, 7
  %5683 = load double, ptr %18, align 16, !tbaa !9
  %5684 = load double, ptr %5653, align 8, !tbaa !12
  %5685 = fneg double %5684
  %5686 = shl i32 %22, 3
  %5687 = load double, ptr %19, align 16, !tbaa !9
  %5688 = load double, ptr %5652, align 8, !tbaa !12
  %5689 = fneg double %5688
  %5690 = mul nsw i32 %22, 9
  %5691 = load double, ptr %20, align 16, !tbaa !9
  %5692 = load double, ptr %5651, align 8, !tbaa !12
  %5693 = fneg double %5692
  %5694 = mul nsw i32 %22, 10
  %5695 = load double, ptr %21, align 16, !tbaa !9
  %5696 = load double, ptr %5650, align 8, !tbaa !12
  %5697 = fneg double %5696
  %5698 = sext i32 %22 to i64
  %5699 = sext i32 %5661 to i64
  %5700 = sext i32 %5666 to i64
  %5701 = sext i32 %5670 to i64
  %5702 = sext i32 %5674 to i64
  %5703 = sext i32 %5678 to i64
  %5704 = sext i32 %5682 to i64
  %5705 = sext i32 %5686 to i64
  %5706 = sext i32 %5690 to i64
  %5707 = sext i32 %5694 to i64
  %5708 = add nuw i32 %5649, 1
  %wide.trip.count4696 = zext i32 %5708 to i64
  %invariant.gep = getelementptr %struct.doublecomplex, ptr %24, i64 %5698
  %invariant.gep4743 = getelementptr %struct.doublecomplex, ptr %24, i64 %5699
  %invariant.gep4745 = getelementptr %struct.doublecomplex, ptr %24, i64 %5700
  %invariant.gep4747 = getelementptr %struct.doublecomplex, ptr %24, i64 %5701
  %invariant.gep4749 = getelementptr %struct.doublecomplex, ptr %24, i64 %5702
  %invariant.gep4751 = getelementptr %struct.doublecomplex, ptr %24, i64 %5703
  %invariant.gep4753 = getelementptr %struct.doublecomplex, ptr %24, i64 %5704
  %invariant.gep4755 = getelementptr %struct.doublecomplex, ptr %24, i64 %5705
  %invariant.gep4757 = getelementptr %struct.doublecomplex, ptr %24, i64 %5706
  %invariant.gep4759 = getelementptr %struct.doublecomplex, ptr %24, i64 %5707
  %5709 = insertelement <2 x double> %5659, double %5662, i64 1
  br label %5710

5710:                                             ; preds = %.lr.ph4441, %5710
  %indvars.iv4693 = phi i64 [ 1, %.lr.ph4441 ], [ %indvars.iv.next4694, %5710 ]
  %gep = getelementptr %struct.doublecomplex, ptr %invariant.gep, i64 %indvars.iv4693
  %5711 = load double, ptr %gep, align 8, !tbaa !9
  %5712 = getelementptr inbounds i8, ptr %gep, i64 8
  %5713 = load double, ptr %5712, align 8, !tbaa !12
  %gep4744 = getelementptr %struct.doublecomplex, ptr %invariant.gep4743, i64 %indvars.iv4693
  %5714 = load double, ptr %gep4744, align 8, !tbaa !9
  %5715 = getelementptr inbounds i8, ptr %gep4744, i64 8
  %5716 = load double, ptr %5715, align 8, !tbaa !12
  %5717 = insertelement <2 x double> poison, double %5713, i64 0
  %5718 = insertelement <2 x double> %5717, double %5716, i64 1
  %5719 = fmul <2 x double> %5718, %5665
  %5720 = insertelement <2 x double> poison, double %5711, i64 0
  %5721 = insertelement <2 x double> %5720, double %5714, i64 1
  %5722 = call <2 x double> @llvm.fmuladd.v2f64(<2 x double> %5709, <2 x double> %5721, <2 x double> %5719)
  %5723 = fmul <2 x double> %5721, %5664
  %5724 = call <2 x double> @llvm.fmuladd.v2f64(<2 x double> %5709, <2 x double> %5718, <2 x double> %5723)
  %shift6682 = shufflevector <2 x double> %5722, <2 x double> poison, <2 x i32> <i32 1, i32 poison>
  %5725 = fadd <2 x double> %5722, %shift6682
  %5726 = extractelement <2 x double> %5725, i64 0
  %shift6683 = shufflevector <2 x double> %5724, <2 x double> poison, <2 x i32> <i32 1, i32 poison>
  %5727 = fadd <2 x double> %5724, %shift6683
  %5728 = extractelement <2 x double> %5727, i64 0
  %gep4746 = getelementptr %struct.doublecomplex, ptr %invariant.gep4745, i64 %indvars.iv4693
  %5729 = load double, ptr %gep4746, align 8, !tbaa !9
  %5730 = getelementptr inbounds i8, ptr %gep4746, i64 8
  %5731 = load double, ptr %5730, align 8, !tbaa !12
  %5732 = fmul double %5731, %5669
  %5733 = call double @llvm.fmuladd.f64(double %5667, double %5729, double %5732)
  %5734 = fmul double %5729, %5668
  %5735 = call double @llvm.fmuladd.f64(double %5667, double %5731, double %5734)
  %5736 = fadd double %5726, %5733
  %5737 = fadd double %5728, %5735
  %gep4748 = getelementptr %struct.doublecomplex, ptr %invariant.gep4747, i64 %indvars.iv4693
  %5738 = load double, ptr %gep4748, align 8, !tbaa !9
  %5739 = getelementptr inbounds i8, ptr %gep4748, i64 8
  %5740 = load double, ptr %5739, align 8, !tbaa !12
  %5741 = fmul double %5740, %5673
  %5742 = call double @llvm.fmuladd.f64(double %5671, double %5738, double %5741)
  %5743 = fmul double %5738, %5672
  %5744 = call double @llvm.fmuladd.f64(double %5671, double %5740, double %5743)
  %5745 = fadd double %5736, %5742
  %5746 = fadd double %5737, %5744
  %gep4750 = getelementptr %struct.doublecomplex, ptr %invariant.gep4749, i64 %indvars.iv4693
  %5747 = load double, ptr %gep4750, align 8, !tbaa !9
  %5748 = getelementptr inbounds i8, ptr %gep4750, i64 8
  %5749 = load double, ptr %5748, align 8, !tbaa !12
  %5750 = fmul double %5749, %5677
  %5751 = call double @llvm.fmuladd.f64(double %5675, double %5747, double %5750)
  %5752 = fmul double %5747, %5676
  %5753 = call double @llvm.fmuladd.f64(double %5675, double %5749, double %5752)
  %5754 = fadd double %5745, %5751
  %5755 = fadd double %5746, %5753
  %gep4752 = getelementptr %struct.doublecomplex, ptr %invariant.gep4751, i64 %indvars.iv4693
  %5756 = load double, ptr %gep4752, align 8, !tbaa !9
  %5757 = getelementptr inbounds i8, ptr %gep4752, i64 8
  %5758 = load double, ptr %5757, align 8, !tbaa !12
  %5759 = fmul double %5758, %5681
  %5760 = call double @llvm.fmuladd.f64(double %5679, double %5756, double %5759)
  %5761 = fmul double %5756, %5680
  %5762 = call double @llvm.fmuladd.f64(double %5679, double %5758, double %5761)
  %5763 = fadd double %5754, %5760
  %5764 = fadd double %5755, %5762
  %gep4754 = getelementptr %struct.doublecomplex, ptr %invariant.gep4753, i64 %indvars.iv4693
  %5765 = load double, ptr %gep4754, align 8, !tbaa !9
  %5766 = getelementptr inbounds i8, ptr %gep4754, i64 8
  %5767 = load double, ptr %5766, align 8, !tbaa !12
  %5768 = fmul double %5767, %5685
  %5769 = call double @llvm.fmuladd.f64(double %5683, double %5765, double %5768)
  %5770 = fmul double %5765, %5684
  %5771 = call double @llvm.fmuladd.f64(double %5683, double %5767, double %5770)
  %5772 = fadd double %5763, %5769
  %5773 = fadd double %5764, %5771
  %gep4756 = getelementptr %struct.doublecomplex, ptr %invariant.gep4755, i64 %indvars.iv4693
  %5774 = load double, ptr %gep4756, align 8, !tbaa !9
  %5775 = getelementptr inbounds i8, ptr %gep4756, i64 8
  %5776 = load double, ptr %5775, align 8, !tbaa !12
  %5777 = fmul double %5776, %5689
  %5778 = call double @llvm.fmuladd.f64(double %5687, double %5774, double %5777)
  %5779 = fmul double %5774, %5688
  %5780 = call double @llvm.fmuladd.f64(double %5687, double %5776, double %5779)
  %5781 = fadd double %5772, %5778
  %5782 = fadd double %5773, %5780
  %gep4758 = getelementptr %struct.doublecomplex, ptr %invariant.gep4757, i64 %indvars.iv4693
  %5783 = load double, ptr %gep4758, align 8, !tbaa !9
  %5784 = getelementptr inbounds i8, ptr %gep4758, i64 8
  %5785 = load double, ptr %5784, align 8, !tbaa !12
  %5786 = fmul double %5785, %5693
  %5787 = call double @llvm.fmuladd.f64(double %5691, double %5783, double %5786)
  %5788 = fmul double %5783, %5692
  %5789 = call double @llvm.fmuladd.f64(double %5691, double %5785, double %5788)
  %5790 = fadd double %5781, %5787
  %5791 = fadd double %5782, %5789
  %gep4760 = getelementptr %struct.doublecomplex, ptr %invariant.gep4759, i64 %indvars.iv4693
  %5792 = load double, ptr %gep4760, align 8, !tbaa !9
  %5793 = getelementptr inbounds i8, ptr %gep4760, i64 8
  %5794 = load double, ptr %5793, align 8, !tbaa !12
  %5795 = fmul double %5794, %5697
  %5796 = call double @llvm.fmuladd.f64(double %5695, double %5792, double %5795)
  %5797 = fmul double %5792, %5696
  %5798 = call double @llvm.fmuladd.f64(double %5695, double %5794, double %5797)
  %5799 = fadd double %5790, %5796
  %5800 = fadd double %5798, %5791
  %5801 = fneg double %5800
  %5802 = insertelement <2 x double> poison, double %5800, i64 0
  %5803 = insertelement <2 x double> %5802, double %5801, i64 1
  %5804 = fmul <2 x double> %5477, %5803
  %5805 = shufflevector <2 x double> %5804, <2 x double> poison, <2 x i32> <i32 1, i32 0>
  %5806 = insertelement <2 x double> poison, double %5799, i64 0
  %5807 = shufflevector <2 x double> %5806, <2 x double> poison, <2 x i32> zeroinitializer
  %5808 = call <2 x double> @llvm.fmuladd.v2f64(<2 x double> %5807, <2 x double> %5477, <2 x double> %5805)
  %5809 = load <2 x double>, ptr %gep, align 8, !tbaa !13
  %5810 = fsub <2 x double> %5809, %5808
  store <2 x double> %5810, ptr %gep, align 8, !tbaa !13
  %5811 = fmul <2 x double> %5496, %5803
  %5812 = shufflevector <2 x double> %5811, <2 x double> poison, <2 x i32> <i32 1, i32 0>
  %5813 = call <2 x double> @llvm.fmuladd.v2f64(<2 x double> %5807, <2 x double> %5496, <2 x double> %5812)
  %5814 = load <2 x double>, ptr %gep4744, align 8, !tbaa !13
  %5815 = fsub <2 x double> %5814, %5813
  store <2 x double> %5815, ptr %gep4744, align 8, !tbaa !13
  %5816 = fmul <2 x double> %5515, %5803
  %5817 = shufflevector <2 x double> %5816, <2 x double> poison, <2 x i32> <i32 1, i32 0>
  %5818 = call <2 x double> @llvm.fmuladd.v2f64(<2 x double> %5807, <2 x double> %5515, <2 x double> %5817)
  %5819 = load <2 x double>, ptr %gep4746, align 8, !tbaa !13
  %5820 = fsub <2 x double> %5819, %5818
  store <2 x double> %5820, ptr %gep4746, align 8, !tbaa !13
  %5821 = fmul <2 x double> %5534, %5803
  %5822 = shufflevector <2 x double> %5821, <2 x double> poison, <2 x i32> <i32 1, i32 0>
  %5823 = call <2 x double> @llvm.fmuladd.v2f64(<2 x double> %5807, <2 x double> %5534, <2 x double> %5822)
  %5824 = load <2 x double>, ptr %gep4748, align 8, !tbaa !13
  %5825 = fsub <2 x double> %5824, %5823
  store <2 x double> %5825, ptr %gep4748, align 8, !tbaa !13
  %5826 = fmul <2 x double> %5553, %5803
  %5827 = shufflevector <2 x double> %5826, <2 x double> poison, <2 x i32> <i32 1, i32 0>
  %5828 = call <2 x double> @llvm.fmuladd.v2f64(<2 x double> %5807, <2 x double> %5553, <2 x double> %5827)
  %5829 = load <2 x double>, ptr %gep4750, align 8, !tbaa !13
  %5830 = fsub <2 x double> %5829, %5828
  store <2 x double> %5830, ptr %gep4750, align 8, !tbaa !13
  %5831 = fmul <2 x double> %5572, %5803
  %5832 = shufflevector <2 x double> %5831, <2 x double> poison, <2 x i32> <i32 1, i32 0>
  %5833 = call <2 x double> @llvm.fmuladd.v2f64(<2 x double> %5807, <2 x double> %5572, <2 x double> %5832)
  %5834 = load <2 x double>, ptr %gep4752, align 8, !tbaa !13
  %5835 = fsub <2 x double> %5834, %5833
  store <2 x double> %5835, ptr %gep4752, align 8, !tbaa !13
  %5836 = fmul <2 x double> %5591, %5803
  %5837 = shufflevector <2 x double> %5836, <2 x double> poison, <2 x i32> <i32 1, i32 0>
  %5838 = call <2 x double> @llvm.fmuladd.v2f64(<2 x double> %5807, <2 x double> %5591, <2 x double> %5837)
  %5839 = load <2 x double>, ptr %gep4754, align 8, !tbaa !13
  %5840 = fsub <2 x double> %5839, %5838
  store <2 x double> %5840, ptr %gep4754, align 8, !tbaa !13
  %5841 = fmul <2 x double> %5610, %5803
  %5842 = shufflevector <2 x double> %5841, <2 x double> poison, <2 x i32> <i32 1, i32 0>
  %5843 = call <2 x double> @llvm.fmuladd.v2f64(<2 x double> %5807, <2 x double> %5610, <2 x double> %5842)
  %5844 = load <2 x double>, ptr %gep4756, align 8, !tbaa !13
  %5845 = fsub <2 x double> %5844, %5843
  store <2 x double> %5845, ptr %gep4756, align 8, !tbaa !13
  %5846 = fmul <2 x double> %5629, %5803
  %5847 = shufflevector <2 x double> %5846, <2 x double> poison, <2 x i32> <i32 1, i32 0>
  %5848 = call <2 x double> @llvm.fmuladd.v2f64(<2 x double> %5807, <2 x double> %5629, <2 x double> %5847)
  %5849 = load <2 x double>, ptr %gep4758, align 8, !tbaa !13
  %5850 = fsub <2 x double> %5849, %5848
  store <2 x double> %5850, ptr %gep4758, align 8, !tbaa !13
  %5851 = fmul <2 x double> %5648, %5803
  %5852 = shufflevector <2 x double> %5851, <2 x double> poison, <2 x i32> <i32 1, i32 0>
  %5853 = call <2 x double> @llvm.fmuladd.v2f64(<2 x double> %5807, <2 x double> %5648, <2 x double> %5852)
  %5854 = load <2 x double>, ptr %gep4760, align 8, !tbaa !13
  %5855 = fsub <2 x double> %5854, %5853
  store <2 x double> %5855, ptr %gep4760, align 8, !tbaa !13
  %indvars.iv.next4694 = add nuw nsw i64 %indvars.iv4693, 1
  %exitcond4697.not = icmp eq i64 %indvars.iv.next4694, %wide.trip.count4696
  br i1 %exitcond4697.not, label %.loopexit, label %5710, !llvm.loop !44

.loopexit.loopexit6693.unr-lcssa:                 ; preds = %73, %.lr.ph4432
  %indvars.iv4688.unr = phi i64 [ 1, %.lr.ph4432 ], [ %indvars.iv.next4689.1, %73 ]
  %lcmp.mod.not = icmp eq i64 %xtraiter, 0
  br i1 %lcmp.mod.not, label %.loopexit, label %.loopexit.loopexit6693.epilog-lcssa

.loopexit.loopexit6693.epilog-lcssa:              ; preds = %.loopexit.loopexit6693.unr-lcssa
  %5856 = mul nsw i64 %indvars.iv4688.unr, %66
  %5857 = getelementptr %struct.doublecomplex, ptr %24, i64 %5856
  %5858 = getelementptr i8, ptr %5857, i64 16
  %5859 = load <2 x double>, ptr %5858, align 8, !tbaa !13
  %5860 = fmul <2 x double> %5859, %70
  %5861 = shufflevector <2 x double> %5860, <2 x double> poison, <2 x i32> <i32 1, i32 0>
  %5862 = call <2 x double> @llvm.fmuladd.v2f64(<2 x double> %68, <2 x double> %5859, <2 x double> %5861)
  store <2 x double> %5862, ptr %5858, align 8, !tbaa !13
  br label %.loopexit

.loopexit:                                        ; preds = %2324, %1902, %1523, %1187, %894, %644, %437, %273, %153, %.loopexit.loopexit6693.epilog-lcssa, %.loopexit.loopexit6693.unr-lcssa, %5710, %5326, %scalar.ph, %scalar.ph5563, %scalar.ph5885, %scalar.ph6138, %scalar.ph6330, %scalar.ph6469, %scalar.ph6563, %scalar.ph6607, %middle.block, %middle.block5562, %middle.block5884, %middle.block6137, %middle.block6329, %middle.block6468, %middle.block6562, %middle.block6606, %2030, %1637, %1287, %980, %716, %495, %317, %182, %5458, %5099, %4516, %4010, %3573, %3205, %2906, %2682, %84, %36, %2532, %2485, %35, %2484, %27
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %21) #6
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %20) #6
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %19) #6
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %18) #6
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %17) #6
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %16) #6
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %15) #6
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %14) #6
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %13) #6
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %12) #6
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %11) #6
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %10) #6
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %9) #6
  ret void
}

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

declare i32 @lsame_(ptr noundef, ptr noundef) local_unnamed_addr #2

declare void @zlarf_(ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef) local_unnamed_addr #2

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

; Function Attrs: inlinehint nounwind uwtable
declare hidden { double, double } @Cd(ptr noundef) local_unnamed_addr #4

; Function Attrs: inlinehint nounwind uwtable
declare hidden ptr @_pCd(ptr noundef) local_unnamed_addr #4

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

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

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

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

!0 = !{i32 1, !"wchar_size", i32 4}
!1 = !{i32 8, !"PIC Level", i32 2}
!2 = !{i32 7, !"PIE Level", i32 2}
!3 = !{i32 7, !"uwtable", i32 2}
!4 = !{!"clang version 19.1.0 (git@github.com:llvm/llvm-project.git a4bf6cd7cfb1a1421ba92bca9d017b49936c55e4)"}
!5 = !{!6, !6, i64 0}
!6 = !{!"int", !7, i64 0}
!7 = !{!"omnipotent char", !8, i64 0}
!8 = !{!"Simple C/C++ TBAA"}
!9 = !{!10, !11, i64 0}
!10 = !{!"", !11, i64 0, !11, i64 8}
!11 = !{!"double", !7, i64 0}
!12 = !{!10, !11, i64 8}
!13 = !{!11, !11, i64 0}
!14 = distinct !{!14, !15}
!15 = !{!"llvm.loop.mustprogress"}
!16 = distinct !{!16, !15}
!17 = distinct !{!17, !15}
!18 = distinct !{!18, !15}
!19 = distinct !{!19, !15}
!20 = distinct !{!20, !15}
!21 = distinct !{!21, !15}
!22 = distinct !{!22, !15}
!23 = distinct !{!23, !15}
!24 = distinct !{!24, !15}
!25 = distinct !{!25, !15, !26, !27}
!26 = !{!"llvm.loop.isvectorized", i32 1}
!27 = !{!"llvm.loop.unroll.runtime.disable"}
!28 = distinct !{!28, !15, !27, !26}
!29 = distinct !{!29, !15, !26, !27}
!30 = distinct !{!30, !15, !26}
!31 = distinct !{!31, !15, !26, !27}
!32 = distinct !{!32, !15, !26}
!33 = distinct !{!33, !15, !26, !27}
!34 = distinct !{!34, !15, !26}
!35 = distinct !{!35, !15, !26, !27}
!36 = distinct !{!36, !15, !26}
!37 = distinct !{!37, !15, !26, !27}
!38 = distinct !{!38, !15, !26}
!39 = distinct !{!39, !15, !26, !27}
!40 = distinct !{!40, !15, !26}
!41 = distinct !{!41, !15, !26, !27}
!42 = distinct !{!42, !15, !26}
!43 = distinct !{!43, !15}
!44 = distinct !{!44, !15}


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