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

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

%struct.doublecomplex = type { double, double }

@.str = external hidden unnamed_addr constant [2 x i8], align 1
@.str.1 = external hidden unnamed_addr constant [2 x i8], align 1
@.str.2 = external hidden unnamed_addr constant [2 x i8], align 1
@.str.3 = external hidden unnamed_addr constant [2 x i8], align 1
@.str.4 = external hidden unnamed_addr constant [2 x i8], align 1
@.str.5 = external hidden unnamed_addr constant [7 x i8], align 1
@.str.6 = external hidden unnamed_addr constant [13 x i8], align 1
@.str.7 = external hidden unnamed_addr constant [10 x i8], align 1
@c__1 = external hidden global i64, align 8
@.str.8 = external hidden unnamed_addr constant [6 x i8], align 1
@.str.9 = external hidden unnamed_addr constant [13 x i8], align 1
@.str.10 = external hidden unnamed_addr constant [9 x i8], align 1
@.str.11 = external hidden unnamed_addr constant [2 x i8], align 1
@.str.12 = external hidden unnamed_addr constant [2 x i8], align 1
@c_b2 = external hidden global %struct.doublecomplex, align 8
@.str.13 = external hidden unnamed_addr constant [20 x i8], align 1

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

103:                                              ; preds = %15
  %104 = load i64, ptr %63, align 8, !tbaa !9
  %105 = icmp ne i64 %104, 0
  br label %106

106:                                              ; preds = %103, %15
  %107 = phi i1 [ true, %15 ], [ %105, %103 ]
  %108 = zext i1 %107 to i32
  %109 = sext i32 %108 to i64
  store i64 %109, ptr %65, align 8, !tbaa !9
  %110 = load ptr, ptr %17, align 8, !tbaa !5
  %111 = call i64 @lsame_(ptr noundef %110, ptr noundef @.str.2)
  %112 = icmp ne i64 %111, 0
  br i1 %112, label %116, label %113

113:                                              ; preds = %106
  %114 = load i64, ptr %63, align 8, !tbaa !9
  %115 = icmp ne i64 %114, 0
  br label %116

116:                                              ; preds = %113, %106
  %117 = phi i1 [ true, %106 ], [ %115, %113 ]
  %118 = zext i1 %117 to i32
  %119 = sext i32 %118 to i64
  store i64 %119, ptr %62, align 8, !tbaa !9
  %120 = load ptr, ptr %18, align 8, !tbaa !5
  %121 = call i64 @lsame_(ptr noundef %120, ptr noundef @.str.3)
  store i64 %121, ptr %55, align 8, !tbaa !9
  %122 = load ptr, ptr %18, align 8, !tbaa !5
  %123 = call i64 @lsame_(ptr noundef %122, ptr noundef @.str)
  store i64 %123, ptr %59, align 8, !tbaa !9
  %124 = load ptr, ptr %18, align 8, !tbaa !5
  %125 = call i64 @lsame_(ptr noundef %124, ptr noundef @.str.4)
  store i64 %125, ptr %64, align 8, !tbaa !9
  %126 = load i64, ptr %64, align 8, !tbaa !9
  %127 = icmp ne i64 %126, 0
  br i1 %127, label %128, label %151

128:                                              ; preds = %116
  %129 = load ptr, ptr %28, align 8, !tbaa !5
  store i64 0, ptr %129, align 8, !tbaa !9
  %130 = load ptr, ptr %20, align 8, !tbaa !5
  %131 = load i64, ptr %130, align 8, !tbaa !9
  store i64 %131, ptr %38, align 8, !tbaa !9
  store i64 1, ptr %49, align 8, !tbaa !9
  br label %132

132:                                              ; preds = %147, %128
  %133 = load i64, ptr %49, align 8, !tbaa !9
  %134 = load i64, ptr %38, align 8, !tbaa !9
  %135 = icmp sle i64 %133, %134
  br i1 %135, label %136, label %150

136:                                              ; preds = %132
  %137 = load ptr, ptr %19, align 8, !tbaa !5
  %138 = load i64, ptr %49, align 8, !tbaa !9
  %139 = getelementptr inbounds i64, ptr %137, i64 %138
  %140 = load i64, ptr %139, align 8, !tbaa !9
  %141 = icmp ne i64 %140, 0
  br i1 %141, label %142, label %146

142:                                              ; preds = %136
  %143 = load ptr, ptr %28, align 8, !tbaa !5
  %144 = load i64, ptr %143, align 8, !tbaa !9
  %145 = add nsw i64 %144, 1
  store i64 %145, ptr %143, align 8, !tbaa !9
  br label %146

146:                                              ; preds = %142, %136
  br label %147

147:                                              ; preds = %146
  %148 = load i64, ptr %49, align 8, !tbaa !9
  %149 = add nsw i64 %148, 1
  store i64 %149, ptr %49, align 8, !tbaa !9
  br label %132, !llvm.loop !11

150:                                              ; preds = %132
  br label %155

151:                                              ; preds = %116
  %152 = load ptr, ptr %20, align 8, !tbaa !5
  %153 = load i64, ptr %152, align 8, !tbaa !9
  %154 = load ptr, ptr %28, align 8, !tbaa !5
  store i64 %153, ptr %154, align 8, !tbaa !9
  br label %155

155:                                              ; preds = %151, %150
  %156 = load ptr, ptr %31, align 8, !tbaa !5
  store i64 0, ptr %156, align 8, !tbaa !9
  %157 = load i64, ptr %65, align 8, !tbaa !9
  %158 = icmp ne i64 %157, 0
  br i1 %158, label %164, label %159

159:                                              ; preds = %155
  %160 = load i64, ptr %62, align 8, !tbaa !9
  %161 = icmp ne i64 %160, 0
  br i1 %161, label %164, label %162

162:                                              ; preds = %159
  %163 = load ptr, ptr %31, align 8, !tbaa !5
  store i64 -1, ptr %163, align 8, !tbaa !9
  br label %240

164:                                              ; preds = %159, %155
  %165 = load i64, ptr %55, align 8, !tbaa !9
  %166 = icmp ne i64 %165, 0
  br i1 %166, label %175, label %167

167:                                              ; preds = %164
  %168 = load i64, ptr %59, align 8, !tbaa !9
  %169 = icmp ne i64 %168, 0
  br i1 %169, label %175, label %170

170:                                              ; preds = %167
  %171 = load i64, ptr %64, align 8, !tbaa !9
  %172 = icmp ne i64 %171, 0
  br i1 %172, label %175, label %173

173:                                              ; preds = %170
  %174 = load ptr, ptr %31, align 8, !tbaa !5
  store i64 -2, ptr %174, align 8, !tbaa !9
  br label %239

175:                                              ; preds = %170, %167, %164
  %176 = load ptr, ptr %20, align 8, !tbaa !5
  %177 = load i64, ptr %176, align 8, !tbaa !9
  %178 = icmp slt i64 %177, 0
  br i1 %178, label %179, label %181

179:                                              ; preds = %175
  %180 = load ptr, ptr %31, align 8, !tbaa !5
  store i64 -4, ptr %180, align 8, !tbaa !9
  br label %238

181:                                              ; preds = %175
  %182 = load ptr, ptr %22, align 8, !tbaa !5
  %183 = load i64, ptr %182, align 8, !tbaa !9
  %184 = load ptr, ptr %20, align 8, !tbaa !5
  %185 = load i64, ptr %184, align 8, !tbaa !9
  %186 = icmp sge i64 1, %185
  br i1 %186, label %187, label %188

187:                                              ; preds = %181
  br label %191

188:                                              ; preds = %181
  %189 = load ptr, ptr %20, align 8, !tbaa !5
  %190 = load i64, ptr %189, align 8, !tbaa !9
  br label %191

191:                                              ; preds = %188, %187
  %192 = phi i64 [ 1, %187 ], [ %190, %188 ]
  %193 = icmp slt i64 %183, %192
  br i1 %193, label %194, label %196

194:                                              ; preds = %191
  %195 = load ptr, ptr %31, align 8, !tbaa !5
  store i64 -6, ptr %195, align 8, !tbaa !9
  br label %237

196:                                              ; preds = %191
  %197 = load ptr, ptr %24, align 8, !tbaa !5
  %198 = load i64, ptr %197, align 8, !tbaa !9
  %199 = icmp slt i64 %198, 1
  br i1 %199, label %209, label %200

200:                                              ; preds = %196
  %201 = load i64, ptr %62, align 8, !tbaa !9
  %202 = icmp ne i64 %201, 0
  br i1 %202, label %203, label %211

203:                                              ; preds = %200
  %204 = load ptr, ptr %24, align 8, !tbaa !5
  %205 = load i64, ptr %204, align 8, !tbaa !9
  %206 = load ptr, ptr %20, align 8, !tbaa !5
  %207 = load i64, ptr %206, align 8, !tbaa !9
  %208 = icmp slt i64 %205, %207
  br i1 %208, label %209, label %211

209:                                              ; preds = %203, %196
  %210 = load ptr, ptr %31, align 8, !tbaa !5
  store i64 -8, ptr %210, align 8, !tbaa !9
  br label %236

211:                                              ; preds = %203, %200
  %212 = load ptr, ptr %26, align 8, !tbaa !5
  %213 = load i64, ptr %212, align 8, !tbaa !9
  %214 = icmp slt i64 %213, 1
  br i1 %214, label %224, label %215

215:                                              ; preds = %211
  %216 = load i64, ptr %65, align 8, !tbaa !9
  %217 = icmp ne i64 %216, 0
  br i1 %217, label %218, label %226

218:                                              ; preds = %215
  %219 = load ptr, ptr %26, align 8, !tbaa !5
  %220 = load i64, ptr %219, align 8, !tbaa !9
  %221 = load ptr, ptr %20, align 8, !tbaa !5
  %222 = load i64, ptr %221, align 8, !tbaa !9
  %223 = icmp slt i64 %220, %222
  br i1 %223, label %224, label %226

224:                                              ; preds = %218, %211
  %225 = load ptr, ptr %31, align 8, !tbaa !5
  store i64 -10, ptr %225, align 8, !tbaa !9
  br label %235

226:                                              ; preds = %218, %215
  %227 = load ptr, ptr %27, align 8, !tbaa !5
  %228 = load i64, ptr %227, align 8, !tbaa !9
  %229 = load ptr, ptr %28, align 8, !tbaa !5
  %230 = load i64, ptr %229, align 8, !tbaa !9
  %231 = icmp slt i64 %228, %230
  br i1 %231, label %232, label %234

232:                                              ; preds = %226
  %233 = load ptr, ptr %31, align 8, !tbaa !5
  store i64 -11, ptr %233, align 8, !tbaa !9
  br label %234

234:                                              ; preds = %232, %226
  br label %235

235:                                              ; preds = %234, %224
  br label %236

236:                                              ; preds = %235, %209
  br label %237

237:                                              ; preds = %236, %194
  br label %238

238:                                              ; preds = %237, %179
  br label %239

239:                                              ; preds = %238, %173
  br label %240

240:                                              ; preds = %239, %162
  %241 = load ptr, ptr %31, align 8, !tbaa !5
  %242 = load i64, ptr %241, align 8, !tbaa !9
  %243 = icmp ne i64 %242, 0
  br i1 %243, label %244, label %249

244:                                              ; preds = %240
  %245 = load ptr, ptr %31, align 8, !tbaa !5
  %246 = load i64, ptr %245, align 8, !tbaa !9
  %247 = sub nsw i64 0, %246
  store i64 %247, ptr %38, align 8, !tbaa !9
  %248 = call i32 @xerbla_(ptr noundef @.str.5, ptr noundef %38)
  store i32 0, ptr %16, align 4
  store i32 1, ptr %67, align 4
  br label %1331

249:                                              ; preds = %240
  %250 = load ptr, ptr %20, align 8, !tbaa !5
  %251 = load i64, ptr %250, align 8, !tbaa !9
  %252 = icmp eq i64 %251, 0
  br i1 %252, label %253, label %254

253:                                              ; preds = %249
  store i32 0, ptr %16, align 4
  store i32 1, ptr %67, align 4
  br label %1331

254:                                              ; preds = %249
  %255 = call double @dlamch_(ptr noundef @.str.6)
  store double %255, ptr %56, align 8, !tbaa !13
  %256 = load double, ptr %56, align 8, !tbaa !13
  %257 = fdiv double 1.000000e+00, %256
  store double %257, ptr %57, align 8, !tbaa !13
  %258 = call i32 @dlabad_(ptr noundef %56, ptr noundef %57)
  %259 = call double @dlamch_(ptr noundef @.str.7)
  store double %259, ptr %54, align 8, !tbaa !13
  %260 = load double, ptr %56, align 8, !tbaa !13
  %261 = load ptr, ptr %20, align 8, !tbaa !5
  %262 = load i64, ptr %261, align 8, !tbaa !9
  %263 = sitofp i64 %262 to double
  %264 = load double, ptr %54, align 8, !tbaa !13
  %265 = fdiv double %263, %264
  %266 = fmul double %260, %265
  store double %266, ptr %66, align 8, !tbaa !13
  %267 = load ptr, ptr %20, align 8, !tbaa !5
  %268 = load i64, ptr %267, align 8, !tbaa !9
  store i64 %268, ptr %38, align 8, !tbaa !9
  store i64 1, ptr %48, align 8, !tbaa !9
  br label %269

269:                                              ; preds = %301, %254
  %270 = load i64, ptr %48, align 8, !tbaa !9
  %271 = load i64, ptr %38, align 8, !tbaa !9
  %272 = icmp sle i64 %270, %271
  br i1 %272, label %273, label %304

273:                                              ; preds = %269
  %274 = load i64, ptr %48, align 8, !tbaa !9
  %275 = load ptr, ptr %20, align 8, !tbaa !5
  %276 = load i64, ptr %275, align 8, !tbaa !9
  %277 = add nsw i64 %274, %276
  store i64 %277, ptr %39, align 8, !tbaa !9
  %278 = load i64, ptr %48, align 8, !tbaa !9
  %279 = load i64, ptr %48, align 8, !tbaa !9
  %280 = load i64, ptr %32, align 8, !tbaa !9
  %281 = mul nsw i64 %279, %280
  %282 = add nsw i64 %278, %281
  store i64 %282, ptr %40, align 8, !tbaa !9
  %283 = load ptr, ptr %21, align 8, !tbaa !5
  %284 = load i64, ptr %40, align 8, !tbaa !9
  %285 = getelementptr inbounds %struct.doublecomplex, ptr %283, i64 %284
  %286 = getelementptr inbounds %struct.doublecomplex, ptr %285, i32 0, i32 0
  %287 = load double, ptr %286, align 8, !tbaa !15
  %288 = load ptr, ptr %29, align 8, !tbaa !5
  %289 = load i64, ptr %39, align 8, !tbaa !9
  %290 = getelementptr inbounds %struct.doublecomplex, ptr %288, i64 %289
  %291 = getelementptr inbounds %struct.doublecomplex, ptr %290, i32 0, i32 0
  store double %287, ptr %291, align 8, !tbaa !15
  %292 = load ptr, ptr %21, align 8, !tbaa !5
  %293 = load i64, ptr %40, align 8, !tbaa !9
  %294 = getelementptr inbounds %struct.doublecomplex, ptr %292, i64 %293
  %295 = getelementptr inbounds %struct.doublecomplex, ptr %294, i32 0, i32 1
  %296 = load double, ptr %295, align 8, !tbaa !17
  %297 = load ptr, ptr %29, align 8, !tbaa !5
  %298 = load i64, ptr %39, align 8, !tbaa !9
  %299 = getelementptr inbounds %struct.doublecomplex, ptr %297, i64 %298
  %300 = getelementptr inbounds %struct.doublecomplex, ptr %299, i32 0, i32 1
  store double %296, ptr %300, align 8, !tbaa !17
  br label %301

301:                                              ; preds = %273
  %302 = load i64, ptr %48, align 8, !tbaa !9
  %303 = add nsw i64 %302, 1
  store i64 %303, ptr %48, align 8, !tbaa !9
  br label %269, !llvm.loop !18

304:                                              ; preds = %269
  %305 = load ptr, ptr %30, align 8, !tbaa !5
  %306 = getelementptr inbounds double, ptr %305, i64 1
  store double 0.000000e+00, ptr %306, align 8, !tbaa !13
  %307 = load ptr, ptr %20, align 8, !tbaa !5
  %308 = load i64, ptr %307, align 8, !tbaa !9
  store i64 %308, ptr %38, align 8, !tbaa !9
  store i64 2, ptr %49, align 8, !tbaa !9
  br label %309

309:                                              ; preds = %326, %304
  %310 = load i64, ptr %49, align 8, !tbaa !9
  %311 = load i64, ptr %38, align 8, !tbaa !9
  %312 = icmp sle i64 %310, %311
  br i1 %312, label %313, label %329

313:                                              ; preds = %309
  %314 = load i64, ptr %49, align 8, !tbaa !9
  %315 = sub nsw i64 %314, 1
  store i64 %315, ptr %39, align 8, !tbaa !9
  %316 = load ptr, ptr %21, align 8, !tbaa !5
  %317 = load i64, ptr %49, align 8, !tbaa !9
  %318 = load i64, ptr %32, align 8, !tbaa !9
  %319 = mul nsw i64 %317, %318
  %320 = add nsw i64 %319, 1
  %321 = getelementptr inbounds %struct.doublecomplex, ptr %316, i64 %320
  %322 = call double @f2c_dzasum(ptr noundef %39, ptr noundef %321, ptr noundef @c__1)
  %323 = load ptr, ptr %30, align 8, !tbaa !5
  %324 = load i64, ptr %49, align 8, !tbaa !9
  %325 = getelementptr inbounds double, ptr %323, i64 %324
  store double %322, ptr %325, align 8, !tbaa !13
  br label %326

326:                                              ; preds = %313
  %327 = load i64, ptr %49, align 8, !tbaa !9
  %328 = add nsw i64 %327, 1
  store i64 %328, ptr %49, align 8, !tbaa !9
  br label %309, !llvm.loop !19

329:                                              ; preds = %309
  %330 = load i64, ptr %65, align 8, !tbaa !9
  %331 = icmp ne i64 %330, 0
  br i1 %331, label %332, label %806

332:                                              ; preds = %329
  %333 = load ptr, ptr %28, align 8, !tbaa !5
  %334 = load i64, ptr %333, align 8, !tbaa !9
  store i64 %334, ptr %53, align 8, !tbaa !9
  %335 = load ptr, ptr %20, align 8, !tbaa !5
  %336 = load i64, ptr %335, align 8, !tbaa !9
  store i64 %336, ptr %52, align 8, !tbaa !9
  br label %337

337:                                              ; preds = %802, %332
  %338 = load i64, ptr %52, align 8, !tbaa !9
  %339 = icmp sge i64 %338, 1
  br i1 %339, label %340, label %805

340:                                              ; preds = %337
  %341 = load i64, ptr %64, align 8, !tbaa !9
  %342 = icmp ne i64 %341, 0
  br i1 %342, label %343, label %351

343:                                              ; preds = %340
  %344 = load ptr, ptr %19, align 8, !tbaa !5
  %345 = load i64, ptr %52, align 8, !tbaa !9
  %346 = getelementptr inbounds i64, ptr %344, i64 %345
  %347 = load i64, ptr %346, align 8, !tbaa !9
  %348 = icmp ne i64 %347, 0
  br i1 %348, label %350, label %349

349:                                              ; preds = %343
  br label %801

350:                                              ; preds = %343
  br label %351

