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

; 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 }

@c__10 = external hidden global i64, align 8
@.str = external hidden unnamed_addr constant [7 x i8], align 1
@.str.1 = external hidden unnamed_addr constant [2 x i8], align 1
@c__1 = external hidden global i64, align 8
@c__2 = external hidden global i64, align 8
@c__3 = external hidden global i64, align 8
@c__4 = external hidden global i64, align 8
@.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 [2 x i8], align 1
@.str.6 = external hidden unnamed_addr constant [2 x i8], align 1
@.str.7 = external hidden unnamed_addr constant [7 x i8], align 1
@c_n1 = external hidden global i64, align 8
@.str.8 = external hidden unnamed_addr constant [7 x i8], align 1
@.str.9 = external hidden unnamed_addr constant [13 x i8], align 1
@.str.10 = external hidden unnamed_addr constant [10 x i8], align 1
@.str.11 = external hidden unnamed_addr constant [2 x i8], align 1

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

147:                                              ; preds = %23
  %148 = load ptr, ptr %44, align 8, !tbaa !5
  %149 = load i64, ptr %148, align 8, !tbaa !9
  %150 = icmp eq i64 %149, -1
  br i1 %150, label %155, label %151

151:                                              ; preds = %147
  %152 = load ptr, ptr %46, align 8, !tbaa !5
  %153 = load i64, ptr %152, align 8, !tbaa !9
  %154 = icmp eq i64 %153, -1
  br label %155

155:                                              ; preds = %151, %147, %23
  %156 = phi i1 [ true, %147 ], [ true, %23 ], [ %154, %151 ]
  %157 = zext i1 %156 to i32
  %158 = sext i32 %157 to i64
  store i64 %158, ptr %103, align 8, !tbaa !9
  store i64 1, ptr %52, align 8, !tbaa !9
  %159 = load ptr, ptr %28, align 8, !tbaa !5
  %160 = load i64, ptr %159, align 8, !tbaa !9
  %161 = mul nsw i64 %160, 24
  store i64 %161, ptr %53, align 8, !tbaa !9
  %162 = load i64, ptr %52, align 8, !tbaa !9
  %163 = load i64, ptr %53, align 8, !tbaa !9
  %164 = icmp sge i64 %162, %163
  br i1 %164, label %165, label %167

165:                                              ; preds = %155
  %166 = load i64, ptr %52, align 8, !tbaa !9
  br label %169

167:                                              ; preds = %155
  %168 = load i64, ptr %53, align 8, !tbaa !9
  br label %169

169:                                              ; preds = %167, %165
  %170 = phi i64 [ %166, %165 ], [ %168, %167 ]
  store i64 %170, ptr %98, align 8, !tbaa !9
  store i64 1, ptr %52, align 8, !tbaa !9
  %171 = load ptr, ptr %28, align 8, !tbaa !5
  %172 = load i64, ptr %171, align 8, !tbaa !9
  %173 = mul nsw i64 %172, 10
  store i64 %173, ptr %53, align 8, !tbaa !9
  %174 = load i64, ptr %52, align 8, !tbaa !9
  %175 = load i64, ptr %53, align 8, !tbaa !9
  %176 = icmp sge i64 %174, %175
  br i1 %176, label %177, label %179

177:                                              ; preds = %169
  %178 = load i64, ptr %52, align 8, !tbaa !9
  br label %181

179:                                              ; preds = %169
  %180 = load i64, ptr %53, align 8, !tbaa !9
  br label %181

181:                                              ; preds = %179, %177
  %182 = phi i64 [ %178, %177 ], [ %180, %179 ]
  store i64 %182, ptr %96, align 8, !tbaa !9
  store i64 1, ptr %52, align 8, !tbaa !9
  %183 = load ptr, ptr %28, align 8, !tbaa !5
  %184 = load i64, ptr %183, align 8, !tbaa !9
  %185 = shl i64 %184, 1
  store i64 %185, ptr %53, align 8, !tbaa !9
  %186 = load i64, ptr %52, align 8, !tbaa !9
  %187 = load i64, ptr %53, align 8, !tbaa !9
  %188 = icmp sge i64 %186, %187
  br i1 %188, label %189, label %191

189:                                              ; preds = %181
  %190 = load i64, ptr %52, align 8, !tbaa !9
  br label %193

191:                                              ; preds = %181
  %192 = load i64, ptr %53, align 8, !tbaa !9
  br label %193

193:                                              ; preds = %191, %189
  %194 = phi i64 [ %190, %189 ], [ %192, %191 ]
  store i64 %194, ptr %76, align 8, !tbaa !9
  %195 = load ptr, ptr %47, align 8, !tbaa !5
  store i64 0, ptr %195, align 8, !tbaa !9
  %196 = load i64, ptr %78, align 8, !tbaa !9
  %197 = icmp ne i64 %196, 0
  br i1 %197, label %204, label %198

198:                                              ; preds = %193
  %199 = load ptr, ptr %25, align 8, !tbaa !5
  %200 = call i64 @lsame_(ptr noundef %199, ptr noundef @.str.1)
  %201 = icmp ne i64 %200, 0
  br i1 %201, label %204, label %202

202:                                              ; preds = %198
  %203 = load ptr, ptr %47, align 8, !tbaa !5
  store i64 -1, ptr %203, align 8, !tbaa !9
  br label %316

204:                                              ; preds = %198, %193
  %205 = load i64, ptr %79, align 8, !tbaa !9
  %206 = icmp ne i64 %205, 0
  br i1 %206, label %215, label %207

207:                                              ; preds = %204
  %208 = load i64, ptr %87, align 8, !tbaa !9
  %209 = icmp ne i64 %208, 0
  br i1 %209, label %215, label %210

210:                                              ; preds = %207
  %211 = load i64, ptr %80, align 8, !tbaa !9
  %212 = icmp ne i64 %211, 0
  br i1 %212, label %215, label %213

213:                                              ; preds = %210
  %214 = load ptr, ptr %47, align 8, !tbaa !5
  store i64 -2, ptr %214, align 8, !tbaa !9
  br label %315

215:                                              ; preds = %210, %207, %204
  %216 = load i64, ptr %77, align 8, !tbaa !9
  %217 = icmp ne i64 %216, 0
  br i1 %217, label %224, label %218

218:                                              ; preds = %215
  %219 = load ptr, ptr %27, align 8, !tbaa !5
  %220 = call i64 @lsame_(ptr noundef %219, ptr noundef @.str.6)
  %221 = icmp ne i64 %220, 0
  br i1 %221, label %224, label %222

222:                                              ; preds = %218
  %223 = load ptr, ptr %47, align 8, !tbaa !5
  store i64 -3, ptr %223, align 8, !tbaa !9
  br label %314

224:                                              ; preds = %218, %215
  %225 = load ptr, ptr %28, align 8, !tbaa !5
  %226 = load i64, ptr %225, align 8, !tbaa !9
  %227 = icmp slt i64 %226, 0
  br i1 %227, label %228, label %230

228:                                              ; preds = %224
  %229 = load ptr, ptr %47, align 8, !tbaa !5
  store i64 -4, ptr %229, align 8, !tbaa !9
  br label %313

230:                                              ; preds = %224
  %231 = load ptr, ptr %30, align 8, !tbaa !5
  %232 = load i64, ptr %231, align 8, !tbaa !9
  %233 = load ptr, ptr %28, align 8, !tbaa !5
  %234 = load i64, ptr %233, align 8, !tbaa !9
  %235 = icmp sge i64 1, %234
  br i1 %235, label %236, label %237

236:                                              ; preds = %230
  br label %240

237:                                              ; preds = %230
  %238 = load ptr, ptr %28, align 8, !tbaa !5
  %239 = load i64, ptr %238, align 8, !tbaa !9
  br label %240

240:                                              ; preds = %237, %236
  %241 = phi i64 [ 1, %236 ], [ %239, %237 ]
  %242 = icmp slt i64 %232, %241
  br i1 %242, label %243, label %245

243:                                              ; preds = %240
  %244 = load ptr, ptr %47, align 8, !tbaa !5
  store i64 -6, ptr %244, align 8, !tbaa !9
  br label %312

245:                                              ; preds = %240
  %246 = load i64, ptr %87, align 8, !tbaa !9
  %247 = icmp ne i64 %246, 0
  br i1 %247, label %248, label %261

248:                                              ; preds = %245
  %249 = load ptr, ptr %28, align 8, !tbaa !5
  %250 = load i64, ptr %249, align 8, !tbaa !9
  %251 = icmp sgt i64 %250, 0
  br i1 %251, label %252, label %260

252:                                              ; preds = %248
  %253 = load ptr, ptr %32, align 8, !tbaa !5
  %254 = load double, ptr %253, align 8, !tbaa !11
  %255 = load ptr, ptr %31, align 8, !tbaa !5
  %256 = load double, ptr %255, align 8, !tbaa !11
  %257 = fcmp ole double %254, %256
  br i1 %257, label %258, label %260

258:                                              ; preds = %252
  %259 = load ptr, ptr %47, align 8, !tbaa !5
  store i64 -8, ptr %259, align 8, !tbaa !9
  br label %260

260:                                              ; preds = %258, %252, %248
  br label %311

261:                                              ; preds = %245
  %262 = load i64, ptr %80, align 8, !tbaa !9
  %263 = icmp ne i64 %262, 0
  br i1 %263, label %264, label %310

264:                                              ; preds = %261
  %265 = load ptr, ptr %33, align 8, !tbaa !5
  %266 = load i64, ptr %265, align 8, !tbaa !9
  %267 = icmp slt i64 %266, 1
  br i1 %267, label %281, label %268

268:                                              ; preds = %264
  %269 = load ptr, ptr %33, align 8, !tbaa !5
  %270 = load i64, ptr %269, align 8, !tbaa !9
  %271 = load ptr, ptr %28, align 8, !tbaa !5
  %272 = load i64, ptr %271, align 8, !tbaa !9
  %273 = icmp sge i64 1, %272
  br i1 %273, label %274, label %275

274:                                              ; preds = %268
  br label %278

275:                                              ; preds = %268
  %276 = load ptr, ptr %28, align 8, !tbaa !5
  %277 = load i64, ptr %276, align 8, !tbaa !9
  br label %278

278:                                              ; preds = %275, %274
  %279 = phi i64 [ 1, %274 ], [ %277, %275 ]
  %280 = icmp sgt i64 %270, %279
  br i1 %280, label %281, label %283

281:                                              ; preds = %278, %264
  %282 = load ptr, ptr %47, align 8, !tbaa !5
  store i64 -9, ptr %282, align 8, !tbaa !9
  br label %309

283:                                              ; preds = %278
  %284 = load ptr, ptr %34, align 8, !tbaa !5
  %285 = load i64, ptr %284, align 8, !tbaa !9
  %286 = load ptr, ptr %28, align 8, !tbaa !5
  %287 = load i64, ptr %286, align 8, !tbaa !9
  %288 = load ptr, ptr %33, align 8, !tbaa !5
  %289 = load i64, ptr %288, align 8, !tbaa !9
  %290 = icmp sle i64 %287, %289
  br i1 %290, label %291, label %294

291:                                              ; preds = %283
  %292 = load ptr, ptr %28, align 8, !tbaa !5
  %293 = load i64, ptr %292, align 8, !tbaa !9
  br label %297

294:                                              ; preds = %283
  %295 = load ptr, ptr %33, align 8, !tbaa !5
  %296 = load i64, ptr %295, align 8, !tbaa !9
  br label %297

297:                                              ; preds = %294, %291
  %298 = phi i64 [ %293, %291 ], [ %296, %294 ]
  %299 = icmp slt i64 %285, %298
  br i1 %299, label %306, label %300

300:                                              ; preds = %297
  %301 = load ptr, ptr %34, align 8, !tbaa !5
  %302 = load i64, ptr %301, align 8, !tbaa !9
  %303 = load ptr, ptr %28, align 8, !tbaa !5
  %304 = load i64, ptr %303, align 8, !tbaa !9
  %305 = icmp sgt i64 %302, %304
  br i1 %305, label %306, label %308

306:                                              ; preds = %300, %297
  %307 = load ptr, ptr %47, align 8, !tbaa !5
  store i64 -10, ptr %307, align 8, !tbaa !9
  br label %308

308:                                              ; preds = %306, %300
  br label %309

309:                                              ; preds = %308, %281
  br label %310

310:                                              ; preds = %309, %261
  br label %311

311:                                              ; preds = %310, %260
  br label %312

312:                                              ; preds = %311, %243
  br label %313

313:                                              ; preds = %312, %228
  br label %314

314:                                              ; preds = %313, %222
  br label %315

315:                                              ; preds = %314, %213
  br label %316

316:                                              ; preds = %315, %202
  %317 = load ptr, ptr %47, align 8, !tbaa !5
  %318 = load i64, ptr %317, align 8, !tbaa !9
  %319 = icmp eq i64 %318, 0
  br i1 %319, label %320, label %336

320:                                              ; preds = %316
  %321 = load ptr, ptr %39, align 8, !tbaa !5
  %322 = load i64, ptr %321, align 8, !tbaa !9
  %323 = icmp slt i64 %322, 1
  br i1 %323, label %333, label %324

324:                                              ; preds = %320
  %325 = load i64, ptr %78, align 8, !tbaa !9
  %326 = icmp ne i64 %325, 0
  br i1 %326, label %327, label %335

327:                                              ; preds = %324
  %328 = load ptr, ptr %39, align 8, !tbaa !5
  %329 = load i64, ptr %328, align 8, !tbaa !9
  %330 = load ptr, ptr %28, align 8, !tbaa !5
  %331 = load i64, ptr %330, align 8, !tbaa !9
  %332 = icmp slt i64 %329, %331
  br i1 %332, label %333, label %335

