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

88:                                               ; preds = %10
  %89 = load ptr, ptr %12, align 8, !tbaa !5
  %90 = load i32, ptr %89, align 4, !tbaa !9
  store i32 %90, ptr %41, align 4, !tbaa !9
  br label %91

91:                                               ; preds = %1418, %88
  %92 = load ptr, ptr %13, align 8, !tbaa !5
  %93 = load i32, ptr %92, align 4, !tbaa !9
  %94 = load i32, ptr %41, align 4, !tbaa !9
  %95 = add nsw i32 %93, %94
  %96 = load ptr, ptr %12, align 8, !tbaa !5
  %97 = load i32, ptr %96, align 4, !tbaa !9
  %98 = sub nsw i32 %95, %97
  store i32 %98, ptr %55, align 4, !tbaa !9
  %99 = load i32, ptr %41, align 4, !tbaa !9
  %100 = load ptr, ptr %12, align 8, !tbaa !5
  %101 = load i32, ptr %100, align 4, !tbaa !9
  %102 = load ptr, ptr %13, align 8, !tbaa !5
  %103 = load i32, ptr %102, align 4, !tbaa !9
  %104 = sub nsw i32 %101, %103
  %105 = add nsw i32 %104, 1
  %106 = icmp sle i32 %99, %105
  br i1 %106, label %107, label %113

107:                                              ; preds = %91
  %108 = load ptr, ptr %13, align 8, !tbaa !5
  %109 = load i32, ptr %108, align 4, !tbaa !9
  %110 = load ptr, ptr %12, align 8, !tbaa !5
  %111 = load i32, ptr %110, align 4, !tbaa !9
  %112 = icmp slt i32 %109, %111
  br i1 %112, label %116, label %113

113:                                              ; preds = %107, %91
  %114 = load i32, ptr %41, align 4, !tbaa !9
  %115 = icmp slt i32 %114, 1
  br i1 %115, label %116, label %117

116:                                              ; preds = %113, %107
  br label %1422

117:                                              ; preds = %113
  store i32 1, ptr %44, align 4, !tbaa !9
  %118 = load i32, ptr %41, align 4, !tbaa !9
  %119 = sub nsw i32 %118, 1
  store i32 %119, ptr %25, align 4, !tbaa !9
  %120 = load ptr, ptr %15, align 8, !tbaa !5
  %121 = load i32, ptr %41, align 4, !tbaa !9
  %122 = load i32, ptr %21, align 4, !tbaa !9
  %123 = mul nsw i32 %121, %122
  %124 = add nsw i32 %123, 1
  %125 = sext i32 %124 to i64
  %126 = getelementptr inbounds %struct.doublecomplex, ptr %120, i64 %125
  %127 = load ptr, ptr %18, align 8, !tbaa !5
  %128 = load i32, ptr %55, align 4, !tbaa !9
  %129 = load i32, ptr %23, align 4, !tbaa !9
  %130 = mul nsw i32 %128, %129
  %131 = add nsw i32 %130, 1
  %132 = sext i32 %131 to i64
  %133 = getelementptr inbounds %struct.doublecomplex, ptr %127, i64 %132
  call void @zcopy_(ptr noundef %25, ptr noundef %126, ptr noundef @c__1, ptr noundef %133, ptr noundef @c__1)
  %134 = load i32, ptr %41, align 4, !tbaa !9
  %135 = load i32, ptr %55, align 4, !tbaa !9
  %136 = load i32, ptr %23, align 4, !tbaa !9
  %137 = mul nsw i32 %135, %136
  %138 = add nsw i32 %134, %137
  store i32 %138, ptr %25, align 4, !tbaa !9
  %139 = load i32, ptr %41, align 4, !tbaa !9
  %140 = load i32, ptr %41, align 4, !tbaa !9
  %141 = load i32, ptr %21, align 4, !tbaa !9
  %142 = mul nsw i32 %140, %141
  %143 = add nsw i32 %139, %142
  store i32 %143, ptr %26, align 4, !tbaa !9
  %144 = load ptr, ptr %15, align 8, !tbaa !5
  %145 = load i32, ptr %26, align 4, !tbaa !9
  %146 = sext i32 %145 to i64
  %147 = getelementptr inbounds %struct.doublecomplex, ptr %144, i64 %146
  %148 = getelementptr inbounds %struct.doublecomplex, ptr %147, i32 0, i32 0
  %149 = load double, ptr %148, align 8, !tbaa !13
  store double %149, ptr %30, align 8, !tbaa !11
  %150 = load double, ptr %30, align 8, !tbaa !11
  %151 = load ptr, ptr %18, align 8, !tbaa !5
  %152 = load i32, ptr %25, align 4, !tbaa !9
  %153 = sext i32 %152 to i64
  %154 = getelementptr inbounds %struct.doublecomplex, ptr %151, i64 %153
  %155 = getelementptr inbounds %struct.doublecomplex, ptr %154, i32 0, i32 0
  store double %150, ptr %155, align 8, !tbaa !13
  %156 = load ptr, ptr %18, align 8, !tbaa !5
  %157 = load i32, ptr %25, align 4, !tbaa !9
  %158 = sext i32 %157 to i64
  %159 = getelementptr inbounds %struct.doublecomplex, ptr %156, i64 %158
  %160 = getelementptr inbounds %struct.doublecomplex, ptr %159, i32 0, i32 1
  store double 0.000000e+00, ptr %160, align 8, !tbaa !15
  %161 = load i32, ptr %41, align 4, !tbaa !9
  %162 = load ptr, ptr %12, align 8, !tbaa !5
  %163 = load i32, ptr %162, align 4, !tbaa !9
  %164 = icmp slt i32 %161, %163
  br i1 %164, label %165, label %225

165:                                              ; preds = %117
  %166 = load ptr, ptr %12, align 8, !tbaa !5
  %167 = load i32, ptr %166, align 4, !tbaa !9
  %168 = load i32, ptr %41, align 4, !tbaa !9
  %169 = sub nsw i32 %167, %168
  store i32 %169, ptr %25, align 4, !tbaa !9
  %170 = getelementptr inbounds %struct.doublecomplex, ptr %34, i32 0, i32 0
  store double -1.000000e+00, ptr %170, align 8, !tbaa !13
  %171 = getelementptr inbounds %struct.doublecomplex, ptr %34, i32 0, i32 1
  store double 0.000000e+00, ptr %171, align 8, !tbaa !15
  %172 = load ptr, ptr %15, align 8, !tbaa !5
  %173 = load i32, ptr %41, align 4, !tbaa !9
  %174 = add nsw i32 %173, 1
  %175 = load i32, ptr %21, align 4, !tbaa !9
  %176 = mul nsw i32 %174, %175
  %177 = add nsw i32 %176, 1
  %178 = sext i32 %177 to i64
  %179 = getelementptr inbounds %struct.doublecomplex, ptr %172, i64 %178
  %180 = load ptr, ptr %16, align 8, !tbaa !5
  %181 = load ptr, ptr %18, align 8, !tbaa !5
  %182 = load i32, ptr %41, align 4, !tbaa !9
  %183 = load i32, ptr %55, align 4, !tbaa !9
  %184 = add nsw i32 %183, 1
  %185 = load i32, ptr %23, align 4, !tbaa !9
  %186 = mul nsw i32 %184, %185
  %187 = add nsw i32 %182, %186
  %188 = sext i32 %187 to i64
  %189 = getelementptr inbounds %struct.doublecomplex, ptr %181, i64 %188
  %190 = load ptr, ptr %19, align 8, !tbaa !5
  %191 = load ptr, ptr %18, align 8, !tbaa !5
  %192 = load i32, ptr %55, align 4, !tbaa !9
  %193 = load i32, ptr %23, align 4, !tbaa !9
  %194 = mul nsw i32 %192, %193
  %195 = add nsw i32 %194, 1
  %196 = sext i32 %195 to i64
  %197 = getelementptr inbounds %struct.doublecomplex, ptr %191, i64 %196
  call void @zgemv_(ptr noundef @.str.1, ptr noundef %41, ptr noundef %25, ptr noundef %34, ptr noundef %179, ptr noundef %180, ptr noundef %189, ptr noundef %190, ptr noundef @c_b1, ptr noundef %197, ptr noundef @c__1)
  %198 = load i32, ptr %41, align 4, !tbaa !9
  %199 = load i32, ptr %55, align 4, !tbaa !9
  %200 = load i32, ptr %23, align 4, !tbaa !9
  %201 = mul nsw i32 %199, %200
  %202 = add nsw i32 %198, %201
  store i32 %202, ptr %25, align 4, !tbaa !9
  %203 = load i32, ptr %41, align 4, !tbaa !9
  %204 = load i32, ptr %55, align 4, !tbaa !9
  %205 = load i32, ptr %23, align 4, !tbaa !9
  %206 = mul nsw i32 %204, %205
  %207 = add nsw i32 %203, %206
  store i32 %207, ptr %26, align 4, !tbaa !9
  %208 = load ptr, ptr %18, align 8, !tbaa !5
  %209 = load i32, ptr %26, align 4, !tbaa !9
  %210 = sext i32 %209 to i64
  %211 = getelementptr inbounds %struct.doublecomplex, ptr %208, i64 %210
  %212 = getelementptr inbounds %struct.doublecomplex, ptr %211, i32 0, i32 0
  %213 = load double, ptr %212, align 8, !tbaa !13
  store double %213, ptr %30, align 8, !tbaa !11
  %214 = load double, ptr %30, align 8, !tbaa !11
  %215 = load ptr, ptr %18, align 8, !tbaa !5
  %216 = load i32, ptr %25, align 4, !tbaa !9
  %217 = sext i32 %216 to i64
  %218 = getelementptr inbounds %struct.doublecomplex, ptr %215, i64 %217
  %219 = getelementptr inbounds %struct.doublecomplex, ptr %218, i32 0, i32 0
  store double %214, ptr %219, align 8, !tbaa !13
  %220 = load ptr, ptr %18, align 8, !tbaa !5
  %221 = load i32, ptr %25, align 4, !tbaa !9
  %222 = sext i32 %221 to i64
  %223 = getelementptr inbounds %struct.doublecomplex, ptr %220, i64 %222
  %224 = getelementptr inbounds %struct.doublecomplex, ptr %223, i32 0, i32 1
  store double 0.000000e+00, ptr %224, align 8, !tbaa !15
  br label %225

225:                                              ; preds = %165, %117
  %226 = load i32, ptr %41, align 4, !tbaa !9
  %227 = load i32, ptr %55, align 4, !tbaa !9
  %228 = load i32, ptr %23, align 4, !tbaa !9
  %229 = mul nsw i32 %227, %228
  %230 = add nsw i32 %226, %229
  store i32 %230, ptr %25, align 4, !tbaa !9
  %231 = load ptr, ptr %18, align 8, !tbaa !5
  %232 = load i32, ptr %25, align 4, !tbaa !9
  %233 = sext i32 %232 to i64
  %234 = getelementptr inbounds %struct.doublecomplex, ptr %231, i64 %233
  %235 = getelementptr inbounds %struct.doublecomplex, ptr %234, i32 0, i32 0
  %236 = load double, ptr %235, align 8, !tbaa !13
  store double %236, ptr %30, align 8, !tbaa !11
  %237 = load double, ptr %30, align 8, !tbaa !11
  %238 = fcmp oge double %237, 0.000000e+00
  br i1 %238, label %239, label %241

239:                                              ; preds = %225
  %240 = load double, ptr %30, align 8, !tbaa !11
  br label %244

241:                                              ; preds = %225
  %242 = load double, ptr %30, align 8, !tbaa !11
  %243 = fneg double %242
  br label %244

244:                                              ; preds = %241, %239
  %245 = phi double [ %240, %239 ], [ %243, %241 ]
  store double %245, ptr %54, align 8, !tbaa !11
  %246 = load i32, ptr %41, align 4, !tbaa !9
  %247 = icmp sgt i32 %246, 1
  br i1 %247, label %248, label %300

248:                                              ; preds = %244
  %249 = load i32, ptr %41, align 4, !tbaa !9
  %250 = sub nsw i32 %249, 1
  store i32 %250, ptr %25, align 4, !tbaa !9
  %251 = load ptr, ptr %18, align 8, !tbaa !5
  %252 = load i32, ptr %55, align 4, !tbaa !9
  %253 = load i32, ptr %23, align 4, !tbaa !9
  %254 = mul nsw i32 %252, %253
  %255 = add nsw i32 %254, 1
  %256 = sext i32 %255 to i64
  %257 = getelementptr inbounds %struct.doublecomplex, ptr %251, i64 %256
  %258 = call i32 @izamax_(ptr noundef %25, ptr noundef %257, ptr noundef @c__1)
  store i32 %258, ptr %38, align 4, !tbaa !9
  %259 = load i32, ptr %38, align 4, !tbaa !9
  %260 = load i32, ptr %55, align 4, !tbaa !9
  %261 = load i32, ptr %23, align 4, !tbaa !9
  %262 = mul nsw i32 %260, %261
  %263 = add nsw i32 %259, %262
  store i32 %263, ptr %25, align 4, !tbaa !9
  %264 = load ptr, ptr %18, align 8, !tbaa !5
  %265 = load i32, ptr %25, align 4, !tbaa !9
  %266 = sext i32 %265 to i64
  %267 = getelementptr inbounds %struct.doublecomplex, ptr %264, i64 %266
  %268 = getelementptr inbounds %struct.doublecomplex, ptr %267, i32 0, i32 0
  %269 = load double, ptr %268, align 8, !tbaa !13
  store double %269, ptr %30, align 8, !tbaa !11
  %270 = load double, ptr %30, align 8, !tbaa !11
  %271 = fcmp oge double %270, 0.000000e+00
  br i1 %271, label %272, label %274

272:                                              ; preds = %248
  %273 = load double, ptr %30, align 8, !tbaa !11
  br label %277

274:                                              ; preds = %248
  %275 = load double, ptr %30, align 8, !tbaa !11
  %276 = fneg double %275
  br label %277

277:                                              ; preds = %274, %272
  %278 = phi double [ %273, %272 ], [ %276, %274 ]
  %279 = load ptr, ptr %18, align 8, !tbaa !5
  %280 = load i32, ptr %38, align 4, !tbaa !9
  %281 = load i32, ptr %55, align 4, !tbaa !9
  %282 = load i32, ptr %23, align 4, !tbaa !9
  %283 = mul nsw i32 %281, %282
  %284 = add nsw i32 %280, %283
  %285 = sext i32 %284 to i64
  %286 = getelementptr inbounds %struct.doublecomplex, ptr %279, i64 %285
  %287 = call { double, double } @Cd(ptr noundef %286)
  %288 = extractvalue { double, double } %287, 0
  %289 = extractvalue { double, double } %287, 1
  store double %289, ptr %31, align 8, !tbaa !11
  %290 = load double, ptr %31, align 8, !tbaa !11
  %291 = fcmp oge double %290, 0.000000e+00
  br i1 %291, label %292, label %294

292:                                              ; preds = %277
  %293 = load double, ptr %31, align 8, !tbaa !11
  br label %297

294:                                              ; preds = %277
  %295 = load double, ptr %31, align 8, !tbaa !11
  %296 = fneg double %295
  br label %297

297:                                              ; preds = %294, %292
  %298 = phi double [ %293, %292 ], [ %296, %294 ]
  %299 = fadd double %278, %298
  store double %299, ptr %56, align 8, !tbaa !11
  br label %301

300:                                              ; preds = %244
  store double 0.000000e+00, ptr %56, align 8, !tbaa !11
  br label %301

301:                                              ; preds = %300, %297
  %302 = load double, ptr %54, align 8, !tbaa !11
  %303 = load double, ptr %56, align 8, !tbaa !11
  %304 = fcmp oge double %302, %303
  br i1 %304, label %305, label %307

305:                                              ; preds = %301
  %306 = load double, ptr %54, align 8, !tbaa !11
  br label %309

307:                                              ; preds = %301
  %308 = load double, ptr %56, align 8, !tbaa !11
  br label %309

309:                                              ; preds = %307, %305
  %310 = phi double [ %306, %305 ], [ %308, %307 ]
  %311 = fcmp oeq double %310, 0.000000e+00
  br i1 %311, label %312, label %348

312:                                              ; preds = %309
  %313 = load ptr, ptr %20, align 8, !tbaa !5
  %314 = load i32, ptr %313, align 4, !tbaa !9
  %315 = icmp eq i32 %314, 0
  br i1 %315, label %316, label %319

316:                                              ; preds = %312
  %317 = load i32, ptr %41, align 4, !tbaa !9
  %318 = load ptr, ptr %20, align 8, !tbaa !5
  store i32 %317, ptr %318, align 4, !tbaa !9
  br label %319

319:                                              ; preds = %316, %312
  %320 = load i32, ptr %41, align 4, !tbaa !9
  store i32 %320, ptr %53, align 4, !tbaa !9
  %321 = load i32, ptr %41, align 4, !tbaa !9
  %322 = load i32, ptr %41, align 4, !tbaa !9
  %323 = load i32, ptr %21, align 4, !tbaa !9
  %324 = mul nsw i32 %322, %323
  %325 = add nsw i32 %321, %324
  store i32 %325, ptr %25, align 4, !tbaa !9
  %326 = load i32, ptr %41, align 4, !tbaa !9
  %327 = load i32, ptr %41, align 4, !tbaa !9
  %328 = load i32, ptr %21, align 4, !tbaa !9
  %329 = mul nsw i32 %327, %328
  %330 = add nsw i32 %326, %329
  store i32 %330, ptr %26, align 4, !tbaa !9
  %331 = load ptr, ptr %15, align 8, !tbaa !5
  %332 = load i32, ptr %26, align 4, !tbaa !9
  %333 = sext i32 %332 to i64
  %334 = getelementptr inbounds %struct.doublecomplex, ptr %331, i64 %333
  %335 = getelementptr inbounds %struct.doublecomplex, ptr %334, i32 0, i32 0
  %336 = load double, ptr %335, align 8, !tbaa !13
  store double %336, ptr %30, align 8, !tbaa !11
  %337 = load double, ptr %30, align 8, !tbaa !11
  %338 = load ptr, ptr %15, align 8, !tbaa !5
  %339 = load i32, ptr %25, align 4, !tbaa !9
  %340 = sext i32 %339 to i64
  %341 = getelementptr inbounds %struct.doublecomplex, ptr %338, i64 %340
  %342 = getelementptr inbounds %struct.doublecomplex, ptr %341, i32 0, i32 0
  store double %337, ptr %342, align 8, !tbaa !13
  %343 = load ptr, ptr %15, align 8, !tbaa !5
  %344 = load i32, ptr %25, align 4, !tbaa !9
  %345 = sext i32 %344 to i64
  %346 = getelementptr inbounds %struct.doublecomplex, ptr %343, i64 %345
  %347 = getelementptr inbounds %struct.doublecomplex, ptr %346, i32 0, i32 1
  store double 0.000000e+00, ptr %347, align 8, !tbaa !15
  br label %1395

348:                                              ; preds = %309
  %349 = load double, ptr %54, align 8, !tbaa !11
  %350 = load double, ptr %43, align 8, !tbaa !11
  %351 = load double, ptr %56, align 8, !tbaa !11
  %352 = fmul double %350, %351
  %353 = fcmp oge double %349, %352
  br i1 %353, label %354, label %356

354:                                              ; preds = %348
  %355 = load i32, ptr %41, align 4, !tbaa !9
  store i32 %355, ptr %53, align 4, !tbaa !9
  br label %691

356:                                              ; preds = %348
  %357 = load i32, ptr %38, align 4, !tbaa !9
  %358 = sub nsw i32 %357, 1
  store i32 %358, ptr %25, align 4, !tbaa !9
  %359 = load ptr, ptr %15, align 8, !tbaa !5
  %360 = load i32, ptr %38, align 4, !tbaa !9
  %361 = load i32, ptr %21, align 4, !tbaa !9
  %362 = mul nsw i32 %360, %361
  %363 = add nsw i32 %362, 1
  %364 = sext i32 %363 to i64
  %365 = getelementptr inbounds %struct.doublecomplex, ptr %359, i64 %364
  %366 = load ptr, ptr %18, align 8, !tbaa !5
  %367 = load i32, ptr %55, align 4, !tbaa !9
  %368 = sub nsw i32 %367, 1
  %369 = load i32, ptr %23, align 4, !tbaa !9
  %370 = mul nsw i32 %368, %369
  %371 = add nsw i32 %370, 1
  %372 = sext i32 %371 to i64
  %373 = getelementptr inbounds %struct.doublecomplex, ptr %366, i64 %372
  call void @zcopy_(ptr noundef %25, ptr noundef %365, ptr noundef @c__1, ptr noundef %373, ptr noundef @c__1)
  %374 = load i32, ptr %38, align 4, !tbaa !9
  %375 = load i32, ptr %55, align 4, !tbaa !9
  %376 = sub nsw i32 %375, 1
  %377 = load i32, ptr %23, align 4, !tbaa !9
  %378 = mul nsw i32 %376, %377
  %379 = add nsw i32 %374, %378
  store i32 %379, ptr %25, align 4, !tbaa !9
  %380 = load i32, ptr %38, align 4, !tbaa !9
  %381 = load i32, ptr %38, align 4, !tbaa !9
  %382 = load i32, ptr %21, align 4, !tbaa !9
  %383 = mul nsw i32 %381, %382
  %384 = add nsw i32 %380, %383
  store i32 %384, ptr %26, align 4, !tbaa !9
  %385 = load ptr, ptr %15, align 8, !tbaa !5
  %386 = load i32, ptr %26, align 4, !tbaa !9
  %387 = sext i32 %386 to i64
  %388 = getelementptr inbounds %struct.doublecomplex, ptr %385, i64 %387
  %389 = getelementptr inbounds %struct.doublecomplex, ptr %388, i32 0, i32 0
  %390 = load double, ptr %389, align 8, !tbaa !13
  store double %390, ptr %30, align 8, !tbaa !11
  %391 = load double, ptr %30, align 8, !tbaa !11
  %392 = load ptr, ptr %18, align 8, !tbaa !5
  %393 = load i32, ptr %25, align 4, !tbaa !9
  %394 = sext i32 %393 to i64
  %395 = getelementptr inbounds %struct.doublecomplex, ptr %392, i64 %394
  %396 = getelementptr inbounds %struct.doublecomplex, ptr %395, i32 0, i32 0
  store double %391, ptr %396, align 8, !tbaa !13
  %397 = load ptr, ptr %18, align 8, !tbaa !5
  %398 = load i32, ptr %25, align 4, !tbaa !9
  %399 = sext i32 %398 to i64
  %400 = getelementptr inbounds %struct.doublecomplex, ptr %397, i64 %399
  %401 = getelementptr inbounds %struct.doublecomplex, ptr %400, i32 0, i32 1
  store double 0.000000e+00, ptr %401, align 8, !tbaa !15
  %402 = load i32, ptr %41, align 4, !tbaa !9
  %403 = load i32, ptr %38, align 4, !tbaa !9
  %404 = sub nsw i32 %402, %403
  store i32 %404, ptr %25, align 4, !tbaa !9
  %405 = load ptr, ptr %15, align 8, !tbaa !5
  %406 = load i32, ptr %38, align 4, !tbaa !9
  %407 = load i32, ptr %38, align 4, !tbaa !9
  %408 = add nsw i32 %407, 1
  %409 = load i32, ptr %21, align 4, !tbaa !9
  %410 = mul nsw i32 %408, %409
  %411 = add nsw i32 %406, %410
  %412 = sext i32 %411 to i64
  %413 = getelementptr inbounds %struct.doublecomplex, ptr %405, i64 %412
  %414 = load ptr, ptr %16, align 8, !tbaa !5
  %415 = load ptr, ptr %18, align 8, !tbaa !5
  %416 = load i32, ptr %38, align 4, !tbaa !9
  %417 = add nsw i32 %416, 1
  %418 = load i32, ptr %55, align 4, !tbaa !9
  %419 = sub nsw i32 %418, 1
  %420 = load i32, ptr %23, align 4, !tbaa !9
  %421 = mul nsw i32 %419, %420
  %422 = add nsw i32 %417, %421
  %423 = sext i32 %422 to i64
  %424 = getelementptr inbounds %struct.doublecomplex, ptr %415, i64 %423
  call void @zcopy_(ptr noundef %25, ptr noundef %413, ptr noundef %414, ptr noundef %424, ptr noundef @c__1)
  %425 = load i32, ptr %41, align 4, !tbaa !9
  %426 = load i32, ptr %38, align 4, !tbaa !9
  %427 = sub nsw i32 %425, %426
  store i32 %427, ptr %25, align 4, !tbaa !9
  %428 = load ptr, ptr %18, align 8, !tbaa !5
  %429 = load i32, ptr %38, align 4, !tbaa !9
  %430 = add nsw i32 %429, 1
  %431 = load i32, ptr %55, align 4, !tbaa !9
  %432 = sub nsw i32 %431, 1
  %433 = load i32, ptr %23, align 4, !tbaa !9
  %434 = mul nsw i32 %432, %433
  %435 = add nsw i32 %430, %434
  %436 = sext i32 %435 to i64
  %437 = getelementptr inbounds %struct.doublecomplex, ptr %428, i64 %436
  call void @zlacgv_(ptr noundef %25, ptr noundef %437, ptr noundef @c__1)
  %438 = load i32, ptr %41, align 4, !tbaa !9
  %439 = load ptr, ptr %12, align 8, !tbaa !5
  %440 = load i32, ptr %439, align 4, !tbaa !9
  %441 = icmp slt i32 %438, %440
  br i1 %441, label %442, label %505

442:                                              ; preds = %356
  %443 = load ptr, ptr %12, align 8, !tbaa !5
  %444 = load i32, ptr %443, align 4, !tbaa !9
  %445 = load i32, ptr %41, align 4, !tbaa !9
  %446 = sub nsw i32 %444, %445
  store i32 %446, ptr %25, align 4, !tbaa !9
  %447 = getelementptr inbounds %struct.doublecomplex, ptr %34, i32 0, i32 0
  store double -1.000000e+00, ptr %447, align 8, !tbaa !13
  %448 = getelementptr inbounds %struct.doublecomplex, ptr %34, i32 0, i32 1
  store double 0.000000e+00, ptr %448, align 8, !tbaa !15
  %449 = load ptr, ptr %15, align 8, !tbaa !5
  %450 = load i32, ptr %41, align 4, !tbaa !9
  %451 = add nsw i32 %450, 1
  %452 = load i32, ptr %21, align 4, !tbaa !9
  %453 = mul nsw i32 %451, %452
  %454 = add nsw i32 %453, 1
  %455 = sext i32 %454 to i64
  %456 = getelementptr inbounds %struct.doublecomplex, ptr %449, i64 %455
  %457 = load ptr, ptr %16, align 8, !tbaa !5
  %458 = load ptr, ptr %18, align 8, !tbaa !5
  %459 = load i32, ptr %38, align 4, !tbaa !9
  %460 = load i32, ptr %55, align 4, !tbaa !9
  %461 = add nsw i32 %460, 1
  %462 = load i32, ptr %23, align 4, !tbaa !9
  %463 = mul nsw i32 %461, %462
  %464 = add nsw i32 %459, %463
  %465 = sext i32 %464 to i64
  %466 = getelementptr inbounds %struct.doublecomplex, ptr %458, i64 %465
  %467 = load ptr, ptr %19, align 8, !tbaa !5
  %468 = load ptr, ptr %18, align 8, !tbaa !5
  %469 = load i32, ptr %55, align 4, !tbaa !9
  %470 = sub nsw i32 %469, 1
  %471 = load i32, ptr %23, align 4, !tbaa !9
  %472 = mul nsw i32 %470, %471
  %473 = add nsw i32 %472, 1
  %474 = sext i32 %473 to i64
  %475 = getelementptr inbounds %struct.doublecomplex, ptr %468, i64 %474
  call void @zgemv_(ptr noundef @.str.1, ptr noundef %41, ptr noundef %25, ptr noundef %34, ptr noundef %456, ptr noundef %457, ptr noundef %466, ptr noundef %467, ptr noundef @c_b1, ptr noundef %475, ptr noundef @c__1)
  %476 = load i32, ptr %38, align 4, !tbaa !9
  %477 = load i32, ptr %55, align 4, !tbaa !9
  %478 = sub nsw i32 %477, 1
  %479 = load i32, ptr %23, align 4, !tbaa !9
  %480 = mul nsw i32 %478, %479
  %481 = add nsw i32 %476, %480
  store i32 %481, ptr %25, align 4, !tbaa !9
  %482 = load i32, ptr %38, align 4, !tbaa !9
  %483 = load i32, ptr %55, align 4, !tbaa !9
  %484 = sub nsw i32 %483, 1
  %485 = load i32, ptr %23, align 4, !tbaa !9
  %486 = mul nsw i32 %484, %485
  %487 = add nsw i32 %482, %486
  store i32 %487, ptr %26, align 4, !tbaa !9
  %488 = load ptr, ptr %18, align 8, !tbaa !5
  %489 = load i32, ptr %26, align 4, !tbaa !9
  %490 = sext i32 %489 to i64
  %491 = getelementptr inbounds %struct.doublecomplex, ptr %488, i64 %490
  %492 = getelementptr inbounds %struct.doublecomplex, ptr %491, i32 0, i32 0
  %493 = load double, ptr %492, align 8, !tbaa !13
  store double %493, ptr %30, align 8, !tbaa !11
  %494 = load double, ptr %30, align 8, !tbaa !11
  %495 = load ptr, ptr %18, align 8, !tbaa !5
  %496 = load i32, ptr %25, align 4, !tbaa !9
  %497 = sext i32 %496 to i64
  %498 = getelementptr inbounds %struct.doublecomplex, ptr %495, i64 %497
  %499 = getelementptr inbounds %struct.doublecomplex, ptr %498, i32 0, i32 0
  store double %494, ptr %499, align 8, !tbaa !13
  %500 = load ptr, ptr %18, align 8, !tbaa !5
  %501 = load i32, ptr %25, align 4, !tbaa !9
  %502 = sext i32 %501 to i64
  %503 = getelementptr inbounds %struct.doublecomplex, ptr %500, i64 %502
  %504 = getelementptr inbounds %struct.doublecomplex, ptr %503, i32 0, i32 1
  store double 0.000000e+00, ptr %504, align 8, !tbaa !15
  br label %505

505:                                              ; preds = %442, %356
  %506 = load i32, ptr %41, align 4, !tbaa !9
  %507 = load i32, ptr %38, align 4, !tbaa !9
  %508 = sub nsw i32 %506, %507
  store i32 %508, ptr %25, align 4, !tbaa !9
  %509 = load i32, ptr %38, align 4, !tbaa !9
  %510 = load ptr, ptr %18, align 8, !tbaa !5
  %511 = load i32, ptr %38, align 4, !tbaa !9
  %512 = add nsw i32 %511, 1
  %513 = load i32, ptr %55, align 4, !tbaa !9
  %514 = sub nsw i32 %513, 1
  %515 = load i32, ptr %23, align 4, !tbaa !9
  %516 = mul nsw i32 %514, %515
  %517 = add nsw i32 %512, %516
  %518 = sext i32 %517 to i64
  %519 = getelementptr inbounds %struct.doublecomplex, ptr %510, i64 %518
  %520 = call i32 @izamax_(ptr noundef %25, ptr noundef %519, ptr noundef @c__1)
  %521 = add nsw i32 %509, %520
  store i32 %521, ptr %39, align 4, !tbaa !9
  %522 = load i32, ptr %39, align 4, !tbaa !9
  %523 = load i32, ptr %55, align 4, !tbaa !9
  %524 = sub nsw i32 %523, 1
  %525 = load i32, ptr %23, align 4, !tbaa !9
  %526 = mul nsw i32 %524, %525
  %527 = add nsw i32 %522, %526
  store i32 %527, ptr %25, align 4, !tbaa !9
  %528 = load ptr, ptr %18, align 8, !tbaa !5
  %529 = load i32, ptr %25, align 4, !tbaa !9
  %530 = sext i32 %529 to i64
  %531 = getelementptr inbounds %struct.doublecomplex, ptr %528, i64 %530
  %532 = getelementptr inbounds %struct.doublecomplex, ptr %531, i32 0, i32 0
  %533 = load double, ptr %532, align 8, !tbaa !13
  store double %533, ptr %30, align 8, !tbaa !11
  %534 = load double, ptr %30, align 8, !tbaa !11
  %535 = fcmp oge double %534, 0.000000e+00
  br i1 %535, label %536, label %538

536:                                              ; preds = %505
  %537 = load double, ptr %30, align 8, !tbaa !11
  br label %541

538:                                              ; preds = %505
  %539 = load double, ptr %30, align 8, !tbaa !11
  %540 = fneg double %539
  br label %541

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

557:                                              ; preds = %541
  %558 = load double, ptr %31, align 8, !tbaa !11
  br label %562

559:                                              ; preds = %541
  %560 = load double, ptr %31, align 8, !tbaa !11
  %561 = fneg double %560
  br label %562

562:                                              ; preds = %559, %557
  %563 = phi double [ %558, %557 ], [ %561, %559 ]
  %564 = fadd double %542, %563
  store double %564, ptr %57, align 8, !tbaa !11
  %565 = load i32, ptr %38, align 4, !tbaa !9
  %566 = icmp sgt i32 %565, 1
  br i1 %566, label %567, label %632

567:                                              ; preds = %562
  %568 = load i32, ptr %38, align 4, !tbaa !9
  %569 = sub nsw i32 %568, 1
  store i32 %569, ptr %25, align 4, !tbaa !9
  %570 = load ptr, ptr %18, align 8, !tbaa !5
  %571 = load i32, ptr %55, align 4, !tbaa !9
  %572 = sub nsw i32 %571, 1
  %573 = load i32, ptr %23, align 4, !tbaa !9
  %574 = mul nsw i32 %572, %573
  %575 = add nsw i32 %574, 1
  %576 = sext i32 %575 to i64
  %577 = getelementptr inbounds %struct.doublecomplex, ptr %570, i64 %576
  %578 = call i32 @izamax_(ptr noundef %25, ptr noundef %577, ptr noundef @c__1)
  store i32 %578, ptr %39, align 4, !tbaa !9
  %579 = load i32, ptr %39, align 4, !tbaa !9
  %580 = load i32, ptr %55, align 4, !tbaa !9
  %581 = sub nsw i32 %580, 1
  %582 = load i32, ptr %23, align 4, !tbaa !9
  %583 = mul nsw i32 %581, %582
  %584 = add nsw i32 %579, %583
  store i32 %584, ptr %25, align 4, !tbaa !9
  %585 = load double, ptr %57, align 8, !tbaa !11
  store double %585, ptr %32, align 8, !tbaa !11
  %586 = load ptr, ptr %18, align 8, !tbaa !5
  %587 = load i32, ptr %25, align 4, !tbaa !9
  %588 = sext i32 %587 to i64
  %589 = getelementptr inbounds %struct.doublecomplex, ptr %586, i64 %588
  %590 = getelementptr inbounds %struct.doublecomplex, ptr %589, i32 0, i32 0
  %591 = load double, ptr %590, align 8, !tbaa !13
  store double %591, ptr %30, align 8, !tbaa !11
  %592 = load double, ptr %30, align 8, !tbaa !11
  %593 = fcmp oge double %592, 0.000000e+00
  br i1 %593, label %594, label %596

594:                                              ; preds = %567
  %595 = load double, ptr %30, align 8, !tbaa !11
  br label %599

596:                                              ; preds = %567
  %597 = load double, ptr %30, align 8, !tbaa !11
  %598 = fneg double %597
  br label %599

599:                                              ; preds = %596, %594
  %600 = phi double [ %595, %594 ], [ %598, %596 ]
  %601 = load ptr, ptr %18, align 8, !tbaa !5
  %602 = load i32, ptr %39, align 4, !tbaa !9
  %603 = load i32, ptr %55, align 4, !tbaa !9
  %604 = sub nsw i32 %603, 1
  %605 = load i32, ptr %23, align 4, !tbaa !9
  %606 = mul nsw i32 %604, %605
  %607 = add nsw i32 %602, %606
  %608 = sext i32 %607 to i64
  %609 = getelementptr inbounds %struct.doublecomplex, ptr %601, i64 %608
  %610 = call { double, double } @Cd(ptr noundef %609)
  %611 = extractvalue { double, double } %610, 0
  %612 = extractvalue { double, double } %610, 1
  store double %612, ptr %31, align 8, !tbaa !11
  %613 = load double, ptr %31, align 8, !tbaa !11
  %614 = fcmp oge double %613, 0.000000e+00
  br i1 %614, label %615, label %617

615:                                              ; preds = %599
  %616 = load double, ptr %31, align 8, !tbaa !11
  br label %620

617:                                              ; preds = %599
  %618 = load double, ptr %31, align 8, !tbaa !11
  %619 = fneg double %618
  br label %620

620:                                              ; preds = %617, %615
  %621 = phi double [ %616, %615 ], [ %619, %617 ]
  %622 = fadd double %600, %621
  store double %622, ptr %33, align 8, !tbaa !11
  %623 = load double, ptr %32, align 8, !tbaa !11
  %624 = load double, ptr %33, align 8, !tbaa !11
  %625 = fcmp oge double %623, %624
  br i1 %625, label %626, label %628

626:                                              ; preds = %620
  %627 = load double, ptr %32, align 8, !tbaa !11
  br label %630

628:                                              ; preds = %620
  %629 = load double, ptr %33, align 8, !tbaa !11
  br label %630

630:                                              ; preds = %628, %626
  %631 = phi double [ %627, %626 ], [ %629, %628 ]
  store double %631, ptr %57, align 8, !tbaa !11
  br label %632

632:                                              ; preds = %630, %562
  %633 = load double, ptr %54, align 8, !tbaa !11
  %634 = load double, ptr %43, align 8, !tbaa !11
  %635 = load double, ptr %56, align 8, !tbaa !11
  %636 = fmul double %634, %635
  %637 = load double, ptr %56, align 8, !tbaa !11
  %638 = load double, ptr %57, align 8, !tbaa !11
  %639 = fdiv double %637, %638
  %640 = fmul double %636, %639
  %641 = fcmp oge double %633, %640
  br i1 %641, label %642, label %644

642:                                              ; preds = %632
  %643 = load i32, ptr %41, align 4, !tbaa !9
  store i32 %643, ptr %53, align 4, !tbaa !9
  br label %690

644:                                              ; preds = %632
  %645 = load i32, ptr %38, align 4, !tbaa !9
  %646 = load i32, ptr %55, align 4, !tbaa !9
  %647 = sub nsw i32 %646, 1
  %648 = load i32, ptr %23, align 4, !tbaa !9
  %649 = mul nsw i32 %647, %648
  %650 = add nsw i32 %645, %649
  store i32 %650, ptr %25, align 4, !tbaa !9
  %651 = load ptr, ptr %18, align 8, !tbaa !5
  %652 = load i32, ptr %25, align 4, !tbaa !9
  %653 = sext i32 %652 to i64
  %654 = getelementptr inbounds %struct.doublecomplex, ptr %651, i64 %653
  %655 = getelementptr inbounds %struct.doublecomplex, ptr %654, i32 0, i32 0
  %656 = load double, ptr %655, align 8, !tbaa !13
  store double %656, ptr %30, align 8, !tbaa !11
  %657 = load double, ptr %30, align 8, !tbaa !11
  %658 = fcmp oge double %657, 0.000000e+00
  br i1 %658, label %659, label %661

659:                                              ; preds = %644
  %660 = load double, ptr %30, align 8, !tbaa !11
  br label %664

661:                                              ; preds = %644
  %662 = load double, ptr %30, align 8, !tbaa !11
  %663 = fneg double %662
  br label %664

664:                                              ; preds = %661, %659
  %665 = phi double [ %660, %659 ], [ %663, %661 ]
  %666 = load double, ptr %43, align 8, !tbaa !11
  %667 = load double, ptr %57, align 8, !tbaa !11
  %668 = fmul double %666, %667
  %669 = fcmp oge double %665, %668
  br i1 %669, label %670, label %687

670:                                              ; preds = %664
  %671 = load i32, ptr %38, align 4, !tbaa !9
  store i32 %671, ptr %53, align 4, !tbaa !9
  %672 = load ptr, ptr %18, align 8, !tbaa !5
  %673 = load i32, ptr %55, align 4, !tbaa !9
  %674 = sub nsw i32 %673, 1
  %675 = load i32, ptr %23, align 4, !tbaa !9
  %676 = mul nsw i32 %674, %675
  %677 = add nsw i32 %676, 1
  %678 = sext i32 %677 to i64
  %679 = getelementptr inbounds %struct.doublecomplex, ptr %672, i64 %678
  %680 = load ptr, ptr %18, align 8, !tbaa !5
  %681 = load i32, ptr %55, align 4, !tbaa !9
  %682 = load i32, ptr %23, align 4, !tbaa !9
  %683 = mul nsw i32 %681, %682
  %684 = add nsw i32 %683, 1
  %685 = sext i32 %684 to i64
  %686 = getelementptr inbounds %struct.doublecomplex, ptr %680, i64 %685
  call void @zcopy_(ptr noundef %41, ptr noundef %679, ptr noundef @c__1, ptr noundef %686, ptr noundef @c__1)
  br label %689

687:                                              ; preds = %664
  %688 = load i32, ptr %38, align 4, !tbaa !9
  store i32 %688, ptr %53, align 4, !tbaa !9
  store i32 2, ptr %44, align 4, !tbaa !9
  br label %689

689:                                              ; preds = %687, %670
  br label %690

690:                                              ; preds = %689, %642
  br label %691

691:                                              ; preds = %690, %354
  %692 = load i32, ptr %41, align 4, !tbaa !9
  %693 = load i32, ptr %44, align 4, !tbaa !9
  %694 = sub nsw i32 %692, %693
  %695 = add nsw i32 %694, 1
  store i32 %695, ptr %51, align 4, !tbaa !9
  %696 = load ptr, ptr %13, align 8, !tbaa !5
  %697 = load i32, ptr %696, align 4, !tbaa !9
  %698 = load i32, ptr %51, align 4, !tbaa !9
  %699 = add nsw i32 %697, %698
  %700 = load ptr, ptr %12, align 8, !tbaa !5
  %701 = load i32, ptr %700, align 4, !tbaa !9
  %702 = sub nsw i32 %699, %701
  store i32 %702, ptr %58, align 4, !tbaa !9
  %703 = load i32, ptr %53, align 4, !tbaa !9
  %704 = load i32, ptr %51, align 4, !tbaa !9
  %705 = icmp ne i32 %703, %704
  br i1 %705, label %706, label %844

706:                                              ; preds = %691
  %707 = load i32, ptr %53, align 4, !tbaa !9
  %708 = load i32, ptr %53, align 4, !tbaa !9
  %709 = load i32, ptr %21, align 4, !tbaa !9
  %710 = mul nsw i32 %708, %709
  %711 = add nsw i32 %707, %710
  store i32 %711, ptr %25, align 4, !tbaa !9
  %712 = load i32, ptr %51, align 4, !tbaa !9
  %713 = load i32, ptr %51, align 4, !tbaa !9
  %714 = load i32, ptr %21, align 4, !tbaa !9
  %715 = mul nsw i32 %713, %714
  %716 = add nsw i32 %712, %715
  store i32 %716, ptr %26, align 4, !tbaa !9
  %717 = load ptr, ptr %15, align 8, !tbaa !5
  %718 = load i32, ptr %26, align 4, !tbaa !9
  %719 = sext i32 %718 to i64
  %720 = getelementptr inbounds %struct.doublecomplex, ptr %717, i64 %719
  %721 = getelementptr inbounds %struct.doublecomplex, ptr %720, i32 0, i32 0
  %722 = load double, ptr %721, align 8, !tbaa !13
  store double %722, ptr %30, align 8, !tbaa !11
  %723 = load double, ptr %30, align 8, !tbaa !11
  %724 = load ptr, ptr %15, align 8, !tbaa !5
  %725 = load i32, ptr %25, align 4, !tbaa !9
  %726 = sext i32 %725 to i64
  %727 = getelementptr inbounds %struct.doublecomplex, ptr %724, i64 %726
  %728 = getelementptr inbounds %struct.doublecomplex, ptr %727, i32 0, i32 0
  store double %723, ptr %728, align 8, !tbaa !13
  %729 = load ptr, ptr %15, align 8, !tbaa !5
  %730 = load i32, ptr %25, align 4, !tbaa !9
  %731 = sext i32 %730 to i64
  %732 = getelementptr inbounds %struct.doublecomplex, ptr %729, i64 %731
  %733 = getelementptr inbounds %struct.doublecomplex, ptr %732, i32 0, i32 1
  store double 0.000000e+00, ptr %733, align 8, !tbaa !15
  %734 = load i32, ptr %51, align 4, !tbaa !9
  %735 = sub nsw i32 %734, 1
  %736 = load i32, ptr %53, align 4, !tbaa !9
  %737 = sub nsw i32 %735, %736
  store i32 %737, ptr %25, align 4, !tbaa !9
  %738 = load ptr, ptr %15, align 8, !tbaa !5
  %739 = load i32, ptr %53, align 4, !tbaa !9
  %740 = add nsw i32 %739, 1
  %741 = load i32, ptr %51, align 4, !tbaa !9
  %742 = load i32, ptr %21, align 4, !tbaa !9
  %743 = mul nsw i32 %741, %742
  %744 = add nsw i32 %740, %743
  %745 = sext i32 %744 to i64
  %746 = getelementptr inbounds %struct.doublecomplex, ptr %738, i64 %745
  %747 = load ptr, ptr %15, align 8, !tbaa !5
  %748 = load i32, ptr %53, align 4, !tbaa !9
  %749 = load i32, ptr %53, align 4, !tbaa !9
  %750 = add nsw i32 %749, 1
  %751 = load i32, ptr %21, align 4, !tbaa !9
  %752 = mul nsw i32 %750, %751
  %753 = add nsw i32 %748, %752
  %754 = sext i32 %753 to i64
  %755 = getelementptr inbounds %struct.doublecomplex, ptr %747, i64 %754
  %756 = load ptr, ptr %16, align 8, !tbaa !5
  call void @zcopy_(ptr noundef %25, ptr noundef %746, ptr noundef @c__1, ptr noundef %755, ptr noundef %756)
  %757 = load i32, ptr %51, align 4, !tbaa !9
  %758 = sub nsw i32 %757, 1
  %759 = load i32, ptr %53, align 4, !tbaa !9
  %760 = sub nsw i32 %758, %759
  store i32 %760, ptr %25, align 4, !tbaa !9
  %761 = load ptr, ptr %15, align 8, !tbaa !5
  %762 = load i32, ptr %53, align 4, !tbaa !9
  %763 = load i32, ptr %53, align 4, !tbaa !9
  %764 = add nsw i32 %763, 1
  %765 = load i32, ptr %21, align 4, !tbaa !9
  %766 = mul nsw i32 %764, %765
  %767 = add nsw i32 %762, %766
  %768 = sext i32 %767 to i64
  %769 = getelementptr inbounds %struct.doublecomplex, ptr %761, i64 %768
  %770 = load ptr, ptr %16, align 8, !tbaa !5
  call void @zlacgv_(ptr noundef %25, ptr noundef %769, ptr noundef %770)
  %771 = load i32, ptr %53, align 4, !tbaa !9
  %772 = icmp sgt i32 %771, 1
  br i1 %772, label %773, label %790

773:                                              ; preds = %706
  %774 = load i32, ptr %53, align 4, !tbaa !9
  %775 = sub nsw i32 %774, 1
  store i32 %775, ptr %25, align 4, !tbaa !9
  %776 = load ptr, ptr %15, align 8, !tbaa !5
  %777 = load i32, ptr %51, align 4, !tbaa !9
  %778 = load i32, ptr %21, align 4, !tbaa !9
  %779 = mul nsw i32 %777, %778
  %780 = add nsw i32 %779, 1
  %781 = sext i32 %780 to i64
  %782 = getelementptr inbounds %struct.doublecomplex, ptr %776, i64 %781
  %783 = load ptr, ptr %15, align 8, !tbaa !5
  %784 = load i32, ptr %53, align 4, !tbaa !9
  %785 = load i32, ptr %21, align 4, !tbaa !9
  %786 = mul nsw i32 %784, %785
  %787 = add nsw i32 %786, 1
  %788 = sext i32 %787 to i64
  %789 = getelementptr inbounds %struct.doublecomplex, ptr %783, i64 %788
  call void @zcopy_(ptr noundef %25, ptr noundef %782, ptr noundef @c__1, ptr noundef %789, ptr noundef @c__1)
  br label %790

790:                                              ; preds = %773, %706
  %791 = load i32, ptr %41, align 4, !tbaa !9
  %792 = load ptr, ptr %12, align 8, !tbaa !5
  %793 = load i32, ptr %792, align 4, !tbaa !9
  %794 = icmp slt i32 %791, %793
  br i1 %794, label %795, label %820

795:                                              ; preds = %790
  %796 = load ptr, ptr %12, align 8, !tbaa !5
  %797 = load i32, ptr %796, align 4, !tbaa !9
  %798 = load i32, ptr %41, align 4, !tbaa !9
  %799 = sub nsw i32 %797, %798
  store i32 %799, ptr %25, align 4, !tbaa !9
  %800 = load ptr, ptr %15, align 8, !tbaa !5
  %801 = load i32, ptr %51, align 4, !tbaa !9
  %802 = load i32, ptr %41, align 4, !tbaa !9
  %803 = add nsw i32 %802, 1
  %804 = load i32, ptr %21, align 4, !tbaa !9
  %805 = mul nsw i32 %803, %804
  %806 = add nsw i32 %801, %805
  %807 = sext i32 %806 to i64
  %808 = getelementptr inbounds %struct.doublecomplex, ptr %800, i64 %807
  %809 = load ptr, ptr %16, align 8, !tbaa !5
  %810 = load ptr, ptr %15, align 8, !tbaa !5
  %811 = load i32, ptr %53, align 4, !tbaa !9
  %812 = load i32, ptr %41, align 4, !tbaa !9
  %813 = add nsw i32 %812, 1
  %814 = load i32, ptr %21, align 4, !tbaa !9
  %815 = mul nsw i32 %813, %814
  %816 = add nsw i32 %811, %815
  %817 = sext i32 %816 to i64
  %818 = getelementptr inbounds %struct.doublecomplex, ptr %810, i64 %817
  %819 = load ptr, ptr %16, align 8, !tbaa !5
  call void @zswap_(ptr noundef %25, ptr noundef %808, ptr noundef %809, ptr noundef %818, ptr noundef %819)
  br label %820

820:                                              ; preds = %795, %790
  %821 = load ptr, ptr %12, align 8, !tbaa !5
  %822 = load i32, ptr %821, align 4, !tbaa !9
  %823 = load i32, ptr %51, align 4, !tbaa !9
  %824 = sub nsw i32 %822, %823
  %825 = add nsw i32 %824, 1
  store i32 %825, ptr %25, align 4, !tbaa !9
  %826 = load ptr, ptr %18, align 8, !tbaa !5
  %827 = load i32, ptr %51, align 4, !tbaa !9
  %828 = load i32, ptr %58, align 4, !tbaa !9
  %829 = load i32, ptr %23, align 4, !tbaa !9
  %830 = mul nsw i32 %828, %829
  %831 = add nsw i32 %827, %830
  %832 = sext i32 %831 to i64
  %833 = getelementptr inbounds %struct.doublecomplex, ptr %826, i64 %832
  %834 = load ptr, ptr %19, align 8, !tbaa !5
  %835 = load ptr, ptr %18, align 8, !tbaa !5
  %836 = load i32, ptr %53, align 4, !tbaa !9
  %837 = load i32, ptr %58, align 4, !tbaa !9
  %838 = load i32, ptr %23, align 4, !tbaa !9
  %839 = mul nsw i32 %837, %838
  %840 = add nsw i32 %836, %839
  %841 = sext i32 %840 to i64
  %842 = getelementptr inbounds %struct.doublecomplex, ptr %835, i64 %841
  %843 = load ptr, ptr %19, align 8, !tbaa !5
  call void @zswap_(ptr noundef %25, ptr noundef %833, ptr noundef %834, ptr noundef %842, ptr noundef %843)
  br label %844

844:                                              ; preds = %820, %691
  %845 = load i32, ptr %44, align 4, !tbaa !9
  %846 = icmp eq i32 %845, 1
  br i1 %846, label %847, label %896

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

864:                                              ; preds = %847
  %865 = load i32, ptr %41, align 4, !tbaa !9
  %866 = load i32, ptr %41, align 4, !tbaa !9
  %867 = load i32, ptr %21, align 4, !tbaa !9
  %868 = mul nsw i32 %866, %867
  %869 = add nsw i32 %865, %868
  store i32 %869, ptr %25, align 4, !tbaa !9
  %870 = load ptr, ptr %15, align 8, !tbaa !5
  %871 = load i32, ptr %25, align 4, !tbaa !9
  %872 = sext i32 %871 to i64
  %873 = getelementptr inbounds %struct.doublecomplex, ptr %870, i64 %872
  %874 = getelementptr inbounds %struct.doublecomplex, ptr %873, i32 0, i32 0
  %875 = load double, ptr %874, align 8, !tbaa !13
  %876 = fdiv double 1.000000e+00, %875
  store double %876, ptr %45, align 8, !tbaa !11
  %877 = load i32, ptr %41, align 4, !tbaa !9
  %878 = sub nsw i32 %877, 1
  store i32 %878, ptr %25, align 4, !tbaa !9
  %879 = load ptr, ptr %15, align 8, !tbaa !5
  %880 = load i32, ptr %41, align 4, !tbaa !9
  %881 = load i32, ptr %21, align 4, !tbaa !9
  %882 = mul nsw i32 %880, %881
  %883 = add nsw i32 %882, 1
  %884 = sext i32 %883 to i64
  %885 = getelementptr inbounds %struct.doublecomplex, ptr %879, i64 %884
  call void @zdscal_(ptr noundef %25, ptr noundef %45, ptr noundef %885, ptr noundef @c__1)
  %886 = load i32, ptr %41, align 4, !tbaa !9
  %887 = sub nsw i32 %886, 1
  store i32 %887, ptr %25, align 4, !tbaa !9
  %888 = load ptr, ptr %18, align 8, !tbaa !5
  %889 = load i32, ptr %55, align 4, !tbaa !9
  %890 = load i32, ptr %23, align 4, !tbaa !9
  %891 = mul nsw i32 %889, %890
  %892 = add nsw i32 %891, 1
  %893 = sext i32 %892 to i64
  %894 = getelementptr inbounds %struct.doublecomplex, ptr %888, i64 %893
  call void @zlacgv_(ptr noundef %25, ptr noundef %894, ptr noundef @c__1)
  br label %895

895:                                              ; preds = %864, %847
  br label %1394

896:                                              ; preds = %844
  %897 = load i32, ptr %41, align 4, !tbaa !9
  %898 = icmp sgt i32 %897, 2
  br i1 %898, label %899, label %1272

899:                                              ; preds = %896
  %900 = load i32, ptr %41, align 4, !tbaa !9
  %901 = sub nsw i32 %900, 1
  %902 = load i32, ptr %55, align 4, !tbaa !9
  %903 = load i32, ptr %23, align 4, !tbaa !9
  %904 = mul nsw i32 %902, %903
  %905 = add nsw i32 %901, %904
  store i32 %905, ptr %25, align 4, !tbaa !9
  %906 = load ptr, ptr %18, align 8, !tbaa !5
  %907 = load i32, ptr %25, align 4, !tbaa !9
  %908 = sext i32 %907 to i64
  %909 = getelementptr inbounds %struct.doublecomplex, ptr %906, i64 %908
  %910 = getelementptr inbounds %struct.doublecomplex, ptr %909, i32 0, i32 0
  %911 = load double, ptr %910, align 8, !tbaa !13
  %912 = getelementptr inbounds %struct.doublecomplex, ptr %47, i32 0, i32 0
  store double %911, ptr %912, align 8, !tbaa !13
  %913 = load ptr, ptr %18, align 8, !tbaa !5
  %914 = load i32, ptr %25, align 4, !tbaa !9
  %915 = sext i32 %914 to i64
  %916 = getelementptr inbounds %struct.doublecomplex, ptr %913, i64 %915
  %917 = getelementptr inbounds %struct.doublecomplex, ptr %916, i32 0, i32 1
  %918 = load double, ptr %917, align 8, !tbaa !15
  %919 = getelementptr inbounds %struct.doublecomplex, ptr %47, i32 0, i32 1
  store double %918, ptr %919, align 8, !tbaa !15
  %920 = call { double, double } @Cd(ptr noundef %47)
  %921 = extractvalue { double, double } %920, 0
  %922 = extractvalue { double, double } %920, 1
  %923 = fneg double %922
  %924 = call ptr @_pCd(ptr noundef %35)
  %925 = getelementptr inbounds { double, double }, ptr %924, i32 0, i32 0
  %926 = getelementptr inbounds { double, double }, ptr %924, i32 0, i32 1
  store double %921, ptr %925, align 8
  store double %923, ptr %926, align 8
  %927 = load ptr, ptr %18, align 8, !tbaa !5
  %928 = load i32, ptr %41, align 4, !tbaa !9
  %929 = load i32, ptr %55, align 4, !tbaa !9
  %930 = load i32, ptr %23, align 4, !tbaa !9
  %931 = mul nsw i32 %929, %930
  %932 = add nsw i32 %928, %931
  %933 = sext i32 %932 to i64
  %934 = getelementptr inbounds %struct.doublecomplex, ptr %927, i64 %933
  %935 = call { double, double } @Cd(ptr noundef %934)
  %936 = extractvalue { double, double } %935, 0
  %937 = extractvalue { double, double } %935, 1
  %938 = call { double, double } @Cd(ptr noundef %35)
  %939 = extractvalue { double, double } %938, 0
  %940 = extractvalue { double, double } %938, 1
  %941 = call { double, double } @__divdc3(double noundef %936, double noundef %937, double noundef %939, double noundef %940) #6
  %942 = extractvalue { double, double } %941, 0
  %943 = extractvalue { double, double } %941, 1
  %944 = call ptr @_pCd(ptr noundef %34)
  %945 = getelementptr inbounds { double, double }, ptr %944, i32 0, i32 0
  %946 = getelementptr inbounds { double, double }, ptr %944, i32 0, i32 1
  store double %942, ptr %945, align 8
  store double %943, ptr %946, align 8
  %947 = getelementptr inbounds %struct.doublecomplex, ptr %34, i32 0, i32 0
  %948 = load double, ptr %947, align 8, !tbaa !13
  %949 = getelementptr inbounds %struct.doublecomplex, ptr %46, i32 0, i32 0
  store double %948, ptr %949, align 8, !tbaa !13
  %950 = getelementptr inbounds %struct.doublecomplex, ptr %34, i32 0, i32 1
  %951 = load double, ptr %950, align 8, !tbaa !15
  %952 = getelementptr inbounds %struct.doublecomplex, ptr %46, i32 0, i32 1
  store double %951, ptr %952, align 8, !tbaa !15
  %953 = load ptr, ptr %18, align 8, !tbaa !5
  %954 = load i32, ptr %41, align 4, !tbaa !9
  %955 = sub nsw i32 %954, 1
  %956 = load i32, ptr %55, align 4, !tbaa !9
  %957 = sub nsw i32 %956, 1
  %958 = load i32, ptr %23, align 4, !tbaa !9
  %959 = mul nsw i32 %957, %958
  %960 = add nsw i32 %955, %959
  %961 = sext i32 %960 to i64
  %962 = getelementptr inbounds %struct.doublecomplex, ptr %953, i64 %961
  %963 = call { double, double } @Cd(ptr noundef %962)
  %964 = extractvalue { double, double } %963, 0
  %965 = extractvalue { double, double } %963, 1
  %966 = call { double, double } @Cd(ptr noundef %47)
  %967 = extractvalue { double, double } %966, 0
  %968 = extractvalue { double, double } %966, 1
  %969 = call { double, double } @__divdc3(double noundef %964, double noundef %965, double noundef %967, double noundef %968) #6
  %970 = extractvalue { double, double } %969, 0
  %971 = extractvalue { double, double } %969, 1
  %972 = call ptr @_pCd(ptr noundef %34)
  %973 = getelementptr inbounds { double, double }, ptr %972, i32 0, i32 0
  %974 = getelementptr inbounds { double, double }, ptr %972, i32 0, i32 1
  store double %970, ptr %973, align 8
  store double %971, ptr %974, align 8
  %975 = getelementptr inbounds %struct.doublecomplex, ptr %34, i32 0, i32 0
  %976 = load double, ptr %975, align 8, !tbaa !13
  %977 = getelementptr inbounds %struct.doublecomplex, ptr %48, i32 0, i32 0
  store double %976, ptr %977, align 8, !tbaa !13
  %978 = getelementptr inbounds %struct.doublecomplex, ptr %34, i32 0, i32 1
  %979 = load double, ptr %978, align 8, !tbaa !15
  %980 = getelementptr inbounds %struct.doublecomplex, ptr %48, i32 0, i32 1
  store double %979, ptr %980, align 8, !tbaa !15
  %981 = getelementptr inbounds %struct.doublecomplex, ptr %46, i32 0, i32 0
  %982 = load double, ptr %981, align 8, !tbaa !13
  %983 = getelementptr inbounds %struct.doublecomplex, ptr %48, i32 0, i32 0
  %984 = load double, ptr %983, align 8, !tbaa !13
  %985 = getelementptr inbounds %struct.doublecomplex, ptr %46, i32 0, i32 1
  %986 = load double, ptr %985, align 8, !tbaa !15
  %987 = getelementptr inbounds %struct.doublecomplex, ptr %48, i32 0, i32 1
  %988 = load double, ptr %987, align 8, !tbaa !15
  %989 = fmul double %986, %988
  %990 = fneg double %989
  %991 = call double @llvm.fmuladd.f64(double %982, double %984, double %990)
  %992 = getelementptr inbounds %struct.doublecomplex, ptr %34, i32 0, i32 0
  store double %991, ptr %992, align 8, !tbaa !13
  %993 = getelementptr inbounds %struct.doublecomplex, ptr %46, i32 0, i32 0
  %994 = load double, ptr %993, align 8, !tbaa !13
  %995 = getelementptr inbounds %struct.doublecomplex, ptr %48, i32 0, i32 1
  %996 = load double, ptr %995, align 8, !tbaa !15
  %997 = getelementptr inbounds %struct.doublecomplex, ptr %46, i32 0, i32 1
  %998 = load double, ptr %997, align 8, !tbaa !15
  %999 = getelementptr inbounds %struct.doublecomplex, ptr %48, i32 0, i32 0
  %1000 = load double, ptr %999, align 8, !tbaa !13
  %1001 = fmul double %998, %1000
  %1002 = call double @llvm.fmuladd.f64(double %994, double %996, double %1001)
  %1003 = getelementptr inbounds %struct.doublecomplex, ptr %34, i32 0, i32 1
  store double %1002, ptr %1003, align 8, !tbaa !15
  %1004 = getelementptr inbounds %struct.doublecomplex, ptr %34, i32 0, i32 0
  %1005 = load double, ptr %1004, align 8, !tbaa !13
  %1006 = fsub double %1005, 1.000000e+00
  %1007 = fdiv double 1.000000e+00, %1006
  store double %1007, ptr %42, align 8, !tbaa !11
  %1008 = load double, ptr %42, align 8, !tbaa !11
  %1009 = getelementptr inbounds %struct.doublecomplex, ptr %35, i32 0, i32 0
  store double %1008, ptr %1009, align 8, !tbaa !13
  %1010 = getelementptr inbounds %struct.doublecomplex, ptr %35, i32 0, i32 1
  store double 0.000000e+00, ptr %1010, align 8, !tbaa !15
  %1011 = call { double, double } @Cd(ptr noundef %35)
  %1012 = extractvalue { double, double } %1011, 0
  %1013 = extractvalue { double, double } %1011, 1
  %1014 = call { double, double } @Cd(ptr noundef %47)
  %1015 = extractvalue { double, double } %1014, 0
  %1016 = extractvalue { double, double } %1014, 1
  %1017 = call { double, double } @__divdc3(double noundef %1012, double noundef %1013, double noundef %1015, double noundef %1016) #6
  %1018 = extractvalue { double, double } %1017, 0
  %1019 = extractvalue { double, double } %1017, 1
  %1020 = call ptr @_pCd(ptr noundef %34)
  %1021 = getelementptr inbounds { double, double }, ptr %1020, i32 0, i32 0
  %1022 = getelementptr inbounds { double, double }, ptr %1020, i32 0, i32 1
  store double %1018, ptr %1021, align 8
  store double %1019, ptr %1022, align 8
  %1023 = getelementptr inbounds %struct.doublecomplex, ptr %34, i32 0, i32 0
  %1024 = load double, ptr %1023, align 8, !tbaa !13
  %1025 = getelementptr inbounds %struct.doublecomplex, ptr %47, i32 0, i32 0
  store double %1024, ptr %1025, align 8, !tbaa !13
  %1026 = getelementptr inbounds %struct.doublecomplex, ptr %34, i32 0, i32 1
  %1027 = load double, ptr %1026, align 8, !tbaa !15
  %1028 = getelementptr inbounds %struct.doublecomplex, ptr %47, i32 0, i32 1
  store double %1027, ptr %1028, align 8, !tbaa !15
  %1029 = load i32, ptr %41, align 4, !tbaa !9
  %1030 = sub nsw i32 %1029, 2
  store i32 %1030, ptr %25, align 4, !tbaa !9
  store i32 1, ptr %40, align 4, !tbaa !9
  br label %1031

1031:                                             ; preds = %1268, %899
  %1032 = load i32, ptr %40, align 4, !tbaa !9
  %1033 = load i32, ptr %25, align 4, !tbaa !9
  %1034 = icmp sle i32 %1032, %1033
  br i1 %1034, label %1035, label %1271

1035:                                             ; preds = %1031
  %1036 = load i32, ptr %40, align 4, !tbaa !9
  %1037 = load i32, ptr %41, align 4, !tbaa !9
  %1038 = sub nsw i32 %1037, 1
  %1039 = load i32, ptr %21, align 4, !tbaa !9
  %1040 = mul nsw i32 %1038, %1039
  %1041 = add nsw i32 %1036, %1040
  store i32 %1041, ptr %26, align 4, !tbaa !9
  %1042 = load i32, ptr %40, align 4, !tbaa !9
  %1043 = load i32, ptr %55, align 4, !tbaa !9
  %1044 = sub nsw i32 %1043, 1
  %1045 = load i32, ptr %23, align 4, !tbaa !9
  %1046 = mul nsw i32 %1044, %1045
  %1047 = add nsw i32 %1042, %1046
  store i32 %1047, ptr %27, align 4, !tbaa !9
  %1048 = getelementptr inbounds %struct.doublecomplex, ptr %46, i32 0, i32 0
  %1049 = load double, ptr %1048, align 8, !tbaa !13
  %1050 = load ptr, ptr %18, align 8, !tbaa !5
  %1051 = load i32, ptr %27, align 4, !tbaa !9
  %1052 = sext i32 %1051 to i64
  %1053 = getelementptr inbounds %struct.doublecomplex, ptr %1050, i64 %1052
  %1054 = getelementptr inbounds %struct.doublecomplex, ptr %1053, i32 0, i32 0
  %1055 = load double, ptr %1054, align 8, !tbaa !13
  %1056 = getelementptr inbounds %struct.doublecomplex, ptr %46, i32 0, i32 1
  %1057 = load double, ptr %1056, align 8, !tbaa !15
  %1058 = load ptr, ptr %18, align 8, !tbaa !5
  %1059 = load i32, ptr %27, align 4, !tbaa !9
  %1060 = sext i32 %1059 to i64
  %1061 = getelementptr inbounds %struct.doublecomplex, ptr %1058, i64 %1060
  %1062 = getelementptr inbounds %struct.doublecomplex, ptr %1061, i32 0, i32 1
  %1063 = load double, ptr %1062, align 8, !tbaa !15
  %1064 = fmul double %1057, %1063
  %1065 = fneg double %1064
  %1066 = call double @llvm.fmuladd.f64(double %1049, double %1055, double %1065)
  %1067 = getelementptr inbounds %struct.doublecomplex, ptr %36, i32 0, i32 0
  store double %1066, ptr %1067, align 8, !tbaa !13
  %1068 = getelementptr inbounds %struct.doublecomplex, ptr %46, i32 0, i32 0
  %1069 = load double, ptr %1068, align 8, !tbaa !13
  %1070 = load ptr, ptr %18, align 8, !tbaa !5
  %1071 = load i32, ptr %27, align 4, !tbaa !9
  %1072 = sext i32 %1071 to i64
  %1073 = getelementptr inbounds %struct.doublecomplex, ptr %1070, i64 %1072
  %1074 = getelementptr inbounds %struct.doublecomplex, ptr %1073, i32 0, i32 1
  %1075 = load double, ptr %1074, align 8, !tbaa !15
  %1076 = getelementptr inbounds %struct.doublecomplex, ptr %46, i32 0, i32 1
  %1077 = load double, ptr %1076, align 8, !tbaa !15
  %1078 = load ptr, ptr %18, align 8, !tbaa !5
  %1079 = load i32, ptr %27, align 4, !tbaa !9
  %1080 = sext i32 %1079 to i64
  %1081 = getelementptr inbounds %struct.doublecomplex, ptr %1078, i64 %1080
  %1082 = getelementptr inbounds %struct.doublecomplex, ptr %1081, i32 0, i32 0
  %1083 = load double, ptr %1082, align 8, !tbaa !13
  %1084 = fmul double %1077, %1083
  %1085 = call double @llvm.fmuladd.f64(double %1069, double %1075, double %1084)
  %1086 = getelementptr inbounds %struct.doublecomplex, ptr %36, i32 0, i32 1
  store double %1085, ptr %1086, align 8, !tbaa !15
  %1087 = load i32, ptr %40, align 4, !tbaa !9
  %1088 = load i32, ptr %55, align 4, !tbaa !9
  %1089 = load i32, ptr %23, align 4, !tbaa !9
  %1090 = mul nsw i32 %1088, %1089
  %1091 = add nsw i32 %1087, %1090
  store i32 %1091, ptr %28, align 4, !tbaa !9
  %1092 = getelementptr inbounds %struct.doublecomplex, ptr %36, i32 0, i32 0
  %1093 = load double, ptr %1092, align 8, !tbaa !13
  %1094 = load ptr, ptr %18, align 8, !tbaa !5
  %1095 = load i32, ptr %28, align 4, !tbaa !9
  %1096 = sext i32 %1095 to i64
  %1097 = getelementptr inbounds %struct.doublecomplex, ptr %1094, i64 %1096
  %1098 = getelementptr inbounds %struct.doublecomplex, ptr %1097, i32 0, i32 0
  %1099 = load double, ptr %1098, align 8, !tbaa !13
  %1100 = fsub double %1093, %1099
  %1101 = getelementptr inbounds %struct.doublecomplex, ptr %35, i32 0, i32 0
  store double %1100, ptr %1101, align 8, !tbaa !13
  %1102 = getelementptr inbounds %struct.doublecomplex, ptr %36, i32 0, i32 1
  %1103 = load double, ptr %1102, align 8, !tbaa !15
  %1104 = load ptr, ptr %18, align 8, !tbaa !5
  %1105 = load i32, ptr %28, align 4, !tbaa !9
  %1106 = sext i32 %1105 to i64
  %1107 = getelementptr inbounds %struct.doublecomplex, ptr %1104, i64 %1106
  %1108 = getelementptr inbounds %struct.doublecomplex, ptr %1107, i32 0, i32 1
  %1109 = load double, ptr %1108, align 8, !tbaa !15
  %1110 = fsub double %1103, %1109
  %1111 = getelementptr inbounds %struct.doublecomplex, ptr %35, i32 0, i32 1
  store double %1110, ptr %1111, align 8, !tbaa !15
  %1112 = getelementptr inbounds %struct.doublecomplex, ptr %47, i32 0, i32 0
  %1113 = load double, ptr %1112, 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 %47, 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 = fmul double %1117, %1119
  %1121 = fneg double %1120
  %1122 = call double @llvm.fmuladd.f64(double %1113, double %1115, double %1121)
  %1123 = getelementptr inbounds %struct.doublecomplex, ptr %34, i32 0, i32 0
  store double %1122, ptr %1123, align 8, !tbaa !13
  %1124 = getelementptr inbounds %struct.doublecomplex, ptr %47, i32 0, i32 0
  %1125 = load double, ptr %1124, align 8, !tbaa !13
  %1126 = getelementptr inbounds %struct.doublecomplex, ptr %35, i32 0, i32 1
  %1127 = load double, ptr %1126, align 8, !tbaa !15
  %1128 = getelementptr inbounds %struct.doublecomplex, ptr %47, i32 0, i32 1
  %1129 = load double, ptr %1128, align 8, !tbaa !15
  %1130 = getelementptr inbounds %struct.doublecomplex, ptr %35, i32 0, i32 0
  %1131 = load double, ptr %1130, align 8, !tbaa !13
  %1132 = fmul double %1129, %1131
  %1133 = call double @llvm.fmuladd.f64(double %1125, double %1127, double %1132)
  %1134 = getelementptr inbounds %struct.doublecomplex, ptr %34, i32 0, i32 1
  store double %1133, ptr %1134, align 8, !tbaa !15
  %1135 = getelementptr inbounds %struct.doublecomplex, ptr %34, i32 0, i32 0
  %1136 = load double, ptr %1135, align 8, !tbaa !13
  %1137 = load ptr, ptr %15, align 8, !tbaa !5
  %1138 = load i32, ptr %26, align 4, !tbaa !9
  %1139 = sext i32 %1138 to i64
  %1140 = getelementptr inbounds %struct.doublecomplex, ptr %1137, i64 %1139
  %1141 = getelementptr inbounds %struct.doublecomplex, ptr %1140, i32 0, i32 0
  store double %1136, ptr %1141, align 8, !tbaa !13
  %1142 = getelementptr inbounds %struct.doublecomplex, ptr %34, i32 0, i32 1
  %1143 = load double, ptr %1142, align 8, !tbaa !15
  %1144 = load ptr, ptr %15, align 8, !tbaa !5
  %1145 = load i32, ptr %26, align 4, !tbaa !9
  %1146 = sext i32 %1145 to i64
  %1147 = getelementptr inbounds %struct.doublecomplex, ptr %1144, i64 %1146
  %1148 = getelementptr inbounds %struct.doublecomplex, ptr %1147, i32 0, i32 1
  store double %1143, ptr %1148, align 8, !tbaa !15
  %1149 = load i32, ptr %40, align 4, !tbaa !9
  %1150 = load i32, ptr %41, align 4, !tbaa !9
  %1151 = load i32, ptr %21, align 4, !tbaa !9
  %1152 = mul nsw i32 %1150, %1151
  %1153 = add nsw i32 %1149, %1152
  store i32 %1153, ptr %26, align 4, !tbaa !9
  %1154 = call { double, double } @Cd(ptr noundef %47)
  %1155 = extractvalue { double, double } %1154, 0
  %1156 = extractvalue { double, double } %1154, 1
  %1157 = fneg double %1156
  %1158 = call ptr @_pCd(ptr noundef %35)
  %1159 = getelementptr inbounds { double, double }, ptr %1158, i32 0, i32 0
  %1160 = getelementptr inbounds { double, double }, ptr %1158, i32 0, i32 1
  store double %1155, ptr %1159, align 8
  store double %1157, ptr %1160, align 8
  %1161 = load i32, ptr %40, align 4, !tbaa !9
  %1162 = load i32, ptr %55, align 4, !tbaa !9
  %1163 = load i32, ptr %23, align 4, !tbaa !9
  %1164 = mul nsw i32 %1162, %1163
  %1165 = add nsw i32 %1161, %1164
  store i32 %1165, ptr %27, align 4, !tbaa !9
  %1166 = getelementptr inbounds %struct.doublecomplex, ptr %48, i32 0, i32 0
  %1167 = load double, ptr %1166, align 8, !tbaa !13
  %1168 = load ptr, ptr %18, align 8, !tbaa !5
  %1169 = load i32, ptr %27, align 4, !tbaa !9
  %1170 = sext i32 %1169 to i64
  %1171 = getelementptr inbounds %struct.doublecomplex, ptr %1168, i64 %1170
  %1172 = getelementptr inbounds %struct.doublecomplex, ptr %1171, i32 0, i32 0
  %1173 = load double, ptr %1172, align 8, !tbaa !13
  %1174 = getelementptr inbounds %struct.doublecomplex, ptr %48, i32 0, i32 1
  %1175 = load double, ptr %1174, align 8, !tbaa !15
  %1176 = load ptr, ptr %18, align 8, !tbaa !5
  %1177 = load i32, ptr %27, align 4, !tbaa !9
  %1178 = sext i32 %1177 to i64
  %1179 = getelementptr inbounds %struct.doublecomplex, ptr %1176, i64 %1178
  %1180 = getelementptr inbounds %struct.doublecomplex, ptr %1179, i32 0, i32 1
  %1181 = load double, ptr %1180, align 8, !tbaa !15
  %1182 = fmul double %1175, %1181
  %1183 = fneg double %1182
  %1184 = call double @llvm.fmuladd.f64(double %1167, double %1173, double %1183)
  %1185 = getelementptr inbounds %struct.doublecomplex, ptr %37, i32 0, i32 0
  store double %1184, ptr %1185, align 8, !tbaa !13
  %1186 = getelementptr inbounds %struct.doublecomplex, ptr %48, i32 0, i32 0
  %1187 = load double, ptr %1186, align 8, !tbaa !13
  %1188 = load ptr, ptr %18, align 8, !tbaa !5
  %1189 = load i32, ptr %27, align 4, !tbaa !9
  %1190 = sext i32 %1189 to i64
  %1191 = getelementptr inbounds %struct.doublecomplex, ptr %1188, i64 %1190
  %1192 = getelementptr inbounds %struct.doublecomplex, ptr %1191, i32 0, i32 1
  %1193 = load double, ptr %1192, align 8, !tbaa !15
  %1194 = getelementptr inbounds %struct.doublecomplex, ptr %48, i32 0, i32 1
  %1195 = load double, ptr %1194, align 8, !tbaa !15
  %1196 = load ptr, ptr %18, align 8, !tbaa !5
  %1197 = load i32, ptr %27, align 4, !tbaa !9
  %1198 = sext i32 %1197 to i64
  %1199 = getelementptr inbounds %struct.doublecomplex, ptr %1196, i64 %1198
  %1200 = getelementptr inbounds %struct.doublecomplex, ptr %1199, i32 0, i32 0
  %1201 = load double, ptr %1200, align 8, !tbaa !13
  %1202 = fmul double %1195, %1201
  %1203 = call double @llvm.fmuladd.f64(double %1187, double %1193, double %1202)
  %1204 = getelementptr inbounds %struct.doublecomplex, ptr %37, i32 0, i32 1
  store double %1203, ptr %1204, align 8, !tbaa !15
  %1205 = load i32, ptr %40, align 4, !tbaa !9
  %1206 = load i32, ptr %55, align 4, !tbaa !9
  %1207 = sub nsw i32 %1206, 1
  %1208 = load i32, ptr %23, align 4, !tbaa !9
  %1209 = mul nsw i32 %1207, %1208
  %1210 = add nsw i32 %1205, %1209
  store i32 %1210, ptr %28, align 4, !tbaa !9
  %1211 = getelementptr inbounds %struct.doublecomplex, ptr %37, i32 0, i32 0
  %1212 = load double, ptr %1211, align 8, !tbaa !13
  %1213 = load ptr, ptr %18, align 8, !tbaa !5
  %1214 = load i32, ptr %28, align 4, !tbaa !9
  %1215 = sext i32 %1214 to i64
  %1216 = getelementptr inbounds %struct.doublecomplex, ptr %1213, i64 %1215
  %1217 = getelementptr inbounds %struct.doublecomplex, ptr %1216, i32 0, i32 0
  %1218 = load double, ptr %1217, align 8, !tbaa !13
  %1219 = fsub double %1212, %1218
  %1220 = getelementptr inbounds %struct.doublecomplex, ptr %36, i32 0, i32 0
  store double %1219, ptr %1220, align 8, !tbaa !13
  %1221 = getelementptr inbounds %struct.doublecomplex, ptr %37, i32 0, i32 1
  %1222 = load double, ptr %1221, align 8, !tbaa !15
  %1223 = load ptr, ptr %18, align 8, !tbaa !5
  %1224 = load i32, ptr %28, align 4, !tbaa !9
  %1225 = sext i32 %1224 to i64
  %1226 = getelementptr inbounds %struct.doublecomplex, ptr %1223, i64 %1225
  %1227 = getelementptr inbounds %struct.doublecomplex, ptr %1226, i32 0, i32 1
  %1228 = load double, ptr %1227, align 8, !tbaa !15
  %1229 = fsub double %1222, %1228
  %1230 = getelementptr inbounds %struct.doublecomplex, ptr %36, i32 0, i32 1
  store double %1229, ptr %1230, align 8, !tbaa !15
  %1231 = getelementptr inbounds %struct.doublecomplex, ptr %35, i32 0, i32 0
  %1232 = load double, ptr %1231, align 8, !tbaa !13
  %1233 = getelementptr inbounds %struct.doublecomplex, ptr %36, i32 0, i32 0
  %1234 = load double, ptr %1233, align 8, !tbaa !13
  %1235 = getelementptr inbounds %struct.doublecomplex, ptr %35, i32 0, i32 1
  %1236 = load double, ptr %1235, align 8, !tbaa !15
  %1237 = getelementptr inbounds %struct.doublecomplex, ptr %36, i32 0, i32 1
  %1238 = load double, ptr %1237, align 8, !tbaa !15
  %1239 = fmul double %1236, %1238
  %1240 = fneg double %1239
  %1241 = call double @llvm.fmuladd.f64(double %1232, double %1234, double %1240)
  %1242 = getelementptr inbounds %struct.doublecomplex, ptr %34, i32 0, i32 0
  store double %1241, ptr %1242, align 8, !tbaa !13
  %1243 = getelementptr inbounds %struct.doublecomplex, ptr %35, i32 0, i32 0
  %1244 = load double, ptr %1243, align 8, !tbaa !13
  %1245 = getelementptr inbounds %struct.doublecomplex, ptr %36, i32 0, i32 1
  %1246 = load double, ptr %1245, align 8, !tbaa !15
  %1247 = getelementptr inbounds %struct.doublecomplex, ptr %35, i32 0, i32 1
  %1248 = load double, ptr %1247, align 8, !tbaa !15
  %1249 = getelementptr inbounds %struct.doublecomplex, ptr %36, i32 0, i32 0
  %1250 = load double, ptr %1249, align 8, !tbaa !13
  %1251 = fmul double %1248, %1250
  %1252 = call double @llvm.fmuladd.f64(double %1244, double %1246, double %1251)
  %1253 = getelementptr inbounds %struct.doublecomplex, ptr %34, i32 0, i32 1
  store double %1252, ptr %1253, align 8, !tbaa !15
  %1254 = getelementptr inbounds %struct.doublecomplex, ptr %34, i32 0, i32 0
  %1255 = load double, ptr %1254, align 8, !tbaa !13
  %1256 = load ptr, ptr %15, align 8, !tbaa !5
  %1257 = load i32, ptr %26, align 4, !tbaa !9
  %1258 = sext i32 %1257 to i64
  %1259 = getelementptr inbounds %struct.doublecomplex, ptr %1256, i64 %1258
  %1260 = getelementptr inbounds %struct.doublecomplex, ptr %1259, i32 0, i32 0
  store double %1255, ptr %1260, align 8, !tbaa !13
  %1261 = getelementptr inbounds %struct.doublecomplex, ptr %34, i32 0, i32 1
  %1262 = load double, ptr %1261, align 8, !tbaa !15
  %1263 = load ptr, ptr %15, align 8, !tbaa !5
  %1264 = load i32, ptr %26, align 4, !tbaa !9
  %1265 = sext i32 %1264 to i64
  %1266 = getelementptr inbounds %struct.doublecomplex, ptr %1263, i64 %1265
  %1267 = getelementptr inbounds %struct.doublecomplex, ptr %1266, i32 0, i32 1
  store double %1262, ptr %1267, align 8, !tbaa !15
  br label %1268

1268:                                             ; preds = %1035
  %1269 = load i32, ptr %40, align 4, !tbaa !9
  %1270 = add nsw i32 %1269, 1
  store i32 %1270, ptr %40, align 4, !tbaa !9
  br label %1031, !llvm.loop !16

1271:                                             ; preds = %1031
  br label %1272

1272:                                             ; preds = %1271, %896
  %1273 = load i32, ptr %41, align 4, !tbaa !9
  %1274 = sub nsw i32 %1273, 1
  %1275 = load i32, ptr %41, align 4, !tbaa !9
  %1276 = sub nsw i32 %1275, 1
  %1277 = load i32, ptr %21, align 4, !tbaa !9
  %1278 = mul nsw i32 %1276, %1277
  %1279 = add nsw i32 %1274, %1278
  store i32 %1279, ptr %25, align 4, !tbaa !9
  %1280 = load i32, ptr %41, align 4, !tbaa !9
  %1281 = sub nsw i32 %1280, 1
  %1282 = load i32, ptr %55, align 4, !tbaa !9
  %1283 = sub nsw i32 %1282, 1
  %1284 = load i32, ptr %23, align 4, !tbaa !9
  %1285 = mul nsw i32 %1283, %1284
  %1286 = add nsw i32 %1281, %1285
  store i32 %1286, ptr %26, align 4, !tbaa !9
  %1287 = load ptr, ptr %18, align 8, !tbaa !5
  %1288 = load i32, ptr %26, align 4, !tbaa !9
  %1289 = sext i32 %1288 to i64
  %1290 = getelementptr inbounds %struct.doublecomplex, ptr %1287, i64 %1289
  %1291 = getelementptr inbounds %struct.doublecomplex, ptr %1290, i32 0, i32 0
  %1292 = load double, ptr %1291, align 8, !tbaa !13
  %1293 = load ptr, ptr %15, align 8, !tbaa !5
  %1294 = load i32, ptr %25, align 4, !tbaa !9
  %1295 = sext i32 %1294 to i64
  %1296 = getelementptr inbounds %struct.doublecomplex, ptr %1293, i64 %1295
  %1297 = getelementptr inbounds %struct.doublecomplex, ptr %1296, i32 0, i32 0
  store double %1292, ptr %1297, align 8, !tbaa !13
  %1298 = load ptr, ptr %18, align 8, !tbaa !5
  %1299 = load i32, ptr %26, align 4, !tbaa !9
  %1300 = sext i32 %1299 to i64
  %1301 = getelementptr inbounds %struct.doublecomplex, ptr %1298, i64 %1300
  %1302 = getelementptr inbounds %struct.doublecomplex, ptr %1301, i32 0, i32 1
  %1303 = load double, ptr %1302, align 8, !tbaa !15
  %1304 = load ptr, ptr %15, align 8, !tbaa !5
  %1305 = load i32, ptr %25, align 4, !tbaa !9
  %1306 = sext i32 %1305 to i64
  %1307 = getelementptr inbounds %struct.doublecomplex, ptr %1304, i64 %1306
  %1308 = getelementptr inbounds %struct.doublecomplex, ptr %1307, i32 0, i32 1
  store double %1303, ptr %1308, align 8, !tbaa !15
  %1309 = load i32, ptr %41, align 4, !tbaa !9
  %1310 = sub nsw i32 %1309, 1
  %1311 = load i32, ptr %41, align 4, !tbaa !9
  %1312 = load i32, ptr %21, align 4, !tbaa !9
  %1313 = mul nsw i32 %1311, %1312
  %1314 = add nsw i32 %1310, %1313
  store i32 %1314, ptr %25, align 4, !tbaa !9
  %1315 = load i32, ptr %41, align 4, !tbaa !9
  %1316 = sub nsw i32 %1315, 1
  %1317 = load i32, ptr %55, align 4, !tbaa !9
  %1318 = load i32, ptr %23, align 4, !tbaa !9
  %1319 = mul nsw i32 %1317, %1318
  %1320 = add nsw i32 %1316, %1319
  store i32 %1320, ptr %26, align 4, !tbaa !9
  %1321 = load ptr, ptr %18, align 8, !tbaa !5
  %1322 = load i32, ptr %26, align 4, !tbaa !9
  %1323 = sext i32 %1322 to i64
  %1324 = getelementptr inbounds %struct.doublecomplex, ptr %1321, i64 %1323
  %1325 = getelementptr inbounds %struct.doublecomplex, ptr %1324, i32 0, i32 0
  %1326 = load double, ptr %1325, align 8, !tbaa !13
  %1327 = load ptr, ptr %15, align 8, !tbaa !5
  %1328 = load i32, ptr %25, align 4, !tbaa !9
  %1329 = sext i32 %1328 to i64
  %1330 = getelementptr inbounds %struct.doublecomplex, ptr %1327, i64 %1329
  %1331 = getelementptr inbounds %struct.doublecomplex, ptr %1330, i32 0, i32 0
  store double %1326, ptr %1331, align 8, !tbaa !13
  %1332 = load ptr, ptr %18, align 8, !tbaa !5
  %1333 = load i32, ptr %26, align 4, !tbaa !9
  %1334 = sext i32 %1333 to i64
  %1335 = getelementptr inbounds %struct.doublecomplex, ptr %1332, i64 %1334
  %1336 = getelementptr inbounds %struct.doublecomplex, ptr %1335, i32 0, i32 1
  %1337 = load double, ptr %1336, align 8, !tbaa !15
  %1338 = load ptr, ptr %15, align 8, !tbaa !5
  %1339 = load i32, ptr %25, align 4, !tbaa !9
  %1340 = sext i32 %1339 to i64
  %1341 = getelementptr inbounds %struct.doublecomplex, ptr %1338, i64 %1340
  %1342 = getelementptr inbounds %struct.doublecomplex, ptr %1341, i32 0, i32 1
  store double %1337, ptr %1342, align 8, !tbaa !15
  %1343 = load i32, ptr %41, align 4, !tbaa !9
  %1344 = load i32, ptr %41, align 4, !tbaa !9
  %1345 = load i32, ptr %21, align 4, !tbaa !9
  %1346 = mul nsw i32 %1344, %1345
  %1347 = add nsw i32 %1343, %1346
  store i32 %1347, ptr %25, align 4, !tbaa !9
  %1348 = load i32, ptr %41, align 4, !tbaa !9
  %1349 = load i32, ptr %55, align 4, !tbaa !9
  %1350 = load i32, ptr %23, align 4, !tbaa !9
  %1351 = mul nsw i32 %1349, %1350
  %1352 = add nsw i32 %1348, %1351
  store i32 %1352, ptr %26, align 4, !tbaa !9
  %1353 = load ptr, ptr %18, align 8, !tbaa !5
  %1354 = load i32, ptr %26, align 4, !tbaa !9
  %1355 = sext i32 %1354 to i64
  %1356 = getelementptr inbounds %struct.doublecomplex, ptr %1353, i64 %1355
  %1357 = getelementptr inbounds %struct.doublecomplex, ptr %1356, i32 0, i32 0
  %1358 = load double, ptr %1357, align 8, !tbaa !13
  %1359 = load ptr, ptr %15, align 8, !tbaa !5
  %1360 = load i32, ptr %25, align 4, !tbaa !9
  %1361 = sext i32 %1360 to i64
  %1362 = getelementptr inbounds %struct.doublecomplex, ptr %1359, i64 %1361
  %1363 = getelementptr inbounds %struct.doublecomplex, ptr %1362, i32 0, i32 0
  store double %1358, ptr %1363, align 8, !tbaa !13
  %1364 = load ptr, ptr %18, align 8, !tbaa !5
  %1365 = load i32, ptr %26, align 4, !tbaa !9
  %1366 = sext i32 %1365 to i64
  %1367 = getelementptr inbounds %struct.doublecomplex, ptr %1364, i64 %1366
  %1368 = getelementptr inbounds %struct.doublecomplex, ptr %1367, i32 0, i32 1
  %1369 = load double, ptr %1368, align 8, !tbaa !15
  %1370 = load ptr, ptr %15, align 8, !tbaa !5
  %1371 = load i32, ptr %25, align 4, !tbaa !9
  %1372 = sext i32 %1371 to i64
  %1373 = getelementptr inbounds %struct.doublecomplex, ptr %1370, i64 %1372
  %1374 = getelementptr inbounds %struct.doublecomplex, ptr %1373, i32 0, i32 1
  store double %1369, ptr %1374, align 8, !tbaa !15
  %1375 = load i32, ptr %41, align 4, !tbaa !9
  %1376 = sub nsw i32 %1375, 1
  store i32 %1376, ptr %25, align 4, !tbaa !9
  %1377 = load ptr, ptr %18, align 8, !tbaa !5
  %1378 = load i32, ptr %55, align 4, !tbaa !9
  %1379 = load i32, ptr %23, align 4, !tbaa !9
  %1380 = mul nsw i32 %1378, %1379
  %1381 = add nsw i32 %1380, 1
  %1382 = sext i32 %1381 to i64
  %1383 = getelementptr inbounds %struct.doublecomplex, ptr %1377, i64 %1382
  call void @zlacgv_(ptr noundef %25, ptr noundef %1383, ptr noundef @c__1)
  %1384 = load i32, ptr %41, align 4, !tbaa !9
  %1385 = sub nsw i32 %1384, 2
  store i32 %1385, ptr %25, align 4, !tbaa !9
  %1386 = load ptr, ptr %18, align 8, !tbaa !5
  %1387 = load i32, ptr %55, align 4, !tbaa !9
  %1388 = sub nsw i32 %1387, 1
  %1389 = load i32, ptr %23, align 4, !tbaa !9
  %1390 = mul nsw i32 %1388, %1389
  %1391 = add nsw i32 %1390, 1
  %1392 = sext i32 %1391 to i64
  %1393 = getelementptr inbounds %struct.doublecomplex, ptr %1386, i64 %1392
  call void @zlacgv_(ptr noundef %25, ptr noundef %1393, ptr noundef @c__1)
  br label %1394

1394:                                             ; preds = %1272, %895
  br label %1395

1395:                                             ; preds = %1394, %319
  %1396 = load i32, ptr %44, align 4, !tbaa !9
  %1397 = icmp eq i32 %1396, 1
  br i1 %1397, label %1398, label %1404

1398:                                             ; preds = %1395
  %1399 = load i32, ptr %53, align 4, !tbaa !9
  %1400 = load ptr, ptr %17, align 8, !tbaa !5
  %1401 = load i32, ptr %41, align 4, !tbaa !9
  %1402 = sext i32 %1401 to i64
  %1403 = getelementptr inbounds i32, ptr %1400, i64 %1402
  store i32 %1399, ptr %1403, align 4, !tbaa !9
  br label %1418

1404:                                             ; preds = %1395
  %1405 = load i32, ptr %53, align 4, !tbaa !9
  %1406 = sub nsw i32 0, %1405
  %1407 = load ptr, ptr %17, align 8, !tbaa !5
  %1408 = load i32, ptr %41, align 4, !tbaa !9
  %1409 = sext i32 %1408 to i64
  %1410 = getelementptr inbounds i32, ptr %1407, i64 %1409
  store i32 %1406, ptr %1410, align 4, !tbaa !9
  %1411 = load i32, ptr %53, align 4, !tbaa !9
  %1412 = sub nsw i32 0, %1411
  %1413 = load ptr, ptr %17, align 8, !tbaa !5
  %1414 = load i32, ptr %41, align 4, !tbaa !9
  %1415 = sub nsw i32 %1414, 1
  %1416 = sext i32 %1415 to i64
  %1417 = getelementptr inbounds i32, ptr %1413, i64 %1416
  store i32 %1412, ptr %1417, align 4, !tbaa !9
  br label %1418

1418:                                             ; preds = %1404, %1398
  %1419 = load i32, ptr %44, align 4, !tbaa !9
  %1420 = load i32, ptr %41, align 4, !tbaa !9
  %1421 = sub nsw i32 %1420, %1419
  store i32 %1421, ptr %41, align 4, !tbaa !9
  br label %91

1422:                                             ; preds = %116
  %1423 = load ptr, ptr %13, align 8, !tbaa !5
  %1424 = load i32, ptr %1423, align 4, !tbaa !9
  %1425 = sub nsw i32 0, %1424
  store i32 %1425, ptr %25, align 4, !tbaa !9
  %1426 = load i32, ptr %41, align 4, !tbaa !9
  %1427 = sub nsw i32 %1426, 1
  %1428 = load ptr, ptr %13, align 8, !tbaa !5
  %1429 = load i32, ptr %1428, align 4, !tbaa !9
  %1430 = sdiv i32 %1427, %1429
  %1431 = load ptr, ptr %13, align 8, !tbaa !5
  %1432 = load i32, ptr %1431, align 4, !tbaa !9
  %1433 = mul nsw i32 %1430, %1432
  %1434 = add nsw i32 %1433, 1
  store i32 %1434, ptr %40, align 4, !tbaa !9
  br label %1435

1435:                                             ; preds = %1606, %1422
  %1436 = load i32, ptr %25, align 4, !tbaa !9
  %1437 = icmp slt i32 %1436, 0
  br i1 %1437, label %1438, label %1442

1438:                                             ; preds = %1435
  %1439 = load i32, ptr %40, align 4, !tbaa !9
  %1440 = icmp sge i32 %1439, 1
  %1441 = zext i1 %1440 to i32
  br label %1446

1442:                                             ; preds = %1435
  %1443 = load i32, ptr %40, align 4, !tbaa !9
  %1444 = icmp sle i32 %1443, 1
  %1445 = zext i1 %1444 to i32
  br label %1446

1446:                                             ; preds = %1442, %1438
  %1447 = phi i32 [ %1441, %1438 ], [ %1445, %1442 ]
  %1448 = icmp ne i32 %1447, 0
  br i1 %1448, label %1449, label %1610

1449:                                             ; preds = %1446
  %1450 = load ptr, ptr %13, align 8, !tbaa !5
  %1451 = load i32, ptr %1450, align 4, !tbaa !9
  store i32 %1451, ptr %26, align 4, !tbaa !9
  %1452 = load i32, ptr %41, align 4, !tbaa !9
  %1453 = load i32, ptr %40, align 4, !tbaa !9
  %1454 = sub nsw i32 %1452, %1453
  %1455 = add nsw i32 %1454, 1
  store i32 %1455, ptr %27, align 4, !tbaa !9
  %1456 = load i32, ptr %26, align 4, !tbaa !9
  %1457 = load i32, ptr %27, align 4, !tbaa !9
  %1458 = icmp sle i32 %1456, %1457
  br i1 %1458, label %1459, label %1461

1459:                                             ; preds = %1449
  %1460 = load i32, ptr %26, align 4, !tbaa !9
  br label %1463

1461:                                             ; preds = %1449
  %1462 = load i32, ptr %27, align 4, !tbaa !9
  br label %1463

1463:                                             ; preds = %1461, %1459
  %1464 = phi i32 [ %1460, %1459 ], [ %1462, %1461 ]
  store i32 %1464, ptr %49, align 4, !tbaa !9
  %1465 = load i32, ptr %40, align 4, !tbaa !9
  %1466 = load i32, ptr %49, align 4, !tbaa !9
  %1467 = add nsw i32 %1465, %1466
  %1468 = sub nsw i32 %1467, 1
  store i32 %1468, ptr %26, align 4, !tbaa !9
  %1469 = load i32, ptr %40, align 4, !tbaa !9
  store i32 %1469, ptr %50, align 4, !tbaa !9
  br label %1470

1470:                                             ; preds = %1567, %1463
  %1471 = load i32, ptr %50, align 4, !tbaa !9
  %1472 = load i32, ptr %26, align 4, !tbaa !9
  %1473 = icmp sle i32 %1471, %1472
  br i1 %1473, label %1474, label %1570

1474:                                             ; preds = %1470
  %1475 = load i32, ptr %50, align 4, !tbaa !9
  %1476 = load i32, ptr %50, align 4, !tbaa !9
  %1477 = load i32, ptr %21, align 4, !tbaa !9
  %1478 = mul nsw i32 %1476, %1477
  %1479 = add nsw i32 %1475, %1478
  store i32 %1479, ptr %27, align 4, !tbaa !9
  %1480 = load i32, ptr %50, align 4, !tbaa !9
  %1481 = load i32, ptr %50, align 4, !tbaa !9
  %1482 = load i32, ptr %21, align 4, !tbaa !9
  %1483 = mul nsw i32 %1481, %1482
  %1484 = add nsw i32 %1480, %1483
  store i32 %1484, ptr %28, align 4, !tbaa !9
  %1485 = load ptr, ptr %15, align 8, !tbaa !5
  %1486 = load i32, ptr %28, align 4, !tbaa !9
  %1487 = sext i32 %1486 to i64
  %1488 = getelementptr inbounds %struct.doublecomplex, ptr %1485, i64 %1487
  %1489 = getelementptr inbounds %struct.doublecomplex, ptr %1488, i32 0, i32 0
  %1490 = load double, ptr %1489, align 8, !tbaa !13
  store double %1490, ptr %30, align 8, !tbaa !11
  %1491 = load double, ptr %30, align 8, !tbaa !11
  %1492 = load ptr, ptr %15, align 8, !tbaa !5
  %1493 = load i32, ptr %27, align 4, !tbaa !9
  %1494 = sext i32 %1493 to i64
  %1495 = getelementptr inbounds %struct.doublecomplex, ptr %1492, i64 %1494
  %1496 = getelementptr inbounds %struct.doublecomplex, ptr %1495, i32 0, i32 0
  store double %1491, ptr %1496, align 8, !tbaa !13
  %1497 = load ptr, ptr %15, align 8, !tbaa !5
  %1498 = load i32, ptr %27, align 4, !tbaa !9
  %1499 = sext i32 %1498 to i64
  %1500 = getelementptr inbounds %struct.doublecomplex, ptr %1497, i64 %1499
  %1501 = getelementptr inbounds %struct.doublecomplex, ptr %1500, i32 0, i32 1
  store double 0.000000e+00, ptr %1501, align 8, !tbaa !15
  %1502 = load i32, ptr %50, align 4, !tbaa !9
  %1503 = load i32, ptr %40, align 4, !tbaa !9
  %1504 = sub nsw i32 %1502, %1503
  %1505 = add nsw i32 %1504, 1
  store i32 %1505, ptr %27, align 4, !tbaa !9
  %1506 = load ptr, ptr %12, align 8, !tbaa !5
  %1507 = load i32, ptr %1506, align 4, !tbaa !9
  %1508 = load i32, ptr %41, align 4, !tbaa !9
  %1509 = sub nsw i32 %1507, %1508
  store i32 %1509, ptr %28, align 4, !tbaa !9
  %1510 = getelementptr inbounds %struct.doublecomplex, ptr %34, i32 0, i32 0
  store double -1.000000e+00, ptr %1510, align 8, !tbaa !13
  %1511 = getelementptr inbounds %struct.doublecomplex, ptr %34, i32 0, i32 1
  store double 0.000000e+00, ptr %1511, align 8, !tbaa !15
  %1512 = load ptr, ptr %15, align 8, !tbaa !5
  %1513 = load i32, ptr %40, align 4, !tbaa !9
  %1514 = load i32, ptr %41, align 4, !tbaa !9
  %1515 = add nsw i32 %1514, 1
  %1516 = load i32, ptr %21, align 4, !tbaa !9
  %1517 = mul nsw i32 %1515, %1516
  %1518 = add nsw i32 %1513, %1517
  %1519 = sext i32 %1518 to i64
  %1520 = getelementptr inbounds %struct.doublecomplex, ptr %1512, i64 %1519
  %1521 = load ptr, ptr %16, align 8, !tbaa !5
  %1522 = load ptr, ptr %18, align 8, !tbaa !5
  %1523 = load i32, ptr %50, align 4, !tbaa !9
  %1524 = load i32, ptr %55, align 4, !tbaa !9
  %1525 = add nsw i32 %1524, 1
  %1526 = load i32, ptr %23, align 4, !tbaa !9
  %1527 = mul nsw i32 %1525, %1526
  %1528 = add nsw i32 %1523, %1527
  %1529 = sext i32 %1528 to i64
  %1530 = getelementptr inbounds %struct.doublecomplex, ptr %1522, i64 %1529
  %1531 = load ptr, ptr %19, align 8, !tbaa !5
  %1532 = load ptr, ptr %15, align 8, !tbaa !5
  %1533 = load i32, ptr %40, align 4, !tbaa !9
  %1534 = load i32, ptr %50, align 4, !tbaa !9
  %1535 = load i32, ptr %21, align 4, !tbaa !9
  %1536 = mul nsw i32 %1534, %1535
  %1537 = add nsw i32 %1533, %1536
  %1538 = sext i32 %1537 to i64
  %1539 = getelementptr inbounds %struct.doublecomplex, ptr %1532, i64 %1538
  call void @zgemv_(ptr noundef @.str.1, ptr noundef %27, ptr noundef %28, ptr noundef %34, ptr noundef %1520, ptr noundef %1521, ptr noundef %1530, ptr noundef %1531, ptr noundef @c_b1, ptr noundef %1539, ptr noundef @c__1)
  %1540 = load i32, ptr %50, align 4, !tbaa !9
  %1541 = load i32, ptr %50, align 4, !tbaa !9
  %1542 = load i32, ptr %21, align 4, !tbaa !9
  %1543 = mul nsw i32 %1541, %1542
  %1544 = add nsw i32 %1540, %1543
  store i32 %1544, ptr %27, align 4, !tbaa !9
  %1545 = load i32, ptr %50, align 4, !tbaa !9
  %1546 = load i32, ptr %50, align 4, !tbaa !9
  %1547 = load i32, ptr %21, align 4, !tbaa !9
  %1548 = mul nsw i32 %1546, %1547
  %1549 = add nsw i32 %1545, %1548
  store i32 %1549, ptr %28, align 4, !tbaa !9
  %1550 = load ptr, ptr %15, align 8, !tbaa !5
  %1551 = load i32, ptr %28, align 4, !tbaa !9
  %1552 = sext i32 %1551 to i64
  %1553 = getelementptr inbounds %struct.doublecomplex, ptr %1550, i64 %1552
  %1554 = getelementptr inbounds %struct.doublecomplex, ptr %1553, i32 0, i32 0
  %1555 = load double, ptr %1554, align 8, !tbaa !13
  store double %1555, ptr %30, align 8, !tbaa !11
  %1556 = load double, ptr %30, align 8, !tbaa !11
  %1557 = load ptr, ptr %15, align 8, !tbaa !5
  %1558 = load i32, ptr %27, align 4, !tbaa !9
  %1559 = sext i32 %1558 to i64
  %1560 = getelementptr inbounds %struct.doublecomplex, ptr %1557, i64 %1559
  %1561 = getelementptr inbounds %struct.doublecomplex, ptr %1560, i32 0, i32 0
  store double %1556, ptr %1561, align 8, !tbaa !13
  %1562 = load ptr, ptr %15, align 8, !tbaa !5
  %1563 = load i32, ptr %27, align 4, !tbaa !9
  %1564 = sext i32 %1563 to i64
  %1565 = getelementptr inbounds %struct.doublecomplex, ptr %1562, i64 %1564
  %1566 = getelementptr inbounds %struct.doublecomplex, ptr %1565, i32 0, i32 1
  store double 0.000000e+00, ptr %1566, align 8, !tbaa !15
  br label %1567

1567:                                             ; preds = %1474
  %1568 = load i32, ptr %50, align 4, !tbaa !9
  %1569 = add nsw i32 %1568, 1
  store i32 %1569, ptr %50, align 4, !tbaa !9
  br label %1470, !llvm.loop !18

1570:                                             ; preds = %1470
  %1571 = load i32, ptr %40, align 4, !tbaa !9
  %1572 = sub nsw i32 %1571, 1
  store i32 %1572, ptr %26, align 4, !tbaa !9
  %1573 = load ptr, ptr %12, align 8, !tbaa !5
  %1574 = load i32, ptr %1573, align 4, !tbaa !9
  %1575 = load i32, ptr %41, align 4, !tbaa !9
  %1576 = sub nsw i32 %1574, %1575
  store i32 %1576, ptr %27, align 4, !tbaa !9
  %1577 = getelementptr inbounds %struct.doublecomplex, ptr %34, i32 0, i32 0
  store double -1.000000e+00, ptr %1577, align 8, !tbaa !13
  %1578 = getelementptr inbounds %struct.doublecomplex, ptr %34, i32 0, i32 1
  store double 0.000000e+00, ptr %1578, align 8, !tbaa !15
  %1579 = load ptr, ptr %15, align 8, !tbaa !5
  %1580 = load i32, ptr %41, align 4, !tbaa !9
  %1581 = add nsw i32 %1580, 1
  %1582 = load i32, ptr %21, align 4, !tbaa !9
  %1583 = mul nsw i32 %1581, %1582
  %1584 = add nsw i32 %1583, 1
  %1585 = sext i32 %1584 to i64
  %1586 = getelementptr inbounds %struct.doublecomplex, ptr %1579, i64 %1585
  %1587 = load ptr, ptr %16, align 8, !tbaa !5
  %1588 = load ptr, ptr %18, align 8, !tbaa !5
  %1589 = load i32, ptr %40, align 4, !tbaa !9
  %1590 = load i32, ptr %55, align 4, !tbaa !9
  %1591 = add nsw i32 %1590, 1
  %1592 = load i32, ptr %23, align 4, !tbaa !9
  %1593 = mul nsw i32 %1591, %1592
  %1594 = add nsw i32 %1589, %1593
  %1595 = sext i32 %1594 to i64
  %1596 = getelementptr inbounds %struct.doublecomplex, ptr %1588, i64 %1595
  %1597 = load ptr, ptr %19, align 8, !tbaa !5
  %1598 = load ptr, ptr %15, align 8, !tbaa !5
  %1599 = load i32, ptr %40, align 4, !tbaa !9
  %1600 = load i32, ptr %21, align 4, !tbaa !9
  %1601 = mul nsw i32 %1599, %1600
  %1602 = add nsw i32 %1601, 1
  %1603 = sext i32 %1602 to i64
  %1604 = getelementptr inbounds %struct.doublecomplex, ptr %1598, i64 %1603
  %1605 = load ptr, ptr %16, align 8, !tbaa !5
  call void @zgemm_(ptr noundef @.str.1, ptr noundef @.str.2, ptr noundef %26, ptr noundef %49, ptr noundef %27, ptr noundef %34, ptr noundef %1586, ptr noundef %1587, ptr noundef %1596, ptr noundef %1597, ptr noundef @c_b1, ptr noundef %1604, ptr noundef %1605)
  br label %1606

1606:                                             ; preds = %1570
  %1607 = load i32, ptr %25, align 4, !tbaa !9
  %1608 = load i32, ptr %40, align 4, !tbaa !9
  %1609 = add nsw i32 %1608, %1607
  store i32 %1609, ptr %40, align 4, !tbaa !9
  br label %1435, !llvm.loop !19

1610:                                             ; preds = %1446
  %1611 = load i32, ptr %41, align 4, !tbaa !9
  %1612 = add nsw i32 %1611, 1
  store i32 %1612, ptr %40, align 4, !tbaa !9
  br label %1613

1613:                                             ; preds = %1667, %1610
  %1614 = load i32, ptr %40, align 4, !tbaa !9
  store i32 %1614, ptr %50, align 4, !tbaa !9
  %1615 = load ptr, ptr %17, align 8, !tbaa !5
  %1616 = load i32, ptr %40, align 4, !tbaa !9
  %1617 = sext i32 %1616 to i64
  %1618 = getelementptr inbounds i32, ptr %1615, i64 %1617
  %1619 = load i32, ptr %1618, align 4, !tbaa !9
  store i32 %1619, ptr %52, align 4, !tbaa !9
  %1620 = load i32, ptr %52, align 4, !tbaa !9
  %1621 = icmp slt i32 %1620, 0
  br i1 %1621, label %1622, label %1627

1622:                                             ; preds = %1613
  %1623 = load i32, ptr %52, align 4, !tbaa !9
  %1624 = sub nsw i32 0, %1623
  store i32 %1624, ptr %52, align 4, !tbaa !9
  %1625 = load i32, ptr %40, align 4, !tbaa !9
  %1626 = add nsw i32 %1625, 1
  store i32 %1626, ptr %40, align 4, !tbaa !9
  br label %1627

1627:                                             ; preds = %1622, %1613
  %1628 = load i32, ptr %40, align 4, !tbaa !9
  %1629 = add nsw i32 %1628, 1
  store i32 %1629, ptr %40, align 4, !tbaa !9
  %1630 = load i32, ptr %52, align 4, !tbaa !9
  %1631 = load i32, ptr %50, align 4, !tbaa !9
  %1632 = icmp ne i32 %1630, %1631
  br i1 %1632, label %1633, label %1662

1633:                                             ; preds = %1627
  %1634 = load i32, ptr %40, align 4, !tbaa !9
  %1635 = load ptr, ptr %12, align 8, !tbaa !5
  %1636 = load i32, ptr %1635, align 4, !tbaa !9
  %1637 = icmp sle i32 %1634, %1636
  br i1 %1637, label %1638, label %1662

1638:                                             ; preds = %1633
  %1639 = load ptr, ptr %12, align 8, !tbaa !5
  %1640 = load i32, ptr %1639, align 4, !tbaa !9
  %1641 = load i32, ptr %40, align 4, !tbaa !9
  %1642 = sub nsw i32 %1640, %1641
  %1643 = add nsw i32 %1642, 1
  store i32 %1643, ptr %25, align 4, !tbaa !9
  %1644 = load ptr, ptr %15, align 8, !tbaa !5
  %1645 = load i32, ptr %52, align 4, !tbaa !9
  %1646 = load i32, ptr %40, align 4, !tbaa !9
  %1647 = load i32, ptr %21, align 4, !tbaa !9
  %1648 = mul nsw i32 %1646, %1647
  %1649 = add nsw i32 %1645, %1648
  %1650 = sext i32 %1649 to i64
  %1651 = getelementptr inbounds %struct.doublecomplex, ptr %1644, i64 %1650
  %1652 = load ptr, ptr %16, align 8, !tbaa !5
  %1653 = load ptr, ptr %15, align 8, !tbaa !5
  %1654 = load i32, ptr %50, align 4, !tbaa !9
  %1655 = load i32, ptr %40, align 4, !tbaa !9
  %1656 = load i32, ptr %21, align 4, !tbaa !9
  %1657 = mul nsw i32 %1655, %1656
  %1658 = add nsw i32 %1654, %1657
  %1659 = sext i32 %1658 to i64
  %1660 = getelementptr inbounds %struct.doublecomplex, ptr %1653, i64 %1659
  %1661 = load ptr, ptr %16, align 8, !tbaa !5
  call void @zswap_(ptr noundef %25, ptr noundef %1651, ptr noundef %1652, ptr noundef %1660, ptr noundef %1661)
  br label %1662

1662:                                             ; preds = %1638, %1633, %1627
  %1663 = load i32, ptr %40, align 4, !tbaa !9
  %1664 = load ptr, ptr %12, align 8, !tbaa !5
  %1665 = load i32, ptr %1664, align 4, !tbaa !9
  %1666 = icmp slt i32 %1663, %1665
  br i1 %1666, label %1667, label %1668

1667:                                             ; preds = %1662
  br label %1613

1668:                                             ; preds = %1662
  %1669 = load ptr, ptr %12, align 8, !tbaa !5
  %1670 = load i32, ptr %1669, align 4, !tbaa !9
  %1671 = load i32, ptr %41, align 4, !tbaa !9
  %1672 = sub nsw i32 %1670, %1671
  %1673 = load ptr, ptr %14, align 8, !tbaa !5
  store i32 %1672, ptr %1673, align 4, !tbaa !9
  br label %3277

1674:                                             ; preds = %10
  store i32 1, ptr %41, align 4, !tbaa !9
  br label %1675

1675:                                             ; preds = %3036, %1674
  %1676 = load i32, ptr %41, align 4, !tbaa !9
  %1677 = load ptr, ptr %13, align 8, !tbaa !5
  %1678 = load i32, ptr %1677, align 4, !tbaa !9
  %1679 = icmp sge i32 %1676, %1678
  br i1 %1679, label %1680, label %1686

1680:                                             ; preds = %1675
  %1681 = load ptr, ptr %13, align 8, !tbaa !5
  %1682 = load i32, ptr %1681, align 4, !tbaa !9
  %1683 = load ptr, ptr %12, align 8, !tbaa !5
  %1684 = load i32, ptr %1683, align 4, !tbaa !9
  %1685 = icmp slt i32 %1682, %1684
  br i1 %1685, label %1691, label %1686

1686:                                             ; preds = %1680, %1675
  %1687 = load i32, ptr %41, align 4, !tbaa !9
  %1688 = load ptr, ptr %12, align 8, !tbaa !5
  %1689 = load i32, ptr %1688, align 4, !tbaa !9
  %1690 = icmp sgt i32 %1687, %1689
  br i1 %1690, label %1691, label %1692

1691:                                             ; preds = %1686, %1680
  br label %3040

1692:                                             ; preds = %1686
  store i32 1, ptr %44, align 4, !tbaa !9
  %1693 = load i32, ptr %41, align 4, !tbaa !9
  %1694 = load i32, ptr %41, align 4, !tbaa !9
  %1695 = load i32, ptr %23, align 4, !tbaa !9
  %1696 = mul nsw i32 %1694, %1695
  %1697 = add nsw i32 %1693, %1696
  store i32 %1697, ptr %25, align 4, !tbaa !9
  %1698 = load i32, ptr %41, align 4, !tbaa !9
  %1699 = load i32, ptr %41, align 4, !tbaa !9
  %1700 = load i32, ptr %21, align 4, !tbaa !9
  %1701 = mul nsw i32 %1699, %1700
  %1702 = add nsw i32 %1698, %1701
  store i32 %1702, ptr %26, align 4, !tbaa !9
  %1703 = load ptr, ptr %15, align 8, !tbaa !5
  %1704 = load i32, ptr %26, align 4, !tbaa !9
  %1705 = sext i32 %1704 to i64
  %1706 = getelementptr inbounds %struct.doublecomplex, ptr %1703, i64 %1705
  %1707 = getelementptr inbounds %struct.doublecomplex, ptr %1706, i32 0, i32 0
  %1708 = load double, ptr %1707, align 8, !tbaa !13
  store double %1708, ptr %30, align 8, !tbaa !11
  %1709 = load double, ptr %30, align 8, !tbaa !11
  %1710 = load ptr, ptr %18, align 8, !tbaa !5
  %1711 = load i32, ptr %25, align 4, !tbaa !9
  %1712 = sext i32 %1711 to i64
  %1713 = getelementptr inbounds %struct.doublecomplex, ptr %1710, i64 %1712
  %1714 = getelementptr inbounds %struct.doublecomplex, ptr %1713, i32 0, i32 0
  store double %1709, ptr %1714, align 8, !tbaa !13
  %1715 = load ptr, ptr %18, align 8, !tbaa !5
  %1716 = load i32, ptr %25, align 4, !tbaa !9
  %1717 = sext i32 %1716 to i64
  %1718 = getelementptr inbounds %struct.doublecomplex, ptr %1715, i64 %1717
  %1719 = getelementptr inbounds %struct.doublecomplex, ptr %1718, i32 0, i32 1
  store double 0.000000e+00, ptr %1719, align 8, !tbaa !15
  %1720 = load i32, ptr %41, align 4, !tbaa !9
  %1721 = load ptr, ptr %12, align 8, !tbaa !5
  %1722 = load i32, ptr %1721, align 4, !tbaa !9
  %1723 = icmp slt i32 %1720, %1722
  br i1 %1723, label %1724, label %1747

1724:                                             ; preds = %1692
  %1725 = load ptr, ptr %12, align 8, !tbaa !5
  %1726 = load i32, ptr %1725, align 4, !tbaa !9
  %1727 = load i32, ptr %41, align 4, !tbaa !9
  %1728 = sub nsw i32 %1726, %1727
  store i32 %1728, ptr %25, align 4, !tbaa !9
  %1729 = load ptr, ptr %15, align 8, !tbaa !5
  %1730 = load i32, ptr %41, align 4, !tbaa !9
  %1731 = add nsw i32 %1730, 1
  %1732 = load i32, ptr %41, align 4, !tbaa !9
  %1733 = load i32, ptr %21, align 4, !tbaa !9
  %1734 = mul nsw i32 %1732, %1733
  %1735 = add nsw i32 %1731, %1734
  %1736 = sext i32 %1735 to i64
  %1737 = getelementptr inbounds %struct.doublecomplex, ptr %1729, i64 %1736
  %1738 = load ptr, ptr %18, align 8, !tbaa !5
  %1739 = load i32, ptr %41, align 4, !tbaa !9
  %1740 = add nsw i32 %1739, 1
  %1741 = load i32, ptr %41, align 4, !tbaa !9
  %1742 = load i32, ptr %23, align 4, !tbaa !9
  %1743 = mul nsw i32 %1741, %1742
  %1744 = add nsw i32 %1740, %1743
  %1745 = sext i32 %1744 to i64
  %1746 = getelementptr inbounds %struct.doublecomplex, ptr %1738, i64 %1745
  call void @zcopy_(ptr noundef %25, ptr noundef %1737, ptr noundef @c__1, ptr noundef %1746, ptr noundef @c__1)
  br label %1747

1747:                                             ; preds = %1724, %1692
  %1748 = load ptr, ptr %12, align 8, !tbaa !5
  %1749 = load i32, ptr %1748, align 4, !tbaa !9
  %1750 = load i32, ptr %41, align 4, !tbaa !9
  %1751 = sub nsw i32 %1749, %1750
  %1752 = add nsw i32 %1751, 1
  store i32 %1752, ptr %25, align 4, !tbaa !9
  %1753 = load i32, ptr %41, align 4, !tbaa !9
  %1754 = sub nsw i32 %1753, 1
  store i32 %1754, ptr %26, align 4, !tbaa !9
  %1755 = getelementptr inbounds %struct.doublecomplex, ptr %34, i32 0, i32 0
  store double -1.000000e+00, ptr %1755, align 8, !tbaa !13
  %1756 = getelementptr inbounds %struct.doublecomplex, ptr %34, i32 0, i32 1
  store double 0.000000e+00, ptr %1756, align 8, !tbaa !15
  %1757 = load ptr, ptr %15, align 8, !tbaa !5
  %1758 = load i32, ptr %41, align 4, !tbaa !9
  %1759 = load i32, ptr %21, align 4, !tbaa !9
  %1760 = add nsw i32 %1758, %1759
  %1761 = sext i32 %1760 to i64
  %1762 = getelementptr inbounds %struct.doublecomplex, ptr %1757, i64 %1761
  %1763 = load ptr, ptr %16, align 8, !tbaa !5
  %1764 = load ptr, ptr %18, align 8, !tbaa !5
  %1765 = load i32, ptr %41, align 4, !tbaa !9
  %1766 = load i32, ptr %23, align 4, !tbaa !9
  %1767 = add nsw i32 %1765, %1766
  %1768 = sext i32 %1767 to i64
  %1769 = getelementptr inbounds %struct.doublecomplex, ptr %1764, i64 %1768
  %1770 = load ptr, ptr %19, align 8, !tbaa !5
  %1771 = load ptr, ptr %18, align 8, !tbaa !5
  %1772 = load i32, ptr %41, align 4, !tbaa !9
  %1773 = load i32, ptr %41, align 4, !tbaa !9
  %1774 = load i32, ptr %23, align 4, !tbaa !9
  %1775 = mul nsw i32 %1773, %1774
  %1776 = add nsw i32 %1772, %1775
  %1777 = sext i32 %1776 to i64
  %1778 = getelementptr inbounds %struct.doublecomplex, ptr %1771, i64 %1777
  call void @zgemv_(ptr noundef @.str.1, ptr noundef %25, ptr noundef %26, ptr noundef %34, ptr noundef %1762, ptr noundef %1763, ptr noundef %1769, ptr noundef %1770, ptr noundef @c_b1, ptr noundef %1778, ptr noundef @c__1)
  %1779 = load i32, ptr %41, align 4, !tbaa !9
  %1780 = load i32, ptr %41, align 4, !tbaa !9
  %1781 = load i32, ptr %23, align 4, !tbaa !9
  %1782 = mul nsw i32 %1780, %1781
  %1783 = add nsw i32 %1779, %1782
  store i32 %1783, ptr %25, align 4, !tbaa !9
  %1784 = load i32, ptr %41, align 4, !tbaa !9
  %1785 = load i32, ptr %41, align 4, !tbaa !9
  %1786 = load i32, ptr %23, align 4, !tbaa !9
  %1787 = mul nsw i32 %1785, %1786
  %1788 = add nsw i32 %1784, %1787
  store i32 %1788, ptr %26, align 4, !tbaa !9
  %1789 = load ptr, ptr %18, align 8, !tbaa !5
  %1790 = load i32, ptr %26, align 4, !tbaa !9
  %1791 = sext i32 %1790 to i64
  %1792 = getelementptr inbounds %struct.doublecomplex, ptr %1789, i64 %1791
  %1793 = getelementptr inbounds %struct.doublecomplex, ptr %1792, i32 0, i32 0
  %1794 = load double, ptr %1793, align 8, !tbaa !13
  store double %1794, ptr %30, align 8, !tbaa !11
  %1795 = load double, ptr %30, align 8, !tbaa !11
  %1796 = load ptr, ptr %18, align 8, !tbaa !5
  %1797 = load i32, ptr %25, align 4, !tbaa !9
  %1798 = sext i32 %1797 to i64
  %1799 = getelementptr inbounds %struct.doublecomplex, ptr %1796, i64 %1798
  %1800 = getelementptr inbounds %struct.doublecomplex, ptr %1799, i32 0, i32 0
  store double %1795, ptr %1800, align 8, !tbaa !13
  %1801 = load ptr, ptr %18, align 8, !tbaa !5
  %1802 = load i32, ptr %25, align 4, !tbaa !9
  %1803 = sext i32 %1802 to i64
  %1804 = getelementptr inbounds %struct.doublecomplex, ptr %1801, i64 %1803
  %1805 = getelementptr inbounds %struct.doublecomplex, ptr %1804, i32 0, i32 1
  store double 0.000000e+00, ptr %1805, align 8, !tbaa !15
  %1806 = load i32, ptr %41, align 4, !tbaa !9
  %1807 = load i32, ptr %41, align 4, !tbaa !9
  %1808 = load i32, ptr %23, align 4, !tbaa !9
  %1809 = mul nsw i32 %1807, %1808
  %1810 = add nsw i32 %1806, %1809
  store i32 %1810, ptr %25, align 4, !tbaa !9
  %1811 = load ptr, ptr %18, align 8, !tbaa !5
  %1812 = load i32, ptr %25, align 4, !tbaa !9
  %1813 = sext i32 %1812 to i64
  %1814 = getelementptr inbounds %struct.doublecomplex, ptr %1811, 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 = fcmp oge double %1817, 0.000000e+00
  br i1 %1818, label %1819, label %1821

1819:                                             ; preds = %1747
  %1820 = load double, ptr %30, align 8, !tbaa !11
  br label %1824

1821:                                             ; preds = %1747
  %1822 = load double, ptr %30, align 8, !tbaa !11
  %1823 = fneg double %1822
  br label %1824

1824:                                             ; preds = %1821, %1819
  %1825 = phi double [ %1820, %1819 ], [ %1823, %1821 ]
  store double %1825, ptr %54, align 8, !tbaa !11
  %1826 = load i32, ptr %41, align 4, !tbaa !9
  %1827 = load ptr, ptr %12, align 8, !tbaa !5
  %1828 = load i32, ptr %1827, align 4, !tbaa !9
  %1829 = icmp slt i32 %1826, %1828
  br i1 %1829, label %1830, label %1888

1830:                                             ; preds = %1824
  %1831 = load ptr, ptr %12, align 8, !tbaa !5
  %1832 = load i32, ptr %1831, align 4, !tbaa !9
  %1833 = load i32, ptr %41, align 4, !tbaa !9
  %1834 = sub nsw i32 %1832, %1833
  store i32 %1834, ptr %25, align 4, !tbaa !9
  %1835 = load i32, ptr %41, align 4, !tbaa !9
  %1836 = load ptr, ptr %18, align 8, !tbaa !5
  %1837 = load i32, ptr %41, align 4, !tbaa !9
  %1838 = add nsw i32 %1837, 1
  %1839 = load i32, ptr %41, align 4, !tbaa !9
  %1840 = load i32, ptr %23, align 4, !tbaa !9
  %1841 = mul nsw i32 %1839, %1840
  %1842 = add nsw i32 %1838, %1841
  %1843 = sext i32 %1842 to i64
  %1844 = getelementptr inbounds %struct.doublecomplex, ptr %1836, i64 %1843
  %1845 = call i32 @izamax_(ptr noundef %25, ptr noundef %1844, ptr noundef @c__1)
  %1846 = add nsw i32 %1835, %1845
  store i32 %1846, ptr %38, align 4, !tbaa !9
  %1847 = load i32, ptr %38, align 4, !tbaa !9
  %1848 = load i32, ptr %41, align 4, !tbaa !9
  %1849 = load i32, ptr %23, align 4, !tbaa !9
  %1850 = mul nsw i32 %1848, %1849
  %1851 = add nsw i32 %1847, %1850
  store i32 %1851, ptr %25, align 4, !tbaa !9
  %1852 = load ptr, ptr %18, align 8, !tbaa !5
  %1853 = load i32, ptr %25, align 4, !tbaa !9
  %1854 = sext i32 %1853 to i64
  %1855 = getelementptr inbounds %struct.doublecomplex, ptr %1852, i64 %1854
  %1856 = getelementptr inbounds %struct.doublecomplex, ptr %1855, i32 0, i32 0
  %1857 = load double, ptr %1856, align 8, !tbaa !13
  store double %1857, ptr %30, align 8, !tbaa !11
  %1858 = load double, ptr %30, align 8, !tbaa !11
  %1859 = fcmp oge double %1858, 0.000000e+00
  br i1 %1859, label %1860, label %1862

1860:                                             ; preds = %1830
  %1861 = load double, ptr %30, align 8, !tbaa !11
  br label %1865

1862:                                             ; preds = %1830
  %1863 = load double, ptr %30, align 8, !tbaa !11
  %1864 = fneg double %1863
  br label %1865

1865:                                             ; preds = %1862, %1860
  %1866 = phi double [ %1861, %1860 ], [ %1864, %1862 ]
  %1867 = load ptr, ptr %18, align 8, !tbaa !5
  %1868 = load i32, ptr %38, align 4, !tbaa !9
  %1869 = load i32, ptr %41, align 4, !tbaa !9
  %1870 = load i32, ptr %23, align 4, !tbaa !9
  %1871 = mul nsw i32 %1869, %1870
  %1872 = add nsw i32 %1868, %1871
  %1873 = sext i32 %1872 to i64
  %1874 = getelementptr inbounds %struct.doublecomplex, ptr %1867, i64 %1873
  %1875 = call { double, double } @Cd(ptr noundef %1874)
  %1876 = extractvalue { double, double } %1875, 0
  %1877 = extractvalue { double, double } %1875, 1
  store double %1877, ptr %31, align 8, !tbaa !11
  %1878 = load double, ptr %31, align 8, !tbaa !11
  %1879 = fcmp oge double %1878, 0.000000e+00
  br i1 %1879, label %1880, label %1882

1880:                                             ; preds = %1865
  %1881 = load double, ptr %31, align 8, !tbaa !11
  br label %1885

1882:                                             ; preds = %1865
  %1883 = load double, ptr %31, align 8, !tbaa !11
  %1884 = fneg double %1883
  br label %1885

1885:                                             ; preds = %1882, %1880
  %1886 = phi double [ %1881, %1880 ], [ %1884, %1882 ]
  %1887 = fadd double %1866, %1886
  store double %1887, ptr %56, align 8, !tbaa !11
  br label %1889

1888:                                             ; preds = %1824
  store double 0.000000e+00, ptr %56, align 8, !tbaa !11
  br label %1889

1889:                                             ; preds = %1888, %1885
  %1890 = load double, ptr %54, align 8, !tbaa !11
  %1891 = load double, ptr %56, align 8, !tbaa !11
  %1892 = fcmp oge double %1890, %1891
  br i1 %1892, label %1893, label %1895

1893:                                             ; preds = %1889
  %1894 = load double, ptr %54, align 8, !tbaa !11
  br label %1897

1895:                                             ; preds = %1889
  %1896 = load double, ptr %56, align 8, !tbaa !11
  br label %1897

1897:                                             ; preds = %1895, %1893
  %1898 = phi double [ %1894, %1893 ], [ %1896, %1895 ]
  %1899 = fcmp oeq double %1898, 0.000000e+00
  br i1 %1899, label %1900, label %1936

1900:                                             ; preds = %1897
  %1901 = load ptr, ptr %20, align 8, !tbaa !5
  %1902 = load i32, ptr %1901, align 4, !tbaa !9
  %1903 = icmp eq i32 %1902, 0
  br i1 %1903, label %1904, label %1907

1904:                                             ; preds = %1900
  %1905 = load i32, ptr %41, align 4, !tbaa !9
  %1906 = load ptr, ptr %20, align 8, !tbaa !5
  store i32 %1905, ptr %1906, align 4, !tbaa !9
  br label %1907

1907:                                             ; preds = %1904, %1900
  %1908 = load i32, ptr %41, align 4, !tbaa !9
  store i32 %1908, ptr %53, align 4, !tbaa !9
  %1909 = load i32, ptr %41, align 4, !tbaa !9
  %1910 = load i32, ptr %41, align 4, !tbaa !9
  %1911 = load i32, ptr %21, align 4, !tbaa !9
  %1912 = mul nsw i32 %1910, %1911
  %1913 = add nsw i32 %1909, %1912
  store i32 %1913, ptr %25, align 4, !tbaa !9
  %1914 = load i32, ptr %41, align 4, !tbaa !9
  %1915 = load i32, ptr %41, align 4, !tbaa !9
  %1916 = load i32, ptr %21, align 4, !tbaa !9
  %1917 = mul nsw i32 %1915, %1916
  %1918 = add nsw i32 %1914, %1917
  store i32 %1918, ptr %26, align 4, !tbaa !9
  %1919 = load ptr, ptr %15, align 8, !tbaa !5
  %1920 = load i32, ptr %26, align 4, !tbaa !9
  %1921 = sext i32 %1920 to i64
  %1922 = getelementptr inbounds %struct.doublecomplex, ptr %1919, i64 %1921
  %1923 = getelementptr inbounds %struct.doublecomplex, ptr %1922, i32 0, i32 0
  %1924 = load double, ptr %1923, align 8, !tbaa !13
  store double %1924, ptr %30, align 8, !tbaa !11
  %1925 = load double, ptr %30, align 8, !tbaa !11
  %1926 = load ptr, ptr %15, align 8, !tbaa !5
  %1927 = load i32, ptr %25, align 4, !tbaa !9
  %1928 = sext i32 %1927 to i64
  %1929 = getelementptr inbounds %struct.doublecomplex, ptr %1926, i64 %1928
  %1930 = getelementptr inbounds %struct.doublecomplex, ptr %1929, i32 0, i32 0
  store double %1925, ptr %1930, align 8, !tbaa !13
  %1931 = load ptr, ptr %15, align 8, !tbaa !5
  %1932 = load i32, ptr %25, align 4, !tbaa !9
  %1933 = sext i32 %1932 to i64
  %1934 = getelementptr inbounds %struct.doublecomplex, ptr %1931, i64 %1933
  %1935 = getelementptr inbounds %struct.doublecomplex, ptr %1934, i32 0, i32 1
  store double 0.000000e+00, ptr %1935, align 8, !tbaa !15
  br label %3013

1936:                                             ; preds = %1897
  %1937 = load double, ptr %54, align 8, !tbaa !11
  %1938 = load double, ptr %43, align 8, !tbaa !11
  %1939 = load double, ptr %56, align 8, !tbaa !11
  %1940 = fmul double %1938, %1939
  %1941 = fcmp oge double %1937, %1940
  br i1 %1941, label %1942, label %1944

1942:                                             ; preds = %1936
  %1943 = load i32, ptr %41, align 4, !tbaa !9
  store i32 %1943, ptr %53, align 4, !tbaa !9
  br label %2296

1944:                                             ; preds = %1936
  %1945 = load i32, ptr %38, align 4, !tbaa !9
  %1946 = load i32, ptr %41, align 4, !tbaa !9
  %1947 = sub nsw i32 %1945, %1946
  store i32 %1947, ptr %25, align 4, !tbaa !9
  %1948 = load ptr, ptr %15, align 8, !tbaa !5
  %1949 = load i32, ptr %38, align 4, !tbaa !9
  %1950 = load i32, ptr %41, align 4, !tbaa !9
  %1951 = load i32, ptr %21, align 4, !tbaa !9
  %1952 = mul nsw i32 %1950, %1951
  %1953 = add nsw i32 %1949, %1952
  %1954 = sext i32 %1953 to i64
  %1955 = getelementptr inbounds %struct.doublecomplex, ptr %1948, i64 %1954
  %1956 = load ptr, ptr %16, align 8, !tbaa !5
  %1957 = load ptr, ptr %18, align 8, !tbaa !5
  %1958 = load i32, ptr %41, align 4, !tbaa !9
  %1959 = load i32, ptr %41, align 4, !tbaa !9
  %1960 = add nsw i32 %1959, 1
  %1961 = load i32, ptr %23, align 4, !tbaa !9
  %1962 = mul nsw i32 %1960, %1961
  %1963 = add nsw i32 %1958, %1962
  %1964 = sext i32 %1963 to i64
  %1965 = getelementptr inbounds %struct.doublecomplex, ptr %1957, i64 %1964
  call void @zcopy_(ptr noundef %25, ptr noundef %1955, ptr noundef %1956, ptr noundef %1965, ptr noundef @c__1)
  %1966 = load i32, ptr %38, align 4, !tbaa !9
  %1967 = load i32, ptr %41, align 4, !tbaa !9
  %1968 = sub nsw i32 %1966, %1967
  store i32 %1968, ptr %25, align 4, !tbaa !9
  %1969 = load ptr, ptr %18, align 8, !tbaa !5
  %1970 = load i32, ptr %41, align 4, !tbaa !9
  %1971 = load i32, ptr %41, align 4, !tbaa !9
  %1972 = add nsw i32 %1971, 1
  %1973 = load i32, ptr %23, align 4, !tbaa !9
  %1974 = mul nsw i32 %1972, %1973
  %1975 = add nsw i32 %1970, %1974
  %1976 = sext i32 %1975 to i64
  %1977 = getelementptr inbounds %struct.doublecomplex, ptr %1969, i64 %1976
  call void @zlacgv_(ptr noundef %25, ptr noundef %1977, ptr noundef @c__1)
  %1978 = load i32, ptr %38, align 4, !tbaa !9
  %1979 = load i32, ptr %41, align 4, !tbaa !9
  %1980 = add nsw i32 %1979, 1
  %1981 = load i32, ptr %23, align 4, !tbaa !9
  %1982 = mul nsw i32 %1980, %1981
  %1983 = add nsw i32 %1978, %1982
  store i32 %1983, ptr %25, align 4, !tbaa !9
  %1984 = load i32, ptr %38, align 4, !tbaa !9
  %1985 = load i32, ptr %38, align 4, !tbaa !9
  %1986 = load i32, ptr %21, align 4, !tbaa !9
  %1987 = mul nsw i32 %1985, %1986
  %1988 = add nsw i32 %1984, %1987
  store i32 %1988, ptr %26, align 4, !tbaa !9
  %1989 = load ptr, ptr %15, align 8, !tbaa !5
  %1990 = load i32, ptr %26, align 4, !tbaa !9
  %1991 = sext i32 %1990 to i64
  %1992 = getelementptr inbounds %struct.doublecomplex, ptr %1989, i64 %1991
  %1993 = getelementptr inbounds %struct.doublecomplex, ptr %1992, i32 0, i32 0
  %1994 = load double, ptr %1993, align 8, !tbaa !13
  store double %1994, ptr %30, align 8, !tbaa !11
  %1995 = load double, ptr %30, align 8, !tbaa !11
  %1996 = load ptr, ptr %18, align 8, !tbaa !5
  %1997 = load i32, ptr %25, align 4, !tbaa !9
  %1998 = sext i32 %1997 to i64
  %1999 = getelementptr inbounds %struct.doublecomplex, ptr %1996, i64 %1998
  %2000 = getelementptr inbounds %struct.doublecomplex, ptr %1999, i32 0, i32 0
  store double %1995, ptr %2000, align 8, !tbaa !13
  %2001 = load ptr, ptr %18, align 8, !tbaa !5
  %2002 = load i32, ptr %25, align 4, !tbaa !9
  %2003 = sext i32 %2002 to i64
  %2004 = getelementptr inbounds %struct.doublecomplex, ptr %2001, i64 %2003
  %2005 = getelementptr inbounds %struct.doublecomplex, ptr %2004, i32 0, i32 1
  store double 0.000000e+00, ptr %2005, align 8, !tbaa !15
  %2006 = load i32, ptr %38, align 4, !tbaa !9
  %2007 = load ptr, ptr %12, align 8, !tbaa !5
  %2008 = load i32, ptr %2007, align 4, !tbaa !9
  %2009 = icmp slt i32 %2006, %2008
  br i1 %2009, label %2010, label %2034

2010:                                             ; preds = %1944
  %2011 = load ptr, ptr %12, align 8, !tbaa !5
  %2012 = load i32, ptr %2011, align 4, !tbaa !9
  %2013 = load i32, ptr %38, align 4, !tbaa !9
  %2014 = sub nsw i32 %2012, %2013
  store i32 %2014, ptr %25, align 4, !tbaa !9
  %2015 = load ptr, ptr %15, align 8, !tbaa !5
  %2016 = load i32, ptr %38, align 4, !tbaa !9
  %2017 = add nsw i32 %2016, 1
  %2018 = load i32, ptr %38, align 4, !tbaa !9
  %2019 = load i32, ptr %21, align 4, !tbaa !9
  %2020 = mul nsw i32 %2018, %2019
  %2021 = add nsw i32 %2017, %2020
  %2022 = sext i32 %2021 to i64
  %2023 = getelementptr inbounds %struct.doublecomplex, ptr %2015, i64 %2022
  %2024 = load ptr, ptr %18, align 8, !tbaa !5
  %2025 = load i32, ptr %38, align 4, !tbaa !9
  %2026 = add nsw i32 %2025, 1
  %2027 = load i32, ptr %41, align 4, !tbaa !9
  %2028 = add nsw i32 %2027, 1
  %2029 = load i32, ptr %23, align 4, !tbaa !9
  %2030 = mul nsw i32 %2028, %2029
  %2031 = add nsw i32 %2026, %2030
  %2032 = sext i32 %2031 to i64
  %2033 = getelementptr inbounds %struct.doublecomplex, ptr %2024, i64 %2032
  call void @zcopy_(ptr noundef %25, ptr noundef %2023, ptr noundef @c__1, ptr noundef %2033, ptr noundef @c__1)
  br label %2034

2034:                                             ; preds = %2010, %1944
  %2035 = load ptr, ptr %12, align 8, !tbaa !5
  %2036 = load i32, ptr %2035, align 4, !tbaa !9
  %2037 = load i32, ptr %41, align 4, !tbaa !9
  %2038 = sub nsw i32 %2036, %2037
  %2039 = add nsw i32 %2038, 1
  store i32 %2039, ptr %25, align 4, !tbaa !9
  %2040 = load i32, ptr %41, align 4, !tbaa !9
  %2041 = sub nsw i32 %2040, 1
  store i32 %2041, ptr %26, align 4, !tbaa !9
  %2042 = getelementptr inbounds %struct.doublecomplex, ptr %34, i32 0, i32 0
  store double -1.000000e+00, ptr %2042, align 8, !tbaa !13
  %2043 = getelementptr inbounds %struct.doublecomplex, ptr %34, i32 0, i32 1
  store double 0.000000e+00, ptr %2043, align 8, !tbaa !15
  %2044 = load ptr, ptr %15, align 8, !tbaa !5
  %2045 = load i32, ptr %41, align 4, !tbaa !9
  %2046 = load i32, ptr %21, align 4, !tbaa !9
  %2047 = add nsw i32 %2045, %2046
  %2048 = sext i32 %2047 to i64
  %2049 = getelementptr inbounds %struct.doublecomplex, ptr %2044, i64 %2048
  %2050 = load ptr, ptr %16, align 8, !tbaa !5
  %2051 = load ptr, ptr %18, align 8, !tbaa !5
  %2052 = load i32, ptr %38, align 4, !tbaa !9
  %2053 = load i32, ptr %23, align 4, !tbaa !9
  %2054 = add nsw i32 %2052, %2053
  %2055 = sext i32 %2054 to i64
  %2056 = getelementptr inbounds %struct.doublecomplex, ptr %2051, i64 %2055
  %2057 = load ptr, ptr %19, align 8, !tbaa !5
  %2058 = load ptr, ptr %18, align 8, !tbaa !5
  %2059 = load i32, ptr %41, align 4, !tbaa !9
  %2060 = load i32, ptr %41, align 4, !tbaa !9
  %2061 = add nsw i32 %2060, 1
  %2062 = load i32, ptr %23, align 4, !tbaa !9
  %2063 = mul nsw i32 %2061, %2062
  %2064 = add nsw i32 %2059, %2063
  %2065 = sext i32 %2064 to i64
  %2066 = getelementptr inbounds %struct.doublecomplex, ptr %2058, i64 %2065
  call void @zgemv_(ptr noundef @.str.1, ptr noundef %25, ptr noundef %26, ptr noundef %34, ptr noundef %2049, ptr noundef %2050, ptr noundef %2056, ptr noundef %2057, ptr noundef @c_b1, ptr noundef %2066, ptr noundef @c__1)
  %2067 = load i32, ptr %38, align 4, !tbaa !9
  %2068 = load i32, ptr %41, align 4, !tbaa !9
  %2069 = add nsw i32 %2068, 1
  %2070 = load i32, ptr %23, align 4, !tbaa !9
  %2071 = mul nsw i32 %2069, %2070
  %2072 = add nsw i32 %2067, %2071
  store i32 %2072, ptr %25, align 4, !tbaa !9
  %2073 = load i32, ptr %38, align 4, !tbaa !9
  %2074 = load i32, ptr %41, align 4, !tbaa !9
  %2075 = add nsw i32 %2074, 1
  %2076 = load i32, ptr %23, align 4, !tbaa !9
  %2077 = mul nsw i32 %2075, %2076
  %2078 = add nsw i32 %2073, %2077
  store i32 %2078, ptr %26, align 4, !tbaa !9
  %2079 = load ptr, ptr %18, align 8, !tbaa !5
  %2080 = load i32, ptr %26, align 4, !tbaa !9
  %2081 = sext i32 %2080 to i64
  %2082 = getelementptr inbounds %struct.doublecomplex, ptr %2079, i64 %2081
  %2083 = getelementptr inbounds %struct.doublecomplex, ptr %2082, i32 0, i32 0
  %2084 = load double, ptr %2083, align 8, !tbaa !13
  store double %2084, ptr %30, align 8, !tbaa !11
  %2085 = load double, ptr %30, align 8, !tbaa !11
  %2086 = load ptr, ptr %18, align 8, !tbaa !5
  %2087 = load i32, ptr %25, align 4, !tbaa !9
  %2088 = sext i32 %2087 to i64
  %2089 = getelementptr inbounds %struct.doublecomplex, ptr %2086, i64 %2088
  %2090 = getelementptr inbounds %struct.doublecomplex, ptr %2089, i32 0, i32 0
  store double %2085, ptr %2090, align 8, !tbaa !13
  %2091 = load ptr, ptr %18, align 8, !tbaa !5
  %2092 = load i32, ptr %25, align 4, !tbaa !9
  %2093 = sext i32 %2092 to i64
  %2094 = getelementptr inbounds %struct.doublecomplex, ptr %2091, i64 %2093
  %2095 = getelementptr inbounds %struct.doublecomplex, ptr %2094, i32 0, i32 1
  store double 0.000000e+00, ptr %2095, align 8, !tbaa !15
  %2096 = load i32, ptr %38, align 4, !tbaa !9
  %2097 = load i32, ptr %41, align 4, !tbaa !9
  %2098 = sub nsw i32 %2096, %2097
  store i32 %2098, ptr %25, align 4, !tbaa !9
  %2099 = load i32, ptr %41, align 4, !tbaa !9
  %2100 = sub nsw i32 %2099, 1
  %2101 = load ptr, ptr %18, align 8, !tbaa !5
  %2102 = load i32, ptr %41, align 4, !tbaa !9
  %2103 = load i32, ptr %41, align 4, !tbaa !9
  %2104 = add nsw i32 %2103, 1
  %2105 = load i32, ptr %23, align 4, !tbaa !9
  %2106 = mul nsw i32 %2104, %2105
  %2107 = add nsw i32 %2102, %2106
  %2108 = sext i32 %2107 to i64
  %2109 = getelementptr inbounds %struct.doublecomplex, ptr %2101, i64 %2108
  %2110 = call i32 @izamax_(ptr noundef %25, ptr noundef %2109, ptr noundef @c__1)
  %2111 = add nsw i32 %2100, %2110
  store i32 %2111, ptr %39, align 4, !tbaa !9
  %2112 = load i32, ptr %39, align 4, !tbaa !9
  %2113 = load i32, ptr %41, align 4, !tbaa !9
  %2114 = add nsw i32 %2113, 1
  %2115 = load i32, ptr %23, align 4, !tbaa !9
  %2116 = mul nsw i32 %2114, %2115
  %2117 = add nsw i32 %2112, %2116
  store i32 %2117, ptr %25, align 4, !tbaa !9
  %2118 = load ptr, ptr %18, align 8, !tbaa !5
  %2119 = load i32, ptr %25, align 4, !tbaa !9
  %2120 = sext i32 %2119 to i64
  %2121 = getelementptr inbounds %struct.doublecomplex, ptr %2118, i64 %2120
  %2122 = getelementptr inbounds %struct.doublecomplex, ptr %2121, i32 0, i32 0
  %2123 = load double, ptr %2122, align 8, !tbaa !13
  store double %2123, ptr %30, align 8, !tbaa !11
  %2124 = load double, ptr %30, align 8, !tbaa !11
  %2125 = fcmp oge double %2124, 0.000000e+00
  br i1 %2125, label %2126, label %2128

2126:                                             ; preds = %2034
  %2127 = load double, ptr %30, align 8, !tbaa !11
  br label %2131

2128:                                             ; preds = %2034
  %2129 = load double, ptr %30, align 8, !tbaa !11
  %2130 = fneg double %2129
  br label %2131

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

2147:                                             ; preds = %2131
  %2148 = load double, ptr %31, align 8, !tbaa !11
  br label %2152

2149:                                             ; preds = %2131
  %2150 = load double, ptr %31, align 8, !tbaa !11
  %2151 = fneg double %2150
  br label %2152

2152:                                             ; preds = %2149, %2147
  %2153 = phi double [ %2148, %2147 ], [ %2151, %2149 ]
  %2154 = fadd double %2132, %2153
  store double %2154, ptr %57, align 8, !tbaa !11
  %2155 = load i32, ptr %38, align 4, !tbaa !9
  %2156 = load ptr, ptr %12, align 8, !tbaa !5
  %2157 = load i32, ptr %2156, align 4, !tbaa !9
  %2158 = icmp slt i32 %2155, %2157
  br i1 %2158, label %2159, label %2230

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

2192:                                             ; preds = %2159
  %2193 = load double, ptr %30, align 8, !tbaa !11
  br label %2197

2194:                                             ; preds = %2159
  %2195 = load double, ptr %30, align 8, !tbaa !11
  %2196 = fneg double %2195
  br label %2197

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

2213:                                             ; preds = %2197
  %2214 = load double, ptr %31, align 8, !tbaa !11
  br label %2218

2215:                                             ; preds = %2197
  %2216 = load double, ptr %31, align 8, !tbaa !11
  %2217 = fneg double %2216
  br label %2218

2218:                                             ; preds = %2215, %2213
  %2219 = phi double [ %2214, %2213 ], [ %2217, %2215 ]
  %2220 = fadd double %2198, %2219
  store double %2220, ptr %33, align 8, !tbaa !11
  %2221 = load double, ptr %32, align 8, !tbaa !11
  %2222 = load double, ptr %33, align 8, !tbaa !11
  %2223 = fcmp oge double %2221, %2222
  br i1 %2223, label %2224, label %2226

2224:                                             ; preds = %2218
  %2225 = load double, ptr %32, align 8, !tbaa !11
  br label %2228

2226:                                             ; preds = %2218
  %2227 = load double, ptr %33, align 8, !tbaa !11
  br label %2228

2228:                                             ; preds = %2226, %2224
  %2229 = phi double [ %2225, %2224 ], [ %2227, %2226 ]
  store double %2229, ptr %57, align 8, !tbaa !11
  br label %2230

2230:                                             ; preds = %2228, %2152
  %2231 = load double, ptr %54, align 8, !tbaa !11
  %2232 = load double, ptr %43, align 8, !tbaa !11
  %2233 = load double, ptr %56, align 8, !tbaa !11
  %2234 = fmul double %2232, %2233
  %2235 = load double, ptr %56, align 8, !tbaa !11
  %2236 = load double, ptr %57, align 8, !tbaa !11
  %2237 = fdiv double %2235, %2236
  %2238 = fmul double %2234, %2237
  %2239 = fcmp oge double %2231, %2238
  br i1 %2239, label %2240, label %2242

2240:                                             ; preds = %2230
  %2241 = load i32, ptr %41, align 4, !tbaa !9
  store i32 %2241, ptr %53, align 4, !tbaa !9
  br label %2295

2242:                                             ; preds = %2230
  %2243 = load i32, ptr %38, align 4, !tbaa !9
  %2244 = load i32, ptr %41, align 4, !tbaa !9
  %2245 = add nsw i32 %2244, 1
  %2246 = load i32, ptr %23, align 4, !tbaa !9
  %2247 = mul nsw i32 %2245, %2246
  %2248 = add nsw i32 %2243, %2247
  store i32 %2248, ptr %25, align 4, !tbaa !9
  %2249 = load ptr, ptr %18, align 8, !tbaa !5
  %2250 = load i32, ptr %25, align 4, !tbaa !9
  %2251 = sext i32 %2250 to i64
  %2252 = getelementptr inbounds %struct.doublecomplex, ptr %2249, i64 %2251
  %2253 = getelementptr inbounds %struct.doublecomplex, ptr %2252, i32 0, i32 0
  %2254 = load double, ptr %2253, align 8, !tbaa !13
  store double %2254, ptr %30, align 8, !tbaa !11
  %2255 = load double, ptr %30, align 8, !tbaa !11
  %2256 = fcmp oge double %2255, 0.000000e+00
  br i1 %2256, label %2257, label %2259

2257:                                             ; preds = %2242
  %2258 = load double, ptr %30, align 8, !tbaa !11
  br label %2262

2259:                                             ; preds = %2242
  %2260 = load double, ptr %30, align 8, !tbaa !11
  %2261 = fneg double %2260
  br label %2262

2262:                                             ; preds = %2259, %2257
  %2263 = phi double [ %2258, %2257 ], [ %2261, %2259 ]
  %2264 = load double, ptr %43, align 8, !tbaa !11
  %2265 = load double, ptr %57, align 8, !tbaa !11
  %2266 = fmul double %2264, %2265
  %2267 = fcmp oge double %2263, %2266
  br i1 %2267, label %2268, label %2292

2268:                                             ; preds = %2262
  %2269 = load i32, ptr %38, align 4, !tbaa !9
  store i32 %2269, ptr %53, align 4, !tbaa !9
  %2270 = load ptr, ptr %12, align 8, !tbaa !5
  %2271 = load i32, ptr %2270, align 4, !tbaa !9
  %2272 = load i32, ptr %41, align 4, !tbaa !9
  %2273 = sub nsw i32 %2271, %2272
  %2274 = add nsw i32 %2273, 1
  store i32 %2274, ptr %25, align 4, !tbaa !9
  %2275 = load ptr, ptr %18, align 8, !tbaa !5
  %2276 = load i32, ptr %41, align 4, !tbaa !9
  %2277 = load i32, ptr %41, align 4, !tbaa !9
  %2278 = add nsw i32 %2277, 1
  %2279 = load i32, ptr %23, align 4, !tbaa !9
  %2280 = mul nsw i32 %2278, %2279
  %2281 = add nsw i32 %2276, %2280
  %2282 = sext i32 %2281 to i64
  %2283 = getelementptr inbounds %struct.doublecomplex, ptr %2275, i64 %2282
  %2284 = load ptr, ptr %18, align 8, !tbaa !5
  %2285 = load i32, ptr %41, align 4, !tbaa !9
  %2286 = load i32, ptr %41, align 4, !tbaa !9
  %2287 = load i32, ptr %23, align 4, !tbaa !9
  %2288 = mul nsw i32 %2286, %2287
  %2289 = add nsw i32 %2285, %2288
  %2290 = sext i32 %2289 to i64
  %2291 = getelementptr inbounds %struct.doublecomplex, ptr %2284, i64 %2290
  call void @zcopy_(ptr noundef %25, ptr noundef %2283, ptr noundef @c__1, ptr noundef %2291, ptr noundef @c__1)
  br label %2294

2292:                                             ; preds = %2262
  %2293 = load i32, ptr %38, align 4, !tbaa !9
  store i32 %2293, ptr %53, align 4, !tbaa !9
  store i32 2, ptr %44, align 4, !tbaa !9
  br label %2294

2294:                                             ; preds = %2292, %2268
  br label %2295

2295:                                             ; preds = %2294, %2240
  br label %2296

2296:                                             ; preds = %2295, %1942
  %2297 = load i32, ptr %41, align 4, !tbaa !9
  %2298 = load i32, ptr %44, align 4, !tbaa !9
  %2299 = add nsw i32 %2297, %2298
  %2300 = sub nsw i32 %2299, 1
  store i32 %2300, ptr %51, align 4, !tbaa !9
  %2301 = load i32, ptr %53, align 4, !tbaa !9
  %2302 = load i32, ptr %51, align 4, !tbaa !9
  %2303 = icmp ne i32 %2301, %2302
  br i1 %2303, label %2304, label %2431

2304:                                             ; preds = %2296
  %2305 = load i32, ptr %53, align 4, !tbaa !9
  %2306 = load i32, ptr %53, align 4, !tbaa !9
  %2307 = load i32, ptr %21, align 4, !tbaa !9
  %2308 = mul nsw i32 %2306, %2307
  %2309 = add nsw i32 %2305, %2308
  store i32 %2309, ptr %25, align 4, !tbaa !9
  %2310 = load i32, ptr %51, align 4, !tbaa !9
  %2311 = load i32, ptr %51, align 4, !tbaa !9
  %2312 = load i32, ptr %21, align 4, !tbaa !9
  %2313 = mul nsw i32 %2311, %2312
  %2314 = add nsw i32 %2310, %2313
  store i32 %2314, ptr %26, align 4, !tbaa !9
  %2315 = load ptr, ptr %15, align 8, !tbaa !5
  %2316 = load i32, ptr %26, align 4, !tbaa !9
  %2317 = sext i32 %2316 to i64
  %2318 = getelementptr inbounds %struct.doublecomplex, ptr %2315, i64 %2317
  %2319 = getelementptr inbounds %struct.doublecomplex, ptr %2318, i32 0, i32 0
  %2320 = load double, ptr %2319, align 8, !tbaa !13
  store double %2320, ptr %30, align 8, !tbaa !11
  %2321 = load double, ptr %30, align 8, !tbaa !11
  %2322 = load ptr, ptr %15, align 8, !tbaa !5
  %2323 = load i32, ptr %25, align 4, !tbaa !9
  %2324 = sext i32 %2323 to i64
  %2325 = getelementptr inbounds %struct.doublecomplex, ptr %2322, i64 %2324
  %2326 = getelementptr inbounds %struct.doublecomplex, ptr %2325, i32 0, i32 0
  store double %2321, ptr %2326, align 8, !tbaa !13
  %2327 = load ptr, ptr %15, align 8, !tbaa !5
  %2328 = load i32, ptr %25, align 4, !tbaa !9
  %2329 = sext i32 %2328 to i64
  %2330 = getelementptr inbounds %struct.doublecomplex, ptr %2327, i64 %2329
  %2331 = getelementptr inbounds %struct.doublecomplex, ptr %2330, i32 0, i32 1
  store double 0.000000e+00, ptr %2331, align 8, !tbaa !15
  %2332 = load i32, ptr %53, align 4, !tbaa !9
  %2333 = load i32, ptr %51, align 4, !tbaa !9
  %2334 = sub nsw i32 %2332, %2333
  %2335 = sub nsw i32 %2334, 1
  store i32 %2335, ptr %25, align 4, !tbaa !9
  %2336 = load ptr, ptr %15, align 8, !tbaa !5
  %2337 = load i32, ptr %51, align 4, !tbaa !9
  %2338 = add nsw i32 %2337, 1
  %2339 = load i32, ptr %51, align 4, !tbaa !9
  %2340 = load i32, ptr %21, align 4, !tbaa !9
  %2341 = mul nsw i32 %2339, %2340
  %2342 = add nsw i32 %2338, %2341
  %2343 = sext i32 %2342 to i64
  %2344 = getelementptr inbounds %struct.doublecomplex, ptr %2336, i64 %2343
  %2345 = load ptr, ptr %15, align 8, !tbaa !5
  %2346 = load i32, ptr %53, align 4, !tbaa !9
  %2347 = load i32, ptr %51, align 4, !tbaa !9
  %2348 = add nsw i32 %2347, 1
  %2349 = load i32, ptr %21, align 4, !tbaa !9
  %2350 = mul nsw i32 %2348, %2349
  %2351 = add nsw i32 %2346, %2350
  %2352 = sext i32 %2351 to i64
  %2353 = getelementptr inbounds %struct.doublecomplex, ptr %2345, i64 %2352
  %2354 = load ptr, ptr %16, align 8, !tbaa !5
  call void @zcopy_(ptr noundef %25, ptr noundef %2344, ptr noundef @c__1, ptr noundef %2353, ptr noundef %2354)
  %2355 = load i32, ptr %53, align 4, !tbaa !9
  %2356 = load i32, ptr %51, align 4, !tbaa !9
  %2357 = sub nsw i32 %2355, %2356
  %2358 = sub nsw i32 %2357, 1
  store i32 %2358, ptr %25, align 4, !tbaa !9
  %2359 = load ptr, ptr %15, align 8, !tbaa !5
  %2360 = load i32, ptr %53, align 4, !tbaa !9
  %2361 = load i32, ptr %51, align 4, !tbaa !9
  %2362 = add nsw i32 %2361, 1
  %2363 = load i32, ptr %21, align 4, !tbaa !9
  %2364 = mul nsw i32 %2362, %2363
  %2365 = add nsw i32 %2360, %2364
  %2366 = sext i32 %2365 to i64
  %2367 = getelementptr inbounds %struct.doublecomplex, ptr %2359, i64 %2366
  %2368 = load ptr, ptr %16, align 8, !tbaa !5
  call void @zlacgv_(ptr noundef %25, ptr noundef %2367, ptr noundef %2368)
  %2369 = load i32, ptr %53, align 4, !tbaa !9
  %2370 = load ptr, ptr %12, align 8, !tbaa !5
  %2371 = load i32, ptr %2370, align 4, !tbaa !9
  %2372 = icmp slt i32 %2369, %2371
  br i1 %2372, label %2373, label %2396

2373:                                             ; preds = %2304
  %2374 = load ptr, ptr %12, align 8, !tbaa !5
  %2375 = load i32, ptr %2374, align 4, !tbaa !9
  %2376 = load i32, ptr %53, align 4, !tbaa !9
  %2377 = sub nsw i32 %2375, %2376
  store i32 %2377, ptr %25, align 4, !tbaa !9
  %2378 = load ptr, ptr %15, align 8, !tbaa !5
  %2379 = load i32, ptr %53, align 4, !tbaa !9
  %2380 = add nsw i32 %2379, 1
  %2381 = load i32, ptr %51, align 4, !tbaa !9
  %2382 = load i32, ptr %21, align 4, !tbaa !9
  %2383 = mul nsw i32 %2381, %2382
  %2384 = add nsw i32 %2380, %2383
  %2385 = sext i32 %2384 to i64
  %2386 = getelementptr inbounds %struct.doublecomplex, ptr %2378, i64 %2385
  %2387 = load ptr, ptr %15, align 8, !tbaa !5
  %2388 = load i32, ptr %53, align 4, !tbaa !9
  %2389 = add nsw i32 %2388, 1
  %2390 = load i32, ptr %53, align 4, !tbaa !9
  %2391 = load i32, ptr %21, align 4, !tbaa !9
  %2392 = mul nsw i32 %2390, %2391
  %2393 = add nsw i32 %2389, %2392
  %2394 = sext i32 %2393 to i64
  %2395 = getelementptr inbounds %struct.doublecomplex, ptr %2387, i64 %2394
  call void @zcopy_(ptr noundef %25, ptr noundef %2386, ptr noundef @c__1, ptr noundef %2395, ptr noundef @c__1)
  br label %2396

2396:                                             ; preds = %2373, %2304
  %2397 = load i32, ptr %41, align 4, !tbaa !9
  %2398 = icmp sgt i32 %2397, 1
  br i1 %2398, label %2399, label %2416

2399:                                             ; preds = %2396
  %2400 = load i32, ptr %41, align 4, !tbaa !9
  %2401 = sub nsw i32 %2400, 1
  store i32 %2401, ptr %25, align 4, !tbaa !9
  %2402 = load ptr, ptr %15, align 8, !tbaa !5
  %2403 = load i32, ptr %51, align 4, !tbaa !9
  %2404 = load i32, ptr %21, align 4, !tbaa !9
  %2405 = add nsw i32 %2403, %2404
  %2406 = sext i32 %2405 to i64
  %2407 = getelementptr inbounds %struct.doublecomplex, ptr %2402, i64 %2406
  %2408 = load ptr, ptr %16, align 8, !tbaa !5
  %2409 = load ptr, ptr %15, align 8, !tbaa !5
  %2410 = load i32, ptr %53, align 4, !tbaa !9
  %2411 = load i32, ptr %21, align 4, !tbaa !9
  %2412 = add nsw i32 %2410, %2411
  %2413 = sext i32 %2412 to i64
  %2414 = getelementptr inbounds %struct.doublecomplex, ptr %2409, i64 %2413
  %2415 = load ptr, ptr %16, align 8, !tbaa !5
  call void @zswap_(ptr noundef %25, ptr noundef %2407, ptr noundef %2408, ptr noundef %2414, ptr noundef %2415)
  br label %2416

2416:                                             ; preds = %2399, %2396
  %2417 = load ptr, ptr %18, align 8, !tbaa !5
  %2418 = load i32, ptr %51, align 4, !tbaa !9
  %2419 = load i32, ptr %23, align 4, !tbaa !9
  %2420 = add nsw i32 %2418, %2419
  %2421 = sext i32 %2420 to i64
  %2422 = getelementptr inbounds %struct.doublecomplex, ptr %2417, i64 %2421
  %2423 = load ptr, ptr %19, align 8, !tbaa !5
  %2424 = load ptr, ptr %18, align 8, !tbaa !5
  %2425 = load i32, ptr %53, align 4, !tbaa !9
  %2426 = load i32, ptr %23, align 4, !tbaa !9
  %2427 = add nsw i32 %2425, %2426
  %2428 = sext i32 %2427 to i64
  %2429 = getelementptr inbounds %struct.doublecomplex, ptr %2424, i64 %2428
  %2430 = load ptr, ptr %19, align 8, !tbaa !5
  call void @zswap_(ptr noundef %51, ptr noundef %2422, ptr noundef %2423, ptr noundef %2429, ptr noundef %2430)
  br label %2431

2431:                                             ; preds = %2416, %2296
  %2432 = load i32, ptr %44, align 4, !tbaa !9
  %2433 = icmp eq i32 %2432, 1
  br i1 %2433, label %2434, label %2500

2434:                                             ; preds = %2431
  %2435 = load ptr, ptr %12, align 8, !tbaa !5
  %2436 = load i32, ptr %2435, align 4, !tbaa !9
  %2437 = load i32, ptr %41, align 4, !tbaa !9
  %2438 = sub nsw i32 %2436, %2437
  %2439 = add nsw i32 %2438, 1
  store i32 %2439, ptr %25, align 4, !tbaa !9
  %2440 = load ptr, ptr %18, align 8, !tbaa !5
  %2441 = load i32, ptr %41, align 4, !tbaa !9
  %2442 = load i32, ptr %41, align 4, !tbaa !9
  %2443 = load i32, ptr %23, align 4, !tbaa !9
  %2444 = mul nsw i32 %2442, %2443
  %2445 = add nsw i32 %2441, %2444
  %2446 = sext i32 %2445 to i64
  %2447 = getelementptr inbounds %struct.doublecomplex, ptr %2440, i64 %2446
  %2448 = load ptr, ptr %15, align 8, !tbaa !5
  %2449 = load i32, ptr %41, align 4, !tbaa !9
  %2450 = load i32, ptr %41, align 4, !tbaa !9
  %2451 = load i32, ptr %21, align 4, !tbaa !9
  %2452 = mul nsw i32 %2450, %2451
  %2453 = add nsw i32 %2449, %2452
  %2454 = sext i32 %2453 to i64
  %2455 = getelementptr inbounds %struct.doublecomplex, ptr %2448, i64 %2454
  call void @zcopy_(ptr noundef %25, ptr noundef %2447, ptr noundef @c__1, ptr noundef %2455, ptr noundef @c__1)
  %2456 = load i32, ptr %41, align 4, !tbaa !9
  %2457 = load ptr, ptr %12, align 8, !tbaa !5
  %2458 = load i32, ptr %2457, align 4, !tbaa !9
  %2459 = icmp slt i32 %2456, %2458
  br i1 %2459, label %2460, label %2499

2460:                                             ; preds = %2434
  %2461 = load i32, ptr %41, align 4, !tbaa !9
  %2462 = load i32, ptr %41, align 4, !tbaa !9
  %2463 = load i32, ptr %21, align 4, !tbaa !9
  %2464 = mul nsw i32 %2462, %2463
  %2465 = add nsw i32 %2461, %2464
  store i32 %2465, ptr %25, align 4, !tbaa !9
  %2466 = load ptr, ptr %15, align 8, !tbaa !5
  %2467 = load i32, ptr %25, align 4, !tbaa !9
  %2468 = sext i32 %2467 to i64
  %2469 = getelementptr inbounds %struct.doublecomplex, ptr %2466, i64 %2468
  %2470 = getelementptr inbounds %struct.doublecomplex, ptr %2469, i32 0, i32 0
  %2471 = load double, ptr %2470, align 8, !tbaa !13
  %2472 = fdiv double 1.000000e+00, %2471
  store double %2472, ptr %45, align 8, !tbaa !11
  %2473 = load ptr, ptr %12, align 8, !tbaa !5
  %2474 = load i32, ptr %2473, align 4, !tbaa !9
  %2475 = load i32, ptr %41, align 4, !tbaa !9
  %2476 = sub nsw i32 %2474, %2475
  store i32 %2476, ptr %25, align 4, !tbaa !9
  %2477 = load ptr, ptr %15, align 8, !tbaa !5
  %2478 = load i32, ptr %41, align 4, !tbaa !9
  %2479 = add nsw i32 %2478, 1
  %2480 = load i32, ptr %41, align 4, !tbaa !9
  %2481 = load i32, ptr %21, align 4, !tbaa !9
  %2482 = mul nsw i32 %2480, %2481
  %2483 = add nsw i32 %2479, %2482
  %2484 = sext i32 %2483 to i64
  %2485 = getelementptr inbounds %struct.doublecomplex, ptr %2477, i64 %2484
  call void @zdscal_(ptr noundef %25, ptr noundef %45, ptr noundef %2485, ptr noundef @c__1)
  %2486 = load ptr, ptr %12, align 8, !tbaa !5
  %2487 = load i32, ptr %2486, align 4, !tbaa !9
  %2488 = load i32, ptr %41, align 4, !tbaa !9
  %2489 = sub nsw i32 %2487, %2488
  store i32 %2489, ptr %25, align 4, !tbaa !9
  %2490 = load ptr, ptr %18, align 8, !tbaa !5
  %2491 = load i32, ptr %41, align 4, !tbaa !9
  %2492 = add nsw i32 %2491, 1
  %2493 = load i32, ptr %41, align 4, !tbaa !9
  %2494 = load i32, ptr %23, align 4, !tbaa !9
  %2495 = mul nsw i32 %2493, %2494
  %2496 = add nsw i32 %2492, %2495
  %2497 = sext i32 %2496 to i64
  %2498 = getelementptr inbounds %struct.doublecomplex, ptr %2490, i64 %2497
  call void @zlacgv_(ptr noundef %25, ptr noundef %2498, ptr noundef @c__1)
  br label %2499

2499:                                             ; preds = %2460, %2434
  br label %3012

2500:                                             ; preds = %2431
  %2501 = load i32, ptr %41, align 4, !tbaa !9
  %2502 = load ptr, ptr %12, align 8, !tbaa !5
  %2503 = load i32, ptr %2502, align 4, !tbaa !9
  %2504 = sub nsw i32 %2503, 1
  %2505 = icmp slt i32 %2501, %2504
  br i1 %2505, label %2506, label %2881

2506:                                             ; preds = %2500
  %2507 = load i32, ptr %41, align 4, !tbaa !9
  %2508 = add nsw i32 %2507, 1
  %2509 = load i32, ptr %41, align 4, !tbaa !9
  %2510 = load i32, ptr %23, align 4, !tbaa !9
  %2511 = mul nsw i32 %2509, %2510
  %2512 = add nsw i32 %2508, %2511
  store i32 %2512, ptr %25, align 4, !tbaa !9
  %2513 = load ptr, ptr %18, align 8, !tbaa !5
  %2514 = load i32, ptr %25, align 4, !tbaa !9
  %2515 = sext i32 %2514 to i64
  %2516 = getelementptr inbounds %struct.doublecomplex, ptr %2513, i64 %2515
  %2517 = getelementptr inbounds %struct.doublecomplex, ptr %2516, i32 0, i32 0
  %2518 = load double, ptr %2517, align 8, !tbaa !13
  %2519 = getelementptr inbounds %struct.doublecomplex, ptr %47, i32 0, i32 0
  store double %2518, ptr %2519, align 8, !tbaa !13
  %2520 = load ptr, ptr %18, align 8, !tbaa !5
  %2521 = load i32, ptr %25, align 4, !tbaa !9
  %2522 = sext i32 %2521 to i64
  %2523 = getelementptr inbounds %struct.doublecomplex, ptr %2520, i64 %2522
  %2524 = getelementptr inbounds %struct.doublecomplex, ptr %2523, i32 0, i32 1
  %2525 = load double, ptr %2524, align 8, !tbaa !15
  %2526 = getelementptr inbounds %struct.doublecomplex, ptr %47, i32 0, i32 1
  store double %2525, ptr %2526, align 8, !tbaa !15
  %2527 = load ptr, ptr %18, align 8, !tbaa !5
  %2528 = load i32, ptr %41, align 4, !tbaa !9
  %2529 = add nsw i32 %2528, 1
  %2530 = load i32, ptr %41, align 4, !tbaa !9
  %2531 = add nsw i32 %2530, 1
  %2532 = load i32, ptr %23, align 4, !tbaa !9
  %2533 = mul nsw i32 %2531, %2532
  %2534 = add nsw i32 %2529, %2533
  %2535 = sext i32 %2534 to i64
  %2536 = getelementptr inbounds %struct.doublecomplex, ptr %2527, i64 %2535
  %2537 = call { double, double } @Cd(ptr noundef %2536)
  %2538 = extractvalue { double, double } %2537, 0
  %2539 = extractvalue { double, double } %2537, 1
  %2540 = call { double, double } @Cd(ptr noundef %47)
  %2541 = extractvalue { double, double } %2540, 0
  %2542 = extractvalue { double, double } %2540, 1
  %2543 = call { double, double } @__divdc3(double noundef %2538, double noundef %2539, double noundef %2541, double noundef %2542) #6
  %2544 = extractvalue { double, double } %2543, 0
  %2545 = extractvalue { double, double } %2543, 1
  %2546 = call ptr @_pCd(ptr noundef %34)
  %2547 = getelementptr inbounds { double, double }, ptr %2546, i32 0, i32 0
  %2548 = getelementptr inbounds { double, double }, ptr %2546, i32 0, i32 1
  store double %2544, ptr %2547, align 8
  store double %2545, ptr %2548, align 8
  %2549 = getelementptr inbounds %struct.doublecomplex, ptr %34, i32 0, i32 0
  %2550 = load double, ptr %2549, align 8, !tbaa !13
  %2551 = getelementptr inbounds %struct.doublecomplex, ptr %46, i32 0, i32 0
  store double %2550, ptr %2551, align 8, !tbaa !13
  %2552 = getelementptr inbounds %struct.doublecomplex, ptr %34, i32 0, i32 1
  %2553 = load double, ptr %2552, align 8, !tbaa !15
  %2554 = getelementptr inbounds %struct.doublecomplex, ptr %46, i32 0, i32 1
  store double %2553, ptr %2554, align 8, !tbaa !15
  %2555 = call { double, double } @Cd(ptr noundef %47)
  %2556 = extractvalue { double, double } %2555, 0
  %2557 = extractvalue { double, double } %2555, 1
  %2558 = fneg double %2557
  %2559 = call ptr @_pCd(ptr noundef %35)
  %2560 = getelementptr inbounds { double, double }, ptr %2559, i32 0, i32 0
  %2561 = getelementptr inbounds { double, double }, ptr %2559, i32 0, i32 1
  store double %2556, ptr %2560, align 8
  store double %2558, ptr %2561, align 8
  %2562 = load ptr, ptr %18, align 8, !tbaa !5
  %2563 = load i32, ptr %41, align 4, !tbaa !9
  %2564 = load i32, ptr %41, align 4, !tbaa !9
  %2565 = load i32, ptr %23, align 4, !tbaa !9
  %2566 = mul nsw i32 %2564, %2565
  %2567 = add nsw i32 %2563, %2566
  %2568 = sext i32 %2567 to i64
  %2569 = getelementptr inbounds %struct.doublecomplex, ptr %2562, i64 %2568
  %2570 = call { double, double } @Cd(ptr noundef %2569)
  %2571 = extractvalue { double, double } %2570, 0
  %2572 = extractvalue { double, double } %2570, 1
  %2573 = call { double, double } @Cd(ptr noundef %35)
  %2574 = extractvalue { double, double } %2573, 0
  %2575 = extractvalue { double, double } %2573, 1
  %2576 = call { double, double } @__divdc3(double noundef %2571, double noundef %2572, double noundef %2574, double noundef %2575) #6
  %2577 = extractvalue { double, double } %2576, 0
  %2578 = extractvalue { double, double } %2576, 1
  %2579 = call ptr @_pCd(ptr noundef %34)
  %2580 = getelementptr inbounds { double, double }, ptr %2579, i32 0, i32 0
  %2581 = getelementptr inbounds { double, double }, ptr %2579, i32 0, i32 1
  store double %2577, ptr %2580, align 8
  store double %2578, ptr %2581, align 8
  %2582 = getelementptr inbounds %struct.doublecomplex, ptr %34, i32 0, i32 0
  %2583 = load double, ptr %2582, align 8, !tbaa !13
  %2584 = getelementptr inbounds %struct.doublecomplex, ptr %48, i32 0, i32 0
  store double %2583, ptr %2584, align 8, !tbaa !13
  %2585 = getelementptr inbounds %struct.doublecomplex, ptr %34, i32 0, i32 1
  %2586 = load double, ptr %2585, align 8, !tbaa !15
  %2587 = getelementptr inbounds %struct.doublecomplex, ptr %48, i32 0, i32 1
  store double %2586, ptr %2587, align 8, !tbaa !15
  %2588 = getelementptr inbounds %struct.doublecomplex, ptr %46, i32 0, i32 0
  %2589 = load double, ptr %2588, align 8, !tbaa !13
  %2590 = getelementptr inbounds %struct.doublecomplex, ptr %48, i32 0, i32 0
  %2591 = load double, ptr %2590, align 8, !tbaa !13
  %2592 = getelementptr inbounds %struct.doublecomplex, ptr %46, i32 0, i32 1
  %2593 = load double, ptr %2592, align 8, !tbaa !15
  %2594 = getelementptr inbounds %struct.doublecomplex, ptr %48, i32 0, i32 1
  %2595 = load double, ptr %2594, align 8, !tbaa !15
  %2596 = fmul double %2593, %2595
  %2597 = fneg double %2596
  %2598 = call double @llvm.fmuladd.f64(double %2589, double %2591, double %2597)
  %2599 = getelementptr inbounds %struct.doublecomplex, ptr %34, i32 0, i32 0
  store double %2598, ptr %2599, align 8, !tbaa !13
  %2600 = getelementptr inbounds %struct.doublecomplex, ptr %46, i32 0, i32 0
  %2601 = load double, ptr %2600, align 8, !tbaa !13
  %2602 = getelementptr inbounds %struct.doublecomplex, ptr %48, i32 0, i32 1
  %2603 = load double, ptr %2602, align 8, !tbaa !15
  %2604 = getelementptr inbounds %struct.doublecomplex, ptr %46, i32 0, i32 1
  %2605 = load double, ptr %2604, align 8, !tbaa !15
  %2606 = getelementptr inbounds %struct.doublecomplex, ptr %48, i32 0, i32 0
  %2607 = load double, ptr %2606, align 8, !tbaa !13
  %2608 = fmul double %2605, %2607
  %2609 = call double @llvm.fmuladd.f64(double %2601, double %2603, double %2608)
  %2610 = getelementptr inbounds %struct.doublecomplex, ptr %34, i32 0, i32 1
  store double %2609, ptr %2610, align 8, !tbaa !15
  %2611 = getelementptr inbounds %struct.doublecomplex, ptr %34, i32 0, i32 0
  %2612 = load double, ptr %2611, align 8, !tbaa !13
  %2613 = fsub double %2612, 1.000000e+00
  %2614 = fdiv double 1.000000e+00, %2613
  store double %2614, ptr %42, align 8, !tbaa !11
  %2615 = load double, ptr %42, align 8, !tbaa !11
  %2616 = getelementptr inbounds %struct.doublecomplex, ptr %35, i32 0, i32 0
  store double %2615, ptr %2616, align 8, !tbaa !13
  %2617 = getelementptr inbounds %struct.doublecomplex, ptr %35, i32 0, i32 1
  store double 0.000000e+00, ptr %2617, align 8, !tbaa !15
  %2618 = call { double, double } @Cd(ptr noundef %35)
  %2619 = extractvalue { double, double } %2618, 0
  %2620 = extractvalue { double, double } %2618, 1
  %2621 = call { double, double } @Cd(ptr noundef %47)
  %2622 = extractvalue { double, double } %2621, 0
  %2623 = extractvalue { double, double } %2621, 1
  %2624 = call { double, double } @__divdc3(double noundef %2619, double noundef %2620, double noundef %2622, double noundef %2623) #6
  %2625 = extractvalue { double, double } %2624, 0
  %2626 = extractvalue { double, double } %2624, 1
  %2627 = call ptr @_pCd(ptr noundef %34)
  %2628 = getelementptr inbounds { double, double }, ptr %2627, i32 0, i32 0
  %2629 = getelementptr inbounds { double, double }, ptr %2627, i32 0, i32 1
  store double %2625, ptr %2628, align 8
  store double %2626, ptr %2629, align 8
  %2630 = getelementptr inbounds %struct.doublecomplex, ptr %34, i32 0, i32 0
  %2631 = load double, ptr %2630, align 8, !tbaa !13
  %2632 = getelementptr inbounds %struct.doublecomplex, ptr %47, i32 0, i32 0
  store double %2631, ptr %2632, align 8, !tbaa !13
  %2633 = getelementptr inbounds %struct.doublecomplex, ptr %34, i32 0, i32 1
  %2634 = load double, ptr %2633, align 8, !tbaa !15
  %2635 = getelementptr inbounds %struct.doublecomplex, ptr %47, i32 0, i32 1
  store double %2634, ptr %2635, align 8, !tbaa !15
  %2636 = load ptr, ptr %12, align 8, !tbaa !5
  %2637 = load i32, ptr %2636, align 4, !tbaa !9
  store i32 %2637, ptr %25, align 4, !tbaa !9
  %2638 = load i32, ptr %41, align 4, !tbaa !9
  %2639 = add nsw i32 %2638, 2
  store i32 %2639, ptr %40, align 4, !tbaa !9
  br label %2640

2640:                                             ; preds = %2877, %2506
  %2641 = load i32, ptr %40, align 4, !tbaa !9
  %2642 = load i32, ptr %25, align 4, !tbaa !9
  %2643 = icmp sle i32 %2641, %2642
  br i1 %2643, label %2644, label %2880

2644:                                             ; preds = %2640
  %2645 = load i32, ptr %40, align 4, !tbaa !9
  %2646 = load i32, ptr %41, align 4, !tbaa !9
  %2647 = load i32, ptr %21, align 4, !tbaa !9
  %2648 = mul nsw i32 %2646, %2647
  %2649 = add nsw i32 %2645, %2648
  store i32 %2649, ptr %26, align 4, !tbaa !9
  %2650 = call { double, double } @Cd(ptr noundef %47)
  %2651 = extractvalue { double, double } %2650, 0
  %2652 = extractvalue { double, double } %2650, 1
  %2653 = fneg double %2652
  %2654 = call ptr @_pCd(ptr noundef %35)
  %2655 = getelementptr inbounds { double, double }, ptr %2654, i32 0, i32 0
  %2656 = getelementptr inbounds { double, double }, ptr %2654, i32 0, i32 1
  store double %2651, ptr %2655, align 8
  store double %2653, ptr %2656, align 8
  %2657 = load i32, ptr %40, align 4, !tbaa !9
  %2658 = load i32, ptr %41, align 4, !tbaa !9
  %2659 = load i32, ptr %23, align 4, !tbaa !9
  %2660 = mul nsw i32 %2658, %2659
  %2661 = add nsw i32 %2657, %2660
  store i32 %2661, ptr %27, align 4, !tbaa !9
  %2662 = getelementptr inbounds %struct.doublecomplex, ptr %46, i32 0, i32 0
  %2663 = load double, ptr %2662, align 8, !tbaa !13
  %2664 = load ptr, ptr %18, align 8, !tbaa !5
  %2665 = load i32, ptr %27, align 4, !tbaa !9
  %2666 = sext i32 %2665 to i64
  %2667 = getelementptr inbounds %struct.doublecomplex, ptr %2664, i64 %2666
  %2668 = getelementptr inbounds %struct.doublecomplex, ptr %2667, i32 0, i32 0
  %2669 = load double, ptr %2668, align 8, !tbaa !13
  %2670 = getelementptr inbounds %struct.doublecomplex, ptr %46, i32 0, i32 1
  %2671 = load double, ptr %2670, align 8, !tbaa !15
  %2672 = load ptr, ptr %18, align 8, !tbaa !5
  %2673 = load i32, ptr %27, align 4, !tbaa !9
  %2674 = sext i32 %2673 to i64
  %2675 = getelementptr inbounds %struct.doublecomplex, ptr %2672, i64 %2674
  %2676 = getelementptr inbounds %struct.doublecomplex, ptr %2675, i32 0, i32 1
  %2677 = load double, ptr %2676, align 8, !tbaa !15
  %2678 = fmul double %2671, %2677
  %2679 = fneg double %2678
  %2680 = call double @llvm.fmuladd.f64(double %2663, double %2669, double %2679)
  %2681 = getelementptr inbounds %struct.doublecomplex, ptr %37, i32 0, i32 0
  store double %2680, ptr %2681, align 8, !tbaa !13
  %2682 = getelementptr inbounds %struct.doublecomplex, ptr %46, i32 0, i32 0
  %2683 = load double, ptr %2682, align 8, !tbaa !13
  %2684 = load ptr, ptr %18, align 8, !tbaa !5
  %2685 = load i32, ptr %27, align 4, !tbaa !9
  %2686 = sext i32 %2685 to i64
  %2687 = getelementptr inbounds %struct.doublecomplex, ptr %2684, i64 %2686
  %2688 = getelementptr inbounds %struct.doublecomplex, ptr %2687, i32 0, i32 1
  %2689 = load double, ptr %2688, align 8, !tbaa !15
  %2690 = getelementptr inbounds %struct.doublecomplex, ptr %46, i32 0, i32 1
  %2691 = load double, ptr %2690, align 8, !tbaa !15
  %2692 = load ptr, ptr %18, align 8, !tbaa !5
  %2693 = load i32, ptr %27, align 4, !tbaa !9
  %2694 = sext i32 %2693 to i64
  %2695 = getelementptr inbounds %struct.doublecomplex, ptr %2692, i64 %2694
  %2696 = getelementptr inbounds %struct.doublecomplex, ptr %2695, i32 0, i32 0
  %2697 = load double, ptr %2696, align 8, !tbaa !13
  %2698 = fmul double %2691, %2697
  %2699 = call double @llvm.fmuladd.f64(double %2683, double %2689, double %2698)
  %2700 = getelementptr inbounds %struct.doublecomplex, ptr %37, i32 0, i32 1
  store double %2699, ptr %2700, align 8, !tbaa !15
  %2701 = load i32, ptr %40, align 4, !tbaa !9
  %2702 = load i32, ptr %41, align 4, !tbaa !9
  %2703 = add nsw i32 %2702, 1
  %2704 = load i32, ptr %23, align 4, !tbaa !9
  %2705 = mul nsw i32 %2703, %2704
  %2706 = add nsw i32 %2701, %2705
  store i32 %2706, ptr %28, align 4, !tbaa !9
  %2707 = getelementptr inbounds %struct.doublecomplex, ptr %37, i32 0, i32 0
  %2708 = load double, ptr %2707, align 8, !tbaa !13
  %2709 = load ptr, ptr %18, align 8, !tbaa !5
  %2710 = load i32, ptr %28, align 4, !tbaa !9
  %2711 = sext i32 %2710 to i64
  %2712 = getelementptr inbounds %struct.doublecomplex, ptr %2709, i64 %2711
  %2713 = getelementptr inbounds %struct.doublecomplex, ptr %2712, i32 0, i32 0
  %2714 = load double, ptr %2713, align 8, !tbaa !13
  %2715 = fsub double %2708, %2714
  %2716 = getelementptr inbounds %struct.doublecomplex, ptr %36, i32 0, i32 0
  store double %2715, ptr %2716, align 8, !tbaa !13
  %2717 = getelementptr inbounds %struct.doublecomplex, ptr %37, i32 0, i32 1
  %2718 = load double, ptr %2717, align 8, !tbaa !15
  %2719 = load ptr, ptr %18, align 8, !tbaa !5
  %2720 = load i32, ptr %28, align 4, !tbaa !9
  %2721 = sext i32 %2720 to i64
  %2722 = getelementptr inbounds %struct.doublecomplex, ptr %2719, i64 %2721
  %2723 = getelementptr inbounds %struct.doublecomplex, ptr %2722, i32 0, i32 1
  %2724 = load double, ptr %2723, align 8, !tbaa !15
  %2725 = fsub double %2718, %2724
  %2726 = getelementptr inbounds %struct.doublecomplex, ptr %36, i32 0, i32 1
  store double %2725, ptr %2726, align 8, !tbaa !15
  %2727 = getelementptr inbounds %struct.doublecomplex, ptr %35, i32 0, i32 0
  %2728 = load double, ptr %2727, align 8, !tbaa !13
  %2729 = getelementptr inbounds %struct.doublecomplex, ptr %36, i32 0, i32 0
  %2730 = load double, ptr %2729, align 8, !tbaa !13
  %2731 = getelementptr inbounds %struct.doublecomplex, ptr %35, i32 0, i32 1
  %2732 = load double, ptr %2731, align 8, !tbaa !15
  %2733 = getelementptr inbounds %struct.doublecomplex, ptr %36, i32 0, i32 1
  %2734 = load double, ptr %2733, align 8, !tbaa !15
  %2735 = fmul double %2732, %2734
  %2736 = fneg double %2735
  %2737 = call double @llvm.fmuladd.f64(double %2728, double %2730, double %2736)
  %2738 = getelementptr inbounds %struct.doublecomplex, ptr %34, i32 0, i32 0
  store double %2737, ptr %2738, align 8, !tbaa !13
  %2739 = getelementptr inbounds %struct.doublecomplex, ptr %35, i32 0, i32 0
  %2740 = load double, ptr %2739, align 8, !tbaa !13
  %2741 = getelementptr inbounds %struct.doublecomplex, ptr %36, i32 0, i32 1
  %2742 = load double, ptr %2741, align 8, !tbaa !15
  %2743 = getelementptr inbounds %struct.doublecomplex, ptr %35, i32 0, i32 1
  %2744 = load double, ptr %2743, align 8, !tbaa !15
  %2745 = getelementptr inbounds %struct.doublecomplex, ptr %36, i32 0, i32 0
  %2746 = load double, ptr %2745, align 8, !tbaa !13
  %2747 = fmul double %2744, %2746
  %2748 = call double @llvm.fmuladd.f64(double %2740, double %2742, double %2747)
  %2749 = getelementptr inbounds %struct.doublecomplex, ptr %34, i32 0, i32 1
  store double %2748, ptr %2749, align 8, !tbaa !15
  %2750 = getelementptr inbounds %struct.doublecomplex, ptr %34, i32 0, i32 0
  %2751 = load double, ptr %2750, align 8, !tbaa !13
  %2752 = load ptr, ptr %15, align 8, !tbaa !5
  %2753 = load i32, ptr %26, align 4, !tbaa !9
  %2754 = sext i32 %2753 to i64
  %2755 = getelementptr inbounds %struct.doublecomplex, ptr %2752, i64 %2754
  %2756 = getelementptr inbounds %struct.doublecomplex, ptr %2755, i32 0, i32 0
  store double %2751, ptr %2756, align 8, !tbaa !13
  %2757 = getelementptr inbounds %struct.doublecomplex, ptr %34, i32 0, i32 1
  %2758 = load double, ptr %2757, align 8, !tbaa !15
  %2759 = load ptr, ptr %15, align 8, !tbaa !5
  %2760 = load i32, ptr %26, align 4, !tbaa !9
  %2761 = sext i32 %2760 to i64
  %2762 = getelementptr inbounds %struct.doublecomplex, ptr %2759, i64 %2761
  %2763 = getelementptr inbounds %struct.doublecomplex, ptr %2762, i32 0, i32 1
  store double %2758, ptr %2763, align 8, !tbaa !15
  %2764 = load i32, ptr %40, align 4, !tbaa !9
  %2765 = load i32, ptr %41, align 4, !tbaa !9
  %2766 = add nsw i32 %2765, 1
  %2767 = load i32, ptr %21, align 4, !tbaa !9
  %2768 = mul nsw i32 %2766, %2767
  %2769 = add nsw i32 %2764, %2768
  store i32 %2769, ptr %26, align 4, !tbaa !9
  %2770 = load i32, ptr %40, align 4, !tbaa !9
  %2771 = load i32, ptr %41, align 4, !tbaa !9
  %2772 = add nsw i32 %2771, 1
  %2773 = load i32, ptr %23, align 4, !tbaa !9
  %2774 = mul nsw i32 %2772, %2773
  %2775 = add nsw i32 %2770, %2774
  store i32 %2775, ptr %27, align 4, !tbaa !9
  %2776 = getelementptr inbounds %struct.doublecomplex, ptr %48, i32 0, i32 0
  %2777 = load double, ptr %2776, align 8, !tbaa !13
  %2778 = load ptr, ptr %18, align 8, !tbaa !5
  %2779 = load i32, ptr %27, align 4, !tbaa !9
  %2780 = sext i32 %2779 to i64
  %2781 = getelementptr inbounds %struct.doublecomplex, ptr %2778, i64 %2780
  %2782 = getelementptr inbounds %struct.doublecomplex, ptr %2781, i32 0, i32 0
  %2783 = load double, ptr %2782, align 8, !tbaa !13
  %2784 = getelementptr inbounds %struct.doublecomplex, ptr %48, i32 0, i32 1
  %2785 = load double, ptr %2784, align 8, !tbaa !15
  %2786 = load ptr, ptr %18, align 8, !tbaa !5
  %2787 = load i32, ptr %27, align 4, !tbaa !9
  %2788 = sext i32 %2787 to i64
  %2789 = getelementptr inbounds %struct.doublecomplex, ptr %2786, i64 %2788
  %2790 = getelementptr inbounds %struct.doublecomplex, ptr %2789, i32 0, i32 1
  %2791 = load double, ptr %2790, align 8, !tbaa !15
  %2792 = fmul double %2785, %2791
  %2793 = fneg double %2792
  %2794 = call double @llvm.fmuladd.f64(double %2777, double %2783, double %2793)
  %2795 = getelementptr inbounds %struct.doublecomplex, ptr %36, i32 0, i32 0
  store double %2794, ptr %2795, align 8, !tbaa !13
  %2796 = getelementptr inbounds %struct.doublecomplex, ptr %48, i32 0, i32 0
  %2797 = load double, ptr %2796, align 8, !tbaa !13
  %2798 = load ptr, ptr %18, align 8, !tbaa !5
  %2799 = load i32, ptr %27, align 4, !tbaa !9
  %2800 = sext i32 %2799 to i64
  %2801 = getelementptr inbounds %struct.doublecomplex, ptr %2798, i64 %2800
  %2802 = getelementptr inbounds %struct.doublecomplex, ptr %2801, i32 0, i32 1
  %2803 = load double, ptr %2802, align 8, !tbaa !15
  %2804 = getelementptr inbounds %struct.doublecomplex, ptr %48, i32 0, i32 1
  %2805 = load double, ptr %2804, align 8, !tbaa !15
  %2806 = load ptr, ptr %18, align 8, !tbaa !5
  %2807 = load i32, ptr %27, align 4, !tbaa !9
  %2808 = sext i32 %2807 to i64
  %2809 = getelementptr inbounds %struct.doublecomplex, ptr %2806, i64 %2808
  %2810 = getelementptr inbounds %struct.doublecomplex, ptr %2809, i32 0, i32 0
  %2811 = load double, ptr %2810, align 8, !tbaa !13
  %2812 = fmul double %2805, %2811
  %2813 = call double @llvm.fmuladd.f64(double %2797, double %2803, double %2812)
  %2814 = getelementptr inbounds %struct.doublecomplex, ptr %36, i32 0, i32 1
  store double %2813, ptr %2814, align 8, !tbaa !15
  %2815 = load i32, ptr %40, align 4, !tbaa !9
  %2816 = load i32, ptr %41, align 4, !tbaa !9
  %2817 = load i32, ptr %23, align 4, !tbaa !9
  %2818 = mul nsw i32 %2816, %2817
  %2819 = add nsw i32 %2815, %2818
  store i32 %2819, ptr %28, align 4, !tbaa !9
  %2820 = getelementptr inbounds %struct.doublecomplex, ptr %36, i32 0, i32 0
  %2821 = load double, ptr %2820, align 8, !tbaa !13
  %2822 = load ptr, ptr %18, align 8, !tbaa !5
  %2823 = load i32, ptr %28, align 4, !tbaa !9
  %2824 = sext i32 %2823 to i64
  %2825 = getelementptr inbounds %struct.doublecomplex, ptr %2822, i64 %2824
  %2826 = getelementptr inbounds %struct.doublecomplex, ptr %2825, i32 0, i32 0
  %2827 = load double, ptr %2826, align 8, !tbaa !13
  %2828 = fsub double %2821, %2827
  %2829 = getelementptr inbounds %struct.doublecomplex, ptr %35, i32 0, i32 0
  store double %2828, ptr %2829, align 8, !tbaa !13
  %2830 = getelementptr inbounds %struct.doublecomplex, ptr %36, i32 0, i32 1
  %2831 = load double, ptr %2830, align 8, !tbaa !15
  %2832 = load ptr, ptr %18, align 8, !tbaa !5
  %2833 = load i32, ptr %28, align 4, !tbaa !9
  %2834 = sext i32 %2833 to i64
  %2835 = getelementptr inbounds %struct.doublecomplex, ptr %2832, i64 %2834
  %2836 = getelementptr inbounds %struct.doublecomplex, ptr %2835, i32 0, i32 1
  %2837 = load double, ptr %2836, align 8, !tbaa !15
  %2838 = fsub double %2831, %2837
  %2839 = getelementptr inbounds %struct.doublecomplex, ptr %35, i32 0, i32 1
  store double %2838, ptr %2839, align 8, !tbaa !15
  %2840 = getelementptr inbounds %struct.doublecomplex, ptr %47, i32 0, i32 0
  %2841 = load double, ptr %2840, align 8, !tbaa !13
  %2842 = getelementptr inbounds %struct.doublecomplex, ptr %35, i32 0, i32 0
  %2843 = load double, ptr %2842, align 8, !tbaa !13
  %2844 = getelementptr inbounds %struct.doublecomplex, ptr %47, i32 0, i32 1
  %2845 = load double, ptr %2844, align 8, !tbaa !15
  %2846 = getelementptr inbounds %struct.doublecomplex, ptr %35, i32 0, i32 1
  %2847 = load double, ptr %2846, align 8, !tbaa !15
  %2848 = fmul double %2845, %2847
  %2849 = fneg double %2848
  %2850 = call double @llvm.fmuladd.f64(double %2841, double %2843, double %2849)
  %2851 = getelementptr inbounds %struct.doublecomplex, ptr %34, i32 0, i32 0
  store double %2850, ptr %2851, align 8, !tbaa !13
  %2852 = getelementptr inbounds %struct.doublecomplex, ptr %47, i32 0, i32 0
  %2853 = load double, ptr %2852, align 8, !tbaa !13
  %2854 = getelementptr inbounds %struct.doublecomplex, ptr %35, i32 0, i32 1
  %2855 = load double, ptr %2854, align 8, !tbaa !15
  %2856 = getelementptr inbounds %struct.doublecomplex, ptr %47, i32 0, i32 1
  %2857 = load double, ptr %2856, align 8, !tbaa !15
  %2858 = getelementptr inbounds %struct.doublecomplex, ptr %35, i32 0, i32 0
  %2859 = load double, ptr %2858, align 8, !tbaa !13
  %2860 = fmul double %2857, %2859
  %2861 = call double @llvm.fmuladd.f64(double %2853, double %2855, double %2860)
  %2862 = getelementptr inbounds %struct.doublecomplex, ptr %34, i32 0, i32 1
  store double %2861, ptr %2862, align 8, !tbaa !15
  %2863 = getelementptr inbounds %struct.doublecomplex, ptr %34, i32 0, i32 0
  %2864 = load double, ptr %2863, align 8, !tbaa !13
  %2865 = load ptr, ptr %15, align 8, !tbaa !5
  %2866 = load i32, ptr %26, align 4, !tbaa !9
  %2867 = sext i32 %2866 to i64
  %2868 = getelementptr inbounds %struct.doublecomplex, ptr %2865, i64 %2867
  %2869 = getelementptr inbounds %struct.doublecomplex, ptr %2868, i32 0, i32 0
  store double %2864, ptr %2869, align 8, !tbaa !13
  %2870 = getelementptr inbounds %struct.doublecomplex, ptr %34, i32 0, i32 1
  %2871 = load double, ptr %2870, align 8, !tbaa !15
  %2872 = load ptr, ptr %15, align 8, !tbaa !5
  %2873 = load i32, ptr %26, align 4, !tbaa !9
  %2874 = sext i32 %2873 to i64
  %2875 = getelementptr inbounds %struct.doublecomplex, ptr %2872, i64 %2874
  %2876 = getelementptr inbounds %struct.doublecomplex, ptr %2875, i32 0, i32 1
  store double %2871, ptr %2876, align 8, !tbaa !15
  br label %2877

2877:                                             ; preds = %2644
  %2878 = load i32, ptr %40, align 4, !tbaa !9
  %2879 = add nsw i32 %2878, 1
  store i32 %2879, ptr %40, align 4, !tbaa !9
  br label %2640, !llvm.loop !20

2880:                                             ; preds = %2640
  br label %2881

2881:                                             ; preds = %2880, %2500
  %2882 = load i32, ptr %41, align 4, !tbaa !9
  %2883 = load i32, ptr %41, align 4, !tbaa !9
  %2884 = load i32, ptr %21, align 4, !tbaa !9
  %2885 = mul nsw i32 %2883, %2884
  %2886 = add nsw i32 %2882, %2885
  store i32 %2886, ptr %25, align 4, !tbaa !9
  %2887 = load i32, ptr %41, align 4, !tbaa !9
  %2888 = load i32, ptr %41, align 4, !tbaa !9
  %2889 = load i32, ptr %23, align 4, !tbaa !9
  %2890 = mul nsw i32 %2888, %2889
  %2891 = add nsw i32 %2887, %2890
  store i32 %2891, ptr %26, align 4, !tbaa !9
  %2892 = load ptr, ptr %18, align 8, !tbaa !5
  %2893 = load i32, ptr %26, align 4, !tbaa !9
  %2894 = sext i32 %2893 to i64
  %2895 = getelementptr inbounds %struct.doublecomplex, ptr %2892, i64 %2894
  %2896 = getelementptr inbounds %struct.doublecomplex, ptr %2895, i32 0, i32 0
  %2897 = load double, ptr %2896, align 8, !tbaa !13
  %2898 = load ptr, ptr %15, align 8, !tbaa !5
  %2899 = load i32, ptr %25, align 4, !tbaa !9
  %2900 = sext i32 %2899 to i64
  %2901 = getelementptr inbounds %struct.doublecomplex, ptr %2898, i64 %2900
  %2902 = getelementptr inbounds %struct.doublecomplex, ptr %2901, i32 0, i32 0
  store double %2897, ptr %2902, align 8, !tbaa !13
  %2903 = load ptr, ptr %18, align 8, !tbaa !5
  %2904 = load i32, ptr %26, align 4, !tbaa !9
  %2905 = sext i32 %2904 to i64
  %2906 = getelementptr inbounds %struct.doublecomplex, ptr %2903, i64 %2905
  %2907 = getelementptr inbounds %struct.doublecomplex, ptr %2906, i32 0, i32 1
  %2908 = load double, ptr %2907, align 8, !tbaa !15
  %2909 = load ptr, ptr %15, align 8, !tbaa !5
  %2910 = load i32, ptr %25, align 4, !tbaa !9
  %2911 = sext i32 %2910 to i64
  %2912 = getelementptr inbounds %struct.doublecomplex, ptr %2909, i64 %2911
  %2913 = getelementptr inbounds %struct.doublecomplex, ptr %2912, i32 0, i32 1
  store double %2908, ptr %2913, align 8, !tbaa !15
  %2914 = load i32, ptr %41, align 4, !tbaa !9
  %2915 = add nsw i32 %2914, 1
  %2916 = load i32, ptr %41, align 4, !tbaa !9
  %2917 = load i32, ptr %21, align 4, !tbaa !9
  %2918 = mul nsw i32 %2916, %2917
  %2919 = add nsw i32 %2915, %2918
  store i32 %2919, ptr %25, align 4, !tbaa !9
  %2920 = load i32, ptr %41, align 4, !tbaa !9
  %2921 = add nsw i32 %2920, 1
  %2922 = load i32, ptr %41, align 4, !tbaa !9
  %2923 = load i32, ptr %23, align 4, !tbaa !9
  %2924 = mul nsw i32 %2922, %2923
  %2925 = add nsw i32 %2921, %2924
  store i32 %2925, ptr %26, align 4, !tbaa !9
  %2926 = load ptr, ptr %18, align 8, !tbaa !5
  %2927 = load i32, ptr %26, align 4, !tbaa !9
  %2928 = sext i32 %2927 to i64
  %2929 = getelementptr inbounds %struct.doublecomplex, ptr %2926, i64 %2928
  %2930 = getelementptr inbounds %struct.doublecomplex, ptr %2929, i32 0, i32 0
  %2931 = load double, ptr %2930, align 8, !tbaa !13
  %2932 = load ptr, ptr %15, align 8, !tbaa !5
  %2933 = load i32, ptr %25, align 4, !tbaa !9
  %2934 = sext i32 %2933 to i64
  %2935 = getelementptr inbounds %struct.doublecomplex, ptr %2932, i64 %2934
  %2936 = getelementptr inbounds %struct.doublecomplex, ptr %2935, i32 0, i32 0
  store double %2931, ptr %2936, align 8, !tbaa !13
  %2937 = load ptr, ptr %18, align 8, !tbaa !5
  %2938 = load i32, ptr %26, align 4, !tbaa !9
  %2939 = sext i32 %2938 to i64
  %2940 = getelementptr inbounds %struct.doublecomplex, ptr %2937, i64 %2939
  %2941 = getelementptr inbounds %struct.doublecomplex, ptr %2940, i32 0, i32 1
  %2942 = load double, ptr %2941, align 8, !tbaa !15
  %2943 = load ptr, ptr %15, align 8, !tbaa !5
  %2944 = load i32, ptr %25, align 4, !tbaa !9
  %2945 = sext i32 %2944 to i64
  %2946 = getelementptr inbounds %struct.doublecomplex, ptr %2943, i64 %2945
  %2947 = getelementptr inbounds %struct.doublecomplex, ptr %2946, i32 0, i32 1
  store double %2942, ptr %2947, align 8, !tbaa !15
  %2948 = load i32, ptr %41, align 4, !tbaa !9
  %2949 = add nsw i32 %2948, 1
  %2950 = load i32, ptr %41, align 4, !tbaa !9
  %2951 = add nsw i32 %2950, 1
  %2952 = load i32, ptr %21, align 4, !tbaa !9
  %2953 = mul nsw i32 %2951, %2952
  %2954 = add nsw i32 %2949, %2953
  store i32 %2954, ptr %25, align 4, !tbaa !9
  %2955 = load i32, ptr %41, align 4, !tbaa !9
  %2956 = add nsw i32 %2955, 1
  %2957 = load i32, ptr %41, align 4, !tbaa !9
  %2958 = add nsw i32 %2957, 1
  %2959 = load i32, ptr %23, align 4, !tbaa !9
  %2960 = mul nsw i32 %2958, %2959
  %2961 = add nsw i32 %2956, %2960
  store i32 %2961, ptr %26, align 4, !tbaa !9
  %2962 = load ptr, ptr %18, align 8, !tbaa !5
  %2963 = load i32, ptr %26, align 4, !tbaa !9
  %2964 = sext i32 %2963 to i64
  %2965 = getelementptr inbounds %struct.doublecomplex, ptr %2962, i64 %2964
  %2966 = getelementptr inbounds %struct.doublecomplex, ptr %2965, i32 0, i32 0
  %2967 = load double, ptr %2966, align 8, !tbaa !13
  %2968 = load ptr, ptr %15, align 8, !tbaa !5
  %2969 = load i32, ptr %25, align 4, !tbaa !9
  %2970 = sext i32 %2969 to i64
  %2971 = getelementptr inbounds %struct.doublecomplex, ptr %2968, i64 %2970
  %2972 = getelementptr inbounds %struct.doublecomplex, ptr %2971, i32 0, i32 0
  store double %2967, ptr %2972, align 8, !tbaa !13
  %2973 = load ptr, ptr %18, align 8, !tbaa !5
  %2974 = load i32, ptr %26, align 4, !tbaa !9
  %2975 = sext i32 %2974 to i64
  %2976 = getelementptr inbounds %struct.doublecomplex, ptr %2973, i64 %2975
  %2977 = getelementptr inbounds %struct.doublecomplex, ptr %2976, i32 0, i32 1
  %2978 = load double, ptr %2977, align 8, !tbaa !15
  %2979 = load ptr, ptr %15, align 8, !tbaa !5
  %2980 = load i32, ptr %25, align 4, !tbaa !9
  %2981 = sext i32 %2980 to i64
  %2982 = getelementptr inbounds %struct.doublecomplex, ptr %2979, i64 %2981
  %2983 = getelementptr inbounds %struct.doublecomplex, ptr %2982, i32 0, i32 1
  store double %2978, ptr %2983, align 8, !tbaa !15
  %2984 = load ptr, ptr %12, align 8, !tbaa !5
  %2985 = load i32, ptr %2984, align 4, !tbaa !9
  %2986 = load i32, ptr %41, align 4, !tbaa !9
  %2987 = sub nsw i32 %2985, %2986
  store i32 %2987, ptr %25, align 4, !tbaa !9
  %2988 = load ptr, ptr %18, align 8, !tbaa !5
  %2989 = load i32, ptr %41, align 4, !tbaa !9
  %2990 = add nsw i32 %2989, 1
  %2991 = load i32, ptr %41, align 4, !tbaa !9
  %2992 = load i32, ptr %23, align 4, !tbaa !9
  %2993 = mul nsw i32 %2991, %2992
  %2994 = add nsw i32 %2990, %2993
  %2995 = sext i32 %2994 to i64
  %2996 = getelementptr inbounds %struct.doublecomplex, ptr %2988, i64 %2995
  call void @zlacgv_(ptr noundef %25, ptr noundef %2996, ptr noundef @c__1)
  %2997 = load ptr, ptr %12, align 8, !tbaa !5
  %2998 = load i32, ptr %2997, align 4, !tbaa !9
  %2999 = load i32, ptr %41, align 4, !tbaa !9
  %3000 = sub nsw i32 %2998, %2999
  %3001 = sub nsw i32 %3000, 1
  store i32 %3001, ptr %25, align 4, !tbaa !9
  %3002 = load ptr, ptr %18, align 8, !tbaa !5
  %3003 = load i32, ptr %41, align 4, !tbaa !9
  %3004 = add nsw i32 %3003, 2
  %3005 = load i32, ptr %41, align 4, !tbaa !9
  %3006 = add nsw i32 %3005, 1
  %3007 = load i32, ptr %23, align 4, !tbaa !9
  %3008 = mul nsw i32 %3006, %3007
  %3009 = add nsw i32 %3004, %3008
  %3010 = sext i32 %3009 to i64
  %3011 = getelementptr inbounds %struct.doublecomplex, ptr %3002, i64 %3010
  call void @zlacgv_(ptr noundef %25, ptr noundef %3011, ptr noundef @c__1)
  br label %3012

3012:                                             ; preds = %2881, %2499
  br label %3013

3013:                                             ; preds = %3012, %1907
  %3014 = load i32, ptr %44, align 4, !tbaa !9
  %3015 = icmp eq i32 %3014, 1
  br i1 %3015, label %3016, label %3022

3016:                                             ; preds = %3013
  %3017 = load i32, ptr %53, align 4, !tbaa !9
  %3018 = load ptr, ptr %17, align 8, !tbaa !5
  %3019 = load i32, ptr %41, align 4, !tbaa !9
  %3020 = sext i32 %3019 to i64
  %3021 = getelementptr inbounds i32, ptr %3018, i64 %3020
  store i32 %3017, ptr %3021, align 4, !tbaa !9
  br label %3036

3022:                                             ; preds = %3013
  %3023 = load i32, ptr %53, align 4, !tbaa !9
  %3024 = sub nsw i32 0, %3023
  %3025 = load ptr, ptr %17, align 8, !tbaa !5
  %3026 = load i32, ptr %41, align 4, !tbaa !9
  %3027 = sext i32 %3026 to i64
  %3028 = getelementptr inbounds i32, ptr %3025, i64 %3027
  store i32 %3024, ptr %3028, align 4, !tbaa !9
  %3029 = load i32, ptr %53, align 4, !tbaa !9
  %3030 = sub nsw i32 0, %3029
  %3031 = load ptr, ptr %17, align 8, !tbaa !5
  %3032 = load i32, ptr %41, align 4, !tbaa !9
  %3033 = add nsw i32 %3032, 1
  %3034 = sext i32 %3033 to i64
  %3035 = getelementptr inbounds i32, ptr %3031, i64 %3034
  store i32 %3030, ptr %3035, align 4, !tbaa !9
  br label %3036

3036:                                             ; preds = %3022, %3016
  %3037 = load i32, ptr %44, align 4, !tbaa !9
  %3038 = load i32, ptr %41, align 4, !tbaa !9
  %3039 = add nsw i32 %3038, %3037
  store i32 %3039, ptr %41, align 4, !tbaa !9
  br label %1675

3040:                                             ; preds = %1691
  %3041 = load ptr, ptr %12, align 8, !tbaa !5
  %3042 = load i32, ptr %3041, align 4, !tbaa !9
  store i32 %3042, ptr %25, align 4, !tbaa !9
  %3043 = load ptr, ptr %13, align 8, !tbaa !5
  %3044 = load i32, ptr %3043, align 4, !tbaa !9
  store i32 %3044, ptr %26, align 4, !tbaa !9
  %3045 = load i32, ptr %41, align 4, !tbaa !9
  store i32 %3045, ptr %40, align 4, !tbaa !9
  br label %3046

3046:                                             ; preds = %3224, %3040
  %3047 = load i32, ptr %26, align 4, !tbaa !9
  %3048 = icmp slt i32 %3047, 0
  br i1 %3048, label %3049, label %3054

3049:                                             ; preds = %3046
  %3050 = load i32, ptr %40, align 4, !tbaa !9
  %3051 = load i32, ptr %25, align 4, !tbaa !9
  %3052 = icmp sge i32 %3050, %3051
  %3053 = zext i1 %3052 to i32
  br label %3059

3054:                                             ; preds = %3046
  %3055 = load i32, ptr %40, align 4, !tbaa !9
  %3056 = load i32, ptr %25, align 4, !tbaa !9
  %3057 = icmp sle i32 %3055, %3056
  %3058 = zext i1 %3057 to i32
  br label %3059

3059:                                             ; preds = %3054, %3049
  %3060 = phi i32 [ %3053, %3049 ], [ %3058, %3054 ]
  %3061 = icmp ne i32 %3060, 0
  br i1 %3061, label %3062, label %3228

3062:                                             ; preds = %3059
  %3063 = load ptr, ptr %13, align 8, !tbaa !5
  %3064 = load i32, ptr %3063, align 4, !tbaa !9
  store i32 %3064, ptr %27, align 4, !tbaa !9
  %3065 = load ptr, ptr %12, align 8, !tbaa !5
  %3066 = load i32, ptr %3065, align 4, !tbaa !9
  %3067 = load i32, ptr %40, align 4, !tbaa !9
  %3068 = sub nsw i32 %3066, %3067
  %3069 = add nsw i32 %3068, 1
  store i32 %3069, ptr %28, align 4, !tbaa !9
  %3070 = load i32, ptr %27, align 4, !tbaa !9
  %3071 = load i32, ptr %28, align 4, !tbaa !9
  %3072 = icmp sle i32 %3070, %3071
  br i1 %3072, label %3073, label %3075

3073:                                             ; preds = %3062
  %3074 = load i32, ptr %27, align 4, !tbaa !9
  br label %3077

3075:                                             ; preds = %3062
  %3076 = load i32, ptr %28, align 4, !tbaa !9
  br label %3077

3077:                                             ; preds = %3075, %3073
  %3078 = phi i32 [ %3074, %3073 ], [ %3076, %3075 ]
  store i32 %3078, ptr %49, align 4, !tbaa !9
  %3079 = load i32, ptr %40, align 4, !tbaa !9
  %3080 = load i32, ptr %49, align 4, !tbaa !9
  %3081 = add nsw i32 %3079, %3080
  %3082 = sub nsw i32 %3081, 1
  store i32 %3082, ptr %27, align 4, !tbaa !9
  %3083 = load i32, ptr %40, align 4, !tbaa !9
  store i32 %3083, ptr %50, align 4, !tbaa !9
  br label %3084

3084:                                             ; preds = %3174, %3077
  %3085 = load i32, ptr %50, align 4, !tbaa !9
  %3086 = load i32, ptr %27, align 4, !tbaa !9
  %3087 = icmp sle i32 %3085, %3086
  br i1 %3087, label %3088, label %3177

3088:                                             ; preds = %3084
  %3089 = load i32, ptr %50, align 4, !tbaa !9
  %3090 = load i32, ptr %50, align 4, !tbaa !9
  %3091 = load i32, ptr %21, align 4, !tbaa !9
  %3092 = mul nsw i32 %3090, %3091
  %3093 = add nsw i32 %3089, %3092
  store i32 %3093, ptr %28, align 4, !tbaa !9
  %3094 = load i32, ptr %50, align 4, !tbaa !9
  %3095 = load i32, ptr %50, align 4, !tbaa !9
  %3096 = load i32, ptr %21, align 4, !tbaa !9
  %3097 = mul nsw i32 %3095, %3096
  %3098 = add nsw i32 %3094, %3097
  store i32 %3098, ptr %29, align 4, !tbaa !9
  %3099 = load ptr, ptr %15, align 8, !tbaa !5
  %3100 = load i32, ptr %29, align 4, !tbaa !9
  %3101 = sext i32 %3100 to i64
  %3102 = getelementptr inbounds %struct.doublecomplex, ptr %3099, i64 %3101
  %3103 = getelementptr inbounds %struct.doublecomplex, ptr %3102, i32 0, i32 0
  %3104 = load double, ptr %3103, align 8, !tbaa !13
  store double %3104, ptr %30, align 8, !tbaa !11
  %3105 = load double, ptr %30, align 8, !tbaa !11
  %3106 = load ptr, ptr %15, align 8, !tbaa !5
  %3107 = load i32, ptr %28, align 4, !tbaa !9
  %3108 = sext i32 %3107 to i64
  %3109 = getelementptr inbounds %struct.doublecomplex, ptr %3106, i64 %3108
  %3110 = getelementptr inbounds %struct.doublecomplex, ptr %3109, i32 0, i32 0
  store double %3105, ptr %3110, align 8, !tbaa !13
  %3111 = load ptr, ptr %15, align 8, !tbaa !5
  %3112 = load i32, ptr %28, align 4, !tbaa !9
  %3113 = sext i32 %3112 to i64
  %3114 = getelementptr inbounds %struct.doublecomplex, ptr %3111, i64 %3113
  %3115 = getelementptr inbounds %struct.doublecomplex, ptr %3114, i32 0, i32 1
  store double 0.000000e+00, ptr %3115, align 8, !tbaa !15
  %3116 = load i32, ptr %40, align 4, !tbaa !9
  %3117 = load i32, ptr %49, align 4, !tbaa !9
  %3118 = add nsw i32 %3116, %3117
  %3119 = load i32, ptr %50, align 4, !tbaa !9
  %3120 = sub nsw i32 %3118, %3119
  store i32 %3120, ptr %28, align 4, !tbaa !9
  %3121 = load i32, ptr %41, align 4, !tbaa !9
  %3122 = sub nsw i32 %3121, 1
  store i32 %3122, ptr %29, align 4, !tbaa !9
  %3123 = getelementptr inbounds %struct.doublecomplex, ptr %34, i32 0, i32 0
  store double -1.000000e+00, ptr %3123, align 8, !tbaa !13
  %3124 = getelementptr inbounds %struct.doublecomplex, ptr %34, i32 0, i32 1
  store double 0.000000e+00, ptr %3124, align 8, !tbaa !15
  %3125 = load ptr, ptr %15, align 8, !tbaa !5
  %3126 = load i32, ptr %50, align 4, !tbaa !9
  %3127 = load i32, ptr %21, align 4, !tbaa !9
  %3128 = add nsw i32 %3126, %3127
  %3129 = sext i32 %3128 to i64
  %3130 = getelementptr inbounds %struct.doublecomplex, ptr %3125, i64 %3129
  %3131 = load ptr, ptr %16, align 8, !tbaa !5
  %3132 = load ptr, ptr %18, align 8, !tbaa !5
  %3133 = load i32, ptr %50, align 4, !tbaa !9
  %3134 = load i32, ptr %23, align 4, !tbaa !9
  %3135 = add nsw i32 %3133, %3134
  %3136 = sext i32 %3135 to i64
  %3137 = getelementptr inbounds %struct.doublecomplex, ptr %3132, i64 %3136
  %3138 = load ptr, ptr %19, align 8, !tbaa !5
  %3139 = load ptr, ptr %15, align 8, !tbaa !5
  %3140 = load i32, ptr %50, align 4, !tbaa !9
  %3141 = load i32, ptr %50, align 4, !tbaa !9
  %3142 = load i32, ptr %21, align 4, !tbaa !9
  %3143 = mul nsw i32 %3141, %3142
  %3144 = add nsw i32 %3140, %3143
  %3145 = sext i32 %3144 to i64
  %3146 = getelementptr inbounds %struct.doublecomplex, ptr %3139, i64 %3145
  call void @zgemv_(ptr noundef @.str.1, ptr noundef %28, ptr noundef %29, ptr noundef %34, ptr noundef %3130, ptr noundef %3131, ptr noundef %3137, ptr noundef %3138, ptr noundef @c_b1, ptr noundef %3146, ptr noundef @c__1)
  %3147 = load i32, ptr %50, align 4, !tbaa !9
  %3148 = load i32, ptr %50, align 4, !tbaa !9
  %3149 = load i32, ptr %21, align 4, !tbaa !9
  %3150 = mul nsw i32 %3148, %3149
  %3151 = add nsw i32 %3147, %3150
  store i32 %3151, ptr %28, align 4, !tbaa !9
  %3152 = load i32, ptr %50, align 4, !tbaa !9
  %3153 = load i32, ptr %50, align 4, !tbaa !9
  %3154 = load i32, ptr %21, align 4, !tbaa !9
  %3155 = mul nsw i32 %3153, %3154
  %3156 = add nsw i32 %3152, %3155
  store i32 %3156, ptr %29, align 4, !tbaa !9
  %3157 = load ptr, ptr %15, align 8, !tbaa !5
  %3158 = load i32, ptr %29, align 4, !tbaa !9
  %3159 = sext i32 %3158 to i64
  %3160 = getelementptr inbounds %struct.doublecomplex, ptr %3157, i64 %3159
  %3161 = getelementptr inbounds %struct.doublecomplex, ptr %3160, i32 0, i32 0
  %3162 = load double, ptr %3161, align 8, !tbaa !13
  store double %3162, ptr %30, align 8, !tbaa !11
  %3163 = load double, ptr %30, align 8, !tbaa !11
  %3164 = load ptr, ptr %15, align 8, !tbaa !5
  %3165 = load i32, ptr %28, align 4, !tbaa !9
  %3166 = sext i32 %3165 to i64
  %3167 = getelementptr inbounds %struct.doublecomplex, ptr %3164, i64 %3166
  %3168 = getelementptr inbounds %struct.doublecomplex, ptr %3167, i32 0, i32 0
  store double %3163, ptr %3168, align 8, !tbaa !13
  %3169 = load ptr, ptr %15, align 8, !tbaa !5
  %3170 = load i32, ptr %28, align 4, !tbaa !9
  %3171 = sext i32 %3170 to i64
  %3172 = getelementptr inbounds %struct.doublecomplex, ptr %3169, i64 %3171
  %3173 = getelementptr inbounds %struct.doublecomplex, ptr %3172, i32 0, i32 1
  store double 0.000000e+00, ptr %3173, align 8, !tbaa !15
  br label %3174

3174:                                             ; preds = %3088
  %3175 = load i32, ptr %50, align 4, !tbaa !9
  %3176 = add nsw i32 %3175, 1
  store i32 %3176, ptr %50, align 4, !tbaa !9
  br label %3084, !llvm.loop !21

3177:                                             ; preds = %3084
  %3178 = load i32, ptr %40, align 4, !tbaa !9
  %3179 = load i32, ptr %49, align 4, !tbaa !9
  %3180 = add nsw i32 %3178, %3179
  %3181 = load ptr, ptr %12, align 8, !tbaa !5
  %3182 = load i32, ptr %3181, align 4, !tbaa !9
  %3183 = icmp sle i32 %3180, %3182
  br i1 %3183, label %3184, label %3223

3184:                                             ; preds = %3177
  %3185 = load ptr, ptr %12, align 8, !tbaa !5
  %3186 = load i32, ptr %3185, align 4, !tbaa !9
  %3187 = load i32, ptr %40, align 4, !tbaa !9
  %3188 = sub nsw i32 %3186, %3187
  %3189 = load i32, ptr %49, align 4, !tbaa !9
  %3190 = sub nsw i32 %3188, %3189
  %3191 = add nsw i32 %3190, 1
  store i32 %3191, ptr %27, align 4, !tbaa !9
  %3192 = load i32, ptr %41, align 4, !tbaa !9
  %3193 = sub nsw i32 %3192, 1
  store i32 %3193, ptr %28, align 4, !tbaa !9
  %3194 = getelementptr inbounds %struct.doublecomplex, ptr %34, i32 0, i32 0
  store double -1.000000e+00, ptr %3194, align 8, !tbaa !13
  %3195 = getelementptr inbounds %struct.doublecomplex, ptr %34, i32 0, i32 1
  store double 0.000000e+00, ptr %3195, align 8, !tbaa !15
  %3196 = load ptr, ptr %15, align 8, !tbaa !5
  %3197 = load i32, ptr %40, align 4, !tbaa !9
  %3198 = load i32, ptr %49, align 4, !tbaa !9
  %3199 = add nsw i32 %3197, %3198
  %3200 = load i32, ptr %21, align 4, !tbaa !9
  %3201 = add nsw i32 %3199, %3200
  %3202 = sext i32 %3201 to i64
  %3203 = getelementptr inbounds %struct.doublecomplex, ptr %3196, i64 %3202
  %3204 = load ptr, ptr %16, align 8, !tbaa !5
  %3205 = load ptr, ptr %18, align 8, !tbaa !5
  %3206 = load i32, ptr %40, align 4, !tbaa !9
  %3207 = load i32, ptr %23, align 4, !tbaa !9
  %3208 = add nsw i32 %3206, %3207
  %3209 = sext i32 %3208 to i64
  %3210 = getelementptr inbounds %struct.doublecomplex, ptr %3205, i64 %3209
  %3211 = load ptr, ptr %19, align 8, !tbaa !5
  %3212 = load ptr, ptr %15, align 8, !tbaa !5
  %3213 = load i32, ptr %40, align 4, !tbaa !9
  %3214 = load i32, ptr %49, align 4, !tbaa !9
  %3215 = add nsw i32 %3213, %3214
  %3216 = load i32, ptr %40, align 4, !tbaa !9
  %3217 = load i32, ptr %21, align 4, !tbaa !9
  %3218 = mul nsw i32 %3216, %3217
  %3219 = add nsw i32 %3215, %3218
  %3220 = sext i32 %3219 to i64
  %3221 = getelementptr inbounds %struct.doublecomplex, ptr %3212, i64 %3220
  %3222 = load ptr, ptr %16, align 8, !tbaa !5
  call void @zgemm_(ptr noundef @.str.1, ptr noundef @.str.2, ptr noundef %27, ptr noundef %49, ptr noundef %28, ptr noundef %34, ptr noundef %3203, ptr noundef %3204, ptr noundef %3210, ptr noundef %3211, ptr noundef @c_b1, ptr noundef %3221, ptr noundef %3222)
  br label %3223

3223:                                             ; preds = %3184, %3177
  br label %3224

3224:                                             ; preds = %3223
  %3225 = load i32, ptr %26, align 4, !tbaa !9
  %3226 = load i32, ptr %40, align 4, !tbaa !9
  %3227 = add nsw i32 %3226, %3225
  store i32 %3227, ptr %40, align 4, !tbaa !9
  br label %3046, !llvm.loop !22

3228:                                             ; preds = %3059
  %3229 = load i32, ptr %41, align 4, !tbaa !9
  %3230 = sub nsw i32 %3229, 1
  store i32 %3230, ptr %40, align 4, !tbaa !9
  br label %3231

3231:                                             ; preds = %3272, %3228
  %3232 = load i32, ptr %40, align 4, !tbaa !9
  store i32 %3232, ptr %50, align 4, !tbaa !9
  %3233 = load ptr, ptr %17, align 8, !tbaa !5
  %3234 = load i32, ptr %40, align 4, !tbaa !9
  %3235 = sext i32 %3234 to i64
  %3236 = getelementptr inbounds i32, ptr %3233, i64 %3235
  %3237 = load i32, ptr %3236, align 4, !tbaa !9
  store i32 %3237, ptr %52, align 4, !tbaa !9
  %3238 = load i32, ptr %52, align 4, !tbaa !9
  %3239 = icmp slt i32 %3238, 0
  br i1 %3239, label %3240, label %3245

3240:                                             ; preds = %3231
  %3241 = load i32, ptr %52, align 4, !tbaa !9
  %3242 = sub nsw i32 0, %3241
  store i32 %3242, ptr %52, align 4, !tbaa !9
  %3243 = load i32, ptr %40, align 4, !tbaa !9
  %3244 = add nsw i32 %3243, -1
  store i32 %3244, ptr %40, align 4, !tbaa !9
  br label %3245

3245:                                             ; preds = %3240, %3231
  %3246 = load i32, ptr %40, align 4, !tbaa !9
  %3247 = add nsw i32 %3246, -1
  store i32 %3247, ptr %40, align 4, !tbaa !9
  %3248 = load i32, ptr %52, align 4, !tbaa !9
  %3249 = load i32, ptr %50, align 4, !tbaa !9
  %3250 = icmp ne i32 %3248, %3249
  br i1 %3250, label %3251, label %3269

3251:                                             ; preds = %3245
  %3252 = load i32, ptr %40, align 4, !tbaa !9
  %3253 = icmp sge i32 %3252, 1
  br i1 %3253, label %3254, label %3269

3254:                                             ; preds = %3251
  %3255 = load ptr, ptr %15, align 8, !tbaa !5
  %3256 = load i32, ptr %52, align 4, !tbaa !9
  %3257 = load i32, ptr %21, align 4, !tbaa !9
  %3258 = add nsw i32 %3256, %3257
  %3259 = sext i32 %3258 to i64
  %3260 = getelementptr inbounds %struct.doublecomplex, ptr %3255, i64 %3259
  %3261 = load ptr, ptr %16, align 8, !tbaa !5
  %3262 = load ptr, ptr %15, align 8, !tbaa !5
  %3263 = load i32, ptr %50, align 4, !tbaa !9
  %3264 = load i32, ptr %21, align 4, !tbaa !9
  %3265 = add nsw i32 %3263, %3264
  %3266 = sext i32 %3265 to i64
  %3267 = getelementptr inbounds %struct.doublecomplex, ptr %3262, i64 %3266
  %3268 = load ptr, ptr %16, align 8, !tbaa !5
  call void @zswap_(ptr noundef %40, ptr noundef %3260, ptr noundef %3261, ptr noundef %3267, ptr noundef %3268)
  br label %3269

3269:                                             ; preds = %3254, %3251, %3245
  %3270 = load i32, ptr %40, align 4, !tbaa !9
  %3271 = icmp sgt i32 %3270, 1
  br i1 %3271, label %3272, label %3273

3272:                                             ; preds = %3269
  br label %3231

3273:                                             ; preds = %3269
  %3274 = load i32, ptr %41, align 4, !tbaa !9
  %3275 = sub nsw i32 %3274, 1
  %3276 = load ptr, ptr %14, align 8, !tbaa !5
  store i32 %3275, ptr %3276, align 4, !tbaa !9
  br label %3277

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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


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

%struct.doublecomplex = type { double, double }

@.str = external hidden unnamed_addr constant [2 x i8], align 1
@c__1 = external hidden global i32, align 4
@.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 void @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 i32, align 4
  %12 = alloca i32, align 4
  %13 = alloca i32, align 4
  %14 = alloca i32, align 4
  %15 = alloca i32, align 4
  %16 = alloca %struct.doublecomplex, align 16
  %17 = alloca %struct.doublecomplex, align 16
  %18 = alloca i32, align 4
  %19 = alloca i32, align 4
  %20 = alloca double, align 8
  %21 = alloca %struct.doublecomplex, align 16
  %22 = alloca i32, align 4
  %23 = alloca i32, align 4
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %11) #5
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %12) #5
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %13) #5
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %14) #5
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %15) #5
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %16) #5
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %17) #5
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %18) #5
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %19) #5
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %20) #5
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %21) #5
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %22) #5
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %23) #5
  %24 = load i32, ptr %5, align 4, !tbaa !5
  %narrow = xor i32 %24, -1
  %25 = sext i32 %narrow to i64
  %26 = getelementptr inbounds %struct.doublecomplex, ptr %4, i64 %25
  %27 = getelementptr inbounds i8, ptr %6, i64 -4
  %28 = load i32, ptr %8, align 4, !tbaa !5
  %narrow883 = xor i32 %28, -1
  %29 = sext i32 %narrow883 to i64
  %30 = getelementptr inbounds %struct.doublecomplex, ptr %7, i64 %29
  store i32 0, ptr %9, align 4, !tbaa !5
  %31 = tail call i32 @lsame_(ptr noundef %0, ptr noundef nonnull @.str) #5
  %.not = icmp eq i32 %31, 0
  br i1 %.not, label %.preheader, label %40

.preheader:                                       ; preds = %10
  %32 = add i32 %28, 1
  %33 = add i32 %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 i32 1, ptr %19, align 4, !tbaa !5
  %37 = load i32, ptr %2, align 4, !tbaa !5
  %.not8841043 = icmp slt i32 %37, 2
  %.pre9961044 = load i32, ptr %1, align 4, !tbaa !5
  %38 = icmp slt i32 %37, %.pre9961044
  %or.cond10211045 = select i1 %.not8841043, i1 %38, i1 false
  %39 = icmp slt i32 %.pre9961044, 1
  %or.cond10221046 = select i1 %or.cond10211045, i1 true, i1 %39
  br i1 %or.cond10221046, label %._crit_edge1051, label %.lr.ph1050

40:                                               ; preds = %10
  %41 = load i32, ptr %1, align 4, !tbaa !5
  %invariant.gep = getelementptr i8, ptr %26, i64 16
  %invariant.gep936 = getelementptr i8, ptr %30, i64 16
  %42 = add i32 %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 = %471, %40
  %47 = phi i32 [ %41, %40 ], [ %.pre, %471 ]
  %storemerge893 = phi i32 [ %41, %40 ], [ %473, %471 ]
  %.0840 = phi i32 [ undef, %40 ], [ %.1841, %471 ]
  %.fr898 = freeze i32 %storemerge893
  store i32 %.fr898, ptr %19, align 4, !tbaa !5
  %48 = load i32, ptr %2, align 4, !tbaa !5
  %49 = add nsw i32 %48, %.fr898
  %50 = sub i32 %49, %47
  %reass.sub = sub i32 %47, %48
  %51 = add i32 %reass.sub, 1
  %.not894 = icmp sgt i32 %.fr898, %51
  br i1 %.not894, label %55, label %52

52:                                               ; preds = %46
  %53 = icmp slt i32 %48, %47
  %54 = icmp slt i32 %.fr898, 1
  %or.cond = or i1 %54, %53
  br i1 %or.cond, label %474, label %56

55:                                               ; preds = %46
  %.old1 = icmp slt i32 %.fr898, 1
  br i1 %.old1, label %474, label %56

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

73:                                               ; preds = %56
  %74 = sub nsw i32 %71, %62
  store i32 %74, ptr %11, align 4, !tbaa !5
  store <2 x double> <double -1.000000e+00, double 0.000000e+00>, ptr %16, align 16, !tbaa !13
  %75 = add nsw i32 %62, 1
  %76 = mul nsw i32 %75, %24
  %77 = sext i32 %76 to i64
  %gep939 = getelementptr %struct.doublecomplex, ptr %invariant.gep, i64 %77
  %78 = add nsw i32 %50, 1
  %79 = mul nsw i32 %78, %28
  %80 = add nsw i32 %62, %79
  %81 = sext i32 %80 to i64
  %82 = getelementptr inbounds %struct.doublecomplex, ptr %30, i64 %81
  call void @zgemv_(ptr noundef nonnull @.str.1, ptr noundef nonnull %19, ptr noundef nonnull %11, ptr noundef nonnull %16, ptr noundef %gep939, ptr noundef nonnull %5, ptr noundef %82, ptr noundef nonnull %8, ptr noundef nonnull @c_b1, ptr noundef %gep937, ptr noundef nonnull @c__1) #5
  %83 = load i32, ptr %19, align 4, !tbaa !5
  %84 = add nsw i32 %83, %60
  store i32 %84, ptr %12, align 4, !tbaa !5
  %85 = sext i32 %84 to i64
  %86 = getelementptr inbounds %struct.doublecomplex, ptr %30, i64 %85, i32 1
  store double 0.000000e+00, ptr %86, align 8, !tbaa !12
  %.phi.trans.insert = getelementptr inbounds %struct.doublecomplex, ptr %30, i64 %85
  %.pre1007 = load double, ptr %.phi.trans.insert, align 8, !tbaa !9
  br label %87

87:                                               ; preds = %73, %56
  %.pre-phi1016 = phi i32 [ %84, %73 ], [ %63, %56 ]
  %88 = phi double [ %.pre1007, %73 ], [ %67, %56 ]
  %89 = phi i32 [ %83, %73 ], [ %62, %56 ]
  store i32 %.pre-phi1016, ptr %11, align 4, !tbaa !5
  %90 = fcmp oge double %88, 0.000000e+00
  %91 = fneg double %88
  %92 = select i1 %90, double %88, double %91
  %93 = icmp sgt i32 %89, 1
  br i1 %93, label %94, label %110

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

110:                                              ; preds = %87, %94
  %.1841 = phi i32 [ %96, %94 ], [ %.0840, %87 ]
  %.0828 = phi double [ %109, %94 ], [ 0.000000e+00, %87 ]
  %111 = fcmp oge double %92, %.0828
  %112 = select i1 %111, double %92, double %.0828
  %113 = fcmp oeq double %112, 0.000000e+00
  br i1 %113, label %114, label %122

114:                                              ; preds = %110
  %115 = load i32, ptr %9, align 4, !tbaa !5
  %116 = icmp eq i32 %115, 0
  %.pre990 = load i32, ptr %19, align 4, !tbaa !5
  br i1 %116, label %117, label %118

117:                                              ; preds = %114
  store i32 %.pre990, ptr %9, align 4, !tbaa !5
  br label %118

118:                                              ; preds = %117, %114
  %119 = mul i32 %.pre990, %42
  store i32 %119, ptr %11, align 4, !tbaa !5
  store i32 %119, ptr %12, align 4, !tbaa !5
  %120 = sext i32 %119 to i64
  %121 = getelementptr inbounds %struct.doublecomplex, ptr %26, i64 %120, i32 1
  store double 0.000000e+00, ptr %121, align 8, !tbaa !12
  br label %435

122:                                              ; preds = %110
  %123 = fmul double %.0828, 0x3FE47E0F66AFED07
  %124 = fcmp ult double %92, %123
  br i1 %124, label %127, label %125

125:                                              ; preds = %122
  %126 = load i32, ptr %19, align 4, !tbaa !5
  br label %216

127:                                              ; preds = %122
  %128 = add nsw i32 %.1841, -1
  store i32 %128, ptr %11, align 4, !tbaa !5
  %129 = mul nsw i32 %.1841, %24
  %130 = sext i32 %129 to i64
  %gep941 = getelementptr %struct.doublecomplex, ptr %invariant.gep, i64 %130
  %131 = add nsw i32 %50, -1
  %132 = mul nsw i32 %131, %28
  %133 = sext i32 %132 to i64
  %gep943 = getelementptr %struct.doublecomplex, ptr %invariant.gep936, i64 %133
  call void @zcopy_(ptr noundef nonnull %11, ptr noundef %gep941, ptr noundef nonnull @c__1, ptr noundef %gep943, ptr noundef nonnull @c__1) #5
  %134 = add i32 %.1841, %132
  %135 = add nsw i32 %129, %.1841
  store i32 %135, ptr %12, align 4, !tbaa !5
  %136 = sext i32 %135 to i64
  %137 = getelementptr inbounds %struct.doublecomplex, ptr %26, i64 %136
  %138 = load double, ptr %137, align 8, !tbaa !9
  %139 = sext i32 %134 to i64
  %140 = getelementptr inbounds %struct.doublecomplex, ptr %30, i64 %139
  store double %138, ptr %140, align 8, !tbaa !9
  %141 = getelementptr inbounds %struct.doublecomplex, ptr %30, i64 %139, i32 1
  store double 0.000000e+00, ptr %141, align 8, !tbaa !12
  %142 = load i32, ptr %19, align 4, !tbaa !5
  %143 = sub nsw i32 %142, %.1841
  store i32 %143, ptr %11, align 4, !tbaa !5
  %144 = add nsw i32 %.1841, 1
  %145 = mul nsw i32 %144, %24
  %146 = add nsw i32 %145, %.1841
  %147 = sext i32 %146 to i64
  %148 = getelementptr inbounds %struct.doublecomplex, ptr %26, i64 %147
  %149 = add nsw i32 %144, %132
  %150 = sext i32 %149 to i64
  %151 = getelementptr inbounds %struct.doublecomplex, ptr %30, i64 %150
  call void @zcopy_(ptr noundef nonnull %11, ptr noundef %148, ptr noundef nonnull %5, ptr noundef %151, ptr noundef nonnull @c__1) #5
  %152 = load i32, ptr %19, align 4, !tbaa !5
  %153 = sub nsw i32 %152, %.1841
  store i32 %153, ptr %11, align 4, !tbaa !5
  call void @zlacgv_(ptr noundef nonnull %11, ptr noundef %151, ptr noundef nonnull @c__1) #5
  %154 = load i32, ptr %19, align 4, !tbaa !5
  %155 = load i32, ptr %1, align 4, !tbaa !5
  %156 = icmp slt i32 %154, %155
  br i1 %156, label %157, label %167

157:                                              ; preds = %127
  %158 = sub nsw i32 %155, %154
  store i32 %158, ptr %11, align 4, !tbaa !5
  store <2 x double> <double -1.000000e+00, double 0.000000e+00>, ptr %16, align 16, !tbaa !13
  %159 = add nsw i32 %154, 1
  %160 = mul nsw i32 %159, %24
  %161 = sext i32 %160 to i64
  %gep945 = getelementptr %struct.doublecomplex, ptr %invariant.gep, i64 %161
  %162 = add nsw i32 %50, 1
  %163 = mul nsw i32 %162, %28
  %164 = add nsw i32 %.1841, %163
  %165 = sext i32 %164 to i64
  %166 = getelementptr inbounds %struct.doublecomplex, ptr %30, i64 %165
  call void @zgemv_(ptr noundef nonnull @.str.1, ptr noundef nonnull %19, ptr noundef nonnull %11, ptr noundef nonnull %16, ptr noundef %gep945, ptr noundef nonnull %5, ptr noundef %166, ptr noundef nonnull %8, ptr noundef nonnull @c_b1, ptr noundef %gep943, ptr noundef nonnull @c__1) #5
  store i32 %134, ptr %12, align 4, !tbaa !5
  store double 0.000000e+00, ptr %141, align 8, !tbaa !12
  %.pre987 = load i32, ptr %19, align 4, !tbaa !5
  br label %167

167:                                              ; preds = %157, %127
  %168 = phi i32 [ %.pre987, %157 ], [ %154, %127 ]
  %169 = sub nsw i32 %168, %.1841
  store i32 %169, ptr %11, align 4, !tbaa !5
  %170 = call i32 @izamax_(ptr noundef nonnull %11, ptr noundef nonnull %151, ptr noundef nonnull @c__1) #5
  %171 = add i32 %134, %170
  store i32 %171, ptr %11, align 4, !tbaa !5
  %172 = sext i32 %171 to i64
  %173 = getelementptr inbounds %struct.doublecomplex, ptr %30, i64 %172
  %174 = load double, ptr %173, align 8, !tbaa !9
  %175 = call { double, double } @Cd(ptr noundef nonnull %173)
  %176 = extractvalue { double, double } %175, 1
  %177 = insertelement <2 x double> poison, double %174, 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
  %shift1054 = shufflevector <2 x double> %181, <2 x double> poison, <2 x i32> <i32 1, i32 poison>
  %182 = fadd <2 x double> %181, %shift1054
  %183 = extractelement <2 x double> %182, i64 0
  %184 = icmp sgt i32 %.1841, 1
  br i1 %184, label %185, label %202

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

202:                                              ; preds = %185, %167
  %.0 = phi double [ %201, %185 ], [ %183, %167 ]
  %203 = fdiv double %.0828, %.0
  %204 = fmul double %123, %203
  %205 = fcmp ult double %92, %204
  br i1 %205, label %208, label %206

206:                                              ; preds = %202
  %207 = load i32, ptr %19, align 4, !tbaa !5
  br label %216

208:                                              ; preds = %202
  store i32 %134, ptr %11, align 4, !tbaa !5
  %209 = load double, ptr %140, align 8, !tbaa !9
  %210 = fcmp oge double %209, 0.000000e+00
  %211 = fneg double %209
  %212 = select i1 %210, double %209, double %211
  %213 = fmul double %.0, 0x3FE47E0F66AFED07
  %214 = fcmp ult double %212, %213
  br i1 %214, label %216, label %215

215:                                              ; preds = %208
  call void @zcopy_(ptr noundef nonnull %19, ptr noundef %gep943, ptr noundef nonnull @c__1, ptr noundef %gep937, ptr noundef nonnull @c__1) #5
  br label %216

216:                                              ; preds = %208, %206, %215, %125
  %217 = phi i1 [ true, %125 ], [ true, %206 ], [ true, %215 ], [ false, %208 ]
  %.0836.neg = phi i32 [ -1, %125 ], [ -1, %206 ], [ -1, %215 ], [ -2, %208 ]
  %.0830 = phi i32 [ %126, %125 ], [ %207, %206 ], [ %.1841, %215 ], [ %.1841, %208 ]
  %218 = load i32, ptr %19, align 4, !tbaa !5
  %219 = add i32 %218, %.0836.neg
  %220 = add nsw i32 %219, 1
  store i32 %220, ptr %23, align 4, !tbaa !5
  %221 = load i32, ptr %2, align 4, !tbaa !5
  %222 = add nsw i32 %221, %220
  %223 = load i32, ptr %1, align 4, !tbaa !5
  %224 = sub i32 %222, %223
  %.not895 = icmp eq i32 %.0830, %220
  br i1 %.not895, label %282, label %225

225:                                              ; preds = %216
  %226 = mul nsw i32 %.0830, %24
  %227 = add nsw i32 %226, %.0830
  %228 = mul i32 %220, %42
  store i32 %228, ptr %12, align 4, !tbaa !5
  %229 = sext i32 %228 to i64
  %230 = getelementptr inbounds %struct.doublecomplex, ptr %26, i64 %229
  %231 = load double, ptr %230, align 8, !tbaa !9
  %232 = sext i32 %227 to i64
  %233 = getelementptr inbounds %struct.doublecomplex, ptr %26, i64 %232
  store double %231, ptr %233, align 8, !tbaa !9
  %234 = getelementptr inbounds %struct.doublecomplex, ptr %26, i64 %232, i32 1
  store double 0.000000e+00, ptr %234, align 8, !tbaa !12
  %235 = xor i32 %.0830, -1
  %236 = sub i32 %219, %.0830
  store i32 %236, ptr %11, align 4, !tbaa !5
  %237 = add nsw i32 %.0830, 1
  %238 = mul nsw i32 %220, %24
  %239 = add nsw i32 %238, %237
  %240 = sext i32 %239 to i64
  %241 = getelementptr inbounds %struct.doublecomplex, ptr %26, i64 %240
  %242 = mul nsw i32 %237, %24
  %243 = add nsw i32 %242, %.0830
  %244 = sext i32 %243 to i64
  %245 = getelementptr inbounds %struct.doublecomplex, ptr %26, i64 %244
  call void @zcopy_(ptr noundef nonnull %11, ptr noundef %241, ptr noundef nonnull @c__1, ptr noundef %245, ptr noundef nonnull %5) #5
  %246 = load i32, ptr %23, align 4, !tbaa !5
  %247 = add i32 %246, %235
  store i32 %247, ptr %11, align 4, !tbaa !5
  call void @zlacgv_(ptr noundef nonnull %11, ptr noundef %245, ptr noundef nonnull %5) #5
  %248 = icmp sgt i32 %.0830, 1
  br i1 %248, label %249, label %255

249:                                              ; preds = %225
  %250 = add nsw i32 %.0830, -1
  store i32 %250, ptr %11, align 4, !tbaa !5
  %251 = load i32, ptr %23, align 4, !tbaa !5
  %252 = mul nsw i32 %251, %24
  %253 = sext i32 %252 to i64
  %gep947 = getelementptr %struct.doublecomplex, ptr %invariant.gep, i64 %253
  %254 = sext i32 %226 to i64
  %gep949 = getelementptr %struct.doublecomplex, ptr %invariant.gep, i64 %254
  call void @zcopy_(ptr noundef nonnull %11, ptr noundef %gep947, ptr noundef nonnull @c__1, ptr noundef %gep949, ptr noundef nonnull @c__1) #5
  br label %255

255:                                              ; preds = %249, %225
  %256 = load i32, ptr %19, align 4, !tbaa !5
  %257 = load i32, ptr %1, align 4, !tbaa !5
  %258 = icmp slt i32 %256, %257
  br i1 %258, label %259, label %270

259:                                              ; preds = %255
  %260 = sub nsw i32 %257, %256
  store i32 %260, ptr %11, align 4, !tbaa !5
  %261 = load i32, ptr %23, align 4, !tbaa !5
  %262 = add nsw i32 %256, 1
  %263 = mul nsw i32 %262, %24
  %264 = add nsw i32 %261, %263
  %265 = sext i32 %264 to i64
  %266 = getelementptr inbounds %struct.doublecomplex, ptr %26, i64 %265
  %267 = add nsw i32 %263, %.0830
  %268 = sext i32 %267 to i64
  %269 = getelementptr inbounds %struct.doublecomplex, ptr %26, i64 %268
  call void @zswap_(ptr noundef nonnull %11, ptr noundef %266, ptr noundef nonnull %5, ptr noundef %269, ptr noundef nonnull %5) #5
  %.pre988 = load i32, ptr %1, align 4, !tbaa !5
  br label %270

270:                                              ; preds = %259, %255
  %271 = phi i32 [ %.pre988, %259 ], [ %257, %255 ]
  %272 = load i32, ptr %23, align 4, !tbaa !5
  %273 = add i32 %271, 1
  %274 = sub i32 %273, %272
  store i32 %274, ptr %11, align 4, !tbaa !5
  %275 = mul nsw i32 %224, %28
  %276 = add nsw i32 %272, %275
  %277 = sext i32 %276 to i64
  %278 = getelementptr inbounds %struct.doublecomplex, ptr %30, i64 %277
  %279 = add nsw i32 %275, %.0830
  %280 = sext i32 %279 to i64
  %281 = getelementptr inbounds %struct.doublecomplex, ptr %30, i64 %280
  call void @zswap_(ptr noundef nonnull %11, ptr noundef %278, ptr noundef nonnull %8, ptr noundef %281, ptr noundef nonnull %8) #5
  br label %282

282:                                              ; preds = %270, %216
  %283 = load i32, ptr %19, align 4, !tbaa !5
  br i1 %217, label %284, label %300

284:                                              ; preds = %282
  %285 = mul nsw i32 %283, %24
  %286 = sext i32 %285 to i64
  %gep953 = getelementptr %struct.doublecomplex, ptr %invariant.gep, i64 %286
  call void @zcopy_(ptr noundef nonnull %19, ptr noundef %gep937, ptr noundef nonnull @c__1, ptr noundef %gep953, ptr noundef nonnull @c__1) #5
  %287 = load i32, ptr %19, align 4, !tbaa !5
  %288 = icmp sgt i32 %287, 1
  br i1 %288, label %289, label %435

289:                                              ; preds = %284
  %290 = mul i32 %287, %42
  %291 = sext i32 %290 to i64
  %292 = getelementptr inbounds %struct.doublecomplex, ptr %26, i64 %291
  %293 = load double, ptr %292, align 8, !tbaa !9
  %294 = fdiv double 1.000000e+00, %293
  store double %294, ptr %20, align 8, !tbaa !13
  %295 = add nsw i32 %287, -1
  store i32 %295, ptr %11, align 4, !tbaa !5
  %296 = mul nsw i32 %287, %24
  %297 = sext i32 %296 to i64
  %gep955 = getelementptr %struct.doublecomplex, ptr %invariant.gep, i64 %297
  call void @zdscal_(ptr noundef nonnull %11, ptr noundef nonnull %20, ptr noundef %gep955, ptr noundef nonnull @c__1) #5
  %298 = load i32, ptr %19, align 4, !tbaa !5
  %299 = add nsw i32 %298, -1
  store i32 %299, ptr %11, align 4, !tbaa !5
  call void @zlacgv_(ptr noundef nonnull %11, ptr noundef %gep937, ptr noundef nonnull @c__1) #5
  %.pre991 = load i32, ptr %19, align 4, !tbaa !5
  br label %435

300:                                              ; preds = %282
  %301 = icmp sgt i32 %283, 2
  br i1 %301, label %302, label %..loopexit929_crit_edge

..loopexit929_crit_edge:                          ; preds = %300
  %.pre1017 = add nsw i32 %50, -1
  %.pre1019 = mul nsw i32 %.pre1017, %28
  br label %.loopexit929

302:                                              ; preds = %300
  %303 = add i32 %60, -1
  %304 = add i32 %303, %283
  store i32 %304, ptr %11, align 4, !tbaa !5
  %305 = sext i32 %304 to i64
  %306 = getelementptr inbounds %struct.doublecomplex, ptr %30, i64 %305
  %307 = load <2 x double>, ptr %306, align 8, !tbaa !13
  store <2 x double> %307, ptr %21, align 16, !tbaa !13
  %308 = call { double, double } @Cd(ptr noundef nonnull %21)
  %309 = extractvalue { double, double } %308, 0
  %310 = extractvalue { double, double } %308, 1
  %311 = fneg double %310
  %312 = call ptr @_pCd(ptr noundef nonnull %17)
  %313 = getelementptr inbounds i8, ptr %312, i64 8
  store double %309, ptr %312, align 8
  store double %311, ptr %313, align 8
  %314 = load i32, ptr %19, align 4, !tbaa !5
  %315 = add nsw i32 %314, %60
  %316 = sext i32 %315 to i64
  %317 = getelementptr inbounds %struct.doublecomplex, ptr %30, i64 %316
  %318 = call { double, double } @Cd(ptr noundef %317)
  %319 = extractvalue { double, double } %318, 0
  %320 = extractvalue { double, double } %318, 1
  %321 = call { double, double } @Cd(ptr noundef nonnull %17)
  %322 = extractvalue { double, double } %321, 0
  %323 = extractvalue { double, double } %321, 1
  %324 = call { double, double } @__divdc3(double noundef %319, double noundef %320, double noundef %322, double noundef %323) #5
  %325 = extractvalue { double, double } %324, 0
  %326 = extractvalue { double, double } %324, 1
  %327 = call ptr @_pCd(ptr noundef nonnull %16)
  %328 = getelementptr inbounds i8, ptr %327, i64 8
  store double %325, ptr %327, align 8
  store double %326, ptr %328, align 8
  %329 = load <2 x double>, ptr %16, align 16
  %330 = load double, ptr %43, align 8, !tbaa !12
  %331 = load i32, ptr %19, align 4, !tbaa !5
  %332 = add nsw i32 %50, -1
  %333 = mul nsw i32 %332, %28
  %334 = add i32 %333, -1
  %335 = add i32 %334, %331
  %336 = sext i32 %335 to i64
  %337 = getelementptr inbounds %struct.doublecomplex, ptr %30, i64 %336
  %338 = call { double, double } @Cd(ptr noundef %337)
  %339 = extractvalue { double, double } %338, 0
  %340 = extractvalue { double, double } %338, 1
  %341 = call { double, double } @Cd(ptr noundef nonnull %21)
  %342 = extractvalue { double, double } %341, 0
  %343 = extractvalue { double, double } %341, 1
  %344 = call { double, double } @__divdc3(double noundef %339, double noundef %340, double noundef %342, double noundef %343) #5
  %345 = extractvalue { double, double } %344, 0
  %346 = extractvalue { double, double } %344, 1
  %347 = call ptr @_pCd(ptr noundef nonnull %16)
  %348 = getelementptr inbounds i8, ptr %347, i64 8
  store double %345, ptr %347, align 8
  store double %346, ptr %348, align 8
  %349 = fneg double %330
  %350 = load <2 x double>, ptr %16, align 16, !tbaa !13
  %351 = insertelement <2 x double> poison, double %330, i64 0
  %352 = insertelement <2 x double> %351, double %349, i64 1
  %353 = fmul <2 x double> %350, %352
  %354 = shufflevector <2 x double> %353, <2 x double> poison, <2 x i32> <i32 1, i32 0>
  %355 = shufflevector <2 x double> %329, <2 x double> poison, <2 x i32> zeroinitializer
  %356 = call <2 x double> @llvm.fmuladd.v2f64(<2 x double> %355, <2 x double> %350, <2 x double> %354)
  store <2 x double> %356, ptr %16, align 16, !tbaa !13
  %357 = extractelement <2 x double> %356, i64 0
  %358 = fadd double %357, -1.000000e+00
  %359 = fdiv double 1.000000e+00, %358
  store double %359, ptr %17, align 16, !tbaa !9
  store double 0.000000e+00, ptr %45, align 8, !tbaa !12
  %360 = call { double, double } @Cd(ptr noundef nonnull %17)
  %361 = extractvalue { double, double } %360, 0
  %362 = extractvalue { double, double } %360, 1
  %363 = call { double, double } @Cd(ptr noundef nonnull %21)
  %364 = extractvalue { double, double } %363, 0
  %365 = extractvalue { double, double } %363, 1
  %366 = call { double, double } @__divdc3(double noundef %361, double noundef %362, double noundef %364, double noundef %365) #5
  %367 = extractvalue { double, double } %366, 0
  %368 = extractvalue { double, double } %366, 1
  %369 = call ptr @_pCd(ptr noundef nonnull %16)
  %370 = getelementptr inbounds i8, ptr %369, i64 8
  store double %367, ptr %369, align 8
  store double %368, ptr %370, align 8
  %371 = load <2 x double>, ptr %16, align 16, !tbaa !13
  store <2 x double> %371, ptr %21, align 16, !tbaa !13
  %372 = load i32, ptr %19, align 4, !tbaa !5
  %373 = add nsw i32 %372, -2
  store i32 %373, ptr %11, align 4, !tbaa !5
  store i32 1, ptr %18, align 4, !tbaa !5
  %.not897934 = icmp slt i32 %372, 3
  br i1 %.not897934, label %.loopexit929, label %.lr.ph

.lr.ph:                                           ; preds = %302
  %374 = shufflevector <2 x double> %350, <2 x double> poison, <2 x i32> zeroinitializer
  %375 = shufflevector <2 x double> %350, <2 x double> poison, <2 x i32> <i32 1, i32 poison>
  %376 = fneg <2 x double> %350
  %377 = shufflevector <2 x double> %375, <2 x double> %376, <2 x i32> <i32 0, i32 3>
  br label %378

378:                                              ; preds = %.lr.ph, %378
  %379 = phi i32 [ 1, %.lr.ph ], [ %433, %378 ]
  %380 = load i32, ptr %19, align 4, !tbaa !5
  %381 = add nsw i32 %380, -1
  %382 = mul nsw i32 %381, %24
  %383 = add nsw i32 %382, %379
  %384 = add nsw i32 %379, %333
  store i32 %384, ptr %13, align 4, !tbaa !5
  %385 = sext i32 %384 to i64
  %386 = getelementptr inbounds %struct.doublecomplex, ptr %30, i64 %385
  %387 = add nsw i32 %379, %60
  store i32 %387, ptr %14, align 4, !tbaa !5
  %388 = sext i32 %387 to i64
  %389 = getelementptr inbounds %struct.doublecomplex, ptr %30, i64 %388
  %390 = load <2 x double>, ptr %386, align 8, !tbaa !13
  %391 = fmul <2 x double> %390, %352
  %392 = shufflevector <2 x double> %391, <2 x double> poison, <2 x i32> <i32 1, i32 0>
  %393 = call <2 x double> @llvm.fmuladd.v2f64(<2 x double> %355, <2 x double> %390, <2 x double> %392)
  %394 = load <2 x double>, ptr %389, align 8, !tbaa !13
  %395 = fsub <2 x double> %393, %394
  store <2 x double> %395, ptr %17, align 16, !tbaa !13
  %396 = load <2 x double>, ptr %21, align 16
  %397 = load double, ptr %44, align 8, !tbaa !12
  %398 = fneg double %397
  %399 = insertelement <2 x double> poison, double %397, i64 0
  %400 = insertelement <2 x double> %399, double %398, i64 1
  %401 = fmul <2 x double> %395, %400
  %402 = shufflevector <2 x double> %401, <2 x double> poison, <2 x i32> <i32 1, i32 0>
  %403 = shufflevector <2 x double> %396, <2 x double> poison, <2 x i32> zeroinitializer
  %404 = call <2 x double> @llvm.fmuladd.v2f64(<2 x double> %403, <2 x double> %395, <2 x double> %402)
  store <2 x double> %404, ptr %16, align 16, !tbaa !13
  %405 = sext i32 %383 to i64
  %406 = getelementptr inbounds %struct.doublecomplex, ptr %26, i64 %405
  store <2 x double> %404, ptr %406, align 8, !tbaa !13
  %407 = mul nsw i32 %380, %24
  %408 = add nsw i32 %407, %379
  store i32 %408, ptr %12, align 4, !tbaa !5
  %409 = call { double, double } @Cd(ptr noundef nonnull %21)
  %410 = extractvalue { double, double } %409, 0
  %411 = extractvalue { double, double } %409, 1
  %412 = fneg double %411
  %413 = call ptr @_pCd(ptr noundef nonnull %17)
  %414 = getelementptr inbounds i8, ptr %413, i64 8
  store double %410, ptr %413, align 8
  store double %412, ptr %414, align 8
  store i32 %387, ptr %13, align 4, !tbaa !5
  store i32 %384, ptr %14, align 4, !tbaa !5
  %415 = load <2 x double>, ptr %17, align 16
  %416 = load double, ptr %45, align 8, !tbaa !12
  %417 = fneg double %416
  %418 = load <2 x double>, ptr %389, align 8, !tbaa !13
  %419 = fmul <2 x double> %418, %377
  %420 = shufflevector <2 x double> %419, <2 x double> poison, <2 x i32> <i32 1, i32 0>
  %421 = call <2 x double> @llvm.fmuladd.v2f64(<2 x double> %374, <2 x double> %418, <2 x double> %420)
  %422 = load <2 x double>, ptr %386, align 8, !tbaa !13
  %423 = fsub <2 x double> %421, %422
  %424 = insertelement <2 x double> poison, double %416, i64 0
  %425 = insertelement <2 x double> %424, double %417, i64 1
  %426 = fmul <2 x double> %423, %425
  %427 = shufflevector <2 x double> %426, <2 x double> poison, <2 x i32> <i32 1, i32 0>
  %428 = shufflevector <2 x double> %415, <2 x double> poison, <2 x i32> zeroinitializer
  %429 = call <2 x double> @llvm.fmuladd.v2f64(<2 x double> %428, <2 x double> %423, <2 x double> %427)
  store <2 x double> %429, ptr %16, align 16, !tbaa !13
  %430 = load i32, ptr %12, align 4, !tbaa !5
  %431 = sext i32 %430 to i64
  %432 = getelementptr inbounds %struct.doublecomplex, ptr %26, i64 %431
  store <2 x double> %429, ptr %432, align 8, !tbaa !13
  %433 = add nuw nsw i32 %379, 1
  store i32 %433, ptr %18, align 4, !tbaa !5
  %434 = load i32, ptr %11, align 4, !tbaa !5
  %.not897.not = icmp slt i32 %379, %434
  br i1 %.not897.not, label %378, label %.loopexit929.loopexit, !llvm.loop !14

435:                                              ; preds = %118, %289, %284
  %436 = phi i32 [ %287, %284 ], [ %.pre991, %289 ], [ %.pre990, %118 ]
  %.1831.ph = phi i32 [ %.0830, %284 ], [ %.0830, %289 ], [ %.pre990, %118 ]
  %437 = sext i32 %436 to i64
  %438 = getelementptr inbounds i32, ptr %27, i64 %437
  store i32 %.1831.ph, ptr %438, align 4, !tbaa !5
  br label %471

.loopexit929.loopexit:                            ; preds = %378
  %.pre989 = load i32, ptr %19, align 4, !tbaa !5
  br label %.loopexit929

.loopexit929:                                     ; preds = %..loopexit929_crit_edge, %.loopexit929.loopexit, %302
  %.pre-phi1020 = phi i32 [ %.pre1019, %..loopexit929_crit_edge ], [ %333, %.loopexit929.loopexit ], [ %333, %302 ]
  %439 = phi i32 [ %283, %..loopexit929_crit_edge ], [ %.pre989, %.loopexit929.loopexit ], [ %372, %302 ]
  %440 = add nsw i32 %439, -1
  %441 = mul i32 %440, %42
  %442 = add nsw i32 %440, %.pre-phi1020
  %443 = sext i32 %442 to i64
  %444 = getelementptr inbounds %struct.doublecomplex, ptr %30, i64 %443
  %445 = sext i32 %441 to i64
  %446 = getelementptr inbounds %struct.doublecomplex, ptr %26, i64 %445
  %447 = load <2 x double>, ptr %444, align 8, !tbaa !13
  store <2 x double> %447, ptr %446, align 8, !tbaa !13
  %448 = mul nsw i32 %439, %24
  %449 = add nsw i32 %440, %448
  %450 = add nsw i32 %440, %60
  %451 = sext i32 %450 to i64
  %452 = getelementptr inbounds %struct.doublecomplex, ptr %30, i64 %451
  %453 = sext i32 %449 to i64
  %454 = getelementptr inbounds %struct.doublecomplex, ptr %26, i64 %453
  %455 = load <2 x double>, ptr %452, align 8, !tbaa !13
  store <2 x double> %455, ptr %454, align 8, !tbaa !13
  %456 = mul i32 %439, %42
  %457 = add nsw i32 %439, %60
  store i32 %457, ptr %12, align 4, !tbaa !5
  %458 = sext i32 %457 to i64
  %459 = getelementptr inbounds %struct.doublecomplex, ptr %30, i64 %458
  %460 = sext i32 %456 to i64
  %461 = getelementptr inbounds %struct.doublecomplex, ptr %26, i64 %460
  %462 = load <2 x double>, ptr %459, align 8, !tbaa !13
  store <2 x double> %462, ptr %461, align 8, !tbaa !13
  store i32 %440, ptr %11, align 4, !tbaa !5
  call void @zlacgv_(ptr noundef nonnull %11, ptr noundef %gep937, ptr noundef nonnull @c__1) #5
  %463 = load i32, ptr %19, align 4, !tbaa !5
  %464 = add nsw i32 %463, -2
  store i32 %464, ptr %11, align 4, !tbaa !5
  %465 = sext i32 %.pre-phi1020 to i64
  %gep951 = getelementptr %struct.doublecomplex, ptr %invariant.gep936, i64 %465
  call void @zlacgv_(ptr noundef nonnull %11, ptr noundef %gep951, ptr noundef nonnull @c__1) #5
  %466 = sub nsw i32 0, %.0830
  %467 = load i32, ptr %19, align 4, !tbaa !5
  %468 = sext i32 %467 to i64
  %469 = getelementptr inbounds i32, ptr %27, i64 %468
  store i32 %466, ptr %469, align 4, !tbaa !5
  %470 = getelementptr i8, ptr %469, i64 -4
  store i32 %466, ptr %470, align 4, !tbaa !5
  br label %471

471:                                              ; preds = %.loopexit929, %435
  %472 = phi i32 [ %467, %.loopexit929 ], [ %436, %435 ]
  %.1837.neg907 = phi i32 [ -2, %.loopexit929 ], [ -1, %435 ]
  %473 = add i32 %472, %.1837.neg907
  %.pre = load i32, ptr %1, align 4, !tbaa !5
  br label %46

474:                                              ; preds = %52, %55
  %475 = sub i32 0, %48
  store i32 %475, ptr %11, align 4, !tbaa !5
  %476 = add i32 %.fr898, -1
  %477 = srem i32 %476, %48
  %478 = sub i32 %.fr898, %477
  %479 = icmp slt i32 %475, 0
  %480 = icmp sgt i32 %478, 0
  %481 = icmp slt i32 %478, 2
  %.in900963 = select i1 %479, i1 %480, i1 %481
  br i1 %.in900963, label %.lr.ph966, label %._crit_edge967

.lr.ph966:                                        ; preds = %474
  %482 = add nsw i32 %50, 1
  %483 = mul nsw i32 %482, %28
  %484 = sext i32 %24 to i64
  %485 = sext i32 %483 to i64
  %486 = add i32 %24, 1
  %invariant.gep1029 = getelementptr %struct.doublecomplex, ptr %30, i64 %485
  br label %487

487:                                              ; preds = %.lr.ph966, %._crit_edge
  %488 = phi i32 [ %478, %.lr.ph966 ], [ %525, %._crit_edge ]
  %489 = load i32, ptr %2, align 4, !tbaa !5
  %490 = load i32, ptr %19, align 4, !tbaa !5
  %491 = sub nsw i32 %490, %488
  %492 = add nsw i32 %491, 1
  %493 = call i32 @llvm.smin.i32(i32 %489, i32 %492)
  store i32 %493, ptr %22, align 4, !tbaa !5
  %494 = add i32 %488, -1
  %495 = add i32 %494, %493
  store i32 %495, ptr %12, align 4, !tbaa !5
  %.not904956 = icmp sgt i32 %488, %495
  br i1 %.not904956, label %._crit_edge, label %.lr.ph958.preheader

.lr.ph958.preheader:                              ; preds = %487
  %496 = sext i32 %488 to i64
  %invariant.gep1031 = getelementptr %struct.doublecomplex, ptr %26, i64 %496
  br label %.lr.ph958

.lr.ph958:                                        ; preds = %.lr.ph958.preheader, %.lr.ph958
  %indvars.iv = phi i64 [ %496, %.lr.ph958.preheader ], [ %indvars.iv.next, %.lr.ph958 ]
  %indvars983 = trunc i64 %indvars.iv to i32
  %497 = mul nsw i64 %indvars.iv, %484
  %498 = mul i32 %486, %indvars983
  %499 = sext i32 %498 to i64
  %500 = getelementptr inbounds %struct.doublecomplex, ptr %26, i64 %499, i32 1
  store double 0.000000e+00, ptr %500, align 8, !tbaa !12
  %501 = add i32 %indvars983, 1
  %502 = sub i32 %501, %488
  store i32 %502, ptr %13, align 4, !tbaa !5
  %503 = load i32, ptr %1, align 4, !tbaa !5
  %504 = load i32, ptr %19, align 4, !tbaa !5
  %505 = sub nsw i32 %503, %504
  store i32 %505, ptr %14, align 4, !tbaa !5
  store <2 x double> <double -1.000000e+00, double 0.000000e+00>, ptr %16, align 16, !tbaa !13
  %506 = add nsw i32 %504, 1
  %507 = mul nsw i32 %506, %24
  %508 = add nsw i32 %507, %488
  %509 = sext i32 %508 to i64
  %510 = getelementptr inbounds %struct.doublecomplex, ptr %26, i64 %509
  %gep1030 = getelementptr %struct.doublecomplex, ptr %invariant.gep1029, i64 %indvars.iv
  %gep1032 = getelementptr %struct.doublecomplex, ptr %invariant.gep1031, i64 %497
  call void @zgemv_(ptr noundef nonnull @.str.1, ptr noundef nonnull %13, ptr noundef nonnull %14, ptr noundef nonnull %16, ptr noundef %510, ptr noundef nonnull %5, ptr noundef %gep1030, ptr noundef nonnull %8, ptr noundef nonnull @c_b1, ptr noundef %gep1032, ptr noundef nonnull @c__1) #5
  store i32 %498, ptr %13, align 4, !tbaa !5
  store i32 %498, ptr %14, align 4, !tbaa !5
  store double 0.000000e+00, ptr %500, align 8, !tbaa !12
  %indvars.iv.next = add nsw i64 %indvars.iv, 1
  %511 = load i32, ptr %12, align 4, !tbaa !5
  %512 = sext i32 %511 to i64
  %.not904.not = icmp slt i64 %indvars.iv, %512
  br i1 %.not904.not, label %.lr.ph958, label %._crit_edge.loopexit, !llvm.loop !16

._crit_edge.loopexit:                             ; preds = %.lr.ph958
  %.pre992 = load i32, ptr %19, align 4, !tbaa !5
  br label %._crit_edge

._crit_edge:                                      ; preds = %._crit_edge.loopexit, %487
  %513 = phi i32 [ %.pre992, %._crit_edge.loopexit ], [ %490, %487 ]
  store i32 %494, ptr %12, align 4, !tbaa !5
  %514 = load i32, ptr %1, align 4, !tbaa !5
  %515 = sub nsw i32 %514, %513
  store i32 %515, ptr %13, align 4, !tbaa !5
  store <2 x double> <double -1.000000e+00, double 0.000000e+00>, ptr %16, align 16, !tbaa !13
  %516 = add nsw i32 %513, 1
  %517 = mul nsw i32 %516, %24
  %518 = sext i32 %517 to i64
  %gep960 = getelementptr %struct.doublecomplex, ptr %invariant.gep, i64 %518
  %519 = add nsw i32 %488, %483
  %520 = sext i32 %519 to i64
  %521 = getelementptr inbounds %struct.doublecomplex, ptr %30, i64 %520
  %522 = mul nsw i32 %488, %24
  %523 = sext i32 %522 to i64
  %gep962 = getelementptr %struct.doublecomplex, ptr %invariant.gep, i64 %523
  call void @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 %gep960, ptr noundef nonnull %5, ptr noundef %521, ptr noundef nonnull %8, ptr noundef nonnull @c_b1, ptr noundef %gep962, ptr noundef nonnull %5) #5
  %524 = load i32, ptr %11, align 4, !tbaa !5
  %525 = add nsw i32 %488, %524
  %526 = icmp slt i32 %524, 0
  %527 = icmp sgt i32 %525, 0
  %528 = icmp slt i32 %525, 2
  %.in900 = select i1 %526, i1 %527, i1 %528
  br i1 %.in900, label %487, label %._crit_edge967.loopexit, !llvm.loop !17

._crit_edge967.loopexit:                          ; preds = %._crit_edge
  %.pre993 = load i32, ptr %19, align 4, !tbaa !5
  br label %._crit_edge967

._crit_edge967:                                   ; preds = %._crit_edge967.loopexit, %474
  %529 = phi i32 [ %.pre993, %._crit_edge967.loopexit ], [ %.fr898, %474 ]
  %530 = add nsw i32 %529, 1
  br label %531

531:                                              ; preds = %547, %._crit_edge967
  %532 = phi i32 [ %537, %547 ], [ %530, %._crit_edge967 ]
  %533 = sext i32 %532 to i64
  %534 = getelementptr inbounds i32, ptr %27, i64 %533
  %535 = load i32, ptr %534, align 4, !tbaa !5
  %.lobit = lshr i32 %535, 31
  %536 = add nsw i32 %532, %.lobit
  %.0832 = call i32 @llvm.abs.i32(i32 %535, i1 true)
  %537 = add nsw i32 %536, 1
  %.not901 = icmp ne i32 %.0832, %532
  %.pre995 = load i32, ptr %1, align 4, !tbaa !5
  %.not902.not = icmp slt i32 %536, %.pre995
  %or.cond1037 = select i1 %.not901, i1 %.not902.not, i1 false
  br i1 %or.cond1037, label %538, label %547

538:                                              ; preds = %531
  %539 = sub i32 %.pre995, %536
  store i32 %539, ptr %11, align 4, !tbaa !5
  %540 = mul nsw i32 %537, %24
  %541 = add nsw i32 %540, %.0832
  %542 = sext i32 %541 to i64
  %543 = getelementptr inbounds %struct.doublecomplex, ptr %26, i64 %542
  %544 = add nsw i32 %540, %532
  %545 = sext i32 %544 to i64
  %546 = getelementptr inbounds %struct.doublecomplex, ptr %26, i64 %545
  call void @zswap_(ptr noundef nonnull %11, ptr noundef %543, ptr noundef nonnull %5, ptr noundef %546, ptr noundef nonnull %5) #5
  %.pre994 = load i32, ptr %1, align 4, !tbaa !5
  br label %547

547:                                              ; preds = %538, %531
  %548 = phi i32 [ %.pre994, %538 ], [ %.pre995, %531 ]
  %549 = icmp slt i32 %537, %548
  br i1 %549, label %531, label %550

550:                                              ; preds = %547
  %551 = load i32, ptr %19, align 4, !tbaa !5
  %552 = sub nsw i32 %548, %551
  br label %1144

.lr.ph1050:                                       ; preds = %.preheader, %1063
  %.pre9961049 = phi i32 [ %.pre996, %1063 ], [ %.pre9961044, %.preheader ]
  %.28421048 = phi i32 [ %.3843, %1063 ], [ undef, %.preheader ]
  %storemerge1047 = phi i32 [ %1065, %1063 ], [ 1, %.preheader ]
  %553 = mul i32 %storemerge1047, %32
  %554 = mul i32 %storemerge1047, %33
  store i32 %554, ptr %12, align 4, !tbaa !5
  %555 = sext i32 %554 to i64
  %556 = getelementptr inbounds %struct.doublecomplex, ptr %26, i64 %555
  %557 = load double, ptr %556, align 8, !tbaa !9
  %558 = sext i32 %553 to i64
  %559 = getelementptr inbounds %struct.doublecomplex, ptr %30, i64 %558
  store double %557, ptr %559, align 8, !tbaa !9
  %560 = getelementptr inbounds %struct.doublecomplex, ptr %30, i64 %558, i32 1
  store double 0.000000e+00, ptr %560, align 8, !tbaa !12
  %561 = icmp slt i32 %storemerge1047, %.pre9961049
  br i1 %561, label %562, label %573

562:                                              ; preds = %.lr.ph1050
  %563 = sub nsw i32 %.pre9961049, %storemerge1047
  store i32 %563, ptr %11, align 4, !tbaa !5
  %564 = add nsw i32 %storemerge1047, 1
  %565 = mul nsw i32 %storemerge1047, %24
  %566 = add nsw i32 %564, %565
  %567 = sext i32 %566 to i64
  %568 = getelementptr inbounds %struct.doublecomplex, ptr %26, i64 %567
  %569 = mul nsw i32 %storemerge1047, %28
  %570 = add nsw i32 %564, %569
  %571 = sext i32 %570 to i64
  %572 = getelementptr inbounds %struct.doublecomplex, ptr %30, i64 %571
  call void @zcopy_(ptr noundef nonnull %11, ptr noundef %568, ptr noundef nonnull @c__1, ptr noundef %572, ptr noundef nonnull @c__1) #5
  %.pre997 = load i32, ptr %1, align 4, !tbaa !5
  %.pre998 = load i32, ptr %19, align 4, !tbaa !5
  %.pre1008 = mul i32 %.pre998, %32
  %.pre1010 = sext i32 %.pre1008 to i64
  br label %573

573:                                              ; preds = %562, %.lr.ph1050
  %.pre-phi1011 = phi i64 [ %.pre1010, %562 ], [ %558, %.lr.ph1050 ]
  %574 = phi i32 [ %.pre998, %562 ], [ %storemerge1047, %.lr.ph1050 ]
  %575 = phi i32 [ %.pre997, %562 ], [ %.pre9961049, %.lr.ph1050 ]
  %576 = add i32 %575, 1
  %577 = sub i32 %576, %574
  store i32 %577, ptr %11, align 4, !tbaa !5
  %578 = add nsw i32 %574, -1
  store i32 %578, ptr %12, align 4, !tbaa !5
  store <2 x double> <double -1.000000e+00, double 0.000000e+00>, ptr %16, align 16, !tbaa !13
  %579 = add nsw i32 %574, %24
  %580 = sext i32 %579 to i64
  %581 = getelementptr inbounds %struct.doublecomplex, ptr %26, i64 %580
  %582 = add nsw i32 %574, %28
  %583 = sext i32 %582 to i64
  %584 = getelementptr inbounds %struct.doublecomplex, ptr %30, i64 %583
  %585 = getelementptr inbounds %struct.doublecomplex, ptr %30, i64 %.pre-phi1011
  call void @zgemv_(ptr noundef nonnull @.str.1, ptr noundef nonnull %11, ptr noundef nonnull %12, ptr noundef nonnull %16, ptr noundef %581, ptr noundef nonnull %5, ptr noundef %584, ptr noundef nonnull %8, ptr noundef nonnull @c_b1, ptr noundef %585, ptr noundef nonnull @c__1) #5
  %586 = load i32, ptr %19, align 4, !tbaa !5
  %587 = mul i32 %586, %32
  store i32 %587, ptr %12, align 4, !tbaa !5
  %588 = sext i32 %587 to i64
  %589 = getelementptr inbounds %struct.doublecomplex, ptr %30, i64 %588
  %590 = load double, ptr %589, align 8, !tbaa !9
  %591 = getelementptr inbounds %struct.doublecomplex, ptr %30, i64 %588, i32 1
  store double 0.000000e+00, ptr %591, align 8, !tbaa !12
  %592 = fcmp oge double %590, 0.000000e+00
  %593 = fneg double %590
  %594 = select i1 %592, double %590, double %593
  %595 = load i32, ptr %1, align 4, !tbaa !5
  %596 = icmp slt i32 %586, %595
  br i1 %596, label %597, label %621

597:                                              ; preds = %573
  %598 = sub nsw i32 %595, %586
  store i32 %598, ptr %11, align 4, !tbaa !5
  %599 = add nsw i32 %586, 1
  %600 = mul nsw i32 %586, %28
  %601 = add nsw i32 %599, %600
  %602 = sext i32 %601 to i64
  %603 = getelementptr inbounds %struct.doublecomplex, ptr %30, i64 %602
  %604 = call i32 @izamax_(ptr noundef nonnull %11, ptr noundef %603, ptr noundef nonnull @c__1) #5
  %605 = add nsw i32 %604, %586
  %606 = load i32, ptr %19, align 4, !tbaa !5
  %607 = mul nsw i32 %606, %28
  %608 = add nsw i32 %607, %605
  store i32 %608, ptr %11, align 4, !tbaa !5
  %609 = sext i32 %608 to i64
  %610 = getelementptr inbounds %struct.doublecomplex, ptr %30, i64 %609
  %611 = load double, ptr %610, align 8, !tbaa !9
  %612 = call { double, double } @Cd(ptr noundef nonnull %610)
  %613 = extractvalue { double, double } %612, 1
  %614 = insertelement <2 x double> poison, double %611, i64 0
  %615 = insertelement <2 x double> %614, double %613, i64 1
  %616 = fcmp oge <2 x double> %615, zeroinitializer
  %617 = fneg <2 x double> %615
  %618 = select <2 x i1> %616, <2 x double> %615, <2 x double> %617
  %shift1056 = shufflevector <2 x double> %618, <2 x double> poison, <2 x i32> <i32 1, i32 poison>
  %619 = fadd <2 x double> %618, %shift1056
  %620 = extractelement <2 x double> %619, i64 0
  br label %621

621:                                              ; preds = %573, %597
  %.3843 = phi i32 [ %605, %597 ], [ %.28421048, %573 ]
  %.1829 = phi double [ %620, %597 ], [ 0.000000e+00, %573 ]
  %622 = fcmp oge double %594, %.1829
  %623 = select i1 %622, double %594, double %.1829
  %624 = fcmp oeq double %623, 0.000000e+00
  %.pre1003 = load i32, ptr %19, align 4, !tbaa !5
  br i1 %624, label %625, label %633

625:                                              ; preds = %621
  %626 = load i32, ptr %9, align 4, !tbaa !5
  %627 = icmp eq i32 %626, 0
  br i1 %627, label %628, label %629

628:                                              ; preds = %625
  store i32 %.pre1003, ptr %9, align 4, !tbaa !5
  br label %629

629:                                              ; preds = %628, %625
  %630 = mul i32 %.pre1003, %33
  store i32 %630, ptr %11, align 4, !tbaa !5
  store i32 %630, ptr %12, align 4, !tbaa !5
  %631 = sext i32 %630 to i64
  %632 = getelementptr inbounds %struct.doublecomplex, ptr %26, i64 %631, i32 1
  store double 0.000000e+00, ptr %632, align 8, !tbaa !12
  br label %1017

633:                                              ; preds = %621
  %634 = fmul double %.1829, 0x3FE47E0F66AFED07
  %635 = fcmp ult double %594, %634
  br i1 %635, label %636, label %778

636:                                              ; preds = %633
  %637 = sub nsw i32 %.3843, %.pre1003
  store i32 %637, ptr %11, align 4, !tbaa !5
  %638 = mul nsw i32 %.pre1003, %24
  %639 = add nsw i32 %638, %.3843
  %640 = sext i32 %639 to i64
  %641 = getelementptr inbounds %struct.doublecomplex, ptr %26, i64 %640
  %642 = add nsw i32 %.pre1003, 1
  %643 = mul nsw i32 %642, %28
  %644 = add nsw i32 %643, %.pre1003
  %645 = sext i32 %644 to i64
  %646 = getelementptr inbounds %struct.doublecomplex, ptr %30, i64 %645
  call void @zcopy_(ptr noundef nonnull %11, ptr noundef %641, ptr noundef nonnull %5, ptr noundef %646, ptr noundef nonnull @c__1) #5
  %647 = load i32, ptr %19, align 4, !tbaa !5
  %648 = sub nsw i32 %.3843, %647
  store i32 %648, ptr %11, align 4, !tbaa !5
  %649 = add nsw i32 %647, 1
  %650 = mul nsw i32 %649, %28
  %651 = add nsw i32 %650, %647
  %652 = sext i32 %651 to i64
  %653 = getelementptr inbounds %struct.doublecomplex, ptr %30, i64 %652
  call void @zlacgv_(ptr noundef nonnull %11, ptr noundef %653, ptr noundef nonnull @c__1) #5
  %654 = load i32, ptr %19, align 4, !tbaa !5
  %655 = add nsw i32 %654, 1
  %656 = mul nsw i32 %655, %28
  %657 = add nsw i32 %656, %.3843
  %658 = mul nsw i32 %.3843, %24
  %659 = add nsw i32 %658, %.3843
  store i32 %659, ptr %12, align 4, !tbaa !5
  %660 = sext i32 %659 to i64
  %661 = getelementptr inbounds %struct.doublecomplex, ptr %26, i64 %660
  %662 = load double, ptr %661, align 8, !tbaa !9
  %663 = sext i32 %657 to i64
  %664 = getelementptr inbounds %struct.doublecomplex, ptr %30, i64 %663
  store double %662, ptr %664, align 8, !tbaa !9
  %665 = getelementptr inbounds %struct.doublecomplex, ptr %30, i64 %663, i32 1
  store double 0.000000e+00, ptr %665, align 8, !tbaa !12
  %666 = load i32, ptr %1, align 4, !tbaa !5
  %667 = icmp slt i32 %.3843, %666
  br i1 %667, label %668, label %677

668:                                              ; preds = %636
  %669 = sub nsw i32 %666, %.3843
  store i32 %669, ptr %11, align 4, !tbaa !5
  %670 = add nsw i32 %.3843, 1
  %671 = add nsw i32 %670, %658
  %672 = sext i32 %671 to i64
  %673 = getelementptr inbounds %struct.doublecomplex, ptr %26, i64 %672
  %674 = add nsw i32 %656, %670
  %675 = sext i32 %674 to i64
  %676 = getelementptr inbounds %struct.doublecomplex, ptr %30, i64 %675
  call void @zcopy_(ptr noundef nonnull %11, ptr noundef %673, ptr noundef nonnull @c__1, ptr noundef %676, ptr noundef nonnull @c__1) #5
  %.pre999 = load i32, ptr %1, align 4, !tbaa !5
  %.pre1000 = load i32, ptr %19, align 4, !tbaa !5
  %.pre1012 = add nsw i32 %.pre1000, 1
  %.pre1014 = mul nsw i32 %.pre1012, %28
  br label %677

677:                                              ; preds = %668, %636
  %.pre-phi1015 = phi i32 [ %.pre1014, %668 ], [ %656, %636 ]
  %678 = phi i32 [ %.pre1000, %668 ], [ %654, %636 ]
  %679 = phi i32 [ %.pre999, %668 ], [ %666, %636 ]
  %680 = add i32 %679, 1
  %681 = sub i32 %680, %678
  store i32 %681, ptr %11, align 4, !tbaa !5
  %682 = add nsw i32 %678, -1
  store i32 %682, ptr %12, align 4, !tbaa !5
  store <2 x double> <double -1.000000e+00, double 0.000000e+00>, ptr %16, align 16, !tbaa !13
  %683 = add nsw i32 %678, %24
  %684 = sext i32 %683 to i64
  %685 = getelementptr inbounds %struct.doublecomplex, ptr %26, i64 %684
  %686 = add nsw i32 %.3843, %28
  %687 = sext i32 %686 to i64
  %688 = getelementptr inbounds %struct.doublecomplex, ptr %30, i64 %687
  %689 = add nsw i32 %.pre-phi1015, %678
  %690 = sext i32 %689 to i64
  %691 = getelementptr inbounds %struct.doublecomplex, ptr %30, i64 %690
  call void @zgemv_(ptr noundef nonnull @.str.1, ptr noundef nonnull %11, ptr noundef nonnull %12, ptr noundef nonnull %16, ptr noundef %685, ptr noundef nonnull %5, ptr noundef %688, ptr noundef nonnull %8, ptr noundef nonnull @c_b1, ptr noundef %691, ptr noundef nonnull @c__1) #5
  %692 = load i32, ptr %19, align 4, !tbaa !5
  %693 = add nsw i32 %692, 1
  %694 = mul nsw i32 %693, %28
  %695 = add nsw i32 %694, %.3843
  store i32 %695, ptr %12, align 4, !tbaa !5
  %696 = sext i32 %695 to i64
  %697 = getelementptr inbounds %struct.doublecomplex, ptr %30, i64 %696, i32 1
  store double 0.000000e+00, ptr %697, align 8, !tbaa !12
  %698 = sub nsw i32 %.3843, %692
  store i32 %698, ptr %11, align 4, !tbaa !5
  %699 = add nsw i32 %692, -1
  %700 = add nsw i32 %694, %692
  %701 = sext i32 %700 to i64
  %702 = getelementptr inbounds %struct.doublecomplex, ptr %30, i64 %701
  %703 = call i32 @izamax_(ptr noundef nonnull %11, ptr noundef %702, ptr noundef nonnull @c__1) #5
  %704 = add nsw i32 %699, %703
  %705 = load i32, ptr %19, align 4, !tbaa !5
  %706 = add nsw i32 %705, 1
  %707 = mul nsw i32 %706, %28
  %708 = add nsw i32 %704, %707
  store i32 %708, ptr %11, align 4, !tbaa !5
  %709 = sext i32 %708 to i64
  %710 = getelementptr inbounds %struct.doublecomplex, ptr %30, i64 %709
  %711 = load double, ptr %710, align 8, !tbaa !9
  %712 = call { double, double } @Cd(ptr noundef nonnull %710)
  %713 = extractvalue { double, double } %712, 1
  %714 = insertelement <2 x double> poison, double %711, i64 0
  %715 = insertelement <2 x double> %714, double %713, i64 1
  %716 = fcmp oge <2 x double> %715, zeroinitializer
  %717 = fneg <2 x double> %715
  %718 = select <2 x i1> %716, <2 x double> %715, <2 x double> %717
  %shift1057 = shufflevector <2 x double> %718, <2 x double> poison, <2 x i32> <i32 1, i32 poison>
  %719 = fadd <2 x double> %718, %shift1057
  %720 = extractelement <2 x double> %719, i64 0
  %721 = load i32, ptr %1, align 4, !tbaa !5
  %722 = icmp slt i32 %.3843, %721
  br i1 %722, label %723, label %752

723:                                              ; preds = %677
  %724 = sub nsw i32 %721, %.3843
  store i32 %724, ptr %11, align 4, !tbaa !5
  %725 = add nsw i32 %.3843, 1
  %726 = load i32, ptr %19, align 4, !tbaa !5
  %727 = add nsw i32 %726, 1
  %728 = mul nsw i32 %727, %28
  %729 = add nsw i32 %725, %728
  %730 = sext i32 %729 to i64
  %731 = getelementptr inbounds %struct.doublecomplex, ptr %30, i64 %730
  %732 = call i32 @izamax_(ptr noundef nonnull %11, ptr noundef %731, ptr noundef nonnull @c__1) #5
  %733 = add nsw i32 %732, %.3843
  %734 = load i32, ptr %19, align 4, !tbaa !5
  %735 = add nsw i32 %734, 1
  %736 = mul nsw i32 %735, %28
  %737 = add nsw i32 %733, %736
  store i32 %737, ptr %11, align 4, !tbaa !5
  %738 = sext i32 %737 to i64
  %739 = getelementptr inbounds %struct.doublecomplex, ptr %30, i64 %738
  %740 = load double, ptr %739, align 8, !tbaa !9
  %741 = call { double, double } @Cd(ptr noundef nonnull %739)
  %742 = extractvalue { double, double } %741, 1
  %743 = insertelement <2 x double> poison, double %740, i64 0
  %744 = insertelement <2 x double> %743, double %742, i64 1
  %745 = fcmp oge <2 x double> %744, zeroinitializer
  %746 = fneg <2 x double> %744
  %747 = select <2 x i1> %745, <2 x double> %744, <2 x double> %746
  %shift1058 = shufflevector <2 x double> %747, <2 x double> poison, <2 x i32> <i32 1, i32 poison>
  %748 = fadd <2 x double> %747, %shift1058
  %749 = extractelement <2 x double> %748, i64 0
  %750 = fcmp oge double %720, %749
  %751 = select i1 %750, double %720, double %749
  br label %752

752:                                              ; preds = %723, %677
  %.1 = phi double [ %751, %723 ], [ %720, %677 ]
  %753 = fdiv double %.1829, %.1
  %754 = fmul double %634, %753
  %755 = fcmp ult double %594, %754
  %756 = load i32, ptr %19, align 4, !tbaa !5
  br i1 %755, label %757, label %778

757:                                              ; preds = %752
  %758 = add nsw i32 %756, 1
  %759 = mul nsw i32 %758, %28
  %760 = add nsw i32 %759, %.3843
  %761 = sext i32 %760 to i64
  %762 = getelementptr inbounds %struct.doublecomplex, ptr %30, i64 %761
  %763 = load double, ptr %762, align 8, !tbaa !9
  %764 = fcmp oge double %763, 0.000000e+00
  %765 = fneg double %763
  %766 = select i1 %764, double %763, double %765
  %767 = fmul double %.1, 0x3FE47E0F66AFED07
  %768 = fcmp ult double %766, %767
  br i1 %768, label %778, label %769

769:                                              ; preds = %757
  %770 = load i32, ptr %1, align 4, !tbaa !5
  %reass.sub977 = sub i32 %770, %756
  %771 = add i32 %reass.sub977, 1
  store i32 %771, ptr %11, align 4, !tbaa !5
  %772 = add nsw i32 %759, %756
  %773 = sext i32 %772 to i64
  %774 = getelementptr inbounds %struct.doublecomplex, ptr %30, i64 %773
  %775 = mul i32 %756, %32
  %776 = sext i32 %775 to i64
  %777 = getelementptr inbounds %struct.doublecomplex, ptr %30, i64 %776
  call void @zcopy_(ptr noundef nonnull %11, ptr noundef %774, ptr noundef nonnull @c__1, ptr noundef %777, ptr noundef nonnull @c__1) #5
  %.pre1001 = load i32, ptr %19, align 4, !tbaa !5
  br label %778

778:                                              ; preds = %752, %633, %757, %769
  %779 = phi i32 [ %.pre1001, %769 ], [ %756, %757 ], [ %.pre1003, %633 ], [ %756, %752 ]
  %780 = phi i1 [ true, %769 ], [ false, %757 ], [ true, %633 ], [ true, %752 ]
  %.2838 = phi i32 [ 1, %769 ], [ 2, %757 ], [ 1, %633 ], [ 1, %752 ]
  %.2 = phi i32 [ %.3843, %769 ], [ %.3843, %757 ], [ %.pre1003, %633 ], [ %756, %752 ]
  %781 = add nsw i32 %779, %.2838
  %782 = add nsw i32 %781, -1
  store i32 %782, ptr %23, align 4, !tbaa !5
  %.not885 = icmp eq i32 %.2, %782
  br i1 %.not885, label %843, label %783

783:                                              ; preds = %778
  %784 = mul nsw i32 %.2, %24
  %785 = add nsw i32 %784, %.2
  %786 = mul i32 %782, %33
  store i32 %786, ptr %12, align 4, !tbaa !5
  %787 = sext i32 %786 to i64
  %788 = getelementptr inbounds %struct.doublecomplex, ptr %26, i64 %787
  %789 = load double, ptr %788, align 8, !tbaa !9
  %790 = sext i32 %785 to i64
  %791 = getelementptr inbounds %struct.doublecomplex, ptr %26, i64 %790
  store double %789, ptr %791, align 8, !tbaa !9
  %792 = getelementptr inbounds %struct.doublecomplex, ptr %26, i64 %790, i32 1
  store double 0.000000e+00, ptr %792, align 8, !tbaa !12
  %793 = sub i32 %.2, %781
  store i32 %793, ptr %11, align 4, !tbaa !5
  %794 = mul nsw i32 %782, %24
  %795 = add nsw i32 %794, %781
  %796 = sext i32 %795 to i64
  %797 = getelementptr inbounds %struct.doublecomplex, ptr %26, i64 %796
  %798 = mul nsw i32 %781, %24
  %799 = add nsw i32 %798, %.2
  %800 = sext i32 %799 to i64
  %801 = getelementptr inbounds %struct.doublecomplex, ptr %26, i64 %800
  call void @zcopy_(ptr noundef nonnull %11, ptr noundef %797, ptr noundef nonnull @c__1, ptr noundef %801, ptr noundef nonnull %5) #5
  %802 = load i32, ptr %23, align 4, !tbaa !5
  %803 = xor i32 %802, -1
  %804 = add i32 %.2, %803
  store i32 %804, ptr %11, align 4, !tbaa !5
  %805 = add nsw i32 %802, 1
  %806 = mul nsw i32 %805, %24
  %807 = add nsw i32 %806, %.2
  %808 = sext i32 %807 to i64
  %809 = getelementptr inbounds %struct.doublecomplex, ptr %26, i64 %808
  call void @zlacgv_(ptr noundef nonnull %11, ptr noundef %809, ptr noundef nonnull %5) #5
  %810 = load i32, ptr %1, align 4, !tbaa !5
  %811 = icmp slt i32 %.2, %810
  br i1 %811, label %812, label %823

812:                                              ; preds = %783
  %813 = sub nsw i32 %810, %.2
  store i32 %813, ptr %11, align 4, !tbaa !5
  %814 = add nsw i32 %.2, 1
  %815 = load i32, ptr %23, align 4, !tbaa !5
  %816 = mul nsw i32 %815, %24
  %817 = add nsw i32 %816, %814
  %818 = sext i32 %817 to i64
  %819 = getelementptr inbounds %struct.doublecomplex, ptr %26, i64 %818
  %820 = add nsw i32 %814, %784
  %821 = sext i32 %820 to i64
  %822 = getelementptr inbounds %struct.doublecomplex, ptr %26, i64 %821
  call void @zcopy_(ptr noundef nonnull %11, ptr noundef %819, ptr noundef nonnull @c__1, ptr noundef %822, ptr noundef nonnull @c__1) #5
  br label %823

823:                                              ; preds = %812, %783
  %824 = load i32, ptr %19, align 4, !tbaa !5
  %825 = icmp sgt i32 %824, 1
  br i1 %825, label %826, label %835

826:                                              ; preds = %823
  %827 = add nsw i32 %824, -1
  store i32 %827, ptr %11, align 4, !tbaa !5
  %828 = load i32, ptr %23, align 4, !tbaa !5
  %829 = add nsw i32 %828, %24
  %830 = sext i32 %829 to i64
  %831 = getelementptr inbounds %struct.doublecomplex, ptr %26, i64 %830
  %832 = add nsw i32 %.2, %24
  %833 = sext i32 %832 to i64
  %834 = getelementptr inbounds %struct.doublecomplex, ptr %26, i64 %833
  call void @zswap_(ptr noundef nonnull %11, ptr noundef %831, ptr noundef nonnull %5, ptr noundef %834, ptr noundef nonnull %5) #5
  br label %835

835:                                              ; preds = %826, %823
  %836 = load i32, ptr %23, align 4, !tbaa !5
  %837 = add nsw i32 %836, %28
  %838 = sext i32 %837 to i64
  %839 = getelementptr inbounds %struct.doublecomplex, ptr %30, i64 %838
  %840 = add nsw i32 %.2, %28
  %841 = sext i32 %840 to i64
  %842 = getelementptr inbounds %struct.doublecomplex, ptr %30, i64 %841
  call void @zswap_(ptr noundef nonnull %23, ptr noundef %839, ptr noundef nonnull %8, ptr noundef %842, ptr noundef nonnull %8) #5
  br label %843

843:                                              ; preds = %835, %778
  br i1 %780, label %844, label %878

844:                                              ; preds = %843
  %845 = load i32, ptr %1, align 4, !tbaa !5
  %846 = load i32, ptr %19, align 4, !tbaa !5
  %847 = add i32 %845, 1
  %848 = sub i32 %847, %846
  store i32 %848, ptr %11, align 4, !tbaa !5
  %849 = mul i32 %846, %32
  %850 = sext i32 %849 to i64
  %851 = getelementptr inbounds %struct.doublecomplex, ptr %30, i64 %850
  %852 = mul i32 %846, %33
  %853 = sext i32 %852 to i64
  %854 = getelementptr inbounds %struct.doublecomplex, ptr %26, i64 %853
  call void @zcopy_(ptr noundef nonnull %11, ptr noundef %851, ptr noundef nonnull @c__1, ptr noundef %854, ptr noundef nonnull @c__1) #5
  %855 = load i32, ptr %19, align 4, !tbaa !5
  %856 = load i32, ptr %1, align 4, !tbaa !5
  %857 = icmp slt i32 %855, %856
  br i1 %857, label %858, label %1017

858:                                              ; preds = %844
  %859 = mul i32 %855, %33
  %860 = sext i32 %859 to i64
  %861 = getelementptr inbounds %struct.doublecomplex, ptr %26, i64 %860
  %862 = load double, ptr %861, align 8, !tbaa !9
  %863 = fdiv double 1.000000e+00, %862
  store double %863, ptr %20, align 8, !tbaa !13
  %864 = sub nsw i32 %856, %855
  store i32 %864, ptr %11, align 4, !tbaa !5
  %865 = add nsw i32 %855, 1
  %866 = mul nsw i32 %855, %24
  %867 = add nsw i32 %865, %866
  %868 = sext i32 %867 to i64
  %869 = getelementptr inbounds %struct.doublecomplex, ptr %26, i64 %868
  call void @zdscal_(ptr noundef nonnull %11, ptr noundef nonnull %20, ptr noundef %869, ptr noundef nonnull @c__1) #5
  %870 = load i32, ptr %1, align 4, !tbaa !5
  %871 = load i32, ptr %19, align 4, !tbaa !5
  %872 = sub nsw i32 %870, %871
  store i32 %872, ptr %11, align 4, !tbaa !5
  %873 = add nsw i32 %871, 1
  %874 = mul nsw i32 %871, %28
  %875 = add nsw i32 %873, %874
  %876 = sext i32 %875 to i64
  %877 = getelementptr inbounds %struct.doublecomplex, ptr %30, i64 %876
  call void @zlacgv_(ptr noundef nonnull %11, ptr noundef %877, ptr noundef nonnull @c__1) #5
  %.pre1004 = load i32, ptr %19, align 4, !tbaa !5
  br label %1017

878:                                              ; preds = %843
  %879 = load i32, ptr %19, align 4, !tbaa !5
  %880 = load i32, ptr %1, align 4, !tbaa !5
  %881 = add nsw i32 %880, -1
  %882 = icmp slt i32 %879, %881
  br i1 %882, label %883, label %.loopexit

883:                                              ; preds = %878
  %884 = add nsw i32 %879, 1
  %885 = mul nsw i32 %879, %28
  %886 = add nsw i32 %884, %885
  store i32 %886, ptr %11, align 4, !tbaa !5
  %887 = sext i32 %886 to i64
  %888 = getelementptr inbounds %struct.doublecomplex, ptr %30, i64 %887
  %889 = load <2 x double>, ptr %888, align 8, !tbaa !13
  store <2 x double> %889, ptr %21, align 16, !tbaa !13
  %890 = mul i32 %884, %32
  %891 = sext i32 %890 to i64
  %892 = getelementptr inbounds %struct.doublecomplex, ptr %30, i64 %891
  %893 = call { double, double } @Cd(ptr noundef %892)
  %894 = extractvalue { double, double } %893, 0
  %895 = extractvalue { double, double } %893, 1
  %896 = call { double, double } @Cd(ptr noundef nonnull %21)
  %897 = extractvalue { double, double } %896, 0
  %898 = extractvalue { double, double } %896, 1
  %899 = call { double, double } @__divdc3(double noundef %894, double noundef %895, double noundef %897, double noundef %898) #5
  %900 = extractvalue { double, double } %899, 0
  %901 = extractvalue { double, double } %899, 1
  %902 = call ptr @_pCd(ptr noundef nonnull %16)
  %903 = getelementptr inbounds i8, ptr %902, i64 8
  store double %900, ptr %902, align 8
  store double %901, ptr %903, align 8
  %904 = load <2 x double>, ptr %16, align 16
  %905 = load double, ptr %34, align 8, !tbaa !12
  %906 = call { double, double } @Cd(ptr noundef nonnull %21)
  %907 = extractvalue { double, double } %906, 0
  %908 = extractvalue { double, double } %906, 1
  %909 = fneg double %908
  %910 = call ptr @_pCd(ptr noundef nonnull %17)
  %911 = getelementptr inbounds i8, ptr %910, i64 8
  store double %907, ptr %910, align 8
  store double %909, ptr %911, align 8
  %912 = load i32, ptr %19, align 4, !tbaa !5
  %913 = mul i32 %912, %32
  %914 = sext i32 %913 to i64
  %915 = getelementptr inbounds %struct.doublecomplex, ptr %30, i64 %914
  %916 = call { double, double } @Cd(ptr noundef %915)
  %917 = extractvalue { double, double } %916, 0
  %918 = extractvalue { double, double } %916, 1
  %919 = call { double, double } @Cd(ptr noundef nonnull %17)
  %920 = extractvalue { double, double } %919, 0
  %921 = extractvalue { double, double } %919, 1
  %922 = call { double, double } @__divdc3(double noundef %917, double noundef %918, double noundef %920, double noundef %921) #5
  %923 = extractvalue { double, double } %922, 0
  %924 = extractvalue { double, double } %922, 1
  %925 = call ptr @_pCd(ptr noundef nonnull %16)
  %926 = getelementptr inbounds i8, ptr %925, i64 8
  store double %923, ptr %925, align 8
  store double %924, ptr %926, align 8
  %927 = fneg double %905
  %928 = load <2 x double>, ptr %16, align 16, !tbaa !13
  %929 = insertelement <2 x double> poison, double %905, i64 0
  %930 = insertelement <2 x double> %929, double %927, i64 1
  %931 = fmul <2 x double> %928, %930
  %932 = shufflevector <2 x double> %931, <2 x double> poison, <2 x i32> <i32 1, i32 0>
  %933 = shufflevector <2 x double> %904, <2 x double> poison, <2 x i32> zeroinitializer
  %934 = call <2 x double> @llvm.fmuladd.v2f64(<2 x double> %933, <2 x double> %928, <2 x double> %932)
  store <2 x double> %934, ptr %16, align 16, !tbaa !13
  %935 = extractelement <2 x double> %934, i64 0
  %936 = fadd double %935, -1.000000e+00
  %937 = fdiv double 1.000000e+00, %936
  store double %937, ptr %17, align 16, !tbaa !9
  store double 0.000000e+00, ptr %36, align 8, !tbaa !12
  %938 = call { double, double } @Cd(ptr noundef nonnull %17)
  %939 = extractvalue { double, double } %938, 0
  %940 = extractvalue { double, double } %938, 1
  %941 = call { double, double } @Cd(ptr noundef nonnull %21)
  %942 = extractvalue { double, double } %941, 0
  %943 = extractvalue { double, double } %941, 1
  %944 = call { double, double } @__divdc3(double noundef %939, double noundef %940, double noundef %942, double noundef %943) #5
  %945 = extractvalue { double, double } %944, 0
  %946 = extractvalue { double, double } %944, 1
  %947 = call ptr @_pCd(ptr noundef nonnull %16)
  %948 = getelementptr inbounds i8, ptr %947, i64 8
  store double %945, ptr %947, align 8
  store double %946, ptr %948, align 8
  %949 = load <2 x double>, ptr %16, align 16, !tbaa !13
  store <2 x double> %949, ptr %21, align 16, !tbaa !13
  %950 = load i32, ptr %1, align 4, !tbaa !5
  store i32 %950, ptr %11, align 4, !tbaa !5
  %951 = load i32, ptr %19, align 4, !tbaa !5
  %952 = add nsw i32 %951, 2
  store i32 %952, ptr %18, align 4, !tbaa !5
  %.not887968 = icmp sgt i32 %952, %950
  br i1 %.not887968, label %.loopexit, label %.lr.ph971

.lr.ph971:                                        ; preds = %883
  %953 = shufflevector <2 x double> %928, <2 x double> poison, <2 x i32> zeroinitializer
  %954 = shufflevector <2 x double> %928, <2 x double> poison, <2 x i32> <i32 1, i32 poison>
  %955 = fneg <2 x double> %928
  %956 = shufflevector <2 x double> %954, <2 x double> %955, <2 x i32> <i32 0, i32 3>
  br label %957

957:                                              ; preds = %.lr.ph971, %957
  %958 = phi i32 [ %951, %.lr.ph971 ], [ %968, %957 ]
  %959 = phi i32 [ %952, %.lr.ph971 ], [ %1015, %957 ]
  %960 = mul nsw i32 %958, %24
  %961 = add nsw i32 %960, %959
  store i32 %961, ptr %12, align 4, !tbaa !5
  %962 = call { double, double } @Cd(ptr noundef nonnull %21)
  %963 = extractvalue { double, double } %962, 0
  %964 = extractvalue { double, double } %962, 1
  %965 = fneg double %964
  %966 = call ptr @_pCd(ptr noundef nonnull %17)
  %967 = getelementptr inbounds i8, ptr %966, i64 8
  store double %963, ptr %966, align 8
  store double %965, ptr %967, align 8
  %968 = load i32, ptr %19, align 4, !tbaa !5
  %969 = mul nsw i32 %968, %28
  %970 = add nsw i32 %969, %959
  %971 = sext i32 %970 to i64
  %972 = getelementptr inbounds %struct.doublecomplex, ptr %30, i64 %971
  %973 = add nsw i32 %968, 1
  %974 = mul nsw i32 %973, %28
  %975 = add nsw i32 %974, %959
  %976 = sext i32 %975 to i64
  %977 = getelementptr inbounds %struct.doublecomplex, ptr %30, i64 %976
  %978 = load <2 x double>, ptr %17, align 16
  %979 = load double, ptr %36, align 8, !tbaa !12
  %980 = fneg double %979
  %981 = load i32, ptr %12, align 4, !tbaa !5
  %982 = sext i32 %981 to i64
  %983 = getelementptr inbounds %struct.doublecomplex, ptr %26, i64 %982
  %984 = load <2 x double>, ptr %972, align 8, !tbaa !13
  %985 = fmul <2 x double> %984, %930
  %986 = shufflevector <2 x double> %985, <2 x double> poison, <2 x i32> <i32 1, i32 0>
  %987 = call <2 x double> @llvm.fmuladd.v2f64(<2 x double> %933, <2 x double> %984, <2 x double> %986)
  %988 = load <2 x double>, ptr %977, align 8, !tbaa !13
  %989 = fsub <2 x double> %987, %988
  %990 = insertelement <2 x double> poison, double %979, i64 0
  %991 = insertelement <2 x double> %990, double %980, i64 1
  %992 = fmul <2 x double> %989, %991
  %993 = shufflevector <2 x double> %992, <2 x double> poison, <2 x i32> <i32 1, i32 0>
  %994 = shufflevector <2 x double> %978, <2 x double> poison, <2 x i32> zeroinitializer
  %995 = call <2 x double> @llvm.fmuladd.v2f64(<2 x double> %994, <2 x double> %989, <2 x double> %993)
  store <2 x double> %995, ptr %983, align 8, !tbaa !13
  %996 = mul nsw i32 %973, %24
  %997 = add nsw i32 %996, %959
  store i32 %997, ptr %12, align 4, !tbaa !5
  store i32 %975, ptr %13, align 4, !tbaa !5
  store i32 %970, ptr %14, align 4, !tbaa !5
  %998 = load <2 x double>, ptr %21, align 16
  %999 = load double, ptr %35, align 8, !tbaa !12
  %1000 = fneg double %999
  %1001 = sext i32 %997 to i64
  %1002 = getelementptr inbounds %struct.doublecomplex, ptr %26, i64 %1001
  %1003 = load <2 x double>, ptr %977, align 8, !tbaa !13
  %1004 = fmul <2 x double> %1003, %956
  %1005 = shufflevector <2 x double> %1004, <2 x double> poison, <2 x i32> <i32 1, i32 0>
  %1006 = call <2 x double> @llvm.fmuladd.v2f64(<2 x double> %953, <2 x double> %1003, <2 x double> %1005)
  %1007 = load <2 x double>, ptr %972, align 8, !tbaa !13
  %1008 = fsub <2 x double> %1006, %1007
  store <2 x double> %1008, ptr %17, align 16, !tbaa !13
  %1009 = insertelement <2 x double> poison, double %999, i64 0
  %1010 = insertelement <2 x double> %1009, double %1000, i64 1
  %1011 = fmul <2 x double> %1008, %1010
  %1012 = shufflevector <2 x double> %1011, <2 x double> poison, <2 x i32> <i32 1, i32 0>
  %1013 = shufflevector <2 x double> %998, <2 x double> poison, <2 x i32> zeroinitializer
  %1014 = call <2 x double> @llvm.fmuladd.v2f64(<2 x double> %1013, <2 x double> %1008, <2 x double> %1012)
  store <2 x double> %1014, ptr %16, align 16, !tbaa !13
  store <2 x double> %1014, ptr %1002, align 8, !tbaa !13
  %1015 = add nsw i32 %959, 1
  store i32 %1015, ptr %18, align 4, !tbaa !5
  %1016 = load i32, ptr %11, align 4, !tbaa !5
  %.not887.not = icmp slt i32 %959, %1016
  br i1 %.not887.not, label %957, label %.loopexit.loopexit, !llvm.loop !18

1017:                                             ; preds = %629, %858, %844
  %1018 = phi i32 [ %855, %844 ], [ %.pre1004, %858 ], [ %.pre1003, %629 ]
  %.3.ph = phi i32 [ %.2, %844 ], [ %.2, %858 ], [ %.pre1003, %629 ]
  %1019 = sext i32 %1018 to i64
  %1020 = getelementptr inbounds i32, ptr %27, i64 %1019
  store i32 %.3.ph, ptr %1020, align 4, !tbaa !5
  br label %1063

.loopexit.loopexit:                               ; preds = %957
  %.pre1002 = load i32, ptr %1, align 4, !tbaa !5
  br label %.loopexit

.loopexit:                                        ; preds = %.loopexit.loopexit, %883, %878
  %1021 = phi i32 [ %.pre1002, %.loopexit.loopexit ], [ %950, %883 ], [ %880, %878 ]
  %1022 = phi i32 [ %968, %.loopexit.loopexit ], [ %951, %883 ], [ %879, %878 ]
  %1023 = mul i32 %1022, %33
  %1024 = mul i32 %1022, %32
  %1025 = sext i32 %1024 to i64
  %1026 = getelementptr inbounds %struct.doublecomplex, ptr %30, i64 %1025
  %1027 = sext i32 %1023 to i64
  %1028 = getelementptr inbounds %struct.doublecomplex, ptr %26, i64 %1027
  %1029 = load <2 x double>, ptr %1026, align 8, !tbaa !13
  store <2 x double> %1029, ptr %1028, align 8, !tbaa !13
  %1030 = add nsw i32 %1022, 1
  %1031 = mul nsw i32 %1022, %24
  %1032 = add nsw i32 %1030, %1031
  %1033 = mul nsw i32 %1022, %28
  %1034 = add nsw i32 %1030, %1033
  %1035 = sext i32 %1034 to i64
  %1036 = getelementptr inbounds %struct.doublecomplex, ptr %30, i64 %1035
  %1037 = sext i32 %1032 to i64
  %1038 = getelementptr inbounds %struct.doublecomplex, ptr %26, i64 %1037
  %1039 = load <2 x double>, ptr %1036, align 8, !tbaa !13
  store <2 x double> %1039, ptr %1038, align 8, !tbaa !13
  %1040 = mul i32 %1030, %33
  %1041 = mul i32 %1030, %32
  store i32 %1041, ptr %12, align 4, !tbaa !5
  %1042 = sext i32 %1041 to i64
  %1043 = getelementptr inbounds %struct.doublecomplex, ptr %30, i64 %1042
  %1044 = sext i32 %1040 to i64
  %1045 = getelementptr inbounds %struct.doublecomplex, ptr %26, i64 %1044
  %1046 = load <2 x double>, ptr %1043, align 8, !tbaa !13
  store <2 x double> %1046, ptr %1045, align 8, !tbaa !13
  %1047 = sub nsw i32 %1021, %1022
  store i32 %1047, ptr %11, align 4, !tbaa !5
  call void @zlacgv_(ptr noundef nonnull %11, ptr noundef nonnull %1036, ptr noundef nonnull @c__1) #5
  %1048 = load i32, ptr %1, align 4, !tbaa !5
  %1049 = load i32, ptr %19, align 4, !tbaa !5
  %1050 = xor i32 %1049, -1
  %1051 = add i32 %1048, %1050
  store i32 %1051, ptr %11, align 4, !tbaa !5
  %1052 = add nsw i32 %1049, 2
  %1053 = add nsw i32 %1049, 1
  %1054 = mul nsw i32 %1053, %28
  %1055 = add nsw i32 %1052, %1054
  %1056 = sext i32 %1055 to i64
  %1057 = getelementptr inbounds %struct.doublecomplex, ptr %30, i64 %1056
  call void @zlacgv_(ptr noundef nonnull %11, ptr noundef %1057, ptr noundef nonnull @c__1) #5
  %1058 = sub nsw i32 0, %.2
  %1059 = load i32, ptr %19, align 4, !tbaa !5
  %1060 = sext i32 %1059 to i64
  %1061 = getelementptr inbounds i32, ptr %27, i64 %1060
  store i32 %1058, ptr %1061, align 4, !tbaa !5
  %1062 = getelementptr i8, ptr %1061, i64 4
  store i32 %1058, ptr %1062, align 4, !tbaa !5
  br label %1063

1063:                                             ; preds = %.loopexit, %1017
  %1064 = phi i32 [ %1059, %.loopexit ], [ %1018, %1017 ]
  %.3839914 = phi i32 [ 2, %.loopexit ], [ 1, %1017 ]
  %1065 = add nsw i32 %1064, %.3839914
  store i32 %1065, ptr %19, align 4, !tbaa !5
  %1066 = load i32, ptr %2, align 4, !tbaa !5
  %.not884 = icmp sge i32 %1065, %1066
  %.pre996 = load i32, ptr %1, align 4, !tbaa !5
  %1067 = icmp slt i32 %1066, %.pre996
  %or.cond1021 = select i1 %.not884, i1 %1067, i1 false
  %1068 = icmp sgt i32 %1065, %.pre996
  %or.cond1022 = select i1 %or.cond1021, i1 true, i1 %1068
  br i1 %or.cond1022, label %._crit_edge1051, label %.lr.ph1050

._crit_edge1051:                                  ; preds = %1063, %.preheader
  %storemerge.lcssa = phi i32 [ 1, %.preheader ], [ %1065, %1063 ]
  %.lcssa1039 = phi i32 [ %37, %.preheader ], [ %1066, %1063 ]
  %.pre996.lcssa = phi i32 [ %.pre9961044, %.preheader ], [ %.pre996, %1063 ]
  store i32 %.pre996.lcssa, ptr %11, align 4, !tbaa !5
  store i32 %.lcssa1039, ptr %12, align 4, !tbaa !5
  %1069 = sext i32 %24 to i64
  %1070 = sext i32 %28 to i64
  %invariant.gep1033 = getelementptr %struct.doublecomplex, ptr %26, i64 %1069
  %invariant.gep1035 = getelementptr %struct.doublecomplex, ptr %30, i64 %1070
  br label %1071

1071:                                             ; preds = %1116, %._crit_edge1051
  %1072 = phi i32 [ %1117, %1116 ], [ %.lcssa1039, %._crit_edge1051 ]
  %1073 = phi i32 [ %1118, %1116 ], [ %storemerge.lcssa, %._crit_edge1051 ]
  %1074 = icmp slt i32 %1072, 0
  %1075 = load i32, ptr %11, align 4, !tbaa !5
  br i1 %1074, label %1076, label %1077

1076:                                             ; preds = %1071
  %.not918 = icmp slt i32 %1073, %1075
  br i1 %.not918, label %1119, label %1078

1077:                                             ; preds = %1071
  %.not917 = icmp sgt i32 %1073, %1075
  br i1 %.not917, label %1119, label %1078

1078:                                             ; preds = %1076, %1077
  %1079 = load i32, ptr %2, align 4, !tbaa !5
  %1080 = load i32, ptr %1, align 4, !tbaa !5
  %1081 = sub nsw i32 %1080, %1073
  %1082 = add nsw i32 %1081, 1
  store i32 %1082, ptr %14, align 4, !tbaa !5
  %1083 = call i32 @llvm.smin.i32(i32 %1079, i32 %1082)
  store i32 %1083, ptr %22, align 4, !tbaa !5
  %1084 = add i32 %1073, -1
  %1085 = add i32 %1084, %1083
  store i32 %1085, ptr %13, align 4, !tbaa !5
  %.not891972 = icmp sgt i32 %1073, %1085
  br i1 %.not891972, label %._crit_edge976, label %.lr.ph975.preheader

.lr.ph975.preheader:                              ; preds = %1078
  %1086 = sext i32 %1073 to i64
  br label %.lr.ph975

.lr.ph975:                                        ; preds = %.lr.ph975.preheader, %.lr.ph975
  %indvars.iv984 = phi i64 [ %1086, %.lr.ph975.preheader ], [ %indvars.iv.next985, %.lr.ph975 ]
  %1087 = trunc nsw i64 %indvars.iv984 to i32
  %1088 = mul i32 %33, %1087
  %1089 = sext i32 %1088 to i64
  %1090 = getelementptr inbounds %struct.doublecomplex, ptr %26, i64 %1089
  %1091 = getelementptr inbounds %struct.doublecomplex, ptr %26, i64 %1089, i32 1
  store double 0.000000e+00, ptr %1091, align 8, !tbaa !12
  %1092 = load i32, ptr %22, align 4, !tbaa !5
  %1093 = sub i32 %1073, %1087
  %1094 = add i32 %1093, %1092
  store i32 %1094, ptr %14, align 4, !tbaa !5
  %1095 = load i32, ptr %19, align 4, !tbaa !5
  %1096 = add nsw i32 %1095, -1
  store i32 %1096, ptr %15, align 4, !tbaa !5
  store <2 x double> <double -1.000000e+00, double 0.000000e+00>, ptr %16, align 16, !tbaa !13
  %gep1034 = getelementptr %struct.doublecomplex, ptr %invariant.gep1033, i64 %indvars.iv984
  %gep1036 = getelementptr %struct.doublecomplex, ptr %invariant.gep1035, i64 %indvars.iv984
  call void @zgemv_(ptr noundef nonnull @.str.1, ptr noundef nonnull %14, ptr noundef nonnull %15, ptr noundef nonnull %16, ptr noundef %gep1034, ptr noundef nonnull %5, ptr noundef %gep1036, ptr noundef nonnull %8, ptr noundef nonnull @c_b1, ptr noundef nonnull %1090, ptr noundef nonnull @c__1) #5
  store i32 %1088, ptr %14, align 4, !tbaa !5
  store i32 %1088, ptr %15, align 4, !tbaa !5
  store double 0.000000e+00, ptr %1091, align 8, !tbaa !12
  %indvars.iv.next985 = add nsw i64 %indvars.iv984, 1
  %1097 = load i32, ptr %13, align 4, !tbaa !5
  %1098 = sext i32 %1097 to i64
  %.not891.not = icmp slt i64 %indvars.iv984, %1098
  br i1 %.not891.not, label %.lr.ph975, label %._crit_edge976.loopexit, !llvm.loop !19

._crit_edge976.loopexit:                          ; preds = %.lr.ph975
  %.pre1005 = load i32, ptr %22, align 4, !tbaa !5
  %.pre1006 = load i32, ptr %1, align 4, !tbaa !5
  br label %._crit_edge976

._crit_edge976:                                   ; preds = %._crit_edge976.loopexit, %1078
  %1099 = phi i32 [ %.pre1006, %._crit_edge976.loopexit ], [ %1080, %1078 ]
  %1100 = phi i32 [ %.pre1005, %._crit_edge976.loopexit ], [ %1083, %1078 ]
  %1101 = add nsw i32 %1100, %1073
  %.not892 = icmp sgt i32 %1101, %1099
  br i1 %.not892, label %1116, label %1102

1102:                                             ; preds = %._crit_edge976
  %reass.sub978 = sub i32 %1099, %1101
  %1103 = add i32 %reass.sub978, 1
  store i32 %1103, ptr %13, align 4, !tbaa !5
  %1104 = load i32, ptr %19, align 4, !tbaa !5
  %1105 = add nsw i32 %1104, -1
  store i32 %1105, ptr %14, align 4, !tbaa !5
  store <2 x double> <double -1.000000e+00, double 0.000000e+00>, ptr %16, align 16, !tbaa !13
  %1106 = add nsw i32 %1101, %24
  %1107 = sext i32 %1106 to i64
  %1108 = getelementptr inbounds %struct.doublecomplex, ptr %26, i64 %1107
  %1109 = add nsw i32 %1073, %28
  %1110 = sext i32 %1109 to i64
  %1111 = getelementptr inbounds %struct.doublecomplex, ptr %30, i64 %1110
  %1112 = mul nsw i32 %1073, %24
  %1113 = add nsw i32 %1101, %1112
  %1114 = sext i32 %1113 to i64
  %1115 = getelementptr inbounds %struct.doublecomplex, ptr %26, i64 %1114
  call void @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 %1108, ptr noundef nonnull %5, ptr noundef %1111, ptr noundef nonnull %8, ptr noundef nonnull @c_b1, ptr noundef %1115, ptr noundef nonnull %5) #5
  br label %1116

1116:                                             ; preds = %._crit_edge976, %1102
  %1117 = load i32, ptr %12, align 4, !tbaa !5
  %1118 = add nsw i32 %1073, %1117
  br label %1071, !llvm.loop !20

1119:                                             ; preds = %1076, %1077
  %1120 = load i32, ptr %19, align 4, !tbaa !5
  %1121 = add nsw i32 %1120, -1
  br label %1122

1122:                                             ; preds = %1138, %1119
  %1123 = phi i32 [ %1139, %1138 ], [ %1121, %1119 ]
  %1124 = sext i32 %1123 to i64
  %1125 = getelementptr inbounds i32, ptr %27, i64 %1124
  %1126 = load i32, ptr %1125, align 4, !tbaa !5
  %.lobit1038 = ashr i32 %1126, 31
  %1127 = add nsw i32 %1123, %.lobit1038
  %.1833 = call i32 @llvm.abs.i32(i32 %1126, i1 true)
  %1128 = add nsw i32 %1127, -1
  store i32 %1128, ptr %18, align 4, !tbaa !5
  %1129 = icmp ne i32 %.1833, %1123
  %1130 = icmp sgt i32 %1127, 1
  %or.cond4 = select i1 %1129, i1 %1130, i1 false
  br i1 %or.cond4, label %1131, label %1138

1131:                                             ; preds = %1122
  %1132 = add nsw i32 %.1833, %24
  %1133 = sext i32 %1132 to i64
  %1134 = getelementptr inbounds %struct.doublecomplex, ptr %26, i64 %1133
  %1135 = add nsw i32 %1123, %24
  %1136 = sext i32 %1135 to i64
  %1137 = getelementptr inbounds %struct.doublecomplex, ptr %26, i64 %1136
  call void @zswap_(ptr noundef nonnull %18, ptr noundef %1134, ptr noundef nonnull %5, ptr noundef %1137, ptr noundef nonnull %5) #5
  %.pr = load i32, ptr %18, align 4, !tbaa !5
  br label %1138

1138:                                             ; preds = %1131, %1122
  %1139 = phi i32 [ %.pr, %1131 ], [ %1128, %1122 ]
  %1140 = icmp sgt i32 %1139, 1
  br i1 %1140, label %1122, label %1141

1141:                                             ; preds = %1138
  %1142 = load i32, ptr %19, align 4, !tbaa !5
  %1143 = add nsw i32 %1142, -1
  br label %1144

1144:                                             ; preds = %1141, %550
  %storemerge889 = phi i32 [ %1143, %1141 ], [ %552, %550 ]
  store i32 %storemerge889, ptr %3, align 4, !tbaa !5
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %23) #5
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %22) #5
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %21) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %20) #5
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %19) #5
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %18) #5
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %17) #5
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %16) #5
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %15) #5
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %14) #5
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %13) #5
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %12) #5
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %11) #5
  ret void
}

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

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

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

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

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

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

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

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

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

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

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

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

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

; Function Attrs: nocallback nofree nosync nounwind speculatable willreturn memory(none)
declare i32 @llvm.smin.i32(i32, i32) #4

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

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

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

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

!0 = !{i32 1, !"wchar_size", i32 4}
!1 = !{i32 8, !"PIC Level", i32 2}
!2 = !{i32 7, !"PIE Level", i32 2}
!3 = !{i32 7, !"uwtable", i32 2}
!4 = !{!"clang version 19.1.0 (git@github.com:llvm/llvm-project.git a4bf6cd7cfb1a1421ba92bca9d017b49936c55e4)"}
!5 = !{!6, !6, i64 0}
!6 = !{!"int", !7, i64 0}
!7 = !{!"omnipotent char", !8, i64 0}
!8 = !{!"Simple C/C++ TBAA"}
!9 = !{!10, !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,CorrelatedValuePropagationPass,DSEPass,EarlyCSEPass,GVNPass,GlobalDCEPass,GlobalOptPass,IPSCCPPass,IndVarSimplifyPass,InferAlignmentPass,InferFunctionAttrsPass,InstCombinePass,InstSimplifyPass,JumpThreadingPass,LCSSAPass,LICMPass,LoopRotatePass,LoopSimplifyPass,LoopUnrollPass,PostOrderFunctionAttrsPass,ReassociatePass,SLPVectorizerPass,SROAPass,SimplifyCFGPass,TailCallElimPass,VectorCombinePass