351:                                              ; preds = %350, %340
  %352 = load i64, ptr %52, align 8, !tbaa !9
  %353 = load i64, ptr %52, align 8, !tbaa !9
  %354 = load i64, ptr %32, align 8, !tbaa !9
  %355 = mul nsw i64 %353, %354
  %356 = add nsw i64 %352, %355
  store i64 %356, ptr %38, align 8, !tbaa !9
  %357 = load double, ptr %54, align 8, !tbaa !13
  %358 = load ptr, ptr %21, align 8, !tbaa !5
  %359 = load i64, ptr %38, align 8, !tbaa !9
  %360 = getelementptr inbounds %struct.doublecomplex, ptr %358, i64 %359
  %361 = getelementptr inbounds %struct.doublecomplex, ptr %360, i32 0, i32 0
  %362 = load double, ptr %361, align 8, !tbaa !15
  store double %362, ptr %43, align 8, !tbaa !13
  %363 = load double, ptr %43, align 8, !tbaa !13
  %364 = fcmp oge double %363, 0.000000e+00
  br i1 %364, label %365, label %367

365:                                              ; preds = %351
  %366 = load double, ptr %43, align 8, !tbaa !13
  br label %370

367:                                              ; preds = %351
  %368 = load double, ptr %43, align 8, !tbaa !13
  %369 = fneg double %368
  br label %370

370:                                              ; preds = %367, %365
  %371 = phi double [ %366, %365 ], [ %369, %367 ]
  %372 = load ptr, ptr %21, align 8, !tbaa !5
  %373 = load i64, ptr %52, align 8, !tbaa !9
  %374 = load i64, ptr %52, align 8, !tbaa !9
  %375 = load i64, ptr %32, align 8, !tbaa !9
  %376 = mul nsw i64 %374, %375
  %377 = add nsw i64 %373, %376
  %378 = getelementptr inbounds %struct.doublecomplex, ptr %372, i64 %377
  %379 = call double @d_imag(ptr noundef %378)
  store double %379, ptr %44, align 8, !tbaa !13
  %380 = load double, ptr %44, align 8, !tbaa !13
  %381 = fcmp oge double %380, 0.000000e+00
  br i1 %381, label %382, label %384

382:                                              ; preds = %370
  %383 = load double, ptr %44, align 8, !tbaa !13
  br label %387

384:                                              ; preds = %370
  %385 = load double, ptr %44, align 8, !tbaa !13
  %386 = fneg double %385
  br label %387

387:                                              ; preds = %384, %382
  %388 = phi double [ %383, %382 ], [ %386, %384 ]
  %389 = fadd double %371, %388
  %390 = fmul double %357, %389
  store double %390, ptr %45, align 8, !tbaa !13
  %391 = load double, ptr %45, align 8, !tbaa !13
  %392 = load double, ptr %66, align 8, !tbaa !13
  %393 = fcmp oge double %391, %392
  br i1 %393, label %394, label %396

394:                                              ; preds = %387
  %395 = load double, ptr %45, align 8, !tbaa !13
  br label %398

396:                                              ; preds = %387
  %397 = load double, ptr %66, align 8, !tbaa !13
  br label %398

398:                                              ; preds = %396, %394
  %399 = phi double [ %395, %394 ], [ %397, %396 ]
  store double %399, ptr %58, align 8, !tbaa !13
  %400 = load ptr, ptr %29, align 8, !tbaa !5
  %401 = getelementptr inbounds %struct.doublecomplex, ptr %400, i64 1
  %402 = getelementptr inbounds %struct.doublecomplex, ptr %401, i32 0, i32 0
  store double 1.000000e+00, ptr %402, align 8, !tbaa !15
  %403 = load ptr, ptr %29, align 8, !tbaa !5
  %404 = getelementptr inbounds %struct.doublecomplex, ptr %403, i64 1
  %405 = getelementptr inbounds %struct.doublecomplex, ptr %404, i32 0, i32 1
  store double 0.000000e+00, ptr %405, align 8, !tbaa !17
  %406 = load i64, ptr %52, align 8, !tbaa !9
  %407 = sub nsw i64 %406, 1
  store i64 %407, ptr %38, align 8, !tbaa !9
  store i64 1, ptr %50, align 8, !tbaa !9
  br label %408

408:                                              ; preds = %445, %398
  %409 = load i64, ptr %50, align 8, !tbaa !9
  %410 = load i64, ptr %38, align 8, !tbaa !9
  %411 = icmp sle i64 %409, %410
  br i1 %411, label %412, label %448

412:                                              ; preds = %408
  %413 = load i64, ptr %50, align 8, !tbaa !9
  store i64 %413, ptr %39, align 8, !tbaa !9
  %414 = load i64, ptr %50, align 8, !tbaa !9
  %415 = load i64, ptr %52, align 8, !tbaa !9
  %416 = load i64, ptr %32, align 8, !tbaa !9
  %417 = mul nsw i64 %415, %416
  %418 = add nsw i64 %414, %417
  store i64 %418, ptr %40, align 8, !tbaa !9
  %419 = load ptr, ptr %21, align 8, !tbaa !5
  %420 = load i64, ptr %40, align 8, !tbaa !9
  %421 = getelementptr inbounds %struct.doublecomplex, ptr %419, i64 %420
  %422 = getelementptr inbounds %struct.doublecomplex, ptr %421, i32 0, i32 0
  %423 = load double, ptr %422, align 8, !tbaa !15
  %424 = fneg double %423
  %425 = getelementptr inbounds %struct.doublecomplex, ptr %46, i32 0, i32 0
  store double %424, ptr %425, align 8, !tbaa !15
  %426 = load ptr, ptr %21, align 8, !tbaa !5
  %427 = load i64, ptr %40, align 8, !tbaa !9
  %428 = getelementptr inbounds %struct.doublecomplex, ptr %426, i64 %427
  %429 = getelementptr inbounds %struct.doublecomplex, ptr %428, i32 0, i32 1
  %430 = load double, ptr %429, align 8, !tbaa !17
  %431 = fneg double %430
  %432 = getelementptr inbounds %struct.doublecomplex, ptr %46, i32 0, i32 1
  store double %431, ptr %432, align 8, !tbaa !17
  %433 = getelementptr inbounds %struct.doublecomplex, ptr %46, i32 0, i32 0
  %434 = load double, ptr %433, align 8, !tbaa !15
  %435 = load ptr, ptr %29, align 8, !tbaa !5
  %436 = load i64, ptr %39, align 8, !tbaa !9
  %437 = getelementptr inbounds %struct.doublecomplex, ptr %435, i64 %436
  %438 = getelementptr inbounds %struct.doublecomplex, ptr %437, i32 0, i32 0
  store double %434, ptr %438, align 8, !tbaa !15
  %439 = getelementptr inbounds %struct.doublecomplex, ptr %46, i32 0, i32 1
  %440 = load double, ptr %439, align 8, !tbaa !17
  %441 = load ptr, ptr %29, align 8, !tbaa !5
  %442 = load i64, ptr %39, align 8, !tbaa !9
  %443 = getelementptr inbounds %struct.doublecomplex, ptr %441, i64 %442
  %444 = getelementptr inbounds %struct.doublecomplex, ptr %443, i32 0, i32 1
  store double %440, ptr %444, align 8, !tbaa !17
  br label %445

445:                                              ; preds = %412
  %446 = load i64, ptr %50, align 8, !tbaa !9
  %447 = add nsw i64 %446, 1
  store i64 %447, ptr %50, align 8, !tbaa !9
  br label %408, !llvm.loop !20

448:                                              ; preds = %408
  %449 = load i64, ptr %52, align 8, !tbaa !9
  %450 = sub nsw i64 %449, 1
  store i64 %450, ptr %38, align 8, !tbaa !9
  store i64 1, ptr %50, align 8, !tbaa !9
  br label %451

451:                                              ; preds = %562, %448
  %452 = load i64, ptr %50, align 8, !tbaa !9
  %453 = load i64, ptr %38, align 8, !tbaa !9
  %454 = icmp sle i64 %452, %453
  br i1 %454, label %455, label %565

455:                                              ; preds = %451
  %456 = load i64, ptr %50, align 8, !tbaa !9
  %457 = load i64, ptr %50, align 8, !tbaa !9
  %458 = load i64, ptr %32, align 8, !tbaa !9
  %459 = mul nsw i64 %457, %458
  %460 = add nsw i64 %456, %459
  store i64 %460, ptr %39, align 8, !tbaa !9
  %461 = load i64, ptr %50, align 8, !tbaa !9
  %462 = load i64, ptr %50, align 8, !tbaa !9
  %463 = load i64, ptr %32, align 8, !tbaa !9
  %464 = mul nsw i64 %462, %463
  %465 = add nsw i64 %461, %464
  store i64 %465, ptr %40, align 8, !tbaa !9
  %466 = load i64, ptr %52, align 8, !tbaa !9
  %467 = load i64, ptr %52, align 8, !tbaa !9
  %468 = load i64, ptr %32, align 8, !tbaa !9
  %469 = mul nsw i64 %467, %468
  %470 = add nsw i64 %466, %469
  store i64 %470, ptr %41, align 8, !tbaa !9
  %471 = load ptr, ptr %21, align 8, !tbaa !5
  %472 = load i64, ptr %40, align 8, !tbaa !9
  %473 = getelementptr inbounds %struct.doublecomplex, ptr %471, i64 %472
  %474 = getelementptr inbounds %struct.doublecomplex, ptr %473, i32 0, i32 0
  %475 = load double, ptr %474, align 8, !tbaa !15
  %476 = load ptr, ptr %21, align 8, !tbaa !5
  %477 = load i64, ptr %41, align 8, !tbaa !9
  %478 = getelementptr inbounds %struct.doublecomplex, ptr %476, i64 %477
  %479 = getelementptr inbounds %struct.doublecomplex, ptr %478, i32 0, i32 0
  %480 = load double, ptr %479, align 8, !tbaa !15
  %481 = fsub double %475, %480
  %482 = getelementptr inbounds %struct.doublecomplex, ptr %46, i32 0, i32 0
  store double %481, ptr %482, align 8, !tbaa !15
  %483 = load ptr, ptr %21, align 8, !tbaa !5
  %484 = load i64, ptr %40, align 8, !tbaa !9
  %485 = getelementptr inbounds %struct.doublecomplex, ptr %483, i64 %484
  %486 = getelementptr inbounds %struct.doublecomplex, ptr %485, i32 0, i32 1
  %487 = load double, ptr %486, align 8, !tbaa !17
  %488 = load ptr, ptr %21, align 8, !tbaa !5
  %489 = load i64, ptr %41, align 8, !tbaa !9
  %490 = getelementptr inbounds %struct.doublecomplex, ptr %488, i64 %489
  %491 = getelementptr inbounds %struct.doublecomplex, ptr %490, i32 0, i32 1
  %492 = load double, ptr %491, align 8, !tbaa !17
  %493 = fsub double %487, %492
  %494 = getelementptr inbounds %struct.doublecomplex, ptr %46, i32 0, i32 1
  store double %493, ptr %494, align 8, !tbaa !17
  %495 = getelementptr inbounds %struct.doublecomplex, ptr %46, i32 0, i32 0
  %496 = load double, ptr %495, align 8, !tbaa !15
  %497 = load ptr, ptr %21, align 8, !tbaa !5
  %498 = load i64, ptr %39, align 8, !tbaa !9
  %499 = getelementptr inbounds %struct.doublecomplex, ptr %497, i64 %498
  %500 = getelementptr inbounds %struct.doublecomplex, ptr %499, i32 0, i32 0
  store double %496, ptr %500, align 8, !tbaa !15
  %501 = getelementptr inbounds %struct.doublecomplex, ptr %46, i32 0, i32 1
  %502 = load double, ptr %501, align 8, !tbaa !17
  %503 = load ptr, ptr %21, align 8, !tbaa !5
  %504 = load i64, ptr %39, align 8, !tbaa !9
  %505 = getelementptr inbounds %struct.doublecomplex, ptr %503, i64 %504
  %506 = getelementptr inbounds %struct.doublecomplex, ptr %505, i32 0, i32 1
  store double %502, ptr %506, align 8, !tbaa !17
  %507 = load i64, ptr %50, align 8, !tbaa !9
  %508 = load i64, ptr %50, align 8, !tbaa !9
  %509 = load i64, ptr %32, align 8, !tbaa !9
  %510 = mul nsw i64 %508, %509
  %511 = add nsw i64 %507, %510
  store i64 %511, ptr %39, align 8, !tbaa !9
  %512 = load ptr, ptr %21, align 8, !tbaa !5
  %513 = load i64, ptr %39, align 8, !tbaa !9
  %514 = getelementptr inbounds %struct.doublecomplex, ptr %512, i64 %513
  %515 = getelementptr inbounds %struct.doublecomplex, ptr %514, i32 0, i32 0
  %516 = load double, ptr %515, align 8, !tbaa !15
  store double %516, ptr %43, align 8, !tbaa !13
  %517 = load double, ptr %43, align 8, !tbaa !13
  %518 = fcmp oge double %517, 0.000000e+00
  br i1 %518, label %519, label %521

519:                                              ; preds = %455
  %520 = load double, ptr %43, align 8, !tbaa !13
  br label %524

521:                                              ; preds = %455
  %522 = load double, ptr %43, align 8, !tbaa !13
  %523 = fneg double %522
  br label %524

524:                                              ; preds = %521, %519
  %525 = phi double [ %520, %519 ], [ %523, %521 ]
  %526 = load ptr, ptr %21, align 8, !tbaa !5
  %527 = load i64, ptr %50, align 8, !tbaa !9
  %528 = load i64, ptr %50, align 8, !tbaa !9
  %529 = load i64, ptr %32, align 8, !tbaa !9
  %530 = mul nsw i64 %528, %529
  %531 = add nsw i64 %527, %530
  %532 = getelementptr inbounds %struct.doublecomplex, ptr %526, i64 %531
  %533 = call double @d_imag(ptr noundef %532)
  store double %533, ptr %44, align 8, !tbaa !13
  %534 = load double, ptr %44, align 8, !tbaa !13
  %535 = fcmp oge double %534, 0.000000e+00
  br i1 %535, label %536, label %538

536:                                              ; preds = %524
  %537 = load double, ptr %44, align 8, !tbaa !13
  br label %541

538:                                              ; preds = %524
  %539 = load double, ptr %44, align 8, !tbaa !13
  %540 = fneg double %539
  br label %541

541:                                              ; preds = %538, %536
  %542 = phi double [ %537, %536 ], [ %540, %538 ]
  %543 = fadd double %525, %542
  %544 = load double, ptr %58, align 8, !tbaa !13
  %545 = fcmp olt double %543, %544
  br i1 %545, label %546, label %561

546:                                              ; preds = %541
  %547 = load i64, ptr %50, align 8, !tbaa !9
  %548 = load i64, ptr %50, align 8, !tbaa !9
  %549 = load i64, ptr %32, align 8, !tbaa !9
  %550 = mul nsw i64 %548, %549
  %551 = add nsw i64 %547, %550
  store i64 %551, ptr %40, align 8, !tbaa !9
  %552 = load double, ptr %58, align 8, !tbaa !13
  %553 = load ptr, ptr %21, align 8, !tbaa !5
  %554 = load i64, ptr %40, align 8, !tbaa !9
  %555 = getelementptr inbounds %struct.doublecomplex, ptr %553, i64 %554
  %556 = getelementptr inbounds %struct.doublecomplex, ptr %555, i32 0, i32 0
  store double %552, ptr %556, align 8, !tbaa !15
  %557 = load ptr, ptr %21, align 8, !tbaa !5
  %558 = load i64, ptr %40, align 8, !tbaa !9
  %559 = getelementptr inbounds %struct.doublecomplex, ptr %557, i64 %558
  %560 = getelementptr inbounds %struct.doublecomplex, ptr %559, i32 0, i32 1
  store double 0.000000e+00, ptr %560, align 8, !tbaa !17
  br label %561

561:                                              ; preds = %546, %541
  br label %562

562:                                              ; preds = %561
  %563 = load i64, ptr %50, align 8, !tbaa !9
  %564 = add nsw i64 %563, 1
  store i64 %564, ptr %50, align 8, !tbaa !9
  br label %451, !llvm.loop !21

565:                                              ; preds = %451
  %566 = load i64, ptr %52, align 8, !tbaa !9
  %567 = icmp sgt i64 %566, 1
  br i1 %567, label %568, label %591

568:                                              ; preds = %565
  %569 = load i64, ptr %52, align 8, !tbaa !9
  %570 = sub nsw i64 %569, 1
  store i64 %570, ptr %38, align 8, !tbaa !9
  %571 = load ptr, ptr %21, align 8, !tbaa !5
  %572 = load i64, ptr %33, align 8, !tbaa !9
  %573 = getelementptr inbounds %struct.doublecomplex, ptr %571, i64 %572
  %574 = load ptr, ptr %22, align 8, !tbaa !5
  %575 = load ptr, ptr %29, align 8, !tbaa !5
  %576 = getelementptr inbounds %struct.doublecomplex, ptr %575, i64 1
  %577 = load ptr, ptr %30, align 8, !tbaa !5
  %578 = getelementptr inbounds double, ptr %577, i64 1
  %579 = load ptr, ptr %31, align 8, !tbaa !5
  %580 = call i32 @zlatrs_(ptr noundef @.str.8, ptr noundef @.str.9, ptr noundef @.str.10, ptr noundef @.str.11, ptr noundef %38, ptr noundef %573, ptr noundef %574, ptr noundef %576, ptr noundef %60, ptr noundef %578, ptr noundef %579)
  %581 = load i64, ptr %52, align 8, !tbaa !9
  store i64 %581, ptr %38, align 8, !tbaa !9
  %582 = load double, ptr %60, align 8, !tbaa !13
  %583 = load ptr, ptr %29, align 8, !tbaa !5
  %584 = load i64, ptr %38, align 8, !tbaa !9
  %585 = getelementptr inbounds %struct.doublecomplex, ptr %583, i64 %584
  %586 = getelementptr inbounds %struct.doublecomplex, ptr %585, i32 0, i32 0
  store double %582, ptr %586, align 8, !tbaa !15
  %587 = load ptr, ptr %29, align 8, !tbaa !5
  %588 = load i64, ptr %38, align 8, !tbaa !9
  %589 = getelementptr inbounds %struct.doublecomplex, ptr %587, i64 %588
  %590 = getelementptr inbounds %struct.doublecomplex, ptr %589, i32 0, i32 1
  store double 0.000000e+00, ptr %590, align 8, !tbaa !17
  br label %591

591:                                              ; preds = %568, %565
  %592 = load i64, ptr %59, align 8, !tbaa !9
  %593 = icmp ne i64 %592, 0
  br i1 %593, label %682, label %594

594:                                              ; preds = %591
  %595 = load ptr, ptr %29, align 8, !tbaa !5
  %596 = getelementptr inbounds %struct.doublecomplex, ptr %595, i64 1
  %597 = load ptr, ptr %25, align 8, !tbaa !5
  %598 = load i64, ptr %53, align 8, !tbaa !9
  %599 = load i64, ptr %36, align 8, !tbaa !9
  %600 = mul nsw i64 %598, %599
  %601 = add nsw i64 %600, 1
  %602 = getelementptr inbounds %struct.doublecomplex, ptr %597, i64 %601
  %603 = call i32 @f2c_zcopy(ptr noundef %52, ptr noundef %596, ptr noundef @c__1, ptr noundef %602, ptr noundef @c__1)
  %604 = load ptr, ptr %25, align 8, !tbaa !5
  %605 = load i64, ptr %53, align 8, !tbaa !9
  %606 = load i64, ptr %36, align 8, !tbaa !9
  %607 = mul nsw i64 %605, %606
  %608 = add nsw i64 %607, 1
  %609 = getelementptr inbounds %struct.doublecomplex, ptr %604, i64 %608
  %610 = call i64 @f2c_izamax(ptr noundef %52, ptr noundef %609, ptr noundef @c__1)
  store i64 %610, ptr %51, align 8, !tbaa !9
  %611 = load i64, ptr %51, align 8, !tbaa !9
  %612 = load i64, ptr %53, align 8, !tbaa !9
  %613 = load i64, ptr %36, align 8, !tbaa !9
  %614 = mul nsw i64 %612, %613
  %615 = add nsw i64 %611, %614
  store i64 %615, ptr %38, align 8, !tbaa !9
  %616 = load ptr, ptr %25, align 8, !tbaa !5
  %617 = load i64, ptr %38, align 8, !tbaa !9
  %618 = getelementptr inbounds %struct.doublecomplex, ptr %616, i64 %617
  %619 = getelementptr inbounds %struct.doublecomplex, ptr %618, i32 0, i32 0
  %620 = load double, ptr %619, align 8, !tbaa !15
  store double %620, ptr %43, align 8, !tbaa !13
  %621 = load double, ptr %43, align 8, !tbaa !13
  %622 = fcmp oge double %621, 0.000000e+00
  br i1 %622, label %623, label %625