333:                                              ; preds = %327, %320
  %334 = load ptr, ptr %47, align 8, !tbaa !5
  store i64 -15, ptr %334, align 8, !tbaa !9
  br label %335

335:                                              ; preds = %333, %327, %324
  br label %336

336:                                              ; preds = %335, %316
  %337 = load ptr, ptr %47, align 8, !tbaa !5
  %338 = load i64, ptr %337, align 8, !tbaa !9
  %339 = icmp eq i64 %338, 0
  br i1 %339, label %340, label %418

340:                                              ; preds = %336
  %341 = load ptr, ptr %27, align 8, !tbaa !5
  %342 = load ptr, ptr %28, align 8, !tbaa !5
  %343 = call i64 @ilaenv_(ptr noundef @c__1, ptr noundef @.str.7, ptr noundef %341, ptr noundef %342, ptr noundef @c_n1, ptr noundef @c_n1, ptr noundef @c_n1)
  store i64 %343, ptr %58, align 8, !tbaa !9
  %344 = load i64, ptr %58, align 8, !tbaa !9
  store i64 %344, ptr %52, align 8, !tbaa !9
  %345 = load ptr, ptr %27, align 8, !tbaa !5
  %346 = load ptr, ptr %28, align 8, !tbaa !5
  %347 = call i64 @ilaenv_(ptr noundef @c__1, ptr noundef @.str.8, ptr noundef %345, ptr noundef %346, ptr noundef @c_n1, ptr noundef @c_n1, ptr noundef @c_n1)
  store i64 %347, ptr %53, align 8, !tbaa !9
  %348 = load i64, ptr %52, align 8, !tbaa !9
  %349 = load i64, ptr %53, align 8, !tbaa !9
  %350 = icmp sge i64 %348, %349
  br i1 %350, label %351, label %353

351:                                              ; preds = %340
  %352 = load i64, ptr %52, align 8, !tbaa !9
  br label %355

353:                                              ; preds = %340
  %354 = load i64, ptr %53, align 8, !tbaa !9
  br label %355

355:                                              ; preds = %353, %351
  %356 = phi i64 [ %352, %351 ], [ %354, %353 ]
  store i64 %356, ptr %58, align 8, !tbaa !9
  %357 = load i64, ptr %58, align 8, !tbaa !9
  %358 = add nsw i64 %357, 1
  %359 = load ptr, ptr %28, align 8, !tbaa !5
  %360 = load i64, ptr %359, align 8, !tbaa !9
  %361 = mul nsw i64 %358, %360
  store i64 %361, ptr %52, align 8, !tbaa !9
  %362 = load i64, ptr %52, align 8, !tbaa !9
  %363 = load i64, ptr %76, align 8, !tbaa !9
  %364 = icmp sge i64 %362, %363
  br i1 %364, label %365, label %367

365:                                              ; preds = %355
  %366 = load i64, ptr %52, align 8, !tbaa !9
  br label %369

367:                                              ; preds = %355
  %368 = load i64, ptr %76, align 8, !tbaa !9
  br label %369

369:                                              ; preds = %367, %365
  %370 = phi i64 [ %366, %365 ], [ %368, %367 ]
  store i64 %370, ptr %104, align 8, !tbaa !9
  %371 = load i64, ptr %104, align 8, !tbaa !9
  %372 = sitofp i64 %371 to double
  %373 = load ptr, ptr %41, align 8, !tbaa !5
  %374 = getelementptr inbounds %struct.doublecomplex, ptr %373, i64 1
  %375 = getelementptr inbounds %struct.doublecomplex, ptr %374, i32 0, i32 0
  store double %372, ptr %375, align 8, !tbaa !13
  %376 = load ptr, ptr %41, align 8, !tbaa !5
  %377 = getelementptr inbounds %struct.doublecomplex, ptr %376, i64 1
  %378 = getelementptr inbounds %struct.doublecomplex, ptr %377, i32 0, i32 1
  store double 0.000000e+00, ptr %378, align 8, !tbaa !15
  %379 = load i64, ptr %98, align 8, !tbaa !9
  %380 = sitofp i64 %379 to double
  %381 = load ptr, ptr %43, align 8, !tbaa !5
  %382 = getelementptr inbounds double, ptr %381, i64 1
  store double %380, ptr %382, align 8, !tbaa !11
  %383 = load i64, ptr %96, align 8, !tbaa !9
  %384 = load ptr, ptr %45, align 8, !tbaa !5
  %385 = getelementptr inbounds i64, ptr %384, i64 1
  store i64 %383, ptr %385, align 8, !tbaa !9
  %386 = load ptr, ptr %42, align 8, !tbaa !5
  %387 = load i64, ptr %386, align 8, !tbaa !9
  %388 = load i64, ptr %76, align 8, !tbaa !9
  %389 = icmp slt i64 %387, %388
  br i1 %389, label %390, label %395

390:                                              ; preds = %369
  %391 = load i64, ptr %103, align 8, !tbaa !9
  %392 = icmp ne i64 %391, 0
  br i1 %392, label %395, label %393

393:                                              ; preds = %390
  %394 = load ptr, ptr %47, align 8, !tbaa !5
  store i64 -18, ptr %394, align 8, !tbaa !9
  br label %417

395:                                              ; preds = %390, %369
  %396 = load ptr, ptr %44, align 8, !tbaa !5
  %397 = load i64, ptr %396, align 8, !tbaa !9
  %398 = load i64, ptr %98, align 8, !tbaa !9
  %399 = icmp slt i64 %397, %398
  br i1 %399, label %400, label %405

400:                                              ; preds = %395
  %401 = load i64, ptr %103, align 8, !tbaa !9
  %402 = icmp ne i64 %401, 0
  br i1 %402, label %405, label %403

403:                                              ; preds = %400
  %404 = load ptr, ptr %47, align 8, !tbaa !5
  store i64 -20, ptr %404, align 8, !tbaa !9
  br label %416

405:                                              ; preds = %400, %395
  %406 = load ptr, ptr %46, align 8, !tbaa !5
  %407 = load i64, ptr %406, align 8, !tbaa !9
  %408 = load i64, ptr %96, align 8, !tbaa !9
  %409 = icmp slt i64 %407, %408
  br i1 %409, label %410, label %415

410:                                              ; preds = %405
  %411 = load i64, ptr %103, align 8, !tbaa !9
  %412 = icmp ne i64 %411, 0
  br i1 %412, label %415, label %413

413:                                              ; preds = %410
  %414 = load ptr, ptr %47, align 8, !tbaa !5
  store i64 -22, ptr %414, align 8, !tbaa !9
  br label %415

415:                                              ; preds = %413, %410, %405
  br label %416

416:                                              ; preds = %415, %403
  br label %417

417:                                              ; preds = %416, %393
  br label %418

418:                                              ; preds = %417, %336
  %419 = load ptr, ptr %47, align 8, !tbaa !5
  %420 = load i64, ptr %419, align 8, !tbaa !9
  %421 = icmp ne i64 %420, 0
  br i1 %421, label %422, label %427

422:                                              ; preds = %418
  %423 = load ptr, ptr %47, align 8, !tbaa !5
  %424 = load i64, ptr %423, align 8, !tbaa !9
  %425 = sub nsw i64 0, %424
  store i64 %425, ptr %52, align 8, !tbaa !9
  %426 = call i32 @xerbla_(ptr noundef @.str, ptr noundef %52)
  store i32 0, ptr %24, align 4
  store i32 1, ptr %106, align 4
  br label %1105

427:                                              ; preds = %418
  %428 = load i64, ptr %103, align 8, !tbaa !9
  %429 = icmp ne i64 %428, 0
  br i1 %429, label %430, label %431

430:                                              ; preds = %427
  store i32 0, ptr %24, align 4
  store i32 1, ptr %106, align 4
  br label %1105

431:                                              ; preds = %427
  br label %432

432:                                              ; preds = %431
  %433 = load ptr, ptr %36, align 8, !tbaa !5
  store i64 0, ptr %433, align 8, !tbaa !9
  %434 = load ptr, ptr %28, align 8, !tbaa !5
  %435 = load i64, ptr %434, align 8, !tbaa !9
  %436 = icmp eq i64 %435, 0
  br i1 %436, label %437, label %444

437:                                              ; preds = %432
  %438 = load ptr, ptr %41, align 8, !tbaa !5
  %439 = getelementptr inbounds %struct.doublecomplex, ptr %438, i64 1
  %440 = getelementptr inbounds %struct.doublecomplex, ptr %439, i32 0, i32 0
  store double 1.000000e+00, ptr %440, align 8, !tbaa !13
  %441 = load ptr, ptr %41, align 8, !tbaa !5
  %442 = getelementptr inbounds %struct.doublecomplex, ptr %441, i64 1
  %443 = getelementptr inbounds %struct.doublecomplex, ptr %442, i32 0, i32 1
  store double 0.000000e+00, ptr %443, align 8, !tbaa !15
  store i32 0, ptr %24, align 4
  store i32 1, ptr %106, align 4
  br label %1105

444:                                              ; preds = %432
  %445 = load ptr, ptr %28, align 8, !tbaa !5
  %446 = load i64, ptr %445, align 8, !tbaa !9
  %447 = icmp eq i64 %446, 1
  br i1 %447, label %448, label %520

448:                                              ; preds = %444
  %449 = load ptr, ptr %41, align 8, !tbaa !5
  %450 = getelementptr inbounds %struct.doublecomplex, ptr %449, i64 1
  %451 = getelementptr inbounds %struct.doublecomplex, ptr %450, i32 0, i32 0
  store double 2.000000e+00, ptr %451, align 8, !tbaa !13
  %452 = load ptr, ptr %41, align 8, !tbaa !5
  %453 = getelementptr inbounds %struct.doublecomplex, ptr %452, i64 1
  %454 = getelementptr inbounds %struct.doublecomplex, ptr %453, i32 0, i32 1
  store double 0.000000e+00, ptr %454, align 8, !tbaa !15
  %455 = load i64, ptr %79, align 8, !tbaa !9
  %456 = icmp ne i64 %455, 0
  br i1 %456, label %460, label %457

457:                                              ; preds = %448
  %458 = load i64, ptr %80, align 8, !tbaa !9
  %459 = icmp ne i64 %458, 0
  br i1 %459, label %460, label %471

460:                                              ; preds = %457, %448
  %461 = load ptr, ptr %36, align 8, !tbaa !5
  store i64 1, ptr %461, align 8, !tbaa !9
  %462 = load i64, ptr %48, align 8, !tbaa !9
  %463 = add nsw i64 %462, 1
  store i64 %463, ptr %52, align 8, !tbaa !9
  %464 = load ptr, ptr %29, align 8, !tbaa !5
  %465 = load i64, ptr %52, align 8, !tbaa !9
  %466 = getelementptr inbounds %struct.doublecomplex, ptr %464, i64 %465
  %467 = getelementptr inbounds %struct.doublecomplex, ptr %466, i32 0, i32 0
  %468 = load double, ptr %467, align 8, !tbaa !13
  %469 = load ptr, ptr %37, align 8, !tbaa !5
  %470 = getelementptr inbounds double, ptr %469, i64 1
  store double %468, ptr %470, align 8, !tbaa !11
  br label %505

471:                                              ; preds = %457
  %472 = load i64, ptr %48, align 8, !tbaa !9
  %473 = add nsw i64 %472, 1
  store i64 %473, ptr %52, align 8, !tbaa !9
  %474 = load i64, ptr %48, align 8, !tbaa !9
  %475 = add nsw i64 %474, 1
  store i64 %475, ptr %53, align 8, !tbaa !9
  %476 = load ptr, ptr %31, align 8, !tbaa !5
  %477 = load double, ptr %476, align 8, !tbaa !11
  %478 = load ptr, ptr %29, align 8, !tbaa !5
  %479 = load i64, ptr %52, align 8, !tbaa !9
  %480 = getelementptr inbounds %struct.doublecomplex, ptr %478, i64 %479
  %481 = getelementptr inbounds %struct.doublecomplex, ptr %480, i32 0, i32 0
  %482 = load double, ptr %481, align 8, !tbaa !13
  %483 = fcmp olt double %477, %482
  br i1 %483, label %484, label %504

484:                                              ; preds = %471
  %485 = load ptr, ptr %32, align 8, !tbaa !5
  %486 = load double, ptr %485, align 8, !tbaa !11
  %487 = load ptr, ptr %29, align 8, !tbaa !5
  %488 = load i64, ptr %53, align 8, !tbaa !9
  %489 = getelementptr inbounds %struct.doublecomplex, ptr %487, i64 %488
  %490 = getelementptr inbounds %struct.doublecomplex, ptr %489, i32 0, i32 0
  %491 = load double, ptr %490, align 8, !tbaa !13
  %492 = fcmp oge double %486, %491
  br i1 %492, label %493, label %504

493:                                              ; preds = %484
  %494 = load ptr, ptr %36, align 8, !tbaa !5
  store i64 1, ptr %494, align 8, !tbaa !9
  %495 = load i64, ptr %48, align 8, !tbaa !9
  %496 = add nsw i64 %495, 1
  store i64 %496, ptr %52, align 8, !tbaa !9
  %497 = load ptr, ptr %29, align 8, !tbaa !5
  %498 = load i64, ptr %52, align 8, !tbaa !9
  %499 = getelementptr inbounds %struct.doublecomplex, ptr %497, i64 %498
  %500 = getelementptr inbounds %struct.doublecomplex, ptr %499, i32 0, i32 0
  %501 = load double, ptr %500, align 8, !tbaa !13
  %502 = load ptr, ptr %37, align 8, !tbaa !5
  %503 = getelementptr inbounds double, ptr %502, i64 1
  store double %501, ptr %503, align 8, !tbaa !11
  br label %504

504:                                              ; preds = %493, %484, %471
  br label %505

