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

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

%struct.doublecomplex = type { double, double }

@.str = external hidden unnamed_addr constant [2 x i8], align 1
@c__1 = external hidden global i64, align 8
@.str.1 = external hidden unnamed_addr constant [13 x i8], align 1
@c_b1 = external hidden global %struct.doublecomplex, align 8
@.str.2 = external hidden unnamed_addr constant [10 x i8], align 1

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

84:                                               ; preds = %10
  %85 = load ptr, ptr %12, align 8, !tbaa !5
  %86 = load i64, ptr %85, align 8, !tbaa !9
  store i64 %86, ptr %39, align 8, !tbaa !9
  br label %87

87:                                               ; preds = %1272, %84
  %88 = load ptr, ptr %13, align 8, !tbaa !5
  %89 = load i64, ptr %88, align 8, !tbaa !9
  %90 = load i64, ptr %39, align 8, !tbaa !9
  %91 = add nsw i64 %89, %90
  %92 = load ptr, ptr %12, align 8, !tbaa !5
  %93 = load i64, ptr %92, align 8, !tbaa !9
  %94 = sub nsw i64 %91, %93
  store i64 %94, ptr %50, align 8, !tbaa !9
  %95 = load i64, ptr %39, align 8, !tbaa !9
  %96 = load ptr, ptr %12, align 8, !tbaa !5
  %97 = load i64, ptr %96, align 8, !tbaa !9
  %98 = load ptr, ptr %13, align 8, !tbaa !5
  %99 = load i64, ptr %98, align 8, !tbaa !9
  %100 = sub nsw i64 %97, %99
  %101 = add nsw i64 %100, 1
  %102 = icmp sle i64 %95, %101
  br i1 %102, label %103, label %109

103:                                              ; preds = %87
  %104 = load ptr, ptr %13, align 8, !tbaa !5
  %105 = load i64, ptr %104, align 8, !tbaa !9
  %106 = load ptr, ptr %12, align 8, !tbaa !5
  %107 = load i64, ptr %106, align 8, !tbaa !9
  %108 = icmp slt i64 %105, %107
  br i1 %108, label %112, label %109

109:                                              ; preds = %103, %87
  %110 = load i64, ptr %39, align 8, !tbaa !9
  %111 = icmp slt i64 %110, 1
  br i1 %111, label %112, label %113

112:                                              ; preds = %109, %103
  br label %1276

113:                                              ; preds = %109
  %114 = load i64, ptr %39, align 8, !tbaa !9
  %115 = sub nsw i64 %114, 1
  store i64 %115, ptr %25, align 8, !tbaa !9
  %116 = load ptr, ptr %15, align 8, !tbaa !5
  %117 = load i64, ptr %39, align 8, !tbaa !9
  %118 = load i64, ptr %21, align 8, !tbaa !9
  %119 = mul nsw i64 %117, %118
  %120 = add nsw i64 %119, 1
  %121 = getelementptr inbounds %struct.doublecomplex, ptr %116, i64 %120
  %122 = load ptr, ptr %18, align 8, !tbaa !5
  %123 = load i64, ptr %50, align 8, !tbaa !9
  %124 = load i64, ptr %23, align 8, !tbaa !9
  %125 = mul nsw i64 %123, %124
  %126 = add nsw i64 %125, 1
  %127 = getelementptr inbounds %struct.doublecomplex, ptr %122, i64 %126
  %128 = call i32 @f2c_zcopy(ptr noundef %25, ptr noundef %121, ptr noundef @c__1, ptr noundef %127, ptr noundef @c__1)
  %129 = load i64, ptr %39, align 8, !tbaa !9
  %130 = load i64, ptr %50, align 8, !tbaa !9
  %131 = load i64, ptr %23, align 8, !tbaa !9
  %132 = mul nsw i64 %130, %131
  %133 = add nsw i64 %129, %132
  store i64 %133, ptr %25, align 8, !tbaa !9
  %134 = load i64, ptr %39, align 8, !tbaa !9
  %135 = load i64, ptr %39, align 8, !tbaa !9
  %136 = load i64, ptr %21, align 8, !tbaa !9
  %137 = mul nsw i64 %135, %136
  %138 = add nsw i64 %134, %137
  store i64 %138, ptr %26, align 8, !tbaa !9
  %139 = load ptr, ptr %15, align 8, !tbaa !5
  %140 = load i64, ptr %26, align 8, !tbaa !9
  %141 = getelementptr inbounds %struct.doublecomplex, ptr %139, i64 %140
  %142 = getelementptr inbounds %struct.doublecomplex, ptr %141, i32 0, i32 0
  %143 = load double, ptr %142, align 8, !tbaa !13
  store double %143, ptr %30, align 8, !tbaa !11
  %144 = load double, ptr %30, align 8, !tbaa !11
  %145 = load ptr, ptr %18, align 8, !tbaa !5
  %146 = load i64, ptr %25, align 8, !tbaa !9
  %147 = getelementptr inbounds %struct.doublecomplex, ptr %145, i64 %146
  %148 = getelementptr inbounds %struct.doublecomplex, ptr %147, i32 0, i32 0
  store double %144, ptr %148, align 8, !tbaa !13
  %149 = load ptr, ptr %18, align 8, !tbaa !5
  %150 = load i64, ptr %25, align 8, !tbaa !9
  %151 = getelementptr inbounds %struct.doublecomplex, ptr %149, i64 %150
  %152 = getelementptr inbounds %struct.doublecomplex, ptr %151, i32 0, i32 1
  store double 0.000000e+00, ptr %152, align 8, !tbaa !15
  %153 = load i64, ptr %39, align 8, !tbaa !9
  %154 = load ptr, ptr %12, align 8, !tbaa !5
  %155 = load i64, ptr %154, align 8, !tbaa !9
  %156 = icmp slt i64 %153, %155
  br i1 %156, label %157, label %212

157:                                              ; preds = %113
  %158 = load ptr, ptr %12, align 8, !tbaa !5
  %159 = load i64, ptr %158, align 8, !tbaa !9
  %160 = load i64, ptr %39, align 8, !tbaa !9
  %161 = sub nsw i64 %159, %160
  store i64 %161, ptr %25, align 8, !tbaa !9
  %162 = getelementptr inbounds %struct.doublecomplex, ptr %34, i32 0, i32 0
  store double -1.000000e+00, ptr %162, align 8, !tbaa !13
  %163 = getelementptr inbounds %struct.doublecomplex, ptr %34, i32 0, i32 1
  store double -0.000000e+00, ptr %163, align 8, !tbaa !15
  %164 = load ptr, ptr %15, align 8, !tbaa !5
  %165 = load i64, ptr %39, align 8, !tbaa !9
  %166 = add nsw i64 %165, 1
  %167 = load i64, ptr %21, align 8, !tbaa !9
  %168 = mul nsw i64 %166, %167
  %169 = add nsw i64 %168, 1
  %170 = getelementptr inbounds %struct.doublecomplex, ptr %164, i64 %169
  %171 = load ptr, ptr %16, align 8, !tbaa !5
  %172 = load ptr, ptr %18, align 8, !tbaa !5
  %173 = load i64, ptr %39, align 8, !tbaa !9
  %174 = load i64, ptr %50, align 8, !tbaa !9
  %175 = add nsw i64 %174, 1
  %176 = load i64, ptr %23, align 8, !tbaa !9
  %177 = mul nsw i64 %175, %176
  %178 = add nsw i64 %173, %177
  %179 = getelementptr inbounds %struct.doublecomplex, ptr %172, i64 %178
  %180 = load ptr, ptr %19, align 8, !tbaa !5
  %181 = load ptr, ptr %18, align 8, !tbaa !5
  %182 = load i64, ptr %50, align 8, !tbaa !9
  %183 = load i64, ptr %23, align 8, !tbaa !9
  %184 = mul nsw i64 %182, %183
  %185 = add nsw i64 %184, 1
  %186 = getelementptr inbounds %struct.doublecomplex, ptr %181, i64 %185
  %187 = call i32 @f2c_zgemv(ptr noundef @.str.1, ptr noundef %39, ptr noundef %25, ptr noundef %34, ptr noundef %170, ptr noundef %171, ptr noundef %179, ptr noundef %180, ptr noundef @c_b1, ptr noundef %186, ptr noundef @c__1)
  %188 = load i64, ptr %39, align 8, !tbaa !9
  %189 = load i64, ptr %50, align 8, !tbaa !9
  %190 = load i64, ptr %23, align 8, !tbaa !9
  %191 = mul nsw i64 %189, %190
  %192 = add nsw i64 %188, %191
  store i64 %192, ptr %25, align 8, !tbaa !9
  %193 = load i64, ptr %39, align 8, !tbaa !9
  %194 = load i64, ptr %50, align 8, !tbaa !9
  %195 = load i64, ptr %23, align 8, !tbaa !9
  %196 = mul nsw i64 %194, %195
  %197 = add nsw i64 %193, %196
  store i64 %197, ptr %26, align 8, !tbaa !9
  %198 = load ptr, ptr %18, align 8, !tbaa !5
  %199 = load i64, ptr %26, align 8, !tbaa !9
  %200 = getelementptr inbounds %struct.doublecomplex, ptr %198, i64 %199
  %201 = getelementptr inbounds %struct.doublecomplex, ptr %200, i32 0, i32 0
  %202 = load double, ptr %201, align 8, !tbaa !13
  store double %202, ptr %30, align 8, !tbaa !11
  %203 = load double, ptr %30, align 8, !tbaa !11
  %204 = load ptr, ptr %18, align 8, !tbaa !5
  %205 = load i64, ptr %25, align 8, !tbaa !9
  %206 = getelementptr inbounds %struct.doublecomplex, ptr %204, i64 %205
  %207 = getelementptr inbounds %struct.doublecomplex, ptr %206, i32 0, i32 0
  store double %203, ptr %207, align 8, !tbaa !13
  %208 = load ptr, ptr %18, align 8, !tbaa !5
  %209 = load i64, ptr %25, align 8, !tbaa !9
  %210 = getelementptr inbounds %struct.doublecomplex, ptr %208, i64 %209
  %211 = getelementptr inbounds %struct.doublecomplex, ptr %210, i32 0, i32 1
  store double 0.000000e+00, ptr %211, align 8, !tbaa !15
  br label %212

212:                                              ; preds = %157, %113
  store i64 1, ptr %55, align 8, !tbaa !9
  %213 = load i64, ptr %39, align 8, !tbaa !9
  %214 = load i64, ptr %50, align 8, !tbaa !9
  %215 = load i64, ptr %23, align 8, !tbaa !9
  %216 = mul nsw i64 %214, %215
  %217 = add nsw i64 %213, %216
  store i64 %217, ptr %25, align 8, !tbaa !9
  %218 = load ptr, ptr %18, align 8, !tbaa !5
  %219 = load i64, ptr %25, align 8, !tbaa !9
  %220 = getelementptr inbounds %struct.doublecomplex, ptr %218, i64 %219
  %221 = getelementptr inbounds %struct.doublecomplex, ptr %220, i32 0, i32 0
  %222 = load double, ptr %221, align 8, !tbaa !13
  store double %222, ptr %30, align 8, !tbaa !11
  %223 = load double, ptr %30, align 8, !tbaa !11
  %224 = fcmp oge double %223, 0.000000e+00
  br i1 %224, label %225, label %227

225:                                              ; preds = %212
  %226 = load double, ptr %30, align 8, !tbaa !11
  br label %230

227:                                              ; preds = %212
  %228 = load double, ptr %30, align 8, !tbaa !11
  %229 = fneg double %228
  br label %230

230:                                              ; preds = %227, %225
  %231 = phi double [ %226, %225 ], [ %229, %227 ]
  store double %231, ptr %56, align 8, !tbaa !11
  %232 = load i64, ptr %39, align 8, !tbaa !9
  %233 = icmp sgt i64 %232, 1
  br i1 %233, label %234, label %281

234:                                              ; preds = %230
  %235 = load i64, ptr %39, align 8, !tbaa !9
  %236 = sub nsw i64 %235, 1
  store i64 %236, ptr %25, align 8, !tbaa !9
  %237 = load ptr, ptr %18, align 8, !tbaa !5
  %238 = load i64, ptr %50, align 8, !tbaa !9
  %239 = load i64, ptr %23, align 8, !tbaa !9
  %240 = mul nsw i64 %238, %239
  %241 = add nsw i64 %240, 1
  %242 = getelementptr inbounds %struct.doublecomplex, ptr %237, i64 %241
  %243 = call i64 @f2c_izamax(ptr noundef %25, ptr noundef %242, ptr noundef @c__1)
  store i64 %243, ptr %52, align 8, !tbaa !9
  %244 = load i64, ptr %52, align 8, !tbaa !9
  %245 = load i64, ptr %50, align 8, !tbaa !9
  %246 = load i64, ptr %23, align 8, !tbaa !9
  %247 = mul nsw i64 %245, %246
  %248 = add nsw i64 %244, %247
  store i64 %248, ptr %25, align 8, !tbaa !9
  %249 = load ptr, ptr %18, align 8, !tbaa !5
  %250 = load i64, ptr %25, align 8, !tbaa !9
  %251 = getelementptr inbounds %struct.doublecomplex, ptr %249, i64 %250
  %252 = getelementptr inbounds %struct.doublecomplex, ptr %251, i32 0, i32 0
  %253 = load double, ptr %252, align 8, !tbaa !13
  store double %253, ptr %30, align 8, !tbaa !11
  %254 = load double, ptr %30, align 8, !tbaa !11
  %255 = fcmp oge double %254, 0.000000e+00
  br i1 %255, label %256, label %258

256:                                              ; preds = %234
  %257 = load double, ptr %30, align 8, !tbaa !11
  br label %261

258:                                              ; preds = %234
  %259 = load double, ptr %30, align 8, !tbaa !11
  %260 = fneg double %259
  br label %261

261:                                              ; preds = %258, %256
  %262 = phi double [ %257, %256 ], [ %260, %258 ]
  %263 = load ptr, ptr %18, align 8, !tbaa !5
  %264 = load i64, ptr %52, align 8, !tbaa !9
  %265 = load i64, ptr %50, align 8, !tbaa !9
  %266 = load i64, ptr %23, align 8, !tbaa !9
  %267 = mul nsw i64 %265, %266
  %268 = add nsw i64 %264, %267
  %269 = getelementptr inbounds %struct.doublecomplex, ptr %263, i64 %268
  %270 = call double @d_imag(ptr noundef %269)
  store double %270, ptr %31, align 8, !tbaa !11
  %271 = load double, ptr %31, align 8, !tbaa !11
  %272 = fcmp oge double %271, 0.000000e+00
  br i1 %272, label %273, label %275

273:                                              ; preds = %261
  %274 = load double, ptr %31, align 8, !tbaa !11
  br label %278

275:                                              ; preds = %261
  %276 = load double, ptr %31, align 8, !tbaa !11
  %277 = fneg double %276
  br label %278

278:                                              ; preds = %275, %273
  %279 = phi double [ %274, %273 ], [ %277, %275 ]
  %280 = fadd double %262, %279
  store double %280, ptr %57, align 8, !tbaa !11
  br label %282

281:                                              ; preds = %230
  store double 0.000000e+00, ptr %57, align 8, !tbaa !11
  br label %282

282:                                              ; preds = %281, %278
  %283 = load double, ptr %56, align 8, !tbaa !11
  %284 = load double, ptr %57, align 8, !tbaa !11
  %285 = fcmp oge double %283, %284
  br i1 %285, label %286, label %288

286:                                              ; preds = %282
  %287 = load double, ptr %56, align 8, !tbaa !11
  br label %290

288:                                              ; preds = %282
  %289 = load double, ptr %57, align 8, !tbaa !11
  br label %290

290:                                              ; preds = %288, %286
  %291 = phi double [ %287, %286 ], [ %289, %288 ]
  %292 = fcmp oeq double %291, 0.000000e+00
  br i1 %292, label %293, label %326

293:                                              ; preds = %290
  %294 = load ptr, ptr %20, align 8, !tbaa !5
  %295 = load i64, ptr %294, align 8, !tbaa !9
  %296 = icmp eq i64 %295, 0
  br i1 %296, label %297, label %300

297:                                              ; preds = %293
  %298 = load i64, ptr %39, align 8, !tbaa !9
  %299 = load ptr, ptr %20, align 8, !tbaa !5
  store i64 %298, ptr %299, align 8, !tbaa !9
  br label %300

300:                                              ; preds = %297, %293
  %301 = load i64, ptr %39, align 8, !tbaa !9
  store i64 %301, ptr %49, align 8, !tbaa !9
  %302 = load i64, ptr %39, align 8, !tbaa !9
  %303 = load i64, ptr %39, align 8, !tbaa !9
  %304 = load i64, ptr %21, align 8, !tbaa !9
  %305 = mul nsw i64 %303, %304
  %306 = add nsw i64 %302, %305
  store i64 %306, ptr %25, align 8, !tbaa !9
  %307 = load i64, ptr %39, align 8, !tbaa !9
  %308 = load i64, ptr %39, align 8, !tbaa !9
  %309 = load i64, ptr %21, align 8, !tbaa !9
  %310 = mul nsw i64 %308, %309
  %311 = add nsw i64 %307, %310
  store i64 %311, ptr %26, align 8, !tbaa !9
  %312 = load ptr, ptr %15, align 8, !tbaa !5
  %313 = load i64, ptr %26, align 8, !tbaa !9
  %314 = getelementptr inbounds %struct.doublecomplex, ptr %312, i64 %313
  %315 = getelementptr inbounds %struct.doublecomplex, ptr %314, i32 0, i32 0
  %316 = load double, ptr %315, align 8, !tbaa !13
  store double %316, ptr %30, align 8, !tbaa !11
  %317 = load double, ptr %30, align 8, !tbaa !11
  %318 = load ptr, ptr %15, align 8, !tbaa !5
  %319 = load i64, ptr %25, align 8, !tbaa !9
  %320 = getelementptr inbounds %struct.doublecomplex, ptr %318, i64 %319
  %321 = getelementptr inbounds %struct.doublecomplex, ptr %320, i32 0, i32 0
  store double %317, ptr %321, align 8, !tbaa !13
  %322 = load ptr, ptr %15, align 8, !tbaa !5
  %323 = load i64, ptr %25, align 8, !tbaa !9
  %324 = getelementptr inbounds %struct.doublecomplex, ptr %322, i64 %323
  %325 = getelementptr inbounds %struct.doublecomplex, ptr %324, i32 0, i32 1
  store double 0.000000e+00, ptr %325, align 8, !tbaa !15
  br label %1252

326:                                              ; preds = %290
  %327 = load double, ptr %56, align 8, !tbaa !11
  %328 = load double, ptr %54, align 8, !tbaa !11
  %329 = load double, ptr %57, align 8, !tbaa !11
  %330 = fmul double %328, %329
  %331 = fcmp oge double %327, %330
  br i1 %331, label %332, label %334

332:                                              ; preds = %326
  %333 = load i64, ptr %39, align 8, !tbaa !9
  store i64 %333, ptr %49, align 8, !tbaa !9
  br label %647

334:                                              ; preds = %326
  %335 = load i64, ptr %52, align 8, !tbaa !9
  %336 = sub nsw i64 %335, 1
  store i64 %336, ptr %25, align 8, !tbaa !9
  %337 = load ptr, ptr %15, align 8, !tbaa !5
  %338 = load i64, ptr %52, align 8, !tbaa !9
  %339 = load i64, ptr %21, align 8, !tbaa !9
  %340 = mul nsw i64 %338, %339
  %341 = add nsw i64 %340, 1
  %342 = getelementptr inbounds %struct.doublecomplex, ptr %337, i64 %341
  %343 = load ptr, ptr %18, align 8, !tbaa !5
  %344 = load i64, ptr %50, align 8, !tbaa !9
  %345 = sub nsw i64 %344, 1
  %346 = load i64, ptr %23, align 8, !tbaa !9
  %347 = mul nsw i64 %345, %346
  %348 = add nsw i64 %347, 1
  %349 = getelementptr inbounds %struct.doublecomplex, ptr %343, i64 %348
  %350 = call i32 @f2c_zcopy(ptr noundef %25, ptr noundef %342, ptr noundef @c__1, ptr noundef %349, ptr noundef @c__1)
  %351 = load i64, ptr %52, align 8, !tbaa !9
  %352 = load i64, ptr %50, align 8, !tbaa !9
  %353 = sub nsw i64 %352, 1
  %354 = load i64, ptr %23, align 8, !tbaa !9
  %355 = mul nsw i64 %353, %354
  %356 = add nsw i64 %351, %355
  store i64 %356, ptr %25, align 8, !tbaa !9
  %357 = load i64, ptr %52, align 8, !tbaa !9
  %358 = load i64, ptr %52, align 8, !tbaa !9
  %359 = load i64, ptr %21, align 8, !tbaa !9
  %360 = mul nsw i64 %358, %359
  %361 = add nsw i64 %357, %360
  store i64 %361, ptr %26, align 8, !tbaa !9
  %362 = load ptr, ptr %15, align 8, !tbaa !5
  %363 = load i64, ptr %26, align 8, !tbaa !9
  %364 = getelementptr inbounds %struct.doublecomplex, ptr %362, i64 %363
  %365 = getelementptr inbounds %struct.doublecomplex, ptr %364, i32 0, i32 0
  %366 = load double, ptr %365, align 8, !tbaa !13
  store double %366, ptr %30, align 8, !tbaa !11
  %367 = load double, ptr %30, align 8, !tbaa !11
  %368 = load ptr, ptr %18, align 8, !tbaa !5
  %369 = load i64, ptr %25, align 8, !tbaa !9
  %370 = getelementptr inbounds %struct.doublecomplex, ptr %368, i64 %369
  %371 = getelementptr inbounds %struct.doublecomplex, ptr %370, i32 0, i32 0
  store double %367, ptr %371, align 8, !tbaa !13
  %372 = load ptr, ptr %18, align 8, !tbaa !5
  %373 = load i64, ptr %25, align 8, !tbaa !9
  %374 = getelementptr inbounds %struct.doublecomplex, ptr %372, i64 %373
  %375 = getelementptr inbounds %struct.doublecomplex, ptr %374, i32 0, i32 1
  store double 0.000000e+00, ptr %375, align 8, !tbaa !15
  %376 = load i64, ptr %39, align 8, !tbaa !9
  %377 = load i64, ptr %52, align 8, !tbaa !9
  %378 = sub nsw i64 %376, %377
  store i64 %378, ptr %25, align 8, !tbaa !9
  %379 = load ptr, ptr %15, align 8, !tbaa !5
  %380 = load i64, ptr %52, align 8, !tbaa !9
  %381 = load i64, ptr %52, align 8, !tbaa !9
  %382 = add nsw i64 %381, 1
  %383 = load i64, ptr %21, align 8, !tbaa !9
  %384 = mul nsw i64 %382, %383
  %385 = add nsw i64 %380, %384
  %386 = getelementptr inbounds %struct.doublecomplex, ptr %379, i64 %385
  %387 = load ptr, ptr %16, align 8, !tbaa !5
  %388 = load ptr, ptr %18, align 8, !tbaa !5
  %389 = load i64, ptr %52, align 8, !tbaa !9
  %390 = add nsw i64 %389, 1
  %391 = load i64, ptr %50, align 8, !tbaa !9
  %392 = sub nsw i64 %391, 1
  %393 = load i64, ptr %23, align 8, !tbaa !9
  %394 = mul nsw i64 %392, %393
  %395 = add nsw i64 %390, %394
  %396 = getelementptr inbounds %struct.doublecomplex, ptr %388, i64 %395
  %397 = call i32 @f2c_zcopy(ptr noundef %25, ptr noundef %386, ptr noundef %387, ptr noundef %396, ptr noundef @c__1)
  %398 = load i64, ptr %39, align 8, !tbaa !9
  %399 = load i64, ptr %52, align 8, !tbaa !9
  %400 = sub nsw i64 %398, %399
  store i64 %400, ptr %25, align 8, !tbaa !9
  %401 = load ptr, ptr %18, align 8, !tbaa !5
  %402 = load i64, ptr %52, align 8, !tbaa !9
  %403 = add nsw i64 %402, 1
  %404 = load i64, ptr %50, align 8, !tbaa !9
  %405 = sub nsw i64 %404, 1
  %406 = load i64, ptr %23, align 8, !tbaa !9
  %407 = mul nsw i64 %405, %406
  %408 = add nsw i64 %403, %407
  %409 = getelementptr inbounds %struct.doublecomplex, ptr %401, i64 %408
  %410 = call i32 @zlacgv_(ptr noundef %25, ptr noundef %409, ptr noundef @c__1)
  %411 = load i64, ptr %39, align 8, !tbaa !9
  %412 = load ptr, ptr %12, align 8, !tbaa !5
  %413 = load i64, ptr %412, align 8, !tbaa !9
  %414 = icmp slt i64 %411, %413
  br i1 %414, label %415, label %473

415:                                              ; preds = %334
  %416 = load ptr, ptr %12, align 8, !tbaa !5
  %417 = load i64, ptr %416, align 8, !tbaa !9
  %418 = load i64, ptr %39, align 8, !tbaa !9
  %419 = sub nsw i64 %417, %418
  store i64 %419, ptr %25, align 8, !tbaa !9
  %420 = getelementptr inbounds %struct.doublecomplex, ptr %34, i32 0, i32 0
  store double -1.000000e+00, ptr %420, align 8, !tbaa !13
  %421 = getelementptr inbounds %struct.doublecomplex, ptr %34, i32 0, i32 1
  store double -0.000000e+00, ptr %421, align 8, !tbaa !15
  %422 = load ptr, ptr %15, align 8, !tbaa !5
  %423 = load i64, ptr %39, align 8, !tbaa !9
  %424 = add nsw i64 %423, 1
  %425 = load i64, ptr %21, align 8, !tbaa !9
  %426 = mul nsw i64 %424, %425
  %427 = add nsw i64 %426, 1
  %428 = getelementptr inbounds %struct.doublecomplex, ptr %422, i64 %427
  %429 = load ptr, ptr %16, align 8, !tbaa !5
  %430 = load ptr, ptr %18, align 8, !tbaa !5
  %431 = load i64, ptr %52, align 8, !tbaa !9
  %432 = load i64, ptr %50, align 8, !tbaa !9
  %433 = add nsw i64 %432, 1
  %434 = load i64, ptr %23, align 8, !tbaa !9
  %435 = mul nsw i64 %433, %434
  %436 = add nsw i64 %431, %435
  %437 = getelementptr inbounds %struct.doublecomplex, ptr %430, i64 %436
  %438 = load ptr, ptr %19, align 8, !tbaa !5
  %439 = load ptr, ptr %18, align 8, !tbaa !5
  %440 = load i64, ptr %50, align 8, !tbaa !9
  %441 = sub nsw i64 %440, 1
  %442 = load i64, ptr %23, align 8, !tbaa !9
  %443 = mul nsw i64 %441, %442
  %444 = add nsw i64 %443, 1
  %445 = getelementptr inbounds %struct.doublecomplex, ptr %439, i64 %444
  %446 = call i32 @f2c_zgemv(ptr noundef @.str.1, ptr noundef %39, ptr noundef %25, ptr noundef %34, ptr noundef %428, ptr noundef %429, ptr noundef %437, ptr noundef %438, ptr noundef @c_b1, ptr noundef %445, ptr noundef @c__1)
  %447 = load i64, ptr %52, align 8, !tbaa !9
  %448 = load i64, ptr %50, align 8, !tbaa !9
  %449 = sub nsw i64 %448, 1
  %450 = load i64, ptr %23, align 8, !tbaa !9
  %451 = mul nsw i64 %449, %450
  %452 = add nsw i64 %447, %451
  store i64 %452, ptr %25, align 8, !tbaa !9
  %453 = load i64, ptr %52, align 8, !tbaa !9
  %454 = load i64, ptr %50, align 8, !tbaa !9
  %455 = sub nsw i64 %454, 1
  %456 = load i64, ptr %23, align 8, !tbaa !9
  %457 = mul nsw i64 %455, %456
  %458 = add nsw i64 %453, %457
  store i64 %458, ptr %26, align 8, !tbaa !9
  %459 = load ptr, ptr %18, align 8, !tbaa !5
  %460 = load i64, ptr %26, align 8, !tbaa !9
  %461 = getelementptr inbounds %struct.doublecomplex, ptr %459, i64 %460
  %462 = getelementptr inbounds %struct.doublecomplex, ptr %461, i32 0, i32 0
  %463 = load double, ptr %462, align 8, !tbaa !13
  store double %463, ptr %30, align 8, !tbaa !11
  %464 = load double, ptr %30, align 8, !tbaa !11
  %465 = load ptr, ptr %18, align 8, !tbaa !5
  %466 = load i64, ptr %25, align 8, !tbaa !9
  %467 = getelementptr inbounds %struct.doublecomplex, ptr %465, i64 %466
  %468 = getelementptr inbounds %struct.doublecomplex, ptr %467, i32 0, i32 0
  store double %464, ptr %468, align 8, !tbaa !13
  %469 = load ptr, ptr %18, align 8, !tbaa !5
  %470 = load i64, ptr %25, align 8, !tbaa !9
  %471 = getelementptr inbounds %struct.doublecomplex, ptr %469, i64 %470
  %472 = getelementptr inbounds %struct.doublecomplex, ptr %471, i32 0, i32 1
  store double 0.000000e+00, ptr %472, align 8, !tbaa !15
  br label %473

473:                                              ; preds = %415, %334
  %474 = load i64, ptr %39, align 8, !tbaa !9
  %475 = load i64, ptr %52, align 8, !tbaa !9
  %476 = sub nsw i64 %474, %475
  store i64 %476, ptr %25, align 8, !tbaa !9
  %477 = load i64, ptr %52, align 8, !tbaa !9
  %478 = load ptr, ptr %18, align 8, !tbaa !5
  %479 = load i64, ptr %52, align 8, !tbaa !9
  %480 = add nsw i64 %479, 1
  %481 = load i64, ptr %50, align 8, !tbaa !9
  %482 = sub nsw i64 %481, 1
  %483 = load i64, ptr %23, align 8, !tbaa !9
  %484 = mul nsw i64 %482, %483
  %485 = add nsw i64 %480, %484
  %486 = getelementptr inbounds %struct.doublecomplex, ptr %478, i64 %485
  %487 = call i64 @f2c_izamax(ptr noundef %25, ptr noundef %486, ptr noundef @c__1)
  %488 = add nsw i64 %477, %487
  store i64 %488, ptr %53, align 8, !tbaa !9
  %489 = load i64, ptr %53, align 8, !tbaa !9
  %490 = load i64, ptr %50, align 8, !tbaa !9
  %491 = sub nsw i64 %490, 1
  %492 = load i64, ptr %23, align 8, !tbaa !9
  %493 = mul nsw i64 %491, %492
  %494 = add nsw i64 %489, %493
  store i64 %494, ptr %25, align 8, !tbaa !9
  %495 = load ptr, ptr %18, align 8, !tbaa !5
  %496 = load i64, ptr %25, align 8, !tbaa !9
  %497 = getelementptr inbounds %struct.doublecomplex, ptr %495, i64 %496
  %498 = getelementptr inbounds %struct.doublecomplex, ptr %497, i32 0, i32 0
  %499 = load double, ptr %498, align 8, !tbaa !13
  store double %499, ptr %30, align 8, !tbaa !11
  %500 = load double, ptr %30, align 8, !tbaa !11
  %501 = fcmp oge double %500, 0.000000e+00
  br i1 %501, label %502, label %504

502:                                              ; preds = %473
  %503 = load double, ptr %30, align 8, !tbaa !11
  br label %507

504:                                              ; preds = %473
  %505 = load double, ptr %30, align 8, !tbaa !11
  %506 = fneg double %505
  br label %507

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

520:                                              ; preds = %507
  %521 = load double, ptr %31, align 8, !tbaa !11
  br label %525

522:                                              ; preds = %507
  %523 = load double, ptr %31, align 8, !tbaa !11
  %524 = fneg double %523
  br label %525

525:                                              ; preds = %522, %520
  %526 = phi double [ %521, %520 ], [ %524, %522 ]
  %527 = fadd double %508, %526
  store double %527, ptr %58, align 8, !tbaa !11
  %528 = load i64, ptr %52, align 8, !tbaa !9
  %529 = icmp sgt i64 %528, 1
  br i1 %529, label %530, label %590

530:                                              ; preds = %525
  %531 = load i64, ptr %52, align 8, !tbaa !9
  %532 = sub nsw i64 %531, 1
  store i64 %532, ptr %25, align 8, !tbaa !9
  %533 = load ptr, ptr %18, align 8, !tbaa !5
  %534 = load i64, ptr %50, align 8, !tbaa !9
  %535 = sub nsw i64 %534, 1
  %536 = load i64, ptr %23, align 8, !tbaa !9
  %537 = mul nsw i64 %535, %536
  %538 = add nsw i64 %537, 1
  %539 = getelementptr inbounds %struct.doublecomplex, ptr %533, i64 %538
  %540 = call i64 @f2c_izamax(ptr noundef %25, ptr noundef %539, ptr noundef @c__1)
  store i64 %540, ptr %53, align 8, !tbaa !9
  %541 = load i64, ptr %53, align 8, !tbaa !9
  %542 = load i64, ptr %50, align 8, !tbaa !9
  %543 = sub nsw i64 %542, 1
  %544 = load i64, ptr %23, align 8, !tbaa !9
  %545 = mul nsw i64 %543, %544
  %546 = add nsw i64 %541, %545
  store i64 %546, ptr %25, align 8, !tbaa !9
  %547 = load double, ptr %58, align 8, !tbaa !11
  store double %547, ptr %32, align 8, !tbaa !11
  %548 = load ptr, ptr %18, align 8, !tbaa !5
  %549 = load i64, ptr %25, align 8, !tbaa !9
  %550 = getelementptr inbounds %struct.doublecomplex, ptr %548, i64 %549
  %551 = getelementptr inbounds %struct.doublecomplex, ptr %550, i32 0, i32 0
  %552 = load double, ptr %551, align 8, !tbaa !13
  store double %552, ptr %30, align 8, !tbaa !11
  %553 = load double, ptr %30, align 8, !tbaa !11
  %554 = fcmp oge double %553, 0.000000e+00
  br i1 %554, label %555, label %557

555:                                              ; preds = %530
  %556 = load double, ptr %30, align 8, !tbaa !11
  br label %560

557:                                              ; preds = %530
  %558 = load double, ptr %30, align 8, !tbaa !11
  %559 = fneg double %558
  br label %560

560:                                              ; preds = %557, %555
  %561 = phi double [ %556, %555 ], [ %559, %557 ]
  %562 = load ptr, ptr %18, align 8, !tbaa !5
  %563 = load i64, ptr %53, align 8, !tbaa !9
  %564 = load i64, ptr %50, align 8, !tbaa !9
  %565 = sub nsw i64 %564, 1
  %566 = load i64, ptr %23, align 8, !tbaa !9
  %567 = mul nsw i64 %565, %566
  %568 = add nsw i64 %563, %567
  %569 = getelementptr inbounds %struct.doublecomplex, ptr %562, i64 %568
  %570 = call double @d_imag(ptr noundef %569)
  store double %570, ptr %31, align 8, !tbaa !11
  %571 = load double, ptr %31, align 8, !tbaa !11
  %572 = fcmp oge double %571, 0.000000e+00
  br i1 %572, label %573, label %575

573:                                              ; preds = %560
  %574 = load double, ptr %31, align 8, !tbaa !11
  br label %578

575:                                              ; preds = %560
  %576 = load double, ptr %31, align 8, !tbaa !11
  %577 = fneg double %576
  br label %578

578:                                              ; preds = %575, %573
  %579 = phi double [ %574, %573 ], [ %577, %575 ]
  %580 = fadd double %561, %579
  store double %580, ptr %33, align 8, !tbaa !11
  %581 = load double, ptr %32, align 8, !tbaa !11
  %582 = load double, ptr %33, align 8, !tbaa !11
  %583 = fcmp oge double %581, %582
  br i1 %583, label %584, label %586

584:                                              ; preds = %578
  %585 = load double, ptr %32, align 8, !tbaa !11
  br label %588

586:                                              ; preds = %578
  %587 = load double, ptr %33, align 8, !tbaa !11
  br label %588

588:                                              ; preds = %586, %584
  %589 = phi double [ %585, %584 ], [ %587, %586 ]
  store double %589, ptr %58, align 8, !tbaa !11
  br label %590

590:                                              ; preds = %588, %525
  %591 = load double, ptr %56, align 8, !tbaa !11
  %592 = load double, ptr %54, align 8, !tbaa !11
  %593 = load double, ptr %57, align 8, !tbaa !11
  %594 = fmul double %592, %593
  %595 = load double, ptr %57, align 8, !tbaa !11
  %596 = load double, ptr %58, align 8, !tbaa !11
  %597 = fdiv double %595, %596
  %598 = fmul double %594, %597
  %599 = fcmp oge double %591, %598
  br i1 %599, label %600, label %602

600:                                              ; preds = %590
  %601 = load i64, ptr %39, align 8, !tbaa !9
  store i64 %601, ptr %49, align 8, !tbaa !9
  br label %646

602:                                              ; preds = %590
  %603 = load i64, ptr %52, align 8, !tbaa !9
  %604 = load i64, ptr %50, align 8, !tbaa !9
  %605 = sub nsw i64 %604, 1
  %606 = load i64, ptr %23, align 8, !tbaa !9
  %607 = mul nsw i64 %605, %606
  %608 = add nsw i64 %603, %607
  store i64 %608, ptr %25, align 8, !tbaa !9
  %609 = load ptr, ptr %18, align 8, !tbaa !5
  %610 = load i64, ptr %25, align 8, !tbaa !9
  %611 = getelementptr inbounds %struct.doublecomplex, ptr %609, i64 %610
  %612 = getelementptr inbounds %struct.doublecomplex, ptr %611, i32 0, i32 0
  %613 = load double, ptr %612, align 8, !tbaa !13
  store double %613, ptr %30, align 8, !tbaa !11
  %614 = load double, ptr %30, align 8, !tbaa !11
  %615 = fcmp oge double %614, 0.000000e+00
  br i1 %615, label %616, label %618

616:                                              ; preds = %602
  %617 = load double, ptr %30, align 8, !tbaa !11
  br label %621

618:                                              ; preds = %602
  %619 = load double, ptr %30, align 8, !tbaa !11
  %620 = fneg double %619
  br label %621

621:                                              ; preds = %618, %616
  %622 = phi double [ %617, %616 ], [ %620, %618 ]
  %623 = load double, ptr %54, align 8, !tbaa !11
  %624 = load double, ptr %58, align 8, !tbaa !11
  %625 = fmul double %623, %624
  %626 = fcmp oge double %622, %625
  br i1 %626, label %627, label %643

627:                                              ; preds = %621
  %628 = load i64, ptr %52, align 8, !tbaa !9
  store i64 %628, ptr %49, align 8, !tbaa !9
  %629 = load ptr, ptr %18, align 8, !tbaa !5
  %630 = load i64, ptr %50, align 8, !tbaa !9
  %631 = sub nsw i64 %630, 1
  %632 = load i64, ptr %23, align 8, !tbaa !9
  %633 = mul nsw i64 %631, %632
  %634 = add nsw i64 %633, 1
  %635 = getelementptr inbounds %struct.doublecomplex, ptr %629, i64 %634
  %636 = load ptr, ptr %18, align 8, !tbaa !5
  %637 = load i64, ptr %50, align 8, !tbaa !9
  %638 = load i64, ptr %23, align 8, !tbaa !9
  %639 = mul nsw i64 %637, %638
  %640 = add nsw i64 %639, 1
  %641 = getelementptr inbounds %struct.doublecomplex, ptr %636, i64 %640
  %642 = call i32 @f2c_zcopy(ptr noundef %39, ptr noundef %635, ptr noundef @c__1, ptr noundef %641, ptr noundef @c__1)
  br label %645

643:                                              ; preds = %621
  %644 = load i64, ptr %52, align 8, !tbaa !9
  store i64 %644, ptr %49, align 8, !tbaa !9
  store i64 2, ptr %55, align 8, !tbaa !9
  br label %645

645:                                              ; preds = %643, %627
  br label %646

646:                                              ; preds = %645, %600
  br label %647

647:                                              ; preds = %646, %332
  %648 = load i64, ptr %39, align 8, !tbaa !9
  %649 = load i64, ptr %55, align 8, !tbaa !9
  %650 = sub nsw i64 %648, %649
  %651 = add nsw i64 %650, 1
  store i64 %651, ptr %47, align 8, !tbaa !9
  %652 = load ptr, ptr %13, align 8, !tbaa !5
  %653 = load i64, ptr %652, align 8, !tbaa !9
  %654 = load i64, ptr %47, align 8, !tbaa !9
  %655 = add nsw i64 %653, %654
  %656 = load ptr, ptr %12, align 8, !tbaa !5
  %657 = load i64, ptr %656, align 8, !tbaa !9
  %658 = sub nsw i64 %655, %657
  store i64 %658, ptr %51, align 8, !tbaa !9
  %659 = load i64, ptr %49, align 8, !tbaa !9
  %660 = load i64, ptr %47, align 8, !tbaa !9
  %661 = icmp ne i64 %659, %660
  br i1 %661, label %662, label %789

662:                                              ; preds = %647
  %663 = load i64, ptr %49, align 8, !tbaa !9
  %664 = load i64, ptr %49, align 8, !tbaa !9
  %665 = load i64, ptr %21, align 8, !tbaa !9
  %666 = mul nsw i64 %664, %665
  %667 = add nsw i64 %663, %666
  store i64 %667, ptr %25, align 8, !tbaa !9
  %668 = load i64, ptr %47, align 8, !tbaa !9
  %669 = load i64, ptr %47, align 8, !tbaa !9
  %670 = load i64, ptr %21, align 8, !tbaa !9
  %671 = mul nsw i64 %669, %670
  %672 = add nsw i64 %668, %671
  store i64 %672, ptr %26, align 8, !tbaa !9
  %673 = load ptr, ptr %15, align 8, !tbaa !5
  %674 = load i64, ptr %26, align 8, !tbaa !9
  %675 = getelementptr inbounds %struct.doublecomplex, ptr %673, i64 %674
  %676 = getelementptr inbounds %struct.doublecomplex, ptr %675, i32 0, i32 0
  %677 = load double, ptr %676, align 8, !tbaa !13
  store double %677, ptr %30, align 8, !tbaa !11
  %678 = load double, ptr %30, align 8, !tbaa !11
  %679 = load ptr, ptr %15, align 8, !tbaa !5
  %680 = load i64, ptr %25, align 8, !tbaa !9
  %681 = getelementptr inbounds %struct.doublecomplex, ptr %679, i64 %680
  %682 = getelementptr inbounds %struct.doublecomplex, ptr %681, i32 0, i32 0
  store double %678, ptr %682, align 8, !tbaa !13
  %683 = load ptr, ptr %15, align 8, !tbaa !5
  %684 = load i64, ptr %25, align 8, !tbaa !9
  %685 = getelementptr inbounds %struct.doublecomplex, ptr %683, i64 %684
  %686 = getelementptr inbounds %struct.doublecomplex, ptr %685, i32 0, i32 1
  store double 0.000000e+00, ptr %686, align 8, !tbaa !15
  %687 = load i64, ptr %47, align 8, !tbaa !9
  %688 = sub nsw i64 %687, 1
  %689 = load i64, ptr %49, align 8, !tbaa !9
  %690 = sub nsw i64 %688, %689
  store i64 %690, ptr %25, align 8, !tbaa !9
  %691 = load ptr, ptr %15, align 8, !tbaa !5
  %692 = load i64, ptr %49, align 8, !tbaa !9
  %693 = add nsw i64 %692, 1
  %694 = load i64, ptr %47, align 8, !tbaa !9
  %695 = load i64, ptr %21, align 8, !tbaa !9
  %696 = mul nsw i64 %694, %695
  %697 = add nsw i64 %693, %696
  %698 = getelementptr inbounds %struct.doublecomplex, ptr %691, i64 %697
  %699 = load ptr, ptr %15, align 8, !tbaa !5
  %700 = load i64, ptr %49, align 8, !tbaa !9
  %701 = load i64, ptr %49, align 8, !tbaa !9
  %702 = add nsw i64 %701, 1
  %703 = load i64, ptr %21, align 8, !tbaa !9
  %704 = mul nsw i64 %702, %703
  %705 = add nsw i64 %700, %704
  %706 = getelementptr inbounds %struct.doublecomplex, ptr %699, i64 %705
  %707 = load ptr, ptr %16, align 8, !tbaa !5
  %708 = call i32 @f2c_zcopy(ptr noundef %25, ptr noundef %698, ptr noundef @c__1, ptr noundef %706, ptr noundef %707)
  %709 = load i64, ptr %47, align 8, !tbaa !9
  %710 = sub nsw i64 %709, 1
  %711 = load i64, ptr %49, align 8, !tbaa !9
  %712 = sub nsw i64 %710, %711
  store i64 %712, ptr %25, align 8, !tbaa !9
  %713 = load ptr, ptr %15, align 8, !tbaa !5
  %714 = load i64, ptr %49, align 8, !tbaa !9
  %715 = load i64, ptr %49, align 8, !tbaa !9
  %716 = add nsw i64 %715, 1
  %717 = load i64, ptr %21, align 8, !tbaa !9
  %718 = mul nsw i64 %716, %717
  %719 = add nsw i64 %714, %718
  %720 = getelementptr inbounds %struct.doublecomplex, ptr %713, i64 %719
  %721 = load ptr, ptr %16, align 8, !tbaa !5
  %722 = call i32 @zlacgv_(ptr noundef %25, ptr noundef %720, ptr noundef %721)
  %723 = load i64, ptr %49, align 8, !tbaa !9
  %724 = sub nsw i64 %723, 1
  store i64 %724, ptr %25, align 8, !tbaa !9
  %725 = load ptr, ptr %15, align 8, !tbaa !5
  %726 = load i64, ptr %47, align 8, !tbaa !9
  %727 = load i64, ptr %21, align 8, !tbaa !9
  %728 = mul nsw i64 %726, %727
  %729 = add nsw i64 %728, 1
  %730 = getelementptr inbounds %struct.doublecomplex, ptr %725, i64 %729
  %731 = load ptr, ptr %15, align 8, !tbaa !5
  %732 = load i64, ptr %49, align 8, !tbaa !9
  %733 = load i64, ptr %21, align 8, !tbaa !9
  %734 = mul nsw i64 %732, %733
  %735 = add nsw i64 %734, 1
  %736 = getelementptr inbounds %struct.doublecomplex, ptr %731, i64 %735
  %737 = call i32 @f2c_zcopy(ptr noundef %25, ptr noundef %730, ptr noundef @c__1, ptr noundef %736, ptr noundef @c__1)
  %738 = load i64, ptr %47, align 8, !tbaa !9
  %739 = load ptr, ptr %12, align 8, !tbaa !5
  %740 = load i64, ptr %739, align 8, !tbaa !9
  %741 = icmp slt i64 %738, %740
  br i1 %741, label %742, label %766

742:                                              ; preds = %662
  %743 = load ptr, ptr %12, align 8, !tbaa !5
  %744 = load i64, ptr %743, align 8, !tbaa !9
  %745 = load i64, ptr %47, align 8, !tbaa !9
  %746 = sub nsw i64 %744, %745
  store i64 %746, ptr %25, align 8, !tbaa !9
  %747 = load ptr, ptr %15, align 8, !tbaa !5
  %748 = load i64, ptr %47, align 8, !tbaa !9
  %749 = load i64, ptr %47, align 8, !tbaa !9
  %750 = add nsw i64 %749, 1
  %751 = load i64, ptr %21, align 8, !tbaa !9
  %752 = mul nsw i64 %750, %751
  %753 = add nsw i64 %748, %752
  %754 = getelementptr inbounds %struct.doublecomplex, ptr %747, i64 %753
  %755 = load ptr, ptr %16, align 8, !tbaa !5
  %756 = load ptr, ptr %15, align 8, !tbaa !5
  %757 = load i64, ptr %49, align 8, !tbaa !9
  %758 = load i64, ptr %47, align 8, !tbaa !9
  %759 = add nsw i64 %758, 1
  %760 = load i64, ptr %21, align 8, !tbaa !9
  %761 = mul nsw i64 %759, %760
  %762 = add nsw i64 %757, %761
  %763 = getelementptr inbounds %struct.doublecomplex, ptr %756, i64 %762
  %764 = load ptr, ptr %16, align 8, !tbaa !5
  %765 = call i32 @f2c_zswap(ptr noundef %25, ptr noundef %754, ptr noundef %755, ptr noundef %763, ptr noundef %764)
  br label %766

766:                                              ; preds = %742, %662
  %767 = load ptr, ptr %12, align 8, !tbaa !5
  %768 = load i64, ptr %767, align 8, !tbaa !9
  %769 = load i64, ptr %47, align 8, !tbaa !9
  %770 = sub nsw i64 %768, %769
  %771 = add nsw i64 %770, 1
  store i64 %771, ptr %25, align 8, !tbaa !9
  %772 = load ptr, ptr %18, align 8, !tbaa !5
  %773 = load i64, ptr %47, align 8, !tbaa !9
  %774 = load i64, ptr %51, align 8, !tbaa !9
  %775 = load i64, ptr %23, align 8, !tbaa !9
  %776 = mul nsw i64 %774, %775
  %777 = add nsw i64 %773, %776
  %778 = getelementptr inbounds %struct.doublecomplex, ptr %772, i64 %777
  %779 = load ptr, ptr %19, align 8, !tbaa !5
  %780 = load ptr, ptr %18, align 8, !tbaa !5
  %781 = load i64, ptr %49, align 8, !tbaa !9
  %782 = load i64, ptr %51, align 8, !tbaa !9
  %783 = load i64, ptr %23, align 8, !tbaa !9
  %784 = mul nsw i64 %782, %783
  %785 = add nsw i64 %781, %784
  %786 = getelementptr inbounds %struct.doublecomplex, ptr %780, i64 %785
  %787 = load ptr, ptr %19, align 8, !tbaa !5
  %788 = call i32 @f2c_zswap(ptr noundef %25, ptr noundef %778, ptr noundef %779, ptr noundef %786, ptr noundef %787)
  br label %789

789:                                              ; preds = %766, %647
  %790 = load i64, ptr %55, align 8, !tbaa !9
  %791 = icmp eq i64 %790, 1
  br i1 %791, label %792, label %835

792:                                              ; preds = %789
  %793 = load ptr, ptr %18, align 8, !tbaa !5
  %794 = load i64, ptr %50, align 8, !tbaa !9
  %795 = load i64, ptr %23, align 8, !tbaa !9
  %796 = mul nsw i64 %794, %795
  %797 = add nsw i64 %796, 1
  %798 = getelementptr inbounds %struct.doublecomplex, ptr %793, i64 %797
  %799 = load ptr, ptr %15, align 8, !tbaa !5
  %800 = load i64, ptr %39, align 8, !tbaa !9
  %801 = load i64, ptr %21, align 8, !tbaa !9
  %802 = mul nsw i64 %800, %801
  %803 = add nsw i64 %802, 1
  %804 = getelementptr inbounds %struct.doublecomplex, ptr %799, i64 %803
  %805 = call i32 @f2c_zcopy(ptr noundef %39, ptr noundef %798, ptr noundef @c__1, ptr noundef %804, ptr noundef @c__1)
  %806 = load i64, ptr %39, align 8, !tbaa !9
  %807 = load i64, ptr %39, align 8, !tbaa !9
  %808 = load i64, ptr %21, align 8, !tbaa !9
  %809 = mul nsw i64 %807, %808
  %810 = add nsw i64 %806, %809
  store i64 %810, ptr %25, align 8, !tbaa !9
  %811 = load ptr, ptr %15, align 8, !tbaa !5
  %812 = load i64, ptr %25, align 8, !tbaa !9
  %813 = getelementptr inbounds %struct.doublecomplex, ptr %811, i64 %812
  %814 = getelementptr inbounds %struct.doublecomplex, ptr %813, i32 0, i32 0
  %815 = load double, ptr %814, align 8, !tbaa !13
  %816 = fdiv double 1.000000e+00, %815
  store double %816, ptr %41, align 8, !tbaa !11
  %817 = load i64, ptr %39, align 8, !tbaa !9
  %818 = sub nsw i64 %817, 1
  store i64 %818, ptr %25, align 8, !tbaa !9
  %819 = load ptr, ptr %15, align 8, !tbaa !5
  %820 = load i64, ptr %39, align 8, !tbaa !9
  %821 = load i64, ptr %21, align 8, !tbaa !9
  %822 = mul nsw i64 %820, %821
  %823 = add nsw i64 %822, 1
  %824 = getelementptr inbounds %struct.doublecomplex, ptr %819, i64 %823
  %825 = call i32 @f2c_zdscal(ptr noundef %25, ptr noundef %41, ptr noundef %824, ptr noundef @c__1)
  %826 = load i64, ptr %39, align 8, !tbaa !9
  %827 = sub nsw i64 %826, 1
  store i64 %827, ptr %25, align 8, !tbaa !9
  %828 = load ptr, ptr %18, align 8, !tbaa !5
  %829 = load i64, ptr %50, align 8, !tbaa !9
  %830 = load i64, ptr %23, align 8, !tbaa !9
  %831 = mul nsw i64 %829, %830
  %832 = add nsw i64 %831, 1
  %833 = getelementptr inbounds %struct.doublecomplex, ptr %828, i64 %832
  %834 = call i32 @zlacgv_(ptr noundef %25, ptr noundef %833, ptr noundef @c__1)
  br label %1251

835:                                              ; preds = %789
  %836 = load i64, ptr %39, align 8, !tbaa !9
  %837 = icmp sgt i64 %836, 2
  br i1 %837, label %838, label %1141

838:                                              ; preds = %835
  %839 = load i64, ptr %39, align 8, !tbaa !9
  %840 = sub nsw i64 %839, 1
  %841 = load i64, ptr %50, align 8, !tbaa !9
  %842 = load i64, ptr %23, align 8, !tbaa !9
  %843 = mul nsw i64 %841, %842
  %844 = add nsw i64 %840, %843
  store i64 %844, ptr %25, align 8, !tbaa !9
  %845 = load ptr, ptr %18, align 8, !tbaa !5
  %846 = load i64, ptr %25, align 8, !tbaa !9
  %847 = getelementptr inbounds %struct.doublecomplex, ptr %845, i64 %846
  %848 = getelementptr inbounds %struct.doublecomplex, ptr %847, i32 0, i32 0
  %849 = load double, ptr %848, align 8, !tbaa !13
  %850 = getelementptr inbounds %struct.doublecomplex, ptr %43, i32 0, i32 0
  store double %849, ptr %850, align 8, !tbaa !13
  %851 = load ptr, ptr %18, align 8, !tbaa !5
  %852 = load i64, ptr %25, align 8, !tbaa !9
  %853 = getelementptr inbounds %struct.doublecomplex, ptr %851, i64 %852
  %854 = getelementptr inbounds %struct.doublecomplex, ptr %853, i32 0, i32 1
  %855 = load double, ptr %854, align 8, !tbaa !15
  %856 = getelementptr inbounds %struct.doublecomplex, ptr %43, i32 0, i32 1
  store double %855, ptr %856, align 8, !tbaa !15
  call void @d_cnjg(ptr noundef %35, ptr noundef %43)
  %857 = load ptr, ptr %18, align 8, !tbaa !5
  %858 = load i64, ptr %39, align 8, !tbaa !9
  %859 = load i64, ptr %50, align 8, !tbaa !9
  %860 = load i64, ptr %23, align 8, !tbaa !9
  %861 = mul nsw i64 %859, %860
  %862 = add nsw i64 %858, %861
  %863 = getelementptr inbounds %struct.doublecomplex, ptr %857, i64 %862
  call void @z_div(ptr noundef %34, ptr noundef %863, ptr noundef %35)
  %864 = getelementptr inbounds %struct.doublecomplex, ptr %34, i32 0, i32 0
  %865 = load double, ptr %864, align 8, !tbaa !13
  %866 = getelementptr inbounds %struct.doublecomplex, ptr %42, i32 0, i32 0
  store double %865, ptr %866, align 8, !tbaa !13
  %867 = getelementptr inbounds %struct.doublecomplex, ptr %34, i32 0, i32 1
  %868 = load double, ptr %867, align 8, !tbaa !15
  %869 = getelementptr inbounds %struct.doublecomplex, ptr %42, i32 0, i32 1
  store double %868, ptr %869, align 8, !tbaa !15
  %870 = load ptr, ptr %18, align 8, !tbaa !5
  %871 = load i64, ptr %39, align 8, !tbaa !9
  %872 = sub nsw i64 %871, 1
  %873 = load i64, ptr %50, align 8, !tbaa !9
  %874 = sub nsw i64 %873, 1
  %875 = load i64, ptr %23, align 8, !tbaa !9
  %876 = mul nsw i64 %874, %875
  %877 = add nsw i64 %872, %876
  %878 = getelementptr inbounds %struct.doublecomplex, ptr %870, i64 %877
  call void @z_div(ptr noundef %34, ptr noundef %878, ptr noundef %43)
  %879 = getelementptr inbounds %struct.doublecomplex, ptr %34, i32 0, i32 0
  %880 = load double, ptr %879, align 8, !tbaa !13
  %881 = getelementptr inbounds %struct.doublecomplex, ptr %44, i32 0, i32 0
  store double %880, ptr %881, align 8, !tbaa !13
  %882 = getelementptr inbounds %struct.doublecomplex, ptr %34, i32 0, i32 1
  %883 = load double, ptr %882, align 8, !tbaa !15
  %884 = getelementptr inbounds %struct.doublecomplex, ptr %44, i32 0, i32 1
  store double %883, ptr %884, align 8, !tbaa !15
  %885 = getelementptr inbounds %struct.doublecomplex, ptr %42, i32 0, i32 0
  %886 = load double, ptr %885, align 8, !tbaa !13
  %887 = getelementptr inbounds %struct.doublecomplex, ptr %44, i32 0, i32 0
  %888 = load double, ptr %887, align 8, !tbaa !13
  %889 = getelementptr inbounds %struct.doublecomplex, ptr %42, i32 0, i32 1
  %890 = load double, ptr %889, align 8, !tbaa !15
  %891 = getelementptr inbounds %struct.doublecomplex, ptr %44, i32 0, i32 1
  %892 = load double, ptr %891, align 8, !tbaa !15
  %893 = fmul double %890, %892
  %894 = fneg double %893
  %895 = call double @llvm.fmuladd.f64(double %886, double %888, double %894)
  %896 = getelementptr inbounds %struct.doublecomplex, ptr %34, i32 0, i32 0
  store double %895, ptr %896, align 8, !tbaa !13
  %897 = getelementptr inbounds %struct.doublecomplex, ptr %42, i32 0, i32 0
  %898 = load double, ptr %897, align 8, !tbaa !13
  %899 = getelementptr inbounds %struct.doublecomplex, ptr %44, i32 0, i32 1
  %900 = load double, ptr %899, align 8, !tbaa !15
  %901 = getelementptr inbounds %struct.doublecomplex, ptr %42, i32 0, i32 1
  %902 = load double, ptr %901, align 8, !tbaa !15
  %903 = getelementptr inbounds %struct.doublecomplex, ptr %44, i32 0, i32 0
  %904 = load double, ptr %903, align 8, !tbaa !13
  %905 = fmul double %902, %904
  %906 = call double @llvm.fmuladd.f64(double %898, double %900, double %905)
  %907 = getelementptr inbounds %struct.doublecomplex, ptr %34, i32 0, i32 1
  store double %906, ptr %907, align 8, !tbaa !15
  %908 = getelementptr inbounds %struct.doublecomplex, ptr %34, i32 0, i32 0
  %909 = load double, ptr %908, align 8, !tbaa !13
  %910 = fsub double %909, 1.000000e+00
  %911 = fdiv double 1.000000e+00, %910
  store double %911, ptr %40, align 8, !tbaa !11
  %912 = load double, ptr %40, align 8, !tbaa !11
  %913 = getelementptr inbounds %struct.doublecomplex, ptr %35, i32 0, i32 0
  store double %912, ptr %913, align 8, !tbaa !13
  %914 = getelementptr inbounds %struct.doublecomplex, ptr %35, i32 0, i32 1
  store double 0.000000e+00, ptr %914, align 8, !tbaa !15
  call void @z_div(ptr noundef %34, ptr noundef %35, ptr noundef %43)
  %915 = getelementptr inbounds %struct.doublecomplex, ptr %34, i32 0, i32 0
  %916 = load double, ptr %915, align 8, !tbaa !13
  %917 = getelementptr inbounds %struct.doublecomplex, ptr %43, i32 0, i32 0
  store double %916, ptr %917, align 8, !tbaa !13
  %918 = getelementptr inbounds %struct.doublecomplex, ptr %34, i32 0, i32 1
  %919 = load double, ptr %918, align 8, !tbaa !15
  %920 = getelementptr inbounds %struct.doublecomplex, ptr %43, i32 0, i32 1
  store double %919, ptr %920, align 8, !tbaa !15
  %921 = load i64, ptr %39, align 8, !tbaa !9
  %922 = sub nsw i64 %921, 2
  store i64 %922, ptr %25, align 8, !tbaa !9
  store i64 1, ptr %38, align 8, !tbaa !9
  br label %923

923:                                              ; preds = %1137, %838
  %924 = load i64, ptr %38, align 8, !tbaa !9
  %925 = load i64, ptr %25, align 8, !tbaa !9
  %926 = icmp sle i64 %924, %925
  br i1 %926, label %927, label %1140

927:                                              ; preds = %923
  %928 = load i64, ptr %38, align 8, !tbaa !9
  %929 = load i64, ptr %39, align 8, !tbaa !9
  %930 = sub nsw i64 %929, 1
  %931 = load i64, ptr %21, align 8, !tbaa !9
  %932 = mul nsw i64 %930, %931
  %933 = add nsw i64 %928, %932
  store i64 %933, ptr %26, align 8, !tbaa !9
  %934 = load i64, ptr %38, align 8, !tbaa !9
  %935 = load i64, ptr %50, align 8, !tbaa !9
  %936 = sub nsw i64 %935, 1
  %937 = load i64, ptr %23, align 8, !tbaa !9
  %938 = mul nsw i64 %936, %937
  %939 = add nsw i64 %934, %938
  store i64 %939, ptr %27, align 8, !tbaa !9
  %940 = getelementptr inbounds %struct.doublecomplex, ptr %42, i32 0, i32 0
  %941 = load double, ptr %940, align 8, !tbaa !13
  %942 = load ptr, ptr %18, align 8, !tbaa !5
  %943 = load i64, ptr %27, align 8, !tbaa !9
  %944 = getelementptr inbounds %struct.doublecomplex, ptr %942, i64 %943
  %945 = getelementptr inbounds %struct.doublecomplex, ptr %944, i32 0, i32 0
  %946 = load double, ptr %945, align 8, !tbaa !13
  %947 = getelementptr inbounds %struct.doublecomplex, ptr %42, i32 0, i32 1
  %948 = load double, ptr %947, align 8, !tbaa !15
  %949 = load ptr, ptr %18, align 8, !tbaa !5
  %950 = load i64, ptr %27, align 8, !tbaa !9
  %951 = getelementptr inbounds %struct.doublecomplex, ptr %949, i64 %950
  %952 = getelementptr inbounds %struct.doublecomplex, ptr %951, i32 0, i32 1
  %953 = load double, ptr %952, align 8, !tbaa !15
  %954 = fmul double %948, %953
  %955 = fneg double %954
  %956 = call double @llvm.fmuladd.f64(double %941, double %946, double %955)
  %957 = getelementptr inbounds %struct.doublecomplex, ptr %36, i32 0, i32 0
  store double %956, ptr %957, align 8, !tbaa !13
  %958 = getelementptr inbounds %struct.doublecomplex, ptr %42, i32 0, i32 0
  %959 = load double, ptr %958, align 8, !tbaa !13
  %960 = load ptr, ptr %18, align 8, !tbaa !5
  %961 = load i64, ptr %27, align 8, !tbaa !9
  %962 = getelementptr inbounds %struct.doublecomplex, ptr %960, i64 %961
  %963 = getelementptr inbounds %struct.doublecomplex, ptr %962, i32 0, i32 1
  %964 = load double, ptr %963, align 8, !tbaa !15
  %965 = getelementptr inbounds %struct.doublecomplex, ptr %42, i32 0, i32 1
  %966 = load double, ptr %965, align 8, !tbaa !15
  %967 = load ptr, ptr %18, align 8, !tbaa !5
  %968 = load i64, ptr %27, align 8, !tbaa !9
  %969 = getelementptr inbounds %struct.doublecomplex, ptr %967, i64 %968
  %970 = getelementptr inbounds %struct.doublecomplex, ptr %969, i32 0, i32 0
  %971 = load double, ptr %970, align 8, !tbaa !13
  %972 = fmul double %966, %971
  %973 = call double @llvm.fmuladd.f64(double %959, double %964, double %972)
  %974 = getelementptr inbounds %struct.doublecomplex, ptr %36, i32 0, i32 1
  store double %973, ptr %974, align 8, !tbaa !15
  %975 = load i64, ptr %38, align 8, !tbaa !9
  %976 = load i64, ptr %50, align 8, !tbaa !9
  %977 = load i64, ptr %23, align 8, !tbaa !9
  %978 = mul nsw i64 %976, %977
  %979 = add nsw i64 %975, %978
  store i64 %979, ptr %28, align 8, !tbaa !9
  %980 = getelementptr inbounds %struct.doublecomplex, ptr %36, i32 0, i32 0
  %981 = load double, ptr %980, align 8, !tbaa !13
  %982 = load ptr, ptr %18, align 8, !tbaa !5
  %983 = load i64, ptr %28, align 8, !tbaa !9
  %984 = getelementptr inbounds %struct.doublecomplex, ptr %982, i64 %983
  %985 = getelementptr inbounds %struct.doublecomplex, ptr %984, i32 0, i32 0
  %986 = load double, ptr %985, align 8, !tbaa !13
  %987 = fsub double %981, %986
  %988 = getelementptr inbounds %struct.doublecomplex, ptr %35, i32 0, i32 0
  store double %987, ptr %988, align 8, !tbaa !13
  %989 = getelementptr inbounds %struct.doublecomplex, ptr %36, i32 0, i32 1
  %990 = load double, ptr %989, align 8, !tbaa !15
  %991 = load ptr, ptr %18, align 8, !tbaa !5
  %992 = load i64, ptr %28, align 8, !tbaa !9
  %993 = getelementptr inbounds %struct.doublecomplex, ptr %991, i64 %992
  %994 = getelementptr inbounds %struct.doublecomplex, ptr %993, i32 0, i32 1
  %995 = load double, ptr %994, align 8, !tbaa !15
  %996 = fsub double %990, %995
  %997 = getelementptr inbounds %struct.doublecomplex, ptr %35, i32 0, i32 1
  store double %996, ptr %997, align 8, !tbaa !15
  %998 = getelementptr inbounds %struct.doublecomplex, ptr %43, i32 0, i32 0
  %999 = load double, ptr %998, align 8, !tbaa !13
  %1000 = getelementptr inbounds %struct.doublecomplex, ptr %35, i32 0, i32 0
  %1001 = load double, ptr %1000, align 8, !tbaa !13
  %1002 = getelementptr inbounds %struct.doublecomplex, ptr %43, i32 0, i32 1
  %1003 = load double, ptr %1002, align 8, !tbaa !15
  %1004 = getelementptr inbounds %struct.doublecomplex, ptr %35, i32 0, i32 1
  %1005 = load double, ptr %1004, align 8, !tbaa !15
  %1006 = fmul double %1003, %1005
  %1007 = fneg double %1006
  %1008 = call double @llvm.fmuladd.f64(double %999, double %1001, double %1007)
  %1009 = getelementptr inbounds %struct.doublecomplex, ptr %34, i32 0, i32 0
  store double %1008, ptr %1009, align 8, !tbaa !13
  %1010 = getelementptr inbounds %struct.doublecomplex, ptr %43, i32 0, i32 0
  %1011 = load double, ptr %1010, align 8, !tbaa !13
  %1012 = getelementptr inbounds %struct.doublecomplex, ptr %35, i32 0, i32 1
  %1013 = load double, ptr %1012, align 8, !tbaa !15
  %1014 = getelementptr inbounds %struct.doublecomplex, ptr %43, i32 0, i32 1
  %1015 = load double, ptr %1014, align 8, !tbaa !15
  %1016 = getelementptr inbounds %struct.doublecomplex, ptr %35, i32 0, i32 0
  %1017 = load double, ptr %1016, align 8, !tbaa !13
  %1018 = fmul double %1015, %1017
  %1019 = call double @llvm.fmuladd.f64(double %1011, double %1013, double %1018)
  %1020 = getelementptr inbounds %struct.doublecomplex, ptr %34, i32 0, i32 1
  store double %1019, ptr %1020, align 8, !tbaa !15
  %1021 = getelementptr inbounds %struct.doublecomplex, ptr %34, i32 0, i32 0
  %1022 = load double, ptr %1021, align 8, !tbaa !13
  %1023 = load ptr, ptr %15, align 8, !tbaa !5
  %1024 = load i64, ptr %26, align 8, !tbaa !9
  %1025 = getelementptr inbounds %struct.doublecomplex, ptr %1023, i64 %1024
  %1026 = getelementptr inbounds %struct.doublecomplex, ptr %1025, i32 0, i32 0
  store double %1022, ptr %1026, align 8, !tbaa !13
  %1027 = getelementptr inbounds %struct.doublecomplex, ptr %34, i32 0, i32 1
  %1028 = load double, ptr %1027, align 8, !tbaa !15
  %1029 = load ptr, ptr %15, align 8, !tbaa !5
  %1030 = load i64, ptr %26, align 8, !tbaa !9
  %1031 = getelementptr inbounds %struct.doublecomplex, ptr %1029, i64 %1030
  %1032 = getelementptr inbounds %struct.doublecomplex, ptr %1031, i32 0, i32 1
  store double %1028, ptr %1032, align 8, !tbaa !15
  %1033 = load i64, ptr %38, align 8, !tbaa !9
  %1034 = load i64, ptr %39, align 8, !tbaa !9
  %1035 = load i64, ptr %21, align 8, !tbaa !9
  %1036 = mul nsw i64 %1034, %1035
  %1037 = add nsw i64 %1033, %1036
  store i64 %1037, ptr %26, align 8, !tbaa !9
  call void @d_cnjg(ptr noundef %35, ptr noundef %43)
  %1038 = load i64, ptr %38, align 8, !tbaa !9
  %1039 = load i64, ptr %50, align 8, !tbaa !9
  %1040 = load i64, ptr %23, align 8, !tbaa !9
  %1041 = mul nsw i64 %1039, %1040
  %1042 = add nsw i64 %1038, %1041
  store i64 %1042, ptr %27, align 8, !tbaa !9
  %1043 = getelementptr inbounds %struct.doublecomplex, ptr %44, i32 0, i32 0
  %1044 = load double, ptr %1043, align 8, !tbaa !13
  %1045 = load ptr, ptr %18, align 8, !tbaa !5
  %1046 = load i64, ptr %27, align 8, !tbaa !9
  %1047 = getelementptr inbounds %struct.doublecomplex, ptr %1045, i64 %1046
  %1048 = getelementptr inbounds %struct.doublecomplex, ptr %1047, i32 0, i32 0
  %1049 = load double, ptr %1048, align 8, !tbaa !13
  %1050 = getelementptr inbounds %struct.doublecomplex, ptr %44, i32 0, i32 1
  %1051 = load double, ptr %1050, align 8, !tbaa !15
  %1052 = load ptr, ptr %18, align 8, !tbaa !5
  %1053 = load i64, ptr %27, align 8, !tbaa !9
  %1054 = getelementptr inbounds %struct.doublecomplex, ptr %1052, i64 %1053
  %1055 = getelementptr inbounds %struct.doublecomplex, ptr %1054, i32 0, i32 1
  %1056 = load double, ptr %1055, align 8, !tbaa !15
  %1057 = fmul double %1051, %1056
  %1058 = fneg double %1057
  %1059 = call double @llvm.fmuladd.f64(double %1044, double %1049, double %1058)
  %1060 = getelementptr inbounds %struct.doublecomplex, ptr %37, i32 0, i32 0
  store double %1059, ptr %1060, align 8, !tbaa !13
  %1061 = getelementptr inbounds %struct.doublecomplex, ptr %44, i32 0, i32 0
  %1062 = load double, ptr %1061, align 8, !tbaa !13
  %1063 = load ptr, ptr %18, align 8, !tbaa !5
  %1064 = load i64, ptr %27, align 8, !tbaa !9
  %1065 = getelementptr inbounds %struct.doublecomplex, ptr %1063, i64 %1064
  %1066 = getelementptr inbounds %struct.doublecomplex, ptr %1065, i32 0, i32 1
  %1067 = load double, ptr %1066, align 8, !tbaa !15
  %1068 = getelementptr inbounds %struct.doublecomplex, ptr %44, i32 0, i32 1
  %1069 = load double, ptr %1068, align 8, !tbaa !15
  %1070 = load ptr, ptr %18, align 8, !tbaa !5
  %1071 = load i64, ptr %27, align 8, !tbaa !9
  %1072 = getelementptr inbounds %struct.doublecomplex, ptr %1070, i64 %1071
  %1073 = getelementptr inbounds %struct.doublecomplex, ptr %1072, i32 0, i32 0
  %1074 = load double, ptr %1073, align 8, !tbaa !13
  %1075 = fmul double %1069, %1074
  %1076 = call double @llvm.fmuladd.f64(double %1062, double %1067, double %1075)
  %1077 = getelementptr inbounds %struct.doublecomplex, ptr %37, i32 0, i32 1
  store double %1076, ptr %1077, align 8, !tbaa !15
  %1078 = load i64, ptr %38, align 8, !tbaa !9
  %1079 = load i64, ptr %50, align 8, !tbaa !9
  %1080 = sub nsw i64 %1079, 1
  %1081 = load i64, ptr %23, align 8, !tbaa !9
  %1082 = mul nsw i64 %1080, %1081
  %1083 = add nsw i64 %1078, %1082
  store i64 %1083, ptr %28, align 8, !tbaa !9
  %1084 = getelementptr inbounds %struct.doublecomplex, ptr %37, i32 0, i32 0
  %1085 = load double, ptr %1084, align 8, !tbaa !13
  %1086 = load ptr, ptr %18, align 8, !tbaa !5
  %1087 = load i64, ptr %28, align 8, !tbaa !9
  %1088 = getelementptr inbounds %struct.doublecomplex, ptr %1086, i64 %1087
  %1089 = getelementptr inbounds %struct.doublecomplex, ptr %1088, i32 0, i32 0
  %1090 = load double, ptr %1089, align 8, !tbaa !13
  %1091 = fsub double %1085, %1090
  %1092 = getelementptr inbounds %struct.doublecomplex, ptr %36, i32 0, i32 0
  store double %1091, ptr %1092, align 8, !tbaa !13
  %1093 = getelementptr inbounds %struct.doublecomplex, ptr %37, i32 0, i32 1
  %1094 = load double, ptr %1093, align 8, !tbaa !15
  %1095 = load ptr, ptr %18, align 8, !tbaa !5
  %1096 = load i64, ptr %28, align 8, !tbaa !9
  %1097 = getelementptr inbounds %struct.doublecomplex, ptr %1095, i64 %1096
  %1098 = getelementptr inbounds %struct.doublecomplex, ptr %1097, i32 0, i32 1
  %1099 = load double, ptr %1098, align 8, !tbaa !15
  %1100 = fsub double %1094, %1099
  %1101 = getelementptr inbounds %struct.doublecomplex, ptr %36, i32 0, i32 1
  store double %1100, ptr %1101, align 8, !tbaa !15
  %1102 = getelementptr inbounds %struct.doublecomplex, ptr %35, i32 0, i32 0
  %1103 = load double, ptr %1102, align 8, !tbaa !13
  %1104 = getelementptr inbounds %struct.doublecomplex, ptr %36, i32 0, i32 0
  %1105 = load double, ptr %1104, align 8, !tbaa !13
  %1106 = getelementptr inbounds %struct.doublecomplex, ptr %35, i32 0, i32 1
  %1107 = load double, ptr %1106, align 8, !tbaa !15
  %1108 = getelementptr inbounds %struct.doublecomplex, ptr %36, i32 0, i32 1
  %1109 = load double, ptr %1108, align 8, !tbaa !15
  %1110 = fmul double %1107, %1109
  %1111 = fneg double %1110
  %1112 = call double @llvm.fmuladd.f64(double %1103, double %1105, double %1111)
  %1113 = getelementptr inbounds %struct.doublecomplex, ptr %34, i32 0, i32 0
  store double %1112, ptr %1113, align 8, !tbaa !13
  %1114 = getelementptr inbounds %struct.doublecomplex, ptr %35, i32 0, i32 0
  %1115 = load double, ptr %1114, align 8, !tbaa !13
  %1116 = getelementptr inbounds %struct.doublecomplex, ptr %36, i32 0, i32 1
  %1117 = load double, ptr %1116, align 8, !tbaa !15
  %1118 = getelementptr inbounds %struct.doublecomplex, ptr %35, i32 0, i32 1
  %1119 = load double, ptr %1118, align 8, !tbaa !15
  %1120 = getelementptr inbounds %struct.doublecomplex, ptr %36, i32 0, i32 0
  %1121 = load double, ptr %1120, align 8, !tbaa !13
  %1122 = fmul double %1119, %1121
  %1123 = call double @llvm.fmuladd.f64(double %1115, double %1117, double %1122)
  %1124 = getelementptr inbounds %struct.doublecomplex, ptr %34, i32 0, i32 1
  store double %1123, ptr %1124, align 8, !tbaa !15
  %1125 = getelementptr inbounds %struct.doublecomplex, ptr %34, i32 0, i32 0
  %1126 = load double, ptr %1125, align 8, !tbaa !13
  %1127 = load ptr, ptr %15, align 8, !tbaa !5
  %1128 = load i64, ptr %26, align 8, !tbaa !9
  %1129 = getelementptr inbounds %struct.doublecomplex, ptr %1127, i64 %1128
  %1130 = getelementptr inbounds %struct.doublecomplex, ptr %1129, i32 0, i32 0
  store double %1126, ptr %1130, align 8, !tbaa !13
  %1131 = getelementptr inbounds %struct.doublecomplex, ptr %34, i32 0, i32 1
  %1132 = load double, ptr %1131, align 8, !tbaa !15
  %1133 = load ptr, ptr %15, align 8, !tbaa !5
  %1134 = load i64, ptr %26, align 8, !tbaa !9
  %1135 = getelementptr inbounds %struct.doublecomplex, ptr %1133, i64 %1134
  %1136 = getelementptr inbounds %struct.doublecomplex, ptr %1135, i32 0, i32 1
  store double %1132, ptr %1136, align 8, !tbaa !15
  br label %1137

1137:                                             ; preds = %927
  %1138 = load i64, ptr %38, align 8, !tbaa !9
  %1139 = add nsw i64 %1138, 1
  store i64 %1139, ptr %38, align 8, !tbaa !9
  br label %923, !llvm.loop !16

1140:                                             ; preds = %923
  br label %1141

1141:                                             ; preds = %1140, %835
  %1142 = load i64, ptr %39, align 8, !tbaa !9
  %1143 = sub nsw i64 %1142, 1
  %1144 = load i64, ptr %39, align 8, !tbaa !9
  %1145 = sub nsw i64 %1144, 1
  %1146 = load i64, ptr %21, align 8, !tbaa !9
  %1147 = mul nsw i64 %1145, %1146
  %1148 = add nsw i64 %1143, %1147
  store i64 %1148, ptr %25, align 8, !tbaa !9
  %1149 = load i64, ptr %39, align 8, !tbaa !9
  %1150 = sub nsw i64 %1149, 1
  %1151 = load i64, ptr %50, align 8, !tbaa !9
  %1152 = sub nsw i64 %1151, 1
  %1153 = load i64, ptr %23, align 8, !tbaa !9
  %1154 = mul nsw i64 %1152, %1153
  %1155 = add nsw i64 %1150, %1154
  store i64 %1155, ptr %26, align 8, !tbaa !9
  %1156 = load ptr, ptr %18, align 8, !tbaa !5
  %1157 = load i64, ptr %26, align 8, !tbaa !9
  %1158 = getelementptr inbounds %struct.doublecomplex, ptr %1156, i64 %1157
  %1159 = getelementptr inbounds %struct.doublecomplex, ptr %1158, i32 0, i32 0
  %1160 = load double, ptr %1159, align 8, !tbaa !13
  %1161 = load ptr, ptr %15, align 8, !tbaa !5
  %1162 = load i64, ptr %25, align 8, !tbaa !9
  %1163 = getelementptr inbounds %struct.doublecomplex, ptr %1161, i64 %1162
  %1164 = getelementptr inbounds %struct.doublecomplex, ptr %1163, i32 0, i32 0
  store double %1160, ptr %1164, align 8, !tbaa !13
  %1165 = load ptr, ptr %18, align 8, !tbaa !5
  %1166 = load i64, ptr %26, align 8, !tbaa !9
  %1167 = getelementptr inbounds %struct.doublecomplex, ptr %1165, i64 %1166
  %1168 = getelementptr inbounds %struct.doublecomplex, ptr %1167, i32 0, i32 1
  %1169 = load double, ptr %1168, align 8, !tbaa !15
  %1170 = load ptr, ptr %15, align 8, !tbaa !5
  %1171 = load i64, ptr %25, align 8, !tbaa !9
  %1172 = getelementptr inbounds %struct.doublecomplex, ptr %1170, i64 %1171
  %1173 = getelementptr inbounds %struct.doublecomplex, ptr %1172, i32 0, i32 1
  store double %1169, ptr %1173, align 8, !tbaa !15
  %1174 = load i64, ptr %39, align 8, !tbaa !9
  %1175 = sub nsw i64 %1174, 1
  %1176 = load i64, ptr %39, align 8, !tbaa !9
  %1177 = load i64, ptr %21, align 8, !tbaa !9
  %1178 = mul nsw i64 %1176, %1177
  %1179 = add nsw i64 %1175, %1178
  store i64 %1179, ptr %25, align 8, !tbaa !9
  %1180 = load i64, ptr %39, align 8, !tbaa !9
  %1181 = sub nsw i64 %1180, 1
  %1182 = load i64, ptr %50, align 8, !tbaa !9
  %1183 = load i64, ptr %23, align 8, !tbaa !9
  %1184 = mul nsw i64 %1182, %1183
  %1185 = add nsw i64 %1181, %1184
  store i64 %1185, ptr %26, align 8, !tbaa !9
  %1186 = load ptr, ptr %18, align 8, !tbaa !5
  %1187 = load i64, ptr %26, align 8, !tbaa !9
  %1188 = getelementptr inbounds %struct.doublecomplex, ptr %1186, i64 %1187
  %1189 = getelementptr inbounds %struct.doublecomplex, ptr %1188, i32 0, i32 0
  %1190 = load double, ptr %1189, align 8, !tbaa !13
  %1191 = load ptr, ptr %15, align 8, !tbaa !5
  %1192 = load i64, ptr %25, align 8, !tbaa !9
  %1193 = getelementptr inbounds %struct.doublecomplex, ptr %1191, i64 %1192
  %1194 = getelementptr inbounds %struct.doublecomplex, ptr %1193, i32 0, i32 0
  store double %1190, ptr %1194, align 8, !tbaa !13
  %1195 = load ptr, ptr %18, align 8, !tbaa !5
  %1196 = load i64, ptr %26, align 8, !tbaa !9
  %1197 = getelementptr inbounds %struct.doublecomplex, ptr %1195, i64 %1196
  %1198 = getelementptr inbounds %struct.doublecomplex, ptr %1197, i32 0, i32 1
  %1199 = load double, ptr %1198, align 8, !tbaa !15
  %1200 = load ptr, ptr %15, align 8, !tbaa !5
  %1201 = load i64, ptr %25, align 8, !tbaa !9
  %1202 = getelementptr inbounds %struct.doublecomplex, ptr %1200, i64 %1201
  %1203 = getelementptr inbounds %struct.doublecomplex, ptr %1202, i32 0, i32 1
  store double %1199, ptr %1203, align 8, !tbaa !15
  %1204 = load i64, ptr %39, align 8, !tbaa !9
  %1205 = load i64, ptr %39, align 8, !tbaa !9
  %1206 = load i64, ptr %21, align 8, !tbaa !9
  %1207 = mul nsw i64 %1205, %1206
  %1208 = add nsw i64 %1204, %1207
  store i64 %1208, ptr %25, align 8, !tbaa !9
  %1209 = load i64, ptr %39, align 8, !tbaa !9
  %1210 = load i64, ptr %50, align 8, !tbaa !9
  %1211 = load i64, ptr %23, align 8, !tbaa !9
  %1212 = mul nsw i64 %1210, %1211
  %1213 = add nsw i64 %1209, %1212
  store i64 %1213, ptr %26, align 8, !tbaa !9
  %1214 = load ptr, ptr %18, align 8, !tbaa !5
  %1215 = load i64, ptr %26, align 8, !tbaa !9
  %1216 = getelementptr inbounds %struct.doublecomplex, ptr %1214, i64 %1215
  %1217 = getelementptr inbounds %struct.doublecomplex, ptr %1216, i32 0, i32 0
  %1218 = load double, ptr %1217, align 8, !tbaa !13
  %1219 = load ptr, ptr %15, align 8, !tbaa !5
  %1220 = load i64, ptr %25, align 8, !tbaa !9
  %1221 = getelementptr inbounds %struct.doublecomplex, ptr %1219, i64 %1220
  %1222 = getelementptr inbounds %struct.doublecomplex, ptr %1221, i32 0, i32 0
  store double %1218, ptr %1222, align 8, !tbaa !13
  %1223 = load ptr, ptr %18, align 8, !tbaa !5
  %1224 = load i64, ptr %26, align 8, !tbaa !9
  %1225 = getelementptr inbounds %struct.doublecomplex, ptr %1223, i64 %1224
  %1226 = getelementptr inbounds %struct.doublecomplex, ptr %1225, i32 0, i32 1
  %1227 = load double, ptr %1226, align 8, !tbaa !15
  %1228 = load ptr, ptr %15, align 8, !tbaa !5
  %1229 = load i64, ptr %25, align 8, !tbaa !9
  %1230 = getelementptr inbounds %struct.doublecomplex, ptr %1228, i64 %1229
  %1231 = getelementptr inbounds %struct.doublecomplex, ptr %1230, i32 0, i32 1
  store double %1227, ptr %1231, align 8, !tbaa !15
  %1232 = load i64, ptr %39, align 8, !tbaa !9
  %1233 = sub nsw i64 %1232, 1
  store i64 %1233, ptr %25, align 8, !tbaa !9
  %1234 = load ptr, ptr %18, align 8, !tbaa !5
  %1235 = load i64, ptr %50, align 8, !tbaa !9
  %1236 = load i64, ptr %23, align 8, !tbaa !9
  %1237 = mul nsw i64 %1235, %1236
  %1238 = add nsw i64 %1237, 1
  %1239 = getelementptr inbounds %struct.doublecomplex, ptr %1234, i64 %1238
  %1240 = call i32 @zlacgv_(ptr noundef %25, ptr noundef %1239, ptr noundef @c__1)
  %1241 = load i64, ptr %39, align 8, !tbaa !9
  %1242 = sub nsw i64 %1241, 2
  store i64 %1242, ptr %25, align 8, !tbaa !9
  %1243 = load ptr, ptr %18, align 8, !tbaa !5
  %1244 = load i64, ptr %50, align 8, !tbaa !9
  %1245 = sub nsw i64 %1244, 1
  %1246 = load i64, ptr %23, align 8, !tbaa !9
  %1247 = mul nsw i64 %1245, %1246
  %1248 = add nsw i64 %1247, 1
  %1249 = getelementptr inbounds %struct.doublecomplex, ptr %1243, i64 %1248
  %1250 = call i32 @zlacgv_(ptr noundef %25, ptr noundef %1249, ptr noundef @c__1)
  br label %1251

1251:                                             ; preds = %1141, %792
  br label %1252

1252:                                             ; preds = %1251, %300
  %1253 = load i64, ptr %55, align 8, !tbaa !9
  %1254 = icmp eq i64 %1253, 1
  br i1 %1254, label %1255, label %1260

1255:                                             ; preds = %1252
  %1256 = load i64, ptr %49, align 8, !tbaa !9
  %1257 = load ptr, ptr %17, align 8, !tbaa !5
  %1258 = load i64, ptr %39, align 8, !tbaa !9
  %1259 = getelementptr inbounds i64, ptr %1257, i64 %1258
  store i64 %1256, ptr %1259, align 8, !tbaa !9
  br label %1272

1260:                                             ; preds = %1252
  %1261 = load i64, ptr %49, align 8, !tbaa !9
  %1262 = sub nsw i64 0, %1261
  %1263 = load ptr, ptr %17, align 8, !tbaa !5
  %1264 = load i64, ptr %39, align 8, !tbaa !9
  %1265 = getelementptr inbounds i64, ptr %1263, i64 %1264
  store i64 %1262, ptr %1265, align 8, !tbaa !9
  %1266 = load i64, ptr %49, align 8, !tbaa !9
  %1267 = sub nsw i64 0, %1266
  %1268 = load ptr, ptr %17, align 8, !tbaa !5
  %1269 = load i64, ptr %39, align 8, !tbaa !9
  %1270 = sub nsw i64 %1269, 1
  %1271 = getelementptr inbounds i64, ptr %1268, i64 %1270
  store i64 %1267, ptr %1271, align 8, !tbaa !9
  br label %1272

1272:                                             ; preds = %1260, %1255
  %1273 = load i64, ptr %55, align 8, !tbaa !9
  %1274 = load i64, ptr %39, align 8, !tbaa !9
  %1275 = sub nsw i64 %1274, %1273
  store i64 %1275, ptr %39, align 8, !tbaa !9
  br label %87

1276:                                             ; preds = %112
  %1277 = load ptr, ptr %13, align 8, !tbaa !5
  %1278 = load i64, ptr %1277, align 8, !tbaa !9
  %1279 = sub nsw i64 0, %1278
  store i64 %1279, ptr %25, align 8, !tbaa !9
  %1280 = load i64, ptr %39, align 8, !tbaa !9
  %1281 = sub nsw i64 %1280, 1
  %1282 = load ptr, ptr %13, align 8, !tbaa !5
  %1283 = load i64, ptr %1282, align 8, !tbaa !9
  %1284 = sdiv i64 %1281, %1283
  %1285 = load ptr, ptr %13, align 8, !tbaa !5
  %1286 = load i64, ptr %1285, align 8, !tbaa !9
  %1287 = mul nsw i64 %1284, %1286
  %1288 = add nsw i64 %1287, 1
  store i64 %1288, ptr %38, align 8, !tbaa !9
  br label %1289

1289:                                             ; preds = %1450, %1276
  %1290 = load i64, ptr %25, align 8, !tbaa !9
  %1291 = icmp slt i64 %1290, 0
  br i1 %1291, label %1292, label %1296

1292:                                             ; preds = %1289
  %1293 = load i64, ptr %38, align 8, !tbaa !9
  %1294 = icmp sge i64 %1293, 1
  %1295 = zext i1 %1294 to i32
  br label %1300

1296:                                             ; preds = %1289
  %1297 = load i64, ptr %38, align 8, !tbaa !9
  %1298 = icmp sle i64 %1297, 1
  %1299 = zext i1 %1298 to i32
  br label %1300

1300:                                             ; preds = %1296, %1292
  %1301 = phi i32 [ %1295, %1292 ], [ %1299, %1296 ]
  %1302 = icmp ne i32 %1301, 0
  br i1 %1302, label %1303, label %1454

1303:                                             ; preds = %1300
  %1304 = load ptr, ptr %13, align 8, !tbaa !5
  %1305 = load i64, ptr %1304, align 8, !tbaa !9
  store i64 %1305, ptr %26, align 8, !tbaa !9
  %1306 = load i64, ptr %39, align 8, !tbaa !9
  %1307 = load i64, ptr %38, align 8, !tbaa !9
  %1308 = sub nsw i64 %1306, %1307
  %1309 = add nsw i64 %1308, 1
  store i64 %1309, ptr %27, align 8, !tbaa !9
  %1310 = load i64, ptr %26, align 8, !tbaa !9
  %1311 = load i64, ptr %27, align 8, !tbaa !9
  %1312 = icmp sle i64 %1310, %1311
  br i1 %1312, label %1313, label %1315

1313:                                             ; preds = %1303
  %1314 = load i64, ptr %26, align 8, !tbaa !9
  br label %1317

1315:                                             ; preds = %1303
  %1316 = load i64, ptr %27, align 8, !tbaa !9
  br label %1317

1317:                                             ; preds = %1315, %1313
  %1318 = phi i64 [ %1314, %1313 ], [ %1316, %1315 ]
  store i64 %1318, ptr %45, align 8, !tbaa !9
  %1319 = load i64, ptr %38, align 8, !tbaa !9
  %1320 = load i64, ptr %45, align 8, !tbaa !9
  %1321 = add nsw i64 %1319, %1320
  %1322 = sub nsw i64 %1321, 1
  store i64 %1322, ptr %26, align 8, !tbaa !9
  %1323 = load i64, ptr %38, align 8, !tbaa !9
  store i64 %1323, ptr %46, align 8, !tbaa !9
  br label %1324

1324:                                             ; preds = %1413, %1317
  %1325 = load i64, ptr %46, align 8, !tbaa !9
  %1326 = load i64, ptr %26, align 8, !tbaa !9
  %1327 = icmp sle i64 %1325, %1326
  br i1 %1327, label %1328, label %1416

1328:                                             ; preds = %1324
  %1329 = load i64, ptr %46, align 8, !tbaa !9
  %1330 = load i64, ptr %46, align 8, !tbaa !9
  %1331 = load i64, ptr %21, align 8, !tbaa !9
  %1332 = mul nsw i64 %1330, %1331
  %1333 = add nsw i64 %1329, %1332
  store i64 %1333, ptr %27, align 8, !tbaa !9
  %1334 = load i64, ptr %46, align 8, !tbaa !9
  %1335 = load i64, ptr %46, align 8, !tbaa !9
  %1336 = load i64, ptr %21, align 8, !tbaa !9
  %1337 = mul nsw i64 %1335, %1336
  %1338 = add nsw i64 %1334, %1337
  store i64 %1338, ptr %28, align 8, !tbaa !9
  %1339 = load ptr, ptr %15, align 8, !tbaa !5
  %1340 = load i64, ptr %28, align 8, !tbaa !9
  %1341 = getelementptr inbounds %struct.doublecomplex, ptr %1339, i64 %1340
  %1342 = getelementptr inbounds %struct.doublecomplex, ptr %1341, i32 0, i32 0
  %1343 = load double, ptr %1342, align 8, !tbaa !13
  store double %1343, ptr %30, align 8, !tbaa !11
  %1344 = load double, ptr %30, align 8, !tbaa !11
  %1345 = load ptr, ptr %15, align 8, !tbaa !5
  %1346 = load i64, ptr %27, align 8, !tbaa !9
  %1347 = getelementptr inbounds %struct.doublecomplex, ptr %1345, i64 %1346
  %1348 = getelementptr inbounds %struct.doublecomplex, ptr %1347, i32 0, i32 0
  store double %1344, ptr %1348, align 8, !tbaa !13
  %1349 = load ptr, ptr %15, align 8, !tbaa !5
  %1350 = load i64, ptr %27, align 8, !tbaa !9
  %1351 = getelementptr inbounds %struct.doublecomplex, ptr %1349, i64 %1350
  %1352 = getelementptr inbounds %struct.doublecomplex, ptr %1351, i32 0, i32 1
  store double 0.000000e+00, ptr %1352, align 8, !tbaa !15
  %1353 = load i64, ptr %46, align 8, !tbaa !9
  %1354 = load i64, ptr %38, align 8, !tbaa !9
  %1355 = sub nsw i64 %1353, %1354
  %1356 = add nsw i64 %1355, 1
  store i64 %1356, ptr %27, align 8, !tbaa !9
  %1357 = load ptr, ptr %12, align 8, !tbaa !5
  %1358 = load i64, ptr %1357, align 8, !tbaa !9
  %1359 = load i64, ptr %39, align 8, !tbaa !9
  %1360 = sub nsw i64 %1358, %1359
  store i64 %1360, ptr %28, align 8, !tbaa !9
  %1361 = getelementptr inbounds %struct.doublecomplex, ptr %34, i32 0, i32 0
  store double -1.000000e+00, ptr %1361, align 8, !tbaa !13
  %1362 = getelementptr inbounds %struct.doublecomplex, ptr %34, i32 0, i32 1
  store double -0.000000e+00, ptr %1362, align 8, !tbaa !15
  %1363 = load ptr, ptr %15, align 8, !tbaa !5
  %1364 = load i64, ptr %38, align 8, !tbaa !9
  %1365 = load i64, ptr %39, align 8, !tbaa !9
  %1366 = add nsw i64 %1365, 1
  %1367 = load i64, ptr %21, align 8, !tbaa !9
  %1368 = mul nsw i64 %1366, %1367
  %1369 = add nsw i64 %1364, %1368
  %1370 = getelementptr inbounds %struct.doublecomplex, ptr %1363, i64 %1369
  %1371 = load ptr, ptr %16, align 8, !tbaa !5
  %1372 = load ptr, ptr %18, align 8, !tbaa !5
  %1373 = load i64, ptr %46, align 8, !tbaa !9
  %1374 = load i64, ptr %50, align 8, !tbaa !9
  %1375 = add nsw i64 %1374, 1
  %1376 = load i64, ptr %23, align 8, !tbaa !9
  %1377 = mul nsw i64 %1375, %1376
  %1378 = add nsw i64 %1373, %1377
  %1379 = getelementptr inbounds %struct.doublecomplex, ptr %1372, i64 %1378
  %1380 = load ptr, ptr %19, align 8, !tbaa !5
  %1381 = load ptr, ptr %15, align 8, !tbaa !5
  %1382 = load i64, ptr %38, align 8, !tbaa !9
  %1383 = load i64, ptr %46, align 8, !tbaa !9
  %1384 = load i64, ptr %21, align 8, !tbaa !9
  %1385 = mul nsw i64 %1383, %1384
  %1386 = add nsw i64 %1382, %1385
  %1387 = getelementptr inbounds %struct.doublecomplex, ptr %1381, i64 %1386
  %1388 = call i32 @f2c_zgemv(ptr noundef @.str.1, ptr noundef %27, ptr noundef %28, ptr noundef %34, ptr noundef %1370, ptr noundef %1371, ptr noundef %1379, ptr noundef %1380, ptr noundef @c_b1, ptr noundef %1387, ptr noundef @c__1)
  %1389 = load i64, ptr %46, align 8, !tbaa !9
  %1390 = load i64, ptr %46, align 8, !tbaa !9
  %1391 = load i64, ptr %21, align 8, !tbaa !9
  %1392 = mul nsw i64 %1390, %1391
  %1393 = add nsw i64 %1389, %1392
  store i64 %1393, ptr %27, align 8, !tbaa !9
  %1394 = load i64, ptr %46, align 8, !tbaa !9
  %1395 = load i64, ptr %46, align 8, !tbaa !9
  %1396 = load i64, ptr %21, align 8, !tbaa !9
  %1397 = mul nsw i64 %1395, %1396
  %1398 = add nsw i64 %1394, %1397
  store i64 %1398, ptr %28, align 8, !tbaa !9
  %1399 = load ptr, ptr %15, align 8, !tbaa !5
  %1400 = load i64, ptr %28, align 8, !tbaa !9
  %1401 = getelementptr inbounds %struct.doublecomplex, ptr %1399, i64 %1400
  %1402 = getelementptr inbounds %struct.doublecomplex, ptr %1401, i32 0, i32 0
  %1403 = load double, ptr %1402, align 8, !tbaa !13
  store double %1403, ptr %30, align 8, !tbaa !11
  %1404 = load double, ptr %30, align 8, !tbaa !11
  %1405 = load ptr, ptr %15, align 8, !tbaa !5
  %1406 = load i64, ptr %27, align 8, !tbaa !9
  %1407 = getelementptr inbounds %struct.doublecomplex, ptr %1405, i64 %1406
  %1408 = getelementptr inbounds %struct.doublecomplex, ptr %1407, i32 0, i32 0
  store double %1404, ptr %1408, align 8, !tbaa !13
  %1409 = load ptr, ptr %15, align 8, !tbaa !5
  %1410 = load i64, ptr %27, align 8, !tbaa !9
  %1411 = getelementptr inbounds %struct.doublecomplex, ptr %1409, i64 %1410
  %1412 = getelementptr inbounds %struct.doublecomplex, ptr %1411, i32 0, i32 1
  store double 0.000000e+00, ptr %1412, align 8, !tbaa !15
  br label %1413

1413:                                             ; preds = %1328
  %1414 = load i64, ptr %46, align 8, !tbaa !9
  %1415 = add nsw i64 %1414, 1
  store i64 %1415, ptr %46, align 8, !tbaa !9
  br label %1324, !llvm.loop !18

1416:                                             ; preds = %1324
  %1417 = load i64, ptr %38, align 8, !tbaa !9
  %1418 = sub nsw i64 %1417, 1
  store i64 %1418, ptr %26, align 8, !tbaa !9
  %1419 = load ptr, ptr %12, align 8, !tbaa !5
  %1420 = load i64, ptr %1419, align 8, !tbaa !9
  %1421 = load i64, ptr %39, align 8, !tbaa !9
  %1422 = sub nsw i64 %1420, %1421
  store i64 %1422, ptr %27, align 8, !tbaa !9
  %1423 = getelementptr inbounds %struct.doublecomplex, ptr %34, i32 0, i32 0
  store double -1.000000e+00, ptr %1423, align 8, !tbaa !13
  %1424 = getelementptr inbounds %struct.doublecomplex, ptr %34, i32 0, i32 1
  store double -0.000000e+00, ptr %1424, align 8, !tbaa !15
  %1425 = load ptr, ptr %15, align 8, !tbaa !5
  %1426 = load i64, ptr %39, align 8, !tbaa !9
  %1427 = add nsw i64 %1426, 1
  %1428 = load i64, ptr %21, align 8, !tbaa !9
  %1429 = mul nsw i64 %1427, %1428
  %1430 = add nsw i64 %1429, 1
  %1431 = getelementptr inbounds %struct.doublecomplex, ptr %1425, i64 %1430
  %1432 = load ptr, ptr %16, align 8, !tbaa !5
  %1433 = load ptr, ptr %18, align 8, !tbaa !5
  %1434 = load i64, ptr %38, align 8, !tbaa !9
  %1435 = load i64, ptr %50, align 8, !tbaa !9
  %1436 = add nsw i64 %1435, 1
  %1437 = load i64, ptr %23, align 8, !tbaa !9
  %1438 = mul nsw i64 %1436, %1437
  %1439 = add nsw i64 %1434, %1438
  %1440 = getelementptr inbounds %struct.doublecomplex, ptr %1433, i64 %1439
  %1441 = load ptr, ptr %19, align 8, !tbaa !5
  %1442 = load ptr, ptr %15, align 8, !tbaa !5
  %1443 = load i64, ptr %38, align 8, !tbaa !9
  %1444 = load i64, ptr %21, align 8, !tbaa !9
  %1445 = mul nsw i64 %1443, %1444
  %1446 = add nsw i64 %1445, 1
  %1447 = getelementptr inbounds %struct.doublecomplex, ptr %1442, i64 %1446
  %1448 = load ptr, ptr %16, align 8, !tbaa !5
  %1449 = call i32 @f2c_zgemm(ptr noundef @.str.1, ptr noundef @.str.2, ptr noundef %26, ptr noundef %45, ptr noundef %27, ptr noundef %34, ptr noundef %1431, ptr noundef %1432, ptr noundef %1440, ptr noundef %1441, ptr noundef @c_b1, ptr noundef %1447, ptr noundef %1448)
  br label %1450

1450:                                             ; preds = %1416
  %1451 = load i64, ptr %25, align 8, !tbaa !9
  %1452 = load i64, ptr %38, align 8, !tbaa !9
  %1453 = add nsw i64 %1452, %1451
  store i64 %1453, ptr %38, align 8, !tbaa !9
  br label %1289, !llvm.loop !19

1454:                                             ; preds = %1300
  %1455 = load i64, ptr %39, align 8, !tbaa !9
  %1456 = add nsw i64 %1455, 1
  store i64 %1456, ptr %38, align 8, !tbaa !9
  br label %1457

1457:                                             ; preds = %1509, %1454
  %1458 = load i64, ptr %38, align 8, !tbaa !9
  store i64 %1458, ptr %46, align 8, !tbaa !9
  %1459 = load ptr, ptr %17, align 8, !tbaa !5
  %1460 = load i64, ptr %38, align 8, !tbaa !9
  %1461 = getelementptr inbounds i64, ptr %1459, i64 %1460
  %1462 = load i64, ptr %1461, align 8, !tbaa !9
  store i64 %1462, ptr %48, align 8, !tbaa !9
  %1463 = load i64, ptr %48, align 8, !tbaa !9
  %1464 = icmp slt i64 %1463, 0
  br i1 %1464, label %1465, label %1470

1465:                                             ; preds = %1457
  %1466 = load i64, ptr %48, align 8, !tbaa !9
  %1467 = sub nsw i64 0, %1466
  store i64 %1467, ptr %48, align 8, !tbaa !9
  %1468 = load i64, ptr %38, align 8, !tbaa !9
  %1469 = add nsw i64 %1468, 1
  store i64 %1469, ptr %38, align 8, !tbaa !9
  br label %1470

1470:                                             ; preds = %1465, %1457
  %1471 = load i64, ptr %38, align 8, !tbaa !9
  %1472 = add nsw i64 %1471, 1
  store i64 %1472, ptr %38, align 8, !tbaa !9
  %1473 = load i64, ptr %48, align 8, !tbaa !9
  %1474 = load i64, ptr %46, align 8, !tbaa !9
  %1475 = icmp ne i64 %1473, %1474
  br i1 %1475, label %1476, label %1504

1476:                                             ; preds = %1470
  %1477 = load i64, ptr %38, align 8, !tbaa !9
  %1478 = load ptr, ptr %12, align 8, !tbaa !5
  %1479 = load i64, ptr %1478, align 8, !tbaa !9
  %1480 = icmp sle i64 %1477, %1479
  br i1 %1480, label %1481, label %1504

1481:                                             ; preds = %1476
  %1482 = load ptr, ptr %12, align 8, !tbaa !5
  %1483 = load i64, ptr %1482, align 8, !tbaa !9
  %1484 = load i64, ptr %38, align 8, !tbaa !9
  %1485 = sub nsw i64 %1483, %1484
  %1486 = add nsw i64 %1485, 1
  store i64 %1486, ptr %25, align 8, !tbaa !9
  %1487 = load ptr, ptr %15, align 8, !tbaa !5
  %1488 = load i64, ptr %48, align 8, !tbaa !9
  %1489 = load i64, ptr %38, align 8, !tbaa !9
  %1490 = load i64, ptr %21, align 8, !tbaa !9
  %1491 = mul nsw i64 %1489, %1490
  %1492 = add nsw i64 %1488, %1491
  %1493 = getelementptr inbounds %struct.doublecomplex, ptr %1487, i64 %1492
  %1494 = load ptr, ptr %16, align 8, !tbaa !5
  %1495 = load ptr, ptr %15, align 8, !tbaa !5
  %1496 = load i64, ptr %46, align 8, !tbaa !9
  %1497 = load i64, ptr %38, align 8, !tbaa !9
  %1498 = load i64, ptr %21, align 8, !tbaa !9
  %1499 = mul nsw i64 %1497, %1498
  %1500 = add nsw i64 %1496, %1499
  %1501 = getelementptr inbounds %struct.doublecomplex, ptr %1495, i64 %1500
  %1502 = load ptr, ptr %16, align 8, !tbaa !5
  %1503 = call i32 @f2c_zswap(ptr noundef %25, ptr noundef %1493, ptr noundef %1494, ptr noundef %1501, ptr noundef %1502)
  br label %1504

1504:                                             ; preds = %1481, %1476, %1470
  %1505 = load i64, ptr %38, align 8, !tbaa !9
  %1506 = load ptr, ptr %12, align 8, !tbaa !5
  %1507 = load i64, ptr %1506, align 8, !tbaa !9
  %1508 = icmp sle i64 %1505, %1507
  br i1 %1508, label %1509, label %1510

1509:                                             ; preds = %1504
  br label %1457

1510:                                             ; preds = %1504
  %1511 = load ptr, ptr %12, align 8, !tbaa !5
  %1512 = load i64, ptr %1511, align 8, !tbaa !9
  %1513 = load i64, ptr %39, align 8, !tbaa !9
  %1514 = sub nsw i64 %1512, %1513
  %1515 = load ptr, ptr %14, align 8, !tbaa !5
  store i64 %1514, ptr %1515, align 8, !tbaa !9
  br label %2969

1516:                                             ; preds = %10
  store i64 1, ptr %39, align 8, !tbaa !9
  br label %1517

1517:                                             ; preds = %2740, %1516
  %1518 = load i64, ptr %39, align 8, !tbaa !9
  %1519 = load ptr, ptr %13, align 8, !tbaa !5
  %1520 = load i64, ptr %1519, align 8, !tbaa !9
  %1521 = icmp sge i64 %1518, %1520
  br i1 %1521, label %1522, label %1528

1522:                                             ; preds = %1517
  %1523 = load ptr, ptr %13, align 8, !tbaa !5
  %1524 = load i64, ptr %1523, align 8, !tbaa !9
  %1525 = load ptr, ptr %12, align 8, !tbaa !5
  %1526 = load i64, ptr %1525, align 8, !tbaa !9
  %1527 = icmp slt i64 %1524, %1526
  br i1 %1527, label %1533, label %1528

1528:                                             ; preds = %1522, %1517
  %1529 = load i64, ptr %39, align 8, !tbaa !9
  %1530 = load ptr, ptr %12, align 8, !tbaa !5
  %1531 = load i64, ptr %1530, align 8, !tbaa !9
  %1532 = icmp sgt i64 %1529, %1531
  br i1 %1532, label %1533, label %1534

1533:                                             ; preds = %1528, %1522
  br label %2744

1534:                                             ; preds = %1528
  %1535 = load i64, ptr %39, align 8, !tbaa !9
  %1536 = load i64, ptr %39, align 8, !tbaa !9
  %1537 = load i64, ptr %23, align 8, !tbaa !9
  %1538 = mul nsw i64 %1536, %1537
  %1539 = add nsw i64 %1535, %1538
  store i64 %1539, ptr %25, align 8, !tbaa !9
  %1540 = load i64, ptr %39, align 8, !tbaa !9
  %1541 = load i64, ptr %39, align 8, !tbaa !9
  %1542 = load i64, ptr %21, align 8, !tbaa !9
  %1543 = mul nsw i64 %1541, %1542
  %1544 = add nsw i64 %1540, %1543
  store i64 %1544, ptr %26, align 8, !tbaa !9
  %1545 = load ptr, ptr %15, align 8, !tbaa !5
  %1546 = load i64, ptr %26, align 8, !tbaa !9
  %1547 = getelementptr inbounds %struct.doublecomplex, ptr %1545, i64 %1546
  %1548 = getelementptr inbounds %struct.doublecomplex, ptr %1547, i32 0, i32 0
  %1549 = load double, ptr %1548, align 8, !tbaa !13
  store double %1549, ptr %30, align 8, !tbaa !11
  %1550 = load double, ptr %30, align 8, !tbaa !11
  %1551 = load ptr, ptr %18, align 8, !tbaa !5
  %1552 = load i64, ptr %25, align 8, !tbaa !9
  %1553 = getelementptr inbounds %struct.doublecomplex, ptr %1551, i64 %1552
  %1554 = getelementptr inbounds %struct.doublecomplex, ptr %1553, i32 0, i32 0
  store double %1550, ptr %1554, align 8, !tbaa !13
  %1555 = load ptr, ptr %18, align 8, !tbaa !5
  %1556 = load i64, ptr %25, align 8, !tbaa !9
  %1557 = getelementptr inbounds %struct.doublecomplex, ptr %1555, i64 %1556
  %1558 = getelementptr inbounds %struct.doublecomplex, ptr %1557, i32 0, i32 1
  store double 0.000000e+00, ptr %1558, align 8, !tbaa !15
  %1559 = load i64, ptr %39, align 8, !tbaa !9
  %1560 = load ptr, ptr %12, align 8, !tbaa !5
  %1561 = load i64, ptr %1560, align 8, !tbaa !9
  %1562 = icmp slt i64 %1559, %1561
  br i1 %1562, label %1563, label %1585

1563:                                             ; preds = %1534
  %1564 = load ptr, ptr %12, align 8, !tbaa !5
  %1565 = load i64, ptr %1564, align 8, !tbaa !9
  %1566 = load i64, ptr %39, align 8, !tbaa !9
  %1567 = sub nsw i64 %1565, %1566
  store i64 %1567, ptr %25, align 8, !tbaa !9
  %1568 = load ptr, ptr %15, align 8, !tbaa !5
  %1569 = load i64, ptr %39, align 8, !tbaa !9
  %1570 = add nsw i64 %1569, 1
  %1571 = load i64, ptr %39, align 8, !tbaa !9
  %1572 = load i64, ptr %21, align 8, !tbaa !9
  %1573 = mul nsw i64 %1571, %1572
  %1574 = add nsw i64 %1570, %1573
  %1575 = getelementptr inbounds %struct.doublecomplex, ptr %1568, i64 %1574
  %1576 = load ptr, ptr %18, align 8, !tbaa !5
  %1577 = load i64, ptr %39, align 8, !tbaa !9
  %1578 = add nsw i64 %1577, 1
  %1579 = load i64, ptr %39, align 8, !tbaa !9
  %1580 = load i64, ptr %23, align 8, !tbaa !9
  %1581 = mul nsw i64 %1579, %1580
  %1582 = add nsw i64 %1578, %1581
  %1583 = getelementptr inbounds %struct.doublecomplex, ptr %1576, i64 %1582
  %1584 = call i32 @f2c_zcopy(ptr noundef %25, ptr noundef %1575, ptr noundef @c__1, ptr noundef %1583, ptr noundef @c__1)
  br label %1585

1585:                                             ; preds = %1563, %1534
  %1586 = load ptr, ptr %12, align 8, !tbaa !5
  %1587 = load i64, ptr %1586, align 8, !tbaa !9
  %1588 = load i64, ptr %39, align 8, !tbaa !9
  %1589 = sub nsw i64 %1587, %1588
  %1590 = add nsw i64 %1589, 1
  store i64 %1590, ptr %25, align 8, !tbaa !9
  %1591 = load i64, ptr %39, align 8, !tbaa !9
  %1592 = sub nsw i64 %1591, 1
  store i64 %1592, ptr %26, align 8, !tbaa !9
  %1593 = getelementptr inbounds %struct.doublecomplex, ptr %34, i32 0, i32 0
  store double -1.000000e+00, ptr %1593, align 8, !tbaa !13
  %1594 = getelementptr inbounds %struct.doublecomplex, ptr %34, i32 0, i32 1
  store double -0.000000e+00, ptr %1594, align 8, !tbaa !15
  %1595 = load ptr, ptr %15, align 8, !tbaa !5
  %1596 = load i64, ptr %39, align 8, !tbaa !9
  %1597 = load i64, ptr %21, align 8, !tbaa !9
  %1598 = add nsw i64 %1596, %1597
  %1599 = getelementptr inbounds %struct.doublecomplex, ptr %1595, i64 %1598
  %1600 = load ptr, ptr %16, align 8, !tbaa !5
  %1601 = load ptr, ptr %18, align 8, !tbaa !5
  %1602 = load i64, ptr %39, align 8, !tbaa !9
  %1603 = load i64, ptr %23, align 8, !tbaa !9
  %1604 = add nsw i64 %1602, %1603
  %1605 = getelementptr inbounds %struct.doublecomplex, ptr %1601, i64 %1604
  %1606 = load ptr, ptr %19, align 8, !tbaa !5
  %1607 = load ptr, ptr %18, align 8, !tbaa !5
  %1608 = load i64, ptr %39, align 8, !tbaa !9
  %1609 = load i64, ptr %39, align 8, !tbaa !9
  %1610 = load i64, ptr %23, align 8, !tbaa !9
  %1611 = mul nsw i64 %1609, %1610
  %1612 = add nsw i64 %1608, %1611
  %1613 = getelementptr inbounds %struct.doublecomplex, ptr %1607, i64 %1612
  %1614 = call i32 @f2c_zgemv(ptr noundef @.str.1, ptr noundef %25, ptr noundef %26, ptr noundef %34, ptr noundef %1599, ptr noundef %1600, ptr noundef %1605, ptr noundef %1606, ptr noundef @c_b1, ptr noundef %1613, ptr noundef @c__1)
  %1615 = load i64, ptr %39, align 8, !tbaa !9
  %1616 = load i64, ptr %39, align 8, !tbaa !9
  %1617 = load i64, ptr %23, align 8, !tbaa !9
  %1618 = mul nsw i64 %1616, %1617
  %1619 = add nsw i64 %1615, %1618
  store i64 %1619, ptr %25, align 8, !tbaa !9
  %1620 = load i64, ptr %39, align 8, !tbaa !9
  %1621 = load i64, ptr %39, align 8, !tbaa !9
  %1622 = load i64, ptr %23, align 8, !tbaa !9
  %1623 = mul nsw i64 %1621, %1622
  %1624 = add nsw i64 %1620, %1623
  store i64 %1624, ptr %26, align 8, !tbaa !9
  %1625 = load ptr, ptr %18, align 8, !tbaa !5
  %1626 = load i64, ptr %26, align 8, !tbaa !9
  %1627 = getelementptr inbounds %struct.doublecomplex, ptr %1625, i64 %1626
  %1628 = getelementptr inbounds %struct.doublecomplex, ptr %1627, i32 0, i32 0
  %1629 = load double, ptr %1628, align 8, !tbaa !13
  store double %1629, ptr %30, align 8, !tbaa !11
  %1630 = load double, ptr %30, align 8, !tbaa !11
  %1631 = load ptr, ptr %18, align 8, !tbaa !5
  %1632 = load i64, ptr %25, align 8, !tbaa !9
  %1633 = getelementptr inbounds %struct.doublecomplex, ptr %1631, i64 %1632
  %1634 = getelementptr inbounds %struct.doublecomplex, ptr %1633, i32 0, i32 0
  store double %1630, ptr %1634, align 8, !tbaa !13
  %1635 = load ptr, ptr %18, align 8, !tbaa !5
  %1636 = load i64, ptr %25, align 8, !tbaa !9
  %1637 = getelementptr inbounds %struct.doublecomplex, ptr %1635, i64 %1636
  %1638 = getelementptr inbounds %struct.doublecomplex, ptr %1637, i32 0, i32 1
  store double 0.000000e+00, ptr %1638, align 8, !tbaa !15
  store i64 1, ptr %55, align 8, !tbaa !9
  %1639 = load i64, ptr %39, align 8, !tbaa !9
  %1640 = load i64, ptr %39, align 8, !tbaa !9
  %1641 = load i64, ptr %23, align 8, !tbaa !9
  %1642 = mul nsw i64 %1640, %1641
  %1643 = add nsw i64 %1639, %1642
  store i64 %1643, ptr %25, align 8, !tbaa !9
  %1644 = load ptr, ptr %18, align 8, !tbaa !5
  %1645 = load i64, ptr %25, align 8, !tbaa !9
  %1646 = getelementptr inbounds %struct.doublecomplex, ptr %1644, i64 %1645
  %1647 = getelementptr inbounds %struct.doublecomplex, ptr %1646, i32 0, i32 0
  %1648 = load double, ptr %1647, align 8, !tbaa !13
  store double %1648, ptr %30, align 8, !tbaa !11
  %1649 = load double, ptr %30, align 8, !tbaa !11
  %1650 = fcmp oge double %1649, 0.000000e+00
  br i1 %1650, label %1651, label %1653

1651:                                             ; preds = %1585
  %1652 = load double, ptr %30, align 8, !tbaa !11
  br label %1656

1653:                                             ; preds = %1585
  %1654 = load double, ptr %30, align 8, !tbaa !11
  %1655 = fneg double %1654
  br label %1656

1656:                                             ; preds = %1653, %1651
  %1657 = phi double [ %1652, %1651 ], [ %1655, %1653 ]
  store double %1657, ptr %56, align 8, !tbaa !11
  %1658 = load i64, ptr %39, align 8, !tbaa !9
  %1659 = load ptr, ptr %12, align 8, !tbaa !5
  %1660 = load i64, ptr %1659, align 8, !tbaa !9
  %1661 = icmp slt i64 %1658, %1660
  br i1 %1661, label %1662, label %1715

1662:                                             ; preds = %1656
  %1663 = load ptr, ptr %12, align 8, !tbaa !5
  %1664 = load i64, ptr %1663, align 8, !tbaa !9
  %1665 = load i64, ptr %39, align 8, !tbaa !9
  %1666 = sub nsw i64 %1664, %1665
  store i64 %1666, ptr %25, align 8, !tbaa !9
  %1667 = load i64, ptr %39, align 8, !tbaa !9
  %1668 = load ptr, ptr %18, align 8, !tbaa !5
  %1669 = load i64, ptr %39, align 8, !tbaa !9
  %1670 = add nsw i64 %1669, 1
  %1671 = load i64, ptr %39, align 8, !tbaa !9
  %1672 = load i64, ptr %23, align 8, !tbaa !9
  %1673 = mul nsw i64 %1671, %1672
  %1674 = add nsw i64 %1670, %1673
  %1675 = getelementptr inbounds %struct.doublecomplex, ptr %1668, i64 %1674
  %1676 = call i64 @f2c_izamax(ptr noundef %25, ptr noundef %1675, ptr noundef @c__1)
  %1677 = add nsw i64 %1667, %1676
  store i64 %1677, ptr %52, align 8, !tbaa !9
  %1678 = load i64, ptr %52, align 8, !tbaa !9
  %1679 = load i64, ptr %39, align 8, !tbaa !9
  %1680 = load i64, ptr %23, align 8, !tbaa !9
  %1681 = mul nsw i64 %1679, %1680
  %1682 = add nsw i64 %1678, %1681
  store i64 %1682, ptr %25, align 8, !tbaa !9
  %1683 = load ptr, ptr %18, align 8, !tbaa !5
  %1684 = load i64, ptr %25, align 8, !tbaa !9
  %1685 = getelementptr inbounds %struct.doublecomplex, ptr %1683, i64 %1684
  %1686 = getelementptr inbounds %struct.doublecomplex, ptr %1685, i32 0, i32 0
  %1687 = load double, ptr %1686, align 8, !tbaa !13
  store double %1687, ptr %30, align 8, !tbaa !11
  %1688 = load double, ptr %30, align 8, !tbaa !11
  %1689 = fcmp oge double %1688, 0.000000e+00
  br i1 %1689, label %1690, label %1692

1690:                                             ; preds = %1662
  %1691 = load double, ptr %30, align 8, !tbaa !11
  br label %1695

1692:                                             ; preds = %1662
  %1693 = load double, ptr %30, align 8, !tbaa !11
  %1694 = fneg double %1693
  br label %1695

1695:                                             ; preds = %1692, %1690
  %1696 = phi double [ %1691, %1690 ], [ %1694, %1692 ]
  %1697 = load ptr, ptr %18, align 8, !tbaa !5
  %1698 = load i64, ptr %52, align 8, !tbaa !9
  %1699 = load i64, ptr %39, align 8, !tbaa !9
  %1700 = load i64, ptr %23, align 8, !tbaa !9
  %1701 = mul nsw i64 %1699, %1700
  %1702 = add nsw i64 %1698, %1701
  %1703 = getelementptr inbounds %struct.doublecomplex, ptr %1697, i64 %1702
  %1704 = call double @d_imag(ptr noundef %1703)
  store double %1704, ptr %31, align 8, !tbaa !11
  %1705 = load double, ptr %31, align 8, !tbaa !11
  %1706 = fcmp oge double %1705, 0.000000e+00
  br i1 %1706, label %1707, label %1709

1707:                                             ; preds = %1695
  %1708 = load double, ptr %31, align 8, !tbaa !11
  br label %1712

1709:                                             ; preds = %1695
  %1710 = load double, ptr %31, align 8, !tbaa !11
  %1711 = fneg double %1710
  br label %1712

1712:                                             ; preds = %1709, %1707
  %1713 = phi double [ %1708, %1707 ], [ %1711, %1709 ]
  %1714 = fadd double %1696, %1713
  store double %1714, ptr %57, align 8, !tbaa !11
  br label %1716

1715:                                             ; preds = %1656
  store double 0.000000e+00, ptr %57, align 8, !tbaa !11
  br label %1716

1716:                                             ; preds = %1715, %1712
  %1717 = load double, ptr %56, align 8, !tbaa !11
  %1718 = load double, ptr %57, align 8, !tbaa !11
  %1719 = fcmp oge double %1717, %1718
  br i1 %1719, label %1720, label %1722

1720:                                             ; preds = %1716
  %1721 = load double, ptr %56, align 8, !tbaa !11
  br label %1724

1722:                                             ; preds = %1716
  %1723 = load double, ptr %57, align 8, !tbaa !11
  br label %1724

1724:                                             ; preds = %1722, %1720
  %1725 = phi double [ %1721, %1720 ], [ %1723, %1722 ]
  %1726 = fcmp oeq double %1725, 0.000000e+00
  br i1 %1726, label %1727, label %1760

1727:                                             ; preds = %1724
  %1728 = load ptr, ptr %20, align 8, !tbaa !5
  %1729 = load i64, ptr %1728, align 8, !tbaa !9
  %1730 = icmp eq i64 %1729, 0
  br i1 %1730, label %1731, label %1734

1731:                                             ; preds = %1727
  %1732 = load i64, ptr %39, align 8, !tbaa !9
  %1733 = load ptr, ptr %20, align 8, !tbaa !5
  store i64 %1732, ptr %1733, align 8, !tbaa !9
  br label %1734

1734:                                             ; preds = %1731, %1727
  %1735 = load i64, ptr %39, align 8, !tbaa !9
  store i64 %1735, ptr %49, align 8, !tbaa !9
  %1736 = load i64, ptr %39, align 8, !tbaa !9
  %1737 = load i64, ptr %39, align 8, !tbaa !9
  %1738 = load i64, ptr %21, align 8, !tbaa !9
  %1739 = mul nsw i64 %1737, %1738
  %1740 = add nsw i64 %1736, %1739
  store i64 %1740, ptr %25, align 8, !tbaa !9
  %1741 = load i64, ptr %39, align 8, !tbaa !9
  %1742 = load i64, ptr %39, align 8, !tbaa !9
  %1743 = load i64, ptr %21, align 8, !tbaa !9
  %1744 = mul nsw i64 %1742, %1743
  %1745 = add nsw i64 %1741, %1744
  store i64 %1745, ptr %26, align 8, !tbaa !9
  %1746 = load ptr, ptr %15, align 8, !tbaa !5
  %1747 = load i64, ptr %26, align 8, !tbaa !9
  %1748 = getelementptr inbounds %struct.doublecomplex, ptr %1746, i64 %1747
  %1749 = getelementptr inbounds %struct.doublecomplex, ptr %1748, i32 0, i32 0
  %1750 = load double, ptr %1749, align 8, !tbaa !13
  store double %1750, ptr %30, align 8, !tbaa !11
  %1751 = load double, ptr %30, align 8, !tbaa !11
  %1752 = load ptr, ptr %15, align 8, !tbaa !5
  %1753 = load i64, ptr %25, align 8, !tbaa !9
  %1754 = getelementptr inbounds %struct.doublecomplex, ptr %1752, i64 %1753
  %1755 = getelementptr inbounds %struct.doublecomplex, ptr %1754, i32 0, i32 0
  store double %1751, ptr %1755, align 8, !tbaa !13
  %1756 = load ptr, ptr %15, align 8, !tbaa !5
  %1757 = load i64, ptr %25, align 8, !tbaa !9
  %1758 = getelementptr inbounds %struct.doublecomplex, ptr %1756, i64 %1757
  %1759 = getelementptr inbounds %struct.doublecomplex, ptr %1758, i32 0, i32 1
  store double 0.000000e+00, ptr %1759, align 8, !tbaa !15
  br label %2720

1760:                                             ; preds = %1724
  %1761 = load double, ptr %56, align 8, !tbaa !11
  %1762 = load double, ptr %54, align 8, !tbaa !11
  %1763 = load double, ptr %57, align 8, !tbaa !11
  %1764 = fmul double %1762, %1763
  %1765 = fcmp oge double %1761, %1764
  br i1 %1765, label %1766, label %1768

1766:                                             ; preds = %1760
  %1767 = load i64, ptr %39, align 8, !tbaa !9
  store i64 %1767, ptr %49, align 8, !tbaa !9
  br label %2098

1768:                                             ; preds = %1760
  %1769 = load i64, ptr %52, align 8, !tbaa !9
  %1770 = load i64, ptr %39, align 8, !tbaa !9
  %1771 = sub nsw i64 %1769, %1770
  store i64 %1771, ptr %25, align 8, !tbaa !9
  %1772 = load ptr, ptr %15, align 8, !tbaa !5
  %1773 = load i64, ptr %52, align 8, !tbaa !9
  %1774 = load i64, ptr %39, align 8, !tbaa !9
  %1775 = load i64, ptr %21, align 8, !tbaa !9
  %1776 = mul nsw i64 %1774, %1775
  %1777 = add nsw i64 %1773, %1776
  %1778 = getelementptr inbounds %struct.doublecomplex, ptr %1772, i64 %1777
  %1779 = load ptr, ptr %16, align 8, !tbaa !5
  %1780 = load ptr, ptr %18, align 8, !tbaa !5
  %1781 = load i64, ptr %39, align 8, !tbaa !9
  %1782 = load i64, ptr %39, align 8, !tbaa !9
  %1783 = add nsw i64 %1782, 1
  %1784 = load i64, ptr %23, align 8, !tbaa !9
  %1785 = mul nsw i64 %1783, %1784
  %1786 = add nsw i64 %1781, %1785
  %1787 = getelementptr inbounds %struct.doublecomplex, ptr %1780, i64 %1786
  %1788 = call i32 @f2c_zcopy(ptr noundef %25, ptr noundef %1778, ptr noundef %1779, ptr noundef %1787, ptr noundef @c__1)
  %1789 = load i64, ptr %52, align 8, !tbaa !9
  %1790 = load i64, ptr %39, align 8, !tbaa !9
  %1791 = sub nsw i64 %1789, %1790
  store i64 %1791, ptr %25, align 8, !tbaa !9
  %1792 = load ptr, ptr %18, align 8, !tbaa !5
  %1793 = load i64, ptr %39, align 8, !tbaa !9
  %1794 = load i64, ptr %39, align 8, !tbaa !9
  %1795 = add nsw i64 %1794, 1
  %1796 = load i64, ptr %23, align 8, !tbaa !9
  %1797 = mul nsw i64 %1795, %1796
  %1798 = add nsw i64 %1793, %1797
  %1799 = getelementptr inbounds %struct.doublecomplex, ptr %1792, i64 %1798
  %1800 = call i32 @zlacgv_(ptr noundef %25, ptr noundef %1799, ptr noundef @c__1)
  %1801 = load i64, ptr %52, align 8, !tbaa !9
  %1802 = load i64, ptr %39, align 8, !tbaa !9
  %1803 = add nsw i64 %1802, 1
  %1804 = load i64, ptr %23, align 8, !tbaa !9
  %1805 = mul nsw i64 %1803, %1804
  %1806 = add nsw i64 %1801, %1805
  store i64 %1806, ptr %25, align 8, !tbaa !9
  %1807 = load i64, ptr %52, align 8, !tbaa !9
  %1808 = load i64, ptr %52, align 8, !tbaa !9
  %1809 = load i64, ptr %21, align 8, !tbaa !9
  %1810 = mul nsw i64 %1808, %1809
  %1811 = add nsw i64 %1807, %1810
  store i64 %1811, ptr %26, align 8, !tbaa !9
  %1812 = load ptr, ptr %15, align 8, !tbaa !5
  %1813 = load i64, ptr %26, align 8, !tbaa !9
  %1814 = getelementptr inbounds %struct.doublecomplex, ptr %1812, i64 %1813
  %1815 = getelementptr inbounds %struct.doublecomplex, ptr %1814, i32 0, i32 0
  %1816 = load double, ptr %1815, align 8, !tbaa !13
  store double %1816, ptr %30, align 8, !tbaa !11
  %1817 = load double, ptr %30, align 8, !tbaa !11
  %1818 = load ptr, ptr %18, align 8, !tbaa !5
  %1819 = load i64, ptr %25, align 8, !tbaa !9
  %1820 = getelementptr inbounds %struct.doublecomplex, ptr %1818, i64 %1819
  %1821 = getelementptr inbounds %struct.doublecomplex, ptr %1820, i32 0, i32 0
  store double %1817, ptr %1821, align 8, !tbaa !13
  %1822 = load ptr, ptr %18, align 8, !tbaa !5
  %1823 = load i64, ptr %25, align 8, !tbaa !9
  %1824 = getelementptr inbounds %struct.doublecomplex, ptr %1822, i64 %1823
  %1825 = getelementptr inbounds %struct.doublecomplex, ptr %1824, i32 0, i32 1
  store double 0.000000e+00, ptr %1825, align 8, !tbaa !15
  %1826 = load i64, ptr %52, align 8, !tbaa !9
  %1827 = load ptr, ptr %12, align 8, !tbaa !5
  %1828 = load i64, ptr %1827, align 8, !tbaa !9
  %1829 = icmp slt i64 %1826, %1828
  br i1 %1829, label %1830, label %1853

1830:                                             ; preds = %1768
  %1831 = load ptr, ptr %12, align 8, !tbaa !5
  %1832 = load i64, ptr %1831, align 8, !tbaa !9
  %1833 = load i64, ptr %52, align 8, !tbaa !9
  %1834 = sub nsw i64 %1832, %1833
  store i64 %1834, ptr %25, align 8, !tbaa !9
  %1835 = load ptr, ptr %15, align 8, !tbaa !5
  %1836 = load i64, ptr %52, align 8, !tbaa !9
  %1837 = add nsw i64 %1836, 1
  %1838 = load i64, ptr %52, align 8, !tbaa !9
  %1839 = load i64, ptr %21, align 8, !tbaa !9
  %1840 = mul nsw i64 %1838, %1839
  %1841 = add nsw i64 %1837, %1840
  %1842 = getelementptr inbounds %struct.doublecomplex, ptr %1835, i64 %1841
  %1843 = load ptr, ptr %18, align 8, !tbaa !5
  %1844 = load i64, ptr %52, align 8, !tbaa !9
  %1845 = add nsw i64 %1844, 1
  %1846 = load i64, ptr %39, align 8, !tbaa !9
  %1847 = add nsw i64 %1846, 1
  %1848 = load i64, ptr %23, align 8, !tbaa !9
  %1849 = mul nsw i64 %1847, %1848
  %1850 = add nsw i64 %1845, %1849
  %1851 = getelementptr inbounds %struct.doublecomplex, ptr %1843, i64 %1850
  %1852 = call i32 @f2c_zcopy(ptr noundef %25, ptr noundef %1842, ptr noundef @c__1, ptr noundef %1851, ptr noundef @c__1)
  br label %1853

1853:                                             ; preds = %1830, %1768
  %1854 = load ptr, ptr %12, align 8, !tbaa !5
  %1855 = load i64, ptr %1854, align 8, !tbaa !9
  %1856 = load i64, ptr %39, align 8, !tbaa !9
  %1857 = sub nsw i64 %1855, %1856
  %1858 = add nsw i64 %1857, 1
  store i64 %1858, ptr %25, align 8, !tbaa !9
  %1859 = load i64, ptr %39, align 8, !tbaa !9
  %1860 = sub nsw i64 %1859, 1
  store i64 %1860, ptr %26, align 8, !tbaa !9
  %1861 = getelementptr inbounds %struct.doublecomplex, ptr %34, i32 0, i32 0
  store double -1.000000e+00, ptr %1861, align 8, !tbaa !13
  %1862 = getelementptr inbounds %struct.doublecomplex, ptr %34, i32 0, i32 1
  store double -0.000000e+00, ptr %1862, align 8, !tbaa !15
  %1863 = load ptr, ptr %15, align 8, !tbaa !5
  %1864 = load i64, ptr %39, align 8, !tbaa !9
  %1865 = load i64, ptr %21, align 8, !tbaa !9
  %1866 = add nsw i64 %1864, %1865
  %1867 = getelementptr inbounds %struct.doublecomplex, ptr %1863, i64 %1866
  %1868 = load ptr, ptr %16, align 8, !tbaa !5
  %1869 = load ptr, ptr %18, align 8, !tbaa !5
  %1870 = load i64, ptr %52, align 8, !tbaa !9
  %1871 = load i64, ptr %23, align 8, !tbaa !9
  %1872 = add nsw i64 %1870, %1871
  %1873 = getelementptr inbounds %struct.doublecomplex, ptr %1869, i64 %1872
  %1874 = load ptr, ptr %19, align 8, !tbaa !5
  %1875 = load ptr, ptr %18, align 8, !tbaa !5
  %1876 = load i64, ptr %39, align 8, !tbaa !9
  %1877 = load i64, ptr %39, align 8, !tbaa !9
  %1878 = add nsw i64 %1877, 1
  %1879 = load i64, ptr %23, align 8, !tbaa !9
  %1880 = mul nsw i64 %1878, %1879
  %1881 = add nsw i64 %1876, %1880
  %1882 = getelementptr inbounds %struct.doublecomplex, ptr %1875, i64 %1881
  %1883 = call i32 @f2c_zgemv(ptr noundef @.str.1, ptr noundef %25, ptr noundef %26, ptr noundef %34, ptr noundef %1867, ptr noundef %1868, ptr noundef %1873, ptr noundef %1874, ptr noundef @c_b1, ptr noundef %1882, ptr noundef @c__1)
  %1884 = load i64, ptr %52, align 8, !tbaa !9
  %1885 = load i64, ptr %39, align 8, !tbaa !9
  %1886 = add nsw i64 %1885, 1
  %1887 = load i64, ptr %23, align 8, !tbaa !9
  %1888 = mul nsw i64 %1886, %1887
  %1889 = add nsw i64 %1884, %1888
  store i64 %1889, ptr %25, align 8, !tbaa !9
  %1890 = load i64, ptr %52, align 8, !tbaa !9
  %1891 = load i64, ptr %39, align 8, !tbaa !9
  %1892 = add nsw i64 %1891, 1
  %1893 = load i64, ptr %23, align 8, !tbaa !9
  %1894 = mul nsw i64 %1892, %1893
  %1895 = add nsw i64 %1890, %1894
  store i64 %1895, ptr %26, align 8, !tbaa !9
  %1896 = load ptr, ptr %18, align 8, !tbaa !5
  %1897 = load i64, ptr %26, align 8, !tbaa !9
  %1898 = getelementptr inbounds %struct.doublecomplex, ptr %1896, i64 %1897
  %1899 = getelementptr inbounds %struct.doublecomplex, ptr %1898, i32 0, i32 0
  %1900 = load double, ptr %1899, align 8, !tbaa !13
  store double %1900, ptr %30, align 8, !tbaa !11
  %1901 = load double, ptr %30, align 8, !tbaa !11
  %1902 = load ptr, ptr %18, align 8, !tbaa !5
  %1903 = load i64, ptr %25, align 8, !tbaa !9
  %1904 = getelementptr inbounds %struct.doublecomplex, ptr %1902, i64 %1903
  %1905 = getelementptr inbounds %struct.doublecomplex, ptr %1904, i32 0, i32 0
  store double %1901, ptr %1905, align 8, !tbaa !13
  %1906 = load ptr, ptr %18, align 8, !tbaa !5
  %1907 = load i64, ptr %25, align 8, !tbaa !9
  %1908 = getelementptr inbounds %struct.doublecomplex, ptr %1906, i64 %1907
  %1909 = getelementptr inbounds %struct.doublecomplex, ptr %1908, i32 0, i32 1
  store double 0.000000e+00, ptr %1909, align 8, !tbaa !15
  %1910 = load i64, ptr %52, align 8, !tbaa !9
  %1911 = load i64, ptr %39, align 8, !tbaa !9
  %1912 = sub nsw i64 %1910, %1911
  store i64 %1912, ptr %25, align 8, !tbaa !9
  %1913 = load i64, ptr %39, align 8, !tbaa !9
  %1914 = sub nsw i64 %1913, 1
  %1915 = load ptr, ptr %18, align 8, !tbaa !5
  %1916 = load i64, ptr %39, align 8, !tbaa !9
  %1917 = load i64, ptr %39, align 8, !tbaa !9
  %1918 = add nsw i64 %1917, 1
  %1919 = load i64, ptr %23, align 8, !tbaa !9
  %1920 = mul nsw i64 %1918, %1919
  %1921 = add nsw i64 %1916, %1920
  %1922 = getelementptr inbounds %struct.doublecomplex, ptr %1915, i64 %1921
  %1923 = call i64 @f2c_izamax(ptr noundef %25, ptr noundef %1922, ptr noundef @c__1)
  %1924 = add nsw i64 %1914, %1923
  store i64 %1924, ptr %53, align 8, !tbaa !9
  %1925 = load i64, ptr %53, align 8, !tbaa !9
  %1926 = load i64, ptr %39, align 8, !tbaa !9
  %1927 = add nsw i64 %1926, 1
  %1928 = load i64, ptr %23, align 8, !tbaa !9
  %1929 = mul nsw i64 %1927, %1928
  %1930 = add nsw i64 %1925, %1929
  store i64 %1930, ptr %25, align 8, !tbaa !9
  %1931 = load ptr, ptr %18, align 8, !tbaa !5
  %1932 = load i64, ptr %25, align 8, !tbaa !9
  %1933 = getelementptr inbounds %struct.doublecomplex, ptr %1931, 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 = %1853
  %1939 = load double, ptr %30, align 8, !tbaa !11
  br label %1943

1940:                                             ; preds = %1853
  %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 i64, ptr %53, align 8, !tbaa !9
  %1947 = load i64, ptr %39, align 8, !tbaa !9
  %1948 = add nsw i64 %1947, 1
  %1949 = load i64, ptr %23, align 8, !tbaa !9
  %1950 = mul nsw i64 %1948, %1949
  %1951 = add nsw i64 %1946, %1950
  %1952 = getelementptr inbounds %struct.doublecomplex, ptr %1945, i64 %1951
  %1953 = call double @d_imag(ptr noundef %1952)
  store double %1953, ptr %31, align 8, !tbaa !11
  %1954 = load double, ptr %31, align 8, !tbaa !11
  %1955 = fcmp oge double %1954, 0.000000e+00
  br i1 %1955, label %1956, label %1958

1956:                                             ; preds = %1943
  %1957 = load double, ptr %31, align 8, !tbaa !11
  br label %1961

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

1961:                                             ; preds = %1958, %1956
  %1962 = phi double [ %1957, %1956 ], [ %1960, %1958 ]
  %1963 = fadd double %1944, %1962
  store double %1963, ptr %58, align 8, !tbaa !11
  %1964 = load i64, ptr %52, align 8, !tbaa !9
  %1965 = load ptr, ptr %12, align 8, !tbaa !5
  %1966 = load i64, ptr %1965, align 8, !tbaa !9
  %1967 = icmp slt i64 %1964, %1966
  br i1 %1967, label %1968, label %2034

1968:                                             ; preds = %1961
  %1969 = load ptr, ptr %12, align 8, !tbaa !5
  %1970 = load i64, ptr %1969, align 8, !tbaa !9
  %1971 = load i64, ptr %52, align 8, !tbaa !9
  %1972 = sub nsw i64 %1970, %1971
  store i64 %1972, ptr %25, align 8, !tbaa !9
  %1973 = load i64, ptr %52, align 8, !tbaa !9
  %1974 = load ptr, ptr %18, align 8, !tbaa !5
  %1975 = load i64, ptr %52, align 8, !tbaa !9
  %1976 = add nsw i64 %1975, 1
  %1977 = load i64, ptr %39, align 8, !tbaa !9
  %1978 = add nsw i64 %1977, 1
  %1979 = load i64, ptr %23, align 8, !tbaa !9
  %1980 = mul nsw i64 %1978, %1979
  %1981 = add nsw i64 %1976, %1980
  %1982 = getelementptr inbounds %struct.doublecomplex, ptr %1974, i64 %1981
  %1983 = call i64 @f2c_izamax(ptr noundef %25, ptr noundef %1982, ptr noundef @c__1)
  %1984 = add nsw i64 %1973, %1983
  store i64 %1984, ptr %53, align 8, !tbaa !9
  %1985 = load i64, ptr %53, align 8, !tbaa !9
  %1986 = load i64, ptr %39, align 8, !tbaa !9
  %1987 = add nsw i64 %1986, 1
  %1988 = load i64, ptr %23, align 8, !tbaa !9
  %1989 = mul nsw i64 %1987, %1988
  %1990 = add nsw i64 %1985, %1989
  store i64 %1990, ptr %25, align 8, !tbaa !9
  %1991 = load double, ptr %58, align 8, !tbaa !11
  store double %1991, ptr %32, align 8, !tbaa !11
  %1992 = load ptr, ptr %18, align 8, !tbaa !5
  %1993 = load i64, ptr %25, align 8, !tbaa !9
  %1994 = getelementptr inbounds %struct.doublecomplex, ptr %1992, i64 %1993
  %1995 = getelementptr inbounds %struct.doublecomplex, ptr %1994, i32 0, i32 0
  %1996 = load double, ptr %1995, align 8, !tbaa !13
  store double %1996, ptr %30, align 8, !tbaa !11
  %1997 = load double, ptr %30, align 8, !tbaa !11
  %1998 = fcmp oge double %1997, 0.000000e+00
  br i1 %1998, label %1999, label %2001

1999:                                             ; preds = %1968
  %2000 = load double, ptr %30, align 8, !tbaa !11
  br label %2004

2001:                                             ; preds = %1968
  %2002 = load double, ptr %30, align 8, !tbaa !11
  %2003 = fneg double %2002
  br label %2004

2004:                                             ; preds = %2001, %1999
  %2005 = phi double [ %2000, %1999 ], [ %2003, %2001 ]
  %2006 = load ptr, ptr %18, align 8, !tbaa !5
  %2007 = load i64, ptr %53, align 8, !tbaa !9
  %2008 = load i64, ptr %39, align 8, !tbaa !9
  %2009 = add nsw i64 %2008, 1
  %2010 = load i64, ptr %23, align 8, !tbaa !9
  %2011 = mul nsw i64 %2009, %2010
  %2012 = add nsw i64 %2007, %2011
  %2013 = getelementptr inbounds %struct.doublecomplex, ptr %2006, i64 %2012
  %2014 = call double @d_imag(ptr noundef %2013)
  store double %2014, ptr %31, align 8, !tbaa !11
  %2015 = load double, ptr %31, align 8, !tbaa !11
  %2016 = fcmp oge double %2015, 0.000000e+00
  br i1 %2016, label %2017, label %2019

2017:                                             ; preds = %2004
  %2018 = load double, ptr %31, align 8, !tbaa !11
  br label %2022

2019:                                             ; preds = %2004
  %2020 = load double, ptr %31, align 8, !tbaa !11
  %2021 = fneg double %2020
  br label %2022

2022:                                             ; preds = %2019, %2017
  %2023 = phi double [ %2018, %2017 ], [ %2021, %2019 ]
  %2024 = fadd double %2005, %2023
  store double %2024, ptr %33, align 8, !tbaa !11
  %2025 = load double, ptr %32, align 8, !tbaa !11
  %2026 = load double, ptr %33, align 8, !tbaa !11
  %2027 = fcmp oge double %2025, %2026
  br i1 %2027, label %2028, label %2030

2028:                                             ; preds = %2022
  %2029 = load double, ptr %32, align 8, !tbaa !11
  br label %2032

2030:                                             ; preds = %2022
  %2031 = load double, ptr %33, align 8, !tbaa !11
  br label %2032

2032:                                             ; preds = %2030, %2028
  %2033 = phi double [ %2029, %2028 ], [ %2031, %2030 ]
  store double %2033, ptr %58, align 8, !tbaa !11
  br label %2034

2034:                                             ; preds = %2032, %1961
  %2035 = load double, ptr %56, align 8, !tbaa !11
  %2036 = load double, ptr %54, align 8, !tbaa !11
  %2037 = load double, ptr %57, align 8, !tbaa !11
  %2038 = fmul double %2036, %2037
  %2039 = load double, ptr %57, align 8, !tbaa !11
  %2040 = load double, ptr %58, align 8, !tbaa !11
  %2041 = fdiv double %2039, %2040
  %2042 = fmul double %2038, %2041
  %2043 = fcmp oge double %2035, %2042
  br i1 %2043, label %2044, label %2046

2044:                                             ; preds = %2034
  %2045 = load i64, ptr %39, align 8, !tbaa !9
  store i64 %2045, ptr %49, align 8, !tbaa !9
  br label %2097

2046:                                             ; preds = %2034
  %2047 = load i64, ptr %52, align 8, !tbaa !9
  %2048 = load i64, ptr %39, align 8, !tbaa !9
  %2049 = add nsw i64 %2048, 1
  %2050 = load i64, ptr %23, align 8, !tbaa !9
  %2051 = mul nsw i64 %2049, %2050
  %2052 = add nsw i64 %2047, %2051
  store i64 %2052, ptr %25, align 8, !tbaa !9
  %2053 = load ptr, ptr %18, align 8, !tbaa !5
  %2054 = load i64, ptr %25, align 8, !tbaa !9
  %2055 = getelementptr inbounds %struct.doublecomplex, ptr %2053, i64 %2054
  %2056 = getelementptr inbounds %struct.doublecomplex, ptr %2055, i32 0, i32 0
  %2057 = load double, ptr %2056, align 8, !tbaa !13
  store double %2057, ptr %30, align 8, !tbaa !11
  %2058 = load double, ptr %30, align 8, !tbaa !11
  %2059 = fcmp oge double %2058, 0.000000e+00
  br i1 %2059, label %2060, label %2062

2060:                                             ; preds = %2046
  %2061 = load double, ptr %30, align 8, !tbaa !11
  br label %2065

2062:                                             ; preds = %2046
  %2063 = load double, ptr %30, align 8, !tbaa !11
  %2064 = fneg double %2063
  br label %2065

2065:                                             ; preds = %2062, %2060
  %2066 = phi double [ %2061, %2060 ], [ %2064, %2062 ]
  %2067 = load double, ptr %54, align 8, !tbaa !11
  %2068 = load double, ptr %58, align 8, !tbaa !11
  %2069 = fmul double %2067, %2068
  %2070 = fcmp oge double %2066, %2069
  br i1 %2070, label %2071, label %2094

2071:                                             ; preds = %2065
  %2072 = load i64, ptr %52, align 8, !tbaa !9
  store i64 %2072, ptr %49, align 8, !tbaa !9
  %2073 = load ptr, ptr %12, align 8, !tbaa !5
  %2074 = load i64, ptr %2073, align 8, !tbaa !9
  %2075 = load i64, ptr %39, align 8, !tbaa !9
  %2076 = sub nsw i64 %2074, %2075
  %2077 = add nsw i64 %2076, 1
  store i64 %2077, ptr %25, align 8, !tbaa !9
  %2078 = load ptr, ptr %18, align 8, !tbaa !5
  %2079 = load i64, ptr %39, align 8, !tbaa !9
  %2080 = load i64, ptr %39, align 8, !tbaa !9
  %2081 = add nsw i64 %2080, 1
  %2082 = load i64, ptr %23, align 8, !tbaa !9
  %2083 = mul nsw i64 %2081, %2082
  %2084 = add nsw i64 %2079, %2083
  %2085 = getelementptr inbounds %struct.doublecomplex, ptr %2078, i64 %2084
  %2086 = load ptr, ptr %18, align 8, !tbaa !5
  %2087 = load i64, ptr %39, align 8, !tbaa !9
  %2088 = load i64, ptr %39, align 8, !tbaa !9
  %2089 = load i64, ptr %23, align 8, !tbaa !9
  %2090 = mul nsw i64 %2088, %2089
  %2091 = add nsw i64 %2087, %2090
  %2092 = getelementptr inbounds %struct.doublecomplex, ptr %2086, i64 %2091
  %2093 = call i32 @f2c_zcopy(ptr noundef %25, ptr noundef %2085, ptr noundef @c__1, ptr noundef %2092, ptr noundef @c__1)
  br label %2096

2094:                                             ; preds = %2065
  %2095 = load i64, ptr %52, align 8, !tbaa !9
  store i64 %2095, ptr %49, align 8, !tbaa !9
  store i64 2, ptr %55, align 8, !tbaa !9
  br label %2096

2096:                                             ; preds = %2094, %2071
  br label %2097

2097:                                             ; preds = %2096, %2044
  br label %2098

2098:                                             ; preds = %2097, %1766
  %2099 = load i64, ptr %39, align 8, !tbaa !9
  %2100 = load i64, ptr %55, align 8, !tbaa !9
  %2101 = add nsw i64 %2099, %2100
  %2102 = sub nsw i64 %2101, 1
  store i64 %2102, ptr %47, align 8, !tbaa !9
  %2103 = load i64, ptr %49, align 8, !tbaa !9
  %2104 = load i64, ptr %47, align 8, !tbaa !9
  %2105 = icmp ne i64 %2103, %2104
  br i1 %2105, label %2106, label %2222

2106:                                             ; preds = %2098
  %2107 = load i64, ptr %49, align 8, !tbaa !9
  %2108 = load i64, ptr %49, align 8, !tbaa !9
  %2109 = load i64, ptr %21, align 8, !tbaa !9
  %2110 = mul nsw i64 %2108, %2109
  %2111 = add nsw i64 %2107, %2110
  store i64 %2111, ptr %25, align 8, !tbaa !9
  %2112 = load i64, ptr %47, align 8, !tbaa !9
  %2113 = load i64, ptr %47, align 8, !tbaa !9
  %2114 = load i64, ptr %21, align 8, !tbaa !9
  %2115 = mul nsw i64 %2113, %2114
  %2116 = add nsw i64 %2112, %2115
  store i64 %2116, ptr %26, align 8, !tbaa !9
  %2117 = load ptr, ptr %15, align 8, !tbaa !5
  %2118 = load i64, ptr %26, align 8, !tbaa !9
  %2119 = getelementptr inbounds %struct.doublecomplex, ptr %2117, i64 %2118
  %2120 = getelementptr inbounds %struct.doublecomplex, ptr %2119, i32 0, i32 0
  %2121 = load double, ptr %2120, align 8, !tbaa !13
  store double %2121, ptr %30, align 8, !tbaa !11
  %2122 = load double, ptr %30, align 8, !tbaa !11
  %2123 = load ptr, ptr %15, align 8, !tbaa !5
  %2124 = load i64, ptr %25, align 8, !tbaa !9
  %2125 = getelementptr inbounds %struct.doublecomplex, ptr %2123, i64 %2124
  %2126 = getelementptr inbounds %struct.doublecomplex, ptr %2125, i32 0, i32 0
  store double %2122, ptr %2126, align 8, !tbaa !13
  %2127 = load ptr, ptr %15, align 8, !tbaa !5
  %2128 = load i64, ptr %25, align 8, !tbaa !9
  %2129 = getelementptr inbounds %struct.doublecomplex, ptr %2127, i64 %2128
  %2130 = getelementptr inbounds %struct.doublecomplex, ptr %2129, i32 0, i32 1
  store double 0.000000e+00, ptr %2130, align 8, !tbaa !15
  %2131 = load i64, ptr %49, align 8, !tbaa !9
  %2132 = load i64, ptr %47, align 8, !tbaa !9
  %2133 = sub nsw i64 %2131, %2132
  %2134 = sub nsw i64 %2133, 1
  store i64 %2134, ptr %25, align 8, !tbaa !9
  %2135 = load ptr, ptr %15, align 8, !tbaa !5
  %2136 = load i64, ptr %47, align 8, !tbaa !9
  %2137 = add nsw i64 %2136, 1
  %2138 = load i64, ptr %47, align 8, !tbaa !9
  %2139 = load i64, ptr %21, align 8, !tbaa !9
  %2140 = mul nsw i64 %2138, %2139
  %2141 = add nsw i64 %2137, %2140
  %2142 = getelementptr inbounds %struct.doublecomplex, ptr %2135, i64 %2141
  %2143 = load ptr, ptr %15, align 8, !tbaa !5
  %2144 = load i64, ptr %49, align 8, !tbaa !9
  %2145 = load i64, ptr %47, align 8, !tbaa !9
  %2146 = add nsw i64 %2145, 1
  %2147 = load i64, ptr %21, align 8, !tbaa !9
  %2148 = mul nsw i64 %2146, %2147
  %2149 = add nsw i64 %2144, %2148
  %2150 = getelementptr inbounds %struct.doublecomplex, ptr %2143, i64 %2149
  %2151 = load ptr, ptr %16, align 8, !tbaa !5
  %2152 = call i32 @f2c_zcopy(ptr noundef %25, ptr noundef %2142, ptr noundef @c__1, ptr noundef %2150, ptr noundef %2151)
  %2153 = load i64, ptr %49, align 8, !tbaa !9
  %2154 = load i64, ptr %47, align 8, !tbaa !9
  %2155 = sub nsw i64 %2153, %2154
  %2156 = sub nsw i64 %2155, 1
  store i64 %2156, ptr %25, align 8, !tbaa !9
  %2157 = load ptr, ptr %15, align 8, !tbaa !5
  %2158 = load i64, ptr %49, align 8, !tbaa !9
  %2159 = load i64, ptr %47, align 8, !tbaa !9
  %2160 = add nsw i64 %2159, 1
  %2161 = load i64, ptr %21, align 8, !tbaa !9
  %2162 = mul nsw i64 %2160, %2161
  %2163 = add nsw i64 %2158, %2162
  %2164 = getelementptr inbounds %struct.doublecomplex, ptr %2157, i64 %2163
  %2165 = load ptr, ptr %16, align 8, !tbaa !5
  %2166 = call i32 @zlacgv_(ptr noundef %25, ptr noundef %2164, ptr noundef %2165)
  %2167 = load i64, ptr %49, align 8, !tbaa !9
  %2168 = load ptr, ptr %12, align 8, !tbaa !5
  %2169 = load i64, ptr %2168, align 8, !tbaa !9
  %2170 = icmp slt i64 %2167, %2169
  br i1 %2170, label %2171, label %2193

2171:                                             ; preds = %2106
  %2172 = load ptr, ptr %12, align 8, !tbaa !5
  %2173 = load i64, ptr %2172, align 8, !tbaa !9
  %2174 = load i64, ptr %49, align 8, !tbaa !9
  %2175 = sub nsw i64 %2173, %2174
  store i64 %2175, ptr %25, align 8, !tbaa !9
  %2176 = load ptr, ptr %15, align 8, !tbaa !5
  %2177 = load i64, ptr %49, align 8, !tbaa !9
  %2178 = add nsw i64 %2177, 1
  %2179 = load i64, ptr %47, align 8, !tbaa !9
  %2180 = load i64, ptr %21, align 8, !tbaa !9
  %2181 = mul nsw i64 %2179, %2180
  %2182 = add nsw i64 %2178, %2181
  %2183 = getelementptr inbounds %struct.doublecomplex, ptr %2176, i64 %2182
  %2184 = load ptr, ptr %15, align 8, !tbaa !5
  %2185 = load i64, ptr %49, align 8, !tbaa !9
  %2186 = add nsw i64 %2185, 1
  %2187 = load i64, ptr %49, align 8, !tbaa !9
  %2188 = load i64, ptr %21, align 8, !tbaa !9
  %2189 = mul nsw i64 %2187, %2188
  %2190 = add nsw i64 %2186, %2189
  %2191 = getelementptr inbounds %struct.doublecomplex, ptr %2184, i64 %2190
  %2192 = call i32 @f2c_zcopy(ptr noundef %25, ptr noundef %2183, ptr noundef @c__1, ptr noundef %2191, ptr noundef @c__1)
  br label %2193

2193:                                             ; preds = %2171, %2106
  %2194 = load i64, ptr %47, align 8, !tbaa !9
  %2195 = sub nsw i64 %2194, 1
  store i64 %2195, ptr %25, align 8, !tbaa !9
  %2196 = load ptr, ptr %15, align 8, !tbaa !5
  %2197 = load i64, ptr %47, align 8, !tbaa !9
  %2198 = load i64, ptr %21, align 8, !tbaa !9
  %2199 = add nsw i64 %2197, %2198
  %2200 = getelementptr inbounds %struct.doublecomplex, ptr %2196, i64 %2199
  %2201 = load ptr, ptr %16, align 8, !tbaa !5
  %2202 = load ptr, ptr %15, align 8, !tbaa !5
  %2203 = load i64, ptr %49, align 8, !tbaa !9
  %2204 = load i64, ptr %21, align 8, !tbaa !9
  %2205 = add nsw i64 %2203, %2204
  %2206 = getelementptr inbounds %struct.doublecomplex, ptr %2202, i64 %2205
  %2207 = load ptr, ptr %16, align 8, !tbaa !5
  %2208 = call i32 @f2c_zswap(ptr noundef %25, ptr noundef %2200, ptr noundef %2201, ptr noundef %2206, ptr noundef %2207)
  %2209 = load ptr, ptr %18, align 8, !tbaa !5
  %2210 = load i64, ptr %47, align 8, !tbaa !9
  %2211 = load i64, ptr %23, align 8, !tbaa !9
  %2212 = add nsw i64 %2210, %2211
  %2213 = getelementptr inbounds %struct.doublecomplex, ptr %2209, i64 %2212
  %2214 = load ptr, ptr %19, align 8, !tbaa !5
  %2215 = load ptr, ptr %18, align 8, !tbaa !5
  %2216 = load i64, ptr %49, align 8, !tbaa !9
  %2217 = load i64, ptr %23, align 8, !tbaa !9
  %2218 = add nsw i64 %2216, %2217
  %2219 = getelementptr inbounds %struct.doublecomplex, ptr %2215, i64 %2218
  %2220 = load ptr, ptr %19, align 8, !tbaa !5
  %2221 = call i32 @f2c_zswap(ptr noundef %47, ptr noundef %2213, ptr noundef %2214, ptr noundef %2219, ptr noundef %2220)
  br label %2222

2222:                                             ; preds = %2193, %2098
  %2223 = load i64, ptr %55, align 8, !tbaa !9
  %2224 = icmp eq i64 %2223, 1
  br i1 %2224, label %2225, label %2289

2225:                                             ; preds = %2222
  %2226 = load ptr, ptr %12, align 8, !tbaa !5
  %2227 = load i64, ptr %2226, align 8, !tbaa !9
  %2228 = load i64, ptr %39, align 8, !tbaa !9
  %2229 = sub nsw i64 %2227, %2228
  %2230 = add nsw i64 %2229, 1
  store i64 %2230, ptr %25, align 8, !tbaa !9
  %2231 = load ptr, ptr %18, align 8, !tbaa !5
  %2232 = load i64, ptr %39, align 8, !tbaa !9
  %2233 = load i64, ptr %39, align 8, !tbaa !9
  %2234 = load i64, ptr %23, align 8, !tbaa !9
  %2235 = mul nsw i64 %2233, %2234
  %2236 = add nsw i64 %2232, %2235
  %2237 = getelementptr inbounds %struct.doublecomplex, ptr %2231, i64 %2236
  %2238 = load ptr, ptr %15, align 8, !tbaa !5
  %2239 = load i64, ptr %39, align 8, !tbaa !9
  %2240 = load i64, ptr %39, align 8, !tbaa !9
  %2241 = load i64, ptr %21, align 8, !tbaa !9
  %2242 = mul nsw i64 %2240, %2241
  %2243 = add nsw i64 %2239, %2242
  %2244 = getelementptr inbounds %struct.doublecomplex, ptr %2238, i64 %2243
  %2245 = call i32 @f2c_zcopy(ptr noundef %25, ptr noundef %2237, ptr noundef @c__1, ptr noundef %2244, ptr noundef @c__1)
  %2246 = load i64, ptr %39, align 8, !tbaa !9
  %2247 = load ptr, ptr %12, align 8, !tbaa !5
  %2248 = load i64, ptr %2247, align 8, !tbaa !9
  %2249 = icmp slt i64 %2246, %2248
  br i1 %2249, label %2250, label %2288

2250:                                             ; preds = %2225
  %2251 = load i64, ptr %39, align 8, !tbaa !9
  %2252 = load i64, ptr %39, align 8, !tbaa !9
  %2253 = load i64, ptr %21, align 8, !tbaa !9
  %2254 = mul nsw i64 %2252, %2253
  %2255 = add nsw i64 %2251, %2254
  store i64 %2255, ptr %25, align 8, !tbaa !9
  %2256 = load ptr, ptr %15, align 8, !tbaa !5
  %2257 = load i64, ptr %25, align 8, !tbaa !9
  %2258 = getelementptr inbounds %struct.doublecomplex, ptr %2256, i64 %2257
  %2259 = getelementptr inbounds %struct.doublecomplex, ptr %2258, i32 0, i32 0
  %2260 = load double, ptr %2259, align 8, !tbaa !13
  %2261 = fdiv double 1.000000e+00, %2260
  store double %2261, ptr %41, align 8, !tbaa !11
  %2262 = load ptr, ptr %12, align 8, !tbaa !5
  %2263 = load i64, ptr %2262, align 8, !tbaa !9
  %2264 = load i64, ptr %39, align 8, !tbaa !9
  %2265 = sub nsw i64 %2263, %2264
  store i64 %2265, ptr %25, align 8, !tbaa !9
  %2266 = load ptr, ptr %15, align 8, !tbaa !5
  %2267 = load i64, ptr %39, align 8, !tbaa !9
  %2268 = add nsw i64 %2267, 1
  %2269 = load i64, ptr %39, align 8, !tbaa !9
  %2270 = load i64, ptr %21, align 8, !tbaa !9
  %2271 = mul nsw i64 %2269, %2270
  %2272 = add nsw i64 %2268, %2271
  %2273 = getelementptr inbounds %struct.doublecomplex, ptr %2266, i64 %2272
  %2274 = call i32 @f2c_zdscal(ptr noundef %25, ptr noundef %41, ptr noundef %2273, ptr noundef @c__1)
  %2275 = load ptr, ptr %12, align 8, !tbaa !5
  %2276 = load i64, ptr %2275, align 8, !tbaa !9
  %2277 = load i64, ptr %39, align 8, !tbaa !9
  %2278 = sub nsw i64 %2276, %2277
  store i64 %2278, ptr %25, align 8, !tbaa !9
  %2279 = load ptr, ptr %18, align 8, !tbaa !5
  %2280 = load i64, ptr %39, align 8, !tbaa !9
  %2281 = add nsw i64 %2280, 1
  %2282 = load i64, ptr %39, align 8, !tbaa !9
  %2283 = load i64, ptr %23, align 8, !tbaa !9
  %2284 = mul nsw i64 %2282, %2283
  %2285 = add nsw i64 %2281, %2284
  %2286 = getelementptr inbounds %struct.doublecomplex, ptr %2279, i64 %2285
  %2287 = call i32 @zlacgv_(ptr noundef %25, ptr noundef %2286, ptr noundef @c__1)
  br label %2288

2288:                                             ; preds = %2250, %2225
  br label %2719

2289:                                             ; preds = %2222
  %2290 = load i64, ptr %39, align 8, !tbaa !9
  %2291 = load ptr, ptr %12, align 8, !tbaa !5
  %2292 = load i64, ptr %2291, align 8, !tbaa !9
  %2293 = sub nsw i64 %2292, 1
  %2294 = icmp slt i64 %2290, %2293
  br i1 %2294, label %2295, label %2600

2295:                                             ; preds = %2289
  %2296 = load i64, ptr %39, align 8, !tbaa !9
  %2297 = add nsw i64 %2296, 1
  %2298 = load i64, ptr %39, align 8, !tbaa !9
  %2299 = load i64, ptr %23, align 8, !tbaa !9
  %2300 = mul nsw i64 %2298, %2299
  %2301 = add nsw i64 %2297, %2300
  store i64 %2301, ptr %25, align 8, !tbaa !9
  %2302 = load ptr, ptr %18, align 8, !tbaa !5
  %2303 = load i64, ptr %25, align 8, !tbaa !9
  %2304 = getelementptr inbounds %struct.doublecomplex, ptr %2302, i64 %2303
  %2305 = getelementptr inbounds %struct.doublecomplex, ptr %2304, i32 0, i32 0
  %2306 = load double, ptr %2305, align 8, !tbaa !13
  %2307 = getelementptr inbounds %struct.doublecomplex, ptr %43, i32 0, i32 0
  store double %2306, ptr %2307, align 8, !tbaa !13
  %2308 = load ptr, ptr %18, align 8, !tbaa !5
  %2309 = load i64, ptr %25, align 8, !tbaa !9
  %2310 = getelementptr inbounds %struct.doublecomplex, ptr %2308, i64 %2309
  %2311 = getelementptr inbounds %struct.doublecomplex, ptr %2310, i32 0, i32 1
  %2312 = load double, ptr %2311, align 8, !tbaa !15
  %2313 = getelementptr inbounds %struct.doublecomplex, ptr %43, i32 0, i32 1
  store double %2312, ptr %2313, align 8, !tbaa !15
  %2314 = load ptr, ptr %18, align 8, !tbaa !5
  %2315 = load i64, ptr %39, align 8, !tbaa !9
  %2316 = add nsw i64 %2315, 1
  %2317 = load i64, ptr %39, align 8, !tbaa !9
  %2318 = add nsw i64 %2317, 1
  %2319 = load i64, ptr %23, align 8, !tbaa !9
  %2320 = mul nsw i64 %2318, %2319
  %2321 = add nsw i64 %2316, %2320
  %2322 = getelementptr inbounds %struct.doublecomplex, ptr %2314, i64 %2321
  call void @z_div(ptr noundef %34, ptr noundef %2322, ptr noundef %43)
  %2323 = getelementptr inbounds %struct.doublecomplex, ptr %34, i32 0, i32 0
  %2324 = load double, ptr %2323, align 8, !tbaa !13
  %2325 = getelementptr inbounds %struct.doublecomplex, ptr %42, i32 0, i32 0
  store double %2324, ptr %2325, align 8, !tbaa !13
  %2326 = getelementptr inbounds %struct.doublecomplex, ptr %34, i32 0, i32 1
  %2327 = load double, ptr %2326, align 8, !tbaa !15
  %2328 = getelementptr inbounds %struct.doublecomplex, ptr %42, i32 0, i32 1
  store double %2327, ptr %2328, align 8, !tbaa !15
  call void @d_cnjg(ptr noundef %35, ptr noundef %43)
  %2329 = load ptr, ptr %18, align 8, !tbaa !5
  %2330 = load i64, ptr %39, align 8, !tbaa !9
  %2331 = load i64, ptr %39, align 8, !tbaa !9
  %2332 = load i64, ptr %23, align 8, !tbaa !9
  %2333 = mul nsw i64 %2331, %2332
  %2334 = add nsw i64 %2330, %2333
  %2335 = getelementptr inbounds %struct.doublecomplex, ptr %2329, i64 %2334
  call void @z_div(ptr noundef %34, ptr noundef %2335, ptr noundef %35)
  %2336 = getelementptr inbounds %struct.doublecomplex, ptr %34, i32 0, i32 0
  %2337 = load double, ptr %2336, align 8, !tbaa !13
  %2338 = getelementptr inbounds %struct.doublecomplex, ptr %44, i32 0, i32 0
  store double %2337, ptr %2338, align 8, !tbaa !13
  %2339 = getelementptr inbounds %struct.doublecomplex, ptr %34, i32 0, i32 1
  %2340 = load double, ptr %2339, align 8, !tbaa !15
  %2341 = getelementptr inbounds %struct.doublecomplex, ptr %44, i32 0, i32 1
  store double %2340, ptr %2341, align 8, !tbaa !15
  %2342 = getelementptr inbounds %struct.doublecomplex, ptr %42, i32 0, i32 0
  %2343 = load double, ptr %2342, align 8, !tbaa !13
  %2344 = getelementptr inbounds %struct.doublecomplex, ptr %44, i32 0, i32 0
  %2345 = load double, ptr %2344, align 8, !tbaa !13
  %2346 = getelementptr inbounds %struct.doublecomplex, ptr %42, i32 0, i32 1
  %2347 = load double, ptr %2346, align 8, !tbaa !15
  %2348 = getelementptr inbounds %struct.doublecomplex, ptr %44, i32 0, i32 1
  %2349 = load double, ptr %2348, align 8, !tbaa !15
  %2350 = fmul double %2347, %2349
  %2351 = fneg double %2350
  %2352 = call double @llvm.fmuladd.f64(double %2343, double %2345, double %2351)
  %2353 = getelementptr inbounds %struct.doublecomplex, ptr %34, i32 0, i32 0
  store double %2352, ptr %2353, align 8, !tbaa !13
  %2354 = getelementptr inbounds %struct.doublecomplex, ptr %42, i32 0, i32 0
  %2355 = load double, ptr %2354, align 8, !tbaa !13
  %2356 = getelementptr inbounds %struct.doublecomplex, ptr %44, i32 0, i32 1
  %2357 = load double, ptr %2356, align 8, !tbaa !15
  %2358 = getelementptr inbounds %struct.doublecomplex, ptr %42, i32 0, i32 1
  %2359 = load double, ptr %2358, align 8, !tbaa !15
  %2360 = getelementptr inbounds %struct.doublecomplex, ptr %44, i32 0, i32 0
  %2361 = load double, ptr %2360, align 8, !tbaa !13
  %2362 = fmul double %2359, %2361
  %2363 = call double @llvm.fmuladd.f64(double %2355, double %2357, double %2362)
  %2364 = getelementptr inbounds %struct.doublecomplex, ptr %34, i32 0, i32 1
  store double %2363, ptr %2364, align 8, !tbaa !15
  %2365 = getelementptr inbounds %struct.doublecomplex, ptr %34, i32 0, i32 0
  %2366 = load double, ptr %2365, align 8, !tbaa !13
  %2367 = fsub double %2366, 1.000000e+00
  %2368 = fdiv double 1.000000e+00, %2367
  store double %2368, ptr %40, align 8, !tbaa !11
  %2369 = load double, ptr %40, align 8, !tbaa !11
  %2370 = getelementptr inbounds %struct.doublecomplex, ptr %35, i32 0, i32 0
  store double %2369, ptr %2370, align 8, !tbaa !13
  %2371 = getelementptr inbounds %struct.doublecomplex, ptr %35, i32 0, i32 1
  store double 0.000000e+00, ptr %2371, align 8, !tbaa !15
  call void @z_div(ptr noundef %34, ptr noundef %35, ptr noundef %43)
  %2372 = getelementptr inbounds %struct.doublecomplex, ptr %34, i32 0, i32 0
  %2373 = load double, ptr %2372, align 8, !tbaa !13
  %2374 = getelementptr inbounds %struct.doublecomplex, ptr %43, i32 0, i32 0
  store double %2373, ptr %2374, align 8, !tbaa !13
  %2375 = getelementptr inbounds %struct.doublecomplex, ptr %34, i32 0, i32 1
  %2376 = load double, ptr %2375, align 8, !tbaa !15
  %2377 = getelementptr inbounds %struct.doublecomplex, ptr %43, i32 0, i32 1
  store double %2376, ptr %2377, align 8, !tbaa !15
  %2378 = load ptr, ptr %12, align 8, !tbaa !5
  %2379 = load i64, ptr %2378, align 8, !tbaa !9
  store i64 %2379, ptr %25, align 8, !tbaa !9
  %2380 = load i64, ptr %39, align 8, !tbaa !9
  %2381 = add nsw i64 %2380, 2
  store i64 %2381, ptr %38, align 8, !tbaa !9
  br label %2382

2382:                                             ; preds = %2596, %2295
  %2383 = load i64, ptr %38, align 8, !tbaa !9
  %2384 = load i64, ptr %25, align 8, !tbaa !9
  %2385 = icmp sle i64 %2383, %2384
  br i1 %2385, label %2386, label %2599

2386:                                             ; preds = %2382
  %2387 = load i64, ptr %38, align 8, !tbaa !9
  %2388 = load i64, ptr %39, align 8, !tbaa !9
  %2389 = load i64, ptr %21, align 8, !tbaa !9
  %2390 = mul nsw i64 %2388, %2389
  %2391 = add nsw i64 %2387, %2390
  store i64 %2391, ptr %26, align 8, !tbaa !9
  call void @d_cnjg(ptr noundef %35, ptr noundef %43)
  %2392 = load i64, ptr %38, align 8, !tbaa !9
  %2393 = load i64, ptr %39, align 8, !tbaa !9
  %2394 = load i64, ptr %23, align 8, !tbaa !9
  %2395 = mul nsw i64 %2393, %2394
  %2396 = add nsw i64 %2392, %2395
  store i64 %2396, ptr %27, align 8, !tbaa !9
  %2397 = getelementptr inbounds %struct.doublecomplex, ptr %42, i32 0, i32 0
  %2398 = load double, ptr %2397, align 8, !tbaa !13
  %2399 = load ptr, ptr %18, align 8, !tbaa !5
  %2400 = load i64, ptr %27, align 8, !tbaa !9
  %2401 = getelementptr inbounds %struct.doublecomplex, ptr %2399, i64 %2400
  %2402 = getelementptr inbounds %struct.doublecomplex, ptr %2401, i32 0, i32 0
  %2403 = load double, ptr %2402, align 8, !tbaa !13
  %2404 = getelementptr inbounds %struct.doublecomplex, ptr %42, i32 0, i32 1
  %2405 = load double, ptr %2404, align 8, !tbaa !15
  %2406 = load ptr, ptr %18, align 8, !tbaa !5
  %2407 = load i64, ptr %27, align 8, !tbaa !9
  %2408 = getelementptr inbounds %struct.doublecomplex, ptr %2406, i64 %2407
  %2409 = getelementptr inbounds %struct.doublecomplex, ptr %2408, i32 0, i32 1
  %2410 = load double, ptr %2409, align 8, !tbaa !15
  %2411 = fmul double %2405, %2410
  %2412 = fneg double %2411
  %2413 = call double @llvm.fmuladd.f64(double %2398, double %2403, double %2412)
  %2414 = getelementptr inbounds %struct.doublecomplex, ptr %37, i32 0, i32 0
  store double %2413, ptr %2414, align 8, !tbaa !13
  %2415 = getelementptr inbounds %struct.doublecomplex, ptr %42, i32 0, i32 0
  %2416 = load double, ptr %2415, align 8, !tbaa !13
  %2417 = load ptr, ptr %18, align 8, !tbaa !5
  %2418 = load i64, ptr %27, align 8, !tbaa !9
  %2419 = getelementptr inbounds %struct.doublecomplex, ptr %2417, i64 %2418
  %2420 = getelementptr inbounds %struct.doublecomplex, ptr %2419, i32 0, i32 1
  %2421 = load double, ptr %2420, align 8, !tbaa !15
  %2422 = getelementptr inbounds %struct.doublecomplex, ptr %42, i32 0, i32 1
  %2423 = load double, ptr %2422, align 8, !tbaa !15
  %2424 = load ptr, ptr %18, align 8, !tbaa !5
  %2425 = load i64, ptr %27, align 8, !tbaa !9
  %2426 = getelementptr inbounds %struct.doublecomplex, ptr %2424, i64 %2425
  %2427 = getelementptr inbounds %struct.doublecomplex, ptr %2426, i32 0, i32 0
  %2428 = load double, ptr %2427, align 8, !tbaa !13
  %2429 = fmul double %2423, %2428
  %2430 = call double @llvm.fmuladd.f64(double %2416, double %2421, double %2429)
  %2431 = getelementptr inbounds %struct.doublecomplex, ptr %37, i32 0, i32 1
  store double %2430, ptr %2431, align 8, !tbaa !15
  %2432 = load i64, ptr %38, align 8, !tbaa !9
  %2433 = load i64, ptr %39, align 8, !tbaa !9
  %2434 = add nsw i64 %2433, 1
  %2435 = load i64, ptr %23, align 8, !tbaa !9
  %2436 = mul nsw i64 %2434, %2435
  %2437 = add nsw i64 %2432, %2436
  store i64 %2437, ptr %28, align 8, !tbaa !9
  %2438 = getelementptr inbounds %struct.doublecomplex, ptr %37, i32 0, i32 0
  %2439 = load double, ptr %2438, align 8, !tbaa !13
  %2440 = load ptr, ptr %18, align 8, !tbaa !5
  %2441 = load i64, ptr %28, align 8, !tbaa !9
  %2442 = getelementptr inbounds %struct.doublecomplex, ptr %2440, i64 %2441
  %2443 = getelementptr inbounds %struct.doublecomplex, ptr %2442, i32 0, i32 0
  %2444 = load double, ptr %2443, align 8, !tbaa !13
  %2445 = fsub double %2439, %2444
  %2446 = getelementptr inbounds %struct.doublecomplex, ptr %36, i32 0, i32 0
  store double %2445, ptr %2446, align 8, !tbaa !13
  %2447 = getelementptr inbounds %struct.doublecomplex, ptr %37, i32 0, i32 1
  %2448 = load double, ptr %2447, align 8, !tbaa !15
  %2449 = load ptr, ptr %18, align 8, !tbaa !5
  %2450 = load i64, ptr %28, align 8, !tbaa !9
  %2451 = getelementptr inbounds %struct.doublecomplex, ptr %2449, i64 %2450
  %2452 = getelementptr inbounds %struct.doublecomplex, ptr %2451, i32 0, i32 1
  %2453 = load double, ptr %2452, align 8, !tbaa !15
  %2454 = fsub double %2448, %2453
  %2455 = getelementptr inbounds %struct.doublecomplex, ptr %36, i32 0, i32 1
  store double %2454, ptr %2455, align 8, !tbaa !15
  %2456 = getelementptr inbounds %struct.doublecomplex, ptr %35, i32 0, i32 0
  %2457 = load double, ptr %2456, align 8, !tbaa !13
  %2458 = getelementptr inbounds %struct.doublecomplex, ptr %36, i32 0, i32 0
  %2459 = load double, ptr %2458, align 8, !tbaa !13
  %2460 = getelementptr inbounds %struct.doublecomplex, ptr %35, i32 0, i32 1
  %2461 = load double, ptr %2460, align 8, !tbaa !15
  %2462 = getelementptr inbounds %struct.doublecomplex, ptr %36, i32 0, i32 1
  %2463 = load double, ptr %2462, align 8, !tbaa !15
  %2464 = fmul double %2461, %2463
  %2465 = fneg double %2464
  %2466 = call double @llvm.fmuladd.f64(double %2457, double %2459, double %2465)
  %2467 = getelementptr inbounds %struct.doublecomplex, ptr %34, i32 0, i32 0
  store double %2466, ptr %2467, align 8, !tbaa !13
  %2468 = getelementptr inbounds %struct.doublecomplex, ptr %35, i32 0, i32 0
  %2469 = load double, ptr %2468, align 8, !tbaa !13
  %2470 = getelementptr inbounds %struct.doublecomplex, ptr %36, i32 0, i32 1
  %2471 = load double, ptr %2470, align 8, !tbaa !15
  %2472 = getelementptr inbounds %struct.doublecomplex, ptr %35, i32 0, i32 1
  %2473 = load double, ptr %2472, align 8, !tbaa !15
  %2474 = getelementptr inbounds %struct.doublecomplex, ptr %36, i32 0, i32 0
  %2475 = load double, ptr %2474, align 8, !tbaa !13
  %2476 = fmul double %2473, %2475
  %2477 = call double @llvm.fmuladd.f64(double %2469, double %2471, double %2476)
  %2478 = getelementptr inbounds %struct.doublecomplex, ptr %34, i32 0, i32 1
  store double %2477, ptr %2478, align 8, !tbaa !15
  %2479 = getelementptr inbounds %struct.doublecomplex, ptr %34, i32 0, i32 0
  %2480 = load double, ptr %2479, align 8, !tbaa !13
  %2481 = load ptr, ptr %15, align 8, !tbaa !5
  %2482 = load i64, ptr %26, align 8, !tbaa !9
  %2483 = getelementptr inbounds %struct.doublecomplex, ptr %2481, i64 %2482
  %2484 = getelementptr inbounds %struct.doublecomplex, ptr %2483, i32 0, i32 0
  store double %2480, ptr %2484, align 8, !tbaa !13
  %2485 = getelementptr inbounds %struct.doublecomplex, ptr %34, i32 0, i32 1
  %2486 = load double, ptr %2485, align 8, !tbaa !15
  %2487 = load ptr, ptr %15, align 8, !tbaa !5
  %2488 = load i64, ptr %26, align 8, !tbaa !9
  %2489 = getelementptr inbounds %struct.doublecomplex, ptr %2487, i64 %2488
  %2490 = getelementptr inbounds %struct.doublecomplex, ptr %2489, i32 0, i32 1
  store double %2486, ptr %2490, align 8, !tbaa !15
  %2491 = load i64, ptr %38, align 8, !tbaa !9
  %2492 = load i64, ptr %39, align 8, !tbaa !9
  %2493 = add nsw i64 %2492, 1
  %2494 = load i64, ptr %21, align 8, !tbaa !9
  %2495 = mul nsw i64 %2493, %2494
  %2496 = add nsw i64 %2491, %2495
  store i64 %2496, ptr %26, align 8, !tbaa !9
  %2497 = load i64, ptr %38, align 8, !tbaa !9
  %2498 = load i64, ptr %39, align 8, !tbaa !9
  %2499 = add nsw i64 %2498, 1
  %2500 = load i64, ptr %23, align 8, !tbaa !9
  %2501 = mul nsw i64 %2499, %2500
  %2502 = add nsw i64 %2497, %2501
  store i64 %2502, ptr %27, align 8, !tbaa !9
  %2503 = getelementptr inbounds %struct.doublecomplex, ptr %44, i32 0, i32 0
  %2504 = load double, ptr %2503, align 8, !tbaa !13
  %2505 = load ptr, ptr %18, align 8, !tbaa !5
  %2506 = load i64, ptr %27, align 8, !tbaa !9
  %2507 = getelementptr inbounds %struct.doublecomplex, ptr %2505, i64 %2506
  %2508 = getelementptr inbounds %struct.doublecomplex, ptr %2507, i32 0, i32 0
  %2509 = load double, ptr %2508, align 8, !tbaa !13
  %2510 = getelementptr inbounds %struct.doublecomplex, ptr %44, i32 0, i32 1
  %2511 = load double, ptr %2510, align 8, !tbaa !15
  %2512 = load ptr, ptr %18, align 8, !tbaa !5
  %2513 = load i64, ptr %27, align 8, !tbaa !9
  %2514 = getelementptr inbounds %struct.doublecomplex, ptr %2512, i64 %2513
  %2515 = getelementptr inbounds %struct.doublecomplex, ptr %2514, i32 0, i32 1
  %2516 = load double, ptr %2515, align 8, !tbaa !15
  %2517 = fmul double %2511, %2516
  %2518 = fneg double %2517
  %2519 = call double @llvm.fmuladd.f64(double %2504, double %2509, double %2518)
  %2520 = getelementptr inbounds %struct.doublecomplex, ptr %36, i32 0, i32 0
  store double %2519, ptr %2520, align 8, !tbaa !13
  %2521 = getelementptr inbounds %struct.doublecomplex, ptr %44, i32 0, i32 0
  %2522 = load double, ptr %2521, align 8, !tbaa !13
  %2523 = load ptr, ptr %18, align 8, !tbaa !5
  %2524 = load i64, ptr %27, align 8, !tbaa !9
  %2525 = getelementptr inbounds %struct.doublecomplex, ptr %2523, i64 %2524
  %2526 = getelementptr inbounds %struct.doublecomplex, ptr %2525, i32 0, i32 1
  %2527 = load double, ptr %2526, align 8, !tbaa !15
  %2528 = getelementptr inbounds %struct.doublecomplex, ptr %44, i32 0, i32 1
  %2529 = load double, ptr %2528, align 8, !tbaa !15
  %2530 = load ptr, ptr %18, align 8, !tbaa !5
  %2531 = load i64, ptr %27, align 8, !tbaa !9
  %2532 = getelementptr inbounds %struct.doublecomplex, ptr %2530, i64 %2531
  %2533 = getelementptr inbounds %struct.doublecomplex, ptr %2532, i32 0, i32 0
  %2534 = load double, ptr %2533, align 8, !tbaa !13
  %2535 = fmul double %2529, %2534
  %2536 = call double @llvm.fmuladd.f64(double %2522, double %2527, double %2535)
  %2537 = getelementptr inbounds %struct.doublecomplex, ptr %36, i32 0, i32 1
  store double %2536, ptr %2537, align 8, !tbaa !15
  %2538 = load i64, ptr %38, align 8, !tbaa !9
  %2539 = load i64, ptr %39, align 8, !tbaa !9
  %2540 = load i64, ptr %23, align 8, !tbaa !9
  %2541 = mul nsw i64 %2539, %2540
  %2542 = add nsw i64 %2538, %2541
  store i64 %2542, ptr %28, align 8, !tbaa !9
  %2543 = getelementptr inbounds %struct.doublecomplex, ptr %36, i32 0, i32 0
  %2544 = load double, ptr %2543, align 8, !tbaa !13
  %2545 = load ptr, ptr %18, align 8, !tbaa !5
  %2546 = load i64, ptr %28, align 8, !tbaa !9
  %2547 = getelementptr inbounds %struct.doublecomplex, ptr %2545, i64 %2546
  %2548 = getelementptr inbounds %struct.doublecomplex, ptr %2547, i32 0, i32 0
  %2549 = load double, ptr %2548, align 8, !tbaa !13
  %2550 = fsub double %2544, %2549
  %2551 = getelementptr inbounds %struct.doublecomplex, ptr %35, i32 0, i32 0
  store double %2550, ptr %2551, align 8, !tbaa !13
  %2552 = getelementptr inbounds %struct.doublecomplex, ptr %36, i32 0, i32 1
  %2553 = load double, ptr %2552, align 8, !tbaa !15
  %2554 = load ptr, ptr %18, align 8, !tbaa !5
  %2555 = load i64, ptr %28, align 8, !tbaa !9
  %2556 = getelementptr inbounds %struct.doublecomplex, ptr %2554, i64 %2555
  %2557 = getelementptr inbounds %struct.doublecomplex, ptr %2556, i32 0, i32 1
  %2558 = load double, ptr %2557, align 8, !tbaa !15
  %2559 = fsub double %2553, %2558
  %2560 = getelementptr inbounds %struct.doublecomplex, ptr %35, i32 0, i32 1
  store double %2559, ptr %2560, align 8, !tbaa !15
  %2561 = getelementptr inbounds %struct.doublecomplex, ptr %43, i32 0, i32 0
  %2562 = load double, ptr %2561, align 8, !tbaa !13
  %2563 = getelementptr inbounds %struct.doublecomplex, ptr %35, i32 0, i32 0
  %2564 = load double, ptr %2563, align 8, !tbaa !13
  %2565 = getelementptr inbounds %struct.doublecomplex, ptr %43, i32 0, i32 1
  %2566 = load double, ptr %2565, align 8, !tbaa !15
  %2567 = getelementptr inbounds %struct.doublecomplex, ptr %35, i32 0, i32 1
  %2568 = load double, ptr %2567, align 8, !tbaa !15
  %2569 = fmul double %2566, %2568
  %2570 = fneg double %2569
  %2571 = call double @llvm.fmuladd.f64(double %2562, double %2564, double %2570)
  %2572 = getelementptr inbounds %struct.doublecomplex, ptr %34, i32 0, i32 0
  store double %2571, ptr %2572, align 8, !tbaa !13
  %2573 = getelementptr inbounds %struct.doublecomplex, ptr %43, i32 0, i32 0
  %2574 = load double, ptr %2573, align 8, !tbaa !13
  %2575 = getelementptr inbounds %struct.doublecomplex, ptr %35, i32 0, i32 1
  %2576 = load double, ptr %2575, align 8, !tbaa !15
  %2577 = getelementptr inbounds %struct.doublecomplex, ptr %43, i32 0, i32 1
  %2578 = load double, ptr %2577, align 8, !tbaa !15
  %2579 = getelementptr inbounds %struct.doublecomplex, ptr %35, i32 0, i32 0
  %2580 = load double, ptr %2579, align 8, !tbaa !13
  %2581 = fmul double %2578, %2580
  %2582 = call double @llvm.fmuladd.f64(double %2574, double %2576, double %2581)
  %2583 = getelementptr inbounds %struct.doublecomplex, ptr %34, i32 0, i32 1
  store double %2582, ptr %2583, align 8, !tbaa !15
  %2584 = getelementptr inbounds %struct.doublecomplex, ptr %34, i32 0, i32 0
  %2585 = load double, ptr %2584, align 8, !tbaa !13
  %2586 = load ptr, ptr %15, align 8, !tbaa !5
  %2587 = load i64, ptr %26, align 8, !tbaa !9
  %2588 = getelementptr inbounds %struct.doublecomplex, ptr %2586, i64 %2587
  %2589 = getelementptr inbounds %struct.doublecomplex, ptr %2588, i32 0, i32 0
  store double %2585, ptr %2589, align 8, !tbaa !13
  %2590 = getelementptr inbounds %struct.doublecomplex, ptr %34, i32 0, i32 1
  %2591 = load double, ptr %2590, align 8, !tbaa !15
  %2592 = load ptr, ptr %15, align 8, !tbaa !5
  %2593 = load i64, ptr %26, align 8, !tbaa !9
  %2594 = getelementptr inbounds %struct.doublecomplex, ptr %2592, i64 %2593
  %2595 = getelementptr inbounds %struct.doublecomplex, ptr %2594, i32 0, i32 1
  store double %2591, ptr %2595, align 8, !tbaa !15
  br label %2596

2596:                                             ; preds = %2386
  %2597 = load i64, ptr %38, align 8, !tbaa !9
  %2598 = add nsw i64 %2597, 1
  store i64 %2598, ptr %38, align 8, !tbaa !9
  br label %2382, !llvm.loop !20

2599:                                             ; preds = %2382
  br label %2600

2600:                                             ; preds = %2599, %2289
  %2601 = load i64, ptr %39, align 8, !tbaa !9
  %2602 = load i64, ptr %39, align 8, !tbaa !9
  %2603 = load i64, ptr %21, align 8, !tbaa !9
  %2604 = mul nsw i64 %2602, %2603
  %2605 = add nsw i64 %2601, %2604
  store i64 %2605, ptr %25, align 8, !tbaa !9
  %2606 = load i64, ptr %39, align 8, !tbaa !9
  %2607 = load i64, ptr %39, align 8, !tbaa !9
  %2608 = load i64, ptr %23, align 8, !tbaa !9
  %2609 = mul nsw i64 %2607, %2608
  %2610 = add nsw i64 %2606, %2609
  store i64 %2610, ptr %26, align 8, !tbaa !9
  %2611 = load ptr, ptr %18, align 8, !tbaa !5
  %2612 = load i64, ptr %26, align 8, !tbaa !9
  %2613 = getelementptr inbounds %struct.doublecomplex, ptr %2611, i64 %2612
  %2614 = getelementptr inbounds %struct.doublecomplex, ptr %2613, i32 0, i32 0
  %2615 = load double, ptr %2614, align 8, !tbaa !13
  %2616 = load ptr, ptr %15, align 8, !tbaa !5
  %2617 = load i64, ptr %25, align 8, !tbaa !9
  %2618 = getelementptr inbounds %struct.doublecomplex, ptr %2616, i64 %2617
  %2619 = getelementptr inbounds %struct.doublecomplex, ptr %2618, i32 0, i32 0
  store double %2615, ptr %2619, align 8, !tbaa !13
  %2620 = load ptr, ptr %18, align 8, !tbaa !5
  %2621 = load i64, ptr %26, align 8, !tbaa !9
  %2622 = getelementptr inbounds %struct.doublecomplex, ptr %2620, i64 %2621
  %2623 = getelementptr inbounds %struct.doublecomplex, ptr %2622, i32 0, i32 1
  %2624 = load double, ptr %2623, align 8, !tbaa !15
  %2625 = load ptr, ptr %15, align 8, !tbaa !5
  %2626 = load i64, ptr %25, align 8, !tbaa !9
  %2627 = getelementptr inbounds %struct.doublecomplex, ptr %2625, i64 %2626
  %2628 = getelementptr inbounds %struct.doublecomplex, ptr %2627, i32 0, i32 1
  store double %2624, ptr %2628, align 8, !tbaa !15
  %2629 = load i64, ptr %39, align 8, !tbaa !9
  %2630 = add nsw i64 %2629, 1
  %2631 = load i64, ptr %39, align 8, !tbaa !9
  %2632 = load i64, ptr %21, align 8, !tbaa !9
  %2633 = mul nsw i64 %2631, %2632
  %2634 = add nsw i64 %2630, %2633
  store i64 %2634, ptr %25, align 8, !tbaa !9
  %2635 = load i64, ptr %39, align 8, !tbaa !9
  %2636 = add nsw i64 %2635, 1
  %2637 = load i64, ptr %39, align 8, !tbaa !9
  %2638 = load i64, ptr %23, align 8, !tbaa !9
  %2639 = mul nsw i64 %2637, %2638
  %2640 = add nsw i64 %2636, %2639
  store i64 %2640, ptr %26, align 8, !tbaa !9
  %2641 = load ptr, ptr %18, align 8, !tbaa !5
  %2642 = load i64, ptr %26, align 8, !tbaa !9
  %2643 = getelementptr inbounds %struct.doublecomplex, ptr %2641, i64 %2642
  %2644 = getelementptr inbounds %struct.doublecomplex, ptr %2643, i32 0, i32 0
  %2645 = load double, ptr %2644, align 8, !tbaa !13
  %2646 = load ptr, ptr %15, align 8, !tbaa !5
  %2647 = load i64, ptr %25, align 8, !tbaa !9
  %2648 = getelementptr inbounds %struct.doublecomplex, ptr %2646, i64 %2647
  %2649 = getelementptr inbounds %struct.doublecomplex, ptr %2648, i32 0, i32 0
  store double %2645, ptr %2649, align 8, !tbaa !13
  %2650 = load ptr, ptr %18, align 8, !tbaa !5
  %2651 = load i64, ptr %26, align 8, !tbaa !9
  %2652 = getelementptr inbounds %struct.doublecomplex, ptr %2650, i64 %2651
  %2653 = getelementptr inbounds %struct.doublecomplex, ptr %2652, i32 0, i32 1
  %2654 = load double, ptr %2653, align 8, !tbaa !15
  %2655 = load ptr, ptr %15, align 8, !tbaa !5
  %2656 = load i64, ptr %25, align 8, !tbaa !9
  %2657 = getelementptr inbounds %struct.doublecomplex, ptr %2655, i64 %2656
  %2658 = getelementptr inbounds %struct.doublecomplex, ptr %2657, i32 0, i32 1
  store double %2654, ptr %2658, align 8, !tbaa !15
  %2659 = load i64, ptr %39, align 8, !tbaa !9
  %2660 = add nsw i64 %2659, 1
  %2661 = load i64, ptr %39, align 8, !tbaa !9
  %2662 = add nsw i64 %2661, 1
  %2663 = load i64, ptr %21, align 8, !tbaa !9
  %2664 = mul nsw i64 %2662, %2663
  %2665 = add nsw i64 %2660, %2664
  store i64 %2665, ptr %25, align 8, !tbaa !9
  %2666 = load i64, ptr %39, align 8, !tbaa !9
  %2667 = add nsw i64 %2666, 1
  %2668 = load i64, ptr %39, align 8, !tbaa !9
  %2669 = add nsw i64 %2668, 1
  %2670 = load i64, ptr %23, align 8, !tbaa !9
  %2671 = mul nsw i64 %2669, %2670
  %2672 = add nsw i64 %2667, %2671
  store i64 %2672, ptr %26, align 8, !tbaa !9
  %2673 = load ptr, ptr %18, align 8, !tbaa !5
  %2674 = load i64, ptr %26, align 8, !tbaa !9
  %2675 = getelementptr inbounds %struct.doublecomplex, ptr %2673, i64 %2674
  %2676 = getelementptr inbounds %struct.doublecomplex, ptr %2675, i32 0, i32 0
  %2677 = load double, ptr %2676, align 8, !tbaa !13
  %2678 = load ptr, ptr %15, align 8, !tbaa !5
  %2679 = load i64, ptr %25, align 8, !tbaa !9
  %2680 = getelementptr inbounds %struct.doublecomplex, ptr %2678, i64 %2679
  %2681 = getelementptr inbounds %struct.doublecomplex, ptr %2680, i32 0, i32 0
  store double %2677, ptr %2681, align 8, !tbaa !13
  %2682 = load ptr, ptr %18, align 8, !tbaa !5
  %2683 = load i64, ptr %26, align 8, !tbaa !9
  %2684 = getelementptr inbounds %struct.doublecomplex, ptr %2682, i64 %2683
  %2685 = getelementptr inbounds %struct.doublecomplex, ptr %2684, i32 0, i32 1
  %2686 = load double, ptr %2685, align 8, !tbaa !15
  %2687 = load ptr, ptr %15, align 8, !tbaa !5
  %2688 = load i64, ptr %25, align 8, !tbaa !9
  %2689 = getelementptr inbounds %struct.doublecomplex, ptr %2687, i64 %2688
  %2690 = getelementptr inbounds %struct.doublecomplex, ptr %2689, i32 0, i32 1
  store double %2686, ptr %2690, align 8, !tbaa !15
  %2691 = load ptr, ptr %12, align 8, !tbaa !5
  %2692 = load i64, ptr %2691, align 8, !tbaa !9
  %2693 = load i64, ptr %39, align 8, !tbaa !9
  %2694 = sub nsw i64 %2692, %2693
  store i64 %2694, ptr %25, align 8, !tbaa !9
  %2695 = load ptr, ptr %18, align 8, !tbaa !5
  %2696 = load i64, ptr %39, align 8, !tbaa !9
  %2697 = add nsw i64 %2696, 1
  %2698 = load i64, ptr %39, align 8, !tbaa !9
  %2699 = load i64, ptr %23, align 8, !tbaa !9
  %2700 = mul nsw i64 %2698, %2699
  %2701 = add nsw i64 %2697, %2700
  %2702 = getelementptr inbounds %struct.doublecomplex, ptr %2695, i64 %2701
  %2703 = call i32 @zlacgv_(ptr noundef %25, ptr noundef %2702, ptr noundef @c__1)
  %2704 = load ptr, ptr %12, align 8, !tbaa !5
  %2705 = load i64, ptr %2704, align 8, !tbaa !9
  %2706 = load i64, ptr %39, align 8, !tbaa !9
  %2707 = sub nsw i64 %2705, %2706
  %2708 = sub nsw i64 %2707, 1
  store i64 %2708, ptr %25, align 8, !tbaa !9
  %2709 = load ptr, ptr %18, align 8, !tbaa !5
  %2710 = load i64, ptr %39, align 8, !tbaa !9
  %2711 = add nsw i64 %2710, 2
  %2712 = load i64, ptr %39, align 8, !tbaa !9
  %2713 = add nsw i64 %2712, 1
  %2714 = load i64, ptr %23, align 8, !tbaa !9
  %2715 = mul nsw i64 %2713, %2714
  %2716 = add nsw i64 %2711, %2715
  %2717 = getelementptr inbounds %struct.doublecomplex, ptr %2709, i64 %2716
  %2718 = call i32 @zlacgv_(ptr noundef %25, ptr noundef %2717, ptr noundef @c__1)
  br label %2719

2719:                                             ; preds = %2600, %2288
  br label %2720

2720:                                             ; preds = %2719, %1734
  %2721 = load i64, ptr %55, align 8, !tbaa !9
  %2722 = icmp eq i64 %2721, 1
  br i1 %2722, label %2723, label %2728

2723:                                             ; preds = %2720
  %2724 = load i64, ptr %49, align 8, !tbaa !9
  %2725 = load ptr, ptr %17, align 8, !tbaa !5
  %2726 = load i64, ptr %39, align 8, !tbaa !9
  %2727 = getelementptr inbounds i64, ptr %2725, i64 %2726
  store i64 %2724, ptr %2727, align 8, !tbaa !9
  br label %2740

2728:                                             ; preds = %2720
  %2729 = load i64, ptr %49, align 8, !tbaa !9
  %2730 = sub nsw i64 0, %2729
  %2731 = load ptr, ptr %17, align 8, !tbaa !5
  %2732 = load i64, ptr %39, align 8, !tbaa !9
  %2733 = getelementptr inbounds i64, ptr %2731, i64 %2732
  store i64 %2730, ptr %2733, align 8, !tbaa !9
  %2734 = load i64, ptr %49, align 8, !tbaa !9
  %2735 = sub nsw i64 0, %2734
  %2736 = load ptr, ptr %17, align 8, !tbaa !5
  %2737 = load i64, ptr %39, align 8, !tbaa !9
  %2738 = add nsw i64 %2737, 1
  %2739 = getelementptr inbounds i64, ptr %2736, i64 %2738
  store i64 %2735, ptr %2739, align 8, !tbaa !9
  br label %2740

2740:                                             ; preds = %2728, %2723
  %2741 = load i64, ptr %55, align 8, !tbaa !9
  %2742 = load i64, ptr %39, align 8, !tbaa !9
  %2743 = add nsw i64 %2742, %2741
  store i64 %2743, ptr %39, align 8, !tbaa !9
  br label %1517

2744:                                             ; preds = %1533
  %2745 = load ptr, ptr %12, align 8, !tbaa !5
  %2746 = load i64, ptr %2745, align 8, !tbaa !9
  store i64 %2746, ptr %25, align 8, !tbaa !9
  %2747 = load ptr, ptr %13, align 8, !tbaa !5
  %2748 = load i64, ptr %2747, align 8, !tbaa !9
  store i64 %2748, ptr %26, align 8, !tbaa !9
  %2749 = load i64, ptr %39, align 8, !tbaa !9
  store i64 %2749, ptr %38, align 8, !tbaa !9
  br label %2750

2750:                                             ; preds = %2918, %2744
  %2751 = load i64, ptr %26, align 8, !tbaa !9
  %2752 = icmp slt i64 %2751, 0
  br i1 %2752, label %2753, label %2758

2753:                                             ; preds = %2750
  %2754 = load i64, ptr %38, align 8, !tbaa !9
  %2755 = load i64, ptr %25, align 8, !tbaa !9
  %2756 = icmp sge i64 %2754, %2755
  %2757 = zext i1 %2756 to i32
  br label %2763

2758:                                             ; preds = %2750
  %2759 = load i64, ptr %38, align 8, !tbaa !9
  %2760 = load i64, ptr %25, align 8, !tbaa !9
  %2761 = icmp sle i64 %2759, %2760
  %2762 = zext i1 %2761 to i32
  br label %2763

2763:                                             ; preds = %2758, %2753
  %2764 = phi i32 [ %2757, %2753 ], [ %2762, %2758 ]
  %2765 = icmp ne i32 %2764, 0
  br i1 %2765, label %2766, label %2922

2766:                                             ; preds = %2763
  %2767 = load ptr, ptr %13, align 8, !tbaa !5
  %2768 = load i64, ptr %2767, align 8, !tbaa !9
  store i64 %2768, ptr %27, align 8, !tbaa !9
  %2769 = load ptr, ptr %12, align 8, !tbaa !5
  %2770 = load i64, ptr %2769, align 8, !tbaa !9
  %2771 = load i64, ptr %38, align 8, !tbaa !9
  %2772 = sub nsw i64 %2770, %2771
  %2773 = add nsw i64 %2772, 1
  store i64 %2773, ptr %28, align 8, !tbaa !9
  %2774 = load i64, ptr %27, align 8, !tbaa !9
  %2775 = load i64, ptr %28, align 8, !tbaa !9
  %2776 = icmp sle i64 %2774, %2775
  br i1 %2776, label %2777, label %2779

2777:                                             ; preds = %2766
  %2778 = load i64, ptr %27, align 8, !tbaa !9
  br label %2781

2779:                                             ; preds = %2766
  %2780 = load i64, ptr %28, align 8, !tbaa !9
  br label %2781

2781:                                             ; preds = %2779, %2777
  %2782 = phi i64 [ %2778, %2777 ], [ %2780, %2779 ]
  store i64 %2782, ptr %45, align 8, !tbaa !9
  %2783 = load i64, ptr %38, align 8, !tbaa !9
  %2784 = load i64, ptr %45, align 8, !tbaa !9
  %2785 = add nsw i64 %2783, %2784
  %2786 = sub nsw i64 %2785, 1
  store i64 %2786, ptr %27, align 8, !tbaa !9
  %2787 = load i64, ptr %38, align 8, !tbaa !9
  store i64 %2787, ptr %46, align 8, !tbaa !9
  br label %2788

2788:                                             ; preds = %2870, %2781
  %2789 = load i64, ptr %46, align 8, !tbaa !9
  %2790 = load i64, ptr %27, align 8, !tbaa !9
  %2791 = icmp sle i64 %2789, %2790
  br i1 %2791, label %2792, label %2873

2792:                                             ; preds = %2788
  %2793 = load i64, ptr %46, align 8, !tbaa !9
  %2794 = load i64, ptr %46, align 8, !tbaa !9
  %2795 = load i64, ptr %21, align 8, !tbaa !9
  %2796 = mul nsw i64 %2794, %2795
  %2797 = add nsw i64 %2793, %2796
  store i64 %2797, ptr %28, align 8, !tbaa !9
  %2798 = load i64, ptr %46, align 8, !tbaa !9
  %2799 = load i64, ptr %46, align 8, !tbaa !9
  %2800 = load i64, ptr %21, align 8, !tbaa !9
  %2801 = mul nsw i64 %2799, %2800
  %2802 = add nsw i64 %2798, %2801
  store i64 %2802, ptr %29, align 8, !tbaa !9
  %2803 = load ptr, ptr %15, align 8, !tbaa !5
  %2804 = load i64, ptr %29, align 8, !tbaa !9
  %2805 = getelementptr inbounds %struct.doublecomplex, ptr %2803, i64 %2804
  %2806 = getelementptr inbounds %struct.doublecomplex, ptr %2805, i32 0, i32 0
  %2807 = load double, ptr %2806, align 8, !tbaa !13
  store double %2807, ptr %30, align 8, !tbaa !11
  %2808 = load double, ptr %30, align 8, !tbaa !11
  %2809 = load ptr, ptr %15, align 8, !tbaa !5
  %2810 = load i64, ptr %28, align 8, !tbaa !9
  %2811 = getelementptr inbounds %struct.doublecomplex, ptr %2809, i64 %2810
  %2812 = getelementptr inbounds %struct.doublecomplex, ptr %2811, i32 0, i32 0
  store double %2808, ptr %2812, align 8, !tbaa !13
  %2813 = load ptr, ptr %15, align 8, !tbaa !5
  %2814 = load i64, ptr %28, align 8, !tbaa !9
  %2815 = getelementptr inbounds %struct.doublecomplex, ptr %2813, i64 %2814
  %2816 = getelementptr inbounds %struct.doublecomplex, ptr %2815, i32 0, i32 1
  store double 0.000000e+00, ptr %2816, align 8, !tbaa !15
  %2817 = load i64, ptr %38, align 8, !tbaa !9
  %2818 = load i64, ptr %45, align 8, !tbaa !9
  %2819 = add nsw i64 %2817, %2818
  %2820 = load i64, ptr %46, align 8, !tbaa !9
  %2821 = sub nsw i64 %2819, %2820
  store i64 %2821, ptr %28, align 8, !tbaa !9
  %2822 = load i64, ptr %39, align 8, !tbaa !9
  %2823 = sub nsw i64 %2822, 1
  store i64 %2823, ptr %29, align 8, !tbaa !9
  %2824 = getelementptr inbounds %struct.doublecomplex, ptr %34, i32 0, i32 0
  store double -1.000000e+00, ptr %2824, align 8, !tbaa !13
  %2825 = getelementptr inbounds %struct.doublecomplex, ptr %34, i32 0, i32 1
  store double -0.000000e+00, ptr %2825, align 8, !tbaa !15
  %2826 = load ptr, ptr %15, align 8, !tbaa !5
  %2827 = load i64, ptr %46, align 8, !tbaa !9
  %2828 = load i64, ptr %21, align 8, !tbaa !9
  %2829 = add nsw i64 %2827, %2828
  %2830 = getelementptr inbounds %struct.doublecomplex, ptr %2826, i64 %2829
  %2831 = load ptr, ptr %16, align 8, !tbaa !5
  %2832 = load ptr, ptr %18, align 8, !tbaa !5
  %2833 = load i64, ptr %46, align 8, !tbaa !9
  %2834 = load i64, ptr %23, align 8, !tbaa !9
  %2835 = add nsw i64 %2833, %2834
  %2836 = getelementptr inbounds %struct.doublecomplex, ptr %2832, i64 %2835
  %2837 = load ptr, ptr %19, align 8, !tbaa !5
  %2838 = load ptr, ptr %15, align 8, !tbaa !5
  %2839 = load i64, ptr %46, align 8, !tbaa !9
  %2840 = load i64, ptr %46, align 8, !tbaa !9
  %2841 = load i64, ptr %21, align 8, !tbaa !9
  %2842 = mul nsw i64 %2840, %2841
  %2843 = add nsw i64 %2839, %2842
  %2844 = getelementptr inbounds %struct.doublecomplex, ptr %2838, i64 %2843
  %2845 = call i32 @f2c_zgemv(ptr noundef @.str.1, ptr noundef %28, ptr noundef %29, ptr noundef %34, ptr noundef %2830, ptr noundef %2831, ptr noundef %2836, ptr noundef %2837, ptr noundef @c_b1, ptr noundef %2844, ptr noundef @c__1)
  %2846 = load i64, ptr %46, align 8, !tbaa !9
  %2847 = load i64, ptr %46, align 8, !tbaa !9
  %2848 = load i64, ptr %21, align 8, !tbaa !9
  %2849 = mul nsw i64 %2847, %2848
  %2850 = add nsw i64 %2846, %2849
  store i64 %2850, ptr %28, align 8, !tbaa !9
  %2851 = load i64, ptr %46, align 8, !tbaa !9
  %2852 = load i64, ptr %46, align 8, !tbaa !9
  %2853 = load i64, ptr %21, align 8, !tbaa !9
  %2854 = mul nsw i64 %2852, %2853
  %2855 = add nsw i64 %2851, %2854
  store i64 %2855, ptr %29, align 8, !tbaa !9
  %2856 = load ptr, ptr %15, align 8, !tbaa !5
  %2857 = load i64, ptr %29, align 8, !tbaa !9
  %2858 = getelementptr inbounds %struct.doublecomplex, ptr %2856, i64 %2857
  %2859 = getelementptr inbounds %struct.doublecomplex, ptr %2858, i32 0, i32 0
  %2860 = load double, ptr %2859, align 8, !tbaa !13
  store double %2860, ptr %30, align 8, !tbaa !11
  %2861 = load double, ptr %30, align 8, !tbaa !11
  %2862 = load ptr, ptr %15, align 8, !tbaa !5
  %2863 = load i64, ptr %28, align 8, !tbaa !9
  %2864 = getelementptr inbounds %struct.doublecomplex, ptr %2862, i64 %2863
  %2865 = getelementptr inbounds %struct.doublecomplex, ptr %2864, i32 0, i32 0
  store double %2861, ptr %2865, align 8, !tbaa !13
  %2866 = load ptr, ptr %15, align 8, !tbaa !5
  %2867 = load i64, ptr %28, align 8, !tbaa !9
  %2868 = getelementptr inbounds %struct.doublecomplex, ptr %2866, i64 %2867
  %2869 = getelementptr inbounds %struct.doublecomplex, ptr %2868, i32 0, i32 1
  store double 0.000000e+00, ptr %2869, align 8, !tbaa !15
  br label %2870

2870:                                             ; preds = %2792
  %2871 = load i64, ptr %46, align 8, !tbaa !9
  %2872 = add nsw i64 %2871, 1
  store i64 %2872, ptr %46, align 8, !tbaa !9
  br label %2788, !llvm.loop !21

2873:                                             ; preds = %2788
  %2874 = load i64, ptr %38, align 8, !tbaa !9
  %2875 = load i64, ptr %45, align 8, !tbaa !9
  %2876 = add nsw i64 %2874, %2875
  %2877 = load ptr, ptr %12, align 8, !tbaa !5
  %2878 = load i64, ptr %2877, align 8, !tbaa !9
  %2879 = icmp sle i64 %2876, %2878
  br i1 %2879, label %2880, label %2917

2880:                                             ; preds = %2873
  %2881 = load ptr, ptr %12, align 8, !tbaa !5
  %2882 = load i64, ptr %2881, align 8, !tbaa !9
  %2883 = load i64, ptr %38, align 8, !tbaa !9
  %2884 = sub nsw i64 %2882, %2883
  %2885 = load i64, ptr %45, align 8, !tbaa !9
  %2886 = sub nsw i64 %2884, %2885
  %2887 = add nsw i64 %2886, 1
  store i64 %2887, ptr %27, align 8, !tbaa !9
  %2888 = load i64, ptr %39, align 8, !tbaa !9
  %2889 = sub nsw i64 %2888, 1
  store i64 %2889, ptr %28, align 8, !tbaa !9
  %2890 = getelementptr inbounds %struct.doublecomplex, ptr %34, i32 0, i32 0
  store double -1.000000e+00, ptr %2890, align 8, !tbaa !13
  %2891 = getelementptr inbounds %struct.doublecomplex, ptr %34, i32 0, i32 1
  store double -0.000000e+00, ptr %2891, align 8, !tbaa !15
  %2892 = load ptr, ptr %15, align 8, !tbaa !5
  %2893 = load i64, ptr %38, align 8, !tbaa !9
  %2894 = load i64, ptr %45, align 8, !tbaa !9
  %2895 = add nsw i64 %2893, %2894
  %2896 = load i64, ptr %21, align 8, !tbaa !9
  %2897 = add nsw i64 %2895, %2896
  %2898 = getelementptr inbounds %struct.doublecomplex, ptr %2892, i64 %2897
  %2899 = load ptr, ptr %16, align 8, !tbaa !5
  %2900 = load ptr, ptr %18, align 8, !tbaa !5
  %2901 = load i64, ptr %38, align 8, !tbaa !9
  %2902 = load i64, ptr %23, align 8, !tbaa !9
  %2903 = add nsw i64 %2901, %2902
  %2904 = getelementptr inbounds %struct.doublecomplex, ptr %2900, i64 %2903
  %2905 = load ptr, ptr %19, align 8, !tbaa !5
  %2906 = load ptr, ptr %15, align 8, !tbaa !5
  %2907 = load i64, ptr %38, align 8, !tbaa !9
  %2908 = load i64, ptr %45, align 8, !tbaa !9
  %2909 = add nsw i64 %2907, %2908
  %2910 = load i64, ptr %38, align 8, !tbaa !9
  %2911 = load i64, ptr %21, align 8, !tbaa !9
  %2912 = mul nsw i64 %2910, %2911
  %2913 = add nsw i64 %2909, %2912
  %2914 = getelementptr inbounds %struct.doublecomplex, ptr %2906, i64 %2913
  %2915 = load ptr, ptr %16, align 8, !tbaa !5
  %2916 = call i32 @f2c_zgemm(ptr noundef @.str.1, ptr noundef @.str.2, ptr noundef %27, ptr noundef %45, ptr noundef %28, ptr noundef %34, ptr noundef %2898, ptr noundef %2899, ptr noundef %2904, ptr noundef %2905, ptr noundef @c_b1, ptr noundef %2914, ptr noundef %2915)
  br label %2917

2917:                                             ; preds = %2880, %2873
  br label %2918

2918:                                             ; preds = %2917
  %2919 = load i64, ptr %26, align 8, !tbaa !9
  %2920 = load i64, ptr %38, align 8, !tbaa !9
  %2921 = add nsw i64 %2920, %2919
  store i64 %2921, ptr %38, align 8, !tbaa !9
  br label %2750, !llvm.loop !22

2922:                                             ; preds = %2763
  %2923 = load i64, ptr %39, align 8, !tbaa !9
  %2924 = sub nsw i64 %2923, 1
  store i64 %2924, ptr %38, align 8, !tbaa !9
  br label %2925

2925:                                             ; preds = %2964, %2922
  %2926 = load i64, ptr %38, align 8, !tbaa !9
  store i64 %2926, ptr %46, align 8, !tbaa !9
  %2927 = load ptr, ptr %17, align 8, !tbaa !5
  %2928 = load i64, ptr %38, align 8, !tbaa !9
  %2929 = getelementptr inbounds i64, ptr %2927, i64 %2928
  %2930 = load i64, ptr %2929, align 8, !tbaa !9
  store i64 %2930, ptr %48, align 8, !tbaa !9
  %2931 = load i64, ptr %48, align 8, !tbaa !9
  %2932 = icmp slt i64 %2931, 0
  br i1 %2932, label %2933, label %2938

2933:                                             ; preds = %2925
  %2934 = load i64, ptr %48, align 8, !tbaa !9
  %2935 = sub nsw i64 0, %2934
  store i64 %2935, ptr %48, align 8, !tbaa !9
  %2936 = load i64, ptr %38, align 8, !tbaa !9
  %2937 = add nsw i64 %2936, -1
  store i64 %2937, ptr %38, align 8, !tbaa !9
  br label %2938

2938:                                             ; preds = %2933, %2925
  %2939 = load i64, ptr %38, align 8, !tbaa !9
  %2940 = add nsw i64 %2939, -1
  store i64 %2940, ptr %38, align 8, !tbaa !9
  %2941 = load i64, ptr %48, align 8, !tbaa !9
  %2942 = load i64, ptr %46, align 8, !tbaa !9
  %2943 = icmp ne i64 %2941, %2942
  br i1 %2943, label %2944, label %2961

2944:                                             ; preds = %2938
  %2945 = load i64, ptr %38, align 8, !tbaa !9
  %2946 = icmp sge i64 %2945, 1
  br i1 %2946, label %2947, label %2961

2947:                                             ; preds = %2944
  %2948 = load ptr, ptr %15, align 8, !tbaa !5
  %2949 = load i64, ptr %48, align 8, !tbaa !9
  %2950 = load i64, ptr %21, align 8, !tbaa !9
  %2951 = add nsw i64 %2949, %2950
  %2952 = getelementptr inbounds %struct.doublecomplex, ptr %2948, i64 %2951
  %2953 = load ptr, ptr %16, align 8, !tbaa !5
  %2954 = load ptr, ptr %15, align 8, !tbaa !5
  %2955 = load i64, ptr %46, align 8, !tbaa !9
  %2956 = load i64, ptr %21, align 8, !tbaa !9
  %2957 = add nsw i64 %2955, %2956
  %2958 = getelementptr inbounds %struct.doublecomplex, ptr %2954, i64 %2957
  %2959 = load ptr, ptr %16, align 8, !tbaa !5
  %2960 = call i32 @f2c_zswap(ptr noundef %38, ptr noundef %2952, ptr noundef %2953, ptr noundef %2958, ptr noundef %2959)
  br label %2961

2961:                                             ; preds = %2947, %2944, %2938
  %2962 = load i64, ptr %38, align 8, !tbaa !9
  %2963 = icmp sge i64 %2962, 1
  br i1 %2963, label %2964, label %2965

2964:                                             ; preds = %2961
  br label %2925

2965:                                             ; preds = %2961
  %2966 = load i64, ptr %39, align 8, !tbaa !9
  %2967 = sub nsw i64 %2966, 1
  %2968 = load ptr, ptr %14, align 8, !tbaa !5
  store i64 %2967, ptr %2968, align 8, !tbaa !9
  br label %2969

2969:                                             ; preds = %2965, %1510
  call void @llvm.lifetime.end.p0(i64 8, ptr %58) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %57) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %56) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %55) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %54) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %53) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %52) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %51) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %50) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %49) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %48) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %47) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %46) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %45) #5
  call void @llvm.lifetime.end.p0(i64 16, ptr %44) #5
  call void @llvm.lifetime.end.p0(i64 16, ptr %43) #5
  call void @llvm.lifetime.end.p0(i64 16, ptr %42) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %41) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %40) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %39) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %38) #5
  call void @llvm.lifetime.end.p0(i64 16, ptr %37) #5
  call void @llvm.lifetime.end.p0(i64 16, ptr %36) #5
  call void @llvm.lifetime.end.p0(i64 16, ptr %35) #5
  call void @llvm.lifetime.end.p0(i64 16, ptr %34) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %33) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %32) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %31) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %30) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %29) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %28) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %27) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %26) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %25) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %24) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %23) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %22) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %21) #5
  ret i32 0
}

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

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

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

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

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

declare i64 @f2c_izamax(ptr noundef, ptr noundef, ptr noundef) #3

declare double @d_imag(ptr noundef) #3

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

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

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

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

declare void @z_div(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) #4

declare i32 @f2c_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 = { 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 = !{!"any pointer", !7, i64 0}
!7 = !{!"omnipotent char", !8, i64 0}
!8 = !{!"Simple C/C++ TBAA"}
!9 = !{!10, !10, i64 0}
!10 = !{!"long", !7, i64 0}
!11 = !{!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}


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

%struct.doublecomplex = type { double, double }

@.str = external hidden unnamed_addr constant [2 x i8], align 1
@c__1 = external hidden global i64, align 8
@.str.1 = external hidden unnamed_addr constant [13 x i8], align 1
@c_b1 = external hidden global %struct.doublecomplex, align 8
@.str.2 = external hidden unnamed_addr constant [10 x i8], align 1

; Function Attrs: nounwind uwtable
define dso_local noundef i32 @zlahef_(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 i64, align 8
  %12 = alloca i64, align 8
  %13 = alloca i64, align 8
  %14 = alloca i64, align 8
  %15 = alloca i64, align 8
  %16 = alloca %struct.doublecomplex, align 16
  %17 = alloca %struct.doublecomplex, align 16
  %18 = alloca i64, align 8
  %19 = alloca i64, align 8
  %20 = alloca double, align 8
  %21 = alloca %struct.doublecomplex, align 16
  %22 = alloca i64, align 8
  %23 = alloca i64, align 8
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %11) #4
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %12) #4
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %13) #4
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %14) #4
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %15) #4
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %16) #4
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %17) #4
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %18) #4
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %19) #4
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %20) #4
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %21) #4
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %22) #4
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %23) #4
  %24 = load i64, ptr %5, align 8, !tbaa !5
  %25 = xor i64 %24, -1
  %26 = getelementptr inbounds %struct.doublecomplex, ptr %4, i64 %25
  %27 = getelementptr inbounds i8, ptr %6, i64 -8
  %28 = load i64, ptr %8, align 8, !tbaa !5
  %29 = xor i64 %28, -1
  %30 = getelementptr inbounds %struct.doublecomplex, ptr %7, i64 %29
  store i64 0, ptr %9, align 8, !tbaa !5
  %31 = tail call i64 @lsame_(ptr noundef %0, ptr noundef nonnull @.str) #4
  %.not = icmp eq i64 %31, 0
  %invariant.gep979 = getelementptr i8, ptr %30, i64 16
  br i1 %.not, label %.preheader, label %40

.preheader:                                       ; preds = %10
  %invariant.gep975 = getelementptr i8, ptr %4, i64 -16
  %invariant.gep977 = getelementptr i8, ptr %7, i64 -16
  %invariant.gep983 = getelementptr i8, ptr %26, i64 16
  %invariant.gep993 = getelementptr i8, ptr %30, i64 32
  %32 = add i64 %28, 1
  %33 = add i64 %24, 1
  %34 = getelementptr inbounds i8, ptr %16, i64 8
  %35 = getelementptr inbounds i8, ptr %21, i64 8
  %36 = getelementptr inbounds i8, ptr %17, i64 8
  store i64 1, ptr %19, align 8, !tbaa !5
  %37 = load i64, ptr %2, align 8, !tbaa !5
  %.not8801066 = icmp slt i64 %37, 2
  %.pre10301067 = load i64, ptr %1, align 8, !tbaa !5
  %38 = icmp slt i64 %37, %.pre10301067
  %or.cond10521068 = select i1 %.not8801066, i1 %38, i1 false
  %39 = icmp slt i64 %.pre10301067, 1
  %or.cond10531069 = select i1 %or.cond10521068, i1 true, i1 %39
  br i1 %or.cond10531069, label %._crit_edge1074, label %.lr.ph1073

40:                                               ; preds = %10
  %41 = load i64, ptr %1, align 8, !tbaa !5
  %invariant.gep = getelementptr i8, ptr %26, i64 16
  %invariant.gep947 = getelementptr i8, ptr %30, i64 -16
  %42 = add i64 %24, 1
  %43 = getelementptr inbounds i8, ptr %16, i64 8
  %44 = getelementptr inbounds i8, ptr %21, i64 8
  %45 = getelementptr inbounds i8, ptr %17, i64 8
  br label %46

46:                                               ; preds = %383, %40
  %47 = phi i64 [ %41, %40 ], [ %.pre, %383 ]
  %storemerge889 = phi i64 [ %41, %40 ], [ %385, %383 ]
  %.0831 = phi i64 [ undef, %40 ], [ %.1832, %383 ]
  %.fr894 = freeze i64 %storemerge889
  store i64 %.fr894, ptr %19, align 8, !tbaa !5
  %48 = load i64, ptr %2, align 8, !tbaa !5
  %49 = add nsw i64 %48, %.fr894
  %50 = sub i64 %49, %47
  %reass.sub = sub i64 %47, %48
  %51 = add i64 %reass.sub, 1
  %.not890 = icmp sgt i64 %.fr894, %51
  br i1 %.not890, label %55, label %52

52:                                               ; preds = %46
  %53 = icmp slt i64 %48, %47
  %54 = icmp slt i64 %.fr894, 1
  %or.cond = or i1 %54, %53
  br i1 %or.cond, label %386, label %56

55:                                               ; preds = %46
  %.old1 = icmp slt i64 %.fr894, 1
  br i1 %.old1, label %386, label %56

56:                                               ; preds = %52, %55
  %57 = add nsw i64 %.fr894, -1
  store i64 %57, ptr %11, align 8, !tbaa !5
  %58 = mul nsw i64 %.fr894, %24
  %gep = getelementptr %struct.doublecomplex, ptr %invariant.gep, i64 %58
  %59 = mul nsw i64 %50, %28
  %gep934 = getelementptr %struct.doublecomplex, ptr %invariant.gep979, i64 %59
  %60 = call i32 @f2c_zcopy(ptr noundef nonnull %11, ptr noundef %gep, ptr noundef nonnull @c__1, ptr noundef %gep934, ptr noundef nonnull @c__1) #4
  %61 = load i64, ptr %19, align 8, !tbaa !5
  %62 = add nsw i64 %61, %59
  %63 = mul i64 %61, %42
  store i64 %63, ptr %12, align 8, !tbaa !5
  %64 = getelementptr inbounds %struct.doublecomplex, ptr %26, i64 %63
  %65 = load double, ptr %64, align 8, !tbaa !9
  %66 = getelementptr inbounds %struct.doublecomplex, ptr %30, i64 %62
  store double %65, ptr %66, align 8, !tbaa !9
  %67 = getelementptr inbounds %struct.doublecomplex, ptr %30, i64 %62, i32 1
  store double 0.000000e+00, ptr %67, align 8, !tbaa !12
  %68 = load i64, ptr %1, align 8, !tbaa !5
  %69 = icmp slt i64 %61, %68
  br i1 %69, label %70, label %82

70:                                               ; preds = %56
  %71 = sub nsw i64 %68, %61
  store i64 %71, ptr %11, align 8, !tbaa !5
  store <2 x double> <double -1.000000e+00, double -0.000000e+00>, ptr %16, align 16, !tbaa !13
  %72 = add nsw i64 %61, 1
  %73 = mul nsw i64 %72, %24
  %gep936 = getelementptr %struct.doublecomplex, ptr %invariant.gep, i64 %73
  %74 = add nsw i64 %50, 1
  %75 = mul nsw i64 %74, %28
  %76 = getelementptr %struct.doublecomplex, ptr %30, i64 %61
  %77 = getelementptr %struct.doublecomplex, ptr %76, i64 %75
  %78 = call i32 @f2c_zgemv(ptr noundef nonnull @.str.1, ptr noundef nonnull %19, ptr noundef nonnull %11, ptr noundef nonnull %16, ptr noundef %gep936, ptr noundef nonnull %5, ptr noundef %77, ptr noundef nonnull %8, ptr noundef nonnull @c_b1, ptr noundef %gep934, ptr noundef nonnull @c__1) #4
  %79 = load i64, ptr %19, align 8, !tbaa !5
  %80 = add nsw i64 %79, %59
  store i64 %80, ptr %12, align 8, !tbaa !5
  %81 = getelementptr inbounds %struct.doublecomplex, ptr %30, i64 %80, i32 1
  store double 0.000000e+00, ptr %81, align 8, !tbaa !12
  %.phi.trans.insert = getelementptr inbounds %struct.doublecomplex, ptr %30, i64 %80
  %.pre1041 = load double, ptr %.phi.trans.insert, align 8, !tbaa !9
  br label %82

82:                                               ; preds = %70, %56
  %83 = phi double [ %.pre1041, %70 ], [ %65, %56 ]
  %.pre-phi = phi i64 [ %80, %70 ], [ %62, %56 ]
  %84 = phi i64 [ %79, %70 ], [ %61, %56 ]
  store i64 %.pre-phi, ptr %11, align 8, !tbaa !5
  %85 = fcmp oge double %83, 0.000000e+00
  %86 = fneg double %83
  %87 = select i1 %85, double %83, double %86
  %88 = icmp sgt i64 %84, 1
  br i1 %88, label %89, label %103

89:                                               ; preds = %82
  %90 = add nsw i64 %84, -1
  store i64 %90, ptr %11, align 8, !tbaa !5
  %91 = call i64 @f2c_izamax(ptr noundef nonnull %11, ptr noundef %gep934, ptr noundef nonnull @c__1) #4
  %92 = add nsw i64 %91, %59
  store i64 %92, ptr %11, align 8, !tbaa !5
  %93 = getelementptr inbounds %struct.doublecomplex, ptr %30, i64 %92
  %94 = load double, ptr %93, align 8, !tbaa !9
  %95 = call double @d_imag(ptr noundef nonnull %93) #4
  %96 = insertelement <2 x double> poison, double %94, i64 0
  %97 = insertelement <2 x double> %96, double %95, i64 1
  %98 = fcmp oge <2 x double> %97, zeroinitializer
  %99 = fneg <2 x double> %97
  %100 = select <2 x i1> %98, <2 x double> %97, <2 x double> %99
  %shift = shufflevector <2 x double> %100, <2 x double> poison, <2 x i32> <i32 1, i32 poison>
  %101 = fadd <2 x double> %100, %shift
  %102 = extractelement <2 x double> %101, i64 0
  br label %103

103:                                              ; preds = %82, %89
  %.1832 = phi i64 [ %91, %89 ], [ %.0831, %82 ]
  %.0827 = phi double [ %102, %89 ], [ 0.000000e+00, %82 ]
  %104 = fcmp oge double %87, %.0827
  %105 = select i1 %104, double %87, double %.0827
  %106 = fcmp oeq double %105, 0.000000e+00
  br i1 %106, label %107, label %114

107:                                              ; preds = %103
  %108 = load i64, ptr %9, align 8, !tbaa !5
  %109 = icmp eq i64 %108, 0
  %.pre1024 = load i64, ptr %19, align 8, !tbaa !5
  br i1 %109, label %110, label %111

110:                                              ; preds = %107
  store i64 %.pre1024, ptr %9, align 8, !tbaa !5
  br label %111

111:                                              ; preds = %110, %107
  %112 = mul i64 %.pre1024, %42
  store i64 %112, ptr %11, align 8, !tbaa !5
  store i64 %112, ptr %12, align 8, !tbaa !5
  %113 = getelementptr inbounds %struct.doublecomplex, ptr %26, i64 %112, i32 1
  store double 0.000000e+00, ptr %113, align 8, !tbaa !12
  br label %354

114:                                              ; preds = %103
  %115 = fmul double %.0827, 0x3FE47E0F66AFED07
  %116 = fcmp ult double %87, %115
  br i1 %116, label %119, label %117

117:                                              ; preds = %114
  %118 = load i64, ptr %19, align 8, !tbaa !5
  br label %201

119:                                              ; preds = %114
  %120 = add nsw i64 %.1832, -1
  store i64 %120, ptr %11, align 8, !tbaa !5
  %121 = mul nsw i64 %.1832, %24
  %gep938 = getelementptr %struct.doublecomplex, ptr %invariant.gep, i64 %121
  %122 = add nsw i64 %50, -1
  %123 = mul nsw i64 %122, %28
  %gep940 = getelementptr %struct.doublecomplex, ptr %invariant.gep979, i64 %123
  %124 = call i32 @f2c_zcopy(ptr noundef nonnull %11, ptr noundef %gep938, ptr noundef nonnull @c__1, ptr noundef %gep940, ptr noundef nonnull @c__1) #4
  %125 = add i64 %.1832, %123
  %126 = add nsw i64 %121, %.1832
  store i64 %126, ptr %12, align 8, !tbaa !5
  %127 = getelementptr inbounds %struct.doublecomplex, ptr %26, i64 %126
  %128 = load double, ptr %127, align 8, !tbaa !9
  %129 = getelementptr inbounds %struct.doublecomplex, ptr %30, i64 %125
  store double %128, ptr %129, align 8, !tbaa !9
  %130 = getelementptr inbounds %struct.doublecomplex, ptr %30, i64 %125, i32 1
  store double 0.000000e+00, ptr %130, align 8, !tbaa !12
  %131 = load i64, ptr %19, align 8, !tbaa !5
  %132 = sub nsw i64 %131, %.1832
  store i64 %132, ptr %11, align 8, !tbaa !5
  %133 = add nsw i64 %.1832, 1
  %134 = mul nsw i64 %133, %24
  %135 = getelementptr %struct.doublecomplex, ptr %26, i64 %.1832
  %136 = getelementptr %struct.doublecomplex, ptr %135, i64 %134
  %137 = getelementptr %struct.doublecomplex, ptr %30, i64 %133
  %138 = getelementptr %struct.doublecomplex, ptr %137, i64 %123
  %139 = call i32 @f2c_zcopy(ptr noundef nonnull %11, ptr noundef %136, ptr noundef nonnull %5, ptr noundef %138, ptr noundef nonnull @c__1) #4
  %140 = load i64, ptr %19, align 8, !tbaa !5
  %141 = sub nsw i64 %140, %.1832
  store i64 %141, ptr %11, align 8, !tbaa !5
  %142 = call i32 @zlacgv_(ptr noundef nonnull %11, ptr noundef %138, ptr noundef nonnull @c__1) #4
  %143 = load i64, ptr %19, align 8, !tbaa !5
  %144 = load i64, ptr %1, align 8, !tbaa !5
  %145 = icmp slt i64 %143, %144
  br i1 %145, label %146, label %155

146:                                              ; preds = %119
  %147 = sub nsw i64 %144, %143
  store i64 %147, ptr %11, align 8, !tbaa !5
  store <2 x double> <double -1.000000e+00, double -0.000000e+00>, ptr %16, align 16, !tbaa !13
  %148 = add nsw i64 %143, 1
  %149 = mul nsw i64 %148, %24
  %gep942 = getelementptr %struct.doublecomplex, ptr %invariant.gep, i64 %149
  %150 = add nsw i64 %50, 1
  %151 = mul nsw i64 %150, %28
  %152 = getelementptr %struct.doublecomplex, ptr %30, i64 %.1832
  %153 = getelementptr %struct.doublecomplex, ptr %152, i64 %151
  %154 = call i32 @f2c_zgemv(ptr noundef nonnull @.str.1, ptr noundef nonnull %19, ptr noundef nonnull %11, ptr noundef nonnull %16, ptr noundef %gep942, ptr noundef nonnull %5, ptr noundef %153, ptr noundef nonnull %8, ptr noundef nonnull @c_b1, ptr noundef %gep940, ptr noundef nonnull @c__1) #4
  store i64 %125, ptr %12, align 8, !tbaa !5
  store double 0.000000e+00, ptr %130, align 8, !tbaa !12
  %.pre1020 = load i64, ptr %19, align 8, !tbaa !5
  br label %155

155:                                              ; preds = %146, %119
  %156 = phi i64 [ %.pre1020, %146 ], [ %143, %119 ]
  %157 = sub nsw i64 %156, %.1832
  store i64 %157, ptr %11, align 8, !tbaa !5
  %158 = call i64 @f2c_izamax(ptr noundef nonnull %11, ptr noundef %138, ptr noundef nonnull @c__1) #4
  %159 = add i64 %125, %158
  store i64 %159, ptr %11, align 8, !tbaa !5
  %160 = getelementptr inbounds %struct.doublecomplex, ptr %30, i64 %159
  %161 = load double, ptr %160, align 8, !tbaa !9
  %162 = call double @d_imag(ptr noundef nonnull %160) #4
  %163 = insertelement <2 x double> poison, double %161, i64 0
  %164 = insertelement <2 x double> %163, double %162, i64 1
  %165 = fcmp oge <2 x double> %164, zeroinitializer
  %166 = fneg <2 x double> %164
  %167 = select <2 x i1> %165, <2 x double> %164, <2 x double> %166
  %shift1077 = shufflevector <2 x double> %167, <2 x double> poison, <2 x i32> <i32 1, i32 poison>
  %168 = fadd <2 x double> %167, %shift1077
  %169 = extractelement <2 x double> %168, i64 0
  %170 = icmp sgt i64 %.1832, 1
  br i1 %170, label %171, label %186

171:                                              ; preds = %155
  store i64 %120, ptr %11, align 8, !tbaa !5
  %172 = call i64 @f2c_izamax(ptr noundef nonnull %11, ptr noundef %gep940, ptr noundef nonnull @c__1) #4
  %173 = add nsw i64 %172, %123
  store i64 %173, ptr %11, align 8, !tbaa !5
  %174 = getelementptr inbounds %struct.doublecomplex, ptr %30, i64 %173
  %175 = load double, ptr %174, align 8, !tbaa !9
  %176 = call double @d_imag(ptr noundef nonnull %174) #4
  %177 = insertelement <2 x double> poison, double %175, i64 0
  %178 = insertelement <2 x double> %177, double %176, i64 1
  %179 = fcmp oge <2 x double> %178, zeroinitializer
  %180 = fneg <2 x double> %178
  %181 = select <2 x i1> %179, <2 x double> %178, <2 x double> %180
  %shift1078 = shufflevector <2 x double> %181, <2 x double> poison, <2 x i32> <i32 1, i32 poison>
  %182 = fadd <2 x double> %181, %shift1078
  %183 = extractelement <2 x double> %182, i64 0
  %184 = fcmp oge double %169, %183
  %185 = select i1 %184, double %169, double %183
  br label %186

186:                                              ; preds = %171, %155
  %.0 = phi double [ %185, %171 ], [ %169, %155 ]
  %187 = fdiv double %.0827, %.0
  %188 = fmul double %115, %187
  %189 = fcmp ult double %87, %188
  br i1 %189, label %192, label %190

190:                                              ; preds = %186
  %191 = load i64, ptr %19, align 8, !tbaa !5
  br label %201

192:                                              ; preds = %186
  store i64 %125, ptr %11, align 8, !tbaa !5
  %193 = load double, ptr %129, align 8, !tbaa !9
  %194 = fcmp oge double %193, 0.000000e+00
  %195 = fneg double %193
  %196 = select i1 %194, double %193, double %195
  %197 = fmul double %.0, 0x3FE47E0F66AFED07
  %198 = fcmp ult double %196, %197
  br i1 %198, label %201, label %199

199:                                              ; preds = %192
  %200 = call i32 @f2c_zcopy(ptr noundef nonnull %19, ptr noundef %gep940, ptr noundef nonnull @c__1, ptr noundef %gep934, ptr noundef nonnull @c__1) #4
  br label %201

201:                                              ; preds = %192, %190, %199, %117
  %.0835 = phi i64 [ %118, %117 ], [ %191, %190 ], [ %.1832, %199 ], [ %.1832, %192 ]
  %202 = phi i1 [ true, %117 ], [ true, %190 ], [ true, %199 ], [ false, %192 ]
  %.0829.neg = phi i64 [ -1, %117 ], [ -1, %190 ], [ -1, %199 ], [ -2, %192 ]
  %203 = load i64, ptr %19, align 8, !tbaa !5
  %204 = add i64 %203, %.0829.neg
  %205 = add nsw i64 %204, 1
  store i64 %205, ptr %23, align 8, !tbaa !5
  %206 = load i64, ptr %2, align 8, !tbaa !5
  %207 = add nsw i64 %206, %205
  %208 = load i64, ptr %1, align 8, !tbaa !5
  %209 = sub i64 %207, %208
  %.not891 = icmp eq i64 %.0835, %205
  br i1 %.not891, label %257, label %210

210:                                              ; preds = %201
  %211 = mul nsw i64 %.0835, %24
  %212 = add nsw i64 %211, %.0835
  %213 = mul i64 %205, %42
  store i64 %213, ptr %12, align 8, !tbaa !5
  %214 = getelementptr inbounds %struct.doublecomplex, ptr %26, i64 %213
  %215 = load double, ptr %214, align 8, !tbaa !9
  %216 = getelementptr inbounds %struct.doublecomplex, ptr %26, i64 %212
  store double %215, ptr %216, align 8, !tbaa !9
  %217 = getelementptr inbounds %struct.doublecomplex, ptr %26, i64 %212, i32 1
  store double 0.000000e+00, ptr %217, align 8, !tbaa !12
  %218 = xor i64 %.0835, -1
  %219 = sub i64 %204, %.0835
  store i64 %219, ptr %11, align 8, !tbaa !5
  %220 = add nsw i64 %.0835, 1
  %221 = mul nsw i64 %205, %24
  %222 = getelementptr %struct.doublecomplex, ptr %26, i64 %220
  %223 = getelementptr %struct.doublecomplex, ptr %222, i64 %221
  %224 = mul nsw i64 %220, %24
  %225 = getelementptr %struct.doublecomplex, ptr %26, i64 %.0835
  %226 = getelementptr %struct.doublecomplex, ptr %225, i64 %224
  %227 = call i32 @f2c_zcopy(ptr noundef nonnull %11, ptr noundef %223, ptr noundef nonnull @c__1, ptr noundef %226, ptr noundef nonnull %5) #4
  %228 = load i64, ptr %23, align 8, !tbaa !5
  %229 = add i64 %228, %218
  store i64 %229, ptr %11, align 8, !tbaa !5
  %230 = call i32 @zlacgv_(ptr noundef nonnull %11, ptr noundef %226, ptr noundef nonnull %5) #4
  %231 = add nsw i64 %.0835, -1
  store i64 %231, ptr %11, align 8, !tbaa !5
  %232 = load i64, ptr %23, align 8, !tbaa !5
  %233 = mul nsw i64 %232, %24
  %gep944 = getelementptr %struct.doublecomplex, ptr %invariant.gep, i64 %233
  %gep946 = getelementptr %struct.doublecomplex, ptr %invariant.gep, i64 %211
  %234 = call i32 @f2c_zcopy(ptr noundef nonnull %11, ptr noundef %gep944, ptr noundef nonnull @c__1, ptr noundef %gep946, ptr noundef nonnull @c__1) #4
  %235 = load i64, ptr %23, align 8, !tbaa !5
  %236 = load i64, ptr %1, align 8, !tbaa !5
  %237 = icmp slt i64 %235, %236
  br i1 %237, label %238, label %246

238:                                              ; preds = %210
  %239 = sub nsw i64 %236, %235
  store i64 %239, ptr %11, align 8, !tbaa !5
  %240 = add nsw i64 %235, 1
  %241 = mul nsw i64 %240, %24
  %242 = getelementptr %struct.doublecomplex, ptr %26, i64 %235
  %243 = getelementptr %struct.doublecomplex, ptr %242, i64 %241
  %244 = getelementptr %struct.doublecomplex, ptr %225, i64 %241
  %245 = call i32 @f2c_zswap(ptr noundef nonnull %11, ptr noundef %243, ptr noundef nonnull %5, ptr noundef %244, ptr noundef nonnull %5) #4
  %.pre1021 = load i64, ptr %1, align 8, !tbaa !5
  %.pre1022 = load i64, ptr %23, align 8, !tbaa !5
  br label %246

246:                                              ; preds = %238, %210
  %247 = phi i64 [ %.pre1022, %238 ], [ %235, %210 ]
  %248 = phi i64 [ %.pre1021, %238 ], [ %236, %210 ]
  %249 = add i64 %248, 1
  %250 = sub i64 %249, %247
  store i64 %250, ptr %11, align 8, !tbaa !5
  %251 = mul nsw i64 %209, %28
  %252 = getelementptr %struct.doublecomplex, ptr %30, i64 %247
  %253 = getelementptr %struct.doublecomplex, ptr %252, i64 %251
  %254 = getelementptr %struct.doublecomplex, ptr %30, i64 %.0835
  %255 = getelementptr %struct.doublecomplex, ptr %254, i64 %251
  %256 = call i32 @f2c_zswap(ptr noundef nonnull %11, ptr noundef %253, ptr noundef nonnull %8, ptr noundef %255, ptr noundef nonnull %8) #4
  br label %257

257:                                              ; preds = %246, %201
  %258 = load i64, ptr %19, align 8, !tbaa !5
  br i1 %202, label %259, label %273

259:                                              ; preds = %257
  %260 = mul nsw i64 %258, %24
  %gep952 = getelementptr %struct.doublecomplex, ptr %invariant.gep, i64 %260
  %261 = call i32 @f2c_zcopy(ptr noundef nonnull %19, ptr noundef %gep934, ptr noundef nonnull @c__1, ptr noundef %gep952, ptr noundef nonnull @c__1) #4
  %262 = load i64, ptr %19, align 8, !tbaa !5
  %263 = mul i64 %262, %42
  %264 = getelementptr inbounds %struct.doublecomplex, ptr %26, i64 %263
  %265 = load double, ptr %264, align 8, !tbaa !9
  %266 = fdiv double 1.000000e+00, %265
  store double %266, ptr %20, align 8, !tbaa !13
  %267 = add nsw i64 %262, -1
  store i64 %267, ptr %11, align 8, !tbaa !5
  %268 = mul nsw i64 %262, %24
  %gep954 = getelementptr %struct.doublecomplex, ptr %invariant.gep, i64 %268
  %269 = call i32 @f2c_zdscal(ptr noundef nonnull %11, ptr noundef nonnull %20, ptr noundef %gep954, ptr noundef nonnull @c__1) #4
  %270 = load i64, ptr %19, align 8, !tbaa !5
  %271 = add nsw i64 %270, -1
  store i64 %271, ptr %11, align 8, !tbaa !5
  %272 = call i32 @zlacgv_(ptr noundef nonnull %11, ptr noundef %gep934, ptr noundef nonnull @c__1) #4
  %.pre1025 = load i64, ptr %19, align 8, !tbaa !5
  br label %354

273:                                              ; preds = %257
  %274 = icmp sgt i64 %258, 2
  br i1 %274, label %275, label %..loopexit926_crit_edge

..loopexit926_crit_edge:                          ; preds = %273
  %.pre1048 = add nsw i64 %50, -1
  %.pre1050 = mul nsw i64 %.pre1048, %28
  br label %.loopexit926

275:                                              ; preds = %273
  %276 = add i64 %59, -1
  %277 = add i64 %276, %258
  store i64 %277, ptr %11, align 8, !tbaa !5
  %278 = getelementptr inbounds %struct.doublecomplex, ptr %30, i64 %277
  %279 = load <2 x double>, ptr %278, align 8, !tbaa !13
  store <2 x double> %279, ptr %21, align 16, !tbaa !13
  call void @d_cnjg(ptr noundef nonnull %17, ptr noundef nonnull %21) #4
  %280 = load i64, ptr %19, align 8, !tbaa !5
  %281 = getelementptr %struct.doublecomplex, ptr %30, i64 %280
  %282 = getelementptr %struct.doublecomplex, ptr %281, i64 %59
  call void @z_div(ptr noundef nonnull %16, ptr noundef %282, ptr noundef nonnull %17) #4
  %283 = load <2 x double>, ptr %16, align 16
  %284 = load double, ptr %43, align 8, !tbaa !12
  %285 = load i64, ptr %19, align 8, !tbaa !5
  %286 = add nsw i64 %50, -1
  %287 = mul nsw i64 %286, %28
  %gep948 = getelementptr %struct.doublecomplex, ptr %invariant.gep947, i64 %285
  %288 = getelementptr %struct.doublecomplex, ptr %gep948, i64 %287
  call void @z_div(ptr noundef nonnull %16, ptr noundef %288, ptr noundef nonnull %21) #4
  %289 = fneg double %284
  %290 = load <2 x double>, ptr %16, align 16, !tbaa !13
  %291 = insertelement <2 x double> poison, double %284, i64 0
  %292 = insertelement <2 x double> %291, double %289, i64 1
  %293 = fmul <2 x double> %290, %292
  %294 = shufflevector <2 x double> %293, <2 x double> poison, <2 x i32> <i32 1, i32 0>
  %295 = shufflevector <2 x double> %283, <2 x double> poison, <2 x i32> zeroinitializer
  %296 = call <2 x double> @llvm.fmuladd.v2f64(<2 x double> %295, <2 x double> %290, <2 x double> %294)
  store <2 x double> %296, ptr %16, align 16, !tbaa !13
  %297 = extractelement <2 x double> %296, i64 0
  %298 = fadd double %297, -1.000000e+00
  %299 = fdiv double 1.000000e+00, %298
  store double %299, ptr %17, align 16, !tbaa !9
  store double 0.000000e+00, ptr %45, align 8, !tbaa !12
  call void @z_div(ptr noundef nonnull %16, ptr noundef nonnull %17, ptr noundef nonnull %21) #4
  %300 = load <2 x double>, ptr %16, align 16, !tbaa !13
  store <2 x double> %300, ptr %21, align 16, !tbaa !13
  %301 = load i64, ptr %19, align 8, !tbaa !5
  %302 = add nsw i64 %301, -2
  store i64 %302, ptr %11, align 8, !tbaa !5
  store i64 1, ptr %18, align 8, !tbaa !5
  %.not893931 = icmp slt i64 %301, 3
  br i1 %.not893931, label %.loopexit926, label %.lr.ph

.lr.ph:                                           ; preds = %275
  %303 = shufflevector <2 x double> %290, <2 x double> poison, <2 x i32> zeroinitializer
  %304 = shufflevector <2 x double> %290, <2 x double> poison, <2 x i32> <i32 1, i32 poison>
  %305 = fneg <2 x double> %290
  %306 = shufflevector <2 x double> %304, <2 x double> %305, <2 x i32> <i32 0, i32 3>
  br label %307

307:                                              ; preds = %.lr.ph, %307
  %308 = phi i64 [ 1, %.lr.ph ], [ %352, %307 ]
  %309 = load i64, ptr %19, align 8, !tbaa !5
  %310 = add nsw i64 %309, -1
  %311 = mul nsw i64 %310, %24
  %312 = add nsw i64 %308, %287
  store i64 %312, ptr %13, align 8, !tbaa !5
  %313 = getelementptr inbounds %struct.doublecomplex, ptr %30, i64 %312
  %314 = add nsw i64 %308, %59
  store i64 %314, ptr %14, align 8, !tbaa !5
  %315 = getelementptr inbounds %struct.doublecomplex, ptr %30, i64 %314
  %316 = load <2 x double>, ptr %313, align 8, !tbaa !13
  %317 = fmul <2 x double> %316, %292
  %318 = shufflevector <2 x double> %317, <2 x double> poison, <2 x i32> <i32 1, i32 0>
  %319 = call <2 x double> @llvm.fmuladd.v2f64(<2 x double> %295, <2 x double> %316, <2 x double> %318)
  %320 = load <2 x double>, ptr %315, align 8, !tbaa !13
  %321 = fsub <2 x double> %319, %320
  store <2 x double> %321, ptr %17, align 16, !tbaa !13
  %322 = load <2 x double>, ptr %21, align 16
  %323 = load double, ptr %44, align 8, !tbaa !12
  %324 = fneg double %323
  %325 = insertelement <2 x double> poison, double %323, i64 0
  %326 = insertelement <2 x double> %325, double %324, i64 1
  %327 = fmul <2 x double> %321, %326
  %328 = shufflevector <2 x double> %327, <2 x double> poison, <2 x i32> <i32 1, i32 0>
  %329 = shufflevector <2 x double> %322, <2 x double> poison, <2 x i32> zeroinitializer
  %330 = call <2 x double> @llvm.fmuladd.v2f64(<2 x double> %329, <2 x double> %321, <2 x double> %328)
  store <2 x double> %330, ptr %16, align 16, !tbaa !13
  %331 = getelementptr %struct.doublecomplex, ptr %26, i64 %311
  %332 = getelementptr %struct.doublecomplex, ptr %331, i64 %308
  store <2 x double> %330, ptr %332, align 8, !tbaa !13
  %333 = mul nsw i64 %309, %24
  %334 = add nsw i64 %333, %308
  store i64 %334, ptr %12, align 8, !tbaa !5
  call void @d_cnjg(ptr noundef nonnull %17, ptr noundef nonnull %21) #4
  store i64 %314, ptr %13, align 8, !tbaa !5
  store i64 %312, ptr %14, align 8, !tbaa !5
  %335 = load <2 x double>, ptr %17, align 16
  %336 = load double, ptr %45, align 8, !tbaa !12
  %337 = fneg double %336
  %338 = load <2 x double>, ptr %315, align 8, !tbaa !13
  %339 = fmul <2 x double> %338, %306
  %340 = shufflevector <2 x double> %339, <2 x double> poison, <2 x i32> <i32 1, i32 0>
  %341 = call <2 x double> @llvm.fmuladd.v2f64(<2 x double> %303, <2 x double> %338, <2 x double> %340)
  %342 = load <2 x double>, ptr %313, align 8, !tbaa !13
  %343 = fsub <2 x double> %341, %342
  %344 = insertelement <2 x double> poison, double %336, i64 0
  %345 = insertelement <2 x double> %344, double %337, i64 1
  %346 = fmul <2 x double> %343, %345
  %347 = shufflevector <2 x double> %346, <2 x double> poison, <2 x i32> <i32 1, i32 0>
  %348 = shufflevector <2 x double> %335, <2 x double> poison, <2 x i32> zeroinitializer
  %349 = call <2 x double> @llvm.fmuladd.v2f64(<2 x double> %348, <2 x double> %343, <2 x double> %347)
  store <2 x double> %349, ptr %16, align 16, !tbaa !13
  %350 = load i64, ptr %12, align 8, !tbaa !5
  %351 = getelementptr inbounds %struct.doublecomplex, ptr %26, i64 %350
  store <2 x double> %349, ptr %351, align 8, !tbaa !13
  %352 = add nuw nsw i64 %308, 1
  store i64 %352, ptr %18, align 8, !tbaa !5
  %353 = load i64, ptr %11, align 8, !tbaa !5
  %.not893.not = icmp slt i64 %308, %353
  br i1 %.not893.not, label %307, label %.loopexit926.loopexit, !llvm.loop !14

354:                                              ; preds = %111, %259
  %355 = phi i64 [ %.pre1025, %259 ], [ %.pre1024, %111 ]
  %.1836.ph = phi i64 [ %.0835, %259 ], [ %.pre1024, %111 ]
  %356 = getelementptr inbounds i64, ptr %27, i64 %355
  store i64 %.1836.ph, ptr %356, align 8, !tbaa !5
  br label %383

.loopexit926.loopexit:                            ; preds = %307
  %.pre1023 = load i64, ptr %19, align 8, !tbaa !5
  br label %.loopexit926

.loopexit926:                                     ; preds = %..loopexit926_crit_edge, %.loopexit926.loopexit, %275
  %.pre-phi1051 = phi i64 [ %.pre1050, %..loopexit926_crit_edge ], [ %287, %.loopexit926.loopexit ], [ %287, %275 ]
  %357 = phi i64 [ %258, %..loopexit926_crit_edge ], [ %.pre1023, %.loopexit926.loopexit ], [ %301, %275 ]
  %358 = add nsw i64 %357, -1
  %359 = mul i64 %358, %42
  %360 = getelementptr %struct.doublecomplex, ptr %30, i64 %358
  %361 = getelementptr %struct.doublecomplex, ptr %360, i64 %.pre-phi1051
  %362 = getelementptr inbounds %struct.doublecomplex, ptr %26, i64 %359
  %363 = load <2 x double>, ptr %361, align 8, !tbaa !13
  store <2 x double> %363, ptr %362, align 8, !tbaa !13
  %364 = mul nsw i64 %357, %24
  %365 = getelementptr %struct.doublecomplex, ptr %30, i64 %358
  %366 = getelementptr %struct.doublecomplex, ptr %365, i64 %59
  %367 = getelementptr %struct.doublecomplex, ptr %26, i64 %358
  %368 = getelementptr %struct.doublecomplex, ptr %367, i64 %364
  %369 = load <2 x double>, ptr %366, align 8, !tbaa !13
  store <2 x double> %369, ptr %368, align 8, !tbaa !13
  %370 = mul i64 %357, %42
  %371 = add nsw i64 %357, %59
  store i64 %371, ptr %12, align 8, !tbaa !5
  %372 = getelementptr inbounds %struct.doublecomplex, ptr %30, i64 %371
  %373 = getelementptr inbounds %struct.doublecomplex, ptr %26, i64 %370
  %374 = load <2 x double>, ptr %372, align 8, !tbaa !13
  store <2 x double> %374, ptr %373, align 8, !tbaa !13
  store i64 %358, ptr %11, align 8, !tbaa !5
  %375 = call i32 @zlacgv_(ptr noundef nonnull %11, ptr noundef %gep934, ptr noundef nonnull @c__1) #4
  %376 = load i64, ptr %19, align 8, !tbaa !5
  %377 = add nsw i64 %376, -2
  store i64 %377, ptr %11, align 8, !tbaa !5
  %gep950 = getelementptr %struct.doublecomplex, ptr %invariant.gep979, i64 %.pre-phi1051
  %378 = call i32 @zlacgv_(ptr noundef nonnull %11, ptr noundef %gep950, ptr noundef nonnull @c__1) #4
  %379 = sub nsw i64 0, %.0835
  %380 = load i64, ptr %19, align 8, !tbaa !5
  %381 = getelementptr inbounds i64, ptr %27, i64 %380
  store i64 %379, ptr %381, align 8, !tbaa !5
  %382 = getelementptr i8, ptr %381, i64 -8
  store i64 %379, ptr %382, align 8, !tbaa !5
  br label %383

383:                                              ; preds = %.loopexit926, %354
  %384 = phi i64 [ %380, %.loopexit926 ], [ %355, %354 ]
  %.1830.neg905 = phi i64 [ -2, %.loopexit926 ], [ -1, %354 ]
  %385 = add i64 %384, %.1830.neg905
  %.pre = load i64, ptr %1, align 8, !tbaa !5
  br label %46

386:                                              ; preds = %52, %55
  %387 = sub i64 0, %48
  store i64 %387, ptr %11, align 8, !tbaa !5
  %388 = add i64 %.fr894, -1
  %389 = srem i64 %388, %48
  %390 = sub i64 %.fr894, %389
  %391 = icmp slt i64 %387, 0
  %392 = icmp sgt i64 %390, 0
  %393 = icmp slt i64 %390, 2
  %.in896964 = select i1 %391, i1 %392, i1 %393
  br i1 %.in896964, label %.lr.ph967, label %._crit_edge968

.lr.ph967:                                        ; preds = %386
  %394 = add nsw i64 %50, 1
  %395 = mul nsw i64 %394, %28
  %invariant.gep958 = getelementptr %struct.doublecomplex, ptr %30, i64 %395
  br label %396

396:                                              ; preds = %.lr.ph967, %._crit_edge
  %397 = phi i64 [ %390, %.lr.ph967 ], [ %428, %._crit_edge ]
  %398 = load i64, ptr %2, align 8, !tbaa !5
  %399 = load i64, ptr %19, align 8, !tbaa !5
  %400 = sub nsw i64 %399, %397
  %401 = add nsw i64 %400, 1
  %402 = call i64 @llvm.smin.i64(i64 %398, i64 %401)
  store i64 %402, ptr %22, align 8, !tbaa !5
  %403 = add i64 %397, -1
  %404 = add i64 %403, %402
  store i64 %404, ptr %12, align 8, !tbaa !5
  %.not901955 = icmp sgt i64 %397, %404
  br i1 %.not901955, label %._crit_edge, label %.lr.ph957.preheader

.lr.ph957.preheader:                              ; preds = %396
  %405 = getelementptr %struct.doublecomplex, ptr %26, i64 %397
  br label %.lr.ph957

.lr.ph957:                                        ; preds = %.lr.ph957.preheader, %.lr.ph957
  %.0841956 = phi i64 [ %409, %.lr.ph957 ], [ %397, %.lr.ph957.preheader ]
  %406 = mul nsw i64 %.0841956, %24
  %407 = add nsw i64 %406, %.0841956
  %408 = getelementptr inbounds %struct.doublecomplex, ptr %26, i64 %407, i32 1
  store double 0.000000e+00, ptr %408, align 8, !tbaa !12
  %409 = add i64 %.0841956, 1
  %410 = sub i64 %409, %397
  store i64 %410, ptr %13, align 8, !tbaa !5
  %411 = load i64, ptr %1, align 8, !tbaa !5
  %412 = load i64, ptr %19, align 8, !tbaa !5
  %413 = sub nsw i64 %411, %412
  store i64 %413, ptr %14, align 8, !tbaa !5
  store <2 x double> <double -1.000000e+00, double -0.000000e+00>, ptr %16, align 16, !tbaa !13
  %414 = add nsw i64 %412, 1
  %415 = mul nsw i64 %414, %24
  %416 = getelementptr %struct.doublecomplex, ptr %405, i64 %415
  %gep959 = getelementptr %struct.doublecomplex, ptr %invariant.gep958, i64 %.0841956
  %417 = getelementptr %struct.doublecomplex, ptr %405, i64 %406
  %418 = call i32 @f2c_zgemv(ptr noundef nonnull @.str.1, ptr noundef nonnull %13, ptr noundef nonnull %14, ptr noundef nonnull %16, ptr noundef %416, ptr noundef nonnull %5, ptr noundef %gep959, ptr noundef nonnull %8, ptr noundef nonnull @c_b1, ptr noundef %417, ptr noundef nonnull @c__1) #4
  store i64 %407, ptr %13, align 8, !tbaa !5
  store i64 %407, ptr %14, align 8, !tbaa !5
  store double 0.000000e+00, ptr %408, align 8, !tbaa !12
  %419 = load i64, ptr %12, align 8, !tbaa !5
  %.not901.not = icmp slt i64 %.0841956, %419
  br i1 %.not901.not, label %.lr.ph957, label %._crit_edge.loopexit, !llvm.loop !16

._crit_edge.loopexit:                             ; preds = %.lr.ph957
  %.pre1026 = load i64, ptr %19, align 8, !tbaa !5
  br label %._crit_edge

._crit_edge:                                      ; preds = %._crit_edge.loopexit, %396
  %420 = phi i64 [ %.pre1026, %._crit_edge.loopexit ], [ %399, %396 ]
  store i64 %403, ptr %12, align 8, !tbaa !5
  %421 = load i64, ptr %1, align 8, !tbaa !5
  %422 = sub nsw i64 %421, %420
  store i64 %422, ptr %13, align 8, !tbaa !5
  store <2 x double> <double -1.000000e+00, double -0.000000e+00>, ptr %16, align 16, !tbaa !13
  %423 = add nsw i64 %420, 1
  %424 = mul nsw i64 %423, %24
  %gep961 = getelementptr %struct.doublecomplex, ptr %invariant.gep, i64 %424
  %gep970 = getelementptr %struct.doublecomplex, ptr %invariant.gep958, i64 %397
  %425 = mul nsw i64 %397, %24
  %gep963 = getelementptr %struct.doublecomplex, ptr %invariant.gep, i64 %425
  %426 = call i32 @f2c_zgemm(ptr noundef nonnull @.str.1, ptr noundef nonnull @.str.2, ptr noundef nonnull %12, ptr noundef nonnull %22, ptr noundef nonnull %13, ptr noundef nonnull %16, ptr noundef %gep961, ptr noundef nonnull %5, ptr noundef %gep970, ptr noundef nonnull %8, ptr noundef nonnull @c_b1, ptr noundef %gep963, ptr noundef nonnull %5) #4
  %427 = load i64, ptr %11, align 8, !tbaa !5
  %428 = add nsw i64 %397, %427
  %429 = icmp slt i64 %427, 0
  %430 = icmp sgt i64 %428, 0
  %431 = icmp slt i64 %428, 2
  %.in896 = select i1 %429, i1 %430, i1 %431
  br i1 %.in896, label %396, label %._crit_edge968.loopexit, !llvm.loop !17

._crit_edge968.loopexit:                          ; preds = %._crit_edge
  %.pre1027 = load i64, ptr %19, align 8, !tbaa !5
  br label %._crit_edge968

._crit_edge968:                                   ; preds = %._crit_edge968.loopexit, %386
  %432 = phi i64 [ %.pre1027, %._crit_edge968.loopexit ], [ %.fr894, %386 ]
  %433 = add nsw i64 %432, 1
  br label %434

434:                                              ; preds = %448, %._crit_edge968
  %435 = phi i64 [ %439, %448 ], [ %433, %._crit_edge968 ]
  %436 = getelementptr inbounds i64, ptr %27, i64 %435
  %437 = load i64, ptr %436, align 8, !tbaa !5
  %.lobit = lshr i64 %437, 63
  %438 = add nsw i64 %435, %.lobit
  %.0839 = call i64 @llvm.abs.i64(i64 %437, i1 true)
  %439 = add nsw i64 %438, 1
  %.not897 = icmp ne i64 %.0839, %435
  %.pre1029 = load i64, ptr %1, align 8, !tbaa !5
  %.not898.not = icmp slt i64 %438, %.pre1029
  %or.cond1060 = select i1 %.not897, i1 %.not898.not, i1 false
  br i1 %or.cond1060, label %440, label %448

440:                                              ; preds = %434
  %441 = sub i64 %.pre1029, %438
  store i64 %441, ptr %11, align 8, !tbaa !5
  %442 = mul nsw i64 %439, %24
  %443 = getelementptr %struct.doublecomplex, ptr %26, i64 %.0839
  %444 = getelementptr %struct.doublecomplex, ptr %443, i64 %442
  %445 = getelementptr %struct.doublecomplex, ptr %26, i64 %435
  %446 = getelementptr %struct.doublecomplex, ptr %445, i64 %442
  %447 = call i32 @f2c_zswap(ptr noundef nonnull %11, ptr noundef %444, ptr noundef nonnull %5, ptr noundef %446, ptr noundef nonnull %5) #4
  %.pre1028 = load i64, ptr %1, align 8, !tbaa !5
  br label %448

448:                                              ; preds = %440, %434
  %449 = phi i64 [ %.pre1028, %440 ], [ %.pre1029, %434 ]
  %.not899.not = icmp slt i64 %438, %449
  br i1 %.not899.not, label %434, label %450

450:                                              ; preds = %448
  %451 = load i64, ptr %19, align 8, !tbaa !5
  %452 = sub nsw i64 %449, %451
  br label %915

.lr.ph1073:                                       ; preds = %.preheader, %849
  %.pre10301072 = phi i64 [ %.pre1030, %849 ], [ %.pre10301067, %.preheader ]
  %.28331071 = phi i64 [ %.3834, %849 ], [ undef, %.preheader ]
  %storemerge1070 = phi i64 [ %851, %849 ], [ 1, %.preheader ]
  %453 = mul i64 %storemerge1070, %32
  %454 = mul i64 %storemerge1070, %33
  store i64 %454, ptr %12, align 8, !tbaa !5
  %455 = getelementptr inbounds %struct.doublecomplex, ptr %26, i64 %454
  %456 = load double, ptr %455, align 8, !tbaa !9
  %457 = getelementptr inbounds %struct.doublecomplex, ptr %30, i64 %453
  store double %456, ptr %457, align 8, !tbaa !9
  %458 = getelementptr inbounds %struct.doublecomplex, ptr %30, i64 %453, i32 1
  store double 0.000000e+00, ptr %458, align 8, !tbaa !12
  %459 = icmp slt i64 %storemerge1070, %.pre10301072
  br i1 %459, label %460, label %470

460:                                              ; preds = %.lr.ph1073
  %461 = sub nsw i64 %.pre10301072, %storemerge1070
  store i64 %461, ptr %11, align 8, !tbaa !5
  %462 = add nsw i64 %storemerge1070, 1
  %463 = mul nsw i64 %storemerge1070, %24
  %464 = getelementptr %struct.doublecomplex, ptr %26, i64 %462
  %465 = getelementptr %struct.doublecomplex, ptr %464, i64 %463
  %466 = mul nsw i64 %storemerge1070, %28
  %467 = getelementptr %struct.doublecomplex, ptr %30, i64 %462
  %468 = getelementptr %struct.doublecomplex, ptr %467, i64 %466
  %469 = call i32 @f2c_zcopy(ptr noundef nonnull %11, ptr noundef %465, ptr noundef nonnull @c__1, ptr noundef %468, ptr noundef nonnull @c__1) #4
  %.pre1031 = load i64, ptr %1, align 8, !tbaa !5
  %.pre1032 = load i64, ptr %19, align 8, !tbaa !5
  %.pre1042 = mul i64 %.pre1032, %32
  br label %470

470:                                              ; preds = %460, %.lr.ph1073
  %.pre-phi1043 = phi i64 [ %.pre1042, %460 ], [ %453, %.lr.ph1073 ]
  %471 = phi i64 [ %.pre1032, %460 ], [ %storemerge1070, %.lr.ph1073 ]
  %472 = phi i64 [ %.pre1031, %460 ], [ %.pre10301072, %.lr.ph1073 ]
  %473 = add i64 %472, 1
  %474 = sub i64 %473, %471
  store i64 %474, ptr %11, align 8, !tbaa !5
  %475 = add nsw i64 %471, -1
  store i64 %475, ptr %12, align 8, !tbaa !5
  store <2 x double> <double -1.000000e+00, double -0.000000e+00>, ptr %16, align 16, !tbaa !13
  %gep976 = getelementptr %struct.doublecomplex, ptr %invariant.gep975, i64 %471
  %gep978 = getelementptr %struct.doublecomplex, ptr %invariant.gep977, i64 %471
  %476 = getelementptr inbounds %struct.doublecomplex, ptr %30, i64 %.pre-phi1043
  %477 = call i32 @f2c_zgemv(ptr noundef nonnull @.str.1, ptr noundef nonnull %11, ptr noundef nonnull %12, ptr noundef nonnull %16, ptr noundef %gep976, ptr noundef nonnull %5, ptr noundef %gep978, ptr noundef nonnull %8, ptr noundef nonnull @c_b1, ptr noundef %476, ptr noundef nonnull @c__1) #4
  %478 = load i64, ptr %19, align 8, !tbaa !5
  %479 = mul i64 %478, %32
  store i64 %479, ptr %12, align 8, !tbaa !5
  %480 = getelementptr inbounds %struct.doublecomplex, ptr %30, i64 %479
  %481 = load double, ptr %480, align 8, !tbaa !9
  %482 = getelementptr inbounds %struct.doublecomplex, ptr %30, i64 %479, i32 1
  store double 0.000000e+00, ptr %482, align 8, !tbaa !12
  %483 = fcmp oge double %481, 0.000000e+00
  %484 = fneg double %481
  %485 = select i1 %483, double %481, double %484
  %486 = load i64, ptr %1, align 8, !tbaa !5
  %487 = icmp slt i64 %478, %486
  br i1 %487, label %488, label %509

488:                                              ; preds = %470
  %489 = sub nsw i64 %486, %478
  store i64 %489, ptr %11, align 8, !tbaa !5
  %490 = mul nsw i64 %478, %28
  %gep980 = getelementptr %struct.doublecomplex, ptr %invariant.gep979, i64 %478
  %491 = getelementptr %struct.doublecomplex, ptr %gep980, i64 %490
  %492 = call i64 @f2c_izamax(ptr noundef nonnull %11, ptr noundef %491, ptr noundef nonnull @c__1) #4
  %493 = add nsw i64 %492, %478
  %494 = load i64, ptr %19, align 8, !tbaa !5
  %495 = mul nsw i64 %494, %28
  %496 = add nsw i64 %495, %493
  store i64 %496, ptr %11, align 8, !tbaa !5
  %497 = getelementptr inbounds %struct.doublecomplex, ptr %30, i64 %496
  %498 = load double, ptr %497, align 8, !tbaa !9
  %499 = getelementptr %struct.doublecomplex, ptr %30, i64 %493
  %500 = getelementptr %struct.doublecomplex, ptr %499, i64 %495
  %501 = call double @d_imag(ptr noundef %500) #4
  %502 = insertelement <2 x double> poison, double %498, i64 0
  %503 = insertelement <2 x double> %502, double %501, i64 1
  %504 = fcmp oge <2 x double> %503, zeroinitializer
  %505 = fneg <2 x double> %503
  %506 = select <2 x i1> %504, <2 x double> %503, <2 x double> %505
  %shift1079 = shufflevector <2 x double> %506, <2 x double> poison, <2 x i32> <i32 1, i32 poison>
  %507 = fadd <2 x double> %506, %shift1079
  %508 = extractelement <2 x double> %507, i64 0
  br label %509

509:                                              ; preds = %470, %488
  %.3834 = phi i64 [ %493, %488 ], [ %.28331071, %470 ]
  %.1828 = phi double [ %508, %488 ], [ 0.000000e+00, %470 ]
  %510 = fcmp oge double %485, %.1828
  %511 = select i1 %510, double %485, double %.1828
  %512 = fcmp oeq double %511, 0.000000e+00
  %.pre1037 = load i64, ptr %19, align 8, !tbaa !5
  br i1 %512, label %513, label %520

513:                                              ; preds = %509
  %514 = load i64, ptr %9, align 8, !tbaa !5
  %515 = icmp eq i64 %514, 0
  br i1 %515, label %516, label %517

516:                                              ; preds = %513
  store i64 %.pre1037, ptr %9, align 8, !tbaa !5
  br label %517

517:                                              ; preds = %516, %513
  %518 = mul i64 %.pre1037, %33
  store i64 %518, ptr %11, align 8, !tbaa !5
  store i64 %518, ptr %12, align 8, !tbaa !5
  %519 = getelementptr inbounds %struct.doublecomplex, ptr %26, i64 %518, i32 1
  store double 0.000000e+00, ptr %519, align 8, !tbaa !12
  br label %811

520:                                              ; preds = %509
  %521 = fmul double %.1828, 0x3FE47E0F66AFED07
  %522 = fcmp ult double %485, %521
  br i1 %522, label %523, label %651

523:                                              ; preds = %520
  %524 = sub nsw i64 %.3834, %.pre1037
  store i64 %524, ptr %11, align 8, !tbaa !5
  %525 = mul nsw i64 %.pre1037, %24
  %526 = getelementptr %struct.doublecomplex, ptr %26, i64 %.3834
  %527 = getelementptr %struct.doublecomplex, ptr %526, i64 %525
  %528 = add nsw i64 %.pre1037, 1
  %529 = mul nsw i64 %528, %28
  %530 = getelementptr %struct.doublecomplex, ptr %30, i64 %.pre1037
  %531 = getelementptr %struct.doublecomplex, ptr %530, i64 %529
  %532 = call i32 @f2c_zcopy(ptr noundef nonnull %11, ptr noundef %527, ptr noundef nonnull %5, ptr noundef %531, ptr noundef nonnull @c__1) #4
  %533 = load i64, ptr %19, align 8, !tbaa !5
  %534 = sub nsw i64 %.3834, %533
  store i64 %534, ptr %11, align 8, !tbaa !5
  %535 = add nsw i64 %533, 1
  %536 = mul nsw i64 %535, %28
  %537 = getelementptr %struct.doublecomplex, ptr %30, i64 %533
  %538 = getelementptr %struct.doublecomplex, ptr %537, i64 %536
  %539 = call i32 @zlacgv_(ptr noundef nonnull %11, ptr noundef %538, ptr noundef nonnull @c__1) #4
  %540 = load i64, ptr %19, align 8, !tbaa !5
  %541 = add nsw i64 %540, 1
  %542 = mul nsw i64 %541, %28
  %543 = add nsw i64 %542, %.3834
  %544 = mul nsw i64 %.3834, %24
  %545 = add nsw i64 %544, %.3834
  store i64 %545, ptr %12, align 8, !tbaa !5
  %546 = getelementptr inbounds %struct.doublecomplex, ptr %26, i64 %545
  %547 = load double, ptr %546, align 8, !tbaa !9
  %548 = getelementptr inbounds %struct.doublecomplex, ptr %30, i64 %543
  store double %547, ptr %548, align 8, !tbaa !9
  %549 = getelementptr inbounds %struct.doublecomplex, ptr %30, i64 %543, i32 1
  store double 0.000000e+00, ptr %549, align 8, !tbaa !12
  %550 = load i64, ptr %1, align 8, !tbaa !5
  %551 = icmp slt i64 %.3834, %550
  br i1 %551, label %552, label %560

552:                                              ; preds = %523
  %553 = sub nsw i64 %550, %.3834
  store i64 %553, ptr %11, align 8, !tbaa !5
  %554 = add nsw i64 %.3834, 1
  %555 = getelementptr %struct.doublecomplex, ptr %26, i64 %554
  %556 = getelementptr %struct.doublecomplex, ptr %555, i64 %544
  %557 = getelementptr %struct.doublecomplex, ptr %30, i64 %554
  %558 = getelementptr %struct.doublecomplex, ptr %557, i64 %542
  %559 = call i32 @f2c_zcopy(ptr noundef nonnull %11, ptr noundef %556, ptr noundef nonnull @c__1, ptr noundef %558, ptr noundef nonnull @c__1) #4
  %.pre1033 = load i64, ptr %1, align 8, !tbaa !5
  %.pre1034 = load i64, ptr %19, align 8, !tbaa !5
  %.pre1044 = add nsw i64 %.pre1034, 1
  %.pre1046 = mul nsw i64 %.pre1044, %28
  br label %560

560:                                              ; preds = %552, %523
  %.pre-phi1047 = phi i64 [ %.pre1046, %552 ], [ %542, %523 ]
  %561 = phi i64 [ %.pre1034, %552 ], [ %540, %523 ]
  %562 = phi i64 [ %.pre1033, %552 ], [ %550, %523 ]
  %563 = add i64 %562, 1
  %564 = sub i64 %563, %561
  store i64 %564, ptr %11, align 8, !tbaa !5
  %565 = add nsw i64 %561, -1
  store i64 %565, ptr %12, align 8, !tbaa !5
  store <2 x double> <double -1.000000e+00, double -0.000000e+00>, ptr %16, align 16, !tbaa !13
  %gep982 = getelementptr %struct.doublecomplex, ptr %invariant.gep975, i64 %561
  %566 = getelementptr %struct.doublecomplex, ptr %30, i64 %.3834
  %567 = getelementptr %struct.doublecomplex, ptr %566, i64 %28
  %568 = getelementptr %struct.doublecomplex, ptr %30, i64 %561
  %569 = getelementptr %struct.doublecomplex, ptr %568, i64 %.pre-phi1047
  %570 = call i32 @f2c_zgemv(ptr noundef nonnull @.str.1, ptr noundef nonnull %11, ptr noundef nonnull %12, ptr noundef nonnull %16, ptr noundef %gep982, ptr noundef nonnull %5, ptr noundef %567, ptr noundef nonnull %8, ptr noundef nonnull @c_b1, ptr noundef %569, ptr noundef nonnull @c__1) #4
  %571 = load i64, ptr %19, align 8, !tbaa !5
  %572 = add nsw i64 %571, 1
  %573 = mul nsw i64 %572, %28
  %574 = add nsw i64 %573, %.3834
  store i64 %574, ptr %12, align 8, !tbaa !5
  %575 = getelementptr inbounds %struct.doublecomplex, ptr %30, i64 %574, i32 1
  store double 0.000000e+00, ptr %575, align 8, !tbaa !12
  %576 = sub nsw i64 %.3834, %571
  store i64 %576, ptr %11, align 8, !tbaa !5
  %577 = add nsw i64 %571, -1
  %578 = getelementptr %struct.doublecomplex, ptr %30, i64 %571
  %579 = getelementptr %struct.doublecomplex, ptr %578, i64 %573
  %580 = call i64 @f2c_izamax(ptr noundef nonnull %11, ptr noundef %579, ptr noundef nonnull @c__1) #4
  %581 = add nsw i64 %577, %580
  %582 = load i64, ptr %19, align 8, !tbaa !5
  %583 = add nsw i64 %582, 1
  %584 = mul nsw i64 %583, %28
  %585 = add nsw i64 %584, %581
  store i64 %585, ptr %11, align 8, !tbaa !5
  %586 = getelementptr inbounds %struct.doublecomplex, ptr %30, i64 %585
  %587 = load double, ptr %586, align 8, !tbaa !9
  %588 = getelementptr %struct.doublecomplex, ptr %30, i64 %581
  %589 = getelementptr %struct.doublecomplex, ptr %588, i64 %584
  %590 = call double @d_imag(ptr noundef %589) #4
  %591 = insertelement <2 x double> poison, double %587, i64 0
  %592 = insertelement <2 x double> %591, double %590, i64 1
  %593 = fcmp oge <2 x double> %592, zeroinitializer
  %594 = fneg <2 x double> %592
  %595 = select <2 x i1> %593, <2 x double> %592, <2 x double> %594
  %shift1080 = shufflevector <2 x double> %595, <2 x double> poison, <2 x i32> <i32 1, i32 poison>
  %596 = fadd <2 x double> %595, %shift1080
  %597 = extractelement <2 x double> %596, i64 0
  %598 = load i64, ptr %1, align 8, !tbaa !5
  %599 = icmp slt i64 %.3834, %598
  br i1 %599, label %600, label %627

600:                                              ; preds = %560
  %601 = sub nsw i64 %598, %.3834
  store i64 %601, ptr %11, align 8, !tbaa !5
  %602 = load i64, ptr %19, align 8, !tbaa !5
  %603 = add nsw i64 %602, 1
  %604 = mul nsw i64 %603, %28
  %605 = getelementptr i8, ptr %566, i64 16
  %606 = getelementptr %struct.doublecomplex, ptr %605, i64 %604
  %607 = call i64 @f2c_izamax(ptr noundef nonnull %11, ptr noundef %606, ptr noundef nonnull @c__1) #4
  %608 = add nsw i64 %607, %.3834
  %609 = load i64, ptr %19, align 8, !tbaa !5
  %610 = add nsw i64 %609, 1
  %611 = mul nsw i64 %610, %28
  %612 = add nsw i64 %611, %608
  store i64 %612, ptr %11, align 8, !tbaa !5
  %613 = getelementptr inbounds %struct.doublecomplex, ptr %30, i64 %612
  %614 = load double, ptr %613, align 8, !tbaa !9
  %615 = getelementptr %struct.doublecomplex, ptr %30, i64 %608
  %616 = getelementptr %struct.doublecomplex, ptr %615, i64 %611
  %617 = call double @d_imag(ptr noundef %616) #4
  %618 = insertelement <2 x double> poison, double %614, i64 0
  %619 = insertelement <2 x double> %618, double %617, i64 1
  %620 = fcmp oge <2 x double> %619, zeroinitializer
  %621 = fneg <2 x double> %619
  %622 = select <2 x i1> %620, <2 x double> %619, <2 x double> %621
  %shift1081 = shufflevector <2 x double> %622, <2 x double> poison, <2 x i32> <i32 1, i32 poison>
  %623 = fadd <2 x double> %622, %shift1081
  %624 = extractelement <2 x double> %623, i64 0
  %625 = fcmp oge double %597, %624
  %626 = select i1 %625, double %597, double %624
  br label %627

627:                                              ; preds = %600, %560
  %.1 = phi double [ %626, %600 ], [ %597, %560 ]
  %628 = fdiv double %.1828, %.1
  %629 = fmul double %521, %628
  %630 = fcmp ult double %485, %629
  %631 = load i64, ptr %19, align 8, !tbaa !5
  br i1 %630, label %632, label %651

632:                                              ; preds = %627
  %633 = add nsw i64 %631, 1
  %634 = mul nsw i64 %633, %28
  %635 = getelementptr %struct.doublecomplex, ptr %30, i64 %634
  %636 = getelementptr %struct.doublecomplex, ptr %635, i64 %.3834
  %637 = load double, ptr %636, align 8, !tbaa !9
  %638 = fcmp oge double %637, 0.000000e+00
  %639 = fneg double %637
  %640 = select i1 %638, double %637, double %639
  %641 = fmul double %.1, 0x3FE47E0F66AFED07
  %642 = fcmp ult double %640, %641
  br i1 %642, label %651, label %643

643:                                              ; preds = %632
  %644 = load i64, ptr %1, align 8, !tbaa !5
  %reass.sub1014 = sub i64 %644, %631
  %645 = add i64 %reass.sub1014, 1
  store i64 %645, ptr %11, align 8, !tbaa !5
  %646 = getelementptr %struct.doublecomplex, ptr %30, i64 %631
  %647 = getelementptr %struct.doublecomplex, ptr %646, i64 %634
  %648 = mul i64 %631, %32
  %649 = getelementptr inbounds %struct.doublecomplex, ptr %30, i64 %648
  %650 = call i32 @f2c_zcopy(ptr noundef nonnull %11, ptr noundef %647, ptr noundef nonnull @c__1, ptr noundef %649, ptr noundef nonnull @c__1) #4
  %.pre1035 = load i64, ptr %19, align 8, !tbaa !5
  br label %651

651:                                              ; preds = %627, %520, %632, %643
  %652 = phi i64 [ %.pre1035, %643 ], [ %631, %632 ], [ %.pre1037, %520 ], [ %631, %627 ]
  %.2837 = phi i64 [ %.3834, %643 ], [ %.3834, %632 ], [ %.pre1037, %520 ], [ %631, %627 ]
  %653 = phi i1 [ true, %643 ], [ false, %632 ], [ true, %520 ], [ true, %627 ]
  %.2 = phi i64 [ 1, %643 ], [ 2, %632 ], [ 1, %520 ], [ 1, %627 ]
  %654 = add nsw i64 %652, %.2
  %655 = add nsw i64 %654, -1
  store i64 %655, ptr %23, align 8, !tbaa !5
  %.not881 = icmp eq i64 %.2837, %655
  br i1 %.not881, label %695, label %656

656:                                              ; preds = %651
  %657 = mul nsw i64 %.2837, %24
  %658 = add nsw i64 %657, %.2837
  %659 = mul i64 %655, %33
  store i64 %659, ptr %12, align 8, !tbaa !5
  %660 = getelementptr inbounds %struct.doublecomplex, ptr %26, i64 %659
  %661 = load double, ptr %660, align 8, !tbaa !9
  %662 = getelementptr inbounds %struct.doublecomplex, ptr %26, i64 %658
  store double %661, ptr %662, align 8, !tbaa !9
  %663 = getelementptr inbounds %struct.doublecomplex, ptr %26, i64 %658, i32 1
  store double 0.000000e+00, ptr %663, align 8, !tbaa !12
  %664 = sub i64 %.2837, %654
  store i64 %664, ptr %11, align 8, !tbaa !5
  %665 = mul nsw i64 %655, %24
  %666 = getelementptr %struct.doublecomplex, ptr %26, i64 %654
  %667 = getelementptr %struct.doublecomplex, ptr %666, i64 %665
  %668 = mul nsw i64 %654, %24
  %669 = getelementptr %struct.doublecomplex, ptr %26, i64 %.2837
  %670 = getelementptr %struct.doublecomplex, ptr %669, i64 %668
  %671 = call i32 @f2c_zcopy(ptr noundef nonnull %11, ptr noundef %667, ptr noundef nonnull @c__1, ptr noundef %670, ptr noundef nonnull %5) #4
  %672 = load i64, ptr %23, align 8, !tbaa !5
  %673 = xor i64 %672, -1
  %674 = add i64 %.2837, %673
  store i64 %674, ptr %11, align 8, !tbaa !5
  %675 = add nsw i64 %672, 1
  %676 = mul nsw i64 %675, %24
  %677 = getelementptr %struct.doublecomplex, ptr %669, i64 %676
  %678 = call i32 @zlacgv_(ptr noundef nonnull %11, ptr noundef %677, ptr noundef nonnull %5) #4
  %679 = load i64, ptr %1, align 8, !tbaa !5
  %680 = icmp slt i64 %.2837, %679
  br i1 %680, label %681, label %688

681:                                              ; preds = %656
  %682 = sub nsw i64 %679, %.2837
  store i64 %682, ptr %11, align 8, !tbaa !5
  %683 = load i64, ptr %23, align 8, !tbaa !5
  %684 = mul nsw i64 %683, %24
  %gep984 = getelementptr %struct.doublecomplex, ptr %invariant.gep983, i64 %.2837
  %685 = getelementptr %struct.doublecomplex, ptr %gep984, i64 %684
  %686 = getelementptr %struct.doublecomplex, ptr %gep984, i64 %657
  %687 = call i32 @f2c_zcopy(ptr noundef nonnull %11, ptr noundef %685, ptr noundef nonnull @c__1, ptr noundef %686, ptr noundef nonnull @c__1) #4
  br label %688

688:                                              ; preds = %681, %656
  %689 = load i64, ptr %23, align 8, !tbaa !5
  %690 = add nsw i64 %689, -1
  store i64 %690, ptr %11, align 8, !tbaa !5
  %gep986 = getelementptr %struct.doublecomplex, ptr %invariant.gep975, i64 %689
  %691 = getelementptr %struct.doublecomplex, ptr %669, i64 %24
  %692 = call i32 @f2c_zswap(ptr noundef nonnull %11, ptr noundef %gep986, ptr noundef nonnull %5, ptr noundef %691, ptr noundef nonnull %5) #4
  %693 = load i64, ptr %23, align 8, !tbaa !5
  %gep988 = getelementptr %struct.doublecomplex, ptr %invariant.gep977, i64 %693
  %gep990 = getelementptr %struct.doublecomplex, ptr %invariant.gep977, i64 %.2837
  %694 = call i32 @f2c_zswap(ptr noundef nonnull %23, ptr noundef %gep988, ptr noundef nonnull %8, ptr noundef %gep990, ptr noundef nonnull %8) #4
  br label %695

695:                                              ; preds = %688, %651
  br i1 %653, label %696, label %724

696:                                              ; preds = %695
  %697 = load i64, ptr %1, align 8, !tbaa !5
  %698 = load i64, ptr %19, align 8, !tbaa !5
  %699 = add i64 %697, 1
  %700 = sub i64 %699, %698
  store i64 %700, ptr %11, align 8, !tbaa !5
  %701 = mul i64 %698, %32
  %702 = getelementptr inbounds %struct.doublecomplex, ptr %30, i64 %701
  %703 = mul i64 %698, %33
  %704 = getelementptr inbounds %struct.doublecomplex, ptr %26, i64 %703
  %705 = call i32 @f2c_zcopy(ptr noundef nonnull %11, ptr noundef %702, ptr noundef nonnull @c__1, ptr noundef %704, ptr noundef nonnull @c__1) #4
  %706 = load i64, ptr %19, align 8, !tbaa !5
  %707 = load i64, ptr %1, align 8, !tbaa !5
  %708 = icmp slt i64 %706, %707
  br i1 %708, label %709, label %811

709:                                              ; preds = %696
  %710 = mul i64 %706, %33
  %711 = getelementptr inbounds %struct.doublecomplex, ptr %26, i64 %710
  %712 = load double, ptr %711, align 8, !tbaa !9
  %713 = fdiv double 1.000000e+00, %712
  store double %713, ptr %20, align 8, !tbaa !13
  %714 = sub nsw i64 %707, %706
  store i64 %714, ptr %11, align 8, !tbaa !5
  %715 = mul nsw i64 %706, %24
  %gep996 = getelementptr %struct.doublecomplex, ptr %invariant.gep983, i64 %706
  %716 = getelementptr %struct.doublecomplex, ptr %gep996, i64 %715
  %717 = call i32 @f2c_zdscal(ptr noundef nonnull %11, ptr noundef nonnull %20, ptr noundef %716, ptr noundef nonnull @c__1) #4
  %718 = load i64, ptr %1, align 8, !tbaa !5
  %719 = load i64, ptr %19, align 8, !tbaa !5
  %720 = sub nsw i64 %718, %719
  store i64 %720, ptr %11, align 8, !tbaa !5
  %721 = mul nsw i64 %719, %28
  %gep998 = getelementptr %struct.doublecomplex, ptr %invariant.gep979, i64 %719
  %722 = getelementptr %struct.doublecomplex, ptr %gep998, i64 %721
  %723 = call i32 @zlacgv_(ptr noundef nonnull %11, ptr noundef %722, ptr noundef nonnull @c__1) #4
  %.pre1038 = load i64, ptr %19, align 8, !tbaa !5
  br label %811

724:                                              ; preds = %695
  %725 = load i64, ptr %19, align 8, !tbaa !5
  %726 = load i64, ptr %1, align 8, !tbaa !5
  %727 = add nsw i64 %726, -1
  %728 = icmp slt i64 %725, %727
  br i1 %728, label %729, label %.loopexit

729:                                              ; preds = %724
  %730 = add nsw i64 %725, 1
  %731 = mul nsw i64 %725, %28
  %732 = add nsw i64 %730, %731
  store i64 %732, ptr %11, align 8, !tbaa !5
  %733 = getelementptr inbounds %struct.doublecomplex, ptr %30, i64 %732
  %734 = load <2 x double>, ptr %733, align 8, !tbaa !13
  store <2 x double> %734, ptr %21, align 16, !tbaa !13
  %735 = mul i64 %730, %32
  %736 = getelementptr inbounds %struct.doublecomplex, ptr %30, i64 %735
  call void @z_div(ptr noundef nonnull %16, ptr noundef %736, ptr noundef nonnull %21) #4
  %737 = load <2 x double>, ptr %16, align 16
  %738 = load double, ptr %34, align 8, !tbaa !12
  call void @d_cnjg(ptr noundef nonnull %17, ptr noundef nonnull %21) #4
  %739 = load i64, ptr %19, align 8, !tbaa !5
  %740 = mul i64 %739, %32
  %741 = getelementptr inbounds %struct.doublecomplex, ptr %30, i64 %740
  call void @z_div(ptr noundef nonnull %16, ptr noundef %741, ptr noundef nonnull %17) #4
  %742 = fneg double %738
  %743 = load <2 x double>, ptr %16, align 16, !tbaa !13
  %744 = insertelement <2 x double> poison, double %738, i64 0
  %745 = insertelement <2 x double> %744, double %742, i64 1
  %746 = fmul <2 x double> %743, %745
  %747 = shufflevector <2 x double> %746, <2 x double> poison, <2 x i32> <i32 1, i32 0>
  %748 = shufflevector <2 x double> %737, <2 x double> poison, <2 x i32> zeroinitializer
  %749 = call <2 x double> @llvm.fmuladd.v2f64(<2 x double> %748, <2 x double> %743, <2 x double> %747)
  store <2 x double> %749, ptr %16, align 16, !tbaa !13
  %750 = extractelement <2 x double> %749, i64 0
  %751 = fadd double %750, -1.000000e+00
  %752 = fdiv double 1.000000e+00, %751
  store double %752, ptr %17, align 16, !tbaa !9
  store double 0.000000e+00, ptr %36, align 8, !tbaa !12
  call void @z_div(ptr noundef nonnull %16, ptr noundef nonnull %17, ptr noundef nonnull %21) #4
  %753 = load <2 x double>, ptr %16, align 16, !tbaa !13
  store <2 x double> %753, ptr %21, align 16, !tbaa !13
  %754 = load i64, ptr %1, align 8, !tbaa !5
  store i64 %754, ptr %11, align 8, !tbaa !5
  %755 = load i64, ptr %19, align 8, !tbaa !5
  %756 = add nsw i64 %755, 2
  store i64 %756, ptr %18, align 8, !tbaa !5
  %.not883971 = icmp sgt i64 %756, %754
  br i1 %.not883971, label %.loopexit, label %.lr.ph974

.lr.ph974:                                        ; preds = %729
  %757 = shufflevector <2 x double> %743, <2 x double> poison, <2 x i32> zeroinitializer
  %758 = shufflevector <2 x double> %743, <2 x double> poison, <2 x i32> <i32 1, i32 poison>
  %759 = fneg <2 x double> %743
  %760 = shufflevector <2 x double> %758, <2 x double> %759, <2 x i32> <i32 0, i32 3>
  br label %761

761:                                              ; preds = %.lr.ph974, %761
  %762 = phi i64 [ %755, %.lr.ph974 ], [ %766, %761 ]
  %763 = phi i64 [ %756, %.lr.ph974 ], [ %809, %761 ]
  %764 = mul nsw i64 %762, %24
  %765 = add nsw i64 %764, %763
  store i64 %765, ptr %12, align 8, !tbaa !5
  call void @d_cnjg(ptr noundef nonnull %17, ptr noundef nonnull %21) #4
  %766 = load i64, ptr %19, align 8, !tbaa !5
  %767 = mul nsw i64 %766, %28
  %768 = add nsw i64 %767, %763
  %769 = getelementptr inbounds %struct.doublecomplex, ptr %30, i64 %768
  %770 = add nsw i64 %766, 1
  %771 = mul nsw i64 %770, %28
  %772 = add nsw i64 %771, %763
  %773 = getelementptr inbounds %struct.doublecomplex, ptr %30, i64 %772
  %774 = load <2 x double>, ptr %17, align 16
  %775 = load double, ptr %36, align 8, !tbaa !12
  %776 = fneg double %775
  %777 = load i64, ptr %12, align 8, !tbaa !5
  %778 = getelementptr inbounds %struct.doublecomplex, ptr %26, i64 %777
  %779 = load <2 x double>, ptr %769, align 8, !tbaa !13
  %780 = fmul <2 x double> %779, %745
  %781 = shufflevector <2 x double> %780, <2 x double> poison, <2 x i32> <i32 1, i32 0>
  %782 = call <2 x double> @llvm.fmuladd.v2f64(<2 x double> %748, <2 x double> %779, <2 x double> %781)
  %783 = load <2 x double>, ptr %773, align 8, !tbaa !13
  %784 = fsub <2 x double> %782, %783
  %785 = insertelement <2 x double> poison, double %775, i64 0
  %786 = insertelement <2 x double> %785, double %776, i64 1
  %787 = fmul <2 x double> %784, %786
  %788 = shufflevector <2 x double> %787, <2 x double> poison, <2 x i32> <i32 1, i32 0>
  %789 = shufflevector <2 x double> %774, <2 x double> poison, <2 x i32> zeroinitializer
  %790 = call <2 x double> @llvm.fmuladd.v2f64(<2 x double> %789, <2 x double> %784, <2 x double> %788)
  store <2 x double> %790, ptr %778, align 8, !tbaa !13
  %791 = mul nsw i64 %770, %24
  %792 = add nsw i64 %791, %763
  store i64 %792, ptr %12, align 8, !tbaa !5
  store i64 %772, ptr %13, align 8, !tbaa !5
  store i64 %768, ptr %14, align 8, !tbaa !5
  %793 = load <2 x double>, ptr %21, align 16
  %794 = load double, ptr %35, align 8, !tbaa !12
  %795 = fneg double %794
  %796 = getelementptr inbounds %struct.doublecomplex, ptr %26, i64 %792
  %797 = load <2 x double>, ptr %773, align 8, !tbaa !13
  %798 = fmul <2 x double> %797, %760
  %799 = shufflevector <2 x double> %798, <2 x double> poison, <2 x i32> <i32 1, i32 0>
  %800 = call <2 x double> @llvm.fmuladd.v2f64(<2 x double> %757, <2 x double> %797, <2 x double> %799)
  %801 = load <2 x double>, ptr %769, align 8, !tbaa !13
  %802 = fsub <2 x double> %800, %801
  store <2 x double> %802, ptr %17, align 16, !tbaa !13
  %803 = insertelement <2 x double> poison, double %794, i64 0
  %804 = insertelement <2 x double> %803, double %795, i64 1
  %805 = fmul <2 x double> %802, %804
  %806 = shufflevector <2 x double> %805, <2 x double> poison, <2 x i32> <i32 1, i32 0>
  %807 = shufflevector <2 x double> %793, <2 x double> poison, <2 x i32> zeroinitializer
  %808 = call <2 x double> @llvm.fmuladd.v2f64(<2 x double> %807, <2 x double> %802, <2 x double> %806)
  store <2 x double> %808, ptr %16, align 16, !tbaa !13
  store <2 x double> %808, ptr %796, align 8, !tbaa !13
  %809 = add nsw i64 %763, 1
  store i64 %809, ptr %18, align 8, !tbaa !5
  %810 = load i64, ptr %11, align 8, !tbaa !5
  %.not883.not = icmp slt i64 %763, %810
  br i1 %.not883.not, label %761, label %.loopexit.loopexit, !llvm.loop !18

811:                                              ; preds = %517, %709, %696
  %812 = phi i64 [ %706, %696 ], [ %.pre1038, %709 ], [ %.pre1037, %517 ]
  %.3838.ph = phi i64 [ %.2837, %696 ], [ %.2837, %709 ], [ %.pre1037, %517 ]
  %813 = getelementptr inbounds i64, ptr %27, i64 %812
  store i64 %.3838.ph, ptr %813, align 8, !tbaa !5
  br label %849

.loopexit.loopexit:                               ; preds = %761
  %.pre1036 = load i64, ptr %1, align 8, !tbaa !5
  br label %.loopexit

.loopexit:                                        ; preds = %.loopexit.loopexit, %729, %724
  %814 = phi i64 [ %.pre1036, %.loopexit.loopexit ], [ %754, %729 ], [ %726, %724 ]
  %815 = phi i64 [ %766, %.loopexit.loopexit ], [ %755, %729 ], [ %725, %724 ]
  %816 = mul i64 %815, %33
  %817 = mul i64 %815, %32
  %818 = getelementptr inbounds %struct.doublecomplex, ptr %30, i64 %817
  %819 = getelementptr inbounds %struct.doublecomplex, ptr %26, i64 %816
  %820 = load <2 x double>, ptr %818, align 8, !tbaa !13
  store <2 x double> %820, ptr %819, align 8, !tbaa !13
  %821 = add nsw i64 %815, 1
  %822 = mul nsw i64 %815, %24
  %823 = mul nsw i64 %815, %28
  %824 = getelementptr %struct.doublecomplex, ptr %30, i64 %821
  %825 = getelementptr %struct.doublecomplex, ptr %824, i64 %823
  %826 = getelementptr %struct.doublecomplex, ptr %26, i64 %821
  %827 = getelementptr %struct.doublecomplex, ptr %826, i64 %822
  %828 = load <2 x double>, ptr %825, align 8, !tbaa !13
  store <2 x double> %828, ptr %827, align 8, !tbaa !13
  %829 = mul i64 %821, %33
  %830 = mul i64 %821, %32
  store i64 %830, ptr %12, align 8, !tbaa !5
  %831 = getelementptr inbounds %struct.doublecomplex, ptr %30, i64 %830
  %832 = getelementptr inbounds %struct.doublecomplex, ptr %26, i64 %829
  %833 = load <2 x double>, ptr %831, align 8, !tbaa !13
  store <2 x double> %833, ptr %832, align 8, !tbaa !13
  %834 = sub nsw i64 %814, %815
  store i64 %834, ptr %11, align 8, !tbaa !5
  %gep992 = getelementptr %struct.doublecomplex, ptr %invariant.gep979, i64 %815
  %835 = getelementptr %struct.doublecomplex, ptr %gep992, i64 %823
  %836 = call i32 @zlacgv_(ptr noundef nonnull %11, ptr noundef %835, ptr noundef nonnull @c__1) #4
  %837 = load i64, ptr %1, align 8, !tbaa !5
  %838 = load i64, ptr %19, align 8, !tbaa !5
  %839 = xor i64 %838, -1
  %840 = add i64 %837, %839
  store i64 %840, ptr %11, align 8, !tbaa !5
  %841 = add nsw i64 %838, 1
  %842 = mul nsw i64 %841, %28
  %gep994 = getelementptr %struct.doublecomplex, ptr %invariant.gep993, i64 %838
  %843 = getelementptr %struct.doublecomplex, ptr %gep994, i64 %842
  %844 = call i32 @zlacgv_(ptr noundef nonnull %11, ptr noundef %843, ptr noundef nonnull @c__1) #4
  %845 = sub nsw i64 0, %.2837
  %846 = load i64, ptr %19, align 8, !tbaa !5
  %847 = getelementptr inbounds i64, ptr %27, i64 %846
  store i64 %845, ptr %847, align 8, !tbaa !5
  %848 = getelementptr i64, ptr %6, i64 %846
  store i64 %845, ptr %848, align 8, !tbaa !5
  br label %849

849:                                              ; preds = %.loopexit, %811
  %850 = phi i64 [ %846, %.loopexit ], [ %812, %811 ]
  %.3912 = phi i64 [ 2, %.loopexit ], [ 1, %811 ]
  %851 = add nsw i64 %850, %.3912
  store i64 %851, ptr %19, align 8, !tbaa !5
  %852 = load i64, ptr %2, align 8, !tbaa !5
  %.not880 = icmp sge i64 %851, %852
  %.pre1030 = load i64, ptr %1, align 8, !tbaa !5
  %853 = icmp slt i64 %852, %.pre1030
  %or.cond1052 = select i1 %.not880, i1 %853, i1 false
  %854 = icmp sgt i64 %851, %.pre1030
  %or.cond1053 = select i1 %or.cond1052, i1 true, i1 %854
  br i1 %or.cond1053, label %._crit_edge1074, label %.lr.ph1073

._crit_edge1074:                                  ; preds = %849, %.preheader
  %storemerge.lcssa = phi i64 [ 1, %.preheader ], [ %851, %849 ]
  %.lcssa1062 = phi i64 [ %37, %.preheader ], [ %852, %849 ]
  %.pre1030.lcssa = phi i64 [ %.pre10301067, %.preheader ], [ %.pre1030, %849 ]
  store i64 %.pre1030.lcssa, ptr %11, align 8, !tbaa !5
  store i64 %.lcssa1062, ptr %12, align 8, !tbaa !5
  br label %855

855:                                              ; preds = %893, %._crit_edge1074
  %856 = phi i64 [ %894, %893 ], [ %.lcssa1062, %._crit_edge1074 ]
  %857 = phi i64 [ %895, %893 ], [ %storemerge.lcssa, %._crit_edge1074 ]
  %858 = icmp slt i64 %856, 0
  %859 = load i64, ptr %11, align 8, !tbaa !5
  br i1 %858, label %860, label %861

860:                                              ; preds = %855
  %.not915 = icmp slt i64 %857, %859
  br i1 %.not915, label %896, label %862

861:                                              ; preds = %855
  %.not914 = icmp sgt i64 %857, %859
  br i1 %.not914, label %896, label %862

862:                                              ; preds = %860, %861
  %863 = load i64, ptr %2, align 8, !tbaa !5
  %864 = load i64, ptr %1, align 8, !tbaa !5
  %865 = sub nsw i64 %864, %857
  %866 = add nsw i64 %865, 1
  store i64 %866, ptr %14, align 8, !tbaa !5
  %867 = call i64 @llvm.smin.i64(i64 %863, i64 %866)
  store i64 %867, ptr %22, align 8, !tbaa !5
  %868 = add i64 %857, -1
  %869 = add i64 %868, %867
  store i64 %869, ptr %13, align 8, !tbaa !5
  %.not8871003 = icmp sgt i64 %857, %869
  br i1 %.not8871003, label %._crit_edge1007, label %.lr.ph1006

.lr.ph1006:                                       ; preds = %862, %.lr.ph1006
  %.18421004 = phi i64 [ %879, %.lr.ph1006 ], [ %857, %862 ]
  %870 = mul i64 %.18421004, %33
  %871 = getelementptr inbounds %struct.doublecomplex, ptr %26, i64 %870
  %872 = getelementptr inbounds %struct.doublecomplex, ptr %26, i64 %870, i32 1
  store double 0.000000e+00, ptr %872, align 8, !tbaa !12
  %873 = load i64, ptr %22, align 8, !tbaa !5
  %874 = sub i64 %857, %.18421004
  %875 = add i64 %874, %873
  store i64 %875, ptr %14, align 8, !tbaa !5
  %876 = load i64, ptr %19, align 8, !tbaa !5
  %877 = add nsw i64 %876, -1
  store i64 %877, ptr %15, align 8, !tbaa !5
  store <2 x double> <double -1.000000e+00, double -0.000000e+00>, ptr %16, align 16, !tbaa !13
  %gep1000 = getelementptr %struct.doublecomplex, ptr %invariant.gep975, i64 %.18421004
  %gep1002 = getelementptr %struct.doublecomplex, ptr %invariant.gep977, i64 %.18421004
  %878 = call i32 @f2c_zgemv(ptr noundef nonnull @.str.1, ptr noundef nonnull %14, ptr noundef nonnull %15, ptr noundef nonnull %16, ptr noundef %gep1000, ptr noundef nonnull %5, ptr noundef %gep1002, ptr noundef nonnull %8, ptr noundef nonnull @c_b1, ptr noundef %871, ptr noundef nonnull @c__1) #4
  store i64 %870, ptr %14, align 8, !tbaa !5
  store i64 %870, ptr %15, align 8, !tbaa !5
  store double 0.000000e+00, ptr %872, align 8, !tbaa !12
  %879 = add nsw i64 %.18421004, 1
  %880 = load i64, ptr %13, align 8, !tbaa !5
  %.not887.not = icmp slt i64 %.18421004, %880
  br i1 %.not887.not, label %.lr.ph1006, label %._crit_edge1007.loopexit, !llvm.loop !19

._crit_edge1007.loopexit:                         ; preds = %.lr.ph1006
  %.pre1039 = load i64, ptr %22, align 8, !tbaa !5
  %.pre1040 = load i64, ptr %1, align 8, !tbaa !5
  br label %._crit_edge1007

._crit_edge1007:                                  ; preds = %._crit_edge1007.loopexit, %862
  %881 = phi i64 [ %.pre1040, %._crit_edge1007.loopexit ], [ %864, %862 ]
  %882 = phi i64 [ %.pre1039, %._crit_edge1007.loopexit ], [ %867, %862 ]
  %883 = add nsw i64 %882, %857
  %.not888 = icmp sgt i64 %883, %881
  br i1 %.not888, label %893, label %884

884:                                              ; preds = %._crit_edge1007
  %reass.sub1015 = sub i64 %881, %883
  %885 = add i64 %reass.sub1015, 1
  store i64 %885, ptr %13, align 8, !tbaa !5
  %886 = load i64, ptr %19, align 8, !tbaa !5
  %887 = add nsw i64 %886, -1
  store i64 %887, ptr %14, align 8, !tbaa !5
  store <2 x double> <double -1.000000e+00, double -0.000000e+00>, ptr %16, align 16, !tbaa !13
  %888 = getelementptr %struct.doublecomplex, ptr %26, i64 %883
  %889 = getelementptr %struct.doublecomplex, ptr %888, i64 %24
  %gep1009 = getelementptr %struct.doublecomplex, ptr %invariant.gep977, i64 %857
  %890 = mul nsw i64 %857, %24
  %891 = getelementptr %struct.doublecomplex, ptr %888, i64 %890
  %892 = call i32 @f2c_zgemm(ptr noundef nonnull @.str.1, ptr noundef nonnull @.str.2, ptr noundef nonnull %13, ptr noundef nonnull %22, ptr noundef nonnull %14, ptr noundef nonnull %16, ptr noundef %889, ptr noundef nonnull %5, ptr noundef %gep1009, ptr noundef nonnull %8, ptr noundef nonnull @c_b1, ptr noundef %891, ptr noundef nonnull %5) #4
  br label %893

893:                                              ; preds = %._crit_edge1007, %884
  %894 = load i64, ptr %12, align 8, !tbaa !5
  %895 = add nsw i64 %857, %894
  br label %855, !llvm.loop !20

896:                                              ; preds = %860, %861
  %897 = load i64, ptr %19, align 8, !tbaa !5
  %898 = add nsw i64 %897, -1
  br label %899

899:                                              ; preds = %909, %896
  %900 = phi i64 [ %910, %909 ], [ %898, %896 ]
  %901 = getelementptr inbounds i64, ptr %27, i64 %900
  %902 = load i64, ptr %901, align 8, !tbaa !5
  %.lobit1061 = ashr i64 %902, 63
  %903 = add nsw i64 %900, %.lobit1061
  %.1840 = call i64 @llvm.abs.i64(i64 %902, i1 true)
  %904 = add nsw i64 %903, -1
  store i64 %904, ptr %18, align 8, !tbaa !5
  %905 = icmp ne i64 %.1840, %900
  %906 = icmp sgt i64 %903, 1
  %or.cond4 = select i1 %905, i1 %906, i1 false
  br i1 %or.cond4, label %907, label %909

907:                                              ; preds = %899
  %gep1011 = getelementptr %struct.doublecomplex, ptr %invariant.gep975, i64 %.1840
  %gep1013 = getelementptr %struct.doublecomplex, ptr %invariant.gep975, i64 %900
  %908 = call i32 @f2c_zswap(ptr noundef nonnull %18, ptr noundef %gep1011, ptr noundef nonnull %5, ptr noundef %gep1013, ptr noundef nonnull %5) #4
  %.pr = load i64, ptr %18, align 8, !tbaa !5
  br label %909

909:                                              ; preds = %907, %899
  %910 = phi i64 [ %.pr, %907 ], [ %904, %899 ]
  %911 = icmp sgt i64 %910, 0
  br i1 %911, label %899, label %912

912:                                              ; preds = %909
  %913 = load i64, ptr %19, align 8, !tbaa !5
  %914 = add nsw i64 %913, -1
  br label %915

915:                                              ; preds = %912, %450
  %storemerge885 = phi i64 [ %914, %912 ], [ %452, %450 ]
  store i64 %storemerge885, ptr %3, align 8, !tbaa !5
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %23) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %22) #4
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %21) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %20) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %19) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %18) #4
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %17) #4
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %16) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %15) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %14) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %13) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %12) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %11) #4
  ret i32 0
}

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

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

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

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

declare i64 @f2c_izamax(ptr noundef, ptr noundef, ptr noundef) local_unnamed_addr #2

declare double @d_imag(ptr noundef) local_unnamed_addr #2

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

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

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

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

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

declare i32 @f2c_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 i64 @llvm.smin.i64(i64, i64) #3

; Function Attrs: nocallback nofree nosync nounwind speculatable willreturn memory(none)
declare i64 @llvm.abs.i64(i64, i1 immarg) #3

; 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>) #3

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 = { nocallback nofree nosync nounwind speculatable willreturn memory(none) }
attributes #4 = { nounwind }

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

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


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