623:                                              ; preds = %594
  %624 = load double, ptr %43, align 8, !tbaa !13
  br label %628

625:                                              ; preds = %594
  %626 = load double, ptr %43, align 8, !tbaa !13
  %627 = fneg double %626
  br label %628

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

640:                                              ; preds = %628
  %641 = load double, ptr %44, align 8, !tbaa !13
  br label %645

642:                                              ; preds = %628
  %643 = load double, ptr %44, align 8, !tbaa !13
  %644 = fneg double %643
  br label %645

645:                                              ; preds = %642, %640
  %646 = phi double [ %641, %640 ], [ %644, %642 ]
  %647 = fadd double %629, %646
  %648 = fdiv double 1.000000e+00, %647
  store double %648, ptr %61, align 8, !tbaa !13
  %649 = load ptr, ptr %25, align 8, !tbaa !5
  %650 = load i64, ptr %53, align 8, !tbaa !9
  %651 = load i64, ptr %36, align 8, !tbaa !9
  %652 = mul nsw i64 %650, %651
  %653 = add nsw i64 %652, 1
  %654 = getelementptr inbounds %struct.doublecomplex, ptr %649, i64 %653
  %655 = call i32 @f2c_zdscal(ptr noundef %52, ptr noundef %61, ptr noundef %654, ptr noundef @c__1)
  %656 = load ptr, ptr %20, align 8, !tbaa !5
  %657 = load i64, ptr %656, align 8, !tbaa !9
  store i64 %657, ptr %38, align 8, !tbaa !9
  %658 = load i64, ptr %52, align 8, !tbaa !9
  %659 = add nsw i64 %658, 1
  store i64 %659, ptr %50, align 8, !tbaa !9
  br label %660

660:                                              ; preds = %678, %645
  %661 = load i64, ptr %50, align 8, !tbaa !9
  %662 = load i64, ptr %38, align 8, !tbaa !9
  %663 = icmp sle i64 %661, %662
  br i1 %663, label %664, label %681

664:                                              ; preds = %660
  %665 = load i64, ptr %50, align 8, !tbaa !9
  %666 = load i64, ptr %53, align 8, !tbaa !9
  %667 = load i64, ptr %36, align 8, !tbaa !9
  %668 = mul nsw i64 %666, %667
  %669 = add nsw i64 %665, %668
  store i64 %669, ptr %39, align 8, !tbaa !9
  %670 = load ptr, ptr %25, align 8, !tbaa !5
  %671 = load i64, ptr %39, align 8, !tbaa !9
  %672 = getelementptr inbounds %struct.doublecomplex, ptr %670, i64 %671
  %673 = getelementptr inbounds %struct.doublecomplex, ptr %672, i32 0, i32 0
  store double 0.000000e+00, ptr %673, align 8, !tbaa !15
  %674 = load ptr, ptr %25, align 8, !tbaa !5
  %675 = load i64, ptr %39, align 8, !tbaa !9
  %676 = getelementptr inbounds %struct.doublecomplex, ptr %674, i64 %675
  %677 = getelementptr inbounds %struct.doublecomplex, ptr %676, i32 0, i32 1
  store double 0.000000e+00, ptr %677, align 8, !tbaa !17
  br label %678

678:                                              ; preds = %664
  %679 = load i64, ptr %50, align 8, !tbaa !9
  %680 = add nsw i64 %679, 1
  store i64 %680, ptr %50, align 8, !tbaa !9
  br label %660, !llvm.loop !22

681:                                              ; preds = %660
  br label %760

682:                                              ; preds = %591
  %683 = load i64, ptr %52, align 8, !tbaa !9
  %684 = icmp sgt i64 %683, 1
  br i1 %684, label %685, label %705

685:                                              ; preds = %682
  %686 = load i64, ptr %52, align 8, !tbaa !9
  %687 = sub nsw i64 %686, 1
  store i64 %687, ptr %38, align 8, !tbaa !9
  %688 = load double, ptr %60, align 8, !tbaa !13
  %689 = getelementptr inbounds %struct.doublecomplex, ptr %46, i32 0, i32 0
  store double %688, ptr %689, align 8, !tbaa !15
  %690 = getelementptr inbounds %struct.doublecomplex, ptr %46, i32 0, i32 1
  store double 0.000000e+00, ptr %690, align 8, !tbaa !17
  %691 = load ptr, ptr %20, align 8, !tbaa !5
  %692 = load ptr, ptr %25, align 8, !tbaa !5
  %693 = load i64, ptr %37, align 8, !tbaa !9
  %694 = getelementptr inbounds %struct.doublecomplex, ptr %692, i64 %693
  %695 = load ptr, ptr %26, align 8, !tbaa !5
  %696 = load ptr, ptr %29, align 8, !tbaa !5
  %697 = getelementptr inbounds %struct.doublecomplex, ptr %696, i64 1
  %698 = load ptr, ptr %25, align 8, !tbaa !5
  %699 = load i64, ptr %52, align 8, !tbaa !9
  %700 = load i64, ptr %36, align 8, !tbaa !9
  %701 = mul nsw i64 %699, %700
  %702 = add nsw i64 %701, 1
  %703 = getelementptr inbounds %struct.doublecomplex, ptr %698, i64 %702
  %704 = call i32 @f2c_zgemv(ptr noundef @.str.12, ptr noundef %691, ptr noundef %38, ptr noundef @c_b2, ptr noundef %694, ptr noundef %695, ptr noundef %697, ptr noundef @c__1, ptr noundef %46, ptr noundef %703, ptr noundef @c__1)
  br label %705

705:                                              ; preds = %685, %682
  %706 = load ptr, ptr %20, align 8, !tbaa !5
  %707 = load ptr, ptr %25, align 8, !tbaa !5
  %708 = load i64, ptr %52, align 8, !tbaa !9
  %709 = load i64, ptr %36, align 8, !tbaa !9
  %710 = mul nsw i64 %708, %709
  %711 = add nsw i64 %710, 1
  %712 = getelementptr inbounds %struct.doublecomplex, ptr %707, i64 %711
  %713 = call i64 @f2c_izamax(ptr noundef %706, ptr noundef %712, ptr noundef @c__1)
  store i64 %713, ptr %51, align 8, !tbaa !9
  %714 = load i64, ptr %51, align 8, !tbaa !9
  %715 = load i64, ptr %52, align 8, !tbaa !9
  %716 = load i64, ptr %36, align 8, !tbaa !9
  %717 = mul nsw i64 %715, %716
  %718 = add nsw i64 %714, %717
  store i64 %718, ptr %38, align 8, !tbaa !9
  %719 = load ptr, ptr %25, align 8, !tbaa !5
  %720 = load i64, ptr %38, align 8, !tbaa !9
  %721 = getelementptr inbounds %struct.doublecomplex, ptr %719, i64 %720
  %722 = getelementptr inbounds %struct.doublecomplex, ptr %721, i32 0, i32 0
  %723 = load double, ptr %722, align 8, !tbaa !15
  store double %723, ptr %43, align 8, !tbaa !13
  %724 = load double, ptr %43, align 8, !tbaa !13
  %725 = fcmp oge double %724, 0.000000e+00
  br i1 %725, label %726, label %728

726:                                              ; preds = %705
  %727 = load double, ptr %43, align 8, !tbaa !13
  br label %731

728:                                              ; preds = %705
  %729 = load double, ptr %43, align 8, !tbaa !13
  %730 = fneg double %729
  br label %731

731:                                              ; preds = %728, %726
  %732 = phi double [ %727, %726 ], [ %730, %728 ]
  %733 = load ptr, ptr %25, align 8, !tbaa !5
  %734 = load i64, ptr %51, align 8, !tbaa !9
  %735 = load i64, ptr %52, align 8, !tbaa !9
  %736 = load i64, ptr %36, align 8, !tbaa !9
  %737 = mul nsw i64 %735, %736
  %738 = add nsw i64 %734, %737
  %739 = getelementptr inbounds %struct.doublecomplex, ptr %733, i64 %738
  %740 = call double @d_imag(ptr noundef %739)
  store double %740, ptr %44, align 8, !tbaa !13
  %741 = load double, ptr %44, align 8, !tbaa !13
  %742 = fcmp oge double %741, 0.000000e+00
  br i1 %742, label %743, label %745

743:                                              ; preds = %731
  %744 = load double, ptr %44, align 8, !tbaa !13
  br label %748

745:                                              ; preds = %731
  %746 = load double, ptr %44, align 8, !tbaa !13
  %747 = fneg double %746
  br label %748

748:                                              ; preds = %745, %743
  %749 = phi double [ %744, %743 ], [ %747, %745 ]
  %750 = fadd double %732, %749
  %751 = fdiv double 1.000000e+00, %750
  store double %751, ptr %61, align 8, !tbaa !13
  %752 = load ptr, ptr %20, align 8, !tbaa !5
  %753 = load ptr, ptr %25, align 8, !tbaa !5
  %754 = load i64, ptr %52, align 8, !tbaa !9
  %755 = load i64, ptr %36, align 8, !tbaa !9
  %756 = mul nsw i64 %754, %755
  %757 = add nsw i64 %756, 1
  %758 = getelementptr inbounds %struct.doublecomplex, ptr %753, i64 %757
  %759 = call i32 @f2c_zdscal(ptr noundef %752, ptr noundef %61, ptr noundef %758, ptr noundef @c__1)
  br label %760

760:                                              ; preds = %748, %681
  %761 = load i64, ptr %52, align 8, !tbaa !9
  %762 = sub nsw i64 %761, 1
  store i64 %762, ptr %38, align 8, !tbaa !9
  store i64 1, ptr %50, align 8, !tbaa !9
  br label %763

763:                                              ; preds = %795, %760
  %764 = load i64, ptr %50, align 8, !tbaa !9
  %765 = load i64, ptr %38, align 8, !tbaa !9
  %766 = icmp sle i64 %764, %765
  br i1 %766, label %767, label %798

767:                                              ; preds = %763
  %768 = load i64, ptr %50, align 8, !tbaa !9
  %769 = load i64, ptr %50, align 8, !tbaa !9
  %770 = load i64, ptr %32, align 8, !tbaa !9
  %771 = mul nsw i64 %769, %770
  %772 = add nsw i64 %768, %771
  store i64 %772, ptr %39, align 8, !tbaa !9
  %773 = load i64, ptr %50, align 8, !tbaa !9
  %774 = load ptr, ptr %20, align 8, !tbaa !5
  %775 = load i64, ptr %774, align 8, !tbaa !9
  %776 = add nsw i64 %773, %775
  store i64 %776, ptr %40, align 8, !tbaa !9
  %777 = load ptr, ptr %29, align 8, !tbaa !5
  %778 = load i64, ptr %40, align 8, !tbaa !9
  %779 = getelementptr inbounds %struct.doublecomplex, ptr %777, i64 %778
  %780 = getelementptr inbounds %struct.doublecomplex, ptr %779, i32 0, i32 0
  %781 = load double, ptr %780, align 8, !tbaa !15
  %782 = load ptr, ptr %21, align 8, !tbaa !5
  %783 = load i64, ptr %39, align 8, !tbaa !9
  %784 = getelementptr inbounds %struct.doublecomplex, ptr %782, i64 %783
  %785 = getelementptr inbounds %struct.doublecomplex, ptr %784, i32 0, i32 0
  store double %781, ptr %785, align 8, !tbaa !15
  %786 = load ptr, ptr %29, align 8, !tbaa !5
  %787 = load i64, ptr %40, align 8, !tbaa !9
  %788 = getelementptr inbounds %struct.doublecomplex, ptr %786, i64 %787
  %789 = getelementptr inbounds %struct.doublecomplex, ptr %788, i32 0, i32 1
  %790 = load double, ptr %789, align 8, !tbaa !17
  %791 = load ptr, ptr %21, align 8, !tbaa !5
  %792 = load i64, ptr %39, align 8, !tbaa !9
  %793 = getelementptr inbounds %struct.doublecomplex, ptr %791, i64 %792
  %794 = getelementptr inbounds %struct.doublecomplex, ptr %793, i32 0, i32 1
  store double %790, ptr %794, align 8, !tbaa !17
  br label %795

795:                                              ; preds = %767
  %796 = load i64, ptr %50, align 8, !tbaa !9
  %797 = add nsw i64 %796, 1
  store i64 %797, ptr %50, align 8, !tbaa !9
  br label %763, !llvm.loop !23

798:                                              ; preds = %763
  %799 = load i64, ptr %53, align 8, !tbaa !9
  %800 = add nsw i64 %799, -1
  store i64 %800, ptr %53, align 8, !tbaa !9
  br label %801

801:                                              ; preds = %798, %349
  br label %802

802:                                              ; preds = %801
  %803 = load i64, ptr %52, align 8, !tbaa !9
  %804 = add nsw i64 %803, -1
  store i64 %804, ptr %52, align 8, !tbaa !9
  br label %337, !llvm.loop !24

805:                                              ; preds = %337
  br label %806

806:                                              ; preds = %805, %329
  %807 = load i64, ptr %62, align 8, !tbaa !9
  %808 = icmp ne i64 %807, 0
  br i1 %808, label %809, label %1330

809:                                              ; preds = %806
  store i64 1, ptr %53, align 8, !tbaa !9
  %810 = load ptr, ptr %20, align 8, !tbaa !5
  %811 = load i64, ptr %810, align 8, !tbaa !9
  store i64 %811, ptr %38, align 8, !tbaa !9
  store i64 1, ptr %52, align 8, !tbaa !9
  br label %812

812:                                              ; preds = %1326, %809
  %813 = load i64, ptr %52, align 8, !tbaa !9
  %814 = load i64, ptr %38, align 8, !tbaa !9
  %815 = icmp sle i64 %813, %814
  br i1 %815, label %816, label %1329

816:                                              ; preds = %812
  %817 = load i64, ptr %64, align 8, !tbaa !9
  %818 = icmp ne i64 %817, 0
  br i1 %818, label %819, label %827

819:                                              ; preds = %816
  %820 = load ptr, ptr %19, align 8, !tbaa !5
  %821 = load i64, ptr %52, align 8, !tbaa !9
  %822 = getelementptr inbounds i64, ptr %820, i64 %821
  %823 = load i64, ptr %822, align 8, !tbaa !9
  %824 = icmp ne i64 %823, 0
  br i1 %824, label %826, label %825

825:                                              ; preds = %819
  br label %1325

826:                                              ; preds = %819
  br label %827

827:                                              ; preds = %826, %816
  %828 = load i64, ptr %52, align 8, !tbaa !9
  %829 = load i64, ptr %52, align 8, !tbaa !9
  %830 = load i64, ptr %32, align 8, !tbaa !9
  %831 = mul nsw i64 %829, %830
  %832 = add nsw i64 %828, %831
  store i64 %832, ptr %39, align 8, !tbaa !9
  %833 = load double, ptr %54, align 8, !tbaa !13
  %834 = load ptr, ptr %21, align 8, !tbaa !5
  %835 = load i64, ptr %39, align 8, !tbaa !9
  %836 = getelementptr inbounds %struct.doublecomplex, ptr %834, i64 %835
  %837 = getelementptr inbounds %struct.doublecomplex, ptr %836, i32 0, i32 0
  %838 = load double, ptr %837, align 8, !tbaa !15
  store double %838, ptr %43, align 8, !tbaa !13
  %839 = load double, ptr %43, align 8, !tbaa !13
  %840 = fcmp oge double %839, 0.000000e+00
  br i1 %840, label %841, label %843

841:                                              ; preds = %827
  %842 = load double, ptr %43, align 8, !tbaa !13
  br label %846

843:                                              ; preds = %827
  %844 = load double, ptr %43, align 8, !tbaa !13
  %845 = fneg double %844
  br label %846

846:                                              ; preds = %843, %841
  %847 = phi double [ %842, %841 ], [ %845, %843 ]
  %848 = load ptr, ptr %21, align 8, !tbaa !5
  %849 = load i64, ptr %52, align 8, !tbaa !9
  %850 = load i64, ptr %52, align 8, !tbaa !9
  %851 = load i64, ptr %32, align 8, !tbaa !9
  %852 = mul nsw i64 %850, %851
  %853 = add nsw i64 %849, %852
  %854 = getelementptr inbounds %struct.doublecomplex, ptr %848, i64 %853
  %855 = call double @d_imag(ptr noundef %854)
  store double %855, ptr %44, align 8, !tbaa !13
  %856 = load double, ptr %44, align 8, !tbaa !13
  %857 = fcmp oge double %856, 0.000000e+00
  br i1 %857, label %858, label %860

858:                                              ; preds = %846
  %859 = load double, ptr %44, align 8, !tbaa !13
  br label %863

860:                                              ; preds = %846
  %861 = load double, ptr %44, align 8, !tbaa !13
  %862 = fneg double %861
  br label %863

863:                                              ; preds = %860, %858
  %864 = phi double [ %859, %858 ], [ %862, %860 ]
  %865 = fadd double %847, %864
  %866 = fmul double %833, %865
  store double %866, ptr %45, align 8, !tbaa !13
  %867 = load double, ptr %45, align 8, !tbaa !13
  %868 = load double, ptr %66, align 8, !tbaa !13
  %869 = fcmp oge double %867, %868
  br i1 %869, label %870, label %872

870:                                              ; preds = %863
  %871 = load double, ptr %45, align 8, !tbaa !13
  br label %874

872:                                              ; preds = %863
  %873 = load double, ptr %66, align 8, !tbaa !13
  br label %874

874:                                              ; preds = %872, %870
  %875 = phi double [ %871, %870 ], [ %873, %872 ]
  store double %875, ptr %58, align 8, !tbaa !13
  %876 = load ptr, ptr %20, align 8, !tbaa !5
  %877 = load i64, ptr %876, align 8, !tbaa !9
  store i64 %877, ptr %39, align 8, !tbaa !9
  %878 = load ptr, ptr %29, align 8, !tbaa !5
  %879 = load i64, ptr %39, align 8, !tbaa !9
  %880 = getelementptr inbounds %struct.doublecomplex, ptr %878, i64 %879
  %881 = getelementptr inbounds %struct.doublecomplex, ptr %880, i32 0, i32 0
  store double 1.000000e+00, ptr %881, align 8, !tbaa !15
  %882 = load ptr, ptr %29, align 8, !tbaa !5
  %883 = load i64, ptr %39, align 8, !tbaa !9
  %884 = getelementptr inbounds %struct.doublecomplex, ptr %882, i64 %883
  %885 = getelementptr inbounds %struct.doublecomplex, ptr %884, i32 0, i32 1
  store double 0.000000e+00, ptr %885, align 8, !tbaa !17
  %886 = load ptr, ptr %20, align 8, !tbaa !5
  %887 = load i64, ptr %886, align 8, !tbaa !9
  store i64 %887, ptr %39, align 8, !tbaa !9
  %888 = load i64, ptr %52, align 8, !tbaa !9
  %889 = add nsw i64 %888, 1
  store i64 %889, ptr %50, align 8, !tbaa !9
  br label %890