505:                                              ; preds = %504, %460
  %506 = load i64, ptr %78, align 8, !tbaa !9
  %507 = icmp ne i64 %506, 0
  br i1 %507, label %508, label %519

508:                                              ; preds = %505
  %509 = load i64, ptr %50, align 8, !tbaa !9
  %510 = add nsw i64 %509, 1
  store i64 %510, ptr %52, align 8, !tbaa !9
  %511 = load ptr, ptr %38, align 8, !tbaa !5
  %512 = load i64, ptr %52, align 8, !tbaa !9
  %513 = getelementptr inbounds %struct.doublecomplex, ptr %511, i64 %512
  %514 = getelementptr inbounds %struct.doublecomplex, ptr %513, i32 0, i32 0
  store double 1.000000e+00, ptr %514, align 8, !tbaa !13
  %515 = load ptr, ptr %38, align 8, !tbaa !5
  %516 = load i64, ptr %52, align 8, !tbaa !9
  %517 = getelementptr inbounds %struct.doublecomplex, ptr %515, i64 %516
  %518 = getelementptr inbounds %struct.doublecomplex, ptr %517, i32 0, i32 1
  store double 0.000000e+00, ptr %518, align 8, !tbaa !15
  br label %519

519:                                              ; preds = %508, %505
  store i32 0, ptr %24, align 4
  store i32 1, ptr %106, align 4
  br label %1105

520:                                              ; preds = %444
  %521 = call double @dlamch_(ptr noundef @.str.9)
  store double %521, ptr %88, align 8, !tbaa !11
  %522 = call double @dlamch_(ptr noundef @.str.10)
  store double %522, ptr %60, align 8, !tbaa !11
  %523 = load double, ptr %88, align 8, !tbaa !11
  %524 = load double, ptr %60, align 8, !tbaa !11
  %525 = fdiv double %523, %524
  store double %525, ptr %102, align 8, !tbaa !11
  %526 = load double, ptr %102, align 8, !tbaa !11
  %527 = fdiv double 1.000000e+00, %526
  store double %527, ptr %90, align 8, !tbaa !11
  %528 = load double, ptr %102, align 8, !tbaa !11
  %529 = call double @sqrt(double noundef %528) #4
  store double %529, ptr %66, align 8, !tbaa !11
  %530 = load double, ptr %90, align 8, !tbaa !11
  %531 = call double @sqrt(double noundef %530) #4
  store double %531, ptr %54, align 8, !tbaa !11
  %532 = load double, ptr %88, align 8, !tbaa !11
  %533 = call double @sqrt(double noundef %532) #4
  %534 = call double @sqrt(double noundef %533) #4
  %535 = fdiv double 1.000000e+00, %534
  store double %535, ptr %55, align 8, !tbaa !11
  %536 = load double, ptr %54, align 8, !tbaa !11
  %537 = load double, ptr %55, align 8, !tbaa !11
  %538 = fcmp ole double %536, %537
  br i1 %538, label %539, label %541

539:                                              ; preds = %520
  %540 = load double, ptr %54, align 8, !tbaa !11
  br label %543

541:                                              ; preds = %520
  %542 = load double, ptr %55, align 8, !tbaa !11
  br label %543

543:                                              ; preds = %541, %539
  %544 = phi double [ %540, %539 ], [ %542, %541 ]
  store double %544, ptr %67, align 8, !tbaa !11
  store i64 0, ptr %81, align 8, !tbaa !9
  %545 = load ptr, ptr %35, align 8, !tbaa !5
  %546 = load double, ptr %545, align 8, !tbaa !11
  store double %546, ptr %89, align 8, !tbaa !11
  %547 = load i64, ptr %87, align 8, !tbaa !9
  %548 = icmp ne i64 %547, 0
  br i1 %548, label %549, label %554

549:                                              ; preds = %543
  %550 = load ptr, ptr %31, align 8, !tbaa !5
  %551 = load double, ptr %550, align 8, !tbaa !11
  store double %551, ptr %61, align 8, !tbaa !11
  %552 = load ptr, ptr %32, align 8, !tbaa !5
  %553 = load double, ptr %552, align 8, !tbaa !11
  store double %553, ptr %62, align 8, !tbaa !11
  br label %554

554:                                              ; preds = %549, %543
  %555 = load ptr, ptr %27, align 8, !tbaa !5
  %556 = load ptr, ptr %28, align 8, !tbaa !5
  %557 = load ptr, ptr %29, align 8, !tbaa !5
  %558 = load i64, ptr %49, align 8, !tbaa !9
  %559 = getelementptr inbounds %struct.doublecomplex, ptr %557, i64 %558
  %560 = load ptr, ptr %30, align 8, !tbaa !5
  %561 = load ptr, ptr %43, align 8, !tbaa !5
  %562 = getelementptr inbounds double, ptr %561, i64 1
  %563 = call double @zlansy_(ptr noundef @.str.11, ptr noundef %555, ptr noundef %556, ptr noundef %559, ptr noundef %560, ptr noundef %562)
  store double %563, ptr %64, align 8, !tbaa !11
  %564 = load double, ptr %64, align 8, !tbaa !11
  %565 = fcmp ogt double %564, 0.000000e+00
  br i1 %565, label %566, label %574

566:                                              ; preds = %554
  %567 = load double, ptr %64, align 8, !tbaa !11
  %568 = load double, ptr %66, align 8, !tbaa !11
  %569 = fcmp olt double %567, %568
  br i1 %569, label %570, label %574

570:                                              ; preds = %566
  store i64 1, ptr %81, align 8, !tbaa !9
  %571 = load double, ptr %66, align 8, !tbaa !11
  %572 = load double, ptr %64, align 8, !tbaa !11
  %573 = fdiv double %571, %572
  store double %573, ptr %72, align 8, !tbaa !11
  br label %583

574:                                              ; preds = %566, %554
  %575 = load double, ptr %64, align 8, !tbaa !11
  %576 = load double, ptr %67, align 8, !tbaa !11
  %577 = fcmp ogt double %575, %576
  br i1 %577, label %578, label %582

578:                                              ; preds = %574
  store i64 1, ptr %81, align 8, !tbaa !9
  %579 = load double, ptr %67, align 8, !tbaa !11
  %580 = load double, ptr %64, align 8, !tbaa !11
  %581 = fdiv double %579, %580
  store double %581, ptr %72, align 8, !tbaa !11
  br label %582

582:                                              ; preds = %578, %574
  br label %583

583:                                              ; preds = %582, %570
  %584 = load i64, ptr %81, align 8, !tbaa !9
  %585 = icmp eq i64 %584, 1
  br i1 %585, label %586, label %655

586:                                              ; preds = %583
  %587 = load i64, ptr %77, align 8, !tbaa !9
  %588 = icmp ne i64 %587, 0
  br i1 %588, label %589, label %614

589:                                              ; preds = %586
  %590 = load ptr, ptr %28, align 8, !tbaa !5
  %591 = load i64, ptr %590, align 8, !tbaa !9
  store i64 %591, ptr %52, align 8, !tbaa !9
  store i64 1, ptr %57, align 8, !tbaa !9
  br label %592

592:                                              ; preds = %610, %589
  %593 = load i64, ptr %57, align 8, !tbaa !9
  %594 = load i64, ptr %52, align 8, !tbaa !9
  %595 = icmp sle i64 %593, %594
  br i1 %595, label %596, label %613

596:                                              ; preds = %592
  %597 = load ptr, ptr %28, align 8, !tbaa !5
  %598 = load i64, ptr %597, align 8, !tbaa !9
  %599 = load i64, ptr %57, align 8, !tbaa !9
  %600 = sub nsw i64 %598, %599
  %601 = add nsw i64 %600, 1
  store i64 %601, ptr %53, align 8, !tbaa !9
  %602 = load ptr, ptr %29, align 8, !tbaa !5
  %603 = load i64, ptr %57, align 8, !tbaa !9
  %604 = load i64, ptr %57, align 8, !tbaa !9
  %605 = load i64, ptr %48, align 8, !tbaa !9
  %606 = mul nsw i64 %604, %605
  %607 = add nsw i64 %603, %606
  %608 = getelementptr inbounds %struct.doublecomplex, ptr %602, i64 %607
  %609 = call i32 @f2c_zdscal(ptr noundef %53, ptr noundef %72, ptr noundef %608, ptr noundef @c__1)
  br label %610

610:                                              ; preds = %596
  %611 = load i64, ptr %57, align 8, !tbaa !9
  %612 = add nsw i64 %611, 1
  store i64 %612, ptr %57, align 8, !tbaa !9
  br label %592, !llvm.loop !16

613:                                              ; preds = %592
  br label %633

614:                                              ; preds = %586
  %615 = load ptr, ptr %28, align 8, !tbaa !5
  %616 = load i64, ptr %615, align 8, !tbaa !9
  store i64 %616, ptr %52, align 8, !tbaa !9
  store i64 1, ptr %57, align 8, !tbaa !9
  br label %617

617:                                              ; preds = %629, %614
  %618 = load i64, ptr %57, align 8, !tbaa !9
  %619 = load i64, ptr %52, align 8, !tbaa !9
  %620 = icmp sle i64 %618, %619
  br i1 %620, label %621, label %632

621:                                              ; preds = %617
  %622 = load ptr, ptr %29, align 8, !tbaa !5
  %623 = load i64, ptr %57, align 8, !tbaa !9
  %624 = load i64, ptr %48, align 8, !tbaa !9
  %625 = mul nsw i64 %623, %624
  %626 = add nsw i64 %625, 1
  %627 = getelementptr inbounds %struct.doublecomplex, ptr %622, i64 %626
  %628 = call i32 @f2c_zdscal(ptr noundef %57, ptr noundef %72, ptr noundef %627, ptr noundef @c__1)
  br label %629

629:                                              ; preds = %621
  %630 = load i64, ptr %57, align 8, !tbaa !9
  %631 = add nsw i64 %630, 1
  store i64 %631, ptr %57, align 8, !tbaa !9
  br label %617, !llvm.loop !18

632:                                              ; preds = %617
  br label %633

633:                                              ; preds = %632, %613
  %634 = load ptr, ptr %35, align 8, !tbaa !5
  %635 = load double, ptr %634, align 8, !tbaa !11
  %636 = fcmp ogt double %635, 0.000000e+00
  br i1 %636, label %637, label %642

637:                                              ; preds = %633
  %638 = load ptr, ptr %35, align 8, !tbaa !5
  %639 = load double, ptr %638, align 8, !tbaa !11
  %640 = load double, ptr %72, align 8, !tbaa !11
  %641 = fmul double %639, %640
  store double %641, ptr %89, align 8, !tbaa !11
  br label %642

642:                                              ; preds = %637, %633
  %643 = load i64, ptr %87, align 8, !tbaa !9
  %644 = icmp ne i64 %643, 0
  br i1 %644, label %645, label %654

645:                                              ; preds = %642
  %646 = load ptr, ptr %31, align 8, !tbaa !5
  %647 = load double, ptr %646, align 8, !tbaa !11
  %648 = load double, ptr %72, align 8, !tbaa !11
  %649 = fmul double %647, %648
  store double %649, ptr %61, align 8, !tbaa !11
  %650 = load ptr, ptr %32, align 8, !tbaa !5
  %651 = load double, ptr %650, align 8, !tbaa !11
  %652 = load double, ptr %72, align 8, !tbaa !11
  %653 = fmul double %651, %652
  store double %653, ptr %62, align 8, !tbaa !11
  br label %654

654:                                              ; preds = %645, %642
  br label %655

