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

; 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
@.str.1 = external hidden unnamed_addr constant [2 x i8], align 1
@.str.2 = external hidden unnamed_addr constant [2 x i8], align 1
@.str.3 = external hidden unnamed_addr constant [2 x i8], align 1
@.str.4 = external hidden unnamed_addr constant [2 x i8], align 1
@.str.5 = external hidden unnamed_addr constant [7 x i8], align 1
@.str.6 = external hidden unnamed_addr constant [13 x i8], align 1
@.str.7 = external hidden unnamed_addr constant [8 x i8], align 1
@.str.8 = external hidden unnamed_addr constant [5 x i8], align 1
@.str.9 = external hidden unnamed_addr constant [2 x i8], align 1
@c_b2 = external hidden global %struct.doublecomplex, align 8
@c__1 = external hidden global i64, align 8
@c_b1 = external hidden global %struct.doublecomplex, align 8

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

145:                                              ; preds = %17
  store i64 1, ptr %102, align 8, !tbaa !9
  store i64 1, ptr %82, align 8, !tbaa !9
  store i64 0, ptr %95, align 8, !tbaa !9
  br label %159

146:                                              ; preds = %17
  %147 = load ptr, ptr %20, align 8, !tbaa !5
  %148 = call i64 @lsame_(ptr noundef %147, ptr noundef @.str.1)
  %149 = icmp ne i64 %148, 0
  br i1 %149, label %150, label %151

150:                                              ; preds = %146
  store i64 2, ptr %102, align 8, !tbaa !9
  store i64 0, ptr %82, align 8, !tbaa !9
  store i64 0, ptr %95, align 8, !tbaa !9
  br label %158

151:                                              ; preds = %146
  %152 = load ptr, ptr %20, align 8, !tbaa !5
  %153 = call i64 @lsame_(ptr noundef %152, ptr noundef @.str.2)
  %154 = icmp ne i64 %153, 0
  br i1 %154, label %155, label %156

155:                                              ; preds = %151
  store i64 3, ptr %102, align 8, !tbaa !9
  store i64 1, ptr %82, align 8, !tbaa !9
  store i64 1, ptr %95, align 8, !tbaa !9
  br label %157

156:                                              ; preds = %151
  store i64 -1, ptr %102, align 8, !tbaa !9
  br label %157

157:                                              ; preds = %156, %155
  br label %158

158:                                              ; preds = %157, %150
  br label %159

159:                                              ; preds = %158, %145
  %160 = load ptr, ptr %19, align 8, !tbaa !5
  %161 = call i64 @lsame_(ptr noundef %160, ptr noundef @.str.3)
  %162 = icmp ne i64 %161, 0
  br i1 %162, label %163, label %164

163:                                              ; preds = %159
  store i64 1, ptr %83, align 8, !tbaa !9
  store i64 0, ptr %86, align 8, !tbaa !9
  store i64 1, ptr %89, align 8, !tbaa !9
  br label %177

164:                                              ; preds = %159
  %165 = load ptr, ptr %19, align 8, !tbaa !5
  %166 = call i64 @lsame_(ptr noundef %165, ptr noundef @.str.4)
  %167 = icmp ne i64 %166, 0
  br i1 %167, label %168, label %169

168:                                              ; preds = %164
  store i64 2, ptr %83, align 8, !tbaa !9
  store i64 1, ptr %86, align 8, !tbaa !9
  store i64 0, ptr %89, align 8, !tbaa !9
  br label %176

169:                                              ; preds = %164
  %170 = load ptr, ptr %19, align 8, !tbaa !5
  %171 = call i64 @lsame_(ptr noundef %170, ptr noundef @.str.2)
  %172 = icmp ne i64 %171, 0
  br i1 %172, label %173, label %174

173:                                              ; preds = %169
  store i64 3, ptr %83, align 8, !tbaa !9
  store i64 1, ptr %86, align 8, !tbaa !9
  store i64 1, ptr %89, align 8, !tbaa !9
  br label %175

174:                                              ; preds = %169
  store i64 -1, ptr %83, align 8, !tbaa !9
  br label %175

175:                                              ; preds = %174, %173
  br label %176

176:                                              ; preds = %175, %168
  br label %177

177:                                              ; preds = %176, %163
  %178 = load ptr, ptr %35, align 8, !tbaa !5
  store i64 0, ptr %178, align 8, !tbaa !9
  %179 = load i64, ptr %83, align 8, !tbaa !9
  %180 = icmp slt i64 %179, 0
  br i1 %180, label %181, label %183

181:                                              ; preds = %177
  %182 = load ptr, ptr %35, align 8, !tbaa !5
  store i64 -1, ptr %182, align 8, !tbaa !9
  br label %228

183:                                              ; preds = %177
  %184 = load i64, ptr %102, align 8, !tbaa !9
  %185 = icmp slt i64 %184, 0
  br i1 %185, label %186, label %188

186:                                              ; preds = %183
  %187 = load ptr, ptr %35, align 8, !tbaa !5
  store i64 -2, ptr %187, align 8, !tbaa !9
  br label %227

188:                                              ; preds = %183
  %189 = load ptr, ptr %22, align 8, !tbaa !5
  %190 = load i64, ptr %189, align 8, !tbaa !9
  %191 = icmp slt i64 %190, 0
  br i1 %191, label %192, label %194

192:                                              ; preds = %188
  %193 = load ptr, ptr %35, align 8, !tbaa !5
  store i64 -4, ptr %193, align 8, !tbaa !9
  br label %226

194:                                              ; preds = %188
  %195 = load ptr, ptr %24, align 8, !tbaa !5
  %196 = load i64, ptr %195, align 8, !tbaa !9
  %197 = load ptr, ptr %22, align 8, !tbaa !5
  %198 = load i64, ptr %197, align 8, !tbaa !9
  %199 = icmp sge i64 1, %198
  br i1 %199, label %200, label %201

200:                                              ; preds = %194
  br label %204

201:                                              ; preds = %194
  %202 = load ptr, ptr %22, align 8, !tbaa !5
  %203 = load i64, ptr %202, align 8, !tbaa !9
  br label %204

204:                                              ; preds = %201, %200
  %205 = phi i64 [ 1, %200 ], [ %203, %201 ]
  %206 = icmp slt i64 %196, %205
  br i1 %206, label %207, label %209

207:                                              ; preds = %204
  %208 = load ptr, ptr %35, align 8, !tbaa !5
  store i64 -6, ptr %208, align 8, !tbaa !9
  br label %225

209:                                              ; preds = %204
  %210 = load ptr, ptr %26, align 8, !tbaa !5
  %211 = load i64, ptr %210, align 8, !tbaa !9
  %212 = load ptr, ptr %22, align 8, !tbaa !5
  %213 = load i64, ptr %212, align 8, !tbaa !9
  %214 = icmp sge i64 1, %213
  br i1 %214, label %215, label %216

215:                                              ; preds = %209
  br label %219

216:                                              ; preds = %209
  %217 = load ptr, ptr %22, align 8, !tbaa !5
  %218 = load i64, ptr %217, align 8, !tbaa !9
  br label %219

219:                                              ; preds = %216, %215
  %220 = phi i64 [ 1, %215 ], [ %218, %216 ]
  %221 = icmp slt i64 %211, %220
  br i1 %221, label %222, label %224

222:                                              ; preds = %219
  %223 = load ptr, ptr %35, align 8, !tbaa !5
  store i64 -8, ptr %223, align 8, !tbaa !9
  br label %224

224:                                              ; preds = %222, %219
  br label %225

225:                                              ; preds = %224, %207
  br label %226

226:                                              ; preds = %225, %192
  br label %227

227:                                              ; preds = %226, %186
  br label %228

228:                                              ; preds = %227, %181
  %229 = load ptr, ptr %35, align 8, !tbaa !5
  %230 = load i64, ptr %229, align 8, !tbaa !9
  %231 = icmp ne i64 %230, 0
  br i1 %231, label %232, label %237

232:                                              ; preds = %228
  %233 = load ptr, ptr %35, align 8, !tbaa !5
  %234 = load i64, ptr %233, align 8, !tbaa !9
  %235 = sub nsw i64 0, %234
  store i64 %235, ptr %44, align 8, !tbaa !9
  %236 = call i32 @xerbla_(ptr noundef @.str.5, ptr noundef %44)
  store i32 0, ptr %18, align 4
  store i32 1, ptr %103, align 4
  br label %3664

237:                                              ; preds = %228
  %238 = load i64, ptr %82, align 8, !tbaa !9
  %239 = icmp ne i64 %238, 0
  br i1 %239, label %261, label %240

240:                                              ; preds = %237
  store i64 0, ptr %65, align 8, !tbaa !9
  %241 = load ptr, ptr %22, align 8, !tbaa !5
  %242 = load i64, ptr %241, align 8, !tbaa !9
  store i64 %242, ptr %44, align 8, !tbaa !9
  store i64 1, ptr %61, align 8, !tbaa !9
  br label %243

243:                                              ; preds = %257, %240
  %244 = load i64, ptr %61, align 8, !tbaa !9
  %245 = load i64, ptr %44, align 8, !tbaa !9
  %246 = icmp sle i64 %244, %245
  br i1 %246, label %247, label %260

247:                                              ; preds = %243
  %248 = load ptr, ptr %21, align 8, !tbaa !5
  %249 = load i64, ptr %61, align 8, !tbaa !9
  %250 = getelementptr inbounds i64, ptr %248, i64 %249
  %251 = load i64, ptr %250, align 8, !tbaa !9
  %252 = icmp ne i64 %251, 0
  br i1 %252, label %253, label %256

253:                                              ; preds = %247
  %254 = load i64, ptr %65, align 8, !tbaa !9
  %255 = add nsw i64 %254, 1
  store i64 %255, ptr %65, align 8, !tbaa !9
  br label %256

256:                                              ; preds = %253, %247
  br label %257

257:                                              ; preds = %256
  %258 = load i64, ptr %61, align 8, !tbaa !9
  %259 = add nsw i64 %258, 1
  store i64 %259, ptr %61, align 8, !tbaa !9
  br label %243, !llvm.loop !11

260:                                              ; preds = %243
  br label %264

261:                                              ; preds = %237
  %262 = load ptr, ptr %22, align 8, !tbaa !5
  %263 = load i64, ptr %262, align 8, !tbaa !9
  store i64 %263, ptr %65, align 8, !tbaa !9
  br label %264

264:                                              ; preds = %261, %260
  store i64 0, ptr %90, align 8, !tbaa !9
  %265 = load ptr, ptr %22, align 8, !tbaa !5
  %266 = load i64, ptr %265, align 8, !tbaa !9
  store i64 %266, ptr %44, align 8, !tbaa !9
  store i64 1, ptr %61, align 8, !tbaa !9
  br label %267

267:                                              ; preds = %283, %264
  %268 = load i64, ptr %61, align 8, !tbaa !9
  %269 = load i64, ptr %44, align 8, !tbaa !9
  %270 = icmp sle i64 %268, %269
  br i1 %270, label %271, label %286

271:                                              ; preds = %267
  %272 = load ptr, ptr %25, align 8, !tbaa !5
  %273 = load i64, ptr %61, align 8, !tbaa !9
  %274 = load i64, ptr %61, align 8, !tbaa !9
  %275 = load i64, ptr %36, align 8, !tbaa !9
  %276 = mul nsw i64 %274, %275
  %277 = add nsw i64 %273, %276
  %278 = getelementptr inbounds %struct.doublecomplex, ptr %272, i64 %277
  %279 = call double @d_imag(ptr noundef %278)
  %280 = fcmp une double %279, 0.000000e+00
  br i1 %280, label %281, label %282

281:                                              ; preds = %271
  store i64 1, ptr %90, align 8, !tbaa !9
  br label %282

282:                                              ; preds = %281, %271
  br label %283

283:                                              ; preds = %282
  %284 = load i64, ptr %61, align 8, !tbaa !9
  %285 = add nsw i64 %284, 1
  store i64 %285, ptr %61, align 8, !tbaa !9
  br label %267, !llvm.loop !13

286:                                              ; preds = %267
  %287 = load i64, ptr %90, align 8, !tbaa !9
  %288 = icmp ne i64 %287, 0
  br i1 %288, label %289, label %291

289:                                              ; preds = %286
  %290 = load ptr, ptr %35, align 8, !tbaa !5
  store i64 -7, ptr %290, align 8, !tbaa !9
  br label %331

291:                                              ; preds = %286
  %292 = load i64, ptr %86, align 8, !tbaa !9
  %293 = icmp ne i64 %292, 0
  br i1 %293, label %294, label %300

294:                                              ; preds = %291
  %295 = load ptr, ptr %28, align 8, !tbaa !5
  %296 = load i64, ptr %295, align 8, !tbaa !9
  %297 = load ptr, ptr %22, align 8, !tbaa !5
  %298 = load i64, ptr %297, align 8, !tbaa !9
  %299 = icmp slt i64 %296, %298
  br i1 %299, label %304, label %300

300:                                              ; preds = %294, %291
  %301 = load ptr, ptr %28, align 8, !tbaa !5
  %302 = load i64, ptr %301, align 8, !tbaa !9
  %303 = icmp slt i64 %302, 1
  br i1 %303, label %304, label %306

304:                                              ; preds = %300, %294
  %305 = load ptr, ptr %35, align 8, !tbaa !5
  store i64 -10, ptr %305, align 8, !tbaa !9
  br label %330

306:                                              ; preds = %300
  %307 = load i64, ptr %89, align 8, !tbaa !9
  %308 = icmp ne i64 %307, 0
  br i1 %308, label %309, label %315

309:                                              ; preds = %306
  %310 = load ptr, ptr %30, align 8, !tbaa !5
  %311 = load i64, ptr %310, align 8, !tbaa !9
  %312 = load ptr, ptr %22, align 8, !tbaa !5
  %313 = load i64, ptr %312, align 8, !tbaa !9
  %314 = icmp slt i64 %311, %313
  br i1 %314, label %319, label %315

315:                                              ; preds = %309, %306
  %316 = load ptr, ptr %30, align 8, !tbaa !5
  %317 = load i64, ptr %316, align 8, !tbaa !9
  %318 = icmp slt i64 %317, 1
  br i1 %318, label %319, label %321

319:                                              ; preds = %315, %309
  %320 = load ptr, ptr %35, align 8, !tbaa !5
  store i64 -12, ptr %320, align 8, !tbaa !9
  br label %329

321:                                              ; preds = %315
  %322 = load ptr, ptr %31, align 8, !tbaa !5
  %323 = load i64, ptr %322, align 8, !tbaa !9
  %324 = load i64, ptr %65, align 8, !tbaa !9
  %325 = icmp slt i64 %323, %324
  br i1 %325, label %326, label %328

326:                                              ; preds = %321
  %327 = load ptr, ptr %35, align 8, !tbaa !5
  store i64 -13, ptr %327, align 8, !tbaa !9
  br label %328

328:                                              ; preds = %326, %321
  br label %329

329:                                              ; preds = %328, %319
  br label %330

330:                                              ; preds = %329, %304
  br label %331

331:                                              ; preds = %330, %289
  %332 = load ptr, ptr %35, align 8, !tbaa !5
  %333 = load i64, ptr %332, align 8, !tbaa !9
  %334 = icmp ne i64 %333, 0
  br i1 %334, label %335, label %340

335:                                              ; preds = %331
  %336 = load ptr, ptr %35, align 8, !tbaa !5
  %337 = load i64, ptr %336, align 8, !tbaa !9
  %338 = sub nsw i64 0, %337
  store i64 %338, ptr %44, align 8, !tbaa !9
  %339 = call i32 @xerbla_(ptr noundef @.str.5, ptr noundef %44)
  store i32 0, ptr %18, align 4
  store i32 1, ptr %103, align 4
  br label %3664

340:                                              ; preds = %331
  %341 = load i64, ptr %65, align 8, !tbaa !9
  %342 = load ptr, ptr %32, align 8, !tbaa !5
  store i64 %341, ptr %342, align 8, !tbaa !9
  %343 = load ptr, ptr %22, align 8, !tbaa !5
  %344 = load i64, ptr %343, align 8, !tbaa !9
  %345 = icmp eq i64 %344, 0
  br i1 %345, label %346, label %347

346:                                              ; preds = %340
  store i32 0, ptr %18, align 4
  store i32 1, ptr %103, align 4
  br label %3664

347:                                              ; preds = %340
  %348 = call double @dlamch_(ptr noundef @.str.6)
  store double %348, ptr %99, align 8, !tbaa !14
  %349 = load double, ptr %99, align 8, !tbaa !14
  %350 = fdiv double 1.000000e+00, %349
  store double %350, ptr %67, align 8, !tbaa !14
  %351 = call i32 @dlabad_(ptr noundef %99, ptr noundef %67)
  %352 = call double @dlamch_(ptr noundef @.str.7)
  %353 = call double @dlamch_(ptr noundef @.str.8)
  %354 = fmul double %352, %353
  store double %354, ptr %70, align 8, !tbaa !14
  %355 = load double, ptr %99, align 8, !tbaa !14
  %356 = load ptr, ptr %22, align 8, !tbaa !5
  %357 = load i64, ptr %356, align 8, !tbaa !9
  %358 = sitofp i64 %357 to double
  %359 = fmul double %355, %358
  %360 = load double, ptr %70, align 8, !tbaa !14
  %361 = fdiv double %359, %360
  store double %361, ptr %85, align 8, !tbaa !14
  %362 = load double, ptr %85, align 8, !tbaa !14
  %363 = fdiv double 1.000000e+00, %362
  store double %363, ptr %67, align 8, !tbaa !14
  %364 = load double, ptr %99, align 8, !tbaa !14
  %365 = load ptr, ptr %22, align 8, !tbaa !5
  %366 = load i64, ptr %365, align 8, !tbaa !9
  %367 = sitofp i64 %366 to double
  %368 = fmul double %364, %367
  %369 = fdiv double 1.000000e+00, %368
  store double %369, ptr %100, align 8, !tbaa !14
  %370 = load i64, ptr %38, align 8, !tbaa !9
  %371 = add nsw i64 %370, 1
  store i64 %371, ptr %44, align 8, !tbaa !9
  %372 = load ptr, ptr %23, align 8, !tbaa !5
  %373 = load i64, ptr %44, align 8, !tbaa !9
  %374 = getelementptr inbounds %struct.doublecomplex, ptr %372, i64 %373
  %375 = getelementptr inbounds %struct.doublecomplex, ptr %374, i32 0, i32 0
  %376 = load double, ptr %375, align 8, !tbaa !16
  store double %376, ptr %49, align 8, !tbaa !14
  %377 = load double, ptr %49, align 8, !tbaa !14
  %378 = fcmp oge double %377, 0.000000e+00
  br i1 %378, label %379, label %381

379:                                              ; preds = %347
  %380 = load double, ptr %49, align 8, !tbaa !14
  br label %384

381:                                              ; preds = %347
  %382 = load double, ptr %49, align 8, !tbaa !14
  %383 = fneg double %382
  br label %384

384:                                              ; preds = %381, %379
  %385 = phi double [ %380, %379 ], [ %383, %381 ]
  %386 = load ptr, ptr %23, align 8, !tbaa !5
  %387 = load i64, ptr %38, align 8, !tbaa !9
  %388 = add nsw i64 %387, 1
  %389 = getelementptr inbounds %struct.doublecomplex, ptr %386, i64 %388
  %390 = call double @d_imag(ptr noundef %389)
  store double %390, ptr %50, align 8, !tbaa !14
  %391 = load double, ptr %50, align 8, !tbaa !14
  %392 = fcmp oge double %391, 0.000000e+00
  br i1 %392, label %393, label %395

393:                                              ; preds = %384
  %394 = load double, ptr %50, align 8, !tbaa !14
  br label %398

395:                                              ; preds = %384
  %396 = load double, ptr %50, align 8, !tbaa !14
  %397 = fneg double %396
  br label %398

398:                                              ; preds = %395, %393
  %399 = phi double [ %394, %393 ], [ %397, %395 ]
  %400 = fadd double %385, %399
  store double %400, ptr %87, align 8, !tbaa !14
  %401 = load i64, ptr %36, align 8, !tbaa !9
  %402 = add nsw i64 %401, 1
  store i64 %402, ptr %44, align 8, !tbaa !9
  %403 = load ptr, ptr %25, align 8, !tbaa !5
  %404 = load i64, ptr %44, align 8, !tbaa !9
  %405 = getelementptr inbounds %struct.doublecomplex, ptr %403, i64 %404
  %406 = getelementptr inbounds %struct.doublecomplex, ptr %405, i32 0, i32 0
  %407 = load double, ptr %406, align 8, !tbaa !16
  store double %407, ptr %49, align 8, !tbaa !14
  %408 = load double, ptr %49, align 8, !tbaa !14
  %409 = fcmp oge double %408, 0.000000e+00
  br i1 %409, label %410, label %412

410:                                              ; preds = %398
  %411 = load double, ptr %49, align 8, !tbaa !14
  br label %415

412:                                              ; preds = %398
  %413 = load double, ptr %49, align 8, !tbaa !14
  %414 = fneg double %413
  br label %415

415:                                              ; preds = %412, %410
  %416 = phi double [ %411, %410 ], [ %414, %412 ]
  %417 = load ptr, ptr %25, align 8, !tbaa !5
  %418 = load i64, ptr %36, align 8, !tbaa !9
  %419 = add nsw i64 %418, 1
  %420 = getelementptr inbounds %struct.doublecomplex, ptr %417, i64 %419
  %421 = call double @d_imag(ptr noundef %420)
  store double %421, ptr %50, align 8, !tbaa !14
  %422 = load double, ptr %50, align 8, !tbaa !14
  %423 = fcmp oge double %422, 0.000000e+00
  br i1 %423, label %424, label %426

424:                                              ; preds = %415
  %425 = load double, ptr %50, align 8, !tbaa !14
  br label %429

426:                                              ; preds = %415
  %427 = load double, ptr %50, align 8, !tbaa !14
  %428 = fneg double %427
  br label %429

429:                                              ; preds = %426, %424
  %430 = phi double [ %425, %424 ], [ %428, %426 ]
  %431 = fadd double %416, %430
  store double %431, ptr %88, align 8, !tbaa !14
  %432 = load ptr, ptr %34, align 8, !tbaa !5
  %433 = getelementptr inbounds double, ptr %432, i64 1
  store double 0.000000e+00, ptr %433, align 8, !tbaa !14
  %434 = load ptr, ptr %34, align 8, !tbaa !5
  %435 = load ptr, ptr %22, align 8, !tbaa !5
  %436 = load i64, ptr %435, align 8, !tbaa !9
  %437 = add nsw i64 %436, 1
  %438 = getelementptr inbounds double, ptr %434, i64 %437
  store double 0.000000e+00, ptr %438, align 8, !tbaa !14
  %439 = load ptr, ptr %22, align 8, !tbaa !5
  %440 = load i64, ptr %439, align 8, !tbaa !9
  store i64 %440, ptr %44, align 8, !tbaa !9
  store i64 2, ptr %61, align 8, !tbaa !9
  br label %441

441:                                              ; preds = %660, %429
  %442 = load i64, ptr %61, align 8, !tbaa !9
  %443 = load i64, ptr %44, align 8, !tbaa !9
  %444 = icmp sle i64 %442, %443
  br i1 %444, label %445, label %663

445:                                              ; preds = %441
  %446 = load ptr, ptr %34, align 8, !tbaa !5
  %447 = load i64, ptr %61, align 8, !tbaa !9
  %448 = getelementptr inbounds double, ptr %446, i64 %447
  store double 0.000000e+00, ptr %448, align 8, !tbaa !14
  %449 = load ptr, ptr %34, align 8, !tbaa !5
  %450 = load ptr, ptr %22, align 8, !tbaa !5
  %451 = load i64, ptr %450, align 8, !tbaa !9
  %452 = load i64, ptr %61, align 8, !tbaa !9
  %453 = add nsw i64 %451, %452
  %454 = getelementptr inbounds double, ptr %449, i64 %453
  store double 0.000000e+00, ptr %454, align 8, !tbaa !14
  %455 = load i64, ptr %61, align 8, !tbaa !9
  %456 = sub nsw i64 %455, 1
  store i64 %456, ptr %45, align 8, !tbaa !9
  store i64 1, ptr %60, align 8, !tbaa !9
  br label %457

457:                                              ; preds = %549, %445
  %458 = load i64, ptr %60, align 8, !tbaa !9
  %459 = load i64, ptr %45, align 8, !tbaa !9
  %460 = icmp sle i64 %458, %459
  br i1 %460, label %461, label %552

461:                                              ; preds = %457
  %462 = load i64, ptr %60, align 8, !tbaa !9
  %463 = load i64, ptr %61, align 8, !tbaa !9
  %464 = load i64, ptr %38, align 8, !tbaa !9
  %465 = mul nsw i64 %463, %464
  %466 = add nsw i64 %462, %465
  store i64 %466, ptr %46, align 8, !tbaa !9
  %467 = load ptr, ptr %23, align 8, !tbaa !5
  %468 = load i64, ptr %46, align 8, !tbaa !9
  %469 = getelementptr inbounds %struct.doublecomplex, ptr %467, i64 %468
  %470 = getelementptr inbounds %struct.doublecomplex, ptr %469, i32 0, i32 0
  %471 = load double, ptr %470, align 8, !tbaa !16
  store double %471, ptr %49, align 8, !tbaa !14
  %472 = load double, ptr %49, align 8, !tbaa !14
  %473 = fcmp oge double %472, 0.000000e+00
  br i1 %473, label %474, label %476

474:                                              ; preds = %461
  %475 = load double, ptr %49, align 8, !tbaa !14
  br label %479

476:                                              ; preds = %461
  %477 = load double, ptr %49, align 8, !tbaa !14
  %478 = fneg double %477
  br label %479

479:                                              ; preds = %476, %474
  %480 = phi double [ %475, %474 ], [ %478, %476 ]
  %481 = load ptr, ptr %23, align 8, !tbaa !5
  %482 = load i64, ptr %60, align 8, !tbaa !9
  %483 = load i64, ptr %61, align 8, !tbaa !9
  %484 = load i64, ptr %38, align 8, !tbaa !9
  %485 = mul nsw i64 %483, %484
  %486 = add nsw i64 %482, %485
  %487 = getelementptr inbounds %struct.doublecomplex, ptr %481, i64 %486
  %488 = call double @d_imag(ptr noundef %487)
  store double %488, ptr %50, align 8, !tbaa !14
  %489 = load double, ptr %50, align 8, !tbaa !14
  %490 = fcmp oge double %489, 0.000000e+00
  br i1 %490, label %491, label %493

491:                                              ; preds = %479
  %492 = load double, ptr %50, align 8, !tbaa !14
  br label %496

493:                                              ; preds = %479
  %494 = load double, ptr %50, align 8, !tbaa !14
  %495 = fneg double %494
  br label %496

496:                                              ; preds = %493, %491
  %497 = phi double [ %492, %491 ], [ %495, %493 ]
  %498 = fadd double %480, %497
  %499 = load ptr, ptr %34, align 8, !tbaa !5
  %500 = load i64, ptr %61, align 8, !tbaa !9
  %501 = getelementptr inbounds double, ptr %499, i64 %500
  %502 = load double, ptr %501, align 8, !tbaa !14
  %503 = fadd double %502, %498
  store double %503, ptr %501, align 8, !tbaa !14
  %504 = load i64, ptr %60, align 8, !tbaa !9
  %505 = load i64, ptr %61, align 8, !tbaa !9
  %506 = load i64, ptr %36, align 8, !tbaa !9
  %507 = mul nsw i64 %505, %506
  %508 = add nsw i64 %504, %507
  store i64 %508, ptr %46, align 8, !tbaa !9
  %509 = load ptr, ptr %25, align 8, !tbaa !5
  %510 = load i64, ptr %46, align 8, !tbaa !9
  %511 = getelementptr inbounds %struct.doublecomplex, ptr %509, i64 %510
  %512 = getelementptr inbounds %struct.doublecomplex, ptr %511, i32 0, i32 0
  %513 = load double, ptr %512, align 8, !tbaa !16
  store double %513, ptr %49, align 8, !tbaa !14
  %514 = load double, ptr %49, align 8, !tbaa !14
  %515 = fcmp oge double %514, 0.000000e+00
  br i1 %515, label %516, label %518

516:                                              ; preds = %496
  %517 = load double, ptr %49, align 8, !tbaa !14
  br label %521

518:                                              ; preds = %496
  %519 = load double, ptr %49, align 8, !tbaa !14
  %520 = fneg double %519
  br label %521

521:                                              ; preds = %518, %516
  %522 = phi double [ %517, %516 ], [ %520, %518 ]
  %523 = load ptr, ptr %25, align 8, !tbaa !5
  %524 = load i64, ptr %60, align 8, !tbaa !9
  %525 = load i64, ptr %61, align 8, !tbaa !9
  %526 = load i64, ptr %36, align 8, !tbaa !9
  %527 = mul nsw i64 %525, %526
  %528 = add nsw i64 %524, %527
  %529 = getelementptr inbounds %struct.doublecomplex, ptr %523, i64 %528
  %530 = call double @d_imag(ptr noundef %529)
  store double %530, ptr %50, align 8, !tbaa !14
  %531 = load double, ptr %50, align 8, !tbaa !14
  %532 = fcmp oge double %531, 0.000000e+00
  br i1 %532, label %533, label %535

533:                                              ; preds = %521
  %534 = load double, ptr %50, align 8, !tbaa !14
  br label %538

535:                                              ; preds = %521
  %536 = load double, ptr %50, align 8, !tbaa !14
  %537 = fneg double %536
  br label %538

538:                                              ; preds = %535, %533
  %539 = phi double [ %534, %533 ], [ %537, %535 ]
  %540 = fadd double %522, %539
  %541 = load ptr, ptr %34, align 8, !tbaa !5
  %542 = load ptr, ptr %22, align 8, !tbaa !5
  %543 = load i64, ptr %542, align 8, !tbaa !9
  %544 = load i64, ptr %61, align 8, !tbaa !9
  %545 = add nsw i64 %543, %544
  %546 = getelementptr inbounds double, ptr %541, i64 %545
  %547 = load double, ptr %546, align 8, !tbaa !14
  %548 = fadd double %547, %540
  store double %548, ptr %546, align 8, !tbaa !14
  br label %549

549:                                              ; preds = %538
  %550 = load i64, ptr %60, align 8, !tbaa !9
  %551 = add nsw i64 %550, 1
  store i64 %551, ptr %60, align 8, !tbaa !9
  br label %457, !llvm.loop !18

552:                                              ; preds = %457
  %553 = load i64, ptr %61, align 8, !tbaa !9
  %554 = load i64, ptr %61, align 8, !tbaa !9
  %555 = load i64, ptr %38, align 8, !tbaa !9
  %556 = mul nsw i64 %554, %555
  %557 = add nsw i64 %553, %556
  store i64 %557, ptr %45, align 8, !tbaa !9
  %558 = load double, ptr %87, align 8, !tbaa !14
  store double %558, ptr %51, align 8, !tbaa !14
  %559 = load ptr, ptr %34, align 8, !tbaa !5
  %560 = load i64, ptr %61, align 8, !tbaa !9
  %561 = getelementptr inbounds double, ptr %559, i64 %560
  %562 = load double, ptr %561, align 8, !tbaa !14
  %563 = load ptr, ptr %23, align 8, !tbaa !5
  %564 = load i64, ptr %45, align 8, !tbaa !9
  %565 = getelementptr inbounds %struct.doublecomplex, ptr %563, i64 %564
  %566 = getelementptr inbounds %struct.doublecomplex, ptr %565, i32 0, i32 0
  %567 = load double, ptr %566, align 8, !tbaa !16
  store double %567, ptr %49, align 8, !tbaa !14
  %568 = load double, ptr %49, align 8, !tbaa !14
  %569 = fcmp oge double %568, 0.000000e+00
  br i1 %569, label %570, label %572

570:                                              ; preds = %552
  %571 = load double, ptr %49, align 8, !tbaa !14
  br label %575

572:                                              ; preds = %552
  %573 = load double, ptr %49, align 8, !tbaa !14
  %574 = fneg double %573
  br label %575

575:                                              ; preds = %572, %570
  %576 = phi double [ %571, %570 ], [ %574, %572 ]
  %577 = load ptr, ptr %23, align 8, !tbaa !5
  %578 = load i64, ptr %61, align 8, !tbaa !9
  %579 = load i64, ptr %61, align 8, !tbaa !9
  %580 = load i64, ptr %38, align 8, !tbaa !9
  %581 = mul nsw i64 %579, %580
  %582 = add nsw i64 %578, %581
  %583 = getelementptr inbounds %struct.doublecomplex, ptr %577, i64 %582
  %584 = call double @d_imag(ptr noundef %583)
  store double %584, ptr %50, align 8, !tbaa !14
  %585 = load double, ptr %50, align 8, !tbaa !14
  %586 = fcmp oge double %585, 0.000000e+00
  br i1 %586, label %587, label %589

587:                                              ; preds = %575
  %588 = load double, ptr %50, align 8, !tbaa !14
  br label %592

589:                                              ; preds = %575
  %590 = load double, ptr %50, align 8, !tbaa !14
  %591 = fneg double %590
  br label %592

592:                                              ; preds = %589, %587
  %593 = phi double [ %588, %587 ], [ %591, %589 ]
  %594 = fadd double %576, %593
  %595 = fadd double %562, %594
  store double %595, ptr %52, align 8, !tbaa !14
  %596 = load double, ptr %51, align 8, !tbaa !14
  %597 = load double, ptr %52, align 8, !tbaa !14
  %598 = fcmp oge double %596, %597
  br i1 %598, label %599, label %601

599:                                              ; preds = %592
  %600 = load double, ptr %51, align 8, !tbaa !14
  br label %603

601:                                              ; preds = %592
  %602 = load double, ptr %52, align 8, !tbaa !14
  br label %603

603:                                              ; preds = %601, %599
  %604 = phi double [ %600, %599 ], [ %602, %601 ]
  store double %604, ptr %87, align 8, !tbaa !14
  %605 = load i64, ptr %61, align 8, !tbaa !9
  %606 = load i64, ptr %61, align 8, !tbaa !9
  %607 = load i64, ptr %36, align 8, !tbaa !9
  %608 = mul nsw i64 %606, %607
  %609 = add nsw i64 %605, %608
  store i64 %609, ptr %45, align 8, !tbaa !9
  %610 = load double, ptr %88, align 8, !tbaa !14
  store double %610, ptr %51, align 8, !tbaa !14
  %611 = load ptr, ptr %34, align 8, !tbaa !5
  %612 = load ptr, ptr %22, align 8, !tbaa !5
  %613 = load i64, ptr %612, align 8, !tbaa !9
  %614 = load i64, ptr %61, align 8, !tbaa !9
  %615 = add nsw i64 %613, %614
  %616 = getelementptr inbounds double, ptr %611, i64 %615
  %617 = load double, ptr %616, align 8, !tbaa !14
  %618 = load ptr, ptr %25, align 8, !tbaa !5
  %619 = load i64, ptr %45, align 8, !tbaa !9
  %620 = getelementptr inbounds %struct.doublecomplex, ptr %618, i64 %619
  %621 = getelementptr inbounds %struct.doublecomplex, ptr %620, i32 0, i32 0
  %622 = load double, ptr %621, align 8, !tbaa !16
  store double %622, ptr %49, align 8, !tbaa !14
  %623 = load double, ptr %49, align 8, !tbaa !14
  %624 = fcmp oge double %623, 0.000000e+00
  br i1 %624, label %625, label %627

625:                                              ; preds = %603
  %626 = load double, ptr %49, align 8, !tbaa !14
  br label %630

627:                                              ; preds = %603
  %628 = load double, ptr %49, align 8, !tbaa !14
  %629 = fneg double %628
  br label %630

630:                                              ; preds = %627, %625
  %631 = phi double [ %626, %625 ], [ %629, %627 ]
  %632 = load ptr, ptr %25, align 8, !tbaa !5
  %633 = load i64, ptr %61, align 8, !tbaa !9
  %634 = load i64, ptr %61, align 8, !tbaa !9
  %635 = load i64, ptr %36, align 8, !tbaa !9
  %636 = mul nsw i64 %634, %635
  %637 = add nsw i64 %633, %636
  %638 = getelementptr inbounds %struct.doublecomplex, ptr %632, i64 %637
  %639 = call double @d_imag(ptr noundef %638)
  store double %639, ptr %50, align 8, !tbaa !14
  %640 = load double, ptr %50, align 8, !tbaa !14
  %641 = fcmp oge double %640, 0.000000e+00
  br i1 %641, label %642, label %644

642:                                              ; preds = %630
  %643 = load double, ptr %50, align 8, !tbaa !14
  br label %647

644:                                              ; preds = %630
  %645 = load double, ptr %50, align 8, !tbaa !14
  %646 = fneg double %645
  br label %647

647:                                              ; preds = %644, %642
  %648 = phi double [ %643, %642 ], [ %646, %644 ]
  %649 = fadd double %631, %648
  %650 = fadd double %617, %649
  store double %650, ptr %52, align 8, !tbaa !14
  %651 = load double, ptr %51, align 8, !tbaa !14
  %652 = load double, ptr %52, align 8, !tbaa !14
  %653 = fcmp oge double %651, %652
  br i1 %653, label %654, label %656

654:                                              ; preds = %647
  %655 = load double, ptr %51, align 8, !tbaa !14
  br label %658

656:                                              ; preds = %647
  %657 = load double, ptr %52, align 8, !tbaa !14
  br label %658

658:                                              ; preds = %656, %654
  %659 = phi double [ %655, %654 ], [ %657, %656 ]
  store double %659, ptr %88, align 8, !tbaa !14
  br label %660

660:                                              ; preds = %658
  %661 = load i64, ptr %61, align 8, !tbaa !9
  %662 = add nsw i64 %661, 1
  store i64 %662, ptr %61, align 8, !tbaa !9
  br label %441, !llvm.loop !19

663:                                              ; preds = %441
  %664 = load double, ptr %87, align 8, !tbaa !14
  %665 = load double, ptr %99, align 8, !tbaa !14
  %666 = fcmp oge double %664, %665
  br i1 %666, label %667, label %669

667:                                              ; preds = %663
  %668 = load double, ptr %87, align 8, !tbaa !14
  br label %671

669:                                              ; preds = %663
  %670 = load double, ptr %99, align 8, !tbaa !14
  br label %671

671:                                              ; preds = %669, %667
  %672 = phi double [ %668, %667 ], [ %670, %669 ]
  %673 = fdiv double 1.000000e+00, %672
  store double %673, ptr %96, align 8, !tbaa !14
  %674 = load double, ptr %88, align 8, !tbaa !14
  %675 = load double, ptr %99, align 8, !tbaa !14
  %676 = fcmp oge double %674, %675
  br i1 %676, label %677, label %679

677:                                              ; preds = %671
  %678 = load double, ptr %88, align 8, !tbaa !14
  br label %681

679:                                              ; preds = %671
  %680 = load double, ptr %99, align 8, !tbaa !14
  br label %681

681:                                              ; preds = %679, %677
  %682 = phi double [ %678, %677 ], [ %680, %679 ]
  %683 = fdiv double 1.000000e+00, %682
  store double %683, ptr %97, align 8, !tbaa !14
  %684 = load i64, ptr %86, align 8, !tbaa !9
  %685 = icmp ne i64 %684, 0
  br i1 %685, label %686, label %2110

686:                                              ; preds = %681
  store i64 0, ptr %73, align 8, !tbaa !9
  %687 = load ptr, ptr %22, align 8, !tbaa !5
  %688 = load i64, ptr %687, align 8, !tbaa !9
  store i64 %688, ptr %44, align 8, !tbaa !9
  store i64 1, ptr %64, align 8, !tbaa !9
  br label %689

689:                                              ; preds = %2106, %686
  %690 = load i64, ptr %64, align 8, !tbaa !9
  %691 = load i64, ptr %44, align 8, !tbaa !9
  %692 = icmp sle i64 %690, %691
  br i1 %692, label %693, label %2109

693:                                              ; preds = %689
  %694 = load i64, ptr %82, align 8, !tbaa !9
  %695 = icmp ne i64 %694, 0
  br i1 %695, label %696, label %697

696:                                              ; preds = %693
  store i64 1, ptr %101, align 8, !tbaa !9
  br label %702

697:                                              ; preds = %693
  %698 = load ptr, ptr %21, align 8, !tbaa !5
  %699 = load i64, ptr %64, align 8, !tbaa !9
  %700 = getelementptr inbounds i64, ptr %698, i64 %699
  %701 = load i64, ptr %700, align 8, !tbaa !9
  store i64 %701, ptr %101, align 8, !tbaa !9
  br label %702

702:                                              ; preds = %697, %696
  %703 = load i64, ptr %101, align 8, !tbaa !9
  %704 = icmp ne i64 %703, 0
  br i1 %704, label %705, label %2104

705:                                              ; preds = %702
  %706 = load i64, ptr %73, align 8, !tbaa !9
  %707 = add nsw i64 %706, 1
  store i64 %707, ptr %73, align 8, !tbaa !9
  %708 = load i64, ptr %64, align 8, !tbaa !9
  %709 = load i64, ptr %64, align 8, !tbaa !9
  %710 = load i64, ptr %38, align 8, !tbaa !9
  %711 = mul nsw i64 %709, %710
  %712 = add nsw i64 %708, %711
  store i64 %712, ptr %45, align 8, !tbaa !9
  %713 = load i64, ptr %64, align 8, !tbaa !9
  %714 = load i64, ptr %64, align 8, !tbaa !9
  %715 = load i64, ptr %36, align 8, !tbaa !9
  %716 = mul nsw i64 %714, %715
  %717 = add nsw i64 %713, %716
  store i64 %717, ptr %46, align 8, !tbaa !9
  %718 = load ptr, ptr %23, align 8, !tbaa !5
  %719 = load i64, ptr %45, align 8, !tbaa !9
  %720 = getelementptr inbounds %struct.doublecomplex, ptr %718, i64 %719
  %721 = getelementptr inbounds %struct.doublecomplex, ptr %720, i32 0, i32 0
  %722 = load double, ptr %721, align 8, !tbaa !16
  store double %722, ptr %50, align 8, !tbaa !14
  %723 = load double, ptr %50, align 8, !tbaa !14
  %724 = fcmp oge double %723, 0.000000e+00
  br i1 %724, label %725, label %727

725:                                              ; preds = %705
  %726 = load double, ptr %50, align 8, !tbaa !14
  br label %730

727:                                              ; preds = %705
  %728 = load double, ptr %50, align 8, !tbaa !14
  %729 = fneg double %728
  br label %730

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

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

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

747:                                              ; preds = %744, %742
  %748 = phi double [ %743, %742 ], [ %746, %744 ]
  %749 = fadd double %731, %748
  %750 = load double, ptr %99, align 8, !tbaa !14
  %751 = fcmp ole double %749, %750
  br i1 %751, label %752, label %807

752:                                              ; preds = %747
  %753 = load ptr, ptr %25, align 8, !tbaa !5
  %754 = load i64, ptr %46, align 8, !tbaa !9
  %755 = getelementptr inbounds %struct.doublecomplex, ptr %753, i64 %754
  %756 = getelementptr inbounds %struct.doublecomplex, ptr %755, i32 0, i32 0
  %757 = load double, ptr %756, align 8, !tbaa !16
  store double %757, ptr %49, align 8, !tbaa !14
  %758 = load double, ptr %49, align 8, !tbaa !14
  %759 = fcmp oge double %758, 0.000000e+00
  br i1 %759, label %760, label %762

760:                                              ; preds = %752
  %761 = load double, ptr %49, align 8, !tbaa !14
  br label %765

762:                                              ; preds = %752
  %763 = load double, ptr %49, align 8, !tbaa !14
  %764 = fneg double %763
  br label %765

765:                                              ; preds = %762, %760
  %766 = phi double [ %761, %760 ], [ %764, %762 ]
  %767 = load double, ptr %99, align 8, !tbaa !14
  %768 = fcmp ole double %766, %767
  br i1 %768, label %769, label %807

769:                                              ; preds = %765
  %770 = load ptr, ptr %22, align 8, !tbaa !5
  %771 = load i64, ptr %770, align 8, !tbaa !9
  store i64 %771, ptr %45, align 8, !tbaa !9
  store i64 1, ptr %66, align 8, !tbaa !9
  br label %772

772:                                              ; preds = %790, %769
  %773 = load i64, ptr %66, align 8, !tbaa !9
  %774 = load i64, ptr %45, align 8, !tbaa !9
  %775 = icmp sle i64 %773, %774
  br i1 %775, label %776, label %793

776:                                              ; preds = %772
  %777 = load i64, ptr %66, align 8, !tbaa !9
  %778 = load i64, ptr %73, align 8, !tbaa !9
  %779 = load i64, ptr %40, align 8, !tbaa !9
  %780 = mul nsw i64 %778, %779
  %781 = add nsw i64 %777, %780
  store i64 %781, ptr %46, align 8, !tbaa !9
  %782 = load ptr, ptr %27, align 8, !tbaa !5
  %783 = load i64, ptr %46, align 8, !tbaa !9
  %784 = getelementptr inbounds %struct.doublecomplex, ptr %782, i64 %783
  %785 = getelementptr inbounds %struct.doublecomplex, ptr %784, i32 0, i32 0
  store double 0.000000e+00, ptr %785, align 8, !tbaa !16
  %786 = load ptr, ptr %27, align 8, !tbaa !5
  %787 = load i64, ptr %46, align 8, !tbaa !9
  %788 = getelementptr inbounds %struct.doublecomplex, ptr %786, i64 %787
  %789 = getelementptr inbounds %struct.doublecomplex, ptr %788, i32 0, i32 1
  store double 0.000000e+00, ptr %789, align 8, !tbaa !20
  br label %790

790:                                              ; preds = %776
  %791 = load i64, ptr %66, align 8, !tbaa !9
  %792 = add nsw i64 %791, 1
  store i64 %792, ptr %66, align 8, !tbaa !9
  br label %772, !llvm.loop !21

793:                                              ; preds = %772
  %794 = load i64, ptr %73, align 8, !tbaa !9
  %795 = load i64, ptr %73, align 8, !tbaa !9
  %796 = load i64, ptr %40, align 8, !tbaa !9
  %797 = mul nsw i64 %795, %796
  %798 = add nsw i64 %794, %797
  store i64 %798, ptr %45, align 8, !tbaa !9
  %799 = load ptr, ptr %27, align 8, !tbaa !5
  %800 = load i64, ptr %45, align 8, !tbaa !9
  %801 = getelementptr inbounds %struct.doublecomplex, ptr %799, i64 %800
  %802 = getelementptr inbounds %struct.doublecomplex, ptr %801, i32 0, i32 0
  store double 1.000000e+00, ptr %802, align 8, !tbaa !16
  %803 = load ptr, ptr %27, align 8, !tbaa !5
  %804 = load i64, ptr %45, align 8, !tbaa !9
  %805 = getelementptr inbounds %struct.doublecomplex, ptr %803, i64 %804
  %806 = getelementptr inbounds %struct.doublecomplex, ptr %805, i32 0, i32 1
  store double 0.000000e+00, ptr %806, align 8, !tbaa !20
  br label %2105

807:                                              ; preds = %765, %747
  %808 = load i64, ptr %64, align 8, !tbaa !9
  %809 = load i64, ptr %64, align 8, !tbaa !9
  %810 = load i64, ptr %38, align 8, !tbaa !9
  %811 = mul nsw i64 %809, %810
  %812 = add nsw i64 %808, %811
  store i64 %812, ptr %45, align 8, !tbaa !9
  %813 = load i64, ptr %64, align 8, !tbaa !9
  %814 = load i64, ptr %64, align 8, !tbaa !9
  %815 = load i64, ptr %36, align 8, !tbaa !9
  %816 = mul nsw i64 %814, %815
  %817 = add nsw i64 %813, %816
  store i64 %817, ptr %46, align 8, !tbaa !9
  %818 = load ptr, ptr %23, align 8, !tbaa !5
  %819 = load i64, ptr %45, align 8, !tbaa !9
  %820 = getelementptr inbounds %struct.doublecomplex, ptr %818, i64 %819
  %821 = getelementptr inbounds %struct.doublecomplex, ptr %820, i32 0, i32 0
  %822 = load double, ptr %821, align 8, !tbaa !16
  store double %822, ptr %50, align 8, !tbaa !14
  %823 = load double, ptr %50, align 8, !tbaa !14
  %824 = fcmp oge double %823, 0.000000e+00
  br i1 %824, label %825, label %827

825:                                              ; preds = %807
  %826 = load double, ptr %50, align 8, !tbaa !14
  br label %830

827:                                              ; preds = %807
  %828 = load double, ptr %50, align 8, !tbaa !14
  %829 = fneg double %828
  br label %830

830:                                              ; preds = %827, %825
  %831 = phi double [ %826, %825 ], [ %829, %827 ]
  %832 = load ptr, ptr %23, align 8, !tbaa !5
  %833 = load i64, ptr %64, align 8, !tbaa !9
  %834 = load i64, ptr %64, align 8, !tbaa !9
  %835 = load i64, ptr %38, align 8, !tbaa !9
  %836 = mul nsw i64 %834, %835
  %837 = add nsw i64 %833, %836
  %838 = getelementptr inbounds %struct.doublecomplex, ptr %832, i64 %837
  %839 = call double @d_imag(ptr noundef %838)
  store double %839, ptr %51, align 8, !tbaa !14
  %840 = load double, ptr %51, align 8, !tbaa !14
  %841 = fcmp oge double %840, 0.000000e+00
  br i1 %841, label %842, label %844

842:                                              ; preds = %830
  %843 = load double, ptr %51, align 8, !tbaa !14
  br label %847

844:                                              ; preds = %830
  %845 = load double, ptr %51, align 8, !tbaa !14
  %846 = fneg double %845
  br label %847

847:                                              ; preds = %844, %842
  %848 = phi double [ %843, %842 ], [ %846, %844 ]
  %849 = fadd double %831, %848
  %850 = load double, ptr %96, align 8, !tbaa !14
  %851 = fmul double %849, %850
  store double %851, ptr %52, align 8, !tbaa !14
  %852 = load ptr, ptr %25, align 8, !tbaa !5
  %853 = load i64, ptr %46, align 8, !tbaa !9
  %854 = getelementptr inbounds %struct.doublecomplex, ptr %852, i64 %853
  %855 = getelementptr inbounds %struct.doublecomplex, ptr %854, i32 0, i32 0
  %856 = load double, ptr %855, align 8, !tbaa !16
  store double %856, ptr %49, align 8, !tbaa !14
  %857 = load double, ptr %49, align 8, !tbaa !14
  %858 = fcmp oge double %857, 0.000000e+00
  br i1 %858, label %859, label %861

859:                                              ; preds = %847
  %860 = load double, ptr %49, align 8, !tbaa !14
  br label %864

861:                                              ; preds = %847
  %862 = load double, ptr %49, align 8, !tbaa !14
  %863 = fneg double %862
  br label %864

864:                                              ; preds = %861, %859
  %865 = phi double [ %860, %859 ], [ %863, %861 ]
  %866 = load double, ptr %97, align 8, !tbaa !14
  %867 = fmul double %865, %866
  store double %867, ptr %53, align 8, !tbaa !14
  %868 = load double, ptr %52, align 8, !tbaa !14
  %869 = load double, ptr %53, align 8, !tbaa !14
  %870 = fcmp oge double %868, %869
  br i1 %870, label %871, label %873

871:                                              ; preds = %864
  %872 = load double, ptr %52, align 8, !tbaa !14
  br label %875

873:                                              ; preds = %864
  %874 = load double, ptr %53, align 8, !tbaa !14
  br label %875

875:                                              ; preds = %873, %871
  %876 = phi double [ %872, %871 ], [ %874, %873 ]
  store double %876, ptr %52, align 8, !tbaa !14
  %877 = load double, ptr %52, align 8, !tbaa !14
  %878 = load double, ptr %99, align 8, !tbaa !14
  %879 = fcmp oge double %877, %878
  br i1 %879, label %880, label %882

880:                                              ; preds = %875
  %881 = load double, ptr %52, align 8, !tbaa !14
  br label %884

882:                                              ; preds = %875
  %883 = load double, ptr %99, align 8, !tbaa !14
  br label %884

884:                                              ; preds = %882, %880
  %885 = phi double [ %881, %880 ], [ %883, %882 ]
  %886 = fdiv double 1.000000e+00, %885
  store double %886, ptr %77, align 8, !tbaa !14
  %887 = load i64, ptr %64, align 8, !tbaa !9
  %888 = load i64, ptr %64, align 8, !tbaa !9
  %889 = load i64, ptr %38, align 8, !tbaa !9
  %890 = mul nsw i64 %888, %889
  %891 = add nsw i64 %887, %890
  store i64 %891, ptr %45, align 8, !tbaa !9
  %892 = load double, ptr %77, align 8, !tbaa !14
  %893 = load ptr, ptr %23, align 8, !tbaa !5
  %894 = load i64, ptr %45, align 8, !tbaa !9
  %895 = getelementptr inbounds %struct.doublecomplex, ptr %893, i64 %894
  %896 = getelementptr inbounds %struct.doublecomplex, ptr %895, i32 0, i32 0
  %897 = load double, ptr %896, align 8, !tbaa !16
  %898 = fmul double %892, %897
  %899 = getelementptr inbounds %struct.doublecomplex, ptr %56, i32 0, i32 0
  store double %898, ptr %899, align 8, !tbaa !16
  %900 = load double, ptr %77, align 8, !tbaa !14
  %901 = load ptr, ptr %23, align 8, !tbaa !5
  %902 = load i64, ptr %45, align 8, !tbaa !9
  %903 = getelementptr inbounds %struct.doublecomplex, ptr %901, i64 %902
  %904 = getelementptr inbounds %struct.doublecomplex, ptr %903, i32 0, i32 1
  %905 = load double, ptr %904, align 8, !tbaa !20
  %906 = fmul double %900, %905
  %907 = getelementptr inbounds %struct.doublecomplex, ptr %56, i32 0, i32 1
  store double %906, ptr %907, align 8, !tbaa !20
  %908 = load double, ptr %96, align 8, !tbaa !14
  %909 = getelementptr inbounds %struct.doublecomplex, ptr %56, i32 0, i32 0
  %910 = load double, ptr %909, align 8, !tbaa !16
  %911 = fmul double %908, %910
  %912 = getelementptr inbounds %struct.doublecomplex, ptr %55, i32 0, i32 0
  store double %911, ptr %912, align 8, !tbaa !16
  %913 = load double, ptr %96, align 8, !tbaa !14
  %914 = getelementptr inbounds %struct.doublecomplex, ptr %56, i32 0, i32 1
  %915 = load double, ptr %914, align 8, !tbaa !20
  %916 = fmul double %913, %915
  %917 = getelementptr inbounds %struct.doublecomplex, ptr %55, i32 0, i32 1
  store double %916, ptr %917, align 8, !tbaa !20
  %918 = getelementptr inbounds %struct.doublecomplex, ptr %55, i32 0, i32 0
  %919 = load double, ptr %918, align 8, !tbaa !16
  %920 = getelementptr inbounds %struct.doublecomplex, ptr %98, i32 0, i32 0
  store double %919, ptr %920, align 8, !tbaa !16
  %921 = getelementptr inbounds %struct.doublecomplex, ptr %55, i32 0, i32 1
  %922 = load double, ptr %921, align 8, !tbaa !20
  %923 = getelementptr inbounds %struct.doublecomplex, ptr %98, i32 0, i32 1
  store double %922, ptr %923, align 8, !tbaa !20
  %924 = load i64, ptr %64, align 8, !tbaa !9
  %925 = load i64, ptr %64, align 8, !tbaa !9
  %926 = load i64, ptr %36, align 8, !tbaa !9
  %927 = mul nsw i64 %925, %926
  %928 = add nsw i64 %924, %927
  store i64 %928, ptr %45, align 8, !tbaa !9
  %929 = load double, ptr %77, align 8, !tbaa !14
  %930 = load ptr, ptr %25, align 8, !tbaa !5
  %931 = load i64, ptr %45, align 8, !tbaa !9
  %932 = getelementptr inbounds %struct.doublecomplex, ptr %930, i64 %931
  %933 = getelementptr inbounds %struct.doublecomplex, ptr %932, i32 0, i32 0
  %934 = load double, ptr %933, align 8, !tbaa !16
  %935 = fmul double %929, %934
  %936 = load double, ptr %97, align 8, !tbaa !14
  %937 = fmul double %935, %936
  store double %937, ptr %84, align 8, !tbaa !14
  %938 = load double, ptr %84, align 8, !tbaa !14
  %939 = load double, ptr %96, align 8, !tbaa !14
  %940 = fmul double %938, %939
  store double %940, ptr %93, align 8, !tbaa !14
  %941 = load double, ptr %97, align 8, !tbaa !14
  %942 = getelementptr inbounds %struct.doublecomplex, ptr %98, i32 0, i32 0
  %943 = load double, ptr %942, align 8, !tbaa !16
  %944 = fmul double %941, %943
  %945 = getelementptr inbounds %struct.doublecomplex, ptr %55, i32 0, i32 0
  store double %944, ptr %945, align 8, !tbaa !16
  %946 = load double, ptr %97, align 8, !tbaa !14
  %947 = getelementptr inbounds %struct.doublecomplex, ptr %98, i32 0, i32 1
  %948 = load double, ptr %947, align 8, !tbaa !20
  %949 = fmul double %946, %948
  %950 = getelementptr inbounds %struct.doublecomplex, ptr %55, i32 0, i32 1
  store double %949, ptr %950, align 8, !tbaa !20
  %951 = getelementptr inbounds %struct.doublecomplex, ptr %55, i32 0, i32 0
  %952 = load double, ptr %951, align 8, !tbaa !16
  %953 = getelementptr inbounds %struct.doublecomplex, ptr %94, i32 0, i32 0
  store double %952, ptr %953, align 8, !tbaa !16
  %954 = getelementptr inbounds %struct.doublecomplex, ptr %55, i32 0, i32 1
  %955 = load double, ptr %954, align 8, !tbaa !20
  %956 = getelementptr inbounds %struct.doublecomplex, ptr %94, i32 0, i32 1
  store double %955, ptr %956, align 8, !tbaa !20
  %957 = load double, ptr %84, align 8, !tbaa !14
  %958 = fcmp oge double %957, 0.000000e+00
  br i1 %958, label %959, label %961

959:                                              ; preds = %884
  %960 = load double, ptr %84, align 8, !tbaa !14
  br label %964

961:                                              ; preds = %884
  %962 = load double, ptr %84, align 8, !tbaa !14
  %963 = fneg double %962
  br label %964

964:                                              ; preds = %961, %959
  %965 = phi double [ %960, %959 ], [ %963, %961 ]
  %966 = load double, ptr %99, align 8, !tbaa !14
  %967 = fcmp oge double %965, %966
  br i1 %967, label %968, label %980

968:                                              ; preds = %964
  %969 = load double, ptr %93, align 8, !tbaa !14
  %970 = fcmp oge double %969, 0.000000e+00
  br i1 %970, label %971, label %973

971:                                              ; preds = %968
  %972 = load double, ptr %93, align 8, !tbaa !14
  br label %976

973:                                              ; preds = %968
  %974 = load double, ptr %93, align 8, !tbaa !14
  %975 = fneg double %974
  br label %976

976:                                              ; preds = %973, %971
  %977 = phi double [ %972, %971 ], [ %975, %973 ]
  %978 = load double, ptr %85, align 8, !tbaa !14
  %979 = fcmp olt double %977, %978
  br label %980

980:                                              ; preds = %976, %964
  %981 = phi i1 [ false, %964 ], [ %979, %976 ]
  %982 = zext i1 %981 to i32
  %983 = sext i32 %982 to i64
  store i64 %983, ptr %68, align 8, !tbaa !9
  %984 = getelementptr inbounds %struct.doublecomplex, ptr %98, i32 0, i32 0
  %985 = load double, ptr %984, align 8, !tbaa !16
  store double %985, ptr %49, align 8, !tbaa !14
  %986 = load double, ptr %49, align 8, !tbaa !14
  %987 = fcmp oge double %986, 0.000000e+00
  br i1 %987, label %988, label %990

988:                                              ; preds = %980
  %989 = load double, ptr %49, align 8, !tbaa !14
  br label %993

990:                                              ; preds = %980
  %991 = load double, ptr %49, align 8, !tbaa !14
  %992 = fneg double %991
  br label %993

993:                                              ; preds = %990, %988
  %994 = phi double [ %989, %988 ], [ %992, %990 ]
  %995 = call double @d_imag(ptr noundef %98)
  store double %995, ptr %50, align 8, !tbaa !14
  %996 = load double, ptr %50, align 8, !tbaa !14
  %997 = fcmp oge double %996, 0.000000e+00
  br i1 %997, label %998, label %1000

998:                                              ; preds = %993
  %999 = load double, ptr %50, align 8, !tbaa !14
  br label %1003

1000:                                             ; preds = %993
  %1001 = load double, ptr %50, align 8, !tbaa !14
  %1002 = fneg double %1001
  br label %1003

1003:                                             ; preds = %1000, %998
  %1004 = phi double [ %999, %998 ], [ %1002, %1000 ]
  %1005 = fadd double %994, %1004
  %1006 = load double, ptr %99, align 8, !tbaa !14
  %1007 = fcmp oge double %1005, %1006
  br i1 %1007, label %1008, label %1033

1008:                                             ; preds = %1003
  %1009 = getelementptr inbounds %struct.doublecomplex, ptr %94, i32 0, i32 0
  %1010 = load double, ptr %1009, align 8, !tbaa !16
  store double %1010, ptr %51, align 8, !tbaa !14
  %1011 = load double, ptr %51, align 8, !tbaa !14
  %1012 = fcmp oge double %1011, 0.000000e+00
  br i1 %1012, label %1013, label %1015

1013:                                             ; preds = %1008
  %1014 = load double, ptr %51, align 8, !tbaa !14
  br label %1018

1015:                                             ; preds = %1008
  %1016 = load double, ptr %51, align 8, !tbaa !14
  %1017 = fneg double %1016
  br label %1018

1018:                                             ; preds = %1015, %1013
  %1019 = phi double [ %1014, %1013 ], [ %1017, %1015 ]
  %1020 = call double @d_imag(ptr noundef %94)
  store double %1020, ptr %52, align 8, !tbaa !14
  %1021 = load double, ptr %52, align 8, !tbaa !14
  %1022 = fcmp oge double %1021, 0.000000e+00
  br i1 %1022, label %1023, label %1025

1023:                                             ; preds = %1018
  %1024 = load double, ptr %52, align 8, !tbaa !14
  br label %1028

1025:                                             ; preds = %1018
  %1026 = load double, ptr %52, align 8, !tbaa !14
  %1027 = fneg double %1026
  br label %1028

1028:                                             ; preds = %1025, %1023
  %1029 = phi double [ %1024, %1023 ], [ %1027, %1025 ]
  %1030 = fadd double %1019, %1029
  %1031 = load double, ptr %85, align 8, !tbaa !14
  %1032 = fcmp olt double %1030, %1031
  br label %1033

1033:                                             ; preds = %1028, %1003
  %1034 = phi i1 [ false, %1003 ], [ %1032, %1028 ]
  %1035 = zext i1 %1034 to i32
  %1036 = sext i32 %1035 to i64
  store i64 %1036, ptr %69, align 8, !tbaa !9
  store double 1.000000e+00, ptr %81, align 8, !tbaa !14
  %1037 = load i64, ptr %68, align 8, !tbaa !9
  %1038 = icmp ne i64 %1037, 0
  br i1 %1038, label %1039, label %1061

1039:                                             ; preds = %1033
  %1040 = load double, ptr %85, align 8, !tbaa !14
  %1041 = load double, ptr %84, align 8, !tbaa !14
  %1042 = fcmp oge double %1041, 0.000000e+00
  br i1 %1042, label %1043, label %1045

1043:                                             ; preds = %1039
  %1044 = load double, ptr %84, align 8, !tbaa !14
  br label %1048

1045:                                             ; preds = %1039
  %1046 = load double, ptr %84, align 8, !tbaa !14
  %1047 = fneg double %1046
  br label %1048

1048:                                             ; preds = %1045, %1043
  %1049 = phi double [ %1044, %1043 ], [ %1047, %1045 ]
  %1050 = fdiv double %1040, %1049
  %1051 = load double, ptr %87, align 8, !tbaa !14
  %1052 = load double, ptr %67, align 8, !tbaa !14
  %1053 = fcmp ole double %1051, %1052
  br i1 %1053, label %1054, label %1056

1054:                                             ; preds = %1048
  %1055 = load double, ptr %87, align 8, !tbaa !14
  br label %1058

1056:                                             ; preds = %1048
  %1057 = load double, ptr %67, align 8, !tbaa !14
  br label %1058

1058:                                             ; preds = %1056, %1054
  %1059 = phi double [ %1055, %1054 ], [ %1057, %1056 ]
  %1060 = fmul double %1050, %1059
  store double %1060, ptr %81, align 8, !tbaa !14
  br label %1061

1061:                                             ; preds = %1058, %1033
  %1062 = load i64, ptr %69, align 8, !tbaa !9
  %1063 = icmp ne i64 %1062, 0
  br i1 %1063, label %1064, label %1109

1064:                                             ; preds = %1061
  %1065 = load double, ptr %81, align 8, !tbaa !14
  store double %1065, ptr %51, align 8, !tbaa !14
  %1066 = load double, ptr %85, align 8, !tbaa !14
  %1067 = getelementptr inbounds %struct.doublecomplex, ptr %98, i32 0, i32 0
  %1068 = load double, ptr %1067, align 8, !tbaa !16
  store double %1068, ptr %49, align 8, !tbaa !14
  %1069 = load double, ptr %49, align 8, !tbaa !14
  %1070 = fcmp oge double %1069, 0.000000e+00
  br i1 %1070, label %1071, label %1073

1071:                                             ; preds = %1064
  %1072 = load double, ptr %49, align 8, !tbaa !14
  br label %1076

1073:                                             ; preds = %1064
  %1074 = load double, ptr %49, align 8, !tbaa !14
  %1075 = fneg double %1074
  br label %1076

1076:                                             ; preds = %1073, %1071
  %1077 = phi double [ %1072, %1071 ], [ %1075, %1073 ]
  %1078 = call double @d_imag(ptr noundef %98)
  store double %1078, ptr %50, align 8, !tbaa !14
  %1079 = load double, ptr %50, align 8, !tbaa !14
  %1080 = fcmp oge double %1079, 0.000000e+00
  br i1 %1080, label %1081, label %1083

1081:                                             ; preds = %1076
  %1082 = load double, ptr %50, align 8, !tbaa !14
  br label %1086

1083:                                             ; preds = %1076
  %1084 = load double, ptr %50, align 8, !tbaa !14
  %1085 = fneg double %1084
  br label %1086

1086:                                             ; preds = %1083, %1081
  %1087 = phi double [ %1082, %1081 ], [ %1085, %1083 ]
  %1088 = fadd double %1077, %1087
  %1089 = fdiv double %1066, %1088
  %1090 = load double, ptr %88, align 8, !tbaa !14
  %1091 = load double, ptr %67, align 8, !tbaa !14
  %1092 = fcmp ole double %1090, %1091
  br i1 %1092, label %1093, label %1095

1093:                                             ; preds = %1086
  %1094 = load double, ptr %88, align 8, !tbaa !14
  br label %1097

1095:                                             ; preds = %1086
  %1096 = load double, ptr %67, align 8, !tbaa !14
  br label %1097

1097:                                             ; preds = %1095, %1093
  %1098 = phi double [ %1094, %1093 ], [ %1096, %1095 ]
  %1099 = fmul double %1089, %1098
  store double %1099, ptr %52, align 8, !tbaa !14
  %1100 = load double, ptr %51, align 8, !tbaa !14
  %1101 = load double, ptr %52, align 8, !tbaa !14
  %1102 = fcmp oge double %1100, %1101
  br i1 %1102, label %1103, label %1105

1103:                                             ; preds = %1097
  %1104 = load double, ptr %51, align 8, !tbaa !14
  br label %1107

1105:                                             ; preds = %1097
  %1106 = load double, ptr %52, align 8, !tbaa !14
  br label %1107

1107:                                             ; preds = %1105, %1103
  %1108 = phi double [ %1104, %1103 ], [ %1106, %1105 ]
  store double %1108, ptr %81, align 8, !tbaa !14
  br label %1109

1109:                                             ; preds = %1107, %1061
  %1110 = load i64, ptr %68, align 8, !tbaa !9
  %1111 = icmp ne i64 %1110, 0
  br i1 %1111, label %1115, label %1112

1112:                                             ; preds = %1109
  %1113 = load i64, ptr %69, align 8, !tbaa !9
  %1114 = icmp ne i64 %1113, 0
  br i1 %1114, label %1115, label %1238

1115:                                             ; preds = %1112, %1109
  store double 1.000000e+00, ptr %53, align 8, !tbaa !14
  %1116 = load double, ptr %93, align 8, !tbaa !14
  %1117 = fcmp oge double %1116, 0.000000e+00
  br i1 %1117, label %1118, label %1120

1118:                                             ; preds = %1115
  %1119 = load double, ptr %93, align 8, !tbaa !14
  br label %1123

1120:                                             ; preds = %1115
  %1121 = load double, ptr %93, align 8, !tbaa !14
  %1122 = fneg double %1121
  br label %1123

1123:                                             ; preds = %1120, %1118
  %1124 = phi double [ %1119, %1118 ], [ %1122, %1120 ]
  store double %1124, ptr %54, align 8, !tbaa !14
  %1125 = load double, ptr %53, align 8, !tbaa !14
  %1126 = load double, ptr %54, align 8, !tbaa !14
  %1127 = fcmp oge double %1125, %1126
  br i1 %1127, label %1128, label %1130

1128:                                             ; preds = %1123
  %1129 = load double, ptr %53, align 8, !tbaa !14
  br label %1132

1130:                                             ; preds = %1123
  %1131 = load double, ptr %54, align 8, !tbaa !14
  br label %1132

1132:                                             ; preds = %1130, %1128
  %1133 = phi double [ %1129, %1128 ], [ %1131, %1130 ]
  store double %1133, ptr %53, align 8, !tbaa !14
  %1134 = getelementptr inbounds %struct.doublecomplex, ptr %94, i32 0, i32 0
  %1135 = load double, ptr %1134, align 8, !tbaa !16
  store double %1135, ptr %49, align 8, !tbaa !14
  %1136 = load double, ptr %49, align 8, !tbaa !14
  %1137 = fcmp oge double %1136, 0.000000e+00
  br i1 %1137, label %1138, label %1140

1138:                                             ; preds = %1132
  %1139 = load double, ptr %49, align 8, !tbaa !14
  br label %1143

1140:                                             ; preds = %1132
  %1141 = load double, ptr %49, align 8, !tbaa !14
  %1142 = fneg double %1141
  br label %1143

1143:                                             ; preds = %1140, %1138
  %1144 = phi double [ %1139, %1138 ], [ %1142, %1140 ]
  %1145 = call double @d_imag(ptr noundef %94)
  store double %1145, ptr %50, align 8, !tbaa !14
  %1146 = load double, ptr %50, align 8, !tbaa !14
  %1147 = fcmp oge double %1146, 0.000000e+00
  br i1 %1147, label %1148, label %1150

1148:                                             ; preds = %1143
  %1149 = load double, ptr %50, align 8, !tbaa !14
  br label %1153

1150:                                             ; preds = %1143
  %1151 = load double, ptr %50, align 8, !tbaa !14
  %1152 = fneg double %1151
  br label %1153

1153:                                             ; preds = %1150, %1148
  %1154 = phi double [ %1149, %1148 ], [ %1152, %1150 ]
  %1155 = fadd double %1144, %1154
  store double %1155, ptr %54, align 8, !tbaa !14
  %1156 = load double, ptr %81, align 8, !tbaa !14
  store double %1156, ptr %51, align 8, !tbaa !14
  %1157 = load double, ptr %99, align 8, !tbaa !14
  %1158 = load double, ptr %53, align 8, !tbaa !14
  %1159 = load double, ptr %54, align 8, !tbaa !14
  %1160 = fcmp oge double %1158, %1159
  br i1 %1160, label %1161, label %1163

1161:                                             ; preds = %1153
  %1162 = load double, ptr %53, align 8, !tbaa !14
  br label %1165

1163:                                             ; preds = %1153
  %1164 = load double, ptr %54, align 8, !tbaa !14
  br label %1165

1165:                                             ; preds = %1163, %1161
  %1166 = phi double [ %1162, %1161 ], [ %1164, %1163 ]
  %1167 = fmul double %1157, %1166
  %1168 = fdiv double 1.000000e+00, %1167
  store double %1168, ptr %52, align 8, !tbaa !14
  %1169 = load double, ptr %51, align 8, !tbaa !14
  %1170 = load double, ptr %52, align 8, !tbaa !14
  %1171 = fcmp ole double %1169, %1170
  br i1 %1171, label %1172, label %1174

1172:                                             ; preds = %1165
  %1173 = load double, ptr %51, align 8, !tbaa !14
  br label %1176

1174:                                             ; preds = %1165
  %1175 = load double, ptr %52, align 8, !tbaa !14
  br label %1176

1176:                                             ; preds = %1174, %1172
  %1177 = phi double [ %1173, %1172 ], [ %1175, %1174 ]
  store double %1177, ptr %81, align 8, !tbaa !14
  %1178 = load i64, ptr %68, align 8, !tbaa !9
  %1179 = icmp ne i64 %1178, 0
  br i1 %1179, label %1180, label %1186

1180:                                             ; preds = %1176
  %1181 = load double, ptr %96, align 8, !tbaa !14
  %1182 = load double, ptr %81, align 8, !tbaa !14
  %1183 = load double, ptr %84, align 8, !tbaa !14
  %1184 = fmul double %1182, %1183
  %1185 = fmul double %1181, %1184
  store double %1185, ptr %93, align 8, !tbaa !14
  br label %1190

1186:                                             ; preds = %1176
  %1187 = load double, ptr %81, align 8, !tbaa !14
  %1188 = load double, ptr %93, align 8, !tbaa !14
  %1189 = fmul double %1187, %1188
  store double %1189, ptr %93, align 8, !tbaa !14
  br label %1190

1190:                                             ; preds = %1186, %1180
  %1191 = load i64, ptr %69, align 8, !tbaa !9
  %1192 = icmp ne i64 %1191, 0
  br i1 %1192, label %1193, label %1220

1193:                                             ; preds = %1190
  %1194 = load double, ptr %81, align 8, !tbaa !14
  %1195 = getelementptr inbounds %struct.doublecomplex, ptr %98, i32 0, i32 0
  %1196 = load double, ptr %1195, align 8, !tbaa !16
  %1197 = fmul double %1194, %1196
  %1198 = getelementptr inbounds %struct.doublecomplex, ptr %56, i32 0, i32 0
  store double %1197, ptr %1198, align 8, !tbaa !16
  %1199 = load double, ptr %81, align 8, !tbaa !14
  %1200 = getelementptr inbounds %struct.doublecomplex, ptr %98, i32 0, i32 1
  %1201 = load double, ptr %1200, align 8, !tbaa !20
  %1202 = fmul double %1199, %1201
  %1203 = getelementptr inbounds %struct.doublecomplex, ptr %56, i32 0, i32 1
  store double %1202, ptr %1203, align 8, !tbaa !20
  %1204 = load double, ptr %97, align 8, !tbaa !14
  %1205 = getelementptr inbounds %struct.doublecomplex, ptr %56, i32 0, i32 0
  %1206 = load double, ptr %1205, align 8, !tbaa !16
  %1207 = fmul double %1204, %1206
  %1208 = getelementptr inbounds %struct.doublecomplex, ptr %55, i32 0, i32 0
  store double %1207, ptr %1208, align 8, !tbaa !16
  %1209 = load double, ptr %97, align 8, !tbaa !14
  %1210 = getelementptr inbounds %struct.doublecomplex, ptr %56, i32 0, i32 1
  %1211 = load double, ptr %1210, align 8, !tbaa !20
  %1212 = fmul double %1209, %1211
  %1213 = getelementptr inbounds %struct.doublecomplex, ptr %55, i32 0, i32 1
  store double %1212, ptr %1213, align 8, !tbaa !20
  %1214 = getelementptr inbounds %struct.doublecomplex, ptr %55, i32 0, i32 0
  %1215 = load double, ptr %1214, align 8, !tbaa !16
  %1216 = getelementptr inbounds %struct.doublecomplex, ptr %94, i32 0, i32 0
  store double %1215, ptr %1216, align 8, !tbaa !16
  %1217 = getelementptr inbounds %struct.doublecomplex, ptr %55, i32 0, i32 1
  %1218 = load double, ptr %1217, align 8, !tbaa !20
  %1219 = getelementptr inbounds %struct.doublecomplex, ptr %94, i32 0, i32 1
  store double %1218, ptr %1219, align 8, !tbaa !20
  br label %1237

1220:                                             ; preds = %1190
  %1221 = load double, ptr %81, align 8, !tbaa !14
  %1222 = getelementptr inbounds %struct.doublecomplex, ptr %94, i32 0, i32 0
  %1223 = load double, ptr %1222, align 8, !tbaa !16
  %1224 = fmul double %1221, %1223
  %1225 = getelementptr inbounds %struct.doublecomplex, ptr %55, i32 0, i32 0
  store double %1224, ptr %1225, align 8, !tbaa !16
  %1226 = load double, ptr %81, align 8, !tbaa !14
  %1227 = getelementptr inbounds %struct.doublecomplex, ptr %94, i32 0, i32 1
  %1228 = load double, ptr %1227, align 8, !tbaa !20
  %1229 = fmul double %1226, %1228
  %1230 = getelementptr inbounds %struct.doublecomplex, ptr %55, i32 0, i32 1
  store double %1229, ptr %1230, align 8, !tbaa !20
  %1231 = getelementptr inbounds %struct.doublecomplex, ptr %55, i32 0, i32 0
  %1232 = load double, ptr %1231, align 8, !tbaa !16
  %1233 = getelementptr inbounds %struct.doublecomplex, ptr %94, i32 0, i32 0
  store double %1232, ptr %1233, align 8, !tbaa !16
  %1234 = getelementptr inbounds %struct.doublecomplex, ptr %55, i32 0, i32 1
  %1235 = load double, ptr %1234, align 8, !tbaa !20
  %1236 = getelementptr inbounds %struct.doublecomplex, ptr %94, i32 0, i32 1
  store double %1235, ptr %1236, align 8, !tbaa !20
  br label %1237

1237:                                             ; preds = %1220, %1193
  br label %1238

1238:                                             ; preds = %1237, %1112
  %1239 = load double, ptr %93, align 8, !tbaa !14
  %1240 = fcmp oge double %1239, 0.000000e+00
  br i1 %1240, label %1241, label %1243

1241:                                             ; preds = %1238
  %1242 = load double, ptr %93, align 8, !tbaa !14
  br label %1246

1243:                                             ; preds = %1238
  %1244 = load double, ptr %93, align 8, !tbaa !14
  %1245 = fneg double %1244
  br label %1246

1246:                                             ; preds = %1243, %1241
  %1247 = phi double [ %1242, %1241 ], [ %1245, %1243 ]
  store double %1247, ptr %91, align 8, !tbaa !14
  %1248 = getelementptr inbounds %struct.doublecomplex, ptr %94, i32 0, i32 0
  %1249 = load double, ptr %1248, align 8, !tbaa !16
  store double %1249, ptr %49, align 8, !tbaa !14
  %1250 = load double, ptr %49, align 8, !tbaa !14
  %1251 = fcmp oge double %1250, 0.000000e+00
  br i1 %1251, label %1252, label %1254

1252:                                             ; preds = %1246
  %1253 = load double, ptr %49, align 8, !tbaa !14
  br label %1257

1254:                                             ; preds = %1246
  %1255 = load double, ptr %49, align 8, !tbaa !14
  %1256 = fneg double %1255
  br label %1257

1257:                                             ; preds = %1254, %1252
  %1258 = phi double [ %1253, %1252 ], [ %1256, %1254 ]
  %1259 = call double @d_imag(ptr noundef %94)
  store double %1259, ptr %50, align 8, !tbaa !14
  %1260 = load double, ptr %50, align 8, !tbaa !14
  %1261 = fcmp oge double %1260, 0.000000e+00
  br i1 %1261, label %1262, label %1264

1262:                                             ; preds = %1257
  %1263 = load double, ptr %50, align 8, !tbaa !14
  br label %1267

1264:                                             ; preds = %1257
  %1265 = load double, ptr %50, align 8, !tbaa !14
  %1266 = fneg double %1265
  br label %1267

1267:                                             ; preds = %1264, %1262
  %1268 = phi double [ %1263, %1262 ], [ %1266, %1264 ]
  %1269 = fadd double %1258, %1268
  store double %1269, ptr %92, align 8, !tbaa !14
  store double 1.000000e+00, ptr %80, align 8, !tbaa !14
  %1270 = load ptr, ptr %22, align 8, !tbaa !5
  %1271 = load i64, ptr %1270, align 8, !tbaa !9
  store i64 %1271, ptr %45, align 8, !tbaa !9
  store i64 1, ptr %66, align 8, !tbaa !9
  br label %1272

1272:                                             ; preds = %1286, %1267
  %1273 = load i64, ptr %66, align 8, !tbaa !9
  %1274 = load i64, ptr %45, align 8, !tbaa !9
  %1275 = icmp sle i64 %1273, %1274
  br i1 %1275, label %1276, label %1289

1276:                                             ; preds = %1272
  %1277 = load i64, ptr %66, align 8, !tbaa !9
  store i64 %1277, ptr %46, align 8, !tbaa !9
  %1278 = load ptr, ptr %33, align 8, !tbaa !5
  %1279 = load i64, ptr %46, align 8, !tbaa !9
  %1280 = getelementptr inbounds %struct.doublecomplex, ptr %1278, i64 %1279
  %1281 = getelementptr inbounds %struct.doublecomplex, ptr %1280, i32 0, i32 0
  store double 0.000000e+00, ptr %1281, align 8, !tbaa !16
  %1282 = load ptr, ptr %33, align 8, !tbaa !5
  %1283 = load i64, ptr %46, align 8, !tbaa !9
  %1284 = getelementptr inbounds %struct.doublecomplex, ptr %1282, i64 %1283
  %1285 = getelementptr inbounds %struct.doublecomplex, ptr %1284, i32 0, i32 1
  store double 0.000000e+00, ptr %1285, align 8, !tbaa !20
  br label %1286

1286:                                             ; preds = %1276
  %1287 = load i64, ptr %66, align 8, !tbaa !9
  %1288 = add nsw i64 %1287, 1
  store i64 %1288, ptr %66, align 8, !tbaa !9
  br label %1272, !llvm.loop !22

1289:                                             ; preds = %1272
  %1290 = load i64, ptr %64, align 8, !tbaa !9
  store i64 %1290, ptr %45, align 8, !tbaa !9
  %1291 = load ptr, ptr %33, align 8, !tbaa !5
  %1292 = load i64, ptr %45, align 8, !tbaa !9
  %1293 = getelementptr inbounds %struct.doublecomplex, ptr %1291, i64 %1292
  %1294 = getelementptr inbounds %struct.doublecomplex, ptr %1293, i32 0, i32 0
  store double 1.000000e+00, ptr %1294, align 8, !tbaa !16
  %1295 = load ptr, ptr %33, align 8, !tbaa !5
  %1296 = load i64, ptr %45, align 8, !tbaa !9
  %1297 = getelementptr inbounds %struct.doublecomplex, ptr %1295, i64 %1296
  %1298 = getelementptr inbounds %struct.doublecomplex, ptr %1297, i32 0, i32 1
  store double 0.000000e+00, ptr %1298, align 8, !tbaa !20
  %1299 = load double, ptr %70, align 8, !tbaa !14
  %1300 = load double, ptr %91, align 8, !tbaa !14
  %1301 = fmul double %1299, %1300
  %1302 = load double, ptr %87, align 8, !tbaa !14
  %1303 = fmul double %1301, %1302
  store double %1303, ptr %49, align 8, !tbaa !14
  %1304 = load double, ptr %70, align 8, !tbaa !14
  %1305 = load double, ptr %92, align 8, !tbaa !14
  %1306 = fmul double %1304, %1305
  %1307 = load double, ptr %88, align 8, !tbaa !14
  %1308 = fmul double %1306, %1307
  store double %1308, ptr %50, align 8, !tbaa !14
  %1309 = load double, ptr %49, align 8, !tbaa !14
  %1310 = load double, ptr %50, align 8, !tbaa !14
  %1311 = fcmp oge double %1309, %1310
  br i1 %1311, label %1312, label %1314

1312:                                             ; preds = %1289
  %1313 = load double, ptr %49, align 8, !tbaa !14
  br label %1316

1314:                                             ; preds = %1289
  %1315 = load double, ptr %50, align 8, !tbaa !14
  br label %1316

1316:                                             ; preds = %1314, %1312
  %1317 = phi double [ %1313, %1312 ], [ %1315, %1314 ]
  store double %1317, ptr %49, align 8, !tbaa !14
  %1318 = load double, ptr %49, align 8, !tbaa !14
  %1319 = load double, ptr %99, align 8, !tbaa !14
  %1320 = fcmp oge double %1318, %1319
  br i1 %1320, label %1321, label %1323

1321:                                             ; preds = %1316
  %1322 = load double, ptr %49, align 8, !tbaa !14
  br label %1325

1323:                                             ; preds = %1316
  %1324 = load double, ptr %99, align 8, !tbaa !14
  br label %1325

1325:                                             ; preds = %1323, %1321
  %1326 = phi double [ %1322, %1321 ], [ %1324, %1323 ]
  store double %1326, ptr %75, align 8, !tbaa !14
  %1327 = load ptr, ptr %22, align 8, !tbaa !5
  %1328 = load i64, ptr %1327, align 8, !tbaa !9
  store i64 %1328, ptr %45, align 8, !tbaa !9
  %1329 = load i64, ptr %64, align 8, !tbaa !9
  %1330 = add nsw i64 %1329, 1
  store i64 %1330, ptr %61, align 8, !tbaa !9
  br label %1331

1331:                                             ; preds = %1922, %1325
  %1332 = load i64, ptr %61, align 8, !tbaa !9
  %1333 = load i64, ptr %45, align 8, !tbaa !9
  %1334 = icmp sle i64 %1332, %1333
  br i1 %1334, label %1335, label %1925

1335:                                             ; preds = %1331
  %1336 = load double, ptr %80, align 8, !tbaa !14
  %1337 = fdiv double 1.000000e+00, %1336
  store double %1337, ptr %77, align 8, !tbaa !14
  %1338 = load double, ptr %91, align 8, !tbaa !14
  %1339 = load ptr, ptr %34, align 8, !tbaa !5
  %1340 = load i64, ptr %61, align 8, !tbaa !9
  %1341 = getelementptr inbounds double, ptr %1339, i64 %1340
  %1342 = load double, ptr %1341, align 8, !tbaa !14
  %1343 = load double, ptr %92, align 8, !tbaa !14
  %1344 = load ptr, ptr %34, align 8, !tbaa !5
  %1345 = load ptr, ptr %22, align 8, !tbaa !5
  %1346 = load i64, ptr %1345, align 8, !tbaa !9
  %1347 = load i64, ptr %61, align 8, !tbaa !9
  %1348 = add nsw i64 %1346, %1347
  %1349 = getelementptr inbounds double, ptr %1344, i64 %1348
  %1350 = load double, ptr %1349, align 8, !tbaa !14
  %1351 = fmul double %1343, %1350
  %1352 = call double @llvm.fmuladd.f64(double %1338, double %1342, double %1351)
  %1353 = load double, ptr %100, align 8, !tbaa !14
  %1354 = load double, ptr %77, align 8, !tbaa !14
  %1355 = fmul double %1353, %1354
  %1356 = fcmp ogt double %1352, %1355
  br i1 %1356, label %1357, label %1400

1357:                                             ; preds = %1335
  %1358 = load i64, ptr %61, align 8, !tbaa !9
  %1359 = sub nsw i64 %1358, 1
  store i64 %1359, ptr %46, align 8, !tbaa !9
  %1360 = load i64, ptr %64, align 8, !tbaa !9
  store i64 %1360, ptr %66, align 8, !tbaa !9
  br label %1361

1361:                                             ; preds = %1396, %1357
  %1362 = load i64, ptr %66, align 8, !tbaa !9
  %1363 = load i64, ptr %46, align 8, !tbaa !9
  %1364 = icmp sle i64 %1362, %1363
  br i1 %1364, label %1365, label %1399

1365:                                             ; preds = %1361
  %1366 = load i64, ptr %66, align 8, !tbaa !9
  store i64 %1366, ptr %47, align 8, !tbaa !9
  %1367 = load i64, ptr %66, align 8, !tbaa !9
  store i64 %1367, ptr %48, align 8, !tbaa !9
  %1368 = load double, ptr %77, align 8, !tbaa !14
  %1369 = load ptr, ptr %33, align 8, !tbaa !5
  %1370 = load i64, ptr %48, align 8, !tbaa !9
  %1371 = getelementptr inbounds %struct.doublecomplex, ptr %1369, i64 %1370
  %1372 = getelementptr inbounds %struct.doublecomplex, ptr %1371, i32 0, i32 0
  %1373 = load double, ptr %1372, align 8, !tbaa !16
  %1374 = fmul double %1368, %1373
  %1375 = getelementptr inbounds %struct.doublecomplex, ptr %55, i32 0, i32 0
  store double %1374, ptr %1375, align 8, !tbaa !16
  %1376 = load double, ptr %77, align 8, !tbaa !14
  %1377 = load ptr, ptr %33, align 8, !tbaa !5
  %1378 = load i64, ptr %48, align 8, !tbaa !9
  %1379 = getelementptr inbounds %struct.doublecomplex, ptr %1377, i64 %1378
  %1380 = getelementptr inbounds %struct.doublecomplex, ptr %1379, i32 0, i32 1
  %1381 = load double, ptr %1380, align 8, !tbaa !20
  %1382 = fmul double %1376, %1381
  %1383 = getelementptr inbounds %struct.doublecomplex, ptr %55, i32 0, i32 1
  store double %1382, ptr %1383, align 8, !tbaa !20
  %1384 = getelementptr inbounds %struct.doublecomplex, ptr %55, i32 0, i32 0
  %1385 = load double, ptr %1384, align 8, !tbaa !16
  %1386 = load ptr, ptr %33, align 8, !tbaa !5
  %1387 = load i64, ptr %47, align 8, !tbaa !9
  %1388 = getelementptr inbounds %struct.doublecomplex, ptr %1386, i64 %1387
  %1389 = getelementptr inbounds %struct.doublecomplex, ptr %1388, i32 0, i32 0
  store double %1385, ptr %1389, align 8, !tbaa !16
  %1390 = getelementptr inbounds %struct.doublecomplex, ptr %55, i32 0, i32 1
  %1391 = load double, ptr %1390, align 8, !tbaa !20
  %1392 = load ptr, ptr %33, align 8, !tbaa !5
  %1393 = load i64, ptr %47, align 8, !tbaa !9
  %1394 = getelementptr inbounds %struct.doublecomplex, ptr %1392, i64 %1393
  %1395 = getelementptr inbounds %struct.doublecomplex, ptr %1394, i32 0, i32 1
  store double %1391, ptr %1395, align 8, !tbaa !20
  br label %1396

1396:                                             ; preds = %1365
  %1397 = load i64, ptr %66, align 8, !tbaa !9
  %1398 = add nsw i64 %1397, 1
  store i64 %1398, ptr %66, align 8, !tbaa !9
  br label %1361, !llvm.loop !23

1399:                                             ; preds = %1361
  store double 1.000000e+00, ptr %80, align 8, !tbaa !14
  br label %1400

1400:                                             ; preds = %1399, %1335
  %1401 = getelementptr inbounds %struct.doublecomplex, ptr %78, i32 0, i32 0
  store double 0.000000e+00, ptr %1401, align 8, !tbaa !16
  %1402 = getelementptr inbounds %struct.doublecomplex, ptr %78, i32 0, i32 1
  store double 0.000000e+00, ptr %1402, align 8, !tbaa !20
  %1403 = getelementptr inbounds %struct.doublecomplex, ptr %79, i32 0, i32 0
  store double 0.000000e+00, ptr %1403, align 8, !tbaa !16
  %1404 = getelementptr inbounds %struct.doublecomplex, ptr %79, i32 0, i32 1
  store double 0.000000e+00, ptr %1404, align 8, !tbaa !20
  %1405 = load i64, ptr %61, align 8, !tbaa !9
  %1406 = sub nsw i64 %1405, 1
  store i64 %1406, ptr %46, align 8, !tbaa !9
  %1407 = load i64, ptr %64, align 8, !tbaa !9
  store i64 %1407, ptr %66, align 8, !tbaa !9
  br label %1408

1408:                                             ; preds = %1535, %1400
  %1409 = load i64, ptr %66, align 8, !tbaa !9
  %1410 = load i64, ptr %46, align 8, !tbaa !9
  %1411 = icmp sle i64 %1409, %1410
  br i1 %1411, label %1412, label %1538

1412:                                             ; preds = %1408
  %1413 = load ptr, ptr %23, align 8, !tbaa !5
  %1414 = load i64, ptr %66, align 8, !tbaa !9
  %1415 = load i64, ptr %61, align 8, !tbaa !9
  %1416 = load i64, ptr %38, align 8, !tbaa !9
  %1417 = mul nsw i64 %1415, %1416
  %1418 = add nsw i64 %1414, %1417
  %1419 = getelementptr inbounds %struct.doublecomplex, ptr %1413, i64 %1418
  call void @d_cnjg(ptr noundef %57, ptr noundef %1419)
  %1420 = load i64, ptr %66, align 8, !tbaa !9
  store i64 %1420, ptr %47, align 8, !tbaa !9
  %1421 = getelementptr inbounds %struct.doublecomplex, ptr %57, i32 0, i32 0
  %1422 = load double, ptr %1421, align 8, !tbaa !16
  %1423 = load ptr, ptr %33, align 8, !tbaa !5
  %1424 = load i64, ptr %47, align 8, !tbaa !9
  %1425 = getelementptr inbounds %struct.doublecomplex, ptr %1423, i64 %1424
  %1426 = getelementptr inbounds %struct.doublecomplex, ptr %1425, i32 0, i32 0
  %1427 = load double, ptr %1426, align 8, !tbaa !16
  %1428 = getelementptr inbounds %struct.doublecomplex, ptr %57, i32 0, i32 1
  %1429 = load double, ptr %1428, align 8, !tbaa !20
  %1430 = load ptr, ptr %33, align 8, !tbaa !5
  %1431 = load i64, ptr %47, align 8, !tbaa !9
  %1432 = getelementptr inbounds %struct.doublecomplex, ptr %1430, i64 %1431
  %1433 = getelementptr inbounds %struct.doublecomplex, ptr %1432, i32 0, i32 1
  %1434 = load double, ptr %1433, align 8, !tbaa !20
  %1435 = fmul double %1429, %1434
  %1436 = fneg double %1435
  %1437 = call double @llvm.fmuladd.f64(double %1422, double %1427, double %1436)
  %1438 = getelementptr inbounds %struct.doublecomplex, ptr %56, i32 0, i32 0
  store double %1437, ptr %1438, align 8, !tbaa !16
  %1439 = getelementptr inbounds %struct.doublecomplex, ptr %57, i32 0, i32 0
  %1440 = load double, ptr %1439, align 8, !tbaa !16
  %1441 = load ptr, ptr %33, align 8, !tbaa !5
  %1442 = load i64, ptr %47, align 8, !tbaa !9
  %1443 = getelementptr inbounds %struct.doublecomplex, ptr %1441, i64 %1442
  %1444 = getelementptr inbounds %struct.doublecomplex, ptr %1443, i32 0, i32 1
  %1445 = load double, ptr %1444, align 8, !tbaa !20
  %1446 = getelementptr inbounds %struct.doublecomplex, ptr %57, i32 0, i32 1
  %1447 = load double, ptr %1446, align 8, !tbaa !20
  %1448 = load ptr, ptr %33, align 8, !tbaa !5
  %1449 = load i64, ptr %47, align 8, !tbaa !9
  %1450 = getelementptr inbounds %struct.doublecomplex, ptr %1448, i64 %1449
  %1451 = getelementptr inbounds %struct.doublecomplex, ptr %1450, i32 0, i32 0
  %1452 = load double, ptr %1451, align 8, !tbaa !16
  %1453 = fmul double %1447, %1452
  %1454 = call double @llvm.fmuladd.f64(double %1440, double %1445, double %1453)
  %1455 = getelementptr inbounds %struct.doublecomplex, ptr %56, i32 0, i32 1
  store double %1454, ptr %1455, align 8, !tbaa !20
  %1456 = getelementptr inbounds %struct.doublecomplex, ptr %78, i32 0, i32 0
  %1457 = load double, ptr %1456, align 8, !tbaa !16
  %1458 = getelementptr inbounds %struct.doublecomplex, ptr %56, i32 0, i32 0
  %1459 = load double, ptr %1458, align 8, !tbaa !16
  %1460 = fadd double %1457, %1459
  %1461 = getelementptr inbounds %struct.doublecomplex, ptr %55, i32 0, i32 0
  store double %1460, ptr %1461, align 8, !tbaa !16
  %1462 = getelementptr inbounds %struct.doublecomplex, ptr %78, i32 0, i32 1
  %1463 = load double, ptr %1462, align 8, !tbaa !20
  %1464 = getelementptr inbounds %struct.doublecomplex, ptr %56, i32 0, i32 1
  %1465 = load double, ptr %1464, align 8, !tbaa !20
  %1466 = fadd double %1463, %1465
  %1467 = getelementptr inbounds %struct.doublecomplex, ptr %55, i32 0, i32 1
  store double %1466, ptr %1467, align 8, !tbaa !20
  %1468 = getelementptr inbounds %struct.doublecomplex, ptr %55, i32 0, i32 0
  %1469 = load double, ptr %1468, align 8, !tbaa !16
  %1470 = getelementptr inbounds %struct.doublecomplex, ptr %78, i32 0, i32 0
  store double %1469, ptr %1470, align 8, !tbaa !16
  %1471 = getelementptr inbounds %struct.doublecomplex, ptr %55, i32 0, i32 1
  %1472 = load double, ptr %1471, align 8, !tbaa !20
  %1473 = getelementptr inbounds %struct.doublecomplex, ptr %78, i32 0, i32 1
  store double %1472, ptr %1473, align 8, !tbaa !20
  %1474 = load ptr, ptr %25, align 8, !tbaa !5
  %1475 = load i64, ptr %66, align 8, !tbaa !9
  %1476 = load i64, ptr %61, align 8, !tbaa !9
  %1477 = load i64, ptr %36, align 8, !tbaa !9
  %1478 = mul nsw i64 %1476, %1477
  %1479 = add nsw i64 %1475, %1478
  %1480 = getelementptr inbounds %struct.doublecomplex, ptr %1474, i64 %1479
  call void @d_cnjg(ptr noundef %57, ptr noundef %1480)
  %1481 = load i64, ptr %66, align 8, !tbaa !9
  store i64 %1481, ptr %47, align 8, !tbaa !9
  %1482 = getelementptr inbounds %struct.doublecomplex, ptr %57, i32 0, i32 0
  %1483 = load double, ptr %1482, align 8, !tbaa !16
  %1484 = load ptr, ptr %33, align 8, !tbaa !5
  %1485 = load i64, ptr %47, align 8, !tbaa !9
  %1486 = getelementptr inbounds %struct.doublecomplex, ptr %1484, i64 %1485
  %1487 = getelementptr inbounds %struct.doublecomplex, ptr %1486, i32 0, i32 0
  %1488 = load double, ptr %1487, align 8, !tbaa !16
  %1489 = getelementptr inbounds %struct.doublecomplex, ptr %57, i32 0, i32 1
  %1490 = load double, ptr %1489, align 8, !tbaa !20
  %1491 = load ptr, ptr %33, align 8, !tbaa !5
  %1492 = load i64, ptr %47, align 8, !tbaa !9
  %1493 = getelementptr inbounds %struct.doublecomplex, ptr %1491, i64 %1492
  %1494 = getelementptr inbounds %struct.doublecomplex, ptr %1493, i32 0, i32 1
  %1495 = load double, ptr %1494, align 8, !tbaa !20
  %1496 = fmul double %1490, %1495
  %1497 = fneg double %1496
  %1498 = call double @llvm.fmuladd.f64(double %1483, double %1488, double %1497)
  %1499 = getelementptr inbounds %struct.doublecomplex, ptr %56, i32 0, i32 0
  store double %1498, ptr %1499, align 8, !tbaa !16
  %1500 = getelementptr inbounds %struct.doublecomplex, ptr %57, i32 0, i32 0
  %1501 = load double, ptr %1500, align 8, !tbaa !16
  %1502 = load ptr, ptr %33, align 8, !tbaa !5
  %1503 = load i64, ptr %47, align 8, !tbaa !9
  %1504 = getelementptr inbounds %struct.doublecomplex, ptr %1502, i64 %1503
  %1505 = getelementptr inbounds %struct.doublecomplex, ptr %1504, i32 0, i32 1
  %1506 = load double, ptr %1505, align 8, !tbaa !20
  %1507 = getelementptr inbounds %struct.doublecomplex, ptr %57, i32 0, i32 1
  %1508 = load double, ptr %1507, align 8, !tbaa !20
  %1509 = load ptr, ptr %33, align 8, !tbaa !5
  %1510 = load i64, ptr %47, align 8, !tbaa !9
  %1511 = getelementptr inbounds %struct.doublecomplex, ptr %1509, i64 %1510
  %1512 = getelementptr inbounds %struct.doublecomplex, ptr %1511, i32 0, i32 0
  %1513 = load double, ptr %1512, align 8, !tbaa !16
  %1514 = fmul double %1508, %1513
  %1515 = call double @llvm.fmuladd.f64(double %1501, double %1506, double %1514)
  %1516 = getelementptr inbounds %struct.doublecomplex, ptr %56, i32 0, i32 1
  store double %1515, ptr %1516, align 8, !tbaa !20
  %1517 = getelementptr inbounds %struct.doublecomplex, ptr %79, i32 0, i32 0
  %1518 = load double, ptr %1517, align 8, !tbaa !16
  %1519 = getelementptr inbounds %struct.doublecomplex, ptr %56, i32 0, i32 0
  %1520 = load double, ptr %1519, align 8, !tbaa !16
  %1521 = fadd double %1518, %1520
  %1522 = getelementptr inbounds %struct.doublecomplex, ptr %55, i32 0, i32 0
  store double %1521, ptr %1522, align 8, !tbaa !16
  %1523 = getelementptr inbounds %struct.doublecomplex, ptr %79, i32 0, i32 1
  %1524 = load double, ptr %1523, align 8, !tbaa !20
  %1525 = getelementptr inbounds %struct.doublecomplex, ptr %56, i32 0, i32 1
  %1526 = load double, ptr %1525, align 8, !tbaa !20
  %1527 = fadd double %1524, %1526
  %1528 = getelementptr inbounds %struct.doublecomplex, ptr %55, i32 0, i32 1
  store double %1527, ptr %1528, align 8, !tbaa !20
  %1529 = getelementptr inbounds %struct.doublecomplex, ptr %55, i32 0, i32 0
  %1530 = load double, ptr %1529, align 8, !tbaa !16
  %1531 = getelementptr inbounds %struct.doublecomplex, ptr %79, i32 0, i32 0
  store double %1530, ptr %1531, align 8, !tbaa !16
  %1532 = getelementptr inbounds %struct.doublecomplex, ptr %55, i32 0, i32 1
  %1533 = load double, ptr %1532, align 8, !tbaa !20
  %1534 = getelementptr inbounds %struct.doublecomplex, ptr %79, i32 0, i32 1
  store double %1533, ptr %1534, align 8, !tbaa !20
  br label %1535

1535:                                             ; preds = %1412
  %1536 = load i64, ptr %66, align 8, !tbaa !9
  %1537 = add nsw i64 %1536, 1
  store i64 %1537, ptr %66, align 8, !tbaa !9
  br label %1408, !llvm.loop !24

1538:                                             ; preds = %1408
  %1539 = load double, ptr %93, align 8, !tbaa !14
  %1540 = getelementptr inbounds %struct.doublecomplex, ptr %78, i32 0, i32 0
  %1541 = load double, ptr %1540, align 8, !tbaa !16
  %1542 = fmul double %1539, %1541
  %1543 = getelementptr inbounds %struct.doublecomplex, ptr %56, i32 0, i32 0
  store double %1542, ptr %1543, align 8, !tbaa !16
  %1544 = load double, ptr %93, align 8, !tbaa !14
  %1545 = getelementptr inbounds %struct.doublecomplex, ptr %78, i32 0, i32 1
  %1546 = load double, ptr %1545, align 8, !tbaa !20
  %1547 = fmul double %1544, %1546
  %1548 = getelementptr inbounds %struct.doublecomplex, ptr %56, i32 0, i32 1
  store double %1547, ptr %1548, align 8, !tbaa !20
  call void @d_cnjg(ptr noundef %58, ptr noundef %94)
  %1549 = getelementptr inbounds %struct.doublecomplex, ptr %58, i32 0, i32 0
  %1550 = load double, ptr %1549, align 8, !tbaa !16
  %1551 = getelementptr inbounds %struct.doublecomplex, ptr %79, i32 0, i32 0
  %1552 = load double, ptr %1551, align 8, !tbaa !16
  %1553 = getelementptr inbounds %struct.doublecomplex, ptr %58, i32 0, i32 1
  %1554 = load double, ptr %1553, align 8, !tbaa !20
  %1555 = getelementptr inbounds %struct.doublecomplex, ptr %79, i32 0, i32 1
  %1556 = load double, ptr %1555, align 8, !tbaa !20
  %1557 = fmul double %1554, %1556
  %1558 = fneg double %1557
  %1559 = call double @llvm.fmuladd.f64(double %1550, double %1552, double %1558)
  %1560 = getelementptr inbounds %struct.doublecomplex, ptr %57, i32 0, i32 0
  store double %1559, ptr %1560, align 8, !tbaa !16
  %1561 = getelementptr inbounds %struct.doublecomplex, ptr %58, i32 0, i32 0
  %1562 = load double, ptr %1561, align 8, !tbaa !16
  %1563 = getelementptr inbounds %struct.doublecomplex, ptr %79, i32 0, i32 1
  %1564 = load double, ptr %1563, align 8, !tbaa !20
  %1565 = getelementptr inbounds %struct.doublecomplex, ptr %58, i32 0, i32 1
  %1566 = load double, ptr %1565, align 8, !tbaa !20
  %1567 = getelementptr inbounds %struct.doublecomplex, ptr %79, i32 0, i32 0
  %1568 = load double, ptr %1567, align 8, !tbaa !16
  %1569 = fmul double %1566, %1568
  %1570 = call double @llvm.fmuladd.f64(double %1562, double %1564, double %1569)
  %1571 = getelementptr inbounds %struct.doublecomplex, ptr %57, i32 0, i32 1
  store double %1570, ptr %1571, align 8, !tbaa !20
  %1572 = getelementptr inbounds %struct.doublecomplex, ptr %56, i32 0, i32 0
  %1573 = load double, ptr %1572, align 8, !tbaa !16
  %1574 = getelementptr inbounds %struct.doublecomplex, ptr %57, i32 0, i32 0
  %1575 = load double, ptr %1574, align 8, !tbaa !16
  %1576 = fsub double %1573, %1575
  %1577 = getelementptr inbounds %struct.doublecomplex, ptr %55, i32 0, i32 0
  store double %1576, ptr %1577, align 8, !tbaa !16
  %1578 = getelementptr inbounds %struct.doublecomplex, ptr %56, i32 0, i32 1
  %1579 = load double, ptr %1578, align 8, !tbaa !20
  %1580 = getelementptr inbounds %struct.doublecomplex, ptr %57, i32 0, i32 1
  %1581 = load double, ptr %1580, align 8, !tbaa !20
  %1582 = fsub double %1579, %1581
  %1583 = getelementptr inbounds %struct.doublecomplex, ptr %55, i32 0, i32 1
  store double %1582, ptr %1583, align 8, !tbaa !20
  %1584 = getelementptr inbounds %struct.doublecomplex, ptr %55, i32 0, i32 0
  %1585 = load double, ptr %1584, align 8, !tbaa !16
  %1586 = getelementptr inbounds %struct.doublecomplex, ptr %71, i32 0, i32 0
  store double %1585, ptr %1586, align 8, !tbaa !16
  %1587 = getelementptr inbounds %struct.doublecomplex, ptr %55, i32 0, i32 1
  %1588 = load double, ptr %1587, align 8, !tbaa !20
  %1589 = getelementptr inbounds %struct.doublecomplex, ptr %71, i32 0, i32 1
  store double %1588, ptr %1589, align 8, !tbaa !20
  %1590 = load i64, ptr %61, align 8, !tbaa !9
  %1591 = load i64, ptr %61, align 8, !tbaa !9
  %1592 = load i64, ptr %38, align 8, !tbaa !9
  %1593 = mul nsw i64 %1591, %1592
  %1594 = add nsw i64 %1590, %1593
  store i64 %1594, ptr %46, align 8, !tbaa !9
  %1595 = load double, ptr %93, align 8, !tbaa !14
  %1596 = load ptr, ptr %23, align 8, !tbaa !5
  %1597 = load i64, ptr %46, align 8, !tbaa !9
  %1598 = getelementptr inbounds %struct.doublecomplex, ptr %1596, i64 %1597
  %1599 = getelementptr inbounds %struct.doublecomplex, ptr %1598, i32 0, i32 0
  %1600 = load double, ptr %1599, align 8, !tbaa !16
  %1601 = fmul double %1595, %1600
  %1602 = getelementptr inbounds %struct.doublecomplex, ptr %57, i32 0, i32 0
  store double %1601, ptr %1602, align 8, !tbaa !16
  %1603 = load double, ptr %93, align 8, !tbaa !14
  %1604 = load ptr, ptr %23, align 8, !tbaa !5
  %1605 = load i64, ptr %46, align 8, !tbaa !9
  %1606 = getelementptr inbounds %struct.doublecomplex, ptr %1604, i64 %1605
  %1607 = getelementptr inbounds %struct.doublecomplex, ptr %1606, i32 0, i32 1
  %1608 = load double, ptr %1607, align 8, !tbaa !20
  %1609 = fmul double %1603, %1608
  %1610 = getelementptr inbounds %struct.doublecomplex, ptr %57, i32 0, i32 1
  store double %1609, ptr %1610, align 8, !tbaa !20
  %1611 = load i64, ptr %61, align 8, !tbaa !9
  %1612 = load i64, ptr %61, align 8, !tbaa !9
  %1613 = load i64, ptr %36, align 8, !tbaa !9
  %1614 = mul nsw i64 %1612, %1613
  %1615 = add nsw i64 %1611, %1614
  store i64 %1615, ptr %47, align 8, !tbaa !9
  %1616 = getelementptr inbounds %struct.doublecomplex, ptr %94, i32 0, i32 0
  %1617 = load double, ptr %1616, align 8, !tbaa !16
  %1618 = load ptr, ptr %25, align 8, !tbaa !5
  %1619 = load i64, ptr %47, align 8, !tbaa !9
  %1620 = getelementptr inbounds %struct.doublecomplex, ptr %1618, i64 %1619
  %1621 = getelementptr inbounds %struct.doublecomplex, ptr %1620, i32 0, i32 0
  %1622 = load double, ptr %1621, align 8, !tbaa !16
  %1623 = getelementptr inbounds %struct.doublecomplex, ptr %94, i32 0, i32 1
  %1624 = load double, ptr %1623, align 8, !tbaa !20
  %1625 = load ptr, ptr %25, align 8, !tbaa !5
  %1626 = load i64, ptr %47, align 8, !tbaa !9
  %1627 = getelementptr inbounds %struct.doublecomplex, ptr %1625, i64 %1626
  %1628 = getelementptr inbounds %struct.doublecomplex, ptr %1627, i32 0, i32 1
  %1629 = load double, ptr %1628, align 8, !tbaa !20
  %1630 = fmul double %1624, %1629
  %1631 = fneg double %1630
  %1632 = call double @llvm.fmuladd.f64(double %1617, double %1622, double %1631)
  %1633 = getelementptr inbounds %struct.doublecomplex, ptr %58, i32 0, i32 0
  store double %1632, ptr %1633, align 8, !tbaa !16
  %1634 = getelementptr inbounds %struct.doublecomplex, ptr %94, i32 0, i32 0
  %1635 = load double, ptr %1634, align 8, !tbaa !16
  %1636 = load ptr, ptr %25, align 8, !tbaa !5
  %1637 = load i64, ptr %47, align 8, !tbaa !9
  %1638 = getelementptr inbounds %struct.doublecomplex, ptr %1636, i64 %1637
  %1639 = getelementptr inbounds %struct.doublecomplex, ptr %1638, i32 0, i32 1
  %1640 = load double, ptr %1639, align 8, !tbaa !20
  %1641 = getelementptr inbounds %struct.doublecomplex, ptr %94, i32 0, i32 1
  %1642 = load double, ptr %1641, align 8, !tbaa !20
  %1643 = load ptr, ptr %25, align 8, !tbaa !5
  %1644 = load i64, ptr %47, align 8, !tbaa !9
  %1645 = getelementptr inbounds %struct.doublecomplex, ptr %1643, i64 %1644
  %1646 = getelementptr inbounds %struct.doublecomplex, ptr %1645, i32 0, i32 0
  %1647 = load double, ptr %1646, align 8, !tbaa !16
  %1648 = fmul double %1642, %1647
  %1649 = call double @llvm.fmuladd.f64(double %1635, double %1640, double %1648)
  %1650 = getelementptr inbounds %struct.doublecomplex, ptr %58, i32 0, i32 1
  store double %1649, ptr %1650, align 8, !tbaa !20
  %1651 = getelementptr inbounds %struct.doublecomplex, ptr %57, i32 0, i32 0
  %1652 = load double, ptr %1651, align 8, !tbaa !16
  %1653 = getelementptr inbounds %struct.doublecomplex, ptr %58, i32 0, i32 0
  %1654 = load double, ptr %1653, align 8, !tbaa !16
  %1655 = fsub double %1652, %1654
  %1656 = getelementptr inbounds %struct.doublecomplex, ptr %56, i32 0, i32 0
  store double %1655, ptr %1656, align 8, !tbaa !16
  %1657 = getelementptr inbounds %struct.doublecomplex, ptr %57, i32 0, i32 1
  %1658 = load double, ptr %1657, align 8, !tbaa !20
  %1659 = getelementptr inbounds %struct.doublecomplex, ptr %58, i32 0, i32 1
  %1660 = load double, ptr %1659, align 8, !tbaa !20
  %1661 = fsub double %1658, %1660
  %1662 = getelementptr inbounds %struct.doublecomplex, ptr %56, i32 0, i32 1
  store double %1661, ptr %1662, align 8, !tbaa !20
  call void @d_cnjg(ptr noundef %55, ptr noundef %56)
  %1663 = getelementptr inbounds %struct.doublecomplex, ptr %55, i32 0, i32 0
  %1664 = load double, ptr %1663, align 8, !tbaa !16
  %1665 = getelementptr inbounds %struct.doublecomplex, ptr %59, i32 0, i32 0
  store double %1664, ptr %1665, align 8, !tbaa !16
  %1666 = getelementptr inbounds %struct.doublecomplex, ptr %55, i32 0, i32 1
  %1667 = load double, ptr %1666, align 8, !tbaa !20
  %1668 = getelementptr inbounds %struct.doublecomplex, ptr %59, i32 0, i32 1
  store double %1667, ptr %1668, align 8, !tbaa !20
  %1669 = getelementptr inbounds %struct.doublecomplex, ptr %59, i32 0, i32 0
  %1670 = load double, ptr %1669, align 8, !tbaa !16
  store double %1670, ptr %49, align 8, !tbaa !14
  %1671 = load double, ptr %49, align 8, !tbaa !14
  %1672 = fcmp oge double %1671, 0.000000e+00
  br i1 %1672, label %1673, label %1675

1673:                                             ; preds = %1538
  %1674 = load double, ptr %49, align 8, !tbaa !14
  br label %1678

1675:                                             ; preds = %1538
  %1676 = load double, ptr %49, align 8, !tbaa !14
  %1677 = fneg double %1676
  br label %1678

1678:                                             ; preds = %1675, %1673
  %1679 = phi double [ %1674, %1673 ], [ %1677, %1675 ]
  %1680 = call double @d_imag(ptr noundef %59)
  store double %1680, ptr %50, align 8, !tbaa !14
  %1681 = load double, ptr %50, align 8, !tbaa !14
  %1682 = fcmp oge double %1681, 0.000000e+00
  br i1 %1682, label %1683, label %1685

1683:                                             ; preds = %1678
  %1684 = load double, ptr %50, align 8, !tbaa !14
  br label %1688

1685:                                             ; preds = %1678
  %1686 = load double, ptr %50, align 8, !tbaa !14
  %1687 = fneg double %1686
  br label %1688

1688:                                             ; preds = %1685, %1683
  %1689 = phi double [ %1684, %1683 ], [ %1687, %1685 ]
  %1690 = fadd double %1679, %1689
  %1691 = load double, ptr %75, align 8, !tbaa !14
  %1692 = fcmp ole double %1690, %1691
  br i1 %1692, label %1693, label %1703

1693:                                             ; preds = %1688
  %1694 = load double, ptr %75, align 8, !tbaa !14
  %1695 = getelementptr inbounds %struct.doublecomplex, ptr %55, i32 0, i32 0
  store double %1694, ptr %1695, align 8, !tbaa !16
  %1696 = getelementptr inbounds %struct.doublecomplex, ptr %55, i32 0, i32 1
  store double 0.000000e+00, ptr %1696, align 8, !tbaa !20
  %1697 = getelementptr inbounds %struct.doublecomplex, ptr %55, i32 0, i32 0
  %1698 = load double, ptr %1697, align 8, !tbaa !16
  %1699 = getelementptr inbounds %struct.doublecomplex, ptr %59, i32 0, i32 0
  store double %1698, ptr %1699, align 8, !tbaa !16
  %1700 = getelementptr inbounds %struct.doublecomplex, ptr %55, i32 0, i32 1
  %1701 = load double, ptr %1700, align 8, !tbaa !20
  %1702 = getelementptr inbounds %struct.doublecomplex, ptr %59, i32 0, i32 1
  store double %1701, ptr %1702, align 8, !tbaa !20
  br label %1703

1703:                                             ; preds = %1693, %1688
  %1704 = getelementptr inbounds %struct.doublecomplex, ptr %59, i32 0, i32 0
  %1705 = load double, ptr %1704, align 8, !tbaa !16
  store double %1705, ptr %49, align 8, !tbaa !14
  %1706 = load double, ptr %49, align 8, !tbaa !14
  %1707 = fcmp oge double %1706, 0.000000e+00
  br i1 %1707, label %1708, label %1710

1708:                                             ; preds = %1703
  %1709 = load double, ptr %49, align 8, !tbaa !14
  br label %1713

1710:                                             ; preds = %1703
  %1711 = load double, ptr %49, align 8, !tbaa !14
  %1712 = fneg double %1711
  br label %1713

1713:                                             ; preds = %1710, %1708
  %1714 = phi double [ %1709, %1708 ], [ %1712, %1710 ]
  %1715 = call double @d_imag(ptr noundef %59)
  store double %1715, ptr %50, align 8, !tbaa !14
  %1716 = load double, ptr %50, align 8, !tbaa !14
  %1717 = fcmp oge double %1716, 0.000000e+00
  br i1 %1717, label %1718, label %1720

1718:                                             ; preds = %1713
  %1719 = load double, ptr %50, align 8, !tbaa !14
  br label %1723

1720:                                             ; preds = %1713
  %1721 = load double, ptr %50, align 8, !tbaa !14
  %1722 = fneg double %1721
  br label %1723

1723:                                             ; preds = %1720, %1718
  %1724 = phi double [ %1719, %1718 ], [ %1722, %1720 ]
  %1725 = fadd double %1714, %1724
  %1726 = fcmp olt double %1725, 1.000000e+00
  br i1 %1726, label %1727, label %1861

1727:                                             ; preds = %1723
  %1728 = getelementptr inbounds %struct.doublecomplex, ptr %71, i32 0, i32 0
  %1729 = load double, ptr %1728, align 8, !tbaa !16
  store double %1729, ptr %49, align 8, !tbaa !14
  %1730 = load double, ptr %49, align 8, !tbaa !14
  %1731 = fcmp oge double %1730, 0.000000e+00
  br i1 %1731, label %1732, label %1734

1732:                                             ; preds = %1727
  %1733 = load double, ptr %49, align 8, !tbaa !14
  br label %1737

1734:                                             ; preds = %1727
  %1735 = load double, ptr %49, align 8, !tbaa !14
  %1736 = fneg double %1735
  br label %1737

1737:                                             ; preds = %1734, %1732
  %1738 = phi double [ %1733, %1732 ], [ %1736, %1734 ]
  %1739 = call double @d_imag(ptr noundef %71)
  store double %1739, ptr %50, align 8, !tbaa !14
  %1740 = load double, ptr %50, align 8, !tbaa !14
  %1741 = fcmp oge double %1740, 0.000000e+00
  br i1 %1741, label %1742, label %1744

1742:                                             ; preds = %1737
  %1743 = load double, ptr %50, align 8, !tbaa !14
  br label %1747

1744:                                             ; preds = %1737
  %1745 = load double, ptr %50, align 8, !tbaa !14
  %1746 = fneg double %1745
  br label %1747

1747:                                             ; preds = %1744, %1742
  %1748 = phi double [ %1743, %1742 ], [ %1746, %1744 ]
  %1749 = fadd double %1738, %1748
  %1750 = load double, ptr %100, align 8, !tbaa !14
  %1751 = getelementptr inbounds %struct.doublecomplex, ptr %59, i32 0, i32 0
  %1752 = load double, ptr %1751, align 8, !tbaa !16
  store double %1752, ptr %51, align 8, !tbaa !14
  %1753 = load double, ptr %51, align 8, !tbaa !14
  %1754 = fcmp oge double %1753, 0.000000e+00
  br i1 %1754, label %1755, label %1757

1755:                                             ; preds = %1747
  %1756 = load double, ptr %51, align 8, !tbaa !14
  br label %1760

1757:                                             ; preds = %1747
  %1758 = load double, ptr %51, align 8, !tbaa !14
  %1759 = fneg double %1758
  br label %1760

1760:                                             ; preds = %1757, %1755
  %1761 = phi double [ %1756, %1755 ], [ %1759, %1757 ]
  %1762 = call double @d_imag(ptr noundef %59)
  store double %1762, ptr %52, align 8, !tbaa !14
  %1763 = load double, ptr %52, align 8, !tbaa !14
  %1764 = fcmp oge double %1763, 0.000000e+00
  br i1 %1764, label %1765, label %1767

1765:                                             ; preds = %1760
  %1766 = load double, ptr %52, align 8, !tbaa !14
  br label %1770

1767:                                             ; preds = %1760
  %1768 = load double, ptr %52, align 8, !tbaa !14
  %1769 = fneg double %1768
  br label %1770

1770:                                             ; preds = %1767, %1765
  %1771 = phi double [ %1766, %1765 ], [ %1769, %1767 ]
  %1772 = fadd double %1761, %1771
  %1773 = fmul double %1750, %1772
  %1774 = fcmp oge double %1749, %1773
  br i1 %1774, label %1775, label %1860

1775:                                             ; preds = %1770
  %1776 = getelementptr inbounds %struct.doublecomplex, ptr %71, i32 0, i32 0
  %1777 = load double, ptr %1776, align 8, !tbaa !16
  store double %1777, ptr %49, align 8, !tbaa !14
  %1778 = load double, ptr %49, align 8, !tbaa !14
  %1779 = fcmp oge double %1778, 0.000000e+00
  br i1 %1779, label %1780, label %1782

1780:                                             ; preds = %1775
  %1781 = load double, ptr %49, align 8, !tbaa !14
  br label %1785

1782:                                             ; preds = %1775
  %1783 = load double, ptr %49, align 8, !tbaa !14
  %1784 = fneg double %1783
  br label %1785

1785:                                             ; preds = %1782, %1780
  %1786 = phi double [ %1781, %1780 ], [ %1784, %1782 ]
  %1787 = call double @d_imag(ptr noundef %71)
  store double %1787, ptr %50, align 8, !tbaa !14
  %1788 = load double, ptr %50, align 8, !tbaa !14
  %1789 = fcmp oge double %1788, 0.000000e+00
  br i1 %1789, label %1790, label %1792

1790:                                             ; preds = %1785
  %1791 = load double, ptr %50, align 8, !tbaa !14
  br label %1795

1792:                                             ; preds = %1785
  %1793 = load double, ptr %50, align 8, !tbaa !14
  %1794 = fneg double %1793
  br label %1795

1795:                                             ; preds = %1792, %1790
  %1796 = phi double [ %1791, %1790 ], [ %1794, %1792 ]
  %1797 = fadd double %1786, %1796
  %1798 = fdiv double 1.000000e+00, %1797
  store double %1798, ptr %77, align 8, !tbaa !14
  %1799 = load i64, ptr %61, align 8, !tbaa !9
  %1800 = sub nsw i64 %1799, 1
  store i64 %1800, ptr %46, align 8, !tbaa !9
  %1801 = load i64, ptr %64, align 8, !tbaa !9
  store i64 %1801, ptr %66, align 8, !tbaa !9
  br label %1802

1802:                                             ; preds = %1837, %1795
  %1803 = load i64, ptr %66, align 8, !tbaa !9
  %1804 = load i64, ptr %46, align 8, !tbaa !9
  %1805 = icmp sle i64 %1803, %1804
  br i1 %1805, label %1806, label %1840

1806:                                             ; preds = %1802
  %1807 = load i64, ptr %66, align 8, !tbaa !9
  store i64 %1807, ptr %47, align 8, !tbaa !9
  %1808 = load i64, ptr %66, align 8, !tbaa !9
  store i64 %1808, ptr %48, align 8, !tbaa !9
  %1809 = load double, ptr %77, align 8, !tbaa !14
  %1810 = load ptr, ptr %33, align 8, !tbaa !5
  %1811 = load i64, ptr %48, align 8, !tbaa !9
  %1812 = getelementptr inbounds %struct.doublecomplex, ptr %1810, i64 %1811
  %1813 = getelementptr inbounds %struct.doublecomplex, ptr %1812, i32 0, i32 0
  %1814 = load double, ptr %1813, align 8, !tbaa !16
  %1815 = fmul double %1809, %1814
  %1816 = getelementptr inbounds %struct.doublecomplex, ptr %55, i32 0, i32 0
  store double %1815, ptr %1816, align 8, !tbaa !16
  %1817 = load double, ptr %77, align 8, !tbaa !14
  %1818 = load ptr, ptr %33, align 8, !tbaa !5
  %1819 = load i64, ptr %48, align 8, !tbaa !9
  %1820 = getelementptr inbounds %struct.doublecomplex, ptr %1818, i64 %1819
  %1821 = getelementptr inbounds %struct.doublecomplex, ptr %1820, i32 0, i32 1
  %1822 = load double, ptr %1821, align 8, !tbaa !20
  %1823 = fmul double %1817, %1822
  %1824 = getelementptr inbounds %struct.doublecomplex, ptr %55, i32 0, i32 1
  store double %1823, ptr %1824, align 8, !tbaa !20
  %1825 = getelementptr inbounds %struct.doublecomplex, ptr %55, i32 0, i32 0
  %1826 = load double, ptr %1825, align 8, !tbaa !16
  %1827 = load ptr, ptr %33, align 8, !tbaa !5
  %1828 = load i64, ptr %47, align 8, !tbaa !9
  %1829 = getelementptr inbounds %struct.doublecomplex, ptr %1827, i64 %1828
  %1830 = getelementptr inbounds %struct.doublecomplex, ptr %1829, i32 0, i32 0
  store double %1826, ptr %1830, align 8, !tbaa !16
  %1831 = getelementptr inbounds %struct.doublecomplex, ptr %55, i32 0, i32 1
  %1832 = load double, ptr %1831, align 8, !tbaa !20
  %1833 = load ptr, ptr %33, align 8, !tbaa !5
  %1834 = load i64, ptr %47, align 8, !tbaa !9
  %1835 = getelementptr inbounds %struct.doublecomplex, ptr %1833, i64 %1834
  %1836 = getelementptr inbounds %struct.doublecomplex, ptr %1835, i32 0, i32 1
  store double %1832, ptr %1836, align 8, !tbaa !20
  br label %1837

1837:                                             ; preds = %1806
  %1838 = load i64, ptr %66, align 8, !tbaa !9
  %1839 = add nsw i64 %1838, 1
  store i64 %1839, ptr %66, align 8, !tbaa !9
  br label %1802, !llvm.loop !25

1840:                                             ; preds = %1802
  %1841 = load double, ptr %77, align 8, !tbaa !14
  %1842 = load double, ptr %80, align 8, !tbaa !14
  %1843 = fmul double %1841, %1842
  store double %1843, ptr %80, align 8, !tbaa !14
  %1844 = load double, ptr %77, align 8, !tbaa !14
  %1845 = getelementptr inbounds %struct.doublecomplex, ptr %71, i32 0, i32 0
  %1846 = load double, ptr %1845, align 8, !tbaa !16
  %1847 = fmul double %1844, %1846
  %1848 = getelementptr inbounds %struct.doublecomplex, ptr %55, i32 0, i32 0
  store double %1847, ptr %1848, align 8, !tbaa !16
  %1849 = load double, ptr %77, align 8, !tbaa !14
  %1850 = getelementptr inbounds %struct.doublecomplex, ptr %71, i32 0, i32 1
  %1851 = load double, ptr %1850, align 8, !tbaa !20
  %1852 = fmul double %1849, %1851
  %1853 = getelementptr inbounds %struct.doublecomplex, ptr %55, i32 0, i32 1
  store double %1852, ptr %1853, align 8, !tbaa !20
  %1854 = getelementptr inbounds %struct.doublecomplex, ptr %55, i32 0, i32 0
  %1855 = load double, ptr %1854, align 8, !tbaa !16
  %1856 = getelementptr inbounds %struct.doublecomplex, ptr %71, i32 0, i32 0
  store double %1855, ptr %1856, align 8, !tbaa !16
  %1857 = getelementptr inbounds %struct.doublecomplex, ptr %55, i32 0, i32 1
  %1858 = load double, ptr %1857, align 8, !tbaa !20
  %1859 = getelementptr inbounds %struct.doublecomplex, ptr %71, i32 0, i32 1
  store double %1858, ptr %1859, align 8, !tbaa !20
  br label %1860

1860:                                             ; preds = %1840, %1770
  br label %1861

1861:                                             ; preds = %1860, %1723
  %1862 = load i64, ptr %61, align 8, !tbaa !9
  store i64 %1862, ptr %46, align 8, !tbaa !9
  %1863 = getelementptr inbounds %struct.doublecomplex, ptr %71, i32 0, i32 0
  %1864 = load double, ptr %1863, align 8, !tbaa !16
  %1865 = fneg double %1864
  %1866 = getelementptr inbounds %struct.doublecomplex, ptr %56, i32 0, i32 0
  store double %1865, ptr %1866, align 8, !tbaa !16
  %1867 = getelementptr inbounds %struct.doublecomplex, ptr %71, i32 0, i32 1
  %1868 = load double, ptr %1867, align 8, !tbaa !20
  %1869 = fneg double %1868
  %1870 = getelementptr inbounds %struct.doublecomplex, ptr %56, i32 0, i32 1
  store double %1869, ptr %1870, align 8, !tbaa !20
  call void @zladiv_(ptr noundef %55, ptr noundef %56, ptr noundef %59)
  %1871 = getelementptr inbounds %struct.doublecomplex, ptr %55, i32 0, i32 0
  %1872 = load double, ptr %1871, align 8, !tbaa !16
  %1873 = load ptr, ptr %33, align 8, !tbaa !5
  %1874 = load i64, ptr %46, align 8, !tbaa !9
  %1875 = getelementptr inbounds %struct.doublecomplex, ptr %1873, i64 %1874
  %1876 = getelementptr inbounds %struct.doublecomplex, ptr %1875, i32 0, i32 0
  store double %1872, ptr %1876, align 8, !tbaa !16
  %1877 = getelementptr inbounds %struct.doublecomplex, ptr %55, i32 0, i32 1
  %1878 = load double, ptr %1877, align 8, !tbaa !20
  %1879 = load ptr, ptr %33, align 8, !tbaa !5
  %1880 = load i64, ptr %46, align 8, !tbaa !9
  %1881 = getelementptr inbounds %struct.doublecomplex, ptr %1879, i64 %1880
  %1882 = getelementptr inbounds %struct.doublecomplex, ptr %1881, i32 0, i32 1
  store double %1878, ptr %1882, align 8, !tbaa !20
  %1883 = load i64, ptr %61, align 8, !tbaa !9
  store i64 %1883, ptr %46, align 8, !tbaa !9
  %1884 = load double, ptr %80, align 8, !tbaa !14
  store double %1884, ptr %51, align 8, !tbaa !14
  %1885 = load ptr, ptr %33, align 8, !tbaa !5
  %1886 = load i64, ptr %46, align 8, !tbaa !9
  %1887 = getelementptr inbounds %struct.doublecomplex, ptr %1885, i64 %1886
  %1888 = getelementptr inbounds %struct.doublecomplex, ptr %1887, i32 0, i32 0
  %1889 = load double, ptr %1888, align 8, !tbaa !16
  store double %1889, ptr %49, align 8, !tbaa !14
  %1890 = load double, ptr %49, align 8, !tbaa !14
  %1891 = fcmp oge double %1890, 0.000000e+00
  br i1 %1891, label %1892, label %1894

1892:                                             ; preds = %1861
  %1893 = load double, ptr %49, align 8, !tbaa !14
  br label %1897

1894:                                             ; preds = %1861
  %1895 = load double, ptr %49, align 8, !tbaa !14
  %1896 = fneg double %1895
  br label %1897

1897:                                             ; preds = %1894, %1892
  %1898 = phi double [ %1893, %1892 ], [ %1896, %1894 ]
  %1899 = load ptr, ptr %33, align 8, !tbaa !5
  %1900 = load i64, ptr %61, align 8, !tbaa !9
  %1901 = getelementptr inbounds %struct.doublecomplex, ptr %1899, i64 %1900
  %1902 = call double @d_imag(ptr noundef %1901)
  store double %1902, ptr %50, align 8, !tbaa !14
  %1903 = load double, ptr %50, align 8, !tbaa !14
  %1904 = fcmp oge double %1903, 0.000000e+00
  br i1 %1904, label %1905, label %1907

1905:                                             ; preds = %1897
  %1906 = load double, ptr %50, align 8, !tbaa !14
  br label %1910

1907:                                             ; preds = %1897
  %1908 = load double, ptr %50, align 8, !tbaa !14
  %1909 = fneg double %1908
  br label %1910

1910:                                             ; preds = %1907, %1905
  %1911 = phi double [ %1906, %1905 ], [ %1909, %1907 ]
  %1912 = fadd double %1898, %1911
  store double %1912, ptr %52, align 8, !tbaa !14
  %1913 = load double, ptr %51, align 8, !tbaa !14
  %1914 = load double, ptr %52, align 8, !tbaa !14
  %1915 = fcmp oge double %1913, %1914
  br i1 %1915, label %1916, label %1918

1916:                                             ; preds = %1910
  %1917 = load double, ptr %51, align 8, !tbaa !14
  br label %1920

1918:                                             ; preds = %1910
  %1919 = load double, ptr %52, align 8, !tbaa !14
  br label %1920

1920:                                             ; preds = %1918, %1916
  %1921 = phi double [ %1917, %1916 ], [ %1919, %1918 ]
  store double %1921, ptr %80, align 8, !tbaa !14
  br label %1922

1922:                                             ; preds = %1920
  %1923 = load i64, ptr %61, align 8, !tbaa !9
  %1924 = add nsw i64 %1923, 1
  store i64 %1924, ptr %61, align 8, !tbaa !9
  br label %1331, !llvm.loop !26

1925:                                             ; preds = %1331
  %1926 = load i64, ptr %95, align 8, !tbaa !9
  %1927 = icmp ne i64 %1926, 0
  br i1 %1927, label %1928, label %1951

1928:                                             ; preds = %1925
  %1929 = load ptr, ptr %22, align 8, !tbaa !5
  %1930 = load i64, ptr %1929, align 8, !tbaa !9
  %1931 = add nsw i64 %1930, 1
  %1932 = load i64, ptr %64, align 8, !tbaa !9
  %1933 = sub nsw i64 %1931, %1932
  store i64 %1933, ptr %45, align 8, !tbaa !9
  %1934 = load ptr, ptr %22, align 8, !tbaa !5
  %1935 = load ptr, ptr %27, align 8, !tbaa !5
  %1936 = load i64, ptr %64, align 8, !tbaa !9
  %1937 = load i64, ptr %40, align 8, !tbaa !9
  %1938 = mul nsw i64 %1936, %1937
  %1939 = add nsw i64 %1938, 1
  %1940 = getelementptr inbounds %struct.doublecomplex, ptr %1935, i64 %1939
  %1941 = load ptr, ptr %28, align 8, !tbaa !5
  %1942 = load ptr, ptr %33, align 8, !tbaa !5
  %1943 = load i64, ptr %64, align 8, !tbaa !9
  %1944 = getelementptr inbounds %struct.doublecomplex, ptr %1942, i64 %1943
  %1945 = load ptr, ptr %33, align 8, !tbaa !5
  %1946 = load ptr, ptr %22, align 8, !tbaa !5
  %1947 = load i64, ptr %1946, align 8, !tbaa !9
  %1948 = add nsw i64 %1947, 1
  %1949 = getelementptr inbounds %struct.doublecomplex, ptr %1945, i64 %1948
  %1950 = call i32 @f2c_zgemv(ptr noundef @.str.9, ptr noundef %1934, ptr noundef %45, ptr noundef @c_b2, ptr noundef %1940, ptr noundef %1941, ptr noundef %1944, ptr noundef @c__1, ptr noundef @c_b1, ptr noundef %1949, ptr noundef @c__1)
  store i64 2, ptr %76, align 8, !tbaa !9
  store i64 1, ptr %72, align 8, !tbaa !9
  br label %1953

1951:                                             ; preds = %1925
  store i64 1, ptr %76, align 8, !tbaa !9
  %1952 = load i64, ptr %64, align 8, !tbaa !9
  store i64 %1952, ptr %72, align 8, !tbaa !9
  br label %1953

1953:                                             ; preds = %1951, %1928
  store double 0.000000e+00, ptr %80, align 8, !tbaa !14
  %1954 = load ptr, ptr %22, align 8, !tbaa !5
  %1955 = load i64, ptr %1954, align 8, !tbaa !9
  store i64 %1955, ptr %45, align 8, !tbaa !9
  %1956 = load i64, ptr %72, align 8, !tbaa !9
  store i64 %1956, ptr %66, align 8, !tbaa !9
  br label %1957

1957:                                             ; preds = %2013, %1953
  %1958 = load i64, ptr %66, align 8, !tbaa !9
  %1959 = load i64, ptr %45, align 8, !tbaa !9
  %1960 = icmp sle i64 %1958, %1959
  br i1 %1960, label %1961, label %2016

1961:                                             ; preds = %1957
  %1962 = load i64, ptr %76, align 8, !tbaa !9
  %1963 = sub nsw i64 %1962, 1
  %1964 = load ptr, ptr %22, align 8, !tbaa !5
  %1965 = load i64, ptr %1964, align 8, !tbaa !9
  %1966 = mul nsw i64 %1963, %1965
  %1967 = load i64, ptr %66, align 8, !tbaa !9
  %1968 = add nsw i64 %1966, %1967
  store i64 %1968, ptr %46, align 8, !tbaa !9
  %1969 = load double, ptr %80, align 8, !tbaa !14
  store double %1969, ptr %51, align 8, !tbaa !14
  %1970 = load ptr, ptr %33, align 8, !tbaa !5
  %1971 = load i64, ptr %46, align 8, !tbaa !9
  %1972 = getelementptr inbounds %struct.doublecomplex, ptr %1970, i64 %1971
  %1973 = getelementptr inbounds %struct.doublecomplex, ptr %1972, i32 0, i32 0
  %1974 = load double, ptr %1973, align 8, !tbaa !16
  store double %1974, ptr %49, align 8, !tbaa !14
  %1975 = load double, ptr %49, align 8, !tbaa !14
  %1976 = fcmp oge double %1975, 0.000000e+00
  br i1 %1976, label %1977, label %1979

1977:                                             ; preds = %1961
  %1978 = load double, ptr %49, align 8, !tbaa !14
  br label %1982

1979:                                             ; preds = %1961
  %1980 = load double, ptr %49, align 8, !tbaa !14
  %1981 = fneg double %1980
  br label %1982

1982:                                             ; preds = %1979, %1977
  %1983 = phi double [ %1978, %1977 ], [ %1981, %1979 ]
  %1984 = load ptr, ptr %33, align 8, !tbaa !5
  %1985 = load i64, ptr %76, align 8, !tbaa !9
  %1986 = sub nsw i64 %1985, 1
  %1987 = load ptr, ptr %22, align 8, !tbaa !5
  %1988 = load i64, ptr %1987, align 8, !tbaa !9
  %1989 = mul nsw i64 %1986, %1988
  %1990 = load i64, ptr %66, align 8, !tbaa !9
  %1991 = add nsw i64 %1989, %1990
  %1992 = getelementptr inbounds %struct.doublecomplex, ptr %1984, i64 %1991
  %1993 = call double @d_imag(ptr noundef %1992)
  store double %1993, ptr %50, align 8, !tbaa !14
  %1994 = load double, ptr %50, align 8, !tbaa !14
  %1995 = fcmp oge double %1994, 0.000000e+00
  br i1 %1995, label %1996, label %1998

1996:                                             ; preds = %1982
  %1997 = load double, ptr %50, align 8, !tbaa !14
  br label %2001

1998:                                             ; preds = %1982
  %1999 = load double, ptr %50, align 8, !tbaa !14
  %2000 = fneg double %1999
  br label %2001

2001:                                             ; preds = %1998, %1996
  %2002 = phi double [ %1997, %1996 ], [ %2000, %1998 ]
  %2003 = fadd double %1983, %2002
  store double %2003, ptr %52, align 8, !tbaa !14
  %2004 = load double, ptr %51, align 8, !tbaa !14
  %2005 = load double, ptr %52, align 8, !tbaa !14
  %2006 = fcmp oge double %2004, %2005
  br i1 %2006, label %2007, label %2009

2007:                                             ; preds = %2001
  %2008 = load double, ptr %51, align 8, !tbaa !14
  br label %2011

2009:                                             ; preds = %2001
  %2010 = load double, ptr %52, align 8, !tbaa !14
  br label %2011

2011:                                             ; preds = %2009, %2007
  %2012 = phi double [ %2008, %2007 ], [ %2010, %2009 ]
  store double %2012, ptr %80, align 8, !tbaa !14
  br label %2013

2013:                                             ; preds = %2011
  %2014 = load i64, ptr %66, align 8, !tbaa !9
  %2015 = add nsw i64 %2014, 1
  store i64 %2015, ptr %66, align 8, !tbaa !9
  br label %1957, !llvm.loop !27

2016:                                             ; preds = %1957
  %2017 = load double, ptr %80, align 8, !tbaa !14
  %2018 = load double, ptr %99, align 8, !tbaa !14
  %2019 = fcmp ogt double %2017, %2018
  br i1 %2019, label %2020, label %2075

2020:                                             ; preds = %2016
  %2021 = load double, ptr %80, align 8, !tbaa !14
  %2022 = fdiv double 1.000000e+00, %2021
  store double %2022, ptr %77, align 8, !tbaa !14
  %2023 = load ptr, ptr %22, align 8, !tbaa !5
  %2024 = load i64, ptr %2023, align 8, !tbaa !9
  store i64 %2024, ptr %45, align 8, !tbaa !9
  %2025 = load i64, ptr %72, align 8, !tbaa !9
  store i64 %2025, ptr %66, align 8, !tbaa !9
  br label %2026

2026:                                             ; preds = %2071, %2020
  %2027 = load i64, ptr %66, align 8, !tbaa !9
  %2028 = load i64, ptr %45, align 8, !tbaa !9
  %2029 = icmp sle i64 %2027, %2028
  br i1 %2029, label %2030, label %2074

2030:                                             ; preds = %2026
  %2031 = load i64, ptr %66, align 8, !tbaa !9
  %2032 = load i64, ptr %73, align 8, !tbaa !9
  %2033 = load i64, ptr %40, align 8, !tbaa !9
  %2034 = mul nsw i64 %2032, %2033
  %2035 = add nsw i64 %2031, %2034
  store i64 %2035, ptr %46, align 8, !tbaa !9
  %2036 = load i64, ptr %76, align 8, !tbaa !9
  %2037 = sub nsw i64 %2036, 1
  %2038 = load ptr, ptr %22, align 8, !tbaa !5
  %2039 = load i64, ptr %2038, align 8, !tbaa !9
  %2040 = mul nsw i64 %2037, %2039
  %2041 = load i64, ptr %66, align 8, !tbaa !9
  %2042 = add nsw i64 %2040, %2041
  store i64 %2042, ptr %47, align 8, !tbaa !9
  %2043 = load double, ptr %77, align 8, !tbaa !14
  %2044 = load ptr, ptr %33, align 8, !tbaa !5
  %2045 = load i64, ptr %47, align 8, !tbaa !9
  %2046 = getelementptr inbounds %struct.doublecomplex, ptr %2044, i64 %2045
  %2047 = getelementptr inbounds %struct.doublecomplex, ptr %2046, i32 0, i32 0
  %2048 = load double, ptr %2047, align 8, !tbaa !16
  %2049 = fmul double %2043, %2048
  %2050 = getelementptr inbounds %struct.doublecomplex, ptr %55, i32 0, i32 0
  store double %2049, ptr %2050, align 8, !tbaa !16
  %2051 = load double, ptr %77, align 8, !tbaa !14
  %2052 = load ptr, ptr %33, align 8, !tbaa !5
  %2053 = load i64, ptr %47, align 8, !tbaa !9
  %2054 = getelementptr inbounds %struct.doublecomplex, ptr %2052, i64 %2053
  %2055 = getelementptr inbounds %struct.doublecomplex, ptr %2054, i32 0, i32 1
  %2056 = load double, ptr %2055, align 8, !tbaa !20
  %2057 = fmul double %2051, %2056
  %2058 = getelementptr inbounds %struct.doublecomplex, ptr %55, i32 0, i32 1
  store double %2057, ptr %2058, align 8, !tbaa !20
  %2059 = getelementptr inbounds %struct.doublecomplex, ptr %55, i32 0, i32 0
  %2060 = load double, ptr %2059, align 8, !tbaa !16
  %2061 = load ptr, ptr %27, align 8, !tbaa !5
  %2062 = load i64, ptr %46, align 8, !tbaa !9
  %2063 = getelementptr inbounds %struct.doublecomplex, ptr %2061, i64 %2062
  %2064 = getelementptr inbounds %struct.doublecomplex, ptr %2063, i32 0, i32 0
  store double %2060, ptr %2064, align 8, !tbaa !16
  %2065 = getelementptr inbounds %struct.doublecomplex, ptr %55, i32 0, i32 1
  %2066 = load double, ptr %2065, align 8, !tbaa !20
  %2067 = load ptr, ptr %27, align 8, !tbaa !5
  %2068 = load i64, ptr %46, align 8, !tbaa !9
  %2069 = getelementptr inbounds %struct.doublecomplex, ptr %2067, i64 %2068
  %2070 = getelementptr inbounds %struct.doublecomplex, ptr %2069, i32 0, i32 1
  store double %2066, ptr %2070, align 8, !tbaa !20
  br label %2071

2071:                                             ; preds = %2030
  %2072 = load i64, ptr %66, align 8, !tbaa !9
  %2073 = add nsw i64 %2072, 1
  store i64 %2073, ptr %66, align 8, !tbaa !9
  br label %2026, !llvm.loop !28

2074:                                             ; preds = %2026
  br label %2079

2075:                                             ; preds = %2016
  %2076 = load ptr, ptr %22, align 8, !tbaa !5
  %2077 = load i64, ptr %2076, align 8, !tbaa !9
  %2078 = add nsw i64 %2077, 1
  store i64 %2078, ptr %72, align 8, !tbaa !9
  br label %2079

2079:                                             ; preds = %2075, %2074
  %2080 = load i64, ptr %72, align 8, !tbaa !9
  %2081 = sub nsw i64 %2080, 1
  store i64 %2081, ptr %45, align 8, !tbaa !9
  store i64 1, ptr %66, align 8, !tbaa !9
  br label %2082

2082:                                             ; preds = %2100, %2079
  %2083 = load i64, ptr %66, align 8, !tbaa !9
  %2084 = load i64, ptr %45, align 8, !tbaa !9
  %2085 = icmp sle i64 %2083, %2084
  br i1 %2085, label %2086, label %2103

2086:                                             ; preds = %2082
  %2087 = load i64, ptr %66, align 8, !tbaa !9
  %2088 = load i64, ptr %73, align 8, !tbaa !9
  %2089 = load i64, ptr %40, align 8, !tbaa !9
  %2090 = mul nsw i64 %2088, %2089
  %2091 = add nsw i64 %2087, %2090
  store i64 %2091, ptr %46, align 8, !tbaa !9
  %2092 = load ptr, ptr %27, align 8, !tbaa !5
  %2093 = load i64, ptr %46, align 8, !tbaa !9
  %2094 = getelementptr inbounds %struct.doublecomplex, ptr %2092, i64 %2093
  %2095 = getelementptr inbounds %struct.doublecomplex, ptr %2094, i32 0, i32 0
  store double 0.000000e+00, ptr %2095, align 8, !tbaa !16
  %2096 = load ptr, ptr %27, align 8, !tbaa !5
  %2097 = load i64, ptr %46, align 8, !tbaa !9
  %2098 = getelementptr inbounds %struct.doublecomplex, ptr %2096, i64 %2097
  %2099 = getelementptr inbounds %struct.doublecomplex, ptr %2098, i32 0, i32 1
  store double 0.000000e+00, ptr %2099, align 8, !tbaa !20
  br label %2100

2100:                                             ; preds = %2086
  %2101 = load i64, ptr %66, align 8, !tbaa !9
  %2102 = add nsw i64 %2101, 1
  store i64 %2102, ptr %66, align 8, !tbaa !9
  br label %2082, !llvm.loop !29

2103:                                             ; preds = %2082
  br label %2104

2104:                                             ; preds = %2103, %702
  br label %2105

2105:                                             ; preds = %2104, %793
  br label %2106

2106:                                             ; preds = %2105
  %2107 = load i64, ptr %64, align 8, !tbaa !9
  %2108 = add nsw i64 %2107, 1
  store i64 %2108, ptr %64, align 8, !tbaa !9
  br label %689, !llvm.loop !30

2109:                                             ; preds = %689
  br label %2110

2110:                                             ; preds = %2109, %681
  %2111 = load i64, ptr %89, align 8, !tbaa !9
  %2112 = icmp ne i64 %2111, 0
  br i1 %2112, label %2113, label %3663

2113:                                             ; preds = %2110
  %2114 = load i64, ptr %65, align 8, !tbaa !9
  %2115 = add nsw i64 %2114, 1
  store i64 %2115, ptr %73, align 8, !tbaa !9
  %2116 = load ptr, ptr %22, align 8, !tbaa !5
  %2117 = load i64, ptr %2116, align 8, !tbaa !9
  store i64 %2117, ptr %64, align 8, !tbaa !9
  br label %2118

2118:                                             ; preds = %3659, %2113
  %2119 = load i64, ptr %64, align 8, !tbaa !9
  %2120 = icmp sge i64 %2119, 1
  br i1 %2120, label %2121, label %3662

2121:                                             ; preds = %2118
  %2122 = load i64, ptr %82, align 8, !tbaa !9
  %2123 = icmp ne i64 %2122, 0
  br i1 %2123, label %2124, label %2125

2124:                                             ; preds = %2121
  store i64 1, ptr %101, align 8, !tbaa !9
  br label %2130

2125:                                             ; preds = %2121
  %2126 = load ptr, ptr %21, align 8, !tbaa !5
  %2127 = load i64, ptr %64, align 8, !tbaa !9
  %2128 = getelementptr inbounds i64, ptr %2126, i64 %2127
  %2129 = load i64, ptr %2128, align 8, !tbaa !9
  store i64 %2129, ptr %101, align 8, !tbaa !9
  br label %2130

2130:                                             ; preds = %2125, %2124
  %2131 = load i64, ptr %101, align 8, !tbaa !9
  %2132 = icmp ne i64 %2131, 0
  br i1 %2132, label %2133, label %3657

2133:                                             ; preds = %2130
  %2134 = load i64, ptr %73, align 8, !tbaa !9
  %2135 = add nsw i64 %2134, -1
  store i64 %2135, ptr %73, align 8, !tbaa !9
  %2136 = load i64, ptr %64, align 8, !tbaa !9
  %2137 = load i64, ptr %64, align 8, !tbaa !9
  %2138 = load i64, ptr %38, align 8, !tbaa !9
  %2139 = mul nsw i64 %2137, %2138
  %2140 = add nsw i64 %2136, %2139
  store i64 %2140, ptr %44, align 8, !tbaa !9
  %2141 = load i64, ptr %64, align 8, !tbaa !9
  %2142 = load i64, ptr %64, align 8, !tbaa !9
  %2143 = load i64, ptr %36, align 8, !tbaa !9
  %2144 = mul nsw i64 %2142, %2143
  %2145 = add nsw i64 %2141, %2144
  store i64 %2145, ptr %45, align 8, !tbaa !9
  %2146 = load ptr, ptr %23, align 8, !tbaa !5
  %2147 = load i64, ptr %44, align 8, !tbaa !9
  %2148 = getelementptr inbounds %struct.doublecomplex, ptr %2146, i64 %2147
  %2149 = getelementptr inbounds %struct.doublecomplex, ptr %2148, i32 0, i32 0
  %2150 = load double, ptr %2149, align 8, !tbaa !16
  store double %2150, ptr %50, align 8, !tbaa !14
  %2151 = load double, ptr %50, align 8, !tbaa !14
  %2152 = fcmp oge double %2151, 0.000000e+00
  br i1 %2152, label %2153, label %2155

2153:                                             ; preds = %2133
  %2154 = load double, ptr %50, align 8, !tbaa !14
  br label %2158

2155:                                             ; preds = %2133
  %2156 = load double, ptr %50, align 8, !tbaa !14
  %2157 = fneg double %2156
  br label %2158

2158:                                             ; preds = %2155, %2153
  %2159 = phi double [ %2154, %2153 ], [ %2157, %2155 ]
  %2160 = load ptr, ptr %23, align 8, !tbaa !5
  %2161 = load i64, ptr %64, align 8, !tbaa !9
  %2162 = load i64, ptr %64, align 8, !tbaa !9
  %2163 = load i64, ptr %38, align 8, !tbaa !9
  %2164 = mul nsw i64 %2162, %2163
  %2165 = add nsw i64 %2161, %2164
  %2166 = getelementptr inbounds %struct.doublecomplex, ptr %2160, i64 %2165
  %2167 = call double @d_imag(ptr noundef %2166)
  store double %2167, ptr %51, align 8, !tbaa !14
  %2168 = load double, ptr %51, align 8, !tbaa !14
  %2169 = fcmp oge double %2168, 0.000000e+00
  br i1 %2169, label %2170, label %2172

2170:                                             ; preds = %2158
  %2171 = load double, ptr %51, align 8, !tbaa !14
  br label %2175

2172:                                             ; preds = %2158
  %2173 = load double, ptr %51, align 8, !tbaa !14
  %2174 = fneg double %2173
  br label %2175

2175:                                             ; preds = %2172, %2170
  %2176 = phi double [ %2171, %2170 ], [ %2174, %2172 ]
  %2177 = fadd double %2159, %2176
  %2178 = load double, ptr %99, align 8, !tbaa !14
  %2179 = fcmp ole double %2177, %2178
  br i1 %2179, label %2180, label %2235

2180:                                             ; preds = %2175
  %2181 = load ptr, ptr %25, align 8, !tbaa !5
  %2182 = load i64, ptr %45, align 8, !tbaa !9
  %2183 = getelementptr inbounds %struct.doublecomplex, ptr %2181, i64 %2182
  %2184 = getelementptr inbounds %struct.doublecomplex, ptr %2183, i32 0, i32 0
  %2185 = load double, ptr %2184, align 8, !tbaa !16
  store double %2185, ptr %49, align 8, !tbaa !14
  %2186 = load double, ptr %49, align 8, !tbaa !14
  %2187 = fcmp oge double %2186, 0.000000e+00
  br i1 %2187, label %2188, label %2190

2188:                                             ; preds = %2180
  %2189 = load double, ptr %49, align 8, !tbaa !14
  br label %2193

2190:                                             ; preds = %2180
  %2191 = load double, ptr %49, align 8, !tbaa !14
  %2192 = fneg double %2191
  br label %2193

2193:                                             ; preds = %2190, %2188
  %2194 = phi double [ %2189, %2188 ], [ %2192, %2190 ]
  %2195 = load double, ptr %99, align 8, !tbaa !14
  %2196 = fcmp ole double %2194, %2195
  br i1 %2196, label %2197, label %2235

2197:                                             ; preds = %2193
  %2198 = load ptr, ptr %22, align 8, !tbaa !5
  %2199 = load i64, ptr %2198, align 8, !tbaa !9
  store i64 %2199, ptr %44, align 8, !tbaa !9
  store i64 1, ptr %66, align 8, !tbaa !9
  br label %2200

2200:                                             ; preds = %2218, %2197
  %2201 = load i64, ptr %66, align 8, !tbaa !9
  %2202 = load i64, ptr %44, align 8, !tbaa !9
  %2203 = icmp sle i64 %2201, %2202
  br i1 %2203, label %2204, label %2221

2204:                                             ; preds = %2200
  %2205 = load i64, ptr %66, align 8, !tbaa !9
  %2206 = load i64, ptr %73, align 8, !tbaa !9
  %2207 = load i64, ptr %42, align 8, !tbaa !9
  %2208 = mul nsw i64 %2206, %2207
  %2209 = add nsw i64 %2205, %2208
  store i64 %2209, ptr %45, align 8, !tbaa !9
  %2210 = load ptr, ptr %29, align 8, !tbaa !5
  %2211 = load i64, ptr %45, align 8, !tbaa !9
  %2212 = getelementptr inbounds %struct.doublecomplex, ptr %2210, i64 %2211
  %2213 = getelementptr inbounds %struct.doublecomplex, ptr %2212, i32 0, i32 0
  store double 0.000000e+00, ptr %2213, align 8, !tbaa !16
  %2214 = load ptr, ptr %29, align 8, !tbaa !5
  %2215 = load i64, ptr %45, align 8, !tbaa !9
  %2216 = getelementptr inbounds %struct.doublecomplex, ptr %2214, i64 %2215
  %2217 = getelementptr inbounds %struct.doublecomplex, ptr %2216, i32 0, i32 1
  store double 0.000000e+00, ptr %2217, align 8, !tbaa !20
  br label %2218

2218:                                             ; preds = %2204
  %2219 = load i64, ptr %66, align 8, !tbaa !9
  %2220 = add nsw i64 %2219, 1
  store i64 %2220, ptr %66, align 8, !tbaa !9
  br label %2200, !llvm.loop !31

2221:                                             ; preds = %2200
  %2222 = load i64, ptr %73, align 8, !tbaa !9
  %2223 = load i64, ptr %73, align 8, !tbaa !9
  %2224 = load i64, ptr %42, align 8, !tbaa !9
  %2225 = mul nsw i64 %2223, %2224
  %2226 = add nsw i64 %2222, %2225
  store i64 %2226, ptr %44, align 8, !tbaa !9
  %2227 = load ptr, ptr %29, align 8, !tbaa !5
  %2228 = load i64, ptr %44, align 8, !tbaa !9
  %2229 = getelementptr inbounds %struct.doublecomplex, ptr %2227, i64 %2228
  %2230 = getelementptr inbounds %struct.doublecomplex, ptr %2229, i32 0, i32 0
  store double 1.000000e+00, ptr %2230, align 8, !tbaa !16
  %2231 = load ptr, ptr %29, align 8, !tbaa !5
  %2232 = load i64, ptr %44, align 8, !tbaa !9
  %2233 = getelementptr inbounds %struct.doublecomplex, ptr %2231, i64 %2232
  %2234 = getelementptr inbounds %struct.doublecomplex, ptr %2233, i32 0, i32 1
  store double 0.000000e+00, ptr %2234, align 8, !tbaa !20
  br label %3658

2235:                                             ; preds = %2193, %2175
  %2236 = load i64, ptr %64, align 8, !tbaa !9
  %2237 = load i64, ptr %64, align 8, !tbaa !9
  %2238 = load i64, ptr %38, align 8, !tbaa !9
  %2239 = mul nsw i64 %2237, %2238
  %2240 = add nsw i64 %2236, %2239
  store i64 %2240, ptr %44, align 8, !tbaa !9
  %2241 = load i64, ptr %64, align 8, !tbaa !9
  %2242 = load i64, ptr %64, align 8, !tbaa !9
  %2243 = load i64, ptr %36, align 8, !tbaa !9
  %2244 = mul nsw i64 %2242, %2243
  %2245 = add nsw i64 %2241, %2244
  store i64 %2245, ptr %45, align 8, !tbaa !9
  %2246 = load ptr, ptr %23, align 8, !tbaa !5
  %2247 = load i64, ptr %44, align 8, !tbaa !9
  %2248 = getelementptr inbounds %struct.doublecomplex, ptr %2246, i64 %2247
  %2249 = getelementptr inbounds %struct.doublecomplex, ptr %2248, i32 0, i32 0
  %2250 = load double, ptr %2249, align 8, !tbaa !16
  store double %2250, ptr %50, align 8, !tbaa !14
  %2251 = load double, ptr %50, align 8, !tbaa !14
  %2252 = fcmp oge double %2251, 0.000000e+00
  br i1 %2252, label %2253, label %2255

2253:                                             ; preds = %2235
  %2254 = load double, ptr %50, align 8, !tbaa !14
  br label %2258

2255:                                             ; preds = %2235
  %2256 = load double, ptr %50, align 8, !tbaa !14
  %2257 = fneg double %2256
  br label %2258

2258:                                             ; preds = %2255, %2253
  %2259 = phi double [ %2254, %2253 ], [ %2257, %2255 ]
  %2260 = load ptr, ptr %23, align 8, !tbaa !5
  %2261 = load i64, ptr %64, align 8, !tbaa !9
  %2262 = load i64, ptr %64, align 8, !tbaa !9
  %2263 = load i64, ptr %38, align 8, !tbaa !9
  %2264 = mul nsw i64 %2262, %2263
  %2265 = add nsw i64 %2261, %2264
  %2266 = getelementptr inbounds %struct.doublecomplex, ptr %2260, i64 %2265
  %2267 = call double @d_imag(ptr noundef %2266)
  store double %2267, ptr %51, align 8, !tbaa !14
  %2268 = load double, ptr %51, align 8, !tbaa !14
  %2269 = fcmp oge double %2268, 0.000000e+00
  br i1 %2269, label %2270, label %2272

2270:                                             ; preds = %2258
  %2271 = load double, ptr %51, align 8, !tbaa !14
  br label %2275

2272:                                             ; preds = %2258
  %2273 = load double, ptr %51, align 8, !tbaa !14
  %2274 = fneg double %2273
  br label %2275

2275:                                             ; preds = %2272, %2270
  %2276 = phi double [ %2271, %2270 ], [ %2274, %2272 ]
  %2277 = fadd double %2259, %2276
  %2278 = load double, ptr %96, align 8, !tbaa !14
  %2279 = fmul double %2277, %2278
  store double %2279, ptr %52, align 8, !tbaa !14
  %2280 = load ptr, ptr %25, align 8, !tbaa !5
  %2281 = load i64, ptr %45, align 8, !tbaa !9
  %2282 = getelementptr inbounds %struct.doublecomplex, ptr %2280, i64 %2281
  %2283 = getelementptr inbounds %struct.doublecomplex, ptr %2282, i32 0, i32 0
  %2284 = load double, ptr %2283, align 8, !tbaa !16
  store double %2284, ptr %49, align 8, !tbaa !14
  %2285 = load double, ptr %49, align 8, !tbaa !14
  %2286 = fcmp oge double %2285, 0.000000e+00
  br i1 %2286, label %2287, label %2289

2287:                                             ; preds = %2275
  %2288 = load double, ptr %49, align 8, !tbaa !14
  br label %2292

2289:                                             ; preds = %2275
  %2290 = load double, ptr %49, align 8, !tbaa !14
  %2291 = fneg double %2290
  br label %2292

2292:                                             ; preds = %2289, %2287
  %2293 = phi double [ %2288, %2287 ], [ %2291, %2289 ]
  %2294 = load double, ptr %97, align 8, !tbaa !14
  %2295 = fmul double %2293, %2294
  store double %2295, ptr %53, align 8, !tbaa !14
  %2296 = load double, ptr %52, align 8, !tbaa !14
  %2297 = load double, ptr %53, align 8, !tbaa !14
  %2298 = fcmp oge double %2296, %2297
  br i1 %2298, label %2299, label %2301

2299:                                             ; preds = %2292
  %2300 = load double, ptr %52, align 8, !tbaa !14
  br label %2303

2301:                                             ; preds = %2292
  %2302 = load double, ptr %53, align 8, !tbaa !14
  br label %2303

2303:                                             ; preds = %2301, %2299
  %2304 = phi double [ %2300, %2299 ], [ %2302, %2301 ]
  store double %2304, ptr %52, align 8, !tbaa !14
  %2305 = load double, ptr %52, align 8, !tbaa !14
  %2306 = load double, ptr %99, align 8, !tbaa !14
  %2307 = fcmp oge double %2305, %2306
  br i1 %2307, label %2308, label %2310

2308:                                             ; preds = %2303
  %2309 = load double, ptr %52, align 8, !tbaa !14
  br label %2312

2310:                                             ; preds = %2303
  %2311 = load double, ptr %99, align 8, !tbaa !14
  br label %2312

2312:                                             ; preds = %2310, %2308
  %2313 = phi double [ %2309, %2308 ], [ %2311, %2310 ]
  %2314 = fdiv double 1.000000e+00, %2313
  store double %2314, ptr %77, align 8, !tbaa !14
  %2315 = load i64, ptr %64, align 8, !tbaa !9
  %2316 = load i64, ptr %64, align 8, !tbaa !9
  %2317 = load i64, ptr %38, align 8, !tbaa !9
  %2318 = mul nsw i64 %2316, %2317
  %2319 = add nsw i64 %2315, %2318
  store i64 %2319, ptr %44, align 8, !tbaa !9
  %2320 = load double, ptr %77, align 8, !tbaa !14
  %2321 = load ptr, ptr %23, align 8, !tbaa !5
  %2322 = load i64, ptr %44, align 8, !tbaa !9
  %2323 = getelementptr inbounds %struct.doublecomplex, ptr %2321, i64 %2322
  %2324 = getelementptr inbounds %struct.doublecomplex, ptr %2323, i32 0, i32 0
  %2325 = load double, ptr %2324, align 8, !tbaa !16
  %2326 = fmul double %2320, %2325
  %2327 = getelementptr inbounds %struct.doublecomplex, ptr %56, i32 0, i32 0
  store double %2326, ptr %2327, align 8, !tbaa !16
  %2328 = load double, ptr %77, align 8, !tbaa !14
  %2329 = load ptr, ptr %23, align 8, !tbaa !5
  %2330 = load i64, ptr %44, align 8, !tbaa !9
  %2331 = getelementptr inbounds %struct.doublecomplex, ptr %2329, i64 %2330
  %2332 = getelementptr inbounds %struct.doublecomplex, ptr %2331, i32 0, i32 1
  %2333 = load double, ptr %2332, align 8, !tbaa !20
  %2334 = fmul double %2328, %2333
  %2335 = getelementptr inbounds %struct.doublecomplex, ptr %56, i32 0, i32 1
  store double %2334, ptr %2335, align 8, !tbaa !20
  %2336 = load double, ptr %96, align 8, !tbaa !14
  %2337 = getelementptr inbounds %struct.doublecomplex, ptr %56, i32 0, i32 0
  %2338 = load double, ptr %2337, align 8, !tbaa !16
  %2339 = fmul double %2336, %2338
  %2340 = getelementptr inbounds %struct.doublecomplex, ptr %55, i32 0, i32 0
  store double %2339, ptr %2340, align 8, !tbaa !16
  %2341 = load double, ptr %96, align 8, !tbaa !14
  %2342 = getelementptr inbounds %struct.doublecomplex, ptr %56, i32 0, i32 1
  %2343 = load double, ptr %2342, align 8, !tbaa !20
  %2344 = fmul double %2341, %2343
  %2345 = getelementptr inbounds %struct.doublecomplex, ptr %55, i32 0, i32 1
  store double %2344, ptr %2345, align 8, !tbaa !20
  %2346 = getelementptr inbounds %struct.doublecomplex, ptr %55, i32 0, i32 0
  %2347 = load double, ptr %2346, align 8, !tbaa !16
  %2348 = getelementptr inbounds %struct.doublecomplex, ptr %98, i32 0, i32 0
  store double %2347, ptr %2348, align 8, !tbaa !16
  %2349 = getelementptr inbounds %struct.doublecomplex, ptr %55, i32 0, i32 1
  %2350 = load double, ptr %2349, align 8, !tbaa !20
  %2351 = getelementptr inbounds %struct.doublecomplex, ptr %98, i32 0, i32 1
  store double %2350, ptr %2351, align 8, !tbaa !20
  %2352 = load i64, ptr %64, align 8, !tbaa !9
  %2353 = load i64, ptr %64, align 8, !tbaa !9
  %2354 = load i64, ptr %36, align 8, !tbaa !9
  %2355 = mul nsw i64 %2353, %2354
  %2356 = add nsw i64 %2352, %2355
  store i64 %2356, ptr %44, align 8, !tbaa !9
  %2357 = load double, ptr %77, align 8, !tbaa !14
  %2358 = load ptr, ptr %25, align 8, !tbaa !5
  %2359 = load i64, ptr %44, align 8, !tbaa !9
  %2360 = getelementptr inbounds %struct.doublecomplex, ptr %2358, i64 %2359
  %2361 = getelementptr inbounds %struct.doublecomplex, ptr %2360, i32 0, i32 0
  %2362 = load double, ptr %2361, align 8, !tbaa !16
  %2363 = fmul double %2357, %2362
  %2364 = load double, ptr %97, align 8, !tbaa !14
  %2365 = fmul double %2363, %2364
  store double %2365, ptr %84, align 8, !tbaa !14
  %2366 = load double, ptr %84, align 8, !tbaa !14
  %2367 = load double, ptr %96, align 8, !tbaa !14
  %2368 = fmul double %2366, %2367
  store double %2368, ptr %93, align 8, !tbaa !14
  %2369 = load double, ptr %97, align 8, !tbaa !14
  %2370 = getelementptr inbounds %struct.doublecomplex, ptr %98, i32 0, i32 0
  %2371 = load double, ptr %2370, align 8, !tbaa !16
  %2372 = fmul double %2369, %2371
  %2373 = getelementptr inbounds %struct.doublecomplex, ptr %55, i32 0, i32 0
  store double %2372, ptr %2373, align 8, !tbaa !16
  %2374 = load double, ptr %97, align 8, !tbaa !14
  %2375 = getelementptr inbounds %struct.doublecomplex, ptr %98, i32 0, i32 1
  %2376 = load double, ptr %2375, align 8, !tbaa !20
  %2377 = fmul double %2374, %2376
  %2378 = getelementptr inbounds %struct.doublecomplex, ptr %55, i32 0, i32 1
  store double %2377, ptr %2378, align 8, !tbaa !20
  %2379 = getelementptr inbounds %struct.doublecomplex, ptr %55, i32 0, i32 0
  %2380 = load double, ptr %2379, align 8, !tbaa !16
  %2381 = getelementptr inbounds %struct.doublecomplex, ptr %94, i32 0, i32 0
  store double %2380, ptr %2381, align 8, !tbaa !16
  %2382 = getelementptr inbounds %struct.doublecomplex, ptr %55, i32 0, i32 1
  %2383 = load double, ptr %2382, align 8, !tbaa !20
  %2384 = getelementptr inbounds %struct.doublecomplex, ptr %94, i32 0, i32 1
  store double %2383, ptr %2384, align 8, !tbaa !20
  %2385 = load double, ptr %84, align 8, !tbaa !14
  %2386 = fcmp oge double %2385, 0.000000e+00
  br i1 %2386, label %2387, label %2389

2387:                                             ; preds = %2312
  %2388 = load double, ptr %84, align 8, !tbaa !14
  br label %2392

2389:                                             ; preds = %2312
  %2390 = load double, ptr %84, align 8, !tbaa !14
  %2391 = fneg double %2390
  br label %2392

2392:                                             ; preds = %2389, %2387
  %2393 = phi double [ %2388, %2387 ], [ %2391, %2389 ]
  %2394 = load double, ptr %99, align 8, !tbaa !14
  %2395 = fcmp oge double %2393, %2394
  br i1 %2395, label %2396, label %2408

2396:                                             ; preds = %2392
  %2397 = load double, ptr %93, align 8, !tbaa !14
  %2398 = fcmp oge double %2397, 0.000000e+00
  br i1 %2398, label %2399, label %2401

2399:                                             ; preds = %2396
  %2400 = load double, ptr %93, align 8, !tbaa !14
  br label %2404

2401:                                             ; preds = %2396
  %2402 = load double, ptr %93, align 8, !tbaa !14
  %2403 = fneg double %2402
  br label %2404

2404:                                             ; preds = %2401, %2399
  %2405 = phi double [ %2400, %2399 ], [ %2403, %2401 ]
  %2406 = load double, ptr %85, align 8, !tbaa !14
  %2407 = fcmp olt double %2405, %2406
  br label %2408

2408:                                             ; preds = %2404, %2392
  %2409 = phi i1 [ false, %2392 ], [ %2407, %2404 ]
  %2410 = zext i1 %2409 to i32
  %2411 = sext i32 %2410 to i64
  store i64 %2411, ptr %68, align 8, !tbaa !9
  %2412 = getelementptr inbounds %struct.doublecomplex, ptr %98, i32 0, i32 0
  %2413 = load double, ptr %2412, align 8, !tbaa !16
  store double %2413, ptr %49, align 8, !tbaa !14
  %2414 = load double, ptr %49, align 8, !tbaa !14
  %2415 = fcmp oge double %2414, 0.000000e+00
  br i1 %2415, label %2416, label %2418

2416:                                             ; preds = %2408
  %2417 = load double, ptr %49, align 8, !tbaa !14
  br label %2421

2418:                                             ; preds = %2408
  %2419 = load double, ptr %49, align 8, !tbaa !14
  %2420 = fneg double %2419
  br label %2421

2421:                                             ; preds = %2418, %2416
  %2422 = phi double [ %2417, %2416 ], [ %2420, %2418 ]
  %2423 = call double @d_imag(ptr noundef %98)
  store double %2423, ptr %50, align 8, !tbaa !14
  %2424 = load double, ptr %50, align 8, !tbaa !14
  %2425 = fcmp oge double %2424, 0.000000e+00
  br i1 %2425, label %2426, label %2428

2426:                                             ; preds = %2421
  %2427 = load double, ptr %50, align 8, !tbaa !14
  br label %2431

2428:                                             ; preds = %2421
  %2429 = load double, ptr %50, align 8, !tbaa !14
  %2430 = fneg double %2429
  br label %2431

2431:                                             ; preds = %2428, %2426
  %2432 = phi double [ %2427, %2426 ], [ %2430, %2428 ]
  %2433 = fadd double %2422, %2432
  %2434 = load double, ptr %99, align 8, !tbaa !14
  %2435 = fcmp oge double %2433, %2434
  br i1 %2435, label %2436, label %2461

2436:                                             ; preds = %2431
  %2437 = getelementptr inbounds %struct.doublecomplex, ptr %94, i32 0, i32 0
  %2438 = load double, ptr %2437, align 8, !tbaa !16
  store double %2438, ptr %51, align 8, !tbaa !14
  %2439 = load double, ptr %51, align 8, !tbaa !14
  %2440 = fcmp oge double %2439, 0.000000e+00
  br i1 %2440, label %2441, label %2443

2441:                                             ; preds = %2436
  %2442 = load double, ptr %51, align 8, !tbaa !14
  br label %2446

2443:                                             ; preds = %2436
  %2444 = load double, ptr %51, align 8, !tbaa !14
  %2445 = fneg double %2444
  br label %2446

2446:                                             ; preds = %2443, %2441
  %2447 = phi double [ %2442, %2441 ], [ %2445, %2443 ]
  %2448 = call double @d_imag(ptr noundef %94)
  store double %2448, ptr %52, align 8, !tbaa !14
  %2449 = load double, ptr %52, align 8, !tbaa !14
  %2450 = fcmp oge double %2449, 0.000000e+00
  br i1 %2450, label %2451, label %2453

2451:                                             ; preds = %2446
  %2452 = load double, ptr %52, align 8, !tbaa !14
  br label %2456

2453:                                             ; preds = %2446
  %2454 = load double, ptr %52, align 8, !tbaa !14
  %2455 = fneg double %2454
  br label %2456

2456:                                             ; preds = %2453, %2451
  %2457 = phi double [ %2452, %2451 ], [ %2455, %2453 ]
  %2458 = fadd double %2447, %2457
  %2459 = load double, ptr %85, align 8, !tbaa !14
  %2460 = fcmp olt double %2458, %2459
  br label %2461

2461:                                             ; preds = %2456, %2431
  %2462 = phi i1 [ false, %2431 ], [ %2460, %2456 ]
  %2463 = zext i1 %2462 to i32
  %2464 = sext i32 %2463 to i64
  store i64 %2464, ptr %69, align 8, !tbaa !9
  store double 1.000000e+00, ptr %81, align 8, !tbaa !14
  %2465 = load i64, ptr %68, align 8, !tbaa !9
  %2466 = icmp ne i64 %2465, 0
  br i1 %2466, label %2467, label %2489

2467:                                             ; preds = %2461
  %2468 = load double, ptr %85, align 8, !tbaa !14
  %2469 = load double, ptr %84, align 8, !tbaa !14
  %2470 = fcmp oge double %2469, 0.000000e+00
  br i1 %2470, label %2471, label %2473

2471:                                             ; preds = %2467
  %2472 = load double, ptr %84, align 8, !tbaa !14
  br label %2476

2473:                                             ; preds = %2467
  %2474 = load double, ptr %84, align 8, !tbaa !14
  %2475 = fneg double %2474
  br label %2476

2476:                                             ; preds = %2473, %2471
  %2477 = phi double [ %2472, %2471 ], [ %2475, %2473 ]
  %2478 = fdiv double %2468, %2477
  %2479 = load double, ptr %87, align 8, !tbaa !14
  %2480 = load double, ptr %67, align 8, !tbaa !14
  %2481 = fcmp ole double %2479, %2480
  br i1 %2481, label %2482, label %2484

2482:                                             ; preds = %2476
  %2483 = load double, ptr %87, align 8, !tbaa !14
  br label %2486

2484:                                             ; preds = %2476
  %2485 = load double, ptr %67, align 8, !tbaa !14
  br label %2486

2486:                                             ; preds = %2484, %2482
  %2487 = phi double [ %2483, %2482 ], [ %2485, %2484 ]
  %2488 = fmul double %2478, %2487
  store double %2488, ptr %81, align 8, !tbaa !14
  br label %2489

2489:                                             ; preds = %2486, %2461
  %2490 = load i64, ptr %69, align 8, !tbaa !9
  %2491 = icmp ne i64 %2490, 0
  br i1 %2491, label %2492, label %2537

2492:                                             ; preds = %2489
  %2493 = load double, ptr %81, align 8, !tbaa !14
  store double %2493, ptr %51, align 8, !tbaa !14
  %2494 = load double, ptr %85, align 8, !tbaa !14
  %2495 = getelementptr inbounds %struct.doublecomplex, ptr %98, i32 0, i32 0
  %2496 = load double, ptr %2495, align 8, !tbaa !16
  store double %2496, ptr %49, align 8, !tbaa !14
  %2497 = load double, ptr %49, align 8, !tbaa !14
  %2498 = fcmp oge double %2497, 0.000000e+00
  br i1 %2498, label %2499, label %2501

2499:                                             ; preds = %2492
  %2500 = load double, ptr %49, align 8, !tbaa !14
  br label %2504

2501:                                             ; preds = %2492
  %2502 = load double, ptr %49, align 8, !tbaa !14
  %2503 = fneg double %2502
  br label %2504

2504:                                             ; preds = %2501, %2499
  %2505 = phi double [ %2500, %2499 ], [ %2503, %2501 ]
  %2506 = call double @d_imag(ptr noundef %98)
  store double %2506, ptr %50, align 8, !tbaa !14
  %2507 = load double, ptr %50, align 8, !tbaa !14
  %2508 = fcmp oge double %2507, 0.000000e+00
  br i1 %2508, label %2509, label %2511

2509:                                             ; preds = %2504
  %2510 = load double, ptr %50, align 8, !tbaa !14
  br label %2514

2511:                                             ; preds = %2504
  %2512 = load double, ptr %50, align 8, !tbaa !14
  %2513 = fneg double %2512
  br label %2514

2514:                                             ; preds = %2511, %2509
  %2515 = phi double [ %2510, %2509 ], [ %2513, %2511 ]
  %2516 = fadd double %2505, %2515
  %2517 = fdiv double %2494, %2516
  %2518 = load double, ptr %88, align 8, !tbaa !14
  %2519 = load double, ptr %67, align 8, !tbaa !14
  %2520 = fcmp ole double %2518, %2519
  br i1 %2520, label %2521, label %2523

2521:                                             ; preds = %2514
  %2522 = load double, ptr %88, align 8, !tbaa !14
  br label %2525

2523:                                             ; preds = %2514
  %2524 = load double, ptr %67, align 8, !tbaa !14
  br label %2525

2525:                                             ; preds = %2523, %2521
  %2526 = phi double [ %2522, %2521 ], [ %2524, %2523 ]
  %2527 = fmul double %2517, %2526
  store double %2527, ptr %52, align 8, !tbaa !14
  %2528 = load double, ptr %51, align 8, !tbaa !14
  %2529 = load double, ptr %52, align 8, !tbaa !14
  %2530 = fcmp oge double %2528, %2529
  br i1 %2530, label %2531, label %2533

2531:                                             ; preds = %2525
  %2532 = load double, ptr %51, align 8, !tbaa !14
  br label %2535

2533:                                             ; preds = %2525
  %2534 = load double, ptr %52, align 8, !tbaa !14
  br label %2535

2535:                                             ; preds = %2533, %2531
  %2536 = phi double [ %2532, %2531 ], [ %2534, %2533 ]
  store double %2536, ptr %81, align 8, !tbaa !14
  br label %2537

2537:                                             ; preds = %2535, %2489
  %2538 = load i64, ptr %68, align 8, !tbaa !9
  %2539 = icmp ne i64 %2538, 0
  br i1 %2539, label %2543, label %2540

2540:                                             ; preds = %2537
  %2541 = load i64, ptr %69, align 8, !tbaa !9
  %2542 = icmp ne i64 %2541, 0
  br i1 %2542, label %2543, label %2666

2543:                                             ; preds = %2540, %2537
  store double 1.000000e+00, ptr %53, align 8, !tbaa !14
  %2544 = load double, ptr %93, align 8, !tbaa !14
  %2545 = fcmp oge double %2544, 0.000000e+00
  br i1 %2545, label %2546, label %2548

2546:                                             ; preds = %2543
  %2547 = load double, ptr %93, align 8, !tbaa !14
  br label %2551

2548:                                             ; preds = %2543
  %2549 = load double, ptr %93, align 8, !tbaa !14
  %2550 = fneg double %2549
  br label %2551

2551:                                             ; preds = %2548, %2546
  %2552 = phi double [ %2547, %2546 ], [ %2550, %2548 ]
  store double %2552, ptr %54, align 8, !tbaa !14
  %2553 = load double, ptr %53, align 8, !tbaa !14
  %2554 = load double, ptr %54, align 8, !tbaa !14
  %2555 = fcmp oge double %2553, %2554
  br i1 %2555, label %2556, label %2558

2556:                                             ; preds = %2551
  %2557 = load double, ptr %53, align 8, !tbaa !14
  br label %2560

2558:                                             ; preds = %2551
  %2559 = load double, ptr %54, align 8, !tbaa !14
  br label %2560

2560:                                             ; preds = %2558, %2556
  %2561 = phi double [ %2557, %2556 ], [ %2559, %2558 ]
  store double %2561, ptr %53, align 8, !tbaa !14
  %2562 = getelementptr inbounds %struct.doublecomplex, ptr %94, i32 0, i32 0
  %2563 = load double, ptr %2562, align 8, !tbaa !16
  store double %2563, ptr %49, align 8, !tbaa !14
  %2564 = load double, ptr %49, align 8, !tbaa !14
  %2565 = fcmp oge double %2564, 0.000000e+00
  br i1 %2565, label %2566, label %2568

2566:                                             ; preds = %2560
  %2567 = load double, ptr %49, align 8, !tbaa !14
  br label %2571

2568:                                             ; preds = %2560
  %2569 = load double, ptr %49, align 8, !tbaa !14
  %2570 = fneg double %2569
  br label %2571

2571:                                             ; preds = %2568, %2566
  %2572 = phi double [ %2567, %2566 ], [ %2570, %2568 ]
  %2573 = call double @d_imag(ptr noundef %94)
  store double %2573, ptr %50, align 8, !tbaa !14
  %2574 = load double, ptr %50, align 8, !tbaa !14
  %2575 = fcmp oge double %2574, 0.000000e+00
  br i1 %2575, label %2576, label %2578

2576:                                             ; preds = %2571
  %2577 = load double, ptr %50, align 8, !tbaa !14
  br label %2581

2578:                                             ; preds = %2571
  %2579 = load double, ptr %50, align 8, !tbaa !14
  %2580 = fneg double %2579
  br label %2581

2581:                                             ; preds = %2578, %2576
  %2582 = phi double [ %2577, %2576 ], [ %2580, %2578 ]
  %2583 = fadd double %2572, %2582
  store double %2583, ptr %54, align 8, !tbaa !14
  %2584 = load double, ptr %81, align 8, !tbaa !14
  store double %2584, ptr %51, align 8, !tbaa !14
  %2585 = load double, ptr %99, align 8, !tbaa !14
  %2586 = load double, ptr %53, align 8, !tbaa !14
  %2587 = load double, ptr %54, align 8, !tbaa !14
  %2588 = fcmp oge double %2586, %2587
  br i1 %2588, label %2589, label %2591

2589:                                             ; preds = %2581
  %2590 = load double, ptr %53, align 8, !tbaa !14
  br label %2593

2591:                                             ; preds = %2581
  %2592 = load double, ptr %54, align 8, !tbaa !14
  br label %2593

2593:                                             ; preds = %2591, %2589
  %2594 = phi double [ %2590, %2589 ], [ %2592, %2591 ]
  %2595 = fmul double %2585, %2594
  %2596 = fdiv double 1.000000e+00, %2595
  store double %2596, ptr %52, align 8, !tbaa !14
  %2597 = load double, ptr %51, align 8, !tbaa !14
  %2598 = load double, ptr %52, align 8, !tbaa !14
  %2599 = fcmp ole double %2597, %2598
  br i1 %2599, label %2600, label %2602

2600:                                             ; preds = %2593
  %2601 = load double, ptr %51, align 8, !tbaa !14
  br label %2604

2602:                                             ; preds = %2593
  %2603 = load double, ptr %52, align 8, !tbaa !14
  br label %2604

2604:                                             ; preds = %2602, %2600
  %2605 = phi double [ %2601, %2600 ], [ %2603, %2602 ]
  store double %2605, ptr %81, align 8, !tbaa !14
  %2606 = load i64, ptr %68, align 8, !tbaa !9
  %2607 = icmp ne i64 %2606, 0
  br i1 %2607, label %2608, label %2614

2608:                                             ; preds = %2604
  %2609 = load double, ptr %96, align 8, !tbaa !14
  %2610 = load double, ptr %81, align 8, !tbaa !14
  %2611 = load double, ptr %84, align 8, !tbaa !14
  %2612 = fmul double %2610, %2611
  %2613 = fmul double %2609, %2612
  store double %2613, ptr %93, align 8, !tbaa !14
  br label %2618

2614:                                             ; preds = %2604
  %2615 = load double, ptr %81, align 8, !tbaa !14
  %2616 = load double, ptr %93, align 8, !tbaa !14
  %2617 = fmul double %2615, %2616
  store double %2617, ptr %93, align 8, !tbaa !14
  br label %2618

2618:                                             ; preds = %2614, %2608
  %2619 = load i64, ptr %69, align 8, !tbaa !9
  %2620 = icmp ne i64 %2619, 0
  br i1 %2620, label %2621, label %2648

2621:                                             ; preds = %2618
  %2622 = load double, ptr %81, align 8, !tbaa !14
  %2623 = getelementptr inbounds %struct.doublecomplex, ptr %98, i32 0, i32 0
  %2624 = load double, ptr %2623, align 8, !tbaa !16
  %2625 = fmul double %2622, %2624
  %2626 = getelementptr inbounds %struct.doublecomplex, ptr %56, i32 0, i32 0
  store double %2625, ptr %2626, align 8, !tbaa !16
  %2627 = load double, ptr %81, align 8, !tbaa !14
  %2628 = getelementptr inbounds %struct.doublecomplex, ptr %98, i32 0, i32 1
  %2629 = load double, ptr %2628, align 8, !tbaa !20
  %2630 = fmul double %2627, %2629
  %2631 = getelementptr inbounds %struct.doublecomplex, ptr %56, i32 0, i32 1
  store double %2630, ptr %2631, align 8, !tbaa !20
  %2632 = load double, ptr %97, align 8, !tbaa !14
  %2633 = getelementptr inbounds %struct.doublecomplex, ptr %56, i32 0, i32 0
  %2634 = load double, ptr %2633, align 8, !tbaa !16
  %2635 = fmul double %2632, %2634
  %2636 = getelementptr inbounds %struct.doublecomplex, ptr %55, i32 0, i32 0
  store double %2635, ptr %2636, align 8, !tbaa !16
  %2637 = load double, ptr %97, align 8, !tbaa !14
  %2638 = getelementptr inbounds %struct.doublecomplex, ptr %56, i32 0, i32 1
  %2639 = load double, ptr %2638, align 8, !tbaa !20
  %2640 = fmul double %2637, %2639
  %2641 = getelementptr inbounds %struct.doublecomplex, ptr %55, i32 0, i32 1
  store double %2640, ptr %2641, align 8, !tbaa !20
  %2642 = getelementptr inbounds %struct.doublecomplex, ptr %55, i32 0, i32 0
  %2643 = load double, ptr %2642, align 8, !tbaa !16
  %2644 = getelementptr inbounds %struct.doublecomplex, ptr %94, i32 0, i32 0
  store double %2643, ptr %2644, align 8, !tbaa !16
  %2645 = getelementptr inbounds %struct.doublecomplex, ptr %55, i32 0, i32 1
  %2646 = load double, ptr %2645, align 8, !tbaa !20
  %2647 = getelementptr inbounds %struct.doublecomplex, ptr %94, i32 0, i32 1
  store double %2646, ptr %2647, align 8, !tbaa !20
  br label %2665

2648:                                             ; preds = %2618
  %2649 = load double, ptr %81, align 8, !tbaa !14
  %2650 = getelementptr inbounds %struct.doublecomplex, ptr %94, i32 0, i32 0
  %2651 = load double, ptr %2650, align 8, !tbaa !16
  %2652 = fmul double %2649, %2651
  %2653 = getelementptr inbounds %struct.doublecomplex, ptr %55, i32 0, i32 0
  store double %2652, ptr %2653, align 8, !tbaa !16
  %2654 = load double, ptr %81, align 8, !tbaa !14
  %2655 = getelementptr inbounds %struct.doublecomplex, ptr %94, i32 0, i32 1
  %2656 = load double, ptr %2655, align 8, !tbaa !20
  %2657 = fmul double %2654, %2656
  %2658 = getelementptr inbounds %struct.doublecomplex, ptr %55, i32 0, i32 1
  store double %2657, ptr %2658, align 8, !tbaa !20
  %2659 = getelementptr inbounds %struct.doublecomplex, ptr %55, i32 0, i32 0
  %2660 = load double, ptr %2659, align 8, !tbaa !16
  %2661 = getelementptr inbounds %struct.doublecomplex, ptr %94, i32 0, i32 0
  store double %2660, ptr %2661, align 8, !tbaa !16
  %2662 = getelementptr inbounds %struct.doublecomplex, ptr %55, i32 0, i32 1
  %2663 = load double, ptr %2662, align 8, !tbaa !20
  %2664 = getelementptr inbounds %struct.doublecomplex, ptr %94, i32 0, i32 1
  store double %2663, ptr %2664, align 8, !tbaa !20
  br label %2665

2665:                                             ; preds = %2648, %2621
  br label %2666

2666:                                             ; preds = %2665, %2540
  %2667 = load double, ptr %93, align 8, !tbaa !14
  %2668 = fcmp oge double %2667, 0.000000e+00
  br i1 %2668, label %2669, label %2671

2669:                                             ; preds = %2666
  %2670 = load double, ptr %93, align 8, !tbaa !14
  br label %2674

2671:                                             ; preds = %2666
  %2672 = load double, ptr %93, align 8, !tbaa !14
  %2673 = fneg double %2672
  br label %2674

2674:                                             ; preds = %2671, %2669
  %2675 = phi double [ %2670, %2669 ], [ %2673, %2671 ]
  store double %2675, ptr %91, align 8, !tbaa !14
  %2676 = getelementptr inbounds %struct.doublecomplex, ptr %94, i32 0, i32 0
  %2677 = load double, ptr %2676, align 8, !tbaa !16
  store double %2677, ptr %49, align 8, !tbaa !14
  %2678 = load double, ptr %49, align 8, !tbaa !14
  %2679 = fcmp oge double %2678, 0.000000e+00
  br i1 %2679, label %2680, label %2682

2680:                                             ; preds = %2674
  %2681 = load double, ptr %49, align 8, !tbaa !14
  br label %2685

2682:                                             ; preds = %2674
  %2683 = load double, ptr %49, align 8, !tbaa !14
  %2684 = fneg double %2683
  br label %2685

2685:                                             ; preds = %2682, %2680
  %2686 = phi double [ %2681, %2680 ], [ %2684, %2682 ]
  %2687 = call double @d_imag(ptr noundef %94)
  store double %2687, ptr %50, align 8, !tbaa !14
  %2688 = load double, ptr %50, align 8, !tbaa !14
  %2689 = fcmp oge double %2688, 0.000000e+00
  br i1 %2689, label %2690, label %2692

2690:                                             ; preds = %2685
  %2691 = load double, ptr %50, align 8, !tbaa !14
  br label %2695

2692:                                             ; preds = %2685
  %2693 = load double, ptr %50, align 8, !tbaa !14
  %2694 = fneg double %2693
  br label %2695

2695:                                             ; preds = %2692, %2690
  %2696 = phi double [ %2691, %2690 ], [ %2694, %2692 ]
  %2697 = fadd double %2686, %2696
  store double %2697, ptr %92, align 8, !tbaa !14
  store double 1.000000e+00, ptr %80, align 8, !tbaa !14
  %2698 = load ptr, ptr %22, align 8, !tbaa !5
  %2699 = load i64, ptr %2698, align 8, !tbaa !9
  store i64 %2699, ptr %44, align 8, !tbaa !9
  store i64 1, ptr %66, align 8, !tbaa !9
  br label %2700

2700:                                             ; preds = %2714, %2695
  %2701 = load i64, ptr %66, align 8, !tbaa !9
  %2702 = load i64, ptr %44, align 8, !tbaa !9
  %2703 = icmp sle i64 %2701, %2702
  br i1 %2703, label %2704, label %2717

2704:                                             ; preds = %2700
  %2705 = load i64, ptr %66, align 8, !tbaa !9
  store i64 %2705, ptr %45, align 8, !tbaa !9
  %2706 = load ptr, ptr %33, align 8, !tbaa !5
  %2707 = load i64, ptr %45, align 8, !tbaa !9
  %2708 = getelementptr inbounds %struct.doublecomplex, ptr %2706, i64 %2707
  %2709 = getelementptr inbounds %struct.doublecomplex, ptr %2708, i32 0, i32 0
  store double 0.000000e+00, ptr %2709, align 8, !tbaa !16
  %2710 = load ptr, ptr %33, align 8, !tbaa !5
  %2711 = load i64, ptr %45, align 8, !tbaa !9
  %2712 = getelementptr inbounds %struct.doublecomplex, ptr %2710, i64 %2711
  %2713 = getelementptr inbounds %struct.doublecomplex, ptr %2712, i32 0, i32 1
  store double 0.000000e+00, ptr %2713, align 8, !tbaa !20
  br label %2714

2714:                                             ; preds = %2704
  %2715 = load i64, ptr %66, align 8, !tbaa !9
  %2716 = add nsw i64 %2715, 1
  store i64 %2716, ptr %66, align 8, !tbaa !9
  br label %2700, !llvm.loop !32

2717:                                             ; preds = %2700
  %2718 = load i64, ptr %64, align 8, !tbaa !9
  store i64 %2718, ptr %44, align 8, !tbaa !9
  %2719 = load ptr, ptr %33, align 8, !tbaa !5
  %2720 = load i64, ptr %44, align 8, !tbaa !9
  %2721 = getelementptr inbounds %struct.doublecomplex, ptr %2719, i64 %2720
  %2722 = getelementptr inbounds %struct.doublecomplex, ptr %2721, i32 0, i32 0
  store double 1.000000e+00, ptr %2722, align 8, !tbaa !16
  %2723 = load ptr, ptr %33, align 8, !tbaa !5
  %2724 = load i64, ptr %44, align 8, !tbaa !9
  %2725 = getelementptr inbounds %struct.doublecomplex, ptr %2723, i64 %2724
  %2726 = getelementptr inbounds %struct.doublecomplex, ptr %2725, i32 0, i32 1
  store double 0.000000e+00, ptr %2726, align 8, !tbaa !20
  %2727 = load double, ptr %70, align 8, !tbaa !14
  %2728 = load double, ptr %91, align 8, !tbaa !14
  %2729 = fmul double %2727, %2728
  %2730 = load double, ptr %87, align 8, !tbaa !14
  %2731 = fmul double %2729, %2730
  store double %2731, ptr %49, align 8, !tbaa !14
  %2732 = load double, ptr %70, align 8, !tbaa !14
  %2733 = load double, ptr %92, align 8, !tbaa !14
  %2734 = fmul double %2732, %2733
  %2735 = load double, ptr %88, align 8, !tbaa !14
  %2736 = fmul double %2734, %2735
  store double %2736, ptr %50, align 8, !tbaa !14
  %2737 = load double, ptr %49, align 8, !tbaa !14
  %2738 = load double, ptr %50, align 8, !tbaa !14
  %2739 = fcmp oge double %2737, %2738
  br i1 %2739, label %2740, label %2742

2740:                                             ; preds = %2717
  %2741 = load double, ptr %49, align 8, !tbaa !14
  br label %2744

2742:                                             ; preds = %2717
  %2743 = load double, ptr %50, align 8, !tbaa !14
  br label %2744

2744:                                             ; preds = %2742, %2740
  %2745 = phi double [ %2741, %2740 ], [ %2743, %2742 ]
  store double %2745, ptr %49, align 8, !tbaa !14
  %2746 = load double, ptr %49, align 8, !tbaa !14
  %2747 = load double, ptr %99, align 8, !tbaa !14
  %2748 = fcmp oge double %2746, %2747
  br i1 %2748, label %2749, label %2751

2749:                                             ; preds = %2744
  %2750 = load double, ptr %49, align 8, !tbaa !14
  br label %2753

2751:                                             ; preds = %2744
  %2752 = load double, ptr %99, align 8, !tbaa !14
  br label %2753

2753:                                             ; preds = %2751, %2749
  %2754 = phi double [ %2750, %2749 ], [ %2752, %2751 ]
  store double %2754, ptr %75, align 8, !tbaa !14
  %2755 = load i64, ptr %64, align 8, !tbaa !9
  %2756 = sub nsw i64 %2755, 1
  store i64 %2756, ptr %44, align 8, !tbaa !9
  store i64 1, ptr %66, align 8, !tbaa !9
  br label %2757

2757:                                             ; preds = %2848, %2753
  %2758 = load i64, ptr %66, align 8, !tbaa !9
  %2759 = load i64, ptr %44, align 8, !tbaa !9
  %2760 = icmp sle i64 %2758, %2759
  br i1 %2760, label %2761, label %2851

2761:                                             ; preds = %2757
  %2762 = load i64, ptr %66, align 8, !tbaa !9
  store i64 %2762, ptr %45, align 8, !tbaa !9
  %2763 = load i64, ptr %66, align 8, !tbaa !9
  %2764 = load i64, ptr %64, align 8, !tbaa !9
  %2765 = load i64, ptr %38, align 8, !tbaa !9
  %2766 = mul nsw i64 %2764, %2765
  %2767 = add nsw i64 %2763, %2766
  store i64 %2767, ptr %46, align 8, !tbaa !9
  %2768 = load double, ptr %93, align 8, !tbaa !14
  %2769 = load ptr, ptr %23, align 8, !tbaa !5
  %2770 = load i64, ptr %46, align 8, !tbaa !9
  %2771 = getelementptr inbounds %struct.doublecomplex, ptr %2769, i64 %2770
  %2772 = getelementptr inbounds %struct.doublecomplex, ptr %2771, i32 0, i32 0
  %2773 = load double, ptr %2772, align 8, !tbaa !16
  %2774 = fmul double %2768, %2773
  %2775 = getelementptr inbounds %struct.doublecomplex, ptr %56, i32 0, i32 0
  store double %2774, ptr %2775, align 8, !tbaa !16
  %2776 = load double, ptr %93, align 8, !tbaa !14
  %2777 = load ptr, ptr %23, align 8, !tbaa !5
  %2778 = load i64, ptr %46, align 8, !tbaa !9
  %2779 = getelementptr inbounds %struct.doublecomplex, ptr %2777, i64 %2778
  %2780 = getelementptr inbounds %struct.doublecomplex, ptr %2779, i32 0, i32 1
  %2781 = load double, ptr %2780, align 8, !tbaa !20
  %2782 = fmul double %2776, %2781
  %2783 = getelementptr inbounds %struct.doublecomplex, ptr %56, i32 0, i32 1
  store double %2782, ptr %2783, align 8, !tbaa !20
  %2784 = load i64, ptr %66, align 8, !tbaa !9
  %2785 = load i64, ptr %64, align 8, !tbaa !9
  %2786 = load i64, ptr %36, align 8, !tbaa !9
  %2787 = mul nsw i64 %2785, %2786
  %2788 = add nsw i64 %2784, %2787
  store i64 %2788, ptr %47, align 8, !tbaa !9
  %2789 = getelementptr inbounds %struct.doublecomplex, ptr %94, i32 0, i32 0
  %2790 = load double, ptr %2789, align 8, !tbaa !16
  %2791 = load ptr, ptr %25, align 8, !tbaa !5
  %2792 = load i64, ptr %47, align 8, !tbaa !9
  %2793 = getelementptr inbounds %struct.doublecomplex, ptr %2791, i64 %2792
  %2794 = getelementptr inbounds %struct.doublecomplex, ptr %2793, i32 0, i32 0
  %2795 = load double, ptr %2794, align 8, !tbaa !16
  %2796 = getelementptr inbounds %struct.doublecomplex, ptr %94, i32 0, i32 1
  %2797 = load double, ptr %2796, align 8, !tbaa !20
  %2798 = load ptr, ptr %25, align 8, !tbaa !5
  %2799 = load i64, ptr %47, align 8, !tbaa !9
  %2800 = getelementptr inbounds %struct.doublecomplex, ptr %2798, i64 %2799
  %2801 = getelementptr inbounds %struct.doublecomplex, ptr %2800, i32 0, i32 1
  %2802 = load double, ptr %2801, align 8, !tbaa !20
  %2803 = fmul double %2797, %2802
  %2804 = fneg double %2803
  %2805 = call double @llvm.fmuladd.f64(double %2790, double %2795, double %2804)
  %2806 = getelementptr inbounds %struct.doublecomplex, ptr %57, i32 0, i32 0
  store double %2805, ptr %2806, align 8, !tbaa !16
  %2807 = getelementptr inbounds %struct.doublecomplex, ptr %94, i32 0, i32 0
  %2808 = load double, ptr %2807, align 8, !tbaa !16
  %2809 = load ptr, ptr %25, align 8, !tbaa !5
  %2810 = load i64, ptr %47, align 8, !tbaa !9
  %2811 = getelementptr inbounds %struct.doublecomplex, ptr %2809, i64 %2810
  %2812 = getelementptr inbounds %struct.doublecomplex, ptr %2811, i32 0, i32 1
  %2813 = load double, ptr %2812, align 8, !tbaa !20
  %2814 = getelementptr inbounds %struct.doublecomplex, ptr %94, i32 0, i32 1
  %2815 = load double, ptr %2814, align 8, !tbaa !20
  %2816 = load ptr, ptr %25, align 8, !tbaa !5
  %2817 = load i64, ptr %47, align 8, !tbaa !9
  %2818 = getelementptr inbounds %struct.doublecomplex, ptr %2816, i64 %2817
  %2819 = getelementptr inbounds %struct.doublecomplex, ptr %2818, i32 0, i32 0
  %2820 = load double, ptr %2819, align 8, !tbaa !16
  %2821 = fmul double %2815, %2820
  %2822 = call double @llvm.fmuladd.f64(double %2808, double %2813, double %2821)
  %2823 = getelementptr inbounds %struct.doublecomplex, ptr %57, i32 0, i32 1
  store double %2822, ptr %2823, align 8, !tbaa !20
  %2824 = getelementptr inbounds %struct.doublecomplex, ptr %56, i32 0, i32 0
  %2825 = load double, ptr %2824, align 8, !tbaa !16
  %2826 = getelementptr inbounds %struct.doublecomplex, ptr %57, i32 0, i32 0
  %2827 = load double, ptr %2826, align 8, !tbaa !16
  %2828 = fsub double %2825, %2827
  %2829 = getelementptr inbounds %struct.doublecomplex, ptr %55, i32 0, i32 0
  store double %2828, ptr %2829, align 8, !tbaa !16
  %2830 = getelementptr inbounds %struct.doublecomplex, ptr %56, i32 0, i32 1
  %2831 = load double, ptr %2830, align 8, !tbaa !20
  %2832 = getelementptr inbounds %struct.doublecomplex, ptr %57, i32 0, i32 1
  %2833 = load double, ptr %2832, align 8, !tbaa !20
  %2834 = fsub double %2831, %2833
  %2835 = getelementptr inbounds %struct.doublecomplex, ptr %55, i32 0, i32 1
  store double %2834, ptr %2835, align 8, !tbaa !20
  %2836 = getelementptr inbounds %struct.doublecomplex, ptr %55, i32 0, i32 0
  %2837 = load double, ptr %2836, align 8, !tbaa !16
  %2838 = load ptr, ptr %33, align 8, !tbaa !5
  %2839 = load i64, ptr %45, align 8, !tbaa !9
  %2840 = getelementptr inbounds %struct.doublecomplex, ptr %2838, i64 %2839
  %2841 = getelementptr inbounds %struct.doublecomplex, ptr %2840, i32 0, i32 0
  store double %2837, ptr %2841, align 8, !tbaa !16
  %2842 = getelementptr inbounds %struct.doublecomplex, ptr %55, i32 0, i32 1
  %2843 = load double, ptr %2842, align 8, !tbaa !20
  %2844 = load ptr, ptr %33, align 8, !tbaa !5
  %2845 = load i64, ptr %45, align 8, !tbaa !9
  %2846 = getelementptr inbounds %struct.doublecomplex, ptr %2844, i64 %2845
  %2847 = getelementptr inbounds %struct.doublecomplex, ptr %2846, i32 0, i32 1
  store double %2843, ptr %2847, align 8, !tbaa !20
  br label %2848

2848:                                             ; preds = %2761
  %2849 = load i64, ptr %66, align 8, !tbaa !9
  %2850 = add nsw i64 %2849, 1
  store i64 %2850, ptr %66, align 8, !tbaa !9
  br label %2757, !llvm.loop !33

2851:                                             ; preds = %2757
  %2852 = load i64, ptr %64, align 8, !tbaa !9
  store i64 %2852, ptr %44, align 8, !tbaa !9
  %2853 = load ptr, ptr %33, align 8, !tbaa !5
  %2854 = load i64, ptr %44, align 8, !tbaa !9
  %2855 = getelementptr inbounds %struct.doublecomplex, ptr %2853, i64 %2854
  %2856 = getelementptr inbounds %struct.doublecomplex, ptr %2855, i32 0, i32 0
  store double 1.000000e+00, ptr %2856, align 8, !tbaa !16
  %2857 = load ptr, ptr %33, align 8, !tbaa !5
  %2858 = load i64, ptr %44, align 8, !tbaa !9
  %2859 = getelementptr inbounds %struct.doublecomplex, ptr %2857, i64 %2858
  %2860 = getelementptr inbounds %struct.doublecomplex, ptr %2859, i32 0, i32 1
  store double 0.000000e+00, ptr %2860, align 8, !tbaa !20
  %2861 = load i64, ptr %64, align 8, !tbaa !9
  %2862 = sub nsw i64 %2861, 1
  store i64 %2862, ptr %61, align 8, !tbaa !9
  br label %2863

2863:                                             ; preds = %3487, %2851
  %2864 = load i64, ptr %61, align 8, !tbaa !9
  %2865 = icmp sge i64 %2864, 1
  br i1 %2865, label %2866, label %3490

2866:                                             ; preds = %2863
  %2867 = load i64, ptr %61, align 8, !tbaa !9
  %2868 = load i64, ptr %61, align 8, !tbaa !9
  %2869 = load i64, ptr %38, align 8, !tbaa !9
  %2870 = mul nsw i64 %2868, %2869
  %2871 = add nsw i64 %2867, %2870
  store i64 %2871, ptr %44, align 8, !tbaa !9
  %2872 = load double, ptr %93, align 8, !tbaa !14
  %2873 = load ptr, ptr %23, align 8, !tbaa !5
  %2874 = load i64, ptr %44, align 8, !tbaa !9
  %2875 = getelementptr inbounds %struct.doublecomplex, ptr %2873, i64 %2874
  %2876 = getelementptr inbounds %struct.doublecomplex, ptr %2875, i32 0, i32 0
  %2877 = load double, ptr %2876, align 8, !tbaa !16
  %2878 = fmul double %2872, %2877
  %2879 = getelementptr inbounds %struct.doublecomplex, ptr %56, i32 0, i32 0
  store double %2878, ptr %2879, align 8, !tbaa !16
  %2880 = load double, ptr %93, align 8, !tbaa !14
  %2881 = load ptr, ptr %23, align 8, !tbaa !5
  %2882 = load i64, ptr %44, align 8, !tbaa !9
  %2883 = getelementptr inbounds %struct.doublecomplex, ptr %2881, i64 %2882
  %2884 = getelementptr inbounds %struct.doublecomplex, ptr %2883, i32 0, i32 1
  %2885 = load double, ptr %2884, align 8, !tbaa !20
  %2886 = fmul double %2880, %2885
  %2887 = getelementptr inbounds %struct.doublecomplex, ptr %56, i32 0, i32 1
  store double %2886, ptr %2887, align 8, !tbaa !20
  %2888 = load i64, ptr %61, align 8, !tbaa !9
  %2889 = load i64, ptr %61, align 8, !tbaa !9
  %2890 = load i64, ptr %36, align 8, !tbaa !9
  %2891 = mul nsw i64 %2889, %2890
  %2892 = add nsw i64 %2888, %2891
  store i64 %2892, ptr %45, align 8, !tbaa !9
  %2893 = getelementptr inbounds %struct.doublecomplex, ptr %94, i32 0, i32 0
  %2894 = load double, ptr %2893, align 8, !tbaa !16
  %2895 = load ptr, ptr %25, align 8, !tbaa !5
  %2896 = load i64, ptr %45, align 8, !tbaa !9
  %2897 = getelementptr inbounds %struct.doublecomplex, ptr %2895, i64 %2896
  %2898 = getelementptr inbounds %struct.doublecomplex, ptr %2897, i32 0, i32 0
  %2899 = load double, ptr %2898, align 8, !tbaa !16
  %2900 = getelementptr inbounds %struct.doublecomplex, ptr %94, i32 0, i32 1
  %2901 = load double, ptr %2900, align 8, !tbaa !20
  %2902 = load ptr, ptr %25, align 8, !tbaa !5
  %2903 = load i64, ptr %45, align 8, !tbaa !9
  %2904 = getelementptr inbounds %struct.doublecomplex, ptr %2902, i64 %2903
  %2905 = getelementptr inbounds %struct.doublecomplex, ptr %2904, i32 0, i32 1
  %2906 = load double, ptr %2905, align 8, !tbaa !20
  %2907 = fmul double %2901, %2906
  %2908 = fneg double %2907
  %2909 = call double @llvm.fmuladd.f64(double %2894, double %2899, double %2908)
  %2910 = getelementptr inbounds %struct.doublecomplex, ptr %57, i32 0, i32 0
  store double %2909, ptr %2910, align 8, !tbaa !16
  %2911 = getelementptr inbounds %struct.doublecomplex, ptr %94, i32 0, i32 0
  %2912 = load double, ptr %2911, align 8, !tbaa !16
  %2913 = load ptr, ptr %25, align 8, !tbaa !5
  %2914 = load i64, ptr %45, align 8, !tbaa !9
  %2915 = getelementptr inbounds %struct.doublecomplex, ptr %2913, i64 %2914
  %2916 = getelementptr inbounds %struct.doublecomplex, ptr %2915, i32 0, i32 1
  %2917 = load double, ptr %2916, align 8, !tbaa !20
  %2918 = getelementptr inbounds %struct.doublecomplex, ptr %94, i32 0, i32 1
  %2919 = load double, ptr %2918, align 8, !tbaa !20
  %2920 = load ptr, ptr %25, align 8, !tbaa !5
  %2921 = load i64, ptr %45, align 8, !tbaa !9
  %2922 = getelementptr inbounds %struct.doublecomplex, ptr %2920, i64 %2921
  %2923 = getelementptr inbounds %struct.doublecomplex, ptr %2922, i32 0, i32 0
  %2924 = load double, ptr %2923, align 8, !tbaa !16
  %2925 = fmul double %2919, %2924
  %2926 = call double @llvm.fmuladd.f64(double %2912, double %2917, double %2925)
  %2927 = getelementptr inbounds %struct.doublecomplex, ptr %57, i32 0, i32 1
  store double %2926, ptr %2927, align 8, !tbaa !20
  %2928 = getelementptr inbounds %struct.doublecomplex, ptr %56, i32 0, i32 0
  %2929 = load double, ptr %2928, align 8, !tbaa !16
  %2930 = getelementptr inbounds %struct.doublecomplex, ptr %57, i32 0, i32 0
  %2931 = load double, ptr %2930, align 8, !tbaa !16
  %2932 = fsub double %2929, %2931
  %2933 = getelementptr inbounds %struct.doublecomplex, ptr %55, i32 0, i32 0
  store double %2932, ptr %2933, align 8, !tbaa !16
  %2934 = getelementptr inbounds %struct.doublecomplex, ptr %56, i32 0, i32 1
  %2935 = load double, ptr %2934, align 8, !tbaa !20
  %2936 = getelementptr inbounds %struct.doublecomplex, ptr %57, i32 0, i32 1
  %2937 = load double, ptr %2936, align 8, !tbaa !20
  %2938 = fsub double %2935, %2937
  %2939 = getelementptr inbounds %struct.doublecomplex, ptr %55, i32 0, i32 1
  store double %2938, ptr %2939, align 8, !tbaa !20
  %2940 = getelementptr inbounds %struct.doublecomplex, ptr %55, i32 0, i32 0
  %2941 = load double, ptr %2940, align 8, !tbaa !16
  %2942 = getelementptr inbounds %struct.doublecomplex, ptr %59, i32 0, i32 0
  store double %2941, ptr %2942, align 8, !tbaa !16
  %2943 = getelementptr inbounds %struct.doublecomplex, ptr %55, i32 0, i32 1
  %2944 = load double, ptr %2943, align 8, !tbaa !20
  %2945 = getelementptr inbounds %struct.doublecomplex, ptr %59, i32 0, i32 1
  store double %2944, ptr %2945, align 8, !tbaa !20
  %2946 = getelementptr inbounds %struct.doublecomplex, ptr %59, i32 0, i32 0
  %2947 = load double, ptr %2946, align 8, !tbaa !16
  store double %2947, ptr %49, align 8, !tbaa !14
  %2948 = load double, ptr %49, align 8, !tbaa !14
  %2949 = fcmp oge double %2948, 0.000000e+00
  br i1 %2949, label %2950, label %2952

2950:                                             ; preds = %2866
  %2951 = load double, ptr %49, align 8, !tbaa !14
  br label %2955

2952:                                             ; preds = %2866
  %2953 = load double, ptr %49, align 8, !tbaa !14
  %2954 = fneg double %2953
  br label %2955

2955:                                             ; preds = %2952, %2950
  %2956 = phi double [ %2951, %2950 ], [ %2954, %2952 ]
  %2957 = call double @d_imag(ptr noundef %59)
  store double %2957, ptr %50, align 8, !tbaa !14
  %2958 = load double, ptr %50, align 8, !tbaa !14
  %2959 = fcmp oge double %2958, 0.000000e+00
  br i1 %2959, label %2960, label %2962

2960:                                             ; preds = %2955
  %2961 = load double, ptr %50, align 8, !tbaa !14
  br label %2965

2962:                                             ; preds = %2955
  %2963 = load double, ptr %50, align 8, !tbaa !14
  %2964 = fneg double %2963
  br label %2965

2965:                                             ; preds = %2962, %2960
  %2966 = phi double [ %2961, %2960 ], [ %2964, %2962 ]
  %2967 = fadd double %2956, %2966
  %2968 = load double, ptr %75, align 8, !tbaa !14
  %2969 = fcmp ole double %2967, %2968
  br i1 %2969, label %2970, label %2980

2970:                                             ; preds = %2965
  %2971 = load double, ptr %75, align 8, !tbaa !14
  %2972 = getelementptr inbounds %struct.doublecomplex, ptr %55, i32 0, i32 0
  store double %2971, ptr %2972, align 8, !tbaa !16
  %2973 = getelementptr inbounds %struct.doublecomplex, ptr %55, i32 0, i32 1
  store double 0.000000e+00, ptr %2973, align 8, !tbaa !20
  %2974 = getelementptr inbounds %struct.doublecomplex, ptr %55, i32 0, i32 0
  %2975 = load double, ptr %2974, align 8, !tbaa !16
  %2976 = getelementptr inbounds %struct.doublecomplex, ptr %59, i32 0, i32 0
  store double %2975, ptr %2976, align 8, !tbaa !16
  %2977 = getelementptr inbounds %struct.doublecomplex, ptr %55, i32 0, i32 1
  %2978 = load double, ptr %2977, align 8, !tbaa !20
  %2979 = getelementptr inbounds %struct.doublecomplex, ptr %59, i32 0, i32 1
  store double %2978, ptr %2979, align 8, !tbaa !20
  br label %2980

2980:                                             ; preds = %2970, %2965
  %2981 = getelementptr inbounds %struct.doublecomplex, ptr %59, i32 0, i32 0
  %2982 = load double, ptr %2981, align 8, !tbaa !16
  store double %2982, ptr %49, align 8, !tbaa !14
  %2983 = load double, ptr %49, align 8, !tbaa !14
  %2984 = fcmp oge double %2983, 0.000000e+00
  br i1 %2984, label %2985, label %2987

2985:                                             ; preds = %2980
  %2986 = load double, ptr %49, align 8, !tbaa !14
  br label %2990

2987:                                             ; preds = %2980
  %2988 = load double, ptr %49, align 8, !tbaa !14
  %2989 = fneg double %2988
  br label %2990

2990:                                             ; preds = %2987, %2985
  %2991 = phi double [ %2986, %2985 ], [ %2989, %2987 ]
  %2992 = call double @d_imag(ptr noundef %59)
  store double %2992, ptr %50, align 8, !tbaa !14
  %2993 = load double, ptr %50, align 8, !tbaa !14
  %2994 = fcmp oge double %2993, 0.000000e+00
  br i1 %2994, label %2995, label %2997

2995:                                             ; preds = %2990
  %2996 = load double, ptr %50, align 8, !tbaa !14
  br label %3000

2997:                                             ; preds = %2990
  %2998 = load double, ptr %50, align 8, !tbaa !14
  %2999 = fneg double %2998
  br label %3000

3000:                                             ; preds = %2997, %2995
  %3001 = phi double [ %2996, %2995 ], [ %2999, %2997 ]
  %3002 = fadd double %2991, %3001
  %3003 = fcmp olt double %3002, 1.000000e+00
  br i1 %3003, label %3004, label %3131

3004:                                             ; preds = %3000
  %3005 = load i64, ptr %61, align 8, !tbaa !9
  store i64 %3005, ptr %44, align 8, !tbaa !9
  %3006 = load ptr, ptr %33, align 8, !tbaa !5
  %3007 = load i64, ptr %44, align 8, !tbaa !9
  %3008 = getelementptr inbounds %struct.doublecomplex, ptr %3006, i64 %3007
  %3009 = getelementptr inbounds %struct.doublecomplex, ptr %3008, i32 0, i32 0
  %3010 = load double, ptr %3009, align 8, !tbaa !16
  store double %3010, ptr %49, align 8, !tbaa !14
  %3011 = load double, ptr %49, align 8, !tbaa !14
  %3012 = fcmp oge double %3011, 0.000000e+00
  br i1 %3012, label %3013, label %3015

3013:                                             ; preds = %3004
  %3014 = load double, ptr %49, align 8, !tbaa !14
  br label %3018

3015:                                             ; preds = %3004
  %3016 = load double, ptr %49, align 8, !tbaa !14
  %3017 = fneg double %3016
  br label %3018

3018:                                             ; preds = %3015, %3013
  %3019 = phi double [ %3014, %3013 ], [ %3017, %3015 ]
  %3020 = load ptr, ptr %33, align 8, !tbaa !5
  %3021 = load i64, ptr %61, align 8, !tbaa !9
  %3022 = getelementptr inbounds %struct.doublecomplex, ptr %3020, i64 %3021
  %3023 = call double @d_imag(ptr noundef %3022)
  store double %3023, ptr %50, align 8, !tbaa !14
  %3024 = load double, ptr %50, align 8, !tbaa !14
  %3025 = fcmp oge double %3024, 0.000000e+00
  br i1 %3025, label %3026, label %3028

3026:                                             ; preds = %3018
  %3027 = load double, ptr %50, align 8, !tbaa !14
  br label %3031

3028:                                             ; preds = %3018
  %3029 = load double, ptr %50, align 8, !tbaa !14
  %3030 = fneg double %3029
  br label %3031

3031:                                             ; preds = %3028, %3026
  %3032 = phi double [ %3027, %3026 ], [ %3030, %3028 ]
  %3033 = fadd double %3019, %3032
  %3034 = load double, ptr %100, align 8, !tbaa !14
  %3035 = getelementptr inbounds %struct.doublecomplex, ptr %59, i32 0, i32 0
  %3036 = load double, ptr %3035, align 8, !tbaa !16
  store double %3036, ptr %51, align 8, !tbaa !14
  %3037 = load double, ptr %51, align 8, !tbaa !14
  %3038 = fcmp oge double %3037, 0.000000e+00
  br i1 %3038, label %3039, label %3041

3039:                                             ; preds = %3031
  %3040 = load double, ptr %51, align 8, !tbaa !14
  br label %3044

3041:                                             ; preds = %3031
  %3042 = load double, ptr %51, align 8, !tbaa !14
  %3043 = fneg double %3042
  br label %3044

3044:                                             ; preds = %3041, %3039
  %3045 = phi double [ %3040, %3039 ], [ %3043, %3041 ]
  %3046 = call double @d_imag(ptr noundef %59)
  store double %3046, ptr %52, align 8, !tbaa !14
  %3047 = load double, ptr %52, align 8, !tbaa !14
  %3048 = fcmp oge double %3047, 0.000000e+00
  br i1 %3048, label %3049, label %3051

3049:                                             ; preds = %3044
  %3050 = load double, ptr %52, align 8, !tbaa !14
  br label %3054

3051:                                             ; preds = %3044
  %3052 = load double, ptr %52, align 8, !tbaa !14
  %3053 = fneg double %3052
  br label %3054

3054:                                             ; preds = %3051, %3049
  %3055 = phi double [ %3050, %3049 ], [ %3053, %3051 ]
  %3056 = fadd double %3045, %3055
  %3057 = fmul double %3034, %3056
  %3058 = fcmp oge double %3033, %3057
  br i1 %3058, label %3059, label %3130

3059:                                             ; preds = %3054
  %3060 = load i64, ptr %61, align 8, !tbaa !9
  store i64 %3060, ptr %44, align 8, !tbaa !9
  %3061 = load ptr, ptr %33, align 8, !tbaa !5
  %3062 = load i64, ptr %44, align 8, !tbaa !9
  %3063 = getelementptr inbounds %struct.doublecomplex, ptr %3061, i64 %3062
  %3064 = getelementptr inbounds %struct.doublecomplex, ptr %3063, i32 0, i32 0
  %3065 = load double, ptr %3064, align 8, !tbaa !16
  store double %3065, ptr %49, align 8, !tbaa !14
  %3066 = load double, ptr %49, align 8, !tbaa !14
  %3067 = fcmp oge double %3066, 0.000000e+00
  br i1 %3067, label %3068, label %3070

3068:                                             ; preds = %3059
  %3069 = load double, ptr %49, align 8, !tbaa !14
  br label %3073

3070:                                             ; preds = %3059
  %3071 = load double, ptr %49, align 8, !tbaa !14
  %3072 = fneg double %3071
  br label %3073

3073:                                             ; preds = %3070, %3068
  %3074 = phi double [ %3069, %3068 ], [ %3072, %3070 ]
  %3075 = load ptr, ptr %33, align 8, !tbaa !5
  %3076 = load i64, ptr %61, align 8, !tbaa !9
  %3077 = getelementptr inbounds %struct.doublecomplex, ptr %3075, i64 %3076
  %3078 = call double @d_imag(ptr noundef %3077)
  store double %3078, ptr %50, align 8, !tbaa !14
  %3079 = load double, ptr %50, align 8, !tbaa !14
  %3080 = fcmp oge double %3079, 0.000000e+00
  br i1 %3080, label %3081, label %3083

3081:                                             ; preds = %3073
  %3082 = load double, ptr %50, align 8, !tbaa !14
  br label %3086

3083:                                             ; preds = %3073
  %3084 = load double, ptr %50, align 8, !tbaa !14
  %3085 = fneg double %3084
  br label %3086

3086:                                             ; preds = %3083, %3081
  %3087 = phi double [ %3082, %3081 ], [ %3085, %3083 ]
  %3088 = fadd double %3074, %3087
  %3089 = fdiv double 1.000000e+00, %3088
  store double %3089, ptr %77, align 8, !tbaa !14
  %3090 = load i64, ptr %64, align 8, !tbaa !9
  store i64 %3090, ptr %44, align 8, !tbaa !9
  store i64 1, ptr %66, align 8, !tbaa !9
  br label %3091

3091:                                             ; preds = %3126, %3086
  %3092 = load i64, ptr %66, align 8, !tbaa !9
  %3093 = load i64, ptr %44, align 8, !tbaa !9
  %3094 = icmp sle i64 %3092, %3093
  br i1 %3094, label %3095, label %3129

3095:                                             ; preds = %3091
  %3096 = load i64, ptr %66, align 8, !tbaa !9
  store i64 %3096, ptr %45, align 8, !tbaa !9
  %3097 = load i64, ptr %66, align 8, !tbaa !9
  store i64 %3097, ptr %46, align 8, !tbaa !9
  %3098 = load double, ptr %77, align 8, !tbaa !14
  %3099 = load ptr, ptr %33, align 8, !tbaa !5
  %3100 = load i64, ptr %46, align 8, !tbaa !9
  %3101 = getelementptr inbounds %struct.doublecomplex, ptr %3099, i64 %3100
  %3102 = getelementptr inbounds %struct.doublecomplex, ptr %3101, i32 0, i32 0
  %3103 = load double, ptr %3102, align 8, !tbaa !16
  %3104 = fmul double %3098, %3103
  %3105 = getelementptr inbounds %struct.doublecomplex, ptr %55, i32 0, i32 0
  store double %3104, ptr %3105, align 8, !tbaa !16
  %3106 = load double, ptr %77, align 8, !tbaa !14
  %3107 = load ptr, ptr %33, align 8, !tbaa !5
  %3108 = load i64, ptr %46, align 8, !tbaa !9
  %3109 = getelementptr inbounds %struct.doublecomplex, ptr %3107, i64 %3108
  %3110 = getelementptr inbounds %struct.doublecomplex, ptr %3109, i32 0, i32 1
  %3111 = load double, ptr %3110, align 8, !tbaa !20
  %3112 = fmul double %3106, %3111
  %3113 = getelementptr inbounds %struct.doublecomplex, ptr %55, i32 0, i32 1
  store double %3112, ptr %3113, align 8, !tbaa !20
  %3114 = getelementptr inbounds %struct.doublecomplex, ptr %55, i32 0, i32 0
  %3115 = load double, ptr %3114, align 8, !tbaa !16
  %3116 = load ptr, ptr %33, align 8, !tbaa !5
  %3117 = load i64, ptr %45, align 8, !tbaa !9
  %3118 = getelementptr inbounds %struct.doublecomplex, ptr %3116, i64 %3117
  %3119 = getelementptr inbounds %struct.doublecomplex, ptr %3118, i32 0, i32 0
  store double %3115, ptr %3119, align 8, !tbaa !16
  %3120 = getelementptr inbounds %struct.doublecomplex, ptr %55, i32 0, i32 1
  %3121 = load double, ptr %3120, align 8, !tbaa !20
  %3122 = load ptr, ptr %33, align 8, !tbaa !5
  %3123 = load i64, ptr %45, align 8, !tbaa !9
  %3124 = getelementptr inbounds %struct.doublecomplex, ptr %3122, i64 %3123
  %3125 = getelementptr inbounds %struct.doublecomplex, ptr %3124, i32 0, i32 1
  store double %3121, ptr %3125, align 8, !tbaa !20
  br label %3126

3126:                                             ; preds = %3095
  %3127 = load i64, ptr %66, align 8, !tbaa !9
  %3128 = add nsw i64 %3127, 1
  store i64 %3128, ptr %66, align 8, !tbaa !9
  br label %3091, !llvm.loop !34

3129:                                             ; preds = %3091
  br label %3130

3130:                                             ; preds = %3129, %3054
  br label %3131

3131:                                             ; preds = %3130, %3000
  %3132 = load i64, ptr %61, align 8, !tbaa !9
  store i64 %3132, ptr %44, align 8, !tbaa !9
  %3133 = load i64, ptr %61, align 8, !tbaa !9
  store i64 %3133, ptr %45, align 8, !tbaa !9
  %3134 = load ptr, ptr %33, align 8, !tbaa !5
  %3135 = load i64, ptr %45, align 8, !tbaa !9
  %3136 = getelementptr inbounds %struct.doublecomplex, ptr %3134, i64 %3135
  %3137 = getelementptr inbounds %struct.doublecomplex, ptr %3136, i32 0, i32 0
  %3138 = load double, ptr %3137, align 8, !tbaa !16
  %3139 = fneg double %3138
  %3140 = getelementptr inbounds %struct.doublecomplex, ptr %56, i32 0, i32 0
  store double %3139, ptr %3140, align 8, !tbaa !16
  %3141 = load ptr, ptr %33, align 8, !tbaa !5
  %3142 = load i64, ptr %45, align 8, !tbaa !9
  %3143 = getelementptr inbounds %struct.doublecomplex, ptr %3141, i64 %3142
  %3144 = getelementptr inbounds %struct.doublecomplex, ptr %3143, i32 0, i32 1
  %3145 = load double, ptr %3144, align 8, !tbaa !20
  %3146 = fneg double %3145
  %3147 = getelementptr inbounds %struct.doublecomplex, ptr %56, i32 0, i32 1
  store double %3146, ptr %3147, align 8, !tbaa !20
  call void @zladiv_(ptr noundef %55, ptr noundef %56, ptr noundef %59)
  %3148 = getelementptr inbounds %struct.doublecomplex, ptr %55, i32 0, i32 0
  %3149 = load double, ptr %3148, align 8, !tbaa !16
  %3150 = load ptr, ptr %33, align 8, !tbaa !5
  %3151 = load i64, ptr %44, align 8, !tbaa !9
  %3152 = getelementptr inbounds %struct.doublecomplex, ptr %3150, i64 %3151
  %3153 = getelementptr inbounds %struct.doublecomplex, ptr %3152, i32 0, i32 0
  store double %3149, ptr %3153, align 8, !tbaa !16
  %3154 = getelementptr inbounds %struct.doublecomplex, ptr %55, i32 0, i32 1
  %3155 = load double, ptr %3154, align 8, !tbaa !20
  %3156 = load ptr, ptr %33, align 8, !tbaa !5
  %3157 = load i64, ptr %44, align 8, !tbaa !9
  %3158 = getelementptr inbounds %struct.doublecomplex, ptr %3156, i64 %3157
  %3159 = getelementptr inbounds %struct.doublecomplex, ptr %3158, i32 0, i32 1
  store double %3155, ptr %3159, align 8, !tbaa !20
  %3160 = load i64, ptr %61, align 8, !tbaa !9
  %3161 = icmp sgt i64 %3160, 1
  br i1 %3161, label %3162, label %3486

3162:                                             ; preds = %3131
  %3163 = load i64, ptr %61, align 8, !tbaa !9
  store i64 %3163, ptr %44, align 8, !tbaa !9
  %3164 = load ptr, ptr %33, align 8, !tbaa !5
  %3165 = load i64, ptr %44, align 8, !tbaa !9
  %3166 = getelementptr inbounds %struct.doublecomplex, ptr %3164, i64 %3165
  %3167 = getelementptr inbounds %struct.doublecomplex, ptr %3166, i32 0, i32 0
  %3168 = load double, ptr %3167, align 8, !tbaa !16
  store double %3168, ptr %49, align 8, !tbaa !14
  %3169 = load double, ptr %49, align 8, !tbaa !14
  %3170 = fcmp oge double %3169, 0.000000e+00
  br i1 %3170, label %3171, label %3173

3171:                                             ; preds = %3162
  %3172 = load double, ptr %49, align 8, !tbaa !14
  br label %3176

3173:                                             ; preds = %3162
  %3174 = load double, ptr %49, align 8, !tbaa !14
  %3175 = fneg double %3174
  br label %3176

3176:                                             ; preds = %3173, %3171
  %3177 = phi double [ %3172, %3171 ], [ %3175, %3173 ]
  %3178 = load ptr, ptr %33, align 8, !tbaa !5
  %3179 = load i64, ptr %61, align 8, !tbaa !9
  %3180 = getelementptr inbounds %struct.doublecomplex, ptr %3178, i64 %3179
  %3181 = call double @d_imag(ptr noundef %3180)
  store double %3181, ptr %50, align 8, !tbaa !14
  %3182 = load double, ptr %50, align 8, !tbaa !14
  %3183 = fcmp oge double %3182, 0.000000e+00
  br i1 %3183, label %3184, label %3186

3184:                                             ; preds = %3176
  %3185 = load double, ptr %50, align 8, !tbaa !14
  br label %3189

3186:                                             ; preds = %3176
  %3187 = load double, ptr %50, align 8, !tbaa !14
  %3188 = fneg double %3187
  br label %3189

3189:                                             ; preds = %3186, %3184
  %3190 = phi double [ %3185, %3184 ], [ %3188, %3186 ]
  %3191 = fadd double %3177, %3190
  %3192 = fcmp ogt double %3191, 1.000000e+00
  br i1 %3192, label %3193, label %3285

3193:                                             ; preds = %3189
  %3194 = load i64, ptr %61, align 8, !tbaa !9
  store i64 %3194, ptr %44, align 8, !tbaa !9
  %3195 = load ptr, ptr %33, align 8, !tbaa !5
  %3196 = load i64, ptr %44, align 8, !tbaa !9
  %3197 = getelementptr inbounds %struct.doublecomplex, ptr %3195, i64 %3196
  %3198 = getelementptr inbounds %struct.doublecomplex, ptr %3197, i32 0, i32 0
  %3199 = load double, ptr %3198, align 8, !tbaa !16
  store double %3199, ptr %49, align 8, !tbaa !14
  %3200 = load double, ptr %49, align 8, !tbaa !14
  %3201 = fcmp oge double %3200, 0.000000e+00
  br i1 %3201, label %3202, label %3204

3202:                                             ; preds = %3193
  %3203 = load double, ptr %49, align 8, !tbaa !14
  br label %3207

3204:                                             ; preds = %3193
  %3205 = load double, ptr %49, align 8, !tbaa !14
  %3206 = fneg double %3205
  br label %3207

3207:                                             ; preds = %3204, %3202
  %3208 = phi double [ %3203, %3202 ], [ %3206, %3204 ]
  %3209 = load ptr, ptr %33, align 8, !tbaa !5
  %3210 = load i64, ptr %61, align 8, !tbaa !9
  %3211 = getelementptr inbounds %struct.doublecomplex, ptr %3209, i64 %3210
  %3212 = call double @d_imag(ptr noundef %3211)
  store double %3212, ptr %50, align 8, !tbaa !14
  %3213 = load double, ptr %50, align 8, !tbaa !14
  %3214 = fcmp oge double %3213, 0.000000e+00
  br i1 %3214, label %3215, label %3217

3215:                                             ; preds = %3207
  %3216 = load double, ptr %50, align 8, !tbaa !14
  br label %3220

3217:                                             ; preds = %3207
  %3218 = load double, ptr %50, align 8, !tbaa !14
  %3219 = fneg double %3218
  br label %3220

3220:                                             ; preds = %3217, %3215
  %3221 = phi double [ %3216, %3215 ], [ %3219, %3217 ]
  %3222 = fadd double %3208, %3221
  %3223 = fdiv double 1.000000e+00, %3222
  store double %3223, ptr %77, align 8, !tbaa !14
  %3224 = load double, ptr %91, align 8, !tbaa !14
  %3225 = load ptr, ptr %34, align 8, !tbaa !5
  %3226 = load i64, ptr %61, align 8, !tbaa !9
  %3227 = getelementptr inbounds double, ptr %3225, i64 %3226
  %3228 = load double, ptr %3227, align 8, !tbaa !14
  %3229 = load double, ptr %92, align 8, !tbaa !14
  %3230 = load ptr, ptr %34, align 8, !tbaa !5
  %3231 = load ptr, ptr %22, align 8, !tbaa !5
  %3232 = load i64, ptr %3231, align 8, !tbaa !9
  %3233 = load i64, ptr %61, align 8, !tbaa !9
  %3234 = add nsw i64 %3232, %3233
  %3235 = getelementptr inbounds double, ptr %3230, i64 %3234
  %3236 = load double, ptr %3235, align 8, !tbaa !14
  %3237 = fmul double %3229, %3236
  %3238 = call double @llvm.fmuladd.f64(double %3224, double %3228, double %3237)
  %3239 = load double, ptr %100, align 8, !tbaa !14
  %3240 = load double, ptr %77, align 8, !tbaa !14
  %3241 = fmul double %3239, %3240
  %3242 = fcmp oge double %3238, %3241
  br i1 %3242, label %3243, label %3284

3243:                                             ; preds = %3220
  %3244 = load i64, ptr %64, align 8, !tbaa !9
  store i64 %3244, ptr %44, align 8, !tbaa !9
  store i64 1, ptr %66, align 8, !tbaa !9
  br label %3245

3245:                                             ; preds = %3280, %3243
  %3246 = load i64, ptr %66, align 8, !tbaa !9
  %3247 = load i64, ptr %44, align 8, !tbaa !9
  %3248 = icmp sle i64 %3246, %3247
  br i1 %3248, label %3249, label %3283

3249:                                             ; preds = %3245
  %3250 = load i64, ptr %66, align 8, !tbaa !9
  store i64 %3250, ptr %45, align 8, !tbaa !9
  %3251 = load i64, ptr %66, align 8, !tbaa !9
  store i64 %3251, ptr %46, align 8, !tbaa !9
  %3252 = load double, ptr %77, align 8, !tbaa !14
  %3253 = load ptr, ptr %33, align 8, !tbaa !5
  %3254 = load i64, ptr %46, align 8, !tbaa !9
  %3255 = getelementptr inbounds %struct.doublecomplex, ptr %3253, i64 %3254
  %3256 = getelementptr inbounds %struct.doublecomplex, ptr %3255, i32 0, i32 0
  %3257 = load double, ptr %3256, align 8, !tbaa !16
  %3258 = fmul double %3252, %3257
  %3259 = getelementptr inbounds %struct.doublecomplex, ptr %55, i32 0, i32 0
  store double %3258, ptr %3259, align 8, !tbaa !16
  %3260 = load double, ptr %77, align 8, !tbaa !14
  %3261 = load ptr, ptr %33, align 8, !tbaa !5
  %3262 = load i64, ptr %46, align 8, !tbaa !9
  %3263 = getelementptr inbounds %struct.doublecomplex, ptr %3261, i64 %3262
  %3264 = getelementptr inbounds %struct.doublecomplex, ptr %3263, i32 0, i32 1
  %3265 = load double, ptr %3264, align 8, !tbaa !20
  %3266 = fmul double %3260, %3265
  %3267 = getelementptr inbounds %struct.doublecomplex, ptr %55, i32 0, i32 1
  store double %3266, ptr %3267, align 8, !tbaa !20
  %3268 = getelementptr inbounds %struct.doublecomplex, ptr %55, i32 0, i32 0
  %3269 = load double, ptr %3268, align 8, !tbaa !16
  %3270 = load ptr, ptr %33, align 8, !tbaa !5
  %3271 = load i64, ptr %45, align 8, !tbaa !9
  %3272 = getelementptr inbounds %struct.doublecomplex, ptr %3270, i64 %3271
  %3273 = getelementptr inbounds %struct.doublecomplex, ptr %3272, i32 0, i32 0
  store double %3269, ptr %3273, align 8, !tbaa !16
  %3274 = getelementptr inbounds %struct.doublecomplex, ptr %55, i32 0, i32 1
  %3275 = load double, ptr %3274, align 8, !tbaa !20
  %3276 = load ptr, ptr %33, align 8, !tbaa !5
  %3277 = load i64, ptr %45, align 8, !tbaa !9
  %3278 = getelementptr inbounds %struct.doublecomplex, ptr %3276, i64 %3277
  %3279 = getelementptr inbounds %struct.doublecomplex, ptr %3278, i32 0, i32 1
  store double %3275, ptr %3279, align 8, !tbaa !20
  br label %3280

3280:                                             ; preds = %3249
  %3281 = load i64, ptr %66, align 8, !tbaa !9
  %3282 = add nsw i64 %3281, 1
  store i64 %3282, ptr %66, align 8, !tbaa !9
  br label %3245, !llvm.loop !35

3283:                                             ; preds = %3245
  br label %3284

3284:                                             ; preds = %3283, %3220
  br label %3285

3285:                                             ; preds = %3284, %3189
  %3286 = load i64, ptr %61, align 8, !tbaa !9
  store i64 %3286, ptr %44, align 8, !tbaa !9
  %3287 = load double, ptr %93, align 8, !tbaa !14
  %3288 = load ptr, ptr %33, align 8, !tbaa !5
  %3289 = load i64, ptr %44, align 8, !tbaa !9
  %3290 = getelementptr inbounds %struct.doublecomplex, ptr %3288, i64 %3289
  %3291 = getelementptr inbounds %struct.doublecomplex, ptr %3290, i32 0, i32 0
  %3292 = load double, ptr %3291, align 8, !tbaa !16
  %3293 = fmul double %3287, %3292
  %3294 = getelementptr inbounds %struct.doublecomplex, ptr %55, i32 0, i32 0
  store double %3293, ptr %3294, align 8, !tbaa !16
  %3295 = load double, ptr %93, align 8, !tbaa !14
  %3296 = load ptr, ptr %33, align 8, !tbaa !5
  %3297 = load i64, ptr %44, align 8, !tbaa !9
  %3298 = getelementptr inbounds %struct.doublecomplex, ptr %3296, i64 %3297
  %3299 = getelementptr inbounds %struct.doublecomplex, ptr %3298, i32 0, i32 1
  %3300 = load double, ptr %3299, align 8, !tbaa !20
  %3301 = fmul double %3295, %3300
  %3302 = getelementptr inbounds %struct.doublecomplex, ptr %55, i32 0, i32 1
  store double %3301, ptr %3302, align 8, !tbaa !20
  %3303 = getelementptr inbounds %struct.doublecomplex, ptr %55, i32 0, i32 0
  %3304 = load double, ptr %3303, align 8, !tbaa !16
  %3305 = getelementptr inbounds %struct.doublecomplex, ptr %62, i32 0, i32 0
  store double %3304, ptr %3305, align 8, !tbaa !16
  %3306 = getelementptr inbounds %struct.doublecomplex, ptr %55, i32 0, i32 1
  %3307 = load double, ptr %3306, align 8, !tbaa !20
  %3308 = getelementptr inbounds %struct.doublecomplex, ptr %62, i32 0, i32 1
  store double %3307, ptr %3308, align 8, !tbaa !20
  %3309 = load i64, ptr %61, align 8, !tbaa !9
  store i64 %3309, ptr %44, align 8, !tbaa !9
  %3310 = getelementptr inbounds %struct.doublecomplex, ptr %94, i32 0, i32 0
  %3311 = load double, ptr %3310, align 8, !tbaa !16
  %3312 = load ptr, ptr %33, align 8, !tbaa !5
  %3313 = load i64, ptr %44, align 8, !tbaa !9
  %3314 = getelementptr inbounds %struct.doublecomplex, ptr %3312, i64 %3313
  %3315 = getelementptr inbounds %struct.doublecomplex, ptr %3314, i32 0, i32 0
  %3316 = load double, ptr %3315, align 8, !tbaa !16
  %3317 = getelementptr inbounds %struct.doublecomplex, ptr %94, i32 0, i32 1
  %3318 = load double, ptr %3317, align 8, !tbaa !20
  %3319 = load ptr, ptr %33, align 8, !tbaa !5
  %3320 = load i64, ptr %44, align 8, !tbaa !9
  %3321 = getelementptr inbounds %struct.doublecomplex, ptr %3319, i64 %3320
  %3322 = getelementptr inbounds %struct.doublecomplex, ptr %3321, i32 0, i32 1
  %3323 = load double, ptr %3322, align 8, !tbaa !20
  %3324 = fmul double %3318, %3323
  %3325 = fneg double %3324
  %3326 = call double @llvm.fmuladd.f64(double %3311, double %3316, double %3325)
  %3327 = getelementptr inbounds %struct.doublecomplex, ptr %55, i32 0, i32 0
  store double %3326, ptr %3327, align 8, !tbaa !16
  %3328 = getelementptr inbounds %struct.doublecomplex, ptr %94, i32 0, i32 0
  %3329 = load double, ptr %3328, align 8, !tbaa !16
  %3330 = load ptr, ptr %33, align 8, !tbaa !5
  %3331 = load i64, ptr %44, align 8, !tbaa !9
  %3332 = getelementptr inbounds %struct.doublecomplex, ptr %3330, i64 %3331
  %3333 = getelementptr inbounds %struct.doublecomplex, ptr %3332, i32 0, i32 1
  %3334 = load double, ptr %3333, align 8, !tbaa !20
  %3335 = getelementptr inbounds %struct.doublecomplex, ptr %94, i32 0, i32 1
  %3336 = load double, ptr %3335, align 8, !tbaa !20
  %3337 = load ptr, ptr %33, align 8, !tbaa !5
  %3338 = load i64, ptr %44, align 8, !tbaa !9
  %3339 = getelementptr inbounds %struct.doublecomplex, ptr %3337, i64 %3338
  %3340 = getelementptr inbounds %struct.doublecomplex, ptr %3339, i32 0, i32 0
  %3341 = load double, ptr %3340, align 8, !tbaa !16
  %3342 = fmul double %3336, %3341
  %3343 = call double @llvm.fmuladd.f64(double %3329, double %3334, double %3342)
  %3344 = getelementptr inbounds %struct.doublecomplex, ptr %55, i32 0, i32 1
  store double %3343, ptr %3344, align 8, !tbaa !20
  %3345 = getelementptr inbounds %struct.doublecomplex, ptr %55, i32 0, i32 0
  %3346 = load double, ptr %3345, align 8, !tbaa !16
  %3347 = getelementptr inbounds %struct.doublecomplex, ptr %63, i32 0, i32 0
  store double %3346, ptr %3347, align 8, !tbaa !16
  %3348 = getelementptr inbounds %struct.doublecomplex, ptr %55, i32 0, i32 1
  %3349 = load double, ptr %3348, align 8, !tbaa !20
  %3350 = getelementptr inbounds %struct.doublecomplex, ptr %63, i32 0, i32 1
  store double %3349, ptr %3350, align 8, !tbaa !20
  %3351 = load i64, ptr %61, align 8, !tbaa !9
  %3352 = sub nsw i64 %3351, 1
  store i64 %3352, ptr %44, align 8, !tbaa !9
  store i64 1, ptr %66, align 8, !tbaa !9
  br label %3353

3353:                                             ; preds = %3482, %3285
  %3354 = load i64, ptr %66, align 8, !tbaa !9
  %3355 = load i64, ptr %44, align 8, !tbaa !9
  %3356 = icmp sle i64 %3354, %3355
  br i1 %3356, label %3357, label %3485

3357:                                             ; preds = %3353
  %3358 = load i64, ptr %66, align 8, !tbaa !9
  store i64 %3358, ptr %45, align 8, !tbaa !9
  %3359 = load i64, ptr %66, align 8, !tbaa !9
  store i64 %3359, ptr %46, align 8, !tbaa !9
  %3360 = load i64, ptr %66, align 8, !tbaa !9
  %3361 = load i64, ptr %61, align 8, !tbaa !9
  %3362 = load i64, ptr %38, align 8, !tbaa !9
  %3363 = mul nsw i64 %3361, %3362
  %3364 = add nsw i64 %3360, %3363
  store i64 %3364, ptr %47, align 8, !tbaa !9
  %3365 = getelementptr inbounds %struct.doublecomplex, ptr %62, i32 0, i32 0
  %3366 = load double, ptr %3365, align 8, !tbaa !16
  %3367 = load ptr, ptr %23, align 8, !tbaa !5
  %3368 = load i64, ptr %47, align 8, !tbaa !9
  %3369 = getelementptr inbounds %struct.doublecomplex, ptr %3367, i64 %3368
  %3370 = getelementptr inbounds %struct.doublecomplex, ptr %3369, i32 0, i32 0
  %3371 = load double, ptr %3370, align 8, !tbaa !16
  %3372 = getelementptr inbounds %struct.doublecomplex, ptr %62, i32 0, i32 1
  %3373 = load double, ptr %3372, align 8, !tbaa !20
  %3374 = load ptr, ptr %23, align 8, !tbaa !5
  %3375 = load i64, ptr %47, align 8, !tbaa !9
  %3376 = getelementptr inbounds %struct.doublecomplex, ptr %3374, i64 %3375
  %3377 = getelementptr inbounds %struct.doublecomplex, ptr %3376, i32 0, i32 1
  %3378 = load double, ptr %3377, align 8, !tbaa !20
  %3379 = fmul double %3373, %3378
  %3380 = fneg double %3379
  %3381 = call double @llvm.fmuladd.f64(double %3366, double %3371, double %3380)
  %3382 = getelementptr inbounds %struct.doublecomplex, ptr %57, i32 0, i32 0
  store double %3381, ptr %3382, align 8, !tbaa !16
  %3383 = getelementptr inbounds %struct.doublecomplex, ptr %62, i32 0, i32 0
  %3384 = load double, ptr %3383, align 8, !tbaa !16
  %3385 = load ptr, ptr %23, align 8, !tbaa !5
  %3386 = load i64, ptr %47, align 8, !tbaa !9
  %3387 = getelementptr inbounds %struct.doublecomplex, ptr %3385, i64 %3386
  %3388 = getelementptr inbounds %struct.doublecomplex, ptr %3387, i32 0, i32 1
  %3389 = load double, ptr %3388, align 8, !tbaa !20
  %3390 = getelementptr inbounds %struct.doublecomplex, ptr %62, i32 0, i32 1
  %3391 = load double, ptr %3390, align 8, !tbaa !20
  %3392 = load ptr, ptr %23, align 8, !tbaa !5
  %3393 = load i64, ptr %47, align 8, !tbaa !9
  %3394 = getelementptr inbounds %struct.doublecomplex, ptr %3392, i64 %3393
  %3395 = getelementptr inbounds %struct.doublecomplex, ptr %3394, i32 0, i32 0
  %3396 = load double, ptr %3395, align 8, !tbaa !16
  %3397 = fmul double %3391, %3396
  %3398 = call double @llvm.fmuladd.f64(double %3384, double %3389, double %3397)
  %3399 = getelementptr inbounds %struct.doublecomplex, ptr %57, i32 0, i32 1
  store double %3398, ptr %3399, align 8, !tbaa !20
  %3400 = load ptr, ptr %33, align 8, !tbaa !5
  %3401 = load i64, ptr %46, align 8, !tbaa !9
  %3402 = getelementptr inbounds %struct.doublecomplex, ptr %3400, i64 %3401
  %3403 = getelementptr inbounds %struct.doublecomplex, ptr %3402, i32 0, i32 0
  %3404 = load double, ptr %3403, align 8, !tbaa !16
  %3405 = getelementptr inbounds %struct.doublecomplex, ptr %57, i32 0, i32 0
  %3406 = load double, ptr %3405, align 8, !tbaa !16
  %3407 = fadd double %3404, %3406
  %3408 = getelementptr inbounds %struct.doublecomplex, ptr %56, i32 0, i32 0
  store double %3407, ptr %3408, align 8, !tbaa !16
  %3409 = load ptr, ptr %33, align 8, !tbaa !5
  %3410 = load i64, ptr %46, align 8, !tbaa !9
  %3411 = getelementptr inbounds %struct.doublecomplex, ptr %3409, i64 %3410
  %3412 = getelementptr inbounds %struct.doublecomplex, ptr %3411, i32 0, i32 1
  %3413 = load double, ptr %3412, align 8, !tbaa !20
  %3414 = getelementptr inbounds %struct.doublecomplex, ptr %57, i32 0, i32 1
  %3415 = load double, ptr %3414, align 8, !tbaa !20
  %3416 = fadd double %3413, %3415
  %3417 = getelementptr inbounds %struct.doublecomplex, ptr %56, i32 0, i32 1
  store double %3416, ptr %3417, align 8, !tbaa !20
  %3418 = load i64, ptr %66, align 8, !tbaa !9
  %3419 = load i64, ptr %61, align 8, !tbaa !9
  %3420 = load i64, ptr %36, align 8, !tbaa !9
  %3421 = mul nsw i64 %3419, %3420
  %3422 = add nsw i64 %3418, %3421
  store i64 %3422, ptr %48, align 8, !tbaa !9
  %3423 = getelementptr inbounds %struct.doublecomplex, ptr %63, i32 0, i32 0
  %3424 = load double, ptr %3423, align 8, !tbaa !16
  %3425 = load ptr, ptr %25, align 8, !tbaa !5
  %3426 = load i64, ptr %48, align 8, !tbaa !9
  %3427 = getelementptr inbounds %struct.doublecomplex, ptr %3425, i64 %3426
  %3428 = getelementptr inbounds %struct.doublecomplex, ptr %3427, i32 0, i32 0
  %3429 = load double, ptr %3428, align 8, !tbaa !16
  %3430 = getelementptr inbounds %struct.doublecomplex, ptr %63, i32 0, i32 1
  %3431 = load double, ptr %3430, align 8, !tbaa !20
  %3432 = load ptr, ptr %25, align 8, !tbaa !5
  %3433 = load i64, ptr %48, align 8, !tbaa !9
  %3434 = getelementptr inbounds %struct.doublecomplex, ptr %3432, i64 %3433
  %3435 = getelementptr inbounds %struct.doublecomplex, ptr %3434, i32 0, i32 1
  %3436 = load double, ptr %3435, align 8, !tbaa !20
  %3437 = fmul double %3431, %3436
  %3438 = fneg double %3437
  %3439 = call double @llvm.fmuladd.f64(double %3424, double %3429, double %3438)
  %3440 = getelementptr inbounds %struct.doublecomplex, ptr %58, i32 0, i32 0
  store double %3439, ptr %3440, align 8, !tbaa !16
  %3441 = getelementptr inbounds %struct.doublecomplex, ptr %63, i32 0, i32 0
  %3442 = load double, ptr %3441, align 8, !tbaa !16
  %3443 = load ptr, ptr %25, align 8, !tbaa !5
  %3444 = load i64, ptr %48, align 8, !tbaa !9
  %3445 = getelementptr inbounds %struct.doublecomplex, ptr %3443, i64 %3444
  %3446 = getelementptr inbounds %struct.doublecomplex, ptr %3445, i32 0, i32 1
  %3447 = load double, ptr %3446, align 8, !tbaa !20
  %3448 = getelementptr inbounds %struct.doublecomplex, ptr %63, i32 0, i32 1
  %3449 = load double, ptr %3448, align 8, !tbaa !20
  %3450 = load ptr, ptr %25, align 8, !tbaa !5
  %3451 = load i64, ptr %48, align 8, !tbaa !9
  %3452 = getelementptr inbounds %struct.doublecomplex, ptr %3450, i64 %3451
  %3453 = getelementptr inbounds %struct.doublecomplex, ptr %3452, i32 0, i32 0
  %3454 = load double, ptr %3453, align 8, !tbaa !16
  %3455 = fmul double %3449, %3454
  %3456 = call double @llvm.fmuladd.f64(double %3442, double %3447, double %3455)
  %3457 = getelementptr inbounds %struct.doublecomplex, ptr %58, i32 0, i32 1
  store double %3456, ptr %3457, align 8, !tbaa !20
  %3458 = getelementptr inbounds %struct.doublecomplex, ptr %56, i32 0, i32 0
  %3459 = load double, ptr %3458, align 8, !tbaa !16
  %3460 = getelementptr inbounds %struct.doublecomplex, ptr %58, i32 0, i32 0
  %3461 = load double, ptr %3460, align 8, !tbaa !16
  %3462 = fsub double %3459, %3461
  %3463 = getelementptr inbounds %struct.doublecomplex, ptr %55, i32 0, i32 0
  store double %3462, ptr %3463, align 8, !tbaa !16
  %3464 = getelementptr inbounds %struct.doublecomplex, ptr %56, i32 0, i32 1
  %3465 = load double, ptr %3464, align 8, !tbaa !20
  %3466 = getelementptr inbounds %struct.doublecomplex, ptr %58, i32 0, i32 1
  %3467 = load double, ptr %3466, align 8, !tbaa !20
  %3468 = fsub double %3465, %3467
  %3469 = getelementptr inbounds %struct.doublecomplex, ptr %55, i32 0, i32 1
  store double %3468, ptr %3469, align 8, !tbaa !20
  %3470 = getelementptr inbounds %struct.doublecomplex, ptr %55, i32 0, i32 0
  %3471 = load double, ptr %3470, align 8, !tbaa !16
  %3472 = load ptr, ptr %33, align 8, !tbaa !5
  %3473 = load i64, ptr %45, align 8, !tbaa !9
  %3474 = getelementptr inbounds %struct.doublecomplex, ptr %3472, i64 %3473
  %3475 = getelementptr inbounds %struct.doublecomplex, ptr %3474, i32 0, i32 0
  store double %3471, ptr %3475, align 8, !tbaa !16
  %3476 = getelementptr inbounds %struct.doublecomplex, ptr %55, i32 0, i32 1
  %3477 = load double, ptr %3476, align 8, !tbaa !20
  %3478 = load ptr, ptr %33, align 8, !tbaa !5
  %3479 = load i64, ptr %45, align 8, !tbaa !9
  %3480 = getelementptr inbounds %struct.doublecomplex, ptr %3478, i64 %3479
  %3481 = getelementptr inbounds %struct.doublecomplex, ptr %3480, i32 0, i32 1
  store double %3477, ptr %3481, align 8, !tbaa !20
  br label %3482

3482:                                             ; preds = %3357
  %3483 = load i64, ptr %66, align 8, !tbaa !9
  %3484 = add nsw i64 %3483, 1
  store i64 %3484, ptr %66, align 8, !tbaa !9
  br label %3353, !llvm.loop !36

3485:                                             ; preds = %3353
  br label %3486

3486:                                             ; preds = %3485, %3131
  br label %3487

3487:                                             ; preds = %3486
  %3488 = load i64, ptr %61, align 8, !tbaa !9
  %3489 = add nsw i64 %3488, -1
  store i64 %3489, ptr %61, align 8, !tbaa !9
  br label %2863, !llvm.loop !37

3490:                                             ; preds = %2863
  %3491 = load i64, ptr %95, align 8, !tbaa !9
  %3492 = icmp ne i64 %3491, 0
  br i1 %3492, label %3493, label %3509

3493:                                             ; preds = %3490
  %3494 = load ptr, ptr %22, align 8, !tbaa !5
  %3495 = load ptr, ptr %29, align 8, !tbaa !5
  %3496 = load i64, ptr %43, align 8, !tbaa !9
  %3497 = getelementptr inbounds %struct.doublecomplex, ptr %3495, i64 %3496
  %3498 = load ptr, ptr %30, align 8, !tbaa !5
  %3499 = load ptr, ptr %33, align 8, !tbaa !5
  %3500 = getelementptr inbounds %struct.doublecomplex, ptr %3499, i64 1
  %3501 = load ptr, ptr %33, align 8, !tbaa !5
  %3502 = load ptr, ptr %22, align 8, !tbaa !5
  %3503 = load i64, ptr %3502, align 8, !tbaa !9
  %3504 = add nsw i64 %3503, 1
  %3505 = getelementptr inbounds %struct.doublecomplex, ptr %3501, i64 %3504
  %3506 = call i32 @f2c_zgemv(ptr noundef @.str.9, ptr noundef %3494, ptr noundef %64, ptr noundef @c_b2, ptr noundef %3497, ptr noundef %3498, ptr noundef %3500, ptr noundef @c__1, ptr noundef @c_b1, ptr noundef %3505, ptr noundef @c__1)
  store i64 2, ptr %76, align 8, !tbaa !9
  %3507 = load ptr, ptr %22, align 8, !tbaa !5
  %3508 = load i64, ptr %3507, align 8, !tbaa !9
  store i64 %3508, ptr %74, align 8, !tbaa !9
  br label %3511

3509:                                             ; preds = %3490
  store i64 1, ptr %76, align 8, !tbaa !9
  %3510 = load i64, ptr %64, align 8, !tbaa !9
  store i64 %3510, ptr %74, align 8, !tbaa !9
  br label %3511

3511:                                             ; preds = %3509, %3493
  store double 0.000000e+00, ptr %80, align 8, !tbaa !14
  %3512 = load i64, ptr %74, align 8, !tbaa !9
  store i64 %3512, ptr %44, align 8, !tbaa !9
  store i64 1, ptr %66, align 8, !tbaa !9
  br label %3513

3513:                                             ; preds = %3569, %3511
  %3514 = load i64, ptr %66, align 8, !tbaa !9
  %3515 = load i64, ptr %44, align 8, !tbaa !9
  %3516 = icmp sle i64 %3514, %3515
  br i1 %3516, label %3517, label %3572

3517:                                             ; preds = %3513
  %3518 = load i64, ptr %76, align 8, !tbaa !9
  %3519 = sub nsw i64 %3518, 1
  %3520 = load ptr, ptr %22, align 8, !tbaa !5
  %3521 = load i64, ptr %3520, align 8, !tbaa !9
  %3522 = mul nsw i64 %3519, %3521
  %3523 = load i64, ptr %66, align 8, !tbaa !9
  %3524 = add nsw i64 %3522, %3523
  store i64 %3524, ptr %45, align 8, !tbaa !9
  %3525 = load double, ptr %80, align 8, !tbaa !14
  store double %3525, ptr %51, align 8, !tbaa !14
  %3526 = load ptr, ptr %33, align 8, !tbaa !5
  %3527 = load i64, ptr %45, align 8, !tbaa !9
  %3528 = getelementptr inbounds %struct.doublecomplex, ptr %3526, i64 %3527
  %3529 = getelementptr inbounds %struct.doublecomplex, ptr %3528, i32 0, i32 0
  %3530 = load double, ptr %3529, align 8, !tbaa !16
  store double %3530, ptr %49, align 8, !tbaa !14
  %3531 = load double, ptr %49, align 8, !tbaa !14
  %3532 = fcmp oge double %3531, 0.000000e+00
  br i1 %3532, label %3533, label %3535

3533:                                             ; preds = %3517
  %3534 = load double, ptr %49, align 8, !tbaa !14
  br label %3538

3535:                                             ; preds = %3517
  %3536 = load double, ptr %49, align 8, !tbaa !14
  %3537 = fneg double %3536
  br label %3538

3538:                                             ; preds = %3535, %3533
  %3539 = phi double [ %3534, %3533 ], [ %3537, %3535 ]
  %3540 = load ptr, ptr %33, align 8, !tbaa !5
  %3541 = load i64, ptr %76, align 8, !tbaa !9
  %3542 = sub nsw i64 %3541, 1
  %3543 = load ptr, ptr %22, align 8, !tbaa !5
  %3544 = load i64, ptr %3543, align 8, !tbaa !9
  %3545 = mul nsw i64 %3542, %3544
  %3546 = load i64, ptr %66, align 8, !tbaa !9
  %3547 = add nsw i64 %3545, %3546
  %3548 = getelementptr inbounds %struct.doublecomplex, ptr %3540, i64 %3547
  %3549 = call double @d_imag(ptr noundef %3548)
  store double %3549, ptr %50, align 8, !tbaa !14
  %3550 = load double, ptr %50, align 8, !tbaa !14
  %3551 = fcmp oge double %3550, 0.000000e+00
  br i1 %3551, label %3552, label %3554

3552:                                             ; preds = %3538
  %3553 = load double, ptr %50, align 8, !tbaa !14
  br label %3557

3554:                                             ; preds = %3538
  %3555 = load double, ptr %50, align 8, !tbaa !14
  %3556 = fneg double %3555
  br label %3557

3557:                                             ; preds = %3554, %3552
  %3558 = phi double [ %3553, %3552 ], [ %3556, %3554 ]
  %3559 = fadd double %3539, %3558
  store double %3559, ptr %52, align 8, !tbaa !14
  %3560 = load double, ptr %51, align 8, !tbaa !14
  %3561 = load double, ptr %52, align 8, !tbaa !14
  %3562 = fcmp oge double %3560, %3561
  br i1 %3562, label %3563, label %3565

3563:                                             ; preds = %3557
  %3564 = load double, ptr %51, align 8, !tbaa !14
  br label %3567

3565:                                             ; preds = %3557
  %3566 = load double, ptr %52, align 8, !tbaa !14
  br label %3567

3567:                                             ; preds = %3565, %3563
  %3568 = phi double [ %3564, %3563 ], [ %3566, %3565 ]
  store double %3568, ptr %80, align 8, !tbaa !14
  br label %3569

3569:                                             ; preds = %3567
  %3570 = load i64, ptr %66, align 8, !tbaa !9
  %3571 = add nsw i64 %3570, 1
  store i64 %3571, ptr %66, align 8, !tbaa !9
  br label %3513, !llvm.loop !38

3572:                                             ; preds = %3513
  %3573 = load double, ptr %80, align 8, !tbaa !14
  %3574 = load double, ptr %99, align 8, !tbaa !14
  %3575 = fcmp ogt double %3573, %3574
  br i1 %3575, label %3576, label %3629

3576:                                             ; preds = %3572
  %3577 = load double, ptr %80, align 8, !tbaa !14
  %3578 = fdiv double 1.000000e+00, %3577
  store double %3578, ptr %77, align 8, !tbaa !14
  %3579 = load i64, ptr %74, align 8, !tbaa !9
  store i64 %3579, ptr %44, align 8, !tbaa !9
  store i64 1, ptr %66, align 8, !tbaa !9
  br label %3580

3580:                                             ; preds = %3625, %3576
  %3581 = load i64, ptr %66, align 8, !tbaa !9
  %3582 = load i64, ptr %44, align 8, !tbaa !9
  %3583 = icmp sle i64 %3581, %3582
  br i1 %3583, label %3584, label %3628

3584:                                             ; preds = %3580
  %3585 = load i64, ptr %66, align 8, !tbaa !9
  %3586 = load i64, ptr %73, align 8, !tbaa !9
  %3587 = load i64, ptr %42, align 8, !tbaa !9
  %3588 = mul nsw i64 %3586, %3587
  %3589 = add nsw i64 %3585, %3588
  store i64 %3589, ptr %45, align 8, !tbaa !9
  %3590 = load i64, ptr %76, align 8, !tbaa !9
  %3591 = sub nsw i64 %3590, 1
  %3592 = load ptr, ptr %22, align 8, !tbaa !5
  %3593 = load i64, ptr %3592, align 8, !tbaa !9
  %3594 = mul nsw i64 %3591, %3593
  %3595 = load i64, ptr %66, align 8, !tbaa !9
  %3596 = add nsw i64 %3594, %3595
  store i64 %3596, ptr %46, align 8, !tbaa !9
  %3597 = load double, ptr %77, align 8, !tbaa !14
  %3598 = load ptr, ptr %33, align 8, !tbaa !5
  %3599 = load i64, ptr %46, align 8, !tbaa !9
  %3600 = getelementptr inbounds %struct.doublecomplex, ptr %3598, i64 %3599
  %3601 = getelementptr inbounds %struct.doublecomplex, ptr %3600, i32 0, i32 0
  %3602 = load double, ptr %3601, align 8, !tbaa !16
  %3603 = fmul double %3597, %3602
  %3604 = getelementptr inbounds %struct.doublecomplex, ptr %55, i32 0, i32 0
  store double %3603, ptr %3604, align 8, !tbaa !16
  %3605 = load double, ptr %77, align 8, !tbaa !14
  %3606 = load ptr, ptr %33, align 8, !tbaa !5
  %3607 = load i64, ptr %46, align 8, !tbaa !9
  %3608 = getelementptr inbounds %struct.doublecomplex, ptr %3606, i64 %3607
  %3609 = getelementptr inbounds %struct.doublecomplex, ptr %3608, i32 0, i32 1
  %3610 = load double, ptr %3609, align 8, !tbaa !20
  %3611 = fmul double %3605, %3610
  %3612 = getelementptr inbounds %struct.doublecomplex, ptr %55, i32 0, i32 1
  store double %3611, ptr %3612, align 8, !tbaa !20
  %3613 = getelementptr inbounds %struct.doublecomplex, ptr %55, i32 0, i32 0
  %3614 = load double, ptr %3613, align 8, !tbaa !16
  %3615 = load ptr, ptr %29, align 8, !tbaa !5
  %3616 = load i64, ptr %45, align 8, !tbaa !9
  %3617 = getelementptr inbounds %struct.doublecomplex, ptr %3615, i64 %3616
  %3618 = getelementptr inbounds %struct.doublecomplex, ptr %3617, i32 0, i32 0
  store double %3614, ptr %3618, align 8, !tbaa !16
  %3619 = getelementptr inbounds %struct.doublecomplex, ptr %55, i32 0, i32 1
  %3620 = load double, ptr %3619, align 8, !tbaa !20
  %3621 = load ptr, ptr %29, align 8, !tbaa !5
  %3622 = load i64, ptr %45, align 8, !tbaa !9
  %3623 = getelementptr inbounds %struct.doublecomplex, ptr %3621, i64 %3622
  %3624 = getelementptr inbounds %struct.doublecomplex, ptr %3623, i32 0, i32 1
  store double %3620, ptr %3624, align 8, !tbaa !20
  br label %3625

3625:                                             ; preds = %3584
  %3626 = load i64, ptr %66, align 8, !tbaa !9
  %3627 = add nsw i64 %3626, 1
  store i64 %3627, ptr %66, align 8, !tbaa !9
  br label %3580, !llvm.loop !39

3628:                                             ; preds = %3580
  br label %3630

3629:                                             ; preds = %3572
  store i64 0, ptr %74, align 8, !tbaa !9
  br label %3630

3630:                                             ; preds = %3629, %3628
  %3631 = load ptr, ptr %22, align 8, !tbaa !5
  %3632 = load i64, ptr %3631, align 8, !tbaa !9
  store i64 %3632, ptr %44, align 8, !tbaa !9
  %3633 = load i64, ptr %74, align 8, !tbaa !9
  %3634 = add nsw i64 %3633, 1
  store i64 %3634, ptr %66, align 8, !tbaa !9
  br label %3635

3635:                                             ; preds = %3653, %3630
  %3636 = load i64, ptr %66, align 8, !tbaa !9
  %3637 = load i64, ptr %44, align 8, !tbaa !9
  %3638 = icmp sle i64 %3636, %3637
  br i1 %3638, label %3639, label %3656

3639:                                             ; preds = %3635
  %3640 = load i64, ptr %66, align 8, !tbaa !9
  %3641 = load i64, ptr %73, align 8, !tbaa !9
  %3642 = load i64, ptr %42, align 8, !tbaa !9
  %3643 = mul nsw i64 %3641, %3642
  %3644 = add nsw i64 %3640, %3643
  store i64 %3644, ptr %45, align 8, !tbaa !9
  %3645 = load ptr, ptr %29, align 8, !tbaa !5
  %3646 = load i64, ptr %45, align 8, !tbaa !9
  %3647 = getelementptr inbounds %struct.doublecomplex, ptr %3645, i64 %3646
  %3648 = getelementptr inbounds %struct.doublecomplex, ptr %3647, i32 0, i32 0
  store double 0.000000e+00, ptr %3648, align 8, !tbaa !16
  %3649 = load ptr, ptr %29, align 8, !tbaa !5
  %3650 = load i64, ptr %45, align 8, !tbaa !9
  %3651 = getelementptr inbounds %struct.doublecomplex, ptr %3649, i64 %3650
  %3652 = getelementptr inbounds %struct.doublecomplex, ptr %3651, i32 0, i32 1
  store double 0.000000e+00, ptr %3652, align 8, !tbaa !20
  br label %3653

3653:                                             ; preds = %3639
  %3654 = load i64, ptr %66, align 8, !tbaa !9
  %3655 = add nsw i64 %3654, 1
  store i64 %3655, ptr %66, align 8, !tbaa !9
  br label %3635, !llvm.loop !40

3656:                                             ; preds = %3635
  br label %3657

3657:                                             ; preds = %3656, %2130
  br label %3658

3658:                                             ; preds = %3657, %2221
  br label %3659

3659:                                             ; preds = %3658
  %3660 = load i64, ptr %64, align 8, !tbaa !9
  %3661 = add nsw i64 %3660, -1
  store i64 %3661, ptr %64, align 8, !tbaa !9
  br label %2118, !llvm.loop !41

3662:                                             ; preds = %2118
  br label %3663

3663:                                             ; preds = %3662, %2110
  store i32 0, ptr %18, align 4
  store i32 1, ptr %103, align 4
  br label %3664

3664:                                             ; preds = %3663, %346, %335, %232
  call void @llvm.lifetime.end.p0(i64 8, ptr %102) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %101) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %100) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %99) #4
  call void @llvm.lifetime.end.p0(i64 16, ptr %98) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %97) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %96) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %95) #4
  call void @llvm.lifetime.end.p0(i64 16, ptr %94) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %93) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %92) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %91) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %90) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %89) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %88) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %87) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %86) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %85) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %84) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %83) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %82) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %81) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %80) #4
  call void @llvm.lifetime.end.p0(i64 16, ptr %79) #4
  call void @llvm.lifetime.end.p0(i64 16, ptr %78) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %77) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %76) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %75) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %74) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %73) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %72) #4
  call void @llvm.lifetime.end.p0(i64 16, ptr %71) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %70) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %69) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %68) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %67) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %66) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %65) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %64) #4
  call void @llvm.lifetime.end.p0(i64 16, ptr %63) #4
  call void @llvm.lifetime.end.p0(i64 16, ptr %62) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %61) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %60) #4
  call void @llvm.lifetime.end.p0(i64 16, ptr %59) #4
  call void @llvm.lifetime.end.p0(i64 16, ptr %58) #4
  call void @llvm.lifetime.end.p0(i64 16, ptr %57) #4
  call void @llvm.lifetime.end.p0(i64 16, ptr %56) #4
  call void @llvm.lifetime.end.p0(i64 16, ptr %55) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %54) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %53) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %52) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %51) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %50) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %49) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %48) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %47) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %46) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %45) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %44) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %43) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %42) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %41) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %40) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %39) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %38) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %37) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %36) #4
  %3665 = load i32, ptr %18, align 4
  ret i32 %3665
}

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

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

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

declare double @d_imag(ptr noundef) #2

declare double @dlamch_(ptr noundef) #2

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

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

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

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

declare i32 @f2c_zgemv(ptr noundef, ptr noundef, 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 willreturn memory(argmem: readwrite)
declare void @llvm.lifetime.end.p0(i64 immarg, ptr nocapture) #1

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

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

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


; 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
@.str.1 = external hidden unnamed_addr constant [2 x i8], align 1
@.str.2 = external hidden unnamed_addr constant [2 x i8], align 1
@.str.3 = external hidden unnamed_addr constant [2 x i8], align 1
@.str.4 = external hidden unnamed_addr constant [2 x i8], align 1
@.str.5 = external hidden unnamed_addr constant [7 x i8], align 1
@.str.6 = external hidden unnamed_addr constant [13 x i8], align 1
@.str.7 = external hidden unnamed_addr constant [8 x i8], align 1
@.str.8 = external hidden unnamed_addr constant [5 x i8], align 1
@.str.9 = external hidden unnamed_addr constant [2 x i8], align 1
@c_b2 = external hidden global %struct.doublecomplex, align 8
@c__1 = external hidden global i64, align 8
@c_b1 = external hidden global %struct.doublecomplex, align 8

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

49:                                               ; preds = %17
  %50 = tail call i64 @lsame_(ptr noundef %1, ptr noundef nonnull @.str.1) #6
  %.not1102 = icmp eq i64 %50, 0
  br i1 %.not1102, label %51, label %53

51:                                               ; preds = %49
  %52 = tail call i64 @lsame_(ptr noundef %1, ptr noundef nonnull @.str.2) #6
  %.not1103 = icmp eq i64 %52, 0
  br label %53

53:                                               ; preds = %51, %49, %17
  %.not1108 = phi i1 [ false, %17 ], [ true, %49 ], [ false, %51 ]
  %.not1124 = phi i1 [ true, %17 ], [ true, %49 ], [ false, %51 ]
  %54 = phi i1 [ false, %17 ], [ false, %49 ], [ %.not1103, %51 ]
  %55 = tail call i64 @lsame_(ptr noundef %0, ptr noundef nonnull @.str.3) #6
  %.not1104.not = icmp eq i64 %55, 0
  br i1 %.not1104.not, label %56, label %.thread

56:                                               ; preds = %53
  %57 = tail call i64 @lsame_(ptr noundef %0, ptr noundef nonnull @.str.4) #6
  %.not1105 = icmp eq i64 %57, 0
  br i1 %.not1105, label %58, label %.thread

.thread:                                          ; preds = %53, %56
  store i64 0, ptr %16, align 8, !tbaa !5
  br label %60

58:                                               ; preds = %56
  %59 = tail call i64 @lsame_(ptr noundef %0, ptr noundef nonnull @.str.2) #6
  %.not1106 = icmp eq i64 %59, 0
  store i64 0, ptr %16, align 8, !tbaa !5
  br i1 %.not1106, label %.thread1158, label %60

60:                                               ; preds = %.thread, %58
  %.not11141155 = phi i1 [ %.not1104.not, %.thread ], [ false, %58 ]
  br i1 %54, label %.thread1158, label %61

61:                                               ; preds = %60
  %62 = load i64, ptr %3, align 8, !tbaa !5
  %63 = icmp slt i64 %62, 0
  br i1 %63, label %.thread1158, label %64

64:                                               ; preds = %61
  %65 = load i64, ptr %5, align 8, !tbaa !5
  %spec.select = tail call i64 @llvm.umax.i64(i64 %62, i64 1)
  %66 = icmp slt i64 %65, %spec.select
  br i1 %66, label %.thread1158, label %67

67:                                               ; preds = %64
  %68 = load i64, ptr %7, align 8, !tbaa !5
  %69 = icmp slt i64 %68, %spec.select
  br i1 %69, label %.thread1158, label %70

.thread1158:                                      ; preds = %67, %64, %61, %60, %58
  %.sink = phi i64 [ -1, %58 ], [ -2, %60 ], [ -4, %61 ], [ -6, %64 ], [ -8, %67 ]
  %.neg = phi i64 [ 1, %58 ], [ 2, %60 ], [ 4, %61 ], [ 6, %64 ], [ 8, %67 ]
  store i64 %.sink, ptr %16, align 8, !tbaa !5
  br label %.loopexit1191.sink.split

70:                                               ; preds = %67
  br i1 %.not1108, label %71, label %.loopexit1196

71:                                               ; preds = %70
  %.not11091197 = icmp eq i64 %62, 0
  br i1 %.not11091197, label %.loopexit1196.thread, label %.lr.ph.preheader

.lr.ph.preheader:                                 ; preds = %71
  %min.iters.check = icmp ult i64 %62, 4
  br i1 %min.iters.check, label %.lr.ph.preheader1893, label %vector.ph

.lr.ph.preheader1893:                             ; preds = %middle.block, %.lr.ph.preheader
  %.010821199.ph = phi i64 [ 0, %.lr.ph.preheader ], [ %81, %middle.block ]
  %.010851198.ph = phi i64 [ 1, %.lr.ph.preheader ], [ %ind.end, %middle.block ]
  br label %.lr.ph

vector.ph:                                        ; preds = %.lr.ph.preheader
  %n.vec = and i64 %62, 9223372036854775804
  %ind.end = or disjoint i64 %n.vec, 1
  br label %vector.body

vector.body:                                      ; preds = %vector.body, %vector.ph
  %index = phi i64 [ 0, %vector.ph ], [ %index.next, %vector.body ]
  %vec.phi = phi <2 x i64> [ zeroinitializer, %vector.ph ], [ %78, %vector.body ]
  %vec.phi1535 = phi <2 x i64> [ zeroinitializer, %vector.ph ], [ %79, %vector.body ]
  %72 = getelementptr i64, ptr %2, i64 %index
  %73 = getelementptr inbounds i8, ptr %72, i64 16
  %wide.load = load <2 x i64>, ptr %72, align 8, !tbaa !5
  %wide.load1536 = load <2 x i64>, ptr %73, align 8, !tbaa !5
  %74 = icmp ne <2 x i64> %wide.load, zeroinitializer
  %75 = icmp ne <2 x i64> %wide.load1536, zeroinitializer
  %76 = zext <2 x i1> %74 to <2 x i64>
  %77 = zext <2 x i1> %75 to <2 x i64>
  %78 = add <2 x i64> %vec.phi, %76
  %79 = add <2 x i64> %vec.phi1535, %77
  %index.next = add nuw i64 %index, 4
  %80 = icmp eq i64 %index.next, %n.vec
  br i1 %80, label %middle.block, label %vector.body, !llvm.loop !9

middle.block:                                     ; preds = %vector.body
  %bin.rdx = add <2 x i64> %79, %78
  %81 = tail call i64 @llvm.vector.reduce.add.v2i64(<2 x i64> %bin.rdx)
  %cmp.n = icmp eq i64 %62, %n.vec
  br i1 %cmp.n, label %.loopexit1196.thread1444, label %.lr.ph.preheader1893

.loopexit1196.thread:                             ; preds = %71
  store i64 %62, ptr %18, align 8, !tbaa !5
  br label %._crit_edge.thread

.lr.ph:                                           ; preds = %.lr.ph.preheader1893, %.lr.ph
  %.010821199 = phi i64 [ %spec.select1149, %.lr.ph ], [ %.010821199.ph, %.lr.ph.preheader1893 ]
  %.010851198 = phi i64 [ %85, %.lr.ph ], [ %.010851198.ph, %.lr.ph.preheader1893 ]
  %82 = getelementptr inbounds i64, ptr %31, i64 %.010851198
  %83 = load i64, ptr %82, align 8, !tbaa !5
  %.not1110 = icmp ne i64 %83, 0
  %84 = zext i1 %.not1110 to i64
  %spec.select1149 = add nuw nsw i64 %.010821199, %84
  %85 = add nuw i64 %.010851198, 1
  %exitcond.not = icmp eq i64 %.010851198, %62
  br i1 %exitcond.not, label %.loopexit1196.thread1444, label %.lr.ph, !llvm.loop !13

.loopexit1196.thread1444:                         ; preds = %.lr.ph, %middle.block
  %spec.select1149.lcssa = phi i64 [ %81, %middle.block ], [ %spec.select1149, %.lr.ph ]
  store i64 %62, ptr %18, align 8, !tbaa !5
  br label %.lr.ph1203.preheader

.loopexit1196:                                    ; preds = %70
  store i64 %62, ptr %18, align 8, !tbaa !5
  %.not11111200 = icmp eq i64 %62, 0
  br i1 %.not11111200, label %._crit_edge.thread, label %.lr.ph1203.preheader

.lr.ph1203.preheader:                             ; preds = %.loopexit1196.thread1444, %.loopexit1196
  %.210841447 = phi i64 [ %spec.select1149.lcssa, %.loopexit1196.thread1444 ], [ %62, %.loopexit1196 ]
  br label %.lr.ph1203

.lr.ph1203:                                       ; preds = %.lr.ph1203.preheader, %.lr.ph1203
  %.010511202 = phi i64 [ %.11052, %.lr.ph1203 ], [ 0, %.lr.ph1203.preheader ]
  %.110861201 = phi i64 [ %90, %.lr.ph1203 ], [ 1, %.lr.ph1203.preheader ]
  %86 = mul i64 %.110861201, %37
  %87 = getelementptr inbounds %struct.doublecomplex, ptr %39, i64 %86
  %88 = tail call double @d_imag(ptr noundef %87) #6
  %89 = fcmp une double %88, 0.000000e+00
  %.11052 = select i1 %89, i64 1, i64 %.010511202
  %90 = add nuw i64 %.110861201, 1
  %exitcond1419.not = icmp eq i64 %.110861201, %62
  br i1 %exitcond1419.not, label %._crit_edge, label %.lr.ph1203, !llvm.loop !14

._crit_edge:                                      ; preds = %.lr.ph1203
  %.not1112 = icmp eq i64 %.11052, 0
  br i1 %.not1112, label %._crit_edge.thread, label %.thread1170.sink.split

._crit_edge.thread:                               ; preds = %.loopexit1196.thread, %.loopexit1196, %._crit_edge
  %.2108414431451 = phi i64 [ %.210841447, %._crit_edge ], [ 0, %.loopexit1196.thread ], [ %62, %.loopexit1196 ]
  %.pr1163 = load i64, ptr %9, align 8, !tbaa !5
  br i1 %.not1104.not, label %91, label %thread-pre-split1162

91:                                               ; preds = %._crit_edge.thread
  %92 = load i64, ptr %3, align 8, !tbaa !5
  %93 = icmp slt i64 %.pr1163, %92
  %94 = icmp slt i64 %.pr1163, 1
  %or.cond = or i1 %93, %94
  br i1 %or.cond, label %.thread1170.sink.split, label %95

thread-pre-split1162:                             ; preds = %._crit_edge.thread
  %.old = icmp slt i64 %.pr1163, 1
  br i1 %.old, label %.thread1170.sink.split, label %95

95:                                               ; preds = %91, %thread-pre-split1162
  %.pr1165 = load i64, ptr %11, align 8, !tbaa !5
  br i1 %.not11141155, label %thread-pre-split1164, label %96

96:                                               ; preds = %95
  %97 = load i64, ptr %3, align 8, !tbaa !5
  %98 = icmp slt i64 %.pr1165, %97
  %99 = icmp slt i64 %.pr1165, 1
  %or.cond1831 = or i1 %98, %99
  br i1 %or.cond1831, label %.thread1170.sink.split, label %100

thread-pre-split1164:                             ; preds = %95
  %.old1830 = icmp slt i64 %.pr1165, 1
  br i1 %.old1830, label %.thread1170.sink.split, label %100

100:                                              ; preds = %96, %thread-pre-split1164
  %101 = load i64, ptr %12, align 8, !tbaa !5
  %102 = icmp slt i64 %101, %.2108414431451
  br i1 %102, label %.thread1170.sink.split, label %103

103:                                              ; preds = %100
  %.pr1167 = load i64, ptr %16, align 8, !tbaa !5
  %.not1115 = icmp eq i64 %.pr1167, 0
  br i1 %.not1115, label %106, label %.thread1170

.thread1170.sink.split:                           ; preds = %100, %96, %thread-pre-split1164, %91, %thread-pre-split1162, %._crit_edge
  %.sink1504 = phi i64 [ -7, %._crit_edge ], [ -10, %thread-pre-split1162 ], [ -10, %91 ], [ -12, %thread-pre-split1164 ], [ -12, %96 ], [ -13, %100 ]
  store i64 %.sink1504, ptr %16, align 8, !tbaa !5
  br label %.thread1170

.thread1170:                                      ; preds = %.thread1170.sink.split, %103
  %104 = phi i64 [ %.pr1167, %103 ], [ %.sink1504, %.thread1170.sink.split ]
  %105 = sub nsw i64 0, %104
  br label %.loopexit1191.sink.split

106:                                              ; preds = %103
  store i64 %.2108414431451, ptr %13, align 8, !tbaa !5
  %107 = load i64, ptr %3, align 8, !tbaa !5
  %108 = icmp eq i64 %107, 0
  br i1 %108, label %.loopexit1191, label %109

109:                                              ; preds = %106
  %110 = tail call double @dlamch_(ptr noundef nonnull @.str.6) #6
  store double %110, ptr %30, align 8, !tbaa !15
  %111 = fdiv double 1.000000e+00, %110
  store double %111, ptr %26, align 8, !tbaa !15
  %112 = call i32 @dlabad_(ptr noundef nonnull %30, ptr noundef nonnull %26) #6
  %113 = call double @dlamch_(ptr noundef nonnull @.str.7) #6
  %114 = call double @dlamch_(ptr noundef nonnull @.str.8) #6
  %115 = fmul double %113, %114
  %116 = load double, ptr %30, align 8, !tbaa !15
  %117 = load i64, ptr %3, align 8, !tbaa !5
  %118 = sitofp i64 %117 to double
  %119 = fmul double %116, %118
  %120 = fdiv double %119, %115
  %121 = fdiv double 1.000000e+00, %120
  store double %121, ptr %26, align 8, !tbaa !15
  %122 = fdiv double 1.000000e+00, %119
  store i64 %33, ptr %18, align 8, !tbaa !5
  %123 = load double, ptr %4, align 8, !tbaa !17
  %124 = call double @d_imag(ptr noundef nonnull %4) #6
  store i64 %37, ptr %18, align 8, !tbaa !5
  %125 = load double, ptr %6, align 8, !tbaa !17
  %126 = call double @d_imag(ptr noundef nonnull %6) #6
  %127 = insertelement <2 x double> poison, double %123, i64 0
  %128 = insertelement <2 x double> %127, double %125, i64 1
  %129 = fcmp oge <2 x double> %128, zeroinitializer
  %130 = fneg <2 x double> %128
  %131 = select <2 x i1> %129, <2 x double> %128, <2 x double> %130
  %132 = insertelement <2 x double> poison, double %124, i64 0
  %133 = insertelement <2 x double> %132, double %126, i64 1
  %134 = fcmp oge <2 x double> %133, zeroinitializer
  %135 = fneg <2 x double> %133
  %136 = select <2 x i1> %134, <2 x double> %133, <2 x double> %135
  %137 = fadd <2 x double> %131, %136
  store double 0.000000e+00, ptr %15, align 8, !tbaa !15
  %138 = load i64, ptr %3, align 8, !tbaa !5
  %139 = getelementptr double, ptr %15, i64 %138
  store double 0.000000e+00, ptr %139, align 8, !tbaa !15
  store i64 %138, ptr %18, align 8, !tbaa !5
  %.not11161214 = icmp slt i64 %138, 2
  br i1 %.not11161214, label %._crit_edge1220, label %.lr.ph1208

.lr.ph1208:                                       ; preds = %109, %._crit_edge1209
  %.210871215 = phi i64 [ %203, %._crit_edge1209 ], [ 2, %109 ]
  %140 = phi <2 x double> [ %202, %._crit_edge1209 ], [ %137, %109 ]
  %141 = getelementptr double, ptr %47, i64 %.210871215
  store double 0.000000e+00, ptr %141, align 8, !tbaa !15
  %142 = load i64, ptr %3, align 8, !tbaa !5
  %143 = getelementptr double, ptr %47, i64 %142
  %144 = getelementptr double, ptr %143, i64 %.210871215
  store double 0.000000e+00, ptr %144, align 8, !tbaa !15
  %145 = add nsw i64 %.210871215, -1
  store i64 %145, ptr %19, align 8, !tbaa !5
  %146 = mul nsw i64 %.210871215, %32
  %invariant.gep1210 = getelementptr %struct.doublecomplex, ptr %35, i64 %146
  %147 = mul nsw i64 %.210871215, %36
  %invariant.gep1212 = getelementptr %struct.doublecomplex, ptr %39, i64 %147
  br label %148

148:                                              ; preds = %.lr.ph1208, %148
  %.010901206 = phi i64 [ 1, %.lr.ph1208 ], [ %172, %148 ]
  %gep1211 = getelementptr %struct.doublecomplex, ptr %invariant.gep1210, i64 %.010901206
  %149 = load double, ptr %gep1211, align 8, !tbaa !17
  %150 = fcmp oge double %149, 0.000000e+00
  %151 = fneg double %149
  %152 = select i1 %150, double %149, double %151
  %153 = call double @d_imag(ptr noundef nonnull %gep1211) #6
  %154 = fcmp oge double %153, 0.000000e+00
  %155 = fneg double %153
  %156 = select i1 %154, double %153, double %155
  %157 = fadd double %152, %156
  %158 = load double, ptr %141, align 8, !tbaa !15
  %159 = fadd double %158, %157
  store double %159, ptr %141, align 8, !tbaa !15
  %gep1213 = getelementptr %struct.doublecomplex, ptr %invariant.gep1212, i64 %.010901206
  %160 = load double, ptr %gep1213, align 8, !tbaa !17
  %161 = fcmp oge double %160, 0.000000e+00
  %162 = fneg double %160
  %163 = select i1 %161, double %160, double %162
  %164 = call double @d_imag(ptr noundef nonnull %gep1213) #6
  %165 = fcmp oge double %164, 0.000000e+00
  %166 = fneg double %164
  %167 = select i1 %165, double %164, double %166
  %168 = fadd double %163, %167
  %169 = load i64, ptr %3, align 8, !tbaa !5
  %gep = getelementptr double, ptr %141, i64 %169
  %170 = load double, ptr %gep, align 8, !tbaa !15
  %171 = fadd double %170, %168
  store double %171, ptr %gep, align 8, !tbaa !15
  %172 = add nuw nsw i64 %.010901206, 1
  %173 = load i64, ptr %19, align 8, !tbaa !5
  %.not1144.not = icmp slt i64 %.010901206, %173
  br i1 %.not1144.not, label %148, label %._crit_edge1209, !llvm.loop !19

._crit_edge1209:                                  ; preds = %148
  %174 = mul i64 %.210871215, %33
  %175 = load double, ptr %141, align 8, !tbaa !15
  %176 = getelementptr inbounds %struct.doublecomplex, ptr %35, i64 %174
  %177 = load double, ptr %176, align 8, !tbaa !17
  %178 = call double @d_imag(ptr noundef nonnull %176) #6
  %179 = mul i64 %.210871215, %37
  store i64 %179, ptr %19, align 8, !tbaa !5
  %180 = load i64, ptr %3, align 8, !tbaa !5
  %181 = getelementptr double, ptr %47, i64 %180
  %182 = getelementptr double, ptr %181, i64 %.210871215
  %183 = load double, ptr %182, align 8, !tbaa !15
  %184 = getelementptr inbounds %struct.doublecomplex, ptr %39, i64 %179
  %185 = load double, ptr %184, align 8, !tbaa !17
  %186 = call double @d_imag(ptr noundef nonnull %184) #6
  %187 = insertelement <2 x double> poison, double %177, i64 0
  %188 = insertelement <2 x double> %187, double %185, i64 1
  %189 = fcmp oge <2 x double> %188, zeroinitializer
  %190 = fneg <2 x double> %188
  %191 = select <2 x i1> %189, <2 x double> %188, <2 x double> %190
  %192 = insertelement <2 x double> poison, double %178, i64 0
  %193 = insertelement <2 x double> %192, double %186, i64 1
  %194 = fcmp oge <2 x double> %193, zeroinitializer
  %195 = fneg <2 x double> %193
  %196 = select <2 x i1> %194, <2 x double> %193, <2 x double> %195
  %197 = fadd <2 x double> %191, %196
  %198 = insertelement <2 x double> poison, double %175, i64 0
  %199 = insertelement <2 x double> %198, double %183, i64 1
  %200 = fadd <2 x double> %199, %197
  %201 = fcmp oge <2 x double> %140, %200
  %202 = select <2 x i1> %201, <2 x double> %140, <2 x double> %200
  %203 = add nuw nsw i64 %.210871215, 1
  %204 = load i64, ptr %18, align 8, !tbaa !5
  %.not1116.not = icmp slt i64 %.210871215, %204
  br i1 %.not1116.not, label %.lr.ph1208, label %._crit_edge1220, !llvm.loop !20

._crit_edge1220:                                  ; preds = %._crit_edge1209, %109
  %205 = phi <2 x double> [ %137, %109 ], [ %202, %._crit_edge1209 ]
  %206 = load double, ptr %30, align 8
  %207 = insertelement <2 x double> poison, double %206, i64 0
  %208 = shufflevector <2 x double> %207, <2 x double> poison, <2 x i32> zeroinitializer
  %209 = fcmp oge <2 x double> %205, %208
  %210 = select <2 x i1> %209, <2 x double> %205, <2 x double> %208
  %211 = fdiv <2 x double> <double 1.000000e+00, double 1.000000e+00>, %210
  br i1 %.not1104.not, label %212, label %.loopexit1195

212:                                              ; preds = %._crit_edge1220
  %213 = load i64, ptr %3, align 8, !tbaa !5
  store i64 %213, ptr %18, align 8, !tbaa !5
  %invariant.gep1293 = getelementptr i8, ptr %42, i64 16
  store i64 1, ptr %25, align 8, !tbaa !5
  %.not11181295 = icmp slt i64 %213, 1
  br i1 %.not11181295, label %.loopexit1195, label %.lr.ph1299

.lr.ph1299:                                       ; preds = %212
  %214 = add i64 %40, 1
  %215 = getelementptr inbounds i8, ptr %20, i64 8
  %216 = getelementptr inbounds i8, ptr %28, i64 8
  %217 = getelementptr inbounds i8, ptr %22, i64 8
  %218 = getelementptr inbounds i8, ptr %23, i64 8
  %219 = getelementptr inbounds i8, ptr %27, i64 8
  %220 = getelementptr inbounds i8, ptr %24, i64 8
  %221 = shl i64 %40, 4
  %scevgep1537 = getelementptr i8, ptr %8, i64 -16
  %222 = shl i64 %40, 4
  %scevgep1539 = getelementptr i8, ptr %8, i64 -8
  %scevgep1541 = getelementptr i8, ptr %14, i64 -16
  %scevgep1543 = getelementptr i8, ptr %14, i64 -8
  %scevgep1545 = getelementptr i8, ptr %8, i64 -8
  %scevgep1548 = getelementptr i8, ptr %14, i64 -8
  %scevgep1568 = getelementptr i8, ptr %14, i64 -16
  %scevgep1570 = getelementptr i8, ptr %14, i64 -8
  %scevgep1595 = getelementptr i8, ptr %14, i64 -16
  %scevgep1600 = getelementptr i8, ptr %14, i64 -8
  %223 = extractelement <2 x double> %205, i64 0
  %224 = extractelement <2 x double> %205, i64 1
  %225 = extractelement <2 x double> %211, i64 0
  %226 = extractelement <2 x double> %211, i64 1
  %227 = insertelement <2 x double> poison, double %115, i64 0
  %228 = shufflevector <2 x double> %227, <2 x double> poison, <2 x i32> zeroinitializer
  %229 = shufflevector <2 x double> %211, <2 x double> poison, <2 x i32> <i32 1, i32 1>
  %230 = shufflevector <2 x double> %211, <2 x double> poison, <2 x i32> zeroinitializer
  br label %231

231:                                              ; preds = %.lr.ph1299, %.loopexit1193
  %.010711297 = phi i64 [ 0, %.lr.ph1299 ], [ %.11072, %.loopexit1193 ]
  %storemerge1296 = phi i64 [ 1, %.lr.ph1299 ], [ %743, %.loopexit1193 ]
  br i1 %.not1108, label %232, label %.thread1173

232:                                              ; preds = %231
  %233 = getelementptr inbounds i64, ptr %31, i64 %storemerge1296
  %234 = load i64, ptr %233, align 8, !tbaa !5
  %.not1133 = icmp eq i64 %234, 0
  br i1 %.not1133, label %.loopexit1193, label %.thread1173

.thread1173:                                      ; preds = %231, %232
  %235 = add nsw i64 %.010711297, 1
  %236 = mul i64 %storemerge1296, %33
  store i64 %236, ptr %19, align 8, !tbaa !5
  %237 = getelementptr inbounds %struct.doublecomplex, ptr %35, i64 %236
  %238 = load double, ptr %237, align 8, !tbaa !17
  %239 = call double @d_imag(ptr noundef nonnull %237) #6
  %240 = insertelement <2 x double> poison, double %238, i64 0
  %241 = insertelement <2 x double> %240, double %239, i64 1
  %242 = fcmp oge <2 x double> %241, zeroinitializer
  %243 = fneg <2 x double> %241
  %244 = select <2 x i1> %242, <2 x double> %241, <2 x double> %243
  %shift = shufflevector <2 x double> %244, <2 x double> poison, <2 x i32> <i32 1, i32 poison>
  %245 = fadd <2 x double> %244, %shift
  %246 = extractelement <2 x double> %245, i64 0
  %247 = load double, ptr %30, align 8, !tbaa !15
  %248 = fcmp ugt double %246, %247
  br i1 %248, label %263, label %249

249:                                              ; preds = %.thread1173
  %250 = mul i64 %storemerge1296, %37
  %251 = getelementptr inbounds %struct.doublecomplex, ptr %39, i64 %250
  %252 = load double, ptr %251, align 8, !tbaa !17
  %253 = fcmp oge double %252, 0.000000e+00
  %254 = fneg double %252
  %255 = select i1 %253, double %252, double %254
  %256 = fcmp ugt double %255, %247
  br i1 %256, label %263, label %257

257:                                              ; preds = %249
  %258 = load i64, ptr %3, align 8, !tbaa !5
  %.not11431223 = icmp slt i64 %258, 1
  br i1 %.not11431223, label %._crit_edge1227, label %.lr.ph1226

.lr.ph1226:                                       ; preds = %257
  %259 = mul i64 %221, %.010711297
  %scevgep = getelementptr i8, ptr %8, i64 %259
  %260 = shl nuw i64 %258, 4
  call void @llvm.memset.p0.i64(ptr align 8 %scevgep, i8 0, i64 %260, i1 false), !tbaa !15
  br label %._crit_edge1227

._crit_edge1227:                                  ; preds = %.lr.ph1226, %257
  %261 = mul i64 %235, %214
  store i64 %261, ptr %19, align 8, !tbaa !5
  %262 = getelementptr inbounds %struct.doublecomplex, ptr %42, i64 %261
  store <2 x double> <double 1.000000e+00, double 0.000000e+00>, ptr %262, align 8, !tbaa !15
  br label %.loopexit1193

263:                                              ; preds = %249, %.thread1173
  %264 = load i64, ptr %25, align 8, !tbaa !5
  %265 = mul i64 %264, %33
  store i64 %265, ptr %19, align 8, !tbaa !5
  %266 = mul i64 %264, %37
  %267 = getelementptr inbounds %struct.doublecomplex, ptr %35, i64 %265
  %268 = load double, ptr %267, align 8, !tbaa !17
  %269 = call double @d_imag(ptr noundef nonnull %267) #6
  %270 = insertelement <2 x double> poison, double %268, i64 0
  %271 = insertelement <2 x double> %270, double %269, i64 1
  %272 = fcmp oge <2 x double> %271, zeroinitializer
  %273 = fneg <2 x double> %271
  %274 = select <2 x i1> %272, <2 x double> %271, <2 x double> %273
  %shift1832 = shufflevector <2 x double> %274, <2 x double> poison, <2 x i32> <i32 1, i32 poison>
  %275 = fadd <2 x double> %274, %shift1832
  %276 = fmul <2 x double> %211, %275
  %277 = extractelement <2 x double> %276, i64 0
  %278 = getelementptr inbounds %struct.doublecomplex, ptr %39, i64 %266
  %279 = load double, ptr %278, align 8, !tbaa !17
  %280 = fcmp oge double %279, 0.000000e+00
  %281 = fneg double %279
  %282 = select i1 %280, double %279, double %281
  %283 = fmul double %226, %282
  %284 = fcmp oge double %277, %283
  %285 = select i1 %284, double %277, double %283
  %286 = load double, ptr %30, align 8
  %287 = fcmp oge double %285, %286
  %288 = select i1 %287, double %285, double %286
  %289 = fdiv double 1.000000e+00, %288
  %290 = load i64, ptr %25, align 8, !tbaa !5
  %291 = mul i64 %290, %33
  %292 = getelementptr inbounds %struct.doublecomplex, ptr %35, i64 %291
  %293 = load <2 x double>, ptr %292, align 8, !tbaa !15
  %294 = insertelement <2 x double> poison, double %289, i64 0
  %295 = shufflevector <2 x double> %294, <2 x double> poison, <2 x i32> zeroinitializer
  %296 = fmul <2 x double> %293, %295
  store <2 x double> %296, ptr %21, align 16, !tbaa !15
  %297 = fmul <2 x double> %230, %296
  store <2 x double> %297, ptr %29, align 16, !tbaa !15
  %298 = mul i64 %290, %37
  store i64 %298, ptr %19, align 8, !tbaa !5
  %299 = getelementptr inbounds %struct.doublecomplex, ptr %39, i64 %298
  %300 = load double, ptr %299, align 8, !tbaa !17
  %301 = fmul double %289, %300
  %302 = fmul double %226, %301
  %303 = fmul double %225, %302
  %304 = fmul <2 x double> %229, %297
  store <2 x double> %304, ptr %20, align 16, !tbaa !15
  store <2 x double> %304, ptr %28, align 16, !tbaa !15
  %305 = fcmp oge double %302, 0.000000e+00
  %306 = fneg double %302
  %307 = select i1 %305, double %302, double %306
  %308 = fcmp ult double %307, %286
  br i1 %308, label %314, label %309

309:                                              ; preds = %263
  %310 = fcmp oge double %303, 0.000000e+00
  %311 = fneg double %303
  %312 = select i1 %310, double %303, double %311
  %313 = fcmp olt double %312, %120
  br label %314

314:                                              ; preds = %309, %263
  %315 = phi i1 [ false, %263 ], [ %313, %309 ]
  %316 = call double @d_imag(ptr noundef nonnull %29) #6
  %317 = insertelement <2 x double> %297, double %316, i64 1
  %318 = fcmp oge <2 x double> %317, zeroinitializer
  %319 = fneg <2 x double> %317
  %320 = select <2 x i1> %318, <2 x double> %317, <2 x double> %319
  %shift1833 = shufflevector <2 x double> %320, <2 x double> poison, <2 x i32> <i32 1, i32 poison>
  %321 = fadd <2 x double> %320, %shift1833
  %322 = extractelement <2 x double> %321, i64 0
  %323 = load double, ptr %30, align 8, !tbaa !15
  %324 = fcmp ult double %322, %323
  br i1 %324, label %.thread1470, label %325

325:                                              ; preds = %314
  %326 = load <2 x double>, ptr %28, align 16
  %327 = call double @d_imag(ptr noundef nonnull %28) #6
  %328 = insertelement <2 x double> %326, double %327, i64 1
  %329 = fcmp oge <2 x double> %328, zeroinitializer
  %330 = fneg <2 x double> %328
  %331 = select <2 x i1> %329, <2 x double> %328, <2 x double> %330
  %shift1834 = shufflevector <2 x double> %331, <2 x double> poison, <2 x i32> <i32 1, i32 poison>
  %332 = fadd <2 x double> %331, %shift1834
  %333 = extractelement <2 x double> %332, i64 0
  %334 = fcmp olt double %333, %120
  br i1 %315, label %340, label %.thread1452

.thread1470:                                      ; preds = %314
  br i1 %315, label %.thread1471, label %._crit_edge1431

.thread1471:                                      ; preds = %.thread1470
  %335 = fdiv double %120, %307
  %336 = load double, ptr %26, align 8
  %337 = fcmp ole double %223, %336
  %338 = select i1 %337, double %223, double %336
  %339 = fmul double %335, %338
  br label %361

340:                                              ; preds = %325
  %341 = fdiv double %120, %307
  %342 = load double, ptr %26, align 8
  %343 = fcmp ole double %223, %342
  %344 = select i1 %343, double %223, double %342
  %345 = fmul double %341, %344
  br i1 %334, label %.thread1176, label %361

.thread1452:                                      ; preds = %325
  br i1 %334, label %.thread1176, label %._crit_edge1431

.thread1176:                                      ; preds = %.thread1452, %340
  %.010591454 = phi double [ 1.000000e+00, %.thread1452 ], [ %345, %340 ]
  %346 = load <2 x double>, ptr %29, align 16
  %347 = call double @d_imag(ptr noundef nonnull %29) #6
  %348 = insertelement <2 x double> %346, double %347, i64 1
  %349 = fcmp oge <2 x double> %348, zeroinitializer
  %350 = fneg <2 x double> %348
  %351 = select <2 x i1> %349, <2 x double> %348, <2 x double> %350
  %shift1835 = shufflevector <2 x double> %351, <2 x double> poison, <2 x i32> <i32 1, i32 poison>
  %352 = fadd <2 x double> %351, %shift1835
  %353 = extractelement <2 x double> %352, i64 0
  %354 = fdiv double %120, %353
  %355 = load double, ptr %26, align 8
  %356 = fcmp ole double %224, %355
  %357 = select i1 %356, double %224, double %355
  %358 = fmul double %357, %354
  %359 = fcmp oge double %.010591454, %358
  %360 = select i1 %359, double %.010591454, double %358
  br label %361

._crit_edge1431:                                  ; preds = %.thread1470, %.thread1452
  %.pre = load double, ptr %28, align 16, !tbaa !17
  br label %399

361:                                              ; preds = %340, %.thread1471, %.thread1176
  %362 = phi i1 [ true, %.thread1176 ], [ false, %340 ], [ false, %.thread1471 ]
  %.110601179 = phi double [ %360, %.thread1176 ], [ %345, %340 ], [ %339, %.thread1471 ]
  %363 = fcmp oge double %303, 0.000000e+00
  %364 = fneg double %303
  %365 = select i1 %363, double %303, double %364
  %366 = fcmp ole double %365, 1.000000e+00
  %367 = select i1 %366, double 1.000000e+00, double %365
  %368 = load <2 x double>, ptr %28, align 16
  %369 = call double @d_imag(ptr noundef nonnull %28) #6
  %370 = insertelement <2 x double> %368, double %369, i64 1
  %371 = fcmp oge <2 x double> %370, zeroinitializer
  %372 = fneg <2 x double> %370
  %373 = select <2 x i1> %371, <2 x double> %370, <2 x double> %372
  %shift1836 = shufflevector <2 x double> %373, <2 x double> poison, <2 x i32> <i32 1, i32 poison>
  %374 = fadd <2 x double> %373, %shift1836
  %375 = extractelement <2 x double> %374, i64 0
  %376 = load double, ptr %30, align 8, !tbaa !15
  %377 = fcmp oge double %367, %375
  %378 = select i1 %377, double %367, double %375
  %379 = fmul double %376, %378
  %380 = fdiv double 1.000000e+00, %379
  %381 = fcmp ole double %.110601179, %380
  %382 = select i1 %381, double %.110601179, double %380
  %383 = fmul double %302, %382
  %384 = fmul double %225, %383
  %385 = fmul double %303, %382
  %.01049 = select i1 %315, double %384, double %385
  br i1 %362, label %386, label %393

386:                                              ; preds = %361
  %387 = load <2 x double>, ptr %29, align 16, !tbaa !15
  %388 = insertelement <2 x double> poison, double %382, i64 0
  %389 = shufflevector <2 x double> %388, <2 x double> poison, <2 x i32> zeroinitializer
  %390 = fmul <2 x double> %389, %387
  store <2 x double> %390, ptr %21, align 16, !tbaa !15
  %391 = fmul <2 x double> %229, %390
  store <2 x double> %391, ptr %20, align 16, !tbaa !15
  store <2 x double> %391, ptr %28, align 16, !tbaa !15
  %392 = extractelement <2 x double> %391, i64 0
  br label %399

393:                                              ; preds = %361
  %394 = load <2 x double>, ptr %28, align 16, !tbaa !15
  %395 = insertelement <2 x double> poison, double %382, i64 0
  %396 = shufflevector <2 x double> %395, <2 x double> poison, <2 x i32> zeroinitializer
  %397 = fmul <2 x double> %396, %394
  store <2 x double> %397, ptr %20, align 16, !tbaa !15
  store <2 x double> %397, ptr %28, align 16, !tbaa !15
  %398 = extractelement <2 x double> %397, i64 0
  br label %399

399:                                              ; preds = %._crit_edge1431, %386, %393
  %400 = phi double [ %392, %386 ], [ %398, %393 ], [ %.pre, %._crit_edge1431 ]
  %.11050 = phi double [ %.01049, %386 ], [ %.01049, %393 ], [ %303, %._crit_edge1431 ]
  %401 = fcmp oge double %.11050, 0.000000e+00
  %402 = fneg double %.11050
  %403 = select i1 %401, double %.11050, double %402
  %404 = fcmp oge double %400, 0.000000e+00
  %405 = fneg double %400
  %406 = select i1 %404, double %400, double %405
  %407 = call double @d_imag(ptr noundef nonnull %28) #6
  %408 = fcmp oge double %407, 0.000000e+00
  %409 = fneg double %407
  %410 = select i1 %408, double %407, double %409
  %411 = fadd double %406, %410
  %412 = load i64, ptr %3, align 8, !tbaa !5
  %.not11341230 = icmp slt i64 %412, 1
  br i1 %.not11341230, label %._crit_edge1234, label %.lr.ph1233.preheader

.lr.ph1233.preheader:                             ; preds = %399
  %413 = shl nuw i64 %412, 4
  call void @llvm.memset.p0.i64(ptr align 8 %14, i8 0, i64 %413, i1 false), !tbaa !15
  br label %._crit_edge1234

._crit_edge1234:                                  ; preds = %.lr.ph1233.preheader, %399
  %414 = load i64, ptr %25, align 8, !tbaa !5
  %415 = getelementptr inbounds %struct.doublecomplex, ptr %46, i64 %414
  store <2 x double> <double 1.000000e+00, double 0.000000e+00>, ptr %415, align 8, !tbaa !15
  %416 = insertelement <2 x double> poison, double %403, i64 0
  %417 = insertelement <2 x double> %416, double %411, i64 1
  %418 = fmul <2 x double> %228, %417
  %419 = fmul <2 x double> %205, %418
  %420 = extractelement <2 x double> %419, i64 0
  %421 = extractelement <2 x double> %419, i64 1
  %422 = fcmp oge double %420, %421
  %423 = select i1 %422, double %420, double %421
  %424 = load double, ptr %30, align 8
  %425 = fcmp oge double %423, %424
  %426 = select i1 %425, double %423, double %424
  store i64 %412, ptr %19, align 8, !tbaa !5
  %.not1135.not1265 = icmp slt i64 %414, %412
  br i1 %.not1135.not1265, label %.lr.ph1270.preheader, label %._crit_edge1271

.lr.ph1270.preheader:                             ; preds = %._crit_edge1234
  %427 = add i64 %414, 1
  %428 = insertelement <2 x double> poison, double %.11050, i64 0
  %429 = shufflevector <2 x double> %428, <2 x double> poison, <2 x i32> zeroinitializer
  br label %.lr.ph1270

.lr.ph1270:                                       ; preds = %.lr.ph1270.preheader, %635
  %indvar = phi i64 [ 0, %.lr.ph1270.preheader ], [ %indvar.next, %635 ]
  %indvars.iv.in = phi i64 [ %414, %.lr.ph1270.preheader ], [ %indvars.iv, %635 ]
  %.010631267 = phi double [ 1.000000e+00, %.lr.ph1270.preheader ], [ %653, %635 ]
  %.31088.in1266 = phi i64 [ %414, %.lr.ph1270.preheader ], [ %.310881268, %635 ]
  %430 = add i64 %427, %indvar
  %431 = add i64 %427, %indvar
  %432 = add i64 %427, %indvar
  %433 = add i64 %427, %indvar
  %indvars.iv = add i64 %indvars.iv.in, 1
  %.310881268 = add nsw i64 %.31088.in1266, 1
  %434 = fdiv double 1.000000e+00, %.010631267
  %435 = getelementptr double, ptr %15, i64 %.31088.in1266
  %436 = load double, ptr %435, align 8, !tbaa !15
  %437 = load i64, ptr %3, align 8, !tbaa !5
  %438 = getelementptr double, ptr %47, i64 %437
  %439 = getelementptr double, ptr %438, i64 %.310881268
  %440 = load double, ptr %439, align 8, !tbaa !15
  %441 = fmul double %411, %440
  %442 = call double @llvm.fmuladd.f64(double %403, double %436, double %441)
  %443 = fmul double %122, %434
  %444 = fcmp ogt double %442, %443
  %.pre1432 = load i64, ptr %25, align 8, !tbaa !5
  br i1 %444, label %445, label %.loopexit1192

445:                                              ; preds = %.lr.ph1270
  %.not11401235 = icmp sgt i64 %.pre1432, %.31088.in1266
  br i1 %.not11401235, label %.loopexit1192, label %.lr.ph1238.preheader

.lr.ph1238.preheader:                             ; preds = %445
  %446 = sub i64 %432, %.pre1432
  %min.iters.check1607 = icmp ult i64 %446, 14
  br i1 %min.iters.check1607, label %.lr.ph1238.preheader1882, label %vector.scevcheck1594

vector.scevcheck1594:                             ; preds = %.lr.ph1238.preheader
  %447 = sub i64 %indvars.iv.in, %.pre1432
  %448 = shl i64 %.pre1432, 4
  %scevgep1596 = getelementptr i8, ptr %scevgep1595, i64 %448
  %mul.result1598 = shl i64 %447, 4
  %449 = getelementptr i8, ptr %scevgep1596, i64 %mul.result1598
  %450 = icmp ult ptr %449, %scevgep1596
  %scevgep1601 = getelementptr i8, ptr %scevgep1600, i64 %448
  %mul.result1603 = shl i64 %447, 4
  %mul.overflow1604 = icmp ugt i64 %447, 1152921504606846975
  %451 = getelementptr i8, ptr %scevgep1601, i64 %mul.result1603
  %452 = icmp ult ptr %451, %scevgep1601
  %453 = or i1 %452, %mul.overflow1604
  %454 = or i1 %450, %453
  br i1 %454, label %.lr.ph1238.preheader1882, label %vector.ph1608

vector.ph1608:                                    ; preds = %vector.scevcheck1594
  %n.vec1610 = and i64 %446, -2
  %ind.end1611 = add i64 %.pre1432, %n.vec1610
  %broadcast.splatinsert1619 = insertelement <2 x double> poison, double %434, i64 0
  %broadcast.splat1620 = shufflevector <2 x double> %broadcast.splatinsert1619, <2 x double> poison, <2 x i32> zeroinitializer
  %455 = getelementptr %struct.doublecomplex, ptr %46, i64 %.pre1432
  br label %vector.body1613

vector.body1613:                                  ; preds = %vector.body1613, %vector.ph1608
  %index1614 = phi i64 [ 0, %vector.ph1608 ], [ %index.next1622, %vector.body1613 ]
  %456 = getelementptr %struct.doublecomplex, ptr %455, i64 %index1614
  %wide.vec1616 = load <4 x double>, ptr %456, align 8, !tbaa !15
  %strided.vec1617 = shufflevector <4 x double> %wide.vec1616, <4 x double> poison, <2 x i32> <i32 0, i32 2>
  %strided.vec1618 = shufflevector <4 x double> %wide.vec1616, <4 x double> poison, <2 x i32> <i32 1, i32 3>
  %457 = fmul <2 x double> %broadcast.splat1620, %strided.vec1617
  %458 = fmul <2 x double> %broadcast.splat1620, %strided.vec1618
  %interleaved.vec1621 = shufflevector <2 x double> %457, <2 x double> %458, <4 x i32> <i32 0, i32 2, i32 1, i32 3>
  store <4 x double> %interleaved.vec1621, ptr %456, align 8, !tbaa !15
  %index.next1622 = add nuw i64 %index1614, 2
  %459 = icmp eq i64 %index.next1622, %n.vec1610
  br i1 %459, label %middle.block1605, label %vector.body1613, !llvm.loop !21

middle.block1605:                                 ; preds = %vector.body1613
  %cmp.n1623 = icmp eq i64 %446, %n.vec1610
  %460 = shufflevector <2 x double> %457, <2 x double> %458, <2 x i32> <i32 1, i32 3>
  br i1 %cmp.n1623, label %..loopexit1192_crit_edge, label %.lr.ph1238.preheader1882

.lr.ph1238.preheader1882:                         ; preds = %middle.block1605, %vector.scevcheck1594, %.lr.ph1238.preheader
  %.210791236.ph = phi i64 [ %.pre1432, %vector.scevcheck1594 ], [ %.pre1432, %.lr.ph1238.preheader ], [ %ind.end1611, %middle.block1605 ]
  %461 = sub i64 %431, %.210791236.ph
  %xtraiter = and i64 %461, 1
  %lcmp.mod.not = icmp eq i64 %xtraiter, 0
  br i1 %lcmp.mod.not, label %.lr.ph1238.prol.loopexit, label %.lr.ph1238.prol

.lr.ph1238.prol:                                  ; preds = %.lr.ph1238.preheader1882
  %462 = getelementptr inbounds %struct.doublecomplex, ptr %46, i64 %.210791236.ph
  %463 = load <2 x double>, ptr %462, align 8, !tbaa !15
  %464 = insertelement <2 x double> poison, double %434, i64 0
  %465 = shufflevector <2 x double> %464, <2 x double> poison, <2 x i32> zeroinitializer
  %466 = fmul <2 x double> %465, %463
  store <2 x double> %466, ptr %462, align 8, !tbaa !15
  %467 = add i64 %.210791236.ph, 1
  br label %.lr.ph1238.prol.loopexit

.lr.ph1238.prol.loopexit:                         ; preds = %.lr.ph1238.prol, %.lr.ph1238.preheader1882
  %.lcssa1885.unr = phi <2 x double> [ poison, %.lr.ph1238.preheader1882 ], [ %466, %.lr.ph1238.prol ]
  %.210791236.unr = phi i64 [ %.210791236.ph, %.lr.ph1238.preheader1882 ], [ %467, %.lr.ph1238.prol ]
  %468 = icmp eq i64 %.31088.in1266, %.210791236.ph
  br i1 %468, label %..loopexit1192_crit_edge, label %.lr.ph1238.preheader1882.new

.lr.ph1238.preheader1882.new:                     ; preds = %.lr.ph1238.prol.loopexit
  %469 = insertelement <2 x double> poison, double %434, i64 0
  %470 = shufflevector <2 x double> %469, <2 x double> poison, <2 x i32> zeroinitializer
  %471 = insertelement <2 x double> poison, double %434, i64 0
  %472 = shufflevector <2 x double> %471, <2 x double> poison, <2 x i32> zeroinitializer
  br label %.lr.ph1238

.lr.ph1238:                                       ; preds = %.lr.ph1238, %.lr.ph1238.preheader1882.new
  %.210791236 = phi i64 [ %.210791236.unr, %.lr.ph1238.preheader1882.new ], [ %480, %.lr.ph1238 ]
  %473 = getelementptr inbounds %struct.doublecomplex, ptr %46, i64 %.210791236
  %474 = load <2 x double>, ptr %473, align 8, !tbaa !15
  %475 = fmul <2 x double> %470, %474
  store <2 x double> %475, ptr %473, align 8, !tbaa !15
  %476 = add i64 %.210791236, 1
  %477 = getelementptr %struct.doublecomplex, ptr %14, i64 %.210791236
  %478 = load <2 x double>, ptr %477, align 8, !tbaa !15
  %479 = fmul <2 x double> %472, %478
  store <2 x double> %479, ptr %477, align 8, !tbaa !15
  %480 = add i64 %.210791236, 2
  %exitcond1420.not.1 = icmp eq i64 %476, %indvars.iv.in
  br i1 %exitcond1420.not.1, label %..loopexit1192_crit_edge, label %.lr.ph1238, !llvm.loop !22

..loopexit1192_crit_edge:                         ; preds = %.lr.ph1238.prol.loopexit, %.lr.ph1238, %middle.block1605
  %481 = phi <2 x double> [ %460, %middle.block1605 ], [ %.lcssa1885.unr, %.lr.ph1238.prol.loopexit ], [ %479, %.lr.ph1238 ]
  store <2 x double> %481, ptr %20, align 16, !tbaa !15
  br label %.loopexit1192

.loopexit1192:                                    ; preds = %445, %..loopexit1192_crit_edge, %.lr.ph1270
  %.11064 = phi double [ %.010631267, %.lr.ph1270 ], [ 1.000000e+00, %..loopexit1192_crit_edge ], [ 1.000000e+00, %445 ]
  %.not11411240 = icmp sgt i64 %.pre1432, %.31088.in1266
  br i1 %.not11411240, label %._crit_edge1248, label %.lr.ph1247

.lr.ph1247:                                       ; preds = %.loopexit1192
  %482 = mul nsw i64 %.310881268, %32
  %invariant.gep1253 = getelementptr %struct.doublecomplex, ptr %35, i64 %482
  %483 = mul nsw i64 %.310881268, %36
  %invariant.gep1255 = getelementptr %struct.doublecomplex, ptr %39, i64 %483
  br label %484

484:                                              ; preds = %.lr.ph1247, %484
  %.310801241 = phi i64 [ %.pre1432, %.lr.ph1247 ], [ %510, %484 ]
  %485 = phi <2 x double> [ zeroinitializer, %.lr.ph1247 ], [ %498, %484 ]
  %486 = phi <2 x double> [ zeroinitializer, %.lr.ph1247 ], [ %509, %484 ]
  %gep1254 = getelementptr %struct.doublecomplex, ptr %invariant.gep1253, i64 %.310801241
  call void @d_cnjg(ptr noundef nonnull %22, ptr noundef %gep1254) #6
  %487 = load <2 x double>, ptr %22, align 16
  %488 = getelementptr inbounds %struct.doublecomplex, ptr %46, i64 %.310801241
  %489 = load double, ptr %217, align 8, !tbaa !23
  %490 = fneg double %489
  %491 = load <2 x double>, ptr %488, align 8, !tbaa !15
  %492 = insertelement <2 x double> poison, double %489, i64 0
  %493 = insertelement <2 x double> %492, double %490, i64 1
  %494 = fmul <2 x double> %491, %493
  %495 = shufflevector <2 x double> %494, <2 x double> poison, <2 x i32> <i32 1, i32 0>
  %496 = shufflevector <2 x double> %487, <2 x double> poison, <2 x i32> zeroinitializer
  %497 = call <2 x double> @llvm.fmuladd.v2f64(<2 x double> %496, <2 x double> %491, <2 x double> %495)
  store <2 x double> %497, ptr %21, align 16, !tbaa !15
  %498 = fadd <2 x double> %485, %497
  store <2 x double> %498, ptr %20, align 16, !tbaa !15
  %gep1256 = getelementptr %struct.doublecomplex, ptr %invariant.gep1255, i64 %.310801241
  call void @d_cnjg(ptr noundef nonnull %22, ptr noundef %gep1256) #6
  %499 = load <2 x double>, ptr %22, align 16
  %500 = load double, ptr %217, align 8, !tbaa !23
  %501 = fneg double %500
  %502 = load <2 x double>, ptr %488, align 8, !tbaa !15
  %503 = insertelement <2 x double> poison, double %500, i64 0
  %504 = insertelement <2 x double> %503, double %501, i64 1
  %505 = fmul <2 x double> %502, %504
  %506 = shufflevector <2 x double> %505, <2 x double> poison, <2 x i32> <i32 1, i32 0>
  %507 = shufflevector <2 x double> %499, <2 x double> poison, <2 x i32> zeroinitializer
  %508 = call <2 x double> @llvm.fmuladd.v2f64(<2 x double> %507, <2 x double> %502, <2 x double> %506)
  store <2 x double> %508, ptr %21, align 16, !tbaa !15
  %509 = fadd <2 x double> %486, %508
  store <2 x double> %509, ptr %20, align 16, !tbaa !15
  %510 = add i64 %.310801241, 1
  %exitcond1421.not = icmp eq i64 %.310801241, %indvars.iv.in
  br i1 %exitcond1421.not, label %._crit_edge1248, label %484, !llvm.loop !24

._crit_edge1248:                                  ; preds = %484, %.loopexit1192
  %511 = phi <2 x double> [ zeroinitializer, %.loopexit1192 ], [ %498, %484 ]
  %512 = phi <2 x double> [ zeroinitializer, %.loopexit1192 ], [ %509, %484 ]
  %513 = fmul <2 x double> %429, %511
  store <2 x double> %513, ptr %21, align 16, !tbaa !15
  call void @d_cnjg(ptr noundef nonnull %23, ptr noundef nonnull %28) #6
  %514 = load <2 x double>, ptr %23, align 16
  %515 = load double, ptr %218, align 8, !tbaa !23
  %516 = fneg double %515
  %517 = insertelement <2 x double> poison, double %515, i64 0
  %518 = insertelement <2 x double> %517, double %516, i64 1
  %519 = fmul <2 x double> %512, %518
  %520 = shufflevector <2 x double> %519, <2 x double> poison, <2 x i32> <i32 1, i32 0>
  %521 = shufflevector <2 x double> %514, <2 x double> poison, <2 x i32> zeroinitializer
  %522 = call <2 x double> @llvm.fmuladd.v2f64(<2 x double> %521, <2 x double> %512, <2 x double> %520)
  %523 = load <2 x double>, ptr %21, align 16, !tbaa !15
  %524 = fsub <2 x double> %523, %522
  store <2 x double> %524, ptr %20, align 16, !tbaa !15
  store <2 x double> %524, ptr %27, align 16, !tbaa !15
  %525 = mul i64 %.310881268, %33
  %526 = getelementptr inbounds %struct.doublecomplex, ptr %35, i64 %525
  %527 = mul i64 %.310881268, %37
  %528 = load <2 x double>, ptr %28, align 16
  %529 = getelementptr inbounds %struct.doublecomplex, ptr %39, i64 %527
  %530 = load double, ptr %216, align 8, !tbaa !23
  %531 = fneg double %530
  %532 = load <2 x double>, ptr %526, align 8, !tbaa !15
  %533 = fmul <2 x double> %429, %532
  store <2 x double> %533, ptr %22, align 16, !tbaa !15
  %534 = load <2 x double>, ptr %529, align 8, !tbaa !15
  %535 = insertelement <2 x double> poison, double %530, i64 0
  %536 = insertelement <2 x double> %535, double %531, i64 1
  %537 = fmul <2 x double> %534, %536
  %538 = shufflevector <2 x double> %537, <2 x double> poison, <2 x i32> <i32 1, i32 0>
  %539 = shufflevector <2 x double> %528, <2 x double> poison, <2 x i32> zeroinitializer
  %540 = call <2 x double> @llvm.fmuladd.v2f64(<2 x double> %539, <2 x double> %534, <2 x double> %538)
  store <2 x double> %540, ptr %23, align 16, !tbaa !15
  %541 = fsub <2 x double> %533, %540
  store <2 x double> %541, ptr %21, align 16, !tbaa !15
  call void @d_cnjg(ptr noundef nonnull %20, ptr noundef nonnull %21) #6
  %542 = load <2 x double>, ptr %20, align 16, !tbaa !15
  store <2 x double> %542, ptr %24, align 16, !tbaa !15
  %543 = extractelement <2 x double> %542, i64 0
  %544 = fcmp oge double %543, 0.000000e+00
  %545 = fneg double %543
  %546 = select i1 %544, double %543, double %545
  %547 = call double @d_imag(ptr noundef nonnull %24) #6
  %548 = fcmp oge double %547, 0.000000e+00
  %549 = fneg double %547
  %550 = select i1 %548, double %547, double %549
  %551 = fadd double %546, %550
  %552 = fcmp ugt double %551, %426
  br i1 %552, label %._crit_edge1248._crit_edge, label %553

._crit_edge1248._crit_edge:                       ; preds = %._crit_edge1248
  %.pre1433 = load double, ptr %24, align 16, !tbaa !17
  br label %554

553:                                              ; preds = %._crit_edge1248
  store double %426, ptr %20, align 16, !tbaa !17
  store double 0.000000e+00, ptr %215, align 8, !tbaa !23
  store double %426, ptr %24, align 16, !tbaa !17
  store double 0.000000e+00, ptr %220, align 8, !tbaa !23
  br label %554

554:                                              ; preds = %._crit_edge1248._crit_edge, %553
  %555 = phi double [ %.pre1433, %._crit_edge1248._crit_edge ], [ %426, %553 ]
  %556 = call double @d_imag(ptr noundef nonnull %24) #6
  %557 = insertelement <2 x double> poison, double %555, i64 0
  %558 = insertelement <2 x double> %557, double %556, i64 1
  %559 = fcmp oge <2 x double> %558, zeroinitializer
  %560 = fneg <2 x double> %558
  %561 = select <2 x i1> %559, <2 x double> %558, <2 x double> %560
  %shift1837 = shufflevector <2 x double> %561, <2 x double> poison, <2 x i32> <i32 1, i32 poison>
  %562 = fadd <2 x double> %561, %shift1837
  %563 = extractelement <2 x double> %562, i64 0
  %564 = fcmp olt double %563, 1.000000e+00
  %.pre1435 = load double, ptr %27, align 16, !tbaa !17
  br i1 %564, label %565, label %635

565:                                              ; preds = %554
  %566 = call double @d_imag(ptr noundef nonnull %27) #6
  %567 = insertelement <2 x double> poison, double %.pre1435, i64 0
  %568 = insertelement <2 x double> %567, double %566, i64 1
  %569 = fcmp oge <2 x double> %568, zeroinitializer
  %570 = fneg <2 x double> %568
  %571 = select <2 x i1> %569, <2 x double> %568, <2 x double> %570
  %572 = load <2 x double>, ptr %24, align 16
  %573 = call double @d_imag(ptr noundef nonnull %24) #6
  %574 = insertelement <2 x double> %572, double %573, i64 1
  %575 = fcmp oge <2 x double> %574, zeroinitializer
  %576 = fneg <2 x double> %574
  %577 = select <2 x i1> %575, <2 x double> %574, <2 x double> %576
  %578 = shufflevector <2 x double> %571, <2 x double> %577, <2 x i32> <i32 0, i32 2>
  %579 = shufflevector <2 x double> %571, <2 x double> %577, <2 x i32> <i32 1, i32 3>
  %580 = fadd <2 x double> %578, %579
  %581 = extractelement <2 x double> %580, i64 1
  %582 = fmul double %122, %581
  %583 = extractelement <2 x double> %580, i64 0
  %584 = fcmp ult double %583, %582
  %.pre1434 = load double, ptr %27, align 16, !tbaa !17
  br i1 %584, label %635, label %585

585:                                              ; preds = %565
  %586 = fcmp oge double %.pre1434, 0.000000e+00
  %587 = fneg double %.pre1434
  %588 = select i1 %586, double %.pre1434, double %587
  %589 = call double @d_imag(ptr noundef nonnull %27) #6
  %590 = fcmp oge double %589, 0.000000e+00
  %591 = fneg double %589
  %592 = select i1 %590, double %589, double %591
  %593 = fadd double %588, %592
  %594 = fdiv double 1.000000e+00, %593
  %595 = load i64, ptr %25, align 8, !tbaa !5
  %.not11421257 = icmp sgt i64 %595, %.31088.in1266
  br i1 %.not11421257, label %._crit_edge1261, label %.lr.ph1260.preheader

.lr.ph1260.preheader:                             ; preds = %585
  %596 = sub i64 %433, %595
  %min.iters.check1577 = icmp ult i64 %596, 14
  br i1 %min.iters.check1577, label %.lr.ph1260.preheader1881, label %vector.scevcheck

vector.scevcheck:                                 ; preds = %.lr.ph1260.preheader
  %597 = sub i64 %indvars.iv.in, %595
  %598 = shl i64 %595, 4
  %scevgep1569 = getelementptr i8, ptr %scevgep1568, i64 %598
  %mul.result = shl i64 %597, 4
  %599 = getelementptr i8, ptr %scevgep1569, i64 %mul.result
  %600 = icmp ult ptr %599, %scevgep1569
  %scevgep1571 = getelementptr i8, ptr %scevgep1570, i64 %598
  %mul.result1573 = shl i64 %597, 4
  %mul.overflow1574 = icmp ugt i64 %597, 1152921504606846975
  %601 = getelementptr i8, ptr %scevgep1571, i64 %mul.result1573
  %602 = icmp ult ptr %601, %scevgep1571
  %603 = or i1 %602, %mul.overflow1574
  %604 = or i1 %600, %603
  br i1 %604, label %.lr.ph1260.preheader1881, label %vector.ph1578

vector.ph1578:                                    ; preds = %vector.scevcheck
  %n.vec1580 = and i64 %596, -2
  %ind.end1581 = add i64 %595, %n.vec1580
  %broadcast.splatinsert1589 = insertelement <2 x double> poison, double %594, i64 0
  %605 = getelementptr %struct.doublecomplex, ptr %46, i64 %595
  %606 = shufflevector <2 x double> %broadcast.splatinsert1589, <2 x double> poison, <4 x i32> zeroinitializer
  br label %vector.body1583

vector.body1583:                                  ; preds = %vector.body1583, %vector.ph1578
  %index1584 = phi i64 [ 0, %vector.ph1578 ], [ %index.next1592, %vector.body1583 ]
  %607 = getelementptr %struct.doublecomplex, ptr %605, i64 %index1584
  %wide.vec1586 = load <4 x double>, ptr %607, align 8, !tbaa !15
  %interleaved.vec1591 = fmul <4 x double> %606, %wide.vec1586
  store <4 x double> %interleaved.vec1591, ptr %607, align 8, !tbaa !15
  %index.next1592 = add nuw i64 %index1584, 2
  %608 = icmp eq i64 %index.next1592, %n.vec1580
  br i1 %608, label %middle.block1575, label %vector.body1583, !llvm.loop !25

middle.block1575:                                 ; preds = %vector.body1583
  %cmp.n1593 = icmp eq i64 %596, %n.vec1580
  br i1 %cmp.n1593, label %._crit_edge1261, label %.lr.ph1260.preheader1881

.lr.ph1260.preheader1881:                         ; preds = %middle.block1575, %vector.scevcheck, %.lr.ph1260.preheader
  %.410811258.ph = phi i64 [ %595, %vector.scevcheck ], [ %595, %.lr.ph1260.preheader ], [ %ind.end1581, %middle.block1575 ]
  %609 = sub i64 %430, %.410811258.ph
  %xtraiter1897 = and i64 %609, 1
  %lcmp.mod1898.not = icmp eq i64 %xtraiter1897, 0
  br i1 %lcmp.mod1898.not, label %.lr.ph1260.prol.loopexit, label %.lr.ph1260.prol

.lr.ph1260.prol:                                  ; preds = %.lr.ph1260.preheader1881
  %610 = getelementptr inbounds %struct.doublecomplex, ptr %46, i64 %.410811258.ph
  %611 = load <2 x double>, ptr %610, align 8, !tbaa !15
  %612 = insertelement <2 x double> poison, double %594, i64 0
  %613 = shufflevector <2 x double> %612, <2 x double> poison, <2 x i32> zeroinitializer
  %614 = fmul <2 x double> %613, %611
  store <2 x double> %614, ptr %610, align 8, !tbaa !15
  %615 = add i64 %.410811258.ph, 1
  br label %.lr.ph1260.prol.loopexit

.lr.ph1260.prol.loopexit:                         ; preds = %.lr.ph1260.prol, %.lr.ph1260.preheader1881
  %.410811258.unr = phi i64 [ %.410811258.ph, %.lr.ph1260.preheader1881 ], [ %615, %.lr.ph1260.prol ]
  %616 = icmp eq i64 %indvars.iv.in, %.410811258.ph
  br i1 %616, label %._crit_edge1261, label %.lr.ph1260.preheader1881.new

.lr.ph1260.preheader1881.new:                     ; preds = %.lr.ph1260.prol.loopexit
  %617 = insertelement <2 x double> poison, double %594, i64 0
  %618 = shufflevector <2 x double> %617, <2 x double> poison, <2 x i32> zeroinitializer
  %619 = insertelement <2 x double> poison, double %594, i64 0
  %620 = shufflevector <2 x double> %619, <2 x double> poison, <2 x i32> zeroinitializer
  br label %.lr.ph1260

.lr.ph1260:                                       ; preds = %.lr.ph1260, %.lr.ph1260.preheader1881.new
  %.410811258 = phi i64 [ %.410811258.unr, %.lr.ph1260.preheader1881.new ], [ %628, %.lr.ph1260 ]
  %621 = getelementptr inbounds %struct.doublecomplex, ptr %46, i64 %.410811258
  %622 = load <2 x double>, ptr %621, align 8, !tbaa !15
  %623 = fmul <2 x double> %618, %622
  store <2 x double> %623, ptr %621, align 8, !tbaa !15
  %624 = add i64 %.410811258, 1
  %625 = getelementptr %struct.doublecomplex, ptr %14, i64 %.410811258
  %626 = load <2 x double>, ptr %625, align 8, !tbaa !15
  %627 = fmul <2 x double> %620, %626
  store <2 x double> %627, ptr %625, align 8, !tbaa !15
  %628 = add i64 %.410811258, 2
  %exitcond1422.not.1 = icmp eq i64 %624, %indvars.iv.in
  br i1 %exitcond1422.not.1, label %._crit_edge1261, label %.lr.ph1260, !llvm.loop !26

._crit_edge1261:                                  ; preds = %.lr.ph1260.prol.loopexit, %.lr.ph1260, %middle.block1575, %585
  %629 = fmul double %.11064, %594
  %630 = load <2 x double>, ptr %27, align 16, !tbaa !15
  %631 = insertelement <2 x double> poison, double %594, i64 0
  %632 = shufflevector <2 x double> %631, <2 x double> poison, <2 x i32> zeroinitializer
  %633 = fmul <2 x double> %632, %630
  store <2 x double> %633, ptr %20, align 16, !tbaa !15
  store <2 x double> %633, ptr %27, align 16, !tbaa !15
  %634 = extractelement <2 x double> %633, i64 0
  br label %635

635:                                              ; preds = %565, %._crit_edge1261, %554
  %636 = phi double [ %634, %._crit_edge1261 ], [ %.pre1434, %565 ], [ %.pre1435, %554 ]
  %.21065 = phi double [ %629, %._crit_edge1261 ], [ %.11064, %565 ], [ %.11064, %554 ]
  %637 = load double, ptr %219, align 8, !tbaa !23
  %638 = insertelement <2 x double> poison, double %636, i64 0
  %639 = insertelement <2 x double> %638, double %637, i64 1
  %640 = fneg <2 x double> %639
  store <2 x double> %640, ptr %21, align 16, !tbaa !15
  call void @zladiv_(ptr noundef nonnull %20, ptr noundef nonnull %21, ptr noundef nonnull %24) #6
  %641 = getelementptr %struct.doublecomplex, ptr %14, i64 %.31088.in1266
  %642 = load <2 x double>, ptr %20, align 16, !tbaa !15
  store <2 x double> %642, ptr %641, align 8, !tbaa !15
  %643 = extractelement <2 x double> %642, i64 0
  %644 = fcmp oge double %643, 0.000000e+00
  %645 = fneg double %643
  %646 = select i1 %644, double %643, double %645
  %647 = call double @d_imag(ptr noundef nonnull %641) #6
  %648 = fcmp oge double %647, 0.000000e+00
  %649 = fneg double %647
  %650 = select i1 %648, double %647, double %649
  %651 = fadd double %646, %650
  %652 = fcmp oge double %.21065, %651
  %653 = select i1 %652, double %.21065, double %651
  %654 = load i64, ptr %19, align 8, !tbaa !5
  %.not1135.not = icmp slt i64 %.310881268, %654
  %indvar.next = add i64 %indvar, 1
  br i1 %.not1135.not, label %.lr.ph1270, label %._crit_edge1271, !llvm.loop !27

._crit_edge1271:                                  ; preds = %635, %._crit_edge1234
  br i1 %.not1124, label %664, label %655

655:                                              ; preds = %._crit_edge1271
  %656 = load i64, ptr %3, align 8, !tbaa !5
  %657 = add nsw i64 %656, 1
  %658 = load i64, ptr %25, align 8, !tbaa !5
  %659 = sub i64 %657, %658
  store i64 %659, ptr %19, align 8, !tbaa !5
  %660 = mul nsw i64 %658, %40
  %gep1294 = getelementptr %struct.doublecomplex, ptr %invariant.gep1293, i64 %660
  %661 = getelementptr inbounds %struct.doublecomplex, ptr %46, i64 %658
  %662 = getelementptr %struct.doublecomplex, ptr %14, i64 %656
  %663 = call i32 @f2c_zgemv(ptr noundef nonnull @.str.9, ptr noundef nonnull %3, ptr noundef nonnull %19, ptr noundef nonnull @c_b2, ptr noundef %gep1294, ptr noundef nonnull %9, ptr noundef nonnull %661, ptr noundef nonnull @c__1, ptr noundef nonnull @c_b1, ptr noundef %662, ptr noundef nonnull @c__1) #6
  br label %666

664:                                              ; preds = %._crit_edge1271
  %665 = load i64, ptr %25, align 8, !tbaa !5
  br label %666

666:                                              ; preds = %664, %655
  %.01075 = phi i64 [ 1, %655 ], [ %665, %664 ]
  %.01067 = phi i64 [ 1, %655 ], [ 0, %664 ]
  %667 = load i64, ptr %3, align 8, !tbaa !5
  store i64 %667, ptr %19, align 8, !tbaa !5
  %.not11371272 = icmp sgt i64 %.01075, %667
  br i1 %.not11371272, label %._crit_edge1277, label %.lr.ph1276

.lr.ph1276:                                       ; preds = %666, %.lr.ph1276
  %.310661274 = phi double [ %682, %.lr.ph1276 ], [ 0.000000e+00, %666 ]
  %.51273 = phi i64 [ %683, %.lr.ph1276 ], [ %.01075, %666 ]
  %668 = load i64, ptr %3, align 8, !tbaa !5
  %669 = mul nuw nsw i64 %668, %.01067
  %670 = getelementptr %struct.doublecomplex, ptr %46, i64 %669
  %671 = getelementptr %struct.doublecomplex, ptr %670, i64 %.51273
  %672 = load double, ptr %671, align 8, !tbaa !17
  %673 = call double @d_imag(ptr noundef nonnull %671) #6
  %674 = insertelement <2 x double> poison, double %672, i64 0
  %675 = insertelement <2 x double> %674, double %673, i64 1
  %676 = fcmp oge <2 x double> %675, zeroinitializer
  %677 = fneg <2 x double> %675
  %678 = select <2 x i1> %676, <2 x double> %675, <2 x double> %677
  %shift1838 = shufflevector <2 x double> %678, <2 x double> poison, <2 x i32> <i32 1, i32 poison>
  %679 = fadd <2 x double> %678, %shift1838
  %680 = extractelement <2 x double> %679, i64 0
  %681 = fcmp oge double %.310661274, %680
  %682 = select i1 %681, double %.310661274, double %680
  %683 = add nsw i64 %.51273, 1
  %684 = load i64, ptr %19, align 8, !tbaa !5
  %.not1137.not = icmp slt i64 %.51273, %684
  br i1 %.not1137.not, label %.lr.ph1276, label %._crit_edge1277, !llvm.loop !28

._crit_edge1277:                                  ; preds = %.lr.ph1276, %666
  %.31066.lcssa = phi double [ 0.000000e+00, %666 ], [ %682, %.lr.ph1276 ]
  %685 = load double, ptr %30, align 8, !tbaa !15
  %686 = fcmp ogt double %.31066.lcssa, %685
  br i1 %686, label %687, label %734

687:                                              ; preds = %._crit_edge1277
  %688 = fdiv double 1.000000e+00, %.31066.lcssa
  %689 = load i64, ptr %3, align 8, !tbaa !5
  %.not11381279 = icmp sgt i64 %.01075, %689
  br i1 %.not11381279, label %.loopexit1194, label %.lr.ph1282

.lr.ph1282:                                       ; preds = %687
  %690 = mul nsw i64 %235, %40
  %691 = mul nuw nsw i64 %689, %.01067
  %692 = getelementptr %struct.doublecomplex, ptr %46, i64 %691
  %invariant.gep1283 = getelementptr %struct.doublecomplex, ptr %42, i64 %690
  %693 = add i64 %689, 1
  %694 = sub i64 %693, %.01075
  %min.iters.check1556 = icmp ult i64 %694, 12
  br i1 %min.iters.check1556, label %scalar.ph1555.preheader, label %vector.memcheck

vector.memcheck:                                  ; preds = %.lr.ph1282
  %695 = mul i64 %222, %.010711297
  %696 = shl i64 %.01075, 4
  %697 = add i64 %695, %696
  %scevgep1538 = getelementptr i8, ptr %scevgep1537, i64 %697
  %698 = mul i64 %40, %.010711297
  %699 = add i64 %689, %698
  %700 = shl i64 %699, 4
  %scevgep1540 = getelementptr i8, ptr %scevgep1539, i64 %700
  %701 = shl nuw nsw i64 %.01067, 4
  %702 = mul i64 %701, %689
  %703 = add i64 %702, %696
  %scevgep1542 = getelementptr i8, ptr %scevgep1541, i64 %703
  %704 = shl i64 %689, 4
  %705 = add nuw nsw i64 %.01067, 1
  %706 = mul i64 %704, %705
  %scevgep1544 = getelementptr i8, ptr %scevgep1543, i64 %706
  %scevgep1546 = getelementptr i8, ptr %scevgep1545, i64 %697
  %scevgep1547 = getelementptr i8, ptr %8, i64 %700
  %scevgep1549 = getelementptr i8, ptr %scevgep1548, i64 %703
  %scevgep1550 = getelementptr i8, ptr %14, i64 %706
  %bound0 = icmp ult ptr %scevgep1538, %scevgep1544
  %bound1 = icmp ult ptr %scevgep1542, %scevgep1540
  %found.conflict = and i1 %bound0, %bound1
  %bound01551 = icmp ult ptr %scevgep1546, %scevgep1550
  %bound11552 = icmp ult ptr %scevgep1549, %scevgep1547
  %found.conflict1553 = and i1 %bound01551, %bound11552
  %conflict.rdx = or i1 %found.conflict, %found.conflict1553
  br i1 %conflict.rdx, label %scalar.ph1555.preheader, label %vector.ph1557

vector.ph1557:                                    ; preds = %vector.memcheck
  %n.vec1559 = and i64 %694, -2
  %ind.end1560 = add i64 %.01075, %n.vec1559
  %broadcast.splatinsert = insertelement <2 x double> poison, double %688, i64 0
  %broadcast.splat = shufflevector <2 x double> %broadcast.splatinsert, <2 x double> poison, <2 x i32> zeroinitializer
  br label %vector.body1562

vector.body1562:                                  ; preds = %vector.body1562, %vector.ph1557
  %index1563 = phi i64 [ 0, %vector.ph1557 ], [ %index.next1566, %vector.body1562 ]
  %offset.idx1564 = add i64 %.01075, %index1563
  %707 = getelementptr %struct.doublecomplex, ptr %692, i64 %offset.idx1564
  %wide.vec = load <4 x double>, ptr %707, align 8, !tbaa !15
  %strided.vec = shufflevector <4 x double> %wide.vec, <4 x double> poison, <2 x i32> <i32 0, i32 2>
  %strided.vec1565 = shufflevector <4 x double> %wide.vec, <4 x double> poison, <2 x i32> <i32 1, i32 3>
  %708 = fmul <2 x double> %broadcast.splat, %strided.vec
  %709 = fmul <2 x double> %broadcast.splat, %strided.vec1565
  %710 = getelementptr %struct.doublecomplex, ptr %invariant.gep1283, i64 %offset.idx1564
  %interleaved.vec = shufflevector <2 x double> %708, <2 x double> %709, <4 x i32> <i32 0, i32 2, i32 1, i32 3>
  store <4 x double> %interleaved.vec, ptr %710, align 8, !tbaa !15
  %index.next1566 = add nuw i64 %index1563, 2
  %711 = icmp eq i64 %index.next1566, %n.vec1559
  br i1 %711, label %middle.block1554, label %vector.body1562, !llvm.loop !29

middle.block1554:                                 ; preds = %vector.body1562
  %cmp.n1567 = icmp eq i64 %694, %n.vec1559
  %712 = shufflevector <2 x double> %708, <2 x double> %709, <2 x i32> <i32 1, i32 3>
  br i1 %cmp.n1567, label %..loopexit1194_crit_edge, label %scalar.ph1555.preheader

scalar.ph1555.preheader:                          ; preds = %middle.block1554, %vector.memcheck, %.lr.ph1282
  %.61280.ph = phi i64 [ %.01075, %vector.memcheck ], [ %.01075, %.lr.ph1282 ], [ %ind.end1560, %middle.block1554 ]
  %713 = add i64 %689, %.61280.ph
  %714 = and i64 %713, 1
  %lcmp.mod1900.not.not = icmp eq i64 %714, 0
  br i1 %lcmp.mod1900.not.not, label %scalar.ph1555.prol, label %scalar.ph1555.prol.loopexit

scalar.ph1555.prol:                               ; preds = %scalar.ph1555.preheader
  %715 = getelementptr %struct.doublecomplex, ptr %692, i64 %.61280.ph
  %716 = load <2 x double>, ptr %715, align 8, !tbaa !15
  %717 = insertelement <2 x double> poison, double %688, i64 0
  %718 = shufflevector <2 x double> %717, <2 x double> poison, <2 x i32> zeroinitializer
  %719 = fmul <2 x double> %718, %716
  %gep1284.prol = getelementptr %struct.doublecomplex, ptr %invariant.gep1283, i64 %.61280.ph
  store <2 x double> %719, ptr %gep1284.prol, align 8, !tbaa !15
  %720 = add i64 %.61280.ph, 1
  br label %scalar.ph1555.prol.loopexit

scalar.ph1555.prol.loopexit:                      ; preds = %scalar.ph1555.prol, %scalar.ph1555.preheader
  %.lcssa1891.unr = phi <2 x double> [ poison, %scalar.ph1555.preheader ], [ %719, %scalar.ph1555.prol ]
  %.61280.unr = phi i64 [ %.61280.ph, %scalar.ph1555.preheader ], [ %720, %scalar.ph1555.prol ]
  %721 = icmp eq i64 %689, %.61280.ph
  br i1 %721, label %..loopexit1194_crit_edge, label %scalar.ph1555.preheader.new

scalar.ph1555.preheader.new:                      ; preds = %scalar.ph1555.prol.loopexit
  %722 = insertelement <2 x double> poison, double %688, i64 0
  %723 = shufflevector <2 x double> %722, <2 x double> poison, <2 x i32> zeroinitializer
  %724 = insertelement <2 x double> poison, double %688, i64 0
  %725 = shufflevector <2 x double> %724, <2 x double> poison, <2 x i32> zeroinitializer
  br label %scalar.ph1555

scalar.ph1555:                                    ; preds = %scalar.ph1555, %scalar.ph1555.preheader.new
  %.61280 = phi i64 [ %.61280.unr, %scalar.ph1555.preheader.new ], [ %733, %scalar.ph1555 ]
  %726 = getelementptr %struct.doublecomplex, ptr %692, i64 %.61280
  %727 = load <2 x double>, ptr %726, align 8, !tbaa !15
  %728 = fmul <2 x double> %723, %727
  %gep1284 = getelementptr %struct.doublecomplex, ptr %invariant.gep1283, i64 %.61280
  store <2 x double> %728, ptr %gep1284, align 8, !tbaa !15
  %729 = add i64 %.61280, 1
  %730 = getelementptr %struct.doublecomplex, ptr %692, i64 %729
  %731 = load <2 x double>, ptr %730, align 8, !tbaa !15
  %732 = fmul <2 x double> %725, %731
  %gep1284.1 = getelementptr %struct.doublecomplex, ptr %invariant.gep1283, i64 %729
  store <2 x double> %732, ptr %gep1284.1, align 8, !tbaa !15
  %733 = add i64 %.61280, 2
  %exitcond1423.not.1 = icmp eq i64 %729, %689
  br i1 %exitcond1423.not.1, label %..loopexit1194_crit_edge, label %scalar.ph1555, !llvm.loop !30

734:                                              ; preds = %._crit_edge1277
  %735 = load i64, ptr %3, align 8, !tbaa !5
  %736 = add nsw i64 %735, 1
  br label %.loopexit1194

..loopexit1194_crit_edge:                         ; preds = %scalar.ph1555.prol.loopexit, %scalar.ph1555, %middle.block1554
  %737 = phi <2 x double> [ %712, %middle.block1554 ], [ %.lcssa1891.unr, %scalar.ph1555.prol.loopexit ], [ %732, %scalar.ph1555 ]
  store <2 x double> %737, ptr %20, align 16, !tbaa !15
  br label %.loopexit1194

.loopexit1194:                                    ; preds = %687, %..loopexit1194_crit_edge, %734
  %.11076 = phi i64 [ %736, %734 ], [ %.01075, %..loopexit1194_crit_edge ], [ %.01075, %687 ]
  %738 = add nsw i64 %.11076, -1
  store i64 %738, ptr %19, align 8, !tbaa !5
  %.not1139.not1287 = icmp sgt i64 %.11076, 1
  br i1 %.not1139.not1287, label %.lr.ph1290, label %.loopexit1193

.lr.ph1290:                                       ; preds = %.loopexit1194
  %739 = mul i64 %221, %.010711297
  %scevgep1424 = getelementptr i8, ptr %8, i64 %739
  %740 = shl i64 %.11076, 4
  %741 = add i64 %740, -16
  call void @llvm.memset.p0.i64(ptr align 8 %scevgep1424, i8 0, i64 %741, i1 false), !tbaa !15
  br label %.loopexit1193

.loopexit1193:                                    ; preds = %.lr.ph1290, %.loopexit1194, %._crit_edge1227, %232
  %.11072 = phi i64 [ %235, %._crit_edge1227 ], [ %.010711297, %232 ], [ %235, %.loopexit1194 ], [ %235, %.lr.ph1290 ]
  %742 = load i64, ptr %25, align 8, !tbaa !5
  %743 = add nsw i64 %742, 1
  store i64 %743, ptr %25, align 8, !tbaa !5
  %744 = load i64, ptr %18, align 8, !tbaa !5
  %.not1118.not = icmp slt i64 %742, %744
  br i1 %.not1118.not, label %231, label %.loopexit1195, !llvm.loop !31

.loopexit1195:                                    ; preds = %.loopexit1193, %212, %._crit_edge1220
  br i1 %.not11141155, label %.loopexit1191, label %745

745:                                              ; preds = %.loopexit1195
  %746 = load i64, ptr %3, align 8, !tbaa !5
  store i64 %746, ptr %25, align 8, !tbaa !5
  %747 = icmp sgt i64 %746, 0
  br i1 %747, label %.lr.ph1382, label %.loopexit1191

.lr.ph1382:                                       ; preds = %745
  %748 = add nsw i64 %.2108414431451, 1
  %749 = add i64 %43, 1
  %750 = getelementptr inbounds i8, ptr %20, i64 8
  %751 = getelementptr inbounds i8, ptr %28, i64 8
  %752 = getelementptr inbounds i8, ptr %24, i64 8
  %scevgep1626 = getelementptr i8, ptr %10, i64 -8
  %scevgep1629 = getelementptr i8, ptr %14, i64 -8
  %scevgep1631 = getelementptr i8, ptr %10, i64 8
  %scevgep1634 = getelementptr i8, ptr %14, i64 8
  %753 = mul i64 %32, -16
  %754 = shl i64 %32, 4
  %755 = sub nuw nsw i64 -16, %754
  %756 = mul i64 %36, -16
  %757 = shl i64 %36, 4
  %758 = sub nuw nsw i64 -16, %757
  %scevgep1671 = getelementptr i8, ptr %14, i64 8
  %scevgep1766 = getelementptr i8, ptr %14, i64 -24
  %scevgep1769 = getelementptr i8, ptr %4, i64 -24
  %scevgep1772 = getelementptr i8, ptr %6, i64 -24
  %scevgep1774 = getelementptr i8, ptr %14, i64 -16
  %scevgep1776 = getelementptr i8, ptr %4, i64 8
  %scevgep1778 = getelementptr i8, ptr %4, i64 -16
  %scevgep1780 = getelementptr i8, ptr %6, i64 8
  %scevgep1782 = getelementptr i8, ptr %6, i64 -16
  %759 = insertelement <2 x double> poison, double %115, i64 0
  %760 = shufflevector <2 x double> %759, <2 x double> poison, <2 x i32> zeroinitializer
  %761 = extractelement <2 x double> %205, i64 0
  %762 = extractelement <2 x double> %205, i64 1
  %763 = shufflevector <2 x double> %211, <2 x double> poison, <2 x i32> zeroinitializer
  %764 = extractelement <2 x double> %211, i64 0
  %765 = extractelement <2 x double> %211, i64 1
  %766 = shufflevector <2 x double> %211, <2 x double> poison, <2 x i32> <i32 1, i32 1>
  %invariant.gep1949 = getelementptr i8, ptr %14, i64 -40
  %invariant.gep1951 = getelementptr i8, ptr %4, i64 -40
  %invariant.gep1953 = getelementptr i8, ptr %6, i64 -40
  %invariant.gep1955 = getelementptr i8, ptr %4, i64 -32
  %invariant.gep1957 = getelementptr i8, ptr %6, i64 -32
  br label %767

767:                                              ; preds = %.lr.ph1382, %.loopexit1189
  %.210731380 = phi i64 [ %748, %.lr.ph1382 ], [ %.31074, %.loopexit1189 ]
  %storemerge11201379 = phi i64 [ %746, %.lr.ph1382 ], [ %1325, %.loopexit1189 ]
  br i1 %.not1108, label %768, label %.thread1180

768:                                              ; preds = %767
  %769 = getelementptr inbounds i64, ptr %31, i64 %storemerge11201379
  %770 = load i64, ptr %769, align 8, !tbaa !5
  %.not1121 = icmp eq i64 %770, 0
  br i1 %.not1121, label %.loopexit1189, label %.thread1180

.thread1180:                                      ; preds = %767, %768
  %771 = add i64 %.210731380, -1
  %772 = mul i64 %storemerge11201379, %33
  store i64 %772, ptr %18, align 8, !tbaa !5
  %773 = mul i64 %storemerge11201379, %37
  store i64 %773, ptr %19, align 8, !tbaa !5
  %774 = getelementptr inbounds %struct.doublecomplex, ptr %35, i64 %772
  %775 = load double, ptr %774, align 8, !tbaa !17
  %776 = call double @d_imag(ptr noundef nonnull %774) #6
  %777 = insertelement <2 x double> poison, double %775, i64 0
  %778 = insertelement <2 x double> %777, double %776, i64 1
  %779 = fcmp oge <2 x double> %778, zeroinitializer
  %780 = fneg <2 x double> %778
  %781 = select <2 x i1> %779, <2 x double> %778, <2 x double> %780
  %shift1839 = shufflevector <2 x double> %781, <2 x double> poison, <2 x i32> <i32 1, i32 poison>
  %782 = fadd <2 x double> %781, %shift1839
  %783 = extractelement <2 x double> %782, i64 0
  %784 = load double, ptr %30, align 8, !tbaa !15
  %785 = fcmp ugt double %783, %784
  br i1 %785, label %805, label %786

786:                                              ; preds = %.thread1180
  %787 = load i64, ptr %19, align 8, !tbaa !5
  %788 = getelementptr inbounds %struct.doublecomplex, ptr %39, i64 %787
  %789 = load double, ptr %788, align 8, !tbaa !17
  %790 = fcmp oge double %789, 0.000000e+00
  %791 = fneg double %789
  %792 = select i1 %790, double %789, double %791
  %793 = fcmp ugt double %792, %784
  br i1 %793, label %805, label %794

794:                                              ; preds = %786
  %795 = load i64, ptr %3, align 8, !tbaa !5
  %.not11321300 = icmp slt i64 %795, 1
  br i1 %.not11321300, label %802, label %.lr.ph1303

.lr.ph1303:                                       ; preds = %794
  %796 = shl i64 %.210731380, 4
  %797 = add i64 %796, -32
  %798 = mul i64 %43, %797
  %scevgep1425 = getelementptr i8, ptr %10, i64 %798
  %799 = shl nuw i64 %795, 4
  call void @llvm.memset.p0.i64(ptr align 8 %scevgep1425, i8 0, i64 %799, i1 false), !tbaa !15
  %800 = mul i64 %771, %43
  %801 = add i64 %795, %800
  store i64 %801, ptr %19, align 8, !tbaa !5
  br label %802

802:                                              ; preds = %.lr.ph1303, %794
  %803 = mul i64 %771, %749
  store i64 %803, ptr %18, align 8, !tbaa !5
  %804 = getelementptr inbounds %struct.doublecomplex, ptr %45, i64 %803
  store <2 x double> <double 1.000000e+00, double 0.000000e+00>, ptr %804, align 8, !tbaa !15
  br label %.loopexit1189

805:                                              ; preds = %786, %.thread1180
  %806 = load i64, ptr %25, align 8, !tbaa !5
  %807 = mul i64 %806, %33
  store i64 %807, ptr %18, align 8, !tbaa !5
  %808 = mul i64 %806, %37
  store i64 %808, ptr %19, align 8, !tbaa !5
  %809 = getelementptr inbounds %struct.doublecomplex, ptr %35, i64 %807
  %810 = load double, ptr %809, align 8, !tbaa !17
  %811 = call double @d_imag(ptr noundef nonnull %809) #6
  %812 = insertelement <2 x double> poison, double %810, i64 0
  %813 = insertelement <2 x double> %812, double %811, i64 1
  %814 = fcmp oge <2 x double> %813, zeroinitializer
  %815 = fneg <2 x double> %813
  %816 = select <2 x i1> %814, <2 x double> %813, <2 x double> %815
  %shift1840 = shufflevector <2 x double> %816, <2 x double> poison, <2 x i32> <i32 1, i32 poison>
  %817 = fadd <2 x double> %816, %shift1840
  %818 = load i64, ptr %19, align 8, !tbaa !5
  %819 = getelementptr inbounds %struct.doublecomplex, ptr %39, i64 %818
  %820 = load double, ptr %819, align 8, !tbaa !17
  %821 = fcmp oge double %820, 0.000000e+00
  %822 = fneg double %820
  %823 = select i1 %821, double %820, double %822
  %824 = insertelement <2 x double> %817, double %823, i64 1
  %825 = fmul <2 x double> %211, %824
  %826 = extractelement <2 x double> %825, i64 0
  %827 = extractelement <2 x double> %825, i64 1
  %828 = fcmp oge double %826, %827
  %829 = select i1 %828, double %826, double %827
  %830 = load double, ptr %30, align 8
  %831 = fcmp oge double %829, %830
  %832 = select i1 %831, double %829, double %830
  %833 = fdiv double 1.000000e+00, %832
  %834 = load i64, ptr %25, align 8, !tbaa !5
  %835 = mul i64 %834, %33
  %836 = getelementptr inbounds %struct.doublecomplex, ptr %35, i64 %835
  %837 = load <2 x double>, ptr %836, align 8, !tbaa !15
  %838 = insertelement <2 x double> poison, double %833, i64 0
  %839 = shufflevector <2 x double> %838, <2 x double> poison, <2 x i32> zeroinitializer
  %840 = fmul <2 x double> %837, %839
  store <2 x double> %840, ptr %21, align 16, !tbaa !15
  %841 = fmul <2 x double> %763, %840
  store <2 x double> %841, ptr %29, align 16, !tbaa !15
  %842 = mul i64 %834, %37
  store i64 %842, ptr %18, align 8, !tbaa !5
  %843 = getelementptr inbounds %struct.doublecomplex, ptr %39, i64 %842
  %844 = load double, ptr %843, align 8, !tbaa !17
  %845 = fmul double %833, %844
  %846 = fmul double %765, %845
  %847 = fmul double %764, %846
  %848 = fmul <2 x double> %766, %841
  store <2 x double> %848, ptr %20, align 16, !tbaa !15
  store <2 x double> %848, ptr %28, align 16, !tbaa !15
  %849 = fcmp oge double %846, 0.000000e+00
  %850 = fneg double %846
  %851 = select i1 %849, double %846, double %850
  %852 = fcmp ult double %851, %830
  br i1 %852, label %858, label %853

853:                                              ; preds = %805
  %854 = fcmp oge double %847, 0.000000e+00
  %855 = fneg double %847
  %856 = select i1 %854, double %847, double %855
  %857 = fcmp olt double %856, %120
  br label %858

858:                                              ; preds = %853, %805
  %859 = phi i1 [ false, %805 ], [ %857, %853 ]
  %860 = call double @d_imag(ptr noundef nonnull %29) #6
  %861 = insertelement <2 x double> %841, double %860, i64 1
  %862 = fcmp oge <2 x double> %861, zeroinitializer
  %863 = fneg <2 x double> %861
  %864 = select <2 x i1> %862, <2 x double> %861, <2 x double> %863
  %shift1841 = shufflevector <2 x double> %864, <2 x double> poison, <2 x i32> <i32 1, i32 poison>
  %865 = fadd <2 x double> %864, %shift1841
  %866 = extractelement <2 x double> %865, i64 0
  %867 = load double, ptr %30, align 8, !tbaa !15
  %868 = fcmp ult double %866, %867
  br i1 %868, label %.thread1472, label %869

869:                                              ; preds = %858
  %870 = load <2 x double>, ptr %28, align 16
  %871 = call double @d_imag(ptr noundef nonnull %28) #6
  %872 = insertelement <2 x double> %870, double %871, i64 1
  %873 = fcmp oge <2 x double> %872, zeroinitializer
  %874 = fneg <2 x double> %872
  %875 = select <2 x i1> %873, <2 x double> %872, <2 x double> %874
  %shift1842 = shufflevector <2 x double> %875, <2 x double> poison, <2 x i32> <i32 1, i32 poison>
  %876 = fadd <2 x double> %875, %shift1842
  %877 = extractelement <2 x double> %876, i64 0
  %878 = fcmp olt double %877, %120
  br i1 %859, label %884, label %.thread1458

.thread1472:                                      ; preds = %858
  br i1 %859, label %.thread1473, label %._crit_edge1436

.thread1473:                                      ; preds = %.thread1472
  %879 = fdiv double %120, %851
  %880 = load double, ptr %26, align 8
  %881 = fcmp ole double %761, %880
  %882 = select i1 %881, double %761, double %880
  %883 = fmul double %879, %882
  br label %905

884:                                              ; preds = %869
  %885 = fdiv double %120, %851
  %886 = load double, ptr %26, align 8
  %887 = fcmp ole double %761, %886
  %888 = select i1 %887, double %761, double %886
  %889 = fmul double %885, %888
  br i1 %878, label %.thread1183, label %905

.thread1458:                                      ; preds = %869
  br i1 %878, label %.thread1183, label %._crit_edge1436

.thread1183:                                      ; preds = %.thread1458, %884
  %.210611460 = phi double [ 1.000000e+00, %.thread1458 ], [ %889, %884 ]
  %890 = load <2 x double>, ptr %29, align 16
  %891 = call double @d_imag(ptr noundef nonnull %29) #6
  %892 = insertelement <2 x double> %890, double %891, i64 1
  %893 = fcmp oge <2 x double> %892, zeroinitializer
  %894 = fneg <2 x double> %892
  %895 = select <2 x i1> %893, <2 x double> %892, <2 x double> %894
  %shift1843 = shufflevector <2 x double> %895, <2 x double> poison, <2 x i32> <i32 1, i32 poison>
  %896 = fadd <2 x double> %895, %shift1843
  %897 = extractelement <2 x double> %896, i64 0
  %898 = fdiv double %120, %897
  %899 = load double, ptr %26, align 8
  %900 = fcmp ole double %762, %899
  %901 = select i1 %900, double %762, double %899
  %902 = fmul double %901, %898
  %903 = fcmp oge double %.210611460, %902
  %904 = select i1 %903, double %.210611460, double %902
  br label %905

._crit_edge1436:                                  ; preds = %.thread1472, %.thread1458
  %.pre1437 = load double, ptr %28, align 16, !tbaa !17
  br label %943

905:                                              ; preds = %884, %.thread1473, %.thread1183
  %906 = phi i1 [ true, %.thread1183 ], [ false, %884 ], [ false, %.thread1473 ]
  %.310621186 = phi double [ %904, %.thread1183 ], [ %889, %884 ], [ %883, %.thread1473 ]
  %907 = fcmp oge double %847, 0.000000e+00
  %908 = fneg double %847
  %909 = select i1 %907, double %847, double %908
  %910 = fcmp ole double %909, 1.000000e+00
  %911 = select i1 %910, double 1.000000e+00, double %909
  %912 = load <2 x double>, ptr %28, align 16
  %913 = call double @d_imag(ptr noundef nonnull %28) #6
  %914 = insertelement <2 x double> %912, double %913, i64 1
  %915 = fcmp oge <2 x double> %914, zeroinitializer
  %916 = fneg <2 x double> %914
  %917 = select <2 x i1> %915, <2 x double> %914, <2 x double> %916
  %shift1844 = shufflevector <2 x double> %917, <2 x double> poison, <2 x i32> <i32 1, i32 poison>
  %918 = fadd <2 x double> %917, %shift1844
  %919 = extractelement <2 x double> %918, i64 0
  %920 = load double, ptr %30, align 8, !tbaa !15
  %921 = fcmp oge double %911, %919
  %922 = select i1 %921, double %911, double %919
  %923 = fmul double %920, %922
  %924 = fdiv double 1.000000e+00, %923
  %925 = fcmp ole double %.310621186, %924
  %926 = select i1 %925, double %.310621186, double %924
  %927 = fmul double %846, %926
  %928 = fmul double %764, %927
  %929 = fmul double %847, %926
  %.2 = select i1 %859, double %928, double %929
  br i1 %906, label %930, label %937

930:                                              ; preds = %905
  %931 = load <2 x double>, ptr %29, align 16, !tbaa !15
  %932 = insertelement <2 x double> poison, double %926, i64 0
  %933 = shufflevector <2 x double> %932, <2 x double> poison, <2 x i32> zeroinitializer
  %934 = fmul <2 x double> %933, %931
  store <2 x double> %934, ptr %21, align 16, !tbaa !15
  %935 = fmul <2 x double> %766, %934
  store <2 x double> %935, ptr %20, align 16, !tbaa !15
  store <2 x double> %935, ptr %28, align 16, !tbaa !15
  %936 = extractelement <2 x double> %935, i64 0
  br label %943

937:                                              ; preds = %905
  %938 = load <2 x double>, ptr %28, align 16, !tbaa !15
  %939 = insertelement <2 x double> poison, double %926, i64 0
  %940 = shufflevector <2 x double> %939, <2 x double> poison, <2 x i32> zeroinitializer
  %941 = fmul <2 x double> %940, %938
  store <2 x double> %941, ptr %20, align 16, !tbaa !15
  store <2 x double> %941, ptr %28, align 16, !tbaa !15
  %942 = extractelement <2 x double> %941, i64 0
  br label %943

943:                                              ; preds = %._crit_edge1436, %930, %937
  %944 = phi double [ %936, %930 ], [ %942, %937 ], [ %.pre1437, %._crit_edge1436 ]
  %.3 = phi double [ %.2, %930 ], [ %.2, %937 ], [ %847, %._crit_edge1436 ]
  %945 = fcmp oge double %.3, 0.000000e+00
  %946 = fneg double %.3
  %947 = select i1 %945, double %.3, double %946
  %948 = fcmp oge double %944, 0.000000e+00
  %949 = fneg double %944
  %950 = select i1 %948, double %944, double %949
  %951 = call double @d_imag(ptr noundef nonnull %28) #6
  %952 = fcmp oge double %951, 0.000000e+00
  %953 = fneg double %951
  %954 = select i1 %952, double %951, double %953
  %955 = fadd double %950, %954
  %956 = load i64, ptr %3, align 8, !tbaa !5
  %.not11221306 = icmp slt i64 %956, 1
  br i1 %.not11221306, label %958, label %.lr.ph1309.preheader

.lr.ph1309.preheader:                             ; preds = %943
  %957 = shl nuw i64 %956, 4
  call void @llvm.memset.p0.i64(ptr align 8 %14, i8 0, i64 %957, i1 false), !tbaa !15
  store i64 %956, ptr %19, align 8, !tbaa !5
  br label %958

958:                                              ; preds = %.lr.ph1309.preheader, %943
  %959 = load i64, ptr %25, align 8, !tbaa !5
  %960 = getelementptr inbounds %struct.doublecomplex, ptr %46, i64 %959
  store <2 x double> <double 1.000000e+00, double 0.000000e+00>, ptr %960, align 8, !tbaa !15
  %961 = insertelement <2 x double> poison, double %947, i64 0
  %962 = insertelement <2 x double> %961, double %955, i64 1
  %963 = fmul <2 x double> %760, %962
  %964 = fmul <2 x double> %205, %963
  %965 = extractelement <2 x double> %964, i64 0
  %966 = extractelement <2 x double> %964, i64 1
  %967 = fcmp oge double %965, %966
  %968 = select i1 %967, double %965, double %966
  %969 = load double, ptr %30, align 8
  %970 = fcmp oge double %968, %969
  %971 = select i1 %970, double %968, double %969
  %.not1123.not1311 = icmp sgt i64 %959, 1
  br i1 %.not1123.not1311, label %.lr.ph1314, label %.thread1464

.thread1464:                                      ; preds = %958
  store i64 %959, ptr %18, align 8, !tbaa !5
  store <2 x double> <double 1.000000e+00, double 0.000000e+00>, ptr %960, align 8, !tbaa !15
  br label %._crit_edge1359

.lr.ph1314:                                       ; preds = %958
  %972 = mul nsw i64 %959, %32
  %invariant.gep1316 = getelementptr %struct.doublecomplex, ptr %35, i64 %972
  %973 = mul nsw i64 %959, %36
  %974 = load double, ptr %28, align 16, !tbaa !17
  %invariant.gep1318 = getelementptr %struct.doublecomplex, ptr %39, i64 %973
  %975 = load double, ptr %751, align 8, !tbaa !23
  %976 = fneg double %975
  %977 = add nsw i64 %959, -1
  %min.iters.check1801 = icmp ult i64 %959, 5
  br i1 %min.iters.check1801, label %scalar.ph1800.preheader, label %vector.memcheck1765

vector.memcheck1765:                              ; preds = %.lr.ph1314
  %978 = shl i64 %959, 4
  %scevgep1767 = getelementptr i8, ptr %scevgep1766, i64 %978
  %979 = add i64 %978, -16
  %980 = mul i64 %32, %979
  %scevgep1768 = getelementptr i8, ptr %4, i64 %980
  %981 = add i64 %980, %978
  %scevgep1770 = getelementptr i8, ptr %scevgep1769, i64 %981
  %982 = mul i64 %36, %979
  %scevgep1771 = getelementptr i8, ptr %6, i64 %982
  %983 = add i64 %982, %978
  %scevgep1773 = getelementptr i8, ptr %scevgep1772, i64 %983
  %scevgep1775 = getelementptr i8, ptr %scevgep1774, i64 %978
  %scevgep1777 = getelementptr i8, ptr %scevgep1776, i64 %980
  %scevgep1779 = getelementptr i8, ptr %scevgep1778, i64 %981
  %scevgep1781 = getelementptr i8, ptr %scevgep1780, i64 %982
  %scevgep1783 = getelementptr i8, ptr %scevgep1782, i64 %983
  %bound01784 = icmp ugt ptr %scevgep1770, %14
  %bound11785 = icmp ult ptr %scevgep1768, %scevgep1767
  %found.conflict1786 = and i1 %bound01784, %bound11785
  %bound01787 = icmp ugt ptr %scevgep1773, %14
  %bound11788 = icmp ult ptr %scevgep1771, %scevgep1767
  %found.conflict1789 = and i1 %bound01787, %bound11788
  %conflict.rdx1790 = or i1 %found.conflict1786, %found.conflict1789
  %bound01791 = icmp ult ptr %scevgep1671, %scevgep1779
  %bound11792 = icmp ult ptr %scevgep1777, %scevgep1775
  %found.conflict1793 = and i1 %bound01791, %bound11792
  %conflict.rdx1794 = or i1 %conflict.rdx1790, %found.conflict1793
  %bound01795 = icmp ult ptr %scevgep1671, %scevgep1783
  %bound11796 = icmp ult ptr %scevgep1781, %scevgep1775
  %found.conflict1797 = and i1 %bound01795, %bound11796
  %conflict.rdx1798 = or i1 %conflict.rdx1794, %found.conflict1797
  br i1 %conflict.rdx1798, label %scalar.ph1800.preheader, label %vector.ph1802

vector.ph1802:                                    ; preds = %vector.memcheck1765
  %n.vec1804 = and i64 %977, -2
  %ind.end1805 = or i64 %977, 1
  %broadcast.splatinsert1813 = insertelement <2 x double> poison, double %.3, i64 0
  %broadcast.splat1814 = shufflevector <2 x double> %broadcast.splatinsert1813, <2 x double> poison, <2 x i32> zeroinitializer
  %broadcast.splatinsert1818 = insertelement <2 x double> poison, double %976, i64 0
  %broadcast.splat1819 = shufflevector <2 x double> %broadcast.splatinsert1818, <2 x double> poison, <2 x i32> zeroinitializer
  %broadcast.splatinsert1820 = insertelement <2 x double> poison, double %974, i64 0
  %broadcast.splat1821 = shufflevector <2 x double> %broadcast.splatinsert1820, <2 x double> poison, <2 x i32> zeroinitializer
  %broadcast.splatinsert1822 = insertelement <2 x double> poison, double %975, i64 0
  %broadcast.splat1823 = shufflevector <2 x double> %broadcast.splatinsert1822, <2 x double> poison, <2 x i32> zeroinitializer
  br label %vector.body1807

vector.body1807:                                  ; preds = %vector.body1807, %vector.ph1802
  %index1808 = phi i64 [ 0, %vector.ph1802 ], [ %index.next1825, %vector.body1807 ]
  %offset.idx1809 = or disjoint i64 %index1808, 1
  %984 = getelementptr %struct.doublecomplex, ptr %invariant.gep1316, i64 %offset.idx1809
  %wide.vec1810 = load <4 x double>, ptr %984, align 8, !tbaa !15
  %strided.vec1811 = shufflevector <4 x double> %wide.vec1810, <4 x double> poison, <2 x i32> <i32 0, i32 2>
  %strided.vec1812 = shufflevector <4 x double> %wide.vec1810, <4 x double> poison, <2 x i32> <i32 1, i32 3>
  %985 = fmul <2 x double> %broadcast.splat1814, %strided.vec1811
  %986 = fmul <2 x double> %broadcast.splat1814, %strided.vec1812
  %987 = getelementptr %struct.doublecomplex, ptr %invariant.gep1318, i64 %offset.idx1809
  %wide.vec1815 = load <4 x double>, ptr %987, align 8, !tbaa !15
  %strided.vec1816 = shufflevector <4 x double> %wide.vec1815, <4 x double> poison, <2 x i32> <i32 0, i32 2>
  %strided.vec1817 = shufflevector <4 x double> %wide.vec1815, <4 x double> poison, <2 x i32> <i32 1, i32 3>
  %988 = fmul <2 x double> %strided.vec1817, %broadcast.splat1819
  %989 = call <2 x double> @llvm.fmuladd.v2f64(<2 x double> %broadcast.splat1821, <2 x double> %strided.vec1816, <2 x double> %988)
  %990 = fmul <2 x double> %strided.vec1816, %broadcast.splat1823
  %991 = call <2 x double> @llvm.fmuladd.v2f64(<2 x double> %broadcast.splat1821, <2 x double> %strided.vec1817, <2 x double> %990)
  %992 = fsub <2 x double> %985, %989
  %993 = fsub <2 x double> %986, %991
  %994 = getelementptr %struct.doublecomplex, ptr %14, i64 %index1808
  %interleaved.vec1824 = shufflevector <2 x double> %992, <2 x double> %993, <4 x i32> <i32 0, i32 2, i32 1, i32 3>
  store <4 x double> %interleaved.vec1824, ptr %994, align 8, !tbaa !15
  %index.next1825 = add nuw i64 %index1808, 2
  %995 = icmp eq i64 %index.next1825, %n.vec1804
  br i1 %995, label %middle.block1799, label %vector.body1807, !llvm.loop !32

middle.block1799:                                 ; preds = %vector.body1807
  %cmp.n1826 = icmp eq i64 %977, %n.vec1804
  %996 = shufflevector <2 x double> %985, <2 x double> %986, <2 x i32> <i32 1, i32 3>
  %997 = shufflevector <2 x double> %989, <2 x double> %991, <2 x i32> <i32 1, i32 3>
  %998 = shufflevector <2 x double> %992, <2 x double> %993, <2 x i32> <i32 1, i32 3>
  br i1 %cmp.n1826, label %.loopexit1829, label %scalar.ph1800.preheader

scalar.ph1800.preheader:                          ; preds = %middle.block1799, %vector.memcheck1765, %.lr.ph1314
  %.101312.ph = phi i64 [ 1, %vector.memcheck1765 ], [ 1, %.lr.ph1314 ], [ %ind.end1805, %middle.block1799 ]
  %999 = insertelement <2 x double> poison, double %.3, i64 0
  %1000 = shufflevector <2 x double> %999, <2 x double> poison, <2 x i32> zeroinitializer
  %1001 = insertelement <2 x double> poison, double %975, i64 0
  %1002 = insertelement <2 x double> %1001, double %976, i64 1
  %1003 = insertelement <2 x double> poison, double %974, i64 0
  %1004 = shufflevector <2 x double> %1003, <2 x double> poison, <2 x i32> zeroinitializer
  br label %scalar.ph1800

scalar.ph1800:                                    ; preds = %scalar.ph1800.preheader, %scalar.ph1800
  %.101312 = phi i64 [ %1013, %scalar.ph1800 ], [ %.101312.ph, %scalar.ph1800.preheader ]
  %gep1317 = getelementptr %struct.doublecomplex, ptr %invariant.gep1316, i64 %.101312
  %1005 = load <2 x double>, ptr %gep1317, align 8, !tbaa !15
  %1006 = fmul <2 x double> %1000, %1005
  %gep1319 = getelementptr %struct.doublecomplex, ptr %invariant.gep1318, i64 %.101312
  %1007 = load <2 x double>, ptr %gep1319, align 8, !tbaa !15
  %1008 = fmul <2 x double> %1007, %1002
  %1009 = shufflevector <2 x double> %1008, <2 x double> poison, <2 x i32> <i32 1, i32 0>
  %1010 = call <2 x double> @llvm.fmuladd.v2f64(<2 x double> %1004, <2 x double> %1007, <2 x double> %1009)
  %1011 = fsub <2 x double> %1006, %1010
  %1012 = getelementptr inbounds %struct.doublecomplex, ptr %46, i64 %.101312
  store <2 x double> %1011, ptr %1012, align 8, !tbaa !15
  %1013 = add nuw nsw i64 %.101312, 1
  %exitcond1426.not = icmp eq i64 %1013, %959
  br i1 %exitcond1426.not, label %.loopexit1829, label %scalar.ph1800, !llvm.loop !33

.loopexit1829:                                    ; preds = %scalar.ph1800, %middle.block1799
  %.101312.lcssa = phi i64 [ %n.vec1804, %middle.block1799 ], [ %.101312, %scalar.ph1800 ]
  %1014 = phi <2 x double> [ %996, %middle.block1799 ], [ %1006, %scalar.ph1800 ]
  %1015 = phi <2 x double> [ %997, %middle.block1799 ], [ %1010, %scalar.ph1800 ]
  %1016 = phi <2 x double> [ %998, %middle.block1799 ], [ %1011, %scalar.ph1800 ]
  store i64 %.101312.lcssa, ptr %19, align 8, !tbaa !5
  store <2 x double> %1014, ptr %21, align 16, !tbaa !15
  store <2 x double> %1015, ptr %22, align 16, !tbaa !15
  store <2 x double> %1016, ptr %20, align 16, !tbaa !15
  store i64 %959, ptr %18, align 8, !tbaa !5
  store <2 x double> <double 1.000000e+00, double 0.000000e+00>, ptr %960, align 8, !tbaa !15
  br i1 %.not1123.not1311, label %.lr.ph1358.preheader, label %._crit_edge1359

.lr.ph1358.preheader:                             ; preds = %.loopexit1829
  %1017 = shl i64 %959, 4
  %1018 = add i64 %1017, -32
  %1019 = mul i64 %32, %1018
  %1020 = mul i64 %36, %1018
  %1021 = or disjoint i64 %1019, 8
  %1022 = or disjoint i64 %1020, 8
  %1023 = add nsw i64 %959, -2
  %1024 = insertelement <2 x double> poison, double %.3, i64 0
  %1025 = shufflevector <2 x double> %1024, <2 x double> poison, <2 x i32> zeroinitializer
  %gep1950 = getelementptr i8, ptr %invariant.gep1949, i64 %1017
  %1026 = getelementptr i8, ptr %4, i64 %1019
  %gep1952 = getelementptr i8, ptr %invariant.gep1951, i64 %1019
  %1027 = getelementptr i8, ptr %gep1952, i64 %1017
  %1028 = getelementptr i8, ptr %6, i64 %1020
  %gep1954 = getelementptr i8, ptr %invariant.gep1953, i64 %1020
  %1029 = getelementptr i8, ptr %gep1954, i64 %1017
  %1030 = getelementptr i8, ptr %14, i64 %1018
  %1031 = getelementptr i8, ptr %4, i64 %1021
  %gep1956 = getelementptr i8, ptr %invariant.gep1955, i64 %1019
  %1032 = getelementptr i8, ptr %gep1956, i64 %1017
  %1033 = getelementptr i8, ptr %6, i64 %1022
  %gep1958 = getelementptr i8, ptr %invariant.gep1957, i64 %1020
  %1034 = getelementptr i8, ptr %gep1958, i64 %1017
  br label %.lr.ph1358

.lr.ph1358:                                       ; preds = %.lr.ph1358.preheader, %.loopexit
  %indvar1664 = phi i64 [ 0, %.lr.ph1358.preheader ], [ %indvar.next1665, %.loopexit ]
  %.41089.in1355 = phi i64 [ %959, %.lr.ph1358.preheader ], [ %.410891356, %.loopexit ]
  %1035 = sub i64 %1023, %indvar1664
  %1036 = mul i64 %indvar1664, -16
  %scevgep1666 = getelementptr i8, ptr %gep1950, i64 %1036
  %1037 = mul i64 %753, %indvar1664
  %scevgep1667 = getelementptr i8, ptr %1026, i64 %1037
  %1038 = mul i64 %755, %indvar1664
  %scevgep1668 = getelementptr i8, ptr %1027, i64 %1038
  %1039 = mul i64 %756, %indvar1664
  %scevgep1669 = getelementptr i8, ptr %1028, i64 %1039
  %1040 = mul i64 %758, %indvar1664
  %scevgep1670 = getelementptr i8, ptr %1029, i64 %1040
  %scevgep1672 = getelementptr i8, ptr %1030, i64 %1036
  %scevgep1673 = getelementptr i8, ptr %1031, i64 %1037
  %scevgep1674 = getelementptr i8, ptr %1032, i64 %1038
  %scevgep1675 = getelementptr i8, ptr %1033, i64 %1039
  %scevgep1676 = getelementptr i8, ptr %1034, i64 %1040
  %.410891356 = add nsw i64 %.41089.in1355, -1
  %1041 = mul nsw i64 %.410891356, %32
  %1042 = add nsw i64 %1041, %.410891356
  store i64 %1042, ptr %18, align 8, !tbaa !5
  %1043 = getelementptr inbounds %struct.doublecomplex, ptr %35, i64 %1042
  %1044 = load <2 x double>, ptr %1043, align 8, !tbaa !15
  %1045 = fmul <2 x double> %1025, %1044
  store <2 x double> %1045, ptr %21, align 16, !tbaa !15
  %1046 = mul nsw i64 %.410891356, %36
  %1047 = add nsw i64 %1046, %.410891356
  store i64 %1047, ptr %19, align 8, !tbaa !5
  %1048 = load <2 x double>, ptr %28, align 16
  %1049 = getelementptr inbounds %struct.doublecomplex, ptr %39, i64 %1047
  %1050 = load double, ptr %751, align 8, !tbaa !23
  %1051 = fneg double %1050
  %1052 = load <2 x double>, ptr %1049, align 8, !tbaa !15
  %1053 = insertelement <2 x double> poison, double %1050, i64 0
  %1054 = insertelement <2 x double> %1053, double %1051, i64 1
  %1055 = fmul <2 x double> %1052, %1054
  %1056 = shufflevector <2 x double> %1055, <2 x double> poison, <2 x i32> <i32 1, i32 0>
  %1057 = shufflevector <2 x double> %1048, <2 x double> poison, <2 x i32> zeroinitializer
  %1058 = call <2 x double> @llvm.fmuladd.v2f64(<2 x double> %1057, <2 x double> %1052, <2 x double> %1056)
  store <2 x double> %1058, ptr %22, align 16, !tbaa !15
  %1059 = fsub <2 x double> %1045, %1058
  store <2 x double> %1059, ptr %20, align 16, !tbaa !15
  store <2 x double> %1059, ptr %24, align 16, !tbaa !15
  %1060 = extractelement <2 x double> %1059, i64 0
  %1061 = fcmp oge double %1060, 0.000000e+00
  %1062 = fneg double %1060
  %1063 = select i1 %1061, double %1060, double %1062
  %1064 = call double @d_imag(ptr noundef nonnull %24) #6
  %1065 = fcmp oge double %1064, 0.000000e+00
  %1066 = fneg double %1064
  %1067 = select i1 %1065, double %1064, double %1066
  %1068 = fadd double %1063, %1067
  %1069 = fcmp ugt double %1068, %971
  br i1 %1069, label %.lr.ph1358._crit_edge, label %1070

.lr.ph1358._crit_edge:                            ; preds = %.lr.ph1358
  %.pre1438 = load double, ptr %24, align 16, !tbaa !17
  br label %1071

1070:                                             ; preds = %.lr.ph1358
  store double %971, ptr %20, align 16, !tbaa !17
  store double 0.000000e+00, ptr %750, align 8, !tbaa !23
  store double %971, ptr %24, align 16, !tbaa !17
  store double 0.000000e+00, ptr %752, align 8, !tbaa !23
  br label %1071

1071:                                             ; preds = %.lr.ph1358._crit_edge, %1070
  %1072 = phi double [ %.pre1438, %.lr.ph1358._crit_edge ], [ %971, %1070 ]
  %1073 = call double @d_imag(ptr noundef nonnull %24) #6
  %1074 = insertelement <2 x double> poison, double %1072, i64 0
  %1075 = insertelement <2 x double> %1074, double %1073, i64 1
  %1076 = fcmp oge <2 x double> %1075, zeroinitializer
  %1077 = fneg <2 x double> %1075
  %1078 = select <2 x i1> %1076, <2 x double> %1075, <2 x double> %1077
  %shift1845 = shufflevector <2 x double> %1078, <2 x double> poison, <2 x i32> <i32 1, i32 poison>
  %1079 = fadd <2 x double> %1078, %shift1845
  %1080 = extractelement <2 x double> %1079, i64 0
  %1081 = fcmp olt double %1080, 1.000000e+00
  br i1 %1081, label %1082, label %.loopexit1188

1082:                                             ; preds = %1071
  store i64 %.410891356, ptr %18, align 8, !tbaa !5
  %1083 = getelementptr inbounds %struct.doublecomplex, ptr %46, i64 %.410891356
  %1084 = load double, ptr %1083, align 8, !tbaa !17
  %1085 = call double @d_imag(ptr noundef nonnull %1083) #6
  %1086 = insertelement <2 x double> poison, double %1084, i64 0
  %1087 = insertelement <2 x double> %1086, double %1085, i64 1
  %1088 = fcmp oge <2 x double> %1087, zeroinitializer
  %1089 = fneg <2 x double> %1087
  %1090 = select <2 x i1> %1088, <2 x double> %1087, <2 x double> %1089
  %1091 = load <2 x double>, ptr %24, align 16
  %1092 = call double @d_imag(ptr noundef nonnull %24) #6
  %1093 = insertelement <2 x double> %1091, double %1092, i64 1
  %1094 = fcmp oge <2 x double> %1093, zeroinitializer
  %1095 = fneg <2 x double> %1093
  %1096 = select <2 x i1> %1094, <2 x double> %1093, <2 x double> %1095
  %1097 = shufflevector <2 x double> %1090, <2 x double> %1096, <2 x i32> <i32 0, i32 2>
  %1098 = shufflevector <2 x double> %1090, <2 x double> %1096, <2 x i32> <i32 1, i32 3>
  %1099 = fadd <2 x double> %1097, %1098
  %1100 = extractelement <2 x double> %1099, i64 1
  %1101 = fmul double %122, %1100
  %1102 = extractelement <2 x double> %1099, i64 0
  %1103 = fcmp ult double %1102, %1101
  br i1 %1103, label %.loopexit1188, label %1104

1104:                                             ; preds = %1082
  store i64 %.410891356, ptr %18, align 8, !tbaa !5
  %1105 = load double, ptr %1083, align 8, !tbaa !17
  %1106 = fcmp oge double %1105, 0.000000e+00
  %1107 = fneg double %1105
  %1108 = select i1 %1106, double %1105, double %1107
  %1109 = call double @d_imag(ptr noundef nonnull %1083) #6
  %1110 = fcmp oge double %1109, 0.000000e+00
  %1111 = fneg double %1109
  %1112 = select i1 %1110, double %1109, double %1111
  %1113 = fadd double %1108, %1112
  %1114 = fdiv double 1.000000e+00, %1113
  %1115 = load i64, ptr %25, align 8, !tbaa !5
  %.not11281326 = icmp slt i64 %1115, 1
  br i1 %.not11281326, label %.loopexit1188, label %.lr.ph1329.preheader

.lr.ph1329.preheader:                             ; preds = %1104
  %min.iters.check1748 = icmp eq i64 %1115, 1
  br i1 %min.iters.check1748, label %.lr.ph1329.preheader1850, label %vector.ph1749

vector.ph1749:                                    ; preds = %.lr.ph1329.preheader
  %n.vec1751 = and i64 %1115, 9223372036854775806
  %ind.end1752 = or i64 %1115, 1
  %broadcast.splatinsert1760 = insertelement <2 x double> poison, double %1114, i64 0
  %broadcast.splat1761 = shufflevector <2 x double> %broadcast.splatinsert1760, <2 x double> poison, <2 x i32> zeroinitializer
  br label %vector.body1754

vector.body1754:                                  ; preds = %vector.body1754, %vector.ph1749
  %index1755 = phi i64 [ 0, %vector.ph1749 ], [ %index.next1763, %vector.body1754 ]
  %1116 = getelementptr %struct.doublecomplex, ptr %14, i64 %index1755
  %wide.vec1757 = load <4 x double>, ptr %1116, align 8, !tbaa !15
  %strided.vec1758 = shufflevector <4 x double> %wide.vec1757, <4 x double> poison, <2 x i32> <i32 0, i32 2>
  %strided.vec1759 = shufflevector <4 x double> %wide.vec1757, <4 x double> poison, <2 x i32> <i32 1, i32 3>
  %1117 = fmul <2 x double> %broadcast.splat1761, %strided.vec1758
  %1118 = fmul <2 x double> %broadcast.splat1761, %strided.vec1759
  %1119 = getelementptr %struct.doublecomplex, ptr %14, i64 %index1755
  %interleaved.vec1762 = shufflevector <2 x double> %1117, <2 x double> %1118, <4 x i32> <i32 0, i32 2, i32 1, i32 3>
  store <4 x double> %interleaved.vec1762, ptr %1119, align 8, !tbaa !15
  %index.next1763 = add nuw i64 %index1755, 2
  %1120 = icmp eq i64 %index.next1763, %n.vec1751
  br i1 %1120, label %middle.block1746, label %vector.body1754, !llvm.loop !34

middle.block1746:                                 ; preds = %vector.body1754
  %cmp.n1764 = icmp eq i64 %1115, %n.vec1751
  %1121 = shufflevector <2 x double> %1117, <2 x double> %1118, <2 x i32> <i32 1, i32 3>
  br i1 %cmp.n1764, label %..loopexit1188_crit_edge, label %.lr.ph1329.preheader1850

.lr.ph1329.preheader1850:                         ; preds = %middle.block1746, %.lr.ph1329.preheader
  %.111327.ph = phi i64 [ 1, %.lr.ph1329.preheader ], [ %ind.end1752, %middle.block1746 ]
  %1122 = insertelement <2 x double> poison, double %1114, i64 0
  %1123 = shufflevector <2 x double> %1122, <2 x double> poison, <2 x i32> zeroinitializer
  br label %.lr.ph1329

.lr.ph1329:                                       ; preds = %.lr.ph1329.preheader1850, %.lr.ph1329
  %.111327 = phi i64 [ %1127, %.lr.ph1329 ], [ %.111327.ph, %.lr.ph1329.preheader1850 ]
  %1124 = getelementptr inbounds %struct.doublecomplex, ptr %46, i64 %.111327
  %1125 = load <2 x double>, ptr %1124, align 8, !tbaa !15
  %1126 = fmul <2 x double> %1123, %1125
  store <2 x double> %1126, ptr %1124, align 8, !tbaa !15
  %1127 = add nuw i64 %.111327, 1
  %exitcond1427.not = icmp eq i64 %.111327, %1115
  br i1 %exitcond1427.not, label %..loopexit1188_crit_edge, label %.lr.ph1329, !llvm.loop !35

..loopexit1188_crit_edge:                         ; preds = %.lr.ph1329, %middle.block1746
  %1128 = phi <2 x double> [ %1121, %middle.block1746 ], [ %1126, %.lr.ph1329 ]
  store <2 x double> %1128, ptr %20, align 16, !tbaa !15
  br label %.loopexit1188

.loopexit1188:                                    ; preds = %1104, %..loopexit1188_crit_edge, %1082, %1071
  store i64 %.410891356, ptr %18, align 8, !tbaa !5
  store i64 %.410891356, ptr %19, align 8, !tbaa !5
  %1129 = getelementptr inbounds %struct.doublecomplex, ptr %46, i64 %.410891356
  %1130 = load <2 x double>, ptr %1129, align 8, !tbaa !15
  %1131 = fneg <2 x double> %1130
  store <2 x double> %1131, ptr %21, align 16, !tbaa !15
  call void @zladiv_(ptr noundef nonnull %20, ptr noundef nonnull %21, ptr noundef nonnull %24) #6
  %1132 = load i64, ptr %18, align 8, !tbaa !5
  %1133 = getelementptr inbounds %struct.doublecomplex, ptr %46, i64 %1132
  %1134 = load <2 x double>, ptr %20, align 16, !tbaa !15
  store <2 x double> %1134, ptr %1133, align 8, !tbaa !15
  %.not1129 = icmp eq i64 %.41089.in1355, 2
  br i1 %.not1129, label %._crit_edge1359, label %1135

1135:                                             ; preds = %.loopexit1188
  store i64 %.410891356, ptr %18, align 8, !tbaa !5
  %1136 = load double, ptr %1129, align 8, !tbaa !17
  %1137 = call double @d_imag(ptr noundef nonnull %1129) #6
  %1138 = insertelement <2 x double> poison, double %1136, i64 0
  %1139 = insertelement <2 x double> %1138, double %1137, i64 1
  %1140 = fcmp oge <2 x double> %1139, zeroinitializer
  %1141 = fneg <2 x double> %1139
  %1142 = select <2 x i1> %1140, <2 x double> %1139, <2 x double> %1141
  %shift1846 = shufflevector <2 x double> %1142, <2 x double> poison, <2 x i32> <i32 1, i32 poison>
  %1143 = fadd <2 x double> %1142, %shift1846
  %1144 = extractelement <2 x double> %1143, i64 0
  %1145 = fcmp ogt double %1144, 1.000000e+00
  br i1 %1145, label %1146, label %.loopexit1187

1146:                                             ; preds = %1135
  store i64 %.410891356, ptr %18, align 8, !tbaa !5
  %1147 = load double, ptr %1129, align 8, !tbaa !17
  %1148 = call double @d_imag(ptr noundef nonnull %1129) #6
  %1149 = insertelement <2 x double> poison, double %1147, i64 0
  %1150 = insertelement <2 x double> %1149, double %1148, i64 1
  %1151 = fcmp oge <2 x double> %1150, zeroinitializer
  %1152 = fneg <2 x double> %1150
  %1153 = select <2 x i1> %1151, <2 x double> %1150, <2 x double> %1152
  %shift1847 = shufflevector <2 x double> %1153, <2 x double> poison, <2 x i32> <i32 1, i32 poison>
  %1154 = fadd <2 x double> %1153, %shift1847
  %1155 = extractelement <2 x double> %1154, i64 0
  %1156 = fdiv double 1.000000e+00, %1155
  %1157 = getelementptr inbounds double, ptr %47, i64 %.410891356
  %1158 = load double, ptr %1157, align 8, !tbaa !15
  %1159 = load i64, ptr %3, align 8, !tbaa !5
  %1160 = getelementptr double, ptr %47, i64 %1159
  %1161 = getelementptr double, ptr %1160, i64 %.410891356
  %1162 = load double, ptr %1161, align 8, !tbaa !15
  %1163 = fmul double %955, %1162
  %1164 = call double @llvm.fmuladd.f64(double %947, double %1158, double %1163)
  %1165 = fmul double %122, %1156
  %1166 = fcmp ult double %1164, %1165
  br i1 %1166, label %.loopexit1187, label %1167

1167:                                             ; preds = %1146
  %1168 = load i64, ptr %25, align 8, !tbaa !5
  %.not11301332 = icmp slt i64 %1168, 1
  br i1 %.not11301332, label %.loopexit1187, label %.lr.ph1335.preheader

.lr.ph1335.preheader:                             ; preds = %1167
  %min.iters.check1729 = icmp eq i64 %1168, 1
  br i1 %min.iters.check1729, label %.lr.ph1335.preheader1849, label %vector.ph1730

vector.ph1730:                                    ; preds = %.lr.ph1335.preheader
  %n.vec1732 = and i64 %1168, 9223372036854775806
  %ind.end1733 = or i64 %1168, 1
  %broadcast.splatinsert1741 = insertelement <2 x double> poison, double %1156, i64 0
  %1169 = shufflevector <2 x double> %broadcast.splatinsert1741, <2 x double> poison, <4 x i32> zeroinitializer
  br label %vector.body1735

vector.body1735:                                  ; preds = %vector.body1735, %vector.ph1730
  %index1736 = phi i64 [ 0, %vector.ph1730 ], [ %index.next1744, %vector.body1735 ]
  %1170 = getelementptr %struct.doublecomplex, ptr %14, i64 %index1736
  %wide.vec1738 = load <4 x double>, ptr %1170, align 8, !tbaa !15
  %1171 = getelementptr %struct.doublecomplex, ptr %14, i64 %index1736
  %interleaved.vec1743 = fmul <4 x double> %1169, %wide.vec1738
  store <4 x double> %interleaved.vec1743, ptr %1171, align 8, !tbaa !15
  %index.next1744 = add nuw i64 %index1736, 2
  %1172 = icmp eq i64 %index.next1744, %n.vec1732
  br i1 %1172, label %middle.block1727, label %vector.body1735, !llvm.loop !36

middle.block1727:                                 ; preds = %vector.body1735
  %cmp.n1745 = icmp eq i64 %1168, %n.vec1732
  br i1 %cmp.n1745, label %..loopexit1187_crit_edge, label %.lr.ph1335.preheader1849

.lr.ph1335.preheader1849:                         ; preds = %middle.block1727, %.lr.ph1335.preheader
  %.121333.ph = phi i64 [ 1, %.lr.ph1335.preheader ], [ %ind.end1733, %middle.block1727 ]
  %1173 = insertelement <2 x double> poison, double %1156, i64 0
  %1174 = shufflevector <2 x double> %1173, <2 x double> poison, <2 x i32> zeroinitializer
  br label %.lr.ph1335

.lr.ph1335:                                       ; preds = %.lr.ph1335.preheader1849, %.lr.ph1335
  %.121333 = phi i64 [ %1178, %.lr.ph1335 ], [ %.121333.ph, %.lr.ph1335.preheader1849 ]
  %1175 = getelementptr inbounds %struct.doublecomplex, ptr %46, i64 %.121333
  %1176 = load <2 x double>, ptr %1175, align 8, !tbaa !15
  %1177 = fmul <2 x double> %1174, %1176
  store <2 x double> %1177, ptr %1175, align 8, !tbaa !15
  %1178 = add nuw i64 %.121333, 1
  %exitcond1428.not = icmp eq i64 %.121333, %1168
  br i1 %exitcond1428.not, label %..loopexit1187_crit_edge, label %.lr.ph1335, !llvm.loop !37

..loopexit1187_crit_edge:                         ; preds = %.lr.ph1335, %middle.block1727
  store i64 %1168, ptr %19, align 8, !tbaa !5
  br label %.loopexit1187

.loopexit1187:                                    ; preds = %1167, %..loopexit1187_crit_edge, %1146, %1135
  %1179 = load <2 x double>, ptr %28, align 16
  %1180 = load double, ptr %751, align 8, !tbaa !23
  %1181 = fneg double %1180
  %1182 = load <2 x double>, ptr %1129, align 8, !tbaa !15
  %1183 = extractelement <2 x double> %1182, i64 0
  %1184 = fmul double %.3, %1183
  %1185 = extractelement <2 x double> %1182, i64 1
  %1186 = fmul double %.3, %1185
  %1187 = insertelement <2 x double> poison, double %1180, i64 0
  %1188 = insertelement <2 x double> %1187, double %1181, i64 1
  %1189 = fmul <2 x double> %1182, %1188
  %1190 = shufflevector <2 x double> %1189, <2 x double> poison, <2 x i32> <i32 1, i32 0>
  %1191 = shufflevector <2 x double> %1179, <2 x double> poison, <2 x i32> zeroinitializer
  %1192 = call <2 x double> @llvm.fmuladd.v2f64(<2 x double> %1191, <2 x double> %1182, <2 x double> %1190)
  store <2 x double> %1192, ptr %20, align 16, !tbaa !15
  %1193 = add nsw i64 %.41089.in1355, -2
  store i64 %1193, ptr %18, align 8, !tbaa !5
  %invariant.gep1338 = getelementptr %struct.doublecomplex, ptr %35, i64 %1041
  %invariant.gep1340 = getelementptr %struct.doublecomplex, ptr %39, i64 %1046
  %.not11311342 = icmp slt i64 %.41089.in1355, 3
  br i1 %.not11311342, label %._crit_edge1359, label %.lr.ph1345

.lr.ph1345:                                       ; preds = %.loopexit1187
  %1194 = fneg double %1186
  %1195 = extractelement <2 x double> %1192, i64 1
  %1196 = fneg double %1195
  %min.iters.check1694 = icmp ult i64 %1035, 2
  br i1 %min.iters.check1694, label %scalar.ph1693.preheader, label %vector.memcheck1663

vector.memcheck1663:                              ; preds = %.lr.ph1345
  %bound01677 = icmp ugt ptr %scevgep1668, %14
  %bound11678 = icmp ult ptr %scevgep1667, %scevgep1666
  %found.conflict1679 = and i1 %bound01677, %bound11678
  %bound01680 = icmp ugt ptr %scevgep1670, %14
  %bound11681 = icmp ult ptr %scevgep1669, %scevgep1666
  %found.conflict1682 = and i1 %bound01680, %bound11681
  %conflict.rdx1683 = or i1 %found.conflict1679, %found.conflict1682
  %bound01684 = icmp ult ptr %scevgep1671, %scevgep1674
  %bound11685 = icmp ult ptr %scevgep1673, %scevgep1672
  %found.conflict1686 = and i1 %bound01684, %bound11685
  %conflict.rdx1687 = or i1 %conflict.rdx1683, %found.conflict1686
  %bound01688 = icmp ult ptr %scevgep1671, %scevgep1676
  %bound11689 = icmp ult ptr %scevgep1675, %scevgep1672
  %found.conflict1690 = and i1 %bound01688, %bound11689
  %conflict.rdx1691 = or i1 %conflict.rdx1687, %found.conflict1690
  br i1 %conflict.rdx1691, label %scalar.ph1693.preheader, label %vector.ph1695

vector.ph1695:                                    ; preds = %vector.memcheck1663
  %n.vec1697 = and i64 %1035, -2
  %ind.end1698 = or i64 %1035, 1
  %broadcast.splatinsert1706 = insertelement <2 x double> poison, double %1194, i64 0
  %broadcast.splat1707 = shufflevector <2 x double> %broadcast.splatinsert1706, <2 x double> poison, <2 x i32> zeroinitializer
  %broadcast.splatinsert1708 = insertelement <2 x double> poison, double %1184, i64 0
  %broadcast.splat1709 = shufflevector <2 x double> %broadcast.splatinsert1708, <2 x double> poison, <2 x i32> zeroinitializer
  %broadcast.splatinsert1710 = insertelement <2 x double> poison, double %1186, i64 0
  %broadcast.splat1711 = shufflevector <2 x double> %broadcast.splatinsert1710, <2 x double> poison, <2 x i32> zeroinitializer
  %broadcast.splatinsert1718 = insertelement <2 x double> poison, double %1196, i64 0
  %broadcast.splat1719 = shufflevector <2 x double> %broadcast.splatinsert1718, <2 x double> poison, <2 x i32> zeroinitializer
  %broadcast.splat1721 = shufflevector <2 x double> %1192, <2 x double> poison, <2 x i32> zeroinitializer
  %broadcast.splat1723 = shufflevector <2 x double> %1192, <2 x double> poison, <2 x i32> <i32 1, i32 1>
  br label %vector.body1700

vector.body1700:                                  ; preds = %vector.body1700, %vector.ph1695
  %index1701 = phi i64 [ 0, %vector.ph1695 ], [ %index.next1725, %vector.body1700 ]
  %offset.idx1702 = or disjoint i64 %index1701, 1
  %1197 = getelementptr %struct.doublecomplex, ptr %invariant.gep1338, i64 %offset.idx1702
  %wide.vec1703 = load <4 x double>, ptr %1197, align 8, !tbaa !15
  %strided.vec1704 = shufflevector <4 x double> %wide.vec1703, <4 x double> poison, <2 x i32> <i32 0, i32 2>
  %strided.vec1705 = shufflevector <4 x double> %wide.vec1703, <4 x double> poison, <2 x i32> <i32 1, i32 3>
  %1198 = fmul <2 x double> %strided.vec1705, %broadcast.splat1707
  %1199 = call <2 x double> @llvm.fmuladd.v2f64(<2 x double> %broadcast.splat1709, <2 x double> %strided.vec1704, <2 x double> %1198)
  %1200 = fmul <2 x double> %broadcast.splat1711, %strided.vec1704
  %1201 = call <2 x double> @llvm.fmuladd.v2f64(<2 x double> %broadcast.splat1709, <2 x double> %strided.vec1705, <2 x double> %1200)
  %1202 = getelementptr %struct.doublecomplex, ptr %14, i64 %index1701
  %wide.vec1712 = load <4 x double>, ptr %1202, align 8, !tbaa !15
  %strided.vec1713 = shufflevector <4 x double> %wide.vec1712, <4 x double> poison, <2 x i32> <i32 0, i32 2>
  %strided.vec1714 = shufflevector <4 x double> %wide.vec1712, <4 x double> poison, <2 x i32> <i32 1, i32 3>
  %1203 = fadd <2 x double> %1199, %strided.vec1713
  %1204 = fadd <2 x double> %1201, %strided.vec1714
  %1205 = getelementptr %struct.doublecomplex, ptr %invariant.gep1340, i64 %offset.idx1702
  %wide.vec1715 = load <4 x double>, ptr %1205, align 8, !tbaa !15
  %strided.vec1716 = shufflevector <4 x double> %wide.vec1715, <4 x double> poison, <2 x i32> <i32 0, i32 2>
  %strided.vec1717 = shufflevector <4 x double> %wide.vec1715, <4 x double> poison, <2 x i32> <i32 1, i32 3>
  %1206 = fmul <2 x double> %strided.vec1717, %broadcast.splat1719
  %1207 = call <2 x double> @llvm.fmuladd.v2f64(<2 x double> %broadcast.splat1721, <2 x double> %strided.vec1716, <2 x double> %1206)
  %1208 = fmul <2 x double> %broadcast.splat1723, %strided.vec1716
  %1209 = call <2 x double> @llvm.fmuladd.v2f64(<2 x double> %broadcast.splat1721, <2 x double> %strided.vec1717, <2 x double> %1208)
  %1210 = fsub <2 x double> %1203, %1207
  %1211 = fsub <2 x double> %1204, %1209
  %1212 = getelementptr %struct.doublecomplex, ptr %14, i64 %index1701
  %interleaved.vec1724 = shufflevector <2 x double> %1210, <2 x double> %1211, <4 x i32> <i32 0, i32 2, i32 1, i32 3>
  store <4 x double> %interleaved.vec1724, ptr %1212, align 8, !tbaa !15
  %index.next1725 = add nuw i64 %index1701, 2
  %1213 = icmp eq i64 %index.next1725, %n.vec1697
  br i1 %1213, label %middle.block1692, label %vector.body1700, !llvm.loop !38

middle.block1692:                                 ; preds = %vector.body1700
  %cmp.n1726 = icmp eq i64 %1035, %n.vec1697
  %1214 = shufflevector <2 x double> %1199, <2 x double> %1201, <2 x i32> <i32 1, i32 3>
  %1215 = shufflevector <2 x double> %1203, <2 x double> %1204, <2 x i32> <i32 1, i32 3>
  %1216 = shufflevector <2 x double> %1207, <2 x double> %1209, <2 x i32> <i32 1, i32 3>
  %1217 = shufflevector <2 x double> %1210, <2 x double> %1211, <2 x i32> <i32 1, i32 3>
  br i1 %cmp.n1726, label %.loopexit, label %scalar.ph1693.preheader

scalar.ph1693.preheader:                          ; preds = %middle.block1692, %vector.memcheck1663, %.lr.ph1345
  %.131343.ph = phi i64 [ 1, %vector.memcheck1663 ], [ 1, %.lr.ph1345 ], [ %ind.end1698, %middle.block1692 ]
  %1218 = insertelement <2 x double> poison, double %1186, i64 0
  %1219 = insertelement <2 x double> %1218, double %1194, i64 1
  %1220 = insertelement <2 x double> poison, double %1184, i64 0
  %1221 = shufflevector <2 x double> %1220, <2 x double> poison, <2 x i32> zeroinitializer
  %1222 = shufflevector <2 x double> %1192, <2 x double> poison, <2 x i32> <i32 1, i32 poison>
  %1223 = insertelement <2 x double> %1222, double %1196, i64 1
  %1224 = shufflevector <2 x double> %1192, <2 x double> poison, <2 x i32> zeroinitializer
  br label %scalar.ph1693

scalar.ph1693:                                    ; preds = %scalar.ph1693.preheader, %scalar.ph1693
  %.131343 = phi i64 [ %1237, %scalar.ph1693 ], [ %.131343.ph, %scalar.ph1693.preheader ]
  %gep1339 = getelementptr %struct.doublecomplex, ptr %invariant.gep1338, i64 %.131343
  %1225 = load <2 x double>, ptr %gep1339, align 8, !tbaa !15
  %1226 = fmul <2 x double> %1225, %1219
  %1227 = shufflevector <2 x double> %1226, <2 x double> poison, <2 x i32> <i32 1, i32 0>
  %1228 = call <2 x double> @llvm.fmuladd.v2f64(<2 x double> %1221, <2 x double> %1225, <2 x double> %1227)
  %1229 = getelementptr inbounds %struct.doublecomplex, ptr %46, i64 %.131343
  %1230 = load <2 x double>, ptr %1229, align 8, !tbaa !15
  %1231 = fadd <2 x double> %1228, %1230
  %gep1341 = getelementptr %struct.doublecomplex, ptr %invariant.gep1340, i64 %.131343
  %1232 = load <2 x double>, ptr %gep1341, align 8, !tbaa !15
  %1233 = fmul <2 x double> %1232, %1223
  %1234 = shufflevector <2 x double> %1233, <2 x double> poison, <2 x i32> <i32 1, i32 0>
  %1235 = call <2 x double> @llvm.fmuladd.v2f64(<2 x double> %1224, <2 x double> %1232, <2 x double> %1234)
  %1236 = fsub <2 x double> %1231, %1235
  store <2 x double> %1236, ptr %1229, align 8, !tbaa !15
  %1237 = add nuw nsw i64 %.131343, 1
  %.not1131.not = icmp slt i64 %.131343, %1193
  br i1 %.not1131.not, label %scalar.ph1693, label %.loopexit, !llvm.loop !39

.loopexit:                                        ; preds = %scalar.ph1693, %middle.block1692
  %.131343.lcssa = phi i64 [ %n.vec1697, %middle.block1692 ], [ %.131343, %scalar.ph1693 ]
  %1238 = phi <2 x double> [ %1214, %middle.block1692 ], [ %1228, %scalar.ph1693 ]
  %1239 = phi <2 x double> [ %1215, %middle.block1692 ], [ %1231, %scalar.ph1693 ]
  %1240 = phi <2 x double> [ %1216, %middle.block1692 ], [ %1235, %scalar.ph1693 ]
  %1241 = phi <2 x double> [ %1217, %middle.block1692 ], [ %1236, %scalar.ph1693 ]
  store i64 %.131343.lcssa, ptr %19, align 8, !tbaa !5
  store <2 x double> %1238, ptr %22, align 16, !tbaa !15
  store <2 x double> %1239, ptr %21, align 16, !tbaa !15
  store <2 x double> %1240, ptr %23, align 16, !tbaa !15
  store <2 x double> %1241, ptr %20, align 16, !tbaa !15
  %indvar.next1665 = add i64 %indvar1664, 1
  br label %.lr.ph1358, !llvm.loop !40

._crit_edge1359:                                  ; preds = %.loopexit1188, %.loopexit1187, %.thread1464, %.loopexit1829
  br i1 %.not1124, label %1246, label %1242

1242:                                             ; preds = %._crit_edge1359
  %1243 = load i64, ptr %3, align 8, !tbaa !5
  %1244 = getelementptr %struct.doublecomplex, ptr %14, i64 %1243
  %1245 = call i32 @f2c_zgemv(ptr noundef nonnull @.str.9, ptr noundef nonnull %3, ptr noundef nonnull %25, ptr noundef nonnull @c_b2, ptr noundef %10, ptr noundef nonnull %11, ptr noundef nonnull %14, ptr noundef nonnull @c__1, ptr noundef nonnull @c_b1, ptr noundef %1244, ptr noundef nonnull @c__1) #6
  br label %1246

1246:                                             ; preds = %._crit_edge1359, %1242
  %.01069.in = phi ptr [ %3, %1242 ], [ %25, %._crit_edge1359 ]
  %.11068 = phi i64 [ 1, %1242 ], [ 0, %._crit_edge1359 ]
  %.01069 = load i64, ptr %.01069.in, align 8, !tbaa !5
  store i64 %.01069, ptr %18, align 8, !tbaa !5
  %.not11251360 = icmp slt i64 %.01069, 1
  br i1 %.not11251360, label %._crit_edge1365.thread, label %.lr.ph1364

.lr.ph1364:                                       ; preds = %1246, %.lr.ph1364
  %.41362 = phi double [ %1263, %.lr.ph1364 ], [ 0.000000e+00, %1246 ]
  %.141361 = phi i64 [ %1264, %.lr.ph1364 ], [ 1, %1246 ]
  %1247 = load i64, ptr %3, align 8, !tbaa !5
  %1248 = mul nuw nsw i64 %1247, %.11068
  %1249 = add nsw i64 %1248, %.141361
  store i64 %1249, ptr %19, align 8, !tbaa !5
  %1250 = getelementptr inbounds %struct.doublecomplex, ptr %46, i64 %1249
  %1251 = load double, ptr %1250, align 8, !tbaa !17
  %1252 = getelementptr %struct.doublecomplex, ptr %46, i64 %1248
  %1253 = getelementptr %struct.doublecomplex, ptr %1252, i64 %.141361
  %1254 = call double @d_imag(ptr noundef %1253) #6
  %1255 = insertelement <2 x double> poison, double %1251, i64 0
  %1256 = insertelement <2 x double> %1255, double %1254, i64 1
  %1257 = fcmp oge <2 x double> %1256, zeroinitializer
  %1258 = fneg <2 x double> %1256
  %1259 = select <2 x i1> %1257, <2 x double> %1256, <2 x double> %1258
  %shift1848 = shufflevector <2 x double> %1259, <2 x double> poison, <2 x i32> <i32 1, i32 poison>
  %1260 = fadd <2 x double> %1259, %shift1848
  %1261 = extractelement <2 x double> %1260, i64 0
  %1262 = fcmp oge double %.41362, %1261
  %1263 = select i1 %1262, double %.41362, double %1261
  %1264 = add nuw nsw i64 %.141361, 1
  %1265 = load i64, ptr %18, align 8, !tbaa !5
  %.not1125.not = icmp slt i64 %.141361, %1265
  br i1 %.not1125.not, label %.lr.ph1364, label %._crit_edge1365, !llvm.loop !41

._crit_edge1365:                                  ; preds = %.lr.ph1364
  %1266 = load double, ptr %30, align 8, !tbaa !15
  %1267 = fcmp ogt double %1263, %1266
  br i1 %1267, label %1270, label %._crit_edge1365..loopexit1190_crit_edge

._crit_edge1365.thread:                           ; preds = %1246
  %1268 = load double, ptr %30, align 8, !tbaa !15
  %1269 = fcmp olt double %1268, 0.000000e+00
  br i1 %1269, label %.thread1467, label %._crit_edge1365..loopexit1190_crit_edge

.thread1467:                                      ; preds = %._crit_edge1365.thread
  %.pre14401469 = load i64, ptr %3, align 8, !tbaa !5
  br label %.loopexit1190

._crit_edge1365..loopexit1190_crit_edge:          ; preds = %._crit_edge1365.thread, %._crit_edge1365
  %.pre1439 = load i64, ptr %3, align 8, !tbaa !5
  br label %.loopexit1190

1270:                                             ; preds = %._crit_edge1365
  %1271 = fdiv double 1.000000e+00, %1263
  %.pre1440 = load i64, ptr %3, align 8, !tbaa !5
  br i1 %.not11251360, label %.loopexit1190, label %.lr.ph1370

.lr.ph1370:                                       ; preds = %1270
  %1272 = mul nsw i64 %771, %43
  %1273 = mul nuw nsw i64 %.pre1440, %.11068
  %1274 = getelementptr %struct.doublecomplex, ptr %46, i64 %1273
  %min.iters.check1646 = icmp ult i64 %.01069, 8
  br i1 %min.iters.check1646, label %scalar.ph1645.preheader, label %vector.memcheck1624

vector.memcheck1624:                              ; preds = %.lr.ph1370
  %1275 = shl i64 %.210731380, 4
  %1276 = add i64 %1275, -32
  %1277 = mul i64 %43, %1276
  %scevgep1625 = getelementptr i8, ptr %10, i64 %1277
  %1278 = shl i64 %.01069, 4
  %1279 = add i64 %1277, %1278
  %scevgep1627 = getelementptr i8, ptr %scevgep1626, i64 %1279
  %1280 = shl nuw nsw i64 %.11068, 4
  %1281 = mul i64 %1280, %.pre1440
  %scevgep1628 = getelementptr i8, ptr %14, i64 %1281
  %1282 = add i64 %1281, %1278
  %scevgep1630 = getelementptr i8, ptr %scevgep1629, i64 %1282
  %scevgep1632 = getelementptr i8, ptr %scevgep1631, i64 %1277
  %scevgep1633 = getelementptr i8, ptr %10, i64 %1279
  %scevgep1635 = getelementptr i8, ptr %scevgep1634, i64 %1281
  %scevgep1636 = getelementptr i8, ptr %14, i64 %1282
  %bound01637 = icmp ult ptr %scevgep1625, %scevgep1630
  %bound11638 = icmp ult ptr %scevgep1628, %scevgep1627
  %found.conflict1639 = and i1 %bound01637, %bound11638
  %bound01640 = icmp ult ptr %scevgep1632, %scevgep1636
  %bound11641 = icmp ult ptr %scevgep1635, %scevgep1633
  %found.conflict1642 = and i1 %bound01640, %bound11641
  %conflict.rdx1643 = or i1 %found.conflict1639, %found.conflict1642
  br i1 %conflict.rdx1643, label %scalar.ph1645.preheader, label %vector.ph1647

vector.ph1647:                                    ; preds = %vector.memcheck1624
  %n.vec1649 = and i64 %.01069, 9223372036854775806
  %ind.end1650 = or i64 %.01069, 1
  %broadcast.splatinsert1658 = insertelement <2 x double> poison, double %1271, i64 0
  %broadcast.splat1659 = shufflevector <2 x double> %broadcast.splatinsert1658, <2 x double> poison, <2 x i32> zeroinitializer
  %invariant.gep = getelementptr %struct.doublecomplex, ptr %45, i64 %1272
  br label %vector.body1652

vector.body1652:                                  ; preds = %vector.body1652, %vector.ph1647
  %index1653 = phi i64 [ 0, %vector.ph1647 ], [ %index.next1661, %vector.body1652 ]
  %offset.idx1654 = or disjoint i64 %index1653, 1
  %1283 = getelementptr %struct.doublecomplex, ptr %1274, i64 %offset.idx1654
  %wide.vec1655 = load <4 x double>, ptr %1283, align 8, !tbaa !15
  %strided.vec1656 = shufflevector <4 x double> %wide.vec1655, <4 x double> poison, <2 x i32> <i32 0, i32 2>
  %strided.vec1657 = shufflevector <4 x double> %wide.vec1655, <4 x double> poison, <2 x i32> <i32 1, i32 3>
  %1284 = fmul <2 x double> %broadcast.splat1659, %strided.vec1656
  %1285 = fmul <2 x double> %broadcast.splat1659, %strided.vec1657
  %gep1946 = getelementptr %struct.doublecomplex, ptr %invariant.gep, i64 %offset.idx1654
  %interleaved.vec1660 = shufflevector <2 x double> %1284, <2 x double> %1285, <4 x i32> <i32 0, i32 2, i32 1, i32 3>
  store <4 x double> %interleaved.vec1660, ptr %gep1946, align 8, !tbaa !15
  %index.next1661 = add nuw i64 %index1653, 2
  %1286 = icmp eq i64 %index.next1661, %n.vec1649
  br i1 %1286, label %middle.block1644, label %vector.body1652, !llvm.loop !42

middle.block1644:                                 ; preds = %vector.body1652
  %1287 = add i64 %index1653, 2
  %1288 = add nsw i64 %1287, %1272
  %cmp.n1662 = icmp eq i64 %.01069, %n.vec1649
  %1289 = shufflevector <2 x double> %1284, <2 x double> %1285, <2 x i32> <i32 1, i32 3>
  br i1 %cmp.n1662, label %..loopexit1190_crit_edge, label %scalar.ph1645.preheader

scalar.ph1645.preheader:                          ; preds = %middle.block1644, %vector.memcheck1624, %.lr.ph1370
  %.151368.ph = phi i64 [ 1, %vector.memcheck1624 ], [ 1, %.lr.ph1370 ], [ %ind.end1650, %middle.block1644 ]
  %xtraiter1901 = and i64 %.01069, 1
  %lcmp.mod1902.not = icmp eq i64 %xtraiter1901, 0
  br i1 %lcmp.mod1902.not, label %scalar.ph1645.prol.loopexit, label %scalar.ph1645.prol

scalar.ph1645.prol:                               ; preds = %scalar.ph1645.preheader
  %1290 = add nsw i64 %.151368.ph, %1272
  %1291 = getelementptr %struct.doublecomplex, ptr %1274, i64 %.151368.ph
  %1292 = load <2 x double>, ptr %1291, align 8, !tbaa !15
  %1293 = insertelement <2 x double> poison, double %1271, i64 0
  %1294 = shufflevector <2 x double> %1293, <2 x double> poison, <2 x i32> zeroinitializer
  %1295 = fmul <2 x double> %1294, %1292
  %1296 = getelementptr inbounds %struct.doublecomplex, ptr %45, i64 %1290
  store <2 x double> %1295, ptr %1296, align 8, !tbaa !15
  %1297 = add nuw i64 %.151368.ph, 1
  br label %scalar.ph1645.prol.loopexit

scalar.ph1645.prol.loopexit:                      ; preds = %scalar.ph1645.prol, %scalar.ph1645.preheader
  %.lcssa1880.unr = phi i64 [ poison, %scalar.ph1645.preheader ], [ %1290, %scalar.ph1645.prol ]
  %.lcssa1879.unr = phi <2 x double> [ poison, %scalar.ph1645.preheader ], [ %1295, %scalar.ph1645.prol ]
  %.151368.unr = phi i64 [ %.151368.ph, %scalar.ph1645.preheader ], [ %1297, %scalar.ph1645.prol ]
  %1298 = icmp eq i64 %.01069, %.151368.ph
  br i1 %1298, label %..loopexit1190_crit_edge, label %scalar.ph1645.preheader.new

scalar.ph1645.preheader.new:                      ; preds = %scalar.ph1645.prol.loopexit
  %1299 = insertelement <2 x double> poison, double %1271, i64 0
  %1300 = shufflevector <2 x double> %1299, <2 x double> poison, <2 x i32> zeroinitializer
  %invariant.gep1947 = getelementptr %struct.doublecomplex, ptr %45, i64 %1272
  %1301 = insertelement <2 x double> poison, double %1271, i64 0
  %1302 = shufflevector <2 x double> %1301, <2 x double> poison, <2 x i32> zeroinitializer
  br label %scalar.ph1645

scalar.ph1645:                                    ; preds = %scalar.ph1645, %scalar.ph1645.preheader.new
  %.151368 = phi i64 [ %.151368.unr, %scalar.ph1645.preheader.new ], [ %1312, %scalar.ph1645 ]
  %1303 = getelementptr %struct.doublecomplex, ptr %1274, i64 %.151368
  %1304 = load <2 x double>, ptr %1303, align 8, !tbaa !15
  %1305 = fmul <2 x double> %1300, %1304
  %gep1948 = getelementptr %struct.doublecomplex, ptr %invariant.gep1947, i64 %.151368
  store <2 x double> %1305, ptr %gep1948, align 8, !tbaa !15
  %1306 = add nuw i64 %.151368, 1
  %1307 = add nsw i64 %1306, %1272
  %1308 = getelementptr %struct.doublecomplex, ptr %1274, i64 %1306
  %1309 = load <2 x double>, ptr %1308, align 8, !tbaa !15
  %1310 = fmul <2 x double> %1302, %1309
  %1311 = getelementptr inbounds %struct.doublecomplex, ptr %45, i64 %1307
  store <2 x double> %1310, ptr %1311, align 8, !tbaa !15
  %1312 = add nuw i64 %.151368, 2
  %exitcond1429.not.1 = icmp eq i64 %1306, %.01069
  br i1 %exitcond1429.not.1, label %..loopexit1190_crit_edge, label %scalar.ph1645, !llvm.loop !43

..loopexit1190_crit_edge:                         ; preds = %scalar.ph1645.prol.loopexit, %scalar.ph1645, %middle.block1644
  %.lcssa1523 = phi i64 [ %1288, %middle.block1644 ], [ %.lcssa1880.unr, %scalar.ph1645.prol.loopexit ], [ %1307, %scalar.ph1645 ]
  %1313 = phi <2 x double> [ %1289, %middle.block1644 ], [ %.lcssa1879.unr, %scalar.ph1645.prol.loopexit ], [ %1310, %scalar.ph1645 ]
  store i64 %.lcssa1523, ptr %19, align 8, !tbaa !5
  store <2 x double> %1313, ptr %20, align 16, !tbaa !15
  br label %.loopexit1190

.loopexit1190:                                    ; preds = %.thread1467, %._crit_edge1365..loopexit1190_crit_edge, %1270, %..loopexit1190_crit_edge
  %1314 = phi i64 [ %.pre1439, %._crit_edge1365..loopexit1190_crit_edge ], [ %.pre1440, %..loopexit1190_crit_edge ], [ %.pre1440, %1270 ], [ %.pre14401469, %.thread1467 ]
  %.11070 = phi i64 [ 0, %._crit_edge1365..loopexit1190_crit_edge ], [ %.01069, %..loopexit1190_crit_edge ], [ %.01069, %1270 ], [ %.01069, %.thread1467 ]
  store i64 %1314, ptr %18, align 8, !tbaa !5
  %.not1127.not1374 = icmp slt i64 %.11070, %1314
  br i1 %.not1127.not1374, label %.lr.ph1377, label %.loopexit1189

.lr.ph1377:                                       ; preds = %.loopexit1190
  %1315 = shl i64 %.210731380, 4
  %1316 = add i64 %1315, -32
  %1317 = mul i64 %43, %1316
  %1318 = shl i64 %.11070, 4
  %1319 = getelementptr i8, ptr %10, i64 %1317
  %scevgep1430 = getelementptr i8, ptr %1319, i64 %1318
  %1320 = sub i64 %1314, %.11070
  %1321 = shl i64 %1320, 4
  call void @llvm.memset.p0.i64(ptr align 8 %scevgep1430, i8 0, i64 %1321, i1 false), !tbaa !15
  %1322 = mul i64 %771, %43
  %1323 = add i64 %1314, %1322
  store i64 %1323, ptr %19, align 8, !tbaa !5
  br label %.loopexit1189

.loopexit1189:                                    ; preds = %.loopexit1190, %.lr.ph1377, %802, %768
  %.31074 = phi i64 [ %771, %802 ], [ %.210731380, %768 ], [ %771, %.lr.ph1377 ], [ %771, %.loopexit1190 ]
  %1324 = load i64, ptr %25, align 8, !tbaa !5
  %1325 = add nsw i64 %1324, -1
  store i64 %1325, ptr %25, align 8, !tbaa !5
  %1326 = icmp sgt i64 %1324, 1
  br i1 %1326, label %767, label %.loopexit1191, !llvm.loop !44

.loopexit1191.sink.split:                         ; preds = %.thread1158, %.thread1170
  %storemerge = phi i64 [ %105, %.thread1170 ], [ %.neg, %.thread1158 ]
  store i64 %storemerge, ptr %18, align 8, !tbaa !5
  %1327 = call i32 @xerbla_(ptr noundef nonnull @.str.5, ptr noundef nonnull %18) #6
  br label %.loopexit1191

.loopexit1191:                                    ; preds = %.loopexit1189, %.loopexit1191.sink.split, %745, %.loopexit1195, %106
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %30) #6
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %29) #6
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %28) #6
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %27) #6
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %26) #6
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %25) #6
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %24) #6
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %23) #6
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %22) #6
  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 8, ptr nonnull %19) #6
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %18) #6
  ret i32 0
}

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

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

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

declare double @d_imag(ptr noundef) local_unnamed_addr #2

declare double @dlamch_(ptr noundef) local_unnamed_addr #2

declare i32 @dlabad_(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

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

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

declare i32 @f2c_zgemv(ptr noundef, ptr noundef, 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 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 i64 @llvm.umax.i64(i64, i64) #4

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

; Function Attrs: nocallback nofree nosync nounwind speculatable willreturn memory(none)
declare i64 @llvm.vector.reduce.add.v2i64(<2 x i64>) #4

; 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>) #4

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 = { nocallback nofree nosync nounwind speculatable willreturn memory(none) }
attributes #5 = { nocallback nofree nounwind willreturn memory(argmem: write) }
attributes #6 = { nounwind }

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

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


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