890:                                              ; preds = %923, %874
  %891 = load i64, ptr %50, align 8, !tbaa !9
  %892 = load i64, ptr %39, align 8, !tbaa !9
  %893 = icmp sle i64 %891, %892
  br i1 %893, label %894, label %926

894:                                              ; preds = %890
  %895 = load i64, ptr %50, align 8, !tbaa !9
  store i64 %895, ptr %40, align 8, !tbaa !9
  %896 = load ptr, ptr %21, align 8, !tbaa !5
  %897 = load i64, ptr %52, align 8, !tbaa !9
  %898 = load i64, ptr %50, align 8, !tbaa !9
  %899 = load i64, ptr %32, align 8, !tbaa !9
  %900 = mul nsw i64 %898, %899
  %901 = add nsw i64 %897, %900
  %902 = getelementptr inbounds %struct.doublecomplex, ptr %896, i64 %901
  call void @d_cnjg(ptr noundef %47, ptr noundef %902)
  %903 = getelementptr inbounds %struct.doublecomplex, ptr %47, i32 0, i32 0
  %904 = load double, ptr %903, align 8, !tbaa !15
  %905 = fneg double %904
  %906 = getelementptr inbounds %struct.doublecomplex, ptr %46, i32 0, i32 0
  store double %905, ptr %906, align 8, !tbaa !15
  %907 = getelementptr inbounds %struct.doublecomplex, ptr %47, i32 0, i32 1
  %908 = load double, ptr %907, align 8, !tbaa !17
  %909 = fneg double %908
  %910 = getelementptr inbounds %struct.doublecomplex, ptr %46, i32 0, i32 1
  store double %909, ptr %910, align 8, !tbaa !17
  %911 = getelementptr inbounds %struct.doublecomplex, ptr %46, i32 0, i32 0
  %912 = load double, ptr %911, align 8, !tbaa !15
  %913 = load ptr, ptr %29, align 8, !tbaa !5
  %914 = load i64, ptr %40, align 8, !tbaa !9
  %915 = getelementptr inbounds %struct.doublecomplex, ptr %913, i64 %914
  %916 = getelementptr inbounds %struct.doublecomplex, ptr %915, i32 0, i32 0
  store double %912, ptr %916, align 8, !tbaa !15
  %917 = getelementptr inbounds %struct.doublecomplex, ptr %46, i32 0, i32 1
  %918 = load double, ptr %917, align 8, !tbaa !17
  %919 = load ptr, ptr %29, align 8, !tbaa !5
  %920 = load i64, ptr %40, align 8, !tbaa !9
  %921 = getelementptr inbounds %struct.doublecomplex, ptr %919, i64 %920
  %922 = getelementptr inbounds %struct.doublecomplex, ptr %921, i32 0, i32 1
  store double %918, ptr %922, align 8, !tbaa !17
  br label %923

923:                                              ; preds = %894
  %924 = load i64, ptr %50, align 8, !tbaa !9
  %925 = add nsw i64 %924, 1
  store i64 %925, ptr %50, align 8, !tbaa !9
  br label %890, !llvm.loop !25

926:                                              ; preds = %890
  %927 = load ptr, ptr %20, align 8, !tbaa !5
  %928 = load i64, ptr %927, align 8, !tbaa !9
  store i64 %928, ptr %39, align 8, !tbaa !9
  %929 = load i64, ptr %52, align 8, !tbaa !9
  %930 = add nsw i64 %929, 1
  store i64 %930, ptr %50, align 8, !tbaa !9
  br label %931

931:                                              ; preds = %1042, %926
  %932 = load i64, ptr %50, align 8, !tbaa !9
  %933 = load i64, ptr %39, align 8, !tbaa !9
  %934 = icmp sle i64 %932, %933
  br i1 %934, label %935, label %1045

935:                                              ; preds = %931
  %936 = load i64, ptr %50, align 8, !tbaa !9
  %937 = load i64, ptr %50, align 8, !tbaa !9
  %938 = load i64, ptr %32, align 8, !tbaa !9
  %939 = mul nsw i64 %937, %938
  %940 = add nsw i64 %936, %939
  store i64 %940, ptr %40, align 8, !tbaa !9
  %941 = load i64, ptr %50, align 8, !tbaa !9
  %942 = load i64, ptr %50, align 8, !tbaa !9
  %943 = load i64, ptr %32, align 8, !tbaa !9
  %944 = mul nsw i64 %942, %943
  %945 = add nsw i64 %941, %944
  store i64 %945, ptr %41, align 8, !tbaa !9
  %946 = load i64, ptr %52, align 8, !tbaa !9
  %947 = load i64, ptr %52, align 8, !tbaa !9
  %948 = load i64, ptr %32, align 8, !tbaa !9
  %949 = mul nsw i64 %947, %948
  %950 = add nsw i64 %946, %949
  store i64 %950, ptr %42, align 8, !tbaa !9
  %951 = load ptr, ptr %21, align 8, !tbaa !5
  %952 = load i64, ptr %41, align 8, !tbaa !9
  %953 = getelementptr inbounds %struct.doublecomplex, ptr %951, i64 %952
  %954 = getelementptr inbounds %struct.doublecomplex, ptr %953, i32 0, i32 0
  %955 = load double, ptr %954, align 8, !tbaa !15
  %956 = load ptr, ptr %21, align 8, !tbaa !5
  %957 = load i64, ptr %42, align 8, !tbaa !9
  %958 = getelementptr inbounds %struct.doublecomplex, ptr %956, i64 %957
  %959 = getelementptr inbounds %struct.doublecomplex, ptr %958, i32 0, i32 0
  %960 = load double, ptr %959, align 8, !tbaa !15
  %961 = fsub double %955, %960
  %962 = getelementptr inbounds %struct.doublecomplex, ptr %46, i32 0, i32 0
  store double %961, ptr %962, align 8, !tbaa !15
  %963 = load ptr, ptr %21, align 8, !tbaa !5
  %964 = load i64, ptr %41, align 8, !tbaa !9
  %965 = getelementptr inbounds %struct.doublecomplex, ptr %963, i64 %964
  %966 = getelementptr inbounds %struct.doublecomplex, ptr %965, i32 0, i32 1
  %967 = load double, ptr %966, align 8, !tbaa !17
  %968 = load ptr, ptr %21, align 8, !tbaa !5
  %969 = load i64, ptr %42, align 8, !tbaa !9
  %970 = getelementptr inbounds %struct.doublecomplex, ptr %968, i64 %969
  %971 = getelementptr inbounds %struct.doublecomplex, ptr %970, i32 0, i32 1
  %972 = load double, ptr %971, align 8, !tbaa !17
  %973 = fsub double %967, %972
  %974 = getelementptr inbounds %struct.doublecomplex, ptr %46, i32 0, i32 1
  store double %973, ptr %974, align 8, !tbaa !17
  %975 = getelementptr inbounds %struct.doublecomplex, ptr %46, i32 0, i32 0
  %976 = load double, ptr %975, align 8, !tbaa !15
  %977 = load ptr, ptr %21, align 8, !tbaa !5
  %978 = load i64, ptr %40, align 8, !tbaa !9
  %979 = getelementptr inbounds %struct.doublecomplex, ptr %977, i64 %978
  %980 = getelementptr inbounds %struct.doublecomplex, ptr %979, i32 0, i32 0
  store double %976, ptr %980, align 8, !tbaa !15
  %981 = getelementptr inbounds %struct.doublecomplex, ptr %46, i32 0, i32 1
  %982 = load double, ptr %981, align 8, !tbaa !17
  %983 = load ptr, ptr %21, align 8, !tbaa !5
  %984 = load i64, ptr %40, align 8, !tbaa !9
  %985 = getelementptr inbounds %struct.doublecomplex, ptr %983, i64 %984
  %986 = getelementptr inbounds %struct.doublecomplex, ptr %985, i32 0, i32 1
  store double %982, ptr %986, align 8, !tbaa !17
  %987 = load i64, ptr %50, align 8, !tbaa !9
  %988 = load i64, ptr %50, align 8, !tbaa !9
  %989 = load i64, ptr %32, align 8, !tbaa !9
  %990 = mul nsw i64 %988, %989
  %991 = add nsw i64 %987, %990
  store i64 %991, ptr %40, align 8, !tbaa !9
  %992 = load ptr, ptr %21, align 8, !tbaa !5
  %993 = load i64, ptr %40, align 8, !tbaa !9
  %994 = getelementptr inbounds %struct.doublecomplex, ptr %992, i64 %993
  %995 = getelementptr inbounds %struct.doublecomplex, ptr %994, i32 0, i32 0
  %996 = load double, ptr %995, align 8, !tbaa !15
  store double %996, ptr %43, align 8, !tbaa !13
  %997 = load double, ptr %43, align 8, !tbaa !13
  %998 = fcmp oge double %997, 0.000000e+00
  br i1 %998, label %999, label %1001

999:                                              ; preds = %935
  %1000 = load double, ptr %43, align 8, !tbaa !13
  br label %1004

1001:                                             ; preds = %935
  %1002 = load double, ptr %43, align 8, !tbaa !13
  %1003 = fneg double %1002
  br label %1004

1004:                                             ; preds = %1001, %999
  %1005 = phi double [ %1000, %999 ], [ %1003, %1001 ]
  %1006 = load ptr, ptr %21, align 8, !tbaa !5
  %1007 = load i64, ptr %50, align 8, !tbaa !9
  %1008 = load i64, ptr %50, align 8, !tbaa !9
  %1009 = load i64, ptr %32, align 8, !tbaa !9
  %1010 = mul nsw i64 %1008, %1009
  %1011 = add nsw i64 %1007, %1010
  %1012 = getelementptr inbounds %struct.doublecomplex, ptr %1006, i64 %1011
  %1013 = call double @d_imag(ptr noundef %1012)
  store double %1013, ptr %44, align 8, !tbaa !13
  %1014 = load double, ptr %44, align 8, !tbaa !13
  %1015 = fcmp oge double %1014, 0.000000e+00
  br i1 %1015, label %1016, label %1018

1016:                                             ; preds = %1004
  %1017 = load double, ptr %44, align 8, !tbaa !13
  br label %1021

1018:                                             ; preds = %1004
  %1019 = load double, ptr %44, align 8, !tbaa !13
  %1020 = fneg double %1019
  br label %1021

1021:                                             ; preds = %1018, %1016
  %1022 = phi double [ %1017, %1016 ], [ %1020, %1018 ]
  %1023 = fadd double %1005, %1022
  %1024 = load double, ptr %58, align 8, !tbaa !13
  %1025 = fcmp olt double %1023, %1024
  br i1 %1025, label %1026, label %1041

1026:                                             ; preds = %1021
  %1027 = load i64, ptr %50, align 8, !tbaa !9
  %1028 = load i64, ptr %50, align 8, !tbaa !9
  %1029 = load i64, ptr %32, align 8, !tbaa !9
  %1030 = mul nsw i64 %1028, %1029
  %1031 = add nsw i64 %1027, %1030
  store i64 %1031, ptr %41, align 8, !tbaa !9
  %1032 = load double, ptr %58, align 8, !tbaa !13
  %1033 = load ptr, ptr %21, align 8, !tbaa !5
  %1034 = load i64, ptr %41, align 8, !tbaa !9
  %1035 = getelementptr inbounds %struct.doublecomplex, ptr %1033, i64 %1034
  %1036 = getelementptr inbounds %struct.doublecomplex, ptr %1035, i32 0, i32 0
  store double %1032, ptr %1036, align 8, !tbaa !15
  %1037 = load ptr, ptr %21, align 8, !tbaa !5
  %1038 = load i64, ptr %41, align 8, !tbaa !9
  %1039 = getelementptr inbounds %struct.doublecomplex, ptr %1037, i64 %1038
  %1040 = getelementptr inbounds %struct.doublecomplex, ptr %1039, i32 0, i32 1
  store double 0.000000e+00, ptr %1040, align 8, !tbaa !17
  br label %1041

1041:                                             ; preds = %1026, %1021
  br label %1042

1042:                                             ; preds = %1041
  %1043 = load i64, ptr %50, align 8, !tbaa !9
  %1044 = add nsw i64 %1043, 1
  store i64 %1044, ptr %50, align 8, !tbaa !9
  br label %931, !llvm.loop !26

1045:                                             ; preds = %931
  %1046 = load i64, ptr %52, align 8, !tbaa !9
  %1047 = load ptr, ptr %20, align 8, !tbaa !5
  %1048 = load i64, ptr %1047, align 8, !tbaa !9
  %1049 = icmp slt i64 %1046, %1048
  br i1 %1049, label %1050, label %1083

1050:                                             ; preds = %1045
  %1051 = load ptr, ptr %20, align 8, !tbaa !5
  %1052 = load i64, ptr %1051, align 8, !tbaa !9
  %1053 = load i64, ptr %52, align 8, !tbaa !9
  %1054 = sub nsw i64 %1052, %1053
  store i64 %1054, ptr %39, align 8, !tbaa !9
  %1055 = load ptr, ptr %21, align 8, !tbaa !5
  %1056 = load i64, ptr %52, align 8, !tbaa !9
  %1057 = add nsw i64 %1056, 1
  %1058 = load i64, ptr %52, align 8, !tbaa !9
  %1059 = add nsw i64 %1058, 1
  %1060 = load i64, ptr %32, align 8, !tbaa !9
  %1061 = mul nsw i64 %1059, %1060
  %1062 = add nsw i64 %1057, %1061
  %1063 = getelementptr inbounds %struct.doublecomplex, ptr %1055, i64 %1062
  %1064 = load ptr, ptr %22, align 8, !tbaa !5
  %1065 = load ptr, ptr %29, align 8, !tbaa !5
  %1066 = load i64, ptr %52, align 8, !tbaa !9
  %1067 = add nsw i64 %1066, 1
  %1068 = getelementptr inbounds %struct.doublecomplex, ptr %1065, i64 %1067
  %1069 = load ptr, ptr %30, align 8, !tbaa !5
  %1070 = getelementptr inbounds double, ptr %1069, i64 1
  %1071 = load ptr, ptr %31, align 8, !tbaa !5
  %1072 = call i32 @zlatrs_(ptr noundef @.str.8, ptr noundef @.str.13, ptr noundef @.str.10, ptr noundef @.str.11, ptr noundef %39, ptr noundef %1063, ptr noundef %1064, ptr noundef %1068, ptr noundef %60, ptr noundef %1070, ptr noundef %1071)
  %1073 = load i64, ptr %52, align 8, !tbaa !9
  store i64 %1073, ptr %39, align 8, !tbaa !9
  %1074 = load double, ptr %60, align 8, !tbaa !13
  %1075 = load ptr, ptr %29, align 8, !tbaa !5
  %1076 = load i64, ptr %39, align 8, !tbaa !9
  %1077 = getelementptr inbounds %struct.doublecomplex, ptr %1075, i64 %1076
  %1078 = getelementptr inbounds %struct.doublecomplex, ptr %1077, i32 0, i32 0
  store double %1074, ptr %1078, align 8, !tbaa !15
  %1079 = load ptr, ptr %29, align 8, !tbaa !5
  %1080 = load i64, ptr %39, align 8, !tbaa !9
  %1081 = getelementptr inbounds %struct.doublecomplex, ptr %1079, i64 %1080
  %1082 = getelementptr inbounds %struct.doublecomplex, ptr %1081, i32 0, i32 1
  store double 0.000000e+00, ptr %1082, align 8, !tbaa !17
  br label %1083

1083:                                             ; preds = %1050, %1045
  %1084 = load i64, ptr %59, align 8, !tbaa !9
  %1085 = icmp ne i64 %1084, 0
  br i1 %1085, label %1194, label %1086

1086:                                             ; preds = %1083
  %1087 = load ptr, ptr %20, align 8, !tbaa !5
  %1088 = load i64, ptr %1087, align 8, !tbaa !9
  %1089 = load i64, ptr %52, align 8, !tbaa !9
  %1090 = sub nsw i64 %1088, %1089
  %1091 = add nsw i64 %1090, 1
  store i64 %1091, ptr %39, align 8, !tbaa !9
  %1092 = load ptr, ptr %29, align 8, !tbaa !5
  %1093 = load i64, ptr %52, align 8, !tbaa !9
  %1094 = getelementptr inbounds %struct.doublecomplex, ptr %1092, i64 %1093
  %1095 = load ptr, ptr %23, align 8, !tbaa !5
  %1096 = load i64, ptr %52, align 8, !tbaa !9
  %1097 = load i64, ptr %53, align 8, !tbaa !9
  %1098 = load i64, ptr %34, align 8, !tbaa !9
  %1099 = mul nsw i64 %1097, %1098
  %1100 = add nsw i64 %1096, %1099
  %1101 = getelementptr inbounds %struct.doublecomplex, ptr %1095, i64 %1100
  %1102 = call i32 @f2c_zcopy(ptr noundef %39, ptr noundef %1094, ptr noundef @c__1, ptr noundef %1101, ptr noundef @c__1)
  %1103 = load ptr, ptr %20, align 8, !tbaa !5
  %1104 = load i64, ptr %1103, align 8, !tbaa !9
  %1105 = load i64, ptr %52, align 8, !tbaa !9
  %1106 = sub nsw i64 %1104, %1105
  %1107 = add nsw i64 %1106, 1
  store i64 %1107, ptr %39, align 8, !tbaa !9
  %1108 = load ptr, ptr %23, align 8, !tbaa !5
  %1109 = load i64, ptr %52, align 8, !tbaa !9
  %1110 = load i64, ptr %53, align 8, !tbaa !9
  %1111 = load i64, ptr %34, align 8, !tbaa !9
  %1112 = mul nsw i64 %1110, %1111
  %1113 = add nsw i64 %1109, %1112
  %1114 = getelementptr inbounds %struct.doublecomplex, ptr %1108, i64 %1113
  %1115 = call i64 @f2c_izamax(ptr noundef %39, ptr noundef %1114, ptr noundef @c__1)
  %1116 = load i64, ptr %52, align 8, !tbaa !9
  %1117 = add nsw i64 %1115, %1116
  %1118 = sub nsw i64 %1117, 1
  store i64 %1118, ptr %51, align 8, !tbaa !9
  %1119 = load i64, ptr %51, align 8, !tbaa !9
  %1120 = load i64, ptr %53, align 8, !tbaa !9
  %1121 = load i64, ptr %34, align 8, !tbaa !9
  %1122 = mul nsw i64 %1120, %1121
  %1123 = add nsw i64 %1119, %1122
  store i64 %1123, ptr %39, align 8, !tbaa !9
  %1124 = load ptr, ptr %23, align 8, !tbaa !5
  %1125 = load i64, ptr %39, align 8, !tbaa !9
  %1126 = getelementptr inbounds %struct.doublecomplex, ptr %1124, i64 %1125
  %1127 = getelementptr inbounds %struct.doublecomplex, ptr %1126, i32 0, i32 0
  %1128 = load double, ptr %1127, align 8, !tbaa !15
  store double %1128, ptr %43, align 8, !tbaa !13
  %1129 = load double, ptr %43, align 8, !tbaa !13
  %1130 = fcmp oge double %1129, 0.000000e+00
  br i1 %1130, label %1131, label %1133

1131:                                             ; preds = %1086
  %1132 = load double, ptr %43, align 8, !tbaa !13
  br label %1136

1133:                                             ; preds = %1086
  %1134 = load double, ptr %43, align 8, !tbaa !13
  %1135 = fneg double %1134
  br label %1136