655:                                              ; preds = %654, %583
  store i64 1, ptr %91, align 8, !tbaa !9
  %656 = load i64, ptr %91, align 8, !tbaa !9
  %657 = load ptr, ptr %28, align 8, !tbaa !5
  %658 = load i64, ptr %657, align 8, !tbaa !9
  %659 = add nsw i64 %656, %658
  store i64 %659, ptr %75, align 8, !tbaa !9
  %660 = load ptr, ptr %42, align 8, !tbaa !5
  %661 = load i64, ptr %660, align 8, !tbaa !9
  %662 = load i64, ptr %75, align 8, !tbaa !9
  %663 = sub nsw i64 %661, %662
  %664 = add nsw i64 %663, 1
  store i64 %664, ptr %100, align 8, !tbaa !9
  store i64 1, ptr %70, align 8, !tbaa !9
  %665 = load i64, ptr %70, align 8, !tbaa !9
  %666 = load ptr, ptr %28, align 8, !tbaa !5
  %667 = load i64, ptr %666, align 8, !tbaa !9
  %668 = add nsw i64 %665, %667
  store i64 %668, ptr %71, align 8, !tbaa !9
  %669 = load i64, ptr %71, align 8, !tbaa !9
  %670 = load ptr, ptr %28, align 8, !tbaa !5
  %671 = load i64, ptr %670, align 8, !tbaa !9
  %672 = add nsw i64 %669, %671
  store i64 %672, ptr %84, align 8, !tbaa !9
  %673 = load i64, ptr %84, align 8, !tbaa !9
  %674 = load ptr, ptr %28, align 8, !tbaa !5
  %675 = load i64, ptr %674, align 8, !tbaa !9
  %676 = add nsw i64 %673, %675
  store i64 %676, ptr %86, align 8, !tbaa !9
  %677 = load i64, ptr %86, align 8, !tbaa !9
  %678 = load ptr, ptr %28, align 8, !tbaa !5
  %679 = load i64, ptr %678, align 8, !tbaa !9
  %680 = add nsw i64 %677, %679
  store i64 %680, ptr %95, align 8, !tbaa !9
  %681 = load ptr, ptr %44, align 8, !tbaa !5
  %682 = load i64, ptr %681, align 8, !tbaa !9
  %683 = load i64, ptr %95, align 8, !tbaa !9
  %684 = sub nsw i64 %682, %683
  %685 = add nsw i64 %684, 1
  store i64 %685, ptr %105, align 8, !tbaa !9
  store i64 1, ptr %83, align 8, !tbaa !9
  %686 = load i64, ptr %83, align 8, !tbaa !9
  %687 = load ptr, ptr %28, align 8, !tbaa !5
  %688 = load i64, ptr %687, align 8, !tbaa !9
  %689 = add nsw i64 %686, %688
  store i64 %689, ptr %92, align 8, !tbaa !9
  %690 = load i64, ptr %92, align 8, !tbaa !9
  %691 = load ptr, ptr %28, align 8, !tbaa !5
  %692 = load i64, ptr %691, align 8, !tbaa !9
  %693 = add nsw i64 %690, %692
  store i64 %693, ptr %85, align 8, !tbaa !9
  %694 = load i64, ptr %92, align 8, !tbaa !9
  %695 = load ptr, ptr %28, align 8, !tbaa !5
  %696 = load i64, ptr %695, align 8, !tbaa !9
  %697 = add nsw i64 %694, %696
  store i64 %697, ptr %93, align 8, !tbaa !9
  %698 = load ptr, ptr %27, align 8, !tbaa !5
  %699 = load ptr, ptr %28, align 8, !tbaa !5
  %700 = load ptr, ptr %29, align 8, !tbaa !5
  %701 = load i64, ptr %49, align 8, !tbaa !9
  %702 = getelementptr inbounds %struct.doublecomplex, ptr %700, i64 %701
  %703 = load ptr, ptr %30, align 8, !tbaa !5
  %704 = load ptr, ptr %43, align 8, !tbaa !5
  %705 = load i64, ptr %70, align 8, !tbaa !9
  %706 = getelementptr inbounds double, ptr %704, i64 %705
  %707 = load ptr, ptr %43, align 8, !tbaa !5
  %708 = load i64, ptr %71, align 8, !tbaa !9
  %709 = getelementptr inbounds double, ptr %707, i64 %708
  %710 = load ptr, ptr %41, align 8, !tbaa !5
  %711 = load i64, ptr %91, align 8, !tbaa !9
  %712 = getelementptr inbounds %struct.doublecomplex, ptr %710, i64 %711
  %713 = load ptr, ptr %41, align 8, !tbaa !5
  %714 = load i64, ptr %75, align 8, !tbaa !9
  %715 = getelementptr inbounds %struct.doublecomplex, ptr %713, i64 %714
  %716 = call i32 @zhetrd_(ptr noundef %698, ptr noundef %699, ptr noundef %702, ptr noundef %703, ptr noundef %706, ptr noundef %709, ptr noundef %712, ptr noundef %715, ptr noundef %100, ptr noundef %73)
  store i64 0, ptr %68, align 8, !tbaa !9
  %717 = load i64, ptr %80, align 8, !tbaa !9
  %718 = icmp ne i64 %717, 0
  br i1 %718, label %719, label %731

719:                                              ; preds = %655
  %720 = load ptr, ptr %33, align 8, !tbaa !5
  %721 = load i64, ptr %720, align 8, !tbaa !9
  %722 = icmp eq i64 %721, 1
  br i1 %722, label %723, label %730

723:                                              ; preds = %719
  %724 = load ptr, ptr %34, align 8, !tbaa !5
  %725 = load i64, ptr %724, align 8, !tbaa !9
  %726 = load ptr, ptr %28, align 8, !tbaa !5
  %727 = load i64, ptr %726, align 8, !tbaa !9
  %728 = icmp eq i64 %725, %727
  br i1 %728, label %729, label %730

729:                                              ; preds = %723
  store i64 1, ptr %68, align 8, !tbaa !9
  br label %730

730:                                              ; preds = %729, %723, %719
  br label %731

731:                                              ; preds = %730, %655
  %732 = load i64, ptr %79, align 8, !tbaa !9
  %733 = icmp ne i64 %732, 0
  br i1 %733, label %737, label %734

734:                                              ; preds = %731
  %735 = load i64, ptr %68, align 8, !tbaa !9
  %736 = icmp ne i64 %735, 0
  br i1 %736, label %737, label %872

737:                                              ; preds = %734, %731
  %738 = load i64, ptr %82, align 8, !tbaa !9
  %739 = icmp eq i64 %738, 1
  br i1 %739, label %740, label %872

740:                                              ; preds = %737
  %741 = load i64, ptr %78, align 8, !tbaa !9
  %742 = icmp ne i64 %741, 0
  br i1 %742, label %769, label %743

743:                                              ; preds = %740
  %744 = load ptr, ptr %28, align 8, !tbaa !5
  %745 = load ptr, ptr %43, align 8, !tbaa !5
  %746 = load i64, ptr %70, align 8, !tbaa !9
  %747 = getelementptr inbounds double, ptr %745, i64 %746
  %748 = load ptr, ptr %37, align 8, !tbaa !5
  %749 = getelementptr inbounds double, ptr %748, i64 1
  %750 = call i32 @f2c_dcopy(ptr noundef %744, ptr noundef %747, ptr noundef @c__1, ptr noundef %749, ptr noundef @c__1)
  %751 = load ptr, ptr %28, align 8, !tbaa !5
  %752 = load i64, ptr %751, align 8, !tbaa !9
  %753 = sub nsw i64 %752, 1
  store i64 %753, ptr %52, align 8, !tbaa !9
  %754 = load ptr, ptr %43, align 8, !tbaa !5
  %755 = load i64, ptr %71, align 8, !tbaa !9
  %756 = getelementptr inbounds double, ptr %754, i64 %755
  %757 = load ptr, ptr %43, align 8, !tbaa !5
  %758 = load i64, ptr %86, align 8, !tbaa !9
  %759 = getelementptr inbounds double, ptr %757, i64 %758
  %760 = call i32 @f2c_dcopy(ptr noundef %52, ptr noundef %756, ptr noundef @c__1, ptr noundef %759, ptr noundef @c__1)
  %761 = load ptr, ptr %28, align 8, !tbaa !5
  %762 = load ptr, ptr %37, align 8, !tbaa !5
  %763 = getelementptr inbounds double, ptr %762, i64 1
  %764 = load ptr, ptr %43, align 8, !tbaa !5
  %765 = load i64, ptr %86, align 8, !tbaa !9
  %766 = getelementptr inbounds double, ptr %764, i64 %765
  %767 = load ptr, ptr %47, align 8, !tbaa !5
  %768 = call i32 @dsterf_(ptr noundef %761, ptr noundef %763, ptr noundef %766, ptr noundef %767)
  br label %862

769:                                              ; preds = %740
  %770 = load ptr, ptr %28, align 8, !tbaa !5
  %771 = load i64, ptr %770, align 8, !tbaa !9
  %772 = sub nsw i64 %771, 1
  store i64 %772, ptr %52, align 8, !tbaa !9
  %773 = load ptr, ptr %43, align 8, !tbaa !5
  %774 = load i64, ptr %71, align 8, !tbaa !9
  %775 = getelementptr inbounds double, ptr %773, i64 %774
  %776 = load ptr, ptr %43, align 8, !tbaa !5
  %777 = load i64, ptr %86, align 8, !tbaa !9
  %778 = getelementptr inbounds double, ptr %776, i64 %777
  %779 = call i32 @f2c_dcopy(ptr noundef %52, ptr noundef %775, ptr noundef @c__1, ptr noundef %778, ptr noundef @c__1)
  %780 = load ptr, ptr %28, align 8, !tbaa !5
  %781 = load ptr, ptr %43, align 8, !tbaa !5
  %782 = load i64, ptr %70, align 8, !tbaa !9
  %783 = getelementptr inbounds double, ptr %781, i64 %782
  %784 = load ptr, ptr %43, align 8, !tbaa !5
  %785 = load i64, ptr %84, align 8, !tbaa !9
  %786 = getelementptr inbounds double, ptr %784, i64 %785
  %787 = call i32 @f2c_dcopy(ptr noundef %780, ptr noundef %783, ptr noundef @c__1, ptr noundef %786, ptr noundef @c__1)
  %788 = load ptr, ptr %35, align 8, !tbaa !5
  %789 = load double, ptr %788, align 8, !tbaa !11
  %790 = load ptr, ptr %28, align 8, !tbaa !5
  %791 = load i64, ptr %790, align 8, !tbaa !9
  %792 = sitofp i64 %791 to double
  %793 = fmul double %792, 2.000000e+00
  %794 = load double, ptr %60, align 8, !tbaa !11
  %795 = fmul double %793, %794
  %796 = fcmp ole double %789, %795
  br i1 %796, label %797, label %798

797:                                              ; preds = %769
  store i64 1, ptr %97, align 8, !tbaa !9
  br label %799

798:                                              ; preds = %769
  store i64 0, ptr %97, align 8, !tbaa !9
  br label %799

799:                                              ; preds = %798, %797
  %800 = load ptr, ptr %25, align 8, !tbaa !5
  %801 = load ptr, ptr %28, align 8, !tbaa !5
  %802 = load ptr, ptr %43, align 8, !tbaa !5
  %803 = load i64, ptr %84, align 8, !tbaa !9
  %804 = getelementptr inbounds double, ptr %802, i64 %803
  %805 = load ptr, ptr %43, align 8, !tbaa !5
  %806 = load i64, ptr %86, align 8, !tbaa !9
  %807 = getelementptr inbounds double, ptr %805, i64 %806
  %808 = load ptr, ptr %31, align 8, !tbaa !5
  %809 = load ptr, ptr %32, align 8, !tbaa !5
  %810 = load ptr, ptr %33, align 8, !tbaa !5
  %811 = load ptr, ptr %34, align 8, !tbaa !5
  %812 = load ptr, ptr %36, align 8, !tbaa !5
  %813 = load ptr, ptr %37, align 8, !tbaa !5
  %814 = getelementptr inbounds double, ptr %813, i64 1
  %815 = load ptr, ptr %38, align 8, !tbaa !5
  %816 = load i64, ptr %51, align 8, !tbaa !9
  %817 = getelementptr inbounds %struct.doublecomplex, ptr %815, i64 %816
  %818 = load ptr, ptr %39, align 8, !tbaa !5
  %819 = load ptr, ptr %28, align 8, !tbaa !5
  %820 = load ptr, ptr %40, align 8, !tbaa !5
  %821 = getelementptr inbounds i64, ptr %820, i64 1
  %822 = load ptr, ptr %43, align 8, !tbaa !5
  %823 = load i64, ptr %95, align 8, !tbaa !9
  %824 = getelementptr inbounds double, ptr %822, i64 %823
  %825 = load ptr, ptr %45, align 8, !tbaa !5
  %826 = getelementptr inbounds i64, ptr %825, i64 1
  %827 = load ptr, ptr %46, align 8, !tbaa !5
  %828 = load ptr, ptr %47, align 8, !tbaa !5
  %829 = call i32 @zstemr_(ptr noundef %800, ptr noundef @.str.4, ptr noundef %801, ptr noundef %804, ptr noundef %807, ptr noundef %808, ptr noundef %809, ptr noundef %810, ptr noundef %811, ptr noundef %812, ptr noundef %814, ptr noundef %817, ptr noundef %818, ptr noundef %819, ptr noundef %821, ptr noundef %97, ptr noundef %824, ptr noundef %105, ptr noundef %826, ptr noundef %827, ptr noundef %828)
  %830 = load i64, ptr %78, align 8, !tbaa !9
  %831 = icmp ne i64 %830, 0
  br i1 %831, label %832, label %861

832:                                              ; preds = %799
  %833 = load ptr, ptr %47, align 8, !tbaa !5
  %834 = load i64, ptr %833, align 8, !tbaa !9
  %835 = icmp eq i64 %834, 0
  br i1 %835, label %836, label %861

836:                                              ; preds = %832
  %837 = load i64, ptr %75, align 8, !tbaa !9
  store i64 %837, ptr %94, align 8, !tbaa !9
  %838 = load ptr, ptr %42, align 8, !tbaa !5
  %839 = load i64, ptr %838, align 8, !tbaa !9
  %840 = load i64, ptr %94, align 8, !tbaa !9
  %841 = sub nsw i64 %839, %840
  %842 = add nsw i64 %841, 1
  store i64 %842, ptr %99, align 8, !tbaa !9
  %843 = load ptr, ptr %27, align 8, !tbaa !5
  %844 = load ptr, ptr %28, align 8, !tbaa !5
  %845 = load ptr, ptr %36, align 8, !tbaa !5
  %846 = load ptr, ptr %29, align 8, !tbaa !5
  %847 = load i64, ptr %49, align 8, !tbaa !9
  %848 = getelementptr inbounds %struct.doublecomplex, ptr %846, i64 %847
  %849 = load ptr, ptr %30, align 8, !tbaa !5
  %850 = load ptr, ptr %41, align 8, !tbaa !5
  %851 = load i64, ptr %91, align 8, !tbaa !9
  %852 = getelementptr inbounds %struct.doublecomplex, ptr %850, i64 %851
  %853 = load ptr, ptr %38, align 8, !tbaa !5
  %854 = load i64, ptr %51, align 8, !tbaa !9
  %855 = getelementptr inbounds %struct.doublecomplex, ptr %853, i64 %854
  %856 = load ptr, ptr %39, align 8, !tbaa !5
  %857 = load ptr, ptr %41, align 8, !tbaa !5
  %858 = load i64, ptr %94, align 8, !tbaa !9
  %859 = getelementptr inbounds %struct.doublecomplex, ptr %857, i64 %858
  %860 = call i32 @zunmtr_(ptr noundef @.str.2, ptr noundef %843, ptr noundef @.str.1, ptr noundef %844, ptr noundef %845, ptr noundef %848, ptr noundef %849, ptr noundef %852, ptr noundef %855, ptr noundef %856, ptr noundef %859, ptr noundef %99, ptr noundef %73)
  br label %861

