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

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

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

95:                                               ; preds = %10
  %96 = load ptr, ptr %12, align 8, !tbaa !5
  %97 = load i32, ptr %96, align 4, !tbaa !9
  store i32 %97, ptr %40, align 4, !tbaa !9
  br label %98

98:                                               ; preds = %1542, %95
  %99 = load ptr, ptr %13, align 8, !tbaa !5
  %100 = load i32, ptr %99, align 4, !tbaa !9
  %101 = load i32, ptr %40, align 4, !tbaa !9
  %102 = add nsw i32 %100, %101
  %103 = load ptr, ptr %12, align 8, !tbaa !5
  %104 = load i32, ptr %103, align 4, !tbaa !9
  %105 = sub nsw i32 %102, %104
  store i32 %105, ptr %59, align 4, !tbaa !9
  %106 = load i32, ptr %40, align 4, !tbaa !9
  %107 = load ptr, ptr %12, align 8, !tbaa !5
  %108 = load i32, ptr %107, align 4, !tbaa !9
  %109 = load ptr, ptr %13, align 8, !tbaa !5
  %110 = load i32, ptr %109, align 4, !tbaa !9
  %111 = sub nsw i32 %108, %110
  %112 = add nsw i32 %111, 1
  %113 = icmp sle i32 %106, %112
  br i1 %113, label %114, label %120

114:                                              ; preds = %98
  %115 = load ptr, ptr %13, align 8, !tbaa !5
  %116 = load i32, ptr %115, align 4, !tbaa !9
  %117 = load ptr, ptr %12, align 8, !tbaa !5
  %118 = load i32, ptr %117, align 4, !tbaa !9
  %119 = icmp slt i32 %116, %118
  br i1 %119, label %123, label %120

120:                                              ; preds = %114, %98
  %121 = load i32, ptr %40, align 4, !tbaa !9
  %122 = icmp slt i32 %121, 1
  br i1 %122, label %123, label %124

123:                                              ; preds = %120, %114
  br label %1546

124:                                              ; preds = %120
  store i32 1, ptr %47, align 4, !tbaa !9
  %125 = load i32, ptr %40, align 4, !tbaa !9
  store i32 %125, ptr %41, align 4, !tbaa !9
  %126 = load ptr, ptr %15, align 8, !tbaa !5
  %127 = load i32, ptr %40, align 4, !tbaa !9
  %128 = load i32, ptr %21, align 4, !tbaa !9
  %129 = mul nsw i32 %127, %128
  %130 = add nsw i32 %129, 1
  %131 = sext i32 %130 to i64
  %132 = getelementptr inbounds %struct.doublecomplex, ptr %126, i64 %131
  %133 = load ptr, ptr %18, align 8, !tbaa !5
  %134 = load i32, ptr %59, align 4, !tbaa !9
  %135 = load i32, ptr %23, align 4, !tbaa !9
  %136 = mul nsw i32 %134, %135
  %137 = add nsw i32 %136, 1
  %138 = sext i32 %137 to i64
  %139 = getelementptr inbounds %struct.doublecomplex, ptr %133, i64 %138
  call void @zcopy_(ptr noundef %40, ptr noundef %132, ptr noundef @c__1, ptr noundef %139, ptr noundef @c__1)
  %140 = load i32, ptr %40, align 4, !tbaa !9
  %141 = load ptr, ptr %12, align 8, !tbaa !5
  %142 = load i32, ptr %141, align 4, !tbaa !9
  %143 = icmp slt i32 %140, %142
  br i1 %143, label %144, label %177

144:                                              ; preds = %124
  %145 = load ptr, ptr %12, align 8, !tbaa !5
  %146 = load i32, ptr %145, align 4, !tbaa !9
  %147 = load i32, ptr %40, align 4, !tbaa !9
  %148 = sub nsw i32 %146, %147
  store i32 %148, ptr %25, align 4, !tbaa !9
  %149 = getelementptr inbounds %struct.doublecomplex, ptr %32, i32 0, i32 0
  store double -1.000000e+00, ptr %149, align 8, !tbaa !13
  %150 = getelementptr inbounds %struct.doublecomplex, ptr %32, i32 0, i32 1
  store double 0.000000e+00, ptr %150, align 8, !tbaa !15
  %151 = load ptr, ptr %15, align 8, !tbaa !5
  %152 = load i32, ptr %40, align 4, !tbaa !9
  %153 = add nsw i32 %152, 1
  %154 = load i32, ptr %21, align 4, !tbaa !9
  %155 = mul nsw i32 %153, %154
  %156 = add nsw i32 %155, 1
  %157 = sext i32 %156 to i64
  %158 = getelementptr inbounds %struct.doublecomplex, ptr %151, i64 %157
  %159 = load ptr, ptr %16, align 8, !tbaa !5
  %160 = load ptr, ptr %18, align 8, !tbaa !5
  %161 = load i32, ptr %40, align 4, !tbaa !9
  %162 = load i32, ptr %59, align 4, !tbaa !9
  %163 = add nsw i32 %162, 1
  %164 = load i32, ptr %23, align 4, !tbaa !9
  %165 = mul nsw i32 %163, %164
  %166 = add nsw i32 %161, %165
  %167 = sext i32 %166 to i64
  %168 = getelementptr inbounds %struct.doublecomplex, ptr %160, i64 %167
  %169 = load ptr, ptr %19, align 8, !tbaa !5
  %170 = load ptr, ptr %18, align 8, !tbaa !5
  %171 = load i32, ptr %59, align 4, !tbaa !9
  %172 = load i32, ptr %23, align 4, !tbaa !9
  %173 = mul nsw i32 %171, %172
  %174 = add nsw i32 %173, 1
  %175 = sext i32 %174 to i64
  %176 = getelementptr inbounds %struct.doublecomplex, ptr %170, i64 %175
  call void @zgemv_(ptr noundef @.str.2, ptr noundef %40, ptr noundef %25, ptr noundef %32, ptr noundef %158, ptr noundef %159, ptr noundef %168, ptr noundef %169, ptr noundef @c_b1, ptr noundef %176, ptr noundef @c__1)
  br label %177

177:                                              ; preds = %144, %124
  %178 = load i32, ptr %40, align 4, !tbaa !9
  %179 = load i32, ptr %59, align 4, !tbaa !9
  %180 = load i32, ptr %23, align 4, !tbaa !9
  %181 = mul nsw i32 %179, %180
  %182 = add nsw i32 %178, %181
  store i32 %182, ptr %25, align 4, !tbaa !9
  %183 = load ptr, ptr %18, align 8, !tbaa !5
  %184 = load i32, ptr %25, align 4, !tbaa !9
  %185 = sext i32 %184 to i64
  %186 = getelementptr inbounds %struct.doublecomplex, ptr %183, i64 %185
  %187 = getelementptr inbounds %struct.doublecomplex, ptr %186, i32 0, i32 0
  %188 = load double, ptr %187, align 8, !tbaa !13
  store double %188, ptr %30, align 8, !tbaa !11
  %189 = load double, ptr %30, align 8, !tbaa !11
  %190 = fcmp oge double %189, 0.000000e+00
  br i1 %190, label %191, label %193

191:                                              ; preds = %177
  %192 = load double, ptr %30, align 8, !tbaa !11
  br label %196

193:                                              ; preds = %177
  %194 = load double, ptr %30, align 8, !tbaa !11
  %195 = fneg double %194
  br label %196

196:                                              ; preds = %193, %191
  %197 = phi double [ %192, %191 ], [ %195, %193 ]
  %198 = load ptr, ptr %18, align 8, !tbaa !5
  %199 = load i32, ptr %40, align 4, !tbaa !9
  %200 = load i32, ptr %59, align 4, !tbaa !9
  %201 = load i32, ptr %23, align 4, !tbaa !9
  %202 = mul nsw i32 %200, %201
  %203 = add nsw i32 %199, %202
  %204 = sext i32 %203 to i64
  %205 = getelementptr inbounds %struct.doublecomplex, ptr %198, i64 %204
  %206 = call { double, double } @Cd(ptr noundef %205)
  %207 = extractvalue { double, double } %206, 0
  %208 = extractvalue { double, double } %206, 1
  store double %208, ptr %31, align 8, !tbaa !11
  %209 = load double, ptr %31, align 8, !tbaa !11
  %210 = fcmp oge double %209, 0.000000e+00
  br i1 %210, label %211, label %213

211:                                              ; preds = %196
  %212 = load double, ptr %31, align 8, !tbaa !11
  br label %216

213:                                              ; preds = %196
  %214 = load double, ptr %31, align 8, !tbaa !11
  %215 = fneg double %214
  br label %216

216:                                              ; preds = %213, %211
  %217 = phi double [ %212, %211 ], [ %215, %213 ]
  %218 = fadd double %197, %217
  store double %218, ptr %58, align 8, !tbaa !11
  %219 = load i32, ptr %40, align 4, !tbaa !9
  %220 = icmp sgt i32 %219, 1
  br i1 %220, label %221, label %273

221:                                              ; preds = %216
  %222 = load i32, ptr %40, align 4, !tbaa !9
  %223 = sub nsw i32 %222, 1
  store i32 %223, ptr %25, align 4, !tbaa !9
  %224 = load ptr, ptr %18, align 8, !tbaa !5
  %225 = load i32, ptr %59, align 4, !tbaa !9
  %226 = load i32, ptr %23, align 4, !tbaa !9
  %227 = mul nsw i32 %225, %226
  %228 = add nsw i32 %227, 1
  %229 = sext i32 %228 to i64
  %230 = getelementptr inbounds %struct.doublecomplex, ptr %224, i64 %229
  %231 = call i32 @izamax_(ptr noundef %25, ptr noundef %230, ptr noundef @c__1)
  store i32 %231, ptr %37, align 4, !tbaa !9
  %232 = load i32, ptr %37, align 4, !tbaa !9
  %233 = load i32, ptr %59, align 4, !tbaa !9
  %234 = load i32, ptr %23, align 4, !tbaa !9
  %235 = mul nsw i32 %233, %234
  %236 = add nsw i32 %232, %235
  store i32 %236, ptr %25, align 4, !tbaa !9
  %237 = load ptr, ptr %18, align 8, !tbaa !5
  %238 = load i32, ptr %25, align 4, !tbaa !9
  %239 = sext i32 %238 to i64
  %240 = getelementptr inbounds %struct.doublecomplex, ptr %237, i64 %239
  %241 = getelementptr inbounds %struct.doublecomplex, ptr %240, i32 0, i32 0
  %242 = load double, ptr %241, align 8, !tbaa !13
  store double %242, ptr %30, align 8, !tbaa !11
  %243 = load double, ptr %30, align 8, !tbaa !11
  %244 = fcmp oge double %243, 0.000000e+00
  br i1 %244, label %245, label %247

245:                                              ; preds = %221
  %246 = load double, ptr %30, align 8, !tbaa !11
  br label %250

247:                                              ; preds = %221
  %248 = load double, ptr %30, align 8, !tbaa !11
  %249 = fneg double %248
  br label %250

250:                                              ; preds = %247, %245
  %251 = phi double [ %246, %245 ], [ %249, %247 ]
  %252 = load ptr, ptr %18, align 8, !tbaa !5
  %253 = load i32, ptr %37, align 4, !tbaa !9
  %254 = load i32, ptr %59, align 4, !tbaa !9
  %255 = load i32, ptr %23, align 4, !tbaa !9
  %256 = mul nsw i32 %254, %255
  %257 = add nsw i32 %253, %256
  %258 = sext i32 %257 to i64
  %259 = getelementptr inbounds %struct.doublecomplex, ptr %252, i64 %258
  %260 = call { double, double } @Cd(ptr noundef %259)
  %261 = extractvalue { double, double } %260, 0
  %262 = extractvalue { double, double } %260, 1
  store double %262, ptr %31, align 8, !tbaa !11
  %263 = load double, ptr %31, align 8, !tbaa !11
  %264 = fcmp oge double %263, 0.000000e+00
  br i1 %264, label %265, label %267

265:                                              ; preds = %250
  %266 = load double, ptr %31, align 8, !tbaa !11
  br label %270

267:                                              ; preds = %250
  %268 = load double, ptr %31, align 8, !tbaa !11
  %269 = fneg double %268
  br label %270

270:                                              ; preds = %267, %265
  %271 = phi double [ %266, %265 ], [ %269, %267 ]
  %272 = fadd double %251, %271
  store double %272, ptr %60, align 8, !tbaa !11
  br label %274

273:                                              ; preds = %216
  store double 0.000000e+00, ptr %60, align 8, !tbaa !11
  br label %274

274:                                              ; preds = %273, %270
  %275 = load double, ptr %58, align 8, !tbaa !11
  %276 = load double, ptr %60, align 8, !tbaa !11
  %277 = fcmp oge double %275, %276
  br i1 %277, label %278, label %280

278:                                              ; preds = %274
  %279 = load double, ptr %58, align 8, !tbaa !11
  br label %282

280:                                              ; preds = %274
  %281 = load double, ptr %60, align 8, !tbaa !11
  br label %282

282:                                              ; preds = %280, %278
  %283 = phi double [ %279, %278 ], [ %281, %280 ]
  %284 = fcmp oeq double %283, 0.000000e+00
  br i1 %284, label %285, label %308

285:                                              ; preds = %282
  %286 = load ptr, ptr %20, align 8, !tbaa !5
  %287 = load i32, ptr %286, align 4, !tbaa !9
  %288 = icmp eq i32 %287, 0
  br i1 %288, label %289, label %292

289:                                              ; preds = %285
  %290 = load i32, ptr %40, align 4, !tbaa !9
  %291 = load ptr, ptr %20, align 8, !tbaa !5
  store i32 %290, ptr %291, align 4, !tbaa !9
  br label %292

292:                                              ; preds = %289, %285
  %293 = load i32, ptr %40, align 4, !tbaa !9
  store i32 %293, ptr %57, align 4, !tbaa !9
  %294 = load ptr, ptr %18, align 8, !tbaa !5
  %295 = load i32, ptr %59, align 4, !tbaa !9
  %296 = load i32, ptr %23, align 4, !tbaa !9
  %297 = mul nsw i32 %295, %296
  %298 = add nsw i32 %297, 1
  %299 = sext i32 %298 to i64
  %300 = getelementptr inbounds %struct.doublecomplex, ptr %294, i64 %299
  %301 = load ptr, ptr %15, align 8, !tbaa !5
  %302 = load i32, ptr %40, align 4, !tbaa !9
  %303 = load i32, ptr %21, align 4, !tbaa !9
  %304 = mul nsw i32 %302, %303
  %305 = add nsw i32 %304, 1
  %306 = sext i32 %305 to i64
  %307 = getelementptr inbounds %struct.doublecomplex, ptr %301, i64 %306
  call void @zcopy_(ptr noundef %40, ptr noundef %300, ptr noundef @c__1, ptr noundef %307, ptr noundef @c__1)
  br label %1519

308:                                              ; preds = %282
  %309 = load double, ptr %58, align 8, !tbaa !11
  %310 = load double, ptr %43, align 8, !tbaa !11
  %311 = load double, ptr %60, align 8, !tbaa !11
  %312 = fmul double %310, %311
  %313 = fcmp olt double %309, %312
  br i1 %313, label %316, label %314

314:                                              ; preds = %308
  %315 = load i32, ptr %40, align 4, !tbaa !9
  store i32 %315, ptr %57, align 4, !tbaa !9
  br label %624

316:                                              ; preds = %308
  store i32 0, ptr %36, align 4, !tbaa !9
  br label %317

317:                                              ; preds = %622, %316
  %318 = load ptr, ptr %15, align 8, !tbaa !5
  %319 = load i32, ptr %37, align 4, !tbaa !9
  %320 = load i32, ptr %21, align 4, !tbaa !9
  %321 = mul nsw i32 %319, %320
  %322 = add nsw i32 %321, 1
  %323 = sext i32 %322 to i64
  %324 = getelementptr inbounds %struct.doublecomplex, ptr %318, i64 %323
  %325 = load ptr, ptr %18, align 8, !tbaa !5
  %326 = load i32, ptr %59, align 4, !tbaa !9
  %327 = sub nsw i32 %326, 1
  %328 = load i32, ptr %23, align 4, !tbaa !9
  %329 = mul nsw i32 %327, %328
  %330 = add nsw i32 %329, 1
  %331 = sext i32 %330 to i64
  %332 = getelementptr inbounds %struct.doublecomplex, ptr %325, i64 %331
  call void @zcopy_(ptr noundef %37, ptr noundef %324, ptr noundef @c__1, ptr noundef %332, ptr noundef @c__1)
  %333 = load i32, ptr %40, align 4, !tbaa !9
  %334 = load i32, ptr %37, align 4, !tbaa !9
  %335 = sub nsw i32 %333, %334
  store i32 %335, ptr %25, align 4, !tbaa !9
  %336 = load ptr, ptr %15, align 8, !tbaa !5
  %337 = load i32, ptr %37, align 4, !tbaa !9
  %338 = load i32, ptr %37, align 4, !tbaa !9
  %339 = add nsw i32 %338, 1
  %340 = load i32, ptr %21, align 4, !tbaa !9
  %341 = mul nsw i32 %339, %340
  %342 = add nsw i32 %337, %341
  %343 = sext i32 %342 to i64
  %344 = getelementptr inbounds %struct.doublecomplex, ptr %336, i64 %343
  %345 = load ptr, ptr %16, align 8, !tbaa !5
  %346 = load ptr, ptr %18, align 8, !tbaa !5
  %347 = load i32, ptr %37, align 4, !tbaa !9
  %348 = add nsw i32 %347, 1
  %349 = load i32, ptr %59, align 4, !tbaa !9
  %350 = sub nsw i32 %349, 1
  %351 = load i32, ptr %23, align 4, !tbaa !9
  %352 = mul nsw i32 %350, %351
  %353 = add nsw i32 %348, %352
  %354 = sext i32 %353 to i64
  %355 = getelementptr inbounds %struct.doublecomplex, ptr %346, i64 %354
  call void @zcopy_(ptr noundef %25, ptr noundef %344, ptr noundef %345, ptr noundef %355, ptr noundef @c__1)
  %356 = load i32, ptr %40, align 4, !tbaa !9
  %357 = load ptr, ptr %12, align 8, !tbaa !5
  %358 = load i32, ptr %357, align 4, !tbaa !9
  %359 = icmp slt i32 %356, %358
  br i1 %359, label %360, label %394

360:                                              ; preds = %317
  %361 = load ptr, ptr %12, align 8, !tbaa !5
  %362 = load i32, ptr %361, align 4, !tbaa !9
  %363 = load i32, ptr %40, align 4, !tbaa !9
  %364 = sub nsw i32 %362, %363
  store i32 %364, ptr %25, align 4, !tbaa !9
  %365 = getelementptr inbounds %struct.doublecomplex, ptr %32, i32 0, i32 0
  store double -1.000000e+00, ptr %365, align 8, !tbaa !13
  %366 = getelementptr inbounds %struct.doublecomplex, ptr %32, i32 0, i32 1
  store double 0.000000e+00, ptr %366, align 8, !tbaa !15
  %367 = load ptr, ptr %15, align 8, !tbaa !5
  %368 = load i32, ptr %40, align 4, !tbaa !9
  %369 = add nsw i32 %368, 1
  %370 = load i32, ptr %21, align 4, !tbaa !9
  %371 = mul nsw i32 %369, %370
  %372 = add nsw i32 %371, 1
  %373 = sext i32 %372 to i64
  %374 = getelementptr inbounds %struct.doublecomplex, ptr %367, i64 %373
  %375 = load ptr, ptr %16, align 8, !tbaa !5
  %376 = load ptr, ptr %18, align 8, !tbaa !5
  %377 = load i32, ptr %37, align 4, !tbaa !9
  %378 = load i32, ptr %59, align 4, !tbaa !9
  %379 = add nsw i32 %378, 1
  %380 = load i32, ptr %23, align 4, !tbaa !9
  %381 = mul nsw i32 %379, %380
  %382 = add nsw i32 %377, %381
  %383 = sext i32 %382 to i64
  %384 = getelementptr inbounds %struct.doublecomplex, ptr %376, i64 %383
  %385 = load ptr, ptr %19, align 8, !tbaa !5
  %386 = load ptr, ptr %18, align 8, !tbaa !5
  %387 = load i32, ptr %59, align 4, !tbaa !9
  %388 = sub nsw i32 %387, 1
  %389 = load i32, ptr %23, align 4, !tbaa !9
  %390 = mul nsw i32 %388, %389
  %391 = add nsw i32 %390, 1
  %392 = sext i32 %391 to i64
  %393 = getelementptr inbounds %struct.doublecomplex, ptr %386, i64 %392
  call void @zgemv_(ptr noundef @.str.2, ptr noundef %40, ptr noundef %25, ptr noundef %32, ptr noundef %374, ptr noundef %375, ptr noundef %384, ptr noundef %385, ptr noundef @c_b1, ptr noundef %393, ptr noundef @c__1)
  br label %394

394:                                              ; preds = %360, %317
  %395 = load i32, ptr %37, align 4, !tbaa !9
  %396 = load i32, ptr %40, align 4, !tbaa !9
  %397 = icmp ne i32 %395, %396
  br i1 %397, label %398, label %458

398:                                              ; preds = %394
  %399 = load i32, ptr %40, align 4, !tbaa !9
  %400 = load i32, ptr %37, align 4, !tbaa !9
  %401 = sub nsw i32 %399, %400
  store i32 %401, ptr %25, align 4, !tbaa !9
  %402 = load i32, ptr %37, align 4, !tbaa !9
  %403 = load ptr, ptr %18, align 8, !tbaa !5
  %404 = load i32, ptr %37, align 4, !tbaa !9
  %405 = add nsw i32 %404, 1
  %406 = load i32, ptr %59, align 4, !tbaa !9
  %407 = sub nsw i32 %406, 1
  %408 = load i32, ptr %23, align 4, !tbaa !9
  %409 = mul nsw i32 %407, %408
  %410 = add nsw i32 %405, %409
  %411 = sext i32 %410 to i64
  %412 = getelementptr inbounds %struct.doublecomplex, ptr %403, i64 %411
  %413 = call i32 @izamax_(ptr noundef %25, ptr noundef %412, ptr noundef @c__1)
  %414 = add nsw i32 %402, %413
  store i32 %414, ptr %38, align 4, !tbaa !9
  %415 = load i32, ptr %38, align 4, !tbaa !9
  %416 = load i32, ptr %59, align 4, !tbaa !9
  %417 = sub nsw i32 %416, 1
  %418 = load i32, ptr %23, align 4, !tbaa !9
  %419 = mul nsw i32 %417, %418
  %420 = add nsw i32 %415, %419
  store i32 %420, ptr %25, align 4, !tbaa !9
  %421 = load ptr, ptr %18, align 8, !tbaa !5
  %422 = load i32, ptr %25, align 4, !tbaa !9
  %423 = sext i32 %422 to i64
  %424 = getelementptr inbounds %struct.doublecomplex, ptr %421, i64 %423
  %425 = getelementptr inbounds %struct.doublecomplex, ptr %424, i32 0, i32 0
  %426 = load double, ptr %425, align 8, !tbaa !13
  store double %426, ptr %30, align 8, !tbaa !11
  %427 = load double, ptr %30, align 8, !tbaa !11
  %428 = fcmp oge double %427, 0.000000e+00
  br i1 %428, label %429, label %431

429:                                              ; preds = %398
  %430 = load double, ptr %30, align 8, !tbaa !11
  br label %434

431:                                              ; preds = %398
  %432 = load double, ptr %30, align 8, !tbaa !11
  %433 = fneg double %432
  br label %434

434:                                              ; preds = %431, %429
  %435 = phi double [ %430, %429 ], [ %433, %431 ]
  %436 = load ptr, ptr %18, align 8, !tbaa !5
  %437 = load i32, ptr %38, align 4, !tbaa !9
  %438 = load i32, ptr %59, align 4, !tbaa !9
  %439 = sub nsw i32 %438, 1
  %440 = load i32, ptr %23, align 4, !tbaa !9
  %441 = mul nsw i32 %439, %440
  %442 = add nsw i32 %437, %441
  %443 = sext i32 %442 to i64
  %444 = getelementptr inbounds %struct.doublecomplex, ptr %436, i64 %443
  %445 = call { double, double } @Cd(ptr noundef %444)
  %446 = extractvalue { double, double } %445, 0
  %447 = extractvalue { double, double } %445, 1
  store double %447, ptr %31, align 8, !tbaa !11
  %448 = load double, ptr %31, align 8, !tbaa !11
  %449 = fcmp oge double %448, 0.000000e+00
  br i1 %449, label %450, label %452

450:                                              ; preds = %434
  %451 = load double, ptr %31, align 8, !tbaa !11
  br label %455

452:                                              ; preds = %434
  %453 = load double, ptr %31, align 8, !tbaa !11
  %454 = fneg double %453
  br label %455

455:                                              ; preds = %452, %450
  %456 = phi double [ %451, %450 ], [ %454, %452 ]
  %457 = fadd double %435, %456
  store double %457, ptr %63, align 8, !tbaa !11
  br label %459

458:                                              ; preds = %394
  store double 0.000000e+00, ptr %63, align 8, !tbaa !11
  br label %459

459:                                              ; preds = %458, %455
  %460 = load i32, ptr %37, align 4, !tbaa !9
  %461 = icmp sgt i32 %460, 1
  br i1 %461, label %462, label %524

462:                                              ; preds = %459
  %463 = load i32, ptr %37, align 4, !tbaa !9
  %464 = sub nsw i32 %463, 1
  store i32 %464, ptr %25, align 4, !tbaa !9
  %465 = load ptr, ptr %18, align 8, !tbaa !5
  %466 = load i32, ptr %59, align 4, !tbaa !9
  %467 = sub nsw i32 %466, 1
  %468 = load i32, ptr %23, align 4, !tbaa !9
  %469 = mul nsw i32 %467, %468
  %470 = add nsw i32 %469, 1
  %471 = sext i32 %470 to i64
  %472 = getelementptr inbounds %struct.doublecomplex, ptr %465, i64 %471
  %473 = call i32 @izamax_(ptr noundef %25, ptr noundef %472, ptr noundef @c__1)
  store i32 %473, ptr %46, align 4, !tbaa !9
  %474 = load i32, ptr %46, align 4, !tbaa !9
  %475 = load i32, ptr %59, align 4, !tbaa !9
  %476 = sub nsw i32 %475, 1
  %477 = load i32, ptr %23, align 4, !tbaa !9
  %478 = mul nsw i32 %476, %477
  %479 = add nsw i32 %474, %478
  store i32 %479, ptr %25, align 4, !tbaa !9
  %480 = load ptr, ptr %18, align 8, !tbaa !5
  %481 = load i32, ptr %25, align 4, !tbaa !9
  %482 = sext i32 %481 to i64
  %483 = getelementptr inbounds %struct.doublecomplex, ptr %480, i64 %482
  %484 = getelementptr inbounds %struct.doublecomplex, ptr %483, i32 0, i32 0
  %485 = load double, ptr %484, align 8, !tbaa !13
  store double %485, ptr %30, align 8, !tbaa !11
  %486 = load double, ptr %30, align 8, !tbaa !11
  %487 = fcmp oge double %486, 0.000000e+00
  br i1 %487, label %488, label %490

488:                                              ; preds = %462
  %489 = load double, ptr %30, align 8, !tbaa !11
  br label %493

490:                                              ; preds = %462
  %491 = load double, ptr %30, align 8, !tbaa !11
  %492 = fneg double %491
  br label %493

493:                                              ; preds = %490, %488
  %494 = phi double [ %489, %488 ], [ %492, %490 ]
  %495 = load ptr, ptr %18, align 8, !tbaa !5
  %496 = load i32, ptr %46, align 4, !tbaa !9
  %497 = load i32, ptr %59, align 4, !tbaa !9
  %498 = sub nsw i32 %497, 1
  %499 = load i32, ptr %23, align 4, !tbaa !9
  %500 = mul nsw i32 %498, %499
  %501 = add nsw i32 %496, %500
  %502 = sext i32 %501 to i64
  %503 = getelementptr inbounds %struct.doublecomplex, ptr %495, i64 %502
  %504 = call { double, double } @Cd(ptr noundef %503)
  %505 = extractvalue { double, double } %504, 0
  %506 = extractvalue { double, double } %504, 1
  store double %506, ptr %31, align 8, !tbaa !11
  %507 = load double, ptr %31, align 8, !tbaa !11
  %508 = fcmp oge double %507, 0.000000e+00
  br i1 %508, label %509, label %511

509:                                              ; preds = %493
  %510 = load double, ptr %31, align 8, !tbaa !11
  br label %514

511:                                              ; preds = %493
  %512 = load double, ptr %31, align 8, !tbaa !11
  %513 = fneg double %512
  br label %514

514:                                              ; preds = %511, %509
  %515 = phi double [ %510, %509 ], [ %513, %511 ]
  %516 = fadd double %494, %515
  store double %516, ptr %44, align 8, !tbaa !11
  %517 = load double, ptr %44, align 8, !tbaa !11
  %518 = load double, ptr %63, align 8, !tbaa !11
  %519 = fcmp ogt double %517, %518
  br i1 %519, label %520, label %523

520:                                              ; preds = %514
  %521 = load double, ptr %44, align 8, !tbaa !11
  store double %521, ptr %63, align 8, !tbaa !11
  %522 = load i32, ptr %46, align 4, !tbaa !9
  store i32 %522, ptr %38, align 4, !tbaa !9
  br label %523

523:                                              ; preds = %520, %514
  br label %524

524:                                              ; preds = %523, %459
  %525 = load i32, ptr %37, align 4, !tbaa !9
  %526 = load i32, ptr %59, align 4, !tbaa !9
  %527 = sub nsw i32 %526, 1
  %528 = load i32, ptr %23, align 4, !tbaa !9
  %529 = mul nsw i32 %527, %528
  %530 = add nsw i32 %525, %529
  store i32 %530, ptr %25, align 4, !tbaa !9
  %531 = load ptr, ptr %18, align 8, !tbaa !5
  %532 = load i32, ptr %25, align 4, !tbaa !9
  %533 = sext i32 %532 to i64
  %534 = getelementptr inbounds %struct.doublecomplex, ptr %531, i64 %533
  %535 = getelementptr inbounds %struct.doublecomplex, ptr %534, i32 0, i32 0
  %536 = load double, ptr %535, align 8, !tbaa !13
  store double %536, ptr %30, align 8, !tbaa !11
  %537 = load double, ptr %30, align 8, !tbaa !11
  %538 = fcmp oge double %537, 0.000000e+00
  br i1 %538, label %539, label %541

539:                                              ; preds = %524
  %540 = load double, ptr %30, align 8, !tbaa !11
  br label %544

541:                                              ; preds = %524
  %542 = load double, ptr %30, align 8, !tbaa !11
  %543 = fneg double %542
  br label %544

544:                                              ; preds = %541, %539
  %545 = phi double [ %540, %539 ], [ %543, %541 ]
  %546 = load ptr, ptr %18, align 8, !tbaa !5
  %547 = load i32, ptr %37, align 4, !tbaa !9
  %548 = load i32, ptr %59, align 4, !tbaa !9
  %549 = sub nsw i32 %548, 1
  %550 = load i32, ptr %23, align 4, !tbaa !9
  %551 = mul nsw i32 %549, %550
  %552 = add nsw i32 %547, %551
  %553 = sext i32 %552 to i64
  %554 = getelementptr inbounds %struct.doublecomplex, ptr %546, i64 %553
  %555 = call { double, double } @Cd(ptr noundef %554)
  %556 = extractvalue { double, double } %555, 0
  %557 = extractvalue { double, double } %555, 1
  store double %557, ptr %31, align 8, !tbaa !11
  %558 = load double, ptr %31, align 8, !tbaa !11
  %559 = fcmp oge double %558, 0.000000e+00
  br i1 %559, label %560, label %562

560:                                              ; preds = %544
  %561 = load double, ptr %31, align 8, !tbaa !11
  br label %565

562:                                              ; preds = %544
  %563 = load double, ptr %31, align 8, !tbaa !11
  %564 = fneg double %563
  br label %565

565:                                              ; preds = %562, %560
  %566 = phi double [ %561, %560 ], [ %564, %562 ]
  %567 = fadd double %545, %566
  %568 = load double, ptr %43, align 8, !tbaa !11
  %569 = load double, ptr %63, align 8, !tbaa !11
  %570 = fmul double %568, %569
  %571 = fcmp olt double %567, %570
  br i1 %571, label %589, label %572

572:                                              ; preds = %565
  %573 = load i32, ptr %37, align 4, !tbaa !9
  store i32 %573, ptr %57, align 4, !tbaa !9
  %574 = load ptr, ptr %18, align 8, !tbaa !5
  %575 = load i32, ptr %59, align 4, !tbaa !9
  %576 = sub nsw i32 %575, 1
  %577 = load i32, ptr %23, align 4, !tbaa !9
  %578 = mul nsw i32 %576, %577
  %579 = add nsw i32 %578, 1
  %580 = sext i32 %579 to i64
  %581 = getelementptr inbounds %struct.doublecomplex, ptr %574, i64 %580
  %582 = load ptr, ptr %18, align 8, !tbaa !5
  %583 = load i32, ptr %59, align 4, !tbaa !9
  %584 = load i32, ptr %23, align 4, !tbaa !9
  %585 = mul nsw i32 %583, %584
  %586 = add nsw i32 %585, 1
  %587 = sext i32 %586 to i64
  %588 = getelementptr inbounds %struct.doublecomplex, ptr %582, i64 %587
  call void @zcopy_(ptr noundef %40, ptr noundef %581, ptr noundef @c__1, ptr noundef %588, ptr noundef @c__1)
  store i32 1, ptr %36, align 4, !tbaa !9
  br label %619

589:                                              ; preds = %565
  %590 = load i32, ptr %41, align 4, !tbaa !9
  %591 = load i32, ptr %38, align 4, !tbaa !9
  %592 = icmp eq i32 %590, %591
  br i1 %592, label %597, label %593

593:                                              ; preds = %589
  %594 = load double, ptr %63, align 8, !tbaa !11
  %595 = load double, ptr %60, align 8, !tbaa !11
  %596 = fcmp ole double %594, %595
  br i1 %596, label %597, label %599

597:                                              ; preds = %593, %589
  %598 = load i32, ptr %37, align 4, !tbaa !9
  store i32 %598, ptr %57, align 4, !tbaa !9
  store i32 2, ptr %47, align 4, !tbaa !9
  store i32 1, ptr %36, align 4, !tbaa !9
  br label %618

599:                                              ; preds = %593
  %600 = load i32, ptr %37, align 4, !tbaa !9
  store i32 %600, ptr %41, align 4, !tbaa !9
  %601 = load double, ptr %63, align 8, !tbaa !11
  store double %601, ptr %60, align 8, !tbaa !11
  %602 = load i32, ptr %38, align 4, !tbaa !9
  store i32 %602, ptr %37, align 4, !tbaa !9
  %603 = load ptr, ptr %18, align 8, !tbaa !5
  %604 = load i32, ptr %59, align 4, !tbaa !9
  %605 = sub nsw i32 %604, 1
  %606 = load i32, ptr %23, align 4, !tbaa !9
  %607 = mul nsw i32 %605, %606
  %608 = add nsw i32 %607, 1
  %609 = sext i32 %608 to i64
  %610 = getelementptr inbounds %struct.doublecomplex, ptr %603, i64 %609
  %611 = load ptr, ptr %18, align 8, !tbaa !5
  %612 = load i32, ptr %59, align 4, !tbaa !9
  %613 = load i32, ptr %23, align 4, !tbaa !9
  %614 = mul nsw i32 %612, %613
  %615 = add nsw i32 %614, 1
  %616 = sext i32 %615 to i64
  %617 = getelementptr inbounds %struct.doublecomplex, ptr %611, i64 %616
  call void @zcopy_(ptr noundef %40, ptr noundef %610, ptr noundef @c__1, ptr noundef %617, ptr noundef @c__1)
  br label %618

618:                                              ; preds = %599, %597
  br label %619

619:                                              ; preds = %618, %572
  %620 = load i32, ptr %36, align 4, !tbaa !9
  %621 = icmp ne i32 %620, 0
  br i1 %621, label %623, label %622

622:                                              ; preds = %619
  br label %317

623:                                              ; preds = %619
  br label %624

624:                                              ; preds = %623, %314
  %625 = load i32, ptr %40, align 4, !tbaa !9
  %626 = load i32, ptr %47, align 4, !tbaa !9
  %627 = sub nsw i32 %625, %626
  %628 = add nsw i32 %627, 1
  store i32 %628, ptr %56, align 4, !tbaa !9
  %629 = load ptr, ptr %13, align 8, !tbaa !5
  %630 = load i32, ptr %629, align 4, !tbaa !9
  %631 = load i32, ptr %56, align 4, !tbaa !9
  %632 = add nsw i32 %630, %631
  %633 = load ptr, ptr %12, align 8, !tbaa !5
  %634 = load i32, ptr %633, align 4, !tbaa !9
  %635 = sub nsw i32 %632, %634
  store i32 %635, ptr %64, align 4, !tbaa !9
  %636 = load i32, ptr %47, align 4, !tbaa !9
  %637 = icmp eq i32 %636, 2
  br i1 %637, label %638, label %725

638:                                              ; preds = %624
  %639 = load i32, ptr %41, align 4, !tbaa !9
  %640 = load i32, ptr %40, align 4, !tbaa !9
  %641 = icmp ne i32 %639, %640
  br i1 %641, label %642, label %725

642:                                              ; preds = %638
  %643 = load i32, ptr %40, align 4, !tbaa !9
  %644 = load i32, ptr %41, align 4, !tbaa !9
  %645 = sub nsw i32 %643, %644
  store i32 %645, ptr %25, align 4, !tbaa !9
  %646 = load ptr, ptr %15, align 8, !tbaa !5
  %647 = load i32, ptr %41, align 4, !tbaa !9
  %648 = add nsw i32 %647, 1
  %649 = load i32, ptr %40, align 4, !tbaa !9
  %650 = load i32, ptr %21, align 4, !tbaa !9
  %651 = mul nsw i32 %649, %650
  %652 = add nsw i32 %648, %651
  %653 = sext i32 %652 to i64
  %654 = getelementptr inbounds %struct.doublecomplex, ptr %646, i64 %653
  %655 = load ptr, ptr %15, align 8, !tbaa !5
  %656 = load i32, ptr %41, align 4, !tbaa !9
  %657 = load i32, ptr %41, align 4, !tbaa !9
  %658 = add nsw i32 %657, 1
  %659 = load i32, ptr %21, align 4, !tbaa !9
  %660 = mul nsw i32 %658, %659
  %661 = add nsw i32 %656, %660
  %662 = sext i32 %661 to i64
  %663 = getelementptr inbounds %struct.doublecomplex, ptr %655, i64 %662
  %664 = load ptr, ptr %16, align 8, !tbaa !5
  call void @zcopy_(ptr noundef %25, ptr noundef %654, ptr noundef @c__1, ptr noundef %663, ptr noundef %664)
  %665 = load ptr, ptr %15, align 8, !tbaa !5
  %666 = load i32, ptr %40, align 4, !tbaa !9
  %667 = load i32, ptr %21, align 4, !tbaa !9
  %668 = mul nsw i32 %666, %667
  %669 = add nsw i32 %668, 1
  %670 = sext i32 %669 to i64
  %671 = getelementptr inbounds %struct.doublecomplex, ptr %665, i64 %670
  %672 = load ptr, ptr %15, align 8, !tbaa !5
  %673 = load i32, ptr %41, align 4, !tbaa !9
  %674 = load i32, ptr %21, align 4, !tbaa !9
  %675 = mul nsw i32 %673, %674
  %676 = add nsw i32 %675, 1
  %677 = sext i32 %676 to i64
  %678 = getelementptr inbounds %struct.doublecomplex, ptr %672, i64 %677
  call void @zcopy_(ptr noundef %41, ptr noundef %671, ptr noundef @c__1, ptr noundef %678, ptr noundef @c__1)
  %679 = load ptr, ptr %12, align 8, !tbaa !5
  %680 = load i32, ptr %679, align 4, !tbaa !9
  %681 = load i32, ptr %40, align 4, !tbaa !9
  %682 = sub nsw i32 %680, %681
  %683 = add nsw i32 %682, 1
  store i32 %683, ptr %25, align 4, !tbaa !9
  %684 = load ptr, ptr %15, align 8, !tbaa !5
  %685 = load i32, ptr %40, align 4, !tbaa !9
  %686 = load i32, ptr %40, align 4, !tbaa !9
  %687 = load i32, ptr %21, align 4, !tbaa !9
  %688 = mul nsw i32 %686, %687
  %689 = add nsw i32 %685, %688
  %690 = sext i32 %689 to i64
  %691 = getelementptr inbounds %struct.doublecomplex, ptr %684, i64 %690
  %692 = load ptr, ptr %16, align 8, !tbaa !5
  %693 = load ptr, ptr %15, align 8, !tbaa !5
  %694 = load i32, ptr %41, align 4, !tbaa !9
  %695 = load i32, ptr %40, align 4, !tbaa !9
  %696 = load i32, ptr %21, align 4, !tbaa !9
  %697 = mul nsw i32 %695, %696
  %698 = add nsw i32 %694, %697
  %699 = sext i32 %698 to i64
  %700 = getelementptr inbounds %struct.doublecomplex, ptr %693, i64 %699
  %701 = load ptr, ptr %16, align 8, !tbaa !5
  call void @zswap_(ptr noundef %25, ptr noundef %691, ptr noundef %692, ptr noundef %700, ptr noundef %701)
  %702 = load ptr, ptr %12, align 8, !tbaa !5
  %703 = load i32, ptr %702, align 4, !tbaa !9
  %704 = load i32, ptr %56, align 4, !tbaa !9
  %705 = sub nsw i32 %703, %704
  %706 = add nsw i32 %705, 1
  store i32 %706, ptr %25, align 4, !tbaa !9
  %707 = load ptr, ptr %18, align 8, !tbaa !5
  %708 = load i32, ptr %40, align 4, !tbaa !9
  %709 = load i32, ptr %64, align 4, !tbaa !9
  %710 = load i32, ptr %23, align 4, !tbaa !9
  %711 = mul nsw i32 %709, %710
  %712 = add nsw i32 %708, %711
  %713 = sext i32 %712 to i64
  %714 = getelementptr inbounds %struct.doublecomplex, ptr %707, i64 %713
  %715 = load ptr, ptr %19, align 8, !tbaa !5
  %716 = load ptr, ptr %18, align 8, !tbaa !5
  %717 = load i32, ptr %41, align 4, !tbaa !9
  %718 = load i32, ptr %64, align 4, !tbaa !9
  %719 = load i32, ptr %23, align 4, !tbaa !9
  %720 = mul nsw i32 %718, %719
  %721 = add nsw i32 %717, %720
  %722 = sext i32 %721 to i64
  %723 = getelementptr inbounds %struct.doublecomplex, ptr %716, i64 %722
  %724 = load ptr, ptr %19, align 8, !tbaa !5
  call void @zswap_(ptr noundef %25, ptr noundef %714, ptr noundef %715, ptr noundef %723, ptr noundef %724)
  br label %725

725:                                              ; preds = %642, %638, %624
  %726 = load i32, ptr %57, align 4, !tbaa !9
  %727 = load i32, ptr %56, align 4, !tbaa !9
  %728 = icmp ne i32 %726, %727
  br i1 %728, label %729, label %845

729:                                              ; preds = %725
  %730 = load i32, ptr %57, align 4, !tbaa !9
  %731 = load i32, ptr %40, align 4, !tbaa !9
  %732 = load i32, ptr %21, align 4, !tbaa !9
  %733 = mul nsw i32 %731, %732
  %734 = add nsw i32 %730, %733
  store i32 %734, ptr %25, align 4, !tbaa !9
  %735 = load i32, ptr %56, align 4, !tbaa !9
  %736 = load i32, ptr %40, align 4, !tbaa !9
  %737 = load i32, ptr %21, align 4, !tbaa !9
  %738 = mul nsw i32 %736, %737
  %739 = add nsw i32 %735, %738
  store i32 %739, ptr %26, align 4, !tbaa !9
  %740 = load ptr, ptr %15, align 8, !tbaa !5
  %741 = load i32, ptr %26, align 4, !tbaa !9
  %742 = sext i32 %741 to i64
  %743 = getelementptr inbounds %struct.doublecomplex, ptr %740, i64 %742
  %744 = getelementptr inbounds %struct.doublecomplex, ptr %743, i32 0, i32 0
  %745 = load double, ptr %744, align 8, !tbaa !13
  %746 = load ptr, ptr %15, align 8, !tbaa !5
  %747 = load i32, ptr %25, align 4, !tbaa !9
  %748 = sext i32 %747 to i64
  %749 = getelementptr inbounds %struct.doublecomplex, ptr %746, i64 %748
  %750 = getelementptr inbounds %struct.doublecomplex, ptr %749, i32 0, i32 0
  store double %745, ptr %750, align 8, !tbaa !13
  %751 = load ptr, ptr %15, align 8, !tbaa !5
  %752 = load i32, ptr %26, align 4, !tbaa !9
  %753 = sext i32 %752 to i64
  %754 = getelementptr inbounds %struct.doublecomplex, ptr %751, i64 %753
  %755 = getelementptr inbounds %struct.doublecomplex, ptr %754, i32 0, i32 1
  %756 = load double, ptr %755, align 8, !tbaa !15
  %757 = load ptr, ptr %15, align 8, !tbaa !5
  %758 = load i32, ptr %25, align 4, !tbaa !9
  %759 = sext i32 %758 to i64
  %760 = getelementptr inbounds %struct.doublecomplex, ptr %757, i64 %759
  %761 = getelementptr inbounds %struct.doublecomplex, ptr %760, i32 0, i32 1
  store double %756, ptr %761, align 8, !tbaa !15
  %762 = load i32, ptr %40, align 4, !tbaa !9
  %763 = sub nsw i32 %762, 1
  %764 = load i32, ptr %57, align 4, !tbaa !9
  %765 = sub nsw i32 %763, %764
  store i32 %765, ptr %25, align 4, !tbaa !9
  %766 = load ptr, ptr %15, align 8, !tbaa !5
  %767 = load i32, ptr %57, align 4, !tbaa !9
  %768 = add nsw i32 %767, 1
  %769 = load i32, ptr %56, align 4, !tbaa !9
  %770 = load i32, ptr %21, align 4, !tbaa !9
  %771 = mul nsw i32 %769, %770
  %772 = add nsw i32 %768, %771
  %773 = sext i32 %772 to i64
  %774 = getelementptr inbounds %struct.doublecomplex, ptr %766, i64 %773
  %775 = load ptr, ptr %15, align 8, !tbaa !5
  %776 = load i32, ptr %57, align 4, !tbaa !9
  %777 = load i32, ptr %57, align 4, !tbaa !9
  %778 = add nsw i32 %777, 1
  %779 = load i32, ptr %21, align 4, !tbaa !9
  %780 = mul nsw i32 %778, %779
  %781 = add nsw i32 %776, %780
  %782 = sext i32 %781 to i64
  %783 = getelementptr inbounds %struct.doublecomplex, ptr %775, i64 %782
  %784 = load ptr, ptr %16, align 8, !tbaa !5
  call void @zcopy_(ptr noundef %25, ptr noundef %774, ptr noundef @c__1, ptr noundef %783, ptr noundef %784)
  %785 = load ptr, ptr %15, align 8, !tbaa !5
  %786 = load i32, ptr %56, align 4, !tbaa !9
  %787 = load i32, ptr %21, align 4, !tbaa !9
  %788 = mul nsw i32 %786, %787
  %789 = add nsw i32 %788, 1
  %790 = sext i32 %789 to i64
  %791 = getelementptr inbounds %struct.doublecomplex, ptr %785, i64 %790
  %792 = load ptr, ptr %15, align 8, !tbaa !5
  %793 = load i32, ptr %57, align 4, !tbaa !9
  %794 = load i32, ptr %21, align 4, !tbaa !9
  %795 = mul nsw i32 %793, %794
  %796 = add nsw i32 %795, 1
  %797 = sext i32 %796 to i64
  %798 = getelementptr inbounds %struct.doublecomplex, ptr %792, i64 %797
  call void @zcopy_(ptr noundef %57, ptr noundef %791, ptr noundef @c__1, ptr noundef %798, ptr noundef @c__1)
  %799 = load ptr, ptr %12, align 8, !tbaa !5
  %800 = load i32, ptr %799, align 4, !tbaa !9
  %801 = load i32, ptr %56, align 4, !tbaa !9
  %802 = sub nsw i32 %800, %801
  %803 = add nsw i32 %802, 1
  store i32 %803, ptr %25, align 4, !tbaa !9
  %804 = load ptr, ptr %15, align 8, !tbaa !5
  %805 = load i32, ptr %56, align 4, !tbaa !9
  %806 = load i32, ptr %56, align 4, !tbaa !9
  %807 = load i32, ptr %21, align 4, !tbaa !9
  %808 = mul nsw i32 %806, %807
  %809 = add nsw i32 %805, %808
  %810 = sext i32 %809 to i64
  %811 = getelementptr inbounds %struct.doublecomplex, ptr %804, i64 %810
  %812 = load ptr, ptr %16, align 8, !tbaa !5
  %813 = load ptr, ptr %15, align 8, !tbaa !5
  %814 = load i32, ptr %57, align 4, !tbaa !9
  %815 = load i32, ptr %56, align 4, !tbaa !9
  %816 = load i32, ptr %21, align 4, !tbaa !9
  %817 = mul nsw i32 %815, %816
  %818 = add nsw i32 %814, %817
  %819 = sext i32 %818 to i64
  %820 = getelementptr inbounds %struct.doublecomplex, ptr %813, i64 %819
  %821 = load ptr, ptr %16, align 8, !tbaa !5
  call void @zswap_(ptr noundef %25, ptr noundef %811, ptr noundef %812, ptr noundef %820, ptr noundef %821)
  %822 = load ptr, ptr %12, align 8, !tbaa !5
  %823 = load i32, ptr %822, align 4, !tbaa !9
  %824 = load i32, ptr %56, align 4, !tbaa !9
  %825 = sub nsw i32 %823, %824
  %826 = add nsw i32 %825, 1
  store i32 %826, ptr %25, align 4, !tbaa !9
  %827 = load ptr, ptr %18, align 8, !tbaa !5
  %828 = load i32, ptr %56, align 4, !tbaa !9
  %829 = load i32, ptr %64, align 4, !tbaa !9
  %830 = load i32, ptr %23, align 4, !tbaa !9
  %831 = mul nsw i32 %829, %830
  %832 = add nsw i32 %828, %831
  %833 = sext i32 %832 to i64
  %834 = getelementptr inbounds %struct.doublecomplex, ptr %827, i64 %833
  %835 = load ptr, ptr %19, align 8, !tbaa !5
  %836 = load ptr, ptr %18, align 8, !tbaa !5
  %837 = load i32, ptr %57, align 4, !tbaa !9
  %838 = load i32, ptr %64, align 4, !tbaa !9
  %839 = load i32, ptr %23, align 4, !tbaa !9
  %840 = mul nsw i32 %838, %839
  %841 = add nsw i32 %837, %840
  %842 = sext i32 %841 to i64
  %843 = getelementptr inbounds %struct.doublecomplex, ptr %836, i64 %842
  %844 = load ptr, ptr %19, align 8, !tbaa !5
  call void @zswap_(ptr noundef %25, ptr noundef %834, ptr noundef %835, ptr noundef %843, ptr noundef %844)
  br label %845

845:                                              ; preds = %729, %725
  %846 = load i32, ptr %47, align 4, !tbaa !9
  %847 = icmp eq i32 %846, 1
  br i1 %847, label %848, label %1028

848:                                              ; preds = %845
  %849 = load ptr, ptr %18, align 8, !tbaa !5
  %850 = load i32, ptr %59, align 4, !tbaa !9
  %851 = load i32, ptr %23, align 4, !tbaa !9
  %852 = mul nsw i32 %850, %851
  %853 = add nsw i32 %852, 1
  %854 = sext i32 %853 to i64
  %855 = getelementptr inbounds %struct.doublecomplex, ptr %849, i64 %854
  %856 = load ptr, ptr %15, align 8, !tbaa !5
  %857 = load i32, ptr %40, align 4, !tbaa !9
  %858 = load i32, ptr %21, align 4, !tbaa !9
  %859 = mul nsw i32 %857, %858
  %860 = add nsw i32 %859, 1
  %861 = sext i32 %860 to i64
  %862 = getelementptr inbounds %struct.doublecomplex, ptr %856, i64 %861
  call void @zcopy_(ptr noundef %40, ptr noundef %855, ptr noundef @c__1, ptr noundef %862, ptr noundef @c__1)
  %863 = load i32, ptr %40, align 4, !tbaa !9
  %864 = icmp sgt i32 %863, 1
  br i1 %864, label %865, label %1027

865:                                              ; preds = %848
  %866 = load i32, ptr %40, align 4, !tbaa !9
  %867 = load i32, ptr %40, align 4, !tbaa !9
  %868 = load i32, ptr %21, align 4, !tbaa !9
  %869 = mul nsw i32 %867, %868
  %870 = add nsw i32 %866, %869
  store i32 %870, ptr %25, align 4, !tbaa !9
  %871 = load ptr, ptr %15, align 8, !tbaa !5
  %872 = load i32, ptr %25, align 4, !tbaa !9
  %873 = sext i32 %872 to i64
  %874 = getelementptr inbounds %struct.doublecomplex, ptr %871, i64 %873
  %875 = getelementptr inbounds %struct.doublecomplex, ptr %874, i32 0, i32 0
  %876 = load double, ptr %875, align 8, !tbaa !13
  store double %876, ptr %30, align 8, !tbaa !11
  %877 = load double, ptr %30, align 8, !tbaa !11
  %878 = fcmp oge double %877, 0.000000e+00
  br i1 %878, label %879, label %881

879:                                              ; preds = %865
  %880 = load double, ptr %30, align 8, !tbaa !11
  br label %884

881:                                              ; preds = %865
  %882 = load double, ptr %30, align 8, !tbaa !11
  %883 = fneg double %882
  br label %884

884:                                              ; preds = %881, %879
  %885 = phi double [ %880, %879 ], [ %883, %881 ]
  %886 = load ptr, ptr %15, align 8, !tbaa !5
  %887 = load i32, ptr %40, align 4, !tbaa !9
  %888 = load i32, ptr %40, align 4, !tbaa !9
  %889 = load i32, ptr %21, align 4, !tbaa !9
  %890 = mul nsw i32 %888, %889
  %891 = add nsw i32 %887, %890
  %892 = sext i32 %891 to i64
  %893 = getelementptr inbounds %struct.doublecomplex, ptr %886, i64 %892
  %894 = call { double, double } @Cd(ptr noundef %893)
  %895 = extractvalue { double, double } %894, 0
  %896 = extractvalue { double, double } %894, 1
  store double %896, ptr %31, align 8, !tbaa !11
  %897 = load double, ptr %31, align 8, !tbaa !11
  %898 = fcmp oge double %897, 0.000000e+00
  br i1 %898, label %899, label %901

899:                                              ; preds = %884
  %900 = load double, ptr %31, align 8, !tbaa !11
  br label %904

901:                                              ; preds = %884
  %902 = load double, ptr %31, align 8, !tbaa !11
  %903 = fneg double %902
  br label %904

904:                                              ; preds = %901, %899
  %905 = phi double [ %900, %899 ], [ %903, %901 ]
  %906 = fadd double %885, %905
  %907 = load double, ptr %45, align 8, !tbaa !11
  %908 = fcmp oge double %906, %907
  br i1 %908, label %909, label %945

909:                                              ; preds = %904
  %910 = call { double, double } @Cd(ptr noundef @c_b1)
  %911 = extractvalue { double, double } %910, 0
  %912 = extractvalue { double, double } %910, 1
  %913 = load ptr, ptr %15, align 8, !tbaa !5
  %914 = load i32, ptr %40, align 4, !tbaa !9
  %915 = load i32, ptr %40, align 4, !tbaa !9
  %916 = load i32, ptr %21, align 4, !tbaa !9
  %917 = mul nsw i32 %915, %916
  %918 = add nsw i32 %914, %917
  %919 = sext i32 %918 to i64
  %920 = getelementptr inbounds %struct.doublecomplex, ptr %913, i64 %919
  %921 = call { double, double } @Cd(ptr noundef %920)
  %922 = extractvalue { double, double } %921, 0
  %923 = extractvalue { double, double } %921, 1
  %924 = call { double, double } @__divdc3(double noundef %911, double noundef %912, double noundef %922, double noundef %923) #6
  %925 = extractvalue { double, double } %924, 0
  %926 = extractvalue { double, double } %924, 1
  %927 = call ptr @_pCd(ptr noundef %32)
  %928 = getelementptr inbounds { double, double }, ptr %927, i32 0, i32 0
  %929 = getelementptr inbounds { double, double }, ptr %927, i32 0, i32 1
  store double %925, ptr %928, align 8
  store double %926, ptr %929, align 8
  %930 = getelementptr inbounds %struct.doublecomplex, ptr %32, i32 0, i32 0
  %931 = load double, ptr %930, align 8, !tbaa !13
  %932 = getelementptr inbounds %struct.doublecomplex, ptr %48, i32 0, i32 0
  store double %931, ptr %932, align 8, !tbaa !13
  %933 = getelementptr inbounds %struct.doublecomplex, ptr %32, i32 0, i32 1
  %934 = load double, ptr %933, align 8, !tbaa !15
  %935 = getelementptr inbounds %struct.doublecomplex, ptr %48, i32 0, i32 1
  store double %934, ptr %935, align 8, !tbaa !15
  %936 = load i32, ptr %40, align 4, !tbaa !9
  %937 = sub nsw i32 %936, 1
  store i32 %937, ptr %25, align 4, !tbaa !9
  %938 = load ptr, ptr %15, align 8, !tbaa !5
  %939 = load i32, ptr %40, align 4, !tbaa !9
  %940 = load i32, ptr %21, align 4, !tbaa !9
  %941 = mul nsw i32 %939, %940
  %942 = add nsw i32 %941, 1
  %943 = sext i32 %942 to i64
  %944 = getelementptr inbounds %struct.doublecomplex, ptr %938, i64 %943
  call void @zscal_(ptr noundef %25, ptr noundef %48, ptr noundef %944, ptr noundef @c__1)
  br label %1026

945:                                              ; preds = %904
  %946 = load i32, ptr %40, align 4, !tbaa !9
  %947 = load i32, ptr %40, align 4, !tbaa !9
  %948 = load i32, ptr %21, align 4, !tbaa !9
  %949 = mul nsw i32 %947, %948
  %950 = add nsw i32 %946, %949
  store i32 %950, ptr %25, align 4, !tbaa !9
  %951 = load ptr, ptr %15, align 8, !tbaa !5
  %952 = load i32, ptr %25, align 4, !tbaa !9
  %953 = sext i32 %952 to i64
  %954 = getelementptr inbounds %struct.doublecomplex, ptr %951, i64 %953
  %955 = getelementptr inbounds %struct.doublecomplex, ptr %954, i32 0, i32 0
  %956 = load double, ptr %955, align 8, !tbaa !13
  %957 = fcmp une double %956, 0.000000e+00
  br i1 %957, label %966, label %958

958:                                              ; preds = %945
  %959 = load ptr, ptr %15, align 8, !tbaa !5
  %960 = load i32, ptr %25, align 4, !tbaa !9
  %961 = sext i32 %960 to i64
  %962 = getelementptr inbounds %struct.doublecomplex, ptr %959, i64 %961
  %963 = getelementptr inbounds %struct.doublecomplex, ptr %962, i32 0, i32 1
  %964 = load double, ptr %963, align 8, !tbaa !15
  %965 = fcmp une double %964, 0.000000e+00
  br i1 %965, label %966, label %1025

966:                                              ; preds = %958, %945
  %967 = load i32, ptr %40, align 4, !tbaa !9
  %968 = sub nsw i32 %967, 1
  store i32 %968, ptr %25, align 4, !tbaa !9
  store i32 1, ptr %54, align 4, !tbaa !9
  br label %969

969:                                              ; preds = %1021, %966
  %970 = load i32, ptr %54, align 4, !tbaa !9
  %971 = load i32, ptr %25, align 4, !tbaa !9
  %972 = icmp sle i32 %970, %971
  br i1 %972, label %973, label %1024

973:                                              ; preds = %969
  %974 = load i32, ptr %54, align 4, !tbaa !9
  %975 = load i32, ptr %40, align 4, !tbaa !9
  %976 = load i32, ptr %21, align 4, !tbaa !9
  %977 = mul nsw i32 %975, %976
  %978 = add nsw i32 %974, %977
  store i32 %978, ptr %26, align 4, !tbaa !9
  %979 = load ptr, ptr %15, align 8, !tbaa !5
  %980 = load i32, ptr %54, align 4, !tbaa !9
  %981 = load i32, ptr %40, align 4, !tbaa !9
  %982 = load i32, ptr %21, align 4, !tbaa !9
  %983 = mul nsw i32 %981, %982
  %984 = add nsw i32 %980, %983
  %985 = sext i32 %984 to i64
  %986 = getelementptr inbounds %struct.doublecomplex, ptr %979, i64 %985
  %987 = call { double, double } @Cd(ptr noundef %986)
  %988 = extractvalue { double, double } %987, 0
  %989 = extractvalue { double, double } %987, 1
  %990 = load ptr, ptr %15, align 8, !tbaa !5
  %991 = load i32, ptr %40, align 4, !tbaa !9
  %992 = load i32, ptr %40, align 4, !tbaa !9
  %993 = load i32, ptr %21, align 4, !tbaa !9
  %994 = mul nsw i32 %992, %993
  %995 = add nsw i32 %991, %994
  %996 = sext i32 %995 to i64
  %997 = getelementptr inbounds %struct.doublecomplex, ptr %990, i64 %996
  %998 = call { double, double } @Cd(ptr noundef %997)
  %999 = extractvalue { double, double } %998, 0
  %1000 = extractvalue { double, double } %998, 1
  %1001 = call { double, double } @__divdc3(double noundef %988, double noundef %989, double noundef %999, double noundef %1000) #6
  %1002 = extractvalue { double, double } %1001, 0
  %1003 = extractvalue { double, double } %1001, 1
  %1004 = call ptr @_pCd(ptr noundef %32)
  %1005 = getelementptr inbounds { double, double }, ptr %1004, i32 0, i32 0
  %1006 = getelementptr inbounds { double, double }, ptr %1004, i32 0, i32 1
  store double %1002, ptr %1005, align 8
  store double %1003, ptr %1006, align 8
  %1007 = getelementptr inbounds %struct.doublecomplex, ptr %32, i32 0, i32 0
  %1008 = load double, ptr %1007, align 8, !tbaa !13
  %1009 = load ptr, ptr %15, align 8, !tbaa !5
  %1010 = load i32, ptr %26, align 4, !tbaa !9
  %1011 = sext i32 %1010 to i64
  %1012 = getelementptr inbounds %struct.doublecomplex, ptr %1009, i64 %1011
  %1013 = getelementptr inbounds %struct.doublecomplex, ptr %1012, i32 0, i32 0
  store double %1008, ptr %1013, align 8, !tbaa !13
  %1014 = getelementptr inbounds %struct.doublecomplex, ptr %32, i32 0, i32 1
  %1015 = load double, ptr %1014, align 8, !tbaa !15
  %1016 = load ptr, ptr %15, align 8, !tbaa !5
  %1017 = load i32, ptr %26, align 4, !tbaa !9
  %1018 = sext i32 %1017 to i64
  %1019 = getelementptr inbounds %struct.doublecomplex, ptr %1016, i64 %1018
  %1020 = getelementptr inbounds %struct.doublecomplex, ptr %1019, i32 0, i32 1
  store double %1015, ptr %1020, align 8, !tbaa !15
  br label %1021

1021:                                             ; preds = %973
  %1022 = load i32, ptr %54, align 4, !tbaa !9
  %1023 = add nsw i32 %1022, 1
  store i32 %1023, ptr %54, align 4, !tbaa !9
  br label %969, !llvm.loop !16

1024:                                             ; preds = %969
  br label %1025

1025:                                             ; preds = %1024, %958
  br label %1026

1026:                                             ; preds = %1025, %909
  br label %1027

1027:                                             ; preds = %1026, %848
  br label %1518

1028:                                             ; preds = %845
  %1029 = load i32, ptr %40, align 4, !tbaa !9
  %1030 = icmp sgt i32 %1029, 2
  br i1 %1030, label %1031, label %1415

1031:                                             ; preds = %1028
  %1032 = load i32, ptr %40, align 4, !tbaa !9
  %1033 = sub nsw i32 %1032, 1
  %1034 = load i32, ptr %59, align 4, !tbaa !9
  %1035 = load i32, ptr %23, align 4, !tbaa !9
  %1036 = mul nsw i32 %1034, %1035
  %1037 = add nsw i32 %1033, %1036
  store i32 %1037, ptr %25, align 4, !tbaa !9
  %1038 = load ptr, ptr %18, align 8, !tbaa !5
  %1039 = load i32, ptr %25, align 4, !tbaa !9
  %1040 = sext i32 %1039 to i64
  %1041 = getelementptr inbounds %struct.doublecomplex, ptr %1038, i64 %1040
  %1042 = getelementptr inbounds %struct.doublecomplex, ptr %1041, i32 0, i32 0
  %1043 = load double, ptr %1042, align 8, !tbaa !13
  %1044 = getelementptr inbounds %struct.doublecomplex, ptr %50, i32 0, i32 0
  store double %1043, ptr %1044, align 8, !tbaa !13
  %1045 = load ptr, ptr %18, align 8, !tbaa !5
  %1046 = load i32, ptr %25, align 4, !tbaa !9
  %1047 = sext i32 %1046 to i64
  %1048 = getelementptr inbounds %struct.doublecomplex, ptr %1045, i64 %1047
  %1049 = getelementptr inbounds %struct.doublecomplex, ptr %1048, i32 0, i32 1
  %1050 = load double, ptr %1049, align 8, !tbaa !15
  %1051 = getelementptr inbounds %struct.doublecomplex, ptr %50, i32 0, i32 1
  store double %1050, ptr %1051, align 8, !tbaa !15
  %1052 = load ptr, ptr %18, align 8, !tbaa !5
  %1053 = load i32, ptr %40, align 4, !tbaa !9
  %1054 = load i32, ptr %59, align 4, !tbaa !9
  %1055 = load i32, ptr %23, align 4, !tbaa !9
  %1056 = mul nsw i32 %1054, %1055
  %1057 = add nsw i32 %1053, %1056
  %1058 = sext i32 %1057 to i64
  %1059 = getelementptr inbounds %struct.doublecomplex, ptr %1052, i64 %1058
  %1060 = call { double, double } @Cd(ptr noundef %1059)
  %1061 = extractvalue { double, double } %1060, 0
  %1062 = extractvalue { double, double } %1060, 1
  %1063 = call { double, double } @Cd(ptr noundef %50)
  %1064 = extractvalue { double, double } %1063, 0
  %1065 = extractvalue { double, double } %1063, 1
  %1066 = call { double, double } @__divdc3(double noundef %1061, double noundef %1062, double noundef %1064, double noundef %1065) #6
  %1067 = extractvalue { double, double } %1066, 0
  %1068 = extractvalue { double, double } %1066, 1
  %1069 = call ptr @_pCd(ptr noundef %32)
  %1070 = getelementptr inbounds { double, double }, ptr %1069, i32 0, i32 0
  %1071 = getelementptr inbounds { double, double }, ptr %1069, i32 0, i32 1
  store double %1067, ptr %1070, align 8
  store double %1068, ptr %1071, align 8
  %1072 = getelementptr inbounds %struct.doublecomplex, ptr %32, i32 0, i32 0
  %1073 = load double, ptr %1072, align 8, !tbaa !13
  %1074 = getelementptr inbounds %struct.doublecomplex, ptr %49, i32 0, i32 0
  store double %1073, ptr %1074, align 8, !tbaa !13
  %1075 = getelementptr inbounds %struct.doublecomplex, ptr %32, i32 0, i32 1
  %1076 = load double, ptr %1075, align 8, !tbaa !15
  %1077 = getelementptr inbounds %struct.doublecomplex, ptr %49, i32 0, i32 1
  store double %1076, ptr %1077, align 8, !tbaa !15
  %1078 = load ptr, ptr %18, align 8, !tbaa !5
  %1079 = load i32, ptr %40, align 4, !tbaa !9
  %1080 = sub nsw i32 %1079, 1
  %1081 = load i32, ptr %59, align 4, !tbaa !9
  %1082 = sub nsw i32 %1081, 1
  %1083 = load i32, ptr %23, align 4, !tbaa !9
  %1084 = mul nsw i32 %1082, %1083
  %1085 = add nsw i32 %1080, %1084
  %1086 = sext i32 %1085 to i64
  %1087 = getelementptr inbounds %struct.doublecomplex, ptr %1078, i64 %1086
  %1088 = call { double, double } @Cd(ptr noundef %1087)
  %1089 = extractvalue { double, double } %1088, 0
  %1090 = extractvalue { double, double } %1088, 1
  %1091 = call { double, double } @Cd(ptr noundef %50)
  %1092 = extractvalue { double, double } %1091, 0
  %1093 = extractvalue { double, double } %1091, 1
  %1094 = call { double, double } @__divdc3(double noundef %1089, double noundef %1090, double noundef %1092, double noundef %1093) #6
  %1095 = extractvalue { double, double } %1094, 0
  %1096 = extractvalue { double, double } %1094, 1
  %1097 = call ptr @_pCd(ptr noundef %32)
  %1098 = getelementptr inbounds { double, double }, ptr %1097, i32 0, i32 0
  %1099 = getelementptr inbounds { double, double }, ptr %1097, i32 0, i32 1
  store double %1095, ptr %1098, align 8
  store double %1096, ptr %1099, align 8
  %1100 = getelementptr inbounds %struct.doublecomplex, ptr %32, i32 0, i32 0
  %1101 = load double, ptr %1100, align 8, !tbaa !13
  %1102 = getelementptr inbounds %struct.doublecomplex, ptr %52, i32 0, i32 0
  store double %1101, ptr %1102, align 8, !tbaa !13
  %1103 = getelementptr inbounds %struct.doublecomplex, ptr %32, i32 0, i32 1
  %1104 = load double, ptr %1103, align 8, !tbaa !15
  %1105 = getelementptr inbounds %struct.doublecomplex, ptr %52, i32 0, i32 1
  store double %1104, ptr %1105, align 8, !tbaa !15
  %1106 = getelementptr inbounds %struct.doublecomplex, ptr %49, i32 0, i32 0
  %1107 = load double, ptr %1106, align 8, !tbaa !13
  %1108 = getelementptr inbounds %struct.doublecomplex, ptr %52, i32 0, i32 0
  %1109 = load double, ptr %1108, align 8, !tbaa !13
  %1110 = getelementptr inbounds %struct.doublecomplex, ptr %49, i32 0, i32 1
  %1111 = load double, ptr %1110, align 8, !tbaa !15
  %1112 = getelementptr inbounds %struct.doublecomplex, ptr %52, i32 0, i32 1
  %1113 = load double, ptr %1112, align 8, !tbaa !15
  %1114 = fmul double %1111, %1113
  %1115 = fneg double %1114
  %1116 = call double @llvm.fmuladd.f64(double %1107, double %1109, double %1115)
  %1117 = getelementptr inbounds %struct.doublecomplex, ptr %34, i32 0, i32 0
  store double %1116, ptr %1117, align 8, !tbaa !13
  %1118 = getelementptr inbounds %struct.doublecomplex, ptr %49, i32 0, i32 0
  %1119 = load double, ptr %1118, align 8, !tbaa !13
  %1120 = getelementptr inbounds %struct.doublecomplex, ptr %52, i32 0, i32 1
  %1121 = load double, ptr %1120, align 8, !tbaa !15
  %1122 = getelementptr inbounds %struct.doublecomplex, ptr %49, i32 0, i32 1
  %1123 = load double, ptr %1122, align 8, !tbaa !15
  %1124 = getelementptr inbounds %struct.doublecomplex, ptr %52, i32 0, i32 0
  %1125 = load double, ptr %1124, align 8, !tbaa !13
  %1126 = fmul double %1123, %1125
  %1127 = call double @llvm.fmuladd.f64(double %1119, double %1121, double %1126)
  %1128 = getelementptr inbounds %struct.doublecomplex, ptr %34, i32 0, i32 1
  store double %1127, ptr %1128, align 8, !tbaa !15
  %1129 = getelementptr inbounds %struct.doublecomplex, ptr %34, i32 0, i32 0
  %1130 = load double, ptr %1129, align 8, !tbaa !13
  %1131 = fsub double %1130, 1.000000e+00
  %1132 = getelementptr inbounds %struct.doublecomplex, ptr %33, i32 0, i32 0
  store double %1131, ptr %1132, align 8, !tbaa !13
  %1133 = getelementptr inbounds %struct.doublecomplex, ptr %34, i32 0, i32 1
  %1134 = load double, ptr %1133, align 8, !tbaa !15
  %1135 = fadd double %1134, 0.000000e+00
  %1136 = getelementptr inbounds %struct.doublecomplex, ptr %33, i32 0, i32 1
  store double %1135, ptr %1136, align 8, !tbaa !15
  %1137 = call { double, double } @Cd(ptr noundef @c_b1)
  %1138 = extractvalue { double, double } %1137, 0
  %1139 = extractvalue { double, double } %1137, 1
  %1140 = call { double, double } @Cd(ptr noundef %33)
  %1141 = extractvalue { double, double } %1140, 0
  %1142 = extractvalue { double, double } %1140, 1
  %1143 = call { double, double } @__divdc3(double noundef %1138, double noundef %1139, double noundef %1141, double noundef %1142) #6
  %1144 = extractvalue { double, double } %1143, 0
  %1145 = extractvalue { double, double } %1143, 1
  %1146 = call ptr @_pCd(ptr noundef %32)
  %1147 = getelementptr inbounds { double, double }, ptr %1146, i32 0, i32 0
  %1148 = getelementptr inbounds { double, double }, ptr %1146, i32 0, i32 1
  store double %1144, ptr %1147, align 8
  store double %1145, ptr %1148, align 8
  %1149 = getelementptr inbounds %struct.doublecomplex, ptr %32, i32 0, i32 0
  %1150 = load double, ptr %1149, align 8, !tbaa !13
  %1151 = getelementptr inbounds %struct.doublecomplex, ptr %42, i32 0, i32 0
  store double %1150, ptr %1151, align 8, !tbaa !13
  %1152 = getelementptr inbounds %struct.doublecomplex, ptr %32, i32 0, i32 1
  %1153 = load double, ptr %1152, align 8, !tbaa !15
  %1154 = getelementptr inbounds %struct.doublecomplex, ptr %42, i32 0, i32 1
  store double %1153, ptr %1154, align 8, !tbaa !15
  %1155 = load i32, ptr %40, align 4, !tbaa !9
  %1156 = sub nsw i32 %1155, 2
  store i32 %1156, ptr %25, align 4, !tbaa !9
  store i32 1, ptr %39, align 4, !tbaa !9
  br label %1157

1157:                                             ; preds = %1411, %1031
  %1158 = load i32, ptr %39, align 4, !tbaa !9
  %1159 = load i32, ptr %25, align 4, !tbaa !9
  %1160 = icmp sle i32 %1158, %1159
  br i1 %1160, label %1161, label %1414

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

1411:                                             ; preds = %1161
  %1412 = load i32, ptr %39, align 4, !tbaa !9
  %1413 = add nsw i32 %1412, 1
  store i32 %1413, ptr %39, align 4, !tbaa !9
  br label %1157, !llvm.loop !18

1414:                                             ; preds = %1157
  br label %1415

1415:                                             ; preds = %1414, %1028
  %1416 = load i32, ptr %40, align 4, !tbaa !9
  %1417 = sub nsw i32 %1416, 1
  %1418 = load i32, ptr %40, align 4, !tbaa !9
  %1419 = sub nsw i32 %1418, 1
  %1420 = load i32, ptr %21, align 4, !tbaa !9
  %1421 = mul nsw i32 %1419, %1420
  %1422 = add nsw i32 %1417, %1421
  store i32 %1422, ptr %25, align 4, !tbaa !9
  %1423 = load i32, ptr %40, align 4, !tbaa !9
  %1424 = sub nsw i32 %1423, 1
  %1425 = load i32, ptr %59, align 4, !tbaa !9
  %1426 = sub nsw i32 %1425, 1
  %1427 = load i32, ptr %23, align 4, !tbaa !9
  %1428 = mul nsw i32 %1426, %1427
  %1429 = add nsw i32 %1424, %1428
  store i32 %1429, ptr %26, align 4, !tbaa !9
  %1430 = load ptr, ptr %18, align 8, !tbaa !5
  %1431 = load i32, ptr %26, align 4, !tbaa !9
  %1432 = sext i32 %1431 to i64
  %1433 = getelementptr inbounds %struct.doublecomplex, ptr %1430, i64 %1432
  %1434 = getelementptr inbounds %struct.doublecomplex, ptr %1433, i32 0, i32 0
  %1435 = load double, ptr %1434, align 8, !tbaa !13
  %1436 = load ptr, ptr %15, align 8, !tbaa !5
  %1437 = load i32, ptr %25, align 4, !tbaa !9
  %1438 = sext i32 %1437 to i64
  %1439 = getelementptr inbounds %struct.doublecomplex, ptr %1436, i64 %1438
  %1440 = getelementptr inbounds %struct.doublecomplex, ptr %1439, i32 0, i32 0
  store double %1435, ptr %1440, align 8, !tbaa !13
  %1441 = load ptr, ptr %18, align 8, !tbaa !5
  %1442 = load i32, ptr %26, align 4, !tbaa !9
  %1443 = sext i32 %1442 to i64
  %1444 = getelementptr inbounds %struct.doublecomplex, ptr %1441, i64 %1443
  %1445 = getelementptr inbounds %struct.doublecomplex, ptr %1444, i32 0, i32 1
  %1446 = load double, ptr %1445, align 8, !tbaa !15
  %1447 = load ptr, ptr %15, align 8, !tbaa !5
  %1448 = load i32, ptr %25, align 4, !tbaa !9
  %1449 = sext i32 %1448 to i64
  %1450 = getelementptr inbounds %struct.doublecomplex, ptr %1447, i64 %1449
  %1451 = getelementptr inbounds %struct.doublecomplex, ptr %1450, i32 0, i32 1
  store double %1446, ptr %1451, align 8, !tbaa !15
  %1452 = load i32, ptr %40, align 4, !tbaa !9
  %1453 = sub nsw i32 %1452, 1
  %1454 = load i32, ptr %40, align 4, !tbaa !9
  %1455 = load i32, ptr %21, align 4, !tbaa !9
  %1456 = mul nsw i32 %1454, %1455
  %1457 = add nsw i32 %1453, %1456
  store i32 %1457, ptr %25, align 4, !tbaa !9
  %1458 = load i32, ptr %40, align 4, !tbaa !9
  %1459 = sub nsw i32 %1458, 1
  %1460 = load i32, ptr %59, align 4, !tbaa !9
  %1461 = load i32, ptr %23, align 4, !tbaa !9
  %1462 = mul nsw i32 %1460, %1461
  %1463 = add nsw i32 %1459, %1462
  store i32 %1463, ptr %26, align 4, !tbaa !9
  %1464 = load ptr, ptr %18, align 8, !tbaa !5
  %1465 = load i32, ptr %26, align 4, !tbaa !9
  %1466 = sext i32 %1465 to i64
  %1467 = getelementptr inbounds %struct.doublecomplex, ptr %1464, i64 %1466
  %1468 = getelementptr inbounds %struct.doublecomplex, ptr %1467, i32 0, i32 0
  %1469 = load double, ptr %1468, align 8, !tbaa !13
  %1470 = load ptr, ptr %15, align 8, !tbaa !5
  %1471 = load i32, ptr %25, align 4, !tbaa !9
  %1472 = sext i32 %1471 to i64
  %1473 = getelementptr inbounds %struct.doublecomplex, ptr %1470, i64 %1472
  %1474 = getelementptr inbounds %struct.doublecomplex, ptr %1473, i32 0, i32 0
  store double %1469, ptr %1474, align 8, !tbaa !13
  %1475 = load ptr, ptr %18, align 8, !tbaa !5
  %1476 = load i32, ptr %26, align 4, !tbaa !9
  %1477 = sext i32 %1476 to i64
  %1478 = getelementptr inbounds %struct.doublecomplex, ptr %1475, i64 %1477
  %1479 = getelementptr inbounds %struct.doublecomplex, ptr %1478, i32 0, i32 1
  %1480 = load double, ptr %1479, align 8, !tbaa !15
  %1481 = load ptr, ptr %15, align 8, !tbaa !5
  %1482 = load i32, ptr %25, align 4, !tbaa !9
  %1483 = sext i32 %1482 to i64
  %1484 = getelementptr inbounds %struct.doublecomplex, ptr %1481, i64 %1483
  %1485 = getelementptr inbounds %struct.doublecomplex, ptr %1484, i32 0, i32 1
  store double %1480, ptr %1485, align 8, !tbaa !15
  %1486 = load i32, ptr %40, align 4, !tbaa !9
  %1487 = load i32, ptr %40, align 4, !tbaa !9
  %1488 = load i32, ptr %21, align 4, !tbaa !9
  %1489 = mul nsw i32 %1487, %1488
  %1490 = add nsw i32 %1486, %1489
  store i32 %1490, ptr %25, align 4, !tbaa !9
  %1491 = load i32, ptr %40, align 4, !tbaa !9
  %1492 = load i32, ptr %59, align 4, !tbaa !9
  %1493 = load i32, ptr %23, align 4, !tbaa !9
  %1494 = mul nsw i32 %1492, %1493
  %1495 = add nsw i32 %1491, %1494
  store i32 %1495, ptr %26, align 4, !tbaa !9
  %1496 = load ptr, ptr %18, align 8, !tbaa !5
  %1497 = load i32, ptr %26, align 4, !tbaa !9
  %1498 = sext i32 %1497 to i64
  %1499 = getelementptr inbounds %struct.doublecomplex, ptr %1496, i64 %1498
  %1500 = getelementptr inbounds %struct.doublecomplex, ptr %1499, i32 0, i32 0
  %1501 = load double, ptr %1500, align 8, !tbaa !13
  %1502 = load ptr, ptr %15, align 8, !tbaa !5
  %1503 = load i32, ptr %25, align 4, !tbaa !9
  %1504 = sext i32 %1503 to i64
  %1505 = getelementptr inbounds %struct.doublecomplex, ptr %1502, i64 %1504
  %1506 = getelementptr inbounds %struct.doublecomplex, ptr %1505, i32 0, i32 0
  store double %1501, ptr %1506, align 8, !tbaa !13
  %1507 = load ptr, ptr %18, align 8, !tbaa !5
  %1508 = load i32, ptr %26, align 4, !tbaa !9
  %1509 = sext i32 %1508 to i64
  %1510 = getelementptr inbounds %struct.doublecomplex, ptr %1507, i64 %1509
  %1511 = getelementptr inbounds %struct.doublecomplex, ptr %1510, i32 0, i32 1
  %1512 = load double, ptr %1511, align 8, !tbaa !15
  %1513 = load ptr, ptr %15, align 8, !tbaa !5
  %1514 = load i32, ptr %25, align 4, !tbaa !9
  %1515 = sext i32 %1514 to i64
  %1516 = getelementptr inbounds %struct.doublecomplex, ptr %1513, i64 %1515
  %1517 = getelementptr inbounds %struct.doublecomplex, ptr %1516, i32 0, i32 1
  store double %1512, ptr %1517, align 8, !tbaa !15
  br label %1518

1518:                                             ; preds = %1415, %1027
  br label %1519

1519:                                             ; preds = %1518, %292
  %1520 = load i32, ptr %47, align 4, !tbaa !9
  %1521 = icmp eq i32 %1520, 1
  br i1 %1521, label %1522, label %1528

1522:                                             ; preds = %1519
  %1523 = load i32, ptr %57, align 4, !tbaa !9
  %1524 = load ptr, ptr %17, align 8, !tbaa !5
  %1525 = load i32, ptr %40, align 4, !tbaa !9
  %1526 = sext i32 %1525 to i64
  %1527 = getelementptr inbounds i32, ptr %1524, i64 %1526
  store i32 %1523, ptr %1527, align 4, !tbaa !9
  br label %1542

1528:                                             ; preds = %1519
  %1529 = load i32, ptr %41, align 4, !tbaa !9
  %1530 = sub nsw i32 0, %1529
  %1531 = load ptr, ptr %17, align 8, !tbaa !5
  %1532 = load i32, ptr %40, align 4, !tbaa !9
  %1533 = sext i32 %1532 to i64
  %1534 = getelementptr inbounds i32, ptr %1531, i64 %1533
  store i32 %1530, ptr %1534, align 4, !tbaa !9
  %1535 = load i32, ptr %57, align 4, !tbaa !9
  %1536 = sub nsw i32 0, %1535
  %1537 = load ptr, ptr %17, align 8, !tbaa !5
  %1538 = load i32, ptr %40, align 4, !tbaa !9
  %1539 = sub nsw i32 %1538, 1
  %1540 = sext i32 %1539 to i64
  %1541 = getelementptr inbounds i32, ptr %1537, i64 %1540
  store i32 %1536, ptr %1541, align 4, !tbaa !9
  br label %1542

1542:                                             ; preds = %1528, %1522
  %1543 = load i32, ptr %47, align 4, !tbaa !9
  %1544 = load i32, ptr %40, align 4, !tbaa !9
  %1545 = sub nsw i32 %1544, %1543
  store i32 %1545, ptr %40, align 4, !tbaa !9
  br label %98

1546:                                             ; preds = %123
  %1547 = load ptr, ptr %13, align 8, !tbaa !5
  %1548 = load i32, ptr %1547, align 4, !tbaa !9
  %1549 = sub nsw i32 0, %1548
  store i32 %1549, ptr %25, align 4, !tbaa !9
  %1550 = load i32, ptr %40, align 4, !tbaa !9
  %1551 = sub nsw i32 %1550, 1
  %1552 = load ptr, ptr %13, align 8, !tbaa !5
  %1553 = load i32, ptr %1552, align 4, !tbaa !9
  %1554 = sdiv i32 %1551, %1553
  %1555 = load ptr, ptr %13, align 8, !tbaa !5
  %1556 = load i32, ptr %1555, align 4, !tbaa !9
  %1557 = mul nsw i32 %1554, %1556
  %1558 = add nsw i32 %1557, 1
  store i32 %1558, ptr %39, align 4, !tbaa !9
  br label %1559

1559:                                             ; preds = %1680, %1546
  %1560 = load i32, ptr %25, align 4, !tbaa !9
  %1561 = icmp slt i32 %1560, 0
  br i1 %1561, label %1562, label %1566

1562:                                             ; preds = %1559
  %1563 = load i32, ptr %39, align 4, !tbaa !9
  %1564 = icmp sge i32 %1563, 1
  %1565 = zext i1 %1564 to i32
  br label %1570

1566:                                             ; preds = %1559
  %1567 = load i32, ptr %39, align 4, !tbaa !9
  %1568 = icmp sle i32 %1567, 1
  %1569 = zext i1 %1568 to i32
  br label %1570

1570:                                             ; preds = %1566, %1562
  %1571 = phi i32 [ %1565, %1562 ], [ %1569, %1566 ]
  %1572 = icmp ne i32 %1571, 0
  br i1 %1572, label %1573, label %1684

1573:                                             ; preds = %1570
  %1574 = load ptr, ptr %13, align 8, !tbaa !5
  %1575 = load i32, ptr %1574, align 4, !tbaa !9
  store i32 %1575, ptr %26, align 4, !tbaa !9
  %1576 = load i32, ptr %40, align 4, !tbaa !9
  %1577 = load i32, ptr %39, align 4, !tbaa !9
  %1578 = sub nsw i32 %1576, %1577
  %1579 = add nsw i32 %1578, 1
  store i32 %1579, ptr %27, align 4, !tbaa !9
  %1580 = load i32, ptr %26, align 4, !tbaa !9
  %1581 = load i32, ptr %27, align 4, !tbaa !9
  %1582 = icmp sle i32 %1580, %1581
  br i1 %1582, label %1583, label %1585

1583:                                             ; preds = %1573
  %1584 = load i32, ptr %26, align 4, !tbaa !9
  br label %1587

1585:                                             ; preds = %1573
  %1586 = load i32, ptr %27, align 4, !tbaa !9
  br label %1587

1587:                                             ; preds = %1585, %1583
  %1588 = phi i32 [ %1584, %1583 ], [ %1586, %1585 ]
  store i32 %1588, ptr %53, align 4, !tbaa !9
  %1589 = load i32, ptr %39, align 4, !tbaa !9
  %1590 = load i32, ptr %53, align 4, !tbaa !9
  %1591 = add nsw i32 %1589, %1590
  %1592 = sub nsw i32 %1591, 1
  store i32 %1592, ptr %26, align 4, !tbaa !9
  %1593 = load i32, ptr %39, align 4, !tbaa !9
  store i32 %1593, ptr %55, align 4, !tbaa !9
  br label %1594

1594:                                             ; preds = %1637, %1587
  %1595 = load i32, ptr %55, align 4, !tbaa !9
  %1596 = load i32, ptr %26, align 4, !tbaa !9
  %1597 = icmp sle i32 %1595, %1596
  br i1 %1597, label %1598, label %1640

1598:                                             ; preds = %1594
  %1599 = load i32, ptr %55, align 4, !tbaa !9
  %1600 = load i32, ptr %39, align 4, !tbaa !9
  %1601 = sub nsw i32 %1599, %1600
  %1602 = add nsw i32 %1601, 1
  store i32 %1602, ptr %27, align 4, !tbaa !9
  %1603 = load ptr, ptr %12, align 8, !tbaa !5
  %1604 = load i32, ptr %1603, align 4, !tbaa !9
  %1605 = load i32, ptr %40, align 4, !tbaa !9
  %1606 = sub nsw i32 %1604, %1605
  store i32 %1606, ptr %28, align 4, !tbaa !9
  %1607 = getelementptr inbounds %struct.doublecomplex, ptr %32, i32 0, i32 0
  store double -1.000000e+00, ptr %1607, align 8, !tbaa !13
  %1608 = getelementptr inbounds %struct.doublecomplex, ptr %32, i32 0, i32 1
  store double 0.000000e+00, ptr %1608, align 8, !tbaa !15
  %1609 = load ptr, ptr %15, align 8, !tbaa !5
  %1610 = load i32, ptr %39, align 4, !tbaa !9
  %1611 = load i32, ptr %40, align 4, !tbaa !9
  %1612 = add nsw i32 %1611, 1
  %1613 = load i32, ptr %21, align 4, !tbaa !9
  %1614 = mul nsw i32 %1612, %1613
  %1615 = add nsw i32 %1610, %1614
  %1616 = sext i32 %1615 to i64
  %1617 = getelementptr inbounds %struct.doublecomplex, ptr %1609, i64 %1616
  %1618 = load ptr, ptr %16, align 8, !tbaa !5
  %1619 = load ptr, ptr %18, align 8, !tbaa !5
  %1620 = load i32, ptr %55, align 4, !tbaa !9
  %1621 = load i32, ptr %59, align 4, !tbaa !9
  %1622 = add nsw i32 %1621, 1
  %1623 = load i32, ptr %23, align 4, !tbaa !9
  %1624 = mul nsw i32 %1622, %1623
  %1625 = add nsw i32 %1620, %1624
  %1626 = sext i32 %1625 to i64
  %1627 = getelementptr inbounds %struct.doublecomplex, ptr %1619, i64 %1626
  %1628 = load ptr, ptr %19, align 8, !tbaa !5
  %1629 = load ptr, ptr %15, align 8, !tbaa !5
  %1630 = load i32, ptr %39, align 4, !tbaa !9
  %1631 = load i32, ptr %55, align 4, !tbaa !9
  %1632 = load i32, ptr %21, align 4, !tbaa !9
  %1633 = mul nsw i32 %1631, %1632
  %1634 = add nsw i32 %1630, %1633
  %1635 = sext i32 %1634 to i64
  %1636 = getelementptr inbounds %struct.doublecomplex, ptr %1629, i64 %1635
  call void @zgemv_(ptr noundef @.str.2, ptr noundef %27, ptr noundef %28, ptr noundef %32, ptr noundef %1617, ptr noundef %1618, ptr noundef %1627, ptr noundef %1628, ptr noundef @c_b1, ptr noundef %1636, ptr noundef @c__1)
  br label %1637

1637:                                             ; preds = %1598
  %1638 = load i32, ptr %55, align 4, !tbaa !9
  %1639 = add nsw i32 %1638, 1
  store i32 %1639, ptr %55, align 4, !tbaa !9
  br label %1594, !llvm.loop !19

1640:                                             ; preds = %1594
  %1641 = load i32, ptr %39, align 4, !tbaa !9
  %1642 = icmp sge i32 %1641, 2
  br i1 %1642, label %1643, label %1679

1643:                                             ; preds = %1640
  %1644 = load i32, ptr %39, align 4, !tbaa !9
  %1645 = sub nsw i32 %1644, 1
  store i32 %1645, ptr %26, align 4, !tbaa !9
  %1646 = load ptr, ptr %12, align 8, !tbaa !5
  %1647 = load i32, ptr %1646, align 4, !tbaa !9
  %1648 = load i32, ptr %40, align 4, !tbaa !9
  %1649 = sub nsw i32 %1647, %1648
  store i32 %1649, ptr %27, align 4, !tbaa !9
  %1650 = getelementptr inbounds %struct.doublecomplex, ptr %32, i32 0, i32 0
  store double -1.000000e+00, ptr %1650, align 8, !tbaa !13
  %1651 = getelementptr inbounds %struct.doublecomplex, ptr %32, i32 0, i32 1
  store double 0.000000e+00, ptr %1651, align 8, !tbaa !15
  %1652 = load ptr, ptr %15, align 8, !tbaa !5
  %1653 = load i32, ptr %40, align 4, !tbaa !9
  %1654 = add nsw i32 %1653, 1
  %1655 = load i32, ptr %21, align 4, !tbaa !9
  %1656 = mul nsw i32 %1654, %1655
  %1657 = add nsw i32 %1656, 1
  %1658 = sext i32 %1657 to i64
  %1659 = getelementptr inbounds %struct.doublecomplex, ptr %1652, i64 %1658
  %1660 = load ptr, ptr %16, align 8, !tbaa !5
  %1661 = load ptr, ptr %18, align 8, !tbaa !5
  %1662 = load i32, ptr %39, align 4, !tbaa !9
  %1663 = load i32, ptr %59, align 4, !tbaa !9
  %1664 = add nsw i32 %1663, 1
  %1665 = load i32, ptr %23, align 4, !tbaa !9
  %1666 = mul nsw i32 %1664, %1665
  %1667 = add nsw i32 %1662, %1666
  %1668 = sext i32 %1667 to i64
  %1669 = getelementptr inbounds %struct.doublecomplex, ptr %1661, i64 %1668
  %1670 = load ptr, ptr %19, align 8, !tbaa !5
  %1671 = load ptr, ptr %15, align 8, !tbaa !5
  %1672 = load i32, ptr %39, align 4, !tbaa !9
  %1673 = load i32, ptr %21, align 4, !tbaa !9
  %1674 = mul nsw i32 %1672, %1673
  %1675 = add nsw i32 %1674, 1
  %1676 = sext i32 %1675 to i64
  %1677 = getelementptr inbounds %struct.doublecomplex, ptr %1671, i64 %1676
  %1678 = load ptr, ptr %16, align 8, !tbaa !5
  call void @zgemm_(ptr noundef @.str.2, ptr noundef @.str.3, ptr noundef %26, ptr noundef %53, ptr noundef %27, ptr noundef %32, ptr noundef %1659, ptr noundef %1660, ptr noundef %1669, ptr noundef %1670, ptr noundef @c_b1, ptr noundef %1677, ptr noundef %1678)
  br label %1679

1679:                                             ; preds = %1643, %1640
  br label %1680

1680:                                             ; preds = %1679
  %1681 = load i32, ptr %25, align 4, !tbaa !9
  %1682 = load i32, ptr %39, align 4, !tbaa !9
  %1683 = add nsw i32 %1682, %1681
  store i32 %1683, ptr %39, align 4, !tbaa !9
  br label %1559, !llvm.loop !20

1684:                                             ; preds = %1570
  %1685 = load i32, ptr %40, align 4, !tbaa !9
  %1686 = add nsw i32 %1685, 1
  store i32 %1686, ptr %39, align 4, !tbaa !9
  br label %1687

1687:                                             ; preds = %1780, %1684
  store i32 1, ptr %47, align 4, !tbaa !9
  store i32 1, ptr %61, align 4, !tbaa !9
  %1688 = load i32, ptr %39, align 4, !tbaa !9
  store i32 %1688, ptr %55, align 4, !tbaa !9
  %1689 = load ptr, ptr %17, align 8, !tbaa !5
  %1690 = load i32, ptr %39, align 4, !tbaa !9
  %1691 = sext i32 %1690 to i64
  %1692 = getelementptr inbounds i32, ptr %1689, i64 %1691
  %1693 = load i32, ptr %1692, align 4, !tbaa !9
  store i32 %1693, ptr %62, align 4, !tbaa !9
  %1694 = load i32, ptr %62, align 4, !tbaa !9
  %1695 = icmp slt i32 %1694, 0
  br i1 %1695, label %1696, label %1707

1696:                                             ; preds = %1687
  %1697 = load i32, ptr %62, align 4, !tbaa !9
  %1698 = sub nsw i32 0, %1697
  store i32 %1698, ptr %62, align 4, !tbaa !9
  %1699 = load i32, ptr %39, align 4, !tbaa !9
  %1700 = add nsw i32 %1699, 1
  store i32 %1700, ptr %39, align 4, !tbaa !9
  %1701 = load ptr, ptr %17, align 8, !tbaa !5
  %1702 = load i32, ptr %39, align 4, !tbaa !9
  %1703 = sext i32 %1702 to i64
  %1704 = getelementptr inbounds i32, ptr %1701, i64 %1703
  %1705 = load i32, ptr %1704, align 4, !tbaa !9
  %1706 = sub nsw i32 0, %1705
  store i32 %1706, ptr %61, align 4, !tbaa !9
  store i32 2, ptr %47, align 4, !tbaa !9
  br label %1707

1707:                                             ; preds = %1696, %1687
  %1708 = load i32, ptr %39, align 4, !tbaa !9
  %1709 = add nsw i32 %1708, 1
  store i32 %1709, ptr %39, align 4, !tbaa !9
  %1710 = load i32, ptr %62, align 4, !tbaa !9
  %1711 = load i32, ptr %55, align 4, !tbaa !9
  %1712 = icmp ne i32 %1710, %1711
  br i1 %1712, label %1713, label %1742

1713:                                             ; preds = %1707
  %1714 = load i32, ptr %39, align 4, !tbaa !9
  %1715 = load ptr, ptr %12, align 8, !tbaa !5
  %1716 = load i32, ptr %1715, align 4, !tbaa !9
  %1717 = icmp sle i32 %1714, %1716
  br i1 %1717, label %1718, label %1742

1718:                                             ; preds = %1713
  %1719 = load ptr, ptr %12, align 8, !tbaa !5
  %1720 = load i32, ptr %1719, align 4, !tbaa !9
  %1721 = load i32, ptr %39, align 4, !tbaa !9
  %1722 = sub nsw i32 %1720, %1721
  %1723 = add nsw i32 %1722, 1
  store i32 %1723, ptr %25, align 4, !tbaa !9
  %1724 = load ptr, ptr %15, align 8, !tbaa !5
  %1725 = load i32, ptr %62, align 4, !tbaa !9
  %1726 = load i32, ptr %39, align 4, !tbaa !9
  %1727 = load i32, ptr %21, align 4, !tbaa !9
  %1728 = mul nsw i32 %1726, %1727
  %1729 = add nsw i32 %1725, %1728
  %1730 = sext i32 %1729 to i64
  %1731 = getelementptr inbounds %struct.doublecomplex, ptr %1724, i64 %1730
  %1732 = load ptr, ptr %16, align 8, !tbaa !5
  %1733 = load ptr, ptr %15, align 8, !tbaa !5
  %1734 = load i32, ptr %55, align 4, !tbaa !9
  %1735 = load i32, ptr %39, align 4, !tbaa !9
  %1736 = load i32, ptr %21, align 4, !tbaa !9
  %1737 = mul nsw i32 %1735, %1736
  %1738 = add nsw i32 %1734, %1737
  %1739 = sext i32 %1738 to i64
  %1740 = getelementptr inbounds %struct.doublecomplex, ptr %1733, i64 %1739
  %1741 = load ptr, ptr %16, align 8, !tbaa !5
  call void @zswap_(ptr noundef %25, ptr noundef %1731, ptr noundef %1732, ptr noundef %1740, ptr noundef %1741)
  br label %1742

1742:                                             ; preds = %1718, %1713, %1707
  %1743 = load i32, ptr %39, align 4, !tbaa !9
  %1744 = sub nsw i32 %1743, 1
  store i32 %1744, ptr %55, align 4, !tbaa !9
  %1745 = load i32, ptr %61, align 4, !tbaa !9
  %1746 = load i32, ptr %55, align 4, !tbaa !9
  %1747 = icmp ne i32 %1745, %1746
  br i1 %1747, label %1748, label %1775

1748:                                             ; preds = %1742
  %1749 = load i32, ptr %47, align 4, !tbaa !9
  %1750 = icmp eq i32 %1749, 2
  br i1 %1750, label %1751, label %1775

1751:                                             ; preds = %1748
  %1752 = load ptr, ptr %12, align 8, !tbaa !5
  %1753 = load i32, ptr %1752, align 4, !tbaa !9
  %1754 = load i32, ptr %39, align 4, !tbaa !9
  %1755 = sub nsw i32 %1753, %1754
  %1756 = add nsw i32 %1755, 1
  store i32 %1756, ptr %25, align 4, !tbaa !9
  %1757 = load ptr, ptr %15, align 8, !tbaa !5
  %1758 = load i32, ptr %61, align 4, !tbaa !9
  %1759 = load i32, ptr %39, align 4, !tbaa !9
  %1760 = load i32, ptr %21, align 4, !tbaa !9
  %1761 = mul nsw i32 %1759, %1760
  %1762 = add nsw i32 %1758, %1761
  %1763 = sext i32 %1762 to i64
  %1764 = getelementptr inbounds %struct.doublecomplex, ptr %1757, i64 %1763
  %1765 = load ptr, ptr %16, align 8, !tbaa !5
  %1766 = load ptr, ptr %15, align 8, !tbaa !5
  %1767 = load i32, ptr %55, align 4, !tbaa !9
  %1768 = load i32, ptr %39, align 4, !tbaa !9
  %1769 = load i32, ptr %21, align 4, !tbaa !9
  %1770 = mul nsw i32 %1768, %1769
  %1771 = add nsw i32 %1767, %1770
  %1772 = sext i32 %1771 to i64
  %1773 = getelementptr inbounds %struct.doublecomplex, ptr %1766, i64 %1772
  %1774 = load ptr, ptr %16, align 8, !tbaa !5
  call void @zswap_(ptr noundef %25, ptr noundef %1764, ptr noundef %1765, ptr noundef %1773, ptr noundef %1774)
  br label %1775

1775:                                             ; preds = %1751, %1748, %1742
  %1776 = load i32, ptr %39, align 4, !tbaa !9
  %1777 = load ptr, ptr %12, align 8, !tbaa !5
  %1778 = load i32, ptr %1777, align 4, !tbaa !9
  %1779 = icmp sle i32 %1776, %1778
  br i1 %1779, label %1780, label %1781

1780:                                             ; preds = %1775
  br label %1687

1781:                                             ; preds = %1775
  %1782 = load ptr, ptr %12, align 8, !tbaa !5
  %1783 = load i32, ptr %1782, align 4, !tbaa !9
  %1784 = load i32, ptr %40, align 4, !tbaa !9
  %1785 = sub nsw i32 %1783, %1784
  %1786 = load ptr, ptr %14, align 8, !tbaa !5
  store i32 %1785, ptr %1786, align 4, !tbaa !9
  br label %3472

1787:                                             ; preds = %10
  store i32 1, ptr %40, align 4, !tbaa !9
  br label %1788

1788:                                             ; preds = %3255, %1787
  %1789 = load i32, ptr %40, align 4, !tbaa !9
  %1790 = load ptr, ptr %13, align 8, !tbaa !5
  %1791 = load i32, ptr %1790, align 4, !tbaa !9
  %1792 = icmp sge i32 %1789, %1791
  br i1 %1792, label %1793, label %1799

1793:                                             ; preds = %1788
  %1794 = load ptr, ptr %13, align 8, !tbaa !5
  %1795 = load i32, ptr %1794, align 4, !tbaa !9
  %1796 = load ptr, ptr %12, align 8, !tbaa !5
  %1797 = load i32, ptr %1796, align 4, !tbaa !9
  %1798 = icmp slt i32 %1795, %1797
  br i1 %1798, label %1804, label %1799

1799:                                             ; preds = %1793, %1788
  %1800 = load i32, ptr %40, align 4, !tbaa !9
  %1801 = load ptr, ptr %12, align 8, !tbaa !5
  %1802 = load i32, ptr %1801, align 4, !tbaa !9
  %1803 = icmp sgt i32 %1800, %1802
  br i1 %1803, label %1804, label %1805

1804:                                             ; preds = %1799, %1793
  br label %3259

1805:                                             ; preds = %1799
  store i32 1, ptr %47, align 4, !tbaa !9
  %1806 = load i32, ptr %40, align 4, !tbaa !9
  store i32 %1806, ptr %41, align 4, !tbaa !9
  %1807 = load ptr, ptr %12, align 8, !tbaa !5
  %1808 = load i32, ptr %1807, align 4, !tbaa !9
  %1809 = load i32, ptr %40, align 4, !tbaa !9
  %1810 = sub nsw i32 %1808, %1809
  %1811 = add nsw i32 %1810, 1
  store i32 %1811, ptr %25, align 4, !tbaa !9
  %1812 = load ptr, ptr %15, align 8, !tbaa !5
  %1813 = load i32, ptr %40, align 4, !tbaa !9
  %1814 = load i32, ptr %40, align 4, !tbaa !9
  %1815 = load i32, ptr %21, align 4, !tbaa !9
  %1816 = mul nsw i32 %1814, %1815
  %1817 = add nsw i32 %1813, %1816
  %1818 = sext i32 %1817 to i64
  %1819 = getelementptr inbounds %struct.doublecomplex, ptr %1812, i64 %1818
  %1820 = load ptr, ptr %18, align 8, !tbaa !5
  %1821 = load i32, ptr %40, align 4, !tbaa !9
  %1822 = load i32, ptr %40, align 4, !tbaa !9
  %1823 = load i32, ptr %23, align 4, !tbaa !9
  %1824 = mul nsw i32 %1822, %1823
  %1825 = add nsw i32 %1821, %1824
  %1826 = sext i32 %1825 to i64
  %1827 = getelementptr inbounds %struct.doublecomplex, ptr %1820, i64 %1826
  call void @zcopy_(ptr noundef %25, ptr noundef %1819, ptr noundef @c__1, ptr noundef %1827, ptr noundef @c__1)
  %1828 = load i32, ptr %40, align 4, !tbaa !9
  %1829 = icmp sgt i32 %1828, 1
  br i1 %1829, label %1830, label %1862

1830:                                             ; preds = %1805
  %1831 = load ptr, ptr %12, align 8, !tbaa !5
  %1832 = load i32, ptr %1831, align 4, !tbaa !9
  %1833 = load i32, ptr %40, align 4, !tbaa !9
  %1834 = sub nsw i32 %1832, %1833
  %1835 = add nsw i32 %1834, 1
  store i32 %1835, ptr %25, align 4, !tbaa !9
  %1836 = load i32, ptr %40, align 4, !tbaa !9
  %1837 = sub nsw i32 %1836, 1
  store i32 %1837, ptr %26, align 4, !tbaa !9
  %1838 = getelementptr inbounds %struct.doublecomplex, ptr %32, i32 0, i32 0
  store double -1.000000e+00, ptr %1838, align 8, !tbaa !13
  %1839 = getelementptr inbounds %struct.doublecomplex, ptr %32, i32 0, i32 1
  store double 0.000000e+00, ptr %1839, align 8, !tbaa !15
  %1840 = load ptr, ptr %15, align 8, !tbaa !5
  %1841 = load i32, ptr %40, align 4, !tbaa !9
  %1842 = load i32, ptr %21, align 4, !tbaa !9
  %1843 = add nsw i32 %1841, %1842
  %1844 = sext i32 %1843 to i64
  %1845 = getelementptr inbounds %struct.doublecomplex, ptr %1840, i64 %1844
  %1846 = load ptr, ptr %16, align 8, !tbaa !5
  %1847 = load ptr, ptr %18, align 8, !tbaa !5
  %1848 = load i32, ptr %40, align 4, !tbaa !9
  %1849 = load i32, ptr %23, align 4, !tbaa !9
  %1850 = add nsw i32 %1848, %1849
  %1851 = sext i32 %1850 to i64
  %1852 = getelementptr inbounds %struct.doublecomplex, ptr %1847, i64 %1851
  %1853 = load ptr, ptr %19, align 8, !tbaa !5
  %1854 = load ptr, ptr %18, align 8, !tbaa !5
  %1855 = load i32, ptr %40, align 4, !tbaa !9
  %1856 = load i32, ptr %40, align 4, !tbaa !9
  %1857 = load i32, ptr %23, align 4, !tbaa !9
  %1858 = mul nsw i32 %1856, %1857
  %1859 = add nsw i32 %1855, %1858
  %1860 = sext i32 %1859 to i64
  %1861 = getelementptr inbounds %struct.doublecomplex, ptr %1854, i64 %1860
  call void @zgemv_(ptr noundef @.str.2, ptr noundef %25, ptr noundef %26, ptr noundef %32, ptr noundef %1845, ptr noundef %1846, ptr noundef %1852, ptr noundef %1853, ptr noundef @c_b1, ptr noundef %1861, ptr noundef @c__1)
  br label %1862

1862:                                             ; preds = %1830, %1805
  %1863 = load i32, ptr %40, align 4, !tbaa !9
  %1864 = load i32, ptr %40, align 4, !tbaa !9
  %1865 = load i32, ptr %23, align 4, !tbaa !9
  %1866 = mul nsw i32 %1864, %1865
  %1867 = add nsw i32 %1863, %1866
  store i32 %1867, ptr %25, align 4, !tbaa !9
  %1868 = load ptr, ptr %18, align 8, !tbaa !5
  %1869 = load i32, ptr %25, align 4, !tbaa !9
  %1870 = sext i32 %1869 to i64
  %1871 = getelementptr inbounds %struct.doublecomplex, ptr %1868, i64 %1870
  %1872 = getelementptr inbounds %struct.doublecomplex, ptr %1871, i32 0, i32 0
  %1873 = load double, ptr %1872, align 8, !tbaa !13
  store double %1873, ptr %30, align 8, !tbaa !11
  %1874 = load double, ptr %30, align 8, !tbaa !11
  %1875 = fcmp oge double %1874, 0.000000e+00
  br i1 %1875, label %1876, label %1878

1876:                                             ; preds = %1862
  %1877 = load double, ptr %30, align 8, !tbaa !11
  br label %1881

1878:                                             ; preds = %1862
  %1879 = load double, ptr %30, align 8, !tbaa !11
  %1880 = fneg double %1879
  br label %1881

1881:                                             ; preds = %1878, %1876
  %1882 = phi double [ %1877, %1876 ], [ %1880, %1878 ]
  %1883 = load ptr, ptr %18, align 8, !tbaa !5
  %1884 = load i32, ptr %40, align 4, !tbaa !9
  %1885 = load i32, ptr %40, align 4, !tbaa !9
  %1886 = load i32, ptr %23, align 4, !tbaa !9
  %1887 = mul nsw i32 %1885, %1886
  %1888 = add nsw i32 %1884, %1887
  %1889 = sext i32 %1888 to i64
  %1890 = getelementptr inbounds %struct.doublecomplex, ptr %1883, i64 %1889
  %1891 = call { double, double } @Cd(ptr noundef %1890)
  %1892 = extractvalue { double, double } %1891, 0
  %1893 = extractvalue { double, double } %1891, 1
  store double %1893, ptr %31, align 8, !tbaa !11
  %1894 = load double, ptr %31, align 8, !tbaa !11
  %1895 = fcmp oge double %1894, 0.000000e+00
  br i1 %1895, label %1896, label %1898

1896:                                             ; preds = %1881
  %1897 = load double, ptr %31, align 8, !tbaa !11
  br label %1901

1898:                                             ; preds = %1881
  %1899 = load double, ptr %31, align 8, !tbaa !11
  %1900 = fneg double %1899
  br label %1901

1901:                                             ; preds = %1898, %1896
  %1902 = phi double [ %1897, %1896 ], [ %1900, %1898 ]
  %1903 = fadd double %1882, %1902
  store double %1903, ptr %58, align 8, !tbaa !11
  %1904 = load i32, ptr %40, align 4, !tbaa !9
  %1905 = load ptr, ptr %12, align 8, !tbaa !5
  %1906 = load i32, ptr %1905, align 4, !tbaa !9
  %1907 = icmp slt i32 %1904, %1906
  br i1 %1907, label %1908, label %1966

1908:                                             ; preds = %1901
  %1909 = load ptr, ptr %12, align 8, !tbaa !5
  %1910 = load i32, ptr %1909, align 4, !tbaa !9
  %1911 = load i32, ptr %40, align 4, !tbaa !9
  %1912 = sub nsw i32 %1910, %1911
  store i32 %1912, ptr %25, align 4, !tbaa !9
  %1913 = load i32, ptr %40, align 4, !tbaa !9
  %1914 = load ptr, ptr %18, align 8, !tbaa !5
  %1915 = load i32, ptr %40, align 4, !tbaa !9
  %1916 = add nsw i32 %1915, 1
  %1917 = load i32, ptr %40, align 4, !tbaa !9
  %1918 = load i32, ptr %23, align 4, !tbaa !9
  %1919 = mul nsw i32 %1917, %1918
  %1920 = add nsw i32 %1916, %1919
  %1921 = sext i32 %1920 to i64
  %1922 = getelementptr inbounds %struct.doublecomplex, ptr %1914, i64 %1921
  %1923 = call i32 @izamax_(ptr noundef %25, ptr noundef %1922, ptr noundef @c__1)
  %1924 = add nsw i32 %1913, %1923
  store i32 %1924, ptr %37, align 4, !tbaa !9
  %1925 = load i32, ptr %37, align 4, !tbaa !9
  %1926 = load i32, ptr %40, align 4, !tbaa !9
  %1927 = load i32, ptr %23, align 4, !tbaa !9
  %1928 = mul nsw i32 %1926, %1927
  %1929 = add nsw i32 %1925, %1928
  store i32 %1929, ptr %25, align 4, !tbaa !9
  %1930 = load ptr, ptr %18, align 8, !tbaa !5
  %1931 = load i32, ptr %25, align 4, !tbaa !9
  %1932 = sext i32 %1931 to i64
  %1933 = getelementptr inbounds %struct.doublecomplex, ptr %1930, i64 %1932
  %1934 = getelementptr inbounds %struct.doublecomplex, ptr %1933, i32 0, i32 0
  %1935 = load double, ptr %1934, align 8, !tbaa !13
  store double %1935, ptr %30, align 8, !tbaa !11
  %1936 = load double, ptr %30, align 8, !tbaa !11
  %1937 = fcmp oge double %1936, 0.000000e+00
  br i1 %1937, label %1938, label %1940

1938:                                             ; preds = %1908
  %1939 = load double, ptr %30, align 8, !tbaa !11
  br label %1943

1940:                                             ; preds = %1908
  %1941 = load double, ptr %30, align 8, !tbaa !11
  %1942 = fneg double %1941
  br label %1943

1943:                                             ; preds = %1940, %1938
  %1944 = phi double [ %1939, %1938 ], [ %1942, %1940 ]
  %1945 = load ptr, ptr %18, align 8, !tbaa !5
  %1946 = load i32, ptr %37, align 4, !tbaa !9
  %1947 = load i32, ptr %40, align 4, !tbaa !9
  %1948 = load i32, ptr %23, align 4, !tbaa !9
  %1949 = mul nsw i32 %1947, %1948
  %1950 = add nsw i32 %1946, %1949
  %1951 = sext i32 %1950 to i64
  %1952 = getelementptr inbounds %struct.doublecomplex, ptr %1945, i64 %1951
  %1953 = call { double, double } @Cd(ptr noundef %1952)
  %1954 = extractvalue { double, double } %1953, 0
  %1955 = extractvalue { double, double } %1953, 1
  store double %1955, ptr %31, align 8, !tbaa !11
  %1956 = load double, ptr %31, align 8, !tbaa !11
  %1957 = fcmp oge double %1956, 0.000000e+00
  br i1 %1957, label %1958, label %1960

1958:                                             ; preds = %1943
  %1959 = load double, ptr %31, align 8, !tbaa !11
  br label %1963

1960:                                             ; preds = %1943
  %1961 = load double, ptr %31, align 8, !tbaa !11
  %1962 = fneg double %1961
  br label %1963

1963:                                             ; preds = %1960, %1958
  %1964 = phi double [ %1959, %1958 ], [ %1962, %1960 ]
  %1965 = fadd double %1944, %1964
  store double %1965, ptr %60, align 8, !tbaa !11
  br label %1967

1966:                                             ; preds = %1901
  store double 0.000000e+00, ptr %60, align 8, !tbaa !11
  br label %1967

1967:                                             ; preds = %1966, %1963
  %1968 = load double, ptr %58, align 8, !tbaa !11
  %1969 = load double, ptr %60, align 8, !tbaa !11
  %1970 = fcmp oge double %1968, %1969
  br i1 %1970, label %1971, label %1973

1971:                                             ; preds = %1967
  %1972 = load double, ptr %58, align 8, !tbaa !11
  br label %1975

1973:                                             ; preds = %1967
  %1974 = load double, ptr %60, align 8, !tbaa !11
  br label %1975

1975:                                             ; preds = %1973, %1971
  %1976 = phi double [ %1972, %1971 ], [ %1974, %1973 ]
  %1977 = fcmp oeq double %1976, 0.000000e+00
  br i1 %1977, label %1978, label %2008

1978:                                             ; preds = %1975
  %1979 = load ptr, ptr %20, align 8, !tbaa !5
  %1980 = load i32, ptr %1979, align 4, !tbaa !9
  %1981 = icmp eq i32 %1980, 0
  br i1 %1981, label %1982, label %1985

1982:                                             ; preds = %1978
  %1983 = load i32, ptr %40, align 4, !tbaa !9
  %1984 = load ptr, ptr %20, align 8, !tbaa !5
  store i32 %1983, ptr %1984, align 4, !tbaa !9
  br label %1985

1985:                                             ; preds = %1982, %1978
  %1986 = load i32, ptr %40, align 4, !tbaa !9
  store i32 %1986, ptr %57, align 4, !tbaa !9
  %1987 = load ptr, ptr %12, align 8, !tbaa !5
  %1988 = load i32, ptr %1987, align 4, !tbaa !9
  %1989 = load i32, ptr %40, align 4, !tbaa !9
  %1990 = sub nsw i32 %1988, %1989
  %1991 = add nsw i32 %1990, 1
  store i32 %1991, ptr %25, align 4, !tbaa !9
  %1992 = load ptr, ptr %18, align 8, !tbaa !5
  %1993 = load i32, ptr %40, align 4, !tbaa !9
  %1994 = load i32, ptr %40, align 4, !tbaa !9
  %1995 = load i32, ptr %23, align 4, !tbaa !9
  %1996 = mul nsw i32 %1994, %1995
  %1997 = add nsw i32 %1993, %1996
  %1998 = sext i32 %1997 to i64
  %1999 = getelementptr inbounds %struct.doublecomplex, ptr %1992, i64 %1998
  %2000 = load ptr, ptr %15, align 8, !tbaa !5
  %2001 = load i32, ptr %40, align 4, !tbaa !9
  %2002 = load i32, ptr %40, align 4, !tbaa !9
  %2003 = load i32, ptr %21, align 4, !tbaa !9
  %2004 = mul nsw i32 %2002, %2003
  %2005 = add nsw i32 %2001, %2004
  %2006 = sext i32 %2005 to i64
  %2007 = getelementptr inbounds %struct.doublecomplex, ptr %2000, i64 %2006
  call void @zcopy_(ptr noundef %25, ptr noundef %1999, ptr noundef @c__1, ptr noundef %2007, ptr noundef @c__1)
  br label %3232

2008:                                             ; preds = %1975
  %2009 = load double, ptr %58, align 8, !tbaa !11
  %2010 = load double, ptr %43, align 8, !tbaa !11
  %2011 = load double, ptr %60, align 8, !tbaa !11
  %2012 = fmul double %2010, %2011
  %2013 = fcmp olt double %2009, %2012
  br i1 %2013, label %2016, label %2014

2014:                                             ; preds = %2008
  %2015 = load i32, ptr %40, align 4, !tbaa !9
  store i32 %2015, ptr %57, align 4, !tbaa !9
  br label %2348

2016:                                             ; preds = %2008
  store i32 0, ptr %36, align 4, !tbaa !9
  br label %2017

2017:                                             ; preds = %2346, %2016
  %2018 = load i32, ptr %37, align 4, !tbaa !9
  %2019 = load i32, ptr %40, align 4, !tbaa !9
  %2020 = sub nsw i32 %2018, %2019
  store i32 %2020, ptr %25, align 4, !tbaa !9
  %2021 = load ptr, ptr %15, align 8, !tbaa !5
  %2022 = load i32, ptr %37, align 4, !tbaa !9
  %2023 = load i32, ptr %40, align 4, !tbaa !9
  %2024 = load i32, ptr %21, align 4, !tbaa !9
  %2025 = mul nsw i32 %2023, %2024
  %2026 = add nsw i32 %2022, %2025
  %2027 = sext i32 %2026 to i64
  %2028 = getelementptr inbounds %struct.doublecomplex, ptr %2021, i64 %2027
  %2029 = load ptr, ptr %16, align 8, !tbaa !5
  %2030 = load ptr, ptr %18, align 8, !tbaa !5
  %2031 = load i32, ptr %40, align 4, !tbaa !9
  %2032 = load i32, ptr %40, align 4, !tbaa !9
  %2033 = add nsw i32 %2032, 1
  %2034 = load i32, ptr %23, align 4, !tbaa !9
  %2035 = mul nsw i32 %2033, %2034
  %2036 = add nsw i32 %2031, %2035
  %2037 = sext i32 %2036 to i64
  %2038 = getelementptr inbounds %struct.doublecomplex, ptr %2030, i64 %2037
  call void @zcopy_(ptr noundef %25, ptr noundef %2028, ptr noundef %2029, ptr noundef %2038, ptr noundef @c__1)
  %2039 = load ptr, ptr %12, align 8, !tbaa !5
  %2040 = load i32, ptr %2039, align 4, !tbaa !9
  %2041 = load i32, ptr %37, align 4, !tbaa !9
  %2042 = sub nsw i32 %2040, %2041
  %2043 = add nsw i32 %2042, 1
  store i32 %2043, ptr %25, align 4, !tbaa !9
  %2044 = load ptr, ptr %15, align 8, !tbaa !5
  %2045 = load i32, ptr %37, align 4, !tbaa !9
  %2046 = load i32, ptr %37, align 4, !tbaa !9
  %2047 = load i32, ptr %21, align 4, !tbaa !9
  %2048 = mul nsw i32 %2046, %2047
  %2049 = add nsw i32 %2045, %2048
  %2050 = sext i32 %2049 to i64
  %2051 = getelementptr inbounds %struct.doublecomplex, ptr %2044, i64 %2050
  %2052 = load ptr, ptr %18, align 8, !tbaa !5
  %2053 = load i32, ptr %37, align 4, !tbaa !9
  %2054 = load i32, ptr %40, align 4, !tbaa !9
  %2055 = add nsw i32 %2054, 1
  %2056 = load i32, ptr %23, align 4, !tbaa !9
  %2057 = mul nsw i32 %2055, %2056
  %2058 = add nsw i32 %2053, %2057
  %2059 = sext i32 %2058 to i64
  %2060 = getelementptr inbounds %struct.doublecomplex, ptr %2052, i64 %2059
  call void @zcopy_(ptr noundef %25, ptr noundef %2051, ptr noundef @c__1, ptr noundef %2060, ptr noundef @c__1)
  %2061 = load i32, ptr %40, align 4, !tbaa !9
  %2062 = icmp sgt i32 %2061, 1
  br i1 %2062, label %2063, label %2096

2063:                                             ; preds = %2017
  %2064 = load ptr, ptr %12, align 8, !tbaa !5
  %2065 = load i32, ptr %2064, align 4, !tbaa !9
  %2066 = load i32, ptr %40, align 4, !tbaa !9
  %2067 = sub nsw i32 %2065, %2066
  %2068 = add nsw i32 %2067, 1
  store i32 %2068, ptr %25, align 4, !tbaa !9
  %2069 = load i32, ptr %40, align 4, !tbaa !9
  %2070 = sub nsw i32 %2069, 1
  store i32 %2070, ptr %26, align 4, !tbaa !9
  %2071 = getelementptr inbounds %struct.doublecomplex, ptr %32, i32 0, i32 0
  store double -1.000000e+00, ptr %2071, align 8, !tbaa !13
  %2072 = getelementptr inbounds %struct.doublecomplex, ptr %32, i32 0, i32 1
  store double 0.000000e+00, ptr %2072, align 8, !tbaa !15
  %2073 = load ptr, ptr %15, align 8, !tbaa !5
  %2074 = load i32, ptr %40, align 4, !tbaa !9
  %2075 = load i32, ptr %21, align 4, !tbaa !9
  %2076 = add nsw i32 %2074, %2075
  %2077 = sext i32 %2076 to i64
  %2078 = getelementptr inbounds %struct.doublecomplex, ptr %2073, i64 %2077
  %2079 = load ptr, ptr %16, align 8, !tbaa !5
  %2080 = load ptr, ptr %18, align 8, !tbaa !5
  %2081 = load i32, ptr %37, align 4, !tbaa !9
  %2082 = load i32, ptr %23, align 4, !tbaa !9
  %2083 = add nsw i32 %2081, %2082
  %2084 = sext i32 %2083 to i64
  %2085 = getelementptr inbounds %struct.doublecomplex, ptr %2080, i64 %2084
  %2086 = load ptr, ptr %19, align 8, !tbaa !5
  %2087 = load ptr, ptr %18, align 8, !tbaa !5
  %2088 = load i32, ptr %40, align 4, !tbaa !9
  %2089 = load i32, ptr %40, align 4, !tbaa !9
  %2090 = add nsw i32 %2089, 1
  %2091 = load i32, ptr %23, align 4, !tbaa !9
  %2092 = mul nsw i32 %2090, %2091
  %2093 = add nsw i32 %2088, %2092
  %2094 = sext i32 %2093 to i64
  %2095 = getelementptr inbounds %struct.doublecomplex, ptr %2087, i64 %2094
  call void @zgemv_(ptr noundef @.str.2, ptr noundef %25, ptr noundef %26, ptr noundef %32, ptr noundef %2078, ptr noundef %2079, ptr noundef %2085, ptr noundef %2086, ptr noundef @c_b1, ptr noundef %2095, ptr noundef @c__1)
  br label %2096

2096:                                             ; preds = %2063, %2017
  %2097 = load i32, ptr %37, align 4, !tbaa !9
  %2098 = load i32, ptr %40, align 4, !tbaa !9
  %2099 = icmp ne i32 %2097, %2098
  br i1 %2099, label %2100, label %2160

2100:                                             ; preds = %2096
  %2101 = load i32, ptr %37, align 4, !tbaa !9
  %2102 = load i32, ptr %40, align 4, !tbaa !9
  %2103 = sub nsw i32 %2101, %2102
  store i32 %2103, ptr %25, align 4, !tbaa !9
  %2104 = load i32, ptr %40, align 4, !tbaa !9
  %2105 = sub nsw i32 %2104, 1
  %2106 = load ptr, ptr %18, align 8, !tbaa !5
  %2107 = load i32, ptr %40, align 4, !tbaa !9
  %2108 = load i32, ptr %40, align 4, !tbaa !9
  %2109 = add nsw i32 %2108, 1
  %2110 = load i32, ptr %23, align 4, !tbaa !9
  %2111 = mul nsw i32 %2109, %2110
  %2112 = add nsw i32 %2107, %2111
  %2113 = sext i32 %2112 to i64
  %2114 = getelementptr inbounds %struct.doublecomplex, ptr %2106, i64 %2113
  %2115 = call i32 @izamax_(ptr noundef %25, ptr noundef %2114, ptr noundef @c__1)
  %2116 = add nsw i32 %2105, %2115
  store i32 %2116, ptr %38, align 4, !tbaa !9
  %2117 = load i32, ptr %38, align 4, !tbaa !9
  %2118 = load i32, ptr %40, align 4, !tbaa !9
  %2119 = add nsw i32 %2118, 1
  %2120 = load i32, ptr %23, align 4, !tbaa !9
  %2121 = mul nsw i32 %2119, %2120
  %2122 = add nsw i32 %2117, %2121
  store i32 %2122, ptr %25, align 4, !tbaa !9
  %2123 = load ptr, ptr %18, align 8, !tbaa !5
  %2124 = load i32, ptr %25, align 4, !tbaa !9
  %2125 = sext i32 %2124 to i64
  %2126 = getelementptr inbounds %struct.doublecomplex, ptr %2123, i64 %2125
  %2127 = getelementptr inbounds %struct.doublecomplex, ptr %2126, i32 0, i32 0
  %2128 = load double, ptr %2127, align 8, !tbaa !13
  store double %2128, ptr %30, align 8, !tbaa !11
  %2129 = load double, ptr %30, align 8, !tbaa !11
  %2130 = fcmp oge double %2129, 0.000000e+00
  br i1 %2130, label %2131, label %2133

2131:                                             ; preds = %2100
  %2132 = load double, ptr %30, align 8, !tbaa !11
  br label %2136

2133:                                             ; preds = %2100
  %2134 = load double, ptr %30, align 8, !tbaa !11
  %2135 = fneg double %2134
  br label %2136

2136:                                             ; preds = %2133, %2131
  %2137 = phi double [ %2132, %2131 ], [ %2135, %2133 ]
  %2138 = load ptr, ptr %18, align 8, !tbaa !5
  %2139 = load i32, ptr %38, align 4, !tbaa !9
  %2140 = load i32, ptr %40, align 4, !tbaa !9
  %2141 = add nsw i32 %2140, 1
  %2142 = load i32, ptr %23, align 4, !tbaa !9
  %2143 = mul nsw i32 %2141, %2142
  %2144 = add nsw i32 %2139, %2143
  %2145 = sext i32 %2144 to i64
  %2146 = getelementptr inbounds %struct.doublecomplex, ptr %2138, i64 %2145
  %2147 = call { double, double } @Cd(ptr noundef %2146)
  %2148 = extractvalue { double, double } %2147, 0
  %2149 = extractvalue { double, double } %2147, 1
  store double %2149, ptr %31, align 8, !tbaa !11
  %2150 = load double, ptr %31, align 8, !tbaa !11
  %2151 = fcmp oge double %2150, 0.000000e+00
  br i1 %2151, label %2152, label %2154

2152:                                             ; preds = %2136
  %2153 = load double, ptr %31, align 8, !tbaa !11
  br label %2157

2154:                                             ; preds = %2136
  %2155 = load double, ptr %31, align 8, !tbaa !11
  %2156 = fneg double %2155
  br label %2157

2157:                                             ; preds = %2154, %2152
  %2158 = phi double [ %2153, %2152 ], [ %2156, %2154 ]
  %2159 = fadd double %2137, %2158
  store double %2159, ptr %63, align 8, !tbaa !11
  br label %2161

2160:                                             ; preds = %2096
  store double 0.000000e+00, ptr %63, align 8, !tbaa !11
  br label %2161

2161:                                             ; preds = %2160, %2157
  %2162 = load i32, ptr %37, align 4, !tbaa !9
  %2163 = load ptr, ptr %12, align 8, !tbaa !5
  %2164 = load i32, ptr %2163, align 4, !tbaa !9
  %2165 = icmp slt i32 %2162, %2164
  br i1 %2165, label %2166, label %2234

2166:                                             ; preds = %2161
  %2167 = load ptr, ptr %12, align 8, !tbaa !5
  %2168 = load i32, ptr %2167, align 4, !tbaa !9
  %2169 = load i32, ptr %37, align 4, !tbaa !9
  %2170 = sub nsw i32 %2168, %2169
  store i32 %2170, ptr %25, align 4, !tbaa !9
  %2171 = load i32, ptr %37, align 4, !tbaa !9
  %2172 = load ptr, ptr %18, align 8, !tbaa !5
  %2173 = load i32, ptr %37, align 4, !tbaa !9
  %2174 = add nsw i32 %2173, 1
  %2175 = load i32, ptr %40, align 4, !tbaa !9
  %2176 = add nsw i32 %2175, 1
  %2177 = load i32, ptr %23, align 4, !tbaa !9
  %2178 = mul nsw i32 %2176, %2177
  %2179 = add nsw i32 %2174, %2178
  %2180 = sext i32 %2179 to i64
  %2181 = getelementptr inbounds %struct.doublecomplex, ptr %2172, i64 %2180
  %2182 = call i32 @izamax_(ptr noundef %25, ptr noundef %2181, ptr noundef @c__1)
  %2183 = add nsw i32 %2171, %2182
  store i32 %2183, ptr %46, align 4, !tbaa !9
  %2184 = load i32, ptr %46, align 4, !tbaa !9
  %2185 = load i32, ptr %40, align 4, !tbaa !9
  %2186 = add nsw i32 %2185, 1
  %2187 = load i32, ptr %23, align 4, !tbaa !9
  %2188 = mul nsw i32 %2186, %2187
  %2189 = add nsw i32 %2184, %2188
  store i32 %2189, ptr %25, align 4, !tbaa !9
  %2190 = load ptr, ptr %18, align 8, !tbaa !5
  %2191 = load i32, ptr %25, align 4, !tbaa !9
  %2192 = sext i32 %2191 to i64
  %2193 = getelementptr inbounds %struct.doublecomplex, ptr %2190, i64 %2192
  %2194 = getelementptr inbounds %struct.doublecomplex, ptr %2193, i32 0, i32 0
  %2195 = load double, ptr %2194, align 8, !tbaa !13
  store double %2195, ptr %30, align 8, !tbaa !11
  %2196 = load double, ptr %30, align 8, !tbaa !11
  %2197 = fcmp oge double %2196, 0.000000e+00
  br i1 %2197, label %2198, label %2200

2198:                                             ; preds = %2166
  %2199 = load double, ptr %30, align 8, !tbaa !11
  br label %2203

2200:                                             ; preds = %2166
  %2201 = load double, ptr %30, align 8, !tbaa !11
  %2202 = fneg double %2201
  br label %2203

2203:                                             ; preds = %2200, %2198
  %2204 = phi double [ %2199, %2198 ], [ %2202, %2200 ]
  %2205 = load ptr, ptr %18, align 8, !tbaa !5
  %2206 = load i32, ptr %46, align 4, !tbaa !9
  %2207 = load i32, ptr %40, align 4, !tbaa !9
  %2208 = add nsw i32 %2207, 1
  %2209 = load i32, ptr %23, align 4, !tbaa !9
  %2210 = mul nsw i32 %2208, %2209
  %2211 = add nsw i32 %2206, %2210
  %2212 = sext i32 %2211 to i64
  %2213 = getelementptr inbounds %struct.doublecomplex, ptr %2205, i64 %2212
  %2214 = call { double, double } @Cd(ptr noundef %2213)
  %2215 = extractvalue { double, double } %2214, 0
  %2216 = extractvalue { double, double } %2214, 1
  store double %2216, ptr %31, align 8, !tbaa !11
  %2217 = load double, ptr %31, align 8, !tbaa !11
  %2218 = fcmp oge double %2217, 0.000000e+00
  br i1 %2218, label %2219, label %2221

2219:                                             ; preds = %2203
  %2220 = load double, ptr %31, align 8, !tbaa !11
  br label %2224

2221:                                             ; preds = %2203
  %2222 = load double, ptr %31, align 8, !tbaa !11
  %2223 = fneg double %2222
  br label %2224

2224:                                             ; preds = %2221, %2219
  %2225 = phi double [ %2220, %2219 ], [ %2223, %2221 ]
  %2226 = fadd double %2204, %2225
  store double %2226, ptr %44, align 8, !tbaa !11
  %2227 = load double, ptr %44, align 8, !tbaa !11
  %2228 = load double, ptr %63, align 8, !tbaa !11
  %2229 = fcmp ogt double %2227, %2228
  br i1 %2229, label %2230, label %2233

2230:                                             ; preds = %2224
  %2231 = load double, ptr %44, align 8, !tbaa !11
  store double %2231, ptr %63, align 8, !tbaa !11
  %2232 = load i32, ptr %46, align 4, !tbaa !9
  store i32 %2232, ptr %38, align 4, !tbaa !9
  br label %2233

2233:                                             ; preds = %2230, %2224
  br label %2234

2234:                                             ; preds = %2233, %2161
  %2235 = load i32, ptr %37, align 4, !tbaa !9
  %2236 = load i32, ptr %40, align 4, !tbaa !9
  %2237 = add nsw i32 %2236, 1
  %2238 = load i32, ptr %23, align 4, !tbaa !9
  %2239 = mul nsw i32 %2237, %2238
  %2240 = add nsw i32 %2235, %2239
  store i32 %2240, ptr %25, align 4, !tbaa !9
  %2241 = load ptr, ptr %18, align 8, !tbaa !5
  %2242 = load i32, ptr %25, align 4, !tbaa !9
  %2243 = sext i32 %2242 to i64
  %2244 = getelementptr inbounds %struct.doublecomplex, ptr %2241, i64 %2243
  %2245 = getelementptr inbounds %struct.doublecomplex, ptr %2244, i32 0, i32 0
  %2246 = load double, ptr %2245, align 8, !tbaa !13
  store double %2246, ptr %30, align 8, !tbaa !11
  %2247 = load double, ptr %30, align 8, !tbaa !11
  %2248 = fcmp oge double %2247, 0.000000e+00
  br i1 %2248, label %2249, label %2251

2249:                                             ; preds = %2234
  %2250 = load double, ptr %30, align 8, !tbaa !11
  br label %2254

2251:                                             ; preds = %2234
  %2252 = load double, ptr %30, align 8, !tbaa !11
  %2253 = fneg double %2252
  br label %2254

2254:                                             ; preds = %2251, %2249
  %2255 = phi double [ %2250, %2249 ], [ %2253, %2251 ]
  %2256 = load ptr, ptr %18, align 8, !tbaa !5
  %2257 = load i32, ptr %37, align 4, !tbaa !9
  %2258 = load i32, ptr %40, align 4, !tbaa !9
  %2259 = add nsw i32 %2258, 1
  %2260 = load i32, ptr %23, align 4, !tbaa !9
  %2261 = mul nsw i32 %2259, %2260
  %2262 = add nsw i32 %2257, %2261
  %2263 = sext i32 %2262 to i64
  %2264 = getelementptr inbounds %struct.doublecomplex, ptr %2256, i64 %2263
  %2265 = call { double, double } @Cd(ptr noundef %2264)
  %2266 = extractvalue { double, double } %2265, 0
  %2267 = extractvalue { double, double } %2265, 1
  store double %2267, ptr %31, align 8, !tbaa !11
  %2268 = load double, ptr %31, align 8, !tbaa !11
  %2269 = fcmp oge double %2268, 0.000000e+00
  br i1 %2269, label %2270, label %2272

2270:                                             ; preds = %2254
  %2271 = load double, ptr %31, align 8, !tbaa !11
  br label %2275

2272:                                             ; preds = %2254
  %2273 = load double, ptr %31, align 8, !tbaa !11
  %2274 = fneg double %2273
  br label %2275

2275:                                             ; preds = %2272, %2270
  %2276 = phi double [ %2271, %2270 ], [ %2274, %2272 ]
  %2277 = fadd double %2255, %2276
  %2278 = load double, ptr %43, align 8, !tbaa !11
  %2279 = load double, ptr %63, align 8, !tbaa !11
  %2280 = fmul double %2278, %2279
  %2281 = fcmp olt double %2277, %2280
  br i1 %2281, label %2306, label %2282

2282:                                             ; preds = %2275
  %2283 = load i32, ptr %37, align 4, !tbaa !9
  store i32 %2283, ptr %57, align 4, !tbaa !9
  %2284 = load ptr, ptr %12, align 8, !tbaa !5
  %2285 = load i32, ptr %2284, align 4, !tbaa !9
  %2286 = load i32, ptr %40, align 4, !tbaa !9
  %2287 = sub nsw i32 %2285, %2286
  %2288 = add nsw i32 %2287, 1
  store i32 %2288, ptr %25, align 4, !tbaa !9
  %2289 = load ptr, ptr %18, align 8, !tbaa !5
  %2290 = load i32, ptr %40, align 4, !tbaa !9
  %2291 = load i32, ptr %40, align 4, !tbaa !9
  %2292 = add nsw i32 %2291, 1
  %2293 = load i32, ptr %23, align 4, !tbaa !9
  %2294 = mul nsw i32 %2292, %2293
  %2295 = add nsw i32 %2290, %2294
  %2296 = sext i32 %2295 to i64
  %2297 = getelementptr inbounds %struct.doublecomplex, ptr %2289, i64 %2296
  %2298 = load ptr, ptr %18, align 8, !tbaa !5
  %2299 = load i32, ptr %40, align 4, !tbaa !9
  %2300 = load i32, ptr %40, align 4, !tbaa !9
  %2301 = load i32, ptr %23, align 4, !tbaa !9
  %2302 = mul nsw i32 %2300, %2301
  %2303 = add nsw i32 %2299, %2302
  %2304 = sext i32 %2303 to i64
  %2305 = getelementptr inbounds %struct.doublecomplex, ptr %2298, i64 %2304
  call void @zcopy_(ptr noundef %25, ptr noundef %2297, ptr noundef @c__1, ptr noundef %2305, ptr noundef @c__1)
  store i32 1, ptr %36, align 4, !tbaa !9
  br label %2343

2306:                                             ; preds = %2275
  %2307 = load i32, ptr %41, align 4, !tbaa !9
  %2308 = load i32, ptr %38, align 4, !tbaa !9
  %2309 = icmp eq i32 %2307, %2308
  br i1 %2309, label %2314, label %2310

2310:                                             ; preds = %2306
  %2311 = load double, ptr %63, align 8, !tbaa !11
  %2312 = load double, ptr %60, align 8, !tbaa !11
  %2313 = fcmp ole double %2311, %2312
  br i1 %2313, label %2314, label %2316

2314:                                             ; preds = %2310, %2306
  %2315 = load i32, ptr %37, align 4, !tbaa !9
  store i32 %2315, ptr %57, align 4, !tbaa !9
  store i32 2, ptr %47, align 4, !tbaa !9
  store i32 1, ptr %36, align 4, !tbaa !9
  br label %2342

2316:                                             ; preds = %2310
  %2317 = load i32, ptr %37, align 4, !tbaa !9
  store i32 %2317, ptr %41, align 4, !tbaa !9
  %2318 = load double, ptr %63, align 8, !tbaa !11
  store double %2318, ptr %60, align 8, !tbaa !11
  %2319 = load i32, ptr %38, align 4, !tbaa !9
  store i32 %2319, ptr %37, align 4, !tbaa !9
  %2320 = load ptr, ptr %12, align 8, !tbaa !5
  %2321 = load i32, ptr %2320, align 4, !tbaa !9
  %2322 = load i32, ptr %40, align 4, !tbaa !9
  %2323 = sub nsw i32 %2321, %2322
  %2324 = add nsw i32 %2323, 1
  store i32 %2324, ptr %25, align 4, !tbaa !9
  %2325 = load ptr, ptr %18, align 8, !tbaa !5
  %2326 = load i32, ptr %40, align 4, !tbaa !9
  %2327 = load i32, ptr %40, align 4, !tbaa !9
  %2328 = add nsw i32 %2327, 1
  %2329 = load i32, ptr %23, align 4, !tbaa !9
  %2330 = mul nsw i32 %2328, %2329
  %2331 = add nsw i32 %2326, %2330
  %2332 = sext i32 %2331 to i64
  %2333 = getelementptr inbounds %struct.doublecomplex, ptr %2325, i64 %2332
  %2334 = load ptr, ptr %18, align 8, !tbaa !5
  %2335 = load i32, ptr %40, align 4, !tbaa !9
  %2336 = load i32, ptr %40, align 4, !tbaa !9
  %2337 = load i32, ptr %23, align 4, !tbaa !9
  %2338 = mul nsw i32 %2336, %2337
  %2339 = add nsw i32 %2335, %2338
  %2340 = sext i32 %2339 to i64
  %2341 = getelementptr inbounds %struct.doublecomplex, ptr %2334, i64 %2340
  call void @zcopy_(ptr noundef %25, ptr noundef %2333, ptr noundef @c__1, ptr noundef %2341, ptr noundef @c__1)
  br label %2342

2342:                                             ; preds = %2316, %2314
  br label %2343

2343:                                             ; preds = %2342, %2282
  %2344 = load i32, ptr %36, align 4, !tbaa !9
  %2345 = icmp ne i32 %2344, 0
  br i1 %2345, label %2347, label %2346

2346:                                             ; preds = %2343
  br label %2017

2347:                                             ; preds = %2343
  br label %2348

2348:                                             ; preds = %2347, %2014
  %2349 = load i32, ptr %40, align 4, !tbaa !9
  %2350 = load i32, ptr %47, align 4, !tbaa !9
  %2351 = add nsw i32 %2349, %2350
  %2352 = sub nsw i32 %2351, 1
  store i32 %2352, ptr %56, align 4, !tbaa !9
  %2353 = load i32, ptr %47, align 4, !tbaa !9
  %2354 = icmp eq i32 %2353, 2
  br i1 %2354, label %2355, label %2429

2355:                                             ; preds = %2348
  %2356 = load i32, ptr %41, align 4, !tbaa !9
  %2357 = load i32, ptr %40, align 4, !tbaa !9
  %2358 = icmp ne i32 %2356, %2357
  br i1 %2358, label %2359, label %2429

2359:                                             ; preds = %2355
  %2360 = load i32, ptr %41, align 4, !tbaa !9
  %2361 = load i32, ptr %40, align 4, !tbaa !9
  %2362 = sub nsw i32 %2360, %2361
  store i32 %2362, ptr %25, align 4, !tbaa !9
  %2363 = load ptr, ptr %15, align 8, !tbaa !5
  %2364 = load i32, ptr %40, align 4, !tbaa !9
  %2365 = load i32, ptr %40, align 4, !tbaa !9
  %2366 = load i32, ptr %21, align 4, !tbaa !9
  %2367 = mul nsw i32 %2365, %2366
  %2368 = add nsw i32 %2364, %2367
  %2369 = sext i32 %2368 to i64
  %2370 = getelementptr inbounds %struct.doublecomplex, ptr %2363, i64 %2369
  %2371 = load ptr, ptr %15, align 8, !tbaa !5
  %2372 = load i32, ptr %41, align 4, !tbaa !9
  %2373 = load i32, ptr %40, align 4, !tbaa !9
  %2374 = load i32, ptr %21, align 4, !tbaa !9
  %2375 = mul nsw i32 %2373, %2374
  %2376 = add nsw i32 %2372, %2375
  %2377 = sext i32 %2376 to i64
  %2378 = getelementptr inbounds %struct.doublecomplex, ptr %2371, i64 %2377
  %2379 = load ptr, ptr %16, align 8, !tbaa !5
  call void @zcopy_(ptr noundef %25, ptr noundef %2370, ptr noundef @c__1, ptr noundef %2378, ptr noundef %2379)
  %2380 = load ptr, ptr %12, align 8, !tbaa !5
  %2381 = load i32, ptr %2380, align 4, !tbaa !9
  %2382 = load i32, ptr %41, align 4, !tbaa !9
  %2383 = sub nsw i32 %2381, %2382
  %2384 = add nsw i32 %2383, 1
  store i32 %2384, ptr %25, align 4, !tbaa !9
  %2385 = load ptr, ptr %15, align 8, !tbaa !5
  %2386 = load i32, ptr %41, align 4, !tbaa !9
  %2387 = load i32, ptr %40, align 4, !tbaa !9
  %2388 = load i32, ptr %21, align 4, !tbaa !9
  %2389 = mul nsw i32 %2387, %2388
  %2390 = add nsw i32 %2386, %2389
  %2391 = sext i32 %2390 to i64
  %2392 = getelementptr inbounds %struct.doublecomplex, ptr %2385, i64 %2391
  %2393 = load ptr, ptr %15, align 8, !tbaa !5
  %2394 = load i32, ptr %41, align 4, !tbaa !9
  %2395 = load i32, ptr %41, align 4, !tbaa !9
  %2396 = load i32, ptr %21, align 4, !tbaa !9
  %2397 = mul nsw i32 %2395, %2396
  %2398 = add nsw i32 %2394, %2397
  %2399 = sext i32 %2398 to i64
  %2400 = getelementptr inbounds %struct.doublecomplex, ptr %2393, i64 %2399
  call void @zcopy_(ptr noundef %25, ptr noundef %2392, ptr noundef @c__1, ptr noundef %2400, ptr noundef @c__1)
  %2401 = load ptr, ptr %15, align 8, !tbaa !5
  %2402 = load i32, ptr %40, align 4, !tbaa !9
  %2403 = load i32, ptr %21, align 4, !tbaa !9
  %2404 = add nsw i32 %2402, %2403
  %2405 = sext i32 %2404 to i64
  %2406 = getelementptr inbounds %struct.doublecomplex, ptr %2401, i64 %2405
  %2407 = load ptr, ptr %16, align 8, !tbaa !5
  %2408 = load ptr, ptr %15, align 8, !tbaa !5
  %2409 = load i32, ptr %41, align 4, !tbaa !9
  %2410 = load i32, ptr %21, align 4, !tbaa !9
  %2411 = add nsw i32 %2409, %2410
  %2412 = sext i32 %2411 to i64
  %2413 = getelementptr inbounds %struct.doublecomplex, ptr %2408, i64 %2412
  %2414 = load ptr, ptr %16, align 8, !tbaa !5
  call void @zswap_(ptr noundef %40, ptr noundef %2406, ptr noundef %2407, ptr noundef %2413, ptr noundef %2414)
  %2415 = load ptr, ptr %18, align 8, !tbaa !5
  %2416 = load i32, ptr %40, align 4, !tbaa !9
  %2417 = load i32, ptr %23, align 4, !tbaa !9
  %2418 = add nsw i32 %2416, %2417
  %2419 = sext i32 %2418 to i64
  %2420 = getelementptr inbounds %struct.doublecomplex, ptr %2415, i64 %2419
  %2421 = load ptr, ptr %19, align 8, !tbaa !5
  %2422 = load ptr, ptr %18, align 8, !tbaa !5
  %2423 = load i32, ptr %41, align 4, !tbaa !9
  %2424 = load i32, ptr %23, align 4, !tbaa !9
  %2425 = add nsw i32 %2423, %2424
  %2426 = sext i32 %2425 to i64
  %2427 = getelementptr inbounds %struct.doublecomplex, ptr %2422, i64 %2426
  %2428 = load ptr, ptr %19, align 8, !tbaa !5
  call void @zswap_(ptr noundef %56, ptr noundef %2420, ptr noundef %2421, ptr noundef %2427, ptr noundef %2428)
  br label %2429

2429:                                             ; preds = %2359, %2355, %2348
  %2430 = load i32, ptr %57, align 4, !tbaa !9
  %2431 = load i32, ptr %56, align 4, !tbaa !9
  %2432 = icmp ne i32 %2430, %2431
  br i1 %2432, label %2433, label %2538

2433:                                             ; preds = %2429
  %2434 = load i32, ptr %57, align 4, !tbaa !9
  %2435 = load i32, ptr %40, align 4, !tbaa !9
  %2436 = load i32, ptr %21, align 4, !tbaa !9
  %2437 = mul nsw i32 %2435, %2436
  %2438 = add nsw i32 %2434, %2437
  store i32 %2438, ptr %25, align 4, !tbaa !9
  %2439 = load i32, ptr %56, align 4, !tbaa !9
  %2440 = load i32, ptr %40, align 4, !tbaa !9
  %2441 = load i32, ptr %21, align 4, !tbaa !9
  %2442 = mul nsw i32 %2440, %2441
  %2443 = add nsw i32 %2439, %2442
  store i32 %2443, ptr %26, align 4, !tbaa !9
  %2444 = load ptr, ptr %15, align 8, !tbaa !5
  %2445 = load i32, ptr %26, align 4, !tbaa !9
  %2446 = sext i32 %2445 to i64
  %2447 = getelementptr inbounds %struct.doublecomplex, ptr %2444, i64 %2446
  %2448 = getelementptr inbounds %struct.doublecomplex, ptr %2447, i32 0, i32 0
  %2449 = load double, ptr %2448, align 8, !tbaa !13
  %2450 = load ptr, ptr %15, align 8, !tbaa !5
  %2451 = load i32, ptr %25, align 4, !tbaa !9
  %2452 = sext i32 %2451 to i64
  %2453 = getelementptr inbounds %struct.doublecomplex, ptr %2450, i64 %2452
  %2454 = getelementptr inbounds %struct.doublecomplex, ptr %2453, i32 0, i32 0
  store double %2449, ptr %2454, align 8, !tbaa !13
  %2455 = load ptr, ptr %15, align 8, !tbaa !5
  %2456 = load i32, ptr %26, align 4, !tbaa !9
  %2457 = sext i32 %2456 to i64
  %2458 = getelementptr inbounds %struct.doublecomplex, ptr %2455, i64 %2457
  %2459 = getelementptr inbounds %struct.doublecomplex, ptr %2458, i32 0, i32 1
  %2460 = load double, ptr %2459, align 8, !tbaa !15
  %2461 = load ptr, ptr %15, align 8, !tbaa !5
  %2462 = load i32, ptr %25, align 4, !tbaa !9
  %2463 = sext i32 %2462 to i64
  %2464 = getelementptr inbounds %struct.doublecomplex, ptr %2461, i64 %2463
  %2465 = getelementptr inbounds %struct.doublecomplex, ptr %2464, i32 0, i32 1
  store double %2460, ptr %2465, align 8, !tbaa !15
  %2466 = load i32, ptr %57, align 4, !tbaa !9
  %2467 = load i32, ptr %40, align 4, !tbaa !9
  %2468 = sub nsw i32 %2466, %2467
  %2469 = sub nsw i32 %2468, 1
  store i32 %2469, ptr %25, align 4, !tbaa !9
  %2470 = load ptr, ptr %15, align 8, !tbaa !5
  %2471 = load i32, ptr %40, align 4, !tbaa !9
  %2472 = add nsw i32 %2471, 1
  %2473 = load i32, ptr %56, align 4, !tbaa !9
  %2474 = load i32, ptr %21, align 4, !tbaa !9
  %2475 = mul nsw i32 %2473, %2474
  %2476 = add nsw i32 %2472, %2475
  %2477 = sext i32 %2476 to i64
  %2478 = getelementptr inbounds %struct.doublecomplex, ptr %2470, i64 %2477
  %2479 = load ptr, ptr %15, align 8, !tbaa !5
  %2480 = load i32, ptr %57, align 4, !tbaa !9
  %2481 = load i32, ptr %40, align 4, !tbaa !9
  %2482 = add nsw i32 %2481, 1
  %2483 = load i32, ptr %21, align 4, !tbaa !9
  %2484 = mul nsw i32 %2482, %2483
  %2485 = add nsw i32 %2480, %2484
  %2486 = sext i32 %2485 to i64
  %2487 = getelementptr inbounds %struct.doublecomplex, ptr %2479, i64 %2486
  %2488 = load ptr, ptr %16, align 8, !tbaa !5
  call void @zcopy_(ptr noundef %25, ptr noundef %2478, ptr noundef @c__1, ptr noundef %2487, ptr noundef %2488)
  %2489 = load ptr, ptr %12, align 8, !tbaa !5
  %2490 = load i32, ptr %2489, align 4, !tbaa !9
  %2491 = load i32, ptr %57, align 4, !tbaa !9
  %2492 = sub nsw i32 %2490, %2491
  %2493 = add nsw i32 %2492, 1
  store i32 %2493, ptr %25, align 4, !tbaa !9
  %2494 = load ptr, ptr %15, align 8, !tbaa !5
  %2495 = load i32, ptr %57, align 4, !tbaa !9
  %2496 = load i32, ptr %56, align 4, !tbaa !9
  %2497 = load i32, ptr %21, align 4, !tbaa !9
  %2498 = mul nsw i32 %2496, %2497
  %2499 = add nsw i32 %2495, %2498
  %2500 = sext i32 %2499 to i64
  %2501 = getelementptr inbounds %struct.doublecomplex, ptr %2494, i64 %2500
  %2502 = load ptr, ptr %15, align 8, !tbaa !5
  %2503 = load i32, ptr %57, align 4, !tbaa !9
  %2504 = load i32, ptr %57, align 4, !tbaa !9
  %2505 = load i32, ptr %21, align 4, !tbaa !9
  %2506 = mul nsw i32 %2504, %2505
  %2507 = add nsw i32 %2503, %2506
  %2508 = sext i32 %2507 to i64
  %2509 = getelementptr inbounds %struct.doublecomplex, ptr %2502, i64 %2508
  call void @zcopy_(ptr noundef %25, ptr noundef %2501, ptr noundef @c__1, ptr noundef %2509, ptr noundef @c__1)
  %2510 = load ptr, ptr %15, align 8, !tbaa !5
  %2511 = load i32, ptr %56, align 4, !tbaa !9
  %2512 = load i32, ptr %21, align 4, !tbaa !9
  %2513 = add nsw i32 %2511, %2512
  %2514 = sext i32 %2513 to i64
  %2515 = getelementptr inbounds %struct.doublecomplex, ptr %2510, i64 %2514
  %2516 = load ptr, ptr %16, align 8, !tbaa !5
  %2517 = load ptr, ptr %15, align 8, !tbaa !5
  %2518 = load i32, ptr %57, align 4, !tbaa !9
  %2519 = load i32, ptr %21, align 4, !tbaa !9
  %2520 = add nsw i32 %2518, %2519
  %2521 = sext i32 %2520 to i64
  %2522 = getelementptr inbounds %struct.doublecomplex, ptr %2517, i64 %2521
  %2523 = load ptr, ptr %16, align 8, !tbaa !5
  call void @zswap_(ptr noundef %56, ptr noundef %2515, ptr noundef %2516, ptr noundef %2522, ptr noundef %2523)
  %2524 = load ptr, ptr %18, align 8, !tbaa !5
  %2525 = load i32, ptr %56, align 4, !tbaa !9
  %2526 = load i32, ptr %23, align 4, !tbaa !9
  %2527 = add nsw i32 %2525, %2526
  %2528 = sext i32 %2527 to i64
  %2529 = getelementptr inbounds %struct.doublecomplex, ptr %2524, i64 %2528
  %2530 = load ptr, ptr %19, align 8, !tbaa !5
  %2531 = load ptr, ptr %18, align 8, !tbaa !5
  %2532 = load i32, ptr %57, align 4, !tbaa !9
  %2533 = load i32, ptr %23, align 4, !tbaa !9
  %2534 = add nsw i32 %2532, %2533
  %2535 = sext i32 %2534 to i64
  %2536 = getelementptr inbounds %struct.doublecomplex, ptr %2531, i64 %2535
  %2537 = load ptr, ptr %19, align 8, !tbaa !5
  call void @zswap_(ptr noundef %56, ptr noundef %2529, ptr noundef %2530, ptr noundef %2536, ptr noundef %2537)
  br label %2538

2538:                                             ; preds = %2433, %2429
  %2539 = load i32, ptr %47, align 4, !tbaa !9
  %2540 = icmp eq i32 %2539, 1
  br i1 %2540, label %2541, label %2736

2541:                                             ; preds = %2538
  %2542 = load ptr, ptr %12, align 8, !tbaa !5
  %2543 = load i32, ptr %2542, align 4, !tbaa !9
  %2544 = load i32, ptr %40, align 4, !tbaa !9
  %2545 = sub nsw i32 %2543, %2544
  %2546 = add nsw i32 %2545, 1
  store i32 %2546, ptr %25, align 4, !tbaa !9
  %2547 = load ptr, ptr %18, align 8, !tbaa !5
  %2548 = load i32, ptr %40, align 4, !tbaa !9
  %2549 = load i32, ptr %40, align 4, !tbaa !9
  %2550 = load i32, ptr %23, align 4, !tbaa !9
  %2551 = mul nsw i32 %2549, %2550
  %2552 = add nsw i32 %2548, %2551
  %2553 = sext i32 %2552 to i64
  %2554 = getelementptr inbounds %struct.doublecomplex, ptr %2547, i64 %2553
  %2555 = load ptr, ptr %15, align 8, !tbaa !5
  %2556 = load i32, ptr %40, align 4, !tbaa !9
  %2557 = load i32, ptr %40, align 4, !tbaa !9
  %2558 = load i32, ptr %21, align 4, !tbaa !9
  %2559 = mul nsw i32 %2557, %2558
  %2560 = add nsw i32 %2556, %2559
  %2561 = sext i32 %2560 to i64
  %2562 = getelementptr inbounds %struct.doublecomplex, ptr %2555, i64 %2561
  call void @zcopy_(ptr noundef %25, ptr noundef %2554, ptr noundef @c__1, ptr noundef %2562, ptr noundef @c__1)
  %2563 = load i32, ptr %40, align 4, !tbaa !9
  %2564 = load ptr, ptr %12, align 8, !tbaa !5
  %2565 = load i32, ptr %2564, align 4, !tbaa !9
  %2566 = icmp slt i32 %2563, %2565
  br i1 %2566, label %2567, label %2735

2567:                                             ; preds = %2541
  %2568 = load i32, ptr %40, align 4, !tbaa !9
  %2569 = load i32, ptr %40, align 4, !tbaa !9
  %2570 = load i32, ptr %21, align 4, !tbaa !9
  %2571 = mul nsw i32 %2569, %2570
  %2572 = add nsw i32 %2568, %2571
  store i32 %2572, ptr %25, align 4, !tbaa !9
  %2573 = load ptr, ptr %15, align 8, !tbaa !5
  %2574 = load i32, ptr %25, align 4, !tbaa !9
  %2575 = sext i32 %2574 to i64
  %2576 = getelementptr inbounds %struct.doublecomplex, ptr %2573, i64 %2575
  %2577 = getelementptr inbounds %struct.doublecomplex, ptr %2576, i32 0, i32 0
  %2578 = load double, ptr %2577, align 8, !tbaa !13
  store double %2578, ptr %30, align 8, !tbaa !11
  %2579 = load double, ptr %30, align 8, !tbaa !11
  %2580 = fcmp oge double %2579, 0.000000e+00
  br i1 %2580, label %2581, label %2583

2581:                                             ; preds = %2567
  %2582 = load double, ptr %30, align 8, !tbaa !11
  br label %2586

2583:                                             ; preds = %2567
  %2584 = load double, ptr %30, align 8, !tbaa !11
  %2585 = fneg double %2584
  br label %2586

2586:                                             ; preds = %2583, %2581
  %2587 = phi double [ %2582, %2581 ], [ %2585, %2583 ]
  %2588 = load ptr, ptr %15, align 8, !tbaa !5
  %2589 = load i32, ptr %40, align 4, !tbaa !9
  %2590 = load i32, ptr %40, align 4, !tbaa !9
  %2591 = load i32, ptr %21, align 4, !tbaa !9
  %2592 = mul nsw i32 %2590, %2591
  %2593 = add nsw i32 %2589, %2592
  %2594 = sext i32 %2593 to i64
  %2595 = getelementptr inbounds %struct.doublecomplex, ptr %2588, i64 %2594
  %2596 = call { double, double } @Cd(ptr noundef %2595)
  %2597 = extractvalue { double, double } %2596, 0
  %2598 = extractvalue { double, double } %2596, 1
  store double %2598, ptr %31, align 8, !tbaa !11
  %2599 = load double, ptr %31, align 8, !tbaa !11
  %2600 = fcmp oge double %2599, 0.000000e+00
  br i1 %2600, label %2601, label %2603

2601:                                             ; preds = %2586
  %2602 = load double, ptr %31, align 8, !tbaa !11
  br label %2606

2603:                                             ; preds = %2586
  %2604 = load double, ptr %31, align 8, !tbaa !11
  %2605 = fneg double %2604
  br label %2606

2606:                                             ; preds = %2603, %2601
  %2607 = phi double [ %2602, %2601 ], [ %2605, %2603 ]
  %2608 = fadd double %2587, %2607
  %2609 = load double, ptr %45, align 8, !tbaa !11
  %2610 = fcmp oge double %2608, %2609
  br i1 %2610, label %2611, label %2651

2611:                                             ; preds = %2606
  %2612 = call { double, double } @Cd(ptr noundef @c_b1)
  %2613 = extractvalue { double, double } %2612, 0
  %2614 = extractvalue { double, double } %2612, 1
  %2615 = load ptr, ptr %15, align 8, !tbaa !5
  %2616 = load i32, ptr %40, align 4, !tbaa !9
  %2617 = load i32, ptr %40, align 4, !tbaa !9
  %2618 = load i32, ptr %21, align 4, !tbaa !9
  %2619 = mul nsw i32 %2617, %2618
  %2620 = add nsw i32 %2616, %2619
  %2621 = sext i32 %2620 to i64
  %2622 = getelementptr inbounds %struct.doublecomplex, ptr %2615, i64 %2621
  %2623 = call { double, double } @Cd(ptr noundef %2622)
  %2624 = extractvalue { double, double } %2623, 0
  %2625 = extractvalue { double, double } %2623, 1
  %2626 = call { double, double } @__divdc3(double noundef %2613, double noundef %2614, double noundef %2624, double noundef %2625) #6
  %2627 = extractvalue { double, double } %2626, 0
  %2628 = extractvalue { double, double } %2626, 1
  %2629 = call ptr @_pCd(ptr noundef %32)
  %2630 = getelementptr inbounds { double, double }, ptr %2629, i32 0, i32 0
  %2631 = getelementptr inbounds { double, double }, ptr %2629, i32 0, i32 1
  store double %2627, ptr %2630, align 8
  store double %2628, ptr %2631, align 8
  %2632 = getelementptr inbounds %struct.doublecomplex, ptr %32, i32 0, i32 0
  %2633 = load double, ptr %2632, align 8, !tbaa !13
  %2634 = getelementptr inbounds %struct.doublecomplex, ptr %48, i32 0, i32 0
  store double %2633, ptr %2634, align 8, !tbaa !13
  %2635 = getelementptr inbounds %struct.doublecomplex, ptr %32, i32 0, i32 1
  %2636 = load double, ptr %2635, align 8, !tbaa !15
  %2637 = getelementptr inbounds %struct.doublecomplex, ptr %48, i32 0, i32 1
  store double %2636, ptr %2637, align 8, !tbaa !15
  %2638 = load ptr, ptr %12, align 8, !tbaa !5
  %2639 = load i32, ptr %2638, align 4, !tbaa !9
  %2640 = load i32, ptr %40, align 4, !tbaa !9
  %2641 = sub nsw i32 %2639, %2640
  store i32 %2641, ptr %25, align 4, !tbaa !9
  %2642 = load ptr, ptr %15, align 8, !tbaa !5
  %2643 = load i32, ptr %40, align 4, !tbaa !9
  %2644 = add nsw i32 %2643, 1
  %2645 = load i32, ptr %40, align 4, !tbaa !9
  %2646 = load i32, ptr %21, align 4, !tbaa !9
  %2647 = mul nsw i32 %2645, %2646
  %2648 = add nsw i32 %2644, %2647
  %2649 = sext i32 %2648 to i64
  %2650 = getelementptr inbounds %struct.doublecomplex, ptr %2642, i64 %2649
  call void @zscal_(ptr noundef %25, ptr noundef %48, ptr noundef %2650, ptr noundef @c__1)
  br label %2734

2651:                                             ; preds = %2606
  %2652 = load i32, ptr %40, align 4, !tbaa !9
  %2653 = load i32, ptr %40, align 4, !tbaa !9
  %2654 = load i32, ptr %21, align 4, !tbaa !9
  %2655 = mul nsw i32 %2653, %2654
  %2656 = add nsw i32 %2652, %2655
  store i32 %2656, ptr %25, align 4, !tbaa !9
  %2657 = load ptr, ptr %15, align 8, !tbaa !5
  %2658 = load i32, ptr %25, align 4, !tbaa !9
  %2659 = sext i32 %2658 to i64
  %2660 = getelementptr inbounds %struct.doublecomplex, ptr %2657, i64 %2659
  %2661 = getelementptr inbounds %struct.doublecomplex, ptr %2660, i32 0, i32 0
  %2662 = load double, ptr %2661, align 8, !tbaa !13
  %2663 = fcmp une double %2662, 0.000000e+00
  br i1 %2663, label %2672, label %2664

2664:                                             ; preds = %2651
  %2665 = load ptr, ptr %15, align 8, !tbaa !5
  %2666 = load i32, ptr %25, align 4, !tbaa !9
  %2667 = sext i32 %2666 to i64
  %2668 = getelementptr inbounds %struct.doublecomplex, ptr %2665, i64 %2667
  %2669 = getelementptr inbounds %struct.doublecomplex, ptr %2668, i32 0, i32 1
  %2670 = load double, ptr %2669, align 8, !tbaa !15
  %2671 = fcmp une double %2670, 0.000000e+00
  br i1 %2671, label %2672, label %2733

2672:                                             ; preds = %2664, %2651
  %2673 = load ptr, ptr %12, align 8, !tbaa !5
  %2674 = load i32, ptr %2673, align 4, !tbaa !9
  store i32 %2674, ptr %25, align 4, !tbaa !9
  %2675 = load i32, ptr %40, align 4, !tbaa !9
  %2676 = add nsw i32 %2675, 1
  store i32 %2676, ptr %54, align 4, !tbaa !9
  br label %2677

2677:                                             ; preds = %2729, %2672
  %2678 = load i32, ptr %54, align 4, !tbaa !9
  %2679 = load i32, ptr %25, align 4, !tbaa !9
  %2680 = icmp sle i32 %2678, %2679
  br i1 %2680, label %2681, label %2732

2681:                                             ; preds = %2677
  %2682 = load i32, ptr %54, align 4, !tbaa !9
  %2683 = load i32, ptr %40, align 4, !tbaa !9
  %2684 = load i32, ptr %21, align 4, !tbaa !9
  %2685 = mul nsw i32 %2683, %2684
  %2686 = add nsw i32 %2682, %2685
  store i32 %2686, ptr %26, align 4, !tbaa !9
  %2687 = load ptr, ptr %15, align 8, !tbaa !5
  %2688 = load i32, ptr %54, align 4, !tbaa !9
  %2689 = load i32, ptr %40, align 4, !tbaa !9
  %2690 = load i32, ptr %21, align 4, !tbaa !9
  %2691 = mul nsw i32 %2689, %2690
  %2692 = add nsw i32 %2688, %2691
  %2693 = sext i32 %2692 to i64
  %2694 = getelementptr inbounds %struct.doublecomplex, ptr %2687, i64 %2693
  %2695 = call { double, double } @Cd(ptr noundef %2694)
  %2696 = extractvalue { double, double } %2695, 0
  %2697 = extractvalue { double, double } %2695, 1
  %2698 = load ptr, ptr %15, align 8, !tbaa !5
  %2699 = load i32, ptr %40, align 4, !tbaa !9
  %2700 = load i32, ptr %40, align 4, !tbaa !9
  %2701 = load i32, ptr %21, align 4, !tbaa !9
  %2702 = mul nsw i32 %2700, %2701
  %2703 = add nsw i32 %2699, %2702
  %2704 = sext i32 %2703 to i64
  %2705 = getelementptr inbounds %struct.doublecomplex, ptr %2698, i64 %2704
  %2706 = call { double, double } @Cd(ptr noundef %2705)
  %2707 = extractvalue { double, double } %2706, 0
  %2708 = extractvalue { double, double } %2706, 1
  %2709 = call { double, double } @__divdc3(double noundef %2696, double noundef %2697, double noundef %2707, double noundef %2708) #6
  %2710 = extractvalue { double, double } %2709, 0
  %2711 = extractvalue { double, double } %2709, 1
  %2712 = call ptr @_pCd(ptr noundef %32)
  %2713 = getelementptr inbounds { double, double }, ptr %2712, i32 0, i32 0
  %2714 = getelementptr inbounds { double, double }, ptr %2712, i32 0, i32 1
  store double %2710, ptr %2713, align 8
  store double %2711, ptr %2714, align 8
  %2715 = getelementptr inbounds %struct.doublecomplex, ptr %32, i32 0, i32 0
  %2716 = load double, ptr %2715, align 8, !tbaa !13
  %2717 = load ptr, ptr %15, align 8, !tbaa !5
  %2718 = load i32, ptr %26, align 4, !tbaa !9
  %2719 = sext i32 %2718 to i64
  %2720 = getelementptr inbounds %struct.doublecomplex, ptr %2717, i64 %2719
  %2721 = getelementptr inbounds %struct.doublecomplex, ptr %2720, i32 0, i32 0
  store double %2716, ptr %2721, align 8, !tbaa !13
  %2722 = getelementptr inbounds %struct.doublecomplex, ptr %32, i32 0, i32 1
  %2723 = load double, ptr %2722, align 8, !tbaa !15
  %2724 = load ptr, ptr %15, align 8, !tbaa !5
  %2725 = load i32, ptr %26, align 4, !tbaa !9
  %2726 = sext i32 %2725 to i64
  %2727 = getelementptr inbounds %struct.doublecomplex, ptr %2724, i64 %2726
  %2728 = getelementptr inbounds %struct.doublecomplex, ptr %2727, i32 0, i32 1
  store double %2723, ptr %2728, align 8, !tbaa !15
  br label %2729

2729:                                             ; preds = %2681
  %2730 = load i32, ptr %54, align 4, !tbaa !9
  %2731 = add nsw i32 %2730, 1
  store i32 %2731, ptr %54, align 4, !tbaa !9
  br label %2677, !llvm.loop !21

2732:                                             ; preds = %2677
  br label %2733

2733:                                             ; preds = %2732, %2664
  br label %2734

2734:                                             ; preds = %2733, %2611
  br label %2735

2735:                                             ; preds = %2734, %2541
  br label %3231

2736:                                             ; preds = %2538
  %2737 = load i32, ptr %40, align 4, !tbaa !9
  %2738 = load ptr, ptr %12, align 8, !tbaa !5
  %2739 = load i32, ptr %2738, align 4, !tbaa !9
  %2740 = sub nsw i32 %2739, 1
  %2741 = icmp slt i32 %2737, %2740
  br i1 %2741, label %2742, label %3128

2742:                                             ; preds = %2736
  %2743 = load i32, ptr %40, align 4, !tbaa !9
  %2744 = add nsw i32 %2743, 1
  %2745 = load i32, ptr %40, align 4, !tbaa !9
  %2746 = load i32, ptr %23, align 4, !tbaa !9
  %2747 = mul nsw i32 %2745, %2746
  %2748 = add nsw i32 %2744, %2747
  store i32 %2748, ptr %25, align 4, !tbaa !9
  %2749 = load ptr, ptr %18, align 8, !tbaa !5
  %2750 = load i32, ptr %25, align 4, !tbaa !9
  %2751 = sext i32 %2750 to i64
  %2752 = getelementptr inbounds %struct.doublecomplex, ptr %2749, i64 %2751
  %2753 = getelementptr inbounds %struct.doublecomplex, ptr %2752, i32 0, i32 0
  %2754 = load double, ptr %2753, align 8, !tbaa !13
  %2755 = getelementptr inbounds %struct.doublecomplex, ptr %51, i32 0, i32 0
  store double %2754, ptr %2755, align 8, !tbaa !13
  %2756 = load ptr, ptr %18, align 8, !tbaa !5
  %2757 = load i32, ptr %25, align 4, !tbaa !9
  %2758 = sext i32 %2757 to i64
  %2759 = getelementptr inbounds %struct.doublecomplex, ptr %2756, i64 %2758
  %2760 = getelementptr inbounds %struct.doublecomplex, ptr %2759, i32 0, i32 1
  %2761 = load double, ptr %2760, align 8, !tbaa !15
  %2762 = getelementptr inbounds %struct.doublecomplex, ptr %51, i32 0, i32 1
  store double %2761, ptr %2762, align 8, !tbaa !15
  %2763 = load ptr, ptr %18, align 8, !tbaa !5
  %2764 = load i32, ptr %40, align 4, !tbaa !9
  %2765 = add nsw i32 %2764, 1
  %2766 = load i32, ptr %40, align 4, !tbaa !9
  %2767 = add nsw i32 %2766, 1
  %2768 = load i32, ptr %23, align 4, !tbaa !9
  %2769 = mul nsw i32 %2767, %2768
  %2770 = add nsw i32 %2765, %2769
  %2771 = sext i32 %2770 to i64
  %2772 = getelementptr inbounds %struct.doublecomplex, ptr %2763, i64 %2771
  %2773 = call { double, double } @Cd(ptr noundef %2772)
  %2774 = extractvalue { double, double } %2773, 0
  %2775 = extractvalue { double, double } %2773, 1
  %2776 = call { double, double } @Cd(ptr noundef %51)
  %2777 = extractvalue { double, double } %2776, 0
  %2778 = extractvalue { double, double } %2776, 1
  %2779 = call { double, double } @__divdc3(double noundef %2774, double noundef %2775, double noundef %2777, double noundef %2778) #6
  %2780 = extractvalue { double, double } %2779, 0
  %2781 = extractvalue { double, double } %2779, 1
  %2782 = call ptr @_pCd(ptr noundef %32)
  %2783 = getelementptr inbounds { double, double }, ptr %2782, i32 0, i32 0
  %2784 = getelementptr inbounds { double, double }, ptr %2782, i32 0, i32 1
  store double %2780, ptr %2783, align 8
  store double %2781, ptr %2784, align 8
  %2785 = getelementptr inbounds %struct.doublecomplex, ptr %32, i32 0, i32 0
  %2786 = load double, ptr %2785, align 8, !tbaa !13
  %2787 = getelementptr inbounds %struct.doublecomplex, ptr %49, i32 0, i32 0
  store double %2786, ptr %2787, align 8, !tbaa !13
  %2788 = getelementptr inbounds %struct.doublecomplex, ptr %32, i32 0, i32 1
  %2789 = load double, ptr %2788, align 8, !tbaa !15
  %2790 = getelementptr inbounds %struct.doublecomplex, ptr %49, i32 0, i32 1
  store double %2789, ptr %2790, align 8, !tbaa !15
  %2791 = load ptr, ptr %18, align 8, !tbaa !5
  %2792 = load i32, ptr %40, align 4, !tbaa !9
  %2793 = load i32, ptr %40, align 4, !tbaa !9
  %2794 = load i32, ptr %23, align 4, !tbaa !9
  %2795 = mul nsw i32 %2793, %2794
  %2796 = add nsw i32 %2792, %2795
  %2797 = sext i32 %2796 to i64
  %2798 = getelementptr inbounds %struct.doublecomplex, ptr %2791, i64 %2797
  %2799 = call { double, double } @Cd(ptr noundef %2798)
  %2800 = extractvalue { double, double } %2799, 0
  %2801 = extractvalue { double, double } %2799, 1
  %2802 = call { double, double } @Cd(ptr noundef %51)
  %2803 = extractvalue { double, double } %2802, 0
  %2804 = extractvalue { double, double } %2802, 1
  %2805 = call { double, double } @__divdc3(double noundef %2800, double noundef %2801, double noundef %2803, double noundef %2804) #6
  %2806 = extractvalue { double, double } %2805, 0
  %2807 = extractvalue { double, double } %2805, 1
  %2808 = call ptr @_pCd(ptr noundef %32)
  %2809 = getelementptr inbounds { double, double }, ptr %2808, i32 0, i32 0
  %2810 = getelementptr inbounds { double, double }, ptr %2808, i32 0, i32 1
  store double %2806, ptr %2809, align 8
  store double %2807, ptr %2810, align 8
  %2811 = getelementptr inbounds %struct.doublecomplex, ptr %32, i32 0, i32 0
  %2812 = load double, ptr %2811, align 8, !tbaa !13
  %2813 = getelementptr inbounds %struct.doublecomplex, ptr %52, i32 0, i32 0
  store double %2812, ptr %2813, align 8, !tbaa !13
  %2814 = getelementptr inbounds %struct.doublecomplex, ptr %32, i32 0, i32 1
  %2815 = load double, ptr %2814, align 8, !tbaa !15
  %2816 = getelementptr inbounds %struct.doublecomplex, ptr %52, i32 0, i32 1
  store double %2815, ptr %2816, align 8, !tbaa !15
  %2817 = getelementptr inbounds %struct.doublecomplex, ptr %49, i32 0, i32 0
  %2818 = load double, ptr %2817, align 8, !tbaa !13
  %2819 = getelementptr inbounds %struct.doublecomplex, ptr %52, i32 0, i32 0
  %2820 = load double, ptr %2819, align 8, !tbaa !13
  %2821 = getelementptr inbounds %struct.doublecomplex, ptr %49, i32 0, i32 1
  %2822 = load double, ptr %2821, align 8, !tbaa !15
  %2823 = getelementptr inbounds %struct.doublecomplex, ptr %52, i32 0, i32 1
  %2824 = load double, ptr %2823, align 8, !tbaa !15
  %2825 = fmul double %2822, %2824
  %2826 = fneg double %2825
  %2827 = call double @llvm.fmuladd.f64(double %2818, double %2820, double %2826)
  %2828 = getelementptr inbounds %struct.doublecomplex, ptr %34, i32 0, i32 0
  store double %2827, ptr %2828, align 8, !tbaa !13
  %2829 = getelementptr inbounds %struct.doublecomplex, ptr %49, i32 0, i32 0
  %2830 = load double, ptr %2829, align 8, !tbaa !13
  %2831 = getelementptr inbounds %struct.doublecomplex, ptr %52, i32 0, i32 1
  %2832 = load double, ptr %2831, align 8, !tbaa !15
  %2833 = getelementptr inbounds %struct.doublecomplex, ptr %49, i32 0, i32 1
  %2834 = load double, ptr %2833, align 8, !tbaa !15
  %2835 = getelementptr inbounds %struct.doublecomplex, ptr %52, i32 0, i32 0
  %2836 = load double, ptr %2835, align 8, !tbaa !13
  %2837 = fmul double %2834, %2836
  %2838 = call double @llvm.fmuladd.f64(double %2830, double %2832, double %2837)
  %2839 = getelementptr inbounds %struct.doublecomplex, ptr %34, i32 0, i32 1
  store double %2838, ptr %2839, align 8, !tbaa !15
  %2840 = getelementptr inbounds %struct.doublecomplex, ptr %34, i32 0, i32 0
  %2841 = load double, ptr %2840, align 8, !tbaa !13
  %2842 = fsub double %2841, 1.000000e+00
  %2843 = getelementptr inbounds %struct.doublecomplex, ptr %33, i32 0, i32 0
  store double %2842, ptr %2843, align 8, !tbaa !13
  %2844 = getelementptr inbounds %struct.doublecomplex, ptr %34, i32 0, i32 1
  %2845 = load double, ptr %2844, align 8, !tbaa !15
  %2846 = fadd double %2845, 0.000000e+00
  %2847 = getelementptr inbounds %struct.doublecomplex, ptr %33, i32 0, i32 1
  store double %2846, ptr %2847, align 8, !tbaa !15
  %2848 = call { double, double } @Cd(ptr noundef @c_b1)
  %2849 = extractvalue { double, double } %2848, 0
  %2850 = extractvalue { double, double } %2848, 1
  %2851 = call { double, double } @Cd(ptr noundef %33)
  %2852 = extractvalue { double, double } %2851, 0
  %2853 = extractvalue { double, double } %2851, 1
  %2854 = call { double, double } @__divdc3(double noundef %2849, double noundef %2850, double noundef %2852, double noundef %2853) #6
  %2855 = extractvalue { double, double } %2854, 0
  %2856 = extractvalue { double, double } %2854, 1
  %2857 = call ptr @_pCd(ptr noundef %32)
  %2858 = getelementptr inbounds { double, double }, ptr %2857, i32 0, i32 0
  %2859 = getelementptr inbounds { double, double }, ptr %2857, i32 0, i32 1
  store double %2855, ptr %2858, align 8
  store double %2856, ptr %2859, align 8
  %2860 = getelementptr inbounds %struct.doublecomplex, ptr %32, i32 0, i32 0
  %2861 = load double, ptr %2860, align 8, !tbaa !13
  %2862 = getelementptr inbounds %struct.doublecomplex, ptr %42, i32 0, i32 0
  store double %2861, ptr %2862, align 8, !tbaa !13
  %2863 = getelementptr inbounds %struct.doublecomplex, ptr %32, i32 0, i32 1
  %2864 = load double, ptr %2863, align 8, !tbaa !15
  %2865 = getelementptr inbounds %struct.doublecomplex, ptr %42, i32 0, i32 1
  store double %2864, ptr %2865, align 8, !tbaa !15
  %2866 = load ptr, ptr %12, align 8, !tbaa !5
  %2867 = load i32, ptr %2866, align 4, !tbaa !9
  store i32 %2867, ptr %25, align 4, !tbaa !9
  %2868 = load i32, ptr %40, align 4, !tbaa !9
  %2869 = add nsw i32 %2868, 2
  store i32 %2869, ptr %39, align 4, !tbaa !9
  br label %2870

2870:                                             ; preds = %3124, %2742
  %2871 = load i32, ptr %39, align 4, !tbaa !9
  %2872 = load i32, ptr %25, align 4, !tbaa !9
  %2873 = icmp sle i32 %2871, %2872
  br i1 %2873, label %2874, label %3127

2874:                                             ; preds = %2870
  %2875 = load i32, ptr %39, align 4, !tbaa !9
  %2876 = load i32, ptr %40, align 4, !tbaa !9
  %2877 = load i32, ptr %21, align 4, !tbaa !9
  %2878 = mul nsw i32 %2876, %2877
  %2879 = add nsw i32 %2875, %2878
  store i32 %2879, ptr %26, align 4, !tbaa !9
  %2880 = load i32, ptr %39, align 4, !tbaa !9
  %2881 = load i32, ptr %40, align 4, !tbaa !9
  %2882 = load i32, ptr %23, align 4, !tbaa !9
  %2883 = mul nsw i32 %2881, %2882
  %2884 = add nsw i32 %2880, %2883
  store i32 %2884, ptr %27, align 4, !tbaa !9
  %2885 = getelementptr inbounds %struct.doublecomplex, ptr %49, i32 0, i32 0
  %2886 = load double, ptr %2885, align 8, !tbaa !13
  %2887 = load ptr, ptr %18, align 8, !tbaa !5
  %2888 = load i32, ptr %27, align 4, !tbaa !9
  %2889 = sext i32 %2888 to i64
  %2890 = getelementptr inbounds %struct.doublecomplex, ptr %2887, i64 %2889
  %2891 = getelementptr inbounds %struct.doublecomplex, ptr %2890, i32 0, i32 0
  %2892 = load double, ptr %2891, align 8, !tbaa !13
  %2893 = getelementptr inbounds %struct.doublecomplex, ptr %49, i32 0, i32 1
  %2894 = load double, ptr %2893, align 8, !tbaa !15
  %2895 = load ptr, ptr %18, align 8, !tbaa !5
  %2896 = load i32, ptr %27, align 4, !tbaa !9
  %2897 = sext i32 %2896 to i64
  %2898 = getelementptr inbounds %struct.doublecomplex, ptr %2895, i64 %2897
  %2899 = getelementptr inbounds %struct.doublecomplex, ptr %2898, i32 0, i32 1
  %2900 = load double, ptr %2899, align 8, !tbaa !15
  %2901 = fmul double %2894, %2900
  %2902 = fneg double %2901
  %2903 = call double @llvm.fmuladd.f64(double %2886, double %2892, double %2902)
  %2904 = getelementptr inbounds %struct.doublecomplex, ptr %35, i32 0, i32 0
  store double %2903, ptr %2904, align 8, !tbaa !13
  %2905 = getelementptr inbounds %struct.doublecomplex, ptr %49, i32 0, i32 0
  %2906 = load double, ptr %2905, align 8, !tbaa !13
  %2907 = load ptr, ptr %18, align 8, !tbaa !5
  %2908 = load i32, ptr %27, align 4, !tbaa !9
  %2909 = sext i32 %2908 to i64
  %2910 = getelementptr inbounds %struct.doublecomplex, ptr %2907, i64 %2909
  %2911 = getelementptr inbounds %struct.doublecomplex, ptr %2910, i32 0, i32 1
  %2912 = load double, ptr %2911, align 8, !tbaa !15
  %2913 = getelementptr inbounds %struct.doublecomplex, ptr %49, i32 0, i32 1
  %2914 = load double, ptr %2913, align 8, !tbaa !15
  %2915 = load ptr, ptr %18, align 8, !tbaa !5
  %2916 = load i32, ptr %27, align 4, !tbaa !9
  %2917 = sext i32 %2916 to i64
  %2918 = getelementptr inbounds %struct.doublecomplex, ptr %2915, i64 %2917
  %2919 = getelementptr inbounds %struct.doublecomplex, ptr %2918, i32 0, i32 0
  %2920 = load double, ptr %2919, align 8, !tbaa !13
  %2921 = fmul double %2914, %2920
  %2922 = call double @llvm.fmuladd.f64(double %2906, double %2912, double %2921)
  %2923 = getelementptr inbounds %struct.doublecomplex, ptr %35, i32 0, i32 1
  store double %2922, ptr %2923, align 8, !tbaa !15
  %2924 = load i32, ptr %39, align 4, !tbaa !9
  %2925 = load i32, ptr %40, align 4, !tbaa !9
  %2926 = add nsw i32 %2925, 1
  %2927 = load i32, ptr %23, align 4, !tbaa !9
  %2928 = mul nsw i32 %2926, %2927
  %2929 = add nsw i32 %2924, %2928
  store i32 %2929, ptr %28, align 4, !tbaa !9
  %2930 = getelementptr inbounds %struct.doublecomplex, ptr %35, i32 0, i32 0
  %2931 = load double, ptr %2930, align 8, !tbaa !13
  %2932 = load ptr, ptr %18, align 8, !tbaa !5
  %2933 = load i32, ptr %28, align 4, !tbaa !9
  %2934 = sext i32 %2933 to i64
  %2935 = getelementptr inbounds %struct.doublecomplex, ptr %2932, i64 %2934
  %2936 = getelementptr inbounds %struct.doublecomplex, ptr %2935, i32 0, i32 0
  %2937 = load double, ptr %2936, align 8, !tbaa !13
  %2938 = fsub double %2931, %2937
  %2939 = getelementptr inbounds %struct.doublecomplex, ptr %34, i32 0, i32 0
  store double %2938, ptr %2939, align 8, !tbaa !13
  %2940 = getelementptr inbounds %struct.doublecomplex, ptr %35, i32 0, i32 1
  %2941 = load double, ptr %2940, align 8, !tbaa !15
  %2942 = load ptr, ptr %18, align 8, !tbaa !5
  %2943 = load i32, ptr %28, align 4, !tbaa !9
  %2944 = sext i32 %2943 to i64
  %2945 = getelementptr inbounds %struct.doublecomplex, ptr %2942, i64 %2944
  %2946 = getelementptr inbounds %struct.doublecomplex, ptr %2945, i32 0, i32 1
  %2947 = load double, ptr %2946, align 8, !tbaa !15
  %2948 = fsub double %2941, %2947
  %2949 = getelementptr inbounds %struct.doublecomplex, ptr %34, i32 0, i32 1
  store double %2948, ptr %2949, align 8, !tbaa !15
  %2950 = call { double, double } @Cd(ptr noundef %34)
  %2951 = extractvalue { double, double } %2950, 0
  %2952 = extractvalue { double, double } %2950, 1
  %2953 = call { double, double } @Cd(ptr noundef %51)
  %2954 = extractvalue { double, double } %2953, 0
  %2955 = extractvalue { double, double } %2953, 1
  %2956 = call { double, double } @__divdc3(double noundef %2951, double noundef %2952, double noundef %2954, double noundef %2955) #6
  %2957 = extractvalue { double, double } %2956, 0
  %2958 = extractvalue { double, double } %2956, 1
  %2959 = call ptr @_pCd(ptr noundef %33)
  %2960 = getelementptr inbounds { double, double }, ptr %2959, i32 0, i32 0
  %2961 = getelementptr inbounds { double, double }, ptr %2959, i32 0, i32 1
  store double %2957, ptr %2960, align 8
  store double %2958, ptr %2961, align 8
  %2962 = getelementptr inbounds %struct.doublecomplex, ptr %42, i32 0, i32 0
  %2963 = load double, ptr %2962, align 8, !tbaa !13
  %2964 = getelementptr inbounds %struct.doublecomplex, ptr %33, i32 0, i32 0
  %2965 = load double, ptr %2964, align 8, !tbaa !13
  %2966 = getelementptr inbounds %struct.doublecomplex, ptr %42, i32 0, i32 1
  %2967 = load double, ptr %2966, align 8, !tbaa !15
  %2968 = getelementptr inbounds %struct.doublecomplex, ptr %33, i32 0, i32 1
  %2969 = load double, ptr %2968, align 8, !tbaa !15
  %2970 = fmul double %2967, %2969
  %2971 = fneg double %2970
  %2972 = call double @llvm.fmuladd.f64(double %2963, double %2965, double %2971)
  %2973 = getelementptr inbounds %struct.doublecomplex, ptr %32, i32 0, i32 0
  store double %2972, ptr %2973, align 8, !tbaa !13
  %2974 = getelementptr inbounds %struct.doublecomplex, ptr %42, i32 0, i32 0
  %2975 = load double, ptr %2974, align 8, !tbaa !13
  %2976 = getelementptr inbounds %struct.doublecomplex, ptr %33, i32 0, i32 1
  %2977 = load double, ptr %2976, align 8, !tbaa !15
  %2978 = getelementptr inbounds %struct.doublecomplex, ptr %42, i32 0, i32 1
  %2979 = load double, ptr %2978, align 8, !tbaa !15
  %2980 = getelementptr inbounds %struct.doublecomplex, ptr %33, i32 0, i32 0
  %2981 = load double, ptr %2980, align 8, !tbaa !13
  %2982 = fmul double %2979, %2981
  %2983 = call double @llvm.fmuladd.f64(double %2975, double %2977, double %2982)
  %2984 = getelementptr inbounds %struct.doublecomplex, ptr %32, i32 0, i32 1
  store double %2983, ptr %2984, align 8, !tbaa !15
  %2985 = getelementptr inbounds %struct.doublecomplex, ptr %32, i32 0, i32 0
  %2986 = load double, ptr %2985, align 8, !tbaa !13
  %2987 = load ptr, ptr %15, align 8, !tbaa !5
  %2988 = load i32, ptr %26, align 4, !tbaa !9
  %2989 = sext i32 %2988 to i64
  %2990 = getelementptr inbounds %struct.doublecomplex, ptr %2987, i64 %2989
  %2991 = getelementptr inbounds %struct.doublecomplex, ptr %2990, i32 0, i32 0
  store double %2986, ptr %2991, align 8, !tbaa !13
  %2992 = getelementptr inbounds %struct.doublecomplex, ptr %32, i32 0, i32 1
  %2993 = load double, ptr %2992, align 8, !tbaa !15
  %2994 = load ptr, ptr %15, align 8, !tbaa !5
  %2995 = load i32, ptr %26, align 4, !tbaa !9
  %2996 = sext i32 %2995 to i64
  %2997 = getelementptr inbounds %struct.doublecomplex, ptr %2994, i64 %2996
  %2998 = getelementptr inbounds %struct.doublecomplex, ptr %2997, i32 0, i32 1
  store double %2993, ptr %2998, align 8, !tbaa !15
  %2999 = load i32, ptr %39, align 4, !tbaa !9
  %3000 = load i32, ptr %40, align 4, !tbaa !9
  %3001 = add nsw i32 %3000, 1
  %3002 = load i32, ptr %21, align 4, !tbaa !9
  %3003 = mul nsw i32 %3001, %3002
  %3004 = add nsw i32 %2999, %3003
  store i32 %3004, ptr %26, align 4, !tbaa !9
  %3005 = load i32, ptr %39, align 4, !tbaa !9
  %3006 = load i32, ptr %40, align 4, !tbaa !9
  %3007 = add nsw i32 %3006, 1
  %3008 = load i32, ptr %23, align 4, !tbaa !9
  %3009 = mul nsw i32 %3007, %3008
  %3010 = add nsw i32 %3005, %3009
  store i32 %3010, ptr %27, align 4, !tbaa !9
  %3011 = getelementptr inbounds %struct.doublecomplex, ptr %52, i32 0, i32 0
  %3012 = load double, ptr %3011, align 8, !tbaa !13
  %3013 = load ptr, ptr %18, align 8, !tbaa !5
  %3014 = load i32, ptr %27, align 4, !tbaa !9
  %3015 = sext i32 %3014 to i64
  %3016 = getelementptr inbounds %struct.doublecomplex, ptr %3013, i64 %3015
  %3017 = getelementptr inbounds %struct.doublecomplex, ptr %3016, i32 0, i32 0
  %3018 = load double, ptr %3017, align 8, !tbaa !13
  %3019 = getelementptr inbounds %struct.doublecomplex, ptr %52, i32 0, i32 1
  %3020 = load double, ptr %3019, align 8, !tbaa !15
  %3021 = load ptr, ptr %18, align 8, !tbaa !5
  %3022 = load i32, ptr %27, align 4, !tbaa !9
  %3023 = sext i32 %3022 to i64
  %3024 = getelementptr inbounds %struct.doublecomplex, ptr %3021, i64 %3023
  %3025 = getelementptr inbounds %struct.doublecomplex, ptr %3024, i32 0, i32 1
  %3026 = load double, ptr %3025, align 8, !tbaa !15
  %3027 = fmul double %3020, %3026
  %3028 = fneg double %3027
  %3029 = call double @llvm.fmuladd.f64(double %3012, double %3018, double %3028)
  %3030 = getelementptr inbounds %struct.doublecomplex, ptr %35, i32 0, i32 0
  store double %3029, ptr %3030, align 8, !tbaa !13
  %3031 = getelementptr inbounds %struct.doublecomplex, ptr %52, i32 0, i32 0
  %3032 = load double, ptr %3031, align 8, !tbaa !13
  %3033 = load ptr, ptr %18, align 8, !tbaa !5
  %3034 = load i32, ptr %27, align 4, !tbaa !9
  %3035 = sext i32 %3034 to i64
  %3036 = getelementptr inbounds %struct.doublecomplex, ptr %3033, i64 %3035
  %3037 = getelementptr inbounds %struct.doublecomplex, ptr %3036, i32 0, i32 1
  %3038 = load double, ptr %3037, align 8, !tbaa !15
  %3039 = getelementptr inbounds %struct.doublecomplex, ptr %52, i32 0, i32 1
  %3040 = load double, ptr %3039, align 8, !tbaa !15
  %3041 = load ptr, ptr %18, align 8, !tbaa !5
  %3042 = load i32, ptr %27, align 4, !tbaa !9
  %3043 = sext i32 %3042 to i64
  %3044 = getelementptr inbounds %struct.doublecomplex, ptr %3041, i64 %3043
  %3045 = getelementptr inbounds %struct.doublecomplex, ptr %3044, i32 0, i32 0
  %3046 = load double, ptr %3045, align 8, !tbaa !13
  %3047 = fmul double %3040, %3046
  %3048 = call double @llvm.fmuladd.f64(double %3032, double %3038, double %3047)
  %3049 = getelementptr inbounds %struct.doublecomplex, ptr %35, i32 0, i32 1
  store double %3048, ptr %3049, align 8, !tbaa !15
  %3050 = load i32, ptr %39, align 4, !tbaa !9
  %3051 = load i32, ptr %40, align 4, !tbaa !9
  %3052 = load i32, ptr %23, align 4, !tbaa !9
  %3053 = mul nsw i32 %3051, %3052
  %3054 = add nsw i32 %3050, %3053
  store i32 %3054, ptr %28, align 4, !tbaa !9
  %3055 = getelementptr inbounds %struct.doublecomplex, ptr %35, i32 0, i32 0
  %3056 = load double, ptr %3055, align 8, !tbaa !13
  %3057 = load ptr, ptr %18, align 8, !tbaa !5
  %3058 = load i32, ptr %28, align 4, !tbaa !9
  %3059 = sext i32 %3058 to i64
  %3060 = getelementptr inbounds %struct.doublecomplex, ptr %3057, i64 %3059
  %3061 = getelementptr inbounds %struct.doublecomplex, ptr %3060, i32 0, i32 0
  %3062 = load double, ptr %3061, align 8, !tbaa !13
  %3063 = fsub double %3056, %3062
  %3064 = getelementptr inbounds %struct.doublecomplex, ptr %34, i32 0, i32 0
  store double %3063, ptr %3064, align 8, !tbaa !13
  %3065 = getelementptr inbounds %struct.doublecomplex, ptr %35, i32 0, i32 1
  %3066 = load double, ptr %3065, align 8, !tbaa !15
  %3067 = load ptr, ptr %18, align 8, !tbaa !5
  %3068 = load i32, ptr %28, align 4, !tbaa !9
  %3069 = sext i32 %3068 to i64
  %3070 = getelementptr inbounds %struct.doublecomplex, ptr %3067, i64 %3069
  %3071 = getelementptr inbounds %struct.doublecomplex, ptr %3070, i32 0, i32 1
  %3072 = load double, ptr %3071, align 8, !tbaa !15
  %3073 = fsub double %3066, %3072
  %3074 = getelementptr inbounds %struct.doublecomplex, ptr %34, i32 0, i32 1
  store double %3073, ptr %3074, align 8, !tbaa !15
  %3075 = call { double, double } @Cd(ptr noundef %34)
  %3076 = extractvalue { double, double } %3075, 0
  %3077 = extractvalue { double, double } %3075, 1
  %3078 = call { double, double } @Cd(ptr noundef %51)
  %3079 = extractvalue { double, double } %3078, 0
  %3080 = extractvalue { double, double } %3078, 1
  %3081 = call { double, double } @__divdc3(double noundef %3076, double noundef %3077, double noundef %3079, double noundef %3080) #6
  %3082 = extractvalue { double, double } %3081, 0
  %3083 = extractvalue { double, double } %3081, 1
  %3084 = call ptr @_pCd(ptr noundef %33)
  %3085 = getelementptr inbounds { double, double }, ptr %3084, i32 0, i32 0
  %3086 = getelementptr inbounds { double, double }, ptr %3084, i32 0, i32 1
  store double %3082, ptr %3085, align 8
  store double %3083, ptr %3086, align 8
  %3087 = getelementptr inbounds %struct.doublecomplex, ptr %42, i32 0, i32 0
  %3088 = load double, ptr %3087, align 8, !tbaa !13
  %3089 = getelementptr inbounds %struct.doublecomplex, ptr %33, i32 0, i32 0
  %3090 = load double, ptr %3089, align 8, !tbaa !13
  %3091 = getelementptr inbounds %struct.doublecomplex, ptr %42, i32 0, i32 1
  %3092 = load double, ptr %3091, align 8, !tbaa !15
  %3093 = getelementptr inbounds %struct.doublecomplex, ptr %33, i32 0, i32 1
  %3094 = load double, ptr %3093, align 8, !tbaa !15
  %3095 = fmul double %3092, %3094
  %3096 = fneg double %3095
  %3097 = call double @llvm.fmuladd.f64(double %3088, double %3090, double %3096)
  %3098 = getelementptr inbounds %struct.doublecomplex, ptr %32, i32 0, i32 0
  store double %3097, ptr %3098, align 8, !tbaa !13
  %3099 = getelementptr inbounds %struct.doublecomplex, ptr %42, i32 0, i32 0
  %3100 = load double, ptr %3099, align 8, !tbaa !13
  %3101 = getelementptr inbounds %struct.doublecomplex, ptr %33, i32 0, i32 1
  %3102 = load double, ptr %3101, align 8, !tbaa !15
  %3103 = getelementptr inbounds %struct.doublecomplex, ptr %42, i32 0, i32 1
  %3104 = load double, ptr %3103, align 8, !tbaa !15
  %3105 = getelementptr inbounds %struct.doublecomplex, ptr %33, i32 0, i32 0
  %3106 = load double, ptr %3105, align 8, !tbaa !13
  %3107 = fmul double %3104, %3106
  %3108 = call double @llvm.fmuladd.f64(double %3100, double %3102, double %3107)
  %3109 = getelementptr inbounds %struct.doublecomplex, ptr %32, i32 0, i32 1
  store double %3108, ptr %3109, align 8, !tbaa !15
  %3110 = getelementptr inbounds %struct.doublecomplex, ptr %32, i32 0, i32 0
  %3111 = load double, ptr %3110, align 8, !tbaa !13
  %3112 = load ptr, ptr %15, align 8, !tbaa !5
  %3113 = load i32, ptr %26, align 4, !tbaa !9
  %3114 = sext i32 %3113 to i64
  %3115 = getelementptr inbounds %struct.doublecomplex, ptr %3112, i64 %3114
  %3116 = getelementptr inbounds %struct.doublecomplex, ptr %3115, i32 0, i32 0
  store double %3111, ptr %3116, align 8, !tbaa !13
  %3117 = getelementptr inbounds %struct.doublecomplex, ptr %32, i32 0, i32 1
  %3118 = load double, ptr %3117, align 8, !tbaa !15
  %3119 = load ptr, ptr %15, align 8, !tbaa !5
  %3120 = load i32, ptr %26, align 4, !tbaa !9
  %3121 = sext i32 %3120 to i64
  %3122 = getelementptr inbounds %struct.doublecomplex, ptr %3119, i64 %3121
  %3123 = getelementptr inbounds %struct.doublecomplex, ptr %3122, i32 0, i32 1
  store double %3118, ptr %3123, align 8, !tbaa !15
  br label %3124

3124:                                             ; preds = %2874
  %3125 = load i32, ptr %39, align 4, !tbaa !9
  %3126 = add nsw i32 %3125, 1
  store i32 %3126, ptr %39, align 4, !tbaa !9
  br label %2870, !llvm.loop !22

3127:                                             ; preds = %2870
  br label %3128

3128:                                             ; preds = %3127, %2736
  %3129 = load i32, ptr %40, align 4, !tbaa !9
  %3130 = load i32, ptr %40, align 4, !tbaa !9
  %3131 = load i32, ptr %21, align 4, !tbaa !9
  %3132 = mul nsw i32 %3130, %3131
  %3133 = add nsw i32 %3129, %3132
  store i32 %3133, ptr %25, align 4, !tbaa !9
  %3134 = load i32, ptr %40, align 4, !tbaa !9
  %3135 = load i32, ptr %40, align 4, !tbaa !9
  %3136 = load i32, ptr %23, align 4, !tbaa !9
  %3137 = mul nsw i32 %3135, %3136
  %3138 = add nsw i32 %3134, %3137
  store i32 %3138, ptr %26, align 4, !tbaa !9
  %3139 = load ptr, ptr %18, align 8, !tbaa !5
  %3140 = load i32, ptr %26, align 4, !tbaa !9
  %3141 = sext i32 %3140 to i64
  %3142 = getelementptr inbounds %struct.doublecomplex, ptr %3139, i64 %3141
  %3143 = getelementptr inbounds %struct.doublecomplex, ptr %3142, i32 0, i32 0
  %3144 = load double, ptr %3143, align 8, !tbaa !13
  %3145 = load ptr, ptr %15, align 8, !tbaa !5
  %3146 = load i32, ptr %25, align 4, !tbaa !9
  %3147 = sext i32 %3146 to i64
  %3148 = getelementptr inbounds %struct.doublecomplex, ptr %3145, i64 %3147
  %3149 = getelementptr inbounds %struct.doublecomplex, ptr %3148, i32 0, i32 0
  store double %3144, ptr %3149, align 8, !tbaa !13
  %3150 = load ptr, ptr %18, align 8, !tbaa !5
  %3151 = load i32, ptr %26, align 4, !tbaa !9
  %3152 = sext i32 %3151 to i64
  %3153 = getelementptr inbounds %struct.doublecomplex, ptr %3150, i64 %3152
  %3154 = getelementptr inbounds %struct.doublecomplex, ptr %3153, i32 0, i32 1
  %3155 = load double, ptr %3154, align 8, !tbaa !15
  %3156 = load ptr, ptr %15, align 8, !tbaa !5
  %3157 = load i32, ptr %25, align 4, !tbaa !9
  %3158 = sext i32 %3157 to i64
  %3159 = getelementptr inbounds %struct.doublecomplex, ptr %3156, i64 %3158
  %3160 = getelementptr inbounds %struct.doublecomplex, ptr %3159, i32 0, i32 1
  store double %3155, ptr %3160, align 8, !tbaa !15
  %3161 = load i32, ptr %40, align 4, !tbaa !9
  %3162 = add nsw i32 %3161, 1
  %3163 = load i32, ptr %40, align 4, !tbaa !9
  %3164 = load i32, ptr %21, align 4, !tbaa !9
  %3165 = mul nsw i32 %3163, %3164
  %3166 = add nsw i32 %3162, %3165
  store i32 %3166, ptr %25, align 4, !tbaa !9
  %3167 = load i32, ptr %40, align 4, !tbaa !9
  %3168 = add nsw i32 %3167, 1
  %3169 = load i32, ptr %40, align 4, !tbaa !9
  %3170 = load i32, ptr %23, align 4, !tbaa !9
  %3171 = mul nsw i32 %3169, %3170
  %3172 = add nsw i32 %3168, %3171
  store i32 %3172, ptr %26, align 4, !tbaa !9
  %3173 = load ptr, ptr %18, align 8, !tbaa !5
  %3174 = load i32, ptr %26, align 4, !tbaa !9
  %3175 = sext i32 %3174 to i64
  %3176 = getelementptr inbounds %struct.doublecomplex, ptr %3173, i64 %3175
  %3177 = getelementptr inbounds %struct.doublecomplex, ptr %3176, i32 0, i32 0
  %3178 = load double, ptr %3177, align 8, !tbaa !13
  %3179 = load ptr, ptr %15, align 8, !tbaa !5
  %3180 = load i32, ptr %25, align 4, !tbaa !9
  %3181 = sext i32 %3180 to i64
  %3182 = getelementptr inbounds %struct.doublecomplex, ptr %3179, i64 %3181
  %3183 = getelementptr inbounds %struct.doublecomplex, ptr %3182, i32 0, i32 0
  store double %3178, ptr %3183, align 8, !tbaa !13
  %3184 = load ptr, ptr %18, align 8, !tbaa !5
  %3185 = load i32, ptr %26, align 4, !tbaa !9
  %3186 = sext i32 %3185 to i64
  %3187 = getelementptr inbounds %struct.doublecomplex, ptr %3184, i64 %3186
  %3188 = getelementptr inbounds %struct.doublecomplex, ptr %3187, i32 0, i32 1
  %3189 = load double, ptr %3188, align 8, !tbaa !15
  %3190 = load ptr, ptr %15, align 8, !tbaa !5
  %3191 = load i32, ptr %25, align 4, !tbaa !9
  %3192 = sext i32 %3191 to i64
  %3193 = getelementptr inbounds %struct.doublecomplex, ptr %3190, i64 %3192
  %3194 = getelementptr inbounds %struct.doublecomplex, ptr %3193, i32 0, i32 1
  store double %3189, ptr %3194, align 8, !tbaa !15
  %3195 = load i32, ptr %40, align 4, !tbaa !9
  %3196 = add nsw i32 %3195, 1
  %3197 = load i32, ptr %40, align 4, !tbaa !9
  %3198 = add nsw i32 %3197, 1
  %3199 = load i32, ptr %21, align 4, !tbaa !9
  %3200 = mul nsw i32 %3198, %3199
  %3201 = add nsw i32 %3196, %3200
  store i32 %3201, ptr %25, align 4, !tbaa !9
  %3202 = load i32, ptr %40, align 4, !tbaa !9
  %3203 = add nsw i32 %3202, 1
  %3204 = load i32, ptr %40, align 4, !tbaa !9
  %3205 = add nsw i32 %3204, 1
  %3206 = load i32, ptr %23, align 4, !tbaa !9
  %3207 = mul nsw i32 %3205, %3206
  %3208 = add nsw i32 %3203, %3207
  store i32 %3208, ptr %26, align 4, !tbaa !9
  %3209 = load ptr, ptr %18, align 8, !tbaa !5
  %3210 = load i32, ptr %26, align 4, !tbaa !9
  %3211 = sext i32 %3210 to i64
  %3212 = getelementptr inbounds %struct.doublecomplex, ptr %3209, i64 %3211
  %3213 = getelementptr inbounds %struct.doublecomplex, ptr %3212, i32 0, i32 0
  %3214 = load double, ptr %3213, align 8, !tbaa !13
  %3215 = load ptr, ptr %15, align 8, !tbaa !5
  %3216 = load i32, ptr %25, align 4, !tbaa !9
  %3217 = sext i32 %3216 to i64
  %3218 = getelementptr inbounds %struct.doublecomplex, ptr %3215, i64 %3217
  %3219 = getelementptr inbounds %struct.doublecomplex, ptr %3218, i32 0, i32 0
  store double %3214, ptr %3219, align 8, !tbaa !13
  %3220 = load ptr, ptr %18, align 8, !tbaa !5
  %3221 = load i32, ptr %26, align 4, !tbaa !9
  %3222 = sext i32 %3221 to i64
  %3223 = getelementptr inbounds %struct.doublecomplex, ptr %3220, i64 %3222
  %3224 = getelementptr inbounds %struct.doublecomplex, ptr %3223, i32 0, i32 1
  %3225 = load double, ptr %3224, align 8, !tbaa !15
  %3226 = load ptr, ptr %15, align 8, !tbaa !5
  %3227 = load i32, ptr %25, align 4, !tbaa !9
  %3228 = sext i32 %3227 to i64
  %3229 = getelementptr inbounds %struct.doublecomplex, ptr %3226, i64 %3228
  %3230 = getelementptr inbounds %struct.doublecomplex, ptr %3229, i32 0, i32 1
  store double %3225, ptr %3230, align 8, !tbaa !15
  br label %3231

3231:                                             ; preds = %3128, %2735
  br label %3232

3232:                                             ; preds = %3231, %1985
  %3233 = load i32, ptr %47, align 4, !tbaa !9
  %3234 = icmp eq i32 %3233, 1
  br i1 %3234, label %3235, label %3241

3235:                                             ; preds = %3232
  %3236 = load i32, ptr %57, align 4, !tbaa !9
  %3237 = load ptr, ptr %17, align 8, !tbaa !5
  %3238 = load i32, ptr %40, align 4, !tbaa !9
  %3239 = sext i32 %3238 to i64
  %3240 = getelementptr inbounds i32, ptr %3237, i64 %3239
  store i32 %3236, ptr %3240, align 4, !tbaa !9
  br label %3255

3241:                                             ; preds = %3232
  %3242 = load i32, ptr %41, align 4, !tbaa !9
  %3243 = sub nsw i32 0, %3242
  %3244 = load ptr, ptr %17, align 8, !tbaa !5
  %3245 = load i32, ptr %40, align 4, !tbaa !9
  %3246 = sext i32 %3245 to i64
  %3247 = getelementptr inbounds i32, ptr %3244, i64 %3246
  store i32 %3243, ptr %3247, align 4, !tbaa !9
  %3248 = load i32, ptr %57, align 4, !tbaa !9
  %3249 = sub nsw i32 0, %3248
  %3250 = load ptr, ptr %17, align 8, !tbaa !5
  %3251 = load i32, ptr %40, align 4, !tbaa !9
  %3252 = add nsw i32 %3251, 1
  %3253 = sext i32 %3252 to i64
  %3254 = getelementptr inbounds i32, ptr %3250, i64 %3253
  store i32 %3249, ptr %3254, align 4, !tbaa !9
  br label %3255

3255:                                             ; preds = %3241, %3235
  %3256 = load i32, ptr %47, align 4, !tbaa !9
  %3257 = load i32, ptr %40, align 4, !tbaa !9
  %3258 = add nsw i32 %3257, %3256
  store i32 %3258, ptr %40, align 4, !tbaa !9
  br label %1788

3259:                                             ; preds = %1804
  %3260 = load ptr, ptr %12, align 8, !tbaa !5
  %3261 = load i32, ptr %3260, align 4, !tbaa !9
  store i32 %3261, ptr %25, align 4, !tbaa !9
  %3262 = load ptr, ptr %13, align 8, !tbaa !5
  %3263 = load i32, ptr %3262, align 4, !tbaa !9
  store i32 %3263, ptr %26, align 4, !tbaa !9
  %3264 = load i32, ptr %40, align 4, !tbaa !9
  store i32 %3264, ptr %39, align 4, !tbaa !9
  br label %3265

3265:                                             ; preds = %3389, %3259
  %3266 = load i32, ptr %26, align 4, !tbaa !9
  %3267 = icmp slt i32 %3266, 0
  br i1 %3267, label %3268, label %3273

3268:                                             ; preds = %3265
  %3269 = load i32, ptr %39, align 4, !tbaa !9
  %3270 = load i32, ptr %25, align 4, !tbaa !9
  %3271 = icmp sge i32 %3269, %3270
  %3272 = zext i1 %3271 to i32
  br label %3278

3273:                                             ; preds = %3265
  %3274 = load i32, ptr %39, align 4, !tbaa !9
  %3275 = load i32, ptr %25, align 4, !tbaa !9
  %3276 = icmp sle i32 %3274, %3275
  %3277 = zext i1 %3276 to i32
  br label %3278

3278:                                             ; preds = %3273, %3268
  %3279 = phi i32 [ %3272, %3268 ], [ %3277, %3273 ]
  %3280 = icmp ne i32 %3279, 0
  br i1 %3280, label %3281, label %3393

3281:                                             ; preds = %3278
  %3282 = load ptr, ptr %13, align 8, !tbaa !5
  %3283 = load i32, ptr %3282, align 4, !tbaa !9
  store i32 %3283, ptr %27, align 4, !tbaa !9
  %3284 = load ptr, ptr %12, align 8, !tbaa !5
  %3285 = load i32, ptr %3284, align 4, !tbaa !9
  %3286 = load i32, ptr %39, align 4, !tbaa !9
  %3287 = sub nsw i32 %3285, %3286
  %3288 = add nsw i32 %3287, 1
  store i32 %3288, ptr %28, align 4, !tbaa !9
  %3289 = load i32, ptr %27, align 4, !tbaa !9
  %3290 = load i32, ptr %28, align 4, !tbaa !9
  %3291 = icmp sle i32 %3289, %3290
  br i1 %3291, label %3292, label %3294

3292:                                             ; preds = %3281
  %3293 = load i32, ptr %27, align 4, !tbaa !9
  br label %3296

3294:                                             ; preds = %3281
  %3295 = load i32, ptr %28, align 4, !tbaa !9
  br label %3296

3296:                                             ; preds = %3294, %3292
  %3297 = phi i32 [ %3293, %3292 ], [ %3295, %3294 ]
  store i32 %3297, ptr %53, align 4, !tbaa !9
  %3298 = load i32, ptr %39, align 4, !tbaa !9
  %3299 = load i32, ptr %53, align 4, !tbaa !9
  %3300 = add nsw i32 %3298, %3299
  %3301 = sub nsw i32 %3300, 1
  store i32 %3301, ptr %27, align 4, !tbaa !9
  %3302 = load i32, ptr %39, align 4, !tbaa !9
  store i32 %3302, ptr %55, align 4, !tbaa !9
  br label %3303

3303:                                             ; preds = %3339, %3296
  %3304 = load i32, ptr %55, align 4, !tbaa !9
  %3305 = load i32, ptr %27, align 4, !tbaa !9
  %3306 = icmp sle i32 %3304, %3305
  br i1 %3306, label %3307, label %3342

3307:                                             ; preds = %3303
  %3308 = load i32, ptr %39, align 4, !tbaa !9
  %3309 = load i32, ptr %53, align 4, !tbaa !9
  %3310 = add nsw i32 %3308, %3309
  %3311 = load i32, ptr %55, align 4, !tbaa !9
  %3312 = sub nsw i32 %3310, %3311
  store i32 %3312, ptr %28, align 4, !tbaa !9
  %3313 = load i32, ptr %40, align 4, !tbaa !9
  %3314 = sub nsw i32 %3313, 1
  store i32 %3314, ptr %29, align 4, !tbaa !9
  %3315 = getelementptr inbounds %struct.doublecomplex, ptr %32, i32 0, i32 0
  store double -1.000000e+00, ptr %3315, align 8, !tbaa !13
  %3316 = getelementptr inbounds %struct.doublecomplex, ptr %32, i32 0, i32 1
  store double 0.000000e+00, ptr %3316, align 8, !tbaa !15
  %3317 = load ptr, ptr %15, align 8, !tbaa !5
  %3318 = load i32, ptr %55, align 4, !tbaa !9
  %3319 = load i32, ptr %21, align 4, !tbaa !9
  %3320 = add nsw i32 %3318, %3319
  %3321 = sext i32 %3320 to i64
  %3322 = getelementptr inbounds %struct.doublecomplex, ptr %3317, i64 %3321
  %3323 = load ptr, ptr %16, align 8, !tbaa !5
  %3324 = load ptr, ptr %18, align 8, !tbaa !5
  %3325 = load i32, ptr %55, align 4, !tbaa !9
  %3326 = load i32, ptr %23, align 4, !tbaa !9
  %3327 = add nsw i32 %3325, %3326
  %3328 = sext i32 %3327 to i64
  %3329 = getelementptr inbounds %struct.doublecomplex, ptr %3324, i64 %3328
  %3330 = load ptr, ptr %19, align 8, !tbaa !5
  %3331 = load ptr, ptr %15, align 8, !tbaa !5
  %3332 = load i32, ptr %55, align 4, !tbaa !9
  %3333 = load i32, ptr %55, align 4, !tbaa !9
  %3334 = load i32, ptr %21, align 4, !tbaa !9
  %3335 = mul nsw i32 %3333, %3334
  %3336 = add nsw i32 %3332, %3335
  %3337 = sext i32 %3336 to i64
  %3338 = getelementptr inbounds %struct.doublecomplex, ptr %3331, i64 %3337
  call void @zgemv_(ptr noundef @.str.2, ptr noundef %28, ptr noundef %29, ptr noundef %32, ptr noundef %3322, ptr noundef %3323, ptr noundef %3329, ptr noundef %3330, ptr noundef @c_b1, ptr noundef %3338, ptr noundef @c__1)
  br label %3339

3339:                                             ; preds = %3307
  %3340 = load i32, ptr %55, align 4, !tbaa !9
  %3341 = add nsw i32 %3340, 1
  store i32 %3341, ptr %55, align 4, !tbaa !9
  br label %3303, !llvm.loop !23

3342:                                             ; preds = %3303
  %3343 = load i32, ptr %39, align 4, !tbaa !9
  %3344 = load i32, ptr %53, align 4, !tbaa !9
  %3345 = add nsw i32 %3343, %3344
  %3346 = load ptr, ptr %12, align 8, !tbaa !5
  %3347 = load i32, ptr %3346, align 4, !tbaa !9
  %3348 = icmp sle i32 %3345, %3347
  br i1 %3348, label %3349, label %3388

3349:                                             ; preds = %3342
  %3350 = load ptr, ptr %12, align 8, !tbaa !5
  %3351 = load i32, ptr %3350, align 4, !tbaa !9
  %3352 = load i32, ptr %39, align 4, !tbaa !9
  %3353 = sub nsw i32 %3351, %3352
  %3354 = load i32, ptr %53, align 4, !tbaa !9
  %3355 = sub nsw i32 %3353, %3354
  %3356 = add nsw i32 %3355, 1
  store i32 %3356, ptr %27, align 4, !tbaa !9
  %3357 = load i32, ptr %40, align 4, !tbaa !9
  %3358 = sub nsw i32 %3357, 1
  store i32 %3358, ptr %28, align 4, !tbaa !9
  %3359 = getelementptr inbounds %struct.doublecomplex, ptr %32, i32 0, i32 0
  store double -1.000000e+00, ptr %3359, align 8, !tbaa !13
  %3360 = getelementptr inbounds %struct.doublecomplex, ptr %32, i32 0, i32 1
  store double 0.000000e+00, ptr %3360, align 8, !tbaa !15
  %3361 = load ptr, ptr %15, align 8, !tbaa !5
  %3362 = load i32, ptr %39, align 4, !tbaa !9
  %3363 = load i32, ptr %53, align 4, !tbaa !9
  %3364 = add nsw i32 %3362, %3363
  %3365 = load i32, ptr %21, align 4, !tbaa !9
  %3366 = add nsw i32 %3364, %3365
  %3367 = sext i32 %3366 to i64
  %3368 = getelementptr inbounds %struct.doublecomplex, ptr %3361, i64 %3367
  %3369 = load ptr, ptr %16, align 8, !tbaa !5
  %3370 = load ptr, ptr %18, align 8, !tbaa !5
  %3371 = load i32, ptr %39, align 4, !tbaa !9
  %3372 = load i32, ptr %23, align 4, !tbaa !9
  %3373 = add nsw i32 %3371, %3372
  %3374 = sext i32 %3373 to i64
  %3375 = getelementptr inbounds %struct.doublecomplex, ptr %3370, i64 %3374
  %3376 = load ptr, ptr %19, align 8, !tbaa !5
  %3377 = load ptr, ptr %15, align 8, !tbaa !5
  %3378 = load i32, ptr %39, align 4, !tbaa !9
  %3379 = load i32, ptr %53, align 4, !tbaa !9
  %3380 = add nsw i32 %3378, %3379
  %3381 = load i32, ptr %39, align 4, !tbaa !9
  %3382 = load i32, ptr %21, align 4, !tbaa !9
  %3383 = mul nsw i32 %3381, %3382
  %3384 = add nsw i32 %3380, %3383
  %3385 = sext i32 %3384 to i64
  %3386 = getelementptr inbounds %struct.doublecomplex, ptr %3377, i64 %3385
  %3387 = load ptr, ptr %16, align 8, !tbaa !5
  call void @zgemm_(ptr noundef @.str.2, ptr noundef @.str.3, ptr noundef %27, ptr noundef %53, ptr noundef %28, ptr noundef %32, ptr noundef %3368, ptr noundef %3369, ptr noundef %3375, ptr noundef %3376, ptr noundef @c_b1, ptr noundef %3386, ptr noundef %3387)
  br label %3388

3388:                                             ; preds = %3349, %3342
  br label %3389

3389:                                             ; preds = %3388
  %3390 = load i32, ptr %26, align 4, !tbaa !9
  %3391 = load i32, ptr %39, align 4, !tbaa !9
  %3392 = add nsw i32 %3391, %3390
  store i32 %3392, ptr %39, align 4, !tbaa !9
  br label %3265, !llvm.loop !24

3393:                                             ; preds = %3278
  %3394 = load i32, ptr %40, align 4, !tbaa !9
  %3395 = sub nsw i32 %3394, 1
  store i32 %3395, ptr %39, align 4, !tbaa !9
  br label %3396

3396:                                             ; preds = %3467, %3393
  store i32 1, ptr %47, align 4, !tbaa !9
  store i32 1, ptr %61, align 4, !tbaa !9
  %3397 = load i32, ptr %39, align 4, !tbaa !9
  store i32 %3397, ptr %55, align 4, !tbaa !9
  %3398 = load ptr, ptr %17, align 8, !tbaa !5
  %3399 = load i32, ptr %39, align 4, !tbaa !9
  %3400 = sext i32 %3399 to i64
  %3401 = getelementptr inbounds i32, ptr %3398, i64 %3400
  %3402 = load i32, ptr %3401, align 4, !tbaa !9
  store i32 %3402, ptr %62, align 4, !tbaa !9
  %3403 = load i32, ptr %62, align 4, !tbaa !9
  %3404 = icmp slt i32 %3403, 0
  br i1 %3404, label %3405, label %3416

3405:                                             ; preds = %3396
  %3406 = load i32, ptr %62, align 4, !tbaa !9
  %3407 = sub nsw i32 0, %3406
  store i32 %3407, ptr %62, align 4, !tbaa !9
  %3408 = load i32, ptr %39, align 4, !tbaa !9
  %3409 = add nsw i32 %3408, -1
  store i32 %3409, ptr %39, align 4, !tbaa !9
  %3410 = load ptr, ptr %17, align 8, !tbaa !5
  %3411 = load i32, ptr %39, align 4, !tbaa !9
  %3412 = sext i32 %3411 to i64
  %3413 = getelementptr inbounds i32, ptr %3410, i64 %3412
  %3414 = load i32, ptr %3413, align 4, !tbaa !9
  %3415 = sub nsw i32 0, %3414
  store i32 %3415, ptr %61, align 4, !tbaa !9
  store i32 2, ptr %47, align 4, !tbaa !9
  br label %3416

3416:                                             ; preds = %3405, %3396
  %3417 = load i32, ptr %39, align 4, !tbaa !9
  %3418 = add nsw i32 %3417, -1
  store i32 %3418, ptr %39, align 4, !tbaa !9
  %3419 = load i32, ptr %62, align 4, !tbaa !9
  %3420 = load i32, ptr %55, align 4, !tbaa !9
  %3421 = icmp ne i32 %3419, %3420
  br i1 %3421, label %3422, label %3440

3422:                                             ; preds = %3416
  %3423 = load i32, ptr %39, align 4, !tbaa !9
  %3424 = icmp sge i32 %3423, 1
  br i1 %3424, label %3425, label %3440

3425:                                             ; preds = %3422
  %3426 = load ptr, ptr %15, align 8, !tbaa !5
  %3427 = load i32, ptr %62, align 4, !tbaa !9
  %3428 = load i32, ptr %21, align 4, !tbaa !9
  %3429 = add nsw i32 %3427, %3428
  %3430 = sext i32 %3429 to i64
  %3431 = getelementptr inbounds %struct.doublecomplex, ptr %3426, i64 %3430
  %3432 = load ptr, ptr %16, align 8, !tbaa !5
  %3433 = load ptr, ptr %15, align 8, !tbaa !5
  %3434 = load i32, ptr %55, align 4, !tbaa !9
  %3435 = load i32, ptr %21, align 4, !tbaa !9
  %3436 = add nsw i32 %3434, %3435
  %3437 = sext i32 %3436 to i64
  %3438 = getelementptr inbounds %struct.doublecomplex, ptr %3433, i64 %3437
  %3439 = load ptr, ptr %16, align 8, !tbaa !5
  call void @zswap_(ptr noundef %39, ptr noundef %3431, ptr noundef %3432, ptr noundef %3438, ptr noundef %3439)
  br label %3440

3440:                                             ; preds = %3425, %3422, %3416
  %3441 = load i32, ptr %39, align 4, !tbaa !9
  %3442 = add nsw i32 %3441, 1
  store i32 %3442, ptr %55, align 4, !tbaa !9
  %3443 = load i32, ptr %61, align 4, !tbaa !9
  %3444 = load i32, ptr %55, align 4, !tbaa !9
  %3445 = icmp ne i32 %3443, %3444
  br i1 %3445, label %3446, label %3464

3446:                                             ; preds = %3440
  %3447 = load i32, ptr %47, align 4, !tbaa !9
  %3448 = icmp eq i32 %3447, 2
  br i1 %3448, label %3449, label %3464

3449:                                             ; preds = %3446
  %3450 = load ptr, ptr %15, align 8, !tbaa !5
  %3451 = load i32, ptr %61, align 4, !tbaa !9
  %3452 = load i32, ptr %21, align 4, !tbaa !9
  %3453 = add nsw i32 %3451, %3452
  %3454 = sext i32 %3453 to i64
  %3455 = getelementptr inbounds %struct.doublecomplex, ptr %3450, i64 %3454
  %3456 = load ptr, ptr %16, align 8, !tbaa !5
  %3457 = load ptr, ptr %15, align 8, !tbaa !5
  %3458 = load i32, ptr %55, align 4, !tbaa !9
  %3459 = load i32, ptr %21, align 4, !tbaa !9
  %3460 = add nsw i32 %3458, %3459
  %3461 = sext i32 %3460 to i64
  %3462 = getelementptr inbounds %struct.doublecomplex, ptr %3457, i64 %3461
  %3463 = load ptr, ptr %16, align 8, !tbaa !5
  call void @zswap_(ptr noundef %39, ptr noundef %3455, ptr noundef %3456, ptr noundef %3462, ptr noundef %3463)
  br label %3464

3464:                                             ; preds = %3449, %3446, %3440
  %3465 = load i32, ptr %39, align 4, !tbaa !9
  %3466 = icmp sge i32 %3465, 1
  br i1 %3466, label %3467, label %3468

3467:                                             ; preds = %3464
  br label %3396

3468:                                             ; preds = %3464
  %3469 = load i32, ptr %40, align 4, !tbaa !9
  %3470 = sub nsw i32 %3469, 1
  %3471 = load ptr, ptr %14, align 8, !tbaa !5
  store i32 %3470, ptr %3471, align 4, !tbaa !9
  br label %3472

3472:                                             ; preds = %3468, %1781
  call void @llvm.lifetime.end.p0(i64 4, ptr %64) #6
  call void @llvm.lifetime.end.p0(i64 8, ptr %63) #6
  call void @llvm.lifetime.end.p0(i64 4, ptr %62) #6
  call void @llvm.lifetime.end.p0(i64 4, ptr %61) #6
  call void @llvm.lifetime.end.p0(i64 8, ptr %60) #6
  call void @llvm.lifetime.end.p0(i64 4, ptr %59) #6
  call void @llvm.lifetime.end.p0(i64 8, ptr %58) #6
  call void @llvm.lifetime.end.p0(i64 4, ptr %57) #6
  call void @llvm.lifetime.end.p0(i64 4, ptr %56) #6
  call void @llvm.lifetime.end.p0(i64 4, ptr %55) #6
  call void @llvm.lifetime.end.p0(i64 4, ptr %54) #6
  call void @llvm.lifetime.end.p0(i64 4, ptr %53) #6
  call void @llvm.lifetime.end.p0(i64 16, ptr %52) #6
  call void @llvm.lifetime.end.p0(i64 16, ptr %51) #6
  call void @llvm.lifetime.end.p0(i64 16, ptr %50) #6
  call void @llvm.lifetime.end.p0(i64 16, ptr %49) #6
  call void @llvm.lifetime.end.p0(i64 16, ptr %48) #6
  call void @llvm.lifetime.end.p0(i64 4, ptr %47) #6
  call void @llvm.lifetime.end.p0(i64 4, ptr %46) #6
  call void @llvm.lifetime.end.p0(i64 8, ptr %45) #6
  call void @llvm.lifetime.end.p0(i64 8, ptr %44) #6
  call void @llvm.lifetime.end.p0(i64 8, ptr %43) #6
  call void @llvm.lifetime.end.p0(i64 16, ptr %42) #6
  call void @llvm.lifetime.end.p0(i64 4, ptr %41) #6
  call void @llvm.lifetime.end.p0(i64 4, ptr %40) #6
  call void @llvm.lifetime.end.p0(i64 4, ptr %39) #6
  call void @llvm.lifetime.end.p0(i64 4, ptr %38) #6
  call void @llvm.lifetime.end.p0(i64 4, ptr %37) #6
  call void @llvm.lifetime.end.p0(i64 4, ptr %36) #6
  call void @llvm.lifetime.end.p0(i64 16, ptr %35) #6
  call void @llvm.lifetime.end.p0(i64 16, ptr %34) #6
  call void @llvm.lifetime.end.p0(i64 16, ptr %33) #6
  call void @llvm.lifetime.end.p0(i64 16, ptr %32) #6
  call void @llvm.lifetime.end.p0(i64 8, ptr %31) #6
  call void @llvm.lifetime.end.p0(i64 8, ptr %30) #6
  call void @llvm.lifetime.end.p0(i64 4, ptr %29) #6
  call void @llvm.lifetime.end.p0(i64 4, ptr %28) #6
  call void @llvm.lifetime.end.p0(i64 4, ptr %27) #6
  call void @llvm.lifetime.end.p0(i64 4, ptr %26) #6
  call void @llvm.lifetime.end.p0(i64 4, ptr %25) #6
  call void @llvm.lifetime.end.p0(i64 4, ptr %24) #6
  call void @llvm.lifetime.end.p0(i64 4, ptr %23) #6
  call void @llvm.lifetime.end.p0(i64 4, ptr %22) #6
  call void @llvm.lifetime.end.p0(i64 4, ptr %21) #6
  ret void
}

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

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

declare double @dlamch_(ptr noundef) #3

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

declare void @zcopy_(ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef) #3

declare void @zgemv_(ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef) #3

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

declare i32 @izamax_(ptr noundef, ptr noundef, ptr noundef) #3

declare void @zswap_(ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef) #3

declare { double, double } @__divdc3(double, double, double, double)

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

declare void @zscal_(ptr noundef, ptr noundef, ptr noundef, ptr noundef) #3

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

declare void @zgemm_(ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef) #3

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

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

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


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

; Function Attrs: nounwind uwtable
define dso_local void @zlasyf_rook_(ptr noundef %0, ptr nocapture noundef readonly %1, ptr nocapture noundef readonly %2, ptr nocapture noundef writeonly %3, ptr noundef %4, ptr noundef %5, ptr nocapture noundef %6, ptr noundef %7, ptr noundef %8, ptr nocapture noundef %9) local_unnamed_addr #0 {
  %11 = alloca i32, align 4
  %12 = alloca i32, align 4
  %13 = alloca i32, align 4
  %14 = alloca i32, align 4
  %15 = alloca i32, align 4
  %16 = alloca %struct.doublecomplex, align 16
  %17 = alloca %struct.doublecomplex, align 16
  %18 = alloca %struct.doublecomplex, align 16
  %19 = alloca i32, align 4
  %20 = alloca i32, align 4
  %21 = alloca i32, align 4
  %22 = alloca i32, align 4
  %23 = alloca %struct.doublecomplex, align 16
  %24 = alloca %struct.doublecomplex, align 16
  %25 = alloca %struct.doublecomplex, align 16
  %26 = alloca i32, align 4
  %27 = alloca i32, align 4
  %28 = alloca i32, align 4
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %11) #5
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %12) #5
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %13) #5
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %14) #5
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %15) #5
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %16) #5
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %17) #5
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %18) #5
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %19) #5
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %20) #5
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %21) #5
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %22) #5
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %23) #5
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %24) #5
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %25) #5
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %26) #5
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %27) #5
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %28) #5
  %29 = load i32, ptr %5, align 4, !tbaa !5
  %narrow = xor i32 %29, -1
  %30 = sext i32 %narrow to i64
  %31 = getelementptr inbounds %struct.doublecomplex, ptr %4, i64 %30
  %32 = getelementptr inbounds i8, ptr %6, i64 -4
  %33 = load i32, ptr %8, align 4, !tbaa !5
  %narrow865 = xor i32 %33, -1
  %34 = sext i32 %narrow865 to i64
  %35 = getelementptr inbounds %struct.doublecomplex, ptr %7, i64 %34
  store i32 0, ptr %9, align 4, !tbaa !5
  %36 = tail call double @dlamch_(ptr noundef nonnull @.str) #5
  %37 = tail call i32 @lsame_(ptr noundef %0, ptr noundef nonnull @.str.1) #5
  %.not = icmp eq i32 %37, 0
  br i1 %.not, label %.preheader953, label %44

.preheader953:                                    ; preds = %10
  %38 = add i32 %29, 1
  %39 = add i32 %33, 1
  %40 = getelementptr inbounds i8, ptr %16, i64 8
  store i32 1, ptr %21, align 4, !tbaa !5
  %41 = load i32, ptr %2, align 4, !tbaa !5
  %.not8661082 = icmp slt i32 %41, 2
  %.pre10431083 = load i32, ptr %1, align 4, !tbaa !5
  %42 = icmp slt i32 %41, %.pre10431083
  %or.cond10581084 = select i1 %.not8661082, i1 %42, i1 false
  %43 = icmp slt i32 %.pre10431083, 1
  %or.cond10591085 = select i1 %or.cond10581084, i1 true, i1 %43
  br i1 %or.cond10591085, label %._crit_edge1090, label %.lr.ph1089

44:                                               ; preds = %10
  %45 = load i32, ptr %1, align 4, !tbaa !5
  %invariant.gep972 = getelementptr i8, ptr %31, i64 16
  %invariant.gep974 = getelementptr i8, ptr %35, i64 16
  %46 = getelementptr inbounds i8, ptr %16, i64 8
  %47 = add i32 %29, 1
  br label %48

48:                                               ; preds = %591, %44
  %49 = phi i32 [ %45, %44 ], [ %.pre, %591 ]
  %storemerge879 = phi i32 [ %45, %44 ], [ %593, %591 ]
  %.0804 = phi i32 [ undef, %44 ], [ %.5809905, %591 ]
  %.fr888 = freeze i32 %storemerge879
  store i32 %.fr888, ptr %21, align 4, !tbaa !5
  %50 = load i32, ptr %2, align 4, !tbaa !5
  %51 = add nsw i32 %50, %.fr888
  %52 = sub i32 %51, %49
  %reass.sub = sub i32 %49, %50
  %53 = add i32 %reass.sub, 1
  %.not880 = icmp sgt i32 %.fr888, %53
  br i1 %.not880, label %57, label %54

54:                                               ; preds = %48
  %55 = icmp slt i32 %50, %49
  %56 = icmp slt i32 %.fr888, 1
  %or.cond = or i1 %56, %55
  br i1 %or.cond, label %594, label %58

57:                                               ; preds = %48
  %.old1 = icmp slt i32 %.fr888, 1
  br i1 %.old1, label %594, label %58

58:                                               ; preds = %54, %57
  store i32 %.fr888, ptr %22, align 4, !tbaa !5
  %59 = mul nsw i32 %.fr888, %29
  %60 = sext i32 %59 to i64
  %gep973 = getelementptr %struct.doublecomplex, ptr %invariant.gep972, i64 %60
  %61 = mul nsw i32 %52, %33
  %62 = sext i32 %61 to i64
  %gep975 = getelementptr %struct.doublecomplex, ptr %invariant.gep974, i64 %62
  call void @zcopy_(ptr noundef nonnull %21, ptr noundef %gep973, ptr noundef nonnull @c__1, ptr noundef %gep975, ptr noundef nonnull @c__1) #5
  %63 = load i32, ptr %21, align 4, !tbaa !5
  %64 = load i32, ptr %1, align 4, !tbaa !5
  %65 = icmp slt i32 %63, %64
  br i1 %65, label %66, label %76

66:                                               ; preds = %58
  %67 = sub nsw i32 %64, %63
  store i32 %67, ptr %11, align 4, !tbaa !5
  store <2 x double> <double -1.000000e+00, double 0.000000e+00>, ptr %16, align 16, !tbaa !9
  %68 = add nsw i32 %63, 1
  %69 = mul nsw i32 %68, %29
  %70 = sext i32 %69 to i64
  %gep977 = getelementptr %struct.doublecomplex, ptr %invariant.gep972, i64 %70
  %71 = add nsw i32 %52, 1
  %72 = mul nsw i32 %71, %33
  %73 = add nsw i32 %63, %72
  %74 = sext i32 %73 to i64
  %75 = getelementptr inbounds %struct.doublecomplex, ptr %35, i64 %74
  call void @zgemv_(ptr noundef nonnull @.str.2, ptr noundef nonnull %21, ptr noundef nonnull %11, ptr noundef nonnull %16, ptr noundef %gep977, ptr noundef nonnull %5, ptr noundef %75, ptr noundef nonnull %8, ptr noundef nonnull @c_b1, ptr noundef %gep975, ptr noundef nonnull @c__1) #5
  %.pre1035 = load i32, ptr %21, align 4, !tbaa !5
  br label %76

76:                                               ; preds = %66, %58
  %77 = phi i32 [ %.pre1035, %66 ], [ %63, %58 ]
  %78 = add nsw i32 %77, %61
  store i32 %78, ptr %11, align 4, !tbaa !5
  %79 = sext i32 %78 to i64
  %80 = getelementptr inbounds %struct.doublecomplex, ptr %35, i64 %79
  %81 = load double, ptr %80, align 8, !tbaa !11
  %82 = fcmp oge double %81, 0.000000e+00
  %83 = fneg double %81
  %84 = select i1 %82, double %81, double %83
  %85 = call { double, double } @Cd(ptr noundef nonnull %80)
  %86 = extractvalue { double, double } %85, 1
  %87 = fcmp oge double %86, 0.000000e+00
  %88 = fneg double %86
  %89 = select i1 %87, double %86, double %88
  %90 = fadd double %84, %89
  %91 = load i32, ptr %21, align 4, !tbaa !5
  %92 = icmp sgt i32 %91, 1
  br i1 %92, label %93, label %109

93:                                               ; preds = %76
  %94 = add nsw i32 %91, -1
  store i32 %94, ptr %11, align 4, !tbaa !5
  %95 = call i32 @izamax_(ptr noundef nonnull %11, ptr noundef %gep975, ptr noundef nonnull @c__1) #5
  store i32 %95, ptr %19, align 4, !tbaa !5
  %96 = add nsw i32 %95, %61
  store i32 %96, ptr %11, align 4, !tbaa !5
  %97 = sext i32 %96 to i64
  %98 = getelementptr inbounds %struct.doublecomplex, ptr %35, i64 %97
  %99 = load double, ptr %98, align 8, !tbaa !11
  %100 = call { double, double } @Cd(ptr noundef nonnull %98)
  %101 = extractvalue { double, double } %100, 1
  %102 = insertelement <2 x double> poison, double %99, i64 0
  %103 = insertelement <2 x double> %102, double %101, i64 1
  %104 = fcmp oge <2 x double> %103, zeroinitializer
  %105 = fneg <2 x double> %103
  %106 = select <2 x i1> %104, <2 x double> %103, <2 x double> %105
  %shift = shufflevector <2 x double> %106, <2 x double> poison, <2 x i32> <i32 1, i32 poison>
  %107 = fadd <2 x double> %106, %shift
  %108 = extractelement <2 x double> %107, i64 0
  br label %109

109:                                              ; preds = %76, %93
  %.0790 = phi double [ %108, %93 ], [ 0.000000e+00, %76 ]
  %110 = fcmp oge double %90, %.0790
  %111 = select i1 %110, double %90, double %.0790
  %112 = fcmp oeq double %111, 0.000000e+00
  br i1 %112, label %113, label %120

113:                                              ; preds = %109
  %114 = load i32, ptr %9, align 4, !tbaa !5
  %115 = icmp eq i32 %114, 0
  %.pre1039 = load i32, ptr %21, align 4, !tbaa !5
  br i1 %115, label %116, label %117

116:                                              ; preds = %113
  store i32 %.pre1039, ptr %9, align 4, !tbaa !5
  br label %117

117:                                              ; preds = %116, %113
  store i32 %.pre1039, ptr %28, align 4, !tbaa !5
  %118 = mul nsw i32 %.pre1039, %29
  %119 = sext i32 %118 to i64
  %gep993 = getelementptr %struct.doublecomplex, ptr %invariant.gep972, i64 %119
  call void @zcopy_(ptr noundef nonnull %21, ptr noundef %gep975, ptr noundef nonnull @c__1, ptr noundef %gep993, ptr noundef nonnull @c__1) #5
  br label %.loopexit954

120:                                              ; preds = %109
  %121 = fmul double %.0790, 0x3FE47E0F66AFED07
  %122 = fcmp olt double %90, %121
  br i1 %122, label %.preheader956, label %129

.preheader956:                                    ; preds = %120
  %123 = add nsw i32 %52, -1
  %124 = mul nsw i32 %123, %33
  %125 = sext i32 %124 to i64
  %gep979 = getelementptr %struct.doublecomplex, ptr %invariant.gep974, i64 %125
  %126 = add nsw i32 %52, 1
  %127 = mul nsw i32 %126, %33
  %128 = add i32 %124, 1
  br label %131

129:                                              ; preds = %120
  %130 = load i32, ptr %21, align 4, !tbaa !5
  store i32 %130, ptr %28, align 4, !tbaa !5
  br label %.thread

131:                                              ; preds = %.preheader956, %227
  %.1805 = phi i32 [ %.3807, %227 ], [ %.0804, %.preheader956 ]
  %.1791 = phi double [ %.1, %227 ], [ %.0790, %.preheader956 ]
  %132 = load i32, ptr %19, align 4, !tbaa !5
  %133 = mul nsw i32 %132, %29
  %134 = sext i32 %133 to i64
  %gep = getelementptr %struct.doublecomplex, ptr %invariant.gep972, i64 %134
  call void @zcopy_(ptr noundef nonnull %19, ptr noundef %gep, ptr noundef nonnull @c__1, ptr noundef %gep979, ptr noundef nonnull @c__1) #5
  %135 = load i32, ptr %21, align 4, !tbaa !5
  %136 = load i32, ptr %19, align 4, !tbaa !5
  %137 = sub nsw i32 %135, %136
  store i32 %137, ptr %11, align 4, !tbaa !5
  %138 = add nsw i32 %136, 1
  %139 = mul nsw i32 %138, %29
  %140 = add nsw i32 %139, %136
  %141 = sext i32 %140 to i64
  %142 = getelementptr inbounds %struct.doublecomplex, ptr %31, i64 %141
  %143 = add nsw i32 %138, %124
  %144 = sext i32 %143 to i64
  %145 = getelementptr inbounds %struct.doublecomplex, ptr %35, i64 %144
  call void @zcopy_(ptr noundef nonnull %11, ptr noundef %142, ptr noundef nonnull %5, ptr noundef %145, ptr noundef nonnull @c__1) #5
  %146 = load i32, ptr %21, align 4, !tbaa !5
  %147 = load i32, ptr %1, align 4, !tbaa !5
  %148 = icmp slt i32 %146, %147
  br i1 %148, label %149, label %158

149:                                              ; preds = %131
  %150 = sub nsw i32 %147, %146
  store i32 %150, ptr %11, align 4, !tbaa !5
  store <2 x double> <double -1.000000e+00, double 0.000000e+00>, ptr %16, align 16, !tbaa !9
  %151 = add nsw i32 %146, 1
  %152 = mul nsw i32 %151, %29
  %153 = sext i32 %152 to i64
  %gep966 = getelementptr %struct.doublecomplex, ptr %invariant.gep972, i64 %153
  %154 = load i32, ptr %19, align 4, !tbaa !5
  %155 = add nsw i32 %154, %127
  %156 = sext i32 %155 to i64
  %157 = getelementptr inbounds %struct.doublecomplex, ptr %35, i64 %156
  call void @zgemv_(ptr noundef nonnull @.str.2, ptr noundef nonnull %21, ptr noundef nonnull %11, ptr noundef nonnull %16, ptr noundef %gep966, ptr noundef nonnull %5, ptr noundef %157, ptr noundef nonnull %8, ptr noundef nonnull @c_b1, ptr noundef %gep979, ptr noundef nonnull @c__1) #5
  %.pre1036 = load i32, ptr %21, align 4, !tbaa !5
  br label %158

158:                                              ; preds = %149, %131
  %159 = phi i32 [ %.pre1036, %149 ], [ %146, %131 ]
  %160 = load i32, ptr %19, align 4, !tbaa !5
  %.not881 = icmp eq i32 %160, %159
  br i1 %.not881, label %181, label %161

161:                                              ; preds = %158
  %162 = sub nsw i32 %159, %160
  store i32 %162, ptr %11, align 4, !tbaa !5
  %163 = add i32 %128, %160
  %164 = sext i32 %163 to i64
  %165 = getelementptr inbounds %struct.doublecomplex, ptr %35, i64 %164
  %166 = call i32 @izamax_(ptr noundef nonnull %11, ptr noundef %165, ptr noundef nonnull @c__1) #5
  %167 = add nsw i32 %166, %160
  %168 = add nsw i32 %167, %124
  store i32 %168, ptr %11, align 4, !tbaa !5
  %169 = sext i32 %168 to i64
  %170 = getelementptr inbounds %struct.doublecomplex, ptr %35, i64 %169
  %171 = load double, ptr %170, align 8, !tbaa !11
  %172 = call { double, double } @Cd(ptr noundef nonnull %170)
  %173 = extractvalue { double, double } %172, 1
  %174 = insertelement <2 x double> poison, double %171, i64 0
  %175 = insertelement <2 x double> %174, double %173, i64 1
  %176 = fcmp oge <2 x double> %175, zeroinitializer
  %177 = fneg <2 x double> %175
  %178 = select <2 x i1> %176, <2 x double> %175, <2 x double> %177
  %shift1093 = shufflevector <2 x double> %178, <2 x double> poison, <2 x i32> <i32 1, i32 poison>
  %179 = fadd <2 x double> %178, %shift1093
  %180 = extractelement <2 x double> %179, i64 0
  %.pr = load i32, ptr %19, align 4, !tbaa !5
  br label %181

181:                                              ; preds = %158, %161
  %182 = phi i32 [ %159, %158 ], [ %.pr, %161 ]
  %.2806 = phi i32 [ %.1805, %158 ], [ %167, %161 ]
  %.0 = phi double [ 0.000000e+00, %158 ], [ %180, %161 ]
  %183 = icmp sgt i32 %182, 1
  br i1 %183, label %184, label %202

184:                                              ; preds = %181
  %185 = add nsw i32 %182, -1
  store i32 %185, ptr %11, align 4, !tbaa !5
  %186 = call i32 @izamax_(ptr noundef nonnull %11, ptr noundef %gep979, ptr noundef nonnull @c__1) #5
  %187 = add nsw i32 %186, %124
  store i32 %187, ptr %11, align 4, !tbaa !5
  %188 = sext i32 %187 to i64
  %189 = getelementptr inbounds %struct.doublecomplex, ptr %35, i64 %188
  %190 = load double, ptr %189, align 8, !tbaa !11
  %191 = call { double, double } @Cd(ptr noundef nonnull %189)
  %192 = extractvalue { double, double } %191, 1
  %193 = insertelement <2 x double> poison, double %190, i64 0
  %194 = insertelement <2 x double> %193, double %192, i64 1
  %195 = fcmp oge <2 x double> %194, zeroinitializer
  %196 = fneg <2 x double> %194
  %197 = select <2 x i1> %195, <2 x double> %194, <2 x double> %196
  %shift1094 = shufflevector <2 x double> %197, <2 x double> poison, <2 x i32> <i32 1, i32 poison>
  %198 = fadd <2 x double> %197, %shift1094
  %199 = extractelement <2 x double> %198, i64 0
  %200 = fcmp ogt double %199, %.0
  br i1 %200, label %201, label %202

201:                                              ; preds = %184
  br label %202

202:                                              ; preds = %184, %201, %181
  %.3807 = phi i32 [ %186, %201 ], [ %.2806, %184 ], [ %.2806, %181 ]
  %.1 = phi double [ %199, %201 ], [ %.0, %184 ], [ %.0, %181 ]
  %203 = load i32, ptr %19, align 4, !tbaa !5
  %204 = add nsw i32 %203, %124
  store i32 %204, ptr %11, align 4, !tbaa !5
  %205 = sext i32 %204 to i64
  %206 = getelementptr inbounds %struct.doublecomplex, ptr %35, i64 %205
  %207 = load double, ptr %206, align 8, !tbaa !11
  %208 = call { double, double } @Cd(ptr noundef nonnull %206)
  %209 = extractvalue { double, double } %208, 1
  %210 = insertelement <2 x double> poison, double %207, i64 0
  %211 = insertelement <2 x double> %210, double %209, i64 1
  %212 = fcmp oge <2 x double> %211, zeroinitializer
  %213 = fneg <2 x double> %211
  %214 = select <2 x i1> %212, <2 x double> %211, <2 x double> %213
  %shift1095 = shufflevector <2 x double> %214, <2 x double> poison, <2 x i32> <i32 1, i32 poison>
  %215 = fadd <2 x double> %214, %shift1095
  %216 = extractelement <2 x double> %215, i64 0
  %217 = fmul double %.1, 0x3FE47E0F66AFED07
  %218 = fcmp olt double %216, %217
  br i1 %218, label %221, label %219

219:                                              ; preds = %202
  %220 = load i32, ptr %19, align 4, !tbaa !5
  store i32 %220, ptr %28, align 4, !tbaa !5
  call void @zcopy_(ptr noundef nonnull %21, ptr noundef %gep979, ptr noundef nonnull @c__1, ptr noundef %gep975, ptr noundef nonnull @c__1) #5
  br label %.thread

221:                                              ; preds = %202
  %222 = load i32, ptr %22, align 4, !tbaa !5
  %223 = icmp ne i32 %222, %.3807
  %224 = fcmp ugt double %.1, %.1791
  %or.cond896 = select i1 %223, i1 %224, i1 false
  %225 = load i32, ptr %19, align 4, !tbaa !5
  br i1 %or.cond896, label %227, label %226

226:                                              ; preds = %221
  store i32 %225, ptr %28, align 4, !tbaa !5
  br label %.thread

227:                                              ; preds = %221
  store i32 %225, ptr %22, align 4, !tbaa !5
  store i32 %.3807, ptr %19, align 4, !tbaa !5
  call void @zcopy_(ptr noundef nonnull %21, ptr noundef %gep979, ptr noundef nonnull @c__1, ptr noundef %gep975, ptr noundef nonnull @c__1) #5
  br label %131

.thread:                                          ; preds = %219, %226, %129
  %.4808 = phi i32 [ %.0804, %129 ], [ %.3807, %226 ], [ %.3807, %219 ]
  %228 = phi i1 [ false, %129 ], [ true, %226 ], [ false, %219 ]
  %229 = phi i1 [ true, %129 ], [ false, %226 ], [ true, %219 ]
  %.2800.neg = phi i32 [ 0, %129 ], [ -1, %226 ], [ 0, %219 ]
  %230 = load i32, ptr %21, align 4, !tbaa !5
  %231 = add i32 %.2800.neg, %230
  store i32 %231, ptr %27, align 4, !tbaa !5
  %232 = load i32, ptr %2, align 4, !tbaa !5
  %233 = add nsw i32 %232, %231
  %234 = load i32, ptr %1, align 4, !tbaa !5
  %235 = sub i32 %233, %234
  br i1 %228, label %236, label %280

236:                                              ; preds = %.thread
  %237 = load i32, ptr %22, align 4, !tbaa !5
  %.not883 = icmp eq i32 %237, %230
  br i1 %.not883, label %280, label %238

238:                                              ; preds = %236
  %239 = sub nsw i32 %230, %237
  store i32 %239, ptr %11, align 4, !tbaa !5
  %240 = add nsw i32 %237, 1
  %241 = mul nsw i32 %230, %29
  %242 = add nsw i32 %240, %241
  %243 = sext i32 %242 to i64
  %244 = getelementptr inbounds %struct.doublecomplex, ptr %31, i64 %243
  %245 = mul nsw i32 %240, %29
  %246 = add nsw i32 %245, %237
  %247 = sext i32 %246 to i64
  %248 = getelementptr inbounds %struct.doublecomplex, ptr %31, i64 %247
  call void @zcopy_(ptr noundef nonnull %11, ptr noundef %244, ptr noundef nonnull @c__1, ptr noundef %248, ptr noundef nonnull %5) #5
  %249 = load i32, ptr %21, align 4, !tbaa !5
  %250 = mul nsw i32 %249, %29
  %251 = sext i32 %250 to i64
  %gep981 = getelementptr %struct.doublecomplex, ptr %invariant.gep972, i64 %251
  %252 = load i32, ptr %22, align 4, !tbaa !5
  %253 = mul nsw i32 %252, %29
  %254 = sext i32 %253 to i64
  %gep983 = getelementptr %struct.doublecomplex, ptr %invariant.gep972, i64 %254
  call void @zcopy_(ptr noundef nonnull %22, ptr noundef %gep981, ptr noundef nonnull @c__1, ptr noundef %gep983, ptr noundef nonnull @c__1) #5
  %255 = load i32, ptr %1, align 4, !tbaa !5
  %256 = load i32, ptr %21, align 4, !tbaa !5
  %257 = add i32 %255, 1
  %258 = sub i32 %257, %256
  store i32 %258, ptr %11, align 4, !tbaa !5
  %259 = mul nsw i32 %256, %29
  %260 = add nsw i32 %259, %256
  %261 = sext i32 %260 to i64
  %262 = getelementptr inbounds %struct.doublecomplex, ptr %31, i64 %261
  %263 = load i32, ptr %22, align 4, !tbaa !5
  %264 = add nsw i32 %263, %259
  %265 = sext i32 %264 to i64
  %266 = getelementptr inbounds %struct.doublecomplex, ptr %31, i64 %265
  call void @zswap_(ptr noundef nonnull %11, ptr noundef %262, ptr noundef nonnull %5, ptr noundef %266, ptr noundef nonnull %5) #5
  %267 = load i32, ptr %1, align 4, !tbaa !5
  %268 = load i32, ptr %27, align 4, !tbaa !5
  %269 = add i32 %267, 1
  %270 = sub i32 %269, %268
  store i32 %270, ptr %11, align 4, !tbaa !5
  %271 = load i32, ptr %21, align 4, !tbaa !5
  %272 = mul nsw i32 %235, %33
  %273 = add nsw i32 %271, %272
  %274 = sext i32 %273 to i64
  %275 = getelementptr inbounds %struct.doublecomplex, ptr %35, i64 %274
  %276 = load i32, ptr %22, align 4, !tbaa !5
  %277 = add nsw i32 %276, %272
  %278 = sext i32 %277 to i64
  %279 = getelementptr inbounds %struct.doublecomplex, ptr %35, i64 %278
  call void @zswap_(ptr noundef nonnull %11, ptr noundef %275, ptr noundef nonnull %8, ptr noundef %279, ptr noundef nonnull %8) #5
  %.pre1037 = load i32, ptr %27, align 4, !tbaa !5
  br label %280

280:                                              ; preds = %238, %236, %.thread
  %281 = phi i32 [ %.pre1037, %238 ], [ %231, %236 ], [ %231, %.thread ]
  %282 = load i32, ptr %28, align 4, !tbaa !5
  %.not884 = icmp eq i32 %282, %281
  br i1 %.not884, label %334, label %283

283:                                              ; preds = %280
  %284 = load i32, ptr %21, align 4, !tbaa !5
  %285 = mul nsw i32 %284, %29
  %286 = add nsw i32 %285, %282
  %287 = add nsw i32 %285, %281
  store i32 %287, ptr %12, align 4, !tbaa !5
  %288 = sext i32 %287 to i64
  %289 = getelementptr inbounds %struct.doublecomplex, ptr %31, i64 %288
  %290 = sext i32 %286 to i64
  %291 = getelementptr inbounds %struct.doublecomplex, ptr %31, i64 %290
  %292 = load <2 x double>, ptr %289, align 8, !tbaa !9
  store <2 x double> %292, ptr %291, align 8, !tbaa !9
  %293 = xor i32 %282, -1
  %294 = add i32 %284, %293
  store i32 %294, ptr %11, align 4, !tbaa !5
  %295 = add nsw i32 %282, 1
  %296 = mul nsw i32 %281, %29
  %297 = add nsw i32 %296, %295
  %298 = sext i32 %297 to i64
  %299 = getelementptr inbounds %struct.doublecomplex, ptr %31, i64 %298
  %300 = mul nsw i32 %295, %29
  %301 = add nsw i32 %300, %282
  %302 = sext i32 %301 to i64
  %303 = getelementptr inbounds %struct.doublecomplex, ptr %31, i64 %302
  call void @zcopy_(ptr noundef nonnull %11, ptr noundef %299, ptr noundef nonnull @c__1, ptr noundef %303, ptr noundef nonnull %5) #5
  %304 = load i32, ptr %27, align 4, !tbaa !5
  %305 = mul nsw i32 %304, %29
  %306 = sext i32 %305 to i64
  %gep985 = getelementptr %struct.doublecomplex, ptr %invariant.gep972, i64 %306
  %307 = load i32, ptr %28, align 4, !tbaa !5
  %308 = mul nsw i32 %307, %29
  %309 = sext i32 %308 to i64
  %gep987 = getelementptr %struct.doublecomplex, ptr %invariant.gep972, i64 %309
  call void @zcopy_(ptr noundef nonnull %28, ptr noundef %gep985, ptr noundef nonnull @c__1, ptr noundef %gep987, ptr noundef nonnull @c__1) #5
  %310 = load i32, ptr %1, align 4, !tbaa !5
  %311 = load i32, ptr %27, align 4, !tbaa !5
  %312 = add i32 %310, 1
  %313 = sub i32 %312, %311
  store i32 %313, ptr %11, align 4, !tbaa !5
  %314 = mul nsw i32 %311, %29
  %315 = add nsw i32 %314, %311
  %316 = sext i32 %315 to i64
  %317 = getelementptr inbounds %struct.doublecomplex, ptr %31, i64 %316
  %318 = load i32, ptr %28, align 4, !tbaa !5
  %319 = add nsw i32 %318, %314
  %320 = sext i32 %319 to i64
  %321 = getelementptr inbounds %struct.doublecomplex, ptr %31, i64 %320
  call void @zswap_(ptr noundef nonnull %11, ptr noundef %317, ptr noundef nonnull %5, ptr noundef %321, ptr noundef nonnull %5) #5
  %322 = load i32, ptr %1, align 4, !tbaa !5
  %323 = load i32, ptr %27, align 4, !tbaa !5
  %324 = add i32 %322, 1
  %325 = sub i32 %324, %323
  store i32 %325, ptr %11, align 4, !tbaa !5
  %326 = mul nsw i32 %235, %33
  %327 = add nsw i32 %323, %326
  %328 = sext i32 %327 to i64
  %329 = getelementptr inbounds %struct.doublecomplex, ptr %35, i64 %328
  %330 = load i32, ptr %28, align 4, !tbaa !5
  %331 = add nsw i32 %330, %326
  %332 = sext i32 %331 to i64
  %333 = getelementptr inbounds %struct.doublecomplex, ptr %35, i64 %332
  call void @zswap_(ptr noundef nonnull %11, ptr noundef %329, ptr noundef nonnull %8, ptr noundef %333, ptr noundef nonnull %8) #5
  br label %334

334:                                              ; preds = %283, %280
  %335 = load i32, ptr %21, align 4, !tbaa !5
  br i1 %229, label %336, label %416

336:                                              ; preds = %334
  %337 = mul nsw i32 %335, %29
  %338 = sext i32 %337 to i64
  %gep989 = getelementptr %struct.doublecomplex, ptr %invariant.gep972, i64 %338
  call void @zcopy_(ptr noundef nonnull %21, ptr noundef %gep975, ptr noundef nonnull @c__1, ptr noundef %gep989, ptr noundef nonnull @c__1) #5
  %339 = load i32, ptr %21, align 4, !tbaa !5
  %340 = icmp sgt i32 %339, 1
  br i1 %340, label %341, label %.loopexit954

341:                                              ; preds = %336
  %342 = mul i32 %339, %47
  store i32 %342, ptr %11, align 4, !tbaa !5
  %343 = sext i32 %342 to i64
  %344 = getelementptr inbounds %struct.doublecomplex, ptr %31, i64 %343
  %345 = load double, ptr %344, align 8, !tbaa !11
  %346 = call { double, double } @Cd(ptr noundef nonnull %344)
  %347 = extractvalue { double, double } %346, 1
  %348 = insertelement <2 x double> poison, double %345, i64 0
  %349 = insertelement <2 x double> %348, double %347, i64 1
  %350 = fcmp oge <2 x double> %349, zeroinitializer
  %351 = fneg <2 x double> %349
  %352 = select <2 x i1> %350, <2 x double> %349, <2 x double> %351
  %shift1096 = shufflevector <2 x double> %352, <2 x double> poison, <2 x i32> <i32 1, i32 poison>
  %353 = fadd <2 x double> %352, %shift1096
  %354 = extractelement <2 x double> %353, i64 0
  %355 = fcmp ult double %354, %36
  br i1 %355, label %377, label %356

356:                                              ; preds = %341
  %357 = call { double, double } @Cd(ptr noundef nonnull @c_b1)
  %358 = extractvalue { double, double } %357, 0
  %359 = extractvalue { double, double } %357, 1
  %360 = load i32, ptr %21, align 4, !tbaa !5
  %361 = mul i32 %360, %47
  %362 = sext i32 %361 to i64
  %363 = getelementptr inbounds %struct.doublecomplex, ptr %31, i64 %362
  %364 = call { double, double } @Cd(ptr noundef %363)
  %365 = extractvalue { double, double } %364, 0
  %366 = extractvalue { double, double } %364, 1
  %367 = call { double, double } @__divdc3(double noundef %358, double noundef %359, double noundef %365, double noundef %366) #5
  %368 = extractvalue { double, double } %367, 0
  %369 = extractvalue { double, double } %367, 1
  %370 = call ptr @_pCd(ptr noundef nonnull %16)
  %371 = getelementptr inbounds i8, ptr %370, i64 8
  store double %368, ptr %370, align 8
  store double %369, ptr %371, align 8
  %372 = load <2 x double>, ptr %16, align 16, !tbaa !9
  store <2 x double> %372, ptr %23, align 16, !tbaa !9
  %373 = load i32, ptr %21, align 4, !tbaa !5
  %374 = add nsw i32 %373, -1
  store i32 %374, ptr %11, align 4, !tbaa !5
  %375 = mul nsw i32 %373, %29
  %376 = sext i32 %375 to i64
  %gep991 = getelementptr %struct.doublecomplex, ptr %invariant.gep972, i64 %376
  call void @zscal_(ptr noundef nonnull %11, ptr noundef nonnull %23, ptr noundef %gep991, ptr noundef nonnull @c__1) #5
  br label %.loopexit954

377:                                              ; preds = %341
  %378 = load i32, ptr %21, align 4, !tbaa !5
  %379 = mul i32 %378, %47
  store i32 %379, ptr %11, align 4, !tbaa !5
  %380 = sext i32 %379 to i64
  %381 = getelementptr inbounds %struct.doublecomplex, ptr %31, i64 %380
  %382 = load double, ptr %381, align 8, !tbaa !11
  %383 = fcmp une double %382, 0.000000e+00
  br i1 %383, label %388, label %384

384:                                              ; preds = %377
  %385 = getelementptr inbounds i8, ptr %381, i64 8
  %386 = load double, ptr %385, align 8, !tbaa !13
  %387 = fcmp une double %386, 0.000000e+00
  br i1 %387, label %388, label %.loopexit954

388:                                              ; preds = %384, %377
  %389 = add nsw i32 %378, -1
  store i32 %389, ptr %11, align 4, !tbaa !5
  %.not887969 = icmp slt i32 %378, 2
  br i1 %.not887969, label %.loopexit954, label %.lr.ph971

.lr.ph971:                                        ; preds = %388, %.lr.ph971
  %.0796970 = phi i32 [ %414, %.lr.ph971 ], [ 1, %388 ]
  %390 = load i32, ptr %21, align 4, !tbaa !5
  %391 = mul nsw i32 %390, %29
  %392 = add nsw i32 %391, %.0796970
  store i32 %392, ptr %12, align 4, !tbaa !5
  %393 = sext i32 %392 to i64
  %394 = getelementptr inbounds %struct.doublecomplex, ptr %31, i64 %393
  %395 = call { double, double } @Cd(ptr noundef %394)
  %396 = extractvalue { double, double } %395, 0
  %397 = extractvalue { double, double } %395, 1
  %398 = load i32, ptr %21, align 4, !tbaa !5
  %399 = mul i32 %398, %47
  %400 = sext i32 %399 to i64
  %401 = getelementptr inbounds %struct.doublecomplex, ptr %31, i64 %400
  %402 = call { double, double } @Cd(ptr noundef %401)
  %403 = extractvalue { double, double } %402, 0
  %404 = extractvalue { double, double } %402, 1
  %405 = call { double, double } @__divdc3(double noundef %396, double noundef %397, double noundef %403, double noundef %404) #5
  %406 = extractvalue { double, double } %405, 0
  %407 = extractvalue { double, double } %405, 1
  %408 = call ptr @_pCd(ptr noundef nonnull %16)
  %409 = getelementptr inbounds i8, ptr %408, i64 8
  store double %406, ptr %408, align 8
  store double %407, ptr %409, align 8
  %410 = load i32, ptr %12, align 4, !tbaa !5
  %411 = sext i32 %410 to i64
  %412 = getelementptr inbounds %struct.doublecomplex, ptr %31, i64 %411
  %413 = load <2 x double>, ptr %16, align 16, !tbaa !9
  store <2 x double> %413, ptr %412, align 8, !tbaa !9
  %414 = add nuw nsw i32 %.0796970, 1
  %415 = load i32, ptr %11, align 4, !tbaa !5
  %.not887.not = icmp slt i32 %.0796970, %415
  br i1 %.not887.not, label %.lr.ph971, label %.loopexit954, !llvm.loop !14

416:                                              ; preds = %334
  %417 = icmp sgt i32 %335, 2
  br i1 %417, label %418, label %..loopexit955_crit_edge

..loopexit955_crit_edge:                          ; preds = %416
  %.pre1055 = add nsw i32 %52, -1
  %.pre1056 = mul nsw i32 %.pre1055, %33
  br label %.loopexit955

418:                                              ; preds = %416
  %419 = add i32 %61, -1
  %420 = add i32 %419, %335
  store i32 %420, ptr %11, align 4, !tbaa !5
  %421 = sext i32 %420 to i64
  %422 = getelementptr inbounds %struct.doublecomplex, ptr %35, i64 %421
  %423 = load <2 x double>, ptr %422, align 8, !tbaa !9
  store <2 x double> %423, ptr %24, align 16, !tbaa !9
  %424 = add nsw i32 %335, %61
  %425 = sext i32 %424 to i64
  %426 = getelementptr inbounds %struct.doublecomplex, ptr %35, i64 %425
  %427 = call { double, double } @Cd(ptr noundef %426)
  %428 = extractvalue { double, double } %427, 0
  %429 = extractvalue { double, double } %427, 1
  %430 = call { double, double } @Cd(ptr noundef nonnull %24)
  %431 = extractvalue { double, double } %430, 0
  %432 = extractvalue { double, double } %430, 1
  %433 = call { double, double } @__divdc3(double noundef %428, double noundef %429, double noundef %431, double noundef %432) #5
  %434 = extractvalue { double, double } %433, 0
  %435 = extractvalue { double, double } %433, 1
  %436 = call ptr @_pCd(ptr noundef nonnull %16)
  %437 = getelementptr inbounds i8, ptr %436, i64 8
  store double %434, ptr %436, align 8
  store double %435, ptr %437, align 8
  %438 = load <2 x double>, ptr %16, align 16
  %439 = load double, ptr %46, align 8, !tbaa !13
  %440 = load i32, ptr %21, align 4, !tbaa !5
  %441 = add nsw i32 %52, -1
  %442 = mul nsw i32 %441, %33
  %443 = add i32 %442, -1
  %444 = add i32 %443, %440
  %445 = sext i32 %444 to i64
  %446 = getelementptr inbounds %struct.doublecomplex, ptr %35, i64 %445
  %447 = call { double, double } @Cd(ptr noundef %446)
  %448 = extractvalue { double, double } %447, 0
  %449 = extractvalue { double, double } %447, 1
  %450 = call { double, double } @Cd(ptr noundef nonnull %24)
  %451 = extractvalue { double, double } %450, 0
  %452 = extractvalue { double, double } %450, 1
  %453 = call { double, double } @__divdc3(double noundef %448, double noundef %449, double noundef %451, double noundef %452) #5
  %454 = extractvalue { double, double } %453, 0
  %455 = extractvalue { double, double } %453, 1
  %456 = call ptr @_pCd(ptr noundef nonnull %16)
  %457 = getelementptr inbounds i8, ptr %456, i64 8
  store double %454, ptr %456, align 8
  store double %455, ptr %457, align 8
  %458 = fneg double %439
  %459 = load <2 x double>, ptr %16, align 16, !tbaa !9
  %460 = insertelement <2 x double> poison, double %439, i64 0
  %461 = insertelement <2 x double> %460, double %458, i64 1
  %462 = fmul <2 x double> %459, %461
  %463 = shufflevector <2 x double> %462, <2 x double> poison, <2 x i32> <i32 1, i32 0>
  %464 = shufflevector <2 x double> %438, <2 x double> poison, <2 x i32> zeroinitializer
  %465 = call <2 x double> @llvm.fmuladd.v2f64(<2 x double> %464, <2 x double> %459, <2 x double> %463)
  store <2 x double> %465, ptr %18, align 16, !tbaa !9
  %466 = fadd <2 x double> %465, <double -1.000000e+00, double 0.000000e+00>
  store <2 x double> %466, ptr %17, align 16, !tbaa !9
  %467 = call { double, double } @Cd(ptr noundef nonnull @c_b1)
  %468 = extractvalue { double, double } %467, 0
  %469 = extractvalue { double, double } %467, 1
  %470 = call { double, double } @Cd(ptr noundef nonnull %17)
  %471 = extractvalue { double, double } %470, 0
  %472 = extractvalue { double, double } %470, 1
  %473 = call { double, double } @__divdc3(double noundef %468, double noundef %469, double noundef %471, double noundef %472) #5
  %474 = extractvalue { double, double } %473, 0
  %475 = extractvalue { double, double } %473, 1
  %476 = call ptr @_pCd(ptr noundef nonnull %16)
  %477 = getelementptr inbounds i8, ptr %476, i64 8
  store double %474, ptr %476, align 8
  store double %475, ptr %477, align 8
  %478 = load <2 x double>, ptr %16, align 16
  %479 = load double, ptr %46, align 8, !tbaa !13
  %480 = load i32, ptr %21, align 4, !tbaa !5
  %481 = add nsw i32 %480, -2
  store i32 %481, ptr %11, align 4, !tbaa !5
  store i32 1, ptr %20, align 4, !tbaa !5
  %.not886967 = icmp slt i32 %480, 3
  br i1 %.not886967, label %.loopexit955, label %.lr.ph

.lr.ph:                                           ; preds = %418
  %482 = fneg double %479
  %483 = shufflevector <2 x double> %459, <2 x double> poison, <2 x i32> zeroinitializer
  %484 = shufflevector <2 x double> %478, <2 x double> poison, <2 x i32> zeroinitializer
  %485 = insertelement <2 x double> poison, double %479, i64 0
  %486 = insertelement <2 x double> %485, double %482, i64 1
  %487 = shufflevector <2 x double> %459, <2 x double> poison, <2 x i32> <i32 1, i32 poison>
  %488 = fneg <2 x double> %459
  %489 = shufflevector <2 x double> %487, <2 x double> %488, <2 x i32> <i32 0, i32 3>
  br label %490

490:                                              ; preds = %.lr.ph, %490
  %491 = phi i32 [ 1, %.lr.ph ], [ %554, %490 ]
  %492 = load i32, ptr %21, align 4, !tbaa !5
  %493 = add nsw i32 %492, -1
  %494 = mul nsw i32 %493, %29
  %495 = add nsw i32 %494, %491
  store i32 %495, ptr %12, align 4, !tbaa !5
  %496 = add nsw i32 %491, %442
  store i32 %496, ptr %13, align 4, !tbaa !5
  %497 = sext i32 %496 to i64
  %498 = getelementptr inbounds %struct.doublecomplex, ptr %35, i64 %497
  %499 = add nsw i32 %491, %61
  store i32 %499, ptr %14, align 4, !tbaa !5
  %500 = sext i32 %499 to i64
  %501 = getelementptr inbounds %struct.doublecomplex, ptr %35, i64 %500
  %502 = load <2 x double>, ptr %498, align 8, !tbaa !9
  %503 = fmul <2 x double> %502, %461
  %504 = shufflevector <2 x double> %503, <2 x double> poison, <2 x i32> <i32 1, i32 0>
  %505 = call <2 x double> @llvm.fmuladd.v2f64(<2 x double> %464, <2 x double> %502, <2 x double> %504)
  %506 = load <2 x double>, ptr %501, align 8, !tbaa !9
  %507 = fsub <2 x double> %505, %506
  store <2 x double> %507, ptr %18, align 16, !tbaa !9
  %508 = call { double, double } @Cd(ptr noundef nonnull %18)
  %509 = extractvalue { double, double } %508, 0
  %510 = extractvalue { double, double } %508, 1
  %511 = call { double, double } @Cd(ptr noundef nonnull %24)
  %512 = extractvalue { double, double } %511, 0
  %513 = extractvalue { double, double } %511, 1
  %514 = call { double, double } @__divdc3(double noundef %509, double noundef %510, double noundef %512, double noundef %513) #5
  %515 = extractvalue { double, double } %514, 0
  %516 = extractvalue { double, double } %514, 1
  %517 = call ptr @_pCd(ptr noundef nonnull %17)
  %518 = getelementptr inbounds i8, ptr %517, i64 8
  store double %515, ptr %517, align 8
  store double %516, ptr %518, align 8
  %519 = load <2 x double>, ptr %17, align 16, !tbaa !9
  %520 = fmul <2 x double> %519, %486
  %521 = shufflevector <2 x double> %520, <2 x double> poison, <2 x i32> <i32 1, i32 0>
  %522 = call <2 x double> @llvm.fmuladd.v2f64(<2 x double> %484, <2 x double> %519, <2 x double> %521)
  store <2 x double> %522, ptr %16, align 16, !tbaa !9
  %523 = load i32, ptr %12, align 4, !tbaa !5
  %524 = sext i32 %523 to i64
  %525 = getelementptr inbounds %struct.doublecomplex, ptr %31, i64 %524
  store <2 x double> %522, ptr %525, align 8, !tbaa !9
  %526 = load i32, ptr %21, align 4, !tbaa !5
  %527 = mul nsw i32 %526, %29
  %528 = add nsw i32 %527, %491
  store i32 %528, ptr %12, align 4, !tbaa !5
  store i32 %499, ptr %13, align 4, !tbaa !5
  store i32 %496, ptr %14, align 4, !tbaa !5
  %529 = load <2 x double>, ptr %501, align 8, !tbaa !9
  %530 = fmul <2 x double> %529, %489
  %531 = shufflevector <2 x double> %530, <2 x double> poison, <2 x i32> <i32 1, i32 0>
  %532 = call <2 x double> @llvm.fmuladd.v2f64(<2 x double> %483, <2 x double> %529, <2 x double> %531)
  %533 = load <2 x double>, ptr %498, align 8, !tbaa !9
  %534 = fsub <2 x double> %532, %533
  store <2 x double> %534, ptr %18, align 16, !tbaa !9
  %535 = call { double, double } @Cd(ptr noundef nonnull %18)
  %536 = extractvalue { double, double } %535, 0
  %537 = extractvalue { double, double } %535, 1
  %538 = call { double, double } @Cd(ptr noundef nonnull %24)
  %539 = extractvalue { double, double } %538, 0
  %540 = extractvalue { double, double } %538, 1
  %541 = call { double, double } @__divdc3(double noundef %536, double noundef %537, double noundef %539, double noundef %540) #5
  %542 = extractvalue { double, double } %541, 0
  %543 = extractvalue { double, double } %541, 1
  %544 = call ptr @_pCd(ptr noundef nonnull %17)
  %545 = getelementptr inbounds i8, ptr %544, i64 8
  store double %542, ptr %544, align 8
  store double %543, ptr %545, align 8
  %546 = load <2 x double>, ptr %17, align 16, !tbaa !9
  %547 = fmul <2 x double> %546, %486
  %548 = shufflevector <2 x double> %547, <2 x double> poison, <2 x i32> <i32 1, i32 0>
  %549 = call <2 x double> @llvm.fmuladd.v2f64(<2 x double> %484, <2 x double> %546, <2 x double> %548)
  store <2 x double> %549, ptr %16, align 16, !tbaa !9
  %550 = load i32, ptr %12, align 4, !tbaa !5
  %551 = sext i32 %550 to i64
  %552 = getelementptr inbounds %struct.doublecomplex, ptr %31, i64 %551
  store <2 x double> %549, ptr %552, align 8, !tbaa !9
  %553 = load i32, ptr %20, align 4, !tbaa !5
  %554 = add nsw i32 %553, 1
  store i32 %554, ptr %20, align 4, !tbaa !5
  %555 = load i32, ptr %11, align 4, !tbaa !5
  %.not886.not = icmp slt i32 %553, %555
  br i1 %.not886.not, label %490, label %.loopexit955.loopexit, !llvm.loop !16

.loopexit954:                                     ; preds = %.lr.ph971, %388, %117, %356, %384, %336
  %.5809.ph = phi i32 [ %.4808, %336 ], [ %.4808, %384 ], [ %.4808, %356 ], [ %.0804, %117 ], [ %.4808, %388 ], [ %.4808, %.lr.ph971 ]
  %556 = load i32, ptr %28, align 4, !tbaa !5
  %557 = load i32, ptr %21, align 4, !tbaa !5
  %558 = sext i32 %557 to i64
  %559 = getelementptr inbounds i32, ptr %32, i64 %558
  store i32 %556, ptr %559, align 4, !tbaa !5
  br label %591

.loopexit955.loopexit:                            ; preds = %490
  %.pre1038 = load i32, ptr %21, align 4, !tbaa !5
  br label %.loopexit955

.loopexit955:                                     ; preds = %..loopexit955_crit_edge, %.loopexit955.loopexit, %418
  %.pre-phi1057 = phi i32 [ %.pre1056, %..loopexit955_crit_edge ], [ %442, %.loopexit955.loopexit ], [ %442, %418 ]
  %560 = phi i32 [ %335, %..loopexit955_crit_edge ], [ %.pre1038, %.loopexit955.loopexit ], [ %480, %418 ]
  %561 = add nsw i32 %560, -1
  %562 = mul i32 %561, %47
  %563 = add nsw i32 %561, %.pre-phi1057
  %564 = sext i32 %563 to i64
  %565 = getelementptr inbounds %struct.doublecomplex, ptr %35, i64 %564
  %566 = sext i32 %562 to i64
  %567 = getelementptr inbounds %struct.doublecomplex, ptr %31, i64 %566
  %568 = load <2 x double>, ptr %565, align 8, !tbaa !9
  store <2 x double> %568, ptr %567, align 8, !tbaa !9
  %569 = mul nsw i32 %560, %29
  %570 = add nsw i32 %561, %569
  %571 = add nsw i32 %561, %61
  %572 = sext i32 %571 to i64
  %573 = getelementptr inbounds %struct.doublecomplex, ptr %35, i64 %572
  %574 = sext i32 %570 to i64
  %575 = getelementptr inbounds %struct.doublecomplex, ptr %31, i64 %574
  %576 = load <2 x double>, ptr %573, align 8, !tbaa !9
  store <2 x double> %576, ptr %575, align 8, !tbaa !9
  %577 = mul i32 %560, %47
  store i32 %577, ptr %11, align 4, !tbaa !5
  %578 = add nsw i32 %560, %61
  store i32 %578, ptr %12, align 4, !tbaa !5
  %579 = sext i32 %578 to i64
  %580 = getelementptr inbounds %struct.doublecomplex, ptr %35, i64 %579
  %581 = sext i32 %577 to i64
  %582 = getelementptr inbounds %struct.doublecomplex, ptr %31, i64 %581
  %583 = load <2 x double>, ptr %580, align 8, !tbaa !9
  store <2 x double> %583, ptr %582, align 8, !tbaa !9
  %584 = load i32, ptr %22, align 4, !tbaa !5
  %585 = sub nsw i32 0, %584
  %586 = sext i32 %560 to i64
  %587 = getelementptr inbounds i32, ptr %32, i64 %586
  store i32 %585, ptr %587, align 4, !tbaa !5
  %588 = load i32, ptr %28, align 4, !tbaa !5
  %589 = sub nsw i32 0, %588
  %590 = getelementptr i8, ptr %587, i64 -4
  store i32 %589, ptr %590, align 4, !tbaa !5
  br label %591

591:                                              ; preds = %.loopexit955, %.loopexit954
  %592 = phi i32 [ %560, %.loopexit955 ], [ %557, %.loopexit954 ]
  %.3801.neg907 = phi i32 [ -2, %.loopexit955 ], [ -1, %.loopexit954 ]
  %.5809905 = phi i32 [ %.4808, %.loopexit955 ], [ %.5809.ph, %.loopexit954 ]
  %593 = add i32 %592, %.3801.neg907
  %.pre = load i32, ptr %1, align 4, !tbaa !5
  br label %48

594:                                              ; preds = %54, %57
  %595 = sub i32 0, %50
  store i32 %595, ptr %11, align 4, !tbaa !5
  %596 = add i32 %.fr888, -1
  %597 = srem i32 %596, %50
  %598 = sub i32 %.fr888, %597
  %599 = icmp slt i32 %595, 0
  %600 = icmp sgt i32 %598, 0
  %601 = icmp slt i32 %598, 2
  %.in8901001 = select i1 %599, i1 %600, i1 %601
  br i1 %.in8901001, label %.lr.ph1004, label %._crit_edge1005

.lr.ph1004:                                       ; preds = %594
  %602 = add nsw i32 %52, 1
  %603 = mul nsw i32 %602, %33
  %604 = sext i32 %603 to i64
  %605 = sext i32 %29 to i64
  %invariant.gep = getelementptr %struct.doublecomplex, ptr %35, i64 %604
  br label %606

606:                                              ; preds = %.lr.ph1004, %643
  %607 = phi i32 [ %598, %.lr.ph1004 ], [ %645, %643 ]
  %608 = load i32, ptr %2, align 4, !tbaa !5
  %609 = load i32, ptr %21, align 4, !tbaa !5
  %610 = sub nsw i32 %609, %607
  %611 = add nsw i32 %610, 1
  store i32 %611, ptr %13, align 4, !tbaa !5
  %612 = call i32 @llvm.smin.i32(i32 %608, i32 %611)
  store i32 %612, ptr %26, align 4, !tbaa !5
  %613 = add i32 %607, -1
  %614 = add i32 %613, %612
  store i32 %614, ptr %12, align 4, !tbaa !5
  %.not895994 = icmp sgt i32 %607, %614
  br i1 %.not895994, label %._crit_edge, label %.lr.ph996.preheader

.lr.ph996.preheader:                              ; preds = %606
  %615 = sext i32 %607 to i64
  %invariant.gep1069 = getelementptr %struct.doublecomplex, ptr %31, i64 %615
  br label %.lr.ph996

.lr.ph996:                                        ; preds = %.lr.ph996.preheader, %.lr.ph996
  %indvars.iv = phi i64 [ %615, %.lr.ph996.preheader ], [ %indvars.iv.next, %.lr.ph996 ]
  %616 = trunc nsw i64 %indvars.iv to i32
  %617 = add i32 %616, 1
  %618 = sub i32 %617, %607
  store i32 %618, ptr %13, align 4, !tbaa !5
  %619 = load i32, ptr %1, align 4, !tbaa !5
  %620 = load i32, ptr %21, align 4, !tbaa !5
  %621 = sub nsw i32 %619, %620
  store i32 %621, ptr %14, align 4, !tbaa !5
  store <2 x double> <double -1.000000e+00, double 0.000000e+00>, ptr %16, align 16, !tbaa !9
  %622 = add nsw i32 %620, 1
  %623 = mul nsw i32 %622, %29
  %624 = add nsw i32 %623, %607
  %625 = sext i32 %624 to i64
  %626 = getelementptr inbounds %struct.doublecomplex, ptr %31, i64 %625
  %gep1068 = getelementptr %struct.doublecomplex, ptr %invariant.gep, i64 %indvars.iv
  %627 = mul nsw i64 %indvars.iv, %605
  %gep1070 = getelementptr %struct.doublecomplex, ptr %invariant.gep1069, i64 %627
  call void @zgemv_(ptr noundef nonnull @.str.2, ptr noundef nonnull %13, ptr noundef nonnull %14, ptr noundef nonnull %16, ptr noundef %626, ptr noundef nonnull %5, ptr noundef %gep1068, ptr noundef nonnull %8, ptr noundef nonnull @c_b1, ptr noundef %gep1070, ptr noundef nonnull @c__1) #5
  %indvars.iv.next = add nsw i64 %indvars.iv, 1
  %628 = load i32, ptr %12, align 4, !tbaa !5
  %629 = sext i32 %628 to i64
  %.not895.not = icmp slt i64 %indvars.iv, %629
  br i1 %.not895.not, label %.lr.ph996, label %._crit_edge, !llvm.loop !17

._crit_edge:                                      ; preds = %.lr.ph996, %606
  %630 = icmp sgt i32 %607, 1
  br i1 %630, label %631, label %643

631:                                              ; preds = %._crit_edge
  store i32 %613, ptr %12, align 4, !tbaa !5
  %632 = load i32, ptr %1, align 4, !tbaa !5
  %633 = load i32, ptr %21, align 4, !tbaa !5
  %634 = sub nsw i32 %632, %633
  store i32 %634, ptr %13, align 4, !tbaa !5
  store <2 x double> <double -1.000000e+00, double 0.000000e+00>, ptr %16, align 16, !tbaa !9
  %635 = add nsw i32 %633, 1
  %636 = mul nsw i32 %635, %29
  %637 = sext i32 %636 to i64
  %gep998 = getelementptr %struct.doublecomplex, ptr %invariant.gep972, i64 %637
  %638 = add nsw i32 %607, %603
  %639 = sext i32 %638 to i64
  %640 = getelementptr inbounds %struct.doublecomplex, ptr %35, i64 %639
  %641 = mul nsw i32 %607, %29
  %642 = sext i32 %641 to i64
  %gep1000 = getelementptr %struct.doublecomplex, ptr %invariant.gep972, i64 %642
  call void @zgemm_(ptr noundef nonnull @.str.2, ptr noundef nonnull @.str.3, ptr noundef nonnull %12, ptr noundef nonnull %26, ptr noundef nonnull %13, ptr noundef nonnull %16, ptr noundef %gep998, ptr noundef nonnull %5, ptr noundef %640, ptr noundef nonnull %8, ptr noundef nonnull @c_b1, ptr noundef %gep1000, ptr noundef nonnull %5) #5
  br label %643

643:                                              ; preds = %._crit_edge, %631
  %644 = load i32, ptr %11, align 4, !tbaa !5
  %645 = add nsw i32 %607, %644
  %646 = icmp slt i32 %644, 0
  %647 = icmp sgt i32 %645, 0
  %648 = icmp slt i32 %645, 2
  %.in890 = select i1 %646, i1 %647, i1 %648
  br i1 %.in890, label %606, label %._crit_edge1005.loopexit, !llvm.loop !18

._crit_edge1005.loopexit:                         ; preds = %643
  %.pre1040 = load i32, ptr %21, align 4, !tbaa !5
  br label %._crit_edge1005

._crit_edge1005:                                  ; preds = %._crit_edge1005.loopexit, %594
  %649 = phi i32 [ %.pre1040, %._crit_edge1005.loopexit ], [ %.fr888, %594 ]
  %650 = add nsw i32 %649, 1
  br label %651

651:                                              ; preds = %687, %._crit_edge1005
  %652 = phi i32 [ %666, %687 ], [ %650, %._crit_edge1005 ]
  %653 = sext i32 %652 to i64
  %654 = getelementptr inbounds i32, ptr %32, i64 %653
  %655 = load i32, ptr %654, align 4, !tbaa !5
  %656 = icmp slt i32 %655, 0
  br i1 %656, label %657, label %664

657:                                              ; preds = %651
  %658 = sub nsw i32 0, %655
  %659 = add nsw i32 %652, 1
  %660 = sext i32 %659 to i64
  %661 = getelementptr inbounds i32, ptr %32, i64 %660
  %662 = load i32, ptr %661, align 4, !tbaa !5
  %663 = sub nsw i32 0, %662
  br label %664

664:                                              ; preds = %657, %651
  %665 = phi i32 [ %659, %657 ], [ %652, %651 ]
  %.0788 = phi i32 [ %663, %657 ], [ 1, %651 ]
  %.0786 = phi i32 [ %658, %657 ], [ %655, %651 ]
  %666 = add nsw i32 %665, 1
  %.not891 = icmp ne i32 %.0786, %652
  %.pre1042.pre1053 = load i32, ptr %1, align 4, !tbaa !5
  %.not892.not = icmp slt i32 %665, %.pre1042.pre1053
  %or.cond1075 = select i1 %.not891, i1 %.not892.not, i1 false
  br i1 %or.cond1075, label %667, label %676

667:                                              ; preds = %664
  %668 = sub i32 %.pre1042.pre1053, %665
  store i32 %668, ptr %11, align 4, !tbaa !5
  %669 = mul nsw i32 %666, %29
  %670 = add nsw i32 %669, %.0786
  %671 = sext i32 %670 to i64
  %672 = getelementptr inbounds %struct.doublecomplex, ptr %31, i64 %671
  %673 = add nsw i32 %669, %652
  %674 = sext i32 %673 to i64
  %675 = getelementptr inbounds %struct.doublecomplex, ptr %31, i64 %674
  call void @zswap_(ptr noundef nonnull %11, ptr noundef %672, ptr noundef nonnull %5, ptr noundef %675, ptr noundef nonnull %5) #5
  %.pre1042.pre = load i32, ptr %1, align 4, !tbaa !5
  br label %676

676:                                              ; preds = %667, %664
  %.pre1042 = phi i32 [ %.pre1042.pre, %667 ], [ %.pre1042.pre1053, %664 ]
  %677 = icmp ne i32 %.0788, %665
  %or.cond4 = and i1 %656, %677
  br i1 %or.cond4, label %678, label %687

678:                                              ; preds = %676
  %reass.sub1019 = sub i32 %.pre1042, %666
  %679 = add i32 %reass.sub1019, 1
  store i32 %679, ptr %11, align 4, !tbaa !5
  %680 = mul nsw i32 %666, %29
  %681 = add nsw i32 %680, %.0788
  %682 = sext i32 %681 to i64
  %683 = getelementptr inbounds %struct.doublecomplex, ptr %31, i64 %682
  %684 = add nsw i32 %665, %680
  %685 = sext i32 %684 to i64
  %686 = getelementptr inbounds %struct.doublecomplex, ptr %31, i64 %685
  call void @zswap_(ptr noundef nonnull %11, ptr noundef %683, ptr noundef nonnull %5, ptr noundef %686, ptr noundef nonnull %5) #5
  %.pre1041 = load i32, ptr %1, align 4, !tbaa !5
  br label %687

687:                                              ; preds = %678, %676
  %688 = phi i32 [ %.pre1041, %678 ], [ %.pre1042, %676 ]
  %.not893.not = icmp slt i32 %665, %688
  br i1 %.not893.not, label %651, label %689

689:                                              ; preds = %687
  %690 = load i32, ptr %21, align 4, !tbaa !5
  %691 = sub nsw i32 %688, %690
  br label %1409

.lr.ph1089:                                       ; preds = %.preheader953, %1309
  %.pre10431088 = phi i32 [ %.pre1043, %1309 ], [ %.pre10431083, %.preheader953 ]
  %.68101087 = phi i32 [ %.11926, %1309 ], [ undef, %.preheader953 ]
  %storemerge1086 = phi i32 [ %1311, %1309 ], [ 1, %.preheader953 ]
  store i32 %storemerge1086, ptr %22, align 4, !tbaa !5
  %reass.sub1020 = sub i32 %.pre10431088, %storemerge1086
  %692 = add i32 %reass.sub1020, 1
  store i32 %692, ptr %11, align 4, !tbaa !5
  %693 = mul i32 %storemerge1086, %38
  %694 = sext i32 %693 to i64
  %695 = getelementptr inbounds %struct.doublecomplex, ptr %31, i64 %694
  %696 = mul i32 %storemerge1086, %39
  %697 = sext i32 %696 to i64
  %698 = getelementptr inbounds %struct.doublecomplex, ptr %35, i64 %697
  call void @zcopy_(ptr noundef nonnull %11, ptr noundef %695, ptr noundef nonnull @c__1, ptr noundef %698, ptr noundef nonnull @c__1) #5
  %699 = load i32, ptr %21, align 4, !tbaa !5
  %700 = icmp sgt i32 %699, 1
  br i1 %700, label %701, label %714

701:                                              ; preds = %.lr.ph1089
  %702 = load i32, ptr %1, align 4, !tbaa !5
  %reass.sub1021 = sub i32 %702, %699
  %703 = add i32 %reass.sub1021, 1
  store i32 %703, ptr %11, align 4, !tbaa !5
  %704 = add nsw i32 %699, -1
  store i32 %704, ptr %12, align 4, !tbaa !5
  store <2 x double> <double -1.000000e+00, double 0.000000e+00>, ptr %16, align 16, !tbaa !9
  %705 = add nsw i32 %699, %29
  %706 = sext i32 %705 to i64
  %707 = getelementptr inbounds %struct.doublecomplex, ptr %31, i64 %706
  %708 = add nsw i32 %699, %33
  %709 = sext i32 %708 to i64
  %710 = getelementptr inbounds %struct.doublecomplex, ptr %35, i64 %709
  %711 = mul i32 %699, %39
  %712 = sext i32 %711 to i64
  %713 = getelementptr inbounds %struct.doublecomplex, ptr %35, i64 %712
  call void @zgemv_(ptr noundef nonnull @.str.2, ptr noundef nonnull %11, ptr noundef nonnull %12, ptr noundef nonnull %16, ptr noundef %707, ptr noundef nonnull %5, ptr noundef %710, ptr noundef nonnull %8, ptr noundef nonnull @c_b1, ptr noundef %713, ptr noundef nonnull @c__1) #5
  %.pre1044 = load i32, ptr %21, align 4, !tbaa !5
  br label %714

714:                                              ; preds = %701, %.lr.ph1089
  %715 = phi i32 [ %.pre1044, %701 ], [ %699, %.lr.ph1089 ]
  %716 = mul i32 %715, %39
  store i32 %716, ptr %11, align 4, !tbaa !5
  %717 = sext i32 %716 to i64
  %718 = getelementptr inbounds %struct.doublecomplex, ptr %35, i64 %717
  %719 = load double, ptr %718, align 8, !tbaa !11
  %720 = fcmp oge double %719, 0.000000e+00
  %721 = fneg double %719
  %722 = select i1 %720, double %719, double %721
  %723 = call { double, double } @Cd(ptr noundef nonnull %718)
  %724 = extractvalue { double, double } %723, 1
  %725 = fcmp oge double %724, 0.000000e+00
  %726 = fneg double %724
  %727 = select i1 %725, double %724, double %726
  %728 = fadd double %722, %727
  %729 = load i32, ptr %21, align 4, !tbaa !5
  %730 = load i32, ptr %1, align 4, !tbaa !5
  %731 = icmp slt i32 %729, %730
  br i1 %731, label %732, label %756

732:                                              ; preds = %714
  %733 = sub nsw i32 %730, %729
  store i32 %733, ptr %11, align 4, !tbaa !5
  %734 = add nsw i32 %729, 1
  %735 = mul nsw i32 %729, %33
  %736 = add nsw i32 %734, %735
  %737 = sext i32 %736 to i64
  %738 = getelementptr inbounds %struct.doublecomplex, ptr %35, i64 %737
  %739 = call i32 @izamax_(ptr noundef nonnull %11, ptr noundef %738, ptr noundef nonnull @c__1) #5
  %740 = add nsw i32 %739, %729
  store i32 %740, ptr %19, align 4, !tbaa !5
  %741 = load i32, ptr %21, align 4, !tbaa !5
  %742 = mul nsw i32 %741, %33
  %743 = add nsw i32 %742, %740
  store i32 %743, ptr %11, align 4, !tbaa !5
  %744 = sext i32 %743 to i64
  %745 = getelementptr inbounds %struct.doublecomplex, ptr %35, i64 %744
  %746 = load double, ptr %745, align 8, !tbaa !11
  %747 = call { double, double } @Cd(ptr noundef nonnull %745)
  %748 = extractvalue { double, double } %747, 1
  %749 = insertelement <2 x double> poison, double %746, i64 0
  %750 = insertelement <2 x double> %749, double %748, i64 1
  %751 = fcmp oge <2 x double> %750, zeroinitializer
  %752 = fneg <2 x double> %750
  %753 = select <2 x i1> %751, <2 x double> %750, <2 x double> %752
  %shift1097 = shufflevector <2 x double> %753, <2 x double> poison, <2 x i32> <i32 1, i32 poison>
  %754 = fadd <2 x double> %753, %shift1097
  %755 = extractelement <2 x double> %754, i64 0
  br label %756

756:                                              ; preds = %714, %732
  %.3793 = phi double [ %755, %732 ], [ 0.000000e+00, %714 ]
  %757 = fcmp oge double %728, %.3793
  %758 = select i1 %757, double %728, double %.3793
  %759 = fcmp oeq double %758, 0.000000e+00
  br i1 %759, label %760, label %773

760:                                              ; preds = %756
  %761 = load i32, ptr %9, align 4, !tbaa !5
  %762 = icmp eq i32 %761, 0
  %.pre1049 = load i32, ptr %21, align 4, !tbaa !5
  br i1 %762, label %763, label %764

763:                                              ; preds = %760
  store i32 %.pre1049, ptr %9, align 4, !tbaa !5
  br label %764

764:                                              ; preds = %763, %760
  store i32 %.pre1049, ptr %28, align 4, !tbaa !5
  %765 = load i32, ptr %1, align 4, !tbaa !5
  %reass.sub1023 = sub i32 %765, %.pre1049
  %766 = add i32 %reass.sub1023, 1
  store i32 %766, ptr %11, align 4, !tbaa !5
  %767 = mul i32 %.pre1049, %39
  %768 = sext i32 %767 to i64
  %769 = getelementptr inbounds %struct.doublecomplex, ptr %35, i64 %768
  %770 = mul i32 %.pre1049, %38
  %771 = sext i32 %770 to i64
  %772 = getelementptr inbounds %struct.doublecomplex, ptr %31, i64 %771
  call void @zcopy_(ptr noundef nonnull %11, ptr noundef %769, ptr noundef nonnull @c__1, ptr noundef %772, ptr noundef nonnull @c__1) #5
  br label %.loopexit

773:                                              ; preds = %756
  %774 = fmul double %.3793, 0x3FE47E0F66AFED07
  %775 = fcmp olt double %728, %774
  br i1 %775, label %.preheader, label %.thread914

.thread914:                                       ; preds = %773
  %776 = load i32, ptr %21, align 4, !tbaa !5
  store i32 %776, ptr %28, align 4, !tbaa !5
  store i32 %776, ptr %27, align 4, !tbaa !5
  br label %974

.preheader:                                       ; preds = %773, %909
  %.7811 = phi i32 [ %.9813, %909 ], [ %.68101087, %773 ]
  %.4 = phi double [ %.3, %909 ], [ %.3793, %773 ]
  %777 = load i32, ptr %19, align 4, !tbaa !5
  %778 = load i32, ptr %21, align 4, !tbaa !5
  %779 = sub nsw i32 %777, %778
  store i32 %779, ptr %11, align 4, !tbaa !5
  %780 = mul nsw i32 %778, %29
  %781 = add nsw i32 %780, %777
  %782 = sext i32 %781 to i64
  %783 = getelementptr inbounds %struct.doublecomplex, ptr %31, i64 %782
  %784 = add nsw i32 %778, 1
  %785 = mul nsw i32 %784, %33
  %786 = add nsw i32 %785, %778
  %787 = sext i32 %786 to i64
  %788 = getelementptr inbounds %struct.doublecomplex, ptr %35, i64 %787
  call void @zcopy_(ptr noundef nonnull %11, ptr noundef %783, ptr noundef nonnull %5, ptr noundef %788, ptr noundef nonnull @c__1) #5
  %789 = load i32, ptr %1, align 4, !tbaa !5
  %790 = load i32, ptr %19, align 4, !tbaa !5
  %791 = add i32 %789, 1
  %792 = sub i32 %791, %790
  store i32 %792, ptr %11, align 4, !tbaa !5
  %793 = mul i32 %790, %38
  %794 = sext i32 %793 to i64
  %795 = getelementptr inbounds %struct.doublecomplex, ptr %31, i64 %794
  %796 = load i32, ptr %21, align 4, !tbaa !5
  %797 = add nsw i32 %796, 1
  %798 = mul nsw i32 %797, %33
  %799 = add nsw i32 %798, %790
  %800 = sext i32 %799 to i64
  %801 = getelementptr inbounds %struct.doublecomplex, ptr %35, i64 %800
  call void @zcopy_(ptr noundef nonnull %11, ptr noundef %795, ptr noundef nonnull @c__1, ptr noundef %801, ptr noundef nonnull @c__1) #5
  %802 = load i32, ptr %21, align 4, !tbaa !5
  %803 = icmp sgt i32 %802, 1
  br i1 %803, label %804, label %820

804:                                              ; preds = %.preheader
  %805 = load i32, ptr %1, align 4, !tbaa !5
  %reass.sub1022 = sub i32 %805, %802
  %806 = add i32 %reass.sub1022, 1
  store i32 %806, ptr %11, align 4, !tbaa !5
  %807 = add nsw i32 %802, -1
  store i32 %807, ptr %12, align 4, !tbaa !5
  store <2 x double> <double -1.000000e+00, double 0.000000e+00>, ptr %16, align 16, !tbaa !9
  %808 = add nsw i32 %802, %29
  %809 = sext i32 %808 to i64
  %810 = getelementptr inbounds %struct.doublecomplex, ptr %31, i64 %809
  %811 = load i32, ptr %19, align 4, !tbaa !5
  %812 = add nsw i32 %811, %33
  %813 = sext i32 %812 to i64
  %814 = getelementptr inbounds %struct.doublecomplex, ptr %35, i64 %813
  %815 = add nuw nsw i32 %802, 1
  %816 = mul nsw i32 %815, %33
  %817 = add nsw i32 %816, %802
  %818 = sext i32 %817 to i64
  %819 = getelementptr inbounds %struct.doublecomplex, ptr %35, i64 %818
  call void @zgemv_(ptr noundef nonnull @.str.2, ptr noundef nonnull %11, ptr noundef nonnull %12, ptr noundef nonnull %16, ptr noundef %810, ptr noundef nonnull %5, ptr noundef %814, ptr noundef nonnull %8, ptr noundef nonnull @c_b1, ptr noundef %819, ptr noundef nonnull @c__1) #5
  %.pre1045 = load i32, ptr %21, align 4, !tbaa !5
  br label %820

820:                                              ; preds = %804, %.preheader
  %821 = phi i32 [ %.pre1045, %804 ], [ %802, %.preheader ]
  %822 = load i32, ptr %19, align 4, !tbaa !5
  %.not867 = icmp eq i32 %822, %821
  br i1 %.not867, label %849, label %823

823:                                              ; preds = %820
  %824 = sub nsw i32 %822, %821
  store i32 %824, ptr %11, align 4, !tbaa !5
  %825 = add nsw i32 %821, -1
  %826 = add nsw i32 %821, 1
  %827 = mul nsw i32 %826, %33
  %828 = add nsw i32 %827, %821
  %829 = sext i32 %828 to i64
  %830 = getelementptr inbounds %struct.doublecomplex, ptr %35, i64 %829
  %831 = call i32 @izamax_(ptr noundef nonnull %11, ptr noundef %830, ptr noundef nonnull @c__1) #5
  %832 = add nsw i32 %825, %831
  %833 = load i32, ptr %21, align 4, !tbaa !5
  %834 = add nsw i32 %833, 1
  %835 = mul nsw i32 %834, %33
  %836 = add nsw i32 %835, %832
  store i32 %836, ptr %11, align 4, !tbaa !5
  %837 = sext i32 %836 to i64
  %838 = getelementptr inbounds %struct.doublecomplex, ptr %35, i64 %837
  %839 = load double, ptr %838, align 8, !tbaa !11
  %840 = call { double, double } @Cd(ptr noundef nonnull %838)
  %841 = extractvalue { double, double } %840, 1
  %842 = insertelement <2 x double> poison, double %839, i64 0
  %843 = insertelement <2 x double> %842, double %841, i64 1
  %844 = fcmp oge <2 x double> %843, zeroinitializer
  %845 = fneg <2 x double> %843
  %846 = select <2 x i1> %844, <2 x double> %843, <2 x double> %845
  %shift1098 = shufflevector <2 x double> %846, <2 x double> poison, <2 x i32> <i32 1, i32 poison>
  %847 = fadd <2 x double> %846, %shift1098
  %848 = extractelement <2 x double> %847, i64 0
  %.pre1046 = load i32, ptr %19, align 4, !tbaa !5
  br label %849

849:                                              ; preds = %820, %823
  %850 = phi i32 [ %.pre1046, %823 ], [ %821, %820 ]
  %.8812 = phi i32 [ %832, %823 ], [ %.7811, %820 ]
  %.2 = phi double [ %848, %823 ], [ 0.000000e+00, %820 ]
  %851 = load i32, ptr %1, align 4, !tbaa !5
  %852 = icmp slt i32 %850, %851
  br i1 %852, label %853, label %882

853:                                              ; preds = %849
  %854 = sub nsw i32 %851, %850
  store i32 %854, ptr %11, align 4, !tbaa !5
  %855 = add nsw i32 %850, 1
  %856 = load i32, ptr %21, align 4, !tbaa !5
  %857 = add nsw i32 %856, 1
  %858 = mul nsw i32 %857, %33
  %859 = add nsw i32 %855, %858
  %860 = sext i32 %859 to i64
  %861 = getelementptr inbounds %struct.doublecomplex, ptr %35, i64 %860
  %862 = call i32 @izamax_(ptr noundef nonnull %11, ptr noundef %861, ptr noundef nonnull @c__1) #5
  %863 = add nsw i32 %862, %850
  %864 = load i32, ptr %21, align 4, !tbaa !5
  %865 = add nsw i32 %864, 1
  %866 = mul nsw i32 %865, %33
  %867 = add nsw i32 %866, %863
  store i32 %867, ptr %11, align 4, !tbaa !5
  %868 = sext i32 %867 to i64
  %869 = getelementptr inbounds %struct.doublecomplex, ptr %35, i64 %868
  %870 = load double, ptr %869, align 8, !tbaa !11
  %871 = call { double, double } @Cd(ptr noundef nonnull %869)
  %872 = extractvalue { double, double } %871, 1
  %873 = insertelement <2 x double> poison, double %870, i64 0
  %874 = insertelement <2 x double> %873, double %872, i64 1
  %875 = fcmp oge <2 x double> %874, zeroinitializer
  %876 = fneg <2 x double> %874
  %877 = select <2 x i1> %875, <2 x double> %874, <2 x double> %876
  %shift1099 = shufflevector <2 x double> %877, <2 x double> poison, <2 x i32> <i32 1, i32 poison>
  %878 = fadd <2 x double> %877, %shift1099
  %879 = extractelement <2 x double> %878, i64 0
  %880 = fcmp ogt double %879, %.2
  br i1 %880, label %881, label %882

881:                                              ; preds = %853
  br label %882

882:                                              ; preds = %853, %881, %849
  %.9813 = phi i32 [ %863, %881 ], [ %.8812, %853 ], [ %.8812, %849 ]
  %.3 = phi double [ %879, %881 ], [ %.2, %853 ], [ %.2, %849 ]
  %883 = load i32, ptr %19, align 4, !tbaa !5
  %884 = load i32, ptr %21, align 4, !tbaa !5
  %885 = add nsw i32 %884, 1
  %886 = mul nsw i32 %885, %33
  %887 = add nsw i32 %886, %883
  store i32 %887, ptr %11, align 4, !tbaa !5
  %888 = sext i32 %887 to i64
  %889 = getelementptr inbounds %struct.doublecomplex, ptr %35, i64 %888
  %890 = load double, ptr %889, align 8, !tbaa !11
  %891 = call { double, double } @Cd(ptr noundef nonnull %889)
  %892 = extractvalue { double, double } %891, 1
  %893 = insertelement <2 x double> poison, double %890, i64 0
  %894 = insertelement <2 x double> %893, double %892, i64 1
  %895 = fcmp oge <2 x double> %894, zeroinitializer
  %896 = fneg <2 x double> %894
  %897 = select <2 x i1> %895, <2 x double> %894, <2 x double> %896
  %shift1100 = shufflevector <2 x double> %897, <2 x double> poison, <2 x i32> <i32 1, i32 poison>
  %898 = fadd <2 x double> %897, %shift1100
  %899 = extractelement <2 x double> %898, i64 0
  %900 = fmul double %.3, 0x3FE47E0F66AFED07
  %901 = fcmp olt double %899, %900
  br i1 %901, label %902, label %922

902:                                              ; preds = %882
  %903 = load i32, ptr %22, align 4, !tbaa !5
  %904 = icmp ne i32 %903, %.9813
  %905 = fcmp ugt double %.3, %.4
  %or.cond897 = select i1 %904, i1 %905, i1 false
  %906 = load i32, ptr %19, align 4, !tbaa !5
  br i1 %or.cond897, label %909, label %.thread919

.thread919:                                       ; preds = %902
  store i32 %906, ptr %28, align 4, !tbaa !5
  %907 = load i32, ptr %21, align 4, !tbaa !5
  %908 = add nsw i32 %907, 1
  store i32 %908, ptr %27, align 4, !tbaa !5
  %.not869 = icmp eq i32 %903, %907
  br i1 %.not869, label %974, label %937

909:                                              ; preds = %902
  store i32 %906, ptr %22, align 4, !tbaa !5
  store i32 %.9813, ptr %19, align 4, !tbaa !5
  %910 = load i32, ptr %1, align 4, !tbaa !5
  %911 = load i32, ptr %21, align 4, !tbaa !5
  %912 = add i32 %910, 1
  %913 = sub i32 %912, %911
  store i32 %913, ptr %11, align 4, !tbaa !5
  %914 = add nsw i32 %911, 1
  %915 = mul nsw i32 %914, %33
  %916 = add nsw i32 %915, %911
  %917 = sext i32 %916 to i64
  %918 = getelementptr inbounds %struct.doublecomplex, ptr %35, i64 %917
  %919 = mul i32 %911, %39
  %920 = sext i32 %919 to i64
  %921 = getelementptr inbounds %struct.doublecomplex, ptr %35, i64 %920
  call void @zcopy_(ptr noundef nonnull %11, ptr noundef %918, ptr noundef nonnull @c__1, ptr noundef %921, ptr noundef nonnull @c__1) #5
  br label %.preheader

922:                                              ; preds = %882
  %923 = load i32, ptr %19, align 4, !tbaa !5
  store i32 %923, ptr %28, align 4, !tbaa !5
  %924 = load i32, ptr %1, align 4, !tbaa !5
  %925 = load i32, ptr %21, align 4, !tbaa !5
  %926 = add i32 %924, 1
  %927 = sub i32 %926, %925
  store i32 %927, ptr %11, align 4, !tbaa !5
  %928 = add nsw i32 %925, 1
  %929 = mul nsw i32 %928, %33
  %930 = add nsw i32 %929, %925
  %931 = sext i32 %930 to i64
  %932 = getelementptr inbounds %struct.doublecomplex, ptr %35, i64 %931
  %933 = mul i32 %925, %39
  %934 = sext i32 %933 to i64
  %935 = getelementptr inbounds %struct.doublecomplex, ptr %35, i64 %934
  call void @zcopy_(ptr noundef nonnull %11, ptr noundef %932, ptr noundef nonnull @c__1, ptr noundef %935, ptr noundef nonnull @c__1) #5
  %936 = load i32, ptr %21, align 4, !tbaa !5
  store i32 %936, ptr %27, align 4, !tbaa !5
  br label %974

937:                                              ; preds = %.thread919
  %938 = sub nsw i32 %903, %907
  store i32 %938, ptr %11, align 4, !tbaa !5
  %939 = mul nsw i32 %907, %29
  %940 = add nsw i32 %939, %907
  %941 = sext i32 %940 to i64
  %942 = getelementptr inbounds %struct.doublecomplex, ptr %31, i64 %941
  %943 = add nsw i32 %903, %939
  %944 = sext i32 %943 to i64
  %945 = getelementptr inbounds %struct.doublecomplex, ptr %31, i64 %944
  call void @zcopy_(ptr noundef nonnull %11, ptr noundef %942, ptr noundef nonnull @c__1, ptr noundef %945, ptr noundef nonnull %5) #5
  %946 = load i32, ptr %1, align 4, !tbaa !5
  %947 = load i32, ptr %22, align 4, !tbaa !5
  %948 = add i32 %946, 1
  %949 = sub i32 %948, %947
  store i32 %949, ptr %11, align 4, !tbaa !5
  %950 = load i32, ptr %21, align 4, !tbaa !5
  %951 = mul nsw i32 %950, %29
  %952 = add nsw i32 %951, %947
  %953 = sext i32 %952 to i64
  %954 = getelementptr inbounds %struct.doublecomplex, ptr %31, i64 %953
  %955 = mul i32 %947, %38
  %956 = sext i32 %955 to i64
  %957 = getelementptr inbounds %struct.doublecomplex, ptr %31, i64 %956
  call void @zcopy_(ptr noundef nonnull %11, ptr noundef %954, ptr noundef nonnull @c__1, ptr noundef %957, ptr noundef nonnull @c__1) #5
  %958 = load i32, ptr %21, align 4, !tbaa !5
  %959 = add nsw i32 %958, %29
  %960 = sext i32 %959 to i64
  %961 = getelementptr inbounds %struct.doublecomplex, ptr %31, i64 %960
  %962 = load i32, ptr %22, align 4, !tbaa !5
  %963 = add nsw i32 %962, %29
  %964 = sext i32 %963 to i64
  %965 = getelementptr inbounds %struct.doublecomplex, ptr %31, i64 %964
  call void @zswap_(ptr noundef nonnull %21, ptr noundef %961, ptr noundef nonnull %5, ptr noundef %965, ptr noundef nonnull %5) #5
  %966 = load i32, ptr %21, align 4, !tbaa !5
  %967 = add nsw i32 %966, %33
  %968 = sext i32 %967 to i64
  %969 = getelementptr inbounds %struct.doublecomplex, ptr %35, i64 %968
  %970 = load i32, ptr %22, align 4, !tbaa !5
  %971 = add nsw i32 %970, %33
  %972 = sext i32 %971 to i64
  %973 = getelementptr inbounds %struct.doublecomplex, ptr %35, i64 %972
  call void @zswap_(ptr noundef nonnull %27, ptr noundef %969, ptr noundef nonnull %8, ptr noundef %973, ptr noundef nonnull %8) #5
  %.pre1047 = load i32, ptr %27, align 4, !tbaa !5
  br label %974

974:                                              ; preds = %922, %.thread914, %937, %.thread919
  %975 = phi i32 [ %776, %.thread914 ], [ %.pre1047, %937 ], [ %908, %.thread919 ], [ %936, %922 ]
  %976 = phi i1 [ true, %.thread914 ], [ false, %937 ], [ false, %.thread919 ], [ true, %922 ]
  %.10917 = phi i32 [ %.68101087, %.thread914 ], [ %.9813, %937 ], [ %.9813, %.thread919 ], [ %.9813, %922 ]
  %977 = load i32, ptr %28, align 4, !tbaa !5
  %.not870 = icmp eq i32 %977, %975
  br i1 %.not870, label %1027, label %978

978:                                              ; preds = %974
  %979 = load i32, ptr %21, align 4, !tbaa !5
  %980 = mul nsw i32 %979, %29
  %981 = add nsw i32 %980, %977
  %982 = add nsw i32 %980, %975
  store i32 %982, ptr %12, align 4, !tbaa !5
  %983 = sext i32 %982 to i64
  %984 = getelementptr inbounds %struct.doublecomplex, ptr %31, i64 %983
  %985 = sext i32 %981 to i64
  %986 = getelementptr inbounds %struct.doublecomplex, ptr %31, i64 %985
  %987 = load <2 x double>, ptr %984, align 8, !tbaa !9
  store <2 x double> %987, ptr %986, align 8, !tbaa !9
  %988 = xor i32 %979, -1
  %989 = add i32 %977, %988
  store i32 %989, ptr %11, align 4, !tbaa !5
  %990 = add nsw i32 %979, 1
  %991 = mul nsw i32 %975, %29
  %992 = add nsw i32 %990, %991
  %993 = sext i32 %992 to i64
  %994 = getelementptr inbounds %struct.doublecomplex, ptr %31, i64 %993
  %995 = mul nsw i32 %990, %29
  %996 = add nsw i32 %995, %977
  %997 = sext i32 %996 to i64
  %998 = getelementptr inbounds %struct.doublecomplex, ptr %31, i64 %997
  call void @zcopy_(ptr noundef nonnull %11, ptr noundef %994, ptr noundef nonnull @c__1, ptr noundef %998, ptr noundef nonnull %5) #5
  %999 = load i32, ptr %1, align 4, !tbaa !5
  %1000 = load i32, ptr %28, align 4, !tbaa !5
  %1001 = add i32 %999, 1
  %1002 = sub i32 %1001, %1000
  store i32 %1002, ptr %11, align 4, !tbaa !5
  %1003 = load i32, ptr %27, align 4, !tbaa !5
  %1004 = mul nsw i32 %1003, %29
  %1005 = add nsw i32 %1004, %1000
  %1006 = sext i32 %1005 to i64
  %1007 = getelementptr inbounds %struct.doublecomplex, ptr %31, i64 %1006
  %1008 = mul i32 %1000, %38
  %1009 = sext i32 %1008 to i64
  %1010 = getelementptr inbounds %struct.doublecomplex, ptr %31, i64 %1009
  call void @zcopy_(ptr noundef nonnull %11, ptr noundef %1007, ptr noundef nonnull @c__1, ptr noundef %1010, ptr noundef nonnull @c__1) #5
  %1011 = load i32, ptr %27, align 4, !tbaa !5
  %1012 = add nsw i32 %1011, %29
  %1013 = sext i32 %1012 to i64
  %1014 = getelementptr inbounds %struct.doublecomplex, ptr %31, i64 %1013
  %1015 = load i32, ptr %28, align 4, !tbaa !5
  %1016 = add nsw i32 %1015, %29
  %1017 = sext i32 %1016 to i64
  %1018 = getelementptr inbounds %struct.doublecomplex, ptr %31, i64 %1017
  call void @zswap_(ptr noundef nonnull %27, ptr noundef %1014, ptr noundef nonnull %5, ptr noundef %1018, ptr noundef nonnull %5) #5
  %1019 = load i32, ptr %27, align 4, !tbaa !5
  %1020 = add nsw i32 %1019, %33
  %1021 = sext i32 %1020 to i64
  %1022 = getelementptr inbounds %struct.doublecomplex, ptr %35, i64 %1021
  %1023 = load i32, ptr %28, align 4, !tbaa !5
  %1024 = add nsw i32 %1023, %33
  %1025 = sext i32 %1024 to i64
  %1026 = getelementptr inbounds %struct.doublecomplex, ptr %35, i64 %1025
  call void @zswap_(ptr noundef nonnull %27, ptr noundef %1022, ptr noundef nonnull %8, ptr noundef %1026, ptr noundef nonnull %8) #5
  br label %1027

1027:                                             ; preds = %978, %974
  br i1 %976, label %1028, label %1120

1028:                                             ; preds = %1027
  %1029 = load i32, ptr %1, align 4, !tbaa !5
  %1030 = load i32, ptr %21, align 4, !tbaa !5
  %1031 = add i32 %1029, 1
  %1032 = sub i32 %1031, %1030
  store i32 %1032, ptr %11, align 4, !tbaa !5
  %1033 = mul i32 %1030, %39
  %1034 = sext i32 %1033 to i64
  %1035 = getelementptr inbounds %struct.doublecomplex, ptr %35, i64 %1034
  %1036 = mul i32 %1030, %38
  %1037 = sext i32 %1036 to i64
  %1038 = getelementptr inbounds %struct.doublecomplex, ptr %31, i64 %1037
  call void @zcopy_(ptr noundef nonnull %11, ptr noundef %1035, ptr noundef nonnull @c__1, ptr noundef %1038, ptr noundef nonnull @c__1) #5
  %1039 = load i32, ptr %21, align 4, !tbaa !5
  %1040 = load i32, ptr %1, align 4, !tbaa !5
  %1041 = icmp slt i32 %1039, %1040
  br i1 %1041, label %1042, label %.loopexit

1042:                                             ; preds = %1028
  %1043 = mul i32 %1039, %38
  store i32 %1043, ptr %11, align 4, !tbaa !5
  %1044 = sext i32 %1043 to i64
  %1045 = getelementptr inbounds %struct.doublecomplex, ptr %31, i64 %1044
  %1046 = load double, ptr %1045, align 8, !tbaa !11
  %1047 = call { double, double } @Cd(ptr noundef nonnull %1045)
  %1048 = extractvalue { double, double } %1047, 1
  %1049 = insertelement <2 x double> poison, double %1046, i64 0
  %1050 = insertelement <2 x double> %1049, double %1048, i64 1
  %1051 = fcmp oge <2 x double> %1050, zeroinitializer
  %1052 = fneg <2 x double> %1050
  %1053 = select <2 x i1> %1051, <2 x double> %1050, <2 x double> %1052
  %shift1101 = shufflevector <2 x double> %1053, <2 x double> poison, <2 x i32> <i32 1, i32 poison>
  %1054 = fadd <2 x double> %1053, %shift1101
  %1055 = extractelement <2 x double> %1054, i64 0
  %1056 = fcmp ult double %1055, %36
  br i1 %1056, label %1082, label %1057

1057:                                             ; preds = %1042
  %1058 = call { double, double } @Cd(ptr noundef nonnull @c_b1)
  %1059 = extractvalue { double, double } %1058, 0
  %1060 = extractvalue { double, double } %1058, 1
  %1061 = load i32, ptr %21, align 4, !tbaa !5
  %1062 = mul i32 %1061, %38
  %1063 = sext i32 %1062 to i64
  %1064 = getelementptr inbounds %struct.doublecomplex, ptr %31, i64 %1063
  %1065 = call { double, double } @Cd(ptr noundef %1064)
  %1066 = extractvalue { double, double } %1065, 0
  %1067 = extractvalue { double, double } %1065, 1
  %1068 = call { double, double } @__divdc3(double noundef %1059, double noundef %1060, double noundef %1066, double noundef %1067) #5
  %1069 = extractvalue { double, double } %1068, 0
  %1070 = extractvalue { double, double } %1068, 1
  %1071 = call ptr @_pCd(ptr noundef nonnull %16)
  %1072 = getelementptr inbounds i8, ptr %1071, i64 8
  store double %1069, ptr %1071, align 8
  store double %1070, ptr %1072, align 8
  %1073 = load <2 x double>, ptr %16, align 16, !tbaa !9
  store <2 x double> %1073, ptr %23, align 16, !tbaa !9
  %1074 = load i32, ptr %1, align 4, !tbaa !5
  %1075 = load i32, ptr %21, align 4, !tbaa !5
  %1076 = sub nsw i32 %1074, %1075
  store i32 %1076, ptr %11, align 4, !tbaa !5
  %1077 = add nsw i32 %1075, 1
  %1078 = mul nsw i32 %1075, %29
  %1079 = add nsw i32 %1077, %1078
  %1080 = sext i32 %1079 to i64
  %1081 = getelementptr inbounds %struct.doublecomplex, ptr %31, i64 %1080
  call void @zscal_(ptr noundef nonnull %11, ptr noundef nonnull %23, ptr noundef %1081, ptr noundef nonnull @c__1) #5
  br label %.loopexit

1082:                                             ; preds = %1042
  %1083 = load i32, ptr %21, align 4, !tbaa !5
  %1084 = mul i32 %1083, %38
  store i32 %1084, ptr %11, align 4, !tbaa !5
  %1085 = sext i32 %1084 to i64
  %1086 = getelementptr inbounds %struct.doublecomplex, ptr %31, i64 %1085
  %1087 = load double, ptr %1086, align 8, !tbaa !11
  %1088 = fcmp une double %1087, 0.000000e+00
  br i1 %1088, label %1093, label %1089

1089:                                             ; preds = %1082
  %1090 = getelementptr inbounds i8, ptr %1086, i64 8
  %1091 = load double, ptr %1090, align 8, !tbaa !13
  %1092 = fcmp une double %1091, 0.000000e+00
  br i1 %1092, label %1093, label %.loopexit

1093:                                             ; preds = %1089, %1082
  %1094 = load i32, ptr %1, align 4, !tbaa !5
  store i32 %1094, ptr %11, align 4, !tbaa !5
  %.not873.not1010 = icmp slt i32 %1083, %1094
  br i1 %.not873.not1010, label %.lr.ph1013, label %.loopexit

.lr.ph1013:                                       ; preds = %1093, %.lr.ph1013
  %.1797.in1011 = phi i32 [ %.1797, %.lr.ph1013 ], [ %1083, %1093 ]
  %.1797 = add nsw i32 %.1797.in1011, 1
  %1095 = load i32, ptr %21, align 4, !tbaa !5
  %1096 = mul nsw i32 %1095, %29
  %1097 = add nsw i32 %1096, %.1797
  store i32 %1097, ptr %12, align 4, !tbaa !5
  %1098 = sext i32 %1097 to i64
  %1099 = getelementptr inbounds %struct.doublecomplex, ptr %31, i64 %1098
  %1100 = call { double, double } @Cd(ptr noundef %1099)
  %1101 = extractvalue { double, double } %1100, 0
  %1102 = extractvalue { double, double } %1100, 1
  %1103 = load i32, ptr %21, align 4, !tbaa !5
  %1104 = mul i32 %1103, %38
  %1105 = sext i32 %1104 to i64
  %1106 = getelementptr inbounds %struct.doublecomplex, ptr %31, i64 %1105
  %1107 = call { double, double } @Cd(ptr noundef %1106)
  %1108 = extractvalue { double, double } %1107, 0
  %1109 = extractvalue { double, double } %1107, 1
  %1110 = call { double, double } @__divdc3(double noundef %1101, double noundef %1102, double noundef %1108, double noundef %1109) #5
  %1111 = extractvalue { double, double } %1110, 0
  %1112 = extractvalue { double, double } %1110, 1
  %1113 = call ptr @_pCd(ptr noundef nonnull %16)
  %1114 = getelementptr inbounds i8, ptr %1113, i64 8
  store double %1111, ptr %1113, align 8
  store double %1112, ptr %1114, align 8
  %1115 = load i32, ptr %12, align 4, !tbaa !5
  %1116 = sext i32 %1115 to i64
  %1117 = getelementptr inbounds %struct.doublecomplex, ptr %31, i64 %1116
  %1118 = load <2 x double>, ptr %16, align 16, !tbaa !9
  store <2 x double> %1118, ptr %1117, align 8, !tbaa !9
  %1119 = load i32, ptr %11, align 4, !tbaa !5
  %.not873.not = icmp slt i32 %.1797, %1119
  br i1 %.not873.not, label %.lr.ph1013, label %.loopexit, !llvm.loop !19

1120:                                             ; preds = %1027
  %1121 = load i32, ptr %21, align 4, !tbaa !5
  %1122 = load i32, ptr %1, align 4, !tbaa !5
  %1123 = add nsw i32 %1122, -1
  %1124 = icmp slt i32 %1121, %1123
  br i1 %1124, label %1125, label %.loopexit952

1125:                                             ; preds = %1120
  %1126 = add nsw i32 %1121, 1
  %1127 = mul nsw i32 %1121, %33
  %1128 = add nsw i32 %1126, %1127
  store i32 %1128, ptr %11, align 4, !tbaa !5
  %1129 = sext i32 %1128 to i64
  %1130 = getelementptr inbounds %struct.doublecomplex, ptr %35, i64 %1129
  %1131 = load <2 x double>, ptr %1130, align 8, !tbaa !9
  store <2 x double> %1131, ptr %25, align 16, !tbaa !9
  %1132 = mul i32 %1126, %39
  %1133 = sext i32 %1132 to i64
  %1134 = getelementptr inbounds %struct.doublecomplex, ptr %35, i64 %1133
  %1135 = call { double, double } @Cd(ptr noundef %1134)
  %1136 = extractvalue { double, double } %1135, 0
  %1137 = extractvalue { double, double } %1135, 1
  %1138 = call { double, double } @Cd(ptr noundef nonnull %25)
  %1139 = extractvalue { double, double } %1138, 0
  %1140 = extractvalue { double, double } %1138, 1
  %1141 = call { double, double } @__divdc3(double noundef %1136, double noundef %1137, double noundef %1139, double noundef %1140) #5
  %1142 = extractvalue { double, double } %1141, 0
  %1143 = extractvalue { double, double } %1141, 1
  %1144 = call ptr @_pCd(ptr noundef nonnull %16)
  %1145 = getelementptr inbounds i8, ptr %1144, i64 8
  store double %1142, ptr %1144, align 8
  store double %1143, ptr %1145, align 8
  %1146 = load <2 x double>, ptr %16, align 16
  %1147 = load double, ptr %40, align 8, !tbaa !13
  %1148 = load i32, ptr %21, align 4, !tbaa !5
  %1149 = mul i32 %1148, %39
  %1150 = sext i32 %1149 to i64
  %1151 = getelementptr inbounds %struct.doublecomplex, ptr %35, i64 %1150
  %1152 = call { double, double } @Cd(ptr noundef %1151)
  %1153 = extractvalue { double, double } %1152, 0
  %1154 = extractvalue { double, double } %1152, 1
  %1155 = call { double, double } @Cd(ptr noundef nonnull %25)
  %1156 = extractvalue { double, double } %1155, 0
  %1157 = extractvalue { double, double } %1155, 1
  %1158 = call { double, double } @__divdc3(double noundef %1153, double noundef %1154, double noundef %1156, double noundef %1157) #5
  %1159 = extractvalue { double, double } %1158, 0
  %1160 = extractvalue { double, double } %1158, 1
  %1161 = call ptr @_pCd(ptr noundef nonnull %16)
  %1162 = getelementptr inbounds i8, ptr %1161, i64 8
  store double %1159, ptr %1161, align 8
  store double %1160, ptr %1162, align 8
  %1163 = fneg double %1147
  %1164 = load <2 x double>, ptr %16, align 16, !tbaa !9
  %1165 = insertelement <2 x double> poison, double %1147, i64 0
  %1166 = insertelement <2 x double> %1165, double %1163, i64 1
  %1167 = fmul <2 x double> %1164, %1166
  %1168 = shufflevector <2 x double> %1167, <2 x double> poison, <2 x i32> <i32 1, i32 0>
  %1169 = shufflevector <2 x double> %1146, <2 x double> poison, <2 x i32> zeroinitializer
  %1170 = call <2 x double> @llvm.fmuladd.v2f64(<2 x double> %1169, <2 x double> %1164, <2 x double> %1168)
  store <2 x double> %1170, ptr %18, align 16, !tbaa !9
  %1171 = fadd <2 x double> %1170, <double -1.000000e+00, double 0.000000e+00>
  store <2 x double> %1171, ptr %17, align 16, !tbaa !9
  %1172 = call { double, double } @Cd(ptr noundef nonnull @c_b1)
  %1173 = extractvalue { double, double } %1172, 0
  %1174 = extractvalue { double, double } %1172, 1
  %1175 = call { double, double } @Cd(ptr noundef nonnull %17)
  %1176 = extractvalue { double, double } %1175, 0
  %1177 = extractvalue { double, double } %1175, 1
  %1178 = call { double, double } @__divdc3(double noundef %1173, double noundef %1174, double noundef %1176, double noundef %1177) #5
  %1179 = extractvalue { double, double } %1178, 0
  %1180 = extractvalue { double, double } %1178, 1
  %1181 = call ptr @_pCd(ptr noundef nonnull %16)
  %1182 = getelementptr inbounds i8, ptr %1181, i64 8
  store double %1179, ptr %1181, align 8
  store double %1180, ptr %1182, align 8
  %1183 = load <2 x double>, ptr %16, align 16
  %1184 = load double, ptr %40, align 8, !tbaa !13
  %1185 = load i32, ptr %1, align 4, !tbaa !5
  store i32 %1185, ptr %11, align 4, !tbaa !5
  %1186 = load i32, ptr %21, align 4, !tbaa !5
  %1187 = add nsw i32 %1186, 2
  store i32 %1187, ptr %20, align 4, !tbaa !5
  %.not8721006 = icmp sgt i32 %1187, %1185
  br i1 %.not8721006, label %.loopexit952, label %.lr.ph1009

.lr.ph1009:                                       ; preds = %1125
  %1188 = fneg double %1184
  %1189 = shufflevector <2 x double> %1164, <2 x double> poison, <2 x i32> zeroinitializer
  %1190 = shufflevector <2 x double> %1183, <2 x double> poison, <2 x i32> zeroinitializer
  %1191 = insertelement <2 x double> poison, double %1184, i64 0
  %1192 = insertelement <2 x double> %1191, double %1188, i64 1
  %1193 = shufflevector <2 x double> %1164, <2 x double> poison, <2 x i32> <i32 1, i32 poison>
  %1194 = fneg <2 x double> %1164
  %1195 = shufflevector <2 x double> %1193, <2 x double> %1194, <2 x i32> <i32 0, i32 3>
  br label %1196

1196:                                             ; preds = %.lr.ph1009, %1196
  %1197 = phi i32 [ %1187, %.lr.ph1009 ], [ %1271, %1196 ]
  %1198 = load i32, ptr %21, align 4, !tbaa !5
  %1199 = mul nsw i32 %1198, %29
  %1200 = add nsw i32 %1199, %1197
  store i32 %1200, ptr %12, align 4, !tbaa !5
  %1201 = mul nsw i32 %1198, %33
  %1202 = add nsw i32 %1201, %1197
  store i32 %1202, ptr %13, align 4, !tbaa !5
  %1203 = sext i32 %1202 to i64
  %1204 = getelementptr inbounds %struct.doublecomplex, ptr %35, i64 %1203
  %1205 = add nsw i32 %1198, 1
  %1206 = mul nsw i32 %1205, %33
  %1207 = add nsw i32 %1206, %1197
  store i32 %1207, ptr %14, align 4, !tbaa !5
  %1208 = sext i32 %1207 to i64
  %1209 = getelementptr inbounds %struct.doublecomplex, ptr %35, i64 %1208
  %1210 = load <2 x double>, ptr %1204, align 8, !tbaa !9
  %1211 = fmul <2 x double> %1210, %1166
  %1212 = shufflevector <2 x double> %1211, <2 x double> poison, <2 x i32> <i32 1, i32 0>
  %1213 = call <2 x double> @llvm.fmuladd.v2f64(<2 x double> %1169, <2 x double> %1210, <2 x double> %1212)
  %1214 = load <2 x double>, ptr %1209, align 8, !tbaa !9
  %1215 = fsub <2 x double> %1213, %1214
  store <2 x double> %1215, ptr %18, align 16, !tbaa !9
  %1216 = call { double, double } @Cd(ptr noundef nonnull %18)
  %1217 = extractvalue { double, double } %1216, 0
  %1218 = extractvalue { double, double } %1216, 1
  %1219 = call { double, double } @Cd(ptr noundef nonnull %25)
  %1220 = extractvalue { double, double } %1219, 0
  %1221 = extractvalue { double, double } %1219, 1
  %1222 = call { double, double } @__divdc3(double noundef %1217, double noundef %1218, double noundef %1220, double noundef %1221) #5
  %1223 = extractvalue { double, double } %1222, 0
  %1224 = extractvalue { double, double } %1222, 1
  %1225 = call ptr @_pCd(ptr noundef nonnull %17)
  %1226 = getelementptr inbounds i8, ptr %1225, i64 8
  store double %1223, ptr %1225, align 8
  store double %1224, ptr %1226, align 8
  %1227 = load <2 x double>, ptr %17, align 16, !tbaa !9
  %1228 = fmul <2 x double> %1227, %1192
  %1229 = shufflevector <2 x double> %1228, <2 x double> poison, <2 x i32> <i32 1, i32 0>
  %1230 = call <2 x double> @llvm.fmuladd.v2f64(<2 x double> %1190, <2 x double> %1227, <2 x double> %1229)
  store <2 x double> %1230, ptr %16, align 16, !tbaa !9
  %1231 = load i32, ptr %12, align 4, !tbaa !5
  %1232 = sext i32 %1231 to i64
  %1233 = getelementptr inbounds %struct.doublecomplex, ptr %31, i64 %1232
  store <2 x double> %1230, ptr %1233, align 8, !tbaa !9
  %1234 = load i32, ptr %21, align 4, !tbaa !5
  %1235 = add nsw i32 %1234, 1
  %1236 = mul nsw i32 %1235, %29
  %1237 = add nsw i32 %1236, %1197
  store i32 %1237, ptr %12, align 4, !tbaa !5
  %1238 = mul nsw i32 %1235, %33
  %1239 = add nsw i32 %1238, %1197
  store i32 %1239, ptr %13, align 4, !tbaa !5
  %1240 = sext i32 %1239 to i64
  %1241 = getelementptr inbounds %struct.doublecomplex, ptr %35, i64 %1240
  %1242 = mul nsw i32 %1234, %33
  %1243 = add nsw i32 %1242, %1197
  store i32 %1243, ptr %14, align 4, !tbaa !5
  %1244 = sext i32 %1243 to i64
  %1245 = getelementptr inbounds %struct.doublecomplex, ptr %35, i64 %1244
  %1246 = load <2 x double>, ptr %1241, align 8, !tbaa !9
  %1247 = fmul <2 x double> %1246, %1195
  %1248 = shufflevector <2 x double> %1247, <2 x double> poison, <2 x i32> <i32 1, i32 0>
  %1249 = call <2 x double> @llvm.fmuladd.v2f64(<2 x double> %1189, <2 x double> %1246, <2 x double> %1248)
  %1250 = load <2 x double>, ptr %1245, align 8, !tbaa !9
  %1251 = fsub <2 x double> %1249, %1250
  store <2 x double> %1251, ptr %18, align 16, !tbaa !9
  %1252 = call { double, double } @Cd(ptr noundef nonnull %18)
  %1253 = extractvalue { double, double } %1252, 0
  %1254 = extractvalue { double, double } %1252, 1
  %1255 = call { double, double } @Cd(ptr noundef nonnull %25)
  %1256 = extractvalue { double, double } %1255, 0
  %1257 = extractvalue { double, double } %1255, 1
  %1258 = call { double, double } @__divdc3(double noundef %1253, double noundef %1254, double noundef %1256, double noundef %1257) #5
  %1259 = extractvalue { double, double } %1258, 0
  %1260 = extractvalue { double, double } %1258, 1
  %1261 = call ptr @_pCd(ptr noundef nonnull %17)
  %1262 = getelementptr inbounds i8, ptr %1261, i64 8
  store double %1259, ptr %1261, align 8
  store double %1260, ptr %1262, align 8
  %1263 = load <2 x double>, ptr %17, align 16, !tbaa !9
  %1264 = fmul <2 x double> %1263, %1192
  %1265 = shufflevector <2 x double> %1264, <2 x double> poison, <2 x i32> <i32 1, i32 0>
  %1266 = call <2 x double> @llvm.fmuladd.v2f64(<2 x double> %1190, <2 x double> %1263, <2 x double> %1265)
  store <2 x double> %1266, ptr %16, align 16, !tbaa !9
  %1267 = load i32, ptr %12, align 4, !tbaa !5
  %1268 = sext i32 %1267 to i64
  %1269 = getelementptr inbounds %struct.doublecomplex, ptr %31, i64 %1268
  store <2 x double> %1266, ptr %1269, align 8, !tbaa !9
  %1270 = load i32, ptr %20, align 4, !tbaa !5
  %1271 = add nsw i32 %1270, 1
  store i32 %1271, ptr %20, align 4, !tbaa !5
  %1272 = load i32, ptr %11, align 4, !tbaa !5
  %.not872.not = icmp slt i32 %1270, %1272
  br i1 %.not872.not, label %1196, label %.loopexit952.loopexit, !llvm.loop !20

.loopexit:                                        ; preds = %.lr.ph1013, %1093, %764, %1057, %1089, %1028
  %.11.ph = phi i32 [ %.10917, %1028 ], [ %.10917, %1089 ], [ %.10917, %1057 ], [ %.68101087, %764 ], [ %.10917, %1093 ], [ %.10917, %.lr.ph1013 ]
  %1273 = load i32, ptr %28, align 4, !tbaa !5
  %1274 = load i32, ptr %21, align 4, !tbaa !5
  %1275 = sext i32 %1274 to i64
  %1276 = getelementptr inbounds i32, ptr %32, i64 %1275
  store i32 %1273, ptr %1276, align 4, !tbaa !5
  br label %1309

.loopexit952.loopexit:                            ; preds = %1196
  %.pre1048 = load i32, ptr %21, align 4, !tbaa !5
  br label %.loopexit952

.loopexit952:                                     ; preds = %.loopexit952.loopexit, %1125, %1120
  %1277 = phi i32 [ %.pre1048, %.loopexit952.loopexit ], [ %1186, %1125 ], [ %1121, %1120 ]
  %1278 = mul i32 %1277, %38
  %1279 = mul i32 %1277, %39
  %1280 = sext i32 %1279 to i64
  %1281 = getelementptr inbounds %struct.doublecomplex, ptr %35, i64 %1280
  %1282 = sext i32 %1278 to i64
  %1283 = getelementptr inbounds %struct.doublecomplex, ptr %31, i64 %1282
  %1284 = load <2 x double>, ptr %1281, align 8, !tbaa !9
  store <2 x double> %1284, ptr %1283, align 8, !tbaa !9
  %1285 = add nsw i32 %1277, 1
  %1286 = mul nsw i32 %1277, %29
  %1287 = add nsw i32 %1285, %1286
  %1288 = mul nsw i32 %1277, %33
  %1289 = add nsw i32 %1285, %1288
  %1290 = sext i32 %1289 to i64
  %1291 = getelementptr inbounds %struct.doublecomplex, ptr %35, i64 %1290
  %1292 = sext i32 %1287 to i64
  %1293 = getelementptr inbounds %struct.doublecomplex, ptr %31, i64 %1292
  %1294 = load <2 x double>, ptr %1291, align 8, !tbaa !9
  store <2 x double> %1294, ptr %1293, align 8, !tbaa !9
  %1295 = mul i32 %1285, %38
  store i32 %1295, ptr %11, align 4, !tbaa !5
  %1296 = mul i32 %1285, %39
  store i32 %1296, ptr %12, align 4, !tbaa !5
  %1297 = sext i32 %1296 to i64
  %1298 = getelementptr inbounds %struct.doublecomplex, ptr %35, i64 %1297
  %1299 = sext i32 %1295 to i64
  %1300 = getelementptr inbounds %struct.doublecomplex, ptr %31, i64 %1299
  %1301 = load <2 x double>, ptr %1298, align 8, !tbaa !9
  store <2 x double> %1301, ptr %1300, align 8, !tbaa !9
  %1302 = load i32, ptr %22, align 4, !tbaa !5
  %1303 = sub nsw i32 0, %1302
  %1304 = sext i32 %1277 to i64
  %1305 = getelementptr inbounds i32, ptr %32, i64 %1304
  store i32 %1303, ptr %1305, align 4, !tbaa !5
  %1306 = load i32, ptr %28, align 4, !tbaa !5
  %1307 = sub nsw i32 0, %1306
  %1308 = getelementptr i8, ptr %1305, i64 4
  store i32 %1307, ptr %1308, align 4, !tbaa !5
  br label %1309

1309:                                             ; preds = %.loopexit952, %.loopexit
  %1310 = phi i32 [ %1277, %.loopexit952 ], [ %1274, %.loopexit ]
  %.8928 = phi i32 [ 2, %.loopexit952 ], [ 1, %.loopexit ]
  %.11926 = phi i32 [ %.10917, %.loopexit952 ], [ %.11.ph, %.loopexit ]
  %1311 = add nsw i32 %1310, %.8928
  store i32 %1311, ptr %21, align 4, !tbaa !5
  %1312 = load i32, ptr %2, align 4, !tbaa !5
  %.not866 = icmp sge i32 %1311, %1312
  %.pre1043 = load i32, ptr %1, align 4, !tbaa !5
  %1313 = icmp slt i32 %1312, %.pre1043
  %or.cond1058 = select i1 %.not866, i1 %1313, i1 false
  %1314 = icmp sgt i32 %1311, %.pre1043
  %or.cond1059 = select i1 %or.cond1058, i1 true, i1 %1314
  br i1 %or.cond1059, label %._crit_edge1090, label %.lr.ph1089

._crit_edge1090:                                  ; preds = %1309, %.preheader953
  %storemerge.lcssa = phi i32 [ 1, %.preheader953 ], [ %1311, %1309 ]
  %.lcssa1077 = phi i32 [ %41, %.preheader953 ], [ %1312, %1309 ]
  %.pre1043.lcssa = phi i32 [ %.pre10431083, %.preheader953 ], [ %.pre1043, %1309 ]
  store i32 %.pre1043.lcssa, ptr %11, align 4, !tbaa !5
  store i32 %.lcssa1077, ptr %12, align 4, !tbaa !5
  %1315 = sext i32 %29 to i64
  %1316 = sext i32 %33 to i64
  %invariant.gep1071 = getelementptr %struct.doublecomplex, ptr %31, i64 %1315
  %invariant.gep1073 = getelementptr %struct.doublecomplex, ptr %35, i64 %1316
  br label %1317

1317:                                             ; preds = %1361, %._crit_edge1090
  %1318 = phi i32 [ %1362, %1361 ], [ %.lcssa1077, %._crit_edge1090 ]
  %1319 = phi i32 [ %1363, %1361 ], [ %storemerge.lcssa, %._crit_edge1090 ]
  %1320 = icmp slt i32 %1318, 0
  %1321 = load i32, ptr %11, align 4, !tbaa !5
  br i1 %1320, label %1322, label %1323

1322:                                             ; preds = %1317
  %.not932 = icmp slt i32 %1319, %1321
  br i1 %.not932, label %1364, label %1324

1323:                                             ; preds = %1317
  %.not931 = icmp sgt i32 %1319, %1321
  br i1 %.not931, label %1364, label %1324

1324:                                             ; preds = %1322, %1323
  %1325 = load i32, ptr %2, align 4, !tbaa !5
  %1326 = load i32, ptr %1, align 4, !tbaa !5
  %1327 = sub nsw i32 %1326, %1319
  %1328 = add nsw i32 %1327, 1
  store i32 %1328, ptr %14, align 4, !tbaa !5
  %1329 = call i32 @llvm.smin.i32(i32 %1325, i32 %1328)
  store i32 %1329, ptr %26, align 4, !tbaa !5
  %1330 = add i32 %1319, -1
  %1331 = add i32 %1330, %1329
  store i32 %1331, ptr %13, align 4, !tbaa !5
  %.not8771014 = icmp sgt i32 %1319, %1331
  br i1 %.not8771014, label %._crit_edge1018, label %.lr.ph1017.preheader

.lr.ph1017.preheader:                             ; preds = %1324
  %1332 = sext i32 %1319 to i64
  br label %.lr.ph1017

.lr.ph1017:                                       ; preds = %.lr.ph1017.preheader, %.lr.ph1017
  %indvars.iv1032 = phi i64 [ %1332, %.lr.ph1017.preheader ], [ %indvars.iv.next1033, %.lr.ph1017 ]
  %1333 = load i32, ptr %26, align 4, !tbaa !5
  %1334 = trunc nsw i64 %indvars.iv1032 to i32
  %1335 = sub i32 %1319, %1334
  %1336 = add i32 %1335, %1333
  store i32 %1336, ptr %14, align 4, !tbaa !5
  %1337 = load i32, ptr %21, align 4, !tbaa !5
  %1338 = add nsw i32 %1337, -1
  store i32 %1338, ptr %15, align 4, !tbaa !5
  store <2 x double> <double -1.000000e+00, double 0.000000e+00>, ptr %16, align 16, !tbaa !9
  %gep1072 = getelementptr %struct.doublecomplex, ptr %invariant.gep1071, i64 %indvars.iv1032
  %gep1074 = getelementptr %struct.doublecomplex, ptr %invariant.gep1073, i64 %indvars.iv1032
  %1339 = mul i32 %38, %1334
  %1340 = sext i32 %1339 to i64
  %1341 = getelementptr inbounds %struct.doublecomplex, ptr %31, i64 %1340
  call void @zgemv_(ptr noundef nonnull @.str.2, ptr noundef nonnull %14, ptr noundef nonnull %15, ptr noundef nonnull %16, ptr noundef %gep1072, ptr noundef nonnull %5, ptr noundef %gep1074, ptr noundef nonnull %8, ptr noundef nonnull @c_b1, ptr noundef %1341, ptr noundef nonnull @c__1) #5
  %indvars.iv.next1033 = add nsw i64 %indvars.iv1032, 1
  %1342 = load i32, ptr %13, align 4, !tbaa !5
  %1343 = sext i32 %1342 to i64
  %.not877.not = icmp slt i64 %indvars.iv1032, %1343
  br i1 %.not877.not, label %.lr.ph1017, label %._crit_edge1018.loopexit, !llvm.loop !21

._crit_edge1018.loopexit:                         ; preds = %.lr.ph1017
  %.pre1050 = load i32, ptr %26, align 4, !tbaa !5
  %.pre1051 = load i32, ptr %1, align 4, !tbaa !5
  br label %._crit_edge1018

._crit_edge1018:                                  ; preds = %._crit_edge1018.loopexit, %1324
  %1344 = phi i32 [ %.pre1051, %._crit_edge1018.loopexit ], [ %1326, %1324 ]
  %1345 = phi i32 [ %.pre1050, %._crit_edge1018.loopexit ], [ %1329, %1324 ]
  %1346 = add nsw i32 %1345, %1319
  %.not878 = icmp sgt i32 %1346, %1344
  br i1 %.not878, label %1361, label %1347

1347:                                             ; preds = %._crit_edge1018
  %reass.sub1024 = sub i32 %1344, %1346
  %1348 = add i32 %reass.sub1024, 1
  store i32 %1348, ptr %13, align 4, !tbaa !5
  %1349 = load i32, ptr %21, align 4, !tbaa !5
  %1350 = add nsw i32 %1349, -1
  store i32 %1350, ptr %14, align 4, !tbaa !5
  store <2 x double> <double -1.000000e+00, double 0.000000e+00>, ptr %16, align 16, !tbaa !9
  %1351 = add nsw i32 %1346, %29
  %1352 = sext i32 %1351 to i64
  %1353 = getelementptr inbounds %struct.doublecomplex, ptr %31, i64 %1352
  %1354 = add nsw i32 %1319, %33
  %1355 = sext i32 %1354 to i64
  %1356 = getelementptr inbounds %struct.doublecomplex, ptr %35, i64 %1355
  %1357 = mul nsw i32 %1319, %29
  %1358 = add nsw i32 %1346, %1357
  %1359 = sext i32 %1358 to i64
  %1360 = getelementptr inbounds %struct.doublecomplex, ptr %31, i64 %1359
  call void @zgemm_(ptr noundef nonnull @.str.2, ptr noundef nonnull @.str.3, ptr noundef nonnull %13, ptr noundef nonnull %26, ptr noundef nonnull %14, ptr noundef nonnull %16, ptr noundef %1353, ptr noundef nonnull %5, ptr noundef %1356, ptr noundef nonnull %8, ptr noundef nonnull @c_b1, ptr noundef %1360, ptr noundef nonnull %5) #5
  br label %1361

1361:                                             ; preds = %._crit_edge1018, %1347
  %1362 = load i32, ptr %12, align 4, !tbaa !5
  %1363 = add nsw i32 %1319, %1362
  br label %1317, !llvm.loop !22

1364:                                             ; preds = %1322, %1323
  %1365 = load i32, ptr %21, align 4, !tbaa !5
  %1366 = add nsw i32 %1365, -1
  br label %1367

1367:                                             ; preds = %1403, %1364
  %1368 = phi i32 [ %1404, %1403 ], [ %1366, %1364 ]
  %1369 = sext i32 %1368 to i64
  %1370 = getelementptr inbounds i32, ptr %32, i64 %1369
  %1371 = load i32, ptr %1370, align 4, !tbaa !5
  %1372 = icmp slt i32 %1371, 0
  br i1 %1372, label %1373, label %1380

1373:                                             ; preds = %1367
  %1374 = sub nsw i32 0, %1371
  %1375 = add nsw i32 %1368, -1
  %1376 = sext i32 %1375 to i64
  %1377 = getelementptr inbounds i32, ptr %32, i64 %1376
  %1378 = load i32, ptr %1377, align 4, !tbaa !5
  %1379 = sub nsw i32 0, %1378
  br label %1380

1380:                                             ; preds = %1373, %1367
  %1381 = phi i32 [ %1375, %1373 ], [ %1368, %1367 ]
  %.1789 = phi i32 [ %1379, %1373 ], [ 1, %1367 ]
  %.1787 = phi i32 [ %1374, %1373 ], [ %1371, %1367 ]
  %1382 = add nsw i32 %1381, -1
  store i32 %1382, ptr %20, align 4, !tbaa !5
  %1383 = icmp ne i32 %.1787, %1368
  %1384 = icmp sgt i32 %1381, 1
  %or.cond7 = and i1 %1383, %1384
  br i1 %or.cond7, label %1385, label %1392

1385:                                             ; preds = %1380
  %1386 = add nsw i32 %.1787, %29
  %1387 = sext i32 %1386 to i64
  %1388 = getelementptr inbounds %struct.doublecomplex, ptr %31, i64 %1387
  %1389 = add nsw i32 %1368, %29
  %1390 = sext i32 %1389 to i64
  %1391 = getelementptr inbounds %struct.doublecomplex, ptr %31, i64 %1390
  call void @zswap_(ptr noundef nonnull %20, ptr noundef %1388, ptr noundef nonnull %5, ptr noundef %1391, ptr noundef nonnull %5) #5
  %.pre1052 = load i32, ptr %20, align 4, !tbaa !5
  br label %1392

1392:                                             ; preds = %1385, %1380
  %1393 = phi i32 [ %.pre1052, %1385 ], [ %1382, %1380 ]
  %1394 = add nsw i32 %1393, 1
  %1395 = icmp ne i32 %.1789, %1394
  %or.cond10 = and i1 %1372, %1395
  br i1 %or.cond10, label %1396, label %1403

1396:                                             ; preds = %1392
  %1397 = add nsw i32 %.1789, %29
  %1398 = sext i32 %1397 to i64
  %1399 = getelementptr inbounds %struct.doublecomplex, ptr %31, i64 %1398
  %1400 = add nsw i32 %1394, %29
  %1401 = sext i32 %1400 to i64
  %1402 = getelementptr inbounds %struct.doublecomplex, ptr %31, i64 %1401
  call void @zswap_(ptr noundef nonnull %20, ptr noundef %1399, ptr noundef nonnull %5, ptr noundef %1402, ptr noundef nonnull %5) #5
  %.pr930 = load i32, ptr %20, align 4, !tbaa !5
  br label %1403

1403:                                             ; preds = %1396, %1392
  %1404 = phi i32 [ %.pr930, %1396 ], [ %1393, %1392 ]
  %1405 = icmp sgt i32 %1404, 0
  br i1 %1405, label %1367, label %1406

1406:                                             ; preds = %1403
  %1407 = load i32, ptr %21, align 4, !tbaa !5
  %1408 = add nsw i32 %1407, -1
  br label %1409

1409:                                             ; preds = %1406, %689
  %storemerge875 = phi i32 [ %1408, %1406 ], [ %691, %689 ]
  store i32 %storemerge875, ptr %3, align 4, !tbaa !5
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %28) #5
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %27) #5
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %26) #5
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %25) #5
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %24) #5
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %23) #5
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %22) #5
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %21) #5
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %20) #5
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %19) #5
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %18) #5
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %17) #5
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %16) #5
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %15) #5
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %14) #5
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %13) #5
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %12) #5
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %11) #5
  ret void
}

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

declare double @dlamch_(ptr noundef) local_unnamed_addr #2

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

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

declare void @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: inlinehint nounwind uwtable
declare hidden { double, double } @Cd(ptr noundef) local_unnamed_addr #3

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

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

declare { double, double } @__divdc3(double, double, double, double) local_unnamed_addr

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

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

declare void @zgemm_(ptr noundef, ptr noundef, 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 i32 @llvm.smin.i32(i32, i32) #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 = { inlinehint nounwind uwtable "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }
attributes #4 = { nocallback nofree nosync nounwind speculatable willreturn memory(none) }
attributes #5 = { nounwind }

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

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


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