1136:                                             ; preds = %1133, %1131
  %1137 = phi double [ %1132, %1131 ], [ %1135, %1133 ]
  %1138 = load ptr, ptr %23, align 8, !tbaa !5
  %1139 = load i64, ptr %51, align 8, !tbaa !9
  %1140 = load i64, ptr %53, align 8, !tbaa !9
  %1141 = load i64, ptr %34, align 8, !tbaa !9
  %1142 = mul nsw i64 %1140, %1141
  %1143 = add nsw i64 %1139, %1142
  %1144 = getelementptr inbounds %struct.doublecomplex, ptr %1138, i64 %1143
  %1145 = call double @d_imag(ptr noundef %1144)
  store double %1145, ptr %44, align 8, !tbaa !13
  %1146 = load double, ptr %44, align 8, !tbaa !13
  %1147 = fcmp oge double %1146, 0.000000e+00
  br i1 %1147, label %1148, label %1150

1148:                                             ; preds = %1136
  %1149 = load double, ptr %44, align 8, !tbaa !13
  br label %1153

1150:                                             ; preds = %1136
  %1151 = load double, ptr %44, align 8, !tbaa !13
  %1152 = fneg double %1151
  br label %1153

1153:                                             ; preds = %1150, %1148
  %1154 = phi double [ %1149, %1148 ], [ %1152, %1150 ]
  %1155 = fadd double %1137, %1154
  %1156 = fdiv double 1.000000e+00, %1155
  store double %1156, ptr %61, align 8, !tbaa !13
  %1157 = load ptr, ptr %20, align 8, !tbaa !5
  %1158 = load i64, ptr %1157, align 8, !tbaa !9
  %1159 = load i64, ptr %52, align 8, !tbaa !9
  %1160 = sub nsw i64 %1158, %1159
  %1161 = add nsw i64 %1160, 1
  store i64 %1161, ptr %39, align 8, !tbaa !9
  %1162 = load ptr, ptr %23, align 8, !tbaa !5
  %1163 = load i64, ptr %52, align 8, !tbaa !9
  %1164 = load i64, ptr %53, align 8, !tbaa !9
  %1165 = load i64, ptr %34, align 8, !tbaa !9
  %1166 = mul nsw i64 %1164, %1165
  %1167 = add nsw i64 %1163, %1166
  %1168 = getelementptr inbounds %struct.doublecomplex, ptr %1162, i64 %1167
  %1169 = call i32 @f2c_zdscal(ptr noundef %39, ptr noundef %61, ptr noundef %1168, ptr noundef @c__1)
  %1170 = load i64, ptr %52, align 8, !tbaa !9
  %1171 = sub nsw i64 %1170, 1
  store i64 %1171, ptr %39, align 8, !tbaa !9
  store i64 1, ptr %50, align 8, !tbaa !9
  br label %1172

1172:                                             ; preds = %1190, %1153
  %1173 = load i64, ptr %50, align 8, !tbaa !9
  %1174 = load i64, ptr %39, align 8, !tbaa !9
  %1175 = icmp sle i64 %1173, %1174
  br i1 %1175, label %1176, label %1193

1176:                                             ; preds = %1172
  %1177 = load i64, ptr %50, align 8, !tbaa !9
  %1178 = load i64, ptr %53, align 8, !tbaa !9
  %1179 = load i64, ptr %34, align 8, !tbaa !9
  %1180 = mul nsw i64 %1178, %1179
  %1181 = add nsw i64 %1177, %1180
  store i64 %1181, ptr %40, align 8, !tbaa !9
  %1182 = load ptr, ptr %23, align 8, !tbaa !5
  %1183 = load i64, ptr %40, align 8, !tbaa !9
  %1184 = getelementptr inbounds %struct.doublecomplex, ptr %1182, i64 %1183
  %1185 = getelementptr inbounds %struct.doublecomplex, ptr %1184, i32 0, i32 0
  store double 0.000000e+00, ptr %1185, align 8, !tbaa !15
  %1186 = load ptr, ptr %23, align 8, !tbaa !5
  %1187 = load i64, ptr %40, align 8, !tbaa !9
  %1188 = getelementptr inbounds %struct.doublecomplex, ptr %1186, i64 %1187
  %1189 = getelementptr inbounds %struct.doublecomplex, ptr %1188, i32 0, i32 1
  store double 0.000000e+00, ptr %1189, align 8, !tbaa !17
  br label %1190

1190:                                             ; preds = %1176
  %1191 = load i64, ptr %50, align 8, !tbaa !9
  %1192 = add nsw i64 %1191, 1
  store i64 %1192, ptr %50, align 8, !tbaa !9
  br label %1172, !llvm.loop !27

1193:                                             ; preds = %1172
  br label %1282

1194:                                             ; preds = %1083
  %1195 = load i64, ptr %52, align 8, !tbaa !9
  %1196 = load ptr, ptr %20, align 8, !tbaa !5
  %1197 = load i64, ptr %1196, align 8, !tbaa !9
  %1198 = icmp slt i64 %1195, %1197
  br i1 %1198, label %1199, label %1227

1199:                                             ; preds = %1194
  %1200 = load ptr, ptr %20, align 8, !tbaa !5
  %1201 = load i64, ptr %1200, align 8, !tbaa !9
  %1202 = load i64, ptr %52, align 8, !tbaa !9
  %1203 = sub nsw i64 %1201, %1202
  store i64 %1203, ptr %39, align 8, !tbaa !9
  %1204 = load double, ptr %60, align 8, !tbaa !13
  %1205 = getelementptr inbounds %struct.doublecomplex, ptr %46, i32 0, i32 0
  store double %1204, ptr %1205, align 8, !tbaa !15
  %1206 = getelementptr inbounds %struct.doublecomplex, ptr %46, i32 0, i32 1
  store double 0.000000e+00, ptr %1206, align 8, !tbaa !17
  %1207 = load ptr, ptr %20, align 8, !tbaa !5
  %1208 = load ptr, ptr %23, align 8, !tbaa !5
  %1209 = load i64, ptr %52, align 8, !tbaa !9
  %1210 = add nsw i64 %1209, 1
  %1211 = load i64, ptr %34, align 8, !tbaa !9
  %1212 = mul nsw i64 %1210, %1211
  %1213 = add nsw i64 %1212, 1
  %1214 = getelementptr inbounds %struct.doublecomplex, ptr %1208, i64 %1213
  %1215 = load ptr, ptr %24, align 8, !tbaa !5
  %1216 = load ptr, ptr %29, align 8, !tbaa !5
  %1217 = load i64, ptr %52, align 8, !tbaa !9
  %1218 = add nsw i64 %1217, 1
  %1219 = getelementptr inbounds %struct.doublecomplex, ptr %1216, i64 %1218
  %1220 = load ptr, ptr %23, align 8, !tbaa !5
  %1221 = load i64, ptr %52, align 8, !tbaa !9
  %1222 = load i64, ptr %34, align 8, !tbaa !9
  %1223 = mul nsw i64 %1221, %1222
  %1224 = add nsw i64 %1223, 1
  %1225 = getelementptr inbounds %struct.doublecomplex, ptr %1220, i64 %1224
  %1226 = call i32 @f2c_zgemv(ptr noundef @.str.12, ptr noundef %1207, ptr noundef %39, ptr noundef @c_b2, ptr noundef %1214, ptr noundef %1215, ptr noundef %1219, ptr noundef @c__1, ptr noundef %46, ptr noundef %1225, ptr noundef @c__1)
  br label %1227

1227:                                             ; preds = %1199, %1194
  %1228 = load ptr, ptr %20, align 8, !tbaa !5
  %1229 = load ptr, ptr %23, align 8, !tbaa !5
  %1230 = load i64, ptr %52, align 8, !tbaa !9
  %1231 = load i64, ptr %34, align 8, !tbaa !9
  %1232 = mul nsw i64 %1230, %1231
  %1233 = add nsw i64 %1232, 1
  %1234 = getelementptr inbounds %struct.doublecomplex, ptr %1229, i64 %1233
  %1235 = call i64 @f2c_izamax(ptr noundef %1228, ptr noundef %1234, ptr noundef @c__1)
  store i64 %1235, ptr %51, align 8, !tbaa !9
  %1236 = load i64, ptr %51, align 8, !tbaa !9
  %1237 = load i64, ptr %52, align 8, !tbaa !9
  %1238 = load i64, ptr %34, align 8, !tbaa !9
  %1239 = mul nsw i64 %1237, %1238
  %1240 = add nsw i64 %1236, %1239
  store i64 %1240, ptr %39, align 8, !tbaa !9
  %1241 = load ptr, ptr %23, align 8, !tbaa !5
  %1242 = load i64, ptr %39, align 8, !tbaa !9
  %1243 = getelementptr inbounds %struct.doublecomplex, ptr %1241, i64 %1242
  %1244 = getelementptr inbounds %struct.doublecomplex, ptr %1243, i32 0, i32 0
  %1245 = load double, ptr %1244, align 8, !tbaa !15
  store double %1245, ptr %43, align 8, !tbaa !13
  %1246 = load double, ptr %43, align 8, !tbaa !13
  %1247 = fcmp oge double %1246, 0.000000e+00
  br i1 %1247, label %1248, label %1250

1248:                                             ; preds = %1227
  %1249 = load double, ptr %43, align 8, !tbaa !13
  br label %1253

1250:                                             ; preds = %1227
  %1251 = load double, ptr %43, align 8, !tbaa !13
  %1252 = fneg double %1251
  br label %1253

1253:                                             ; preds = %1250, %1248
  %1254 = phi double [ %1249, %1248 ], [ %1252, %1250 ]
  %1255 = load ptr, ptr %23, align 8, !tbaa !5
  %1256 = load i64, ptr %51, align 8, !tbaa !9
  %1257 = load i64, ptr %52, align 8, !tbaa !9
  %1258 = load i64, ptr %34, align 8, !tbaa !9
  %1259 = mul nsw i64 %1257, %1258
  %1260 = add nsw i64 %1256, %1259
  %1261 = getelementptr inbounds %struct.doublecomplex, ptr %1255, i64 %1260
  %1262 = call double @d_imag(ptr noundef %1261)
  store double %1262, ptr %44, align 8, !tbaa !13
  %1263 = load double, ptr %44, align 8, !tbaa !13
  %1264 = fcmp oge double %1263, 0.000000e+00
  br i1 %1264, label %1265, label %1267

1265:                                             ; preds = %1253
  %1266 = load double, ptr %44, align 8, !tbaa !13
  br label %1270

1267:                                             ; preds = %1253
  %1268 = load double, ptr %44, align 8, !tbaa !13
  %1269 = fneg double %1268
  br label %1270

1270:                                             ; preds = %1267, %1265
  %1271 = phi double [ %1266, %1265 ], [ %1269, %1267 ]
  %1272 = fadd double %1254, %1271
  %1273 = fdiv double 1.000000e+00, %1272
  store double %1273, ptr %61, align 8, !tbaa !13
  %1274 = load ptr, ptr %20, align 8, !tbaa !5
  %1275 = load ptr, ptr %23, align 8, !tbaa !5
  %1276 = load i64, ptr %52, align 8, !tbaa !9
  %1277 = load i64, ptr %34, align 8, !tbaa !9
  %1278 = mul nsw i64 %1276, %1277
  %1279 = add nsw i64 %1278, 1
  %1280 = getelementptr inbounds %struct.doublecomplex, ptr %1275, i64 %1279
  %1281 = call i32 @f2c_zdscal(ptr noundef %1274, ptr noundef %61, ptr noundef %1280, ptr noundef @c__1)
  br label %1282

1282:                                             ; preds = %1270, %1193
  %1283 = load ptr, ptr %20, align 8, !tbaa !5
  %1284 = load i64, ptr %1283, align 8, !tbaa !9
  store i64 %1284, ptr %39, align 8, !tbaa !9
  %1285 = load i64, ptr %52, align 8, !tbaa !9
  %1286 = add nsw i64 %1285, 1
  store i64 %1286, ptr %50, align 8, !tbaa !9
  br label %1287

1287:                                             ; preds = %1319, %1282
  %1288 = load i64, ptr %50, align 8, !tbaa !9
  %1289 = load i64, ptr %39, align 8, !tbaa !9
  %1290 = icmp sle i64 %1288, %1289
  br i1 %1290, label %1291, label %1322

1291:                                             ; preds = %1287
  %1292 = load i64, ptr %50, align 8, !tbaa !9
  %1293 = load i64, ptr %50, align 8, !tbaa !9
  %1294 = load i64, ptr %32, align 8, !tbaa !9
  %1295 = mul nsw i64 %1293, %1294
  %1296 = add nsw i64 %1292, %1295
  store i64 %1296, ptr %40, align 8, !tbaa !9
  %1297 = load i64, ptr %50, align 8, !tbaa !9
  %1298 = load ptr, ptr %20, align 8, !tbaa !5
  %1299 = load i64, ptr %1298, align 8, !tbaa !9
  %1300 = add nsw i64 %1297, %1299
  store i64 %1300, ptr %41, align 8, !tbaa !9
  %1301 = load ptr, ptr %29, align 8, !tbaa !5
  %1302 = load i64, ptr %41, align 8, !tbaa !9
  %1303 = getelementptr inbounds %struct.doublecomplex, ptr %1301, i64 %1302
  %1304 = getelementptr inbounds %struct.doublecomplex, ptr %1303, i32 0, i32 0
  %1305 = load double, ptr %1304, align 8, !tbaa !15
  %1306 = load ptr, ptr %21, align 8, !tbaa !5
  %1307 = load i64, ptr %40, align 8, !tbaa !9
  %1308 = getelementptr inbounds %struct.doublecomplex, ptr %1306, i64 %1307
  %1309 = getelementptr inbounds %struct.doublecomplex, ptr %1308, i32 0, i32 0
  store double %1305, ptr %1309, align 8, !tbaa !15
  %1310 = load ptr, ptr %29, align 8, !tbaa !5
  %1311 = load i64, ptr %41, align 8, !tbaa !9
  %1312 = getelementptr inbounds %struct.doublecomplex, ptr %1310, i64 %1311
  %1313 = getelementptr inbounds %struct.doublecomplex, ptr %1312, i32 0, i32 1
  %1314 = load double, ptr %1313, align 8, !tbaa !17
  %1315 = load ptr, ptr %21, align 8, !tbaa !5
  %1316 = load i64, ptr %40, align 8, !tbaa !9
  %1317 = getelementptr inbounds %struct.doublecomplex, ptr %1315, i64 %1316
  %1318 = getelementptr inbounds %struct.doublecomplex, ptr %1317, i32 0, i32 1
  store double %1314, ptr %1318, align 8, !tbaa !17
  br label %1319

1319:                                             ; preds = %1291
  %1320 = load i64, ptr %50, align 8, !tbaa !9
  %1321 = add nsw i64 %1320, 1
  store i64 %1321, ptr %50, align 8, !tbaa !9
  br label %1287, !llvm.loop !28

1322:                                             ; preds = %1287
  %1323 = load i64, ptr %53, align 8, !tbaa !9
  %1324 = add nsw i64 %1323, 1
  store i64 %1324, ptr %53, align 8, !tbaa !9
  br label %1325

1325:                                             ; preds = %1322, %825
  br label %1326

1326:                                             ; preds = %1325
  %1327 = load i64, ptr %52, align 8, !tbaa !9
  %1328 = add nsw i64 %1327, 1
  store i64 %1328, ptr %52, align 8, !tbaa !9
  br label %812, !llvm.loop !29

1329:                                             ; preds = %812
  br label %1330

1330:                                             ; preds = %1329, %806
  store i32 0, ptr %16, align 4
  store i32 1, ptr %67, align 4
  br label %1331

1331:                                             ; preds = %1330, %253, %244
  call void @llvm.lifetime.end.p0(i64 8, ptr %66) #3
  call void @llvm.lifetime.end.p0(i64 8, ptr %65) #3
  call void @llvm.lifetime.end.p0(i64 8, ptr %64) #3
  call void @llvm.lifetime.end.p0(i64 8, ptr %63) #3
  call void @llvm.lifetime.end.p0(i64 8, ptr %62) #3
  call void @llvm.lifetime.end.p0(i64 8, ptr %61) #3
  call void @llvm.lifetime.end.p0(i64 8, ptr %60) #3
  call void @llvm.lifetime.end.p0(i64 8, ptr %59) #3
  call void @llvm.lifetime.end.p0(i64 8, ptr %58) #3
  call void @llvm.lifetime.end.p0(i64 8, ptr %57) #3
  call void @llvm.lifetime.end.p0(i64 8, ptr %56) #3
  call void @llvm.lifetime.end.p0(i64 8, ptr %55) #3
  call void @llvm.lifetime.end.p0(i64 8, ptr %54) #3
  call void @llvm.lifetime.end.p0(i64 8, ptr %53) #3
  call void @llvm.lifetime.end.p0(i64 8, ptr %52) #3
  call void @llvm.lifetime.end.p0(i64 8, ptr %51) #3
  call void @llvm.lifetime.end.p0(i64 8, ptr %50) #3
  call void @llvm.lifetime.end.p0(i64 8, ptr %49) #3
  call void @llvm.lifetime.end.p0(i64 8, ptr %48) #3
  call void @llvm.lifetime.end.p0(i64 16, ptr %47) #3
  call void @llvm.lifetime.end.p0(i64 16, ptr %46) #3
  call void @llvm.lifetime.end.p0(i64 8, ptr %45) #3
  call void @llvm.lifetime.end.p0(i64 8, ptr %44) #3
  call void @llvm.lifetime.end.p0(i64 8, ptr %43) #3
  call void @llvm.lifetime.end.p0(i64 8, ptr %42) #3
  call void @llvm.lifetime.end.p0(i64 8, ptr %41) #3
  call void @llvm.lifetime.end.p0(i64 8, ptr %40) #3
  call void @llvm.lifetime.end.p0(i64 8, ptr %39) #3
  call void @llvm.lifetime.end.p0(i64 8, ptr %38) #3
  call void @llvm.lifetime.end.p0(i64 8, ptr %37) #3
  call void @llvm.lifetime.end.p0(i64 8, ptr %36) #3
  call void @llvm.lifetime.end.p0(i64 8, ptr %35) #3
  call void @llvm.lifetime.end.p0(i64 8, ptr %34) #3
  call void @llvm.lifetime.end.p0(i64 8, ptr %33) #3
  call void @llvm.lifetime.end.p0(i64 8, ptr %32) #3
  %1332 = load i32, ptr %16, align 4
  ret i32 %1332
}

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

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

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

declare double @dlamch_(ptr noundef) #2

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

declare double @f2c_dzasum(ptr noundef, ptr noundef, ptr noundef) #2

declare double @d_imag(ptr noundef) #2

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

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

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

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

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

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

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

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

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

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


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

%struct.doublecomplex = type { double, double }

@.str = external hidden unnamed_addr constant [2 x i8], align 1
@.str.1 = external hidden unnamed_addr constant [2 x i8], align 1
@.str.2 = external hidden unnamed_addr constant [2 x i8], align 1
@.str.3 = external hidden unnamed_addr constant [2 x i8], align 1
@.str.4 = external hidden unnamed_addr constant [2 x i8], align 1
@.str.5 = external hidden unnamed_addr constant [7 x i8], align 1
@.str.6 = external hidden unnamed_addr constant [13 x i8], align 1
@.str.7 = external hidden unnamed_addr constant [10 x i8], align 1
@c__1 = external hidden global i64, align 8
@.str.8 = external hidden unnamed_addr constant [6 x i8], align 1
@.str.9 = external hidden unnamed_addr constant [13 x i8], align 1
@.str.10 = external hidden unnamed_addr constant [9 x i8], align 1
@.str.11 = external hidden unnamed_addr constant [2 x i8], align 1
@.str.12 = external hidden unnamed_addr constant [2 x i8], align 1
@c_b2 = external hidden global %struct.doublecomplex, align 8
@.str.13 = external hidden unnamed_addr constant [20 x i8], align 1

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

48:                                               ; preds = %15
  store i64 0, ptr %11, align 8, !tbaa !5
  %49 = load i64, ptr %3, align 8, !tbaa !5
  store i64 %49, ptr %16, align 8, !tbaa !5
  %.not470 = icmp slt i64 %49, 1
  br i1 %.not470, label %.loopexit469, label %.lr.ph.preheader