861:                                              ; preds = %836, %832, %799
  br label %862

862:                                              ; preds = %861, %743
  %863 = load ptr, ptr %47, align 8, !tbaa !5
  %864 = load i64, ptr %863, align 8, !tbaa !9
  %865 = icmp eq i64 %864, 0
  br i1 %865, label %866, label %870

866:                                              ; preds = %862
  %867 = load ptr, ptr %28, align 8, !tbaa !5
  %868 = load i64, ptr %867, align 8, !tbaa !9
  %869 = load ptr, ptr %36, align 8, !tbaa !5
  store i64 %868, ptr %869, align 8, !tbaa !9
  br label %967

870:                                              ; preds = %862
  %871 = load ptr, ptr %47, align 8, !tbaa !5
  store i64 0, ptr %871, align 8, !tbaa !9
  br label %872

872:                                              ; preds = %870, %737, %734
  %873 = load i64, ptr %78, align 8, !tbaa !9
  %874 = icmp ne i64 %873, 0
  br i1 %874, label %875, label %877

875:                                              ; preds = %872
  %876 = getelementptr inbounds [1 x i8], ptr %74, i64 0, i64 0
  store i8 66, ptr %876, align 1, !tbaa !19
  br label %879

877:                                              ; preds = %872
  %878 = getelementptr inbounds [1 x i8], ptr %74, i64 0, i64 0
  store i8 69, ptr %878, align 1, !tbaa !19
  br label %879

879:                                              ; preds = %877, %875
  %880 = load ptr, ptr %26, align 8, !tbaa !5
  %881 = getelementptr inbounds [1 x i8], ptr %74, i64 0, i64 0
  %882 = load ptr, ptr %28, align 8, !tbaa !5
  %883 = load ptr, ptr %33, align 8, !tbaa !5
  %884 = load ptr, ptr %34, align 8, !tbaa !5
  %885 = load ptr, ptr %43, align 8, !tbaa !5
  %886 = load i64, ptr %70, align 8, !tbaa !9
  %887 = getelementptr inbounds double, ptr %885, i64 %886
  %888 = load ptr, ptr %43, align 8, !tbaa !5
  %889 = load i64, ptr %71, align 8, !tbaa !9
  %890 = getelementptr inbounds double, ptr %888, i64 %889
  %891 = load ptr, ptr %36, align 8, !tbaa !5
  %892 = load ptr, ptr %37, align 8, !tbaa !5
  %893 = getelementptr inbounds double, ptr %892, i64 1
  %894 = load ptr, ptr %45, align 8, !tbaa !5
  %895 = load i64, ptr %83, align 8, !tbaa !9
  %896 = getelementptr inbounds i64, ptr %894, i64 %895
  %897 = load ptr, ptr %45, align 8, !tbaa !5
  %898 = load i64, ptr %92, align 8, !tbaa !9
  %899 = getelementptr inbounds i64, ptr %897, i64 %898
  %900 = load ptr, ptr %43, align 8, !tbaa !5
  %901 = load i64, ptr %95, align 8, !tbaa !9
  %902 = getelementptr inbounds double, ptr %900, i64 %901
  %903 = load ptr, ptr %45, align 8, !tbaa !5
  %904 = load i64, ptr %93, align 8, !tbaa !9
  %905 = getelementptr inbounds i64, ptr %903, i64 %904
  %906 = load ptr, ptr %47, align 8, !tbaa !5
  %907 = call i32 @dstebz_(ptr noundef %880, ptr noundef %881, ptr noundef %882, ptr noundef %61, ptr noundef %62, ptr noundef %883, ptr noundef %884, ptr noundef %89, ptr noundef %887, ptr noundef %890, ptr noundef %891, ptr noundef %101, ptr noundef %893, ptr noundef %896, ptr noundef %899, ptr noundef %902, ptr noundef %905, ptr noundef %906)
  %908 = load i64, ptr %78, align 8, !tbaa !9
  %909 = icmp ne i64 %908, 0
  br i1 %909, label %910, label %966

910:                                              ; preds = %879
  %911 = load ptr, ptr %28, align 8, !tbaa !5
  %912 = load ptr, ptr %43, align 8, !tbaa !5
  %913 = load i64, ptr %70, align 8, !tbaa !9
  %914 = getelementptr inbounds double, ptr %912, i64 %913
  %915 = load ptr, ptr %43, align 8, !tbaa !5
  %916 = load i64, ptr %71, align 8, !tbaa !9
  %917 = getelementptr inbounds double, ptr %915, i64 %916
  %918 = load ptr, ptr %36, align 8, !tbaa !5
  %919 = load ptr, ptr %37, align 8, !tbaa !5
  %920 = getelementptr inbounds double, ptr %919, i64 1
  %921 = load ptr, ptr %45, align 8, !tbaa !5
  %922 = load i64, ptr %83, align 8, !tbaa !9
  %923 = getelementptr inbounds i64, ptr %921, i64 %922
  %924 = load ptr, ptr %45, align 8, !tbaa !5
  %925 = load i64, ptr %92, align 8, !tbaa !9
  %926 = getelementptr inbounds i64, ptr %924, i64 %925
  %927 = load ptr, ptr %38, align 8, !tbaa !5
  %928 = load i64, ptr %51, align 8, !tbaa !9
  %929 = getelementptr inbounds %struct.doublecomplex, ptr %927, i64 %928
  %930 = load ptr, ptr %39, align 8, !tbaa !5
  %931 = load ptr, ptr %43, align 8, !tbaa !5
  %932 = load i64, ptr %95, align 8, !tbaa !9
  %933 = getelementptr inbounds double, ptr %931, i64 %932
  %934 = load ptr, ptr %45, align 8, !tbaa !5
  %935 = load i64, ptr %93, align 8, !tbaa !9
  %936 = getelementptr inbounds i64, ptr %934, i64 %935
  %937 = load ptr, ptr %45, align 8, !tbaa !5
  %938 = load i64, ptr %85, align 8, !tbaa !9
  %939 = getelementptr inbounds i64, ptr %937, i64 %938
  %940 = load ptr, ptr %47, align 8, !tbaa !5
  %941 = call i32 @zstein_(ptr noundef %911, ptr noundef %914, ptr noundef %917, ptr noundef %918, ptr noundef %920, ptr noundef %923, ptr noundef %926, ptr noundef %929, ptr noundef %930, ptr noundef %933, ptr noundef %936, ptr noundef %939, ptr noundef %940)
  %942 = load i64, ptr %75, align 8, !tbaa !9
  store i64 %942, ptr %94, align 8, !tbaa !9
  %943 = load ptr, ptr %42, align 8, !tbaa !5
  %944 = load i64, ptr %943, align 8, !tbaa !9
  %945 = load i64, ptr %94, align 8, !tbaa !9
  %946 = sub nsw i64 %944, %945
  %947 = add nsw i64 %946, 1
  store i64 %947, ptr %99, align 8, !tbaa !9
  %948 = load ptr, ptr %27, align 8, !tbaa !5
  %949 = load ptr, ptr %28, align 8, !tbaa !5
  %950 = load ptr, ptr %36, align 8, !tbaa !5
  %951 = load ptr, ptr %29, align 8, !tbaa !5
  %952 = load i64, ptr %49, align 8, !tbaa !9
  %953 = getelementptr inbounds %struct.doublecomplex, ptr %951, i64 %952
  %954 = load ptr, ptr %30, align 8, !tbaa !5
  %955 = load ptr, ptr %41, align 8, !tbaa !5
  %956 = load i64, ptr %91, align 8, !tbaa !9
  %957 = getelementptr inbounds %struct.doublecomplex, ptr %955, i64 %956
  %958 = load ptr, ptr %38, align 8, !tbaa !5
  %959 = load i64, ptr %51, align 8, !tbaa !9
  %960 = getelementptr inbounds %struct.doublecomplex, ptr %958, i64 %959
  %961 = load ptr, ptr %39, align 8, !tbaa !5
  %962 = load ptr, ptr %41, align 8, !tbaa !5
  %963 = load i64, ptr %94, align 8, !tbaa !9
  %964 = getelementptr inbounds %struct.doublecomplex, ptr %962, i64 %963
  %965 = call i32 @zunmtr_(ptr noundef @.str.2, ptr noundef %948, ptr noundef @.str.1, ptr noundef %949, ptr noundef %950, ptr noundef %953, ptr noundef %954, ptr noundef %957, ptr noundef %960, ptr noundef %961, ptr noundef %964, ptr noundef %99, ptr noundef %73)
  br label %966

966:                                              ; preds = %910, %879
  br label %967

967:                                              ; preds = %966, %866
  %968 = load i64, ptr %81, align 8, !tbaa !9
  %969 = icmp eq i64 %968, 1
  br i1 %969, label %970, label %987

970:                                              ; preds = %967
  %971 = load ptr, ptr %47, align 8, !tbaa !5
  %972 = load i64, ptr %971, align 8, !tbaa !9
  %973 = icmp eq i64 %972, 0
  br i1 %973, label %974, label %977

974:                                              ; preds = %970
  %975 = load ptr, ptr %36, align 8, !tbaa !5
  %976 = load i64, ptr %975, align 8, !tbaa !9
  store i64 %976, ptr %65, align 8, !tbaa !9
  br label %981

977:                                              ; preds = %970
  %978 = load ptr, ptr %47, align 8, !tbaa !5
  %979 = load i64, ptr %978, align 8, !tbaa !9
  %980 = sub nsw i64 %979, 1
  store i64 %980, ptr %65, align 8, !tbaa !9
  br label %981

981:                                              ; preds = %977, %974
  %982 = load double, ptr %72, align 8, !tbaa !11
  %983 = fdiv double 1.000000e+00, %982
  store double %983, ptr %54, align 8, !tbaa !11
  %984 = load ptr, ptr %37, align 8, !tbaa !5
  %985 = getelementptr inbounds double, ptr %984, i64 1
  %986 = call i32 @f2c_dscal(ptr noundef %65, ptr noundef %54, ptr noundef %985, ptr noundef @c__1)
  br label %987

987:                                              ; preds = %981, %967
  %988 = load i64, ptr %78, align 8, !tbaa !9
  %989 = icmp ne i64 %988, 0
  br i1 %989, label %990, label %1089

990:                                              ; preds = %987
  %991 = load ptr, ptr %36, align 8, !tbaa !5
  %992 = load i64, ptr %991, align 8, !tbaa !9
  %993 = sub nsw i64 %992, 1
  store i64 %993, ptr %52, align 8, !tbaa !9
  store i64 1, ptr %57, align 8, !tbaa !9
  br label %994

994:                                              ; preds = %1085, %990
  %995 = load i64, ptr %57, align 8, !tbaa !9
  %996 = load i64, ptr %52, align 8, !tbaa !9
  %997 = icmp sle i64 %995, %996
  br i1 %997, label %998, label %1088

998:                                              ; preds = %994
  store i64 0, ptr %56, align 8, !tbaa !9
  %999 = load ptr, ptr %37, align 8, !tbaa !5
  %1000 = load i64, ptr %57, align 8, !tbaa !9
  %1001 = getelementptr inbounds double, ptr %999, i64 %1000
  %1002 = load double, ptr %1001, align 8, !tbaa !11
  store double %1002, ptr %63, align 8, !tbaa !11
  %1003 = load ptr, ptr %36, align 8, !tbaa !5
  %1004 = load i64, ptr %1003, align 8, !tbaa !9
  store i64 %1004, ptr %53, align 8, !tbaa !9
  %1005 = load i64, ptr %57, align 8, !tbaa !9
  %1006 = add nsw i64 %1005, 1
  store i64 %1006, ptr %59, align 8, !tbaa !9
  br label %1007

1007:                                             ; preds = %1025, %998
  %1008 = load i64, ptr %59, align 8, !tbaa !9
  %1009 = load i64, ptr %53, align 8, !tbaa !9
  %1010 = icmp sle i64 %1008, %1009
  br i1 %1010, label %1011, label %1028

1011:                                             ; preds = %1007
  %1012 = load ptr, ptr %37, align 8, !tbaa !5
  %1013 = load i64, ptr %59, align 8, !tbaa !9
  %1014 = getelementptr inbounds double, ptr %1012, i64 %1013
  %1015 = load double, ptr %1014, align 8, !tbaa !11
  %1016 = load double, ptr %63, align 8, !tbaa !11
  %1017 = fcmp olt double %1015, %1016
  br i1 %1017, label %1018, label %1024

1018:                                             ; preds = %1011
  %1019 = load i64, ptr %59, align 8, !tbaa !9
  store i64 %1019, ptr %56, align 8, !tbaa !9
  %1020 = load ptr, ptr %37, align 8, !tbaa !5
  %1021 = load i64, ptr %59, align 8, !tbaa !9
  %1022 = getelementptr inbounds double, ptr %1020, i64 %1021
  %1023 = load double, ptr %1022, align 8, !tbaa !11
  store double %1023, ptr %63, align 8, !tbaa !11
  br label %1024

1024:                                             ; preds = %1018, %1011
  br label %1025

1025:                                             ; preds = %1024
  %1026 = load i64, ptr %59, align 8, !tbaa !9
  %1027 = add nsw i64 %1026, 1
  store i64 %1027, ptr %59, align 8, !tbaa !9
  br label %1007, !llvm.loop !20

1028:                                             ; preds = %1007
  %1029 = load i64, ptr %56, align 8, !tbaa !9
  %1030 = icmp ne i64 %1029, 0
  br i1 %1030, label %1031, label %1084