.lr.ph.preheader:                                 ; preds = %48
  %xtraiter = and i64 %49, 1
  %50 = icmp eq i64 %49, 1
  br i1 %50, label %.loopexit469.loopexit.unr-lcssa, label %.lr.ph.preheader.new

.lr.ph.preheader.new:                             ; preds = %.lr.ph.preheader
  %unroll_iter = and i64 %49, 9223372036854775806
  br label %.lr.ph

.lr.ph:                                           ; preds = %61, %.lr.ph.preheader.new
  %51 = phi i64 [ 0, %.lr.ph.preheader.new ], [ %62, %61 ]
  %.0424471 = phi i64 [ 1, %.lr.ph.preheader.new ], [ %63, %61 ]
  %niter = phi i64 [ 0, %.lr.ph.preheader.new ], [ %niter.next.1, %61 ]
  %52 = getelementptr inbounds i64, ptr %25, i64 %.0424471
  %53 = load i64, ptr %52, align 8, !tbaa !5
  %.not458 = icmp eq i64 %53, 0
  br i1 %.not458, label %.lr.ph.1, label %54

54:                                               ; preds = %.lr.ph
  %55 = add nsw i64 %51, 1
  store i64 %55, ptr %11, align 8, !tbaa !5
  br label %.lr.ph.1

.lr.ph.1:                                         ; preds = %.lr.ph, %54
  %56 = phi i64 [ %51, %.lr.ph ], [ %55, %54 ]
  %57 = getelementptr i64, ptr %2, i64 %.0424471
  %58 = load i64, ptr %57, align 8, !tbaa !5
  %.not458.1 = icmp eq i64 %58, 0
  br i1 %.not458.1, label %61, label %59

59:                                               ; preds = %.lr.ph.1
  %60 = add nsw i64 %56, 1
  store i64 %60, ptr %11, align 8, !tbaa !5
  br label %61

61:                                               ; preds = %59, %.lr.ph.1
  %62 = phi i64 [ %56, %.lr.ph.1 ], [ %60, %59 ]
  %63 = add nuw i64 %.0424471, 2
  %niter.next.1 = add i64 %niter, 2
  %niter.ncmp.1 = icmp eq i64 %niter.next.1, %unroll_iter
  br i1 %niter.ncmp.1, label %.loopexit469.loopexit.unr-lcssa, label %.lr.ph, !llvm.loop !9

64:                                               ; preds = %15
  %65 = load i64, ptr %3, align 8, !tbaa !5
  store i64 %65, ptr %11, align 8, !tbaa !5
  br label %.loopexit469

.loopexit469.loopexit.unr-lcssa:                  ; preds = %61, %.lr.ph.preheader
  %.unr = phi i64 [ 0, %.lr.ph.preheader ], [ %62, %61 ]
  %.0424471.unr = phi i64 [ 1, %.lr.ph.preheader ], [ %63, %61 ]
  %lcmp.mod.not = icmp eq i64 %xtraiter, 0
  br i1 %lcmp.mod.not, label %.loopexit469, label %.lr.ph.epil

.lr.ph.epil:                                      ; preds = %.loopexit469.loopexit.unr-lcssa
  %66 = getelementptr inbounds i64, ptr %25, i64 %.0424471.unr
  %67 = load i64, ptr %66, align 8, !tbaa !5
  %.not458.epil = icmp eq i64 %67, 0
  br i1 %.not458.epil, label %.loopexit469, label %68

68:                                               ; preds = %.lr.ph.epil
  %69 = add nsw i64 %.unr, 1
  store i64 %69, ptr %11, align 8, !tbaa !5
  br label %.loopexit469

.loopexit469:                                     ; preds = %.loopexit469.loopexit.unr-lcssa, %68, %.lr.ph.epil, %48, %64
  store i64 0, ptr %14, align 8, !tbaa !5
  %or.cond = select i1 %41, i1 true, i1 %44
  br i1 %or.cond, label %70, label %.thread

70:                                               ; preds = %.loopexit469
  %71 = icmp ne i64 %45, 0
  %72 = or i64 %47, %46
  %73 = icmp ne i64 %72, 0
  %or.cond5 = select i1 %71, i1 true, i1 %73
  br i1 %or.cond5, label %74, label %.thread

74:                                               ; preds = %70
  %75 = load i64, ptr %3, align 8, !tbaa !5
  %76 = icmp slt i64 %75, 0
  br i1 %76, label %.thread, label %77

77:                                               ; preds = %74
  %78 = load i64, ptr %5, align 8, !tbaa !5
  %spec.select = tail call i64 @llvm.umax.i64(i64 %75, i64 1)
  %79 = icmp slt i64 %78, %spec.select
  br i1 %79, label %.thread, label %80

80:                                               ; preds = %77
  %81 = load i64, ptr %7, align 8, !tbaa !5
  %82 = icmp slt i64 %81, 1
  %83 = icmp ult i64 %81, %75
  %or.cond460 = and i1 %44, %83
  %or.cond462 = select i1 %82, i1 true, i1 %or.cond460
  br i1 %or.cond462, label %.thread, label %84

84:                                               ; preds = %80
  %85 = load i64, ptr %9, align 8, !tbaa !5
  %86 = icmp slt i64 %85, 1
  %87 = icmp ult i64 %85, %75
  %or.cond461 = and i1 %41, %87
  %or.cond463 = select i1 %86, i1 true, i1 %or.cond461
  br i1 %or.cond463, label %.thread, label %88

88:                                               ; preds = %84
  %89 = load i64, ptr %10, align 8, !tbaa !5
  %90 = load i64, ptr %11, align 8, !tbaa !5
  %91 = icmp slt i64 %89, %90
  br i1 %91, label %.thread, label %93

.thread:                                          ; preds = %88, %84, %80, %77, %74, %70, %.loopexit469
  %.sink = phi i64 [ -1, %.loopexit469 ], [ -2, %70 ], [ -4, %74 ], [ -6, %77 ], [ -8, %80 ], [ -10, %84 ], [ -11, %88 ]
  %.neg = phi i64 [ 1, %.loopexit469 ], [ 2, %70 ], [ 4, %74 ], [ 6, %77 ], [ 8, %80 ], [ 10, %84 ], [ 11, %88 ]
  store i64 %.sink, ptr %14, align 8, !tbaa !5
  store i64 %.neg, ptr %16, align 8, !tbaa !5
  %92 = call i32 @xerbla_(ptr noundef nonnull @.str.5, ptr noundef nonnull %16) #5
  br label %.loopexit466

93:                                               ; preds = %88
  %94 = icmp eq i64 %75, 0
  br i1 %94, label %.loopexit466, label %95

95:                                               ; preds = %93
  %96 = tail call double @dlamch_(ptr noundef nonnull @.str.6) #5
  store double %96, ptr %21, align 8, !tbaa !11
  %97 = fdiv double 1.000000e+00, %96
  store double %97, ptr %22, align 8, !tbaa !11
  %98 = call i32 @dlabad_(ptr noundef nonnull %21, ptr noundef nonnull %22) #5
  %99 = call double @dlamch_(ptr noundef nonnull @.str.7) #5
  %100 = load double, ptr %21, align 8, !tbaa !11
  %101 = load i64, ptr %3, align 8, !tbaa !5
  %102 = sitofp i64 %101 to double
  %103 = fdiv double %102, %99
  %104 = fmul double %100, %103
  %.not442472 = icmp slt i64 %101, 1
  br i1 %.not442472, label %.thread577, label %.lr.ph474

.thread577:                                       ; preds = %95
  store double 0.000000e+00, ptr %13, align 8, !tbaa !11
  br label %._crit_edge479

.lr.ph474:                                        ; preds = %95
  %105 = add i64 %26, 1
  %xtraiter615 = and i64 %101, 1
  %106 = icmp eq i64 %101, 1
  br i1 %106, label %.unr-lcssa, label %.lr.ph474.new

.lr.ph474.new:                                    ; preds = %.lr.ph474
  %unroll_iter618 = and i64 %101, 9223372036854775806
  %invariant.gep641 = getelementptr %struct.doublecomplex, ptr %35, i64 %101
  br label %107

107:                                              ; preds = %107, %.lr.ph474.new
  %.0426473 = phi i64 [ 1, %.lr.ph474.new ], [ %117, %107 ]
  %niter619 = phi i64 [ 0, %.lr.ph474.new ], [ %niter619.next.1, %107 ]
  %108 = mul i64 %.0426473, %105
  %109 = getelementptr inbounds %struct.doublecomplex, ptr %28, i64 %108
  %gep642 = getelementptr %struct.doublecomplex, ptr %invariant.gep641, i64 %.0426473
  %110 = load <2 x double>, ptr %109, align 8, !tbaa !11
  store <2 x double> %110, ptr %gep642, align 8, !tbaa !11
  %111 = add nuw i64 %.0426473, 1
  %112 = add nuw nsw i64 %111, %101
  %113 = mul i64 %111, %105
  %114 = getelementptr inbounds %struct.doublecomplex, ptr %28, i64 %113
  %115 = getelementptr inbounds %struct.doublecomplex, ptr %35, i64 %112
  %116 = load <2 x double>, ptr %114, align 8, !tbaa !11
  store <2 x double> %116, ptr %115, align 8, !tbaa !11
  %117 = add nuw i64 %.0426473, 2
  %niter619.next.1 = add nuw i64 %niter619, 2
  %niter619.ncmp.1 = icmp eq i64 %niter619.next.1, %unroll_iter618
  br i1 %niter619.ncmp.1, label %.unr-lcssa, label %107, !llvm.loop !13

.unr-lcssa:                                       ; preds = %107, %.lr.ph474
  %.lcssa614.ph = phi i64 [ poison, %.lr.ph474 ], [ %112, %107 ]
  %.0426473.unr = phi i64 [ 1, %.lr.ph474 ], [ %117, %107 ]
  %lcmp.mod616.not = icmp eq i64 %xtraiter615, 0
  br i1 %lcmp.mod616.not, label %123, label %.epilog-lcssa

.epilog-lcssa:                                    ; preds = %.unr-lcssa
  %118 = add nuw nsw i64 %.0426473.unr, %101
  %119 = mul i64 %.0426473.unr, %105
  %120 = getelementptr inbounds %struct.doublecomplex, ptr %28, i64 %119
  %121 = getelementptr inbounds %struct.doublecomplex, ptr %35, i64 %118
  %122 = load <2 x double>, ptr %120, align 8, !tbaa !11
  store <2 x double> %122, ptr %121, align 8, !tbaa !11
  br label %123

123:                                              ; preds = %.unr-lcssa, %.epilog-lcssa
  %.lcssa614 = phi i64 [ %.lcssa614.ph, %.unr-lcssa ], [ %118, %.epilog-lcssa ]
  store i64 %.lcssa614, ptr %17, align 8, !tbaa !5
  store double 0.000000e+00, ptr %13, align 8, !tbaa !11
  store i64 %101, ptr %16, align 8, !tbaa !5
  %invariant.gep = getelementptr i8, ptr %28, i64 16
  %.not443475 = icmp eq i64 %101, 1
  br i1 %.not443475, label %._crit_edge479, label %.lr.ph478

.lr.ph478:                                        ; preds = %123, %.lr.ph478
  %.1425476 = phi i64 [ %128, %.lr.ph478 ], [ 2, %123 ]
  %124 = add nsw i64 %.1425476, -1
  store i64 %124, ptr %17, align 8, !tbaa !5
  %125 = mul nsw i64 %.1425476, %26
  %gep = getelementptr %struct.doublecomplex, ptr %invariant.gep, i64 %125
  %126 = call double @f2c_dzasum(ptr noundef nonnull %17, ptr noundef %gep, ptr noundef nonnull @c__1) #5
  %127 = getelementptr inbounds double, ptr %36, i64 %.1425476
  store double %126, ptr %127, align 8, !tbaa !11
  %128 = add nuw nsw i64 %.1425476, 1
  %129 = load i64, ptr %16, align 8, !tbaa !5
  %.not443.not = icmp slt i64 %.1425476, %129
  br i1 %.not443.not, label %.lr.ph478, label %._crit_edge479, !llvm.loop !14

._crit_edge479:                                   ; preds = %.lr.ph478, %.thread577, %123
  br i1 %41, label %130, label %.loopexit468

130:                                              ; preds = %._crit_edge479
  %131 = load i64, ptr %11, align 8, !tbaa !5
  %132 = load i64, ptr %3, align 8, !tbaa !5
  %invariant.gep507 = getelementptr i8, ptr %34, i64 16
  store i64 %132, ptr %20, align 8, !tbaa !5
  %133 = icmp sgt i64 %132, 0
  br i1 %133, label %.lr.ph518, label %.loopexit468

.lr.ph518:                                        ; preds = %130
  %134 = add i64 %26, 1
  %135 = getelementptr inbounds i8, ptr %18, i64 8
  %.not455 = icmp eq i64 %46, 0
  %136 = mul i64 %32, -16
  %scevgep = getelementptr i8, ptr %8, i64 %136
  %scevgep588 = getelementptr i8, ptr %12, i64 -24
  %scevgep591 = getelementptr i8, ptr %4, i64 -24
  %scevgep593 = getelementptr i8, ptr %12, i64 8
  %scevgep594 = getelementptr i8, ptr %12, i64 -16
  %scevgep596 = getelementptr i8, ptr %4, i64 8
  %scevgep598 = getelementptr i8, ptr %4, i64 -16
  br label %137

137:                                              ; preds = %.lr.ph518, %290
  %.0419516 = phi i64 [ %131, %.lr.ph518 ], [ %.1, %290 ]
  %storemerge515 = phi i64 [ %132, %.lr.ph518 ], [ %.pre-phi, %290 ]
  br i1 %.not440, label %141, label %138

138:                                              ; preds = %137
  %139 = getelementptr inbounds i64, ptr %25, i64 %storemerge515
  %140 = load i64, ptr %139, align 8, !tbaa !5
  %.not452 = icmp eq i64 %140, 0
  br i1 %.not452, label %._crit_edge575, label %141

._crit_edge575:                                   ; preds = %138
  %.pre576 = add nsw i64 %storemerge515, -1
  br label %290

141:                                              ; preds = %138, %137
  %142 = mul i64 %storemerge515, %134
  store i64 %142, ptr %16, align 8, !tbaa !5
  %143 = getelementptr inbounds %struct.doublecomplex, ptr %28, i64 %142
  %144 = load double, ptr %143, align 8, !tbaa !15
  %145 = call double @d_imag(ptr noundef nonnull %143) #5
  %146 = insertelement <2 x double> poison, double %144, i64 0
  %147 = insertelement <2 x double> %146, double %145, i64 1
  %148 = fcmp oge <2 x double> %147, zeroinitializer
  %149 = fneg <2 x double> %147
  %150 = select <2 x i1> %148, <2 x double> %147, <2 x double> %149
  %shift = shufflevector <2 x double> %150, <2 x double> poison, <2 x i32> <i32 1, i32 poison>
  %151 = fadd <2 x double> %150, %shift
  %152 = extractelement <2 x double> %151, i64 0
  %153 = fmul double %99, %152
  %154 = fcmp oge double %153, %104
  %155 = select i1 %154, double %153, double %104
  store <2 x double> <double 1.000000e+00, double 0.000000e+00>, ptr %12, align 8, !tbaa !11
  %156 = load i64, ptr %20, align 8, !tbaa !5
  %157 = add nsw i64 %156, -1
  %.not453.not480 = icmp sgt i64 %156, 1
  br i1 %.not453.not480, label %.lr.ph483, label %.thread580

.thread580:                                       ; preds = %141
  store i64 %157, ptr %16, align 8, !tbaa !5
  br label %._crit_edge493.thread

.lr.ph483:                                        ; preds = %141
  %158 = mul nsw i64 %156, %26
  %invariant.gep485 = getelementptr %struct.doublecomplex, ptr %28, i64 %158
  %159 = add nsw i64 %156, -1
  %min.iters.check = icmp ult i64 %156, 9
  br i1 %min.iters.check, label %scalar.ph.preheader, label %vector.memcheck

vector.memcheck:                                  ; preds = %.lr.ph483
  %160 = shl i64 %156, 4
  %scevgep589 = getelementptr i8, ptr %scevgep588, i64 %160
  %161 = add i64 %160, -16
  %162 = mul i64 %26, %161
  %scevgep590 = getelementptr i8, ptr %4, i64 %162
  %163 = add i64 %162, %160
  %scevgep592 = getelementptr i8, ptr %scevgep591, i64 %163
  %scevgep595 = getelementptr i8, ptr %scevgep594, i64 %160
  %scevgep597 = getelementptr i8, ptr %scevgep596, i64 %162
  %scevgep599 = getelementptr i8, ptr %scevgep598, i64 %163
  %bound0 = icmp ugt ptr %scevgep592, %12
  %bound1 = icmp ult ptr %scevgep590, %scevgep589
  %found.conflict = and i1 %bound0, %bound1
  %bound0600 = icmp ult ptr %scevgep593, %scevgep599
  %bound1601 = icmp ult ptr %scevgep597, %scevgep595
  %found.conflict602 = and i1 %bound0600, %bound1601
  %conflict.rdx = or i1 %found.conflict, %found.conflict602
  br i1 %conflict.rdx, label %scalar.ph.preheader, label %vector.ph

vector.ph:                                        ; preds = %vector.memcheck
  %n.vec = and i64 %159, -2
  %ind.end = or i64 %159, 1
  br label %vector.body

vector.body:                                      ; preds = %vector.body, %vector.ph
  %index = phi i64 [ 0, %vector.ph ], [ %index.next, %vector.body ]
  %offset.idx = or disjoint i64 %index, 1
  %164 = getelementptr %struct.doublecomplex, ptr %invariant.gep485, i64 %offset.idx
  %wide.vec = load <4 x double>, ptr %164, align 8, !tbaa !11
  %strided.vec = shufflevector <4 x double> %wide.vec, <4 x double> poison, <2 x i32> <i32 0, i32 2>
  %strided.vec603 = shufflevector <4 x double> %wide.vec, <4 x double> poison, <2 x i32> <i32 1, i32 3>
  %165 = fneg <2 x double> %strided.vec
  %166 = fneg <2 x double> %strided.vec603
  %167 = getelementptr %struct.doublecomplex, ptr %12, i64 %index
  %interleaved.vec = shufflevector <2 x double> %165, <2 x double> %166, <4 x i32> <i32 0, i32 2, i32 1, i32 3>
  store <4 x double> %interleaved.vec, ptr %167, align 8, !tbaa !11
  %index.next = add nuw i64 %index, 2
  %168 = icmp eq i64 %index.next, %n.vec
  br i1 %168, label %middle.block, label %vector.body, !llvm.loop !17

middle.block:                                     ; preds = %vector.body
  %cmp.n = icmp eq i64 %159, %n.vec
  %169 = shufflevector <2 x double> %165, <2 x double> %166, <2 x i32> <i32 1, i32 3>
  br i1 %cmp.n, label %.loopexit604, label %scalar.ph.preheader

scalar.ph.preheader:                              ; preds = %middle.block, %vector.memcheck, %.lr.ph483
  %.0420481.ph = phi i64 [ 1, %vector.memcheck ], [ 1, %.lr.ph483 ], [ %ind.end, %middle.block ]
  %.neg630 = add i64 %.0420481.ph, 1
  %170 = and i64 %156, 1
  %lcmp.mod621.not.not = icmp eq i64 %170, 0
  br i1 %lcmp.mod621.not.not, label %scalar.ph.prol, label %scalar.ph.prol.loopexit

scalar.ph.prol:                                   ; preds = %scalar.ph.preheader
  %gep486.prol = getelementptr %struct.doublecomplex, ptr %invariant.gep485, i64 %.0420481.ph
  %171 = load <2 x double>, ptr %gep486.prol, align 8, !tbaa !11
  %172 = fneg <2 x double> %171
  %173 = getelementptr inbounds %struct.doublecomplex, ptr %35, i64 %.0420481.ph
  store <2 x double> %172, ptr %173, align 8, !tbaa !11
  %174 = add nuw nsw i64 %.0420481.ph, 1
  br label %scalar.ph.prol.loopexit

scalar.ph.prol.loopexit:                          ; preds = %scalar.ph.prol, %scalar.ph.preheader
  %.lcssa611.unr = phi <2 x double> [ poison, %scalar.ph.preheader ], [ %172, %scalar.ph.prol ]
  %.0420481.unr = phi i64 [ %.0420481.ph, %scalar.ph.preheader ], [ %174, %scalar.ph.prol ]
  %175 = icmp eq i64 %156, %.neg630
  br i1 %175, label %.loopexit604, label %scalar.ph

scalar.ph:                                        ; preds = %scalar.ph.prol.loopexit, %scalar.ph
  %.0420481 = phi i64 [ %183, %scalar.ph ], [ %.0420481.unr, %scalar.ph.prol.loopexit ]
  %gep486 = getelementptr %struct.doublecomplex, ptr %invariant.gep485, i64 %.0420481
  %176 = load <2 x double>, ptr %gep486, align 8, !tbaa !11
  %177 = fneg <2 x double> %176
  %178 = getelementptr inbounds %struct.doublecomplex, ptr %35, i64 %.0420481
  store <2 x double> %177, ptr %178, align 8, !tbaa !11
  %179 = add nuw nsw i64 %.0420481, 1
  %gep486.1 = getelementptr %struct.doublecomplex, ptr %invariant.gep485, i64 %179
  %180 = load <2 x double>, ptr %gep486.1, align 8, !tbaa !11
  %181 = fneg <2 x double> %180
  %182 = getelementptr %struct.doublecomplex, ptr %12, i64 %.0420481
  store <2 x double> %181, ptr %182, align 8, !tbaa !11
  %183 = add nuw nsw i64 %.0420481, 2
  %exitcond561.not.1 = icmp eq i64 %183, %156
  br i1 %exitcond561.not.1, label %.loopexit604, label %scalar.ph, !llvm.loop !20

.loopexit604:                                     ; preds = %scalar.ph.prol.loopexit, %scalar.ph, %middle.block
  %.0420481.lcssa = phi i64 [ %n.vec, %middle.block ], [ %.0420481.ph, %scalar.ph.prol.loopexit ], [ %179, %scalar.ph ]
  %184 = phi <2 x double> [ %169, %middle.block ], [ %.lcssa611.unr, %scalar.ph.prol.loopexit ], [ %181, %scalar.ph ]
  store i64 %.0420481.lcssa, ptr %17, align 8, !tbaa !5
  store <2 x double> %184, ptr %18, align 16, !tbaa !11
  store i64 %157, ptr %16, align 8, !tbaa !5
  br label %.lr.ph492

.lr.ph492:                                        ; preds = %.loopexit604, %205
  %.1421490 = phi i64 [ %206, %205 ], [ 1, %.loopexit604 ]
  %185 = mul i64 %.1421490, %134
  %186 = load i64, ptr %20, align 8, !tbaa !5
  %187 = mul i64 %186, %134
  %188 = getelementptr inbounds %struct.doublecomplex, ptr %28, i64 %185
  %189 = getelementptr inbounds %struct.doublecomplex, ptr %28, i64 %187
  %190 = load <2 x double>, ptr %188, align 8, !tbaa !11
  %191 = load <2 x double>, ptr %189, align 8, !tbaa !11
  %192 = fsub <2 x double> %190, %191
  store <2 x double> %192, ptr %18, align 16, !tbaa !11
  store <2 x double> %192, ptr %188, align 8, !tbaa !11
  store i64 %185, ptr %17, align 8, !tbaa !5
  %193 = extractelement <2 x double> %192, i64 0
  %194 = fcmp oge double %193, 0.000000e+00
  %195 = fneg double %193
  %196 = select i1 %194, double %193, double %195
  %197 = call double @d_imag(ptr noundef nonnull %188) #5
  %198 = fcmp oge double %197, 0.000000e+00
  %199 = fneg double %197
  %200 = select i1 %198, double %197, double %199
  %201 = fadd double %196, %200
  %202 = fcmp olt double %201, %155
  br i1 %202, label %203, label %205

203:                                              ; preds = %.lr.ph492
  %204 = getelementptr inbounds i8, ptr %188, i64 8
  store double %155, ptr %188, align 8, !tbaa !15
  store double 0.000000e+00, ptr %204, align 8, !tbaa !21
  br label %205

205:                                              ; preds = %.lr.ph492, %203
  %206 = add nuw nsw i64 %.1421490, 1
  %207 = load i64, ptr %16, align 8, !tbaa !5
  %.not454.not = icmp slt i64 %.1421490, %207
  br i1 %.not454.not, label %.lr.ph492, label %._crit_edge493, !llvm.loop !22

._crit_edge493:                                   ; preds = %205
  %.pre = load i64, ptr %20, align 8, !tbaa !5
  %208 = icmp sgt i64 %.pre, 1
  br i1 %208, label %209, label %._crit_edge493.thread

209:                                              ; preds = %._crit_edge493
  %210 = add nsw i64 %.pre, -1
  store i64 %210, ptr %16, align 8, !tbaa !5
  %211 = call i32 @zlatrs_(ptr noundef nonnull @.str.8, ptr noundef nonnull @.str.9, ptr noundef nonnull @.str.10, ptr noundef nonnull @.str.11, ptr noundef nonnull %16, ptr noundef nonnull %4, ptr noundef nonnull %5, ptr noundef nonnull %12, ptr noundef nonnull %23, ptr noundef nonnull %13, ptr noundef nonnull %14) #5
  %212 = load i64, ptr %20, align 8, !tbaa !5
  store i64 %212, ptr %16, align 8, !tbaa !5
  %213 = load double, ptr %23, align 8, !tbaa !11
  %214 = getelementptr inbounds %struct.doublecomplex, ptr %35, i64 %212
  store double %213, ptr %214, align 8, !tbaa !15
  %215 = getelementptr inbounds %struct.doublecomplex, ptr %35, i64 %212, i32 1
  store double 0.000000e+00, ptr %215, align 8, !tbaa !21
  br label %._crit_edge493.thread

._crit_edge493.thread:                            ; preds = %.thread580, %209, %._crit_edge493
  %216 = phi i64 [ %212, %209 ], [ %.pre, %._crit_edge493 ], [ %156, %.thread580 ]
  br i1 %.not455, label %217, label %241

217:                                              ; preds = %._crit_edge493.thread
  %218 = mul nsw i64 %.0419516, %32
  %gep514 = getelementptr %struct.doublecomplex, ptr %invariant.gep507, i64 %218
  %219 = call i32 @f2c_zcopy(ptr noundef nonnull %20, ptr noundef nonnull %12, ptr noundef nonnull @c__1, ptr noundef %gep514, ptr noundef nonnull @c__1) #5
  %220 = call i64 @f2c_izamax(ptr noundef nonnull %20, ptr noundef %gep514, ptr noundef nonnull @c__1) #5
  %221 = add nsw i64 %220, %218
  store i64 %221, ptr %16, align 8, !tbaa !5
  %222 = getelementptr inbounds %struct.doublecomplex, ptr %34, i64 %221
  %223 = load double, ptr %222, align 8, !tbaa !15
  %224 = call double @d_imag(ptr noundef nonnull %222) #5
  %225 = insertelement <2 x double> poison, double %223, i64 0
  %226 = insertelement <2 x double> %225, double %224, i64 1
  %227 = fcmp oge <2 x double> %226, zeroinitializer
  %228 = fneg <2 x double> %226
  %229 = select <2 x i1> %227, <2 x double> %226, <2 x double> %228
  %shift605 = shufflevector <2 x double> %229, <2 x double> poison, <2 x i32> <i32 1, i32 poison>
  %230 = fadd <2 x double> %229, %shift605
  %231 = extractelement <2 x double> %230, i64 0
  %232 = fdiv double 1.000000e+00, %231
  store double %232, ptr %24, align 8, !tbaa !11
  %233 = call i32 @f2c_zdscal(ptr noundef nonnull %20, ptr noundef nonnull %24, ptr noundef %gep514, ptr noundef nonnull @c__1) #5
  %234 = load i64, ptr %3, align 8, !tbaa !5
  %235 = load i64, ptr %20, align 8, !tbaa !5
  %.not456.not494 = icmp slt i64 %235, %234
  br i1 %.not456.not494, label %.lr.ph497.preheader, label %.loopexit467

.lr.ph497.preheader:                              ; preds = %217
  %236 = add i64 %235, %218
  %237 = shl i64 %236, 4
  %scevgep562 = getelementptr i8, ptr %scevgep, i64 %237
  %238 = sub i64 %234, %235
  %239 = shl i64 %238, 4
  call void @llvm.memset.p0.i64(ptr align 8 %scevgep562, i8 0, i64 %239, i1 false), !tbaa !11
  %240 = add i64 %234, %218
  store i64 %240, ptr %17, align 8, !tbaa !5
  br label %.loopexit467

241:                                              ; preds = %._crit_edge493.thread
  %242 = icmp sgt i64 %216, 1
  br i1 %242, label %243, label %248

243:                                              ; preds = %241
  %244 = add nsw i64 %216, -1
  store i64 %244, ptr %16, align 8, !tbaa !5
  %245 = load double, ptr %23, align 8, !tbaa !11
  store double %245, ptr %18, align 16, !tbaa !15
  store double 0.000000e+00, ptr %135, align 8, !tbaa !21
  %246 = mul nsw i64 %216, %32
  %gep508 = getelementptr %struct.doublecomplex, ptr %invariant.gep507, i64 %246
  %247 = call i32 @f2c_zgemv(ptr noundef nonnull @.str.12, ptr noundef nonnull %3, ptr noundef nonnull %16, ptr noundef nonnull @c_b2, ptr noundef %8, ptr noundef nonnull %9, ptr noundef nonnull %12, ptr noundef nonnull @c__1, ptr noundef nonnull %18, ptr noundef %gep508, ptr noundef nonnull @c__1) #5
  %.pre566 = load i64, ptr %20, align 8, !tbaa !5
  br label %248

248:                                              ; preds = %243, %241
  %249 = phi i64 [ %.pre566, %243 ], [ %216, %241 ]
  %250 = mul nsw i64 %249, %32
  %gep510 = getelementptr %struct.doublecomplex, ptr %invariant.gep507, i64 %250
  %251 = call i64 @f2c_izamax(ptr noundef nonnull %3, ptr noundef %gep510, ptr noundef nonnull @c__1) #5
  %252 = load i64, ptr %20, align 8, !tbaa !5
  %253 = mul nsw i64 %252, %32
  %254 = add nsw i64 %253, %251
  store i64 %254, ptr %16, align 8, !tbaa !5
  %255 = getelementptr inbounds %struct.doublecomplex, ptr %34, i64 %254
  %256 = load double, ptr %255, align 8, !tbaa !15
  %257 = getelementptr %struct.doublecomplex, ptr %34, i64 %251
  %258 = getelementptr %struct.doublecomplex, ptr %257, i64 %253
  %259 = call double @d_imag(ptr noundef %258) #5
  %260 = insertelement <2 x double> poison, double %256, i64 0
  %261 = insertelement <2 x double> %260, double %259, i64 1
  %262 = fcmp oge <2 x double> %261, zeroinitializer
  %263 = fneg <2 x double> %261
  %264 = select <2 x i1> %262, <2 x double> %261, <2 x double> %263
  %shift606 = shufflevector <2 x double> %264, <2 x double> poison, <2 x i32> <i32 1, i32 poison>
  %265 = fadd <2 x double> %264, %shift606
  %266 = extractelement <2 x double> %265, i64 0
  %267 = fdiv double 1.000000e+00, %266
  store double %267, ptr %24, align 8, !tbaa !11
  %268 = load i64, ptr %20, align 8, !tbaa !5
  %269 = mul nsw i64 %268, %32
  %gep512 = getelementptr %struct.doublecomplex, ptr %invariant.gep507, i64 %269
  %270 = call i32 @f2c_zdscal(ptr noundef nonnull %3, ptr noundef nonnull %24, ptr noundef %gep512, ptr noundef nonnull @c__1) #5
  %.pre567 = load i64, ptr %20, align 8, !tbaa !5
  br label %.loopexit467

.loopexit467:                                     ; preds = %217, %.lr.ph497.preheader, %248
  %271 = phi i64 [ %235, %217 ], [ %235, %.lr.ph497.preheader ], [ %.pre567, %248 ]
  %272 = add nsw i64 %271, -1
  store i64 %272, ptr %16, align 8, !tbaa !5
  %.not457.not499 = icmp sgt i64 %271, 1
  br i1 %.not457.not499, label %.lr.ph502, label %288

.lr.ph502:                                        ; preds = %.loopexit467
  %273 = load i64, ptr %3, align 8, !tbaa !5
  %invariant.gep504 = getelementptr %struct.doublecomplex, ptr %35, i64 %273
  %274 = add nsw i64 %271, -1
  %xtraiter623 = and i64 %274, 1
  %275 = icmp eq i64 %271, 2
  br i1 %275, label %._crit_edge503.unr-lcssa, label %.lr.ph502.new

.lr.ph502.new:                                    ; preds = %.lr.ph502
  %unroll_iter626 = and i64 %274, -2
  br label %276

276:                                              ; preds = %276, %.lr.ph502.new
  %.3423500 = phi i64 [ 1, %.lr.ph502.new ], [ %284, %276 ]
  %niter627 = phi i64 [ 0, %.lr.ph502.new ], [ %niter627.next.1, %276 ]
  %277 = mul i64 %.3423500, %134
  %gep505 = getelementptr %struct.doublecomplex, ptr %invariant.gep504, i64 %.3423500
  %278 = getelementptr inbounds %struct.doublecomplex, ptr %28, i64 %277
  %279 = load <2 x double>, ptr %gep505, align 8, !tbaa !11
  store <2 x double> %279, ptr %278, align 8, !tbaa !11
  %280 = add nuw nsw i64 %.3423500, 1
  %281 = mul i64 %280, %134
  %gep505.1 = getelementptr %struct.doublecomplex, ptr %invariant.gep504, i64 %280
  %282 = getelementptr inbounds %struct.doublecomplex, ptr %28, i64 %281
  %283 = load <2 x double>, ptr %gep505.1, align 8, !tbaa !11
  store <2 x double> %283, ptr %282, align 8, !tbaa !11
  %284 = add nuw nsw i64 %.3423500, 2
  %niter627.next.1 = add nuw i64 %niter627, 2
  %niter627.ncmp.1 = icmp eq i64 %niter627.next.1, %unroll_iter626
  br i1 %niter627.ncmp.1, label %._crit_edge503.unr-lcssa, label %276, !llvm.loop !23

._crit_edge503.unr-lcssa:                         ; preds = %276, %.lr.ph502
  %.lcssa613.ph = phi i64 [ poison, %.lr.ph502 ], [ %281, %276 ]
  %.3423500.unr = phi i64 [ 1, %.lr.ph502 ], [ %284, %276 ]
  %lcmp.mod624.not = icmp eq i64 %xtraiter623, 0
  br i1 %lcmp.mod624.not, label %._crit_edge503, label %._crit_edge503.epilog-lcssa

._crit_edge503.epilog-lcssa:                      ; preds = %._crit_edge503.unr-lcssa
  %285 = mul i64 %.3423500.unr, %134
  %gep505.epil = getelementptr %struct.doublecomplex, ptr %invariant.gep504, i64 %.3423500.unr
  %286 = getelementptr inbounds %struct.doublecomplex, ptr %28, i64 %285
  %287 = load <2 x double>, ptr %gep505.epil, align 8, !tbaa !11
  store <2 x double> %287, ptr %286, align 8, !tbaa !11
  br label %._crit_edge503

._crit_edge503:                                   ; preds = %._crit_edge503.unr-lcssa, %._crit_edge503.epilog-lcssa
  %.lcssa613 = phi i64 [ %.lcssa613.ph, %._crit_edge503.unr-lcssa ], [ %285, %._crit_edge503.epilog-lcssa ]
  store i64 %.lcssa613, ptr %17, align 8, !tbaa !5
  br label %288

288:                                              ; preds = %._crit_edge503, %.loopexit467
  %289 = add nsw i64 %.0419516, -1
  br label %290

290:                                              ; preds = %._crit_edge575, %288
  %.pre-phi = phi i64 [ %.pre576, %._crit_edge575 ], [ %272, %288 ]
  %291 = phi i64 [ %storemerge515, %._crit_edge575 ], [ %271, %288 ]
  %.1 = phi i64 [ %.0419516, %._crit_edge575 ], [ %289, %288 ]
  store i64 %.pre-phi, ptr %20, align 8, !tbaa !5
  %292 = icmp sgt i64 %291, 1
  br i1 %292, label %137, label %.loopexit468, !llvm.loop !24

.loopexit468:                                     ; preds = %290, %130, %._crit_edge479
  br i1 %44, label %293, label %.loopexit466

293:                                              ; preds = %.loopexit468
  %294 = load i64, ptr %3, align 8, !tbaa !5
  store i64 %294, ptr %16, align 8, !tbaa !5
  %invariant.gep543 = getelementptr i8, ptr %31, i64 16
  store i64 1, ptr %20, align 8, !tbaa !5
  %.not445551 = icmp slt i64 %294, 1
  br i1 %.not445551, label %.loopexit466, label %.lr.ph555

.lr.ph555:                                        ; preds = %293
  %295 = add i64 %26, 1
  %296 = getelementptr inbounds i8, ptr %18, i64 8
  %.not449 = icmp eq i64 %46, 0
  br label %297

297:                                              ; preds = %.lr.ph555, %459
  %298 = phi i64 [ %294, %.lr.ph555 ], [ %460, %459 ]
  %.2553 = phi i64 [ 1, %.lr.ph555 ], [ %.3, %459 ]
  %storemerge444552 = phi i64 [ 1, %.lr.ph555 ], [ %462, %459 ]
  br i1 %.not440, label %302, label %299

299:                                              ; preds = %297
  %300 = getelementptr inbounds i64, ptr %25, i64 %storemerge444552
  %301 = load i64, ptr %300, align 8, !tbaa !5
  %.not446 = icmp eq i64 %301, 0
  br i1 %.not446, label %459, label %302

302:                                              ; preds = %299, %297
  %303 = mul i64 %storemerge444552, %295
  store i64 %303, ptr %17, align 8, !tbaa !5
  %304 = getelementptr inbounds %struct.doublecomplex, ptr %28, i64 %303
  %305 = load double, ptr %304, align 8, !tbaa !15
  %306 = call double @d_imag(ptr noundef nonnull %304) #5
  %307 = insertelement <2 x double> poison, double %305, i64 0
  %308 = insertelement <2 x double> %307, double %306, i64 1
  %309 = fcmp oge <2 x double> %308, zeroinitializer
  %310 = fneg <2 x double> %308
  %311 = select <2 x i1> %309, <2 x double> %308, <2 x double> %310
  %shift607 = shufflevector <2 x double> %311, <2 x double> poison, <2 x i32> <i32 1, i32 poison>
  %312 = fadd <2 x double> %311, %shift607
  %313 = extractelement <2 x double> %312, i64 0
  %314 = fmul double %99, %313
  %315 = fcmp oge double %314, %104
  %316 = select i1 %315, double %314, double %104
  %317 = load i64, ptr %3, align 8, !tbaa !5
  %318 = getelementptr inbounds %struct.doublecomplex, ptr %35, i64 %317
  store <2 x double> <double 1.000000e+00, double 0.000000e+00>, ptr %318, align 8, !tbaa !11
  store i64 %317, ptr %17, align 8, !tbaa !5
  %319 = load i64, ptr %20, align 8, !tbaa !5
  %.not447.not519 = icmp slt i64 %319, %317
  br i1 %.not447.not519, label %.lr.ph522, label %._crit_edge523