1031:                                             ; preds = %1028
  %1032 = load ptr, ptr %45, align 8, !tbaa !5
  %1033 = load i64, ptr %83, align 8, !tbaa !9
  %1034 = load i64, ptr %56, align 8, !tbaa !9
  %1035 = add nsw i64 %1033, %1034
  %1036 = sub nsw i64 %1035, 1
  %1037 = getelementptr inbounds i64, ptr %1032, i64 %1036
  %1038 = load i64, ptr %1037, align 8, !tbaa !9
  store i64 %1038, ptr %69, align 8, !tbaa !9
  %1039 = load ptr, ptr %37, align 8, !tbaa !5
  %1040 = load i64, ptr %57, align 8, !tbaa !9
  %1041 = getelementptr inbounds double, ptr %1039, i64 %1040
  %1042 = load double, ptr %1041, align 8, !tbaa !11
  %1043 = load ptr, ptr %37, align 8, !tbaa !5
  %1044 = load i64, ptr %56, align 8, !tbaa !9
  %1045 = getelementptr inbounds double, ptr %1043, i64 %1044
  store double %1042, ptr %1045, align 8, !tbaa !11
  %1046 = load ptr, ptr %45, align 8, !tbaa !5
  %1047 = load i64, ptr %83, align 8, !tbaa !9
  %1048 = load i64, ptr %57, align 8, !tbaa !9
  %1049 = add nsw i64 %1047, %1048
  %1050 = sub nsw i64 %1049, 1
  %1051 = getelementptr inbounds i64, ptr %1046, i64 %1050
  %1052 = load i64, ptr %1051, align 8, !tbaa !9
  %1053 = load ptr, ptr %45, align 8, !tbaa !5
  %1054 = load i64, ptr %83, align 8, !tbaa !9
  %1055 = load i64, ptr %56, align 8, !tbaa !9
  %1056 = add nsw i64 %1054, %1055
  %1057 = sub nsw i64 %1056, 1
  %1058 = getelementptr inbounds i64, ptr %1053, i64 %1057
  store i64 %1052, ptr %1058, align 8, !tbaa !9
  %1059 = load double, ptr %63, align 8, !tbaa !11
  %1060 = load ptr, ptr %37, align 8, !tbaa !5
  %1061 = load i64, ptr %57, align 8, !tbaa !9
  %1062 = getelementptr inbounds double, ptr %1060, i64 %1061
  store double %1059, ptr %1062, align 8, !tbaa !11
  %1063 = load i64, ptr %69, align 8, !tbaa !9
  %1064 = load ptr, ptr %45, align 8, !tbaa !5
  %1065 = load i64, ptr %83, align 8, !tbaa !9
  %1066 = load i64, ptr %57, align 8, !tbaa !9
  %1067 = add nsw i64 %1065, %1066
  %1068 = sub nsw i64 %1067, 1
  %1069 = getelementptr inbounds i64, ptr %1064, i64 %1068
  store i64 %1063, ptr %1069, align 8, !tbaa !9
  %1070 = load ptr, ptr %28, align 8, !tbaa !5
  %1071 = load ptr, ptr %38, align 8, !tbaa !5
  %1072 = load i64, ptr %56, align 8, !tbaa !9
  %1073 = load i64, ptr %50, align 8, !tbaa !9
  %1074 = mul nsw i64 %1072, %1073
  %1075 = add nsw i64 %1074, 1
  %1076 = getelementptr inbounds %struct.doublecomplex, ptr %1071, i64 %1075
  %1077 = load ptr, ptr %38, align 8, !tbaa !5
  %1078 = load i64, ptr %57, align 8, !tbaa !9
  %1079 = load i64, ptr %50, align 8, !tbaa !9
  %1080 = mul nsw i64 %1078, %1079
  %1081 = add nsw i64 %1080, 1
  %1082 = getelementptr inbounds %struct.doublecomplex, ptr %1077, i64 %1081
  %1083 = call i32 @f2c_zswap(ptr noundef %1070, ptr noundef %1076, ptr noundef @c__1, ptr noundef %1082, ptr noundef @c__1)
  br label %1084

1084:                                             ; preds = %1031, %1028
  br label %1085

1085:                                             ; preds = %1084
  %1086 = load i64, ptr %57, align 8, !tbaa !9
  %1087 = add nsw i64 %1086, 1
  store i64 %1087, ptr %57, align 8, !tbaa !9
  br label %994, !llvm.loop !21

1088:                                             ; preds = %994
  br label %1089

1089:                                             ; preds = %1088, %987
  %1090 = load i64, ptr %104, align 8, !tbaa !9
  %1091 = sitofp i64 %1090 to double
  %1092 = load ptr, ptr %41, align 8, !tbaa !5
  %1093 = getelementptr inbounds %struct.doublecomplex, ptr %1092, i64 1
  %1094 = getelementptr inbounds %struct.doublecomplex, ptr %1093, i32 0, i32 0
  store double %1091, ptr %1094, align 8, !tbaa !13
  %1095 = load ptr, ptr %41, align 8, !tbaa !5
  %1096 = getelementptr inbounds %struct.doublecomplex, ptr %1095, i64 1
  %1097 = getelementptr inbounds %struct.doublecomplex, ptr %1096, i32 0, i32 1
  store double 0.000000e+00, ptr %1097, align 8, !tbaa !15
  %1098 = load i64, ptr %98, align 8, !tbaa !9
  %1099 = sitofp i64 %1098 to double
  %1100 = load ptr, ptr %43, align 8, !tbaa !5
  %1101 = getelementptr inbounds double, ptr %1100, i64 1
  store double %1099, ptr %1101, align 8, !tbaa !11
  %1102 = load i64, ptr %96, align 8, !tbaa !9
  %1103 = load ptr, ptr %45, align 8, !tbaa !5
  %1104 = getelementptr inbounds i64, ptr %1103, i64 1
  store i64 %1102, ptr %1104, align 8, !tbaa !9
  store i32 0, ptr %24, align 4
  store i32 1, ptr %106, align 4
  br label %1105

1105:                                             ; preds = %1089, %519, %437, %430, %422
  call void @llvm.lifetime.end.p0(i64 8, ptr %105) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %104) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %103) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %102) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %101) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %100) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %99) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %98) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %97) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %96) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %95) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %94) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %93) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %92) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %91) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %90) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %89) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %88) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %87) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %86) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %85) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %84) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %83) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %82) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %81) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %80) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %79) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %78) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %77) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %76) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %75) #4
  call void @llvm.lifetime.end.p0(i64 1, ptr %74) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %73) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %72) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %71) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %70) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %69) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %68) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %67) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %66) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %65) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %64) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %63) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %62) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %61) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %60) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %59) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %58) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %57) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %56) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %55) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %54) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %53) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %52) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %51) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %50) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %49) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %48) #4
  %1106 = load i32, ptr %24, align 4
  ret i32 %1106
}

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

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

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

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

declare double @dlamch_(ptr noundef) #2

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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


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

%struct.doublecomplex = type { double, double }

@c__10 = external hidden global i64, align 8
@.str = external hidden unnamed_addr constant [7 x i8], align 1
@.str.1 = external hidden unnamed_addr constant [2 x i8], align 1
@c__1 = external hidden global i64, align 8
@c__2 = external hidden global i64, align 8
@c__3 = external hidden global i64, align 8
@c__4 = external hidden global i64, align 8
@.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 [2 x i8], align 1
@.str.6 = external hidden unnamed_addr constant [2 x i8], align 1
@.str.7 = external hidden unnamed_addr constant [7 x i8], align 1
@c_n1 = external hidden global i64, align 8
@.str.8 = external hidden unnamed_addr constant [7 x i8], align 1
@.str.9 = external hidden unnamed_addr constant [13 x i8], align 1
@.str.10 = external hidden unnamed_addr constant [10 x i8], align 1
@.str.11 = external hidden unnamed_addr constant [2 x i8], align 1

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

58:                                               ; preds = %23
  %59 = load i64, ptr %19, align 8, !tbaa !5
  %60 = icmp eq i64 %59, -1
  br i1 %60, label %64, label %61

61:                                               ; preds = %58
  %62 = load i64, ptr %21, align 8, !tbaa !5
  %63 = icmp eq i64 %62, -1
  br label %64

64:                                               ; preds = %61, %58, %23
  %65 = phi i1 [ true, %58 ], [ true, %23 ], [ %63, %61 ]
  %66 = load i64, ptr %3, align 8, !tbaa !5
  %67 = mul nsw i64 %66, 24
  %68 = icmp slt i64 %66, 1
  %69 = select i1 %68, i64 1, i64 %67
  %70 = mul nsw i64 %66, 10
  %71 = select i1 %68, i64 1, i64 %70
  %72 = shl i64 %66, 1
  %73 = tail call i64 @llvm.smax.i64(i64 %72, i64 1)
  store i64 0, ptr %22, align 8, !tbaa !5
  %.not = icmp ne i64 %52, 0
  br i1 %.not, label %76, label %74

74:                                               ; preds = %64
  %75 = tail call i64 @lsame_(ptr noundef %0, ptr noundef nonnull @.str.1) #5
  %.not422 = icmp eq i64 %75, 0
  br i1 %.not422, label %.thread456.sink.split, label %76

76:                                               ; preds = %74, %64
  %77 = icmp ne i64 %53, 0
  %78 = icmp ne i64 %54, 0
  %or.cond = select i1 %77, i1 true, i1 %78
  %79 = icmp ne i64 %55, 0
  %or.cond3 = select i1 %or.cond, i1 true, i1 %79
  br i1 %or.cond3, label %80, label %.thread456.sink.split

80:                                               ; preds = %76
  %.not423 = icmp eq i64 %51, 0
  br i1 %.not423, label %81, label %83

81:                                               ; preds = %80
  %82 = tail call i64 @lsame_(ptr noundef %2, ptr noundef nonnull @.str.6) #5
  %.not424 = icmp eq i64 %82, 0
  br i1 %.not424, label %.thread456.sink.split, label %83

83:                                               ; preds = %81, %80
  %84 = load i64, ptr %3, align 8, !tbaa !5
  %85 = icmp slt i64 %84, 0
  br i1 %85, label %.thread456.sink.split, label %86

86:                                               ; preds = %83
  %87 = load i64, ptr %5, align 8, !tbaa !5
  %spec.select = tail call i64 @llvm.umax.i64(i64 %84, i64 1)
  %88 = icmp slt i64 %87, %spec.select
  br i1 %88, label %.thread456.sink.split, label %89

89:                                               ; preds = %86
  br i1 %78, label %90, label %95

90:                                               ; preds = %89
  %.not470 = icmp eq i64 %84, 0
  br i1 %.not470, label %104, label %91

91:                                               ; preds = %90
  %92 = load double, ptr %7, align 8, !tbaa !9
  %93 = load double, ptr %6, align 8, !tbaa !9
  %94 = fcmp ugt double %92, %93
  br i1 %94, label %104, label %.thread456.sink.split

95:                                               ; preds = %89
  br i1 %79, label %96, label %104

96:                                               ; preds = %95
  %97 = load i64, ptr %8, align 8, !tbaa !5
  %98 = icmp slt i64 %97, 1
  %99 = icmp ugt i64 %97, %spec.select
  %or.cond468 = or i1 %98, %99
  br i1 %or.cond468, label %.thread456.sink.split, label %100

100:                                              ; preds = %96
  %101 = load i64, ptr %9, align 8, !tbaa !5
  %. = tail call i64 @llvm.umin.i64(i64 %84, i64 %97)
  %102 = icmp slt i64 %101, %.
  %103 = icmp ugt i64 %101, %84
  %or.cond469 = or i1 %102, %103
  br i1 %or.cond469, label %.thread456.sink.split, label %104

104:                                              ; preds = %100, %91, %90, %95
  %.pr = load i64, ptr %22, align 8, !tbaa !5
  %105 = icmp eq i64 %.pr, 0
  br i1 %105, label %106, label %.thread456

106:                                              ; preds = %104
  %107 = load i64, ptr %14, align 8, !tbaa !5
  %108 = icmp slt i64 %107, 1
  %109 = icmp ult i64 %107, %84
  %or.cond500 = and i1 %.not, %109
  %or.cond503 = or i1 %108, %or.cond500
  br i1 %or.cond503, label %.thread456.sink.split, label %.thread

.thread:                                          ; preds = %106
  %110 = tail call i64 @ilaenv_(ptr noundef nonnull @c__1, ptr noundef nonnull @.str.7, ptr noundef %2, ptr noundef nonnull %3, ptr noundef nonnull @c_n1, ptr noundef nonnull @c_n1, ptr noundef nonnull @c_n1) #5
  %111 = tail call i64 @ilaenv_(ptr noundef nonnull @c__1, ptr noundef nonnull @.str.8, ptr noundef %2, ptr noundef nonnull %3, ptr noundef nonnull @c_n1, ptr noundef nonnull @c_n1, ptr noundef nonnull @c_n1) #5
  store i64 %111, ptr %25, align 8, !tbaa !5
  %112 = tail call i64 @llvm.smax.i64(i64 %110, i64 %111)
  %113 = add nsw i64 %112, 1
  %114 = load i64, ptr %3, align 8, !tbaa !5
  %115 = mul nsw i64 %113, %114
  store i64 %115, ptr %24, align 8, !tbaa !5
  %116 = tail call i64 @llvm.smax.i64(i64 %115, i64 %73)
  %117 = uitofp nneg i64 %116 to double
  store double %117, ptr %16, align 8, !tbaa !11
  %118 = getelementptr inbounds i8, ptr %16, i64 8
  store double 0.000000e+00, ptr %118, align 8, !tbaa !13
  %119 = sitofp i64 %69 to double
  store double %119, ptr %18, align 8, !tbaa !9
  store i64 %71, ptr %20, align 8, !tbaa !5
  %120 = load i64, ptr %17, align 8, !tbaa !5
  %121 = icmp sge i64 %120, %73
  %or.cond5 = select i1 %121, i1 true, i1 %65
  br i1 %or.cond5, label %122, label %.thread456.sink.split