.lr.ph522:                                        ; preds = %302, %.lr.ph522
  %.4.in520 = phi i64 [ %.4, %.lr.ph522 ], [ %319, %302 ]
  %.4 = add nsw i64 %.4.in520, 1
  %320 = load i64, ptr %20, align 8, !tbaa !5
  %321 = mul nsw i64 %.4, %26
  %322 = getelementptr %struct.doublecomplex, ptr %28, i64 %320
  %323 = getelementptr %struct.doublecomplex, ptr %322, i64 %321
  call void @d_cnjg(ptr noundef nonnull %19, ptr noundef %323) #5
  %324 = load <2 x double>, ptr %19, align 16, !tbaa !11
  %325 = fneg <2 x double> %324
  store <2 x double> %325, ptr %18, align 16, !tbaa !11
  %326 = getelementptr %struct.doublecomplex, ptr %12, i64 %.4.in520
  store <2 x double> %325, ptr %326, align 8, !tbaa !11
  %327 = load i64, ptr %17, align 8, !tbaa !5
  %.not447.not = icmp slt i64 %.4, %327
  br i1 %.not447.not, label %.lr.ph522, label %._crit_edge523.loopexit, !llvm.loop !25

._crit_edge523.loopexit:                          ; preds = %.lr.ph522
  %.pre568 = load i64, ptr %3, align 8, !tbaa !5
  %.pre569 = load i64, ptr %20, align 8, !tbaa !5
  br label %._crit_edge523

._crit_edge523:                                   ; preds = %._crit_edge523.loopexit, %302
  %328 = phi i64 [ %.pre569, %._crit_edge523.loopexit ], [ %319, %302 ]
  %329 = phi i64 [ %.pre568, %._crit_edge523.loopexit ], [ %317, %302 ]
  store i64 %329, ptr %17, align 8, !tbaa !5
  %.not448.not525 = icmp slt i64 %328, %329
  br i1 %.not448.not525, label %.lr.ph528, label %._crit_edge529

.lr.ph528:                                        ; preds = %._crit_edge523, %350
  %.5526.in = phi i64 [ %.5526, %350 ], [ %328, %._crit_edge523 ]
  %.5526 = add nsw i64 %.5526.in, 1
  %330 = mul i64 %.5526, %295
  %331 = load i64, ptr %20, align 8, !tbaa !5
  %332 = mul i64 %331, %295
  %333 = getelementptr inbounds %struct.doublecomplex, ptr %28, i64 %330
  %334 = getelementptr inbounds %struct.doublecomplex, ptr %28, i64 %332
  %335 = load <2 x double>, ptr %333, align 8, !tbaa !11
  %336 = load <2 x double>, ptr %334, align 8, !tbaa !11
  %337 = fsub <2 x double> %335, %336
  store <2 x double> %337, ptr %18, align 16, !tbaa !11
  store <2 x double> %337, ptr %333, align 8, !tbaa !11
  %338 = extractelement <2 x double> %337, i64 0
  %339 = fcmp oge double %338, 0.000000e+00
  %340 = fneg double %338
  %341 = select i1 %339, double %338, double %340
  %342 = call double @d_imag(ptr noundef nonnull %333) #5
  %343 = fcmp oge double %342, 0.000000e+00
  %344 = fneg double %342
  %345 = select i1 %343, double %342, double %344
  %346 = fadd double %341, %345
  %347 = fcmp olt double %346, %316
  br i1 %347, label %348, label %350

348:                                              ; preds = %.lr.ph528
  %349 = getelementptr inbounds i8, ptr %333, i64 8
  store double %316, ptr %333, align 8, !tbaa !15
  store double 0.000000e+00, ptr %349, align 8, !tbaa !21
  br label %350

350:                                              ; preds = %.lr.ph528, %348
  %351 = load i64, ptr %17, align 8, !tbaa !5
  %.not448.not = icmp slt i64 %.5526, %351
  br i1 %.not448.not, label %.lr.ph528, label %._crit_edge529.loopexit, !llvm.loop !26

._crit_edge529.loopexit:                          ; preds = %350
  %.pre570 = load i64, ptr %20, align 8, !tbaa !5
  %.pre571 = load i64, ptr %3, align 8, !tbaa !5
  br label %._crit_edge529

._crit_edge529:                                   ; preds = %._crit_edge529.loopexit, %._crit_edge523
  %352 = phi i64 [ %.pre571, %._crit_edge529.loopexit ], [ %329, %._crit_edge523 ]
  %353 = phi i64 [ %.pre570, %._crit_edge529.loopexit ], [ %328, %._crit_edge523 ]
  %354 = icmp slt i64 %353, %352
  br i1 %354, label %355, label %366

355:                                              ; preds = %._crit_edge529
  %356 = sub nsw i64 %352, %353
  store i64 %356, ptr %17, align 8, !tbaa !5
  %357 = add nsw i64 %353, 1
  %358 = mul i64 %357, %295
  %359 = getelementptr inbounds %struct.doublecomplex, ptr %28, i64 %358
  %360 = getelementptr %struct.doublecomplex, ptr %12, i64 %353
  %361 = call i32 @zlatrs_(ptr noundef nonnull @.str.8, ptr noundef nonnull @.str.13, ptr noundef nonnull @.str.10, ptr noundef nonnull @.str.11, ptr noundef nonnull %17, ptr noundef %359, ptr noundef nonnull %5, ptr noundef %360, ptr noundef nonnull %23, ptr noundef nonnull %13, ptr noundef nonnull %14) #5
  %362 = load i64, ptr %20, align 8, !tbaa !5
  store i64 %362, ptr %17, align 8, !tbaa !5
  %363 = load double, ptr %23, align 8, !tbaa !11
  %364 = getelementptr inbounds %struct.doublecomplex, ptr %35, i64 %362
  store double %363, ptr %364, align 8, !tbaa !15
  %365 = getelementptr inbounds %struct.doublecomplex, ptr %35, i64 %362, i32 1
  store double 0.000000e+00, ptr %365, align 8, !tbaa !21
  br label %366

366:                                              ; preds = %355, %._crit_edge529
  %367 = phi i64 [ %362, %355 ], [ %353, %._crit_edge529 ]
  %368 = load i64, ptr %3, align 8, !tbaa !5
  br i1 %.not449, label %369, label %412

369:                                              ; preds = %366
  %370 = add i64 %368, 1
  %371 = sub i64 %370, %367
  store i64 %371, ptr %17, align 8, !tbaa !5
  %372 = getelementptr inbounds %struct.doublecomplex, ptr %35, i64 %367
  %373 = mul nsw i64 %.2553, %29
  %374 = getelementptr %struct.doublecomplex, ptr %31, i64 %367
  %375 = getelementptr %struct.doublecomplex, ptr %374, i64 %373
  %376 = call i32 @f2c_zcopy(ptr noundef nonnull %17, ptr noundef nonnull %372, ptr noundef nonnull @c__1, ptr noundef %375, ptr noundef nonnull @c__1) #5
  %377 = load i64, ptr %3, align 8, !tbaa !5
  %378 = load i64, ptr %20, align 8, !tbaa !5
  %379 = add i64 %377, 1
  %380 = sub i64 %379, %378
  store i64 %380, ptr %17, align 8, !tbaa !5
  %381 = getelementptr %struct.doublecomplex, ptr %31, i64 %378
  %382 = getelementptr %struct.doublecomplex, ptr %381, i64 %373
  %383 = call i64 @f2c_izamax(ptr noundef nonnull %17, ptr noundef %382, ptr noundef nonnull @c__1) #5
  %384 = load i64, ptr %20, align 8, !tbaa !5
  %385 = add i64 %373, -1
  %386 = add i64 %385, %383
  %387 = add i64 %386, %384
  store i64 %387, ptr %17, align 8, !tbaa !5
  %388 = getelementptr inbounds %struct.doublecomplex, ptr %31, i64 %387
  %389 = load double, ptr %388, align 8, !tbaa !15
  %390 = call double @d_imag(ptr noundef nonnull %388) #5
  %391 = insertelement <2 x double> poison, double %389, i64 0
  %392 = insertelement <2 x double> %391, double %390, i64 1
  %393 = fcmp oge <2 x double> %392, zeroinitializer
  %394 = fneg <2 x double> %392
  %395 = select <2 x i1> %393, <2 x double> %392, <2 x double> %394
  %shift608 = shufflevector <2 x double> %395, <2 x double> poison, <2 x i32> <i32 1, i32 poison>
  %396 = fadd <2 x double> %395, %shift608
  %397 = extractelement <2 x double> %396, i64 0
  %398 = fdiv double 1.000000e+00, %397
  store double %398, ptr %24, align 8, !tbaa !11
  %399 = load i64, ptr %3, align 8, !tbaa !5
  %400 = load i64, ptr %20, align 8, !tbaa !5
  %401 = add i64 %399, 1
  %402 = sub i64 %401, %400
  store i64 %402, ptr %17, align 8, !tbaa !5
  %403 = getelementptr %struct.doublecomplex, ptr %31, i64 %400
  %404 = getelementptr %struct.doublecomplex, ptr %403, i64 %373
  %405 = call i32 @f2c_zdscal(ptr noundef nonnull %17, ptr noundef nonnull %24, ptr noundef %404, ptr noundef nonnull @c__1) #5
  %406 = load i64, ptr %20, align 8, !tbaa !5
  %.not450.not532 = icmp sgt i64 %406, 1
  br i1 %.not450.not532, label %.lr.ph535.preheader, label %.loopexit

.lr.ph535.preheader:                              ; preds = %369
  %407 = shl i64 %.2553, 4
  %408 = add i64 %407, -16
  %409 = mul i64 %29, %408
  %scevgep564 = getelementptr i8, ptr %6, i64 %409
  %410 = shl i64 %406, 4
  %411 = add i64 %410, -16
  call void @llvm.memset.p0.i64(ptr align 8 %scevgep564, i8 0, i64 %411, i1 false), !tbaa !11
  br label %.loopexit

412:                                              ; preds = %366
  %413 = icmp slt i64 %367, %368
  br i1 %413, label %414, label %422

414:                                              ; preds = %412
  %415 = sub nsw i64 %368, %367
  store i64 %415, ptr %17, align 8, !tbaa !5
  %416 = load double, ptr %23, align 8, !tbaa !11
  store double %416, ptr %18, align 16, !tbaa !15
  store double 0.000000e+00, ptr %296, align 8, !tbaa !21
  %417 = add nsw i64 %367, 1
  %418 = mul nsw i64 %417, %29
  %gep544 = getelementptr %struct.doublecomplex, ptr %invariant.gep543, i64 %418
  %419 = getelementptr %struct.doublecomplex, ptr %12, i64 %367
  %420 = mul nsw i64 %367, %29
  %gep546 = getelementptr %struct.doublecomplex, ptr %invariant.gep543, i64 %420
  %421 = call i32 @f2c_zgemv(ptr noundef nonnull @.str.12, ptr noundef nonnull %3, ptr noundef nonnull %17, ptr noundef nonnull @c_b2, ptr noundef %gep544, ptr noundef nonnull %7, ptr noundef %419, ptr noundef nonnull @c__1, ptr noundef nonnull %18, ptr noundef %gep546, ptr noundef nonnull @c__1) #5
  %.pre572 = load i64, ptr %20, align 8, !tbaa !5
  br label %422

422:                                              ; preds = %414, %412
  %423 = phi i64 [ %.pre572, %414 ], [ %367, %412 ]
  %424 = mul nsw i64 %423, %29
  %gep548 = getelementptr %struct.doublecomplex, ptr %invariant.gep543, i64 %424
  %425 = call i64 @f2c_izamax(ptr noundef nonnull %3, ptr noundef %gep548, ptr noundef nonnull @c__1) #5
  %426 = load i64, ptr %20, align 8, !tbaa !5
  %427 = mul nsw i64 %426, %29
  %428 = add nsw i64 %427, %425
  store i64 %428, ptr %17, align 8, !tbaa !5
  %429 = getelementptr inbounds %struct.doublecomplex, ptr %31, i64 %428
  %430 = load double, ptr %429, align 8, !tbaa !15
  %431 = getelementptr %struct.doublecomplex, ptr %31, i64 %425
  %432 = getelementptr %struct.doublecomplex, ptr %431, i64 %427
  %433 = call double @d_imag(ptr noundef %432) #5
  %434 = insertelement <2 x double> poison, double %430, i64 0
  %435 = insertelement <2 x double> %434, double %433, i64 1
  %436 = fcmp oge <2 x double> %435, zeroinitializer
  %437 = fneg <2 x double> %435
  %438 = select <2 x i1> %436, <2 x double> %435, <2 x double> %437
  %shift609 = shufflevector <2 x double> %438, <2 x double> poison, <2 x i32> <i32 1, i32 poison>
  %439 = fadd <2 x double> %438, %shift609
  %440 = extractelement <2 x double> %439, i64 0
  %441 = fdiv double 1.000000e+00, %440
  store double %441, ptr %24, align 8, !tbaa !11
  %442 = load i64, ptr %20, align 8, !tbaa !5
  %443 = mul nsw i64 %442, %29
  %gep550 = getelementptr %struct.doublecomplex, ptr %invariant.gep543, i64 %443
  %444 = call i32 @f2c_zdscal(ptr noundef nonnull %3, ptr noundef nonnull %24, ptr noundef %gep550, ptr noundef nonnull @c__1) #5
  %.pre573 = load i64, ptr %20, align 8, !tbaa !5
  br label %.loopexit

.loopexit:                                        ; preds = %.lr.ph535.preheader, %369, %422
  %445 = phi i64 [ %406, %.lr.ph535.preheader ], [ %406, %369 ], [ %.pre573, %422 ]
  %446 = load i64, ptr %3, align 8, !tbaa !5
  store i64 %446, ptr %17, align 8, !tbaa !5
  %invariant.gep536 = getelementptr %struct.doublecomplex, ptr %12, i64 %446
  %.not451.not538 = icmp slt i64 %445, %446
  br i1 %.not451.not538, label %.lr.ph541.preheader, label %._crit_edge542

.lr.ph541.preheader:                              ; preds = %.loopexit
  %447 = sub i64 %446, %445
  %.neg631 = add i64 %445, 1
  %xtraiter628 = and i64 %447, 1
  %lcmp.mod629.not = icmp eq i64 %xtraiter628, 0
  br i1 %lcmp.mod629.not, label %.lr.ph541.prol.loopexit, label %.lr.ph541.prol

.lr.ph541.prol:                                   ; preds = %.lr.ph541.preheader
  %.7.prol = add nsw i64 %445, 1
  %448 = mul i64 %.7.prol, %295
  %gep537.prol = getelementptr %struct.doublecomplex, ptr %invariant.gep536, i64 %445
  %449 = getelementptr inbounds %struct.doublecomplex, ptr %28, i64 %448
  %450 = load <2 x double>, ptr %gep537.prol, align 8, !tbaa !11
  store <2 x double> %450, ptr %449, align 8, !tbaa !11
  br label %.lr.ph541.prol.loopexit

.lr.ph541.prol.loopexit:                          ; preds = %.lr.ph541.prol, %.lr.ph541.preheader
  %.7.in539.unr = phi i64 [ %445, %.lr.ph541.preheader ], [ %.7.prol, %.lr.ph541.prol ]
  %451 = icmp eq i64 %446, %.neg631
  br i1 %451, label %._crit_edge542, label %.lr.ph541

.lr.ph541:                                        ; preds = %.lr.ph541.prol.loopexit, %.lr.ph541
  %.7.in539 = phi i64 [ %.7.1, %.lr.ph541 ], [ %.7.in539.unr, %.lr.ph541.prol.loopexit ]
  %.7 = add nsw i64 %.7.in539, 1
  %452 = mul i64 %.7, %295
  %gep537 = getelementptr %struct.doublecomplex, ptr %invariant.gep536, i64 %.7.in539
  %453 = getelementptr inbounds %struct.doublecomplex, ptr %28, i64 %452
  %454 = load <2 x double>, ptr %gep537, align 8, !tbaa !11
  store <2 x double> %454, ptr %453, align 8, !tbaa !11
  %.7.1 = add nsw i64 %.7.in539, 2
  %455 = mul i64 %.7.1, %295
  %gep537.1 = getelementptr %struct.doublecomplex, ptr %invariant.gep536, i64 %.7
  %456 = getelementptr inbounds %struct.doublecomplex, ptr %28, i64 %455
  %457 = load <2 x double>, ptr %gep537.1, align 8, !tbaa !11
  store <2 x double> %457, ptr %456, align 8, !tbaa !11
  %exitcond565.not.1 = icmp eq i64 %.7.1, %446
  br i1 %exitcond565.not.1, label %._crit_edge542, label %.lr.ph541, !llvm.loop !27

._crit_edge542:                                   ; preds = %.lr.ph541.prol.loopexit, %.lr.ph541, %.loopexit
  %458 = add nsw i64 %.2553, 1
  %.pre574 = load i64, ptr %16, align 8, !tbaa !5
  br label %459

459:                                              ; preds = %._crit_edge542, %299
  %460 = phi i64 [ %.pre574, %._crit_edge542 ], [ %298, %299 ]
  %461 = phi i64 [ %445, %._crit_edge542 ], [ %storemerge444552, %299 ]
  %.3 = phi i64 [ %458, %._crit_edge542 ], [ %.2553, %299 ]
  %462 = add nsw i64 %461, 1
  store i64 %462, ptr %20, align 8, !tbaa !5
  %.not445.not = icmp slt i64 %461, %460
  br i1 %.not445.not, label %297, label %.loopexit466, !llvm.loop !28

.loopexit466:                                     ; preds = %459, %293, %.loopexit468, %93, %.thread
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %24) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %23) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %22) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %21) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %20) #5
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %19) #5
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %18) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %17) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %16) #5
  ret i32 0
}

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

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

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

declare double @dlamch_(ptr noundef) local_unnamed_addr #2

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

declare double @f2c_dzasum(ptr noundef, ptr noundef, ptr noundef) local_unnamed_addr #2

declare double @d_imag(ptr noundef) local_unnamed_addr #2

declare i32 @zlatrs_(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 @f2c_zcopy(ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef) local_unnamed_addr #2

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

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

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

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

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

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

; Function Attrs: nocallback nofree nounwind willreturn memory(argmem: write)
declare void @llvm.memset.p0.i64(ptr nocapture writeonly, i8, i64, i1 immarg) #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 = { nocallback nofree nosync nounwind speculatable willreturn memory(none) }
attributes #4 = { nocallback nofree nounwind willreturn memory(argmem: write) }
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 = !{!"long", !7, i64 0}
!7 = !{!"omnipotent char", !8, i64 0}
!8 = !{!"Simple C/C++ TBAA"}
!9 = distinct !{!9, !10}
!10 = !{!"llvm.loop.mustprogress"}
!11 = !{!12, !12, i64 0}
!12 = !{!"double", !7, i64 0}
!13 = distinct !{!13, !10}
!14 = distinct !{!14, !10}
!15 = !{!16, !12, i64 0}
!16 = !{!"", !12, i64 0, !12, i64 8}
!17 = distinct !{!17, !10, !18, !19}
!18 = !{!"llvm.loop.isvectorized", i32 1}
!19 = !{!"llvm.loop.unroll.runtime.disable"}
!20 = distinct !{!20, !10, !18}
!21 = !{!16, !12, i64 8}
!22 = distinct !{!22, !10}
!23 = distinct !{!23, !10}
!24 = distinct !{!24, !10}
!25 = distinct !{!25, !10}
!26 = distinct !{!26, !10}
!27 = distinct !{!27, !10}
!28 = distinct !{!28, !10}


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