122:                                              ; preds = %.thread
  %123 = load i64, ptr %19, align 8, !tbaa !5
  %124 = icmp sge i64 %123, %69
  %or.cond7 = select i1 %124, i1 true, i1 %65
  br i1 %or.cond7, label %125, label %.thread456.sink.split

125:                                              ; preds = %122
  %126 = load i64, ptr %21, align 8, !tbaa !5
  %127 = icmp sge i64 %126, %71
  %or.cond9 = select i1 %127, i1 true, i1 %65
  br i1 %or.cond9, label %.thread451, label %.thread456.sink.split

.thread451:                                       ; preds = %125
  %.pr453.pr = load i64, ptr %22, align 8, !tbaa !5
  %.not428 = icmp eq i64 %.pr453.pr, 0
  br i1 %.not428, label %131, label %.thread456

.thread456.sink.split:                            ; preds = %125, %122, %.thread, %106, %100, %96, %91, %86, %83, %81, %76, %74
  %.sink = phi i64 [ -1, %74 ], [ -2, %76 ], [ -3, %81 ], [ -4, %83 ], [ -6, %86 ], [ -8, %91 ], [ -9, %96 ], [ -10, %100 ], [ -15, %106 ], [ -18, %.thread ], [ -20, %122 ], [ -22, %125 ]
  store i64 %.sink, ptr %22, align 8, !tbaa !5
  br label %.thread456

.thread456:                                       ; preds = %.thread456.sink.split, %104, %.thread451
  %128 = phi i64 [ %.pr453.pr, %.thread451 ], [ %.pr, %104 ], [ %.sink, %.thread456.sink.split ]
  %129 = sub nsw i64 0, %128
  store i64 %129, ptr %24, align 8, !tbaa !5
  %130 = call i32 @xerbla_(ptr noundef nonnull @.str, ptr noundef nonnull %24) #5
  br label %309

131:                                              ; preds = %.thread451
  br i1 %65, label %309, label %132

132:                                              ; preds = %131
  store i64 0, ptr %11, align 8, !tbaa !5
  %133 = load i64, ptr %3, align 8, !tbaa !5
  switch i64 %133, label %148 [
    i64 0, label %134
    i64 1, label %135
  ]

134:                                              ; preds = %132
  store <2 x double> <double 1.000000e+00, double 0.000000e+00>, ptr %16, align 8, !tbaa !9
  br label %309

135:                                              ; preds = %132
  store <2 x double> <double 2.000000e+00, double 0.000000e+00>, ptr %16, align 8, !tbaa !9
  %or.cond11 = select i1 %77, i1 true, i1 %79
  br i1 %or.cond11, label %136, label %138

136:                                              ; preds = %135
  store i64 1, ptr %11, align 8, !tbaa !5
  %137 = load double, ptr %4, align 8, !tbaa !11
  br label %.sink.split

138:                                              ; preds = %135
  %139 = load double, ptr %6, align 8, !tbaa !9
  %140 = load double, ptr %4, align 8, !tbaa !11
  %141 = fcmp olt double %139, %140
  br i1 %141, label %142, label %146

142:                                              ; preds = %138
  %143 = load double, ptr %7, align 8, !tbaa !9
  %144 = fcmp ult double %143, %140
  br i1 %144, label %146, label %145

145:                                              ; preds = %142
  store i64 1, ptr %11, align 8, !tbaa !5
  br label %.sink.split

.sink.split:                                      ; preds = %136, %145
  %.sink501 = phi double [ %140, %145 ], [ %137, %136 ]
  store double %.sink501, ptr %12, align 8, !tbaa !9
  br label %146

146:                                              ; preds = %.sink.split, %138, %142
  br i1 %.not, label %147, label %309

147:                                              ; preds = %146
  store <2 x double> <double 1.000000e+00, double 0.000000e+00>, ptr %13, align 8, !tbaa !9
  br label %309

148:                                              ; preds = %132
  %149 = tail call double @dlamch_(ptr noundef nonnull @.str.9) #5
  %150 = tail call double @dlamch_(ptr noundef nonnull @.str.10) #5
  %151 = fdiv double %149, %150
  %152 = fdiv double 1.000000e+00, %151
  %153 = tail call double @sqrt(double noundef %151) #5
  %154 = tail call double @sqrt(double noundef %152) #5
  store double %154, ptr %26, align 8, !tbaa !9
  %155 = tail call double @sqrt(double noundef %149) #5
  %156 = tail call double @sqrt(double noundef %155) #5
  %157 = fdiv double 1.000000e+00, %156
  %158 = fcmp ole double %154, %157
  %159 = select i1 %158, double %154, double %157
  %160 = load double, ptr %10, align 8, !tbaa !9
  store double %160, ptr %34, align 8, !tbaa !9
  %.not429 = icmp eq i64 %54, 0
  br i1 %.not429, label %164, label %161

161:                                              ; preds = %148
  %162 = load double, ptr %6, align 8, !tbaa !9
  store double %162, ptr %28, align 8, !tbaa !9
  %163 = load double, ptr %7, align 8, !tbaa !9
  store double %163, ptr %29, align 8, !tbaa !9
  br label %164

164:                                              ; preds = %161, %148
  %165 = tail call double @zlansy_(ptr noundef nonnull @.str.11, ptr noundef %2, ptr noundef nonnull %3, ptr noundef %4, ptr noundef nonnull %5, ptr noundef nonnull %18) #5
  %166 = fcmp ogt double %165, 0.000000e+00
  %167 = fcmp olt double %165, %153
  %or.cond444 = select i1 %166, i1 %167, i1 false
  br i1 %or.cond444, label %170, label %168

168:                                              ; preds = %164
  %169 = fcmp ogt double %165, %159
  br i1 %169, label %170, label %199

170:                                              ; preds = %168, %164
  %.pn = phi double [ %153, %164 ], [ %159, %168 ]
  %storemerge471 = fdiv double %.pn, %165
  store double %storemerge471, ptr %31, align 8, !tbaa !9
  %171 = load i64, ptr %3, align 8, !tbaa !5
  store i64 %171, ptr %24, align 8, !tbaa !5
  br i1 %.not423, label %181, label %172

172:                                              ; preds = %170
  store i64 1, ptr %27, align 8, !tbaa !5
  %.not433475 = icmp slt i64 %171, 1
  br i1 %.not433475, label %.loopexit473, label %.lr.ph

.lr.ph:                                           ; preds = %172, %.lr.ph
  %storemerge432476 = phi i64 [ %179, %.lr.ph ], [ 1, %172 ]
  %173 = load i64, ptr %3, align 8, !tbaa !5
  %reass.sub = sub i64 %173, %storemerge432476
  %174 = add i64 %reass.sub, 1
  store i64 %174, ptr %25, align 8, !tbaa !5
  %175 = mul i64 %storemerge432476, %41
  %176 = getelementptr inbounds %struct.doublecomplex, ptr %43, i64 %175
  %177 = call i32 @f2c_zdscal(ptr noundef nonnull %25, ptr noundef nonnull %31, ptr noundef %176, ptr noundef nonnull @c__1) #5
  %178 = load i64, ptr %27, align 8, !tbaa !5
  %179 = add nsw i64 %178, 1
  store i64 %179, ptr %27, align 8, !tbaa !5
  %180 = load i64, ptr %24, align 8, !tbaa !5
  %.not433.not = icmp slt i64 %178, %180
  br i1 %.not433.not, label %.lr.ph, label %.loopexit473, !llvm.loop !14

181:                                              ; preds = %170
  %invariant.gep = getelementptr i8, ptr %43, i64 16
  store i64 1, ptr %27, align 8, !tbaa !5
  %.not431477 = icmp slt i64 %171, 1
  br i1 %.not431477, label %.loopexit473, label %.lr.ph479

.lr.ph479:                                        ; preds = %181, %.lr.ph479
  %storemerge478 = phi i64 [ %185, %.lr.ph479 ], [ 1, %181 ]
  %182 = mul nsw i64 %storemerge478, %40
  %gep = getelementptr %struct.doublecomplex, ptr %invariant.gep, i64 %182
  %183 = call i32 @f2c_zdscal(ptr noundef nonnull %27, ptr noundef nonnull %31, ptr noundef %gep, ptr noundef nonnull @c__1) #5
  %184 = load i64, ptr %27, align 8, !tbaa !5
  %185 = add nsw i64 %184, 1
  store i64 %185, ptr %27, align 8, !tbaa !5
  %186 = load i64, ptr %24, align 8, !tbaa !5
  %.not431.not = icmp slt i64 %184, %186
  br i1 %.not431.not, label %.lr.ph479, label %.loopexit473, !llvm.loop !16

.loopexit473:                                     ; preds = %.lr.ph, %.lr.ph479, %172, %181
  %187 = load double, ptr %10, align 8, !tbaa !9
  %188 = fcmp ogt double %187, 0.000000e+00
  br i1 %188, label %189, label %192

189:                                              ; preds = %.loopexit473
  %190 = load double, ptr %31, align 8, !tbaa !9
  %191 = fmul double %187, %190
  store double %191, ptr %34, align 8, !tbaa !9
  br label %192

192:                                              ; preds = %189, %.loopexit473
  br i1 %.not429, label %199, label %193

193:                                              ; preds = %192
  %194 = load double, ptr %6, align 8, !tbaa !9
  %195 = load double, ptr %31, align 8, !tbaa !9
  %196 = fmul double %194, %195
  store double %196, ptr %28, align 8, !tbaa !9
  %197 = load double, ptr %7, align 8, !tbaa !9
  %198 = fmul double %195, %197
  store double %198, ptr %29, align 8, !tbaa !9
  br label %199

199:                                              ; preds = %168, %192, %193
  %200 = phi i1 [ true, %192 ], [ true, %193 ], [ false, %168 ]
  %201 = load i64, ptr %3, align 8, !tbaa !5
  %202 = load i64, ptr %17, align 8, !tbaa !5
  %203 = sub i64 %202, %201
  store i64 %203, ptr %37, align 8, !tbaa !5
  %reass.add = shl i64 %201, 1
  %204 = or disjoint i64 %reass.add, 1
  %205 = add nsw i64 %204, %201
  %206 = add nsw i64 %205, %201
  %207 = load i64, ptr %19, align 8, !tbaa !5
  %208 = add i64 %207, 1
  %209 = sub i64 %208, %206
  store i64 %209, ptr %39, align 8, !tbaa !5
  %210 = getelementptr double, ptr %18, i64 %201
  %211 = getelementptr %struct.doublecomplex, ptr %16, i64 %201
  %212 = call i32 @zhetrd_(ptr noundef %2, ptr noundef nonnull %3, ptr noundef %4, ptr noundef nonnull %5, ptr noundef nonnull %18, ptr noundef %210, ptr noundef nonnull %16, ptr noundef %211, ptr noundef nonnull %37, ptr noundef nonnull %32) #5
  %.not434 = icmp eq i64 %55, 0
  br i1 %.not434, label %220, label %213

213:                                              ; preds = %199
  %214 = load i64, ptr %8, align 8, !tbaa !5
  %215 = icmp eq i64 %214, 1
  br i1 %215, label %216, label %220

216:                                              ; preds = %213
  %217 = load i64, ptr %9, align 8, !tbaa !5
  %218 = load i64, ptr %3, align 8, !tbaa !5
  %219 = icmp eq i64 %217, %218
  br label %220

220:                                              ; preds = %216, %213, %199
  %221 = phi i1 [ false, %213 ], [ false, %199 ], [ %219, %216 ]
  %or.cond13 = or i1 %77, %221
  %222 = icmp eq i64 %50, 1
  %or.cond15 = select i1 %or.cond13, i1 %222, i1 false
  br i1 %or.cond15, label %223, label %256

223:                                              ; preds = %220
  br i1 %.not, label %231, label %224

224:                                              ; preds = %223
  %225 = call i32 @f2c_dcopy(ptr noundef nonnull %3, ptr noundef nonnull %18, ptr noundef nonnull @c__1, ptr noundef %12, ptr noundef nonnull @c__1) #5
  %226 = load i64, ptr %3, align 8, !tbaa !5
  %227 = add nsw i64 %226, -1
  store i64 %227, ptr %24, align 8, !tbaa !5
  %228 = getelementptr inbounds double, ptr %48, i64 %205
  %229 = call i32 @f2c_dcopy(ptr noundef nonnull %24, ptr noundef %210, ptr noundef nonnull @c__1, ptr noundef nonnull %228, ptr noundef nonnull @c__1) #5
  %230 = call i32 @dsterf_(ptr noundef nonnull %3, ptr noundef %12, ptr noundef nonnull %228, ptr noundef nonnull %22) #5
  br label %252

231:                                              ; preds = %223
  %232 = load i64, ptr %3, align 8, !tbaa !5
  %233 = add nsw i64 %232, -1
  store i64 %233, ptr %24, align 8, !tbaa !5
  %234 = getelementptr inbounds double, ptr %48, i64 %205
  %235 = call i32 @f2c_dcopy(ptr noundef nonnull %24, ptr noundef %210, ptr noundef nonnull @c__1, ptr noundef nonnull %234, ptr noundef nonnull @c__1) #5
  %236 = getelementptr double, ptr %18, i64 %reass.add
  %237 = call i32 @f2c_dcopy(ptr noundef nonnull %3, ptr noundef nonnull %18, ptr noundef nonnull @c__1, ptr noundef %236, ptr noundef nonnull @c__1) #5
  %238 = load double, ptr %10, align 8, !tbaa !9
  %239 = load i64, ptr %3, align 8, !tbaa !5
  %240 = sitofp i64 %239 to double
  %241 = fmul double %240, 2.000000e+00
  %242 = fmul double %150, %241
  %243 = fcmp ole double %238, %242
  %.446 = zext i1 %243 to i64
  store i64 %.446, ptr %35, align 8, !tbaa !5
  %244 = getelementptr inbounds double, ptr %48, i64 %206
  %245 = call i32 @zstemr_(ptr noundef %0, ptr noundef nonnull @.str.4, ptr noundef nonnull %3, ptr noundef %236, ptr noundef nonnull %234, ptr noundef %6, ptr noundef %7, ptr noundef %8, ptr noundef %9, ptr noundef nonnull %11, ptr noundef %12, ptr noundef %13, ptr noundef nonnull %14, ptr noundef nonnull %3, ptr noundef %15, ptr noundef nonnull %35, ptr noundef nonnull %244, ptr noundef nonnull %39, ptr noundef nonnull %20, ptr noundef nonnull %21, ptr noundef nonnull %22) #5
  %246 = load i64, ptr %22, align 8, !tbaa !5
  %247 = icmp eq i64 %246, 0
  br i1 %247, label %248, label %.thread463

248:                                              ; preds = %231
  %249 = load i64, ptr %17, align 8, !tbaa !5
  %250 = sub i64 %249, %201
  store i64 %250, ptr %36, align 8, !tbaa !5
  %251 = call i32 @zunmtr_(ptr noundef nonnull @.str.2, ptr noundef %2, ptr noundef nonnull @.str.1, ptr noundef nonnull %3, ptr noundef nonnull %11, ptr noundef %4, ptr noundef nonnull %5, ptr noundef nonnull %16, ptr noundef %13, ptr noundef nonnull %14, ptr noundef %211, ptr noundef nonnull %36, ptr noundef nonnull %32) #5
  br label %252

252:                                              ; preds = %248, %224
  %.pr462 = load i64, ptr %22, align 8, !tbaa !5
  %253 = icmp eq i64 %.pr462, 0
  br i1 %253, label %254, label %.thread463

254:                                              ; preds = %252
  %255 = load i64, ptr %3, align 8, !tbaa !5
  store i64 %255, ptr %11, align 8, !tbaa !5
  br label %266

.thread463:                                       ; preds = %231, %252
  store i64 0, ptr %22, align 8, !tbaa !5
  br label %256

256:                                              ; preds = %220, %.thread463
  %.447 = select i1 %.not, i8 66, i8 69
  store i8 %.447, ptr %33, align 1, !tbaa !17
  %257 = getelementptr i64, ptr %20, i64 %201
  %258 = getelementptr inbounds double, ptr %48, i64 %206
  %.idx = shl i64 %201, 4
  %259 = getelementptr i8, ptr %20, i64 %.idx
  %260 = call i32 @dstebz_(ptr noundef %1, ptr noundef nonnull %33, ptr noundef nonnull %3, ptr noundef nonnull %28, ptr noundef nonnull %29, ptr noundef %8, ptr noundef %9, ptr noundef nonnull %34, ptr noundef nonnull %18, ptr noundef %210, ptr noundef nonnull %11, ptr noundef nonnull %38, ptr noundef %12, ptr noundef nonnull %20, ptr noundef %257, ptr noundef nonnull %258, ptr noundef %259, ptr noundef nonnull %22) #5
  br i1 %.not, label %261, label %266

261:                                              ; preds = %256
  %262 = call i32 @zstein_(ptr noundef nonnull %3, ptr noundef nonnull %18, ptr noundef %210, ptr noundef nonnull %11, ptr noundef %12, ptr noundef nonnull %20, ptr noundef %257, ptr noundef %13, ptr noundef nonnull %14, ptr noundef nonnull %258, ptr noundef %259, ptr noundef %259, ptr noundef nonnull %22) #5
  %263 = load i64, ptr %17, align 8, !tbaa !5
  %264 = sub i64 %263, %201
  store i64 %264, ptr %36, align 8, !tbaa !5
  %265 = call i32 @zunmtr_(ptr noundef nonnull @.str.2, ptr noundef %2, ptr noundef nonnull @.str.1, ptr noundef nonnull %3, ptr noundef nonnull %11, ptr noundef %4, ptr noundef nonnull %5, ptr noundef nonnull %16, ptr noundef %13, ptr noundef nonnull %14, ptr noundef %211, ptr noundef nonnull %36, ptr noundef nonnull %32) #5
  br label %266

266:                                              ; preds = %256, %261, %254
  br i1 %200, label %267, label %278

267:                                              ; preds = %266
  %268 = load i64, ptr %22, align 8, !tbaa !5
  %269 = icmp eq i64 %268, 0
  br i1 %269, label %270, label %272

270:                                              ; preds = %267
  %271 = load i64, ptr %11, align 8, !tbaa !5
  br label %274

272:                                              ; preds = %267
  %273 = add nsw i64 %268, -1
  br label %274

274:                                              ; preds = %272, %270
  %storemerge438 = phi i64 [ %273, %272 ], [ %271, %270 ]
  store i64 %storemerge438, ptr %30, align 8, !tbaa !5
  %275 = load double, ptr %31, align 8, !tbaa !9
  %276 = fdiv double 1.000000e+00, %275
  store double %276, ptr %26, align 8, !tbaa !9
  %277 = call i32 @f2c_dscal(ptr noundef nonnull %30, ptr noundef nonnull %26, ptr noundef %12, ptr noundef nonnull @c__1) #5
  br label %278

278:                                              ; preds = %274, %266
  br i1 %.not, label %279, label %.loopexit

279:                                              ; preds = %278
  %280 = load i64, ptr %11, align 8, !tbaa !5
  %281 = add nsw i64 %280, -1
  store i64 %281, ptr %24, align 8, !tbaa !5
  %invariant.gep486 = getelementptr i8, ptr %47, i64 16
  store i64 1, ptr %27, align 8, !tbaa !5
  %.not440490 = icmp slt i64 %280, 2
  br i1 %.not440490, label %.loopexit, label %.lr.ph493

.lr.ph493:                                        ; preds = %279, %._crit_edge.thread
  %282 = phi i64 [ %306, %._crit_edge.thread ], [ %281, %279 ]
  %storemerge439491 = phi i64 [ %308, %._crit_edge.thread ], [ 1, %279 ]
  %283 = getelementptr inbounds double, ptr %44, i64 %storemerge439491
  %284 = load double, ptr %283, align 8, !tbaa !9
  %285 = load i64, ptr %11, align 8, !tbaa !5
  store i64 %285, ptr %25, align 8, !tbaa !5
  %.not441.not480 = icmp slt i64 %storemerge439491, %285
  br i1 %.not441.not480, label %.lr.ph484.preheader, label %._crit_edge.thread

.lr.ph484.preheader:                              ; preds = %.lr.ph493
  %286 = sub i64 %285, %storemerge439491
  %.neg = add i64 %storemerge439491, 1
  %xtraiter = and i64 %286, 1
  %287 = icmp eq i64 %285, %.neg
  br i1 %287, label %._crit_edge.unr-lcssa, label %.lr.ph484.preheader.new

.lr.ph484.preheader.new:                          ; preds = %.lr.ph484.preheader
  %unroll_iter = and i64 %286, -2
  br label %.lr.ph484

.lr.ph484:                                        ; preds = %.lr.ph484, %.lr.ph484.preheader.new
  %.0399483 = phi i64 [ 0, %.lr.ph484.preheader.new ], [ %.1.1, %.lr.ph484 ]
  %.0400.in482 = phi i64 [ %storemerge439491, %.lr.ph484.preheader.new ], [ %.0400.1, %.lr.ph484 ]
  %.0401481 = phi double [ %284, %.lr.ph484.preheader.new ], [ %.1402.1, %.lr.ph484 ]
  %niter = phi i64 [ 0, %.lr.ph484.preheader.new ], [ %niter.next.1, %.lr.ph484 ]
  %.0400 = add nsw i64 %.0400.in482, 1
  %288 = getelementptr double, ptr %12, i64 %.0400.in482
  %289 = load double, ptr %288, align 8, !tbaa !9
  %290 = fcmp olt double %289, %.0401481
  %.1402 = select i1 %290, double %289, double %.0401481
  %.1 = select i1 %290, i64 %.0400, i64 %.0399483
  %.0400.1 = add nsw i64 %.0400.in482, 2
  %291 = getelementptr double, ptr %12, i64 %.0400
  %292 = load double, ptr %291, align 8, !tbaa !9
  %293 = fcmp olt double %292, %.1402
  %.1402.1 = select i1 %293, double %292, double %.1402
  %.1.1 = select i1 %293, i64 %.0400.1, i64 %.1
  %niter.next.1 = add i64 %niter, 2
  %niter.ncmp.1 = icmp eq i64 %niter.next.1, %unroll_iter
  br i1 %niter.ncmp.1, label %._crit_edge.unr-lcssa, label %.lr.ph484, !llvm.loop !18

._crit_edge.unr-lcssa:                            ; preds = %.lr.ph484, %.lr.ph484.preheader
  %.1402.lcssa.ph = phi double [ poison, %.lr.ph484.preheader ], [ %.1402.1, %.lr.ph484 ]
  %.1.lcssa.ph = phi i64 [ poison, %.lr.ph484.preheader ], [ %.1.1, %.lr.ph484 ]
  %.0399483.unr = phi i64 [ 0, %.lr.ph484.preheader ], [ %.1.1, %.lr.ph484 ]
  %.0400.in482.unr = phi i64 [ %storemerge439491, %.lr.ph484.preheader ], [ %.0400.1, %.lr.ph484 ]
  %.0401481.unr = phi double [ %284, %.lr.ph484.preheader ], [ %.1402.1, %.lr.ph484 ]
  %lcmp.mod.not = icmp eq i64 %xtraiter, 0
  br i1 %lcmp.mod.not, label %._crit_edge, label %.lr.ph484.epil

.lr.ph484.epil:                                   ; preds = %._crit_edge.unr-lcssa
  %.0400.epil = add nsw i64 %.0400.in482.unr, 1
  %294 = getelementptr double, ptr %12, i64 %.0400.in482.unr
  %295 = load double, ptr %294, align 8, !tbaa !9
  %296 = fcmp olt double %295, %.0401481.unr
  %.1402.epil = select i1 %296, double %295, double %.0401481.unr
  %.1.epil = select i1 %296, i64 %.0400.epil, i64 %.0399483.unr
  br label %._crit_edge

._crit_edge:                                      ; preds = %._crit_edge.unr-lcssa, %.lr.ph484.epil
  %.1402.lcssa = phi double [ %.1402.lcssa.ph, %._crit_edge.unr-lcssa ], [ %.1402.epil, %.lr.ph484.epil ]
  %.1.lcssa = phi i64 [ %.1.lcssa.ph, %._crit_edge.unr-lcssa ], [ %.1.epil, %.lr.ph484.epil ]
  %.not442 = icmp eq i64 %.1.lcssa, 0
  br i1 %.not442, label %._crit_edge.thread, label %297

297:                                              ; preds = %._crit_edge
  %298 = getelementptr inbounds i64, ptr %49, i64 %.1.lcssa
  %299 = load i64, ptr %298, align 8, !tbaa !5
  %300 = getelementptr inbounds double, ptr %44, i64 %.1.lcssa
  store double %284, ptr %300, align 8, !tbaa !9
  %301 = getelementptr inbounds i64, ptr %49, i64 %storemerge439491
  %302 = load i64, ptr %301, align 8, !tbaa !5
  store i64 %302, ptr %298, align 8, !tbaa !5
  store double %.1402.lcssa, ptr %283, align 8, !tbaa !9
  store i64 %299, ptr %301, align 8, !tbaa !5
  %303 = mul nsw i64 %.1.lcssa, %45
  %gep487 = getelementptr %struct.doublecomplex, ptr %invariant.gep486, i64 %303
  %304 = mul nsw i64 %storemerge439491, %45
  %gep489 = getelementptr %struct.doublecomplex, ptr %invariant.gep486, i64 %304
  %305 = call i32 @f2c_zswap(ptr noundef nonnull %3, ptr noundef %gep487, ptr noundef nonnull @c__1, ptr noundef %gep489, ptr noundef nonnull @c__1) #5
  %.pre = load i64, ptr %27, align 8, !tbaa !5
  %.pre495 = load i64, ptr %24, align 8, !tbaa !5
  br label %._crit_edge.thread

._crit_edge.thread:                               ; preds = %.lr.ph493, %._crit_edge, %297
  %306 = phi i64 [ %282, %._crit_edge ], [ %.pre495, %297 ], [ %282, %.lr.ph493 ]
  %307 = phi i64 [ %storemerge439491, %._crit_edge ], [ %.pre, %297 ], [ %storemerge439491, %.lr.ph493 ]
  %308 = add nsw i64 %307, 1
  store i64 %308, ptr %27, align 8, !tbaa !5
  %.not440.not = icmp slt i64 %307, %306
  br i1 %.not440.not, label %.lr.ph493, label %.loopexit, !llvm.loop !19

.loopexit:                                        ; preds = %._crit_edge.thread, %279, %278
  store double %117, ptr %16, align 8, !tbaa !11
  store double 0.000000e+00, ptr %118, align 8, !tbaa !13
  store double %119, ptr %18, align 8, !tbaa !9
  store i64 %71, ptr %20, align 8, !tbaa !5
  br label %309

309:                                              ; preds = %146, %147, %131, %.loopexit, %134, %.thread456
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %39) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %38) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %37) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %36) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %35) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %34) #5
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %33) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %32) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %31) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %30) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %29) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %28) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %27) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %26) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %25) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %24) #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 @ilaenv_(ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef) local_unnamed_addr #2

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

; Function Attrs: mustprogress nofree nounwind willreturn memory(write)
declare double @sqrt(double noundef) local_unnamed_addr #3

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

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

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

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

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

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

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

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

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

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

; 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.smax.i64(i64, i64) #4

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

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

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

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

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


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